From e3e88d37fdbec8cecb3cbb197fd71bc2671aa92d Mon Sep 17 00:00:00 2001 From: RISCi_ATOM Date: Sat, 9 Jun 2018 09:19:04 -0400 Subject: [PATCH] v1.5 branch refresh based upon upstream master @ c8677ca89e53e3be7988d54280fce166cc894a7e --- Makefile | 15 +- config/Config-build.in | 41 +- config/Config-devel.in | 19 +- config/Config-images.in | 15 +- config/Config-kernel.in | 46 +- include/autotools.mk | 6 +- include/cmake.mk | 2 +- include/depends.mk | 8 +- include/download.mk | 10 +- include/feeds.mk | 14 +- include/hardened-ld-pie.specs | 2 + include/hardening.mk | 7 + include/host-build.mk | 54 +- include/host.mk | 51 - include/image-commands.mk | 125 +- include/image.mk | 58 +- include/kernel-build.mk | 17 +- include/kernel-defaults.mk | 42 +- include/kernel-version.mk | 21 +- include/kernel.mk | 152 +- include/netfilter.mk | 47 +- include/nls.mk | 2 +- include/package-bin.mk | 18 +- include/package-defaults.mk | 8 +- include/package-dumpinfo.mk | 57 +- include/package-ipkg.mk | 48 +- include/package.mk | 88 +- include/prereq-build.mk | 55 +- include/prereq.mk | 3 +- include/quilt.mk | 63 +- include/rootfs.mk | 21 +- include/scan.awk | 2 +- include/scan.mk | 6 +- include/site/powerpc64 | 26 + include/subdir.mk | 31 +- include/target.mk | 32 +- include/toolchain-build.mk | 4 +- include/toplevel.mk | 32 +- include/u-boot.mk | 104 + include/version.mk | 78 +- package/Makefile | 16 +- package/base-files/Makefile | 55 +- package/base-files/files/bin/config_generate | 13 +- package/base-files/files/etc/group | 1 + .../files/etc/hotplug.d/net/00-sysctl | 2 +- .../base-files/files/etc/init.d/gpio_switch | 14 +- package/base-files/files/etc/init.d/led | 1 + package/base-files/files/etc/init.d/sysctl | 39 +- package/base-files/files/etc/init.d/system | 2 +- package/base-files/files/etc/openwrt_release | 3 +- package/base-files/files/etc/profile | 5 +- package/base-files/files/etc/rc.button/reset | 2 +- package/base-files/files/etc/rc.common | 26 +- package/base-files/files/etc/services | 2 + package/base-files/files/etc/sysctl.conf | 31 +- .../files/etc/sysctl.d/10-default.conf | 25 + .../files/etc/uci-defaults/11_migrate-sysctl | 16 - package/base-files/files/lib/functions.sh | 52 +- .../base-files/files/lib/functions/leds.sh | 14 + .../base-files/files/lib/functions/system.sh | 19 +- .../files/lib/functions/uci-defaults.sh | 322 +- .../lib/preinit/{10_sysinfo => 02_sysinfo} | 0 .../files/lib/preinit/10_indicate_preinit | 12 +- .../files/lib/preinit/40_run_failsafe_hook | 6 +- .../files/lib/preinit/99_10_failsafe_login | 11 +- .../base-files/files/lib/upgrade/common.sh | 225 +- package/base-files/files/lib/upgrade/nand.sh | 329 + package/base-files/files/lib/upgrade/stage2 | 150 + package/base-files/files/sbin/sysupgrade | 122 +- package/base-files/files/usr/lib/os-release | 8 +- package/base-files/files/usr/libexec/login.sh | 2 +- package/base-files/image-config.in | 21 +- .../boot/arm-trusted-firmware-sunxi/Makefile | 51 + package/boot/fconfig/Makefile | 46 + package/boot/grub2/Makefile | 13 +- package/boot/kexec-tools/Config.in | 9 +- package/boot/kexec-tools/Makefile | 80 +- package/boot/kexec-tools/files/kdump.config | 7 + package/boot/kexec-tools/files/kdump.defaults | 11 + package/boot/kexec-tools/files/kdump.init | 184 + .../patches/100-format_string_fix.patch | 20 - ...10-fix-vmcore-dmsg-compilation-error.patch | 11 - package/boot/kobs-ng/Makefile | 46 + .../boot/kobs-ng/patches/001-compile.patch | 24 + .../patches/002-add-init-size-param.patch | 45 + .../boot/kobs-ng/patches/003-raw-mode.patch | 45 + .../patches/004-fix-cal_nfc_geometry.patch | 27 + package/boot/uboot-ar71xx/Makefile | 96 - .../files/board/zyxel/nbg460n/Makefile | 46 - .../files/board/zyxel/nbg460n/config.mk | 1 - .../files/board/zyxel/nbg460n/lowlevel_init.S | 39 - .../files/board/zyxel/nbg460n/nbg460n.c | 96 - .../files/board/zyxel/nbg460n/u-boot.lds | 42 - .../files/cpu/mips/ar71xx_serial.c | 177 - .../uboot-ar71xx/files/drivers/net/ag71xx.c | 809 - .../uboot-ar71xx/files/drivers/net/ag71xx.h | 374 - .../files/drivers/net/phy/rtl8366.h | 188 - .../files/drivers/net/phy/rtl8366_mii.c | 786 - .../files/drivers/spi/ar71xx_spi.c | 191 - .../files/include/asm-mips/ar71xx.h | 515 - .../files/include/asm-mips/ar71xx_gpio.h | 65 - .../files/include/configs/nbg460n.h | 136 - ...oot-build-support-using-SOURCE_DATE_.patch | 82 - ...le-Reproducible-U-Boot-build-support.patch | 31 - .../uboot-ar71xx/patches/001-ar71xx.patch | 26 - .../uboot-ar71xx/patches/002-ar71xx-spi.patch | 11 - .../patches/010-enet-ag71xx.patch | 22 - .../patches/011-switch-rtl8366sr.patch | 28 - .../patches/020-freebsd-compat.patch | 11 - .../patches/021-darwin_compat.patch | 23 - .../patches/022-getline_backport.patch | 21 - .../patches/030-no_examples.patch | 13 - .../patches/040-no_extern_inline.patch | 112 - .../patches/041-no_weak_alias.patch | 12 - package/boot/uboot-envtools/Config.in | 9 - package/boot/uboot-envtools/Makefile | 72 +- package/boot/uboot-envtools/files/ar71xx | 24 +- package/boot/uboot-envtools/files/cns3xxx | 3 +- package/boot/uboot-envtools/files/imx6 | 3 +- package/boot/uboot-envtools/files/ipq | 28 - package/boot/uboot-envtools/files/ipq40xx | 43 + package/boot/uboot-envtools/files/ipq806x | 49 + package/boot/uboot-envtools/files/kirkwood | 19 +- package/boot/uboot-envtools/files/lantiq | 13 +- package/boot/uboot-envtools/files/mvebu | 13 +- package/boot/uboot-envtools/files/mxs | 3 +- package/boot/uboot-envtools/files/oxnas | 3 +- package/boot/uboot-envtools/files/pistachio | 27 + package/boot/uboot-envtools/files/ramips | 15 +- .../uboot-envtools/patches/001-compile.patch | 2 +- .../patches/200-fw_env_no_aes.patch | 38 - .../300-support-env-in-ubivol-chardev.patch | 163 - .../patches/400-u-boot-2015.10-stdint.patch | 13 - package/boot/uboot-sunxi/Makefile | 292 +- .../patches/001-use-dtc-in-kernel.patch | 11 - .../patches/002-add-olimex-a13-som.patch | 3 +- .../003-add-theobroma-a31-pangolin.patch | 22 +- .../010-dt-sync-files-with-kernel.patch | 1403 -- .../011-dt-sync-dts-files-with-kernel.patch | 7211 ------ .../012-sun6i-fix-clock_twi_onoff.patch | 38 - .../patches/013-enable-realtek-phy.patch | 24 - .../patches/014-fix-gmac-init.patch | 127 - .../015-fix-2nd-usb-ctrler-on-sun47i.patch | 78 - .../patches/016-spl-print-mmc-slot.patch | 31 - ...17-usb-add-support-for-usb3-vbus-pin.patch | 39 - ...8-usb-specify-vbus-pins-on-orangepis.patch | 31 - ...19-sid-add-efuse-support-for-h3-a83t.patch | 33 - ...-boot-display-board-model-on-startup.patch | 23 - .../patches/062-A20-improve-gmac-upload.patch | 12 + ...1-sun6i-sync-PLL1-multdiv-with-Boot1.patch | 6 +- .../093-sun6i-fix-PLL-LDO-voltselect.patch | 15 +- .../100-sun6i-alternate-on-UART2.patch | 4 +- .../101-sun6i-support-console-on-UART2.patch | 8 +- ...2-sunxi-make_CONS_INDEX-configurable.patch | 6 +- ...-environment-for-dtc-binary-location.patch | 35 + .../patches/210-sunxi-deactivate-binman.patch | 28 + .../220-add-sunxi50i-nanopi-neo-plus2.patch | 165 + .../patches/221-compatible-old-dtc.patch | 52 + ...0-sunxi-Add-support-for-Orange-Pi-R1.patch | 157 + .../400-ARM-dts-orange-pi-zero-plus.patch | 148 + package/boot/uboot-sunxi/uEnv-a64.txt | 5 + package/devel/binutils/Makefile | 126 + ...-compiler-sanitization-flags-on-to-l.patch | 65 + ...rget-binaries-ensure-that-the-warnin.patch | 1258 ++ package/devel/gdb-arc/Makefile | 94 + .../patches/100-no_extern_inline.patch | 32 + .../gdb-arc/patches/110-no_testsuite.patch | 21 + .../120-fix-compile-flag-mismatch.patch | 11 + package/devel/gdb/Makefile | 87 + .../001-gdb-pr14523-mips-signal-number.patch | 16 + package/devel/gdb/patches/100-musl_fix.patch | 53 + .../devel/gdb/patches/110-shared_libgcc.patch | 76 + .../120-sigprocmask-invalid-call.patch | 38 + package/devel/perf/Makefile | 82 + package/devel/perf/musl-compat.h | 43 + package/devel/perf/musl-include/asm/errno.h | 8 + package/devel/perf/musl-include/string.h | 18 + package/devel/strace/Makefile | 67 + ...00-workaround--pt-reg-collisions-ppc.patch | 17 + package/devel/trace-cmd/Makefile | 60 + .../patches/110-mac80211_tracepoint.patch | 24 + package/devel/valgrind/Makefile | 185 + package/devel/valgrind/files/default.supp | 42 + .../patches/100-fix_configure_check.patch | 11 + .../patches/130-fix_arm_arch_detection.patch | 17 + package/firmware/wireless-regdb/Makefile | 31 + ...firmware-file-format-version-code-20.patch | 251 + .../patches/500-world-regd-5GHz.patch | 16 + package/kernel/avila-wdt/Makefile | 34 + package/kernel/avila-wdt/src/Makefile | 1 + package/kernel/avila-wdt/src/avila-wdt.c | 231 + package/kernel/button-hotplug/Makefile | 4 +- ...-dtc-Update-to-version-with-overlays.patch | 642 + package/kernel/gpio-button-hotplug/Makefile | 4 +- .../src/gpio-button-hotplug.c | 3 +- package/kernel/gpio-nct5104d/Makefile | 51 + package/kernel/gpio-nct5104d/src/Kconfig | 5 + package/kernel/gpio-nct5104d/src/Makefile | 1 + .../kernel/gpio-nct5104d/src/gpio-nct5104d.c | 467 + package/kernel/hwmon-gsc/Makefile | 29 + package/kernel/hwmon-gsc/src/Makefile | 1 + package/kernel/hwmon-gsc/src/gsc.c | 308 + package/kernel/i2c-gpio-custom/Makefile | 3 +- package/kernel/kmod-sched-cake/Makefile | 9 +- package/kernel/leds-apu2/Makefile | 51 + package/kernel/leds-apu2/src/Kconfig | 8 + package/kernel/leds-apu2/src/Makefile | 1 + package/kernel/leds-apu2/src/leds-apu2.c | 384 + .../linux/files/sysctl-br-netfilter.conf | 7 + .../linux/files/sysctl-nf-conntrack.conf | 9 + package/kernel/linux/modules/block.mk | 15 +- package/kernel/linux/modules/can.mk | 191 +- package/kernel/linux/modules/crypto.mk | 700 +- package/kernel/linux/modules/firewire.mk | 30 +- package/kernel/linux/modules/fs.mk | 178 +- package/kernel/linux/modules/hwmon.mk | 201 +- package/kernel/linux/modules/i2c.mk | 127 +- package/kernel/linux/modules/iio.mk | 135 + package/kernel/linux/modules/leds.mk | 2 +- package/kernel/linux/modules/lib.mk | 32 +- package/kernel/linux/modules/netdevices.mk | 111 +- package/kernel/linux/modules/netfilter.mk | 220 +- package/kernel/linux/modules/netsupport.mk | 182 +- package/kernel/linux/modules/other.mk | 349 +- package/kernel/linux/modules/sound.mk | 19 +- package/kernel/linux/modules/spi.mk | 16 - package/kernel/linux/modules/usb.mk | 231 +- package/kernel/linux/modules/video.mk | 101 +- package/kernel/linux/modules/w1.mk | 1 + package/kernel/mac80211/Makefile | 1388 +- .../files/lib/netifd/wireless/mac80211.sh | 164 +- .../mac80211/files/lib/wifi/mac80211.sh | 16 +- package/kernel/mac80211/files/regdb.txt | 1314 -- .../mac80211/patches/001-fix_build.patch | 10 +- .../patches/004-kconfig_backport_fix.patch | 2 +- .../patches/005-revert-devcoredump.patch | 151 +- .../patches/006-fix-genl-multicast.patch | 10 + .../patches/006-revert-ktime-changes.patch | 20 - .../007-fix-linux-verification-h.patch | 11 + .../007-revert-genetlink-changes.patch | 266 - .../patches/008-fix-genl-family-id.patch | 10 + .../008-revert-ndo_stats64-cleanup.patch | 20 - .../patches/009-revert-mtu-changes.patch | 338 - .../mac80211/patches/010-disable_rfkill.patch | 2 +- .../patches/011-backport_strscpy.patch | 43 - .../patches/012-kernel_build_check.patch | 11 + .../mac80211/patches/015-ipw200-mtu.patch | 34 + ...roducing-a-USB-dependency-in-the-rt2.patch | 85 - ...x00usb-do-not-anchor-rx-and-tx-urb-s.patch | 61 - ...-rt2x00usb-fix-anchor-initialization.patch | 75 - .../020-04-rt61pci-use-entry-directly.patch | 28 - ...-entry-directly-in-rt2x00_dump_frame.patch | 181 - ...2x00-remove-queue_entry-from-skbdesc.patch | 59 - ...n-t-mark-register-accesses-as-inline.patch | 84 - ...-move-rt2800_drv_data-declaration-in.patch | 94 - ...dentify-station-based-on-status-WCID.patch | 94 - ...illing-tx-status-from-rt2x00lib_txdo.patch | 178 - ...clearing-entry-from-rt2x00lib_txdone.patch | 88 - ...2-rt2x00-add-txdone-nomatch-function.patch | 92 - ...ixup-fill_tx_status-for-nomatch-case.patch | 54 - ...2x00-use-txdone_nomatch-on-rt2800usb.patch | 191 - ...us-based-rate-flags-for-nomatch-case.patch | 88 - ...00-use-TXOP_BACKOFF-for-probe-frames.patch | 43 - ...0-fix-rt2x00debug_dump_frame-comment.patch | 28 - ...fix-TX_PWR_CFG_4-register-definition.patch | 37 - ...020-19-rt2x00-add-support-for-MT7620.patch | 2077 -- ...0-fix-LNA-gain-assignment-for-MT7620.patch | 54 - ...CO-calibration-after-programming-ALC.patch | 34 - ...fix-mt7620-vco-calibration-registers.patch | 50 - ...2800-fix-mt7620-E2-channel-registers.patch | 41 - .../patches/040-brcmutil_option.patch | 9 + .../patches/050-lib80211_option.patch | 4 +- .../patches/060-no_local_ssb_bcma.patch | 22 +- ...00-use-TXOP_BACKOFF-for-probe-frames.patch | 47 + .../mac80211/patches/090-remove-cred.patch | 15 - .../100-remove-cryptoapi-dependencies.patch | 763 +- .../110-mac80211_keep_keys_on_stop_ap.patch | 2 +- .../mac80211/patches/130-disable-fils.patch | 32 + .../130-mac80211-hwsim-hrtimer-clock.patch | 11 - ...aes-cmac-switch-to-shash-CMAC-driver.patch | 198 + .../132-mac80211-remove-cmac-dependency.patch | 10 + .../patches/140-tweak-TSQ-setting.patch | 15 + .../patches/150-disable_addr_notifier.patch | 10 +- .../kernel/mac80211/patches/210-ap_scan.patch | 2 +- ..._hw-issue-external-reset-for-QCA955x.patch | 129 - ...y-free-requested-but-not-started-TX-.patch | 37 + ...-drop-frames-appearing-to-be-from-us.patch | 25 + ...h9k-force-rx_clear-when-disabling-rx.patch | 35 - ...etries-for-powersave-response-frames.patch | 96 - ...erpret-requested-txpower-in-EIRP-dom.patch | 37 - ...0211-add-hdrlen-to-ieee80211_tx_data.patch | 219 - ...80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch | 233 - ...ral-scan-support-under-a-separate-co.patch | 103 + ...l-Enable-STBC-and-LDPC-for-VHT-Rates.patch | 82 - ...ata-bit-in-PS-buffered-frame-release.patch | 50 - ....16-ath9k-discard-undersized-packets.patch | 25 + ...ntially-stale-EOSP-status-bit-in-int.patch | 22 - ...fix-block-ack-window-tracking-issues.patch | 114 - ...me-tx_complete_work-to-hw_check_work.patch | 175 - ...-check-if-the-chip-failed-to-wake-up.patch | 30 - ...condition-in-enabling-disabling-IRQs.patch | 197 - ...EEE80211_TX_STATUS_HEADROOM-up-to-mu.patch | 26 + ...ames-with-unexpected-DS-bits-from-fa.patch | 21 + ...80211-support-AP-4-addr-mode-fast-rx.patch | 25 + ...-fast-rx-with-incompatible-PS-capabi.patch | 53 + ...-support-station-4-addr-mode-fast-rx.patch | 34 + ...lean-up-and-fix-ath_tx_count_airtime.patch | 107 - ...7-mac80211-support-A-MSDU-in-fast-rx.patch | 256 + .../321-mac80211-fix-CSA-in-IBSS-mode.patch | 34 - ...andle-filtered-frames-within-a-BA-se.patch | 28 - ...tionally-start-new-netdev-queues-wit.patch | 29 - ...key-reinstall-without-changing-anyth.patch | 81 - ...-reset-AHB-WMAC-interface-on-AR91xx.patch} | 0 ..._hw-issue-external-reset-for-QCA955x.patch | 126 + ...tral-scan-enable-bit-on-trigger-for.patch} | 0 ...eriodic-and-nf-calibation-at-the-sa.patch} | 0 ...h9k-force-rx_clear-when-disabling-rx.patch | 35 + ...etries-for-powersave-response-frames.patch | 96 + ...erpret-requested-txpower-in-EIRP-dom.patch | 37 + ...0211-add-hdrlen-to-ieee80211_tx_data.patch | 219 + ...80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch | 233 + ...l-Enable-STBC-and-LDPC-for-VHT-Rates.patch | 82 + ...ata-bit-in-PS-buffered-frame-release.patch | 50 + ...ntially-stale-EOSP-status-bit-in-int.patch | 22 + ... 362-ath9k-report-tx-status-on-EOSP.patch} | 0 ...fix-block-ack-window-tracking-issues.patch | 114 + ...ix-channel-maximum-power-level-test.patch} | 0 ...power-reduction-for-US-regulatory-do.patch | 24 + ...ata-flag-for-buffered-multicast-pack.patch | 41 + ...e-only-1Mbps-for-basic-rates-in-mesh.patch | 55 + ...l-remove-unnecessary-debugfs-cleanup.patch | 150 + ...l-merge-with-minstrel_ht-always-enab.patch | 576 + ...trel-reduce-minstrel_mcs_groups-size.patch | 358 + ...l-fix-using-short-preamble-CCK-rates.patch | 31 + ...tect-queue-draining-by-rcu_read_lock.patch | 43 + ...rel-fix-CCK-rate-group-streams-value.patch | 20 + ...l-fix-sampling-reporting-of-CCK-rate.patch | 58 + ...l-do-not-sample-rates-3-times-slower.patch | 40 + ...ory-accounting-with-A-MSDU-aggregati.patch | 58 + .../patches/402-ath_regd_optional.patch | 38 +- .../patches/404-regd_no_assoc_hints.patch | 4 +- .../440-ath5k_channel_bw_debugfs.patch | 2 +- .../patches/500-ath9k_eeprom_debugfs.patch | 4 +- .../mac80211/patches/501-ath9k_ahb_init.patch | 2 +- .../patches/512-ath9k_channelbw_debugfs.patch | 10 +- .../patches/513-ath9k_add_pci_ids.patch | 2 +- .../522-mac80211_configure_antenna_gain.patch | 38 +- .../patches/530-ath9k_extra_leds.patch | 18 +- .../531-ath9k_extra_platform_leds.patch | 21 +- .../patches/542-ath9k_debugfs_diag.patch | 12 +- .../patches/543-ath9k_entropy_from_adc.patch | 10 +- .../patches/546-ath9k_platform_led_name.patch | 39 - .../patches/548-ath9k_enable_gpio_chip.patch | 33 +- .../549-ath9k_enable_gpio_buttons.patch | 32 +- .../patches/551-ath9k_ubnt_uap_plus_hsr.patch | 16 +- .../kernel/mac80211/patches/552-ahb_of.patch | 334 + ...-rt2800lib-enable-support-for-RT3883.patch | 2 +- ...x00-rt2800lib-add-rf_vals-for-RF3853.patch | 6 +- ...ib-enable-VCO-calibration-for-RF3853.patch | 4 +- ...-add-channel-configuration-function-.patch | 22 +- ...2x00-rt2800lib-enable-RF3853-support.patch | 2 +- ...-add-MAC-register-initialization-for.patch | 6 +- ...-add-BBP-register-initialization-for.patch | 4 +- ...-add-RFCSR-initialization-for-RT3883.patch | 16 +- ...-use-the-extended-EEPROM-map-for-RT3.patch | 2 +- ...ib-force-rf-type-to-RF3853-on-RT3883.patch | 4 +- ...-add-channel-configuration-code-for-.patch | 12 +- ...-fix-txpower_to_dev-function-for-RT3.patch | 2 +- ...-use-correct-txpower-calculation-fun.patch | 2 +- ...-hardcode-txmixer-gain-values-to-zer.patch | 8 +- ...b-use-correct-RT-XWI-size-for-RT3883.patch | 2 +- ...-fix-antenna-configuration-for-RT388.patch | 2 +- ...-fix-LNA-gain-configuration-for-RT38.patch | 10 +- ...0-rt2800lib-fix-VGC-setup-for-RT3883.patch | 6 +- ...-fix-EEPROM-LNA-validation-for-RT388.patch | 12 +- ...-fix-txpower-compensation-for-RT3883.patch | 2 +- ...o-add-a-workaround-for-spurious-TX_F.patch | 14 +- .../602-rt2x00-introduce-rt2x00eeprom.patch | 16 +- ...isabling_bands_through_platform_data.patch | 2 +- ...07-rt2x00-add_platform_data_mac_addr.patch | 2 +- ...00-allow_disabling_bands_through_dts.patch | 2 +- ...0-rt2x00-change-led-polarity-from-OF.patch | 2 +- .../611-rt2x00-add-AP+STA-support.patch | 2 +- ...dd-support-for-external-PA-on-MT7620.patch | 118 + .../651-rt2x00-remove-unneccesary-code.patch | 132 + ...700-mwl8k-missing-pci-id-for-WNR854T.patch | 10 + ...940-mwl8k_init_devices_synchronously.patch | 20 + ...d-reported-build-errors-with-CONFIG_PM-off | 93 + ..._sdio_reinit_device-out-of-CONFIG_PM.patch | 96 + .../kernel/om-watchdog/files/om-watchdog.init | 8 +- package/kernel/rotary-gpio-custom/Makefile | 5 +- package/kernel/rtc-rv5c386a/Makefile | 32 + package/kernel/rtc-rv5c386a/src/Makefile | 18 + package/kernel/rtc-rv5c386a/src/rtc.c | 613 + package/kernel/spi-gpio-custom/Makefile | 3 +- package/kernel/trelay/Makefile | 2 +- package/kernel/w1-gpio-custom/Makefile | 3 +- .../patches/001-throw-in-funcdef.patch | 16 +- package/libs/cyassl/Config.in | 48 - package/libs/cyassl/Makefile | 139 - package/libs/elfutils/Makefile | 9 +- .../elfutils/patches/003-libint-stub.patch | 28 +- .../patches/004-maybe-uninitialized.patch | 11 - .../patches/007-fix_TEMP_FAILURE_RETRY.patch | 92 - .../elfutils/patches/100-musl-compat.patch | 357 +- .../libs/elfutils/patches/101-no-fts.patch | 18 +- package/libs/gettext-full/Makefile | 1 + .../patches/000-relocatable.patch | 8 +- package/libs/libcap/Makefile | 58 - .../libs/libcap/patches/100-portability.patch | 19 - package/libs/libevent2/Makefile | 1 + package/libs/libiconv-full/Makefile | 2 +- package/libs/libjson-c/Makefile | 3 +- package/libs/libnetfilter-conntrack/Makefile | 12 +- package/libs/libnetfilter-queue/Makefile | 8 +- .../patches/100-checksum_computation.patch | 18 +- package/libs/libnftnl/Makefile | 14 +- package/libs/libnl-tiny/src/msg.c | 7 +- package/libs/libnl/Makefile | 17 +- ...ivate-field-in-libnl-pkg-config-file.patch | 30 + ...workaround-to-the-libc-compat.h-copy.patch | 103 + ...ild-enable-building-cli-during-tests.patch | 115 + package/libs/libpcap/Makefile | 3 +- package/libs/libreadline/Makefile | 72 - package/libs/librpc/Makefile | 2 +- package/libs/libtool/Makefile | 7 +- .../libtool/patches/160-passthrough-ssp.patch | 11 - package/libs/libubox/Makefile | 8 +- package/libs/libunwind/Makefile | 16 +- .../libunwind/patches/001-disable-tests.patch | 21 +- .../libs/libunwind/patches/004-ppc-musl.patch | 383 + package/libs/libusb-compat/Makefile | 6 +- package/libs/libusb/Makefile | 10 +- package/libs/lzo/Makefile | 17 +- package/libs/mbedtls/Makefile | 30 +- package/libs/mbedtls/patches/200-config.patch | 79 +- package/libs/ncurses/Makefile | 26 +- .../100-ncurses-5.6-20080112-urxvt.patch | 2 +- .../101-ncurses-5.6-20080628-kbs.patch | 46 +- .../patches/102-ncurses-5.9-gcc-5.patch | 2 +- package/libs/ncurses/patches/500-cross.patch | 11 - .../libs/ncurses/patches/900-terminfo.patch | 16 +- package/libs/nettle/Makefile | 4 +- package/libs/nghttp2/Makefile | 45 + package/libs/openssl/Config.in | 6 + package/libs/openssl/Makefile | 32 +- .../patches/110-optimize-for-size.patch | 3 +- .../libs/openssl/patches/150-no_engines.patch | 2 +- .../patches/160-disable_doc_tests.patch | 4 +- .../openssl/patches/200-parallel_build.patch | 12 +- package/libs/readline/Makefile | 75 + .../patches/001-install_perm.patch | 0 package/libs/sysfsutils/Makefile | 12 + .../sysfsutils/files}/local.conf | 0 package/libs/sysfsutils/files/sysfs.conf | 22 + package/libs/sysfsutils/files/sysfsutils | 48 + package/libs/tcp_wrappers/Makefile | 69 - .../patches/001-debian_subset.patch | 936 - .../tcp_wrappers/patches/002-opt_cflags.patch | 12 - .../patches/003-scaffold_malloc.patch | 17 - .../patches/004-ipv4_prefix.patch | 72 - .../patches/005-no--lnsl-on-musl.patch | 22 - package/libs/toolchain/Makefile | 83 +- package/libs/uclient/Makefile | 2 +- package/libs/ustream-ssl/Makefile | 24 +- package/libs/wolfssl/Config.in | 60 + package/libs/wolfssl/Makefile | 175 + .../patches/100-disable-hardening-check.patch | 11 + .../400-additional_compatibility.patch | 0 package/libs/zlib/Config.in | 11 + package/libs/zlib/Makefile | 40 +- .../001-neon-implementation-of-adler32.patch | 253 + ...m-specific-optimisations-for-inflate.patch | 2411 ++ ...rcefiles-in-patch-002-to-buildsystem.patch | 100 + package/luci/LICENSE | 201 - package/luci/NOTICE | 9 - .../applications/luci-app-adblock/Makefile | 12 - .../luasrc/controller/adblock.lua | 54 - .../model/cbi/adblock/blacklist_tab.lua | 52 - .../model/cbi/adblock/configuration_tab.lua | 39 - .../luasrc/model/cbi/adblock/overview_tab.lua | 242 - .../model/cbi/adblock/whitelist_tab.lua | 51 - .../luasrc/view/adblock/config_css.htm | 13 - .../luasrc/view/adblock/logread.htm | 14 - .../luasrc/view/adblock/query.htm | 65 - .../luasrc/view/adblock/runtime.htm | 10 - .../luci-app-adblock/po/it/adblock.po | 396 - .../luci-app-adblock/po/ja/adblock.po | 353 - .../luci-app-adblock/po/pt-br/adblock.po | 427 - .../luci-app-adblock/po/sv/adblock.po | 390 - .../luci-app-adblock/po/templates/adblock.pot | 291 - .../luci-app-adblock/po/zh-cn/adblock.po | 454 - .../luci-app-adblock/po/zh-tw/adblock.po | 455 - .../root/etc/uci-defaults/40_luci-adblock | 11 - .../luci-app-advanced-reboot/Makefile | 20 - .../luci-app-advanced-reboot/README.md | 35 - .../luasrc/controller/advanced_reboot.lua | 120 - .../view/advanced_reboot/advanced_reboot.htm | 92 - .../advanced_reboot/alternative_reboot.htm | 29 - .../luasrc/view/advanced_reboot/power_off.htm | 25 - .../po/sv/luci-app-advanced-reboot.po | 109 - .../po/templates/luci-app-advanced-reboot.pot | 102 - .../luci/applications/luci-app-ahcp/Makefile | 14 - .../luci-app-ahcp/luasrc/controller/ahcp.lua | 49 - .../luci-app-ahcp/luasrc/model/cbi/ahcp.lua | 110 - .../luasrc/view/admin_status/index/ahcp.htm | 1 - .../luci-app-ahcp/luasrc/view/ahcp_status.htm | 53 - .../applications/luci-app-ahcp/po/ca/ahcp.po | 117 - .../applications/luci-app-ahcp/po/cs/ahcp.po | 114 - .../applications/luci-app-ahcp/po/de/ahcp.po | 115 - .../applications/luci-app-ahcp/po/el/ahcp.po | 114 - .../applications/luci-app-ahcp/po/en/ahcp.po | 115 - .../applications/luci-app-ahcp/po/es/ahcp.po | 115 - .../applications/luci-app-ahcp/po/fr/ahcp.po | 115 - .../applications/luci-app-ahcp/po/he/ahcp.po | 118 - .../applications/luci-app-ahcp/po/hu/ahcp.po | 116 - .../applications/luci-app-ahcp/po/it/ahcp.po | 114 - .../applications/luci-app-ahcp/po/ja/ahcp.po | 117 - .../applications/luci-app-ahcp/po/ms/ahcp.po | 105 - .../applications/luci-app-ahcp/po/no/ahcp.po | 117 - .../applications/luci-app-ahcp/po/pl/ahcp.po | 115 - .../luci-app-ahcp/po/pt-br/ahcp.po | 115 - .../applications/luci-app-ahcp/po/pt/ahcp.po | 116 - .../applications/luci-app-ahcp/po/ro/ahcp.po | 115 - .../applications/luci-app-ahcp/po/ru/ahcp.po | 120 - .../applications/luci-app-ahcp/po/sk/ahcp.po | 106 - .../applications/luci-app-ahcp/po/sv/ahcp.po | 113 - .../luci-app-ahcp/po/templates/ahcp.pot | 99 - .../applications/luci-app-ahcp/po/tr/ahcp.po | 113 - .../applications/luci-app-ahcp/po/uk/ahcp.po | 115 - .../applications/luci-app-ahcp/po/vi/ahcp.po | 114 - .../luci-app-ahcp/po/zh-cn/ahcp.po | 113 - .../luci-app-ahcp/po/zh-tw/ahcp.po | 109 - .../root/etc/uci-defaults/40_luci-ahcp | 11 - .../luci/applications/luci-app-aria2/Makefile | 39 - .../luasrc/controller/aria2.lua | 42 - .../luci-app-aria2/luasrc/model/cbi/aria2.lua | 211 - .../luasrc/view/aria2/overview_status.htm | 77 - .../luci-app-aria2/po/pt-br/aria2.po | 236 - .../luci-app-aria2/po/sv/aria2.po | 208 - .../luci-app-aria2/po/templates/aria2.pot | 208 - .../luci-app-aria2/po/zh-cn/aria2.po | 221 - .../luci-app-aria2/po/zh-tw/aria2.po | 221 - .../root/etc/uci-defaults/40_luci-aria2 | 11 - .../applications/luci-app-asterisk/Makefile | 13 - .../luci-app-asterisk/luasrc/asterisk.lua | 746 - .../luasrc/asterisk/cc_idd.lua | 245 - .../luasrc/controller/asterisk.lua | 194 - .../luasrc/model/cbi/asterisk-dialplans.lua | 91 - .../model/cbi/asterisk-iax-connections.lua | 49 - .../luasrc/model/cbi/asterisk-meetme.lua | 22 - .../luasrc/model/cbi/asterisk-mod-app.lua | 391 - .../luasrc/model/cbi/asterisk-mod-cdr.lua | 47 - .../luasrc/model/cbi/asterisk-mod-chan.lua | 45 - .../luasrc/model/cbi/asterisk-mod-codec.lua | 53 - .../luasrc/model/cbi/asterisk-mod-format.lua | 89 - .../luasrc/model/cbi/asterisk-mod-func.lua | 29 - .../luasrc/model/cbi/asterisk-mod-pbx.lua | 53 - .../model/cbi/asterisk-mod-res-feature.lua | 100 - .../luasrc/model/cbi/asterisk-mod-res.lua | 77 - .../model/cbi/asterisk-sip-connections.lua | 98 - .../luasrc/model/cbi/asterisk-voice.lua | 41 - .../luasrc/model/cbi/asterisk.lua | 151 - .../model/cbi/asterisk/dialplan_out.lua | 125 - .../luasrc/model/cbi/asterisk/dialplans.lua | 103 - .../luasrc/model/cbi/asterisk/dialzones.lua | 123 - .../luasrc/model/cbi/asterisk/meetme.lua | 38 - .../model/cbi/asterisk/meetme_settings.lua | 17 - .../luasrc/model/cbi/asterisk/phone_sip.lua | 145 - .../luasrc/model/cbi/asterisk/phones.lua | 104 - .../luasrc/model/cbi/asterisk/trunk_sip.lua | 86 - .../luasrc/model/cbi/asterisk/trunks.lua | 94 - .../luasrc/model/cbi/asterisk/voicemail.lua | 48 - .../model/cbi/asterisk/voicemail_settings.lua | 51 - .../luasrc/view/asterisk/cbi/cell.htm | 13 - .../luasrc/view/asterisk/dialplans.htm | 245 - .../luasrc/view/asterisk/dialzones.htm | 165 - .../luci-app-asterisk/po/ca/asterisk.po | 680 - .../luci-app-asterisk/po/cs/asterisk.po | 11 - .../luci-app-asterisk/po/de/asterisk.po | 131 - .../luci-app-asterisk/po/el/asterisk.po | 71 - .../luci-app-asterisk/po/en/asterisk.po | 680 - .../luci-app-asterisk/po/es/asterisk.po | 355 - .../luci-app-asterisk/po/fr/asterisk.po | 569 - .../luci-app-asterisk/po/he/asterisk.po | 194 - .../luci-app-asterisk/po/hu/asterisk.po | 134 - .../luci-app-asterisk/po/it/asterisk.po | 162 - .../luci-app-asterisk/po/ja/asterisk.po | 44 - .../luci-app-asterisk/po/ms/asterisk.po | 611 - .../luci-app-asterisk/po/no/asterisk.po | 12 - .../luci-app-asterisk/po/pl/asterisk.po | 75 - .../luci-app-asterisk/po/pt-br/asterisk.po | 691 - .../luci-app-asterisk/po/pt/asterisk.po | 150 - .../luci-app-asterisk/po/ro/asterisk.po | 54 - .../luci-app-asterisk/po/ru/asterisk.po | 515 - .../luci-app-asterisk/po/sk/asterisk.po | 0 .../luci-app-asterisk/po/sv/asterisk.po | 0 .../po/templates/asterisk.pot | 0 .../luci-app-asterisk/po/tr/asterisk.po | 12 - .../luci-app-asterisk/po/uk/asterisk.po | 79 - .../luci-app-asterisk/po/vi/asterisk.po | 680 - .../luci-app-asterisk/po/zh-cn/asterisk.po | 171 - .../luci-app-asterisk/po/zh-tw/asterisk.po | 13 - .../root/etc/config/asterisk | 231 - .../root/etc/uci-defaults/40_luci-asterisk | 11 - .../luci-app-attendedsysupgrade/Makefile | 11 - .../luasrc/controller/attendedsysupgrade.lua | 5 - .../luasrc/view/attendedsysupgrade.htm | 520 - .../uci-defaults/40_luci-attendedsysupgrade | 6 - .../share/rpcd/acl.d/attendedsysupgrade.json | 31 - .../luci/applications/luci-app-bcp38/Makefile | 18 - .../luasrc/controller/bcp38.lua | 7 - .../luci-app-bcp38/luasrc/model/cbi/bcp38.lua | 60 - .../luci-app-bcp38/po/sv/bcp38.po | 45 - .../luci-app-bcp38/po/templates/bcp38.pot | 45 - .../luci-app-bcp38/po/zh-cn/bcp38.po | 52 - .../luci-app-bcp38/po/zh-tw/bcp38.po | 52 - .../root/etc/uci-defaults/60_luci-bcp38 | 11 - .../luci/applications/luci-app-cjdns/Makefile | 54 - .../luasrc/controller/cjdns.lua | 105 - .../luasrc/model/cbi/cjdns/cjdrouteconf.lua | 32 - .../luasrc/model/cbi/cjdns/iptunnel.lua | 46 - .../luasrc/model/cbi/cjdns/overview.lua | 10 - .../luasrc/model/cbi/cjdns/peering.lua | 73 - .../luasrc/model/cbi/cjdns/settings.lua | 67 - .../luasrc/view/admin_status/index/cjdns.htm | 1 - .../luasrc/view/cjdns/status.htm | 116 - .../luasrc/view/cjdns/value.htm | 35 - .../applications/luci-app-clamav/Makefile | 18 - .../luasrc/controller/clamav.lua | 22 - .../luasrc/model/cbi/clamav.lua | 178 - .../luci-app-clamav/po/ja/clamav.po | 130 - .../luci-app-clamav/po/sv/clamav.po | 119 - .../luci-app-clamav/po/templates/clamav.pot | 119 - .../luci-app-clamav/po/zh-cn/clamav.po | 131 - .../applications/luci-app-commands/Makefile | 16 - .../luasrc/controller/commands.lua | 268 - .../luasrc/model/cbi/commands.lua | 27 - .../luasrc/view/commands.htm | 172 - .../luasrc/view/commands_public.htm | 50 - .../luci-app-commands/po/ca/commands.po | 116 - .../luci-app-commands/po/cs/commands.po | 111 - .../luci-app-commands/po/de/commands.po | 116 - .../luci-app-commands/po/el/commands.po | 106 - .../luci-app-commands/po/en/commands.po | 117 - .../luci-app-commands/po/es/commands.po | 115 - .../luci-app-commands/po/fr/commands.po | 118 - .../luci-app-commands/po/he/commands.po | 106 - .../luci-app-commands/po/hu/commands.po | 116 - .../luci-app-commands/po/it/commands.po | 117 - .../luci-app-commands/po/ja/commands.po | 115 - .../luci-app-commands/po/ms/commands.po | 105 - .../luci-app-commands/po/no/commands.po | 116 - .../luci-app-commands/po/pl/commands.po | 117 - .../luci-app-commands/po/pt-br/commands.po | 117 - .../luci-app-commands/po/pt/commands.po | 117 - .../luci-app-commands/po/ro/commands.po | 117 - .../luci-app-commands/po/ru/commands.po | 120 - .../luci-app-commands/po/sk/commands.po | 106 - .../luci-app-commands/po/sv/commands.po | 111 - .../po/templates/commands.pot | 99 - .../luci-app-commands/po/tr/commands.po | 106 - .../luci-app-commands/po/uk/commands.po | 118 - .../luci-app-commands/po/vi/commands.po | 106 - .../luci-app-commands/po/zh-cn/commands.po | 113 - .../luci-app-commands/po/zh-tw/commands.po | 112 - .../luci-app-coovachilli/Makefile | 14 - .../luasrc/controller/coovachilli.lua | 15 - .../luasrc/model/cbi/coovachilli.lua | 19 - .../luasrc/model/cbi/coovachilli_auth.lua | 64 - .../luasrc/model/cbi/coovachilli_network.lua | 56 - .../luasrc/model/cbi/coovachilli_radius.lua | 55 - .../luci-app-coovachilli/po/ca/coovachilli.po | 655 - .../luci-app-coovachilli/po/cs/coovachilli.po | 348 - .../luci-app-coovachilli/po/de/coovachilli.po | 658 - .../luci-app-coovachilli/po/el/coovachilli.po | 50 - .../luci-app-coovachilli/po/en/coovachilli.po | 639 - .../luci-app-coovachilli/po/es/coovachilli.po | 113 - .../luci-app-coovachilli/po/fr/coovachilli.po | 26 - .../luci-app-coovachilli/po/he/coovachilli.po | 26 - .../luci-app-coovachilli/po/hu/coovachilli.po | 26 - .../luci-app-coovachilli/po/it/coovachilli.po | 75 - .../luci-app-coovachilli/po/ja/coovachilli.po | 25 - .../luci-app-coovachilli/po/ms/coovachilli.po | 22 - .../luci-app-coovachilli/po/no/coovachilli.po | 26 - .../luci-app-coovachilli/po/pl/coovachilli.po | 27 - .../po/pt-br/coovachilli.po | 657 - .../luci-app-coovachilli/po/pt/coovachilli.po | 372 - .../luci-app-coovachilli/po/ro/coovachilli.po | 27 - .../luci-app-coovachilli/po/ru/coovachilli.po | 560 - .../luci-app-coovachilli/po/sk/coovachilli.po | 21 - .../luci-app-coovachilli/po/sv/coovachilli.po | 24 - .../po/templates/coovachilli.pot | 14 - .../luci-app-coovachilli/po/tr/coovachilli.po | 26 - .../luci-app-coovachilli/po/uk/coovachilli.po | 27 - .../luci-app-coovachilli/po/vi/coovachilli.po | 607 - .../po/zh-cn/coovachilli.po | 26 - .../po/zh-tw/coovachilli.po | 24 - .../root/etc/config/coovachilli | 243 - .../applications/luci-app-cshark/Makefile | 17 - .../luasrc/controller/cshark.lua | 125 - .../luasrc/model/cbi/admin_network/cshark.lua | 30 - .../luci-app-cshark/luasrc/view/cshark.htm | 291 - .../luci/applications/luci-app-ddns/Makefile | 38 - .../luci-app-ddns/luasrc/controller/ddns.lua | 313 - .../luasrc/model/cbi/ddns/detail.lua | 1480 -- .../luasrc/model/cbi/ddns/global.lua | 121 - .../luasrc/model/cbi/ddns/hints.lua | 166 - .../luasrc/model/cbi/ddns/overview.lua | 243 - .../luci-app-ddns/luasrc/tools/ddns.lua | 315 - .../luasrc/view/admin_status/index/ddns.htm | 1 - .../luasrc/view/ddns/detail_logview.htm | 56 - .../luasrc/view/ddns/detail_lvalue.htm | 23 - .../luasrc/view/ddns/detail_value.htm | 9 - .../luasrc/view/ddns/global_value.htm | 34 - .../luasrc/view/ddns/overview_doubleline.htm | 10 - .../luasrc/view/ddns/overview_enabled.htm | 16 - .../luasrc/view/ddns/overview_startstop.htm | 17 - .../luasrc/view/ddns/overview_status.htm | 180 - .../luasrc/view/ddns/system_status.htm | 144 - .../applications/luci-app-ddns/po/ca/ddns.po | 733 - .../applications/luci-app-ddns/po/cs/ddns.po | 731 - .../applications/luci-app-ddns/po/de/ddns.po | 830 - .../applications/luci-app-ddns/po/el/ddns.po | 730 - .../applications/luci-app-ddns/po/es/ddns.po | 729 - .../applications/luci-app-ddns/po/fr/ddns.po | 729 - .../applications/luci-app-ddns/po/he/ddns.po | 730 - .../applications/luci-app-ddns/po/hu/ddns.po | 729 - .../applications/luci-app-ddns/po/it/ddns.po | 788 - .../applications/luci-app-ddns/po/ja/ddns.po | 729 - .../applications/luci-app-ddns/po/no/ddns.po | 728 - .../applications/luci-app-ddns/po/pl/ddns.po | 730 - .../luci-app-ddns/po/pt-br/ddns.po | 809 - .../applications/luci-app-ddns/po/pt/ddns.po | 731 - .../applications/luci-app-ddns/po/ro/ddns.po | 730 - .../applications/luci-app-ddns/po/ru/ddns.po | 731 - .../applications/luci-app-ddns/po/sv/ddns.po | 724 - .../luci-app-ddns/po/templates/ddns.pot | 716 - .../applications/luci-app-ddns/po/tr/ddns.po | 727 - .../applications/luci-app-ddns/po/uk/ddns.po | 732 - .../applications/luci-app-ddns/po/vi/ddns.po | 730 - .../luci-app-ddns/po/zh-cn/ddns.po | 772 - .../luci-app-ddns/po/zh-tw/ddns.po | 772 - .../root/etc/uci-defaults/40_luci-ddns | 10 - .../applications/luci-app-diag-core/Makefile | 14 - .../luasrc/controller/luci_diag.lua | 16 - .../luasrc/view/diag/index.htm | 10 - .../luasrc/view/diag/network_config_index.htm | 10 - .../luci-app-diag-core/po/ca/diag_core.po | 33 - .../luci-app-diag-core/po/cs/diag_core.po | 39 - .../luci-app-diag-core/po/de/diag_core.po | 42 - .../luci-app-diag-core/po/el/diag_core.po | 38 - .../luci-app-diag-core/po/en/diag_core.po | 42 - .../luci-app-diag-core/po/es/diag_core.po | 42 - .../luci-app-diag-core/po/fr/diag_core.po | 42 - .../luci-app-diag-core/po/he/diag_core.po | 30 - .../luci-app-diag-core/po/hu/diag_core.po | 42 - .../luci-app-diag-core/po/it/diag_core.po | 42 - .../luci-app-diag-core/po/ja/diag_core.po | 33 - .../luci-app-diag-core/po/ms/diag_core.po | 29 - .../luci-app-diag-core/po/no/diag_core.po | 35 - .../luci-app-diag-core/po/pl/diag_core.po | 43 - .../luci-app-diag-core/po/pt-br/diag_core.po | 42 - .../luci-app-diag-core/po/pt/diag_core.po | 39 - .../luci-app-diag-core/po/ro/diag_core.po | 45 - .../luci-app-diag-core/po/ru/diag_core.po | 45 - .../luci-app-diag-core/po/sk/diag_core.po | 30 - .../luci-app-diag-core/po/sv/diag_core.po | 33 - .../po/templates/diag_core.pot | 23 - .../luci-app-diag-core/po/tr/diag_core.po | 30 - .../luci-app-diag-core/po/uk/diag_core.po | 40 - .../luci-app-diag-core/po/vi/diag_core.po | 30 - .../luci-app-diag-core/po/zh-cn/diag_core.po | 36 - .../luci-app-diag-core/po/zh-tw/diag_core.po | 33 - .../luci-app-diag-devinfo/Makefile | 18 - .../controller/luci_diag/devinfo_common.lua | 185 - .../luci_diag/luci_diag_devinfo.lua | 46 - .../luci_diag/netdiscover_common.lua | 91 - .../controller/luci_diag/smap_common.lua | 102 - .../model/cbi/luci_diag/mactodevinfo.lua | 25 - .../cbi/luci_diag/netdiscover_devinfo.lua | 33 - .../luci_diag/netdiscover_devinfo_config.lua | 19 - .../netdiscover_devinfo_config_mini.lua | 19 - .../luci_diag/netdiscover_devinfo_mini.lua | 33 - .../model/cbi/luci_diag/smap_devinfo.lua | 33 - .../cbi/luci_diag/smap_devinfo_config.lua | 24 - .../luci_diag/smap_devinfo_config_mini.lua | 25 - .../model/cbi/luci_diag/smap_devinfo_mini.lua | 33 - .../luasrc/view/diag/smapsection.htm | 129 - .../luasrc/view/diag/smapvalue.htm | 12 - .../po/ca/diag_devinfo.po | 209 - .../po/cs/diag_devinfo.po | 209 - .../po/de/diag_devinfo.po | 221 - .../po/el/diag_devinfo.po | 209 - .../po/en/diag_devinfo.po | 213 - .../po/es/diag_devinfo.po | 222 - .../po/fr/diag_devinfo.po | 220 - .../po/he/diag_devinfo.po | 206 - .../po/hu/diag_devinfo.po | 222 - .../po/it/diag_devinfo.po | 221 - .../po/ja/diag_devinfo.po | 209 - .../po/ms/diag_devinfo.po | 205 - .../po/no/diag_devinfo.po | 213 - .../po/pl/diag_devinfo.po | 222 - .../po/pt-br/diag_devinfo.po | 220 - .../po/pt/diag_devinfo.po | 209 - .../po/ro/diag_devinfo.po | 210 - .../po/ru/diag_devinfo.po | 223 - .../po/sk/diag_devinfo.po | 206 - .../po/sv/diag_devinfo.po | 207 - .../po/templates/diag_devinfo.pot | 199 - .../po/tr/diag_devinfo.po | 206 - .../po/uk/diag_devinfo.po | 219 - .../po/vi/diag_devinfo.po | 206 - .../po/zh-cn/diag_devinfo.po | 210 - .../po/zh-tw/diag_devinfo.po | 210 - .../root/etc/config/luci_devinfo | 20 - .../luci-app-dnscrypt-proxy/Makefile | 13 - .../luasrc/controller/dnscrypt-proxy.lua | 38 - .../cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua | 39 - .../dnscrypt-proxy/cfg_resolvcrypt_tab.lua | 39 - .../cbi/dnscrypt-proxy/configuration_tab.lua | 39 - .../model/cbi/dnscrypt-proxy/overview_tab.lua | 245 - .../luasrc/view/dnscrypt-proxy/config_css.htm | 13 - .../luasrc/view/dnscrypt-proxy/logread.htm | 15 - .../view/dnscrypt-proxy/res_options.htm | 10 - .../view/dnscrypt-proxy/view_reslist.htm | 15 - .../po/ja/dnscrypt-proxy.po | 279 - .../po/templates/dnscrypt-proxy.pot | 228 - .../etc/uci-defaults/60_luci-dnscrypt-proxy | 11 - .../applications/luci-app-dump1090/Makefile | 14 - .../luasrc/controller/dump1090.lua | 14 - .../luasrc/model/cbi/dump1090.lua | 199 - .../root/etc/uci-defaults/40_luci-dump1090 | 12 - .../applications/luci-app-dynapoint/Makefile | 17 - .../luasrc/controller/dynapoint.lua | 9 - .../luasrc/model/cbi/dynapoint.lua | 99 - .../luasrc/view/dynapoint/cbi_checkbox.htm | 6 - .../luasrc/view/dynapoint/cbi_color.htm | 18 - .../luci-app-dynapoint/po/de/dynapoint.po | 106 - .../luci-app-dynapoint/po/ja/dynapoint.po | 108 - .../luci-app-dynapoint/po/pt-br/dynapoint.po | 107 - .../po/templates/dynapoint.pot | 92 - .../root/etc/uci-defaults/40_luci-dynapoint | 13 - .../applications/luci-app-e2guardian/Makefile | 18 - .../luasrc/controller/e2guardian.lua | 22 - .../luasrc/model/cbi/e2guardian.lua | 399 - .../applications/luci-app-firewall/Makefile | 16 - .../luasrc/controller/firewall.lua | 23 - .../luasrc/model/cbi/firewall/custom.lua | 31 - .../model/cbi/firewall/forward-details.lua | 150 - .../luasrc/model/cbi/firewall/forwards.lua | 134 - .../model/cbi/firewall/rule-details.lua | 349 - .../luasrc/model/cbi/firewall/rules.lua | 259 - .../model/cbi/firewall/zone-details.lua | 232 - .../luasrc/model/cbi/firewall/zones.lua | 76 - .../luasrc/tools/firewall.lua | 279 - .../luasrc/view/firewall/cbi_addforward.htm | 112 - .../luasrc/view/firewall/cbi_addrule.htm | 112 - .../luasrc/view/firewall/cbi_addsnat.htm | 65 - .../luci-app-firewall/po/ca/firewall.po | 521 - .../luci-app-firewall/po/cs/firewall.po | 516 - .../luci-app-firewall/po/de/firewall.po | 522 - .../luci-app-firewall/po/el/firewall.po | 486 - .../luci-app-firewall/po/en/firewall.po | 513 - .../luci-app-firewall/po/es/firewall.po | 519 - .../luci-app-firewall/po/fr/firewall.po | 540 - .../luci-app-firewall/po/he/firewall.po | 471 - .../luci-app-firewall/po/hu/firewall.po | 523 - .../luci-app-firewall/po/it/firewall.po | 539 - .../luci-app-firewall/po/ja/firewall.po | 555 - .../luci-app-firewall/po/ko/firewall.po | 505 - .../luci-app-firewall/po/ms/firewall.po | 470 - .../luci-app-firewall/po/no/firewall.po | 517 - .../luci-app-firewall/po/pl/firewall.po | 530 - .../luci-app-firewall/po/pt-br/firewall.po | 521 - .../luci-app-firewall/po/pt/firewall.po | 505 - .../luci-app-firewall/po/ro/firewall.po | 475 - .../luci-app-firewall/po/ru/firewall.po | 545 - .../luci-app-firewall/po/sk/firewall.po | 471 - .../luci-app-firewall/po/sv/firewall.po | 477 - .../po/templates/firewall.pot | 464 - .../luci-app-firewall/po/tr/firewall.po | 471 - .../luci-app-firewall/po/uk/firewall.po | 519 - .../luci-app-firewall/po/vi/firewall.po | 486 - .../luci-app-firewall/po/zh-cn/firewall.po | 488 - .../luci-app-firewall/po/zh-tw/firewall.po | 487 - .../luci-app-freifunk-diagnostics/Makefile | 14 - .../luasrc/controller/freifunk/diag.lua | 72 - .../luasrc/view/freifunk/diagnostics.htm | 111 - .../uci-defaults/40_luci-freifunk-diagnostics | 2 - .../luci-app-freifunk-policyrouting/Makefile | 14 - .../controller/freifunk/policy-routing.lua | 9 - .../model/cbi/freifunk/policyrouting.lua | 34 - .../po/ca/freifunk-policyrouting.po | 62 - .../po/cs/freifunk-policyrouting.po | 52 - .../po/de/freifunk-policyrouting.po | 67 - .../po/el/freifunk-policyrouting.po | 39 - .../po/en/freifunk-policyrouting.po | 39 - .../po/es/freifunk-policyrouting.po | 66 - .../po/fr/freifunk-policyrouting.po | 39 - .../po/he/freifunk-policyrouting.po | 50 - .../po/hu/freifunk-policyrouting.po | 50 - .../po/it/freifunk-policyrouting.po | 69 - .../po/ja/freifunk-policyrouting.po | 39 - .../po/ms/freifunk-policyrouting.po | 39 - .../po/no/freifunk-policyrouting.po | 39 - .../po/pl/freifunk-policyrouting.po | 69 - .../po/pt-br/freifunk-policyrouting.po | 68 - .../po/pt/freifunk-policyrouting.po | 56 - .../po/ro/freifunk-policyrouting.po | 53 - .../po/ru/freifunk-policyrouting.po | 70 - .../po/sk/freifunk-policyrouting.po | 49 - .../po/sv/freifunk-policyrouting.po | 50 - .../po/templates/freifunk-policyrouting.pot | 42 - .../po/tr/freifunk-policyrouting.po | 50 - .../po/uk/freifunk-policyrouting.po | 72 - .../po/vi/freifunk-policyrouting.po | 39 - .../po/zh-cn/freifunk-policyrouting.po | 57 - .../po/zh-tw/freifunk-policyrouting.po | 48 - .../luci-app-freifunk-widgets/Makefile | 14 - .../luasrc/controller/freifunk/widgets.lua | 35 - .../cbi/freifunk/widgets/heightwidth.lua | 16 - .../model/cbi/freifunk/widgets/html.lua | 31 - .../model/cbi/freifunk/widgets/iframe.lua | 13 - .../model/cbi/freifunk/widgets/rssfeed.lua | 25 - .../model/cbi/freifunk/widgets/search.lua | 15 - .../model/cbi/freifunk/widgets/widget.lua | 37 - .../cbi/freifunk/widgets/widgets_overview.lua | 68 - .../view/freifunk/widgets/clear/main.htm | 15 - .../view/freifunk/widgets/html/main.htm | 42 - .../view/freifunk/widgets/iframe/main.htm | 45 - .../view/freifunk/widgets/rssfeed/main.htm | 84 - .../view/freifunk/widgets/search/main.htm | 54 - .../root/etc/config/freifunk-widgets | 33 - .../root/lib/upgrade/keep.d/freifunk-widgets | 1 - .../applications/luci-app-fwknopd/Makefile | 15 - .../luasrc/controller/fwknopd.lua | 15 - .../luasrc/model/cbi/fwknopd.lua | 52 - .../luasrc/view/fwknopd-qr.htm | 2 - .../luci-app-fwknopd/po/en/fwknopd.po | 116 - .../luci-app-fwknopd/po/pt-br/fwknopd.po | 116 - .../luci-app-fwknopd/po/templates/fwknopd.pot | 80 - .../root/etc/uci-defaults/40_luci-fwknopd | 24 - .../luci-app-fwknopd/root/usr/sbin/gen-qr.sh | 26 - .../applications/luci-app-hd-idle/Makefile | 14 - .../luasrc/controller/hd_idle.lua | 15 - .../luasrc/model/cbi/hd_idle.lua | 29 - .../luci-app-hd-idle/po/ca/hd_idle.po | 52 - .../luci-app-hd-idle/po/cs/hd_idle.po | 52 - .../luci-app-hd-idle/po/de/hd_idle.po | 50 - .../luci-app-hd-idle/po/el/hd_idle.po | 48 - .../luci-app-hd-idle/po/en/hd_idle.po | 48 - .../luci-app-hd-idle/po/es/hd_idle.po | 50 - .../luci-app-hd-idle/po/fr/hd_idle.po | 50 - .../luci-app-hd-idle/po/he/hd_idle.po | 52 - .../luci-app-hd-idle/po/hu/hd_idle.po | 52 - .../luci-app-hd-idle/po/it/hd_idle.po | 50 - .../luci-app-hd-idle/po/ja/hd_idle.po | 50 - .../luci-app-hd-idle/po/ms/hd_idle.po | 44 - .../luci-app-hd-idle/po/no/hd_idle.po | 39 - .../luci-app-hd-idle/po/pl/hd_idle.po | 51 - .../luci-app-hd-idle/po/pt-br/hd_idle.po | 50 - .../luci-app-hd-idle/po/pt/hd_idle.po | 50 - .../luci-app-hd-idle/po/ro/hd_idle.po | 53 - .../luci-app-hd-idle/po/ru/hd_idle.po | 52 - .../luci-app-hd-idle/po/sk/hd_idle.po | 38 - .../luci-app-hd-idle/po/sv/hd_idle.po | 39 - .../luci-app-hd-idle/po/templates/hd_idle.pot | 31 - .../luci-app-hd-idle/po/tr/hd_idle.po | 52 - .../luci-app-hd-idle/po/uk/hd_idle.po | 52 - .../luci-app-hd-idle/po/vi/hd_idle.po | 53 - .../luci-app-hd-idle/po/zh-cn/hd_idle.po | 48 - .../luci-app-hd-idle/po/zh-tw/hd_idle.po | 44 - .../root/etc/uci-defaults/40_luci-hd_idle | 11 - .../applications/luci-app-ltqtapi/Makefile | 14 - .../luasrc/controller/ltqtapi.lua | 40 - .../luasrc/model/cbi/luci_ltqtapi/account.lua | 16 - .../luasrc/model/cbi/luci_ltqtapi/contact.lua | 20 - .../view/admin_status/index/telephony.htm | 1 - .../luasrc/view/telephony_status.htm | 32 - .../luci/applications/luci-app-lxc/Makefile | 17 - .../luci-static/resources/cbi/green.gif | Bin 310 -> 0 bytes .../luci-static/resources/cbi/purple.gif | Bin 317 -> 0 bytes .../htdocs/luci-static/resources/cbi/red.gif | Bin 320 -> 0 bytes .../luci-app-lxc/luasrc/controller/lxc.lua | 167 - .../luci-app-lxc/luasrc/model/cbi/lxc.lua | 31 - .../luci-app-lxc/luasrc/view/lxc.htm | 458 - .../luci-app-lxc/root/etc/config/lxc | 6 - .../applications/luci-app-meshwizard/Makefile | 14 - .../luasrc/controller/meshwizard.lua | 9 - .../luasrc/model/cbi/freifunk/meshwizard.lua | 196 - .../luci-app-meshwizard/po/ca/meshwizard.po | 144 - .../luci-app-meshwizard/po/cs/meshwizard.po | 122 - .../luci-app-meshwizard/po/de/meshwizard.po | 145 - .../luci-app-meshwizard/po/el/meshwizard.po | 124 - .../luci-app-meshwizard/po/en/meshwizard.po | 109 - .../luci-app-meshwizard/po/es/meshwizard.po | 137 - .../luci-app-meshwizard/po/fr/meshwizard.po | 139 - .../luci-app-meshwizard/po/he/meshwizard.po | 119 - .../luci-app-meshwizard/po/hu/meshwizard.po | 122 - .../luci-app-meshwizard/po/it/meshwizard.po | 143 - .../luci-app-meshwizard/po/ja/meshwizard.po | 109 - .../luci-app-meshwizard/po/ms/meshwizard.po | 109 - .../luci-app-meshwizard/po/no/meshwizard.po | 109 - .../luci-app-meshwizard/po/pl/meshwizard.po | 147 - .../po/pt-br/meshwizard.po | 149 - .../luci-app-meshwizard/po/pt/meshwizard.po | 133 - .../luci-app-meshwizard/po/ro/meshwizard.po | 126 - .../luci-app-meshwizard/po/ru/meshwizard.po | 150 - .../luci-app-meshwizard/po/sk/meshwizard.po | 119 - .../luci-app-meshwizard/po/sv/meshwizard.po | 120 - .../po/templates/meshwizard.pot | 112 - .../luci-app-meshwizard/po/tr/meshwizard.po | 119 - .../luci-app-meshwizard/po/uk/meshwizard.po | 126 - .../luci-app-meshwizard/po/vi/meshwizard.po | 109 - .../po/zh-cn/meshwizard.po | 126 - .../po/zh-tw/meshwizard.po | 118 - .../root/etc/uci-defaults/meshwizard | 8 - .../applications/luci-app-minidlna/Makefile | 14 - .../luasrc/controller/minidlna.lua | 46 - .../luasrc/model/cbi/minidlna.lua | 169 - .../view/admin_status/index/minidlna.htm | 1 - .../luasrc/view/minidlna_status.htm | 29 - .../luci-app-minidlna/po/ca/minidlna.po | 174 - .../luci-app-minidlna/po/cs/minidlna.po | 178 - .../luci-app-minidlna/po/de/minidlna.po | 212 - .../luci-app-minidlna/po/el/minidlna.po | 171 - .../luci-app-minidlna/po/en/minidlna.po | 202 - .../luci-app-minidlna/po/es/minidlna.po | 191 - .../luci-app-minidlna/po/fr/minidlna.po | 171 - .../luci-app-minidlna/po/he/minidlna.po | 171 - .../luci-app-minidlna/po/hu/minidlna.po | 206 - .../luci-app-minidlna/po/it/minidlna.po | 199 - .../luci-app-minidlna/po/ja/minidlna.po | 208 - .../luci-app-minidlna/po/ms/minidlna.po | 170 - .../luci-app-minidlna/po/no/minidlna.po | 196 - .../luci-app-minidlna/po/pl/minidlna.po | 196 - .../luci-app-minidlna/po/pt-br/minidlna.po | 200 - .../luci-app-minidlna/po/pt/minidlna.po | 178 - .../luci-app-minidlna/po/ro/minidlna.po | 175 - .../luci-app-minidlna/po/ru/minidlna.po | 198 - .../luci-app-minidlna/po/sk/minidlna.po | 171 - .../luci-app-minidlna/po/sv/minidlna.po | 172 - .../po/templates/minidlna.pot | 164 - .../luci-app-minidlna/po/tr/minidlna.po | 171 - .../luci-app-minidlna/po/uk/minidlna.po | 172 - .../luci-app-minidlna/po/vi/minidlna.po | 171 - .../luci-app-minidlna/po/zh-cn/minidlna.po | 180 - .../luci-app-minidlna/po/zh-tw/minidlna.po | 174 - .../root/etc/uci-defaults/40_luci-minidlna | 10 - .../luci-app-mjpg-streamer/Makefile | 14 - .../luasrc/controller/mjpg-streamer.lua | 17 - .../luasrc/model/cbi/mjpg-streamer.lua | 223 - .../po/ja/mjpg-streamer.po | 171 - .../po/pt-br/mjpg-streamer.po | 172 - .../po/templates/mjpg-streamer.pot | 153 - .../po/zh-cn/mjpg-streamer.po | 165 - .../etc/uci-defaults/40_luci-mjpg-streamer | 11 - .../luci-app-mmc-over-gpio/Makefile | 14 - .../luasrc/controller/mmc_over_gpio.lua | 15 - .../luasrc/model/cbi/mmc_over_gpio.lua | 29 - .../po/ca/mmc_over_gpio.po | 43 - .../po/cs/mmc_over_gpio.po | 41 - .../po/de/mmc_over_gpio.po | 42 - .../po/el/mmc_over_gpio.po | 39 - .../po/en/mmc_over_gpio.po | 41 - .../po/es/mmc_over_gpio.po | 41 - .../po/fr/mmc_over_gpio.po | 41 - .../po/he/mmc_over_gpio.po | 41 - .../po/hu/mmc_over_gpio.po | 41 - .../po/it/mmc_over_gpio.po | 41 - .../po/ja/mmc_over_gpio.po | 41 - .../po/ms/mmc_over_gpio.po | 37 - .../po/no/mmc_over_gpio.po | 32 - .../po/pl/mmc_over_gpio.po | 42 - .../po/pt-br/mmc_over_gpio.po | 41 - .../po/pt/mmc_over_gpio.po | 41 - .../po/ro/mmc_over_gpio.po | 42 - .../po/ru/mmc_over_gpio.po | 43 - .../po/sk/mmc_over_gpio.po | 36 - .../po/sv/mmc_over_gpio.po | 37 - .../po/templates/mmc_over_gpio.pot | 29 - .../po/tr/mmc_over_gpio.po | 41 - .../po/uk/mmc_over_gpio.po | 42 - .../po/vi/mmc_over_gpio.po | 41 - .../po/zh-cn/mmc_over_gpio.po | 41 - .../po/zh-tw/mmc_over_gpio.po | 39 - .../etc/uci-defaults/40_luci-mmc-over-gpio | 11 - .../applications/luci-app-multiwan/Makefile | 14 - .../luasrc/controller/multiwan.lua | 60 - .../luasrc/model/cbi/multiwan/multiwan.lua | 155 - .../model/cbi/multiwan/multiwanmini.lua | 67 - .../view/admin_status/index/multiwan.htm | 1 - .../luasrc/view/multiwan_status.htm | 71 - .../luci-app-multiwan/po/ca/multiwan.po | 124 - .../luci-app-multiwan/po/cs/multiwan.po | 124 - .../luci-app-multiwan/po/de/multiwan.po | 124 - .../luci-app-multiwan/po/el/multiwan.po | 118 - .../luci-app-multiwan/po/en/multiwan.po | 114 - .../luci-app-multiwan/po/es/multiwan.po | 124 - .../luci-app-multiwan/po/fr/multiwan.po | 125 - .../luci-app-multiwan/po/he/multiwan.po | 115 - .../luci-app-multiwan/po/hu/multiwan.po | 124 - .../luci-app-multiwan/po/it/multiwan.po | 124 - .../luci-app-multiwan/po/ja/multiwan.po | 120 - .../luci-app-multiwan/po/ms/multiwan.po | 114 - .../luci-app-multiwan/po/no/multiwan.po | 117 - .../luci-app-multiwan/po/pl/multiwan.po | 125 - .../luci-app-multiwan/po/pt-br/multiwan.po | 124 - .../luci-app-multiwan/po/pt/multiwan.po | 118 - .../luci-app-multiwan/po/ro/multiwan.po | 119 - .../luci-app-multiwan/po/ru/multiwan.po | 127 - .../luci-app-multiwan/po/sk/multiwan.po | 115 - .../luci-app-multiwan/po/sv/multiwan.po | 116 - .../po/templates/multiwan.pot | 108 - .../luci-app-multiwan/po/tr/multiwan.po | 115 - .../luci-app-multiwan/po/uk/multiwan.po | 119 - .../luci-app-multiwan/po/vi/multiwan.po | 115 - .../luci-app-multiwan/po/zh-cn/multiwan.po | 118 - .../luci-app-multiwan/po/zh-tw/multiwan.po | 118 - .../luci/applications/luci-app-mwan3/Makefile | 19 - .../luasrc/controller/mwan3.lua | 333 - .../model/cbi/mwan/advanced_hotplugscript.lua | 40 - .../model/cbi/mwan/advanced_mwanconfig.lua | 32 - .../model/cbi/mwan/advanced_networkconfig.lua | 32 - .../cbi/mwan/advanced_wirelessconfig.lua | 32 - .../luasrc/model/cbi/mwan/globalsconfig.lua | 40 - .../luasrc/model/cbi/mwan/interface.lua | 276 - .../luasrc/model/cbi/mwan/interfaceconfig.lua | 266 - .../luasrc/model/cbi/mwan/member.lua | 46 - .../luasrc/model/cbi/mwan/memberconfig.lua | 47 - .../luasrc/model/cbi/mwan/policy.lua | 94 - .../luasrc/model/cbi/mwan/policyconfig.lua | 65 - .../luasrc/model/cbi/mwan/rule.lua | 141 - .../luasrc/model/cbi/mwan/ruleconfig.lua | 113 - .../luasrc/view/admin_status/index/mwan.htm | 1 - .../luasrc/view/mwan/advanced_diagnostics.htm | 115 - .../view/mwan/advanced_hotplugscript.htm | 14 - .../luasrc/view/mwan/advanced_mwanconfig.htm | 14 - .../view/mwan/advanced_networkconfig.htm | 14 - .../view/mwan/advanced_troubleshooting.htm | 63 - .../view/mwan/advanced_wirelessconfig.htm | 14 - .../luasrc/view/mwan/config_css.htm | 28 - .../view/mwan/openwrt_overview_status.htm | 80 - .../luasrc/view/mwan/overview_detailed.htm | 40 - .../luasrc/view/mwan/overview_interface.htm | 108 - .../luci-app-mwan3/po/ja/mwan3.po | 665 - .../luci-app-mwan3/po/templates/mwan3.pot | 562 - .../luci-app-mwan3/po/zh-cn/mwan3.po | 631 - .../luci-app-mwan3/po/zh-tw/mwan3.po | 630 - .../root/etc/hotplug.d/iface/16-mwancustombak | 38 - .../root/etc/uci-defaults/60_luci-mwan3 | 21 - .../applications/luci-app-nlbwmon/Makefile | 8 - .../luci-static/resources/nlbw.chart.min.js | 68 - .../luasrc/controller/nlbw.lua | 225 - .../luasrc/model/cbi/nlbw/config.lua | 215 - .../luasrc/view/nlbw/backup.htm | 34 - .../luasrc/view/nlbw/display.htm | 1052 - .../luci-app-nlbwmon/po/ja/nlbwmon.po | 387 - .../luci-app-nlbwmon/po/templates/nlbwmon.pot | 352 - .../luci-app-nlbwmon/po/zh-cn/nlbwmon.po | 366 - .../root/etc/uci-defaults/40_luci-nlbwmon | 11 - .../applications/luci-app-noddos/Makefile | 18 - .../htdocs/cgi-bin/clientdetails | 91 - .../luasrc/controller/noddos.lua | 10 - .../luasrc/model/cbi/noddos.lua | 46 - .../luasrc/view/noddos/clients.htm | 111 - .../luci-app-noddos/po/ja/noddos.po | 111 - .../luci-app-noddos/po/templates/noddos.pot | 92 - .../root/etc/uci-defaults/40_luci-noddos | 14 - .../luci/applications/luci-app-ntpc/Makefile | 14 - .../luci-app-ntpc/luasrc/controller/ntpc.lua | 19 - .../luasrc/model/cbi/ntpc/ntpc.lua | 39 - .../luasrc/model/cbi/ntpc/ntpcmini.lua | 28 - .../applications/luci-app-ntpc/po/ca/ntpc.po | 57 - .../applications/luci-app-ntpc/po/cs/ntpc.po | 55 - .../applications/luci-app-ntpc/po/de/ntpc.po | 53 - .../applications/luci-app-ntpc/po/el/ntpc.po | 56 - .../applications/luci-app-ntpc/po/en/ntpc.po | 51 - .../applications/luci-app-ntpc/po/es/ntpc.po | 53 - .../applications/luci-app-ntpc/po/fr/ntpc.po | 53 - .../applications/luci-app-ntpc/po/he/ntpc.po | 59 - .../applications/luci-app-ntpc/po/hu/ntpc.po | 55 - .../applications/luci-app-ntpc/po/it/ntpc.po | 53 - .../applications/luci-app-ntpc/po/ja/ntpc.po | 53 - .../applications/luci-app-ntpc/po/ms/ntpc.po | 52 - .../applications/luci-app-ntpc/po/no/ntpc.po | 44 - .../applications/luci-app-ntpc/po/pl/ntpc.po | 54 - .../luci-app-ntpc/po/pt-br/ntpc.po | 53 - .../applications/luci-app-ntpc/po/pt/ntpc.po | 53 - .../applications/luci-app-ntpc/po/ro/ntpc.po | 56 - .../applications/luci-app-ntpc/po/ru/ntpc.po | 55 - .../applications/luci-app-ntpc/po/sk/ntpc.po | 48 - .../applications/luci-app-ntpc/po/sv/ntpc.po | 49 - .../luci-app-ntpc/po/templates/ntpc.pot | 41 - .../applications/luci-app-ntpc/po/tr/ntpc.po | 55 - .../applications/luci-app-ntpc/po/uk/ntpc.po | 56 - .../applications/luci-app-ntpc/po/vi/ntpc.po | 57 - .../luci-app-ntpc/po/zh-cn/ntpc.po | 53 - .../luci-app-ntpc/po/zh-tw/ntpc.po | 51 - .../applications/luci-app-ocserv/Makefile | 14 - .../luasrc/controller/ocserv.lua | 78 - .../luasrc/model/cbi/ocserv/main.lua | 179 - .../luasrc/model/cbi/ocserv/user-config.lua | 139 - .../luasrc/model/cbi/ocserv/users.lua | 75 - .../luasrc/view/admin_status/index/ocserv.htm | 1 - .../luasrc/view/ocserv_status.htm | 76 - .../luci-app-olsr-services/Makefile | 14 - .../luasrc/controller/services.lua | 16 - .../view/freifunk-services/services.htm | 193 - .../applications/luci-app-olsr-viz/Makefile | 14 - .../htdocs/cgi-bin/olsr-viz.sh | 40 - .../htdocs/cgi-bin/vizdata.sh | 48 - .../htdocs/luci-static/resources/olsr-viz.js | 818 - .../resources/olsr-viz/dot_down.gif | Bin 46 -> 0 bytes .../resources/olsr-viz/dot_good.gif | Bin 46 -> 0 bytes .../luci-static/resources/olsr-viz/dot_ok.gif | Bin 46 -> 0 bytes .../resources/olsr-viz/dot_weak.gif | Bin 46 -> 0 bytes .../resources/olsr-viz/node-hna-mini.gif | Bin 1192 -> 0 bytes .../resources/olsr-viz/node-mini.gif | Bin 1194 -> 0 bytes .../luasrc/controller/olsr-viz.lua | 5 - .../luasrc/view/olsr-viz/olsr-viz.htm | 10 - .../luci/applications/luci-app-olsr/Makefile | 14 - .../luci-app-olsr/htdocs/cgi-bin-nodes.html | 1 - .../luci-app-olsr/htdocs/cgi-bin-status.html | 10 - .../luci-app-olsr/luasrc/controller/olsr.lua | 425 - .../luci-app-olsr/luasrc/controller/olsr4.lua | 47 - .../luci-app-olsr/luasrc/controller/olsr6.lua | 47 - .../luasrc/model/cbi/olsr/olsrd.lua | 409 - .../luasrc/model/cbi/olsr/olsrd6.lua | 390 - .../luasrc/model/cbi/olsr/olsrddisplay.lua | 14 - .../luasrc/model/cbi/olsr/olsrdhna.lua | 45 - .../luasrc/model/cbi/olsr/olsrdhna6.lua | 25 - .../luasrc/model/cbi/olsr/olsrdiface.lua | 177 - .../luasrc/model/cbi/olsr/olsrdiface6.lua | 164 - .../luasrc/model/cbi/olsr/olsrdplugins.lua | 259 - .../luasrc/model/cbi/olsr/olsrdplugins6.lua | 259 - .../luci-app-olsr/luasrc/tools/olsr.lua | 33 - .../luasrc/view/status-olsr/common_js.htm | 35 - .../luasrc/view/status-olsr/error_olsr.htm | 11 - .../luasrc/view/status-olsr/hna.htm | 122 - .../luasrc/view/status-olsr/interfaces.htm | 50 - .../luasrc/view/status-olsr/legend.htm | 24 - .../luasrc/view/status-olsr/mid.htm | 50 - .../luasrc/view/status-olsr/neighbors.htm | 174 - .../luasrc/view/status-olsr/overview.htm | 221 - .../luasrc/view/status-olsr/routes.htm | 142 - .../luasrc/view/status-olsr/smartgw.htm | 152 - .../luasrc/view/status-olsr/topology.htm | 62 - .../applications/luci-app-olsr/po/ca/olsr.po | 707 - .../applications/luci-app-olsr/po/cs/olsr.po | 693 - .../applications/luci-app-olsr/po/de/olsr.po | 814 - .../applications/luci-app-olsr/po/el/olsr.po | 695 - .../applications/luci-app-olsr/po/en/olsr.po | 701 - .../applications/luci-app-olsr/po/es/olsr.po | 830 - .../applications/luci-app-olsr/po/fr/olsr.po | 692 - .../applications/luci-app-olsr/po/he/olsr.po | 687 - .../applications/luci-app-olsr/po/hu/olsr.po | 687 - .../applications/luci-app-olsr/po/it/olsr.po | 733 - .../applications/luci-app-olsr/po/ja/olsr.po | 800 - .../applications/luci-app-olsr/po/ms/olsr.po | 686 - .../applications/luci-app-olsr/po/no/olsr.po | 687 - .../applications/luci-app-olsr/po/pl/olsr.po | 749 - .../luci-app-olsr/po/pt-br/olsr.po | 899 - .../applications/luci-app-olsr/po/pt/olsr.po | 715 - .../applications/luci-app-olsr/po/ro/olsr.po | 691 - .../applications/luci-app-olsr/po/ru/olsr.po | 812 - .../applications/luci-app-olsr/po/sk/olsr.po | 687 - .../applications/luci-app-olsr/po/sv/olsr.po | 692 - .../luci-app-olsr/po/templates/olsr.pot | 680 - .../applications/luci-app-olsr/po/tr/olsr.po | 687 - .../applications/luci-app-olsr/po/uk/olsr.po | 688 - .../applications/luci-app-olsr/po/vi/olsr.po | 703 - .../luci-app-olsr/po/zh-cn/olsr.po | 696 - .../luci-app-olsr/po/zh-tw/olsr.po | 700 - .../luci-app-olsr/root/etc/config/luci_olsr | 2 - .../root/etc/uci-defaults/40_luci-olsr | 14 - .../applications/luci-app-openvpn/Makefile | 14 - .../luasrc/controller/openvpn.lua | 11 - .../luasrc/model/cbi/openvpn-advanced.lua | 798 - .../luasrc/model/cbi/openvpn-basic.lua | 91 - .../luasrc/model/cbi/openvpn.lua | 130 - .../view/openvpn/cbi-select-input-add.htm | 11 - .../luasrc/view/openvpn/pageswitch.htm | 30 - .../luci-app-openvpn/po/ca/openvpn.po | 561 - .../luci-app-openvpn/po/cs/openvpn.po | 561 - .../luci-app-openvpn/po/de/openvpn.po | 575 - .../luci-app-openvpn/po/el/openvpn.po | 572 - .../luci-app-openvpn/po/en/openvpn.po | 555 - .../luci-app-openvpn/po/es/openvpn.po | 574 - .../luci-app-openvpn/po/fr/openvpn.po | 595 - .../luci-app-openvpn/po/he/openvpn.po | 550 - .../luci-app-openvpn/po/hu/openvpn.po | 572 - .../luci-app-openvpn/po/it/openvpn.po | 554 - .../luci-app-openvpn/po/ja/openvpn.po | 566 - .../luci-app-openvpn/po/ms/openvpn.po | 549 - .../luci-app-openvpn/po/no/openvpn.po | 550 - .../luci-app-openvpn/po/pl/openvpn.po | 581 - .../luci-app-openvpn/po/pt-br/openvpn.po | 581 - .../luci-app-openvpn/po/pt/openvpn.po | 574 - .../luci-app-openvpn/po/ro/openvpn.po | 551 - .../luci-app-openvpn/po/ru/openvpn.po | 590 - .../luci-app-openvpn/po/sk/openvpn.po | 549 - .../luci-app-openvpn/po/sv/openvpn.po | 550 - .../luci-app-openvpn/po/templates/openvpn.pot | 542 - .../luci-app-openvpn/po/tr/openvpn.po | 549 - .../luci-app-openvpn/po/uk/openvpn.po | 553 - .../luci-app-openvpn/po/vi/openvpn.po | 555 - .../luci-app-openvpn/po/zh-cn/openvpn.po | 570 - .../luci-app-openvpn/po/zh-tw/openvpn.po | 570 - .../root/etc/config/openvpn_recipes | 102 - .../applications/luci-app-p2pblock/Makefile | 14 - .../luasrc/controller/ff_p2pblock.lua | 9 - .../luasrc/model/cbi/luci_fw/p2pblock.lua | 66 - .../luci-app-p2pblock/po/ca/p2pblock.po | 46 - .../luci-app-p2pblock/po/cs/p2pblock.po | 41 - .../luci-app-p2pblock/po/de/p2pblock.po | 44 - .../luci-app-p2pblock/po/el/p2pblock.po | 43 - .../luci-app-p2pblock/po/en/p2pblock.po | 28 - .../luci-app-p2pblock/po/es/p2pblock.po | 45 - .../luci-app-p2pblock/po/fr/p2pblock.po | 45 - .../luci-app-p2pblock/po/he/p2pblock.po | 43 - .../luci-app-p2pblock/po/hu/p2pblock.po | 43 - .../luci-app-p2pblock/po/it/p2pblock.po | 45 - .../luci-app-p2pblock/po/ja/p2pblock.po | 28 - .../luci-app-p2pblock/po/ms/p2pblock.po | 28 - .../luci-app-p2pblock/po/no/p2pblock.po | 36 - .../luci-app-p2pblock/po/pl/p2pblock.po | 46 - .../luci-app-p2pblock/po/pt-br/p2pblock.po | 34 - .../luci-app-p2pblock/po/pt/p2pblock.po | 45 - .../luci-app-p2pblock/po/ro/p2pblock.po | 44 - .../luci-app-p2pblock/po/ru/p2pblock.po | 48 - .../luci-app-p2pblock/po/sk/p2pblock.po | 38 - .../luci-app-p2pblock/po/sv/p2pblock.po | 41 - .../po/templates/p2pblock.pot | 31 - .../luci-app-p2pblock/po/tr/p2pblock.po | 43 - .../luci-app-p2pblock/po/uk/p2pblock.po | 45 - .../luci-app-p2pblock/po/vi/p2pblock.po | 42 - .../luci-app-p2pblock/po/zh-cn/p2pblock.po | 43 - .../luci-app-p2pblock/po/zh-tw/p2pblock.po | 41 - .../root/etc/uci-defaults/40_luci-p2pblock | 11 - .../applications/luci-app-p910nd/Makefile | 14 - .../luasrc/controller/p910nd.lua | 15 - .../luasrc/model/cbi/p910nd.lua | 49 - .../luci-app-p910nd/po/ca/p910nd.po | 55 - .../luci-app-p910nd/po/cs/p910nd.po | 49 - .../luci-app-p910nd/po/de/p910nd.po | 51 - .../luci-app-p910nd/po/el/p910nd.po | 55 - .../luci-app-p910nd/po/en/p910nd.po | 51 - .../luci-app-p910nd/po/es/p910nd.po | 51 - .../luci-app-p910nd/po/fr/p910nd.po | 56 - .../luci-app-p910nd/po/he/p910nd.po | 53 - .../luci-app-p910nd/po/hu/p910nd.po | 49 - .../luci-app-p910nd/po/it/p910nd.po | 55 - .../luci-app-p910nd/po/ja/p910nd.po | 51 - .../luci-app-p910nd/po/ms/p910nd.po | 43 - .../luci-app-p910nd/po/no/p910nd.po | 47 - .../luci-app-p910nd/po/pl/p910nd.po | 56 - .../luci-app-p910nd/po/pt-br/p910nd.po | 57 - .../luci-app-p910nd/po/pt/p910nd.po | 51 - .../luci-app-p910nd/po/ro/p910nd.po | 47 - .../luci-app-p910nd/po/ru/p910nd.po | 57 - .../luci-app-p910nd/po/sk/p910nd.po | 41 - .../luci-app-p910nd/po/sv/p910nd.po | 44 - .../luci-app-p910nd/po/templates/p910nd.pot | 34 - .../luci-app-p910nd/po/tr/p910nd.po | 46 - .../luci-app-p910nd/po/uk/p910nd.po | 47 - .../luci-app-p910nd/po/vi/p910nd.po | 52 - .../luci-app-p910nd/po/zh-cn/p910nd.po | 49 - .../luci-app-p910nd/po/zh-tw/p910nd.po | 45 - .../root/etc/uci-defaults/40_luci-p910nd | 11 - .../luci-app-pbx-voicemail/COPYING | 674 - .../luci-app-pbx-voicemail/Makefile | 14 - .../luasrc/controller/pbx-voicemail.lua | 24 - .../luasrc/model/cbi/pbx-voicemail.lua | 153 - .../po/ca/pbx-voicemail.po | 100 - .../po/cs/pbx-voicemail.po | 91 - .../po/de/pbx-voicemail.po | 141 - .../po/el/pbx-voicemail.po | 94 - .../po/en/pbx-voicemail.po | 169 - .../po/es/pbx-voicemail.po | 106 - .../po/fr/pbx-voicemail.po | 88 - .../po/he/pbx-voicemail.po | 88 - .../po/hu/pbx-voicemail.po | 88 - .../po/it/pbx-voicemail.po | 110 - .../po/ja/pbx-voicemail.po | 88 - .../po/ms/pbx-voicemail.po | 87 - .../po/no/pbx-voicemail.po | 88 - .../po/pl/pbx-voicemail.po | 111 - .../po/pt-br/pbx-voicemail.po | 175 - .../po/pt/pbx-voicemail.po | 91 - .../po/ro/pbx-voicemail.po | 89 - .../po/ru/pbx-voicemail.po | 174 - .../po/sk/pbx-voicemail.po | 88 - .../po/sv/pbx-voicemail.po | 89 - .../po/templates/pbx-voicemail.pot | 81 - .../po/tr/pbx-voicemail.po | 88 - .../po/uk/pbx-voicemail.po | 89 - .../po/vi/pbx-voicemail.po | 88 - .../po/zh-cn/pbx-voicemail.po | 107 - .../po/zh-tw/pbx-voicemail.po | 107 - .../root/etc/config/pbx-voicemail | 6 - .../root/etc/pbx-voicemail/pbx-move-greeting | 6 - .../pbx-msmtprc-account-auth.TEMPLATE | 2 - .../pbx-msmtprc-account-default.TEMPLATE | 2 - .../pbx-msmtprc-account.TEMPLATE | 5 - .../pbx-msmtprc-defaults.TEMPLATE | 5 - .../root/etc/pbx-voicemail/pbx-send-voicemail | 114 - .../luci/applications/luci-app-pbx/COPYING | 674 - .../applications/luci-app-pbx/CREDITS-SOUNDS | 7 - .../applications/luci-app-pbx/LICENSE-SOUNDS | 312 - .../luci/applications/luci-app-pbx/Makefile | 19 - .../luci-app-pbx/luasrc/controller/pbx.lua | 29 - .../luasrc/model/cbi/pbx-advanced.lua | 293 - .../luasrc/model/cbi/pbx-calls.lua | 424 - .../luasrc/model/cbi/pbx-google.lua | 122 - .../luasrc/model/cbi/pbx-users.lua | 133 - .../luasrc/model/cbi/pbx-voip.lua | 116 - .../luci-app-pbx/luasrc/model/cbi/pbx.lua | 115 - .../applications/luci-app-pbx/po/ca/pbx.po | 509 - .../applications/luci-app-pbx/po/cs/pbx.po | 487 - .../applications/luci-app-pbx/po/de/pbx.po | 699 - .../applications/luci-app-pbx/po/el/pbx.po | 493 - .../applications/luci-app-pbx/po/en/pbx.po | 502 - .../applications/luci-app-pbx/po/es/pbx.po | 677 - .../applications/luci-app-pbx/po/fr/pbx.po | 484 - .../applications/luci-app-pbx/po/he/pbx.po | 484 - .../applications/luci-app-pbx/po/hu/pbx.po | 484 - .../applications/luci-app-pbx/po/it/pbx.po | 487 - .../applications/luci-app-pbx/po/ja/pbx.po | 493 - .../applications/luci-app-pbx/po/ms/pbx.po | 483 - .../applications/luci-app-pbx/po/no/pbx.po | 484 - .../applications/luci-app-pbx/po/pl/pbx.po | 508 - .../applications/luci-app-pbx/po/pt-br/pbx.po | 744 - .../applications/luci-app-pbx/po/pt/pbx.po | 487 - .../applications/luci-app-pbx/po/ro/pbx.po | 488 - .../applications/luci-app-pbx/po/ru/pbx.po | 525 - .../applications/luci-app-pbx/po/sk/pbx.po | 484 - .../applications/luci-app-pbx/po/sv/pbx.po | 506 - .../luci-app-pbx/po/templates/pbx.pot | 477 - .../applications/luci-app-pbx/po/tr/pbx.po | 484 - .../applications/luci-app-pbx/po/uk/pbx.po | 501 - .../applications/luci-app-pbx/po/vi/pbx.po | 484 - .../applications/luci-app-pbx/po/zh-cn/pbx.po | 495 - .../applications/luci-app-pbx/po/zh-tw/pbx.po | 507 - .../luci-app-pbx/root/etc/config/pbx | 1 - .../luci-app-pbx/root/etc/config/pbx-advanced | 5 - .../luci-app-pbx/root/etc/config/pbx-calls | 7 - .../luci-app-pbx/root/etc/config/pbx-google | 0 .../luci-app-pbx/root/etc/config/pbx-users | 1 - .../luci-app-pbx/root/etc/config/pbx-voip | 0 .../luci-app-pbx/root/etc/init.d/pbx-asterisk | 837 - .../etc/pbx-asterisk/asterisk.conf.TEMPLATE | 17 - .../root/etc/pbx-asterisk/delayedcallback | 18 - .../etc/pbx-asterisk/extensions.conf.TEMPLATE | 25 - .../extensions_blacklist.conf.TEMPLATE | 1 - .../extensions_blacklist_footer.conf.TEMPLATE | 2 - .../extensions_blacklist_header.conf.TEMPLATE | 3 - .../extensions_callback-check.conf.TEMPLATE | 1 - ...nsions_callback-check_footer.conf.TEMPLATE | 2 - ...nsions_callback-check_header.conf.TEMPLATE | 3 - .../extensions_callback_gtalk.conf.TEMPLATE | 4 - .../extensions_callback_header.conf.TEMPLATE | 1 - .../extensions_callback_sip.conf.TEMPLATE | 4 - .../extensions_default.conf.TEMPLATE | 11 - .../extensions_default_user.conf.TEMPLATE | 1 - .../extensions_disa-check.conf.TEMPLATE | 1 - ...extensions_disa-check_footer.conf.TEMPLATE | 1 - ...extensions_disa-check_header.conf.TEMPLATE | 2 - .../extensions_disa-nopin.conf.TEMPLATE | 5 - .../extensions_disa.conf.TEMPLATE | 6 - .../extensions_disa_header.conf.TEMPLATE | 1 - ...sions_incoming_context_gtalk.conf.TEMPLATE | 15 - ...ncoming_context_gtalk_header.conf.TEMPLATE | 1 - ...ensions_incoming_context_sip.conf.TEMPLATE | 12 - ...ons_outgoing_dial_local_user.conf.TEMPLATE | 1 - .../extensions_outgoing_gtalk.conf.TEMPLATE | 9 - ...sions_outgoing_pattern_gtalk.conf.TEMPLATE | 2 - ...ensions_outgoing_pattern_sip.conf.TEMPLATE | 1 - .../extensions_outgoing_sip.conf.TEMPLATE | 8 - ...tensions_user_context_footer.conf.TEMPLATE | 2 - ...tensions_user_context_header.conf.TEMPLATE | 3 - ...xtensions_voicemail_disabled.conf.TEMPLATE | 4 - ...extensions_voicemail_enabled.conf.TEMPLATE | 27 - .../root/etc/pbx-asterisk/gtalk.conf.TEMPLATE | 10 - .../pbx-asterisk/indications.conf.TEMPLATE | 733 - .../etc/pbx-asterisk/jabber.conf.TEMPLATE | 4 - .../pbx-asterisk/jabber_users.conf.TEMPLATE | 8 - .../etc/pbx-asterisk/logger.conf.TEMPLATE | 7 - .../etc/pbx-asterisk/manager.conf.TEMPLATE | 7 - .../etc/pbx-asterisk/modules.conf.TEMPLATE | 34 - .../root/etc/pbx-asterisk/rtp.conf.TEMPLATE | 6 - .../root/etc/pbx-asterisk/sip.conf.TEMPLATE | 39 - .../root/etc/pbx-asterisk/sip_peer.TEMPLATE | 13 - .../pbx-asterisk/sip_registration.TEMPLATE | 2 - .../root/etc/pbx-asterisk/sip_user.TEMPLATE | 11 - .../pbx-asterisk/sounds/agent-alreadyon.gsm | Bin 8943 -> 0 bytes .../pbx-asterisk/sounds/agent-incorrect.gsm | Bin 8085 -> 0 bytes .../etc/pbx-asterisk/sounds/agent-pass.gsm | Bin 4752 -> 0 bytes .../pbx-asterisk/sounds/auth-incorrect.gsm | Bin 7458 -> 0 bytes .../etc/pbx-asterisk/sounds/auth-thankyou.gsm | Bin 1353 -> 0 bytes .../root/etc/pbx-asterisk/sounds/beep.gsm | Bin 726 -> 0 bytes .../etc/pbx-asterisk/sounds/vm-goodbye.gsm | Bin 1683 -> 0 bytes .../applications/luci-app-polipo/Makefile | 14 - .../luasrc/controller/polipo.lua | 15 - .../luasrc/model/cbi/polipo.lua | 177 - .../luasrc/view/polipo_status.htm | 18 - .../luci-app-polipo/po/ca/polipo.po | 299 - .../luci-app-polipo/po/cs/polipo.po | 205 - .../luci-app-polipo/po/de/polipo.po | 272 - .../luci-app-polipo/po/el/polipo.po | 207 - .../luci-app-polipo/po/en/polipo.po | 284 - .../luci-app-polipo/po/es/polipo.po | 307 - .../luci-app-polipo/po/fr/polipo.po | 206 - .../luci-app-polipo/po/he/polipo.po | 202 - .../luci-app-polipo/po/hu/polipo.po | 202 - .../luci-app-polipo/po/it/polipo.po | 219 - .../luci-app-polipo/po/ja/polipo.po | 229 - .../luci-app-polipo/po/ms/polipo.po | 201 - .../luci-app-polipo/po/no/polipo.po | 202 - .../luci-app-polipo/po/pl/polipo.po | 231 - .../luci-app-polipo/po/pt-br/polipo.po | 306 - .../luci-app-polipo/po/pt/polipo.po | 305 - .../luci-app-polipo/po/ro/polipo.po | 206 - .../luci-app-polipo/po/ru/polipo.po | 237 - .../luci-app-polipo/po/sk/polipo.po | 202 - .../luci-app-polipo/po/sv/polipo.po | 216 - .../luci-app-polipo/po/templates/polipo.pot | 195 - .../luci-app-polipo/po/tr/polipo.po | 202 - .../luci-app-polipo/po/uk/polipo.po | 206 - .../luci-app-polipo/po/vi/polipo.po | 290 - .../luci-app-polipo/po/zh-cn/polipo.po | 216 - .../luci-app-polipo/po/zh-tw/polipo.po | 216 - .../root/etc/uci-defaults/40_luci-polipo | 11 - .../root/usr/sbin/polipo_purge | 18 - .../applications/luci-app-privoxy/Makefile | 37 - .../luasrc/controller/privoxy.lua | 241 - .../luasrc/model/cbi/privoxy.lua | 918 - .../luasrc/view/privoxy/detail_logview.htm | 56 - .../luasrc/view/privoxy/detail_startstop.htm | 49 - .../luci-app-privoxy/po/de/privoxy.po | 533 - .../luci-app-privoxy/po/pt-br/privoxy.po | 516 - .../luci-app-privoxy/po/sv/privoxy.po | 442 - .../luci-app-privoxy/po/templates/privoxy.pot | 431 - .../luci-app-privoxy/po/zh-cn/privoxy.po | 465 - .../root/etc/uci-defaults/40_luci-privoxy | 12 - .../luci/applications/luci-app-qos/Makefile | 16 - .../luci-app-qos/luasrc/controller/qos.lua | 15 - .../luci-app-qos/luasrc/model/cbi/qos/qos.lua | 81 - .../applications/luci-app-qos/po/ca/qos.po | 122 - .../applications/luci-app-qos/po/cs/qos.po | 114 - .../applications/luci-app-qos/po/de/qos.po | 122 - .../applications/luci-app-qos/po/el/qos.po | 124 - .../applications/luci-app-qos/po/en/qos.po | 91 - .../applications/luci-app-qos/po/es/qos.po | 123 - .../applications/luci-app-qos/po/fr/qos.po | 97 - .../applications/luci-app-qos/po/he/qos.po | 88 - .../applications/luci-app-qos/po/hu/qos.po | 111 - .../applications/luci-app-qos/po/it/qos.po | 108 - .../applications/luci-app-qos/po/ja/qos.po | 93 - .../applications/luci-app-qos/po/ms/qos.po | 87 - .../applications/luci-app-qos/po/no/qos.po | 106 - .../applications/luci-app-qos/po/pl/qos.po | 111 - .../applications/luci-app-qos/po/pt-br/qos.po | 127 - .../applications/luci-app-qos/po/pt/qos.po | 122 - .../applications/luci-app-qos/po/ro/qos.po | 97 - .../applications/luci-app-qos/po/ru/qos.po | 104 - .../applications/luci-app-qos/po/sk/qos.po | 83 - .../applications/luci-app-qos/po/sv/qos.po | 86 - .../luci-app-qos/po/templates/qos.pot | 76 - .../applications/luci-app-qos/po/tr/qos.po | 88 - .../applications/luci-app-qos/po/uk/qos.po | 110 - .../applications/luci-app-qos/po/vi/qos.po | 119 - .../applications/luci-app-qos/po/zh-cn/qos.po | 111 - .../applications/luci-app-qos/po/zh-tw/qos.po | 111 - .../applications/luci-app-radicale/Makefile | 41 - .../luasrc/controller/radicale.lua | 239 - .../luasrc/model/cbi/radicale.lua | 748 - .../luasrc/view/radicale/btn_startstop.htm | 49 - .../luasrc/view/radicale/tabmap_nsections.htm | 49 - .../luci-app-radicale/po/de/radicale.po | 459 - .../luci-app-radicale/po/pt-br/radicale.po | 469 - .../luci-app-radicale/po/sv/radicale.po | 425 - .../po/templates/radicale.pot | 399 - .../root/etc/uci-defaults/40_luci-radicale | 12 - .../luci/applications/luci-app-radvd/Makefile | 14 - .../luasrc/controller/radvd.lua | 17 - .../luci-app-radvd/luasrc/model/cbi/radvd.lua | 324 - .../luasrc/model/cbi/radvd/dnssl.lua | 88 - .../luasrc/model/cbi/radvd/interface.lua | 265 - .../luasrc/model/cbi/radvd/prefix.lua | 128 - .../luasrc/model/cbi/radvd/rdnss.lua | 89 - .../luasrc/model/cbi/radvd/route.lua | 97 - .../luci-app-radvd/po/ca/radvd.po | 382 - .../luci-app-radvd/po/cs/radvd.po | 389 - .../luci-app-radvd/po/de/radvd.po | 483 - .../luci-app-radvd/po/el/radvd.po | 370 - .../luci-app-radvd/po/en/radvd.po | 368 - .../luci-app-radvd/po/es/radvd.po | 412 - .../luci-app-radvd/po/fr/radvd.po | 472 - .../luci-app-radvd/po/he/radvd.po | 367 - .../luci-app-radvd/po/hu/radvd.po | 372 - .../luci-app-radvd/po/it/radvd.po | 374 - .../luci-app-radvd/po/ja/radvd.po | 378 - .../luci-app-radvd/po/ms/radvd.po | 368 - .../luci-app-radvd/po/no/radvd.po | 435 - .../luci-app-radvd/po/pl/radvd.po | 377 - .../luci-app-radvd/po/pt-br/radvd.po | 469 - .../luci-app-radvd/po/pt/radvd.po | 368 - .../luci-app-radvd/po/ro/radvd.po | 384 - .../luci-app-radvd/po/ru/radvd.po | 473 - .../luci-app-radvd/po/sk/radvd.po | 367 - .../luci-app-radvd/po/sv/radvd.po | 370 - .../luci-app-radvd/po/templates/radvd.pot | 360 - .../luci-app-radvd/po/tr/radvd.po | 367 - .../luci-app-radvd/po/uk/radvd.po | 381 - .../luci-app-radvd/po/vi/radvd.po | 368 - .../luci-app-radvd/po/zh-cn/radvd.po | 399 - .../luci-app-radvd/po/zh-tw/radvd.po | 399 - .../root/etc/uci-defaults/40_luci-radvd | 11 - .../luci-app-rp-pppoe-server/Makefile | 15 - .../luasrc/controller/rp-pppoe-server.lua | 13 - .../luasrc/model/cbi/rp-pppoe-server.lua | 72 - .../luci/applications/luci-app-samba/Makefile | 14 - .../luasrc/controller/samba.lua | 16 - .../luci-app-samba/luasrc/model/cbi/samba.lua | 80 - .../luci-app-samba/po/ca/samba.po | 103 - .../luci-app-samba/po/cs/samba.po | 91 - .../luci-app-samba/po/de/samba.po | 95 - .../luci-app-samba/po/el/samba.po | 86 - .../luci-app-samba/po/en/samba.po | 90 - .../luci-app-samba/po/es/samba.po | 100 - .../luci-app-samba/po/fr/samba.po | 92 - .../luci-app-samba/po/he/samba.po | 81 - .../luci-app-samba/po/hu/samba.po | 92 - .../luci-app-samba/po/it/samba.po | 95 - .../luci-app-samba/po/ja/samba.po | 91 - .../luci-app-samba/po/ms/samba.po | 80 - .../luci-app-samba/po/no/samba.po | 80 - .../luci-app-samba/po/pl/samba.po | 91 - .../luci-app-samba/po/pt-br/samba.po | 101 - .../luci-app-samba/po/pt/samba.po | 101 - .../luci-app-samba/po/ro/samba.po | 90 - .../luci-app-samba/po/ru/samba.po | 93 - .../luci-app-samba/po/sk/samba.po | 81 - .../luci-app-samba/po/sv/samba.po | 83 - .../luci-app-samba/po/templates/samba.pot | 74 - .../luci-app-samba/po/tr/samba.po | 81 - .../luci-app-samba/po/uk/samba.po | 92 - .../luci-app-samba/po/vi/samba.po | 104 - .../luci-app-samba/po/zh-cn/samba.po | 94 - .../luci-app-samba/po/zh-tw/samba.po | 94 - .../luci-app-shadowsocks-libev/Makefile | 16 - .../luasrc/controller/shadowsocks-libev.lua | 33 - .../shadowsocks-libev/instance-details.lua | 53 - .../model/cbi/shadowsocks-libev/instances.lua | 104 - .../model/cbi/shadowsocks-libev/rules.lua | 109 - .../model/cbi/shadowsocks-libev/servers.lua | 31 - .../luasrc/model/shadowsocks-libev.lua | 264 - .../view/shadowsocks-libev/add_instance.htm | 45 - .../uci-defaults/40_luci-shadowsocks-libev | 11 - .../applications/luci-app-shairplay/Makefile | 14 - .../luasrc/controller/shairplay.lua | 14 - .../luasrc/model/cbi/shairplay.lua | 65 - .../luci-app-shairplay/po/ja/shairplay.po | 54 - .../luci-app-shairplay/po/pt-br/shairplay.po | 54 - .../po/templates/shairplay.pot | 40 - .../root/etc/uci-defaults/40_luci-shairplay | 12 - .../applications/luci-app-shairport/Makefile | 14 - .../luasrc/controller/shairport.lua | 14 - .../luasrc/model/cbi/shairport.lua | 161 - .../root/etc/uci-defaults/40_luci-shairport | 12 - .../luci-app-shellinabox/Makefile | 54 - .../luci-app-shellinabox/files/terminal.png | Bin 13573 -> 0 bytes .../luasrc/controller/shellinabox.lua | 4 - .../luasrc/model/cbi/shellinabox/cbi_tab.lua | 4 - .../luasrc/view/shellinabox/view_tab.htm | 3 - .../applications/luci-app-siitwizard/Makefile | 14 - .../luasrc/controller/siitwizard.lua | 9 - .../luasrc/model/cbi/siitwizard.lua | 373 - .../luci-app-siitwizard/root/etc/config/siit | 14 - .../luci-app-simple-adblock/Makefile | 16 - .../luasrc/controller/simpleadblock.lua | 7 - .../luasrc/model/cbi/simpleadblock.lua | 79 - .../po/ja/simple-adblock.po | 93 - .../po/pt-br/simple-adblock.po | 86 - .../po/pt/simple-adblock.po | 86 - .../po/sv/simple-adblock.po | 80 - .../po/templates/simple-adblock.pot | 80 - .../etc/uci-defaults/40_luci-simple-adblock | 10 - .../applications/luci-app-splash/Makefile | 20 - .../luci/applications/luci-app-splash/README | 5 - .../htdocs/cgi-bin/splash/splash.sh | 33 - .../htdocs/luci/splash/index.html | 10 - .../luasrc/controller/splash/splash.lua | 163 - .../luasrc/model/cbi/splash/splash.lua | 79 - .../luasrc/model/cbi/splash/splashtext.lua | 57 - .../luasrc/view/admin_status/splash.htm | 288 - .../luasrc/view/splash/blocked.htm | 20 - .../luasrc/view/splash/splash.htm | 134 - .../luasrc/view/splash_splash/index.htm | 8 - .../luasrc/view/splash_splash/splash.htm | 17 - .../luci-app-splash/po/ca/splash.po | 330 - .../luci-app-splash/po/cs/splash.po | 340 - .../luci-app-splash/po/de/splash.po | 383 - .../luci-app-splash/po/el/splash.po | 307 - .../luci-app-splash/po/en/splash.po | 292 - .../luci-app-splash/po/es/splash.po | 376 - .../luci-app-splash/po/fr/splash.po | 337 - .../luci-app-splash/po/he/splash.po | 325 - .../luci-app-splash/po/hu/splash.po | 303 - .../luci-app-splash/po/it/splash.po | 361 - .../luci-app-splash/po/ja/splash.po | 292 - .../luci-app-splash/po/ms/splash.po | 292 - .../luci-app-splash/po/no/splash.po | 292 - .../luci-app-splash/po/pl/splash.po | 385 - .../luci-app-splash/po/pt-br/splash.po | 402 - .../luci-app-splash/po/pt/splash.po | 309 - .../luci-app-splash/po/ro/splash.po | 292 - .../luci-app-splash/po/ru/splash.po | 362 - .../luci-app-splash/po/sk/splash.po | 303 - .../luci-app-splash/po/sv/splash.po | 320 - .../luci-app-splash/po/templates/splash.pot | 295 - .../luci-app-splash/po/tr/splash.po | 303 - .../luci-app-splash/po/uk/splash.po | 304 - .../luci-app-splash/po/vi/splash.po | 292 - .../luci-app-splash/po/zh-cn/splash.po | 321 - .../luci-app-splash/po/zh-tw/splash.po | 302 - .../root/etc/config/luci_splash | 2 - .../root/etc/config/luci_splash_leases | 1 - .../root/etc/hotplug.d/iface/25-splash | 17 - .../root/etc/init.d/luci_splash | 362 - .../luci-app-splash/root/usr/sbin/luci-splash | 753 - .../luci/applications/luci-app-squid/Makefile | 18 - .../luasrc/controller/squid.lua | 21 - .../luci-app-squid/luasrc/model/cbi/squid.lua | 67 - .../applications/luci-app-statistics/Makefile | 21 - .../luci_statistics/luci_statistics.lua | 209 - .../model/cbi/luci_statistics/apcups.lua | 28 - .../model/cbi/luci_statistics/collectd.lua | 62 - .../model/cbi/luci_statistics/conntrack.lua | 21 - .../cbi/luci_statistics/contextswitch.lua | 14 - .../luasrc/model/cbi/luci_statistics/cpu.lua | 15 - .../model/cbi/luci_statistics/cpufreq.lua | 14 - .../luasrc/model/cbi/luci_statistics/csv.lua | 29 - .../luasrc/model/cbi/luci_statistics/df.lua | 41 - .../luasrc/model/cbi/luci_statistics/disk.lua | 29 - .../luasrc/model/cbi/luci_statistics/dns.lua | 36 - .../model/cbi/luci_statistics/email.lua | 48 - .../model/cbi/luci_statistics/entropy.lua | 14 - .../luasrc/model/cbi/luci_statistics/exec.lua | 77 - .../model/cbi/luci_statistics/interface.lua | 35 - .../model/cbi/luci_statistics/iptables.lua | 120 - .../luasrc/model/cbi/luci_statistics/irq.lua | 30 - .../model/cbi/luci_statistics/iwinfo.lua | 26 - .../luasrc/model/cbi/luci_statistics/load.lua | 17 - .../model/cbi/luci_statistics/memory.lua | 21 - .../model/cbi/luci_statistics/netlink.lua | 83 - .../model/cbi/luci_statistics/network.lua | 85 - .../luasrc/model/cbi/luci_statistics/nut.lua | 17 - .../model/cbi/luci_statistics/olsrd.lua | 45 - .../model/cbi/luci_statistics/openvpn.lua | 56 - .../luasrc/model/cbi/luci_statistics/ping.lua | 35 - .../model/cbi/luci_statistics/processes.lua | 24 - .../model/cbi/luci_statistics/rrdtool.lua | 107 - .../model/cbi/luci_statistics/sensors.lua | 125 - .../cbi/luci_statistics/splash_leases.lua | 14 - .../model/cbi/luci_statistics/tcpconns.lua | 33 - .../model/cbi/luci_statistics/thermal.lua | 29 - .../model/cbi/luci_statistics/unixsock.lua | 37 - .../model/cbi/luci_statistics/uptime.lua | 22 - .../luasrc/statistics/datatree.lua | 205 - .../luasrc/statistics/i18n.lua | 80 - .../luasrc/statistics/rrdtool.lua | 576 - .../luasrc/statistics/rrdtool/colors.lua | 61 - .../statistics/rrdtool/definitions/apcups.lua | 117 - .../rrdtool/definitions/conntrack.lua | 27 - .../rrdtool/definitions/contextswitch.lua | 23 - .../statistics/rrdtool/definitions/cpu.lua | 31 - .../rrdtool/definitions/cpufreq.lua | 25 - .../statistics/rrdtool/definitions/df.lua | 39 - .../statistics/rrdtool/definitions/disk.lua | 62 - .../statistics/rrdtool/definitions/dns.lua | 71 - .../rrdtool/definitions/entropy.lua | 19 - .../rrdtool/definitions/interface.lua | 109 - .../rrdtool/definitions/iptables.lua | 41 - .../statistics/rrdtool/definitions/irq.lua | 18 - .../statistics/rrdtool/definitions/iwinfo.lua | 92 - .../statistics/rrdtool/definitions/load.lua | 24 - .../statistics/rrdtool/definitions/memory.lua | 35 - .../rrdtool/definitions/netlink.lua | 211 - .../statistics/rrdtool/definitions/nut.lua | 117 - .../statistics/rrdtool/definitions/olsrd.lua | 136 - .../rrdtool/definitions/openvpn.lua | 48 - .../statistics/rrdtool/definitions/ping.lua | 28 - .../rrdtool/definitions/processes.lua | 117 - .../rrdtool/definitions/sensors.lua | 24 - .../rrdtool/definitions/splash_leases.lua | 27 - .../rrdtool/definitions/tcpconns.lua | 25 - .../rrdtool/definitions/thermal.lua | 20 - .../statistics/rrdtool/definitions/uptime.lua | 27 - .../luasrc/view/admin_statistics/index.htm | 17 - .../luasrc/view/public_statistics/graph.htm | 38 - .../luci-app-statistics/po/ca/rrdtool.po | 359 - .../luci-app-statistics/po/ca/statistics.po | 830 - .../luci-app-statistics/po/cs/rrdtool.po | 359 - .../luci-app-statistics/po/cs/statistics.po | 844 - .../luci-app-statistics/po/de/rrdtool.po | 357 - .../luci-app-statistics/po/de/statistics.po | 866 - .../luci-app-statistics/po/el/rrdtool.po | 358 - .../luci-app-statistics/po/el/statistics.po | 762 - .../luci-app-statistics/po/en/rrdtool.po | 358 - .../luci-app-statistics/po/en/statistics.po | 816 - .../luci-app-statistics/po/es/rrdtool.po | 360 - .../luci-app-statistics/po/es/statistics.po | 876 - .../luci-app-statistics/po/fr/rrdtool.po | 358 - .../luci-app-statistics/po/fr/statistics.po | 824 - .../luci-app-statistics/po/he/rrdtool.po | 356 - .../luci-app-statistics/po/he/statistics.po | 741 - .../luci-app-statistics/po/hu/rrdtool.po | 359 - .../luci-app-statistics/po/hu/statistics.po | 848 - .../luci-app-statistics/po/it/rrdtool.po | 359 - .../luci-app-statistics/po/it/statistics.po | 751 - .../luci-app-statistics/po/ja/rrdtool.po | 358 - .../luci-app-statistics/po/ja/statistics.po | 816 - .../luci-app-statistics/po/ms/rrdtool.po | 355 - .../luci-app-statistics/po/ms/statistics.po | 738 - .../luci-app-statistics/po/no/rrdtool.po | 354 - .../luci-app-statistics/po/no/statistics.po | 835 - .../luci-app-statistics/po/pl/rrdtool.po | 360 - .../luci-app-statistics/po/pl/statistics.po | 854 - .../luci-app-statistics/po/pt-br/rrdtool.po | 359 - .../po/pt-br/statistics.po | 885 - .../luci-app-statistics/po/pt/rrdtool.po | 359 - .../luci-app-statistics/po/pt/statistics.po | 824 - .../luci-app-statistics/po/ro/rrdtool.po | 360 - .../luci-app-statistics/po/ro/statistics.po | 753 - .../luci-app-statistics/po/ru/rrdtool.po | 360 - .../luci-app-statistics/po/ru/statistics.po | 853 - .../luci-app-statistics/po/sk/rrdtool.po | 356 - .../luci-app-statistics/po/sk/statistics.po | 736 - .../luci-app-statistics/po/sv/rrdtool.po | 357 - .../luci-app-statistics/po/sv/statistics.po | 743 - .../po/templates/rrdtool.pot | 349 - .../po/templates/statistics.pot | 729 - .../luci-app-statistics/po/tr/rrdtool.po | 356 - .../luci-app-statistics/po/tr/statistics.po | 737 - .../luci-app-statistics/po/uk/rrdtool.po | 357 - .../luci-app-statistics/po/uk/statistics.po | 742 - .../luci-app-statistics/po/vi/rrdtool.po | 524 - .../luci-app-statistics/po/vi/statistics.po | 820 - .../luci-app-statistics/po/zh-cn/rrdtool.po | 362 - .../po/zh-cn/statistics.po | 787 - .../luci-app-statistics/po/zh-tw/rrdtool.po | 362 - .../po/zh-tw/statistics.po | 787 - .../root/etc/config/luci_statistics | 172 - .../root/etc/init.d/luci_statistics | 25 - .../root/etc/uci-defaults/40_luci-statistics | 16 - .../root/usr/bin/stat-genconfig | 476 - .../applications/luci-app-tinyproxy/Makefile | 14 - .../luasrc/controller/tinyproxy.lua | 15 - .../luasrc/model/cbi/tinyproxy.lua | 240 - .../luasrc/view/tinyproxy_status.htm | 50 - .../luci-app-tinyproxy/po/ca/tinyproxy.po | 339 - .../luci-app-tinyproxy/po/cs/tinyproxy.po | 258 - .../luci-app-tinyproxy/po/de/tinyproxy.po | 373 - .../luci-app-tinyproxy/po/el/tinyproxy.po | 283 - .../luci-app-tinyproxy/po/en/tinyproxy.po | 331 - .../luci-app-tinyproxy/po/es/tinyproxy.po | 354 - .../luci-app-tinyproxy/po/fr/tinyproxy.po | 372 - .../luci-app-tinyproxy/po/he/tinyproxy.po | 255 - .../luci-app-tinyproxy/po/hu/tinyproxy.po | 255 - .../luci-app-tinyproxy/po/it/tinyproxy.po | 265 - .../luci-app-tinyproxy/po/ja/tinyproxy.po | 280 - .../luci-app-tinyproxy/po/ms/tinyproxy.po | 254 - .../luci-app-tinyproxy/po/no/tinyproxy.po | 255 - .../luci-app-tinyproxy/po/pl/tinyproxy.po | 292 - .../luci-app-tinyproxy/po/pt-br/tinyproxy.po | 367 - .../luci-app-tinyproxy/po/pt/tinyproxy.po | 334 - .../luci-app-tinyproxy/po/ro/tinyproxy.po | 256 - .../luci-app-tinyproxy/po/ru/tinyproxy.po | 294 - .../luci-app-tinyproxy/po/sk/tinyproxy.po | 255 - .../luci-app-tinyproxy/po/sv/tinyproxy.po | 275 - .../po/templates/tinyproxy.pot | 248 - .../luci-app-tinyproxy/po/tr/tinyproxy.po | 255 - .../luci-app-tinyproxy/po/uk/tinyproxy.po | 256 - .../luci-app-tinyproxy/po/vi/tinyproxy.po | 332 - .../luci-app-tinyproxy/po/zh-cn/tinyproxy.po | 262 - .../luci-app-tinyproxy/po/zh-tw/tinyproxy.po | 254 - .../luci-app-transmission/Makefile | 14 - .../luasrc/controller/transmission.lua | 14 - .../luasrc/model/cbi/transmission.lua | 220 - .../po/ca/transmission.po | 297 - .../po/cs/transmission.po | 295 - .../po/de/transmission.po | 300 - .../po/el/transmission.po | 280 - .../po/en/transmission.po | 280 - .../po/es/transmission.po | 299 - .../po/fr/transmission.po | 280 - .../po/he/transmission.po | 280 - .../po/hu/transmission.po | 300 - .../po/it/transmission.po | 295 - .../po/ja/transmission.po | 295 - .../po/ms/transmission.po | 280 - .../po/no/transmission.po | 298 - .../po/pl/transmission.po | 302 - .../po/pt-br/transmission.po | 300 - .../po/pt/transmission.po | 297 - .../po/ro/transmission.po | 296 - .../po/ru/transmission.po | 306 - .../po/sk/transmission.po | 290 - .../po/sv/transmission.po | 293 - .../po/templates/transmission.pot | 283 - .../po/tr/transmission.po | 290 - .../po/uk/transmission.po | 296 - .../po/vi/transmission.po | 280 - .../po/zh-cn/transmission.po | 300 - .../po/zh-tw/transmission.po | 300 - .../etc/uci-defaults/40_luci-transmission | 11 - .../applications/luci-app-travelmate/Makefile | 13 - .../luasrc/controller/travelmate.lua | 35 - .../model/cbi/travelmate/cfg_firewall_tab.lua | 37 - .../model/cbi/travelmate/cfg_network_tab.lua | 37 - .../model/cbi/travelmate/cfg_wireless_tab.lua | 37 - .../cbi/travelmate/configuration_tab.lua | 39 - .../model/cbi/travelmate/overview_tab.lua | 189 - .../luasrc/model/cbi/travelmate/wifi_add.lua | 70 - .../model/cbi/travelmate/wifi_delete.lua | 13 - .../luasrc/model/cbi/travelmate/wifi_edit.lua | 56 - .../model/cbi/travelmate/wifi_order.lua | 36 - .../luasrc/view/travelmate/config_css.htm | 10 - .../luasrc/view/travelmate/logread.htm | 15 - .../luasrc/view/travelmate/runtime.htm | 10 - .../luasrc/view/travelmate/stations.htm | 77 - .../luasrc/view/travelmate/wifi_scan.htm | 90 - .../luci-app-travelmate/po/ja/travelmate.po | 327 - .../po/pt-br/travelmate.po | 360 - .../po/templates/travelmate.pot | 288 - .../root/etc/uci-defaults/40_luci-travelmate | 11 - .../luci/applications/luci-app-udpxy/Makefile | 14 - .../luasrc/controller/udpxy.lua | 14 - .../luci-app-udpxy/luasrc/model/cbi/udpxy.lua | 63 - .../root/etc/uci-defaults/40_luci-udpxy | 12 - .../applications/luci-app-uhttpd/Makefile | 21 - .../luasrc/controller/uhttpd/uhttpd.lua | 17 - .../luasrc/model/cbi/uhttpd/uhttpd.lua | 230 - .../luci-app-uhttpd/po/ja/uhttpd.po | 213 - .../luci-app-uhttpd/po/pt-br/uhttpd.po | 208 - .../luci-app-uhttpd/po/templates/uhttpd.pot | 186 - .../applications/luci-app-unbound/Makefile | 14 - .../luasrc/controller/unbound.lua | 151 - .../luasrc/model/cbi/unbound/configure.lua | 273 - .../luasrc/model/cbi/unbound/extended.lua | 30 - .../luasrc/model/cbi/unbound/manual.lua | 30 - .../luasrc/model/cbi/unbound/server.lua | 30 - .../luasrc/view/unbound/css-editing.htm | 8 - .../luasrc/view/unbound/show-empty.htm | 5 - .../luasrc/view/unbound/show-textbox.htm | 8 - .../root/etc/uci-defaults/60_luci-unbound | 12 - .../luci/applications/luci-app-upnp/Makefile | 14 - .../luci-app-upnp/luasrc/controller/upnp.lua | 87 - .../luasrc/model/cbi/upnp/upnp.lua | 103 - .../luasrc/view/admin_status/index/upnp.htm | 1 - .../luci-app-upnp/luasrc/view/upnp_status.htm | 69 - .../applications/luci-app-upnp/po/ca/upnp.po | 173 - .../applications/luci-app-upnp/po/cs/upnp.po | 157 - .../applications/luci-app-upnp/po/de/upnp.po | 177 - .../applications/luci-app-upnp/po/el/upnp.po | 143 - .../applications/luci-app-upnp/po/en/upnp.po | 160 - .../applications/luci-app-upnp/po/es/upnp.po | 171 - .../applications/luci-app-upnp/po/fr/upnp.po | 164 - .../applications/luci-app-upnp/po/he/upnp.po | 139 - .../applications/luci-app-upnp/po/hu/upnp.po | 161 - .../applications/luci-app-upnp/po/it/upnp.po | 161 - .../applications/luci-app-upnp/po/ja/upnp.po | 148 - .../applications/luci-app-upnp/po/ms/upnp.po | 138 - .../applications/luci-app-upnp/po/no/upnp.po | 152 - .../applications/luci-app-upnp/po/pl/upnp.po | 159 - .../luci-app-upnp/po/pt-br/upnp.po | 172 - .../applications/luci-app-upnp/po/pt/upnp.po | 160 - .../applications/luci-app-upnp/po/ro/upnp.po | 159 - .../applications/luci-app-upnp/po/ru/upnp.po | 164 - .../applications/luci-app-upnp/po/sk/upnp.po | 139 - .../applications/luci-app-upnp/po/sv/upnp.po | 147 - .../luci-app-upnp/po/templates/upnp.pot | 132 - .../applications/luci-app-upnp/po/tr/upnp.po | 139 - .../applications/luci-app-upnp/po/uk/upnp.po | 161 - .../applications/luci-app-upnp/po/vi/upnp.po | 161 - .../luci-app-upnp/po/zh-cn/upnp.po | 155 - .../luci-app-upnp/po/zh-tw/upnp.po | 153 - .../root/etc/uci-defaults/40_luci-miniupnp | 11 - .../applications/luci-app-ushare/Makefile | 14 - .../luasrc/controller/ushare.lua | 15 - .../luasrc/model/cbi/ushare.lua | 30 - .../luci-app-ushare/po/ca/ushare.po | 55 - .../luci-app-ushare/po/cs/ushare.po | 53 - .../luci-app-ushare/po/de/ushare.po | 53 - .../luci-app-ushare/po/el/ushare.po | 48 - .../luci-app-ushare/po/en/ushare.po | 49 - .../luci-app-ushare/po/es/ushare.po | 53 - .../luci-app-ushare/po/fr/ushare.po | 50 - .../luci-app-ushare/po/he/ushare.po | 52 - .../luci-app-ushare/po/hu/ushare.po | 53 - .../luci-app-ushare/po/it/ushare.po | 53 - .../luci-app-ushare/po/ja/ushare.po | 52 - .../luci-app-ushare/po/ms/ushare.po | 46 - .../luci-app-ushare/po/no/ushare.po | 44 - .../luci-app-ushare/po/pl/ushare.po | 54 - .../luci-app-ushare/po/pt-br/ushare.po | 53 - .../luci-app-ushare/po/pt/ushare.po | 53 - .../luci-app-ushare/po/ro/ushare.po | 51 - .../luci-app-ushare/po/ru/ushare.po | 54 - .../luci-app-ushare/po/sk/ushare.po | 45 - .../luci-app-ushare/po/sv/ushare.po | 168 - .../luci-app-ushare/po/templates/ushare.pot | 38 - .../luci-app-ushare/po/tr/ushare.po | 50 - .../luci-app-ushare/po/uk/ushare.po | 53 - .../luci-app-ushare/po/vi/ushare.po | 50 - .../luci-app-ushare/po/zh-cn/ushare.po | 52 - .../luci-app-ushare/po/zh-tw/ushare.po | 48 - .../root/etc/uci-defaults/40_luci-ushare | 11 - .../applications/luci-app-vnstat/Makefile | 14 - .../luasrc/controller/vnstat.lua | 11 - .../luasrc/model/cbi/vnstat.lua | 82 - .../luci-app-vnstat/luasrc/view/vnstat.htm | 101 - .../luci-app-vnstat/po/ca/vnstat.po | 65 - .../luci-app-vnstat/po/cs/vnstat.po | 64 - .../luci-app-vnstat/po/de/vnstat.po | 68 - .../luci-app-vnstat/po/el/vnstat.po | 59 - .../luci-app-vnstat/po/en/vnstat.po | 59 - .../luci-app-vnstat/po/es/vnstat.po | 68 - .../luci-app-vnstat/po/fr/vnstat.po | 68 - .../luci-app-vnstat/po/he/vnstat.po | 58 - .../luci-app-vnstat/po/hu/vnstat.po | 65 - .../luci-app-vnstat/po/it/vnstat.po | 68 - .../luci-app-vnstat/po/ja/vnstat.po | 68 - .../luci-app-vnstat/po/ms/vnstat.po | 59 - .../luci-app-vnstat/po/no/vnstat.po | 58 - .../luci-app-vnstat/po/pl/vnstat.po | 69 - .../luci-app-vnstat/po/pt-br/vnstat.po | 68 - .../luci-app-vnstat/po/pt/vnstat.po | 65 - .../luci-app-vnstat/po/ro/vnstat.po | 69 - .../luci-app-vnstat/po/ru/vnstat.po | 71 - .../luci-app-vnstat/po/sk/vnstat.po | 58 - .../luci-app-vnstat/po/sv/vnstat.po | 61 - .../luci-app-vnstat/po/templates/vnstat.pot | 51 - .../luci-app-vnstat/po/tr/vnstat.po | 58 - .../luci-app-vnstat/po/uk/vnstat.po | 67 - .../luci-app-vnstat/po/vi/vnstat.po | 59 - .../luci-app-vnstat/po/zh-cn/vnstat.po | 61 - .../luci-app-vnstat/po/zh-tw/vnstat.po | 61 - .../root/etc/uci-defaults/40_luci-vnstat | 11 - .../applications/luci-app-voice-core/Makefile | 14 - .../luasrc/controller/luci_voice.lua | 21 - .../luasrc/view/luci_voice/index.htm | 16 - .../luasrc/view/luci_voice/phone_index.htm | 12 - .../luci-app-voice-core/po/ca/voice_core.po | 18 - .../luci-app-voice-core/po/cs/voice_core.po | 21 - .../luci-app-voice-core/po/de/voice_core.po | 18 - .../luci-app-voice-core/po/el/voice_core.po | 18 - .../luci-app-voice-core/po/en/voice_core.po | 23 - .../luci-app-voice-core/po/es/voice_core.po | 21 - .../luci-app-voice-core/po/fr/voice_core.po | 21 - .../luci-app-voice-core/po/he/voice_core.po | 22 - .../luci-app-voice-core/po/hu/voice_core.po | 21 - .../luci-app-voice-core/po/it/voice_core.po | 21 - .../luci-app-voice-core/po/ja/voice_core.po | 18 - .../luci-app-voice-core/po/ms/voice_core.po | 14 - .../luci-app-voice-core/po/no/voice_core.po | 14 - .../luci-app-voice-core/po/pl/voice_core.po | 22 - .../po/pt-br/voice_core.po | 21 - .../luci-app-voice-core/po/pt/voice_core.po | 18 - .../luci-app-voice-core/po/ro/voice_core.po | 22 - .../luci-app-voice-core/po/ru/voice_core.po | 24 - .../luci-app-voice-core/po/sk/voice_core.po | 15 - .../luci-app-voice-core/po/sv/voice_core.po | 18 - .../po/templates/voice_core.pot | 8 - .../luci-app-voice-core/po/tr/voice_core.po | 18 - .../luci-app-voice-core/po/uk/voice_core.po | 22 - .../luci-app-voice-core/po/vi/voice_core.po | 15 - .../po/zh-cn/voice_core.po | 18 - .../po/zh-tw/voice_core.po | 18 - .../applications/luci-app-voice-diag/Makefile | 14 - .../controller/luci_voice/luci_voice_diag.lua | 12 - .../luasrc/view/luci_voice/diag_index.htm | 10 - .../luci-app-voice-diag/po/ca/voice_diag.po | 30 - .../luci-app-voice-diag/po/cs/voice_diag.po | 29 - .../luci-app-voice-diag/po/de/voice_diag.po | 29 - .../luci-app-voice-diag/po/el/voice_diag.po | 33 - .../luci-app-voice-diag/po/en/voice_diag.po | 34 - .../luci-app-voice-diag/po/es/voice_diag.po | 33 - .../luci-app-voice-diag/po/fr/voice_diag.po | 33 - .../luci-app-voice-diag/po/he/voice_diag.po | 22 - .../luci-app-voice-diag/po/hu/voice_diag.po | 30 - .../luci-app-voice-diag/po/it/voice_diag.po | 30 - .../luci-app-voice-diag/po/ja/voice_diag.po | 22 - .../luci-app-voice-diag/po/ms/voice_diag.po | 21 - .../luci-app-voice-diag/po/no/voice_diag.po | 25 - .../luci-app-voice-diag/po/pl/voice_diag.po | 33 - .../po/pt-br/voice_diag.po | 32 - .../luci-app-voice-diag/po/pt/voice_diag.po | 29 - .../luci-app-voice-diag/po/ro/voice_diag.po | 33 - .../luci-app-voice-diag/po/ru/voice_diag.po | 33 - .../luci-app-voice-diag/po/sk/voice_diag.po | 22 - .../luci-app-voice-diag/po/sv/voice_diag.po | 27 - .../po/templates/voice_diag.pot | 15 - .../luci-app-voice-diag/po/tr/voice_diag.po | 22 - .../luci-app-voice-diag/po/uk/voice_diag.po | 33 - .../luci-app-voice-diag/po/vi/voice_diag.po | 22 - .../po/zh-cn/voice_diag.po | 25 - .../po/zh-tw/voice_diag.po | 25 - .../applications/luci-app-vpnbypass/Makefile | 16 - .../luasrc/controller/vpnbypass.lua | 7 - .../luasrc/model/cbi/vpnbypass.lua | 61 - .../luci-app-vpnbypass/po/pt-br/vpnbypass.po | 90 - .../po/templates/vpnbypass.pot | 51 - .../luci-app-vpnbypass/po/zh-cn/vpnbypass.po | 61 - .../luci-app-vpnbypass/po/zh-tw/vpnbypass.po | 61 - .../root/etc/uci-defaults/40_luci-vpnbypass | 11 - .../applications/luci-app-watchcat/Makefile | 14 - .../luasrc/controller/watchcat.lua | 11 - .../luasrc/model/cbi/watchcat/watchcat.lua | 53 - .../luci-app-watchcat/po/ca/watchcat.po | 71 - .../luci-app-watchcat/po/cs/watchcat.po | 72 - .../luci-app-watchcat/po/de/watchcat.po | 72 - .../luci-app-watchcat/po/el/watchcat.po | 53 - .../luci-app-watchcat/po/en/watchcat.po | 66 - .../luci-app-watchcat/po/es/watchcat.po | 68 - .../luci-app-watchcat/po/fr/watchcat.po | 53 - .../luci-app-watchcat/po/he/watchcat.po | 53 - .../luci-app-watchcat/po/hu/watchcat.po | 64 - .../luci-app-watchcat/po/it/watchcat.po | 72 - .../luci-app-watchcat/po/ja/watchcat.po | 70 - .../luci-app-watchcat/po/ms/watchcat.po | 52 - .../luci-app-watchcat/po/no/watchcat.po | 53 - .../luci-app-watchcat/po/pl/watchcat.po | 71 - .../luci-app-watchcat/po/pt-br/watchcat.po | 70 - .../luci-app-watchcat/po/pt/watchcat.po | 56 - .../luci-app-watchcat/po/ro/watchcat.po | 57 - .../luci-app-watchcat/po/ru/watchcat.po | 74 - .../luci-app-watchcat/po/sk/watchcat.po | 53 - .../luci-app-watchcat/po/sv/watchcat.po | 56 - .../po/templates/watchcat.pot | 46 - .../luci-app-watchcat/po/tr/watchcat.po | 53 - .../luci-app-watchcat/po/uk/watchcat.po | 61 - .../luci-app-watchcat/po/vi/watchcat.po | 53 - .../luci-app-watchcat/po/zh-cn/watchcat.po | 65 - .../luci-app-watchcat/po/zh-tw/watchcat.po | 66 - .../root/etc/uci-defaults/40_luci-watchcat | 10 - .../luci-app-wifischedule/Makefile | 22 - .../luci-app-wifischedule/README.md | 86 - .../controller/wifischedule/wifi_schedule.lua | 42 - .../model/cbi/wifischedule/wifi_schedule.lua | 249 - .../luasrc/view/wifischedule/file_viewer.htm | 22 - .../po/it/wifischedule.po | 101 - .../po/ja/wifischedule.po | 112 - .../po/pt-br/wifischedule.po | 114 - .../po/sv/wifischedule.po | 101 - .../po/templates/wifischedule.pot | 101 - .../po/zh-cn/wifischedule.po | 101 - .../applications/luci-app-wireguard/Makefile | 17 - .../luasrc/controller/wireguard.lua | 8 - .../luasrc/view/wireguard.htm | 209 - .../luci-app-wireguard/po/ja/wireguard.po | 74 - .../luci-app-wireguard/po/pt-br/wireguard.po | 73 - .../luci-app-wireguard/po/sv/wireguard.po | 62 - .../po/templates/wireguard.pot | 62 - .../luci-app-wireguard/po/zh-cn/wireguard.po | 73 - .../luci/applications/luci-app-wol/Makefile | 14 - .../luci-app-wol/luasrc/controller/wol.lua | 6 - .../luci-app-wol/luasrc/model/cbi/wol.lua | 103 - .../applications/luci-app-wol/po/ca/wol.po | 61 - .../applications/luci-app-wol/po/cs/wol.po | 58 - .../applications/luci-app-wol/po/de/wol.po | 61 - .../applications/luci-app-wol/po/el/wol.po | 52 - .../applications/luci-app-wol/po/en/wol.po | 53 - .../applications/luci-app-wol/po/es/wol.po | 60 - .../applications/luci-app-wol/po/fr/wol.po | 60 - .../applications/luci-app-wol/po/he/wol.po | 52 - .../applications/luci-app-wol/po/hu/wol.po | 62 - .../applications/luci-app-wol/po/it/wol.po | 59 - .../applications/luci-app-wol/po/ja/wol.po | 58 - .../applications/luci-app-wol/po/ms/wol.po | 51 - .../applications/luci-app-wol/po/no/wol.po | 50 - .../applications/luci-app-wol/po/pl/wol.po | 60 - .../applications/luci-app-wol/po/pt-br/wol.po | 58 - .../applications/luci-app-wol/po/pt/wol.po | 57 - .../applications/luci-app-wol/po/ro/wol.po | 60 - .../applications/luci-app-wol/po/ru/wol.po | 62 - .../applications/luci-app-wol/po/sk/wol.po | 47 - .../applications/luci-app-wol/po/sv/wol.po | 54 - .../luci-app-wol/po/templates/wol.pot | 40 - .../applications/luci-app-wol/po/tr/wol.po | 52 - .../applications/luci-app-wol/po/uk/wol.po | 62 - .../applications/luci-app-wol/po/vi/wol.po | 52 - .../applications/luci-app-wol/po/zh-cn/wol.po | 56 - .../applications/luci-app-wol/po/zh-tw/wol.po | 56 - package/luci/build/i18n-init.sh | 24 - package/luci/build/i18n-po2lua.pl | 27 - package/luci/build/i18n-scan.pl | 128 - package/luci/build/i18n-sync.sh | 18 - package/luci/build/i18n-update.pl | 83 - package/luci/build/luadoc/doc.lua | 126 - package/luci/build/luadoc/luadoc/config.lua | 34 - .../luci/build/luadoc/luadoc/doclet/debug.lua | 46 - .../build/luadoc/luadoc/doclet/formatter.lua | 84 - .../luci/build/luadoc/luadoc/doclet/html.lua | 275 - .../luadoc/luadoc/doclet/html/constant.lp | 28 - .../build/luadoc/luadoc/doclet/html/file.lp | 112 - .../luadoc/luadoc/doclet/html/function.lp | 64 - .../build/luadoc/luadoc/doclet/html/index.lp | 67 - .../luadoc/luadoc/doclet/html/luadoc.css | 285 - .../build/luadoc/luadoc/doclet/html/menu.lp | 55 - .../build/luadoc/luadoc/doclet/html/module.lp | 155 - .../build/luadoc/luadoc/doclet/html/table.lp | 15 - .../luci/build/luadoc/luadoc/doclet/raw.lua | 12 - package/luci/build/luadoc/luadoc/init.lua | 50 - package/luci/build/luadoc/luadoc/lp.lua | 130 - .../build/luadoc/luadoc/taglet/standard.lua | 567 - .../luadoc/luadoc/taglet/standard/tags.lua | 191 - package/luci/build/luadoc/luadoc/util.lua | 201 - package/luci/build/makedocs.sh | 21 - package/luci/build/mkbasepot.sh | 15 - package/luci/build/mkrevision.sh | 27 - package/luci/build/zoneinfo2lua.pl | 177 - package/luci/collections/luci-light/Makefile | 17 - .../collections/luci-ssl-openssl/Makefile | 21 - package/luci/collections/luci-ssl/Makefile | 19 - package/luci/collections/luci/Makefile | 22 - package/luci/contrib/package/Makefile | 2 - .../package/community-profiles/Makefile | 39 - .../files/etc/config/profile_Freifunk | 10 - .../files/etc/config/profile_altmark | 56 - .../files/etc/config/profile_arig_arad | 22 - .../etc/config/profile_arig_neot_semadar | 22 - .../files/etc/config/profile_arig_tel-aviv | 22 - .../files/etc/config/profile_augsburg | 64 - .../files/etc/config/profile_bayreuth | 20 - .../files/etc/config/profile_bergischesland | 15 - .../files/etc/config/profile_berlin | 39 - .../files/etc/config/profile_carbodebit | 23 - .../files/etc/config/profile_cottbus | 37 - .../files/etc/config/profile_demo | 21 - .../files/etc/config/profile_duesseldorf | 15 - .../files/etc/config/profile_erfurt | 48 - .../files/etc/config/profile_evernet | 25 - .../files/etc/config/profile_freiburg | 45 - .../files/etc/config/profile_gadow | 23 - .../files/etc/config/profile_guifibages | 19 - .../files/etc/config/profile_halle | 71 - .../files/etc/config/profile_hameln | 15 - .../files/etc/config/profile_hannover | 12 - .../files/etc/config/profile_hooge | 22 - .../files/etc/config/profile_kiberpipa | 15 - .../files/etc/config/profile_kyritz | 57 - .../files/etc/config/profile_l59 | 25 - .../files/etc/config/profile_leipzig | 55 - .../files/etc/config/profile_marburg | 12 - .../files/etc/config/profile_oldenburg | 15 - .../etc/config/profile_openwireless_bern | 18 - .../files/etc/config/profile_piraten_dresden | 12 - .../files/etc/config/profile_potsdam | 35 - .../files/etc/config/profile_reihen | 25 - .../files/etc/config/profile_rosbach | 15 - .../files/etc/config/profile_schwarzach | 12 - .../files/etc/config/profile_stuttgart | 13 - .../files/etc/config/profile_tulumlibre | 10 - .../files/etc/config/profile_vogtland | 23 - .../files/etc/config/profile_weil | 23 - .../files/etc/config/profile_weimar | 10 - .../files/etc/config/profile_weinstadt | 19 - .../files/etc/config/profile_wlanljubljana | 15 - .../contrib/package/freifunk-common/Makefile | 42 - .../freifunk-common/files/etc/config/freifunk | 120 - .../freifunk-common/files/etc/init.d/freifunk | 25 - .../files/etc/rc.local.d/01-config-migration | 51 - .../files/etc/uci-defaults/freifunk | 2 - .../freifunk-common/files/usr/bin/ffdzero | 10 - .../freifunk-common/files/usr/bin/neigh.sh | 103 - .../freifunk-common/files/usr/bin/watch.sh | 11 - .../files/usr/sbin/ff_olsr_watchdog | 29 - .../package/freifunk-firewall/Makefile | 53 - .../files/etc/firewall.freifunk | 40 - .../etc/hotplug.d/firewall/23-restricted-wan | 65 - .../contrib/package/freifunk-gwcheck/Makefile | 40 - .../files/etc/config/freifunk-gwcheck | 5 - .../files/usr/sbin/ff_olsr_test_gw.sh | 132 - .../root/etc/uci-defaults/50_freifunk-gwcheck | 7 - .../package/freifunk-mapupdate/Makefile | 39 - .../files/etc/config/freifunk-mapupdate | 3 - .../files/usr/sbin/ff_mapupdate.sh | 59 - .../etc/uci-defaults/50_freifunk-mapupdate | 6 - .../package/freifunk-p2pblock/Makefile | 48 - .../files/freifunk-p2pblock.config | 6 - .../files/freifunk-p2pblock.init | 95 - .../package/freifunk-policyrouting/Makefile | 47 - .../files/etc/config/freifunk-policyrouting | 7 - .../etc/hotplug.d/iface/30-policyrouting | 104 - .../files/etc/init.d/freifunk-policyrouting | 172 - .../etc/uci-defaults/freifunk-policyrouting | 7 - .../package/freifunk-watchdog/Makefile | 55 - .../files/freifunk-watchdog.config | 7 - .../files/freifunk-watchdog.init | 39 - .../package/freifunk-watchdog/src/Makefile | 12 - .../package/freifunk-watchdog/src/ucix.c | 102 - .../package/freifunk-watchdog/src/ucix.h | 29 - .../package/freifunk-watchdog/src/watchdog.c | 527 - .../package/freifunk-watchdog/src/watchdog.h | 142 - .../freifunk-watchdog/src/wireless.22.h | 1139 - .../luci/contrib/package/meshwizard/Makefile | 39 - .../meshwizard/files/etc/config/meshwizard | 7 - .../files/usr/bin/meshwizard/functions.sh | 118 - .../helpers/check-range-in-range.sh | 31 - .../usr/bin/meshwizard/helpers/common.awk | 20 - .../helpers/gen_auto-ipv6-dhcpv6-ip.sh | 16 - .../usr/bin/meshwizard/helpers/gen_bssid.sh | 36 - .../usr/bin/meshwizard/helpers/gen_dhcp_ip.sh | 6 - .../bin/meshwizard/helpers/initial_config.sh | 42 - .../usr/bin/meshwizard/helpers/ipcalc-cidr.sh | 42 - .../bin/meshwizard/helpers/read_defaults.sh | 61 - .../usr/bin/meshwizard/helpers/rename-wifi.sh | 46 - .../helpers/setup_auto-ipv6-interface.sh | 12 - .../bin/meshwizard/helpers/setup_auto-ipv6.sh | 17 - .../usr/bin/meshwizard/helpers/setup_dhcp.sh | 46 - .../bin/meshwizard/helpers/setup_dnsmasq.sh | 29 - .../bin/meshwizard/helpers/setup_firewall.sh | 145 - .../helpers/setup_firewall_interface.sh | 111 - .../bin/meshwizard/helpers/setup_lan_ipv6.sh | 20 - .../meshwizard/helpers/setup_lan_static.sh | 17 - .../bin/meshwizard/helpers/setup_network.sh | 142 - .../usr/bin/meshwizard/helpers/setup_olsrd.sh | 160 - .../helpers/setup_olsrd_interface.sh | 76 - .../meshwizard/helpers/setup_policyrouting.sh | 11 - .../usr/bin/meshwizard/helpers/setup_qos.sh | 17 - .../bin/meshwizard/helpers/setup_splash.sh | 54 - .../usr/bin/meshwizard/helpers/setup_ssh.sh | 26 - .../bin/meshwizard/helpers/setup_system.sh | 7 - .../bin/meshwizard/helpers/setup_uhttpd.sh | 11 - .../bin/meshwizard/helpers/setup_wan_dhcp.sh | 18 - .../meshwizard/helpers/setup_wan_static.sh | 20 - .../bin/meshwizard/helpers/setup_widgets.sh | 14 - .../usr/bin/meshwizard/helpers/setup_wifi.sh | 80 - .../bin/meshwizard/helpers/setup_wifi_vap.sh | 23 - .../bin/meshwizard/helpers/supports_vap.sh | 32 - .../files/usr/bin/meshwizard/wizard.sh | 147 - package/luci/documentation/CBI.md | 246 - package/luci/documentation/JsonRpcHowTo.md | 66 - package/luci/documentation/LAR.md | 87 - package/luci/documentation/LMO.md | 144 - package/luci/documentation/LuCI-0.10.md | 202 - package/luci/documentation/Modules.md | 94 - package/luci/documentation/ModulesHowTo.md | 153 - package/luci/documentation/Templates.md | 65 - package/luci/documentation/ThemesHowTo.md | 76 - package/luci/documentation/api/index.html | 435 - package/luci/documentation/api/luadoc.css | 285 - .../api/modules/luci.dispatcher.html | 1151 - .../documentation/api/modules/luci.http.html | 854 - .../luci.http.protocol.conditionals.html | 556 - .../api/modules/luci.http.protocol.date.html | 410 - .../api/modules/luci.http.protocol.html | 753 - .../api/modules/luci.http.protocol.mime.html | 326 - .../documentation/api/modules/luci.i18n.html | 564 - .../api/modules/luci.ip.cidr.html | 1269 -- .../documentation/api/modules/luci.ip.html | 934 - .../documentation/api/modules/luci.json.html | 598 - .../documentation/api/modules/luci.jsonc.html | 397 - .../api/modules/luci.jsonc.parser.html | 495 - .../api/modules/luci.model.ipkg.html | 734 - .../api/modules/luci.model.uci.html | 1444 -- .../documentation/api/modules/luci.rpcc.html | 328 - .../api/modules/luci.rpcc.ruci.html | 281 - .../documentation/api/modules/luci.sys.html | 645 - .../api/modules/luci.sys.init.html | 516 - .../api/modules/luci.sys.iptparser.html | 466 - .../api/modules/luci.sys.net.html | 601 - .../api/modules/luci.sys.process.html | 448 - .../api/modules/luci.sys.user.html | 416 - .../api/modules/luci.sys.wifi.html | 284 - .../documentation/api/modules/luci.util.html | 1717 -- .../api/modules/nixio.CHANGELOG.html | 290 - .../api/modules/nixio.CryptoHash.html | 316 - .../documentation/api/modules/nixio.File.html | 673 - .../api/modules/nixio.README.html | 374 - .../api/modules/nixio.Socket.html | 1033 - .../api/modules/nixio.TLSContext.html | 479 - .../api/modules/nixio.TLSSocket.html | 575 - .../api/modules/nixio.UnifiedIO.html | 767 - .../documentation/api/modules/nixio.bin.html | 427 - .../documentation/api/modules/nixio.bit.html | 744 - .../api/modules/nixio.crypto.html | 319 - .../documentation/api/modules/nixio.fs.html | 1562 -- .../luci/documentation/api/modules/nixio.html | 2405 -- package/luci/documentation/i18n.md | 19 - .../luci/libs/luci-lib-httpclient/Makefile | 14 - .../luci-lib-httpclient/luasrc/httpclient.lua | 368 - .../luasrc/httpclient/receiver.lua | 284 - package/luci/libs/luci-lib-ip/Makefile | 16 - package/luci/libs/luci-lib-ip/src/Makefile | 17 - package/luci/libs/luci-lib-ip/src/ip.c | 1392 -- package/luci/libs/luci-lib-ip/src/ip.luadoc | 831 - package/luci/libs/luci-lib-json/Makefile | 16 - .../luci/libs/luci-lib-json/luasrc/json.lua | 530 - .../libs/luci-lib-json/luasrc/json.luadoc | 94 - package/luci/libs/luci-lib-jsonc/Makefile | 14 - package/luci/libs/luci-lib-jsonc/src/Makefile | 17 - package/luci/libs/luci-lib-jsonc/src/jsonc.c | 461 - .../luci/libs/luci-lib-jsonc/src/jsonc.luadoc | 146 - .../luci/libs/luci-lib-luaneightbl/Makefile | 14 - .../libs/luci-lib-luaneightbl/src/Makefile | 17 - .../libs/luci-lib-luaneightbl/src/neightbl.c | 122 - package/luci/libs/luci-lib-nixio/.gitignore | 11 - package/luci/libs/luci-lib-nixio/LICENSE | 201 - package/luci/libs/luci-lib-nixio/Makefile | 16 - package/luci/libs/luci-lib-nixio/NOTICE | 10 - package/luci/libs/luci-lib-nixio/README | 13 - .../luci/libs/luci-lib-nixio/axTLS/Makefile | 181 - package/luci/libs/luci-lib-nixio/axTLS/README | 3 - .../luci-lib-nixio/axTLS/bindings/Config.in | 105 - .../luci-lib-nixio/axTLS/bindings/Makefile | 86 - .../libs/luci-lib-nixio/axTLS/bindings/README | 43 - .../axTLS/bindings/csharp/Makefile | 35 - .../axTLS/bindings/csharp/axTLS.cs | 491 - .../axTLS/bindings/generate_SWIG_interface.pl | 393 - .../axTLS/bindings/generate_interface.pl | 322 - .../axTLS/bindings/java/Makefile | 94 - .../axTLS/bindings/java/SSL.java | 137 - .../axTLS/bindings/java/SSLCTX.java | 229 - .../axTLS/bindings/java/SSLClient.java | 81 - .../axTLS/bindings/java/SSLReadHolder.java | 61 - .../axTLS/bindings/java/SSLServer.java | 72 - .../axTLS/bindings/java/SSLUtil.java | 116 - .../axTLS/bindings/lua/Makefile | 67 - .../axTLS/bindings/perl/Makefile | 91 - .../axTLS/bindings/vbnet/Makefile | 35 - .../axTLS/bindings/vbnet/axTLSvb.vb | 200 - .../libs/luci-lib-nixio/axTLS/config/.config | 112 - .../luci-lib-nixio/axTLS/config/Config.in | 114 - .../luci-lib-nixio/axTLS/config/JMeter.jmx | 247 - .../luci-lib-nixio/axTLS/config/Rules.mak | 220 - .../luci-lib-nixio/axTLS/config/axhttpd.aip | 136 - .../luci-lib-nixio/axTLS/config/axtls.RES | Bin 22748 -> 0 bytes .../libs/luci-lib-nixio/axTLS/config/axtls.rc | 32 - .../libs/luci-lib-nixio/axTLS/config/config.h | 113 - .../luci-lib-nixio/axTLS/config/linuxconfig | 119 - .../luci-lib-nixio/axTLS/config/makefile.conf | 127 - .../axTLS/config/makefile.dotnet.conf | 65 - .../axTLS/config/makefile.java.conf | 58 - .../luci-lib-nixio/axTLS/config/makefile.post | 19 - .../scripts/config/Kconfig-language.txt | 255 - .../axTLS/config/scripts/config/Makefile | 121 - .../axTLS/config/scripts/config/conf.c | 583 - .../axTLS/config/scripts/config/confdata.c | 458 - .../axTLS/config/scripts/config/expr.c | 1099 - .../axTLS/config/scripts/config/expr.h | 195 - .../config/scripts/config/lex.zconf.c_shipped | 3688 ---- .../axTLS/config/scripts/config/lkc.h | 123 - .../axTLS/config/scripts/config/lkc_proto.h | 40 - .../scripts/config/lxdialog/BIG.FAT.WARNING | 4 - .../scripts/config/lxdialog/checklist.c | 372 - .../config/scripts/config/lxdialog/colors.h | 161 - .../config/scripts/config/lxdialog/dialog.h | 199 - .../config/scripts/config/lxdialog/inputbox.c | 240 - .../config/scripts/config/lxdialog/menubox.c | 438 - .../config/scripts/config/lxdialog/msgbox.c | 85 - .../config/scripts/config/lxdialog/textbox.c | 556 - .../config/scripts/config/lxdialog/util.c | 375 - .../config/scripts/config/lxdialog/yesno.c | 118 - .../axTLS/config/scripts/config/mconf.c | 977 - .../axTLS/config/scripts/config/menu.c | 390 - .../axTLS/config/scripts/config/mkconfigs | 67 - .../axTLS/config/scripts/config/symbol.c | 809 - .../axTLS/config/scripts/config/util.c | 109 - .../axTLS/config/scripts/config/zconf.l | 366 - .../config/scripts/config/zconf.tab.c_shipped | 2130 -- .../config/scripts/config/zconf.tab.h_shipped | 125 - .../axTLS/config/scripts/config/zconf.y | 690 - .../luci-lib-nixio/axTLS/config/win32config | 119 - .../libs/luci-lib-nixio/axTLS/crypto/Makefile | 50 - .../libs/luci-lib-nixio/axTLS/crypto/aes.c | 456 - .../libs/luci-lib-nixio/axTLS/crypto/bigint.c | 1575 -- .../libs/luci-lib-nixio/axTLS/crypto/bigint.h | 99 - .../luci-lib-nixio/axTLS/crypto/bigint_impl.h | 112 - .../libs/luci-lib-nixio/axTLS/crypto/crypto.h | 222 - .../luci-lib-nixio/axTLS/crypto/crypto_misc.c | 357 - .../libs/luci-lib-nixio/axTLS/crypto/hmac.c | 100 - .../libs/luci-lib-nixio/axTLS/crypto/md2.c | 162 - .../libs/luci-lib-nixio/axTLS/crypto/md5.c | 293 - .../libs/luci-lib-nixio/axTLS/crypto/rc4.c | 91 - .../libs/luci-lib-nixio/axTLS/crypto/rsa.c | 268 - .../libs/luci-lib-nixio/axTLS/crypto/sha1.c | 248 - .../libs/luci-lib-nixio/axTLS/docsrc/Makefile | 39 - .../luci-lib-nixio/axTLS/docsrc/axTLS.dox | 1237 -- .../axTLS/docsrc/doco_footer.html | 3 - .../axTLS/docsrc/images/axolotl.jpg | Bin 3041 -> 0 bytes .../axTLS/docsrc/images/tsbasbw.gif | Bin 2481 -> 0 bytes .../libs/luci-lib-nixio/axTLS/httpd/Config.in | 163 - .../libs/luci-lib-nixio/axTLS/httpd/Makefile | 127 - .../libs/luci-lib-nixio/axTLS/httpd/axhttp.h | 154 - .../libs/luci-lib-nixio/axTLS/httpd/axhttpd.c | 604 - .../luci-lib-nixio/axTLS/httpd/htpasswd.c | 136 - .../kepler-1.1-snapshot-20070521-1825.tar.gz | Bin 768249 -> 0 bytes .../luci-lib-nixio/axTLS/httpd/kepler.patch | 64 - .../libs/luci-lib-nixio/axTLS/httpd/proc.c | 1238 -- .../luci-lib-nixio/axTLS/httpd/tdate_parse.c | 119 - .../luci-lib-nixio/axTLS/samples/Config.in | 63 - .../luci-lib-nixio/axTLS/samples/Makefile | 62 - .../luci-lib-nixio/axTLS/samples/c/Makefile | 76 - .../luci-lib-nixio/axTLS/samples/c/axssl.c | 883 - .../axTLS/samples/csharp/Makefile | 48 - .../axTLS/samples/csharp/axssl.cs | 758 - .../axTLS/samples/java/Makefile | 51 - .../axTLS/samples/java/axssl.java | 760 - .../axTLS/samples/java/manifest.mf | 1 - .../luci-lib-nixio/axTLS/samples/lua/Makefile | 43 - .../axTLS/samples/lua/axssl.lua | 562 - .../axTLS/samples/perl/Makefile | 43 - .../axTLS/samples/perl/axssl.pl | 634 - .../axTLS/samples/vbnet/Makefile | 48 - .../axTLS/samples/vbnet/axssl.vb | 702 - .../luci-lib-nixio/axTLS/ssl/BigIntConfig.in | 132 - .../libs/luci-lib-nixio/axTLS/ssl/Config.in | 336 - .../libs/luci-lib-nixio/axTLS/ssl/Makefile | 123 - .../luci/libs/luci-lib-nixio/axTLS/ssl/asn1.c | 510 - .../luci/libs/luci-lib-nixio/axTLS/ssl/cert.h | 43 - .../luci-lib-nixio/axTLS/ssl/crypto_misc.h | 164 - .../libs/luci-lib-nixio/axTLS/ssl/gen_cert.c | 363 - .../libs/luci-lib-nixio/axTLS/ssl/loader.c | 465 - .../libs/luci-lib-nixio/axTLS/ssl/openssl.c | 322 - .../libs/luci-lib-nixio/axTLS/ssl/os_port.c | 158 - .../libs/luci-lib-nixio/axTLS/ssl/os_port.h | 207 - .../luci/libs/luci-lib-nixio/axTLS/ssl/p12.c | 486 - .../luci-lib-nixio/axTLS/ssl/private_key.h | 54 - .../luci/libs/luci-lib-nixio/axTLS/ssl/ssl.h | 474 - .../luci-lib-nixio/axTLS/ssl/test/Makefile | 97 - .../axTLS/ssl/test/axTLS.ca_key.pem | 15 - .../axTLS/ssl/test/axTLS.ca_x509.cer | Bin 483 -> 0 bytes .../axTLS/ssl/test/axTLS.ca_x509.pem | 13 - .../axTLS/ssl/test/axTLS.device_key | Bin 609 -> 0 bytes .../axTLS/ssl/test/axTLS.device_key.pem | 15 - .../axTLS/ssl/test/axTLS.encrypted.p8 | Bin 385 -> 0 bytes .../axTLS/ssl/test/axTLS.encrypted_pem.p8 | 11 - .../axTLS/ssl/test/axTLS.key_1024 | Bin 609 -> 0 bytes .../axTLS/ssl/test/axTLS.key_1024.pem | 15 - .../axTLS/ssl/test/axTLS.key_2048 | Bin 1191 -> 0 bytes .../axTLS/ssl/test/axTLS.key_2048.pem | 27 - .../axTLS/ssl/test/axTLS.key_4096 | Bin 2349 -> 0 bytes .../axTLS/ssl/test/axTLS.key_4096.pem | 51 - .../axTLS/ssl/test/axTLS.key_512 | Bin 321 -> 0 bytes .../axTLS/ssl/test/axTLS.key_512.pem | 9 - .../axTLS/ssl/test/axTLS.key_aes128.pem | 12 - .../axTLS/ssl/test/axTLS.key_aes256.pem | 12 - .../axTLS/ssl/test/axTLS.noname.p12 | Bin 1483 -> 0 bytes .../axTLS/ssl/test/axTLS.unencrypted.p8 | Bin 347 -> 0 bytes .../axTLS/ssl/test/axTLS.unencrypted_pem.p8 | 10 - .../axTLS/ssl/test/axTLS.withCA.p12 | Bin 2089 -> 0 bytes .../axTLS/ssl/test/axTLS.withoutCA.p12 | Bin 1573 -> 0 bytes .../axTLS/ssl/test/axTLS.x509_1024.cer | Bin 475 -> 0 bytes .../axTLS/ssl/test/axTLS.x509_1024.pem | 12 - .../axTLS/ssl/test/axTLS.x509_2048.cer | Bin 607 -> 0 bytes .../axTLS/ssl/test/axTLS.x509_2048.pem | 15 - .../axTLS/ssl/test/axTLS.x509_4096.cer | Bin 863 -> 0 bytes .../axTLS/ssl/test/axTLS.x509_4096.pem | 20 - .../axTLS/ssl/test/axTLS.x509_512.cer | Bin 406 -> 0 bytes .../axTLS/ssl/test/axTLS.x509_512.pem | 11 - .../axTLS/ssl/test/axTLS.x509_aes128.pem | 11 - .../axTLS/ssl/test/axTLS.x509_aes256.pem | 11 - .../axTLS/ssl/test/axTLS.x509_bad_after.pem | 11 - .../axTLS/ssl/test/axTLS.x509_bad_before.pem | 11 - .../axTLS/ssl/test/axTLS.x509_device.cer | Bin 401 -> 0 bytes .../axTLS/ssl/test/axTLS.x509_device.pem | 24 - .../luci-lib-nixio/axTLS/ssl/test/datatest.c | 43 - .../axTLS/ssl/test/datatest.c.old | 280 - .../axTLS/ssl/test/deutsche_telecom.x509_ca | Bin 670 -> 0 bytes .../axTLS/ssl/test/equifax.x509_ca | Bin 646 -> 0 bytes .../luci-lib-nixio/axTLS/ssl/test/gnutls.cer | Bin 599 -> 0 bytes .../axTLS/ssl/test/header_issue.dat | Bin 1159 -> 0 bytes .../axTLS/ssl/test/killopenssl.sh | 2 - .../axTLS/ssl/test/make_certs.sh | 174 - .../axTLS/ssl/test/microsoft.x509_ca | Bin 1046 -> 0 bytes .../axTLS/ssl/test/microsoft.x509_ca.pem | 24 - .../luci-lib-nixio/axTLS/ssl/test/ms_iis.cer | 13 - .../axTLS/ssl/test/perf_bigint.c | 228 - .../luci-lib-nixio/axTLS/ssl/test/socgen.cer | Bin 980 -> 0 bytes .../luci-lib-nixio/axTLS/ssl/test/ssltest.c | 1983 -- .../axTLS/ssl/test/ssltest.c.bak | 1940 -- .../axTLS/ssl/test/test_axssl.sh | 163 - .../axTLS/ssl/test/thawte.x509_ca | Bin 811 -> 0 bytes .../axTLS/ssl/test/verisign.x509_ca | Bin 668 -> 0 bytes .../axTLS/ssl/test/verisign.x509_ca.pem | 16 - .../axTLS/ssl/test/verisign.x509_my_cert | Bin 1095 -> 0 bytes .../axTLS/ssl/test/verisign.x509_my_cert.pem | 25 - .../luci/libs/luci-lib-nixio/axTLS/ssl/tls1.c | 2057 -- .../luci/libs/luci-lib-nixio/axTLS/ssl/tls1.h | 289 - .../libs/luci-lib-nixio/axTLS/ssl/tls1_clnt.c | 386 - .../libs/luci-lib-nixio/axTLS/ssl/tls1_svr.c | 476 - .../libs/luci-lib-nixio/axTLS/ssl/version.h | 1 - .../luci/libs/luci-lib-nixio/axTLS/ssl/x509.c | 502 - .../luci-lib-nixio/axTLS/www/bin/.htaccess | 2 - .../libs/luci-lib-nixio/axTLS/www/favicon.ico | Bin 22486 -> 0 bytes .../libs/luci-lib-nixio/axTLS/www/index.html | 7106 ------ .../luci-lib-nixio/axTLS/www/lua/download.lua | 75 - .../libs/luci-lib-nixio/axTLS/www/lua/env.lua | 26 - .../luci-lib-nixio/axTLS/www/lua/overview.lp | 64 - .../axTLS/www/lua/prepara_sql2.lua | 31 - .../axTLS/www/lua/test_conc.lua | 38 - .../axTLS/www/lua/test_cookies.lp | 13 - .../axTLS/www/lua/test_cookies.lua | 14 - .../luci-lib-nixio/axTLS/www/lua/test_err.lua | 4 - .../luci-lib-nixio/axTLS/www/lua/test_fs.lua | 23 - .../luci-lib-nixio/axTLS/www/lua/test_htk.lua | 22 - .../luci-lib-nixio/axTLS/www/lua/test_lib.lua | 31 - .../axTLS/www/lua/test_main.html | 127 - .../luci-lib-nixio/axTLS/www/lua/test_main.lp | 31 - .../axTLS/www/lua/test_main.lua | 46 - .../axTLS/www/lua/test_session.lua | 43 - .../luci-lib-nixio/axTLS/www/lua/test_sql.lua | 13 - .../axTLS/www/lua/test_sql2.lua | 24 - .../axTLS/www/lua/test_variables.lp | 14 - .../axTLS/www/test_dir/bin/.htaccess | 1 - .../axTLS/www/test_dir/no_http/.htaccess | 1 - .../axTLS/www/test_dir/no_http/.htpasswd | 2 - .../axTLS/www/test_dir/no_http/index.html | 6 - .../axTLS/www/test_dir/no_ssl/.htaccess | 1 - .../axTLS/www/test_dir/no_ssl/index.html | 6 - .../libs/luci-lib-nixio/axtls-config/.config | 112 - .../libs/luci-lib-nixio/axtls-config/config.h | 113 - .../axtls-root/etc/nixio/rsa_main.der | Bin 609 -> 0 bytes .../libs/luci-lib-nixio/docsrc/CHANGELOG.lua | 29 - .../libs/luci-lib-nixio/docsrc/README.lua | 95 - .../docsrc/nixio.CryptoHash.lua | 17 - .../libs/luci-lib-nixio/docsrc/nixio.File.lua | 109 - .../luci-lib-nixio/docsrc/nixio.Socket.lua | 170 - .../docsrc/nixio.TLSContext.lua | 46 - .../luci-lib-nixio/docsrc/nixio.TLSSocket.lua | 73 - .../luci-lib-nixio/docsrc/nixio.UnifiedIO.lua | 129 - .../libs/luci-lib-nixio/docsrc/nixio.bin.lua | 33 - .../libs/luci-lib-nixio/docsrc/nixio.bit.lua | 92 - .../luci-lib-nixio/docsrc/nixio.crypto.lua | 15 - .../libs/luci-lib-nixio/docsrc/nixio.fs.lua | 265 - .../luci/libs/luci-lib-nixio/docsrc/nixio.lua | 467 - .../libs/luci-lib-nixio/nixio-0.3-1.rockspec | 37 - .../root/lib/upgrade/luci-add-conffiles.sh | 16 - .../root/usr/lib/lua/nixio/fs.lua | 175 - .../root/usr/lib/lua/nixio/util.lua | 270 - package/luci/libs/luci-lib-nixio/src/Makefile | 120 - .../luci/libs/luci-lib-nixio/src/address.c | 567 - .../libs/luci-lib-nixio/src/axtls-compat.c | 297 - .../libs/luci-lib-nixio/src/axtls-compat.h | 150 - package/luci/libs/luci-lib-nixio/src/binary.c | 313 - package/luci/libs/luci-lib-nixio/src/bind.c | 293 - package/luci/libs/luci-lib-nixio/src/bit.c | 149 - .../libs/luci-lib-nixio/src/cyassl-compat.c | 31 - .../libs/luci-lib-nixio/src/cyassl-compat.h | 32 - package/luci/libs/luci-lib-nixio/src/file.c | 435 - package/luci/libs/luci-lib-nixio/src/fs.c | 566 - package/luci/libs/luci-lib-nixio/src/io.c | 225 - .../libs/luci-lib-nixio/src/mingw-compat.c | 220 - .../libs/luci-lib-nixio/src/mingw-compat.h | 112 - .../luci/libs/luci-lib-nixio/src/nixio-tls.h | 53 - package/luci/libs/luci-lib-nixio/src/nixio.c | 240 - package/luci/libs/luci-lib-nixio/src/nixio.h | 133 - package/luci/libs/luci-lib-nixio/src/poll.c | 210 - .../luci/libs/luci-lib-nixio/src/process.c | 450 - .../luci/libs/luci-lib-nixio/src/protoent.c | 103 - package/luci/libs/luci-lib-nixio/src/socket.c | 173 - .../luci/libs/luci-lib-nixio/src/sockopt.c | 390 - package/luci/libs/luci-lib-nixio/src/splice.c | 185 - package/luci/libs/luci-lib-nixio/src/syslog.c | 122 - .../libs/luci-lib-nixio/src/tls-context.c | 248 - .../luci/libs/luci-lib-nixio/src/tls-crypto.c | 185 - .../luci/libs/luci-lib-nixio/src/tls-socket.c | 263 - package/luci/libs/luci-lib-nixio/src/user.c | 263 - package/luci/libs/luci-lib-px5g/Makefile | 17 - .../luci/libs/luci-lib-px5g/lua/px5g/util.lua | 44 - .../luci-lib-px5g/root/usr/sbin/px5g-genkeys | 19 - package/luci/libs/luci-lib-px5g/src/Makefile | 17 - .../libs/luci-lib-px5g/src/library/bignum.c | 2010 -- .../libs/luci-lib-px5g/src/library/havege.c | 276 - .../luci/libs/luci-lib-px5g/src/library/rsa.c | 750 - .../libs/luci-lib-px5g/src/library/sha1.c | 622 - .../libs/luci-lib-px5g/src/library/timing.c | 265 - .../luci-lib-px5g/src/library/x509write.c | 1137 - .../libs/luci-lib-px5g/src/polarssl/bignum.h | 437 - .../libs/luci-lib-px5g/src/polarssl/bn_mul.h | 731 - .../libs/luci-lib-px5g/src/polarssl/config.h | 329 - .../libs/luci-lib-px5g/src/polarssl/havege.h | 75 - .../libs/luci-lib-px5g/src/polarssl/rsa.h | 309 - .../libs/luci-lib-px5g/src/polarssl/sha1.h | 150 - .../libs/luci-lib-px5g/src/polarssl/timing.h | 81 - .../libs/luci-lib-px5g/src/polarssl/x509.h | 549 - package/luci/libs/luci-lib-px5g/src/px5g.c | 159 - package/luci/libs/luci-lib-px5g/src/px5g.h | 16 - package/luci/libs/luci-lib-rpcc/Makefile | 14 - .../luci/libs/luci-lib-rpcc/luasrc/rpcc.lua | 59 - .../libs/luci-lib-rpcc/luasrc/rpcc.luadoc | 36 - .../libs/luci-lib-rpcc/luasrc/rpcc/ruci.lua | 48 - .../luci-lib-rpcc/luasrc/rpcc/ruci.luadoc | 16 - package/luci/libs/rpcd-mod-rrdns/Makefile | 47 - .../libs/rpcd-mod-rrdns/src/CMakeLists.txt | 23 - package/luci/libs/rpcd-mod-rrdns/src/rrdns.c | 389 - package/luci/libs/rpcd-mod-rrdns/src/rrdns.h | 51 - package/luci/luci.mk | 239 - package/luci/modules/luci-base/Makefile | 50 - .../modules/luci-base/htdocs/cgi-bin/luci | 5 - .../htdocs/luci-static/resources/cbi.js | 1581 -- .../htdocs/luci-static/resources/cbi/add.gif | Bin 378 -> 0 bytes .../luci-static/resources/cbi/apply.gif | Bin 268 -> 0 bytes .../luci-static/resources/cbi/arrow.gif | Bin 135 -> 0 bytes .../htdocs/luci-static/resources/cbi/down.gif | Bin 131 -> 0 bytes .../luci-static/resources/cbi/download.gif | Bin 189 -> 0 bytes .../htdocs/luci-static/resources/cbi/edit.gif | Bin 272 -> 0 bytes .../luci-static/resources/cbi/fieldadd.gif | Bin 371 -> 0 bytes .../htdocs/luci-static/resources/cbi/file.gif | Bin 267 -> 0 bytes .../htdocs/luci-static/resources/cbi/find.gif | Bin 273 -> 0 bytes .../luci-static/resources/cbi/folder.gif | Bin 698 -> 0 bytes .../htdocs/luci-static/resources/cbi/help.gif | Bin 266 -> 0 bytes .../htdocs/luci-static/resources/cbi/key.gif | Bin 230 -> 0 bytes .../htdocs/luci-static/resources/cbi/link.gif | Bin 279 -> 0 bytes .../luci-static/resources/cbi/reload.gif | Bin 248 -> 0 bytes .../luci-static/resources/cbi/remove.gif | Bin 385 -> 0 bytes .../luci-static/resources/cbi/reset.gif | Bin 258 -> 0 bytes .../htdocs/luci-static/resources/cbi/save.gif | Bin 263 -> 0 bytes .../htdocs/luci-static/resources/cbi/up.gif | Bin 130 -> 0 bytes .../htdocs/luci-static/resources/cbi/user.gif | Bin 246 -> 0 bytes .../luci-static/resources/icons/bridge.png | Bin 681 -> 0 bytes .../resources/icons/bridge_disabled.png | Bin 405 -> 0 bytes .../resources/icons/encryption.png | Bin 920 -> 0 bytes .../resources/icons/encryption_disabled.png | Bin 888 -> 0 bytes .../luci-static/resources/icons/ethernet.png | Bin 701 -> 0 bytes .../resources/icons/ethernet_disabled.png | Bin 399 -> 0 bytes .../luci-static/resources/icons/loading.gif | Bin 1786 -> 0 bytes .../luci-static/resources/icons/port_down.png | Bin 769 -> 0 bytes .../luci-static/resources/icons/port_up.png | Bin 1151 -> 0 bytes .../resources/icons/signal-0-25.png | Bin 462 -> 0 bytes .../luci-static/resources/icons/signal-0.png | Bin 439 -> 0 bytes .../resources/icons/signal-25-50.png | Bin 465 -> 0 bytes .../resources/icons/signal-50-75.png | Bin 467 -> 0 bytes .../resources/icons/signal-75-100.png | Bin 457 -> 0 bytes .../resources/icons/signal-none.png | Bin 639 -> 0 bytes .../luci-static/resources/icons/switch.png | Bin 680 -> 0 bytes .../resources/icons/switch_disabled.png | Bin 398 -> 0 bytes .../luci-static/resources/icons/tunnel.png | Bin 343 -> 0 bytes .../resources/icons/tunnel_disabled.png | Bin 235 -> 0 bytes .../luci-static/resources/icons/vlan.png | Bin 680 -> 0 bytes .../resources/icons/vlan_disabled.png | Bin 398 -> 0 bytes .../luci-static/resources/icons/wifi.png | Bin 767 -> 0 bytes .../luci-static/resources/icons/wifi_big.png | Bin 2276 -> 0 bytes .../resources/icons/wifi_big_disabled.png | Bin 1512 -> 0 bytes .../resources/icons/wifi_disabled.png | Bin 494 -> 0 bytes .../htdocs/luci-static/resources/xhr.js | 239 - .../modules/luci-base/luasrc/cacheloader.lua | 12 - package/luci/modules/luci-base/luasrc/cbi.lua | 1942 -- .../luci-base/luasrc/cbi/datatypes.lua | 473 - .../luci/modules/luci-base/luasrc/ccache.lua | 76 - .../luci/modules/luci-base/luasrc/config.lua | 18 - .../luasrc/controller/admin/servicectl.lua | 49 - .../luci/modules/luci-base/luasrc/debug.lua | 37 - .../modules/luci-base/luasrc/dispatcher.lua | 936 - .../luci-base/luasrc/dispatcher.luadoc | 220 - .../luci/modules/luci-base/luasrc/http.lua | 276 - .../luci/modules/luci-base/luasrc/http.luadoc | 165 - .../luci-base/luasrc/http/protocol.lua | 649 - .../luci-base/luasrc/http/protocol.luadoc | 142 - .../luasrc/http/protocol/conditionals.lua | 110 - .../luasrc/http/protocol/conditionals.luadoc | 85 - .../luci-base/luasrc/http/protocol/date.lua | 87 - .../luasrc/http/protocol/date.luadoc | 46 - .../luci-base/luasrc/http/protocol/mime.lua | 78 - .../luasrc/http/protocol/mime.luadoc | 34 - .../luci/modules/luci-base/luasrc/i18n.lua | 55 - .../luci/modules/luci-base/luasrc/i18n.luadoc | 84 - .../luci/modules/luci-base/luasrc/ltn12.lua | 316 - .../model/cbi/admin_network/proto_dhcp.lua | 67 - .../model/cbi/admin_network/proto_none.lua | 4 - .../model/cbi/admin_network/proto_static.lua | 90 - .../luci-base/luasrc/model/firewall.lua | 568 - .../modules/luci-base/luasrc/model/ipkg.lua | 242 - .../luci-base/luasrc/model/ipkg.luadoc | 125 - .../luci-base/luasrc/model/network.lua | 1705 -- .../modules/luci-base/luasrc/model/uci.lua | 236 - .../modules/luci-base/luasrc/model/uci.luadoc | 299 - .../luci/modules/luci-base/luasrc/sgi/cgi.lua | 73 - .../modules/luci-base/luasrc/sgi/uhttpd.lua | 89 - .../luci/modules/luci-base/luasrc/store.lua | 6 - package/luci/modules/luci-base/luasrc/sys.lua | 530 - .../luci/modules/luci-base/luasrc/sys.luadoc | 405 - .../luci-base/luasrc/sys/iptparser.lua | 374 - .../luci-base/luasrc/sys/iptparser.luadoc | 69 - .../modules/luci-base/luasrc/sys/zoneinfo.lua | 19 - .../luci-base/luasrc/sys/zoneinfo/tzdata.lua | 457 - .../luasrc/sys/zoneinfo/tzoffset.lua | 45 - .../modules/luci-base/luasrc/template.lua | 100 - .../modules/luci-base/luasrc/tools/proto.lua | 36 - .../modules/luci-base/luasrc/tools/status.lua | 230 - .../luci-base/luasrc/tools/webadmin.lua | 105 - .../luci/modules/luci-base/luasrc/util.lua | 739 - .../luci/modules/luci-base/luasrc/util.luadoc | 378 - .../luci/modules/luci-base/luasrc/version.lua | 9 - .../luci-base/luasrc/view/cbi/apply_xhr.htm | 43 - .../luci-base/luasrc/view/cbi/browser.htm | 7 - .../luci-base/luasrc/view/cbi/button.htm | 7 - .../luasrc/view/cbi/cell_valuefooter.htm | 2 - .../luasrc/view/cbi/cell_valueheader.htm | 2 - .../luci-base/luasrc/view/cbi/compound.htm | 1 - .../luci-base/luasrc/view/cbi/delegator.htm | 24 - .../luci-base/luasrc/view/cbi/dvalue.htm | 13 - .../luci-base/luasrc/view/cbi/dynlist.htm | 27 - .../luci-base/luasrc/view/cbi/error.htm | 19 - .../luci-base/luasrc/view/cbi/filebrowser.htm | 108 - .../luasrc/view/cbi/firewall_zoneforwards.htm | 60 - .../luasrc/view/cbi/firewall_zonelist.htm | 93 - .../luci-base/luasrc/view/cbi/footer.htm | 27 - .../luasrc/view/cbi/full_valuefooter.htm | 13 - .../luasrc/view/cbi/full_valueheader.htm | 9 - .../luci-base/luasrc/view/cbi/fvalue.htm | 10 - .../luci-base/luasrc/view/cbi/header.htm | 19 - .../luci-base/luasrc/view/cbi/lvalue.htm | 43 - .../modules/luci-base/luasrc/view/cbi/map.htm | 47 - .../luci-base/luasrc/view/cbi/mvalue.htm | 43 - .../luasrc/view/cbi/network_ifacelist.htm | 89 - .../luasrc/view/cbi/network_netinfo.htm | 27 - .../luasrc/view/cbi/network_netlist.htm | 85 - .../luci-base/luasrc/view/cbi/nsection.htm | 31 - .../luci-base/luasrc/view/cbi/nullsection.htm | 38 - .../luci-base/luasrc/view/cbi/simpleform.htm | 58 - .../luasrc/view/cbi/tabcontainer.htm | 7 - .../luci-base/luasrc/view/cbi/tabmenu.htm | 12 - .../luci-base/luasrc/view/cbi/tblsection.htm | 145 - .../luci-base/luasrc/view/cbi/tsection.htm | 49 - .../luci-base/luasrc/view/cbi/tvalue.htm | 5 - .../luci-base/luasrc/view/cbi/ucisection.htm | 56 - .../luci-base/luasrc/view/cbi/upload.htm | 24 - .../luci-base/luasrc/view/cbi/value.htm | 18 - .../luci-base/luasrc/view/cbi/valuefooter.htm | 1 - .../luci-base/luasrc/view/cbi/valueheader.htm | 1 - .../luci-base/luasrc/view/csrftoken.htm | 24 - .../luci-base/luasrc/view/error404.htm | 11 - .../luci-base/luasrc/view/error500.htm | 11 - .../modules/luci-base/luasrc/view/footer.htm | 7 - .../modules/luci-base/luasrc/view/header.htm | 12 - .../modules/luci-base/luasrc/view/indexer.htm | 7 - .../modules/luci-base/luasrc/view/sysauth.htm | 73 - package/luci/modules/luci-base/po/ca/base.po | 3956 ---- package/luci/modules/luci-base/po/cs/base.po | 3996 ---- package/luci/modules/luci-base/po/de/base.po | 4136 ---- package/luci/modules/luci-base/po/el/base.po | 3937 ---- package/luci/modules/luci-base/po/en/base.po | 3890 ---- package/luci/modules/luci-base/po/es/base.po | 4027 ---- package/luci/modules/luci-base/po/fr/base.po | 4045 ---- package/luci/modules/luci-base/po/he/base.po | 3809 ---- package/luci/modules/luci-base/po/hu/base.po | 4030 ---- package/luci/modules/luci-base/po/it/base.po | 3987 ---- package/luci/modules/luci-base/po/ja/base.po | 3957 ---- package/luci/modules/luci-base/po/ko/base.po | 3848 ---- package/luci/modules/luci-base/po/ms/base.po | 3855 ---- package/luci/modules/luci-base/po/no/base.po | 3996 ---- package/luci/modules/luci-base/po/pl/base.po | 4063 ---- .../luci/modules/luci-base/po/pt-br/base.po | 4210 ---- package/luci/modules/luci-base/po/pt/base.po | 3993 ---- package/luci/modules/luci-base/po/ro/base.po | 3823 ---- package/luci/modules/luci-base/po/ru/base.po | 4038 ---- package/luci/modules/luci-base/po/sk/base.po | 3748 ---- package/luci/modules/luci-base/po/sv/base.po | 3781 ---- .../modules/luci-base/po/templates/base.pot | 3741 ---- package/luci/modules/luci-base/po/tr/base.po | 3772 ---- package/luci/modules/luci-base/po/uk/base.po | 4049 ---- package/luci/modules/luci-base/po/vi/base.po | 3858 ---- .../luci/modules/luci-base/po/zh-cn/base.po | 3948 ---- .../luci/modules/luci-base/po/zh-tw/base.po | 3915 ---- .../modules/luci-base/root/etc/config/luci | 24 - .../luci-base/root/etc/config/ucitrack | 55 - .../root/etc/luci-uploads/.placeholder | 0 .../modules/luci-base/root/sbin/luci-reload | 45 - .../root/usr/share/acl.d/luci-base.json | 8 - .../modules/luci-base/root/www/index.html | 11 - package/luci/modules/luci-base/src/Makefile | 21 - .../luci/modules/luci-base/src/mkversion.sh | 24 - package/luci/modules/luci-base/src/po2lmo.c | 247 - .../luci/modules/luci-base/src/template_lmo.c | 328 - .../luci/modules/luci-base/src/template_lmo.h | 92 - .../modules/luci-base/src/template_lualib.c | 179 - .../modules/luci-base/src/template_lualib.h | 30 - .../modules/luci-base/src/template_parser.c | 419 - .../modules/luci-base/src/template_parser.h | 80 - .../modules/luci-base/src/template_utils.c | 484 - .../modules/luci-base/src/template_utils.h | 49 - .../luci/modules/luci-mod-admin-full/Makefile | 18 - .../luci-static/resources/bandwidth.svg | 16 - .../luci-static/resources/connections.svg | 17 - .../htdocs/luci-static/resources/load.svg | 17 - .../htdocs/luci-static/resources/wifirate.svg | 15 - .../htdocs/luci-static/resources/wireless.svg | 16 - .../luasrc/controller/admin/filebrowser.lua | 9 - .../luasrc/controller/admin/index.lua | 42 - .../luasrc/controller/admin/network.lua | 429 - .../luasrc/controller/admin/status.lua | 150 - .../luasrc/controller/admin/system.lua | 439 - .../luasrc/controller/admin/uci.lua | 64 - .../luasrc/model/cbi/admin_network/dhcp.lua | 331 - .../luasrc/model/cbi/admin_network/hosts.lua | 28 - .../model/cbi/admin_network/iface_add.lua | 97 - .../luasrc/model/cbi/admin_network/ifaces.lua | 524 - .../model/cbi/admin_network/network.lua | 130 - .../model/cbi/admin_network/proto_ahcp.lua | 67 - .../luasrc/model/cbi/admin_network/routes.lua | 102 - .../luasrc/model/cbi/admin_network/vlan.lua | 363 - .../luasrc/model/cbi/admin_network/wifi.lua | 1058 - .../model/cbi/admin_network/wifi_add.lua | 173 - .../model/cbi/admin_status/processes.lua | 34 - .../luasrc/model/cbi/admin_system/admin.lua | 121 - .../model/cbi/admin_system/backupfiles.lua | 80 - .../luasrc/model/cbi/admin_system/buttons.lua | 27 - .../luasrc/model/cbi/admin_system/crontab.lua | 32 - .../luasrc/model/cbi/admin_system/fstab.lua | 270 - .../model/cbi/admin_system/fstab/mount.lua | 151 - .../model/cbi/admin_system/fstab/swap.lua | 54 - .../luasrc/model/cbi/admin_system/ipkg.lua | 64 - .../luasrc/model/cbi/admin_system/leds.lua | 155 - .../luasrc/model/cbi/admin_system/startup.lua | 97 - .../luasrc/model/cbi/admin_system/system.lua | 224 - .../luasrc/view/admin_network/diagnostics.htm | 115 - .../view/admin_network/iface_overview.htm | 254 - .../view/admin_network/iface_status.htm | 87 - .../view/admin_network/lease_status.htm | 138 - .../view/admin_network/switch_status.htm | 44 - .../luasrc/view/admin_network/wifi_join.htm | 149 - .../view/admin_network/wifi_overview.htm | 466 - .../luasrc/view/admin_network/wifi_status.htm | 78 - .../luasrc/view/admin_status/bandwidth.htm | 301 - .../luasrc/view/admin_status/connections.htm | 376 - .../luasrc/view/admin_status/dmesg.htm | 12 - .../luasrc/view/admin_status/index.htm | 827 - .../luasrc/view/admin_status/iptables.htm | 156 - .../luasrc/view/admin_status/load.htm | 284 - .../luasrc/view/admin_status/routes.htm | 162 - .../luasrc/view/admin_status/syslog.htm | 12 - .../luasrc/view/admin_status/wireless.htm | 370 - .../luasrc/view/admin_system/applyreboot.htm | 41 - .../luasrc/view/admin_system/backupfiles.htm | 10 - .../luasrc/view/admin_system/clock_status.htm | 36 - .../luasrc/view/admin_system/flashops.htm | 93 - .../luasrc/view/admin_system/ipkg.htm | 10 - .../luasrc/view/admin_system/packages.htm | 212 - .../luasrc/view/admin_system/reboot.htm | 59 - .../luasrc/view/admin_system/upgrade.htm | 59 - .../luasrc/view/admin_uci/apply.htm | 23 - .../luasrc/view/admin_uci/changelog.htm | 79 - .../luasrc/view/admin_uci/changes.htm | 46 - .../luasrc/view/admin_uci/revert.htm | 27 - .../luasrc/view/cbi/wireless_modefreq.htm | 168 - .../etc/uci-defaults/50_luci-mod-admin-full | 22 - .../modules/luci-mod-admin-full/src/Makefile | 14 - .../luci-mod-admin-full/src/luci-bwc.c | 778 - .../luci/modules/luci-mod-admin-mini/Makefile | 15 - .../luasrc/controller/mini/index.lua | 39 - .../luasrc/controller/mini/network.lua | 12 - .../luasrc/controller/mini/system.lua | 235 - .../luasrc/model/cbi/mini/dhcp.lua | 98 - .../luasrc/model/cbi/mini/index.lua | 4 - .../luasrc/model/cbi/mini/luci.lua | 37 - .../luasrc/model/cbi/mini/network.lua | 219 - .../luasrc/model/cbi/mini/passwd.lua | 35 - .../luasrc/model/cbi/mini/system.lua | 76 - .../luasrc/model/cbi/mini/wifi.lua | 350 - .../luasrc/view/mini/applyreboot.htm | 13 - .../luasrc/view/mini/backup.htm | 32 - .../luasrc/view/mini/index.htm | 13 - .../luasrc/view/mini/reboot.htm | 25 - .../luasrc/view/mini/upgrade.htm | 96 - .../luci/modules/luci-mod-failsafe/Makefile | 15 - .../luasrc/controller/failsafe/failsafe.lua | 202 - .../luasrc/view/failsafe/applyreboot.htm | 41 - .../luasrc/view/failsafe/flashops.htm | 34 - .../luasrc/view/failsafe/reboot.htm | 18 - .../luasrc/view/failsafe/upgrade.htm | 53 - .../luci-mod-freifunk-community/Makefile | 19 - .../luci/modules/luci-mod-freifunk/Makefile | 15 - .../htdocs/luci-static/flashing.html | 84 - .../luci-static/resources/OSMLatLon.htm | 20 - .../htdocs/luci-static/resources/flashing.gif | Bin 4261 -> 0 bytes .../resources/freifunk-map/hna.gif | Bin 209 -> 0 bytes .../resources/freifunk-map/node.gif | Bin 209 -> 0 bytes .../htdocs/luci-static/resources/osm.js | 130 - .../luasrc/controller/freifunk/freifunk.lua | 218 - .../controller/freifunk/remote_update.lua | 52 - .../luasrc/model/cbi/freifunk/basics.lua | 92 - .../luasrc/model/cbi/freifunk/contact.lua | 16 - .../luasrc/model/cbi/freifunk/profile.lua | 74 - .../model/cbi/freifunk/profile_expert.lua | 32 - .../luasrc/model/cbi/freifunk/user_index.lua | 30 - .../luasrc/view/cbi/osmll_value.htm | 55 - .../luasrc/view/freifunk-map/frame.htm | 29 - .../luasrc/view/freifunk-map/map.htm | 118 - .../luasrc/view/freifunk/adminindex.htm | 51 - .../luasrc/view/freifunk/contact.htm | 64 - .../luasrc/view/freifunk/index.htm | 84 - .../luasrc/view/freifunk/profile_error.htm | 11 - .../luasrc/view/freifunk/public_status.htm | 364 - .../luasrc/view/freifunk/remote_update.htm | 53 - .../luci-mod-freifunk/po/ca/freifunk.po | 407 - .../luci-mod-freifunk/po/cs/freifunk.po | 404 - .../luci-mod-freifunk/po/de/freifunk.po | 447 - .../luci-mod-freifunk/po/el/freifunk.po | 407 - .../luci-mod-freifunk/po/en/freifunk.po | 400 - .../luci-mod-freifunk/po/es/freifunk.po | 417 - .../luci-mod-freifunk/po/fr/freifunk.po | 395 - .../luci-mod-freifunk/po/he/freifunk.po | 394 - .../luci-mod-freifunk/po/hu/freifunk.po | 392 - .../luci-mod-freifunk/po/it/freifunk.po | 422 - .../luci-mod-freifunk/po/ja/freifunk.po | 395 - .../luci-mod-freifunk/po/ms/freifunk.po | 391 - .../luci-mod-freifunk/po/no/freifunk.po | 430 - .../luci-mod-freifunk/po/pl/freifunk.po | 422 - .../luci-mod-freifunk/po/pt-br/freifunk.po | 447 - .../luci-mod-freifunk/po/pt/freifunk.po | 401 - .../luci-mod-freifunk/po/ro/freifunk.po | 395 - .../luci-mod-freifunk/po/ru/freifunk.po | 451 - .../luci-mod-freifunk/po/sk/freifunk.po | 391 - .../luci-mod-freifunk/po/sv/freifunk.po | 392 - .../luci-mod-freifunk/po/tr/freifunk.po | 392 - .../luci-mod-freifunk/po/uk/freifunk.po | 393 - .../luci-mod-freifunk/po/vi/freifunk.po | 398 - .../luci-mod-freifunk/po/zh-cn/freifunk.po | 403 - .../luci-mod-freifunk/po/zh-tw/freifunk.po | 390 - package/luci/modules/luci-mod-rpc/Makefile | 17 - .../luci-mod-rpc/luasrc/controller/rpc.lua | 161 - .../modules/luci-mod-rpc/luasrc/jsonrpc.lua | 83 - .../luci-mod-rpc/luasrc/jsonrpcbind/uci.lua | 83 - package/luci/protocols/luci-proto-3g/Makefile | 14 - .../model/cbi/admin_network/proto_3g.lua | 147 - .../luci/protocols/luci-proto-ipip/Makefile | 16 - .../model/cbi/admin_network/proto_ipip.lua | 34 - .../luasrc/model/network/proto_ipip.lua | 40 - .../luci/protocols/luci-proto-ipv6/Makefile | 16 - .../model/cbi/admin_network/proto_464xlat.lua | 33 - .../model/cbi/admin_network/proto_6in4.lua | 102 - .../model/cbi/admin_network/proto_6rd.lua | 72 - .../model/cbi/admin_network/proto_6to4.lua | 37 - .../model/cbi/admin_network/proto_aiccu.lua | 136 - .../model/cbi/admin_network/proto_dhcpv6.lua | 58 - .../model/cbi/admin_network/proto_dslite.lua | 53 - .../model/cbi/admin_network/proto_hnet.lua | 37 - .../model/cbi/admin_network/proto_map.lua | 88 - .../luasrc/model/network/proto_4x6.lua | 63 - .../luasrc/model/network/proto_6x4.lua | 50 - .../luasrc/model/network/proto_aiccu.lua | 49 - .../luasrc/model/network/proto_dhcpv6.lua | 16 - .../luasrc/model/network/proto_hnet.lua | 16 - .../luci/protocols/luci-proto-ncm/Makefile | 14 - .../model/cbi/admin_network/proto_ncm.lua | 157 - .../luasrc/model/network/proto_ncm.lua | 61 - .../protocols/luci-proto-openconnect/Makefile | 14 - .../cbi/admin_network/proto_openconnect.lua | 90 - .../model/network/proto_openconnect.lua | 45 - .../luci/protocols/luci-proto-ppp/Makefile | 16 - .../model/cbi/admin_network/proto_l2tp.lua | 61 - .../model/cbi/admin_network/proto_ppp.lua | 127 - .../model/cbi/admin_network/proto_pppoa.lua | 133 - .../model/cbi/admin_network/proto_pppoe.lua | 127 - .../model/cbi/admin_network/proto_pppossh.lua | 122 - .../model/cbi/admin_network/proto_pptp.lua | 106 - .../luasrc/model/network/proto_ppp.lua | 94 - .../luci/protocols/luci-proto-qmi/Makefile | 14 - .../model/cbi/admin_network/proto_qmi.lua | 45 - .../luasrc/model/network/proto_qmi.lua | 51 - .../luci/protocols/luci-proto-relay/Makefile | 14 - .../model/cbi/admin_network/proto_relay.lua | 68 - .../luasrc/model/network/proto_relay.lua | 149 - .../luci/protocols/luci-proto-vpnc/Makefile | 20 - .../model/cbi/admin_network/proto_vpnc.lua | 79 - .../luasrc/model/network/proto_vpnc.lua | 46 - .../protocols/luci-proto-wireguard/Makefile | 17 - .../cbi/admin_network/proto_wireguard.lua | 169 - .../luasrc/model/network/proto_wireguard.lua | 42 - .../luci/themes/luci-theme-bootstrap/Makefile | 16 - .../htdocs/luci-static/bootstrap/cascade.css | 1982 -- .../htdocs/luci-static/bootstrap/favicon.ico | Bin 1150 -> 0 bytes .../htdocs/luci-static/bootstrap/html5.js | 3 - .../htdocs/luci-static/bootstrap/mobile.css | 21 - .../luasrc/view/themes/bootstrap/footer.htm | 30 - .../luasrc/view/themes/bootstrap/header.htm | 212 - .../etc/uci-defaults/30_luci-theme-bootstrap | 7 - .../luci-theme-freifunk-generic/Makefile | 14 - .../luci-static/freifunk-generic/bg.jpg | Bin 354 -> 0 bytes .../luci-static/freifunk-generic/cascade.css | 1072 - .../luci-static/freifunk-generic/header.jpg | Bin 316 -> 0 bytes .../luci-static/freifunk-generic/ie7.css | 20 - .../luci-static/freifunk-generic/logo.jpg | Bin 4722 -> 0 bytes .../luci-static/freifunk-generic/mobile.css | 59 - .../freifunk-generic/smallscreen.css | 3 - .../view/themes/freifunk-generic/footer.htm | 30 - .../view/themes/freifunk-generic/header.htm | 223 - .../30_luci-theme-freifunk-generic | 5 - .../luci/themes/luci-theme-material/Makefile | 14 - .../htdocs/luci-static/material/css/style.css | 1549 -- .../htdocs/luci-static/material/favicon.ico | Bin 2462 -> 0 bytes .../luci-static/material/fonts/font.eot | Bin 1912 -> 0 bytes .../luci-static/material/fonts/font.svg | 16 - .../luci-static/material/fonts/font.ttf | Bin 1748 -> 0 bytes .../luci-static/material/fonts/font.woff | Bin 1824 -> 0 bytes .../luci-static/material/js/jquery.min.js | 6 - .../htdocs/luci-static/material/js/script.js | 236 - .../htdocs/luci-static/material/logo.png | Bin 2224 -> 0 bytes .../luasrc/view/themes/material/footer.htm | 51 - .../luasrc/view/themes/material/header.htm | 253 - .../etc/uci-defaults/30_luci-theme-material | 7 - .../luci/themes/luci-theme-openwrt/Makefile | 14 - .../luci-static/openwrt.org/cascade.css | 1044 - .../htdocs/luci-static/openwrt.org/ie6.css | 77 - .../htdocs/luci-static/openwrt.org/ie7.css | 59 - .../htdocs/luci-static/openwrt.org/ie8.css | 12 - .../htdocs/luci-static/openwrt.org/tabbg.png | Bin 152 -> 0 bytes .../luasrc/view/themes/openwrt.org/footer.htm | 16 - .../luasrc/view/themes/openwrt.org/header.htm | 193 - .../etc/uci-defaults/30_luci-theme-openwrt | 6 - package/network/config/adblock/Makefile | 60 - .../network/config/adblock/files/README.md | 283 - .../config/adblock/files/adblock.blacklist | 0 .../network/config/adblock/files/adblock.conf | 186 - .../network/config/adblock/files/adblock.init | 89 - .../network/config/adblock/files/adblock.sh | 789 - .../config/adblock/files/adblock.whitelist | 0 package/network/config/firewall/Makefile | 12 +- package/network/config/gre/Makefile | 41 +- package/network/config/gre/files/gre.sh | 11 +- package/network/config/netifd/Makefile | 10 +- .../files/etc/hotplug.d/iface/00-netstate | 1 - .../files/etc/hotplug.d/net/20-smp-tune | 67 + .../netifd/files/lib/netifd/proto/dhcp.sh | 14 +- .../config/netifd/files/lib/network/config.sh | 3 - package/network/config/qos-scripts/Makefile | 1 + .../network/config/sqm-scripts-extra/Makefile | 47 - .../test_LAN_dual-isolate__piece_of_cake.qos | 102 - ...t_LAN_dual-isolate__piece_of_cake.qos.help | 12 - ...test_LAN_triple-isolate__piece_of_cake.qos | 102 - ...LAN_triple-isolate__piece_of_cake.qos.help | 12 - .../test_WAN_dual-isolate__piece_of_cake.qos | 89 - ...t_WAN_dual-isolate__piece_of_cake.qos.help | 10 - ...test_WAN_triple-isolate__piece_of_cake.qos | 89 - ...WAN_triple-isolate__piece_of_cake.qos.help | 10 - .../src/test_triple_isolated_llt_cake.qos | 82 - .../test_triple_isolated_llt_cake.qos.help | 3 - package/network/config/sqm-scripts/Makefile | 88 - package/network/config/swconfig/Makefile | 2 +- package/network/config/vti/Makefile | 2 +- package/network/config/vti/files/vti.sh | 7 +- package/network/config/vxlan/Makefile | 32 + package/network/config/vxlan/files/vxlan.sh | 150 + package/network/ipv6/6in4/Makefile | 2 +- package/network/ipv6/6in4/files/6in4.sh | 15 +- package/network/ipv6/6rd/Makefile | 2 +- package/network/ipv6/6rd/files/6rd.sh | 12 +- package/network/ipv6/ds-lite/Makefile | 2 +- package/network/ipv6/ds-lite/files/dslite.sh | 8 +- package/network/ipv6/map/Makefile | 2 +- package/network/ipv6/map/files/map.sh | 29 +- package/network/ipv6/map/src/mapcalc.c | 28 +- package/network/ipv6/odhcp6c/Makefile | 13 +- .../network/ipv6/odhcp6c/files/dhcpv6.script | 23 +- package/network/ipv6/odhcp6c/files/dhcpv6.sh | 32 +- .../patches/000-cflags_override.patch | 12 + package/network/services/authsae/Makefile | 46 - .../authsae/files/lib/wifi/authsae.sh | 65 - .../authsae/patches/100-musl_fix.patch | 20 - package/network/services/cjdns/Makefile | 148 - .../services/cjdns/files/cjdns.defaults | 127 - .../network/services/cjdns/files/cjdns.init | 32 - .../network/services/cjdns/files/cjdrouteconf | 30 - .../services/cjdns/lua/cjdns/admin.lua | 105 - .../services/cjdns/lua/cjdns/common.lua | 7 - .../network/services/cjdns/lua/cjdns/init.lua | 12 - .../network/services/cjdns/lua/cjdns/uci.lua | 289 - .../network/services/cjdns/lua/cjdns/udp.lua | 102 - package/network/services/dnsmasq/Makefile | 40 +- .../services/dnsmasq/files/dhcp-script.sh | 46 + .../network/services/dnsmasq/files/dhcp.conf | 2 +- .../services/dnsmasq/files/dnsmasq.init | 404 +- .../services/dnsmasq/files/dnsmasq_acl.json | 4 + .../services/dnsmasq/files/dnsmasqsec.hotplug | 2 +- .../services/dnsmasq/files/rfc6761.conf | 11 + ...with-broken-upstream-DNSSEC-warnings.patch | 26 + ...ness-when-no-ping-AND-dhcp-sequentia.patch | 35 + ...DNS-error-returns-from-upstream-and-.patch | 184 + ...4-Add-packet-dump-debugging-facility.patch | 587 + ...ther-servers-on-receipt-of-SERVFAIL-.patch | 22 + ...ry-on-REFUSED-or-SERVFAIL-for-DNSSEC.patch | 87 + ...NSSEC-queries-to-a-different-server-.patch | 100 + .../0008-Fix-logging-in-previous.patch | 41 + ...As-for-interfaces-which-appear-after.patch | 44 + ...ery-large-cachesize-config-instead-o.patch | 38 + ...0-dnssec-improve-timestamp-heuristic.patch | 4 +- .../services/dnsmasq/patches/240-ubus.patch | 128 + ...nfinite-retries-in-strict-order-mode.patch | 45 - .../patches/270-dnssec-wildcards.patch | 202 - package/network/services/dropbear/Config.in | 9 + package/network/services/dropbear/Makefile | 11 +- .../services/dropbear/files/dropbear.init | 11 +- .../patches/010-runtime-maxauthtries.patch | 130 + .../patches/120-openwrt_options.patch | 6 +- ...610-skip-default-keys-in-custom-runs.patch | 4 +- package/network/services/hostapd/Config.in | 73 +- package/network/services/hostapd/Makefile | 338 +- .../hostapd/files/hostapd-full.config | 262 +- .../hostapd/files/hostapd-mini.config | 256 +- .../network/services/hostapd/files/hostapd.sh | 164 +- .../hostapd/files/wpa_supplicant-full.config | 373 +- .../hostapd/files/wpa_supplicant-mini.config | 392 +- .../hostapd/files/wpa_supplicant-p2p.config | 369 +- ...on-between-AssocResp-callback-and-4a.patch | 83 - ...1-mesh-factor-out-mesh-join-function.patch | 211 + ...Reassociation-Request-frame-dropping.patch | 36 - ...2-mesh-factor-out-rsn-initialization.patch | 133 + ...-clearing-on-Authentication-frame-RX.patch | 40 - .../003-mesh-relocate-RSN-init-function.patch | 41 + ...ibility-to-send-debug-messages-to-sy.patch | 145 - ...ompletion-callback-to-complete-mesh-.patch | 73 + ...d-key-reinstallation-in-FT-handshake.patch | 154 - ...ountry-setting-to-mesh-configuration.patch | 35 + ...lation-of-an-already-in-use-group-ke.patch | 244 - ...rnel-driver-DFS-handler-in-userspace.patch | 48 + ...n-of-GTK-IGTK-reinstallation-of-WNM-.patch | 173 - ...annel-attributes-before-running-Mesh.patch | 33 + ...event-installation-of-an-all-zero-TK.patch | 65 - ...ce-type-to-mesh-before-setting-inter.patch | 36 + ...TK-rekeying-to-generate-a-new-ANonce.patch | 56 - .../009-mesh-set-mesh-center-frequency.patch | 22 + ...0-TDLS-Reject-TPK-TK-reconfiguration.patch | 124 - ...-mesh-interface-on-dfs-event-handler.patch | 176 + ...leep-Mode-Response-without-pending-r.patch | 35 - ...hannels-to-be-selected-if-dfs-is-ena.patch | 79 + ...multiple-Reassociation-Response-fram.patch | 68 - ...-mesh-to-send-channel-switch-request.patch | 25 + ...ons-wpa_group_update_count-and-wpa_p.patch | 305 - ...-do-not-allow-pri-sec-channel-switch.patch | 27 + ...e-against-PTK-reinstalls-in-4-way-ha.patch | 34 - ...ot-allow-scan-result-to-swap-pri-sec.patch | 24 + ...-and-check-for-this-when-deriving-PT.patch | 53 - ...sh-do-not-use-offchan-mgmt-tx-on-DFS.patch | 49 + ...-workaround-for-key-reinstallation-a.patch | 221 - ...-fix-channel-switch-error-during-CAC.patch | 64 + ...stentcy-checks-for-PTK-component-len.patch | 92 - ...nterface-context-to-send-DFS-event-m.patch | 107 + ...rmation-in-supplicant-state-machine-.patch | 25 - ...18-mesh-make-forwarding-configurable.patch | 219 + ...leep-Mode-Request-in-wnm_sleep_mode-.patch | 35 - ...x-crash-with-CONFIG_TAXONOMY-enabled.patch | 23 + ...CHANWIDTH_USE_HT-to-max_oper_chwidth.patch | 49 + ...ent-use-of-VHT20-config-in-mesh-mode.patch | 82 + ...mesh-fix-parsing-of-max_oper_chwidth.patch | 45 + .../hostapd/patches/100-daemonize_fix.patch | 2 +- .../hostapd/patches/110-no_eapol_fix.patch | 2 +- ...120-disable_bridge_packet_workaround.patch | 2 +- .../hostapd/patches/200-multicall.patch | 65 +- .../services/hostapd/patches/300-noscan.patch | 18 +- .../hostapd/patches/301-mesh-noscan.patch | 68 + .../patches/310-rescan_immediately.patch | 2 +- .../patches/330-nl80211_fix_set_freq.patch | 2 +- .../patches/340-reload_freq_change.patch | 29 +- .../patches/350-nl80211_del_beacon_bss.patch | 46 +- .../patches/360-ctrl_iface_reload.patch | 10 +- .../hostapd/patches/370-ap_sta_support.patch | 247 +- .../patches/380-disable_ctrl_iface_mib.patch | 55 +- .../381-hostapd_cli_UNKNOWN-COMMAND.patch | 13 + .../patches/390-wpa_ie_cap_workaround.patch | 4 +- .../400-wps_single_auth_enc_type.patch | 4 +- .../patches/420-indicate-features.patch | 4 +- .../patches/430-hostapd_cli_ifdef.patch | 40 +- .../hostapd/patches/450-scan_wait.patch | 12 +- ...dd-new-config-params-to-be-used-with.patch | 20 +- ...-use-new-parameters-during-ibss-join.patch | 4 +- .../462-wpa_s-support-htmode-param.patch | 156 - .../patches/463-add-mcast_rate-to-11s.patch | 68 + .../patches/464-fix-mesh-obss-check.patch | 19 + .../patches/470-survey_data_fallback.patch | 2 +- .../hostapd/patches/600-ubus_support.patch | 154 +- .../services/hostapd/src/src/ap/ubus.c | 542 +- .../services/hostapd/src/src/ap/ubus.h | 5 + package/network/services/igmpproxy/Makefile | 8 +- .../services/igmpproxy/files/igmpproxy.config | 6 +- .../services/igmpproxy/files/igmpproxy.init | 19 +- ...s-with-IP-Router-Alert-option-RFC-21.patch | 79 - ...nterface-state-to-disabled-wrt-29458.patch | 43 - ...ports-for-downstream-interfaces-wrt-.patch | 164 - ...ports-forwarding-to-upstream-interfa.patch | 62 - .../patches/010-missing_include.patch | 10 - ...e-downstream-interface-igmp-messages.patch | 19 - ...monotic-clock-instead-of-time-of-day.patch | 120 - .../patches/200-allow_wildcard_addr.patch | 24 - ...250-fix_multiple_downlink_interfaces.patch | 154 - package/network/services/ipset-dns/Makefile | 6 +- .../patches/100-simultaneous-ipv4-ipv6.patch | 57 - package/network/services/lldpd/Makefile | 4 +- .../network/services/lldpd/files/lldpd.config | 2 +- .../network/services/lldpd/files/lldpd.init | 5 +- .../services/nfs-kernel-server/Makefile | 159 - .../nfs-kernel-server/files/nfsd.exports | 1 - .../nfs-kernel-server/files/nfsd.init | 38 - .../patches/100-no_malloc_h.patch | 10 - .../patches/101-musl-getservbyport.patch | 16 - .../patches/102-limits.patch | 10 - package/network/services/odhcpd/Makefile | 98 +- .../services/odhcpd/files/odhcpd.defaults | 1 + package/network/services/omcproxy/Makefile | 8 +- .../services/omcproxy/files/omcproxy.init | 4 +- .../services/openvpn-easy-rsa/Makefile | 41 +- .../openvpn-easy-rsa/files/easy-rsa.index | 0 .../openvpn-easy-rsa/files/easy-rsa.serial | 1 - .../files/openvpn-easy-rsa.upgrade | 1 + .../patches/100-run-ootb.patch | 152 - package/network/services/openvpn/Makefile | 3 +- .../services/openvpn/files/openvpn.options | 8 +- package/network/services/portmap/Makefile | 53 - .../services/portmap/files/portmap.init | 13 - .../services/portmap/patches/101-no_pie.patch | 12 - package/network/services/ppp/Makefile | 10 +- .../services/ppp/files/lib/netifd/ppp6-up | 3 + .../ppp/patches/140-pppoe_compile_fix.patch | 62 +- .../ppp/patches/500-add-pptp-plugin.patch | 3 +- .../services/ppp/patches/520-uniq.patch | 12 +- package/network/services/relayd/Makefile | 2 +- package/network/services/samba36/Makefile | 49 +- .../services/samba36/files/lib/samba.sh | 89 + .../services/samba36/files/samba.config | 4 +- .../services/samba36/files/samba.hotplug | 11 + .../network/services/samba36/files/samba.init | 13 +- .../services/samba36/files/smb.conf.template | 12 +- .../patches/028-CVE-2016-2125-v3.6.patch | 59 + ...3-6.patch => 029-CVE-2017-7494-v3-6.patch} | 0 ...75.patch => 030-CVE-2017-15275-v3.6.patch} | 0 .../patches/031-CVE-2017-12163-v3.6.patch | 136 + .../patches/032-CVE-2017-12150-v3.6.patch | 75 + .../patches/032-CVE-2018-1050-v3-6.patch | 49 + .../patches/200-remove_printer_support.patch | 4 +- package/network/services/shellinabox/Makefile | 64 - .../shellinabox/files/shellinabox.init | 17 - .../services/shellinabox/files/style.css | 24 - .../shellinabox/old/000-makefile-arch.patch | 22 - .../old/001-makefile-objcopy.patch | 105 - .../shellinabox/old/002-httpconn-isnan.patch | 20 - .../network/services/shellinabox/old/readme | 5 - package/network/services/tor/Makefile | 145 - package/network/services/tor/files/tor.init | 26 - .../services/tor/patches/001-torrc.patch | 25 - package/network/services/uhttpd/Makefile | 27 +- .../services/uhttpd/files/uhttpd.config | 6 +- .../network/services/uhttpd/files/uhttpd.init | 2 +- package/network/services/umdns/Makefile | 8 +- package/network/services/wireguard/Makefile | 12 +- .../services/wireguard/files/wireguard.sh | 6 + .../wireguard/patches/100-portability.patch | 18 - .../network/utils/adb-enablemodem/Makefile | 26 + .../adb-enablemodem/files/adb-enablemodem | 64 + package/network/utils/arptables/Makefile | 2 +- package/network/utils/comgt/Makefile | 2 +- package/network/utils/comgt/files/ncm.json | 11 + package/network/utils/comgt/files/ncm.sh | 27 +- package/network/utils/comgt/files/setpin.gcom | 1 + .../network/utils/conntrack-tools/Makefile | 13 +- package/network/utils/curl/Config.in | 12 +- package/network/utils/curl/Makefile | 45 +- .../patches/001-curl-https-openssl-fix.patch | 34 - .../curl/patches/100-CVE-2017-2629.patch | 33 - .../curl/patches/101-CVE-2017-7407.patch | 165 - .../curl/patches/102-CVE-2017-7468.patch | 264 - .../curl/patches/103-CVE-2017-1000100.patch | 41 - .../curl/patches/104-CVE-2017-1000101.patch | 33 - .../curl/patches/105-CVE-2017-8816.patch | 67 - .../curl/patches/106-CVE-2017-8817.patch | 141 - .../curl/patches/200-no_docs_tests.patch | 28 +- ...bedtls-disable-runtime-version-check.patch | 6 +- .../320-mbedtls-nonblocking-handshake.patch | 27 - package/network/utils/ebtables/Makefile | 8 +- .../patches/200-fix-extension-init.patch | 15 +- package/network/utils/ethtool/Makefile | 59 + package/network/utils/iftop/Makefile | 6 +- package/network/utils/iperf/Makefile | 13 +- package/network/utils/iperf3/Makefile | 40 +- package/network/utils/iproute2/Makefile | 83 +- .../utils/iproute2/patches/001-config.patch | 4 +- ...int-fix-hidden-64-bit-type-promotion.patch | 288 + .../iproute2/patches/004-darwin_fixes.patch | 2 +- .../utils/iproute2/patches/006-no_sctp.patch | 18 - .../utils/iproute2/patches/007-no_arpd.patch | 8 +- .../utils/iproute2/patches/008-no_netem.patch | 8 +- .../patches/009-keep_libmnl_optional.patch | 11 + .../iproute2/patches/010-type_fixes.patch | 396 - .../patches/100-allow_pfifo_fast.patch | 2 +- .../iproute2/patches/110-extra-ccopts.patch | 2 +- .../iproute2/patches/120-libnetlink-pic.patch | 8 +- .../patches/130-missing_include.patch | 20 - .../utils/iproute2/patches/300-ip_tiny.patch | 49 +- .../patches/900-drop_FAILED_POLICY.patch | 37 +- .../910-sanitize_headers_for_musl.patch | 10 - .../patches/911-fix_in_h_include.patch | 30 - .../iproute2/patches/950-add-cake-to-tc.patch | 1439 +- ...-monitor-can-t-work-when-NET_NS-is-n.patch | 35 - package/network/utils/ipset/Makefile | 23 +- ...t-reference-to-u_int8_t-with-uint8_t.patch | 25 + package/network/utils/iptables/Makefile | 107 +- .../020-iptables-disable-modprobe.patch | 4 +- ..._bpf-Fix-build-with-old-kernel-versi.patch | 40 + .../patches/030-no-libnfnetlink.patch | 94 - .../iptables/patches/050-optional-xml.patch | 2 +- .../iptables/patches/100-bash-location.patch | 8 - .../patches/200-configurable_builtin.patch | 45 +- .../iptables/patches/300-musl_fixes.patch | 127 - .../iptables/patches/600-shared-libext.patch | 66 +- .../700-disable-legacy-revisions.patch | 51 +- .../patches/800-flowoffload_target.patch | 95 + package/network/utils/iputils/Makefile | 1 + package/network/utils/iw/Makefile | 7 +- .../utils/iw/patches/001-nl80211_h_sync.patch | 314 +- .../utils/iw/patches/120-antenna_gain.patch | 2 +- .../utils/iw/patches/200-reduce_size.patch | 102 +- package/network/utils/iwcap/src/iwcap.c | 26 +- package/network/utils/iwinfo/Makefile | 8 +- package/network/utils/linux-atm/Makefile | 1 + .../network/utils/linux-atm/files/br2684ctl | 7 +- .../patches/501-br2684ctl_itfname.patch | 74 + package/network/utils/nftables/Makefile | 20 +- .../patches/100-disable-doc-generation.patch | 8 - package/network/utils/rssileds/Makefile | 6 +- package/network/utils/tcpdump/Makefile | 1 + .../tcpdump/patches/100-tcpdump_mini.patch | 37 +- package/network/utils/umbim/Makefile | 2 +- package/network/utils/uqmi/Makefile | 4 +- .../utils/uqmi/files/lib/netifd/proto/qmi.sh | 96 +- package/network/utils/wpan-tools/Makefile | 1 + ...h-fix-compatibility-with-libnl-3.3.0.patch | 44 + .../network/utils/wwan/files/data/0421-03a7 | 4 +- .../network/utils/wwan/files/data/0421-060d | 4 +- .../network/utils/wwan/files/data/0421-060e | 4 +- .../network/utils/wwan/files/data/0421-0612 | 4 +- .../network/utils/wwan/files/data/0421-0619 | 4 +- .../network/utils/wwan/files/data/0421-061e | 4 +- .../network/utils/wwan/files/data/0421-0623 | 4 +- .../network/utils/wwan/files/data/0421-0629 | 4 +- .../network/utils/wwan/files/data/0421-062d | 4 +- .../network/utils/wwan/files/data/0421-062f | 4 +- .../network/utils/wwan/files/data/0421-0638 | 4 +- .../network/utils/wwan/files/data/05c6-0016 | 4 +- .../network/utils/wwan/files/data/05c6-0023 | 2 +- .../network/utils/wwan/files/data/05c6-00a0 | 4 +- .../network/utils/wwan/files/data/05c6-6000 | 2 +- .../network/utils/wwan/files/data/05c6-9000 | 2 +- .../network/utils/wwan/files/data/07d1-3e01 | 2 +- .../network/utils/wwan/files/data/07d1-3e02 | 2 +- .../network/utils/wwan/files/data/07d1-7e11 | 4 +- .../network/utils/wwan/files/data/0af0-6901 | 2 +- .../network/utils/wwan/files/data/0af0-7201 | 2 +- .../network/utils/wwan/files/data/0af0-9200 | 2 +- .../network/utils/wwan/files/data/0b3c-c003 | 2 +- .../network/utils/wwan/files/data/0bdb-1900 | 4 +- .../network/utils/wwan/files/data/0bdb-1902 | 4 +- .../network/utils/wwan/files/data/0bdb-190a | 4 +- .../network/utils/wwan/files/data/0bdb-190d | 4 +- .../network/utils/wwan/files/data/0bdb-1910 | 4 +- .../network/utils/wwan/files/data/0c88-17da | 2 +- .../network/utils/wwan/files/data/0c88-180a | 2 +- .../network/utils/wwan/files/data/0f3d-68aa | 2 +- .../network/utils/wwan/files/data/1004-6124 | 4 +- .../network/utils/wwan/files/data/1004-6141 | 4 +- .../network/utils/wwan/files/data/1004-6157 | 4 +- .../network/utils/wwan/files/data/1004-618f | 2 +- .../network/utils/wwan/files/data/106c-3711 | 4 +- .../network/utils/wwan/files/data/106c-3714 | 4 +- .../network/utils/wwan/files/data/106c-3715 | 4 +- .../network/utils/wwan/files/data/106c-3716 | 4 +- .../network/utils/wwan/files/data/106c-3717 | 4 +- .../network/utils/wwan/files/data/1199-0017 | 2 +- .../network/utils/wwan/files/data/1199-0018 | 2 +- .../network/utils/wwan/files/data/1199-0019 | 2 +- .../network/utils/wwan/files/data/1199-0020 | 2 +- .../network/utils/wwan/files/data/1199-0021 | 2 +- .../network/utils/wwan/files/data/1199-0022 | 2 +- .../network/utils/wwan/files/data/1199-0023 | 2 +- .../network/utils/wwan/files/data/1199-0024 | 2 +- .../network/utils/wwan/files/data/1199-0025 | 2 +- .../network/utils/wwan/files/data/1199-0026 | 2 +- .../network/utils/wwan/files/data/1199-0027 | 2 +- .../network/utils/wwan/files/data/1199-0028 | 2 +- .../network/utils/wwan/files/data/1199-0112 | 2 +- .../network/utils/wwan/files/data/1199-0120 | 2 +- .../network/utils/wwan/files/data/1199-0218 | 2 +- .../network/utils/wwan/files/data/1199-0220 | 2 +- .../network/utils/wwan/files/data/1199-0224 | 2 +- .../network/utils/wwan/files/data/1199-0301 | 2 +- .../network/utils/wwan/files/data/1199-6802 | 2 +- .../network/utils/wwan/files/data/1199-6803 | 2 +- .../network/utils/wwan/files/data/1199-6804 | 2 +- .../network/utils/wwan/files/data/1199-6805 | 2 +- .../network/utils/wwan/files/data/1199-6808 | 2 +- .../network/utils/wwan/files/data/1199-6809 | 2 +- .../network/utils/wwan/files/data/1199-6813 | 2 +- .../network/utils/wwan/files/data/1199-6815 | 2 +- .../network/utils/wwan/files/data/1199-6816 | 2 +- .../network/utils/wwan/files/data/1199-6820 | 2 +- .../network/utils/wwan/files/data/1199-6821 | 2 +- .../network/utils/wwan/files/data/1199-6822 | 2 +- .../network/utils/wwan/files/data/1199-6833 | 2 +- .../network/utils/wwan/files/data/1199-6834 | 2 +- .../network/utils/wwan/files/data/1199-6835 | 2 +- .../network/utils/wwan/files/data/1199-6838 | 2 +- .../network/utils/wwan/files/data/1199-6839 | 2 +- .../network/utils/wwan/files/data/1199-683a | 2 +- .../network/utils/wwan/files/data/1199-683b | 2 +- .../network/utils/wwan/files/data/1199-6850 | 2 +- .../network/utils/wwan/files/data/1199-6851 | 2 +- .../network/utils/wwan/files/data/1199-6852 | 2 +- .../network/utils/wwan/files/data/1199-6853 | 2 +- .../network/utils/wwan/files/data/1199-6855 | 2 +- .../network/utils/wwan/files/data/1199-6856 | 2 +- .../network/utils/wwan/files/data/1199-6859 | 2 +- .../network/utils/wwan/files/data/1199-685a | 2 +- .../network/utils/wwan/files/data/1199-6880 | 2 +- .../network/utils/wwan/files/data/1199-6890 | 2 +- .../network/utils/wwan/files/data/1199-6891 | 2 +- .../network/utils/wwan/files/data/1199-6892 | 2 +- .../network/utils/wwan/files/data/1199-6893 | 2 +- .../network/utils/wwan/files/data/1199-68aa | 2 +- .../network/utils/wwan/files/data/12d1-1035 | 2 +- .../network/utils/wwan/files/data/12d1-1406 | 2 +- .../network/utils/wwan/files/data/12d1-140b | 2 +- .../network/utils/wwan/files/data/12d1-1412 | 2 +- .../network/utils/wwan/files/data/12d1-141b | 2 +- .../network/utils/wwan/files/data/12d1-1433 | 2 +- .../network/utils/wwan/files/data/12d1-1436 | 2 +- .../network/utils/wwan/files/data/12d1-1444 | 2 +- .../network/utils/wwan/files/data/12d1-144e | 2 +- .../network/utils/wwan/files/data/12d1-1464 | 2 +- .../network/utils/wwan/files/data/12d1-1465 | 2 +- .../network/utils/wwan/files/data/12d1-1491 | 2 +- .../network/utils/wwan/files/data/12d1-14a5 | 2 +- .../network/utils/wwan/files/data/12d1-14a8 | 2 +- .../network/utils/wwan/files/data/12d1-14ae | 2 +- .../network/utils/wwan/files/data/12d1-14cb | 2 +- .../network/utils/wwan/files/data/12d1-14cf | 2 +- .../network/utils/wwan/files/data/12d1-1506 | 2 +- .../network/utils/wwan/files/data/12d1-151d | 2 +- .../network/utils/wwan/files/data/12d1-156c | 2 +- .../network/utils/wwan/files/data/12d1-1c05 | 2 +- .../network/utils/wwan/files/data/12d1-1c07 | 2 +- .../network/utils/wwan/files/data/12d1-1c08 | 2 +- .../network/utils/wwan/files/data/12d1-1c10 | 2 +- .../network/utils/wwan/files/data/12d1-1c12 | 2 +- .../network/utils/wwan/files/data/12d1-1c23 | 2 +- .../network/utils/wwan/files/data/1410-1400 | 2 +- .../network/utils/wwan/files/data/1410-1410 | 2 +- .../network/utils/wwan/files/data/1410-1420 | 2 +- .../network/utils/wwan/files/data/1410-1430 | 2 +- .../network/utils/wwan/files/data/1410-1450 | 2 +- .../network/utils/wwan/files/data/1410-2100 | 2 +- .../network/utils/wwan/files/data/1410-2110 | 2 +- .../network/utils/wwan/files/data/1410-2120 | 2 +- .../network/utils/wwan/files/data/1410-2130 | 2 +- .../network/utils/wwan/files/data/1410-2400 | 2 +- .../network/utils/wwan/files/data/1410-2410 | 2 +- .../network/utils/wwan/files/data/1410-2420 | 2 +- .../network/utils/wwan/files/data/1410-4100 | 2 +- .../network/utils/wwan/files/data/1410-4400 | 2 +- .../network/utils/wwan/files/data/1410-6000 | 2 +- .../network/utils/wwan/files/data/1410-6001 | 2 +- .../network/utils/wwan/files/data/1410-6002 | 2 +- .../network/utils/wwan/files/data/1410-6010 | 2 +- .../network/utils/wwan/files/data/1410-7001 | 2 +- .../network/utils/wwan/files/data/1410-7003 | 2 +- .../network/utils/wwan/files/data/1410-7030 | 2 +- .../network/utils/wwan/files/data/1410-7031 | 4 +- .../network/utils/wwan/files/data/1410-7041 | 2 +- .../network/utils/wwan/files/data/1410-7042 | 2 +- .../network/utils/wwan/files/data/1529-3100 | 4 +- .../network/utils/wwan/files/data/16d5-6202 | 2 +- .../network/utils/wwan/files/data/16d5-6501 | 2 +- .../network/utils/wwan/files/data/16d5-6502 | 2 +- .../network/utils/wwan/files/data/16d5-6603 | 4 +- .../network/utils/wwan/files/data/16d5-900d | 4 +- .../network/utils/wwan/files/data/16d8-5141 | 4 +- .../network/utils/wwan/files/data/16d8-5533 | 4 +- .../network/utils/wwan/files/data/16d8-5543 | 4 +- .../network/utils/wwan/files/data/16d8-5553 | 4 +- .../network/utils/wwan/files/data/16d8-6002 | 2 +- .../network/utils/wwan/files/data/16d8-6006 | 2 +- .../network/utils/wwan/files/data/16d8-6522 | 4 +- .../network/utils/wwan/files/data/16d8-6523 | 4 +- .../network/utils/wwan/files/data/16d8-6532 | 4 +- .../network/utils/wwan/files/data/16d8-6533 | 4 +- .../network/utils/wwan/files/data/16d8-6543 | 4 +- .../network/utils/wwan/files/data/16d8-680a | 4 +- .../network/utils/wwan/files/data/19d2-0001 | 2 +- .../network/utils/wwan/files/data/19d2-0015 | 2 +- .../network/utils/wwan/files/data/19d2-0016 | 2 +- .../network/utils/wwan/files/data/19d2-0018 | 2 +- .../network/utils/wwan/files/data/19d2-0022 | 2 +- .../network/utils/wwan/files/data/19d2-0024 | 2 +- .../network/utils/wwan/files/data/19d2-0033 | 2 +- .../network/utils/wwan/files/data/19d2-0037 | 2 +- .../network/utils/wwan/files/data/19d2-0039 | 2 +- .../network/utils/wwan/files/data/19d2-0057 | 2 +- .../network/utils/wwan/files/data/19d2-0064 | 2 +- .../network/utils/wwan/files/data/19d2-0066 | 2 +- .../network/utils/wwan/files/data/19d2-0073 | 2 +- .../network/utils/wwan/files/data/19d2-0079 | 2 +- .../network/utils/wwan/files/data/19d2-0082 | 2 +- .../network/utils/wwan/files/data/19d2-0086 | 2 +- .../network/utils/wwan/files/data/19d2-0091 | 2 +- .../network/utils/wwan/files/data/19d2-0094 | 2 +- .../network/utils/wwan/files/data/19d2-0108 | 2 +- .../network/utils/wwan/files/data/19d2-0116 | 4 +- .../network/utils/wwan/files/data/19d2-0117 | 2 +- .../network/utils/wwan/files/data/19d2-0128 | 2 +- .../network/utils/wwan/files/data/19d2-0142 | 4 +- .../network/utils/wwan/files/data/19d2-0143 | 4 +- .../network/utils/wwan/files/data/19d2-0152 | 2 +- .../network/utils/wwan/files/data/19d2-0170 | 4 +- .../network/utils/wwan/files/data/19d2-1003 | 4 +- .../network/utils/wwan/files/data/19d2-1015 | 4 +- .../network/utils/wwan/files/data/19d2-1172 | 4 +- .../network/utils/wwan/files/data/19d2-1173 | 4 +- .../network/utils/wwan/files/data/19d2-1177 | 4 +- .../network/utils/wwan/files/data/19d2-1181 | 4 +- .../network/utils/wwan/files/data/19d2-1203 | 4 +- .../network/utils/wwan/files/data/19d2-1208 | 4 +- .../network/utils/wwan/files/data/19d2-1211 | 4 +- .../network/utils/wwan/files/data/19d2-1212 | 4 +- .../network/utils/wwan/files/data/19d2-1217 | 4 +- .../network/utils/wwan/files/data/19d2-1218 | 4 +- .../network/utils/wwan/files/data/19d2-1220 | 4 +- .../network/utils/wwan/files/data/19d2-1222 | 4 +- .../network/utils/wwan/files/data/19d2-1512 | 4 +- .../network/utils/wwan/files/data/19d2-1515 | 4 +- .../network/utils/wwan/files/data/19d2-1518 | 4 +- .../network/utils/wwan/files/data/19d2-1519 | 4 +- .../network/utils/wwan/files/data/19d2-1522 | 4 +- .../network/utils/wwan/files/data/19d2-1525 | 4 +- .../network/utils/wwan/files/data/19d2-1527 | 4 +- .../network/utils/wwan/files/data/19d2-1537 | 4 +- .../network/utils/wwan/files/data/19d2-1538 | 4 +- .../network/utils/wwan/files/data/19d2-1544 | 4 +- .../network/utils/wwan/files/data/19d2-2003 | 2 +- .../network/utils/wwan/files/data/19d2-ffdd | 2 +- .../network/utils/wwan/files/data/19d2-ffe4 | 4 +- .../network/utils/wwan/files/data/19d2-ffe9 | 2 +- .../network/utils/wwan/files/data/19d2-fff1 | 2 +- .../network/utils/wwan/files/data/19d2-fffb | 2 +- .../network/utils/wwan/files/data/19d2-fffc | 2 +- .../network/utils/wwan/files/data/19d2-fffd | 2 +- .../network/utils/wwan/files/data/19d2-fffe | 2 +- .../network/utils/wwan/files/data/19d2-ffff | 2 +- .../network/utils/wwan/files/data/1a8d-1002 | 2 +- .../network/utils/wwan/files/data/1a8d-1003 | 2 +- .../network/utils/wwan/files/data/1a8d-1007 | 2 +- .../network/utils/wwan/files/data/1a8d-1009 | 2 +- .../network/utils/wwan/files/data/1a8d-100c | 2 +- .../network/utils/wwan/files/data/1a8d-100d | 2 +- .../network/utils/wwan/files/data/1a8d-2006 | 4 +- .../network/utils/wwan/files/data/1bbb-0000 | 2 +- .../network/utils/wwan/files/data/1bbb-0012 | 4 +- .../network/utils/wwan/files/data/1bbb-0017 | 2 +- .../network/utils/wwan/files/data/1bbb-0052 | 2 +- .../network/utils/wwan/files/data/1bbb-00b7 | 2 +- .../network/utils/wwan/files/data/1bbb-00ca | 4 +- .../network/utils/wwan/files/data/1c9e-6060 | 4 +- .../network/utils/wwan/files/data/1c9e-6061 | 4 +- .../network/utils/wwan/files/data/1c9e-9000 | 4 +- .../network/utils/wwan/files/data/1c9e-9603 | 2 +- .../network/utils/wwan/files/data/1c9e-9605 | 2 +- .../network/utils/wwan/files/data/1c9e-9607 | 2 +- .../network/utils/wwan/files/data/1c9e-9801 | 4 +- .../network/utils/wwan/files/data/1c9e-9900 | 4 +- .../network/utils/wwan/files/data/1e0e-9000 | 2 +- .../network/utils/wwan/files/data/1e0e-9100 | 2 +- .../network/utils/wwan/files/data/1e0e-9200 | 2 +- .../network/utils/wwan/files/data/1e0e-ce16 | 2 +- .../network/utils/wwan/files/data/1e0e-cefe | 4 +- .../network/utils/wwan/files/data/2001-7d00 | 4 +- .../network/utils/wwan/files/data/2001-7d01 | 2 +- .../network/utils/wwan/files/data/2001-7d02 | 2 +- .../network/utils/wwan/files/data/2001-7d03 | 2 +- .../network/utils/wwan/files/data/211f-6801 | 2 +- .../network/utils/wwan/files/data/413c-8114 | 2 +- .../network/utils/wwan/files/data/413c-8115 | 2 +- .../network/utils/wwan/files/data/413c-8116 | 2 +- .../network/utils/wwan/files/data/413c-8117 | 2 +- .../network/utils/wwan/files/data/413c-8118 | 2 +- .../network/utils/wwan/files/data/413c-8128 | 2 +- .../network/utils/wwan/files/data/413c-8129 | 2 +- .../network/utils/wwan/files/data/413c-8133 | 2 +- .../network/utils/wwan/files/data/413c-8134 | 2 +- .../network/utils/wwan/files/data/413c-8135 | 2 +- .../network/utils/wwan/files/data/413c-8136 | 2 +- .../network/utils/wwan/files/data/413c-8137 | 2 +- .../network/utils/wwan/files/data/413c-8138 | 2 +- .../network/utils/wwan/files/data/413c-8147 | 4 +- .../network/utils/wwan/files/data/413c-8180 | 2 +- .../network/utils/wwan/files/data/413c-8181 | 2 +- .../network/utils/wwan/files/data/413c-8182 | 2 +- .../network/utils/wwan/files/data/413c-819b | 2 +- package/network/utils/wwan/files/wwan.sh | 26 +- package/network/utils/xtables-addons/Makefile | 151 - .../002-fix-kernel-version-detection.patch | 11 - .../patches/100-add-rtsp-conntrack.patch | 1526 -- .../patches/200-add-lua-packetscript.patch | 18158 ---------------- .../patches/201-fix-lua-packetscript.patch | 107 - .../patches/300-geoip-endian-detection.patch | 18 - package/system/ca-certificates/Makefile | 4 +- package/system/fstools/Makefile | 24 +- package/system/mountd/Makefile | 45 - package/system/mountd/files/mountd.config | 3 - package/system/mountd/files/mountd.init | 22 - package/system/mtd/Makefile | 2 + package/system/mtd/src/mtd.c | 2 +- package/system/opkg/Makefile | 24 +- package/system/procd/Makefile | 53 +- .../system/procd/files/hotplug-preinit.json | 8 +- package/system/procd/files/hotplug.json | 22 +- package/system/procd/files/nand-preinit.sh | 21 - package/system/procd/files/nand.sh | 375 - package/system/procd/files/procd.sh | 38 +- package/system/rpcd/Makefile | 8 +- package/system/ubox/Makefile | 4 +- package/system/ubox/files/log.init | 2 + package/system/ubus/Makefile | 2 +- package/system/uci/Makefile | 8 +- package/system/usign/Makefile | 2 +- package/utils/adb/Makefile | 4 +- package/utils/bsdiff/Makefile | 4 +- package/utils/busybox/Config-defaults.in | 1520 +- package/utils/busybox/Makefile | 99 +- package/utils/busybox/config/Config.in | 1017 +- .../utils/busybox/config/archival/Config.in | 185 +- .../busybox/config/console-tools/Config.in | 101 +- .../utils/busybox/config/coreutils/Config.in | 705 +- .../busybox/config/debianutils/Config.in | 20 +- .../utils/busybox/config/editors/Config.in | 37 +- .../utils/busybox/config/findutils/Config.in | 42 +- package/utils/busybox/config/init/Config.in | 56 +- package/utils/busybox/config/libbb/Config.in | 179 +- .../utils/busybox/config/loginutils/Config.in | 36 +- .../utils/busybox/config/mailutils/Config.in | 18 +- .../utils/busybox/config/miscutils/Config.in | 619 +- .../utils/busybox/config/modutils/Config.in | 155 +- .../utils/busybox/config/networking/Config.in | 726 +- .../busybox/config/networking/udhcp/Config.in | 86 +- package/utils/busybox/config/procps/Config.in | 284 +- package/utils/busybox/config/runit/Config.in | 7 + .../utils/busybox/config/selinux/Config.in | 41 +- package/utils/busybox/config/shell/Config.in | 453 +- .../utils/busybox/config/sysklogd/Config.in | 3 +- .../utils/busybox/config/util-linux/Config.in | 728 +- .../config/util-linux/volume_id/Config.in | 137 +- ...om-do-not-require-that-to-should-hav.patch | 37 - .../patches/102-trylink_mktemp_fix.patch | 20 - .../patches/111-i386_no_arch_flags.patch | 10 + .../patches/120-remove_uclibc_rpc_check.patch | 12 - .../patches/200-udhcpc_reduce_msgs.patch | 4 +- .../patches/201-udhcpc_changed_ifindex.patch | 2 +- .../203-udhcpc_renew_no_deconfig.patch | 2 +- .../patches/204-udhcpc_no_msg_dontroute.patch | 11 + .../busybox/patches/210-add_netmsg_util.patch | 54 +- .../busybox/patches/220-add_lock_util.patch | 54 +- .../patches/230-add_nslookup_lede.patch | 55 +- .../busybox/patches/240-telnetd_intr.patch | 2 +- .../busybox/patches/250-date-k-flag.patch | 25 +- .../301-ip-link-fix-netlink-msg-size.patch | 2 +- .../patches/302-netlink-alignment.patch | 100 - .../303-ip-route-fix-high-table-ids.patch | 486 - ...ch-file-with-x-when-modified_count-0.patch | 100 - ...g-a-new-file-with-ZZ-when-no-editing.patch | 53 - .../500-move-traceroute-applets-to-bin.patch | 13 + .../510-move-passwd-applet-to-bin.patch | 11 + .../patches/900-fix_cve2017-16544.patch | 22 - package/utils/bzip2/Makefile | 5 +- package/utils/e2fsprogs/Makefile | 108 +- .../e2fsprogs/patches/000-relocatable.patch | 46 + .../patches/002-fix-subst-host-build.patch | 4 +- package/utils/f2fs-tools/Makefile | 9 +- ...fs-f2fs-segment.c-718-update_sit_ent.patch | 66 - package/utils/fritz-tools/Makefile | 45 + package/utils/fritz-tools/README.md | 50 + package/utils/fritz-tools/src/CMakeLists.txt | 15 + .../utils/fritz-tools/src/fritz_cal_extract.c | 259 + .../utils/fritz-tools/src/fritz_tffs_read.c | 379 + package/utils/fuse/Makefile | 1 + package/utils/jboot-tools/Makefile | 28 + package/utils/jboot-tools/README.md | 46 + package/utils/jboot-tools/src/CMakeLists.txt | 11 + .../utils/jboot-tools/src/jboot_config_read.c | 427 + package/utils/jsonfilter/Makefile | 8 +- package/utils/lua/Makefile | 2 - .../010-lua-5.1.3-lnum-full-260308.patch | 47 +- ...2-lnum-fix-ltle-relational-operators.patch | 4 +- .../utils/lua/patches/020-shared_liblua.patch | 2 +- .../utils/lua/patches/050-honor-cflags.patch | 2 +- .../lua/patches/300-opcode_performance.patch | 32 +- package/utils/mdadm/Makefile | 29 +- package/utils/mdadm/files/mdadm.config | 15 + package/utils/mdadm/files/mdadm.init | 71 +- package/utils/mdadm/patches/000-compile.patch | 11 - .../mdadm/patches/100-cross_compile.patch | 18 +- ...h-Undefine-dprintf-before-redefining.patch | 38 + .../utils/mdadm/patches/200-reduce_size.patch | 4 +- package/utils/mtd-utils/Makefile | 29 +- .../mtd-utils/patches/010-fix-rpmatch.patch | 19 - .../mtd-utils/patches/100-fix_includes.patch | 2 +- .../mtd-utils/patches/130-lzma_jffs2.patch | 108 +- ...rrect-error-number-in-ubi_get_vol_in.patch | 30 + package/utils/nvram/src/cli.c | 51 +- package/utils/nvram/src/nvram.c | 7 + package/utils/osafeloader/Makefile | 40 - package/utils/osafeloader/src/Makefile | 7 - package/utils/osafeloader/src/md5.c | 296 - package/utils/osafeloader/src/md5.h | 45 - package/utils/osafeloader/src/osafeloader.c | 263 - package/utils/px5g/Makefile | 2 +- package/utils/usbmode/Makefile | 17 +- package/utils/usbutils/Makefile | 8 +- package/utils/util-linux/Makefile | 106 +- .../001-uclibc_add_libm_to_scriptreplay.patch | 24 - .../patches/003-fix_pkgconfig_files.patch | 6 +- .../util-linux/patches/100-use_urandom.patch | 14 + package/utils/xfsprogs/Makefile | 41 +- .../patches/001-automake-compat.patch | 78 - .../xfsprogs/patches/100-no-selftest.patch | 14 + .../utils/xfsprogs/patches/100-no_aio.patch | 19 - .../utils/xfsprogs/patches/110-subdirs.patch | 12 + .../patches/110-uclibc_no_ustat.patch | 32 - .../xfsprogs/patches/120-disable_assert.patch | 12 + .../xfsprogs/patches/120-portability.patch | 45 - .../patches/130-uclibc_no_xattr.patch | 32 - .../utils/xfsprogs/patches/140-no_po.patch | 19 - .../xfsprogs/patches/150-include_fixes.patch | 72 - .../patches/160-format-security.patch | 29 - rules.mk | 39 +- scripts/brcmImage.pl | 2 +- scripts/bundle-libraries.sh | 50 +- scripts/checkpatch.pl | 5 +- scripts/cleanfile | 3 +- scripts/cleanpatch | 3 +- scripts/combined-ext-image.sh | 29 +- scripts/combined-image.sh | 0 scripts/config/.gitignore | 6 + scripts/config/Makefile | 57 + scripts/config/images.c | 326 + scripts/config/mconf.c | 2 +- scripts/config/qconf.cc | 1870 ++ scripts/config/qconf.h | 330 + scripts/download.pl | 7 +- scripts/env | 2 +- scripts/ext-toolchain.sh | 4 +- scripts/feeds | 184 +- scripts/flashing/adsl2mue_flash.pl | 2 +- scripts/flashing/eva_ramboot.py | 37 + scripts/gen_image_generic.sh | 35 + scripts/metadata.pm | 167 +- scripts/mkits.sh | 10 +- scripts/om-fwupgradecfg-gen.sh | 30 +- scripts/openbsd.sh | 24 - scripts/package-metadata.pl | 305 +- scripts/qemustart | 281 + scripts/remote-gdb | 4 +- scripts/slugimage.pl | 8 +- scripts/target-metadata.pl | 62 +- target/Config.in | 4 +- target/Makefile | 1 + target/imagebuilder/Makefile | 12 +- target/imagebuilder/files/Makefile | 84 +- target/imagebuilder/files/repositories.conf | 2 +- target/linux/ar71xx/Makefile | 6 +- .../ar71xx/base-files/etc/board.d/01_leds | 503 +- .../ar71xx/base-files/etc/board.d/02_network | 231 +- .../base-files/etc/board.d/03_gpio_switches | 26 +- target/linux/ar71xx/base-files/etc/diag.sh | 212 +- .../etc/hotplug.d/firmware/10-ath9k-eeprom | 34 +- .../etc/hotplug.d/ieee80211/10_fix_wifi_mac | 24 + .../etc/hotplug.d/net/10-ar922x-led-fix | 44 +- .../uci-defaults/03_network-switchX-migration | 37 +- .../etc/uci-defaults/04_led_migration | 41 +- .../etc/uci-defaults/09_fix-checksum | 4 +- .../etc/uci-defaults/09_fix-seama-header | 4 +- target/linux/ar71xx/base-files/lib/ar71xx.sh | 1017 +- ...t_do_ar71xx.sh => 01_preinit_do_ar71xx.sh} | 0 .../lib/preinit/05_set_iface_mac_ar71xx | 70 +- .../lib/preinit/05_set_preinit_iface_ar71xx | 82 +- .../base-files/lib/upgrade/merakinand.sh | 4 +- .../ar71xx/base-files/lib/upgrade/platform.sh | 396 +- target/linux/ar71xx/config-4.4 | 454 - target/linux/ar71xx/config-4.9 | 479 + .../files/arch/mips/ath79/Kconfig.openwrt | 673 +- .../ar71xx/files/arch/mips/ath79/Makefile | 57 +- .../files/arch/mips/ath79/dev-ap9x-pci.c | 12 - .../files/arch/mips/ath79/dev-ap9x-pci.h | 3 - .../ar71xx/files/arch/mips/ath79/dev-dsa.c | 5 - .../ar71xx/files/arch/mips/ath79/dev-eth.c | 86 +- .../ar71xx/files/arch/mips/ath79/dev-eth.h | 2 + .../files/arch/mips/ath79/mach-ap531b0.c | 112 + .../ar71xx/files/arch/mips/ath79/mach-ap90q.c | 4 +- .../files/arch/mips/ath79/mach-ap91-5g.c | 118 + .../arch/mips/ath79/mach-archer-c25-v1.c | 227 + .../arch/mips/ath79/mach-archer-c59-v1.c | 289 + .../arch/mips/ath79/mach-archer-c60-v1.c | 225 + .../files/arch/mips/ath79/mach-archer-c7-v4.c | 260 + .../files/arch/mips/ath79/mach-archer-c7.c | 2 +- .../ar71xx/files/arch/mips/ath79/mach-c60.c | 60 + .../files/arch/mips/ath79/mach-cf-e316n-v2.c | 373 +- .../files/arch/mips/ath79/mach-dap-1330-a1.c | 146 + .../files/arch/mips/ath79/mach-dir-600-a1.c | 3 + .../files/arch/mips/ath79/mach-dir-869-a1.c | 11 +- .../ar71xx/files/arch/mips/ath79/mach-dr344.c | 135 +- .../files/arch/mips/ath79/mach-e1700ac-v2.c | 145 + .../files/arch/mips/ath79/mach-e600g-v2.c | 184 + .../files/arch/mips/ath79/mach-ens202ext.c | 124 + .../files/arch/mips/ath79/mach-ew-balin.c | 110 + .../files/arch/mips/ath79/mach-ew-dorin.c | 16 +- .../files/arch/mips/ath79/mach-fritz300e.c | 132 + .../files/arch/mips/ath79/mach-fritz4020.c | 242 + .../files/arch/mips/ath79/mach-gl-ar150.c | 8 +- .../files/arch/mips/ath79/mach-gl-ar300.c | 2 +- .../files/arch/mips/ath79/mach-gl-ar300m.c | 223 +- .../files/arch/mips/ath79/mach-gl-ar750.c | 146 + .../files/arch/mips/ath79/mach-gl-ar750s.c | 193 + .../files/arch/mips/ath79/mach-gl-mifi.c | 12 +- .../arch/mips/ath79/mach-gs-minibox-v1.c | 85 - .../files/arch/mips/ath79/mach-gs-oolite-v1.c | 143 + .../arch/mips/ath79/mach-gs-oolite-v5-2.c | 111 + .../files/arch/mips/ath79/mach-gs-oolite.c | 103 - .../files/arch/mips/ath79/mach-hiveap-121.c | 153 + .../ar71xx/files/arch/mips/ath79/mach-koala.c | 161 + .../files/arch/mips/ath79/mach-lan-turtle.c | 178 + .../ar71xx/files/arch/mips/ath79/mach-lima.c | 86 + .../ar71xx/files/arch/mips/ath79/mach-mr18.c | 11 - .../files/arch/mips/ath79/mach-mynet-n750.c | 2 +- .../ar71xx/files/arch/mips/ath79/mach-n5q.c | 132 + .../files/arch/mips/ath79/mach-om5pacv2.c | 6 - .../files/arch/mips/ath79/mach-pqi-air-pen.c | 99 + .../ar71xx/files/arch/mips/ath79/mach-r36a.c | 140 + .../ar71xx/files/arch/mips/ath79/mach-r602n.c | 213 + .../files/arch/mips/ath79/mach-rambutan.c | 90 + .../files/arch/mips/ath79/mach-rb2011.c | 63 +- .../ar71xx/files/arch/mips/ath79/mach-rb4xx.c | 5 - .../ar71xx/files/arch/mips/ath79/mach-rb91x.c | 5 +- .../ar71xx/files/arch/mips/ath79/mach-rb922.c | 77 +- .../ar71xx/files/arch/mips/ath79/mach-rb941.c | 173 - .../ar71xx/files/arch/mips/ath79/mach-rb95x.c | 60 + .../ar71xx/files/arch/mips/ath79/mach-rbspi.c | 1124 + .../files/arch/mips/ath79/mach-rbsxtlite.c | 63 +- .../ar71xx/files/arch/mips/ath79/mach-re450.c | 62 +- .../files/arch/mips/ath79/mach-rme-eg200.c | 99 + .../files/arch/mips/ath79/mach-rut9xx.c | 191 + .../files/arch/mips/ath79/mach-sc1750.c | 145 + .../files/arch/mips/ath79/mach-sc300m.c | 132 + .../ar71xx/files/arch/mips/ath79/mach-sc450.c | 149 + .../ar71xx/files/arch/mips/ath79/mach-t830.c | 127 + .../files/arch/mips/ath79/mach-tl-mr6400.c | 151 + .../arch/mips/ath79/mach-tl-wa901nd-v4.c | 5 +- .../files/arch/mips/ath79/mach-tl-wax50re.c | 136 +- .../files/arch/mips/ath79/mach-tl-wdr4300.c | 2 +- .../files/arch/mips/ath79/mach-tl-wpa8630.c | 2 +- .../arch/mips/ath79/mach-tl-wr1041n-v2.c | 21 +- .../arch/mips/ath79/mach-tl-wr1043nd-v4.c | 82 + .../files/arch/mips/ath79/mach-tl-wr1043nd.c | 4 +- .../files/arch/mips/ath79/mach-tl-wr2543n.c | 16 +- .../files/arch/mips/ath79/mach-tl-wr802n.c | 85 +- .../files/arch/mips/ath79/mach-tl-wr810n.c | 40 +- .../files/arch/mips/ath79/mach-tl-wr841n-v9.c | 151 +- .../arch/mips/ath79/mach-tl-wr902ac-v1.c | 145 + .../files/arch/mips/ath79/mach-tl-wr940n-v4.c | 69 +- .../files/arch/mips/ath79/mach-tl-wr942n-v1.c | 279 + .../files/arch/mips/ath79/mach-ts-d084.c | 86 + .../files/arch/mips/ath79/mach-tube2h.c | 13 +- .../files/arch/mips/ath79/mach-ubnt-unifiac.c | 8 +- .../files/arch/mips/ath79/mach-ubnt-xm.c | 60 + .../files/arch/mips/ath79/mach-wam250.c | 122 + .../files/arch/mips/ath79/mach-wi2a-ac200i.c | 217 + .../mips/ath79/mach-wifi-pineapple-nano.c | 107 + .../files/arch/mips/ath79/mach-wlr8100.c | 14 +- .../files/arch/mips/ath79/mach-wndap360.c | 2 +- .../files/arch/mips/ath79/mach-wndr3700.c | 8 +- .../files/arch/mips/ath79/mach-wndr4300.c | 8 +- .../files/arch/mips/ath79/mach-wnr2000-v3.c | 41 +- .../files/arch/mips/ath79/mach-wnr2200.c | 9 +- .../files/arch/mips/ath79/mach-wpj344.c | 15 +- .../files/arch/mips/ath79/mach-wpj531.c | 8 +- .../files/arch/mips/ath79/mach-wpj558.c | 13 +- .../files/arch/mips/ath79/mach-wpj563.c | 150 + .../arch/mips/ath79/mach-wzr-hp-ag300h.c | 3 - .../arch/mips/ath79/mach-wzr-hp-g300nh2.c | 6 +- .../files/arch/mips/ath79/mach-wzr-hp-g450h.c | 6 +- .../ar71xx/files/arch/mips/ath79/machtypes.h | 83 +- .../ar71xx/files/arch/mips/ath79/nvram.c | 7 +- .../ar71xx/files/arch/mips/ath79/routerboot.h | 26 + .../include/asm/mach-ath79/ag71xx_platform.h | 6 +- .../files/drivers/gpio/gpio-nxp-74hc153.c | 16 +- .../ar71xx/files/drivers/leds/leds-nu801.c | 8 +- .../ar71xx/files/drivers/mtd/cybertan_part.c | 5 + .../files/drivers/mtd/nand/ar934x_nfc.c | 99 +- .../files/drivers/mtd/nand/ath79_spinand.c | 1173 - .../files/drivers/mtd/nand/rb4xx_nand.c | 102 +- .../files/drivers/mtd/nand/rb750_nand.c | 97 +- .../files/drivers/mtd/nand/rb91x_nand.c | 98 +- .../ar71xx/files/drivers/mtd/tplinkpart.c | 13 + .../ar71xx/files/drivers/net/dsa/mv88e6063.c | 104 +- .../net/ethernet/atheros/ag71xx/ag71xx.h | 39 +- .../ethernet/atheros/ag71xx/ag71xx_ar7240.c | 157 +- .../ethernet/atheros/ag71xx/ag71xx_debugfs.c | 10 +- .../ethernet/atheros/ag71xx/ag71xx_ethtool.c | 2 +- .../net/ethernet/atheros/ag71xx/ag71xx_main.c | 127 +- .../net/ethernet/atheros/ag71xx/ag71xx_mdio.c | 6 +- .../net/ethernet/atheros/ag71xx/ag71xx_phy.c | 28 +- .../ar71xx/files/drivers/spi/spi-rb4xx-cpld.c | 5 + .../ar71xx/files/drivers/spi/spi-rb4xx.c | 4 +- target/linux/ar71xx/generic/config-default | 226 +- target/linux/ar71xx/image/Makefile | 65 +- target/linux/ar71xx/image/common-tp-link.mk | 96 + .../ar71xx/image/generic-legacy-devices.mk | 380 + target/linux/ar71xx/image/generic-senao.mk | 28 + target/linux/ar71xx/image/generic-tp-link.mk | 344 + target/linux/ar71xx/image/generic-ubnt.mk | 265 + target/linux/ar71xx/image/generic.mk | 1010 +- target/linux/ar71xx/image/legacy-devices.mk | 597 - target/linux/ar71xx/image/legacy.mk | 181 +- .../linux/ar71xx/image/lzma-loader/Makefile | 6 +- .../ar71xx/image/lzma-loader/src/Makefile | 12 +- .../linux/ar71xx/image/lzma-loader/src/head.S | 13 + .../ar71xx/image/lzma-loader/src/loader.c | 4 +- .../ar71xx/image/lzma-loader/src/loader.lds | 1 - target/linux/ar71xx/image/nand.mk | 87 +- .../linux/ar71xx/image/tiny-legacy-devices.mk | 154 + target/linux/ar71xx/image/tiny-tp-link.mk | 692 + target/linux/ar71xx/image/tp-link.mk | 927 - .../linux/ar71xx/image/ubinize-gl-ar300m.ini | 26 - target/linux/ar71xx/image/ubnt.mk | 261 - target/linux/ar71xx/nand/config-default | 138 +- .../002-add_back_gpio_function_select.patch | 92 - .../004-register_gpio_driver_earlier.patch | 18 - ...ath79_ddr_ctrl_init-compatible-for-n.patch | 31 - ...200-MIPS-ath79-fix-ar933x-wmac-reset.patch | 31 - .../202-MIPS-ath79-ar934x-wmac-revision.patch | 11 - .../203-MIPS-ath79-fix-restart.patch | 20 - .../310-lib-add-rle-decompression.patch | 124 - ...mtd_fix_cfi_cmdset_0002_status_check.patch | 69 - .../404-mtd-cybertan-trx-parser.patch | 25 - .../405-mtd-tp-link-partition-parser.patch | 25 - ...o-pass-probe-types-via-platform-data.patch | 23 - .../409-mtd-rb4xx_nand_driver.patch | 21 - .../410-mtd-rb750-nand-driver.patch | 21 - ...mtd-cfi_cmdset_0002-force-word-write.patch | 61 - ...td-m25p80-zero-partition-parser-data.patch | 10 - .../413-mtd-ar934x-nand-driver.patch | 25 - .../414-mtd-rb91x-nand-driver.patch | 23 - .../423-dsa-add-88e6063-driver.patch | 24 - .../430-drivers-link-spi-before-mtd.patch | 12 - .../patches-4.4/435-spi-vsc7385_driver.patch | 24 - .../440-leds-wndr3700-usb-led-driver.patch | 26 - .../441-leds-rb750-led-driver.patch | 23 - ...50-gpio-nxp-74hc153-gpio-chip-driver.patch | 25 - ...x164-improve-platform-device-support.patch | 109 - .../452-gpio-add-gpio-latch-driver.patch | 22 - .../460-m25p80-spi-read-flash-check.patch | 15 - .../461-spi-ath79-add-fast-flash-read.patch | 54 - ...490-usb-ehci-add-quirks-for-qca-socs.patch | 103 - .../patches-4.4/500-MIPS-fw-myloader.patch | 22 - ...-mac-argument-to-ath79_register_wmac.patch | 70 - ...IPS-ath79-add-ath79_device_reset_get.patch | 41 - ...ath79-add-ath79_gpio_function_select.patch | 39 - ...PS-ath79-process-board-kernel-option.patch | 11 - ...dd-ath79_wmac_register_simple-helper.patch | 21 - .../523-MIPS-ath79-OTP-support.patch | 166 - ...add-ath79_wmac_disable_25ghz-helpers.patch | 31 - ...MIPS-ath79-add-more-register-defines.patch | 455 - .../602-MIPS-ath79-add-openwrt-stuff.patch | 49 - .../611-MIPS-ath79-wdt-timeout.patch | 25 - .../612-MIPS-ath79-set-buffalo-txgain.patch | 24 - ...ath79_wmac_setup_ext_lna_gpio-helper.patch | 76 - ...PS-ath79-add-support-for-QCA953x-SoC.patch | 705 - ...PS-ath79-add-support-for-QCA956x-SoC.patch | 717 - ...ore-register-defines-for-QCA956x-SoC.patch | 38 - ...0-MIPS-ath79-fix-chained-irq-disable.patch | 102 - ...1-MIPS-ath79-wmac-enable-set-led-pin.patch | 24 - ...MIPS-ath79-gpio-enable-set-direction.patch | 32 - ...ath79-ar724x-clock-calculation-fixes.patch | 22 - ...40-MIPS-ath79-add-QCA955x-wmac-reset.patch | 82 - .../700-MIPS-ath79-add-openwrt-Kconfig.patch | 11 - ...MIPS-ath79-add-routerboard-detection.patch | 21 - .../818-MIPS-ath79-add-nu801-led-driver.patch | 26 - ...-MIPS-ath79-add_gpio_function2_setup.patch | 67 - ...support-for-boot-console-with-arbitr.patch | 76 - .../900-mdio_bitbang_ignore_ta_value.patch | 23 - ...-prevent-rescheduling-during-command.patch | 61 - .../902-at803x-add-reset-gpio-pdata.patch | 68 - .../910-unaligned_access_hacks.patch | 931 - .../911-add-ar300m-nand-support.patch | 80 - .../912-ar300m-add-FW-PM-spinand.patch | 85 - .../001-spi-cs-gpio.patch | 0 .../002-add_back_gpio_function_select.patch | 92 + .../004-register_gpio_driver_earlier.patch | 18 + ...Avoid-using-unitialized-reg-variable.patch | 0 ...egister-address-in-ath79_ddr_wb_flus.patch | 0 ...pport-multiple-internal-chip-select-.patch | 0 ...e-gpio_set_value_cansleep-for-GPIO-c.patch | 0 ...h79-do-AR724x-PCIe-root-complex-init.patch | 113 + ...200-MIPS-ath79-fix-ar933x-wmac-reset.patch | 30 + .../201-ar913x_wmac_external_reset.patch | 0 .../202-MIPS-ath79-ar934x-wmac-revision.patch | 11 + .../203-MIPS-ath79-fix-restart.patch | 20 + .../220-add_cpu_feature_overrides.patch | 0 ...0-MIPS-add-MIPS_MACHINE_NONAME-macro.patch | 0 .../310-lib-add-rle-decompression.patch | 124 + .../401-mtd-physmap-add-lock-unlock.patch | 0 .../402-mtd-SST39VF6401B-support.patch | 0 ...mtd_fix_cfi_cmdset_0002_status_check.patch | 69 + .../404-mtd-cybertan-trx-parser.patch | 25 + .../405-mtd-tp-link-partition-parser.patch | 25 + ...o-pass-probe-types-via-platform-data.patch | 34 + .../408-mtd-redboot_partition_scan.patch | 0 .../409-mtd-rb4xx_nand_driver.patch | 21 + .../410-mtd-rb750-nand-driver.patch | 21 + ...mtd-cfi_cmdset_0002-force-word-write.patch | 61 + .../413-mtd-ar934x-nand-driver.patch | 25 + .../414-mtd-rb91x-nand-driver.patch | 23 + .../420-net-ar71xx_mac_driver.patch | 0 .../423-dsa-add-88e6063-driver.patch | 25 + .../430-drivers-link-spi-before-mtd.patch | 12 + .../432-spi-rb4xx-spi-driver.patch | 25 + .../433-spi-rb4xx-cpld-driver.patch | 26 + .../patches-4.9/435-spi-vsc7385_driver.patch | 24 + .../440-leds-wndr3700-usb-led-driver.patch | 26 + .../441-leds-rb750-led-driver.patch | 23 + ...to-use-OPEN_-DRAIN-SOURCE-flags-with.patch | 45 + ...50-gpio-nxp-74hc153-gpio-chip-driver.patch | 25 + ...x164-improve-platform-device-support.patch | 119 + .../452-gpio-add-gpio-latch-driver.patch | 22 + .../461-spi-ath79-add-fast-flash-read.patch | 60 + ...ath79-swizzle-pci-address-for-ar71xx.patch | 0 ...490-usb-ehci-add-quirks-for-qca-socs.patch | 103 + .../patches-4.9/500-MIPS-fw-myloader.patch | 22 + ...-mac-argument-to-ath79_register_wmac.patch | 70 + ...IPS-ath79-add-ath79_device_reset_get.patch | 42 + ...ath79-add-ath79_gpio_function_select.patch | 39 + ...6-MIPS-ath79-prom-parse-redboot-args.patch | 0 ...MIPS-ath79-prom-add-myloader-support.patch | 0 ...S-ath79-prom-image-command-line-hack.patch | 0 ...PS-ath79-process-board-kernel-option.patch | 11 + ...S-ath79-init-gpio-pin-of-wmac-device.patch | 0 .../520-MIPS-ath79-enable-UART-function.patch | 0 ...S-ath79-enable-UART-for-early_serial.patch | 0 ...dd-ath79_wmac_register_simple-helper.patch | 21 + .../523-MIPS-ath79-OTP-support.patch | 192 + ...add-ath79_wmac_disable_25ghz-helpers.patch | 31 + ...525-MIPS-ath79-enable-qca-usb-quirks.patch | 0 ...MIPS-ath79-add-more-register-defines.patch | 455 + .../602-MIPS-ath79-add-openwrt-stuff.patch | 49 + .../603-MIPS-ath79-ap121-fixes.patch | 0 .../patches-4.9/604-MIPS-ath79-no-of.patch | 70 + .../605-MIPS-ath79-db120-fixes.patch | 0 .../606-MIPS-ath79-pb44-fixes.patch | 0 .../607-MIPS-ath79-ubnt-xm-fixes.patch | 0 ...8-MIPS-ath79-ubnt-xm-add-more-boards.patch | 0 .../609-MIPS-ath79-ap136-fixes.patch | 0 .../611-MIPS-ath79-wdt-timeout.patch | 25 + .../612-MIPS-ath79-set-buffalo-txgain.patch | 24 + ...ath79_wmac_setup_ext_lna_gpio-helper.patch | 76 + ...PS-ath79-add-support-for-QCA953x-SoC.patch | 696 + ...PS-ath79-add-support-for-QCA956x-SoC.patch | 717 + ...ore-register-defines-for-QCA956x-SoC.patch | 38 + ...0-MIPS-ath79-fix-chained-irq-disable.patch | 106 + ...1-MIPS-ath79-wmac-enable-set-led-pin.patch | 24 + ...MIPS-ath79-gpio-enable-set-direction.patch | 32 + ...40-MIPS-ath79-add-QCA955x-wmac-reset.patch | 82 + .../700-MIPS-ath79-add-openwrt-Kconfig.patch | 11 + ...MIPS-ath79-add-routerboard-detection.patch | 34 + ...h79-fixup-routerboot-board-parameter.patch | 43 + ...d-gpio-func-register-for-QCA955x-SoC.patch | 0 ...0-MIPS-ath79-add-PCI-for-QCA953x-SoC.patch | 0 ...1-MIPS-ath79-add-PCI-for-QCA9556-SoC.patch | 12 + .../818-MIPS-ath79-add-nu801-led-driver.patch | 26 + ...-MIPS-ath79-add_gpio_function2_setup.patch | 67 + .../900-mdio_bitbang_ignore_ta_value.patch | 32 + ...-prevent-rescheduling-during-command.patch | 61 + .../902-at803x-add-reset-gpio-pdata.patch | 68 + .../910-unaligned_access_hacks.patch | 980 + ...usb-chipidea-AR933x-platform-support.patch | 124 + ...ore-register-defines-for-QCA956x-SoC.patch | 194 + .../patches-4.9/930-chipidea-pullup.patch | 72 + target/linux/ar71xx/tiny/config-default | 72 + .../linux/ar71xx/tiny/profiles/00-default.mk | 11 + target/linux/ar71xx/tiny/target.mk | 8 + target/linux/arm64/Makefile | 28 - target/linux/arm64/README | 13 - target/linux/arm64/base-files/etc/inittab | 5 - target/linux/arm64/config-4.4 | 350 - target/linux/arm64/image/Makefile | 46 - .../linux/arm64/image/boot-wrapper/Makefile | 37 - target/linux/armvirt/Makefile | 28 - target/linux/armvirt/README | 34 - .../armvirt/base-files/etc/board.d/00_model | 14 - target/linux/armvirt/base-files/etc/inittab | 5 - target/linux/armvirt/config-default | 259 - target/linux/armvirt/image/Makefile | 24 - ...dcode-path-to-awk-in-scripts-ld-vers.patch | 30 + .../011-kbuild-export-SUBARCH.patch | 23 + .../020-backport_netfilter_rtcache.patch | 558 + ...tcp-allow-drivers-to-tweak-TSQ-logic.patch | 85 + ...ption-fix-dwm-158-3g-modem-interface.patch | 42 + ...port-for-host-mode-external-vbus-sup.patch | 109 + ...wc2_vbus_supply_init-fix-error-check.patch | 55 + ...ding-master-MTD-out-of-mtd_add_devic.patch | 74 + ...rid-of-the-mtd_add_device_partitions.patch | 93 + ...dd-of_match_table-parser-matching-fo.patch | 200 + ...t-parser-to-fixed-partitions-as-it-f.patch | 74 + ...of_match_table-with-fixed-partitions.patch | 44 + ...ding-registering-partitions-to-the-p.patch | 168 + ...-improve-handling-TRX-partition-size.patch | 70 + ...-master-mode-for-BCM54210E-and-B5021.patch | 50 + ...-support-new-device-flag-for-setting.patch | 54 + ...prevent-redefinition-of-struct-ethhd.patch | 55 + ...les-explicit-nft_set_pktinfo-call-fr.patch | 291 + ...nly-allow-one-nat-hook-per-hook-poin.patch | 146 + ...les_inet-don-t-use-multihook-infrast.patch | 161 + ...les-remove-multihook-chains-and-fami.patch | 391 + ...hecksum-indirection-to-struct-nf_ipv.patch | 171 + ...hecksum_partial-indirection-to-struc.patch | 204 + ...-saveroute-indirection-in-struct-nf_.patch | 232 + ...oute-indirection-to-struct-nf_ipv6_o.patch | 349 + ...eroute-indirection-to-struct-nf_ipv6.patch | 223 + ...-route_key_size-field-in-struct-nf_a.patch | 94 + ...-struct-nf_afinfo-and-its-helper-fun.patch | 173 + ...f_tables_arp-don-t-set-forward-chain.patch | 20 + ...les-remove-hooks-from-family-definit.patch | 233 + ...-defensive-check-on-malformed-packet.patch | 302 + ...v4.16-netfilter-meta-secpath-support.patch | 101 + ...ack-move-nf_ct_netns_-get-put-to-cor.patch | 142 + ...conntrack-add-IPS_OFFLOAD-status-bit.patch | 169 + ...bles-add-flow-table-netlink-frontend.patch | 1079 + ...dd-generic-flow-table-infrastructure.patch | 586 + ...etfilter-flow-table-support-for-IPv4.patch | 334 + ...etfilter-flow-table-support-for-IPv6.patch | 354 + ...able-support-for-the-mixed-IPv4-IPv6.patch | 141 + ...er-nf_tables-flow-offload-expression.patch | 332 + ...les-remove-nhooks-field-from-struct-.patch | 113 + ...les-fix-a-typo-in-nf_tables_getflowt.patch | 22 + ...rove-flow-table-Kconfig-dependencies.patch | 106 + ...les-remove-flag-field-from-struct-nf.patch | 59 + ...les-no-need-for-struct-nft_af_info-t.patch | 80 + ...les-remove-struct-nft_af_info-parame.patch | 60 + ...les-fix-potential-NULL-ptr-deref-in-.patch | 30 + ...les-add-single-table-list-for-all-fa.patch | 1450 ++ ...tfilter-exit_net-cleanup-check-added.patch | 100 + ...nf_tables-get-rid-of-pernet-families.patch | 598 + ...les-get-rid-of-struct-nft_af_info-ab.patch | 1204 + ...ow_offload-wait-for-garbage-collecto.patch | 47 + ...ow_offload-no-need-to-flush-entries-.patch | 29 + ...ow_offload-move-flowtable-cleanup-ro.patch | 97 + ...tfilter-nf_tables-fix-flowtable-free.patch | 140 + ...ow_offload-handle-netdevice-events-f.patch | 96 + ...les-allocate-handle-and-delete-objec.patch | 468 + ...w_offload-fix-use-after-free-and-a-r.patch | 95 + ...ble-infrastructure-depends-on-NETFIL.patch | 73 + ...-netfilter-remove-duplicated-include.patch | 29 + ...w_table-use-IP_CT_DIR_-values-for-FL.patch | 35 + ...ow_table-clean-up-flow_offload_alloc.patch | 118 + ...ipv6-make-ip6_dst_mtu_forward-inline.patch | 80 + ...w_table-cache-mtu-in-struct-flow_off.patch | 145 + ...w_table-rename-nf_flow_table.c-to-nf.patch | 952 + ...w_table-move-ipv4-offload-hook-code-.patch | 522 + ...w_table-move-ip-header-check-out-of-.patch | 32 + ...w_table-move-ipv6-offload-hook-code-.patch | 483 + ...w_table-relax-mixed-ipv4-ipv6-flowta.patch | 23 + ...w_table-move-init-code-to-nf_flow_ta.patch | 298 + ...w_table-fix-priv-pointer-for-netdev-.patch | 22 + ...w_table-track-flow-tables-in-nf_flow.patch | 114 + ...w_table-make-flow_offload_dead-inlin.patch | 38 + ...w_table-add-a-new-flow-state-for-tea.patch | 83 + ...w_table-in-flow_offload_lookup-skip-.patch | 36 + ...w_table-add-support-for-sending-flow.patch | 99 + ...w_table-tear-down-TCP-flows-if-RST-o.patch | 81 + ...w_table-fix-checksum-when-handling-D.patch | 19 + ...w_table-clean-up-and-fix-dst-handlin.patch | 89 + ...w_table-add-missing-condition-for-TC.patch | 48 + ...w_table-fix-offloading-connections-w.patch | 23 + ...ter-nf_flow_table-attach-dst-to-skbs.patch | 49 + ...dcode-path-to-awk-in-scripts-ld-vers.patch | 29 + .../011-kbuild-export-SUBARCH.patch | 23 + .../020-backport_netfilter_rtcache.patch | 543 + .../021-bridge-multicast-to-unicast.patch | 499 + ...rsion-of-alloc_etherdev_mqs-function.patch | 69 + ...kb_cow_head-to-deal-with-cloned-skbs.patch | 40 + ...kb_cow_head-to-deal-with-cloned-skbs.patch | 38 + ...kb_cow_head-to-deal-with-cloned-skbs.patch | 43 + ...024-1-tcp-tsq-add-tsq_flags-tsq_enum.patch | 90 + ...ve-one-locked-operation-in-tcp_wfree.patch | 48 + ...tsq-add-shortcut-in-tcp_tasklet_func.patch | 71 + ...cp-tsq-avoid-one-atomic-in-tcp_wfree.patch | 38 + ...-a-shortcut-in-tcp_small_queue_check.patch | 37 + ...cp_mtu_probe-is-likely-to-exit-early.patch | 55 + ...struct-sock-for-better-data-locality.patch | 157 + ...ove-tsq_flags-close-to-sk_wmem_alloc.patch | 176 + ...-missing-barrier-in-tcp_tasklet_func.patch | 40 + ...tcp-allow-drivers-to-tweak-TSQ-logic.patch | 85 + ...imit-and-delta-fields-from-struct-ub.patch | 82 + ...writeback_interval-value-for-wbuf-ti.patch | 66 + ...50-usb-dwc2-Remove-unnecessary-kfree.patch | 24 + ...flash-use-platform_-set-get-_drvdata.patch | 63 + ...h-support-reading-flash-out-of-mappi.patch | 81 + ...move-TRX-parsing-code-to-separated-f.patch | 180 + ...support-layouts-with-multiple-TRX-pa.patch | 112 + ...Macronix-mx25u25635f-to-list-of-know.patch | 22 + ...mtd-spi-nor-fix-spansion-quad-enable.patch | 42 + ...-mtd-spi-nor-fix-flags-for-s25fl128s.patch | 28 + ...td-spi-nor-add-support-for-s25fl208k.patch | 23 + ...-Add-at25df321-spi-nor-flash-support.patch | 26 + ...mtd-spi-nor-Add-support-for-N25Q016A.patch | 29 + ...-mtd-spi-nor-Add-support-for-mr25h40.patch | 25 + ...Add-support-for-S3AN-spi-nor-devices.patch | 312 + ...spi-nor-improve-macronix_quad_enable.patch | 28 + ...ve-WARN_ONCE-message-in-spi_nor_writ.patch | 33 + ...me-SPINOR_OP_-macros-of-the-4-byte-a.patch | 187 + ...a-stateless-method-to-support-memory.patch | 150 + ...Add-lock-unlock-support-for-f25l32pa.patch | 26 + ...-nor-Fix-S3AN-addressing-calculation.patch | 35 + ...-mtd-spi-nor-Add-support-for-gd25q16.patch | 28 + ...mtd-nand-Add-Winbond-manufacturer-id.patch | 34 + ...td-introduce-function-max_bad_blocks.patch | 73 + ...n-device-node-to-mtd-partition-devic.patch | 50 + ...le-stateless-4b-op-codes-for-mx25u25.patch | 29 + ...itioning-on-devices-with-0-erasesize.patch | 77 + ...tions-factor-out-code-calling-parser.patch | 68 + ...ns-add-helper-for-deleting-partition.patch | 119 + ...emove-sysfs-files-when-deleting-all-.patch | 45 + ...ename-master-to-the-parent-where-app.patch | 606 + ...itions-add-support-for-subpartitions.patch | 96 + ...ns-add-support-for-partition-parsers.patch | 110 + ...parser-out-of-bcm47xxpart-into-a-sep.patch | 320 + ...ding-master-MTD-out-of-mtd_add_devic.patch | 74 + ...rid-of-the-mtd_add_device_partitions.patch | 93 + ...dd-of_match_table-parser-matching-fo.patch | 200 + ...t-parser-to-fixed-partitions-as-it-f.patch | 74 + ...of_match_table-with-fixed-partitions.patch | 44 + ...ding-registering-partitions-to-the-p.patch | 168 + ...-improve-handling-TRX-partition-size.patch | 70 + .../backport-4.9/070-bcma-from-4.11.patch | 85 + ...te-struct-bgmac-just-once-don-t-copy.patch | 139 + ...truct-bcma_mdio-we-don-t-need-anymor.patch | 261 + ...e-PHY-subsystem-for-initializing-PHY.patch | 53 + ...-master-mode-for-BCM54210E-and-B5021.patch | 50 + .../backport-4.9/072-bcma-from-4.12.patch | 47 + ...-variants-of-LED-registering-functio.patch | 120 + ...-variant-of-LED-registering-function.patch | 60 + ...5-add-thermal-driver-for-bcm2835-SoC.patch | 365 + ...-ports-from-DT-in-the-usbport-LED-t.patch} | 0 .../087-regmap-make-LZO-cache-optional.patch | 69 + ...90-net-generalize-napi_complete_done.patch | 1412 ++ ...les-fix-mismatch-in-big-endian-syste.patch | 323 + ...issing-tunnel-encapsulation-limit-op.patch | 50 + ...ort-ipv6_push_frag_opts-for-tunnelin.patch | 31 + ...prevent-redefinition-of-struct-ethhd.patch | 55 + target/linux/generic/config-3.18 | 87 +- target/linux/generic/config-4.14 | 5649 +++++ target/linux/generic/config-4.4 | 62 +- target/linux/generic/config-4.9 | 5321 +++++ .../files/drivers/leds/ledtrig-netdev.c | 2 +- .../generic/files/drivers/misc/owl-loader.c | 2 +- .../files/drivers/mtd/mtdsplit/Kconfig | 10 + .../files/drivers/mtd/mtdsplit/Makefile | 2 + .../drivers/mtd/mtdsplit/mtdsplit_brnimage.c | 2 +- .../files/drivers/mtd/mtdsplit/mtdsplit_eva.c | 2 +- .../files/drivers/mtd/mtdsplit/mtdsplit_fit.c | 3 +- .../drivers/mtd/mtdsplit/mtdsplit_jimage.c | 277 + .../drivers/mtd/mtdsplit/mtdsplit_lzma.c | 2 +- .../drivers/mtd/mtdsplit/mtdsplit_minor.c | 117 + .../drivers/mtd/mtdsplit/mtdsplit_seama.c | 2 +- .../drivers/mtd/mtdsplit/mtdsplit_squashfs.c | 2 +- .../drivers/mtd/mtdsplit/mtdsplit_tplink.c | 16 +- .../files/drivers/mtd/mtdsplit/mtdsplit_trx.c | 2 +- .../drivers/mtd/mtdsplit/mtdsplit_uimage.c | 10 +- .../drivers/mtd/mtdsplit/mtdsplit_wrgg.c | 25 +- .../generic/files/drivers/mtd/myloader.c | 2 +- .../generic/files/drivers/net/phy/adm6996.c | 60 +- .../generic/files/drivers/net/phy/ar8216.c | 87 +- .../generic/files/drivers/net/phy/ar8216.h | 1 + .../generic/files/drivers/net/phy/ar8327.c | 114 +- .../generic/files/drivers/net/phy/ar8327.h | 27 + .../files/drivers/net/phy/b53/b53_common.c | 236 +- .../files/drivers/net/phy/b53/b53_mdio.c | 21 +- .../files/drivers/net/phy/b53/b53_phy_fixup.c | 4 +- .../files/drivers/net/phy/b53/b53_priv.h | 26 +- .../files/drivers/net/phy/b53/b53_spi.c | 14 + .../generic/files/drivers/net/phy/ip17xx.c | 71 +- .../generic/files/drivers/net/phy/mvswitch.c | 23 +- .../generic/files/drivers/net/phy/psb6970.c | 19 +- .../generic/files/drivers/net/phy/rtl8306.c | 26 +- .../files/drivers/net/phy/rtl8366_smi.c | 74 +- .../files/drivers/net/phy/rtl8366_smi.h | 9 +- .../generic/files/drivers/net/phy/rtl8366rb.c | 38 +- .../generic/files/drivers/net/phy/rtl8366s.c | 246 +- .../generic/files/drivers/net/phy/rtl8367.c | 11 + .../generic/files/drivers/net/phy/rtl8367b.c | 11 + .../generic/files/drivers/net/phy/swconfig.c | 44 +- .../files/drivers/net/phy/swconfig_leds.c | 157 +- target/linux/generic/files/fs/yaffs2/Kconfig | 171 - target/linux/generic/files/fs/yaffs2/Makefile | 18 - .../generic/files/fs/yaffs2/NOTE.openwrt | 4 - .../generic/files/fs/yaffs2/yaffs_allocator.c | 357 - .../generic/files/fs/yaffs2/yaffs_allocator.h | 30 - .../generic/files/fs/yaffs2/yaffs_attribs.c | 132 - .../generic/files/fs/yaffs2/yaffs_attribs.h | 28 - .../generic/files/fs/yaffs2/yaffs_bitmap.c | 97 - .../generic/files/fs/yaffs2/yaffs_bitmap.h | 33 - .../generic/files/fs/yaffs2/yaffs_checkptrw.c | 466 - .../generic/files/fs/yaffs2/yaffs_checkptrw.h | 33 - .../linux/generic/files/fs/yaffs2/yaffs_ecc.c | 281 - .../linux/generic/files/fs/yaffs2/yaffs_ecc.h | 44 - .../files/fs/yaffs2/yaffs_getblockinfo.h | 35 - .../generic/files/fs/yaffs2/yaffs_guts.c | 5140 ----- .../generic/files/fs/yaffs2/yaffs_guts.h | 1010 - .../generic/files/fs/yaffs2/yaffs_linux.h | 48 - .../generic/files/fs/yaffs2/yaffs_mtdif.c | 310 - .../generic/files/fs/yaffs2/yaffs_mtdif.h | 25 - .../generic/files/fs/yaffs2/yaffs_nameval.c | 208 - .../generic/files/fs/yaffs2/yaffs_nameval.h | 28 - .../generic/files/fs/yaffs2/yaffs_nand.c | 122 - .../generic/files/fs/yaffs2/yaffs_nand.h | 39 - .../files/fs/yaffs2/yaffs_packedtags1.c | 56 - .../files/fs/yaffs2/yaffs_packedtags1.h | 39 - .../files/fs/yaffs2/yaffs_packedtags2.c | 197 - .../files/fs/yaffs2/yaffs_packedtags2.h | 47 - .../generic/files/fs/yaffs2/yaffs_summary.c | 312 - .../generic/files/fs/yaffs2/yaffs_summary.h | 37 - .../files/fs/yaffs2/yaffs_tagscompat.c | 381 - .../files/fs/yaffs2/yaffs_tagscompat.h | 44 - .../files/fs/yaffs2/yaffs_tagsmarshall.c | 199 - .../files/fs/yaffs2/yaffs_tagsmarshall.h | 22 - .../generic/files/fs/yaffs2/yaffs_trace.h | 57 - .../generic/files/fs/yaffs2/yaffs_verify.c | 529 - .../generic/files/fs/yaffs2/yaffs_verify.h | 43 - .../linux/generic/files/fs/yaffs2/yaffs_vfs.c | 3665 ---- .../generic/files/fs/yaffs2/yaffs_yaffs1.c | 422 - .../generic/files/fs/yaffs2/yaffs_yaffs1.h | 22 - .../generic/files/fs/yaffs2/yaffs_yaffs2.c | 1532 -- .../generic/files/fs/yaffs2/yaffs_yaffs2.h | 39 - .../linux/generic/files/fs/yaffs2/yportenv.h | 85 - .../files/include/linux/ath9k_platform.h | 1 - .../linux/platform_data/adm6996-gpio.h | 1 - .../generic/files/include/linux/rtl8366.h | 4 +- .../generic/files/include/linux/switch.h | 4 +- .../hack-4.14/202-reduce_module_size.patch | 24 + .../generic/hack-4.14/204-module_strip.patch | 208 + .../hack-4.14/207-disable-modorder.patch | 44 + .../210-darwin_scripts_include.patch | 3065 +++ .../211-host_tools_portability.patch | 40 + .../hack-4.14/212-byteshift_portability.patch | 65 + .../hack-4.14/214-spidev_h_portability.patch | 24 + .../generic/hack-4.14/220-gc_sections.patch | 258 + .../hack-4.14/221-module_exports.patch | 101 + .../hack-4.14/230-openwrt_lzma_options.patch | 71 + .../hack-4.14/250-netfilter_depends.patch | 27 + .../generic/hack-4.14/251-sound_kconfig.patch | 197 + .../hack-4.14/259-regmap_dynamic.patch | 109 + .../260-crypto_test_dependencies.patch | 60 + .../generic/hack-4.14/280-rfkill-stubs.patch | 84 + ...cache-use-more-efficient-cache-blast.patch | 66 + .../301-mips_image_cmdline_hack.patch | 38 + .../321-powerpc_crtsavres_prereq.patch | 38 + .../generic/hack-4.14/531-debloat_lzma.patch | 1040 + .../640-bridge-only-accept-EAP-locally.patch | 32 + .../hack-4.14/641-bridge_port_isolate.patch | 76 + .../650-netfilter-add-xt_OFFLOAD-target.patch | 496 + .../hack-4.14/651-wireless_mesh_header.patch | 24 + .../hack-4.14/660-fq_codel_defaults.patch | 27 + .../661-use_fq_codel_by_default.patch | 94 + .../hack-4.14/662-remove_pfifo_fast.patch | 159 + .../700-swconfig_switch_drivers.patch | 128 + .../702-phy_add_aneg_done_function.patch | 27 + .../generic/hack-4.14/721-phy_packets.patch | 176 + .../hack-4.14/773-bgmac-add-srab-switch.patch | 98 + .../hack-4.14/835-misc-owl_loader.patch | 52 + .../hack-4.14/901-debloat_sock_diag.patch | 136 + .../generic/hack-4.14/902-debloat_proc.patch | 405 + .../hack-4.14/904-debloat_dma_buf.patch | 64 + .../hack-4.14/910-kobject_uevent.patch | 32 + .../911-kobject_add_broadcast_uevent.patch | 76 + ...ays-create-console-node-in-initramfs.patch | 40 + .../generic/hack-4.14/930-crashlog.patch | 338 + .../hack-4.9/202-reduce_module_size.patch | 24 + .../generic/hack-4.9/204-module_strip.patch | 214 + .../hack-4.9/207-disable-modorder.patch | 44 + .../hack-4.9/210-darwin_scripts_include.patch | 3065 +++ .../hack-4.9/211-host_tools_portability.patch | 40 + .../hack-4.9/212-byteshift_portability.patch | 65 + .../hack-4.9/214-spidev_h_portability.patch | 24 + .../generic/hack-4.9/220-gc_sections.patch | 448 + .../generic/hack-4.9/221-module_exports.patch | 101 + .../hack-4.9/230-openwrt_lzma_options.patch | 71 + .../hack-4.9/250-netfilter_depends.patch | 27 + .../generic/hack-4.9/251-sound_kconfig.patch | 195 + .../generic/hack-4.9/259-regmap_dynamic.patch | 104 + .../260-crypto_test_dependencies.patch | 62 + .../generic/hack-4.9/280-rfkill-stubs.patch | 94 + ...cache-use-more-efficient-cache-blast.patch | 66 + .../301-mips_image_cmdline_hack.patch | 38 + .../321-powerpc_crtsavres_prereq.patch | 26 + .../generic/hack-4.9/531-debloat_lzma.patch | 1040 + .../640-bridge-only-accept-EAP-locally.patch | 32 + .../hack-4.9/641-bridge_port_isolate.patch | 76 + .../hack-4.9/651-wireless_mesh_header.patch | 24 + .../hack-4.9/660-fq_codel_defaults.patch | 27 + .../661-use_fq_codel_by_default.patch | 94 + .../hack-4.9/662-remove_pfifo_fast.patch | 159 + .../700-swconfig_switch_drivers.patch | 138 + .../702-phy_add_aneg_done_function.patch | 27 + ...710-phy-add-mdio_register_board_info.patch | 197 + .../generic/hack-4.9/721-phy_packets.patch | 176 + .../hack-4.9/773-bgmac-add-srab-switch.patch | 98 + .../hack-4.9/835-misc-owl_loader.patch | 52 + .../hack-4.9/901-debloat_sock_diag.patch | 95 + .../generic/hack-4.9/902-debloat_proc.patch | 405 + .../hack-4.9/904-debloat_dma_buf.patch | 64 + .../generic/hack-4.9/910-kobject_uevent.patch | 32 + .../911-kobject_add_broadcast_uevent.patch | 76 + ...ays-create-console-node-in-initramfs.patch | 40 + .../linux/generic/hack-4.9/930-crashlog.patch | 338 + .../generic/{base-files => other-files}/init | 0 ...-mtd-bcm47xxpart-backports-from-3.20.patch | 95 - .../044-backport-m25p80-jedec-probe.patch | 39 - ...gmac-register-napi-before-the-device.patch | 44 - ...-initialization-on-Northstar-SoCs-co.patch | 40 - ...mac-implement-scatter-gather-support.patch | 267 - ...enable-Ethernet-core-before-using-it.patch | 31 - ...Push-rcu_read_lock-unlock-to-callers.patch | 403 - ...ment-fix-headroom-tests-and-skb-leak.patch | 101 - ...layfs-fallback-to-readonly-when-full.patch | 109 - ...ags-FOLL_WRITE-games-from-__get_user.patch | 90 - ...-__arch_swab-16-32-64-when-using-MIP.patch | 53 - ...limit-scanned-flash-area-on-BCM47XX-.patch | 33 - ...part-don-t-fail-because-of-bit-flips.patch | 92 - ...t_for_moving_ndp_to_end_of_ncm_frame.patch | 228 - ...ehci-orion-fix-probe-for-GENERIC_PHY.patch | 35 - ...-support-for-Quectel-EC20-Mini-PCIe-.patch | 114 - ...-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch | 96 - .../patches-3.18/201-extra_optimization.patch | 14 - .../patches-3.18/204-module_strip.patch | 190 - .../patches-3.18/259-regmap_dynamic.patch | 80 - ...libc-specific-inclusion-of-sysinfo.h.patch | 34 - ...bc-compat.h-do-not-rely-on-__GLIBC__.patch | 81 - ...prevent-redefinition-of-struct-ethhd.patch | 67 - .../500-yaffs-Kbuild-integration.patch | 18 - .../502-yaffs-fix-compat-tags-handling.patch | 239 - ...3-yaffs-add-tags-9bytes-mount-option.patch | 115 - .../504-yaffs-3.16-new-fops.patch | 25 - .../550-ubifs-symlink-xattr-support.patch | 55 - ...etfilter_match_bypass_default_checks.patch | 84 - .../patches-3.18/630-packet_socket_type.patch | 134 - .../653-disable_netlink_trim.patch | 30 - .../patches-3.18/655-increase_skb_pad.patch | 11 - .../656-skb_reduce_truesize-helper.patch | 41 - ...Add-support-for-MAP-E-FMRs-mesh-mode.patch | 481 - ...urce-specific-default-route-handling.patch | 96 - ...ng-with-source-address-failed-policy.patch | 249 - ...T-skip-GRO-for-foreign-MAC-addresses.patch | 160 - .../patches-3.18/701-phy_extension.patch | 63 - .../702-phy_add_aneg_done_function.patch | 27 - .../704-phy-no-genphy-soft-reset.patch | 29 - ...710-phy-add-mdio_register_board_info.patch | 192 - .../patches-3.18/721-phy_packets.patch | 161 - .../773-bgmac-add-srab-switch.patch | 72 - .../811-pci_disable_usb_common_quirks.patch | 101 - .../patches-3.18/901-debloat_sock_diag.patch | 65 - .../patches-3.18/902-debloat_proc.patch | 341 - .../patches-3.18/903-debloat_direct_io.patch | 83 - .../997-device_tree_cmdline.patch | 24 - ...Fix-brightness-setting-when-setting-.patch | 28 - .../patches-4.4/259-regmap_dynamic.patch | 87 - ...libc-specific-inclusion-of-sysinfo.h.patch | 34 - ...bc-compat.h-do-not-rely-on-__GLIBC__.patch | 94 - ...prevent-redefinition-of-struct-ethhd.patch | 67 - ...-to-use-platform-specific-chip-fixup.patch | 37 - .../477-mtd-add-spi-nor-add-mx25u3235f.patch | 10 - ...mtd-device-named-ubi-or-data-on-boot.patch | 76 - .../494-mtd-ubi-add-EOF-marker-support.patch | 51 - .../500-yaffs-Kbuild-integration.patch | 18 - .../502-yaffs-fix-compat-tags-handling.patch | 239 - ...3-yaffs-add-tags-9bytes-mount-option.patch | 115 - .../patches-4.4/504-yaffs-3.16-new-fops.patch | 29 - .../505-yaffs-3.19-f_dentry-remove.patch | 95 - ...2-using-new-follow_link-and-put_link.patch | 47 - ...etfilter_match_bypass_default_checks.patch | 84 - ...ng-with-source-address-failed-policy.patch | 249 - ...T-skip-GRO-for-foreign-MAC-addresses.patch | 160 - .../702-phy_add_aneg_done_function.patch | 27 - .../generic/patches-4.4/720-phy_adm6996.patch | 26 - .../generic/patches-4.4/721-phy_packets.patch | 161 - .../patches-4.4/722-phy_mvswitch.patch | 23 - .../generic/patches-4.4/723-phy_ip175c.patch | 23 - .../generic/patches-4.4/724-phy_ar8216.patch | 24 - .../generic/patches-4.4/725-phy_rtl8306.patch | 23 - .../generic/patches-4.4/726-phy_rtl8366.patch | 45 - .../generic/patches-4.4/727-phy-rtl8367.patch | 23 - .../patches-4.4/728-phy-rtl8367b.patch | 23 - .../generic/patches-4.4/729-phy-tantos.patch | 21 - .../generic/patches-4.4/730-phy_b53.patch | 21 - .../732-phy-ar8216-led-support.patch | 13 - .../patches-4.4/733-phy_mvsw61xx.patch | 23 - .../patches-4.4/902-debloat_proc.patch | 385 - .../980-arm_openwrt_machtypes.patch | 32 - .../pending-3.18/001-mtdsplit_backport.patch | 142 + .../002-phy_drivers_backport.patch | 552 + .../pending-3.18/003-myloader_backport.patch | 11 + .../020-ssb_update.patch | 0 .../021-ssb_sprom.patch | 0 .../025-bcma_backport.patch | 0 .../026-bcma-from-3.20.patch | 0 .../027-bcma-from-4.1.patch | 0 .../028-bcma-from-4.2.patch | 0 .../029-bcma-from-4.4.patch | 0 .../030-backport_bcm47xx_nvram.patch | 0 ...11-Allow-set-network-namespace-by-fd.patch | 0 .../031-bcma-from-4.5.patch | 0 .../032-bcma-from-4.6.patch | 0 ...-mtd-bcm47xxpart-backports-from-3.19.patch | 0 ...-mtd-bcm47xxpart-backports-from-3.20.patch | 95 + ...GD25Q128B_support_backport_from_3.19.patch | 0 .../044-backport-m25p80-jedec-probe.patch | 39 + .../050-backport_netfilter_rtcache.patch | 0 ...ting-hash_max-multicast_router-if-in.patch | 0 .../060-mips_decompressor_memmove.patch | 0 ...gmac-register-napi-before-the-device.patch | 44 + ...rqs-only-if-there-is-nothing-to-poll.patch | 0 .../073-bgmac-Clean-warning-messages.patch | 0 ...ixed-PHY-for-ARM-BCM470X-BCM5301X-ch.patch | 0 ...mac-allow-enabling-on-ARCH_BCM_5301X.patch | 0 ...76-net-phy-export-fixed_phy_register.patch | 0 ...scriptor-frame-start-end-definitions.patch | 0 ...gmac-implement-GRO-and-use-build_skb.patch | 0 ...mac-implement-scatter-gather-support.patch | 267 + ...gmac-simplify-tx-ring-index-handling.patch | 0 ...rrupts-disabled-as-long-as-there-is-.patch | 0 ...received-skb-headroom-to-NET_SKB_PAD.patch | 0 ...bgmac-simplify-rx-DMA-error-handling.patch | 0 ...gmac-add-check-for-oversized-packets.patch | 0 ...ncrease-rx-ring-size-from-511-to-512.patch | 0 ...7-10-bgmac-simplify-dma-init-cleanup.patch | 0 .../077-11-bgmac-fix-DMA-rx-corruption.patch | 0 .../077-12-bgmac-drop-ring-num_slots.patch | 0 ...enable-Ethernet-core-before-using-it.patch | 31 + ...fix-MAC-soft-reset-bit-for-corerev-4.patch | 0 ...c-net-fib_trie-when-CONFIG_IP_MULTIP.patch | 0 ...e-balancing-issue-if-new-node-pushes.patch | 0 ...usage-stats-to-be-percpu-instead-of-.patch | 0 ...rie-Make-leaf-and-tnode-more-uniform.patch | 0 ...node_free-and-leaf_free-into-node_fr.patch | 0 ...80-05-fib_trie-Merge-leaf-into-tnode.patch | 0 ...e-fib_table_lookup-to-avoid-wasting-.patch | 0 ...0-07-fib_trie-Optimize-fib_find_node.patch | 0 ...8-fib_trie-Optimize-fib_table_insert.patch | 0 ...meaning-of-pos-to-represent-unchecke.patch | 0 ...igned-long-for-anything-dealing-with.patch | 0 ...Push-rcu_read_lock-unlock-to-callers.patch | 403 + ...e-Move-resize-to-after-inflate-halve.patch | 0 ...ctions-should_inflate-and-should_hal.patch | 0 ...signment-of-child-to-parent-down-int.patch | 0 ...tnode-flushing-down-to-inflate-halve.patch | 0 ...-halve-nodes-in-a-more-RCU-friendly-.patch | 0 ...checks-for-index-tnode_child_length-.patch | 0 ...Add-tracking-value-for-suffix-length.patch | 0 ...ex-0ul-n-bits-instead-of-index-n-bit.patch | 0 ...-bug-and-merge-similar-bits-of-infla.patch | 0 ...ck-to-slen-update-on-inflate-halve-f.patch | 0 ...llapse-and-should_collapse-to-resize.patch | 0 ...ty_children-instead-of-counting-empt.patch | 0 ...b_find_alias-to-file-where-it-is-use.patch | 0 ...-Various-clean-ups-for-handling-slen.patch | 0 ...eue-to-die-properly-when-a-PADT-is-r.patch | 0 ...02-pppoe-Lacks-DST-MAC-address-check.patch | 0 ...poe-device-in-pppoe_unbind_sock_work.patch | 0 ..._state-to-PPPOX_ZOMBIE-in-pppoe_disc.patch | 0 ...ppp-remove-PPPOX_ZOMBIE-socket-state.patch | 0 ...ry-corruption-in-padt-work-structure.patch | 0 ...ment-fix-headroom-tests-and-skb-leak.patch | 101 + ...ncrease-headroom-on-received-packets.patch | 0 .../087-regmap-make-LZO-cache-optional.patch | 67 + ...layfs-fallback-to-readonly-when-full.patch | 109 + ...-nor-add-support-Spansion_S25FL164K.patch} | 0 ...-if-the-device-is-processing-a-messa.patch | 0 ...rs-inside-calling-context-for-spi_sy.patch | 0 ...e-message-pump-in-the-worker-kthread.patch | 0 ...ility-of-linux-in.h-with-netinet-in..patch | 0 ...ing_init-new-hook-for-archs-before-m.patch | 0 .../102-ehci_hcd_ignore_oc.patch | 0 ...ame2-and-add-RENAME_WHITEOUT-support.patch | 0 ...11-jffs2-add-RENAME_EXCHANGE-support.patch | 0 ...ge_allow_receiption_on_disabled_port.patch | 0 .../132-mips_inline_dma_ops.patch | 0 ...-generic-parsing-of-linux-part-probe.patch | 0 ...part-don-t-fail-because-of-bit-flips.patch | 92 + ...ci-make-USB_XHCI_PLATFORM-selectable.patch | 0 ...t_for_moving_ndp_to_end_of_ncm_frame.patch | 228 + ...-support-for-Quectel-EC20-Mini-PCIe-.patch | 114 + ...-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch | 96 + .../200-fix_localversion.patch | 0 .../pending-3.18/201-extra_optimization.patch | 14 + .../202-reduce_module_size.patch | 0 .../203-kallsyms_uncompressed.patch | 0 .../pending-3.18/204-module_strip.patch | 190 + .../205-backtrace_module_info.patch | 0 .../210-darwin_scripts_include.patch | 0 .../212-byteshift_portability.patch | 0 .../213-x86_vdso_portability.patch | 0 .../214-spidev_h_portability.patch | 0 .../220-gc_sections.patch | 0 .../221-module_exports.patch | 0 .../230-openwrt_lzma_options.patch | 0 .../250-netfilter_depends.patch | 0 .../251-sound_kconfig.patch | 0 .../252-mv_cesa_depends.patch | 0 .../253-ssb_b43_default_on.patch | 0 .../254-textsearch_kconfig_hacks.patch | 0 .../255-lib80211_kconfig_hacks.patch | 0 .../256-crypto_add_kconfig_prompts.patch | 0 .../257-wireless_ext_kconfig_hack.patch | 0 .../258-netfilter_netlink_kconfig_hack.patch | 0 .../pending-3.18/259-regmap_dynamic.patch | 87 + .../260-crypto_test_dependencies.patch | 0 ...t-add-fallback-for-unsupported-libcs.patch | 102 + ...prevent-redefinition-of-struct-ethhd.patch | 55 + .../300-mips_expose_boot_raw.patch | 0 .../301-mips_image_cmdline_hack.patch | 0 .../302-mips_no_branch_likely.patch | 0 .../304-mips_disable_fpu.patch | 0 .../305-mips_module_reloc.patch | 0 .../306-mips_mem_functions_performance.patch | 0 .../307-mips_highmem_offset.patch | 0 .../310-arm_module_unresolved_weak_sym.patch | 0 .../320-ppc4xx_optimization.patch | 0 .../321-powerpc_crtsavres_prereq.patch | 0 ...t-command-line-parameters-from-users.patch | 0 .../400-mtd-add-rootfs-split-support.patch | 0 ...for-different-partition-parser-types.patch | 0 ...arsers-for-rootfs-and-firmware-split.patch | 0 .../403-mtd-hook-mtdsplit-to-Kbuild.patch | 0 .../404-mtd-add-more-helper-functions.patch | 0 ...405-mtd-old-firmware-uimage-splitter.patch | 0 ...406-mtd-old-rootfs-squashfs-splitter.patch | 0 ...rward-declaration-of-struct-mtd_info.patch | 0 .../411-mtd-partial_eraseblock_write.patch | 0 .../412-mtd-partial_eraseblock_unlock.patch | 0 .../420-mtd-redboot_space.patch | 0 ...30-mtd-add-myloader-partition-parser.patch | 0 ...check-for-bad-blocks-when-calculatin.patch | 0 ...bcm47xxpart-detect-T_Meter-partition.patch | 0 .../440-block2mtd_init.patch | 0 .../441-block2mtd_probe.patch | 0 ...-to-use-platform-specific-chip-fixup.patch | 0 ...n-code-of-nand_correct_data-function.patch | 0 ...mtd-cfi_cmdset_0002-no-erase_suspend.patch | 0 ...et_0002-add-buffer-write-cmd-timeout.patch | 0 ...add-support-for-Winbond-W25X05-flash.patch | 0 ...support-for-the-Macronix-MX25L512E-S.patch | 0 ...support-for-the-ISSI-SI25CD512-SPI-f.patch | 0 ...mtd-spi-nor-add-macronix-mx25u25635f.patch | 0 .../476-mtd-spi-nor-add-eon-en25qh32.patch | 10 + .../480-mtd-set-rootfs-to-be-root-dev.patch | 0 ...mtd-device-named-ubi-or-data-on-boot.patch | 0 ...to-create-ubiblock-device-for-rootfs.patch | 0 ...ting-ubi0-rootfs-in-init-do_mounts.c.patch | 0 ...ROOT_DEV-to-ubiblock-rootfs-if-unset.patch | 0 .../494-mtd-ubi-add-EOF-marker-support.patch | 0 .../530-jffs2_make_lzma_available.patch | 0 .../531-debloat_lzma.patch | 0 .../532-jffs2_eofdetect.patch | 0 .../550-ubifs-symlink-xattr-support.patch | 55 + ...fs-fix-default-compression-selection.patch | 0 .../600-netfilter_conntrack_flush.patch | 0 ...etfilter_match_bypass_default_checks.patch | 101 + ...netfilter_match_bypass_default_table.patch | 0 ...netfilter_match_reduce_memory_access.patch | 0 ...-netfilter_optional_tcp_window_check.patch | 0 .../616-net_optimize_xfrm_calls.patch | 0 .../621-sched_act_connmark.patch | 0 .../pending-3.18/630-packet_socket_type.patch | 134 + .../640-bridge_no_eap_forward.patch | 0 .../641-bridge_always_accept_eap.patch | 0 .../642-bridge_port_isolate.patch | 0 .../645-bridge_multicast_to_unicast.patch | 0 .../650-pppoe_header_pad.patch | 0 .../651-wireless_mesh_header.patch | 0 .../653-disable_netlink_trim.patch | 26 + .../pending-3.18/655-increase_skb_pad.patch | 11 + .../656-skb_reduce_truesize-helper.patch | 41 + .../657-qdisc_reduce_truesize.patch | 0 .../660-fq_codel_defaults.patch | 0 .../661-fq_codel_keep_dropped_stats.patch | 0 .../662-use_fq_codel_by_default.patch | 0 .../663-remove_pfifo_fast.patch | 0 ...Add-support-for-MAP-E-FMRs-mesh-mode.patch | 481 + ...urce-specific-default-route-handling.patch | 96 + ...ng-with-source-address-failed-policy.patch | 249 + ...nes-for-_POLICY_FAILED-until-all-cod.patch | 0 ...T-skip-GRO-for-foreign-MAC-addresses.patch | 160 + .../681-NET-add-of_get_mac_address_mtd.patch | 0 .../700-swconfig.patch | 0 .../pending-3.18/701-phy_extension.patch | 63 + .../702-phy_add_aneg_done_function.patch | 27 + ...detach-callback-to-struct-phy_driver.patch | 0 ...710-phy-add-mdio_register_board_info.patch | 192 + .../720-phy_adm6996.patch | 0 .../pending-3.18/721-phy_packets.patch | 161 + .../722-phy_mvswitch.patch | 0 .../723-phy_ip175c.patch | 0 .../724-phy_ar8216.patch | 0 .../725-phy_rtl8306.patch | 0 .../726-phy_rtl8366.patch | 0 .../727-phy-rtl8367.patch | 0 .../728-phy-rtl8367b.patch | 0 .../729-phy-tantos.patch | 0 .../730-phy_b53.patch | 0 .../732-phy-ar8216-led-support.patch | 0 .../733-phy_mvsw61xx.patch | 0 ...-at803x-allow-to-configure-via-pdata.patch | 0 ...net-phy-at803x-fix-at8033-sgmii-mode.patch | 0 .../760-8139cp-fixes-from-4.3.patch | 0 .../773-bgmac-add-srab-switch.patch | 72 + .../785-hso-support-0af0-9300.patch | 0 .../810-pci_disable_common_quirks.patch | 0 .../811-pci_disable_usb_common_quirks.patch | 101 + .../821-usb-dwc2-dualrole.patch | 0 .../831-ledtrig_netdev.patch | 0 .../834-ledtrig-libata.patch | 0 .../840-rtc7301.patch | 0 .../841-rtc_pt7c4338.patch | 0 .../861-04_spi_gpio_implement_spi_delay.patch | 0 .../862-gpio_spi_driver.patch | 0 .../870-hifn795x_byteswap.patch | 0 .../890-8250_optional_sysrq.patch | 0 .../pending-3.18/901-debloat_sock_diag.patch | 65 + .../pending-3.18/902-debloat_proc.patch | 341 + .../904-debloat_dma_buf.patch | 0 .../910-kobject_uevent.patch | 0 .../911-kobject_add_broadcast_uevent.patch | 0 .../921-use_preinit_as_init.patch | 0 ...ays-create-console-node-in-initramfs.patch | 0 .../930-crashlog.patch | 0 ...e-filenames-from-deps_initramfs-list.patch | 0 .../980-arm_openwrt_machtypes.patch | 0 .../990-gpio_wdt.patch | 0 .../995-mangle_bootargs.patch | 0 .../997-device_tree_cmdline.patch | 24 + ...able_wilink_platform_without_drivers.patch | 0 .../999-seccomp_log.patch | 0 ...fix-cache-flushing-for-highmem-pages.patch | 30 + ...s-negative-stack-offsets-on-stack-tr.patch | 57 + .../pending-4.14/110-ehci_hcd_ignore_oc.patch | 79 + ...e_mem_map-with-ARCH_PFN_OFFSET-calcu.patch | 82 + ...0-add-linux-spidev-compatible-si3210.patch | 18 + ..._value_cansleep-for-setting-chipsele.patch | 20 + ...ame2-and-add-RENAME_WHITEOUT-support.patch | 62 + ...41-jffs2-add-RENAME_EXCHANGE-support.patch | 73 + ...ge_allow_receiption_on_disabled_port.patch | 43 + ...-generic-parsing-of-linux-part-probe.patch | 161 + ...et-phy-at803x-add-support-for-AT8032.patch | 70 + ...ng-comment-related-to-link-detection.patch | 43 + .../pending-4.14/201-extra_optimization.patch | 32 + .../203-kallsyms_uncompressed.patch | 119 + .../205-backtrace_module_info.patch | 45 + .../pending-4.14/206-mips-disable-vdso.patch | 23 + ...e-filenames-from-deps_initramfs-list.patch | 46 + ...able_wilink_platform_without_drivers.patch | 20 + .../300-mips_expose_boot_raw.patch | 40 + .../302-mips_no_branch_likely.patch | 22 + .../pending-4.14/304-mips_disable_fpu.patch | 137 + .../pending-4.14/305-mips_module_reloc.patch | 366 + .../306-mips_mem_functions_performance.patch | 106 + .../307-mips_highmem_offset.patch | 19 + .../pending-4.14/308-mips32r2_tune.patch | 22 + .../310-arm_module_unresolved_weak_sym.patch | 22 + ...t-command-line-parameters-from-users.patch | 272 + .../332-arc-add-OWRTDTB-section.patch | 80 + ...able-unaligned-access-in-kernel-mode.patch | 24 + ...IPS-mm-remove-mips_dma_mapping_error.patch | 32 + ...ove-no-op-dma_map_ops-where-possible.patch | 140 + .../400-mtd-add-rootfs-split-support.patch | 124 + ...for-different-partition-parser-types.patch | 110 + ...arsers-for-rootfs-and-firmware-split.patch | 81 + .../403-mtd-hook-mtdsplit-to-Kbuild.patch | 32 + .../404-mtd-add-more-helper-functions.patch | 94 + .../411-mtd-partial_eraseblock_write.patch | 154 + .../412-mtd-partial_eraseblock_unlock.patch | 40 + .../pending-4.14/420-mtd-redboot_space.patch | 41 + ...30-mtd-add-myloader-partition-parser.patch | 47 + ...check-for-bad-blocks-when-calculatin.patch | 67 + ...bcm47xxpart-detect-T_Meter-partition.patch | 37 + .../pending-4.14/440-block2mtd_init.patch | 116 + .../pending-4.14/441-block2mtd_probe.patch | 47 + ...-fallback-from-spi_flash_read-to-reg.patch | 36 + ...w-NOR-driver-to-write-fewer-bytes-th.patch | 36 + ...mtd-cfi_cmdset_0002-no-erase_suspend.patch | 25 + ...et_0002-add-buffer-write-cmd-timeout.patch | 17 + ...25p80-mx-disable-software-protection.patch | 18 + ...or-fix-Spansion-regressions-aliased-.patch | 37 + ...ort-limiting-4K-sectors-support-base.patch | 56 + .../476-mtd-spi-nor-add-eon-en25q128.patch | 18 + .../477-mtd-add-spi-nor-add-mx25u3235f.patch | 18 + ...support-for-XM25QH64A-and-XM25QH128A.patch | 30 + .../479-mtd-spi-nor-add-eon-en25qh32.patch | 10 + .../480-mtd-set-rootfs-to-be-root-dev.patch | 38 + ...mtd-device-named-ubi-or-data-on-boot.patch | 73 + ...to-create-ubiblock-device-for-rootfs.patch | 66 + ...ting-ubi0-rootfs-in-init-do_mounts.c.patch | 51 + ...ROOT_DEV-to-ubiblock-rootfs-if-unset.patch | 34 + .../494-mtd-ubi-add-EOF-marker-support.patch | 60 + .../530-jffs2_make_lzma_available.patch | 5180 +++++ .../pending-4.14/532-jffs2_eofdetect.patch | 65 + ...fs-fix-default-compression-selection.patch | 37 + ...-to-create-UBI-FS-version-4-on-empty.patch | 63 + .../600-netfilter_conntrack_flush.patch | 95 + ...etfilter_match_bypass_default_checks.patch | 110 + ...netfilter_match_bypass_default_table.patch | 111 + ...netfilter_match_reduce_memory_access.patch | 22 + ...-netfilter_optional_tcp_window_check.patch | 44 + .../616-net_optimize_xfrm_calls.patch | 20 + ...del-do-not-defer-queue-length-update.patch | 86 + .../pending-4.14/630-packet_socket_type.patch | 138 + ...w_table-add-hardware-offload-support.patch | 580 + ...w_table-support-hw-offload-through-v.patch | 303 + ...-support-hardware-flow-table-offload.patch | 60 + ...-support-hardware-flow-table-offload.patch | 61 + ...-support-hardware-flow-table-offload.patch | 125 + ...w_table-rework-hardware-offload-time.patch | 37 + .../pending-4.14/655-increase_skb_pad.patch | 20 + ...Add-support-for-MAP-E-FMRs-mesh-mode.patch | 500 + ...ng-with-source-address-failed-policy.patch | 255 + ...nes-for-_POLICY_FAILED-until-all-cod.patch | 50 + ...T-skip-GRO-for-foreign-MAC-addresses.patch | 152 + .../681-NET-add-of_get_mac_address_mtd.patch | 127 + .../pending-4.14/701-phy_extension.patch | 95 + ...detach-callback-to-struct-phy_driver.patch | 38 + ...-at803x-allow-to-configure-via-pdata.patch | 142 + ...net-phy-at803x-fix-at8033-sgmii-mode.patch | 54 + .../810-pci_disable_common_quirks.patch | 60 + .../811-pci_disable_usb_common_quirks.patch | 115 + .../pending-4.14/831-ledtrig_netdev.patch | 74 + .../pending-4.14/834-ledtrig-libata.patch | 149 + .../pending-4.14/920-mangle_bootargs.patch | 71 + ...y-serial-exar-generalize-rs485-setup.patch | 81 + .../pending-4.4/001-mtdsplit_backport.patch | 153 + .../002-phy_drivers_backport.patch | 640 + .../pending-4.4/003-myloader_backport.patch | 11 + ...dcode-path-to-awk-in-scripts-ld-vers.patch | 0 .../pending-4.4/020-bcma-from-4.5.patch | 49 + .../pending-4.4/021-bcma-from-4.6.patch | 761 + .../pending-4.4/022-bcma-from-4.8.patch | 52 + .../pending-4.4/023-bcma-from-4.9.patch | 108 + .../pending-4.4/025-bcma-from-4.11.patch | 85 + .../pending-4.4/026-bcma-from-4.12.patch | 47 + ...kb_cow_head-to-deal-with-cloned-skbs.patch | 0 ...kb_cow_head-to-deal-with-cloned-skbs.patch | 0 ...kb_cow_head-to-deal-with-cloned-skbs.patch | 0 ...l-add-batch-ability-to-fq_codel_drop.patch | 0 ...odel-add-memory-limitation-per-queue.patch | 0 ...fq_codel-fix-memory-limitation-drift.patch | 0 ...35-fq_codel-fix-NET_XMIT_CN-behavior.patch | 0 ...ude-mtd.h-header-for-struct-mtd_info.patch | 0 ...endency-for-MTD_BCM47XXSFLASH-symbol.patch | 0 ...mx25l3205d-mx25l6405d-append-SECT_4K.patch | 0 ...80-add-support-for-mmap-read-request.patch | 0 ...nce-error-output-if-MS_SILENT-is-set.patch | 0 ...ence-early-error-if-MS_SILENT-is-set.patch | 0 ...i-nor-backport-SPI_NOR_HAS_LOCK-flag.patch | 0 .../050-backport_netfilter_rtcache.patch | 0 ...001-ovl-rename-is_merge-to-is_lowest.patch | 0 ...ds-with-the-ones-from-the-superblock.patch | 0 ...1-0005-ovl-proper-cleanup-of-workdir.patch | 0 .../052-01-ubifs-Implement-O_TMPFILE.patch | 0 ...2-02-ubifs-Implement-RENAME_WHITEOUT.patch | 0 ...2-03-ubifs-Implement-RENAME_EXCHANGE.patch | 0 ...fs-Use-move-variable-in-ubifs_rename.patch | 0 ...imit-and-delta-fields-from-struct-ub.patch | 0 ...writeback_interval-value-for-wbuf-ti.patch | 0 .../060-mips_decompressor_memmove.patch | 0 ...061-softirq-let-ksoftirqd-do-its-job.patch | 0 ...mtd-nand-Add-Winbond-manufacturer-id.patch | 34 + ...bgmac-clarify-CONFIG_BCMA-dependency.patch | 46 + ...-checking-for-BCM4707-BCM53018-chip-.patch | 106 + ...port-Ethernet-device-on-BCM47094-SoC.patch | 39 + ...fix-MAC-soft-reset-bit-for-corerev-4.patch | 34 + ...device-with-backing-device-structure.patch | 25 + ...c-Add-support-for-ethtool-statistics.patch | 175 + ...gmac-Maintain-some-netdev-statistics.patch | 68 + ...ac-use-phydev-from-struct-net_device.patch | 105 + ...ac-change-bgmac_-prints-to-dev_-prin.patch | 407 + ...t-ethernet-bgmac-add-dma_dev-pointer.patch | 112 + ...ac-move-BCMA-MDIO-Phy-code-into-a-se.patch | 676 + ...ernet-bgmac-convert-to-feature-flags.patch | 384 + ...et-bgmac-Add-platform-device-support.patch | 1260 ++ ...ac-Fix-return-value-check-in-bgmac_p.patch | 26 + ...ac-Remove-redundant-dev_err-call-in-.patch | 42 + ...versed-check-for-MII-registration-er.patch | 28 + ...pport-Ethernet-core-on-BCM53573-SoCs.patch | 161 + ...t-clear-when-setting-interface-type-.patch | 31 + ...-bgmac-Fix-errant-feature-flag-check.patch | 33 + ...pelling-mistake-connecton-connection.patch | 25 + ...versed-checks-for-clock-control-flag.patch | 35 + ...rsion-of-alloc_etherdev_mqs-function.patch | 0 ...te-struct-bgmac-just-once-don-t-copy.patch | 139 + ...truct-bcma_mdio-we-don-t-need-anymor.patch | 274 + ...e-PHY-subsystem-for-initializing-PHY.patch | 53 + ...-master-mode-for-BCM54210E-and-B5021.patch | 50 + ...ET-PHY-adds-driver-for-lantiq-PHY11G.patch | 537 + ...-phy-update-Broadcom-drivers-to-v4.5.patch | 125 + ...-phy-update-Broadcom-drivers-to-v4.6.patch | 123 + ...ick-Broadcom-drivers-updates-from-v4.patch | 315 + ...ick-Broadcom-drivers-updates-from-v4.patch | 283 + ...ick-Broadcom-drivers-updates-from-v4.patch | 37 + ...celerated-read-support-for-spi-flash.patch | 0 ...spi_flash_read-callback-for-MMIO-bas.patch | 157 + ...core-let-USB-device-know-device-node.patch | 0 ...usb_alloc_dev-fix-setting-of-portnum.patch | 0 ...vm_-clk_hw_-register-unregister-APIs.patch | 0 ...0002-clk-Add-clk_hw-OF-clk-providers.patch | 0 ...ore-Introduce-a-USB-port-LED-trigger.patch | 0 ...-Use-proper-LED-API-to-fix-potential.patch | 0 ...B-ports-from-DT-in-the-usbport-LED-t.patch | 106 + ...-Set-of_node-for-created-LED-devices.patch | 0 ...leds-gpio-introduce-gpio_blink_set_t.patch | 0 ...-to-managed-version-of-led_classdev_.patch | 0 ...-variants-of-LED-registering-functio.patch | 0 ...-variant-of-LED-registering-function.patch | 0 ...al-Add-devm-version-of-thermal_zone_.patch | 0 ...-export-apis-to-get-slope-and-offset.patch | 0 ...5-add-thermal-driver-for-bcm2835-SoC.patch | 365 + ...roadcom-add-Northstar-thermal-driver.patch | 173 + ...-fix-compilation-of-Northstar-driver.patch | 19 + .../087-regmap-make-LZO-cache-optional.patch | 69 + ...e-IPI-calls-for-CM-indexed-cache-ops.patch | 0 ...4k-Exclude-sibling-CPUs-in-SMP-calls.patch | 0 ...appended-dtb-to-the-end-of-the-kerne.patch | 0 ...e-appended-dtb-address-in-a-variable.patch | 0 ...ize-calc-when-avoiding-IPIs-for-smal.patch | 0 .../096-arc-add-model-property-in-dts.patch | 0 .../097-MIPS-io.h-Define-ioremap_cache.patch | 0 ...98-usb-dwc2-Remove-unnecessary-kfree.patch | 0 ...fix-cache-flushing-for-highmem-pages.patch | 0 .../102-ehci_hcd_ignore_oc.patch | 0 ...e_mem_map-with-ARCH_PFN_OFFSET-calcu.patch | 0 .../105-add-linux-spidev-compatible.patch | 0 ..._value_cansleep-for-setting-chipsele.patch | 0 ...ame2-and-add-RENAME_WHITEOUT-support.patch | 0 ...11-jffs2-add-RENAME_EXCHANGE-support.patch | 0 ...ge_allow_receiption_on_disabled_port.patch | 0 .../132-mips_inline_dma_ops.patch | 0 ...-generic-parsing-of-linux-part-probe.patch | 0 ...support-for-ESMT_f25l32qa-and-ESMT_f.patch | 0 ...dget-udc-net2280-add-usb2380-support.patch | 0 ...-serial-console-directly-from-ChipCo.patch | 92 + .../200-fix_localversion.patch | 0 .../201-extra_optimization.patch | 0 .../202-reduce_module_size.patch | 0 .../203-kallsyms_uncompressed.patch | 0 .../204-module_strip.patch | 0 .../205-backtrace_module_info.patch | 0 .../206-mips-disable-vdso.patch | 0 ...-mips-vdso-dbg-rebuild-after-genvdso.patch | 0 .../pending-4.4/208-disable-modorder.patch | 34 + .../210-darwin_scripts_include.patch | 0 .../211-sign-file-libressl.patch | 0 .../212-byteshift_portability.patch | 0 .../214-spidev_h_portability.patch | 0 .../220-gc_sections.patch | 0 .../221-module_exports.patch | 0 .../222-arm_zimage_none.patch | 0 .../230-openwrt_lzma_options.patch | 0 .../250-netfilter_depends.patch | 0 .../251-sound_kconfig.patch | 0 .../252-mv_cesa_depends.patch | 0 .../253-ssb_b43_default_on.patch | 0 .../254-textsearch_kconfig_hacks.patch | 0 .../255-lib80211_kconfig_hacks.patch | 0 .../256-crypto_add_kconfig_prompts.patch | 0 .../257-wireless_ext_kconfig_hack.patch | 0 .../258-netfilter_netlink_kconfig_hack.patch | 0 .../pending-4.4/259-regmap_dynamic.patch | 90 + .../260-crypto_test_dependencies.patch | 0 ...t-add-fallback-for-unsupported-libcs.patch | 130 + ...prevent-redefinition-of-struct-ethhd.patch | 55 + .../280-rfkill-stubs.patch | 0 .../300-mips_expose_boot_raw.patch | 0 .../301-mips_image_cmdline_hack.patch | 0 .../302-mips_no_branch_likely.patch | 0 .../304-mips_disable_fpu.patch | 0 .../305-mips_module_reloc.patch | 0 .../306-mips_mem_functions_performance.patch | 0 .../307-mips_highmem_offset.patch | 0 .../308-mips32r2_tune.patch | 0 .../310-arm_module_unresolved_weak_sym.patch | 0 .../320-ppc4xx_optimization.patch | 0 .../321-powerpc_crtsavres_prereq.patch | 0 ...t-command-line-parameters-from-users.patch | 0 ...31-arc-remove-dependency-on-DEVTMPFS.patch | 0 .../332-arc-add-OWRTDTB-section.patch | 0 ...able-unaligned-access-in-kernel-mode.patch | 0 .../400-mtd-add-rootfs-split-support.patch | 0 ...for-different-partition-parser-types.patch | 0 ...arsers-for-rootfs-and-firmware-split.patch | 0 .../403-mtd-hook-mtdsplit-to-Kbuild.patch | 0 .../404-mtd-add-more-helper-functions.patch | 0 ...rward-declaration-of-struct-mtd_info.patch | 0 .../411-mtd-partial_eraseblock_write.patch | 0 .../412-mtd-partial_eraseblock_unlock.patch | 0 .../420-mtd-redboot_space.patch | 0 ...30-mtd-add-myloader-partition-parser.patch | 0 .../440-block2mtd_init.patch | 0 .../441-block2mtd_probe.patch | 0 ...-to-use-platform-specific-chip-fixup.patch | 37 + ...n-code-of-nand_correct_data-function.patch | 0 ...mtd-cfi_cmdset_0002-no-erase_suspend.patch | 0 ...et_0002-add-buffer-write-cmd-timeout.patch | 0 ...25p80-mx-disable-software-protection.patch | 0 ...mtd-spi-nor-add-macronix-mx25u25635f.patch | 0 .../476-mtd-spi-nor-add-eon-en25q128.patch | 0 .../477-mtd-add-spi-nor-add-mx25u3235f.patch | 10 + .../478-mtd-spi-nor-add-eon-en25qh32.patch | 10 + ...479-enable_mtd_has_lock_for_f25l32pa.patch | 0 .../480-mtd-set-rootfs-to-be-root-dev.patch | 0 ...mtd-device-named-ubi-or-data-on-boot.patch | 76 + ...to-create-ubiblock-device-for-rootfs.patch | 0 ...ting-ubi0-rootfs-in-init-do_mounts.c.patch | 0 ...ROOT_DEV-to-ubiblock-rootfs-if-unset.patch | 0 .../494-mtd-ubi-add-EOF-marker-support.patch | 51 + .../530-jffs2_make_lzma_available.patch | 0 .../531-debloat_lzma.patch | 0 .../532-jffs2_eofdetect.patch | 0 ...fs-fix-default-compression-selection.patch | 0 .../600-netfilter_conntrack_flush.patch | 0 ...etfilter_match_bypass_default_checks.patch | 101 + ...netfilter_match_bypass_default_table.patch | 0 ...netfilter_match_reduce_memory_access.patch | 0 ...-netfilter_optional_tcp_window_check.patch | 0 .../616-net_optimize_xfrm_calls.patch | 0 ...del-do-not-defer-queue-length-update.patch | 0 .../630-packet_socket_type.patch | 0 .../640-bridge_no_eap_forward.patch | 0 .../641-bridge_always_accept_eap.patch | 0 .../642-bridge_port_isolate.patch | 0 .../645-bridge_multicast_to_unicast.patch | 0 .../651-wireless_mesh_header.patch | 0 .../653-disable_netlink_trim.patch | 0 .../655-increase_skb_pad.patch | 0 .../660-fq_codel_defaults.patch | 0 .../661-fq_codel_keep_dropped_stats.patch | 0 .../662-use_fq_codel_by_default.patch | 0 .../663-remove_pfifo_fast.patch | 0 ...Add-support-for-MAP-E-FMRs-mesh-mode.patch | 0 ...ng-with-source-address-failed-policy.patch | 257 + ...nes-for-_POLICY_FAILED-until-all-cod.patch | 0 ...T-skip-GRO-for-foreign-MAC-addresses.patch | 160 + .../681-NET-add-of_get_mac_address_mtd.patch | 0 .../700-swconfig.patch | 0 .../701-phy_extension.patch | 0 .../702-phy_add_aneg_done_function.patch | 27 + ...detach-callback-to-struct-phy_driver.patch | 0 ...710-phy-add-mdio_register_board_info.patch | 0 .../generic/pending-4.4/720-phy_adm6996.patch | 26 + .../generic/pending-4.4/721-phy_packets.patch | 161 + .../pending-4.4/722-phy_mvswitch.patch | 23 + .../generic/pending-4.4/723-phy_ip175c.patch | 23 + .../generic/pending-4.4/724-phy_ar8216.patch | 24 + .../generic/pending-4.4/725-phy_rtl8306.patch | 23 + .../generic/pending-4.4/726-phy_rtl8366.patch | 45 + .../generic/pending-4.4/727-phy-rtl8367.patch | 23 + .../pending-4.4/728-phy-rtl8367b.patch | 23 + .../generic/pending-4.4/729-phy-tantos.patch | 21 + .../generic/pending-4.4/730-phy_b53.patch | 21 + .../732-phy-ar8216-led-support.patch | 13 + .../pending-4.4/733-phy_mvsw61xx.patch | 23 + ...-at803x-allow-to-configure-via-pdata.patch | 0 ...net-phy-at803x-fix-at8033-sgmii-mode.patch | 0 .../736-at803x-fix-reset-handling.patch | 0 ...equest-reset-GPIO-only-for-AT8030-PH.patch | 0 ...nly-the-AT8030-needs-a-hardware-rese.patch | 0 ...et-phy-at803x-add-support-for-AT8032.patch | 0 .../773-bgmac-add-srab-switch.patch | 88 + .../810-pci_disable_common_quirks.patch | 0 .../811-pci_disable_usb_common_quirks.patch | 0 ...ove-annoying-warning-about-bogus-URB.patch | 0 .../831-ledtrig_netdev.patch | 0 .../834-ledtrig-libata.patch | 0 .../835-misc-owl_loader.patch | 0 .../840-rtc7301.patch | 0 .../841-rtc_pt7c4338.patch | 0 .../861-04_spi_gpio_implement_spi_delay.patch | 0 .../862-gpio_spi_driver.patch | 0 .../890-uart_optional_sysrq.patch | 0 .../901-debloat_sock_diag.patch | 0 .../pending-4.4/902-debloat_proc.patch | 385 + .../904-debloat_dma_buf.patch | 0 .../910-kobject_uevent.patch | 0 .../911-kobject_add_broadcast_uevent.patch | 0 .../921-use_preinit_as_init.patch | 0 ...ays-create-console-node-in-initramfs.patch | 0 .../930-crashlog.patch | 0 ...e-filenames-from-deps_initramfs-list.patch | 0 .../995-mangle_bootargs.patch | 0 ...able_wilink_platform_without_drivers.patch | 0 ...fix-cache-flushing-for-highmem-pages.patch | 30 + .../pending-4.9/110-ehci_hcd_ignore_oc.patch | 79 + ...e_mem_map-with-ARCH_PFN_OFFSET-calcu.patch | 82 + ...0-add-linux-spidev-compatible-si3210.patch | 18 + ..._value_cansleep-for-setting-chipsele.patch | 20 + ...ame2-and-add-RENAME_WHITEOUT-support.patch | 62 + ...41-jffs2-add-RENAME_EXCHANGE-support.patch | 73 + ...ge_allow_receiption_on_disabled_port.patch | 43 + ...-generic-parsing-of-linux-part-probe.patch | 181 + ...ontrollers-before-the-specified-head.patch | 30 + ...ng-comment-related-to-link-detection.patch | 43 + .../pending-4.9/201-extra_optimization.patch | 32 + .../203-kallsyms_uncompressed.patch | 119 + .../205-backtrace_module_info.patch | 45 + .../pending-4.9/206-mips-disable-vdso.patch | 23 + ...e-filenames-from-deps_initramfs-list.patch | 47 + ...able_wilink_platform_without_drivers.patch | 20 + .../300-mips_expose_boot_raw.patch | 40 + .../302-mips_no_branch_likely.patch | 22 + .../pending-4.9/304-mips_disable_fpu.patch | 137 + .../pending-4.9/305-mips_module_reloc.patch | 365 + .../306-mips_mem_functions_performance.patch | 106 + .../pending-4.9/307-mips_highmem_offset.patch | 19 + .../pending-4.9/308-mips32r2_tune.patch | 22 + .../310-arm_module_unresolved_weak_sym.patch | 22 + ...t-command-line-parameters-from-users.patch | 269 + .../332-arc-add-OWRTDTB-section.patch | 80 + ...able-unaligned-access-in-kernel-mode.patch | 24 + ...IPS-mm-remove-mips_dma_mapping_error.patch | 32 + ...ove-no-op-dma_map_ops-where-possible.patch | 140 + .../400-mtd-add-rootfs-split-support.patch | 124 + ...for-different-partition-parser-types.patch | 110 + ...arsers-for-rootfs-and-firmware-split.patch | 81 + .../403-mtd-hook-mtdsplit-to-Kbuild.patch | 32 + .../404-mtd-add-more-helper-functions.patch | 94 + .../411-mtd-partial_eraseblock_write.patch | 154 + .../412-mtd-partial_eraseblock_unlock.patch | 40 + .../pending-4.9/420-mtd-redboot_space.patch | 41 + ...30-mtd-add-myloader-partition-parser.patch | 47 + ...check-for-bad-blocks-when-calculatin.patch | 67 + ...bcm47xxpart-detect-T_Meter-partition.patch | 37 + .../pending-4.9/440-block2mtd_init.patch | 116 + .../pending-4.9/441-block2mtd_probe.patch | 47 + ...-fallback-from-spi_flash_read-to-reg.patch | 36 + ...mtd-cfi_cmdset_0002-no-erase_suspend.patch | 25 + ...et_0002-add-buffer-write-cmd-timeout.patch | 17 + ...25p80-mx-disable-software-protection.patch | 18 + ...or-fix-Spansion-regressions-aliased-.patch | 37 + ...ort-limiting-4K-sectors-support-base.patch | 56 + .../476-mtd-spi-nor-add-eon-en25q128.patch | 18 + .../477-mtd-add-spi-nor-add-mx25u3235f.patch | 18 + ...support-for-XM25QH64A-and-XM25QH128A.patch | 30 + .../479-mtd-spi-nor-add-eon-en25qh32.patch | 10 + .../480-mtd-set-rootfs-to-be-root-dev.patch | 38 + ...mtd-device-named-ubi-or-data-on-boot.patch | 73 + ...to-create-ubiblock-device-for-rootfs.patch | 66 + ...ting-ubi0-rootfs-in-init-do_mounts.c.patch | 51 + ...ROOT_DEV-to-ubiblock-rootfs-if-unset.patch | 34 + .../494-mtd-ubi-add-EOF-marker-support.patch | 60 + .../530-jffs2_make_lzma_available.patch | 5180 +++++ .../pending-4.9/532-jffs2_eofdetect.patch | 65 + ...fs-fix-default-compression-selection.patch | 37 + .../600-netfilter_conntrack_flush.patch | 95 + ...etfilter_match_bypass_default_checks.patch | 110 + ...netfilter_match_bypass_default_table.patch | 119 + ...netfilter_match_reduce_memory_access.patch | 22 + ...-netfilter_optional_tcp_window_check.patch | 44 + .../616-net_optimize_xfrm_calls.patch | 20 + ...del-do-not-defer-queue-length-update.patch | 86 + .../pending-4.9/630-packet_socket_type.patch | 138 + .../pending-4.9/655-increase_skb_pad.patch | 20 + ...Add-support-for-MAP-E-FMRs-mesh-mode.patch | 500 + ...ng-with-source-address-failed-policy.patch | 255 + ...nes-for-_POLICY_FAILED-until-all-cod.patch | 50 + ...T-skip-GRO-for-foreign-MAC-addresses.patch | 154 + .../681-NET-add-of_get_mac_address_mtd.patch | 127 + .../pending-4.9/701-phy_extension.patch | 72 + ...detach-callback-to-struct-phy_driver.patch | 38 + ...-at803x-allow-to-configure-via-pdata.patch | 142 + ...net-phy-at803x-fix-at8033-sgmii-mode.patch | 54 + .../810-pci_disable_common_quirks.patch | 60 + .../811-pci_disable_usb_common_quirks.patch | 110 + ...ove-annoying-warning-about-bogus-URB.patch | 76 + .../pending-4.9/831-ledtrig_netdev.patch | 74 + .../pending-4.9/834-ledtrig-libata.patch | 149 + .../pending-4.9/890-uart_optional_sysrq.patch | 40 + .../pending-4.9/920-mangle_bootargs.patch | 71 + target/linux/ramips/Makefile | 26 - .../ramips/base-files/etc/board.d/01_leds | 402 - .../ramips/base-files/etc/board.d/02_network | 462 - target/linux/ramips/base-files/etc/diag.sh | 273 - .../etc/hotplug.d/firmware/10-rt2x00-eeprom | 56 - .../base-files/etc/hotplug.d/usb/10-motion | 1 - .../ramips/base-files/etc/init.d/bootcount | 12 - .../ramips/base-files/etc/init.d/enablemodem | 17 - target/linux/ramips/base-files/etc/inittab | 3 - .../etc/uci-defaults/09_fix-seama-header | 23 - .../lib/preinit/03_preinit_do_ramips.sh | 9 - .../lib/preinit/04_handle_checksumming | 56 - .../lib/preinit/07_set_preinit_iface_ramips | 29 - target/linux/ramips/base-files/lib/ramips.sh | 679 - .../ramips/base-files/lib/upgrade/platform.sh | 291 - .../ramips/base-files/lib/upgrade/ubnt.sh | 76 - .../ramips/base-files/sbin/fixup-mac-address | 81 - target/linux/ramips/dts/11ACNAS.dts | 26 - target/linux/ramips/dts/3G-6200N.dts | 111 - target/linux/ramips/dts/3G-6200NL.dts | 100 - target/linux/ramips/dts/3G150B.dts | 117 - target/linux/ramips/dts/3G300M.dts | 123 - target/linux/ramips/dts/A5-V11.dts | 123 - target/linux/ramips/dts/AC1200pro.dts | 15 - target/linux/ramips/dts/AI-BR100.dts | 108 - target/linux/ramips/dts/AIR3GII.dts | 97 - target/linux/ramips/dts/ALL0239-3G.dts | 118 - target/linux/ramips/dts/ALL0256N-4M.dts | 102 - target/linux/ramips/dts/ALL0256N-8M.dts | 102 - target/linux/ramips/dts/ALL5002.dts | 111 - target/linux/ramips/dts/ALL5003.dts | 111 - target/linux/ramips/dts/AR670W.dts | 105 - target/linux/ramips/dts/AR725W.dts | 115 - target/linux/ramips/dts/ASL26555-16M.dts | 155 - target/linux/ramips/dts/ASL26555-8M.dts | 149 - target/linux/ramips/dts/ATP-52B.dts | 99 - target/linux/ramips/dts/AWAPN2403.dts | 84 - target/linux/ramips/dts/AWM002-4M.dtsi | 10 - target/linux/ramips/dts/AWM002-8M.dtsi | 10 - target/linux/ramips/dts/AWM002-EVB-4M.dts | 55 - target/linux/ramips/dts/AWM002-EVB-8M.dts | 55 - target/linux/ramips/dts/AWM002.dtsi | 76 - target/linux/ramips/dts/AWM003-EVB.dts | 65 - target/linux/ramips/dts/ArcherC20i.dts | 153 - target/linux/ramips/dts/ArcherC50.dts | 189 - target/linux/ramips/dts/ArcherMR200.dts | 194 - target/linux/ramips/dts/BC2.dts | 89 - target/linux/ramips/dts/BR-6425.dts | 73 - target/linux/ramips/dts/BR-6475ND.dts | 178 - target/linux/ramips/dts/BROADWAY.dts | 94 - target/linux/ramips/dts/CARAMBOLA.dts | 75 - target/linux/ramips/dts/CF-WR800N.dts | 114 - target/linux/ramips/dts/CS-QR10.dts | 151 - target/linux/ramips/dts/CY-SWR1100.dts | 152 - target/linux/ramips/dts/D105.dts | 94 - target/linux/ramips/dts/DAP-1350.dts | 127 - target/linux/ramips/dts/DB-WRT01.dts | 99 - target/linux/ramips/dts/DCH-M225.dts | 185 - target/linux/ramips/dts/DCS-930.dts | 115 - target/linux/ramips/dts/DCS-930L-B1.dts | 107 - target/linux/ramips/dts/DIR-300-B1.dts | 111 - target/linux/ramips/dts/DIR-300-B7.dts | 102 - target/linux/ramips/dts/DIR-320-B1.dts | 130 - target/linux/ramips/dts/DIR-600-B1.dts | 111 - target/linux/ramips/dts/DIR-610-A1.dts | 103 - target/linux/ramips/dts/DIR-615-D.dts | 109 - target/linux/ramips/dts/DIR-615-H1.dts | 124 - target/linux/ramips/dts/DIR-620-A1.dts | 120 - target/linux/ramips/dts/DIR-620-D1.dts | 111 - target/linux/ramips/dts/DIR-645.dts | 141 - target/linux/ramips/dts/DIR-810L.dts | 135 - target/linux/ramips/dts/DIR-860L-B1.dts | 140 - target/linux/ramips/dts/DUZUN-DM06.dts | 156 - target/linux/ramips/dts/DWR-512-B.dts | 141 - target/linux/ramips/dts/E1700.dts | 153 - target/linux/ramips/dts/ESR-9753.dts | 96 - target/linux/ramips/dts/EX2700.dts | 145 - target/linux/ramips/dts/F5D8235_V1.dts | 170 - target/linux/ramips/dts/F5D8235_V2.dts | 118 - target/linux/ramips/dts/F7C027.dts | 132 - target/linux/ramips/dts/FIREWRT.dts | 121 - target/linux/ramips/dts/FONERA20N.dts | 136 - target/linux/ramips/dts/FREESTATION5.dts | 102 - target/linux/ramips/dts/GB-PC1.dts | 125 - target/linux/ramips/dts/GL-MT300A.dts | 150 - target/linux/ramips/dts/GL-MT300N.dts | 139 - target/linux/ramips/dts/GL-MT750.dts | 158 - target/linux/ramips/dts/HC5661.dts | 32 - target/linux/ramips/dts/HC5761.dts | 32 - target/linux/ramips/dts/HC5861.dts | 92 - target/linux/ramips/dts/HC5XXX.dtsi | 140 - target/linux/ramips/dts/HG255D.dts | 132 - target/linux/ramips/dts/HLKRM04.dts | 124 - target/linux/ramips/dts/HPM.dts | 149 - target/linux/ramips/dts/HT-TM02.dts | 113 - target/linux/ramips/dts/HW550-3G.dts | 116 - target/linux/ramips/dts/IP2202.dts | 90 - target/linux/ramips/dts/JHR-N805R.dts | 88 - target/linux/ramips/dts/JHR-N825R.dts | 83 - target/linux/ramips/dts/JHR-N926R.dts | 129 - target/linux/ramips/dts/LINKIT7688.dts | 183 - target/linux/ramips/dts/M2M.dts | 111 - target/linux/ramips/dts/M3.dts | 105 - target/linux/ramips/dts/M4-4M.dts | 93 - target/linux/ramips/dts/M4-8M.dts | 98 - target/linux/ramips/dts/MAC1200RV2.dts | 93 - target/linux/ramips/dts/MINIEMBPLUG.dts | 123 - target/linux/ramips/dts/MINIEMBWIFI.dts | 94 - target/linux/ramips/dts/MIWIFI-MINI.dts | 154 - target/linux/ramips/dts/MIWIFI-NANO.dts | 104 - target/linux/ramips/dts/MLW221.dts | 121 - target/linux/ramips/dts/MLWG2.dts | 121 - target/linux/ramips/dts/MOFI3500-3GN.dts | 113 - target/linux/ramips/dts/MPRA1.dts | 122 - target/linux/ramips/dts/MPRA2.dts | 119 - target/linux/ramips/dts/MR-102N.dts | 118 - target/linux/ramips/dts/MT7620a.dts | 126 - target/linux/ramips/dts/MT7620a_MT7530.dts | 116 - target/linux/ramips/dts/MT7620a_MT7610e.dts | 87 - target/linux/ramips/dts/MT7620a_V22SG.dts | 116 - target/linux/ramips/dts/MT7621.dts | 54 - target/linux/ramips/dts/MT7628.dts | 66 - target/linux/ramips/dts/MZK-750DHP.dts | 128 - target/linux/ramips/dts/MZK-DP150N.dts | 101 - target/linux/ramips/dts/MZK-EX300NP.dts | 131 - target/linux/ramips/dts/MZK-EX750NP.dts | 149 - target/linux/ramips/dts/MZK-W300NH2.dts | 113 - target/linux/ramips/dts/MZK-WDPR.dts | 86 - target/linux/ramips/dts/MicroWRT.dts | 108 - target/linux/ramips/dts/NA930.dts | 174 - target/linux/ramips/dts/NBG-419N.dts | 96 - target/linux/ramips/dts/NBG-419N2.dts | 118 - target/linux/ramips/dts/NCS601W.dts | 72 - target/linux/ramips/dts/NIXCORE-16M.dts | 42 - target/linux/ramips/dts/NIXCORE-8M.dts | 42 - target/linux/ramips/dts/NIXCORE.dtsi | 153 - target/linux/ramips/dts/NW718.dts | 108 - target/linux/ramips/dts/Newifi-D1.dts | 145 - target/linux/ramips/dts/OY-0001.dts | 123 - target/linux/ramips/dts/PBR-D1.dts | 160 - target/linux/ramips/dts/PBR-M1.dts | 177 - target/linux/ramips/dts/PSG1208.dts | 113 - target/linux/ramips/dts/PSG1218.dts | 119 - target/linux/ramips/dts/PSR-680W.dts | 93 - target/linux/ramips/dts/PWH2004.dts | 86 - target/linux/ramips/dts/PX-4885-4M.dts | 42 - target/linux/ramips/dts/PX-4885-8M.dts | 42 - target/linux/ramips/dts/PX-4885.dtsi | 55 - target/linux/ramips/dts/RB750Gr3.dts | 124 - target/linux/ramips/dts/RE6500.dts | 126 - target/linux/ramips/dts/RP-N53.dts | 174 - target/linux/ramips/dts/RT-G32-B1.dts | 85 - target/linux/ramips/dts/RT-N10-PLUS.dts | 82 - target/linux/ramips/dts/RT-N13U.dts | 100 - target/linux/ramips/dts/RT-N14U.dts | 127 - target/linux/ramips/dts/RT-N15.dts | 113 - target/linux/ramips/dts/RT-N56U.dts | 151 - .../ramips/dts/RT5350F-OLINUXINO-EVB.dts | 99 - target/linux/ramips/dts/RT5350F-OLINUXINO.dts | 77 - target/linux/ramips/dts/RUT5XX.dts | 92 - target/linux/ramips/dts/SAP-G3200U3.dts | 123 - target/linux/ramips/dts/SK-WB8.dts | 120 - target/linux/ramips/dts/SL-R7205.dts | 95 - target/linux/ramips/dts/TEW-691GR.dts | 114 - target/linux/ramips/dts/TEW-692GR.dts | 151 - target/linux/ramips/dts/TEW-714TRU.dts | 123 - target/linux/ramips/dts/TINY-AC.dts | 160 - target/linux/ramips/dts/Timecloud.dts | 108 - target/linux/ramips/dts/UBNT-ERX.dts | 107 - target/linux/ramips/dts/UR-326N4G.dts | 115 - target/linux/ramips/dts/UR-336UN.dts | 115 - target/linux/ramips/dts/V11STFE.dts | 85 - target/linux/ramips/dts/V22RW-2X2.dts | 96 - target/linux/ramips/dts/VOCORE-16M.dts | 42 - target/linux/ramips/dts/VOCORE-8M.dts | 42 - target/linux/ramips/dts/VOCORE.dtsi | 195 - target/linux/ramips/dts/VR500.dts | 85 - target/linux/ramips/dts/W150M.dts | 116 - target/linux/ramips/dts/W2914NSV2.dts | 26 - target/linux/ramips/dts/W2914NSV2.dtsi | 104 - target/linux/ramips/dts/W306R_V20.dts | 90 - target/linux/ramips/dts/W502U.dts | 104 - target/linux/ramips/dts/WCR150GN.dts | 100 - target/linux/ramips/dts/WF-2881.dts | 113 - target/linux/ramips/dts/WHR-1166D.dts | 171 - target/linux/ramips/dts/WHR-300HP2.dts | 149 - target/linux/ramips/dts/WHR-600D.dts | 157 - target/linux/ramips/dts/WHR-G300N.dts | 115 - target/linux/ramips/dts/WIDORA-NEO.dts | 170 - target/linux/ramips/dts/WITI.dts | 119 - target/linux/ramips/dts/WIZARD8800.dts | 80 - target/linux/ramips/dts/WIZFI630A.dts | 185 - target/linux/ramips/dts/WL-330N.dts | 99 - target/linux/ramips/dts/WL-330N3G.dts | 108 - target/linux/ramips/dts/WL-341V3.dts | 125 - target/linux/ramips/dts/WL-351.dts | 124 - target/linux/ramips/dts/WL-WN575A3.dts | 129 - target/linux/ramips/dts/WLI-TX4-AG300N.dts | 114 - target/linux/ramips/dts/WLR-6000.dts | 186 - target/linux/ramips/dts/WMR-300.dts | 105 - target/linux/ramips/dts/WNCE2001.dts | 138 - target/linux/ramips/dts/WNDR3700V5.dts | 139 - target/linux/ramips/dts/WR512-3GN-4M.dts | 111 - target/linux/ramips/dts/WR512-3GN-8M.dts | 111 - target/linux/ramips/dts/WR6202.dts | 115 - target/linux/ramips/dts/WRH-300CR.dts | 126 - target/linux/ramips/dts/WRTNODE.dts | 90 - target/linux/ramips/dts/WRTNODE2.dtsi | 91 - target/linux/ramips/dts/WRTNODE2P.dts | 26 - target/linux/ramips/dts/WRTNODE2R.dts | 26 - target/linux/ramips/dts/WSR-1166.dts | 189 - target/linux/ramips/dts/WSR-600.dts | 183 - target/linux/ramips/dts/WT1520-4M.dts | 42 - target/linux/ramips/dts/WT1520-8M.dts | 42 - target/linux/ramips/dts/WT1520.dtsi | 45 - target/linux/ramips/dts/WT3020-4M.dts | 101 - target/linux/ramips/dts/WT3020-8M.dts | 101 - target/linux/ramips/dts/WZR-AGL300NH.dts | 138 - target/linux/ramips/dts/X5.dts | 137 - target/linux/ramips/dts/X8.dts | 98 - target/linux/ramips/dts/XDXRN502J.dts | 94 - target/linux/ramips/dts/Y1.dts | 49 - target/linux/ramips/dts/Y1.dtsi | 108 - target/linux/ramips/dts/Y1S.dts | 106 - target/linux/ramips/dts/YOUKU-YK1.dts | 125 - target/linux/ramips/dts/ZBT-APE522II.dts | 144 - target/linux/ramips/dts/ZBT-CPE102.dts | 119 - target/linux/ramips/dts/ZBT-WA05.dts | 119 - target/linux/ramips/dts/ZBT-WE826.dts | 123 - target/linux/ramips/dts/ZBT-WG2626.dts | 121 - target/linux/ramips/dts/ZBT-WG3526.dts | 15 - target/linux/ramips/dts/ZBT-WG3526.dtsi | 116 - target/linux/ramips/dts/ZBT-WR8305RT.dts | 116 - target/linux/ramips/dts/ZTE-Q7.dts | 112 - target/linux/ramips/dts/kn_rc.dts | 131 - target/linux/ramips/dts/kn_rf.dts | 131 - target/linux/ramips/dts/kng_rc.dts | 165 - target/linux/ramips/dts/mt7620a.dtsi | 558 - target/linux/ramips/dts/mt7620n.dtsi | 344 - target/linux/ramips/dts/mt7621.dtsi | 458 - target/linux/ramips/dts/mt7628an.dtsi | 479 - target/linux/ramips/dts/rt2880.dtsi | 234 - target/linux/ramips/dts/rt3050.dtsi | 335 - target/linux/ramips/dts/rt3352.dtsi | 366 - target/linux/ramips/dts/rt3883.dtsi | 473 - target/linux/ramips/dts/rt5350.dtsi | 377 - target/linux/ramips/image/Makefile | 254 - .../linux/ramips/image/ex2700-fakeroot.uImage | Bin 64 -> 0 bytes .../linux/ramips/image/lzma-loader/Makefile | 65 - .../ramips/image/lzma-loader/src/LzmaDecode.c | 584 - .../ramips/image/lzma-loader/src/LzmaDecode.h | 113 - .../ramips/image/lzma-loader/src/LzmaTypes.h | 45 - .../ramips/image/lzma-loader/src/Makefile | 110 - .../image/lzma-loader/src/board-ralink.c | 42 - .../ramips/image/lzma-loader/src/cache.c | 43 - .../ramips/image/lzma-loader/src/cache.h | 17 - .../ramips/image/lzma-loader/src/cacheops.h | 85 - .../ramips/image/lzma-loader/src/config.h | 27 - .../ramips/image/lzma-loader/src/cp0regdef.h | 39 - .../linux/ramips/image/lzma-loader/src/head.S | 121 - .../ramips/image/lzma-loader/src/lantiq.mk | 1 - .../ramips/image/lzma-loader/src/loader.c | 263 - .../ramips/image/lzma-loader/src/loader.lds | 35 - .../ramips/image/lzma-loader/src/loader2.lds | 10 - .../image/lzma-loader/src/lzma-data.lds | 8 - .../ramips/image/lzma-loader/src/printf.c | 350 - .../ramips/image/lzma-loader/src/printf.h | 18 - .../ramips/image/lzma-loader/src/ralink.mk | 1 - target/linux/ramips/image/mt7621.mk | 239 - target/linux/ramips/image/mt7628.mk | 58 - target/linux/ramips/image/mt7688.mk | 52 - target/linux/ramips/image/rt288x.mk | 75 - target/linux/ramips/image/rt305x-legacy.mk | 118 - target/linux/ramips/image/rt305x.mk | 855 - target/linux/ramips/image/rt3883.mk | 119 - target/linux/ramips/modules.mk | 136 - target/linux/ramips/mt7621/config-4.4 | 269 - .../ramips/mt7621/profiles/00-default.mk | 19 - target/linux/ramips/mt7621/target.mk | 17 - ...-arch-mips-ralink-add-mt7621-support.patch | 437 - ...002-MIPS-ralink-add-MT7621-defconfig.patch | 211 - ...4-MIPS-ralink-add-MT7621-pcie-driver.patch | 857 - ...e-to-enable-disable-the-cevt-r4k-irq.patch | 82 - ...IPS-ralink-add-cpu-frequency-scaling.patch | 93 - ...-the-commandline-from-the-devicetree.patch | 21 - ...09-PCI-MIPS-adds-mt7620a-pcie-driver.patch | 433 - ...MIPS-ralink-Add-a-few-missing-clocks.patch | 48 - ...013-owrt-hack-fix-mt7688-cache-issue.patch | 28 - .../0014-arch-mips-cleanup-cevt-rt3352.patch | 165 - ...-select-illegal-access-driver-by-def.patch | 25 - ...ink-add-mt7621-cpu-feature-overrides.patch | 79 - ...-ralink-Fix-vendor-string-for-mt7620.patch | 27 - .../0024-GPIO-add-named-gpio-exports.patch | 166 - ...25-pinctrl-ralink-add-pinctrl-driver.patch | 524 - ...DT-Add-documentation-for-gpio-ralink.patch | 59 - ...alink-add-gpio-driver-for-ralink-SoC.patch | 430 - ...IO-ralink-add-mt7621-gpio-controller.patch | 405 - .../0029-phy-usb-add-ralink-phy.patch | 293 - ...0031-uvc-add-iPassion-iP2970-support.patch | 246 - .../0032-USB-dwc2-add-device_reset.patch | 29 - ...tek-support-MTK-xHCI-host-controller.patch | 1517 -- .../0034-NET-multi-phy-support.patch | 53 - ...x-cfi-cmdset-0002-erase-status-check.patch | 29 - ...mtd-cfi-cmdset-0002-force-word-write.patch | 70 - ...38-mtd-ralink-add-mt7620-nand-driver.patch | 2408 -- .../0039-mtd-add-mt7621-nand-support.patch | 4417 ---- .../0040-nand-add-mtk-nand-hack-hook.patch | 157 - ...-DT-Add-documentation-for-spi-rt2880.patch | 44 - ...SPI-ralink-add-Ralink-SoC-spi-driver.patch | 574 - .../0043-spi-add-mt7621-support.patch | 524 - ...0044-i2c-MIPS-adds-ralink-I2C-driver.patch | 507 - .../0045-i2c-add-mt7621-driver.patch | 473 - ...IPS-ralink-add-sdhci-for-mt7620a-SoC.patch | 4830 ---- ...047-DMA-ralink-add-rt2880-dma-engine.patch | 1756 -- .../0048-asoc-add-mt7620-support.patch | 1046 - .../0049-watchdog-add-MT7621-support.patch | 227 - ...erial-add-ugly-custom-baud-rate-hack.patch | 22 - .../0052-pwm-add-mediatek-support.patch | 217 - ...54-mtd-add-chunked-read-io-to-m25p80.patch | 123 - .../0059-correct-CPC_BASE_MASK.patch | 13 - .../patches-4.4/0064-add_clk_round_rate.patch | 15 - .../0066-mt7621-enable-highmem.patch | 10 - .../patches-4.4/0067-enable-mt7621-xhci.patch | 14 - .../0069-awake-rt305x-dwc2-controller.patch | 15 - ...-add-MT7628-EPHY-LEDs-pinmux-support.patch | 151 - .../ramips/patches-4.4/0085-pinmux-util.patch | 77 - .../ramips/patches-4.4/0086-usbphy.patch | 35 - ...nk-allow-NULL-clock-for-clk_get_rate.patch | 43 - .../patches-4.4/0103-MIPS-OWRTDTB.patch | 44 - .../0104-fix_bootargs_handling.patch | 40 - .../0105-set_mt7621_soc_type.patch | 11 - .../patches-4.4/0200-linkit_bootstrap.patch | 94 - ...-net-add-docs-for-ralink-mediatek-So.patch | 150 - ...-mediatek-add-the-drivers-core-files.patch | 2715 --- ...ediatek-add-switch-driver-for-rt3050.patch | 691 - ...ediatek-add-switch-driver-for-mt7620.patch | 394 - ...ediatek-add-switch-driver-for-mt7621.patch | 301 - ...next-mediatek-add-support-for-rt2880.patch | 351 - ...next-mediatek-add-support-for-rt3050.patch | 239 - ...next-mediatek-add-support-for-rt3883.patch | 94 - ...next-mediatek-add-support-for-mt7620.patch | 519 - ...next-mediatek-add-support-for-mt7621.patch | 209 - ...xt-mediatek-add-Kconfig-and-Makefile.patch | 127 - ...-support-for-the-multiphy-carrier-pa.patch | 80 - ...k-add-swconfig-driver-for-esw_rt3050.patch | 901 - ...k-add-swconfig-driver-for-gsw_mt762x.patch | 1181 - .../0514-net-mediatek-fix_esw.patch | 48 - ...-multicast-icmpv6-for-the-rt3050-eth.patch | 26 - ...-net-mediatek-fix-documentation-for-.patch | 23 - ...-comment-in-rt3050-ethernet-switch-d.patch | 24 - ...-rt3050-ethernet-ports-to-be-disable.patch | 81 - .../ramips/patches-4.4/0519-gsw_mt7621.patch | 31 - .../ramips/patches-4.4/0520-esw-gmac.patch | 69 - ...diatke-add-phy_ethtool_ioctl-support.patch | 22 - .../0700-pinctrl-mt7620-mdio-as-refclk.patch | 42 - ...0720-arch-mips-ralink-add-i2c-clocks.patch | 67 - .../0721-asoc-enable-wm8960-kconfig.patch | 11 - .../0901-spansion_nand_id_fix.patch | 43 - .../0902-mediatek-4-byte-spi-reset.patch | 43 - .../100-mt7621-core-detect-hack.patch | 61 - .../ramips/patches-4.4/101-mt7621-timer.patch | 98 - target/linux/ramips/rt288x/config-4.4 | 204 - target/linux/ramips/rt288x/target.mk | 14 - target/linux/ramips/rt305x/config-4.4 | 195 - .../ramips/rt305x/profiles/00-default.mk | 19 - target/linux/ramips/rt305x/target.mk | 15 - target/linux/ramips/rt3883/config-4.4 | 203 - .../ramips/rt3883/profiles/00-default.mk | 17 - target/linux/ramips/rt3883/target.mk | 15 - target/linux/sunxi/Makefile | 7 +- .../sunxi/base-files/etc/board.d/02_network | 6 +- .../lib/firmware/brcm/brcmfmac43430-sdio.txt | 53 + .../base-files/lib/preinit/02_b53_hack.sh | 17 - .../base-files/lib/preinit/03_b53_hack.sh | 18 + target/linux/sunxi/base-files/lib/sunxi.sh | 10 - .../sunxi/base-files/lib/upgrade/platform.sh | 120 +- target/linux/sunxi/config-4.14 | 597 + target/linux/sunxi/config-4.4 | 551 - target/linux/sunxi/config-4.9 | 574 + target/linux/sunxi/cortexa53/config-default | 108 + target/linux/sunxi/cortexa53/target.mk | 13 + target/linux/sunxi/cortexa7/config-default | 10 + target/linux/sunxi/cortexa7/target.mk | 12 + target/linux/sunxi/cortexa8/config-default | 21 + target/linux/sunxi/cortexa8/target.mk | 12 + target/linux/sunxi/image/Makefile | 172 +- target/linux/sunxi/image/cortex-a53.mk | 51 + target/linux/sunxi/image/cortex-a7.mk | 180 + target/linux/sunxi/image/cortex-a8.mk | 69 + target/linux/sunxi/modules.mk | 4 +- ...dwmac-mdio-MDIOs-are-automatically-r.patch | 33 + ...-sun8i-Handle-integrated-external-MD.patch | 506 + ...stmmac-sun8i-Restore-the-compatibles.patch | 35 + ...-sun8i-fix-allwinner-leds-active-low.patch | 29 + ...ts-sunxi-Restore-EMAC-changes-boards.patch | 292 + ...dts-sunxi-h3-h5-Restore-EMAC-changes.patch | 54 + ...-h5-represent-the-mdio-switch-used-b.patch | 59 + ...s-allwinner-A64-Restore-EMAC-changes.patch | 184 + ...ner-add-snps-dwmac-mdio-compatible-t.patch | 28 + ...ts-allwinner-H5-Restore-EMAC-changes.patch | 120 + ...a64-add-Ethernet-PHY-regulator-for-s.patch | 51 + ...s-sun8i-add-support-for-Orange-Pi-R1.patch | 105 + ...i-support-for-nanopi-neo-plus2-board.patch | 242 + .../115-musb-ignore-vbus-errors.patch | 26 + .../131-reset-add-h3-resets.patch | 92 + ...n8i-fix-USB-Ethernet-of-Orange-Pi-R1.patch | 48 + ...s-sun8i-activate-SPI-on-Orange-Pi-R1.patch | 29 + .../220-ARM-dts-orange-pi-zero-plus.patch | 185 + ...un7i-Add-BCM53125-switch-nodes-to-th.patch | 88 + ...100-clk-sunxi-add-dram-gates-support.patch | 39 - .../101-dt-sun4i-add-dram-gates.patch | 88 - .../102-dt-sun7i-add-dram-gates.patch | 77 - .../103-clk-sunxi-add-h3-clksupport.patch | 180 - .../104-1-dt-sunxi-add-h3-dtsi.patch | 515 - .../104-2-dt-sun8i-add-orangepi-plus.patch | 111 - .../105-phy-use_of_match_node.patch | 218 - .../patches-4.4/106-phy-add-h3-usbphys.patch | 124 - .../107-clk-sunxi-add-h3-usbphy-clocks.patch | 47 - .../110-clk-sunxi-add-ve-for-sun457i.patch | 226 - .../111-1-dt-sun4i-add-ve-clock-module.patch | 32 - .../111-2-dt-sun7i-add-ve-clock-module.patch | 32 - .../115-musb-ignore-vbus-errors.patch | 26 - .../130-pinctrl-sunxi-add-h3-pio.patch | 568 - .../patches-4.4/131-reset-add-h3-resets.patch | 92 - .../132-dt-sun8i-add-h3-usbclocks.patch | 34 - ...-sun8i-add-usbphy-usbhost-ctrl-nodes.patch | 123 - ...dt-sun8i-orangepiplus-enable-usbhost.patch | 77 - .../135-clk-sunxi-fix-signedness-bug.patch | 25 - ...et-add-of_reset_control_get_by_index.patch | 109 - .../141-reset-fix-of_reset_control_get.patch | 39 - ...reset-use-ENOTSUPP-instead-of-ENOSYS.patch | 87 - ...eset-add-shared-resetcontrol-asserts.patch | 265 - ...lat-support-multiple-reset-ctrllines.patch | 127 - ...lat-support-multiple-reset-ctrllines.patch | 128 - ...50-dt-sun7i-enable-codec-on-pcduino3.patch | 27 - .../200-dt-sun7i-add-lamobo-r1.patch | 330 - ...xi-ng-Rename-the-internal-structures.patch | 239 + ...ove-the-use-of-rational-computations.patch | 239 + ...ish-to-convert-to-structures-for-arg.patch | 182 + ...-minimums-for-all-the-relevant-struc.patch | 256 + ...ng-Implement-minimum-for-multipliers.patch | 132 + .../0007-clk-sunxi-ng-Add-A64-clocks.patch | 1295 ++ ...rm64-dts-add-Allwinner-A64-SoC-.dtsi.patch | 311 + .../0011-arm64-dts-add-Pine64-support.patch | 176 + ...ild-errors-from-missing-dependencies.patch | 134 + ...ner-add-USB1-related-nodes-of-Allwin.patch | 84 + ...ner-sort-the-nodes-in-sun50i-a64-pin.patch | 40 + ...ner-enable-EHCI1-OHCI1-and-USB-PHY-n.patch | 47 + ...-add-MUSB-node-to-Allwinner-A64-dtsi.patch | 42 + ...-the-MUSB-controller-of-Pine64-in-ho.patch | 32 + ...ner-Remove-no-longer-used-pinctrl-su.patch | 31 + ...19-arm64-allwinner-a64-Add-MMC-nodes.patch | 69 + ...-allwinner-a64-Add-MMC-pinctrl-nodes.patch | 50 + ...m64-allwinner-pine64-add-MMC-support.patch | 62 + ...64-allwinner-a64-add-UART1-pin-nodes.patch | 35 + ...4-arm64-allwinner-a64-add-r_ccu-node.patch | 52 + ...allwinner-a64-add-R_PIO-pinctrl-node.patch | 35 + ...winner-a64-add-pmu0-regs-for-USB-PHY.patch | 29 + ...a64-Add-PLL_PERIPH0-clock-to-the-R_C.patch | 32 + ...-Rework-the-pin-config-building-code.patch | 251 + ...e-macros-from-bindings-header-file-f.patch | 38 + ...32-pinctrl-sunxi-Handle-bias-disable.patch | 42 + ...inctrl-sunxi-Support-generic-binding.patch | 106 + ...ctrl-sunxi-Deal-with-configless-pins.patch | 128 + ...ke-bool-drivers-explicitly-non-modul.patch | 437 + ...ee-configs-in-pinctrl_map-only-if-it.patch | 51 + ...x-PIN_CONFIG_BIAS_PULL_-DOWN-UP-argu.patch | 40 + ...d-support-for-fetching-pinconf-setti.patch | 158 + ...ke-sunxi_pconf_group_set-use-sunxi_p.patch | 122 + ...Add-support-for-interrupt-debouncing.patch | 171 + ...x-theoretical-uninitialized-variable.patch | 40 + ...trl-sunxi-Testing-the-wrong-variable.patch | 35 + ...i-Don-t-enforce-bias-disable-for-now.patch | 42 + ...add-common-dtsi-file-for-nanopi-SBCs.patch | 160 + .../patches-4.9/0050-stmmac-form-4-10.patch | 3497 +++ .../patches-4.9/0051-stmmac-form-4-11.patch | 2296 ++ .../patches-4.9/0052-stmmac-form-4-12.patch | 5926 +++++ .../patches-4.9/0053-stmmac-form-4-13.patch | 1924 ++ ...-ss_support_the_Security_System_PRNG.patch | 206 + ...sun50i-a64-Add-dt-node-for-the-sysco.patch | 33 + ...sun50i-a64-add-dwmac-sun8i-Ethernet-.patch | 69 + ...-allwinner-pine64-Enable-dwmac-sun8i.patch | 46 + ...inner-pine64-plus-Enable-dwmac-sun8i.patch | 38 + ...sun50i-a64-Correct-emac-register-siz.patch | 26 + ...a64-pine64-add-missing-ethernet0-ali.patch | 29 + ...h3-h5-Add-dt-node-for-the-syscon-con.patch | 32 + ...h3-h5-add-dwmac-sun8i-ethernet-drive.patch | 67 + ...-sun8i-orangepi-2-Enable-dwmac-sun8i.patch | 40 + ...n8i-orangepi-plus-Enable-dwmac-sun8i.patch | 64 + ...nxi-h3-h5-Correct-emac-register-size.patch | 26 + ...-sunxi-nanopi-neo-Enable-dwmac-sun8i.patch | 24 + ...nopi-neo-enable-UART-USB-and-I2C-pin.patch | 80 + .../patches-4.9/090-sunxi-mmc-from-4-13.patch | 288 + .../115-musb-ignore-vbus-errors.patch | 26 + .../patches-4.9/131-reset-add-h3-resets.patch | 92 + ...i-add-support-for-Orange-Pi-R1-board.patch | 196 + ...add-support-for-nanopi-m1-plus-board.patch | 168 + target/linux/sunxi/profiles/00-default.mk | 1 - target/linux/uml/Makefile | 3 +- target/linux/uml/README | 5 +- target/linux/uml/image/Makefile | 11 + .../uml/patches-4.4/101-mconsole-exec.patch | 211 - .../patches-4.4/102-pseudo-random-mac.patch | 124 - ...-setjmp-symbol-clashes-with-libpthre.patch | 130 + ...-building-and-running-on-older-hosts.patch | 99 + ...-check-for-PTRACE_GETRESET-SETREGSET.patch | 29 + ...ix-check-for-_xstate-for-older-hosts.patch | 46 + .../uml/patches-4.9/101-mconsole-exec.patch | 211 + .../patches-4.9/102-pseudo-random-mac.patch | 131 + target/linux/x86/64/config-default | 382 - target/linux/x86/64/profiles/000-Generic.mk | 15 - target/linux/x86/64/target.mk | 7 - target/linux/x86/Makefile | 28 - .../linux/x86/base-files/etc/board.d/01_leds | 26 - .../x86/base-files/etc/board.d/02_network | 27 - target/linux/x86/base-files/etc/diag.sh | 78 - target/linux/x86/base-files/etc/inittab | 5 - .../lib/preinit/15_essential_fs_x86 | 8 - .../x86/base-files/lib/preinit/20_check_iso | 5 - .../x86/base-files/lib/preinit/20_sysinfo | 28 - .../x86/base-files/lib/preinit/79_move_config | 20 - .../x86/base-files/lib/upgrade/platform.sh | 65 - target/linux/x86/config-4.4 | 466 - .../base-files/lib/preinit/45_mount_xenfs | 9 - target/linux/x86/generic/config-default | 400 - .../linux/x86/generic/profiles/000-Generic.mk | 18 - target/linux/x86/generic/target.mk | 11 - target/linux/x86/geode/config-default | 136 - .../linux/x86/geode/profiles/000-Generic.mk | 20 - target/linux/x86/geode/profiles/100-Geos.mk | 19 - target/linux/x86/geode/target.mk | 17 - target/linux/x86/image/Makefile | 196 - target/linux/x86/image/gen_image_generic.sh | 37 - target/linux/x86/image/grub-early.cfg | 1 - target/linux/x86/image/grub-iso.cfg | 10 - target/linux/x86/image/grub.cfg | 13 - target/linux/x86/legacy/config-default | 219 - .../linux/x86/legacy/profiles/000-Generic.mk | 18 - target/linux/x86/legacy/target.mk | 7 - target/linux/x86/modules.mk | 36 - .../patches-4.4/011-tune_lzma_options.patch | 22 - ...tco-Add-AMD-Mullins-platform-support.patch | 26 - ...tco-Add-AMD-Carrizo-platform-support.patch | 27 - ...e-check-for-SB800-and-later-chipsets.patch | 76 - ...tco-properly-check-for-new-register-.patch | 72 - .../patches-4.4/100-fix_cs5535_clockevt.patch | 12 - target/sdk/Config.in | 2 +- target/sdk/Makefile | 9 +- target/sdk/files/Makefile | 2 +- target/sdk/files/README.SDK | 4 +- target/toolchain/Makefile | 1 - toolchain/Config.in | 35 +- toolchain/Makefile | 65 +- toolchain/binutils/Config.in | 25 +- toolchain/binutils/Config.version | 19 +- toolchain/binutils/Makefile | 40 +- .../2.25.1/300-001_ld_makefile_patch.patch | 22 - .../300-012_check_ldrunpath_length.patch | 20 - .../400-mips_no_dynamic_linking_sym.patch | 18 - ...e-default-emulation-for-mips64-linux.patch | 37 - .../001-MIPS_BFD_Remove_EI_ABIVERSION_5.patch | 36 + .../2.29.1/300-001_ld_makefile_patch.patch | 22 + .../300-012_check_ldrunpath_length.patch | 20 + .../400-mips_no_dynamic_linking_sym.patch | 18 + ...e-default-emulation-for-mips64-linux.patch | 37 + .../2.30/300-001_ld_makefile_patch.patch | 22 + .../2.30/300-012_check_ldrunpath_length.patch | 20 + .../400-mips_no_dynamic_linking_sym.patch | 18 + ...e-default-emulation-for-mips64-linux.patch | 37 + .../arc-2016.03/200-arc-fix-target-mask.patch | 13 - toolchain/fortify-headers/Makefile | 4 +- toolchain/gcc/Config.in | 44 +- toolchain/gcc/Config.version | 16 +- toolchain/gcc/common.mk | 50 +- toolchain/gcc/exclude-testsuite | 9 + toolchain/gcc/final/Makefile | 2 +- toolchain/gcc/initial/Makefile | 2 +- .../gcc/patches/5.4.0/010-documentation.patch | 23 - .../5.4.0/030-macos-header-fix-backport.patch | 10 - .../gcc/patches/5.4.0/100-uclibc-conf.patch | 33 - .../gcc/patches/5.4.0/200-musl_config.patch | 309 - .../gcc/patches/5.4.0/203-musl_powerpc.patch | 209 - .../280-musl-disable-ifunc-by-default.patch | 38 - .../patches/5.4.0/870-ppc_no_crtsavres.patch | 11 - .../gcc/patches/5.4.0/910-mbsd_multi.patch | 222 - .../5.4.0/920-specs_nonfatal_getenv.patch | 15 - .../931-fix-MIPS-softfloat-build-issue.patch | 174 - .../5.4.0/940-no-clobber-stamp-bits.patch | 11 - .../5.4.0/950-cpp_file_path_translation.patch | 182 - .../001-revert_register_mode_search.patch | 0 .../002-case_insensitive.patch | 0 .../gcc/patches/5.5.0/010-documentation.patch | 23 + .../020-no-plt-backport.patch | 0 .../040-fix-mips-ICE-PR-68400.patch | 0 .../gcc/patches/5.5.0/200-musl_config.patch | 309 + .../{5.4.0 => 5.5.0}/201-musl_arm.patch | 0 .../{5.4.0 => 5.5.0}/202-musl_mips.patch | 0 .../gcc/patches/5.5.0/203-musl_powerpc.patch | 209 + .../{5.4.0 => 5.5.0}/204-musl_sh.patch | 0 .../{5.4.0 => 5.5.0}/205-musl_x86.patch | 0 .../{5.4.0 => 5.5.0}/206-musl_aarch64.patch | 0 .../207-musl_fixincludes.patch | 0 .../{5.4.0 => 5.5.0}/209-musl_libstdc++.patch | 0 .../{5.4.0 => 5.5.0}/230-musl_libssp.patch | 0 .../240-musl-libitm-fixes.patch | 0 .../{5.4.0 => 5.5.0}/250-add-musl.patch | 0 .../260-musl-add-unwind-fix.patch | 0 .../270-musl-add-powerpc-softfloat-fix.patch | 0 .../280-musl-disable-ifunc-by-default.patch | 36 + .../300-mips_Os_cpu_rtx_cost_model.patch | 0 .../800-arm_v5te_no_ldrd_strd.patch | 0 .../810-arm-softfloat-libgcc.patch | 0 .../{5.4.0 => 5.5.0}/820-libgcc_pic.patch | 0 .../830-arm_unbreak_armv4t.patch | 0 .../840-armv4_pass_fix-v4bx_to_ld.patch | 0 .../850-use_shared_libgcc.patch | 0 .../851-libgcc_no_compat.patch | 0 .../patches/5.5.0/870-ppc_no_crtsavres.patch | 11 + .../880-no_java_section.patch | 0 .../{5.4.0 => 5.5.0}/881-no_tm_section.patch | 0 .../{5.4.0 => 5.5.0}/900-bad-mips16-crt.patch | 0 .../gcc/patches/5.5.0/910-mbsd_multi.patch | 222 + .../5.5.0/920-specs_nonfatal_getenv.patch | 15 + .../930-fix-mips-noexecstack.patch | 0 .../931-fix-MIPS-softfloat-build-issue.patch | 167 + .../5.5.0/940-no-clobber-stamp-bits.patch | 11 + .../5.5.0/950-cpp_file_path_translation.patch | 182 + .../{5.4.0 => 5.5.0}/960-go_libm.patch | 0 .../{5.4.0 => 5.5.0}/970-warn_bug.patch | 0 .../001-revert_register_mode_search.patch | 65 - .../patches/6.3.0/002-case_insensitive.patch | 14 - .../gcc/patches/6.3.0/010-documentation.patch | 23 - .../gcc/patches/6.3.0/100-uclibc-conf.patch | 33 - .../gcc/patches/6.3.0/230-musl_libssp.patch | 13 - .../280-musl-disable-ifunc-by-default.patch | 36 - .../300-mips_Os_cpu_rtx_cost_model.patch | 11 - .../6.3.0/800-arm_v5te_no_ldrd_strd.patch | 11 - .../6.3.0/810-arm-softfloat-libgcc.patch | 25 - .../gcc/patches/6.3.0/820-libgcc_pic.patch | 36 - .../6.3.0/830-arm_unbreak_armv4t.patch | 13 - .../6.3.0/840-armv4_pass_fix-v4bx_to_ld.patch | 19 - .../patches/6.3.0/850-use_shared_libgcc.patch | 47 - .../patches/6.3.0/851-libgcc_no_compat.patch | 12 - .../patches/6.3.0/870-ppc_no_crtsavres.patch | 11 - .../patches/6.3.0/880-no_java_section.patch | 11 - .../gcc/patches/6.3.0/881-no_tm_section.patch | 11 - .../patches/6.3.0/900-bad-mips16-crt.patch | 9 - .../gcc/patches/6.3.0/910-mbsd_multi.patch | 222 - .../6.3.0/920-specs_nonfatal_getenv.patch | 15 - .../6.3.0/930-fix-mips-noexecstack.patch | 111 - .../6.3.0/940-no-clobber-stamp-bits.patch | 11 - .../6.3.0/950-cpp_file_path_translation.patch | 182 - .../001-revert_register_mode_search.patch | 77 + .../patches/7.3.0/002-case_insensitive.patch | 24 + .../gcc/patches/7.3.0/010-documentation.patch | 35 + ...-Add-.NOTPARALLEL-to-include-Makefil.patch | 178 + .../7.3.0/100-PR-rtl-optimization-83496.patch | 136 + .../patches/7.3.0/110-Fix-MIPS-PR-84790.patch | 20 + .../gcc/patches/7.3.0/230-musl_libssp.patch | 28 + .../300-mips_Os_cpu_rtx_cost_model.patch | 21 + .../7.3.0/800-arm_v5te_no_ldrd_strd.patch | 32 + .../7.3.0/810-arm-softfloat-libgcc.patch | 33 + .../gcc/patches/7.3.0/820-libgcc_pic.patch | 44 + .../7.3.0/840-armv4_pass_fix-v4bx_to_ld.patch | 28 + .../patches/7.3.0/850-use_shared_libgcc.patch | 54 + .../patches/7.3.0/851-libgcc_no_compat.patch | 22 + .../patches/7.3.0/870-ppc_no_crtsavres.patch | 18 + .../gcc/patches/7.3.0/881-no_tm_section.patch | 22 + .../patches/7.3.0/900-bad-mips16-crt.patch | 30 + .../gcc/patches/7.3.0/910-mbsd_multi.patch | 146 + .../7.3.0/920-specs_nonfatal_getenv.patch | 22 + .../7.3.0/930-fix-mips-noexecstack.patch | 111 + ...ibffi-fix-MIPS-softfloat-build-issue.patch | 175 + .../7.3.0/940-no-clobber-stamp-bits.patch | 33 + .../7.3.0/950-cpp_file_path_translation.patch | 181 + ...mpilation-when-making-cross-compiler.patch | 73 + .../001-revert_register_mode_search.patch | 65 - .../arc-2016.03/002-weak_data_fix.patch | 42 - .../003-universal_initializer.patch | 94 - .../arc-2016.03/004-case_insensitive.patch | 14 - .../arc-2016.03/010-documentation.patch | 23 - .../arc-2016.03/020-no-plt-backport.patch | 28 - .../patches/arc-2016.03/100-uclibc-conf.patch | 33 - ...210-disable_libsanitizer_off_t_check.patch | 11 - .../arc-2016.03/800-arc-disablelibgmon.patch | 18 - .../patches/arc-2016.03/820-libgcc_pic.patch | 36 - .../arc-2016.03/850-use_shared_libgcc.patch | 47 - .../arc-2016.03/851-libgcc_no_compat.patch | 12 - .../arc-2016.03/860-use_eh_frame.patch | 42 - .../arc-2016.03/870-ppc_no_crtsavres.patch | 11 - .../arc-2016.03/880-no_java_section.patch | 11 - .../patches/arc-2016.03/910-mbsd_multi.patch | 253 - .../920-specs_nonfatal_getenv.patch | 14 - .../940-no-clobber-stamp-bits.patch | 11 - .../950-fix-building-with-gcc6.patch | 153 - .../001-revert_register_mode_search.patch | 77 + .../002-case_insensitive.patch | 24 + .../010-documentation.patch | 35 + .../arc-2017.09-release/230-musl_libssp.patch | 28 + .../300-mips_Os_cpu_rtx_cost_model.patch | 21 + .../800-arm_v5te_no_ldrd_strd.patch | 32 + .../810-arm-softfloat-libgcc.patch | 33 + .../arc-2017.09-release/820-libgcc_pic.patch | 44 + .../840-armv4_pass_fix-v4bx_to_ld.patch | 28 + .../850-use_shared_libgcc.patch | 54 + .../851-libgcc_no_compat.patch | 22 + .../870-ppc_no_crtsavres.patch | 18 + .../881-no_tm_section.patch | 22 + .../900-bad-mips16-crt.patch | 30 + .../arc-2017.09-release/910-mbsd_multi.patch | 146 + .../920-specs_nonfatal_getenv.patch | 22 + .../930-fix-mips-noexecstack.patch | 111 + .../940-no-clobber-stamp-bits.patch | 33 + .../950-cpp_file_path_translation.patch | 181 + toolchain/gdb/Makefile | 6 +- toolchain/glibc/Config.in | 12 - toolchain/glibc/Config.version | 11 - toolchain/glibc/Makefile | 1 + toolchain/glibc/common.mk | 27 +- .../{2.24 => }/100-fix_cross_rpcgen.patch | 0 .../2.24/200-add-dl-search-paths.patch | 14 - .../patches/200-add-dl-search-paths.patch | 14 + toolchain/insight/Makefile | 54 - .../600-fix-compile-flag-mismatch.patch | 31 - toolchain/kernel-headers/Makefile | 17 +- toolchain/musl/Config.version | 8 - toolchain/musl/Makefile | 2 +- toolchain/musl/common.mk | 22 +- .../patches/110-read_timezone_from_fs.patch | 2 +- .../patches/200-add_libssp_nonshared.patch | 4 +- toolchain/musl/patches/300-relative.patch | 2 +- ...ribute-to-some-function-declarations.patch | 16 +- .../musl/patches/900-iconv_size_hack.patch | 82 +- toolchain/uClibc/Config.version | 9 - toolchain/uClibc/Makefile | 6 +- toolchain/uClibc/common.mk | 6 +- tools/Makefile | 87 +- tools/automake/Makefile | 7 +- tools/automake/patches/000-relocatable.patch | 8 +- ...automake-port-to-Perl-5.22-and-later.patch | 30 - .../patches/001-fix-macos-vasnprintf.patch | 25 + tools/ccache/Makefile | 4 +- tools/ccache/patches/100-honour-copts.patch | 4 +- .../110-disable-assembler-support.patch | 32 - tools/cmake/Makefile | 7 +- .../patches/010-backport-macos-fix.patch | 15 - .../cmake/patches/100-disable_qt_tests.patch | 11 +- tools/cmake/patches/110-freebsd-compat.patch | 39 - .../110-libarchive-fix-libressl-compat.patch | 11 + .../patches/120-alpine_musl-compat.patch | 17 - .../120-curl-fix-libressl-linking.patch | 37 + .../130-bootstrap_parallel_make_flag.patch | 14 + .../130-libarchive-fix-libressl-compat.patch | 22 - .../140-curl-fix-libressl-linking.patch | 32 - .../cmake/patches/140-curl-fix-libressl.patch | 68 + .../150-bootstrap_parallel_make_flag.patch | 14 - .../patches/150-libarchive-fix-libressl.patch | 37 + tools/coreutils/Makefile | 9 +- .../patches/001-fix-macos-vasnprintf.patch | 25 + tools/dosfstools/Makefile | 5 +- ...64-32-heads-sectors-for-targets-smal.patch | 34 - ..._CHECK_LIB-for-iconv-library-linking.patch | 4 +- tools/e2fsprogs/Makefile | 11 +- ...n-compat.patch => 004-darwin-compat.patch} | 0 .../patches/004-freebsd-compat.patch | 12 - ...e-copy_file_range-to-copy_file_chunk.patch | 53 - .../e2fsprogs/patches/010-old-libmagic.patch | 25 - tools/expat/Makefile | 5 +- tools/findutils/Makefile | 1 + tools/firmware-utils/Makefile | 12 +- tools/firmware-utils/src/addpattern.c | 20 +- tools/firmware-utils/src/buffalo-enc.c | 26 +- tools/firmware-utils/src/buffalo-lib.h | 20 + tools/firmware-utils/src/buffalo-tag.c | 46 +- tools/firmware-utils/src/dns313-header.c | 239 + tools/firmware-utils/src/hcsmakeimage.c | 30 +- tools/firmware-utils/src/imagetag.c | 1 - tools/firmware-utils/src/jcgimage.c | 24 +- tools/firmware-utils/src/mkchkimg.c | 22 +- tools/firmware-utils/src/mkdapimg2.c | 204 + tools/firmware-utils/src/mkdhpimg.c | 85 + tools/firmware-utils/src/mkdlinkfw-lib.c | 172 + tools/firmware-utils/src/mkdlinkfw-lib.h | 83 + tools/firmware-utils/src/mkdlinkfw.c | 665 + tools/firmware-utils/src/mkrtn56uimg.c | 1 - tools/firmware-utils/src/mktplinkfw-kernel.c | 352 - tools/firmware-utils/src/mktplinkfw-lib.c | 265 + tools/firmware-utils/src/mktplinkfw-lib.h | 68 + tools/firmware-utils/src/mktplinkfw.c | 390 +- tools/firmware-utils/src/mktplinkfw2.c | 594 +- tools/firmware-utils/src/otrx.c | 592 + tools/firmware-utils/src/ptgen.c | 66 +- tools/firmware-utils/src/spw303v.c | 1 - tools/firmware-utils/src/tplink-safeloader.c | 1030 +- tools/firmware-utils/src/trx.c | 13 +- tools/firmware-utils/src/xorimage.c | 1 - tools/firmware-utils/src/zyxbcm.c | 1 - tools/flex/Makefile | 10 +- .../flex/patches/100-disable-tests-docs.patch | 4 +- ...SE_SYSTEM_EXTENSIONS-in-configure.ac.patch | 27 + tools/include/getline.h | 72 - tools/isl/Makefile | 4 +- tools/libressl/Makefile | 6 +- tools/libtool/Makefile | 1 + tools/lzma-old/Makefile | 2 + tools/lzma-old/patches/120-add-cflags.patch | 11 + tools/m4/Makefile | 5 +- .../m4/patches/001-fix-macos-vasnprintf.patch | 25 + tools/m4/patches/100-fix-gets-removal.patch | 17 - tools/make-ext4fs/Makefile | 10 +- .../make-ext4fs/patches/100-add-ldflags.patch | 11 + tools/mkimage/Makefile | 28 +- .../patches/010-freebsd-ulong-fix.patch | 6 +- .../030-allow-to-use-different-magic.patch | 78 +- tools/mkimage/patches/040-include_order.patch | 11 - .../patches/050-image_h_portability.patch | 2 +- .../patches/060-remove_kernel_includes.patch | 2 +- .../070-socfpgaimage_portability.patch | 52 - .../patches/080-remove_compiler_check.patch | 14 +- .../090-reproducible-SOURCE_DATE_EPOCH.patch | 82 - .../mkimage/patches/100-freebsd-compat.patch | 2 +- .../patches/200-compiler-support.patch | 702 - ...00-rsa-sign-add-support-for-libressl.patch | 68 + .../patches/210-link-libcrypto-static.patch | 14 + .../patches/210-openssl-1.1.x-compat.patch | 97 - tools/mm-macros/Makefile | 4 +- tools/mpc/Makefile | 4 +- tools/mpfr/Makefile | 5 +- tools/mpfr/patches/001-only_src.patch | 14 +- tools/mpfr/patches/100-freebsd-compat.patch | 2 +- tools/mtd-utils/Makefile | 52 +- tools/mtd-utils/patches/100-sscanf_fix.patch | 6 +- tools/mtd-utils/patches/110-portability.patch | 51 +- .../patches/120-include_sysmacros.patch | 25 - tools/mtd-utils/patches/130-lzma_jffs2.patch | 139 +- .../patches/135-mkubifs_optional_lzo.patch | 119 - ...add-ubigen_write_terminator-function.patch | 8 +- .../201-ubinize-add-terminator-support.patch | 23 +- .../310-add-static-linking-option.patch | 43 - .../320-mkfs.jffs2-SOURCE_DATE_EPOCH.patch | 60 + tools/patch/Makefile | 4 +- tools/pkg-config/Makefile | 4 +- ...ppress-string-format-literal-warning.patch | 18 - tools/qemu/Makefile | 1 + tools/scons/Makefile | 4 +- tools/scons/patches/001-platform_env.patch | 2 +- tools/sdimage/Makefile | 6 +- tools/sed/Makefile | 7 +- tools/sed/patches/001-musl_host_fixup.patch | 24 - tools/sparse/Makefile | 11 +- tools/squashfs/Makefile | 2 + tools/squashfs4/Makefile | 3 +- tools/sstrip/src/sstrip.c | 9 +- tools/tar/Makefile | 5 +- .../patches/100-symlink-force-root-name.patch | 21 +- .../110-symlink-force-permissions.patch | 10 + tools/upx/Makefile | 36 - tools/upx/patches/100-lzmaonly.patch | 156 - tools/xz/Makefile | 13 +- tools/zlib/Makefile | 41 + .../900-overridable-pc-exec-prefix.patch | 14 + 6151 files changed, 192176 insertions(+), 733153 deletions(-) create mode 100644 include/hardened-ld-pie.specs delete mode 100644 include/host.mk create mode 100644 include/site/powerpc64 create mode 100644 include/u-boot.mk create mode 100644 package/base-files/files/etc/sysctl.d/10-default.conf delete mode 100644 package/base-files/files/etc/uci-defaults/11_migrate-sysctl rename package/base-files/files/lib/preinit/{10_sysinfo => 02_sysinfo} (100%) create mode 100644 package/base-files/files/lib/upgrade/nand.sh create mode 100755 package/base-files/files/lib/upgrade/stage2 create mode 100644 package/boot/arm-trusted-firmware-sunxi/Makefile create mode 100644 package/boot/fconfig/Makefile create mode 100644 package/boot/kexec-tools/files/kdump.config create mode 100644 package/boot/kexec-tools/files/kdump.defaults create mode 100755 package/boot/kexec-tools/files/kdump.init delete mode 100644 package/boot/kexec-tools/patches/100-format_string_fix.patch delete mode 100644 package/boot/kexec-tools/patches/110-fix-vmcore-dmsg-compilation-error.patch create mode 100644 package/boot/kobs-ng/Makefile create mode 100644 package/boot/kobs-ng/patches/001-compile.patch create mode 100644 package/boot/kobs-ng/patches/002-add-init-size-param.patch create mode 100644 package/boot/kobs-ng/patches/003-raw-mode.patch create mode 100644 package/boot/kobs-ng/patches/004-fix-cal_nfc_geometry.patch delete mode 100644 package/boot/uboot-ar71xx/Makefile delete mode 100644 package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/Makefile delete mode 100644 package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/config.mk delete mode 100644 package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/lowlevel_init.S delete mode 100644 package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/nbg460n.c delete mode 100644 package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/u-boot.lds delete mode 100644 package/boot/uboot-ar71xx/files/cpu/mips/ar71xx_serial.c delete mode 100644 package/boot/uboot-ar71xx/files/drivers/net/ag71xx.c delete mode 100644 package/boot/uboot-ar71xx/files/drivers/net/ag71xx.h delete mode 100644 package/boot/uboot-ar71xx/files/drivers/net/phy/rtl8366.h delete mode 100644 package/boot/uboot-ar71xx/files/drivers/net/phy/rtl8366_mii.c delete mode 100644 package/boot/uboot-ar71xx/files/drivers/spi/ar71xx_spi.c delete mode 100644 package/boot/uboot-ar71xx/files/include/asm-mips/ar71xx.h delete mode 100644 package/boot/uboot-ar71xx/files/include/asm-mips/ar71xx_gpio.h delete mode 100644 package/boot/uboot-ar71xx/files/include/configs/nbg460n.h delete mode 100644 package/boot/uboot-ar71xx/patches/0001-upstream-Reproducible-U-Boot-build-support-using-SOURCE_DATE_.patch delete mode 100644 package/boot/uboot-ar71xx/patches/0002-upstream-Makefile-Reproducible-U-Boot-build-support.patch delete mode 100644 package/boot/uboot-ar71xx/patches/001-ar71xx.patch delete mode 100644 package/boot/uboot-ar71xx/patches/002-ar71xx-spi.patch delete mode 100644 package/boot/uboot-ar71xx/patches/010-enet-ag71xx.patch delete mode 100644 package/boot/uboot-ar71xx/patches/011-switch-rtl8366sr.patch delete mode 100644 package/boot/uboot-ar71xx/patches/020-freebsd-compat.patch delete mode 100644 package/boot/uboot-ar71xx/patches/021-darwin_compat.patch delete mode 100644 package/boot/uboot-ar71xx/patches/022-getline_backport.patch delete mode 100644 package/boot/uboot-ar71xx/patches/030-no_examples.patch delete mode 100644 package/boot/uboot-ar71xx/patches/040-no_extern_inline.patch delete mode 100644 package/boot/uboot-ar71xx/patches/041-no_weak_alias.patch delete mode 100644 package/boot/uboot-envtools/Config.in delete mode 100644 package/boot/uboot-envtools/files/ipq create mode 100644 package/boot/uboot-envtools/files/ipq40xx create mode 100644 package/boot/uboot-envtools/files/ipq806x create mode 100644 package/boot/uboot-envtools/files/pistachio delete mode 100644 package/boot/uboot-envtools/patches/200-fw_env_no_aes.patch delete mode 100644 package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch delete mode 100644 package/boot/uboot-envtools/patches/400-u-boot-2015.10-stdint.patch delete mode 100644 package/boot/uboot-sunxi/patches/001-use-dtc-in-kernel.patch delete mode 100644 package/boot/uboot-sunxi/patches/010-dt-sync-files-with-kernel.patch delete mode 100644 package/boot/uboot-sunxi/patches/011-dt-sync-dts-files-with-kernel.patch delete mode 100644 package/boot/uboot-sunxi/patches/012-sun6i-fix-clock_twi_onoff.patch delete mode 100644 package/boot/uboot-sunxi/patches/013-enable-realtek-phy.patch delete mode 100644 package/boot/uboot-sunxi/patches/014-fix-gmac-init.patch delete mode 100644 package/boot/uboot-sunxi/patches/015-fix-2nd-usb-ctrler-on-sun47i.patch delete mode 100644 package/boot/uboot-sunxi/patches/016-spl-print-mmc-slot.patch delete mode 100644 package/boot/uboot-sunxi/patches/017-usb-add-support-for-usb3-vbus-pin.patch delete mode 100644 package/boot/uboot-sunxi/patches/018-usb-specify-vbus-pins-on-orangepis.patch delete mode 100644 package/boot/uboot-sunxi/patches/019-sid-add-efuse-support-for-h3-a83t.patch delete mode 100644 package/boot/uboot-sunxi/patches/020-boot-display-board-model-on-startup.patch create mode 100644 package/boot/uboot-sunxi/patches/062-A20-improve-gmac-upload.patch create mode 100644 package/boot/uboot-sunxi/patches/200-mkimage-check-environment-for-dtc-binary-location.patch create mode 100644 package/boot/uboot-sunxi/patches/210-sunxi-deactivate-binman.patch create mode 100644 package/boot/uboot-sunxi/patches/220-add-sunxi50i-nanopi-neo-plus2.patch create mode 100644 package/boot/uboot-sunxi/patches/221-compatible-old-dtc.patch create mode 100644 package/boot/uboot-sunxi/patches/320-sunxi-Add-support-for-Orange-Pi-R1.patch create mode 100644 package/boot/uboot-sunxi/patches/400-ARM-dts-orange-pi-zero-plus.patch create mode 100644 package/boot/uboot-sunxi/uEnv-a64.txt create mode 100644 package/devel/binutils/Makefile create mode 100644 package/devel/binutils/patches/0001-Do-not-pass-host-compiler-sanitization-flags-on-to-l.patch create mode 100644 package/devel/binutils/patches/0002-When-building-target-binaries-ensure-that-the-warnin.patch create mode 100644 package/devel/gdb-arc/Makefile create mode 100644 package/devel/gdb-arc/patches/100-no_extern_inline.patch create mode 100644 package/devel/gdb-arc/patches/110-no_testsuite.patch create mode 100644 package/devel/gdb-arc/patches/120-fix-compile-flag-mismatch.patch create mode 100644 package/devel/gdb/Makefile create mode 100644 package/devel/gdb/patches/001-gdb-pr14523-mips-signal-number.patch create mode 100644 package/devel/gdb/patches/100-musl_fix.patch create mode 100644 package/devel/gdb/patches/110-shared_libgcc.patch create mode 100644 package/devel/gdb/patches/120-sigprocmask-invalid-call.patch create mode 100644 package/devel/perf/Makefile create mode 100644 package/devel/perf/musl-compat.h create mode 100644 package/devel/perf/musl-include/asm/errno.h create mode 100644 package/devel/perf/musl-include/string.h create mode 100644 package/devel/strace/Makefile create mode 100644 package/devel/strace/patches/100-workaround--pt-reg-collisions-ppc.patch create mode 100644 package/devel/trace-cmd/Makefile create mode 100644 package/devel/trace-cmd/patches/110-mac80211_tracepoint.patch create mode 100644 package/devel/valgrind/Makefile create mode 100644 package/devel/valgrind/files/default.supp create mode 100644 package/devel/valgrind/patches/100-fix_configure_check.patch create mode 100644 package/devel/valgrind/patches/130-fix_arm_arch_detection.patch create mode 100644 package/firmware/wireless-regdb/Makefile create mode 100644 package/firmware/wireless-regdb/patches/100-regdb-write-firmware-file-format-version-code-20.patch create mode 100644 package/firmware/wireless-regdb/patches/500-world-regd-5GHz.patch create mode 100644 package/kernel/avila-wdt/Makefile create mode 100644 package/kernel/avila-wdt/src/Makefile create mode 100644 package/kernel/avila-wdt/src/avila-wdt.c create mode 100644 package/kernel/dtc/patches/0001-scripts-dtc-Update-to-version-with-overlays.patch create mode 100644 package/kernel/gpio-nct5104d/Makefile create mode 100644 package/kernel/gpio-nct5104d/src/Kconfig create mode 100644 package/kernel/gpio-nct5104d/src/Makefile create mode 100644 package/kernel/gpio-nct5104d/src/gpio-nct5104d.c create mode 100644 package/kernel/hwmon-gsc/Makefile create mode 100644 package/kernel/hwmon-gsc/src/Makefile create mode 100644 package/kernel/hwmon-gsc/src/gsc.c create mode 100644 package/kernel/leds-apu2/Makefile create mode 100644 package/kernel/leds-apu2/src/Kconfig create mode 100644 package/kernel/leds-apu2/src/Makefile create mode 100644 package/kernel/leds-apu2/src/leds-apu2.c create mode 100644 package/kernel/linux/files/sysctl-br-netfilter.conf create mode 100644 package/kernel/linux/files/sysctl-nf-conntrack.conf create mode 100644 package/kernel/linux/modules/iio.mk delete mode 100644 package/kernel/mac80211/files/regdb.txt create mode 100644 package/kernel/mac80211/patches/006-fix-genl-multicast.patch delete mode 100644 package/kernel/mac80211/patches/006-revert-ktime-changes.patch create mode 100644 package/kernel/mac80211/patches/007-fix-linux-verification-h.patch delete mode 100644 package/kernel/mac80211/patches/007-revert-genetlink-changes.patch create mode 100644 package/kernel/mac80211/patches/008-fix-genl-family-id.patch delete mode 100644 package/kernel/mac80211/patches/008-revert-ndo_stats64-cleanup.patch delete mode 100644 package/kernel/mac80211/patches/009-revert-mtu-changes.patch delete mode 100644 package/kernel/mac80211/patches/011-backport_strscpy.patch create mode 100644 package/kernel/mac80211/patches/012-kernel_build_check.patch create mode 100644 package/kernel/mac80211/patches/015-ipw200-mtu.patch delete mode 100644 package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch delete mode 100644 package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch delete mode 100644 package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch delete mode 100644 package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch delete mode 100644 package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch delete mode 100644 package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch delete mode 100644 package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch delete mode 100644 package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch delete mode 100644 package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch delete mode 100644 package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch delete mode 100644 package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch delete mode 100644 package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch delete mode 100644 package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch delete mode 100644 package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch delete mode 100644 package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch delete mode 100644 package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch delete mode 100644 package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch delete mode 100644 package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch delete mode 100644 package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch delete mode 100644 package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch delete mode 100644 package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch delete mode 100644 package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch delete mode 100644 package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch create mode 100644 package/kernel/mac80211/patches/040-brcmutil_option.patch create mode 100644 package/kernel/mac80211/patches/090-Revert-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch delete mode 100644 package/kernel/mac80211/patches/090-remove-cred.patch create mode 100644 package/kernel/mac80211/patches/130-disable-fils.patch delete mode 100644 package/kernel/mac80211/patches/130-mac80211-hwsim-hrtimer-clock.patch create mode 100644 package/kernel/mac80211/patches/131-Revert-mac80211-aes-cmac-switch-to-shash-CMAC-driver.patch create mode 100644 package/kernel/mac80211/patches/132-mac80211-remove-cmac-dependency.patch create mode 100644 package/kernel/mac80211/patches/140-tweak-TSQ-setting.patch delete mode 100644 package/kernel/mac80211/patches/301-ath9k_hw-issue-external-reset-for-QCA955x.patch create mode 100644 package/kernel/mac80211/patches/301-v4.15-mac80211-properly-free-requested-but-not-started-TX-.patch create mode 100644 package/kernel/mac80211/patches/302-v4.15-mac80211-mesh-drop-frames-appearing-to-be-from-us.patch delete mode 100644 package/kernel/mac80211/patches/304-ath9k-force-rx_clear-when-disabling-rx.patch delete mode 100644 package/kernel/mac80211/patches/305-ath9k-limit-retries-for-powersave-response-frames.patch delete mode 100644 package/kernel/mac80211/patches/306-Revert-ath9k-interpret-requested-txpower-in-EIRP-dom.patch delete mode 100644 package/kernel/mac80211/patches/307-mac80211-add-hdrlen-to-ieee80211_tx_data.patch delete mode 100644 package/kernel/mac80211/patches/308-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch create mode 100644 package/kernel/mac80211/patches/308-v4.16-0001-ath9k-move-spectral-scan-support-under-a-separate-co.patch delete mode 100644 package/kernel/mac80211/patches/309-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch delete mode 100644 package/kernel/mac80211/patches/310-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch create mode 100644 package/kernel/mac80211/patches/310-v4.16-ath9k-discard-undersized-packets.patch delete mode 100644 package/kernel/mac80211/patches/311-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch delete mode 100644 package/kernel/mac80211/patches/313-ath9k-fix-block-ack-window-tracking-issues.patch delete mode 100644 package/kernel/mac80211/patches/314-ath9k-rename-tx_complete_work-to-hw_check_work.patch delete mode 100644 package/kernel/mac80211/patches/315-ath9k_hw-check-if-the-chip-failed-to-wake-up.patch delete mode 100644 package/kernel/mac80211/patches/316-ath9k-fix-race-condition-in-enabling-disabling-IRQs.patch create mode 100644 package/kernel/mac80211/patches/318-v4.17-mac80211-round-IEEE80211_TX_STATUS_HEADROOM-up-to-mu.patch create mode 100644 package/kernel/mac80211/patches/319-v4.17-0001-mac80211-drop-frames-with-unexpected-DS-bits-from-fa.patch create mode 100644 package/kernel/mac80211/patches/319-v4.17-0002-mac80211-support-AP-4-addr-mode-fast-rx.patch create mode 100644 package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch create mode 100644 package/kernel/mac80211/patches/319-v4.17-0004-mac80211-support-station-4-addr-mode-fast-rx.patch delete mode 100644 package/kernel/mac80211/patches/320-ath9k-clean-up-and-fix-ath_tx_count_airtime.patch create mode 100644 package/kernel/mac80211/patches/320-v4.17-mac80211-support-A-MSDU-in-fast-rx.patch delete mode 100644 package/kernel/mac80211/patches/321-mac80211-fix-CSA-in-IBSS-mode.patch delete mode 100644 package/kernel/mac80211/patches/322-mac80211-don-t-handle-filtered-frames-within-a-BA-se.patch delete mode 100644 package/kernel/mac80211/patches/325-mac80211-unconditionally-start-new-netdev-queues-wit.patch delete mode 100644 package/kernel/mac80211/patches/327-mac80211-accept-key-reinstall-without-changing-anyth.patch rename package/kernel/mac80211/patches/{300-ath9k_hw-reset-AHB-WMAC-interface-on-AR91xx.patch => 350-ath9k_hw-reset-AHB-WMAC-interface-on-AR91xx.patch} (100%) create mode 100644 package/kernel/mac80211/patches/351-ath9k_hw-issue-external-reset-for-QCA955x.patch rename package/kernel/mac80211/patches/{302-ath9k_hw-set-spectral-scan-enable-bit-on-trigger-for.patch => 352-ath9k_hw-set-spectral-scan-enable-bit-on-trigger-for.patch} (100%) rename package/kernel/mac80211/patches/{303-ath9k-don-t-run-periodic-and-nf-calibation-at-the-sa.patch => 353-ath9k-don-t-run-periodic-and-nf-calibation-at-the-sa.patch} (100%) create mode 100644 package/kernel/mac80211/patches/354-ath9k-force-rx_clear-when-disabling-rx.patch create mode 100644 package/kernel/mac80211/patches/355-ath9k-limit-retries-for-powersave-response-frames.patch create mode 100644 package/kernel/mac80211/patches/356-Revert-ath9k-interpret-requested-txpower-in-EIRP-dom.patch create mode 100644 package/kernel/mac80211/patches/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch create mode 100644 package/kernel/mac80211/patches/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch create mode 100644 package/kernel/mac80211/patches/359-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch create mode 100644 package/kernel/mac80211/patches/360-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch create mode 100644 package/kernel/mac80211/patches/361-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch rename package/kernel/mac80211/patches/{312-ath9k-report-tx-status-on-EOSP.patch => 362-ath9k-report-tx-status-on-EOSP.patch} (100%) create mode 100644 package/kernel/mac80211/patches/363-ath9k-fix-block-ack-window-tracking-issues.patch rename package/kernel/mac80211/patches/{324-ath9k_hw-fix-channel-maximum-power-level-test.patch => 364-ath9k_hw-fix-channel-maximum-power-level-test.patch} (100%) create mode 100644 package/kernel/mac80211/patches/365-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch create mode 100644 package/kernel/mac80211/patches/366-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch create mode 100644 package/kernel/mac80211/patches/369-cfg80211-use-only-1Mbps-for-basic-rates-in-mesh.patch create mode 100644 package/kernel/mac80211/patches/370-mac80211-minstrel-remove-unnecessary-debugfs-cleanup.patch create mode 100644 package/kernel/mac80211/patches/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch create mode 100644 package/kernel/mac80211/patches/372-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch create mode 100644 package/kernel/mac80211/patches/373-mac80211-minstrel-fix-using-short-preamble-CCK-rates.patch create mode 100644 package/kernel/mac80211/patches/374-ath9k-Protect-queue-draining-by-rcu_read_lock.patch create mode 100644 package/kernel/mac80211/patches/375-mac80211-minstrel-fix-CCK-rate-group-streams-value.patch create mode 100644 package/kernel/mac80211/patches/376-mac80211-minstrel-fix-sampling-reporting-of-CCK-rate.patch create mode 100644 package/kernel/mac80211/patches/377-mac80211-minstrel-do-not-sample-rates-3-times-slower.patch create mode 100644 package/kernel/mac80211/patches/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch delete mode 100644 package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch create mode 100644 package/kernel/mac80211/patches/552-ahb_of.patch create mode 100644 package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch create mode 100644 package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch create mode 100644 package/kernel/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch create mode 100644 package/kernel/mac80211/patches/940-mwl8k_init_devices_synchronously.patch create mode 100644 package/kernel/mac80211/patches/970-rsi-fix-kbuild-reported-build-errors-with-CONFIG_PM-off create mode 100644 package/kernel/mac80211/patches/971-rsi-move-rsi_sdio_reinit_device-out-of-CONFIG_PM.patch create mode 100644 package/kernel/rtc-rv5c386a/Makefile create mode 100644 package/kernel/rtc-rv5c386a/src/Makefile create mode 100644 package/kernel/rtc-rv5c386a/src/rtc.c delete mode 100644 package/libs/cyassl/Config.in delete mode 100644 package/libs/cyassl/Makefile delete mode 100644 package/libs/elfutils/patches/004-maybe-uninitialized.patch delete mode 100644 package/libs/elfutils/patches/007-fix_TEMP_FAILURE_RETRY.patch delete mode 100644 package/libs/libcap/Makefile delete mode 100644 package/libs/libcap/patches/100-portability.patch create mode 100644 package/libs/libnl/patches/100-build-add-Libs.private-field-in-libnl-pkg-config-file.patch create mode 100644 package/libs/libnl/patches/101-add-musl-workaround-to-the-libc-compat.h-copy.patch create mode 100644 package/libs/libnl/patches/102-revert-build-enable-building-cli-during-tests.patch delete mode 100644 package/libs/libreadline/Makefile delete mode 100644 package/libs/libtool/patches/160-passthrough-ssp.patch create mode 100644 package/libs/libunwind/patches/004-ppc-musl.patch delete mode 100644 package/libs/ncurses/patches/500-cross.patch create mode 100644 package/libs/nghttp2/Makefile create mode 100644 package/libs/readline/Makefile rename package/libs/{libreadline => readline}/patches/001-install_perm.patch (100%) rename package/{base-files/files/etc/sysctl.d => libs/sysfsutils/files}/local.conf (100%) create mode 100644 package/libs/sysfsutils/files/sysfs.conf create mode 100644 package/libs/sysfsutils/files/sysfsutils delete mode 100644 package/libs/tcp_wrappers/Makefile delete mode 100644 package/libs/tcp_wrappers/patches/001-debian_subset.patch delete mode 100644 package/libs/tcp_wrappers/patches/002-opt_cflags.patch delete mode 100644 package/libs/tcp_wrappers/patches/003-scaffold_malloc.patch delete mode 100644 package/libs/tcp_wrappers/patches/004-ipv4_prefix.patch delete mode 100644 package/libs/tcp_wrappers/patches/005-no--lnsl-on-musl.patch create mode 100644 package/libs/wolfssl/Config.in create mode 100644 package/libs/wolfssl/Makefile create mode 100644 package/libs/wolfssl/patches/100-disable-hardening-check.patch rename package/libs/{cyassl => wolfssl}/patches/400-additional_compatibility.patch (100%) create mode 100644 package/libs/zlib/Config.in create mode 100644 package/libs/zlib/patches/001-neon-implementation-of-adler32.patch create mode 100644 package/libs/zlib/patches/002-arm-specific-optimisations-for-inflate.patch create mode 100644 package/libs/zlib/patches/003-attach-sourcefiles-in-patch-002-to-buildsystem.patch delete mode 100644 package/luci/LICENSE delete mode 100644 package/luci/NOTICE delete mode 100644 package/luci/applications/luci-app-adblock/Makefile delete mode 100644 package/luci/applications/luci-app-adblock/luasrc/controller/adblock.lua delete mode 100644 package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua delete mode 100644 package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua delete mode 100644 package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua delete mode 100644 package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua delete mode 100644 package/luci/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm delete mode 100644 package/luci/applications/luci-app-adblock/luasrc/view/adblock/logread.htm delete mode 100644 package/luci/applications/luci-app-adblock/luasrc/view/adblock/query.htm delete mode 100644 package/luci/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm delete mode 100644 package/luci/applications/luci-app-adblock/po/it/adblock.po delete mode 100644 package/luci/applications/luci-app-adblock/po/ja/adblock.po delete mode 100644 package/luci/applications/luci-app-adblock/po/pt-br/adblock.po delete mode 100644 package/luci/applications/luci-app-adblock/po/sv/adblock.po delete mode 100644 package/luci/applications/luci-app-adblock/po/templates/adblock.pot delete mode 100644 package/luci/applications/luci-app-adblock/po/zh-cn/adblock.po delete mode 100644 package/luci/applications/luci-app-adblock/po/zh-tw/adblock.po delete mode 100755 package/luci/applications/luci-app-adblock/root/etc/uci-defaults/40_luci-adblock delete mode 100644 package/luci/applications/luci-app-advanced-reboot/Makefile delete mode 100644 package/luci/applications/luci-app-advanced-reboot/README.md delete mode 100644 package/luci/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua delete mode 100644 package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm delete mode 100644 package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm delete mode 100644 package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm delete mode 100644 package/luci/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po delete mode 100644 package/luci/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot delete mode 100644 package/luci/applications/luci-app-ahcp/Makefile delete mode 100644 package/luci/applications/luci-app-ahcp/luasrc/controller/ahcp.lua delete mode 100644 package/luci/applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua delete mode 100644 package/luci/applications/luci-app-ahcp/luasrc/view/admin_status/index/ahcp.htm delete mode 100644 package/luci/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm delete mode 100644 package/luci/applications/luci-app-ahcp/po/ca/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/cs/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/de/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/el/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/en/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/es/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/fr/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/he/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/hu/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/it/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/ja/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/ms/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/no/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/pl/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/pt-br/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/pt/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/ro/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/ru/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/sk/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/sv/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/templates/ahcp.pot delete mode 100644 package/luci/applications/luci-app-ahcp/po/tr/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/uk/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/vi/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/zh-cn/ahcp.po delete mode 100644 package/luci/applications/luci-app-ahcp/po/zh-tw/ahcp.po delete mode 100755 package/luci/applications/luci-app-ahcp/root/etc/uci-defaults/40_luci-ahcp delete mode 100644 package/luci/applications/luci-app-aria2/Makefile delete mode 100644 package/luci/applications/luci-app-aria2/luasrc/controller/aria2.lua delete mode 100644 package/luci/applications/luci-app-aria2/luasrc/model/cbi/aria2.lua delete mode 100644 package/luci/applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm delete mode 100644 package/luci/applications/luci-app-aria2/po/pt-br/aria2.po delete mode 100644 package/luci/applications/luci-app-aria2/po/sv/aria2.po delete mode 100644 package/luci/applications/luci-app-aria2/po/templates/aria2.pot delete mode 100644 package/luci/applications/luci-app-aria2/po/zh-cn/aria2.po delete mode 100644 package/luci/applications/luci-app-aria2/po/zh-tw/aria2.po delete mode 100755 package/luci/applications/luci-app-aria2/root/etc/uci-defaults/40_luci-aria2 delete mode 100644 package/luci/applications/luci-app-asterisk/Makefile delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/asterisk.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/asterisk/cc_idd.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/controller/asterisk.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-dialplans.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-iax-connections.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-meetme.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-app.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-cdr.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-chan.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-codec.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-format.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-func.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-pbx.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res-feature.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-sip-connections.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-voice.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplan_out.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplans.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialzones.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme_settings.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phone_sip.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phones.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunks.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/cbi/cell.htm delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm delete mode 100644 package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm delete mode 100644 package/luci/applications/luci-app-asterisk/po/ca/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/cs/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/de/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/el/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/en/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/es/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/fr/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/he/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/hu/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/it/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/ja/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/ms/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/no/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/pl/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/pt-br/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/pt/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/ro/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/ru/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/sk/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/sv/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/templates/asterisk.pot delete mode 100644 package/luci/applications/luci-app-asterisk/po/tr/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/uk/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/vi/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/zh-cn/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/po/zh-tw/asterisk.po delete mode 100644 package/luci/applications/luci-app-asterisk/root/etc/config/asterisk delete mode 100755 package/luci/applications/luci-app-asterisk/root/etc/uci-defaults/40_luci-asterisk delete mode 100644 package/luci/applications/luci-app-attendedsysupgrade/Makefile delete mode 100644 package/luci/applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua delete mode 100644 package/luci/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm delete mode 100755 package/luci/applications/luci-app-attendedsysupgrade/root/etc/uci-defaults/40_luci-attendedsysupgrade delete mode 100644 package/luci/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json delete mode 100644 package/luci/applications/luci-app-bcp38/Makefile delete mode 100644 package/luci/applications/luci-app-bcp38/luasrc/controller/bcp38.lua delete mode 100644 package/luci/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua delete mode 100644 package/luci/applications/luci-app-bcp38/po/sv/bcp38.po delete mode 100644 package/luci/applications/luci-app-bcp38/po/templates/bcp38.pot delete mode 100644 package/luci/applications/luci-app-bcp38/po/zh-cn/bcp38.po delete mode 100644 package/luci/applications/luci-app-bcp38/po/zh-tw/bcp38.po delete mode 100755 package/luci/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38 delete mode 100644 package/luci/applications/luci-app-cjdns/Makefile delete mode 100644 package/luci/applications/luci-app-cjdns/luasrc/controller/cjdns.lua delete mode 100644 package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/cjdrouteconf.lua delete mode 100644 package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/iptunnel.lua delete mode 100644 package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/overview.lua delete mode 100644 package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/peering.lua delete mode 100644 package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/settings.lua delete mode 100644 package/luci/applications/luci-app-cjdns/luasrc/view/admin_status/index/cjdns.htm delete mode 100644 package/luci/applications/luci-app-cjdns/luasrc/view/cjdns/status.htm delete mode 100644 package/luci/applications/luci-app-cjdns/luasrc/view/cjdns/value.htm delete mode 100644 package/luci/applications/luci-app-clamav/Makefile delete mode 100644 package/luci/applications/luci-app-clamav/luasrc/controller/clamav.lua delete mode 100644 package/luci/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua delete mode 100644 package/luci/applications/luci-app-clamav/po/ja/clamav.po delete mode 100644 package/luci/applications/luci-app-clamav/po/sv/clamav.po delete mode 100644 package/luci/applications/luci-app-clamav/po/templates/clamav.pot delete mode 100644 package/luci/applications/luci-app-clamav/po/zh-cn/clamav.po delete mode 100644 package/luci/applications/luci-app-commands/Makefile delete mode 100644 package/luci/applications/luci-app-commands/luasrc/controller/commands.lua delete mode 100644 package/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua delete mode 100644 package/luci/applications/luci-app-commands/luasrc/view/commands.htm delete mode 100644 package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm delete mode 100644 package/luci/applications/luci-app-commands/po/ca/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/cs/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/de/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/el/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/en/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/es/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/fr/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/he/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/hu/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/it/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/ja/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/ms/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/no/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/pl/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/pt-br/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/pt/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/ro/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/ru/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/sk/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/sv/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/templates/commands.pot delete mode 100644 package/luci/applications/luci-app-commands/po/tr/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/uk/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/vi/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/zh-cn/commands.po delete mode 100644 package/luci/applications/luci-app-commands/po/zh-tw/commands.po delete mode 100644 package/luci/applications/luci-app-coovachilli/Makefile delete mode 100644 package/luci/applications/luci-app-coovachilli/luasrc/controller/coovachilli.lua delete mode 100644 package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli.lua delete mode 100644 package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_auth.lua delete mode 100644 package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_network.lua delete mode 100644 package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_radius.lua delete mode 100644 package/luci/applications/luci-app-coovachilli/po/ca/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/cs/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/de/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/el/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/en/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/es/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/fr/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/he/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/hu/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/it/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/ja/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/ms/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/no/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/pl/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/pt-br/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/pt/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/ro/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/ru/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/sk/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/sv/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/templates/coovachilli.pot delete mode 100644 package/luci/applications/luci-app-coovachilli/po/tr/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/uk/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/vi/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/zh-cn/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/po/zh-tw/coovachilli.po delete mode 100644 package/luci/applications/luci-app-coovachilli/root/etc/config/coovachilli delete mode 100644 package/luci/applications/luci-app-cshark/Makefile delete mode 100644 package/luci/applications/luci-app-cshark/luasrc/controller/cshark.lua delete mode 100644 package/luci/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua delete mode 100644 package/luci/applications/luci-app-cshark/luasrc/view/cshark.htm delete mode 100644 package/luci/applications/luci-app-ddns/Makefile delete mode 100755 package/luci/applications/luci-app-ddns/luasrc/controller/ddns.lua delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua delete mode 100755 package/luci/applications/luci-app-ddns/luasrc/tools/ddns.lua delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/admin_status/index/ddns.htm delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_logview.htm delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_lvalue.htm delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_value.htm delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_doubleline.htm delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_enabled.htm delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_startstop.htm delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm delete mode 100644 package/luci/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm delete mode 100644 package/luci/applications/luci-app-ddns/po/ca/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/cs/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/de/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/el/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/es/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/fr/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/he/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/hu/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/it/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/ja/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/no/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/pl/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/pt-br/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/pt/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/ro/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/ru/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/sv/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/templates/ddns.pot delete mode 100644 package/luci/applications/luci-app-ddns/po/tr/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/uk/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/vi/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/zh-cn/ddns.po delete mode 100644 package/luci/applications/luci-app-ddns/po/zh-tw/ddns.po delete mode 100755 package/luci/applications/luci-app-ddns/root/etc/uci-defaults/40_luci-ddns delete mode 100644 package/luci/applications/luci-app-diag-core/Makefile delete mode 100644 package/luci/applications/luci-app-diag-core/luasrc/controller/luci_diag.lua delete mode 100644 package/luci/applications/luci-app-diag-core/luasrc/view/diag/index.htm delete mode 100644 package/luci/applications/luci-app-diag-core/luasrc/view/diag/network_config_index.htm delete mode 100644 package/luci/applications/luci-app-diag-core/po/ca/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/cs/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/de/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/el/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/en/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/es/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/fr/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/he/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/hu/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/it/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/ja/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/ms/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/no/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/pl/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/pt-br/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/pt/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/ro/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/ru/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/sk/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/sv/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/templates/diag_core.pot delete mode 100644 package/luci/applications/luci-app-diag-core/po/tr/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/uk/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/vi/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/zh-cn/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-core/po/zh-tw/diag_core.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/Makefile delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/devinfo_common.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/luci_diag_devinfo.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/netdiscover_common.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/smap_common.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/mactodevinfo.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_config.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_config_mini.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_mini.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_config.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_config_mini.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_mini.lua delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/view/diag/smapsection.htm delete mode 100644 package/luci/applications/luci-app-diag-devinfo/luasrc/view/diag/smapvalue.htm delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/ca/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/cs/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/de/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/el/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/en/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/es/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/fr/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/he/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/hu/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/it/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/ja/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/ms/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/no/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/pl/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/pt-br/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/pt/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/ro/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/ru/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/sk/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/templates/diag_devinfo.pot delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/tr/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/uk/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/vi/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/zh-cn/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/po/zh-tw/diag_devinfo.po delete mode 100644 package/luci/applications/luci-app-diag-devinfo/root/etc/config/luci_devinfo delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/Makefile delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po delete mode 100644 package/luci/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot delete mode 100755 package/luci/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy delete mode 100644 package/luci/applications/luci-app-dump1090/Makefile delete mode 100644 package/luci/applications/luci-app-dump1090/luasrc/controller/dump1090.lua delete mode 100644 package/luci/applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua delete mode 100644 package/luci/applications/luci-app-dump1090/root/etc/uci-defaults/40_luci-dump1090 delete mode 100644 package/luci/applications/luci-app-dynapoint/Makefile delete mode 100644 package/luci/applications/luci-app-dynapoint/luasrc/controller/dynapoint.lua delete mode 100644 package/luci/applications/luci-app-dynapoint/luasrc/model/cbi/dynapoint.lua delete mode 100644 package/luci/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_checkbox.htm delete mode 100644 package/luci/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_color.htm delete mode 100644 package/luci/applications/luci-app-dynapoint/po/de/dynapoint.po delete mode 100644 package/luci/applications/luci-app-dynapoint/po/ja/dynapoint.po delete mode 100644 package/luci/applications/luci-app-dynapoint/po/pt-br/dynapoint.po delete mode 100644 package/luci/applications/luci-app-dynapoint/po/templates/dynapoint.pot delete mode 100644 package/luci/applications/luci-app-dynapoint/root/etc/uci-defaults/40_luci-dynapoint delete mode 100644 package/luci/applications/luci-app-e2guardian/Makefile delete mode 100644 package/luci/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua delete mode 100644 package/luci/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua delete mode 100644 package/luci/applications/luci-app-firewall/Makefile delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/controller/firewall.lua delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/tools/firewall.lua delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm delete mode 100644 package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm delete mode 100644 package/luci/applications/luci-app-firewall/po/ca/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/cs/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/de/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/el/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/en/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/es/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/fr/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/he/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/hu/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/it/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/ja/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/ko/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/ms/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/no/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/pl/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/pt-br/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/pt/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/ro/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/ru/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/sk/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/sv/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/templates/firewall.pot delete mode 100644 package/luci/applications/luci-app-firewall/po/tr/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/uk/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/vi/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po delete mode 100644 package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po delete mode 100644 package/luci/applications/luci-app-freifunk-diagnostics/Makefile delete mode 100644 package/luci/applications/luci-app-freifunk-diagnostics/luasrc/controller/freifunk/diag.lua delete mode 100644 package/luci/applications/luci-app-freifunk-diagnostics/luasrc/view/freifunk/diagnostics.htm delete mode 100644 package/luci/applications/luci-app-freifunk-diagnostics/root/etc/uci-defaults/40_luci-freifunk-diagnostics delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/Makefile delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/luasrc/controller/freifunk/policy-routing.lua delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/luasrc/model/cbi/freifunk/policyrouting.lua delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/ca/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/cs/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/de/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/el/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/en/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/es/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/fr/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/he/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/hu/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/it/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/ja/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/ms/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/no/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/pl/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/pt-br/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/pt/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/ro/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/ru/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/sk/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/sv/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/templates/freifunk-policyrouting.pot delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/tr/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/uk/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/vi/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/zh-cn/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-policyrouting/po/zh-tw/freifunk-policyrouting.po delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/Makefile delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/controller/freifunk/widgets.lua delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/clear/main.htm delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/html/main.htm delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/iframe/main.htm delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed/main.htm delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/search/main.htm delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/root/etc/config/freifunk-widgets delete mode 100644 package/luci/applications/luci-app-freifunk-widgets/root/lib/upgrade/keep.d/freifunk-widgets delete mode 100644 package/luci/applications/luci-app-fwknopd/Makefile delete mode 100644 package/luci/applications/luci-app-fwknopd/luasrc/controller/fwknopd.lua delete mode 100644 package/luci/applications/luci-app-fwknopd/luasrc/model/cbi/fwknopd.lua delete mode 100644 package/luci/applications/luci-app-fwknopd/luasrc/view/fwknopd-qr.htm delete mode 100644 package/luci/applications/luci-app-fwknopd/po/en/fwknopd.po delete mode 100644 package/luci/applications/luci-app-fwknopd/po/pt-br/fwknopd.po delete mode 100644 package/luci/applications/luci-app-fwknopd/po/templates/fwknopd.pot delete mode 100644 package/luci/applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd delete mode 100644 package/luci/applications/luci-app-fwknopd/root/usr/sbin/gen-qr.sh delete mode 100644 package/luci/applications/luci-app-hd-idle/Makefile delete mode 100644 package/luci/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua delete mode 100644 package/luci/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua delete mode 100644 package/luci/applications/luci-app-hd-idle/po/ca/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/cs/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/de/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/el/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/en/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/es/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/fr/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/he/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/hu/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/it/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/ja/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/ms/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/no/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/pl/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/pt-br/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/pt/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/ro/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/ru/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/sk/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/sv/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/templates/hd_idle.pot delete mode 100644 package/luci/applications/luci-app-hd-idle/po/tr/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/uk/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/vi/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po delete mode 100644 package/luci/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po delete mode 100755 package/luci/applications/luci-app-hd-idle/root/etc/uci-defaults/40_luci-hd_idle delete mode 100644 package/luci/applications/luci-app-ltqtapi/Makefile delete mode 100644 package/luci/applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua delete mode 100644 package/luci/applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua delete mode 100644 package/luci/applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua delete mode 100644 package/luci/applications/luci-app-ltqtapi/luasrc/view/admin_status/index/telephony.htm delete mode 100644 package/luci/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm delete mode 100644 package/luci/applications/luci-app-lxc/Makefile delete mode 100644 package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif delete mode 100644 package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif delete mode 100644 package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif delete mode 100644 package/luci/applications/luci-app-lxc/luasrc/controller/lxc.lua delete mode 100644 package/luci/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua delete mode 100644 package/luci/applications/luci-app-lxc/luasrc/view/lxc.htm delete mode 100644 package/luci/applications/luci-app-lxc/root/etc/config/lxc delete mode 100644 package/luci/applications/luci-app-meshwizard/Makefile delete mode 100644 package/luci/applications/luci-app-meshwizard/luasrc/controller/meshwizard.lua delete mode 100644 package/luci/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua delete mode 100644 package/luci/applications/luci-app-meshwizard/po/ca/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/cs/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/de/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/el/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/en/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/es/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/fr/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/he/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/hu/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/it/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/ja/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/ms/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/no/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/pl/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/pt-br/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/pt/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/ro/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/ru/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/sk/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/sv/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/templates/meshwizard.pot delete mode 100644 package/luci/applications/luci-app-meshwizard/po/tr/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/uk/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/vi/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/zh-cn/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/po/zh-tw/meshwizard.po delete mode 100644 package/luci/applications/luci-app-meshwizard/root/etc/uci-defaults/meshwizard delete mode 100644 package/luci/applications/luci-app-minidlna/Makefile delete mode 100644 package/luci/applications/luci-app-minidlna/luasrc/controller/minidlna.lua delete mode 100644 package/luci/applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua delete mode 100644 package/luci/applications/luci-app-minidlna/luasrc/view/admin_status/index/minidlna.htm delete mode 100644 package/luci/applications/luci-app-minidlna/luasrc/view/minidlna_status.htm delete mode 100644 package/luci/applications/luci-app-minidlna/po/ca/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/cs/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/de/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/el/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/en/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/es/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/fr/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/he/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/hu/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/it/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/ja/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/ms/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/no/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/pl/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/pt-br/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/pt/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/ro/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/ru/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/sk/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/sv/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/templates/minidlna.pot delete mode 100644 package/luci/applications/luci-app-minidlna/po/tr/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/uk/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/vi/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/zh-cn/minidlna.po delete mode 100644 package/luci/applications/luci-app-minidlna/po/zh-tw/minidlna.po delete mode 100755 package/luci/applications/luci-app-minidlna/root/etc/uci-defaults/40_luci-minidlna delete mode 100644 package/luci/applications/luci-app-mjpg-streamer/Makefile delete mode 100644 package/luci/applications/luci-app-mjpg-streamer/luasrc/controller/mjpg-streamer.lua delete mode 100644 package/luci/applications/luci-app-mjpg-streamer/luasrc/model/cbi/mjpg-streamer.lua delete mode 100644 package/luci/applications/luci-app-mjpg-streamer/po/ja/mjpg-streamer.po delete mode 100644 package/luci/applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po delete mode 100644 package/luci/applications/luci-app-mjpg-streamer/po/templates/mjpg-streamer.pot delete mode 100644 package/luci/applications/luci-app-mjpg-streamer/po/zh-cn/mjpg-streamer.po delete mode 100755 package/luci/applications/luci-app-mjpg-streamer/root/etc/uci-defaults/40_luci-mjpg-streamer delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/Makefile delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/luasrc/controller/mmc_over_gpio.lua delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/luasrc/model/cbi/mmc_over_gpio.lua delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/ca/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/cs/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/de/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/el/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/en/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/es/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/fr/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/he/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/hu/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/it/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/ja/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/ms/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/no/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/pl/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/pt-br/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/pt/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/ro/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/ru/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/sk/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/sv/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/templates/mmc_over_gpio.pot delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/tr/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/uk/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/vi/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/zh-cn/mmc_over_gpio.po delete mode 100644 package/luci/applications/luci-app-mmc-over-gpio/po/zh-tw/mmc_over_gpio.po delete mode 100755 package/luci/applications/luci-app-mmc-over-gpio/root/etc/uci-defaults/40_luci-mmc-over-gpio delete mode 100644 package/luci/applications/luci-app-multiwan/Makefile delete mode 100644 package/luci/applications/luci-app-multiwan/luasrc/controller/multiwan.lua delete mode 100644 package/luci/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwan.lua delete mode 100644 package/luci/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwanmini.lua delete mode 100644 package/luci/applications/luci-app-multiwan/luasrc/view/admin_status/index/multiwan.htm delete mode 100644 package/luci/applications/luci-app-multiwan/luasrc/view/multiwan_status.htm delete mode 100644 package/luci/applications/luci-app-multiwan/po/ca/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/cs/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/de/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/el/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/en/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/es/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/fr/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/he/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/hu/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/it/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/ja/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/ms/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/no/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/pl/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/pt-br/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/pt/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/ro/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/ru/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/sk/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/sv/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/templates/multiwan.pot delete mode 100644 package/luci/applications/luci-app-multiwan/po/tr/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/uk/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/vi/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/zh-cn/multiwan.po delete mode 100644 package/luci/applications/luci-app-multiwan/po/zh-tw/multiwan.po delete mode 100644 package/luci/applications/luci-app-mwan3/Makefile delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/controller/mwan3.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm delete mode 100644 package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm delete mode 100644 package/luci/applications/luci-app-mwan3/po/ja/mwan3.po delete mode 100644 package/luci/applications/luci-app-mwan3/po/templates/mwan3.pot delete mode 100644 package/luci/applications/luci-app-mwan3/po/zh-cn/mwan3.po delete mode 100644 package/luci/applications/luci-app-mwan3/po/zh-tw/mwan3.po delete mode 100755 package/luci/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak delete mode 100755 package/luci/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3 delete mode 100644 package/luci/applications/luci-app-nlbwmon/Makefile delete mode 100644 package/luci/applications/luci-app-nlbwmon/htdocs/luci-static/resources/nlbw.chart.min.js delete mode 100644 package/luci/applications/luci-app-nlbwmon/luasrc/controller/nlbw.lua delete mode 100644 package/luci/applications/luci-app-nlbwmon/luasrc/model/cbi/nlbw/config.lua delete mode 100644 package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/backup.htm delete mode 100644 package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/display.htm delete mode 100644 package/luci/applications/luci-app-nlbwmon/po/ja/nlbwmon.po delete mode 100644 package/luci/applications/luci-app-nlbwmon/po/templates/nlbwmon.pot delete mode 100644 package/luci/applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po delete mode 100644 package/luci/applications/luci-app-nlbwmon/root/etc/uci-defaults/40_luci-nlbwmon delete mode 100644 package/luci/applications/luci-app-noddos/Makefile delete mode 100755 package/luci/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails delete mode 100644 package/luci/applications/luci-app-noddos/luasrc/controller/noddos.lua delete mode 100644 package/luci/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua delete mode 100644 package/luci/applications/luci-app-noddos/luasrc/view/noddos/clients.htm delete mode 100644 package/luci/applications/luci-app-noddos/po/ja/noddos.po delete mode 100644 package/luci/applications/luci-app-noddos/po/templates/noddos.pot delete mode 100644 package/luci/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos delete mode 100644 package/luci/applications/luci-app-ntpc/Makefile delete mode 100644 package/luci/applications/luci-app-ntpc/luasrc/controller/ntpc.lua delete mode 100644 package/luci/applications/luci-app-ntpc/luasrc/model/cbi/ntpc/ntpc.lua delete mode 100644 package/luci/applications/luci-app-ntpc/luasrc/model/cbi/ntpc/ntpcmini.lua delete mode 100644 package/luci/applications/luci-app-ntpc/po/ca/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/cs/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/de/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/el/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/en/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/es/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/fr/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/he/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/hu/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/it/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/ja/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/ms/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/no/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/pl/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/pt-br/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/pt/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/ro/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/ru/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/sk/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/sv/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/templates/ntpc.pot delete mode 100644 package/luci/applications/luci-app-ntpc/po/tr/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/uk/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/vi/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/zh-cn/ntpc.po delete mode 100644 package/luci/applications/luci-app-ntpc/po/zh-tw/ntpc.po delete mode 100644 package/luci/applications/luci-app-ocserv/Makefile delete mode 100644 package/luci/applications/luci-app-ocserv/luasrc/controller/ocserv.lua delete mode 100644 package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua delete mode 100644 package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua delete mode 100644 package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua delete mode 100644 package/luci/applications/luci-app-ocserv/luasrc/view/admin_status/index/ocserv.htm delete mode 100644 package/luci/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm delete mode 100644 package/luci/applications/luci-app-olsr-services/Makefile delete mode 100644 package/luci/applications/luci-app-olsr-services/luasrc/controller/services.lua delete mode 100644 package/luci/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm delete mode 100644 package/luci/applications/luci-app-olsr-viz/Makefile delete mode 100755 package/luci/applications/luci-app-olsr-viz/htdocs/cgi-bin/olsr-viz.sh delete mode 100755 package/luci/applications/luci-app-olsr-viz/htdocs/cgi-bin/vizdata.sh delete mode 100644 package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz.js delete mode 100644 package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz/dot_down.gif delete mode 100644 package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz/dot_good.gif delete mode 100644 package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz/dot_ok.gif delete mode 100644 package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz/dot_weak.gif delete mode 100644 package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz/node-hna-mini.gif delete mode 100644 package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz/node-mini.gif delete mode 100644 package/luci/applications/luci-app-olsr-viz/luasrc/controller/olsr-viz.lua delete mode 100644 package/luci/applications/luci-app-olsr-viz/luasrc/view/olsr-viz/olsr-viz.htm delete mode 100644 package/luci/applications/luci-app-olsr/Makefile delete mode 120000 package/luci/applications/luci-app-olsr/htdocs/cgi-bin-nodes.html delete mode 100644 package/luci/applications/luci-app-olsr/htdocs/cgi-bin-status.html delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/controller/olsr.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/controller/olsr4.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/controller/olsr6.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd6.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrddisplay.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdhna.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdhna6.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface6.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins6.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/tools/olsr.lua delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/common_js.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/error_olsr.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/legend.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm delete mode 100644 package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm delete mode 100644 package/luci/applications/luci-app-olsr/po/ca/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/cs/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/de/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/el/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/en/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/es/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/fr/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/he/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/hu/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/it/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/ja/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/ms/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/no/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/pl/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/pt-br/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/pt/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/ro/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/ru/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/sk/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/sv/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/templates/olsr.pot delete mode 100644 package/luci/applications/luci-app-olsr/po/tr/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/uk/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/vi/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/zh-cn/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/po/zh-tw/olsr.po delete mode 100644 package/luci/applications/luci-app-olsr/root/etc/config/luci_olsr delete mode 100755 package/luci/applications/luci-app-olsr/root/etc/uci-defaults/40_luci-olsr delete mode 100644 package/luci/applications/luci-app-openvpn/Makefile delete mode 100644 package/luci/applications/luci-app-openvpn/luasrc/controller/openvpn.lua delete mode 100644 package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua delete mode 100644 package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua delete mode 100644 package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua delete mode 100644 package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm delete mode 100644 package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm delete mode 100644 package/luci/applications/luci-app-openvpn/po/ca/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/cs/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/de/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/el/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/en/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/es/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/fr/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/he/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/hu/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/it/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/ja/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/ms/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/no/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/pl/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/pt-br/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/pt/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/ro/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/ru/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/sk/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/sv/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/templates/openvpn.pot delete mode 100644 package/luci/applications/luci-app-openvpn/po/tr/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/uk/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/vi/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/po/zh-tw/openvpn.po delete mode 100644 package/luci/applications/luci-app-openvpn/root/etc/config/openvpn_recipes delete mode 100644 package/luci/applications/luci-app-p2pblock/Makefile delete mode 100644 package/luci/applications/luci-app-p2pblock/luasrc/controller/ff_p2pblock.lua delete mode 100644 package/luci/applications/luci-app-p2pblock/luasrc/model/cbi/luci_fw/p2pblock.lua delete mode 100644 package/luci/applications/luci-app-p2pblock/po/ca/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/cs/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/de/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/el/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/en/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/es/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/fr/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/he/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/hu/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/it/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/ja/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/ms/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/no/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/pl/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/pt-br/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/pt/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/ro/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/ru/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/sk/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/sv/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/templates/p2pblock.pot delete mode 100644 package/luci/applications/luci-app-p2pblock/po/tr/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/uk/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/vi/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/zh-cn/p2pblock.po delete mode 100644 package/luci/applications/luci-app-p2pblock/po/zh-tw/p2pblock.po delete mode 100755 package/luci/applications/luci-app-p2pblock/root/etc/uci-defaults/40_luci-p2pblock delete mode 100644 package/luci/applications/luci-app-p910nd/Makefile delete mode 100644 package/luci/applications/luci-app-p910nd/luasrc/controller/p910nd.lua delete mode 100644 package/luci/applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua delete mode 100644 package/luci/applications/luci-app-p910nd/po/ca/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/cs/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/de/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/el/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/en/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/es/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/fr/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/he/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/hu/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/it/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/ja/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/ms/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/no/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/pl/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/pt-br/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/pt/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/ro/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/ru/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/sk/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/sv/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/templates/p910nd.pot delete mode 100644 package/luci/applications/luci-app-p910nd/po/tr/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/uk/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/vi/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/zh-cn/p910nd.po delete mode 100644 package/luci/applications/luci-app-p910nd/po/zh-tw/p910nd.po delete mode 100755 package/luci/applications/luci-app-p910nd/root/etc/uci-defaults/40_luci-p910nd delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/COPYING delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/Makefile delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/luasrc/controller/pbx-voicemail.lua delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/luasrc/model/cbi/pbx-voicemail.lua delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/ca/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/cs/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/de/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/el/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/en/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/es/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/fr/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/he/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/hu/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/it/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/ja/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/ms/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/no/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/pl/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/pt-br/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/pt/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/ro/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/ru/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/sk/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/sv/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/templates/pbx-voicemail.pot delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/tr/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/uk/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/vi/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/zh-cn/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/po/zh-tw/pbx-voicemail.po delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/root/etc/config/pbx-voicemail delete mode 100755 package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-move-greeting delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-auth.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-default.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-defaults.TEMPLATE delete mode 100755 package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-send-voicemail delete mode 100644 package/luci/applications/luci-app-pbx/COPYING delete mode 100644 package/luci/applications/luci-app-pbx/CREDITS-SOUNDS delete mode 100644 package/luci/applications/luci-app-pbx/LICENSE-SOUNDS delete mode 100644 package/luci/applications/luci-app-pbx/Makefile delete mode 100644 package/luci/applications/luci-app-pbx/luasrc/controller/pbx.lua delete mode 100644 package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-advanced.lua delete mode 100644 package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-calls.lua delete mode 100644 package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-google.lua delete mode 100644 package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-users.lua delete mode 100644 package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-voip.lua delete mode 100644 package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx.lua delete mode 100644 package/luci/applications/luci-app-pbx/po/ca/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/cs/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/de/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/el/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/en/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/es/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/fr/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/he/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/hu/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/it/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/ja/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/ms/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/no/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/pl/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/pt-br/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/pt/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/ro/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/ru/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/sk/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/sv/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/templates/pbx.pot delete mode 100644 package/luci/applications/luci-app-pbx/po/tr/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/uk/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/vi/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/zh-cn/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/po/zh-tw/pbx.po delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/config/pbx delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/config/pbx-advanced delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/config/pbx-calls delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/config/pbx-google delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/config/pbx-users delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/config/pbx-voip delete mode 100755 package/luci/applications/luci-app-pbx/root/etc/init.d/pbx-asterisk delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/asterisk.conf.TEMPLATE delete mode 100755 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/delayedcallback delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_footer.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_header.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_footer.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_header.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_gtalk.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_header.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_sip.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default_user.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_footer.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_header.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-nopin.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa_header.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk_header.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_sip.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_dial_local_user.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_gtalk.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_gtalk.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_sip.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_sip.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_footer.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_header.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_disabled.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_enabled.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/gtalk.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/indications.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber_users.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/logger.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/manager.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/modules.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/rtp.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip.conf.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_peer.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_registration.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_user.TEMPLATE delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-alreadyon.gsm delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-incorrect.gsm delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-pass.gsm delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-incorrect.gsm delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-thankyou.gsm delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/beep.gsm delete mode 100644 package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/vm-goodbye.gsm delete mode 100644 package/luci/applications/luci-app-polipo/Makefile delete mode 100644 package/luci/applications/luci-app-polipo/luasrc/controller/polipo.lua delete mode 100644 package/luci/applications/luci-app-polipo/luasrc/model/cbi/polipo.lua delete mode 100644 package/luci/applications/luci-app-polipo/luasrc/view/polipo_status.htm delete mode 100644 package/luci/applications/luci-app-polipo/po/ca/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/cs/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/de/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/el/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/en/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/es/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/fr/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/he/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/hu/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/it/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/ja/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/ms/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/no/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/pl/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/pt-br/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/pt/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/ro/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/ru/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/sk/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/sv/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/templates/polipo.pot delete mode 100644 package/luci/applications/luci-app-polipo/po/tr/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/uk/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/vi/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/zh-cn/polipo.po delete mode 100644 package/luci/applications/luci-app-polipo/po/zh-tw/polipo.po delete mode 100755 package/luci/applications/luci-app-polipo/root/etc/uci-defaults/40_luci-polipo delete mode 100755 package/luci/applications/luci-app-polipo/root/usr/sbin/polipo_purge delete mode 100644 package/luci/applications/luci-app-privoxy/Makefile delete mode 100644 package/luci/applications/luci-app-privoxy/luasrc/controller/privoxy.lua delete mode 100644 package/luci/applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua delete mode 100644 package/luci/applications/luci-app-privoxy/luasrc/view/privoxy/detail_logview.htm delete mode 100644 package/luci/applications/luci-app-privoxy/luasrc/view/privoxy/detail_startstop.htm delete mode 100644 package/luci/applications/luci-app-privoxy/po/de/privoxy.po delete mode 100644 package/luci/applications/luci-app-privoxy/po/pt-br/privoxy.po delete mode 100644 package/luci/applications/luci-app-privoxy/po/sv/privoxy.po delete mode 100644 package/luci/applications/luci-app-privoxy/po/templates/privoxy.pot delete mode 100644 package/luci/applications/luci-app-privoxy/po/zh-cn/privoxy.po delete mode 100755 package/luci/applications/luci-app-privoxy/root/etc/uci-defaults/40_luci-privoxy delete mode 100644 package/luci/applications/luci-app-qos/Makefile delete mode 100644 package/luci/applications/luci-app-qos/luasrc/controller/qos.lua delete mode 100644 package/luci/applications/luci-app-qos/luasrc/model/cbi/qos/qos.lua delete mode 100644 package/luci/applications/luci-app-qos/po/ca/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/cs/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/de/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/el/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/en/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/es/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/fr/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/he/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/hu/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/it/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/ja/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/ms/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/no/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/pl/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/pt-br/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/pt/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/ro/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/ru/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/sk/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/sv/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/templates/qos.pot delete mode 100644 package/luci/applications/luci-app-qos/po/tr/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/uk/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/vi/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/zh-cn/qos.po delete mode 100644 package/luci/applications/luci-app-qos/po/zh-tw/qos.po delete mode 100644 package/luci/applications/luci-app-radicale/Makefile delete mode 100644 package/luci/applications/luci-app-radicale/luasrc/controller/radicale.lua delete mode 100644 package/luci/applications/luci-app-radicale/luasrc/model/cbi/radicale.lua delete mode 100644 package/luci/applications/luci-app-radicale/luasrc/view/radicale/btn_startstop.htm delete mode 100644 package/luci/applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm delete mode 100644 package/luci/applications/luci-app-radicale/po/de/radicale.po delete mode 100644 package/luci/applications/luci-app-radicale/po/pt-br/radicale.po delete mode 100644 package/luci/applications/luci-app-radicale/po/sv/radicale.po delete mode 100644 package/luci/applications/luci-app-radicale/po/templates/radicale.pot delete mode 100755 package/luci/applications/luci-app-radicale/root/etc/uci-defaults/40_luci-radicale delete mode 100644 package/luci/applications/luci-app-radvd/Makefile delete mode 100644 package/luci/applications/luci-app-radvd/luasrc/controller/radvd.lua delete mode 100644 package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd.lua delete mode 100644 package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/dnssl.lua delete mode 100644 package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/interface.lua delete mode 100644 package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/prefix.lua delete mode 100644 package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/rdnss.lua delete mode 100644 package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/route.lua delete mode 100644 package/luci/applications/luci-app-radvd/po/ca/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/cs/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/de/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/el/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/en/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/es/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/fr/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/he/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/hu/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/it/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/ja/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/ms/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/no/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/pl/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/pt-br/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/pt/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/ro/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/ru/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/sk/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/sv/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/templates/radvd.pot delete mode 100644 package/luci/applications/luci-app-radvd/po/tr/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/uk/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/vi/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/zh-cn/radvd.po delete mode 100644 package/luci/applications/luci-app-radvd/po/zh-tw/radvd.po delete mode 100755 package/luci/applications/luci-app-radvd/root/etc/uci-defaults/40_luci-radvd delete mode 100644 package/luci/applications/luci-app-rp-pppoe-server/Makefile delete mode 100644 package/luci/applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua delete mode 100644 package/luci/applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua delete mode 100644 package/luci/applications/luci-app-samba/Makefile delete mode 100644 package/luci/applications/luci-app-samba/luasrc/controller/samba.lua delete mode 100644 package/luci/applications/luci-app-samba/luasrc/model/cbi/samba.lua delete mode 100644 package/luci/applications/luci-app-samba/po/ca/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/cs/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/de/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/el/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/en/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/es/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/fr/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/he/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/hu/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/it/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/ja/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/ms/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/no/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/pl/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/pt-br/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/pt/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/ro/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/ru/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/sk/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/sv/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/templates/samba.pot delete mode 100644 package/luci/applications/luci-app-samba/po/tr/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/uk/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/vi/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/zh-cn/samba.po delete mode 100644 package/luci/applications/luci-app-samba/po/zh-tw/samba.po delete mode 100644 package/luci/applications/luci-app-shadowsocks-libev/Makefile delete mode 100644 package/luci/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua delete mode 100644 package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua delete mode 100644 package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua delete mode 100644 package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua delete mode 100644 package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua delete mode 100644 package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua delete mode 100644 package/luci/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm delete mode 100644 package/luci/applications/luci-app-shadowsocks-libev/root/etc/uci-defaults/40_luci-shadowsocks-libev delete mode 100644 package/luci/applications/luci-app-shairplay/Makefile delete mode 100644 package/luci/applications/luci-app-shairplay/luasrc/controller/shairplay.lua delete mode 100644 package/luci/applications/luci-app-shairplay/luasrc/model/cbi/shairplay.lua delete mode 100644 package/luci/applications/luci-app-shairplay/po/ja/shairplay.po delete mode 100644 package/luci/applications/luci-app-shairplay/po/pt-br/shairplay.po delete mode 100644 package/luci/applications/luci-app-shairplay/po/templates/shairplay.pot delete mode 100644 package/luci/applications/luci-app-shairplay/root/etc/uci-defaults/40_luci-shairplay delete mode 100644 package/luci/applications/luci-app-shairport/Makefile delete mode 100644 package/luci/applications/luci-app-shairport/luasrc/controller/shairport.lua delete mode 100644 package/luci/applications/luci-app-shairport/luasrc/model/cbi/shairport.lua delete mode 100644 package/luci/applications/luci-app-shairport/root/etc/uci-defaults/40_luci-shairport delete mode 100644 package/luci/applications/luci-app-shellinabox/Makefile delete mode 100644 package/luci/applications/luci-app-shellinabox/files/terminal.png delete mode 100644 package/luci/applications/luci-app-shellinabox/luasrc/controller/shellinabox.lua delete mode 100644 package/luci/applications/luci-app-shellinabox/luasrc/model/cbi/shellinabox/cbi_tab.lua delete mode 100644 package/luci/applications/luci-app-shellinabox/luasrc/view/shellinabox/view_tab.htm delete mode 100644 package/luci/applications/luci-app-siitwizard/Makefile delete mode 100644 package/luci/applications/luci-app-siitwizard/luasrc/controller/siitwizard.lua delete mode 100644 package/luci/applications/luci-app-siitwizard/luasrc/model/cbi/siitwizard.lua delete mode 100644 package/luci/applications/luci-app-siitwizard/root/etc/config/siit delete mode 100644 package/luci/applications/luci-app-simple-adblock/Makefile delete mode 100644 package/luci/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua delete mode 100644 package/luci/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua delete mode 100644 package/luci/applications/luci-app-simple-adblock/po/ja/simple-adblock.po delete mode 100644 package/luci/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po delete mode 100644 package/luci/applications/luci-app-simple-adblock/po/pt/simple-adblock.po delete mode 100644 package/luci/applications/luci-app-simple-adblock/po/sv/simple-adblock.po delete mode 100644 package/luci/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot delete mode 100644 package/luci/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock delete mode 100644 package/luci/applications/luci-app-splash/Makefile delete mode 100644 package/luci/applications/luci-app-splash/README delete mode 100755 package/luci/applications/luci-app-splash/htdocs/cgi-bin/splash/splash.sh delete mode 100644 package/luci/applications/luci-app-splash/htdocs/luci/splash/index.html delete mode 100644 package/luci/applications/luci-app-splash/luasrc/controller/splash/splash.lua delete mode 100644 package/luci/applications/luci-app-splash/luasrc/model/cbi/splash/splash.lua delete mode 100644 package/luci/applications/luci-app-splash/luasrc/model/cbi/splash/splashtext.lua delete mode 100644 package/luci/applications/luci-app-splash/luasrc/view/admin_status/splash.htm delete mode 100644 package/luci/applications/luci-app-splash/luasrc/view/splash/blocked.htm delete mode 100644 package/luci/applications/luci-app-splash/luasrc/view/splash/splash.htm delete mode 100644 package/luci/applications/luci-app-splash/luasrc/view/splash_splash/index.htm delete mode 100644 package/luci/applications/luci-app-splash/luasrc/view/splash_splash/splash.htm delete mode 100644 package/luci/applications/luci-app-splash/po/ca/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/cs/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/de/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/el/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/en/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/es/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/fr/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/he/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/hu/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/it/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/ja/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/ms/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/no/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/pl/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/pt-br/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/pt/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/ro/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/ru/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/sk/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/sv/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/templates/splash.pot delete mode 100644 package/luci/applications/luci-app-splash/po/tr/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/uk/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/vi/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/zh-cn/splash.po delete mode 100644 package/luci/applications/luci-app-splash/po/zh-tw/splash.po delete mode 100644 package/luci/applications/luci-app-splash/root/etc/config/luci_splash delete mode 100644 package/luci/applications/luci-app-splash/root/etc/config/luci_splash_leases delete mode 100644 package/luci/applications/luci-app-splash/root/etc/hotplug.d/iface/25-splash delete mode 100755 package/luci/applications/luci-app-splash/root/etc/init.d/luci_splash delete mode 100755 package/luci/applications/luci-app-splash/root/usr/sbin/luci-splash delete mode 100644 package/luci/applications/luci-app-squid/Makefile delete mode 100644 package/luci/applications/luci-app-squid/luasrc/controller/squid.lua delete mode 100644 package/luci/applications/luci-app-squid/luasrc/model/cbi/squid.lua delete mode 100644 package/luci/applications/luci-app-statistics/Makefile delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/collectd.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/conntrack.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpu.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/csv.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/df.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/disk.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/dns.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/email.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/entropy.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/exec.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/interface.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/iptables.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/irq.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/iwinfo.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/load.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/memory.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/netlink.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/network.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/nut.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/olsrd.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/openvpn.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/ping.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/processes.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/rrdtool.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/splash_leases.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/tcpconns.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/unixsock.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/uptime.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/datatree.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/i18n.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/colors.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/conntrack.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/df.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/disk.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/dns.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/entropy.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/iptables.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/irq.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/iwinfo.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/load.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/memory.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/olsrd.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/openvpn.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/ping.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/splash_leases.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/tcpconns.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/uptime.lua delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/view/admin_statistics/index.htm delete mode 100644 package/luci/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm delete mode 100644 package/luci/applications/luci-app-statistics/po/ca/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/ca/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/cs/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/cs/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/de/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/de/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/el/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/el/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/en/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/en/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/es/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/es/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/fr/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/fr/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/he/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/he/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/hu/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/hu/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/it/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/it/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/ja/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/ja/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/ms/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/ms/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/no/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/no/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/pl/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/pl/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/pt-br/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/pt-br/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/pt/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/pt/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/ro/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/ro/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/ru/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/ru/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/sk/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/sk/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/sv/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/sv/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/templates/rrdtool.pot delete mode 100644 package/luci/applications/luci-app-statistics/po/templates/statistics.pot delete mode 100644 package/luci/applications/luci-app-statistics/po/tr/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/tr/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/uk/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/uk/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/vi/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/vi/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/zh-cn/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/zh-cn/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/po/zh-tw/rrdtool.po delete mode 100644 package/luci/applications/luci-app-statistics/po/zh-tw/statistics.po delete mode 100644 package/luci/applications/luci-app-statistics/root/etc/config/luci_statistics delete mode 100755 package/luci/applications/luci-app-statistics/root/etc/init.d/luci_statistics delete mode 100755 package/luci/applications/luci-app-statistics/root/etc/uci-defaults/40_luci-statistics delete mode 100755 package/luci/applications/luci-app-statistics/root/usr/bin/stat-genconfig delete mode 100644 package/luci/applications/luci-app-tinyproxy/Makefile delete mode 100644 package/luci/applications/luci-app-tinyproxy/luasrc/controller/tinyproxy.lua delete mode 100644 package/luci/applications/luci-app-tinyproxy/luasrc/model/cbi/tinyproxy.lua delete mode 100644 package/luci/applications/luci-app-tinyproxy/luasrc/view/tinyproxy_status.htm delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/ca/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/cs/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/de/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/el/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/en/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/es/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/fr/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/he/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/hu/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/it/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/ja/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/ms/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/no/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/pl/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/pt-br/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/pt/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/ro/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/ru/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/sk/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/sv/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/templates/tinyproxy.pot delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/tr/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/uk/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/vi/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/zh-cn/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-tinyproxy/po/zh-tw/tinyproxy.po delete mode 100644 package/luci/applications/luci-app-transmission/Makefile delete mode 100644 package/luci/applications/luci-app-transmission/luasrc/controller/transmission.lua delete mode 100644 package/luci/applications/luci-app-transmission/luasrc/model/cbi/transmission.lua delete mode 100644 package/luci/applications/luci-app-transmission/po/ca/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/cs/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/de/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/el/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/en/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/es/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/fr/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/he/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/hu/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/it/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/ja/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/ms/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/no/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/pl/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/pt-br/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/pt/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/ro/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/ru/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/sk/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/sv/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/templates/transmission.pot delete mode 100644 package/luci/applications/luci-app-transmission/po/tr/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/uk/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/vi/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/zh-cn/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/po/zh-tw/transmission.po delete mode 100644 package/luci/applications/luci-app-transmission/root/etc/uci-defaults/40_luci-transmission delete mode 100644 package/luci/applications/luci-app-travelmate/Makefile delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/controller/travelmate.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm delete mode 100644 package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm delete mode 100644 package/luci/applications/luci-app-travelmate/po/ja/travelmate.po delete mode 100644 package/luci/applications/luci-app-travelmate/po/pt-br/travelmate.po delete mode 100644 package/luci/applications/luci-app-travelmate/po/templates/travelmate.pot delete mode 100755 package/luci/applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate delete mode 100644 package/luci/applications/luci-app-udpxy/Makefile delete mode 100644 package/luci/applications/luci-app-udpxy/luasrc/controller/udpxy.lua delete mode 100644 package/luci/applications/luci-app-udpxy/luasrc/model/cbi/udpxy.lua delete mode 100644 package/luci/applications/luci-app-udpxy/root/etc/uci-defaults/40_luci-udpxy delete mode 100644 package/luci/applications/luci-app-uhttpd/Makefile delete mode 100644 package/luci/applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua delete mode 100644 package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua delete mode 100644 package/luci/applications/luci-app-uhttpd/po/ja/uhttpd.po delete mode 100644 package/luci/applications/luci-app-uhttpd/po/pt-br/uhttpd.po delete mode 100644 package/luci/applications/luci-app-uhttpd/po/templates/uhttpd.pot delete mode 100644 package/luci/applications/luci-app-unbound/Makefile delete mode 100644 package/luci/applications/luci-app-unbound/luasrc/controller/unbound.lua delete mode 100644 package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua delete mode 100644 package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua delete mode 100644 package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua delete mode 100644 package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua delete mode 100644 package/luci/applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm delete mode 100644 package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm delete mode 100644 package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm delete mode 100644 package/luci/applications/luci-app-unbound/root/etc/uci-defaults/60_luci-unbound delete mode 100644 package/luci/applications/luci-app-upnp/Makefile delete mode 100644 package/luci/applications/luci-app-upnp/luasrc/controller/upnp.lua delete mode 100644 package/luci/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua delete mode 100644 package/luci/applications/luci-app-upnp/luasrc/view/admin_status/index/upnp.htm delete mode 100644 package/luci/applications/luci-app-upnp/luasrc/view/upnp_status.htm delete mode 100644 package/luci/applications/luci-app-upnp/po/ca/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/cs/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/de/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/el/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/en/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/es/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/fr/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/he/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/hu/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/it/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/ja/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/ms/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/no/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/pl/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/pt-br/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/pt/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/ro/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/ru/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/sk/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/sv/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/templates/upnp.pot delete mode 100644 package/luci/applications/luci-app-upnp/po/tr/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/uk/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/vi/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/zh-cn/upnp.po delete mode 100644 package/luci/applications/luci-app-upnp/po/zh-tw/upnp.po delete mode 100755 package/luci/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp delete mode 100644 package/luci/applications/luci-app-ushare/Makefile delete mode 100644 package/luci/applications/luci-app-ushare/luasrc/controller/ushare.lua delete mode 100644 package/luci/applications/luci-app-ushare/luasrc/model/cbi/ushare.lua delete mode 100644 package/luci/applications/luci-app-ushare/po/ca/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/cs/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/de/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/el/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/en/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/es/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/fr/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/he/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/hu/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/it/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/ja/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/ms/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/no/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/pl/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/pt-br/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/pt/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/ro/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/ru/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/sk/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/sv/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/templates/ushare.pot delete mode 100644 package/luci/applications/luci-app-ushare/po/tr/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/uk/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/vi/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/zh-cn/ushare.po delete mode 100644 package/luci/applications/luci-app-ushare/po/zh-tw/ushare.po delete mode 100755 package/luci/applications/luci-app-ushare/root/etc/uci-defaults/40_luci-ushare delete mode 100644 package/luci/applications/luci-app-vnstat/Makefile delete mode 100644 package/luci/applications/luci-app-vnstat/luasrc/controller/vnstat.lua delete mode 100644 package/luci/applications/luci-app-vnstat/luasrc/model/cbi/vnstat.lua delete mode 100644 package/luci/applications/luci-app-vnstat/luasrc/view/vnstat.htm delete mode 100644 package/luci/applications/luci-app-vnstat/po/ca/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/cs/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/de/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/el/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/en/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/es/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/fr/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/he/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/hu/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/it/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/ja/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/ms/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/no/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/pl/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/pt-br/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/pt/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/ro/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/ru/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/sk/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/sv/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/templates/vnstat.pot delete mode 100644 package/luci/applications/luci-app-vnstat/po/tr/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/uk/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/vi/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/zh-cn/vnstat.po delete mode 100644 package/luci/applications/luci-app-vnstat/po/zh-tw/vnstat.po delete mode 100755 package/luci/applications/luci-app-vnstat/root/etc/uci-defaults/40_luci-vnstat delete mode 100644 package/luci/applications/luci-app-voice-core/Makefile delete mode 100644 package/luci/applications/luci-app-voice-core/luasrc/controller/luci_voice.lua delete mode 100644 package/luci/applications/luci-app-voice-core/luasrc/view/luci_voice/index.htm delete mode 100644 package/luci/applications/luci-app-voice-core/luasrc/view/luci_voice/phone_index.htm delete mode 100644 package/luci/applications/luci-app-voice-core/po/ca/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/cs/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/de/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/el/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/en/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/es/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/fr/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/he/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/hu/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/it/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/ja/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/ms/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/no/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/pl/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/pt-br/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/pt/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/ro/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/ru/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/sk/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/sv/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/templates/voice_core.pot delete mode 100644 package/luci/applications/luci-app-voice-core/po/tr/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/uk/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/vi/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/zh-cn/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-core/po/zh-tw/voice_core.po delete mode 100644 package/luci/applications/luci-app-voice-diag/Makefile delete mode 100644 package/luci/applications/luci-app-voice-diag/luasrc/controller/luci_voice/luci_voice_diag.lua delete mode 100644 package/luci/applications/luci-app-voice-diag/luasrc/view/luci_voice/diag_index.htm delete mode 100644 package/luci/applications/luci-app-voice-diag/po/ca/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/cs/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/de/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/el/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/en/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/es/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/fr/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/he/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/hu/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/it/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/ja/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/ms/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/no/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/pl/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/pt-br/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/pt/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/ro/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/ru/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/sk/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/sv/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/templates/voice_diag.pot delete mode 100644 package/luci/applications/luci-app-voice-diag/po/tr/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/uk/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/vi/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/zh-cn/voice_diag.po delete mode 100644 package/luci/applications/luci-app-voice-diag/po/zh-tw/voice_diag.po delete mode 100644 package/luci/applications/luci-app-vpnbypass/Makefile delete mode 100644 package/luci/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua delete mode 100644 package/luci/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua delete mode 100644 package/luci/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po delete mode 100644 package/luci/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot delete mode 100644 package/luci/applications/luci-app-vpnbypass/po/zh-cn/vpnbypass.po delete mode 100644 package/luci/applications/luci-app-vpnbypass/po/zh-tw/vpnbypass.po delete mode 100644 package/luci/applications/luci-app-vpnbypass/root/etc/uci-defaults/40_luci-vpnbypass delete mode 100644 package/luci/applications/luci-app-watchcat/Makefile delete mode 100644 package/luci/applications/luci-app-watchcat/luasrc/controller/watchcat.lua delete mode 100644 package/luci/applications/luci-app-watchcat/luasrc/model/cbi/watchcat/watchcat.lua delete mode 100644 package/luci/applications/luci-app-watchcat/po/ca/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/cs/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/de/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/el/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/en/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/es/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/fr/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/he/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/hu/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/it/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/ja/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/ms/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/no/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/pl/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/pt-br/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/pt/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/ro/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/ru/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/sk/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/sv/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/templates/watchcat.pot delete mode 100644 package/luci/applications/luci-app-watchcat/po/tr/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/uk/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/vi/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/zh-cn/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/po/zh-tw/watchcat.po delete mode 100644 package/luci/applications/luci-app-watchcat/root/etc/uci-defaults/40_luci-watchcat delete mode 100644 package/luci/applications/luci-app-wifischedule/Makefile delete mode 100644 package/luci/applications/luci-app-wifischedule/README.md delete mode 100644 package/luci/applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua delete mode 100644 package/luci/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua delete mode 100644 package/luci/applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm delete mode 100644 package/luci/applications/luci-app-wifischedule/po/it/wifischedule.po delete mode 100644 package/luci/applications/luci-app-wifischedule/po/ja/wifischedule.po delete mode 100644 package/luci/applications/luci-app-wifischedule/po/pt-br/wifischedule.po delete mode 100644 package/luci/applications/luci-app-wifischedule/po/sv/wifischedule.po delete mode 100644 package/luci/applications/luci-app-wifischedule/po/templates/wifischedule.pot delete mode 100644 package/luci/applications/luci-app-wifischedule/po/zh-cn/wifischedule.po delete mode 100644 package/luci/applications/luci-app-wireguard/Makefile delete mode 100644 package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua delete mode 100644 package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm delete mode 100644 package/luci/applications/luci-app-wireguard/po/ja/wireguard.po delete mode 100644 package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po delete mode 100644 package/luci/applications/luci-app-wireguard/po/sv/wireguard.po delete mode 100644 package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot delete mode 100644 package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po delete mode 100644 package/luci/applications/luci-app-wol/Makefile delete mode 100644 package/luci/applications/luci-app-wol/luasrc/controller/wol.lua delete mode 100644 package/luci/applications/luci-app-wol/luasrc/model/cbi/wol.lua delete mode 100644 package/luci/applications/luci-app-wol/po/ca/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/cs/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/de/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/el/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/en/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/es/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/fr/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/he/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/hu/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/it/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/ja/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/ms/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/no/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/pl/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/pt-br/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/pt/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/ro/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/ru/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/sk/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/sv/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/templates/wol.pot delete mode 100644 package/luci/applications/luci-app-wol/po/tr/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/uk/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/vi/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/zh-cn/wol.po delete mode 100644 package/luci/applications/luci-app-wol/po/zh-tw/wol.po delete mode 100755 package/luci/build/i18n-init.sh delete mode 100755 package/luci/build/i18n-po2lua.pl delete mode 100755 package/luci/build/i18n-scan.pl delete mode 100755 package/luci/build/i18n-sync.sh delete mode 100755 package/luci/build/i18n-update.pl delete mode 100755 package/luci/build/luadoc/doc.lua delete mode 100644 package/luci/build/luadoc/luadoc/config.lua delete mode 100644 package/luci/build/luadoc/luadoc/doclet/debug.lua delete mode 100644 package/luci/build/luadoc/luadoc/doclet/formatter.lua delete mode 100644 package/luci/build/luadoc/luadoc/doclet/html.lua delete mode 100644 package/luci/build/luadoc/luadoc/doclet/html/constant.lp delete mode 100644 package/luci/build/luadoc/luadoc/doclet/html/file.lp delete mode 100644 package/luci/build/luadoc/luadoc/doclet/html/function.lp delete mode 100644 package/luci/build/luadoc/luadoc/doclet/html/index.lp delete mode 100644 package/luci/build/luadoc/luadoc/doclet/html/luadoc.css delete mode 100644 package/luci/build/luadoc/luadoc/doclet/html/menu.lp delete mode 100644 package/luci/build/luadoc/luadoc/doclet/html/module.lp delete mode 100644 package/luci/build/luadoc/luadoc/doclet/html/table.lp delete mode 100644 package/luci/build/luadoc/luadoc/doclet/raw.lua delete mode 100644 package/luci/build/luadoc/luadoc/init.lua delete mode 100644 package/luci/build/luadoc/luadoc/lp.lua delete mode 100644 package/luci/build/luadoc/luadoc/taglet/standard.lua delete mode 100644 package/luci/build/luadoc/luadoc/taglet/standard/tags.lua delete mode 100644 package/luci/build/luadoc/luadoc/util.lua delete mode 100755 package/luci/build/makedocs.sh delete mode 100755 package/luci/build/mkbasepot.sh delete mode 100755 package/luci/build/mkrevision.sh delete mode 100755 package/luci/build/zoneinfo2lua.pl delete mode 100644 package/luci/collections/luci-light/Makefile delete mode 100644 package/luci/collections/luci-ssl-openssl/Makefile delete mode 100644 package/luci/collections/luci-ssl/Makefile delete mode 100644 package/luci/collections/luci/Makefile delete mode 100644 package/luci/contrib/package/Makefile delete mode 100644 package/luci/contrib/package/community-profiles/Makefile delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_Freifunk delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_altmark delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_arad delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_neot_semadar delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_tel-aviv delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_augsburg delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_bayreuth delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_bergischesland delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_berlin delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_carbodebit delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_cottbus delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_demo delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_duesseldorf delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_erfurt delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_evernet delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_freiburg delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_gadow delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_guifibages delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_halle delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_hameln delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_hannover delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_hooge delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_kiberpipa delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_kyritz delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_l59 delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_leipzig delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_marburg delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_oldenburg delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_openwireless_bern delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_piraten_dresden delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_potsdam delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_reihen delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_rosbach delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_schwarzach delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_stuttgart delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_tulumlibre delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_vogtland delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_weil delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_weimar delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_weinstadt delete mode 100644 package/luci/contrib/package/community-profiles/files/etc/config/profile_wlanljubljana delete mode 100644 package/luci/contrib/package/freifunk-common/Makefile delete mode 100644 package/luci/contrib/package/freifunk-common/files/etc/config/freifunk delete mode 100755 package/luci/contrib/package/freifunk-common/files/etc/init.d/freifunk delete mode 100644 package/luci/contrib/package/freifunk-common/files/etc/rc.local.d/01-config-migration delete mode 100644 package/luci/contrib/package/freifunk-common/files/etc/uci-defaults/freifunk delete mode 100755 package/luci/contrib/package/freifunk-common/files/usr/bin/ffdzero delete mode 100755 package/luci/contrib/package/freifunk-common/files/usr/bin/neigh.sh delete mode 100755 package/luci/contrib/package/freifunk-common/files/usr/bin/watch.sh delete mode 100755 package/luci/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog delete mode 100644 package/luci/contrib/package/freifunk-firewall/Makefile delete mode 100644 package/luci/contrib/package/freifunk-firewall/files/etc/firewall.freifunk delete mode 100644 package/luci/contrib/package/freifunk-firewall/files/etc/hotplug.d/firewall/23-restricted-wan delete mode 100644 package/luci/contrib/package/freifunk-gwcheck/Makefile delete mode 100644 package/luci/contrib/package/freifunk-gwcheck/files/etc/config/freifunk-gwcheck delete mode 100755 package/luci/contrib/package/freifunk-gwcheck/files/usr/sbin/ff_olsr_test_gw.sh delete mode 100644 package/luci/contrib/package/freifunk-gwcheck/root/etc/uci-defaults/50_freifunk-gwcheck delete mode 100644 package/luci/contrib/package/freifunk-mapupdate/Makefile delete mode 100644 package/luci/contrib/package/freifunk-mapupdate/files/etc/config/freifunk-mapupdate delete mode 100755 package/luci/contrib/package/freifunk-mapupdate/files/usr/sbin/ff_mapupdate.sh delete mode 100644 package/luci/contrib/package/freifunk-mapupdate/root/etc/uci-defaults/50_freifunk-mapupdate delete mode 100644 package/luci/contrib/package/freifunk-p2pblock/Makefile delete mode 100644 package/luci/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.config delete mode 100644 package/luci/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.init delete mode 100644 package/luci/contrib/package/freifunk-policyrouting/Makefile delete mode 100644 package/luci/contrib/package/freifunk-policyrouting/files/etc/config/freifunk-policyrouting delete mode 100644 package/luci/contrib/package/freifunk-policyrouting/files/etc/hotplug.d/iface/30-policyrouting delete mode 100755 package/luci/contrib/package/freifunk-policyrouting/files/etc/init.d/freifunk-policyrouting delete mode 100644 package/luci/contrib/package/freifunk-policyrouting/files/etc/uci-defaults/freifunk-policyrouting delete mode 100644 package/luci/contrib/package/freifunk-watchdog/Makefile delete mode 100644 package/luci/contrib/package/freifunk-watchdog/files/freifunk-watchdog.config delete mode 100755 package/luci/contrib/package/freifunk-watchdog/files/freifunk-watchdog.init delete mode 100644 package/luci/contrib/package/freifunk-watchdog/src/Makefile delete mode 100644 package/luci/contrib/package/freifunk-watchdog/src/ucix.c delete mode 100644 package/luci/contrib/package/freifunk-watchdog/src/ucix.h delete mode 100644 package/luci/contrib/package/freifunk-watchdog/src/watchdog.c delete mode 100644 package/luci/contrib/package/freifunk-watchdog/src/watchdog.h delete mode 100644 package/luci/contrib/package/freifunk-watchdog/src/wireless.22.h delete mode 100644 package/luci/contrib/package/meshwizard/Makefile delete mode 100644 package/luci/contrib/package/meshwizard/files/etc/config/meshwizard delete mode 100644 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/check-range-in-range.sh delete mode 100644 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/common.awk delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_auto-ipv6-dhcpv6-ip.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_bssid.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_dhcp_ip.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/initial_config.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/ipcalc-cidr.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/read_defaults.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_auto-ipv6-interface.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_auto-ipv6.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_dhcp.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_dnsmasq.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall_interface.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_lan_ipv6.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_lan_static.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_network.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd_interface.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_policyrouting.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_qos.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_splash.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_ssh.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_system.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_uhttpd.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wan_dhcp.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wan_static.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_widgets.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi_vap.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh delete mode 100755 package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/wizard.sh delete mode 100644 package/luci/documentation/CBI.md delete mode 100644 package/luci/documentation/JsonRpcHowTo.md delete mode 100644 package/luci/documentation/LAR.md delete mode 100644 package/luci/documentation/LMO.md delete mode 100644 package/luci/documentation/LuCI-0.10.md delete mode 100644 package/luci/documentation/Modules.md delete mode 100644 package/luci/documentation/ModulesHowTo.md delete mode 100644 package/luci/documentation/Templates.md delete mode 100644 package/luci/documentation/ThemesHowTo.md delete mode 100644 package/luci/documentation/api/index.html delete mode 100644 package/luci/documentation/api/luadoc.css delete mode 100644 package/luci/documentation/api/modules/luci.dispatcher.html delete mode 100644 package/luci/documentation/api/modules/luci.http.html delete mode 100644 package/luci/documentation/api/modules/luci.http.protocol.conditionals.html delete mode 100644 package/luci/documentation/api/modules/luci.http.protocol.date.html delete mode 100644 package/luci/documentation/api/modules/luci.http.protocol.html delete mode 100644 package/luci/documentation/api/modules/luci.http.protocol.mime.html delete mode 100644 package/luci/documentation/api/modules/luci.i18n.html delete mode 100644 package/luci/documentation/api/modules/luci.ip.cidr.html delete mode 100644 package/luci/documentation/api/modules/luci.ip.html delete mode 100644 package/luci/documentation/api/modules/luci.json.html delete mode 100644 package/luci/documentation/api/modules/luci.jsonc.html delete mode 100644 package/luci/documentation/api/modules/luci.jsonc.parser.html delete mode 100644 package/luci/documentation/api/modules/luci.model.ipkg.html delete mode 100644 package/luci/documentation/api/modules/luci.model.uci.html delete mode 100644 package/luci/documentation/api/modules/luci.rpcc.html delete mode 100644 package/luci/documentation/api/modules/luci.rpcc.ruci.html delete mode 100644 package/luci/documentation/api/modules/luci.sys.html delete mode 100644 package/luci/documentation/api/modules/luci.sys.init.html delete mode 100644 package/luci/documentation/api/modules/luci.sys.iptparser.html delete mode 100644 package/luci/documentation/api/modules/luci.sys.net.html delete mode 100644 package/luci/documentation/api/modules/luci.sys.process.html delete mode 100644 package/luci/documentation/api/modules/luci.sys.user.html delete mode 100644 package/luci/documentation/api/modules/luci.sys.wifi.html delete mode 100644 package/luci/documentation/api/modules/luci.util.html delete mode 100644 package/luci/documentation/api/modules/nixio.CHANGELOG.html delete mode 100644 package/luci/documentation/api/modules/nixio.CryptoHash.html delete mode 100644 package/luci/documentation/api/modules/nixio.File.html delete mode 100644 package/luci/documentation/api/modules/nixio.README.html delete mode 100644 package/luci/documentation/api/modules/nixio.Socket.html delete mode 100644 package/luci/documentation/api/modules/nixio.TLSContext.html delete mode 100644 package/luci/documentation/api/modules/nixio.TLSSocket.html delete mode 100644 package/luci/documentation/api/modules/nixio.UnifiedIO.html delete mode 100644 package/luci/documentation/api/modules/nixio.bin.html delete mode 100644 package/luci/documentation/api/modules/nixio.bit.html delete mode 100644 package/luci/documentation/api/modules/nixio.crypto.html delete mode 100644 package/luci/documentation/api/modules/nixio.fs.html delete mode 100644 package/luci/documentation/api/modules/nixio.html delete mode 100644 package/luci/documentation/i18n.md delete mode 100644 package/luci/libs/luci-lib-httpclient/Makefile delete mode 100644 package/luci/libs/luci-lib-httpclient/luasrc/httpclient.lua delete mode 100644 package/luci/libs/luci-lib-httpclient/luasrc/httpclient/receiver.lua delete mode 100644 package/luci/libs/luci-lib-ip/Makefile delete mode 100644 package/luci/libs/luci-lib-ip/src/Makefile delete mode 100644 package/luci/libs/luci-lib-ip/src/ip.c delete mode 100644 package/luci/libs/luci-lib-ip/src/ip.luadoc delete mode 100644 package/luci/libs/luci-lib-json/Makefile delete mode 100644 package/luci/libs/luci-lib-json/luasrc/json.lua delete mode 100644 package/luci/libs/luci-lib-json/luasrc/json.luadoc delete mode 100644 package/luci/libs/luci-lib-jsonc/Makefile delete mode 100644 package/luci/libs/luci-lib-jsonc/src/Makefile delete mode 100644 package/luci/libs/luci-lib-jsonc/src/jsonc.c delete mode 100644 package/luci/libs/luci-lib-jsonc/src/jsonc.luadoc delete mode 100644 package/luci/libs/luci-lib-luaneightbl/Makefile delete mode 100644 package/luci/libs/luci-lib-luaneightbl/src/Makefile delete mode 100644 package/luci/libs/luci-lib-luaneightbl/src/neightbl.c delete mode 100644 package/luci/libs/luci-lib-nixio/.gitignore delete mode 100644 package/luci/libs/luci-lib-nixio/LICENSE delete mode 100644 package/luci/libs/luci-lib-nixio/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/NOTICE delete mode 100644 package/luci/libs/luci-lib-nixio/README delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/README delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/Config.in delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/README delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/axTLS.cs delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_SWIG_interface.pl delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_interface.pl delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/java/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSL.java delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLCTX.java delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLClient.java delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLReadHolder.java delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLServer.java delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLUtil.java delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/lua/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/perl/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/axTLSvb.vb delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/.config delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/Config.in delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/config/JMeter.jmx delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/Rules.mak delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/config/axhttpd.aip delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/axtls.RES delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/axtls.rc delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/config.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/linuxconfig delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/makefile.conf delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/makefile.dotnet.conf delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/makefile.java.conf delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/makefile.post delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Kconfig-language.txt delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/conf.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/confdata.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lex.zconf.c_shipped delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc_proto.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/BIG.FAT.WARNING delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/checklist.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/colors.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/dialog.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/inputbox.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/menubox.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/msgbox.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/textbox.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/util.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/yesno.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mconf.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/menu.c delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mkconfigs delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/symbol.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/util.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.l delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.c_shipped delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.h_shipped delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.y delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/config/win32config delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/aes.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint_impl.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto_misc.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/hmac.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/md2.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/md5.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/rc4.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/rsa.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/crypto/sha1.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/docsrc/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/docsrc/axTLS.dox delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/docsrc/doco_footer.html delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/axolotl.jpg delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/tsbasbw.gif delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/httpd/Config.in delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/httpd/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttp.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttpd.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/httpd/htpasswd.c delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler-1.1-snapshot-20070521-1825.tar.gz delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler.patch delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/httpd/proc.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/httpd/tdate_parse.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/Config.in delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/c/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/c/axssl.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/axssl.cs delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/java/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/java/axssl.java delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/java/manifest.mf delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/lua/Makefile delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/samples/lua/axssl.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/perl/Makefile delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/samples/perl/axssl.pl delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/axssl.vb delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/BigIntConfig.in delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/Config.in delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/asn1.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/cert.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/crypto_misc.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/gen_cert.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/loader.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/openssl.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/p12.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/private_key.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/ssl.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_key.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.cer delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted.p8 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted_pem.p8 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_2048 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_2048.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes128.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes256.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.noname.p12 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted.p8 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted_pem.p8 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withCA.p12 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withoutCA.p12 delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.cer delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.cer delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.cer delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.cer delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes128.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes256.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_after.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_before.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.cer delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c.old delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/deutsche_telecom.x509_ca delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/equifax.x509_ca delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/gnutls.cer delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/header_issue.dat delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/killopenssl.sh delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/make_certs.sh delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca.pem delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ms_iis.cer delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/perf_bigint.c delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/socgen.cer delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c.bak delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/test_axssl.sh delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/thawte.x509_ca delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_ca delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_ca.pem delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_my_cert delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/test/verisign.x509_my_cert.pem delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.c delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_clnt.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_svr.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/version.h delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/ssl/x509.c delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/bin/.htaccess delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/favicon.ico delete mode 100755 package/luci/libs/luci-lib-nixio/axTLS/www/index.html delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/download.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/env.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/overview.lp delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/prepara_sql2.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_conc.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lp delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_err.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_fs.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_htk.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_lib.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.html delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lp delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_session.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql2.lua delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_variables.lp delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/bin/.htaccess delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htaccess delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htpasswd delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/index.html delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/.htaccess delete mode 100644 package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/index.html delete mode 100644 package/luci/libs/luci-lib-nixio/axtls-config/.config delete mode 100644 package/luci/libs/luci-lib-nixio/axtls-config/config.h delete mode 100644 package/luci/libs/luci-lib-nixio/axtls-root/etc/nixio/rsa_main.der delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/CHANGELOG.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/README.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.CryptoHash.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.File.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.Socket.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSContext.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSSocket.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.UnifiedIO.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.bin.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.bit.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.crypto.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.fs.lua delete mode 100644 package/luci/libs/luci-lib-nixio/docsrc/nixio.lua delete mode 100644 package/luci/libs/luci-lib-nixio/nixio-0.3-1.rockspec delete mode 100644 package/luci/libs/luci-lib-nixio/root/lib/upgrade/luci-add-conffiles.sh delete mode 100644 package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/fs.lua delete mode 100644 package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/util.lua delete mode 100644 package/luci/libs/luci-lib-nixio/src/Makefile delete mode 100644 package/luci/libs/luci-lib-nixio/src/address.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/axtls-compat.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/axtls-compat.h delete mode 100644 package/luci/libs/luci-lib-nixio/src/binary.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/bind.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/bit.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/cyassl-compat.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/cyassl-compat.h delete mode 100644 package/luci/libs/luci-lib-nixio/src/file.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/fs.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/io.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/mingw-compat.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/mingw-compat.h delete mode 100644 package/luci/libs/luci-lib-nixio/src/nixio-tls.h delete mode 100644 package/luci/libs/luci-lib-nixio/src/nixio.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/nixio.h delete mode 100644 package/luci/libs/luci-lib-nixio/src/poll.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/process.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/protoent.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/socket.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/sockopt.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/splice.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/syslog.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/tls-context.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/tls-crypto.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/tls-socket.c delete mode 100644 package/luci/libs/luci-lib-nixio/src/user.c delete mode 100644 package/luci/libs/luci-lib-px5g/Makefile delete mode 100644 package/luci/libs/luci-lib-px5g/lua/px5g/util.lua delete mode 100755 package/luci/libs/luci-lib-px5g/root/usr/sbin/px5g-genkeys delete mode 100644 package/luci/libs/luci-lib-px5g/src/Makefile delete mode 100644 package/luci/libs/luci-lib-px5g/src/library/bignum.c delete mode 100644 package/luci/libs/luci-lib-px5g/src/library/havege.c delete mode 100644 package/luci/libs/luci-lib-px5g/src/library/rsa.c delete mode 100644 package/luci/libs/luci-lib-px5g/src/library/sha1.c delete mode 100644 package/luci/libs/luci-lib-px5g/src/library/timing.c delete mode 100644 package/luci/libs/luci-lib-px5g/src/library/x509write.c delete mode 100644 package/luci/libs/luci-lib-px5g/src/polarssl/bignum.h delete mode 100644 package/luci/libs/luci-lib-px5g/src/polarssl/bn_mul.h delete mode 100644 package/luci/libs/luci-lib-px5g/src/polarssl/config.h delete mode 100644 package/luci/libs/luci-lib-px5g/src/polarssl/havege.h delete mode 100644 package/luci/libs/luci-lib-px5g/src/polarssl/rsa.h delete mode 100644 package/luci/libs/luci-lib-px5g/src/polarssl/sha1.h delete mode 100644 package/luci/libs/luci-lib-px5g/src/polarssl/timing.h delete mode 100644 package/luci/libs/luci-lib-px5g/src/polarssl/x509.h delete mode 100644 package/luci/libs/luci-lib-px5g/src/px5g.c delete mode 100644 package/luci/libs/luci-lib-px5g/src/px5g.h delete mode 100644 package/luci/libs/luci-lib-rpcc/Makefile delete mode 100644 package/luci/libs/luci-lib-rpcc/luasrc/rpcc.lua delete mode 100644 package/luci/libs/luci-lib-rpcc/luasrc/rpcc.luadoc delete mode 100644 package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.lua delete mode 100644 package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.luadoc delete mode 100644 package/luci/libs/rpcd-mod-rrdns/Makefile delete mode 100644 package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt delete mode 100644 package/luci/libs/rpcd-mod-rrdns/src/rrdns.c delete mode 100644 package/luci/libs/rpcd-mod-rrdns/src/rrdns.h delete mode 100644 package/luci/luci.mk delete mode 100644 package/luci/modules/luci-base/Makefile delete mode 100755 package/luci/modules/luci-base/htdocs/cgi-bin/luci delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/add.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/apply.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/arrow.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/down.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/download.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/edit.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/file.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/find.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/folder.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/help.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/key.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/link.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reload.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/remove.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reset.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/save.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/up.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/user.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/encryption.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/encryption_disabled.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/loading.gif delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_down.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-none.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big_disabled.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png delete mode 100644 package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js delete mode 100644 package/luci/modules/luci-base/luasrc/cacheloader.lua delete mode 100644 package/luci/modules/luci-base/luasrc/cbi.lua delete mode 100644 package/luci/modules/luci-base/luasrc/cbi/datatypes.lua delete mode 100644 package/luci/modules/luci-base/luasrc/ccache.lua delete mode 100644 package/luci/modules/luci-base/luasrc/config.lua delete mode 100644 package/luci/modules/luci-base/luasrc/controller/admin/servicectl.lua delete mode 100644 package/luci/modules/luci-base/luasrc/debug.lua delete mode 100644 package/luci/modules/luci-base/luasrc/dispatcher.lua delete mode 100644 package/luci/modules/luci-base/luasrc/dispatcher.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/http.lua delete mode 100644 package/luci/modules/luci-base/luasrc/http.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/http/protocol.lua delete mode 100644 package/luci/modules/luci-base/luasrc/http/protocol.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/http/protocol/conditionals.lua delete mode 100644 package/luci/modules/luci-base/luasrc/http/protocol/conditionals.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/http/protocol/date.lua delete mode 100644 package/luci/modules/luci-base/luasrc/http/protocol/date.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/http/protocol/mime.lua delete mode 100644 package/luci/modules/luci-base/luasrc/http/protocol/mime.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/i18n.lua delete mode 100644 package/luci/modules/luci-base/luasrc/i18n.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/ltn12.lua delete mode 100644 package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua delete mode 100644 package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_none.lua delete mode 100644 package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua delete mode 100644 package/luci/modules/luci-base/luasrc/model/firewall.lua delete mode 100644 package/luci/modules/luci-base/luasrc/model/ipkg.lua delete mode 100644 package/luci/modules/luci-base/luasrc/model/ipkg.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/model/network.lua delete mode 100644 package/luci/modules/luci-base/luasrc/model/uci.lua delete mode 100644 package/luci/modules/luci-base/luasrc/model/uci.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/sgi/cgi.lua delete mode 100644 package/luci/modules/luci-base/luasrc/sgi/uhttpd.lua delete mode 100644 package/luci/modules/luci-base/luasrc/store.lua delete mode 100644 package/luci/modules/luci-base/luasrc/sys.lua delete mode 100644 package/luci/modules/luci-base/luasrc/sys.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/sys/iptparser.lua delete mode 100644 package/luci/modules/luci-base/luasrc/sys/iptparser.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/sys/zoneinfo.lua delete mode 100644 package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua delete mode 100644 package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua delete mode 100644 package/luci/modules/luci-base/luasrc/template.lua delete mode 100644 package/luci/modules/luci-base/luasrc/tools/proto.lua delete mode 100644 package/luci/modules/luci-base/luasrc/tools/status.lua delete mode 100644 package/luci/modules/luci-base/luasrc/tools/webadmin.lua delete mode 100644 package/luci/modules/luci-base/luasrc/util.lua delete mode 100644 package/luci/modules/luci-base/luasrc/util.luadoc delete mode 100644 package/luci/modules/luci-base/luasrc/version.lua delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/apply_xhr.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/browser.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/button.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/compound.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/delegator.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/dvalue.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/dynlist.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/error.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/filebrowser.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/footer.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/full_valueheader.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/fvalue.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/header.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/lvalue.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/map.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/mvalue.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/network_ifacelist.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/network_netinfo.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/network_netlist.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/nsection.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/nullsection.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/simpleform.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/tabcontainer.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/tabmenu.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/tblsection.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/tsection.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/tvalue.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/ucisection.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/upload.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/value.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/valuefooter.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/cbi/valueheader.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/csrftoken.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/error404.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/error500.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/footer.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/header.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/indexer.htm delete mode 100644 package/luci/modules/luci-base/luasrc/view/sysauth.htm delete mode 100644 package/luci/modules/luci-base/po/ca/base.po delete mode 100644 package/luci/modules/luci-base/po/cs/base.po delete mode 100644 package/luci/modules/luci-base/po/de/base.po delete mode 100644 package/luci/modules/luci-base/po/el/base.po delete mode 100644 package/luci/modules/luci-base/po/en/base.po delete mode 100644 package/luci/modules/luci-base/po/es/base.po delete mode 100644 package/luci/modules/luci-base/po/fr/base.po delete mode 100644 package/luci/modules/luci-base/po/he/base.po delete mode 100644 package/luci/modules/luci-base/po/hu/base.po delete mode 100644 package/luci/modules/luci-base/po/it/base.po delete mode 100644 package/luci/modules/luci-base/po/ja/base.po delete mode 100644 package/luci/modules/luci-base/po/ko/base.po delete mode 100644 package/luci/modules/luci-base/po/ms/base.po delete mode 100644 package/luci/modules/luci-base/po/no/base.po delete mode 100644 package/luci/modules/luci-base/po/pl/base.po delete mode 100644 package/luci/modules/luci-base/po/pt-br/base.po delete mode 100644 package/luci/modules/luci-base/po/pt/base.po delete mode 100644 package/luci/modules/luci-base/po/ro/base.po delete mode 100644 package/luci/modules/luci-base/po/ru/base.po delete mode 100644 package/luci/modules/luci-base/po/sk/base.po delete mode 100644 package/luci/modules/luci-base/po/sv/base.po delete mode 100644 package/luci/modules/luci-base/po/templates/base.pot delete mode 100644 package/luci/modules/luci-base/po/tr/base.po delete mode 100644 package/luci/modules/luci-base/po/uk/base.po delete mode 100644 package/luci/modules/luci-base/po/vi/base.po delete mode 100644 package/luci/modules/luci-base/po/zh-cn/base.po delete mode 100644 package/luci/modules/luci-base/po/zh-tw/base.po delete mode 100644 package/luci/modules/luci-base/root/etc/config/luci delete mode 100644 package/luci/modules/luci-base/root/etc/config/ucitrack delete mode 100644 package/luci/modules/luci-base/root/etc/luci-uploads/.placeholder delete mode 100755 package/luci/modules/luci-base/root/sbin/luci-reload delete mode 100644 package/luci/modules/luci-base/root/usr/share/acl.d/luci-base.json delete mode 100644 package/luci/modules/luci-base/root/www/index.html delete mode 100644 package/luci/modules/luci-base/src/Makefile delete mode 100755 package/luci/modules/luci-base/src/mkversion.sh delete mode 100644 package/luci/modules/luci-base/src/po2lmo.c delete mode 100644 package/luci/modules/luci-base/src/template_lmo.c delete mode 100644 package/luci/modules/luci-base/src/template_lmo.h delete mode 100644 package/luci/modules/luci-base/src/template_lualib.c delete mode 100644 package/luci/modules/luci-base/src/template_lualib.h delete mode 100644 package/luci/modules/luci-base/src/template_parser.c delete mode 100644 package/luci/modules/luci-base/src/template_parser.h delete mode 100644 package/luci/modules/luci-base/src/template_utils.c delete mode 100644 package/luci/modules/luci-base/src/template_utils.h delete mode 100644 package/luci/modules/luci-mod-admin-full/Makefile delete mode 100644 package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/bandwidth.svg delete mode 100644 package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/connections.svg delete mode 100644 package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/load.svg delete mode 100644 package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/wifirate.svg delete mode 100644 package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/wireless.svg delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/iface_add.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/proto_ahcp.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/routes.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_add.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_status/processes.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/admin.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/backupfiles.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/mount.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/swap.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/startup.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/switch_status.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/connections.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/dmesg.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/load.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/syslog.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/applyreboot.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/backupfiles.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/clock_status.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/ipkg.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/reboot.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/upgrade.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm delete mode 100644 package/luci/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm delete mode 100755 package/luci/modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full delete mode 100644 package/luci/modules/luci-mod-admin-full/src/Makefile delete mode 100644 package/luci/modules/luci-mod-admin-full/src/luci-bwc.c delete mode 100644 package/luci/modules/luci-mod-admin-mini/Makefile delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/index.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/network.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/system.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/index.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/luci.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/passwd.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/system.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/applyreboot.htm delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/backup.htm delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/index.htm delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/reboot.htm delete mode 100644 package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/upgrade.htm delete mode 100644 package/luci/modules/luci-mod-failsafe/Makefile delete mode 100644 package/luci/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua delete mode 100644 package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/applyreboot.htm delete mode 100644 package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/flashops.htm delete mode 100644 package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/reboot.htm delete mode 100644 package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/upgrade.htm delete mode 100644 package/luci/modules/luci-mod-freifunk-community/Makefile delete mode 100644 package/luci/modules/luci-mod-freifunk/Makefile delete mode 100644 package/luci/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html delete mode 100644 package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/OSMLatLon.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/flashing.gif delete mode 100644 package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/freifunk-map/hna.gif delete mode 100644 package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/freifunk-map/node.gif delete mode 100644 package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/osm.js delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/remote_update.lua delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/basics.lua delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/contact.lua delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/profile.lua delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/profile_expert.lua delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/user_index.lua delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/view/cbi/osmll_value.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk-map/frame.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk-map/map.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/adminindex.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/contact.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/index.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/profile_error.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/remote_update.htm delete mode 100644 package/luci/modules/luci-mod-freifunk/po/ca/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/cs/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/de/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/el/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/en/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/es/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/fr/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/he/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/hu/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/it/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/ja/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/ms/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/no/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/pl/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/pt-br/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/pt/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/ro/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/ru/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/sk/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/sv/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/tr/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/uk/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/vi/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/zh-cn/freifunk.po delete mode 100644 package/luci/modules/luci-mod-freifunk/po/zh-tw/freifunk.po delete mode 100644 package/luci/modules/luci-mod-rpc/Makefile delete mode 100644 package/luci/modules/luci-mod-rpc/luasrc/controller/rpc.lua delete mode 100644 package/luci/modules/luci-mod-rpc/luasrc/jsonrpc.lua delete mode 100644 package/luci/modules/luci-mod-rpc/luasrc/jsonrpcbind/uci.lua delete mode 100644 package/luci/protocols/luci-proto-3g/Makefile delete mode 100644 package/luci/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua delete mode 100644 package/luci/protocols/luci-proto-ipip/Makefile delete mode 100644 package/luci/protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua delete mode 100644 package/luci/protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/Makefile delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua delete mode 100644 package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua delete mode 100644 package/luci/protocols/luci-proto-ncm/Makefile delete mode 100644 package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua delete mode 100644 package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua delete mode 100644 package/luci/protocols/luci-proto-openconnect/Makefile delete mode 100644 package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua delete mode 100644 package/luci/protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua delete mode 100644 package/luci/protocols/luci-proto-ppp/Makefile delete mode 100644 package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua delete mode 100644 package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua delete mode 100644 package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua delete mode 100644 package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua delete mode 100644 package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua delete mode 100644 package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua delete mode 100644 package/luci/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua delete mode 100644 package/luci/protocols/luci-proto-qmi/Makefile delete mode 100644 package/luci/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua delete mode 100644 package/luci/protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua delete mode 100644 package/luci/protocols/luci-proto-relay/Makefile delete mode 100644 package/luci/protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua delete mode 100644 package/luci/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua delete mode 100644 package/luci/protocols/luci-proto-vpnc/Makefile delete mode 100644 package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua delete mode 100644 package/luci/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua delete mode 100644 package/luci/protocols/luci-proto-wireguard/Makefile delete mode 100644 package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua delete mode 100644 package/luci/protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua delete mode 100644 package/luci/themes/luci-theme-bootstrap/Makefile delete mode 100644 package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css delete mode 100644 package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/favicon.ico delete mode 100644 package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/html5.js delete mode 100644 package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css delete mode 100644 package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/footer.htm delete mode 100644 package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm delete mode 100755 package/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/Makefile delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/bg.jpg delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/cascade.css delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/header.jpg delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/ie7.css delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/logo.jpg delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/mobile.css delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/smallscreen.css delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/footer.htm delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm delete mode 100644 package/luci/themes/luci-theme-freifunk-generic/root/etc/uci-defaults/30_luci-theme-freifunk-generic delete mode 100755 package/luci/themes/luci-theme-material/Makefile delete mode 100755 package/luci/themes/luci-theme-material/htdocs/luci-static/material/css/style.css delete mode 100755 package/luci/themes/luci-theme-material/htdocs/luci-static/material/favicon.ico delete mode 100644 package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.eot delete mode 100644 package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.svg delete mode 100644 package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.ttf delete mode 100644 package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.woff delete mode 100755 package/luci/themes/luci-theme-material/htdocs/luci-static/material/js/jquery.min.js delete mode 100755 package/luci/themes/luci-theme-material/htdocs/luci-static/material/js/script.js delete mode 100755 package/luci/themes/luci-theme-material/htdocs/luci-static/material/logo.png delete mode 100755 package/luci/themes/luci-theme-material/luasrc/view/themes/material/footer.htm delete mode 100644 package/luci/themes/luci-theme-material/luasrc/view/themes/material/header.htm delete mode 100755 package/luci/themes/luci-theme-material/root/etc/uci-defaults/30_luci-theme-material delete mode 100644 package/luci/themes/luci-theme-openwrt/Makefile delete mode 100644 package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css delete mode 100644 package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css delete mode 100644 package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css delete mode 100644 package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css delete mode 100644 package/luci/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png delete mode 100644 package/luci/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/footer.htm delete mode 100644 package/luci/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm delete mode 100755 package/luci/themes/luci-theme-openwrt/root/etc/uci-defaults/30_luci-theme-openwrt delete mode 100644 package/network/config/adblock/Makefile delete mode 100644 package/network/config/adblock/files/README.md delete mode 100644 package/network/config/adblock/files/adblock.blacklist delete mode 100644 package/network/config/adblock/files/adblock.conf delete mode 100755 package/network/config/adblock/files/adblock.init delete mode 100755 package/network/config/adblock/files/adblock.sh delete mode 100644 package/network/config/adblock/files/adblock.whitelist create mode 100644 package/network/config/netifd/files/etc/hotplug.d/net/20-smp-tune delete mode 100644 package/network/config/sqm-scripts-extra/Makefile delete mode 100644 package/network/config/sqm-scripts-extra/src/test_LAN_dual-isolate__piece_of_cake.qos delete mode 100644 package/network/config/sqm-scripts-extra/src/test_LAN_dual-isolate__piece_of_cake.qos.help delete mode 100644 package/network/config/sqm-scripts-extra/src/test_LAN_triple-isolate__piece_of_cake.qos delete mode 100644 package/network/config/sqm-scripts-extra/src/test_LAN_triple-isolate__piece_of_cake.qos.help delete mode 100644 package/network/config/sqm-scripts-extra/src/test_WAN_dual-isolate__piece_of_cake.qos delete mode 100644 package/network/config/sqm-scripts-extra/src/test_WAN_dual-isolate__piece_of_cake.qos.help delete mode 100644 package/network/config/sqm-scripts-extra/src/test_WAN_triple-isolate__piece_of_cake.qos delete mode 100644 package/network/config/sqm-scripts-extra/src/test_WAN_triple-isolate__piece_of_cake.qos.help delete mode 100644 package/network/config/sqm-scripts-extra/src/test_triple_isolated_llt_cake.qos delete mode 100644 package/network/config/sqm-scripts-extra/src/test_triple_isolated_llt_cake.qos.help delete mode 100644 package/network/config/sqm-scripts/Makefile create mode 100644 package/network/config/vxlan/Makefile create mode 100755 package/network/config/vxlan/files/vxlan.sh mode change 100755 => 100644 package/network/ipv6/ds-lite/files/dslite.sh create mode 100644 package/network/ipv6/thc-ipv6/patches/000-cflags_override.patch delete mode 100644 package/network/services/authsae/Makefile delete mode 100644 package/network/services/authsae/files/lib/wifi/authsae.sh delete mode 100644 package/network/services/authsae/patches/100-musl_fix.patch delete mode 100644 package/network/services/cjdns/Makefile delete mode 100644 package/network/services/cjdns/files/cjdns.defaults delete mode 100755 package/network/services/cjdns/files/cjdns.init delete mode 100755 package/network/services/cjdns/files/cjdrouteconf delete mode 100644 package/network/services/cjdns/lua/cjdns/admin.lua delete mode 100644 package/network/services/cjdns/lua/cjdns/common.lua delete mode 100644 package/network/services/cjdns/lua/cjdns/init.lua delete mode 100644 package/network/services/cjdns/lua/cjdns/uci.lua delete mode 100644 package/network/services/cjdns/lua/cjdns/udp.lua create mode 100755 package/network/services/dnsmasq/files/dhcp-script.sh create mode 100644 package/network/services/dnsmasq/files/dnsmasq_acl.json create mode 100644 package/network/services/dnsmasq/files/rfc6761.conf create mode 100644 package/network/services/dnsmasq/patches/0001-Be-persistent-with-broken-upstream-DNSSEC-warnings.patch create mode 100644 package/network/services/dnsmasq/patches/0002-Fix-DHCP-broken-ness-when-no-ping-AND-dhcp-sequentia.patch create mode 100644 package/network/services/dnsmasq/patches/0003-Add-logging-for-DNS-error-returns-from-upstream-and-.patch create mode 100644 package/network/services/dnsmasq/patches/0004-Add-packet-dump-debugging-facility.patch create mode 100644 package/network/services/dnsmasq/patches/0005-Retry-query-to-other-servers-on-receipt-of-SERVFAIL-.patch create mode 100644 package/network/services/dnsmasq/patches/0006-Handle-query-retry-on-REFUSED-or-SERVFAIL-for-DNSSEC.patch create mode 100644 package/network/services/dnsmasq/patches/0007-Retry-SERVFAIL-DNSSEC-queries-to-a-different-server-.patch create mode 100644 package/network/services/dnsmasq/patches/0008-Fix-logging-in-previous.patch create mode 100644 package/network/services/dnsmasq/patches/0009-Do-unsolicited-RAs-for-interfaces-which-appear-after.patch create mode 100644 package/network/services/dnsmasq/patches/0010-Log-warning-on-very-large-cachesize-config-instead-o.patch create mode 100644 package/network/services/dnsmasq/patches/240-ubus.patch delete mode 100644 package/network/services/dnsmasq/patches/250-Fix-infinite-retries-in-strict-order-mode.patch delete mode 100644 package/network/services/dnsmasq/patches/270-dnssec-wildcards.patch create mode 100644 package/network/services/dropbear/patches/010-runtime-maxauthtries.patch delete mode 100644 package/network/services/hostapd/patches/001-Fix-race-condition-between-AssocResp-callback-and-4a.patch create mode 100644 package/network/services/hostapd/patches/001-mesh-factor-out-mesh-join-function.patch delete mode 100644 package/network/services/hostapd/patches/002-Fix-duplicate-Reassociation-Request-frame-dropping.patch create mode 100644 package/network/services/hostapd/patches/002-mesh-factor-out-rsn-initialization.patch delete mode 100644 package/network/services/hostapd/patches/003-RSN-IBSS-Fix-TK-clearing-on-Authentication-frame-RX.patch create mode 100644 package/network/services/hostapd/patches/003-mesh-relocate-RSN-init-function.patch delete mode 100644 package/network/services/hostapd/patches/004-hostapd-Add-possibility-to-send-debug-messages-to-sy.patch create mode 100644 package/network/services/hostapd/patches/004-mesh-use-setup-completion-callback-to-complete-mesh-.patch delete mode 100644 package/network/services/hostapd/patches/005-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch create mode 100644 package/network/services/hostapd/patches/005-mesh-reflect-country-setting-to-mesh-configuration.patch delete mode 100644 package/network/services/hostapd/patches/006-Prevent-reinstallation-of-an-already-in-use-group-ke.patch create mode 100644 package/network/services/hostapd/patches/006-mesh-inform-kernel-driver-DFS-handler-in-userspace.patch delete mode 100644 package/network/services/hostapd/patches/007-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch create mode 100644 package/network/services/hostapd/patches/007-mesh-apply-channel-attributes-before-running-Mesh.patch delete mode 100644 package/network/services/hostapd/patches/008-Prevent-installation-of-an-all-zero-TK.patch create mode 100644 package/network/services/hostapd/patches/008-mesh-set-interface-type-to-mesh-before-setting-inter.patch delete mode 100644 package/network/services/hostapd/patches/009-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch create mode 100644 package/network/services/hostapd/patches/009-mesh-set-mesh-center-frequency.patch delete mode 100644 package/network/services/hostapd/patches/010-TDLS-Reject-TPK-TK-reconfiguration.patch create mode 100644 package/network/services/hostapd/patches/010-mesh-consider-mesh-interface-on-dfs-event-handler.patch delete mode 100644 package/network/services/hostapd/patches/011-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch create mode 100644 package/network/services/hostapd/patches/011-mesh-Allow-DFS-channels-to-be-selected-if-dfs-is-ena.patch delete mode 100644 package/network/services/hostapd/patches/012-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch create mode 100644 package/network/services/hostapd/patches/012-mesh-allow-mesh-to-send-channel-switch-request.patch delete mode 100644 package/network/services/hostapd/patches/013-Add-hostapd-options-wpa_group_update_count-and-wpa_p.patch create mode 100644 package/network/services/hostapd/patches/013-mesh-do-not-allow-pri-sec-channel-switch.patch delete mode 100644 package/network/services/hostapd/patches/014-WPA-Extra-defense-against-PTK-reinstalls-in-4-way-ha.patch create mode 100644 package/network/services/hostapd/patches/014-mesh-do-not-allow-scan-result-to-swap-pri-sec.patch delete mode 100644 package/network/services/hostapd/patches/015-Clear-PMK-length-and-check-for-this-when-deriving-PT.patch create mode 100644 package/network/services/hostapd/patches/015-mesh-do-not-use-offchan-mgmt-tx-on-DFS.patch delete mode 100644 package/network/services/hostapd/patches/016-Optional-AP-side-workaround-for-key-reinstallation-a.patch create mode 100644 package/network/services/hostapd/patches/016-mesh-fix-channel-switch-error-during-CAC.patch delete mode 100644 package/network/services/hostapd/patches/017-Additional-consistentcy-checks-for-PTK-component-len.patch create mode 100644 package/network/services/hostapd/patches/017-mesh-use-right-interface-context-to-send-DFS-event-m.patch delete mode 100644 package/network/services/hostapd/patches/018-Clear-BSSID-information-in-supplicant-state-machine-.patch create mode 100644 package/network/services/hostapd/patches/018-mesh-make-forwarding-configurable.patch delete mode 100644 package/network/services/hostapd/patches/019-WNM-Ignore-WNM-Sleep-Mode-Request-in-wnm_sleep_mode-.patch create mode 100644 package/network/services/hostapd/patches/022-mesh-fix-crash-with-CONFIG_TAXONOMY-enabled.patch create mode 100644 package/network/services/hostapd/patches/031-mesh-add-VHT_CHANWIDTH_USE_HT-to-max_oper_chwidth.patch create mode 100644 package/network/services/hostapd/patches/032-mesh-implement-use-of-VHT20-config-in-mesh-mode.patch create mode 100644 package/network/services/hostapd/patches/033-mesh-fix-parsing-of-max_oper_chwidth.patch create mode 100644 package/network/services/hostapd/patches/301-mesh-noscan.patch create mode 100644 package/network/services/hostapd/patches/381-hostapd_cli_UNKNOWN-COMMAND.patch delete mode 100644 package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch create mode 100644 package/network/services/hostapd/patches/463-add-mcast_rate-to-11s.patch create mode 100644 package/network/services/hostapd/patches/464-fix-mesh-obss-check.patch delete mode 100644 package/network/services/igmpproxy/patches/001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch delete mode 100644 package/network/services/igmpproxy/patches/002-Change-default-interface-state-to-disabled-wrt-29458.patch delete mode 100644 package/network/services/igmpproxy/patches/003-Restrict-igmp-reports-for-downstream-interfaces-wrt-.patch delete mode 100644 package/network/services/igmpproxy/patches/004-Restrict-igmp-reports-forwarding-to-upstream-interfa.patch delete mode 100644 package/network/services/igmpproxy/patches/010-missing_include.patch delete mode 100644 package/network/services/igmpproxy/patches/020-Silence-downstream-interface-igmp-messages.patch delete mode 100644 package/network/services/igmpproxy/patches/100-use-monotic-clock-instead-of-time-of-day.patch delete mode 100644 package/network/services/igmpproxy/patches/200-allow_wildcard_addr.patch delete mode 100644 package/network/services/igmpproxy/patches/250-fix_multiple_downlink_interfaces.patch delete mode 100644 package/network/services/ipset-dns/patches/100-simultaneous-ipv4-ipv6.patch delete mode 100644 package/network/services/nfs-kernel-server/Makefile delete mode 100644 package/network/services/nfs-kernel-server/files/nfsd.exports delete mode 100644 package/network/services/nfs-kernel-server/files/nfsd.init delete mode 100644 package/network/services/nfs-kernel-server/patches/100-no_malloc_h.patch delete mode 100644 package/network/services/nfs-kernel-server/patches/101-musl-getservbyport.patch delete mode 100644 package/network/services/nfs-kernel-server/patches/102-limits.patch delete mode 100644 package/network/services/openvpn-easy-rsa/files/easy-rsa.index delete mode 100644 package/network/services/openvpn-easy-rsa/files/easy-rsa.serial create mode 100644 package/network/services/openvpn-easy-rsa/files/openvpn-easy-rsa.upgrade delete mode 100644 package/network/services/openvpn-easy-rsa/patches/100-run-ootb.patch delete mode 100644 package/network/services/portmap/Makefile delete mode 100644 package/network/services/portmap/files/portmap.init delete mode 100644 package/network/services/portmap/patches/101-no_pie.patch create mode 100644 package/network/services/samba36/files/lib/samba.sh create mode 100644 package/network/services/samba36/files/samba.hotplug create mode 100644 package/network/services/samba36/patches/028-CVE-2016-2125-v3.6.patch rename package/network/services/samba36/patches/{028-CVE-2017-7494-v3-6.patch => 029-CVE-2017-7494-v3-6.patch} (100%) rename package/network/services/samba36/patches/{029-CVE-2017-15275.patch => 030-CVE-2017-15275-v3.6.patch} (100%) create mode 100644 package/network/services/samba36/patches/031-CVE-2017-12163-v3.6.patch create mode 100644 package/network/services/samba36/patches/032-CVE-2017-12150-v3.6.patch create mode 100644 package/network/services/samba36/patches/032-CVE-2018-1050-v3-6.patch delete mode 100644 package/network/services/shellinabox/Makefile delete mode 100644 package/network/services/shellinabox/files/shellinabox.init delete mode 100644 package/network/services/shellinabox/files/style.css delete mode 100644 package/network/services/shellinabox/old/000-makefile-arch.patch delete mode 100644 package/network/services/shellinabox/old/001-makefile-objcopy.patch delete mode 100644 package/network/services/shellinabox/old/002-httpconn-isnan.patch delete mode 100644 package/network/services/shellinabox/old/readme delete mode 100644 package/network/services/tor/Makefile delete mode 100644 package/network/services/tor/files/tor.init delete mode 100644 package/network/services/tor/patches/001-torrc.patch delete mode 100644 package/network/services/wireguard/patches/100-portability.patch create mode 100644 package/network/utils/adb-enablemodem/Makefile create mode 100644 package/network/utils/adb-enablemodem/files/adb-enablemodem delete mode 100644 package/network/utils/curl/patches/001-curl-https-openssl-fix.patch delete mode 100644 package/network/utils/curl/patches/100-CVE-2017-2629.patch delete mode 100644 package/network/utils/curl/patches/101-CVE-2017-7407.patch delete mode 100644 package/network/utils/curl/patches/102-CVE-2017-7468.patch delete mode 100644 package/network/utils/curl/patches/103-CVE-2017-1000100.patch delete mode 100644 package/network/utils/curl/patches/104-CVE-2017-1000101.patch delete mode 100644 package/network/utils/curl/patches/105-CVE-2017-8816.patch delete mode 100644 package/network/utils/curl/patches/106-CVE-2017-8817.patch delete mode 100644 package/network/utils/curl/patches/320-mbedtls-nonblocking-handshake.patch create mode 100644 package/network/utils/ethtool/Makefile create mode 100644 package/network/utils/iproute2/patches/002-json_print-fix-hidden-64-bit-type-promotion.patch delete mode 100644 package/network/utils/iproute2/patches/006-no_sctp.patch create mode 100644 package/network/utils/iproute2/patches/009-keep_libmnl_optional.patch delete mode 100644 package/network/utils/iproute2/patches/010-type_fixes.patch delete mode 100644 package/network/utils/iproute2/patches/130-missing_include.patch delete mode 100644 package/network/utils/iproute2/patches/910-sanitize_headers_for_musl.patch delete mode 100644 package/network/utils/iproute2/patches/911-fix_in_h_include.patch delete mode 100644 package/network/utils/iproute2/patches/960-ipmonitor-fix-ip-monitor-can-t-work-when-NET_NS-is-n.patch create mode 100644 package/network/utils/ipset/patches/001-Replace-the-last-reference-to-u_int8_t-with-uint8_t.patch create mode 100644 package/network/utils/iptables/patches/030-extensions-libxt_bpf-Fix-build-with-old-kernel-versi.patch delete mode 100644 package/network/utils/iptables/patches/030-no-libnfnetlink.patch delete mode 100644 package/network/utils/iptables/patches/100-bash-location.patch delete mode 100644 package/network/utils/iptables/patches/300-musl_fixes.patch create mode 100644 package/network/utils/iptables/patches/800-flowoffload_target.patch create mode 100644 package/network/utils/linux-atm/patches/501-br2684ctl_itfname.patch delete mode 100644 package/network/utils/nftables/patches/100-disable-doc-generation.patch create mode 100644 package/network/utils/wpan-tools/patches/001-src-nl_extras.h-fix-compatibility-with-libnl-3.3.0.patch delete mode 100644 package/network/utils/xtables-addons/Makefile delete mode 100644 package/network/utils/xtables-addons/patches/002-fix-kernel-version-detection.patch delete mode 100644 package/network/utils/xtables-addons/patches/100-add-rtsp-conntrack.patch delete mode 100644 package/network/utils/xtables-addons/patches/200-add-lua-packetscript.patch delete mode 100644 package/network/utils/xtables-addons/patches/201-fix-lua-packetscript.patch delete mode 100644 package/network/utils/xtables-addons/patches/300-geoip-endian-detection.patch delete mode 100644 package/system/mountd/Makefile delete mode 100644 package/system/mountd/files/mountd.config delete mode 100755 package/system/mountd/files/mountd.init delete mode 100644 package/system/procd/files/nand-preinit.sh delete mode 100644 package/system/procd/files/nand.sh delete mode 100644 package/utils/busybox/patches/002-libbb-send_to_from-do-not-require-that-to-should-hav.patch delete mode 100644 package/utils/busybox/patches/102-trylink_mktemp_fix.patch create mode 100644 package/utils/busybox/patches/111-i386_no_arch_flags.patch delete mode 100644 package/utils/busybox/patches/120-remove_uclibc_rpc_check.patch create mode 100644 package/utils/busybox/patches/204-udhcpc_no_msg_dontroute.patch delete mode 100644 package/utils/busybox/patches/302-netlink-alignment.patch delete mode 100644 package/utils/busybox/patches/303-ip-route-fix-high-table-ids.patch delete mode 100644 package/utils/busybox/patches/401-vi-don-t-touch-file-with-x-when-modified_count-0.patch delete mode 100644 package/utils/busybox/patches/402-vi-avoid-touching-a-new-file-with-ZZ-when-no-editing.patch create mode 100644 package/utils/busybox/patches/500-move-traceroute-applets-to-bin.patch create mode 100644 package/utils/busybox/patches/510-move-passwd-applet-to-bin.patch delete mode 100644 package/utils/busybox/patches/900-fix_cve2017-16544.patch create mode 100644 package/utils/e2fsprogs/patches/000-relocatable.patch delete mode 100644 package/utils/f2fs-tools/patches/100-f2fs-WARNING-at-fs-f2fs-segment.c-718-update_sit_ent.patch create mode 100644 package/utils/fritz-tools/Makefile create mode 100644 package/utils/fritz-tools/README.md create mode 100644 package/utils/fritz-tools/src/CMakeLists.txt create mode 100644 package/utils/fritz-tools/src/fritz_cal_extract.c create mode 100644 package/utils/fritz-tools/src/fritz_tffs_read.c create mode 100644 package/utils/jboot-tools/Makefile create mode 100644 package/utils/jboot-tools/README.md create mode 100644 package/utils/jboot-tools/src/CMakeLists.txt create mode 100644 package/utils/jboot-tools/src/jboot_config_read.c delete mode 100644 package/utils/mdadm/patches/000-compile.patch create mode 100644 package/utils/mdadm/patches/101-mdadm.h-Undefine-dprintf-before-redefining.patch delete mode 100644 package/utils/mtd-utils/patches/010-fix-rpmatch.patch create mode 100644 package/utils/mtd-utils/patches/200-Revert-Return-correct-error-number-in-ubi_get_vol_in.patch delete mode 100644 package/utils/osafeloader/Makefile delete mode 100644 package/utils/osafeloader/src/Makefile delete mode 100644 package/utils/osafeloader/src/md5.c delete mode 100644 package/utils/osafeloader/src/md5.h delete mode 100644 package/utils/osafeloader/src/osafeloader.c delete mode 100644 package/utils/util-linux/patches/001-uclibc_add_libm_to_scriptreplay.patch create mode 100644 package/utils/util-linux/patches/100-use_urandom.patch delete mode 100644 package/utils/xfsprogs/patches/001-automake-compat.patch create mode 100644 package/utils/xfsprogs/patches/100-no-selftest.patch delete mode 100644 package/utils/xfsprogs/patches/100-no_aio.patch create mode 100644 package/utils/xfsprogs/patches/110-subdirs.patch delete mode 100644 package/utils/xfsprogs/patches/110-uclibc_no_ustat.patch create mode 100644 package/utils/xfsprogs/patches/120-disable_assert.patch delete mode 100644 package/utils/xfsprogs/patches/120-portability.patch delete mode 100644 package/utils/xfsprogs/patches/130-uclibc_no_xattr.patch delete mode 100644 package/utils/xfsprogs/patches/140-no_po.patch delete mode 100644 package/utils/xfsprogs/patches/150-include_fixes.patch delete mode 100644 package/utils/xfsprogs/patches/160-format-security.patch mode change 100644 => 100755 scripts/combined-image.sh create mode 100644 scripts/config/images.c create mode 100644 scripts/config/qconf.cc create mode 100644 scripts/config/qconf.h create mode 100755 scripts/flashing/eva_ramboot.py create mode 100755 scripts/gen_image_generic.sh mode change 100644 => 100755 scripts/om-fwupgradecfg-gen.sh delete mode 100644 scripts/openbsd.sh create mode 100755 scripts/qemustart create mode 100644 target/linux/ar71xx/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac rename target/linux/ar71xx/base-files/lib/preinit/{03_preinit_do_ar71xx.sh => 01_preinit_do_ar71xx.sh} (100%) delete mode 100644 target/linux/ar71xx/config-4.4 create mode 100644 target/linux/ar71xx/config-4.9 create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-ap531b0.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-ap91-5g.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c25-v1.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c59-v1.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c60-v1.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-archer-c7-v4.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-dap-1330-a1.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-e1700ac-v2.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-e600g-v2.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-ens202ext.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-ew-balin.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-fritz300e.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-fritz4020.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar750.c create mode 100755 target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar750s.c delete mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-gs-minibox-v1.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-gs-oolite-v1.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-gs-oolite-v5-2.c delete mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-gs-oolite.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-hiveap-121.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-koala.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-lan-turtle.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-lima.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-n5q.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-pqi-air-pen.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-r36a.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-r602n.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-rambutan.c delete mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-rb941.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-rbspi.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-rme-eg200.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-rut9xx.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-sc1750.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-sc300m.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-sc450.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-t830.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr6400.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr902ac-v1.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr942n-v1.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-ts-d084.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-wam250.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-wi2a-ac200i.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-wifi-pineapple-nano.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-wpj563.c delete mode 100644 target/linux/ar71xx/files/drivers/mtd/nand/ath79_spinand.c create mode 100644 target/linux/ar71xx/image/common-tp-link.mk create mode 100644 target/linux/ar71xx/image/generic-legacy-devices.mk create mode 100644 target/linux/ar71xx/image/generic-senao.mk create mode 100644 target/linux/ar71xx/image/generic-tp-link.mk create mode 100644 target/linux/ar71xx/image/generic-ubnt.mk delete mode 100644 target/linux/ar71xx/image/legacy-devices.mk create mode 100644 target/linux/ar71xx/image/tiny-legacy-devices.mk create mode 100644 target/linux/ar71xx/image/tiny-tp-link.mk delete mode 100644 target/linux/ar71xx/image/tp-link.mk delete mode 100644 target/linux/ar71xx/image/ubinize-gl-ar300m.ini delete mode 100644 target/linux/ar71xx/image/ubnt.mk delete mode 100644 target/linux/ar71xx/patches-4.4/002-add_back_gpio_function_select.patch delete mode 100644 target/linux/ar71xx/patches-4.4/004-register_gpio_driver_earlier.patch delete mode 100644 target/linux/ar71xx/patches-4.4/101-MIPS-ath79-make-ath79_ddr_ctrl_init-compatible-for-n.patch delete mode 100644 target/linux/ar71xx/patches-4.4/200-MIPS-ath79-fix-ar933x-wmac-reset.patch delete mode 100644 target/linux/ar71xx/patches-4.4/202-MIPS-ath79-ar934x-wmac-revision.patch delete mode 100644 target/linux/ar71xx/patches-4.4/203-MIPS-ath79-fix-restart.patch delete mode 100644 target/linux/ar71xx/patches-4.4/310-lib-add-rle-decompression.patch delete mode 100644 target/linux/ar71xx/patches-4.4/403-mtd_fix_cfi_cmdset_0002_status_check.patch delete mode 100644 target/linux/ar71xx/patches-4.4/404-mtd-cybertan-trx-parser.patch delete mode 100644 target/linux/ar71xx/patches-4.4/405-mtd-tp-link-partition-parser.patch delete mode 100644 target/linux/ar71xx/patches-4.4/407-mtd-m25p80-allow-to-pass-probe-types-via-platform-data.patch delete mode 100644 target/linux/ar71xx/patches-4.4/409-mtd-rb4xx_nand_driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/410-mtd-rb750-nand-driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/411-mtd-cfi_cmdset_0002-force-word-write.patch delete mode 100644 target/linux/ar71xx/patches-4.4/412-mtd-m25p80-zero-partition-parser-data.patch delete mode 100644 target/linux/ar71xx/patches-4.4/413-mtd-ar934x-nand-driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/414-mtd-rb91x-nand-driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/423-dsa-add-88e6063-driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/430-drivers-link-spi-before-mtd.patch delete mode 100644 target/linux/ar71xx/patches-4.4/435-spi-vsc7385_driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/440-leds-wndr3700-usb-led-driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/441-leds-rb750-led-driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/450-gpio-nxp-74hc153-gpio-chip-driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/451-gpio-74x164-improve-platform-device-support.patch delete mode 100644 target/linux/ar71xx/patches-4.4/452-gpio-add-gpio-latch-driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/460-m25p80-spi-read-flash-check.patch delete mode 100644 target/linux/ar71xx/patches-4.4/461-spi-ath79-add-fast-flash-read.patch delete mode 100644 target/linux/ar71xx/patches-4.4/490-usb-ehci-add-quirks-for-qca-socs.patch delete mode 100644 target/linux/ar71xx/patches-4.4/500-MIPS-fw-myloader.patch delete mode 100644 target/linux/ar71xx/patches-4.4/501-MIPS-ath79-add-mac-argument-to-ath79_register_wmac.patch delete mode 100644 target/linux/ar71xx/patches-4.4/504-MIPS-ath79-add-ath79_device_reset_get.patch delete mode 100644 target/linux/ar71xx/patches-4.4/505-MIPS-ath79-add-ath79_gpio_function_select.patch delete mode 100644 target/linux/ar71xx/patches-4.4/509-MIPS-ath79-process-board-kernel-option.patch delete mode 100644 target/linux/ar71xx/patches-4.4/522-MIPS-ath79-add-ath79_wmac_register_simple-helper.patch delete mode 100644 target/linux/ar71xx/patches-4.4/523-MIPS-ath79-OTP-support.patch delete mode 100644 target/linux/ar71xx/patches-4.4/524-MIPS-ath79-add-ath79_wmac_disable_25ghz-helpers.patch delete mode 100644 target/linux/ar71xx/patches-4.4/601-MIPS-ath79-add-more-register-defines.patch delete mode 100644 target/linux/ar71xx/patches-4.4/602-MIPS-ath79-add-openwrt-stuff.patch delete mode 100644 target/linux/ar71xx/patches-4.4/611-MIPS-ath79-wdt-timeout.patch delete mode 100644 target/linux/ar71xx/patches-4.4/612-MIPS-ath79-set-buffalo-txgain.patch delete mode 100644 target/linux/ar71xx/patches-4.4/613-MIPS-ath79-add-ath79_wmac_setup_ext_lna_gpio-helper.patch delete mode 100644 target/linux/ar71xx/patches-4.4/620-MIPS-ath79-add-support-for-QCA953x-SoC.patch delete mode 100644 target/linux/ar71xx/patches-4.4/621-MIPS-ath79-add-support-for-QCA956x-SoC.patch delete mode 100644 target/linux/ar71xx/patches-4.4/622-MIPS-ath79-add-more-register-defines-for-QCA956x-SoC.patch delete mode 100644 target/linux/ar71xx/patches-4.4/630-MIPS-ath79-fix-chained-irq-disable.patch delete mode 100644 target/linux/ar71xx/patches-4.4/631-MIPS-ath79-wmac-enable-set-led-pin.patch delete mode 100644 target/linux/ar71xx/patches-4.4/632-MIPS-ath79-gpio-enable-set-direction.patch delete mode 100644 target/linux/ar71xx/patches-4.4/634-MIPS-ath79-ar724x-clock-calculation-fixes.patch delete mode 100644 target/linux/ar71xx/patches-4.4/640-MIPS-ath79-add-QCA955x-wmac-reset.patch delete mode 100644 target/linux/ar71xx/patches-4.4/700-MIPS-ath79-add-openwrt-Kconfig.patch delete mode 100644 target/linux/ar71xx/patches-4.4/701-MIPS-ath79-add-routerboard-detection.patch delete mode 100644 target/linux/ar71xx/patches-4.4/818-MIPS-ath79-add-nu801-led-driver.patch delete mode 100644 target/linux/ar71xx/patches-4.4/820-MIPS-ath79-add_gpio_function2_setup.patch delete mode 100644 target/linux/ar71xx/patches-4.4/821-serial-core-add-support-for-boot-console-with-arbitr.patch delete mode 100644 target/linux/ar71xx/patches-4.4/900-mdio_bitbang_ignore_ta_value.patch delete mode 100644 target/linux/ar71xx/patches-4.4/901-phy-mdio-bitbang-prevent-rescheduling-during-command.patch delete mode 100644 target/linux/ar71xx/patches-4.4/902-at803x-add-reset-gpio-pdata.patch delete mode 100644 target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch delete mode 100644 target/linux/ar71xx/patches-4.4/911-add-ar300m-nand-support.patch delete mode 100644 target/linux/ar71xx/patches-4.4/912-ar300m-add-FW-PM-spinand.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/001-spi-cs-gpio.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/002-add_back_gpio_function_select.patch create mode 100644 target/linux/ar71xx/patches-4.9/004-register_gpio_driver_earlier.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/100-MIPS-ath79-Avoid-using-unitialized-reg-variable.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/103-MIPS-ath79-fix-register-address-in-ath79_ddr_wb_flus.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/104-spi-spi-ath79-support-multiple-internal-chip-select-.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/105-spi-spi-ath79-use-gpio_set_value_cansleep-for-GPIO-c.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/106-02-MIPS-ath79-do-AR724x-PCIe-root-complex-init.patch create mode 100644 target/linux/ar71xx/patches-4.9/200-MIPS-ath79-fix-ar933x-wmac-reset.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/201-ar913x_wmac_external_reset.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/202-MIPS-ath79-ar934x-wmac-revision.patch create mode 100644 target/linux/ar71xx/patches-4.9/203-MIPS-ath79-fix-restart.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/220-add_cpu_feature_overrides.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/300-MIPS-add-MIPS_MACHINE_NONAME-macro.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/310-lib-add-rle-decompression.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/401-mtd-physmap-add-lock-unlock.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/402-mtd-SST39VF6401B-support.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch create mode 100644 target/linux/ar71xx/patches-4.9/404-mtd-cybertan-trx-parser.patch create mode 100644 target/linux/ar71xx/patches-4.9/405-mtd-tp-link-partition-parser.patch create mode 100644 target/linux/ar71xx/patches-4.9/407-mtd-m25p80-allow-to-pass-probe-types-via-platform-data.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/408-mtd-redboot_partition_scan.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/409-mtd-rb4xx_nand_driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/410-mtd-rb750-nand-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch create mode 100644 target/linux/ar71xx/patches-4.9/413-mtd-ar934x-nand-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/414-mtd-rb91x-nand-driver.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/420-net-ar71xx_mac_driver.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/423-dsa-add-88e6063-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/430-drivers-link-spi-before-mtd.patch create mode 100644 target/linux/ar71xx/patches-4.9/432-spi-rb4xx-spi-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/433-spi-rb4xx-cpld-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/435-spi-vsc7385_driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/440-leds-wndr3700-usb-led-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/441-leds-rb750-led-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/442-leds-gpio-allow-to-use-OPEN_-DRAIN-SOURCE-flags-with.patch create mode 100644 target/linux/ar71xx/patches-4.9/450-gpio-nxp-74hc153-gpio-chip-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/451-gpio-74x164-improve-platform-device-support.patch create mode 100644 target/linux/ar71xx/patches-4.9/452-gpio-add-gpio-latch-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/461-spi-ath79-add-fast-flash-read.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/470-MIPS-ath79-swizzle-pci-address-for-ar71xx.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/490-usb-ehci-add-quirks-for-qca-socs.patch create mode 100644 target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch create mode 100644 target/linux/ar71xx/patches-4.9/501-MIPS-ath79-add-mac-argument-to-ath79_register_wmac.patch create mode 100644 target/linux/ar71xx/patches-4.9/504-MIPS-ath79-add-ath79_device_reset_get.patch create mode 100644 target/linux/ar71xx/patches-4.9/505-MIPS-ath79-add-ath79_gpio_function_select.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/506-MIPS-ath79-prom-parse-redboot-args.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/507-MIPS-ath79-prom-add-myloader-support.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/508-MIPS-ath79-prom-image-command-line-hack.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/509-MIPS-ath79-process-board-kernel-option.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/510-MIPS-ath79-init-gpio-pin-of-wmac-device.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/520-MIPS-ath79-enable-UART-function.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/521-MIPS-ath79-enable-UART-for-early_serial.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/522-MIPS-ath79-add-ath79_wmac_register_simple-helper.patch create mode 100644 target/linux/ar71xx/patches-4.9/523-MIPS-ath79-OTP-support.patch create mode 100644 target/linux/ar71xx/patches-4.9/524-MIPS-ath79-add-ath79_wmac_disable_25ghz-helpers.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/525-MIPS-ath79-enable-qca-usb-quirks.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/601-MIPS-ath79-add-more-register-defines.patch create mode 100644 target/linux/ar71xx/patches-4.9/602-MIPS-ath79-add-openwrt-stuff.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/603-MIPS-ath79-ap121-fixes.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/605-MIPS-ath79-db120-fixes.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/606-MIPS-ath79-pb44-fixes.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/607-MIPS-ath79-ubnt-xm-fixes.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/608-MIPS-ath79-ubnt-xm-add-more-boards.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/609-MIPS-ath79-ap136-fixes.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/611-MIPS-ath79-wdt-timeout.patch create mode 100644 target/linux/ar71xx/patches-4.9/612-MIPS-ath79-set-buffalo-txgain.patch create mode 100644 target/linux/ar71xx/patches-4.9/613-MIPS-ath79-add-ath79_wmac_setup_ext_lna_gpio-helper.patch create mode 100644 target/linux/ar71xx/patches-4.9/620-MIPS-ath79-add-support-for-QCA953x-SoC.patch create mode 100644 target/linux/ar71xx/patches-4.9/621-MIPS-ath79-add-support-for-QCA956x-SoC.patch create mode 100644 target/linux/ar71xx/patches-4.9/622-MIPS-ath79-add-more-register-defines-for-QCA956x-SoC.patch create mode 100644 target/linux/ar71xx/patches-4.9/630-MIPS-ath79-fix-chained-irq-disable.patch create mode 100644 target/linux/ar71xx/patches-4.9/631-MIPS-ath79-wmac-enable-set-led-pin.patch create mode 100644 target/linux/ar71xx/patches-4.9/632-MIPS-ath79-gpio-enable-set-direction.patch create mode 100644 target/linux/ar71xx/patches-4.9/640-MIPS-ath79-add-QCA955x-wmac-reset.patch create mode 100644 target/linux/ar71xx/patches-4.9/700-MIPS-ath79-add-openwrt-Kconfig.patch create mode 100644 target/linux/ar71xx/patches-4.9/701-MIPS-ath79-add-routerboard-detection.patch create mode 100644 target/linux/ar71xx/patches-4.9/702-MIPS-ath79-fixup-routerboot-board-parameter.patch rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch (100%) rename target/linux/ar71xx/{patches-4.4 => patches-4.9}/740-MIPS-ath79-add-PCI-for-QCA953x-SoC.patch (100%) create mode 100644 target/linux/ar71xx/patches-4.9/741-MIPS-ath79-add-PCI-for-QCA9556-SoC.patch create mode 100644 target/linux/ar71xx/patches-4.9/818-MIPS-ath79-add-nu801-led-driver.patch create mode 100644 target/linux/ar71xx/patches-4.9/820-MIPS-ath79-add_gpio_function2_setup.patch create mode 100644 target/linux/ar71xx/patches-4.9/900-mdio_bitbang_ignore_ta_value.patch create mode 100644 target/linux/ar71xx/patches-4.9/901-phy-mdio-bitbang-prevent-rescheduling-during-command.patch create mode 100644 target/linux/ar71xx/patches-4.9/902-at803x-add-reset-gpio-pdata.patch create mode 100644 target/linux/ar71xx/patches-4.9/910-unaligned_access_hacks.patch create mode 100644 target/linux/ar71xx/patches-4.9/920-usb-chipidea-AR933x-platform-support.patch create mode 100644 target/linux/ar71xx/patches-4.9/921-MIPS-ath79-add-even-more-register-defines-for-QCA956x-SoC.patch create mode 100644 target/linux/ar71xx/patches-4.9/930-chipidea-pullup.patch create mode 100644 target/linux/ar71xx/tiny/config-default create mode 100644 target/linux/ar71xx/tiny/profiles/00-default.mk create mode 100644 target/linux/ar71xx/tiny/target.mk delete mode 100644 target/linux/arm64/Makefile delete mode 100644 target/linux/arm64/README delete mode 100644 target/linux/arm64/base-files/etc/inittab delete mode 100644 target/linux/arm64/config-4.4 delete mode 100644 target/linux/arm64/image/Makefile delete mode 100644 target/linux/arm64/image/boot-wrapper/Makefile delete mode 100644 target/linux/armvirt/Makefile delete mode 100644 target/linux/armvirt/README delete mode 100755 target/linux/armvirt/base-files/etc/board.d/00_model delete mode 100644 target/linux/armvirt/base-files/etc/inittab delete mode 100644 target/linux/armvirt/config-default delete mode 100644 target/linux/armvirt/image/Makefile create mode 100644 target/linux/generic/backport-4.14/010-Kbuild-don-t-hardcode-path-to-awk-in-scripts-ld-vers.patch create mode 100644 target/linux/generic/backport-4.14/011-kbuild-export-SUBARCH.patch create mode 100644 target/linux/generic/backport-4.14/020-backport_netfilter_rtcache.patch create mode 100644 target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch create mode 100644 target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch create mode 100644 target/linux/generic/backport-4.14/030-v4.17-0001-usb-dwc2-add-support-for-host-mode-external-vbus-sup.patch create mode 100644 target/linux/generic/backport-4.14/030-v4.17-0002-usb-dwc2-dwc2_vbus_supply_init-fix-error-check.patch create mode 100644 target/linux/generic/backport-4.14/040-v4.17-0001-mtd-move-code-adding-master-MTD-out-of-mtd_add_devic.patch create mode 100644 target/linux/generic/backport-4.14/040-v4.17-0002-mtd-get-rid-of-the-mtd_add_device_partitions.patch create mode 100644 target/linux/generic/backport-4.14/041-v4.17-0001-mtd-partitions-add-of_match_table-parser-matching-fo.patch create mode 100644 target/linux/generic/backport-4.14/041-v4.17-0002-mtd-rename-ofpart-parser-to-fixed-partitions-as-it-f.patch create mode 100644 target/linux/generic/backport-4.14/041-v4.17-0003-mtd-ofpart-add-of_match_table-with-fixed-partitions.patch create mode 100644 target/linux/generic/backport-4.14/042-v4.18-0001-mtd-move-code-adding-registering-partitions-to-the-p.patch create mode 100644 target/linux/generic/backport-4.14/043-v4.18-mtd-bcm47xxpart-improve-handling-TRX-partition-size.patch create mode 100644 target/linux/generic/backport-4.14/071-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch create mode 100644 target/linux/generic/backport-4.14/076-v4.15-0001-net-phy-broadcom-support-new-device-flag-for-setting.patch create mode 100644 target/linux/generic/backport-4.14/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch create mode 100644 target/linux/generic/backport-4.14/300-v4.16-netfilter-nf_tables-explicit-nft_set_pktinfo-call-fr.patch create mode 100644 target/linux/generic/backport-4.14/301-v4.16-netfilter-core-only-allow-one-nat-hook-per-hook-poin.patch create mode 100644 target/linux/generic/backport-4.14/302-v4.16-netfilter-nf_tables_inet-don-t-use-multihook-infrast.patch create mode 100644 target/linux/generic/backport-4.14/303-v4.16-netfilter-nf_tables-remove-multihook-chains-and-fami.patch create mode 100644 target/linux/generic/backport-4.14/304-v4.16-netfilter-move-checksum-indirection-to-struct-nf_ipv.patch create mode 100644 target/linux/generic/backport-4.14/305-v4.16-netfilter-move-checksum_partial-indirection-to-struc.patch create mode 100644 target/linux/generic/backport-4.14/306-v4.16-netfilter-remove-saveroute-indirection-in-struct-nf_.patch create mode 100644 target/linux/generic/backport-4.14/307-v4.16-netfilter-move-route-indirection-to-struct-nf_ipv6_o.patch create mode 100644 target/linux/generic/backport-4.14/308-v4.16-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch create mode 100644 target/linux/generic/backport-4.14/309-v4.16-netfilter-remove-route_key_size-field-in-struct-nf_a.patch create mode 100644 target/linux/generic/backport-4.14/310-v4.16-netfilter-remove-struct-nf_afinfo-and-its-helper-fun.patch create mode 100644 target/linux/generic/backport-4.14/311-v4.16-netfilter-nf_tables_arp-don-t-set-forward-chain.patch create mode 100644 target/linux/generic/backport-4.14/312-v4.16-netfilter-nf_tables-remove-hooks-from-family-definit.patch create mode 100644 target/linux/generic/backport-4.14/313-v4.16-netfilter-remove-defensive-check-on-malformed-packet.patch create mode 100644 target/linux/generic/backport-4.14/314-v4.16-netfilter-meta-secpath-support.patch create mode 100644 target/linux/generic/backport-4.14/315-v4.15-netfilter-conntrack-move-nf_ct_netns_-get-put-to-cor.patch create mode 100644 target/linux/generic/backport-4.14/320-v4.16-netfilter-nf_conntrack-add-IPS_OFFLOAD-status-bit.patch create mode 100644 target/linux/generic/backport-4.14/321-v4.16-netfilter-nf_tables-add-flow-table-netlink-frontend.patch create mode 100644 target/linux/generic/backport-4.14/322-v4.16-netfilter-add-generic-flow-table-infrastructure.patch create mode 100644 target/linux/generic/backport-4.14/323-v4.16-netfilter-flow-table-support-for-IPv4.patch create mode 100644 target/linux/generic/backport-4.14/324-v4.16-netfilter-flow-table-support-for-IPv6.patch create mode 100644 target/linux/generic/backport-4.14/325-v4.16-netfilter-flow-table-support-for-the-mixed-IPv4-IPv6.patch create mode 100644 target/linux/generic/backport-4.14/326-v4.16-netfilter-nf_tables-flow-offload-expression.patch create mode 100644 target/linux/generic/backport-4.14/327-v4.16-netfilter-nf_tables-remove-nhooks-field-from-struct-.patch create mode 100644 target/linux/generic/backport-4.14/328-v4.16-netfilter-nf_tables-fix-a-typo-in-nf_tables_getflowt.patch create mode 100644 target/linux/generic/backport-4.14/329-v4.16-netfilter-improve-flow-table-Kconfig-dependencies.patch create mode 100644 target/linux/generic/backport-4.14/330-v4.16-netfilter-nf_tables-remove-flag-field-from-struct-nf.patch create mode 100644 target/linux/generic/backport-4.14/331-v4.16-netfilter-nf_tables-no-need-for-struct-nft_af_info-t.patch create mode 100644 target/linux/generic/backport-4.14/332-v4.16-netfilter-nf_tables-remove-struct-nft_af_info-parame.patch create mode 100644 target/linux/generic/backport-4.14/334-v4.15-netfilter-nf_tables-fix-potential-NULL-ptr-deref-in-.patch create mode 100644 target/linux/generic/backport-4.14/335-v4.16-netfilter-nf_tables-add-single-table-list-for-all-fa.patch create mode 100644 target/linux/generic/backport-4.14/336-v4.15-netfilter-exit_net-cleanup-check-added.patch create mode 100644 target/linux/generic/backport-4.14/337-v4.16-netfilter-nf_tables-get-rid-of-pernet-families.patch create mode 100644 target/linux/generic/backport-4.14/338-v4.16-netfilter-nf_tables-get-rid-of-struct-nft_af_info-ab.patch create mode 100644 target/linux/generic/backport-4.14/339-v4.16-netfilter-nft_flow_offload-wait-for-garbage-collecto.patch create mode 100644 target/linux/generic/backport-4.14/340-v4.16-netfilter-nft_flow_offload-no-need-to-flush-entries-.patch create mode 100644 target/linux/generic/backport-4.14/341-v4.16-netfilter-nft_flow_offload-move-flowtable-cleanup-ro.patch create mode 100644 target/linux/generic/backport-4.14/342-v4.16-netfilter-nf_tables-fix-flowtable-free.patch create mode 100644 target/linux/generic/backport-4.14/343-netfilter-nft_flow_offload-handle-netdevice-events-f.patch create mode 100644 target/linux/generic/backport-4.14/344-v4.16-netfilter-nf_tables-allocate-handle-and-delete-objec.patch create mode 100644 target/linux/generic/backport-4.14/345-v4.16-netfilter-nf_flow_offload-fix-use-after-free-and-a-r.patch create mode 100644 target/linux/generic/backport-4.14/346-v4.16-netfilter-flowtable-infrastructure-depends-on-NETFIL.patch create mode 100644 target/linux/generic/backport-4.14/347-v4.16-netfilter-remove-duplicated-include.patch create mode 100644 target/linux/generic/backport-4.14/348-v4.18-netfilter-nf_flow_table-use-IP_CT_DIR_-values-for-FL.patch create mode 100644 target/linux/generic/backport-4.14/349-v4.18-netfilter-nf_flow_table-clean-up-flow_offload_alloc.patch create mode 100644 target/linux/generic/backport-4.14/350-v4.18-ipv6-make-ip6_dst_mtu_forward-inline.patch create mode 100644 target/linux/generic/backport-4.14/351-v4.18-netfilter-nf_flow_table-cache-mtu-in-struct-flow_off.patch create mode 100644 target/linux/generic/backport-4.14/352-v4.18-netfilter-nf_flow_table-rename-nf_flow_table.c-to-nf.patch create mode 100644 target/linux/generic/backport-4.14/353-v4.18-netfilter-nf_flow_table-move-ipv4-offload-hook-code-.patch create mode 100644 target/linux/generic/backport-4.14/354-v4.18-netfilter-nf_flow_table-move-ip-header-check-out-of-.patch create mode 100644 target/linux/generic/backport-4.14/355-v4.18-netfilter-nf_flow_table-move-ipv6-offload-hook-code-.patch create mode 100644 target/linux/generic/backport-4.14/356-v4.18-netfilter-nf_flow_table-relax-mixed-ipv4-ipv6-flowta.patch create mode 100644 target/linux/generic/backport-4.14/357-v4.18-netfilter-nf_flow_table-move-init-code-to-nf_flow_ta.patch create mode 100644 target/linux/generic/backport-4.14/358-v4.18-netfilter-nf_flow_table-fix-priv-pointer-for-netdev-.patch create mode 100644 target/linux/generic/backport-4.14/359-v4.18-netfilter-nf_flow_table-track-flow-tables-in-nf_flow.patch create mode 100644 target/linux/generic/backport-4.14/360-v4.18-netfilter-nf_flow_table-make-flow_offload_dead-inlin.patch create mode 100644 target/linux/generic/backport-4.14/361-v4.18-netfilter-nf_flow_table-add-a-new-flow-state-for-tea.patch create mode 100644 target/linux/generic/backport-4.14/362-v4.18-netfilter-nf_flow_table-in-flow_offload_lookup-skip-.patch create mode 100644 target/linux/generic/backport-4.14/363-v4.18-netfilter-nf_flow_table-add-support-for-sending-flow.patch create mode 100644 target/linux/generic/backport-4.14/364-v4.18-netfilter-nf_flow_table-tear-down-TCP-flows-if-RST-o.patch create mode 100644 target/linux/generic/backport-4.14/365-v4.16-netfilter-nf_flow_table-fix-checksum-when-handling-D.patch create mode 100644 target/linux/generic/backport-4.14/366-netfilter-nf_flow_table-clean-up-and-fix-dst-handlin.patch create mode 100644 target/linux/generic/backport-4.14/367-v4.18-netfilter-nf_flow_table-add-missing-condition-for-TC.patch create mode 100644 target/linux/generic/backport-4.14/368-v4.18-netfilter-nf_flow_table-fix-offloading-connections-w.patch create mode 100644 target/linux/generic/backport-4.14/369-v4.18-netfilter-nf_flow_table-attach-dst-to-skbs.patch create mode 100644 target/linux/generic/backport-4.9/010-Kbuild-don-t-hardcode-path-to-awk-in-scripts-ld-vers.patch create mode 100644 target/linux/generic/backport-4.9/011-kbuild-export-SUBARCH.patch create mode 100644 target/linux/generic/backport-4.9/020-backport_netfilter_rtcache.patch create mode 100644 target/linux/generic/backport-4.9/021-bridge-multicast-to-unicast.patch create mode 100644 target/linux/generic/backport-4.9/022-net-add-devm-version-of-alloc_etherdev_mqs-function.patch create mode 100644 target/linux/generic/backport-4.9/023-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch create mode 100644 target/linux/generic/backport-4.9/023-6-ch9200-use-skb_cow_head-to-deal-with-cloned-skbs.patch create mode 100644 target/linux/generic/backport-4.9/023-7-kaweth-use-skb_cow_head-to-deal-with-cloned-skbs.patch create mode 100644 target/linux/generic/backport-4.9/024-1-tcp-tsq-add-tsq_flags-tsq_enum.patch create mode 100644 target/linux/generic/backport-4.9/024-2-tcp-tsq-remove-one-locked-operation-in-tcp_wfree.patch create mode 100644 target/linux/generic/backport-4.9/024-3-tcp-tsq-add-shortcut-in-tcp_tasklet_func.patch create mode 100644 target/linux/generic/backport-4.9/024-4-tcp-tsq-avoid-one-atomic-in-tcp_wfree.patch create mode 100644 target/linux/generic/backport-4.9/024-5-tcp-tsq-add-a-shortcut-in-tcp_small_queue_check.patch create mode 100644 target/linux/generic/backport-4.9/024-6-tcp-tcp_mtu_probe-is-likely-to-exit-early.patch create mode 100644 target/linux/generic/backport-4.9/024-7-net-reorganize-struct-sock-for-better-data-locality.patch create mode 100644 target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch create mode 100644 target/linux/generic/backport-4.9/024-9-tcp-add-a-missing-barrier-in-tcp_tasklet_func.patch create mode 100644 target/linux/generic/backport-4.9/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch create mode 100644 target/linux/generic/backport-4.9/030-01-ubifs-Drop-softlimit-and-delta-fields-from-struct-ub.patch create mode 100644 target/linux/generic/backport-4.9/030-02-ubifs-Use-dirty_writeback_interval-value-for-wbuf-ti.patch create mode 100644 target/linux/generic/backport-4.9/050-usb-dwc2-Remove-unnecessary-kfree.patch create mode 100644 target/linux/generic/backport-4.9/060-0002-mtd-bcm47xxsflash-use-platform_-set-get-_drvdata.patch create mode 100644 target/linux/generic/backport-4.9/060-0003-mtd-bcm47xxsflash-support-reading-flash-out-of-mappi.patch create mode 100644 target/linux/generic/backport-4.9/060-0004-mtd-bcm47xxpart-move-TRX-parsing-code-to-separated-f.patch create mode 100644 target/linux/generic/backport-4.9/060-0005-mtd-bcm47xxpart-support-layouts-with-multiple-TRX-pa.patch create mode 100644 target/linux/generic/backport-4.9/061-v4.10-0001-mtd-spi-nor-add-Macronix-mx25u25635f-to-list-of-know.patch create mode 100644 target/linux/generic/backport-4.9/061-v4.10-0002-mtd-spi-nor-fix-spansion-quad-enable.patch create mode 100644 target/linux/generic/backport-4.9/061-v4.10-0003-mtd-spi-nor-fix-flags-for-s25fl128s.patch create mode 100644 target/linux/generic/backport-4.9/061-v4.10-0004-mtd-spi-nor-add-support-for-s25fl208k.patch create mode 100644 target/linux/generic/backport-4.9/061-v4.10-0005-mtd-spi-nor-Add-at25df321-spi-nor-flash-support.patch create mode 100644 target/linux/generic/backport-4.9/061-v4.10-0006-mtd-spi-nor-Add-support-for-N25Q016A.patch create mode 100644 target/linux/generic/backport-4.9/061-v4.10-0007-mtd-spi-nor-Add-support-for-mr25h40.patch create mode 100644 target/linux/generic/backport-4.9/062-v4.11-0001-mtd-spi-nor-Add-support-for-S3AN-spi-nor-devices.patch create mode 100644 target/linux/generic/backport-4.9/062-v4.11-0002-mtd-spi-nor-improve-macronix_quad_enable.patch create mode 100644 target/linux/generic/backport-4.9/062-v4.11-0003-mtd-spi-nor-remove-WARN_ONCE-message-in-spi_nor_writ.patch create mode 100644 target/linux/generic/backport-4.9/062-v4.11-0004-mtd-spi-nor-rename-SPINOR_OP_-macros-of-the-4-byte-a.patch create mode 100644 target/linux/generic/backport-4.9/062-v4.11-0005-mtd-spi-nor-add-a-stateless-method-to-support-memory.patch create mode 100644 target/linux/generic/backport-4.9/062-v4.11-0006-mtd-spi-nor-Add-lock-unlock-support-for-f25l32pa.patch create mode 100644 target/linux/generic/backport-4.9/062-v4.11-0007-mtd-spi-nor-Fix-S3AN-addressing-calculation.patch create mode 100644 target/linux/generic/backport-4.9/062-v4.11-0008-mtd-spi-nor-Add-support-for-gd25q16.patch create mode 100644 target/linux/generic/backport-4.9/063-v4.11-0001-mtd-nand-Add-Winbond-manufacturer-id.patch create mode 100644 target/linux/generic/backport-4.9/063-v4.11-0002-mtd-introduce-function-max_bad_blocks.patch create mode 100644 target/linux/generic/backport-4.9/063-v4.11-0003-mtd-Add-partition-device-node-to-mtd-partition-devic.patch create mode 100644 target/linux/generic/backport-4.9/064-v4.12-mtd-spi-nor-enable-stateless-4b-op-codes-for-mx25u25.patch create mode 100644 target/linux/generic/backport-4.9/065-v4.13-0001-mtd-handle-partitioning-on-devices-with-0-erasesize.patch create mode 100644 target/linux/generic/backport-4.9/065-v4.13-0002-mtd-partitions-factor-out-code-calling-parser.patch create mode 100644 target/linux/generic/backport-4.9/065-v4.13-0003-mtd-partitions-add-helper-for-deleting-partition.patch create mode 100644 target/linux/generic/backport-4.9/065-v4.13-0004-mtd-partitions-remove-sysfs-files-when-deleting-all-.patch create mode 100644 target/linux/generic/backport-4.9/065-v4.13-0005-mtd-partitions-rename-master-to-the-parent-where-app.patch create mode 100644 target/linux/generic/backport-4.9/065-v4.13-0006-mtd-partitions-add-support-for-subpartitions.patch create mode 100644 target/linux/generic/backport-4.9/065-v4.13-0007-mtd-partitions-add-support-for-partition-parsers.patch create mode 100644 target/linux/generic/backport-4.9/065-v4.13-0008-mtd-extract-TRX-parser-out-of-bcm47xxpart-into-a-sep.patch create mode 100644 target/linux/generic/backport-4.9/066-v4.17-0001-mtd-move-code-adding-master-MTD-out-of-mtd_add_devic.patch create mode 100644 target/linux/generic/backport-4.9/066-v4.17-0002-mtd-get-rid-of-the-mtd_add_device_partitions.patch create mode 100644 target/linux/generic/backport-4.9/067-v4.17-0001-mtd-partitions-add-of_match_table-parser-matching-fo.patch create mode 100644 target/linux/generic/backport-4.9/067-v4.17-0002-mtd-rename-ofpart-parser-to-fixed-partitions-as-it-f.patch create mode 100644 target/linux/generic/backport-4.9/067-v4.17-0003-mtd-ofpart-add-of_match_table-with-fixed-partitions.patch create mode 100644 target/linux/generic/backport-4.9/068-v4.18-0001-mtd-move-code-adding-registering-partitions-to-the-p.patch create mode 100644 target/linux/generic/backport-4.9/069-v4.18-mtd-bcm47xxpart-improve-handling-TRX-partition-size.patch create mode 100644 target/linux/generic/backport-4.9/070-bcma-from-4.11.patch create mode 100644 target/linux/generic/backport-4.9/071-v4.10-0001-net-bgmac-allocate-struct-bgmac-just-once-don-t-copy.patch create mode 100644 target/linux/generic/backport-4.9/071-v4.10-0002-net-bgmac-drop-struct-bcma_mdio-we-don-t-need-anymor.patch create mode 100644 target/linux/generic/backport-4.9/071-v4.10-0003-net-bgmac-use-PHY-subsystem-for-initializing-PHY.patch create mode 100644 target/linux/generic/backport-4.9/071-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch create mode 100644 target/linux/generic/backport-4.9/072-bcma-from-4.12.patch create mode 100644 target/linux/generic/backport-4.9/080-0001-leds-core-add-OF-variants-of-LED-registering-functio.patch create mode 100644 target/linux/generic/backport-4.9/080-0002-leds-gpio-use-OF-variant-of-LED-registering-function.patch create mode 100644 target/linux/generic/backport-4.9/081-0001-thermal-bcm2835-add-thermal-driver-for-bcm2835-SoC.patch rename target/linux/generic/{patches-4.4/084-0003-usb-core-read-USB-ports-from-DT-in-the-usbport-LED-t.patch => backport-4.9/082-0001-usb-core-read-USB-ports-from-DT-in-the-usbport-LED-t.patch} (100%) create mode 100644 target/linux/generic/backport-4.9/087-regmap-make-LZO-cache-optional.patch create mode 100644 target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch create mode 100644 target/linux/generic/backport-4.9/092-netfilter-nf_tables-fix-mismatch-in-big-endian-syste.patch create mode 100644 target/linux/generic/backport-4.9/094-v4.12-0001-ip6_tunnel-Fix-missing-tunnel-encapsulation-limit-op.patch create mode 100644 target/linux/generic/backport-4.9/094-v4.12-0002-ipv6-Need-to-export-ipv6_push_frag_opts-for-tunnelin.patch create mode 100644 target/linux/generic/backport-4.9/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch create mode 100644 target/linux/generic/config-4.14 create mode 100644 target/linux/generic/config-4.9 create mode 100644 target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_jimage.c create mode 100644 target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_minor.c delete mode 100644 target/linux/generic/files/fs/yaffs2/Kconfig delete mode 100644 target/linux/generic/files/fs/yaffs2/Makefile delete mode 100644 target/linux/generic/files/fs/yaffs2/NOTE.openwrt delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_allocator.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_allocator.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_attribs.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_attribs.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_bitmap.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_bitmap.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_checkptrw.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_checkptrw.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_ecc.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_ecc.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_getblockinfo.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_guts.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_guts.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_linux.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_mtdif.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_mtdif.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_nameval.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_nameval.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_nand.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_nand.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_packedtags1.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_packedtags1.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_packedtags2.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_packedtags2.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_summary.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_summary.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_tagscompat.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_tagscompat.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_tagsmarshall.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_tagsmarshall.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_trace.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_verify.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_verify.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_vfs.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_yaffs1.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_yaffs1.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_yaffs2.c delete mode 100644 target/linux/generic/files/fs/yaffs2/yaffs_yaffs2.h delete mode 100644 target/linux/generic/files/fs/yaffs2/yportenv.h create mode 100644 target/linux/generic/hack-4.14/202-reduce_module_size.patch create mode 100644 target/linux/generic/hack-4.14/204-module_strip.patch create mode 100644 target/linux/generic/hack-4.14/207-disable-modorder.patch create mode 100644 target/linux/generic/hack-4.14/210-darwin_scripts_include.patch create mode 100644 target/linux/generic/hack-4.14/211-host_tools_portability.patch create mode 100644 target/linux/generic/hack-4.14/212-byteshift_portability.patch create mode 100644 target/linux/generic/hack-4.14/214-spidev_h_portability.patch create mode 100644 target/linux/generic/hack-4.14/220-gc_sections.patch create mode 100644 target/linux/generic/hack-4.14/221-module_exports.patch create mode 100644 target/linux/generic/hack-4.14/230-openwrt_lzma_options.patch create mode 100644 target/linux/generic/hack-4.14/250-netfilter_depends.patch create mode 100644 target/linux/generic/hack-4.14/251-sound_kconfig.patch create mode 100644 target/linux/generic/hack-4.14/259-regmap_dynamic.patch create mode 100644 target/linux/generic/hack-4.14/260-crypto_test_dependencies.patch create mode 100644 target/linux/generic/hack-4.14/280-rfkill-stubs.patch create mode 100644 target/linux/generic/hack-4.14/300-MIPS-r4k_cache-use-more-efficient-cache-blast.patch create mode 100644 target/linux/generic/hack-4.14/301-mips_image_cmdline_hack.patch create mode 100644 target/linux/generic/hack-4.14/321-powerpc_crtsavres_prereq.patch create mode 100644 target/linux/generic/hack-4.14/531-debloat_lzma.patch create mode 100644 target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch create mode 100644 target/linux/generic/hack-4.14/641-bridge_port_isolate.patch create mode 100644 target/linux/generic/hack-4.14/650-netfilter-add-xt_OFFLOAD-target.patch create mode 100644 target/linux/generic/hack-4.14/651-wireless_mesh_header.patch create mode 100644 target/linux/generic/hack-4.14/660-fq_codel_defaults.patch create mode 100644 target/linux/generic/hack-4.14/661-use_fq_codel_by_default.patch create mode 100644 target/linux/generic/hack-4.14/662-remove_pfifo_fast.patch create mode 100644 target/linux/generic/hack-4.14/700-swconfig_switch_drivers.patch create mode 100644 target/linux/generic/hack-4.14/702-phy_add_aneg_done_function.patch create mode 100644 target/linux/generic/hack-4.14/721-phy_packets.patch create mode 100644 target/linux/generic/hack-4.14/773-bgmac-add-srab-switch.patch create mode 100644 target/linux/generic/hack-4.14/835-misc-owl_loader.patch create mode 100644 target/linux/generic/hack-4.14/901-debloat_sock_diag.patch create mode 100644 target/linux/generic/hack-4.14/902-debloat_proc.patch create mode 100644 target/linux/generic/hack-4.14/904-debloat_dma_buf.patch create mode 100644 target/linux/generic/hack-4.14/910-kobject_uevent.patch create mode 100644 target/linux/generic/hack-4.14/911-kobject_add_broadcast_uevent.patch create mode 100644 target/linux/generic/hack-4.14/921-always-create-console-node-in-initramfs.patch create mode 100644 target/linux/generic/hack-4.14/930-crashlog.patch create mode 100644 target/linux/generic/hack-4.9/202-reduce_module_size.patch create mode 100644 target/linux/generic/hack-4.9/204-module_strip.patch create mode 100644 target/linux/generic/hack-4.9/207-disable-modorder.patch create mode 100644 target/linux/generic/hack-4.9/210-darwin_scripts_include.patch create mode 100644 target/linux/generic/hack-4.9/211-host_tools_portability.patch create mode 100644 target/linux/generic/hack-4.9/212-byteshift_portability.patch create mode 100644 target/linux/generic/hack-4.9/214-spidev_h_portability.patch create mode 100644 target/linux/generic/hack-4.9/220-gc_sections.patch create mode 100644 target/linux/generic/hack-4.9/221-module_exports.patch create mode 100644 target/linux/generic/hack-4.9/230-openwrt_lzma_options.patch create mode 100644 target/linux/generic/hack-4.9/250-netfilter_depends.patch create mode 100644 target/linux/generic/hack-4.9/251-sound_kconfig.patch create mode 100644 target/linux/generic/hack-4.9/259-regmap_dynamic.patch create mode 100644 target/linux/generic/hack-4.9/260-crypto_test_dependencies.patch create mode 100644 target/linux/generic/hack-4.9/280-rfkill-stubs.patch create mode 100644 target/linux/generic/hack-4.9/300-MIPS-r4k_cache-use-more-efficient-cache-blast.patch create mode 100644 target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch create mode 100644 target/linux/generic/hack-4.9/321-powerpc_crtsavres_prereq.patch create mode 100644 target/linux/generic/hack-4.9/531-debloat_lzma.patch create mode 100644 target/linux/generic/hack-4.9/640-bridge-only-accept-EAP-locally.patch create mode 100644 target/linux/generic/hack-4.9/641-bridge_port_isolate.patch create mode 100644 target/linux/generic/hack-4.9/651-wireless_mesh_header.patch create mode 100644 target/linux/generic/hack-4.9/660-fq_codel_defaults.patch create mode 100644 target/linux/generic/hack-4.9/661-use_fq_codel_by_default.patch create mode 100644 target/linux/generic/hack-4.9/662-remove_pfifo_fast.patch create mode 100644 target/linux/generic/hack-4.9/700-swconfig_switch_drivers.patch create mode 100644 target/linux/generic/hack-4.9/702-phy_add_aneg_done_function.patch create mode 100644 target/linux/generic/hack-4.9/710-phy-add-mdio_register_board_info.patch create mode 100644 target/linux/generic/hack-4.9/721-phy_packets.patch create mode 100644 target/linux/generic/hack-4.9/773-bgmac-add-srab-switch.patch create mode 100644 target/linux/generic/hack-4.9/835-misc-owl_loader.patch create mode 100644 target/linux/generic/hack-4.9/901-debloat_sock_diag.patch create mode 100644 target/linux/generic/hack-4.9/902-debloat_proc.patch create mode 100644 target/linux/generic/hack-4.9/904-debloat_dma_buf.patch create mode 100644 target/linux/generic/hack-4.9/910-kobject_uevent.patch create mode 100644 target/linux/generic/hack-4.9/911-kobject_add_broadcast_uevent.patch create mode 100644 target/linux/generic/hack-4.9/921-always-create-console-node-in-initramfs.patch create mode 100644 target/linux/generic/hack-4.9/930-crashlog.patch rename target/linux/generic/{base-files => other-files}/init (100%) delete mode 100644 target/linux/generic/patches-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch delete mode 100644 target/linux/generic/patches-3.18/044-backport-m25p80-jedec-probe.patch delete mode 100644 target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch delete mode 100644 target/linux/generic/patches-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch delete mode 100644 target/linux/generic/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch delete mode 100644 target/linux/generic/patches-3.18/078-bgmac-reset-enable-Ethernet-core-before-using-it.patch delete mode 100644 target/linux/generic/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch delete mode 100644 target/linux/generic/patches-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch delete mode 100644 target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch delete mode 100644 target/linux/generic/patches-3.18/097-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch delete mode 100644 target/linux/generic/patches-3.18/133-MIPS-UAPI-Ignore-__arch_swab-16-32-64-when-using-MIP.patch delete mode 100644 target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch delete mode 100644 target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch delete mode 100644 target/linux/generic/patches-3.18/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch delete mode 100644 target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch delete mode 100644 target/linux/generic/patches-3.18/192-USB-qcserial-Add-support-for-Quectel-EC20-Mini-PCIe-.patch delete mode 100644 target/linux/generic/patches-3.18/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch delete mode 100644 target/linux/generic/patches-3.18/201-extra_optimization.patch delete mode 100644 target/linux/generic/patches-3.18/204-module_strip.patch delete mode 100644 target/linux/generic/patches-3.18/259-regmap_dynamic.patch delete mode 100644 target/linux/generic/patches-3.18/270-uapi-kernel.h-glibc-specific-inclusion-of-sysinfo.h.patch delete mode 100644 target/linux/generic/patches-3.18/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch delete mode 100644 target/linux/generic/patches-3.18/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch delete mode 100644 target/linux/generic/patches-3.18/500-yaffs-Kbuild-integration.patch delete mode 100644 target/linux/generic/patches-3.18/502-yaffs-fix-compat-tags-handling.patch delete mode 100644 target/linux/generic/patches-3.18/503-yaffs-add-tags-9bytes-mount-option.patch delete mode 100644 target/linux/generic/patches-3.18/504-yaffs-3.16-new-fops.patch delete mode 100644 target/linux/generic/patches-3.18/550-ubifs-symlink-xattr-support.patch delete mode 100644 target/linux/generic/patches-3.18/610-netfilter_match_bypass_default_checks.patch delete mode 100644 target/linux/generic/patches-3.18/630-packet_socket_type.patch delete mode 100644 target/linux/generic/patches-3.18/653-disable_netlink_trim.patch delete mode 100644 target/linux/generic/patches-3.18/655-increase_skb_pad.patch delete mode 100644 target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch delete mode 100644 target/linux/generic/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch delete mode 100644 target/linux/generic/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch delete mode 100644 target/linux/generic/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch delete mode 100644 target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch delete mode 100644 target/linux/generic/patches-3.18/701-phy_extension.patch delete mode 100644 target/linux/generic/patches-3.18/702-phy_add_aneg_done_function.patch delete mode 100644 target/linux/generic/patches-3.18/704-phy-no-genphy-soft-reset.patch delete mode 100644 target/linux/generic/patches-3.18/710-phy-add-mdio_register_board_info.patch delete mode 100644 target/linux/generic/patches-3.18/721-phy_packets.patch delete mode 100644 target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch delete mode 100644 target/linux/generic/patches-3.18/811-pci_disable_usb_common_quirks.patch delete mode 100644 target/linux/generic/patches-3.18/901-debloat_sock_diag.patch delete mode 100644 target/linux/generic/patches-3.18/902-debloat_proc.patch delete mode 100644 target/linux/generic/patches-3.18/903-debloat_direct_io.patch delete mode 100644 target/linux/generic/patches-3.18/997-device_tree_cmdline.patch delete mode 100644 target/linux/generic/patches-4.4/087-Revert-led-core-Fix-brightness-setting-when-setting-.patch delete mode 100644 target/linux/generic/patches-4.4/259-regmap_dynamic.patch delete mode 100644 target/linux/generic/patches-4.4/270-uapi-kernel.h-glibc-specific-inclusion-of-sysinfo.h.patch delete mode 100644 target/linux/generic/patches-4.4/271-uapi-libc-compat.h-do-not-rely-on-__GLIBC__.patch delete mode 100644 target/linux/generic/patches-4.4/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch delete mode 100644 target/linux/generic/patches-4.4/450-mtd-nand-allow-to-use-platform-specific-chip-fixup.patch delete mode 100644 target/linux/generic/patches-4.4/477-mtd-add-spi-nor-add-mx25u3235f.patch delete mode 100644 target/linux/generic/patches-4.4/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch delete mode 100644 target/linux/generic/patches-4.4/494-mtd-ubi-add-EOF-marker-support.patch delete mode 100644 target/linux/generic/patches-4.4/500-yaffs-Kbuild-integration.patch delete mode 100644 target/linux/generic/patches-4.4/502-yaffs-fix-compat-tags-handling.patch delete mode 100644 target/linux/generic/patches-4.4/503-yaffs-add-tags-9bytes-mount-option.patch delete mode 100644 target/linux/generic/patches-4.4/504-yaffs-3.16-new-fops.patch delete mode 100644 target/linux/generic/patches-4.4/505-yaffs-3.19-f_dentry-remove.patch delete mode 100644 target/linux/generic/patches-4.4/506-yaffs2-using-new-follow_link-and-put_link.patch delete mode 100644 target/linux/generic/patches-4.4/610-netfilter_match_bypass_default_checks.patch delete mode 100644 target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch delete mode 100644 target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch delete mode 100644 target/linux/generic/patches-4.4/702-phy_add_aneg_done_function.patch delete mode 100644 target/linux/generic/patches-4.4/720-phy_adm6996.patch delete mode 100644 target/linux/generic/patches-4.4/721-phy_packets.patch delete mode 100644 target/linux/generic/patches-4.4/722-phy_mvswitch.patch delete mode 100644 target/linux/generic/patches-4.4/723-phy_ip175c.patch delete mode 100644 target/linux/generic/patches-4.4/724-phy_ar8216.patch delete mode 100644 target/linux/generic/patches-4.4/725-phy_rtl8306.patch delete mode 100644 target/linux/generic/patches-4.4/726-phy_rtl8366.patch delete mode 100644 target/linux/generic/patches-4.4/727-phy-rtl8367.patch delete mode 100644 target/linux/generic/patches-4.4/728-phy-rtl8367b.patch delete mode 100644 target/linux/generic/patches-4.4/729-phy-tantos.patch delete mode 100644 target/linux/generic/patches-4.4/730-phy_b53.patch delete mode 100644 target/linux/generic/patches-4.4/732-phy-ar8216-led-support.patch delete mode 100644 target/linux/generic/patches-4.4/733-phy_mvsw61xx.patch delete mode 100644 target/linux/generic/patches-4.4/902-debloat_proc.patch delete mode 100644 target/linux/generic/patches-4.4/980-arm_openwrt_machtypes.patch create mode 100644 target/linux/generic/pending-3.18/001-mtdsplit_backport.patch create mode 100644 target/linux/generic/pending-3.18/002-phy_drivers_backport.patch create mode 100644 target/linux/generic/pending-3.18/003-myloader_backport.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/020-ssb_update.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/021-ssb_sprom.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/025-bcma_backport.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/026-bcma-from-3.20.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/027-bcma-from-4.1.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/028-bcma-from-4.2.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/029-bcma-from-4.4.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/030-backport_bcm47xx_nvram.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/030-nl80211-Allow-set-network-namespace-by-fd.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/031-bcma-from-4.5.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/032-bcma-from-4.6.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/040-mtd-bcm47xxpart-backports-from-3.19.patch (100%) create mode 100644 target/linux/generic/pending-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/043-mtd_GD25Q128B_support_backport_from_3.19.patch (100%) create mode 100644 target/linux/generic/pending-3.18/044-backport-m25p80-jedec-probe.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/050-backport_netfilter_rtcache.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/051-02-bridge-allow-setting-hash_max-multicast_router-if-in.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/060-mips_decompressor_memmove.patch (100%) create mode 100644 target/linux/generic/pending-3.18/070-bgmac-register-napi-before-the-device.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/071-bgmac-activate-irqs-only-if-there-is-nothing-to-poll.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/073-bgmac-Clean-warning-messages.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/074-bgmac-register-fixed-PHY-for-ARM-BCM470X-BCM5301X-ch.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/075-bgmac-allow-enabling-on-ARCH_BCM_5301X.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/076-net-phy-export-fixed_phy_register.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-01-bgmac-fix-descriptor-frame-start-end-definitions.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-02-bgmac-implement-GRO-and-use-build_skb.patch (100%) create mode 100644 target/linux/generic/pending-3.18/077-03-bgmac-implement-scatter-gather-support.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/077-04-bgmac-simplify-tx-ring-index-handling.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-05-bgmac-leave-interrupts-disabled-as-long-as-there-is-.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-06-bgmac-set-received-skb-headroom-to-NET_SKB_PAD.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-07-bgmac-simplify-rx-DMA-error-handling.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-08-bgmac-add-check-for-oversized-packets.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-09-bgmac-increase-rx-ring-size-from-511-to-512.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-10-bgmac-simplify-dma-init-cleanup.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-11-bgmac-fix-DMA-rx-corruption.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/077-12-bgmac-drop-ring-num_slots.patch (100%) create mode 100644 target/linux/generic/pending-3.18/078-bgmac-reset-enable-Ethernet-core-before-using-it.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/079-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-00-fib_trie-Fix-proc-net-fib_trie-when-CONFIG_IP_MULTIP.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-01-fib_trie-Fix-trie-balancing-issue-if-new-node-pushes.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-02-fib_trie-Update-usage-stats-to-be-percpu-instead-of-.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-03-fib_trie-Make-leaf-and-tnode-more-uniform.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-04-fib_trie-Merge-tnode_free-and-leaf_free-into-node_fr.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-05-fib_trie-Merge-leaf-into-tnode.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-06-fib_trie-Optimize-fib_table_lookup-to-avoid-wasting-.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-07-fib_trie-Optimize-fib_find_node.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-08-fib_trie-Optimize-fib_table_insert.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-09-fib_trie-Update-meaning-of-pos-to-represent-unchecke.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-10-fib_trie-Use-unsigned-long-for-anything-dealing-with.patch (100%) create mode 100644 target/linux/generic/pending-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/080-12-fib_trie-Move-resize-to-after-inflate-halve.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-13-fib_trie-Add-functions-should_inflate-and-should_hal.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-14-fib_trie-Push-assignment-of-child-to-parent-down-int.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-15-fib_trie-Push-tnode-flushing-down-to-inflate-halve.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-16-fib_trie-inflate-halve-nodes-in-a-more-RCU-friendly-.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-17-fib_trie-Remove-checks-for-index-tnode_child_length-.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-18-fib_trie-Add-tracking-value-for-suffix-length.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-19-fib_trie-Use-index-0ul-n-bits-instead-of-index-n-bit.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-20-fib_trie-Fix-RCU-bug-and-merge-similar-bits-of-infla.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-21-fib_trie-Fall-back-to-slen-update-on-inflate-halve-f.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-22-fib_trie-Add-collapse-and-should_collapse-to-resize.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-23-fib_trie-Use-empty_children-instead-of-counting-empt.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-24-fib_trie-Move-fib_find_alias-to-file-where-it-is-use.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/080-25-fib_trie-Various-clean-ups-for-handling-slen.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/081-02-pppoe-Lacks-DST-MAC-address-check.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/081-03-pppoe-drop-pppoe-device-in-pppoe_unbind_sock_work.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/081-06-ppp-don-t-set-sk_state-to-PPPOX_ZOMBIE-in-pppoe_disc.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/081-07-ppp-remove-PPPOX_ZOMBIE-socket-state.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/081-08-pppoe-fix-memory-corruption-in-padt-work-structure.patch (100%) create mode 100644 target/linux/generic/pending-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/083-solos-pci-Increase-headroom-on-received-packets.patch (100%) create mode 100644 target/linux/generic/pending-3.18/087-regmap-make-LZO-cache-optional.patch create mode 100644 target/linux/generic/pending-3.18/090-overlayfs-fallback-to-readonly-when-full.patch rename target/linux/generic/{patches-3.18/091-mtd-spi-nor-add-support-Spansion_S25FL164K => pending-3.18/091-mtd-spi-nor-add-support-Spansion_S25FL164K.patch} (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/092-01-spi-Check-to-see-if-the-device-is-processing-a-messa.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/092-02-spi-Pump-transfers-inside-calling-context-for-spi_sy.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/092-03-spi-Only-idle-the-message-pump-in-the-worker-kthread.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/095-api-fix-compatibility-of-linux-in.h-with-netinet-in..patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/099-module_arch_freeing_init-new-hook-for-archs-before-m.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/102-ehci_hcd_ignore_oc.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/110-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/111-jffs2-add-RENAME_EXCHANGE-support.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/120-bridge_allow_receiption_on_disabled_port.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/132-mips_inline_dma_ops.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/140-mtd-part-add-generic-parsing-of-linux-part-probe.patch (100%) create mode 100644 target/linux/generic/pending-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/180-usb-xhci-make-USB_XHCI_PLATFORM-selectable.patch (100%) create mode 100644 target/linux/generic/pending-3.18/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch create mode 100644 target/linux/generic/pending-3.18/192-USB-qcserial-Add-support-for-Quectel-EC20-Mini-PCIe-.patch create mode 100644 target/linux/generic/pending-3.18/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/200-fix_localversion.patch (100%) create mode 100644 target/linux/generic/pending-3.18/201-extra_optimization.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/202-reduce_module_size.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/203-kallsyms_uncompressed.patch (100%) create mode 100644 target/linux/generic/pending-3.18/204-module_strip.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/205-backtrace_module_info.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/210-darwin_scripts_include.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/212-byteshift_portability.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/213-x86_vdso_portability.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/214-spidev_h_portability.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/220-gc_sections.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/221-module_exports.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/230-openwrt_lzma_options.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/250-netfilter_depends.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/251-sound_kconfig.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/252-mv_cesa_depends.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/253-ssb_b43_default_on.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/254-textsearch_kconfig_hacks.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/255-lib80211_kconfig_hacks.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/256-crypto_add_kconfig_prompts.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/257-wireless_ext_kconfig_hack.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/258-netfilter_netlink_kconfig_hack.patch (100%) create mode 100644 target/linux/generic/pending-3.18/259-regmap_dynamic.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/260-crypto_test_dependencies.patch (100%) create mode 100644 target/linux/generic/pending-3.18/270-uapi-libc-compat-add-fallback-for-unsupported-libcs.patch create mode 100644 target/linux/generic/pending-3.18/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/300-mips_expose_boot_raw.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/301-mips_image_cmdline_hack.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/302-mips_no_branch_likely.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/304-mips_disable_fpu.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/305-mips_module_reloc.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/306-mips_mem_functions_performance.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/307-mips_highmem_offset.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/310-arm_module_unresolved_weak_sym.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/320-ppc4xx_optimization.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/321-powerpc_crtsavres_prereq.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/400-mtd-add-rootfs-split-support.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/401-mtd-add-support-for-different-partition-parser-types.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/403-mtd-hook-mtdsplit-to-Kbuild.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/404-mtd-add-more-helper-functions.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/405-mtd-old-firmware-uimage-splitter.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/406-mtd-old-rootfs-squashfs-splitter.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/410-mtd-move-forward-declaration-of-struct-mtd_info.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/411-mtd-partial_eraseblock_write.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/412-mtd-partial_eraseblock_unlock.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/420-mtd-redboot_space.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/430-mtd-add-myloader-partition-parser.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/431-mtd-bcm47xxpart-check-for-bad-blocks-when-calculatin.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/432-mtd-bcm47xxpart-detect-T_Meter-partition.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/440-block2mtd_init.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/441-block2mtd_probe.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/450-mtd-nand-allow-to-use-platform-specific-chip-fixup.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/451-mtd-nand-fix-return-code-of-nand_correct_data-function.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/472-mtd-m25p80-add-support-for-Winbond-W25X05-flash.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/473-mtd-spi-nor-add-support-for-the-Macronix-MX25L512E-S.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/474-mtd-spi-nor-add-support-for-the-ISSI-SI25CD512-SPI-f.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/475-mtd-spi-nor-add-macronix-mx25u25635f.patch (100%) create mode 100644 target/linux/generic/pending-3.18/476-mtd-spi-nor-add-eon-en25qh32.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/480-mtd-set-rootfs-to-be-root-dev.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/491-ubi-auto-create-ubiblock-device-for-rootfs.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/494-mtd-ubi-add-EOF-marker-support.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/530-jffs2_make_lzma_available.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/531-debloat_lzma.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/532-jffs2_eofdetect.patch (100%) create mode 100644 target/linux/generic/pending-3.18/550-ubifs-symlink-xattr-support.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/551-ubifs-fix-default-compression-selection.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/600-netfilter_conntrack_flush.patch (100%) create mode 100644 target/linux/generic/pending-3.18/610-netfilter_match_bypass_default_checks.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/611-netfilter_match_bypass_default_table.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/612-netfilter_match_reduce_memory_access.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/613-netfilter_optional_tcp_window_check.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/616-net_optimize_xfrm_calls.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/621-sched_act_connmark.patch (100%) create mode 100644 target/linux/generic/pending-3.18/630-packet_socket_type.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/640-bridge_no_eap_forward.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/641-bridge_always_accept_eap.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/642-bridge_port_isolate.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/645-bridge_multicast_to_unicast.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/650-pppoe_header_pad.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/651-wireless_mesh_header.patch (100%) create mode 100644 target/linux/generic/pending-3.18/653-disable_netlink_trim.patch create mode 100644 target/linux/generic/pending-3.18/655-increase_skb_pad.patch create mode 100644 target/linux/generic/pending-3.18/656-skb_reduce_truesize-helper.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/657-qdisc_reduce_truesize.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/660-fq_codel_defaults.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/661-fq_codel_keep_dropped_stats.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/662-use_fq_codel_by_default.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/663-remove_pfifo_fast.patch (100%) create mode 100644 target/linux/generic/pending-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch create mode 100644 target/linux/generic/pending-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch create mode 100644 target/linux/generic/pending-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch (100%) create mode 100644 target/linux/generic/pending-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/681-NET-add-of_get_mac_address_mtd.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/700-swconfig.patch (100%) create mode 100644 target/linux/generic/pending-3.18/701-phy_extension.patch create mode 100644 target/linux/generic/pending-3.18/702-phy_add_aneg_done_function.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/703-phy-add-detach-callback-to-struct-phy_driver.patch (100%) create mode 100644 target/linux/generic/pending-3.18/710-phy-add-mdio_register_board_info.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/720-phy_adm6996.patch (100%) create mode 100644 target/linux/generic/pending-3.18/721-phy_packets.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/722-phy_mvswitch.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/723-phy_ip175c.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/724-phy_ar8216.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/725-phy_rtl8306.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/726-phy_rtl8366.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/727-phy-rtl8367.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/728-phy-rtl8367b.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/729-phy-tantos.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/730-phy_b53.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/732-phy-ar8216-led-support.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/733-phy_mvsw61xx.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/734-net-phy-at803x-allow-to-configure-via-pdata.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/735-net-phy-at803x-fix-at8033-sgmii-mode.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/760-8139cp-fixes-from-4.3.patch (100%) create mode 100644 target/linux/generic/pending-3.18/773-bgmac-add-srab-switch.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/785-hso-support-0af0-9300.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/810-pci_disable_common_quirks.patch (100%) create mode 100644 target/linux/generic/pending-3.18/811-pci_disable_usb_common_quirks.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/821-usb-dwc2-dualrole.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/831-ledtrig_netdev.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/834-ledtrig-libata.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/840-rtc7301.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/841-rtc_pt7c4338.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/861-04_spi_gpio_implement_spi_delay.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/862-gpio_spi_driver.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/870-hifn795x_byteswap.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/890-8250_optional_sysrq.patch (100%) create mode 100644 target/linux/generic/pending-3.18/901-debloat_sock_diag.patch create mode 100644 target/linux/generic/pending-3.18/902-debloat_proc.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/904-debloat_dma_buf.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/910-kobject_uevent.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/911-kobject_add_broadcast_uevent.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/921-use_preinit_as_init.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/922-always-create-console-node-in-initramfs.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/930-crashlog.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/970-remove-unsane-filenames-from-deps_initramfs-list.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/980-arm_openwrt_machtypes.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/990-gpio_wdt.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/995-mangle_bootargs.patch (100%) create mode 100644 target/linux/generic/pending-3.18/997-device_tree_cmdline.patch rename target/linux/generic/{patches-3.18 => pending-3.18}/998-enable_wilink_platform_without_drivers.patch (100%) rename target/linux/generic/{patches-3.18 => pending-3.18}/999-seccomp_log.patch (100%) create mode 100644 target/linux/generic/pending-4.14/100-MIPS-fix-cache-flushing-for-highmem-pages.patch create mode 100644 target/linux/generic/pending-4.14/102-MIPS-only-process-negative-stack-offsets-on-stack-tr.patch create mode 100644 target/linux/generic/pending-4.14/110-ehci_hcd_ignore_oc.patch create mode 100644 target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch create mode 100644 target/linux/generic/pending-4.14/130-add-linux-spidev-compatible-si3210.patch create mode 100644 target/linux/generic/pending-4.14/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch create mode 100644 target/linux/generic/pending-4.14/140-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch create mode 100644 target/linux/generic/pending-4.14/141-jffs2-add-RENAME_EXCHANGE-support.patch create mode 100644 target/linux/generic/pending-4.14/150-bridge_allow_receiption_on_disabled_port.patch create mode 100644 target/linux/generic/pending-4.14/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch create mode 100644 target/linux/generic/pending-4.14/180-net-phy-at803x-add-support-for-AT8032.patch create mode 100644 target/linux/generic/pending-4.14/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch create mode 100644 target/linux/generic/pending-4.14/201-extra_optimization.patch create mode 100644 target/linux/generic/pending-4.14/203-kallsyms_uncompressed.patch create mode 100644 target/linux/generic/pending-4.14/205-backtrace_module_info.patch create mode 100644 target/linux/generic/pending-4.14/206-mips-disable-vdso.patch create mode 100644 target/linux/generic/pending-4.14/240-remove-unsane-filenames-from-deps_initramfs-list.patch create mode 100644 target/linux/generic/pending-4.14/261-enable_wilink_platform_without_drivers.patch create mode 100644 target/linux/generic/pending-4.14/300-mips_expose_boot_raw.patch create mode 100644 target/linux/generic/pending-4.14/302-mips_no_branch_likely.patch create mode 100644 target/linux/generic/pending-4.14/304-mips_disable_fpu.patch create mode 100644 target/linux/generic/pending-4.14/305-mips_module_reloc.patch create mode 100644 target/linux/generic/pending-4.14/306-mips_mem_functions_performance.patch create mode 100644 target/linux/generic/pending-4.14/307-mips_highmem_offset.patch create mode 100644 target/linux/generic/pending-4.14/308-mips32r2_tune.patch create mode 100644 target/linux/generic/pending-4.14/310-arm_module_unresolved_weak_sym.patch create mode 100644 target/linux/generic/pending-4.14/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch create mode 100644 target/linux/generic/pending-4.14/332-arc-add-OWRTDTB-section.patch create mode 100644 target/linux/generic/pending-4.14/333-arc-enable-unaligned-access-in-kernel-mode.patch create mode 100644 target/linux/generic/pending-4.14/340-MIPS-mm-remove-mips_dma_mapping_error.patch create mode 100644 target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch create mode 100644 target/linux/generic/pending-4.14/400-mtd-add-rootfs-split-support.patch create mode 100644 target/linux/generic/pending-4.14/401-mtd-add-support-for-different-partition-parser-types.patch create mode 100644 target/linux/generic/pending-4.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch create mode 100644 target/linux/generic/pending-4.14/403-mtd-hook-mtdsplit-to-Kbuild.patch create mode 100644 target/linux/generic/pending-4.14/404-mtd-add-more-helper-functions.patch create mode 100644 target/linux/generic/pending-4.14/411-mtd-partial_eraseblock_write.patch create mode 100644 target/linux/generic/pending-4.14/412-mtd-partial_eraseblock_unlock.patch create mode 100644 target/linux/generic/pending-4.14/420-mtd-redboot_space.patch create mode 100644 target/linux/generic/pending-4.14/430-mtd-add-myloader-partition-parser.patch create mode 100644 target/linux/generic/pending-4.14/431-mtd-bcm47xxpart-check-for-bad-blocks-when-calculatin.patch create mode 100644 target/linux/generic/pending-4.14/432-mtd-bcm47xxpart-detect-T_Meter-partition.patch create mode 100644 target/linux/generic/pending-4.14/440-block2mtd_init.patch create mode 100644 target/linux/generic/pending-4.14/441-block2mtd_probe.patch create mode 100644 target/linux/generic/pending-4.14/450-mtd-m25p80-allow-fallback-from-spi_flash_read-to-reg.patch create mode 100644 target/linux/generic/pending-4.14/450-mtd-spi-nor-allow-NOR-driver-to-write-fewer-bytes-th.patch create mode 100644 target/linux/generic/pending-4.14/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch create mode 100644 target/linux/generic/pending-4.14/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch create mode 100644 target/linux/generic/pending-4.14/465-m25p80-mx-disable-software-protection.patch create mode 100644 target/linux/generic/pending-4.14/466-Revert-mtd-spi-nor-fix-Spansion-regressions-aliased-.patch create mode 100644 target/linux/generic/pending-4.14/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch create mode 100644 target/linux/generic/pending-4.14/476-mtd-spi-nor-add-eon-en25q128.patch create mode 100644 target/linux/generic/pending-4.14/477-mtd-add-spi-nor-add-mx25u3235f.patch create mode 100644 target/linux/generic/pending-4.14/478-mtd-spi-nor-Add-support-for-XM25QH64A-and-XM25QH128A.patch create mode 100644 target/linux/generic/pending-4.14/479-mtd-spi-nor-add-eon-en25qh32.patch create mode 100644 target/linux/generic/pending-4.14/480-mtd-set-rootfs-to-be-root-dev.patch create mode 100644 target/linux/generic/pending-4.14/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch create mode 100644 target/linux/generic/pending-4.14/491-ubi-auto-create-ubiblock-device-for-rootfs.patch create mode 100644 target/linux/generic/pending-4.14/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch create mode 100644 target/linux/generic/pending-4.14/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch create mode 100644 target/linux/generic/pending-4.14/494-mtd-ubi-add-EOF-marker-support.patch create mode 100644 target/linux/generic/pending-4.14/530-jffs2_make_lzma_available.patch create mode 100644 target/linux/generic/pending-4.14/532-jffs2_eofdetect.patch create mode 100644 target/linux/generic/pending-4.14/551-ubifs-fix-default-compression-selection.patch create mode 100644 target/linux/generic/pending-4.14/553-ubifs-Add-option-to-create-UBI-FS-version-4-on-empty.patch create mode 100644 target/linux/generic/pending-4.14/600-netfilter_conntrack_flush.patch create mode 100644 target/linux/generic/pending-4.14/610-netfilter_match_bypass_default_checks.patch create mode 100644 target/linux/generic/pending-4.14/611-netfilter_match_bypass_default_table.patch create mode 100644 target/linux/generic/pending-4.14/612-netfilter_match_reduce_memory_access.patch create mode 100644 target/linux/generic/pending-4.14/613-netfilter_optional_tcp_window_check.patch create mode 100644 target/linux/generic/pending-4.14/616-net_optimize_xfrm_calls.patch create mode 100644 target/linux/generic/pending-4.14/620-net_sched-codel-do-not-defer-queue-length-update.patch create mode 100644 target/linux/generic/pending-4.14/630-packet_socket_type.patch create mode 100644 target/linux/generic/pending-4.14/640-netfilter-nf_flow_table-add-hardware-offload-support.patch create mode 100644 target/linux/generic/pending-4.14/641-netfilter-nf_flow_table-support-hw-offload-through-v.patch create mode 100644 target/linux/generic/pending-4.14/642-net-8021q-support-hardware-flow-table-offload.patch create mode 100644 target/linux/generic/pending-4.14/643-net-bridge-support-hardware-flow-table-offload.patch create mode 100644 target/linux/generic/pending-4.14/644-net-pppoe-support-hardware-flow-table-offload.patch create mode 100644 target/linux/generic/pending-4.14/645-netfilter-nf_flow_table-rework-hardware-offload-time.patch create mode 100644 target/linux/generic/pending-4.14/655-increase_skb_pad.patch create mode 100644 target/linux/generic/pending-4.14/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch create mode 100644 target/linux/generic/pending-4.14/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch create mode 100644 target/linux/generic/pending-4.14/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch create mode 100644 target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch create mode 100644 target/linux/generic/pending-4.14/681-NET-add-of_get_mac_address_mtd.patch create mode 100644 target/linux/generic/pending-4.14/701-phy_extension.patch create mode 100644 target/linux/generic/pending-4.14/703-phy-add-detach-callback-to-struct-phy_driver.patch create mode 100644 target/linux/generic/pending-4.14/734-net-phy-at803x-allow-to-configure-via-pdata.patch create mode 100644 target/linux/generic/pending-4.14/735-net-phy-at803x-fix-at8033-sgmii-mode.patch create mode 100644 target/linux/generic/pending-4.14/810-pci_disable_common_quirks.patch create mode 100644 target/linux/generic/pending-4.14/811-pci_disable_usb_common_quirks.patch create mode 100644 target/linux/generic/pending-4.14/831-ledtrig_netdev.patch create mode 100644 target/linux/generic/pending-4.14/834-ledtrig-libata.patch create mode 100644 target/linux/generic/pending-4.14/920-mangle_bootargs.patch create mode 100644 target/linux/generic/pending-4.14/950-tty-serial-exar-generalize-rs485-setup.patch create mode 100644 target/linux/generic/pending-4.4/001-mtdsplit_backport.patch create mode 100644 target/linux/generic/pending-4.4/002-phy_drivers_backport.patch create mode 100644 target/linux/generic/pending-4.4/003-myloader_backport.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/010-Kbuild-don-t-hardcode-path-to-awk-in-scripts-ld-vers.patch (100%) create mode 100644 target/linux/generic/pending-4.4/020-bcma-from-4.5.patch create mode 100644 target/linux/generic/pending-4.4/021-bcma-from-4.6.patch create mode 100644 target/linux/generic/pending-4.4/022-bcma-from-4.8.patch create mode 100644 target/linux/generic/pending-4.4/023-bcma-from-4.9.patch create mode 100644 target/linux/generic/pending-4.4/025-bcma-from-4.11.patch create mode 100644 target/linux/generic/pending-4.4/026-bcma-from-4.12.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/030-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/030-6-ch9200-use-skb_cow_head-to-deal-with-cloned-skbs.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/030-7-kaweth-use-skb_cow_head-to-deal-with-cloned-skbs.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/032-fq_codel-add-batch-ability-to-fq_codel_drop.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/033-fq_codel-add-memory-limitation-per-queue.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/034-fq_codel-fix-memory-limitation-drift.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/035-fq_codel-fix-NET_XMIT_CN-behavior.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/041-mtd-spi-nor-include-mtd.h-header-for-struct-mtd_info.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/042-0002-mtd-add-arch-dependency-for-MTD_BCM47XXSFLASH-symbol.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/043-mtd-spi-nor-mx25l3205d-mx25l6405d-append-SECT_4K.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/045-mtd-devices-m25p80-add-support-for-mmap-read-request.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/046-ubifs-silence-error-output-if-MS_SILENT-is-set.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/047-ubifs-silence-early-error-if-MS_SILENT-is-set.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/048-mtd-spi-nor-backport-SPI_NOR_HAS_LOCK-flag.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/050-backport_netfilter_rtcache.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/051-0001-ovl-rename-is_merge-to-is_lowest.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/051-0002-ovl-override-creds-with-the-ones-from-the-superblock.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/051-0005-ovl-proper-cleanup-of-workdir.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/052-01-ubifs-Implement-O_TMPFILE.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/052-02-ubifs-Implement-RENAME_WHITEOUT.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/052-03-ubifs-Implement-RENAME_EXCHANGE.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/052-04-ubifs-Use-move-variable-in-ubifs_rename.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/053-0001-ubifs-Drop-softlimit-and-delta-fields-from-struct-ub.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/053-0002-ubifs-Use-dirty_writeback_interval-value-for-wbuf-ti.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/060-mips_decompressor_memmove.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/061-softirq-let-ksoftirqd-do-its-job.patch (100%) create mode 100644 target/linux/generic/pending-4.4/067-v4.11-mtd-nand-Add-Winbond-manufacturer-id.patch create mode 100644 target/linux/generic/pending-4.4/070-v4.5-0003-net-bgmac-clarify-CONFIG_BCMA-dependency.patch create mode 100644 target/linux/generic/pending-4.4/070-v4.6-0001-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch create mode 100644 target/linux/generic/pending-4.4/070-v4.6-0002-bgmac-support-Ethernet-device-on-BCM47094-SoC.patch create mode 100644 target/linux/generic/pending-4.4/070-v4.6-0004-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch create mode 100644 target/linux/generic/pending-4.4/070-v4.8-0001-bgmac-Bind-net_device-with-backing-device-structure.patch create mode 100644 target/linux/generic/pending-4.4/070-v4.8-0002-bgmac-Add-support-for-ethtool-statistics.patch create mode 100644 target/linux/generic/pending-4.4/070-v4.8-0003-bgmac-Maintain-some-netdev-statistics.patch create mode 100644 target/linux/generic/pending-4.4/070-v4.8-0004-net-ethernet-bgmac-use-phydev-from-struct-net_device.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.8-0001-net-ethernet-bgmac-change-bgmac_-prints-to-dev_-prin.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.8-0002-net-ethernet-bgmac-add-dma_dev-pointer.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.8-0003-net-ethernet-bgmac-move-BCMA-MDIO-Phy-code-into-a-se.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.8-0004-net-ethernet-bgmac-convert-to-feature-flags.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.8-0005-net-ethernet-bgmac-Add-platform-device-support.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.8-0006-net-ethernet-bgmac-Fix-return-value-check-in-bgmac_p.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.8-0007-net-ethernet-bgmac-Remove-redundant-dev_err-call-in-.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.8-0009-net-bgmac-fix-reversed-check-for-MII-registration-er.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.9-0001-net-bgmac-support-Ethernet-core-on-BCM53573-SoCs.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.9-0002-net-bgmac-make-it-clear-when-setting-interface-type-.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.9-0003-net-bgmac-Fix-errant-feature-flag-check.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.9-0004-net-bgmac-fix-spelling-mistake-connecton-connection.patch create mode 100644 target/linux/generic/pending-4.4/071-v4.9-0005-net-bgmac-fix-reversed-checks-for-clock-control-flag.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/072-net-add-devm-version-of-alloc_etherdev_mqs-function.patch (100%) create mode 100644 target/linux/generic/pending-4.4/073-v4.10-0001-net-bgmac-allocate-struct-bgmac-just-once-don-t-copy.patch create mode 100644 target/linux/generic/pending-4.4/073-v4.10-0002-net-bgmac-drop-struct-bcma_mdio-we-don-t-need-anymor.patch create mode 100644 target/linux/generic/pending-4.4/073-v4.10-0003-net-bgmac-use-PHY-subsystem-for-initializing-PHY.patch create mode 100644 target/linux/generic/pending-4.4/073-v4.15-0001-net-bgmac-enable-master-mode-for-BCM54210E-and-B5021.patch create mode 100644 target/linux/generic/pending-4.4/074-NET-PHY-adds-driver-for-lantiq-PHY11G.patch create mode 100644 target/linux/generic/pending-4.4/078-0001-net-phy-update-Broadcom-drivers-to-v4.5.patch create mode 100644 target/linux/generic/pending-4.4/078-0002-net-phy-update-Broadcom-drivers-to-v4.6.patch create mode 100644 target/linux/generic/pending-4.4/078-0003-net-phy-cherry-pick-Broadcom-drivers-updates-from-v4.patch create mode 100644 target/linux/generic/pending-4.4/078-0004-net-phy-cherry-pick-Broadcom-drivers-updates-from-v4.patch create mode 100644 target/linux/generic/pending-4.4/078-0006-net-phy-cherry-pick-Broadcom-drivers-updates-from-v4.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/080-spi-introduce-accelerated-read-support-for-spi-flash.patch (100%) create mode 100644 target/linux/generic/pending-4.4/081-spi-bcm53xx-add-spi_flash_read-callback-for-MMIO-bas.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/082-0001-USB-core-let-USB-device-know-device-node.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/082-0002-usb-core-usb_alloc_dev-fix-setting-of-portnum.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/083-0001-clk-Add-devm_-clk_hw_-register-unregister-APIs.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/083-0002-clk-Add-clk_hw-OF-clk-providers.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/084-0001-usb-core-Introduce-a-USB-port-LED-trigger.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/084-0002-usb-core-usbport-Use-proper-LED-API-to-fix-potential.patch (100%) create mode 100644 target/linux/generic/pending-4.4/084-0003-usb-core-read-USB-ports-from-DT-in-the-usbport-LED-t.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/085-0001-leds-leds-gpio-Set-of_node-for-created-LED-devices.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/085-0002-leds-gpio-introduce-gpio_blink_set_t.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/085-0003-leds-gpio-switch-to-managed-version-of-led_classdev_.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/085-0004-leds-core-add-OF-variants-of-LED-registering-functio.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/085-0005-leds-gpio-use-OF-variant-of-LED-registering-function.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/086-0001-thermal-of-thermal-Add-devm-version-of-thermal_zone_.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/086-0002-thermal-core-export-apis-to-get-slope-and-offset.patch (100%) create mode 100644 target/linux/generic/pending-4.4/086-0003-thermal-bcm2835-add-thermal-driver-for-bcm2835-SoC.patch create mode 100644 target/linux/generic/pending-4.4/086-0004-thermal-broadcom-add-Northstar-thermal-driver.patch create mode 100644 target/linux/generic/pending-4.4/086-0005-thermal-broadcom-fix-compilation-of-Northstar-driver.patch create mode 100644 target/linux/generic/pending-4.4/087-regmap-make-LZO-cache-optional.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/090-MIPS-c-r4k-Use-IPI-calls-for-CM-indexed-cache-ops.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/091-MIPS-c-r4k-Exclude-sibling-CPUs-in-SMP-calls.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/092-MIPS-ZBOOT-copy-appended-dtb-to-the-end-of-the-kerne.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/093-MIPS-store-the-appended-dtb-address-in-a-variable.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/094-MIPS-c-r4k-Fix-size-calc-when-avoiding-IPIs-for-smal.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/096-arc-add-model-property-in-dts.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/097-MIPS-io.h-Define-ioremap_cache.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/098-usb-dwc2-Remove-unnecessary-kfree.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/101-MIPS-fix-cache-flushing-for-highmem-pages.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/102-ehci_hcd_ignore_oc.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/103-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/105-add-linux-spidev-compatible.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/106-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/110-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/111-jffs2-add-RENAME_EXCHANGE-support.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/120-bridge_allow_receiption_on_disabled_port.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/132-mips_inline_dma_ops.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/140-mtd-part-add-generic-parsing-of-linux-part-probe.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/150-mtd-spi-nor-add-support-for-ESMT_f25l32qa-and-ESMT_f.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/160-usb-gadget-udc-net2280-add-usb2380-support.patch (100%) create mode 100644 target/linux/generic/pending-4.4/180-Revert-bcma-init-serial-console-directly-from-ChipCo.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/200-fix_localversion.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/201-extra_optimization.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/202-reduce_module_size.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/203-kallsyms_uncompressed.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/204-module_strip.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/205-backtrace_module_info.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/206-mips-disable-vdso.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/207-mips-vdso-dbg-rebuild-after-genvdso.patch (100%) create mode 100644 target/linux/generic/pending-4.4/208-disable-modorder.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/210-darwin_scripts_include.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/211-sign-file-libressl.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/212-byteshift_portability.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/214-spidev_h_portability.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/220-gc_sections.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/221-module_exports.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/222-arm_zimage_none.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/230-openwrt_lzma_options.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/250-netfilter_depends.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/251-sound_kconfig.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/252-mv_cesa_depends.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/253-ssb_b43_default_on.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/254-textsearch_kconfig_hacks.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/255-lib80211_kconfig_hacks.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/256-crypto_add_kconfig_prompts.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/257-wireless_ext_kconfig_hack.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/258-netfilter_netlink_kconfig_hack.patch (100%) create mode 100644 target/linux/generic/pending-4.4/259-regmap_dynamic.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/260-crypto_test_dependencies.patch (100%) create mode 100644 target/linux/generic/pending-4.4/270-uapi-libc-compat-add-fallback-for-unsupported-libcs.patch create mode 100644 target/linux/generic/pending-4.4/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/280-rfkill-stubs.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/300-mips_expose_boot_raw.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/301-mips_image_cmdline_hack.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/302-mips_no_branch_likely.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/304-mips_disable_fpu.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/305-mips_module_reloc.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/306-mips_mem_functions_performance.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/307-mips_highmem_offset.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/308-mips32r2_tune.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/310-arm_module_unresolved_weak_sym.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/320-ppc4xx_optimization.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/321-powerpc_crtsavres_prereq.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/331-arc-remove-dependency-on-DEVTMPFS.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/332-arc-add-OWRTDTB-section.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/333-arc-enable-unaligned-access-in-kernel-mode.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/400-mtd-add-rootfs-split-support.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/401-mtd-add-support-for-different-partition-parser-types.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/403-mtd-hook-mtdsplit-to-Kbuild.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/404-mtd-add-more-helper-functions.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/410-mtd-move-forward-declaration-of-struct-mtd_info.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/411-mtd-partial_eraseblock_write.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/412-mtd-partial_eraseblock_unlock.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/420-mtd-redboot_space.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/430-mtd-add-myloader-partition-parser.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/440-block2mtd_init.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/441-block2mtd_probe.patch (100%) create mode 100644 target/linux/generic/pending-4.4/450-mtd-nand-allow-to-use-platform-specific-chip-fixup.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/451-mtd-nand-fix-return-code-of-nand_correct_data-function.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/465-m25p80-mx-disable-software-protection.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/475-mtd-spi-nor-add-macronix-mx25u25635f.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/476-mtd-spi-nor-add-eon-en25q128.patch (100%) create mode 100644 target/linux/generic/pending-4.4/477-mtd-add-spi-nor-add-mx25u3235f.patch create mode 100644 target/linux/generic/pending-4.4/478-mtd-spi-nor-add-eon-en25qh32.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/479-enable_mtd_has_lock_for_f25l32pa.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/480-mtd-set-rootfs-to-be-root-dev.patch (100%) create mode 100644 target/linux/generic/pending-4.4/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/491-ubi-auto-create-ubiblock-device-for-rootfs.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch (100%) create mode 100644 target/linux/generic/pending-4.4/494-mtd-ubi-add-EOF-marker-support.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/530-jffs2_make_lzma_available.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/531-debloat_lzma.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/532-jffs2_eofdetect.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/551-ubifs-fix-default-compression-selection.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/600-netfilter_conntrack_flush.patch (100%) create mode 100644 target/linux/generic/pending-4.4/610-netfilter_match_bypass_default_checks.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/611-netfilter_match_bypass_default_table.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/612-netfilter_match_reduce_memory_access.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/613-netfilter_optional_tcp_window_check.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/616-net_optimize_xfrm_calls.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/620-net_sched-codel-do-not-defer-queue-length-update.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/630-packet_socket_type.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/640-bridge_no_eap_forward.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/641-bridge_always_accept_eap.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/642-bridge_port_isolate.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/645-bridge_multicast_to_unicast.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/651-wireless_mesh_header.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/653-disable_netlink_trim.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/655-increase_skb_pad.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/660-fq_codel_defaults.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/661-fq_codel_keep_dropped_stats.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/662-use_fq_codel_by_default.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/663-remove_pfifo_fast.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch (100%) create mode 100644 target/linux/generic/pending-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch (100%) create mode 100644 target/linux/generic/pending-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/681-NET-add-of_get_mac_address_mtd.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/700-swconfig.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/701-phy_extension.patch (100%) create mode 100644 target/linux/generic/pending-4.4/702-phy_add_aneg_done_function.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/703-phy-add-detach-callback-to-struct-phy_driver.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/710-phy-add-mdio_register_board_info.patch (100%) create mode 100644 target/linux/generic/pending-4.4/720-phy_adm6996.patch create mode 100644 target/linux/generic/pending-4.4/721-phy_packets.patch create mode 100644 target/linux/generic/pending-4.4/722-phy_mvswitch.patch create mode 100644 target/linux/generic/pending-4.4/723-phy_ip175c.patch create mode 100644 target/linux/generic/pending-4.4/724-phy_ar8216.patch create mode 100644 target/linux/generic/pending-4.4/725-phy_rtl8306.patch create mode 100644 target/linux/generic/pending-4.4/726-phy_rtl8366.patch create mode 100644 target/linux/generic/pending-4.4/727-phy-rtl8367.patch create mode 100644 target/linux/generic/pending-4.4/728-phy-rtl8367b.patch create mode 100644 target/linux/generic/pending-4.4/729-phy-tantos.patch create mode 100644 target/linux/generic/pending-4.4/730-phy_b53.patch create mode 100644 target/linux/generic/pending-4.4/732-phy-ar8216-led-support.patch create mode 100644 target/linux/generic/pending-4.4/733-phy_mvsw61xx.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/734-net-phy-at803x-allow-to-configure-via-pdata.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/735-net-phy-at803x-fix-at8033-sgmii-mode.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/736-at803x-fix-reset-handling.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/737-net-phy-at803x-Request-reset-GPIO-only-for-AT8030-PH.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/738-net-phy-at803x-only-the-AT8030-needs-a-hardware-rese.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/739-net-phy-at803x-add-support-for-AT8032.patch (100%) create mode 100644 target/linux/generic/pending-4.4/773-bgmac-add-srab-switch.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/810-pci_disable_common_quirks.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/811-pci_disable_usb_common_quirks.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/821-usb-Remove-annoying-warning-about-bogus-URB.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/831-ledtrig_netdev.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/834-ledtrig-libata.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/835-misc-owl_loader.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/840-rtc7301.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/841-rtc_pt7c4338.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/861-04_spi_gpio_implement_spi_delay.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/862-gpio_spi_driver.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/890-uart_optional_sysrq.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/901-debloat_sock_diag.patch (100%) create mode 100644 target/linux/generic/pending-4.4/902-debloat_proc.patch rename target/linux/generic/{patches-4.4 => pending-4.4}/904-debloat_dma_buf.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/910-kobject_uevent.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/911-kobject_add_broadcast_uevent.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/921-use_preinit_as_init.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/922-always-create-console-node-in-initramfs.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/930-crashlog.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/970-remove-unsane-filenames-from-deps_initramfs-list.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/995-mangle_bootargs.patch (100%) rename target/linux/generic/{patches-4.4 => pending-4.4}/998-enable_wilink_platform_without_drivers.patch (100%) create mode 100644 target/linux/generic/pending-4.9/100-MIPS-fix-cache-flushing-for-highmem-pages.patch create mode 100644 target/linux/generic/pending-4.9/110-ehci_hcd_ignore_oc.patch create mode 100644 target/linux/generic/pending-4.9/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch create mode 100644 target/linux/generic/pending-4.9/130-add-linux-spidev-compatible-si3210.patch create mode 100644 target/linux/generic/pending-4.9/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch create mode 100644 target/linux/generic/pending-4.9/140-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch create mode 100644 target/linux/generic/pending-4.9/141-jffs2-add-RENAME_EXCHANGE-support.patch create mode 100644 target/linux/generic/pending-4.9/150-bridge_allow_receiption_on_disabled_port.patch create mode 100644 target/linux/generic/pending-4.9/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch create mode 100644 target/linux/generic/pending-4.9/170-MIPS-PCI-add-controllers-before-the-specified-head.patch create mode 100644 target/linux/generic/pending-4.9/190-2-5-e1000e-Fix-wrong-comment-related-to-link-detection.patch create mode 100644 target/linux/generic/pending-4.9/201-extra_optimization.patch create mode 100644 target/linux/generic/pending-4.9/203-kallsyms_uncompressed.patch create mode 100644 target/linux/generic/pending-4.9/205-backtrace_module_info.patch create mode 100644 target/linux/generic/pending-4.9/206-mips-disable-vdso.patch create mode 100644 target/linux/generic/pending-4.9/240-remove-unsane-filenames-from-deps_initramfs-list.patch create mode 100644 target/linux/generic/pending-4.9/261-enable_wilink_platform_without_drivers.patch create mode 100644 target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch create mode 100644 target/linux/generic/pending-4.9/302-mips_no_branch_likely.patch create mode 100644 target/linux/generic/pending-4.9/304-mips_disable_fpu.patch create mode 100644 target/linux/generic/pending-4.9/305-mips_module_reloc.patch create mode 100644 target/linux/generic/pending-4.9/306-mips_mem_functions_performance.patch create mode 100644 target/linux/generic/pending-4.9/307-mips_highmem_offset.patch create mode 100644 target/linux/generic/pending-4.9/308-mips32r2_tune.patch create mode 100644 target/linux/generic/pending-4.9/310-arm_module_unresolved_weak_sym.patch create mode 100644 target/linux/generic/pending-4.9/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch create mode 100644 target/linux/generic/pending-4.9/332-arc-add-OWRTDTB-section.patch create mode 100644 target/linux/generic/pending-4.9/333-arc-enable-unaligned-access-in-kernel-mode.patch create mode 100644 target/linux/generic/pending-4.9/340-MIPS-mm-remove-mips_dma_mapping_error.patch create mode 100644 target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch create mode 100644 target/linux/generic/pending-4.9/400-mtd-add-rootfs-split-support.patch create mode 100644 target/linux/generic/pending-4.9/401-mtd-add-support-for-different-partition-parser-types.patch create mode 100644 target/linux/generic/pending-4.9/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch create mode 100644 target/linux/generic/pending-4.9/403-mtd-hook-mtdsplit-to-Kbuild.patch create mode 100644 target/linux/generic/pending-4.9/404-mtd-add-more-helper-functions.patch create mode 100644 target/linux/generic/pending-4.9/411-mtd-partial_eraseblock_write.patch create mode 100644 target/linux/generic/pending-4.9/412-mtd-partial_eraseblock_unlock.patch create mode 100644 target/linux/generic/pending-4.9/420-mtd-redboot_space.patch create mode 100644 target/linux/generic/pending-4.9/430-mtd-add-myloader-partition-parser.patch create mode 100644 target/linux/generic/pending-4.9/431-mtd-bcm47xxpart-check-for-bad-blocks-when-calculatin.patch create mode 100644 target/linux/generic/pending-4.9/432-mtd-bcm47xxpart-detect-T_Meter-partition.patch create mode 100644 target/linux/generic/pending-4.9/440-block2mtd_init.patch create mode 100644 target/linux/generic/pending-4.9/441-block2mtd_probe.patch create mode 100644 target/linux/generic/pending-4.9/450-mtd-m25p80-allow-fallback-from-spi_flash_read-to-reg.patch create mode 100644 target/linux/generic/pending-4.9/460-mtd-cfi_cmdset_0002-no-erase_suspend.patch create mode 100644 target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch create mode 100644 target/linux/generic/pending-4.9/465-m25p80-mx-disable-software-protection.patch create mode 100644 target/linux/generic/pending-4.9/466-Revert-mtd-spi-nor-fix-Spansion-regressions-aliased-.patch create mode 100644 target/linux/generic/pending-4.9/470-mtd-spi-nor-support-limiting-4K-sectors-support-base.patch create mode 100644 target/linux/generic/pending-4.9/476-mtd-spi-nor-add-eon-en25q128.patch create mode 100644 target/linux/generic/pending-4.9/477-mtd-add-spi-nor-add-mx25u3235f.patch create mode 100644 target/linux/generic/pending-4.9/478-mtd-spi-nor-Add-support-for-XM25QH64A-and-XM25QH128A.patch create mode 100644 target/linux/generic/pending-4.9/479-mtd-spi-nor-add-eon-en25qh32.patch create mode 100644 target/linux/generic/pending-4.9/480-mtd-set-rootfs-to-be-root-dev.patch create mode 100644 target/linux/generic/pending-4.9/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch create mode 100644 target/linux/generic/pending-4.9/491-ubi-auto-create-ubiblock-device-for-rootfs.patch create mode 100644 target/linux/generic/pending-4.9/492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch create mode 100644 target/linux/generic/pending-4.9/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch create mode 100644 target/linux/generic/pending-4.9/494-mtd-ubi-add-EOF-marker-support.patch create mode 100644 target/linux/generic/pending-4.9/530-jffs2_make_lzma_available.patch create mode 100644 target/linux/generic/pending-4.9/532-jffs2_eofdetect.patch create mode 100644 target/linux/generic/pending-4.9/551-ubifs-fix-default-compression-selection.patch create mode 100644 target/linux/generic/pending-4.9/600-netfilter_conntrack_flush.patch create mode 100644 target/linux/generic/pending-4.9/610-netfilter_match_bypass_default_checks.patch create mode 100644 target/linux/generic/pending-4.9/611-netfilter_match_bypass_default_table.patch create mode 100644 target/linux/generic/pending-4.9/612-netfilter_match_reduce_memory_access.patch create mode 100644 target/linux/generic/pending-4.9/613-netfilter_optional_tcp_window_check.patch create mode 100644 target/linux/generic/pending-4.9/616-net_optimize_xfrm_calls.patch create mode 100644 target/linux/generic/pending-4.9/620-net_sched-codel-do-not-defer-queue-length-update.patch create mode 100644 target/linux/generic/pending-4.9/630-packet_socket_type.patch create mode 100644 target/linux/generic/pending-4.9/655-increase_skb_pad.patch create mode 100644 target/linux/generic/pending-4.9/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch create mode 100644 target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch create mode 100644 target/linux/generic/pending-4.9/671-net-provide-defines-for-_POLICY_FAILED-until-all-cod.patch create mode 100644 target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch create mode 100644 target/linux/generic/pending-4.9/681-NET-add-of_get_mac_address_mtd.patch create mode 100644 target/linux/generic/pending-4.9/701-phy_extension.patch create mode 100644 target/linux/generic/pending-4.9/703-phy-add-detach-callback-to-struct-phy_driver.patch create mode 100644 target/linux/generic/pending-4.9/734-net-phy-at803x-allow-to-configure-via-pdata.patch create mode 100644 target/linux/generic/pending-4.9/735-net-phy-at803x-fix-at8033-sgmii-mode.patch create mode 100644 target/linux/generic/pending-4.9/810-pci_disable_common_quirks.patch create mode 100644 target/linux/generic/pending-4.9/811-pci_disable_usb_common_quirks.patch create mode 100644 target/linux/generic/pending-4.9/821-usb-Remove-annoying-warning-about-bogus-URB.patch create mode 100644 target/linux/generic/pending-4.9/831-ledtrig_netdev.patch create mode 100644 target/linux/generic/pending-4.9/834-ledtrig-libata.patch create mode 100644 target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch create mode 100644 target/linux/generic/pending-4.9/920-mangle_bootargs.patch delete mode 100644 target/linux/ramips/Makefile delete mode 100755 target/linux/ramips/base-files/etc/board.d/01_leds delete mode 100755 target/linux/ramips/base-files/etc/board.d/02_network delete mode 100644 target/linux/ramips/base-files/etc/diag.sh delete mode 100644 target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom delete mode 100644 target/linux/ramips/base-files/etc/hotplug.d/usb/10-motion delete mode 100755 target/linux/ramips/base-files/etc/init.d/bootcount delete mode 100755 target/linux/ramips/base-files/etc/init.d/enablemodem delete mode 100644 target/linux/ramips/base-files/etc/inittab delete mode 100644 target/linux/ramips/base-files/etc/uci-defaults/09_fix-seama-header delete mode 100644 target/linux/ramips/base-files/lib/preinit/03_preinit_do_ramips.sh delete mode 100644 target/linux/ramips/base-files/lib/preinit/04_handle_checksumming delete mode 100644 target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips delete mode 100755 target/linux/ramips/base-files/lib/ramips.sh delete mode 100755 target/linux/ramips/base-files/lib/upgrade/platform.sh delete mode 100644 target/linux/ramips/base-files/lib/upgrade/ubnt.sh delete mode 100755 target/linux/ramips/base-files/sbin/fixup-mac-address delete mode 100644 target/linux/ramips/dts/11ACNAS.dts delete mode 100644 target/linux/ramips/dts/3G-6200N.dts delete mode 100644 target/linux/ramips/dts/3G-6200NL.dts delete mode 100644 target/linux/ramips/dts/3G150B.dts delete mode 100644 target/linux/ramips/dts/3G300M.dts delete mode 100644 target/linux/ramips/dts/A5-V11.dts delete mode 100644 target/linux/ramips/dts/AC1200pro.dts delete mode 100644 target/linux/ramips/dts/AI-BR100.dts delete mode 100644 target/linux/ramips/dts/AIR3GII.dts delete mode 100644 target/linux/ramips/dts/ALL0239-3G.dts delete mode 100644 target/linux/ramips/dts/ALL0256N-4M.dts delete mode 100644 target/linux/ramips/dts/ALL0256N-8M.dts delete mode 100644 target/linux/ramips/dts/ALL5002.dts delete mode 100644 target/linux/ramips/dts/ALL5003.dts delete mode 100644 target/linux/ramips/dts/AR670W.dts delete mode 100644 target/linux/ramips/dts/AR725W.dts delete mode 100644 target/linux/ramips/dts/ASL26555-16M.dts delete mode 100644 target/linux/ramips/dts/ASL26555-8M.dts delete mode 100644 target/linux/ramips/dts/ATP-52B.dts delete mode 100644 target/linux/ramips/dts/AWAPN2403.dts delete mode 100644 target/linux/ramips/dts/AWM002-4M.dtsi delete mode 100644 target/linux/ramips/dts/AWM002-8M.dtsi delete mode 100644 target/linux/ramips/dts/AWM002-EVB-4M.dts delete mode 100644 target/linux/ramips/dts/AWM002-EVB-8M.dts delete mode 100644 target/linux/ramips/dts/AWM002.dtsi delete mode 100644 target/linux/ramips/dts/AWM003-EVB.dts delete mode 100644 target/linux/ramips/dts/ArcherC20i.dts delete mode 100644 target/linux/ramips/dts/ArcherC50.dts delete mode 100644 target/linux/ramips/dts/ArcherMR200.dts delete mode 100644 target/linux/ramips/dts/BC2.dts delete mode 100644 target/linux/ramips/dts/BR-6425.dts delete mode 100644 target/linux/ramips/dts/BR-6475ND.dts delete mode 100644 target/linux/ramips/dts/BROADWAY.dts delete mode 100644 target/linux/ramips/dts/CARAMBOLA.dts delete mode 100644 target/linux/ramips/dts/CF-WR800N.dts delete mode 100644 target/linux/ramips/dts/CS-QR10.dts delete mode 100644 target/linux/ramips/dts/CY-SWR1100.dts delete mode 100644 target/linux/ramips/dts/D105.dts delete mode 100644 target/linux/ramips/dts/DAP-1350.dts delete mode 100644 target/linux/ramips/dts/DB-WRT01.dts delete mode 100644 target/linux/ramips/dts/DCH-M225.dts delete mode 100644 target/linux/ramips/dts/DCS-930.dts delete mode 100644 target/linux/ramips/dts/DCS-930L-B1.dts delete mode 100644 target/linux/ramips/dts/DIR-300-B1.dts delete mode 100644 target/linux/ramips/dts/DIR-300-B7.dts delete mode 100644 target/linux/ramips/dts/DIR-320-B1.dts delete mode 100644 target/linux/ramips/dts/DIR-600-B1.dts delete mode 100644 target/linux/ramips/dts/DIR-610-A1.dts delete mode 100644 target/linux/ramips/dts/DIR-615-D.dts delete mode 100644 target/linux/ramips/dts/DIR-615-H1.dts delete mode 100644 target/linux/ramips/dts/DIR-620-A1.dts delete mode 100644 target/linux/ramips/dts/DIR-620-D1.dts delete mode 100644 target/linux/ramips/dts/DIR-645.dts delete mode 100644 target/linux/ramips/dts/DIR-810L.dts delete mode 100644 target/linux/ramips/dts/DIR-860L-B1.dts delete mode 100644 target/linux/ramips/dts/DUZUN-DM06.dts delete mode 100644 target/linux/ramips/dts/DWR-512-B.dts delete mode 100644 target/linux/ramips/dts/E1700.dts delete mode 100644 target/linux/ramips/dts/ESR-9753.dts delete mode 100644 target/linux/ramips/dts/EX2700.dts delete mode 100644 target/linux/ramips/dts/F5D8235_V1.dts delete mode 100644 target/linux/ramips/dts/F5D8235_V2.dts delete mode 100644 target/linux/ramips/dts/F7C027.dts delete mode 100644 target/linux/ramips/dts/FIREWRT.dts delete mode 100644 target/linux/ramips/dts/FONERA20N.dts delete mode 100644 target/linux/ramips/dts/FREESTATION5.dts delete mode 100644 target/linux/ramips/dts/GB-PC1.dts delete mode 100644 target/linux/ramips/dts/GL-MT300A.dts delete mode 100644 target/linux/ramips/dts/GL-MT300N.dts delete mode 100644 target/linux/ramips/dts/GL-MT750.dts delete mode 100644 target/linux/ramips/dts/HC5661.dts delete mode 100644 target/linux/ramips/dts/HC5761.dts delete mode 100644 target/linux/ramips/dts/HC5861.dts delete mode 100644 target/linux/ramips/dts/HC5XXX.dtsi delete mode 100644 target/linux/ramips/dts/HG255D.dts delete mode 100644 target/linux/ramips/dts/HLKRM04.dts delete mode 100644 target/linux/ramips/dts/HPM.dts delete mode 100644 target/linux/ramips/dts/HT-TM02.dts delete mode 100644 target/linux/ramips/dts/HW550-3G.dts delete mode 100644 target/linux/ramips/dts/IP2202.dts delete mode 100644 target/linux/ramips/dts/JHR-N805R.dts delete mode 100644 target/linux/ramips/dts/JHR-N825R.dts delete mode 100644 target/linux/ramips/dts/JHR-N926R.dts delete mode 100644 target/linux/ramips/dts/LINKIT7688.dts delete mode 100644 target/linux/ramips/dts/M2M.dts delete mode 100644 target/linux/ramips/dts/M3.dts delete mode 100644 target/linux/ramips/dts/M4-4M.dts delete mode 100644 target/linux/ramips/dts/M4-8M.dts delete mode 100644 target/linux/ramips/dts/MAC1200RV2.dts delete mode 100644 target/linux/ramips/dts/MINIEMBPLUG.dts delete mode 100644 target/linux/ramips/dts/MINIEMBWIFI.dts delete mode 100644 target/linux/ramips/dts/MIWIFI-MINI.dts delete mode 100644 target/linux/ramips/dts/MIWIFI-NANO.dts delete mode 100644 target/linux/ramips/dts/MLW221.dts delete mode 100644 target/linux/ramips/dts/MLWG2.dts delete mode 100644 target/linux/ramips/dts/MOFI3500-3GN.dts delete mode 100644 target/linux/ramips/dts/MPRA1.dts delete mode 100644 target/linux/ramips/dts/MPRA2.dts delete mode 100644 target/linux/ramips/dts/MR-102N.dts delete mode 100644 target/linux/ramips/dts/MT7620a.dts delete mode 100644 target/linux/ramips/dts/MT7620a_MT7530.dts delete mode 100644 target/linux/ramips/dts/MT7620a_MT7610e.dts delete mode 100644 target/linux/ramips/dts/MT7620a_V22SG.dts delete mode 100644 target/linux/ramips/dts/MT7621.dts delete mode 100644 target/linux/ramips/dts/MT7628.dts delete mode 100644 target/linux/ramips/dts/MZK-750DHP.dts delete mode 100644 target/linux/ramips/dts/MZK-DP150N.dts delete mode 100644 target/linux/ramips/dts/MZK-EX300NP.dts delete mode 100644 target/linux/ramips/dts/MZK-EX750NP.dts delete mode 100644 target/linux/ramips/dts/MZK-W300NH2.dts delete mode 100644 target/linux/ramips/dts/MZK-WDPR.dts delete mode 100644 target/linux/ramips/dts/MicroWRT.dts delete mode 100644 target/linux/ramips/dts/NA930.dts delete mode 100644 target/linux/ramips/dts/NBG-419N.dts delete mode 100644 target/linux/ramips/dts/NBG-419N2.dts delete mode 100644 target/linux/ramips/dts/NCS601W.dts delete mode 100644 target/linux/ramips/dts/NIXCORE-16M.dts delete mode 100644 target/linux/ramips/dts/NIXCORE-8M.dts delete mode 100644 target/linux/ramips/dts/NIXCORE.dtsi delete mode 100644 target/linux/ramips/dts/NW718.dts delete mode 100644 target/linux/ramips/dts/Newifi-D1.dts delete mode 100644 target/linux/ramips/dts/OY-0001.dts delete mode 100644 target/linux/ramips/dts/PBR-D1.dts delete mode 100644 target/linux/ramips/dts/PBR-M1.dts delete mode 100644 target/linux/ramips/dts/PSG1208.dts delete mode 100644 target/linux/ramips/dts/PSG1218.dts delete mode 100644 target/linux/ramips/dts/PSR-680W.dts delete mode 100644 target/linux/ramips/dts/PWH2004.dts delete mode 100644 target/linux/ramips/dts/PX-4885-4M.dts delete mode 100644 target/linux/ramips/dts/PX-4885-8M.dts delete mode 100644 target/linux/ramips/dts/PX-4885.dtsi delete mode 100644 target/linux/ramips/dts/RB750Gr3.dts delete mode 100644 target/linux/ramips/dts/RE6500.dts delete mode 100644 target/linux/ramips/dts/RP-N53.dts delete mode 100644 target/linux/ramips/dts/RT-G32-B1.dts delete mode 100644 target/linux/ramips/dts/RT-N10-PLUS.dts delete mode 100644 target/linux/ramips/dts/RT-N13U.dts delete mode 100644 target/linux/ramips/dts/RT-N14U.dts delete mode 100644 target/linux/ramips/dts/RT-N15.dts delete mode 100644 target/linux/ramips/dts/RT-N56U.dts delete mode 100644 target/linux/ramips/dts/RT5350F-OLINUXINO-EVB.dts delete mode 100644 target/linux/ramips/dts/RT5350F-OLINUXINO.dts delete mode 100644 target/linux/ramips/dts/RUT5XX.dts delete mode 100644 target/linux/ramips/dts/SAP-G3200U3.dts delete mode 100644 target/linux/ramips/dts/SK-WB8.dts delete mode 100644 target/linux/ramips/dts/SL-R7205.dts delete mode 100644 target/linux/ramips/dts/TEW-691GR.dts delete mode 100644 target/linux/ramips/dts/TEW-692GR.dts delete mode 100644 target/linux/ramips/dts/TEW-714TRU.dts delete mode 100644 target/linux/ramips/dts/TINY-AC.dts delete mode 100644 target/linux/ramips/dts/Timecloud.dts delete mode 100644 target/linux/ramips/dts/UBNT-ERX.dts delete mode 100644 target/linux/ramips/dts/UR-326N4G.dts delete mode 100644 target/linux/ramips/dts/UR-336UN.dts delete mode 100644 target/linux/ramips/dts/V11STFE.dts delete mode 100644 target/linux/ramips/dts/V22RW-2X2.dts delete mode 100644 target/linux/ramips/dts/VOCORE-16M.dts delete mode 100644 target/linux/ramips/dts/VOCORE-8M.dts delete mode 100644 target/linux/ramips/dts/VOCORE.dtsi delete mode 100644 target/linux/ramips/dts/VR500.dts delete mode 100644 target/linux/ramips/dts/W150M.dts delete mode 100644 target/linux/ramips/dts/W2914NSV2.dts delete mode 100644 target/linux/ramips/dts/W2914NSV2.dtsi delete mode 100644 target/linux/ramips/dts/W306R_V20.dts delete mode 100644 target/linux/ramips/dts/W502U.dts delete mode 100644 target/linux/ramips/dts/WCR150GN.dts delete mode 100644 target/linux/ramips/dts/WF-2881.dts delete mode 100644 target/linux/ramips/dts/WHR-1166D.dts delete mode 100644 target/linux/ramips/dts/WHR-300HP2.dts delete mode 100644 target/linux/ramips/dts/WHR-600D.dts delete mode 100644 target/linux/ramips/dts/WHR-G300N.dts delete mode 100644 target/linux/ramips/dts/WIDORA-NEO.dts delete mode 100644 target/linux/ramips/dts/WITI.dts delete mode 100644 target/linux/ramips/dts/WIZARD8800.dts delete mode 100644 target/linux/ramips/dts/WIZFI630A.dts delete mode 100644 target/linux/ramips/dts/WL-330N.dts delete mode 100644 target/linux/ramips/dts/WL-330N3G.dts delete mode 100644 target/linux/ramips/dts/WL-341V3.dts delete mode 100644 target/linux/ramips/dts/WL-351.dts delete mode 100644 target/linux/ramips/dts/WL-WN575A3.dts delete mode 100644 target/linux/ramips/dts/WLI-TX4-AG300N.dts delete mode 100644 target/linux/ramips/dts/WLR-6000.dts delete mode 100644 target/linux/ramips/dts/WMR-300.dts delete mode 100644 target/linux/ramips/dts/WNCE2001.dts delete mode 100644 target/linux/ramips/dts/WNDR3700V5.dts delete mode 100644 target/linux/ramips/dts/WR512-3GN-4M.dts delete mode 100644 target/linux/ramips/dts/WR512-3GN-8M.dts delete mode 100644 target/linux/ramips/dts/WR6202.dts delete mode 100644 target/linux/ramips/dts/WRH-300CR.dts delete mode 100644 target/linux/ramips/dts/WRTNODE.dts delete mode 100644 target/linux/ramips/dts/WRTNODE2.dtsi delete mode 100644 target/linux/ramips/dts/WRTNODE2P.dts delete mode 100644 target/linux/ramips/dts/WRTNODE2R.dts delete mode 100644 target/linux/ramips/dts/WSR-1166.dts delete mode 100644 target/linux/ramips/dts/WSR-600.dts delete mode 100644 target/linux/ramips/dts/WT1520-4M.dts delete mode 100644 target/linux/ramips/dts/WT1520-8M.dts delete mode 100644 target/linux/ramips/dts/WT1520.dtsi delete mode 100644 target/linux/ramips/dts/WT3020-4M.dts delete mode 100644 target/linux/ramips/dts/WT3020-8M.dts delete mode 100644 target/linux/ramips/dts/WZR-AGL300NH.dts delete mode 100644 target/linux/ramips/dts/X5.dts delete mode 100644 target/linux/ramips/dts/X8.dts delete mode 100644 target/linux/ramips/dts/XDXRN502J.dts delete mode 100644 target/linux/ramips/dts/Y1.dts delete mode 100644 target/linux/ramips/dts/Y1.dtsi delete mode 100644 target/linux/ramips/dts/Y1S.dts delete mode 100644 target/linux/ramips/dts/YOUKU-YK1.dts delete mode 100644 target/linux/ramips/dts/ZBT-APE522II.dts delete mode 100644 target/linux/ramips/dts/ZBT-CPE102.dts delete mode 100644 target/linux/ramips/dts/ZBT-WA05.dts delete mode 100644 target/linux/ramips/dts/ZBT-WE826.dts delete mode 100644 target/linux/ramips/dts/ZBT-WG2626.dts delete mode 100644 target/linux/ramips/dts/ZBT-WG3526.dts delete mode 100644 target/linux/ramips/dts/ZBT-WG3526.dtsi delete mode 100644 target/linux/ramips/dts/ZBT-WR8305RT.dts delete mode 100644 target/linux/ramips/dts/ZTE-Q7.dts delete mode 100644 target/linux/ramips/dts/kn_rc.dts delete mode 100644 target/linux/ramips/dts/kn_rf.dts delete mode 100644 target/linux/ramips/dts/kng_rc.dts delete mode 100644 target/linux/ramips/dts/mt7620a.dtsi delete mode 100644 target/linux/ramips/dts/mt7620n.dtsi delete mode 100644 target/linux/ramips/dts/mt7621.dtsi delete mode 100644 target/linux/ramips/dts/mt7628an.dtsi delete mode 100644 target/linux/ramips/dts/rt2880.dtsi delete mode 100644 target/linux/ramips/dts/rt3050.dtsi delete mode 100644 target/linux/ramips/dts/rt3352.dtsi delete mode 100644 target/linux/ramips/dts/rt3883.dtsi delete mode 100644 target/linux/ramips/dts/rt5350.dtsi delete mode 100644 target/linux/ramips/image/Makefile delete mode 100644 target/linux/ramips/image/ex2700-fakeroot.uImage delete mode 100644 target/linux/ramips/image/lzma-loader/Makefile delete mode 100644 target/linux/ramips/image/lzma-loader/src/LzmaDecode.c delete mode 100644 target/linux/ramips/image/lzma-loader/src/LzmaDecode.h delete mode 100644 target/linux/ramips/image/lzma-loader/src/LzmaTypes.h delete mode 100644 target/linux/ramips/image/lzma-loader/src/Makefile delete mode 100644 target/linux/ramips/image/lzma-loader/src/board-ralink.c delete mode 100644 target/linux/ramips/image/lzma-loader/src/cache.c delete mode 100644 target/linux/ramips/image/lzma-loader/src/cache.h delete mode 100644 target/linux/ramips/image/lzma-loader/src/cacheops.h delete mode 100644 target/linux/ramips/image/lzma-loader/src/config.h delete mode 100644 target/linux/ramips/image/lzma-loader/src/cp0regdef.h delete mode 100644 target/linux/ramips/image/lzma-loader/src/head.S delete mode 100644 target/linux/ramips/image/lzma-loader/src/lantiq.mk delete mode 100644 target/linux/ramips/image/lzma-loader/src/loader.c delete mode 100644 target/linux/ramips/image/lzma-loader/src/loader.lds delete mode 100644 target/linux/ramips/image/lzma-loader/src/loader2.lds delete mode 100644 target/linux/ramips/image/lzma-loader/src/lzma-data.lds delete mode 100644 target/linux/ramips/image/lzma-loader/src/printf.c delete mode 100644 target/linux/ramips/image/lzma-loader/src/printf.h delete mode 100644 target/linux/ramips/image/lzma-loader/src/ralink.mk delete mode 100644 target/linux/ramips/image/mt7621.mk delete mode 100644 target/linux/ramips/image/mt7628.mk delete mode 100644 target/linux/ramips/image/mt7688.mk delete mode 100644 target/linux/ramips/image/rt288x.mk delete mode 100644 target/linux/ramips/image/rt305x-legacy.mk delete mode 100644 target/linux/ramips/image/rt305x.mk delete mode 100644 target/linux/ramips/image/rt3883.mk delete mode 100644 target/linux/ramips/modules.mk delete mode 100644 target/linux/ramips/mt7621/config-4.4 delete mode 100644 target/linux/ramips/mt7621/profiles/00-default.mk delete mode 100644 target/linux/ramips/mt7621/target.mk delete mode 100644 target/linux/ramips/patches-4.4/0001-arch-mips-ralink-add-mt7621-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0002-MIPS-ralink-add-MT7621-defconfig.patch delete mode 100644 target/linux/ramips/patches-4.4/0004-MIPS-ralink-add-MT7621-pcie-driver.patch delete mode 100644 target/linux/ramips/patches-4.4/0005-MIPS-use-set_mode-to-enable-disable-the-cevt-r4k-irq.patch delete mode 100644 target/linux/ramips/patches-4.4/0006-MIPS-ralink-add-cpu-frequency-scaling.patch delete mode 100644 target/linux/ramips/patches-4.4/0007-MIPS-ralink-copy-the-commandline-from-the-devicetree.patch delete mode 100644 target/linux/ramips/patches-4.4/0009-PCI-MIPS-adds-mt7620a-pcie-driver.patch delete mode 100644 target/linux/ramips/patches-4.4/0010-MIPS-ralink-Add-a-few-missing-clocks.patch delete mode 100644 target/linux/ramips/patches-4.4/0013-owrt-hack-fix-mt7688-cache-issue.patch delete mode 100644 target/linux/ramips/patches-4.4/0014-arch-mips-cleanup-cevt-rt3352.patch delete mode 100644 target/linux/ramips/patches-4.4/0015-arch-mips-do-not-select-illegal-access-driver-by-def.patch delete mode 100644 target/linux/ramips/patches-4.4/0019-arch-mips-ralink-add-mt7621-cpu-feature-overrides.patch delete mode 100644 target/linux/ramips/patches-4.4/0022-MIPS-ralink-Fix-vendor-string-for-mt7620.patch delete mode 100644 target/linux/ramips/patches-4.4/0024-GPIO-add-named-gpio-exports.patch delete mode 100644 target/linux/ramips/patches-4.4/0025-pinctrl-ralink-add-pinctrl-driver.patch delete mode 100644 target/linux/ramips/patches-4.4/0026-DT-Add-documentation-for-gpio-ralink.patch delete mode 100644 target/linux/ramips/patches-4.4/0027-GPIO-MIPS-ralink-add-gpio-driver-for-ralink-SoC.patch delete mode 100644 target/linux/ramips/patches-4.4/0028-GPIO-ralink-add-mt7621-gpio-controller.patch delete mode 100644 target/linux/ramips/patches-4.4/0029-phy-usb-add-ralink-phy.patch delete mode 100644 target/linux/ramips/patches-4.4/0031-uvc-add-iPassion-iP2970-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0032-USB-dwc2-add-device_reset.patch delete mode 100644 target/linux/ramips/patches-4.4/0033-xhci-mediatek-support-MTK-xHCI-host-controller.patch delete mode 100644 target/linux/ramips/patches-4.4/0034-NET-multi-phy-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0036-mtd-fix-cfi-cmdset-0002-erase-status-check.patch delete mode 100644 target/linux/ramips/patches-4.4/0037-mtd-cfi-cmdset-0002-force-word-write.patch delete mode 100644 target/linux/ramips/patches-4.4/0038-mtd-ralink-add-mt7620-nand-driver.patch delete mode 100644 target/linux/ramips/patches-4.4/0039-mtd-add-mt7621-nand-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0040-nand-add-mtk-nand-hack-hook.patch delete mode 100644 target/linux/ramips/patches-4.4/0041-DT-Add-documentation-for-spi-rt2880.patch delete mode 100644 target/linux/ramips/patches-4.4/0042-SPI-ralink-add-Ralink-SoC-spi-driver.patch delete mode 100644 target/linux/ramips/patches-4.4/0043-spi-add-mt7621-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0044-i2c-MIPS-adds-ralink-I2C-driver.patch delete mode 100644 target/linux/ramips/patches-4.4/0045-i2c-add-mt7621-driver.patch delete mode 100644 target/linux/ramips/patches-4.4/0046-mmc-MIPS-ralink-add-sdhci-for-mt7620a-SoC.patch delete mode 100644 target/linux/ramips/patches-4.4/0047-DMA-ralink-add-rt2880-dma-engine.patch delete mode 100644 target/linux/ramips/patches-4.4/0048-asoc-add-mt7620-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0049-watchdog-add-MT7621-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0051-serial-add-ugly-custom-baud-rate-hack.patch delete mode 100644 target/linux/ramips/patches-4.4/0052-pwm-add-mediatek-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0054-mtd-add-chunked-read-io-to-m25p80.patch delete mode 100644 target/linux/ramips/patches-4.4/0059-correct-CPC_BASE_MASK.patch delete mode 100644 target/linux/ramips/patches-4.4/0064-add_clk_round_rate.patch delete mode 100644 target/linux/ramips/patches-4.4/0066-mt7621-enable-highmem.patch delete mode 100644 target/linux/ramips/patches-4.4/0067-enable-mt7621-xhci.patch delete mode 100644 target/linux/ramips/patches-4.4/0069-awake-rt305x-dwc2-controller.patch delete mode 100644 target/linux/ramips/patches-4.4/0084-MIPS-ralink-add-MT7628-EPHY-LEDs-pinmux-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0085-pinmux-util.patch delete mode 100644 target/linux/ramips/patches-4.4/0086-usbphy.patch delete mode 100644 target/linux/ramips/patches-4.4/0100-MIPS-ralink-allow-NULL-clock-for-clk_get_rate.patch delete mode 100644 target/linux/ramips/patches-4.4/0103-MIPS-OWRTDTB.patch delete mode 100644 target/linux/ramips/patches-4.4/0104-fix_bootargs_handling.patch delete mode 100644 target/linux/ramips/patches-4.4/0105-set_mt7621_soc_type.patch delete mode 100644 target/linux/ramips/patches-4.4/0200-linkit_bootstrap.patch delete mode 100644 target/linux/ramips/patches-4.4/0500-Documentation-DT-net-add-docs-for-ralink-mediatek-So.patch delete mode 100644 target/linux/ramips/patches-4.4/0501-net-next-mediatek-add-the-drivers-core-files.patch delete mode 100644 target/linux/ramips/patches-4.4/0502-net-next-mediatek-add-switch-driver-for-rt3050.patch delete mode 100644 target/linux/ramips/patches-4.4/0503-net-next-mediatek-add-switch-driver-for-mt7620.patch delete mode 100644 target/linux/ramips/patches-4.4/0504-net-next-mediatek-add-switch-driver-for-mt7621.patch delete mode 100644 target/linux/ramips/patches-4.4/0505-net-next-mediatek-add-support-for-rt2880.patch delete mode 100644 target/linux/ramips/patches-4.4/0506-net-next-mediatek-add-support-for-rt3050.patch delete mode 100644 target/linux/ramips/patches-4.4/0507-net-next-mediatek-add-support-for-rt3883.patch delete mode 100644 target/linux/ramips/patches-4.4/0508-net-next-mediatek-add-support-for-mt7620.patch delete mode 100644 target/linux/ramips/patches-4.4/0509-net-next-mediatek-add-support-for-mt7621.patch delete mode 100644 target/linux/ramips/patches-4.4/0510-net-next-mediatek-add-Kconfig-and-Makefile.patch delete mode 100644 target/linux/ramips/patches-4.4/0511-net-mediatek-add-support-for-the-multiphy-carrier-pa.patch delete mode 100644 target/linux/ramips/patches-4.4/0512-net-mediatek-add-swconfig-driver-for-esw_rt3050.patch delete mode 100644 target/linux/ramips/patches-4.4/0513-net-mediatek-add-swconfig-driver-for-gsw_mt762x.patch delete mode 100644 target/linux/ramips/patches-4.4/0514-net-mediatek-fix_esw.patch delete mode 100644 target/linux/ramips/patches-4.4/0515-net-mediatek-fix-multicast-icmpv6-for-the-rt3050-eth.patch delete mode 100644 target/linux/ramips/patches-4.4/0516-Documentation-DT-net-mediatek-fix-documentation-for-.patch delete mode 100644 target/linux/ramips/patches-4.4/0517-net-mediatek-fix-comment-in-rt3050-ethernet-switch-d.patch delete mode 100644 target/linux/ramips/patches-4.4/0518-net-mediatek-get-rt3050-ethernet-ports-to-be-disable.patch delete mode 100644 target/linux/ramips/patches-4.4/0519-gsw_mt7621.patch delete mode 100644 target/linux/ramips/patches-4.4/0520-esw-gmac.patch delete mode 100644 target/linux/ramips/patches-4.4/0601-net-mediatke-add-phy_ethtool_ioctl-support.patch delete mode 100644 target/linux/ramips/patches-4.4/0700-pinctrl-mt7620-mdio-as-refclk.patch delete mode 100644 target/linux/ramips/patches-4.4/0720-arch-mips-ralink-add-i2c-clocks.patch delete mode 100644 target/linux/ramips/patches-4.4/0721-asoc-enable-wm8960-kconfig.patch delete mode 100644 target/linux/ramips/patches-4.4/0901-spansion_nand_id_fix.patch delete mode 100644 target/linux/ramips/patches-4.4/0902-mediatek-4-byte-spi-reset.patch delete mode 100644 target/linux/ramips/patches-4.4/100-mt7621-core-detect-hack.patch delete mode 100644 target/linux/ramips/patches-4.4/101-mt7621-timer.patch delete mode 100644 target/linux/ramips/rt288x/config-4.4 delete mode 100644 target/linux/ramips/rt288x/target.mk delete mode 100644 target/linux/ramips/rt305x/config-4.4 delete mode 100644 target/linux/ramips/rt305x/profiles/00-default.mk delete mode 100644 target/linux/ramips/rt305x/target.mk delete mode 100644 target/linux/ramips/rt3883/config-4.4 delete mode 100644 target/linux/ramips/rt3883/profiles/00-default.mk delete mode 100644 target/linux/ramips/rt3883/target.mk create mode 100644 target/linux/sunxi/base-files/lib/firmware/brcm/brcmfmac43430-sdio.txt delete mode 100644 target/linux/sunxi/base-files/lib/preinit/02_b53_hack.sh create mode 100644 target/linux/sunxi/base-files/lib/preinit/03_b53_hack.sh delete mode 100644 target/linux/sunxi/base-files/lib/sunxi.sh create mode 100644 target/linux/sunxi/config-4.14 delete mode 100644 target/linux/sunxi/config-4.4 create mode 100644 target/linux/sunxi/config-4.9 create mode 100644 target/linux/sunxi/cortexa53/config-default create mode 100644 target/linux/sunxi/cortexa53/target.mk create mode 100644 target/linux/sunxi/cortexa7/config-default create mode 100644 target/linux/sunxi/cortexa7/target.mk create mode 100644 target/linux/sunxi/cortexa8/config-default create mode 100644 target/linux/sunxi/cortexa8/target.mk create mode 100644 target/linux/sunxi/image/cortex-a53.mk create mode 100644 target/linux/sunxi/image/cortex-a7.mk create mode 100644 target/linux/sunxi/image/cortex-a8.mk create mode 100644 target/linux/sunxi/patches-4.14/001-net-stmmac-snps-dwmac-mdio-MDIOs-are-automatically-r.patch create mode 100644 target/linux/sunxi/patches-4.14/002-net-stmmac-dwmac-sun8i-Handle-integrated-external-MD.patch create mode 100644 target/linux/sunxi/patches-4.14/003-net-stmmac-sun8i-Restore-the-compatibles.patch create mode 100644 target/linux/sunxi/patches-4.14/004-net-stmmac-dwmac-sun8i-fix-allwinner-leds-active-low.patch create mode 100644 target/linux/sunxi/patches-4.14/020-ARM-dts-sunxi-Restore-EMAC-changes-boards.patch create mode 100644 target/linux/sunxi/patches-4.14/021-arm-dts-sunxi-h3-h5-Restore-EMAC-changes.patch create mode 100644 target/linux/sunxi/patches-4.14/022-ARM-dts-sunxi-h3-h5-represent-the-mdio-switch-used-b.patch create mode 100644 target/linux/sunxi/patches-4.14/025-arm64-dts-allwinner-A64-Restore-EMAC-changes.patch create mode 100644 target/linux/sunxi/patches-4.14/026-arm64-dts-allwinner-add-snps-dwmac-mdio-compatible-t.patch create mode 100644 target/linux/sunxi/patches-4.14/027-arm64-dts-allwinner-H5-Restore-EMAC-changes.patch create mode 100644 target/linux/sunxi/patches-4.14/030-arm64-allwinner-a64-add-Ethernet-PHY-regulator-for-s.patch create mode 100644 target/linux/sunxi/patches-4.14/060-ARM-dts-sun8i-add-support-for-Orange-Pi-R1.patch create mode 100644 target/linux/sunxi/patches-4.14/061-arm-dts-sun50i-support-for-nanopi-neo-plus2-board.patch create mode 100644 target/linux/sunxi/patches-4.14/115-musb-ignore-vbus-errors.patch create mode 100644 target/linux/sunxi/patches-4.14/131-reset-add-h3-resets.patch create mode 100644 target/linux/sunxi/patches-4.14/201-ARM-dts-sun8i-fix-USB-Ethernet-of-Orange-Pi-R1.patch create mode 100644 target/linux/sunxi/patches-4.14/202-ARM-dts-sun8i-activate-SPI-on-Orange-Pi-R1.patch create mode 100644 target/linux/sunxi/patches-4.14/220-ARM-dts-orange-pi-zero-plus.patch create mode 100644 target/linux/sunxi/patches-4.14/310-Revert-ARM-dts-sun7i-Add-BCM53125-switch-nodes-to-th.patch delete mode 100644 target/linux/sunxi/patches-4.4/100-clk-sunxi-add-dram-gates-support.patch delete mode 100644 target/linux/sunxi/patches-4.4/101-dt-sun4i-add-dram-gates.patch delete mode 100644 target/linux/sunxi/patches-4.4/102-dt-sun7i-add-dram-gates.patch delete mode 100644 target/linux/sunxi/patches-4.4/103-clk-sunxi-add-h3-clksupport.patch delete mode 100644 target/linux/sunxi/patches-4.4/104-1-dt-sunxi-add-h3-dtsi.patch delete mode 100644 target/linux/sunxi/patches-4.4/104-2-dt-sun8i-add-orangepi-plus.patch delete mode 100644 target/linux/sunxi/patches-4.4/105-phy-use_of_match_node.patch delete mode 100644 target/linux/sunxi/patches-4.4/106-phy-add-h3-usbphys.patch delete mode 100644 target/linux/sunxi/patches-4.4/107-clk-sunxi-add-h3-usbphy-clocks.patch delete mode 100644 target/linux/sunxi/patches-4.4/110-clk-sunxi-add-ve-for-sun457i.patch delete mode 100644 target/linux/sunxi/patches-4.4/111-1-dt-sun4i-add-ve-clock-module.patch delete mode 100644 target/linux/sunxi/patches-4.4/111-2-dt-sun7i-add-ve-clock-module.patch delete mode 100644 target/linux/sunxi/patches-4.4/115-musb-ignore-vbus-errors.patch delete mode 100644 target/linux/sunxi/patches-4.4/130-pinctrl-sunxi-add-h3-pio.patch delete mode 100644 target/linux/sunxi/patches-4.4/131-reset-add-h3-resets.patch delete mode 100644 target/linux/sunxi/patches-4.4/132-dt-sun8i-add-h3-usbclocks.patch delete mode 100644 target/linux/sunxi/patches-4.4/133-dt-sun8i-add-usbphy-usbhost-ctrl-nodes.patch delete mode 100644 target/linux/sunxi/patches-4.4/134-dt-sun8i-orangepiplus-enable-usbhost.patch delete mode 100644 target/linux/sunxi/patches-4.4/135-clk-sunxi-fix-signedness-bug.patch delete mode 100644 target/linux/sunxi/patches-4.4/140-reset-add-of_reset_control_get_by_index.patch delete mode 100644 target/linux/sunxi/patches-4.4/141-reset-fix-of_reset_control_get.patch delete mode 100644 target/linux/sunxi/patches-4.4/142-reset-use-ENOTSUPP-instead-of-ENOSYS.patch delete mode 100644 target/linux/sunxi/patches-4.4/143-reset-add-shared-resetcontrol-asserts.patch delete mode 100644 target/linux/sunxi/patches-4.4/144-usb-ehci-plat-support-multiple-reset-ctrllines.patch delete mode 100644 target/linux/sunxi/patches-4.4/145-usb-ohci-plat-support-multiple-reset-ctrllines.patch delete mode 100644 target/linux/sunxi/patches-4.4/150-dt-sun7i-enable-codec-on-pcduino3.patch delete mode 100644 target/linux/sunxi/patches-4.4/200-dt-sun7i-add-lamobo-r1.patch create mode 100644 target/linux/sunxi/patches-4.9/0002-clk-sunxi-ng-Rename-the-internal-structures.patch create mode 100644 target/linux/sunxi/patches-4.9/0003-clk-sunxi-ng-Remove-the-use-of-rational-computations.patch create mode 100644 target/linux/sunxi/patches-4.9/0004-clk-sunxi-ng-Finish-to-convert-to-structures-for-arg.patch create mode 100644 target/linux/sunxi/patches-4.9/0005-clk-sunxi-ng-Add-minimums-for-all-the-relevant-struc.patch create mode 100644 target/linux/sunxi/patches-4.9/0006-clk-sunxi-ng-Implement-minimum-for-multipliers.patch create mode 100644 target/linux/sunxi/patches-4.9/0007-clk-sunxi-ng-Add-A64-clocks.patch create mode 100644 target/linux/sunxi/patches-4.9/0010-arm64-dts-add-Allwinner-A64-SoC-.dtsi.patch create mode 100644 target/linux/sunxi/patches-4.9/0011-arm64-dts-add-Pine64-support.patch create mode 100644 target/linux/sunxi/patches-4.9/0012-arm64-dts-fix-build-errors-from-missing-dependencies.patch create mode 100644 target/linux/sunxi/patches-4.9/0013-arm64-dts-allwinner-add-USB1-related-nodes-of-Allwin.patch create mode 100644 target/linux/sunxi/patches-4.9/0014-arm64-dts-allwinner-sort-the-nodes-in-sun50i-a64-pin.patch create mode 100644 target/linux/sunxi/patches-4.9/0015-arm64-dts-allwinner-enable-EHCI1-OHCI1-and-USB-PHY-n.patch create mode 100644 target/linux/sunxi/patches-4.9/0016-arm64-dts-add-MUSB-node-to-Allwinner-A64-dtsi.patch create mode 100644 target/linux/sunxi/patches-4.9/0017-arm64-dts-enable-the-MUSB-controller-of-Pine64-in-ho.patch create mode 100644 target/linux/sunxi/patches-4.9/0018-arm64-dts-allwinner-Remove-no-longer-used-pinctrl-su.patch create mode 100644 target/linux/sunxi/patches-4.9/0019-arm64-allwinner-a64-Add-MMC-nodes.patch create mode 100644 target/linux/sunxi/patches-4.9/0020-arm64-allwinner-a64-Add-MMC-pinctrl-nodes.patch create mode 100644 target/linux/sunxi/patches-4.9/0022-arm64-allwinner-pine64-add-MMC-support.patch create mode 100644 target/linux/sunxi/patches-4.9/0023-arm64-allwinner-a64-add-UART1-pin-nodes.patch create mode 100644 target/linux/sunxi/patches-4.9/0024-arm64-allwinner-a64-add-r_ccu-node.patch create mode 100644 target/linux/sunxi/patches-4.9/0025-arm64-allwinner-a64-add-R_PIO-pinctrl-node.patch create mode 100644 target/linux/sunxi/patches-4.9/0026-arm64-allwinner-a64-add-pmu0-regs-for-USB-PHY.patch create mode 100644 target/linux/sunxi/patches-4.9/0027-arm64-allwinner-a64-Add-PLL_PERIPH0-clock-to-the-R_C.patch create mode 100644 target/linux/sunxi/patches-4.9/0030-pinctrl-sunxi-Rework-the-pin-config-building-code.patch create mode 100644 target/linux/sunxi/patches-4.9/0031-pinctrl-sunxi-Use-macros-from-bindings-header-file-f.patch create mode 100644 target/linux/sunxi/patches-4.9/0032-pinctrl-sunxi-Handle-bias-disable.patch create mode 100644 target/linux/sunxi/patches-4.9/0033-pinctrl-sunxi-Support-generic-binding.patch create mode 100644 target/linux/sunxi/patches-4.9/0034-pinctrl-sunxi-Deal-with-configless-pins.patch create mode 100644 target/linux/sunxi/patches-4.9/0035-pinctrl-sunxi-make-bool-drivers-explicitly-non-modul.patch create mode 100644 target/linux/sunxi/patches-4.9/0036-pinctrl-sunxi-Free-configs-in-pinctrl_map-only-if-it.patch create mode 100644 target/linux/sunxi/patches-4.9/0037-pinctrl-sunxi-Fix-PIN_CONFIG_BIAS_PULL_-DOWN-UP-argu.patch create mode 100644 target/linux/sunxi/patches-4.9/0038-pinctrl-sunxi-Add-support-for-fetching-pinconf-setti.patch create mode 100644 target/linux/sunxi/patches-4.9/0039-pinctrl-sunxi-Make-sunxi_pconf_group_set-use-sunxi_p.patch create mode 100644 target/linux/sunxi/patches-4.9/0040-pinctrl-sunxi-Add-support-for-interrupt-debouncing.patch create mode 100644 target/linux/sunxi/patches-4.9/0041-pinctrl-sunxi-fix-theoretical-uninitialized-variable.patch create mode 100644 target/linux/sunxi/patches-4.9/0042-pinctrl-sunxi-Testing-the-wrong-variable.patch create mode 100644 target/linux/sunxi/patches-4.9/0043-pinctrl-sunxi-Don-t-enforce-bias-disable-for-now.patch create mode 100644 target/linux/sunxi/patches-4.9/0045-arm-dts-sun8i-add-common-dtsi-file-for-nanopi-SBCs.patch create mode 100644 target/linux/sunxi/patches-4.9/0050-stmmac-form-4-10.patch create mode 100644 target/linux/sunxi/patches-4.9/0051-stmmac-form-4-11.patch create mode 100644 target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch create mode 100644 target/linux/sunxi/patches-4.9/0053-stmmac-form-4-13.patch create mode 100644 target/linux/sunxi/patches-4.9/0054-crypto-sun4i-ss_support_the_Security_System_PRNG.patch create mode 100644 target/linux/sunxi/patches-4.9/0060-arm64-allwinner-sun50i-a64-Add-dt-node-for-the-sysco.patch create mode 100644 target/linux/sunxi/patches-4.9/0061-arm64-allwinner-sun50i-a64-add-dwmac-sun8i-Ethernet-.patch create mode 100644 target/linux/sunxi/patches-4.9/0062-arm64-allwinner-pine64-Enable-dwmac-sun8i.patch create mode 100644 target/linux/sunxi/patches-4.9/0063-arm64-allwinner-pine64-plus-Enable-dwmac-sun8i.patch create mode 100644 target/linux/sunxi/patches-4.9/0064-arm64-allwinner-sun50i-a64-Correct-emac-register-siz.patch create mode 100644 target/linux/sunxi/patches-4.9/0065-arm64-allwinner-a64-pine64-add-missing-ethernet0-ali.patch create mode 100644 target/linux/sunxi/patches-4.9/0070-arm-sun8i-sunxi-h3-h5-Add-dt-node-for-the-syscon-con.patch create mode 100644 target/linux/sunxi/patches-4.9/0071-arm-sun8i-sunxi-h3-h5-add-dwmac-sun8i-ethernet-drive.patch create mode 100644 target/linux/sunxi/patches-4.9/0072-arm-sun8i-orangepi-2-Enable-dwmac-sun8i.patch create mode 100644 target/linux/sunxi/patches-4.9/0073-ARM-sun8i-orangepi-plus-Enable-dwmac-sun8i.patch create mode 100644 target/linux/sunxi/patches-4.9/0074-ARM-dts-sunxi-h3-h5-Correct-emac-register-size.patch create mode 100644 target/linux/sunxi/patches-4.9/0080-ARM-dts-sunxi-nanopi-neo-Enable-dwmac-sun8i.patch create mode 100644 target/linux/sunxi/patches-4.9/0081-ARM-dts-sun8i-nanopi-neo-enable-UART-USB-and-I2C-pin.patch create mode 100644 target/linux/sunxi/patches-4.9/090-sunxi-mmc-from-4-13.patch create mode 100644 target/linux/sunxi/patches-4.9/115-musb-ignore-vbus-errors.patch create mode 100644 target/linux/sunxi/patches-4.9/131-reset-add-h3-resets.patch create mode 100644 target/linux/sunxi/patches-4.9/200-ARM-dts-sunxi-add-support-for-Orange-Pi-R1-board.patch create mode 100644 target/linux/sunxi/patches-4.9/205-arm-dts-sun8i-add-support-for-nanopi-m1-plus-board.patch delete mode 100644 target/linux/uml/patches-4.4/101-mconsole-exec.patch delete mode 100644 target/linux/uml/patches-4.4/102-pseudo-random-mac.patch create mode 100644 target/linux/uml/patches-4.9/000-um-Avoid-longjmp-setjmp-symbol-clashes-with-libpthre.patch create mode 100644 target/linux/uml/patches-4.9/001-um-Allow-building-and-running-on-older-hosts.patch create mode 100644 target/linux/uml/patches-4.9/002-um-Correctly-check-for-PTRACE_GETRESET-SETREGSET.patch create mode 100644 target/linux/uml/patches-4.9/003-um-Fix-check-for-_xstate-for-older-hosts.patch create mode 100644 target/linux/uml/patches-4.9/101-mconsole-exec.patch create mode 100644 target/linux/uml/patches-4.9/102-pseudo-random-mac.patch delete mode 100644 target/linux/x86/64/config-default delete mode 100644 target/linux/x86/64/profiles/000-Generic.mk delete mode 100644 target/linux/x86/64/target.mk delete mode 100644 target/linux/x86/Makefile delete mode 100755 target/linux/x86/base-files/etc/board.d/01_leds delete mode 100755 target/linux/x86/base-files/etc/board.d/02_network delete mode 100644 target/linux/x86/base-files/etc/diag.sh delete mode 100644 target/linux/x86/base-files/etc/inittab delete mode 100644 target/linux/x86/base-files/lib/preinit/15_essential_fs_x86 delete mode 100644 target/linux/x86/base-files/lib/preinit/20_check_iso delete mode 100644 target/linux/x86/base-files/lib/preinit/20_sysinfo delete mode 100644 target/linux/x86/base-files/lib/preinit/79_move_config delete mode 100644 target/linux/x86/base-files/lib/upgrade/platform.sh delete mode 100644 target/linux/x86/config-4.4 delete mode 100644 target/linux/x86/generic/base-files/lib/preinit/45_mount_xenfs delete mode 100644 target/linux/x86/generic/config-default delete mode 100644 target/linux/x86/generic/profiles/000-Generic.mk delete mode 100644 target/linux/x86/generic/target.mk delete mode 100644 target/linux/x86/geode/config-default delete mode 100644 target/linux/x86/geode/profiles/000-Generic.mk delete mode 100644 target/linux/x86/geode/profiles/100-Geos.mk delete mode 100644 target/linux/x86/geode/target.mk delete mode 100644 target/linux/x86/image/Makefile delete mode 100755 target/linux/x86/image/gen_image_generic.sh delete mode 100644 target/linux/x86/image/grub-early.cfg delete mode 100644 target/linux/x86/image/grub-iso.cfg delete mode 100644 target/linux/x86/image/grub.cfg delete mode 100644 target/linux/x86/legacy/config-default delete mode 100644 target/linux/x86/legacy/profiles/000-Generic.mk delete mode 100644 target/linux/x86/legacy/target.mk delete mode 100644 target/linux/x86/modules.mk delete mode 100644 target/linux/x86/patches-4.4/011-tune_lzma_options.patch delete mode 100644 target/linux/x86/patches-4.4/097-0001-sp5100_tco-Add-AMD-Mullins-platform-support.patch delete mode 100644 target/linux/x86/patches-4.4/097-0002-sp5100_tco-Add-AMD-Carrizo-platform-support.patch delete mode 100644 target/linux/x86/patches-4.4/097-0003-sp5100_tco-fix-the-device-check-for-SB800-and-later-chipsets.patch delete mode 100644 target/linux/x86/patches-4.4/097-0004-watchdog-sp5100_tco-properly-check-for-new-register-.patch delete mode 100644 target/linux/x86/patches-4.4/100-fix_cs5535_clockevt.patch delete mode 100644 toolchain/binutils/patches/2.25.1/300-001_ld_makefile_patch.patch delete mode 100644 toolchain/binutils/patches/2.25.1/300-012_check_ldrunpath_length.patch delete mode 100644 toolchain/binutils/patches/2.25.1/400-mips_no_dynamic_linking_sym.patch delete mode 100644 toolchain/binutils/patches/2.25.1/500-Change-default-emulation-for-mips64-linux.patch create mode 100644 toolchain/binutils/patches/2.27/001-MIPS_BFD_Remove_EI_ABIVERSION_5.patch create mode 100644 toolchain/binutils/patches/2.29.1/300-001_ld_makefile_patch.patch create mode 100644 toolchain/binutils/patches/2.29.1/300-012_check_ldrunpath_length.patch create mode 100644 toolchain/binutils/patches/2.29.1/400-mips_no_dynamic_linking_sym.patch create mode 100644 toolchain/binutils/patches/2.29.1/500-Change-default-emulation-for-mips64-linux.patch create mode 100644 toolchain/binutils/patches/2.30/300-001_ld_makefile_patch.patch create mode 100644 toolchain/binutils/patches/2.30/300-012_check_ldrunpath_length.patch create mode 100644 toolchain/binutils/patches/2.30/400-mips_no_dynamic_linking_sym.patch create mode 100644 toolchain/binutils/patches/2.30/500-Change-default-emulation-for-mips64-linux.patch delete mode 100644 toolchain/binutils/patches/arc-2016.03/200-arc-fix-target-mask.patch create mode 100644 toolchain/gcc/exclude-testsuite delete mode 100644 toolchain/gcc/patches/5.4.0/010-documentation.patch delete mode 100644 toolchain/gcc/patches/5.4.0/030-macos-header-fix-backport.patch delete mode 100644 toolchain/gcc/patches/5.4.0/100-uclibc-conf.patch delete mode 100644 toolchain/gcc/patches/5.4.0/200-musl_config.patch delete mode 100644 toolchain/gcc/patches/5.4.0/203-musl_powerpc.patch delete mode 100644 toolchain/gcc/patches/5.4.0/280-musl-disable-ifunc-by-default.patch delete mode 100644 toolchain/gcc/patches/5.4.0/870-ppc_no_crtsavres.patch delete mode 100644 toolchain/gcc/patches/5.4.0/910-mbsd_multi.patch delete mode 100644 toolchain/gcc/patches/5.4.0/920-specs_nonfatal_getenv.patch delete mode 100644 toolchain/gcc/patches/5.4.0/931-fix-MIPS-softfloat-build-issue.patch delete mode 100644 toolchain/gcc/patches/5.4.0/940-no-clobber-stamp-bits.patch delete mode 100644 toolchain/gcc/patches/5.4.0/950-cpp_file_path_translation.patch rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/001-revert_register_mode_search.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/002-case_insensitive.patch (100%) create mode 100644 toolchain/gcc/patches/5.5.0/010-documentation.patch rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/020-no-plt-backport.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/040-fix-mips-ICE-PR-68400.patch (100%) create mode 100644 toolchain/gcc/patches/5.5.0/200-musl_config.patch rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/201-musl_arm.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/202-musl_mips.patch (100%) create mode 100644 toolchain/gcc/patches/5.5.0/203-musl_powerpc.patch rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/204-musl_sh.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/205-musl_x86.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/206-musl_aarch64.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/207-musl_fixincludes.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/209-musl_libstdc++.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/230-musl_libssp.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/240-musl-libitm-fixes.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/250-add-musl.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/260-musl-add-unwind-fix.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/270-musl-add-powerpc-softfloat-fix.patch (100%) create mode 100644 toolchain/gcc/patches/5.5.0/280-musl-disable-ifunc-by-default.patch rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/300-mips_Os_cpu_rtx_cost_model.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/800-arm_v5te_no_ldrd_strd.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/810-arm-softfloat-libgcc.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/820-libgcc_pic.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/830-arm_unbreak_armv4t.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/840-armv4_pass_fix-v4bx_to_ld.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/850-use_shared_libgcc.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/851-libgcc_no_compat.patch (100%) create mode 100644 toolchain/gcc/patches/5.5.0/870-ppc_no_crtsavres.patch rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/880-no_java_section.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/881-no_tm_section.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/900-bad-mips16-crt.patch (100%) create mode 100644 toolchain/gcc/patches/5.5.0/910-mbsd_multi.patch create mode 100644 toolchain/gcc/patches/5.5.0/920-specs_nonfatal_getenv.patch rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/930-fix-mips-noexecstack.patch (100%) create mode 100644 toolchain/gcc/patches/5.5.0/931-fix-MIPS-softfloat-build-issue.patch create mode 100644 toolchain/gcc/patches/5.5.0/940-no-clobber-stamp-bits.patch create mode 100644 toolchain/gcc/patches/5.5.0/950-cpp_file_path_translation.patch rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/960-go_libm.patch (100%) rename toolchain/gcc/patches/{5.4.0 => 5.5.0}/970-warn_bug.patch (100%) delete mode 100644 toolchain/gcc/patches/6.3.0/001-revert_register_mode_search.patch delete mode 100644 toolchain/gcc/patches/6.3.0/002-case_insensitive.patch delete mode 100644 toolchain/gcc/patches/6.3.0/010-documentation.patch delete mode 100644 toolchain/gcc/patches/6.3.0/100-uclibc-conf.patch delete mode 100644 toolchain/gcc/patches/6.3.0/230-musl_libssp.patch delete mode 100644 toolchain/gcc/patches/6.3.0/280-musl-disable-ifunc-by-default.patch delete mode 100644 toolchain/gcc/patches/6.3.0/300-mips_Os_cpu_rtx_cost_model.patch delete mode 100644 toolchain/gcc/patches/6.3.0/800-arm_v5te_no_ldrd_strd.patch delete mode 100644 toolchain/gcc/patches/6.3.0/810-arm-softfloat-libgcc.patch delete mode 100644 toolchain/gcc/patches/6.3.0/820-libgcc_pic.patch delete mode 100644 toolchain/gcc/patches/6.3.0/830-arm_unbreak_armv4t.patch delete mode 100644 toolchain/gcc/patches/6.3.0/840-armv4_pass_fix-v4bx_to_ld.patch delete mode 100644 toolchain/gcc/patches/6.3.0/850-use_shared_libgcc.patch delete mode 100644 toolchain/gcc/patches/6.3.0/851-libgcc_no_compat.patch delete mode 100644 toolchain/gcc/patches/6.3.0/870-ppc_no_crtsavres.patch delete mode 100644 toolchain/gcc/patches/6.3.0/880-no_java_section.patch delete mode 100644 toolchain/gcc/patches/6.3.0/881-no_tm_section.patch delete mode 100644 toolchain/gcc/patches/6.3.0/900-bad-mips16-crt.patch delete mode 100644 toolchain/gcc/patches/6.3.0/910-mbsd_multi.patch delete mode 100644 toolchain/gcc/patches/6.3.0/920-specs_nonfatal_getenv.patch delete mode 100644 toolchain/gcc/patches/6.3.0/930-fix-mips-noexecstack.patch delete mode 100644 toolchain/gcc/patches/6.3.0/940-no-clobber-stamp-bits.patch delete mode 100644 toolchain/gcc/patches/6.3.0/950-cpp_file_path_translation.patch create mode 100644 toolchain/gcc/patches/7.3.0/001-revert_register_mode_search.patch create mode 100644 toolchain/gcc/patches/7.3.0/002-case_insensitive.patch create mode 100644 toolchain/gcc/patches/7.3.0/010-documentation.patch create mode 100644 toolchain/gcc/patches/7.3.0/020-PR-libstdc-81797-Add-.NOTPARALLEL-to-include-Makefil.patch create mode 100644 toolchain/gcc/patches/7.3.0/100-PR-rtl-optimization-83496.patch create mode 100644 toolchain/gcc/patches/7.3.0/110-Fix-MIPS-PR-84790.patch create mode 100644 toolchain/gcc/patches/7.3.0/230-musl_libssp.patch create mode 100644 toolchain/gcc/patches/7.3.0/300-mips_Os_cpu_rtx_cost_model.patch create mode 100644 toolchain/gcc/patches/7.3.0/800-arm_v5te_no_ldrd_strd.patch create mode 100644 toolchain/gcc/patches/7.3.0/810-arm-softfloat-libgcc.patch create mode 100644 toolchain/gcc/patches/7.3.0/820-libgcc_pic.patch create mode 100644 toolchain/gcc/patches/7.3.0/840-armv4_pass_fix-v4bx_to_ld.patch create mode 100644 toolchain/gcc/patches/7.3.0/850-use_shared_libgcc.patch create mode 100644 toolchain/gcc/patches/7.3.0/851-libgcc_no_compat.patch create mode 100644 toolchain/gcc/patches/7.3.0/870-ppc_no_crtsavres.patch create mode 100644 toolchain/gcc/patches/7.3.0/881-no_tm_section.patch create mode 100644 toolchain/gcc/patches/7.3.0/900-bad-mips16-crt.patch create mode 100644 toolchain/gcc/patches/7.3.0/910-mbsd_multi.patch create mode 100644 toolchain/gcc/patches/7.3.0/920-specs_nonfatal_getenv.patch create mode 100644 toolchain/gcc/patches/7.3.0/930-fix-mips-noexecstack.patch create mode 100644 toolchain/gcc/patches/7.3.0/931-libffi-fix-MIPS-softfloat-build-issue.patch create mode 100644 toolchain/gcc/patches/7.3.0/940-no-clobber-stamp-bits.patch create mode 100644 toolchain/gcc/patches/7.3.0/950-cpp_file_path_translation.patch create mode 100644 toolchain/gcc/patches/7.3.0/960-gotools-fix-compilation-when-making-cross-compiler.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/001-revert_register_mode_search.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/002-weak_data_fix.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/003-universal_initializer.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/004-case_insensitive.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/010-documentation.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/020-no-plt-backport.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/100-uclibc-conf.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/210-disable_libsanitizer_off_t_check.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/800-arc-disablelibgmon.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/820-libgcc_pic.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/850-use_shared_libgcc.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/851-libgcc_no_compat.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/860-use_eh_frame.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/870-ppc_no_crtsavres.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/880-no_java_section.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/910-mbsd_multi.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/920-specs_nonfatal_getenv.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/940-no-clobber-stamp-bits.patch delete mode 100644 toolchain/gcc/patches/arc-2016.03/950-fix-building-with-gcc6.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/001-revert_register_mode_search.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/002-case_insensitive.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/010-documentation.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/230-musl_libssp.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/300-mips_Os_cpu_rtx_cost_model.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/800-arm_v5te_no_ldrd_strd.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/810-arm-softfloat-libgcc.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/820-libgcc_pic.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/840-armv4_pass_fix-v4bx_to_ld.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/850-use_shared_libgcc.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/851-libgcc_no_compat.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/870-ppc_no_crtsavres.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/881-no_tm_section.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/900-bad-mips16-crt.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/910-mbsd_multi.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/920-specs_nonfatal_getenv.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/930-fix-mips-noexecstack.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/940-no-clobber-stamp-bits.patch create mode 100644 toolchain/gcc/patches/arc-2017.09-release/950-cpp_file_path_translation.patch delete mode 100644 toolchain/glibc/Config.in delete mode 100644 toolchain/glibc/Config.version rename toolchain/glibc/patches/{2.24 => }/100-fix_cross_rpcgen.patch (100%) delete mode 100644 toolchain/glibc/patches/2.24/200-add-dl-search-paths.patch create mode 100644 toolchain/glibc/patches/200-add-dl-search-paths.patch delete mode 100644 toolchain/insight/Makefile delete mode 100644 toolchain/insight/patches/600-fix-compile-flag-mismatch.patch delete mode 100644 toolchain/musl/Config.version delete mode 100644 toolchain/uClibc/Config.version delete mode 100644 tools/automake/patches/010-automake-port-to-Perl-5.22-and-later.patch create mode 100644 tools/bison/patches/001-fix-macos-vasnprintf.patch delete mode 100644 tools/ccache/patches/110-disable-assembler-support.patch delete mode 100644 tools/cmake/patches/010-backport-macos-fix.patch delete mode 100644 tools/cmake/patches/110-freebsd-compat.patch create mode 100644 tools/cmake/patches/110-libarchive-fix-libressl-compat.patch delete mode 100644 tools/cmake/patches/120-alpine_musl-compat.patch create mode 100644 tools/cmake/patches/120-curl-fix-libressl-linking.patch create mode 100644 tools/cmake/patches/130-bootstrap_parallel_make_flag.patch delete mode 100644 tools/cmake/patches/130-libarchive-fix-libressl-compat.patch delete mode 100644 tools/cmake/patches/140-curl-fix-libressl-linking.patch create mode 100644 tools/cmake/patches/140-curl-fix-libressl.patch delete mode 100644 tools/cmake/patches/150-bootstrap_parallel_make_flag.patch create mode 100644 tools/cmake/patches/150-libarchive-fix-libressl.patch create mode 100644 tools/coreutils/patches/001-fix-macos-vasnprintf.patch delete mode 100644 tools/dosfstools/patches/0001-mkfs-Default-to-64-32-heads-sectors-for-targets-smal.patch rename tools/e2fsprogs/patches/{005-darwin-compat.patch => 004-darwin-compat.patch} (100%) delete mode 100644 tools/e2fsprogs/patches/004-freebsd-compat.patch delete mode 100644 tools/e2fsprogs/patches/005-misc-rename-copy_file_range-to-copy_file_chunk.patch delete mode 100644 tools/e2fsprogs/patches/010-old-libmagic.patch create mode 100644 tools/firmware-utils/src/dns313-header.c create mode 100644 tools/firmware-utils/src/mkdapimg2.c create mode 100644 tools/firmware-utils/src/mkdhpimg.c create mode 100644 tools/firmware-utils/src/mkdlinkfw-lib.c create mode 100644 tools/firmware-utils/src/mkdlinkfw-lib.h create mode 100644 tools/firmware-utils/src/mkdlinkfw.c delete mode 100644 tools/firmware-utils/src/mktplinkfw-kernel.c create mode 100644 tools/firmware-utils/src/mktplinkfw-lib.c create mode 100644 tools/firmware-utils/src/mktplinkfw-lib.h create mode 100644 tools/firmware-utils/src/otrx.c create mode 100644 tools/flex/patches/200-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch delete mode 100644 tools/include/getline.h create mode 100644 tools/lzma-old/patches/120-add-cflags.patch create mode 100644 tools/m4/patches/001-fix-macos-vasnprintf.patch delete mode 100644 tools/m4/patches/100-fix-gets-removal.patch create mode 100644 tools/make-ext4fs/patches/100-add-ldflags.patch delete mode 100644 tools/mkimage/patches/040-include_order.patch delete mode 100644 tools/mkimage/patches/070-socfpgaimage_portability.patch delete mode 100644 tools/mkimage/patches/090-reproducible-SOURCE_DATE_EPOCH.patch delete mode 100644 tools/mkimage/patches/200-compiler-support.patch create mode 100644 tools/mkimage/patches/200-rsa-sign-add-support-for-libressl.patch create mode 100644 tools/mkimage/patches/210-link-libcrypto-static.patch delete mode 100644 tools/mkimage/patches/210-openssl-1.1.x-compat.patch delete mode 100644 tools/mtd-utils/patches/120-include_sysmacros.patch delete mode 100644 tools/mtd-utils/patches/135-mkubifs_optional_lzo.patch delete mode 100644 tools/mtd-utils/patches/310-add-static-linking-option.patch create mode 100644 tools/mtd-utils/patches/320-mkfs.jffs2-SOURCE_DATE_EPOCH.patch delete mode 100644 tools/pkg-config/patches/001-glib-gdate-suppress-string-format-literal-warning.patch delete mode 100644 tools/sed/patches/001-musl_host_fixup.patch create mode 100644 tools/tar/patches/110-symlink-force-permissions.patch delete mode 100644 tools/upx/Makefile delete mode 100644 tools/upx/patches/100-lzmaonly.patch create mode 100644 tools/zlib/Makefile create mode 100644 tools/zlib/patches/900-overridable-pc-exec-prefix.patch diff --git a/Makefile b/Makefile index b220dfd3c5..0a1f96a973 100644 --- a/Makefile +++ b/Makefile @@ -14,11 +14,11 @@ export TOPDIR LC_ALL LANG TZ empty:= space:= $(empty) $(empty) -$(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the LEDE directory must not include any spaces)) +$(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the OpenWrt directory must not include any spaces)) world: -include $(TOPDIR)/include/host.mk +export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH) ifneq ($(OPENWRT_BUILD),1) _SINGLE=export MAKEFLAGS=$(space); @@ -39,8 +39,8 @@ else include tools/Makefile include toolchain/Makefile -$(toolchain/stamp-install): $(tools/stamp-install) -$(target/stamp-compile): $(toolchain/stamp-install) $(tools/stamp-install) $(BUILD_DIR)/.prepared +$(toolchain/stamp-compile): $(tools/stamp-compile) +$(target/stamp-compile): $(toolchain/stamp-compile) $(tools/stamp-compile) $(BUILD_DIR)/.prepared $(package/stamp-compile): $(target/stamp-compile) $(package/stamp-cleanup) $(package/stamp-install): $(package/stamp-compile) $(target/stamp-install): $(package/stamp-compile) $(package/stamp-install) @@ -55,7 +55,7 @@ clean: FORCE rm -rf $(BUILD_DIR) $(STAGING_DIR) $(BIN_DIR) $(OUTPUT_DIR)/packages/$(ARCH_PACKAGES) $(BUILD_LOG_DIR) $(TOPDIR)/staging_dir/packages dirclean: clean - rm -rf $(STAGING_DIR_HOST) $(TOOLCHAIN_DIR) $(BUILD_DIR_HOST) $(BUILD_DIR_TOOLCHAIN) + rm -rf $(STAGING_DIR_HOST) $(STAGING_DIR_HOSTPKG) $(TOOLCHAIN_DIR) $(BUILD_DIR_BASE)/host $(BUILD_DIR_BASE)/hostpkg $(BUILD_DIR_TOOLCHAIN) rm -rf $(TMP_DIR) ifndef DUMP_TARGET_DB @@ -91,10 +91,11 @@ diffconfig: FORCE mkdir -p $(BIN_DIR) $(SCRIPT_DIR)/diffconfig.sh > $(BIN_DIR)/config.seed -prepare: .config $(tools/stamp-install) $(toolchain/stamp-install) +prepare: .config $(tools/stamp-compile) $(toolchain/stamp-compile) + $(_SINGLE)$(SUBMAKE) -r diffconfig + world: prepare $(target/stamp-compile) $(package/stamp-compile) $(package/stamp-install) $(target/stamp-install) FORCE $(_SINGLE)$(SUBMAKE) -r package/index - $(_SINGLE)$(SUBMAKE) -r diffconfig $(_SINGLE)$(SUBMAKE) -r checksum .PHONY: clean dirclean prereq prepare world package/symlinks package/symlinks-install package/symlinks-clean diff --git a/config/Config-build.in b/config/Config-build.in index e0889fcccf..7e12792d79 100644 --- a/config/Config-build.in +++ b/config/Config-build.in @@ -9,15 +9,16 @@ menu "Global build settings" config ALL_NONSHARED bool "Select all target specific packages by default" - default ALL || BUILDBOT + select ALL_KMODS + default BUILDBOT config ALL_KMODS bool "Select all kernel module packages by default" - default ALL config ALL bool "Select all userspace packages by default" - default n + select ALL_KMODS + select ALL_NONSHARED config BUILDBOT bool "Set build defaults for automatic builds (e.g. via buildbot)" @@ -40,7 +41,7 @@ menu "Global build settings" default n config BUILD_PATENTED - default y + default n bool "Compile with support for patented functionality" help When this option is disabled, software which provides patented functionality @@ -52,7 +53,7 @@ menu "Global build settings" bool "Compile with full language support" help When this option is enabled, packages are built with the full versions of - iconv and GNU gettext instead of the default OpenWrt stubs. If uClibc is + iconv and GNU gettext instead of the default libreCMC stubs. If uClibc is used, it is also built with locale support. config SHADOW_PASSWORDS @@ -67,6 +68,12 @@ menu "Global build settings" This removes all ipkg/opkg status data files from the target directory before building the root filesystem. + config INCLUDE_CONFIG + bool "Include build configuration in firmware" if DEVEL + default n + help + If enabled, config.seed will be stored in /etc/build.config of firmware. + config COLLECT_KERNEL_DEBUG bool prompt "Collect kernel debug information" @@ -77,10 +84,12 @@ menu "Global build settings" Useful for release builds, so that kernel issues can be debugged offline later. - comment "Kernel build options" + menu "Kernel build options" source "config/Config-kernel.in" + endmenu + comment "Package build options" config DEBUG @@ -175,6 +184,22 @@ menu "Global build settings" this per package by adding PKG_CHECK_FORMAT_SECURITY:=0 in the package Makefile. + config PKG_ASLR_PIE + bool + prompt "User space ASLR PIE compilation" + select BUSYBOX_DEFAULT_PIE + default n + help + Add -fPIC to CFLAGS and -specs=hardened-build-ld to LDFLAGS. + This enables package build as Position Independent Executables (PIE) + to protect against "return-to-text" attacks. This belongs to the + feature of Address Space Layout Randomisation (ASLR), which is + implemented by the kernel and the ELF loader by randomising the + location of memory allocations. This makes memory addresses harder + to predict when an attacker is attempting a memory-corruption exploit. + You can disable this per package by adding PKG_ASLR_PIE:=0 in the package + Makefile. + choice prompt "User space Stack-Smashing Protection" depends on USE_MUSL @@ -185,11 +210,11 @@ menu "Global build settings" bool "None" config PKG_CC_STACKPROTECTOR_REGULAR bool "Regular" - select SSP_SUPPORT if !USE_MUSL + select GCC_LIBSSP if !USE_MUSL depends on KERNEL_CC_STACKPROTECTOR_REGULAR config PKG_CC_STACKPROTECTOR_STRONG bool "Strong" - select SSP_SUPPORT if !USE_MUSL + select GCC_LIBSSP if !USE_MUSL depends on !GCC_VERSION_4_8 depends on KERNEL_CC_STACKPROTECTOR_STRONG endchoice diff --git a/config/Config-devel.in b/config/Config-devel.in index 1ea66720b8..0dafe6dc1c 100644 --- a/config/Config-devel.in +++ b/config/Config-devel.in @@ -27,7 +27,7 @@ menuconfig DEVEL If not set then defaults to './dl', which is removed by operations such as 'git clean -xdf' or 'make distclean'. This option is useful if you have a low bandwidth Internet connection, and by - setting a path outside the OpenWrt tree downloads will be saved. + setting a path outside the libreCMC tree downloads will be saved. config LOCALMIRROR string "Local mirror for source packages" if DEVEL @@ -39,6 +39,14 @@ menuconfig DEVEL help Automatically rebuild packages when their files change. + config AUTOREMOVE + bool "Automatic removal of build directories" if DEVEL + default n + help + Automatically delete build directories after make target completed. + This allows you to symlink build_dir into a scratch location, e.g. a ramdisk, + which does not have enough space to keep a complete build_dir. + config BUILD_SUFFIX string "Build suffix to append to the target BUILD_DIR variable" if DEVEL default "" @@ -82,13 +90,14 @@ menuconfig DEVEL In this instance, the --reference option of git clone will be used thus creating a quick local clone of your repo. - config KERNEL_GIT_BRANCH - string "Enter git branch to clone" if DEVEL + config KERNEL_GIT_REF + string "Enter git ref at which to checkout" if DEVEL depends on (KERNEL_GIT_CLONE_URI != "") default "" help - Enter the branch name to checkout after cloning the git repository. - In this instance, the --branch option of git clone will be used. + Enter the git ref at which to checkout the git repository + after it is cloned, and before making it a tar-ball. + It can be a git hash or a branch name. If unused, the clone's repository HEAD will be checked-out. config BUILD_LOG diff --git a/config/Config-images.in b/config/Config-images.in index f59a33613d..90e873edb8 100644 --- a/config/Config-images.in +++ b/config/Config-images.in @@ -17,6 +17,7 @@ menu "Target Images" default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ar71xx default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ramips default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_apm821xx + default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_mpc85xx default TARGET_INITRAMFS_COMPRESSION_NONE depends on TARGET_ROOTFS_INITRAMFS help @@ -51,6 +52,13 @@ menu "Target Images" help Kernel uses specified external cpio as INITRAMFS_SOURCE. + config TARGET_INITRAMFS_FORCE + bool "Force" + depends on TARGET_ROOTFS_INITRAMFS + default n + help + Ignore the initramfs passed by the bootloader. + comment "Root filesystem archives" config TARGET_ROOTFS_CPIOGZ @@ -203,6 +211,11 @@ menu "Target Images" default 38400 if TARGET_x86_generic default 115200 + config GRUB_FLOWCONTROL + bool "Use RTE/CTS on serial console" + depends on GRUB_SERIAL != "" + default n + config GRUB_BOOTOPTS string "Extra kernel boot options" depends on GRUB_IMAGES @@ -237,7 +250,7 @@ menu "Target Images" config TARGET_IMAGES_GZIP bool "GZip images" - depends on TARGET_IMAGES_PAD || TARGET_ROOTFS_EXT4FS + depends on TARGET_IMAGES_PAD || TARGET_ROOTFS_EXT4FS || TARGET_x86 default y comment "Image Options" diff --git a/config/Config-kernel.in b/config/Config-kernel.in index a4c46f55ae..1b8d6beb77 100644 --- a/config/Config-kernel.in +++ b/config/Config-kernel.in @@ -42,15 +42,20 @@ config KERNEL_DEBUG_FS write to these files. Many common debugging facilities, such as ftrace, require the existence of debugfs. +config KERNEL_MIPS_FPU_EMULATOR + bool "Compile the kernel with MIPS FPU Emulator" + default y if TARGET_pistachio + depends on (mips || mipsel || mips64 || mips64el) + config KERNEL_ARM_PMU bool default n - depends on (arm || arm64) + depends on (arm || aarch64) config KERNEL_PERF_EVENTS - bool + bool "Compile the kernel with performance events and counters" default n - select KERNEL_ARM_PMU if (arm || arm64) + select KERNEL_ARM_PMU if (arm || aarch64) config KERNEL_PROFILING bool "Compile the kernel with profiling enabled" @@ -170,10 +175,6 @@ config KERNEL_AIO bool "Compile the kernel with asynchronous IO support" default n -config KERNEL_DIRECT_IO - bool "Compile the kernel with direct IO support" - default n - config KERNEL_FHANDLE bool "Compile the kernel with support for fhandle syscalls" default n @@ -235,6 +236,16 @@ config KERNEL_RELAY config KERNEL_KEXEC bool "Enable kexec support" +config KERNEL_PROC_VMCORE + bool + +config KERNEL_CRASH_DUMP + depends on i386 || x86_64 || arm || armeb + select KERNEL_KEXEC + select KERNEL_PROC_VMCORE + bool "Enable support for kexec crashdump" + default y + config USE_RFKILL bool "Enable rfkill support" default RFKILL_SUPPORT @@ -248,7 +259,7 @@ config KERNEL_DEVTMPFS default n help devtmpfs is a simple, kernel-managed /dev filesystem. The kernel creates - devices nodes for all registered devices ti simplify boot, but leaves more + devices nodes for all registered devices to simplify boot, but leaves more complex tasks to userspace (e.g. udev). if KERNEL_DEVTMPFS @@ -601,6 +612,17 @@ config KERNEL_SECCOMP help Build kernel with support for seccomp. +# +# IPv4 configuration +# + +config KERNEL_IP_MROUTE + bool "Enable IPv4 multicast routing" + default y + help + Multicast routing requires a multicast routing daemon in + addition to kernel support. + # # IPv6 configuration # @@ -617,7 +639,11 @@ if KERNEL_IPV6 def_bool y config KERNEL_IPV6_MROUTE - def_bool y + bool "Enable IPv6 multicast routing" + default y + help + Multicast routing requires a multicast routing daemon in + addition to kernel support. config KERNEL_IPV6_PIMSM_V2 def_bool n @@ -666,7 +692,7 @@ menu "Filesystem ACL and attr support options" Make using ACLs (e.g. POSIX ACL, NFSv4 ACL) the default for kernel and packages, except tmpfs, flash filesystems, and old NFS. Also enable userspace extended attribute support - by default. (OpenWrt already has an expection it will be + by default. (libreCMC already has an expection it will be present in the kernel). config KERNEL_FS_POSIX_ACL diff --git a/include/autotools.mk b/include/autotools.mk index c6aa47e0be..aa044aa0b4 100644 --- a/include/autotools.mk +++ b/include/autotools.mk @@ -75,7 +75,7 @@ define autoreconf_target $(strip $(call autoreconf, \ $(PKG_BUILD_DIR), $(PKG_REMOVE_FILES), \ $(PKG_AUTOMAKE_PATHS), $(PKG_LIBTOOL_PATHS), \ - $(STAGING_DIR)/host/share/aclocal $(STAGING_DIR)/usr/share/aclocal $(PKG_MACRO_PATHS))) + $(STAGING_DIR)/host/share/aclocal $(STAGING_DIR_HOSTPKG)/share/aclocal $(STAGING_DIR)/usr/share/aclocal $(PKG_MACRO_PATHS))) endef define patch_libtool_target @@ -105,14 +105,14 @@ ifneq ($(filter patch-libtool,$(PKG_FIXUP)),) endif ifneq ($(filter libtool,$(PKG_FIXUP)),) - PKG_BUILD_DEPENDS += libtool libintl libiconv + PKG_BUILD_DEPENDS += libtool gettext libiconv ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),) Hooks/Configure/Pre += autoreconf_target endif endif ifneq ($(filter libtool-ucxx,$(PKG_FIXUP)),) - PKG_BUILD_DEPENDS += libtool libintl libiconv + PKG_BUILD_DEPENDS += libtool gettext libiconv ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),) Hooks/Configure/Pre += autoreconf_target endif diff --git a/include/cmake.mk b/include/cmake.mk index 5a403cbf41..900dae1d4a 100644 --- a/include/cmake.mk +++ b/include/cmake.mk @@ -34,7 +34,7 @@ CMAKE_NM:=$(call cmake_tool,$(TARGET_NM)) CMAKE_RANLIB:=$(call cmake_tool,$(TARGET_RANLIB)) CMAKE_FIND_ROOT_PATH:=$(STAGING_DIR)/usr;$(TOOLCHAIN_DIR)$(if $(CONFIG_EXTERNAL_TOOLCHAIN),;$(CONFIG_TOOLCHAIN_ROOT)) -CMAKE_HOST_FIND_ROOT_PATH:=$(STAGING_DIR)/host;$(STAGING_DIR_HOST) +CMAKE_HOST_FIND_ROOT_PATH:=$(STAGING_DIR)/host;$(STAGING_DIR_HOSTPKG);$(STAGING_DIR_HOST) CMAKE_SHARED_LDFLAGS:=-Wl,-Bsymbolic-functions define Build/Configure/Default diff --git a/include/depends.mk b/include/depends.mk index 293409d8b7..3df51adae3 100644 --- a/include/depends.mk +++ b/include/depends.mk @@ -11,7 +11,7 @@ # 3: tempfile for file listings # 4: find options -DEP_FINDPARAMS := -x "*/.svn*" -x ".*" -x "*:*" -x "*\!*" -x "* *" -x "*\\\#*" -x "*/.*_check" -x "*/.*.swp" +DEP_FINDPARAMS := -x "*/.svn*" -x ".*" -x "*:*" -x "*\!*" -x "* *" -x "*\\\#*" -x "*/.*_check" -x "*/.*.swp" -x "*/.pkgdir*" find_md5=find $(wildcard $(1)) -type f $(patsubst -x,-and -not -path,$(DEP_FINDPARAMS) $(2)) | mkhash md5 @@ -20,6 +20,7 @@ define rdep .SILENT: $(2)_check $(2): $(2)_check + check-depends: $(2)_check ifneq ($(wildcard $(2)),) $(2)_check:: @@ -46,3 +47,8 @@ endif endef +ifeq ($(filter .%,$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),$(MAKECMDGOALS),x)) + define rdep + $(2): $(2)_check + endef +endif diff --git a/include/download.mk b/include/download.mk index ae3167091e..a46b33d956 100644 --- a/include/download.mk +++ b/include/download.mk @@ -6,8 +6,10 @@ # See /LICENSE for more information. # -OPENWRT_GIT = http://git.openwrt.org -LEDE_GIT = https://git.lede-project.org +PROJECT_GIT = https://gogs.librecmc.org/OWEALs + +OPENWRT_GIT = $(PROJECT_GIT) +LEDE_GIT = $(PROJECT_GIT) ifdef PKG_SOURCE_VERSION PKG_VERSION ?= $(if $(PKG_SOURCE_DATE),$(PKG_SOURCE_DATE)-)$(call version_abbrev,$(PKG_SOURCE_VERSION)) @@ -21,7 +23,7 @@ DOWNLOAD_RDEP=$(STAMP_PREPARED) $(HOST_STAMP_PREPARED) define dl_method $(strip \ $(if $(2),$(2), \ - $(if $(filter @APACHE/% @GITHUB/% @GNOME/% @GNU/% @KERNEL_LIBRE/% @KERNEL/% @SF/% @SAVANNAH/% ftp://% http://% https://% file://%,$(1)),default, \ + $(if $(filter @APACHE/% @GNOME/% @GNU/% @KERNEL_LIBRE/% @KERNEL/% @SF/% @SAVANNAH/% ftp://% http://% https://% file://%,$(1)),default, \ $(if $(filter git://%,$(1)),git, \ $(if $(filter svn://%,$(1)),svn, \ $(if $(filter cvs://%,$(1)),cvs, \ @@ -103,7 +105,7 @@ hash_var = $(if $(filter-out x,$(1)),MD5SUM,HASH) endif define DownloadMethod/unknown - @echo "ERROR: No download method available"; false + echo "ERROR: No download method available"; false endef define DownloadMethod/default diff --git a/include/feeds.mk b/include/feeds.mk index 9ee6d261e8..cecd30424f 100644 --- a/include/feeds.mk +++ b/include/feeds.mk @@ -23,18 +23,10 @@ ifneq ($(CONFIG_PER_FEED_REPO),) endif endif -PACKAGE_DIR_ALL := $(TOPDIR)/staging_dir/packages/$(BOARD) - opkg_package_files = $(wildcard \ $(foreach dir,$(PACKAGE_SUBDIRS), \ $(foreach pkg,$(1), $(dir)/$(pkg)_*.ipk))) -PKG_CONFIG_DEPENDS += \ - CONFIG_PER_FEED_REPO \ - CONFIG_PER_FEED_REPO_ADD_DISABLED \ - CONFIG_PER_FEED_REPO_ADD_COMMENTED \ - $(foreach feed,$(FEEDS_INSTALLED),CONFIG_FEED_$(feed)) - # 1: package name define FeedPackageDir $(strip $(if $(CONFIG_PER_FEED_REPO), \ @@ -47,10 +39,10 @@ endef # 1: destination file define FeedSourcesAppend ( \ - echo "src/gz %n_core %U/%S/packages"; \ + echo "src/gz %d_core %U/targets/%S/packages"; \ $(strip $(if $(CONFIG_PER_FEED_REPO), \ - $(foreach feed,base $(FEEDS_ENABLED),echo "src/gz %n_$(feed) %U/packages/%A/$(feed)";) \ + $(foreach feed,base $(FEEDS_ENABLED),echo "src/gz %d_$(feed) %U/packages/%A/$(feed)";) \ $(if $(CONFIG_PER_FEED_REPO_ADD_DISABLED), \ - $(foreach feed,$(FEEDS_DISABLED),echo "$(if $(CONFIG_PER_FEED_REPO_ADD_COMMENTED),# )src/gz %n_$(feed) %U/packages/%A/$(feed)";)))) \ + $(foreach feed,$(FEEDS_DISABLED),echo "$(if $(CONFIG_PER_FEED_REPO_ADD_COMMENTED),# )src/gz %d_$(feed) %U/packages/%A/$(feed)";)))) \ ) >> $(1) endef diff --git a/include/hardened-ld-pie.specs b/include/hardened-ld-pie.specs new file mode 100644 index 0000000000..7317b19a17 --- /dev/null +++ b/include/hardened-ld-pie.specs @@ -0,0 +1,2 @@ +*self_spec: ++ %{no-pie|static|r|shared:;:-pie} diff --git a/include/hardening.mk b/include/hardening.mk index c277081c51..06a61789ef 100644 --- a/include/hardening.mk +++ b/include/hardening.mk @@ -6,6 +6,7 @@ # PKG_CHECK_FORMAT_SECURITY ?= 1 +PKG_ASLR_PIE ?= 1 PKG_SSP ?= 1 PKG_FORTIFY_SOURCE ?= 1 PKG_RELRO ?= 1 @@ -15,6 +16,12 @@ ifdef CONFIG_PKG_CHECK_FORMAT_SECURITY TARGET_CFLAGS += -Wformat -Werror=format-security endif endif +ifdef CONFIG_PKG_ASLR_PIE + ifeq ($(strip $(PKG_ASLR_PIE)),1) + TARGET_CFLAGS += -fPIC + TARGET_LDFLAGS += -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs + endif +endif ifdef CONFIG_PKG_CC_STACKPROTECTOR_REGULAR ifeq ($(strip $(PKG_SSP)),1) TARGET_CFLAGS += -fstack-protector diff --git a/include/host-build.mk b/include/host-build.mk index b5f1a6bfa7..a2a31ae048 100644 --- a/include/host-build.mk +++ b/include/host-build.mk @@ -19,22 +19,23 @@ else HOST_JOBS?=$(if $(HOST_BUILD_PARALLEL),$(HOST_MAKE_J),-j1) endif -include $(INCLUDE_DIR)/host.mk include $(INCLUDE_DIR)/unpack.mk include $(INCLUDE_DIR)/depends.mk +include $(INCLUDE_DIR)/quilt.mk BUILD_TYPES += host -HOST_STAMP_PREPARED=$(HOST_BUILD_DIR)/.prepared$(if $(HOST_QUILT)$(DUMP),,$(shell $(call find_md5,${CURDIR} $(PKG_FILE_DEPENDS),))) +HOST_STAMP_PREPARED=$(HOST_BUILD_DIR)/.prepared$(if $(HOST_QUILT)$(DUMP),,$(shell $(call find_md5,${CURDIR} $(PKG_FILE_DEPENDS),))_$(call confvar,CONFIG_AUTOREMOVE $(HOST_PREPARED_DEPENDS))) HOST_STAMP_CONFIGURED:=$(HOST_BUILD_DIR)/.configured HOST_STAMP_BUILT:=$(HOST_BUILD_DIR)/.built -HOST_BUILD_PREFIX:=$(if $(IS_PACKAGE_BUILD),$(STAGING_DIR_HOSTPKG),$(STAGING_DIR_HOST)) +HOST_BUILD_PREFIX?=$(if $(IS_PACKAGE_BUILD),$(STAGING_DIR_HOSTPKG),$(STAGING_DIR_HOST)) HOST_STAMP_INSTALLED:=$(HOST_BUILD_PREFIX)/stamp/.$(PKG_NAME)_installed override MAKEFLAGS= -include $(INCLUDE_DIR)/quilt.mk include $(INCLUDE_DIR)/autotools.mk +_host_target:=$(if $(HOST_QUILT),,.) + Host/Patch:=$(Host/Patch/Default) ifneq ($(strip $(HOST_UNPACK)),) define Host/Prepare/Default @@ -51,6 +52,7 @@ endef HOST_CONFIGURE_VARS = \ CC="$(HOSTCC)" \ CFLAGS="$(HOST_CFLAGS)" \ + CXX="$(HOSTCXX)" \ CPPFLAGS="$(HOST_CPPFLAGS)" \ LDFLAGS="$(HOST_LDFLAGS)" \ CONFIG_SHELL="$(SHELL)" @@ -110,7 +112,7 @@ define Host/Compile endef define Host/Install/Default - $(_SINGLE)$(MAKE) -C $(HOST_BUILD_DIR) install + $(call Host/Compile/Default,install) endef define Host/Install @@ -126,7 +128,7 @@ ifneq ($(if $(HOST_QUILT),,$(CONFIG_AUTOREBUILD)),) endif define Host/Exports/Default - $(1) : export ACLOCAL_INCLUDE=$$(foreach p,$$(wildcard $$(STAGING_DIR_HOST)/share/aclocal $$(STAGING_DIR_HOST)/share/aclocal-* $(if $(IS_PACKAGE_BUILD),$$(STAGING_DIR)/host/share/aclocal $$(STAGING_DIR)/host/share/aclocal-*)),-I $$(p)) + $(1) : export ACLOCAL_INCLUDE=$$(foreach p,$$(wildcard $$(STAGING_DIR_HOST)/share/aclocal $$(STAGING_DIR_HOST)/share/aclocal-* $(if $(IS_PACKAGE_BUILD),$$(STAGING_DIR)/host/share/aclocal $$(STAGING_DIR_HOSTPKG)/share/aclocal $$(STAGING_DIR)/host/share/aclocal-*)),-I $$(p)) $(1) : export STAGING_PREFIX=$$(HOST_BUILD_PREFIX) $(1) : export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig:$$(HOST_BUILD_PREFIX)/lib/pkgconfig $(1) : export PKG_CONFIG_LIBDIR=$$(HOST_BUILD_PREFIX)/lib/pkgconfig @@ -173,32 +175,34 @@ ifndef DUMP touch $(HOST_STAMP_BUILT) touch $$@ + $(call DefaultTargets,$(patsubst %,host-%,$(DEFAULT_SUBDIR_TARGETS))) ifndef STAMP_BUILT - prepare: host-prepare - compile: host-compile - install: host-install - clean: host-clean - update: host-update - refresh: host-refresh + $(foreach t,$(DEFAULT_SUBDIR_TARGETS), + $(t): host-$(t) + .$(t): .host-$(t) + ) + clean-build: host-clean-build endif - host-prepare: $(HOST_STAMP_PREPARED) - host-configure: $(HOST_STAMP_CONFIGURED) - host-compile: $(HOST_STAMP_BUILT) $(if $(STAMP_BUILT),$(HOST_STAMP_INSTALLED)) - host-install: $(HOST_STAMP_INSTALLED) - host-clean: FORCE + $(_host_target)host-prepare: $(HOST_STAMP_PREPARED) + $(_host_target)host-configure: $(HOST_STAMP_CONFIGURED) + $(_host_target)host-compile: $(HOST_STAMP_BUILT) $(HOST_STAMP_INSTALLED) + host-install: host-compile + + host-clean-build: FORCE + rm -rf $(HOST_BUILD_DIR) $(HOST_STAMP_BUILT) + + host-clean: host-clean-build $(call Host/Clean) $(call Host/Uninstall) - rm -rf $(HOST_BUILD_DIR) $(HOST_STAMP_INSTALLED) $(HOST_STAMP_BUILT) + rm -rf $(HOST_STAMP_INSTALLED) + ifneq ($(CONFIG_AUTOREMOVE),) + host-compile: + $(FIND) $(HOST_BUILD_DIR) -mindepth 1 -maxdepth 1 -not '(' -type f -and -name '.*' -and -size 0 ')' | \ + $(XARGS) rm -rf + endif endef - - download: - prepare: - compile: - install: - clean: - endif define HostBuild diff --git a/include/host.mk b/include/host.mk deleted file mode 100644 index ec3ae276a4..0000000000 --- a/include/host.mk +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright (C) 2007-2015 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -TMP_DIR ?= $(TOPDIR)/tmp -ifeq ($(if $(TARGET_BUILD),,$(DUMP)),) - -include $(TMP_DIR)/.host.mk -endif - -ifneq ($(__host_inc),1) -__host_inc:=1 - -export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH) - -try-run = $(shell set -e; \ - TMP_F="$(TMP_DIR)/try-run.$$$$.tmp"; \ - if ($(1)) >/dev/null 2>&1; then echo "$(2)"; else echo "$(3)"; fi; \ - rm -f "$$TMP_F"; \ -) - -host-cc-option = $(call try-run, \ - $(HOSTCC) $(HOST_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP_F",$(1),$(2) \ -) - -.PRECIOUS: $(TMP_DIR)/.host.mk -$(TMP_DIR)/.host.mk: $(TOPDIR)/include/host.mk - @mkdir -p $(TMP_DIR) - @( \ - HOST_OS=`uname`; \ - case "$$HOST_OS" in \ - Linux) HOST_ARCH=`uname -m`;; \ - Darwin) HOST_ARCH=`uname -m`;; \ - *) HOST_ARCH=`uname -p`;; \ - esac; \ - GNU_HOST_NAME=`gcc -dumpmachine`; \ - [ -z "$$GNU_HOST_NAME" -o "$$HOST_OS" = "Darwin" ] && \ - GNU_HOST_NAME=`$(TOPDIR)/scripts/config.guess`; \ - echo "HOST_OS:=$$HOST_OS" > $@; \ - echo "HOST_ARCH:=$$HOST_ARCH" >> $@; \ - echo "GNU_HOST_NAME:=$$GNU_HOST_NAME" >> $@; \ - if gfind -L /dev/null || find -L /dev/null; then \ - echo "FIND_L=find -L \$$(1)" >> $@; \ - else \ - echo "FIND_L=find \$$(1) -follow" >> $@; \ - fi \ - ) >/dev/null 2>/dev/null - -endif diff --git a/include/image-commands.mk b/include/image-commands.mk index f77c63137e..395e31f994 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -7,8 +7,46 @@ define Build/uImage mkimage -A $(LINUX_KARCH) \ -O linux -T kernel \ -C $(1) -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ - -n '$(if $(UIMAGE_NAME),$(UIMAGE_NAME),$(call toupper,$(LINUX_KARCH)) libreCMC Linux-$(LINUX_VERSION))' -d $@ $@.new - @mv $@.new $@ + -n '$(if $(UIMAGE_NAME),$(UIMAGE_NAME),$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION))' -d $@ $@.new + mv $@.new $@ +endef + +define Build/buffalo-enc + $(eval product=$(word 1,$(1))) + $(eval version=$(word 2,$(1))) + $(eval args=$(wordlist 3,$(words $(1)),$(1))) + $(STAGING_DIR_HOST)/bin/buffalo-enc \ + -p $(product) -v $(version) $(args) \ + -i $@ -o $@.new + mv $@.new $@ +endef + +define Build/buffalo-enc-tag + $(call Build/buffalo-enc,'' '' -S 152 $(1)) +endef + +define Build/buffalo-tag-dhp + $(eval product=$(word 1,$(1))) + $(eval region=$(word 2,$(1))) + $(eval language=$(word 3,$(1))) + $(STAGING_DIR_HOST)/bin/buffalo-tag \ + -d 0x01000000 -w 1 \ + -a $(BUFFALO_TAG_PLATFORM) \ + -v $(BUFFALO_TAG_VERSION) -m $(BUFFALO_TAG_MINOR) \ + -b $(product) -p $(product) \ + -r $(region) -r $(region) -l $(language) \ + -I $@ -o $@.new + mv $@.new $@ +endef + +define Build/buffalo-dhp-image + $(STAGING_DIR_HOST)/bin/mkdhpimg $@ $@.new + mv $@.new $@ +endef + +define Build/eva-image + $(STAGING_DIR_HOST)/bin/lzma2eva $(KERNEL_LOADADDR) $(KERNEL_LOADADDR) $@ $@.new + mv $@.new $@ endef define Build/netgear-chk @@ -16,22 +54,45 @@ define Build/netgear-chk -o $@.new \ -k $@ \ -b $(NETGEAR_BOARD_ID) \ - -r $(NETGEAR_REGION) + $(if $(NETGEAR_REGION),-r $(NETGEAR_REGION),) mv $@.new $@ endef define Build/netgear-dni $(STAGING_DIR_HOST)/bin/mkdniimg \ - -B $(NETGEAR_BOARD_ID) -v libreCMC.$(REVISION) \ + -B $(NETGEAR_BOARD_ID) -v $(VERSION_DIST).$(REVISION) \ $(if $(NETGEAR_HW_ID),-H $(NETGEAR_HW_ID)) \ -r "$(1)" \ -i $@ -o $@.new mv $@.new $@ endef +define Build/append-squashfs-fakeroot-be + rm -rf $@.fakefs $@.fakesquashfs + mkdir $@.fakefs + $(STAGING_DIR_HOST)/bin/mksquashfs-lzma \ + $@.fakefs $@.fakesquashfs \ + -noappend -root-owned -be -nopad -b 65536 \ + $(if $(SOURCE_DATE_EPOCH),-fixed-time $(SOURCE_DATE_EPOCH)) + cat $@.fakesquashfs >> $@ +endef + +# append a fake/empty uImage header, to fool bootloaders rootfs integrity check +# for example +define Build/append-uImage-fakehdr + touch $@.fakehdr + $(STAGING_DIR_HOST)/bin/mkimage \ + -A $(LINUX_KARCH) -O linux -T $(1) -C none \ + -n '$(VERSION_DIST) fake $(1)' \ + -d $@.fakehdr \ + -s \ + $@.fakehdr + cat $@.fakehdr >> $@ +endef + define Build/tplink-safeloader -$(STAGING_DIR_HOST)/bin/tplink-safeloader \ - -B $(TPLINK_BOARD_NAME) \ + -B $(TPLINK_BOARD_ID) \ -V $(REVISION) \ -k $(IMAGE_KERNEL) \ -r $@ \ @@ -42,8 +103,7 @@ define Build/tplink-safeloader endef define Build/append-dtb - $(call Image/BuildDTB,$(if $(DEVICE_DTS_DIR),$(DEVICE_DTS_DIR),$(DTS_DIR))/$(DEVICE_DTS).dts,$@.dtb) - cat $@.dtb >> $@ + cat $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb >> $@ endef define Build/install-dtb @@ -59,6 +119,7 @@ define Build/fit -D $(DEVICE_NAME) -o $@.its -k $@ \ $(if $(word 2,$(1)),-d $(word 2,$(1))) -C $(word 1,$(1)) \ -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ + -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config@1") \ -A $(LINUX_KARCH) -v $(LINUX_VERSION) PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new @mv $@.new $@ @@ -74,7 +135,7 @@ define Build/lzma-no-dict endef define Build/gzip - gzip -9n -c $@ $(1) > $@.new + gzip -f -9n -c $@ $(1) > $@.new @mv $@.new $@ endef @@ -125,6 +186,10 @@ define Build/append-ubi rm $@.tmp endef +define Build/append-uboot + dd if=$(UBOOT_PATH) >> $@ +endef + define Build/pad-to dd if=$@ of=$@.new bs=$(1) conv=sync mv $@.new $@ @@ -165,6 +230,19 @@ define Build/combined-image @mv $@.new $@ endef +define Build/openmesh-image + $(TOPDIR)/scripts/om-fwupgradecfg-gen.sh \ + "$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" \ + "$@-fwupgrade.cfg" \ + "$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" \ + "$(call param_get_default,rootfs,$(1),$@)" + $(TOPDIR)/scripts/combined-ext-image.sh \ + "$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" "$@" \ + "$@-fwupgrade.cfg" "fwupgrade.cfg" \ + "$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" "kernel" \ + "$(call param_get_default,rootfs,$(1),$@)" "rootfs" +endef + define Build/sysupgrade-tar sh $(TOPDIR)/scripts/sysupgrade-tar.sh \ --board $(if $(BOARD_NAME),$(BOARD_NAME),$(DEVICE_NAME)) \ @@ -173,6 +251,35 @@ define Build/sysupgrade-tar $@ endef +define Build/tplink-v1-header + $(STAGING_DIR_HOST)/bin/mktplinkfw \ + -c -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -L $(KERNEL_LOADADDR) \ + -E $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ + -m $(TPLINK_HEADER_VERSION) -N "$(VERSION_DIST)" -V $(REVISION) \ + -k $@ -o $@.new $(1) + @mv $@.new $@ +endef + +define Build/tplink-v2-header + $(STAGING_DIR_HOST)/bin/mktplinkfw2 \ + -c -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -L $(KERNEL_LOADADDR) \ + -E $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ + -w $(TPLINK_HWREVADD) -F "$(TPLINK_FLASHLAYOUT)" \ + -T $(TPLINK_HVERSION) -V "ver. 2.0" \ + -k $@ -o $@.new $(1) + @mv $@.new $@ +endef + +define Build/tplink-v2-image + $(STAGING_DIR_HOST)/bin/mktplinkfw2 \ + -H $(TPLINK_HWID) -W $(TPLINK_HWREV) \ + -w $(TPLINK_HWREVADD) -F "$(TPLINK_FLASHLAYOUT)" \ + -T $(TPLINK_HVERSION) -V "ver. 2.0" -a 0x4 -j \ + -k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o $@.new $(1) + cat $@.new >> $@ + rm -rf $@.new +endef + json_quote=$(subst ','\'',$(subst ",\",$(1))) #")') metadata_devices=$(if $(1),$(subst "$(space)","$(comma)",$(strip $(foreach v,$(1),"$(call json_quote,$(v))")))) @@ -188,7 +295,7 @@ metadata_json = \ }' define Build/append-metadata - $(if $(SUPPORTED_DEVICES),echo $(call metadata_json,$(SUPPORTED_DEVICES)) | fwtool -I - $@) + $(if $(SUPPORTED_DEVICES),-echo $(call metadata_json,$(SUPPORTED_DEVICES)) | fwtool -I - $@) endef define Build/kernel2minor diff --git a/include/image.mk b/include/image.mk index a01018b689..d358054008 100644 --- a/include/image.mk +++ b/include/image.mk @@ -8,7 +8,6 @@ override TARGET_BUILD= include $(INCLUDE_DIR)/prereq.mk include $(INCLUDE_DIR)/kernel.mk -include $(INCLUDE_DIR)/host.mk include $(INCLUDE_DIR)/version.mk include $(INCLUDE_DIR)/image-commands.mk @@ -19,10 +18,8 @@ ifndef IB endif include $(INCLUDE_DIR)/image-legacy.mk - -ifdef TARGET_PER_DEVICE_ROOTFS - include $(INCLUDE_DIR)/rootfs.mk -endif +include $(INCLUDE_DIR)/feeds.mk +include $(INCLUDE_DIR)/rootfs.mk override MAKE:=$(_SINGLE)$(SUBMAKE) override NO_TRACE_MAKE:=$(_SINGLE)$(NO_TRACE_MAKE) @@ -137,12 +134,13 @@ endef define Image/BuildKernel/MkuImage mkimage -A $(ARCH) -O linux -T kernel -C $(1) -a $(2) -e $(3) \ - -n '$(call toupper,$(ARCH)) libreCMC Linux-$(LINUX_VERSION)' -d $(4) $(5) + -n '$(call toupper,$(ARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION)' -d $(4) $(5) endef define Image/BuildKernel/MkFIT $(TOPDIR)/scripts/mkits.sh \ -D $(1) -o $(KDIR)/fit-$(1).its -k $(2) $(if $(3),-d $(3)) -C $(4) -a $(5) -e $(6) \ + -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config@1") \ -A $(LINUX_KARCH) -v $(LINUX_VERSION) PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/fit-$(1).its $(KDIR)/fit-$(1)$(7).itb endef @@ -162,6 +160,7 @@ define Image/BuildDTB $(TARGET_CROSS)cpp -nostdinc -x assembler-with-cpp \ -I$(DTS_DIR) \ -I$(DTS_DIR)/include \ + -I$(LINUX_DIR)/include/ \ -undef -D__DTS__ $(3) \ -o $(2).tmp $(1) $(LINUX_DIR)/scripts/dtc/dtc -O dtb \ @@ -211,14 +210,15 @@ endef # $(1): board name # $(2): rootfs type # $(3): kernel image +# $(4): compat string ifneq ($(CONFIG_NAND_SUPPORT),) define Image/Build/SysupgradeNAND - mkdir -p "$(KDIR_TMP)/sysupgrade-$(1)/" - echo "BOARD=$(1)" > "$(KDIR_TMP)/sysupgrade-$(1)/CONTROL" - [ -z "$(2)" ] || $(CP) "$(KDIR)/root.$(2)" "$(KDIR_TMP)/sysupgrade-$(1)/root" - [ -z "$(3)" ] || $(CP) "$(3)" "$(KDIR_TMP)/sysupgrade-$(1)/kernel" + mkdir -p "$(KDIR_TMP)/sysupgrade-$(if $(4),$(4),$(1))/" + echo "BOARD=$(if $(4),$(4),$(1))" > "$(KDIR_TMP)/sysupgrade-$(if $(4),$(4),$(1))/CONTROL" + [ -z "$(2)" ] || $(CP) "$(KDIR)/root.$(2)" "$(KDIR_TMP)/sysupgrade-$(if $(4),$(4),$(1))/root" + [ -z "$(3)" ] || $(CP) "$(3)" "$(KDIR_TMP)/sysupgrade-$(if $(4),$(4),$(1))/kernel" (cd "$(KDIR_TMP)"; $(TAR) cvf \ - "$(BIN_DIR)/$(IMG_PREFIX)-$(1)-$(2)-sysupgrade.tar" sysupgrade-$(1) \ + "$(BIN_DIR)/$(IMG_PREFIX)-$(1)-$(2)-sysupgrade.tar" sysupgrade-$(if $(4),$(4),$(1)) \ $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \ ) endef @@ -260,10 +260,7 @@ define Image/mkfs/ext4 endef define Image/Manifest - $(STAGING_DIR_HOST)/bin/opkg \ - --offline-root $(TARGET_DIR) \ - --add-arch all:100 \ - --add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200 list-installed > \ + $(call opkg,$(TARGET_DIR_ORIG)) list-installed > \ $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest endef @@ -302,9 +299,9 @@ target-dir-%: FORCE $(opkg_target) update && \ $(opkg_target) install \ $(call opkg_package_files,$(mkfs_packages_add))) - $(call prepare_rootfs,$(mkfs_cur_target_dir)) - -mv $(mkfs_cur_target_dir).opkg $(mkfs_cur_target_dir)/etc/opkg - rm -f $(mkfs_cur_target_dir).conf + -$(CP) -T $(mkfs_cur_target_dir).opkg/ $(mkfs_cur_target_dir)/etc/opkg/ + rm -rf $(mkfs_cur_target_dir).opkg $(mkfs_cur_target_dir).conf + $(call prepare_rootfs,$(mkfs_cur_target_dir),$(TOPDIR)/files) $(KDIR)/root.%: kernel_prepare $(call Image/mkfs/$(word 1,$(target_params)),$(target_params)) @@ -351,6 +348,7 @@ define Device/Init FS_OPTIONS/ubifs = $$(MKUBIFS_OPTS) DEVICE_DTS := + DEVICE_DTS_CONFIG := DEVICE_DTS_DIR := BOARD_NAME := @@ -363,8 +361,8 @@ endef DEFAULT_DEVICE_VARS := \ DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_SIZE KERNEL_INITRAMFS_IMAGE \ - DEVICE_DTS DEVICE_DTS_DIR BOARD_NAME CMDLINE \ - UBOOTENV_IN_UBI KERNEL_IN_UBI \ + KERNEL_LOADADDR DEVICE_DTS DEVICE_DTS_CONFIG DEVICE_DTS_DIR BOARD_NAME \ + CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI \ BLOCKSIZE PAGESIZE SUBPAGESIZE VID_HDR_OFFSET \ UBINIZE_OPTS UIMAGE_NAME UBINIZE_PARTS \ SUPPORTED_DEVICES IMAGE_METADATA @@ -434,7 +432,27 @@ define Device/Build/compile endef +ifndef IB +define Device/Build/dtb + ifndef BUILD_DTS_$(1) + BUILD_DTS_$(1) := 1 + $(KDIR)/image-$(1).dtb: FORCE + $(call Image/BuildDTB,$(strip $(2))/$(strip $(3)).dts,$$@) + + image_prepare: $(KDIR)/image-$(1).dtb + endif + +endef +endif + define Device/Build/kernel + $$(eval $$(foreach dts,$$(DEVICE_DTS), \ + $$(call Device/Build/dtb,$$(notdir $$(dts)), \ + $$(if $$(DEVICE_DTS_DIR),$$(DEVICE_DTS_DIR),$$(DTS_DIR)), \ + $$(dts) \ + ) \ + )) + $(KDIR)/$$(KERNEL_NAME):: image_prepare $$(_TARGET): $$(if $$(KERNEL_INSTALL),$(BIN_DIR)/$$(KERNEL_IMAGE)) $(call Device/Export,$$(KDIR_KERNEL_IMAGE),$(1)) diff --git a/include/kernel-build.mk b/include/kernel-build.mk index 32da94babc..c3658c216a 100644 --- a/include/kernel-build.mk +++ b/include/kernel-build.mk @@ -4,7 +4,6 @@ # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # -include $(INCLUDE_DIR)/host.mk include $(INCLUDE_DIR)/prereq.mk include $(INCLUDE_DIR)/depends.mk @@ -12,7 +11,7 @@ ifneq ($(DUMP),1) all: compile endif -KERNEL_FILE_DEPENDS=$(GENERIC_PATCH_DIR) $(PATCH_DIR) $(GENERIC_FILES_DIR) $(FILES_DIR) +KERNEL_FILE_DEPENDS=$(BACKPORT_PATCH_DIR) $(GENERIC_PATCH_DIR) $(GENERIC_HACK_DIR) $(PATCH_DIR) $(GENERIC_FILES_DIR) $(FILES_DIR) STAMP_PREPARED=$(LINUX_DIR)/.prepared$(if $(QUILT)$(DUMP),,_$(shell $(call find_md5,$(KERNEL_FILE_DEPENDS),))) STAMP_CONFIGURED:=$(LINUX_DIR)/.configured include $(INCLUDE_DIR)/download.mk @@ -51,14 +50,10 @@ ifneq ($(strip $(CONFIG_KERNEL_GIT_LOCAL_REPOSITORY)),"") KERNEL_GIT_OPTS+=--reference $(CONFIG_KERNEL_GIT_LOCAL_REPOSITORY) endif -ifneq ($(strip $(CONFIG_KERNEL_GIT_BRANCH)),"") - KERNEL_GIT_OPTS+=--branch $(CONFIG_KERNEL_GIT_BRANCH) -endif - define Download/git-kernel URL:=$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)) PROTO:=git - VERSION:=$(CONFIG_KERNEL_GIT_BRANCH) + VERSION:=$(CONFIG_KERNEL_GIT_REF) FILE:=$(LINUX_SOURCE) SUBDIR:=linux-$(LINUX_VERSION) OPTS:=$(KERNEL_GIT_OPTS) @@ -105,7 +100,7 @@ define BuildKernel $(KERNEL_BUILD_DIR)/symtab.h: FORCE rm -f $(KERNEL_BUILD_DIR)/symtab.h touch $(KERNEL_BUILD_DIR)/symtab.h - +$(MAKE) $(KERNEL_MAKEOPTS) vmlinux + +$(KERNEL_MAKE) vmlinux find $(LINUX_DIR) $(STAGING_DIR_ROOT)/lib/modules -name \*.ko | \ xargs $(TARGET_CROSS)nm | \ awk '$$$$1 == "U" { print $$$$2 } ' | \ @@ -152,7 +147,7 @@ define BuildKernel endef download: $(if $(LINUX_SITE),$(DL_DIR)/$(LINUX_SOURCE)) - prepare: $(STAMP_CONFIGURED) + prepare: $(STAMP_PREPARED) compile: $(LINUX_DIR)/.modules $(MAKE) -C image compile TARGET_BUILD= @@ -160,7 +155,9 @@ define BuildKernel rm -f $(LINUX_DIR)/.config.prev rm -f $(STAMP_CONFIGURED) $(LINUX_RECONF_CMD) > $(LINUX_DIR)/.config - $(_SINGLE)$(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKEOPTS) HOST_LOADLIBES="-L$(STAGING_DIR_HOST)/lib -lncurses" $$@ + $(_SINGLE)$(KERNEL_MAKE) \ + $(if $(findstring Darwin,$(HOST_OS)),HOST_LOADLIBES="-L$(STAGING_DIR_HOST)/lib -lncurses") \ + $$@ $(LINUX_RECONF_DIFF) $(LINUX_DIR)/.config > $(LINUX_RECONFIG_TARGET) install: $(LINUX_DIR)/.image diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk index 10bd67a571..5e905a2faa 100644 --- a/include/kernel-defaults.mk +++ b/include/kernel-defaults.mk @@ -5,26 +5,6 @@ # See /LICENSE for more information. # -ifneq ($(SOURCE_DATE_EPOCH),) - ifndef DUMP - KBUILD_BUILD_TIMESTAMP:=$(shell perl -e 'print scalar gmtime($(SOURCE_DATE_EPOCH))') - endif -endif - -KERNEL_MAKEOPTS := -C $(LINUX_DIR) \ - HOSTCFLAGS="$(HOST_CFLAGS) -Wall -Wmissing-prototypes -Wstrict-prototypes" \ - CROSS_COMPILE="$(KERNEL_CROSS)" \ - ARCH="$(LINUX_KARCH)" \ - KBUILD_HAVE_NLS=no \ - KBUILD_BUILD_USER="$(call qstrip,$(CONFIG_KERNEL_BUILD_USER))" \ - KBUILD_BUILD_HOST="$(call qstrip,$(CONFIG_KERNEL_BUILD_DOMAIN))" \ - KBUILD_BUILD_TIMESTAMP="$(KBUILD_BUILD_TIMESTAMP)" \ - KBUILD_BUILD_VERSION="0" \ - HOST_LOADLIBES="-L$(STAGING_DIR_HOST)/lib" \ - CONFIG_SHELL="$(BASH)" \ - $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \ - $(if $(PKG_BUILD_ID),LDFLAGS_MODULE=--build-id=0x$(PKG_BUILD_ID)) - ifdef CONFIG_STRIP_KERNEL_EXPORTS KERNEL_MAKEOPTS += \ EXTRA_LDSFLAGS="-I$(KERNEL_BUILD_DIR) -include symtab.h" @@ -36,14 +16,6 @@ ifneq (,$(KERNEL_CC)) KERNEL_MAKEOPTS += CC="$(KERNEL_CC)" endif -ifdef CONFIG_USE_SPARSE - KERNEL_MAKEOPTS += C=1 CHECK=$(STAGING_DIR_HOST)/bin/sparse -endif - -ifneq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"") - KERNEL_MAKEOPTS += LOCALVERSION= -endif - export HOST_EXTRACFLAGS=-I$(STAGING_DIR_HOST)/include # defined in quilt.mk @@ -91,6 +63,7 @@ ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) $(call Kernel/SetInitramfs/PreConfigure) echo 'CONFIG_INITRAMFS_ROOT_UID=$(shell id -u)' >> $(LINUX_DIR)/.config echo 'CONFIG_INITRAMFS_ROOT_GID=$(shell id -g)' >> $(LINUX_DIR)/.config + echo "$(if $(CONFIG_TARGET_INITRAMFS_FORCE),CONFIG_INITRAMFS_FORCE=y,# CONFIG_INITRAMFS_FORCE is not set)" >> $(LINUX_DIR)/.config echo "$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_NONE),CONFIG_INITRAMFS_COMPRESSION_NONE=y,# CONFIG_INITRAMFS_COMPRESSION_NONE is not set)" >> $(LINUX_DIR)/.config echo -e "$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP),CONFIG_INITRAMFS_COMPRESSION_GZIP=y\nCONFIG_RD_GZIP=y,# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set\n# CONFIG_RD_GZIP is not set)" >> $(LINUX_DIR)/.config echo -e "$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2),CONFIG_INITRAMFS_COMPRESSION_BZIP2=y\nCONFIG_RD_BZIP2=y,# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set\n# CONFIG_RD_BZIP2 is not set)" >> $(LINUX_DIR)/.config @@ -106,6 +79,7 @@ define Kernel/SetNoInitramfs mv $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config.old grep -v INITRAMFS $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config.set echo 'CONFIG_INITRAMFS_SOURCE=""' >> $(LINUX_DIR)/.config.set + echo '# CONFIG_INITRAMFS_FORCE is not set' >> $(LINUX_DIR)/.config.set endef define Kernel/Configure/Default @@ -124,7 +98,7 @@ define Kernel/Configure/Default cp $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config; \ cp $(LINUX_DIR)/.config.set $(LINUX_DIR)/.config.prev; \ } - $(_SINGLE) [ -d $(LINUX_DIR)/user_headers ] || $(MAKE) $(KERNEL_MAKEOPTS) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install + $(_SINGLE) [ -d $(LINUX_DIR)/user_headers ] || $(KERNEL_MAKE) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | mkhash md5 > $(LINUX_DIR)/.vermagic endef @@ -134,7 +108,7 @@ endef define Kernel/CompileModules/Default rm -f $(LINUX_DIR)/vmlinux $(LINUX_DIR)/System.map - +$(MAKE) $(KERNEL_MAKEOPTS) modules + +$(KERNEL_MAKE) modules endef OBJCOPY_STRIP = -R .reginfo -R .notes -R .note -R .comment -R .mdebug -R .note.gnu.build-id @@ -150,7 +124,7 @@ define Kernel/CopyImage $(KERNEL_CROSS)objcopy $(OBJCOPY_STRIP) -S $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).elf; \ $(CP) $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).debug; \ $(foreach k, \ - $(if $(KERNEL_IMAGES),$(KERNEL_IMAGES),$(filter-out dtbs,$(KERNELNAME))), \ + $(if $(KERNEL_IMAGES),$(KERNEL_IMAGES),$(filter-out vmlinux dtbs,$(KERNELNAME))), \ $(CP) $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/$(IMAGES_DIR)/$(k) $(KERNEL_BUILD_DIR)/$(k)$(1); \ ) \ } @@ -158,16 +132,16 @@ endef define Kernel/CompileImage/Default rm -f $(TARGET_DIR)/init - +$(MAKE) $(KERNEL_MAKEOPTS) $(if $(KERNELNAME),$(KERNELNAME),all) modules + +$(KERNEL_MAKE) $(if $(KERNELNAME),$(KERNELNAME),all) modules $(call Kernel/CopyImage) endef ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) define Kernel/CompileImage/Initramfs $(call Kernel/Configure/Initramfs) - $(CP) $(GENERIC_PLATFORM_DIR)/base-files/init $(TARGET_DIR)/init + $(CP) $(GENERIC_PLATFORM_DIR)/other-files/init $(TARGET_DIR)/init rm -rf $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/usr/initramfs_data.cpio* - +$(MAKE) $(KERNEL_MAKEOPTS) $(if $(KERNELNAME),$(KERNELNAME),all) modules + +$(KERNEL_MAKE) $(if $(KERNELNAME),$(KERNELNAME),all) modules $(call Kernel/CopyImage,-initramfs) endef else diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 1047527dab..e44748a977 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -2,13 +2,30 @@ LINUX_RELEASE?=1 -LINUX_VERSION-4.4 = .120 +LINUX_VERSION-3.18 = .71 +LINUX_VERSION-4.4 = .121 +LINUX_VERSION-4.9 = .106 +LINUX_VERSION-4.14 = .48 -LINUX_KERNEL_HASH-4.4.120 = 667fcda44441106b649afe0952a3f4243ee9a214d9445491a3710e75572bf39f +LINUX_KERNEL_HASH-3.18.71 = +LINUX_KERNEL_HASH-4.4.121 = +LINUX_KERNEL_HASH-4.9.106 = +LINUX_KERNEL_HASH-4.14.48 = +remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) +sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) + +ifneq ($(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),) + LINUX_VERSION:=$(call sanitize_uri,$(call remove_uri_prefix,$(CONFIG_KERNEL_GIT_CLONE_URI))) + ifeq ($(call qstrip,$(CONFIG_KERNEL_GIT_REF)),) + CONFIG_KERNEL_GIT_REF:=HEAD + endif + LINUX_VERSION:=$(LINUX_VERSION)-$(call sanitize_uri,$(CONFIG_KERNEL_GIT_REF)) +else ifdef KERNEL_PATCHVER LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER))) endif +endif split_version=$(subst ., ,$(1)) merge_version=$(subst $(space),.,$(1)) diff --git a/include/kernel.mk b/include/kernel.mk index e915e8f8a3..4fe66e30c1 100644 --- a/include/kernel.mk +++ b/include/kernel.mk @@ -10,6 +10,12 @@ CHECK:=1 DUMP:=1 endif +ifneq ($(SOURCE_DATE_EPOCH),) + ifndef DUMP + KBUILD_BUILD_TIMESTAMP:=$(shell perl -e 'print scalar gmtime($(SOURCE_DATE_EPOCH))') + endif +endif + ifeq ($(__target_inc),) ifndef CHECK include $(INCLUDE_DIR)/target.mk @@ -46,22 +52,24 @@ else LINUX_VERMAGIC:=$(strip $(shell cat $(LINUX_DIR)/.vermagic 2>/dev/null)) LINUX_VERMAGIC:=$(if $(LINUX_VERMAGIC),$(LINUX_VERMAGIC),unknown) - LINUX_UNAME_VERSION:=$(if $(word 3,$(subst ., ,$(KERNEL_BASE))),$(KERNEL_BASE),$(KERNEL_BASE).0) + LINUX_UNAME_VERSION:=$(KERNEL_BASE) ifneq ($(findstring -rc,$(LINUX_VERSION)),) LINUX_UNAME_VERSION:=$(LINUX_UNAME_VERSION)-$(strip $(lastword $(subst -, ,$(LINUX_VERSION)))) endif - MODULES_SUBDIR:=lib/modules/$(LINUX_UNAME_VERSION)-gnu - TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR) - LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux LINUX_SOURCE:=linux-libre-$(LINUX_VERSION)-gnu.tar.xz TESTING:=$(if $(findstring -rc,$(LINUX_VERSION)),/testing,) ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),) LINUX_SITE:=@KERNEL_LIBRE/$(LINUX_VERSION)-gnu$(TESTING) + else + LINUX_UNAME_VERSION:=$(strip $(shell cat $(LINUX_DIR)/include/config/kernel.release 2>/dev/null)) endif + MODULES_SUBDIR:=lib/modules/$(LINUX_UNAME_VERSION)-gnu + TARGET_MODULES_DIR:=$(LINUX_TARGET_DIR)/$(MODULES_SUBDIR) + ifneq ($(TARGET_BUILD),1) PKG_BUILD_DIR ?= $(KERNEL_BUILD_DIR)/$(PKG_NAME)$(if $(PKG_VERSION),-$(PKG_VERSION)) endif @@ -77,6 +85,8 @@ else ifneq (,$(findstring $(ARCH) , armeb )) LINUX_KARCH := arm else ifneq (,$(findstring $(ARCH) , mipsel mips64 mips64el )) LINUX_KARCH := mips +else ifneq (,$(findstring $(ARCH) , powerpc64 )) + LINUX_KARCH := powerpc else ifneq (,$(findstring $(ARCH) , sh2 sh3 sh4 )) LINUX_KARCH := sh else ifneq (,$(findstring $(ARCH) , i386 x86_64 )) @@ -85,61 +95,81 @@ else LINUX_KARCH := $(ARCH) endif +KERNEL_MAKE = $(MAKE) $(KERNEL_MAKEOPTS) + +KERNEL_MAKE_FLAGS := \ + HOSTCFLAGS="$(HOST_CFLAGS) -Wall -Wmissing-prototypes -Wstrict-prototypes" \ + CROSS_COMPILE="$(KERNEL_CROSS)" \ + ARCH="$(LINUX_KARCH)" \ + KBUILD_HAVE_NLS=no \ + KBUILD_BUILD_USER="$(call qstrip,$(CONFIG_KERNEL_BUILD_USER))" \ + KBUILD_BUILD_HOST="$(call qstrip,$(CONFIG_KERNEL_BUILD_DOMAIN))" \ + KBUILD_BUILD_TIMESTAMP="$(KBUILD_BUILD_TIMESTAMP)" \ + KBUILD_BUILD_VERSION="0" \ + HOST_LOADLIBES="-L$(STAGING_DIR_HOST)/lib" \ + CONFIG_SHELL="$(BASH)" \ + $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \ + $(if $(PKG_BUILD_ID),LDFLAGS_MODULE=--build-id=0x$(PKG_BUILD_ID)) \ + cmd_syscalls= + +ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),) + KERNEL_MAKE_FLAGS += \ + KERNELRELEASE=$(LINUX_VERSION) +endif + +KERNEL_MAKEOPTS := -C $(LINUX_DIR) $(KERNEL_MAKE_FLAGS) + +ifdef CONFIG_USE_SPARSE + KERNEL_MAKEOPTS += C=1 CHECK=$(STAGING_DIR_HOST)/bin/sparse +endif + +PKG_EXTMOD_SUBDIRS ?= . + +define populate_module_symvers + @mkdir -p $(PKG_INFO_DIR) + cat /dev/null > $(PKG_INFO_DIR)/$(PKG_NAME).symvers; \ + for subdir in $(PKG_EXTMOD_SUBDIRS); do \ + cat $(PKG_INFO_DIR)/*.symvers 2>/dev/null > $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers; \ + done +endef + +define collect_module_symvers + for subdir in $(PKG_EXTMOD_SUBDIRS); do \ + grep -F $$$$(readlink -f $(PKG_BUILD_DIR)) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \ + done; \ + sort -u $(PKG_BUILD_DIR)/Module.symvers.tmp > $(PKG_BUILD_DIR)/Module.symvers; \ + mv $(PKG_BUILD_DIR)/Module.symvers $(PKG_INFO_DIR)/$(PKG_NAME).symvers +endef + +define KernelPackage/hooks + ifneq ($(PKG_NAME),kernel) + Hooks/Compile/Pre += populate_module_symvers + Hooks/Compile/Post += collect_module_symvers + endif + define KernelPackage/hooks + endef +endef + define KernelPackage/Defaults FILES:= AUTOLOAD:= + MODPARAMS:= PKGFLAGS+=nonshared endef +# 1: name +# 2: install prefix +# 3: module priority prefix +# 4: required for boot +# 5: module list define ModuleAutoLoad - $(SH_FUNC) \ - export modules=; \ - probe_module() { \ - local mods="$$$$$$$$1"; \ - local boot="$$$$$$$$2"; \ - local mod; \ - shift 2; \ - for mod in $$$$$$$$mods; do \ - mkdir -p $(2)/etc/modules.d; \ - echo "$$$$$$$$mod" >> $(2)/etc/modules.d/$(1); \ - done; \ - if [ -e $(2)/etc/modules.d/$(1) ]; then \ - if [ "$$$$$$$$boot" = "1" -a ! -e $(2)/etc/modules-boot.d/$(1) ]; then \ - mkdir -p $(2)/etc/modules-boot.d; \ - ln -s ../modules.d/$(1) $(2)/etc/modules-boot.d/; \ - fi; \ - modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$mods"; \ - fi; \ - }; \ - add_module() { \ - local priority="$$$$$$$$1"; \ - local mods="$$$$$$$$2"; \ - local boot="$$$$$$$$3"; \ - local mod; \ - shift 3; \ - for mod in $$$$$$$$mods; do \ - mkdir -p $(2)/etc/modules.d; \ - echo "$$$$$$$$mod" >> $(2)/etc/modules.d/$$$$$$$$priority-$(1); \ - done; \ - if [ -e $(2)/etc/modules.d/$$$$$$$$priority-$(1) ]; then \ - if [ "$$$$$$$$boot" = "1" -a ! -e $(2)/etc/modules-boot.d/$$$$$$$$priority-$(1) ]; then \ - mkdir -p $(2)/etc/modules-boot.d; \ - ln -s ../modules.d/$$$$$$$$priority-$(1) $(2)/etc/modules-boot.d/; \ - fi; \ - modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$priority-$(1)"; \ - fi; \ - }; \ - $(3) \ - if [ -n "$$$$$$$$modules" ]; then \ - modules="$$$$$$$$(echo "$$$$$$$$modules" | tr ' ' '\n' | sort | uniq | paste -s -d' ' -)"; \ - mkdir -p $(2)/etc/modules.d; \ - mkdir -p $(2)/CONTROL; \ - echo "#!/bin/sh" > $(2)/CONTROL/postinst-pkg; \ - echo "[ -z \"\$$$$$$$$IPKG_INSTROOT\" ] || exit 0" >> $(2)/CONTROL/postinst-pkg; \ - echo ". /lib/functions.sh" >> $(2)/CONTROL/postinst-pkg; \ - echo "insert_modules $$$$$$$$modules" >> $(2)/CONTROL/postinst-pkg; \ - chmod 0755 $(2)/CONTROL/postinst-pkg; \ - fi + $(if $(5), \ + mkdir -p $(2)/etc/modules.d; \ + ($(foreach mod,$(5), \ + echo "$(mod)$(if $(MODPARAMS.$(mod)), $(MODPARAMS.$(mod)),$(if $(MODPARAMS), $(MODPARAMS)))"; )) > $(2)/etc/modules.d/$(3)$(1); \ + $(if $(4), \ + mkdir -p $(2)/etc/modules-boot.d; \ + ln -sf ../modules.d/$(3)$(1) $(2)/etc/modules-boot.d/;)) endef ifeq ($(DUMP)$(TARGET_BUILD),) @@ -192,10 +222,10 @@ $(call KernelPackage/$(1)/config) endif $(call KernelPackage/depends) + $(call KernelPackage/hooks) ifneq ($(if $(filter-out %=y %=n %=m,$(KCONFIG)),$(filter m y,$(foreach c,$(filter-out %=y %=n %=m,$(KCONFIG)),$($(c)))),.),) - ifneq ($(strip $(FILES)),) - define Package/kmod-$(1)/install + define Package/kmod-$(1)/install @for mod in $$(call version_filter,$$(FILES)); do \ if grep -q "$$$$$$$${mod##$(LINUX_DIR)/}" "$(LINUX_DIR)/modules.builtin"; then \ echo "NOTICE: module '$$$$$$$$mod' is built-in."; \ @@ -207,10 +237,9 @@ $(call KernelPackage/$(1)/config) exit 1; \ fi; \ done; - $(call ModuleAutoLoad,$(1),$$(1),$(AUTOLOAD)) + $(call ModuleAutoLoad,$(1),$$(1),$(filter-out 0-,$(word 1,$(AUTOLOAD))-),$(filter-out 0,$(word 2,$(AUTOLOAD))),$(wordlist 3,99,$(AUTOLOAD))) $(call KernelPackage/$(1)/install,$$(1)) - endef - endif + endef $(if $(CONFIG_PACKAGE_kmod-$(1)), else compile: $(1)-disabled @@ -229,12 +258,17 @@ endef version_filter=$(if $(findstring @,$(1)),$(shell $(SCRIPT_DIR)/package-metadata.pl version_filter $(KERNEL_PATCHVER) $(1)),$(1)) +# 1: priority (optional) +# 2: module list +# 3: boot flag define AutoLoad - add_module "$(1)" "$(call version_filter,$(2))" "$(3)"; + $(if $(1),$(1),0) $(if $(3),1,0) $(call version_filter,$(2)) endef +# 1: module list +# 2: boot flag define AutoProbe - probe_module "$(call version_filter,$(1))" "$(2)"; + $(call AutoLoad,,$(1),$(2)) endef version_field=$(if $(word $(1),$(2)),$(word $(1),$(2)),0) diff --git a/include/netfilter.mk b/include/netfilter.mk index c408ac68ca..5d532cea5b 100644 --- a/include/netfilter.mk +++ b/include/netfilter.mk @@ -30,9 +30,10 @@ endef # core # kernel only +$(eval $(if $(NF_KMOD),$(call nf_add,NF_REJECT,CONFIG_NF_REJECT_IPV4, $(P_V4)nf_reject_ipv4),)) + $(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT,CONFIG_IP_NF_IPTABLES, $(P_V4)ip_tables),)) $(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT,CONFIG_NETFILTER_XTABLES, $(P_XT)x_tables),)) -$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT,CONFIG_NF_REJECT_IPV4, $(P_V4)nf_reject_ipv4),)) $(eval $(if $(NF_KMOD),$(call nf_add,IPT_CORE,CONFIG_NETFILTER_XTABLES, $(P_XT)xt_tcpudp),)) $(eval $(if $(NF_KMOD),$(call nf_add,IPT_CORE,CONFIG_IP_NF_FILTER, $(P_V4)iptable_filter),)) @@ -85,16 +86,22 @@ $(eval $(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_MATCH_RECENT, $(P_X $(eval $(if $(NF_KMOD),,$(call nf_add,IPT_CONNTRACK_EXTRA,CONFIG_NETFILTER_XT_CONNMARK, $(P_XT)xt_CONNMARK))) +#conntrack-label + +$(eval $(call nf_add,IPT_CONNTRACK_LABEL,CONFIG_NETFILTER_XT_MATCH_CONNLABEL, $(P_XT)xt_connlabel)) + # extra $(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_ADDRTYPE, $(if $(NF_KMOD),$(P_XT)xt_addrtype,$(P_XT)ipt_addrtype))) $(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_OWNER, $(P_XT)xt_owner)) -$(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_PHYSDEV, $(P_XT)xt_physdev)) $(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_PKTTYPE, $(P_XT)xt_pkttype)) $(eval $(call nf_add,IPT_EXTRA,CONFIG_NETFILTER_XT_MATCH_QUOTA, $(P_XT)xt_quota)) #$(eval $(call nf_add,IPT_EXTRA,CONFIG_IP_NF_TARGET_ROUTE, $(P_V4)ipt_ROUTE)) +# physdev + +$(eval $(call nf_add,IPT_PHYSDEV,CONFIG_NETFILTER_XT_MATCH_PHYSDEV, $(P_XT)xt_physdev)) # filter @@ -106,6 +113,8 @@ $(eval $(call nf_add,IPT_FILTER,CONFIG_NETFILTER_XT_MATCH_STRING, $(P_XT)xt_stri $(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_DSCP, $(P_XT)xt_dscp)) $(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_DSCP, $(P_XT)xt_DSCP)) $(eval $(call nf_add,IPT_HASHLIMIT,CONFIG_NETFILTER_XT_MATCH_HASHLIMIT, $(P_XT)xt_hashlimit)) +$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP_NF_MATCH_RPFILTER, $(P_V4)ipt_rpfilter)) +$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP6_NF_MATCH_RPFILTER, $(P_V6)ip6t_rpfilter)) $(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_LENGTH, $(P_XT)xt_length)) $(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_STATISTIC, $(P_XT)xt_statistic)) $(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_TCPMSS, $(P_XT)xt_tcpmss)) @@ -136,12 +145,15 @@ $(eval $(call nf_add,IPT_IPSEC,CONFIG_IP_NF_MATCH_AH, $(P_V4)ipt_ah)) $(eval $(call nf_add,IPT_IPSEC,CONFIG_NETFILTER_XT_MATCH_ESP, $(P_XT)xt_esp)) $(eval $(call nf_add,IPT_IPSEC,CONFIG_NETFILTER_XT_MATCH_POLICY, $(P_XT)xt_policy)) +# flow offload support +$(eval $(call nf_add,IPT_FLOW,CONFIG_NETFILTER_XT_TARGET_FLOWOFFLOAD, $(P_XT)xt_FLOWOFFLOAD)) # IPv6 # kernel only +$(eval $(if $(NF_KMOD),$(call nf_add,NF_REJECT6,CONFIG_NF_REJECT_IPV6, $(P_V6)nf_reject_ipv6),)) + $(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT6,CONFIG_IP6_NF_IPTABLES, $(P_V6)ip6_tables),)) -$(eval $(if $(NF_KMOD),$(call nf_add,NF_IPT6,CONFIG_NF_REJECT_IPV6, $(P_V6)nf_reject_ipv6),)) $(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNTRACK6,CONFIG_NF_DEFRAG_IPV6, $(P_V6)nf_defrag_ipv6),)) $(eval $(if $(NF_KMOD),$(call nf_add,NF_CONNTRACK6,CONFIG_NF_CONNTRACK_IPV6, $(P_V6)nf_conntrack_ipv6),)) @@ -260,6 +272,10 @@ $(eval $(if $(NF_KMOD),$(call nf_add,IPT_TEE,CONFIG_NF_DUP_IPV6, $(P_V6)nf_dup_i $(eval $(call nf_add,IPT_U32,CONFIG_NETFILTER_XT_MATCH_U32, $(P_XT)xt_u32)) +# checksum + +$(eval $(call nf_add,IPT_CHECKSUM,CONFIG_NETFILTER_XT_TARGET_CHECKSUM, $(P_XT)xt_CHECKSUM)) + # netlink @@ -314,9 +330,12 @@ $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NF_TABLES, $(P_XT)nf_tables $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NF_TABLES_INET, $(P_XT)nf_tables_inet),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_EXTHDR, $(P_XT)nft_exthdr),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_META, $(P_XT)nft_meta),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_NUMGEN, $(P_XT)nft_numgen, ge 4.9.0),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_CT, $(P_XT)nft_ct),)) -$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_RBTREE, $(P_XT)nft_rbtree),)) -$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_HASH, $(P_XT)nft_hash),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_SET_RBTREE, $(P_XT)nft_set_rbtree, ge 4.9.0),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_RBTREE, $(P_XT)nft_rbtree, lt 4.9.0),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_SET_HASH, $(P_XT)nft_set_hash, ge 4.9.0),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_HASH, $(P_XT)nft_hash, lt 4.9.0),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_COUNTER, $(P_XT)nft_counter),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_LOG, $(P_XT)nft_log),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_LIMIT, $(P_XT)nft_limit),)) @@ -327,15 +346,24 @@ $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_CHAIN_ROUTE_IPV4, $(P_V $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NF_TABLES_IPV6, $(P_V6)nf_tables_ipv6),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_CHAIN_ROUTE_IPV6, $(P_V6)nft_chain_route_ipv6),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_REDIR, $(P_XT)nft_redir, ge 3.19.0),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_CORE,CONFIG_NFT_QUOTA, $(P_XT)nft_quota, ge 4.9.0),)) + +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_ARP,CONFIG_NF_TABLES_ARP, $(P_V4)nf_tables_arp),)) + +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_BRIDGE,CONFIG_NF_TABLES_BRIDGE, $(P_EBT)nf_tables_bridge),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_BRIDGE,CONFIG_NFT_BRIDGE_META, $(P_EBT)nft_meta_bridge),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_BRIDGE,CONFIG_NFT_BRIDGE_REJECT, $(P_EBT)nft_reject_bridge),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_NAT, $(P_XT)nft_nat),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_CHAIN_NAT_IPV4, $(P_V4)nft_chain_nat_ipv4),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_REDIR_IPV4, $(P_V4)nft_redir_ipv4, ge 3.19.0),)) -$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_REDIR_IPV6, $(P_V6)nft_redir_ipv6, ge 3.19.0),)) -$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_CHAIN_NAT_IPV6, $(P_V6)nft_chain_nat_ipv6),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_MASQ, $(P_XT)nft_masq),)) $(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_MASQ_IPV4, $(P_V4)nft_masq_ipv4),)) -$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT,CONFIG_NFT_MASQ_IPV6, $(P_V6)nft_masq_ipv6),)) + +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_REDIR_IPV6, $(P_V6)nft_redir_ipv6, ge 3.19.0),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_CHAIN_NAT_IPV6, $(P_V6)nft_chain_nat_ipv6),)) +$(eval $(if $(NF_KMOD),$(call nf_add,NFT_NAT6,CONFIG_NFT_MASQ_IPV6, $(P_V6)nft_masq_ipv6),)) + # userland only IPT_BUILTIN += $(NF_IPT-y) $(NF_IPT-m) @@ -345,7 +373,9 @@ IPT_BUILTIN += $(NF_CONNTRACK6-y) IPT_BUILTIN += $(IPT_CONNTRACK-y) IPT_BUILTIN += $(IPT_CONNTRACK_EXTRA-y) IPT_BUILTIN += $(IPT_EXTRA-y) +IPT_BUILTIN += $(IPT_PHYSDEV-y) IPT_BUILTIN += $(IPT_FILTER-y) +IPT_BUILTIN += $(IPT_FLOW-y) $(IPT_FLOW-m) IPT_BUILTIN += $(IPT_IPOPT-y) IPT_BUILTIN += $(IPT_IPRANGE-y) IPT_BUILTIN += $(IPT_CLUSTER-y) @@ -360,7 +390,6 @@ IPT_BUILTIN += $(IPT_NAT_EXTRA-y) IPT_BUILTIN += $(NF_NATHELPER-y) IPT_BUILTIN += $(NF_NATHELPER_EXTRA-y) IPT_BUILTIN += $(IPT_ULOG-y) -IPT_BUILTIN += $(IPT_DEBUG-y) IPT_BUILTIN += $(IPT_TPROXY-y) IPT_BUILTIN += $(NFNETLINK-y) IPT_BUILTIN += $(NFNETLINK_LOG-y) diff --git a/include/nls.mk b/include/nls.mk index 51463b9f12..04838821b4 100644 --- a/include/nls.mk +++ b/include/nls.mk @@ -23,7 +23,7 @@ else endif PKG_CONFIG_DEPENDS += CONFIG_BUILD_NLS -PKG_BUILD_DEPENDS += !BUILD_NLS:libiconv !BUILD_NLS:libintl +PKG_BUILD_DEPENDS += !BUILD_NLS:libiconv !BUILD_NLS:gettext ICONV_DEPENDS:=+BUILD_NLS:libiconv-full ICONV_CFLAGS:=-I$(ICONV_PREFIX)/include diff --git a/include/package-bin.mk b/include/package-bin.mk index e5224517f8..4ae049af54 100644 --- a/include/package-bin.mk +++ b/include/package-bin.mk @@ -10,6 +10,7 @@ ifeq ($(DUMP),) ifeq ($(if $(VARIANT),$(BUILD_VARIANT)),$(VARIANT)) ifdef Package/$(1)/install ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),) + $(_pkg_target)compile: $(PKG_BUILD_DIR)/.pkgdir/$(1).installed compile: install-bin-$(1) else compile: $(1)-disabled @@ -19,10 +20,19 @@ ifeq ($(DUMP),) endif endif - install-bin-$(1): $(STAMP_BUILT) - rm -rf $(BIN_DIR)/$(1) - $(INSTALL_DIR) $(BIN_DIR)/$(1) - $(call Package/$(1)/install,$(BIN_DIR)/$(1)) + $(PKG_BUILD_DIR)/.pkgdir/$(1).installed: $(STAMP_BUILT) + rm -rf $(PKG_BUILD_DIR)/.pkgdir/$(1) $$@ + mkdir -p $(PKG_BUILD_DIR)/.pkgdir/$(1) + $(call Package/$(1)/install,$(PKG_BUILD_DIR)/.pkgdir/$(1)) + touch $$@ + + install-bin-$(1): $(PKG_BUILD_DIR)/.pkgdir/$(1).installed + rm -rf $(BIN_DIR)/$(1) + -rmdir $(PKG_BUILD_DIR)/.pkgdir/$(1) >/dev/null 2>/dev/null + if [ -d $(PKG_BUILD_DIR)/.pkgdir/$(1) ]; then \ + $(INSTALL_DIR) $(BIN_DIR)/$(1) && \ + $(CP) $(PKG_BUILD_DIR)/.pkgdir/$(1)/. $(BIN_DIR)/$(1)/; \ + fi clean-$(1): rm -rf $(BIN_DIR)/$(1) diff --git a/include/package-defaults.mk b/include/package-defaults.mk index 487811c0e2..31e331b2d5 100644 --- a/include/package-defaults.mk +++ b/include/package-defaults.mk @@ -5,7 +5,7 @@ # See /LICENSE for more information. # -PKG_DEFAULT_DEPENDS = +libc +SSP_SUPPORT:libssp +USE_GLIBC:librt +USE_GLIBC:libpthread +PKG_DEFAULT_DEPENDS = +libc +GCC_LIBSSP:libssp +USE_GLIBC:librt +USE_GLIBC:libpthread ifneq ($(PKG_NAME),toolchain) PKG_FIXUP_DEPENDS = $(if $(filter kmod-%,$(1)),$(2),$(PKG_DEFAULT_DEPENDS) $(filter-out $(PKG_DEFAULT_DEPENDS),$(2))) @@ -56,13 +56,16 @@ define Package/Default VARIANT:= DEFAULT_VARIANT:= USERID:= + ALTERNATIVES:= + LICENSE:=$(PKG_LICENSE) + LICENSE_FILES:=$(PKG_LICENSE_FILES) endef Build/Patch:=$(Build/Patch/Default) ifneq ($(strip $(PKG_UNPACK)),) define Build/Prepare/Default $(PKG_UNPACK) - [ ! -d ./src/ ] || $(CP) ./src/* $(PKG_BUILD_DIR) + [ ! -d ./src/ ] || $(CP) ./src/. $(PKG_BUILD_DIR) $(Build/Patch) endef endif @@ -92,7 +95,6 @@ CONFIGURE_ARGS = \ --mandir=$(CONFIGURE_PREFIX)/man \ --infodir=$(CONFIGURE_PREFIX)/info \ $(DISABLE_NLS) \ - $(DISABLE_LARGEFILE) \ $(DISABLE_IPV6) CONFIGURE_VARS = \ diff --git a/include/package-dumpinfo.mk b/include/package-dumpinfo.mk index b717c1b472..8a42be5bd1 100644 --- a/include/package-dumpinfo.mk +++ b/include/package-dumpinfo.mk @@ -7,23 +7,17 @@ ifneq ($(DUMP),) -dumpinfo: FORCE - -define Config/template -Preconfig: $(1) -Preconfig-Type: $(2) -Preconfig-Default: $(3) -Preconfig-Label: $(4) -endef +define SOURCE_INFO +$(if $(PKG_BUILD_DEPENDS),Build-Depends: $(PKG_BUILD_DEPENDS) +)$(if $(HOST_BUILD_DEPENDS),Build-Depends/host: $(HOST_BUILD_DEPENDS) +)$(if $(BUILD_TYPES),Build-Types: $(BUILD_TYPES) +) -define Config - Preconfig/$(1) = $$(call Config/template,$(1),$(2),$(3),$(4)) - preconfig_$$(1) += $(1) endef define Dumpinfo/Package -$(info Package: $(1) +$(info $(SOURCE_INFO)Package: $(1) $(if $(MENU),Menu: $(MENU) )$(if $(SUBMENU),Submenu: $(SUBMENU) )$(if $(SUBMENUDEP),Submenu-Depends: $(SUBMENUDEP) @@ -36,18 +30,15 @@ Menu-Depends: $(MDEPENDS) Provides: $(PROVIDES) $(if $(VARIANT),Build-Variant: $(VARIANT) $(if $(DEFAULT_VARIANT),Default-Variant: $(VARIANT) -))$(if $(PKG_BUILD_DEPENDS),Build-Depends: $(PKG_BUILD_DEPENDS) -)$(if $(HOST_BUILD_DEPENDS),Build-Depends/host: $(HOST_BUILD_DEPENDS) -)$(if $(BUILD_TYPES),Build-Types: $(BUILD_TYPES) -)Section: $(SECTION) +))Section: $(SECTION) Category: $(CATEGORY) $(if $(filter nonshared,$(PKGFLAGS)),,Repository: $(if $(FEED),$(FEED),base) )Title: $(TITLE) Maintainer: $(MAINTAINER) $(if $(USERID),Require-User: $(USERID) )Source: $(PKG_SOURCE) -$(if $(PKG_LICENSE),License: $(PKG_LICENSE) -)$(if $(PKG_LICENSE_FILES),LicenseFiles: $(PKG_LICENSE_FILES) +$(if $(LICENSE),License: $(LICENSE) +)$(if $(LICENSE_FILES),LicenseFiles: $(LICENSE_FILES) )Type: $(if $(Package/$(1)/targets),$(Package/$(1)/targets),$(if $(PKG_TARGETS),$(PKG_TARGETS),ipkg)) $(if $(KCONFIG),Kernel-Config: $(KCONFIG) )$(if $(BUILDONLY),Build-Only: $(BUILDONLY) @@ -59,33 +50,11 @@ $(if $(URL),$(URL) $(if $(Package/$(1)/config),Config: $(Package/$(1)/config) @@ -)$(foreach pc,$(preconfig_$(1)), -$(Preconfig/$(pc)))) +)) +SOURCE_INFO := endef -define Feature/Default - TARGET_NAME:= - TARGET_TITLE:= - PRIORITY:= - NAME:= -endef - -define Feature - $(eval $(Feature/Default)) - $(eval $(Feature/$(1))) - $(if $(DUMP),$(call Dumpinfo/Feature,$(1))) -endef - -define Dumpinfo/Feature -$(info Feature: $(TARGET_NAME)_$(1) -Target-Name: $(TARGET_NAME) -Target-Title: $(TARGET_TITLE) -Feature-Name: $(NAME) -$(if $(PRIORITY),Feature-Priority: $(PRIORITY) -)Feature-Description: -$(Feature/$(1)/description) -@@ -) -endef +dumpinfo: FORCE + $(if $(SOURCE_INFO),$(info $(SOURCE_INFO))) endif diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk index d9b6f77cc4..9e2717e788 100644 --- a/include/package-ipkg.mk +++ b/include/package-ipkg.mk @@ -106,25 +106,19 @@ ifeq ($(DUMP),) ifdef do_install ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),) IPKGS += $(1) - compile: $$(IPKG_$(1)) $(PKG_INFO_DIR)/$(1).provides $(STAGING_DIR_ROOT)/stamp/.$(1)_installed - ifneq ($(ABI_VERSION),) - compile: $(PKG_INFO_DIR)/$(1).version - endif + $(_pkg_target)compile: $$(IPKG_$(1)) $(PKG_INFO_DIR)/$(1).provides $(PKG_BUILD_DIR)/.pkgdir/$(1).installed + prepare-package-install: $$(IPKG_$(1)) + compile: $(STAGING_DIR_ROOT)/stamp/.$(1)_installed else $(if $(CONFIG_PACKAGE_$(1)),$$(info WARNING: skipping $(1) -- package not selected)) endif .PHONY: $(PKG_INSTALL_STAMP).$(1) - compile: $(PKG_INSTALL_STAMP).$(1) - $(PKG_INSTALL_STAMP).$(1): - if [ -f $(PKG_INSTALL_STAMP).clean ]; then \ - rm -f \ - $(PKG_INSTALL_STAMP) \ - $(PKG_INSTALL_STAMP).clean; \ - fi ifeq ($(CONFIG_PACKAGE_$(1)),y) - echo "$(1)" >> $(PKG_INSTALL_STAMP) + compile: $(PKG_INSTALL_STAMP).$(1) endif + $(PKG_INSTALL_STAMP).$(1): prepare-package-install + echo "$(1)" >> $(PKG_INSTALL_STAMP) endif endif @@ -140,19 +134,19 @@ ifeq ($(DUMP),) $(eval $(call BuildIPKGVariable,$(1),prerm,-pkg,1)) $(eval $(call BuildIPKGVariable,$(1),postrm,,1)) - $(STAGING_DIR_ROOT)/stamp/.$(1)_installed : export PATH=$$(TARGET_PATH_PKG) - $(STAGING_DIR_ROOT)/stamp/.$(1)_installed: $(STAMP_BUILT) - rm -rf $(STAGING_DIR_ROOT)/tmp-$(1) - mkdir -p $(STAGING_DIR_ROOT)/stamp $(STAGING_DIR_ROOT)/tmp-$(1) - $(call Package/$(1)/install,$(STAGING_DIR_ROOT)/tmp-$(1)) - $(call Package/$(1)/install_lib,$(STAGING_DIR_ROOT)/tmp-$(1)) - $(call locked,$(CP) $(STAGING_DIR_ROOT)/tmp-$(1)/. $(STAGING_DIR_ROOT)/,root-copy) - rm -rf $(STAGING_DIR_ROOT)/tmp-$(1) + $(PKG_BUILD_DIR)/.pkgdir/$(1).installed : export PATH=$$(TARGET_PATH_PKG) + $(PKG_BUILD_DIR)/.pkgdir/$(1).installed: $(STAMP_BUILT) + rm -rf $$@ $(PKG_BUILD_DIR)/.pkgdir/$(1) + mkdir -p $(PKG_BUILD_DIR)/.pkgdir/$(1) + $(call Package/$(1)/install,$(PKG_BUILD_DIR)/.pkgdir/$(1)) + $(call Package/$(1)/install_lib,$(PKG_BUILD_DIR)/.pkgdir/$(1)) touch $$@ - $(PKG_INFO_DIR)/$(1).version: $$(IPKG_$(1)) - echo '$(ABI_VERSION)' | cmp -s - $$@ || \ - echo '$(ABI_VERSION)' > $$@ + $(STAGING_DIR_ROOT)/stamp/.$(1)_installed: $(PKG_BUILD_DIR)/.pkgdir/$(1).installed + mkdir -p $(STAGING_DIR_ROOT)/stamp + $(if $(ABI_VERSION),echo '$(ABI_VERSION)' | cmp -s - $(PKG_INFO_DIR)/$(1).version || echo '$(ABI_VERSION)' > $(PKG_INFO_DIR)/$(1).version) + $(call locked,$(CP) $(PKG_BUILD_DIR)/.pkgdir/$(1)/. $(STAGING_DIR_ROOT)/,root-copy) + touch $$@ Package/$(1)/DEPENDS := $$(call mergelist,$$(filter-out @%,$$(IDEPEND_$(1)))) ifneq ($$(EXTRA_DEPENDS),) @@ -165,9 +159,10 @@ Version: $(VERSION) $$(call addfield,Depends,$$(Package/$(1)/DEPENDS) )$$(call addfield,Conflicts,$$(call mergelist,$(CONFLICTS)) )$$(call addfield,Provides,$$(call mergelist,$(PROVIDES)) +)$$(call addfield,Alternatives,$$(call mergelist,$(ALTERNATIVES)) )$$(call addfield,Source,$(SOURCE) -)$$(call addfield,License,$$(PKG_LICENSE) -)$$(call addfield,LicenseFiles,$$(PKG_LICENSE_FILES) +)$$(call addfield,License,$(LICENSE) +)$$(call addfield,LicenseFiles,$(LICENSE_FILES) )$$(call addfield,Section,$(SECTION) )$$(call addfield,Require-User,$(USERID) )$(if $(filter hold,$(PKG_FLAGS)),Status: unknown hold not-installed @@ -177,11 +172,10 @@ $$(call addfield,Depends,$$(Package/$(1)/DEPENDS) Installed-Size: 0 $(_endef) - $(PKG_INFO_DIR)/$(1).provides: $$(IPKG_$(1)) $$(IPKG_$(1)) : export CONTROL=$$(Package/$(1)/CONTROL) $$(IPKG_$(1)) : export DESCRIPTION=$$(Package/$(1)/description) $$(IPKG_$(1)) : export PATH=$$(TARGET_PATH_PKG) - $$(IPKG_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-ipkg.mk + $(PKG_INFO_DIR)/$(1).provides $$(IPKG_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-ipkg.mk @rm -rf $$(IDIR_$(1)) $$(call opkg_package_files,$(1)) mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/CONTROL $(PKG_INFO_DIR) $(call Package/$(1)/install,$$(IDIR_$(1))) diff --git a/include/package.mk b/include/package.mk index 3248517657..2473eecb92 100644 --- a/include/package.mk +++ b/include/package.mk @@ -37,10 +37,22 @@ endif include $(INCLUDE_DIR)/hardening.mk include $(INCLUDE_DIR)/prereq.mk -include $(INCLUDE_DIR)/host.mk include $(INCLUDE_DIR)/unpack.mk include $(INCLUDE_DIR)/depends.mk +ifneq ($(if $(CONFIG_SRC_TREE_OVERRIDE),$(wildcard ./git-src)),) + USE_GIT_TREE:=1 + QUILT:=1 +endif +ifdef USE_SOURCE_DIR + QUILT:=1 +endif +ifneq ($(wildcard $(PKG_BUILD_DIR)/.source_dir),) + QUILT:=1 +endif + +include $(INCLUDE_DIR)/quilt.mk + find_library_dependencies = $(wildcard $(patsubst %,$(STAGING_DIR)/pkginfo/%.version, \ $(filter-out $(BUILD_PACKAGES),$(foreach dep, \ $(filter-out @%, $(patsubst +%,%,$(1))), \ @@ -57,7 +69,7 @@ ifneq ($(PREV_STAMP_PREPARED),) STAMP_PREPARED:=$(PREV_STAMP_PREPARED) CONFIG_AUTOREBUILD:= else - STAMP_PREPARED=$(PKG_BUILD_DIR)/.prepared$(if $(QUILT)$(DUMP),,_$(shell $(call find_md5,${CURDIR} $(PKG_FILE_DEPENDS),))$(call confvar,$(PKG_PREPARED_DEPENDS))) + STAMP_PREPARED=$(PKG_BUILD_DIR)/.prepared$(if $(QUILT)$(DUMP),,_$(shell $(call find_md5,${CURDIR} $(PKG_FILE_DEPENDS),))_$(call confvar,CONFIG_AUTOREMOVE $(PKG_PREPARED_DEPENDS))) endif STAMP_CONFIGURED=$(PKG_BUILD_DIR)/.configured$(if $(DUMP),,_$(call confvar,$(PKG_CONFIG_DEPENDS))) STAMP_CONFIGURED_WILDCARD=$(PKG_BUILD_DIR)/.configured_* @@ -76,26 +88,17 @@ define CleanStaging ) endef -ifneq ($(if $(CONFIG_SRC_TREE_OVERRIDE),$(wildcard ./git-src)),) - USE_GIT_TREE:=1 - QUILT:=1 -endif -ifdef USE_SOURCE_DIR - QUILT:=1 -endif -ifneq ($(wildcard $(PKG_BUILD_DIR)/.source_dir),) - QUILT:=1 -endif PKG_INSTALL_STAMP:=$(PKG_INFO_DIR)/$(PKG_DIR_NAME).$(if $(BUILD_VARIANT),$(BUILD_VARIANT),default).install -include $(INCLUDE_DIR)/quilt.mk include $(INCLUDE_DIR)/package-defaults.mk include $(INCLUDE_DIR)/package-dumpinfo.mk include $(INCLUDE_DIR)/package-ipkg.mk include $(INCLUDE_DIR)/package-bin.mk include $(INCLUDE_DIR)/autotools.mk +_pkg_target:=$(if $(QUILT),,.) + override MAKEFLAGS= CONFIG_SITE:=$(INCLUDE_DIR)/site/$(ARCH) CUR_MAKEFILE:=$(filter-out Makefile,$(firstword $(MAKEFILE_LIST))) @@ -117,7 +120,12 @@ ifdef USE_GIT_TREE define Build/Prepare/Default mkdir -p $(PKG_BUILD_DIR) ln -s $(CURDIR)/git-src $(PKG_BUILD_DIR)/.git - ( cd $(PKG_BUILD_DIR); git checkout .) + ( cd $(PKG_BUILD_DIR); \ + git checkout .; \ + git submodule update --recursive; \ + git submodule foreach git config --unset core.worktree; \ + git submodule foreach git checkout .; \ + ) endef endif ifdef USE_SOURCE_DIR @@ -130,7 +138,7 @@ ifdef USE_SOURCE_DIR endif define Build/Exports/Default - $(1) : export ACLOCAL_INCLUDE=$$(foreach p,$$(wildcard $$(STAGING_DIR)/usr/share/aclocal $$(STAGING_DIR)/usr/share/aclocal-* $$(STAGING_DIR)/host/share/aclocal $$(STAGING_DIR)/host/share/aclocal-*),-I $$(p)) + $(1) : export ACLOCAL_INCLUDE=$$(foreach p,$$(wildcard $$(STAGING_DIR)/usr/share/aclocal $$(STAGING_DIR)/usr/share/aclocal-* $$(STAGING_DIR_HOSTPKG)/share/aclocal $$(STAGING_DIR_HOSTPKG)/share/aclocal-* $$(STAGING_DIR)/host/share/aclocal $$(STAGING_DIR)/host/share/aclocal-*),-I $$(p)) $(1) : export STAGING_PREFIX=$$(STAGING_DIR)/usr $(1) : export PATH=$$(TARGET_PATH_PKG) $(1) : export CONFIG_SITE:=$$(CONFIG_SITE) @@ -141,8 +149,12 @@ endef Build/Exports=$(Build/Exports/Default) define Build/CoreTargets + STAMP_PREPARED:=$$(STAMP_PREPARED) + STAMP_CONFIGURED:=$$(STAMP_CONFIGURED) + $(if $(QUILT),$(Build/Quilt)) $(call Build/Autoclean) + $(call DefaultTargets) download: $(foreach hook,$(Hooks/Download), @@ -153,6 +165,7 @@ define Build/CoreTargets $(STAMP_PREPARED): $(STAMP_PREPARED_DEPENDS) @-rm -rf $(PKG_BUILD_DIR) @mkdir -p $(PKG_BUILD_DIR) + touch $$@_check $(foreach hook,$(Hooks/Prepare/Pre),$(call $(hook))$(sep)) $(Build/Prepare) $(foreach hook,$(Hooks/Prepare/Post),$(call $(hook))$(sep)) @@ -160,15 +173,17 @@ define Build/CoreTargets $(call Build/Exports,$(STAMP_CONFIGURED)) $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(STAMP_CONFIGURED_DEPENDS) + rm -f $(STAMP_CONFIGURED_WILDCARD) $(CleanStaging) $(foreach hook,$(Hooks/Configure/Pre),$(call $(hook))$(sep)) $(Build/Configure) $(foreach hook,$(Hooks/Configure/Post),$(call $(hook))$(sep)) - rm -f $(STAMP_CONFIGURED_WILDCARD) touch $$@ $(call Build/Exports,$(STAMP_BUILT)) $(STAMP_BUILT): $(STAMP_CONFIGURED) $(STAMP_BUILT_DEPENDS) + rm -f $$@ + touch $$@_check $(foreach hook,$(Hooks/Compile/Pre),$(call $(hook))$(sep)) $(Build/Compile) $(foreach hook,$(Hooks/Compile/Post),$(call $(hook))$(sep)) @@ -203,13 +218,20 @@ define Build/CoreTargets touch $$@ ifdef Build/InstallDev - compile: $(STAMP_INSTALLED) + $(_pkg_target)compile: $(STAMP_INSTALLED) endif - prepare: $(STAMP_PREPARED) - configure: $(STAMP_CONFIGURED) - dist: $(STAMP_CONFIGURED) - distcheck: $(STAMP_CONFIGURED) + $(_pkg_target)prepare: $(STAMP_PREPARED) + $(_pkg_target)configure: $(STAMP_CONFIGURED) + $(_pkg_target)dist: $(STAMP_CONFIGURED) + $(_pkg_target)distcheck: $(STAMP_CONFIGURED) + + ifneq ($(CONFIG_AUTOREMOVE),) + compile: + -touch -r $(PKG_BUILD_DIR)/.built $(PKG_BUILD_DIR)/.autoremove 2>/dev/null >/dev/null + $(FIND) $(PKG_BUILD_DIR) -mindepth 1 -maxdepth 1 -not '(' -type f -and -name '.*' -and -size 0 ')' -and -not -name '.pkgdir' | \ + $(XARGS) rm -rf + endif endef define Build/DefaultTargets @@ -220,14 +242,7 @@ define Build/DefaultTargets endef endef -define Build/IncludeOverlay - $(eval -include $(wildcard $(TOPDIR)/overlay/*/$(PKG_DIR_NAME).mk)) - define Build/IncludeOverlay - endef -endef - define BuildPackage - $(Build/IncludeOverlay) $(eval $(Package/Default)) $(eval $(Package/$(1))) @@ -281,25 +296,26 @@ Build/DistCheck=$(call Build/DistCheck/Default,) .PHONY: prepare-package-install prepare-package-install: @mkdir -p $(PKG_INFO_DIR) - @touch $(PKG_INSTALL_STAMP).clean + @rm -f $(PKG_INSTALL_STAMP) @echo "$(filter-out essential nonshared,$(PKG_FLAGS))" > $(PKG_INSTALL_STAMP).flags $(PACKAGE_DIR): mkdir -p $@ -dumpinfo: -download: -prepare: -configure: -compile: prepare-package-install +compile: +.install: .compile install: compile -clean: FORCE +force-clean-build: FORCE + rm -rf $(PKG_BUILD_DIR) + +clean-build: $(if $(wildcard $(PKG_BUILD_DIR)/.autoremove),force-clean-build) + +clean: force-clean-build $(CleanStaging) $(call Build/UninstallDev,$(STAGING_DIR),$(STAGING_DIR_HOST)) $(Build/Clean) rm -f $(STAGING_DIR)/packages/$(STAGING_FILES_LIST) $(STAGING_DIR_HOST)/packages/$(STAGING_FILES_LIST) - rm -rf $(PKG_BUILD_DIR) dist: $(Build/Dist) diff --git a/include/prereq-build.mk b/include/prereq-build.mk index 2768c0278f..bac5fdc84c 100644 --- a/include/prereq-build.mk +++ b/include/prereq-build.mk @@ -7,8 +7,6 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/prereq.mk -include $(INCLUDE_DIR)/host.mk -include $(INCLUDE_DIR)/host-build.mk SHELL:=sh PKG_NAME:=Build dependency @@ -20,7 +18,7 @@ $(eval $(call TestHostCommand,working-make, \ $(MAKE) -v | grep -E 'Make (3\.8[1-9]|3\.9[0-9]|[4-9]\.)')) $(eval $(call TestHostCommand,case-sensitive-fs, \ - libreCMC can only be built on a case-sensitive filesystem, \ + OpenWrt can only be built on a case-sensitive filesystem, \ rm -f $(TMP_DIR)/test.*; touch $(TMP_DIR)/test.fs; \ test ! -f $(TMP_DIR)/test.FS)) @@ -29,32 +27,40 @@ $(eval $(call TestHostCommand,proper-umask, \ umask | grep -xE 00[012][012])) $(eval $(call SetupHostCommand,gcc, \ - Please install the GNU C Compiler (gcc), \ - $(CC) --version | grep gcc, \ - gcc --version | grep gcc, \ - gcc49 --version | grep gcc, \ + Please install the GNU C Compiler (gcc) 4.8 or later \ + $(CC) -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?)', \ + gcc -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?)', \ gcc48 --version | grep gcc, \ - gcc47 --version | grep gcc, \ - gcc46 --version | grep gcc, \ + gcc49 --version | grep gcc, \ + gcc5 --version | grep gcc, \ + gcc6 --version | grep gcc, \ + gcc7 --version | grep gcc, \ + gcc8 --version | grep gcc, \ + gcc9 --version | grep gcc, \ gcc --version | grep Apple.LLVM )) $(eval $(call TestHostCommand,working-gcc, \ - Please reinstall the GNU C Compiler - it appears to be broken, \ + \nPlease reinstall the GNU C Compiler (4.8 or later) - \ + it appears to be broken, \ echo 'int main(int argc, char **argv) { return 0; }' | \ gcc -x c -o $(TMP_DIR)/a.out -)) $(eval $(call SetupHostCommand,g++, \ - Please install the GNU C++ Compiler (g++), \ - $(CXX) --version | grep g++, \ - g++ --version | grep g++, \ - g++49 --version | grep g++, \ + Please install the GNU C++ Compiler (g++) 4.8 or later \ + $(CXX) -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?)', \ + g++ -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?)', \ g++48 --version | grep g++, \ - g++47 --version | grep g++, \ - g++46 --version | grep g++, \ + g++49 --version | grep g++, \ + g++5 --version | grep g++, \ + g++6 --version | grep g++, \ + g++7 --version | grep g++, \ + g++8 --version | grep g++, \ + g++9 --version | grep g++, \ g++ --version | grep Apple.LLVM )) $(eval $(call TestHostCommand,working-g++, \ - Please reinstall the GNU C++ Compiler - it appears to be broken, \ + \nPlease reinstall the GNU C++ Compiler (4.8 or later) - \ + it appears to be broken, \ echo 'int main(int argc, char **argv) { return 0; }' | \ g++ -x c++ -o $(TMP_DIR)/a.out - -lstdc++ && \ $(TMP_DIR)/a.out)) @@ -70,11 +76,6 @@ else zlib_link_flags := -lz endif -$(eval $(call TestHostCommand,zlib, \ - Please install a static zlib. (Missing libz.a or zlib.h), \ - echo 'int main(int argc, char **argv) { gzdopen(0, "rb"); return 0; }' | \ - gcc -include zlib.h -x c -o $(TMP_DIR)/a.out - $(zlib_link_flags))) - $(eval $(call TestHostCommand,perl-thread-queue, \ Please install the Perl Thread::Queue module, \ perl -MThread::Queue -e 1)) @@ -123,9 +124,9 @@ $(eval $(call SetupHostCommand,getopt, \ getopt -o t --long test -- --test | grep '^ *--test *--')) $(eval $(call SetupHostCommand,stat,Cannot find a file stat utility, \ - gnustat -c%s $(TMP_DIR)/.host.mk, \ - gstat -c%s $(TMP_DIR)/.host.mk, \ - stat -c%s $(TMP_DIR)/.host.mk)) + gnustat -c%s $(TOPDIR)/Makefile, \ + gstat -c%s $(TOPDIR)/Makefile, \ + stat -c%s $(TOPDIR)/Makefile)) $(eval $(call SetupHostCommand,unzip,Please install 'unzip', \ unzip 2>&1 | grep zipfile, \ @@ -137,6 +138,10 @@ $(eval $(call SetupHostCommand,bzip2,Please install 'bzip2', \ $(eval $(call SetupHostCommand,wget,Please install GNU 'wget', \ wget --version | grep GNU)) +$(eval $(call SetupHostCommand,gtime,Please install GNU 'time', \ + gtime --version 2>&1 | grep GNU, \ + time --version 2>&1 | grep GNU)) + $(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \ perl --version | grep "perl.*v5")) diff --git a/include/prereq.mk b/include/prereq.mk index 6cb590e360..0f0f253744 100644 --- a/include/prereq.mk +++ b/include/prereq.mk @@ -90,7 +90,8 @@ define SetupHostCommand for cmd in $(call QuoteHostCommand,$(3)) $(call QuoteHostCommand,$(4)) \ $(call QuoteHostCommand,$(5)) $(call QuoteHostCommand,$(6)) \ $(call QuoteHostCommand,$(7)) $(call QuoteHostCommand,$(8)) \ - $(call QuoteHostCommand,$(9)); do \ + $(call QuoteHostCommand,$(9)) $(call QuoteHostCommand,$(10)) \ + $(call QuoteHostCommand,$(11)) $(call QuoteHostCommand,$(12)); do \ if [ -n "$$$$$$$$cmd" ]; then \ bin="$$$$$$$$(PATH="$(subst $(space),:,$(filter-out $(STAGING_DIR_HOST)/%,$(subst :,$(space),$(PATH))))" \ which "$$$$$$$${cmd%% *}")"; \ diff --git a/include/quilt.mk b/include/quilt.mk index 796e7160c4..61dcc7964c 100644 --- a/include/quilt.mk +++ b/include/quilt.mk @@ -4,22 +4,43 @@ # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. -ifneq ($(if $(DUMP),1,$(__quilt_inc)),1) -__quilt_inc:=1 - ifeq ($(TARGET_BUILD),1) PKG_BUILD_DIR:=$(LINUX_DIR) endif -PATCH_DIR?=./patches -FILES_DIR?=./files -HOST_PATCH_DIR?=$(PATCH_DIR) -HOST_FILES_DIR?=$(FILES_DIR) -ifeq ($(MAKECMDGOALS),refresh) +ifneq ($(filter host-refresh refresh,$(MAKECMDGOALS)),) override QUILT=1 override HOST_QUILT=1 endif +ifneq ($(PKG_BUILD_DIR),) + QUILT?=$(if $(wildcard $(PKG_BUILD_DIR)/.quilt_used),y) + ifneq ($(QUILT),) + STAMP_CHECKED:=$(PKG_BUILD_DIR)/.quilt_checked + override CONFIG_AUTOREBUILD= + override CONFIG_AUTOREMOVE= + quilt-check: $(STAMP_CHECKED) + endif +endif + +ifneq ($(HOST_BUILD_DIR),) + HOST_QUILT?=$(if $(findstring command,$(origin QUILT)),$(QUILT),$(if $(wildcard $(HOST_BUILD_DIR)/.quilt_used),y)) + ifneq ($(HOST_QUILT),) + HOST_STAMP_CHECKED:=$(HOST_BUILD_DIR)/.quilt_checked + override CONFIG_AUTOREBUILD= + override CONFIG_AUTOREMOVE= + host-quilt-check: $(HOST_STAMP_CHECKED) + endif +endif + +ifneq ($(if $(DUMP),1,$(__quilt_inc)),1) +__quilt_inc:=1 + +PATCH_DIR?=./patches +FILES_DIR?=./files +HOST_PATCH_DIR?=$(PATCH_DIR) +HOST_FILES_DIR?=$(FILES_DIR) + QUILT_CMD:=quilt --quiltrc=- define filter_series @@ -59,24 +80,6 @@ define HostPatchDir $(call PatchDir/$(if $(strip $(HOST_QUILT)),Quilt,Default),$(strip $(1)),$(strip $(2)),$(strip $(3))) endef -ifneq ($(PKG_BUILD_DIR),) - QUILT?=$(if $(wildcard $(PKG_BUILD_DIR)/.quilt_used),y) - ifneq ($(QUILT),) - STAMP_CHECKED:=$(PKG_BUILD_DIR)/.quilt_checked - override CONFIG_AUTOREBUILD= - quilt-check: $(STAMP_CHECKED) - endif -endif - -ifneq ($(HOST_BUILD_DIR),) - HOST_QUILT?=$(if $(findstring command,$(origin QUILT)),$(QUILT),$(if $(wildcard $(HOST_BUILD_DIR)/.quilt_used),y)) - ifneq ($(HOST_QUILT),) - HOST_STAMP_CHECKED:=$(HOST_BUILD_DIR)/.quilt_checked - override CONFIG_AUTOREBUILD= - host-quilt-check: $(HOST_STAMP_CHECKED) - endif -endif - define Host/Patch/Default $(if $(HOST_QUILT),rm -rf $(HOST_BUILD_DIR)/patches; mkdir -p $(HOST_BUILD_DIR)/patches) $(call HostPatchDir,$(HOST_BUILD_DIR),$(HOST_PATCH_DIR),) @@ -94,7 +97,13 @@ define Kernel/Patch/Default $(if $(QUILT),rm -rf $(PKG_BUILD_DIR)/patches; mkdir -p $(PKG_BUILD_DIR)/patches) $(if $(kernel_files),$(CP) $(kernel_files) $(LINUX_DIR)/) find $(LINUX_DIR)/ -name \*.rej -or -name \*.orig | $(XARGS) rm -f + if [ -d $(GENERIC_PLATFORM_DIR)/patches$(if $(wildcard $(GENERIC_PLATFORM_DIR)/patches-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER)) ]; then \ + echo "generic patches directory is present. please move your patches to the pending directory" ; \ + exit 1; \ + fi + $(call PatchDir,$(PKG_BUILD_DIR),$(GENERIC_BACKPORT_DIR),generic-backport/) $(call PatchDir,$(PKG_BUILD_DIR),$(GENERIC_PATCH_DIR),generic/) + $(call PatchDir,$(PKG_BUILD_DIR),$(GENERIC_HACK_DIR),generic-hack/) $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR),platform/) endef @@ -121,7 +130,9 @@ define Quilt/Refresh/Kernel echo "All kernel patches must start with either generic/ or platform/"; \ false; \ } + $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_BACKPORT_DIR),generic-backport/) $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_PATCH_DIR),generic/) + $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_HACK_DIR),generic-hack/) $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR),platform/) endef diff --git a/include/rootfs.mk b/include/rootfs.mk index c014b1d14a..76425c017a 100644 --- a/include/rootfs.mk +++ b/include/rootfs.mk @@ -1,5 +1,3 @@ -include $(INCLUDE_DIR)/feeds.mk - ifdef CONFIG_USE_MKLIBS define mklibs rm -rf $(TMP_DIR)/mklibs-progs $(TMP_DIR)/mklibs-out @@ -49,17 +47,25 @@ TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD) ifdef CONFIG_CLEAN_IPKG define clean_ipkg - -find $(1)/usr/lib/opkg -type f -and -not -name '*.control' | $(XARGS) rm -rf + -find $(1)/usr/lib/opkg/info -type f -and -not -name '*.control' | $(XARGS) rm -rf -sed -i -ne '/^Require-User: /p' $(1)/usr/lib/opkg/info/*.control + awk ' \ + BEGIN { conffiles = 0; print "Conffiles:" } \ + /^Conffiles:/ { conffiles = 1; next } \ + !/^ / { conffiles = 0; next } \ + conffiles == 1 { print } \ + ' $(1)/usr/lib/opkg/status >$(1)/usr/lib/opkg/status.new + mv $(1)/usr/lib/opkg/status.new $(1)/usr/lib/opkg/status -find $(1)/usr/lib/opkg -empty | $(XARGS) rm -rf endef endif define prepare_rootfs - @if [ -d $(TOPDIR)/files ]; then \ - $(call file_copy,$(TOPDIR)/files/.,$(1)); \ - fi + $(if $(2),@if [ -d '$(2)' ]; then \ + $(call file_copy,$(2)/.,$(1)); \ + fi) @mkdir -p $(1)/etc/rc.d + @mkdir -p $(1)/var/lock @( \ cd $(1); \ for script in ./usr/lib/opkg/info/*.postinst; do \ @@ -80,9 +86,10 @@ define prepare_rootfs @-find $(1) -name .svn | $(XARGS) rm -rf @-find $(1) -name .git | $(XARGS) rm -rf @-find $(1) -name '.#*' | $(XARGS) rm -f + rm -rf $(1)/tmp/* rm -f $(1)/usr/lib/opkg/lists/* rm -f $(1)/usr/lib/opkg/info/*.postinst* - rm -f $(1)/usr/lib/opkg/info/*.prerm* + rm -f $(1)/var/lock/*.lock $(call clean_ipkg,$(1)) $(call mklibs,$(1)) endef diff --git a/include/scan.awk b/include/scan.awk index 0f02782326..da8308d22b 100644 --- a/include/scan.awk +++ b/include/scan.awk @@ -2,7 +2,7 @@ BEGIN { FS="/" } $1 ~ /^feeds/ { FEEDS[$NF]=$0 } $1 !~ /^feeds/ { PKGS[$NF]=$0 } END { - # Filter-out OpenWrt packages which have a feeds equivalent + # Filter-out libreCMC packages which have a feeds equivalent for (pkg in PKGS) if (pkg in FEEDS) { print PKGS[pkg] > of diff --git a/include/scan.mk b/include/scan.mk index 3a884fb5f5..86d9576c82 100644 --- a/include/scan.mk +++ b/include/scan.mk @@ -3,8 +3,6 @@ TMP_DIR:=$(TOPDIR)/tmp all: $(TMP_DIR)/.$(SCAN_TARGET) -include $(TOPDIR)/include/host.mk - SCAN_TARGET ?= packageinfo SCAN_NAME ?= package SCAN_DIR ?= package @@ -12,6 +10,8 @@ TARGET_STAMP:=$(TMP_DIR)/info/.files-$(SCAN_TARGET).stamp FILELIST:=$(TMP_DIR)/info/.files-$(SCAN_TARGET)-$(SCAN_COOKIE) OVERRIDELIST:=$(TMP_DIR)/info/.overrides-$(SCAN_TARGET)-$(SCAN_COOKIE) +export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH) + ifeq ($(IS_TTY),1) define progress printf "\033[M\r$(1)" >&2; @@ -56,7 +56,7 @@ endif $(FILELIST): $(OVERRIDELIST) rm -f $(TMP_DIR)/info/.files-$(SCAN_TARGET)-* - $(call FIND_L, $(SCAN_DIR)) $(SCAN_EXTRA) -mindepth 1 $(if $(SCAN_DEPTH),-maxdepth $(SCAN_DEPTH)) -name Makefile | xargs grep -aHE 'call $(GREP_STRING)' | sed -e 's#^$(SCAN_DIR)/##' -e 's#/Makefile:.*##' | uniq | awk -v of=$(OVERRIDELIST) -f include/scan.awk > $@ + find -L $(SCAN_DIR) $(SCAN_EXTRA) -mindepth 1 $(if $(SCAN_DEPTH),-maxdepth $(SCAN_DEPTH)) -name Makefile | xargs grep -aHE 'call $(GREP_STRING)' | sed -e 's#^$(SCAN_DIR)/##' -e 's#/Makefile:.*##' | uniq | awk -v of=$(OVERRIDELIST) -f include/scan.awk > $@ $(TMP_DIR)/info/.files-$(SCAN_TARGET).mk: $(FILELIST) ( \ diff --git a/include/site/powerpc64 b/include/site/powerpc64 new file mode 100644 index 0000000000..6a66346b42 --- /dev/null +++ b/include/site/powerpc64 @@ -0,0 +1,26 @@ +#!/bin/sh +. $TOPDIR/include/site/linux +ac_cv_c_littleendian=${ac_cv_c_littleendian=no} +ac_cv_c_bigendian=${ac_cv_c_bigendian=yes} + +ac_cv_sizeof_char=1 +ac_cv_sizeof_char_p=8 +ac_cv_sizeof_double=8 +ac_cv_sizeof_float=4 +ac_cv_sizeof_int=4 +ac_cv_sizeof_long=8 +ac_cv_sizeof_long_double=16 +ac_cv_sizeof_long_int=8 +ac_cv_sizeof_long_long=8 +ac_cv_sizeof_long_long_int=8 +ac_cv_sizeof_short=2 +ac_cv_sizeof_short_int=2 +ac_cv_sizeof_signed_char=1 +ac_cv_sizeof_unsigned_char=1 +ac_cv_sizeof_unsigned_int=4 +ac_cv_sizeof_unsigned_long=8 +ac_cv_sizeof_unsigned_long_int=8 +ac_cv_sizeof_unsigned_long_long_int=8 +ac_cv_sizeof_unsigned_short=2 +ac_cv_sizeof_unsigned_short_int=2 +ac_cv_sizeof_void_p=8 diff --git a/include/subdir.mk b/include/subdir.mk index 10476d3476..ed4f7537d5 100644 --- a/include/subdir.mk +++ b/include/subdir.mk @@ -9,7 +9,7 @@ ifeq ($(MAKECMDGOALS),prereq) SUBTARGETS:=prereq PREREQ_ONLY:=1 else - SUBTARGETS:=clean download prepare compile install update refresh prereq dist distcheck configure check + SUBTARGETS:=$(DEFAULT_SUBDIR_TARGETS) endif subtarget-default = $(filter-out ., \ @@ -29,6 +29,11 @@ endef lastdir=$(word $(words $(subst /, ,$(1))),$(subst /, ,$(1))) diralias=$(if $(findstring $(1),$(call lastdir,$(1))),,$(call lastdir,$(1))) +subdir_make_opts = \ + -r -C $(1) \ + BUILD_SUBDIR="$(1)" \ + BUILD_VARIANT="$(4)" + # 1: subdir # 2: target # 3: build type @@ -38,26 +43,36 @@ log_make = \ $(if $(BUILD_LOG), \ set -o pipefail; \ mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \ - $$(SUBMAKE) -r -C $(1) $(if $(3),$(3)-)$(2) \ - BUILD_SUBDIR="$(1)" \ - BUILD_VARIANT="$(4)" \ + gtime -f "time: $(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2)\#%U\#%S\#%e" -- \ + $$(SUBMAKE) $(subdir_make_opts) $(if $(3),$(3)-)$(2) \ $(if $(BUILD_LOG),SILENT= 2>&1 | tee $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2).txt) +ifdef CONFIG_AUTOREMOVE +rebuild_check = \ + @-$$(NO_TRACE_MAKE) $(subdir_make_opts) check-depends >/dev/null 2>/dev/null; \ + $(if $(BUILD_LOG),mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \ + $$(NO_TRACE_MAKE) $(if $(BUILD_LOG),-d) -q $(subdir_make_opts) .$(if $(3),$(3)-)$(2) \ + > $(if $(BUILD_LOG),$(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/check-$(if $(3),$(3)-)$(2).txt,/dev/null) 2>&1 || \ + $$(SUBMAKE) $(subdir_make_opts) clean-build >/dev/null 2>/dev/null + +endif + # Parameters: define subdir $(call warn,$(1),d,D $(1)) $(foreach bd,$($(1)/builddirs), $(call warn,$(1),d,BD $(1)/$(bd)) - $(foreach target,$(SUBTARGETS), + $(foreach target,$(SUBTARGETS) $($(1)/subtargets), $(foreach btype,$(buildtypes-$(bd)), - $(call warn_eval,$(1)/$(bd),t,T,$(1)/$(bd)/$(btype)/$(target): $(if $(QUILT),,$($(1)/$(bd)/$(btype)/$(target)) $(call $(1)//$(btype)/$(target),$(1)/$(bd)/$(btype)))) + $(call warn_eval,$(1)/$(bd),t,T,$(1)/$(bd)/$(btype)/$(target): $(if $(NO_DEPS)$(QUILT),,$($(1)/$(bd)/$(btype)/$(target)) $(call $(1)//$(btype)/$(target),$(1)/$(bd)/$(btype)))) $(call log_make,$(1)/$(bd),$(target),$(btype),$(filter-out __default,$(variant))) \ $(if $(findstring $(bd),$($(1)/builddirs-ignore-$(btype)-$(target))), || $(call ERROR,$(1), ERROR: $(1)/$(bd) [$(btype)] failed to build.)) $(if $(call diralias,$(bd)),$(call warn_eval,$(1)/$(bd),l,T,$(1)/$(call diralias,$(bd))/$(btype)/$(target): $(1)/$(bd)/$(btype)/$(target))) ) - $(call warn_eval,$(1)/$(bd),t,T,$(1)/$(bd)/$(target): $(if $(QUILT),,$($(1)/$(bd)/$(target)) $(call $(1)//$(target),$(1)/$(bd)))) + $(call warn_eval,$(1)/$(bd),t,T,$(1)/$(bd)/$(target): $(if $(NO_DEPS)$(QUILT),,$($(1)/$(bd)/$(target)) $(call $(1)//$(target),$(1)/$(bd)))) $(foreach variant,$(if $(BUILD_VARIANT),$(BUILD_VARIANT),$(if $(strip $($(1)/$(bd)/variants)),$($(1)/$(bd)/variants),$(if $($(1)/$(bd)/default-variant),$($(1)/$(bd)/default-variant),__default))), $(if $(BUILD_LOG),@mkdir -p $(BUILD_LOG_DIR)/$(1)/$(bd)/$(filter-out __default,$(variant))) + $(if $($(1)/autoremove),$(call rebuild_check,$(1)/$(bd),$(target),,$(filter-out __default,$(variant)))) $(call log_make,$(1)/$(bd),$(target),,$(filter-out __default,$(variant))) \ $(if $(findstring $(bd),$($(1)/builddirs-ignore-$(target))), || $(call ERROR,$(1), ERROR: $(1)/$(bd) failed to build$(if $(filter-out __default,$(variant)), (build variant: $(variant))).)) ) @@ -67,7 +82,7 @@ define subdir ) ) ) - $(foreach target,$(SUBTARGETS),$(call subtarget,$(1),$(target))) + $(foreach target,$(SUBTARGETS) $($(1)/subtargets),$(call subtarget,$(1),$(target))) endef ifndef DUMP_TARGET_DB diff --git a/include/target.mk b/include/target.mk index 8bb1430a19..a97cda2c3a 100644 --- a/include/target.mk +++ b/include/target.mk @@ -13,11 +13,11 @@ __target_inc=1 DEVICE_TYPE?=router # Default packages - the really basic set -DEFAULT_PACKAGES:=base-files ca-bundle libmbedtls libustream-mbedtls libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd +DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd # For nas targets DEFAULT_PACKAGES.nas:=block-mount fdisk lsblk mdadm # For router targets -DEFAULT_PACKAGES.router:=dnsmasq iptables ip6tables ppp ppp-mod-pppoe ppp-mod-pppoa firewall odhcpd odhcp6c +DEFAULT_PACKAGES.router:=dnsmasq iptables ip6tables ppp ppp-mod-pppoe firewall odhcpd-ipv6only odhcp6c kmod-ipt-offload DEFAULT_PACKAGES.bootloader:= ifneq ($(DUMP),) @@ -51,6 +51,10 @@ else endif endif +ifneq ($(filter 3.18 4.4 4.9,$(KERNEL_PATCHVER)),) + DEFAULT_PACKAGES.router:=$(filter-out kmod-ipt-offload,$(DEFAULT_PACKAGES.router)) +endif + # Add device specific packages (here below to allow device type set from subtarget) DEFAULT_PACKAGES += $(DEFAULT_PACKAGES.$(DEVICE_TYPE)) @@ -68,6 +72,8 @@ define Profile $(eval $(call ProfileDefault)) $(eval $(call Profile/$(1))) dumpinfo : $(call shexport,Profile/$(1)/Description) + DEFAULT_PACKAGES := $(filter-out $(patsubst -%,%,$(filter -%,$(PACKAGES))),$(DEFAULT_PACKAGES)) + PACKAGES := $(filter-out -%,$(PACKAGES)) DUMPINFO += \ echo "Target-Profile: $(1)"; \ $(if $(PRIORITY), echo "Target-Profile-Priority: $(PRIORITY)"; ) \ @@ -104,7 +110,9 @@ ifneq ($(TARGET_BUILD)$(if $(DUMP),,1),) endif GENERIC_PLATFORM_DIR := $(TOPDIR)/target/linux/generic -GENERIC_PATCH_DIR := $(GENERIC_PLATFORM_DIR)/patches$(if $(wildcard $(GENERIC_PLATFORM_DIR)/patches-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER)) +GENERIC_BACKPORT_DIR := $(GENERIC_PLATFORM_DIR)/backport$(if $(wildcard $(GENERIC_PLATFORM_DIR)/backport-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER)) +GENERIC_PATCH_DIR := $(GENERIC_PLATFORM_DIR)/pending$(if $(wildcard $(GENERIC_PLATFORM_DIR)/pending-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER)) +GENERIC_HACK_DIR := $(GENERIC_PLATFORM_DIR)/hack$(if $(wildcard $(GENERIC_PLATFORM_DIR)/hack-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER)) GENERIC_FILES_DIR := $(foreach dir,$(wildcard $(GENERIC_PLATFORM_DIR)/files $(GENERIC_PLATFORM_DIR)/files-$(KERNEL_PATCHVER)),"$(dir)") __config_name_list = $(1)/config-$(KERNEL_PATCHVER) $(1)/config-default @@ -186,6 +194,7 @@ ifeq ($(DUMP),1) CPU_CFLAGS_cortex-a9 = -mcpu=cortex-a9 CPU_CFLAGS_cortex-a15 = -mcpu=cortex-a15 CPU_CFLAGS_cortex-a53 = -mcpu=cortex-a53 + CPU_CFLAGS_cortex-a72 = -mcpu=cortex-a72 CPU_CFLAGS_fa526 = -mcpu=fa526 CPU_CFLAGS_mpcore = -mcpu=mpcore CPU_CFLAGS_xscale = -mcpu=xscale @@ -203,20 +212,29 @@ ifeq ($(DUMP),1) CPU_CFLAGS_440:=-mcpu=440 CPU_CFLAGS_464fp:=-mcpu=464fp endif + ifeq ($(ARCH),powerpc64) + CPU_TYPE ?= powerpc64 + CPU_CFLAGS_powerpc64:=-mcpu=powerpc64 + endif ifeq ($(ARCH),sparc) CPU_TYPE = sparc CPU_CFLAGS_ultrasparc = -mcpu=ultrasparc endif ifeq ($(ARCH),aarch64) - CPU_TYPE ?= armv8-a - CPU_CFLAGS_armv8-a = -mcpu=armv8-a + CPU_TYPE ?= generic + CPU_CFLAGS_generic = -mcpu=generic CPU_CFLAGS_cortex-a53 = -mcpu=cortex-a53 endif ifeq ($(ARCH),arc) CPU_TYPE ?= arc700 CPU_CFLAGS += -matomic - CPU_CFLAGS_arc700 = -marc700 - CPU_CFLAGS_archs = -marchs + CPU_CFLAGS_arc700 = -mcpu=arc700 + CPU_CFLAGS_archs = -mcpu=archs + endif + ifneq ($(CPU_TYPE),) + ifndef CPU_CFLAGS_$(CPU_TYPE) + $(warning CPU_TYPE "$(CPU_TYPE)" doesn't correspond to a known type) + endif endif DEFAULT_CFLAGS=$(strip $(CPU_CFLAGS) $(CPU_CFLAGS_$(CPU_TYPE)) $(CPU_CFLAGS_$(CPU_SUBTYPE))) diff --git a/include/toolchain-build.mk b/include/toolchain-build.mk index 212923a1e6..883d74d25c 100644 --- a/include/toolchain-build.mk +++ b/include/toolchain-build.mk @@ -6,9 +6,9 @@ # override CONFIG_AUTOREBUILD= +override CONFIG_AUTOREMOVE= -REAL_STAGING_DIR_HOST:=$(STAGING_DIR_HOST) -STAGING_DIR_HOST:=$(TOOLCHAIN_DIR) +HOST_BUILD_PREFIX:=$(TOOLCHAIN_DIR) BUILD_DIR_HOST:=$(BUILD_DIR_TOOLCHAIN) include $(INCLUDE_DIR)/host-build.mk diff --git a/include/toplevel.mk b/include/toplevel.mk index 1171c59093..3f5a750030 100644 --- a/include/toplevel.mk +++ b/include/toplevel.mk @@ -25,6 +25,9 @@ export SOURCE_DATE_EPOCH export GIT_CONFIG_PARAMETERS='core.autocrlf=false' export GIT_ASKPASS:=/bin/true export MAKE_JOBSERVER=$(filter --jobserver%,$(MAKEFLAGS)) +export GNU_HOST_NAME:=$(shell $(TOPDIR)/scripts/config.guess) +export HOST_OS:=$(shell uname) +export HOST_ARCH:=$(shell uname -m) # prevent perforce from messing with the patch utility unexport P4PORT P4USER P4CONFIG P4CLIENT @@ -79,7 +82,7 @@ _ignore = $(foreach p,$(IGNORE_PACKAGES),--ignore $(p)) prepare-tmpinfo: FORCE @+$(MAKE) -r -s staging_dir/host/.prereq-build $(PREP_MK) mkdir -p tmp/info - $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="$(TOPDIR)/include/package*.mk $(TOPDIR)/overlay/*/*.mk" SCAN_DEPTH=5 SCAN_EXTRA="" + $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="$(TOPDIR)/include/package*.mk" SCAN_DEPTH=5 SCAN_EXTRA="" $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPS="image/Makefile profiles/*.mk $(TOPDIR)/include/kernel*.mk $(TOPDIR)/include/target.mk" SCAN_DEPTH=2 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1" for type in package target; do \ f=tmp/.$${type}info; t=tmp/.config-$${type}.in; \ @@ -101,11 +104,15 @@ scripts/config/mconf: $(eval $(call rdep,scripts/config,scripts/config/mconf)) +scripts/config/qconf: + @$(_SINGLE)$(SUBMAKE) -s -C scripts/config qconf CC="$(HOSTCC_WRAPPER)" + scripts/config/conf: @$(_SINGLE)$(SUBMAKE) -s -C scripts/config conf CC="$(HOSTCC_WRAPPER)" config: scripts/config/conf prepare-tmpinfo FORCE - $< Config.in + [ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \ + $< Config.in config-clean: FORCE $(_SINGLE)$(NO_TRACE_MAKE) -C scripts/config clean @@ -113,7 +120,8 @@ config-clean: FORCE defconfig: scripts/config/conf prepare-tmpinfo FORCE touch .config @if [ ! -s .config -a -e $(HOME)/.openwrt/defconfig ]; then cp $(HOME)/.openwrt/defconfig .config; fi - $< --defconfig=.config Config.in + [ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \ + $< --defconfig=.config Config.in confdefault-y=allyes confdefault-m=allmod @@ -121,19 +129,27 @@ confdefault-n=allno confdefault:=$(confdefault-$(CONFDEFAULT)) oldconfig: scripts/config/conf prepare-tmpinfo FORCE - $< --$(if $(confdefault),$(confdefault),old)config Config.in + [ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \ + $< --$(if $(confdefault),$(confdefault),old)config Config.in menuconfig: scripts/config/mconf prepare-tmpinfo FORCE if [ \! -e .config -a -e $(HOME)/.openwrt/defconfig ]; then \ cp $(HOME)/.openwrt/defconfig .config; \ fi - [ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; $< Config.in + [ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \ + $< Config.in + +xconfig: scripts/config/qconf prepare-tmpinfo FORCE + if [ \! -e .config -a -e $(HOME)/.openwrt/defconfig ]; then \ + cp $(HOME)/.openwrt/defconfig .config; \ + fi + $< Config.in prepare_kernel_conf: .config FORCE ifeq ($(wildcard staging_dir/host/bin/quilt),) prepare_kernel_conf: - @+$(SUBMAKE) -r tools/quilt/install + @+$(SUBMAKE) -r tools/quilt/compile else prepare_kernel_conf: ; endif @@ -149,7 +165,6 @@ kernel_nconfig: prepare_kernel_conf staging_dir/host/.prereq-build: include/prereq-build.mk mkdir -p tmp - rm -f tmp/.host.mk @$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prereq-build.mk prereq 2>/dev/null || { \ echo "Prerequisite check failed. Use FORCE=1 to override."; \ false; \ @@ -183,6 +198,9 @@ prereq:: prepare-tmpinfo .config check: .config FORCE @+$(NO_TRACE_MAKE) -r -s $@ QUIET= V=s +val.%: FORCE + @+$(NO_TRACE_MAKE) -r -s $@ QUIET= V=s + WARN_PARALLEL_ERROR = $(if $(BUILD_LOG),,$(and $(filter -j,$(MAKEFLAGS)),$(findstring s,$(OPENWRT_VERBOSE)))) ifeq ($(SDK),1) diff --git a/include/u-boot.mk b/include/u-boot.mk new file mode 100644 index 0000000000..babb76497a --- /dev/null +++ b/include/u-boot.mk @@ -0,0 +1,104 @@ +PKG_NAME ?= u-boot + +ifndef PKG_SOURCE_PROTO +PKG_SOURCE = $(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL = \ + http://sources.lede-project.org \ + ftp://ftp.denx.de/pub/u-boot +endif + +PKG_BUILD_DIR = $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) + +PKG_TARGETS := bin +PKG_FLAGS:=nonshared + +PKG_LICENSE:=GPL-2.0 GPL-2.0+ +PKG_LICENSE_FILES:=Licenses/README + +PKG_BUILD_PARALLEL:=1 + +export GCC_HONOUR_COPTS=s + +define Package/u-boot/install/default + $(CP) $(patsubst %,$(PKG_BUILD_DIR)/%,$(UBOOT_IMAGE)) $(1)/ +endef + +Package/u-boot/install = $(Package/u-boot/install/default) + +define U-Boot/Init + BUILD_TARGET:= + BUILD_SUBTARGET:= + BUILD_DEVICES:= + NAME:= + DEPENDS:= + HIDDEN:= + DEFAULT:= + VARIANT:=$(1) + UBOOT_CONFIG:=$(1) + UBOOT_IMAGE:=u-boot.bin +endef + +TARGET_DEP = TARGET_$(BUILD_TARGET)$(if $(BUILD_SUBTARGET),_$(BUILD_SUBTARGET)) + +UBOOT_MAKE_FLAGS = \ + HOSTCC="$(HOSTCC)" \ + HOSTCFLAGS="$(HOST_CFLAGS) $(HOST_CPPFLAGS)" \ + HOSTLDFLAGS="$(HOST_LDFLAGS)" + +define Build/U-Boot/Target + $(eval $(call U-Boot/Init,$(1))) + $(eval $(call U-Boot/Default,$(1))) + $(eval $(call U-Boot/$(1),$(1))) + + define Package/u-boot-$(1) + SECTION:=boot + CATEGORY:=Boot Loaders + TITLE:=U-Boot for $(NAME) + VARIANT:=$(VARIANT) + DEPENDS:=@!IN_SDK $(DEPENDS) + HIDDEN:=$(HIDDEN) + ifneq ($(BUILD_TARGET),) + DEPENDS += @$(TARGET_DEP) + ifneq ($(BUILD_DEVICES),) + DEFAULT := y if ($(TARGET_DEP)_Default \ + $(patsubst %,|| $(TARGET_DEP)_DEVICE_%,$(BUILD_DEVICES)) \ + $(patsubst %,|| $(patsubst TARGET_%,TARGET_DEVICE_%,$(TARGET_DEP))_DEVICE_%,$(BUILD_DEVICES))) + endif + endif + $(if $(DEFAULT),DEFAULT:=$(DEFAULT)) + URL:=http://www.denx.de/wiki/U-Boot + endef + + define Package/u-boot-$(1)/install + $$(Package/u-boot/install) + endef +endef + +define Build/Configure/U-Boot + +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) $(UBOOT_CONFIGURE_VARS) $(UBOOT_CONFIG)_config +endef + +DTC=$(wildcard $(LINUX_DIR)/scripts/dtc/dtc) + +define Build/Compile/U-Boot + +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ + CROSS_COMPILE=$(TARGET_CROSS) \ + $(if $(DTC),DTC="$(DTC)") \ + $(UBOOT_MAKE_FLAGS) +endef + +define BuildPackage/U-Boot/Defaults + Build/Configure/Default = $$$$(Build/Configure/U-Boot) + Build/Compile/Default = $$$$(Build/Compile/U-Boot) +endef + +define BuildPackage/U-Boot + $(eval $(call BuildPackage/U-Boot/Defaults)) + $(foreach type,$(if $(DUMP),$(UBOOT_TARGETS),$(BUILD_VARIANT)), \ + $(eval $(call Build/U-Boot/Target,$(type))) + ) + $(eval $(call Build/DefaultTargets)) + $(foreach type,$(if $(DUMP),$(UBOOT_TARGETS),$(BUILD_VARIANT)), \ + $(call BuildPackage,u-boot-$(type)) + ) +endef diff --git a/include/version.mk b/include/version.mk index 7f268a9fca..f70784873d 100644 --- a/include/version.mk +++ b/include/version.mk @@ -10,13 +10,10 @@ # REVISION:=x # SOURCE_DATE_EPOCH:=x -RELEASE:=Frivolous Fred - PKG_CONFIG_DEPENDS += \ CONFIG_VERSION_BUG_URL \ CONFIG_VERSION_NUMBER \ CONFIG_VERSION_CODE \ - CONFIG_VERSION_NICK \ CONFIG_VERSION_REPO \ CONFIG_VERSION_DIST \ CONFIG_VERSION_MANUFACTURER \ @@ -25,41 +22,37 @@ PKG_CONFIG_DEPENDS += \ CONFIG_VERSION_SUPPORT_URL \ CONFIG_VERSION_HWREV \ -qstrip_escape=$(subst ','\'',$(call qstrip,$(1))) sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1)))) -VERSION_NUMBER:=$(call qstrip_escape,$(CONFIG_VERSION_NUMBER)) -VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),v1.5-next) +VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER)) +VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),v1.5) -VERSION_CODE:=$(call qstrip_escape,$(CONFIG_VERSION_CODE)) +VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE)) VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION)) -VERSION_NICK:=$(call qstrip_escape,$(CONFIG_VERSION_NICK)) -VERSION_NICK:=$(if $(VERSION_NICK),$(VERSION_NICK),Dropstart-STEP) - -VERSION_REPO:=$(call qstrip_escape,$(CONFIG_VERSION_REPO)) +VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO)) VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://librecmc.org/librecmc/downloads/snapshots/%v) -VERSION_DIST:=$(call qstrip_escape,$(CONFIG_VERSION_DIST)) +VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST)) VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),libreCMC) VERSION_DIST_SANITIZED:=$(call sanitize,$(VERSION_DIST)) -VERSION_MANUFACTURER:=$(call qstrip_escape,$(CONFIG_VERSION_MANUFACTURER)) +VERSION_MANUFACTURER:=$(call qstrip,$(CONFIG_VERSION_MANUFACTURER)) VERSION_MANUFACTURER:=$(if $(VERSION_MANUFACTURER),$(VERSION_MANUFACTURER),libreCMC) -VERSION_MANUFACTURER_URL:=$(call qstrip_escape,$(CONFIG_VERSION_MANUFACTURER_URL)) -VERSION_MANUFACTURER_URL:=$(if $(VERSION_MANUFACTURER_URL),$(VERSION_MANUFACTURER_URL),https://librecmc.org) +VERSION_MANUFACTURER_URL:=$(call qstrip,$(CONFIG_VERSION_MANUFACTURER_URL)) +VERSION_MANUFACTURER_URL:=$(if $(VERSION_MANUFACTURER_URL),$(VERSION_MANUFACTURER_URL),https://librecmc.org/) -VERSION_BUG_URL:=$(call qstrip_escape,$(CONFIG_VERSION_BUG_URL)) +VERSION_BUG_URL:=$(call qstrip,$(CONFIG_VERSION_BUG_URL)) VERSION_BUG_URL:=$(if $(VERSION_BUG_URL),$(VERSION_BUG_URL),https://gogs.librecmc.org/libreCMC/libreCMC/issues) -VERSION_SUPPORT_URL:=$(call qstrip_escape,$(CONFIG_VERSION_SUPPORT_URL)) +VERSION_SUPPORT_URL:=$(call qstrip,$(CONFIG_VERSION_SUPPORT_URL)) VERSION_SUPPORT_URL:=$(if $(VERSION_SUPPORT_URL),$(VERSION_SUPPORT_URL)) -VERSION_PRODUCT:=$(call qstrip_escape,$(CONFIG_VERSION_PRODUCT)) +VERSION_PRODUCT:=$(call qstrip,$(CONFIG_VERSION_PRODUCT)) VERSION_PRODUCT:=$(if $(VERSION_PRODUCT),$(VERSION_PRODUCT),Generic) -VERSION_HWREV:=$(call qstrip_escape,$(CONFIG_VERSION_HWREV)) +VERSION_HWREV:=$(call qstrip,$(CONFIG_VERSION_HWREV)) VERSION_HWREV:=$(if $(VERSION_HWREV),$(VERSION_HWREV),v0) define taint2sym @@ -86,25 +79,28 @@ VERSION_TAINTS := $(strip $(foreach taint,$(VERSION_TAINT_SPECS), \ PKG_CONFIG_DEPENDS += $(foreach taint,$(VERSION_TAINT_SPECS),$(call taint2sym,$(taint))) -VERSION_SED:=$(SED) 's,%U,$(VERSION_REPO),g' \ - -e 's,%V,$(VERSION_NUMBER),g' \ - -e 's,%v,\L$(subst $(space),_,$(VERSION_NUMBER)),g' \ - -e 's,%C,$(VERSION_CODE),g' \ - -e 's,%c,\L$(subst $(space),_,$(VERSION_CODE)),g' \ - -e 's,%N,$(VERSION_NICK),g' \ - -e 's,%n,\L$(subst $(space),_,$(VERSION_NICK)),g' \ - -e 's,%D,$(VERSION_DIST),g' \ - -e 's,%d,\L$(subst $(space),_,$(VERSION_DIST)),g' \ - -e 's,%R,$(REVISION),g' \ - -e 's,%T,$(BOARD),g' \ - -e 's,%S,$(BOARD)/$(if $(SUBTARGET),$(SUBTARGET),generic),g' \ - -e 's,%A,$(ARCH_PACKAGES),g' \ - -e 's,%t,$(VERSION_TAINTS),g' \ - -e 's,%M,$(VERSION_MANUFACTURER),g' \ - -e 's,%m,$(VERSION_MANUFACTURER_URL),g' \ - -e 's,%b,$(VERSION_BUG_URL),g' \ - -e 's,%s,$(VERSION_SUPPORT_URL),g' \ - -e 's,%P,$(VERSION_PRODUCT),g' \ - -e 's,%h,$(VERSION_HWREV),g' - -VERSION_SED_SCRIPT:=$(subst '\'','\'\\\\\'\'',$(VERSION_SED)) +# escape commas, backslashes, squotes, and ampersands for sed +define sed_escape +$(subst &,\&,$(subst $(comma),\$(comma),$(subst ','\'',$(subst \,\\,$(1))))) +endef +#' + +VERSION_SED_SCRIPT:=$(SED) 's,%U,$(call sed_escape,$(VERSION_REPO)),g' \ + -e 's,%V,$(call sed_escape,$(VERSION_NUMBER)),g' \ + -e 's,%v,\L$(call sed_escape,$(subst $(space),_,$(VERSION_NUMBER))),g' \ + -e 's,%C,$(call sed_escape,$(VERSION_CODE)),g' \ + -e 's,%c,\L$(call sed_escape,$(subst $(space),_,$(VERSION_CODE))),g' \ + -e 's,%D,$(call sed_escape,$(VERSION_DIST)),g' \ + -e 's,%d,\L$(call sed_escape,$(subst $(space),_,$(VERSION_DIST))),g' \ + -e 's,%R,$(call sed_escape,$(REVISION)),g' \ + -e 's,%T,$(call sed_escape,$(BOARD)),g' \ + -e 's,%S,$(call sed_escape,$(BOARD)/$(if $(SUBTARGET),$(SUBTARGET),generic)),g' \ + -e 's,%A,$(call sed_escape,$(ARCH_PACKAGES)),g' \ + -e 's,%t,$(call sed_escape,$(VERSION_TAINTS)),g' \ + -e 's,%M,$(call sed_escape,$(VERSION_MANUFACTURER)),g' \ + -e 's,%m,$(call sed_escape,$(VERSION_MANUFACTURER_URL)),g' \ + -e 's,%b,$(call sed_escape,$(VERSION_BUG_URL)),g' \ + -e 's,%s,$(call sed_escape,$(VERSION_SUPPORT_URL)),g' \ + -e 's,%P,$(call sed_escape,$(VERSION_PRODUCT)),g' \ + -e 's,%h,$(call sed_escape,$(VERSION_HWREV)),g' + diff --git a/package/Makefile b/package/Makefile index cc1e9d4b66..610d09d6fe 100644 --- a/package/Makefile +++ b/package/Makefile @@ -7,11 +7,12 @@ curdir:=package +include $(INCLUDE_DIR)/feeds.mk include $(INCLUDE_DIR)/rootfs.mk -include $(TMP_DIR)/.packagedeps +$(curdir)/autoremove:=1 $(curdir)/builddirs:=$(sort $(package-) $(package-y) $(package-m)) -$(curdir)/builddirs-install:=. $(curdir)/builddirs-default:=. $(sort $(package-y) $(package-m)) $(curdir)/builddirs-prereq:=. $(sort $(prereq-y) $(prereq-m)) ifdef CHECK_ALL @@ -56,10 +57,14 @@ $(curdir)/merge: $(curdir)/merge-index: $(curdir)/merge (cd $(PACKAGE_DIR_ALL) && $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages; ) -$(curdir)/install: $(TMP_DIR)/.build $(curdir)/system/opkg/host/compile $(curdir)/merge $(if $(CONFIG_TARGET_PER_DEVICE_ROOTFS),$(curdir)/merge-index) +ifndef SDK + $(curdir)/compile: $(curdir)/system/opkg/host/compile +endif + +$(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DEVICE_ROOTFS),$(curdir)/merge-index) - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755 rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG) - [ -d $(TARGET_DIR)/tmp ] || mkdir -p $(TARGET_DIR)/tmp + mkdir -p $(TARGET_DIR)/tmp $(call opkg,$(TARGET_DIR)) install \ $(call opkg_package_files,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null)) @for file in $(PACKAGE_INSTALL_FILES); do \ @@ -68,11 +73,10 @@ $(curdir)/install: $(TMP_DIR)/.build $(curdir)/system/opkg/host/compile $(curdir $(call opkg,$(TARGET_DIR)) flag $$flag `cat $$file`; \ done; \ done || true - @-$(MAKE) package/preconfig $(CP) $(TARGET_DIR) $(TARGET_DIR_ORIG) - $(call prepare_rootfs,$(TARGET_DIR)) + $(call prepare_rootfs,$(TARGET_DIR),$(TOPDIR)/files) $(curdir)/index: FORCE @echo Generating package index... @@ -92,8 +96,6 @@ ifdef CONFIG_SIGNED_PACKAGES ); done endif -$(curdir)/preconfig: - $(curdir)/flags-install:= -j1 $(eval $(call stampfile,$(curdir),package,prereq,.config)) diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 356ef969ce..6629e8d737 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -9,9 +9,10 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/version.mk +include $(INCLUDE_DIR)/feeds.mk PKG_NAME:=base-files -PKG_RELEASE:=173.1 +PKG_RELEASE:=191 PKG_FLAGS:=nonshared PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ @@ -19,7 +20,14 @@ PKG_BUILD_DEPENDS:=usign/host PKG_LICENSE:=GPL-2.0 # Extend depends from version.mk -PKG_CONFIG_DEPENDS += CONFIG_SIGNED_PACKAGES CONFIG_TARGET_INIT_PATH CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE +PKG_CONFIG_DEPENDS += \ + CONFIG_SIGNED_PACKAGES CONFIG_TARGET_INIT_PATH CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE \ + CONFIG_NAND_SUPPORT \ + CONFIG_CLEAN_IPKG \ + CONFIG_PER_FEED_REPO \ + CONFIG_PER_FEED_REPO_ADD_DISABLED \ + CONFIG_PER_FEED_REPO_ADD_COMMENTED \ + $(foreach feed,$(FEEDS_INSTALLED),CONFIG_FEED_$(feed)) include $(INCLUDE_DIR)/package.mk @@ -31,34 +39,33 @@ endif define Package/base-files SECTION:=base CATEGORY:=Base system - DEPENDS:=+netifd +libc +procd +jsonfilter +SIGNED_PACKAGES:usign +SIGNED_PACKAGES:librecmc-keyring +fstools +fwtool - TITLE:=Base filesystem for Lede + DEPENDS:=+netifd +libc +procd +jsonfilter +SIGNED_PACKAGES:usign +SIGNED_PACKAGES:librecmc-keyring +NAND_SUPPORT:ubi-utils +fstools +fwtool + TITLE:=Base filesystem for OpenWrt URL:=http://openwrt.org/ VERSION:=$(PKG_RELEASE)-$(REVISION) endef define Package/base-files/conffiles +/etc/config/ /etc/config/network /etc/config/system +/etc/crontabs/ +/etc/dropbear/ +/etc/group /etc/hosts /etc/inittab -/etc/group +/etc/iproute2/rt_protos +/etc/iproute2/rt_tables /etc/passwd -/etc/shadow /etc/profile +/etc/profile.d /etc/protocols +/etc/rc.local /etc/services +/etc/shadow /etc/shells /etc/sysctl.conf -/etc/rc.local /etc/sysupgrade.conf -/etc/config/ -/etc/dropbear/ -/etc/crontabs/ -/etc/sysctl.d/local.conf -/etc/sysctl.d/ -/etc/iproute2/rt_tables -/etc/iproute2/rt_protos $(call $(TARGET)/conffiles) endef @@ -106,9 +113,16 @@ ifdef CONFIG_SIGNED_PACKAGES endef endif +ifeq ($(CONFIG_NAND_SUPPORT),) + define Package/base-files/nand-support + rm -f $(1)/lib/upgrade/nand.sh + endef +endif + define Package/base-files/install $(CP) ./files/* $(1)/ $(Package/base-files/install-key) + $(Package/base-files/nand-support) if [ -d $(GENERIC_PLATFORM_DIR)/base-files/. ]; then \ $(CP) $(GENERIC_PLATFORM_DIR)/base-files/* $(1)/; \ fi @@ -121,7 +135,7 @@ define Package/base-files/install fi; \ ) - $(VERSION_SED) \ + $(VERSION_SED_SCRIPT) \ $(1)/etc/banner \ $(1)/etc/openwrt_version \ $(1)/usr/lib/os-release @@ -155,7 +169,7 @@ define Package/base-files/install mkdir -p $(1)/root $(LN) /proc/mounts $(1)/etc/mtab rm -f $(1)/var - $(LN) /tmp $(1)/var + $(LN) tmp $(1)/var mkdir -p $(1)/etc $(LN) /tmp/resolv.conf /tmp/TZ /tmp/localtime $(1)/etc/ @@ -170,6 +184,15 @@ define Package/base-files/install echo "$$$${conffile##$(1)}" >> $(1)/CONTROL/conffiles; \ fi \ done + + $(if $(CONFIG_INCLUDE_CONFIG), \ + echo -e "# Build configuration for board $(BOARD)/$(SUBTARGET)/$(PROFILE)\n" >$(1)/etc/build.config; \ + cat $(BIN_DIR)/config.seed >>$(1)/etc/build.config) + + $(if $(CONFIG_CLEAN_IPKG),, \ + mkdir -p $(1)/etc/opkg; \ + $(call FeedSourcesAppend,$(1)/etc/opkg/distfeeds.conf); \ + $(VERSION_SED_SCRIPT) $(1)/etc/opkg/distfeeds.conf) endef ifneq ($(DUMP),1) diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate index 183bd6b7a9..db30ee26d8 100755 --- a/package/base-files/files/bin/config_generate +++ b/package/base-files/files/bin/config_generate @@ -24,8 +24,8 @@ generate_static_network() { json_select dsl if json_is_a atmbridge object; then json_select atmbridge - local vpi vci encaps payload - json_get_vars vpi vci encaps payload + local vpi vci encaps payload nameprefix + json_get_vars vpi vci encaps payload nameprefix uci -q batch <<-EOF delete network.atm set network.atm='atm-bridge' @@ -33,6 +33,7 @@ generate_static_network() { set network.atm.vci='$vci' set network.atm.encaps='$encaps' set network.atm.payload='$payload' + set network.atm.nameprefix='$nameprefix' EOF json_select .. fi @@ -233,10 +234,10 @@ generate_static_system() { set system.ntp='timeserver' set system.ntp.enabled='1' set system.ntp.enable_server='0' - add_list system.ntp.server='0.lede.pool.ntp.org' - add_list system.ntp.server='1.lede.pool.ntp.org' - add_list system.ntp.server='2.lede.pool.ntp.org' - add_list system.ntp.server='3.lede.pool.ntp.org' + add_list system.ntp.server='0.openwrt.pool.ntp.org' + add_list system.ntp.server='1.openwrt.pool.ntp.org' + add_list system.ntp.server='2.openwrt.pool.ntp.org' + add_list system.ntp.server='3.openwrt.pool.ntp.org' EOF if json_is_a system object; then diff --git a/package/base-files/files/etc/group b/package/base-files/files/etc/group index d36685139a..e8e2adf4ac 100644 --- a/package/base-files/files/etc/group +++ b/package/base-files/files/etc/group @@ -1,6 +1,7 @@ root:x:0: daemon:x:1: adm:x:4: +tty:x:5: mail:x:8: audio:x:29: www-data:x:33: diff --git a/package/base-files/files/etc/hotplug.d/net/00-sysctl b/package/base-files/files/etc/hotplug.d/net/00-sysctl index 7a71652c44..8abe7f8bbd 100644 --- a/package/base-files/files/etc/hotplug.d/net/00-sysctl +++ b/package/base-files/files/etc/hotplug.d/net/00-sysctl @@ -1,7 +1,7 @@ #!/bin/sh if [ "$ACTION" = add ]; then - for CONF in /etc/sysctl.conf /etc/sysctl.d/*.conf; do + for CONF in /etc/sysctl.d/*.conf /etc/sysctl.conf; do [ ! -f "$CONF" ] && continue; sed -ne "/^[[:space:]]*net\..*\.$DEVICENAME\./p" "$CONF" | \ sysctl -e -p - | logger -t sysctl diff --git a/package/base-files/files/etc/init.d/gpio_switch b/package/base-files/files/etc/init.d/gpio_switch index 1f1b44b212..6b2dcdce41 100755 --- a/package/base-files/files/etc/init.d/gpio_switch +++ b/package/base-files/files/etc/init.d/gpio_switch @@ -1,7 +1,7 @@ #!/bin/sh /etc/rc.common # Copyright (C) 2015 OpenWrt.org -START=98 +START=94 STOP=10 USE_PROCD=1 @@ -22,10 +22,16 @@ load_gpio_switch() echo "$gpio_pin" >/sys/class/gpio/export # we need to wait a bit until the GPIO appears [ -d "$gpio_path" ] || sleep 1 - echo out >"$gpio_path/direction" } - # write 0 or 1 to the "value" field - { [ "$value" = "0" ] && echo "0" || echo "1"; } >"$gpio_path/value" + + # direction attribute only exists if the kernel supports changing the + # direction of a GPIO + if [ -e "${gpio_path}/direction" ]; then + # set the pin to output with high or low pin value + { [ "$value" = "0" ] && echo "low" || echo "high"; } >"$gpio_path/direction" + else + { [ "$value" = "0" ] && echo "0" || echo "1"; } >"$gpio_path/value" + fi } service_triggers() diff --git a/package/base-files/files/etc/init.d/led b/package/base-files/files/etc/init.d/led index 7c2a185013..c790e3e181 100755 --- a/package/base-files/files/etc/init.d/led +++ b/package/base-files/files/etc/init.d/led @@ -72,6 +72,7 @@ load_led() { [ -n "$dev" ] && { echo $dev > /sys/class/leds/${sysfs}/device_name echo $mode > /sys/class/leds/${sysfs}/mode + echo $interval > /sys/class/leds/${sysfs}/interval } ;; diff --git a/package/base-files/files/etc/init.d/sysctl b/package/base-files/files/etc/init.d/sysctl index 3a497fb66c..a236a0194b 100755 --- a/package/base-files/files/etc/init.d/sysctl +++ b/package/base-files/files/etc/init.d/sysctl @@ -3,23 +3,42 @@ START=11 -set_vm_min_free() { - mem="$(grep MemTotal /proc/meminfo | awk '{print $2}')" +apply_defaults() { + local mem="$(awk '/^MemTotal:/ {print $2}' /proc/meminfo)" + local min_free frag_low_thresh frag_high_thresh + if [ "$mem" -gt 65536 ]; then # 128M - val=16384 + min_free=16384 elif [ "$mem" -gt 32768 ]; then # 64M - val=8192 - elif [ "$mem" -gt 16384 ]; then # 32M - val=1024 + min_free=8192 else - return + min_free=1024 + frag_low_thresh=393216 + frag_high_thresh=524288 + fi + + sysctl -qw vm.min_free_kbytes="$min_free" + + [ "$frag_low_thresh" ] && sysctl -qw \ + net.ipv4.ipfrag_low_thresh="$frag_low_thresh" \ + net.ipv4.ipfrag_high_thresh="$frag_high_thresh" \ + net.ipv6.ip6frag_low_thresh="$frag_low_thresh" \ + net.ipv6.ip6frag_high_thresh="$frag_high_thresh" \ + net.netfilter.nf_conntrack_frag6_low_thresh="$frag_low_thresh" \ + net.netfilter.nf_conntrack_frag6_high_thresh="$frag_high_thresh" + + # first set default, then all interfaces to avoid races with appearing interfaces + if [ -d /proc/sys/net/ipv6/conf ]; then + echo 0 > /proc/sys/net/ipv6/conf/default/accept_ra + for iface in /proc/sys/net/ipv6/conf/*/accept_ra; do + echo 0 > "$iface" + done fi - sysctl -qw vm.min_free_kbytes="$val" } start() { - set_vm_min_free - for CONF in /etc/sysctl.conf /etc/sysctl.d/*.conf; do + apply_defaults + for CONF in /etc/sysctl.d/*.conf /etc/sysctl.conf; do [ -f "$CONF" ] && sysctl -p "$CONF" -e >&- done } diff --git a/package/base-files/files/etc/init.d/system b/package/base-files/files/etc/init.d/system index c947ad340e..531aa8cbc5 100755 --- a/package/base-files/files/etc/init.d/system +++ b/package/base-files/files/etc/init.d/system @@ -7,7 +7,7 @@ USE_PROCD=1 validate_system_section() { uci_validate_section system system "${1}" \ - 'hostname:string:librecmc' \ + 'hostname:string:OpenWrt' \ 'conloglevel:uinteger' \ 'buffersize:uinteger' \ 'timezone:string:UTC' \ diff --git a/package/base-files/files/etc/openwrt_release b/package/base-files/files/etc/openwrt_release index da86208f7f..d03400ca05 100644 --- a/package/base-files/files/etc/openwrt_release +++ b/package/base-files/files/etc/openwrt_release @@ -1,8 +1,7 @@ DISTRIB_ID='%D' DISTRIB_RELEASE='%V' DISTRIB_REVISION='%R' -DISTRIB_CODENAME='%n' DISTRIB_TARGET='%S' DISTRIB_ARCH='%A' -DISTRIB_DESCRIPTION='%D %N %V %C' +DISTRIB_DESCRIPTION='%D %V %C' DISTRIB_TAINTS='%t' diff --git a/package/base-files/files/etc/profile b/package/base-files/files/etc/profile index 3eda09b456..e9936fb36a 100644 --- a/package/base-files/files/etc/profile +++ b/package/base-files/files/etc/profile @@ -1,6 +1,9 @@ #!/bin/sh +[ -e /tmp/.failsafe ] && export FAILSAFE=1 + [ -f /etc/banner ] && cat /etc/banner -[ -e /tmp/.failsafe ] && cat /etc/banner.failsafe +[ -n "$FAILSAFE" ] && cat /etc/banner.failsafe + fgrep -sq '/ overlay ro,' /proc/mounts && { echo 'Your JFFS2-partition seems full and overlayfs is mounted read-only.' echo 'Please try to remove files from /overlay/upper/... and reboot!' diff --git a/package/base-files/files/etc/rc.button/reset b/package/base-files/files/etc/rc.button/reset index 4265767437..2403122ad2 100755 --- a/package/base-files/files/etc/rc.button/reset +++ b/package/base-files/files/etc/rc.button/reset @@ -20,7 +20,7 @@ released) echo "REBOOT" > /dev/console sync reboot - elif [ "$SEEN" -gt 5 -a -n "$OVERLAY" ] + elif [ "$SEEN" -ge 5 -a -n "$OVERLAY" ] then echo "FACTORY RESET" > /dev/console jffs2reset -y && reboot & diff --git a/package/base-files/files/etc/rc.common b/package/base-files/files/etc/rc.common index 95cf956366..3e237170b4 100755 --- a/package/base-files/files/etc/rc.common +++ b/package/base-files/files/etc/rc.common @@ -17,7 +17,7 @@ stop() { } reload() { - return 1 + restart } restart() { @@ -41,14 +41,15 @@ disable() { } enable() { + err=1 name="$(basename "${initscript}")" - disable - [ -n "$START" -o -n "$STOP" ] || { - echo "/etc/init.d/$name does not have a START or STOP value" - return 1 - } - [ "$START" ] && ln -s "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" - [ "$STOP" ] && ln -s "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/K${STOP}${name##K[0-9][0-9]}" + [ "$START" ] && \ + ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" && \ + err=0 + [ "$STOP" ] && \ + ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/K${STOP}${name##K[0-9][0-9]}" && \ + err=0 + return $err } enabled() { @@ -68,7 +69,7 @@ Available commands: start Start the service stop Stop the service restart Restart the service - reload Reload configuration files (or restart if that fails) + reload Reload configuration files (or restart if service does not implement reload) enable Enable service autostart disable Disable service autostart $EXTRA_HELP @@ -88,6 +89,10 @@ service_triggers() { return 0 } +service_data() { + return 0 +} + service_running() { return 0 } @@ -122,12 +127,14 @@ ${INIT_TRACE:+set -x} } stop() { + procd_lock stop_service "$@" procd_kill "$(basename ${basescript:-$initscript})" "$1" } reload() { if eval "type reload_service" 2>/dev/null >/dev/null; then + procd_lock reload_service "$@" else start @@ -141,5 +148,4 @@ ${INIT_TRACE:+set -x} ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}" list_contains ALL_COMMANDS "$action" || action=help -[ "$action" = "reload" ] && action='eval reload "$@" || restart "$@" && :' $action "$@" diff --git a/package/base-files/files/etc/services b/package/base-files/files/etc/services index a12853efa0..8ff914ecf2 100644 --- a/package/base-files/files/etc/services +++ b/package/base-files/files/etc/services @@ -76,6 +76,8 @@ afpovertcp 548/tcp afpovertcp 548/udp nntps 563/tcp snntp nntps 563/udp snntp +submission 587/tcp +submission 587/udp ldaps 636/tcp ldaps 636/udp tinc 655/tcp diff --git a/package/base-files/files/etc/sysctl.conf b/package/base-files/files/etc/sysctl.conf index 91a3ac9a02..ae04212f42 100644 --- a/package/base-files/files/etc/sysctl.conf +++ b/package/base-files/files/etc/sysctl.conf @@ -1,30 +1 @@ -kernel.panic=3 -kernel.core_pattern=/tmp/%e.%t.%p.%s.core - -net.ipv4.conf.default.arp_ignore=1 -net.ipv4.conf.all.arp_ignore=1 -net.ipv4.ip_forward=1 -net.ipv4.icmp_echo_ignore_broadcasts=1 -net.ipv4.icmp_ignore_bogus_error_responses=1 -net.ipv4.igmp_max_memberships=100 -net.ipv4.tcp_fin_timeout=30 -net.ipv4.tcp_keepalive_time=120 -net.ipv4.tcp_syncookies=1 -net.ipv4.tcp_timestamps=1 -net.ipv4.tcp_sack=1 -net.ipv4.tcp_dsack=1 - -net.ipv6.conf.default.forwarding=1 -net.ipv6.conf.all.forwarding=1 - -net.netfilter.nf_conntrack_acct=1 -net.netfilter.nf_conntrack_checksum=0 -net.netfilter.nf_conntrack_max=16384 -net.netfilter.nf_conntrack_tcp_timeout_established=7440 -net.netfilter.nf_conntrack_udp_timeout=60 -net.netfilter.nf_conntrack_udp_timeout_stream=180 - -# disable bridge firewalling by default -net.bridge.bridge-nf-call-arptables=0 -net.bridge.bridge-nf-call-ip6tables=0 -net.bridge.bridge-nf-call-iptables=0 +# Defaults are configured in /etc/sysctl.d/* and can be customized in this file diff --git a/package/base-files/files/etc/sysctl.d/10-default.conf b/package/base-files/files/etc/sysctl.d/10-default.conf new file mode 100644 index 0000000000..46d079b36b --- /dev/null +++ b/package/base-files/files/etc/sysctl.d/10-default.conf @@ -0,0 +1,25 @@ +# Do not edit, changes to this file will be lost on upgrades +# /etc/sysctl.conf can be used to customize sysctl settings + +kernel.panic=3 +kernel.core_pattern=/tmp/%e.%t.%p.%s.core +fs.suid_dumpable=2 + +fs.protected_hardlinks=1 +fs.protected_symlinks=1 + +net.ipv4.conf.default.arp_ignore=1 +net.ipv4.conf.all.arp_ignore=1 +net.ipv4.ip_forward=1 +net.ipv4.icmp_echo_ignore_broadcasts=1 +net.ipv4.icmp_ignore_bogus_error_responses=1 +net.ipv4.igmp_max_memberships=100 +net.ipv4.tcp_fin_timeout=30 +net.ipv4.tcp_keepalive_time=120 +net.ipv4.tcp_syncookies=1 +net.ipv4.tcp_timestamps=1 +net.ipv4.tcp_sack=1 +net.ipv4.tcp_dsack=1 + +net.ipv6.conf.default.forwarding=1 +net.ipv6.conf.all.forwarding=1 diff --git a/package/base-files/files/etc/uci-defaults/11_migrate-sysctl b/package/base-files/files/etc/uci-defaults/11_migrate-sysctl deleted file mode 100644 index 464e275779..0000000000 --- a/package/base-files/files/etc/uci-defaults/11_migrate-sysctl +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -if [ ! -f "/rom/etc/sysctl.conf" ] || cmp -s "/rom/etc/sysctl.conf" "/etc/sysctl.conf"; then - exit 0 -fi - -fingerprint="$(md5sum /etc/sysctl.conf)" -fingerprint="${fingerprint%% *}" - -if [ "$fingerprint" = "1b05ebb41f72cb84e5510573cd4aca26" ] || \ - [ "$fingerprint" = "62deb895be1a7f496040187b7c930e4e" ]; then - logger -t migrate-sysctl "Updating sysctl.conf to use current defaults" - cp "/rom/etc/sysctl.conf" "/etc/sysctl.conf" -fi - -exit 0 diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index 992d88f964..318e91856b 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -57,16 +57,16 @@ config () { export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=$(($CONFIG_NUM_SECTIONS + 1)) name="${name:-cfg$CONFIG_NUM_SECTIONS}" append CONFIG_SECTIONS "$name" - [ -n "$NO_CALLBACK" ] || config_cb "$cfgtype" "$name" export ${NO_EXPORT:+-n} CONFIG_SECTION="$name" - export ${NO_EXPORT:+-n} "CONFIG_${CONFIG_SECTION}_TYPE=$cfgtype" + config_set "$CONFIG_SECTION" "TYPE" "${cfgtype}" + [ -n "$NO_CALLBACK" ] || config_cb "$cfgtype" "$name" } option () { local varname="$1"; shift local value="$*" - export ${NO_EXPORT:+-n} "CONFIG_${CONFIG_SECTION}_${varname}=$value" + config_set "$CONFIG_SECTION" "${varname}" "${value}" [ -n "$NO_CALLBACK" ] || option_cb "$varname" "$*" } @@ -81,7 +81,7 @@ list() { config_set "$CONFIG_SECTION" "${varname}_ITEM$len" "$value" config_set "$CONFIG_SECTION" "${varname}_LENGTH" "$len" append "CONFIG_${CONFIG_SECTION}_${varname}" "$value" "$LIST_SEP" - list_cb "$varname" "$*" + [ -n "$NO_CALLBACK" ] || list_cb "$varname" "$*" } config_unset() { @@ -113,11 +113,8 @@ config_set() { local section="$1" local option="$2" local value="$3" - local old_section="$CONFIG_SECTION" - CONFIG_SECTION="$section" - option "$option" "$value" - CONFIG_SECTION="$old_section" + export ${NO_EXPORT:+-n} "CONFIG_${section}_${option}=${value}" } config_foreach() { @@ -153,16 +150,6 @@ config_list_foreach() { done } -insert_modules() { - for m in $*; do - if [ -f /etc/modules.d/$m ]; then - sed 's/^[^#]/insmod &/' /etc/modules.d/$m | ash 2>&- || : - else - modprobe $m - fi - done -} - default_prerm() { local root="${IPKG_INSTROOT}" local name @@ -202,7 +189,7 @@ add_group_and_user() { if [ -n "$gname" ] && [ -n "$gid" ]; then group_exists "$gname" || group_add "$gname" "$gid" elif [ -n "$gname" ]; then - group_add_next "$gname"; gid=$? + gid="$(group_add_next "$gname")" fi if [ -n "$uname" ]; then @@ -235,6 +222,10 @@ default_postinst() { rm -fR $root/rootfs-overlay/ fi + if [ -z "$root" ] && grep -q -s "^/etc/modules.d/" "/usr/lib/opkg/info/${pkgname}.list"; then + kmodloader + fi + if [ -z "$root" ] && grep -q -s "^/etc/uci-defaults/" "/usr/lib/opkg/info/${pkgname}.list"; then . /lib/functions/system.sh [ -d /tmp/.uci ] || mkdir -p /tmp/.uci @@ -292,9 +283,7 @@ group_add() { [ -f "${IPKG_INSTROOT}/etc/group" ] || return 1 [ -n "$IPKG_INSTROOT" ] || lock /var/lock/group echo "${name}:x:${gid}:" >> ${IPKG_INSTROOT}/etc/group - rc=$? [ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/group - return $rc } group_exists() { @@ -304,14 +293,17 @@ group_exists() { group_add_next() { local gid gids gid=$(grep -s "^${1}:" ${IPKG_INSTROOT}/etc/group | cut -d: -f3) - [ -n "$gid" ] && return $gid + if [ -n "$gid" ]; then + echo $gid + return + fi gids=$(cat ${IPKG_INSTROOT}/etc/group | cut -d: -f3) - gid=100 - while [ -n "$(echo $gids | grep $gid)" ] ; do + gid=65536 + while [ -n "$(echo "$gids" | grep "^$gid$")" ] ; do gid=$((gid + 1)) done group_add $1 $gid - return $gid + echo $gid } group_add_user() { @@ -334,8 +326,8 @@ user_add() { local rc [ -z "$uid" ] && { uids=$(cat ${IPKG_INSTROOT}/etc/passwd | cut -d: -f3) - uid=100 - while [ -n "$(echo $uids | grep $uid)" ] ; do + uid=65536 + while [ -n "$(echo "$uids" | grep "^$uid$")" ] ; do uid=$((uid + 1)) done } @@ -344,13 +336,15 @@ user_add() { [ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd echo "${name}:x:${uid}:${gid}:${desc}:${home}:${shell}" >> ${IPKG_INSTROOT}/etc/passwd echo "${name}:x:0:0:99999:7:::" >> ${IPKG_INSTROOT}/etc/shadow - rc=$? [ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd - return $rc } user_exists() { grep -qs "^${1}:" ${IPKG_INSTROOT}/etc/passwd } +board_name() { + [ -e /tmp/sysinfo/board_name ] && cat /tmp/sysinfo/board_name || echo "generic" +} + [ -z "$IPKG_INSTROOT" -a -f /lib/config/uci.sh ] && . /lib/config/uci.sh diff --git a/package/base-files/files/lib/functions/leds.sh b/package/base-files/files/lib/functions/leds.sh index 857e7e5392..8a1d21caef 100644 --- a/package/base-files/files/lib/functions/leds.sh +++ b/package/base-files/files/lib/functions/leds.sh @@ -1,6 +1,20 @@ #!/bin/sh # Copyright (C) 2013 OpenWrt.org +get_dt_led() { + local label + local ledpath + local basepath="/proc/device-tree" + local nodepath="$basepath/aliases/led-$1" + + [ -f "$nodepath" ] && ledpath=$(cat "$nodepath") + [ -n "$ledpath" ] && \ + label=$(cat "$basepath$ledpath/label" 2>/dev/null) || \ + label=$(cat "$basepath$ledpath/chan-name" 2>/dev/null) + + echo "$label" +} + led_set_attr() { [ -f "/sys/class/leds/$1/$2" ] && echo "$3" > "/sys/class/leds/$1/$2" } diff --git a/package/base-files/files/lib/functions/system.sh b/package/base-files/files/lib/functions/system.sh index 35f6d10fdb..d4402c3a14 100644 --- a/package/base-files/files/lib/functions/system.sh +++ b/package/base-files/files/lib/functions/system.sh @@ -1,5 +1,17 @@ # Copyright (C) 2006-2013 OpenWrt.org +get_mac_binary() { + local path="$1" + local offset="$2" + + if [ -z "$path" ]; then + echo "get_mac_binary: file $path not found!" >&2 + return + fi + + hexdump -v -n 6 -s $offset -e '5/1 "%02x:" 1/1 "%02x"' $path 2>/dev/null +} + find_mtd_chardev() { local INDEX=$(find_mtd_index "$1") local PREFIX=/dev/mtd @@ -33,12 +45,7 @@ mtd_get_mac_binary() { local part part=$(find_mtd_part "$mtdname") - if [ -z "$part" ]; then - echo "mtd_get_mac_binary: partition $mtdname not found!" >&2 - return - fi - - hexdump -v -n 6 -s $offset -e '5/1 "%02x:" 1/1 "%02x"' $part 2>/dev/null + get_mac_binary "$part" "$offset" } mtd_get_mac_binary_ubi() { diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh index 7cc63ffc80..7fa328ac20 100755 --- a/package/base-files/files/lib/functions/uci-defaults.sh +++ b/package/base-files/files/lib/functions/uci-defaults.sh @@ -27,30 +27,33 @@ json_select_object() { json_select "$1" } -_ucidef_set_interface() { - local name="$1" - local iface="$2" - local proto="$3" +ucidef_set_interface() { + local network=$1; shift - json_select_object "$name" - json_add_string ifname "$iface" - - if ! json_is_a protocol string || [ -n "$proto" ]; then - case "$proto" in - static|dhcp|none|pppoe) : ;; - *) - case "$name" in - lan) proto="static" ;; - wan) proto="dhcp" ;; - *) proto="none" ;; - esac - ;; - esac + [ -z "$network" ] && return + + json_select_object network + json_select_object "$network" + + while [ -n "$1" ]; do + local opt=$1; shift + local val=$1; shift + + [ -n "$opt" -a -n "$val" ] || break - json_add_string protocol "$proto" + json_add_string "$opt" "$val" + done + + if ! json_is_a protocol string; then + case "$network" in + lan) json_add_string protocol static ;; + wan) json_add_string protocol dhcp ;; + *) json_add_string protocol none ;; + esac fi json_select .. + json_select .. } ucidef_set_board_id() { @@ -66,31 +69,19 @@ ucidef_set_model_name() { } ucidef_set_interface_lan() { - json_select_object network - _ucidef_set_interface lan "$@" - json_select .. + ucidef_set_interface "lan" ifname "$1" protocol "${2:-static}" } ucidef_set_interface_wan() { - json_select_object network - _ucidef_set_interface wan "$@" - json_select .. + ucidef_set_interface "wan" ifname "$1" protocol "${2:-dhcp}" } ucidef_set_interfaces_lan_wan() { local lan_if="$1" local wan_if="$2" - json_select_object network - _ucidef_set_interface lan "$lan_if" - _ucidef_set_interface wan "$wan_if" - json_select .. -} - -ucidef_set_interface_raw() { - json_select_object network - _ucidef_set_interface "$@" - json_select .. + ucidef_set_interface_lan "$lan_if" + ucidef_set_interface_wan "$wan_if" } _ucidef_add_switch_port() { @@ -160,7 +151,7 @@ _ucidef_finish_switch_roles() { json_select .. json_select .. - if [ $n_vlan -gt $n_cpu -o ${need_tag:-0} -eq 1 ]; then + if [ ${need_tag:-0} -eq 1 -o ${want_untag:-0} -ne 1 ]; then num="${num}t" device="${device}.${index}" fi @@ -185,9 +176,9 @@ _ucidef_finish_switch_roles() { devices="${devices:+$devices }$device" fi json_select .. - - _ucidef_set_interface "$role" "$devices" json_select .. + + ucidef_set_interface "$role" ifname "$devices" done } @@ -300,18 +291,7 @@ ucidef_set_interface_macaddr() { local network="$1" local macaddr="$2" - json_select_object network - - json_select "$network" - [ $? -eq 0 ] || { - json_select .. - return - } - - json_add_string macaddr "$macaddr" - json_select .. - - json_select .. + ucidef_set_interface "$network" macaddr "$macaddr" } ucidef_add_atm_bridge() { @@ -319,6 +299,7 @@ ucidef_add_atm_bridge() { local vci="$2" local encaps="$3" local payload="$4" + local nameprefix="$5" json_select_object dsl json_select_object atmbridge @@ -326,6 +307,7 @@ ucidef_add_atm_bridge() { json_add_int vci "$vci" json_add_string encaps "$encaps" json_add_string payload "$payload" + json_add_string nameprefix "$nameprefix" json_select .. json_select .. } @@ -358,236 +340,191 @@ ucidef_add_vdsl_modem() { json_select .. } -ucidef_set_led_netdev() { - local cfg="led_$1" - local name="$2" - local sysfs="$3" - local dev="$4" - local mode="${5:-link tx rx}" - - json_select_object led - - json_select_object "$1" - json_add_string name "$name" - json_add_string type netdev - json_add_string sysfs "$sysfs" - json_add_string device "$dev" - json_add_string mode "$mode" - json_select .. - - json_select .. +ucidef_set_led_ataport() { + _ucidef_set_led_trigger "$1" "$2" "$3" ata"$4" } -ucidef_set_led_usbdev() { +_ucidef_set_led_common() { local cfg="led_$1" local name="$2" local sysfs="$3" - local dev="$4" json_select_object led json_select_object "$1" json_add_string name "$name" - json_add_string type usb json_add_string sysfs "$sysfs" - json_add_string device "$dev" - json_select .. - - json_select .. } -ucidef_set_led_usbport() { - local obj="$1" - local name="$2" - local sysfs="$3" - shift - shift - shift +ucidef_set_led_default() { + local default="$4" - json_select_object led + _ucidef_set_led_common "$1" "$2" "$3" - json_select_object "$obj" - json_add_string name "$name" - json_add_string type usbport - json_add_string sysfs "$sysfs" - json_select_array ports - for port in "$@"; do - json_add_string port "$port" - done - json_select .. + json_add_string default "$default" json_select .. json_select .. } -ucidef_set_led_wlan() { - local cfg="led_$1" - local name="$2" - local sysfs="$3" - local trigger="$4" +ucidef_set_led_gpio() { + local gpio="$4" + local inverted="$5" - json_select_object led + _ucidef_set_led_common "$1" "$2" "$3" - json_select_object "$1" - json_add_string name "$name" - json_add_string type trigger - json_add_string sysfs "$sysfs" json_add_string trigger "$trigger" + json_add_string type gpio + json_add_int gpio "$gpio" + json_add_boolean inverted "$inverted" json_select .. json_select .. } -ucidef_set_led_switch() { - local cfg="led_$1" - local name="$2" - local sysfs="$3" - local trigger="$4" - local port_mask="$5" - local speed_mask="$6" +ucidef_set_led_ide() { + _ucidef_set_led_trigger "$1" "$2" "$3" ide-disk +} - json_select_object led +ucidef_set_led_netdev() { + local dev="$4" + local mode="${5:-link tx rx}" - json_select_object "$1" - json_add_string name "$name" - json_add_string type switch - json_add_string sysfs "$sysfs" - json_add_string trigger "$trigger" - json_add_string port_mask "$port_mask" - json_add_string speed_mask "$speed_mask" + _ucidef_set_led_common "$1" "$2" "$3" + + json_add_string type netdev + json_add_string device "$dev" + json_add_string mode "$mode" json_select .. json_select .. } +ucidef_set_led_oneshot() { + _ucidef_set_led_timer $1 $2 $3 "oneshot" $4 $5 +} + ucidef_set_led_portstate() { - local cfg="led_$1" - local name="$2" - local sysfs="$3" local port_state="$4" - json_select_object led + _ucidef_set_led_common "$1" "$2" "$3" - json_select_object "$1" - json_add_string name "$name" - json_add_string type portstate - json_add_string sysfs "$sysfs" json_add_string trigger port_state + json_add_string type portstate json_add_string port_state "$port_state" json_select .. json_select .. } -ucidef_set_led_default() { - local cfg="led_$1" - local name="$2" - local sysfs="$3" - local default="$4" +ucidef_set_led_rssi() { + local iface="$4" + local minq="$5" + local maxq="$6" + local offset="${7:-0}" + local factor="${8:-1}" - json_select_object led + _ucidef_set_led_common "$1" "$2" "$3" - json_select_object "$1" + json_add_string type rssi json_add_string name "$name" - json_add_string sysfs "$sysfs" - json_add_string default "$default" + json_add_string iface "$iface" + json_add_string minq "$minq" + json_add_string maxq "$maxq" + json_add_string offset "$offset" + json_add_string factor "$factor" json_select .. json_select .. } -ucidef_set_led_gpio() { - local cfg="led_$1" - local name="$2" - local sysfs="$3" - local gpio="$4" - local inverted="$5" +ucidef_set_led_switch() { + local trigger_name="$4" + local port_mask="$5" + local speed_mask="$6" - json_select_object led + _ucidef_set_led_common "$1" "$2" "$3" - json_select_object "$1" - json_add_string type gpio - json_add_string name "$name" - json_add_string sysfs "$sysfs" - json_add_string trigger "$trigger" - json_add_int gpio "$gpio" - json_add_boolean inverted "$inverted" + json_add_string trigger "$trigger_name" + json_add_string type switch + json_add_string port_mask "$port_mask" + json_add_string speed_mask "$speed_mask" json_select .. json_select .. } -ucidef_set_led_ide() { - local cfg="led_$1" - local name="$2" - local sysfs="$3" +_ucidef_set_led_timer() { + local trigger_name="$4" + local delayon="$5" + local delayoff="$6" - json_select_object led + _ucidef_set_led_common "$1" "$2" "$3" - json_select_object "$1" - json_add_string name "$name" - json_add_string sysfs "$sysfs" - json_add_string trigger ide-disk + json_add_string trigger "$trigger_name" + json_add_int delayon "$delayon" + json_add_int delayoff "$delayoff" json_select .. json_select .. } -__ucidef_set_led_timer() { - local cfg="led_$1" - local name="$2" - local sysfs="$3" - local trigger="$4" - local delayon="$5" - local delayoff="$6" +ucidef_set_led_timer() { + _ucidef_set_led_timer $1 $2 $3 "timer" $4 $5 +} - json_select_object led +_ucidef_set_led_trigger() { + local trigger_name="$4" - json_select_object "$1" - json_add_string type "$trigger" - json_add_string name "$name" - json_add_string sysfs "$sysfs" - json_add_int delayon "$delayon" - json_add_int delayoff "$delayoff" + _ucidef_set_led_common "$1" "$2" "$3" + + json_add_string trigger "$trigger_name" json_select .. json_select .. } -ucidef_set_led_oneshot() { - __ucidef_set_led_timer $1 $2 $3 "oneshot" $4 $5 +ucidef_set_led_usbdev() { + local dev="$4" + + _ucidef_set_led_common "$1" "$2" "$3" + + json_add_string type usb + json_add_string device "$dev" + json_select .. + + json_select .. } -ucidef_set_led_timer() { - __ucidef_set_led_timer $1 $2 $3 "timer" $4 $5 +ucidef_set_led_usbhost() { + _ucidef_set_led_trigger "$1" "$2" "$3" usb-host } -ucidef_set_led_rssi() { - local cfg="led_$1" +ucidef_set_led_usbport() { + local obj="$1" local name="$2" local sysfs="$3" - local iface="$4" - local minq="$5" - local maxq="$6" - local offset="$7" - local factor="$8" + shift + shift + shift - json_select_object led + _ucidef_set_led_common "$obj" "$name" "$sysfs" - json_select_object "$1" - json_add_string type rssi - json_add_string name "$name" - json_add_string iface "$iface" - json_add_string sysfs "$sysfs" - json_add_string minq "$minq" - json_add_string maxq "$maxq" - json_add_string offset "$offset" - json_add_string factor "$factor" + json_add_string type usbport + json_select_array ports + for port in "$@"; do + json_add_string port "$port" + done + json_select .. json_select .. json_select .. } +ucidef_set_led_wlan() { + _ucidef_set_led_trigger "$1" "$2" "$3" "$4" +} + ucidef_set_rssimon() { local dev="$1" local refresh="$2" @@ -601,7 +538,6 @@ ucidef_set_rssimon() { json_select .. json_select .. - } ucidef_add_gpio_switch() { diff --git a/package/base-files/files/lib/preinit/10_sysinfo b/package/base-files/files/lib/preinit/02_sysinfo similarity index 100% rename from package/base-files/files/lib/preinit/10_sysinfo rename to package/base-files/files/lib/preinit/02_sysinfo diff --git a/package/base-files/files/lib/preinit/10_indicate_preinit b/package/base-files/files/lib/preinit/10_indicate_preinit index 7a97a8dd0f..c3ec7bfdf7 100644 --- a/package/base-files/files/lib/preinit/10_indicate_preinit +++ b/package/base-files/files/lib/preinit/10_indicate_preinit @@ -43,7 +43,10 @@ preinit_config_switch() { json_select .. if [ "$device" = "$lan_if" ]; then - swconfig dev $name set reset $reset + if [ "$reset" -eq "1" ]; then + swconfig dev $name set reset + fi + swconfig dev $name set enable_vlan $enable swconfig dev $name vlan $role set ports "$ports" swconfig dev $name set apply @@ -110,7 +113,7 @@ preinit_ip() { preinit_config_board fi - preinit_net_echo "Doing Lede Preinit\n" + preinit_net_echo "Doing OpenWrt Preinit\n" } preinit_ip_deconfig() { @@ -144,11 +147,6 @@ preinit_net_echo() { } } -preinit_echo() { - preinit_net_echo $1 - echo $1 -} - pi_indicate_preinit() { set_state preinit } diff --git a/package/base-files/files/lib/preinit/40_run_failsafe_hook b/package/base-files/files/lib/preinit/40_run_failsafe_hook index 7301f77349..533b0a9771 100644 --- a/package/base-files/files/lib/preinit/40_run_failsafe_hook +++ b/package/base-files/files/lib/preinit/40_run_failsafe_hook @@ -5,8 +5,12 @@ run_failsafe_hook() { [ "$pi_preinit_no_failsafe" = "y" ] && return if [ "$FAILSAFE" = "true" ]; then + lock /tmp/.failsafe boot_run_hook failsafe - lock -w /tmp/.failsafe + while [ ! -e /tmp/sysupgrade ]; do + lock -w /tmp/.failsafe + done + exit fi } diff --git a/package/base-files/files/lib/preinit/99_10_failsafe_login b/package/base-files/files/lib/preinit/99_10_failsafe_login index 3147cdc5a6..728c63b2e8 100644 --- a/package/base-files/files/lib/preinit/99_10_failsafe_login +++ b/package/base-files/files/lib/preinit/99_10_failsafe_login @@ -8,10 +8,13 @@ failsafe_netlogin () { } failsafe_shell() { - lock /tmp/.failsafe - ash --login - echo "Please reboot system when done with failsafe network logins" - while true; do sleep 1; done + local console="$(sed -e 's/ /\n/g' /proc/cmdline | grep '^console=' | head -1 | sed -e 's/^console=//' -e 's/,.*//')" + [ -n "$console" ] || console=console + [ -c "/dev/$console" ] || return 0 + while true; do + ash --login <"/dev/$console" >"/dev/$console" 2>"/dev/$console" + sleep 1 + done & } boot_hook_add failsafe failsafe_netlogin diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index e3519ca2cb..5f5c9dc8a3 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -6,143 +6,33 @@ RAM_ROOT=/tmp/root libs() { ldd $* 2>/dev/null | sed -r 's/(.* => )?(.*) .*/\2/'; } install_file() { # [ ... ] + local target dest dir for file in "$@"; do + if [ -L "$file" ]; then + target="$(readlink -f "$file")" + dest="$RAM_ROOT/$file" + [ ! -f "$dest" ] && { + dir="$(dirname "$dest")" + mkdir -p "$dir" + ln -s "$target" "$dest" + } + file="$target" + fi dest="$RAM_ROOT/$file" - [ -f $file -a ! -f $dest ] && { - dir="$(dirname $dest)" + [ -f "$file" -a ! -f "$dest" ] && { + dir="$(dirname "$dest")" mkdir -p "$dir" - cp $file $dest + cp "$file" "$dest" } done } -install_bin() { # [ ... ] +install_bin() { + local src files src=$1 files=$1 [ -x "$src" ] && files="$src $(libs $src)" install_file $files - shift - for link in "$@"; do { - dest="$RAM_ROOT/$link" - dir="$(dirname $dest)" - mkdir -p "$dir" - [ -f "$dest" ] || ln -s $src $dest - }; done -} - -supivot() { # - /bin/mount | grep "on $1 type" 2>&- 1>&- || /bin/mount -o bind $1 $1 - mkdir -p $1$2 $1/proc $1/sys $1/dev $1/tmp $1/overlay && \ - /bin/mount -o noatime,move /proc $1/proc && \ - pivot_root $1 $1$2 || { - /bin/umount -l $1 $1 - return 1 - } - - /bin/mount -o noatime,move $2/sys /sys - /bin/mount -o noatime,move $2/dev /dev - /bin/mount -o noatime,move $2/tmp /tmp - /bin/mount -o noatime,move $2/overlay /overlay 2>&- - return 0 -} - -run_ramfs() { # [...] - install_bin /bin/busybox /bin/ash /bin/sh /bin/mount /bin/umount \ - /sbin/pivot_root /sbin/reboot /bin/sync /bin/dd /bin/grep \ - /bin/cp /bin/mv /bin/tar /usr/bin/md5sum "/usr/bin/[" /bin/dd \ - /bin/vi /bin/ls /bin/cat /usr/bin/awk /usr/bin/hexdump \ - /bin/sleep /bin/zcat /usr/bin/bzcat /usr/bin/printf /usr/bin/wc \ - /bin/cut /usr/bin/printf /bin/sync /bin/mkdir /bin/rmdir \ - /bin/rm /usr/bin/basename /bin/kill /bin/chmod /usr/bin/find \ - /bin/mknod - - install_bin /bin/uclient-fetch /bin/wget - install_bin /sbin/mtd - install_bin /sbin/mount_root - install_bin /sbin/snapshot - install_bin /sbin/snapshot_tool - install_bin /usr/sbin/ubiupdatevol - install_bin /usr/sbin/ubiattach - install_bin /usr/sbin/ubiblock - install_bin /usr/sbin/ubiformat - install_bin /usr/sbin/ubidetach - install_bin /usr/sbin/ubirsvol - install_bin /usr/sbin/ubirmvol - install_bin /usr/sbin/ubimkvol - install_bin /usr/sbin/partx - install_bin /usr/sbin/losetup - install_bin /usr/sbin/mkfs.ext4 - for file in $RAMFS_COPY_BIN; do - install_bin ${file//:/ } - done - install_file /etc/resolv.conf /lib/*.sh /lib/functions/*.sh /lib/upgrade/*.sh $RAMFS_COPY_DATA - - [ -L "/lib64" ] && ln -s /lib $RAM_ROOT/lib64 - - supivot $RAM_ROOT /mnt || { - echo "Failed to switch over to ramfs. Please reboot." - exit 1 - } - - /bin/mount -o remount,ro /mnt - /bin/umount -l /mnt - - grep /overlay /proc/mounts > /dev/null && { - /bin/mount -o noatime,remount,ro /overlay - /bin/umount -l /overlay - } - - # spawn a new shell from ramdisk to reduce the probability of cache issues - exec /bin/busybox ash -c "$*" -} - -kill_remaining() { # [ ] - local sig="${1:-TERM}" - echo -n "Sending $sig to remaining processes ... " - - local my_pid=$$ - local my_ppid=$(cut -d' ' -f4 /proc/$my_pid/stat) - local my_ppisupgraded= - grep -q upgraded /proc/$my_ppid/cmdline >/dev/null && { - local my_ppisupgraded=1 - } - - local stat - for stat in /proc/[0-9]*/stat; do - [ -f "$stat" ] || continue - - local pid name state ppid rest - read pid name state ppid rest < $stat - name="${name#(}"; name="${name%)}" - - local cmdline - read cmdline < /proc/$pid/cmdline - - # Skip kernel threads - [ -n "$cmdline" ] || continue - - if [ $$ -eq 1 ] || [ $my_ppid -eq 1 ] && [ -n "$my_ppisupgraded" ]; then - # Running as init process, kill everything except me - if [ $pid -ne $$ ] && [ $pid -ne $my_ppid ]; then - echo -n "$name " - kill -$sig $pid 2>/dev/null - fi - else - case "$name" in - # Skip essential services - *procd*|*ash*|*init*|*watchdog*|*ssh*|*dropbear*|*telnet*|*login*|*hostapd*|*wpa_supplicant*|*nas*|*relayd*) : ;; - - # Killable process - *) - if [ $pid -ne $$ ] && [ $ppid -ne $$ ]; then - echo -n "$name " - kill -$sig $pid 2>/dev/null - fi - ;; - esac - fi - done - echo "" } run_hooks() { @@ -175,28 +65,31 @@ v() { [ "$VERBOSE" -ge 1 ] && echo "$@" } +json_string() { + local v="$1" + v="${v//\\/\\\\}" + v="${v//\"/\\\"}" + echo "\"$v\"" +} + rootfs_type() { /bin/mount | awk '($3 ~ /^\/$/) && ($5 !~ /rootfs/) { print $5 }' } get_image() { # [ ] local from="$1" - local conc="$2" - local cmd - - case "$from" in - http://*|ftp://*) cmd="wget -O- -q";; - *) cmd="cat";; - esac - if [ -z "$conc" ]; then - local magic="$(eval $cmd \"$from\" 2>/dev/null | dd bs=2 count=1 2>/dev/null | hexdump -n 2 -e '1/1 "%02x"')" + local cat="$2" + + if [ -z "$cat" ]; then + local magic="$(dd if="$from" bs=2 count=1 2>/dev/null | hexdump -n 2 -e '1/1 "%02x"')" case "$magic" in - 1f8b) conc="zcat";; - 425a) conc="bzcat";; + 1f8b) cat="zcat";; + 425a) cat="bzcat";; + *) cat="cat";; esac fi - eval "$cmd \"$from\" 2>/dev/null ${conc:+| $conc}" + $cat "$from" 2>/dev/null } get_magic_word() { @@ -208,7 +101,7 @@ get_magic_long() { } export_bootdevice() { - local cmdline uuid disk uevent + local cmdline uuid disk uevent line local MAJOR MINOR DEVNAME DEVTYPE if read cmdline < /proc/cmdline; then @@ -241,8 +134,9 @@ export_bootdevice() { esac if [ -e "$uevent" ]; then - . "$uevent" - + while read line; do + export -n "$line" + done < "$uevent" export BOOTDEV_MAJOR=$MAJOR export BOOTDEV_MINOR=$MINOR return 0 @@ -254,10 +148,12 @@ export_bootdevice() { export_partdevice() { local var="$1" offset="$2" - local uevent MAJOR MINOR DEVNAME DEVTYPE + local uevent line MAJOR MINOR DEVNAME DEVTYPE for uevent in /sys/class/block/*/uevent; do - . "$uevent" + while read line; do + export -n "$line" + done < "$uevent" if [ $BOOTDEV_MAJOR = $MAJOR -a $(($BOOTDEV_MINOR + $offset)) = $MINOR -a -b "/dev/$DEVNAME" ]; then export "$var=$DEVNAME" return 0 @@ -267,6 +163,14 @@ export_partdevice() { return 1 } +hex_le32_to_cpu() { + [ "$(echo 01 | hexdump -v -n 2 -e '/2 "%x"')" == "3031" ] && { + echo "${1:0:2}${1:8:2}${1:6:2}${1:4:2}${1:2:2}" + return + } + echo "$@" +} + get_partitions() { # local disk="$1" local filename="$2" @@ -274,8 +178,8 @@ get_partitions() { # if [ -b "$disk" -o -f "$disk" ]; then v "Reading partition table from $filename..." - local magic="$(hexdump -v -n 2 -s 0x1FE -e '1/2 "0x%04X"' "$disk")" - if [ "$magic" != 0xAA55 ]; then + local magic=$(dd if="$disk" bs=2 count=1 skip=255 2>/dev/null) + if [ "$magic" != $'\x55\xAA' ]; then v "Invalid partition table on $disk" exit fi @@ -286,9 +190,9 @@ get_partitions() { # for part in 1 2 3 4; do set -- $(hexdump -v -n 12 -s "$((0x1B2 + $part * 16))" -e '3/4 "0x%08X "' "$disk") - local type="$(($1 % 256))" - local lba="$(($2))" - local num="$(($3))" + local type="$(( $(hex_le32_to_cpu $1) % 256))" + local lba="$(( $(hex_le32_to_cpu $2) ))" + local num="$(( $(hex_le32_to_cpu $3) ))" [ $type -gt 0 ] || continue @@ -320,12 +224,14 @@ default_do_upgrade() { fi } -do_upgrade() { +do_upgrade_stage2() { v "Performing system upgrade..." - if type 'platform_do_upgrade' >/dev/null 2>/dev/null; then - platform_do_upgrade "$ARGV" + if [ -n "$do_upgrade" ]; then + eval "$do_upgrade" + elif type 'platform_do_upgrade' >/dev/null 2>/dev/null; then + platform_do_upgrade "$IMAGE" else - default_do_upgrade "$ARGV" + default_do_upgrade "$IMAGE" fi if [ "$SAVE_CONFIG" -eq 1 ] && type 'platform_copy_config' >/dev/null 2>/dev/null; then @@ -333,12 +239,11 @@ do_upgrade() { fi v "Upgrade completed" - [ -n "$DELAY" ] && sleep "$DELAY" - ask_bool 1 "Reboot" && { - v "Rebooting system..." - umount -a - reboot -f - sleep 5 - echo b 2>/dev/null >/proc/sysrq-trigger - } + sleep 1 + + v "Rebooting system..." + umount -a + reboot -f + sleep 5 + echo b 2>/dev/null >/proc/sysrq-trigger } diff --git a/package/base-files/files/lib/upgrade/nand.sh b/package/base-files/files/lib/upgrade/nand.sh new file mode 100644 index 0000000000..42f488c118 --- /dev/null +++ b/package/base-files/files/lib/upgrade/nand.sh @@ -0,0 +1,329 @@ +#!/bin/sh +# Copyright (C) 2014 OpenWrt.org +# + +. /lib/functions.sh + +# 'kernel' partition on NAND contains the kernel +CI_KERNPART="${CI_KERNPART:-kernel}" + +# 'ubi' partition on NAND contains UBI +CI_UBIPART="${CI_UBIPART:-ubi}" + +ubi_mknod() { + local dir="$1" + local dev="/dev/$(basename $dir)" + + [ -e "$dev" ] && return 0 + + local devid="$(cat $dir/dev)" + local major="${devid%%:*}" + local minor="${devid##*:}" + mknod "$dev" c $major $minor +} + +nand_find_volume() { + local ubidevdir ubivoldir + ubidevdir="/sys/devices/virtual/ubi/$1" + [ ! -d "$ubidevdir" ] && return 1 + for ubivoldir in $ubidevdir/${1}_*; do + [ ! -d "$ubivoldir" ] && continue + if [ "$( cat $ubivoldir/name )" = "$2" ]; then + basename $ubivoldir + ubi_mknod "$ubivoldir" + return 0 + fi + done +} + +nand_find_ubi() { + local ubidevdir ubidev mtdnum + mtdnum="$( find_mtd_index $1 )" + [ ! "$mtdnum" ] && return 1 + for ubidevdir in /sys/devices/virtual/ubi/ubi*; do + [ ! -d "$ubidevdir" ] && continue + cmtdnum="$( cat $ubidevdir/mtd_num )" + [ ! "$mtdnum" ] && continue + if [ "$mtdnum" = "$cmtdnum" ]; then + ubidev=$( basename $ubidevdir ) + ubi_mknod "$ubidevdir" + echo $ubidev + return 0 + fi + done +} + +nand_get_magic_long() { + dd if="$1" skip=$2 bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' +} + +get_magic_long_tar() { + ( tar xf $1 $2 -O | dd bs=4 count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null +} + +identify_magic() { + local magic=$1 + case "$magic" in + "55424923") + echo "ubi" + ;; + "31181006") + echo "ubifs" + ;; + "68737173") + echo "squashfs" + ;; + "d00dfeed") + echo "fit" + ;; + "4349"*) + echo "combined" + ;; + *) + echo "unknown $magic" + ;; + esac +} + + +identify() { + identify_magic $(nand_get_magic_long "$1" "${2:-0}") +} + +identify_tar() { + identify_magic $(get_magic_long_tar "$1" "$2") +} + +nand_restore_config() { + sync + local ubidev=$( nand_find_ubi $CI_UBIPART ) + local ubivol="$( nand_find_volume $ubidev rootfs_data )" + [ ! "$ubivol" ] && + ubivol="$( nand_find_volume $ubidev rootfs )" + mkdir /tmp/new_root + if ! mount -t ubifs /dev/$ubivol /tmp/new_root; then + echo "mounting ubifs $ubivol failed" + rmdir /tmp/new_root + return 1 + fi + mv "$1" "/tmp/new_root/sysupgrade.tgz" + umount /tmp/new_root + sync + rmdir /tmp/new_root +} + +nand_upgrade_prepare_ubi() { + local rootfs_length="$1" + local rootfs_type="$2" + local has_kernel="${3:-0}" + local has_env="${4:-0}" + + local mtdnum="$( find_mtd_index "$CI_UBIPART" )" + if [ ! "$mtdnum" ]; then + echo "cannot find ubi mtd partition $CI_UBIPART" + return 1 + fi + + local ubidev="$( nand_find_ubi "$CI_UBIPART" )" + if [ ! "$ubidev" ]; then + ubiattach -m "$mtdnum" + sync + ubidev="$( nand_find_ubi "$CI_UBIPART" )" + fi + + if [ ! "$ubidev" ]; then + ubiformat /dev/mtd$mtdnum -y + ubiattach -m "$mtdnum" + sync + ubidev="$( nand_find_ubi "$CI_UBIPART" )" + [ "$has_env" -gt 0 ] && { + ubimkvol /dev/$ubidev -n 0 -N ubootenv -s 1MiB + ubimkvol /dev/$ubidev -n 1 -N ubootenv2 -s 1MiB + } + fi + + local kern_ubivol="$( nand_find_volume $ubidev $CI_KERNPART )" + local root_ubivol="$( nand_find_volume $ubidev rootfs )" + local data_ubivol="$( nand_find_volume $ubidev rootfs_data )" + + # remove ubiblock device of rootfs + local root_ubiblk="ubiblock${root_ubivol:3}" + if [ "$root_ubivol" -a -e "/dev/$root_ubiblk" ]; then + echo "removing $root_ubiblk" + if ! ubiblock -r /dev/$root_ubivol; then + echo "cannot remove $root_ubiblk" + return 1; + fi + fi + + # kill volumes + [ "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_KERNPART || true + [ "$root_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs || true + [ "$data_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs_data || true + + # update kernel + if [ "$has_kernel" = "1" ]; then + if ! ubimkvol /dev/$ubidev -N $CI_KERNPART -s $kernel_length; then + echo "cannot create kernel volume" + return 1; + fi + fi + + # update rootfs + local root_size_param + if [ "$rootfs_type" = "ubifs" ]; then + root_size_param="-m" + else + root_size_param="-s $rootfs_length" + fi + if ! ubimkvol /dev/$ubidev -N rootfs $root_size_param; then + echo "cannot create rootfs volume" + return 1; + fi + + # create rootfs_data for non-ubifs rootfs + if [ "$rootfs_type" != "ubifs" ]; then + if ! ubimkvol /dev/$ubidev -N rootfs_data -m; then + echo "cannot initialize rootfs_data volume" + return 1 + fi + fi + sync + return 0 +} + +nand_do_upgrade_success() { + local conf_tar="/tmp/sysupgrade.tgz" + + sync + [ -f "$conf_tar" ] && nand_restore_config "$conf_tar" + echo "sysupgrade successful" + umount -a + reboot -f +} + +# Flash the UBI image to MTD partition +nand_upgrade_ubinized() { + local ubi_file="$1" + local mtdnum="$(find_mtd_index "$CI_UBIPART")" + + [ ! "$mtdnum" ] && { + CI_UBIPART="rootfs" + mtdnum="$(find_mtd_index "$CI_UBIPART")" + } + + if [ ! "$mtdnum" ]; then + echo "cannot find mtd device $CI_UBIPART" + umount -a + reboot -f + fi + + local mtddev="/dev/mtd${mtdnum}" + ubidetach -p "${mtddev}" || true + sync + ubiformat "${mtddev}" -y -f "${ubi_file}" + ubiattach -p "${mtddev}" + nand_do_upgrade_success +} + +# Write the UBIFS image to UBI volume +nand_upgrade_ubifs() { + local rootfs_length=`(cat $1 | wc -c) 2> /dev/null` + + nand_upgrade_prepare_ubi "$rootfs_length" "ubifs" "0" "0" + + local ubidev="$( nand_find_ubi "$CI_UBIPART" )" + local root_ubivol="$(nand_find_volume $ubidev rootfs)" + ubiupdatevol /dev/$root_ubivol -s $rootfs_length $1 + + nand_do_upgrade_success +} + +nand_upgrade_tar() { + local tar_file="$1" + local kernel_mtd="$(find_mtd_index $CI_KERNPART)" + + local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$') + board_dir=${board_dir%/} + + local kernel_length=`(tar xf $tar_file ${board_dir}/kernel -O | wc -c) 2> /dev/null` + local rootfs_length=`(tar xf $tar_file ${board_dir}/root -O | wc -c) 2> /dev/null` + + local rootfs_type="$(identify_tar "$tar_file" ${board_dir}/root)" + + local has_kernel=1 + local has_env=0 + + [ "$kernel_length" != 0 -a -n "$kernel_mtd" ] && { + tar xf $tar_file ${board_dir}/kernel -O | mtd write - $CI_KERNPART + } + [ "$kernel_length" = 0 -o ! -z "$kernel_mtd" ] && has_kernel=0 + + nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "$has_kernel" "$has_env" + + local ubidev="$( nand_find_ubi "$CI_UBIPART" )" + [ "$has_kernel" = "1" ] && { + local kern_ubivol="$(nand_find_volume $ubidev $CI_KERNPART)" + tar xf $tar_file ${board_dir}/kernel -O | \ + ubiupdatevol /dev/$kern_ubivol -s $kernel_length - + } + + local root_ubivol="$(nand_find_volume $ubidev rootfs)" + tar xf $tar_file ${board_dir}/root -O | \ + ubiupdatevol /dev/$root_ubivol -s $rootfs_length - + + nand_do_upgrade_success +} + +# Recognize type of passed file and start the upgrade process +nand_do_upgrade() { + if [ -n "$IS_PRE_UPGRADE" ]; then + # Previously, nand_do_upgrade was called from the platform_pre_upgrade + # hook; this piece of code handles scripts that haven't been + # updated. All scripts should gradually move to call nand_do_upgrade + # from platform_do_upgrade instead. + export do_upgrade="nand_do_upgrade '$1'" + return + fi + + local file_type=$(identify $1) + + if type 'platform_nand_pre_upgrade' >/dev/null 2>/dev/null; then + platform_nand_pre_upgrade "$1" + fi + + [ ! "$(find_mtd_index "$CI_UBIPART")" ] && CI_UBIPART="rootfs" + + case "$file_type" in + "ubi") nand_upgrade_ubinized $1;; + "ubifs") nand_upgrade_ubifs $1;; + *) nand_upgrade_tar $1;; + esac +} + +# Check if passed file is a valid one for NAND sysupgrade. Currently it accepts +# 3 types of files: +# 1) UBI - should contain an ubinized image, header is checked for the proper +# MAGIC +# 2) UBIFS - should contain UBIFS partition that will replace "rootfs" volume, +# header is checked for the proper MAGIC +# 3) TAR - archive has to include "sysupgrade-BOARD" directory with a non-empty +# "CONTROL" file (at this point its content isn't verified) +# +# You usually want to call this function in platform_check_image. +# +# $(1): board name, used in case of passing TAR file +# $(2): file to be checked +nand_do_platform_check() { + local board_name="$1" + local tar_file="$2" + local control_length=`(tar xf $tar_file sysupgrade-$board_name/CONTROL -O | wc -c) 2> /dev/null` + local file_type="$(identify $2)" + + [ "$control_length" = 0 -a "$file_type" != "ubi" -a "$file_type" != "ubifs" ] && { + echo "Invalid sysupgrade file." + return 1 + } + + return 0 +} diff --git a/package/base-files/files/lib/upgrade/stage2 b/package/base-files/files/lib/upgrade/stage2 new file mode 100755 index 0000000000..3985d8fd7e --- /dev/null +++ b/package/base-files/files/lib/upgrade/stage2 @@ -0,0 +1,150 @@ +#!/bin/sh + +. /lib/functions.sh +. /lib/functions/system.sh + +export IMAGE="$1" +COMMAND="$2" + +export ARGV="$IMAGE" +export ARGC=1 + +export SAVE_CONFIG=1 +export SAVE_PARTITIONS=1 + +export INTERACTIVE=0 +export VERBOSE=1 +export CONFFILES=/tmp/sysupgrade.conffiles +export CONF_TAR=/tmp/sysupgrade.tgz + +RAMFS_COPY_BIN= # extra programs for temporary ramfs root +RAMFS_COPY_DATA= # extra data files + + +[ -f "$CONF_TAR" ] || export SAVE_CONFIG=0 +[ -f /tmp/sysupgrade.always.overwrite.bootdisk.partmap ] && export SAVE_PARTITIONS=0 + +include /lib/upgrade + + +supivot() { # + /bin/mount | grep "on $1 type" 2>&- 1>&- || /bin/mount -o bind $1 $1 + mkdir -p $1$2 $1/proc $1/sys $1/dev $1/tmp $1/overlay && \ + /bin/mount -o noatime,move /proc $1/proc && \ + pivot_root $1 $1$2 || { + /bin/umount -l $1 $1 + return 1 + } + + /bin/mount -o noatime,move $2/sys /sys + /bin/mount -o noatime,move $2/dev /dev + /bin/mount -o noatime,move $2/tmp /tmp + /bin/mount -o noatime,move $2/overlay /overlay 2>&- + return 0 +} + +switch_to_ramfs() { + for binary in \ + /bin/busybox /bin/ash /bin/sh /bin/mount /bin/umount \ + pivot_root mount_root reboot sync kill sleep \ + md5sum hexdump cat zcat bzcat dd tar \ + ls basename find cp mv rm mkdir rmdir mknod touch chmod \ + '[' printf wc grep awk sed cut \ + mtd partx losetup mkfs.ext4 \ + ubiupdatevol ubiattach ubiblock ubiformat \ + ubidetach ubirsvol ubirmvol ubimkvol \ + snapshot snapshot_tool \ + $RAMFS_COPY_BIN + do + local file="$(which "$binary" 2>/dev/null)" + [ -n "$file" ] && install_bin "$file" + done + install_file /etc/resolv.conf /lib/*.sh /lib/functions/*.sh /lib/upgrade/*.sh $RAMFS_COPY_DATA + + [ -L "/lib64" ] && ln -s /lib $RAM_ROOT/lib64 + + supivot $RAM_ROOT /mnt || { + echo "Failed to switch over to ramfs. Please reboot." + exit 1 + } + + /bin/mount -o remount,ro /mnt + /bin/umount -l /mnt + + grep /overlay /proc/mounts > /dev/null && { + /bin/mount -o noatime,remount,ro /overlay + /bin/umount -l /overlay + } +} + +kill_remaining() { # [ [ ] ] + local loop_limit=10 + + local sig="${1:-TERM}" + local loop="${2:-0}" + local run=true + local stat + local proc_ppid=$(cut -d' ' -f4 /proc/$$/stat) + + echo -n "Sending $sig to remaining processes ... " + + while $run; do + run=false + for stat in /proc/[0-9]*/stat; do + [ -f "$stat" ] || continue + + local pid name state ppid rest + read pid name state ppid rest < $stat + name="${name#(}"; name="${name%)}" + + # Skip PID1, our parent, ourself and our children + [ $pid -ne 1 -a $pid -ne $proc_ppid -a $pid -ne $$ -a $ppid -ne $$ ] || continue + + local cmdline + read cmdline < /proc/$pid/cmdline + + # Skip kernel threads + [ -n "$cmdline" ] || continue + + echo -n "$name " + kill -$sig $pid 2>/dev/null + + [ $loop -eq 1 ] && run=true + done + + let loop_limit-- + [ $loop_limit -eq 0 ] && { + echo + echo "Failed to kill all processes." + exit 1 + } + done + echo +} + + +killall -9 telnetd +killall -9 dropbear +killall -9 ash + +kill_remaining TERM +sleep 3 +kill_remaining KILL 1 + +sleep 1 + + +if [ -n "$IMAGE" ] && type 'platform_pre_upgrade' >/dev/null 2>/dev/null; then + IS_PRE_UPGRADE=1 platform_pre_upgrade "$IMAGE" + + # Needs to be unset again because of busybox weirdness ... + IS_PRE_UPGRADE= +fi + +if [ -n "$(rootfs_type)" ]; then + echo "Switching to ramdisk..." + switch_to_ramfs +fi + +# Exec new shell from ramfs +exec /bin/busybox ash -c "$COMMAND" diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index c095ca81c5..bf5428af25 100755 --- a/package/base-files/files/sbin/sysupgrade +++ b/package/base-files/files/sbin/sysupgrade @@ -1,17 +1,15 @@ #!/bin/sh + . /lib/functions.sh . /lib/functions/system.sh # initialize defaults -RAMFS_COPY_BIN="" # extra programs for temporary ramfs root -RAMFS_COPY_DATA="" # extra data files export MTD_CONFIG_ARGS="" export INTERACTIVE=0 export VERBOSE=1 export SAVE_CONFIG=1 export SAVE_OVERLAY=0 export SAVE_PARTITIONS=1 -export DELAY= export CONF_IMAGE= export CONF_BACKUP_LIST=0 export CONF_BACKUP= @@ -25,7 +23,6 @@ export TEST=0 while [ -n "$1" ]; do case "$1" in -i) export INTERACTIVE=1;; - -d) export DELAY="$2"; shift;; -v) export VERBOSE="$(($VERBOSE + 1))";; -q) export VERBOSE="$(($VERBOSE - 1))";; -n) export SAVE_CONFIG=0;; @@ -50,16 +47,14 @@ done export CONFFILES=/tmp/sysupgrade.conffiles export CONF_TAR=/tmp/sysupgrade.tgz -export ARGV="$*" -export ARGC="$#" +IMAGE="$1" -[ -z "$ARGV" -a -z "$NEED_IMAGE" -o $HELP -gt 0 ] && { +[ -z "$IMAGE" -a -z "$NEED_IMAGE" -o $HELP -gt 0 ] && { cat <...] $0 [-q] [-i] upgrade-option: - -d add a delay before rebooting -f restore configuration from .tar.gz (file or url) -i interactive mode -c attempt to preserve all changed files in /etc/ @@ -90,7 +85,7 @@ EOF exit 1 } -[ -n "$ARGV" -a -n "$NEED_IMAGE" ] && { +[ -n "$IMAGE" -a -n "$NEED_IMAGE" ] && { cat <<-EOF -b|--create-backup and -r|--restore-backup do not perform a firmware upgrade. Do not specify both -b|-r and a firmware image. @@ -101,25 +96,38 @@ EOF # prevent messages from clobbering the tarball when using stdout [ "$CONF_BACKUP" = "-" ] && export VERBOSE=0 + +list_conffiles() { + awk ' + BEGIN { conffiles = 0 } + /^Conffiles:/ { conffiles = 1; next } + !/^ / { conffiles = 0; next } + conffiles == 1 { print } + ' /usr/lib/opkg/status +} + +list_changed_conffiles() { + # Cannot handle spaces in filenames - but opkg cannot either... + list_conffiles | while read file csum; do + [ -r "$file" ] || continue + + echo "${csum} ${file}" | sha256sum -sc - || echo "$file" + done +} + add_uci_conffiles() { local file="$1" ( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \ /etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \ -type f -o -type l 2>/dev/null; - opkg list-changed-conffiles ) | sort -u > "$file" + list_changed_conffiles ) | sort -u > "$file" return 0 } add_overlayfiles() { local file="$1" - if [ -d /overlay/upper ]; then - local overlaydir="/overlay/upper" - else - local overlaydir="/overlay" - fi - find $overlaydir/etc/ -type f -o -type l | sed \ + find /overlay/upper/etc/ -type f -o -type l | sed \ -e 's,^/overlay\/upper/,/,' \ - -e 's,^/overlay/,/,' \ -e '\,/META_[a-zA-Z0-9]*$,d' \ -e '\,/functions.sh$,d' \ -e '\,/[^/]*-opkg$,d' \ @@ -130,20 +138,26 @@ add_overlayfiles() { # hooks sysupgrade_image_check="fwtool_check_image platform_check_image" sysupgrade_pre_upgrade="fwtool_pre_upgrade" -[ $SAVE_OVERLAY = 0 -o ! -d /overlay/etc ] && \ - sysupgrade_init_conffiles="add_uci_conffiles" || \ + +if [ $SAVE_OVERLAY = 1 ]; then + [ ! -d /overlay/upper/etc ] && { + echo "Cannot find '/overlay/upper/etc', required for '-c'" + exit 1 + } sysupgrade_init_conffiles="add_overlayfiles" +else + sysupgrade_init_conffiles="add_uci_conffiles" +fi include /lib/upgrade -[ "$1" = "nand" ] && nand_upgrade_stage2 $@ - do_save_conffiles() { local conf_tar="${1:-$CONF_TAR}" [ -z "$(rootfs_type)" ] && { echo "Cannot save config while running from ramdisk." ask_bool 0 "Abort" && exit + rm -f "$conf_tar" return 0 } run_hooks "$CONFFILES" $sysupgrade_init_conffiles @@ -157,7 +171,7 @@ do_save_conffiles() { } if [ $CONF_BACKUP_LIST -eq 1 ]; then - add_uci_conffiles "$CONFFILES" + run_hooks "$CONFFILES" $sysupgrade_init_conffiles cat "$CONFFILES" rm -f "$CONFFILES" exit 0 @@ -184,8 +198,33 @@ type platform_check_image >/dev/null 2>/dev/null || { exit 1 } +case "$IMAGE" in + http://*) + wget -O/tmp/sysupgrade.img "$IMAGE" + IMAGE=/tmp/sysupgrade.img + ;; +esac + +IMAGE="$(readlink -f "$IMAGE")" + +case "$IMAGE" in + '') + echo "Image file not found." + exit 1 + ;; + /tmp/*) ;; + *) + v "Image not in /tmp, copying..." + cp -f "$IMAGE" /tmp/sysupgrade.img + IMAGE=/tmp/sysupgrade.img + ;; +esac + +export ARGV="$IMAGE" +export ARGC=1 + for check in $sysupgrade_image_check; do - ( eval "$check \"\$ARGV\"" ) || { + ( $check "$IMAGE" ) || { if [ $FORCE -eq 1 ]; then echo "Image check '$check' failed but --force given - will update anyway!" break @@ -211,6 +250,7 @@ elif ask_bool $SAVE_CONFIG "Keep config files over reflash"; then [ $TEST -eq 1 ] || do_save_conffiles export SAVE_CONFIG=1 else + [ $TEST -eq 1 ] || rm -f "$CONF_TAR" export SAVE_CONFIG=0 fi @@ -218,28 +258,26 @@ if [ $TEST -eq 1 ]; then exit 0 fi -run_hooks "" $sysupgrade_pre_upgrade - -# Some platforms/devices may want different sysupgrade process, e.g. without -# killing processes yet or calling ubus system upgrade method. -# This is needed e.g. on NAND devices where we just want to trigger stage1 at -# this point. -if type 'platform_pre_upgrade' >/dev/null 2>/dev/null; then - platform_pre_upgrade "$ARGV" +if [ $SAVE_PARTITIONS -eq 0 ]; then + touch /tmp/sysupgrade.always.overwrite.bootdisk.partmap +else + rm -f /tmp/sysupgrade.always.overwrite.bootdisk.partmap fi -ubus call system upgrade -touch /tmp/sysupgrade +run_hooks "" $sysupgrade_pre_upgrade -if [ ! -f /tmp/failsafe ] ; then - kill_remaining TERM - sleep 3 - kill_remaining KILL -fi +install_bin /sbin/upgraded +v "Commencing upgrade. All shell sessions will be closed now." + +COMMAND='. /lib/functions.sh; include /lib/upgrade; do_upgrade_stage2' -if [ -n "$(rootfs_type)" ]; then - v "Switching to ramdisk..." - run_ramfs '. /lib/functions.sh; include /lib/upgrade; do_upgrade' +if [ -n "$FAILSAFE" ]; then + printf '%s\x00%s\x00%s' "$RAM_ROOT" "$IMAGE" "$COMMAND" >/tmp/sysupgrade + lock -u /tmp/.failsafe else - do_upgrade + ubus call system sysupgrade "{ + \"prefix\": $(json_string "$RAM_ROOT"), + \"path\": $(json_string "$IMAGE"), + \"command\": $(json_string "$COMMAND") + }" fi diff --git a/package/base-files/files/usr/lib/os-release b/package/base-files/files/usr/lib/os-release index d134bf4575..82ade59406 100644 --- a/package/base-files/files/usr/lib/os-release +++ b/package/base-files/files/usr/lib/os-release @@ -1,8 +1,8 @@ NAME="%D" -VERSION="%V, %N" +VERSION="%V" ID="%d" -ID_LIKE="librecmc openwrt" -PRETTY_NAME="%D %N %V" +ID_LIKE="lede openwrt" +PRETTY_NAME="%D %V" VERSION_ID="%v" HOME_URL="%m" BUG_URL="%b" @@ -15,4 +15,4 @@ LEDE_DEVICE_MANUFACTURER="%M" LEDE_DEVICE_MANUFACTURER_URL="%m" LEDE_DEVICE_PRODUCT="%P" LEDE_DEVICE_REVISION="%h" -LEDE_RELEASE="%D %N %V %C" +LEDE_RELEASE="%D %V %C" diff --git a/package/base-files/files/usr/libexec/login.sh b/package/base-files/files/usr/libexec/login.sh index 02ac9c828b..3c8bb509c0 100755 --- a/package/base-files/files/usr/libexec/login.sh +++ b/package/base-files/files/usr/libexec/login.sh @@ -1,5 +1,5 @@ #!/bin/sh -[ "$(uci get system.@system[0].ttylogin)" == 1 ] || exec /bin/ash --login +[ "$(uci -q get system.@system[0].ttylogin)" == 1 ] || exec /bin/ash --login exec /bin/login diff --git a/package/base-files/image-config.in b/package/base-files/image-config.in index 7724f7b558..83a2e89f74 100644 --- a/package/base-files/image-config.in +++ b/package/base-files/image-config.in @@ -18,11 +18,11 @@ config TARGET_PREINIT_SUPPRESS_STDERR default y help Sends stderr to null during preinit. This is the default behaviour - in previous versions of OpenWrt. This also prevents init process + in previous versions of libreCMC. This also prevents init process itself from displaying stderr, however processes launched by init in multiuser through inittab will use the current terminal (e.g. the ash shell launched by inittab will display stderr). That's - the same behaviour as seen in previous version of OpenWrt. + the same behaviour as seen in previous version of libreCMC. config TARGET_PREINIT_DISABLE_FAILSAFE bool @@ -139,7 +139,7 @@ menuconfig INITOPT help Prevents showing stderr messages for init command if not already suppressed during preinit. This is the default behaviour in - previous versions of OpenWrt. Removing this does nothing if + previous versions of libreCMC. Removing this does nothing if stderr is suppressed during preinit (which is the default). @@ -163,13 +163,6 @@ if VERSIONOPT This is the name of the release distribution. If unspecified, it defaults to OpenWrt. - config VERSION_NICK - string - prompt "Release version nickname" - help - This is the release codename embedded in the image. - If unspecified, it defaults to the name of source branch. - config VERSION_NUMBER string prompt "Release version number" @@ -199,15 +192,13 @@ if VERSIONOPT %v .. Configured release version number or "snapshot", lowercase %C .. Configured release revision code or value of %R, uppercase %c .. Configured release revision code or value of %R, lowercase - %N .. Release name, uppercase - %n .. Release name, lowercase - %D .. Distribution name or "libreCMC", uppercase - %d .. Distribution name or "librecmc", lowercase + %D .. Distribution name or "OpenWrt", uppercase + %d .. Distribution name or "openwrt", lowercase %T .. Target name %S .. Target/Subtarget name %A .. Package architecture %t .. Build taint flags, e.g. "no-all busybox" - %M .. Manufacturer name or "libreCMC" + %M .. Manufacturer name or "OpenWrt" %P .. Product name or "Generic" %h .. Hardware revision or "v0" diff --git a/package/boot/arm-trusted-firmware-sunxi/Makefile b/package/boot/arm-trusted-firmware-sunxi/Makefile new file mode 100644 index 0000000000..d2554f4ebc --- /dev/null +++ b/package/boot/arm-trusted-firmware-sunxi/Makefile @@ -0,0 +1,51 @@ +# +# Copyright (C) 2017 Hauke Mehrtens +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=arm-trusted-firmware-sunxi +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL=https://github.com/apritzel/arm-trusted-firmware +PKG_SOURCE_DATE:=2018-02-04 +PKG_SOURCE_VERSION:=ae78724247a01560164d607ed66db111c74d8df0 +PKG_MIRROR_HASH:=e4ddc3294f86c1e163d683a2322427bbdd5b63762ead4b1792b34df75d7bda28 + +PKG_LICENSE:=BSD-3-Clause +PKG_LICENSE_FILES:=license.md + +PKG_MAINTAINER:=Hauke Mehrtens + +include $(INCLUDE_DIR)/package.mk + + +define Package/arm-trusted-firmware-sunxi + SECTION:=boot + CATEGORY:=Boot Loaders + TITLE:=ARM Trusted Firmware for Allwinner + DEPENDS:=@TARGET_sunxi_cortexa53 +endef + +export GCC_HONOUR_COPTS=s + +MAKE_VARS = \ + CROSS_COMPILE="$(TARGET_CROSS)" + +MAKE_FLAGS += \ + PLAT=sun50iw1p1 \ + bl31 + +define Build/InstallDev + $(INSTALL_DIR) $(STAGING_DIR_IMAGE) + $(CP) $(PKG_BUILD_DIR)/build/sun50iw1p1/release/bl31.bin $(STAGING_DIR_IMAGE)/bl31.bin +endef + +define Package/arm-trusted-firmware-sunxi/install +endef + +$(eval $(call BuildPackage,arm-trusted-firmware-sunxi)) diff --git a/package/boot/fconfig/Makefile b/package/boot/fconfig/Makefile new file mode 100644 index 0000000000..3c33d73c69 --- /dev/null +++ b/package/boot/fconfig/Makefile @@ -0,0 +1,46 @@ +# +# Copyright (C) 2006-2008 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=fconfig +PKG_VERSION:=20080329 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://andrzejekiert.ovh.org/software/fconfig/ +PKG_HASH:=4ff0e8f07e35e46b705c0dbe9d9544ede01ea092a69e3f7db03e55a3f2bb8eb7 + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/fconfig + SECTION:=utils + CATEGORY:=Utilities + SUBMENU:=Boot Loaders + TITLE:=RedBoot configuration editor + URL:=http://andrzejekiert.ovh.org/software.html.en +endef + +define Package/fconfig/description + displays and (if writable) also edits the RedBoot configuration. +endef + +define Build/Configure +endef + +define Build/Compile + $(call Build/Compile/Default) +endef + +define Package/fconfig/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/fconfig $(1)/usr/sbin/ +endef + +$(eval $(call BuildPackage,fconfig)) diff --git a/package/boot/grub2/Makefile b/package/boot/grub2/Makefile index fde4b1276d..b2ae171569 100644 --- a/package/boot/grub2/Makefile +++ b/package/boot/grub2/Makefile @@ -9,15 +9,13 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=grub -PKG_VERSION:=2.02~rc1 +PKG_CPE_ID:=cpe:/a:gnu:grub2 +PKG_VERSION:=2.02 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_SOURCE_URL:=http://alpha.gnu.org/gnu/grub \ - http://gnualpha.uib.no/grub/ \ - http://mirrors.fe.up.pt/pub/gnu-alpha/grub/ \ - http://www.nic.funet.fi/pub/gnu/alpha/gnu/grub/ -PKG_HASH:=445239e9b96d1143c194c1d37851cf4196b83701c60172e49665e9d453d80278 +PKG_SOURCE_URL:=@GNU/grub +PKG_HASH:=810b3798d316394f94096ec2797909dbf23c858e48f7b3830826b8daa06b7b0f PKG_FIXUP:=autoreconf HOST_BUILD_PARALLEL:=1 @@ -62,7 +60,8 @@ CONFIGURE_ARGS += \ --disable-nls \ --disable-device-mapper \ --disable-libzfs \ - --disable-grub-mkfont + --disable-grub-mkfont \ + --with-platform=none HOST_CONFIGURE_VARS += \ grub_build_mkfont_excuse="don't want fonts" diff --git a/package/boot/kexec-tools/Config.in b/package/boot/kexec-tools/Config.in index 03bc6ee804..068c27e417 100644 --- a/package/boot/kexec-tools/Config.in +++ b/package/boot/kexec-tools/Config.in @@ -1,12 +1,5 @@ menu "Configuration" - depends on PACKAGE_kexec-tools - -config KEXEC_TOOLS_kdump - bool - prompt "kdump support" - default n - help - Include the kdump utility. + depends on PACKAGE_kexec config KEXEC_ZLIB bool diff --git a/package/boot/kexec-tools/Makefile b/package/boot/kexec-tools/Makefile index ecd2a6ea11..76ea46f10f 100644 --- a/package/boot/kexec-tools/Makefile +++ b/package/boot/kexec-tools/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=kexec-tools -PKG_VERSION:=2.0.14-rc1 +PKG_VERSION:=2.0.16 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/linux/utils/kernel/kexec -PKG_HASH:=3fc505ff8d8a2d24c68aac5e6b4783997d5a086966ff3de8b05a0ceb27e5e23b +PKG_HASH:=5b103351ad752c9badd1d65b00eb6de4bce579f944f4df4e3ef3a755ba567010 PKG_FIXUP:=autoreconf @@ -21,22 +21,49 @@ PKG_CONFIG_DEPENDS := CONFIG_KEXEC_ZLIB CONFIG_KEXEC_LZMA include $(INCLUDE_DIR)/package.mk -define Package/kexec-tools +define Package/kexec-tools/Default SECTION:=utils CATEGORY:=Utilities - DEPENDS:=@armeb||@arm||@i386||@x86_64||@powerpc64||@mipsel||@mips +KEXEC_ZLIB:zlib +KEXEC_LZMA:liblzma - TITLE:=Kernel boots kernel URL:=http://kernel.org/pub/linux/kernel/people/horms/kexec-tools/ MAINTAINER:=Florian Fainelli - MENU:=1 +endef + +define Package/kexec-tools + $(call Package/kexec-tools/Default) + TITLE:=kexec-tools transition meta package + DEPENDS:=+kexec endef define Package/kexec-tools/description - kexec is a set of systems call that allows you to load + kexec is a set of system calls that allows you to load another kernel from the currently executing Linux kernel. + The kexec utility allows to load and boot another kernel. endef -define Package/kexec-tools/config +define Package/kexec + $(call Package/kexec-tools/Default) + TITLE:=Kernel boots kernel + DEPENDS:=\ + @armeb||@arm||@i386||@x86_64||@powerpc64||@mipsel||@mips \ + +KEXEC_ZLIB:zlib +KEXEC_LZMA:liblzma @KERNEL_KEXEC +endef + +define Package/kexec/description + The kexec utility allows to load and boot another kernel. +endef + +define Package/kdump + $(call Package/kexec-tools/Default) + TITLE:=Kernel crash analysis + DEPENDS:=+kexec @i386||@x86_64||@arm @KERNEL_CRASH_DUMP +endef + +define Package/kdump/description + The kdump package allows to automatically boot into a + special kernel for analyzing kernel crashes using kdump. +endef + +define Package/kexec/config source "$(SOURCE)/Config.in" endef @@ -65,24 +92,45 @@ CONFIGURE_VARS += \ BUILD_CC="$(HOSTCC)" \ TARGET_CC="$(TARGET_CC)" -kexec-extra-sbin-$(CONFIG_KEXEC_TOOLS_kdump) += kdump - define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)" all install endef define Package/kexec-tools/install + : +endef + +define Package/kexec/install $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) \ - $(addprefix $(PKG_INSTALL_DIR)/usr/sbin/, \ - $(kexec-extra-sbin-y)) \ - $(kexec-extra-bin-y) \ - $(PKG_INSTALL_DIR)/usr/sbin/kexec \ - $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/kexec $(1)/usr/sbin # make a link for compatability with other distros $(INSTALL_DIR) $(1)/sbin $(LN) ../usr/sbin/kexec $(1)/sbin/kexec endef +define Package/kdump/install + $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/config $(1)/etc/uci-defaults + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/kdump $(PKG_INSTALL_DIR)/usr/sbin/vmcore-dmesg $(1)/usr/sbin + $(INSTALL_BIN) ./files/kdump.init $(1)/etc/init.d/kdump + $(INSTALL_BIN) ./files/kdump.defaults $(1)/etc/uci-defaults/kdump + $(INSTALL_CONF) ./files/kdump.config $(1)/etc/config/kdump +endef + +define Package/kdump/prerm +#!/bin/sh + +case $$(uname -m) in + i?86|x86_64) + if grep -q " crashkernel=" /boot/grub/grub.cfg; then + mount /boot -o remount,rw + sed -i 's/ crashkernel=[^ ]*//' /boot/grub/grub.cfg + mount /boot -o remount,ro + fi + ;; +esac +endef + $(eval $(call BuildPackage,kexec-tools)) +$(eval $(call BuildPackage,kexec)) +$(eval $(call BuildPackage,kdump)) diff --git a/package/boot/kexec-tools/files/kdump.config b/package/boot/kexec-tools/files/kdump.config new file mode 100644 index 0000000000..dc6054ffdf --- /dev/null +++ b/package/boot/kexec-tools/files/kdump.config @@ -0,0 +1,7 @@ + +config kdump + option enabled '1' + option save_dmesg '1' + option save_vmcore '0' +# using an external partition to store vmcore is highly recommended! +# option path '/mnt/crashdump' diff --git a/package/boot/kexec-tools/files/kdump.defaults b/package/boot/kexec-tools/files/kdump.defaults new file mode 100644 index 0000000000..2f15e757bf --- /dev/null +++ b/package/boot/kexec-tools/files/kdump.defaults @@ -0,0 +1,11 @@ +#!/bin/sh + +case $(uname -m) in + i?86|x86_64) + if ! grep -q crashkernel /boot/grub/grub.cfg; then + mount /boot -o remount,rw + sed -i 's/linux.*/& crashkernel=32M@32M/' /boot/grub/grub.cfg + mount /boot -o remount,ro + fi + ;; +esac diff --git a/package/boot/kexec-tools/files/kdump.init b/package/boot/kexec-tools/files/kdump.init new file mode 100755 index 0000000000..6a6a94c07e --- /dev/null +++ b/package/boot/kexec-tools/files/kdump.init @@ -0,0 +1,184 @@ +#!/bin/sh /etc/rc.common + +START=41 +STOP=98 + +EXTRA_COMMANDS="status" +EXTRA_HELP=" status Print crashkernel status" + +verify_kdump() { + local cfg="$1" + local enabled + local path + local save_vmcore + local save_dmesg + + config_get_bool enabled "$cfg" enabled 1 + config_get_bool save_dmesg "$cfg" save_dmesg 1 + config_get_bool save_vmcore "$cfg" save_vmcore 0 + + [ "$enabled" -gt 0 ] || return 2 + + [ "$save_dmesg" -gt 0 ] || [ "$save_vmcore" -gt 0 ] || return 2 + + config_get path "$cfg" path "/" + + [ -d "$path" ] || mkdir -p "$path" 2>/dev/null || return 1 +} + +run_kdump() { + local cfg="$1" + local enabled + local path + local save_vmcore + local save_dmesg + + config_get_bool enabled "$cfg" enabled 1 + [ "$enabled" -gt 0 ] || return + + config_get_bool save_dmesg "$cfg" save_dmesg 1 + config_get_bool save_vmcore "$cfg" save_vmcore 0 + config_get path "$cfg" path "/" + + timestamp=$(date "+%Y%m%dT%H%M%S") + + if [ "$save_vmcore" -eq 1 ]; then + echo -n "Saving vmcore (this may take a while)..." + # would like 'sparse' but busybox doesn't support it + dd if=/proc/vmcore of="$path/vmcore-$timestamp" conv=fsync bs=1M + echo " done" + fi + + if [ "$save_dmesg" -eq 1 ]; then + vmcore-dmesg /proc/vmcore > "$path/dmesg-$timestamp" + fi + + sync + reboot -f +} + +find_kernel() { + . /lib/functions.sh + local kernel + + kernel="$BOOT_IMAGE" + if [ -r "$kernel" ]; then + echo $kernel + return 0 + fi + + kernel="$(find_mtd_part kernel)" + if [ -r "$kernel" ]; then + echo $kernel + return 0 + fi + + for voldir in /sys/class/ubi/ubi*_*; do + [ ! -e "$voldir" ] && continue + if [ "$(cat "${voldir}/name")" = "kernel" ]; then + kernel="/dev/$(basename "$voldir")" + echo $kernel + return 0 + fi + done + + return 1 +} + +load_crashkernel() { + local append_cmdline + local kernel + + kernel="$(find_kernel)" + [ $? -gt 0 ] && return 1 + + case "$(uname -m)" in + i?86|x86_64) + grep -q "crashkernel=" /proc/cmdline || return 1 + append_cmdline="1 irqpoll reset_devices maxcpus=1" + ;; + arm*) + append_cmdline="1 maxcpus=1 reset_devices" + ;; + esac + kexec -p "$kernel" --reuse-cmdline --append="$append_cmdline" + return $? +} + +start() { + local retval + + if [ ! -e /sys/kernel/kexec_crash_loaded ]; then + return 1 + fi + + if [ -e /proc/vmcore ]; then + config_load kdump + config_foreach run_kdump kdump + else + config_load kdump + config_foreach verify_kdump kdump + retval=$? + [ $retval = 1 ] && return 1 + [ $retval = 0 ] && load_crashkernel + return $? + fi +} + +stop() { + [ "$(cat /sys/kernel/kexec_crash_loaded)" = "1" ] || return + + if [ -e "$BOOT_IMAGE" ]; then + kexec -p -u "$BOOT_IMAGE" + fi +} + +status() { + local retval kernel + + if [ ! -e /sys/kernel/kexec_crash_loaded ]; then + echo "crashdump not supported by kernel" + return + fi + + if [ $(cat /sys/kernel/kexec_crash_size) -eq 0 ]; then + echo "memory for crashdump kernel not reserved!" + echo "check crashkernel= kernel cmdline parameter" + echo "(a reboot is required after installing kdump)" + return + fi + + kernel="$(find_kernel)" + if [ $? -gt 0 ]; then + echo "cannot find kernel image" + return + else + echo "using kernel image $kernel" + fi + + echo -n "kdump configuration is " + config_load kdump + retval=$? + if [ $retval = 0 ]; then + if [ "$(config_foreach echo kdump)" ]; then + config_foreach verify_kdump kdump + retval=$? + else + retval=1 + fi + fi + + if [ $retval = 0 ]; then + echo "valid" + elif [ $retval = 2 ]; then + echo "disabled" + else + echo "BROKEN" + fi + + echo -n "kexec crash kernel " + if [ "$(cat /sys/kernel/kexec_crash_loaded)" = "0" ]; then + echo -n "not " + fi + echo "loaded" +} diff --git a/package/boot/kexec-tools/patches/100-format_string_fix.patch b/package/boot/kexec-tools/patches/100-format_string_fix.patch deleted file mode 100644 index 601121bcc0..0000000000 --- a/package/boot/kexec-tools/patches/100-format_string_fix.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/kexec/arch/i386/kexec-elf-x86.c -+++ b/kexec/arch/i386/kexec-elf-x86.c -@@ -296,6 +296,6 @@ out: - free(command_line); - free(modified_cmdline); - if (error_msg) -- die(error_msg); -+ die("%s", error_msg); - return result; - } ---- a/kexec/arch/x86_64/kexec-elf-x86_64.c -+++ b/kexec/arch/x86_64/kexec-elf-x86_64.c -@@ -276,6 +276,6 @@ out: - free(command_line); - free(modified_cmdline); - if (error_msg) -- die(error_msg); -+ die("%s", error_msg); - return result; - } diff --git a/package/boot/kexec-tools/patches/110-fix-vmcore-dmsg-compilation-error.patch b/package/boot/kexec-tools/patches/110-fix-vmcore-dmsg-compilation-error.patch deleted file mode 100644 index 0cf2d3ebb5..0000000000 --- a/package/boot/kexec-tools/patches/110-fix-vmcore-dmsg-compilation-error.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/vmcore-dmesg/vmcore-dmesg.c -+++ b/vmcore-dmesg/vmcore-dmesg.c -@@ -1,6 +1,8 @@ - #define _XOPEN_SOURCE 600 - #define _LARGEFILE_SOURCE 1 - #define _FILE_OFFSET_BITS 64 -+#define _GNU_SOURCE -+ - #include - #include - #include diff --git a/package/boot/kobs-ng/Makefile b/package/boot/kobs-ng/Makefile new file mode 100644 index 0000000000..3fa8302b8c --- /dev/null +++ b/package/boot/kobs-ng/Makefile @@ -0,0 +1,46 @@ +# +# Copyright (C) 2013-2014 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=kobs-ng +PKG_VERSION:=5.4 +PKG_RELEASE:=1 + +PKG_SOURCE:=imx-kobs-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://www.freescale.com/lgfiles/NMG/MAD/YOCTO/ +PKG_HASH:=85171b46068ac47c42fedb8104167bf9afd33dd9527ed127e1ca2eb29d7a86bf +PKG_BUILD_DIR:=$(BUILD_DIR)/imx-kobs-$(PKG_VERSION) + +PKG_LICENSE:=GPLv2 +PKG_LICENSE_FILES:=COPYING + +include $(INCLUDE_DIR)/package.mk + +define Package/kobs-ng + SECTION:=utils + CATEGORY:=Utilities + TITLE:=Application for writing bootstreams to NAND flash + DEPENDS:=@TARGET_imx6 +endef + +define Package/kobs-ng/description + The kobs-ng application writes a bootstream to NAND flash with the proper + FCB/DBBT headers and replicated streams. +endef + +define Build/Prepare + $(call Build/Prepare/Default) + echo "const char* git_sha = \"$(PKG_VERSION)\";" > $(PKG_BUILD_DIR)/autoversion.h +endef + +define Package/kobs-ng/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/kobs-ng $(1)/usr/sbin/ +endef + +$(eval $(call BuildPackage,kobs-ng)) diff --git a/package/boot/kobs-ng/patches/001-compile.patch b/package/boot/kobs-ng/patches/001-compile.patch new file mode 100644 index 0000000000..8648dc8b94 --- /dev/null +++ b/package/boot/kobs-ng/patches/001-compile.patch @@ -0,0 +1,24 @@ +--- a/src/mtd.c ++++ b/src/mtd.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + #include + #include + #include +--- a/src/mtd.h ++++ b/src/mtd.h +@@ -25,8 +25,11 @@ + #ifndef MTD_H + #define MTD_H + ++#define _GNU_SOURCE + #include + #include ++#include ++#include + + #include "BootControlBlocks.h" + #include "rom_nand_hamming_code_ecc.h" diff --git a/package/boot/kobs-ng/patches/002-add-init-size-param.patch b/package/boot/kobs-ng/patches/002-add-init-size-param.patch new file mode 100644 index 0000000000..8ad34e9e71 --- /dev/null +++ b/package/boot/kobs-ng/patches/002-add-init-size-param.patch @@ -0,0 +1,45 @@ +Add --chip_0_size param to override the size of the mtd partition which is +required if the SPL does not occupy the entire partition. For Gateworks +Ventana boards the 'uboot' partition contains both the SPL and uboot. +--- a/src/main.c ++++ b/src/main.c +@@ -94,6 +94,7 @@ void usage(void) + " [KOBS] boot structures config options\n" + " --chip_0_device_path= .......... Device of boot (default /dev/mtd0)\n" + " --chip_1_device_path= .......... The second chip in case of multichip NAND\n" ++ " --chip_0_size= ................. Override size of chip_0 device\n" + " --search_exponent= ............ NCB field (default 2)\n" + " --data_setup_time= ............ NCB field (default 80)\n" + " --data_hold_time= ............. NCB field (default 60)\n" +--- a/src/mtd.c ++++ b/src/mtd.c +@@ -876,6 +876,11 @@ struct mtd_data *mtd_open(const struct m + goto out; + } + ++ /* override MTD size */ ++ if (md->cfg.chip_0_size) { ++ miu->size = md->cfg.chip_0_size; ++ } ++ + /* verify it's a nand */ + if (miu->type != MTD_NANDFLASH + && miu->type != MTD_MLCNANDFLASH) { +@@ -3385,7 +3390,7 @@ static const struct { + } mtd_int_args[] = { + ARG_IGNORE(chip_count), + ARG_IGNORE(chip_0_offset), +- ARG_IGNORE(chip_0_size), ++ ARG(chip_0_size), + ARG_IGNORE(chip_1_offset), + ARG_IGNORE(chip_1_size), + ARG(search_exponent), +@@ -3578,7 +3583,7 @@ void mtd_cfg_dump(struct mtd_config *cfg + // Pd(chip_count); + Ps(chip_0_device_path); + // Pd(chip_0_offset); +-// Pd(chip_0_size); ++ Pd(chip_0_size); + Ps(chip_1_device_path); + // Pd(chip_1_offset); + // Pd(chip_1_size); diff --git a/package/boot/kobs-ng/patches/003-raw-mode.patch b/package/boot/kobs-ng/patches/003-raw-mode.patch new file mode 100644 index 0000000000..5a3be5f058 --- /dev/null +++ b/package/boot/kobs-ng/patches/003-raw-mode.patch @@ -0,0 +1,45 @@ +The downstream Freescale vendor kernel has a patch that allows determining +if raw NAND flash mode is provided via a debugfs file. This is not present +in upstream kernels, but the raw access support was added in the 3.19 +kernel, so we will check the kernel version if we can't find the file. +--- a/src/mtd.c ++++ b/src/mtd.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + + #include "mtd.h" + #include "rand.h" +@@ -808,15 +809,27 @@ struct mtd_data *mtd_open(const struct m + md->cfg = *cfg; + + /* check if use new raw access mode */ ++ /* by looking for debugfs from fsl patch */ ++ md->raw_mode_flag = 0; + fp = fopen("/sys/kernel/debug/gpmi-nand/raw_mode", "r"); + if (!fp) { +- md->raw_mode_flag = 0; +- vp(md, "mtd: use legacy raw access mode\n"); ++ /* fallback to kernel version: raw access added in 3.19 */ ++ struct utsname uts; ++ if (!uname(&uts)) { ++ int major = 0, minor = 0; ++ sscanf(uts.release, "%d.%d", &major, &minor); ++ vp(md, "mtd: Linux %d.%d\n", major, minor); ++ if ((major << 8 | minor) > (3 << 8 | 18)) ++ md->raw_mode_flag = 1; ++ } + } else { + fclose(fp); + md->raw_mode_flag = 1; +- vp(md, "mtd: use new bch layout raw access mode\n"); + } ++ if (md->raw_mode_flag) ++ vp(md, "mtd: use new bch layout raw access mode\n"); ++ else ++ vp(md, "mtd: use legacy raw access mode\n"); + + if (plat_config_data->m_u32UseMultiBootArea) { + diff --git a/package/boot/kobs-ng/patches/004-fix-cal_nfc_geometry.patch b/package/boot/kobs-ng/patches/004-fix-cal_nfc_geometry.patch new file mode 100644 index 0000000000..ebfd62345c --- /dev/null +++ b/package/boot/kobs-ng/patches/004-fix-cal_nfc_geometry.patch @@ -0,0 +1,27 @@ +The Freescale downstream vendor kernel has a patch that exports the bch +flash geometry via a debugfs file. This is not available in mainline linux +kernels so the fallback method calculates the geometry based on known info +from the mtd partition. A bug exists in this funcion where it fails to +assume that block0 ECC is the same as the other blocks by default. +--- a/src/mtd.c ++++ b/src/mtd.c +@@ -610,7 +610,7 @@ static int cal_nfc_geometry(struct mtd_d + /* The two are fixed, please change them when the driver changes. */ + geo->metadata_size_in_bytes = 10; + geo->gf_len = 13; +- geo->ecc_chunkn_size_in_bytes = 512; ++ geo->ecc_chunkn_size_in_bytes = geo->ecc_chunk0_size_in_bytes = 512; + + if (mtd->oobsize > geo->ecc_chunkn_size_in_bytes) { + geo->gf_len = 14; +@@ -700,8 +700,9 @@ int parse_nfc_geometry(struct mtd_data * + unsigned int value; + + if (!plat_config_data->m_u32UseNfcGeo) { ++ /* fsl kernel patch provides bch_geometry via debugfs */ + if (!(node = fopen(dbg_geometry_node_path, "r"))) { +- fprintf(stderr, "Cannot open BCH geometry node: \"%s\"", ++ fprintf(stderr, "Cannot open BCH geometry node: \"%s\"\n", + dbg_geometry_node_path); + return cal_nfc_geometry(md); + } diff --git a/package/boot/uboot-ar71xx/Makefile b/package/boot/uboot-ar71xx/Makefile deleted file mode 100644 index a9f19e18f4..0000000000 --- a/package/boot/uboot-ar71xx/Makefile +++ /dev/null @@ -1,96 +0,0 @@ -# -# Copyright (C) 2010 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/kernel.mk - -PKG_NAME:=u-boot -PKG_VERSION:=2010.03-libre -PKG_RELEASE:=1 - -PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_HASH:=7bd134647ea27cc1fa08da66790e743d877a82751cf102584d241a2542f8232c -PKG_SOURCE_URL:= \ - https://librecmc.org/librecmc/downloads/sources/v1.4 \ - - -PKG_TARGETS:=bin - -PKG_LICENSE:=GPL-2.0 GPL-2.0+ -PKG_LICENSE_FILES:=Licenses/README - -include $(INCLUDE_DIR)/package.mk - -define uboot/Default - TITLE:= - CONFIG:= - IMAGE:= -endef - -define uboot/nbg460n_550n_550nh - TITLE:=U-boot for the NBG460N/550N/550NH routers - DEFAULT:=y if (TARGET_ar71xx_generic_DEVICE_NBG_460N_550N_550NH || TARGET_DEVICE_ar71xx_generic_DEVICE_NBG_460N_550N_550NH || TARGET_ar71xx_generic_Default) -endef - -UBOOTS:=nbg460n_550n_550nh - -define Package/uboot/template -define Package/uboot-ar71xx-$(1) - SECTION:=boot - CATEGORY:=Boot Loaders - TITLE:=$(2) - DEPENDS:=@TARGET_ar71xx_generic - URL:=http://www.denx.de/wiki/U-Boot - VARIANT:=$(1) -endef -endef - -define BuildUbootPackage - $(eval $(uboot/Default)) - $(eval $(uboot/$(1))) - $(call Package/uboot/template,$(1),$(TITLE)) -endef - - -ifdef BUILD_VARIANT -$(eval $(call uboot/$(BUILD_VARIANT))) -UBOOT_CONFIG:=$(if $(CONFIG),$(CONFIG),$(BUILD_VARIANT)) -UBOOT_IMAGE:=$(if $(IMAGE),$(IMAGE),openwrt-$(BOARD)-$(BUILD_VARIANT)-u-boot.bin) -endif - -define Build/Prepare - $(call Build/Prepare/Default) - $(CP) ./files/* $(PKG_BUILD_DIR) - find $(PKG_BUILD_DIR) -name .svn | $(XARGS) rm -rf -endef - -define Build/Configure - $(MAKE) -C $(PKG_BUILD_DIR) \ - $(UBOOT_CONFIG)_config -endef - -define Build/Compile - $(MAKE) -C $(PKG_BUILD_DIR) \ - CROSS_COMPILE=$(TARGET_CROSS) -endef - -define Package/uboot/install/template -define Package/uboot-ar71xx-$(1)/install - $(INSTALL_DIR) $$(1) - $(CP) $(PKG_BUILD_DIR)/u-boot.bin $(BIN_DIR)/$(2) -endef -endef - -$(foreach u,$(UBOOTS), \ - $(eval $(call Package/uboot/install/template,$(u),openwrt-$(BOARD)-$(SUBTARGET)-$(u)-u-boot.bin)) \ -) - -$(foreach u,$(UBOOTS), \ - $(eval $(call BuildUbootPackage,$(u))) \ - $(eval $(call BuildPackage,uboot-ar71xx-$(u))) \ -) diff --git a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/Makefile b/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/Makefile deleted file mode 100644 index b0a385babf..0000000000 --- a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# -# (C) Copyright 2003-2008 -# Wolfgang Denk, DENX Software Engineering, wd@denx.de. -# -# See file CREDITS for list of people who contributed to this -# project. -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, -# MA 02111-1307 USA -# - -include $(TOPDIR)/config.mk - -LIB = $(obj)lib$(BOARD).a - -COBJS-y += $(BOARD).o -SOBJS-y += lowlevel_init.o - -SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS-y)) -SOBJS := $(addprefix $(obj),$(SOBJS-y)) - -$(LIB): $(obj).depend $(OBJS) $(SOBJS) - $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS) - - -######################################################################### - -# defines $(obj).depend target -include $(SRCTREE)/rules.mk - -sinclude $(obj).depend - -######################################################################### diff --git a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/config.mk b/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/config.mk deleted file mode 100644 index e042e78bf8..0000000000 --- a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/config.mk +++ /dev/null @@ -1 +0,0 @@ -TEXT_BASE = 0x81E00000 diff --git a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/lowlevel_init.S b/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/lowlevel_init.S deleted file mode 100644 index 83084c8d48..0000000000 --- a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/lowlevel_init.S +++ /dev/null @@ -1,39 +0,0 @@ -/* - * (C) Copyright 2010 - * Michael Kurz . - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include -#include -#include -#include -#include - - - -.globl lowlevel_init -/* - All done by Bootbase, nothing to do -*/ -lowlevel_init: - jr ra - nop - diff --git a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/nbg460n.c b/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/nbg460n.c deleted file mode 100644 index 03a479d522..0000000000 --- a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/nbg460n.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * (C) Copyright 2010 - * Michael Kurz . - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include -#include -#include -#include -#include -#include -#include - -#define NBG460N_WAN_LED 19 - -phys_size_t initdram(int board_type) -{ - return (32*1024*1024); -} - -int checkboard(void) -{ - // Set pin 19 to 1, to stop WAN LED blinking - ar71xx_setpindir(NBG460N_WAN_LED, 1); - ar71xx_setpin(NBG460N_WAN_LED, 1); - - printf("U-boot on Zyxel NBG460N\n"); - return 0; -} - -void _machine_restart(void) -{ - for (;;) { - writel((RESET_MODULE_FULL_CHIP | RESET_MODULE_DDR), - KSEG1ADDR(AR71XX_RESET_BASE + AR91XX_RESET_REG_RESET_MODULE)); - readl(KSEG1ADDR(AR71XX_RESET_BASE + AR91XX_RESET_REG_RESET_MODULE)); - } -} - -int board_eth_init(bd_t *bis) -{ - char *phynames[] = {RTL8366_DEVNAME, RTL8366_DEVNAME}; - u16 phyids[] = {RTL8366_LANPHY_ID, RTL8366_WANPHY_ID}; - u16 phyfixed[] = {1, 0}; - - if (ag71xx_register(bis, phynames, phyids, phyfixed) <= 0) - return -1; - - if (rtl8366s_initialize()) - return -1; - - if (rtl8366_mii_register(bis)) - return -1; - - return 0; -} - -int misc_init_r(void) { - uint8_t macaddr[6]; - uint8_t enetaddr[6]; - - debug("Testing mac addresses\n"); - - memcpy(macaddr, (uint8_t *) CONFIG_ETHADDR_ADDR, 6); - - if (!eth_getenv_enetaddr("ethaddr", enetaddr)) { - debug("Setting eth0 mac addr to %pM\n", macaddr); - eth_setenv_enetaddr("ethaddr", macaddr); - } - - if (!eth_getenv_enetaddr("eth1addr", enetaddr)) { - macaddr[5] += 1; - debug("Setting eth1 mac addr to %pM\n", macaddr); - eth_setenv_enetaddr("eth1addr", macaddr); - } - - return 0; -} diff --git a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/u-boot.lds b/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/u-boot.lds deleted file mode 100644 index 8dc2b764c7..0000000000 --- a/package/boot/uboot-ar71xx/files/board/zyxel/nbg460n/u-boot.lds +++ /dev/null @@ -1,42 +0,0 @@ -OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips") -OUTPUT_ARCH(mips) -ENTRY(_start) -SECTIONS -{ - . = 0x00000000; - - . = ALIGN(4); - .text : - { - *(.text) - } - - . = ALIGN(4); - .rodata : { *(.rodata) } - - . = ALIGN(4); - .data : { *(.data) } - - . = ALIGN(4); - .sdata : { *(.sdata) } - - _gp = ALIGN(16); - - __got_start = .; - .got : { *(.got) } - __got_end = .; - - .sdata : { *(.sdata) } - - __u_boot_cmd_start = .; - .u_boot_cmd : { *(.u_boot_cmd) } - __u_boot_cmd_end = .; - - uboot_end_data = .; - num_got_entries = (__got_end - __got_start) >> 2; - - . = ALIGN(4); - .sbss : { *(.sbss) } - .bss : { *(.bss) } - uboot_end = .; -} diff --git a/package/boot/uboot-ar71xx/files/cpu/mips/ar71xx_serial.c b/package/boot/uboot-ar71xx/files/cpu/mips/ar71xx_serial.c deleted file mode 100644 index f093318952..0000000000 --- a/package/boot/uboot-ar71xx/files/cpu/mips/ar71xx_serial.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * (C) Copyright 2010 - * Michael Kurz . - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include -#include -#include -#include - -#define REG_SIZE 4 - -/* === END OF CONFIG === */ - -/* register offset */ -#define OFS_RCV_BUFFER (0*REG_SIZE) -#define OFS_TRANS_HOLD (0*REG_SIZE) -#define OFS_SEND_BUFFER (0*REG_SIZE) -#define OFS_INTR_ENABLE (1*REG_SIZE) -#define OFS_INTR_ID (2*REG_SIZE) -#define OFS_DATA_FORMAT (3*REG_SIZE) -#define OFS_LINE_CONTROL (3*REG_SIZE) -#define OFS_MODEM_CONTROL (4*REG_SIZE) -#define OFS_RS232_OUTPUT (4*REG_SIZE) -#define OFS_LINE_STATUS (5*REG_SIZE) -#define OFS_MODEM_STATUS (6*REG_SIZE) -#define OFS_RS232_INPUT (6*REG_SIZE) -#define OFS_SCRATCH_PAD (7*REG_SIZE) - -#define OFS_DIVISOR_LSB (0*REG_SIZE) -#define OFS_DIVISOR_MSB (1*REG_SIZE) - -#define UART16550_READ(y) readl(KSEG1ADDR(AR71XX_UART_BASE+y)) -#define UART16550_WRITE(x, z) writel(z, KSEG1ADDR((AR71XX_UART_BASE+x))) - -void -ar71xx_sys_frequency(u32 *cpu_freq, u32 *ddr_freq, u32 *ahb_freq) -{ -#ifndef CONFIG_AR91XX - u32 pll, pll_div, cpu_div, ahb_div, ddr_div, freq; - - pll = readl(KSEG1ADDR(AR71XX_PLL_REG_CPU_CONFIG + AR71XX_PLL_BASE)); - - pll_div = - ((pll & AR71XX_PLL_DIV_MASK) >> AR71XX_PLL_DIV_SHIFT) + 1; - - cpu_div = - ((pll & AR71XX_CPU_DIV_MASK) >> AR71XX_CPU_DIV_SHIFT) + 1; - - ddr_div = - ((pll & AR71XX_DDR_DIV_MASK) >> AR71XX_DDR_DIV_SHIFT) + 1; - - ahb_div = - (((pll & AR71XX_AHB_DIV_MASK) >> AR71XX_AHB_DIV_SHIFT) + 1)*2; - - freq = pll_div * 40000000; - - if (cpu_freq) - *cpu_freq = freq/cpu_div; - - if (ddr_freq) - *ddr_freq = freq/ddr_div; - - if (ahb_freq) - *ahb_freq = (freq/cpu_div)/ahb_div; - -#else - u32 pll, pll_div, ahb_div, ddr_div, freq; - - pll = readl(KSEG1ADDR(AR91XX_PLL_REG_CPU_CONFIG + AR71XX_PLL_BASE)); - - pll_div = - ((pll & AR91XX_PLL_DIV_MASK) >> AR91XX_PLL_DIV_SHIFT); - - ddr_div = - ((pll & AR91XX_DDR_DIV_MASK) >> AR91XX_DDR_DIV_SHIFT) + 1; - - ahb_div = - (((pll & AR91XX_AHB_DIV_MASK) >> AR91XX_AHB_DIV_SHIFT) + 1)*2; - - freq = pll_div * 5000000; - - if (cpu_freq) - *cpu_freq = freq; - - if (ddr_freq) - *ddr_freq = freq/ddr_div; - - if (ahb_freq) - *ahb_freq = freq/ahb_div; -#endif -} - - -int serial_init(void) -{ - u32 div; - u32 ahb_freq = 100000000; - - ar71xx_sys_frequency (0, 0, &ahb_freq); - div = ahb_freq/(16 * CONFIG_BAUDRATE); - - // enable uart pins -#ifndef CONFIG_AR91XX - writel(AR71XX_GPIO_FUNC_UART_EN, KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_FUNC)); -#else - writel(AR91XX_GPIO_FUNC_UART_EN, KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_FUNC)); -#endif - - /* set DIAB bit */ - UART16550_WRITE(OFS_LINE_CONTROL, 0x80); - - /* set divisor */ - UART16550_WRITE(OFS_DIVISOR_LSB, (div & 0xff)); - UART16550_WRITE(OFS_DIVISOR_MSB, ((div >> 8) & 0xff)); - - /* clear DIAB bit*/ - UART16550_WRITE(OFS_LINE_CONTROL, 0x00); - - /* set data format */ - UART16550_WRITE(OFS_DATA_FORMAT, 0x3); - - UART16550_WRITE(OFS_INTR_ENABLE, 0); - - return 0; -} - -int serial_tstc (void) -{ - return(UART16550_READ(OFS_LINE_STATUS) & 0x1); -} - -int serial_getc(void) -{ - while(!serial_tstc()); - - return UART16550_READ(OFS_RCV_BUFFER); -} - - -void serial_putc(const char byte) -{ - if (byte == '\n') serial_putc ('\r'); - - while (((UART16550_READ(OFS_LINE_STATUS)) & 0x20) == 0x0); - UART16550_WRITE(OFS_SEND_BUFFER, byte); -} - -void serial_setbrg (void) -{ -} - -void serial_puts (const char *s) -{ - while (*s) - { - serial_putc (*s++); - } -} diff --git a/package/boot/uboot-ar71xx/files/drivers/net/ag71xx.c b/package/boot/uboot-ar71xx/files/drivers/net/ag71xx.c deleted file mode 100644 index b3324c0197..0000000000 --- a/package/boot/uboot-ar71xx/files/drivers/net/ag71xx.c +++ /dev/null @@ -1,809 +0,0 @@ -/* - * Atheros AR71xx built-in ethernet mac driver - * - * Copyright (C) 2010 Michael Kurz - * Copyright (C) 2008-2010 Gabor Juhos - * Copyright (C) 2008 Imre Kaloz - * - * Based on Atheros' AG7100 driver - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published - * by the Free Software Foundation. - */ - -#include -#include -#include -#include - -#include - -#include "ag71xx.h" - -#ifdef AG71XX_DEBUG -#define DBG(fmt,args...) printf(fmt ,##args) -#else -#define DBG(fmt,args...) -#endif - - -static struct ag71xx agtable[] = { - { - .mac_base = KSEG1ADDR(AR71XX_GE0_BASE), - .mii_ctrl = KSEG1ADDR(AR71XX_MII_BASE + MII_REG_MII0_CTRL), - .mii_if = CONFIG_AG71XX_MII0_IIF, - } , { - .mac_base = KSEG1ADDR(AR71XX_GE1_BASE), - .mii_ctrl = KSEG1ADDR(AR71XX_MII_BASE + MII_REG_MII1_CTRL), - .mii_if = CONFIG_AG71XX_MII1_IIF, - } -}; - -static int ag71xx_ring_alloc(struct ag71xx_ring *ring, unsigned int size) -{ - int err; - int i; - int rsize; - - ring->desc_size = sizeof(struct ag71xx_desc); - if (ring->desc_size % (CONFIG_SYS_CACHELINE_SIZE)) { - rsize = roundup(ring->desc_size, CONFIG_SYS_CACHELINE_SIZE); - DBG("ag71xx: ring %p, desc size %u rounded to %u\n", - ring, ring->desc_size, - rsize); - ring->desc_size = rsize; - } - - ring->descs_cpu = (u8 *) malloc((size * ring->desc_size) - + CONFIG_SYS_CACHELINE_SIZE - 1); - if (!ring->descs_cpu) { - err = -1; - goto err; - } - ring->descs_cpu = (u8 *) UNCACHED_SDRAM((((u32) ring->descs_cpu + - CONFIG_SYS_CACHELINE_SIZE - 1) & ~(CONFIG_SYS_CACHELINE_SIZE - 1))); - ring->descs_dma = (u8 *) virt_to_phys(ring->descs_cpu); - - ring->size = size; - - ring->buf = malloc(size * sizeof(*ring->buf)); - if (!ring->buf) { - err = -1; - goto err; - } - memset(ring->buf, 0, size * sizeof(*ring->buf)); - - for (i = 0; i < size; i++) { - ring->buf[i].desc = - (struct ag71xx_desc *)&ring->descs_cpu[i * ring->desc_size]; - DBG("ag71xx: ring %p, desc %d at %p\n", - ring, i, ring->buf[i].desc); - } - - flush_cache( (u32) ring->buf, size * sizeof(*ring->buf)); - - return 0; - - err: - return err; -} - -static void ag71xx_ring_tx_init(struct ag71xx *ag) -{ - struct ag71xx_ring *ring = &ag->tx_ring; - int i; - - for (i = 0; i < AG71XX_TX_RING_SIZE; i++) { - ring->buf[i].desc->next = (u32) virt_to_phys((ring->descs_dma + - ring->desc_size * ((i + 1) % AG71XX_TX_RING_SIZE))); - - ring->buf[i].desc->ctrl = DESC_EMPTY; - ring->buf[i].skb = NULL; - } - - ring->curr = 0; -} - -static void ag71xx_ring_rx_clean(struct ag71xx *ag) -{ - struct ag71xx_ring *ring = &ag->rx_ring; - int i; - - if (!ring->buf) - return; - - for (i = 0; i < AG71XX_RX_RING_SIZE; i++) { - ring->buf[i].desc->data = (u32) virt_to_phys(NetRxPackets[i]); - flush_cache((u32) NetRxPackets[i], PKTSIZE_ALIGN); - ring->buf[i].desc->ctrl = DESC_EMPTY; - } - - ring->curr = 0; -} - -static int ag71xx_ring_rx_init(struct ag71xx *ag) -{ - struct ag71xx_ring *ring = &ag->rx_ring; - unsigned int i; - - for (i = 0; i < AG71XX_RX_RING_SIZE; i++) { - ring->buf[i].desc->next = (u32) virt_to_phys((ring->descs_dma + - ring->desc_size * ((i + 1) % AG71XX_RX_RING_SIZE))); - - DBG("ag71xx: RX desc at %p, next is %08x\n", - ring->buf[i].desc, - ring->buf[i].desc->next); - } - - for (i = 0; i < AG71XX_RX_RING_SIZE; i++) { - ring->buf[i].desc->data = (u32) virt_to_phys(NetRxPackets[i]); - ring->buf[i].desc->ctrl = DESC_EMPTY; - } - - ring->curr = 0; - - return 0; -} - -static int ag71xx_rings_init(struct ag71xx *ag) -{ - int ret; - - ret = ag71xx_ring_alloc(&ag->tx_ring, AG71XX_TX_RING_SIZE); - if (ret) - return ret; - - ag71xx_ring_tx_init(ag); - - ret = ag71xx_ring_alloc(&ag->rx_ring, AG71XX_RX_RING_SIZE); - if (ret) - return ret; - - ret = ag71xx_ring_rx_init(ag); - return ret; -} - -static void ar71xx_set_pll(u32 cfg_reg, u32 pll_reg, u32 pll_val, u32 shift) -{ - uint32_t base = KSEG1ADDR(AR71XX_PLL_BASE); - u32 t; - - t = readl(base + cfg_reg); - t &= ~(3 << shift); - t |= (2 << shift); - writel(t, base + cfg_reg); - udelay(100); - - writel(pll_val, base + pll_reg); - - t |= (3 << shift); - writel(t, base + cfg_reg); - udelay(100); - - t &= ~(3 << shift); - writel(t, base + cfg_reg); - udelay(100); - - debug("ar71xx: pll_reg %#x: %#x\n", (unsigned int)(base + pll_reg), - readl(base + pll_reg)); -} - -static void ar91xx_set_pll_ge0(int speed) -{ - //u32 val = ar71xx_get_eth_pll(0, speed); - u32 pll_val; - - switch (speed) { - case SPEED_10: - pll_val = 0x00441099; - break; - case SPEED_100: - pll_val = 0x13000a44; - break; - case SPEED_1000: - pll_val = 0x1a000000; - break; - default: - BUG(); - } - - ar71xx_set_pll(AR91XX_PLL_REG_ETH_CONFIG, AR91XX_PLL_REG_ETH0_INT_CLOCK, - pll_val, AR91XX_ETH0_PLL_SHIFT); -} - -static void ar91xx_set_pll_ge1(int speed) -{ - //u32 val = ar71xx_get_eth_pll(1, speed); - u32 pll_val; - - switch (speed) { - case SPEED_10: - pll_val = 0x00441099; - break; - case SPEED_100: - pll_val = 0x13000a44; - break; - case SPEED_1000: - pll_val = 0x1a000000; - break; - default: - BUG(); - } - - ar71xx_set_pll(AR91XX_PLL_REG_ETH_CONFIG, AR91XX_PLL_REG_ETH1_INT_CLOCK, - pll_val, AR91XX_ETH1_PLL_SHIFT); -} - -static void ag71xx_hw_set_macaddr(struct ag71xx *ag, unsigned char *mac) -{ - u32 t; - - t = (((u32) mac[5]) << 24) | (((u32) mac[4]) << 16) - | (((u32) mac[3]) << 8) | ((u32) mac[2]); - - ag71xx_wr(ag, AG71XX_REG_MAC_ADDR1, t); - - t = (((u32) mac[1]) << 24) | (((u32) mac[0]) << 16); - ag71xx_wr(ag, AG71XX_REG_MAC_ADDR2, t); -} - -static void ag71xx_dma_reset(struct ag71xx *ag) -{ - u32 val; - int i; - - DBG("%s: txdesc reg: 0x%08x rxdesc reg: 0x%08x\n", - ag->dev->name, - ag71xx_rr(ag, AG71XX_REG_TX_DESC), - ag71xx_rr(ag, AG71XX_REG_RX_DESC)); - - /* stop RX and TX */ - ag71xx_wr(ag, AG71XX_REG_RX_CTRL, 0); - ag71xx_wr(ag, AG71XX_REG_TX_CTRL, 0); - - /* clear descriptor addresses */ - ag71xx_wr(ag, AG71XX_REG_TX_DESC, 0); - ag71xx_wr(ag, AG71XX_REG_RX_DESC, 0); - - /* clear pending RX/TX interrupts */ - for (i = 0; i < 256; i++) { - ag71xx_wr(ag, AG71XX_REG_RX_STATUS, RX_STATUS_PR); - ag71xx_wr(ag, AG71XX_REG_TX_STATUS, TX_STATUS_PS); - } - - /* clear pending errors */ - ag71xx_wr(ag, AG71XX_REG_RX_STATUS, RX_STATUS_BE | RX_STATUS_OF); - ag71xx_wr(ag, AG71XX_REG_TX_STATUS, TX_STATUS_BE | TX_STATUS_UR); - - val = ag71xx_rr(ag, AG71XX_REG_RX_STATUS); - if (val) - printf("%s: unable to clear DMA Rx status: %08x\n", - ag->dev->name, val); - - val = ag71xx_rr(ag, AG71XX_REG_TX_STATUS); - - /* mask out reserved bits */ - val &= ~0xff000000; - - if (val) - printf("%s: unable to clear DMA Tx status: %08x\n", - ag->dev->name, val); -} - -static void ag71xx_halt(struct eth_device *dev) -{ - struct ag71xx *ag = (struct ag71xx *) dev->priv; - - /* stop RX engine */ - ag71xx_wr(ag, AG71XX_REG_RX_CTRL, 0); - - ag71xx_dma_reset(ag); -} - -#define MAX_WAIT 1000 - -static int ag71xx_send(struct eth_device *dev, volatile void *packet, - int length) -{ - struct ag71xx *ag = (struct ag71xx *) dev->priv; - struct ag71xx_ring *ring = &ag->tx_ring; - struct ag71xx_desc *desc; - int i; - - i = ring->curr % AG71XX_TX_RING_SIZE; - desc = ring->buf[i].desc; - - if (!ag71xx_desc_empty(desc)) { - printf("%s: tx buffer full\n", ag->dev->name); - return 1; - } - - flush_cache((u32) packet, length); - desc->data = (u32) virt_to_phys(packet); - desc->ctrl = (length & DESC_PKTLEN_M); - - DBG("%s: sending %#08x length %#08x\n", - ag->dev->name, desc->data, desc->ctrl); - - ring->curr++; - if (ring->curr >= AG71XX_TX_RING_SIZE){ - ring->curr = 0; - } - - /* enable TX engine */ - ag71xx_wr(ag, AG71XX_REG_TX_CTRL, TX_CTRL_TXE); - - for (i = 0; i < MAX_WAIT; i++) - { - if (ag71xx_desc_empty(desc)) - break; - udelay(10); - } - if (i == MAX_WAIT) { - printf("%s: tx timed out!\n", ag->dev->name); - return -1; - } - - /* disable TX engine */ - ag71xx_wr(ag, AG71XX_REG_TX_CTRL, 0); - desc->data = 0; - desc->ctrl = DESC_EMPTY; - - return 0; -} - -static int ag71xx_recv(struct eth_device *dev) -{ - struct ag71xx *ag = (struct ag71xx *) dev->priv; - struct ag71xx_ring *ring = &ag->rx_ring; - - for (;;) { - unsigned int i = ring->curr % AG71XX_RX_RING_SIZE; - struct ag71xx_desc *desc = ring->buf[i].desc; - int pktlen; - - if (ag71xx_desc_empty(desc)) - break; - - DBG("%s: rx packets, curr=%u\n", dev->name, ring->curr); - - pktlen = ag71xx_desc_pktlen(desc); - pktlen -= ETH_FCS_LEN; - - - NetReceive(NetRxPackets[i] , pktlen); - flush_cache( (u32) NetRxPackets[i], PKTSIZE_ALIGN); - - ring->buf[i].desc->ctrl = DESC_EMPTY; - ring->curr++; - if (ring->curr >= AG71XX_RX_RING_SIZE){ - ring->curr = 0; - } - - } - - if ((ag71xx_rr(ag, AG71XX_REG_RX_CTRL) & RX_CTRL_RXE) == 0) { - /* start RX engine */ - ag71xx_wr(ag, AG71XX_REG_RX_CTRL, RX_CTRL_RXE); - } - - return 0; -} - -#ifdef AG71XX_DEBUG -static char *ag71xx_speed_str(struct ag71xx *ag) -{ - switch (ag->speed) { - case SPEED_1000: - return "1000"; - case SPEED_100: - return "100"; - case SPEED_10: - return "10"; - } - - return "?"; -} -#endif - -void ag71xx_link_adjust(struct ag71xx *ag) -{ - u32 cfg2; - u32 ifctl; - u32 fifo5; - u32 mii_speed; - - if (!ag->link) { - DBG("%s: link down\n", ag->dev->name); - return; - } - - cfg2 = ag71xx_rr(ag, AG71XX_REG_MAC_CFG2); - cfg2 &= ~(MAC_CFG2_IF_1000 | MAC_CFG2_IF_10_100 | MAC_CFG2_FDX); - cfg2 |= (ag->duplex) ? MAC_CFG2_FDX : 0; - - ifctl = ag71xx_rr(ag, AG71XX_REG_MAC_IFCTL); - ifctl &= ~(MAC_IFCTL_SPEED); - - fifo5 = ag71xx_rr(ag, AG71XX_REG_FIFO_CFG5); - fifo5 &= ~FIFO_CFG5_BM; - - switch (ag->speed) { - case SPEED_1000: - mii_speed = MII_CTRL_SPEED_1000; - cfg2 |= MAC_CFG2_IF_1000; - fifo5 |= FIFO_CFG5_BM; - break; - case SPEED_100: - mii_speed = MII_CTRL_SPEED_100; - cfg2 |= MAC_CFG2_IF_10_100; - ifctl |= MAC_IFCTL_SPEED; - break; - case SPEED_10: - mii_speed = MII_CTRL_SPEED_10; - cfg2 |= MAC_CFG2_IF_10_100; - break; - default: - BUG(); - return; - } - - ag71xx_wr(ag, AG71XX_REG_FIFO_CFG3, 0x00780fff); - - if (ag->macNum == 0) - ar91xx_set_pll_ge0(ag->speed); - else - ar91xx_set_pll_ge1(ag->speed); - - ag71xx_mii_ctrl_set_speed(ag, mii_speed); - - ag71xx_wr(ag, AG71XX_REG_MAC_CFG2, cfg2); - ag71xx_wr(ag, AG71XX_REG_FIFO_CFG5, fifo5); - ag71xx_wr(ag, AG71XX_REG_MAC_IFCTL, ifctl); - - DBG("%s: link up (%sMbps/%s duplex)\n", - ag->dev->name, - ag71xx_speed_str(ag), - (1 == ag->duplex) ? "Full" : "Half"); - - DBG("%s: fifo_cfg0=%#x, fifo_cfg1=%#x, fifo_cfg2=%#x\n", - ag->dev->name, - ag71xx_rr(ag, AG71XX_REG_FIFO_CFG0), - ag71xx_rr(ag, AG71XX_REG_FIFO_CFG1), - ag71xx_rr(ag, AG71XX_REG_FIFO_CFG2)); - - DBG("%s: fifo_cfg3=%#x, fifo_cfg4=%#x, fifo_cfg5=%#x\n", - ag->dev->name, - ag71xx_rr(ag, AG71XX_REG_FIFO_CFG3), - ag71xx_rr(ag, AG71XX_REG_FIFO_CFG4), - ag71xx_rr(ag, AG71XX_REG_FIFO_CFG5)); - - DBG("%s: mac_cfg2=%#x, mac_ifctl=%#x, mii_ctrl=%#x\n", - ag->dev->name, - ag71xx_rr(ag, AG71XX_REG_MAC_CFG2), - ag71xx_rr(ag, AG71XX_REG_MAC_IFCTL), - ag71xx_mii_ctrl_rr(ag)); -} - -#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) -static int ag71xx_getMiiSpeed(struct ag71xx *ag) -{ - uint16_t phyreg, cap; - - if (miiphy_read(ag->phyname, ag->phyid, - PHY_BMSR, &phyreg)) { - puts("PHY_BMSR read failed, assuming no link\n"); - return -1; - } - - if ((phyreg & PHY_BMSR_LS) == 0) { - return -1; - } - - if (miiphy_read(ag->phyname, ag->phyid, - PHY_1000BTSR, &phyreg)) - return -1; - - if (phyreg & PHY_1000BTSR_1000FD) { - ag->speed = SPEED_1000; - ag->duplex = 1; - } else if (phyreg & PHY_1000BTSR_1000HD) { - ag->speed = SPEED_1000; - ag->duplex = 0; - } else { - if (miiphy_read(ag->phyname, ag->phyid, - PHY_ANAR, &cap)) - return -1; - - if (miiphy_read(ag->phyname, ag->phyid, - PHY_ANLPAR, &phyreg)) - return -1; - - cap &= phyreg; - if (cap & PHY_ANLPAR_TXFD) { - ag->speed = SPEED_100; - ag->duplex = 1; - } else if (cap & PHY_ANLPAR_TX) { - ag->speed = SPEED_100; - ag->duplex = 0; - } else if (cap & PHY_ANLPAR_10FD) { - ag->speed = SPEED_10; - ag->duplex = 1; - } else { - ag->speed = SPEED_10; - ag->duplex = 0; - } - } - - ag->link = 1; - - return 0; -} -#endif - -static int ag71xx_hw_start(struct eth_device *dev, bd_t * bd) -{ - struct ag71xx *ag = (struct ag71xx *) dev->priv; - - ag71xx_dma_reset(ag); - - ag71xx_ring_rx_clean(ag); - ag71xx_ring_tx_init(ag); - - ag71xx_wr(ag, AG71XX_REG_TX_DESC, - (u32) virt_to_phys(ag->tx_ring.descs_dma)); - ag71xx_wr(ag, AG71XX_REG_RX_DESC, - (u32) virt_to_phys(ag->rx_ring.descs_dma)); - - ag71xx_hw_set_macaddr(ag, ag->dev->enetaddr); - - if (ag->phyfixed) { - ag->link = 1; - ag->duplex = 1; - ag->speed = SPEED_1000; - } else { - -#if (defined(CONFIG_MII) || defined(CONFIG_CMD_MII)) - if (ag71xx_getMiiSpeed(ag)) - return -1; -#else - /* only fixed, without mii */ - return -1; -#endif - - } - ag71xx_link_adjust(ag); - - DBG("%s: txdesc reg: %#08x rxdesc reg: %#08x\n", - ag->dev->name, - ag71xx_rr(ag, AG71XX_REG_TX_DESC), - ag71xx_rr(ag, AG71XX_REG_RX_DESC)); - - /* start RX engine */ - ag71xx_wr(ag, AG71XX_REG_RX_CTRL, RX_CTRL_RXE); - - return 0; -} - -#define FIFO_CFG0_INIT (FIFO_CFG0_ALL << FIFO_CFG0_ENABLE_SHIFT) - -#define FIFO_CFG4_INIT (FIFO_CFG4_DE | FIFO_CFG4_DV | FIFO_CFG4_FC | \ - FIFO_CFG4_CE | FIFO_CFG4_CR | FIFO_CFG4_LM | \ - FIFO_CFG4_LO | FIFO_CFG4_OK | FIFO_CFG4_MC | \ - FIFO_CFG4_BC | FIFO_CFG4_DR | FIFO_CFG4_LE | \ - FIFO_CFG4_CF | FIFO_CFG4_PF | FIFO_CFG4_UO | \ - FIFO_CFG4_VT) - -#define FIFO_CFG5_INIT (FIFO_CFG5_DE | FIFO_CFG5_DV | FIFO_CFG5_FC | \ - FIFO_CFG5_CE | FIFO_CFG5_LO | FIFO_CFG5_OK | \ - FIFO_CFG5_MC | FIFO_CFG5_BC | FIFO_CFG5_DR | \ - FIFO_CFG5_CF | FIFO_CFG5_PF | FIFO_CFG5_VT | \ - FIFO_CFG5_LE | FIFO_CFG5_FT | FIFO_CFG5_16 | \ - FIFO_CFG5_17 | FIFO_CFG5_SF) - -static int ag71xx_hw_init(struct ag71xx *ag) -{ - int ret = 0; - uint32_t reg; - uint32_t mask, mii_type; - - if (ag->macNum == 0) { - mask = (RESET_MODULE_GE0_MAC | RESET_MODULE_GE0_PHY); - mii_type = 0x13; - } else { - mask = (RESET_MODULE_GE1_MAC | RESET_MODULE_GE1_PHY); - mii_type = 0x11; - } - - // mac soft reset - ag71xx_sb(ag, AG71XX_REG_MAC_CFG1, MAC_CFG1_SR); - udelay(20); - - // device stop - reg = ar71xx_reset_rr(AR91XX_RESET_REG_RESET_MODULE); - ar71xx_reset_wr(AR91XX_RESET_REG_RESET_MODULE, reg | mask); - udelay(100 * 1000); - - // device start - reg = ar71xx_reset_rr(AR91XX_RESET_REG_RESET_MODULE); - ar71xx_reset_wr(AR91XX_RESET_REG_RESET_MODULE, reg & ~mask); - udelay(100 * 1000); - - /* setup MAC configuration registers */ - ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, (MAC_CFG1_RXE | MAC_CFG1_TXE)); - - ag71xx_sb(ag, AG71XX_REG_MAC_CFG2, - MAC_CFG2_PAD_CRC_EN | MAC_CFG2_LEN_CHECK); - - /* setup FIFO configuration register 0 */ - ag71xx_wr(ag, AG71XX_REG_FIFO_CFG0, FIFO_CFG0_INIT); - - /* setup MII interface type */ - ag71xx_mii_ctrl_set_if(ag, ag->mii_if); - - /* setup mdio clock divisor */ - ag71xx_wr(ag, AG71XX_REG_MII_CFG, MII_CFG_CLK_DIV_20); - - /* setup FIFO configuration registers */ - ag71xx_sb(ag, AG71XX_REG_FIFO_CFG4, FIFO_CFG4_INIT); - ag71xx_wr(ag, AG71XX_REG_FIFO_CFG1, 0x0fff0000); - ag71xx_wr(ag, AG71XX_REG_FIFO_CFG2, 0x00001fff); - ag71xx_wr(ag, AG71XX_REG_FIFO_CFG5, FIFO_CFG5_INIT); - - ag71xx_dma_reset(ag); - - ret = ag71xx_rings_init(ag); - if (ret) - return -1; - - ag71xx_wr(ag, AG71XX_REG_TX_DESC, - (u32) virt_to_phys(ag->tx_ring.descs_dma)); - ag71xx_wr(ag, AG71XX_REG_RX_DESC, - (u32) virt_to_phys(ag->rx_ring.descs_dma)); - - ag71xx_hw_set_macaddr(ag, ag->dev->enetaddr); - - return 0; -} - -#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) -#define AG71XX_MDIO_RETRY 1000 -#define AG71XX_MDIO_DELAY 5 - -static inline struct ag71xx *ag71xx_name2mac(char *devname) -{ - if (strcmp(devname, agtable[0].dev->name) == 0) - return &agtable[0]; - else if (strcmp(devname, agtable[1].dev->name) == 0) - return &agtable[1]; - else - return NULL; -} - -static inline void ag71xx_mdio_wr(struct ag71xx *ag, unsigned reg, - u32 value) -{ - uint32_t r; - - r = ag->mac_base + reg; - writel(value, r); - - /* flush write */ - (void) readl(r); -} - -static inline u32 ag71xx_mdio_rr(struct ag71xx *ag, unsigned reg) -{ - return readl(ag->mac_base + reg); -} - -static int ag71xx_mdio_read(char *devname, unsigned char addr, - unsigned char reg, unsigned short *val) -{ - struct ag71xx *ag = ag71xx_name2mac(devname); - uint16_t regData; - int i; - - ag71xx_mdio_wr(ag, AG71XX_REG_MII_CMD, MII_CMD_WRITE); - ag71xx_mdio_wr(ag, AG71XX_REG_MII_ADDR, - ((addr & 0xff) << MII_ADDR_SHIFT) | (reg & 0xff)); - ag71xx_mdio_wr(ag, AG71XX_REG_MII_CMD, MII_CMD_READ); - - i = AG71XX_MDIO_RETRY; - while (ag71xx_mdio_rr(ag, AG71XX_REG_MII_IND) & MII_IND_BUSY) { - if (i-- == 0) { - printf("%s: mii_read timed out\n", - ag->dev->name); - return -1; - } - udelay(AG71XX_MDIO_DELAY); - } - - regData = (uint16_t) ag71xx_mdio_rr(ag, AG71XX_REG_MII_STATUS) & 0xffff; - ag71xx_mdio_wr(ag, AG71XX_REG_MII_CMD, MII_CMD_WRITE); - - DBG("mii_read: addr=%04x, reg=%04x, value=%04x\n", addr, reg, regData); - - if (val) - *val = regData; - - return 0; -} - -static int ag71xx_mdio_write(char *devname, unsigned char addr, - unsigned char reg, unsigned short val) -{ - struct ag71xx *ag = ag71xx_name2mac(devname); - int i; - - if (ag == NULL) - return 1; - - DBG("mii_write: addr=%04x, reg=%04x, value=%04x\n", addr, reg, val); - - ag71xx_mdio_wr(ag, AG71XX_REG_MII_ADDR, - ((addr & 0xff) << MII_ADDR_SHIFT) | (reg & 0xff)); - ag71xx_mdio_wr(ag, AG71XX_REG_MII_CTRL, val); - - i = AG71XX_MDIO_RETRY; - while (ag71xx_mdio_rr(ag, AG71XX_REG_MII_IND) & MII_IND_BUSY) { - if (i-- == 0) { - printf("%s: mii_write timed out\n", - ag->dev->name); - break; - } - udelay(AG71XX_MDIO_DELAY); - } - - return 0; -} -#endif - -int ag71xx_register(bd_t * bis, char *phyname[], uint16_t phyid[], uint16_t phyfixed[]) -{ - int i, num = 0; - u8 used_ports[MAX_AG71XX_DEVS] = CONFIG_AG71XX_PORTS; - - for (i = 0; i < MAX_AG71XX_DEVS; i++) { - /*skip if port is configured not to use */ - if (used_ports[i] == 0) - continue; - - agtable[i].dev = malloc(sizeof(struct eth_device)); - if (agtable[i].dev == NULL) { - puts("malloc failed\n"); - return 0; - } - memset(agtable[i].dev, 0, sizeof(struct eth_device)); - sprintf(agtable[i].dev->name, "eth%d", i); - - agtable[i].dev->iobase = 0; - agtable[i].dev->init = ag71xx_hw_start; - agtable[i].dev->halt = ag71xx_halt; - agtable[i].dev->send = ag71xx_send; - agtable[i].dev->recv = ag71xx_recv; - agtable[i].dev->priv = (void *) (&agtable[i]); - agtable[i].macNum = i; - eth_register(agtable[i].dev); -#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) - - if ((phyname == NULL) || (phyid == NULL) || (phyfixed == NULL)) - return -1; - - agtable[i].phyname = strdup(phyname[i]); - agtable[i].phyid = phyid[i]; - agtable[i].phyfixed = phyfixed[i]; - - miiphy_register(agtable[i].dev->name, ag71xx_mdio_read, - ag71xx_mdio_write); -#endif - - if (ag71xx_hw_init(&agtable[i])) - continue; - - num++; - } - - return num; -} diff --git a/package/boot/uboot-ar71xx/files/drivers/net/ag71xx.h b/package/boot/uboot-ar71xx/files/drivers/net/ag71xx.h deleted file mode 100644 index edce429749..0000000000 --- a/package/boot/uboot-ar71xx/files/drivers/net/ag71xx.h +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Atheros AR71xx built-in ethernet mac driver - * - * Copyright (C) 2008-2010 Gabor Juhos - * Copyright (C) 2008 Imre Kaloz - * - * Based on Atheros' AG7100 driver - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published - * by the Free Software Foundation. - */ - -#ifndef __AG71XX_H -#define __AG71XX_H - -#include -#include - -#include - -// controller has 2 ports -#define MAX_AG71XX_DEVS 2 - -#define ETH_FCS_LEN 4 - -#define SPEED_10 10 -#define SPEED_100 100 -#define SPEED_1000 1000 - - -#define AG71XX_INT_ERR (AG71XX_INT_RX_BE | AG71XX_INT_TX_BE) -#define AG71XX_INT_TX (AG71XX_INT_TX_PS) -#define AG71XX_INT_RX (AG71XX_INT_RX_PR | AG71XX_INT_RX_OF) - -#define AG71XX_INT_POLL (AG71XX_INT_RX | AG71XX_INT_TX) -#define AG71XX_INT_INIT (AG71XX_INT_ERR | AG71XX_INT_POLL) - -#define AG71XX_TX_FIFO_LEN 2048 -#define AG71XX_TX_MTU_LEN 1536 -#define AG71XX_RX_PKT_RESERVE 64 -#define AG71XX_RX_PKT_SIZE \ - (AG71XX_RX_PKT_RESERVE + ETH_HLEN + ETH_FRAME_LEN + ETH_FCS_LEN) - -#ifndef CONFIG_SYS_RX_ETH_BUFFER -#define AG71XX_TX_RING_SIZE 4 -#define AG71XX_RX_RING_SIZE 4 -#else -#define AG71XX_TX_RING_SIZE CONFIG_SYS_RX_ETH_BUFFER -#define AG71XX_RX_RING_SIZE CONFIG_SYS_RX_ETH_BUFFER -#endif - -#define AG71XX_TX_THRES_STOP (AG71XX_TX_RING_SIZE - 4) -#define AG71XX_TX_THRES_WAKEUP \ - (AG71XX_TX_RING_SIZE - (AG71XX_TX_RING_SIZE / 4)) - - - - -struct ag71xx_desc { - u32 data; - u32 ctrl; -#define DESC_EMPTY BIT(31) -#define DESC_MORE BIT(24) -#define DESC_PKTLEN_M 0xfff - u32 next; - u32 pad; -} __attribute__((aligned(4))); - -struct ag71xx_buf { - struct sk_buff *skb; - struct ag71xx_desc *desc; - dma_addr_t dma_addr; - u32 pad; -}; - -struct ag71xx_ring { - struct ag71xx_buf *buf; - u8 *descs_cpu; - u8 *descs_dma; - unsigned int desc_size; - unsigned int curr; - unsigned int size; -}; - -struct ag71xx { - uint32_t mac_base; - uint32_t mii_ctrl; - - struct eth_device *dev; - - struct ag71xx_ring rx_ring; - struct ag71xx_ring tx_ring; - - char *phyname; - u16 phyid; - u16 phyfixed; - uint32_t link; - uint32_t speed; - int32_t duplex; - uint32_t macNum; - uint32_t mii_if; -}; - -void ag71xx_link_adjust(struct ag71xx *ag); - -int ag71xx_phy_connect(struct ag71xx *ag); -void ag71xx_phy_disconnect(struct ag71xx *ag); -void ag71xx_phy_start(struct ag71xx *ag); -void ag71xx_phy_stop(struct ag71xx *ag); - -static inline int ag71xx_desc_empty(struct ag71xx_desc *desc) -{ - return ((desc->ctrl & DESC_EMPTY) != 0); -} - -static inline int ag71xx_desc_pktlen(struct ag71xx_desc *desc) -{ - return (desc->ctrl & DESC_PKTLEN_M); -} - -/* Register offsets */ -#define AG71XX_REG_MAC_CFG1 0x0000 -#define AG71XX_REG_MAC_CFG2 0x0004 -#define AG71XX_REG_MAC_IPG 0x0008 -#define AG71XX_REG_MAC_HDX 0x000c -#define AG71XX_REG_MAC_MFL 0x0010 -#define AG71XX_REG_MII_CFG 0x0020 -#define AG71XX_REG_MII_CMD 0x0024 -#define AG71XX_REG_MII_ADDR 0x0028 -#define AG71XX_REG_MII_CTRL 0x002c -#define AG71XX_REG_MII_STATUS 0x0030 -#define AG71XX_REG_MII_IND 0x0034 -#define AG71XX_REG_MAC_IFCTL 0x0038 -#define AG71XX_REG_MAC_ADDR1 0x0040 -#define AG71XX_REG_MAC_ADDR2 0x0044 -#define AG71XX_REG_FIFO_CFG0 0x0048 -#define AG71XX_REG_FIFO_CFG1 0x004c -#define AG71XX_REG_FIFO_CFG2 0x0050 -#define AG71XX_REG_FIFO_CFG3 0x0054 -#define AG71XX_REG_FIFO_CFG4 0x0058 -#define AG71XX_REG_FIFO_CFG5 0x005c -#define AG71XX_REG_FIFO_RAM0 0x0060 -#define AG71XX_REG_FIFO_RAM1 0x0064 -#define AG71XX_REG_FIFO_RAM2 0x0068 -#define AG71XX_REG_FIFO_RAM3 0x006c -#define AG71XX_REG_FIFO_RAM4 0x0070 -#define AG71XX_REG_FIFO_RAM5 0x0074 -#define AG71XX_REG_FIFO_RAM6 0x0078 -#define AG71XX_REG_FIFO_RAM7 0x007c - -#define AG71XX_REG_TX_CTRL 0x0180 -#define AG71XX_REG_TX_DESC 0x0184 -#define AG71XX_REG_TX_STATUS 0x0188 -#define AG71XX_REG_RX_CTRL 0x018c -#define AG71XX_REG_RX_DESC 0x0190 -#define AG71XX_REG_RX_STATUS 0x0194 -#define AG71XX_REG_INT_ENABLE 0x0198 -#define AG71XX_REG_INT_STATUS 0x019c - -#define MAC_CFG1_TXE BIT(0) /* Tx Enable */ -#define MAC_CFG1_STX BIT(1) /* Synchronize Tx Enable */ -#define MAC_CFG1_RXE BIT(2) /* Rx Enable */ -#define MAC_CFG1_SRX BIT(3) /* Synchronize Rx Enable */ -#define MAC_CFG1_TFC BIT(4) /* Tx Flow Control Enable */ -#define MAC_CFG1_RFC BIT(5) /* Rx Flow Control Enable */ -#define MAC_CFG1_LB BIT(8) /* Loopback mode */ -#define MAC_CFG1_SR BIT(31) /* Soft Reset */ - -#define MAC_CFG2_FDX BIT(0) -#define MAC_CFG2_CRC_EN BIT(1) -#define MAC_CFG2_PAD_CRC_EN BIT(2) -#define MAC_CFG2_LEN_CHECK BIT(4) -#define MAC_CFG2_HUGE_FRAME_EN BIT(5) -#define MAC_CFG2_IF_1000 BIT(9) -#define MAC_CFG2_IF_10_100 BIT(8) - -#define FIFO_CFG0_WTM BIT(0) /* Watermark Module */ -#define FIFO_CFG0_RXS BIT(1) /* Rx System Module */ -#define FIFO_CFG0_RXF BIT(2) /* Rx Fabric Module */ -#define FIFO_CFG0_TXS BIT(3) /* Tx System Module */ -#define FIFO_CFG0_TXF BIT(4) /* Tx Fabric Module */ -#define FIFO_CFG0_ALL (FIFO_CFG0_WTM | FIFO_CFG0_RXS | FIFO_CFG0_RXF \ - | FIFO_CFG0_TXS | FIFO_CFG0_TXF) - -#define FIFO_CFG0_ENABLE_SHIFT 8 - -#define FIFO_CFG4_DE BIT(0) /* Drop Event */ -#define FIFO_CFG4_DV BIT(1) /* RX_DV Event */ -#define FIFO_CFG4_FC BIT(2) /* False Carrier */ -#define FIFO_CFG4_CE BIT(3) /* Code Error */ -#define FIFO_CFG4_CR BIT(4) /* CRC error */ -#define FIFO_CFG4_LM BIT(5) /* Length Mismatch */ -#define FIFO_CFG4_LO BIT(6) /* Length out of range */ -#define FIFO_CFG4_OK BIT(7) /* Packet is OK */ -#define FIFO_CFG4_MC BIT(8) /* Multicast Packet */ -#define FIFO_CFG4_BC BIT(9) /* Broadcast Packet */ -#define FIFO_CFG4_DR BIT(10) /* Dribble */ -#define FIFO_CFG4_LE BIT(11) /* Long Event */ -#define FIFO_CFG4_CF BIT(12) /* Control Frame */ -#define FIFO_CFG4_PF BIT(13) /* Pause Frame */ -#define FIFO_CFG4_UO BIT(14) /* Unsupported Opcode */ -#define FIFO_CFG4_VT BIT(15) /* VLAN tag detected */ -#define FIFO_CFG4_FT BIT(16) /* Frame Truncated */ -#define FIFO_CFG4_UC BIT(17) /* Unicast Packet */ - -#define FIFO_CFG5_DE BIT(0) /* Drop Event */ -#define FIFO_CFG5_DV BIT(1) /* RX_DV Event */ -#define FIFO_CFG5_FC BIT(2) /* False Carrier */ -#define FIFO_CFG5_CE BIT(3) /* Code Error */ -#define FIFO_CFG5_LM BIT(4) /* Length Mismatch */ -#define FIFO_CFG5_LO BIT(5) /* Length Out of Range */ -#define FIFO_CFG5_OK BIT(6) /* Packet is OK */ -#define FIFO_CFG5_MC BIT(7) /* Multicast Packet */ -#define FIFO_CFG5_BC BIT(8) /* Broadcast Packet */ -#define FIFO_CFG5_DR BIT(9) /* Dribble */ -#define FIFO_CFG5_CF BIT(10) /* Control Frame */ -#define FIFO_CFG5_PF BIT(11) /* Pause Frame */ -#define FIFO_CFG5_UO BIT(12) /* Unsupported Opcode */ -#define FIFO_CFG5_VT BIT(13) /* VLAN tag detected */ -#define FIFO_CFG5_LE BIT(14) /* Long Event */ -#define FIFO_CFG5_FT BIT(15) /* Frame Truncated */ -#define FIFO_CFG5_16 BIT(16) /* unknown */ -#define FIFO_CFG5_17 BIT(17) /* unknown */ -#define FIFO_CFG5_SF BIT(18) /* Short Frame */ -#define FIFO_CFG5_BM BIT(19) /* Byte Mode */ - -#define AG71XX_INT_TX_PS BIT(0) -#define AG71XX_INT_TX_UR BIT(1) -#define AG71XX_INT_TX_BE BIT(3) -#define AG71XX_INT_RX_PR BIT(4) -#define AG71XX_INT_RX_OF BIT(6) -#define AG71XX_INT_RX_BE BIT(7) - -#define MAC_IFCTL_SPEED BIT(16) - -#define MII_CFG_CLK_DIV_4 0 -#define MII_CFG_CLK_DIV_6 2 -#define MII_CFG_CLK_DIV_8 3 -#define MII_CFG_CLK_DIV_10 4 -#define MII_CFG_CLK_DIV_14 5 -#define MII_CFG_CLK_DIV_20 6 -#define MII_CFG_CLK_DIV_28 7 -#define MII_CFG_RESET BIT(31) - -#define MII_CMD_WRITE 0x0 -#define MII_CMD_READ 0x1 -#define MII_ADDR_SHIFT 8 -#define MII_IND_BUSY BIT(0) -#define MII_IND_INVALID BIT(2) - -#define TX_CTRL_TXE BIT(0) /* Tx Enable */ - -#define TX_STATUS_PS BIT(0) /* Packet Sent */ -#define TX_STATUS_UR BIT(1) /* Tx Underrun */ -#define TX_STATUS_BE BIT(3) /* Bus Error */ - -#define RX_CTRL_RXE BIT(0) /* Rx Enable */ - -#define RX_STATUS_PR BIT(0) /* Packet Received */ -#define RX_STATUS_OF BIT(2) /* Rx Overflow */ -#define RX_STATUS_BE BIT(3) /* Bus Error */ - -#define MII_CTRL_IF_MASK 3 -#define MII_CTRL_SPEED_SHIFT 4 -#define MII_CTRL_SPEED_MASK 3 -#define MII_CTRL_SPEED_10 0 -#define MII_CTRL_SPEED_100 1 -#define MII_CTRL_SPEED_1000 2 - -static inline void ag71xx_wr(struct ag71xx *ag, unsigned reg, u32 value) -{ - __raw_writel(value, ag->mac_base + reg); - /* flush write */ - (void) __raw_readl(ag->mac_base + reg); -} - -static inline u32 ag71xx_rr(struct ag71xx *ag, unsigned reg) -{ - return __raw_readl(ag->mac_base + reg); -} - -static inline void ag71xx_sb(struct ag71xx *ag, unsigned reg, u32 mask) -{ - uint32_t r; - - r = ag->mac_base + reg; - __raw_writel(__raw_readl(r) | mask, r); - /* flush write */ - (void)__raw_readl(r); -} - -static inline void ag71xx_cb(struct ag71xx *ag, unsigned reg, u32 mask) -{ - uint32_t r; - - r = ag->mac_base + reg; - __raw_writel(__raw_readl(r) & ~mask, r); - /* flush write */ - (void) __raw_readl(r); -} - -static inline void ag71xx_int_enable(struct ag71xx *ag, u32 ints) -{ - ag71xx_sb(ag, AG71XX_REG_INT_ENABLE, ints); -} - -static inline void ag71xx_int_disable(struct ag71xx *ag, u32 ints) -{ - ag71xx_cb(ag, AG71XX_REG_INT_ENABLE, ints); -} - -static inline void ag71xx_mii_ctrl_wr(struct ag71xx *ag, u32 value) -{ - __raw_writel(value, ag->mii_ctrl); - - /* flush write */ - __raw_readl(ag->mii_ctrl); -} - -static inline u32 ag71xx_mii_ctrl_rr(struct ag71xx *ag) -{ - return __raw_readl(ag->mii_ctrl); -} - -static void inline ag71xx_mii_ctrl_set_if(struct ag71xx *ag, - unsigned int mii_if) -{ - u32 t; - - t = ag71xx_mii_ctrl_rr(ag); - t &= ~(MII_CTRL_IF_MASK); - t |= (mii_if & MII_CTRL_IF_MASK); - ag71xx_mii_ctrl_wr(ag, t); -} - -static void inline ag71xx_mii_ctrl_set_speed(struct ag71xx *ag, - unsigned int speed) -{ - u32 t; - - t = ag71xx_mii_ctrl_rr(ag); - t &= ~(MII_CTRL_SPEED_MASK << MII_CTRL_SPEED_SHIFT); - t |= (speed & MII_CTRL_SPEED_MASK) << MII_CTRL_SPEED_SHIFT; - ag71xx_mii_ctrl_wr(ag, t); -} - -#ifdef CONFIG_AG71XX_AR8216_SUPPORT -void ag71xx_add_ar8216_header(struct ag71xx *ag, struct sk_buff *skb); -int ag71xx_remove_ar8216_header(struct ag71xx *ag, struct sk_buff *skb, - int pktlen); -static inline int ag71xx_has_ar8216(struct ag71xx *ag) -{ - return ag71xx_get_pdata(ag)->has_ar8216; -} -#else -static inline void ag71xx_add_ar8216_header(struct ag71xx *ag, - struct sk_buff *skb) -{ -} - -static inline int ag71xx_remove_ar8216_header(struct ag71xx *ag, - struct sk_buff *skb, - int pktlen) -{ - return 0; -} -static inline int ag71xx_has_ar8216(struct ag71xx *ag) -{ - return 0; -} -#endif - -#endif /* _AG71XX_H */ diff --git a/package/boot/uboot-ar71xx/files/drivers/net/phy/rtl8366.h b/package/boot/uboot-ar71xx/files/drivers/net/phy/rtl8366.h deleted file mode 100644 index f0567dd64a..0000000000 --- a/package/boot/uboot-ar71xx/files/drivers/net/phy/rtl8366.h +++ /dev/null @@ -1,188 +0,0 @@ -/* - * (C) Copyright 2010 - * Michael Kurz . - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#ifndef RTL8366_MII_H -#define RTL8366_MII_H - -#define MII_CONTROL_REG 0 -#define MII_STATUS_REG 1 -#define MII_PHY_ID0 2 -#define MII_PHY_ID1 3 -#define MII_LOCAL_CAP 4 -#define MII_REMOTE_CAP 5 -#define MII_EXT_AUTONEG 6 -#define MII_LOCAL_NEXT_PAGE 7 -#define MII_REMOTE_NEXT_PAGE 8 -#define MII_GIGA_CONTROL 9 -#define MII_GIGA_STATUS 10 -#define MII_EXT_STATUS_REG 15 - -/* Control register */ -#define MII_CONTROL_1000MBPS 6 -#define MII_CONTROL_COLL_TEST 7 -#define MII_CONTROL_FULLDUPLEX 8 -#define MII_CONTROL_RENEG 9 -#define MII_CONTROL_ISOLATE 10 -#define MII_CONTROL_POWERDOWN 11 -#define MII_CONTROL_AUTONEG 12 -#define MII_CONTROL_100MBPS 13 -#define MII_CONTROL_LOOPBACK 14 -#define MII_CONTROL_RESET 15 - -/* Status/Extended status register */ -/* Basic status */ -#define MII_STATUS_CAPABILITY 0 -#define MII_STATUS_JABBER 1 -#define MII_STATUS_LINK_UP 2 -#define MII_STATUS_AUTONEG_ABLE 3 -#define MII_STATUS_REMOTE_FAULT 4 -#define MII_STATUS_AUTONEG_DONE 5 -#define MII_STATUS_NO_PREAMBLE 6 -#define MII_STATUS_RESERVED 7 -#define MII_STATUS_EXTENDED 8 -#define MII_STATUS_100_T2_HALF 9 -#define MII_STATUS_100_T2_FULL 10 -#define MII_STATUS_10_TX_HALF 11 -#define MII_STATUS_10_TX_FULL 12 -#define MII_STATUS_100_TX_HALF 13 -#define MII_STATUS_100_TX_FULL 14 -#define MII_STATUS_100_T4 15 - -#define MII_GIGA_CONTROL_HALF 8 -#define MII_GIGA_CONTROL_FULL 9 -#define MII_GIGA_STATUS_HALF 10 -#define MII_GIGA_STATUS_FULL 11 - -/* Extended status */ -#define MII_STATUS_1000_T_HALF 12 -#define MII_STATUS_1000_T_FULL 13 -#define MII_STATUS_1000_X_HALF 14 -#define MII_STATUS_1000_X_FULL 15 - -/* Local/Remmote capability register */ -#define MII_CAP_10BASE_TX 5 -#define MII_CAP_10BASE_TX_FULL 6 -#define MII_CAP_100BASE_TX 7 -#define MII_CAP_100BASE_TX_FULL 8 -#define MII_CAP_100BASE_T4 9 -#define MII_CAP_SYMM_PAUSE 10 -#define MII_CAP_ASYMM_PAUSE 11 -#define MII_CAP_RESERVED 12 -#define MII_CAP_REMOTE_FAULT 13 -#define MII_CAP_ACKNOWLEDGE 14 -#define MII_CAP_NEXT_PAGE 15 -#define MII_CAP_IEEE_802_3 0x0001 - -#define MII_LINK_MODE_MASK 0x1f - -#define REALTEK_RTL8366_CHIP_ID0 0x001C -#define REALTEK_RTL8366_CHIP_ID1 0xC940 -#define REALTEK_RTL8366_CHIP_ID1_MP 0xC960 - -#define REALTEK_MIN_PORT_ID 0 -#define REALTEK_MAX_PORT_ID 5 -#define REALTEK_MIN_PHY_ID REALTEK_MIN_PORT_ID -#define REALTEK_MAX_PHY_ID 4 -#define REALTEK_CPU_PORT_ID REALTEK_MAX_PORT_ID -#define REALTEK_PHY_PORT_MASK ((1<<(REALTEK_MAX_PHY_ID+1)) - (1<. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - - -#include -#include -#include -#include -#include MII_GPIOINCLUDE - -#include "rtl8366.h" - -#ifdef DEBUG_RTL8366 - #define DBG(fmt,args...) printf (fmt ,##args) -#else - #define DBG(fmt,args...) -#endif - - -//------------------------------------------------------------------- -// Soft SMI functions -//------------------------------------------------------------------- - -#define DELAY 2 - -static void smi_init(void) -{ - MII_SDAINPUT; - MII_SCKINPUT; - - MII_SETSDA(1); - MII_SETSCK(1); - - udelay(20); -} - -static void smi_start(void) -{ -/* - * rtl8366 chip needs a extra clock with - * SDA high before start condition - */ - - /* set gpio pins output */ - MII_SDAOUTPUT; - MII_SCKOUTPUT; - udelay(DELAY); - - /* set initial state: SCK:0, SDA:1 */ - MII_SETSCK(0); - MII_SETSDA(1); - udelay(DELAY); - - /* toggle clock */ - MII_SETSCK(1); - udelay(DELAY); - MII_SETSCK(0); - udelay(DELAY); - - /* start condition */ - MII_SETSCK(1); - udelay(DELAY); - MII_SETSDA(0); - udelay(DELAY); - MII_SETSCK(0); - udelay(DELAY); - MII_SETSDA(1); -} - -static void smi_stop(void) -{ -/* - * rtl8366 chip needs a extra clock with - * SDA high after stop condition - */ - - /* stop condition */ - udelay(DELAY); - MII_SETSDA(0); - MII_SETSCK(1); - udelay(DELAY); - MII_SETSDA(1); - udelay(DELAY); - MII_SETSCK(1); - udelay(DELAY); - MII_SETSCK(0); - udelay(DELAY); - - /* toggle clock */ - MII_SETSCK(1); - udelay(DELAY); - MII_SETSCK(0); - udelay(DELAY); - MII_SETSCK(1); - - /* set gpio pins input */ - MII_SDAINPUT; - MII_SCKINPUT; -} - -static void smi_writeBits(uint32_t data, uint8_t length) -{ - uint8_t test; - - for( ; length > 0; length--) { - udelay(DELAY); - - /* output data */ - test = (((data & (1 << (length - 1))) != 0) ? 1 : 0); - MII_SETSDA(test); - udelay(DELAY); - - /* toogle clock */ - MII_SETSCK(1); - udelay(DELAY); - MII_SETSCK(0); - } -} - -static uint32_t smi_readBits(uint8_t length) -{ - uint32_t ret; - - MII_SDAINPUT; - - for(ret = 0 ; length > 0; length--) { - udelay(DELAY); - - ret <<= 1; - - /* toogle clock */ - MII_SETSCK(1); - udelay(DELAY); - ret |= MII_GETSDA; - MII_SETSCK(0); - } - - MII_SDAOUTPUT; - - return ret; -} - -static int smi_waitAck(void) -{ - uint32_t retry = 0; - - while (smi_readBits(1)) { - if (retry++ == 5) - return -1; - } - - return 0; - -} - -static int smi_read(uint32_t reg, uint32_t *data) -{ - uint32_t rawData; - - /* send start condition */ - smi_start(); - /* send CTRL1 code: 0b1010*/ - smi_writeBits(0x0a, 4); - /* send CTRL2 code: 0b100 */ - smi_writeBits(0x04, 3); - /* send READ command */ - smi_writeBits(0x01, 1); - - /* wait for ACK */ - if (smi_waitAck()) - return -1; - - /* send address low */ - smi_writeBits(reg & 0xFF, 8); - /* wait for ACK */ - if (smi_waitAck()) - return -1; - /* send address high */ - smi_writeBits((reg & 0xFF00) >> 8, 8); - /* wait for ACK */ - if (smi_waitAck()) - return -1; - - /* read data low */ - rawData = (smi_readBits(8) & 0xFF); - /* send ACK */ - smi_writeBits(0, 1); - /* read data high */ - rawData |= (smi_readBits(8) & 0xFF) << 8; - /* send NACK */ - smi_writeBits(1, 1); - - /* send stop condition */ - smi_stop(); - - if (data) - *data = rawData; - - return 0; -} - -static int smi_write(uint32_t reg, uint32_t data) -{ - /* send start condition */ - smi_start(); - /* send CTRL1 code: 0b1010*/ - smi_writeBits(0x0a, 4); - /* send CTRL2 code: 0b100 */ - smi_writeBits(0x04, 3); - /* send WRITE command */ - smi_writeBits(0x00, 1); - - /* wait for ACK */ - if (smi_waitAck()) - return -1; - - /* send address low */ - smi_writeBits(reg & 0xFF, 8); - /* wait for ACK */ - if (smi_waitAck()) - return -1; - /* send address high */ - smi_writeBits((reg & 0xFF00) >> 8, 8); - /* wait for ACK */ - if (smi_waitAck()) - return -1; - - /* send data low */ - smi_writeBits(data & 0xFF, 8); - /* wait for ACK */ - if (smi_waitAck()) - return -1; - /* send data high */ - smi_writeBits((data & 0xFF00) >> 8, 8); - /* wait for ACK */ - if (smi_waitAck()) - return -1; - - /* send stop condition */ - smi_stop(); - - return 0; -} - - -//------------------------------------------------------------------- -// Switch register read / write functions -//------------------------------------------------------------------- -static int rtl8366_readRegister(uint32_t reg, uint16_t *data) -{ - uint32_t regData; - - DBG("rtl8366: read register=%#04x, data=", reg); - - if (smi_read(reg, ®Data)) { - printf("\nrtl8366 smi read failed!\n"); - return -1; - } - - if (data) - *data = regData; - - DBG("%#04x\n", regData); - - return 0; -} - -static int rtl8366_writeRegister(uint32_t reg, uint16_t data) -{ - DBG("rtl8366: write register=%#04x, data=%#04x\n", reg, data); - - if (smi_write(reg, data)) { - printf("rtl8366 smi write failed!\n"); - return -1; - } - - return 0; -} - -static int rtl8366_setRegisterBit(uint32_t reg, uint32_t bitNum, uint32_t value) -{ - uint16_t regData; - - if (bitNum >= 16) - return -1; - - if (rtl8366_readRegister(reg, ®Data)) - return -1; - - if (value) - regData |= (1 << bitNum); - else - regData &= ~(1 << bitNum); - - if (rtl8366_writeRegister(reg, regData)) - return -1; - - return 0; -} - -//------------------------------------------------------------------- -// MII PHY read / write functions -//------------------------------------------------------------------- -static int rtl8366_getPhyReg(uint32_t phyNum, uint32_t reg, uint16_t *data) -{ - uint16_t phyAddr, regData; - - if (phyNum > RTL8366S_PHY_NO_MAX) { - printf("rtl8366s: invalid phy number!\n"); - return -1; - } - - if (phyNum > RTL8366S_PHY_ADDR_MAX) { - printf("rtl8366s: invalid phy register number!\n"); - return -1; - } - - if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG, - RTL8366S_PHY_CTRL_READ)) - return -1; - - phyAddr = 0x8000 | (1 << (phyNum + RTL8366S_PHY_NO_OFFSET)) - | (reg & RTL8366S_PHY_REG_MASK); - if (rtl8366_writeRegister(phyAddr, 0)) - return -1; - - if (rtl8366_readRegister(RTL8366S_PHY_ACCESS_DATA_REG, ®Data)) - return -1; - - if (data) - *data = regData; - - return 0; -} - -static int rtl8366_setPhyReg(uint32_t phyNum, uint32_t reg, uint16_t data) -{ - uint16_t phyAddr; - - if (phyNum > RTL8366S_PHY_NO_MAX) { - printf("rtl8366s: invalid phy number!\n"); - return -1; - } - - if (phyNum > RTL8366S_PHY_ADDR_MAX) { - printf("rtl8366s: invalid phy register number!\n"); - return -1; - } - - if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG, - RTL8366S_PHY_CTRL_WRITE)) - return -1; - - phyAddr = 0x8000 | (1 << (phyNum + RTL8366S_PHY_NO_OFFSET)) - | (reg & RTL8366S_PHY_REG_MASK); - if (rtl8366_writeRegister(phyAddr, data)) - return -1; - - return 0; -} - -static int rtl8366_miiread(char *devname, uchar phy_adr, uchar reg, ushort *data) -{ - uint16_t regData; - - DBG("rtl8366_miiread: devname=%s, addr=%#02x, reg=%#02x\n", - devname, phy_adr, reg); - - if (strcmp(devname, RTL8366_DEVNAME) != 0) - return -1; - - if (rtl8366_getPhyReg(phy_adr, reg, ®Data)) { - printf("rtl8366_miiread: write failed!\n"); - return -1; - } - - if (data) - *data = regData; - - return 0; -} - -static int rtl8366_miiwrite(char *devname, uchar phy_adr, uchar reg, ushort data) -{ - DBG("rtl8366_miiwrite: devname=%s, addr=%#02x, reg=%#02x, data=%#04x\n", - devname, phy_adr, reg, data); - - if (strcmp(devname, RTL8366_DEVNAME) != 0) - return -1; - - if (rtl8366_setPhyReg(phy_adr, reg, data)) { - printf("rtl8366_miiwrite: write failed!\n"); - return -1; - } - - return 0; -} - -int rtl8366_mii_register(bd_t *bis) -{ - miiphy_register(strdup(RTL8366_DEVNAME), rtl8366_miiread, - rtl8366_miiwrite); - - return 0; -} - - -//------------------------------------------------------------------- -// Switch management functions -//------------------------------------------------------------------- - -int rtl8366s_setGreenFeature(uint32_t tx, uint32_t rx) -{ - if (rtl8366_setRegisterBit(RTL8366S_GREEN_FEATURE_REG, - RTL8366S_GREEN_FEATURE_TX_BIT, tx)) - return -1; - - if (rtl8366_setRegisterBit(RTL8366S_GREEN_FEATURE_REG, - RTL8366S_GREEN_FEATURE_RX_BIT, rx)) - return -1; - - return 0; -} - -int rtl8366s_setPowerSaving(uint32_t phyNum, uint32_t enabled) -{ - uint16_t regData; - - if (phyNum > RTL8366S_PHY_NO_MAX) - return -1; - - if (rtl8366_getPhyReg(phyNum, 12, ®Data)) - return -1; - - if (enabled) - regData |= (1 << 12); - else - regData &= ~(1 << 12); - - if (rtl8366_setPhyReg(phyNum, 12, regData)) - return -1; - - return 0; -} - -int rtl8366s_setGreenEthernet(uint32_t greenFeature, uint32_t powerSaving) -{ - uint32_t phyNum, i; - uint16_t regData; - - const uint16_t greenSettings[][2] = - { - {0xBE5B,0x3500}, - {0xBE5C,0xB975}, - {0xBE5D,0xB9B9}, - {0xBE77,0xA500}, - {0xBE78,0x5A78}, - {0xBE79,0x6478} - }; - - if (rtl8366_readRegister(RTL8366S_MODEL_ID_REG, ®Data)) - return -1; - - switch (regData) - { - case 0x0000: - for (i = 0; i < 6; i++) { - if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG, RTL8366S_PHY_CTRL_WRITE)) - return -1; - if (rtl8366_writeRegister(greenSettings[i][0], greenSettings[i][1])) - return -1; - } - break; - - case RTL8366S_MODEL_8366SR: - if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG, RTL8366S_PHY_CTRL_WRITE)) - return -1; - if (rtl8366_writeRegister(greenSettings[0][0], greenSettings[0][1])) - return -1; - break; - - default: - printf("rtl8366s_initChip: unsupported chip found!\n"); - return -1; - } - - if (rtl8366s_setGreenFeature(greenFeature, powerSaving)) - return -1; - - for (phyNum = 0; phyNum <= RTL8366S_PHY_NO_MAX; phyNum++) { - if (rtl8366s_setPowerSaving(phyNum, powerSaving)) - return -1; - } - - return 0; -} - -int rtl8366s_setCPUPortMask(uint8_t port, uint32_t enabled) -{ - if(port >= 6){ - printf("rtl8366s_setCPUPortMask: invalid port number\n"); - return -1; - } - - return rtl8366_setRegisterBit(RTL8366S_CPU_CTRL_REG, port, enabled); -} - -int rtl8366s_setCPUDisableInsTag(uint32_t enable) -{ - return rtl8366_setRegisterBit(RTL8366S_CPU_CTRL_REG, - RTL8366S_CPU_INSTAG_BIT, enable); -} - -int rtl8366s_setCPUDropUnda(uint32_t enable) -{ - return rtl8366_setRegisterBit(RTL8366S_CPU_CTRL_REG, - RTL8366S_CPU_DRP_BIT, enable); -} - -int rtl8366s_setCPUPort(uint8_t port, uint32_t noTag, uint32_t dropUnda) -{ - uint32_t i; - - if(port >= 6){ - printf("rtl8366s_setCPUPort: invalid port number\n"); - return -1; - } - - /* reset register */ - for(i = 0; i < 6; i++) - { - if(rtl8366s_setCPUPortMask(i, 0)){ - printf("rtl8366s_setCPUPort: rtl8366s_setCPUPortMask failed\n"); - return -1; - } - } - - if(rtl8366s_setCPUPortMask(port, 1)){ - printf("rtl8366s_setCPUPort: rtl8366s_setCPUPortMask failed\n"); - return -1; - } - - if(rtl8366s_setCPUDisableInsTag(noTag)){ - printf("rtl8366s_setCPUPort: rtl8366s_setCPUDisableInsTag fail\n"); - return -1; - } - - if(rtl8366s_setCPUDropUnda(dropUnda)){ - printf("rtl8366s_setCPUPort: rtl8366s_setCPUDropUnda fail\n"); - return -1; - } - - return 0; -} - -int rtl8366s_setLedConfig(uint32_t ledNum, uint8_t config) -{ - uint16_t regData; - - if(ledNum >= RTL8366S_LED_GROUP_MAX) { - DBG("rtl8366s_setLedConfig: invalid led group\n"); - return -1; - } - - if(config > RTL8366S_LEDCONF_LEDFORCE) { - DBG("rtl8366s_setLedConfig: invalid led config\n"); - return -1; - } - - if (rtl8366_readRegister(RTL8366S_LED_INDICATED_CONF_REG, ®Data)) { - printf("rtl8366s_setLedConfig: failed to get led register!\n"); - return -1; - } - - regData &= ~(0xF << (ledNum * 4)); - regData |= config << (ledNum * 4); - - if (rtl8366_writeRegister(RTL8366S_LED_INDICATED_CONF_REG, regData)) { - printf("rtl8366s_setLedConfig: failed to set led register!\n"); - return -1; - } - - return 0; -} - -int rtl8366s_getLedConfig(uint32_t ledNum, uint8_t *config) -{ - uint16_t regData; - - if(ledNum >= RTL8366S_LED_GROUP_MAX) { - DBG("rtl8366s_getLedConfig: invalid led group\n"); - return -1; - } - - if (rtl8366_readRegister(RTL8366S_LED_INDICATED_CONF_REG, ®Data)) { - printf("rtl8366s_getLedConfig: failed to get led register!\n"); - return -1; - } - - if (config) - *config = (regData >> (ledNum * 4)) & 0xF; - - return 0; -} - -int rtl8366s_setLedForceValue(uint32_t group0, uint32_t group1, - uint32_t group2, uint32_t group3) -{ - uint16_t regData; - - regData = (group0 & 0x3F) | ((group1 & 0x3F) << 6); - if (rtl8366_writeRegister(RTL8366S_LED_0_1_FORCE_REG, regData)) { - printf("rtl8366s_setLedForceValue: failed to set led register!\n"); - return -1; - } - - regData = (group2 & 0x3F) | ((group3 & 0x3F) << 6); - if (rtl8366_writeRegister(RTL8366S_LED_2_3_FORCE_REG, regData)) { - printf("rtl8366s_setLedForceValue: failed to set led register!\n"); - return -1; - } - - return 0; -} - -int rtl8366s_initChip(void) -{ - uint32_t ledGroup, i = 0; - uint16_t regData; - uint8_t ledData[RTL8366S_LED_GROUP_MAX]; - const uint16_t (*chipData)[2]; - - const uint16_t chipB[][2] = - { - {0x0000, 0x0038},{0x8100, 0x1B37},{0xBE2E, 0x7B9F},{0xBE2B, 0xA4C8}, - {0xBE74, 0xAD14},{0xBE2C, 0xDC00},{0xBE69, 0xD20F},{0xBE3B, 0xB414}, - {0xBE24, 0x0000},{0xBE23, 0x00A1},{0xBE22, 0x0008},{0xBE21, 0x0120}, - {0xBE20, 0x1000},{0xBE24, 0x0800},{0xBE24, 0x0000},{0xBE24, 0xF000}, - {0xBE23, 0xDF01},{0xBE22, 0xDF20},{0xBE21, 0x101A},{0xBE20, 0xA0FF}, - {0xBE24, 0xF800},{0xBE24, 0xF000},{0x0242, 0x02BF},{0x0245, 0x02BF}, - {0x0248, 0x02BF},{0x024B, 0x02BF},{0x024E, 0x02BF},{0x0251, 0x02BF}, - {0x0230, 0x0A32},{0x0233, 0x0A32},{0x0236, 0x0A32},{0x0239, 0x0A32}, - {0x023C, 0x0A32},{0x023F, 0x0A32},{0x0254, 0x0A3F},{0x0255, 0x0064}, - {0x0256, 0x0A3F},{0x0257, 0x0064},{0x0258, 0x0A3F},{0x0259, 0x0064}, - {0x025A, 0x0A3F},{0x025B, 0x0064},{0x025C, 0x0A3F},{0x025D, 0x0064}, - {0x025E, 0x0A3F},{0x025F, 0x0064},{0x0260, 0x0178},{0x0261, 0x01F4}, - {0x0262, 0x0320},{0x0263, 0x0014},{0x021D, 0x9249},{0x021E, 0x0000}, - {0x0100, 0x0004},{0xBE4A, 0xA0B4},{0xBE40, 0x9C00},{0xBE41, 0x501D}, - {0xBE48, 0x3602},{0xBE47, 0x8051},{0xBE4C, 0x6465},{0x8000, 0x1F00}, - {0x8001, 0x000C},{0x8008, 0x0000},{0x8007, 0x0000},{0x800C, 0x00A5}, - {0x8101, 0x02BC},{0xBE53, 0x0005},{0x8E45, 0xAFE8},{0x8013, 0x0005}, - {0xBE4B, 0x6700},{0x800B, 0x7000},{0xBE09, 0x0E00}, - {0xFFFF, 0xABCD} - }; - - const uint16_t chipDefault[][2] = - { - {0x0242, 0x02BF},{0x0245, 0x02BF},{0x0248, 0x02BF},{0x024B, 0x02BF}, - {0x024E, 0x02BF},{0x0251, 0x02BF}, - {0x0254, 0x0A3F},{0x0256, 0x0A3F},{0x0258, 0x0A3F},{0x025A, 0x0A3F}, - {0x025C, 0x0A3F},{0x025E, 0x0A3F}, - {0x0263, 0x007C},{0x0100, 0x0004}, - {0xBE5B, 0x3500},{0x800E, 0x200F},{0xBE1D, 0x0F00},{0x8001, 0x5011}, - {0x800A, 0xA2F4},{0x800B, 0x17A3},{0xBE4B, 0x17A3},{0xBE41, 0x5011}, - {0xBE17, 0x2100},{0x8000, 0x8304},{0xBE40, 0x8304},{0xBE4A, 0xA2F4}, - {0x800C, 0xA8D5},{0x8014, 0x5500},{0x8015, 0x0004},{0xBE4C, 0xA8D5}, - {0xBE59, 0x0008},{0xBE09, 0x0E00},{0xBE36, 0x1036},{0xBE37, 0x1036}, - {0x800D, 0x00FF},{0xBE4D, 0x00FF}, - {0xFFFF, 0xABCD} - }; - - DBG("rtl8366s_initChip\n"); - - /* save current led config and set to led force */ - for (ledGroup = 0; ledGroup < RTL8366S_LED_GROUP_MAX; ledGroup++) { - if (rtl8366s_getLedConfig(ledGroup, &ledData[ledGroup])) - return -1; - - if (rtl8366s_setLedConfig(ledGroup, RTL8366S_LEDCONF_LEDFORCE)) - return -1; - } - - if (rtl8366s_setLedForceValue(0,0,0,0)) - return -1; - - if (rtl8366_readRegister(RTL8366S_MODEL_ID_REG, ®Data)) - return -1; - - switch (regData) - { - case 0x0000: - chipData = chipB; - break; - - case RTL8366S_MODEL_8366SR: - chipData = chipDefault; - break; - - default: - printf("rtl8366s_initChip: unsupported chip found!\n"); - return -1; - } - - DBG("rtl8366s_initChip: found %x chip\n", regData); - - while ((chipData[i][0] != 0xFFFF) && (chipData[i][1] != 0xABCD)) { - - /* phy settings*/ - if ((chipData[i][0] & 0xBE00) == 0xBE00) { - if (rtl8366_writeRegister(RTL8366S_PHY_ACCESS_CTRL_REG, - RTL8366S_PHY_CTRL_WRITE)) - return -1; - } - - if (rtl8366_writeRegister(chipData[i][0], chipData[i][1])) - return -1; - - i++; - } - - /* chip needs some time */ - udelay(100 * 1000); - - /* restore led config */ - for (ledGroup = 0; ledGroup < RTL8366S_LED_GROUP_MAX; ledGroup++) { - if (rtl8366s_setLedConfig(ledGroup, ledData[ledGroup])) - return -1; - } - - return 0; -} - -int rtl8366s_initialize(void) -{ - uint16_t regData; - - DBG("rtl8366s_initialize: start setup\n"); - - smi_init(); - - rtl8366_readRegister(RTL8366S_CHIP_ID_REG, ®Data); - DBG("Realtek 8366SR switch ID %#04x\n", regData); - - if (regData != 0x8366) { - printf("rtl8366s_initialize: found unsupported switch\n"); - return -1; - } - - if (rtl8366s_initChip()) { - printf("rtl8366s_initialize: init chip failed\n"); - return -1; - } - - if (rtl8366s_setGreenEthernet(1, 1)) { - printf("rtl8366s_initialize: set green ethernet failed\n"); - return -1; - } - - /* Set port 5 noTag and don't dropUnda */ - if (rtl8366s_setCPUPort(5, 1, 0)) { - printf("rtl8366s_initialize: set CPU port failed\n"); - return -1; - } - - return 0; -} diff --git a/package/boot/uboot-ar71xx/files/drivers/spi/ar71xx_spi.c b/package/boot/uboot-ar71xx/files/drivers/spi/ar71xx_spi.c deleted file mode 100644 index bbe27b16ef..0000000000 --- a/package/boot/uboot-ar71xx/files/drivers/spi/ar71xx_spi.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * (C) Copyright 2010 - * Michael Kurz - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#include -#include -#include - -#include -#include -#include - -/*----------------------------------------------------------------------- - * Definitions - */ - -#ifdef DEBUG_SPI -#define PRINTD(fmt,args...) printf (fmt ,##args) -#else -#define PRINTD(fmt,args...) -#endif - -struct ar71xx_spi_slave { - struct spi_slave slave; - unsigned int mode; -}; - -static inline struct ar71xx_spi_slave *to_ar71xx_spi(struct spi_slave *slave) -{ - return container_of(slave, struct ar71xx_spi_slave, slave); -} - -/*=====================================================================*/ -/* Public Functions */ -/*=====================================================================*/ - -/*----------------------------------------------------------------------- - * Initialization - */ - -void spi_init() -{ - PRINTD("ar71xx_spi: spi_init"); - - // Init SPI Hardware, disable remap, set clock - __raw_writel(0x43, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_CTRL)); - - PRINTD(" ---> out\n"); -} - -struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, - unsigned int max_hz, unsigned int mode) -{ - struct ar71xx_spi_slave *ss; - - PRINTD("ar71xx_spi: spi_setup_slave"); - - if ((bus != 0) || (cs > 2)) - return NULL; - - ss = malloc(sizeof(struct ar71xx_spi_slave)); - if (!ss) - return NULL; - - ss->slave.bus = bus; - ss->slave.cs = cs; - ss->mode = mode; - - /* TODO: Use max_hz to limit the SCK rate */ - - PRINTD(" ---> out\n"); - - return &ss->slave; -} - -void spi_free_slave(struct spi_slave *slave) -{ - struct ar71xx_spi_slave *ss = to_ar71xx_spi(slave); - - free(ss); -} - -int spi_claim_bus(struct spi_slave *slave) -{ - - return 0; -} - -void spi_release_bus(struct spi_slave *slave) -{ - -} - -int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout, - void *din, unsigned long flags) -{ - struct ar71xx_spi_slave *ss = to_ar71xx_spi(slave); - uint8_t *rx = din; - const uint8_t *tx = dout; - uint8_t curbyte, curbitlen, restbits; - uint32_t bytes = bitlen / 8; - uint32_t out; - uint32_t in; - - PRINTD("ar71xx_spi: spi_xfer: slave:%p bitlen:%08x dout:%p din:%p flags:%08x\n", slave, bitlen, dout, din, flags); - - if (flags & SPI_XFER_BEGIN) { - __raw_writel(SPI_FS_GPIO, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_FS)); - __raw_writel(SPI_IOC_CS_ALL, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC)); - } - - restbits = (bitlen % 8); - if (restbits != 0) - bytes++; - - // enable chip select - out = SPI_IOC_CS_ALL & ~(SPI_IOC_CS(slave->cs)); - - while (bytes--) { - - curbyte = 0; - if (tx) { - curbyte = *tx++; - } - - if (restbits != 0) { - curbitlen = restbits; - curbyte <<= 8 - restbits; - } else { - curbitlen = 8; - } - - PRINTD("ar71xx_spi: sending: data:%02x length:%d\n", curbyte, curbitlen); - - /* clock starts at inactive polarity */ - for (curbyte <<= (8 - curbitlen); curbitlen; curbitlen--) { - - if (curbyte & (1 << 7)) - out |= SPI_IOC_DO; - else - out &= ~(SPI_IOC_DO); - - /* setup MSB (to slave) on trailing edge */ - __raw_writel(out, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC)); - - __raw_writel(out | SPI_IOC_CLK, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC)); - - curbyte <<= 1; - } - - in = __raw_readl(KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_RDS)); - PRINTD("ar71xx_spi: received:%02x\n", in); - - if (rx) { - if (restbits == 0) { - *rx++ = in; - } else { - *rx++ = (in << (8 - restbits)); - } - } - } - - if (flags & SPI_XFER_END) { - __raw_writel(SPI_IOC_CS(slave->cs), KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC)); - __raw_writel(SPI_IOC_CS_ALL, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_IOC)); - __raw_writel(0, KSEG1ADDR(AR71XX_SPI_BASE + SPI_REG_FS)); - } - - PRINTD(" ---> out\n"); - - return 0; -} diff --git a/package/boot/uboot-ar71xx/files/include/asm-mips/ar71xx.h b/package/boot/uboot-ar71xx/files/include/asm-mips/ar71xx.h deleted file mode 100644 index e8f3f61d27..0000000000 --- a/package/boot/uboot-ar71xx/files/include/asm-mips/ar71xx.h +++ /dev/null @@ -1,515 +0,0 @@ -/* - * Atheros AR71xx SoC specific definitions - * - * Copyright (C) 2008-2009 Gabor Juhos - * Copyright (C) 2008 Imre Kaloz - * - * Parts of this file are based on Atheros' 2.6.15 BSP - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published - * by the Free Software Foundation. - */ - -#ifndef __ASM_MACH_AR71XX_H -#define __ASM_MACH_AR71XX_H - -#include -#include -#include - -#ifndef __ASSEMBLER__ - -#define BIT(x) (1<<(x)) - -#define AR71XX_PCI_MEM_BASE 0x10000000 -#define AR71XX_PCI_MEM_SIZE 0x08000000 -#define AR71XX_APB_BASE 0x18000000 -#define AR71XX_GE0_BASE 0x19000000 -#define AR71XX_GE0_SIZE 0x01000000 -#define AR71XX_GE1_BASE 0x1a000000 -#define AR71XX_GE1_SIZE 0x01000000 -#define AR71XX_EHCI_BASE 0x1b000000 -#define AR71XX_EHCI_SIZE 0x01000000 -#define AR71XX_OHCI_BASE 0x1c000000 -#define AR71XX_OHCI_SIZE 0x01000000 -#define AR7240_OHCI_BASE 0x1b000000 -#define AR7240_OHCI_SIZE 0x01000000 -#define AR71XX_SPI_BASE 0x1f000000 -#define AR71XX_SPI_SIZE 0x01000000 - -#define AR71XX_DDR_CTRL_BASE (AR71XX_APB_BASE + 0x00000000) -#define AR71XX_DDR_CTRL_SIZE 0x10000 -#define AR71XX_CPU_BASE (AR71XX_APB_BASE + 0x00010000) -#define AR71XX_UART_BASE (AR71XX_APB_BASE + 0x00020000) -#define AR71XX_UART_SIZE 0x10000 -#define AR71XX_USB_CTRL_BASE (AR71XX_APB_BASE + 0x00030000) -#define AR71XX_USB_CTRL_SIZE 0x10000 -#define AR71XX_GPIO_BASE (AR71XX_APB_BASE + 0x00040000) -#define AR71XX_GPIO_SIZE 0x10000 -#define AR71XX_PLL_BASE (AR71XX_APB_BASE + 0x00050000) -#define AR71XX_PLL_SIZE 0x10000 -#define AR71XX_RESET_BASE (AR71XX_APB_BASE + 0x00060000) -#define AR71XX_RESET_SIZE 0x10000 -#define AR71XX_MII_BASE (AR71XX_APB_BASE + 0x00070000) -#define AR71XX_MII_SIZE 0x10000 -#define AR71XX_SLIC_BASE (AR71XX_APB_BASE + 0x00090000) -#define AR71XX_SLIC_SIZE 0x10000 -#define AR71XX_DMA_BASE (AR71XX_APB_BASE + 0x000A0000) -#define AR71XX_DMA_SIZE 0x10000 -#define AR71XX_STEREO_BASE (AR71XX_APB_BASE + 0x000B0000) -#define AR71XX_STEREO_SIZE 0x10000 - -#define AR724X_PCI_CRP_BASE (AR71XX_APB_BASE + 0x000C0000) -#define AR724X_PCI_CRP_SIZE 0x100 - -#define AR724X_PCI_CTRL_BASE (AR71XX_APB_BASE + 0x000F0000) -#define AR724X_PCI_CTRL_SIZE 0x100 - -#define AR91XX_WMAC_BASE (AR71XX_APB_BASE + 0x000C0000) -#define AR91XX_WMAC_SIZE 0x30000 - -#define AR71XX_MEM_SIZE_MIN 0x0200000 -#define AR71XX_MEM_SIZE_MAX 0x10000000 - -#define AR71XX_CPU_IRQ_BASE 0 -#define AR71XX_MISC_IRQ_BASE 8 -#define AR71XX_MISC_IRQ_COUNT 8 -#define AR71XX_GPIO_IRQ_BASE 16 -#define AR71XX_GPIO_IRQ_COUNT 32 -#define AR71XX_PCI_IRQ_BASE 48 -#define AR71XX_PCI_IRQ_COUNT 8 - -#define AR71XX_CPU_IRQ_IP2 (AR71XX_CPU_IRQ_BASE + 2) -#define AR71XX_CPU_IRQ_USB (AR71XX_CPU_IRQ_BASE + 3) -#define AR71XX_CPU_IRQ_GE0 (AR71XX_CPU_IRQ_BASE + 4) -#define AR71XX_CPU_IRQ_GE1 (AR71XX_CPU_IRQ_BASE + 5) -#define AR71XX_CPU_IRQ_MISC (AR71XX_CPU_IRQ_BASE + 6) -#define AR71XX_CPU_IRQ_TIMER (AR71XX_CPU_IRQ_BASE + 7) - -#define AR71XX_MISC_IRQ_TIMER (AR71XX_MISC_IRQ_BASE + 0) -#define AR71XX_MISC_IRQ_ERROR (AR71XX_MISC_IRQ_BASE + 1) -#define AR71XX_MISC_IRQ_GPIO (AR71XX_MISC_IRQ_BASE + 2) -#define AR71XX_MISC_IRQ_UART (AR71XX_MISC_IRQ_BASE + 3) -#define AR71XX_MISC_IRQ_WDOG (AR71XX_MISC_IRQ_BASE + 4) -#define AR71XX_MISC_IRQ_PERFC (AR71XX_MISC_IRQ_BASE + 5) -#define AR71XX_MISC_IRQ_OHCI (AR71XX_MISC_IRQ_BASE + 6) -#define AR71XX_MISC_IRQ_DMA (AR71XX_MISC_IRQ_BASE + 7) - -#define AR71XX_GPIO_IRQ(_x) (AR71XX_GPIO_IRQ_BASE + (_x)) - -#define AR71XX_PCI_IRQ_DEV0 (AR71XX_PCI_IRQ_BASE + 0) -#define AR71XX_PCI_IRQ_DEV1 (AR71XX_PCI_IRQ_BASE + 1) -#define AR71XX_PCI_IRQ_DEV2 (AR71XX_PCI_IRQ_BASE + 2) -#define AR71XX_PCI_IRQ_CORE (AR71XX_PCI_IRQ_BASE + 4) - -extern u32 ar71xx_ahb_freq; -extern u32 ar71xx_cpu_freq; -extern u32 ar71xx_ddr_freq; - -enum ar71xx_soc_type { - AR71XX_SOC_UNKNOWN, - AR71XX_SOC_AR7130, - AR71XX_SOC_AR7141, - AR71XX_SOC_AR7161, - AR71XX_SOC_AR7240, - AR71XX_SOC_AR7241, - AR71XX_SOC_AR7242, - AR71XX_SOC_AR9130, - AR71XX_SOC_AR9132 -}; - -extern enum ar71xx_soc_type ar71xx_soc; - -/* - * PLL block - */ -#define AR71XX_PLL_REG_CPU_CONFIG 0x00 -#define AR71XX_PLL_REG_SEC_CONFIG 0x04 -#define AR71XX_PLL_REG_ETH0_INT_CLOCK 0x10 -#define AR71XX_PLL_REG_ETH1_INT_CLOCK 0x14 - -#define AR71XX_PLL_DIV_SHIFT 3 -#define AR71XX_PLL_DIV_MASK 0x1f -#define AR71XX_CPU_DIV_SHIFT 16 -#define AR71XX_CPU_DIV_MASK 0x3 -#define AR71XX_DDR_DIV_SHIFT 18 -#define AR71XX_DDR_DIV_MASK 0x3 -#define AR71XX_AHB_DIV_SHIFT 20 -#define AR71XX_AHB_DIV_MASK 0x7 - -#define AR71XX_ETH0_PLL_SHIFT 17 -#define AR71XX_ETH1_PLL_SHIFT 19 - -#define AR724X_PLL_REG_CPU_CONFIG 0x00 -#define AR724X_PLL_REG_PCIE_CONFIG 0x18 - -#define AR724X_PLL_DIV_SHIFT 0 -#define AR724X_PLL_DIV_MASK 0x3ff -#define AR724X_PLL_REF_DIV_SHIFT 10 -#define AR724X_PLL_REF_DIV_MASK 0xf -#define AR724X_AHB_DIV_SHIFT 19 -#define AR724X_AHB_DIV_MASK 0x1 -#define AR724X_DDR_DIV_SHIFT 22 -#define AR724X_DDR_DIV_MASK 0x3 - -#define AR91XX_PLL_REG_CPU_CONFIG 0x00 -#define AR91XX_PLL_REG_ETH_CONFIG 0x04 -#define AR91XX_PLL_REG_ETH0_INT_CLOCK 0x14 -#define AR91XX_PLL_REG_ETH1_INT_CLOCK 0x18 - -#define AR91XX_PLL_DIV_SHIFT 0 -#define AR91XX_PLL_DIV_MASK 0x3ff -#define AR91XX_DDR_DIV_SHIFT 22 -#define AR91XX_DDR_DIV_MASK 0x3 -#define AR91XX_AHB_DIV_SHIFT 19 -#define AR91XX_AHB_DIV_MASK 0x1 - -#define AR91XX_ETH0_PLL_SHIFT 20 -#define AR91XX_ETH1_PLL_SHIFT 22 - -// extern void __iomem *ar71xx_pll_base; - -// static inline void ar71xx_pll_wr(unsigned reg, u32 val) -// { - // __raw_writel(val, ar71xx_pll_base + reg); -// } - -// static inline u32 ar71xx_pll_rr(unsigned reg) -// { - // return __raw_readl(ar71xx_pll_base + reg); -// } - -/* - * USB_CONFIG block - */ -#define USB_CTRL_REG_FLADJ 0x00 -#define USB_CTRL_REG_CONFIG 0x04 - -// extern void __iomem *ar71xx_usb_ctrl_base; - -// static inline void ar71xx_usb_ctrl_wr(unsigned reg, u32 val) -// { - // __raw_writel(val, ar71xx_usb_ctrl_base + reg); -// } - -// static inline u32 ar71xx_usb_ctrl_rr(unsigned reg) -// { - // return __raw_readl(ar71xx_usb_ctrl_base + reg); -// } - -/* - * GPIO block - */ -#define GPIO_REG_OE 0x00 -#define GPIO_REG_IN 0x04 -#define GPIO_REG_OUT 0x08 -#define GPIO_REG_SET 0x0c -#define GPIO_REG_CLEAR 0x10 -#define GPIO_REG_INT_MODE 0x14 -#define GPIO_REG_INT_TYPE 0x18 -#define GPIO_REG_INT_POLARITY 0x1c -#define GPIO_REG_INT_PENDING 0x20 -#define GPIO_REG_INT_ENABLE 0x24 -#define GPIO_REG_FUNC 0x28 - -#define AR71XX_GPIO_FUNC_STEREO_EN BIT(17) -#define AR71XX_GPIO_FUNC_SLIC_EN BIT(16) -#define AR71XX_GPIO_FUNC_SPI_CS2_EN BIT(13) -#define AR71XX_GPIO_FUNC_SPI_CS1_EN BIT(12) -#define AR71XX_GPIO_FUNC_UART_EN BIT(8) -#define AR71XX_GPIO_FUNC_USB_OC_EN BIT(4) -#define AR71XX_GPIO_FUNC_USB_CLK_EN BIT(0) - -#define AR71XX_GPIO_COUNT 16 - -#define AR724X_GPIO_FUNC_GE0_MII_CLK_EN BIT(19) -#define AR724X_GPIO_FUNC_SPI_EN BIT(18) -#define AR724X_GPIO_FUNC_SPI_CS_EN2 BIT(14) -#define AR724X_GPIO_FUNC_SPI_CS_EN1 BIT(13) -#define AR724X_GPIO_FUNC_CLK_OBS5_EN BIT(12) -#define AR724X_GPIO_FUNC_CLK_OBS4_EN BIT(11) -#define AR724X_GPIO_FUNC_CLK_OBS3_EN BIT(10) -#define AR724X_GPIO_FUNC_CLK_OBS2_EN BIT(9) -#define AR724X_GPIO_FUNC_CLK_OBS1_EN BIT(8) -#define AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN BIT(7) -#define AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN BIT(6) -#define AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN BIT(5) -#define AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN BIT(4) -#define AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN BIT(3) -#define AR724X_GPIO_FUNC_UART_RTS_CTS_EN BIT(2) -#define AR724X_GPIO_FUNC_UART_EN BIT(1) -#define AR724X_GPIO_FUNC_JTAG_DISABLE BIT(0) - -#define AR724X_GPIO_COUNT 18 - -#define AR91XX_GPIO_FUNC_WMAC_LED_EN BIT(22) -#define AR91XX_GPIO_FUNC_EXP_PORT_CS_EN BIT(21) -#define AR91XX_GPIO_FUNC_I2S_REFCLKEN BIT(20) -#define AR91XX_GPIO_FUNC_I2S_MCKEN BIT(19) -#define AR91XX_GPIO_FUNC_I2S1_EN BIT(18) -#define AR91XX_GPIO_FUNC_I2S0_EN BIT(17) -#define AR91XX_GPIO_FUNC_SLIC_EN BIT(16) -#define AR91XX_GPIO_FUNC_UART_RTSCTS_EN BIT(9) -#define AR91XX_GPIO_FUNC_UART_EN BIT(8) -#define AR91XX_GPIO_FUNC_USB_CLK_EN BIT(4) - -#define AR91XX_GPIO_COUNT 22 - -// extern void __iomem *ar71xx_gpio_base; - -// static inline void ar71xx_gpio_wr(unsigned reg, u32 value) -// { - // __raw_writel(value, ar71xx_gpio_base + reg); -// } - -// static inline u32 ar71xx_gpio_rr(unsigned reg) -// { - // return __raw_readl(ar71xx_gpio_base + reg); -// } - -// void ar71xx_gpio_init(void) __init; -// void ar71xx_gpio_function_enable(u32 mask); -// void ar71xx_gpio_function_disable(u32 mask); -// void ar71xx_gpio_function_setup(u32 set, u32 clear); - -/* - * DDR_CTRL block - */ -#define AR71XX_DDR_REG_PCI_WIN0 0x7c -#define AR71XX_DDR_REG_PCI_WIN1 0x80 -#define AR71XX_DDR_REG_PCI_WIN2 0x84 -#define AR71XX_DDR_REG_PCI_WIN3 0x88 -#define AR71XX_DDR_REG_PCI_WIN4 0x8c -#define AR71XX_DDR_REG_PCI_WIN5 0x90 -#define AR71XX_DDR_REG_PCI_WIN6 0x94 -#define AR71XX_DDR_REG_PCI_WIN7 0x98 -#define AR71XX_DDR_REG_FLUSH_GE0 0x9c -#define AR71XX_DDR_REG_FLUSH_GE1 0xa0 -#define AR71XX_DDR_REG_FLUSH_USB 0xa4 -#define AR71XX_DDR_REG_FLUSH_PCI 0xa8 - -#define AR724X_DDR_REG_FLUSH_GE0 0x7c -#define AR724X_DDR_REG_FLUSH_GE1 0x80 -#define AR724X_DDR_REG_FLUSH_USB 0x84 -#define AR724X_DDR_REG_FLUSH_PCIE 0x88 - -#define AR91XX_DDR_REG_FLUSH_GE0 0x7c -#define AR91XX_DDR_REG_FLUSH_GE1 0x80 -#define AR91XX_DDR_REG_FLUSH_USB 0x84 -#define AR91XX_DDR_REG_FLUSH_WMAC 0x88 - -#define PCI_WIN0_OFFS 0x10000000 -#define PCI_WIN1_OFFS 0x11000000 -#define PCI_WIN2_OFFS 0x12000000 -#define PCI_WIN3_OFFS 0x13000000 -#define PCI_WIN4_OFFS 0x14000000 -#define PCI_WIN5_OFFS 0x15000000 -#define PCI_WIN6_OFFS 0x16000000 -#define PCI_WIN7_OFFS 0x07000000 - -// extern void __iomem *ar71xx_ddr_base; - -// static inline void ar71xx_ddr_wr(unsigned reg, u32 val) -// { - // __raw_writel(val, ar71xx_ddr_base + reg); -// } - -// static inline u32 ar71xx_ddr_rr(unsigned reg) -// { - // return __raw_readl(ar71xx_ddr_base + reg); -// } - -// void ar71xx_ddr_flush(u32 reg); - -/* - * PCI block - */ -#define AR71XX_PCI_CFG_BASE (AR71XX_PCI_MEM_BASE + PCI_WIN7_OFFS + 0x10000) -#define AR71XX_PCI_CFG_SIZE 0x100 - -#define PCI_REG_CRP_AD_CBE 0x00 -#define PCI_REG_CRP_WRDATA 0x04 -#define PCI_REG_CRP_RDDATA 0x08 -#define PCI_REG_CFG_AD 0x0c -#define PCI_REG_CFG_CBE 0x10 -#define PCI_REG_CFG_WRDATA 0x14 -#define PCI_REG_CFG_RDDATA 0x18 -#define PCI_REG_PCI_ERR 0x1c -#define PCI_REG_PCI_ERR_ADDR 0x20 -#define PCI_REG_AHB_ERR 0x24 -#define PCI_REG_AHB_ERR_ADDR 0x28 - -#define PCI_CRP_CMD_WRITE 0x00010000 -#define PCI_CRP_CMD_READ 0x00000000 -#define PCI_CFG_CMD_READ 0x0000000a -#define PCI_CFG_CMD_WRITE 0x0000000b - -#define PCI_IDSEL_ADL_START 17 - -#define AR724X_PCI_CFG_BASE (AR71XX_PCI_MEM_BASE + 0x4000000) -#define AR724X_PCI_CFG_SIZE 0x1000 - -#define AR724X_PCI_REG_APP 0x00 -#define AR724X_PCI_REG_RESET 0x18 -#define AR724X_PCI_REG_INT_STATUS 0x4c -#define AR724X_PCI_REG_INT_MASK 0x50 - -#define AR724X_PCI_APP_LTSSM_ENABLE BIT(0) -#define AR724X_PCI_RESET_LINK_UP BIT(0) - -#define AR724X_PCI_INT_DEV0 BIT(14) - -/* - * RESET block - */ -#define AR71XX_RESET_REG_TIMER 0x00 -#define AR71XX_RESET_REG_TIMER_RELOAD 0x04 -#define AR71XX_RESET_REG_WDOG_CTRL 0x08 -#define AR71XX_RESET_REG_WDOG 0x0c -#define AR71XX_RESET_REG_MISC_INT_STATUS 0x10 -#define AR71XX_RESET_REG_MISC_INT_ENABLE 0x14 -#define AR71XX_RESET_REG_PCI_INT_STATUS 0x18 -#define AR71XX_RESET_REG_PCI_INT_ENABLE 0x1c -#define AR71XX_RESET_REG_GLOBAL_INT_STATUS 0x20 -#define AR71XX_RESET_REG_RESET_MODULE 0x24 -#define AR71XX_RESET_REG_PERFC_CTRL 0x2c -#define AR71XX_RESET_REG_PERFC0 0x30 -#define AR71XX_RESET_REG_PERFC1 0x34 -#define AR71XX_RESET_REG_REV_ID 0x90 - -#define AR91XX_RESET_REG_GLOBAL_INT_STATUS 0x18 -#define AR91XX_RESET_REG_RESET_MODULE 0x1c -#define AR91XX_RESET_REG_PERF_CTRL 0x20 -#define AR91XX_RESET_REG_PERFC0 0x24 -#define AR91XX_RESET_REG_PERFC1 0x28 - -#define AR724X_RESET_REG_RESET_MODULE 0x1c - -#define WDOG_CTRL_LAST_RESET BIT(31) -#define WDOG_CTRL_ACTION_MASK 3 -#define WDOG_CTRL_ACTION_NONE 0 /* no action */ -#define WDOG_CTRL_ACTION_GPI 1 /* general purpose interrupt */ -#define WDOG_CTRL_ACTION_NMI 2 /* NMI */ -#define WDOG_CTRL_ACTION_FCR 3 /* full chip reset */ - -#define MISC_INT_DMA BIT(7) -#define MISC_INT_OHCI BIT(6) -#define MISC_INT_PERFC BIT(5) -#define MISC_INT_WDOG BIT(4) -#define MISC_INT_UART BIT(3) -#define MISC_INT_GPIO BIT(2) -#define MISC_INT_ERROR BIT(1) -#define MISC_INT_TIMER BIT(0) - -#define PCI_INT_CORE BIT(4) -#define PCI_INT_DEV2 BIT(2) -#define PCI_INT_DEV1 BIT(1) -#define PCI_INT_DEV0 BIT(0) - -#define RESET_MODULE_EXTERNAL BIT(28) -#define RESET_MODULE_FULL_CHIP BIT(24) -#define RESET_MODULE_AMBA2WMAC BIT(22) -#define RESET_MODULE_CPU_NMI BIT(21) -#define RESET_MODULE_CPU_COLD BIT(20) -#define RESET_MODULE_DMA BIT(19) -#define RESET_MODULE_SLIC BIT(18) -#define RESET_MODULE_STEREO BIT(17) -#define RESET_MODULE_DDR BIT(16) -#define RESET_MODULE_GE1_MAC BIT(13) -#define RESET_MODULE_GE1_PHY BIT(12) -#define RESET_MODULE_USBSUS_OVERRIDE BIT(10) -#define RESET_MODULE_GE0_MAC BIT(9) -#define RESET_MODULE_GE0_PHY BIT(8) -#define RESET_MODULE_USB_OHCI_DLL BIT(6) -#define RESET_MODULE_USB_HOST BIT(5) -#define RESET_MODULE_USB_PHY BIT(4) -#define RESET_MODULE_USB_OHCI_DLL_7240 BIT(3) -#define RESET_MODULE_PCI_BUS BIT(1) -#define RESET_MODULE_PCI_CORE BIT(0) - -#define AR724X_RESET_GE1_MDIO BIT(23) -#define AR724X_RESET_GE0_MDIO BIT(22) -#define AR724X_RESET_PCIE_PHY_SERIAL BIT(10) -#define AR724X_RESET_PCIE_PHY BIT(7) -#define AR724X_RESET_PCIE BIT(6) - -#define REV_ID_MAJOR_MASK 0xfff0 -#define REV_ID_MAJOR_AR71XX 0x00a0 -#define REV_ID_MAJOR_AR913X 0x00b0 -#define REV_ID_MAJOR_AR7240 0x00c0 -#define REV_ID_MAJOR_AR7241 0x0100 -#define REV_ID_MAJOR_AR7242 0x1100 - -#define AR71XX_REV_ID_MINOR_MASK 0x3 -#define AR71XX_REV_ID_MINOR_AR7130 0x0 -#define AR71XX_REV_ID_MINOR_AR7141 0x1 -#define AR71XX_REV_ID_MINOR_AR7161 0x2 -#define AR71XX_REV_ID_REVISION_MASK 0x3 -#define AR71XX_REV_ID_REVISION_SHIFT 2 - -#define AR91XX_REV_ID_MINOR_MASK 0x3 -#define AR91XX_REV_ID_MINOR_AR9130 0x0 -#define AR91XX_REV_ID_MINOR_AR9132 0x1 -#define AR91XX_REV_ID_REVISION_MASK 0x3 -#define AR91XX_REV_ID_REVISION_SHIFT 2 - -#define AR724X_REV_ID_REVISION_MASK 0x3 - -// extern void __iomem *ar71xx_reset_base; - -static inline void ar71xx_reset_wr(unsigned reg, u32 val) -{ - __raw_writel(val, KSEG1ADDR(AR71XX_RESET_BASE) + reg); -} - -static inline u32 ar71xx_reset_rr(unsigned reg) -{ - return __raw_readl(KSEG1ADDR(AR71XX_RESET_BASE) + reg); -} - -// void ar71xx_device_stop(u32 mask); -// void ar71xx_device_start(u32 mask); -// int ar71xx_device_stopped(u32 mask); - -/* - * SPI block - */ -#define SPI_REG_FS 0x00 /* Function Select */ -#define SPI_REG_CTRL 0x04 /* SPI Control */ -#define SPI_REG_IOC 0x08 /* SPI I/O Control */ -#define SPI_REG_RDS 0x0c /* Read Data Shift */ - -#define SPI_FS_GPIO BIT(0) /* Enable GPIO mode */ - -#define SPI_CTRL_RD BIT(6) /* Remap Disable */ -#define SPI_CTRL_DIV_MASK 0x3f - -#define SPI_IOC_DO BIT(0) /* Data Out pin */ -#define SPI_IOC_CLK BIT(8) /* CLK pin */ -#define SPI_IOC_CS(n) BIT(16 + (n)) -#define SPI_IOC_CS0 SPI_IOC_CS(0) -#define SPI_IOC_CS1 SPI_IOC_CS(1) -#define SPI_IOC_CS2 SPI_IOC_CS(2) -#define SPI_IOC_CS_ALL (SPI_IOC_CS0 | SPI_IOC_CS1 | SPI_IOC_CS2) - -// void ar71xx_flash_acquire(void); -// void ar71xx_flash_release(void); - -/* - * MII_CTRL block - */ -#define MII_REG_MII0_CTRL 0x00 -#define MII_REG_MII1_CTRL 0x04 - -#define MII0_CTRL_IF_GMII 0 -#define MII0_CTRL_IF_MII 1 -#define MII0_CTRL_IF_RGMII 2 -#define MII0_CTRL_IF_RMII 3 - -#define MII1_CTRL_IF_RGMII 0 -#define MII1_CTRL_IF_RMII 1 - -#endif /* __ASSEMBLER__ */ - -#endif /* __ASM_MACH_AR71XX_H */ diff --git a/package/boot/uboot-ar71xx/files/include/asm-mips/ar71xx_gpio.h b/package/boot/uboot-ar71xx/files/include/asm-mips/ar71xx_gpio.h deleted file mode 100644 index c92364b881..0000000000 --- a/package/boot/uboot-ar71xx/files/include/asm-mips/ar71xx_gpio.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * (C) Copyright 2010 - * Michael Kurz . - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#ifndef _AR71XX_GPIO_H -#define _AR71XX_GPIO_H - -#include -#include - -static inline void ar71xx_setpin(uint8_t pin, uint8_t state) -{ - uint32_t reg = readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OUT)); - - if (state != 0) { - reg |= (1 << pin); - } else { - reg &= ~(1 << pin); - } - - writel(reg, KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OUT)); - readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OUT)); -} - -static inline uint32_t ar71xx_getpin(uint8_t pin) -{ - uint32_t reg = readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_IN)); - return (((reg & (1 << pin)) != 0) ? 1 : 0); -} - -static inline void ar71xx_setpindir(uint8_t pin, uint8_t direction) -{ - uint32_t reg = readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OE)); - - if (direction != 0) { - reg |= (1 << pin); - } else { - reg &= ~(1 << pin); - } - - writel(reg, KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OE)); - readl(KSEG1ADDR(AR71XX_GPIO_BASE + GPIO_REG_OE)); -} - - -#endif /* AR71XX_GPIO_H */ diff --git a/package/boot/uboot-ar71xx/files/include/configs/nbg460n.h b/package/boot/uboot-ar71xx/files/include/configs/nbg460n.h deleted file mode 100644 index dd9b4c38af..0000000000 --- a/package/boot/uboot-ar71xx/files/include/configs/nbg460n.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * (C) Copyright 2010 - * Michael Kurz . - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -/* This file contains the configuration parameters for the zyxel nbg460n board. */ - -#ifndef _NBG460N_CONFIG_H -#define _NBG460N_CONFIG_H - -#define CONFIG_MIPS32 1 /* MIPS32 CPU core */ -#define CONFIG_AR71XX 1 -#define CONFIG_AR91XX 1 -#define CONFIG_SYS_HZ 1000 -#define CONFIG_SYS_MIPS_TIMER_FREQ (400000000/2) - -/* Cache Configuration */ -#define CONFIG_SYS_DCACHE_SIZE 32768 -#define CONFIG_SYS_ICACHE_SIZE 65536 -#define CONFIG_SYS_CACHELINE_SIZE 32 -/* Cache lock for stack */ -#define CONFIG_SYS_INIT_SP_OFFSET 0x1000 - -#define CONFIG_SYS_MONITOR_BASE (TEXT_BASE) - -#define CONFIG_BAUDRATE 115200 -#define CONFIG_SYS_BAUDRATE_TABLE {115200} - -#define CONFIG_MISC_INIT_R - -/* SPI-Flash support */ -#define CONFIG_SPI_FLASH -#define CONFIG_AR71XX_SPI -#define CONFIG_SPI_FLASH_MACRONIX -#define CONFIG_SF_DEFAULT_HZ 25000000 - -#define CONFIG_ENV_SPI_MAX_HZ 25000000 -#define CONFIG_ENV_SPI_BUS 0 -#define CONFIG_ENV_SPI_CS 0 - -#define CONFIG_ENV_IS_IN_SPI_FLASH -#define CONFIG_ENV_ADDR 0xbfc20000 -#define CONFIG_ENV_OFFSET 0x20000 -#define CONFIG_ENV_SIZE 0x01000 -#define CONFIG_ENV_SECT_SIZE 0x10000 -#define CONFIG_SYS_MAX_FLASH_BANKS 1 -#define CONFIG_SYS_MAX_FLASH_SECT 64 -#define CONFIG_SYS_FLASH_BASE 0xbfc00000 - -/* Net support */ -#define CONFIG_ETHADDR_ADDR 0xbfc0fff8 -#define CONFIG_SYS_RX_ETH_BUFFER 16 -#define CONFIG_AG71XX -#define CONFIG_AG71XX_PORTS { 1, 1 } -#define CONFIG_AG71XX_MII0_IIF MII0_CTRL_IF_RGMII -#define CONFIG_AG71XX_MII1_IIF MII1_CTRL_IF_RGMII -#define CONFIG_NET_MULTI -#define CONFIG_IPADDR 192.168.1.254 -#define CONFIG_SERVERIP 192.168.1.42 - -/* Switch support */ -#define CONFIG_MII -#define CONFIG_RTL8366_MII -#define RTL8366_PIN_SDA 16 -#define RTL8366_PIN_SCK 18 -#define MII_GPIOINCLUDE -#define MII_SETSDA(x) ar71xx_setpin(RTL8366_PIN_SDA, x) -#define MII_GETSDA ar71xx_getpin(RTL8366_PIN_SDA) -#define MII_SETSCK(x) ar71xx_setpin(RTL8366_PIN_SCK, x) -#define MII_SDAINPUT ar71xx_setpindir(RTL8366_PIN_SDA, 0) -#define MII_SDAOUTPUT ar71xx_setpindir(RTL8366_PIN_SDA, 1) -#define MII_SCKINPUT ar71xx_setpindir(RTL8366_PIN_SCK, 0) -#define MII_SCKOUTPUT ar71xx_setpindir(RTL8366_PIN_SCK, 1) - -#define CONFIG_BOOTDELAY 3 -#define CONFIG_BOOTARGS "console=ttyS0,115200 rootfstype==squashfs,jffs2 noinitrd machtype=NBG460N" -#define CONFIG_BOOTCOMMAND "bootm 0xbfc70000" -#define CONFIG_LZMA - - -/* Commands */ -#define CONFIG_SYS_NO_FLASH -#include -#undef CONFIG_CMD_BDI -#undef CONFIG_CMD_FPGA -#undef CONFIG_CMD_IMI -#undef CONFIG_CMD_IMLS -#undef CONFIG_CMD_LOADS -#define CONFIG_CMD_SF -#define CONFIG_CMD_MII -#define CONFIG_CMD_PING -#define CONFIG_CMD_DHCP -#define CONFIG_CMD_SPI - -/* Miscellaneous configurable options */ -#define CONFIG_SYS_PROMPT "U-Boot> " -#define CONFIG_SYS_CBSIZE 256 -#define CONFIG_SYS_MAXARGS 16 -#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16) -#define CONFIG_SYS_LONGHELP 1 -#define CONFIG_CMDLINE_EDITING 1 -#define CONFIG_AUTO_COMPLETE -#define CONFIG_SYS_HUSH_PARSER -#define CONFIG_SYS_PROMPT_HUSH_PS2 "> " - -/* Size of malloc() pool */ -#define CONFIG_SYS_MALLOC_LEN ROUND(3 * 0x10000 + 128*1024, 0x1000) -#define CONFIG_SYS_GBL_DATA_SIZE 128 /* 128 bytes for initial data */ - -#define CONFIG_SYS_BOOTPARAMS_LEN 128*1024 - -#define CONFIG_SYS_SDRAM_BASE 0x80000000 /* Cached addr */ -#define CONFIG_SYS_LOAD_ADDR 0x80060000 /* default load address */ - -#define CONFIG_SYS_MEMTEST_START 0x80000800 -#define CONFIG_SYS_MEMTEST_END 0x81E00000 - -#endif /* _NBG460N_CONFIG_H */ diff --git a/package/boot/uboot-ar71xx/patches/0001-upstream-Reproducible-U-Boot-build-support-using-SOURCE_DATE_.patch b/package/boot/uboot-ar71xx/patches/0001-upstream-Reproducible-U-Boot-build-support-using-SOURCE_DATE_.patch deleted file mode 100644 index 331c1c3662..0000000000 --- a/package/boot/uboot-ar71xx/patches/0001-upstream-Reproducible-U-Boot-build-support-using-SOURCE_DATE_.patch +++ /dev/null @@ -1,82 +0,0 @@ -From f3f431a712729a1af94d01bd1bfde17a252ff02c Mon Sep 17 00:00:00 2001 -From: Paul Kocialkowski -Date: Sun, 26 Jul 2015 18:48:15 +0200 -Subject: [PATCH] Reproducible U-Boot build support, using SOURCE_DATE_EPOCH - -In order to achieve reproducible builds in U-Boot, timestamps that are defined -at build-time have to be somewhat eliminated. The SOURCE_DATE_EPOCH environment -variable allows setting a fixed value for those timestamps. - -Simply by setting SOURCE_DATE_EPOCH to a fixed value, a number of targets can be -built reproducibly. This is the case for e.g. sunxi devices. - -However, some other devices might need some more tweaks, especially regarding -the image generation tools. - -Signed-off-by: Paul Kocialkowski ---- - Makefile | 7 ++++--- - README | 12 ++++++++++++ - tools/default_image.c | 21 ++++++++++++++++++++- - 3 files changed, 36 insertions(+), 4 deletions(-) - ---- a/README -+++ b/README -@@ -2785,6 +2785,18 @@ Low Level (hardware related) configurati - that is executed before the actual U-Boot. E.g. when - compiling a NAND SPL. - -+Reproducible builds -+------------------- -+ -+In order to achieve reproducible builds, timestamps used in the U-Boot build -+process have to be set to a fixed value. -+ -+This is done using the SOURCE_DATE_EPOCH environment variable. -+SOURCE_DATE_EPOCH is to be set on the build host's shell, not as a configuration -+option for U-Boot or an environment variable in U-Boot. -+ -+SOURCE_DATE_EPOCH should be set to a number of seconds since the epoch, in UTC. -+ - Building the Software: - ====================== - ---- a/tools/default_image.c -+++ b/tools/default_image.c -@@ -101,6 +101,9 @@ static void image_set_header (void *ptr, - struct mkimage_params *params) - { - uint32_t checksum; -+ char *source_date_epoch; -+ struct tm *time_universal; -+ time_t time; - - image_header_t * hdr = (image_header_t *)ptr; - -@@ -109,9 +112,25 @@ static void image_set_header (void *ptr, - sizeof(image_header_t)), - sbuf->st_size - sizeof(image_header_t)); - -+source_date_epoch = getenv("SOURCE_DATE_EPOCH"); -+ if (source_date_epoch != NULL) { -+ time = (time_t) strtol(source_date_epoch, NULL, 10); -+ -+ time_universal = gmtime(&time); -+ if (time_universal == NULL) { -+ fprintf(stderr, "%s: SOURCE_DATE_EPOCH is not valid\n", -+ __func__); -+ time = 0; -+ } else { -+ time = mktime(time_universal); -+ } -+ } else { -+ time = sbuf->st_mtime; -+ } -+ - /* Build new header */ - image_set_magic (hdr, IH_MAGIC); -- image_set_time (hdr, sbuf->st_mtime); -+ image_set_time(hdr, time); - image_set_size (hdr, sbuf->st_size - sizeof(image_header_t)); - image_set_load (hdr, params->addr); - image_set_ep (hdr, params->ep); diff --git a/package/boot/uboot-ar71xx/patches/0002-upstream-Makefile-Reproducible-U-Boot-build-support.patch b/package/boot/uboot-ar71xx/patches/0002-upstream-Makefile-Reproducible-U-Boot-build-support.patch deleted file mode 100644 index 664a4adb66..0000000000 --- a/package/boot/uboot-ar71xx/patches/0002-upstream-Makefile-Reproducible-U-Boot-build-support.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- a/Makefile -+++ b/Makefile -@@ -389,8 +389,26 @@ $(VERSION_FILE): - @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@ - - $(TIMESTAMP_FILE): -- @date +'#define U_BOOT_DATE "%b %d %C%y"' > $@ -- @date +'#define U_BOOT_TIME "%T"' >> $@ -+ (if test -n "$${SOURCE_DATE_EPOCH}"; then \ -+ SOURCE_DATE="@$${SOURCE_DATE_EPOCH}"; \ -+ DATE=""; \ -+ for date in gdate date.gnu date; do \ -+ $${date} -u -d "$${SOURCE_DATE}" >/dev/null 2>&1 && DATE="$${date}"; \ -+ done; \ -+ if test -n "$${DATE}"; then \ -+ LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DATE "%b %d %C%y"' > $@; \ -+ LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"' >> $@; \ -+ LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"' >> $@; \ -+ LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DMI_DATE "%m/%d/%Y"' >> $@; \ -+ else \ -+ return 42; \ -+ fi; \ -+ else \ -+ LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ -+ LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \ -+ LC_ALL=C date +'#define U_BOOT_TZ "%z"'; \ -+ LC_ALL=C date +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \ -+ fi) - - gdbtools: - $(MAKE) -C tools/gdb all || exit 1 diff --git a/package/boot/uboot-ar71xx/patches/001-ar71xx.patch b/package/boot/uboot-ar71xx/patches/001-ar71xx.patch deleted file mode 100644 index e862df21e3..0000000000 --- a/package/boot/uboot-ar71xx/patches/001-ar71xx.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- a/cpu/mips/Makefile -+++ b/cpu/mips/Makefile -@@ -33,6 +33,7 @@ SOBJS-$(CONFIG_INCA_IP) += incaip_wdt.o - COBJS-$(CONFIG_INCA_IP) += asc_serial.o incaip_clock.o - COBJS-$(CONFIG_PURPLE) += asc_serial.o - COBJS-$(CONFIG_SOC_AU1X00) += au1x00_eth.o au1x00_serial.o au1x00_usb_ohci.o -+COBJS-$(CONFIG_AR71XX) += ar71xx_serial.o - - SRCS := $(START:.o=.S) $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) - OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y)) ---- a/Makefile -+++ b/Makefile -@@ -3474,6 +3474,13 @@ qemu_mips_config : unconfig - @$(MKCONFIG) -a qemu-mips mips mips qemu-mips - - ######################################################################### -+## MIPS32 AR71XX (24K) -+######################################################################### -+ -+nbg460n_550n_550nh_config : unconfig -+ @$(MKCONFIG) -a nbg460n mips mips nbg460n zyxel -+ -+######################################################################### - ## MIPS64 5Kc - ######################################################################### - diff --git a/package/boot/uboot-ar71xx/patches/002-ar71xx-spi.patch b/package/boot/uboot-ar71xx/patches/002-ar71xx-spi.patch deleted file mode 100644 index 2bb1ba2216..0000000000 --- a/package/boot/uboot-ar71xx/patches/002-ar71xx-spi.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -ur u-boot-2010.03/drivers/spi/Makefile u-boot-nbg/drivers/spi/Makefile ---- u-boot-2010.03/drivers/spi/Makefile 2010-03-31 23:54:39.000000000 +0200 -+++ u-boot-nbg/drivers/spi/Makefile 2010-04-15 19:31:27.000000000 +0200 -@@ -25,6 +25,7 @@ - - LIB := $(obj)libspi.a - -+COBJS-$(CONFIG_AR71XX_SPI) += ar71xx_spi.o - COBJS-$(CONFIG_ATMEL_DATAFLASH_SPI) += atmel_dataflash_spi.o - COBJS-$(CONFIG_ATMEL_SPI) += atmel_spi.o - COBJS-$(CONFIG_BFIN_SPI) += bfin_spi.o diff --git a/package/boot/uboot-ar71xx/patches/010-enet-ag71xx.patch b/package/boot/uboot-ar71xx/patches/010-enet-ag71xx.patch deleted file mode 100644 index ee90e32c7a..0000000000 --- a/package/boot/uboot-ar71xx/patches/010-enet-ag71xx.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -ur u-boot-2010.03/drivers/net/Makefile u-boot-nbg/drivers/net/Makefile ---- u-boot-2010.03/drivers/net/Makefile 2010-03-31 23:54:39.000000000 +0200 -+++ u-boot-nbg/drivers/net/Makefile 2010-04-19 23:30:01.000000000 +0200 -@@ -27,6 +27,7 @@ - - COBJS-$(CONFIG_DRIVER_3C589) += 3c589.o - COBJS-$(CONFIG_PPC4xx_EMAC) += 4xx_enet.o -+COBJS-$(CONFIG_AG71XX) += ag71xx.o - COBJS-$(CONFIG_DRIVER_AT91EMAC) += at91_emac.o - COBJS-$(CONFIG_DRIVER_AX88180) += ax88180.o - COBJS-$(CONFIG_BCM570x) += bcm570x.o bcm570x_autoneg.o 5701rls.o -diff -ur u-boot-2010.03/include/netdev.h u-boot-nbg/include/netdev.h ---- u-boot-2010.03/include/netdev.h 2010-03-31 23:54:39.000000000 +0200 -+++ u-boot-nbg/include/netdev.h 2010-05-02 11:30:58.000000000 +0200 -@@ -42,6 +42,7 @@ - - /* Driver initialization prototypes */ - int au1x00_enet_initialize(bd_t*); -+int ag71xx_register(bd_t * bis, char *phyname[], u16 phyid[], u16 phyfixed[]); - int at91emac_register(bd_t *bis, unsigned long iobase); - int bfin_EMAC_initialize(bd_t *bis); - int cs8900_initialize(u8 dev_num, int base_addr); diff --git a/package/boot/uboot-ar71xx/patches/011-switch-rtl8366sr.patch b/package/boot/uboot-ar71xx/patches/011-switch-rtl8366sr.patch deleted file mode 100644 index 5d2ba41eae..0000000000 --- a/package/boot/uboot-ar71xx/patches/011-switch-rtl8366sr.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -ur u-boot-2010.03/drivers/net/Makefile u-boot-nbg/drivers/net/Makefile ---- u-boot-2010.03/drivers/net/Makefile 2010-03-31 23:54:39.000000000 +0200 -+++ u-boot-nbg/drivers/net/Makefile 2010-04-19 23:30:01.000000000 +0200 -@@ -65,6 +65,7 @@ - COBJS-$(CONFIG_DRIVER_RTL8019) += rtl8019.o - COBJS-$(CONFIG_RTL8139) += rtl8139.o - COBJS-$(CONFIG_RTL8169) += rtl8169.o -+COBJS-$(CONFIG_RTL8366_MII) += phy/rtl8366_mii.o - COBJS-$(CONFIG_DRIVER_S3C4510_ETH) += s3c4510b_eth.o - COBJS-$(CONFIG_SH_ETHER) += sh_eth.o - COBJS-$(CONFIG_SMC91111) += smc91111.o -diff -ur u-boot-2010.03/include/netdev.h u-boot-nbg/include/netdev.h ---- u-boot-2010.03/include/netdev.h 2010-03-31 23:54:39.000000000 +0200 -+++ u-boot-nbg/include/netdev.h 2010-05-02 11:30:58.000000000 +0200 -@@ -175,5 +175,13 @@ - - int mv88e61xx_switch_initialize(struct mv88e61xx_config *swconfig); - #endif /* CONFIG_MV88E61XX_SWITCH */ -+ -+#if defined(CONFIG_RTL8366_MII) -+#define RTL8366_DEVNAME "rtl8366" -+#define RTL8366_WANPHY_ID 4 -+#define RTL8366_LANPHY_ID -1 -+int rtl8366_mii_register(bd_t *bis); -+int rtl8366s_initialize(void); -+#endif - - #endif /* _NETDEV_H_ */ diff --git a/package/boot/uboot-ar71xx/patches/020-freebsd-compat.patch b/package/boot/uboot-ar71xx/patches/020-freebsd-compat.patch deleted file mode 100644 index fee06699c9..0000000000 --- a/package/boot/uboot-ar71xx/patches/020-freebsd-compat.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/include/compiler.h -+++ b/include/compiler.h -@@ -46,7 +46,7 @@ extern int errno; - #ifdef __linux__ - # include - # include --#elif defined(__MACH__) -+#elif defined(__MACH__) || defined(__FreeBSD__) - # include - typedef unsigned long ulong; - typedef unsigned int uint; diff --git a/package/boot/uboot-ar71xx/patches/021-darwin_compat.patch b/package/boot/uboot-ar71xx/patches/021-darwin_compat.patch deleted file mode 100644 index dde83d4905..0000000000 --- a/package/boot/uboot-ar71xx/patches/021-darwin_compat.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- a/config.mk -+++ b/config.mk -@@ -64,9 +64,17 @@ HOSTSTRIP = strip - # - - ifeq ($(HOSTOS),darwin) --HOSTCC = cc --HOSTCFLAGS += -traditional-cpp --HOSTLDFLAGS += -multiply_defined suppress -+#get the major and minor product version (e.g. '10' and '6' for Snow Leopard) -+DARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.') -+DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.') -+ -+before-snow-leopard = $(shell if [ $(DARWIN_MAJOR_VERSION) -le 10 -a \ -+ $(DARWIN_MINOR_VERSION) -le 5 ] ; then echo "$(1)"; else echo "$(2)"; fi ;) -+ -+# Snow Leopards build environment has no longer restrictions as described above -+HOSTCC = $(call before-snow-leopard, "cc", "gcc") -+HOSTCFLAGS += $(call before-snow-leopard, "-traditional-cpp") -+HOSTLDFLAGS += $(call before-snow-leopard, "-multiply_defined suppress") - else - HOSTCC = gcc - endif diff --git a/package/boot/uboot-ar71xx/patches/022-getline_backport.patch b/package/boot/uboot-ar71xx/patches/022-getline_backport.patch deleted file mode 100644 index 2ce2b614bf..0000000000 --- a/package/boot/uboot-ar71xx/patches/022-getline_backport.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/tools/os_support.c -+++ b/tools/os_support.c -@@ -23,6 +23,6 @@ - #ifdef __MINGW32__ - #include "mingw_support.c" - #endif --#ifdef __APPLE__ -+#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L - #include "getline.c" - #endif ---- a/tools/os_support.h -+++ b/tools/os_support.h -@@ -28,7 +28,7 @@ - #include "mingw_support.h" - #endif - --#ifdef __APPLE__ -+#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L - #include "getline.h" - #endif - diff --git a/package/boot/uboot-ar71xx/patches/030-no_examples.patch b/package/boot/uboot-ar71xx/patches/030-no_examples.patch deleted file mode 100644 index 65e1289042..0000000000 --- a/package/boot/uboot-ar71xx/patches/030-no_examples.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/Makefile -+++ b/Makefile -@@ -139,9 +139,7 @@ endif - - # The "tools" are needed early, so put this first - # Don't include stuff already done in $(LIBS) --SUBDIRS = tools \ -- examples/standalone \ -- examples/api -+SUBDIRS = tools - - .PHONY : $(SUBDIRS) - diff --git a/package/boot/uboot-ar71xx/patches/040-no_extern_inline.patch b/package/boot/uboot-ar71xx/patches/040-no_extern_inline.patch deleted file mode 100644 index 5c01691380..0000000000 --- a/package/boot/uboot-ar71xx/patches/040-no_extern_inline.patch +++ /dev/null @@ -1,112 +0,0 @@ ---- a/include/asm-mips/io.h -+++ b/include/asm-mips/io.h -@@ -118,12 +118,12 @@ static inline void set_io_port_base(unsi - * Change virtual addresses to physical addresses and vv. - * These are trivial on the 1:1 Linux/MIPS mapping - */ --extern inline phys_addr_t virt_to_phys(volatile void * address) -+static inline phys_addr_t virt_to_phys(volatile void * address) - { - return CPHYSADDR(address); - } - --extern inline void * phys_to_virt(unsigned long address) -+static inline void * phys_to_virt(unsigned long address) - { - return (void *)KSEG0ADDR(address); - } -@@ -131,12 +131,12 @@ extern inline void * phys_to_virt(unsign - /* - * IO bus memory addresses are also 1:1 with the physical address - */ --extern inline unsigned long virt_to_bus(volatile void * address) -+static inline unsigned long virt_to_bus(volatile void * address) - { - return CPHYSADDR(address); - } - --extern inline void * bus_to_virt(unsigned long address) -+static inline void * bus_to_virt(unsigned long address) - { - return (void *)KSEG0ADDR(address); - } -@@ -150,12 +150,12 @@ extern unsigned long isa_slot_offset; - extern void * __ioremap(unsigned long offset, unsigned long size, unsigned long flags); - - #if 0 --extern inline void *ioremap(unsigned long offset, unsigned long size) -+static inline void *ioremap(unsigned long offset, unsigned long size) - { - return __ioremap(offset, size, _CACHE_UNCACHED); - } - --extern inline void *ioremap_nocache(unsigned long offset, unsigned long size) -+static inline void *ioremap_nocache(unsigned long offset, unsigned long size) - { - return __ioremap(offset, size, _CACHE_UNCACHED); - } -@@ -238,7 +238,7 @@ out: - */ - - #define __OUT1(s) \ --extern inline void __out##s(unsigned int value, unsigned int port) { -+static inline void __out##s(unsigned int value, unsigned int port) { - - #define __OUT2(m) \ - __asm__ __volatile__ ("s" #m "\t%0,%1(%2)" -@@ -252,7 +252,7 @@ __OUT1(s##c_p) __OUT2(m) : : "r" (__iosw - SLOW_DOWN_IO; } - - #define __IN1(t,s) \ --extern __inline__ t __in##s(unsigned int port) { t _v; -+static inline t __in##s(unsigned int port) { t _v; - - /* - * Required nops will be inserted by the assembler -@@ -267,7 +267,7 @@ __IN1(t,s##_p) __IN2(m) : "=r" (_v) : "i - __IN1(t,s##c_p) __IN2(m) : "=r" (_v) : "ir" (port), "r" (mips_io_port_base)); SLOW_DOWN_IO; return __ioswab##w(_v); } - - #define __INS1(s) \ --extern inline void __ins##s(unsigned int port, void * addr, unsigned long count) { -+static inline void __ins##s(unsigned int port, void * addr, unsigned long count) { - - #define __INS2(m) \ - if (count) \ -@@ -295,7 +295,7 @@ __INS1(s##c) __INS2(m) \ - : "$1");} - - #define __OUTS1(s) \ --extern inline void __outs##s(unsigned int port, const void * addr, unsigned long count) { -+static inline void __outs##s(unsigned int port, const void * addr, unsigned long count) { - - #define __OUTS2(m) \ - if (count) \ ---- a/include/asm-mips/system.h -+++ b/include/asm-mips/system.h -@@ -23,7 +23,7 @@ - #include - #endif - --extern __inline__ void -+static inline void - __sti(void) - { - __asm__ __volatile__( -@@ -47,7 +47,7 @@ __sti(void) - * R4000/R4400 need three nops, the R4600 two nops and the R10000 needs - * no nops at all. - */ --extern __inline__ void -+static inline void - __cli(void) - { - __asm__ __volatile__( -@@ -208,7 +208,7 @@ do { \ - * For 32 and 64 bit operands we can take advantage of ll and sc. - * FIXME: This doesn't work for R3000 machines. - */ --extern __inline__ unsigned long xchg_u32(volatile int * m, unsigned long val) -+static inline unsigned long xchg_u32(volatile int * m, unsigned long val) - { - #ifdef CONFIG_CPU_HAS_LLSC - unsigned long dummy; diff --git a/package/boot/uboot-ar71xx/patches/041-no_weak_alias.patch b/package/boot/uboot-ar71xx/patches/041-no_weak_alias.patch deleted file mode 100644 index b6f18edff3..0000000000 --- a/package/boot/uboot-ar71xx/patches/041-no_weak_alias.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/common/main.c -+++ b/common/main.c -@@ -47,8 +47,7 @@ DECLARE_GLOBAL_DATA_PTR; - /* - * Board-specific Platform code can reimplement show_boot_progress () if needed - */ --void inline __show_boot_progress (int val) {} --void show_boot_progress (int val) __attribute__((weak, alias("__show_boot_progress"))); -+void __attribute__((weak)) show_boot_progress(int val) {} - - #if defined(CONFIG_BOOT_RETRY_TIME) && defined(CONFIG_RESET_TO_RETRY) - extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); /* for do_reset() prototype */ diff --git a/package/boot/uboot-envtools/Config.in b/package/boot/uboot-envtools/Config.in deleted file mode 100644 index 8f0078f053..0000000000 --- a/package/boot/uboot-envtools/Config.in +++ /dev/null @@ -1,9 +0,0 @@ -config UBOOT_ENVTOOLS_UBI - bool "Support environment in UBI volume" - depends on PACKAGE_uboot-envtools - default TARGET_oxnas - help - Add support for reading and writing U-Boot environment - stored in UBI volume(s). - - Increases binary size by about 8 kB diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile index 55319f0b8e..2f8dd0ae64 100644 --- a/package/boot/uboot-envtools/Makefile +++ b/package/boot/uboot-envtools/Makefile @@ -9,17 +9,18 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uboot-envtools PKG_DISTNAME:=u-boot -PKG_VERSION:=2015.10-librecmc +PKG_VERSION:=2018.03 PKG_RELEASE:=1 -PKG_BUILD_DIR:=$(BUILD_DIR)/u-boot-$(PKG_VERSION) -PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=\ - https://librecmc.org/librecmc/downloads/sources/v1.4/ +PKG_SOURCE_PROTO:=git +PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_SUBDIR:=$(PKG_DISTNAME)-$(PKG_VERSION) +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_DISTNAME)-$(PKG_VERSION) +PKG_SOURCE_URL:=https://git.denx.de/u-boot.git +PKG_SOURCE_VERSION:=f95ab1fb6e37f0601f397091bb011edf7a98b890 +PKG_MIRROR_HASH:=b50d8b6fe0d90b92c8c147457b1b4c2ed1cdb03191085cfc57fdad77c0bfffab -PKG_HASH:=35aa6ad931c9474578ae01c7b565753d9d28059bc4d5444eea923840342f1e86 - -PKG_BUILD_DEPENDS:=+fstools +PKG_BUILD_DEPENDS:=fstools PKG_LICENSE:=GPL-2.0 GPL-2.0+ PKG_LICENSE_FILES:=Licenses/README @@ -42,13 +43,10 @@ define Package/uboot-envtools/description This package includes tools to read and modify U-Boot bootloader environment. endef -define Package/uboot-envtools/config - source "$(SOURCE)/Config.in" -endef - define Build/Configure - touch $(PKG_BUILD_DIR)/include/config.mk touch $(PKG_BUILD_DIR)/include/config.h + mkdir -p $(PKG_BUILD_DIR)/include/config + touch $(PKG_BUILD_DIR)/include/config/auto.conf mkdir -p $(PKG_BUILD_DIR)/include/generated touch $(PKG_BUILD_DIR)/include/generated/autoconf.h endef @@ -59,10 +57,9 @@ define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) \ CROSS_COMPILE="$(TARGET_CROSS)" \ TARGET_CFLAGS="$(TARGET_CFLAGS)" \ - UBI="$(CONFIG_UBOOT_ENVTOOLS_UBI)" \ - dot-config=0 \ HOSTLDFLAGS= \ - env + no-dot-config-targets=envtools \ + envtools endef define Package/uboot-envtools/conffiles @@ -76,46 +73,11 @@ define Package/uboot-envtools/install $(LN) fw_printenv $(1)/usr/sbin/fw_setenv $(INSTALL_DIR) $(1)/lib $(INSTALL_DATA) ./files/uboot-envtools.sh $(1)/lib -ifneq ($(CONFIG_TARGET_ar71xx),) - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_DATA) ./files/ar71xx $(1)/etc/uci-defaults/30_uboot-envtools -endif -ifneq ($(CONFIG_TARGET_cns3xxx),) - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_DATA) ./files/cns3xxx $(1)/etc/uci-defaults/30_uboot-envtools -endif -ifneq ($(CONFIG_TARGET_imx6),) - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_DATA) ./files/imx6 $(1)/etc/uci-defaults/30_uboot-envtools -endif -ifneq ($(CONFIG_TARGET_ipq806x),) - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_DATA) ./files/ipq $(1)/etc/uci-defaults/30_uboot-envtools -endif -ifneq ($(CONFIG_TARGET_kirkwood),) - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_DATA) ./files/kirkwood $(1)/etc/uci-defaults/30_uboot-envtools -endif -ifneq ($(CONFIG_TARGET_lantiq),) - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_DATA) ./files/lantiq $(1)/etc/uci-defaults/30_uboot-envtools -endif -ifneq ($(CONFIG_TARGET_mvebu),) - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_BIN) ./files/mvebu $(1)/etc/uci-defaults/30_uboot-envtools -endif -ifneq ($(CONFIG_TARGET_mxs),) - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_BIN) ./files/mxs $(1)/etc/uci-defaults/30_uboot-envtools -endif -ifneq ($(CONFIG_TARGET_oxnas),) - $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_BIN) ./files/oxnas $(1)/etc/uci-defaults/30_uboot-envtools -endif -ifneq ($(CONFIG_TARGET_ramips),) $(INSTALL_DIR) $(1)/etc/uci-defaults - $(INSTALL_DATA) ./files/ramips $(1)/etc/uci-defaults/30_uboot-envtools -endif + $(if $(wildcard ./files/$(BOARD)), \ + $(INSTALL_DATA) ./files/$(BOARD) \ + $(1)/etc/uci-defaults/30_uboot-envtools \ + ) endef $(eval $(call BuildPackage,uboot-envtools)) diff --git a/package/boot/uboot-envtools/files/ar71xx b/package/boot/uboot-envtools/files/ar71xx index 25bec7eb33..2d9fcea1ac 100644 --- a/package/boot/uboot-envtools/files/ar71xx +++ b/package/boot/uboot-envtools/files/ar71xx @@ -7,11 +7,10 @@ touch /etc/config/ubootenv -. /lib/ar71xx.sh . /lib/uboot-envtools.sh . /lib/functions.sh -board=$(ar71xx_board_name) +board=$(board_name) case "$board" in a40|\ @@ -20,6 +19,8 @@ alfa-ap120c|\ all0258n|\ ap121f|\ ap90q|\ +ap91-5g|\ +arduino-yun|\ cap324|\ cap4200ag|\ carambola2|\ @@ -27,24 +28,35 @@ cpe830|\ cpe870|\ cr3000|\ cr5000|\ +e1700ac-v2|\ +e600g-v2|\ +e600gac-v2|\ eap300v2|\ +ens202ext|\ gl-ar300m|\ +gl-ar750|\ hornet-ub|\ hornet-ub-x2|\ jwap230|\ +koala|\ mr1750|\ mr1750v2|\ mr600|\ mr600v2|\ mr900|\ mr900v2|\ +n5q|\ nbg6716|\ om5p|\ om5p-ac|\ om5p-acv2|\ om5p-an|\ +r36a|\ +rme-eg200|\ sr3200|\ +t830|\ tube2h|\ +wam250|\ wndr3700|\ xd3200) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" @@ -65,12 +77,20 @@ dap-2695-a1|\ wzr-hp-ag300h) ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x10000" "0x10000" ;; +dr342|\ dr531) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0xf800" "0x10000" ;; +rambutan) + ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" + ubootenv_add_uci_config "/dev/mtd1" "0x100000" "0x20000" "0x20000" + ;; qihoo-c301) ubootenv_add_uci_config "/dev/mtd9" "0x0" "0x10000" "0x10000" ;; +wi2a-ac200i) + ubootenv_add_uci_config "/dev/mtd4" "0x0" "0x8000" "0x10000" + ;; esac config_load ubootenv diff --git a/package/boot/uboot-envtools/files/cns3xxx b/package/boot/uboot-envtools/files/cns3xxx index a56be15c57..f998de463c 100644 --- a/package/boot/uboot-envtools/files/cns3xxx +++ b/package/boot/uboot-envtools/files/cns3xxx @@ -7,11 +7,10 @@ touch /etc/config/ubootenv -. /lib/cns3xxx.sh . /lib/uboot-envtools.sh . /lib/functions.sh -board=$(cns3xxx_board_name) +board=$(board_name) case "$board" in laguna) diff --git a/package/boot/uboot-envtools/files/imx6 b/package/boot/uboot-envtools/files/imx6 index a78c4fbe53..fec8ce0aa4 100644 --- a/package/boot/uboot-envtools/files/imx6 +++ b/package/boot/uboot-envtools/files/imx6 @@ -7,11 +7,10 @@ touch /etc/config/ubootenv -. /lib/imx6.sh . /lib/uboot-envtools.sh . /lib/functions.sh -board=$(imx6_board_name) +board=$(board_name) case "$board" in *gw5*) diff --git a/package/boot/uboot-envtools/files/ipq b/package/boot/uboot-envtools/files/ipq deleted file mode 100644 index 16c7ba6bb7..0000000000 --- a/package/boot/uboot-envtools/files/ipq +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2016 LEDE -# - -[ -e /etc/config/ubootenv ] && exit 0 - -touch /etc/config/ubootenv - -. /lib/ipq806x.sh -. /lib/uboot-envtools.sh -. /lib/functions.sh - -board=$(ipq806x_board_name) - -case "$board" in -ea8500) - ubootenv_add_uci_config "/dev/mtd10" "0x0" "0x20000" "0x20000" - ;; -nbg6817) - ubootenv_add_uci_config "/dev/mtdblock9" "0x0" "0x10000" "0x10000" - ;; -esac - -config_load ubootenv -config_foreach ubootenv_add_app_config ubootenv - -exit 0 diff --git a/package/boot/uboot-envtools/files/ipq40xx b/package/boot/uboot-envtools/files/ipq40xx new file mode 100644 index 0000000000..d475e56629 --- /dev/null +++ b/package/boot/uboot-envtools/files/ipq40xx @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Copyright (C) 2016 LEDE +# + +[ -e /etc/config/ubootenv ] && exit 0 + +touch /etc/config/ubootenv + +. /lib/uboot-envtools.sh +. /lib/functions.sh + +board=$(board_name) + +ubootenv_mtdinfo () { + UBOOTENV_PART=$(cat /proc/mtd | grep APPSBLENV) + mtd_dev=$(echo $UBOOTENV_PART | awk '{print $1}' | sed 's/:$//') + mtd_size=$(echo $UBOOTENV_PART | awk '{print "0x"$2}') + mtd_erase=$(echo $UBOOTENV_PART | awk '{print "0x"$3}') + nor_flash=$(find /sys/bus/spi/devices/*/mtd -name ${mtd_dev}) + + if [ -n "$nor_flash" ]; then + ubootenv_size=$mtd_size + else + # size is fixed to 0x40000 in u-boot + ubootenv_size=0x40000 + fi + + sectors=$(( $ubootenv_size / $mtd_erase )) + echo /dev/$mtd_dev 0x0 $ubootenv_size $mtd_erase $sectors +} + +case "$board" in +openmesh,a42 |\ +openmesh,a62) + ubootenv_add_uci_config "/dev/mtd5" "0x0" "0x10000" "0x10000" + ;; +esac + +config_load ubootenv +config_foreach ubootenv_add_app_config ubootenv + +exit 0 diff --git a/package/boot/uboot-envtools/files/ipq806x b/package/boot/uboot-envtools/files/ipq806x new file mode 100644 index 0000000000..4618aac892 --- /dev/null +++ b/package/boot/uboot-envtools/files/ipq806x @@ -0,0 +1,49 @@ +#!/bin/sh +# +# Copyright (C) 2016 LEDE +# + +[ -e /etc/config/ubootenv ] && exit 0 + +touch /etc/config/ubootenv + +. /lib/uboot-envtools.sh +. /lib/functions.sh + +board=$(board_name) + +ubootenv_mtdinfo () { + UBOOTENV_PART=$(cat /proc/mtd | grep APPSBLENV) + mtd_dev=$(echo $UBOOTENV_PART | awk '{print $1}' | sed 's/:$//') + mtd_size=$(echo $UBOOTENV_PART | awk '{print "0x"$2}') + mtd_erase=$(echo $UBOOTENV_PART | awk '{print "0x"$3}') + nor_flash=$(find /sys/bus/spi/devices/*/mtd -name ${mtd_dev}) + + if [ -n "$nor_flash" ]; then + ubootenv_size=$mtd_size + else + # size is fixed to 0x40000 in u-boot + ubootenv_size=0x40000 + fi + + sectors=$(( $ubootenv_size / $mtd_erase )) + echo /dev/$mtd_dev 0x0 $ubootenv_size $mtd_erase $sectors +} + +case "$board" in +linksys,ea8500) + ubootenv_add_uci_config "/dev/mtd10" "0x0" "0x20000" "0x20000" + ;; +qcom,ipq8064-ap148 |\ +qcom,ipq8064-db149) + ubootenv_add_uci_config $(ubootenv_mtdinfo) + ;; +zyxel,nbg6817) + ubootenv_add_uci_config "/dev/mtdblock9" "0x0" "0x10000" "0x10000" + ;; +esac + +config_load ubootenv +config_foreach ubootenv_add_app_config ubootenv + +exit 0 diff --git a/package/boot/uboot-envtools/files/kirkwood b/package/boot/uboot-envtools/files/kirkwood index 055e0eba42..16123846cc 100644 --- a/package/boot/uboot-envtools/files/kirkwood +++ b/package/boot/uboot-envtools/files/kirkwood @@ -7,23 +7,22 @@ touch /etc/config/ubootenv -. /lib/kirkwood.sh . /lib/uboot-envtools.sh . /lib/functions.sh -board=$(kirkwood_board_name) +board=$(board_name) case "$board" in -dockstar|\ -guruplug-server-plus|\ -ib62x0|\ -linksys-viper|\ -pogo_e02|\ -sheevaplug|\ -sheevaplug-esata) +cloudengines,pogoe02|\ +cloudengines,pogoplugv4|\ +linksys,viper|\ +raidsonic,ib-nas62x0|\ +seagate,dockstar|\ +zyxel,nsa310b|\ +zyxel,nsa325) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" ;; -linksys-audi) +linksys,audi) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x4000" "0x4000" ;; esac diff --git a/package/boot/uboot-envtools/files/lantiq b/package/boot/uboot-envtools/files/lantiq index 185f2fe77e..f4541a559b 100644 --- a/package/boot/uboot-envtools/files/lantiq +++ b/package/boot/uboot-envtools/files/lantiq @@ -7,26 +7,25 @@ touch /etc/config/ubootenv -. /lib/functions/lantiq.sh . /lib/uboot-envtools.sh . /lib/functions.sh -board=$(lantiq_board_name) +board=$(board_name) case "$board" in -BTHOMEHUBV2B) +bt,homehub-v2b) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" "1" ;; -BTHOMEHUBV3A) +bt,homehub-v3a) ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x4000" "0x4000" "1" ;; -GIGASX76X) +siemens,gigaset-sx76x) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" "1" ;; -P2812HNUF1) +zyxel,p-2812hnu-f1) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x2000" "0x20000" "1" ;; -WBMR300) +buffalo,wbmr-300hpd) idx="$(find_mtd_index ubootconfig)" [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x2000" "0x1000" "2" diff --git a/package/boot/uboot-envtools/files/mvebu b/package/boot/uboot-envtools/files/mvebu index 2bbbc23661..7d16a59666 100644 --- a/package/boot/uboot-envtools/files/mvebu +++ b/package/boot/uboot-envtools/files/mvebu @@ -8,11 +8,10 @@ touch /etc/config/ubootenv -. /lib/mvebu.sh . /lib/uboot-envtools.sh . /lib/functions.sh -board=$(mvebu_board_name) +board=$(board_name) case "$board" in armada-385-linksys-caiman|\ @@ -20,12 +19,20 @@ armada-385-linksys-cobra|\ armada-385-linksys-shelby) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x40000" ;; -armada-385-linksys-rango) +armada-385-linksys-rango|\ +armada-385-linksys-venom) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000" ;; +armada-385-turris-omnia) + ubootenv_add_uci_config "/dev/mtd0" "0xC0000" "0x10000" "0x40000" + ;; armada-xp-linksys-mamba) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x20000" ;; +globalscale,espressobin|\ +marvell,armada8040-mcbin) + ubootenv_add_uci_config "/dev/mtd0" "0x3f0000" "0x10000" "0x10000" "1" + ;; esac config_load ubootenv diff --git a/package/boot/uboot-envtools/files/mxs b/package/boot/uboot-envtools/files/mxs index ab8b4ef937..37d3c96ed4 100644 --- a/package/boot/uboot-envtools/files/mxs +++ b/package/boot/uboot-envtools/files/mxs @@ -7,11 +7,10 @@ touch /etc/config/ubootenv -. /lib/mxs.sh . /lib/uboot-envtools.sh . /lib/functions.sh -board=$(mxs_board_name) +board=$(board_name) case "$board" in duckbill) diff --git a/package/boot/uboot-envtools/files/oxnas b/package/boot/uboot-envtools/files/oxnas index ac4744e3e2..70b0f1663a 100644 --- a/package/boot/uboot-envtools/files/oxnas +++ b/package/boot/uboot-envtools/files/oxnas @@ -7,11 +7,10 @@ touch /etc/config/ubootenv -. /lib/oxnas.sh . /lib/uboot-envtools.sh . /lib/functions.sh -board=$(oxnas_board_name) +board=$(board_name) case "$board" in akitio|\ diff --git a/package/boot/uboot-envtools/files/pistachio b/package/boot/uboot-envtools/files/pistachio new file mode 100644 index 0000000000..e4aa7b0cd9 --- /dev/null +++ b/package/boot/uboot-envtools/files/pistachio @@ -0,0 +1,27 @@ +#!/bin/sh +# +# Copyright (C) 2017 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +[ -e /etc/config/ubootenv ] && exit 0 + +touch /etc/config/ubootenv + +. /lib/uboot-envtools.sh +. /lib/functions.sh + +board=$(board_name) + +case "$board" in +img,pistachio-marduk) + ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x2000" "0x1000" + ;; +esac + +config_load ubootenv +config_foreach ubootenv_add_app_config ubootenv + +exit 0 diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index 3216b300c1..f992f41bc8 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -7,21 +7,23 @@ touch /etc/config/ubootenv -. /lib/ramips.sh . /lib/uboot-envtools.sh . /lib/functions.sh -board=$(ramips_board_name) +board=$(board_name) case "$board" in +alfa-network,ac1200rm|\ +alfa-network,awusfree1) + ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x1000" + ;; all0239-3g|\ -all0256n|\ +all0256n-4M|\ +all0256n-8M|\ all5002) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000" ;; -br-6425|\ linkits7688|\ -linkits7688d|\ miwifi-nano|\ sk-wb8|\ wsr-1166|\ @@ -29,6 +31,9 @@ wsr-600|\ zbt-wg2626) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x10000" ;; +mir3g) + ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x20000" + ;; esac config_load ubootenv diff --git a/package/boot/uboot-envtools/patches/001-compile.patch b/package/boot/uboot-envtools/patches/001-compile.patch index 1705979765..f7ec9130d6 100644 --- a/package/boot/uboot-envtools/patches/001-compile.patch +++ b/package/boot/uboot-envtools/patches/001-compile.patch @@ -2,7 +2,7 @@ +++ b/tools/env/Makefile @@ -10,6 +10,10 @@ # with "CC" here for the maximum code reuse of scripts/Makefile.host. - HOSTCC = $(CC) + override HOSTCC = $(CC) +ifneq ($(TARGET_CFLAGS),) +HOSTCFLAGS = $(TARGET_CFLAGS) diff --git a/package/boot/uboot-envtools/patches/200-fw_env_no_aes.patch b/package/boot/uboot-envtools/patches/200-fw_env_no_aes.patch deleted file mode 100644 index 9c8681ff48..0000000000 --- a/package/boot/uboot-envtools/patches/200-fw_env_no_aes.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- a/tools/env/fw_env.c -+++ b/tools/env/fw_env.c -@@ -246,7 +246,7 @@ int fw_printenv (int argc, char *argv[]) - int i, n_flag; - int rc = 0; - -- if (argc >= 2 && strcmp(argv[1], "-a") == 0) { -+ if (0 && argc >= 2 && strcmp(argv[1], "-a") == 0) { - if (argc < 3) { - fprintf(stderr, - "## Error: '-a' option requires AES key\n"); -@@ -325,7 +325,7 @@ int fw_printenv (int argc, char *argv[]) - int fw_env_close(void) - { - int ret; -- if (aes_flag) { -+ if (0 && aes_flag) { - ret = env_aes_cbc_crypt(environment.data, 1); - if (ret) { - fprintf(stderr, -@@ -1223,7 +1223,7 @@ int fw_env_open(void) - - crc0 = crc32 (0, (uint8_t *) environment.data, ENV_SIZE); - -- if (aes_flag) { -+ if (0 && aes_flag) { - ret = env_aes_cbc_crypt(environment.data, 0); - if (ret) - return ret; -@@ -1280,7 +1280,7 @@ int fw_env_open(void) - - crc1 = crc32 (0, (uint8_t *) redundant->data, ENV_SIZE); - -- if (aes_flag) { -+ if (0 && aes_flag) { - ret = env_aes_cbc_crypt(redundant->data, 0); - if (ret) - return ret; diff --git a/package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch b/package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch deleted file mode 100644 index 75d3804ed4..0000000000 --- a/package/boot/uboot-envtools/patches/300-support-env-in-ubivol-chardev.patch +++ /dev/null @@ -1,163 +0,0 @@ -From 6e2630a0fc872d0db34157972f6dc3941f6d66dd Mon Sep 17 00:00:00 2001 -From: Daniel Golle -Date: Mon, 19 May 2014 21:38:01 +0200 -Subject: [PATCH] tools/env: add support for env in ubi volume chardev - -Signed-off-by: Daniel Golle ---- - tools/env/Makefile | 5 ++++ - tools/env/fw_env.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++------- - 2 files changed, 71 insertions(+), 10 deletions(-) - ---- a/tools/env/Makefile -+++ b/tools/env/Makefile -@@ -24,6 +24,13 @@ ifeq ($(MTD_VERSION),old) - HOST_EXTRACFLAGS += -DMTD_OLD - endif - -+ifeq ($(UBI),y) -+HOST_EXTRACFLAGS += -DUBI -+HOST_LOADLIBES = "-Wl,--gc-sections,-lubi-utils" -+else -+HOST_LOADLIBES = "-Wl,--gc-sections" -+endif -+ - always := fw_printenv - hostprogs-y := fw_printenv - ---- a/tools/env/fw_env.c -+++ b/tools/env/fw_env.c -@@ -31,6 +31,9 @@ - # include - #endif - -+#ifdef UBI -+# include -+#endif - #include "fw_env.h" - - #include -@@ -811,6 +814,11 @@ static int flash_write_buf (int dev, int - off_t top_of_range; /* end of the last block we may use */ - loff_t blockstart; /* running start of the current block - - MEMGETBADBLOCK needs 64 bits */ -+#ifdef UBI -+ libubi_t *libubi = NULL;/* pointer to libubi struct */ -+#else -+ void *libubi = NULL; -+#endif - int rc; - - /* -@@ -916,7 +924,30 @@ static int flash_write_buf (int dev, int - continue; - } - -- if (mtd_type != MTD_ABSENT) { -+#ifdef UBI -+ if (mtd_type == MTD_UBIVOLUME) { -+ struct ubi_vol_info volinfo; -+ libubi = libubi_open(); -+ if (libubi) -+ rc = ubi_get_vol_info(libubi, -+ DEVNAME(dev_current), &volinfo); -+ if (libubi && !rc) { -+ erasesize = volinfo.leb_size; -+ int leb = blockstart / erasesize; -+ if (volinfo.type != UBI_STATIC_VOLUME) -+ rc = ubi_leb_change_start(libubi, fd, -+ leb, erasesize); -+ else -+ rc = ubi_update_start(libubi, fd, -+ erasesize); -+ } -+ if (libubi && rc) { -+ libubi_close(libubi); -+ libubi = NULL; -+ } -+ } -+#endif -+ if (!libubi && mtd_type != MTD_ABSENT) { - erase.start = blockstart; - ioctl(fd, MEMUNLOCK, &erase); - /* These do not need an explicit erase cycle */ -@@ -933,7 +964,8 @@ static int flash_write_buf (int dev, int - fprintf (stderr, - "Seek error on %s: %s\n", - DEVNAME (dev), strerror (errno)); -- return -1; -+ processed = -1; -+ goto out; - } - - #ifdef DEBUG -@@ -943,10 +975,11 @@ static int flash_write_buf (int dev, int - if (write (fd, data + processed, erasesize) != erasesize) { - fprintf (stderr, "Write error on %s: %s\n", - DEVNAME (dev), strerror (errno)); -- return -1; -+ processed = -1; -+ goto out; - } - -- if (mtd_type != MTD_ABSENT) -+ if (!libubi && mtd_type != MTD_ABSENT) - ioctl(fd, MEMLOCK, &erase); - - processed += erasesize; -@@ -957,6 +990,11 @@ static int flash_write_buf (int dev, int - if (write_total > count) - free (data); - -+out: -+#ifdef UBI -+ if (libubi) -+ libubi_close(libubi); -+#endif - return processed; - } - -@@ -1068,12 +1106,8 @@ static int flash_read (int fd) - - if (S_ISCHR(st.st_mode)) { - rc = ioctl(fd, MEMGETINFO, &mtdinfo); -- if (rc < 0) { -- fprintf(stderr, "Cannot get MTD information for %s\n", -- DEVNAME(dev_current)); -- return -1; -- } -- if (mtdinfo.type != MTD_NORFLASH && -+ if (!rc && -+ mtdinfo.type != MTD_NORFLASH && - mtdinfo.type != MTD_NANDFLASH && - mtdinfo.type != MTD_DATAFLASH && - mtdinfo.type != MTD_UBIVOLUME) { -@@ -1081,6 +1115,28 @@ static int flash_read (int fd) - mtdinfo.type, DEVNAME(dev_current)); - return -1; - } -+#ifdef UBI -+ if (rc) { -+ libubi_t *libubi; -+ struct ubi_vol_info volinfo; -+ libubi = libubi_open(); -+ if (!libubi) -+ return -ENOMEM; -+ -+ rc = ubi_get_vol_info(libubi, DEVNAME(dev_current), -+ &volinfo); -+ if (rc) { -+ libubi_close(libubi); -+ return -ENODEV; -+ } -+ memset(&mtdinfo, 0, sizeof(mtdinfo)); -+ mtdinfo.type = MTD_UBIVOLUME; -+ mtdinfo.size = volinfo.data_bytes; -+ mtdinfo.erasesize = volinfo.leb_size; -+ mtdinfo.writesize = volinfo.leb_size; -+ libubi_close(libubi); -+ } -+#endif - } else { - memset(&mtdinfo, 0, sizeof(mtdinfo)); - mtdinfo.type = MTD_ABSENT; diff --git a/package/boot/uboot-envtools/patches/400-u-boot-2015.10-stdint.patch b/package/boot/uboot-envtools/patches/400-u-boot-2015.10-stdint.patch deleted file mode 100644 index 395674fd8b..0000000000 --- a/package/boot/uboot-envtools/patches/400-u-boot-2015.10-stdint.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -Naur u-boot-2015.10.orig/tools/env/fw_env.c u-boot-2015.10/tools/env/fw_env.c ---- u-boot-2015.10.orig/tools/env/fw_env.c 2016-06-24 12:42:31.152391850 +0200 -+++ u-boot-2015.10/tools/env/fw_env.c 2016-06-24 12:42:59.080391754 +0200 -@@ -21,7 +21,8 @@ - #include - #include - #include --#include -+#include -+#include - - #ifdef MTD_OLD - # include diff --git a/package/boot/uboot-sunxi/Makefile b/package/boot/uboot-sunxi/Makefile index bc80dcfade..5257a41ad2 100644 --- a/package/boot/uboot-sunxi/Makefile +++ b/package/boot/uboot-sunxi/Makefile @@ -9,90 +9,252 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk -PKG_NAME:=u-boot -PKG_VERSION:=2016.03 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=ftp://ftp.denx.de/pub/u-boot -PKG_HASH:=e49337262ecac44dbdeac140f2c6ebd1eba345e0162b0464172e7f05583ed7bb -PKG_MAINTAINER:=Zoltan HERPAI -PKG_LICENSE:=GPL-2.0 GPL-2.0+ -PKG_LICENSE_FILES:=Licenses/README +PKG_VERSION:=2017.11 -PKG_BUILD_PARALLEL:=1 +PKG_HASH:=6a018fd3caf58f3dcfa23ee989a82bd35df03af71872b9dca8c6d758a0d26c05 -PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) +PKG_MAINTAINER:=Zoltan HERPAI +include $(INCLUDE_DIR)/u-boot.mk include $(INCLUDE_DIR)/package.mk -define Package/uboot/template -define Package/uboot-sunxi-$(1) - SECTION:=boot - CATEGORY:=Boot Loaders - DEPENDS:=@TARGET_sunxi - TITLE:=U-Boot for $(2) - URL:=http://www.denx.de/wiki/U-Boot - VARIANT:=$(1) +define U-Boot/Default + BUILD_TARGET:=sunxi + UBOOT_IMAGE:=u-boot-sunxi-with-spl.bin + UENV:=default + HIDDEN:=1 +endef + +define U-Boot/A10-OLinuXino-Lime + BUILD_SUBTARGET:=cortexa8 + NAME:=A10 OLinuXino LIME + BUILD_DEVICES:=sun4i-a10-olinuxino-lime +endef + +define U-Boot/A13-OLinuXino + BUILD_SUBTARGET:=cortexa8 + NAME:=A13 OlinuXino + BUILD_DEVICES:=sun5i-a13-olinuxino +endef + +define U-Boot/A20-OLinuXino-Lime + BUILD_SUBTARGET:=cortexa7 + NAME:=A20 OLinuXino LIME + BUILD_DEVICES:=sun7i-a20-olinuxino-lime endef -define Package/uboot-sunxi-$(1)/install - $(CP) $(PKG_BUILD_DIR)/u-boot-sunxi-with-spl.bin \ - $(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-u-boot-with-spl.bin - mkimage -C none -A arm -T script -d uEnv-$(if $(3),$(3),default).txt \ - $(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-boot.scr +define U-Boot/A20-OLinuXino-Lime2 + BUILD_SUBTARGET:=cortexa7 + NAME:=A20 OLinuXino LIME2 + BUILD_DEVICES:=sun7i-a20-olinuxino-lime2 endef -UBOOT_SUNXI_PACKAGES += uboot-sunxi-$(1) +define U-Boot/A20-OLinuXino-Lime2-eMMC + BUILD_SUBTARGET:=cortexa7 + NAME:=A20 OLinuXino LIME2 eMMC + BUILD_DEVICES:=sun7i-a20-olinuxino-lime2-emmc +endef +define U-Boot/A20-OLinuXino_MICRO + BUILD_SUBTARGET:=cortexa7 + NAME:=A20 OLinuXino MICRO + BUILD_DEVICES:=sun7i-a20-olinuxino-micro endef -$(eval $(call Package/uboot/template,A10-OLinuXino-Lime,the A10 OLinuXino LIME)) -$(eval $(call Package/uboot/template,A13-OLinuXino,the A13 OlinuXino)) -$(eval $(call Package/uboot/template,A20-OLinuXino-Lime,the A20 OLinuXino LIME)) -$(eval $(call Package/uboot/template,A20-OLinuXino_MICRO,A20 OLinuXino MICRO)) -$(eval $(call Package/uboot/template,Bananapi,Bananapi)) -$(eval $(call Package/uboot/template,Bananapro,Bananapro)) -$(eval $(call Package/uboot/template,Cubieboard,Cubieboard)) -$(eval $(call Package/uboot/template,Cubieboard2,Cubieboard2)) -$(eval $(call Package/uboot/template,Cubietruck,Cubietruck)) -$(eval $(call Package/uboot/template,Hummingbird_A31,the Hummingbird A31 board)) -$(eval $(call Package/uboot/template,Mele_M9,the Mele M9 (A31))) -$(eval $(call Package/uboot/template,OLIMEX_A13_SOM,the Olimex A13 SOM)) -$(eval $(call Package/uboot/template,Linksprite_pcDuino,Linksprite pcDuino)) -$(eval $(call Package/uboot/template,Linksprite_pcDuino3,Linksprite pcDuino3)) -$(eval $(call Package/uboot/template,Lamobo_R1,Lamobo R1)) -$(eval $(call Package/uboot/template,orangepi_plus,Orange Pi Plus (H3))) -$(eval $(call Package/uboot/template,pangolin,Theobroma A31-yQ7 devboard,pangolin)) +define U-Boot/Bananapi + BUILD_SUBTARGET:=cortexa7 + NAME:=Bananapi + BUILD_DEVICES:=sun7i-a20-bananapi +endef -define Package/uboot-sunxi-all - SECTION:=boot - CATEGORY:=Boot Loaders - DEPENDS:=@TARGET_sunxi - TITLE:=Meta package for selecting all variants of uboot-sunxi - URL:=http://www.denx.de/wiki/U-Boot - DEPENDS:=$(patsubst %,+%,$(UBOOT_SUNXI_PACKAGES)) +define U-Boot/Bananapro + BUILD_SUBTARGET:=cortexa7 + NAME:=Bananapro + BUILD_DEVICES:=sun7i-a20-bananapro endef -ifdef BUILD_VARIANT -define Build/Configure - +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ - USE_PRIVATE_LIBGCC=yes $(BUILD_VARIANT)_defconfig +define U-Boot/Cubieboard + BUILD_SUBTARGET:=cortexa8 + NAME:=Cubieboard + BUILD_DEVICES:=sun4i-a10-cubieboard endef -define Build/Compile - +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ - CROSS_COMPILE=$(TARGET_CROSS) \ - DTCDIR=$(LINUX_DIR)/scripts/dtc/ +define U-Boot/Cubieboard2 + BUILD_SUBTARGET:=cortexa7 + NAME:=Cubieboard2 + BUILD_DEVICES:=sun7i-a20-cubieboard2 endef -else # BUILD_VARIANT -define Build/Prepare + +define U-Boot/Cubietruck + BUILD_SUBTARGET:=cortexa7 + NAME:=Cubietruck + BUILD_DEVICES:=sun7i-a20-cubietruck endef -define Build/Configure + +define U-Boot/Hummingbird_A31 + BUILD_SUBTARGET:=cortexa7 + NAME:=Hummingbird A31 board +endef + +define U-Boot/Marsboard_A10 + BUILD_SUBTARGET:=cortexa8 + NAME:=Marsboard + BUILD_DEVICES:=sun4i-a10-marsboard endef -define Build/Compile + +define U-Boot/Mele_M9 + BUILD_SUBTARGET:=cortexa7 + NAME:=Mele M9 (A31) + BUILD_DEVICES:=sun6i-a31-m9 +endef + +define U-Boot/OLIMEX_A13_SOM + BUILD_SUBTARGET:=cortexa8 + NAME:=Olimex A13 SOM + BUILD_DEVICES:=sun5i-a13-olimex-som +endef + +define U-Boot/Linksprite_pcDuino + BUILD_SUBTARGET:=cortexa8 + NAME:=Linksprite pcDuino + BUILD_DEVICES:=sun4i-a10-pcduino +endef + +define U-Boot/Linksprite_pcDuino3 + BUILD_SUBTARGET:=cortexa7 + NAME:=Linksprite pcDuino3 + BUILD_DEVICES:=sun7i-a20-pcduino3 +endef + +define U-Boot/Lamobo_R1 + BUILD_SUBTARGET:=cortexa7 + NAME:=Lamobo R1 + BUILD_DEVICES:=sun7i-a20-lamobo-r1 +endef + +define U-Boot/nanopi_m1_plus + BUILD_SUBTARGET:=cortexa7 + NAME:=NanoPi M1 Plus (H3) + BUILD_DEVICES:=sun8i-h3-nanopi-m1-plus +endef + +define U-Boot/nanopi_neo + BUILD_SUBTARGET:=cortexa7 + NAME:=U-Boot for NanoPi NEO (H3) + BUILD_DEVICES:=sun8i-h3-nanopi-neo +endef + +define U-Boot/orangepi_r1 + BUILD_SUBTARGET:=cortexa7 + NAME:=Orange Pi R1 (H2+) + BUILD_DEVICES:=sun8i-h2-plus-orangepi-r1 +endef + +define U-Boot/orangepi_pc + BUILD_SUBTARGET:=cortexa7 + NAME:=Orange Pi PC (H3) + BUILD_DEVICES:=sun8i-h3-orangepi-pc +endef + +define U-Boot/orangepi_plus + BUILD_SUBTARGET:=cortexa7 + NAME:=Orange Pi Plus (H3) + BUILD_DEVICES:=sun8i-h3-orangepi-plus +endef + +define U-Boot/orangepi_2 + BUILD_SUBTARGET:=cortexa7 + NAME:=Orange Pi 2 (H3) + BUILD_DEVICES:=sun8i-h3-orangepi-2 +endef + +define U-Boot/pangolin + BUILD_SUBTARGET:=cortexa7 + NAME:=Theobroma A31-yQ7 devboard + UENV:=pangolin +endef + +define U-Boot/nanopi_neo_plus2 + BUILD_SUBTARGET:=cortexa53 + NAME:=NanoPi NEO Plus2 (H5) + BUILD_DEVICES:=sun50i-h5-nanopi-neo-plus2 + DEPENDS:=+PACKAGE_u-boot-nanopi_neo_plus2:arm-trusted-firmware-sunxi + UENV:=a64 +endef + +define U-Boot/pine64_plus + BUILD_SUBTARGET:=cortexa53 + NAME:=Pine64 Plus A64 + BUILD_DEVICES:=sun50i-a64-pine64-plus + DEPENDS:=+PACKAGE_u-boot-pine64_plus:arm-trusted-firmware-sunxi + UENV:=a64 +endef + +define U-Boot/sopine_baseboard + BUILD_SUBTARGET:=cortexa53 + NAME:=Sopine Baseboard + BUILD_DEVICES:=sun50i-a64-sopine-baseboard + DEPENDS:=+PACKAGE_u-boot-sopine_baseboard:arm-trusted-firmware-sunxi + UENV:=a64 +endef + + +define U-Boot/orangepi_zero_plus + BUILD_SUBTARGET:=cortexa53 + NAME:=Xunlong Orange Pi Zero Plus + BUILD_DEVICES:=sun50i-h5-orangepi-zero-plus + DEPENDS:=+PACKAGE_u-boot-orangepi_zero_plus:arm-trusted-firmware-sunxi + UENV:=a64 +endef + +UBOOT_TARGETS := \ + A10-OLinuXino-Lime \ + A13-OLinuXino \ + A20-OLinuXino-Lime \ + A20-OLinuXino-Lime2 \ + A20-OLinuXino-Lime2-eMMC \ + A20-OLinuXino_MICRO \ + Bananapi \ + Bananapro \ + Cubieboard \ + Cubieboard2 \ + Cubietruck \ + Hummingbird_A31 \ + Marsboard_A10 \ + Mele_M9 \ + OLIMEX_A13_SOM \ + Linksprite_pcDuino \ + Linksprite_pcDuino3 \ + Lamobo_R1 \ + nanopi_m1_plus \ + nanopi_neo \ + nanopi_neo_plus2 \ + orangepi_r1 \ + orangepi_pc \ + orangepi_plus \ + orangepi_2 \ + pangolin \ + pine64_plus \ + sopine_baseboard \ + orangepi_zero_plus + +UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes + +UBOOT_MAKE_FLAGS += \ + BL31=$(STAGING_DIR_IMAGE)/bl31.bin + +define Build/InstallDev + $(INSTALL_DIR) $(STAGING_DIR_IMAGE) +ifeq ($(SUBTARGET),cortexa53) + cat $(PKG_BUILD_DIR)/spl/sunxi-spl.bin $(PKG_BUILD_DIR)/u-boot.itb > $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-u-boot-with-spl.bin +else + $(CP) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-u-boot-with-spl.bin +endif + mkimage -C none -A arm -T script -d uEnv-$(UENV).txt \ + $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-boot.scr +endef + +define Package/u-boot/install/default endef -endif # BUILD_VARIANT -$(foreach pkg,$(UBOOT_SUNXI_PACKAGES), \ - $(eval $(call BuildPackage,$(pkg))) \ -) -$(eval $(call BuildPackage,uboot-sunxi-all)) +$(eval $(call BuildPackage/U-Boot)) diff --git a/package/boot/uboot-sunxi/patches/001-use-dtc-in-kernel.patch b/package/boot/uboot-sunxi/patches/001-use-dtc-in-kernel.patch deleted file mode 100644 index 6471e78656..0000000000 --- a/package/boot/uboot-sunxi/patches/001-use-dtc-in-kernel.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/Makefile -+++ b/Makefile -@@ -348,7 +348,7 @@ OBJDUMP = $(CROSS_COMPILE)objdump - AWK = awk - PERL = perl - PYTHON = python --DTC = dtc -+DTC = $(DTCDIR)dtc - CHECK = sparse - - CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ diff --git a/package/boot/uboot-sunxi/patches/002-add-olimex-a13-som.patch b/package/boot/uboot-sunxi/patches/002-add-olimex-a13-som.patch index f29ad12b75..c19f3781d1 100644 --- a/package/boot/uboot-sunxi/patches/002-add-olimex-a13-som.patch +++ b/package/boot/uboot-sunxi/patches/002-add-olimex-a13-som.patch @@ -1,8 +1,7 @@ --- /dev/null +++ b/configs/OLIMEX_A13_SOM_defconfig -@@ -0,0 +1,18 @@ +@@ -0,0 +1,17 @@ +CONFIG_SPL=y -+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=2" +CONFIG_DEFAULT_DEVICE_TREE="sun5i-a13-olinuxino" +CONFIG_ARM=y +CONFIG_ARCH_SUNXI=y diff --git a/package/boot/uboot-sunxi/patches/003-add-theobroma-a31-pangolin.patch b/package/boot/uboot-sunxi/patches/003-add-theobroma-a31-pangolin.patch index e5a66d7ebe..4458d514c2 100644 --- a/package/boot/uboot-sunxi/patches/003-add-theobroma-a31-pangolin.patch +++ b/package/boot/uboot-sunxi/patches/003-add-theobroma-a31-pangolin.patch @@ -1,16 +1,16 @@ --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile -@@ -152,6 +152,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \ +@@ -261,6 +261,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \ sun6i-a31-m9.dtb \ sun6i-a31-mele-a1000g-quad.dtb \ sun6i-a31-mixtile-loftq.dtb \ + sun6i-a31-pangolin.dtb \ + sun6i-a31s-colorfly-e708-q1.dtb \ sun6i-a31s-cs908.dtb \ - sun6i-a31s-primo81.dtb \ - sun6i-a31s-sinovoip-bpi-m2.dtb + sun6i-a31s-inet-q972.dtb \ --- a/arch/arm/dts/sun6i-a31.dtsi +++ b/arch/arm/dts/sun6i-a31.dtsi -@@ -643,6 +643,13 @@ +@@ -679,6 +679,13 @@ allwinner,pull = ; }; @@ -358,17 +358,9 @@ +CONFIG_DM_SPI=y +CONFIG_DM_SPI_FLASH=y +CONFIG_SUNXI_SPI=y ---- a/board/sunxi/Kconfig -+++ b/board/sunxi/Kconfig -@@ -15,7 +15,6 @@ config SUNXI_GEN_SUN6I - separate ahb reset control registers, custom pmic bus, new style - watchdog, etc. - -- - choice - prompt "Sunxi SoC Variant" - optional -@@ -533,6 +532,14 @@ config VIDEO_LCD_PANEL_I2C_SCL +--- a/arch/arm/mach-sunxi/Kconfig ++++ b/arch/arm/mach-sunxi/Kconfig +@@ -752,6 +752,14 @@ config VIDEO_LCD_PANEL_I2C_SCL Set the SCL pin for the LCD i2c interface. This takes a string in the format understood by sunxi_name_to_gpio, e.g. PH1 for pin 1 of port H. diff --git a/package/boot/uboot-sunxi/patches/010-dt-sync-files-with-kernel.patch b/package/boot/uboot-sunxi/patches/010-dt-sync-files-with-kernel.patch deleted file mode 100644 index d8fa52c7e5..0000000000 --- a/package/boot/uboot-sunxi/patches/010-dt-sync-files-with-kernel.patch +++ /dev/null @@ -1,1403 +0,0 @@ -From 4bb656e9dde2019cb42ac4c27b3a114a801ad127 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Wed, 16 Mar 2016 13:41:23 +0100 -Subject: [PATCH] include/dt-bindings: Sync some files with the kernel - -This commit syncs the dt-bindings/input/* headers with the kernel (v4.5) -and adds dt-bindings/clock/sun4i-a10-pll2.h, both are necessary for newer -sunxi dts files to build. - -Signed-off-by: Hans de Goede -Reviewed-by: Tom Rini -Acked-by: Ian Campbell ---- - include/dt-bindings/clock/sun4i-a10-pll2.h | 53 ++ - include/dt-bindings/input/input.h | 510 +--------------- - include/dt-bindings/input/linux-event-codes.h | 805 ++++++++++++++++++++++++++ - 3 files changed, 859 insertions(+), 509 deletions(-) - create mode 100644 include/dt-bindings/clock/sun4i-a10-pll2.h - create mode 100644 include/dt-bindings/input/linux-event-codes.h - ---- /dev/null -+++ b/include/dt-bindings/clock/sun4i-a10-pll2.h -@@ -0,0 +1,53 @@ -+/* -+ * Copyright 2015 Maxime Ripard -+ * -+ * Maxime Ripard -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#ifndef __DT_BINDINGS_CLOCK_SUN4I_A10_PLL2_H_ -+#define __DT_BINDINGS_CLOCK_SUN4I_A10_PLL2_H_ -+ -+#define SUN4I_A10_PLL2_1X 0 -+#define SUN4I_A10_PLL2_2X 1 -+#define SUN4I_A10_PLL2_4X 2 -+#define SUN4I_A10_PLL2_8X 3 -+ -+#endif /* __DT_BINDINGS_CLOCK_SUN4I_A10_PLL2_H_ */ ---- a/include/dt-bindings/input/input.h -+++ b/include/dt-bindings/input/input.h -@@ -9,515 +9,7 @@ - #ifndef _DT_BINDINGS_INPUT_INPUT_H - #define _DT_BINDINGS_INPUT_INPUT_H - --#define KEY_RESERVED 0 --#define KEY_ESC 1 --#define KEY_1 2 --#define KEY_2 3 --#define KEY_3 4 --#define KEY_4 5 --#define KEY_5 6 --#define KEY_6 7 --#define KEY_7 8 --#define KEY_8 9 --#define KEY_9 10 --#define KEY_0 11 --#define KEY_MINUS 12 --#define KEY_EQUAL 13 --#define KEY_BACKSPACE 14 --#define KEY_TAB 15 --#define KEY_Q 16 --#define KEY_W 17 --#define KEY_E 18 --#define KEY_R 19 --#define KEY_T 20 --#define KEY_Y 21 --#define KEY_U 22 --#define KEY_I 23 --#define KEY_O 24 --#define KEY_P 25 --#define KEY_LEFTBRACE 26 --#define KEY_RIGHTBRACE 27 --#define KEY_ENTER 28 --#define KEY_LEFTCTRL 29 --#define KEY_A 30 --#define KEY_S 31 --#define KEY_D 32 --#define KEY_F 33 --#define KEY_G 34 --#define KEY_H 35 --#define KEY_J 36 --#define KEY_K 37 --#define KEY_L 38 --#define KEY_SEMICOLON 39 --#define KEY_APOSTROPHE 40 --#define KEY_GRAVE 41 --#define KEY_LEFTSHIFT 42 --#define KEY_BACKSLASH 43 --#define KEY_Z 44 --#define KEY_X 45 --#define KEY_C 46 --#define KEY_V 47 --#define KEY_B 48 --#define KEY_N 49 --#define KEY_M 50 --#define KEY_COMMA 51 --#define KEY_DOT 52 --#define KEY_SLASH 53 --#define KEY_RIGHTSHIFT 54 --#define KEY_KPASTERISK 55 --#define KEY_LEFTALT 56 --#define KEY_SPACE 57 --#define KEY_CAPSLOCK 58 --#define KEY_F1 59 --#define KEY_F2 60 --#define KEY_F3 61 --#define KEY_F4 62 --#define KEY_F5 63 --#define KEY_F6 64 --#define KEY_F7 65 --#define KEY_F8 66 --#define KEY_F9 67 --#define KEY_F10 68 --#define KEY_NUMLOCK 69 --#define KEY_SCROLLLOCK 70 --#define KEY_KP7 71 --#define KEY_KP8 72 --#define KEY_KP9 73 --#define KEY_KPMINUS 74 --#define KEY_KP4 75 --#define KEY_KP5 76 --#define KEY_KP6 77 --#define KEY_KPPLUS 78 --#define KEY_KP1 79 --#define KEY_KP2 80 --#define KEY_KP3 81 --#define KEY_KP0 82 --#define KEY_KPDOT 83 -- --#define KEY_ZENKAKUHANKAKU 85 --#define KEY_102ND 86 --#define KEY_F11 87 --#define KEY_F12 88 --#define KEY_RO 89 --#define KEY_KATAKANA 90 --#define KEY_HIRAGANA 91 --#define KEY_HENKAN 92 --#define KEY_KATAKANAHIRAGANA 93 --#define KEY_MUHENKAN 94 --#define KEY_KPJPCOMMA 95 --#define KEY_KPENTER 96 --#define KEY_RIGHTCTRL 97 --#define KEY_KPSLASH 98 --#define KEY_SYSRQ 99 --#define KEY_RIGHTALT 100 --#define KEY_LINEFEED 101 --#define KEY_HOME 102 --#define KEY_UP 103 --#define KEY_PAGEUP 104 --#define KEY_LEFT 105 --#define KEY_RIGHT 106 --#define KEY_END 107 --#define KEY_DOWN 108 --#define KEY_PAGEDOWN 109 --#define KEY_INSERT 110 --#define KEY_DELETE 111 --#define KEY_MACRO 112 --#define KEY_MUTE 113 --#define KEY_VOLUMEDOWN 114 --#define KEY_VOLUMEUP 115 --#define KEY_POWER 116 /* SC System Power Down */ --#define KEY_KPEQUAL 117 --#define KEY_KPPLUSMINUS 118 --#define KEY_PAUSE 119 --#define KEY_SCALE 120 /* AL Compiz Scale (Expose) */ -- --#define KEY_KPCOMMA 121 --#define KEY_HANGEUL 122 --#define KEY_HANGUEL KEY_HANGEUL --#define KEY_HANJA 123 --#define KEY_YEN 124 --#define KEY_LEFTMETA 125 --#define KEY_RIGHTMETA 126 --#define KEY_COMPOSE 127 -- --#define KEY_STOP 128 /* AC Stop */ --#define KEY_AGAIN 129 --#define KEY_PROPS 130 /* AC Properties */ --#define KEY_UNDO 131 /* AC Undo */ --#define KEY_FRONT 132 --#define KEY_COPY 133 /* AC Copy */ --#define KEY_OPEN 134 /* AC Open */ --#define KEY_PASTE 135 /* AC Paste */ --#define KEY_FIND 136 /* AC Search */ --#define KEY_CUT 137 /* AC Cut */ --#define KEY_HELP 138 /* AL Integrated Help Center */ --#define KEY_MENU 139 /* Menu (show menu) */ --#define KEY_CALC 140 /* AL Calculator */ --#define KEY_SETUP 141 --#define KEY_SLEEP 142 /* SC System Sleep */ --#define KEY_WAKEUP 143 /* System Wake Up */ --#define KEY_FILE 144 /* AL Local Machine Browser */ --#define KEY_SENDFILE 145 --#define KEY_DELETEFILE 146 --#define KEY_XFER 147 --#define KEY_PROG1 148 --#define KEY_PROG2 149 --#define KEY_WWW 150 /* AL Internet Browser */ --#define KEY_MSDOS 151 --#define KEY_COFFEE 152 /* AL Terminal Lock/Screensaver */ --#define KEY_SCREENLOCK KEY_COFFEE --#define KEY_DIRECTION 153 --#define KEY_CYCLEWINDOWS 154 --#define KEY_MAIL 155 --#define KEY_BOOKMARKS 156 /* AC Bookmarks */ --#define KEY_COMPUTER 157 --#define KEY_BACK 158 /* AC Back */ --#define KEY_FORWARD 159 /* AC Forward */ --#define KEY_CLOSECD 160 --#define KEY_EJECTCD 161 --#define KEY_EJECTCLOSECD 162 --#define KEY_NEXTSONG 163 --#define KEY_PLAYPAUSE 164 --#define KEY_PREVIOUSSONG 165 --#define KEY_STOPCD 166 --#define KEY_RECORD 167 --#define KEY_REWIND 168 --#define KEY_PHONE 169 /* Media Select Telephone */ --#define KEY_ISO 170 --#define KEY_CONFIG 171 /* AL Consumer Control Configuration */ --#define KEY_HOMEPAGE 172 /* AC Home */ --#define KEY_REFRESH 173 /* AC Refresh */ --#define KEY_EXIT 174 /* AC Exit */ --#define KEY_MOVE 175 --#define KEY_EDIT 176 --#define KEY_SCROLLUP 177 --#define KEY_SCROLLDOWN 178 --#define KEY_KPLEFTPAREN 179 --#define KEY_KPRIGHTPAREN 180 --#define KEY_NEW 181 /* AC New */ --#define KEY_REDO 182 /* AC Redo/Repeat */ -- --#define KEY_F13 183 --#define KEY_F14 184 --#define KEY_F15 185 --#define KEY_F16 186 --#define KEY_F17 187 --#define KEY_F18 188 --#define KEY_F19 189 --#define KEY_F20 190 --#define KEY_F21 191 --#define KEY_F22 192 --#define KEY_F23 193 --#define KEY_F24 194 -- --#define KEY_PLAYCD 200 --#define KEY_PAUSECD 201 --#define KEY_PROG3 202 --#define KEY_PROG4 203 --#define KEY_DASHBOARD 204 /* AL Dashboard */ --#define KEY_SUSPEND 205 --#define KEY_CLOSE 206 /* AC Close */ --#define KEY_PLAY 207 --#define KEY_FASTFORWARD 208 --#define KEY_BASSBOOST 209 --#define KEY_PRINT 210 /* AC Print */ --#define KEY_HP 211 --#define KEY_CAMERA 212 --#define KEY_SOUND 213 --#define KEY_QUESTION 214 --#define KEY_EMAIL 215 --#define KEY_CHAT 216 --#define KEY_SEARCH 217 --#define KEY_CONNECT 218 --#define KEY_FINANCE 219 /* AL Checkbook/Finance */ --#define KEY_SPORT 220 --#define KEY_SHOP 221 --#define KEY_ALTERASE 222 --#define KEY_CANCEL 223 /* AC Cancel */ --#define KEY_BRIGHTNESSDOWN 224 --#define KEY_BRIGHTNESSUP 225 --#define KEY_MEDIA 226 -- --#define KEY_SWITCHVIDEOMODE 227 /* Cycle between available video -- outputs (Monitor/LCD/TV-out/etc) */ --#define KEY_KBDILLUMTOGGLE 228 --#define KEY_KBDILLUMDOWN 229 --#define KEY_KBDILLUMUP 230 -- --#define KEY_SEND 231 /* AC Send */ --#define KEY_REPLY 232 /* AC Reply */ --#define KEY_FORWARDMAIL 233 /* AC Forward Msg */ --#define KEY_SAVE 234 /* AC Save */ --#define KEY_DOCUMENTS 235 -- --#define KEY_BATTERY 236 -- --#define KEY_BLUETOOTH 237 --#define KEY_WLAN 238 --#define KEY_UWB 239 -- --#define KEY_UNKNOWN 240 -- --#define KEY_VIDEO_NEXT 241 /* drive next video source */ --#define KEY_VIDEO_PREV 242 /* drive previous video source */ --#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */ --#define KEY_BRIGHTNESS_ZERO 244 /* brightness off, use ambient */ --#define KEY_DISPLAY_OFF 245 /* display device to off state */ -- --#define KEY_WIMAX 246 --#define KEY_RFKILL 247 /* Key that controls all radios */ -- --#define KEY_MICMUTE 248 /* Mute / unmute the microphone */ -- --/* Code 255 is reserved for special needs of AT keyboard driver */ -- --#define BTN_MISC 0x100 --#define BTN_0 0x100 --#define BTN_1 0x101 --#define BTN_2 0x102 --#define BTN_3 0x103 --#define BTN_4 0x104 --#define BTN_5 0x105 --#define BTN_6 0x106 --#define BTN_7 0x107 --#define BTN_8 0x108 --#define BTN_9 0x109 -- --#define BTN_MOUSE 0x110 --#define BTN_LEFT 0x110 --#define BTN_RIGHT 0x111 --#define BTN_MIDDLE 0x112 --#define BTN_SIDE 0x113 --#define BTN_EXTRA 0x114 --#define BTN_FORWARD 0x115 --#define BTN_BACK 0x116 --#define BTN_TASK 0x117 -- --#define BTN_JOYSTICK 0x120 --#define BTN_TRIGGER 0x120 --#define BTN_THUMB 0x121 --#define BTN_THUMB2 0x122 --#define BTN_TOP 0x123 --#define BTN_TOP2 0x124 --#define BTN_PINKIE 0x125 --#define BTN_BASE 0x126 --#define BTN_BASE2 0x127 --#define BTN_BASE3 0x128 --#define BTN_BASE4 0x129 --#define BTN_BASE5 0x12a --#define BTN_BASE6 0x12b --#define BTN_DEAD 0x12f -- --#define BTN_GAMEPAD 0x130 --#define BTN_SOUTH 0x130 --#define BTN_A BTN_SOUTH --#define BTN_EAST 0x131 --#define BTN_B BTN_EAST --#define BTN_C 0x132 --#define BTN_NORTH 0x133 --#define BTN_X BTN_NORTH --#define BTN_WEST 0x134 --#define BTN_Y BTN_WEST --#define BTN_Z 0x135 --#define BTN_TL 0x136 --#define BTN_TR 0x137 --#define BTN_TL2 0x138 --#define BTN_TR2 0x139 --#define BTN_SELECT 0x13a --#define BTN_START 0x13b --#define BTN_MODE 0x13c --#define BTN_THUMBL 0x13d --#define BTN_THUMBR 0x13e -- --#define BTN_DIGI 0x140 --#define BTN_TOOL_PEN 0x140 --#define BTN_TOOL_RUBBER 0x141 --#define BTN_TOOL_BRUSH 0x142 --#define BTN_TOOL_PENCIL 0x143 --#define BTN_TOOL_AIRBRUSH 0x144 --#define BTN_TOOL_FINGER 0x145 --#define BTN_TOOL_MOUSE 0x146 --#define BTN_TOOL_LENS 0x147 --#define BTN_TOOL_QUINTTAP 0x148 /* Five fingers on trackpad */ --#define BTN_TOUCH 0x14a --#define BTN_STYLUS 0x14b --#define BTN_STYLUS2 0x14c --#define BTN_TOOL_DOUBLETAP 0x14d --#define BTN_TOOL_TRIPLETAP 0x14e --#define BTN_TOOL_QUADTAP 0x14f /* Four fingers on trackpad */ -- --#define BTN_WHEEL 0x150 --#define BTN_GEAR_DOWN 0x150 --#define BTN_GEAR_UP 0x151 -- --#define KEY_OK 0x160 --#define KEY_SELECT 0x161 --#define KEY_GOTO 0x162 --#define KEY_CLEAR 0x163 --#define KEY_POWER2 0x164 --#define KEY_OPTION 0x165 --#define KEY_INFO 0x166 /* AL OEM Features/Tips/Tutorial */ --#define KEY_TIME 0x167 --#define KEY_VENDOR 0x168 --#define KEY_ARCHIVE 0x169 --#define KEY_PROGRAM 0x16a /* Media Select Program Guide */ --#define KEY_CHANNEL 0x16b --#define KEY_FAVORITES 0x16c --#define KEY_EPG 0x16d --#define KEY_PVR 0x16e /* Media Select Home */ --#define KEY_MHP 0x16f --#define KEY_LANGUAGE 0x170 --#define KEY_TITLE 0x171 --#define KEY_SUBTITLE 0x172 --#define KEY_ANGLE 0x173 --#define KEY_ZOOM 0x174 --#define KEY_MODE 0x175 --#define KEY_KEYBOARD 0x176 --#define KEY_SCREEN 0x177 --#define KEY_PC 0x178 /* Media Select Computer */ --#define KEY_TV 0x179 /* Media Select TV */ --#define KEY_TV2 0x17a /* Media Select Cable */ --#define KEY_VCR 0x17b /* Media Select VCR */ --#define KEY_VCR2 0x17c /* VCR Plus */ --#define KEY_SAT 0x17d /* Media Select Satellite */ --#define KEY_SAT2 0x17e --#define KEY_CD 0x17f /* Media Select CD */ --#define KEY_TAPE 0x180 /* Media Select Tape */ --#define KEY_RADIO 0x181 --#define KEY_TUNER 0x182 /* Media Select Tuner */ --#define KEY_PLAYER 0x183 --#define KEY_TEXT 0x184 --#define KEY_DVD 0x185 /* Media Select DVD */ --#define KEY_AUX 0x186 --#define KEY_MP3 0x187 --#define KEY_AUDIO 0x188 /* AL Audio Browser */ --#define KEY_VIDEO 0x189 /* AL Movie Browser */ --#define KEY_DIRECTORY 0x18a --#define KEY_LIST 0x18b --#define KEY_MEMO 0x18c /* Media Select Messages */ --#define KEY_CALENDAR 0x18d --#define KEY_RED 0x18e --#define KEY_GREEN 0x18f --#define KEY_YELLOW 0x190 --#define KEY_BLUE 0x191 --#define KEY_CHANNELUP 0x192 /* Channel Increment */ --#define KEY_CHANNELDOWN 0x193 /* Channel Decrement */ --#define KEY_FIRST 0x194 --#define KEY_LAST 0x195 /* Recall Last */ --#define KEY_AB 0x196 --#define KEY_NEXT 0x197 --#define KEY_RESTART 0x198 --#define KEY_SLOW 0x199 --#define KEY_SHUFFLE 0x19a --#define KEY_BREAK 0x19b --#define KEY_PREVIOUS 0x19c --#define KEY_DIGITS 0x19d --#define KEY_TEEN 0x19e --#define KEY_TWEN 0x19f --#define KEY_VIDEOPHONE 0x1a0 /* Media Select Video Phone */ --#define KEY_GAMES 0x1a1 /* Media Select Games */ --#define KEY_ZOOMIN 0x1a2 /* AC Zoom In */ --#define KEY_ZOOMOUT 0x1a3 /* AC Zoom Out */ --#define KEY_ZOOMRESET 0x1a4 /* AC Zoom */ --#define KEY_WORDPROCESSOR 0x1a5 /* AL Word Processor */ --#define KEY_EDITOR 0x1a6 /* AL Text Editor */ --#define KEY_SPREADSHEET 0x1a7 /* AL Spreadsheet */ --#define KEY_GRAPHICSEDITOR 0x1a8 /* AL Graphics Editor */ --#define KEY_PRESENTATION 0x1a9 /* AL Presentation App */ --#define KEY_DATABASE 0x1aa /* AL Database App */ --#define KEY_NEWS 0x1ab /* AL Newsreader */ --#define KEY_VOICEMAIL 0x1ac /* AL Voicemail */ --#define KEY_ADDRESSBOOK 0x1ad /* AL Contacts/Address Book */ --#define KEY_MESSENGER 0x1ae /* AL Instant Messaging */ --#define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */ --#define KEY_SPELLCHECK 0x1b0 /* AL Spell Check */ --#define KEY_LOGOFF 0x1b1 /* AL Logoff */ -- --#define KEY_DOLLAR 0x1b2 --#define KEY_EURO 0x1b3 -- --#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */ --#define KEY_FRAMEFORWARD 0x1b5 --#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */ --#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */ --#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */ --#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */ --#define KEY_IMAGES 0x1ba /* AL Image Browser */ -- --#define KEY_DEL_EOL 0x1c0 --#define KEY_DEL_EOS 0x1c1 --#define KEY_INS_LINE 0x1c2 --#define KEY_DEL_LINE 0x1c3 -- --#define KEY_FN 0x1d0 --#define KEY_FN_ESC 0x1d1 --#define KEY_FN_F1 0x1d2 --#define KEY_FN_F2 0x1d3 --#define KEY_FN_F3 0x1d4 --#define KEY_FN_F4 0x1d5 --#define KEY_FN_F5 0x1d6 --#define KEY_FN_F6 0x1d7 --#define KEY_FN_F7 0x1d8 --#define KEY_FN_F8 0x1d9 --#define KEY_FN_F9 0x1da --#define KEY_FN_F10 0x1db --#define KEY_FN_F11 0x1dc --#define KEY_FN_F12 0x1dd --#define KEY_FN_1 0x1de --#define KEY_FN_2 0x1df --#define KEY_FN_D 0x1e0 --#define KEY_FN_E 0x1e1 --#define KEY_FN_F 0x1e2 --#define KEY_FN_S 0x1e3 --#define KEY_FN_B 0x1e4 -- --#define KEY_BRL_DOT1 0x1f1 --#define KEY_BRL_DOT2 0x1f2 --#define KEY_BRL_DOT3 0x1f3 --#define KEY_BRL_DOT4 0x1f4 --#define KEY_BRL_DOT5 0x1f5 --#define KEY_BRL_DOT6 0x1f6 --#define KEY_BRL_DOT7 0x1f7 --#define KEY_BRL_DOT8 0x1f8 --#define KEY_BRL_DOT9 0x1f9 --#define KEY_BRL_DOT10 0x1fa -- --#define KEY_NUMERIC_0 0x200 /* used by phones, remote controls, */ --#define KEY_NUMERIC_1 0x201 /* and other keypads */ --#define KEY_NUMERIC_2 0x202 --#define KEY_NUMERIC_3 0x203 --#define KEY_NUMERIC_4 0x204 --#define KEY_NUMERIC_5 0x205 --#define KEY_NUMERIC_6 0x206 --#define KEY_NUMERIC_7 0x207 --#define KEY_NUMERIC_8 0x208 --#define KEY_NUMERIC_9 0x209 --#define KEY_NUMERIC_STAR 0x20a --#define KEY_NUMERIC_POUND 0x20b -- --#define KEY_CAMERA_FOCUS 0x210 --#define KEY_WPS_BUTTON 0x211 /* WiFi Protected Setup key */ -- --#define KEY_TOUCHPAD_TOGGLE 0x212 /* Request switch touchpad on or off */ --#define KEY_TOUCHPAD_ON 0x213 --#define KEY_TOUCHPAD_OFF 0x214 -- --#define KEY_CAMERA_ZOOMIN 0x215 --#define KEY_CAMERA_ZOOMOUT 0x216 --#define KEY_CAMERA_UP 0x217 --#define KEY_CAMERA_DOWN 0x218 --#define KEY_CAMERA_LEFT 0x219 --#define KEY_CAMERA_RIGHT 0x21a -- --#define KEY_ATTENDANT_ON 0x21b --#define KEY_ATTENDANT_OFF 0x21c --#define KEY_ATTENDANT_TOGGLE 0x21d /* Attendant call on or off */ --#define KEY_LIGHTS_TOGGLE 0x21e /* Reading light on or off */ -- --#define BTN_DPAD_UP 0x220 --#define BTN_DPAD_DOWN 0x221 --#define BTN_DPAD_LEFT 0x222 --#define BTN_DPAD_RIGHT 0x223 -+#include "linux-event-codes.h" - - #define MATRIX_KEY(row, col, code) \ - ((((row) & 0xFF) << 24) | (((col) & 0xFF) << 16) | ((code) & 0xFFFF)) ---- /dev/null -+++ b/include/dt-bindings/input/linux-event-codes.h -@@ -0,0 +1,805 @@ -+/* -+ * Input event codes -+ * -+ * *** IMPORTANT *** -+ * This file is not only included from C-code but also from devicetree source -+ * files. As such this file MUST only contain comments and defines. -+ * -+ * Copyright (c) 1999-2002 Vojtech Pavlik -+ * Copyright (c) 2015 Hans de Goede -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 2 as published by -+ * the Free Software Foundation. -+ */ -+#ifndef _UAPI_INPUT_EVENT_CODES_H -+#define _UAPI_INPUT_EVENT_CODES_H -+ -+/* -+ * Device properties and quirks -+ */ -+ -+#define INPUT_PROP_POINTER 0x00 /* needs a pointer */ -+#define INPUT_PROP_DIRECT 0x01 /* direct input devices */ -+#define INPUT_PROP_BUTTONPAD 0x02 /* has button(s) under pad */ -+#define INPUT_PROP_SEMI_MT 0x03 /* touch rectangle only */ -+#define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */ -+#define INPUT_PROP_POINTING_STICK 0x05 /* is a pointing stick */ -+#define INPUT_PROP_ACCELEROMETER 0x06 /* has accelerometer */ -+ -+#define INPUT_PROP_MAX 0x1f -+#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1) -+ -+/* -+ * Event types -+ */ -+ -+#define EV_SYN 0x00 -+#define EV_KEY 0x01 -+#define EV_REL 0x02 -+#define EV_ABS 0x03 -+#define EV_MSC 0x04 -+#define EV_SW 0x05 -+#define EV_LED 0x11 -+#define EV_SND 0x12 -+#define EV_REP 0x14 -+#define EV_FF 0x15 -+#define EV_PWR 0x16 -+#define EV_FF_STATUS 0x17 -+#define EV_MAX 0x1f -+#define EV_CNT (EV_MAX+1) -+ -+/* -+ * Synchronization events. -+ */ -+ -+#define SYN_REPORT 0 -+#define SYN_CONFIG 1 -+#define SYN_MT_REPORT 2 -+#define SYN_DROPPED 3 -+#define SYN_MAX 0xf -+#define SYN_CNT (SYN_MAX+1) -+ -+/* -+ * Keys and buttons -+ * -+ * Most of the keys/buttons are modeled after USB HUT 1.12 -+ * (see http://www.usb.org/developers/hidpage). -+ * Abbreviations in the comments: -+ * AC - Application Control -+ * AL - Application Launch Button -+ * SC - System Control -+ */ -+ -+#define KEY_RESERVED 0 -+#define KEY_ESC 1 -+#define KEY_1 2 -+#define KEY_2 3 -+#define KEY_3 4 -+#define KEY_4 5 -+#define KEY_5 6 -+#define KEY_6 7 -+#define KEY_7 8 -+#define KEY_8 9 -+#define KEY_9 10 -+#define KEY_0 11 -+#define KEY_MINUS 12 -+#define KEY_EQUAL 13 -+#define KEY_BACKSPACE 14 -+#define KEY_TAB 15 -+#define KEY_Q 16 -+#define KEY_W 17 -+#define KEY_E 18 -+#define KEY_R 19 -+#define KEY_T 20 -+#define KEY_Y 21 -+#define KEY_U 22 -+#define KEY_I 23 -+#define KEY_O 24 -+#define KEY_P 25 -+#define KEY_LEFTBRACE 26 -+#define KEY_RIGHTBRACE 27 -+#define KEY_ENTER 28 -+#define KEY_LEFTCTRL 29 -+#define KEY_A 30 -+#define KEY_S 31 -+#define KEY_D 32 -+#define KEY_F 33 -+#define KEY_G 34 -+#define KEY_H 35 -+#define KEY_J 36 -+#define KEY_K 37 -+#define KEY_L 38 -+#define KEY_SEMICOLON 39 -+#define KEY_APOSTROPHE 40 -+#define KEY_GRAVE 41 -+#define KEY_LEFTSHIFT 42 -+#define KEY_BACKSLASH 43 -+#define KEY_Z 44 -+#define KEY_X 45 -+#define KEY_C 46 -+#define KEY_V 47 -+#define KEY_B 48 -+#define KEY_N 49 -+#define KEY_M 50 -+#define KEY_COMMA 51 -+#define KEY_DOT 52 -+#define KEY_SLASH 53 -+#define KEY_RIGHTSHIFT 54 -+#define KEY_KPASTERISK 55 -+#define KEY_LEFTALT 56 -+#define KEY_SPACE 57 -+#define KEY_CAPSLOCK 58 -+#define KEY_F1 59 -+#define KEY_F2 60 -+#define KEY_F3 61 -+#define KEY_F4 62 -+#define KEY_F5 63 -+#define KEY_F6 64 -+#define KEY_F7 65 -+#define KEY_F8 66 -+#define KEY_F9 67 -+#define KEY_F10 68 -+#define KEY_NUMLOCK 69 -+#define KEY_SCROLLLOCK 70 -+#define KEY_KP7 71 -+#define KEY_KP8 72 -+#define KEY_KP9 73 -+#define KEY_KPMINUS 74 -+#define KEY_KP4 75 -+#define KEY_KP5 76 -+#define KEY_KP6 77 -+#define KEY_KPPLUS 78 -+#define KEY_KP1 79 -+#define KEY_KP2 80 -+#define KEY_KP3 81 -+#define KEY_KP0 82 -+#define KEY_KPDOT 83 -+ -+#define KEY_ZENKAKUHANKAKU 85 -+#define KEY_102ND 86 -+#define KEY_F11 87 -+#define KEY_F12 88 -+#define KEY_RO 89 -+#define KEY_KATAKANA 90 -+#define KEY_HIRAGANA 91 -+#define KEY_HENKAN 92 -+#define KEY_KATAKANAHIRAGANA 93 -+#define KEY_MUHENKAN 94 -+#define KEY_KPJPCOMMA 95 -+#define KEY_KPENTER 96 -+#define KEY_RIGHTCTRL 97 -+#define KEY_KPSLASH 98 -+#define KEY_SYSRQ 99 -+#define KEY_RIGHTALT 100 -+#define KEY_LINEFEED 101 -+#define KEY_HOME 102 -+#define KEY_UP 103 -+#define KEY_PAGEUP 104 -+#define KEY_LEFT 105 -+#define KEY_RIGHT 106 -+#define KEY_END 107 -+#define KEY_DOWN 108 -+#define KEY_PAGEDOWN 109 -+#define KEY_INSERT 110 -+#define KEY_DELETE 111 -+#define KEY_MACRO 112 -+#define KEY_MUTE 113 -+#define KEY_VOLUMEDOWN 114 -+#define KEY_VOLUMEUP 115 -+#define KEY_POWER 116 /* SC System Power Down */ -+#define KEY_KPEQUAL 117 -+#define KEY_KPPLUSMINUS 118 -+#define KEY_PAUSE 119 -+#define KEY_SCALE 120 /* AL Compiz Scale (Expose) */ -+ -+#define KEY_KPCOMMA 121 -+#define KEY_HANGEUL 122 -+#define KEY_HANGUEL KEY_HANGEUL -+#define KEY_HANJA 123 -+#define KEY_YEN 124 -+#define KEY_LEFTMETA 125 -+#define KEY_RIGHTMETA 126 -+#define KEY_COMPOSE 127 -+ -+#define KEY_STOP 128 /* AC Stop */ -+#define KEY_AGAIN 129 -+#define KEY_PROPS 130 /* AC Properties */ -+#define KEY_UNDO 131 /* AC Undo */ -+#define KEY_FRONT 132 -+#define KEY_COPY 133 /* AC Copy */ -+#define KEY_OPEN 134 /* AC Open */ -+#define KEY_PASTE 135 /* AC Paste */ -+#define KEY_FIND 136 /* AC Search */ -+#define KEY_CUT 137 /* AC Cut */ -+#define KEY_HELP 138 /* AL Integrated Help Center */ -+#define KEY_MENU 139 /* Menu (show menu) */ -+#define KEY_CALC 140 /* AL Calculator */ -+#define KEY_SETUP 141 -+#define KEY_SLEEP 142 /* SC System Sleep */ -+#define KEY_WAKEUP 143 /* System Wake Up */ -+#define KEY_FILE 144 /* AL Local Machine Browser */ -+#define KEY_SENDFILE 145 -+#define KEY_DELETEFILE 146 -+#define KEY_XFER 147 -+#define KEY_PROG1 148 -+#define KEY_PROG2 149 -+#define KEY_WWW 150 /* AL Internet Browser */ -+#define KEY_MSDOS 151 -+#define KEY_COFFEE 152 /* AL Terminal Lock/Screensaver */ -+#define KEY_SCREENLOCK KEY_COFFEE -+#define KEY_ROTATE_DISPLAY 153 /* Display orientation for e.g. tablets */ -+#define KEY_DIRECTION KEY_ROTATE_DISPLAY -+#define KEY_CYCLEWINDOWS 154 -+#define KEY_MAIL 155 -+#define KEY_BOOKMARKS 156 /* AC Bookmarks */ -+#define KEY_COMPUTER 157 -+#define KEY_BACK 158 /* AC Back */ -+#define KEY_FORWARD 159 /* AC Forward */ -+#define KEY_CLOSECD 160 -+#define KEY_EJECTCD 161 -+#define KEY_EJECTCLOSECD 162 -+#define KEY_NEXTSONG 163 -+#define KEY_PLAYPAUSE 164 -+#define KEY_PREVIOUSSONG 165 -+#define KEY_STOPCD 166 -+#define KEY_RECORD 167 -+#define KEY_REWIND 168 -+#define KEY_PHONE 169 /* Media Select Telephone */ -+#define KEY_ISO 170 -+#define KEY_CONFIG 171 /* AL Consumer Control Configuration */ -+#define KEY_HOMEPAGE 172 /* AC Home */ -+#define KEY_REFRESH 173 /* AC Refresh */ -+#define KEY_EXIT 174 /* AC Exit */ -+#define KEY_MOVE 175 -+#define KEY_EDIT 176 -+#define KEY_SCROLLUP 177 -+#define KEY_SCROLLDOWN 178 -+#define KEY_KPLEFTPAREN 179 -+#define KEY_KPRIGHTPAREN 180 -+#define KEY_NEW 181 /* AC New */ -+#define KEY_REDO 182 /* AC Redo/Repeat */ -+ -+#define KEY_F13 183 -+#define KEY_F14 184 -+#define KEY_F15 185 -+#define KEY_F16 186 -+#define KEY_F17 187 -+#define KEY_F18 188 -+#define KEY_F19 189 -+#define KEY_F20 190 -+#define KEY_F21 191 -+#define KEY_F22 192 -+#define KEY_F23 193 -+#define KEY_F24 194 -+ -+#define KEY_PLAYCD 200 -+#define KEY_PAUSECD 201 -+#define KEY_PROG3 202 -+#define KEY_PROG4 203 -+#define KEY_DASHBOARD 204 /* AL Dashboard */ -+#define KEY_SUSPEND 205 -+#define KEY_CLOSE 206 /* AC Close */ -+#define KEY_PLAY 207 -+#define KEY_FASTFORWARD 208 -+#define KEY_BASSBOOST 209 -+#define KEY_PRINT 210 /* AC Print */ -+#define KEY_HP 211 -+#define KEY_CAMERA 212 -+#define KEY_SOUND 213 -+#define KEY_QUESTION 214 -+#define KEY_EMAIL 215 -+#define KEY_CHAT 216 -+#define KEY_SEARCH 217 -+#define KEY_CONNECT 218 -+#define KEY_FINANCE 219 /* AL Checkbook/Finance */ -+#define KEY_SPORT 220 -+#define KEY_SHOP 221 -+#define KEY_ALTERASE 222 -+#define KEY_CANCEL 223 /* AC Cancel */ -+#define KEY_BRIGHTNESSDOWN 224 -+#define KEY_BRIGHTNESSUP 225 -+#define KEY_MEDIA 226 -+ -+#define KEY_SWITCHVIDEOMODE 227 /* Cycle between available video -+ outputs (Monitor/LCD/TV-out/etc) */ -+#define KEY_KBDILLUMTOGGLE 228 -+#define KEY_KBDILLUMDOWN 229 -+#define KEY_KBDILLUMUP 230 -+ -+#define KEY_SEND 231 /* AC Send */ -+#define KEY_REPLY 232 /* AC Reply */ -+#define KEY_FORWARDMAIL 233 /* AC Forward Msg */ -+#define KEY_SAVE 234 /* AC Save */ -+#define KEY_DOCUMENTS 235 -+ -+#define KEY_BATTERY 236 -+ -+#define KEY_BLUETOOTH 237 -+#define KEY_WLAN 238 -+#define KEY_UWB 239 -+ -+#define KEY_UNKNOWN 240 -+ -+#define KEY_VIDEO_NEXT 241 /* drive next video source */ -+#define KEY_VIDEO_PREV 242 /* drive previous video source */ -+#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */ -+#define KEY_BRIGHTNESS_AUTO 244 /* Set Auto Brightness: manual -+ brightness control is off, -+ rely on ambient */ -+#define KEY_BRIGHTNESS_ZERO KEY_BRIGHTNESS_AUTO -+#define KEY_DISPLAY_OFF 245 /* display device to off state */ -+ -+#define KEY_WWAN 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */ -+#define KEY_WIMAX KEY_WWAN -+#define KEY_RFKILL 247 /* Key that controls all radios */ -+ -+#define KEY_MICMUTE 248 /* Mute / unmute the microphone */ -+ -+/* Code 255 is reserved for special needs of AT keyboard driver */ -+ -+#define BTN_MISC 0x100 -+#define BTN_0 0x100 -+#define BTN_1 0x101 -+#define BTN_2 0x102 -+#define BTN_3 0x103 -+#define BTN_4 0x104 -+#define BTN_5 0x105 -+#define BTN_6 0x106 -+#define BTN_7 0x107 -+#define BTN_8 0x108 -+#define BTN_9 0x109 -+ -+#define BTN_MOUSE 0x110 -+#define BTN_LEFT 0x110 -+#define BTN_RIGHT 0x111 -+#define BTN_MIDDLE 0x112 -+#define BTN_SIDE 0x113 -+#define BTN_EXTRA 0x114 -+#define BTN_FORWARD 0x115 -+#define BTN_BACK 0x116 -+#define BTN_TASK 0x117 -+ -+#define BTN_JOYSTICK 0x120 -+#define BTN_TRIGGER 0x120 -+#define BTN_THUMB 0x121 -+#define BTN_THUMB2 0x122 -+#define BTN_TOP 0x123 -+#define BTN_TOP2 0x124 -+#define BTN_PINKIE 0x125 -+#define BTN_BASE 0x126 -+#define BTN_BASE2 0x127 -+#define BTN_BASE3 0x128 -+#define BTN_BASE4 0x129 -+#define BTN_BASE5 0x12a -+#define BTN_BASE6 0x12b -+#define BTN_DEAD 0x12f -+ -+#define BTN_GAMEPAD 0x130 -+#define BTN_SOUTH 0x130 -+#define BTN_A BTN_SOUTH -+#define BTN_EAST 0x131 -+#define BTN_B BTN_EAST -+#define BTN_C 0x132 -+#define BTN_NORTH 0x133 -+#define BTN_X BTN_NORTH -+#define BTN_WEST 0x134 -+#define BTN_Y BTN_WEST -+#define BTN_Z 0x135 -+#define BTN_TL 0x136 -+#define BTN_TR 0x137 -+#define BTN_TL2 0x138 -+#define BTN_TR2 0x139 -+#define BTN_SELECT 0x13a -+#define BTN_START 0x13b -+#define BTN_MODE 0x13c -+#define BTN_THUMBL 0x13d -+#define BTN_THUMBR 0x13e -+ -+#define BTN_DIGI 0x140 -+#define BTN_TOOL_PEN 0x140 -+#define BTN_TOOL_RUBBER 0x141 -+#define BTN_TOOL_BRUSH 0x142 -+#define BTN_TOOL_PENCIL 0x143 -+#define BTN_TOOL_AIRBRUSH 0x144 -+#define BTN_TOOL_FINGER 0x145 -+#define BTN_TOOL_MOUSE 0x146 -+#define BTN_TOOL_LENS 0x147 -+#define BTN_TOOL_QUINTTAP 0x148 /* Five fingers on trackpad */ -+#define BTN_TOUCH 0x14a -+#define BTN_STYLUS 0x14b -+#define BTN_STYLUS2 0x14c -+#define BTN_TOOL_DOUBLETAP 0x14d -+#define BTN_TOOL_TRIPLETAP 0x14e -+#define BTN_TOOL_QUADTAP 0x14f /* Four fingers on trackpad */ -+ -+#define BTN_WHEEL 0x150 -+#define BTN_GEAR_DOWN 0x150 -+#define BTN_GEAR_UP 0x151 -+ -+#define KEY_OK 0x160 -+#define KEY_SELECT 0x161 -+#define KEY_GOTO 0x162 -+#define KEY_CLEAR 0x163 -+#define KEY_POWER2 0x164 -+#define KEY_OPTION 0x165 -+#define KEY_INFO 0x166 /* AL OEM Features/Tips/Tutorial */ -+#define KEY_TIME 0x167 -+#define KEY_VENDOR 0x168 -+#define KEY_ARCHIVE 0x169 -+#define KEY_PROGRAM 0x16a /* Media Select Program Guide */ -+#define KEY_CHANNEL 0x16b -+#define KEY_FAVORITES 0x16c -+#define KEY_EPG 0x16d -+#define KEY_PVR 0x16e /* Media Select Home */ -+#define KEY_MHP 0x16f -+#define KEY_LANGUAGE 0x170 -+#define KEY_TITLE 0x171 -+#define KEY_SUBTITLE 0x172 -+#define KEY_ANGLE 0x173 -+#define KEY_ZOOM 0x174 -+#define KEY_MODE 0x175 -+#define KEY_KEYBOARD 0x176 -+#define KEY_SCREEN 0x177 -+#define KEY_PC 0x178 /* Media Select Computer */ -+#define KEY_TV 0x179 /* Media Select TV */ -+#define KEY_TV2 0x17a /* Media Select Cable */ -+#define KEY_VCR 0x17b /* Media Select VCR */ -+#define KEY_VCR2 0x17c /* VCR Plus */ -+#define KEY_SAT 0x17d /* Media Select Satellite */ -+#define KEY_SAT2 0x17e -+#define KEY_CD 0x17f /* Media Select CD */ -+#define KEY_TAPE 0x180 /* Media Select Tape */ -+#define KEY_RADIO 0x181 -+#define KEY_TUNER 0x182 /* Media Select Tuner */ -+#define KEY_PLAYER 0x183 -+#define KEY_TEXT 0x184 -+#define KEY_DVD 0x185 /* Media Select DVD */ -+#define KEY_AUX 0x186 -+#define KEY_MP3 0x187 -+#define KEY_AUDIO 0x188 /* AL Audio Browser */ -+#define KEY_VIDEO 0x189 /* AL Movie Browser */ -+#define KEY_DIRECTORY 0x18a -+#define KEY_LIST 0x18b -+#define KEY_MEMO 0x18c /* Media Select Messages */ -+#define KEY_CALENDAR 0x18d -+#define KEY_RED 0x18e -+#define KEY_GREEN 0x18f -+#define KEY_YELLOW 0x190 -+#define KEY_BLUE 0x191 -+#define KEY_CHANNELUP 0x192 /* Channel Increment */ -+#define KEY_CHANNELDOWN 0x193 /* Channel Decrement */ -+#define KEY_FIRST 0x194 -+#define KEY_LAST 0x195 /* Recall Last */ -+#define KEY_AB 0x196 -+#define KEY_NEXT 0x197 -+#define KEY_RESTART 0x198 -+#define KEY_SLOW 0x199 -+#define KEY_SHUFFLE 0x19a -+#define KEY_BREAK 0x19b -+#define KEY_PREVIOUS 0x19c -+#define KEY_DIGITS 0x19d -+#define KEY_TEEN 0x19e -+#define KEY_TWEN 0x19f -+#define KEY_VIDEOPHONE 0x1a0 /* Media Select Video Phone */ -+#define KEY_GAMES 0x1a1 /* Media Select Games */ -+#define KEY_ZOOMIN 0x1a2 /* AC Zoom In */ -+#define KEY_ZOOMOUT 0x1a3 /* AC Zoom Out */ -+#define KEY_ZOOMRESET 0x1a4 /* AC Zoom */ -+#define KEY_WORDPROCESSOR 0x1a5 /* AL Word Processor */ -+#define KEY_EDITOR 0x1a6 /* AL Text Editor */ -+#define KEY_SPREADSHEET 0x1a7 /* AL Spreadsheet */ -+#define KEY_GRAPHICSEDITOR 0x1a8 /* AL Graphics Editor */ -+#define KEY_PRESENTATION 0x1a9 /* AL Presentation App */ -+#define KEY_DATABASE 0x1aa /* AL Database App */ -+#define KEY_NEWS 0x1ab /* AL Newsreader */ -+#define KEY_VOICEMAIL 0x1ac /* AL Voicemail */ -+#define KEY_ADDRESSBOOK 0x1ad /* AL Contacts/Address Book */ -+#define KEY_MESSENGER 0x1ae /* AL Instant Messaging */ -+#define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */ -+#define KEY_BRIGHTNESS_TOGGLE KEY_DISPLAYTOGGLE -+#define KEY_SPELLCHECK 0x1b0 /* AL Spell Check */ -+#define KEY_LOGOFF 0x1b1 /* AL Logoff */ -+ -+#define KEY_DOLLAR 0x1b2 -+#define KEY_EURO 0x1b3 -+ -+#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */ -+#define KEY_FRAMEFORWARD 0x1b5 -+#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */ -+#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */ -+#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */ -+#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */ -+#define KEY_IMAGES 0x1ba /* AL Image Browser */ -+ -+#define KEY_DEL_EOL 0x1c0 -+#define KEY_DEL_EOS 0x1c1 -+#define KEY_INS_LINE 0x1c2 -+#define KEY_DEL_LINE 0x1c3 -+ -+#define KEY_FN 0x1d0 -+#define KEY_FN_ESC 0x1d1 -+#define KEY_FN_F1 0x1d2 -+#define KEY_FN_F2 0x1d3 -+#define KEY_FN_F3 0x1d4 -+#define KEY_FN_F4 0x1d5 -+#define KEY_FN_F5 0x1d6 -+#define KEY_FN_F6 0x1d7 -+#define KEY_FN_F7 0x1d8 -+#define KEY_FN_F8 0x1d9 -+#define KEY_FN_F9 0x1da -+#define KEY_FN_F10 0x1db -+#define KEY_FN_F11 0x1dc -+#define KEY_FN_F12 0x1dd -+#define KEY_FN_1 0x1de -+#define KEY_FN_2 0x1df -+#define KEY_FN_D 0x1e0 -+#define KEY_FN_E 0x1e1 -+#define KEY_FN_F 0x1e2 -+#define KEY_FN_S 0x1e3 -+#define KEY_FN_B 0x1e4 -+ -+#define KEY_BRL_DOT1 0x1f1 -+#define KEY_BRL_DOT2 0x1f2 -+#define KEY_BRL_DOT3 0x1f3 -+#define KEY_BRL_DOT4 0x1f4 -+#define KEY_BRL_DOT5 0x1f5 -+#define KEY_BRL_DOT6 0x1f6 -+#define KEY_BRL_DOT7 0x1f7 -+#define KEY_BRL_DOT8 0x1f8 -+#define KEY_BRL_DOT9 0x1f9 -+#define KEY_BRL_DOT10 0x1fa -+ -+#define KEY_NUMERIC_0 0x200 /* used by phones, remote controls, */ -+#define KEY_NUMERIC_1 0x201 /* and other keypads */ -+#define KEY_NUMERIC_2 0x202 -+#define KEY_NUMERIC_3 0x203 -+#define KEY_NUMERIC_4 0x204 -+#define KEY_NUMERIC_5 0x205 -+#define KEY_NUMERIC_6 0x206 -+#define KEY_NUMERIC_7 0x207 -+#define KEY_NUMERIC_8 0x208 -+#define KEY_NUMERIC_9 0x209 -+#define KEY_NUMERIC_STAR 0x20a -+#define KEY_NUMERIC_POUND 0x20b -+#define KEY_NUMERIC_A 0x20c /* Phone key A - HUT Telephony 0xb9 */ -+#define KEY_NUMERIC_B 0x20d -+#define KEY_NUMERIC_C 0x20e -+#define KEY_NUMERIC_D 0x20f -+ -+#define KEY_CAMERA_FOCUS 0x210 -+#define KEY_WPS_BUTTON 0x211 /* WiFi Protected Setup key */ -+ -+#define KEY_TOUCHPAD_TOGGLE 0x212 /* Request switch touchpad on or off */ -+#define KEY_TOUCHPAD_ON 0x213 -+#define KEY_TOUCHPAD_OFF 0x214 -+ -+#define KEY_CAMERA_ZOOMIN 0x215 -+#define KEY_CAMERA_ZOOMOUT 0x216 -+#define KEY_CAMERA_UP 0x217 -+#define KEY_CAMERA_DOWN 0x218 -+#define KEY_CAMERA_LEFT 0x219 -+#define KEY_CAMERA_RIGHT 0x21a -+ -+#define KEY_ATTENDANT_ON 0x21b -+#define KEY_ATTENDANT_OFF 0x21c -+#define KEY_ATTENDANT_TOGGLE 0x21d /* Attendant call on or off */ -+#define KEY_LIGHTS_TOGGLE 0x21e /* Reading light on or off */ -+ -+#define BTN_DPAD_UP 0x220 -+#define BTN_DPAD_DOWN 0x221 -+#define BTN_DPAD_LEFT 0x222 -+#define BTN_DPAD_RIGHT 0x223 -+ -+#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */ -+ -+#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */ -+#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */ -+#define KEY_JOURNAL 0x242 /* AL Log/Journal/Timecard */ -+#define KEY_CONTROLPANEL 0x243 /* AL Control Panel */ -+#define KEY_APPSELECT 0x244 /* AL Select Task/Application */ -+#define KEY_SCREENSAVER 0x245 /* AL Screen Saver */ -+#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */ -+ -+#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */ -+#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */ -+ -+#define KEY_KBDINPUTASSIST_PREV 0x260 -+#define KEY_KBDINPUTASSIST_NEXT 0x261 -+#define KEY_KBDINPUTASSIST_PREVGROUP 0x262 -+#define KEY_KBDINPUTASSIST_NEXTGROUP 0x263 -+#define KEY_KBDINPUTASSIST_ACCEPT 0x264 -+#define KEY_KBDINPUTASSIST_CANCEL 0x265 -+ -+#define BTN_TRIGGER_HAPPY 0x2c0 -+#define BTN_TRIGGER_HAPPY1 0x2c0 -+#define BTN_TRIGGER_HAPPY2 0x2c1 -+#define BTN_TRIGGER_HAPPY3 0x2c2 -+#define BTN_TRIGGER_HAPPY4 0x2c3 -+#define BTN_TRIGGER_HAPPY5 0x2c4 -+#define BTN_TRIGGER_HAPPY6 0x2c5 -+#define BTN_TRIGGER_HAPPY7 0x2c6 -+#define BTN_TRIGGER_HAPPY8 0x2c7 -+#define BTN_TRIGGER_HAPPY9 0x2c8 -+#define BTN_TRIGGER_HAPPY10 0x2c9 -+#define BTN_TRIGGER_HAPPY11 0x2ca -+#define BTN_TRIGGER_HAPPY12 0x2cb -+#define BTN_TRIGGER_HAPPY13 0x2cc -+#define BTN_TRIGGER_HAPPY14 0x2cd -+#define BTN_TRIGGER_HAPPY15 0x2ce -+#define BTN_TRIGGER_HAPPY16 0x2cf -+#define BTN_TRIGGER_HAPPY17 0x2d0 -+#define BTN_TRIGGER_HAPPY18 0x2d1 -+#define BTN_TRIGGER_HAPPY19 0x2d2 -+#define BTN_TRIGGER_HAPPY20 0x2d3 -+#define BTN_TRIGGER_HAPPY21 0x2d4 -+#define BTN_TRIGGER_HAPPY22 0x2d5 -+#define BTN_TRIGGER_HAPPY23 0x2d6 -+#define BTN_TRIGGER_HAPPY24 0x2d7 -+#define BTN_TRIGGER_HAPPY25 0x2d8 -+#define BTN_TRIGGER_HAPPY26 0x2d9 -+#define BTN_TRIGGER_HAPPY27 0x2da -+#define BTN_TRIGGER_HAPPY28 0x2db -+#define BTN_TRIGGER_HAPPY29 0x2dc -+#define BTN_TRIGGER_HAPPY30 0x2dd -+#define BTN_TRIGGER_HAPPY31 0x2de -+#define BTN_TRIGGER_HAPPY32 0x2df -+#define BTN_TRIGGER_HAPPY33 0x2e0 -+#define BTN_TRIGGER_HAPPY34 0x2e1 -+#define BTN_TRIGGER_HAPPY35 0x2e2 -+#define BTN_TRIGGER_HAPPY36 0x2e3 -+#define BTN_TRIGGER_HAPPY37 0x2e4 -+#define BTN_TRIGGER_HAPPY38 0x2e5 -+#define BTN_TRIGGER_HAPPY39 0x2e6 -+#define BTN_TRIGGER_HAPPY40 0x2e7 -+ -+/* We avoid low common keys in module aliases so they don't get huge. */ -+#define KEY_MIN_INTERESTING KEY_MUTE -+#define KEY_MAX 0x2ff -+#define KEY_CNT (KEY_MAX+1) -+ -+/* -+ * Relative axes -+ */ -+ -+#define REL_X 0x00 -+#define REL_Y 0x01 -+#define REL_Z 0x02 -+#define REL_RX 0x03 -+#define REL_RY 0x04 -+#define REL_RZ 0x05 -+#define REL_HWHEEL 0x06 -+#define REL_DIAL 0x07 -+#define REL_WHEEL 0x08 -+#define REL_MISC 0x09 -+#define REL_MAX 0x0f -+#define REL_CNT (REL_MAX+1) -+ -+/* -+ * Absolute axes -+ */ -+ -+#define ABS_X 0x00 -+#define ABS_Y 0x01 -+#define ABS_Z 0x02 -+#define ABS_RX 0x03 -+#define ABS_RY 0x04 -+#define ABS_RZ 0x05 -+#define ABS_THROTTLE 0x06 -+#define ABS_RUDDER 0x07 -+#define ABS_WHEEL 0x08 -+#define ABS_GAS 0x09 -+#define ABS_BRAKE 0x0a -+#define ABS_HAT0X 0x10 -+#define ABS_HAT0Y 0x11 -+#define ABS_HAT1X 0x12 -+#define ABS_HAT1Y 0x13 -+#define ABS_HAT2X 0x14 -+#define ABS_HAT2Y 0x15 -+#define ABS_HAT3X 0x16 -+#define ABS_HAT3Y 0x17 -+#define ABS_PRESSURE 0x18 -+#define ABS_DISTANCE 0x19 -+#define ABS_TILT_X 0x1a -+#define ABS_TILT_Y 0x1b -+#define ABS_TOOL_WIDTH 0x1c -+ -+#define ABS_VOLUME 0x20 -+ -+#define ABS_MISC 0x28 -+ -+#define ABS_MT_SLOT 0x2f /* MT slot being modified */ -+#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */ -+#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */ -+#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */ -+#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */ -+#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */ -+#define ABS_MT_POSITION_X 0x35 /* Center X touch position */ -+#define ABS_MT_POSITION_Y 0x36 /* Center Y touch position */ -+#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */ -+#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */ -+#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */ -+#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */ -+#define ABS_MT_DISTANCE 0x3b /* Contact hover distance */ -+#define ABS_MT_TOOL_X 0x3c /* Center X tool position */ -+#define ABS_MT_TOOL_Y 0x3d /* Center Y tool position */ -+ -+ -+#define ABS_MAX 0x3f -+#define ABS_CNT (ABS_MAX+1) -+ -+/* -+ * Switch events -+ */ -+ -+#define SW_LID 0x00 /* set = lid shut */ -+#define SW_TABLET_MODE 0x01 /* set = tablet mode */ -+#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */ -+#define SW_RFKILL_ALL 0x03 /* rfkill master switch, type "any" -+ set = radio enabled */ -+#define SW_RADIO SW_RFKILL_ALL /* deprecated */ -+#define SW_MICROPHONE_INSERT 0x04 /* set = inserted */ -+#define SW_DOCK 0x05 /* set = plugged into dock */ -+#define SW_LINEOUT_INSERT 0x06 /* set = inserted */ -+#define SW_JACK_PHYSICAL_INSERT 0x07 /* set = mechanical switch set */ -+#define SW_VIDEOOUT_INSERT 0x08 /* set = inserted */ -+#define SW_CAMERA_LENS_COVER 0x09 /* set = lens covered */ -+#define SW_KEYPAD_SLIDE 0x0a /* set = keypad slide out */ -+#define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */ -+#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */ -+#define SW_LINEIN_INSERT 0x0d /* set = inserted */ -+#define SW_MUTE_DEVICE 0x0e /* set = device disabled */ -+#define SW_MAX 0x0f -+#define SW_CNT (SW_MAX+1) -+ -+/* -+ * Misc events -+ */ -+ -+#define MSC_SERIAL 0x00 -+#define MSC_PULSELED 0x01 -+#define MSC_GESTURE 0x02 -+#define MSC_RAW 0x03 -+#define MSC_SCAN 0x04 -+#define MSC_TIMESTAMP 0x05 -+#define MSC_MAX 0x07 -+#define MSC_CNT (MSC_MAX+1) -+ -+/* -+ * LEDs -+ */ -+ -+#define LED_NUML 0x00 -+#define LED_CAPSL 0x01 -+#define LED_SCROLLL 0x02 -+#define LED_COMPOSE 0x03 -+#define LED_KANA 0x04 -+#define LED_SLEEP 0x05 -+#define LED_SUSPEND 0x06 -+#define LED_MUTE 0x07 -+#define LED_MISC 0x08 -+#define LED_MAIL 0x09 -+#define LED_CHARGING 0x0a -+#define LED_MAX 0x0f -+#define LED_CNT (LED_MAX+1) -+ -+/* -+ * Autorepeat values -+ */ -+ -+#define REP_DELAY 0x00 -+#define REP_PERIOD 0x01 -+#define REP_MAX 0x01 -+#define REP_CNT (REP_MAX+1) -+ -+/* -+ * Sounds -+ */ -+ -+#define SND_CLICK 0x00 -+#define SND_BELL 0x01 -+#define SND_TONE 0x02 -+#define SND_MAX 0x07 -+#define SND_CNT (SND_MAX+1) -+ -+#endif diff --git a/package/boot/uboot-sunxi/patches/011-dt-sync-dts-files-with-kernel.patch b/package/boot/uboot-sunxi/patches/011-dt-sync-dts-files-with-kernel.patch deleted file mode 100644 index e36f9e3c5a..0000000000 --- a/package/boot/uboot-sunxi/patches/011-dt-sync-dts-files-with-kernel.patch +++ /dev/null @@ -1,7211 +0,0 @@ -From 80e5f83c0fc4bf42110cc55ce671ad7ddc7b08a4 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Mon, 14 Mar 2016 17:37:09 +0100 -Subject: [PATCH] sunxi: Sync dts files with the upstream kernel - -Sync dts files with the upstream kernel including -changes queued for 4.6: - -https://git.kernel.org/cgit/linux/kernel/git/mripard/linux.git/commit/?h=sunxi/dt-for-4.6 - -Note this adds a number of new unused board dts files. I've asked the -authors of the kernel commits adding these to submit a matching defconfig -to u-boot. - -Signed-off-by: Hans de Goede -Acked-by: Ian Campbell ---- - arch/arm/dts/Makefile | 8 +- - arch/arm/dts/axp22x.dtsi | 145 ++++++++++++ - arch/arm/dts/sun4i-a10-a1000.dts | 4 + - arch/arm/dts/sun4i-a10-chuwi-v7-cw0825.dts | 22 ++ - arch/arm/dts/sun4i-a10-cubieboard.dts | 4 + - arch/arm/dts/sun4i-a10-gemei-g9.dts | 63 +++++- - arch/arm/dts/sun4i-a10-inet1.dts | 48 ++++ - arch/arm/dts/sun4i-a10-inet97fv2.dts | 127 ++++++++++- - arch/arm/dts/sun4i-a10-inet9f-rev03.dts | 181 +++++++++++++++ - arch/arm/dts/sun4i-a10-itead-iteaduino-plus.dts | 86 +------ - arch/arm/dts/sun4i-a10-jesurun-q5.dts | 15 ++ - arch/arm/dts/sun4i-a10-marsboard.dts | 23 ++ - arch/arm/dts/sun4i-a10-mk802.dts | 37 +++ - arch/arm/dts/sun4i-a10-olinuxino-lime.dts | 12 + - arch/arm/dts/sun4i-a10-pcduino.dts | 58 ++++- - arch/arm/dts/sun4i-a10-pcduino2.dts | 78 +++++++ - arch/arm/dts/sun4i-a10-pov-protab2-ips9.dts | 69 ++++++ - arch/arm/dts/sun4i-a10.dtsi | 153 +++++++++++-- - arch/arm/dts/sun5i-a10s-auxtek-t004.dts | 14 ++ - arch/arm/dts/sun5i-a10s-olinuxino-micro.dts | 2 +- - arch/arm/dts/sun5i-a13-empire-electronix-d709.dts | 19 +- - arch/arm/dts/sun5i-a13-inet-98v-rev2.dts | 26 +-- - arch/arm/dts/sun5i-a13-utoo-p66.dts | 30 +++ - arch/arm/dts/sun5i-q8-common.dtsi | 10 + - arch/arm/dts/sun5i-r8-chip.dts | 47 +++- - arch/arm/dts/sun5i.dtsi | 31 +++ - arch/arm/dts/sun6i-a31-colombus.dts | 24 ++ - arch/arm/dts/sun6i-a31-hummingbird.dts | 132 ++++++----- - arch/arm/dts/sun6i-a31.dtsi | 65 +++++- - arch/arm/dts/sun6i-a31s-primo81.dts | 247 ++++++++++++++++++++- - arch/arm/dts/sun6i-a31s-sina31s-core.dtsi | 142 ++++++++++++ - arch/arm/dts/sun6i-a31s-sina31s.dts | 153 +++++++++++++ - .../arm/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts | 205 +++++++++++++++++ - arch/arm/dts/sun7i-a20-bananapi.dts | 78 ++++++- - arch/arm/dts/sun7i-a20-cubieboard2.dts | 23 ++ - arch/arm/dts/sun7i-a20-cubietruck.dts | 4 + - arch/arm/dts/sun7i-a20-icnova-swac.dts | 169 ++++++++++++++ - arch/arm/dts/sun7i-a20-itead-ibox.dts | 125 +++++++++++ - arch/arm/dts/sun7i-a20-lamobo-r1.dts | 10 - - arch/arm/dts/sun7i-a20-mk808c.dts | 39 ++++ - arch/arm/dts/sun7i-a20-olimex-som-evb.dts | 95 ++++++-- - arch/arm/dts/sun7i-a20-olinuxino-lime.dts | 12 + - arch/arm/dts/sun7i-a20-olinuxino-lime2.dts | 47 ++++ - arch/arm/dts/sun7i-a20-olinuxino-micro.dts | 6 + - arch/arm/dts/sun7i-a20-orangepi-mini.dts | 33 +++ - arch/arm/dts/sun7i-a20-orangepi.dts | 29 +++ - arch/arm/dts/sun7i-a20-pcduino3-nano.dts | 69 +++++- - arch/arm/dts/sun7i-a20-pcduino3.dts | 58 ++++- - arch/arm/dts/sun7i-a20-wexler-tab7200.dts | 90 +++++++- - arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts | 187 +++++++++++++++- - arch/arm/dts/sun7i-a20.dtsi | 113 +++++++++- - arch/arm/dts/sun8i-a23-a33.dtsi | 71 ++++-- - arch/arm/dts/sun8i-a23-gt90h-v4.dts | 120 +++++++++- - arch/arm/dts/sun8i-a23.dtsi | 25 +++ - arch/arm/dts/sun8i-a33-sinlinx-sina33.dts | 83 ++++++- - arch/arm/dts/sun8i-a33.dtsi | 45 ++++ - arch/arm/dts/sun8i-a83t-cubietruck-plus.dts | 65 ++++++ - arch/arm/dts/sun8i-a83t.dtsi | 125 +++++------ - arch/arm/dts/sun8i-h3-orangepi-pc.dts | 69 ++++++ - arch/arm/dts/sun8i-h3-orangepi-plus.dts | 63 ++++++ - arch/arm/dts/sun8i-h3.dtsi | 189 +++++++++++----- - arch/arm/dts/sun8i-q8-common.dtsi | 96 +++++++- - arch/arm/dts/sun9i-a80-cubieboard4.dts | 36 +++ - arch/arm/dts/sun9i-a80-optimus.dts | 48 ++-- - arch/arm/dts/sun9i-a80.dtsi | 204 +++++++++++++++-- - arch/arm/dts/sunxi-itead-core-common.dtsi | 136 ++++++++++++ - arch/arm/dts/sunxi-q8-common.dtsi | 6 + - 67 files changed, 4351 insertions(+), 497 deletions(-) - create mode 100644 arch/arm/dts/axp22x.dtsi - create mode 100644 arch/arm/dts/sun4i-a10-pcduino2.dts - create mode 100644 arch/arm/dts/sun6i-a31s-sina31s-core.dtsi - create mode 100644 arch/arm/dts/sun6i-a31s-sina31s.dts - create mode 100644 arch/arm/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts - create mode 100644 arch/arm/dts/sun7i-a20-icnova-swac.dts - create mode 100644 arch/arm/dts/sun7i-a20-itead-ibox.dts - create mode 100644 arch/arm/dts/sun8i-a83t-cubietruck-plus.dts - create mode 100644 arch/arm/dts/sunxi-itead-core-common.dtsi - ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -126,6 +126,7 @@ dtb-$(CONFIG_MACH_SUN4I) += \ - sun4i-a10-mk802ii.dtb \ - sun4i-a10-olinuxino-lime.dtb \ - sun4i-a10-pcduino.dtb \ -+ sun4i-a10-pcduino2.dtb \ - sun4i-a10-pov-protab2-ips9.dtb - dtb-$(CONFIG_MACH_SUN5I) += \ - sun5i-a10s-auxtek-t003.dtb \ -@@ -155,7 +156,9 @@ dtb-$(CONFIG_MACH_SUN6I) += \ - sun6i-a31-pangolin.dtb \ - sun6i-a31s-cs908.dtb \ - sun6i-a31s-primo81.dtb \ -- sun6i-a31s-sinovoip-bpi-m2.dtb -+ sun6i-a31s-sina31s.dtb \ -+ sun6i-a31s-sinovoip-bpi-m2.dtb \ -+ sun6i-a31s-yones-toptech-bs1078-v2.dtb - dtb-$(CONFIG_MACH_SUN7I) += \ - sun7i-a20-ainol-aw1.dtb \ - sun7i-a20-bananapi.dtb \ -@@ -164,6 +167,8 @@ dtb-$(CONFIG_MACH_SUN7I) += \ - sun7i-a20-cubietruck.dtb \ - sun7i-a20-hummingbird.dtb \ - sun7i-a20-i12-tvbox.dtb \ -+ sun7i-a20-icnova-swac.dtb \ -+ sun7i-a20-itead-ibox.dtb \ - sun7i-a20-lamobo-r1.dtb \ - sun7i-a20-m3.dtb \ - sun7i-a20-m5.dtb \ -@@ -190,6 +195,7 @@ dtb-$(CONFIG_MACH_SUN8I_A33) += \ - sun8i-a33-sinlinx-sina33.dtb - dtb-$(CONFIG_MACH_SUN8I_A83T) += \ - sun8i-a83t-allwinner-h8homlet-v2.dtb \ -+ sun8i-a83t-cubietruck-plus.dtb \ - sun8i-a83t-sinovoip-bpi-m3.dtb - dtb-$(CONFIG_MACH_SUN8I_H3) += \ - sun8i-h3-orangepi-pc.dtb \ ---- /dev/null -+++ b/arch/arm/dts/axp22x.dtsi -@@ -0,0 +1,145 @@ -+/* -+ * Copyright 2015 Chen-Yu Tsai -+ * -+ * Chen-Yu Tsai -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * AXP221/221s/223 Integrated Power Management Chip -+ * http://www.x-powers.com/product/AXP22X.php -+ * http://dl.linux-sunxi.org/AXP/AXP221%20Datasheet%20V1.2%2020130326%20.pdf -+ */ -+ -+&axp22x { -+ interrupt-controller; -+ #interrupt-cells = <1>; -+ -+ regulators { -+ /* Default work frequency for buck regulators */ -+ x-powers,dcdc-freq = <3000>; -+ -+ reg_dcdc1: dcdc1 { -+ regulator-name = "dcdc1"; -+ }; -+ -+ reg_dcdc2: dcdc2 { -+ regulator-name = "dcdc2"; -+ }; -+ -+ reg_dcdc3: dcdc3 { -+ regulator-name = "dcdc3"; -+ }; -+ -+ reg_dcdc4: dcdc4 { -+ regulator-name = "dcdc4"; -+ }; -+ -+ reg_dcdc5: dcdc5 { -+ regulator-name = "dcdc5"; -+ }; -+ -+ reg_dc1sw: dc1sw { -+ regulator-name = "dc1sw"; -+ }; -+ -+ reg_dc5ldo: dc5ldo { -+ regulator-name = "dc5ldo"; -+ }; -+ -+ reg_aldo1: aldo1 { -+ regulator-name = "aldo1"; -+ }; -+ -+ reg_aldo2: aldo2 { -+ regulator-name = "aldo2"; -+ }; -+ -+ reg_aldo3: aldo3 { -+ regulator-name = "aldo3"; -+ }; -+ -+ reg_dldo1: dldo1 { -+ regulator-name = "dldo1"; -+ }; -+ -+ reg_dldo2: dldo2 { -+ regulator-name = "dldo2"; -+ }; -+ -+ reg_dldo3: dldo3 { -+ regulator-name = "dldo3"; -+ }; -+ -+ reg_dldo4: dldo4 { -+ regulator-name = "dldo4"; -+ }; -+ -+ reg_eldo1: eldo1 { -+ regulator-name = "eldo1"; -+ }; -+ -+ reg_eldo2: eldo2 { -+ regulator-name = "eldo2"; -+ }; -+ -+ reg_eldo3: eldo3 { -+ regulator-name = "eldo3"; -+ }; -+ -+ reg_ldo_io0: ldo_io0 { -+ regulator-name = "ldo_io0"; -+ status = "disabled"; -+ }; -+ -+ reg_ldo_io1: ldo_io1 { -+ regulator-name = "ldo_io1"; -+ status = "disabled"; -+ }; -+ -+ reg_rtc_ldo: rtc_ldo { -+ /* RTC_LDO is a fixed, always-on regulator */ -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "rtc_ldo"; -+ }; -+ }; -+}; ---- a/arch/arm/dts/sun4i-a10-a1000.dts -+++ b/arch/arm/dts/sun4i-a10-a1000.dts -@@ -93,6 +93,10 @@ - status = "okay"; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &ehci0 { - status = "okay"; - }; ---- a/arch/arm/dts/sun4i-a10-chuwi-v7-cw0825.dts -+++ b/arch/arm/dts/sun4i-a10-chuwi-v7-cw0825.dts -@@ -45,6 +45,7 @@ - #include "sunxi-common-regulators.dtsi" - #include - #include -+#include - - / { - model = "Chuwi V7 CW0825"; -@@ -78,6 +79,27 @@ - }; - }; - -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins_a>; -+ status = "okay"; -+}; -+ -+&i2c2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins_a>; -+ status = "okay"; -+ -+ ft5306de4: touchscreen@38 { -+ compatible = "edt,edt-ft5406"; -+ reg = <0x38>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>; -+ touchscreen-size-x = <1024>; -+ touchscreen-size-y = <768>; -+ }; -+}; -+ - &lradc { - vref-supply = <®_vcc3v0>; - status = "okay"; ---- a/arch/arm/dts/sun4i-a10-cubieboard.dts -+++ b/arch/arm/dts/sun4i-a10-cubieboard.dts -@@ -83,6 +83,10 @@ - status = "okay"; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &cpu0 { - cpu-supply = <®_dcdc2>; - }; ---- a/arch/arm/dts/sun4i-a10-gemei-g9.dts -+++ b/arch/arm/dts/sun4i-a10-gemei-g9.dts -@@ -47,6 +47,7 @@ - #include "sunxi-common-regulators.dtsi" - #include - #include -+#include - - / { - model = "Gemei G9 Tablet"; -@@ -64,12 +65,22 @@ - /* - * TODO: - * 2x cameras via CSI -- * bma250 IRQs - * AXP battery management - * NAND - * OTG - * Touchscreen - gt801_2plus1 @ i2c adapter 2 @ 0x48 - */ -+&codec { -+ /* PH15 controls power to external amplifier (ft2012q) */ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&codec_pa_pin>; -+ allwinner,pa-gpios = <&pio 7 15 GPIO_ACTIVE_HIGH>; -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; - - &ehci0 { - status = "okay"; -@@ -85,15 +96,13 @@ - status = "okay"; - - axp209: pmic@34 { -- compatible = "x-powers,axp209"; - reg = <0x34>; - interrupts = <0>; -- -- interrupt-controller; -- #interrupt-cells = <1>; - }; - }; - -+#include "axp209.dtsi" -+ - &i2c1 { - pinctrl-names = "default"; - pinctrl-0 = <&i2c1_pins_a>; -@@ -103,17 +112,13 @@ - bma250@18 { - compatible = "bosch,bma250"; - reg = <0x18>; -- -- /* -- * TODO: interrupt pins: -- * int1 - PH00 -- * int2 - PI10 -- */ -+ interrupt-parent = <&pio>; -+ interrupts = <7 0 IRQ_TYPE_EDGE_RISING>; /* PH00 / EINT0 */ - }; - }; - - &lradc { -- vref-supply = <®_vcc3v0>; -+ vref-supply = <®_ldo2>; - - status = "okay"; - -@@ -149,6 +154,40 @@ - status = "okay"; - }; - -+&pio { -+ codec_pa_pin: codec_pa_pin@0 { -+ allwinner,pins = "PH15"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1250000>; -+ regulator-max-microvolt = <1250000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; -+ - ®_usb1_vbus { - status = "okay"; - }; ---- a/arch/arm/dts/sun4i-a10-inet1.dts -+++ b/arch/arm/dts/sun4i-a10-inet1.dts -@@ -47,6 +47,7 @@ - #include - #include - #include -+#include - - / { - model = "iNet-1"; -@@ -56,11 +57,25 @@ - serial0 = &uart0; - }; - -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&bl_en_pin_inet>; -+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; -+ default-brightness-level = <8>; -+ enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ -+ }; -+ - chosen { - stdout-path = "serial0:115200n8"; - }; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &cpu0 { - cpu-supply = <®_dcdc2>; - }; -@@ -104,6 +119,19 @@ - pinctrl-names = "default"; - pinctrl-0 = <&i2c2_pins_a>; - status = "okay"; -+ -+ ft5x: touchscreen@38 { -+ compatible = "edt,edt-ft5406"; -+ reg = <0x38>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&touchscreen_wake_pin>; -+ wake-gpios = <&pio 1 13 GPIO_ACTIVE_HIGH>; /* PB13 */ -+ touchscreen-size-x = <600>; -+ touchscreen-size-y = <1024>; -+ touchscreen-swapped-x-y; -+ }; - }; - - &lradc { -@@ -151,6 +179,20 @@ - }; - - &pio { -+ bl_en_pin_inet: bl_en_pin@0 { -+ allwinner,pins = "PH7"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ touchscreen_wake_pin: touchscreen_wake_pin@0 { -+ allwinner,pins = "PB13"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - usb0_id_detect_pin: usb0_id_detect_pin@0 { - allwinner,pins = "PH4"; - allwinner,function = "gpio_in"; -@@ -166,6 +208,12 @@ - }; - }; - -+&pwm { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pins_a>; -+ status = "okay"; -+}; -+ - ®_dcdc2 { - regulator-always-on; - regulator-min-microvolt = <1000000>; ---- a/arch/arm/dts/sun4i-a10-inet97fv2.dts -+++ b/arch/arm/dts/sun4i-a10-inet97fv2.dts -@@ -47,6 +47,8 @@ - #include "sunxi-common-regulators.dtsi" - - #include -+#include -+#include - - / { - model = "INet-97F Rev 02"; -@@ -61,8 +63,8 @@ - }; - }; - --&ehci0 { -- status = "okay"; -+&cpu0 { -+ cpu-supply = <®_dcdc2>; - }; - - &ehci1 { -@@ -75,12 +77,71 @@ - status = "okay"; - - axp209: pmic@34 { -- compatible = "x-powers,axp209"; - reg = <0x34>; - interrupts = <0>; -+ }; -+}; -+ -+#include "axp209.dtsi" -+ -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins_a>; -+ status = "okay"; -+}; -+ -+&i2c2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins_a>; -+ status = "okay"; -+ -+ ft5406ee8: touchscreen@38 { -+ compatible = "edt,edt-ft5406"; -+ reg = <0x38>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>; -+ touchscreen-size-x = <800>; -+ touchscreen-size-y = <480>; -+ }; -+}; -+ -+&lradc { -+ vref-supply = <®_ldo2>; -+ status = "okay"; -+ -+ button@200 { -+ label = "Menu"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <200000>; -+ }; -+ -+ button@600 { -+ label = "Volume Up"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <600000>; -+ }; - -- interrupt-controller; -- #interrupt-cells = <1>; -+ button@800 { -+ label = "Volume Down"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <800000>; -+ }; -+ -+ button@1000 { -+ label = "Home"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <1000000>; -+ }; -+ -+ button@1200 { -+ label = "Esc"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <1200000>; - }; - }; - -@@ -94,15 +155,52 @@ - status = "okay"; - }; - --&ohci0 { -+&otg_sram { - status = "okay"; - }; - --&ohci1 { -- status = "okay"; -+&pio { -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 { -+ allwinner,pins = "PH5"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; - }; - --®_usb1_vbus { -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1250000>; -+ regulator-max-microvolt = <1250000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; -+ -+®_usb0_vbus { - status = "okay"; - }; - -@@ -116,8 +214,17 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ - &usbphy { -- usb1_vbus-supply = <®_usb1_vbus>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ -+ usb0_vbus-supply = <®_usb0_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; - }; ---- a/arch/arm/dts/sun4i-a10-inet9f-rev03.dts -+++ b/arch/arm/dts/sun4i-a10-inet9f-rev03.dts -@@ -59,6 +59,159 @@ - chosen { - stdout-path = "serial0:115200n8"; - }; -+ -+ gpio_keys { -+ compatible = "gpio-keys-polled"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&key_pins_inet9f>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ poll-interval = <20>; -+ -+ button@0 { -+ label = "Left Joystick Left"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <0xffffffff>; /* -1 */ -+ gpios = <&pio 0 6 GPIO_ACTIVE_LOW>; /* PA6 */ -+ }; -+ -+ button@1 { -+ label = "Left Joystick Right"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <1>; -+ gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; /* PA5 */ -+ }; -+ -+ button@2 { -+ label = "Left Joystick Up"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <0xffffffff>; /* -1 */ -+ gpios = <&pio 0 8 GPIO_ACTIVE_LOW>; /* PA8 */ -+ }; -+ -+ button@3 { -+ label = "Left Joystick Down"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <1>; -+ gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */ -+ }; -+ -+ button@4 { -+ label = "Right Joystick Left"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <0xffffffff>; /* -1 */ -+ gpios = <&pio 0 1 GPIO_ACTIVE_LOW>; /* PA1 */ -+ }; -+ -+ button@5 { -+ label = "Right Joystick Right"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <1>; -+ gpios = <&pio 0 0 GPIO_ACTIVE_LOW>; /* PA0 */ -+ }; -+ -+ button@6 { -+ label = "Right Joystick Up"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <0xffffffff>; /* -1 */ -+ gpios = <&pio 0 3 GPIO_ACTIVE_LOW>; /* PA3 */ -+ }; -+ -+ button@7 { -+ label = "Right Joystick Down"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <1>; -+ gpios = <&pio 0 4 GPIO_ACTIVE_LOW>; /* PA4 */ -+ }; -+ -+ button@8 { -+ label = "DPad Left"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <0xffffffff>; /* -1 */ -+ gpios = <&pio 7 23 GPIO_ACTIVE_LOW>; /* PH23 */ -+ }; -+ -+ button@9 { -+ label = "DPad Right"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <1>; -+ gpios = <&pio 7 24 GPIO_ACTIVE_LOW>; /* PH24 */ -+ }; -+ -+ button@10 { -+ label = "DPad Up"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <0xffffffff>; /* -1 */ -+ gpios = <&pio 7 25 GPIO_ACTIVE_LOW>; /* PH25 */ -+ }; -+ -+ button@11 { -+ label = "DPad Down"; -+ linux,code = ; -+ linux,input-type = ; -+ linux,input-value = <1>; -+ gpios = <&pio 7 26 GPIO_ACTIVE_LOW>; /* PH26 */ -+ }; -+ -+ button@12 { -+ label = "Button X"; -+ linux,code = ; -+ gpios = <&pio 0 16 GPIO_ACTIVE_LOW>; /* PA16 */ -+ }; -+ -+ button@13 { -+ label = "Button Y"; -+ linux,code = ; -+ gpios = <&pio 0 14 GPIO_ACTIVE_LOW>; /* PA14 */ -+ }; -+ -+ button@14 { -+ label = "Button A"; -+ linux,code = ; -+ gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */ -+ }; -+ -+ button@15 { -+ label = "Button B"; -+ linux,code = ; -+ gpios = <&pio 0 15 GPIO_ACTIVE_LOW>; /* PA15 */ -+ }; -+ -+ button@16 { -+ label = "Select Button"; -+ linux,code = ; -+ gpios = <&pio 0 11 GPIO_ACTIVE_LOW>; /* PA11 */ -+ }; -+ -+ button@17 { -+ label = "Start Button"; -+ linux,code = ; -+ gpios = <&pio 0 12 GPIO_ACTIVE_LOW>; /* PA12 */ -+ }; -+ -+ button@18 { -+ label = "Top Left Button"; -+ linux,code = ; -+ gpios = <&pio 7 22 GPIO_ACTIVE_LOW>; /* PH22 */ -+ }; -+ -+ button@19 { -+ label = "Top Right Button"; -+ linux,code = ; -+ gpios = <&pio 0 13 GPIO_ACTIVE_LOW>; /* PA13 */ -+ }; -+ }; - }; - - &cpu0 { -@@ -86,12 +239,29 @@ - pinctrl-names = "default"; - pinctrl-0 = <&i2c1_pins_a>; - status = "okay"; -+ -+ /* Accelerometer */ -+ bma250@18 { -+ compatible = "bosch,bma250"; -+ reg = <0x18>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 0 IRQ_TYPE_EDGE_RISING>; /* PH0 / EINT0 */ -+ }; - }; - - &i2c2 { - pinctrl-names = "default"; - pinctrl-0 = <&i2c2_pins_a>; - status = "okay"; -+ -+ ft5406ee8: touchscreen@38 { -+ compatible = "edt,edt-ft5406"; -+ reg = <0x38>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>; -+ touchscreen-size-x = <800>; -+ touchscreen-size-y = <480>; -+ }; - }; - - &lradc { -@@ -149,6 +319,17 @@ - }; - - &pio { -+ key_pins_inet9f: key_pins@0 { -+ allwinner,pins = "PA0", "PA1", "PA3", "PA4", -+ "PA5", "PA6", "PA8", "PA9", -+ "PA11", "PA12", "PA13", -+ "PA14", "PA15", "PA16", "PA17", -+ "PH22", "PH23", "PH24", "PH25", "PH26"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - usb0_id_detect_pin: usb0_id_detect_pin@0 { - allwinner,pins = "PH4"; - allwinner,function = "gpio_in"; ---- a/arch/arm/dts/sun4i-a10-itead-iteaduino-plus.dts -+++ b/arch/arm/dts/sun4i-a10-itead-iteaduino-plus.dts -@@ -1,5 +1,6 @@ - /* - * Copyright 2015 Josef Gajdusek -+ * Copyright 2015 - Marcus Cooper - * - * This file is dual-licensed: you can use it either under the terms - * of the GPL or the X11 license, at your option. Note that this dual -@@ -42,22 +43,11 @@ - - /dts-v1/; - #include "sun4i-a10.dtsi" --#include "sunxi-common-regulators.dtsi" -- --#include --#include -+#include "sunxi-itead-core-common.dtsi" - - / { - model = "Iteaduino Plus A10"; - compatible = "itead,iteaduino-plus-a10", "allwinner,sun4i-a10"; -- -- aliases { -- serial0 = &uart0; -- }; -- -- chosen { -- stdout-path = "serial0:115200n8"; -- }; - }; - - &ahci { -@@ -65,18 +55,6 @@ - status = "okay"; - }; - --&cpu0 { -- cpu-supply = <®_dcdc2>; --}; -- --&ehci0 { -- status = "okay"; --}; -- --&ehci1 { -- status = "okay"; --}; -- - &emac { - pinctrl-names = "default"; - pinctrl-0 = <&emac_pins_a>; -@@ -89,12 +67,7 @@ - }; - - &i2c0 { -- pinctrl-names = "default"; -- pinctrl-0 = <&i2c0_pins_a>; -- status = "okay"; -- - axp209: pmic@34 { -- reg = <0x34>; - interrupts = <0>; - }; - }; -@@ -135,68 +108,13 @@ - status = "okay"; - }; - --&ohci0 { -- status = "okay"; --}; -- --&ohci1 { -- status = "okay"; --}; -- - ®_ahci_5v { - status = "okay"; - }; - --#include "axp209.dtsi" -- --®_dcdc2 { -- regulator-always-on; -- regulator-min-microvolt = <1000000>; -- regulator-max-microvolt = <1450000>; -- regulator-name = "vdd-cpu"; --}; -- --®_dcdc3 { -- regulator-always-on; -- regulator-min-microvolt = <1000000>; -- regulator-max-microvolt = <1400000>; -- regulator-name = "vdd-int-dll"; --}; -- --®_ldo1 { -- regulator-name = "vdd-rtc"; --}; -- --®_ldo2 { -- regulator-always-on; -- regulator-min-microvolt = <3000000>; -- regulator-max-microvolt = <3000000>; -- regulator-name = "avcc"; --}; -- --®_usb1_vbus { -- status = "okay"; --}; -- --®_usb2_vbus { -- status = "okay"; --}; -- - &spi0 { - pinctrl-names = "default"; - pinctrl-0 = <&spi0_pins_a>, - <&spi0_cs0_pins_a>; - status = "okay"; - }; -- --&uart0 { -- pinctrl-names = "default"; -- pinctrl-0 = <&uart0_pins_a>; -- status = "okay"; --}; -- --&usbphy { -- usb1_vbus-supply = <®_usb1_vbus>; -- usb2_vbus-supply = <®_usb2_vbus>; -- status = "okay"; --}; ---- a/arch/arm/dts/sun4i-a10-jesurun-q5.dts -+++ b/arch/arm/dts/sun4i-a10-jesurun-q5.dts -@@ -156,6 +156,10 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { - emac_power_pin_q5: emac_power_pin@0 { - allwinner,pins = "PH19"; -@@ -172,6 +176,11 @@ - }; - }; - -+®_usb0_vbus { -+ regulator-boot-on; -+ status = "okay"; -+}; -+ - ®_usb1_vbus { - status = "okay"; - }; -@@ -186,7 +195,13 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "host"; -+ status = "okay"; -+}; -+ - &usbphy { -+ usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun4i-a10-marsboard.dts -+++ b/arch/arm/dts/sun4i-a10-marsboard.dts -@@ -91,6 +91,10 @@ - status = "okay"; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -154,6 +158,10 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { - led_pins_marsboard: led_pins@0 { - allwinner,pins = "PB5", "PB6", "PB7", "PB8"; -@@ -161,6 +169,13 @@ - allwinner,drive = ; - allwinner,pull = ; - }; -+ -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; - }; - - ®_usb1_vbus { -@@ -184,7 +199,15 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun4i-a10-mk802.dts -+++ b/arch/arm/dts/sun4i-a10-mk802.dts -@@ -44,6 +44,7 @@ - #include "sun4i-a10.dtsi" - #include "sunxi-common-regulators.dtsi" - #include -+#include - - / { - model = "MK802"; -@@ -58,6 +59,10 @@ - }; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -80,7 +85,25 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 { -+ allwinner,pins = "PH5"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - usb2_vbus_pin_mk802: usb2_vbus_pin@0 { - allwinner,pins = "PH12"; - allwinner,function = "gpio_out"; -@@ -89,6 +112,10 @@ - }; - }; - -+®_usb0_vbus { -+ status = "okay"; -+}; -+ - ®_usb1_vbus { - status = "okay"; - }; -@@ -105,7 +132,17 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; -+ usb0_id_det-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_det-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ -+ usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun4i-a10-olinuxino-lime.dts -+++ b/arch/arm/dts/sun4i-a10-olinuxino-lime.dts -@@ -124,6 +124,18 @@ - }; - }; - -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins_a>; -+ status = "okay"; -+ -+ eeprom: eeprom@50 { -+ compatible = "atmel,24c16"; -+ reg = <0x50>; -+ pagesize = <16>; -+ }; -+}; -+ - &mdio { - status = "okay"; - ---- a/arch/arm/dts/sun4i-a10-pcduino.dts -+++ b/arch/arm/dts/sun4i-a10-pcduino.dts -@@ -104,6 +104,10 @@ - }; - }; - -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -129,12 +133,8 @@ - status = "okay"; - - axp209: pmic@34 { -- compatible = "x-powers,axp209"; - reg = <0x34>; - interrupts = <0>; -- -- interrupt-controller; -- #interrupt-cells = <1>; - }; - }; - -@@ -164,6 +164,10 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { - led_pins_pcduino: led_pins@0 { - allwinner,pins = "PH15", "PH16"; -@@ -178,14 +182,40 @@ - allwinner,drive = ; - allwinner,pull = ; - }; -+ -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; - }; - --®_usb1_vbus { -- status = "okay"; -+#include "axp209.dtsi" -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; - }; - --®_usb2_vbus { -- status = "okay"; -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; - }; - - &uart0 { -@@ -194,8 +224,16 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ - &usbphy { -- usb1_vbus-supply = <®_usb1_vbus>; -- usb2_vbus-supply = <®_usb2_vbus>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb1_vbus-supply = <®_vcc5v0>; /* USB1 VBUS is always on */ -+ usb2_vbus-supply = <®_vcc5v0>; /* USB2 VBUS is always on */ - status = "okay"; - }; ---- /dev/null -+++ b/arch/arm/dts/sun4i-a10-pcduino2.dts -@@ -0,0 +1,78 @@ -+/* -+ * Copyright 2015 Siarhei Siamashka -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * The LinkSprite pcDuino2 board is almost identical to the older -+ * LinkSprite pcDuino1 board. The only software visible difference -+ * is that the pcDuino2 board got a USB VBUS voltage regulator, which -+ * is controlled by the PD2 pin (pulled-up by default). Also one of -+ * the USB host ports has been replaced with a USB WIFI chip. -+ */ -+ -+#include "sun4i-a10-pcduino.dts" -+ -+/ { -+ model = "LinkSprite pcDuino2"; -+ compatible = "linksprite,a10-pcduino2", "allwinner,sun4i-a10"; -+}; -+ -+&pio { -+ usb2_vbus_pin_pcduino2: usb2_vbus_pin@0 { -+ allwinner,pins = "PD2"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+®_usb2_vbus { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb2_vbus_pin_pcduino2>; -+ gpio = <&pio 3 2 GPIO_ACTIVE_HIGH>; -+ status = "okay"; -+}; -+ -+&usbphy { -+ usb1_vbus-supply = <®_vcc3v3>; /* USB WIFI is always on */ -+ usb2_vbus-supply = <®_usb2_vbus>; -+ status = "okay"; -+}; ---- a/arch/arm/dts/sun4i-a10-pov-protab2-ips9.dts -+++ b/arch/arm/dts/sun4i-a10-pov-protab2-ips9.dts -@@ -47,6 +47,7 @@ - #include - #include - #include -+#include - - / { - model = "Point of View Protab2-IPS9"; -@@ -56,11 +57,28 @@ - serial0 = &uart0; - }; - -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&bl_en_pin_protab>; -+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; -+ default-brightness-level = <8>; -+ enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ -+ }; -+ - chosen { - stdout-path = "serial0:115200n8"; - }; - }; - -+&codec { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&codec_pa_pin>; -+ allwinner,pa-gpios = <&pio 7 15 GPIO_ACTIVE_HIGH>; /* PH15 */ -+ status = "okay"; -+}; -+ - &cpu0 { - cpu-supply = <®_dcdc2>; - }; -@@ -86,12 +104,36 @@ - pinctrl-names = "default"; - pinctrl-0 = <&i2c1_pins_a>; - status = "okay"; -+ -+ /* Accelerometer */ -+ bma250@18 { -+ compatible = "bosch,bma250"; -+ reg = <0x18>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 0 IRQ_TYPE_EDGE_RISING>; /* PH0 / EINT0 */ -+ }; - }; - - &i2c2 { - pinctrl-names = "default"; - pinctrl-0 = <&i2c2_pins_a>; - status = "okay"; -+ -+ pixcir_ts@5c { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&touchscreen_pins>; -+ compatible = "pixcir,pixcir_tangoc"; -+ reg = <0x5c>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>; /* EINT21 (PH21) */ -+ attb-gpio = <&pio 7 21 GPIO_ACTIVE_HIGH>; /* PH21 */ -+ enable-gpios = <&pio 0 5 GPIO_ACTIVE_LOW>; -+ wake-gpios = <&pio 1 13 GPIO_ACTIVE_LOW>; -+ touchscreen-size-x = <1024>; -+ touchscreen-size-y = <768>; -+ touchscreen-inverted-x; -+ touchscreen-inverted-y; -+ }; - }; - - &lradc { -@@ -128,6 +170,27 @@ - }; - - &pio { -+ bl_en_pin_protab: bl_en_pin@0 { -+ allwinner,pins = "PH7"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ codec_pa_pin: codec_pa_pin@0 { -+ allwinner,pins = "PH15"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ touchscreen_pins: touchscreen_pins@0 { -+ allwinner,pins = "PA5", "PB13"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - usb0_id_detect_pin: usb0_id_detect_pin@0 { - allwinner,pins = "PH4"; - allwinner,function = "gpio_in"; -@@ -143,6 +206,12 @@ - }; - }; - -+&pwm { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pins_a>; -+ status = "okay"; -+}; -+ - ®_dcdc2 { - regulator-always-on; - regulator-min-microvolt = <1000000>; ---- a/arch/arm/dts/sun4i-a10.dtsi -+++ b/arch/arm/dts/sun4i-a10.dtsi -@@ -45,6 +45,7 @@ - - #include - -+#include - #include - #include - -@@ -65,7 +66,7 @@ - "simple-framebuffer"; - allwinner,pipeline = "de_be0-lcd0-hdmi"; - clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>, -- <&ahb_gates 44>; -+ <&ahb_gates 44>, <&dram_gates 26>; - status = "disabled"; - }; - -@@ -74,7 +75,8 @@ - "simple-framebuffer"; - allwinner,pipeline = "de_fe0-de_be0-lcd0-hdmi"; - clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>, -- <&ahb_gates 44>, <&ahb_gates 46>; -+ <&ahb_gates 44>, <&ahb_gates 46>, -+ <&dram_gates 25>, <&dram_gates 26>; - status = "disabled"; - }; - -@@ -83,7 +85,8 @@ - "simple-framebuffer"; - allwinner,pipeline = "de_fe0-de_be0-lcd0"; - clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>, -- <&ahb_gates 46>; -+ <&ahb_gates 46>, <&dram_gates 25>, -+ <&dram_gates 26>; - status = "disabled"; - }; - -@@ -92,7 +95,8 @@ - "simple-framebuffer"; - allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0"; - clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>, -- <&ahb_gates 44>, <&ahb_gates 46>; -+ <&ahb_gates 44>, <&ahb_gates 46>, -+ <&dram_gates 25>, <&dram_gates 26>; - status = "disabled"; - }; - }; -@@ -195,6 +199,15 @@ - clock-output-names = "pll1"; - }; - -+ pll2: clk@01c20008 { -+ #clock-cells = <1>; -+ compatible = "allwinner,sun4i-a10-pll2-clk"; -+ reg = <0x01c20008 0x8>; -+ clocks = <&osc24M>; -+ clock-output-names = "pll2-1x", "pll2-2x", -+ "pll2-4x", "pll2-8x"; -+ }; -+ - pll4: clk@01c20018 { - #clock-cells = <0>; - compatible = "allwinner,sun4i-a10-pll1-clk"; -@@ -241,6 +254,7 @@ - compatible = "allwinner,sun4i-a10-axi-gates-clk"; - reg = <0x01c2005c 0x4>; - clocks = <&axi>; -+ clock-indices = <0>; - clock-output-names = "axi_dram"; - }; - -@@ -257,17 +271,36 @@ - compatible = "allwinner,sun4i-a10-ahb-gates-clk"; - reg = <0x01c20060 0x8>; - clocks = <&ahb>; -+ clock-indices = <0>, <1>, -+ <2>, <3>, -+ <4>, <5>, <6>, -+ <7>, <8>, <9>, -+ <10>, <11>, <12>, -+ <13>, <14>, <16>, -+ <17>, <18>, <20>, -+ <21>, <22>, <23>, -+ <24>, <25>, <26>, -+ <32>, <33>, <34>, -+ <35>, <36>, <37>, -+ <40>, <41>, <43>, -+ <44>, <45>, -+ <46>, <47>, -+ <50>, <52>; - clock-output-names = "ahb_usb0", "ahb_ehci0", -- "ahb_ohci0", "ahb_ehci1", "ahb_ohci1", "ahb_ss", -- "ahb_dma", "ahb_bist", "ahb_mmc0", "ahb_mmc1", -- "ahb_mmc2", "ahb_mmc3", "ahb_ms", "ahb_nand", -- "ahb_sdram", "ahb_ace", "ahb_emac", "ahb_ts", -- "ahb_spi0", "ahb_spi1", "ahb_spi2", "ahb_spi3", -- "ahb_pata", "ahb_sata", "ahb_gps", "ahb_ve", -- "ahb_tvd", "ahb_tve0", "ahb_tve1", "ahb_lcd0", -- "ahb_lcd1", "ahb_csi0", "ahb_csi1", "ahb_hdmi", -- "ahb_de_be0", "ahb_de_be1", "ahb_de_fe0", -- "ahb_de_fe1", "ahb_mp", "ahb_mali400"; -+ "ahb_ohci0", "ahb_ehci1", -+ "ahb_ohci1", "ahb_ss", "ahb_dma", -+ "ahb_bist", "ahb_mmc0", "ahb_mmc1", -+ "ahb_mmc2", "ahb_mmc3", "ahb_ms", -+ "ahb_nand", "ahb_sdram", "ahb_ace", -+ "ahb_emac", "ahb_ts", "ahb_spi0", -+ "ahb_spi1", "ahb_spi2", "ahb_spi3", -+ "ahb_pata", "ahb_sata", "ahb_gps", -+ "ahb_ve", "ahb_tvd", "ahb_tve0", -+ "ahb_tve1", "ahb_lcd0", "ahb_lcd1", -+ "ahb_csi0", "ahb_csi1", "ahb_hdmi", -+ "ahb_de_be0", "ahb_de_be1", -+ "ahb_de_fe0", "ahb_de_fe1", -+ "ahb_mp", "ahb_mali400"; - }; - - apb0: apb0@01c20054 { -@@ -283,9 +316,14 @@ - compatible = "allwinner,sun4i-a10-apb0-gates-clk"; - reg = <0x01c20068 0x4>; - clocks = <&apb0>; -+ clock-indices = <0>, <1>, -+ <2>, <3>, -+ <5>, <6>, -+ <7>, <10>; - clock-output-names = "apb0_codec", "apb0_spdif", -- "apb0_ac97", "apb0_iis", "apb0_pio", "apb0_ir0", -- "apb0_ir1", "apb0_keypad"; -+ "apb0_ac97", "apb0_iis", -+ "apb0_pio", "apb0_ir0", -+ "apb0_ir1", "apb0_keypad"; - }; - - apb1: clk@01c20058 { -@@ -301,12 +339,22 @@ - compatible = "allwinner,sun4i-a10-apb1-gates-clk"; - reg = <0x01c2006c 0x4>; - clocks = <&apb1>; -+ clock-indices = <0>, <1>, -+ <2>, <4>, -+ <5>, <6>, -+ <7>, <16>, -+ <17>, <18>, -+ <19>, <20>, -+ <21>, <22>, -+ <23>; - clock-output-names = "apb1_i2c0", "apb1_i2c1", -- "apb1_i2c2", "apb1_can", "apb1_scr", -- "apb1_ps20", "apb1_ps21", "apb1_uart0", -- "apb1_uart1", "apb1_uart2", "apb1_uart3", -- "apb1_uart4", "apb1_uart5", "apb1_uart6", -- "apb1_uart7"; -+ "apb1_i2c2", "apb1_can", -+ "apb1_scr", "apb1_ps20", -+ "apb1_ps21", "apb1_uart0", -+ "apb1_uart1", "apb1_uart2", -+ "apb1_uart3", "apb1_uart4", -+ "apb1_uart5", "apb1_uart6", -+ "apb1_uart7"; - }; - - nand_clk: clk@01c20080 { -@@ -446,6 +494,48 @@ - clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; - clock-output-names = "spi3"; - }; -+ -+ dram_gates: clk@01c20100 { -+ #clock-cells = <1>; -+ compatible = "allwinner,sun4i-a10-dram-gates-clk"; -+ reg = <0x01c20100 0x4>; -+ clocks = <&pll5 0>; -+ clock-indices = <0>, -+ <1>, <2>, -+ <3>, -+ <4>, -+ <5>, <6>, -+ <15>, -+ <24>, <25>, -+ <26>, <27>, -+ <28>, <29>; -+ clock-output-names = "dram_ve", -+ "dram_csi0", "dram_csi1", -+ "dram_ts", -+ "dram_tvd", -+ "dram_tve0", "dram_tve1", -+ "dram_output", -+ "dram_de_fe1", "dram_de_fe0", -+ "dram_de_be0", "dram_de_be1", -+ "dram_de_mp", "dram_ace"; -+ }; -+ -+ ve_clk: clk@01c2013c { -+ #clock-cells = <0>; -+ #reset-cells = <0>; -+ compatible = "allwinner,sun4i-a10-ve-clk"; -+ reg = <0x01c2013c 0x4>; -+ clocks = <&pll4>; -+ clock-output-names = "ve"; -+ }; -+ -+ codec_clk: clk@01c20140 { -+ #clock-cells = <0>; -+ compatible = "allwinner,sun4i-a10-codec-clk"; -+ reg = <0x01c20140 0x4>; -+ clocks = <&pll2 SUN4I_A10_PLL2_1X>; -+ clock-output-names = "codec"; -+ }; - }; - - soc@01c00000 { -@@ -656,6 +746,14 @@ - status = "disabled"; - }; - -+ crypto: crypto-engine@01c15000 { -+ compatible = "allwinner,sun4i-a10-crypto"; -+ reg = <0x01c15000 0x1000>; -+ interrupts = <86>; -+ clocks = <&ahb_gates 5>, <&ss_clk>; -+ clock-names = "ahb", "mod"; -+ }; -+ - spi2: spi@01c17000 { - compatible = "allwinner,sun4i-a10-spi"; - reg = <0x01c17000 0x1000>; -@@ -961,6 +1059,19 @@ - status = "disabled"; - }; - -+ codec: codec@01c22c00 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun4i-a10-codec"; -+ reg = <0x01c22c00 0x40>; -+ interrupts = <30>; -+ clocks = <&apb0_gates 0>, <&codec_clk>; -+ clock-names = "apb", "codec"; -+ dmas = <&dma SUN4I_DMA_NORMAL 19>, -+ <&dma SUN4I_DMA_NORMAL 19>; -+ dma-names = "rx", "tx"; -+ status = "disabled"; -+ }; -+ - sid: eeprom@01c23800 { - compatible = "allwinner,sun4i-a10-sid"; - reg = <0x01c23800 0x10>; ---- a/arch/arm/dts/sun5i-a10s-auxtek-t004.dts -+++ b/arch/arm/dts/sun5i-a10s-auxtek-t004.dts -@@ -86,6 +86,20 @@ - status = "okay"; - }; - -+&i2c0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins_a>; -+ status = "okay"; -+ -+ axp152: pmic@30 { -+ compatible = "x-powers,axp152"; -+ reg = <0x30>; -+ interrupts = <0>; -+ interrupt-controller; -+ #interrupt-cells = <1>; -+ }; -+}; -+ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_t004>; ---- a/arch/arm/dts/sun5i-a10s-olinuxino-micro.dts -+++ b/arch/arm/dts/sun5i-a10s-olinuxino-micro.dts -@@ -111,7 +111,7 @@ - status = "okay"; - - at24@50 { -- compatible = "at,24c16"; -+ compatible = "atmel,24c16"; - pagesize = <16>; - reg = <0x50>; - read-only; ---- a/arch/arm/dts/sun5i-a13-empire-electronix-d709.dts -+++ b/arch/arm/dts/sun5i-a13-empire-electronix-d709.dts -@@ -123,7 +123,7 @@ - - &mmc0 { - pinctrl-names = "default"; -- pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_inet98fv2>; -+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_d709>; - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; - cd-gpios = <&pio 6 0 GPIO_ACTIVE_HIGH>; /* PG0 */ -@@ -131,27 +131,12 @@ - status = "okay"; - }; - --&mmc2 { -- pinctrl-names = "default"; -- pinctrl-0 = <&mmc2_pins_a>; -- vmmc-supply = <®_vcc3v3>; -- bus-width = <8>; -- non-removable; -- status = "okay"; -- -- mmccard: mmccard@0 { -- reg = <0>; -- compatible = "mmc-card"; -- broken-hpi; -- }; --}; -- - &otg_sram { - status = "okay"; - }; - - &pio { -- mmc0_cd_pin_inet98fv2: mmc0_cd_pin@0 { -+ mmc0_cd_pin_d709: mmc0_cd_pin@0 { - allwinner,pins = "PG0"; - allwinner,function = "gpio_in"; - allwinner,drive = ; ---- a/arch/arm/dts/sun5i-a13-inet-98v-rev2.dts -+++ b/arch/arm/dts/sun5i-a13-inet-98v-rev2.dts -@@ -123,21 +123,6 @@ - status = "okay"; - }; - --&mmc2 { -- pinctrl-names = "default"; -- pinctrl-0 = <&mmc2_pins_a>; -- vmmc-supply = <®_vcc3v3>; -- bus-width = <8>; -- non-removable; -- status = "okay"; -- -- mmccard: mmccard@0 { -- reg = <0>; -- compatible = "mmc-card"; -- broken-hpi; -- }; --}; -- - &otg_sram { - status = "okay"; - }; -@@ -201,11 +186,6 @@ - status = "okay"; - }; - --®_usb1_vbus { -- gpio = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */ -- status = "okay"; --}; -- - &uart1 { - pinctrl-names = "default"; - pinctrl-0 = <&uart1_pins_b>; -@@ -221,16 +201,12 @@ - allwinner,pins = "PG12"; - }; - --&usb1_vbus_pin_a { -- allwinner,pins = "PG11"; --}; -- - &usbphy { - pinctrl-names = "default"; - pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; - usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */ - usb0_vbus_det-gpio = <&pio 6 1 GPIO_ACTIVE_HIGH>; /* PG1 */ - usb0_vbus-supply = <®_usb0_vbus>; -- usb1_vbus-supply = <®_usb1_vbus>; -+ usb1_vbus-supply = <®_ldo3>; - status = "okay"; - }; ---- a/arch/arm/dts/sun5i-a13-utoo-p66.dts -+++ b/arch/arm/dts/sun5i-a13-utoo-p66.dts -@@ -47,11 +47,21 @@ - #include - #include - #include -+#include - - / { - model = "Utoo P66"; - compatible = "utoo,p66", "allwinner,sun5i-a13"; - -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; -+ /* Note levels of 10 / 20% result in backlight off */ -+ brightness-levels = <0 30 40 50 60 70 80 90 100>; -+ default-brightness-level = <6>; -+ /* TODO: backlight uses axp gpio1 as enable pin */ -+ }; -+ - i2c_lcd: i2c@0 { - /* The lcd panel i2c interface is hooked up via gpios */ - compatible = "i2c-gpio"; -@@ -63,6 +73,13 @@ - }; - }; - -+&codec { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&codec_pa_pin>; -+ allwinner,pa-gpios = <&pio 6 3 GPIO_ACTIVE_HIGH>; /* PG3 */ -+ status = "okay"; -+}; -+ - &cpu0 { - cpu-supply = <®_dcdc2>; - }; -@@ -158,6 +175,13 @@ - }; - - &pio { -+ codec_pa_pin: codec_pa_pin@0 { -+ allwinner,pins = "PG3"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - mmc0_cd_pin_p66: mmc0_cd_pin@0 { - allwinner,pins = "PG0"; - allwinner,function = "gpio_in"; -@@ -201,6 +225,12 @@ - }; - }; - -+&pwm { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pins>; -+ status = "okay"; -+}; -+ - ®_dcdc2 { - regulator-always-on; - regulator-min-microvolt = <1000000>; ---- a/arch/arm/dts/sun5i-q8-common.dtsi -+++ b/arch/arm/dts/sun5i-q8-common.dtsi -@@ -41,11 +41,21 @@ - */ - #include "sunxi-q8-common.dtsi" - -+#include -+ - / { - aliases { - serial0 = &uart1; - }; - -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; -+ default-brightness-level = <8>; -+ /* TODO: backlight uses axp gpio1 as enable pin */ -+ }; -+ - chosen { - stdout-path = "serial0:115200n8"; - }; ---- a/arch/arm/dts/sun5i-r8-chip.dts -+++ b/arch/arm/dts/sun5i-r8-chip.dts -@@ -64,6 +64,26 @@ - chosen { - stdout-path = "serial0:115200n8"; - }; -+ -+ wifi_reg_on: wifi_reg_on { -+ compatible = "regulator-fixed"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&chip_wifi_reg_on_pin>; -+ -+ regulator-name = "wifi-reg-on"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ gpio = <&pio 2 19 GPIO_ACTIVE_HIGH>; /* PC19 */ -+ enable-active-high; -+ }; -+}; -+ -+&codec { -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; - }; - - &ehci0 { -@@ -109,10 +129,14 @@ - }; - }; - -+&mmc0_pins_a { -+ allwinner,pull = ; -+}; -+ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins_a>; -- vmmc-supply = <®_vcc3v3>; -+ vmmc-supply = <&wifi_reg_on>; - bus-width = <4>; - non-removable; - status = "okay"; -@@ -134,6 +158,13 @@ - allwinner,pull = ; - }; - -+ chip_wifi_reg_on_pin: chip_wifi_reg_on_pin@0 { -+ allwinner,pins = "PC19"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - chip_id_det_pin: chip_id_det_pin@0 { - allwinner,pins = "PG2"; - allwinner,function = "gpio_in"; -@@ -167,6 +198,20 @@ - regulator-always-on; - }; - -+®_ldo3 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vdd-wifi1"; -+ regulator-always-on; -+}; -+ -+®_ldo4 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vdd-wifi2"; -+ regulator-always-on; -+}; -+ - ®_ldo5 { - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; ---- a/arch/arm/dts/sun5i.dtsi -+++ b/arch/arm/dts/sun5i.dtsi -@@ -44,6 +44,7 @@ - - #include "skeleton.dtsi" - -+#include - #include - #include - -@@ -102,6 +103,15 @@ - clock-output-names = "pll1"; - }; - -+ pll2: clk@01c20008 { -+ #clock-cells = <1>; -+ compatible = "allwinner,sun5i-a13-pll2-clk"; -+ reg = <0x01c20008 0x8>; -+ clocks = <&osc24M>; -+ clock-output-names = "pll2-1x", "pll2-2x", -+ "pll2-4x", "pll2-8x"; -+ }; -+ - pll4: clk@01c20018 { - #clock-cells = <0>; - compatible = "allwinner,sun4i-a10-pll1-clk"; -@@ -285,6 +295,14 @@ - clock-output-names = "usb_ohci0", "usb_phy"; - }; - -+ codec_clk: clk@01c20140 { -+ #clock-cells = <0>; -+ compatible = "allwinner,sun4i-a10-codec-clk"; -+ reg = <0x01c20140 0x4>; -+ clocks = <&pll2 SUN4I_A10_PLL2_1X>; -+ clock-output-names = "codec"; -+ }; -+ - mbus_clk: clk@01c2015c { - #clock-cells = <0>; - compatible = "allwinner,sun5i-a13-mbus-clk"; -@@ -571,6 +589,19 @@ - status = "disabled"; - }; - -+ codec: codec@01c22c00 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun4i-a10-codec"; -+ reg = <0x01c22c00 0x40>; -+ interrupts = <30>; -+ clocks = <&apb0_gates 0>, <&codec_clk>; -+ clock-names = "apb", "codec"; -+ dmas = <&dma SUN4I_DMA_NORMAL 19>, -+ <&dma SUN4I_DMA_NORMAL 19>; -+ dma-names = "rx", "tx"; -+ status = "disabled"; -+ }; -+ - sid: eeprom@01c23800 { - compatible = "allwinner,sun4i-a10-sid"; - reg = <0x01c23800 0x10>; ---- a/arch/arm/dts/sun6i-a31-colombus.dts -+++ b/arch/arm/dts/sun6i-a31-colombus.dts -@@ -60,6 +60,16 @@ - chosen { - stdout-path = "serial0:115200n8"; - }; -+ -+ i2c_lcd: i2c@0 { -+ /* The lcd panel i2c interface is hooked up via gpios */ -+ compatible = "i2c-gpio"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c_lcd_pins>; -+ gpios = <&pio 0 23 GPIO_ACTIVE_HIGH>, /* PA23, sda */ -+ <&pio 0 24 GPIO_ACTIVE_HIGH>; /* PA24, scl */ -+ i2c-gpio,delay-us = <5>; -+ }; - }; - - &ehci1 { -@@ -94,6 +104,13 @@ - pinctrl-names = "default"; - pinctrl-0 = <&i2c2_pins_a>; - status = "okay"; -+ -+ mma8452: mma8452@1d { -+ compatible = "fsl,mma8452"; -+ reg = <0x1d>; -+ interrupt-parent = <&pio>; -+ interrupts = <0 9 IRQ_TYPE_LEVEL_LOW>; /* PA9 */ -+ }; - }; - - &mmc0 { -@@ -124,6 +141,13 @@ - allwinner,drive = ; - allwinner,pull = ; - }; -+ -+ i2c_lcd_pins: i2c_lcd_pin@0 { -+ allwinner,pins = "PA23", "PA24"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; - }; - - ®_usb2_vbus { ---- a/arch/arm/dts/sun6i-a31-hummingbird.dts -+++ b/arch/arm/dts/sun6i-a31-hummingbird.dts -@@ -54,6 +54,8 @@ - compatible = "merrii,a31-hummingbird", "allwinner,sun6i-a31"; - - aliases { -+ rtc0 = &pcf8563; -+ rtc1 = &rtc; - serial0 = &uart0; - }; - -@@ -67,13 +69,17 @@ - }; - }; - -+&cpu0 { -+ cpu-supply = <®_dcdc3>; -+}; -+ - &ehci0 { - status = "okay"; - }; - - &gmac { - pinctrl-names = "default"; -- pinctrl-0 = <&gmac_pins_rgmii_a>; -+ pinctrl-0 = <&gmac_pins_rgmii_a>, <&gmac_phy_reset_pin_hummingbird>; - phy = <&phy1>; - phy-mode = "rgmii"; - snps,reset-gpio = <&pio 0 21 GPIO_ACTIVE_HIGH>; -@@ -119,7 +125,7 @@ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_hummingbird>; -- vmmc-supply = <&vcc_3v0>; -+ vmmc-supply = <®_dcdc1>; - bus-width = <4>; - cd-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */ - cd-inverted; -@@ -134,7 +140,7 @@ - &mmc1 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc1_pins_a>, <&wifi_reset_pin_hummingbird>; -- vmmc-supply = <&vcc_wifi>; -+ vmmc-supply = <®_aldo1>; - mmc-pwrseq = <&wifi_pwrseq>; - bus-width = <4>; - non-removable; -@@ -146,6 +152,13 @@ - }; - - &pio { -+ gmac_phy_reset_pin_hummingbird: gmac_phy_reset_pin@0 { -+ allwinner,pins = "PA21"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - mmc0_cd_pin_hummingbird: mmc0_cd_pin@0 { - allwinner,pins = "PA8"; - allwinner,function = "gpio_in"; -@@ -164,70 +177,69 @@ - &p2wi { - status = "okay"; - -- axp221: pmic@68 { -+ axp22x: pmic@68 { - compatible = "x-powers,axp221"; - reg = <0x68>; - interrupt-parent = <&nmi_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -- interrupt-controller; -- #interrupt-cells = <1>; -- dcdc1-supply = <&vcc_3v0>; -- dcdc5-supply = <&vcc_dram>; -- -- regulators { -- x-powers,dcdc-freq = <3000>; -- -- vcc_3v0: dcdc1 { -- regulator-always-on; -- regulator-min-microvolt = <3000000>; -- regulator-max-microvolt = <3000000>; -- regulator-name = "vcc-3v0"; -- }; -- -- vdd_cpu: dcdc2 { -- regulator-always-on; -- regulator-min-microvolt = <700000>; -- regulator-max-microvolt = <1320000>; -- regulator-name = "vdd-cpu"; -- }; -- -- vdd_gpu: dcdc3 { -- regulator-always-on; -- regulator-min-microvolt = <700000>; -- regulator-max-microvolt = <1320000>; -- regulator-name = "vdd-gpu"; -- }; -- -- vdd_sys_dll: dcdc4 { -- regulator-always-on; -- regulator-min-microvolt = <1100000>; -- regulator-max-microvolt = <1100000>; -- regulator-name = "vdd-sys-dll"; -- }; -- -- vcc_dram: dcdc5 { -- regulator-always-on; -- regulator-min-microvolt = <1500000>; -- regulator-max-microvolt = <1500000>; -- regulator-name = "vcc-dram"; -- }; -- -- vcc_wifi: aldo1 { -- regulator-min-microvolt = <3300000>; -- regulator-max-microvolt = <3300000>; -- regulator-name = "vcc_wifi"; -- }; -- -- avcc: aldo3 { -- regulator-always-on; -- regulator-min-microvolt = <3000000>; -- regulator-max-microvolt = <3000000>; -- regulator-name = "avcc"; -- }; -- }; - }; - }; - -+#include "axp22x.dtsi" -+ -+®_aldo1 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-wifi"; -+}; -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "avcc"; -+}; -+ -+®_dc5ldo { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-3v0"; -+}; -+ -+®_dcdc2 { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-gpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc4 { -+ regulator-always-on; -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-sys-dll"; -+}; -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vcc-dram"; -+}; -+ - ®_usb1_vbus { - gpio = <&pio 7 24 GPIO_ACTIVE_HIGH>; /* PH24 */ - status = "okay"; ---- a/arch/arm/dts/sun6i-a31.dtsi -+++ b/arch/arm/dts/sun6i-a31.dtsi -@@ -61,7 +61,7 @@ - #size-cells = <1>; - ranges; - -- framebuffer@0 { -+ simplefb_hdmi: framebuffer@0 { - compatible = "allwinner,simple-framebuffer", - "simple-framebuffer"; - allwinner,pipeline = "de_be0-lcd0-hdmi"; -@@ -69,7 +69,7 @@ - status = "disabled"; - }; - -- framebuffer@1 { -+ simplefb_lcd: framebuffer@1 { - compatible = "allwinner,simple-framebuffer", - "simple-framebuffer"; - allwinner,pipeline = "de_be0-lcd0"; -@@ -252,6 +252,20 @@ - compatible = "allwinner,sun6i-a31-ahb1-gates-clk"; - reg = <0x01c20060 0x8>; - clocks = <&ahb1>; -+ clock-indices = <1>, <5>, -+ <6>, <8>, <9>, -+ <10>, <11>, <12>, -+ <13>, <14>, -+ <17>, <18>, <19>, -+ <20>, <21>, <22>, -+ <23>, <24>, <26>, -+ <27>, <29>, -+ <30>, <31>, <32>, -+ <36>, <37>, <40>, -+ <43>, <44>, <45>, -+ <46>, <47>, <50>, -+ <52>, <55>, <56>, -+ <57>, <58>; - clock-output-names = "ahb1_mipidsi", "ahb1_ss", - "ahb1_dma", "ahb1_mmc0", "ahb1_mmc1", - "ahb1_mmc2", "ahb1_mmc3", "ahb1_nand1", -@@ -281,6 +295,9 @@ - compatible = "allwinner,sun6i-a31-apb1-gates-clk"; - reg = <0x01c20068 0x4>; - clocks = <&apb1>; -+ clock-indices = <0>, <4>, -+ <5>, <12>, -+ <13>; - clock-output-names = "apb1_codec", "apb1_digital_mic", - "apb1_pio", "apb1_daudio0", - "apb1_daudio1"; -@@ -299,6 +316,10 @@ - compatible = "allwinner,sun6i-a31-apb2-gates-clk"; - reg = <0x01c2006c 0x4>; - clocks = <&apb2>; -+ clock-indices = <0>, <1>, -+ <2>, <3>, <16>, -+ <17>, <18>, <19>, -+ <20>, <21>; - clock-output-names = "apb2_i2c0", "apb2_i2c1", - "apb2_i2c2", "apb2_i2c3", - "apb2_uart0", "apb2_uart1", -@@ -346,6 +367,14 @@ - "mmc3_sample"; - }; - -+ ss_clk: clk@01c2009c { -+ #clock-cells = <0>; -+ compatible = "allwinner,sun4i-a10-mod0-clk"; -+ reg = <0x01c2009c 0x4>; -+ clocks = <&osc24M>, <&pll6 0>; -+ clock-output-names = "ss"; -+ }; -+ - spi0_clk: clk@01c200a0 { - #clock-cells = <0>; - compatible = "allwinner,sun4i-a10-mod0-clk"; -@@ -384,6 +413,9 @@ - compatible = "allwinner,sun6i-a31-usb-clk"; - reg = <0x01c200cc 0x4>; - clocks = <&osc24M>; -+ clock-indices = <8>, <9>, <10>, -+ <16>, <17>, -+ <18>; - clock-output-names = "usb_phy0", "usb_phy1", "usb_phy2", - "usb_ohci0", "usb_ohci1", - "usb_ohci2"; -@@ -684,6 +716,16 @@ - allwinner,pull = ; - }; - -+ mmc3_8bit_emmc_pins: mmc3@1 { -+ allwinner,pins = "PC6", "PC7", "PC8", "PC9", -+ "PC10", "PC11", "PC12", -+ "PC13", "PC14", "PC15", -+ "PC24"; -+ allwinner,function = "mmc3"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - gmac_pins_mii_a: gmac_mii@0 { - allwinner,pins = "PA0", "PA1", "PA2", "PA3", - "PA8", "PA9", "PA11", -@@ -761,6 +803,13 @@ - reg = <0x01c20ca0 0x20>; - }; - -+ lradc: lradc@01c22800 { -+ compatible = "allwinner,sun4i-a10-lradc-keys"; -+ reg = <0x01c22800 0x100>; -+ interrupts = ; -+ status = "disabled"; -+ }; -+ - rtp: rtp@01c25000 { - compatible = "allwinner,sun6i-a31-ts"; - reg = <0x01c25000 0x100>; -@@ -907,6 +956,16 @@ - #size-cells = <0>; - }; - -+ crypto: crypto-engine@01c15000 { -+ compatible = "allwinner,sun4i-a10-crypto"; -+ reg = <0x01c15000 0x1000>; -+ interrupts = ; -+ clocks = <&ahb1_gates 5>, <&ss_clk>; -+ clock-names = "ahb", "mod"; -+ resets = <&ahb1_rst 5>; -+ reset-names = "ahb"; -+ }; -+ - timer@01c60000 { - compatible = "allwinner,sun6i-a31-hstimer", - "allwinner,sun7i-a20-hstimer"; -@@ -1068,7 +1127,7 @@ - resets = <&apb0_rst 0>; - gpio-controller; - interrupt-controller; -- #interrupt-cells = <2>; -+ #interrupt-cells = <3>; - #size-cells = <0>; - #gpio-cells = <3>; - ---- a/arch/arm/dts/sun6i-a31s-primo81.dts -+++ b/arch/arm/dts/sun6i-a31s-primo81.dts -@@ -1,16 +1,57 @@ - /* -- * Copyright 2015 Hans de Goede -+ * Copyright 2014 Siarhei Siamashka -+ * Copyright 2015 Karsten Merker -+ * Copyright 2015 Chen-Yu Tsai - * -- * Minimal dts file for the MSI Primo81 for u-boot only -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. - * -- * SPDX-License-Identifier: GPL-2.0+ or X11 -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. - */ - - /dts-v1/; - #include "sun6i-a31s.dtsi" -+#include "sunxi-common-regulators.dtsi" -+ -+#include -+#include -+#include - - / { -- model = "MSI Primo81"; -+ model = "MSI Primo81 tablet"; - compatible = "msi,primo81", "allwinner,sun6i-a31s"; - - aliases { -@@ -22,8 +63,202 @@ - }; - }; - --&uart0 { -+&cpu0 { -+ cpu-supply = <®_dcdc3>; -+}; -+ -+&ehci0 { -+ /* rtl8188etv wifi is connected here */ -+ status = "okay"; -+}; -+ -+&i2c0 { -+ /* pull-ups and device VDDIO use AXP221 DLDO3 */ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins_a>; -+ status = "failed"; -+}; -+ -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins_a>; -+ status = "okay"; -+ -+ ctp@5d { -+ pinctrl-names = "default"; -+ pinctrl-0 = <>911_int_primo81>; -+ compatible = "goodix,gt911"; -+ reg = <0x5d>; -+ interrupt-parent = <&pio>; -+ interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; /* PA3 */ -+ touchscreen-swapped-x-y; -+ }; -+}; -+ -+&i2c2 { - pinctrl-names = "default"; -- pinctrl-0 = <&uart0_pins_a>; -+ pinctrl-0 = <&i2c2_pins_a>; -+ status = "okay"; -+ -+ accelerometer@1c { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mma8452_int_primo81>; -+ compatible = "fsl,mma8452"; -+ reg = <0x1c>; -+ interrupt-parent = <&pio>; -+ interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; /* PA9 */ -+ #io-channel-cells = <1>; -+ }; -+}; -+ -+&lradc { -+ vref-supply = <®_aldo3>; -+ status = "okay"; -+ -+ button@158 { -+ label = "Volume Up"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <158730>; -+ }; -+ -+ button@349 { -+ label = "Volume Down"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <349206>; -+ }; -+}; -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_primo81>; -+ vmmc-supply = <®_dcdc1>; -+ bus-width = <4>; -+ cd-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */ -+ cd-inverted; -+ status = "okay"; -+}; -+ -+&pio { -+ gt911_int_primo81: gt911_int_pin@0 { -+ allwinner,pins = "PA3"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ mma8452_int_primo81: mma8452_int_pin@0 { -+ allwinner,pins = "PA9"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ mmc0_cd_pin_primo81: mmc0_cd_pin@0 { -+ allwinner,pins = "PA8"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+&p2wi { -+ status = "okay"; -+ -+ axp22x: pmic@68 { -+ compatible = "x-powers,axp221"; -+ reg = <0x68>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ }; -+}; -+ -+#include "axp22x.dtsi" -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "avcc"; -+}; -+ -+®_dc1sw { -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-lcd"; -+}; -+ -+®_dc5ldo { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-cpus"; /* This is an educated guess */ -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-3v0"; -+}; -+ -+®_dcdc2 { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-gpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc4 { -+ regulator-always-on; -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-sys-dll"; -+}; -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+®_dldo1 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-wifi"; -+}; -+ -+®_dldo3 { -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ regulator-name = "vddio-csi"; -+}; -+ -+®_eldo3 { -+ regulator-min-microvolt = <1080000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-mipi-bridge"; -+}; -+ -+&simplefb_lcd { -+ vcc-lcd-supply = <®_dc1sw>; -+ vdd-mipi-bridge-supply = <®_eldo3>; -+}; -+ -+&usb_otg { -+ /* otg support requires support for AXP221 usb-power-supply and GPIO */ -+ dr_mode = "host"; -+ status = "okay"; -+}; -+ -+&usbphy { -+ usb1_vbus-supply = <®_dldo1>; - status = "okay"; - }; ---- /dev/null -+++ b/arch/arm/dts/sun6i-a31s-sina31s-core.dtsi -@@ -0,0 +1,142 @@ -+/* -+ * Copyright 2015 Chen-Yu Tsai -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/dts-v1/; -+#include "sun6i-a31s.dtsi" -+#include "sunxi-common-regulators.dtsi" -+ -+#include -+#include -+ -+/ { -+ model = "Sinlinx SinA31s Core Board"; -+ compatible = "sinlinx,sina31s", "allwinner,sun6i-a31s"; -+ -+ aliases { -+ serial0 = &uart0; -+ }; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc3>; -+}; -+ -+/* eMMC on core board */ -+&mmc3 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc3_8bit_emmc_pins>; -+ vmmc-supply = <®_dcdc1>; -+ vqmmc-supply = <®_dcdc1>; -+ bus-width = <8>; -+ non-removable; -+ cap-mmc-hw-reset; -+ status = "okay"; -+}; -+ -+/* AXP221s PMIC on core board */ -+&p2wi { -+ status = "okay"; -+ -+ axp22x: pmic@68 { -+ compatible = "x-powers,axp221"; -+ reg = <0x68>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ }; -+}; -+ -+#include "axp22x.dtsi" -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "avcc"; -+}; -+ -+®_dc5ldo { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-3v0"; -+}; -+ -+®_dcdc2 { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-gpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc4 { -+ regulator-always-on; -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-sys-dll"; -+}; -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+/* UART0 pads available on core board */ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins_a>; -+ status = "okay"; -+}; -+ ---- /dev/null -+++ b/arch/arm/dts/sun6i-a31s-sina31s.dts -@@ -0,0 +1,153 @@ -+/* -+ * Copyright 2015 Chen-Yu Tsai -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* The SinA31s development board has the SinA31s core board soldered on */ -+#include "sun6i-a31s-sina31s-core.dtsi" -+ -+#include -+ -+/ { -+ model = "Sinlinx SinA31s Development Board"; -+ compatible = "sinlinx,sina31s-sdk", "allwinner,sun6i-a31s"; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_pin_sina31s>; -+ -+ status { -+ label = "sina31s:status:usr"; -+ gpios = <&pio 7 13 GPIO_ACTIVE_HIGH>; /* PH13 */ -+ }; -+ }; -+}; -+ -+&ehci0 { -+ /* USB 2.0 4 port hub IC */ -+ status = "okay"; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&gmac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_pins_mii_a>; -+ phy = <&phy1>; -+ phy-mode = "mii"; -+ phy-supply = <®_dldo1>; -+ status = "okay"; -+ -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ -+&ir { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&ir_pins_a>; -+ status = "okay"; -+}; -+ -+&lradc { -+ vref-supply = <®_aldo3>; -+ status = "okay"; -+ -+ button@158 { -+ label = "Volume Up"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <158730>; -+ }; -+ -+ button@349 { -+ label = "Volume Down"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <349206>; -+ }; -+}; -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_sina31s>; -+ vmmc-supply = <®_dcdc1>; -+ bus-width = <4>; -+ cd-gpios = <&pio 0 4 GPIO_ACTIVE_HIGH>; /* PA4 */ -+ cd-inverted; -+ status = "okay"; -+}; -+ -+&ohci1 { -+ status = "okay"; -+}; -+ -+&pio { -+ led_pin_sina31s: led_pin@0 { -+ allwinner,pins = "PH13"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ mmc0_cd_pin_sina31s: mmc0_cd_pin@0 { -+ allwinner,pins = "PA4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+®_dldo1 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-gmac-phy"; -+}; -+ -+&usbphy { -+ status = "okay"; -+}; ---- /dev/null -+++ b/arch/arm/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts -@@ -0,0 +1,205 @@ -+/* -+ * Copyright 2015 Lawrence Yu -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/dts-v1/; -+#include "sun6i-a31s.dtsi" -+#include "sunxi-common-regulators.dtsi" -+ -+#include -+#include -+ -+/ { -+ model = "Yones TopTech BS1078 v2 Tablet"; -+ compatible = "yones-toptech,bs1078-v2", "allwinner,sun6i-a31s"; -+ -+ aliases { -+ serial0 = &uart0; -+ i2c1 = &i2c1; -+ i2c2 = &i2c2; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+}; -+ -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins_a>; -+ status = "okay"; -+}; -+ -+&i2c2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins_a>; -+ status = "okay"; -+}; -+ -+&ehci0 { -+ status = "okay"; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&ohci0 { -+ status = "okay"; -+}; -+ -+&ohci1 { -+ status = "okay"; -+}; -+ -+&pio { -+ mmc0_cd_pin_bs1078v2: mmc0_cd_pin@0 { -+ allwinner,pins = "PA8"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_bs1078v2>; -+ vmmc-supply = <®_vcc3v0>; -+ bus-width = <4>; -+ cd-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */ -+ cd-inverted; -+ status = "okay"; -+}; -+ -+&mmc0_pins_a { -+ allwinner,pull = ; -+}; -+ -+&p2wi { -+ status = "okay"; -+ -+ axp22x: pmic@68 { -+ compatible = "x-powers,axp221"; -+ reg = <0x68>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ }; -+}; -+ -+#include "axp22x.dtsi" -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "avcc"; -+}; -+ -+®_dc1sw { -+ regulator-name = "vcc-lcd-usb2"; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+}; -+ -+®_dc5ldo { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-3v0"; -+}; -+ -+®_dcdc2 { -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-gpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc4 { -+ regulator-always-on; -+ regulator-min-microvolt = <700000>; -+ regulator-max-microvolt = <1320000>; -+ regulator-name = "vdd-sys-dll"; -+}; -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+®_dldo1 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-wifi"; -+}; -+ -+/* Voltage source for I2C pullup resistors for I2C Bus 0 */ -+®_dldo3 { -+ regulator-min-microvolt = <2800000>; -+ regulator-max-microvolt = <2800000>; -+ regulator-name = "vddio-csi"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins_a>; -+ status = "okay"; -+}; -+ -+&usbphy { -+ usb1_vbus-supply = <®_dldo1>; -+ usb2_vbus-supply = <®_dc1sw>; -+ status = "okay"; -+}; ---- a/arch/arm/dts/sun7i-a20-bananapi.dts -+++ b/arch/arm/dts/sun7i-a20-bananapi.dts -@@ -92,6 +92,24 @@ - status = "okay"; - }; - -+&codec { -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+ operating-points = < -+ /* kHz uV */ -+ 960000 1400000 -+ 912000 1400000 -+ 864000 1350000 -+ 720000 1250000 -+ 528000 1150000 -+ 312000 1100000 -+ 144000 1050000 -+ >; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -119,13 +137,9 @@ - status = "okay"; - - axp209: pmic@34 { -- compatible = "x-powers,axp209"; - reg = <0x34>; - interrupt-parent = <&nmi_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -- -- interrupt-controller; -- #interrupt-cells = <1>; - }; - }; - -@@ -159,7 +173,18 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - mmc0_cd_pin_bananapi: mmc0_cd_pin@0 { - allwinner,pins = "PH10"; - allwinner,function = "gpio_in"; -@@ -182,6 +207,37 @@ - }; - }; - -+#include "axp209.dtsi" -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; -+ -+®_usb0_vbus { -+ status = "okay"; -+}; -+ - ®_usb1_vbus { - status = "okay"; - }; -@@ -216,7 +272,21 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_power-supply = <&usb_power_supply>; -+ usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun7i-a20-cubieboard2.dts -+++ b/arch/arm/dts/sun7i-a20-cubieboard2.dts -@@ -84,6 +84,10 @@ - status = "okay"; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &cpu0 { - cpu-supply = <®_dcdc2>; - }; -@@ -150,6 +154,10 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { - led_pins_cubieboard2: led_pins@0 { - allwinner,pins = "PH20", "PH21"; -@@ -157,12 +165,24 @@ - allwinner,drive = ; - allwinner,pull = ; - }; -+ -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; - }; - - ®_ahci_5v { - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ - #include "axp209.dtsi" - - ®_dcdc2 { -@@ -205,6 +225,9 @@ - }; - - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun7i-a20-cubietruck.dts -+++ b/arch/arm/dts/sun7i-a20-cubietruck.dts -@@ -101,6 +101,10 @@ - status = "okay"; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &cpu0 { - cpu-supply = <®_dcdc2>; - }; ---- /dev/null -+++ b/arch/arm/dts/sun7i-a20-icnova-swac.dts -@@ -0,0 +1,169 @@ -+/* -+ * Copyright 2015 Stefan Roese -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/dts-v1/; -+#include "sun7i-a20.dtsi" -+#include "sunxi-common-regulators.dtsi" -+ -+#include -+#include -+#include -+ -+/ { -+ model = "ICnova-A20 SWAC"; -+ compatible = "swac,icnova-a20-swac", "incircuit,icnova-a20", "allwinner,sun7i-a20"; -+ -+ aliases { -+ serial0 = &uart0; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&ehci0 { -+ status = "okay"; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&gmac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_pins_mii_a>; -+ phy = <&phy1>; -+ phy-mode = "mii"; -+ status = "okay"; -+ -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ -+&i2c0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins_a>; -+ status = "okay"; -+ -+ axp209: pmic@34 { -+ reg = <0x34>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ }; -+}; -+ -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins_a>; -+ status = "okay"; -+}; -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>; -+ vmmc-supply = <®_vcc3v3>; -+ bus-width = <4>; -+ cd-gpios = <&pio 8 5 GPIO_ACTIVE_HIGH>; /* PI5 */ -+ cd-inverted; -+ status = "okay"; -+}; -+ -+&ohci0 { -+ status = "okay"; -+}; -+ -+&ohci1 { -+ status = "okay"; -+}; -+ -+#include "axp209.dtsi" -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; -+ -+®_usb1_vbus { -+ status = "okay"; -+}; -+ -+®_usb2_vbus { -+ status = "okay"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins_a>; -+ status = "okay"; -+}; -+ -+&usbphy { -+ usb1_vbus-supply = <®_usb1_vbus>; -+ usb2_vbus-supply = <®_usb2_vbus>; -+ status = "okay"; -+}; ---- /dev/null -+++ b/arch/arm/dts/sun7i-a20-itead-ibox.dts -@@ -0,0 +1,125 @@ -+/* -+ * Copyright 2015 - Marcus Cooper -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/dts-v1/; -+#include "sun7i-a20.dtsi" -+#include "sunxi-itead-core-common.dtsi" -+ -+/ { -+ model = "Itead Ibox A20"; -+ compatible = "itead,itead-ibox-a20", "allwinner,sun7i-a20"; -+ -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_pins_itead_core>; -+ -+ green { -+ label = "itead_core:green:usr"; -+ gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ -+ blue { -+ label = "itead_core:blue:usr"; -+ gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ }; -+}; -+ -+&ahci { -+ target-supply = <®_ahci_5v>; -+ status = "okay"; -+}; -+ -+&codec { -+ status = "okay"; -+}; -+ -+&gmac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_pins_mii_a>; -+ phy = <&phy1>; -+ phy-mode = "mii"; -+ status = "okay"; -+ -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ -+&i2c0 { -+ axp209: pmic@34 { -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ }; -+}; -+ -+&ir0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&ir0_rx_pins_a>; -+ status = "okay"; -+}; -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>; -+ vmmc-supply = <®_vcc3v3>; -+ bus-width = <4>; -+ cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */ -+ cd-inverted; -+ status = "okay"; -+}; -+ -+&pio { -+ led_pins_itead_core: led_pins@0 { -+ allwinner,pins = "PH20","PH21"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+®_ahci_5v { -+ status = "okay"; -+}; ---- a/arch/arm/dts/sun7i-a20-lamobo-r1.dts -+++ b/arch/arm/dts/sun7i-a20-lamobo-r1.dts -@@ -97,16 +97,6 @@ - - &cpu0 { - cpu-supply = <®_dcdc2>; -- operating-points = < -- /* kHz uV */ -- 960000 1400000 -- 912000 1400000 -- 864000 1350000 -- 720000 1250000 -- 528000 1150000 -- 312000 1100000 -- 144000 1050000 -- >; - }; - - &ehci0 { ---- a/arch/arm/dts/sun7i-a20-mk808c.dts -+++ b/arch/arm/dts/sun7i-a20-mk808c.dts -@@ -53,6 +53,7 @@ - - #include - #include -+#include - - / { - model = "mk808c"; -@@ -68,6 +69,10 @@ - }; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -121,6 +126,30 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ -+&pio { -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 { -+ allwinner,pins = "PH5"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+®_usb0_vbus { -+ status = "okay"; -+}; -+ - ®_usb1_vbus { - status = "okay"; - }; -@@ -141,7 +170,17 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; -+ usb0_id_det-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_det-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ -+ usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts -+++ b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts -@@ -1,5 +1,6 @@ - /* - * Copyright 2015 - Marcus Cooper -+ * Copyright 2015 - Karsten Merker - * - * This file is dual-licensed: you can use it either under the terms - * of the GPL or the X11 license, at your option. Note that this dual -@@ -45,6 +46,7 @@ - #include "sunxi-common-regulators.dtsi" - - #include -+#include - #include - #include - -@@ -71,14 +73,6 @@ - default-state = "on"; - }; - }; -- -- reg_axp_ipsout: axp_ipsout { -- compatible = "regulator-fixed"; -- regulator-name = "axp-ipsout"; -- regulator-min-microvolt = <5000000>; -- regulator-max-microvolt = <5000000>; -- regulator-always-on; -- }; - }; - - &ahci { -@@ -94,6 +88,10 @@ - status = "okay"; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &gmac { - pinctrl-names = "default"; - pinctrl-0 = <&gmac_pins_rgmii_a>; -@@ -118,10 +116,58 @@ - }; - }; - --&i2c1 { -- pinctrl-names = "default"; -- pinctrl-0 = <&i2c1_pins_a>; -+&lradc { -+ vref-supply = <®_vcc3v0>; - status = "okay"; -+ -+ button@190 { -+ label = "Volume Up"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <190000>; -+ }; -+ -+ button@390 { -+ label = "Volume Down"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <390000>; -+ }; -+ -+ button@600 { -+ label = "Menu"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <600000>; -+ }; -+ -+ button@800 { -+ label = "Search"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <800000>; -+ }; -+ -+ button@980 { -+ label = "Home"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <980000>; -+ }; -+ -+ button@1180 { -+ label = "Esc"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <1180000>; -+ }; -+ -+ button@1400 { -+ label = "Enter"; -+ linux,code = ; -+ channel = <0>; -+ voltage = <1400000>; -+ }; - }; - - &mmc0 { -@@ -134,6 +180,16 @@ - status = "okay"; - }; - -+&mmc3 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc3_pins_a>, <&mmc3_cd_pin_olimex_som_evb>; -+ vmmc-supply = <®_vcc3v3>; -+ bus-width = <4>; -+ cd-gpios = <&pio 7 0 GPIO_ACTIVE_HIGH>; /* PH0 */ -+ cd-inverted; -+ status = "okay"; -+}; -+ - &ohci0 { - status = "okay"; - }; -@@ -161,15 +217,22 @@ - allwinner,pull = ; - }; - -+ mmc3_cd_pin_olimex_som_evb: mmc3_cd_pin@0 { -+ allwinner,pins = "PH0"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - usb0_id_detect_pin: usb0_id_detect_pin@0 { -- allwinner,pins = "PH04"; -+ allwinner,pins = "PH4"; - allwinner,function = "gpio_in"; - allwinner,drive = ; - allwinner,pull = ; - }; - - usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 { -- allwinner,pins = "PH05"; -+ allwinner,pins = "PH5"; - allwinner,function = "gpio_in"; - allwinner,drive = ; - allwinner,pull = ; -@@ -187,7 +250,7 @@ - ®_dcdc2 { - regulator-always-on; - regulator-min-microvolt = <1000000>; -- regulator-max-microvolt = <1425000>; -+ regulator-max-microvolt = <1400000>; - regulator-name = "vdd-cpu"; - }; - -@@ -235,8 +298,8 @@ - &usbphy { - pinctrl-names = "default"; - pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; -- usb0_id_det-gpios = <&pio 7 04 GPIO_ACTIVE_HIGH>; /* PH04 */ -- usb0_vbus_det-gpios = <&pio 7 05 GPIO_ACTIVE_HIGH>; /* PH05 */ -+ usb0_id_det-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH04 */ -+ usb0_vbus_det-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH05 */ - usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; ---- a/arch/arm/dts/sun7i-a20-olinuxino-lime.dts -+++ b/arch/arm/dts/sun7i-a20-olinuxino-lime.dts -@@ -117,6 +117,18 @@ - }; - }; - -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins_a>; -+ status = "okay"; -+ -+ eeprom: eeprom@50 { -+ compatible = "atmel,24c16"; -+ reg = <0x50>; -+ pagesize = <16>; -+ }; -+}; -+ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>; ---- a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts -+++ b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts -@@ -170,6 +170,12 @@ - pinctrl-names = "default"; - pinctrl-0 = <&i2c1_pins_a>; - status = "okay"; -+ -+ eeprom: eeprom@50 { -+ compatible = "atmel,24c16"; -+ reg = <0x50>; -+ pagesize = <16>; -+ }; - }; - - &mmc0 { -@@ -190,6 +196,10 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { - ahci_pwr_pin_olinuxinolime: ahci_pwr_pin@1 { - allwinner,pins = "PC3"; -@@ -204,6 +214,27 @@ - allwinner,drive = ; - allwinner,pull = ; - }; -+ -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 { -+ allwinner,pins = "PH5"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ usb0_vbus_pin_lime2: usb0_vbus_pin@0 { -+ allwinner,pins = "PC17"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; - }; - - ®_ahci_5v { -@@ -212,6 +243,12 @@ - status = "okay"; - }; - -+®_usb0_vbus { -+ pinctrl-0 = <&usb0_vbus_pin_lime2>; -+ gpio = <&pio 2 17 GPIO_ACTIVE_HIGH>; -+ status = "okay"; -+}; -+ - ®_usb1_vbus { - status = "okay"; - }; -@@ -226,7 +263,17 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */ -+ usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun7i-a20-olinuxino-micro.dts -+++ b/arch/arm/dts/sun7i-a20-olinuxino-micro.dts -@@ -125,6 +125,12 @@ - pinctrl-names = "default"; - pinctrl-0 = <&i2c1_pins_a>; - status = "okay"; -+ -+ eeprom: eeprom@50 { -+ compatible = "atmel,24c16"; -+ reg = <0x50>; -+ pagesize = <16>; -+ }; - }; - - &i2c2 { ---- a/arch/arm/dts/sun7i-a20-orangepi-mini.dts -+++ b/arch/arm/dts/sun7i-a20-orangepi-mini.dts -@@ -95,6 +95,10 @@ - status = "okay"; - }; - -+&codec { -+ status = "okay"; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -156,7 +160,18 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - mmc0_cd_pin_orangepi: mmc0_cd_pin@0 { - allwinner,pins = "PH10"; - allwinner,function = "gpio_in"; -@@ -225,6 +240,10 @@ - regulator-name = "avcc"; - }; - -+®_usb0_vbus { -+ status = "okay"; -+}; -+ - ®_usb1_vbus { - pinctrl-0 = <&usb1_vbus_pin_bananapro>; - gpio = <&pio 7 26 GPIO_ACTIVE_HIGH>; /* PH26 */ -@@ -243,7 +262,21 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_power-supply = <&usb_power_supply>; -+ usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun7i-a20-orangepi.dts -+++ b/arch/arm/dts/sun7i-a20-orangepi.dts -@@ -141,7 +141,18 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - mmc0_cd_pin_orangepi: mmc0_cd_pin@0 { - allwinner,pins = "PH10"; - allwinner,function = "gpio_in"; -@@ -203,6 +214,10 @@ - regulator-name = "avcc"; - }; - -+®_usb0_vbus { -+ status = "okay"; -+}; -+ - ®_usb1_vbus { - pinctrl-0 = <&usb1_vbus_pin_bananapro>; - gpio = <&pio 7 26 GPIO_ACTIVE_HIGH>; /* PH26 */ -@@ -221,7 +236,21 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_power-supply = <&usb_power_supply>; -+ usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts -+++ b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts -@@ -82,6 +82,14 @@ - status = "okay"; - }; - -+&codec { -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -108,13 +116,9 @@ - status = "okay"; - - axp209: pmic@34 { -- compatible = "x-powers,axp209"; - reg = <0x34>; - interrupt-parent = <&nmi_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -- -- interrupt-controller; -- #interrupt-cells = <1>; - }; - }; - -@@ -142,6 +146,10 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { - ahci_pwr_pin_pcduino3_nano: ahci_pwr_pin@0 { - allwinner,pins = "PH2"; -@@ -157,8 +165,15 @@ - allwinner,pull = ; - }; - -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - usb1_vbus_pin_pcduino3_nano: usb1_vbus_pin@0 { -- allwinner,pins = "PH11"; -+ allwinner,pins = "PD2"; - allwinner,function = "gpio_out"; - allwinner,drive = ; - allwinner,pull = ; -@@ -171,13 +186,37 @@ - status = "okay"; - }; - --®_usb1_vbus { -- pinctrl-0 = <&usb1_vbus_pin_pcduino3_nano>; -- gpio = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ -- status = "okay"; -+#include "axp209.dtsi" -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-pll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; - }; - --®_usb2_vbus { -+/* A single regulator (U24) powers both USB host ports. */ -+®_usb1_vbus { -+ pinctrl-0 = <&usb1_vbus_pin_pcduino3_nano>; -+ gpio = <&pio 3 2 GPIO_ACTIVE_HIGH>; /* PD2 */ - status = "okay"; - }; - -@@ -187,8 +226,16 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ - usb1_vbus-supply = <®_usb1_vbus>; -- usb2_vbus-supply = <®_usb2_vbus>; -+ usb2_vbus-supply = <®_usb1_vbus>; - status = "okay"; - }; ---- a/arch/arm/dts/sun7i-a20-pcduino3.dts -+++ b/arch/arm/dts/sun7i-a20-pcduino3.dts -@@ -111,6 +111,14 @@ - allwinner,pins = "PH2"; - }; - -+&codec { -+ status = "okay"; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ - &ehci0 { - status = "okay"; - }; -@@ -137,16 +145,14 @@ - status = "okay"; - - axp209: pmic@34 { -- compatible = "x-powers,axp209"; - reg = <0x34>; - interrupt-parent = <&nmi_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -- -- interrupt-controller; -- #interrupt-cells = <1>; - }; - }; - -+#include "axp209.dtsi" -+ - &ir0 { - pinctrl-names = "default"; - pinctrl-0 = <&ir0_rx_pins_a>; -@@ -171,6 +177,10 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ - &pio { - led_pins_pcduino3: led_pins@0 { - allwinner,pins = "PH15", "PH16"; -@@ -185,6 +195,13 @@ - allwinner,drive = ; - allwinner,pull = ; - }; -+ -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; - }; - - ®_ahci_5v { -@@ -192,6 +209,31 @@ - status = "okay"; - }; - -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-pll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; -+ - ®_usb1_vbus { - status = "okay"; - }; -@@ -206,7 +248,15 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun7i-a20-wexler-tab7200.dts -+++ b/arch/arm/dts/sun7i-a20-wexler-tab7200.dts -@@ -48,6 +48,7 @@ - #include - #include - #include -+#include - - / { - model = "Wexler TAB7200"; -@@ -57,11 +58,28 @@ - serial0 = &uart0; - }; - -+ backlight { -+ compatible = "pwm-backlight"; -+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; -+ default-brightness-level = <8>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&bl_enable_pin>; -+ enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ -+ }; -+ - chosen { - stdout-path = "serial0:115200n8"; - }; - }; - -+&codec { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&codec_pa_pin>; -+ allwinner,pa-gpios = <&pio 7 15 GPIO_ACTIVE_HIGH>; /* PH15 */ -+ status = "okay"; -+}; -+ - &cpu0 { - cpu-supply = <®_dcdc2>; - }; -@@ -86,6 +104,8 @@ - }; - }; - -+#include "axp209.dtsi" -+ - &i2c1 { - pinctrl-names = "default"; - pinctrl-0 = <&i2c1_pins_a>; -@@ -96,6 +116,18 @@ - pinctrl-names = "default"; - pinctrl-0 = <&i2c2_pins_a>; - status = "okay"; -+ -+ gt911: touchscreen@5d { -+ compatible = "goodix,gt911"; -+ reg = <0x5d>; -+ interrupt-parent = <&pio>; -+ interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>; /* EINT21 (PH21) */ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&ts_reset_pin>; -+ irq-gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>; /* INT (PH21) */ -+ reset-gpios = <&pio 1 13 GPIO_ACTIVE_HIGH>; /* RST (PB13) */ -+ touchscreen-swapped-x-y; -+ }; - }; - - &lradc { -@@ -135,7 +167,45 @@ - status = "okay"; - }; - --#include "axp209.dtsi" -+&otg_sram { -+ status = "okay"; -+}; -+ -+&pio { -+ bl_enable_pin: bl_enable_pin@0 { -+ allwinner,pins = "PH7"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ codec_pa_pin: codec_pa_pin@0 { -+ allwinner,pins = "PH15"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ ts_reset_pin: ts_reset_pin@0 { -+ allwinner,pins = "PB13"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+&pwm { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pins_a>; -+ status = "okay"; -+}; - - ®_dcdc2 { - regulator-always-on; -@@ -162,6 +232,10 @@ - regulator-name = "avcc"; - }; - -+®_usb0_vbus { -+ status = "okay"; -+}; -+ - ®_usb1_vbus { - status = "okay"; - }; -@@ -176,7 +250,21 @@ - status = "okay"; - }; - -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ status = "okay"; -+}; -+ - &usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_power-supply = <&usb_power_supply>; -+ usb0_vbus-supply = <®_usb0_vbus>; - usb1_vbus-supply = <®_usb1_vbus>; - usb2_vbus-supply = <®_usb2_vbus>; - status = "okay"; ---- a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts -+++ b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts -@@ -1,13 +1,52 @@ - /* -- * Copyright 2015 Hans de Goede -+ * Copyright 2015 Jelle de Jong - * -- * Minimal dts file for the Wits Pro A20 DKT for u-boot only -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. - * -- * SPDX-License-Identifier: GPL-2.0+ or X11 -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. - */ - - /dts-v1/; - #include "sun7i-a20.dtsi" -+#include "sunxi-common-regulators.dtsi" -+ -+#include -+#include -+#include - - / { - model = "Wits Pro A20 DKT"; -@@ -20,6 +59,17 @@ - chosen { - stdout-path = "serial0:115200n8"; - }; -+ -+ mmc3_pwrseq: mmc3_pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vmmc3_pin_ap6xxx_wl_regon>; -+ reset-gpios = <&pio 7 9 GPIO_ACTIVE_LOW>; /* PH9 WIFI_EN */ -+ }; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; - }; - - &ehci0 { -@@ -42,6 +92,60 @@ - }; - }; - -+&i2c0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins_a>; -+ status = "okay"; -+ -+ axp209: pmic@34 { -+ reg = <0x34>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ }; -+}; -+ -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins_a>; -+ status = "okay"; -+}; -+ -+&i2c2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins_a>; -+ status = "okay"; -+}; -+ -+#include "axp209.dtsi" -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>; -+ vmmc-supply = <®_vcc3v3>; -+ bus-width = <4>; -+ cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */ -+ cd-inverted; -+ status = "okay"; -+}; -+ -+&mmc3 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc3_pins_a>; -+ vmmc-supply = <®_vcc3v3>; -+ mmc-pwrseq = <&mmc3_pwrseq>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+ -+ brcmf: bcrmf@1 { -+ reg = <1>; -+ compatible = "brcm,bcm4329-fmac"; -+ interrupt-parent = <&pio>; -+ interrupts = <7 10 IRQ_TYPE_LEVEL_LOW>; /* PH10 / EINT10 */ -+ interrupt-names = "host-wake"; -+ }; -+}; -+ - &ohci0 { - status = "okay"; - }; -@@ -50,8 +154,85 @@ - status = "okay"; - }; - -+&otg_sram { -+ status = "okay"; -+}; -+ -+&pio { -+ vmmc3_pin_ap6xxx_wl_regon: vmmc3_pin@0 { -+ allwinner,pins = "PH9"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ usb0_id_detect_pin: usb0_id_detect_pin@0 { -+ allwinner,pins = "PH4"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1450000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; -+ -+®_usb0_vbus { -+ status = "okay"; -+}; -+ -+®_usb1_vbus { -+ status = "okay"; -+}; -+ -+®_usb2_vbus { -+ status = "okay"; -+}; -+ - &uart0 { - pinctrl-names = "default"; - pinctrl-0 = <&uart0_pins_a>; - status = "okay"; - }; -+ -+&usb_otg { -+ dr_mode = "otg"; -+ status = "okay"; -+}; -+ -+&usb_power_supply { -+ status = "okay"; -+}; -+ -+&usbphy { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&usb0_id_detect_pin>; -+ usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ -+ usb0_vbus_power-supply = <&usb_power_supply>; -+ usb0_vbus-supply = <®_usb0_vbus>; -+ usb1_vbus-supply = <®_usb1_vbus>; -+ usb2_vbus-supply = <®_usb2_vbus>; -+ status = "okay"; -+}; ---- a/arch/arm/dts/sun7i-a20.dtsi -+++ b/arch/arm/dts/sun7i-a20.dtsi -@@ -47,6 +47,7 @@ - #include - #include - -+#include - #include - #include - -@@ -67,7 +68,7 @@ - "simple-framebuffer"; - allwinner,pipeline = "de_be0-lcd0-hdmi"; - clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>, -- <&ahb_gates 44>; -+ <&ahb_gates 44>, <&dram_gates 26>; - status = "disabled"; - }; - -@@ -75,7 +76,8 @@ - compatible = "allwinner,simple-framebuffer", - "simple-framebuffer"; - allwinner,pipeline = "de_be0-lcd0"; -- clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>; -+ clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>, -+ <&dram_gates 26>; - status = "disabled"; - }; - -@@ -84,7 +86,7 @@ - "simple-framebuffer"; - allwinner,pipeline = "de_be0-lcd0-tve0"; - clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>, -- <&ahb_gates 44>; -+ <&ahb_gates 44>, <&dram_gates 26>; - status = "disabled"; - }; - }; -@@ -107,7 +109,7 @@ - 720000 1200000 - 528000 1100000 - 312000 1000000 -- 144000 900000 -+ 144000 1000000 - >; - #cooling-cells = <2>; - cooling-min-level = <0>; -@@ -199,6 +201,15 @@ - clock-output-names = "pll1"; - }; - -+ pll2: clk@01c20008 { -+ #clock-cells = <1>; -+ compatible = "allwinner,sun4i-a10-pll2-clk"; -+ reg = <0x01c20008 0x8>; -+ clocks = <&osc24M>; -+ clock-output-names = "pll2-1x", "pll2-2x", -+ "pll2-4x", "pll2-8x"; -+ }; -+ - pll4: clk@01c20018 { - #clock-cells = <0>; - compatible = "allwinner,sun7i-a20-pll4-clk"; -@@ -267,6 +278,19 @@ - compatible = "allwinner,sun7i-a20-ahb-gates-clk"; - reg = <0x01c20060 0x8>; - clocks = <&ahb>; -+ clock-indices = <0>, <1>, -+ <2>, <3>, <4>, -+ <5>, <6>, <7>, <8>, -+ <9>, <10>, <11>, <12>, -+ <13>, <14>, <16>, -+ <17>, <18>, <20>, <21>, -+ <22>, <23>, <25>, -+ <28>, <32>, <33>, <34>, -+ <35>, <36>, <37>, <40>, -+ <41>, <42>, <43>, -+ <44>, <45>, <46>, -+ <47>, <49>, <50>, -+ <52>; - clock-output-names = "ahb_usb0", "ahb_ehci0", - "ahb_ohci0", "ahb_ehci1", "ahb_ohci1", - "ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0", -@@ -295,6 +319,10 @@ - compatible = "allwinner,sun7i-a20-apb0-gates-clk"; - reg = <0x01c20068 0x4>; - clocks = <&apb0>; -+ clock-indices = <0>, <1>, -+ <2>, <3>, <4>, -+ <5>, <6>, <7>, -+ <8>, <10>; - clock-output-names = "apb0_codec", "apb0_spdif", - "apb0_ac97", "apb0_iis0", "apb0_iis1", - "apb0_pio", "apb0_ir0", "apb0_ir1", -@@ -314,6 +342,12 @@ - compatible = "allwinner,sun7i-a20-apb1-gates-clk"; - reg = <0x01c2006c 0x4>; - clocks = <&apb1>; -+ clock-indices = <0>, <1>, -+ <2>, <3>, <4>, -+ <5>, <6>, <7>, -+ <15>, <16>, <17>, -+ <18>, <19>, <20>, -+ <21>, <22>, <23>; - clock-output-names = "apb1_i2c0", "apb1_i2c1", - "apb1_i2c2", "apb1_i2c3", "apb1_can", - "apb1_scr", "apb1_ps20", "apb1_ps21", -@@ -442,6 +476,14 @@ - clock-output-names = "ir1"; - }; - -+ keypad_clk: clk@01c200c4 { -+ #clock-cells = <0>; -+ compatible = "allwinner,sun4i-a10-mod0-clk"; -+ reg = <0x01c200c4 0x4>; -+ clocks = <&osc24M>; -+ clock-output-names = "keypad"; -+ }; -+ - usb_clk: clk@01c200cc { - #clock-cells = <1>; - #reset-cells = <1>; -@@ -460,6 +502,48 @@ - clock-output-names = "spi3"; - }; - -+ dram_gates: clk@01c20100 { -+ #clock-cells = <1>; -+ compatible = "allwinner,sun4i-a10-dram-gates-clk"; -+ reg = <0x01c20100 0x4>; -+ clocks = <&pll5 0>; -+ clock-indices = <0>, -+ <1>, <2>, -+ <3>, -+ <4>, -+ <5>, <6>, -+ <15>, -+ <24>, <25>, -+ <26>, <27>, -+ <28>, <29>; -+ clock-output-names = "dram_ve", -+ "dram_csi0", "dram_csi1", -+ "dram_ts", -+ "dram_tvd", -+ "dram_tve0", "dram_tve1", -+ "dram_output", -+ "dram_de_fe1", "dram_de_fe0", -+ "dram_de_be0", "dram_de_be1", -+ "dram_de_mp", "dram_ace"; -+ }; -+ -+ ve_clk: clk@01c2013c { -+ #clock-cells = <0>; -+ #reset-cells = <0>; -+ compatible = "allwinner,sun4i-a10-ve-clk"; -+ reg = <0x01c2013c 0x4>; -+ clocks = <&pll4>; -+ clock-output-names = "ve"; -+ }; -+ -+ codec_clk: clk@01c20140 { -+ #clock-cells = <0>; -+ compatible = "allwinner,sun4i-a10-codec-clk"; -+ reg = <0x01c20140 0x4>; -+ clocks = <&pll2 SUN4I_A10_PLL2_1X>; -+ clock-output-names = "codec"; -+ }; -+ - mbus_clk: clk@01c2015c { - #clock-cells = <0>; - compatible = "allwinner,sun5i-a13-mbus-clk"; -@@ -744,6 +828,14 @@ - status = "disabled"; - }; - -+ crypto: crypto-engine@01c15000 { -+ compatible = "allwinner,sun4i-a10-crypto"; -+ reg = <0x01c15000 0x1000>; -+ interrupts = ; -+ clocks = <&ahb_gates 5>, <&ss_clk>; -+ clock-names = "ahb", "mod"; -+ }; -+ - spi2: spi@01c17000 { - compatible = "allwinner,sun4i-a10-spi"; - reg = <0x01c17000 0x1000>; -@@ -1159,6 +1251,19 @@ - status = "disabled"; - }; - -+ codec: codec@01c22c00 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun7i-a20-codec"; -+ reg = <0x01c22c00 0x40>; -+ interrupts = ; -+ clocks = <&apb0_gates 0>, <&codec_clk>; -+ clock-names = "apb", "codec"; -+ dmas = <&dma SUN4I_DMA_NORMAL 19>, -+ <&dma SUN4I_DMA_NORMAL 19>; -+ dma-names = "rx", "tx"; -+ status = "disabled"; -+ }; -+ - sid: eeprom@01c23800 { - compatible = "allwinner,sun7i-a20-sid"; - reg = <0x01c23800 0x200>; ---- a/arch/arm/dts/sun8i-a23-a33.dtsi -+++ b/arch/arm/dts/sun8i-a23-a33.dtsi -@@ -56,7 +56,7 @@ - #size-cells = <1>; - ranges; - -- framebuffer@0 { -+ simplefb_lcd: framebuffer@0 { - compatible = "allwinner,simple-framebuffer", - "simple-framebuffer"; - allwinner,pipeline = "de_be0-lcd0"; -@@ -175,27 +175,13 @@ - clock-output-names = "apb1"; - }; - -- ahb1_gates: clk@01c20060 { -- #clock-cells = <1>; -- compatible = "allwinner,sun8i-a23-ahb1-gates-clk"; -- reg = <0x01c20060 0x8>; -- clocks = <&ahb1>; -- clock-output-names = "ahb1_mipidsi", "ahb1_dma", -- "ahb1_mmc0", "ahb1_mmc1", "ahb1_mmc2", -- "ahb1_nand", "ahb1_sdram", -- "ahb1_hstimer", "ahb1_spi0", -- "ahb1_spi1", "ahb1_otg", "ahb1_ehci", -- "ahb1_ohci", "ahb1_ve", "ahb1_lcd", -- "ahb1_csi", "ahb1_be", "ahb1_fe", -- "ahb1_gpu", "ahb1_spinlock", -- "ahb1_drc"; -- }; -- - apb1_gates: clk@01c20068 { - #clock-cells = <1>; - compatible = "allwinner,sun8i-a23-apb1-gates-clk"; - reg = <0x01c20068 0x4>; - clocks = <&apb1>; -+ clock-indices = <0>, <5>, -+ <12>, <13>; - clock-output-names = "apb1_codec", "apb1_pio", - "apb1_daudio0", "apb1_daudio1"; - }; -@@ -213,6 +199,10 @@ - compatible = "allwinner,sun8i-a23-apb2-gates-clk"; - reg = <0x01c2006c 0x4>; - clocks = <&apb2>; -+ clock-indices = <0>, <1>, -+ <2>, <16>, -+ <17>, <18>, -+ <19>, <20>; - clock-output-names = "apb2_i2c0", "apb2_i2c1", - "apb2_i2c2", "apb2_uart0", - "apb2_uart1", "apb2_uart2", -@@ -391,12 +381,19 @@ - allwinner,pins = "PC5", "PC6", "PC8", - "PC9", "PC10", "PC11", - "PC12", "PC13", "PC14", -- "PC15"; -+ "PC15", "PC16"; - allwinner,function = "mmc2"; - allwinner,drive = ; - allwinner,pull = ; - }; - -+ pwm0_pins: pwm0 { -+ allwinner,pins = "PH0"; -+ allwinner,function = "pwm0"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - i2c0_pins_a: i2c0@0 { - allwinner,pins = "PH2", "PH3"; - allwinner,function = "i2c0"; -@@ -451,6 +448,14 @@ - interrupts = ; - }; - -+ pwm: pwm@01c21400 { -+ compatible = "allwinner,sun7i-a20-pwm"; -+ reg = <0x01c21400 0xc>; -+ clocks = <&osc24M>; -+ #pwm-cells = <3>; -+ status = "disabled"; -+ }; -+ - lradc: lradc@01c22800 { - compatible = "allwinner,sun4i-a10-lradc-keys"; - reg = <0x01c22800 0x100>; -@@ -574,6 +579,14 @@ - ; - }; - -+ nmi_intc: interrupt-controller@01f00c0c { -+ compatible = "allwinner,sun6i-a31-sc-nmi"; -+ interrupt-controller; -+ #interrupt-cells = <2>; -+ reg = <0x01f00c0c 0x38>; -+ interrupts = ; -+ }; -+ - prcm@01f01400 { - compatible = "allwinner,sun8i-a23-prcm"; - reg = <0x01f01400 0x200>; -@@ -642,10 +655,18 @@ - resets = <&apb0_rst 0>; - gpio-controller; - interrupt-controller; -+ #interrupt-cells = <3>; - #address-cells = <1>; - #size-cells = <0>; - #gpio-cells = <3>; - -+ r_rsb_pins: r_rsb { -+ allwinner,pins = "PL0", "PL1"; -+ allwinner,function = "s_rsb"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - r_uart_pins_a: r_uart@0 { - allwinner,pins = "PL2", "PL3"; - allwinner,function = "s_uart"; -@@ -653,5 +674,19 @@ - allwinner,pull = ; - }; - }; -+ -+ r_rsb: rsb@01f03400 { -+ compatible = "allwinner,sun8i-a23-rsb"; -+ reg = <0x01f03400 0x400>; -+ interrupts = ; -+ clocks = <&apb0_gates 3>; -+ clock-frequency = <3000000>; -+ resets = <&apb0_rst 3>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&r_rsb_pins>; -+ status = "disabled"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; - }; - }; ---- a/arch/arm/dts/sun8i-a23-gt90h-v4.dts -+++ b/arch/arm/dts/sun8i-a23-gt90h-v4.dts -@@ -47,15 +47,26 @@ - #include - #include - #include -+#include - - / { -- model = "Allwinner GT90H Quad Core Tablet (v4)"; -- compatible = "allwinner,gt90h-v4", "allwinner,sun8i-a33"; -+ model = "Allwinner GT90H Dual Core Tablet (v4)"; -+ compatible = "allwinner,gt90h-v4", "allwinner,sun8i-a23"; - - aliases { - serial0 = &r_uart; - }; - -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&bl_en_pin_gt90h>; -+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; -+ default-brightness-level = <8>; -+ enable-gpios = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */ -+ }; -+ - chosen { - stdout-path = "serial0:115200n8"; - }; -@@ -106,8 +117,7 @@ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_gt90h>; -- /* FIXME this really is aldo1, correct once we've pmic support */ -- vmmc-supply = <®_vcc3v0>; -+ vmmc-supply = <®_aldo1>; - bus-width = <4>; - cd-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */ - cd-inverted; -@@ -115,6 +125,13 @@ - }; - - &pio { -+ bl_en_pin_gt90h: bl_en_pin@0 { -+ allwinner,pins = "PH6"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - mmc0_cd_pin_gt90h: mmc0_cd_pin@0 { - allwinner,pins = "PB4"; - allwinner,function = "gpio_in"; -@@ -123,12 +140,106 @@ - }; - }; - -+&pwm { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pins>; -+ status = "okay"; -+}; -+ -+&r_rsb { -+ status = "okay"; -+ -+ axp22x: pmic@3a3 { -+ compatible = "x-powers,axp223"; -+ reg = <0x3a3>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ eldoin-supply = <®_dcdc1>; -+ }; -+}; -+ - &r_uart { - pinctrl-names = "default"; - pinctrl-0 = <&r_uart_pins_a>; - status = "okay"; - }; - -+#include "axp22x.dtsi" -+ -+®_aldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-io"; -+}; -+ -+®_aldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <2350000>; -+ regulator-max-microvolt = <2650000>; -+ regulator-name = "vdd-dll"; -+}; -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-pll-avcc"; -+}; -+ -+®_dc1sw { -+ regulator-name = "vcc-lcd"; -+}; -+ -+®_dc5ldo { -+ regulator-always-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-3v0"; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-sys"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+®_dldo1 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-wifi"; -+}; -+ -+®_rtc_ldo { -+ regulator-name = "vcc-rtc"; -+}; -+ -+&simplefb_lcd { -+ vcc-lcd-supply = <®_dc1sw>; -+}; -+ - /* - * FIXME for now we only support host mode and rely on u-boot to have - * turned on Vbus which is controlled by the axp223 pmic on the board. -@@ -141,5 +252,6 @@ - }; - - &usbphy { -+ usb1_vbus-supply = <®_dldo1>; - status = "okay"; - }; ---- a/arch/arm/dts/sun8i-a23.dtsi -+++ b/arch/arm/dts/sun8i-a23.dtsi -@@ -50,6 +50,31 @@ - }; - - clocks { -+ ahb1_gates: clk@01c20060 { -+ #clock-cells = <1>; -+ compatible = "allwinner,sun8i-a23-ahb1-gates-clk"; -+ reg = <0x01c20060 0x8>; -+ clocks = <&ahb1>; -+ clock-indices = <1>, <6>, -+ <8>, <9>, <10>, -+ <13>, <14>, -+ <19>, <20>, -+ <21>, <24>, <26>, -+ <29>, <32>, <36>, -+ <40>, <44>, <46>, -+ <52>, <53>, -+ <54>, <57>; -+ clock-output-names = "ahb1_mipidsi", "ahb1_dma", -+ "ahb1_mmc0", "ahb1_mmc1", "ahb1_mmc2", -+ "ahb1_nand", "ahb1_sdram", -+ "ahb1_hstimer", "ahb1_spi0", -+ "ahb1_spi1", "ahb1_otg", "ahb1_ehci", -+ "ahb1_ohci", "ahb1_ve", "ahb1_lcd", -+ "ahb1_csi", "ahb1_be", "ahb1_fe", -+ "ahb1_gpu", "ahb1_msgbox", -+ "ahb1_spinlock", "ahb1_drc"; -+ }; -+ - mbus_clk: clk@01c2015c { - #clock-cells = <0>; - compatible = "allwinner,sun8i-a23-mbus-clk"; ---- a/arch/arm/dts/sun8i-a33-sinlinx-sina33.dts -+++ b/arch/arm/dts/sun8i-a33-sinlinx-sina33.dts -@@ -68,7 +68,7 @@ - }; - - &lradc { -- vref-supply = <®_vcc3v0>; -+ vref-supply = <®_dcdc1>; - status = "okay"; - - button@200 { -@@ -96,7 +96,7 @@ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_sina33>; -- vmmc-supply = <®_vcc3v0>; -+ vmmc-supply = <®_dcdc1>; - bus-width = <4>; - cd-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */ - cd-inverted; -@@ -106,13 +106,16 @@ - &mmc2 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc2_8bit_pins>; -- vmmc-supply = <®_vcc3v0>; -+ vmmc-supply = <®_dcdc1>; - bus-width = <8>; - non-removable; -+ cap-mmc-hw-reset; - status = "okay"; - }; - - &mmc2_8bit_pins { -+ /* Increase drive strength for DDR modes */ -+ allwinner,drive = ; - /* eMMC is missing pull-ups */ - allwinner,pull = ; - }; -@@ -130,6 +133,80 @@ - }; - }; - -+&r_rsb { -+ status = "okay"; -+ -+ axp22x: pmic@3a3 { -+ compatible = "x-powers,axp223"; -+ reg = <0x3a3>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ eldoin-supply = <®_dcdc1>; -+ }; -+}; -+ -+#include "axp22x.dtsi" -+ -+®_aldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-io"; -+}; -+ -+®_aldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <2350000>; -+ regulator-max-microvolt = <2650000>; -+ regulator-name = "vdd-dll"; -+}; -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-pll-avcc"; -+}; -+ -+®_dc5ldo { -+ regulator-always-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-3v0"; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-sys"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+®_rtc_ldo { -+ regulator-name = "vcc-rtc"; -+}; -+ - &uart0 { - pinctrl-names = "default"; - pinctrl-0 = <&uart0_pins_b>; ---- a/arch/arm/dts/sun8i-a33.dtsi -+++ b/arch/arm/dts/sun8i-a33.dtsi -@@ -72,6 +72,41 @@ - clock-output-names = "pll11"; - }; - -+ ahb1_gates: clk@01c20060 { -+ #clock-cells = <1>; -+ compatible = "allwinner,sun8i-a33-ahb1-gates-clk"; -+ reg = <0x01c20060 0x8>; -+ clocks = <&ahb1>; -+ clock-indices = <1>, <5>, -+ <6>, <8>, <9>, -+ <10>, <13>, <14>, -+ <19>, <20>, -+ <21>, <24>, <26>, -+ <29>, <32>, <36>, -+ <40>, <44>, <46>, -+ <52>, <53>, -+ <54>, <57>, -+ <58>; -+ clock-output-names = "ahb1_mipidsi", "ahb1_ss", -+ "ahb1_dma","ahb1_mmc0", "ahb1_mmc1", -+ "ahb1_mmc2", "ahb1_nand", "ahb1_sdram", -+ "ahb1_hstimer", "ahb1_spi0", -+ "ahb1_spi1", "ahb1_otg", "ahb1_ehci", -+ "ahb1_ohci", "ahb1_ve", "ahb1_lcd", -+ "ahb1_csi", "ahb1_be", "ahb1_fe", -+ "ahb1_gpu", "ahb1_msgbox", -+ "ahb1_spinlock", "ahb1_drc", -+ "ahb1_sat"; -+ }; -+ -+ ss_clk: clk@01c2009c { -+ #clock-cells = <0>; -+ compatible = "allwinner,sun4i-a10-mod0-clk"; -+ reg = <0x01c2009c 0x4>; -+ clocks = <&osc24M>, <&pll6 0>; -+ clock-output-names = "ss"; -+ }; -+ - mbus_clk: clk@01c2015c { - #clock-cells = <0>; - compatible = "allwinner,sun8i-a23-mbus-clk"; -@@ -82,6 +117,16 @@ - }; - - soc@01c00000 { -+ crypto: crypto-engine@01c15000 { -+ compatible = "allwinner,sun4i-a10-crypto"; -+ reg = <0x01c15000 0x1000>; -+ interrupts = ; -+ clocks = <&ahb1_gates 5>, <&ss_clk>; -+ clock-names = "ahb", "mod"; -+ resets = <&ahb1_rst 5>; -+ reset-names = "ahb"; -+ }; -+ - usb_otg: usb@01c19000 { - compatible = "allwinner,sun8i-a33-musb"; - reg = <0x01c19000 0x0400>; ---- /dev/null -+++ b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts -@@ -0,0 +1,65 @@ -+/* -+ * Copyright 2015 Chen-Yu Tsai -+ * -+ * Chen-Yu Tsai -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/dts-v1/; -+#include "sun8i-a83t.dtsi" -+ -+/ { -+ model = "Cubietech Cubietruck Plus"; -+ compatible = "cubietech,cubietruck-plus", "allwinner,sun8i-a83t"; -+ -+ aliases { -+ serial0 = &uart0; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins_b>; -+ status = "okay"; -+}; ---- a/arch/arm/dts/sun8i-a83t.dtsi -+++ b/arch/arm/dts/sun8i-a83t.dtsi -@@ -52,12 +52,6 @@ - / { - interrupt-parent = <&gic>; - -- chosen { -- #address-cells = <1>; -- #size-cells = <1>; -- ranges; -- }; -- - cpus { - #address-cells = <1>; - #size-cells = <0>; -@@ -85,6 +79,7 @@ - device_type = "cpu"; - reg = <3>; - }; -+ - cpu@100 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; -@@ -96,6 +91,7 @@ - device_type = "cpu"; - reg = <0x101>; - }; -+ - cpu@102 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; -@@ -109,18 +105,12 @@ - }; - }; - -- memory { -- reg = <0x40000000 0x80000000>; -- }; -- - timer { - compatible = "arm,armv7-timer"; -- interrupts = , -- , -- , -- ; -- clock-frequency = <24000000>; -- arm,cpu-registers-not-fw-configured; -+ interrupts = , -+ , -+ , -+ ; - }; - - clocks { -@@ -128,6 +118,7 @@ - #size-cells = <1>; - ranges; - -+ /* TODO: PRCM block has a mux for this. */ - osc24M: osc24M_clk { - #clock-cells = <0>; - compatible = "fixed-clock"; -@@ -135,36 +126,39 @@ - clock-output-names = "osc24M"; - }; - -- osc32k: osc32k_clk { -+ /* -+ * This is called "internal OSC" in some places. -+ * It is an internal RC-based oscillator. -+ * TODO: Its controls are in the PRCM block. -+ */ -+ osc16M: osc16M_clk { - #clock-cells = <0>; - compatible = "fixed-clock"; -- clock-frequency = <32768>; -- clock-output-names = "osc32k"; -+ clock-frequency = <16000000>; -+ clock-output-names = "osc16M"; -+ }; -+ -+ osc16Md512: osc16Md512_clk { -+ #clock-cells = <0>; -+ compatible = "fixed-factor-clock"; -+ clock-div = <512>; -+ clock-mult = <1>; -+ clocks = <&osc16M>; -+ clock-output-names = "osc16M-d512"; - }; - }; - -- soc@01c00000 { -+ soc { - compatible = "simple-bus"; - #address-cells = <1>; - #size-cells = <1>; - ranges; - -- gic: interrupt-controller@01c81000 { -- compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic"; -- reg = <0x01c81000 0x1000>, -- <0x01c82000 0x1000>, -- <0x01c84000 0x2000>, -- <0x01c86000 0x2000>; -- interrupt-controller; -- #interrupt-cells = <3>; -- interrupts = ; -- }; -- - pio: pinctrl@01c20800 { - compatible = "allwinner,sun8i-a83t-pinctrl"; - interrupts = , -- , -- ; -+ , -+ ; - reg = <0x01c20800 0x400>; - clocks = <&osc24M>; - gpio-controller; -@@ -172,27 +166,6 @@ - #interrupt-cells = <3>; - #gpio-cells = <3>; - -- i2c0_pins_a: i2c0@0 { -- allwinner,pins = "PH0", "PH1"; -- allwinner,function = "i2c0"; -- allwinner,drive = ; -- allwinner,pull = ; -- }; -- -- i2c1_pins_a: i2c1@0 { -- allwinner,pins = "PH2", "PH3"; -- allwinner,function = "i2c1"; -- allwinner,drive = ; -- allwinner,pull = ; -- }; -- -- i2c2_pins_a: i2c2@0 { -- allwinner,pins = "PH4", "PH5"; -- allwinner,function = "i2c2"; -- allwinner,drive = ; -- allwinner,pull = ; -- }; -- - mmc0_pins_a: mmc0@0 { - allwinner,pins = "PF0", "PF1", "PF2", - "PF3", "PF4", "PF5"; -@@ -201,24 +174,6 @@ - allwinner,pull = ; - }; - -- mmc1_pins_a: mmc1@0 { -- allwinner,pins = "PG0", "PG1", "PG2", -- "PG3", "PG4", "PG5"; -- allwinner,function = "mmc1"; -- allwinner,drive = ; -- allwinner,pull = ; -- }; -- -- mmc2_8bit_pins: mmc2_8bit { -- allwinner,pins = "PC5", "PC6", "PC8", -- "PC9", "PC10", "PC11", -- "PC12", "PC13", "PC14", -- "PC15"; -- allwinner,function = "mmc2"; -- allwinner,drive = ; -- allwinner,pull = ; -- }; -- - uart0_pins_a: uart0@0 { - allwinner,pins = "PF2", "PF4"; - allwinner,function = "uart0"; -@@ -234,6 +189,21 @@ - }; - }; - -+ timer@01c20c00 { -+ compatible = "allwinner,sun4i-a10-timer"; -+ reg = <0x01c20c00 0xa0>; -+ interrupts = , -+ ; -+ clocks = <&osc24M>; -+ }; -+ -+ watchdog@01c20ca0 { -+ compatible = "allwinner,sun6i-a31-wdt"; -+ reg = <0x01c20ca0 0x20>; -+ interrupts = ; -+ clocks = <&osc24M>; -+ }; -+ - uart0: serial@01c28000 { - compatible = "snps,dw-apb-uart"; - reg = <0x01c28000 0x400>; -@@ -243,5 +213,16 @@ - clocks = <&osc24M>; - status = "disabled"; - }; -+ -+ gic: interrupt-controller@01c81000 { -+ compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic"; -+ reg = <0x01c81000 0x1000>, -+ <0x01c82000 0x1000>, -+ <0x01c84000 0x2000>, -+ <0x01c86000 0x2000>; -+ interrupt-controller; -+ #interrupt-cells = <3>; -+ interrupts = ; -+ }; - }; - }; ---- a/arch/arm/dts/sun8i-h3-orangepi-pc.dts -+++ b/arch/arm/dts/sun8i-h3-orangepi-pc.dts -@@ -45,6 +45,7 @@ - #include "sunxi-common-regulators.dtsi" - - #include -+#include - #include - - / { -@@ -58,6 +59,43 @@ - chosen { - stdout-path = "serial0:115200n8"; - }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&leds_opc>; -+ -+ status_led { -+ label = "status:red:user"; -+ gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; -+ }; -+ }; -+ -+ r_leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&leds_r_opc>; -+ -+ tx { -+ label = "pwr:green:user"; -+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ }; -+ -+ r_gpio_keys { -+ compatible = "gpio-keys"; -+ input-name = "sw4"; -+ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sw_r_opc>; -+ -+ sw4@0 { -+ label = "sw4"; -+ linux,code = ; -+ gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; -+ }; -+ }; - }; - - &ehci1 { -@@ -72,6 +110,12 @@ - status = "okay"; - }; - -+&ir { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&ir_pins_a>; -+ status = "okay"; -+}; -+ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>; -@@ -94,6 +138,31 @@ - status = "okay"; - }; - -+&pio { -+ leds_opc: led_pins@0 { -+ allwinner,pins = "PA15"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+&r_pio { -+ leds_r_opc: led_pins@0 { -+ allwinner,pins = "PL10"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ sw_r_opc: key_pins@0 { -+ allwinner,pins = "PL03"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ - &uart0 { - pinctrl-names = "default"; - pinctrl-0 = <&uart0_pins_a>; ---- a/arch/arm/dts/sun8i-h3-orangepi-plus.dts -+++ b/arch/arm/dts/sun8i-h3-orangepi-plus.dts -@@ -45,6 +45,7 @@ - #include "sunxi-common-regulators.dtsi" - - #include -+#include - #include - - / { -@@ -70,6 +71,68 @@ - enable-active-high; - gpio = <&pio 6 11 GPIO_ACTIVE_HIGH>; - }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&leds_opc>; -+ -+ status_led { -+ label = "status:red:user"; -+ gpios = <&pio 0 15 GPIO_ACTIVE_HIGH>; -+ }; -+ }; -+ -+ r_leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&leds_r_opc>; -+ -+ tx { -+ label = "pwr:green:user"; -+ gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; -+ default-state = "on"; -+ }; -+ }; -+ -+ r_gpio_keys { -+ compatible = "gpio-keys"; -+ input-name = "sw4"; -+ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sw_r_opc>; -+ -+ sw4@0 { -+ label = "sw4"; -+ linux,code = ; -+ gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; -+ }; -+ }; -+}; -+ -+&pio { -+ leds_opc: led_pins@0 { -+ allwinner,pins = "PA15"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+&r_pio { -+ leds_r_opc: led_pins@0 { -+ allwinner,pins = "PL10"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ sw_r_opc: key_pins@0 { -+ allwinner,pins = "PL03"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; - }; - - &ehci1 { ---- a/arch/arm/dts/sun8i-h3.dtsi -+++ b/arch/arm/dts/sun8i-h3.dtsi -@@ -83,12 +83,6 @@ - , - , - ; -- clock-frequency = <24000000>; -- arm,cpu-registers-not-fw-configured; -- }; -- -- memory { -- reg = <0x40000000 0x80000000>; - }; - - clocks { -@@ -131,15 +125,24 @@ - compatible = "allwinner,sun6i-a31-pll6-clk"; - reg = <0x01c20028 0x4>; - clocks = <&osc24M>; -- clock-output-names = "pll6", "pll6x2", "pll6d2"; -+ clock-output-names = "pll6", "pll6x2"; - }; - -- pll8: clk@01c20044 { -- #clock-cells = <1>; -- compatible = "allwinner,sun6i-a31-pll6-clk"; -- reg = <0x01c20044 0x4>; -- clocks = <&osc24M>; -- clock-output-names = "pll8", "pll8x2"; -+ pll6d2: pll6d2_clk { -+ #clock-cells = <0>; -+ compatible = "fixed-factor-clock"; -+ clock-div = <2>; -+ clock-mult = <1>; -+ clocks = <&pll6 0>; -+ clock-output-names = "pll6d2"; -+ }; -+ -+ /* dummy clock until pll6 can be reused */ -+ pll8: pll8_clk { -+ #clock-cells = <0>; -+ compatible = "fixed-clock"; -+ clock-frequency = <1>; -+ clock-output-names = "pll8"; - }; - - cpu: cpu_clk@01c20050 { -@@ -170,7 +173,7 @@ - #clock-cells = <0>; - compatible = "allwinner,sun8i-h3-ahb2-clk"; - reg = <0x01c2005c 0x4>; -- clocks = <&ahb1>, <&pll6 2>; -+ clocks = <&ahb1>, <&pll6d2>; - clock-output-names = "ahb2"; - }; - -@@ -213,34 +216,34 @@ - <76>, <77>, <78>, - <96>, <97>, <98>, - <112>, <113>, -- <114>, <115>, <116>, -- <128>, <135>; -- clock-output-names = "ahb1_ce", "ahb1_dma", "ahb1_mmc0", -- "ahb1_mmc1", "ahb1_mmc2", "ahb1_nand", -- "ahb1_sdram", "ahb2_gmac", "ahb1_ts", -- "ahb1_hstimer", "ahb1_spi0", -- "ahb1_spi1", "ahb1_otg", -- "ahb1_otg_ehci0", "ahb1_ehic1", -- "ahb1_ehic2", "ahb1_ehic3", -- "ahb1_otg_ohci0", "ahb2_ohic1", -- "ahb2_ohic2", "ahb2_ohic3", "ahb1_ve", -- "ahb1_lcd0", "ahb1_lcd1", "ahb1_deint", -- "ahb1_csi", "ahb1_tve", "ahb1_hdmi", -- "ahb1_de", "ahb1_gpu", "ahb1_msgbox", -- "ahb1_spinlock", "apb1_codec", -- "apb1_spdif", "apb1_pio", "apb1_ths", -- "apb1_i2s0", "apb1_i2s1", "apb1_i2s2", -- "apb2_i2c0", "apb2_i2c1", "apb2_i2c2", -- "apb2_uart0", "apb2_uart1", -- "apb2_uart2", "apb2_uart3", "apb2_scr", -- "ahb1_ephy", "ahb1_dbg"; -+ <114>, <115>, -+ <116>, <128>, <135>; -+ clock-output-names = "bus_ce", "bus_dma", "bus_mmc0", -+ "bus_mmc1", "bus_mmc2", "bus_nand", -+ "bus_sdram", "bus_gmac", "bus_ts", -+ "bus_hstimer", "bus_spi0", -+ "bus_spi1", "bus_otg", -+ "bus_otg_ehci0", "bus_ehci1", -+ "bus_ehci2", "bus_ehci3", -+ "bus_otg_ohci0", "bus_ohci1", -+ "bus_ohci2", "bus_ohci3", "bus_ve", -+ "bus_lcd0", "bus_lcd1", "bus_deint", -+ "bus_csi", "bus_tve", "bus_hdmi", -+ "bus_de", "bus_gpu", "bus_msgbox", -+ "bus_spinlock", "bus_codec", -+ "bus_spdif", "bus_pio", "bus_ths", -+ "bus_i2s0", "bus_i2s1", "bus_i2s2", -+ "bus_i2c0", "bus_i2c1", "bus_i2c2", -+ "bus_uart0", "bus_uart1", -+ "bus_uart2", "bus_uart3", -+ "bus_scr", "bus_ephy", "bus_dbg"; - }; - - mmc0_clk: clk@01c20088 { - #clock-cells = <1>; - compatible = "allwinner,sun4i-a10-mmc-clk"; - reg = <0x01c20088 0x4>; -- clocks = <&osc24M>, <&pll6 0>, <&pll8 0>; -+ clocks = <&osc24M>, <&pll6 0>, <&pll8>; - clock-output-names = "mmc0", - "mmc0_output", - "mmc0_sample"; -@@ -250,7 +253,7 @@ - #clock-cells = <1>; - compatible = "allwinner,sun4i-a10-mmc-clk"; - reg = <0x01c2008c 0x4>; -- clocks = <&osc24M>, <&pll6 0>, <&pll8 0>; -+ clocks = <&osc24M>, <&pll6 0>, <&pll8>; - clock-output-names = "mmc1", - "mmc1_output", - "mmc1_sample"; -@@ -260,7 +263,7 @@ - #clock-cells = <1>; - compatible = "allwinner,sun4i-a10-mmc-clk"; - reg = <0x01c20090 0x4>; -- clocks = <&osc24M>, <&pll6 0>, <&pll8 0>; -+ clocks = <&osc24M>, <&pll6 0>, <&pll8>; - clock-output-names = "mmc2", - "mmc2_output", - "mmc2_sample"; -@@ -285,6 +288,33 @@ - clocks = <&osc24M>, <&pll6 1>, <&pll5>; - clock-output-names = "mbus"; - }; -+ -+ apb0: apb0_clk { -+ compatible = "fixed-factor-clock"; -+ #clock-cells = <0>; -+ clock-div = <1>; -+ clock-mult = <1>; -+ clocks = <&osc24M>; -+ clock-output-names = "apb0"; -+ }; -+ -+ apb0_gates: clk@01f01428 { -+ compatible = "allwinner,sun8i-h3-apb0-gates-clk", -+ "allwinner,sun4i-a10-gates-clk"; -+ reg = <0x01f01428 0x4>; -+ #clock-cells = <1>; -+ clocks = <&apb0>; -+ clock-indices = <0>, <1>; -+ clock-output-names = "apb0_pio", "apb0_ir"; -+ }; -+ -+ ir_clk: ir_clk@01f01454 { -+ compatible = "allwinner,sun4i-a10-mod0-clk"; -+ reg = <0x01f01454 0x4>; -+ #clock-cells = <0>; -+ clocks = <&osc32k>, <&osc24M>; -+ clock-output-names = "ir"; -+ }; - }; - - soc { -@@ -298,7 +328,7 @@ - reg = <0x01c02000 0x1000>; - interrupts = ; - clocks = <&bus_gates 6>; -- resets = <&bus_rst 6>; -+ resets = <&ahb_rst 6>; - #dma-cells = <1>; - }; - -@@ -313,7 +343,7 @@ - "mmc", - "output", - "sample"; -- resets = <&bus_rst 8>; -+ resets = <&ahb_rst 8>; - reset-names = "ahb"; - interrupts = ; - status = "disabled"; -@@ -332,7 +362,7 @@ - "mmc", - "output", - "sample"; -- resets = <&bus_rst 9>; -+ resets = <&ahb_rst 9>; - reset-names = "ahb"; - interrupts = ; - status = "disabled"; -@@ -351,7 +381,7 @@ - "mmc", - "output", - "sample"; -- resets = <&bus_rst 10>; -+ resets = <&ahb_rst 10>; - reset-names = "ahb"; - interrupts = ; - status = "disabled"; -@@ -396,7 +426,7 @@ - reg = <0x01c1b000 0x100>; - interrupts = ; - clocks = <&bus_gates 25>, <&bus_gates 29>; -- resets = <&bus_rst 25>, <&bus_rst 29>; -+ resets = <&ahb_rst 25>, <&ahb_rst 29>; - phys = <&usbphy 1>; - phy-names = "usb"; - status = "disabled"; -@@ -408,7 +438,7 @@ - interrupts = ; - clocks = <&bus_gates 29>, <&bus_gates 25>, - <&usb_clk 17>; -- resets = <&bus_rst 29>, <&bus_rst 25>; -+ resets = <&ahb_rst 29>, <&ahb_rst 25>; - phys = <&usbphy 1>; - phy-names = "usb"; - status = "disabled"; -@@ -419,7 +449,7 @@ - reg = <0x01c1c000 0x100>; - interrupts = ; - clocks = <&bus_gates 26>, <&bus_gates 30>; -- resets = <&bus_rst 26>, <&bus_rst 30>; -+ resets = <&ahb_rst 26>, <&ahb_rst 30>; - phys = <&usbphy 2>; - phy-names = "usb"; - status = "disabled"; -@@ -431,7 +461,7 @@ - interrupts = ; - clocks = <&bus_gates 30>, <&bus_gates 26>, - <&usb_clk 18>; -- resets = <&bus_rst 30>, <&bus_rst 26>; -+ resets = <&ahb_rst 30>, <&ahb_rst 26>; - phys = <&usbphy 2>; - phy-names = "usb"; - status = "disabled"; -@@ -442,7 +472,7 @@ - reg = <0x01c1d000 0x100>; - interrupts = ; - clocks = <&bus_gates 27>, <&bus_gates 31>; -- resets = <&bus_rst 27>, <&bus_rst 31>; -+ resets = <&ahb_rst 27>, <&ahb_rst 31>; - phys = <&usbphy 3>; - phy-names = "usb"; - status = "disabled"; -@@ -454,7 +484,7 @@ - interrupts = ; - clocks = <&bus_gates 31>, <&bus_gates 27>, - <&usb_clk 19>; -- resets = <&bus_rst 31>, <&bus_rst 27>; -+ resets = <&ahb_rst 31>, <&ahb_rst 27>; - phys = <&usbphy 3>; - phy-names = "usb"; - status = "disabled"; -@@ -469,7 +499,7 @@ - gpio-controller; - #gpio-cells = <3>; - interrupt-controller; -- #interrupt-cells = <2>; -+ #interrupt-cells = <3>; - - uart0_pins_a: uart0@0 { - allwinner,pins = "PA4", "PA5"; -@@ -502,10 +532,22 @@ - }; - }; - -- bus_rst: reset@01c202c0 { -+ ahb_rst: reset@01c202c0 { - #reset-cells = <1>; -- compatible = "allwinner,sun8i-h3-bus-reset"; -- reg = <0x01c202c0 0x1c>; -+ compatible = "allwinner,sun6i-a31-ahb1-reset"; -+ reg = <0x01c202c0 0xc>; -+ }; -+ -+ apb1_rst: reset@01c202d0 { -+ #reset-cells = <1>; -+ compatible = "allwinner,sun6i-a31-clock-reset"; -+ reg = <0x01c202d0 0x4>; -+ }; -+ -+ apb2_rst: reset@01c202d8 { -+ #reset-cells = <1>; -+ compatible = "allwinner,sun6i-a31-clock-reset"; -+ reg = <0x01c202d8 0x4>; - }; - - timer@01c20c00 { -@@ -529,7 +571,7 @@ - reg-shift = <2>; - reg-io-width = <4>; - clocks = <&bus_gates 112>; -- resets = <&bus_rst 144>; -+ resets = <&apb2_rst 16>; - dmas = <&dma 6>, <&dma 6>; - dma-names = "rx", "tx"; - status = "disabled"; -@@ -542,7 +584,7 @@ - reg-shift = <2>; - reg-io-width = <4>; - clocks = <&bus_gates 113>; -- resets = <&bus_rst 145>; -+ resets = <&apb2_rst 17>; - dmas = <&dma 7>, <&dma 7>; - dma-names = "rx", "tx"; - status = "disabled"; -@@ -555,7 +597,7 @@ - reg-shift = <2>; - reg-io-width = <4>; - clocks = <&bus_gates 114>; -- resets = <&bus_rst 146>; -+ resets = <&apb2_rst 18>; - dmas = <&dma 8>, <&dma 8>; - dma-names = "rx", "tx"; - status = "disabled"; -@@ -568,7 +610,7 @@ - reg-shift = <2>; - reg-io-width = <4>; - clocks = <&bus_gates 115>; -- resets = <&bus_rst 147>; -+ resets = <&apb2_rst 19>; - dmas = <&dma 9>, <&dma 9>; - dma-names = "rx", "tx"; - status = "disabled"; -@@ -591,5 +633,40 @@ - interrupts = , - ; - }; -+ -+ apb0_reset: reset@01f014b0 { -+ reg = <0x01f014b0 0x4>; -+ compatible = "allwinner,sun6i-a31-clock-reset"; -+ #reset-cells = <1>; -+ }; -+ -+ ir: ir@01f02000 { -+ compatible = "allwinner,sun5i-a13-ir"; -+ clocks = <&apb0_gates 1>, <&ir_clk>; -+ clock-names = "apb", "ir"; -+ resets = <&apb0_reset 1>; -+ interrupts = ; -+ reg = <0x01f02000 0x40>; -+ status = "disabled"; -+ }; -+ -+ r_pio: pinctrl@01f02c00 { -+ compatible = "allwinner,sun8i-h3-r-pinctrl"; -+ reg = <0x01f02c00 0x400>; -+ interrupts = ; -+ clocks = <&apb0_gates 0>; -+ resets = <&apb0_reset 0>; -+ gpio-controller; -+ #gpio-cells = <3>; -+ interrupt-controller; -+ #interrupt-cells = <3>; -+ -+ ir_pins_a: ir@0 { -+ allwinner,pins = "PL11"; -+ allwinner,function = "s_cir_rx"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ }; - }; - }; ---- a/arch/arm/dts/sun8i-q8-common.dtsi -+++ b/arch/arm/dts/sun8i-q8-common.dtsi -@@ -41,11 +41,23 @@ - */ - #include "sunxi-q8-common.dtsi" - -+#include -+ - / { - aliases { - serial0 = &r_uart; - }; - -+ backlight: backlight { -+ compatible = "pwm-backlight"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&bl_en_pin_q8>; -+ pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; -+ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; -+ default-brightness-level = <8>; -+ enable-gpios = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */ -+ }; -+ - chosen { - stdout-path = "serial0:115200n8"; - }; -@@ -54,7 +66,7 @@ - &mmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_q8>; -- vmmc-supply = <®_vcc3v0>; -+ vmmc-supply = <®_dcdc1>; - bus-width = <4>; - cd-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */ - cd-inverted; -@@ -77,8 +89,90 @@ - }; - }; - -+&r_rsb { -+ status = "okay"; -+ -+ axp22x: pmic@3a3 { -+ compatible = "x-powers,axp223"; -+ reg = <0x3a3>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ eldoin-supply = <®_dcdc1>; -+ }; -+}; -+ -+#include "axp22x.dtsi" -+ -+®_aldo1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-io"; -+}; -+ -+®_aldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <2350000>; -+ regulator-max-microvolt = <2650000>; -+ regulator-name = "vdd-dll"; -+}; -+ -+®_aldo3 { -+ regulator-always-on; -+ regulator-min-microvolt = <2700000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-name = "vcc-pll-avcc"; -+}; -+ -+®_dc1sw { -+ regulator-name = "vcc-lcd"; -+}; -+ -+®_dc5ldo { -+ regulator-always-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpus"; -+}; -+ -+®_dcdc1 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "vcc-3v0"; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-sys"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <900000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc5 { -+ regulator-always-on; -+ regulator-min-microvolt = <1500000>; -+ regulator-max-microvolt = <1500000>; -+ regulator-name = "vcc-dram"; -+}; -+ -+®_rtc_ldo { -+ regulator-name = "vcc-rtc"; -+}; -+ - &r_uart { - pinctrl-names = "default"; - pinctrl-0 = <&r_uart_pins_a>; - status = "okay"; - }; -+ -+&simplefb_lcd { -+ vcc-lcd-supply = <®_dc1sw>; -+}; ---- a/arch/arm/dts/sun9i-a80-cubieboard4.dts -+++ b/arch/arm/dts/sun9i-a80-cubieboard4.dts -@@ -62,9 +62,31 @@ - stdout-path = "serial0:115200n8"; - }; - -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_pins_cubieboard4>; -+ -+ green { -+ label = "cubieboard4:green:usr"; -+ gpios = <&pio 7 17 GPIO_ACTIVE_HIGH>; /* PH17 */ -+ }; -+ -+ red { -+ label = "cubieboard4:red:usr"; -+ gpios = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */ -+ }; -+ }; - }; - - &pio { -+ led_pins_cubieboard4: led-pins@0 { -+ allwinner,pins = "PH6", "PH17"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ - mmc0_cd_pin_cubieboard4: mmc0_cd_pin@0 { - allwinner,pins = "PH18"; - allwinner,function = "gpio_in"; -@@ -89,6 +111,20 @@ - vmmc-supply = <®_vcc3v0>; - bus-width = <8>; - non-removable; -+ cap-mmc-hw-reset; -+ status = "okay"; -+}; -+ -+&mmc2_8bit_pins { -+ /* Increase drive strength for DDR modes */ -+ allwinner,drive = ; -+}; -+ -+&r_ir { -+ status = "okay"; -+}; -+ -+&r_rsb { - status = "okay"; - }; - ---- a/arch/arm/dts/sun9i-a80-optimus.dts -+++ b/arch/arm/dts/sun9i-a80-optimus.dts -@@ -65,7 +65,7 @@ - leds { - compatible = "gpio-leds"; - pinctrl-names = "default"; -- pinctrl-0 = <&led_pins_optimus>; -+ pinctrl-0 = <&led_pins_optimus>, <&led_r_pins_optimus>; - - /* The LED names match those found on the board */ - -@@ -74,7 +74,10 @@ - gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; - }; - -- /* led3 is on PM15, in R_PIO */ -+ led3 { -+ label = "optimus:led3:usr"; -+ gpios = <&r_pio 1 15 GPIO_ACTIVE_HIGH>; /* PM15 */ -+ }; - - led4 { - label = "optimus:led4:usr"; -@@ -106,17 +109,6 @@ - status = "okay"; - }; - --&i2c3 { -- pinctrl-names = "default"; -- pinctrl-0 = <&i2c3_pins_a>; -- status = "okay"; --}; -- --&i2c3_pins_a { -- /* Enable internal pull-up */ -- allwinner,pull = ; --}; -- - &ohci0 { - status = "okay"; - }; -@@ -171,30 +163,42 @@ - vmmc-supply = <®_vcc3v0>; - bus-width = <8>; - non-removable; -+ cap-mmc-hw-reset; - status = "okay"; - }; - -+&mmc2_8bit_pins { -+ /* Increase drive strength for DDR modes */ -+ allwinner,drive = ; -+}; -+ - ®_usb1_vbus { - pinctrl-0 = <&usb1_vbus_pin_optimus>; - gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */ - status = "okay"; - }; - --&uart0 { -- pinctrl-names = "default"; -- pinctrl-0 = <&uart0_pins_a>; -+&r_ir { - status = "okay"; - }; - --&uart4 { -- pinctrl-names = "default"; -- pinctrl-0 = <&uart4_pins_a>; -+&r_pio { -+ led_r_pins_optimus: led-pins@1 { -+ allwinner,pins = "PM15"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+}; -+ -+&r_rsb { - status = "okay"; - }; - --&uart4_pins_a { -- /* Enable internal pull-up */ -- allwinner,pull = ; -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins_a>; -+ status = "okay"; - }; - - &usbphy1 { ---- a/arch/arm/dts/sun9i-a80.dtsi -+++ b/arch/arm/dts/sun9i-a80.dtsi -@@ -128,6 +128,17 @@ - */ - ranges = <0 0 0 0x20000000>; - -+ /* -+ * This clock is actually configurable from the PRCM address -+ * space. The external 24M oscillator can be turned off, and -+ * the clock switched to an internal 16M RC oscillator. Under -+ * normal operation there's no reason to do this, and the -+ * default is to use the external good one, so just model this -+ * as a fixed clock. Also it is not entirely clear if the -+ * osc24M mux in the PRCM affects the entire clock tree, which -+ * would also throw all the PLL clock rates off, or just the -+ * downstream clocks in the PRCM. -+ */ - osc24M: osc24M_clk { - #clock-cells = <0>; - compatible = "fixed-clock"; -@@ -135,6 +146,13 @@ - clock-output-names = "osc24M"; - }; - -+ /* -+ * The 32k clock is from an external source, normally the -+ * AC100 codec/RTC chip. This clock is by default enabled -+ * and clocked at 32768 Hz, from the oscillator connected -+ * to the AC100. It is configurable, but no such driver or -+ * bindings exist yet. -+ */ - osc32k: osc32k_clk { - #clock-cells = <0>; - compatible = "fixed-clock"; -@@ -164,6 +182,14 @@ - "usb_phy2", "usb_hsic_12M"; - }; - -+ pll3: clk@06000008 { -+ /* placeholder until implemented */ -+ #clock-cells = <0>; -+ compatible = "fixed-clock"; -+ clock-rate = <0>; -+ clock-output-names = "pll3"; -+ }; -+ - pll4: clk@0600000c { - #clock-cells = <0>; - compatible = "allwinner,sun9i-a80-pll4-clk"; -@@ -277,9 +303,12 @@ - compatible = "allwinner,sun9i-a80-ahb0-gates-clk"; - reg = <0x06000580 0x4>; - clocks = <&ahb0>; -- clock-indices = <0>, <1>, <3>, <5>, <8>, <12>, <13>, -- <14>, <15>, <16>, <18>, <20>, <21>, -- <22>, <23>; -+ clock-indices = <0>, <1>, <3>, -+ <5>, <8>, <12>, -+ <13>, <14>, -+ <15>, <16>, <18>, -+ <20>, <21>, <22>, -+ <23>; - clock-output-names = "ahb0_fd", "ahb0_ve", "ahb0_gpu", - "ahb0_ss", "ahb0_sd", "ahb0_nand1", - "ahb0_nand0", "ahb0_sdram", -@@ -293,7 +322,10 @@ - compatible = "allwinner,sun9i-a80-ahb1-gates-clk"; - reg = <0x06000584 0x4>; - clocks = <&ahb1>; -- clock-indices = <0>, <1>, <17>, <21>, <22>, <23>, <24>; -+ clock-indices = <0>, <1>, -+ <17>, <21>, -+ <22>, <23>, -+ <24>; - clock-output-names = "ahb1_usbotg", "ahb1_usbhci", - "ahb1_gmac", "ahb1_msgbox", - "ahb1_spinlock", "ahb1_hstimer", -@@ -305,8 +337,9 @@ - compatible = "allwinner,sun9i-a80-ahb2-gates-clk"; - reg = <0x06000588 0x4>; - clocks = <&ahb2>; -- clock-indices = <0>, <1>, <2>, <4>, <5>, <7>, <8>, -- <11>; -+ clock-indices = <0>, <1>, -+ <2>, <4>, <5>, -+ <7>, <8>, <11>; - clock-output-names = "ahb2_lcd0", "ahb2_lcd1", - "ahb2_edp", "ahb2_csi", "ahb2_hdmi", - "ahb2_de", "ahb2_mp", "ahb2_mipi_dsi"; -@@ -317,8 +350,10 @@ - compatible = "allwinner,sun9i-a80-apb0-gates-clk"; - reg = <0x06000590 0x4>; - clocks = <&apb0>; -- clock-indices = <1>, <5>, <11>, <12>, <13>, <15>, -- <17>, <18>, <19>; -+ clock-indices = <1>, <5>, -+ <11>, <12>, <13>, -+ <15>, <17>, <18>, -+ <19>; - clock-output-names = "apb0_spdif", "apb0_pio", - "apb0_ac97", "apb0_i2s0", "apb0_i2s1", - "apb0_lradc", "apb0_gpadc", "apb0_twd", -@@ -330,14 +365,79 @@ - compatible = "allwinner,sun9i-a80-apb1-gates-clk"; - reg = <0x06000594 0x4>; - clocks = <&apb1>; -- clock-indices = <0>, <1>, <2>, <3>, <4>, -- <16>, <17>, <18>, <19>, <20>, <21>; -+ clock-indices = <0>, <1>, -+ <2>, <3>, <4>, -+ <16>, <17>, -+ <18>, <19>, -+ <20>, <21>; - clock-output-names = "apb1_i2c0", "apb1_i2c1", - "apb1_i2c2", "apb1_i2c3", "apb1_i2c4", - "apb1_uart0", "apb1_uart1", - "apb1_uart2", "apb1_uart3", - "apb1_uart4", "apb1_uart5"; - }; -+ -+ cpus_clk: clk@08001410 { -+ compatible = "allwinner,sun9i-a80-cpus-clk"; -+ reg = <0x08001410 0x4>; -+ #clock-cells = <0>; -+ clocks = <&osc32k>, <&osc24M>, <&pll4>, <&pll3>; -+ clock-output-names = "cpus"; -+ }; -+ -+ ahbs: ahbs_clk { -+ compatible = "fixed-factor-clock"; -+ #clock-cells = <0>; -+ clock-div = <1>; -+ clock-mult = <1>; -+ clocks = <&cpus_clk>; -+ clock-output-names = "ahbs"; -+ }; -+ -+ apbs: clk@0800141c { -+ compatible = "allwinner,sun8i-a23-apb0-clk"; -+ reg = <0x0800141c 0x4>; -+ #clock-cells = <0>; -+ clocks = <&ahbs>; -+ clock-output-names = "apbs"; -+ }; -+ -+ apbs_gates: clk@08001428 { -+ compatible = "allwinner,sun9i-a80-apbs-gates-clk"; -+ reg = <0x08001428 0x4>; -+ #clock-cells = <1>; -+ clocks = <&apbs>; -+ clock-indices = <0>, <1>, -+ <2>, <3>, -+ <4>, <5>, -+ <6>, <7>, -+ <12>, <13>, -+ <16>, <17>, -+ <18>, <20>; -+ clock-output-names = "apbs_pio", "apbs_ir", -+ "apbs_timer", "apbs_rsb", -+ "apbs_uart", "apbs_1wire", -+ "apbs_i2c0", "apbs_i2c1", -+ "apbs_ps2_0", "apbs_ps2_1", -+ "apbs_dma", "apbs_i2s0", -+ "apbs_i2s1", "apbs_twd"; -+ }; -+ -+ r_1wire_clk: clk@08001450 { -+ reg = <0x08001450 0x4>; -+ #clock-cells = <0>; -+ compatible = "allwinner,sun4i-a10-mod0-clk"; -+ clocks = <&osc32k>, <&osc24M>; -+ clock-output-names = "r_1wire"; -+ }; -+ -+ r_ir_clk: clk@08001454 { -+ reg = <0x08001454 0x4>; -+ #clock-cells = <0>; -+ compatible = "allwinner,sun4i-a10-mod0-clk"; -+ clocks = <&osc32k>, <&osc24M>; -+ clock-output-names = "r_ir"; -+ }; - }; - - soc { -@@ -443,7 +543,7 @@ - }; - - mmc0: mmc@01c0f000 { -- compatible = "allwinner,sun5i-a13-mmc"; -+ compatible = "allwinner,sun9i-a80-mmc"; - reg = <0x01c0f000 0x1000>; - clocks = <&mmc_config_clk 0>, <&mmc0_clk 0>, - <&mmc0_clk 1>, <&mmc0_clk 2>; -@@ -457,7 +557,7 @@ - }; - - mmc1: mmc@01c10000 { -- compatible = "allwinner,sun5i-a13-mmc"; -+ compatible = "allwinner,sun9i-a80-mmc"; - reg = <0x01c10000 0x1000>; - clocks = <&mmc_config_clk 1>, <&mmc1_clk 0>, - <&mmc1_clk 1>, <&mmc1_clk 2>; -@@ -471,7 +571,7 @@ - }; - - mmc2: mmc@01c11000 { -- compatible = "allwinner,sun5i-a13-mmc"; -+ compatible = "allwinner,sun9i-a80-mmc"; - reg = <0x01c11000 0x1000>; - clocks = <&mmc_config_clk 2>, <&mmc2_clk 0>, - <&mmc2_clk 1>, <&mmc2_clk 2>; -@@ -485,7 +585,7 @@ - }; - - mmc3: mmc@01c12000 { -- compatible = "allwinner,sun5i-a13-mmc"; -+ compatible = "allwinner,sun9i-a80-mmc"; - reg = <0x01c12000 0x1000>; - clocks = <&mmc_config_clk 3>, <&mmc3_clk 0>, - <&mmc3_clk 1>, <&mmc3_clk 2>; -@@ -582,7 +682,7 @@ - clocks = <&apb0_gates 5>; - gpio-controller; - interrupt-controller; -- #interrupt-cells = <2>; -+ #interrupt-cells = <3>; - #size-cells = <0>; - #gpio-cells = <3>; - -@@ -604,7 +704,8 @@ - mmc2_8bit_pins: mmc2_8bit { - allwinner,pins = "PC6", "PC7", "PC8", "PC9", - "PC10", "PC11", "PC12", -- "PC13", "PC14", "PC15"; -+ "PC13", "PC14", "PC15", -+ "PC16"; - allwinner,function = "mmc2"; - allwinner,drive = ; - allwinner,pull = ; -@@ -752,14 +853,83 @@ - interrupts = ; - }; - -+ apbs_rst: reset@080014b0 { -+ reg = <0x080014b0 0x4>; -+ compatible = "allwinner,sun6i-a31-clock-reset"; -+ #reset-cells = <1>; -+ }; -+ -+ nmi_intc: interrupt-controller@080015a0 { -+ compatible = "allwinner,sun9i-a80-nmi"; -+ interrupt-controller; -+ #interrupt-cells = <2>; -+ reg = <0x080015a0 0xc>; -+ interrupts = ; -+ }; -+ -+ r_ir: ir@08002000 { -+ compatible = "allwinner,sun5i-a13-ir"; -+ interrupts = ; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&r_ir_pins>; -+ clocks = <&apbs_gates 1>, <&r_ir_clk>; -+ clock-names = "apb", "ir"; -+ resets = <&apbs_rst 1>; -+ reg = <0x08002000 0x40>; -+ status = "disabled"; -+ }; -+ - r_uart: serial@08002800 { - compatible = "snps,dw-apb-uart"; - reg = <0x08002800 0x400>; - interrupts = ; - reg-shift = <2>; - reg-io-width = <4>; -- clocks = <&osc24M>; -+ clocks = <&apbs_gates 4>; -+ resets = <&apbs_rst 4>; - status = "disabled"; - }; -+ -+ r_pio: pinctrl@08002c00 { -+ compatible = "allwinner,sun9i-a80-r-pinctrl"; -+ reg = <0x08002c00 0x400>; -+ interrupts = , -+ ; -+ clocks = <&apbs_gates 0>; -+ resets = <&apbs_rst 0>; -+ gpio-controller; -+ interrupt-controller; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ #gpio-cells = <3>; -+ -+ r_ir_pins: r_ir { -+ allwinner,pins = "PL6"; -+ allwinner,function = "s_cir_rx"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ -+ r_rsb_pins: r_rsb { -+ allwinner,pins = "PN0", "PN1"; -+ allwinner,function = "s_rsb"; -+ allwinner,drive = ; -+ allwinner,pull = ; -+ }; -+ }; -+ -+ r_rsb: i2c@08003400 { -+ compatible = "allwinner,sun8i-a23-rsb"; -+ reg = <0x08003400 0x400>; -+ interrupts = ; -+ clocks = <&apbs_gates 3>; -+ clock-frequency = <3000000>; -+ resets = <&apbs_rst 3>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&r_rsb_pins>; -+ status = "disabled"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ }; - }; - }; ---- /dev/null -+++ b/arch/arm/dts/sunxi-itead-core-common.dtsi -@@ -0,0 +1,136 @@ -+/* -+ * Copyright 2015 - Marcus Cooper -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation; either version 2 of the -+ * License, or (at your option) any later version. -+ * -+ * This file is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+#include "sunxi-common-regulators.dtsi" -+ -+/ { -+ aliases { -+ serial0 = &uart0; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+}; -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+&ehci0 { -+ status = "okay"; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&i2c0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins_a>; -+ status = "okay"; -+ -+ axp209: pmic@34 { -+ reg = <0x34>; -+ }; -+}; -+ -+&i2c1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c1_pins_a>; -+ status = "okay"; -+}; -+ -+&ohci0 { -+ status = "okay"; -+}; -+ -+&ohci1 { -+ status = "okay"; -+}; -+ -+#include "axp209.dtsi" -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; -+ -+®_usb1_vbus { -+ status = "okay"; -+}; -+ -+®_usb2_vbus { -+ status = "okay"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins_a>; -+ status = "okay"; -+}; -+ -+&usbphy { -+ usb1_vbus-supply = <®_usb1_vbus>; -+ usb2_vbus-supply = <®_usb2_vbus>; -+ status = "okay"; -+}; ---- a/arch/arm/dts/sunxi-q8-common.dtsi -+++ b/arch/arm/dts/sunxi-q8-common.dtsi -@@ -75,3 +75,9 @@ - voltage = <400000>; - }; - }; -+ -+&pwm { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pwm0_pins>; -+ status = "okay"; -+}; diff --git a/package/boot/uboot-sunxi/patches/012-sun6i-fix-clock_twi_onoff.patch b/package/boot/uboot-sunxi/patches/012-sun6i-fix-clock_twi_onoff.patch deleted file mode 100644 index 45416703a4..0000000000 --- a/package/boot/uboot-sunxi/patches/012-sun6i-fix-clock_twi_onoff.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 730d2f3a41c5ccae71b5008fffdf697d143be68c Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Wed, 16 Mar 2016 20:44:51 +0100 -Subject: [PATCH] sunxi: Fix clock_twi_onoff for sun6i - -The clock_sun6i.c implementation was not deasserting the reset for -the regular i2c controllers, this commit fixes this. - -Signed-off-by: Hans de Goede -Acked-by: Ian Campbell ---- - arch/arm/cpu/armv7/sunxi/clock_sun6i.c | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - ---- a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c -+++ b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c -@@ -100,13 +100,18 @@ int clock_twi_onoff(int port, int state) - return 0; - } - -- /* set the apb clock gate for twi */ -- if (state) -+ /* set the apb clock gate and reset for twi */ -+ if (state) { - setbits_le32(&ccm->apb2_gate, - CLK_GATE_OPEN << (APB2_GATE_TWI_SHIFT+port)); -- else -+ setbits_le32(&ccm->apb2_reset_cfg, -+ 1 << (APB2_RESET_TWI_SHIFT + port)); -+ } else { -+ clrbits_le32(&ccm->apb2_reset_cfg, -+ 1 << (APB2_RESET_TWI_SHIFT + port)); - clrbits_le32(&ccm->apb2_gate, - CLK_GATE_OPEN << (APB2_GATE_TWI_SHIFT+port)); -+ } - - return 0; - } diff --git a/package/boot/uboot-sunxi/patches/013-enable-realtek-phy.patch b/package/boot/uboot-sunxi/patches/013-enable-realtek-phy.patch deleted file mode 100644 index 47f825c570..0000000000 --- a/package/boot/uboot-sunxi/patches/013-enable-realtek-phy.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 1eae8f66ff749409eb96e2f3f3387c56232d0b8a Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Wed, 16 Mar 2016 13:46:22 +0100 -Subject: [PATCH] sunxi: Enable realtek phy support - -Enable building of drivers/net/phy/realtek.c so that realtek phys -get properly initialized. - -Signed-off-by: Hans de Goede -Acked-by: Ian Campbell ---- - include/configs/sunxi-common.h | 1 + - 1 file changed, 1 insertion(+) - ---- a/include/configs/sunxi-common.h -+++ b/include/configs/sunxi-common.h -@@ -314,6 +314,7 @@ extern int soft_i2c_gpio_scl; - #define CONFIG_PHY_GIGE /* GMAC can use gigabit PHY */ - #define CONFIG_PHY_ADDR 1 - #define CONFIG_MII /* MII PHY management */ -+#define CONFIG_PHY_REALTEK - #endif - - #ifdef CONFIG_USB_EHCI_HCD diff --git a/package/boot/uboot-sunxi/patches/014-fix-gmac-init.patch b/package/boot/uboot-sunxi/patches/014-fix-gmac-init.patch deleted file mode 100644 index cf511ce773..0000000000 --- a/package/boot/uboot-sunxi/patches/014-fix-gmac-init.patch +++ /dev/null @@ -1,127 +0,0 @@ -From fc8991c61c393ce6a9d3dfc97cb56dbbd9e8cbba Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Thu, 17 Mar 2016 13:53:03 +0100 -Subject: [PATCH] sunxi: Fix gmac not working due to cpu_eth_init no longer - being called - -cpu_eth_init is no longer called for dm enabled eth drivers, this -was causing the sunxi gmac eth controller to no longer work in u-boot. - -This commit fixes this by calling the clock, reset and pinmux setup -function from s_init() and enabling the phy power pin (if any) from -board_init(). - -The enabling of phy power cannot be done from s_init because it uses dm -and dm is not ready yet at this point. - -Note that the mdelay is dropped as the phy gets enabled much earlier -now, so it is no longer needed. - -Signed-off-by: Hans de Goede -Acked-by: Ian Campbell -Tested-by: Karsten Merker -Tested-by: Michael Haas ---- - arch/arm/cpu/armv7/sunxi/board.c | 28 +--------------------------- - arch/arm/include/asm/arch-sunxi/sys_proto.h | 6 +++++- - board/sunxi/board.c | 5 +++++ - board/sunxi/gmac.c | 14 +------------- - 4 files changed, 12 insertions(+), 41 deletions(-) - ---- a/arch/arm/cpu/armv7/sunxi/board.c -+++ b/arch/arm/cpu/armv7/sunxi/board.c -@@ -136,6 +136,7 @@ void s_init(void) - timer_init(); - gpio_init(); - i2c_init_board(); -+ eth_init_board(); - } - - #ifdef CONFIG_SPL_BUILD -@@ -243,30 +244,3 @@ void enable_caches(void) - dcache_enable(); - } - #endif -- --#ifdef CONFIG_CMD_NET --/* -- * Initializes on-chip ethernet controllers. -- * to override, implement board_eth_init() -- */ --int cpu_eth_init(bd_t *bis) --{ -- __maybe_unused int rc; -- --#ifdef CONFIG_MACPWR -- gpio_request(CONFIG_MACPWR, "macpwr"); -- gpio_direction_output(CONFIG_MACPWR, 1); -- mdelay(200); --#endif -- --#ifdef CONFIG_SUNXI_GMAC -- rc = sunxi_gmac_initialize(bis); -- if (rc < 0) { -- printf("sunxi: failed to initialize gmac\n"); -- return rc; -- } --#endif -- -- return 0; --} --#endif ---- a/arch/arm/include/asm/arch-sunxi/sys_proto.h -+++ b/arch/arm/include/asm/arch-sunxi/sys_proto.h -@@ -24,6 +24,10 @@ void sdelay(unsigned long); - void return_to_fel(uint32_t lr, uint32_t sp); - - /* Board / SoC level designware gmac init */ --int sunxi_gmac_initialize(bd_t *bis); -+#if !defined CONFIG_SPL_BUILD && defined CONFIG_SUNXI_GMAC -+void eth_init_board(void); -+#else -+static inline void eth_init_board(void) {} -+#endif - - #endif ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -90,6 +90,11 @@ int board_init(void) - if (ret) - return ret; - -+#ifdef CONFIG_MACPWR -+ gpio_request(CONFIG_MACPWR, "macpwr"); -+ gpio_direction_output(CONFIG_MACPWR, 1); -+#endif -+ - /* Uses dm gpio code so do this here and not in i2c_init_board() */ - return soft_i2c_board_init(); - } ---- a/board/sunxi/gmac.c -+++ b/board/sunxi/gmac.c -@@ -6,7 +6,7 @@ - #include - #include - --int sunxi_gmac_initialize(bd_t *bis) -+void eth_init_board(void) - { - int pin; - struct sunxi_ccm_reg *const ccm = -@@ -79,16 +79,4 @@ int sunxi_gmac_initialize(bd_t *bis) - for (pin = SUNXI_GPA(26); pin <= SUNXI_GPA(27); pin++) - sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC); - #endif -- --#ifdef CONFIG_DM_ETH -- return 0; --#else --# ifdef CONFIG_RGMII -- return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII); --# elif defined CONFIG_GMII -- return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_GMII); --# else -- return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_MII); --# endif --#endif - } diff --git a/package/boot/uboot-sunxi/patches/015-fix-2nd-usb-ctrler-on-sun47i.patch b/package/boot/uboot-sunxi/patches/015-fix-2nd-usb-ctrler-on-sun47i.patch deleted file mode 100644 index 95a77c68d6..0000000000 --- a/package/boot/uboot-sunxi/patches/015-fix-2nd-usb-ctrler-on-sun47i.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 948603d4d637a0e04a3214253b911cfc4ed11220 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Mon, 21 Mar 2016 14:44:35 +0100 -Subject: [PATCH] sunxi: Fix 2nd usb controller on sun4i/sun7i no longer - working - -The 2nd usb controller on sun4i/sun7i has its base address 0x8000 -bytes from the 1st one, rather then 0x1000. Also the ahb clk gates -are interleaved with the ohci clk-gates introducing a hole between -the clks for usb1 and usb2. - -Signed-off-by: Hans de Goede -Acked-by: Ian Campbell ---- - drivers/usb/host/ehci-sunxi.c | 13 +++++++++++-- - drivers/usb/host/ohci-sunxi.c | 15 ++++++++++++--- - 2 files changed, 23 insertions(+), 5 deletions(-) - ---- a/drivers/usb/host/ehci-sunxi.c -+++ b/drivers/usb/host/ehci-sunxi.c -@@ -17,6 +17,14 @@ - #include - #include "ehci.h" - -+#ifdef CONFIG_SUNXI_GEN_SUN4I -+#define BASE_DIST 0x8000 -+#define AHB_CLK_DIST 2 -+#else -+#define BASE_DIST 0x1000 -+#define AHB_CLK_DIST 1 -+#endif -+ - struct ehci_sunxi_priv { - struct ehci_ctrl ehci; - int ahb_gate_mask; /* Mask of ahb_gate0 clk gate bits for this hcd */ -@@ -39,8 +47,9 @@ static int ehci_usb_probe(struct udevice - #ifdef CONFIG_MACH_SUN8I_H3 - priv->ahb_gate_mask |= 1 << AHB_GATE_OFFSET_USB_OHCI0; - #endif -- priv->phy_index = ((u32)hccr - SUNXI_USB1_BASE) / 0x1000 + 1; -- priv->ahb_gate_mask <<= priv->phy_index - 1; -+ priv->phy_index = ((u32)hccr - SUNXI_USB1_BASE) / BASE_DIST; -+ priv->ahb_gate_mask <<= priv->phy_index * AHB_CLK_DIST; -+ priv->phy_index++; /* Non otg phys start at 1 */ - - setbits_le32(&ccm->ahb_gate0, priv->ahb_gate_mask); - #ifdef CONFIG_SUNXI_GEN_SUN6I ---- a/drivers/usb/host/ohci-sunxi.c -+++ b/drivers/usb/host/ohci-sunxi.c -@@ -17,6 +17,14 @@ - #include - #include "ohci.h" - -+#ifdef CONFIG_SUNXI_GEN_SUN4I -+#define BASE_DIST 0x8000 -+#define AHB_CLK_DIST 2 -+#else -+#define BASE_DIST 0x1000 -+#define AHB_CLK_DIST 1 -+#endif -+ - struct ohci_sunxi_priv { - ohci_t ohci; - int ahb_gate_mask; /* Mask of ahb_gate0 clk gate bits for this hcd */ -@@ -42,9 +50,10 @@ static int ohci_usb_probe(struct udevice - priv->ahb_gate_mask |= 1 << AHB_GATE_OFFSET_USB_EHCI0; - #endif - priv->usb_gate_mask = CCM_USB_CTRL_OHCI0_CLK; -- priv->phy_index = ((u32)regs - (SUNXI_USB1_BASE + 0x400)) / 0x1000 + 1; -- priv->ahb_gate_mask <<= priv->phy_index - 1; -- priv->usb_gate_mask <<= priv->phy_index - 1; -+ priv->phy_index = ((u32)regs - (SUNXI_USB1_BASE + 0x400)) / BASE_DIST; -+ priv->ahb_gate_mask <<= priv->phy_index * AHB_CLK_DIST; -+ priv->usb_gate_mask <<= priv->phy_index; -+ priv->phy_index++; /* Non otg phys start at 1 */ - - setbits_le32(&ccm->ahb_gate0, priv->ahb_gate_mask); - setbits_le32(&ccm->usb_clk_cfg, priv->usb_gate_mask); diff --git a/package/boot/uboot-sunxi/patches/016-spl-print-mmc-slot.patch b/package/boot/uboot-sunxi/patches/016-spl-print-mmc-slot.patch deleted file mode 100644 index 04a2af72ee..0000000000 --- a/package/boot/uboot-sunxi/patches/016-spl-print-mmc-slot.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 8f10b5c65611e6c15a113bf63289b6696452f90d Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Sun, 20 Mar 2016 14:17:10 +0100 -Subject: [PATCH] spl: Print from which mmc slot spl is trying to boot - -On some sunxi boards (and presumably also non sunxi boards) u-boot can -be either loaded from a sdcard in a micro-sd slot, or from eMMC. - -Print which MMC spl tries to boot from, to help debugging. - -Signed-off-by: Hans de Goede -Reviewed-by: Tom Rini ---- - common/spl/spl.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - ---- a/common/spl/spl.c -+++ b/common/spl/spl.c -@@ -210,9 +210,9 @@ struct boot_device_name boot_name_table[ - { BOOT_DEVICE_RAM, "RAM" }, - #endif - #ifdef CONFIG_SPL_MMC_SUPPORT -- { BOOT_DEVICE_MMC1, "MMC" }, -- { BOOT_DEVICE_MMC2, "MMC" }, -- { BOOT_DEVICE_MMC2_2, "MMC" }, -+ { BOOT_DEVICE_MMC1, "MMC1" }, -+ { BOOT_DEVICE_MMC2, "MMC2" }, -+ { BOOT_DEVICE_MMC2_2, "MMC2_2" }, - #endif - #ifdef CONFIG_SPL_NAND_SUPPORT - { BOOT_DEVICE_NAND, "NAND" }, diff --git a/package/boot/uboot-sunxi/patches/017-usb-add-support-for-usb3-vbus-pin.patch b/package/boot/uboot-sunxi/patches/017-usb-add-support-for-usb3-vbus-pin.patch deleted file mode 100644 index 098fe72035..0000000000 --- a/package/boot/uboot-sunxi/patches/017-usb-add-support-for-usb3-vbus-pin.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 60fa63012fcdc3c4ec1497bf5e358f0a90b40949 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Fri, 18 Mar 2016 08:42:01 +0100 -Subject: [PATCH] sunxi: Add support for USB vbus pin for USB3 - -The H3 has USB0 - USB3, add support for having a USB vbus pin for USB3. - -Signed-off-by: Hans de Goede -Acked-by: Ian Campbell ---- - arch/arm/cpu/armv7/sunxi/usb_phy.c | 1 + - board/sunxi/Kconfig | 6 ++++++ - 2 files changed, 7 insertions(+) - ---- a/arch/arm/cpu/armv7/sunxi/usb_phy.c -+++ b/arch/arm/cpu/armv7/sunxi/usb_phy.c -@@ -76,6 +76,7 @@ static int get_vbus_gpio(int index) - case 0: return sunxi_name_to_gpio(CONFIG_USB0_VBUS_PIN); - case 1: return sunxi_name_to_gpio(CONFIG_USB1_VBUS_PIN); - case 2: return sunxi_name_to_gpio(CONFIG_USB2_VBUS_PIN); -+ case 3: return sunxi_name_to_gpio(CONFIG_USB3_VBUS_PIN); - } - return -EINVAL; - } ---- a/board/sunxi/Kconfig -+++ b/board/sunxi/Kconfig -@@ -341,6 +341,12 @@ config USB2_VBUS_PIN - ---help--- - See USB1_VBUS_PIN help text. - -+config USB3_VBUS_PIN -+ string "Vbus enable pin for usb3 (ehci2)" -+ default "" -+ ---help--- -+ See USB1_VBUS_PIN help text. -+ - config I2C0_ENABLE - bool "Enable I2C/TWI controller 0" - default y if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I diff --git a/package/boot/uboot-sunxi/patches/018-usb-specify-vbus-pins-on-orangepis.patch b/package/boot/uboot-sunxi/patches/018-usb-specify-vbus-pins-on-orangepis.patch deleted file mode 100644 index a216bc9f11..0000000000 --- a/package/boot/uboot-sunxi/patches/018-usb-specify-vbus-pins-on-orangepis.patch +++ /dev/null @@ -1,31 +0,0 @@ -From ce0d0926758f631fdd655d438acd32d5935d43a4 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Fri, 18 Mar 2016 08:45:21 +0100 -Subject: [PATCH] sunxi: Specify USB vbus pins for orangepi boards - -This fixes the USB ports not working on the orangepi_plus and stops us -from messing with gpio-s which we should not touch on the orangepi_pc. - -Signed-off-by: Hans de Goede -Acked-by: Ian Campbell ---- - configs/orangepi_pc_defconfig | 3 +++ - configs/orangepi_plus_defconfig | 1 + - 2 files changed, 4 insertions(+) - ---- a/configs/orangepi_pc_defconfig -+++ b/configs/orangepi_pc_defconfig -@@ -14,3 +14,6 @@ CONFIG_SPL=y - CONFIG_CMD_GPIO=y - CONFIG_SY8106A_POWER=y - CONFIG_USB_EHCI_HCD=y -+CONFIG_USB1_VBUS_PIN="" -+CONFIG_USB2_VBUS_PIN="" -+CONFIG_USB3_VBUS_PIN="" ---- a/configs/orangepi_plus_defconfig -+++ b/configs/orangepi_plus_defconfig -@@ -14,3 +14,4 @@ CONFIG_SPL=y - CONFIG_CMD_GPIO=y - CONFIG_SY8106A_POWER=y - CONFIG_USB_EHCI_HCD=y -+CONFIG_USB1_VBUS_PIN="PG13" diff --git a/package/boot/uboot-sunxi/patches/019-sid-add-efuse-support-for-h3-a83t.patch b/package/boot/uboot-sunxi/patches/019-sid-add-efuse-support-for-h3-a83t.patch deleted file mode 100644 index e7b8cd73df..0000000000 --- a/package/boot/uboot-sunxi/patches/019-sid-add-efuse-support-for-h3-a83t.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 70fe24ed93fa90eb407d18a5fc9d9ad85ac9184c Mon Sep 17 00:00:00 2001 -From: Chen-Yu Tsai -Date: Wed, 27 Jan 2016 16:34:43 +0800 -Subject: [PATCH] sunxi: Support SID e-fuses on A83T and H3 - -On the A83T and H3, the SID block is at a different address. -Furthurmore, the e-fuses are at an offset of 0x200 within the -hardware's address space. - -Signed-off-by: Chen-Yu Tsai -Acked-by: Hans de Goede -Signed-off-by: Hans de Goede ---- - arch/arm/include/asm/arch-sunxi/cpu_sun4i.h | 7 +++++++ - 1 file changed, 7 insertions(+) - ---- a/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h -+++ b/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h -@@ -82,7 +82,14 @@ - #define SUNXI_AD_DA_BASE 0x01c22c00 - #define SUNXI_KEYPAD_BASE 0x01c23000 - #define SUNXI_TZPC_BASE 0x01c23400 -+ -+#if defined(CONFIG_MACH_SUN8I_A83T) || defined(CONFIG_MACH_SUN8I_H3) -+/* SID address space starts at 0x01c1400, but e-fuse is at offset 0x200 */ -+#define SUNXI_SID_BASE 0x01c14200 -+#else - #define SUNXI_SID_BASE 0x01c23800 -+#endif -+ - #define SUNXI_SJTAG_BASE 0x01c23c00 - - #define SUNXI_TP_BASE 0x01c25000 diff --git a/package/boot/uboot-sunxi/patches/020-boot-display-board-model-on-startup.patch b/package/boot/uboot-sunxi/patches/020-boot-display-board-model-on-startup.patch deleted file mode 100644 index d49fc97373..0000000000 --- a/package/boot/uboot-sunxi/patches/020-boot-display-board-model-on-startup.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 2af25b747340c6c8f6a6b9e27632db577bf4da52 Mon Sep 17 00:00:00 2001 -From: Simon Glass -Date: Mon, 22 Feb 2016 22:55:46 -0700 -Subject: [PATCH] sunxi: Display the board model on start-up - -It is useful to know which sunxi board you are booting. Display this on -start-up to avoid confusion. - -Signed-off-by: Simon Glass ---- - include/configs/sunxi-common.h | 1 + - 1 file changed, 1 insertion(+) - ---- a/include/configs/sunxi-common.h -+++ b/include/configs/sunxi-common.h -@@ -174,6 +174,7 @@ - - #define CONFIG_SYS_MONITOR_LEN (768 << 10) /* 768 KiB */ - #define CONFIG_IDENT_STRING " Allwinner Technology" -+#define CONFIG_DISPLAY_BOARDINFO - - #define CONFIG_ENV_OFFSET (544 << 10) /* (8 + 24 + 512) KiB */ - #define CONFIG_ENV_SIZE (128 << 10) /* 128 KiB */ diff --git a/package/boot/uboot-sunxi/patches/062-A20-improve-gmac-upload.patch b/package/boot/uboot-sunxi/patches/062-A20-improve-gmac-upload.patch new file mode 100644 index 0000000000..679649c3f8 --- /dev/null +++ b/package/boot/uboot-sunxi/patches/062-A20-improve-gmac-upload.patch @@ -0,0 +1,12 @@ + GNU nano 2.7.4 File: 062-A20-improve-gmac-upload.patch + +--- a/configs/A20-OLinuXino-Lime2_defconfig ++++ b/configs/A20-OLinuXino-Lime2_defconfig +@@ -24,6 +24,7 @@ CONFIG_DFU_RAM=y + CONFIG_ETH_DESIGNWARE=y + CONFIG_RGMII=y + CONFIG_SUN7I_GMAC=y ++CONFIG_GMAC_TX_DELAY=1 + CONFIG_AXP_ALDO3_VOLT=2800 + CONFIG_AXP_ALDO4_VOLT=2800 + CONFIG_SCSI=y diff --git a/package/boot/uboot-sunxi/patches/091-sun6i-sync-PLL1-multdiv-with-Boot1.patch b/package/boot/uboot-sunxi/patches/091-sun6i-sync-PLL1-multdiv-with-Boot1.patch index a402feb3cd..cf41c4f1f1 100644 --- a/package/boot/uboot-sunxi/patches/091-sun6i-sync-PLL1-multdiv-with-Boot1.patch +++ b/package/boot/uboot-sunxi/patches/091-sun6i-sync-PLL1-multdiv-with-Boot1.patch @@ -12,9 +12,9 @@ More specifically, the following settings are now used: * up to 1152MHz: mul=3, div=2 (unchanged) * above 1152MHz: mul=4, div=2 (was: mul=2, div=1) ---- a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c -+++ b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c -@@ -122,11 +122,12 @@ void clock_set_pll1(unsigned int clk) +--- a/arch/arm/mach-sunxi/clock_sun6i.c ++++ b/arch/arm/mach-sunxi/clock_sun6i.c +@@ -113,11 +113,12 @@ void clock_set_pll1(unsigned int clk) struct sunxi_ccm_reg * const ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE; const int p = 0; diff --git a/package/boot/uboot-sunxi/patches/093-sun6i-fix-PLL-LDO-voltselect.patch b/package/boot/uboot-sunxi/patches/093-sun6i-fix-PLL-LDO-voltselect.patch index d200633bc2..a8e03e2fb2 100644 --- a/package/boot/uboot-sunxi/patches/093-sun6i-fix-PLL-LDO-voltselect.patch +++ b/package/boot/uboot-sunxi/patches/093-sun6i-fix-PLL-LDO-voltselect.patch @@ -16,9 +16,9 @@ order of magnitude as Boot1. Furthermore, a bit of documentation is added to clarify that the required setting for the PLL LDO is 1.37v as per the A31 manual. ---- a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c -+++ b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c -@@ -24,14 +24,27 @@ void clock_init_safe(void) +--- a/arch/arm/mach-sunxi/clock_sun6i.c ++++ b/arch/arm/mach-sunxi/clock_sun6i.c +@@ -26,13 +26,26 @@ void clock_init_safe(void) struct sunxi_prcm_reg * const prcm = (struct sunxi_prcm_reg *)SUNXI_PRCM_BASE; @@ -34,9 +34,9 @@ required setting for the PLL LDO is 1.37v as per the A31 manual. clrsetbits_le32(&prcm->pll_ctrl1, ~PRCM_PLL_CTRL_LDO_KEY_MASK, PRCM_PLL_CTRL_LDO_DIGITAL_EN | PRCM_PLL_CTRL_LDO_ANALOG_EN | - PRCM_PLL_CTRL_EXT_OSC_EN | PRCM_PLL_CTRL_LDO_OUT_L(1140)); -+ PRCM_PLL_CTRL_EXT_OSC_EN | PRCM_PLL_CTRL_LDO_OUT_L(1370) ); ++ PRCM_PLL_CTRL_EXT_OSC_EN | PRCM_PLL_CTRL_LDO_OUT_L(1370)); clrbits_le32(&prcm->pll_ctrl1, PRCM_PLL_CTRL_LDO_KEY_MASK); - ++ + /* Give the PLL LDO voltage setting some time to take hold. + * Notes: + * 1) We need to use sdelay() as the timers aren't set up yet. @@ -44,10 +44,9 @@ required setting for the PLL LDO is 1.37v as per the A31 manual. + * iterations through a loop. + */ + sdelay(100000); -+ - clock_set_pll1(408000000); + #endif - writel(PLL6_CFG_DEFAULT, &ccm->pll6_cfg); + #if defined(CONFIG_MACH_SUN8I_R40) || defined(CONFIG_MACH_SUN50I) --- a/arch/arm/include/asm/arch-sunxi/prcm.h +++ b/arch/arm/include/asm/arch-sunxi/prcm.h @@ -111,13 +111,13 @@ diff --git a/package/boot/uboot-sunxi/patches/100-sun6i-alternate-on-UART2.patch b/package/boot/uboot-sunxi/patches/100-sun6i-alternate-on-UART2.patch index bf5dc66e1a..8bab220518 100644 --- a/package/boot/uboot-sunxi/patches/100-sun6i-alternate-on-UART2.patch +++ b/package/boot/uboot-sunxi/patches/100-sun6i-alternate-on-UART2.patch @@ -6,11 +6,11 @@ Subject: sun6i: define alternate-function for UART2 on GPG --- a/arch/arm/include/asm/arch-sunxi/gpio.h +++ b/arch/arm/include/asm/arch-sunxi/gpio.h -@@ -180,6 +180,7 @@ enum sunxi_gpio_number { +@@ -186,6 +186,7 @@ enum sunxi_gpio_number { #define SUN6I_GPG_SDC1 2 #define SUN8I_GPG_SDC1 2 #define SUN6I_GPG_TWI3 2 +#define SUN6I_GPG_UART2 2 #define SUN5I_GPG_UART1 4 - #define SUN4I_GPH_SDC1 5 + #define SUN6I_GPH_PWM 2 diff --git a/package/boot/uboot-sunxi/patches/101-sun6i-support-console-on-UART2.patch b/package/boot/uboot-sunxi/patches/101-sun6i-support-console-on-UART2.patch index 087074d0c9..c1ba07eec5 100644 --- a/package/boot/uboot-sunxi/patches/101-sun6i-support-console-on-UART2.patch +++ b/package/boot/uboot-sunxi/patches/101-sun6i-support-console-on-UART2.patch @@ -4,9 +4,9 @@ Date: Tue, 16 Jun 2015 10:53:11 +0200 Subject: ARM: sun6i: Support console on UART2 (GPG6/GPG7) ---- a/arch/arm/cpu/armv7/sunxi/board.c -+++ b/arch/arm/cpu/armv7/sunxi/board.c -@@ -88,6 +88,10 @@ static int gpio_init(void) +--- a/arch/arm/mach-sunxi/board.c ++++ b/arch/arm/mach-sunxi/board.c +@@ -124,6 +124,10 @@ static int gpio_init(void) sunxi_gpio_set_cfgpin(SUNXI_GPG(3), SUN5I_GPG_UART1); sunxi_gpio_set_cfgpin(SUNXI_GPG(4), SUN5I_GPG_UART1); sunxi_gpio_set_pull(SUNXI_GPG(4), SUNXI_GPIO_PULL_UP); @@ -19,7 +19,7 @@ Subject: ARM: sun6i: Support console on UART2 (GPG6/GPG7) sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUN8I_GPB_UART2); --- a/include/configs/sunxi-common.h +++ b/include/configs/sunxi-common.h -@@ -260,6 +260,8 @@ extern int soft_i2c_gpio_scl; +@@ -256,6 +256,8 @@ extern int soft_i2c_gpio_scl; #endif #elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUN5I) #define OF_STDOUT_PATH "/soc@01c00000/serial@01c28400:115200" diff --git a/package/boot/uboot-sunxi/patches/102-sunxi-make_CONS_INDEX-configurable.patch b/package/boot/uboot-sunxi/patches/102-sunxi-make_CONS_INDEX-configurable.patch index ee1e3c9bfa..7a0ff97443 100644 --- a/package/boot/uboot-sunxi/patches/102-sunxi-make_CONS_INDEX-configurable.patch +++ b/package/boot/uboot-sunxi/patches/102-sunxi-make_CONS_INDEX-configurable.patch @@ -4,9 +4,9 @@ Date: Tue, 16 Jun 2015 10:59:38 +0200 Subject: ARM: sunxi: Make CONS_INDEX configurable ---- a/board/sunxi/Kconfig -+++ b/board/sunxi/Kconfig -@@ -229,6 +229,14 @@ config SYS_BOARD +--- a/arch/arm/mach-sunxi/Kconfig ++++ b/arch/arm/mach-sunxi/Kconfig +@@ -416,6 +416,14 @@ config SYS_BOARD config SYS_SOC default "sunxi" diff --git a/package/boot/uboot-sunxi/patches/200-mkimage-check-environment-for-dtc-binary-location.patch b/package/boot/uboot-sunxi/patches/200-mkimage-check-environment-for-dtc-binary-location.patch new file mode 100644 index 0000000000..249157958b --- /dev/null +++ b/package/boot/uboot-sunxi/patches/200-mkimage-check-environment-for-dtc-binary-location.patch @@ -0,0 +1,35 @@ +From 637800493945ffed2f454756300437a4ec86e3b1 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Wed, 19 Jul 2017 22:23:15 +0200 +Subject: mkimage: check environment for dtc binary location + +Currently mkimage assumes the dtc binary is in the path and fails +otherwise. This patch makes it check the DTC environment variable first +for the dtc binary and then fall back to the default path. This makes +it possible to call the u-boot build with make DTC=... and build a fit +image with the dtc binary not being the the default path. + +Signed-off-by: Hauke Mehrtens +Cc: Simon Glass +--- + tools/fit_image.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/tools/fit_image.c ++++ b/tools/fit_image.c +@@ -650,9 +650,14 @@ static int fit_handle_file(struct image_ + } + *cmd = '\0'; + } else if (params->datafile) { ++ const char* dtc = getenv("DTC"); ++ ++ if (!dtc) ++ dtc = MKIMAGE_DTC; ++ + /* dtc -I dts -O dtb -p 500 datafile > tmpfile */ + snprintf(cmd, sizeof(cmd), "%s %s \"%s\" > \"%s\"", +- MKIMAGE_DTC, params->dtc, params->datafile, tmpfile); ++ dtc, params->dtc, params->datafile, tmpfile); + debug("Trying to execute \"%s\"\n", cmd); + } else { + snprintf(cmd, sizeof(cmd), "cp \"%s\" \"%s\"", diff --git a/package/boot/uboot-sunxi/patches/210-sunxi-deactivate-binman.patch b/package/boot/uboot-sunxi/patches/210-sunxi-deactivate-binman.patch new file mode 100644 index 0000000000..b9cd9c7ac0 --- /dev/null +++ b/package/boot/uboot-sunxi/patches/210-sunxi-deactivate-binman.patch @@ -0,0 +1,28 @@ +From def280c4792262a368c8861312dc6b376181021f Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Mon, 1 Jan 2018 23:10:56 +0100 +Subject: sunxi: deactivate binman + +Use the old way to generate the images instead of binman. +binman needs python with swig to avoid this host tool dependency use the +old way of generating images. +--- + Makefile | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/Makefile ++++ b/Makefile +@@ -1144,9 +1144,10 @@ u-boot-x86-16bit.bin: u-boot FORCE + endif + + ifneq ($(CONFIG_ARCH_SUNXI),) +-u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb \ +- checkbinman FORCE +- $(call if_changed,binman) ++OBJCOPYFLAGS_u-boot-sunxi-with-spl.bin = -I binary -O binary \ ++ --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff ++u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img FORCE ++ $(call if_changed,pad_cat) + endif + + ifneq ($(CONFIG_TEGRA),) diff --git a/package/boot/uboot-sunxi/patches/220-add-sunxi50i-nanopi-neo-plus2.patch b/package/boot/uboot-sunxi/patches/220-add-sunxi50i-nanopi-neo-plus2.patch new file mode 100644 index 0000000000..aeee5b4975 --- /dev/null +++ b/package/boot/uboot-sunxi/patches/220-add-sunxi50i-nanopi-neo-plus2.patch @@ -0,0 +1,165 @@ +From 77f54e8698001d8a987f2aa4870f71b65dc089eb Mon Sep 17 00:00:00 2001 +In-Reply-To: <20170921152217.4011-1-antony@phenome.org> +References: <20170921152217.4011-1-antony@phenome.org> +From: Antony Antony +Date: Thu, 21 Sep 2017 13:34:07 +0200 +Subject: [PATCH v5 1/2] sun50i: h5: Add NanoPi Neo Plus2 DT initial support + +Add initial DT for NanoPi NEO Plus2 by FriendlyARM +- Allwinner quad core H5 Cortex A53 with an ARM Mali-450MP GPU +- 1 GB DDR3 RAM +- 8GB eMMC flash (Samsung KLM8G1WEPD-B031) +- micro SD card slot +- Gigabit Ethernet (external RTL8211E-VB-CG chip) +- 802.11 b/g/n WiFi, Bluetooth 4.0 (Ampak AP6212A module) +- 2x USB 2.0 host ports + +Signed-off-by: Antony Antony +--- + arch/arm/dts/Makefile | 1 + + arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts | 106 ++++++++++++++++++++++++++++ + configs/nanopi_neo_plus2_defconfig | 18 +++++ + 3 files changed, 125 insertions(+) + create mode 100644 arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts + create mode 100644 configs/nanopi_neo_plus2_defconfig + +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -337,6 +337,7 @@ dtb-$(CONFIG_MACH_SUN8I_V3S) += \ + sun8i-v3s-licheepi-zero.dtb + dtb-$(CONFIG_MACH_SUN50I_H5) += \ + sun50i-h5-nanopi-neo2.dtb \ ++ sun50i-h5-nanopi-neo-plus2.dtb \ + sun50i-h5-orangepi-pc2.dtb \ + sun50i-h5-orangepi-prime.dtb \ + sun50i-h5-orangepi-zero-plus2.dtb +--- /dev/null ++++ b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts +@@ -0,0 +1,106 @@ ++/* ++ * Copyright (C) 2017 Antony Antony ++ * Copyright (c) 2016 ARM Ltd. ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++/dts-v1/; ++ ++#include "sun50i-h5.dtsi" ++ ++#include ++ ++/ { ++ model = "FriendlyARM NanoPi NEO Plus 2"; ++ compatible = "friendlyarm,nanopi-neo-plus2", "allwinner,sun50i-h5"; ++ ++ aliases { ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ reg_vcc3v3: vcc3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&mmc0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>; ++ vmmc-supply = <®_vcc3v3>; ++ bus-width = <4>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; ++ cd-inverted; ++ status = "okay"; ++}; ++ ++&mmc2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc2_8bit_pins>; ++ vmmc-supply = <®_vcc3v3>; ++ bus-width = <8>; ++ non-removable; ++ cap-mmc-hw-reset; ++ status = "okay"; ++}; ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pins_a>; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++}; +--- /dev/null ++++ b/configs/nanopi_neo_plus2_defconfig +@@ -0,0 +1,18 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_MACH_SUN50I_H5=y ++CONFIG_DRAM_CLK=408 ++CONFIG_DRAM_ZQ=3881977 ++CONFIG_MACPWR="PD6" ++CONFIG_DEFAULT_DEVICE_TREE="sun50i-h5-nanopi-neo-plus2" ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL=y ++# CONFIG_CMD_IMLS is not set ++# CONFIG_CMD_FLASH is not set ++# CONFIG_CMD_FPGA is not set ++# CONFIG_SPL_DOS_PARTITION is not set ++# CONFIG_SPL_ISO_PARTITION is not set ++# CONFIG_SPL_EFI_PARTITION is not set ++CONFIG_SUN8I_EMAC=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_MMC_SUNXI_SLOT_EXTRA=2 diff --git a/package/boot/uboot-sunxi/patches/221-compatible-old-dtc.patch b/package/boot/uboot-sunxi/patches/221-compatible-old-dtc.patch new file mode 100644 index 0000000000..1b88de3e2a --- /dev/null +++ b/package/boot/uboot-sunxi/patches/221-compatible-old-dtc.patch @@ -0,0 +1,52 @@ +Revert the commit c0e032e0090d65 ("scripts/dtc: Update to upstream +version v1.4.3") +OpenWrt uses the dtc from the kernel also in u-boot, but when we compile +against kernel 4.9 we run into some errors because it is too old now. +Add the options only when they are supported to make it compatible with +dtc from kernel 4.9. + +--- a/scripts/Kbuild.include ++++ b/scripts/Kbuild.include +@@ -172,6 +172,11 @@ ld-version = $(shell $(LD) --version | $ + # Usage: $(call ld-ifversion, -ge, 22252, y) + ld-ifversion = $(shell [ $(ld-version) $(1) $(2) ] && echo $(3) || echo $(4)) + ++# dtc-option ++# Usage: DTC_FLAGS += $(call dtc-option,-Wno-unit_address_vs_reg) ++dtc-option = $(call try-run,\ ++ echo '/dts-v1/; / {};' | $(DTC) $(1),$(1),$(2)) ++ + ###### + + ### +--- a/scripts/Makefile.extrawarn ++++ b/scripts/Makefile.extrawarn +@@ -58,8 +58,8 @@ endif + + KBUILD_CFLAGS += $(warning) + +-dtc-warning-2 += -Wnode_name_chars_strict +-dtc-warning-2 += -Wproperty_name_chars_strict ++dtc-warning-2 += $(call dtc-option,-Wnode_name_chars_strict) ++dtc-warning-2 += $(call dtc-option,-Wproperty_name_chars_strict) + + dtc-warning := $(dtc-warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) + dtc-warning += $(dtc-warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) +@@ -70,11 +70,11 @@ DTC_FLAGS += $(dtc-warning) + else + + # Disable noisy checks by default +-DTC_FLAGS += -Wno-unit_address_vs_reg +-DTC_FLAGS += -Wno-simple_bus_reg +-DTC_FLAGS += -Wno-unit_address_format +-DTC_FLAGS += -Wno-pci_bridge +-DTC_FLAGS += -Wno-pci_device_bus_num +-DTC_FLAGS += -Wno-pci_device_reg ++DTC_FLAGS += $(call dtc-option,-Wno-unit_address_vs_reg) ++DTC_FLAGS += $(call dtc-option,-Wno-simple_bus_reg) ++DTC_FLAGS += $(call dtc-option,-Wno-unit_address_format) ++DTC_FLAGS += $(call dtc-option,-Wno-pci_bridge) ++DTC_FLAGS += $(call dtc-option,-Wno-pci_device_bus_num) ++DTC_FLAGS += $(call dtc-option,-Wno-pci_device_reg) + + endif diff --git a/package/boot/uboot-sunxi/patches/320-sunxi-Add-support-for-Orange-Pi-R1.patch b/package/boot/uboot-sunxi/patches/320-sunxi-Add-support-for-Orange-Pi-R1.patch new file mode 100644 index 0000000000..1181a44e80 --- /dev/null +++ b/package/boot/uboot-sunxi/patches/320-sunxi-Add-support-for-Orange-Pi-R1.patch @@ -0,0 +1,157 @@ +From 068fb0d5728c5ec93cb961718d59e7c718886edd Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Tue, 26 Sep 2017 22:16:59 +0200 +Subject: sunxi: Add support for Orange Pi R1 + +The device tree files are also submitted for inclusion into the Linux +kernel. + +Signed-off-by: Hauke Mehrtens +--- + arch/arm/dts/Makefile | 1 + + arch/arm/dts/sun8i-h2-plus-orangepi-r1.dts | 77 ++++++++++++++++++++++++++++++ + board/sunxi/MAINTAINERS | 5 ++ + configs/orangepi_r1_defconfig | 26 ++++++++++ + 4 files changed, 109 insertions(+) + create mode 100644 arch/arm/dts/sun8i-h2-plus-orangepi-r1.dts + create mode 100644 configs/orangepi_r1_defconfig + +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -318,6 +318,7 @@ dtb-$(CONFIG_MACH_SUN8I_A83T) += \ + sun8i-a83t-bananapi-m3.dtb \ + sun8i-a83t-cubietruck-plus.dtb + dtb-$(CONFIG_MACH_SUN8I_H3) += \ ++ sun8i-h2-plus-orangepi-r1.dtb \ + sun8i-h2-plus-orangepi-zero.dtb \ + sun8i-h3-bananapi-m2-plus.dtb \ + sun8i-h3-orangepi-2.dtb \ +--- /dev/null ++++ b/arch/arm/dts/sun8i-h2-plus-orangepi-r1.dts +@@ -0,0 +1,91 @@ ++/* ++ * Copyright (C) 2017 Icenowy Zheng ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This file is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++/* Orange Pi R1 is based on Orange Pi Zero design */ ++#include "sun8i-h2-plus-orangepi-zero.dts" ++ ++/ { ++ model = "Xunlong Orange Pi R1"; ++ compatible = "xunlong,orangepi-r1", "allwinner,sun8i-h2-plus"; ++ ++ /delete-node/ reg_vcc_wifi; ++ ++ /* ++ * Ths pin of this regulator is the same with the Wi-Fi extra ++ * regulator on the original Zero. However it's used for USB ++ * Ethernet rather than the Wi-Fi now. ++ */ ++ reg_vcc_usb_eth: reg-vcc-usb-ethernet { ++ compatible = "regulator-fixed"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-name = "vcc-usb-ethernet"; ++ enable-active-high; ++ gpio = <&pio 0 20 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ aliases { ++ ethernet1 = &rtl8189etv; ++ }; ++}; ++ ++&ohci1 { ++ /* ++ * RTL8152B USB-Ethernet adapter is connected to USB1, ++ * and it's a USB 2.0 device. So the OHCI1 controller ++ * can be left disabled. ++ */ ++ status = "disabled"; ++}; ++ ++&mmc1 { ++ vmmc-supply = <®_vcc3v3>; ++ vqmmc-supply = <®_vcc3v3>; ++ ++ rtl8189etv: sdio_wifi@1 { ++ reg = <1>; ++ }; ++}; ++ ++&usbphy { ++ usb1_vbus-supply = <®_vcc_usb_eth>; ++}; +--- a/board/sunxi/MAINTAINERS ++++ b/board/sunxi/MAINTAINERS +@@ -326,6 +326,11 @@ M: Jagan Teki ++S: Maintained ++F: configs/orangepi_r1_defconfig ++ + PINE64 BOARDS + M: Andre Przywara + S: Maintained +--- /dev/null ++++ b/configs/orangepi_r1_defconfig +@@ -0,0 +1,18 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_SPL_SPI_FLASH_SUPPORT=y ++CONFIG_MACH_SUN8I_H3=y ++CONFIG_DRAM_CLK=624 ++CONFIG_DRAM_ZQ=3881979 ++CONFIG_DRAM_ODT_EN=y ++# CONFIG_VIDEO_DE2 is not set ++CONFIG_DEFAULT_DEVICE_TREE="sun8i-h2-plus-orangepi-r1" ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_CONSOLE_MUX=y ++CONFIG_SPL=y ++# CONFIG_CMD_IMLS is not set ++# CONFIG_CMD_FLASH is not set ++# CONFIG_CMD_FPGA is not set ++CONFIG_SPL_SPI_SUNXI=y ++CONFIG_SUN8I_EMAC=y ++CONFIG_USB_EHCI_HCD=y diff --git a/package/boot/uboot-sunxi/patches/400-ARM-dts-orange-pi-zero-plus.patch b/package/boot/uboot-sunxi/patches/400-ARM-dts-orange-pi-zero-plus.patch new file mode 100644 index 0000000000..4363b5ee2b --- /dev/null +++ b/package/boot/uboot-sunxi/patches/400-ARM-dts-orange-pi-zero-plus.patch @@ -0,0 +1,148 @@ +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -339,6 +339,7 @@ dtb-$(CONFIG_MACH_SUN8I_V3S) += \ + dtb-$(CONFIG_MACH_SUN50I_H5) += \ + sun50i-h5-nanopi-neo2.dtb \ + sun50i-h5-nanopi-neo-plus2.dtb \ ++ sun50i-h5-orangepi-zero-plus.dtb \ + sun50i-h5-orangepi-pc2.dtb \ + sun50i-h5-orangepi-prime.dtb \ + sun50i-h5-orangepi-zero-plus2.dtb +--- /dev/null ++++ b/configs/orangepi_zero_plus_defconfig +@@ -0,0 +1,19 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_MACH_SUN50I_H5=y ++CONFIG_DRAM_CLK=624 ++CONFIG_DRAM_ZQ=3881977 ++CONFIG_MACPWR="PD6" ++CONFIG_MMC_SUNXI_SLOT_EXTRA=2 ++CONFIG_DEFAULT_DEVICE_TREE="sun50i-h5-orangepi-zero-plus" ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL=y ++# CONFIG_CMD_IMLS is not set ++# CONFIG_CMD_FLASH is not set ++# CONFIG_CMD_FPGA is not set ++# CONFIG_SPL_DOS_PARTITION is not set ++# CONFIG_SPL_ISO_PARTITION is not set ++# CONFIG_SPL_EFI_PARTITION is not set ++CONFIG_SPL_SPI_SUNXI=y ++CONFIG_SUN8I_EMAC=y ++CONFIG_USB_EHCI_HCD=y +--- /dev/null ++++ b/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts +@@ -0,0 +1,113 @@ ++/* ++ * Copyright (C) 2017 Antony Antony ++ * Copyright (c) 2016 ARM Ltd. ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++/dts-v1/; ++ ++#include "sun50i-h5.dtsi" ++ ++#include ++ ++/ { ++ model = "Xunlong Orange Pi Zero Plus"; ++ compatible = "xunlong,orangepizero-zero-plus", "allwinner,sun50i-h5"; ++ ++ aliases { ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ memory { ++ reg = <0x40000000 0x40000000>; ++ }; ++ ++ reg_vcc3v3: vcc3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&mmc0 { ++ compatible = "allwinner,sun50i-h5-mmc", ++ "allwinner,sun50i-a64-mmc", ++ "allwinner,sun5i-a13-mmc"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>; ++ vmmc-supply = <®_vcc3v3>; ++ bus-width = <4>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; ++ cd-inverted; ++ status = "okay"; ++}; ++ ++&mmc2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc2_8bit_pins>; ++ vmmc-supply = <®_vcc3v3>; ++ bus-width = <8>; ++ non-removable; ++ cap-mmc-hw-reset; ++ status = "okay"; ++}; ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pins_a>; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++}; diff --git a/package/boot/uboot-sunxi/uEnv-a64.txt b/package/boot/uboot-sunxi/uEnv-a64.txt new file mode 100644 index 0000000000..7a717fdc0f --- /dev/null +++ b/package/boot/uboot-sunxi/uEnv-a64.txt @@ -0,0 +1,5 @@ +setenv loadkernel fatload mmc 0 \$kernel_addr_r uImage +setenv loaddtb fatload mmc 0 \$fdt_addr_r dtb +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait earlycon=uart,mmio32,0x01c28000 +setenv uenvcmd run loadkernel \&\& run loaddtb \&\& booti \$kernel_addr_r - \$fdt_addr_r +run uenvcmd diff --git a/package/devel/binutils/Makefile b/package/devel/binutils/Makefile new file mode 100644 index 0000000000..291f45205a --- /dev/null +++ b/package/devel/binutils/Makefile @@ -0,0 +1,126 @@ +# +# Copyright (C) 2006-2013 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=binutils +PKG_VERSION:=2.27 +PKG_RELEASE:=1 + +PKG_SOURCE_URL:=@GNU/binutils +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_VERSION:=$(PKG_VERSION) +PKG_HASH:=369737ce51587f92466041a97ab7d2358c6d9e1b6490b3940eb09fb0a9a6ac88 + +PKG_FIXUP:=autoreconf +PKG_LIBTOOL_PATHS:=. gas bfd opcodes gprof binutils ld libiberty gold intl +PKG_REMOVE_FILES:=libtool.m4 +PKG_INSTALL:=1 + +PKG_MAINTAINER:=Felix Fietkau +PKG_LICENSE:=GPL-3.0+ +PKG_CPE_ID:=cpe:/a:gnu:binutils +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 + +include $(INCLUDE_DIR)/nls.mk +include $(INCLUDE_DIR)/package.mk + +define Package/libbfd + SECTION:=libs + CATEGORY:=Libraries + TITLE:=libbfd + DEPENDS:=+zlib $(ICONV_DEPENDS) $(INTL_DEPENDS) +endef + +define Package/libopcodes + SECTION:=libs + CATEGORY:=Libraries + TITLE:=libbfd + DEPENDS:=+libbfd +endef + +define Package/binutils + SECTION:=devel + CATEGORY:=Development + TITLE:=binutils + DEPENDS:=+objdump +ar +endef + +define Package/objdump + SECTION:=devel + CATEGORY:=Development + TITLE:=objdump + DEPENDS:=+libopcodes +endef + +define Package/ar + SECTION:=devel + CATEGORY:=Development + TITLE:=ar + DEPENDS:=+zlib +libbfd +endef + +define Package/binutils/description + The Binutils package contains a linker, an assembler, and other tools for handling object files +endef + +TARGET_CFLAGS += $(FPIC) -Wno-unused-value + +CONFIGURE_ARGS += \ + --host=$(REAL_GNU_TARGET_NAME) \ + --target=$(REAL_GNU_TARGET_NAME) \ + --enable-shared \ + --enable-install-libiberty \ + --enable-install-libbfd + +define Build/Install + $(call Build/Install/Default) + $(MAKE) -C $(PKG_BUILD_DIR)/libiberty \ + target_header_dir=libiberty \ + DESTDIR="$(PKG_INSTALL_DIR)" \ + MULTIOSDIR="" \ + install +endef + +define Build/InstallDev + $(CP) $(PKG_INSTALL_DIR)/* $(1)/ +endef + +define Package/libbfd/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libbfd*.so $(1)/usr/lib/ +endef + +define Package/libopcodes/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopcodes*.so $(1)/usr/lib/ +endef + +define Package/objdump/install + $(INSTALL_DIR) $(1)/usr/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/objdump $(1)/usr/bin/ +endef + +define Package/ar/install + $(INSTALL_DIR) $(1)/usr/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/ar $(1)/usr/bin/ +endef + +define Package/binutils/install + $(INSTALL_DIR) $(1)/usr $(1)/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/ $(1)/usr/ + mv $(1)/usr/bin/strings $(1)/bin/strings + rm -f $(1)/usr/bin/objdump + rm -f $(1)/usr/bin/ar +endef + +$(eval $(call BuildPackage,libbfd)) +$(eval $(call BuildPackage,libopcodes)) +$(eval $(call BuildPackage,binutils)) +$(eval $(call BuildPackage,objdump)) +$(eval $(call BuildPackage,ar)) diff --git a/package/devel/binutils/patches/0001-Do-not-pass-host-compiler-sanitization-flags-on-to-l.patch b/package/devel/binutils/patches/0001-Do-not-pass-host-compiler-sanitization-flags-on-to-l.patch new file mode 100644 index 0000000000..823527a2bc --- /dev/null +++ b/package/devel/binutils/patches/0001-Do-not-pass-host-compiler-sanitization-flags-on-to-l.patch @@ -0,0 +1,65 @@ +From 183eb37e25d903ccd68cc2d8f8a37e75872c03d2 Mon Sep 17 00:00:00 2001 +From: Nick Clifton +Date: Tue, 6 Sep 2016 17:35:35 +0100 +Subject: [PATCH 1/2] Do not pass host compiler sanitization flags on to linker + testsuite. + + * Makefile.am (CFLAGS_FOR_TARGET): Define as a copy of CFLAGS but + without any sanitization options. + (CXXFLAGS_FOR_TARGET): Define as a copy of CXXFLAGS but without + any sanitization options. + (check-DEJAGNU): Pass CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET + as CFLAGS and CXXFLAGS respectively. +--- + ld/Makefile.am | 8 ++++++-- + ld/Makefile.in | 8 ++++++-- + 2 files changed, 12 insertions(+), 4 deletions(-) + +--- a/ld/Makefile.am ++++ b/ld/Makefile.am +@@ -136,6 +136,10 @@ CXX_FOR_TARGET = ` \ + fi; \ + fi` + ++# Strip out sanitization options as we want to test building binaries without any extra paraphernalia ++CFLAGS_FOR_TARGET = `echo $(CFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'` ++CXXFLAGS_FOR_TARGET = `echo $(CXXFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'` ++ + transform = s/^ld-new$$/$(installed_linker)/;@program_transform_name@ + bin_PROGRAMS = ld-new + info_TEXINFOS = ld.texinfo +@@ -2075,8 +2079,8 @@ check-DEJAGNU: site.exp + runtest=$(RUNTEST); \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + $$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \ +- CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS)" \ +- CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS)" \ ++ CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS_FOR_TARGET)" \ ++ CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + CC_FOR_HOST="$(CC)" CFLAGS_FOR_HOST="$(CFLAGS)" \ + OFILES="$(OFILES)" BFDLIB="$(TESTBFDLIB)" \ + LIBIBERTY="$(LIBIBERTY) $(LIBINTL)" LIBS="$(LIBS)" \ +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -507,6 +507,10 @@ CXX_FOR_TARGET = ` \ + fi; \ + fi` + ++ ++# Strip out sanitization options as they require special host libraries. ++CFLAGS_FOR_TARGET = `echo $(CFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'` ++CXXFLAGS_FOR_TARGET = `echo $(CXXFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'` + info_TEXINFOS = ld.texinfo + ld_TEXINFOS = configdoc.texi + noinst_TEXINFOS = ldint.texinfo +@@ -3644,8 +3648,8 @@ check-DEJAGNU: site.exp + runtest=$(RUNTEST); \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + $$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \ +- CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS)" \ +- CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS)" \ ++ CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS_FOR_TARGET)" \ ++ CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + CC_FOR_HOST="$(CC)" CFLAGS_FOR_HOST="$(CFLAGS)" \ + OFILES="$(OFILES)" BFDLIB="$(TESTBFDLIB)" \ + LIBIBERTY="$(LIBIBERTY) $(LIBINTL)" LIBS="$(LIBS)" \ diff --git a/package/devel/binutils/patches/0002-When-building-target-binaries-ensure-that-the-warnin.patch b/package/devel/binutils/patches/0002-When-building-target-binaries-ensure-that-the-warnin.patch new file mode 100644 index 0000000000..b87c58ec77 --- /dev/null +++ b/package/devel/binutils/patches/0002-When-building-target-binaries-ensure-that-the-warnin.patch @@ -0,0 +1,1258 @@ +From b8ff24c72174effd5c5527866313982e28507275 Mon Sep 17 00:00:00 2001 +From: Vlad Zakharov +Date: Mon, 26 Sep 2016 16:36:08 +0100 +Subject: [PATCH 2/2] When building target binaries, ensure that the warning + flags selected for the command line match the target compiler. + +bfd * warning.m4 (AC_EGREP_CPP_FOR_BUILD): Introduce macro + to verify CC_FOR_BUILD compiler. + (AM_BINUTILS_WARNINGS): Introduce ac_cpp_for_build variable + and add CC_FOR_BUILD compiler checks. + * Makefile.in: Regenerate. + * configure: Likewise. + * doc/Makefile.in: Likewise. + +binutils * Makefile.am: Replace AM_CLFAGS with AM_CFLAGS_FOR_BUILD + when building with CC_FOR_BUILD compiler. + * Makefile.in: Regenerate. + * configure: Likewise. + * doc/Makefile.in: Likewise. + +gas * Makefile.in: Regenerate. + * configure: Likewise. + * doc/Makefile.in: Likewise. + +gold * Makefile.in: Regenerate. + * configure: Likewise. + * testsuite/Makefile.in: Likewise. + +gprof * Makefile.in: Regenerate. + * configure: Likewise. + +ld * Makefile.in: Regenerate. + * configure: Likewise. + +opcodes * Makefile.in: Regenerate. + * configure: Likewise. +--- + bfd/Makefile.in | 1 + + bfd/configure | 56 +++++++++++++++++++++++++++++++++++++++++----- + bfd/doc/Makefile.in | 1 + + bfd/warning.m4 | 47 ++++++++++++++++++++++++++++++++++---- + binutils/Makefile.am | 10 +++++---- + binutils/Makefile.in | 10 +++++---- + binutils/configure | 56 +++++++++++++++++++++++++++++++++++++++++----- + binutils/doc/Makefile.in | 1 + + gas/Makefile.in | 1 + + gas/configure | 56 +++++++++++++++++++++++++++++++++++++++++----- + gas/doc/Makefile.in | 1 + + gold/Makefile.in | 5 +++-- + gold/configure | 52 ++++++++++++++++++++++++++++++++++++++---- + gold/testsuite/Makefile.in | 1 + + gprof/Makefile.in | 1 + + gprof/configure | 56 +++++++++++++++++++++++++++++++++++++++++----- + ld/Makefile.in | 3 ++- + ld/configure | 56 +++++++++++++++++++++++++++++++++++++++++----- + opcodes/Makefile.in | 1 + + opcodes/configure | 56 +++++++++++++++++++++++++++++++++++++++++----- + 20 files changed, 416 insertions(+), 55 deletions(-) + +--- a/bfd/Makefile.in ++++ b/bfd/Makefile.in +@@ -288,6 +288,7 @@ TDEFINES = @TDEFINES@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ + abs_builddir = @abs_builddir@ +--- a/bfd/configure ++++ b/bfd/configure +@@ -659,6 +659,7 @@ MAINTAINER_MODE_FALSE + MAINTAINER_MODE_TRUE + WARN_WRITE_STRINGS + NO_WERROR ++WARN_CFLAGS_FOR_BUILD + WARN_CFLAGS + REPORT_BUGS_TEXI + REPORT_BUGS_TO +@@ -11427,7 +11428,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11430 "configure" ++#line 11431 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11533,7 +11534,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11536 "configure" ++#line 11537 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -12240,8 +12241,12 @@ fi + # Set the 'development' global. + . $srcdir/../bfd/development.sh + ++# Set acp_cpp_for_build variable ++ac_cpp_for_build="$CC_FOR_BUILD -E $CPPFLAGS_FOR_BUILD" ++ + # Default set of GCC warnings to enable. + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" ++GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + + # Add -Wshadow if the compiler is a sufficiently recent version of GCC. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -12286,6 +12291,36 @@ fi + rm -f conftest* + + ++# Verify CC_FOR_BUILD to be compatible with waring flags ++ ++# Add -Wshadow if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-3]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow" ++fi ++rm -f conftest* ++ ++ ++# Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-4]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" ++fi ++rm -f conftest* ++ ++ + # Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then : + enableval=$enable_werror; case "${enableval}" in +@@ -12301,6 +12336,7 @@ case "${host}" in + *-*-mingw32*) + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wno-format" + fi + ;; + *) ;; +@@ -12314,25 +12350,32 @@ fi + NO_WERROR= + if test "${ERROR_ON_WARNING}" = yes ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Werror" + NO_WERROR="-Wno-error" + fi + + if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}" + fi + + # Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then : + enableval=$enable_build_warnings; case "${enableval}" in +- yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; ++ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" ++ WARN_CFLAGS_FOR_BUILD="-w" + fi;; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";; ++ WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; +- *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; ++ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${t} ${GCC_WARN_CFLAGS_FOR_BUILD}";; ++ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"` ++ WARN_CFLAGS_FOR_BUILD=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac + fi + +@@ -12343,6 +12386,7 @@ fi + + + ++ + + + +--- a/bfd/doc/Makefile.in ++++ b/bfd/doc/Makefile.in +@@ -248,6 +248,7 @@ TDEFINES = @TDEFINES@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ + abs_builddir = @abs_builddir@ +--- a/bfd/warning.m4 ++++ b/bfd/warning.m4 +@@ -17,12 +17,34 @@ dnl along with this program; see the fil + dnl . + dnl + ++# AC_EGREP_CPP_FOR_BUILD(PATTERN, PROGRAM, ++# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) ++# ------------------------------------------------------ ++AC_DEFUN([AC_EGREP_CPP_FOR_BUILD], ++[AC_LANG_PREPROC_REQUIRE()dnl ++AC_REQUIRE([AC_PROG_EGREP])dnl ++AC_LANG_CONFTEST([AC_LANG_SOURCE([[$2]])]) ++AS_IF([dnl eval is necessary to expand ac_cpp. ++dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell. ++(eval "$ac_cpp_for_build conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | ++dnl Quote $1 to prevent m4 from eating character classes ++ $EGREP "[$1]" >/dev/null 2>&1], ++ [$3], ++ [$4]) ++rm -f conftest* ++])# AC_EGREP_CPP_FOR_BUILD ++ ++ + AC_DEFUN([AM_BINUTILS_WARNINGS],[ + # Set the 'development' global. + . $srcdir/../bfd/development.sh + ++# Set acp_cpp_for_build variable ++ac_cpp_for_build="$CC_FOR_BUILD -E $CPPFLAGS_FOR_BUILD" ++ + # Default set of GCC warnings to enable. + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" ++GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + + # Add -Wshadow if the compiler is a sufficiently recent version of GCC. + AC_EGREP_CPP([^[0-3]$],[__GNUC__],,GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wshadow") +@@ -34,6 +56,14 @@ AC_EGREP_CPP([^[0-4]$],[__GNUC__],,GCC_W + WARN_WRITE_STRINGS="" + AC_EGREP_CPP([^[0-3]$],[__GNUC__],,WARN_WRITE_STRINGS="-Wwrite-strings") + ++# Verify CC_FOR_BUILD to be compatible with waring flags ++ ++# Add -Wshadow if the compiler is a sufficiently recent version of GCC. ++AC_EGREP_CPP_FOR_BUILD([^[0-3]$],[__GNUC__],,GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow") ++ ++# Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. ++AC_EGREP_CPP_FOR_BUILD([^[0-4]$],[__GNUC__],,GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144") ++ + AC_ARG_ENABLE(werror, + [ --enable-werror treat compile warnings as errors], + [case "${enableval}" in +@@ -47,6 +77,7 @@ case "${host}" in + *-*-mingw32*) + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wno-format" + fi + ;; + *) ;; +@@ -60,25 +91,32 @@ fi + NO_WERROR= + if test "${ERROR_ON_WARNING}" = yes ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Werror" + NO_WERROR="-Wno-error" + fi + + if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}" + fi + + AC_ARG_ENABLE(build-warnings, + [ --enable-build-warnings enable build-time compiler warnings], + [case "${enableval}" in +- yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; ++ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" ++ WARN_CFLAGS_FOR_BUILD="-w" + fi;; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";; ++ WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; +- *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; ++ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${t} ${GCC_WARN_CFLAGS_FOR_BUILD}";; ++ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"` ++ WARN_CFLAGS_FOR_BUILD=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac]) + + if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then +@@ -86,6 +124,7 @@ if test x"$silent" != x"yes" && test x"$ + fi + + AC_SUBST(WARN_CFLAGS) ++AC_SUBST(WARN_CFLAGS_FOR_BUILD) + AC_SUBST(NO_WERROR) + AC_SUBST(WARN_WRITE_STRINGS) + ]) +--- a/binutils/Makefile.am ++++ b/binutils/Makefile.am +@@ -47,8 +47,10 @@ ZLIB = @zlibdir@ -lz + ZLIBINC = @zlibinc@ + + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + NO_WERROR = @NO_WERROR@ + AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC) ++AM_CFLAGS_FOR_BUILD = $(WARN_CFLAGS_FOR_BUILD) $(ZLIBINC) + LIBICONV = @LIBICONV@ + + # these two are almost the same program +@@ -305,17 +307,17 @@ sysinfo$(EXEEXT_FOR_BUILD): sysinfo.@OBJ + $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.@OBJEXT@ syslex_wrap.@OBJEXT@ + + syslex_wrap.@OBJEXT@: syslex_wrap.c syslex.c sysinfo.h config.h +- $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex_wrap.c ++ $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex_wrap.c + + sysinfo.@OBJEXT@: sysinfo.c + if [ -r sysinfo.c ]; then \ +- $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \ ++ $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \ + else \ +- $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \ ++ $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \ + fi + + bin2c$(EXEEXT_FOR_BUILD): bin2c.c +- $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c ++ $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c + + embedspu: embedspu.sh Makefile + awk '/^program_transform_name=/ {print "program_transform_name=\"$(program_transform_name)\""; next} {print}' < $< > $@ +--- a/binutils/Makefile.in ++++ b/binutils/Makefile.in +@@ -401,6 +401,7 @@ STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ + YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi` +@@ -478,6 +479,7 @@ am__skipyacc = + ZLIB = @zlibdir@ -lz + ZLIBINC = @zlibinc@ + AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC) ++AM_CFLAGS_FOR_BUILD = $(WARN_CFLAGS_FOR_BUILD) $(ZLIBINC) + + # these two are almost the same program + AR_PROG = ar +@@ -1370,17 +1372,17 @@ sysinfo$(EXEEXT_FOR_BUILD): sysinfo.@OBJ + $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.@OBJEXT@ syslex_wrap.@OBJEXT@ + + syslex_wrap.@OBJEXT@: syslex_wrap.c syslex.c sysinfo.h config.h +- $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex_wrap.c ++ $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex_wrap.c + + sysinfo.@OBJEXT@: sysinfo.c + if [ -r sysinfo.c ]; then \ +- $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \ ++ $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \ + else \ +- $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \ ++ $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \ + fi + + bin2c$(EXEEXT_FOR_BUILD): bin2c.c +- $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c ++ $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c + + embedspu: embedspu.sh Makefile + awk '/^program_transform_name=/ {print "program_transform_name=\"$(program_transform_name)\""; next} {print}' < $< > $@ +--- a/binutils/configure ++++ b/binutils/configure +@@ -652,6 +652,7 @@ YFLAGS + YACC + WARN_WRITE_STRINGS + NO_WERROR ++WARN_CFLAGS_FOR_BUILD + WARN_CFLAGS + OTOOL64 + OTOOL +@@ -11225,7 +11226,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11228 "configure" ++#line 11229 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11331,7 +11332,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11334 "configure" ++#line 11335 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11945,8 +11946,12 @@ _ACEOF + # Set the 'development' global. + . $srcdir/../bfd/development.sh + ++# Set acp_cpp_for_build variable ++ac_cpp_for_build="$CC_FOR_BUILD -E $CPPFLAGS_FOR_BUILD" ++ + # Default set of GCC warnings to enable. + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" ++GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + + # Add -Wshadow if the compiler is a sufficiently recent version of GCC. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -11991,6 +11996,36 @@ fi + rm -f conftest* + + ++# Verify CC_FOR_BUILD to be compatible with waring flags ++ ++# Add -Wshadow if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-3]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow" ++fi ++rm -f conftest* ++ ++ ++# Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-4]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" ++fi ++rm -f conftest* ++ ++ + # Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then : + enableval=$enable_werror; case "${enableval}" in +@@ -12006,6 +12041,7 @@ case "${host}" in + *-*-mingw32*) + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wno-format" + fi + ;; + *) ;; +@@ -12019,25 +12055,32 @@ fi + NO_WERROR= + if test "${ERROR_ON_WARNING}" = yes ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Werror" + NO_WERROR="-Wno-error" + fi + + if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}" + fi + + # Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then : + enableval=$enable_build_warnings; case "${enableval}" in +- yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; ++ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" ++ WARN_CFLAGS_FOR_BUILD="-w" + fi;; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";; ++ WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; +- *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; ++ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${t} ${GCC_WARN_CFLAGS_FOR_BUILD}";; ++ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"` ++ WARN_CFLAGS_FOR_BUILD=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac + fi + +@@ -12048,6 +12091,7 @@ fi + + + ++ + + + +--- a/binutils/doc/Makefile.in ++++ b/binutils/doc/Makefile.in +@@ -249,6 +249,7 @@ STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ + YACC = @YACC@ +--- a/gas/Makefile.in ++++ b/gas/Makefile.in +@@ -255,6 +255,7 @@ STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ @WARN_WRITE_STRINGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ + YACC = `if [ -f ../bison/bison ] ; then echo ../bison/bison -y -L../bison/bison ; else echo @YACC@ ; fi` +--- a/gas/configure ++++ b/gas/configure +@@ -642,6 +642,7 @@ cgen_cpu_prefix + GDBINIT + WARN_WRITE_STRINGS + NO_WERROR ++WARN_CFLAGS_FOR_BUILD + WARN_CFLAGS + OTOOL64 + OTOOL +@@ -10985,7 +10986,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10988 "configure" ++#line 10989 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11091,7 +11092,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11094 "configure" ++#line 11095 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11721,8 +11722,12 @@ using_cgen=no + # Set the 'development' global. + . $srcdir/../bfd/development.sh + ++# Set acp_cpp_for_build variable ++ac_cpp_for_build="$CC_FOR_BUILD -E $CPPFLAGS_FOR_BUILD" ++ + # Default set of GCC warnings to enable. + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" ++GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + + # Add -Wshadow if the compiler is a sufficiently recent version of GCC. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -11767,6 +11772,36 @@ fi + rm -f conftest* + + ++# Verify CC_FOR_BUILD to be compatible with waring flags ++ ++# Add -Wshadow if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-3]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow" ++fi ++rm -f conftest* ++ ++ ++# Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-4]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" ++fi ++rm -f conftest* ++ ++ + # Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then : + enableval=$enable_werror; case "${enableval}" in +@@ -11782,6 +11817,7 @@ case "${host}" in + *-*-mingw32*) + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wno-format" + fi + ;; + *) ;; +@@ -11795,25 +11831,32 @@ fi + NO_WERROR= + if test "${ERROR_ON_WARNING}" = yes ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Werror" + NO_WERROR="-Wno-error" + fi + + if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}" + fi + + # Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then : + enableval=$enable_build_warnings; case "${enableval}" in +- yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; ++ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" ++ WARN_CFLAGS_FOR_BUILD="-w" + fi;; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";; ++ WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; +- *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; ++ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${t} ${GCC_WARN_CFLAGS_FOR_BUILD}";; ++ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"` ++ WARN_CFLAGS_FOR_BUILD=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac + fi + +@@ -11824,6 +11867,7 @@ fi + + + ++ + + + +--- a/gas/doc/Makefile.in ++++ b/gas/doc/Makefile.in +@@ -230,6 +230,7 @@ STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ + YACC = @YACC@ +--- a/gold/Makefile.in ++++ b/gold/Makefile.in +@@ -87,8 +87,8 @@ subdir = . + DIST_COMMON = NEWS README ChangeLog $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(srcdir)/config.in \ +- $(srcdir)/../mkinstalldirs $(top_srcdir)/po/Make-in \ +- ftruncate.c pread.c mremap.c ffsll.c yyscript.h yyscript.c \ ++ $(srcdir)/../mkinstalldirs $(top_srcdir)/po/Make-in ffsll.c \ ++ mremap.c ftruncate.c pread.c yyscript.h yyscript.c \ + $(srcdir)/../depcomp $(srcdir)/../ylwrap + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ +@@ -409,6 +409,7 @@ TARGETOBJS = @TARGETOBJS@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_CXXFLAGS = @WARN_CXXFLAGS@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ +--- a/gold/configure ++++ b/gold/configure +@@ -609,6 +609,7 @@ GOLD_LDFLAGS + WARN_CXXFLAGS + WARN_WRITE_STRINGS + NO_WERROR ++WARN_CFLAGS_FOR_BUILD + WARN_CFLAGS + IFUNC_STATIC_FALSE + IFUNC_STATIC_TRUE +@@ -6723,8 +6724,12 @@ fi + # Set the 'development' global. + . $srcdir/../bfd/development.sh + ++# Set acp_cpp_for_build variable ++ac_cpp_for_build="$CC_FOR_BUILD -E $CPPFLAGS_FOR_BUILD" ++ + # Default set of GCC warnings to enable. + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" ++GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + + # Add -Wshadow if the compiler is a sufficiently recent version of GCC. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -6769,6 +6774,36 @@ fi + rm -f conftest* + + ++# Verify CC_FOR_BUILD to be compatible with waring flags ++ ++# Add -Wshadow if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-3]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow" ++fi ++rm -f conftest* ++ ++ ++# Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-4]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" ++fi ++rm -f conftest* ++ ++ + # Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then : + enableval=$enable_werror; case "${enableval}" in +@@ -6784,6 +6819,7 @@ case "${host}" in + *-*-mingw32*) + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wno-format" + fi + ;; + *) ;; +@@ -6797,25 +6833,32 @@ fi + NO_WERROR= + if test "${ERROR_ON_WARNING}" = yes ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Werror" + NO_WERROR="-Wno-error" + fi + + if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}" + fi + + # Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then : + enableval=$enable_build_warnings; case "${enableval}" in +- yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; ++ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" ++ WARN_CFLAGS_FOR_BUILD="-w" + fi;; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";; ++ WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; +- *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; ++ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${t} ${GCC_WARN_CFLAGS_FOR_BUILD}";; ++ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"` ++ WARN_CFLAGS_FOR_BUILD=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac + fi + +@@ -6826,6 +6869,7 @@ fi + + + ++ + + + +--- a/gold/testsuite/Makefile.in ++++ b/gold/testsuite/Makefile.in +@@ -2568,6 +2568,7 @@ TARGETOBJS = @TARGETOBJS@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_CXXFLAGS = @WARN_CXXFLAGS@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ +--- a/gprof/Makefile.in ++++ b/gprof/Makefile.in +@@ -267,6 +267,7 @@ STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ + abs_builddir = @abs_builddir@ +--- a/gprof/configure ++++ b/gprof/configure +@@ -604,6 +604,7 @@ LTLIBOBJS + LIBOBJS + WARN_WRITE_STRINGS + NO_WERROR ++WARN_CFLAGS_FOR_BUILD + WARN_CFLAGS + GENINSRC_NEVER_FALSE + GENINSRC_NEVER_TRUE +@@ -10901,7 +10902,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10904 "configure" ++#line 10905 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11007,7 +11008,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11010 "configure" ++#line 11011 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -12101,8 +12102,12 @@ fi + # Set the 'development' global. + . $srcdir/../bfd/development.sh + ++# Set acp_cpp_for_build variable ++ac_cpp_for_build="$CC_FOR_BUILD -E $CPPFLAGS_FOR_BUILD" ++ + # Default set of GCC warnings to enable. + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" ++GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + + # Add -Wshadow if the compiler is a sufficiently recent version of GCC. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -12147,6 +12152,36 @@ fi + rm -f conftest* + + ++# Verify CC_FOR_BUILD to be compatible with waring flags ++ ++# Add -Wshadow if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-3]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow" ++fi ++rm -f conftest* ++ ++ ++# Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-4]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" ++fi ++rm -f conftest* ++ ++ + # Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then : + enableval=$enable_werror; case "${enableval}" in +@@ -12162,6 +12197,7 @@ case "${host}" in + *-*-mingw32*) + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wno-format" + fi + ;; + *) ;; +@@ -12175,25 +12211,32 @@ fi + NO_WERROR= + if test "${ERROR_ON_WARNING}" = yes ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Werror" + NO_WERROR="-Wno-error" + fi + + if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}" + fi + + # Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then : + enableval=$enable_build_warnings; case "${enableval}" in +- yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; ++ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" ++ WARN_CFLAGS_FOR_BUILD="-w" + fi;; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";; ++ WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; +- *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; ++ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${t} ${GCC_WARN_CFLAGS_FOR_BUILD}";; ++ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"` ++ WARN_CFLAGS_FOR_BUILD=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac + fi + +@@ -12204,6 +12247,7 @@ fi + + + ++ + + + +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -354,6 +354,7 @@ TESTBFDLIB = @TESTBFDLIB@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ + YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi` +@@ -508,7 +509,7 @@ CXX_FOR_TARGET = ` \ + fi` + + +-# Strip out sanitization options as they require special host libraries. ++# Strip out sanitization options as we want to test building binaries without any extra paraphernalia + CFLAGS_FOR_TARGET = `echo $(CFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'` + CXXFLAGS_FOR_TARGET = `echo $(CXXFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'` + info_TEXINFOS = ld.texinfo +--- a/ld/configure ++++ b/ld/configure +@@ -646,6 +646,7 @@ LIBINTL + USE_NLS + WARN_WRITE_STRINGS + NO_WERROR ++WARN_CFLAGS_FOR_BUILD + WARN_CFLAGS + installed_linker + install_as_default +@@ -11723,7 +11724,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11726 "configure" ++#line 11727 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11829,7 +11830,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11832 "configure" ++#line 11833 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -15558,8 +15559,12 @@ fi + # Set the 'development' global. + . $srcdir/../bfd/development.sh + ++# Set acp_cpp_for_build variable ++ac_cpp_for_build="$CC_FOR_BUILD -E $CPPFLAGS_FOR_BUILD" ++ + # Default set of GCC warnings to enable. + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" ++GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + + # Add -Wshadow if the compiler is a sufficiently recent version of GCC. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -15604,6 +15609,36 @@ fi + rm -f conftest* + + ++# Verify CC_FOR_BUILD to be compatible with waring flags ++ ++# Add -Wshadow if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-3]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow" ++fi ++rm -f conftest* ++ ++ ++# Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-4]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" ++fi ++rm -f conftest* ++ ++ + # Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then : + enableval=$enable_werror; case "${enableval}" in +@@ -15619,6 +15654,7 @@ case "${host}" in + *-*-mingw32*) + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wno-format" + fi + ;; + *) ;; +@@ -15632,25 +15668,32 @@ fi + NO_WERROR= + if test "${ERROR_ON_WARNING}" = yes ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Werror" + NO_WERROR="-Wno-error" + fi + + if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}" + fi + + # Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then : + enableval=$enable_build_warnings; case "${enableval}" in +- yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; ++ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" ++ WARN_CFLAGS_FOR_BUILD="-w" + fi;; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";; ++ WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; +- *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; ++ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${t} ${GCC_WARN_CFLAGS_FOR_BUILD}";; ++ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"` ++ WARN_CFLAGS_FOR_BUILD=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac + fi + +@@ -15661,6 +15704,7 @@ fi + + + ++ + + + +--- a/opcodes/Makefile.in ++++ b/opcodes/Makefile.in +@@ -267,6 +267,7 @@ STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ + WARN_CFLAGS = @WARN_CFLAGS@ ++WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@ + WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@ + XGETTEXT = @XGETTEXT@ + abs_builddir = @abs_builddir@ +--- a/opcodes/configure ++++ b/opcodes/configure +@@ -643,6 +643,7 @@ MAINTAINER_MODE_TRUE + NO_WMISSING_FIELD_INITIALIZERS + WARN_WRITE_STRINGS + NO_WERROR ++WARN_CFLAGS_FOR_BUILD + WARN_CFLAGS + OTOOL64 + OTOOL +@@ -11150,7 +11151,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11153 "configure" ++#line 11154 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11256,7 +11257,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11259 "configure" ++#line 11260 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11508,8 +11509,12 @@ fi + # Set the 'development' global. + . $srcdir/../bfd/development.sh + ++# Set acp_cpp_for_build variable ++ac_cpp_for_build="$CC_FOR_BUILD -E $CPPFLAGS_FOR_BUILD" ++ + # Default set of GCC warnings to enable. + GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" ++GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wstrict-prototypes -Wmissing-prototypes" + + # Add -Wshadow if the compiler is a sufficiently recent version of GCC. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +@@ -11554,6 +11559,36 @@ fi + rm -f conftest* + + ++# Verify CC_FOR_BUILD to be compatible with waring flags ++ ++# Add -Wshadow if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-3]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow" ++fi ++rm -f conftest* ++ ++ ++# Add -Wstack-usage if the compiler is a sufficiently recent version of GCC. ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++__GNUC__ ++_ACEOF ++if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 | ++ $EGREP "^[0-4]$" >/dev/null 2>&1; then : ++ ++else ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144" ++fi ++rm -f conftest* ++ ++ + # Check whether --enable-werror was given. + if test "${enable_werror+set}" = set; then : + enableval=$enable_werror; case "${enableval}" in +@@ -11569,6 +11604,7 @@ case "${host}" in + *-*-mingw32*) + if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wno-format" + fi + ;; + *) ;; +@@ -11582,25 +11618,32 @@ fi + NO_WERROR= + if test "${ERROR_ON_WARNING}" = yes ; then + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" ++ GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Werror" + NO_WERROR="-Wno-error" + fi + + if test "${GCC}" = yes ; then + WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}" + fi + + # Check whether --enable-build-warnings was given. + if test "${enable_build_warnings+set}" = set; then : + enableval=$enable_build_warnings; case "${enableval}" in +- yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";; ++ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD}";; + no) if test "${GCC}" = yes ; then + WARN_CFLAGS="-w" ++ WARN_CFLAGS_FOR_BUILD="-w" + fi;; + ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";; ++ WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}" ++ WARN_CFLAGS_FOR_BUILD="${GCC_WARN_CFLAGS_FOR_BUILD} ${t}";; + *,) t=`echo "${enableval}" | sed -e "s/,/ /g"` +- WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";; +- *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;; ++ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}" ++ WARN_CFLAGS_FOR_BUILD="${t} ${GCC_WARN_CFLAGS_FOR_BUILD}";; ++ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"` ++ WARN_CFLAGS_FOR_BUILD=`echo "${enableval}" | sed -e "s/,/ /g"`;; + esac + fi + +@@ -11611,6 +11654,7 @@ fi + + + ++ + + + ac_ext=c diff --git a/package/devel/gdb-arc/Makefile b/package/devel/gdb-arc/Makefile new file mode 100644 index 0000000000..7d087ffcb6 --- /dev/null +++ b/package/devel/gdb-arc/Makefile @@ -0,0 +1,94 @@ +# +# Copyright (C) 2006-2016 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=gdb-arc +PKG_VERSION:=arc-2017.09-gdb +PKG_RELEASE:=1 + +PKG_SOURCE:=gdb-arc-2017.09-gdb.tar.gz +PKG_SOURCE_URL:=https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/archive/$(PKG_VERSION) +PKG_HASH:=6a91f86cc487c1548d3f5d4f29f7226d2019c0db8a63633aeabd5914a340f3f9 + +PKG_BUILD_DIR:=$(BUILD_DIR)/binutils-gdb-arc-2017.09-gdb + +PKG_BUILD_PARALLEL:=1 +PKG_INSTALL:=1 +PKG_LICENSE:=GPL-3.0+ + +include $(INCLUDE_DIR)/package.mk + +define Package/gdb-arc/Default + SECTION:=devel + CATEGORY:=Development + DEPENDS:=+!USE_MUSL:libthread-db +PACKAGE_zlib:zlib @arc + URL:=http://www.gnu.org/software/gdb/ +endef + +define Package/gdb-arc +$(call Package/gdb-arc/Default) + TITLE:=GNU Debugger for ARC + DEPENDS+=+libreadline +libncurses +zlib +endef + +define Package/gdb-arc/description +GDB, the GNU Project debugger, allows you to see what is going on `inside' +another program while it executes -- or what another program was doing at the +moment it crashed. +endef + +define Package/gdbserver-arc +$(call Package/gdb-arc/Default) + TITLE:=Remote server for GNU Debugger +endef + +define Package/gdbserver-arc/description +GDBSERVER is a program that allows you to run GDB on a different machine than the +one which is running the program being debugged. +endef + +# XXX: add --disable-werror to prevent build failure with arm +CONFIGURE_ARGS+= \ + --with-system-readline \ + --without-expat \ + --without-lzma \ + --disable-werror \ + --disable-binutils \ + --disable-ld \ + --disable-gas \ + --disable-sim + +CONFIGURE_VARS+= \ + ac_cv_search_tgetent="$(TARGET_LDFLAGS) -lncurses -lreadline" + +define Build/Compile + +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ + DESTDIR="$(PKG_INSTALL_DIR)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + all +endef + +define Build/Install + $(MAKE) -C $(PKG_BUILD_DIR) \ + DESTDIR="$(PKG_INSTALL_DIR)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + install-gdb +endef + +define Package/gdb-arc/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gdb $(1)/usr/bin/ +endef + +define Package/gdbserver-arc/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gdbserver $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,gdb-arc)) +$(eval $(call BuildPackage,gdbserver-arc)) diff --git a/package/devel/gdb-arc/patches/100-no_extern_inline.patch b/package/devel/gdb-arc/patches/100-no_extern_inline.patch new file mode 100644 index 0000000000..8c18c6e2e7 --- /dev/null +++ b/package/devel/gdb-arc/patches/100-no_extern_inline.patch @@ -0,0 +1,32 @@ +--- a/sim/common/sim-arange.c ++++ b/sim/common/sim-arange.c +@@ -280,11 +280,7 @@ sim_addr_range_delete (ADDR_RANGE *ar, a + build_search_tree (ar); + } + +-#endif /* DEFINE_NON_INLINE_P */ +- +-#if DEFINE_INLINE_P +- +-SIM_ARANGE_INLINE int ++int + sim_addr_range_hit_p (ADDR_RANGE *ar, address_word addr) + { + ADDR_RANGE_TREE *t = ar->range_tree; +@@ -301,4 +297,4 @@ sim_addr_range_hit_p (ADDR_RANGE *ar, ad + return 0; + } + +-#endif /* DEFINE_INLINE_P */ ++#endif /* DEFINE_NON_INLINE_P */ +--- a/sim/common/sim-arange.h ++++ b/sim/common/sim-arange.h +@@ -73,7 +73,7 @@ extern void sim_addr_range_delete (ADDR_ + + /* Return non-zero if ADDR is in range AR, traversing the entire tree. + If no range is specified, that is defined to mean "everything". */ +-SIM_ARANGE_INLINE int ++extern int + sim_addr_range_hit_p (ADDR_RANGE * /*ar*/, address_word /*addr*/); + #define ADDR_RANGE_HIT_P(ar, addr) \ + ((ar)->range_tree == NULL || sim_addr_range_hit_p ((ar), (addr))) diff --git a/package/devel/gdb-arc/patches/110-no_testsuite.patch b/package/devel/gdb-arc/patches/110-no_testsuite.patch new file mode 100644 index 0000000000..1b284ea767 --- /dev/null +++ b/package/devel/gdb-arc/patches/110-no_testsuite.patch @@ -0,0 +1,21 @@ +--- a/gdb/configure ++++ b/gdb/configure +@@ -870,8 +870,7 @@ MAKEINFOFLAGS + YACC + YFLAGS + XMKMF' +-ac_subdirs_all='testsuite +-gdbtk ++ac_subdirs_all='gdbtk + multi-ice + gdbserver' + +@@ -5610,7 +5610,7 @@ $as_echo "$with_auto_load_safe_path" >&6 + + + +-subdirs="$subdirs testsuite" ++subdirs="$subdirs" + + + # Check whether to support alternative target configurations diff --git a/package/devel/gdb-arc/patches/120-fix-compile-flag-mismatch.patch b/package/devel/gdb-arc/patches/120-fix-compile-flag-mismatch.patch new file mode 100644 index 0000000000..c8b41f264a --- /dev/null +++ b/package/devel/gdb-arc/patches/120-fix-compile-flag-mismatch.patch @@ -0,0 +1,11 @@ +--- a/gdb/gdbserver/configure ++++ b/gdb/gdbserver/configure +@@ -2468,7 +2468,7 @@ $as_echo "$as_me: error: \`$ac_var' was + ac_cache_corrupted=: ;; + ,);; + *) +- if test "x$ac_old_val" != "x$ac_new_val"; then ++ if test "`echo x$ac_old_val`" != "`echo x$ac_new_val`"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` diff --git a/package/devel/gdb/Makefile b/package/devel/gdb/Makefile new file mode 100644 index 0000000000..e38d1c4309 --- /dev/null +++ b/package/devel/gdb/Makefile @@ -0,0 +1,87 @@ +# +# Copyright (C) 2006-2016 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=gdb +PKG_VERSION:=8.1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=@GNU/gdb +PKG_HASH:=af61a0263858e69c5dce51eab26662ff3d2ad9aa68da9583e8143b5426be4b34 + +PKG_BUILD_PARALLEL:=1 +PKG_INSTALL:=1 +PKG_LICENSE:=GPL-3.0+ +PKG_CPE_ID:=cpe:/a:gnu:gdb + +include $(INCLUDE_DIR)/package.mk + +define Package/gdb/Default + SECTION:=devel + CATEGORY:=Development + DEPENDS:=+!USE_MUSL:libthread-db +PACKAGE_zlib:zlib @!arc + URL:=http://www.gnu.org/software/gdb/ +endef + +define Package/gdb +$(call Package/gdb/Default) + TITLE:=GNU Debugger + DEPENDS+=+libreadline +libncurses +zlib +endef + +define Package/gdb/description +GDB, the GNU Project debugger, allows you to see what is going on `inside' +another program while it executes -- or what another program was doing at the +moment it crashed. +endef + +define Package/gdbserver +$(call Package/gdb/Default) + TITLE:=Remote server for GNU Debugger +endef + +define Package/gdbserver/description +GDBSERVER is a program that allows you to run GDB on a different machine than the +one which is running the program being debugged. +endef + +# XXX: add --disable-werror to prevent build failure with arm +CONFIGURE_ARGS+= \ + --with-system-readline \ + --without-expat \ + --without-lzma \ + --disable-sim \ + --disable-werror + +CONFIGURE_VARS+= \ + ac_cv_search_tgetent="$(TARGET_LDFLAGS) -lncurses -lreadline" + +TARGET_LDFLAGS+= \ + -static-libstdc++ \ + -Wl,--gc-sections + +define Build/Install + $(MAKE) -C $(PKG_BUILD_DIR) \ + DESTDIR="$(PKG_INSTALL_DIR)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + install-gdb +endef + +define Package/gdb/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gdb $(1)/usr/bin/ +endef + +define Package/gdbserver/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gdbserver $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,gdb)) +$(eval $(call BuildPackage,gdbserver)) diff --git a/package/devel/gdb/patches/001-gdb-pr14523-mips-signal-number.patch b/package/devel/gdb/patches/001-gdb-pr14523-mips-signal-number.patch new file mode 100644 index 0000000000..25ac86fd91 --- /dev/null +++ b/package/devel/gdb/patches/001-gdb-pr14523-mips-signal-number.patch @@ -0,0 +1,16 @@ +See http://sourceware.org/bugzilla/show_bug.cgi?id=14523 +--- +--- a/gdb/common/signals.c ++++ b/gdb/common/signals.c +@@ -348,6 +348,11 @@ gdb_signal_from_host (int hostsig) + else if (64 <= hostsig && hostsig <= 127) + return (enum gdb_signal) + (hostsig - 64 + (int) GDB_SIGNAL_REALTIME_64); ++ else if (hostsig == 128) ++ /* Some platforms, such as Linux MIPS, have NSIG == 128, in which case ++ signal 128 is the highest realtime signal. There is no constant for ++ that though. */ ++ return GDB_SIGNAL_UNKNOWN; + else + error (_("GDB bug: target.c (gdb_signal_from_host): " + "unrecognized real-time signal")); diff --git a/package/devel/gdb/patches/100-musl_fix.patch b/package/devel/gdb/patches/100-musl_fix.patch new file mode 100644 index 0000000000..b167fe6ecd --- /dev/null +++ b/package/devel/gdb/patches/100-musl_fix.patch @@ -0,0 +1,53 @@ +--- a/gdb/linux-nat.c ++++ b/gdb/linux-nat.c +@@ -17,6 +17,7 @@ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + ++#include "stopcode.h" + #include "defs.h" + #include "inferior.h" + #include "infrun.h" +@@ -71,6 +72,10 @@ + #define SPUFS_MAGIC 0x23c9b64e + #endif + ++#ifndef __SIGRTMIN ++#define __SIGRTMIN SIGRTMIN ++#endif ++ + /* This comment documents high-level logic of this file. + + Waiting for events in sync mode +--- /dev/null ++++ b/gdb/stopcode.h +@@ -0,0 +1,4 @@ ++#ifndef W_STOPCODE ++#define W_STOPCODE(sig) ((sig) << 8 | 0x7f) ++#endif ++ +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,10 @@ + #ifndef PPC_LINUX_H + #define PPC_LINUX_H 1 + ++#define pt_regs __pt_regs + #include ++#undef pt_regs ++ + #include + + /* This sometimes isn't defined. */ +--- a/gdb/gdbserver/linux-ppc-low.c ++++ b/gdb/gdbserver/linux-ppc-low.c +@@ -21,7 +21,9 @@ + #include "linux-low.h" + + #include ++#define pt_regs __pt_regs + #include ++#undef pt_regs + + #include "nat/ppc-linux.h" + #include "linux-ppc-tdesc.h" diff --git a/package/devel/gdb/patches/110-shared_libgcc.patch b/package/devel/gdb/patches/110-shared_libgcc.patch new file mode 100644 index 0000000000..929a5ae977 --- /dev/null +++ b/package/devel/gdb/patches/110-shared_libgcc.patch @@ -0,0 +1,76 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -1300,13 +1300,13 @@ if test -z "$LD"; then + fi + fi + +-# Check whether -static-libstdc++ -static-libgcc is supported. ++# Check whether -static-libstdc++ is supported. + have_static_libs=no + if test "$GCC" = yes; then + saved_LDFLAGS="$LDFLAGS" + +- LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc" +- AC_MSG_CHECKING([whether g++ accepts -static-libstdc++ -static-libgcc]) ++ LDFLAGS="$LDFLAGS -static-libstdc++" ++ AC_MSG_CHECKING([whether g++ accepts -static-libstdc++]) + AC_LANG_PUSH(C++) + AC_LINK_IFELSE([ + #if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) +@@ -1632,7 +1632,7 @@ AC_ARG_WITH(stage1-ldflags, + # if supported. But if the user explicitly specified the libraries to use, + # trust that they are doing what they want. + if test "$stage1_libs" = "" -a "$have_static_libs" = yes; then +- stage1_ldflags="-static-libstdc++ -static-libgcc" ++ stage1_ldflags="-static-libstdc++" + fi]) + AC_SUBST(stage1_ldflags) + +@@ -1661,7 +1661,7 @@ AC_ARG_WITH(boot-ldflags, + # statically. But if the user explicitly specified the libraries to + # use, trust that they are doing what they want. + if test "$poststage1_libs" = ""; then +- poststage1_ldflags="-static-libstdc++ -static-libgcc" ++ poststage1_ldflags="-static-libstdc++" + fi]) + AC_SUBST(poststage1_ldflags) + +--- a/configure ++++ b/configure +@@ -5005,14 +5005,14 @@ if test -z "$LD"; then + fi + fi + +-# Check whether -static-libstdc++ -static-libgcc is supported. ++# Check whether -static-libstdc++ is supported. + have_static_libs=no + if test "$GCC" = yes; then + saved_LDFLAGS="$LDFLAGS" + +- LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc" +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether g++ accepts -static-libstdc++ -static-libgcc" >&5 +-$as_echo_n "checking whether g++ accepts -static-libstdc++ -static-libgcc... " >&6; } ++ LDFLAGS="$LDFLAGS -static-libstdc++" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether g++ accepts -static-libstdc++" >&5 ++$as_echo_n "checking whether g++ accepts -static-libstdc++... " >&6; } + ac_ext=cpp + ac_cpp='$CXXCPP $CPPFLAGS' + ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -5795,7 +5795,7 @@ else + # if supported. But if the user explicitly specified the libraries to use, + # trust that they are doing what they want. + if test "$stage1_libs" = "" -a "$have_static_libs" = yes; then +- stage1_ldflags="-static-libstdc++ -static-libgcc" ++ stage1_ldflags="-static-libstdc++" + fi + fi + +@@ -5831,7 +5831,7 @@ else + # statically. But if the user explicitly specified the libraries to + # use, trust that they are doing what they want. + if test "$poststage1_libs" = ""; then +- poststage1_ldflags="-static-libstdc++ -static-libgcc" ++ poststage1_ldflags="-static-libstdc++" + fi + fi + diff --git a/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch b/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch new file mode 100644 index 0000000000..8afa8ccf81 --- /dev/null +++ b/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch @@ -0,0 +1,38 @@ +From 56893a61aa4f0270fa8d1197b9848247f90fce0d Mon Sep 17 00:00:00 2001 +From: Yousong Zhou +Date: Fri, 24 Mar 2017 10:36:03 +0800 +Subject: [PATCH] Fix invalid sigprocmask call + +The POSIX document says + + The pthread_sigmask() and sigprocmask() functions shall fail if: + + [EINVAL] + The value of the how argument is not equal to one of the defined values. + +and this is how musl-libc is currently doing. Fix the call to be safe +and correct + + [1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_sigmask.html + +gdb/ChangeLog: +2017-03-24 Yousong Zhou + + * common/signals-state-save-restore.c (save_original_signals_state): + Fix invalid sigprocmask call. +--- + gdb/ChangeLog | 5 +++++ + gdb/common/signals-state-save-restore.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +--- a/gdb/common/signals-state-save-restore.c ++++ b/gdb/common/signals-state-save-restore.c +@@ -41,7 +41,7 @@ save_original_signals_state (void) + int i; + int res; + +- res = sigprocmask (0, NULL, &original_signal_mask); ++ res = sigprocmask (SIG_BLOCK, NULL, &original_signal_mask); + if (res == -1) + perror_with_name (("sigprocmask")); + diff --git a/package/devel/perf/Makefile b/package/devel/perf/Makefile new file mode 100644 index 0000000000..61388580d5 --- /dev/null +++ b/package/devel/perf/Makefile @@ -0,0 +1,82 @@ +# +# Copyright (C) 2011-2013 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=perf +PKG_VERSION:=$(LINUX_VERSION) +PKG_RELEASE:=2 + +PKG_USE_MIPS16:=0 +PKG_BUILD_PARALLEL:=1 +PKG_MAINTAINER:=Felix Fietkau +PKG_FLAGS:=nonshared + +# Perf's makefile and headers are not relocatable and must be built from the +# Linux sources directory +PKG_BUILD_DIR:=$(LINUX_DIR)/tools/perf-$(TARGET_DIR_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/perf + SECTION:=devel + CATEGORY:=Development + DEPENDS:= +libelf1 +libdw +(mips||mipsel||powerpc||i386||x86_64||arm||aarch64):libunwind +libpthread +librt +objdump @!LINUX_3_18 @!IN_SDK @!TARGET_arc770 @KERNEL_PERF_EVENTS + TITLE:=Linux performance monitoring tool + VERSION:=$(LINUX_VERSION)-$(PKG_RELEASE) + URL:=http://www.kernel.org +endef + +define Package/perf/description + perf is the Linux performance monitoring tool +endef + +define Build/Prepare + $(CP) $(LINUX_DIR)/tools/perf/* $(PKG_BUILD_DIR)/ +endef + +MAKE_FLAGS = \ + ARCH="$(LINUX_KARCH)" \ + NO_LIBPERL=1 \ + NO_LIBPYTHON=1 \ + NO_NEWT=1 \ + NO_LZMA=1 \ + NO_BACKTRACE=1 \ + NO_LIBNUMA=1 \ + NO_GTK2=1 \ + NO_LIBAUDIT=1 \ + NO_LIBCRYPTO=1 \ + NO_LIBUNWIND=1 \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + CC="$(TARGET_CC)" \ + LD="$(TARGET_CROSS)ld" \ + CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \ + WERROR=0 \ + prefix=/usr + +ifdef CONFIG_LINUX_4_4 +ifdef CONFIG_USE_MUSL + MAKE_FLAGS += EXTRA_CFLAGS="-I$(CURDIR)/musl-include -include $(CURDIR)/musl-compat.h -D__UCLIBC__" +endif +endif + +define Build/Compile + +$(MAKE_FLAGS) $(MAKE) $(PKG_JOBS) \ + -C $(PKG_BUILD_DIR) \ + -f Makefile.perf \ + --no-print-directory +endef + +define Package/perf/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/perf $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,perf)) diff --git a/package/devel/perf/musl-compat.h b/package/devel/perf/musl-compat.h new file mode 100644 index 0000000000..83aa00a7c8 --- /dev/null +++ b/package/devel/perf/musl-compat.h @@ -0,0 +1,43 @@ +#ifndef __PERF_MUSL_COMPAT_H +#define __PERF_MUSL_COMPAT_H + +#ifndef __ASSEMBLER__ + +#include +#include +#include +#include + +#undef _IOWR +#undef _IOR +#undef _IOW +#undef _IOC +#undef _IO + +#define _SC_LEVEL1_DCACHE_LINESIZE -1 + +static inline long sysconf_wrap(int name) +{ + FILE *f; + int val; + + switch (name) { + case _SC_LEVEL1_DCACHE_LINESIZE: + f = fopen("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", "r"); + if (!f) + return 0; + + if (fscanf(f, "%d", &val) != 1) + return 0; + + fclose(f); + return val; + default: + return sysconf(name); + } +} + +#define sysconf(_n) sysconf_wrap(_n) + +#endif +#endif diff --git a/package/devel/perf/musl-include/asm/errno.h b/package/devel/perf/musl-include/asm/errno.h new file mode 100644 index 0000000000..8c4b1beb52 --- /dev/null +++ b/package/devel/perf/musl-include/asm/errno.h @@ -0,0 +1,8 @@ +#ifndef __MUSL_COMPAT_ASM_ERRNO_H +#define __MUSL_COMPAT_ASM_ERRNO_H + +/* Avoid including different versions of errno.h, the defines (incorrectly) + * cause a redefinition error on PowerPC */ +#include + +#endif diff --git a/package/devel/perf/musl-include/string.h b/package/devel/perf/musl-include/string.h new file mode 100644 index 0000000000..65dc2f1e8f --- /dev/null +++ b/package/devel/perf/musl-include/string.h @@ -0,0 +1,18 @@ +#ifndef __MUSL_COMPAT_STRING_H +#define __MUSL_COMPAT_STRING_H + +#include_next + +/* Change XSI compliant version into GNU extension hackery */ +static inline char * +gnu_strerror_r(int err, char *buf, size_t buflen) +{ + if (strerror_r(err, buf, buflen)) + return NULL; + return buf; +} +#ifdef _GNU_SOURCE +#define strerror_r gnu_strerror_r +#endif + +#endif diff --git a/package/devel/strace/Makefile b/package/devel/strace/Makefile new file mode 100644 index 0000000000..3507ffb84d --- /dev/null +++ b/package/devel/strace/Makefile @@ -0,0 +1,67 @@ +# +# Copyright (C) 2006-2016 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=strace +PKG_VERSION:=4.22 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=https://strace.io/files/$(PKG_VERSION) +PKG_HASH:=068cd09264c95e4d591bbcd3ea08f99a693ed8663cd5169b0fdad72eb5bdb39d + +PKG_LICENSE:=BSD-3c +PKG_LICENSE_FILES:=COPYRIGHT +PKG_CPE_ID:=cpe:/a:paul_kranenburg:strace + +PKG_MAINTAINER:=Felix Fietkau + +PKG_FIXUP:=autoreconf +PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_strace_libunwind +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +HOST_CFLAGS += -I$(LINUX_DIR)/user_headers/include + +CONFIGURE_VARS+= \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \ + CPPFLAGS_FOR_BUILD="$(HOST_CPPFLAGS)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + CC_FOR_BUILD="$(HOST_CC)" + +define Package/strace + SECTION:=utils + CATEGORY:=Utilities + TITLE:=System call tracer + DEPENDS:=+PACKAGE_strace_libunwind:libunwind + URL:=http://strace.sourceforge.net/ +endef + +define Package/strace/description +A useful diagnostic, instructional, and debugging tool. Allows you to track what +system calls a program makes while it is running. +endef + +define Package/strace/config +config PACKAGE_strace_libunwind + bool "Enable stack tracing support using libunwind (experimental)" + default n +endef + +CONFIGURE_ARGS += --with-libunwind=$(if $(CONFIG_PACKAGE_strace_libunwind),yes,no) +MAKE_FLAGS := \ + CCOPT="$(TARGET_CFLAGS)" + +define Package/strace/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/strace $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,strace)) diff --git a/package/devel/strace/patches/100-workaround--pt-reg-collisions-ppc.patch b/package/devel/strace/patches/100-workaround--pt-reg-collisions-ppc.patch new file mode 100644 index 0000000000..3f183065e1 --- /dev/null +++ b/package/devel/strace/patches/100-workaround--pt-reg-collisions-ppc.patch @@ -0,0 +1,17 @@ +--- a/ptrace.h ++++ b/ptrace.h +@@ -48,7 +48,14 @@ + # define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args + #endif + ++#if POWERPC ++#include ++#define __ASSEMBLY__ ++#endif + #include ++#if POWERPC ++#undef __ASSEMBLY__ ++#endif + + #ifdef HAVE_STRUCT_IA64_FPREG + # undef ia64_fpreg diff --git a/package/devel/trace-cmd/Makefile b/package/devel/trace-cmd/Makefile new file mode 100644 index 0000000000..6d3fe53758 --- /dev/null +++ b/package/devel/trace-cmd/Makefile @@ -0,0 +1,60 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=trace-cmd +PKG_VERSION:=v2.6.1 +PKG_RELEASE=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git/snapshot/ +PKG_HASH:=4eb79001778a77c0ada10265e7f4b5515a3e21a46f0a15c2e8cc614efdf3f5df +PKG_INSTALL:=1 +PKG_USE_MIPS16:=0 +PKG_LICENSE:=GPL-2.0 + +PKG_BUILD_PARALLEL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/trace-cmd + SECTION:=devel + CATEGORY:=Development + TITLE:=Linux trace command line utility + DEPENDS:= +endef + +define Package/trace-cmd-extra + SECTION:=devel + CATEGORY:=Development + TITLE:=Extra plugins for trace-cmd + DEPENDS:= +endef + +MAKE_FLAGS += \ + NO_PYTHON=1 \ + prefix=/usr + +PLUGINS_DIR := $(PKG_INSTALL_DIR)/usr/lib/trace-cmd/plugins +PLUGINS_MAIN := function hrtimer mac80211 sched_switch + +TARGET_CFLAGS += --std=gnu99 -D_GNU_SOURCE + +define Package/trace-cmd/install + $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/trace-cmd/plugins + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/trace-cmd $(1)/usr/bin/ + $(CP) \ + $(patsubst %,$(PLUGINS_DIR)/plugin_%.so,$(PLUGINS_MAIN)) \ + $(1)/usr/lib/trace-cmd/plugins +endef + +define Package/trace-cmd-extra/install + $(INSTALL_DIR) $(1)/usr/lib/trace-cmd/plugins + $(CP) \ + $$(patsubst %,$(PLUGINS_DIR)/plugin_%.so, \ + $$(filter-out $(PLUGINS_MAIN), \ + $$(patsubst $(PLUGINS_DIR)/plugin_%.so,%, \ + $$(wildcard $(PLUGINS_DIR)/plugin_*.so)))) \ + $(1)/usr/lib/trace-cmd/plugins +endef + +$(eval $(call BuildPackage,trace-cmd)) +$(eval $(call BuildPackage,trace-cmd-extra)) diff --git a/package/devel/trace-cmd/patches/110-mac80211_tracepoint.patch b/package/devel/trace-cmd/patches/110-mac80211_tracepoint.patch new file mode 100644 index 0000000000..e2a68972a3 --- /dev/null +++ b/package/devel/trace-cmd/patches/110-mac80211_tracepoint.patch @@ -0,0 +1,24 @@ +--- a/plugin_mac80211.c ++++ b/plugin_mac80211.c +@@ -179,12 +179,15 @@ static int drv_config(struct trace_seq * + { 2, "IDLE" }, + { 3, "QOS"}, + ); +- pevent_print_num_field(s, " chan:%d/", event, "center_freq", record, 1); +- print_enum(s, event, "channel_type", data, +- { 0, "noht" }, +- { 1, "ht20" }, +- { 2, "ht40-" }, +- { 3, "ht40+" }); ++ pevent_print_num_field(s, " chan:%d@", event, "control_freq", record, 1); ++ print_enum(s, event, "chan_width", data, ++ { 0, "20_noht" }, ++ { 1, "20" }, ++ { 2, "40" }, ++ { 3, "80" }, ++ { 4, "80p80" }, ++ { 5, "160" }); ++ + trace_seq_putc(s, ' '); + SF("power_level"); + diff --git a/package/devel/valgrind/Makefile b/package/devel/valgrind/Makefile new file mode 100644 index 0000000000..dd300b6d9f --- /dev/null +++ b/package/devel/valgrind/Makefile @@ -0,0 +1,185 @@ +# +# Copyright (C) 2006-2013 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=valgrind +PKG_VERSION:=3.13.0 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=http://sourceware.org/pub/valgrind/ +PKG_HASH:=d76680ef03f00cd5e970bbdcd4e57fb1f6df7d2e2c071635ef2be74790190c3b + +PKG_MAINTAINER:=Felix Fietkau +PKG_LICENSE:=GPL-2.0+ +PKG_CPE_ID:=cpe:/a:valgrind:valgrind + +PKG_FIXUP = autoreconf +PKG_INSTALL := 1 +PKG_BUILD_PARALLEL := 1 +PKG_USE_MIPS16:=0 +PKG_SSP:=0 + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/kernel.mk + +define Package/valgrind + SECTION:=devel + CATEGORY:=Development + DEPENDS:=@mips||mipsel||i386||x86_64||powerpc||arm_v7 +libpthread +librt + TITLE:=debugging and profiling tools for Linux + URL:=http://www.valgrind.org +endef + +define Package/valgrind/default + $(Package/valgrind) + DEPENDS := valgrind +endef + +define Package/valgrind-cachegrind + $(Package/valgrind/default) + TITLE += (cache profiling) +endef + +define Package/valgrind-callgrind + $(Package/valgrind/default) + TITLE += (callgraph profiling) +endef + +define Package/valgrind-drd + $(Package/valgrind/default) + TITLE += (thread error detection) +endef + +define Package/valgrind-massif + $(Package/valgrind/default) + TITLE += (heap profiling) +endef + +define Package/valgrind-helgrind + $(Package/valgrind/default) + TITLE += (thread debugging) +endef + +define Package/valgrind-vgdb + $(Package/valgrind/default) + TITLE += (GDB interface) +endef + +define Package/valgrind/description + Valgrind is an award-winning suite of tools for debugging and + profiling Linux programs. With the tools that come with Valgrind, + you can automatically detect many memory management and threading + bugs, avoiding hours of frustrating bug-hunting, making your + programs more stable. You can also perform detailed profiling, + to speed up and reduce memory use of your programs. +endef + +CPU := $(patsubst x86_64,amd64,$(patsubst x86,i386,$(patsubst um,$(ARCH),$(LINUX_KARCH)))) + +CONFIGURE_VARS += \ + UNAME_R=$(LINUX_VERSION) + +ifeq ($(CONFIG_ARCH_64BIT),y) + CONFIGURE_ARGS += \ + --enable-only64bit + BITS := 64bit +else + CONFIGURE_ARGS += \ + --enable-only32bit + BITS := 32bit +endif + +CONFIGURE_ARGS += \ + --enable-tls \ + --without-x \ + --without-mpicc \ + --without-uiout \ + --disable-valgrindmi \ + --disable-tui \ + --disable-valgrindtk \ + --without-included-gettext \ + --with-pagesize=4 \ + +define Package/valgrind/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/valgrind* $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + ./files/default.supp \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/none-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_core*.so \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/$(BITS)-core*.xml \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/$(BITS)-linux*.xml \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/memcheck-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_memcheck*.so \ + $(1)/usr/lib/valgrind/ + +ifneq ($(ARCH),aarch64) + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/$(CPU)-*.xml \ + $(1)/usr/lib/valgrind/ +endif +endef + +define Package/valgrind-cachegrind/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cg_* $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/cachegrind-* \ + $(1)/usr/lib/valgrind/ +endef + +define Package/valgrind-callgrind/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/callgrind* $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/callgrind-* \ + $(1)/usr/lib/valgrind/ +endef + +define Package/valgrind-drd/install + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/drd-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_drd*.so \ + $(1)/usr/lib/valgrind/ +endef + +define Package/valgrind-massif/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ms_print $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/massif-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_massif*.so \ + $(1)/usr/lib/valgrind/ +endef + +define Package/valgrind-helgrind/install + $(INSTALL_DIR) $(1)/usr/lib/valgrind + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/helgrind-* \ + $(PKG_INSTALL_DIR)/usr/lib/valgrind/vgpreload_helgrind*.so \ + $(1)/usr/lib/valgrind/ +endef + +define Package/valgrind-vgdb/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vgdb $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,valgrind)) +$(eval $(call BuildPackage,valgrind-cachegrind)) +$(eval $(call BuildPackage,valgrind-callgrind)) +$(eval $(call BuildPackage,valgrind-drd)) +$(eval $(call BuildPackage,valgrind-massif)) +$(eval $(call BuildPackage,valgrind-helgrind)) +$(eval $(call BuildPackage,valgrind-vgdb)) diff --git a/package/devel/valgrind/files/default.supp b/package/devel/valgrind/files/default.supp new file mode 100644 index 0000000000..beff55984c --- /dev/null +++ b/package/devel/valgrind/files/default.supp @@ -0,0 +1,42 @@ +{ + ld(Addr1) + Memcheck:Addr1 + fun:* + obj:/lib/ld-* +} +{ + ld(Addr2) + Memcheck:Addr2 + fun:* + obj:/lib/ld-* +} +{ + ld(Addr4) + Memcheck:Addr4 + fun:* + obj:/lib/ld-* +} +{ + ld(Cond) + Memcheck:Cond + fun:* + obj:/lib/ld-* +} +{ + strlen(Cond) + Memcheck:Cond + fun:strlen + fun:* +} +{ + strnlen(Cond) + Memcheck:Cond + fun:strnlen + fun:* +} +{ + index(Cond) + Memcheck:Cond + fun:index + fun:* +} diff --git a/package/devel/valgrind/patches/100-fix_configure_check.patch b/package/devel/valgrind/patches/100-fix_configure_check.patch new file mode 100644 index 0000000000..6ba5fdf1d7 --- /dev/null +++ b/package/devel/valgrind/patches/100-fix_configure_check.patch @@ -0,0 +1,11 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -323,7 +323,7 @@ case "${host_os}" in + # Ok, this is linux. Check the kernel version + AC_MSG_CHECKING([for the kernel version]) + +- kernel=`uname -r` ++ kernel=${UNAME_R:-`uname -r`} + + case "${kernel}" in + 0.*|1.*|2.0.*|2.1.*|2.2.*|2.3.*|2.4.*|2.5.*) diff --git a/package/devel/valgrind/patches/130-fix_arm_arch_detection.patch b/package/devel/valgrind/patches/130-fix_arm_arch_detection.patch new file mode 100644 index 0000000000..c8d203390c --- /dev/null +++ b/package/devel/valgrind/patches/130-fix_arm_arch_detection.patch @@ -0,0 +1,17 @@ +Description: Fix FTBFS on armhf by correctly detecting the architecture +Origin: vendor +Bug-Debian: http://bugs.debian.org/730844 +Author: Alessandro Ghedini +Last-Update: 2013-11-30 + +--- a/configure.ac ++++ b/configure.ac +@@ -234,7 +234,7 @@ case "${host_cpu}" in + ARCH_MAX="s390x" + ;; + +- armv7*) ++ arm*) + AC_MSG_RESULT([ok (${host_cpu})]) + ARCH_MAX="arm" + ;; diff --git a/package/firmware/wireless-regdb/Makefile b/package/firmware/wireless-regdb/Makefile new file mode 100644 index 0000000000..d06da2c708 --- /dev/null +++ b/package/firmware/wireless-regdb/Makefile @@ -0,0 +1,31 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=wireless-regdb + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git +PKG_SOURCE_DATE:=2017-10-20 +PKG_SOURCE_VERSION:=4343d359ed5e7404de8803a74df186457b26ab79 +PKG_MIRROR_HASH:=5f5b669f32ae36cb65b1d99efbbbfd42c2983cda32f6448346e3e54ffaba3889 + +PKG_MAINTAINER:=Felix Fietkau + +include $(INCLUDE_DIR)/package.mk + +define Package/wireless-regdb + SECTION:=firmware + CATEGORY:=Firmware + URL:=$(patsubst pub/scm,cgit,$(PKG_SOURCE_URL)) + TITLE:=Wireless Regulatory Database +endef + +define Build/Compile + python $(PKG_BUILD_DIR)/db2fw.py $(PKG_BUILD_DIR)/regulatory.db $(PKG_BUILD_DIR)/db.txt +endef + +define Package/wireless-regdb/install + $(INSTALL_DIR) $(1)/lib/firmware + $(CP) $(PKG_BUILD_DIR)/regulatory.db $(1)/lib/firmware/ +endef + +$(eval $(call BuildPackage,wireless-regdb)) diff --git a/package/firmware/wireless-regdb/patches/100-regdb-write-firmware-file-format-version-code-20.patch b/package/firmware/wireless-regdb/patches/100-regdb-write-firmware-file-format-version-code-20.patch new file mode 100644 index 0000000000..0c5c63fc5f --- /dev/null +++ b/package/firmware/wireless-regdb/patches/100-regdb-write-firmware-file-format-version-code-20.patch @@ -0,0 +1,251 @@ +From: Johannes Berg +Date: Mon, 9 Oct 2017 11:50:57 +0200 +Subject: [PATCH] regdb: write firmware file format (version code 20) + +TODO: clean up the Makefile stuff ... + +Signed-off-by: Johannes Berg +--- + create mode 100755 db2fw.py + +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,5 @@ + # Install prefix + PREFIX ?= /usr +-CRDA_PATH ?= $(PREFIX)/lib/crda +-CRDA_KEY_PATH ?= $(CRDA_PATH)/pubkeys + + MANDIR ?= $(PREFIX)/share/man/ + +@@ -30,39 +28,47 @@ REGDB_AUTHOR ?= $(shell if [ -f $(DISTRO + fi) + + REGDB_PRIVKEY ?= ~/.wireless-regdb-$(REGDB_AUTHOR).key.priv.pem +-REGDB_PUBKEY ?= $(REGDB_AUTHOR).key.pub.pem +- +-REGDB_UPSTREAM_PUBKEY ?= sforshee.key.pub.pem ++REGDB_PUBCERT ?= $(REGDB_AUTHOR).x509.pem + + REGDB_CHANGED = $(shell $(SHA1SUM) -c --status sha1sum.txt >/dev/null 2>&1; \ + if [ $$? -ne 0 ]; then \ +- echo maintainer-clean $(REGDB_PUBKEY); \ ++ echo maintainer-clean $(REGDB_PUBCERT); \ + fi) + + .PHONY: all clean mrproper install maintainer-clean install-distro-key + +-all: $(REGDB_CHANGED) regulatory.bin sha1sum.txt ++all: $(REGDB_CHANGED) regulatory.db.p7s sha1sum.txt + + clean: + @rm -f *.pyc *.gz + + maintainer-clean: clean +- @rm -f regulatory.bin ++ @rm -f regulatory.db regulatory.db.p7s + + mrproper: clean maintainer-clean +- @echo Removed public key, regulatory.bin and compresed man pages +- @rm -f $(REGDB_PUBKEY) .custom ++ @echo Removed public key, regulatory.db* and compressed man pages ++ @rm -f $(REGDB_PUBCERT) .custom + +-regulatory.bin: db.txt $(REGDB_PRIVKEY) $(REGDB_PUBKEY) +- @echo Generating $@ digitally signed by $(REGDB_AUTHOR)... +- ./db2bin.py regulatory.bin db.txt $(REGDB_PRIVKEY) ++regulatory.db: db.txt db2fw.py ++ @echo "Generating $@" ++ ./db2fw.py regulatory.db db.txt ++ ++regulatory.db.p7s: regulatory.db $(REGDB_PRIVKEY) $(REGDB_PUBCERT) ++ @echo "Signing regulatory.db (by $(REGDB_AUTHOR))..." ++ @openssl smime -sign \ ++ -signer $(REGDB_PUBCERT) \ ++ -inkey $(REGDB_PRIVKEY) \ ++ -in $< -nosmimecap -binary \ ++ -outform DER -out $@ + + sha1sum.txt: db.txt + sha1sum $< > $@ + +-$(REGDB_PUBKEY): $(REGDB_PRIVKEY) +- @echo "Generating public key for $(REGDB_AUTHOR)..." +- openssl rsa -in $(REGDB_PRIVKEY) -out $(REGDB_PUBKEY) -pubout -outform PEM ++$(REGDB_PUBCERT): $(REGDB_PRIVKEY) ++ @echo "Generating certificate for $(REGDB_AUTHOR)..." ++ @openssl req -config regulatory.openssl.conf \ ++ -key $(REGDB_PRIVKEY) -days 36500 -utf8 -nodes -batch \ ++ -x509 -outform PEM -out $(REGDB_PUBCERT) + @echo $(REGDB_PUBKEY) > .custom + + +@@ -97,16 +103,7 @@ install-distro-key: maintainer-clean $(D + # make maintainer-clean + # make + # sudo make install +-install: regulatory.bin.5.gz +- install -m 755 -d $(DESTDIR)/$(CRDA_PATH) +- install -m 755 -d $(DESTDIR)/$(CRDA_KEY_PATH) +- if [ -f .custom ]; then \ +- install -m 644 -t $(DESTDIR)/$(CRDA_KEY_PATH)/ $(shell cat .custom); \ +- fi +- install -m 644 -t $(DESTDIR)/$(CRDA_KEY_PATH)/ $(REGDB_UPSTREAM_PUBKEY) +- install -m 644 -t $(DESTDIR)/$(CRDA_PATH)/ regulatory.bin ++install: regulatory.db.5.gz ++ install -m 644 -t $(DESTDIR)/$(CRDA_PATH)/ regulatory.db + install -m 755 -d $(DESTDIR)/$(MANDIR)/man5/ +- install -m 644 -t $(DESTDIR)/$(MANDIR)/man5/ regulatory.bin.5.gz +- +-uninstall: +- rm -rf $(DESTDIR)/$(CRDA_PATH)/ ++ install -m 644 -t $(DESTDIR)/$(MANDIR)/man5/ regulatory.db.5.gz +--- a/README ++++ b/README +@@ -18,8 +18,8 @@ python module is used by the web viewer + implemented as a MoinMoin macro (and used on http://wireless.kernel.org) + to allow viewing the database for verification. + +-The dbparse module is also used by db2bin.py, the `compiler', which +-compiles and signs the binary database. ++The dbparse module is also used by db2bin.py and db2fw.py, the `compilers' ++that compile the database to its binary formats. + + For more information, please see the CRDA git repository: + +--- /dev/null ++++ b/db2fw.py +@@ -0,0 +1,133 @@ ++#!/usr/bin/env python ++ ++from cStringIO import StringIO ++import struct ++import hashlib ++from dbparse import DBParser ++import sys ++ ++MAGIC = 0x52474442 ++VERSION = 20 ++ ++if len(sys.argv) < 3: ++ print 'Usage: %s output-file input-file' % sys.argv[0] ++ sys.exit(2) ++ ++def create_rules(countries): ++ result = {} ++ for c in countries.itervalues(): ++ for rule in c.permissions: ++ result[rule] = 1 ++ return result.keys() ++ ++def create_collections(countries): ++ result = {} ++ for c in countries.itervalues(): ++ result[(c.permissions, c.dfs_region)] = 1 ++ return result.keys() ++ ++ ++def be32(output, val): ++ output.write(struct.pack('>I', val)) ++def be16(output, val): ++ output.write(struct.pack('>H', val)) ++ ++class PTR(object): ++ def __init__(self, output): ++ self._output = output ++ self._pos = output.tell() ++ be16(output, 0) ++ self._written = False ++ ++ def set(self, val=None): ++ if val is None: ++ val = self._output.tell() ++ assert val & 3 == 0 ++ self._offset = val ++ pos = self._output.tell() ++ self._output.seek(self._pos) ++ be16(self._output, val >> 2) ++ self._output.seek(pos) ++ self._written = True ++ ++ def get(self): ++ return self._offset ++ ++ @property ++ def written(self): ++ return self._written ++ ++p = DBParser() ++countries = p.parse(file(sys.argv[2])) ++rules = create_rules(countries) ++rules.sort(cmp=lambda x, y: cmp(x.freqband, y.freqband)) ++collections = create_collections(countries) ++collections.sort(cmp=lambda x, y: cmp(x[0][0].freqband, y[0][0].freqband)) ++ ++output = StringIO() ++ ++# struct regdb_file_header ++be32(output, MAGIC) ++be32(output, VERSION) ++ ++country_ptrs = {} ++countrynames = countries.keys() ++countrynames.sort() ++for alpha2 in countrynames: ++ coll = countries[alpha2] ++ output.write(struct.pack('>cc', str(alpha2[0]), str(alpha2[1]))) ++ country_ptrs[alpha2] = PTR(output) ++output.write('\x00' * 4) ++ ++reg_rules = {} ++flags = 0 ++for reg_rule in rules: ++ freq_range, power_rule = reg_rule.freqband, reg_rule.power ++ reg_rules[reg_rule] = output.tell() ++ assert power_rule.max_ant_gain == 0 ++ flags = 0 ++ # convert to new rule flags ++ assert reg_rule.flags & ~0x899 == 0 ++ if reg_rule.flags & 1<<0: ++ flags |= 1<<0 ++ if reg_rule.flags & 1<<3: ++ flags |= 1<<1 ++ if reg_rule.flags & 1<<4: ++ flags |= 1<<2 ++ if reg_rule.flags & 1<<7: ++ flags |= 1<<3 ++ if reg_rule.flags & 1<<11: ++ flags |= 1<<4 ++ rule_len = 16 ++ cac_timeout = 0 # TODO ++ if not (flags & 1<<2): ++ cac_timeout = 0 ++ if cac_timeout: ++ rule_len += 2 ++ output.write(struct.pack('>BBHIII', rule_len, flags, power_rule.max_eirp * 100, ++ freq_range.start * 1000, freq_range.end * 1000, freq_range.maxbw * 1000, ++ )) ++ if cac_timeout: ++ output.write(struct.pack('>H', cac_timeout)) ++ while rule_len % 4: ++ output.write('\0') ++ rule_len += 1 ++ ++for coll in collections: ++ for alpha2 in countrynames: ++ if (countries[alpha2].permissions, countries[alpha2].dfs_region) == coll: ++ assert not country_ptrs[alpha2].written ++ country_ptrs[alpha2].set() ++ slen = 3 ++ output.write(struct.pack('>BBBx', slen, len(list(coll[0])), coll[1])) ++ coll = list(coll[0]) ++ for regrule in coll: ++ be16(output, reg_rules[regrule] >> 2) ++ if len(coll) % 2: ++ be16(output, 0) ++ ++for alpha2 in countrynames: ++ assert country_ptrs[alpha2].written ++ ++outfile = open(sys.argv[1], 'w') ++outfile.write(output.getvalue()) diff --git a/package/firmware/wireless-regdb/patches/500-world-regd-5GHz.patch b/package/firmware/wireless-regdb/patches/500-world-regd-5GHz.patch new file mode 100644 index 0000000000..9baba808bc --- /dev/null +++ b/package/firmware/wireless-regdb/patches/500-world-regd-5GHz.patch @@ -0,0 +1,16 @@ +Remove the NO-IR flag from channels 36-48 on the World domain, +to make it usable for AP mode. + +Signed-off-by: Felix Fietkau +--- +--- a/db.txt ++++ b/db.txt +@@ -6,7 +6,7 @@ country 00: + # Channel 14. Only JP enables this and for 802.11b only + (2474 - 2494 @ 20), (20), NO-IR, NO-OFDM + # Channel 36 - 48 +- (5170 - 5250 @ 80), (20), NO-IR, AUTO-BW ++ (5170 - 5250 @ 80), (20), AUTO-BW + # Channel 52 - 64 + (5250 - 5330 @ 80), (20), NO-IR, DFS, AUTO-BW + # Channel 100 - 144 diff --git a/package/kernel/avila-wdt/Makefile b/package/kernel/avila-wdt/Makefile new file mode 100644 index 0000000000..a91c93374c --- /dev/null +++ b/package/kernel/avila-wdt/Makefile @@ -0,0 +1,34 @@ +# +# Copyright (C) 2008 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=avila-wdt +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/avila-wdt + SUBMENU:=Other modules + TITLE:=GPIO hardware watchdog driver for modified Avila boards + DEPENDS:=@GPIO_SUPPORT @TARGET_ixp4xx + FILES:=$(PKG_BUILD_DIR)/avila-wdt.ko + AUTOLOAD:=$(call AutoLoad,10,avila-wdt) +endef + +MAKE_OPTS:= \ + $(KERNEL_MAKE_FLAGS) \ + SUBDIRS="$(PKG_BUILD_DIR)" + +define Build/Compile + $(MAKE) -C "$(LINUX_DIR)" \ + $(MAKE_OPTS) \ + modules +endef + +$(eval $(call KernelPackage,avila-wdt)) diff --git a/package/kernel/avila-wdt/src/Makefile b/package/kernel/avila-wdt/src/Makefile new file mode 100644 index 0000000000..90d90657ed --- /dev/null +++ b/package/kernel/avila-wdt/src/Makefile @@ -0,0 +1 @@ +obj-m := avila-wdt.o diff --git a/package/kernel/avila-wdt/src/avila-wdt.c b/package/kernel/avila-wdt/src/avila-wdt.c new file mode 100644 index 0000000000..22a3d6c7ea --- /dev/null +++ b/package/kernel/avila-wdt/src/avila-wdt.c @@ -0,0 +1,231 @@ +/* + * avila-wdt.c + * Copyright (C) 2009 Felix Fietkau + * + * based on: + * drivers/char/watchdog/ixp4xx_wdt.c + * + * Watchdog driver for Intel IXP4xx network processors + * + * Author: Deepak Saxena + * + * Copyright 2004 (c) MontaVista, Software, Inc. + * Based on sa1100 driver, Copyright (C) 2000 Oleg Drokin + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int nowayout = WATCHDOG_NOWAYOUT; +static int heartbeat = 20; /* (secs) Default is 20 seconds */ +static unsigned long wdt_status; +static atomic_t wdt_counter; +struct timer_list wdt_timer; + +#define WDT_IN_USE 0 +#define WDT_OK_TO_CLOSE 1 +#define WDT_RUNNING 2 + +static void wdt_refresh(unsigned long data) +{ + if (test_bit(WDT_RUNNING, &wdt_status)) { + if (atomic_dec_and_test(&wdt_counter)) { + printk(KERN_WARNING "Avila watchdog expired, expect a reboot soon!\n"); + clear_bit(WDT_RUNNING, &wdt_status); + return; + } + } + + /* strobe to the watchdog */ + gpio_line_set(14, IXP4XX_GPIO_HIGH); + gpio_line_set(14, IXP4XX_GPIO_LOW); + + mod_timer(&wdt_timer, jiffies + msecs_to_jiffies(500)); +} + +static void wdt_enable(void) +{ + atomic_set(&wdt_counter, heartbeat * 2); + + /* Disable clock generator output on GPIO 14/15 */ + *IXP4XX_GPIO_GPCLKR &= ~(1 << 8); + + /* activate GPIO 14 out */ + gpio_line_config(14, IXP4XX_GPIO_OUT); + gpio_line_set(14, IXP4XX_GPIO_LOW); + + if (!test_bit(WDT_RUNNING, &wdt_status)) + wdt_refresh(0); + set_bit(WDT_RUNNING, &wdt_status); +} + +static void wdt_disable(void) +{ + /* Re-enable clock generator output on GPIO 14/15 */ + *IXP4XX_GPIO_GPCLKR |= (1 << 8); +} + +static int avila_wdt_open(struct inode *inode, struct file *file) +{ + if (test_and_set_bit(WDT_IN_USE, &wdt_status)) + return -EBUSY; + + clear_bit(WDT_OK_TO_CLOSE, &wdt_status); + wdt_enable(); + return nonseekable_open(inode, file); +} + +static ssize_t +avila_wdt_write(struct file *file, const char *data, size_t len, loff_t *ppos) +{ + if (len) { + if (!nowayout) { + size_t i; + + clear_bit(WDT_OK_TO_CLOSE, &wdt_status); + + for (i = 0; i != len; i++) { + char c; + + if (get_user(c, data + i)) + return -EFAULT; + if (c == 'V') + set_bit(WDT_OK_TO_CLOSE, &wdt_status); + } + } + wdt_enable(); + } + return len; +} + +static struct watchdog_info ident = { + .options = WDIOF_CARDRESET | WDIOF_MAGICCLOSE | + WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING, + .identity = "Avila Watchdog", +}; + + +static long avila_wdt_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + int ret = -ENOTTY; + int time; + + switch (cmd) { + case WDIOC_GETSUPPORT: + ret = copy_to_user((struct watchdog_info *)arg, &ident, + sizeof(ident)) ? -EFAULT : 0; + break; + + case WDIOC_GETSTATUS: + ret = put_user(0, (int *)arg); + break; + + case WDIOC_KEEPALIVE: + wdt_enable(); + ret = 0; + break; + + case WDIOC_SETTIMEOUT: + ret = get_user(time, (int *)arg); + if (ret) + break; + + if (time <= 0 || time > 60) { + ret = -EINVAL; + break; + } + + heartbeat = time; + wdt_enable(); + /* Fall through */ + + case WDIOC_GETTIMEOUT: + ret = put_user(heartbeat, (int *)arg); + break; + } + return ret; +} + +static int avila_wdt_release(struct inode *inode, struct file *file) +{ + if (test_bit(WDT_OK_TO_CLOSE, &wdt_status)) + wdt_disable(); + else + printk(KERN_CRIT "WATCHDOG: Device closed unexpectedly - " + "timer will not stop\n"); + clear_bit(WDT_IN_USE, &wdt_status); + clear_bit(WDT_OK_TO_CLOSE, &wdt_status); + + return 0; +} + + +static const struct file_operations avila_wdt_fops = { + .owner = THIS_MODULE, + .llseek = no_llseek, + .write = avila_wdt_write, + .unlocked_ioctl = avila_wdt_ioctl, + .open = avila_wdt_open, + .release = avila_wdt_release, +}; + +static struct miscdevice avila_wdt_miscdev = { + .minor = WATCHDOG_MINOR + 1, + .name = "avila_watchdog", + .fops = &avila_wdt_fops, +}; + +static int __init avila_wdt_init(void) +{ + int ret; + + init_timer(&wdt_timer); + wdt_timer.expires = 0; + wdt_timer.data = 0; + wdt_timer.function = wdt_refresh; + ret = misc_register(&avila_wdt_miscdev); + if (ret == 0) + printk(KERN_INFO "Avila Watchdog Timer: heartbeat %d sec\n", + heartbeat); + return ret; +} + +static void __exit avila_wdt_exit(void) +{ + misc_deregister(&avila_wdt_miscdev); + del_timer(&wdt_timer); + wdt_disable(); +} + + +module_init(avila_wdt_init); +module_exit(avila_wdt_exit); + +MODULE_AUTHOR("Felix Fietkau "); +MODULE_DESCRIPTION("Gateworks Avila Hardware Watchdog"); + +module_param(heartbeat, int, 0); +MODULE_PARM_DESC(heartbeat, "Watchdog heartbeat in seconds (default 20s)"); + +module_param(nowayout, int, 0); +MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started"); + +MODULE_LICENSE("GPL"); +MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); + diff --git a/package/kernel/button-hotplug/Makefile b/package/kernel/button-hotplug/Makefile index d90d7746f5..2554ae61dd 100644 --- a/package/kernel/button-hotplug/Makefile +++ b/package/kernel/button-hotplug/Makefile @@ -10,6 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=button-hotplug PKG_RELEASE:=3 +PKG_LICENSE:=GPL-2.0 include $(INCLUDE_DIR)/package.mk @@ -35,8 +36,7 @@ EXTRA_CFLAGS:= \ $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \ MAKE_OPTS:= \ - ARCH="$(LINUX_KARCH)" \ - CROSS_COMPILE="$(TARGET_CROSS)" \ + $(KERNEL_MAKE_FLAGS) \ SUBDIRS="$(PKG_BUILD_DIR)" \ EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ $(EXTRA_KCONFIG) diff --git a/package/kernel/dtc/patches/0001-scripts-dtc-Update-to-version-with-overlays.patch b/package/kernel/dtc/patches/0001-scripts-dtc-Update-to-version-with-overlays.patch new file mode 100644 index 0000000000..605d303c47 --- /dev/null +++ b/package/kernel/dtc/patches/0001-scripts-dtc-Update-to-version-with-overlays.patch @@ -0,0 +1,642 @@ +From 5f84cb93eef9f8a8ff7f49d593893f252744d0fe Mon Sep 17 00:00:00 2001 +From: Pantelis Antoniou +Date: Wed, 26 Aug 2015 18:28:08 +0300 +Subject: [PATCH] scripts/dtc: Update to version with overlays + +Update to mainline dtc with overlay support + +Signed-off-by: Pantelis Antoniou +--- + checks.c | 20 +++++- + dtc-lexer.l | 5 ++ + dtc-parser.y | 54 ++++++++++++++-- + dtc.c | 83 ++++++++++++++++++++++-- + dtc.h | 13 +++- + livetree.c | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + treesource.c | 3 + + util.c | 2 +- + 8 files changed, 367 insertions(+), 15 deletions(-) + +diff --git a/checks.c b/checks.c +index 3bf0fa4..af25c2b 100644 +--- a/checks.c ++++ b/checks.c +@@ -465,8 +465,12 @@ static void fixup_phandle_references(struct check *c, struct node *dt, + + refnode = get_node_by_ref(dt, m->ref); + if (! refnode) { +- FAIL(c, "Reference to non-existent node or label \"%s\"\n", +- m->ref); ++ if (!source_is_plugin) ++ FAIL(c, "Reference to non-existent node or " ++ "label \"%s\"\n", m->ref); ++ else /* mark the entry as unresolved */ ++ *((cell_t *)(prop->val.val + m->offset)) = ++ cpu_to_fdt32(0xffffffff); + continue; + } + +@@ -559,7 +563,7 @@ static void check_reg_format(struct check *c, struct node *dt, + size_cells = node_size_cells(node->parent); + entrylen = (addr_cells + size_cells) * sizeof(cell_t); + +- if ((prop->val.len % entrylen) != 0) ++ if (!entrylen || (prop->val.len % entrylen) != 0) + FAIL(c, "\"reg\" property in %s has invalid length (%d bytes) " + "(#address-cells == %d, #size-cells == %d)", + node->fullpath, prop->val.len, addr_cells, size_cells); +@@ -651,6 +655,15 @@ static void check_obsolete_chosen_interrupt_controller(struct check *c, + } + TREE_WARNING(obsolete_chosen_interrupt_controller, NULL); + ++static void check_deprecated_plugin_syntax(struct check *c, ++ struct node *dt) ++{ ++ if (deprecated_plugin_syntax_warning) ++ FAIL(c, "Use '/dts-v1/ /plugin/'; syntax. /dts-v1/; /plugin/; " ++ "is going to be removed in next versions"); ++} ++TREE_WARNING(deprecated_plugin_syntax, NULL); ++ + static struct check *check_table[] = { + &duplicate_node_names, &duplicate_property_names, + &node_name_chars, &node_name_format, &property_name_chars, +@@ -668,6 +681,7 @@ static struct check *check_table[] = { + + &avoid_default_addr_size, + &obsolete_chosen_interrupt_controller, ++ &deprecated_plugin_syntax, + + &always_fail, + }; +diff --git a/dtc-lexer.l b/dtc-lexer.l +index 0ee1caf..dd44ba2 100644 +--- a/dtc-lexer.l ++++ b/dtc-lexer.l +@@ -113,6 +113,11 @@ static void lexical_error(const char *fmt, ...); + return DT_V1; + } + ++<*>"/plugin/" { ++ DPRINT("Keyword: /plugin/\n"); ++ return DT_PLUGIN; ++ } ++ + <*>"/memreserve/" { + DPRINT("Keyword: /memreserve/\n"); + BEGIN_DEFAULT(); +diff --git a/dtc-parser.y b/dtc-parser.y +index ea57e0a..7d9652d 100644 +--- a/dtc-parser.y ++++ b/dtc-parser.y +@@ -19,6 +19,7 @@ + */ + %{ + #include ++#include + + #include "dtc.h" + #include "srcpos.h" +@@ -52,9 +53,11 @@ extern bool treesource_error; + struct node *nodelist; + struct reserve_info *re; + uint64_t integer; ++ bool is_plugin; + } + + %token DT_V1 ++%token DT_PLUGIN + %token DT_MEMRESERVE + %token DT_LSHIFT DT_RSHIFT DT_LE DT_GE DT_EQ DT_NE DT_AND DT_OR + %token DT_BITS +@@ -71,6 +74,7 @@ extern bool treesource_error; + + %type propdata + %type propdataprefix ++%type plugindecl + %type memreserve + %type memreserves + %type arrayprefix +@@ -101,10 +105,39 @@ extern bool treesource_error; + %% + + sourcefile: +- DT_V1 ';' memreserves devicetree ++ basesource ++ | pluginsource ++ ; ++ ++basesource: ++ DT_V1 ';' plugindecl memreserves devicetree ++ { ++ source_is_plugin = $3; ++ if (source_is_plugin) ++ deprecated_plugin_syntax_warning = true; ++ the_boot_info = build_boot_info($4, $5, ++ guess_boot_cpuid($5)); ++ } ++ ; ++ ++plugindecl: ++ /* empty */ ++ { ++ $$ = false; ++ } ++ | DT_PLUGIN ';' ++ { ++ $$ = true; ++ } ++ ; ++ ++pluginsource: ++ DT_V1 DT_PLUGIN ';' memreserves devicetree + { +- the_boot_info = build_boot_info($3, $4, +- guess_boot_cpuid($4)); ++ source_is_plugin = true; ++ deprecated_plugin_syntax_warning = false; ++ the_boot_info = build_boot_info($4, $5, ++ guess_boot_cpuid($5)); + } + ; + +@@ -144,10 +177,14 @@ devicetree: + { + struct node *target = get_node_by_ref($1, $2); + +- if (target) ++ if (target) { + merge_nodes(target, $3); +- else +- ERROR(&@2, "Label or path %s not found", $2); ++ } else { ++ if (symbol_fixup_support) ++ add_orphan_node($1, $3, $2); ++ else ++ ERROR(&@2, "Label or path %s not found", $2); ++ } + $$ = $1; + } + | devicetree DT_DEL_NODE DT_REF ';' +@@ -162,6 +199,11 @@ devicetree: + + $$ = $1; + } ++ | /* empty */ ++ { ++ /* build empty node */ ++ $$ = name_node(build_node(NULL, NULL), ""); ++ } + ; + + nodedef: +diff --git a/dtc.c b/dtc.c +index 8c4add6..ee37be9 100644 +--- a/dtc.c ++++ b/dtc.c +@@ -18,6 +18,8 @@ + * USA + */ + ++#include ++ + #include "dtc.h" + #include "srcpos.h" + +@@ -29,6 +31,8 @@ int reservenum; /* Number of memory reservation slots */ + int minsize; /* Minimum blob size */ + int padsize; /* Additional padding to blob */ + int phandle_format = PHANDLE_BOTH; /* Use linux,phandle or phandle properties */ ++int symbol_fixup_support; ++int auto_label_aliases; + + static void fill_fullpaths(struct node *tree, const char *prefix) + { +@@ -51,7 +55,7 @@ static void fill_fullpaths(struct node *tree, const char *prefix) + #define FDT_VERSION(version) _FDT_VERSION(version) + #define _FDT_VERSION(version) #version + static const char usage_synopsis[] = "dtc [options] "; +-static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:fb:i:H:sW:E:hv"; ++static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:fb:i:H:sW:E:@Ahv"; + static struct option const usage_long_opts[] = { + {"quiet", no_argument, NULL, 'q'}, + {"in-format", a_argument, NULL, 'I'}, +@@ -69,6 +73,8 @@ static struct option const usage_long_opts[] = { + {"phandle", a_argument, NULL, 'H'}, + {"warning", a_argument, NULL, 'W'}, + {"error", a_argument, NULL, 'E'}, ++ {"symbols", no_argument, NULL, '@'}, ++ {"auto-alias", no_argument, NULL, 'A'}, + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'v'}, + {NULL, no_argument, NULL, 0x0}, +@@ -99,16 +105,63 @@ static const char * const usage_opts_help[] = { + "\t\tboth - Both \"linux,phandle\" and \"phandle\" properties", + "\n\tEnable/disable warnings (prefix with \"no-\")", + "\n\tEnable/disable errors (prefix with \"no-\")", ++ "\n\tEnable symbols/fixup support", ++ "\n\tEnable auto-alias of labels", + "\n\tPrint this help and exit", + "\n\tPrint version and exit", + NULL, + }; + ++static const char *guess_type_by_name(const char *fname, const char *fallback) ++{ ++ const char *s; ++ ++ s = strrchr(fname, '.'); ++ if (s == NULL) ++ return fallback; ++ if (!strcasecmp(s, ".dts")) ++ return "dts"; ++ if (!strcasecmp(s, ".dtb")) ++ return "dtb"; ++ return fallback; ++} ++ ++static const char *guess_input_format(const char *fname, const char *fallback) ++{ ++ struct stat statbuf; ++ uint32_t magic; ++ FILE *f; ++ ++ if (stat(fname, &statbuf) != 0) ++ return fallback; ++ ++ if (S_ISDIR(statbuf.st_mode)) ++ return "fs"; ++ ++ if (!S_ISREG(statbuf.st_mode)) ++ return fallback; ++ ++ f = fopen(fname, "r"); ++ if (f == NULL) ++ return fallback; ++ if (fread(&magic, 4, 1, f) != 1) { ++ fclose(f); ++ return fallback; ++ } ++ fclose(f); ++ ++ magic = fdt32_to_cpu(magic); ++ if (magic == FDT_MAGIC) ++ return "dtb"; ++ ++ return guess_type_by_name(fname, fallback); ++} ++ + int main(int argc, char *argv[]) + { + struct boot_info *bi; +- const char *inform = "dts"; +- const char *outform = "dts"; ++ const char *inform = NULL; ++ const char *outform = NULL; + const char *outname = "-"; + const char *depname = NULL; + bool force = false, sort = false; +@@ -186,7 +239,12 @@ int main(int argc, char *argv[]) + case 'E': + parse_checks_option(false, true, optarg); + break; +- ++ case '@': ++ symbol_fixup_support = 1; ++ break; ++ case 'A': ++ auto_label_aliases = 1; ++ break; + case 'h': + usage(NULL); + default: +@@ -213,6 +271,17 @@ int main(int argc, char *argv[]) + fprintf(depfile, "%s:", outname); + } + ++ if (inform == NULL) ++ inform = guess_input_format(arg, "dts"); ++ if (outform == NULL) { ++ outform = guess_type_by_name(outname, NULL); ++ if (outform == NULL) { ++ if (streq(inform, "dts")) ++ outform = "dtb"; ++ else ++ outform = "dts"; ++ } ++ } + if (streq(inform, "dts")) + bi = dt_from_source(arg); + else if (streq(inform, "fs")) +@@ -236,6 +305,12 @@ int main(int argc, char *argv[]) + if (sort) + sort_tree(bi); + ++ if (symbol_fixup_support || auto_label_aliases) ++ generate_label_node(bi->dt, bi->dt); ++ ++ if (symbol_fixup_support) ++ generate_fixups_node(bi->dt, bi->dt); ++ + if (streq(outname, "-")) { + outf = stdout; + } else { +diff --git a/dtc.h b/dtc.h +index 56212c8..d025111 100644 +--- a/dtc.h ++++ b/dtc.h +@@ -20,7 +20,7 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + */ +- ++#define _GNU_SOURCE + #include + #include + #include +@@ -54,6 +54,14 @@ extern int reservenum; /* Number of memory reservation slots */ + extern int minsize; /* Minimum blob size */ + extern int padsize; /* Additional padding to blob */ + extern int phandle_format; /* Use linux,phandle or phandle properties */ ++extern int symbol_fixup_support;/* enable symbols & fixup support */ ++extern int auto_label_aliases; /* auto generate labels -> aliases */ ++ ++/* ++ * Tree source globals ++ */ ++extern bool source_is_plugin; ++extern bool deprecated_plugin_syntax_warning; + + #define PHANDLE_LEGACY 0x1 + #define PHANDLE_EPAPR 0x2 +@@ -194,6 +202,7 @@ struct node *build_node_delete(void); + struct node *name_node(struct node *node, char *name); + struct node *chain_node(struct node *first, struct node *list); + struct node *merge_nodes(struct node *old_node, struct node *new_node); ++void add_orphan_node(struct node *old_node, struct node *new_node, char *ref); + + void add_property(struct node *node, struct property *prop); + void delete_property_by_name(struct node *node, char *name); +@@ -244,6 +253,8 @@ struct boot_info { + struct boot_info *build_boot_info(struct reserve_info *reservelist, + struct node *tree, uint32_t boot_cpuid_phys); + void sort_tree(struct boot_info *bi); ++void generate_label_node(struct node *node, struct node *dt); ++void generate_fixups_node(struct node *node, struct node *dt); + + /* Checks */ + +diff --git a/livetree.c b/livetree.c +index e229b84..1ef9fc4 100644 +--- a/livetree.c ++++ b/livetree.c +@@ -216,6 +216,34 @@ struct node *merge_nodes(struct node *old_node, struct node *new_node) + return old_node; + } + ++void add_orphan_node(struct node *dt, struct node *new_node, char *ref) ++{ ++ static unsigned int next_orphan_fragment = 0; ++ struct node *ovl = xmalloc(sizeof(*ovl)); ++ struct property *p; ++ struct data d = empty_data; ++ char *name; ++ int ret; ++ ++ memset(ovl, 0, sizeof(*ovl)); ++ ++ d = data_add_marker(d, REF_PHANDLE, ref); ++ d = data_append_integer(d, 0xffffffff, 32); ++ ++ p = build_property("target", d); ++ add_property(ovl, p); ++ ++ ret = asprintf(&name, "fragment@%u", ++ next_orphan_fragment++); ++ if (ret == -1) ++ die("asprintf() failed\n"); ++ name_node(ovl, name); ++ name_node(new_node, "__overlay__"); ++ ++ add_child(dt, ovl); ++ add_child(ovl, new_node); ++} ++ + struct node *chain_node(struct node *first, struct node *list) + { + assert(first->next_sibling == NULL); +@@ -709,3 +737,177 @@ void sort_tree(struct boot_info *bi) + sort_reserve_entries(bi); + sort_node(bi->dt); + } ++ ++void generate_label_node(struct node *node, struct node *dt) ++{ ++ struct node *c, *an; ++ struct property *p; ++ struct label *l; ++ int has_label; ++ char *gen_node_name; ++ ++ if (auto_label_aliases) ++ gen_node_name = "aliases"; ++ else ++ gen_node_name = "__symbols__"; ++ ++ /* Make sure the label isn't already there */ ++ has_label = 0; ++ for_each_label(node->labels, l) { ++ has_label = 1; ++ break; ++ } ++ ++ if (has_label) { ++ ++ /* an is the aliases/__symbols__ node */ ++ an = get_subnode(dt, gen_node_name); ++ /* if no node exists, create it */ ++ if (!an) { ++ an = build_node(NULL, NULL); ++ name_node(an, gen_node_name); ++ add_child(dt, an); ++ } ++ ++ /* now add the label in the node */ ++ for_each_label(node->labels, l) { ++ /* check whether the label already exists */ ++ p = get_property(an, l->label); ++ if (p) { ++ fprintf(stderr, "WARNING: label %s already" ++ " exists in /%s", l->label, ++ gen_node_name); ++ continue; ++ } ++ ++ /* insert it */ ++ p = build_property(l->label, ++ data_copy_escape_string(node->fullpath, ++ strlen(node->fullpath))); ++ add_property(an, p); ++ } ++ ++ /* force allocation of a phandle for this node */ ++ if (symbol_fixup_support) ++ (void)get_node_phandle(dt, node); ++ } ++ ++ for_each_child(node, c) ++ generate_label_node(c, dt); ++} ++ ++static void add_fixup_entry(struct node *dt, struct node *node, ++ struct property *prop, struct marker *m) ++{ ++ struct node *fn; /* local fixup node */ ++ struct property *p; ++ char *fixups_name = "__fixups__"; ++ struct data d; ++ char *entry; ++ int ret; ++ ++ /* fn is the node we're putting entries in */ ++ fn = get_subnode(dt, fixups_name); ++ /* if no node exists, create it */ ++ if (!fn) { ++ fn = build_node(NULL, NULL); ++ name_node(fn, fixups_name); ++ add_child(dt, fn); ++ } ++ ++ ret = asprintf(&entry, "%s:%s:%u", ++ node->fullpath, prop->name, m->offset); ++ if (ret == -1) ++ die("asprintf() failed\n"); ++ ++ p = get_property(fn, m->ref); ++ d = data_append_data(p ? p->val : empty_data, entry, strlen(entry) + 1); ++ if (!p) ++ add_property(fn, build_property(m->ref, d)); ++ else ++ p->val = d; ++} ++ ++static void add_local_fixup_entry(struct node *dt, struct node *node, ++ struct property *prop, struct marker *m, ++ struct node *refnode) ++{ ++ struct node *lfn, *wn, *nwn; /* local fixup node, walk node, new */ ++ struct property *p; ++ struct data d; ++ char *local_fixups_name = "__local_fixups__"; ++ char *s, *e, *comp; ++ int len; ++ ++ /* fn is the node we're putting entries in */ ++ lfn = get_subnode(dt, local_fixups_name); ++ /* if no node exists, create it */ ++ if (!lfn) { ++ lfn = build_node(NULL, NULL); ++ name_node(lfn, local_fixups_name); ++ add_child(dt, lfn); ++ } ++ ++ /* walk the path components creating nodes if they don't exist */ ++ comp = NULL; ++ /* start skipping the first / */ ++ s = node->fullpath + 1; ++ wn = lfn; ++ while (*s) { ++ /* retrieve path component */ ++ e = strchr(s, '/'); ++ if (e == NULL) ++ e = s + strlen(s); ++ len = e - s; ++ comp = xrealloc(comp, len + 1); ++ memcpy(comp, s, len); ++ comp[len] = '\0'; ++ ++ /* if no node exists, create it */ ++ nwn = get_subnode(wn, comp); ++ if (!nwn) { ++ nwn = build_node(NULL, NULL); ++ name_node(nwn, strdup(comp)); ++ add_child(wn, nwn); ++ } ++ wn = nwn; ++ ++ /* last path component */ ++ if (!*e) ++ break; ++ ++ /* next path component */ ++ s = e + 1; ++ } ++ free(comp); ++ ++ p = get_property(wn, prop->name); ++ d = data_append_cell(p ? p->val : empty_data, (cell_t)m->offset); ++ if (!p) ++ add_property(wn, build_property(prop->name, d)); ++ else ++ p->val = d; ++} ++ ++void generate_fixups_node(struct node *node, struct node *dt) ++{ ++ struct node *c; ++ struct property *prop; ++ struct marker *m; ++ struct node *refnode; ++ ++ for_each_property(node, prop) { ++ m = prop->val.markers; ++ for_each_marker_of_type(m, REF_PHANDLE) { ++ refnode = get_node_by_ref(dt, m->ref); ++ if (!refnode) ++ add_fixup_entry(dt, node, prop, m); ++ else ++ add_local_fixup_entry(dt, node, prop, m, ++ refnode); ++ } ++ } ++ ++ for_each_child(node, c) ++ generate_fixups_node(c, dt); ++} +diff --git a/treesource.c b/treesource.c +index a55d1d1..e1d6657 100644 +--- a/treesource.c ++++ b/treesource.c +@@ -28,6 +28,9 @@ extern YYLTYPE yylloc; + struct boot_info *the_boot_info; + bool treesource_error; + ++bool source_is_plugin; ++bool deprecated_plugin_syntax_warning; ++ + struct boot_info *dt_from_source(const char *fname) + { + the_boot_info = NULL; +diff --git a/util.c b/util.c +index 9d65226..cbb945b 100644 +--- a/util.c ++++ b/util.c +@@ -349,7 +349,6 @@ int utilfdt_decode_type(const char *fmt, int *type, int *size) + void utilfdt_print_data(const char *data, int len) + { + int i; +- const char *p = data; + const char *s; + + /* no data, don't print */ +@@ -376,6 +375,7 @@ void utilfdt_print_data(const char *data, int len) + i < (len - 1) ? " " : ""); + printf(">"); + } else { ++ const unsigned char *p = (const unsigned char *)data; + printf(" = ["); + for (i = 0; i < len; i++) + printf("%02x%s", *p++, i < len - 1 ? " " : ""); +-- +2.7.0 + diff --git a/package/kernel/gpio-button-hotplug/Makefile b/package/kernel/gpio-button-hotplug/Makefile index a067adc4e1..216d23b76d 100644 --- a/package/kernel/gpio-button-hotplug/Makefile +++ b/package/kernel/gpio-button-hotplug/Makefile @@ -10,6 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=gpio-button-hotplug PKG_RELEASE:=2 +PKG_LICENSE:=GPL-2.0 include $(INCLUDE_DIR)/package.mk @@ -32,8 +33,7 @@ define KernelPackage/gpio-button-hotplug/description endef MAKE_OPTS:= \ - ARCH="$(LINUX_KARCH)" \ - CROSS_COMPILE="$(TARGET_CROSS)" \ + $(KERNEL_MAKE_FLAGS) \ SUBDIRS="$(PKG_BUILD_DIR)" define Build/Compile diff --git a/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c b/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c index 2bd3ff1813..1aef23e876 100644 --- a/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c +++ b/package/kernel/gpio-button-hotplug/src/gpio-button-hotplug.c @@ -474,7 +474,6 @@ static int gpio_keys_button_probe(struct platform_device *pdev, dev_err(dev, "missing platform data\n"); return -EINVAL; } - pdev->dev.platform_data = pdata; } if (polled && !pdata->poll_interval) { @@ -559,7 +558,7 @@ static int gpio_keys_probe(struct platform_device *pdev) if (ret) return ret; - pdata = pdev->dev.platform_data; + pdata = bdev->pdata; for (i = 0; i < pdata->nbuttons; i++) { struct gpio_keys_button *button = &pdata->buttons[i]; struct gpio_keys_button_data *bdata = &bdev->data[i]; diff --git a/package/kernel/gpio-nct5104d/Makefile b/package/kernel/gpio-nct5104d/Makefile new file mode 100644 index 0000000000..33352388cf --- /dev/null +++ b/package/kernel/gpio-nct5104d/Makefile @@ -0,0 +1,51 @@ +# +# Copyright (C) 2017 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=gpio-nct5104d +PKG_RELEASE:=1 + +PKG_MAINTAINER:=Florian Eckert +PKG_LICENSE:=GPL-2.0 + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/gpio-nct5104d + SUBMENU:=Other modules + TITLE:= GPIO nct5104d support + DEPENDS:= @GPIO_SUPPORT @TARGET_x86 + FILES:=$(PKG_BUILD_DIR)/gpio-nct5104d.ko + AUTOLOAD:=$(call AutoLoad,30,gpio-nct5104d,1) + KCONFIG:= +endef + +define KernelPackage/gpio-nct5104d/description + Support for GPIO functionality of NCT5104D super I/O chip. +endef + +EXTRA_KCONFIG:= \ + CONFIG_GPIO_NCT5104D=m + +EXTRA_CFLAGS:= \ + $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \ + $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \ + +MAKE_OPTS:= \ + $(KERNEL_MAKE_FLAGS) \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ + $(EXTRA_KCONFIG) + +define Build/Compile + $(MAKE) -C "$(LINUX_DIR)" \ + $(MAKE_OPTS) \ + modules +endef + +$(eval $(call KernelPackage,gpio-nct5104d)) diff --git a/package/kernel/gpio-nct5104d/src/Kconfig b/package/kernel/gpio-nct5104d/src/Kconfig new file mode 100644 index 0000000000..cf658e29cf --- /dev/null +++ b/package/kernel/gpio-nct5104d/src/Kconfig @@ -0,0 +1,5 @@ +config GPIO_NCT5104D + tristate "NCT5104D GPIO support" + depends on GENERIC_GPIO + help + Say yes here to support GPIO functionality of NCT5104D super I/O chip diff --git a/package/kernel/gpio-nct5104d/src/Makefile b/package/kernel/gpio-nct5104d/src/Makefile new file mode 100644 index 0000000000..6f0375a343 --- /dev/null +++ b/package/kernel/gpio-nct5104d/src/Makefile @@ -0,0 +1 @@ +obj-${CONFIG_GPIO_NCT5104D} += gpio-nct5104d.o diff --git a/package/kernel/gpio-nct5104d/src/gpio-nct5104d.c b/package/kernel/gpio-nct5104d/src/gpio-nct5104d.c new file mode 100644 index 0000000000..c139cf8d20 --- /dev/null +++ b/package/kernel/gpio-nct5104d/src/gpio-nct5104d.c @@ -0,0 +1,467 @@ +/* + * GPIO driver for NCT5104D + * + * Author: Tasanakorn Phaipool + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define DRVNAME "gpio-nct5104d" + +/* + * Super-I/O registers + */ +#define SIO_LDSEL 0x07 /* Logical device select */ +#define SIO_CHIPID 0x20 /* Chaip ID (2 bytes) */ +#define SIO_GPIO_ENABLE 0x30 /* GPIO enable */ +#define SIO_GPIO1_MODE 0xE0 /* GPIO1 Mode OpenDrain/Push-Pull */ +#define SIO_GPIO2_MODE 0xE1 /* GPIO2 Mode OpenDrain/Push-Pull */ + +#define SIO_LD_GPIO 0x07 /* GPIO logical device */ +#define SIO_LD_GPIO_MODE 0x0F /* GPIO mode control device */ +#define SIO_UNLOCK_KEY 0x87 /* Key to enable Super-I/O */ +#define SIO_LOCK_KEY 0xAA /* Key to disable Super-I/O */ + +#define SIO_NCT5104D_ID 0x1061 /* Chip ID */ +#define SIO_PCENGINES_APU_NCT5104D_ID1 0xc452 /* Chip ID */ +#define SIO_PCENGINES_APU_NCT5104D_ID2 0xc453 /* Chip ID */ + +enum chips { nct5104d }; + +static const char * const nct5104d_names[] = { + "nct5104d" +}; + +struct nct5104d_sio { + int addr; + enum chips type; +}; + +struct nct5104d_gpio_bank { + struct gpio_chip chip; + unsigned int regbase; + struct nct5104d_gpio_data *data; +}; + +struct nct5104d_gpio_data { + struct nct5104d_sio *sio; + int nr_bank; + struct nct5104d_gpio_bank *bank; +}; + +/* + * Super-I/O functions. + */ + +static inline int superio_inb(int base, int reg) +{ + outb(reg, base); + return inb(base + 1); +} + +static int superio_inw(int base, int reg) +{ + int val; + + outb(reg++, base); + val = inb(base + 1) << 8; + outb(reg, base); + val |= inb(base + 1); + + return val; +} + +static inline void superio_outb(int base, int reg, int val) +{ + outb(reg, base); + outb(val, base + 1); +} + +static inline int superio_enter(int base) +{ + /* Don't step on other drivers' I/O space by accident. */ + if (!request_muxed_region(base, 2, DRVNAME)) { + pr_err(DRVNAME "I/O address 0x%04x already in use\n", base); + return -EBUSY; + } + + /* According to the datasheet the key must be send twice. */ + outb(SIO_UNLOCK_KEY, base); + outb(SIO_UNLOCK_KEY, base); + + return 0; +} + +static inline void superio_select(int base, int ld) +{ + outb(SIO_LDSEL, base); + outb(ld, base + 1); +} + +static inline void superio_exit(int base) +{ + outb(SIO_LOCK_KEY, base); + release_region(base, 2); +} + +/* + * GPIO chip. + */ + +static int nct5104d_gpio_direction_in(struct gpio_chip *chip, unsigned offset); +static int nct5104d_gpio_get(struct gpio_chip *chip, unsigned offset); +static int nct5104d_gpio_direction_out(struct gpio_chip *chip, + unsigned offset, int value); +static void nct5104d_gpio_set(struct gpio_chip *chip, unsigned offset, int value); + +#define NCT5104D_GPIO_BANK(_base, _ngpio, _regbase) \ + { \ + .chip = { \ + .label = DRVNAME, \ + .owner = THIS_MODULE, \ + .direction_input = nct5104d_gpio_direction_in, \ + .get = nct5104d_gpio_get, \ + .direction_output = nct5104d_gpio_direction_out, \ + .set = nct5104d_gpio_set, \ + .base = _base, \ + .ngpio = _ngpio, \ + .can_sleep = true, \ + }, \ + .regbase = _regbase, \ + } + +#define gpio_dir(base) (base + 0) +#define gpio_data(base) (base + 1) + +static struct nct5104d_gpio_bank nct5104d_gpio_bank[] = { + NCT5104D_GPIO_BANK(0 , 8, 0xE0), + NCT5104D_GPIO_BANK(10, 8, 0xE4) +}; + +static int nct5104d_gpio_direction_in(struct gpio_chip *chip, unsigned offset) +{ + int err; + struct nct5104d_gpio_bank *bank = + container_of(chip, struct nct5104d_gpio_bank, chip); + struct nct5104d_sio *sio = bank->data->sio; + u8 dir; + + err = superio_enter(sio->addr); + if (err) + return err; + superio_select(sio->addr, SIO_LD_GPIO); + + dir = superio_inb(sio->addr, gpio_dir(bank->regbase)); + dir |= (1 << offset); + superio_outb(sio->addr, gpio_dir(bank->regbase), dir); + + superio_exit(sio->addr); + + return 0; +} + +static int nct5104d_gpio_get(struct gpio_chip *chip, unsigned offset) +{ + int err; + struct nct5104d_gpio_bank *bank = + container_of(chip, struct nct5104d_gpio_bank, chip); + struct nct5104d_sio *sio = bank->data->sio; + u8 data; + + err = superio_enter(sio->addr); + if (err) + return err; + superio_select(sio->addr, SIO_LD_GPIO); + + data = superio_inb(sio->addr, gpio_data(bank->regbase)); + + superio_exit(sio->addr); + + return !!(data & 1 << offset); +} + +static int nct5104d_gpio_direction_out(struct gpio_chip *chip, + unsigned offset, int value) +{ + int err; + struct nct5104d_gpio_bank *bank = + container_of(chip, struct nct5104d_gpio_bank, chip); + struct nct5104d_sio *sio = bank->data->sio; + u8 dir, data_out; + + err = superio_enter(sio->addr); + if (err) + return err; + superio_select(sio->addr, SIO_LD_GPIO); + + data_out = superio_inb(sio->addr, gpio_data(bank->regbase)); + if (value) + data_out |= (1 << offset); + else + data_out &= ~(1 << offset); + superio_outb(sio->addr, gpio_data(bank->regbase), data_out); + + dir = superio_inb(sio->addr, gpio_dir(bank->regbase)); + dir &= ~(1 << offset); + superio_outb(sio->addr, gpio_dir(bank->regbase), dir); + + superio_exit(sio->addr); + + return 0; +} + +static void nct5104d_gpio_set(struct gpio_chip *chip, unsigned offset, int value) +{ + int err; + struct nct5104d_gpio_bank *bank = + container_of(chip, struct nct5104d_gpio_bank, chip); + struct nct5104d_sio *sio = bank->data->sio; + u8 data_out; + + err = superio_enter(sio->addr); + if (err) + return; + superio_select(sio->addr, SIO_LD_GPIO); + + data_out = superio_inb(sio->addr, gpio_data(bank->regbase)); + if (value) + data_out |= (1 << offset); + else + data_out &= ~(1 << offset); + superio_outb(sio->addr, gpio_data(bank->regbase), data_out); + + superio_exit(sio->addr); +} + +/* + * Platform device and driver. + */ + +static int nct5104d_gpio_probe(struct platform_device *pdev) +{ + int err; + int i; + struct nct5104d_sio *sio = pdev->dev.platform_data; + struct nct5104d_gpio_data *data; + + data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); + if (!data) + return -ENOMEM; + + switch (sio->type) { + case nct5104d: + data->nr_bank = ARRAY_SIZE(nct5104d_gpio_bank); + data->bank = nct5104d_gpio_bank; + break; + default: + return -ENODEV; + } + data->sio = sio; + + platform_set_drvdata(pdev, data); + + /* For each GPIO bank, register a GPIO chip. */ + for (i = 0; i < data->nr_bank; i++) { + struct nct5104d_gpio_bank *bank = &data->bank[i]; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,5,0) + bank->chip.dev = &pdev->dev; +#else + bank->chip.parent = &pdev->dev; +#endif + bank->data = data; + + err = gpiochip_add(&bank->chip); + if (err) { + dev_err(&pdev->dev, + "Failed to register gpiochip %d: %d\n", + i, err); + goto err_gpiochip; + } + } + + return 0; + +err_gpiochip: + for (i = i - 1; i >= 0; i--) { + struct nct5104d_gpio_bank *bank = &data->bank[i]; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) + int rm_err = gpiochip_remove(&bank->chip); + if (rm_err < 0) + dev_err(&pdev->dev, + "Failed to remove gpiochip %d: %d\n", + i, rm_err); +#else /* LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) */ + gpiochip_remove (&bank->chip); +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) */ + } + + return err; +} + +static int nct5104d_gpio_remove(struct platform_device *pdev) +{ + int i; + struct nct5104d_gpio_data *data = platform_get_drvdata(pdev); + + for (i = 0; i < data->nr_bank; i++) { + struct nct5104d_gpio_bank *bank = &data->bank[i]; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) + int err = gpiochip_remove(&bank->chip); + if (err) { + dev_err(&pdev->dev, + "Failed to remove GPIO gpiochip %d: %d\n", + i, err); + return err; + } +#else /* LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) */ + gpiochip_remove (&bank->chip); +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) */ + } + + return 0; +} + +static int __init nct5104d_find(int addr, struct nct5104d_sio *sio) +{ + int err; + u16 devid; + u8 gpio_cfg; + + err = superio_enter(addr); + if (err) + return err; + + err = -ENODEV; + + devid = superio_inw(addr, SIO_CHIPID); + switch (devid) { + case SIO_NCT5104D_ID: + case SIO_PCENGINES_APU_NCT5104D_ID1: + case SIO_PCENGINES_APU_NCT5104D_ID2: + sio->type = nct5104d; + /* enable GPIO0 and GPIO1 */ + superio_select(addr, SIO_LD_GPIO); + gpio_cfg = superio_inb(addr, SIO_GPIO_ENABLE); + gpio_cfg |= 0x03; + superio_outb(addr, SIO_GPIO_ENABLE, gpio_cfg); + break; + default: + pr_info(DRVNAME ": Unsupported device 0x%04x\n", devid); + goto err; + } + sio->addr = addr; + err = 0; + + pr_info(DRVNAME ": Found %s at %#x chip id 0x%04x\n", + nct5104d_names[sio->type], + (unsigned int) addr, + (int) superio_inw(addr, SIO_CHIPID)); + + superio_select(sio->addr, SIO_LD_GPIO_MODE); + superio_outb(sio->addr, SIO_GPIO1_MODE, 0x0); + superio_outb(sio->addr, SIO_GPIO2_MODE, 0x0); + +err: + superio_exit(addr); + return err; +} + +static struct platform_device *nct5104d_gpio_pdev; + +static int __init +nct5104d_gpio_device_add(const struct nct5104d_sio *sio) +{ + int err; + + nct5104d_gpio_pdev = platform_device_alloc(DRVNAME, -1); + if (!nct5104d_gpio_pdev) + pr_err(DRVNAME ": Error platform_device_alloc\n"); + if (!nct5104d_gpio_pdev) + return -ENOMEM; + + err = platform_device_add_data(nct5104d_gpio_pdev, + sio, sizeof(*sio)); + if (err) { + pr_err(DRVNAME "Platform data allocation failed\n"); + goto err; + } + + err = platform_device_add(nct5104d_gpio_pdev); + if (err) { + pr_err(DRVNAME "Device addition failed\n"); + goto err; + } + pr_info(DRVNAME ": Device added\n"); + return 0; + +err: + platform_device_put(nct5104d_gpio_pdev); + + return err; +} + +/* + */ + +static struct platform_driver nct5104d_gpio_driver = { + .driver = { + .owner = THIS_MODULE, + .name = DRVNAME, + }, + .probe = nct5104d_gpio_probe, + .remove = nct5104d_gpio_remove, +}; + +static int __init nct5104d_gpio_init(void) +{ + int err; + struct nct5104d_sio sio; + const char *board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); + const char *board_name = dmi_get_system_info(DMI_BOARD_NAME); + + /* Make sure we only run on PC Engine APU boards */ + if (!board_name || !board_vendor || strcasecmp(board_vendor, "PC Engines") || strncasecmp(board_name, "apu", 3)) { + return -ENODEV; + } + + if (nct5104d_find(0x2e, &sio) && + nct5104d_find(0x4e, &sio)) + return -ENODEV; + + err = platform_driver_register(&nct5104d_gpio_driver); + if (!err) { + pr_info(DRVNAME ": platform_driver_register\n"); + err = nct5104d_gpio_device_add(&sio); + if (err) + platform_driver_unregister(&nct5104d_gpio_driver); + } + + return err; +} +subsys_initcall(nct5104d_gpio_init); + +static void __exit nct5104d_gpio_exit(void) +{ + platform_device_unregister(nct5104d_gpio_pdev); + platform_driver_unregister(&nct5104d_gpio_driver); +} +module_exit(nct5104d_gpio_exit); + +MODULE_DESCRIPTION("GPIO driver for Super-I/O chips NCT5104D"); +MODULE_AUTHOR("Tasanakorn Phaipool "); +MODULE_LICENSE("GPL"); diff --git a/package/kernel/hwmon-gsc/Makefile b/package/kernel/hwmon-gsc/Makefile new file mode 100644 index 0000000000..3888a2f17e --- /dev/null +++ b/package/kernel/hwmon-gsc/Makefile @@ -0,0 +1,29 @@ +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=hwmon-gsc +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/hwmon-gsc + SUBMENU:=Hardware Monitoring Support + DEPENDS:=@TARGET_imx6||TARGET_cns3xxx kmod-hwmon-core +kmod-i2c-core + TITLE:=Driver for the Gateworks System Controller + AUTOLOAD:=$(call AutoLoad,60,gsc) + FILES:=$(PKG_BUILD_DIR)/gsc.ko +endef + +define KernelPackage/hwmon-gsc/description + Kernel module for the Gateworks System Controller chips. +endef + +define Build/Compile + $(MAKE) -C "$(LINUX_DIR)" \ + $(KERNEL_MAKE_FLAGS) \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + EXTRA_CFLAGS="$(BUILDFLAGS)" \ + modules +endef + +$(eval $(call KernelPackage,hwmon-gsc)) diff --git a/package/kernel/hwmon-gsc/src/Makefile b/package/kernel/hwmon-gsc/src/Makefile new file mode 100644 index 0000000000..0e54aed2e3 --- /dev/null +++ b/package/kernel/hwmon-gsc/src/Makefile @@ -0,0 +1 @@ +obj-m := gsc.o diff --git a/package/kernel/hwmon-gsc/src/gsc.c b/package/kernel/hwmon-gsc/src/gsc.c new file mode 100644 index 0000000000..737cc599b4 --- /dev/null +++ b/package/kernel/hwmon-gsc/src/gsc.c @@ -0,0 +1,308 @@ +/* + * A hwmon driver for the Gateworks System Controller + * Copyright (C) 2009 Gateworks Corporation + * + * Author: Chris Lang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, + * as published by the Free Software Foundation - version 2. + */ + +#include +#include +#include +#include +#include +#include + +#define DRV_VERSION "0.2" + +enum chips { gsp }; + +/* AD7418 registers */ +#define GSP_REG_TEMP_IN 0x00 +#define GSP_REG_VIN 0x02 +#define GSP_REG_3P3 0x05 +#define GSP_REG_BAT 0x08 +#define GSP_REG_5P0 0x0b +#define GSP_REG_CORE 0x0e +#define GSP_REG_CPU1 0x11 +#define GSP_REG_CPU2 0x14 +#define GSP_REG_DRAM 0x17 +#define GSP_REG_EXT_BAT 0x1a +#define GSP_REG_IO1 0x1d +#define GSP_REG_IO2 0x20 +#define GSP_REG_PCIE 0x23 +#define GSP_REG_CURRENT 0x26 +#define GSP_FAN_0 0x2C +#define GSP_FAN_1 0x2E +#define GSP_FAN_2 0x30 +#define GSP_FAN_3 0x32 +#define GSP_FAN_4 0x34 +#define GSP_FAN_5 0x36 + +struct gsp_sensor_info { + const char* name; + int reg; +}; + +static const struct gsp_sensor_info gsp_sensors[] = { + {"temp", GSP_REG_TEMP_IN}, + {"vin", GSP_REG_VIN}, + {"3p3", GSP_REG_3P3}, + {"bat", GSP_REG_BAT}, + {"5p0", GSP_REG_5P0}, + {"core", GSP_REG_CORE}, + {"cpu1", GSP_REG_CPU1}, + {"cpu2", GSP_REG_CPU2}, + {"dram", GSP_REG_DRAM}, + {"ext_bat", GSP_REG_EXT_BAT}, + {"io1", GSP_REG_IO1}, + {"io2", GSP_REG_IO2}, + {"pci2", GSP_REG_PCIE}, + {"current", GSP_REG_CURRENT}, + {"fan_point0", GSP_FAN_0}, + {"fan_point1", GSP_FAN_1}, + {"fan_point2", GSP_FAN_2}, + {"fan_point3", GSP_FAN_3}, + {"fan_point4", GSP_FAN_4}, + {"fan_point5", GSP_FAN_5}, +}; + +struct gsp_data { + struct device *hwmon_dev; + struct attribute_group attrs; + enum chips type; +}; + +static int gsp_probe(struct i2c_client *client, + const struct i2c_device_id *id); +static int gsp_remove(struct i2c_client *client); + +static const struct i2c_device_id gsp_id[] = { + { "gsp", 0 }, + { } +}; +MODULE_DEVICE_TABLE(i2c, gsp_id); + +static struct i2c_driver gsp_driver = { + .driver = { + .name = "gsp", + }, + .probe = gsp_probe, + .remove = gsp_remove, + .id_table = gsp_id, +}; + +/* All registers are word-sized, except for the configuration registers. + * AD7418 uses a high-byte first convention. Do NOT use those functions to + * access the configuration registers CONF and CONF2, as they are byte-sized. + */ +static inline int gsp_read(struct i2c_client *client, u8 reg) +{ + unsigned int adc = 0; + if (reg == GSP_REG_TEMP_IN || reg > GSP_REG_CURRENT) + { + adc |= i2c_smbus_read_byte_data(client, reg); + adc |= i2c_smbus_read_byte_data(client, reg + 1) << 8; + return adc; + } + else + { + adc |= i2c_smbus_read_byte_data(client, reg); + adc |= i2c_smbus_read_byte_data(client, reg + 1) << 8; + adc |= i2c_smbus_read_byte_data(client, reg + 2) << 16; + return adc; + } +} + +static inline int gsp_write(struct i2c_client *client, u8 reg, u16 value) +{ + i2c_smbus_write_byte_data(client, reg, value & 0xff); + i2c_smbus_write_byte_data(client, reg + 1, ((value >> 8) & 0xff)); + return 1; +} + +static ssize_t show_adc(struct device *dev, struct device_attribute *devattr, + char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); + struct i2c_client *client = to_i2c_client(dev); + return sprintf(buf, "%d\n", gsp_read(client, gsp_sensors[attr->index].reg)); +} + +static ssize_t show_label(struct device *dev, + struct device_attribute *devattr, char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); + + return sprintf(buf, "%s\n", gsp_sensors[attr->index].name); +} + +static ssize_t store_fan(struct device *dev, + struct device_attribute *devattr, const char *buf, size_t count) +{ + u16 val; + struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); + struct i2c_client *client = to_i2c_client(dev); + val = simple_strtoul(buf, NULL, 10); + gsp_write(client, gsp_sensors[attr->index].reg, val); + return count; +} + +static SENSOR_DEVICE_ATTR(temp0_input, S_IRUGO, show_adc, NULL, 0); +static SENSOR_DEVICE_ATTR(temp0_label, S_IRUGO, show_label, NULL, 0); + +static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, show_adc, NULL, 1); +static SENSOR_DEVICE_ATTR(in0_label, S_IRUGO, show_label, NULL, 1); +static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, show_adc, NULL, 2); +static SENSOR_DEVICE_ATTR(in1_label, S_IRUGO, show_label, NULL, 2); +static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, show_adc, NULL, 3); +static SENSOR_DEVICE_ATTR(in2_label, S_IRUGO, show_label, NULL, 3); +static SENSOR_DEVICE_ATTR(in3_input, S_IRUGO, show_adc, NULL, 4); +static SENSOR_DEVICE_ATTR(in3_label, S_IRUGO, show_label, NULL, 4); +static SENSOR_DEVICE_ATTR(in4_input, S_IRUGO, show_adc, NULL, 5); +static SENSOR_DEVICE_ATTR(in4_label, S_IRUGO, show_label, NULL, 5); +static SENSOR_DEVICE_ATTR(in5_input, S_IRUGO, show_adc, NULL, 6); +static SENSOR_DEVICE_ATTR(in5_label, S_IRUGO, show_label, NULL, 6); +static SENSOR_DEVICE_ATTR(in6_input, S_IRUGO, show_adc, NULL, 7); +static SENSOR_DEVICE_ATTR(in6_label, S_IRUGO, show_label, NULL, 7); +static SENSOR_DEVICE_ATTR(in7_input, S_IRUGO, show_adc, NULL, 8); +static SENSOR_DEVICE_ATTR(in7_label, S_IRUGO, show_label, NULL, 8); +static SENSOR_DEVICE_ATTR(in8_input, S_IRUGO, show_adc, NULL, 9); +static SENSOR_DEVICE_ATTR(in8_label, S_IRUGO, show_label, NULL, 9); +static SENSOR_DEVICE_ATTR(in9_input, S_IRUGO, show_adc, NULL, 10); +static SENSOR_DEVICE_ATTR(in9_label, S_IRUGO, show_label, NULL, 10); +static SENSOR_DEVICE_ATTR(in10_input, S_IRUGO, show_adc, NULL, 11); +static SENSOR_DEVICE_ATTR(in10_label, S_IRUGO, show_label, NULL, 11); +static SENSOR_DEVICE_ATTR(in11_input, S_IRUGO, show_adc, NULL, 12); +static SENSOR_DEVICE_ATTR(in11_label, S_IRUGO, show_label, NULL, 12); +static SENSOR_DEVICE_ATTR(in12_input, S_IRUGO, show_adc, NULL, 13); +static SENSOR_DEVICE_ATTR(in12_label, S_IRUGO, show_label, NULL, 13); + +static SENSOR_DEVICE_ATTR(fan0_point0, S_IRUGO | S_IWUSR, show_adc, store_fan, 14); +static SENSOR_DEVICE_ATTR(fan0_point1, S_IRUGO | S_IWUSR, show_adc, store_fan, 15); +static SENSOR_DEVICE_ATTR(fan0_point2, S_IRUGO | S_IWUSR, show_adc, store_fan, 16); +static SENSOR_DEVICE_ATTR(fan0_point3, S_IRUGO | S_IWUSR, show_adc, store_fan, 17); +static SENSOR_DEVICE_ATTR(fan0_point4, S_IRUGO | S_IWUSR, show_adc, store_fan, 18); +static SENSOR_DEVICE_ATTR(fan0_point5, S_IRUGO | S_IWUSR, show_adc, store_fan, 19); + +static struct attribute *gsp_attributes[] = { + &sensor_dev_attr_temp0_input.dev_attr.attr, + &sensor_dev_attr_in0_input.dev_attr.attr, + &sensor_dev_attr_in1_input.dev_attr.attr, + &sensor_dev_attr_in2_input.dev_attr.attr, + &sensor_dev_attr_in3_input.dev_attr.attr, + &sensor_dev_attr_in4_input.dev_attr.attr, + &sensor_dev_attr_in5_input.dev_attr.attr, + &sensor_dev_attr_in6_input.dev_attr.attr, + &sensor_dev_attr_in7_input.dev_attr.attr, + &sensor_dev_attr_in8_input.dev_attr.attr, + &sensor_dev_attr_in9_input.dev_attr.attr, + &sensor_dev_attr_in10_input.dev_attr.attr, + &sensor_dev_attr_in11_input.dev_attr.attr, + &sensor_dev_attr_in12_input.dev_attr.attr, + + &sensor_dev_attr_temp0_label.dev_attr.attr, + &sensor_dev_attr_in0_label.dev_attr.attr, + &sensor_dev_attr_in1_label.dev_attr.attr, + &sensor_dev_attr_in2_label.dev_attr.attr, + &sensor_dev_attr_in3_label.dev_attr.attr, + &sensor_dev_attr_in4_label.dev_attr.attr, + &sensor_dev_attr_in5_label.dev_attr.attr, + &sensor_dev_attr_in6_label.dev_attr.attr, + &sensor_dev_attr_in7_label.dev_attr.attr, + &sensor_dev_attr_in8_label.dev_attr.attr, + &sensor_dev_attr_in9_label.dev_attr.attr, + &sensor_dev_attr_in10_label.dev_attr.attr, + &sensor_dev_attr_in11_label.dev_attr.attr, + &sensor_dev_attr_in12_label.dev_attr.attr, + + &sensor_dev_attr_fan0_point0.dev_attr.attr, + &sensor_dev_attr_fan0_point1.dev_attr.attr, + &sensor_dev_attr_fan0_point2.dev_attr.attr, + &sensor_dev_attr_fan0_point3.dev_attr.attr, + &sensor_dev_attr_fan0_point4.dev_attr.attr, + &sensor_dev_attr_fan0_point5.dev_attr.attr, + NULL +}; + + +static int gsp_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct i2c_adapter *adapter = client->adapter; + struct gsp_data *data; + int err; + + if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA | + I2C_FUNC_SMBUS_WORD_DATA)) { + err = -EOPNOTSUPP; + goto exit; + } + + if (!(data = kzalloc(sizeof(struct gsp_data), GFP_KERNEL))) { + err = -ENOMEM; + goto exit; + } + + i2c_set_clientdata(client, data); + + data->type = id->driver_data; + + switch (data->type) { + case 0: + data->attrs.attrs = gsp_attributes; + break; + } + + dev_info(&client->dev, "%s chip found\n", client->name); + + /* Register sysfs hooks */ + if ((err = sysfs_create_group(&client->dev.kobj, &data->attrs))) + goto exit_free; + + data->hwmon_dev = hwmon_device_register(&client->dev); + if (IS_ERR(data->hwmon_dev)) { + err = PTR_ERR(data->hwmon_dev); + goto exit_remove; + } + + return 0; + +exit_remove: + sysfs_remove_group(&client->dev.kobj, &data->attrs); +exit_free: + kfree(data); +exit: + return err; +} + +static int gsp_remove(struct i2c_client *client) +{ + struct gsp_data *data = i2c_get_clientdata(client); + hwmon_device_unregister(data->hwmon_dev); + sysfs_remove_group(&client->dev.kobj, &data->attrs); + kfree(data); + return 0; +} + +static int __init gsp_init(void) +{ + return i2c_add_driver(&gsp_driver); +} + +static void __exit gsp_exit(void) +{ + i2c_del_driver(&gsp_driver); +} + +module_init(gsp_init); +module_exit(gsp_exit); + +MODULE_AUTHOR("Chris Lang "); +MODULE_DESCRIPTION("GSC HWMON driver"); +MODULE_LICENSE("GPL"); +MODULE_VERSION(DRV_VERSION); + diff --git a/package/kernel/i2c-gpio-custom/Makefile b/package/kernel/i2c-gpio-custom/Makefile index fb3f3bf17e..d1123cc3fb 100644 --- a/package/kernel/i2c-gpio-custom/Makefile +++ b/package/kernel/i2c-gpio-custom/Makefile @@ -33,8 +33,7 @@ EXTRA_CFLAGS:= \ $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \ MAKE_OPTS:= \ - ARCH="$(LINUX_KARCH)" \ - CROSS_COMPILE="$(TARGET_CROSS)" \ + $(KERNEL_MAKE_FLAGS) \ SUBDIRS="$(PKG_BUILD_DIR)" \ EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ $(EXTRA_KCONFIG) diff --git a/package/kernel/kmod-sched-cake/Makefile b/package/kernel/kmod-sched-cake/Makefile index bd62e64f6f..ad49bdaa19 100644 --- a/package/kernel/kmod-sched-cake/Makefile +++ b/package/kernel/kmod-sched-cake/Makefile @@ -13,9 +13,10 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/dtaht/sch_cake.git -PKG_SOURCE_DATE:=2017-12-22 -PKG_SOURCE_VERSION:=5bf0b6596721e18269ee4bae6e3549c75cba923a -PKG_MIRROR_HASH:=95c0f886a3ad8ccfd7b35fa19af8b5ecbf0b2f74caea73fbabd6574f1c3be2db +PKG_SOURCE_DATE:=2018-05-15 +PKG_SOURCE_VERSION:=779e91a91e803cf2b95a6a46de721d3a4fd4dfe6 +PKG_MIRROR_HASH:=2bd1e9aee6d53a2a140ad5ece6d8eeccbfb8ae8c788e84f9dd946e29abb64010 +PKG_MAINTAINER:=Kevin Darbyshire-Bryant include $(INCLUDE_DIR)/package.mk @@ -35,7 +36,7 @@ define KernelPackage/sched-cake/description endef define Build/Compile - $(MAKE) $(KERNEL_MAKEOPTS) SUBDIRS="$(PKG_BUILD_DIR)" modules + $(KERNEL_MAKE) SUBDIRS="$(PKG_BUILD_DIR)" modules endef $(eval $(call KernelPackage,sched-cake)) diff --git a/package/kernel/leds-apu2/Makefile b/package/kernel/leds-apu2/Makefile new file mode 100644 index 0000000000..08aca1750f --- /dev/null +++ b/package/kernel/leds-apu2/Makefile @@ -0,0 +1,51 @@ +# +# Copyright (C) 2017 Chris Blake +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=leds-apu2 +PKG_RELEASE:=1 + +PKG_MAINTAINER:=Chris Blake +PKG_LICENSE:=GPL-2.0 + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/leds-apu2 + SUBMENU:=LED modules + TITLE:= PC Engines APU2/APU3 LED support + DEPENDS:= @GPIO_SUPPORT @TARGET_x86 + FILES:=$(PKG_BUILD_DIR)/leds-apu2.ko + AUTOLOAD:=$(call AutoLoad,41,leds-apu2,1) + KCONFIG:= +endef + +define KernelPackage/leds-apu2/description + Driver for the PC Engines APU2/APU3 LEDs & Reset Button. +endef + +EXTRA_KCONFIG:= \ + CONFIG_LEDS_APU2=m + +EXTRA_CFLAGS:= \ + $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \ + $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \ + +MAKE_OPTS:= \ + $(KERNEL_MAKE_FLAGS) \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ + $(EXTRA_KCONFIG) + +define Build/Compile + $(MAKE) -C "$(LINUX_DIR)" \ + $(MAKE_OPTS) \ + modules +endef + +$(eval $(call KernelPackage,leds-apu2)) diff --git a/package/kernel/leds-apu2/src/Kconfig b/package/kernel/leds-apu2/src/Kconfig new file mode 100644 index 0000000000..d0ad5bea4f --- /dev/null +++ b/package/kernel/leds-apu2/src/Kconfig @@ -0,0 +1,8 @@ +config LEDS_APU2 + tristate "PC Engines APU2/APU3 LED support" + depends on LEDS_CLASS + depends on LEDS_GPIO + depends on GPIOLIB + help + Say yes here to enable support for the CPU GPIO pins on the PC Engines + APU2/APU3 board, which enables the front LEDs and Reset Button. diff --git a/package/kernel/leds-apu2/src/Makefile b/package/kernel/leds-apu2/src/Makefile new file mode 100644 index 0000000000..4f77b393cc --- /dev/null +++ b/package/kernel/leds-apu2/src/Makefile @@ -0,0 +1 @@ +obj-${CONFIG_LEDS_APU2} += leds-apu2.o diff --git a/package/kernel/leds-apu2/src/leds-apu2.c b/package/kernel/leds-apu2/src/leds-apu2.c new file mode 100644 index 0000000000..2fefa857cb --- /dev/null +++ b/package/kernel/leds-apu2/src/leds-apu2.c @@ -0,0 +1,384 @@ +/* +* APU2 LED/GPIO Driver +* Copyright (c) 2016 Christian Lamparter +* +* Based on gpio-apu2.c - AMD FCH GPIO support for PC-Engines APU-2 board +* +* Copyright (c) 2015 Carsten Spiess +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#define DEVNAME "leds-apu2" + +#define FCH_ACPI_MMIO_BASE 0xFED80000 +#define FCH_GPIO_BASE (FCH_ACPI_MMIO_BASE + 0x1500) +#define FCH_GPIO_SIZE 0x300 + +#define APU_NUM_GPIO 4 + +#define GPIO_BIT_DIR 23 +#define GPIO_BIT_WRITE 22 +#define GPIO_BIT_READ 16 + +/* internal variables */ +static struct pci_dev *gpio_apu2_pci; +static DEFINE_SPINLOCK (gpio_lock); + +/* the watchdog platform device */ +static struct platform_device *gpio_apu2_platform_device; +static struct platform_device *leddev; +static struct platform_device *keydev; + +static const struct pci_device_id gpio_apu2_pci_tbl[] ={ + {PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_HUDSON2_SMBUS, PCI_ANY_ID, PCI_ANY_ID}, + { 0, } /* End of list */ +}; +MODULE_DEVICE_TABLE (pci, gpio_apu2_pci_tbl); + +/* EGPIO89=GPIO32, AGPIO68=GPIO57, AGPIO69=GPIO58, AGPIO70=GPIO59 */ +static u8 gpio_offset[APU_NUM_GPIO] = {89, 68, 69, 70}; + +static void __iomem *gpio_addr[APU_NUM_GPIO] = {NULL, NULL, NULL, NULL}; + +static int gpio_apu2_get_dir (struct gpio_chip *chip, unsigned offset) +{ + u32 val; + + val = ~ioread32 (gpio_addr[offset]); + + return (val >> GPIO_BIT_DIR) & 1; +} + +static int gpio_apu2_dir_in (struct gpio_chip *gc, unsigned offset) +{ + u32 val; + + spin_lock_bh (&gpio_lock); + + val = ioread32 (gpio_addr[offset]); + val &= ~BIT(GPIO_BIT_DIR); + iowrite32 (val, gpio_addr[offset]); + + spin_unlock_bh (&gpio_lock); + + return 0; +} + +static int gpio_apu2_dir_out (struct gpio_chip *chip, unsigned offset, + int value) +{ + u32 val; + + spin_lock_bh (&gpio_lock); + + val = ioread32 (gpio_addr[offset]); + val |= BIT(GPIO_BIT_DIR); + iowrite32 (val, gpio_addr[offset]); + + spin_unlock_bh (&gpio_lock); + + return 0; +} + +static int gpio_apu2_get_data (struct gpio_chip *chip, unsigned offset) +{ + u32 val; + + val = ioread32 (gpio_addr[offset]); + + return (val >> GPIO_BIT_READ) & 1; +} + +static void gpio_apu2_set_data (struct gpio_chip *chip, unsigned offset, int value) +{ + u32 val; + + spin_lock_bh (&gpio_lock); + + val = ioread32 (gpio_addr[offset]); + + if (value) + val |= BIT(GPIO_BIT_WRITE); + else + val &= ~BIT(GPIO_BIT_WRITE); + + iowrite32 (val, gpio_addr[offset]); + + spin_unlock_bh (&gpio_lock); +} + +static struct gpio_chip gpio_apu2_chip = { + .label = DEVNAME, + .owner = THIS_MODULE, + .base = -1, + .ngpio = APU_NUM_GPIO, + .get_direction = gpio_apu2_get_dir, + .direction_input = gpio_apu2_dir_in, + .direction_output = gpio_apu2_dir_out, + .get = gpio_apu2_get_data, + .set = gpio_apu2_set_data, +}; + +/* + * + */ +static int gpio_apu2_probe (struct platform_device *dev) +{ + int ret = 0; + int i; + struct pci_dev *pci_dev = NULL; + + /* Match the PCI device */ + for_each_pci_dev (pci_dev) { + if (pci_match_id (gpio_apu2_pci_tbl, pci_dev) != NULL) { + gpio_apu2_pci = pci_dev; + break; + } + } + + if (!gpio_apu2_pci) + return -ENODEV; + + pr_info ("%s: PCI Revision ID: 0x%x\n", DEVNAME, gpio_apu2_pci->revision); + + /* Determine type of southbridge chipset */ + if (gpio_apu2_pci->revision < 0x40) { + return -EACCES; + } + + /* Request memory region for GPIO's */ + if (!devm_request_mem_region (&dev->dev, FCH_GPIO_BASE, + FCH_GPIO_SIZE, DEVNAME)){ + pr_err ("%s: request GPIO mem region failed\n", DEVNAME); + return -ENXIO; + } + + /* Map IO's for GPIO's */ + for (i = 0; i < APU_NUM_GPIO; i++) { + gpio_addr[i] = devm_ioremap (&dev->dev, + FCH_GPIO_BASE + (gpio_offset[i] * sizeof (u32)), sizeof (u32)); + if (!gpio_addr[i]) { + pr_err ("%s: map GPIO%d address failed\n", DEVNAME, gpio_offset[i]); + return -ENXIO; + } + } + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,5,0) + gpio_apu2_chip.dev = &dev->dev; +#else + gpio_apu2_chip.parent = &dev->dev; +#endif + ret = gpiochip_add (&gpio_apu2_chip); + if (ret) { + pr_err ("%s: adding gpiochip failed\n", DEVNAME); + } + + return ret; +} + +static int gpio_apu2_remove (struct platform_device *dev) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) + int ret; + ret = gpiochip_remove (&gpio_apu2_chip); +#else /* LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) */ + gpiochip_remove (&gpio_apu2_chip); +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) */ + return 0; +} + +static struct platform_driver gpio_apu2_driver = { + .probe = gpio_apu2_probe, + .remove = gpio_apu2_remove, + .driver = { + .owner = THIS_MODULE, + .name = DEVNAME + } +}; + +static struct gpio_led apu2_leds_gpio[] = { + { + .name = "apu2:green:power", + .gpio = 509, + .active_low = 1, + }, + { + .name = "apu2:green:led2", + .gpio = 510, + .active_low = 1, + }, + { + .name = "apu2:green:led3", + .gpio = 511, + .active_low = 1, + }, +}; + +static struct gpio_keys_button apu2_gpio_keys[] = { + { + .desc = "Reset button", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = 60, + .gpio = 508, + .active_low = 1, + }, +}; + +static void register_gpio_keys_polled(int id, unsigned poll_interval, + unsigned nbuttons, + struct gpio_keys_button *buttons) +{ + struct gpio_keys_platform_data pdata = { }; + int err; + + keydev = platform_device_alloc("gpio-keys-polled", id); + if (!keydev) { + printk(KERN_ERR "Failed to allocate gpio-keys platform device\n"); + return; + } + + pdata.poll_interval = poll_interval; + pdata.nbuttons = nbuttons; + pdata.buttons = buttons; + + err = platform_device_add_data(keydev, &pdata, sizeof(pdata)); + if (err) { + dev_err(&keydev->dev, "failed to add platform data to key driver (%d)", err); + goto err_put_pdev; + } + + err = platform_device_add(keydev); + if (err) { + dev_err(&keydev->dev, "failed to register key platform device (%d)", err); + goto err_put_pdev; + } + + return; + +err_put_pdev: + platform_device_put(keydev); + keydev = NULL; +} + +static void register_leds_gpio(int id, unsigned num_leds, struct gpio_led *leds) +{ + struct gpio_led_platform_data pdata = { }; + int err; + + leddev = platform_device_alloc("leds-gpio", id); + if (!leddev) { + printk(KERN_ERR "Failed to allocate leds-gpio platform device\n"); + return; + } + + pdata.num_leds = num_leds; + pdata.leds = leds; + + err = platform_device_add_data(leddev, &pdata, sizeof(pdata)); + if (err) { + dev_err(&leddev->dev, "failed to add platform data to key driver (%d)", err); + goto err_put_pdev; + } + + err = platform_device_add(leddev); + if (err) { + dev_err(&leddev->dev, "failed to register key platform device (%d)", err); + goto err_put_pdev; + } + + return; + +err_put_pdev: + platform_device_put(leddev); + leddev = NULL; +} + +static int __init gpio_apu2_init (void) +{ + int err; + const char *board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); + const char *board_name = dmi_get_system_info(DMI_BOARD_NAME); + + /* Match the device name/model */ + if (!board_name \ + || !board_vendor \ + || strcasecmp(board_vendor, "PC Engines") \ + || (strcasecmp(board_name, "apu2") \ + && strcasecmp(board_name, "apu3") \ + && strcasecmp(board_name, "PC Engines apu2") \ + && strcasecmp(board_name, "PC Engines apu3"))) { + err = -ENODEV; + goto exit; + } + + pr_info ("%s: load APU2/LED GPIO driver module\n", DEVNAME); + + err = platform_driver_register (&gpio_apu2_driver); + if (err) + goto exit; + + gpio_apu2_platform_device = platform_device_register_simple (DEVNAME, -1, NULL, 0); + if (IS_ERR(gpio_apu2_platform_device)) { + err = PTR_ERR(gpio_apu2_platform_device); + goto exit_driver; + } + + pr_info ("%s: APU2 GPIO/LED driver module loaded\n", DEVNAME); + + register_leds_gpio(-1, ARRAY_SIZE(apu2_leds_gpio), apu2_leds_gpio); + register_gpio_keys_polled(-1, 20, ARRAY_SIZE(apu2_gpio_keys), apu2_gpio_keys); + return 0; + +exit_driver: + platform_driver_unregister (&gpio_apu2_driver); +exit: + return err; +} + +static void __exit gpio_apu2_exit (void) +{ + platform_device_unregister (gpio_apu2_platform_device); + platform_device_unregister (leddev); + platform_device_unregister (keydev); + platform_driver_unregister (&gpio_apu2_driver); + pr_info ("%s: APU2 GPIO/LED driver module unloaded\n", DEVNAME); +} + +MODULE_AUTHOR ("Carsten Spiess "); +MODULE_DESCRIPTION("GPIO driver for AMD FCH on PC-Engines APU-2"); +MODULE_LICENSE("GPL"); + +module_init (gpio_apu2_init); +module_exit (gpio_apu2_exit); diff --git a/package/kernel/linux/files/sysctl-br-netfilter.conf b/package/kernel/linux/files/sysctl-br-netfilter.conf new file mode 100644 index 0000000000..b10ddc0874 --- /dev/null +++ b/package/kernel/linux/files/sysctl-br-netfilter.conf @@ -0,0 +1,7 @@ +# Do not edit, changes to this file will be lost on upgrades +# /etc/sysctl.conf can be used to customize sysctl settings + +# disable bridge firewalling by default +net.bridge.bridge-nf-call-arptables=0 +net.bridge.bridge-nf-call-ip6tables=0 +net.bridge.bridge-nf-call-iptables=0 diff --git a/package/kernel/linux/files/sysctl-nf-conntrack.conf b/package/kernel/linux/files/sysctl-nf-conntrack.conf new file mode 100644 index 0000000000..37baf5fd6f --- /dev/null +++ b/package/kernel/linux/files/sysctl-nf-conntrack.conf @@ -0,0 +1,9 @@ +# Do not edit, changes to this file will be lost on upgrades +# /etc/sysctl.conf can be used to customize sysctl settings + +net.netfilter.nf_conntrack_acct=1 +net.netfilter.nf_conntrack_checksum=0 +net.netfilter.nf_conntrack_max=16384 +net.netfilter.nf_conntrack_tcp_timeout_established=7440 +net.netfilter.nf_conntrack_udp_timeout=60 +net.netfilter.nf_conntrack_udp_timeout_stream=180 diff --git a/package/kernel/linux/modules/block.mk b/package/kernel/linux/modules/block.mk index 508b3abd5d..ab9d7af8ca 100644 --- a/package/kernel/linux/modules/block.mk +++ b/package/kernel/linux/modules/block.mk @@ -206,10 +206,21 @@ endef $(eval $(call KernelPackage,block2mtd)) +define KernelPackage/dax + SUBMENU:=$(BLOCK_MENU) + TITLE:=DAX: direct access to differentiated memory + DEPENDS:=@LINUX_4_14 + KCONFIG:=CONFIG_DAX + FILES:=$(LINUX_DIR)/drivers/dax/dax.ko +endef + +$(eval $(call KernelPackage,dax)) + + define KernelPackage/dm SUBMENU:=$(BLOCK_MENU) TITLE:=Device Mapper - DEPENDS:=+kmod-crypto-manager + DEPENDS:=+kmod-crypto-manager +LINUX_4_14:kmod-dax # All the "=n" are unnecessary, they're only there # to stop the config from asking the question. # MIRROR is M because I've needed it for pvmove. @@ -326,7 +337,7 @@ $(eval $(call KernelPackage,md-raid10)) define KernelPackage/md-raid456 -$(call KernelPackage/md/Depends,+kmod-lib-raid6 +kmod-lib-xor +LINUX_4_4:kmod-lib-crc32c) +$(call KernelPackage/md/Depends,+kmod-lib-raid6 +kmod-lib-xor +!LINUX_3_18:kmod-lib-crc32c) TITLE:=RAID Level 456 Driver KCONFIG:= \ CONFIG_ASYNC_CORE \ diff --git a/package/kernel/linux/modules/can.mk b/package/kernel/linux/modules/can.mk index 5529fe02e0..925de4d8a5 100644 --- a/package/kernel/linux/modules/can.mk +++ b/package/kernel/linux/modules/can.mk @@ -47,22 +47,6 @@ define AddDepends/can endef -define KernelPackage/can-raw - TITLE:=Raw CAN Protcol - KCONFIG:=CONFIG_CAN_RAW - FILES:=$(LINUX_DIR)/net/can/can-raw.ko - AUTOLOAD:=$(call AutoProbe,can-raw) - $(call AddDepends/can) -endef - -define KernelPackage/can-raw/description - The raw CAN protocol option offers access to the CAN bus via - the BSD socket API. -endef - -$(eval $(call KernelPackage,can-raw)) - - define KernelPackage/can-bcm TITLE:=Broadcast Manager CAN Protcol KCONFIG:=CONFIG_CAN_BCM @@ -80,6 +64,74 @@ endef $(eval $(call KernelPackage,can-bcm)) +define KernelPackage/can-c-can + TITLE:=BOSCH C_CAN/D_CAN drivers + KCONFIG:=CONFIG_CAN_C_CAN + FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can.ko + AUTOLOAD:=$(call AutoProbe,c_can) + $(call AddDepends/can) +endef + +define KernelPackage/can-c-can/description + This driver adds generic support for the C_CAN/D_CAN chips. +endef + +$(eval $(call KernelPackage,can-c-can)) + + +define KernelPackage/can-c-can-pci + TITLE:=PCI Bus based BOSCH C_CAN/D_CAN driver + KCONFIG:=CONFIG_CAN_C_CAN_PCI + DEPENDS:=kmod-can-c-can @PCI_SUPPORT + FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can_pci.ko + AUTOLOAD:=$(call AutoProbe,c_can_pci) + $(call AddDepends/can) +endef + +define KernelPackage/can-c-can-pci/description + This driver adds support for the C_CAN/D_CAN chips connected + to the PCI bus. +endef + +$(eval $(call KernelPackage,can-c-can-pci)) + + +define KernelPackage/can-c-can-platform + TITLE:=Platform Bus based BOSCH C_CAN/D_CAN driver + KCONFIG:=CONFIG_CAN_C_CAN_PLATFORM + DEPENDS:=kmod-can-c-can +!LINUX_3_18:kmod-regmap + FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can_platform.ko + AUTOLOAD:=$(call AutoProbe,c_can_platform) + $(call AddDepends/can) +endef + +define KernelPackage/can-c-can-platform/description + This driver adds support for the C_CAN/D_CAN chips connected + to the "platform bus" (Linux abstraction for directly to the + processor attached devices) which can be found on various + boards from ST Microelectronics (http://www.st.com) like the + SPEAr1310 and SPEAr320 evaluation boards & TI (www.ti.com) + boards like am335x, dm814x, dm813x and dm811x. +endef + +$(eval $(call KernelPackage,can-c-can-platform)) + + +define KernelPackage/can-flexcan + TITLE:=Support for Freescale FLEXCAN based chips + KCONFIG:=CONFIG_CAN_FLEXCAN + FILES:=$(LINUX_DIR)/drivers/net/can/flexcan.ko + AUTOLOAD:=$(call AutoProbe,flexcan) + $(call AddDepends/can,@TARGET_imx6) +endef + +define KernelPackage/can-flexcan/description + Freescale FLEXCAN CAN bus controller implementation. +endef + +$(eval $(call KernelPackage,can-flexcan)) + + define KernelPackage/can-gw TITLE:=CAN Gateway/Router KCONFIG:=CONFIG_CAN_GW @@ -95,20 +147,20 @@ endef $(eval $(call KernelPackage,can-gw)) -define KernelPackage/can-vcan - TITLE:=Virtual Local CAN Interface (vcan) - KCONFIG:=CONFIG_CAN_VCAN - FILES:=$(LINUX_DIR)/drivers/net/can/vcan.ko - AUTOLOAD:=$(call AutoProbe,vcan) +define KernelPackage/can-raw + TITLE:=Raw CAN Protcol + KCONFIG:=CONFIG_CAN_RAW + FILES:=$(LINUX_DIR)/net/can/can-raw.ko + AUTOLOAD:=$(call AutoProbe,can-raw) $(call AddDepends/can) endef -define KernelPackage/can-vcan/description - Similar to the network loopback devices, vcan offers a - virtual local CAN interface. +define KernelPackage/can-raw/description + The raw CAN protocol option offers access to the CAN bus via + the BSD socket API. endef -$(eval $(call KernelPackage,can-vcan)) +$(eval $(call KernelPackage,can-raw)) define KernelPackage/can-slcan @@ -128,19 +180,20 @@ endef $(eval $(call KernelPackage,can-slcan)) -define KernelPackage/can-flexcan - TITLE:=Support for Freescale FLEXCAN based chips - KCONFIG:=CONFIG_CAN_FLEXCAN - FILES:=$(LINUX_DIR)/drivers/net/can/flexcan.ko - AUTOLOAD:=$(call AutoProbe,flexcan) - $(call AddDepends/can,@TARGET_imx6) +define KernelPackage/can-usb-8dev + TITLE:=8 devices USB2CAN interface + KCONFIG:=CONFIG_CAN_8DEV_USB + FILES:=$(LINUX_DIR)/drivers/net/can/usb/usb_8dev.ko + AUTOLOAD:=$(call AutoProbe,usb_8dev) + $(call AddDepends/can,+kmod-usb-core) endef -define KernelPackage/can-flexcan/description - Freescale FLEXCAN CAN bus controller implementation. +define KernelPackage/can-usb-8dev/description + This driver supports the USB2CAN interface + from 8 devices (http://www.8devices.com). endef -$(eval $(call KernelPackage,can-flexcan)) +$(eval $(call KernelPackage,can-usb-8dev)) define KernelPackage/can-usb-ems @@ -207,71 +260,19 @@ endef $(eval $(call KernelPackage,can-usb-peak)) -define KernelPackage/can-usb-8dev - TITLE:=8 devices USB2CAN interface - KCONFIG:=CONFIG_CAN_8DEV_USB - FILES:=$(LINUX_DIR)/drivers/net/can/usb/usb_8dev.ko - AUTOLOAD:=$(call AutoProbe,usb_8dev) - $(call AddDepends/can,+kmod-usb-core) -endef - -define KernelPackage/can-usb-8dev/description - This driver supports the USB2CAN interface - from 8 devices (http://www.8devices.com). -endef - -$(eval $(call KernelPackage,can-usb-8dev)) - - -define KernelPackage/can-c-can - TITLE:=BOSCH C_CAN/D_CAN drivers - KCONFIG:=CONFIG_CAN_C_CAN - FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can.ko - AUTOLOAD:=$(call AutoProbe,c_can) - $(call AddDepends/can) -endef - -define KernelPackage/can-c-can/description - This driver adds generic support for the C_CAN/D_CAN chips. -endef - -$(eval $(call KernelPackage,can-c-can)) - - -define KernelPackage/can-c-can-platform - TITLE:=Platform Bus based BOSCH C_CAN/D_CAN driver - KCONFIG:=CONFIG_CAN_C_CAN_PLATFORM - DEPENDS:=kmod-can-c-can +!LINUX_3_18:kmod-regmap - FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can_platform.ko - AUTOLOAD:=$(call AutoProbe,c_can_platform) +define KernelPackage/can-vcan + TITLE:=Virtual Local CAN Interface (vcan) + KCONFIG:=CONFIG_CAN_VCAN + FILES:=$(LINUX_DIR)/drivers/net/can/vcan.ko + AUTOLOAD:=$(call AutoProbe,vcan) $(call AddDepends/can) endef -define KernelPackage/can-c-can-platform/description - This driver adds support for the C_CAN/D_CAN chips connected - to the "platform bus" (Linux abstraction for directly to the - processor attached devices) which can be found on various - boards from ST Microelectronics (http://www.st.com) like the - SPEAr1310 and SPEAr320 evaluation boards & TI (www.ti.com) - boards like am335x, dm814x, dm813x and dm811x. -endef - -$(eval $(call KernelPackage,can-c-can-platform)) - - -define KernelPackage/can-c-can-pci - TITLE:=PCI Bus based BOSCH C_CAN/D_CAN driver - KCONFIG:=CONFIG_CAN_C_CAN_PCI - DEPENDS:=kmod-can-c-can @PCI_SUPPORT - FILES:=$(LINUX_DIR)/drivers/net/can/c_can/c_can_pci.ko - AUTOLOAD:=$(call AutoProbe,c_can_pci) - $(call AddDepends/can) +define KernelPackage/can-vcan/description + Similar to the network loopback devices, vcan offers a + virtual local CAN interface. endef -define KernelPackage/can-c-can-pci/description - This driver adds support for the C_CAN/D_CAN chips connected - to the PCI bus. -endef +$(eval $(call KernelPackage,can-vcan)) -$(eval $(call KernelPackage,can-c-can-pci)) diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk index a3092562c5..2ea2d2c0e7 100644 --- a/package/kernel/linux/modules/crypto.mk +++ b/package/kernel/linux/modules/crypto.mk @@ -20,6 +20,19 @@ define AddDepends/crypto DEPENDS+= $(1) endef + +define KernelPackage/crypto-acompress + TITLE:=Asynchronous Compression operations + HIDDEN:=1 + KCONFIG:=CONFIG_CRYPTO_ACOMP2 + FILES:=$(LINUX_DIR)/crypto/crypto_acompress.ko + AUTOLOAD:=$(call AutoLoad,09,crypto_acompress) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-acompress)) + + define KernelPackage/crypto-aead TITLE:=CryptoAPI AEAD support KCONFIG:= \ @@ -27,111 +40,155 @@ define KernelPackage/crypto-aead CONFIG_CRYPTO_AEAD2 FILES:=$(LINUX_DIR)/crypto/aead.ko AUTOLOAD:=$(call AutoLoad,09,aead,1) - $(call AddDepends/crypto, +LINUX_4_4:kmod-crypto-null) + $(call AddDepends/crypto, +!LINUX_3_18:kmod-crypto-null) endef $(eval $(call KernelPackage,crypto-aead)) -define KernelPackage/crypto-hash - TITLE:=CryptoAPI hash support - KCONFIG:=CONFIG_CRYPTO_HASH - FILES:=$(LINUX_DIR)/crypto/crypto_hash.ko - AUTOLOAD:=$(call AutoLoad,02,crypto_hash,1) +define KernelPackage/crypto-authenc + TITLE:=Combined mode wrapper for IPsec + DEPENDS:=+kmod-crypto-manager +!LINUX_3_18:kmod-crypto-null + KCONFIG:=CONFIG_CRYPTO_AUTHENC + FILES:=$(LINUX_DIR)/crypto/authenc.ko + AUTOLOAD:=$(call AutoLoad,09,authenc) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-hash)) +$(eval $(call KernelPackage,crypto-authenc)) -define KernelPackage/crypto-manager - TITLE:=CryptoAPI algorithm manager - DEPENDS:=+kmod-crypto-aead +kmod-crypto-hash +kmod-crypto-pcompress - KCONFIG:= \ - CONFIG_CRYPTO_MANAGER \ - CONFIG_CRYPTO_MANAGER2 - FILES:=$(LINUX_DIR)/crypto/cryptomgr.ko - AUTOLOAD:=$(call AutoLoad,09,cryptomgr,1) +define KernelPackage/crypto-cbc + TITLE:=Cipher Block Chaining CryptoAPI module + DEPENDS:=+kmod-crypto-manager + KCONFIG:=CONFIG_CRYPTO_CBC + FILES:=$(LINUX_DIR)/crypto/cbc.ko + AUTOLOAD:=$(call AutoLoad,09,cbc) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-manager)) +$(eval $(call KernelPackage,crypto-cbc)) -define KernelPackage/crypto-pcompress - TITLE:=CryptoAPI Partial (de)compression operations - KCONFIG:= \ - CONFIG_CRYPTO_PCOMP=y \ - CONFIG_CRYPTO_PCOMP2 - FILES:=$(LINUX_DIR)/crypto/pcompress.ko - AUTOLOAD:=$(call AutoLoad,09,pcompress) +define KernelPackage/crypto-ccm + TITLE:=Support for Counter with CBC MAC (CCM) + DEPENDS:=+kmod-crypto-ctr +kmod-crypto-aead + KCONFIG:=CONFIG_CRYPTO_CCM + FILES:=$(LINUX_DIR)/crypto/ccm.ko + AUTOLOAD:=$(call AutoLoad,09,ccm) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-ccm)) + + +define KernelPackage/crypto-cmac + TITLE:=Support for Cipher-based Message Authentication Code (CMAC) + DEPENDS:=+kmod-crypto-hash + KCONFIG:=CONFIG_CRYPTO_CMAC + FILES:=$(LINUX_DIR)/crypto/cmac.ko + AUTOLOAD:=$(call AutoLoad,09,cmac) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-pcompress)) +$(eval $(call KernelPackage,crypto-cmac)) -define KernelPackage/crypto-user - TITLE:=CryptoAPI userspace interface - DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager - KCONFIG:= \ - CONFIG_CRYPTO_USER_API \ - CONFIG_CRYPTO_USER_API_HASH \ - CONFIG_CRYPTO_USER_API_SKCIPHER - FILES:= \ - $(LINUX_DIR)/crypto/af_alg.ko \ - $(LINUX_DIR)/crypto/algif_hash.ko \ - $(LINUX_DIR)/crypto/algif_skcipher.ko - AUTOLOAD:=$(call AutoLoad,09,af_alg algif_hash algif_skcipher) +define KernelPackage/crypto-crc32 + TITLE:=CRC32 CRC module + DEPENDS:=+kmod-crypto-hash + KCONFIG:=CONFIG_CRYPTO_CRC32 + HIDDEN:=1 + FILES:=$(LINUX_DIR)/crypto/crc32_generic.ko@ge4.9 + AUTOLOAD:=$(call AutoLoad,04,crc32_generic@ge4.9,1) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-user)) +$(eval $(call KernelPackage,crypto-crc32)) -define KernelPackage/crypto-wq - TITLE:=CryptoAPI work queue handling - KCONFIG:=CONFIG_CRYPTO_WORKQUEUE - FILES:=$(LINUX_DIR)/crypto/crypto_wq.ko - AUTOLOAD:=$(call AutoLoad,09,crypto_wq) +define KernelPackage/crypto-crc32c + TITLE:=CRC32c CRC module + DEPENDS:=+kmod-crypto-hash + KCONFIG:=CONFIG_CRYPTO_CRC32C + FILES:=$(LINUX_DIR)/crypto/crc32c_generic.ko + AUTOLOAD:=$(call AutoLoad,04,crc32c_generic,1) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-wq)) -define KernelPackage/crypto-rng - TITLE:=CryptoAPI random number generation - DEPENDS:=+kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha256 - KCONFIG:= \ - CONFIG_CRYPTO_DRBG \ - CONFIG_CRYPTO_DRBG_HMAC=y \ - CONFIG_CRYPTO_DRBG_HASH=n \ - CONFIG_CRYPTO_DRBG_MENU \ - CONFIG_CRYPTO_JITTERENTROPY \ - CONFIG_CRYPTO_RNG2 - FILES:= \ - $(LINUX_DIR)/crypto/drbg.ko@ge4.2 \ - $(LINUX_DIR)/crypto/jitterentropy_rng.ko@ge4.2 \ - $(LINUX_DIR)/crypto/krng.ko@lt4.2 \ - $(LINUX_DIR)/crypto/rng.ko - AUTOLOAD:=$(call AutoLoad,09,drbg@ge4.2 jitterentropy_rng@ge4.2 krng@lt4.2 rng) +$(eval $(call KernelPackage,crypto-crc32c)) + + +define KernelPackage/crypto-ctr + TITLE:=Counter Mode CryptoAPI module + DEPENDS:=+kmod-crypto-manager +kmod-crypto-seqiv +kmod-crypto-iv + KCONFIG:=CONFIG_CRYPTO_CTR + FILES:=$(LINUX_DIR)/crypto/ctr.ko + AUTOLOAD:=$(call AutoLoad,09,ctr) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-rng)) +$(eval $(call KernelPackage,crypto-ctr)) -define KernelPackage/crypto-iv - TITLE:=CryptoAPI initialization vectors - DEPENDS:=+kmod-crypto-manager +kmod-crypto-rng +kmod-crypto-wq - KCONFIG:= CONFIG_CRYPTO_BLKCIPHER2 +define KernelPackage/crypto-cts + TITLE:=Cipher Text Stealing CryptoAPI module + DEPENDS:=+kmod-crypto-manager + KCONFIG:=CONFIG_CRYPTO_CTS + FILES:=$(LINUX_DIR)/crypto/cts.ko + AUTOLOAD:=$(call AutoLoad,09,cts) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-cts)) + + +define KernelPackage/crypto-deflate + TITLE:=Deflate compression CryptoAPI module + DEPENDS:=+kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +LINUX_4_14:kmod-crypto-acompress + KCONFIG:=CONFIG_CRYPTO_DEFLATE + FILES:=$(LINUX_DIR)/crypto/deflate.ko + AUTOLOAD:=$(call AutoLoad,09,deflate) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-deflate)) + + +define KernelPackage/crypto-des + TITLE:=DES/3DES cipher CryptoAPI module + KCONFIG:=CONFIG_CRYPTO_DES + FILES:=$(LINUX_DIR)/crypto/des_generic.ko + AUTOLOAD:=$(call AutoLoad,09,des_generic) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-des)) + + +define KernelPackage/crypto-ecb + TITLE:=Electronic CodeBook CryptoAPI module + DEPENDS:=+kmod-crypto-manager + KCONFIG:=CONFIG_CRYPTO_ECB + FILES:=$(LINUX_DIR)/crypto/ecb.ko + AUTOLOAD:=$(call AutoLoad,09,ecb) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-ecb)) + + +define KernelPackage/crypto-ecdh + TITLE:=ECDH algorithm + DEPENDS:=@!(LINUX_3_18||LINUX_4_4) +kmod-crypto-kpp + KCONFIG:= CONFIG_CRYPTO_ECDH FILES:= \ - $(LINUX_DIR)/crypto/eseqiv.ko \ - $(LINUX_DIR)/crypto/chainiv.ko - AUTOLOAD:=$(call AutoLoad,10,eseqiv chainiv) + $(LINUX_DIR)/crypto/ecdh_generic.ko + AUTOLOAD:=$(call AutoLoad,10,ecdh_generic) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-iv)) +$(eval $(call KernelPackage,crypto-ecdh)) define KernelPackage/crypto-echainiv @@ -146,61 +203,84 @@ endef $(eval $(call KernelPackage,crypto-echainiv)) -define KernelPackage/crypto-seqiv - TITLE:=CryptoAPI Sequence Number IV Generator - DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng - KCONFIG:=CONFIG_CRYPTO_SEQIV - FILES:=$(LINUX_DIR)/crypto/seqiv.ko - AUTOLOAD:=$(call AutoLoad,09,seqiv) +define KernelPackage/crypto-fcrypt + TITLE:=FCRYPT cipher CryptoAPI module + KCONFIG:=CONFIG_CRYPTO_FCRYPT + FILES:=$(LINUX_DIR)/crypto/fcrypt.ko + AUTOLOAD:=$(call AutoLoad,09,fcrypt) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-seqiv)) +$(eval $(call KernelPackage,crypto-fcrypt)) -define KernelPackage/crypto-hw-talitos - TITLE:=Freescale integrated security engine (SEC) driver - DEPENDS:=+kmod-crypto-manager +kmod-crypto-hash +kmod-random-core +kmod-crypto-authenc - KCONFIG:= \ - CONFIG_CRYPTO_HW=y \ - CONFIG_CRYPTO_DEV_TALITOS \ - CONFIG_CRYPTO_DEV_TALITOS1=y \ - CONFIG_CRYPTO_DEV_TALITOS2=y - FILES:= \ - $(LINUX_DIR)/drivers/crypto/talitos.ko - AUTOLOAD:=$(call AutoLoad,09,talitos) +define KernelPackage/crypto-gcm + TITLE:=GCM/GMAC CryptoAPI module + DEPENDS:=+kmod-crypto-ctr +kmod-crypto-ghash +kmod-crypto-null + KCONFIG:=CONFIG_CRYPTO_GCM + FILES:=$(LINUX_DIR)/crypto/gcm.ko + AUTOLOAD:=$(call AutoLoad,09,gcm) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-hw-talitos)) +$(eval $(call KernelPackage,crypto-gcm)) -define KernelPackage/crypto-hw-padlock - TITLE:=VIA PadLock ACE with AES/SHA hw crypto module - DEPENDS:=+kmod-crypto-manager - KCONFIG:= \ - CONFIG_CRYPTO_HW=y \ - CONFIG_CRYPTO_DEV_PADLOCK \ - CONFIG_CRYPTO_DEV_PADLOCK_AES \ - CONFIG_CRYPTO_DEV_PADLOCK_SHA - FILES:= \ - $(LINUX_DIR)/drivers/crypto/padlock-aes.ko \ - $(LINUX_DIR)/drivers/crypto/padlock-sha.ko - AUTOLOAD:=$(call AutoLoad,09,padlock-aes padlock-sha) +define KernelPackage/crypto-gf128 + TITLE:=GF(2^128) multiplication functions CryptoAPI module + KCONFIG:=CONFIG_CRYPTO_GF128MUL + FILES:=$(LINUX_DIR)/crypto/gf128mul.ko + AUTOLOAD:=$(call AutoLoad,09,gf128mul) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-hw-padlock)) +$(eval $(call KernelPackage,crypto-gf128)) + + +define KernelPackage/crypto-ghash + TITLE:=GHASH digest CryptoAPI module + DEPENDS:=+kmod-crypto-gf128 +kmod-crypto-hash + KCONFIG:=CONFIG_CRYPTO_GHASH + FILES:=$(LINUX_DIR)/crypto/ghash-generic.ko + AUTOLOAD:=$(call AutoLoad,09,ghash-generic) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-ghash)) + + +define KernelPackage/crypto-hash + TITLE:=CryptoAPI hash support + KCONFIG:=CONFIG_CRYPTO_HASH + FILES:=$(LINUX_DIR)/crypto/crypto_hash.ko + AUTOLOAD:=$(call AutoLoad,02,crypto_hash,1) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-hash)) + + +define KernelPackage/crypto-hmac + TITLE:=HMAC digest CryptoAPI module + DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager + KCONFIG:=CONFIG_CRYPTO_HMAC + FILES:=$(LINUX_DIR)/crypto/hmac.ko + AUTOLOAD:=$(call AutoLoad,09,hmac) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-hmac)) define KernelPackage/crypto-hw-ccp TITLE:=AMD Cryptographic Coprocessor - DEPENDS:=+kmod-crypto-authenc +kmod-crypto-hash +kmod-crypto-manager +kmod-random-core + DEPENDS:=+kmod-crypto-authenc +kmod-crypto-hash +kmod-crypto-manager +kmod-random-core +kmod-crypto-sha1 +kmod-crypto-sha256 +LINUX_4_14:kmod-crypto-rsa KCONFIG:= \ CONFIG_CRYPTO_HW=y \ CONFIG_CRYPTO_DEV_CCP=y \ CONFIG_CRYPTO_DEV_CCP_CRYPTO \ - CONFIG_CRYPTO_DEV_CCP_DD + CONFIG_CRYPTO_DEV_CCP_DD \ + CONFIG_CRYPTO_DEV_SP_CCP=y FILES:= \ $(LINUX_DIR)/drivers/crypto/ccp/ccp.ko \ $(LINUX_DIR)/drivers/crypto/ccp/ccp-crypto.ko @@ -240,175 +320,80 @@ endef $(eval $(call KernelPackage,crypto-hw-hifn-795x)) -define KernelPackage/crypto-authenc - TITLE:=Combined mode wrapper for IPsec - DEPENDS:=+kmod-crypto-manager +LINUX_4_4:kmod-crypto-null - KCONFIG:=CONFIG_CRYPTO_AUTHENC - FILES:=$(LINUX_DIR)/crypto/authenc.ko - AUTOLOAD:=$(call AutoLoad,09,authenc) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-authenc)) - -define KernelPackage/crypto-cbc - TITLE:=Cipher Block Chaining CryptoAPI module - DEPENDS:=+kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_CBC - FILES:=$(LINUX_DIR)/crypto/cbc.ko - AUTOLOAD:=$(call AutoLoad,09,cbc) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-cbc)) - -define KernelPackage/crypto-ctr - TITLE:=Counter Mode CryptoAPI module - DEPENDS:=+kmod-crypto-manager +kmod-crypto-seqiv +kmod-crypto-iv - KCONFIG:=CONFIG_CRYPTO_CTR - FILES:=$(LINUX_DIR)/crypto/ctr.ko - AUTOLOAD:=$(call AutoLoad,09,ctr) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-ctr)) - -define KernelPackage/crypto-ccm - TITLE:=Support for Counter with CBC MAC (CCM) - DEPENDS:=+kmod-crypto-ctr +kmod-crypto-aead - KCONFIG:=CONFIG_CRYPTO_CCM - FILES:=$(LINUX_DIR)/crypto/ccm.ko - AUTOLOAD:=$(call AutoLoad,09,ccm) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-ccm)) - -define KernelPackage/crypto-pcbc - TITLE:=Propagating Cipher Block Chaining CryptoAPI module - DEPENDS:=+kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_PCBC - FILES:=$(LINUX_DIR)/crypto/pcbc.ko - AUTOLOAD:=$(call AutoLoad,09,pcbc) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-pcbc)) - -define KernelPackage/crypto-crc32c - TITLE:=CRC32c CRC module - DEPENDS:=+kmod-crypto-hash - KCONFIG:=CONFIG_CRYPTO_CRC32C - FILES:=$(LINUX_DIR)/crypto/crc32c_generic.ko - AUTOLOAD:=$(call AutoLoad,04,crc32c_generic,1) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-crc32c)) - - -define KernelPackage/crypto-des - TITLE:=DES/3DES cipher CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_DES - FILES:=$(LINUX_DIR)/crypto/des_generic.ko - AUTOLOAD:=$(call AutoLoad,09,des_generic) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-des)) - - -define KernelPackage/crypto-deflate - TITLE:=Deflate compression CryptoAPI module - DEPENDS:=+kmod-lib-zlib-inflate +kmod-lib-zlib-deflate - KCONFIG:=CONFIG_CRYPTO_DEFLATE - FILES:=$(LINUX_DIR)/crypto/deflate.ko - AUTOLOAD:=$(call AutoLoad,09,deflate) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-deflate)) - - -define KernelPackage/crypto-fcrypt - TITLE:=FCRYPT cipher CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_FCRYPT - FILES:=$(LINUX_DIR)/crypto/fcrypt.ko - AUTOLOAD:=$(call AutoLoad,09,fcrypt) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-fcrypt)) - -define KernelPackage/crypto-ecb - TITLE:=Electronic CodeBook CryptoAPI module +define KernelPackage/crypto-hw-padlock + TITLE:=VIA PadLock ACE with AES/SHA hw crypto module DEPENDS:=+kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_ECB - FILES:=$(LINUX_DIR)/crypto/ecb.ko - AUTOLOAD:=$(call AutoLoad,09,ecb) - $(call AddDepends/crypto) -endef - -$(eval $(call KernelPackage,crypto-ecb)) - - -define KernelPackage/crypto-hmac - TITLE:=HMAC digest CryptoAPI module - DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager - KCONFIG:=CONFIG_CRYPTO_HMAC - FILES:=$(LINUX_DIR)/crypto/hmac.ko - AUTOLOAD:=$(call AutoLoad,09,hmac) + KCONFIG:= \ + CONFIG_CRYPTO_HW=y \ + CONFIG_CRYPTO_DEV_PADLOCK \ + CONFIG_CRYPTO_DEV_PADLOCK_AES \ + CONFIG_CRYPTO_DEV_PADLOCK_SHA + FILES:= \ + $(LINUX_DIR)/drivers/crypto/padlock-aes.ko \ + $(LINUX_DIR)/drivers/crypto/padlock-sha.ko + AUTOLOAD:=$(call AutoLoad,09,padlock-aes padlock-sha) $(call AddDepends/crypto) endef - -$(eval $(call KernelPackage,crypto-hmac)) - - -define KernelPackage/crypto-cmac - TITLE:=Support for Cipher-based Message Authentication Code (CMAC) - DEPENDS:=+kmod-crypto-hash - KCONFIG:=CONFIG_CRYPTO_CMAC - FILES:=$(LINUX_DIR)/crypto/cmac.ko - AUTOLOAD:=$(call AutoLoad,09,cmac) + +$(eval $(call KernelPackage,crypto-hw-padlock)) + + +define KernelPackage/crypto-hw-talitos + TITLE:=Freescale integrated security engine (SEC) driver + DEPENDS:=+kmod-crypto-manager +kmod-crypto-hash +kmod-random-core +kmod-crypto-authenc +kmod-crypto-des + KCONFIG:= \ + CONFIG_CRYPTO_HW=y \ + CONFIG_CRYPTO_DEV_TALITOS \ + CONFIG_CRYPTO_DEV_TALITOS1=y \ + CONFIG_CRYPTO_DEV_TALITOS2=y + FILES:= \ + $(LINUX_DIR)/drivers/crypto/talitos.ko + AUTOLOAD:=$(call AutoLoad,09,talitos) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-cmac)) +$(eval $(call KernelPackage,crypto-hw-talitos)) -define KernelPackage/crypto-gcm - TITLE:=GCM/GMAC CryptoAPI module - DEPENDS:=+kmod-crypto-ctr +kmod-crypto-ghash +kmod-crypto-null - KCONFIG:=CONFIG_CRYPTO_GCM - FILES:=$(LINUX_DIR)/crypto/gcm.ko - AUTOLOAD:=$(call AutoLoad,09,gcm) +define KernelPackage/crypto-iv + TITLE:=CryptoAPI initialization vectors + DEPENDS:=+kmod-crypto-manager +kmod-crypto-rng +kmod-crypto-wq + KCONFIG:= CONFIG_CRYPTO_BLKCIPHER2 + HIDDEN:=1 + FILES:= \ + $(LINUX_DIR)/crypto/eseqiv.ko@lt4.9 \ + $(LINUX_DIR)/crypto/chainiv.ko@lt4.9 + AUTOLOAD:=$(call AutoLoad,10,eseqiv chainiv) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-gcm)) +$(eval $(call KernelPackage,crypto-iv)) -define KernelPackage/crypto-gf128 - TITLE:=GF(2^128) multiplication functions CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_GF128MUL - FILES:=$(LINUX_DIR)/crypto/gf128mul.ko - AUTOLOAD:=$(call AutoLoad,09,gf128mul) +define KernelPackage/crypto-kpp + TITLE:=Key-agreement Protocol Primitives + KCONFIG:=CONFIG_CRYPTO_KPP + HIDDEN:=1 + FILES:=$(LINUX_DIR)/crypto/kpp.ko + AUTOLOAD:=$(call AutoLoad,09,kpp) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-gf128)) +$(eval $(call KernelPackage,crypto-kpp)) -define KernelPackage/crypto-ghash - TITLE:=GHASH digest CryptoAPI module - DEPENDS:=+kmod-crypto-gf128 +kmod-crypto-hash - KCONFIG:=CONFIG_CRYPTO_GHASH - FILES:=$(LINUX_DIR)/crypto/ghash-generic.ko - AUTOLOAD:=$(call AutoLoad,09,ghash-generic) +define KernelPackage/crypto-manager + TITLE:=CryptoAPI algorithm manager + DEPENDS:=+kmod-crypto-aead +kmod-crypto-hash +kmod-crypto-pcompress + KCONFIG:= \ + CONFIG_CRYPTO_MANAGER \ + CONFIG_CRYPTO_MANAGER2 + FILES:=$(LINUX_DIR)/crypto/cryptomgr.ko + AUTOLOAD:=$(call AutoLoad,09,cryptomgr,1) $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-ghash)) +$(eval $(call KernelPackage,crypto-manager)) define KernelPackage/crypto-md4 @@ -454,6 +439,138 @@ endef $(eval $(call KernelPackage,crypto-michael-mic)) +define KernelPackage/crypto-misc + TITLE:=Other CryptoAPI modules + DEPENDS:=+kmod-crypto-manager + KCONFIG:= \ + CONFIG_CRYPTO_ANUBIS \ + CONFIG_CRYPTO_BLOWFISH \ + CONFIG_CRYPTO_CAMELLIA \ + CONFIG_CRYPTO_CAST5 \ + CONFIG_CRYPTO_CAST6 \ + CONFIG_CRYPTO_FCRYPT \ + CONFIG_CRYPTO_KHAZAD \ + CONFIG_CRYPTO_SERPENT \ + CONFIG_CRYPTO_TEA \ + CONFIG_CRYPTO_TGR192 \ + CONFIG_CRYPTO_TWOFISH \ + CONFIG_CRYPTO_TWOFISH_COMMON \ + CONFIG_CRYPTO_TWOFISH_586 \ + CONFIG_CRYPTO_WP512 + FILES:= \ + $(LINUX_DIR)/crypto/anubis.ko \ + $(LINUX_DIR)/crypto/camellia_generic.ko \ + $(LINUX_DIR)/crypto/cast_common.ko \ + $(LINUX_DIR)/crypto/cast5_generic.ko \ + $(LINUX_DIR)/crypto/cast6_generic.ko \ + $(LINUX_DIR)/crypto/khazad.ko \ + $(LINUX_DIR)/crypto/tea.ko \ + $(LINUX_DIR)/crypto/tgr192.ko \ + $(LINUX_DIR)/crypto/twofish_common.ko \ + $(LINUX_DIR)/crypto/wp512.ko \ + $(LINUX_DIR)/crypto/twofish_generic.ko \ + $(LINUX_DIR)/crypto/blowfish_common.ko \ + $(LINUX_DIR)/crypto/blowfish_generic.ko \ + $(LINUX_DIR)/crypto/serpent_generic.ko + $(call AddDepends/crypto) +endef + +ifndef CONFIG_TARGET_x86_64 + define KernelPackage/crypto-misc/x86 + FILES+=$(LINUX_DIR)/arch/x86/crypto/twofish-i586.ko + endef +endif + +$(eval $(call KernelPackage,crypto-misc)) + + +define KernelPackage/crypto-null + TITLE:=Null CryptoAPI module + KCONFIG:=CONFIG_CRYPTO_NULL + FILES:=$(LINUX_DIR)/crypto/crypto_null.ko + AUTOLOAD:=$(call AutoLoad,09,crypto_null) + $(call AddDepends/crypto, +kmod-crypto-hash) +endef + +$(eval $(call KernelPackage,crypto-null)) + + +define KernelPackage/crypto-pcbc + TITLE:=Propagating Cipher Block Chaining CryptoAPI module + DEPENDS:=+kmod-crypto-manager + KCONFIG:=CONFIG_CRYPTO_PCBC + FILES:=$(LINUX_DIR)/crypto/pcbc.ko + AUTOLOAD:=$(call AutoLoad,09,pcbc) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-pcbc)) + + +define KernelPackage/crypto-pcompress + TITLE:=CryptoAPI Partial (de)compression operations + KCONFIG:= \ + CONFIG_CRYPTO_PCOMP=y \ + CONFIG_CRYPTO_PCOMP2 + FILES:=$(LINUX_DIR)/crypto/pcompress.ko + AUTOLOAD:=$(call AutoLoad,09,pcompress) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-pcompress)) + + +define KernelPackage/crypto-rsa + TITLE:=RSA algorithm + DEPENDS:=@!LINUX_3_18 +kmod-crypto-manager + KCONFIG:= CONFIG_CRYPTO_RSA + HIDDEN:=1 + FILES:= \ + $(LINUX_DIR)/lib/asn1_decoder.ko \ + $(LINUX_DIR)/lib/mpi/mpi.ko \ + $(LINUX_DIR)/crypto/akcipher.ko \ + $(LINUX_DIR)/crypto/rsa_generic.ko + AUTOLOAD:=$(call AutoLoad,10,rsa_generic) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-rsa)) + + +define KernelPackage/crypto-rng + TITLE:=CryptoAPI random number generation + DEPENDS:=+kmod-crypto-hash +kmod-crypto-hmac +kmod-crypto-sha256 + KCONFIG:= \ + CONFIG_CRYPTO_DRBG \ + CONFIG_CRYPTO_DRBG_HMAC=y \ + CONFIG_CRYPTO_DRBG_HASH=n \ + CONFIG_CRYPTO_DRBG_MENU \ + CONFIG_CRYPTO_JITTERENTROPY \ + CONFIG_CRYPTO_RNG2 + FILES:= \ + $(LINUX_DIR)/crypto/drbg.ko@ge4.2 \ + $(LINUX_DIR)/crypto/jitterentropy_rng.ko@ge4.2 \ + $(LINUX_DIR)/crypto/krng.ko@lt4.2 \ + $(LINUX_DIR)/crypto/rng.ko + AUTOLOAD:=$(call AutoLoad,09,drbg@ge4.2 jitterentropy_rng@ge4.2 krng@lt4.2 rng) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-rng)) + + +define KernelPackage/crypto-seqiv + TITLE:=CryptoAPI Sequence Number IV Generator + DEPENDS:=+kmod-crypto-aead +kmod-crypto-rng + KCONFIG:=CONFIG_CRYPTO_SEQIV + FILES:=$(LINUX_DIR)/crypto/seqiv.ko + AUTOLOAD:=$(call AutoLoad,09,seqiv) + $(call AddDepends/crypto) +endef + +$(eval $(call KernelPackage,crypto-seqiv)) + + define KernelPackage/crypto-sha1 TITLE:=SHA1 digest CryptoAPI module DEPENDS:=+kmod-crypto-hash @@ -529,70 +646,42 @@ endef $(eval $(call KernelPackage,crypto-sha512)) -define KernelPackage/crypto-misc - TITLE:=Other CryptoAPI modules - DEPENDS:=+kmod-crypto-manager - KCONFIG:= \ - CONFIG_CRYPTO_ANUBIS \ - CONFIG_CRYPTO_BLOWFISH \ - CONFIG_CRYPTO_CAMELLIA \ - CONFIG_CRYPTO_CAST5 \ - CONFIG_CRYPTO_CAST6 \ - CONFIG_CRYPTO_FCRYPT \ - CONFIG_CRYPTO_KHAZAD \ - CONFIG_CRYPTO_SERPENT \ - CONFIG_CRYPTO_TEA \ - CONFIG_CRYPTO_TGR192 \ - CONFIG_CRYPTO_TWOFISH \ - CONFIG_CRYPTO_TWOFISH_COMMON \ - CONFIG_CRYPTO_TWOFISH_586 \ - CONFIG_CRYPTO_WP512 - FILES:= \ - $(LINUX_DIR)/crypto/anubis.ko \ - $(LINUX_DIR)/crypto/camellia_generic.ko \ - $(LINUX_DIR)/crypto/cast_common.ko \ - $(LINUX_DIR)/crypto/cast5_generic.ko \ - $(LINUX_DIR)/crypto/cast6_generic.ko \ - $(LINUX_DIR)/crypto/khazad.ko \ - $(LINUX_DIR)/crypto/tea.ko \ - $(LINUX_DIR)/crypto/tgr192.ko \ - $(LINUX_DIR)/crypto/twofish_common.ko \ - $(LINUX_DIR)/crypto/wp512.ko \ - $(LINUX_DIR)/crypto/twofish_generic.ko \ - $(LINUX_DIR)/crypto/blowfish_common.ko \ - $(LINUX_DIR)/crypto/blowfish_generic.ko \ - $(LINUX_DIR)/crypto/serpent_generic.ko - $(call AddDepends/crypto) +define KernelPackage/crypto-test + TITLE:=Test CryptoAPI module + KCONFIG:=CONFIG_CRYPTO_TEST + FILES:=$(LINUX_DIR)/crypto/tcrypt.ko + $(call AddDepends/crypto,+kmod-crypto-manager) endef -ifndef CONFIG_TARGET_x86_64 - define KernelPackage/crypto-misc/x86 - FILES+=$(LINUX_DIR)/arch/x86/crypto/twofish-i586.ko - endef -endif - -$(eval $(call KernelPackage,crypto-misc)) +$(eval $(call KernelPackage,crypto-test)) -define KernelPackage/crypto-null - TITLE:=Null CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_NULL - FILES:=$(LINUX_DIR)/crypto/crypto_null.ko - AUTOLOAD:=$(call AutoLoad,09,crypto_null) - $(call AddDepends/crypto, +kmod-crypto-hash) +define KernelPackage/crypto-user + TITLE:=CryptoAPI userspace interface + DEPENDS:=+kmod-crypto-hash +kmod-crypto-manager + KCONFIG:= \ + CONFIG_CRYPTO_USER_API \ + CONFIG_CRYPTO_USER_API_HASH \ + CONFIG_CRYPTO_USER_API_SKCIPHER + FILES:= \ + $(LINUX_DIR)/crypto/af_alg.ko \ + $(LINUX_DIR)/crypto/algif_hash.ko \ + $(LINUX_DIR)/crypto/algif_skcipher.ko + AUTOLOAD:=$(call AutoLoad,09,af_alg algif_hash algif_skcipher) + $(call AddDepends/crypto) endef -$(eval $(call KernelPackage,crypto-null)) +$(eval $(call KernelPackage,crypto-user)) -define KernelPackage/crypto-test - TITLE:=Test CryptoAPI module - KCONFIG:=CONFIG_CRYPTO_TEST - FILES:=$(LINUX_DIR)/crypto/tcrypt.ko - $(call AddDepends/crypto,+kmod-crypto-manager) +define KernelPackage/crypto-wq + TITLE:=CryptoAPI work queue handling + KCONFIG:=CONFIG_CRYPTO_WORKQUEUE + FILES:=$(LINUX_DIR)/crypto/crypto_wq.ko + AUTOLOAD:=$(call AutoLoad,09,crypto_wq) + $(call AddDepends/crypto) endef - -$(eval $(call KernelPackage,crypto-test)) +$(eval $(call KernelPackage,crypto-wq)) define KernelPackage/crypto-xts @@ -605,3 +694,4 @@ define KernelPackage/crypto-xts endef $(eval $(call KernelPackage,crypto-xts)) + diff --git a/package/kernel/linux/modules/firewire.mk b/package/kernel/linux/modules/firewire.mk index 18b531a29b..1e2d94272a 100644 --- a/package/kernel/linux/modules/firewire.mk +++ b/package/kernel/linux/modules/firewire.mk @@ -22,6 +22,22 @@ endef $(eval $(call KernelPackage,firewire)) +define KernelPackage/firewire-net + SUBMENU:=$(FIREWIRE_MENU) + TITLE:=Support for IP networking over FireWire + DEPENDS:=kmod-firewire + KCONFIG:=CONFIG_FIREWIRE_NET + FILES:=$(LINUX_DIR)/drivers/firewire/firewire-net.ko + AUTOLOAD:=$(call AutoProbe,firewire-net) +endef + +define KernelPackage/firewire-net/description + Kernel support for IPv4 over FireWire +endef + +$(eval $(call KernelPackage,firewire-net)) + + define KernelPackage/firewire-ohci SUBMENU:=$(FIREWIRE_MENU) TITLE:=Support for OHCI-1394 controllers @@ -58,17 +74,3 @@ endef $(eval $(call KernelPackage,firewire-sbp2)) -define KernelPackage/firewire-net - SUBMENU:=$(FIREWIRE_MENU) - TITLE:=Support for IP networking over FireWire - DEPENDS:=kmod-firewire - KCONFIG:=CONFIG_FIREWIRE_NET - FILES:=$(LINUX_DIR)/drivers/firewire/firewire-net.ko - AUTOLOAD:=$(call AutoProbe,firewire-net) -endef - -define KernelPackage/firewire-net/description - Kernel support for IPv4 over FireWire -endef - -$(eval $(call KernelPackage,firewire-net)) diff --git a/package/kernel/linux/modules/fs.mk b/package/kernel/linux/modules/fs.mk index 4d69d9b140..19524df734 100644 --- a/package/kernel/linux/modules/fs.mk +++ b/package/kernel/linux/modules/fs.mk @@ -7,25 +7,6 @@ FS_MENU:=Filesystems -define KernelPackage/fs-fscache - SUBMENU:=$(FS_MENU) - TITLE:=General filesystem local cache manager - DEPENDS:= - KCONFIG:=\ - CONFIG_FSCACHE=m \ - CONFIG_FSCACHE_STATS=y \ - CONFIG_FSCACHE_HISTOGRAM=n \ - CONFIG_FSCACHE_DEBUG=n \ - CONFIG_FSCACHE_OBJECT_LIST=n \ - CONFIG_CACHEFILES=y \ - CONFIG_CACHEFILES_DEBUG=n \ - CONFIG_CACHEFILES_HISTOGRAM=n - FILES:=$(LINUX_DIR)/fs/fscache/fscache.ko - AUTOLOAD:=$(call AutoLoad,29,fscache) -endef - -$(eval $(call KernelPackage,fs-fscache)) - define KernelPackage/fs-9p SUBMENU:=$(FS_MENU) TITLE:=Plan 9 Resource Sharing Support @@ -45,6 +26,7 @@ endef $(eval $(call KernelPackage,fs-9p)) + define KernelPackage/fs-afs SUBMENU:=$(FS_MENU) TITLE:=Andrew FileSystem client @@ -82,7 +64,7 @@ $(eval $(call KernelPackage,fs-autofs4)) define KernelPackage/fs-btrfs SUBMENU:=$(FS_MENU) TITLE:=BTRFS filesystem support - DEPENDS:=+kmod-lib-crc32c +kmod-lib-lzo +kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +kmod-lib-raid6 +kmod-lib-xor + DEPENDS:=+kmod-lib-crc32c +kmod-lib-lzo +kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +kmod-lib-raid6 +kmod-lib-xor +LINUX_4_14:kmod-lib-zstd KCONFIG:=\ CONFIG_BTRFS_FS \ CONFIG_BTRFS_FS_POSIX_ACL=n \ @@ -106,7 +88,8 @@ define KernelPackage/fs-cifs CONFIG_CIFS \ CONFIG_CIFS_XATTR=y \ CONFIG_CIFS_DFS_UPCALL=n \ - CONFIG_CIFS_UPCALL=n + CONFIG_CIFS_UPCALL=n \ + CONFIG_CIFS_SMB311=n FILES:=$(LINUX_DIR)/fs/cifs/cifs.ko AUTOLOAD:=$(call AutoLoad,30,cifs) $(call AddDepends/nls) @@ -141,6 +124,7 @@ endef $(eval $(call KernelPackage,fs-configfs)) + define KernelPackage/fs-cramfs SUBMENU:=$(FS_MENU) TITLE:=Compressed RAM/ROM filesystem support @@ -157,6 +141,23 @@ endef $(eval $(call KernelPackage,fs-cramfs)) + +define KernelPackage/fs-efivarfs + SUBMENU:=$(FS_MENU) + TITLE:=efivar filesystem support + KCONFIG:=CONFIG_EFIVAR_FS + FILES:=$(LINUX_DIR)/fs/efivarfs/efivarfs.ko + DEPENDS:=@(x86_64||x86) + AUTOLOAD:=$(call Autoload,90,efivarfs) +endef + +define KernelPackage/fs-efivarfs/description + Kernel module to support efivarfs file system mountpoint. +endef + +$(eval $(call KernelPackage,fs-efivarfs)) + + define KernelPackage/fs-exportfs SUBMENU:=$(FS_MENU) TITLE:=exportfs kernel server support @@ -200,6 +201,7 @@ $(eval $(call KernelPackage,fs-ext4)) define KernelPackage/fs-f2fs SUBMENU:=$(FS_MENU) TITLE:=F2FS filesystem support + DEPENDS:= +kmod-crypto-hash +kmod-crypto-crc32 KCONFIG:= \ CONFIG_F2FS_FS \ CONFIG_F2FS_STAT_FS=y \ @@ -218,19 +220,24 @@ endef $(eval $(call KernelPackage,fs-f2fs)) -define KernelPackage/fuse +define KernelPackage/fs-fscache SUBMENU:=$(FS_MENU) - TITLE:=FUSE (Filesystem in Userspace) support - KCONFIG:= CONFIG_FUSE_FS - FILES:=$(LINUX_DIR)/fs/fuse/fuse.ko - AUTOLOAD:=$(call AutoLoad,80,fuse) -endef - -define KernelPackage/fuse/description - Kernel module for userspace filesystem support + TITLE:=General filesystem local cache manager + DEPENDS:= + KCONFIG:=\ + CONFIG_FSCACHE=m \ + CONFIG_FSCACHE_STATS=y \ + CONFIG_FSCACHE_HISTOGRAM=n \ + CONFIG_FSCACHE_DEBUG=n \ + CONFIG_FSCACHE_OBJECT_LIST=n \ + CONFIG_CACHEFILES=y \ + CONFIG_CACHEFILES_DEBUG=n \ + CONFIG_CACHEFILES_HISTOGRAM=n + FILES:=$(LINUX_DIR)/fs/fscache/fscache.ko + AUTOLOAD:=$(call AutoLoad,29,fscache) endef -$(eval $(call KernelPackage,fuse)) +$(eval $(call KernelPackage,fs-fscache)) define KernelPackage/fs-hfs @@ -282,6 +289,21 @@ endef $(eval $(call KernelPackage,fs-isofs)) +define KernelPackage/fs-jfs + SUBMENU:=$(FS_MENU) + TITLE:=JFS filesystem support + KCONFIG:=CONFIG_JFS_FS + FILES:=$(LINUX_DIR)/fs/jfs/jfs.ko + AUTOLOAD:=$(call AutoLoad,30,jfs,1) + $(call AddDepends/nls) +endef + +define KernelPackage/fs-jfs/description + Kernel module for JFS support +endef + +$(eval $(call KernelPackage,fs-jfs)) + define KernelPackage/fs-minix SUBMENU:=$(FS_MENU) TITLE:=Minix filesystem support @@ -316,20 +338,19 @@ $(eval $(call KernelPackage,fs-msdos)) define KernelPackage/fs-nfs SUBMENU:=$(FS_MENU) - TITLE:=NFS filesystem support + TITLE:=NFS filesystem client support DEPENDS:=+kmod-fs-nfs-common +kmod-dnsresolver KCONFIG:= \ CONFIG_NFS_FS \ CONFIG_NFS_USE_LEGACY_DNS=n \ CONFIG_NFS_USE_NEW_IDMAPPER=n FILES:= \ - $(LINUX_DIR)/fs/nfs/nfs.ko \ - $(LINUX_DIR)/fs/nfs/nfsv3.ko - AUTOLOAD:=$(call AutoLoad,40,nfs nfsv3) + $(LINUX_DIR)/fs/nfs/nfs.ko + AUTOLOAD:=$(call AutoLoad,40,nfs) endef define KernelPackage/fs-nfs/description - Kernel module for NFS support + Kernel module for NFS client support endef $(eval $(call KernelPackage,fs-nfs)) @@ -352,23 +373,67 @@ endef $(eval $(call KernelPackage,fs-nfs-common)) -define KernelPackage/fs-nfs-common-v4 +define KernelPackage/fs-nfs-common-rpcsec SUBMENU:=$(FS_MENU) - TITLE:=Common NFS V4 filesystem modules - KCONFIG+=\ - CONFIG_SUNRPC_GSS\ - CONFIG_NFS_V4=y\ - CONFIG_NFSD_V4=y - DEPENDS:= @BROKEN - FILES+=$(LINUX_DIR)/net/sunrpc/auth_gss/auth_rpcgss.ko - AUTOLOAD=$(call AutoLoad,30,auth_rpcgss) + TITLE:=NFS Secure RPC + DEPENDS:= \ + +kmod-fs-nfs-common \ + +kmod-crypto-des \ + +kmod-crypto-cbc \ + +kmod-crypto-cts \ + +kmod-crypto-md5 \ + +kmod-crypto-sha1 \ + +kmod-crypto-hmac \ + +kmod-crypto-ecb + KCONFIG:= \ + CONFIG_SUNRPC_GSS \ + CONFIG_RPCSEC_GSS_KRB5 + FILES:= \ + $(LINUX_DIR)/lib/oid_registry.ko \ + $(LINUX_DIR)/net/sunrpc/auth_gss/auth_rpcgss.ko \ + $(LINUX_DIR)/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko + AUTOLOAD:=$(call AutoLoad,31,oid_registry auth_rpcgss rpcsec_gss_krb5) +endef + +define KernelPackage/fs-nfs-common-rpcsec/description + Kernel modules for NFS Secure RPC +endef + +$(eval $(call KernelPackage,fs-nfs-common-rpcsec)) + + +define KernelPackage/fs-nfs-v3 + SUBMENU:=$(FS_MENU) + TITLE:=NFS3 filesystem client support + DEPENDS:=+kmod-fs-nfs + FILES:= \ + $(LINUX_DIR)/fs/nfs/nfsv3.ko + AUTOLOAD:=$(call AutoLoad,41,nfsv3) endef -define KernelPackage/fs-nfs-common-v4/description - Kernel modules for NFS V4 & NFSD V4 kernel support +define KernelPackage/fs-nfs-v3/description + Kernel module for NFS v3 client support endef -$(eval $(call KernelPackage,fs-nfs-common-v4)) +$(eval $(call KernelPackage,fs-nfs-v3)) + + +define KernelPackage/fs-nfs-v4 + SUBMENU:=$(FS_MENU) + TITLE:=NFS4 filesystem client support + DEPENDS:=+kmod-fs-nfs + KCONFIG:= \ + CONFIG_NFS_V4=y + FILES:= \ + $(LINUX_DIR)/fs/nfs/nfsv4.ko + AUTOLOAD:=$(call AutoLoad,41,nfsv4) +endef + +define KernelPackage/fs-nfs-v4/description + Kernel module for NFS v4 support +endef + +$(eval $(call KernelPackage,fs-nfs-v4)) define KernelPackage/fs-nfsd @@ -490,17 +555,16 @@ endef $(eval $(call KernelPackage,fs-xfs)) -define KernelPackage/fs-jfs +define KernelPackage/fuse SUBMENU:=$(FS_MENU) - TITLE:=JFS filesystem support - KCONFIG:=CONFIG_JFS_FS - FILES:=$(LINUX_DIR)/fs/jfs/jfs.ko - AUTOLOAD:=$(call AutoLoad,30,jfs,1) - $(call AddDepends/nls) + TITLE:=FUSE (Filesystem in Userspace) support + KCONFIG:= CONFIG_FUSE_FS + FILES:=$(LINUX_DIR)/fs/fuse/fuse.ko + AUTOLOAD:=$(call AutoLoad,80,fuse) endef -define KernelPackage/fs-jfs/description - Kernel module for JFS support +define KernelPackage/fuse/description + Kernel module for userspace filesystem support endef -$(eval $(call KernelPackage,fs-jfs)) +$(eval $(call KernelPackage,fuse)) diff --git a/package/kernel/linux/modules/hwmon.mk b/package/kernel/linux/modules/hwmon.mk index e2962058aa..e6dfa73dec 100644 --- a/package/kernel/linux/modules/hwmon.mk +++ b/package/kernel/linux/modules/hwmon.mk @@ -29,21 +29,6 @@ define AddDepends/hwmon DEPENDS:=kmod-hwmon-core $(1) endef -define KernelPackage/hwmon-vid - TITLE:=VID/VRM/VRD voltage conversion module. - KCONFIG:=CONFIG_HWMON_VID - FILES:=$(LINUX_DIR)/drivers/hwmon/hwmon-vid.ko - AUTOLOAD:=$(call AutoLoad,41,hwmon-vid) - $(call AddDepends/hwmon,) -endef - -define KernelPackage/hwmon-vid/description - VID/VRM/VRD voltage conversion module for hardware monitoring -endef - -$(eval $(call KernelPackage,hwmon-vid)) - - define KernelPackage/hwmon-adt7410 TITLE:=ADT7410 monitoring support KCONFIG:= \ @@ -78,6 +63,21 @@ endef $(eval $(call KernelPackage,hwmon-adt7475)) +define KernelPackage/hwmon-gpiofan + TITLE:=Generic GPIO FAN support + KCONFIG:=CONFIG_SENSORS_GPIO_FAN + FILES:=$(LINUX_DIR)/drivers/hwmon/gpio-fan.ko + AUTOLOAD:=$(call AutoLoad,60,gpio-fan) + $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal) +endef + +define KernelPackage/hwmon-gpiofan/description + Kernel module for GPIO controlled FANs +endef + +$(eval $(call KernelPackage,hwmon-gpiofan)) + + define KernelPackage/hwmon-ina209 TITLE:=INA209 monitoring support KCONFIG:=CONFIG_SENSORS_INA209 @@ -98,7 +98,7 @@ define KernelPackage/hwmon-ina2xx KCONFIG:=CONFIG_SENSORS_INA2XX FILES:=$(LINUX_DIR)/drivers/hwmon/ina2xx.ko AUTOLOAD:=$(call AutoProbe,ina2xx) - $(call AddDepends/hwmon,+kmod-i2c-core +LINUX_4_4:kmod-regmap) + $(call AddDepends/hwmon,+kmod-i2c-core +!LINUX_3_18:kmod-regmap) endef define KernelPackage/hwmon-ina2xx/description @@ -122,12 +122,13 @@ endef $(eval $(call KernelPackage,hwmon-it87)) + define KernelPackage/hwmon-lm63 TITLE:=LM63/64 monitoring support KCONFIG:=CONFIG_SENSORS_LM63 FILES:=$(LINUX_DIR)/drivers/hwmon/lm63.ko AUTOLOAD:=$(call AutoProbe,lm63) - $(call AddDepends/hwmon,+kmod-i2c-core) + $(call AddDepends/hwmon,+kmod-i2c-core +kmod-regmap) endef define KernelPackage/hwmon-lm63/description @@ -142,7 +143,7 @@ define KernelPackage/hwmon-lm75 KCONFIG:=CONFIG_SENSORS_LM75 FILES:=$(LINUX_DIR)/drivers/hwmon/lm75.ko AUTOLOAD:=$(call AutoProbe,lm75) - $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal) + $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal +kmod-regmap) endef define KernelPackage/hwmon-lm75/description @@ -196,6 +197,7 @@ endef $(eval $(call KernelPackage,hwmon-lm90)) + define KernelPackage/hwmon-lm92 TITLE:=LM92 monitoring support KCONFIG:=CONFIG_SENSORS_LM92 @@ -210,6 +212,7 @@ endef $(eval $(call KernelPackage,hwmon-lm92)) + define KernelPackage/hwmon-lm95241 TITLE:=LM95241 monitoring support KCONFIG:=CONFIG_SENSORS_LM95241 @@ -224,6 +227,7 @@ endef $(eval $(call KernelPackage,hwmon-lm95241)) + define KernelPackage/hwmon-ltc4151 TITLE:=LTC4151 monitoring support KCONFIG:=CONFIG_SENSORS_LTC4151 @@ -238,35 +242,21 @@ endef $(eval $(call KernelPackage,hwmon-ltc4151)) -define KernelPackage/hwmon-sht21 - TITLE:=Sensiron SHT21 and compat. monitoring support - KCONFIG:=CONFIG_SENSORS_SHT21 - FILES:=$(LINUX_DIR)/drivers/hwmon/sht21.ko - AUTOLOAD:=$(call AutoProbe,sht21) - $(call AddDepends/hwmon,+kmod-i2c-core) -endef -define KernelPackage/hwmon-sht21/description - Kernel module for Sensirion SHT21 and SHT25 temperature and humidity sensors chip +define KernelPackage/hwmon-nct6775 + TITLE:=NCT6106D/6775F/6776F/6779D/6791D/6792D/6793D and compatibles monitoring support + KCONFIG:=CONFIG_SENSORS_NCT6775 + FILES:=$(LINUX_DIR)/drivers/hwmon/nct6775.ko + AUTOLOAD:=$(call AutoProbe,nct6775) + $(call AddDepends/hwmon,@PCI_SUPPORT @TARGET_x86 +kmod-hwmon-vid) endef -$(eval $(call KernelPackage,hwmon-sht21)) - -define KernelPackage/hwmon-sch5627 - TITLE:=SMSC SCH5627 monitoring support - KCONFIG:=CONFIG_SENSORS_SCH5627 - FILES:= \ - $(LINUX_DIR)/drivers/hwmon/sch5627.ko \ - $(LINUX_DIR)/drivers/hwmon/sch56xx-common.ko - AUTOLOAD:=$(call AutoProbe,sch5627) - $(call AddDepends/hwmon,+kmod-i2c-core) +define KernelPackage/hwmon-nct6775/description + Kernel module for NCT6106D/6775F/6776F/6779D/6791D/6792D/6793D thermal monitor chip endef -define KernelPackage/hwmon-sch5627/description - SMSC SCH5627 Super I/O chips include complete hardware monitoring -endef +$(eval $(call KernelPackage,hwmon-nct6775)) -$(eval $(call KernelPackage,hwmon-sch5627)) define KernelPackage/hwmon-pc87360 TITLE:=PC87360 monitoring support @@ -283,34 +273,51 @@ endef $(eval $(call KernelPackage,hwmon-pc87360)) -define KernelPackage/hwmon-w83627hf - TITLE:=Winbond W83627HF monitoring support - KCONFIG:=CONFIG_SENSORS_W83627HF - FILES:=$(LINUX_DIR)/drivers/hwmon/w83627hf.ko - AUTOLOAD:=$(call AutoLoad,50,w83627hf) - $(call AddDepends/hwmon,@TARGET_x86 +kmod-hwmon-vid) +define KernelPackage/hwmon-pwmfan + TITLE:=Generic PWM FAN support + KCONFIG:=CONFIG_SENSORS_PWM_FAN + FILES:=$(LINUX_DIR)/drivers/hwmon/pwm-fan.ko + AUTOLOAD:=$(call AutoLoad,60,pwm-fan) + $(call AddDepends/hwmon, +PACKAGE_kmod-thermal:kmod-thermal) endef -define KernelPackage/hwmon-w83627hf/description - Kernel module for the Winbond W83627HF chips. +define KernelPackage/hwmon-pwmfan/description + Kernel module for PWM controlled FANs endef -$(eval $(call KernelPackage,hwmon-w83627hf)) +$(eval $(call KernelPackage,hwmon-pwmfan)) -define KernelPackage/hwmon-w83793 - TITLE:=Winbond W83793G/R monitoring support - KCONFIG:=CONFIG_SENSORS_W83793 - FILES:=$(LINUX_DIR)/drivers/hwmon/w83793.ko - AUTOLOAD:=$(call AutoProbe,w83793) - $(call AddDepends/hwmon,+kmod-i2c-core +kmod-hwmon-vid) +define KernelPackage/hwmon-sch5627 + TITLE:=SMSC SCH5627 monitoring support + KCONFIG:=CONFIG_SENSORS_SCH5627 + FILES:= \ + $(LINUX_DIR)/drivers/hwmon/sch5627.ko \ + $(LINUX_DIR)/drivers/hwmon/sch56xx-common.ko + AUTOLOAD:=$(call AutoProbe,sch5627) + $(call AddDepends/hwmon,+kmod-i2c-core) endef -define KernelPackage/hwmon-w83793/description - Kernel module for the Winbond W83793G and W83793R chips. +define KernelPackage/hwmon-sch5627/description + SMSC SCH5627 Super I/O chips include complete hardware monitoring endef -$(eval $(call KernelPackage,hwmon-w83793)) +$(eval $(call KernelPackage,hwmon-sch5627)) + + +define KernelPackage/hwmon-sht21 + TITLE:=Sensiron SHT21 and compat. monitoring support + KCONFIG:=CONFIG_SENSORS_SHT21 + FILES:=$(LINUX_DIR)/drivers/hwmon/sht21.ko + AUTOLOAD:=$(call AutoProbe,sht21) + $(call AddDepends/hwmon,+kmod-i2c-core) +endef + +define KernelPackage/hwmon-sht21/description + Kernel module for Sensirion SHT21 and SHT25 temperature and humidity sensors chip +endef + +$(eval $(call KernelPackage,hwmon-sht21)) define KernelPackage/hwmon-tmp102 @@ -318,7 +325,7 @@ define KernelPackage/hwmon-tmp102 KCONFIG:=CONFIG_SENSORS_TMP102 FILES:=$(LINUX_DIR)/drivers/hwmon/tmp102.ko AUTOLOAD:=$(call AutoProbe,tmp102) - $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal) + $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal +kmod-regmap) endef define KernelPackage/hwmon-tmp102/description @@ -358,47 +365,65 @@ endef $(eval $(call KernelPackage,hwmon-tmp421)) -define KernelPackage/hwmon-gpiofan - TITLE:=Generic GPIO FAN support - KCONFIG:=CONFIG_SENSORS_GPIO_FAN - FILES:=$(LINUX_DIR)/drivers/hwmon/gpio-fan.ko - AUTOLOAD:=$(call AutoLoad,60,gpio-fan) - $(call AddDepends/hwmon,+kmod-i2c-core +PACKAGE_kmod-thermal:kmod-thermal) +define KernelPackage/hwmon-vid + TITLE:=VID/VRM/VRD voltage conversion module. + KCONFIG:=CONFIG_HWMON_VID + FILES:=$(LINUX_DIR)/drivers/hwmon/hwmon-vid.ko + AUTOLOAD:=$(call AutoLoad,41,hwmon-vid) + $(call AddDepends/hwmon,) endef -define KernelPackage/hwmon-gpiofan/description - Kernel module for GPIO controlled FANs +define KernelPackage/hwmon-vid/description + VID/VRM/VRD voltage conversion module for hardware monitoring endef -$(eval $(call KernelPackage,hwmon-gpiofan)) +$(eval $(call KernelPackage,hwmon-vid)) -define KernelPackage/hwmon-pwmfan - TITLE:=Generic PWM FAN support - KCONFIG:=CONFIG_SENSORS_PWM_FAN - FILES:=$(LINUX_DIR)/drivers/hwmon/pwm-fan.ko - AUTOLOAD:=$(call AutoLoad,60,pwm-fan) - $(call AddDepends/hwmon, +PACKAGE_kmod-thermal:kmod-thermal) +define KernelPackage/hwmon-w83627ehf + TITLE:=Winbond W83627EHF/EHG/DHG/UHG, W83667HG monitoring support + KCONFIG:=CONFIG_SENSORS_W83627EHF + FILES:=$(LINUX_DIR)/drivers/hwmon/w83627ehf.ko + AUTOLOAD:=$(call AutoProbe,w83627ehf) + $(call AddDepends/hwmon,@TARGET_x86 +kmod-hwmon-vid) endef -define KernelPackage/hwmon-pwmfan/description - Kernel module for PWM controlled FANs +define KernelPackage/hwmon-w83627ehf/description + Kernel module for Winbond W83627EHF/EHG/DHG/UHG and W83667HG thermal monitor chip + Support for NCT6775F and NCT6776F has been removed from this driver in favour of + using the nct6775 driver to handle those chips. endef -$(eval $(call KernelPackage,hwmon-pwmfan)) +$(eval $(call KernelPackage,hwmon-w83627ehf)) + + +define KernelPackage/hwmon-w83627hf + TITLE:=Winbond W83627HF monitoring support + KCONFIG:=CONFIG_SENSORS_W83627HF + FILES:=$(LINUX_DIR)/drivers/hwmon/w83627hf.ko + AUTOLOAD:=$(call AutoLoad,50,w83627hf) + $(call AddDepends/hwmon,@TARGET_x86 +kmod-hwmon-vid) +endef +define KernelPackage/hwmon-w83627hf/description + Kernel module for the Winbond W83627HF chips. +endef + +$(eval $(call KernelPackage,hwmon-w83627hf)) -define KernelPackage/hwmon-k10temp - TITLE:=AMD Family 10h+ temperature sensor - KCONFIG:=CONFIG_SENSORS_K10TEMP - FILES:=$(LINUX_DIR)/drivers/hwmon/k10temp.ko - AUTOLOAD:=$(call AutoLoad,60,k10temp) - $(call AddDepends/hwmon,@PCI_SUPPORT @TARGET_x86) + +define KernelPackage/hwmon-w83793 + TITLE:=Winbond W83793G/R monitoring support + KCONFIG:=CONFIG_SENSORS_W83793 + FILES:=$(LINUX_DIR)/drivers/hwmon/w83793.ko + AUTOLOAD:=$(call AutoProbe,w83793) + $(call AddDepends/hwmon,+kmod-i2c-core +kmod-hwmon-vid) endef -define KernelPackage/hwmon-k10temp/description - Thermal sensor support for AMD 10h, 11h, 12h (Llano), 14h (Brazos), - 15h (Bulldozer/Trinity/Kaveri) and 16h (Kabini/Mullins) CPUs +define KernelPackage/hwmon-w83793/description + Kernel module for the Winbond W83793G and W83793R chips. endef -$(eval $(call KernelPackage,hwmon-k10temp)) +$(eval $(call KernelPackage,hwmon-w83793)) + + diff --git a/package/kernel/linux/modules/i2c.mk b/package/kernel/linux/modules/i2c.mk index 7e85ef3d9d..4cf37dae07 100644 --- a/package/kernel/linux/modules/i2c.mk +++ b/package/kernel/linux/modules/i2c.mk @@ -24,10 +24,6 @@ I2C_CORE_MODULES:= \ CONFIG_I2C:drivers/i2c/i2c-core \ CONFIG_I2C_CHARDEV:drivers/i2c/i2c-dev -ifeq ($(CONFIG_OF),y) - I2C_CORE_MODULES+=CONFIG_OF_I2C:drivers/of/of_i2c@lt3.12 -endif - define KernelPackage/i2c-core $(call i2c_defaults,$(I2C_CORE_MODULES),51) TITLE:=I2C support @@ -104,42 +100,30 @@ endef $(eval $(call KernelPackage,i2c-gpio)) -I2C_TINY_USB_MODULES:= \ - CONFIG_I2C_TINY_USB:drivers/i2c/busses/i2c-tiny-usb - -define KernelPackage/i2c-tiny-usb - $(call i2c_defaults,$(I2C_TINY_USB_MODULES),59) - TITLE:=I2C Tiny USB adaptor - DEPENDS:=@USB_SUPPORT kmod-i2c-core +kmod-usb-core -endef - -define KernelPackage/i2c-tiny-usb/description - Kernel module for the I2C Tiny USB adaptor developed - by Till Harbaum (http://www.harbaum.org/till/i2c_tiny_usb) -endef - -$(eval $(call KernelPackage,i2c-tiny-usb)) - -I2C_PIIX4_MODULES:= \ - CONFIG_I2C_PIIX4:drivers/i2c/busses/i2c-piix4 +I2C_I801_MODULES:= \ + CONFIG_I2C_I801:drivers/i2c/busses/i2c-i801 -define KernelPackage/i2c-piix4 - $(call i2c_defaults,$(I2C_PIIX4_MODULES),59) - TITLE:=Intel PIIX4 and compatible I2C interfaces - DEPENDS:=@PCI_SUPPORT @(x86||x86_64) kmod-i2c-core +define KernelPackage/i2c-i801 + $(call i2c_defaults,$(I2C_I801_MODULES),59) + TITLE:=Intel I801 and compatible I2C interfaces + DEPENDS:=@PCI_SUPPORT @TARGET_x86 kmod-i2c-core +kmod-i2c-smbus endef -define KernelPackage/i2c-piix4/description - Support for the Intel PIIX4 family of mainboard I2C interfaces, - specifically Intel PIIX4, Intel 440MX, ATI IXP200, ATI IXP300, - ATI IXP400, ATI SB600, ATI SB700/SP5100, ATI SB800, AMD Hudson-2, - AMD ML, AMD CZ, Serverworks OSB4, Serverworks CSB5, - Serverworks CSB6, Serverworks HT-1000, Serverworks HT-1100 and - SMSC Victory66. +define KernelPackage/i2c-i801/description + Support for the Intel I801 family of mainboard I2C interfaces, + specifically 82801AA, 82801AB, 82801BA, 82801CA/CAM, 82801DB, + 82801EB/ER (ICH5/ICH5R), 6300ESB, ICH6, ICH7, ESB2, ICH8, ICH9, + EP80579 (Tolapai), ICH10, 5/3400 Series (PCH), 6 Series (PCH), + Patsburg (PCH), DH89xxCC (PCH), Panther Point (PCH), + Lynx Point (PCH), Lynx Point-LP (PCH), Avoton (SOC), + Wellsburg (PCH), Coleto Creek (PCH), Wildcat Point (PCH), + Wildcat Point-LP (PCH), BayTrail (SOC), Sunrise Point-H (PCH), + Sunrise Point-LP (PCH), DNV (SOC), Broxton (SOC), + Lewisburg (PCH). endef -$(eval $(call KernelPackage,i2c-piix4)) +$(eval $(call KernelPackage,i2c-i801)) I2C_MUX_MODULES:= \ @@ -172,6 +156,22 @@ endef $(eval $(call KernelPackage,i2c-mux-gpio)) + +I2C_MUX_PCA9541_MODULES:= \ + CONFIG_I2C_MUX_PCA9541:drivers/i2c/muxes/i2c-mux-pca9541 + +define KernelPackage/i2c-mux-pca9541 + $(call i2c_defaults,$(I2C_MUX_PCA9541_MODULES),51) + TITLE:=Philips PCA9541 I2C mux/switches + DEPENDS:=kmod-i2c-mux +endef + +define KernelPackage/i2c-mux-pca9541/description + Kernel modules for PCA9541 I2C bus mux/switching devices +endef + +$(eval $(call KernelPackage,i2c-mux-pca9541)) + I2C_MUX_PCA954x_MODULES:= \ CONFIG_I2C_MUX_PCA954x:drivers/i2c/muxes/i2c-mux-pca954x @@ -188,17 +188,58 @@ endef $(eval $(call KernelPackage,i2c-mux-pca954x)) -I2C_MUX_PCA9541_MODULES:= \ - CONFIG_I2C_MUX_PCA9541:drivers/i2c/muxes/i2c-mux-pca9541 +I2C_PIIX4_MODULES:= \ + CONFIG_I2C_PIIX4:drivers/i2c/busses/i2c-piix4 -define KernelPackage/i2c-mux-pca9541 - $(call i2c_defaults,$(I2C_MUX_PCA9541_MODULES),51) - TITLE:=Philips PCA9541 I2C mux/switches - DEPENDS:=kmod-i2c-mux +define KernelPackage/i2c-piix4 + $(call i2c_defaults,$(I2C_PIIX4_MODULES),59) + TITLE:=Intel PIIX4 and compatible I2C interfaces + DEPENDS:=@PCI_SUPPORT @TARGET_x86 kmod-i2c-core endef -define KernelPackage/i2c-mux-pca9541/description - Kernel modules for PCA9541 I2C bus mux/switching devices +define KernelPackage/i2c-piix4/description + Support for the Intel PIIX4 family of mainboard I2C interfaces, + specifically Intel PIIX4, Intel 440MX, ATI IXP200, ATI IXP300, + ATI IXP400, ATI SB600, ATI SB700/SP5100, ATI SB800, AMD Hudson-2, + AMD ML, AMD CZ, Serverworks OSB4, Serverworks CSB5, + Serverworks CSB6, Serverworks HT-1000, Serverworks HT-1100 and + SMSC Victory66. endef -$(eval $(call KernelPackage,i2c-mux-pca9541)) +$(eval $(call KernelPackage,i2c-piix4)) + + +I2C_SMBUS_MODULES:= \ + CONFIG_I2C_SMBUS:drivers/i2c/i2c-smbus + +define KernelPackage/i2c-smbus + $(call i2c_defaults,$(I2C_SMBUS_MODULES),58) + TITLE:=SMBus-specific protocols helper + DEPENDS:=kmod-i2c-core +endef + +define KernelPackage/i2c-smbus/description + Support for the SMBus extensions to the I2C specification. +endef + +$(eval $(call KernelPackage,i2c-smbus)) + + + +I2C_TINY_USB_MODULES:= \ + CONFIG_I2C_TINY_USB:drivers/i2c/busses/i2c-tiny-usb + +define KernelPackage/i2c-tiny-usb + $(call i2c_defaults,$(I2C_TINY_USB_MODULES),59) + TITLE:=I2C Tiny USB adaptor + DEPENDS:=@USB_SUPPORT kmod-i2c-core +kmod-usb-core +endef + +define KernelPackage/i2c-tiny-usb/description + Kernel module for the I2C Tiny USB adaptor developed + by Till Harbaum (http://www.harbaum.org/till/i2c_tiny_usb) +endef + +$(eval $(call KernelPackage,i2c-tiny-usb)) + + diff --git a/package/kernel/linux/modules/iio.mk b/package/kernel/linux/modules/iio.mk new file mode 100644 index 0000000000..c35ccca1bb --- /dev/null +++ b/package/kernel/linux/modules/iio.mk @@ -0,0 +1,135 @@ +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +IIO_MENU:=Industrial I/O Modules + + +define KernelPackage/iio-core + SUBMENU:=$(IIO_MENU) + TITLE:=Industrial IO core + KCONFIG:= \ + CONFIG_IIO \ + CONFIG_IIO_BUFFER=y \ + CONFIG_IIO_KFIFO_BUF \ + CONFIG_IIO_TRIGGER=y \ + CONFIG_IIO_TRIGGERED_BUFFER + FILES:= \ + $(LINUX_DIR)/drivers/iio/industrialio.ko \ + $(if $(CONFIG_IIO_TRIGGERED_BUFFER),$(LINUX_DIR)/drivers/iio/industrialio-triggered-buffer.ko@lt4.4) \ + $(if $(CONFIG_IIO_TRIGGERED_BUFFER),$(LINUX_DIR)/drivers/iio/buffer/industrialio-triggered-buffer.ko@ge4.4) \ + $(LINUX_DIR)/drivers/iio/kfifo_buf.ko@lt4.4 \ + $(LINUX_DIR)/drivers/iio/buffer/kfifo_buf.ko@ge4.4 + AUTOLOAD:=$(call AutoLoad,55,industrialio kfifo_buf industrialio-triggered-buffer) +endef + +define KernelPackage/iio-core/description + The industrial I/O subsystem provides a unified framework for + drivers for many different types of embedded sensors using a + number of different physical interfaces (i2c, spi, etc) +endef + +$(eval $(call KernelPackage,iio-core)) + + +define KernelPackage/iio-ad799x + SUBMENU:=$(IIO_MENU) + DEPENDS:=+kmod-i2c-core +kmod-iio-core + TITLE:=Analog Devices AD799x ADC driver + KCONFIG:= \ + CONFIG_AD799X_RING_BUFFER=y \ + CONFIG_AD799X + FILES:=$(LINUX_DIR)/drivers/iio/adc/ad799x.ko + AUTOLOAD:=$(call AutoLoad,56,ad799x) +endef + +define KernelPackage/iio-ad799x/description + support for Analog Devices: + ad7991, ad7995, ad7999, ad7992, ad7993, ad7994, ad7997, ad7998 + i2c analog to digital converters (ADC). +endef + +$(eval $(call KernelPackage,iio-ad799x)) + +define KernelPackage/iio-mxs-lradc + SUBMENU:=$(IIO_MENU) + DEPENDS:=@TARGET_mxs +kmod-iio-core + TITLE:=Freescale i.MX23/i.MX28 LRADC ADC driver + KCONFIG:= \ + CONFIG_MXS_LRADC_ADC + FILES:=$(LINUX_DIR)/drivers/iio/adc/mxs-lradc-adc.ko + AUTOLOAD:=$(call AutoLoad,56,mxs-lradc-adc) +endef + +define KernelPackage/iio-mxs-lradc/description + Support for Freescale's i.MX23/i.MX28 SoC internal Low-Resolution ADC +endef + +$(eval $(call KernelPackage,iio-mxs-lradc)) + +define KernelPackage/iio-dht11 + SUBMENU:=$(IIO_MENU) + DEPENDS:=+kmod-iio-core @GPIO_SUPPORT @USES_DEVICETREE + TITLE:=DHT11 (and compatible) humidity and temperature sensors + KCONFIG:= \ + CONFIG_DHT11 + FILES:=$(LINUX_DIR)/drivers/iio/humidity/dht11.ko + AUTOLOAD:=$(call AutoLoad,56,dht11) +endef + +define KernelPackage/iio-dht11/description + support for DHT11 and DHT22 digitial humidity and temperature sensors + attached at GPIO lines. You will need a custom device tree file to + specify the GPIO line to use. +endef + +$(eval $(call KernelPackage,iio-dht11)) + +define KernelPackage/iio-bmp280 + SUBMENU:=$(IIO_MENU) + TITLE:=BMP180/BMP280/BME280 pressure/temperatur sensor + DEPENDS:=@(LINUX_4_9||LINUX_4_14) +kmod-iio-core +kmod-regmap + KCONFIG:=CONFIG_BMP280 + FILES:=$(LINUX_DIR)/drivers/iio/pressure/bmp280.ko +endef + +define KernelPackage/iio-bmp280/description + This driver adds support for Bosch Sensortec BMP180 and BMP280 pressure and + temperature sensors. Also supports the BME280 with an additional humidity + sensor channel. +endef + +$(eval $(call KernelPackage,iio-bmp280)) + + +define KernelPackage/iio-bmp280-i2c + SUBMENU:=$(IIO_MENU) + TITLE:=BMP180/BMP280/BME280 pressure/temperatur sensor (I2C) + DEPENDS:=+kmod-iio-bmp280 +kmod-i2c-core + KCONFIG:=CONFIG_BMP280_I2C + FILES:=$(LINUX_DIR)/drivers/iio/pressure/bmp280-i2c.ko + AUTOLOAD:=$(call AutoProbe,iio-bmp280-i2c) +endef +define KernelPackage/iio-bmp280-i2c/description + This driver adds support for Bosch Sensortec's digital pressure and + temperature sensor connected via I2C. +endef + +$(eval $(call KernelPackage,iio-bmp280-i2c)) + + +define KernelPackage/iio-bmp280-spi + SUBMENU:=$(IIO_MENU) + TITLE:=BMP180/BMP280/BME280 pressure/temperatur sensor (SPI) + DEPENDS:=+kmod-iio-bmp280 +kmod-spi-bitbang + KCONFIG:=CONFIG_BMP280_SPI + FILES:=$(LINUX_DIR)/drivers/iio/pressure/bmp280-spi.ko + AUTOLOAD:=$(call AutoProbe,iio-bmp280-spi) +endef +define KernelPackage/iio-bmp280-spi/description + This driver adds support for Bosch Sensortec's digital pressure and + temperature sensor connected via SPI. +endef + +$(eval $(call KernelPackage,iio-bmp280-spi)) diff --git a/package/kernel/linux/modules/leds.mk b/package/kernel/linux/modules/leds.mk index 51002fb3df..7019f04779 100644 --- a/package/kernel/linux/modules/leds.mk +++ b/package/kernel/linux/modules/leds.mk @@ -32,7 +32,7 @@ define KernelPackage/ledtrig-heartbeat AUTOLOAD:=$(call AutoLoad,50,ledtrig-heartbeat) endef -define KernelPackage/ledtrig-gpio/description +define KernelPackage/ledtrig-heartbeat/description Kernel module that allows LEDs to blink like heart beat endef diff --git a/package/kernel/linux/modules/lib.mk b/package/kernel/linux/modules/lib.mk index 72c5eff69c..6d7e0dc996 100644 --- a/package/kernel/linux/modules/lib.mk +++ b/package/kernel/linux/modules/lib.mk @@ -101,14 +101,17 @@ $(eval $(call KernelPackage,lib-crc32c)) define KernelPackage/lib-lzo SUBMENU:=$(LIB_MENU) TITLE:=LZO support + DEPENDS:=+LINUX_4_14:kmod-crypto-acompress KCONFIG:= \ + CONFIG_CRYPTO_LZO@ge4.9 \ CONFIG_LZO_COMPRESS \ CONFIG_LZO_DECOMPRESS HIDDEN:=1 FILES:= \ + $(LINUX_DIR)/crypto/lzo.ko@ge4.9 \ $(LINUX_DIR)/lib/lzo/lzo_compress.ko \ $(LINUX_DIR)/lib/lzo/lzo_decompress.ko - AUTOLOAD:=$(call AutoProbe,lzo_compress lzo_decompress) + AUTOLOAD:=$(call AutoProbe,lzo@ge4.9 lzo_compress lzo_decompress) endef define KernelPackage/lib-lzo/description @@ -118,17 +121,42 @@ endef $(eval $(call KernelPackage,lib-lzo)) +define KernelPackage/lib-zstd + SUBMENU:=$(LIB_MENU) + TITLE:=ZSTD support + KCONFIG:= \ + CONFIG_ZSTD_COMPRESS \ + CONFIG_ZSTD_DECOMPRESS \ + CONFIG_XXHASH + HIDDEN:=1 + FILES:= \ + $(LINUX_DIR)/lib/xxhash.ko \ + $(LINUX_DIR)/lib/zstd/zstd_compress.ko \ + $(LINUX_DIR)/lib/zstd/zstd_decompress.ko + AUTOLOAD:=$(call AutoProbe,xxhash zstd_compress zstd_decompress) +endef + +define KernelPackage/lib-zstd/description + Kernel module for ZSTD compression/decompression support +endef + +$(eval $(call KernelPackage,lib-zstd)) + + define KernelPackage/lib-lz4 SUBMENU:=$(LIB_MENU) TITLE:=LZ4 support + DEPENDS:=+LINUX_4_14:kmod-crypto-acompress HIDDEN:=1 KCONFIG:= \ + CONFIG_CRYPTO_LZ4@ge4.9 \ CONFIG_LZ4_COMPRESS \ CONFIG_LZ4_DECOMPRESS FILES:= \ + $(LINUX_DIR)/crypto/lz4.ko@ge4.9 \ $(LINUX_DIR)/lib/lz4/lz4_compress.ko \ $(LINUX_DIR)/lib/lz4/lz4_decompress.ko - AUTOLOAD:=$(call AutoProbe,lz4_compress lz4_decompress) + AUTOLOAD:=$(call AutoProbe,lz4@ge4.9 lz4_compress lz4_decompress) endef define KernelPackage/lib-lz4/description diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk index 5bc23b2777..d8827b9ef9 100644 --- a/package/kernel/linux/modules/netdevices.mk +++ b/package/kernel/linux/modules/netdevices.mk @@ -209,7 +209,7 @@ $(eval $(call KernelPackage,switch-ip17xx)) define KernelPackage/switch-rtl8366-smi SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Realtek RTL8366 SMI switch interface support - DEPENDS:=@GPIO_SUPPORT +kmod-swconfig + DEPENDS:=@GPIO_SUPPORT +kmod-swconfig +(TARGET_armvirt||TARGET_brcm2708_bcm2708):kmod-of-mdio KCONFIG:=CONFIG_RTL8366_SMI FILES:=$(LINUX_DIR)/drivers/net/phy/rtl8366_smi.ko AUTOLOAD:=$(call AutoLoad,42,rtl8366_smi) @@ -304,6 +304,22 @@ endef $(eval $(call KernelPackage,r6040)) +define KernelPackage/niu + SUBMENU:=$(NETWORK_DEVICES_MENU) + TITLE:=Sun Neptune 10Gbit Ethernet support + DEPENDS:=@PCI_SUPPORT + KCONFIG:=CONFIG_NIU + FILES:=$(LINUX_DIR)/drivers/net/ethernet/sun/niu.ko + AUTOLOAD:=$(call AutoProbe,niu) +endef + +define KernelPackage/niu/description + This enables support for cards based upon Sun's Neptune chipset. +endef + +$(eval $(call KernelPackage,niu)) + + define KernelPackage/sis900 SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=SiS 900 Ethernet support @@ -411,6 +427,24 @@ endef $(eval $(call KernelPackage,8139cp)) +define KernelPackage/r8169 + SUBMENU:=$(NETWORK_DEVICES_MENU) + TITLE:=RealTek RTL-8169 PCI Gigabit Ethernet Adapter kernel support + DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware + KCONFIG:=CONFIG_R8169 \ + CONFIG_R8169_NAPI=y \ + CONFIG_R8169_VLAN=n + FILES:=$(LINUX_DIR)/drivers/net/ethernet/realtek/r8169.ko + AUTOLOAD:=$(call AutoProbe,r8169) +endef + +define KernelPackage/r8169/description + Kernel modules for RealTek RTL-8169 PCI Gigabit Ethernet adapters +endef + +$(eval $(call KernelPackage,r8169)) + + define KernelPackage/ne2k-pci SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=ne2k-pci Ethernet Adapter kernel support @@ -428,7 +462,6 @@ endef $(eval $(call KernelPackage,ne2k-pci)) - define KernelPackage/e1000 SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Intel(R) PRO/1000 PCI cards kernel support @@ -454,6 +487,9 @@ define KernelPackage/e1000e KCONFIG:=CONFIG_E1000E FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/e1000e/e1000e.ko AUTOLOAD:=$(call AutoProbe,e1000e) + MODPARAMS.e1000e:= \ + IntMode=1 \ + InterruptThrottleRate=4,4,4,4,4,4,4,4 endef define KernelPackage/e1000e/description @@ -466,9 +502,9 @@ $(eval $(call KernelPackage,e1000e)) define KernelPackage/igb SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support - DEPENDS:=@PCI_SUPPORT +kmod-i2c-core +kmod-i2c-algo-bit +kmod-ptp + DEPENDS:=@PCI_SUPPORT +kmod-i2c-core +kmod-i2c-algo-bit +kmod-ptp +kmod-hwmon-core KCONFIG:=CONFIG_IGB \ - CONFIG_IGB_HWMON=n \ + CONFIG_IGB_HWMON=y \ CONFIG_IGB_DCA=n FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/igb/igb.ko AUTOLOAD:=$(call AutoLoad,35,igb) @@ -481,6 +517,62 @@ endef $(eval $(call KernelPackage,igb)) +define KernelPackage/igbvf + SUBMENU:=$(NETWORK_DEVICES_MENU) + TITLE:=Intel(R) 82576 Virtual Function Ethernet support + DEPENDS:=@PCI_SUPPORT @TARGET_x86 +kmod-i2c-core +kmod-i2c-algo-bit +kmod-ptp + KCONFIG:=CONFIG_IGBVF \ + CONFIG_IGB_HWMON=y \ + CONFIG_IGB_DCA=n + FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/igbvf/igbvf.ko + AUTOLOAD:=$(call AutoLoad,35,igbvf) +endef + +define KernelPackage/igbvf/description + Kernel modules for Intel(R) 82576 Virtual Function Ethernet adapters. +endef + +$(eval $(call KernelPackage,igbvf)) + + +define KernelPackage/ixgbe + SUBMENU:=$(NETWORK_DEVICES_MENU) + TITLE:=Intel(R) 82598/82599 PCI-Express 10 Gigabit Ethernet support + DEPENDS:=@PCI_SUPPORT +kmod-mdio +kmod-ptp +kmod-hwmon-core + KCONFIG:=CONFIG_IXGBE \ + CONFIG_IXGBE_VXLAN=n \ + CONFIG_IXGBE_HWMON=y \ + CONFIG_IXGBE_DCA=n + FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/ixgbe/ixgbe.ko + AUTOLOAD:=$(call AutoLoad,35,ixgbe) +endef + +define KernelPackage/ixgbe/description + Kernel modules for Intel(R) 82598/82599 PCI-Express 10 Gigabit Ethernet adapters. +endef + +$(eval $(call KernelPackage,ixgbe)) + + +define KernelPackage/ixgbevf + SUBMENU:=$(NETWORK_DEVICES_MENU) + TITLE:=Intel(R) 82599 Virtual Function Ethernet support + DEPENDS:=@PCI_SUPPORT +kmod-ixgbe + KCONFIG:=CONFIG_IXGBEVF \ + CONFIG_IXGBE_VXLAN=n \ + CONFIG_IXGBE_HWMON=y \ + CONFIG_IXGBE_DCA=n + FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko + AUTOLOAD:=$(call AutoLoad,35,ixgbevf) +endef + +define KernelPackage/ixgbevf/description + Kernel modules for Intel(R) 82599 Virtual Function Ethernet adapters. +endef + +$(eval $(call KernelPackage,ixgbevf)) + + define KernelPackage/b44 TITLE:=Broadcom 44xx driver KCONFIG:=CONFIG_B44 @@ -537,8 +629,9 @@ $(eval $(call KernelPackage,pcnet32)) define KernelPackage/tg3 TITLE:=Broadcom Tigon3 Gigabit Ethernet - KCONFIG:=CONFIG_TIGON3 - DEPENDS:=+!TARGET_brcm47xx:kmod-libphy +kmod-hwmon-core +kmod-ptp + KCONFIG:=CONFIG_TIGON3 \ + CONFIG_TIGON3_HWMON=n + DEPENDS:=+!TARGET_brcm47xx:kmod-libphy +!LINUX_4_14:kmod-hwmon-core +kmod-ptp SUBMENU:=$(NETWORK_DEVICES_MENU) FILES:=$(LINUX_DIR)/drivers/net/ethernet/broadcom/tg3.ko AUTOLOAD:=$(call AutoLoad,19,tg3,1) @@ -718,7 +811,7 @@ $(eval $(call KernelPackage,ifb)) define KernelPackage/dm9000 SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Davicom 9000 Ethernet support - DEPENDS:=@PCI_SUPPORT +kmod-mii + DEPENDS:=+kmod-mii KCONFIG:=CONFIG_DM9000 \ CONFIG_DM9000_DEBUGLEVEL=4 \ CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL=y @@ -753,7 +846,9 @@ define KernelPackage/of-mdio TITLE:=OpenFirmware MDIO support DEPENDS:=+kmod-libphy KCONFIG:=CONFIG_OF_MDIO - FILES:=$(LINUX_DIR)/drivers/of/of_mdio.ko + FILES:= \ + $(LINUX_DIR)/drivers/net/phy/fixed_phy.ko@ge4.9 \ + $(LINUX_DIR)/drivers/of/of_mdio.ko AUTOLOAD:=$(call AutoLoad,41,of_mdio) endef diff --git a/package/kernel/linux/modules/netfilter.mk b/package/kernel/linux/modules/netfilter.mk index 21547fe015..51f3544ed6 100644 --- a/package/kernel/linux/modules/netfilter.mk +++ b/package/kernel/linux/modules/netfilter.mk @@ -11,13 +11,39 @@ NF_KMOD:=1 include $(INCLUDE_DIR)/netfilter.mk -define KernelPackage/nf-ipt +define KernelPackage/nf-reject SUBMENU:=$(NF_MENU) - TITLE:=Iptables core + TITLE:=Netfilter IPv4 reject support + KCONFIG:= \ + CONFIG_NETFILTER=y \ + CONFIG_NETFILTER_ADVANCED=y \ + $(KCONFIG_NF_REJECT) + FILES:=$(foreach mod,$(NF_REJECT-m),$(LINUX_DIR)/net/$(mod).ko) + AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_REJECT-m))) +endef + +$(eval $(call KernelPackage,nf-reject)) + + +define KernelPackage/nf-reject6 + SUBMENU:=$(NF_MENU) + TITLE:=Netfilter IPv6 reject support KCONFIG:= \ - CONFIG_NETFILTER=y \ + CONFIG_NETFILTER=y \ CONFIG_NETFILTER_ADVANCED=y \ - $(KCONFIG_NF_IPT) + $(KCONFIG_NF_REJECT6) + DEPENDS:=@IPV6 + FILES:=$(foreach mod,$(NF_REJECT6-m),$(LINUX_DIR)/net/$(mod).ko) + AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_REJECT6-m))) +endef + +$(eval $(call KernelPackage,nf-reject6)) + + +define KernelPackage/nf-ipt + SUBMENU:=$(NF_MENU) + TITLE:=Iptables core + KCONFIG:=$(KCONFIG_NF_IPT) FILES:=$(foreach mod,$(NF_IPT-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_IPT-m))) endef @@ -31,7 +57,7 @@ define KernelPackage/nf-ipt6 KCONFIG:=$(KCONFIG_NF_IPT6) FILES:=$(foreach mod,$(NF_IPT6-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_IPT6-m))) - DEPENDS:=+kmod-nf-ipt +kmod-nf-conntrack6 + DEPENDS:=+kmod-nf-ipt endef $(eval $(call KernelPackage,nf-ipt6)) @@ -44,7 +70,7 @@ define KernelPackage/ipt-core KCONFIG:=$(KCONFIG_IPT_CORE) FILES:=$(foreach mod,$(IPT_CORE-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CORE-m))) - DEPENDS:=+kmod-nf-ipt + DEPENDS:=+kmod-nf-reject +kmod-nf-ipt endef define KernelPackage/ipt-core/description @@ -68,12 +94,18 @@ define KernelPackage/nf-conntrack KCONFIG:= \ CONFIG_NETFILTER=y \ CONFIG_NETFILTER_ADVANCED=y \ + CONFIG_NF_CONNTRACK_MARK=y \ CONFIG_NF_CONNTRACK_ZONES=y \ $(KCONFIG_NF_CONNTRACK) FILES:=$(foreach mod,$(NF_CONNTRACK-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_CONNTRACK-m))) endef +define KernelPackage/nf-conntrack/install + $(INSTALL_DIR) $(1)/etc/sysctl.d + $(INSTALL_DATA) ./files/sysctl-nf-conntrack.conf $(1)/etc/sysctl.d/11-nf-conntrack.conf +endef + $(eval $(call KernelPackage,nf-conntrack)) @@ -93,7 +125,7 @@ define KernelPackage/nf-nat SUBMENU:=$(NF_MENU) TITLE:=Netfilter NAT KCONFIG:=$(KCONFIG_NF_NAT) - DEPENDS:=+kmod-nf-conntrack +kmod-nf-ipt + DEPENDS:=+kmod-nf-conntrack FILES:=$(foreach mod,$(NF_NAT-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NAT-m))) endef @@ -105,7 +137,7 @@ define KernelPackage/nf-nat6 SUBMENU:=$(NF_MENU) TITLE:=Netfilter IPV6-NAT KCONFIG:=$(KCONFIG_NF_NAT6) - DEPENDS:=+kmod-nf-conntrack6 +kmod-nf-ipt6 +kmod-nf-nat + DEPENDS:=+kmod-nf-conntrack6 +kmod-nf-nat FILES:=$(foreach mod,$(NF_NAT6-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(NF_NAT6-m))) endef @@ -113,6 +145,23 @@ endef $(eval $(call KernelPackage,nf-nat6)) +define KernelPackage/nf-flow + SUBMENU:=$(NF_MENU) + TITLE:=Netfilter flowtable support + KCONFIG:= \ + CONFIG_NETFILTER_INGRESS=y \ + CONFIG_NF_FLOW_TABLE \ + CONFIG_NF_FLOW_TABLE_HW + DEPENDS:=+kmod-nf-conntrack @!LINUX_3_18 @!LINUX_4_4 @!LINUX_4_9 + FILES:= \ + $(LINUX_DIR)/net/netfilter/nf_flow_table.ko \ + $(LINUX_DIR)/net/netfilter/nf_flow_table_hw.ko + AUTOLOAD:=$(call AutoProbe,nf_flow_table nf_flow_table_hw) +endef + +$(eval $(call KernelPackage,nf-flow)) + + define AddDepends/ipt SUBMENU:=$(NF_MENU) DEPENDS+= +kmod-ipt-core $(1) @@ -160,6 +209,21 @@ endef $(eval $(call KernelPackage,ipt-conntrack-extra)) +define KernelPackage/ipt-conntrack-label + TITLE:=Module for handling connection tracking labels + KCONFIG:=$(KCONFIG_IPT_CONNTRACK_LABEL) + FILES:=$(foreach mod,$(IPT_CONNTRACK_LABEL-m),$(LINUX_DIR)/net/$(mod).ko) + AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CONNTRACK_LABEL-m))) + $(call AddDepends/ipt,+kmod-ipt-conntrack) +endef + +define KernelPackage/ipt-conntrack-label/description + Netfilter (IPv4) module for handling connection tracking labels + Includes: + - connlabel +endef + +$(eval $(call KernelPackage,ipt-conntrack-label)) define KernelPackage/ipt-filter TITLE:=Modules for packet content inspection @@ -178,6 +242,17 @@ endef $(eval $(call KernelPackage,ipt-filter)) +define KernelPackage/ipt-offload + TITLE:=Netfilter routing/NAT offload support + KCONFIG:=CONFIG_NETFILTER_XT_TARGET_FLOWOFFLOAD + FILES:=$(foreach mod,$(IPT_FLOW-m),$(LINUX_DIR)/net/$(mod).ko) + AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_FLOW-m))) + $(call AddDepends/ipt,+kmod-nf-flow) +endef + +$(eval $(call KernelPackage,ipt-offload)) + + define KernelPackage/ipt-ipopt TITLE:=Modules for matching/changing IP packet options KCONFIG:=$(KCONFIG_IPT_IPOPT) @@ -446,10 +521,9 @@ $(eval $(call KernelPackage,ipt-nfqueue)) define KernelPackage/ipt-debug TITLE:=Module for debugging/development KCONFIG:=$(KCONFIG_IPT_DEBUG) - DEFAULT:=n FILES:=$(foreach mod,$(IPT_DEBUG-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_DEBUG-m))) - $(call AddDepends/ipt) + $(call AddDepends/ipt,+kmod-ipt-raw +IPV6:kmod-ipt-raw6) endef define KernelPackage/ipt-debug/description @@ -477,7 +551,7 @@ $(eval $(call KernelPackage,ipt-led)) define KernelPackage/ipt-tproxy TITLE:=Transparent proxying support - DEPENDS+=+kmod-ipt-conntrack +IPV6:kmod-ip6tables + DEPENDS+=+kmod-ipt-conntrack +IPV6:kmod-nf-conntrack6 +IPV6:kmod-ip6tables KCONFIG:= \ CONFIG_NETFILTER_XT_MATCH_SOCKET \ CONFIG_NETFILTER_XT_TARGET_TPROXY @@ -529,6 +603,23 @@ endef $(eval $(call KernelPackage,ipt-u32)) +define KernelPackage/ipt-checksum + TITLE:=CHECKSUM support + KCONFIG:= \ + CONFIG_NETFILTER_XT_TARGET_CHECKSUM + FILES:= \ + $(LINUX_DIR)/net/netfilter/xt_CHECKSUM.ko \ + $(foreach mod,$(IPT_CHECKSUM-m),$(LINUX_DIR)/net/$(mod).ko) + AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_CHECKSUM-m))) + $(call AddDepends/ipt) +endef + +define KernelPackage/ipt-checksum/description + Kernel modules for CHECKSUM fillin target +endef + +$(eval $(call KernelPackage,ipt-checksum)) + define KernelPackage/ipt-iprange TITLE:=Module for matching ip ranges @@ -600,7 +691,7 @@ define KernelPackage/ipt-extra KCONFIG:=$(KCONFIG_IPT_EXTRA) FILES:=$(foreach mod,$(IPT_EXTRA-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_EXTRA-m))) - $(call AddDepends/ipt,+kmod-br-netfilter) + $(call AddDepends/ipt) endef define KernelPackage/ipt-extra/description @@ -608,7 +699,6 @@ define KernelPackage/ipt-extra/description Includes: - addrtype - owner - - physdev (if bridge support was enabled in kernel) - pkttype - quota endef @@ -616,10 +706,25 @@ endef $(eval $(call KernelPackage,ipt-extra)) +define KernelPackage/ipt-physdev + TITLE:=physdev module + KCONFIG:=$(KCONFIG_IPT_PHYSDEV) + FILES:=$(foreach mod,$(IPT_PHYSDEV-m),$(LINUX_DIR)/net/$(mod).ko) + AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_PHYSDEV-m))) + $(call AddDepends/ipt,+kmod-br-netfilter) +endef + +define KernelPackage/ipt-physdev/description + The iptables physdev kernel module +endef + +$(eval $(call KernelPackage,ipt-physdev)) + + define KernelPackage/ip6tables SUBMENU:=$(NF_MENU) TITLE:=IPv6 modules - DEPENDS:=+kmod-nf-ipt6 +kmod-ipt-core +kmod-ipt-conntrack + DEPENDS:=+kmod-nf-reject6 +kmod-nf-ipt6 +kmod-ipt-core KCONFIG:=$(KCONFIG_IPT_IPV6) FILES:=$(foreach mod,$(IPT_IPV6-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoLoad,42,$(notdir $(IPT_IPV6-m))) @@ -668,20 +773,24 @@ $(eval $(call KernelPackage,arptables)) define KernelPackage/br-netfilter SUBMENU:=$(NF_MENU) TITLE:=Bridge netfilter support modules - HIDDEN:=1 - DEPENDS:=+kmod-ipt-core +kmod-bridge + DEPENDS:=+kmod-ipt-core FILES:=$(LINUX_DIR)/net/bridge/br_netfilter.ko KCONFIG:=CONFIG_BRIDGE_NETFILTER AUTOLOAD:=$(call AutoProbe,br_netfilter) endef +define KernelPackage/br-netfilter/install + $(INSTALL_DIR) $(1)/etc/sysctl.d + $(INSTALL_DATA) ./files/sysctl-br-netfilter.conf $(1)/etc/sysctl.d/11-br-netfilter.conf +endef + $(eval $(call KernelPackage,br-netfilter)) define KernelPackage/ebtables SUBMENU:=$(NF_MENU) TITLE:=Bridge firewalling modules - DEPENDS:=+kmod-ipt-core +kmod-bridge +kmod-br-netfilter + DEPENDS:=+kmod-ipt-core FILES:=$(foreach mod,$(EBTABLES-m),$(LINUX_DIR)/net/$(mod).ko) KCONFIG:=$(KCONFIG_EBTABLES) AUTOLOAD:=$(call AutoProbe,$(notdir $(EBTABLES-m))) @@ -698,7 +807,7 @@ $(eval $(call KernelPackage,ebtables)) define AddDepends/ebtables SUBMENU:=$(NF_MENU) - DEPENDS+=kmod-ebtables $(1) + DEPENDS+= +kmod-ebtables $(1) endef @@ -836,20 +945,34 @@ endef $(eval $(call KernelPackage,ipt-hashlimit)) +define KernelPackage/ipt-rpfilter + SUBMENU:=$(NF_MENU) + TITLE:=Netfilter rpfilter match + DEPENDS:=+kmod-ipt-core + KCONFIG:=$(KCONFIG_IPT_RPFILTER) + FILES:=$(realpath \ + $(LINUX_DIR)/net/ipv4/netfilter/ipt_rpfilter.ko \ + $(LINUX_DIR)/net/ipv6/netfilter/ip6t_rpfilter.ko) + AUTOLOAD:=$(call AutoProbe,ipt_rpfilter ip6t_rpfilter) + $(call KernelPackage/ipt) +endef + +define KernelPackage/ipt-rpfilter/description + Kernel modules support for the Netfilter rpfilter match +endef + +$(eval $(call KernelPackage,ipt-rpfilter)) + define KernelPackage/nft-core SUBMENU:=$(NF_MENU) TITLE:=Netfilter nf_tables support - DEPENDS:=+kmod-nfnetlink +kmod-nf-conntrack6 +kmod-nf-ipt +kmod-nf-ipt6 + DEPENDS:=+kmod-nfnetlink +kmod-nf-reject +kmod-nf-reject6 +kmod-nf-conntrack6 FILES:=$(foreach mod,$(NFT_CORE-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_CORE-m))) KCONFIG:= \ - CONFIG_NETFILTER=y \ - CONFIG_NETFILTER_ADVANCED=y \ CONFIG_NFT_COMPAT=n \ CONFIG_NFT_QUEUE=n \ - CONFIG_NF_TABLES_ARP=n \ - CONFIG_NF_TABLES_BRIDGE=n \ $(KCONFIG_NFT_CORE) endef @@ -860,10 +983,36 @@ endef $(eval $(call KernelPackage,nft-core)) +define KernelPackage/nft-arp + SUBMENU:=$(NF_MENU) + TITLE:=Netfilter nf_tables ARP table support + DEPENDS:=+kmod-nft-core + FILES:=$(foreach mod,$(NFT_ARP-m),$(LINUX_DIR)/net/$(mod).ko) + AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_ARP-m))) + KCONFIG:=$(KCONFIG_NFT_ARP) +endef + +$(eval $(call KernelPackage,nft-arp)) + + +define KernelPackage/nft-bridge + SUBMENU:=$(NF_MENU) + TITLE:=Netfilter nf_tables bridge table support + DEPENDS:=+kmod-nft-core + FILES:=$(foreach mod,$(NFT_BRIDGE-m),$(LINUX_DIR)/net/$(mod).ko) + AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_BRIDGE-m))) + KCONFIG:= \ + CONFIG_NF_LOG_BRIDGE=n \ + $(KCONFIG_NFT_BRIDGE) +endef + +$(eval $(call KernelPackage,nft-bridge)) + + define KernelPackage/nft-nat SUBMENU:=$(NF_MENU) TITLE:=Netfilter nf_tables NAT support - DEPENDS:=+kmod-nft-core +kmod-nf-nat +kmod-nf-nat6 + DEPENDS:=+kmod-nft-core +kmod-nf-nat FILES:=$(foreach mod,$(NFT_NAT-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_NAT-m))) KCONFIG:=$(KCONFIG_NFT_NAT) @@ -872,14 +1021,33 @@ endef $(eval $(call KernelPackage,nft-nat)) +define KernelPackage/nft-offload + SUBMENU:=$(NF_MENU) + TITLE:=Netfilter nf_tables routing/NAT offload support + DEPENDS:=+kmod-nf-flow +kmod-nft-nat + KCONFIG:= \ + CONFIG_NF_FLOW_TABLE_INET \ + CONFIG_NF_FLOW_TABLE_IPV4 \ + CONFIG_NF_FLOW_TABLE_IPV6 \ + CONFIG_NFT_FLOW_OFFLOAD + FILES:= \ + $(LINUX_DIR)/net/netfilter/nf_flow_table_inet.ko \ + $(LINUX_DIR)/net/ipv4/netfilter/nf_flow_table_ipv4.ko \ + $(LINUX_DIR)/net/ipv6/netfilter/nf_flow_table_ipv6.ko \ + $(LINUX_DIR)/net/netfilter/nft_flow_offload.ko + AUTOLOAD:=$(call AutoProbe,nf_flow_table_inet nf_flow_table_ipv4 nf_flow_table_ipv6 nft_flow_offload) +endef + +$(eval $(call KernelPackage,nft-offload)) + + define KernelPackage/nft-nat6 SUBMENU:=$(NF_MENU) TITLE:=Netfilter nf_tables IPv6-NAT support - DEPENDS:=+kmod-nft-core +kmod-nf-nat6 + DEPENDS:=+kmod-nft-nat +kmod-nf-nat6 FILES:=$(foreach mod,$(NFT_NAT6-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoProbe,$(notdir $(NFT_NAT6-m))) KCONFIG:=$(KCONFIG_NFT_NAT6) endef $(eval $(call KernelPackage,nft-nat6)) - diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk index 3d5e74327a..ff76720636 100644 --- a/package/kernel/linux/modules/netsupport.mk +++ b/package/kernel/linux/modules/netsupport.mk @@ -42,29 +42,6 @@ endef $(eval $(call KernelPackage,atmtcp)) -define KernelPackage/appletalk - SUBMENU:=$(NETWORK_SUPPORT_MENU) - TITLE:=Appletalk protocol support - DEPENDS:=+PACKAGE_kmod-llc:kmod-llc - KCONFIG:= \ - CONFIG_ATALK \ - CONFIG_DEV_APPLETALK \ - CONFIG_IPDDP \ - CONFIG_IPDDP_ENCAP=y \ - CONFIG_IPDDP_DECAP=y - FILES:= \ - $(LINUX_DIR)/net/appletalk/appletalk.ko \ - $(LINUX_DIR)/drivers/net/appletalk/ipddp.ko - AUTOLOAD:=$(call AutoLoad,40,appletalk ipddp) -endef - -define KernelPackage/appletalk/description - Kernel module for AppleTalk protocol. -endef - -$(eval $(call KernelPackage,appletalk)) - - define KernelPackage/bonding SUBMENU:=$(NETWORK_SUPPORT_MENU) TITLE:=Ethernet bonding driver @@ -80,71 +57,6 @@ endef $(eval $(call KernelPackage,bonding)) -define KernelPackage/bridge - SUBMENU:=$(NETWORK_SUPPORT_MENU) - TITLE:=Ethernet bridging support - DEPENDS:=+kmod-stp - KCONFIG:= \ - CONFIG_BRIDGE \ - CONFIG_BRIDGE_IGMP_SNOOPING=y - FILES:=$(LINUX_DIR)/net/bridge/bridge.ko - AUTOLOAD:=$(call AutoLoad,11,bridge) -endef - -define KernelPackage/bridge/description - Kernel module for Ethernet bridging. -endef - -$(eval $(call KernelPackage,bridge)) - -define KernelPackage/llc - SUBMENU:=$(NETWORK_SUPPORT_MENU) - TITLE:=ANSI/IEEE 802.2 LLC support - KCONFIG:=CONFIG_LLC - FILES:= \ - $(LINUX_DIR)/net/llc/llc.ko \ - $(LINUX_DIR)/net/802/p8022.ko \ - $(LINUX_DIR)/net/802/psnap.ko - AUTOLOAD:=$(call AutoLoad,09,llc p8022 psnap) -endef - -define KernelPackage/llc/description - Kernel module for ANSI/IEEE 802.2 LLC support. -endef - -$(eval $(call KernelPackage,llc)) - -define KernelPackage/stp - SUBMENU:=$(NETWORK_SUPPORT_MENU) - TITLE:=Ethernet Spanning Tree Protocol support - DEPENDS:=+kmod-llc - KCONFIG:=CONFIG_STP - FILES:=$(LINUX_DIR)/net/802/stp.ko - AUTOLOAD:=$(call AutoLoad,10,stp) -endef - -define KernelPackage/stp/description - Kernel module for Ethernet Spanning Tree Protocol support. -endef - -$(eval $(call KernelPackage,stp)) - -define KernelPackage/8021q - SUBMENU:=$(NETWORK_SUPPORT_MENU) - TITLE:=802.1Q VLAN support - KCONFIG:=CONFIG_VLAN_8021Q \ - CONFIG_VLAN_8021Q_GVRP=n - FILES:=$(LINUX_DIR)/net/8021q/8021q.ko - AUTOLOAD:=$(call AutoLoad,12,8021q) -endef - -define KernelPackage/8021q/description - Kernel module for 802.1Q VLAN support -endef - -$(eval $(call KernelPackage,8021q)) - - define KernelPackage/udptunnel4 SUBMENU:=$(NETWORK_SUPPORT_MENU) TITLE:=IPv4 UDP tunneling support @@ -193,6 +105,29 @@ endef $(eval $(call KernelPackage,vxlan)) + +define KernelPackage/geneve + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=Generic Network Virtualization Encapsulation (Geneve) support + DEPENDS:= \ + +kmod-iptunnel \ + +kmod-udptunnel4 \ + +IPV6:kmod-udptunnel6 + KCONFIG:=CONFIG_GENEVE + FILES:= \ + $(LINUX_DIR)/net/ipv4/geneve.ko@le4.1 \ + $(LINUX_DIR)/drivers/net/geneve.ko@ge4.2 + AUTOLOAD:=$(call AutoLoad,13,geneve) +endef + +define KernelPackage/geneve/description + Kernel module for supporting Geneve in the Kernel. + Requires Kernel 3.18 or newer. +endef + +$(eval $(call KernelPackage,geneve)) + + define KernelPackage/capi SUBMENU:=$(NETWORK_SUPPORT_MENU) TITLE:=CAPI (ISDN) Support @@ -337,7 +272,8 @@ define KernelPackage/ipsec4 CONFIG_INET_XFRM_MODE_BEET \ CONFIG_INET_XFRM_MODE_TRANSPORT \ CONFIG_INET_XFRM_MODE_TUNNEL \ - CONFIG_INET_XFRM_TUNNEL + CONFIG_INET_XFRM_TUNNEL \ + CONFIG_INET_ESP_OFFLOAD=n FILES:=$(foreach mod,$(IPSEC4-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoLoad,32,$(notdir $(IPSEC4-m))) endef @@ -377,7 +313,8 @@ define KernelPackage/ipsec6 CONFIG_INET6_XFRM_MODE_BEET \ CONFIG_INET6_XFRM_MODE_TRANSPORT \ CONFIG_INET6_XFRM_MODE_TUNNEL \ - CONFIG_INET6_XFRM_TUNNEL + CONFIG_INET6_XFRM_TUNNEL \ + CONFIG_INET6_ESP_OFFLOAD=n FILES:=$(foreach mod,$(IPSEC6-m),$(LINUX_DIR)/net/$(mod).ko) AUTOLOAD:=$(call AutoLoad,32,$(notdir $(IPSEC6-m))) endef @@ -498,6 +435,28 @@ endef $(eval $(call KernelPackage,sit)) +define KernelPackage/fou + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=FOU and GUE decapsulation + DEPENDS:= \ + +kmod-iptunnel \ + +kmod-udptunnel4 \ + +IPV6:kmod-udptunnel6 + KCONFIG:= \ + CONFIG_NET_FOU \ + CONFIG_NET_FOU_IP_TUNNELS=y + FILES:=$(LINUX_DIR)/net/ipv4/fou.ko + AUTOLOAD:=$(call AutoProbe,fou) +endef + +define KernelPackage/fou/description + Kernel module for FOU (Foo over UDP) and GUE (Generic UDP Encapsulation) tunnelling. + Requires Kernel 3.18 or newer. +endef + +$(eval $(call KernelPackage,fou)) + + define KernelPackage/ip6-tunnel SUBMENU:=$(NETWORK_SUPPORT_MENU) TITLE:=IP-in-IPv6 tunnelling @@ -533,7 +492,7 @@ $(eval $(call KernelPackage,gre)) define KernelPackage/gre6 SUBMENU:=$(NETWORK_SUPPORT_MENU) TITLE:=GRE support over IPV6 - DEPENDS:=@IPV6 +kmod-iptunnel +kmod-ip6-tunnel + DEPENDS:=@IPV6 +kmod-iptunnel +kmod-ip6-tunnel +kmod-gre KCONFIG:=CONFIG_IPV6_GRE FILES:=$(LINUX_DIR)/net/ipv6/ip6_gre.ko AUTOLOAD:=$(call AutoLoad,39,ip6_gre) @@ -793,6 +752,7 @@ define KernelPackage/sched CONFIG_NET_SCH_DSMARK \ CONFIG_NET_SCH_FIFO \ CONFIG_NET_SCH_GRED \ + CONFIG_NET_SCH_MULTIQ \ CONFIG_NET_SCH_PRIO \ CONFIG_NET_SCH_RED \ CONFIG_NET_SCH_SFQ \ @@ -989,9 +949,10 @@ define KernelPackage/rxrpc CONFIG_RXKAD=m \ CONFIG_AF_RXRPC_DEBUG=n FILES:= \ - $(LINUX_DIR)/net/rxrpc/af-rxrpc.ko \ - $(LINUX_DIR)/net/rxrpc/rxkad.ko - AUTOLOAD:=$(call AutoLoad,30,rxkad af-rxrpc) + $(LINUX_DIR)/net/rxrpc/af-rxrpc.ko@lt4.11 \ + $(LINUX_DIR)/net/rxrpc/rxrpc.ko@ge4.11 \ + $(LINUX_DIR)/net/rxrpc/rxkad.ko@lt4.7 + AUTOLOAD:=$(call AutoLoad,30,rxkad@lt4.7 af-rxrpc.ko@lt4.11 rxrpc.ko@ge4.11) DEPENDS:= +kmod-crypto-manager +kmod-crypto-pcbc +kmod-crypto-fcrypt endef @@ -1008,6 +969,7 @@ define KernelPackage/mpls KCONFIG:= \ CONFIG_MPLS=y \ CONFIG_LWTUNNEL=y \ + CONFIG_LWTUNNEL_BPF=n \ CONFIG_NET_MPLS_GSO=m \ CONFIG_MPLS_ROUTING=m \ CONFIG_MPLS_IPTUNNEL=m @@ -1031,6 +993,7 @@ define KernelPackage/9pnet KCONFIG:= \ CONFIG_NET_9P \ CONFIG_NET_9P_DEBUG=n \ + CONFIG_NET_9P_XEN=n \ CONFIG_NET_9P_VIRTIO FILES:= \ $(LINUX_DIR)/net/9p/9pnet.ko \ @@ -1059,3 +1022,34 @@ define KernelPackage/nlmon/description endef $(eval $(call KernelPackage,nlmon)) + + +define KernelPackage/mdio + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=MDIO (clause 45) PHY support + KCONFIG:=CONFIG_MDIO + HIDDEN:=1 + FILES:=$(LINUX_DIR)/drivers/net/mdio.ko + AUTOLOAD:=$(call AutoLoad,32,mdio) +endef + +define KernelPackage/mdio/description + Kernel modules for MDIO (clause 45) PHY support +endef + +$(eval $(call KernelPackage,mdio)) + +define KernelPackage/macsec + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=IEEE 802.1AE MAC-level encryption (MAC) + DEPENDS:=+kmod-crypto-gcm @!LINUX_3_18 @!LINUX_4_1 @!LINUX_4_4 + KCONFIG:=CONFIG_MACSEC + FILES:=$(LINUX_DIR)/drivers/net/macsec.ko + AUTOLOAD:=$(call AutoLoad,13,macsec) +endef + +define KernelPackage/macsec/description + MACsec is an encryption standard for Ethernet. +endef + +$(eval $(call KernelPackage,macsec)) diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk index 017a94c622..b33883815e 100644 --- a/package/kernel/linux/modules/other.mk +++ b/package/kernel/linux/modules/other.mk @@ -30,7 +30,7 @@ $(eval $(call KernelPackage,6lowpan)) define KernelPackage/bluetooth SUBMENU:=$(OTHER_MENU) TITLE:=Bluetooth support - DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-crypto-hash +kmod-crypto-ecb +kmod-lib-crc16 +kmod-hid +!LINUX_3_18:kmod-crypto-cmac +LINUX_4_4:kmod-regmap + DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-crypto-hash +kmod-crypto-ecb +kmod-lib-crc16 +kmod-hid +!LINUX_3_18:kmod-crypto-cmac +!LINUX_3_18:kmod-regmap +LINUX_4_14:kmod-crypto-ecdh KCONFIG:= \ CONFIG_BLUEZ \ CONFIG_BLUEZ_L2CAP \ @@ -55,6 +55,7 @@ define KernelPackage/bluetooth CONFIG_BT_HCIUART_BCM=n \ CONFIG_BT_HCIUART_INTEL=n \ CONFIG_BT_HCIUART_H4 \ + CONFIG_BT_HCIUART_NOKIA=n \ CONFIG_BT_HIDP \ CONFIG_HID_SUPPORT=y $(call AddDepends/rfkill) @@ -114,6 +115,27 @@ endef $(eval $(call KernelPackage,bluetooth_6lowpan)) +define KernelPackage/btmrvl + SUBMENU:=$(OTHER_MENU) + TITLE:=Marvell Bluetooth Kernel Module support + DEPENDS:=+kmod-mmc +kmod-bluetooth +mwifiex-sdio-firmware + KCONFIG:= \ + CONFIG_BT_MRVL \ + CONFIG_BT_MRVL_SDIO + $(call AddDepends/bluetooth) + FILES:= \ + $(LINUX_DIR)/drivers/bluetooth/btmrvl.ko \ + $(LINUX_DIR)/drivers/bluetooth/btmrvl_sdio.ko + AUTOLOAD:=$(call AutoProbe,btmrvl btmrvl_sdio) +endef + +define KernelPackage/btmrvl/description + Kernel support for Marvell SDIO Bluetooth Module +endef + +$(eval $(call KernelPackage,btmrvl)) + + define KernelPackage/dma-buf SUBMENU:=$(OTHER_MENU) TITLE:=DMA shared buffer support @@ -125,6 +147,20 @@ endef $(eval $(call KernelPackage,dma-buf)) +define KernelPackage/nvmem + SUBMENU:=$(OTHER_MENU) + TITLE:=Non Volatile Memory support + KCONFIG:=CONFIG_NVMEM + HIDDEN:=1 + FILES:=$(LINUX_DIR)/drivers/nvmem/nvmem_core.ko@ge4.9 +endef + +define KernelPackage/nvmem/description + Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES, etc. +endef + +$(eval $(call KernelPackage,nvmem)) + define KernelPackage/eeprom-93cx6 SUBMENU:=$(OTHER_MENU) TITLE:=EEPROM 93CX6 support @@ -144,7 +180,7 @@ define KernelPackage/eeprom-at24 SUBMENU:=$(OTHER_MENU) TITLE:=EEPROM AT24 support KCONFIG:=CONFIG_EEPROM_AT24 - DEPENDS:=+kmod-i2c-core + DEPENDS:=+kmod-i2c-core +kmod-nvmem FILES:=$(LINUX_DIR)/drivers/misc/eeprom/at24.ko AUTOLOAD:=$(call AutoProbe,at24) endef @@ -160,6 +196,7 @@ define KernelPackage/eeprom-at25 SUBMENU:=$(OTHER_MENU) TITLE:=EEPROM AT25 support KCONFIG:=CONFIG_EEPROM_AT25 + DEPENDS:=+kmod-nvmem FILES:=$(LINUX_DIR)/drivers/misc/eeprom/at25.ko AUTOLOAD:=$(call AutoProbe,at25) endef @@ -190,7 +227,7 @@ $(eval $(call KernelPackage,gpio-dev)) define KernelPackage/gpio-mcp23s08 SUBMENU:=$(OTHER_MENU) TITLE:=Microchip MCP23xxx I/O expander - DEPENDS:=@GPIO_SUPPORT +PACKAGE_kmod-i2c-core:kmod-i2c-core + DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core KCONFIG:=CONFIG_GPIO_MCP23S08 FILES:=$(LINUX_DIR)/drivers/gpio/gpio-mcp23s08.ko AUTOLOAD:=$(call AutoLoad,40,gpio-mcp23s08) @@ -206,9 +243,9 @@ $(eval $(call KernelPackage,gpio-mcp23s08)) define KernelPackage/gpio-nxp-74hc164 SUBMENU:=$(OTHER_MENU) TITLE:=NXP 74HC164 GPIO expander support - KCONFIG:=CONFIG_GPIO_NXP_74HC164 - FILES:=$(LINUX_DIR)/drivers/gpio/nxp_74hc164.ko - AUTOLOAD:=$(call AutoProbe,nxp_74hc164) + KCONFIG:=CONFIG_GPIO_74X164 + FILES:=$(LINUX_DIR)/drivers/gpio/gpio-74x164.ko + AUTOLOAD:=$(call AutoProbe,gpio-74x164) endef define KernelPackage/gpio-nxp-74hc164/description @@ -248,84 +285,54 @@ endef $(eval $(call KernelPackage,gpio-pcf857x)) -define KernelPackage/iio-core - SUBMENU:=$(OTHER_MENU) - TITLE:=Industrial IO core - KCONFIG:= \ - CONFIG_IIO \ - CONFIG_IIO_BUFFER=y \ - CONFIG_IIO_KFIFO_BUF \ - CONFIG_IIO_TRIGGER=y \ - CONFIG_IIO_TRIGGERED_BUFFER - FILES:= \ - $(LINUX_DIR)/drivers/iio/industrialio.ko \ - $(if $(CONFIG_IIO_TRIGGERED_BUFFER),$(LINUX_DIR)/drivers/iio/industrialio-triggered-buffer.ko@lt4.4) \ - $(if $(CONFIG_IIO_TRIGGERED_BUFFER),$(LINUX_DIR)/drivers/iio/buffer/industrialio-triggered-buffer.ko@ge4.4) \ - $(LINUX_DIR)/drivers/iio/kfifo_buf.ko@lt4.4 \ - $(LINUX_DIR)/drivers/iio/buffer/kfifo_buf.ko@ge4.4 - AUTOLOAD:=$(call AutoLoad,55,industrialio kfifo_buf industrialio-triggered-buffer) -endef - -define KernelPackage/iio-core/description - The industrial I/O subsystem provides a unified framework for - drivers for many different types of embedded sensors using a - number of different physical interfaces (i2c, spi, etc) -endef - -$(eval $(call KernelPackage,iio-core)) - -define KernelPackage/iio-ad799x +define KernelPackage/ppdev SUBMENU:=$(OTHER_MENU) - DEPENDS:=kmod-i2c-core kmod-iio-core - TITLE:=Analog Devices AD799x ADC driver + TITLE:=Parallel port support KCONFIG:= \ - CONFIG_AD799X_RING_BUFFER=y \ - CONFIG_AD799X - FILES:=$(LINUX_DIR)/drivers/iio/adc/ad799x.ko - AUTOLOAD:=$(call AutoLoad,56,ad799x) -endef - -define KernelPackage/iio-ad799x/description - support for Analog Devices: - ad7991, ad7995, ad7999, ad7992, ad7993, ad7994, ad7997, ad7998 - i2c analog to digital converters (ADC). + CONFIG_PARPORT \ + CONFIG_PPDEV + FILES:= \ + $(LINUX_DIR)/drivers/parport/parport.ko \ + $(LINUX_DIR)/drivers/char/ppdev.ko + AUTOLOAD:=$(call AutoLoad,50,parport ppdev) endef -$(eval $(call KernelPackage,iio-ad799x)) +$(eval $(call KernelPackage,ppdev)) -define KernelPackage/iio-dht11 +define KernelPackage/parport-pc SUBMENU:=$(OTHER_MENU) - DEPENDS:=kmod-iio-core @GPIO_SUPPORT @USES_DEVICETREE - TITLE:=DHT11 (and compatible) humidity and temperature sensors + TITLE:=Parallel port interface (PC-style) support + DEPENDS:=+kmod-ppdev KCONFIG:= \ - CONFIG_DHT11 - FILES:=$(LINUX_DIR)/drivers/iio/humidity/dht11.ko - AUTOLOAD:=$(call AutoLoad,56,dht11) -endef - -define KernelPackage/iio-dht11/description - support for DHT11 and DHT22 digitial humidity and temperature sensors - attached at GPIO lines. You will need a custom device tree file to - specify the GPIO line to use. + CONFIG_KS0108=n \ + CONFIG_PARPORT_PC \ + CONFIG_PARPORT_1284=y \ + CONFIG_PARPORT_PC_FIFO=y \ + CONFIG_PARPORT_PC_PCMCIA=n \ + CONFIG_PARPORT_PC_SUPERIO=y \ + CONFIG_PARPORT_SERIAL=n \ + CONFIG_PARIDE=n \ + CONFIG_SCSI_IMM=n \ + CONFIG_SCSI_PPA=n + FILES:= \ + $(LINUX_DIR)/drivers/parport/parport_pc.ko + AUTOLOAD:=$(call AutoLoad,51,parport_pc) endef -$(eval $(call KernelPackage,iio-dht11)) +$(eval $(call KernelPackage,parport-pc)) define KernelPackage/lp SUBMENU:=$(OTHER_MENU) - TITLE:=Parallel port and line printer support + TITLE:=Parallel port line printer device support + DEPENDS:=+kmod-ppdev KCONFIG:= \ - CONFIG_PARPORT \ - CONFIG_PRINTER \ - CONFIG_PPDEV + CONFIG_PRINTER FILES:= \ - $(LINUX_DIR)/drivers/parport/parport.ko \ - $(LINUX_DIR)/drivers/char/lp.ko \ - $(LINUX_DIR)/drivers/char/ppdev.ko - AUTOLOAD:=$(call AutoLoad,50,parport lp ppdev) + $(LINUX_DIR)/drivers/char/lp.ko + AUTOLOAD:=$(call AutoLoad,52,lp) endef $(eval $(call KernelPackage,lp)) @@ -334,6 +341,7 @@ $(eval $(call KernelPackage,lp)) define KernelPackage/mmc SUBMENU:=$(OTHER_MENU) TITLE:=MMC/SD Card Support + DEPENDS:=@!TARGET_uml KCONFIG:= \ CONFIG_MMC \ CONFIG_MMC_BLOCK \ @@ -345,7 +353,8 @@ define KernelPackage/mmc CONFIG_SDIO_UART=n FILES:= \ $(LINUX_DIR)/drivers/mmc/core/mmc_core.ko \ - $(LINUX_DIR)/drivers/mmc/card/mmc_block.ko + $(LINUX_DIR)/drivers/mmc/card/mmc_block.ko@lt4.10 \ + $(LINUX_DIR)/drivers/mmc/core/mmc_block.ko@ge4.10 AUTOLOAD:=$(call AutoProbe,mmc_core mmc_block,1) endef @@ -402,7 +411,8 @@ $(eval $(call KernelPackage,rfkill)) define KernelPackage/softdog SUBMENU:=$(OTHER_MENU) TITLE:=Software watchdog driver - KCONFIG:=CONFIG_SOFT_WATCHDOG + KCONFIG:=CONFIG_SOFT_WATCHDOG \ + CONFIG_SOFT_WATCHDOG_PRETIMEOUT=n FILES:=$(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/softdog.ko AUTOLOAD:=$(call AutoLoad,50,softdog,1) endef @@ -469,7 +479,8 @@ $(eval $(call KernelPackage,bcma)) define KernelPackage/rtc-ds1307 SUBMENU:=$(OTHER_MENU) TITLE:=Dallas/Maxim DS1307 (and compatible) RTC support - DEPENDS:=@RTC_SUPPORT +kmod-i2c-core + DEFAULT:=m if ALL_KMODS && RTC_SUPPORT + DEPENDS:=+kmod-i2c-core +LINUX_4_14:kmod-regmap KCONFIG:=CONFIG_RTC_DRV_DS1307 \ CONFIG_RTC_CLASS=y FILES:=$(LINUX_DIR)/drivers/rtc/rtc-ds1307.ko @@ -487,7 +498,8 @@ $(eval $(call KernelPackage,rtc-ds1307)) define KernelPackage/rtc-ds1374 SUBMENU:=$(OTHER_MENU) TITLE:=Dallas/Maxim DS1374 RTC support - DEPENDS:=@RTC_SUPPORT +kmod-i2c-core + DEFAULT:=m if ALL_KMODS && RTC_SUPPORT + DEPENDS:=+kmod-i2c-core KCONFIG:=CONFIG_RTC_DRV_DS1374 \ CONFIG_RTC_DRV_DS1374_WDT=n \ CONFIG_RTC_CLASS=y @@ -505,7 +517,8 @@ $(eval $(call KernelPackage,rtc-ds1374)) define KernelPackage/rtc-ds1672 SUBMENU:=$(OTHER_MENU) TITLE:=Dallas/Maxim DS1672 RTC support - DEPENDS:=@RTC_SUPPORT +kmod-i2c-core + DEFAULT:=m if ALL_KMODS && RTC_SUPPORT + DEPENDS:=+kmod-i2c-core KCONFIG:=CONFIG_RTC_DRV_DS1672 \ CONFIG_RTC_CLASS=y FILES:=$(LINUX_DIR)/drivers/rtc/rtc-ds1672.ko @@ -522,7 +535,8 @@ $(eval $(call KernelPackage,rtc-ds1672)) define KernelPackage/rtc-isl1208 SUBMENU:=$(OTHER_MENU) TITLE:=Intersil ISL1208 RTC support - DEPENDS:=@RTC_SUPPORT +kmod-i2c-core + DEFAULT:=m if ALL_KMODS && RTC_SUPPORT + DEPENDS:=+kmod-i2c-core KCONFIG:=CONFIG_RTC_DRV_ISL1208 \ CONFIG_RTC_CLASS=y FILES:=$(LINUX_DIR)/drivers/rtc/rtc-isl1208.ko @@ -539,7 +553,8 @@ $(eval $(call KernelPackage,rtc-isl1208)) define KernelPackage/rtc-pcf8563 SUBMENU:=$(OTHER_MENU) TITLE:=Philips PCF8563/Epson RTC8564 RTC support - DEPENDS:=@RTC_SUPPORT +kmod-i2c-core + DEFAULT:=m if ALL_KMODS && RTC_SUPPORT + DEPENDS:=+kmod-i2c-core KCONFIG:=CONFIG_RTC_DRV_PCF8563 \ CONFIG_RTC_CLASS=y FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pcf8563.ko @@ -557,7 +572,7 @@ $(eval $(call KernelPackage,rtc-pcf8563)) define KernelPackage/rtc-pcf2123 SUBMENU:=$(OTHER_MENU) TITLE:=Philips PCF2123 RTC support - DEPENDS:=@RTC_SUPPORT + DEFAULT:=m if ALL_KMODS && RTC_SUPPORT KCONFIG:=CONFIG_RTC_DRV_PCF2123 \ CONFIG_RTC_CLASS=y FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pcf2123.ko @@ -573,7 +588,8 @@ $(eval $(call KernelPackage,rtc-pcf2123)) define KernelPackage/rtc-pt7c4338 SUBMENU:=$(OTHER_MENU) TITLE:=Pericom PT7C4338 RTC support - DEPENDS:=@RTC_SUPPORT +kmod-i2c-core + DEFAULT:=m if ALL_KMODS && RTC_SUPPORT + DEPENDS:=+kmod-i2c-core KCONFIG:=CONFIG_RTC_DRV_PT7C4338 \ CONFIG_RTC_CLASS=y FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pt7c4338.ko @@ -589,7 +605,8 @@ $(eval $(call KernelPackage,rtc-pt7c4338)) define KernelPackage/rtc-rs5c372a SUBMENU:=$(OTHER_MENU) TITLE:=Ricoh R2025S/D, RS5C372A/B, RV5C386, RV5C387A - DEPENDS:=@RTC_SUPPORT +kmod-i2c-core + DEFAULT:=m if ALL_KMODS && RTC_SUPPORT + DEPENDS:=+kmod-i2c-core KCONFIG:=CONFIG_RTC_DRV_RS5C372 \ CONFIG_RTC_CLASS=y FILES:=$(LINUX_DIR)/drivers/rtc/rtc-rs5c372.ko @@ -625,20 +642,53 @@ endef $(eval $(call KernelPackage,mtdtests)) +define KernelPackage/mtdoops + SUBMENU:=$(OTHER_MENU) + TITLE:=Log panic/oops to an MTD buffer + KCONFIG:=CONFIG_MTD_OOPS + FILES:=$(LINUX_DIR)/drivers/mtd/mtdoops.ko +endef + +define KernelPackage/mtdoops/description + Kernel modules for Log panic/oops to an MTD buffer +endef + +$(eval $(call KernelPackage,mtdoops)) + + +define KernelPackage/mtdram + SUBMENU:=$(OTHER_MENU) + TITLE:=Test MTD driver using RAM + KCONFIG:=CONFIG_MTD_MTDRAM \ + CONFIG_MTDRAM_TOTAL_SIZE=4096 \ + CONFIG_MTDRAM_ERASE_SIZE=128 + FILES:=$(LINUX_DIR)/drivers/mtd/devices/mtdram.ko +endef + +define KernelPackage/mtdram/description + Test MTD driver using RAM +endef + +$(eval $(call KernelPackage,mtdram)) + + define KernelPackage/serial-8250 SUBMENU:=$(OTHER_MENU) TITLE:=8250 UARTs KCONFIG:= CONFIG_SERIAL_8250 \ + CONFIG_SERIAL_8250_PCI \ CONFIG_SERIAL_8250_NR_UARTS=16 \ - CONFIG_SERIAL_8250_RUNTIME_UARTS=16 \ - CONFIG_SERIAL_8250_EXTENDED=y \ - CONFIG_SERIAL_8250_MANY_PORTS=y \ + CONFIG_SERIAL_8250_RUNTIME_UARTS=16 \ + CONFIG_SERIAL_8250_EXTENDED=y \ + CONFIG_SERIAL_8250_MANY_PORTS=y \ CONFIG_SERIAL_8250_SHARE_IRQ=y \ CONFIG_SERIAL_8250_DETECT_IRQ=n \ CONFIG_SERIAL_8250_RSA=n FILES:= \ $(LINUX_DIR)/drivers/tty/serial/8250/8250.ko \ - $(LINUX_DIR)/drivers/tty/serial/8250/8250_base.ko@ge4.4 + $(LINUX_DIR)/drivers/tty/serial/8250/8250_base.ko@ge4.4 \ + $(if $(CONFIG_PCI),$(LINUX_DIR)/drivers/tty/serial/8250/8250_pci.ko@ge4.4) + AUTOLOAD:=$(call AutoProbe,8250 8250_base 8250_pci) endef define KernelPackage/serial-8250/description @@ -648,6 +698,22 @@ endef $(eval $(call KernelPackage,serial-8250)) +define KernelPackage/serial-8250-exar + SUBMENU:=$(OTHER_MENU) + TITLE:=Exar 8250 UARTs + KCONFIG:= CONFIG_SERIAL_8250_EXAR + FILES:=$(LINUX_DIR)/drivers/tty/serial/8250/8250_exar.ko + AUTOLOAD:=$(call AutoProbe,8250 8250_base 8250_exar) + DEPENDS:=+kmod-serial-8250 +endef + +define KernelPackage/serial-8250-exar/description + Kernel module for Exar serial ports +endef + +$(eval $(call KernelPackage,serial-8250-exar)) + + define KernelPackage/regmap SUBMENU:=$(OTHER_MENU) TITLE:=Generic register map support @@ -658,11 +724,15 @@ define KernelPackage/regmap CONFIG_REGMAP_I2C \ CONFIG_SPI=y FILES:= \ - $(LINUX_DIR)/drivers/base/regmap/regmap-core.ko \ $(LINUX_DIR)/drivers/base/regmap/regmap-i2c.ko \ $(LINUX_DIR)/drivers/base/regmap/regmap-mmio.ko \ $(if $(CONFIG_SPI),$(LINUX_DIR)/drivers/base/regmap/regmap-spi.ko) AUTOLOAD:=$(call AutoLoad,21,regmap-core regmap-i2c regmap-mmio regmap-spi) + ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"") + ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"") + FILES += $(LINUX_DIR)/drivers/base/regmap/regmap-core.ko + endif + endif endef define KernelPackage/regmap/description @@ -696,6 +766,7 @@ define KernelPackage/zram CONFIG_ZRAM \ CONFIG_ZRAM_DEBUG=n \ CONFIG_PGTABLE_MAPPING=n \ + CONFIG_ZRAM_WRITEBACK=n \ CONFIG_ZSMALLOC_STAT=n \ CONFIG_ZRAM_LZ4_COMPRESS=y FILES:= \ @@ -939,3 +1010,117 @@ define KernelPackage/bmp085-spi/description endef $(eval $(call KernelPackage,bmp085-spi)) + +define KernelPackage/tpm + SUBMENU:=$(OTHER_MENU) + TITLE:=TPM Hardware Support + KCONFIG:= CONFIG_TCG_TPM + FILES:= $(LINUX_DIR)/drivers/char/tpm/tpm.ko + AUTOLOAD:=$(call AutoLoad,10,tpm,1) +endef + +define KernelPackage/tpm/description + This enables TPM Hardware Support. +endef + +$(eval $(call KernelPackage,tpm)) + +define KernelPackage/tpm-tis + SUBMENU:=$(OTHER_MENU) + TITLE:=TPM TIS 1.2 Interface / TPM 2.0 FIFO Interface + DEPENDS:= @TARGET_x86 +kmod-tpm + KCONFIG:= CONFIG_TCG_TIS + FILES:= \ + $(LINUX_DIR)/drivers/char/tpm/tpm_tis.ko \ + $(LINUX_DIR)/drivers/char/tpm/tpm_tis_core.ko + AUTOLOAD:=$(call AutoLoad,20,tpm_tis,1) +endef + +define KernelPackage/tpm-tis/description + If you have a TPM security chip that is compliant with the + TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO + specification (TPM2.0) say Yes and it will be accessible from + within Linux. +endef + +$(eval $(call KernelPackage,tpm-tis)) + +define KernelPackage/tpm-i2c-atmel + SUBMENU:=$(OTHER_MENU) + TITLE:=TPM I2C Atmel Support + DEPENDS:= +kmod-tpm +kmod-i2c-core + KCONFIG:= CONFIG_TCG_TIS_I2C_ATMEL + FILES:= $(LINUX_DIR)/drivers/char/tpm/tpm_i2c_atmel.ko + AUTOLOAD:=$(call AutoLoad,40,tpm_i2c_atmel,1) +endef + +define KernelPackage/tpm-i2c-atmel/description + This enables the TPM Interface Specification 1.2 Interface (I2C - Atmel) +endef + +$(eval $(call KernelPackage,tpm-i2c-atmel)) + +define KernelPackage/tpm-i2c-infineon + SUBMENU:=$(OTHER_MENU) + TITLE:= TPM I2C Infineon driver + DEPENDS:= +kmod-tpm +kmod-i2c-core + KCONFIG:= CONFIG_TCG_TIS_I2C_INFINEON + FILES:= $(LINUX_DIR)/drivers/char/tpm/tpm_i2c_infineon.ko + AUTOLOAD:= $(call AutoLoad,40,tpm_i2c_infineon,1) +endef + +define KernelPackage/tpm-i2c-infineon/description + This enables the TPM Interface Specification 1.2 Interface (I2C - Infineon) +endef + +$(eval $(call KernelPackage,tpm-i2c-infineon)) + + +define KernelPackage/w83627hf-wdt + SUBMENU:=$(OTHER_MENU) + TITLE:=Winbond 83627HF Watchdog Timer + KCONFIG:=CONFIG_W83627HF_WDT + FILES:=$(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/w83627hf_wdt.ko + AUTOLOAD:=$(call AutoLoad,50,w83627hf-wdt,1) +endef + +define KernelPackage/w83627hf-wdt/description + Kernel module for Winbond 83627HF Watchdog Timer +endef + +$(eval $(call KernelPackage,w83627hf-wdt)) + + +define KernelPackage/itco-wdt + SUBMENU:=$(OTHER_MENU) + TITLE:=Intel iTCO Watchdog Timer + KCONFIG:=CONFIG_ITCO_WDT \ + CONFIG_ITCO_VENDOR_SUPPORT=y + FILES:=$(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/iTCO_wdt.ko \ + $(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/iTCO_vendor_support.ko + AUTOLOAD:=$(call AutoLoad,50,iTCO_vendor_support iTCO_wdt,1) +endef + +define KernelPackage/itco-wdt/description + Kernel module for Intel iTCO Watchdog Timer +endef + +$(eval $(call KernelPackage,itco-wdt)) + + +define KernelPackage/it87-wdt + SUBMENU:=$(OTHER_MENU) + TITLE:=ITE IT87 Watchdog Timer + KCONFIG:=CONFIG_IT87_WDT + FILES:=$(LINUX_DIR)/drivers/$(WATCHDOG_DIR)/it87_wdt.ko + AUTOLOAD:=$(call AutoLoad,50,it87-wdt,1) + MODPARAMS.it87-wdt:= \ + nogameport=1 \ + nocir=1 +endef + +define KernelPackage/it87-wdt/description + Kernel module for ITE IT87 Watchdog Timer +endef + +$(eval $(call KernelPackage,it87-wdt)) diff --git a/package/kernel/linux/modules/sound.mk b/package/kernel/linux/modules/sound.mk index 75aa3d3fc4..177140e0fc 100644 --- a/package/kernel/linux/modules/sound.mk +++ b/package/kernel/linux/modules/sound.mk @@ -24,7 +24,8 @@ SOUNDCORE_FILES ?= \ $(LINUX_DIR)/sound/soundcore.ko \ $(LINUX_DIR)/sound/core/snd.ko \ $(LINUX_DIR)/sound/core/snd-hwdep.ko \ - $(LINUX_DIR)/sound/core/seq/snd-seq-device.ko \ + $(LINUX_DIR)/sound/core/seq/snd-seq-device.ko@lt4.13 \ + $(LINUX_DIR)/sound/core/snd-seq-device.ko@ge4.13 \ $(LINUX_DIR)/sound/core/snd-rawmidi.ko \ $(LINUX_DIR)/sound/core/snd-timer.ko \ $(LINUX_DIR)/sound/core/snd-pcm.ko \ @@ -134,6 +135,22 @@ endef $(eval $(call KernelPackage,sound-seq)) +define KernelPackage/sound-ens1371 + TITLE:=(Creative) Ensoniq AudioPCI 1371 + KCONFIG:=CONFIG_SND_ENS1371 + DEPENDS:=@PCI_SUPPORT +kmod-ac97 + FILES:=$(LINUX_DIR)/sound/pci/snd-ens1371.ko + AUTOLOAD:=$(call AutoLoad,36,snd-ens1371) + $(call AddDepends/sound) +endef + +define KernelPackage/sound-ens1371/description + support for (Creative) Ensoniq AudioPCI 1371 chips +endef + +$(eval $(call KernelPackage,sound-ens1371)) + + define KernelPackage/sound-i8x0 TITLE:=Intel/SiS/nVidia/AMD/ALi AC97 Controller DEPENDS:=+kmod-ac97 diff --git a/package/kernel/linux/modules/spi.mk b/package/kernel/linux/modules/spi.mk index 1c2a789fed..01dc7dc7e6 100644 --- a/package/kernel/linux/modules/spi.mk +++ b/package/kernel/linux/modules/spi.mk @@ -43,22 +43,6 @@ endef $(eval $(call KernelPackage,spi-bitbang)) -define KernelPackage/spi-gpio-old - SUBMENU:=$(SPI_MENU) - TITLE:=Old GPIO based bitbanging SPI controller (DEPRECATED) - DEPENDS:=@GPIO_SUPPORT +kmod-spi-bitbang - KCONFIG:=CONFIG_SPI_GPIO_OLD - FILES:=$(LINUX_DIR)/drivers/spi/spi_gpio_old.ko - AUTOLOAD:=$(call AutoProbe,spi_gpio_old) -endef - -define KernelPackage/spi-gpio-old/description - This package contains the GPIO based bitbanging SPI controller driver -endef - -$(eval $(call KernelPackage,spi-gpio-old)) - - define KernelPackage/spi-gpio SUBMENU:=$(SPI_MENU) TITLE:=GPIO-based bitbanging SPI Master diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk index 4fe17f56ec..5e10f9eab5 100644 --- a/package/kernel/linux/modules/usb.mk +++ b/package/kernel/linux/modules/usb.mk @@ -60,7 +60,7 @@ define KernelPackage/usb-phy-nop KCONFIG:=CONFIG_NOP_USB_XCEIV HIDDEN:=1 FILES:=$(LINUX_DIR)/drivers/usb/phy/phy-generic.ko - AUTOLOAD:=$(call AutoLoad,43,phy-generic) + AUTOLOAD:=$(call AutoLoad,21,phy-generic,1) $(call AddDepends/usb) endef @@ -71,13 +71,51 @@ endef $(eval $(call KernelPackage,usb-phy-nop)) +define KernelPackage/usb-phy-qcom-dwc3 + TITLE:=DWC3 USB QCOM PHY driver + DEPENDS:=@TARGET_ipq40xx||@TARGET_ipq806x +kmod-usb-dwc3-of-simple + KCONFIG:= CONFIG_PHY_QCOM_DWC3 + FILES:= \ + $(LINUX_DIR)/drivers/phy/phy-qcom-dwc3.ko@lt4.13 \ + $(LINUX_DIR)/drivers/phy/qualcomm/phy-qcom-dwc3.ko@ge4.13 + AUTOLOAD:=$(call AutoLoad,45,phy-qcom-dwc3,1) + $(call AddDepends/usb) +endef + +define KernelPackage/usb-phy-qcom-dwc3/description + This driver provides support for the integrated DesignWare + USB3 IP Core within the QCOM SoCs. +endef + +$(eval $(call KernelPackage,usb-phy-qcom-dwc3)) + + +define KernelPackage/phy-ath79-usb + TITLE:=Support for ATH79 USB PHY + KCONFIG:=CONFIG_PHY_AR7100_USB \ + CONFIG_PHY_AR7200_USB + DEPENDS:=@TARGET_ath79 + HIDDEN:=1 + FILES:=$(LINUX_DIR)/drivers/phy/phy-ar7100-usb.ko \ + $(LINUX_DIR)/drivers/phy/phy-ar7200-usb.ko + AUTOLOAD:=$(call AutoLoad,21,phy-ar7100-usb phy-ar7200-usb,1) + $(call AddDepends/usb) +endef + +define KernelPackage/phy-ath79-usb/description + Support for ATH79 USB transceiver +endef + +$(eval $(call KernelPackage,phy-ath79-usb)) + + define KernelPackage/usb-gadget TITLE:=USB Gadget support KCONFIG:=CONFIG_USB_GADGET HIDDEN:=1 FILES:=\ $(LINUX_DIR)/drivers/usb/gadget/udc/udc-core.ko - AUTOLOAD:=$(call AutoLoad,45,udc-core) + AUTOLOAD:=$(call AutoLoad,21,udc-core,1) DEPENDS:=@USB_GADGET_SUPPORT $(call AddDepends/usb) endef @@ -104,6 +142,23 @@ endef $(eval $(call KernelPackage,usb-lib-composite)) +define KernelPackage/usb-gadget-hid + TITLE:=USB HID Gadget Support + KCONFIG:=CONFIG_USB_G_HID + DEPENDS:=+kmod-usb-gadget +kmod-usb-lib-composite + FILES:= \ + $(LINUX_DIR)/drivers/usb/gadget/legacy/g_hid.ko \ + $(LINUX_DIR)/drivers/usb/gadget/function/usb_f_hid.ko + AUTOLOAD:=$(call AutoLoad,52,usb_f_hid) + $(call AddDepends/usb) +endef + +define KernelPackage/usb-gadget-hid/description + Kernel support for USB HID Gadget. +endef + +$(eval $(call KernelPackage,usb-gadget-hid)) + define KernelPackage/usb-gadget-ehci-debug TITLE:=USB EHCI debug port Gadget support KCONFIG:=\ @@ -112,7 +167,6 @@ define KernelPackage/usb-gadget-ehci-debug CONFIG_USB_G_DBGP_PRINTK=n DEPENDS:=+kmod-usb-gadget +kmod-usb-lib-composite +kmod-usb-gadget-serial FILES:=$(LINUX_DIR)/drivers/usb/gadget/legacy/g_dbgp.ko - AUTOLOAD:=$(call AutoLoad,52,g_dbgp) $(call AddDepends/usb) endef @@ -135,7 +189,7 @@ define KernelPackage/usb-gadget-eth $(LINUX_DIR)/drivers/usb/gadget/function/usb_f_ecm_subset.ko \ $(LINUX_DIR)/drivers/usb/gadget/function/usb_f_rndis.ko \ $(LINUX_DIR)/drivers/usb/gadget/legacy/g_ether.ko - AUTOLOAD:=$(call AutoLoad,52,usb_f_ecm g_ether) + AUTOLOAD:=$(call AutoLoad,52,usb_f_ecm) $(call AddDepends/usb) endef @@ -156,7 +210,7 @@ define KernelPackage/usb-gadget-serial $(LINUX_DIR)/drivers/usb/gadget/function/usb_f_obex.ko \ $(LINUX_DIR)/drivers/usb/gadget/function/usb_f_serial.ko \ $(LINUX_DIR)/drivers/usb/gadget/legacy/g_serial.ko - AUTOLOAD:=$(call AutoLoad,52,usb_f_acm g_serial) + AUTOLOAD:=$(call AutoLoad,52,usb_f_acm) $(call AddDepends/usb) endef @@ -173,7 +227,7 @@ define KernelPackage/usb-gadget-mass-storage FILES:= \ $(LINUX_DIR)/drivers/usb/gadget/function/usb_f_mass_storage.ko \ $(LINUX_DIR)/drivers/usb/gadget/legacy/g_mass_storage.ko - AUTOLOAD:=$(call AutoLoad,52,usb_f_mass_storage g_mass_storage) + AUTOLOAD:=$(call AutoLoad,52,usb_f_mass_storage) $(call AddDepends/usb) endef @@ -187,6 +241,7 @@ $(eval $(call KernelPackage,usb-gadget-mass-storage)) define KernelPackage/usb-uhci TITLE:=Support for UHCI controllers KCONFIG:= \ + CONFIG_USB_PCI=y \ CONFIG_USB_UHCI_ALT \ CONFIG_USB_UHCI_HCD FILES:=$(LINUX_DIR)/drivers/usb/host/uhci-hcd.ko @@ -236,7 +291,9 @@ $(eval $(call KernelPackage,usb-ohci,1)) define KernelPackage/usb-ohci-pci TITLE:=Support for PCI OHCI controllers DEPENDS:=@PCI_SUPPORT +kmod-usb-ohci - KCONFIG:=CONFIG_USB_OHCI_HCD_PCI + KCONFIG:= \ + CONFIG_USB_PCI=y \ + CONFIG_USB_OHCI_HCD_PCI FILES:=$(LINUX_DIR)/drivers/usb/host/ohci-pci.ko AUTOLOAD:=$(call AutoLoad,51,ohci-pci,1) $(call AddDepends/usb) @@ -273,26 +330,37 @@ define KernelPackage/usb-ssb endef $(eval $(call KernelPackage,usb-ssb)) +define KernelPackage/usb-ehci + TITLE:=EHCI controller support + HIDDEN:=1 + KCONFIG:= \ + CONFIG_USB_EHCI_HCD + FILES:= \ + $(LINUX_DIR)/drivers/usb/host/ehci-hcd.ko + AUTOLOAD:=$(call AutoLoad,35,ehci-hcd,1) + $(call AddDepends/usb) +endef +$(eval $(call KernelPackage,usb-ehci)) + define KernelPackage/usb2 TITLE:=Support for USB2 controllers DEPENDS:=\ +TARGET_brcm47xx:kmod-usb-bcma \ +TARGET_brcm47xx:kmod-usb-ssb \ +TARGET_bcm53xx:kmod-usb-bcma \ - +TARGET_bcm53xx:kmod-phy-bcm-ns-usb2 + +TARGET_bcm53xx:kmod-phy-bcm-ns-usb2 \ + +TARGET_ath79:kmod-phy-ath79-usb \ + +kmod-usb-ehci KCONFIG:=\ - CONFIG_USB_EHCI_HCD \ - CONFIG_USB_EHCI_ATH79=y \ + CONFIG_USB_EHCI_HCD_PLATFORM \ CONFIG_USB_EHCI_BCM63XX=y \ CONFIG_USB_IMX21_HCD=y \ CONFIG_USB_EHCI_MXC=y \ CONFIG_USB_OCTEON_EHCI=y \ CONFIG_USB_EHCI_HCD_ORION=y \ - CONFIG_USB_EHCI_HCD_PLATFORM=y \ CONFIG_USB_EHCI_HCD_AT91=y \ CONFIG_USB_EHCI_FSL FILES:= \ - $(LINUX_DIR)/drivers/usb/host/ehci-hcd.ko \ $(LINUX_DIR)/drivers/usb/host/ehci-platform.ko ifneq ($(wildcard $(LINUX_DIR)/drivers/usb/host/ehci-orion.ko),) FILES+=$(LINUX_DIR)/drivers/usb/host/ehci-orion.ko @@ -314,7 +382,9 @@ $(eval $(call KernelPackage,usb2)) define KernelPackage/usb2-pci TITLE:=Support for PCI USB2 controllers DEPENDS:=@PCI_SUPPORT +kmod-usb2 - KCONFIG:=CONFIG_USB_EHCI_PCI + KCONFIG:= \ + CONFIG_USB_PCI=y \ + CONFIG_USB_EHCI_PCI FILES:=$(LINUX_DIR)/drivers/usb/host/ehci-pci.ko AUTOLOAD:=$(call AutoLoad,42,ehci-pci,1) $(call AddDepends/usb) @@ -331,6 +401,7 @@ define KernelPackage/usb-dwc2 TITLE:=DWC2 USB controller driver DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget KCONFIG:= \ + CONFIG_USB_PCI=y \ CONFIG_USB_DWC2 \ CONFIG_USB_DWC2_PCI \ CONFIG_USB_DWC2_PLATFORM \ @@ -375,6 +446,23 @@ endef $(eval $(call KernelPackage,usb-dwc3)) +define KernelPackage/usb-dwc3-of-simple + TITLE:=DWC3 USB simple OF driver + DEPENDS:=@TARGET_ipq40xx||@TARGET_ipq806x +kmod-usb-dwc3 + KCONFIG:= CONFIG_USB_DWC3_OF_SIMPLE + FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-of-simple.ko + AUTOLOAD:=$(call AutoLoad,53,dwc3-of-simple,1) + $(call AddDepends/usb) +endef + +define KernelPackage/usb-dwc3-of-simple/description + This driver provides generic platform glue for the integrated DesignWare + USB3 IP Core. +endef + + +$(eval $(call KernelPackage,usb-dwc3-of-simple)) + define KernelPackage/usb-acm TITLE:=Support for modems/isdn controllers KCONFIG:=CONFIG_USB_ACM @@ -493,6 +581,38 @@ endef $(eval $(call KernelPackage,usb-serial-ch341)) +define KernelPackage/usb-serial-edgeport + TITLE:=Support for Digi Edgeport devices + KCONFIG:=CONFIG_USB_SERIAL_EDGEPORT + FILES:=$(LINUX_DIR)/drivers/usb/serial/io_edgeport.ko + AUTOLOAD:=$(call AutoProbe,io_edgeport) + $(call AddDepends/usb-serial) + DEPENDS+=+edgeport-firmware +endef + +define KernelPackage/usb-serial-edgeport/description + Kernel support for Inside Out Networks (Digi) + Edgeport/4 + Rapidport/4 + Edgeport/4t + Edgeport/2 + Edgeport/4i + Edgeport/2i + Edgeport/421 + Edgeport/21 + Edgeport/8 + Edgeport/8 Dual + Edgeport/2D8 + Edgeport/4D8 + Edgeport/8i + Edgeport/2 DIN + Edgeport/4 DIN + Edgeport/16 Dual +endef + +$(eval $(call KernelPackage,usb-serial-edgeport)) + + define KernelPackage/usb-serial-ftdi TITLE:=Support for FTDI devices KCONFIG:=CONFIG_USB_SERIAL_FTDI_SIO @@ -846,6 +966,25 @@ endef $(eval $(call KernelPackage,usb-storage-extras)) +define KernelPackage/usb-storage-uas + SUBMENU:=$(USB_MENU) + TITLE:=USB Attached SCSI (UASP) support + DEPENDS:=+kmod-usb-storage + KCONFIG:=CONFIG_USB_UAS + FILES:=$(LINUX_DIR)/drivers/usb/storage/uas.ko + AUTOLOAD:=$(call AutoProbe,uas,1) +endef + +define KernelPackage/usb-storage-uas/description + Say Y here if you want to include support for + USB Attached SCSI (UAS/UASP), a higher + performance protocol available on many + newer USB 3.0 storage devices +endef + +$(eval $(call KernelPackage,usb-storage-uas)) + + define KernelPackage/usb-atm TITLE:=Support for ATM on USB bus DEPENDS:=+kmod-atm @@ -1273,6 +1412,19 @@ endef $(eval $(call KernelPackage,usb-net-kalmia)) +define KernelPackage/usb-net-pl + TITLE:=Prolific PL-2301/2302/25A1 based cables + KCONFIG:=CONFIG_USB_NET_PLUSB + FILES:=$(LINUX_DIR)/drivers/net/usb/plusb.ko + AUTOLOAD:=$(call AutoProbe,plusb) + $(call AddDepends/usb-net) +endef + +define KernelPackage/usb-net-pl/description + Kernel support for Prolific PL-2301/2302/25A1 based cables +endef + +$(eval $(call KernelPackage,usb-net-pl)) define KernelPackage/usb-hid TITLE:=Support for USB Human Input Devices @@ -1375,6 +1527,54 @@ endef $(eval $(call KernelPackage,usbip-server)) +define KernelPackage/usb-chipidea + TITLE:=Host and device support for Chipidea controllers + DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget @TARGET_ar71xx||TARGET_ath79 +kmod-usb-ehci +kmod-usb-phy-nop + KCONFIG:= \ + CONFIG_EXTCON \ + CONFIG_USB_CHIPIDEA \ + CONFIG_USB_CHIPIDEA_HOST=y \ + CONFIG_USB_CHIPIDEA_UDC=y \ + CONFIG_USB_CHIPIDEA_DEBUG=y + FILES:= \ + $(LINUX_DIR)/drivers/extcon/extcon.ko@lt4.9 \ + $(LINUX_DIR)/drivers/extcon/extcon-core.ko@ge4.9 \ + $(LINUX_DIR)/drivers/usb/chipidea/ci_hdrc.ko + AUTOLOAD:=$(call AutoLoad,39,ci_hdrc,1) + $(call AddDepends/usb) +endef + +define KernelPackage/usb-chipidea/description + Kernel support for USB Chipidea controllers +endef + +$(eval $(call KernelPackage,usb-chipidea)) + + +define KernelPackage/usb-chipidea2 + TITLE:=Host and device support for Chipidea2 controllers + DEPENDS:=+kmod-usb-chipidea + KCONFIG:= \ + CONFIG_EXTCON \ + CONFIG_USB_CHIPIDEA \ + CONFIG_USB_CHIPIDEA_HOST=y \ + CONFIG_USB_CHIPIDEA_UDC=y \ + CONFIG_USB_CHIPIDEA_DEBUG=y + FILES:= \ + $(LINUX_DIR)/drivers/extcon/extcon.ko@lt4.9 \ + $(LINUX_DIR)/drivers/extcon/extcon-core.ko@ge4.9 \ + $(LINUX_DIR)/drivers/usb/chipidea/ci_hdrc_usb2.ko + AUTOLOAD:=$(call AutoLoad,39,ci_hdrc_usb2,1) + $(call AddDepends/usb) +endef + +define KernelPackage/usb-chipidea2/description + Kernel support for USB Chipidea controllers +endef + +$(eval $(call KernelPackage,usb-chipidea2)) + + define KernelPackage/usbmon TITLE:=USB traffic monitor KCONFIG:=CONFIG_USB_MON @@ -1402,6 +1602,7 @@ define KernelPackage/usb3 +TARGET_bcm53xx:kmod-usb-bcma \ +TARGET_bcm53xx:kmod-phy-bcm-ns-usb3 KCONFIG:= \ + CONFIG_USB_PCI=y \ CONFIG_USB_XHCI_HCD \ CONFIG_USB_XHCI_PCI \ CONFIG_USB_XHCI_PLATFORM \ @@ -1423,7 +1624,9 @@ $(eval $(call KernelPackage,usb3)) define KernelPackage/usb-net2280 TITLE:=Support for NetChip 228x PCI USB peripheral controller - KCONFIG:= CONFIG_USB_NET2280 + KCONFIG:= \ + CONFIG_USB_PCI=y \ + CONFIG_USB_NET2280 DEPENDS:=@PCI_SUPPORT +kmod-usb-gadget FILES:=$(LINUX_DIR)/drivers/usb/gadget/udc/net2280.ko AUTOLOAD:=$(call AutoLoad,46,net2280) diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk index 13ff14cbb6..3f46860f54 100644 --- a/package/kernel/linux/modules/video.mk +++ b/package/kernel/linux/modules/video.mk @@ -56,34 +56,13 @@ $(eval $(call KernelPackage,backlight-pwm)) define KernelPackage/fb SUBMENU:=$(VIDEO_MENU) - TITLE:=Framebuffer support + TITLE:=Framebuffer and framebuffer console support DEPENDS:=@DISPLAY_SUPPORT KCONFIG:= \ CONFIG_FB \ CONFIG_FB_MXS=n \ - CONFIG_FB_SM750=n - FILES:=$(LINUX_DIR)/drivers/video/fbdev/core/fb.ko - AUTOLOAD:=$(call AutoLoad,06,fb) -endef - -define KernelPackage/fb/description - Kernel support for framebuffers -endef - -define KernelPackage/fb/x86 - FILES+=$(LINUX_DIR)/arch/x86/video/fbdev.ko - AUTOLOAD+=$(call AutoLoad,06,fbdev fb) -endef - -$(eval $(call KernelPackage,fb)) - - -define KernelPackage/fbcon - SUBMENU:=$(VIDEO_MENU) - TITLE:=Framebuffer Console support - DEPENDS:=+kmod-fb - KCONFIG:= \ - CONFIG_FRAMEBUFFER_CONSOLE \ + CONFIG_FB_SM750=n \ + CONFIG_FRAMEBUFFER_CONSOLE=y \ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y \ CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y \ CONFIG_FONTS=y \ @@ -102,23 +81,22 @@ define KernelPackage/fbcon CONFIG_CONSOLE_TRANSLATIONS=y \ CONFIG_VT_CONSOLE=y \ CONFIG_VT_HW_CONSOLE_BINDING=y - FILES:= \ - $(LINUX_DIR)/drivers/video/console/bitblit.ko \ - $(LINUX_DIR)/drivers/video/console/softcursor.ko \ - $(LINUX_DIR)/drivers/video/console/fbcon.ko \ - $(LINUX_DIR)/drivers/video/console/fbcon_rotate.ko \ - $(LINUX_DIR)/drivers/video/console/fbcon_cw.ko \ - $(LINUX_DIR)/drivers/video/console/fbcon_ud.ko \ - $(LINUX_DIR)/drivers/video/console/fbcon_ccw.ko \ + FILES:=$(LINUX_DIR)/drivers/video/fbdev/core/fb.ko \ $(LINUX_DIR)/lib/fonts/font.ko - AUTOLOAD:=$(call AutoLoad,94,font softcursor tileblit fbcon_cw fbcon_ud fbcon_ccw fbcon_rotate bitblit fbcon) + AUTOLOAD:=$(call AutoLoad,06,fb font) +endef + +define KernelPackage/fb/description + Kernel support for framebuffers and framebuffer console. endef -define KernelPackage/fbcon/description - Kernel support for framebuffer console +define KernelPackage/fb/x86 + FILES+=$(LINUX_DIR)/arch/x86/video/fbdev.ko + AUTOLOAD:=$(call AutoLoad,06,fbdev fb font) endef -$(eval $(call KernelPackage,fbcon)) +$(eval $(call KernelPackage,fb)) + define KernelPackage/fb-cfb-fillrect SUBMENU:=$(VIDEO_MENU) @@ -186,40 +164,8 @@ define KernelPackage/drm SUBMENU:=$(VIDEO_MENU) TITLE:=Direct Rendering Manager (DRM) support HIDDEN:=1 - DEPENDS:=+kmod-dma-buf - KCONFIG:=CONFIG_DRM \ - CONFIG_DRM_FBDEV_EMULATION=n \ - CONFIG_DRM_LOAD_EDID_FIRMWARE=n \ - CONFIG_DRM_IMX=n \ - CONFIG_DRM_PTN3460=n \ - CONFIG_DRM_PS8622=n \ - CONFIG_DRM_TDFX=n \ - CONFIG_DRM_R128=n \ - CONFIG_DRM_RADEON=n \ - CONFIG_DRM_AMDGPU=n \ - CONFIG_DRM_NOUVEAU=n \ - CONFIG_DRM_MGA=n \ - CONFIG_DRM_VIA=n \ - CONFIG_DRM_SAVAGE=n \ - CONFIG_DRM_VGEM=n \ - CONFIG_DRM_EXYNOS=n \ - CONFIG_DRM_VMWGFX=n \ - CONFIG_DRM_UDL=n \ - CONFIG_DRM_AST=n \ - CONFIG_DRM_MGAG200=n \ - CONFIG_DRM_CIRRUS_QEMU=n \ - CONFIG_DRM_ARMADA=n \ - CONFIG_DRM_TILCDC=n \ - CONFIG_DRM_QXL=n \ - CONFIG_DRM_BOCHS=n \ - CONFIG_DRM_FSL_DCU=n \ - CONFIG_DRM_STI=n \ - CONFIG_DRM_NXP_PTN3460=n \ - CONFIG_DRM_PARADE_PS8622=n \ - CONFIG_DRM_I2C_ADV7511=n \ - CONFIG_DRM_I2C_CH7006=n \ - CONFIG_DRM_I2C_SIL164=n \ - CONFIG_DRM_I2C_NXP_TDA998X=n + DEPENDS:=+kmod-dma-buf +kmod-i2c-core + KCONFIG:=CONFIG_DRM FILES:=$(LINUX_DIR)/drivers/gpu/drm/drm.ko AUTOLOAD:=$(call AutoLoad,05,drm) endef @@ -236,6 +182,7 @@ define KernelPackage/drm-imx DEPENDS:=@TARGET_imx6 +kmod-drm +kmod-fb +kmod-fb-cfb-copyarea +kmod-fb-cfb-imgblt +kmod-fb-cfb-fillrect +kmod-fb-sys-fops KCONFIG:=CONFIG_DRM_IMX \ CONFIG_DRM_FBDEV_EMULATION=y \ + CONFIG_DRM_FBDEV_OVERALLOC=100 \ CONFIG_IMX_IPUV3_CORE \ CONFIG_RESET_CONTROLLER=y \ CONFIG_DRM_IMX_IPUV3 \ @@ -255,7 +202,6 @@ define KernelPackage/drm-imx FILES:= \ $(LINUX_DIR)/drivers/gpu/drm/imx/imxdrm.ko \ $(LINUX_DIR)/drivers/gpu/ipu-v3/imx-ipu-v3.ko \ - $(LINUX_DIR)/drivers/gpu/drm/imx/imx-ipuv3-crtc.ko \ $(LINUX_DIR)/drivers/video/fbdev/core/syscopyarea.ko \ $(LINUX_DIR)/drivers/video/fbdev/core/sysfillrect.ko \ $(LINUX_DIR)/drivers/video/fbdev/core/sysimgblt.ko \ @@ -274,12 +220,13 @@ define KernelPackage/drm-imx-hdmi TITLE:=Freescale i.MX HDMI DRM support DEPENDS:=+kmod-sound-core kmod-drm-imx KCONFIG:=CONFIG_DRM_IMX_HDMI \ - CONFIG_DRM_DW_HDMI_AHB_AUDIO + CONFIG_DRM_DW_HDMI_AHB_AUDIO \ + CONFIG_DRM_DW_HDMI_I2S_AUDIO FILES:= \ - $(LINUX_DIR)/drivers/gpu/drm/bridge/dw_hdmi.ko \ - $(LINUX_DIR)/drivers/gpu/drm/bridge/dw_hdmi-ahb-audio.ko \ + $(LINUX_DIR)/drivers/gpu/drm/bridge/synopsys/dw-hdmi.ko \ + $(LINUX_DIR)/drivers/gpu/drm/bridge/synopsys/dw-hdmi-ahb-audio.ko \ $(LINUX_DIR)/drivers/gpu/drm/imx/dw_hdmi-imx.ko - AUTOLOAD:=$(call AutoLoad,05,dw_hdmi dw_hdmi-ahb-audio.ko dw_hdmi-imx) + AUTOLOAD:=$(call AutoLoad,05,dw-hdmi dw-hdmi-ahb-audio.ko dw_hdmi-imx) endef define KernelPackage/drm-imx-hdmi/description @@ -299,7 +246,9 @@ define KernelPackage/drm-imx-ldb CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=n \ CONFIG_DRM_PANEL_LG_LG4573=n \ CONFIG_DRM_PANEL_LD9040=n \ - CONFIG_DRM_PANEL_S6E8AA0=n + CONFIG_DRM_PANEL_LVDS=n \ + CONFIG_DRM_PANEL_S6E8AA0=n \ + CONFIG_DRM_PANEL_SITRONIX_ST7789V=n FILES:=$(LINUX_DIR)/drivers/gpu/drm/imx/imx-ldb.ko \ $(LINUX_DIR)/drivers/gpu/drm/panel/panel-simple.ko AUTOLOAD:=$(call AutoLoad,05,imx-ldb) diff --git a/package/kernel/linux/modules/w1.mk b/package/kernel/linux/modules/w1.mk index 15b39207eb..e936a28145 100644 --- a/package/kernel/linux/modules/w1.mk +++ b/package/kernel/linux/modules/w1.mk @@ -14,6 +14,7 @@ define KernelPackage/w1 TITLE:=Dallas's 1-wire support KCONFIG:=CONFIG_W1 FILES:=$(LINUX_DIR)/drivers/w1/wire.ko + DEPENDS:=+LINUX_4_14:kmod-hwmon-core endef define KernelPackage/w1/description diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile index 32ed19e125..e84c064d01 100644 --- a/package/kernel/mac80211/Makefile +++ b/package/kernel/mac80211/Makefile @@ -10,25 +10,24 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=mac80211 -PKG_VERSION:=2017-01-31 -PKG_RELEASE:=1 +PKG_VERSION:=2017-11-01 +PKG_RELEASE:=9 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources -PKG_BACKPORT_VERSION:= -PKG_HASH:=75e6d39e34cf156212a2509172a4a62b673b69eb4a1d9aaa565f7fa719fa2317 +PKG_HASH:=8437ab7886b988c8152e7a4db30b7f41009e49a3b2cb863edd05da1ecd7eb05a -PKG_SOURCE:=compat-wireless-$(PKG_VERSION)$(PKG_BACKPORT_VERSION).tar.xz -PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION) +PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz +PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION) PKG_BUILD_PARALLEL:=1 PKG_MAINTAINER:=Felix Fietkau PKG_DRIVERS = \ - ath ath5k ath9k ath9k-common ath9k-htc \ + ath ath5k ath6kl ath6kl-sdio ath6kl-usb ath9k ath9k-common ath9k-htc ath10k \ carl9170 \ lib80211 \ mac80211-hwsim \ - rt2x00-lib \ - rt2800-lib rt2800-mmio rt2800-soc \ + rt2x00-lib rt2x00-pci rt2x00-usb + PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_kmod-mac80211 \ @@ -38,6 +37,24 @@ PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_MAC80211_TRACING \ CONFIG_PACKAGE_ATH_DEBUG \ CONFIG_PACKAGE_ATH_DFS \ + CONFIG_PACKAGE_ATH_SPECTRAL \ + CONFIG_PACKAGE_B43_DEBUG \ + CONFIG_PACKAGE_B43_PIO \ + CONFIG_PACKAGE_B43_PHY_G \ + CONFIG_PACKAGE_B43_PHY_N \ + CONFIG_PACKAGE_B43_PHY_LP \ + CONFIG_PACKAGE_B43_PHY_HT \ + CONFIG_PACKAGE_B43_BUSES_BCMA_AND_SSB \ + CONFIG_PACKAGE_B43_BUSES_BCMA \ + CONFIG_PACKAGE_B43_BUSES_SSB \ + CONFIG_PACKAGE_BRCM80211_DEBUG \ + CONFIG_PACKAGE_IWLWIFI_DEBUG \ + CONFIG_PACKAGE_IWLWIFI_DEBUGFS \ + CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS \ + CONFIG_PACKAGE_RT2X00_DEBUG \ + CONFIG_PACKAGE_RTLWIFI_DEBUG \ + CONFIG_ATH9K_SUPPORT_PCOEM \ + CONFIG_ATH9K_TX99 \ CONFIG_ATH_USER_REGD \ include $(INCLUDE_DIR)/package.mk @@ -53,7 +70,7 @@ endef define KernelPackage/cfg80211 $(call KernelPackage/mac80211/Default) TITLE:=cfg80211 - wireless configuration API - DEPENDS+= +iw + DEPENDS+= +iw +wireless-regdb FILES:= \ $(PKG_BUILD_DIR)/compat/compat.ko \ $(PKG_BUILD_DIR)/net/wireless/cfg80211.ko @@ -66,6 +83,7 @@ endef define KernelPackage/mac80211 $(call KernelPackage/mac80211/Default) TITLE:=Linux 802.11 Wireless Networking Stack + # +kmod-crypto-cmac is a runtime only dependency of net/mac80211/aes_cmac.c DEPENDS+= +kmod-cfg80211 +hostapd-common KCONFIG:=\ CONFIG_AVERAGE=y @@ -142,7 +160,7 @@ define KernelPackage/ath/config bool "Atheros wireless debugging" help Say Y, if you want to debug atheros wireless drivers. - Only ath9k makes use of this. + Only ath9k & ath10k make use of this. config PACKAGE_ATH_DFS bool "Enable DFS support" @@ -153,13 +171,20 @@ define KernelPackage/ath/config Select this option if you want to use such channels. + config PACKAGE_ATH_SPECTRAL + bool "Atheros spectral scan support" + depends on PACKAGE_ATH_DEBUG + select KERNEL_RELAY + help + Say Y to enable access to the FFT/spectral data via debugfs. + endif endef define KernelPackage/ath $(call KernelPackage/mac80211/Default) TITLE:=Atheros common driver part - DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx||TARGET_ath25 +kmod-mac80211 + DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx||TARGET_ath79||TARGET_ath25 +kmod-mac80211 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath.ko MENU:=1 endef @@ -182,12 +207,49 @@ define KernelPackage/ath5k/description Atheros 5xxx chipset. endef +define KernelPackage/ath6kl + $(call KernelPackage/mac80211/Default) + TITLE:=Atheros FullMAC wireless devices (common code for ath6kl_sdio and ath6kl_usb) + URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath6kl + HIDDEN:=1 + DEPENDS+= +kmod-ath +@DRIVER_11N_SUPPORT + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath6kl/ath6kl_core.ko +endef + +define KernelPackage/ath6kl-sdio + $(call KernelPackage/mac80211/Default) + TITLE:=Atheros 802.11n SDIO wireless cards support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath6kl + DEPENDS+= +kmod-mmc +kmod-ath6kl + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath6kl/ath6kl_sdio.ko + AUTOLOAD:=$(call AutoProbe,ath6kl_sdio) +endef + +define KernelPackage/ath6kl-sdio/description +This module adds support for wireless adapters based on +Atheros IEEE 802.11n AR6003 and AR6004 family of chipsets. +endef + +define KernelPackage/ath6kl-usb + $(call KernelPackage/mac80211/Default) + TITLE:=Atheros 802.11n USB wireless cards support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath6kl + DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-ath6kl + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath6kl/ath6kl_usb.ko + AUTOLOAD:=$(call AutoProbe,ath6kl_usb) +endef + +define KernelPackage/ath6kl-usb/description +This module adds support for wireless adapters based on the +Atheros IEEE 802.11n AR6004 chipset. +endef + define KernelPackage/ath9k-common $(call KernelPackage/mac80211/Default) TITLE:=Atheros 802.11n wireless devices (common code for ath9k and ath9k_htc) URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath9k HIDDEN:=1 - DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT +@KERNEL_RELAY + DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx||TARGET_ath79 +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT FILES:= \ $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_common.ko \ $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_hw.ko @@ -197,7 +259,7 @@ define KernelPackage/ath9k $(call KernelPackage/mac80211/Default) TITLE:=Atheros 802.11n PCI wireless cards support URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath9k - DEPENDS+= @PCI_SUPPORT||TARGET_ar71xx +kmod-ath9k-common + DEPENDS+= @PCI_SUPPORT||TARGET_ar71xx||TARGET_ath79 +kmod-ath9k-common FILES:= \ $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k.ko AUTOLOAD:=$(call AutoProbe,ath9k) @@ -215,12 +277,12 @@ define KernelPackage/ath9k/config depends on PACKAGE_kmod-ath9k config ATH9K_TX99 - bool "Enable TX99 support" + bool "Enable TX99 support (WARNING: testing only, breaks normal operation!)" depends on PACKAGE_kmod-ath9k config ATH9K_UBNTHSR bool "Support for Ubiquiti UniFi Outdoor+ access point" - depends on PACKAGE_kmod-ath9k && TARGET_ar71xx_generic + depends on PACKAGE_kmod-ath9k && (TARGET_ar71xx_generic||TARGET_ath79) default y endef @@ -240,6 +302,436 @@ This module adds support for wireless adapters based on Atheros USB AR9271 and AR7010 family of chipsets. endef +define KernelPackage/ath10k + $(call KernelPackage/mac80211/Default) + TITLE:=Atheros 802.11ac wireless cards support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath10k + DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11W_SUPPORT + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_core.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_pci.ko + AUTOLOAD:=$(call AutoProbe,ath10k_pci) +endef + +define KernelPackage/ath10k/description +This module adds support for wireless adapters based on +Atheros IEEE 802.11ac family of chipsets. For now only +PCI is supported. +endef + +#Broadcom firmware +ifneq ($(CONFIG_B43_FW_6_30),) + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=6.30.163.46 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).wl_apsta.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/ + PKG_B43_FWV4_HASH:=a07c3b6b277833c7dbe61daa511f908cd66c5e2763eb7a0859abc36cd9335c2d +else +ifneq ($(CONFIG_B43_FW_5_10),) + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=5.10.56.27.3 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/driver/wl_apsta/wl_prebuilt.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)_mipsel.tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/ + PKG_B43_FWV4_HASH:=26a8c370f48fc129d0731cfd751c36cae1419b0bc8ca35781126744e60eae009 +else +ifneq ($(CONFIG_B43_FW_4_178),) + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=4.178.10.4 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/linux/wl_apsta.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/ + PKG_B43_FWV4_HASH:=32f6ad98facbb9045646fdc8b54bb03086d204153253f9c65d0234a5d90ae53f +else +ifneq ($(CONFIG_B43_FW_5_100_138),) + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=5.100.138 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/linux/wl_apsta.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/ + PKG_B43_FWV4_HASH:=f1e7067aac5b62b67b8b6e4c517990277804339ac16065eb13c731ff909ae46f +else + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=4.150.10.5 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/driver/wl_apsta_mimo.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/ + PKG_B43_FWV4_HASH:=a9f4e276a4d8d3a1cd0f2eb87080ae89b77f0a7140f06d4e9e2135fc44fdd533 +endif +endif +endif +endif + + +define KernelPackage/b43 + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom 43xx wireless support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/b43 + KCONFIG:= \ + CONFIG_HW_RANDOM=y + # Depend on PCI_SUPPORT to make sure we can select kmod-bcma or kmod-ssb + DEPENDS += \ + @PCI_SUPPORT +kmod-mac80211 \ + $(if $(CONFIG_PACKAGE_B43_USE_SSB),+kmod-ssb) \ + $(if $(CONFIG_PACKAGE_B43_USE_BCMA),+kmod-bcma) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/b43/b43.ko + AUTOLOAD:=$(call AutoProbe,b43) + MENU:=1 +endef + +define KernelPackage/b43/config + +config PACKAGE_B43_USE_SSB + select PACKAGE_kmod-ssb + tristate + depends on !TARGET_brcm47xx && !TARGET_brcm63xx + default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_BCMA_AND_SSB + default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_SSB + +config PACKAGE_B43_USE_BCMA + select PACKAGE_kmod-bcma + tristate + depends on !TARGET_brcm47xx && !TARGET_bcm53xx + default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_BCMA_AND_SSB + default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_BCMA + + if PACKAGE_kmod-b43 + + choice + prompt "b43 firmware version" + default B43_FW_5_100_138 + help + This option allows you to select the version of the b43 firmware. + + config B43_FW_4_150 + bool "Firmware 410.2160 from driver 4.150.10.5 (old stable)" + help + Old stable firmware for BCM43xx devices. + + If unsure, select this. + + config B43_FW_4_178 + bool "Firmware 478.104 from driver 4.178.10.4" + help + Older firmware for BCM43xx devices. + + If unsure, select the "stable" firmware. + + config B43_FW_5_10 + bool "Firmware 508.1084 from driver 5.10.56.27" + help + Older firmware for BCM43xx devices. + + If unsure, select the "stable" firmware. + + config B43_FW_5_100_138 + bool "Firmware 666.2 from driver 5.100.138 (stable)" + help + The currently default firmware for BCM43xx devices. + + This firmware currently gets most of the testing and is needed for some N-PHY devices. + + If unsure, select the this firmware. + + config B43_FW_6_30 + bool "Firmware 784.2 from driver 6.30.163.46 (experimental)" + help + Newer experimental firmware for BCM43xx devices. + + This firmware is mostly untested. + + If unsure, select the "stable" firmware. + + config B43_OPENFIRMWARE + bool "Open FirmWare for WiFi networks" + help + Opensource firmware for BCM43xx devices. + + Do _not_ select this, unless you know what you are doing. + The Opensource firmware is not suitable for embedded devices, yet. + It does not support QoS, which is bad for AccessPoints. + It does not support hardware crypto acceleration, which is a showstopper + for embedded devices with low CPU resources. + + If unsure, select the "stable" firmware. + + endchoice + + config B43_FW_SQUASH + bool "Remove unnecessary firmware files" + depends on !B43_OPENFIRMWARE + default y + help + This options allows you to remove unnecessary b43 firmware files + from the final rootfs image. This can reduce the rootfs size by + up to 200k. + + If unsure, say Y. + + config B43_FW_SQUASH_COREREVS + string "Core revisions to include" + depends on B43_FW_SQUASH + default "5,6,7,8,9,10,11,13,15" if TARGET_brcm47xx_legacy + default "16,28,29,30" if TARGET_brcm47xx_mips74k + default "5,6,7,8,9,10,11,13,15,16,28,29,30" + help + This is a comma seperated list of core revision numbers. + + Example (keep files for rev5 only): + 5 + + Example (keep files for rev5 and rev11): + 5,11 + + config B43_FW_SQUASH_PHYTYPES + string "PHY types to include" + depends on B43_FW_SQUASH + default "G,N,LP" if TARGET_brcm47xx_legacy + default "N,HT" if TARGET_brcm47xx_mips74k + default "G,N,LP,HT" + help + This is a comma seperated list of PHY types: + A => A-PHY + AG => Dual A-PHY G-PHY + G => G-PHY + LP => LP-PHY + N => N-PHY + HT => HT-PHY + LCN => LCN-PHY + LCN40 => LCN40-PHY + AC => AC-PHY + + Example (keep files for G-PHY only): + G + + Example (keep files for G-PHY and N-PHY): + G,N + + choice + prompt "Supported buses" + default PACKAGE_B43_BUSES_BCMA_AND_SSB + help + This allows choosing buses that b43 should support. + + config PACKAGE_B43_BUSES_BCMA_AND_SSB + depends on !TARGET_brcm47xx_legacy && !TARGET_brcm47xx_mips74k && !TARGET_bcm53xx + bool "BCMA and SSB" + + config PACKAGE_B43_BUSES_BCMA + depends on !TARGET_brcm47xx_legacy + bool "BCMA only" + + config PACKAGE_B43_BUSES_SSB + depends on !TARGET_brcm47xx_mips74k && !TARGET_bcm53xx + bool "SSB only" + + endchoice + + config PACKAGE_B43_DEBUG + bool "Enable debug output and debugfs for b43" + default n + help + Enable additional debug output and runtime sanity checks for b43 + and enables the debugfs interface. + + If unsure, say N. + + config PACKAGE_B43_PIO + bool "Enable support for PIO transfer mode" + default n + help + Enable support for using PIO instead of DMA. Unless you have DMA + transfer problems you don't need this. + + If unsure, say N. + + config PACKAGE_B43_PHY_G + bool "Enable support for G-PHYs" + default n if TARGET_brcm47xx_mips74k + default y + help + Enable support for G-PHY. This includes support for the following devices: + PCI: BCM4306, BCM4311, BCM4318 + SoC: BCM5352E, BCM4712 + + If unsure, say Y. + + config PACKAGE_B43_PHY_N + bool "Enable support for N-PHYs" + default y + help + Enable support for N-PHY. This includes support for the following devices: + PCI: BCM4321, BCM4322, BCM43222, BCM43224, BCM43225 + SoC: BCM4716, BCM4717, BCM4718 + + Currently only 11g speed is available. + + If unsure, say Y. + + config PACKAGE_B43_PHY_LP + bool "Enable support for LP-PHYs" + default n if TARGET_brcm47xx_mips74k + default y + help + Enable support for LP-PHY. This includes support for the following devices: + PCI: BCM4312 + SoC: BCM5354 + + If unsure, say Y. + + config PACKAGE_B43_PHY_HT + bool "Enable support for HT-PHYs" + default n if TARGET_brcm47xx_legacy + default y + help + Enable support for HT-PHY. This includes support for the following devices: + PCI: BCM4331 + + Currently only 11g speed is available. + + If unsure, say Y. + + config PACKAGE_B43_PHY_LCN + bool "Enable support for LCN-PHYs" + depends on BROKEN + default n + help + Currently broken. + + If unsure, say N. + + endif +endef + +define KernelPackage/b43/description +Kernel module for Broadcom 43xx wireless support (mac80211 stack) new +endef + +define KernelPackage/b43legacy + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom 43xx-legacy wireless support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/b43 + KCONFIG:= \ + CONFIG_HW_RANDOM=y + DEPENDS+= +kmod-mac80211 +!(TARGET_brcm47xx||TARGET_brcm63xx):kmod-ssb +b43legacy-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko + AUTOLOAD:=$(call AutoProbe,b43legacy) + MENU:=1 +endef + +define KernelPackage/b43legacy/description +Kernel module for Broadcom 43xx-legacy wireless support (mac80211 stack) new +endef + + +define KernelPackage/brcmutil + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom IEEE802.11n common driver parts + URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 + DEPENDS+=@PCI_SUPPORT||USB_SUPPORT + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko + AUTOLOAD:=$(call AutoProbe,brcmutil) + MENU:=1 +endef + +define KernelPackage/brcmutil/description + This module contains some common parts needed by Broadcom Wireless drivers brcmsmac and brcmfmac. +endef + +define KernelPackage/brcmutil/config + if PACKAGE_kmod-brcmutil + + config PACKAGE_BRCM80211_DEBUG + bool "Broadcom wireless driver debugging" + help + Say Y, if you want to debug brcmsmac and brcmfmac wireless driver. + + endif +endef + +define KernelPackage/brcmsmac + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom IEEE802.11n PCIe SoftMAC WLAN driver + URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 + DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT +!TARGET_brcm47xx:kmod-bcma +kmod-lib-cordic +kmod-lib-crc8 +kmod-brcmutil +!BRCMSMAC_USE_FW_FROM_WL:brcmsmac-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko + AUTOLOAD:=$(call AutoProbe,brcmsmac) + MENU:=1 +endef + +define KernelPackage/brcmsmac/description + Kernel module for Broadcom IEEE802.11n PCIe Wireless cards +endef + +define KernelPackage/brcmsmac/config + if PACKAGE_kmod-brcmsmac + + config BRCMSMAC_USE_FW_FROM_WL + bool "Use firmware extracted from broadcom proprietary driver" + default y + help + Instead of using the official brcmsmac firmware a firmware + version 666.2 extracted from the proprietary Broadcom driver + is used. This is needed to get core rev 17 used in bcm4716 + to work. + + If unsure, say Y. + + endif +endef + + +define KernelPackage/brcmfmac + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver + URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 + DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +kmod-brcmutil \ + +BRCMFMAC_SDIO:kmod-mmc @!TARGET_uml \ + +BRCMFMAC_USB:kmod-usb-core +BRCMFMAC_USB:brcmfmac-firmware-usb + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko + AUTOLOAD:=$(call AutoProbe,brcmfmac) +endef + +define KernelPackage/brcmfmac/description + Kernel module for Broadcom IEEE802.11n USB Wireless cards +endef + +define KernelPackage/brcmfmac/config + if PACKAGE_kmod-brcmfmac + + config BRCMFMAC_SDIO + bool "Enable SDIO bus interface support" + default y if TARGET_brcm2708 + default y if TARGET_sunxi + default n + help + Enable support for cards attached to an SDIO bus. + Select this option only if you are sure that your + board has a Broadcom wireless chip atacched to + that bus. + + config BRCMFMAC_USB + bool "Enable USB bus interface support" + depends on USB_SUPPORT + default y + help + Supported USB connected chipsets: + BCM43235, BCM43236, BCM43238 (all in revision 3 only) + BCM43143, BCM43242, BCM43566, BCM43569 + + config BRCMFMAC_PCIE + bool "Enable PCIE bus interface support" + depends on PCI_SUPPORT + default y + help + Supported PCIe connected chipsets: + BCM4354, BCM4356, BCM43567, BCM43570, BCM43602 + + endif +endef + + define KernelPackage/carl9170 $(call KernelPackage/mac80211/Default) TITLE:=Driver for Atheros AR9170 USB sticks @@ -249,6 +741,163 @@ define KernelPackage/carl9170 endef +define KernelPackage/hermes + $(call KernelPackage/mac80211/Default) + TITLE:=Hermes 802.11b chipset support + DEPENDS:=@PCI_SUPPORT||PCMCIA_SUPPORT +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT +kmod-crypto-michael-mic + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco.ko + AUTOLOAD:=$(call AutoProbe,orinoco) +endef + +define KernelPackage/hermes/description + Kernel support for Hermes 802.11b chipsets +endef + +define KernelPackage/hermes-pci + $(call KernelPackage/mac80211/Default) + TITLE:=Intersil Prism 2.5 PCI support + DEPENDS:=@PCI_SUPPORT +kmod-hermes + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_pci.ko + AUTOLOAD:=$(call AutoProbe,orinoco_pci) +endef + +define KernelPackage/hermes-pci/description + Kernel modules for Intersil Prism 2.5 PCI support +endef + +define KernelPackage/hermes-plx + $(call KernelPackage/mac80211/Default) + TITLE:=PLX9052 based PCI adaptor + DEPENDS:=@PCI_SUPPORT +kmod-hermes + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_plx.ko + AUTOLOAD:=$(call AutoProbe,orinoco_plx) +endef + +define KernelPackage/hermes-plx/description + Kernel modules for Hermes in PLX9052 based PCI adaptors +endef + +define KernelPackage/hermes-pcmcia + $(call KernelPackage/mac80211/Default) + TITLE:=Hermes based PCMCIA adaptors + DEPENDS:=@PCMCIA_SUPPORT +kmod-hermes @BROKEN + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko + AUTOLOAD:=$(call AutoProbe,orinoco_cs) +endef + +define KernelPackage/hermes-pcmcia/description + Kernel modules for Hermes based PCMCIA adaptors +endef + + +define KernelPackage/iwlwifi + $(call KernelPackage/mac80211/Default) + DEPENDS:= +kmod-mac80211 @PCI_SUPPORT +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT @!LINUX_3_18 + TITLE:=Intel AGN Wireless support + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/dvm/iwldvm.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko + AUTOLOAD:=$(call AutoProbe,iwlwifi iwldvm iwlmvm) + MENU:=1 +endef + +define KernelPackage/iwlwifi/description + iwlwifi kernel module for + Intel Wireless WiFi Link 6250AGN Adapter + Intel 6000 Series Wi-Fi Adapters (6200AGN and 6300AGN) + Intel WiFi Link 1000BGN + Intel Wireless WiFi 5150AGN + Intel Wireless WiFi 5100AGN, 5300AGN, and 5350AGN + Intel 6005 Series Wi-Fi Adapters + Intel 6030 Series Wi-Fi Adapters + Intel Wireless WiFi Link 6150BGN 2 Adapter + Intel 100 Series Wi-Fi Adapters (100BGN and 130BGN) + Intel 2000 Series Wi-Fi Adapters + Intel 7260 Wi-Fi Adapter + Intel 3160 Wi-Fi Adapter + Intel 7265 Wi-Fi Adapter + Intel 8260 Wi-Fi Adapter + Intel 3165 Wi-Fi Adapter +endef + +define KernelPackage/iwlwifi/config + if PACKAGE_kmod-iwlwifi + + config PACKAGE_IWLWIFI_DEBUG + bool "Enable full debugging output in the iwlwifi driver" + default n + help + This option will enable debug tracing output for the iwlwifi drivers + + This will result in the kernel module being ~100k larger. You can + control which debug output is sent to the kernel log by setting the + value in + + /sys/module/iwlwifi/parameters/debug + + This entry will only exist if this option is enabled. + + To set a value, simply echo an 8-byte hex value to the same file: + + % echo 0x43fff > /sys/module/iwlwifi/parameters/debug + + You can find the list of debug mask values in: + drivers/net/wireless/intel/iwlwifi/iwl-debug.h + + If this is your first time using this driver, you should say Y here + as the debug information can assist others in helping you resolve + any problems you may encounter. + + config PACKAGE_IWLWIFI_DEBUGFS + bool "iwlwifi debugfs support" + depends on PACKAGE_MAC80211_DEBUGFS + default n + help + Enable creation of debugfs files for the iwlwifi drivers. This + is a low-impact option that allows getting insight into the + driver's state at runtime. + + endif +endef + +define KernelPackage/iwl-legacy + $(call KernelPackage/mac80211/Default) + DEPENDS:= +kmod-mac80211 @PCI_SUPPORT + TITLE:=Intel legacy Wireless support + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlegacy/iwlegacy.ko + AUTOLOAD:=$(call AutoProbe,iwlegacy) +endef + +define KernelPackage/iwl-legacy/description + iwl-legacy kernel module for legacy Intel wireless support +endef + +define KernelPackage/iwl3945 + $(call KernelPackage/mac80211/Default) + DEPENDS:= +kmod-mac80211 +kmod-iwl-legacy +iwl3945-firmware + TITLE:=Intel iwl3945 Wireless support + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlegacy/iwl3945.ko + AUTOLOAD:=$(call AutoProbe,iwl3945) +endef + +define KernelPackage/iwl3945/description + iwl3945 kernel module for Intel 3945 support +endef + +define KernelPackage/iwl4965 + $(call KernelPackage/mac80211/Default) + DEPENDS:= +kmod-mac80211 +kmod-iwl-legacy +@DRIVER_11N_SUPPORT +iwl4965-firmware + TITLE:=Intel iwl4965 Wireless support + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlegacy/iwl4965.ko + AUTOLOAD:=$(call AutoProbe,iwl4965) +endef + +define KernelPackage/iwl4965/description + iwl4965 kernel module for Intel 4965 support +endef + + define KernelPackage/lib80211 $(call KernelPackage/mac80211/Default) TITLE:=802.11 Networking stack @@ -275,13 +924,214 @@ define KernelPackage/lib80211/description - lib80211_crytp_ccmp endef + +define KernelPackage/libipw + $(call KernelPackage/mac80211/Default) + TITLE:=libipw for ipw2100 and ipw2200 + DEPENDS:=@PCI_SUPPORT +kmod-crypto-michael-mic +kmod-crypto-ecb +kmod-lib80211 +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT @!BIG_ENDIAN @!LINUX_3_18 + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/libipw.ko + AUTOLOAD:=$(call AutoProbe,libipw) +endef + +define KernelPackage/libipw/description + Hardware independent IEEE 802.11 networking stack for ipw2100 and ipw2200. +endef + +define KernelPackage/ipw2100 + $(call KernelPackage/mac80211/Default) + TITLE:=Intel IPW2100 driver + DEPENDS:=@PCI_SUPPORT +kmod-libipw + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/ipw2100.ko + AUTOLOAD:=$(call AutoProbe,ipw2100) +endef + +define KernelPackage/ipw2100/description + Kernel support for Intel IPW2100 + Includes: + - ipw2100 +endef + +define KernelPackage/ipw2200 + $(call KernelPackage/mac80211/Default) + TITLE:=Intel IPW2200 driver + DEPENDS:=@PCI_SUPPORT +kmod-libipw + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/ipw2200.ko + AUTOLOAD:=$(call AutoProbe,ipw2200) +endef + +define KernelPackage/ipw2200/description + Kernel support for Intel IPW2200 + Includes: + - ipw2200 +endef + + +define KernelPackage/libertas-usb + $(call KernelPackage/mac80211/Default) + DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +kmod-usb-core +kmod-lib80211 +@DRIVER_WEXT_SUPPORT +libertas-usb-firmware @!LINUX_3_18 + TITLE:=Marvell 88W8015 Wireless Driver + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/usb8xxx.ko + AUTOLOAD:=$(call AutoProbe,libertas usb8xxx) +endef + +define KernelPackage/libertas-sdio + $(call KernelPackage/mac80211/Default) + DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +kmod-mmc +@DRIVER_WEXT_SUPPORT @!TARGET_uml +libertas-sdio-firmware @!LINUX_3_18 + TITLE:=Marvell 88W8686 Wireless Driver + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas_sdio.ko + AUTOLOAD:=$(call AutoProbe,libertas libertas_sdio) +endef + +define KernelPackage/libertas-spi + $(call KernelPackage/mac80211/Default) + SUBMENU:=Wireless Drivers + DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +@DRIVER_WEXT_SUPPORT @!TARGET_uml +libertas-spi-firmware @!LINUX_3_18 + KCONFIG := \ + CONFIG_SPI=y \ + CONFIG_SPI_MASTER=y + TITLE:=Marvell 88W8686 SPI Wireless Driver + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas_spi.ko + AUTOLOAD:=$(call AutoProbe,libertas libertas_spi) +endef + define KernelPackage/mac80211-hwsim $(call KernelPackage/mac80211/Default) TITLE:=mac80211 HW simulation device - DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT + DEPENDS+= +kmod-mac80211 +@DRIVER_11AC_SUPPORT +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mac80211_hwsim.ko AUTOLOAD:=$(call AutoProbe,mac80211_hwsim) endef + + +define KernelPackage/mt7601u + $(call KernelPackage/mac80211/Default) + TITLE:=MT7601U-based USB dongles Wireless Driver + DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT @USB_SUPPORT +kmod-usb-core +mt7601u-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko + AUTOLOAD:=$(call AutoProbe,mt7601u) +endef + + +define KernelPackage/mwl8k + $(call KernelPackage/mac80211/Default) + TITLE:=Driver for Marvell TOPDOG 802.11 Wireless cards + URL:=https://wireless.wiki.kernel.org/en/users/drivers/mwl8k + DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT +mwl8k-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwl8k.ko + AUTOLOAD:=$(call AutoProbe,mwl8k) +endef + +define KernelPackage/mwl8k/description + Kernel modules for Marvell TOPDOG 802.11 Wireless cards +endef + + +define KernelPackage/mwifiex-pcie + $(call KernelPackage/mac80211/Default) + TITLE:=Driver for Marvell 802.11n/802.11ac PCIe Wireless cards + URL:=https://wireless.wiki.kernel.org/en/users/drivers/mwifiex + DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +mwifiex-pcie-firmware + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko + AUTOLOAD:=$(call AutoProbe,mwifiex_pcie) +endef + +define KernelPackage/mwifiex-pcie/description + Kernel modules for Marvell 802.11n/802.11ac PCIe Wireless cards +endef + +define KernelPackage/mwifiex-sdio + $(call KernelPackage/mac80211/Default) + TITLE:=Driver for Marvell 802.11n/802.11ac SDIO Wireless cards + URL:=https://wireless.wiki.kernel.org/en/users/drivers/mwifiex + DEPENDS+= +kmod-mmc +kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +mwifiex-sdio-firmware + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko + AUTOLOAD:=$(call AutoProbe,mwifiex_sdio) +endef + +define KernelPackage/mwifiex-sdio/description + Kernel modules for Marvell 802.11n/802.11ac SDIO Wireless cards +endef + +define KernelPackage/p54/Default + $(call KernelPackage/mac80211/Default) + TITLE:=Prism54 Drivers +endef + +define KernelPackage/p54/description + Kernel module for Prism54 chipsets (mac80211) +endef + +define KernelPackage/p54-common + $(call KernelPackage/p54/Default) + DEPENDS+= @PCI_SUPPORT||@USB_SUPPORT||@TARGET_omap24xx +kmod-mac80211 +kmod-lib-crc-ccitt + TITLE+= (COMMON) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54common.ko +endef + +define KernelPackage/p54-pci + $(call KernelPackage/p54/Default) + TITLE+= (PCI) + DEPENDS+= @PCI_SUPPORT +kmod-p54-common +p54-pci-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54pci.ko + AUTOLOAD:=$(call AutoProbe,p54pci) +endef + +define KernelPackage/p54-usb + $(call KernelPackage/p54/Default) + TITLE+= (USB) + DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-p54-common +p54-usb-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54usb.ko + AUTOLOAD:=$(call AutoProbe,p54usb) +endef + +define KernelPackage/p54-spi + $(call KernelPackage/p54/Default) + TITLE+= (SPI) + DEPENDS+= @TARGET_omap24xx +kmod-p54-common +p54-spi-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54spi.ko + AUTOLOAD:=$(call AutoProbe,p54spi) +endef + +define KernelPackage/rsi91x + $(call KernelPackage/mac80211/Default) + TITLE:=Redpine Signals Inc 91x WLAN driver support + DEPENDS+= +kmod-mac80211 +rs9113-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rsi/rsi_91x.ko +endef + +define KernelPackage/rsi91x-usb + $(call KernelPackage/mac80211/Default) + TITLE:=Redpine Signals USB bus support + DEPENDS+= +kmod-mac80211 +kmod-usb2 +kmod-rsi91x +rs9113-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rsi/rsi_usb.ko + AUTOLOAD:=$(call AutoProbe,rsi_usb) +endef + +define KernelPackage/rsi91x-sdio + $(call KernelPackage/mac80211/Default) + TITLE:=Redpine Signals SDIO bus support + DEPENDS+= +kmod-mac80211 +kmod-mmc +kmod-rsi91x +rs9113-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rsi/rsi_sdio.ko + AUTOLOAD:=$(call AutoProbe,rsi_sdio) +endef + + + +define KernelPackage/rt2x00/Default + $(call KernelPackage/mac80211/Default) + TITLE:=Ralink Drivers for RT2x00 cards +endef + define KernelPackage/rt2x00-lib $(call KernelPackage/rt2x00/Default) DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-mac80211 +kmod-lib-crc-itu-t @@ -293,22 +1143,48 @@ endef define KernelPackage/rt2x00-lib/config if PACKAGE_kmod-rt2x00-lib - config PACKAGE_RT2X00_LIB_DEBUGFS - bool "Enable rt2x00 debugfs support" - depends on PACKAGE_MAC80211_DEBUGFS - help - Enable creation of debugfs files for the rt2x00 drivers. - These debugfs files support both reading and writing of the - most important register types of the rt2x00 hardware. + config PACKAGE_RT2X00_LIB_DEBUGFS + bool "Enable rt2x00 debugfs support" + depends on PACKAGE_MAC80211_DEBUGFS + help + Enable creation of debugfs files for the rt2x00 drivers. + These debugfs files support both reading and writing of the + most important register types of the rt2x00 hardware. - config PACKAGE_RT2X00_DEBUG - bool "Enable rt2x00 debug output" - help - Enable debugging output for all rt2x00 modules + config PACKAGE_RT2X00_DEBUG + bool "Enable rt2x00 debug output" + help + Enable debugging output for all rt2x00 modules endif endef +define KernelPackage/rt2x00-mmio +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @(PCI_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-eeprom-93cx6 + HIDDEN:=1 + TITLE+= (MMIO) + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko +endef + +define KernelPackage/rt2x00-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-mmio +kmod-rt2x00-lib + HIDDEN:=1 + TITLE+= (PCI) + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko + AUTOLOAD:=$(call AutoProbe,rt2x00pci) +endef + +define KernelPackage/rt2x00-usb +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @USB_SUPPORT +kmod-rt2x00-lib +kmod-usb-core + HIDDEN:=1 + TITLE+= (USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko + AUTOLOAD:=$(call AutoProbe,rt2x00usb) +endef + define KernelPackage/rt2800-lib $(call KernelPackage/rt2x00/Default) DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-lib-crc-ccitt +@DRIVER_11N_SUPPORT @@ -317,12 +1193,28 @@ $(call KernelPackage/rt2x00/Default) FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko endef -define KernelPackage/rt2x00-mmio +define KernelPackage/rt2400-pci $(call KernelPackage/rt2x00/Default) - DEPENDS+= @(PCI_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-eeprom-93cx6 - HIDDEN:=1 - TITLE+= (MMIO) - FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci + TITLE+= (RT2400 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko + AUTOLOAD:=$(call AutoProbe,rt2400pci) +endef + +define KernelPackage/rt2500-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci + TITLE+= (RT2500 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko + AUTOLOAD:=$(call AutoProbe,rt2500pci) +endef + +define KernelPackage/rt2500-usb +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb + TITLE+= (RT2500 USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko + AUTOLOAD:=$(call AutoProbe,rt2500usb) endef define KernelPackage/rt2800-mmio @@ -343,13 +1235,245 @@ $(call KernelPackage/rt2x00/Default) AUTOLOAD:=$(call AutoProbe,rt2800soc) endef +define KernelPackage/rt2800-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci +kmod-rt2800-lib +kmod-rt2800-mmio +rt2800-pci-firmware + TITLE+= (RT2860 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800pci.ko + AUTOLOAD:=$(call AutoProbe,rt2800pci) +endef + +define KernelPackage/rt2800-usb +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb +kmod-rt2800-lib +kmod-lib-crc-ccitt +rt2800-usb-firmware + TITLE+= (RT2870 USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko + AUTOLOAD:=$(call AutoProbe,rt2800usb) +endef + + +define KernelPackage/rt61-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci +rt61-pci-firmware + TITLE+= (RT2x61 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt61pci.ko + AUTOLOAD:=$(call AutoProbe,rt61pci) +endef + +define KernelPackage/rt73-usb + $(call KernelPackage/rt2x00/Default) + DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb +rt73-usb-firmware + TITLE+= (RT73 USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt73usb.ko + AUTOLOAD:=$(call AutoProbe,rt73usb) +endef + + +define KernelPackage/rtl818x/Default + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek Drivers for RTL818x devices + URL:=https://wireless.wiki.kernel.org/en/users/drivers/rtl8187 + DEPENDS+= +kmod-eeprom-93cx6 +kmod-mac80211 +endef + +define KernelPackage/rtl8180 + $(call KernelPackage/rtl818x/Default) + DEPENDS+= @PCI_SUPPORT + TITLE+= (RTL8180 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl818x_pci.ko + AUTOLOAD:=$(call AutoProbe,rtl818x_pci) +endef + +define KernelPackage/rtl8187 +$(call KernelPackage/rtl818x/Default) + DEPENDS+= @USB_SUPPORT +kmod-usb-core + TITLE+= (RTL8187 USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8187.ko + AUTOLOAD:=$(call AutoProbe,rtl8187) +endef + +define KernelPackage/rtlwifi/config + config PACKAGE_RTLWIFI_DEBUG + bool "Realtek wireless debugging" + depends on PACKAGE_kmod-rtlwifi + help + Say Y, if you want to debug realtek wireless drivers. + +endef + +define KernelPackage/rtlwifi + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek common driver part + DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT) +kmod-mac80211 +@DRIVER_11N_SUPPORT + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko + HIDDEN:=1 +endef + +define KernelPackage/rtlwifi-pci + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek common driver part (PCI support) + DEPENDS+= @PCI_SUPPORT +kmod-rtlwifi + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl_pci.ko + AUTOLOAD:=$(call AutoProbe,rtl_pci) + HIDDEN:=1 +endef + +define KernelPackage/rtlwifi-btcoexist + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek BT coexist support + DEPENDS+= +kmod-rtlwifi + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko + AUTOLOAD:=$(call AutoProbe,btcoexist) + HIDDEN:=1 +endef + +define KernelPackage/rtlwifi-usb + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek common driver part (USB support) + DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-rtlwifi + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko + AUTOLOAD:=$(call AutoProbe,rtl_usb) + HIDDEN:=1 +endef + +define KernelPackage/rtl8192c-common + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192CE/RTL8192CU common support module + DEPENDS+= +kmod-rtlwifi + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko + HIDDEN:=1 +endef + +define KernelPackage/rtl8192ce + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192CE/RTL8188CE support + DEPENDS+= +kmod-rtlwifi-pci +kmod-rtl8192c-common +rtl8192ce-firmware + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko + AUTOLOAD:=$(call AutoProbe,rtl8192ce) +endef + +define KernelPackage/rtl8192se + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192SE/RTL8191SE support + DEPENDS+= +kmod-rtlwifi-pci +rtl8192se-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192se/rtl8192se.ko + AUTOLOAD:=$(call AutoProbe,rtl8192se) +endef + +define KernelPackage/rtl8192de + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192DE/RTL8188DE support + DEPENDS+= +kmod-rtlwifi-pci +rtl8192de-firmware + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192de/rtl8192de.ko + AUTOLOAD:=$(call AutoProbe,rtl8192de) +endef + +define KernelPackage/rtl8192cu + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192CU/RTL8188CU support + DEPENDS+= +kmod-rtlwifi-usb +kmod-rtl8192c-common +rtl8192cu-firmware + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko + AUTOLOAD:=$(call AutoProbe,rtl8192cu) +endef + +define KernelPackage/rtl8821ae + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8821AE support + DEPENDS+= +kmod-rtlwifi-btcoexist +kmod-rtlwifi-pci +rtl8821ae-firmware + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko + AUTOLOAD:=$(call AutoProbe,rtl8821ae) +endef + +define KernelPackage/rtl8xxxu + $(call KernelPackage/mac80211/Default) + TITLE:=alternative Realtek RTL8XXXU support + DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-mac80211 + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko + AUTOLOAD:=$(call AutoProbe,rtl8xxxu) +endef + +define KernelPackage/rtl8xxxu/description + This is an alternative driver for various Realtek RTL8XXX + parts written to utilize the Linux mac80211 stack. + The driver is known to work with a number of RTL8723AU, + RL8188CU, RTL8188RU, RTL8191CU, and RTL8192CU devices + + This driver is under development and has a limited feature + set. In particular it does not yet support 40MHz channels + and power management. However it should have a smaller + memory footprint than the vendor drivers and benetifs + from the in kernel mac80211 stack. + + It can coexist with drivers from drivers/staging/rtl8723au, + drivers/staging/rtl8192u, and drivers/net/wireless/rtlwifi, + but you will need to control which module you wish to load. + + RTL8XXXU_UNTESTED is enabled + This option enables detection of Realtek 8723/8188/8191/8192 WiFi + USB devices which have not been tested directly by the driver + author or reported to be working by third parties. + + Please report your results! +endef + + +define KernelPackage/wlcore + $(call KernelPackage/mac80211/Default) + TITLE:=TI common driver part + DEPENDS+= +kmod-mmc +kmod-mac80211 +@DRIVER_11N_SUPPORT + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko + AUTOLOAD:=$(call AutoProbe,wlcore wlcore_sdio) +endef + +define KernelPackage/wlcore/description + This module contains some common parts needed by TI Wireless drivers. +endef + +define KernelPackage/wl12xx + $(call KernelPackage/mac80211/Default) + TITLE:=Driver for TI WL12xx + URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl12xx + DEPENDS+= +kmod-wlcore +wl12xx-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl12xx/wl12xx.ko + AUTOLOAD:=$(call AutoProbe,wl12xx) +endef + +define KernelPackage/wl12xx/description + Kernel modules for TI WL12xx +endef + +define KernelPackage/wl18xx + $(call KernelPackage/mac80211/Default) + TITLE:=Driver for TI WL18xx + URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl18xx + DEPENDS+= +kmod-wlcore +wl18xx-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl18xx/wl18xx.ko + AUTOLOAD:=$(call AutoProbe,wl18xx) +endef + +define KernelPackage/wl18xx/description + Kernel modules for TI WL18xx +endef + + +define KernelPackage/zd1211rw + $(call KernelPackage/mac80211/Default) + TITLE:=Zydas ZD1211 support + DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-mac80211 + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko + AUTOLOAD:=$(call AutoProbe,zd1211rw) +endef + + + config_package=$(if $(CONFIG_PACKAGE_kmod-$(1)),m) config-y:= \ WLAN \ NL80211_TESTMODE \ CFG80211_WEXT \ - CFG80211_INTERNAL_REGDB \ CFG80211_CERTIFICATION_ONUS \ MAC80211_RC_MINSTREL \ MAC80211_RC_MINSTREL_HT \ @@ -358,6 +1482,8 @@ config-y:= \ WLAN_VENDOR_ADMTEK \ WLAN_VENDOR_ATH \ WLAN_VENDOR_ATMEL \ + WLAN_VENDOR_BROADCOM \ + WLAN_VENDOR_CISCO \ WLAN_VENDOR_INTEL \ WLAN_VENDOR_INTERSIL \ WLAN_VENDOR_MARVELL \ @@ -379,12 +1505,15 @@ ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS MAC80211_DEBUGFS \ ATH9K_DEBUGFS \ ATH9K_HTC_DEBUGFS \ + ATH10K_DEBUGFS \ CARL9170_DEBUGFS \ - ATH5K_DEBUG + ATH5K_DEBUG \ + ATH6KL_DEBUG endif ifdef CONFIG_PACKAGE_MAC80211_TRACING config-y += \ + ATH10K_TRACING \ ATH6KL_TRACING \ ATH_TRACEPOINTS \ WIL6210_TRACING \ @@ -396,13 +1525,16 @@ config-$(call config_package,lib80211) += LIB80211 LIB80211_CRYPT_WEP LIB80211_C config-$(call config_package,airo) += AIRO -config-$(call config_package,ath) += ATH_CARDS ATH_COMMON -config-$(CONFIG_PACKAGE_ATH_DEBUG) += ATH_DEBUG ATH9K_STATION_STATISTICS -config-$(CONFIG_PACKAGE_ATH_DFS) += ATH9K_DFS_CERTIFIED +config-$(call config_package,ath) += ATH_CARDS ATH_COMMON ATH_REG_DYNAMIC_USER_REG_HINTS +config-$(CONFIG_PACKAGE_ATH_DEBUG) += ATH_DEBUG ATH10K_DEBUG ATH9K_STATION_STATISTICS +config-$(CONFIG_PACKAGE_ATH_DFS) += ATH9K_DFS_CERTIFIED ATH10K_DFS_CERTIFIED +config-$(CONFIG_PACKAGE_ATH_SPECTRAL) += ATH9K_COMMON_SPECTRAL ATH10K_SPECTRAL config-$(call config_package,ath9k) += ATH9K config-$(call config_package,ath9k-common) += ATH9K_COMMON config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB +config-$(CONFIG_TARGET_ath79) += ATH9K_AHB +config-$(CONFIG_TARGET_ipq40xx) += ATH10K_AHB config-$(CONFIG_PCI) += ATH9K_PCI config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD config-$(CONFIG_ATH9K_SUPPORT_PCOEM) += ATH9K_PCOEM @@ -410,6 +1542,7 @@ config-$(CONFIG_ATH9K_TX99) += ATH9K_TX99 config-$(CONFIG_ATH9K_UBNTHSR) += ATH9K_UBNTHSR config-$(call config_package,ath9k-htc) += ATH9K_HTC +config-$(call config_package,ath10k) += ATH10K ATH10K_PCI config-$(call config_package,ath5k) += ATH5K ifdef CONFIG_TARGET_ath25 @@ -418,23 +1551,119 @@ else config-y += ATH5K_PCI endif +config-$(call config_package,ath6kl) += ATH6KL +config-$(call config_package,ath6kl-sdio) += ATH6KL_SDIO +config-$(call config_package,ath6kl-usb) += ATH6KL_USB + config-$(call config_package,carl9170) += CARL9170 +config-$(call config_package,b43) += B43 +config-$(CONFIG_PACKAGE_B43_BUSES_BCMA_AND_SSB) += B43_BUSES_BCMA_AND_SSB +config-$(CONFIG_PACKAGE_B43_BUSES_BCMA) += B43_BUSES_BCMA +config-$(CONFIG_PACKAGE_B43_BUSES_SSB) += B43_BUSES_SSB +config-$(CONFIG_PACKAGE_B43_PHY_G) += B43_PHY_G +config-$(CONFIG_PACKAGE_B43_PHY_N) += B43_PHY_N +config-$(CONFIG_PACKAGE_B43_PHY_LP) += B43_PHY_LP +config-$(CONFIG_PACKAGE_B43_PHY_HT) += B43_PHY_HT +config-$(CONFIG_PACKAGE_B43_PIO) += B43_PIO +config-$(CONFIG_PACKAGE_B43_DEBUG) += B43_DEBUG + +config-$(call config_package,b43legacy) += B43LEGACY +config-y += B43LEGACY_DMA_MODE + +config-$(call config_package,brcmutil) += BRCMUTIL +config-$(call config_package,brcmsmac) += BRCMSMAC +config-$(call config_package,brcmfmac) += BRCMFMAC +config-$(CONFIG_BRCMFMAC_SDIO) += BRCMFMAC_SDIO +config-$(CONFIG_BRCMFMAC_USB) += BRCMFMAC_USB +config-$(CONFIG_BRCMFMAC_PCIE) += BRCMFMAC_PCIE +config-$(CONFIG_PACKAGE_BRCM80211_DEBUG) += BRCMDBG + config-$(call config_package,mac80211-hwsim) += MAC80211_HWSIM +config-$(call config_package,mt7601u) += MT7601U +config-y += WL_MEDIATEK config-$(call config_package,rt2x00-lib) += RT2X00 RT2X00_LIB - +config-$(call config_package,rt2x00-pci) += RT2X00_LIB_PCI config-$(call config_package,rt2x00-mmio) += RT2X00_LIB_MMIO +config-$(call config_package,rt2x00-usb) += RT2X00_LIB_USB +config-$(CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS) += RT2X00_LIB_DEBUGFS +config-$(CONFIG_PACKAGE_RT2X00_DEBUG) += RT2X00_DEBUG + +config-$(call config_package,rt2400-pci) += RT2400PCI +config-$(call config_package,rt2500-pci) += RT2500PCI +config-$(call config_package,rt2500-usb) += RT2500USB +config-$(call config_package,rt61-pci) += RT61PCI +config-$(call config_package,rt73-usb) += RT73USB config-$(call config_package,rt2800-lib) += RT2800_LIB config-$(call config_package,rt2800-soc) += RT2800SOC - -config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS +config-$(call config_package,rt2800-pci) += RT2800PCI +config-y += RT2800PCI_RT33XX RT2800PCI_RT35XX RT2800PCI_RT53XX RT2800PCI_RT3290 + +config-$(call config_package,rt2800-usb) += RT2800USB +config-y += RT2800USB_RT33XX RT2800USB_RT35XX RT2800USB_RT3573 RT2800USB_RT53XX RT2800USB_RT55XX RT2800USB_UNKNOWN + +config-$(call config_package,iwl-legacy) += IWLEGACY +config-$(call config_package,iwl3945) += IWL3945 +config-$(call config_package,iwl4965) += IWL4965 +config-$(call config_package,iwlwifi) += IWLWIFI IWLDVM IWLMVM +config-$(CONFIG_PACKAGE_IWLWIFI_DEBUG)+= IWLWIFI_DEBUG +config-$(CONFIG_PACKAGE_IWLWIFI_DEBUGFS)+= IWLWIFI_DEBUGFS + +config-$(call config_package,libipw) += LIBIPW +config-$(call config_package,ipw2100) += IPW2100 +config-$(call config_package,ipw2200) += IPW2200 + +config-$(call config_package,p54-common) += P54_COMMON +config-$(call config_package,p54-pci) += P54_PCI +config-$(call config_package,p54-usb) += P54_USB +config-$(call config_package,p54-spi) += P54_SPI + +config-$(call config_package,hermes) += HERMES +config-$(call config_package,hermes-pci) += PCI_HERMES +config-$(call config_package,hermes-plx) += PLX_HERMES +config-$(call config_package,hermes-pcmcia) += PCMCIA_HERMES +config-y += HERMES_PRISM + +config-$(call config_package,adm8211) += ADM8211 +config-$(call config_package,libertas-sdio) += LIBERTAS LIBERTAS_SDIO +config-$(call config_package,libertas-usb) += LIBERTAS LIBERTAS_USB +config-$(call config_package,libertas-spi) += LIBERTAS LIBERTAS_SPI +config-$(call config_package,mwl8k) += MWL8K +config-$(call config_package,mwifiex-pcie) += MWIFIEX MWIFIEX_PCIE +config-$(call config_package,mwifiex-sdio) += MWIFIEX MWIFIEX_SDIO +config-$(call config_package,rtl8180) += RTL8180 +config-$(call config_package,rtl8187) += RTL8187 +config-$(call config_package,wlcore) += WLCORE WLCORE_SDIO +config-$(call config_package,wl12xx) += WL12XX +config-$(call config_package,wl18xx) += WL18XX +config-y += WL_TI WILINK_PLATFORM_DATA +config-$(call config_package,zd1211rw) += ZD1211RW +config-$(call config_package,rsi91x) += RSI_91X +config-$(call config_package,rsi91x-usb) += RSI_USB +config-$(call config_package,rsi91x-sdio) += RSI_SDIO + +config-$(call config_package,rtlwifi) += RTL_CARDS RTLWIFI +config-$(call config_package,rtlwifi-pci) += RTLWIFI_PCI +config-$(call config_package,rtlwifi-btcoexist) += RTLBTCOEXIST +config-$(call config_package,rtlwifi-usb) += RTLWIFI_USB +config-$(call config_package,rtl8192c-common) += RTL8192C_COMMON +config-$(call config_package,rtl8192ce) += RTL8192CE +config-$(call config_package,rtl8192se) += RTL8192SE +config-$(call config_package,rtl8192de) += RTL8192DE +config-$(call config_package,rtl8192cu) += RTL8192CU +config-$(call config_package,rtl8821ae) += RTL8821AE +config-$(CONFIG_PACKAGE_RTLWIFI_DEBUG) += RTLWIFI_DEBUG + +config-$(call config_package,rtl8xxxu) += RTL8XXXU +config-y += RTL8XXXU_UNTESTED + +config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS B43_LEDS B43LEGACY_LEDS MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \ - CROSS_COMPILE="$(KERNEL_CROSS)" \ - ARCH="$(LINUX_KARCH)" \ + $(KERNEL_MAKE_FLAGS) \ EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include $(IREMAP_CFLAGS)" \ KLIB_BUILD="$(LINUX_DIR)" \ MODPROBE=true \ @@ -442,10 +1671,6 @@ MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \ KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \ KBUILD_LDFLAGS_MODULE_PREREQ= -ifneq ($(findstring c,$(OPENWRT_VERBOSE)),) - MAKE_OPTS += V=1 -endif - define ConfigVars $(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1) )) @@ -476,7 +1701,6 @@ define Build/Prepare $(PKG_BUILD_DIR)/backport-include/linux/bcm47xx_nvram.h echo 'compat-wireless-$(PKG_VERSION)-$(PKG_RELEASE)-$(REVISION)' > $(PKG_BUILD_DIR)/compat_version - $(CP) ./files/regdb.txt $(PKG_BUILD_DIR)/net/wireless/db.txt endef ifneq ($(CONFIG_PACKAGE_kmod-cfg80211)$(CONFIG_PACKAGE_kmod-lib80211),) @@ -486,10 +1710,16 @@ ifneq ($(CONFIG_PACKAGE_kmod-cfg80211)$(CONFIG_PACKAGE_kmod-lib80211),) endef endif -define Build/Configure - cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h - cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h -endef +#do not Build/Configure for EXTERNAL KERNEL +ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"") + ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"") + define Build/Configure + cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h + cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h + cmp $(PKG_BUILD_DIR)/include/linux/rt2x00_platform.h $(LINUX_DIR)/include/linux/rt2x00_platform.h + endef + endif +endif define Build/Compile $(SH_FUNC) var2file "$(call shvar,mac80211_config)" $(PKG_BUILD_DIR)/.config @@ -511,17 +1741,61 @@ define Build/InstallDev endef +define KernelPackage/b43/install + rm -rf $(1)/lib/firmware/ +ifeq ($(CONFIG_B43_OPENFIRMWARE),y) + tar xzf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)" +else + tar xjf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)" +endif + $(INSTALL_DIR) $(1)/lib/firmware/ +ifeq ($(CONFIG_B43_OPENFIRMWARE),y) + $(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/" + $(INSTALL_DIR) $(1)/lib/firmware/b43-open/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/ucode5.fw $(1)/lib/firmware/b43-open/ucode5.fw + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0bsinitvals5.fw $(1)/lib/firmware/b43-open/b0g0bsinitvals5.fw + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0initvals5.fw $(1)/lib/firmware/b43-open/b0g0initvals5.fw +else + b43-fwcutter -w $(1)/lib/firmware/ $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT) +endif +ifneq ($(CONFIG_B43_FW_SQUASH),) + b43-fwsquash.py "$(CONFIG_B43_FW_SQUASH_PHYTYPES)" "$(CONFIG_B43_FW_SQUASH_COREREVS)" "$(1)/lib/firmware/b43" +endif +endef + +define KernelPackage/brcmsmac/install + $(INSTALL_DIR) $(1)/lib/firmware/brcm +ifeq ($(CONFIG_BRCMSMAC_USE_FW_FROM_WL),y) + tar xjf "$(DL_DIR)/$(PKG_BRCMSMAC_FW_SOURCE)" -C "$(PKG_BUILD_DIR)" + b43-fwcutter --brcmsmac -w $(1)/lib/firmware/ $(PKG_BUILD_DIR)/$(PKG_BRCMSMAC_FW_OBJECT) +endif +endef + define KernelPackage/cfg80211/install $(INSTALL_DIR) $(1)/lib/wifi $(1)/lib/netifd/wireless $(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi $(INSTALL_BIN) ./files/lib/netifd/wireless/mac80211.sh $(1)/lib/netifd/wireless $(INSTALL_DIR) $(1)/etc/hotplug.d/ieee80211 - $(INSTALL_DATA) ./files/mac80211.hotplug $(1)/etc/hotplug.d/ieee80211/00-wifi-detect + $(INSTALL_DATA) ./files/mac80211.hotplug $(1)/etc/hotplug.d/ieee80211/10-wifi-detect +endef + +define KernelPackage/ipw2100/install + $(INSTALL_DIR) $(1)/lib/firmware + $(INSTALL_DATA) $(PKG_BUILD_DIR)/ipw2100-$(IPW2100_VERSION)*.fw $(1)/lib/firmware +endef + +define KernelPackage/ipw2200/install + $(INSTALL_DIR) $(1)/lib/firmware + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IPW2200_NAME)-$(IPW2200_VERSION)/ipw2200*.fw $(1)/lib/firmware +endef + +define KernelPackage/zd1211rw/install + $(INSTALL_DIR) $(1)/lib/firmware/zd1211 + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(ZD1211FW_NAME)/zd1211* $(1)/lib/firmware/zd1211 endef $(eval $(call KernelPackage,ath)) -$(eval $(call KernelPackage,ath5k)) $(eval $(call KernelPackage,ath9k)) $(eval $(call KernelPackage,ath9k-common)) $(eval $(call KernelPackage,ath9k-htc)) @@ -532,6 +1806,6 @@ $(eval $(call KernelPackage,mac80211)) $(eval $(call KernelPackage,mac80211-hwsim)) $(eval $(call KernelPackage,rt2x00-lib)) $(eval $(call KernelPackage,rt2x00-mmio)) -$(eval $(call KernelPackage,rt2800-lib)) -$(eval $(call KernelPackage,rt2800-mmio)) -$(eval $(call KernelPackage,rt2800-soc)) +$(eval $(call KernelPackage,rt2x00-pci)) +$(eval $(call KernelPackage,rt2x00-usb)) + diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh index 82c374353e..244260a2dd 100644 --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh @@ -411,6 +411,34 @@ mac80211_check_ap() { has_ap=1 } +mac80211_iw_interface_add() { + local phy="$1" + local ifname="$2" + local type="$3" + local wdsflag="$4" + local rc + + iw phy "$phy" interface add "$ifname" type "$type" $wdsflag + rc="$?" + + [ "$rc" = 233 ] && { + # Device might have just been deleted, give the kernel some time to finish cleaning it up + sleep 1 + + iw phy "$phy" interface add "$ifname" type "$type" $wdsflag + rc="$?" + } + + [ "$rc" = 233 ] && { + # Device might not support virtual interfaces, so the interface never got deleted in the first place. + # Check if the interface already exists, and avoid failing in this case. + ip link show dev "$ifname" >/dev/null 2>/dev/null && rc=0 + } + + [ "$rc" != 0 ] && wireless_setup_failed INTERFACE_CREATION_FAILED + return $rc +} + mac80211_prepare_vif() { json_select config @@ -437,7 +465,7 @@ mac80211_prepare_vif() { # It is far easier to delete and create the desired interface case "$mode" in adhoc) - iw phy "$phy" interface add "$ifname" type adhoc + mac80211_iw_interface_add "$phy" "$ifname" adhoc || return ;; ap) # Hostapd will handle recreating the interface and @@ -451,21 +479,21 @@ mac80211_prepare_vif() { mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return [ -n "$hostapd_ctrl" ] || { - iw phy "$phy" interface add "$ifname" type __ap + mac80211_iw_interface_add "$phy" "$ifname" __ap || return hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}" } ;; mesh) - iw phy "$phy" interface add "$ifname" type mp + mac80211_iw_interface_add "$phy" "$ifname" mp || return ;; monitor) - iw phy "$phy" interface add "$ifname" type monitor + mac80211_iw_interface_add "$phy" "$ifname" monitor || return ;; sta) local wdsflag= staidx="$(($staidx + 1))" [ "$wds" -gt 0 ] && wdsflag="4addr on" - iw phy "$phy" interface add "$ifname" type managed $wdsflag + mac80211_iw_interface_add "$phy" "$ifname" managed "$wdsflag" || return [ "$powersave" -gt 0 ] && powersave="on" || powersave="off" iw "$ifname" set power_save "$powersave" ;; @@ -490,10 +518,20 @@ mac80211_prepare_vif() { mac80211_setup_supplicant() { wpa_supplicant_prepare_interface "$ifname" nl80211 || return 1 - wpa_supplicant_add_network "$ifname" + if [ "$mode" = "sta" ]; then + wpa_supplicant_add_network "$ifname" + else + wpa_supplicant_add_network "$ifname" "$freq" "$htmode" "$noscan" + fi wpa_supplicant_run "$ifname" ${hostapd_ctrl:+-H $hostapd_ctrl} } +mac80211_setup_supplicant_noctl() { + wpa_supplicant_prepare_interface "$ifname" nl80211 || return 1 + wpa_supplicant_add_network "$ifname" "$freq" "$htmode" "$noscan" + wpa_supplicant_run "$ifname" +} + mac80211_setup_adhoc_htmode() { case "$htmode" in VHT20|HT20) ibss_htmode=HT20;; @@ -572,6 +610,51 @@ mac80211_setup_adhoc() { ${keyspec:+keys $keyspec} } +mac80211_setup_mesh() { + json_get_vars ssid mesh_id mcast_rate + + mcval= + [ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate" + [ -n "$mesh_id" ] && ssid="$mesh_id" + + case "$htmode" in + VHT20|HT20) mesh_htmode=HT20;; + HT40*|VHT40) + case "$hwmode" in + a) + case "$(( ($channel / 4) % 2 ))" in + 1) mesh_htmode="HT40+" ;; + 0) mesh_htmode="HT40-";; + esac + ;; + *) + case "$htmode" in + HT40+) mesh_htmode="HT40+";; + HT40-) mesh_htmode="HT40-";; + *) + if [ "$channel" -lt 7 ]; then + mesh_htmode="HT40+" + else + mesh_htmode="HT40-" + fi + ;; + esac + ;; + esac + ;; + VHT80) + mesh_htmode="80Mhz" + ;; + VHT160) + mesh_htmode="160Mhz" + ;; + *) mesh_htmode="NOHT" ;; + esac + iw dev "$ifname" mesh join "$ssid" freq $freq $mesh_htmode \ + ${mcval:+mcast-rate $mcval} \ + beacon-interval $beacon_int +} + mac80211_setup_vif() { local name="$1" local failed @@ -595,62 +678,13 @@ mac80211_setup_vif() { case "$mode" in mesh) - # authsae or wpa_supplicant - json_get_vars key - if [ -n "$key" ]; then - if [ -e "/lib/wifi/authsae.sh" ]; then - . /lib/wifi/authsae.sh - authsae_start_interface || failed=1 - else - wireless_vif_parse_encryption - mac80211_setup_supplicant || failed=1 - fi + wireless_vif_parse_encryption + freq="$(get_freq "$phy" "$channel")" + if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ] || chan_is_dfs "$phy" "$channel"; then + mac80211_setup_supplicant || failed=1 else - json_get_vars mesh_id mcast_rate - - mcval= - [ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate" - - case "$htmode" in - VHT20|HT20) mesh_htmode=HT20;; - HT40*|VHT40) - case "$hwmode" in - a) - case "$(( ($channel / 4) % 2 ))" in - 1) mesh_htmode="HT40+" ;; - 0) mesh_htmode="HT40-";; - esac - ;; - *) - case "$htmode" in - HT40+) mesh_htmode="HT40+";; - HT40-) mesh_htmode="HT40-";; - *) - if [ "$channel" -lt 7 ]; then - mesh_htmode="HT40+" - else - mesh_htmode="HT40-" - fi - ;; - esac - ;; - esac - ;; - VHT80) - mesh_htmode="80Mhz" - ;; - VHT160) - mesh_htmode="160Mhz" - ;; - *) mesh_htmode="NOHT" ;; - esac - - freq="$(get_freq "$phy" "$channel")" - iw dev "$ifname" mesh join "$mesh_id" freq $freq $mesh_htmode \ - ${mcval:+mcast-rate $mcval} \ - beacon-interval $beacon_int + mac80211_setup_mesh fi - for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do json_get_var mp_val "$var" [ -n "$mp_val" ] && iw dev "$ifname" set mesh_param "$var" "$mp_val" @@ -660,7 +694,8 @@ mac80211_setup_vif() { wireless_vif_parse_encryption mac80211_setup_adhoc_htmode if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ]; then - mac80211_setup_supplicant || failed=1 + freq="$(get_freq "$phy" "$channel")" + mac80211_setup_supplicant_noctl || failed=1 else mac80211_setup_adhoc fi @@ -680,6 +715,13 @@ get_freq() { iw "$phy" info | grep -E -m1 "(\* ${chan:-....} MHz${chan:+|\\[$chan\\]})" | grep MHz | awk '{print $2}' } +chan_is_dfs() { + local phy="$1" + local chan="$2" + iw "$phy" info | grep -E -m1 "(\* ${chan:-....} MHz${chan:+|\\[$chan\\]})" | grep -q "MHz.*radar detection" + return $! +} + mac80211_interface_cleanup() { local phy="$1" diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh b/package/kernel/mac80211/files/lib/wifi/mac80211.sh index 7d3d6f396b..511a9188db 100644 --- a/package/kernel/mac80211/files/lib/wifi/mac80211.sh +++ b/package/kernel/mac80211/files/lib/wifi/mac80211.sh @@ -82,14 +82,11 @@ detect_mac80211() { ht_capab="" iw phy "$dev" info | grep -q 'Capabilities:' && htmode=HT20 - iw phy "$dev" info | grep -q '2412 MHz' || { mode_band="a"; channel="36"; } - vht_cap=$(iw phy "$dev" info | grep -c 'VHT Capabilities') - cap_5ghz=$(iw phy "$dev" info | grep -c "Band 2") - [ "$vht_cap" -gt 0 -a "$cap_5ghz" -gt 0 ] && { - mode_band="a"; + iw phy "$dev" info | grep -q '5180 MHz' && { + mode_band="a" channel="36" - htmode="VHT80" + iw phy "$dev" info | grep -q 'VHT Capabilities' && htmode="VHT80" } [ -n "$htmode" ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode" @@ -116,15 +113,14 @@ detect_mac80211() { set wireless.radio${devidx}.hwmode=11${mode_band} ${dev_id} ${ht_capab} - set wireless.radio${devidx}.disabled=0 + set wireless.radio${devidx}.disabled=1 set wireless.default_radio${devidx}=wifi-iface set wireless.default_radio${devidx}.device=radio${devidx} set wireless.default_radio${devidx}.network=lan set wireless.default_radio${devidx}.mode=ap - set wireless.default_radio${devidx}.ssid=libreCMC - set wireless.default_radio${devidx}.encryption=psk - set wireless.default_radio${devidx}.key=librecmc + set wireless.default_radio${devidx}.ssid=OpenWrt + set wireless.default_radio${devidx}.encryption=none EOF uci -q commit wireless diff --git a/package/kernel/mac80211/files/regdb.txt b/package/kernel/mac80211/files/regdb.txt deleted file mode 100644 index d583887602..0000000000 --- a/package/kernel/mac80211/files/regdb.txt +++ /dev/null @@ -1,1314 +0,0 @@ -# This is the world regulatory domain -country 00: - (2402 - 2472 @ 40), (20) - # Channel 12 - 13. - (2457 - 2482 @ 20), (20), NO-IR, AUTO-BW - # Channel 14. Only JP enables this and for 802.11b only - (2474 - 2494 @ 20), (20), NO-IR, NO-OFDM - # Channel 36 - 48 - (5170 - 5250 @ 80), (20), AUTO-BW - # Channel 52 - 64 - (5250 - 5330 @ 80), (20), NO-IR, DFS, AUTO-BW - # Channel 100 - 144 - (5490 - 5730 @ 160), (20), NO-IR, DFS - # Channel 149 - 165 - (5735 - 5835 @ 80), (20), NO-IR - # IEEE 802.11ad (60GHz), channels 1..3 - (57240 - 63720 @ 2160), (0) - - -country AD: - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20) - (5250 - 5330 @ 80), (20), DFS - (5490 - 5710 @ 80), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country AE: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country AF: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -# Source: -# http://pucanguilla.org/Downloads/January2005-Anguilla%20Table%20of%20Allocations.pdf -country AI: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country AL: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20.00), AUTO-BW - (5250 - 5330 @ 80), (20.00), DFS, AUTO-BW - (5490 - 5710 @ 160), (27.00), DFS - -country AM: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 20), (18) - (5250 - 5330 @ 20), (18), DFS - -country AN: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country AR: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country AS: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country AT: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -# Source: -# https://www.legislation.gov.au/Details/F2016C00432 -# Both DFS-ETSI and DFS-FCC are acceptable per AS/NZS 4268 Appendix B. -# The EIRP for DFS bands can be increased by 3dB if TPC is implemented. -# In order to allow 80MHz operation between 5650-5730MHz the upper boundary -# of this more restrictive band has been shifted up by 5MHz from 5725MHz. -country AU: DFS-ETSI - (2400 - 2483.5 @ 40), (36) - (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW - (5250 - 5350 @ 80), (20), NO-OUTDOOR, AUTO-BW, DFS - (5470 - 5600 @ 80), (27), DFS - (5650 - 5730 @ 80), (27), DFS - (5730 - 5850 @ 80), (36) - (57000 - 66000 @ 2160), (43), NO-OUTDOOR - -country AW: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country AZ: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (18), AUTO-BW - (5250 - 5330 @ 80), (18), DFS, AUTO-BW - -country BA: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country BB: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (23), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5735 - 5835 @ 80), (30) - -country BD: DFS-JP - (2402 - 2482 @ 40), (20) - (5735 - 5835 @ 80), (30) - -country BE: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country BF: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -# Bulgarian rules as defined by the Communications Regulation Commission in the -# following documents: -# -# Rules for carrying out electronic communications through radio equipment using -# radio spectrum, which does not need to be individually assigned (the Rules): -# http://www.crc.bg/files/_bg/Pravila_09_06_2015.pdf -# -# List of radio equipment that uses harmonized within the European Union bands -# and electronic communications terminal equipment (the List): -# http://www.crc.bg/files/_bg/Spisak_2015.pdf -# -# Note: The transmit power limits in the 5250-5350 MHz and 5470-5725 MHz bands -# can be raised by 3 dBm if TPC is enabled. Refer to BDS EN 301 893 for details. -country BG: DFS-ETSI - # Wideband data transmission systems (WDTS) in the 2.4GHz ISM band, ref: - # I.22 of the List, BDS EN 300 328 - (2402 - 2482 @ 40), (20) - # 5 GHz Radio Local Area Networks (RLANs), ref: - # II.H01 of the List, BDS EN 301 893 - (5170 - 5250 @ 80), (23), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - # II.H01 of the List, I.54 from the List, BDS EN 301 893 - (5490 - 5710 @ 160), (27), DFS - # Short range devices (SRDs) in the 5725-5875 MHz frequency range, ref: - # I.43 of the List, BDS EN 300 440-2, BDS EN 300 440-1 - (5725 - 5875 @ 80), (14) - # 60 GHz Multiple-Gigabit RLAN Systems, ref: - # II.H03 of the List, BDS EN 302 567-2 - (57000 - 66000 @ 2160), (40), NO-OUTDOOR - -country BH: DFS-JP - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 20), (20) - (5250 - 5330 @ 20), (20), DFS - (5735 - 5835 @ 20), (20) - -country BL: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country BM: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country BN: DFS-JP - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5735 - 5835 @ 80), (20) - -country BO: DFS-JP - (2402 - 2482 @ 40), (20) - (5250 - 5330 @ 80), (30), DFS - (5735 - 5835 @ 80), (30) - -country BR: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country BS: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -# Source: -# http://www.bicma.gov.bt/paper/publication/nrrpart4.pdf -country BT: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country BY: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country BZ: DFS-JP - (2402 - 2482 @ 40), (30) - (5735 - 5835 @ 80), (30) - -country CA: DFS-FCC - (2402 - 2472 @ 40), (30) - (5150 - 5250 @ 80), (23), AUTO-BW - (5250 - 5350 @ 80), (24), DFS, AUTO-BW - (5470 - 5600 @ 80), (24), DFS - (5650 - 5730 @ 80), (24), DFS - (5735 - 5835 @ 80), (30) - -# Source: -# http://www.art-rca.org -country CF: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 40), (17) - (5250 - 5330 @ 40), (24), DFS - (5490 - 5730 @ 40), (24), DFS - (5735 - 5835 @ 40), (30) - -country CH: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country CI: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country CL: DFS-JP - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5735 - 5835 @ 80), (20) - -country CN: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (23), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5735 - 5835 @ 80), (30) - # 60 GHz band channels 1,4: 28dBm, channels 2,3: 44dBm - # ref: http://www.miit.gov.cn/n11293472/n11505629/n11506593/n11960250/n11960606/n11960700/n12330791.files/n12330790.pdf - (57240 - 59400 @ 2160), (28) - (59400 - 63720 @ 2160), (44) - (63720 - 65880 @ 2160), (28) - -country CO: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country CR: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 20), (17) - (5250 - 5330 @ 20), (24), DFS - (5490 - 5730 @ 20), (24), DFS - (5735 - 5835 @ 20), (30) - -# http://www.mincom.gob.cu/?q=marcoregulatorio -# - Redes Informáticas -# Resolución 127, 2011 - Reglamento Banda 2,4 GHz. -country CU: DFS-FCC - (2400 - 2483.5 @ 40), (200 mW) - -country CX: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country CY: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -# Data from http://www.ctu.eu/164/download/VOR/VOR-12-08-2005-34.pdf -# and http://www.ctu.eu/164/download/VOR/VOR-12-05-2007-6-AN.pdf -# Power at 5250 - 5350 MHz and 5470 - 5725 MHz can be doubled if TPC is -# implemented. -country CZ: DFS-ETSI - (2400 - 2483.5 @ 40), (100 mW) - (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW - (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW - (5470 - 5725 @ 160), (500 mW), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -# Allocation for the 2.4 GHz band (Vfg 10 / 2013, Allgemeinzuteilung von -# Frequenzen für die Nutzung in lokalen Netzwerken; Wireless Local Area -# Networks (WLAN-Funkanwendungen). -# https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/2013_10_WLAN_2,4GHz_pdf.pdf -# -# Allocation for the 5 GHz band (Vfg. 7 / 2010, Allgemeinzuteilung von -# Frequenzen in den Bereichen 5150 MHz - 5350 MHz und 5470 MHz - 5725 MHz für -# Funkanwendungen zur breitbandigen Datenübertragung, WAS/WLAN („Wireless -# Access Systems including Wireless Local Area Networks“). -# https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/2010_07_WLAN_5GHz_pdf.pdf -# The values for the 5 GHz have been reduced by a factor of 2 (3db) for non TPC -# devices (in other words: devices with TPC can use twice the tx power of this -# table). Note that the docs do not require TPC for 5150--5250; the reduction -# to 100mW thus is not strictly required -- however the conservative 100mW -# limit is used here as the non-interference with radar and satellite -# apps relies on the attenuation by the building walls only in the -# absence of DFS; the neighbour countries have 100mW limit here as well. -# -# The ETSI EN 300 440-1 standard for short range devices in the 5 GHz band has -# been implemented in Germany: -# https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/2014_69_SRD_pdf.pdf -# -# Allocation for the 60 GHz band (Allgemeinzuteilung von Frequenzen im -# Bereich 57 GHz - 66 GHz für Funkanwendungen für weitbandige -# Datenübertragungssysteme; „Multiple Gigabit WAS/RLAN Systems (MGWS)“). -# https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/2011_08_MGWS_pdf.pdf - -country DE: DFS-ETSI - (2400 - 2483.5 @ 40), (100 mW) - (5150 - 5250 @ 80), (100 mW), NO-OUTDOOR, AUTO-BW - (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW - (5470 - 5725 @ 160), (500 mW), DFS - # short range devices (ETSI EN 300 440-1) - (5725 - 5875 @ 80), (25 mW) - # 60 GHz band channels 1-4 (ETSI EN 302 567) - (57000 - 66000 @ 2160), (40) - -country DK: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -# Source: -# http://www.ntrcdom.org/index.php?option=com_content&view=category&layout=blog&id=10&Itemid=55 -country DM: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5735 - 5835 @ 80), (30) - -country DO: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5735 - 5835 @ 80), (30) - -country DZ: DFS-JP - (2402 - 2482 @ 40), (20) - (5170.000 - 5250.000 @ 80.000), (23.00), AUTO-BW - (5250.000 - 5330.000 @ 80.000), (23.00), DFS, AUTO-BW - (5490.000 - 5670.000 @ 160.000), (23.00), DFS - -country EC: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 20), (17) - (5250 - 5330 @ 20), (24), DFS - (5490 - 5730 @ 20), (24), DFS - (5735 - 5835 @ 20), (30) - -country EE: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country EG: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 40), (20) - (5250 - 5330 @ 40), (20), DFS - -# Orden IET/787/2013, de 25 de abril, por la que se aprueba -# el cuadro nacional de atribución de frecuencias. -# http://www.boe.es/diario_boe/txt.php?id=BOE-A-2013-4845 -# -# more info at "Cuadro nacional de atribución de frecuencias (CNAF)": -# http://www.minetur.gob.es/telecomunicaciones/espectro/paginas/cnaf.aspx - -country ES: DFS-ETSI - (2400 - 2483.5 @ 40), (100 mW) - (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW - (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW - (5470 - 5725 @ 160), (500 mW), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country ET: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country FI: DFS-ETSI - (2400 - 2483.5 @ 40), (20) - (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW - (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW - (5470 - 5725 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country FM: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country FR: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country GB: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country GD: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country GE: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (18), AUTO-BW - (5250 - 5330 @ 80), (18), DFS, AUTO-BW - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country GF: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country GH: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country GL: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country GP: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country GR: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country GT: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5735 - 5835 @ 80), (30) - -country GU: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 20), (17) - (5250 - 5330 @ 20), (24), DFS - (5490 - 5730 @ 20), (24), DFS - (5735 - 5835 @ 20), (30) - -country GY: - (2402 - 2482 @ 40), (30) - (5735 - 5835 @ 80), (30) - -country HK: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5710 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country HN: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country HR: DFS-ETSI - (2400 - 2483.5 @ 40), (20) - (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW - (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW - (5470 - 5725 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country HT: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country HU: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country ID: DFS-JP - # ref: http://www.postel.go.id/content/ID/regulasi/standardisasi/kepdir/bwa%205,8%20ghz.pdf - (2402 - 2482 @ 20), (20) - (5735 - 5815 @ 20), (23) - -country IE: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country IL: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW - (5250 - 5350 @ 80), (200 mW), NO-OUTDOOR, DFS, AUTO-BW - -country IN: - (2402 - 2482 @ 40), (20) - (5150 - 5350 @ 160), (23) - (5725 - 5875 @ 80), (23) - -country IR: DFS-JP - (2402 - 2482 @ 40), (20) - (5735 - 5835 @ 80), (30) - -country IS: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country IT: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country JM: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country JO: DFS-JP - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (23) - (5735 - 5835 @ 80), (23) - -country JP: DFS-JP - (2402 - 2482 @ 40), (20) - (2474 - 2494 @ 20), (20), NO-OFDM - (4910 - 4990 @ 40), (23) - (5030 - 5090 @ 40), (23) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (23), DFS - # 60 GHz band channels 2-4 at 10mW, - # ref: http://www.arib.or.jp/english/html/overview/doc/1-STD-T74v1_1.pdf - (59000 - 66000 @ 2160), (10 mW) - -country KE: DFS-JP - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (23) - (5490 - 5570 @ 80), (30), DFS - (5735 - 5775 @ 40), (23) - -country KH: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -# Source -# http://ntrc.kn/?page_id=7 -country KN: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (30), DFS - (5735 - 5815 @ 80), (30) - -country KP: DFS-JP - (2402 - 2482 @ 20), (20) - (5170 - 5250 @ 20), (20) - (5250 - 5330 @ 20), (20), DFS - (5490 - 5630 @ 20), (30), DFS - (5735 - 5815 @ 20), (30) - -country KR: DFS-JP - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (30), DFS - (5735 - 5835 @ 80), (30) - # 60 GHz band channels 1-4, - # ref: http://www.law.go.kr/%ED%96%89%EC%A0%95%EA%B7%9C%EC%B9%99/%EB%AC%B4%EC%84%A0%EC%84%A4%EB%B9%84%EA%B7%9C%EC%B9%99 - (57000 - 66000 @ 2160), (43) - -country KW: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - -country KY: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country KZ: - (2402 - 2482 @ 40), (20) - -country LB: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -# Source: -# http://www.ntrc.org.lc/operational_structures.htm -country LC: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (30), DFS - (5735 - 5815 @ 80), (30) - -country LI: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country LK: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 20), (17) - (5250 - 5330 @ 20), (24), DFS - (5490 - 5730 @ 20), (24), DFS - (5735 - 5835 @ 20), (30) - -# Source: -# http://lca.org.ls/images/documents/lesotho_national_frequency_allocation_plan.pdf -country LS: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country LT: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country LU: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country LV: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country MA: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - -country MC: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -# Source: -# http://www.cnfr.md/index.php?pag=sec&id=117&l=en -country MD: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -# Source: -# http://www.cept.org/files/1050/Tools%20and%20Services/EFIS%20-%20ECO%20Frequency%20Information%20System/National%20frequency%20tables/Montenegro%20NAFT%20-%202010.pdf -country ME: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country MF: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country MH: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country MK: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country MN: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country MO: DFS-FCC - (2402 - 2482 @ 40), (23) - (5170 - 5250 @ 80), (23), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5490 - 5730 @ 160), (30), DFS - (5735 - 5835 @ 80), (30) - -country MP: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country MQ: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -# Source: -# http://www.are.mr/pdfs/telec_freq_TNAbf_2010.pdf -country MR: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country MT: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country MU: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -# Source: -# http://www.cam.gov.mv/docs/tech_standards/TAM-TS-100-2004-WLAN.pdf -country MV: DFS-ETSI - (2400 - 2483.5 @ 40), (100 mW) - (5150 - 5250 @ 80), (200 mW), AUTO-BW - (5250 - 5350 @ 80), (100 mW), DFS, AUTO-BW - (5725 - 5850 @ 80), (100 mW) - -country MW: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country MX: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country MY: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5650 @ 160), (24), DFS - (5735 - 5835 @ 80), (24) - -country NG: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5250 - 5330 @ 80), (30), DFS - (5735 - 5835 @ 80), (30) - -country NI: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -# Regulation on the use of frequency space without a license and -# without notification 2015 -# -# http://wetten.overheid.nl/BWBR0036378/2015-03-05 - -country NL: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), NO-OUTDOOR, AUTO-BW - (5250 - 5330 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # short range devices (ETSI EN 300 440-1) - (5725 - 5875 @ 80), (25 mW) - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -# Data from http://www.lovdata.no/dokument/SF/forskrift/2012-01-19-77 -# Power at 5250 - 5350 MHz, 5470 - 5725 MHz and 5815 – 5850 MHz can -# be doubled if TPC is implemented. -# Up to 2W (or 4W with TPC) is allowed in the 5725 – 5795 MHz band -# which has been merged with 5470 - 5725 MHz to allow wide channels -country NO: DFS-ETSI - (2400 - 2483.5 @ 40), (100 mW) - (5150 - 5250 @ 80), (200 mW), AUTO-BW - (5250 - 5350 @ 80), (100 mW), DFS, AUTO-BW - (5470 - 5795 @ 160), (500 mW), DFS - (5815 - 5850 @ 35), (2000 mW), DFS - (17100 - 17300 @ 200), (100 mW) - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country NP: DFS-JP - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5735 - 5835 @ 80), (20) - -country NZ: DFS-ETSI - (2402 - 2482 @ 40), (30) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country OM: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country PA: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5735 - 5835 @ 80), (30) - -country PE: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country PF: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country PG: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country PH: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country PK: DFS-JP - (2402 - 2482 @ 40), (20) - (5735 - 5835 @ 80), (30) - -country PL: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country PM: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country PR: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country PT: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country PW: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country PY: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country QA: DFS-JP - (2402 - 2482 @ 40), (20) - (5735 - 5835 @ 80), (30) - -country RE: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country RO: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - - -# Source: -# http://www.ratel.rs/upload/documents/Plan_namene/Plan_namene-sl_glasnik.pdf -country RS: DFS-ETSI - (2400 - 2483.5 @ 40), (100 mW) - (5150 - 5350 @ 40), (200 mW), NO-OUTDOOR - (5470 - 5725 @ 20), (1000 mW), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country RU: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5650 - 5730 @ 80), (30), DFS - (5735 - 5835 @ 80), (30) - # 60 GHz band channels 1-4, ref: Changes to NLA 124_Order №129_22042015.pdf - (57000 - 66000 @ 2160), (40) - -country RW: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country SA: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country SE: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country SG: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country SI: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country SK: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -# Source: -# Regulation N° 2004-005 ART/DG/DRC/D.Rég -country SN: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country SR: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country SV: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 20), (17) - (5250 - 5330 @ 20), (23), DFS - (5735 - 5835 @ 20), (30) - -country SY: - (2402 - 2482 @ 40), (20) - -# Source: -# http://www.telecommission.tc/Spectrum-plan20110324-101210.html -country TC: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country TD: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country TG: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 40), (20) - (5250 - 5330 @ 40), (20), DFS - (5490 - 5710 @ 40), (27), DFS - -country TH: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country TN: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - -country TR: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country TT: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -# Source: -# Table of Frequency Allocations of Republic of China (Taiwan) / Nov 2014: -# http://www.motc.gov.tw/websitedowndoc?file=post/201411171137330.doc& \ -# filedisplay=Table+of+radio+frequency+allocation.doc -# LP0002 Low-power Radio-frequency Devices Technical Regulations / 28 Jun 2011: -# http://www.ncc.gov.tw/english/show_file.aspx?table_name=news&file_sn=681 -# (section 3.10.1, 4.7) -country TW: DFS-FCC - (2400 - 2483.5 @ 40), (30) - # Follow US 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients - (5150 - 5250 @ 80), (23), AUTO-BW - (5250 - 5350 @ 80), (23), DFS, AUTO-BW - (5470 - 5725 @ 160), (23), DFS - (5725 - 5850 @ 80), (30) - -country TZ: - (2402 - 2482 @ 40), (20) - (5735 - 5835 @ 80), (30) - -# Source: -# #914 / 06 Sep 2007: http://www.ucrf.gov.ua/uk/doc/nkrz/1196068874 -# #1174 / 23 Oct 2008: http://www.nkrz.gov.ua/uk/activities/ruling/1225269361 -# (appendix 8) -# Listed 5GHz range is a lowest common denominator for all related -# rules in the referenced laws. Such a range is used because of -# disputable definitions there. -country UA: DFS-ETSI - (2400 - 2483.5 @ 40), (20), NO-OUTDOOR - (5150 - 5250 @ 80), (20), NO-OUTDOOR, AUTO-BW - (5250 - 5350 @ 80), (20), DFS, NO-OUTDOOR, AUTO-BW - (5490 - 5670 @ 160), (20), DFS - (5735 - 5835 @ 80), (20) - # 60 GHz band channels 1-4, ref: Etsi En 302 567 - (57000 - 66000 @ 2160), (40) - -country UG: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country US: DFS-FCC - (2402 - 2472 @ 40), (30) - # 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients - (5170 - 5250 @ 80), (23), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5490 - 5730 @ 160), (23), DFS - (5735 - 5835 @ 80), (30) - # 60g band - # reference: http://cfr.regstoday.com/47cfr15.aspx#47_CFR_15p255 - # channels 1,2,3, EIRP=40dBm(43dBm peak) - (57240 - 63720 @ 2160), (40) - -country UY: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (23), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5735 - 5835 @ 80), (30) - -# Source: -# http://cemc.uz/article/1976/ -country UZ: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - -# Source: -# http://www.ntrc.vc/regulations/Jun_2006_Spectrum_Managment_Regulations.pdf -country VC: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -# Source: -# Official Gazette (Gaceta Oficial) concerning Unlicensed transmitter use -# (10 June 2013) -# http://www.conatel.gob.ve/ -country VE: DFS-FCC - (2402 - 2482 @ 40), (30) - (5170 - 5250 @ 80), (23), AUTO-BW - (5250 - 5330 @ 80), (23), DFS, AUTO-BW - (5735 - 5835 @ 80), (30) - -country VI: DFS-FCC - (2402 - 2472 @ 40), (30) - (5170 - 5250 @ 80), (24), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country VN: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17) - (5250 - 5330 @ 80), (24), DFS - (5490 - 5730 @ 80), (24), DFS - (5735 - 5835 @ 80), (30) - -# Source: -# http://www.trr.vu/attachments/category/130/GURL_for_Short-range_Radiocommunication_Devices2.pdf -country VU: DFS-FCC - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (17), AUTO-BW - (5250 - 5330 @ 80), (24), DFS, AUTO-BW - (5490 - 5730 @ 160), (24), DFS - (5735 - 5835 @ 80), (30) - -country WF: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country WS: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 40), (20) - (5250 - 5330 @ 40), (20), DFS - (5490 - 5710 @ 40), (27), DFS - -country YE: - (2402 - 2482 @ 40), (20) - -country YT: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - -country ZA: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (30) - -country ZW: DFS-ETSI - (2402 - 2482 @ 40), (20) - (5170 - 5250 @ 80), (20), AUTO-BW - (5250 - 5330 @ 80), (20), DFS, AUTO-BW - (5490 - 5710 @ 160), (27), DFS - diff --git a/package/kernel/mac80211/patches/001-fix_build.patch b/package/kernel/mac80211/patches/001-fix_build.patch index 402649d2cc..9e272e90af 100644 --- a/package/kernel/mac80211/patches/001-fix_build.patch +++ b/package/kernel/mac80211/patches/001-fix_build.patch @@ -24,7 +24,7 @@ -.DEFAULT: +.SILENT: $(STAMP_KERNEL_CONFIG) +$(STAMP_KERNEL_CONFIG): - @set -e ; test -f .local-symbols || ( \ + @set -e ; test -f local-symbols || ( \ echo "/--------------" ;\ echo "| You shouldn't run make in the backports tree, but only in" ;\ @@ -60,57 +62,61 @@ mrproper: @@ -34,7 +34,7 @@ - @set -e ; if [ "$$(cat .kernel_config_md5 2>/dev/null)" != "$(CONFIG_MD5)" ] ;\ - then \ - echo -n "Generating local configuration database from kernel ..." ;\ -- grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \ +- grep -v -f local-symbols $(KERNEL_CONFIG) | grep = | ( \ - while read l ; do \ - if [ "$${l:0:7}" != "CONFIG_" ] ; then \ - continue ;\ @@ -85,9 +85,9 @@ + @rm -f .kernel_config_md5_* + @touch $@ + -+Kconfig.kernel: $(STAMP_KERNEL_CONFIG) .local-symbols ++Kconfig.kernel: $(STAMP_KERNEL_CONFIG) local-symbols + @printf "Generating local configuration database from kernel ..." -+ @grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \ ++ @grep -v -f local-symbols $(KERNEL_CONFIG) | grep = | ( \ + while read l ; do \ + if [ "$${l:0:7}" != "CONFIG_" ] ; then \ + continue ;\ @@ -148,7 +148,7 @@ @$(MAKE) oldconfig - @echo -n "Building backport-include/backport/autoconf.h ..." + @printf "Building backport-include/backport/autoconf.h ..." - @grep -f .local-symbols .config | ( \ + @grep -f local-symbols .config | ( \ echo "#ifndef COMPAT_AUTOCONF_INCLUDED" ;\ echo "#define COMPAT_AUTOCONF_INCLUDED" ;\ @@ -80,7 +80,12 @@ backport-include/backport/autoconf.h: .c diff --git a/package/kernel/mac80211/patches/004-kconfig_backport_fix.patch b/package/kernel/mac80211/patches/004-kconfig_backport_fix.patch index f11029844c..2c9572ec93 100644 --- a/package/kernel/mac80211/patches/004-kconfig_backport_fix.patch +++ b/package/kernel/mac80211/patches/004-kconfig_backport_fix.patch @@ -17,7 +17,7 @@ #undef IS_ENABLED #define IS_ENABLED(option) \ (config_enabled(option) || config_enabled(option##_MODULE)) -@@ -24,6 +27,8 @@ +@@ -31,6 +34,8 @@ #undef IS_BUILTIN #define IS_BUILTIN(option) config_enabled(option) diff --git a/package/kernel/mac80211/patches/005-revert-devcoredump.patch b/package/kernel/mac80211/patches/005-revert-devcoredump.patch index ff460900ff..d485d95586 100644 --- a/package/kernel/mac80211/patches/005-revert-devcoredump.patch +++ b/package/kernel/mac80211/patches/005-revert-devcoredump.patch @@ -1,152 +1,11 @@ --- a/compat/Makefile +++ b/compat/Makefile -@@ -35,8 +35,6 @@ compat-$(CPTCFG_KERNEL_4_6) += backport- - - compat-$(CPTCFG_BPAUTO_BUILD_CRYPTO_CCM) += crypto-ccm.o - compat-$(CPTCFG_BPAUTO_CRYPTO_SKCIPHER) += crypto-skcipher.o +@@ -70,8 +70,6 @@ quiet_cmd_build_OID_registry = GEN $ + cmd_build_OID_registry = perl $(src)/build_OID_registry $< $@ + compat-$(CPTCFG_BPAUTO_ASN1_DECODER) += lib-asn1_decoder.o + compat-$(CPTCFG_BPAUTO_BUILD_SYSTEM_DATA_VERIFICATION) += lib-oid_registry.o -skcipher-objs += crypto-skcipher.o -obj-$(CPTCFG_BPAUTO_CRYPTO_SKCIPHER) += skcipher.o - compat-$(CPTCFG_BPAUTO_BUILD_WANT_DEV_COREDUMP) += drivers-base-devcoredump.o compat-$(CPTCFG_BPAUTO_RHASHTABLE) += lib-rhashtable.o cordic-objs += lib-cordic.o ---- a/compat/drivers-base-devcoredump.c -+++ b/compat/drivers-base-devcoredump.c -@@ -31,6 +31,7 @@ - #include - #include - #include -+#include "backports.h" - - static struct class devcd_class; - -@@ -40,6 +41,10 @@ static bool devcd_disabled; - /* if data isn't read by userspace after 5 minutes then delete it */ - #define DEVCD_TIMEOUT (HZ * 60 * 5) - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) -+static struct bin_attribute devcd_attr_data; -+#endif -+ - struct devcd_entry { - struct device devcd_dev; - void *data; -@@ -69,8 +74,7 @@ static void devcd_dev_release(struct dev - * a struct device to know when it goes away? - */ - if (devcd->failing_dev->kobj.sd) -- sysfs_delete_link(&devcd->failing_dev->kobj, &dev->kobj, -- "devcoredump"); -+ sysfs_remove_link(&devcd->failing_dev->kobj, "devcoredump"); - - put_device(devcd->failing_dev); - kfree(devcd); -@@ -82,6 +86,9 @@ static void devcd_del(struct work_struct - - devcd = container_of(wk, struct devcd_entry, del_wk.work); - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) -+ device_remove_bin_file(&devcd->devcd_dev, &devcd_attr_data); -+#endif - device_del(&devcd->devcd_dev); - put_device(&devcd->devcd_dev); - } -@@ -115,6 +122,7 @@ static struct bin_attribute devcd_attr_d - .write = devcd_data_write, - }; - -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0) - static struct bin_attribute *devcd_dev_bin_attrs[] = { - &devcd_attr_data, NULL, - }; -@@ -126,6 +134,7 @@ static const struct attribute_group devc - static const struct attribute_group *devcd_dev_groups[] = { - &devcd_dev_group, NULL, - }; -+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0) */ - - static int devcd_free(struct device *dev, void *data) - { -@@ -160,18 +169,11 @@ static ssize_t disabled_store(struct cla - - return count; - } --static CLASS_ATTR_RW(disabled); - --static struct attribute *devcd_class_attrs[] = { -- &class_attr_disabled.attr, -- NULL, -+static struct class_attribute devcd_class_attrs[] = { -+ __ATTR_RW(disabled), -+ __ATTR_NULL - }; --#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0) --ATTRIBUTE_GROUPS(devcd_class); --#else --#define BP_ATTR_GRP_STRUCT device_attribute --ATTRIBUTE_GROUPS_BACKPORT(devcd_class); --#endif - - static struct class devcd_class = { - .name = "devcoredump", -@@ -179,10 +181,8 @@ static struct class devcd_class = { - .dev_release = devcd_dev_release, - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0) - .dev_groups = devcd_dev_groups, --#else -- .dev_attrs = devcd_class_dev_attrs, - #endif -- .class_groups = devcd_class_groups, -+ .class_attrs = devcd_class_attrs, - }; - - static ssize_t devcd_readv(char *buffer, loff_t offset, size_t count, -@@ -325,6 +325,11 @@ void dev_coredumpm(struct device *dev, s - if (device_add(&devcd->devcd_dev)) - goto put_device; - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) -+ if (device_create_bin_file(&devcd->devcd_dev, &devcd_attr_data)) -+ goto put_device; -+#endif -+ - if (sysfs_create_link(&devcd->devcd_dev.kobj, &dev->kobj, - "failing_device")) - /* nothing - symlink will be missing */; -@@ -367,16 +372,13 @@ void dev_coredumpsg(struct device *dev, - } - EXPORT_SYMBOL_GPL(dev_coredumpsg); - --static int __init devcoredump_init(void) -+int __init devcoredump_init(void) - { -- init_devcd_class_attrs(); - return class_register(&devcd_class); - } --__initcall(devcoredump_init); - --static void __exit devcoredump_exit(void) -+void __exit devcoredump_exit(void) - { - class_for_each_device(&devcd_class, NULL, NULL, devcd_free); - class_unregister(&devcd_class); - } --__exitcall(devcoredump_exit); ---- a/include/linux/backport-devcoredump.h -+++ b/include/linux/backport-devcoredump.h -@@ -66,7 +66,7 @@ static inline void _devcd_free_sgtable(s - } - - --#ifdef CONFIG_DEV_COREDUMP -+#ifdef CPTCFG_BPAUTO_WANT_DEV_COREDUMP - void dev_coredumpv(struct device *dev, void *data, size_t datalen, - gfp_t gfp); - -@@ -100,6 +100,6 @@ static inline void dev_coredumpsg(struct - { - _devcd_free_sgtable(table); - } --#endif /* CONFIG_DEV_COREDUMP */ -+#endif /* CPTCFG_BPAUTO_WANT_DEV_COREDUMP */ - - #endif /* __DEVCOREDUMP_H */ + obj-$(CPTCFG_BPAUTO_BUILD_CORDIC) += cordic.o diff --git a/package/kernel/mac80211/patches/006-fix-genl-multicast.patch b/package/kernel/mac80211/patches/006-fix-genl-multicast.patch new file mode 100644 index 0000000000..42fd3e8271 --- /dev/null +++ b/package/kernel/mac80211/patches/006-fix-genl-multicast.patch @@ -0,0 +1,10 @@ +--- a/compat/backport-4.12.c ++++ b/compat/backport-4.12.c +@@ -225,6 +225,7 @@ int bp_extack_genl_register_family(struc + + /* copy this since the family might access it directly */ + family->attrbuf = copy->family.attrbuf; ++ family->mcgrp_offset = copy->family.mcgrp_offset; + + mutex_lock(&copies_mutex); + list_add_tail(©->list, &copies_list); diff --git a/package/kernel/mac80211/patches/006-revert-ktime-changes.patch b/package/kernel/mac80211/patches/006-revert-ktime-changes.patch deleted file mode 100644 index b839eb4c8d..0000000000 --- a/package/kernel/mac80211/patches/006-revert-ktime-changes.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c -@@ -177,7 +177,7 @@ static bool rt2800usb_tx_sta_fifo_read_c - if (rt2800usb_txstatus_pending(rt2x00dev)) { - /* Read register after 1 ms */ - hrtimer_start(&rt2x00dev->txstatus_timer, -- TXSTATUS_READ_INTERVAL, -+ ktime_set(0, TXSTATUS_READ_INTERVAL), - HRTIMER_MODE_REL); - return false; - } -@@ -204,7 +204,7 @@ static void rt2800usb_async_read_tx_stat - - /* Read TX_STA_FIFO register after 2 ms */ - hrtimer_start(&rt2x00dev->txstatus_timer, -- 2 * TXSTATUS_READ_INTERVAL, -+ ktime_set(0, 2*TXSTATUS_READ_INTERVAL), - HRTIMER_MODE_REL); - } - diff --git a/package/kernel/mac80211/patches/007-fix-linux-verification-h.patch b/package/kernel/mac80211/patches/007-fix-linux-verification-h.patch new file mode 100644 index 0000000000..4011f1d3ba --- /dev/null +++ b/package/kernel/mac80211/patches/007-fix-linux-verification-h.patch @@ -0,0 +1,11 @@ +--- a/backport-include/linux/verification.h ++++ b/backport-include/linux/verification.h +@@ -1,7 +1,7 @@ + #ifndef __BP_VERIFICATION_H + #define __BP_VERIFICATION_H + #include +-#ifndef CPTCFG_BPAUTO_BUILD_SYSTEM_DATA_VERIFICATION ++#if LINUX_VERSION_IS_GEQ(4,7,0) && !defined(CPTCFG_BPAUTO_BUILD_SYSTEM_DATA_VERIFICATION) + #include_next + #else + #include diff --git a/package/kernel/mac80211/patches/007-revert-genetlink-changes.patch b/package/kernel/mac80211/patches/007-revert-genetlink-changes.patch deleted file mode 100644 index 1a85106bc2..0000000000 --- a/package/kernel/mac80211/patches/007-revert-genetlink-changes.patch +++ /dev/null @@ -1,266 +0,0 @@ ---- a/net/wireless/nl80211.c -+++ b/net/wireless/nl80211.c -@@ -32,8 +32,22 @@ static int nl80211_crypto_settings(struc - struct cfg80211_crypto_settings *settings, - int cipher_limit); - -+static int nl80211_pre_doit(const struct genl_ops *ops, struct sk_buff *skb, -+ struct genl_info *info); -+static void nl80211_post_doit(const struct genl_ops *ops, struct sk_buff *skb, -+ struct genl_info *info); -+ - /* the netlink family */ --static struct genl_family nl80211_fam; -+static struct genl_family nl80211_fam = { -+ .id = GENL_ID_GENERATE, /* don't bother with a hardcoded ID */ -+ .name = NL80211_GENL_NAME, /* have users key off the name instead */ -+ .hdrsize = 0, /* no private header */ -+ .version = 1, /* no particular meaning now */ -+ .maxattr = NL80211_ATTR_MAX, -+ .netnsok = true, -+ .pre_doit = nl80211_pre_doit, -+ .post_doit = nl80211_post_doit, -+}; - - /* multicast groups */ - enum nl80211_multicast_groups { -@@ -549,14 +563,13 @@ static int nl80211_prepare_wdev_dump(str - - if (!cb->args[0]) { - err = nlmsg_parse(cb->nlh, GENL_HDRLEN + nl80211_fam.hdrsize, -- genl_family_attrbuf(&nl80211_fam), -- nl80211_fam.maxattr, nl80211_policy); -+ nl80211_fam.attrbuf, nl80211_fam.maxattr, -+ nl80211_policy); - if (err) - goto out_unlock; - -- *wdev = __cfg80211_wdev_from_attrs( -- sock_net(skb->sk), -- genl_family_attrbuf(&nl80211_fam)); -+ *wdev = __cfg80211_wdev_from_attrs(sock_net(skb->sk), -+ nl80211_fam.attrbuf); - if (IS_ERR(*wdev)) { - err = PTR_ERR(*wdev); - goto out_unlock; -@@ -1903,7 +1916,7 @@ static int nl80211_dump_wiphy_parse(stru - struct netlink_callback *cb, - struct nl80211_dump_wiphy_state *state) - { -- struct nlattr **tb = genl_family_attrbuf(&nl80211_fam); -+ struct nlattr **tb = nl80211_fam.attrbuf; - int ret = nlmsg_parse(cb->nlh, GENL_HDRLEN + nl80211_fam.hdrsize, - tb, nl80211_fam.maxattr, nl80211_policy); - /* ignore parse errors for backward compatibility */ -@@ -7733,7 +7746,6 @@ static int nl80211_send_survey(struct sk - - static int nl80211_dump_survey(struct sk_buff *skb, struct netlink_callback *cb) - { -- struct nlattr **attrbuf = genl_family_attrbuf(&nl80211_fam); - struct survey_info survey; - struct cfg80211_registered_device *rdev; - struct wireless_dev *wdev; -@@ -7746,7 +7758,7 @@ static int nl80211_dump_survey(struct sk - return res; - - /* prepare_wdev_dump parsed the attributes */ -- radio_stats = attrbuf[NL80211_ATTR_SURVEY_RADIO_STATS]; -+ radio_stats = nl80211_fam.attrbuf[NL80211_ATTR_SURVEY_RADIO_STATS]; - - if (!wdev->netdev) { - res = -EINVAL; -@@ -8594,14 +8606,14 @@ static int nl80211_testmode_dump(struct - */ - phy_idx = cb->args[0] - 1; - } else { -- struct nlattr **attrbuf = genl_family_attrbuf(&nl80211_fam); -- - err = nlmsg_parse(cb->nlh, GENL_HDRLEN + nl80211_fam.hdrsize, -- attrbuf, nl80211_fam.maxattr, nl80211_policy); -+ nl80211_fam.attrbuf, nl80211_fam.maxattr, -+ nl80211_policy); - if (err) - goto out_err; - -- rdev = __cfg80211_rdev_from_attrs(sock_net(skb->sk), attrbuf); -+ rdev = __cfg80211_rdev_from_attrs(sock_net(skb->sk), -+ nl80211_fam.attrbuf); - if (IS_ERR(rdev)) { - err = PTR_ERR(rdev); - goto out_err; -@@ -8609,8 +8621,9 @@ static int nl80211_testmode_dump(struct - phy_idx = rdev->wiphy_idx; - rdev = NULL; - -- if (attrbuf[NL80211_ATTR_TESTDATA]) -- cb->args[1] = (long)attrbuf[NL80211_ATTR_TESTDATA]; -+ if (nl80211_fam.attrbuf[NL80211_ATTR_TESTDATA]) -+ cb->args[1] = -+ (long)nl80211_fam.attrbuf[NL80211_ATTR_TESTDATA]; - } - - if (cb->args[1]) { -@@ -10814,7 +10827,8 @@ static int handle_nan_filter(struct nlat - - i = 0; - nla_for_each_nested(attr, attr_filter, rem) { -- filter[i].filter = nla_memdup(attr, GFP_KERNEL); -+ filter[i].filter = kmemdup(nla_data(attr), nla_len(attr), -+ GFP_KERNEL); - filter[i].len = nla_len(attr); - i++; - } -@@ -11450,7 +11464,6 @@ static int nl80211_prepare_vendor_dump(s - struct cfg80211_registered_device **rdev, - struct wireless_dev **wdev) - { -- struct nlattr **attrbuf = genl_family_attrbuf(&nl80211_fam); - u32 vid, subcmd; - unsigned int i; - int vcmd_idx = -1; -@@ -11486,28 +11499,31 @@ static int nl80211_prepare_vendor_dump(s - } - - err = nlmsg_parse(cb->nlh, GENL_HDRLEN + nl80211_fam.hdrsize, -- attrbuf, nl80211_fam.maxattr, nl80211_policy); -+ nl80211_fam.attrbuf, nl80211_fam.maxattr, -+ nl80211_policy); - if (err) - goto out_unlock; - -- if (!attrbuf[NL80211_ATTR_VENDOR_ID] || -- !attrbuf[NL80211_ATTR_VENDOR_SUBCMD]) { -+ if (!nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_ID] || -+ !nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_SUBCMD]) { - err = -EINVAL; - goto out_unlock; - } - -- *wdev = __cfg80211_wdev_from_attrs(sock_net(skb->sk), attrbuf); -+ *wdev = __cfg80211_wdev_from_attrs(sock_net(skb->sk), -+ nl80211_fam.attrbuf); - if (IS_ERR(*wdev)) - *wdev = NULL; - -- *rdev = __cfg80211_rdev_from_attrs(sock_net(skb->sk), attrbuf); -+ *rdev = __cfg80211_rdev_from_attrs(sock_net(skb->sk), -+ nl80211_fam.attrbuf); - if (IS_ERR(*rdev)) { - err = PTR_ERR(*rdev); - goto out_unlock; - } - -- vid = nla_get_u32(attrbuf[NL80211_ATTR_VENDOR_ID]); -- subcmd = nla_get_u32(attrbuf[NL80211_ATTR_VENDOR_SUBCMD]); -+ vid = nla_get_u32(nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_ID]); -+ subcmd = nla_get_u32(nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_SUBCMD]); - - for (i = 0; i < (*rdev)->wiphy.n_vendor_commands; i++) { - const struct wiphy_vendor_command *vcmd; -@@ -11531,9 +11547,9 @@ static int nl80211_prepare_vendor_dump(s - goto out_unlock; - } - -- if (attrbuf[NL80211_ATTR_VENDOR_DATA]) { -- data = nla_data(attrbuf[NL80211_ATTR_VENDOR_DATA]); -- data_len = nla_len(attrbuf[NL80211_ATTR_VENDOR_DATA]); -+ if (nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_DATA]) { -+ data = nla_data(nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_DATA]); -+ data_len = nla_len(nl80211_fam.attrbuf[NL80211_ATTR_VENDOR_DATA]); - } - - /* 0 is the first index - add 1 to parse only once */ -@@ -12795,21 +12811,6 @@ static __genl_const struct genl_ops nl80 - }, - }; - --static struct genl_family nl80211_fam __ro_after_init = { -- .name = NL80211_GENL_NAME, /* have users key off the name instead */ -- .hdrsize = 0, /* no private header */ -- .version = 1, /* no particular meaning now */ -- .maxattr = NL80211_ATTR_MAX, -- .netnsok = true, -- .pre_doit = nl80211_pre_doit, -- .post_doit = nl80211_post_doit, -- .module = THIS_MODULE, -- .ops = nl80211_ops, -- .n_ops = ARRAY_SIZE(nl80211_ops), -- .mcgrps = nl80211_mcgrps, -- .n_mcgrps = ARRAY_SIZE(nl80211_mcgrps), --}; -- - /* notification functions */ - - void nl80211_notify_wiphy(struct cfg80211_registered_device *rdev, -@@ -14759,11 +14760,12 @@ void nl80211_send_ap_stopped(struct wire - - /* initialisation/exit functions */ - --int __init nl80211_init(void) -+int nl80211_init(void) - { - int err; - -- err = genl_register_family(&nl80211_fam); -+ err = genl_register_family_with_ops_groups(&nl80211_fam, nl80211_ops, -+ nl80211_mcgrps); - if (err) - return err; - ---- a/drivers/net/wireless/mac80211_hwsim.c -+++ b/drivers/net/wireless/mac80211_hwsim.c -@@ -587,8 +587,15 @@ struct hwsim_radiotap_ack_hdr { - __le16 rt_chbitmask; - } __packed; - --/* MAC80211_HWSIM netlink family */ --static struct genl_family hwsim_genl_family; -+/* MAC80211_HWSIM netlinf family */ -+static struct genl_family hwsim_genl_family = { -+ .id = GENL_ID_GENERATE, -+ .hdrsize = 0, -+ .name = "MAC80211_HWSIM", -+ .version = 1, -+ .maxattr = HWSIM_ATTR_MAX, -+ .netnsok = true, -+}; - - enum hwsim_multicast_groups { - HWSIM_MCGRP_CONFIG, -@@ -3250,18 +3257,6 @@ static __genl_const struct genl_ops hwsi - }, - }; - --static struct genl_family hwsim_genl_family __ro_after_init = { -- .name = "MAC80211_HWSIM", -- .version = 1, -- .maxattr = HWSIM_ATTR_MAX, -- .netnsok = true, -- .module = THIS_MODULE, -- .ops = hwsim_ops, -- .n_ops = ARRAY_SIZE(hwsim_ops), -- .mcgrps = hwsim_mcgrps, -- .n_mcgrps = ARRAY_SIZE(hwsim_mcgrps), --}; -- - static void destroy_radio(struct work_struct *work) - { - struct mac80211_hwsim_data *data = -@@ -3309,13 +3304,15 @@ static struct notifier_block hwsim_netli - .notifier_call = mac80211_hwsim_netlink_notify, - }; - --static int __init hwsim_init_netlink(void) -+static int hwsim_init_netlink(void) - { - int rc; - - printk(KERN_INFO "mac80211_hwsim: initializing netlink\n"); - -- rc = genl_register_family(&hwsim_genl_family); -+ rc = genl_register_family_with_ops_groups(&hwsim_genl_family, -+ hwsim_ops, -+ hwsim_mcgrps); - if (rc) - goto failure; - diff --git a/package/kernel/mac80211/patches/008-fix-genl-family-id.patch b/package/kernel/mac80211/patches/008-fix-genl-family-id.patch new file mode 100644 index 0000000000..ee8fa6c2bc --- /dev/null +++ b/package/kernel/mac80211/patches/008-fix-genl-family-id.patch @@ -0,0 +1,10 @@ +--- a/compat/backport-4.12.c ++++ b/compat/backport-4.12.c +@@ -224,6 +224,7 @@ int bp_extack_genl_register_family(struc + } + + /* copy this since the family might access it directly */ ++ family->id = copy->family.id; + family->attrbuf = copy->family.attrbuf; + family->mcgrp_offset = copy->family.mcgrp_offset; + diff --git a/package/kernel/mac80211/patches/008-revert-ndo_stats64-cleanup.patch b/package/kernel/mac80211/patches/008-revert-ndo_stats64-cleanup.patch deleted file mode 100644 index 0f6f0f919f..0000000000 --- a/package/kernel/mac80211/patches/008-revert-ndo_stats64-cleanup.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/net/mac80211/iface.c -+++ b/net/mac80211/iface.c -@@ -1133,7 +1133,7 @@ static u16 ieee80211_netdev_select_queue - return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb); - } - --static void -+static struct rtnl_link_stats64 * - ieee80211_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) - { - int i; -@@ -1158,6 +1158,8 @@ ieee80211_get_stats64(struct net_device - stats->rx_bytes += rx_bytes; - stats->tx_bytes += tx_bytes; - } -+ -+ return stats; - } - - static const struct net_device_ops ieee80211_dataif_ops = { diff --git a/package/kernel/mac80211/patches/009-revert-mtu-changes.patch b/package/kernel/mac80211/patches/009-revert-mtu-changes.patch deleted file mode 100644 index f5e2757d3f..0000000000 --- a/package/kernel/mac80211/patches/009-revert-mtu-changes.patch +++ /dev/null @@ -1,338 +0,0 @@ ---- a/net/mac80211/iface.c -+++ b/net/mac80211/iface.c -@@ -151,6 +151,15 @@ void ieee80211_recalc_idle(struct ieee80 - ieee80211_hw_config(local, change); - } - -+static int ieee80211_change_mtu(struct net_device *dev, int new_mtu) -+{ -+ if (new_mtu < 256 || new_mtu > IEEE80211_MAX_DATA_LEN) -+ return -EINVAL; -+ -+ dev->mtu = new_mtu; -+ return 0; -+} -+ - static int ieee80211_verify_mac(struct ieee80211_sub_if_data *sdata, u8 *addr, - bool check_dup) - { -@@ -1168,6 +1177,7 @@ static const struct net_device_ops ieee8 - .ndo_uninit = ieee80211_uninit, - .ndo_start_xmit = ieee80211_subif_start_xmit, - .ndo_set_rx_mode = ieee80211_set_multicast_list, -+ .ndo_change_mtu = ieee80211_change_mtu, - .ndo_set_mac_address = ieee80211_change_mac, - .ndo_select_queue = ieee80211_netdev_select_queue, - .ndo_get_stats64 = ieee80211_get_stats64, -@@ -1211,6 +1221,7 @@ static const struct net_device_ops ieee8 - .ndo_uninit = ieee80211_uninit, - .ndo_start_xmit = ieee80211_monitor_start_xmit, - .ndo_set_rx_mode = ieee80211_set_multicast_list, -+ .ndo_change_mtu = ieee80211_change_mtu, - .ndo_set_mac_address = ieee80211_change_mac, - .ndo_select_queue = ieee80211_monitor_select_queue, - .ndo_get_stats64 = ieee80211_get_stats64, -@@ -1919,10 +1930,6 @@ int ieee80211_if_add(struct ieee80211_lo - - netdev_set_default_ethtool_ops(ndev, &ieee80211_ethtool_ops); - -- /* MTU range: 256 - 2304 */ -- ndev->min_mtu = 256; -- ndev->max_mtu = IEEE80211_MAX_DATA_LEN; -- - ret = register_netdevice(ndev); - if (ret) { - ieee80211_if_free(ndev); ---- a/drivers/net/wireless/ath/wil6210/netdev.c -+++ b/drivers/net/wireless/ath/wil6210/netdev.c -@@ -42,6 +42,21 @@ static int wil_stop(struct net_device *n - return wil_down(wil); - } - -+static int wil_change_mtu(struct net_device *ndev, int new_mtu) -+{ -+ struct wil6210_priv *wil = ndev_to_wil(ndev); -+ -+ if (new_mtu < 68 || new_mtu > mtu_max) { -+ wil_err(wil, "invalid MTU %d\n", new_mtu); -+ return -EINVAL; -+ } -+ -+ wil_dbg_misc(wil, "change MTU %d -> %d\n", ndev->mtu, new_mtu); -+ ndev->mtu = new_mtu; -+ -+ return 0; -+} -+ - static int wil_do_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd) - { - struct wil6210_priv *wil = ndev_to_wil(ndev); -@@ -55,6 +70,7 @@ static const struct net_device_ops wil_n - .ndo_start_xmit = wil_start_xmit, - .ndo_set_mac_address = eth_mac_addr, - .ndo_validate_addr = eth_validate_addr, -+ .ndo_change_mtu = wil_change_mtu, - .ndo_do_ioctl = wil_do_ioctl, - }; - -@@ -111,7 +127,6 @@ static int wil6210_netdev_poll_tx(struct - static void wil_dev_setup(struct net_device *dev) - { - ether_setup(dev); -- dev->max_mtu = mtu_max; - dev->tx_queue_len = WIL_TX_Q_LEN_DEFAULT; - } - ---- a/drivers/net/wireless/atmel/atmel.c -+++ b/drivers/net/wireless/atmel/atmel.c -@@ -1295,6 +1295,14 @@ static struct iw_statistics *atmel_get_w - return &priv->wstats; - } - -+static int atmel_change_mtu(struct net_device *dev, int new_mtu) -+{ -+ if ((new_mtu < 68) || (new_mtu > 2312)) -+ return -EINVAL; -+ dev->mtu = new_mtu; -+ return 0; -+} -+ - static int atmel_set_mac_address(struct net_device *dev, void *p) - { - struct sockaddr *addr = p; -@@ -1498,6 +1506,7 @@ static const struct file_operations atme - static const struct net_device_ops atmel_netdev_ops = { - .ndo_open = atmel_open, - .ndo_stop = atmel_close, -+ .ndo_change_mtu = atmel_change_mtu, - .ndo_set_mac_address = atmel_set_mac_address, - .ndo_start_xmit = start_tx, - .ndo_do_ioctl = atmel_ioctl, -@@ -1591,10 +1600,6 @@ struct net_device *init_atmel_card(unsig - dev->irq = irq; - dev->base_addr = port; - -- /* MTU range: 68 - 2312 */ -- dev->min_mtu = 68; -- dev->max_mtu = MAX_WIRELESS_BODY - ETH_FCS_LEN; -- - SET_NETDEV_DEV(dev, sys_dev); - - if ((rc = request_irq(dev->irq, service_interrupt, IRQF_SHARED, dev->name, dev))) { ---- a/drivers/net/wireless/cisco/airo.c -+++ b/drivers/net/wireless/cisco/airo.c -@@ -2329,6 +2329,14 @@ static int airo_set_mac_address(struct n - return 0; - } - -+static int airo_change_mtu(struct net_device *dev, int new_mtu) -+{ -+ if ((new_mtu < 68) || (new_mtu > 2400)) -+ return -EINVAL; -+ dev->mtu = new_mtu; -+ return 0; -+} -+ - static LIST_HEAD(airo_devices); - - static void add_airo_dev(struct airo_info *ai) -@@ -2648,6 +2656,7 @@ static const struct net_device_ops airo1 - .ndo_get_stats = airo_get_stats, - .ndo_set_mac_address = airo_set_mac_address, - .ndo_do_ioctl = airo_ioctl, -+ .ndo_change_mtu = airo_change_mtu, - }; - - static void wifi_setup(struct net_device *dev) -@@ -2659,8 +2668,6 @@ static void wifi_setup(struct net_device - dev->type = ARPHRD_IEEE80211; - dev->hard_header_len = ETH_HLEN; - dev->mtu = AIRO_DEF_MTU; -- dev->min_mtu = 68; -- dev->max_mtu = MIC_MSGLEN_MAX; - dev->addr_len = ETH_ALEN; - dev->tx_queue_len = 100; - -@@ -2747,6 +2754,7 @@ static const struct net_device_ops airo_ - .ndo_set_rx_mode = airo_set_multicast_list, - .ndo_set_mac_address = airo_set_mac_address, - .ndo_do_ioctl = airo_ioctl, -+ .ndo_change_mtu = airo_change_mtu, - .ndo_validate_addr = eth_validate_addr, - }; - -@@ -2758,6 +2766,7 @@ static const struct net_device_ops mpi_n - .ndo_set_rx_mode = airo_set_multicast_list, - .ndo_set_mac_address = airo_set_mac_address, - .ndo_do_ioctl = airo_ioctl, -+ .ndo_change_mtu = airo_change_mtu, - .ndo_validate_addr = eth_validate_addr, - }; - -@@ -2813,7 +2822,6 @@ static struct net_device *_init_airo_car - dev->irq = irq; - dev->base_addr = port; - dev->priv_flags &= ~IFF_TX_SKB_SHARING; -- dev->max_mtu = MIC_MSGLEN_MAX; - - SET_NETDEV_DEV(dev, dmdev); - ---- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c -+++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c -@@ -6039,6 +6039,7 @@ static const struct net_device_ops ipw21 - .ndo_open = ipw2100_open, - .ndo_stop = ipw2100_close, - .ndo_start_xmit = libipw_xmit, -+ .ndo_change_mtu = libipw_change_mtu, - .ndo_tx_timeout = ipw2100_tx_timeout, - .ndo_set_mac_address = ipw2100_set_address, - .ndo_validate_addr = eth_validate_addr, -@@ -6074,8 +6075,6 @@ static struct net_device *ipw2100_alloc_ - dev->wireless_data = &priv->wireless_data; - dev->watchdog_timeo = 3 * HZ; - dev->irq = 0; -- dev->min_mtu = 68; -- dev->max_mtu = LIBIPW_DATA_LEN; - - /* NOTE: We don't use the wireless_handlers hook - * in dev as the system will start throwing WX requests ---- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c -+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c -@@ -11561,6 +11561,7 @@ static const struct net_device_ops ipw_p - .ndo_open = ipw_prom_open, - .ndo_stop = ipw_prom_stop, - .ndo_start_xmit = ipw_prom_hard_start_xmit, -+ .ndo_change_mtu = libipw_change_mtu, - .ndo_set_mac_address = eth_mac_addr, - .ndo_validate_addr = eth_validate_addr, - }; -@@ -11586,9 +11587,6 @@ static int ipw_prom_alloc(struct ipw_pri - priv->prom_net_dev->type = ARPHRD_IEEE80211_RADIOTAP; - priv->prom_net_dev->netdev_ops = &ipw_prom_netdev_ops; - -- priv->prom_net_dev->min_mtu = 68; -- priv->prom_net_dev->max_mtu = LIBIPW_DATA_LEN; -- - priv->prom_priv->ieee->iw_mode = IW_MODE_MONITOR; - SET_NETDEV_DEV(priv->prom_net_dev, &priv->pci_dev->dev); - -@@ -11621,6 +11619,7 @@ static const struct net_device_ops ipw_n - .ndo_set_rx_mode = ipw_net_set_multicast_list, - .ndo_set_mac_address = ipw_net_set_mac_address, - .ndo_start_xmit = libipw_xmit, -+ .ndo_change_mtu = libipw_change_mtu, - .ndo_validate_addr = eth_validate_addr, - }; - -@@ -11730,9 +11729,6 @@ static int ipw_pci_probe(struct pci_dev - net_dev->wireless_handlers = &ipw_wx_handler_def; - net_dev->ethtool_ops = &ipw_ethtool_ops; - -- net_dev->min_mtu = 68; -- net_dev->max_mtu = LIBIPW_DATA_LEN; -- - err = sysfs_create_group(&pdev->dev.kobj, &ipw_attribute_group); - if (err) { - IPW_ERROR("failed to create sysfs device attributes\n"); ---- a/drivers/net/wireless/intel/ipw2x00/libipw.h -+++ b/drivers/net/wireless/intel/ipw2x00/libipw.h -@@ -948,6 +948,7 @@ static inline int libipw_is_cck_rate(u8 - /* libipw.c */ - void free_libipw(struct net_device *dev, int monitor); - struct net_device *alloc_libipw(int sizeof_priv, int monitor); -+int libipw_change_mtu(struct net_device *dev, int new_mtu); - - void libipw_networks_age(struct libipw_device *ieee, unsigned long age_secs); - ---- a/drivers/net/wireless/intel/ipw2x00/libipw_module.c -+++ b/drivers/net/wireless/intel/ipw2x00/libipw_module.c -@@ -118,6 +118,15 @@ static void libipw_networks_initialize(s - &ieee->network_free_list); - } - -+int libipw_change_mtu(struct net_device *dev, int new_mtu) -+{ -+ if ((new_mtu < 68) || (new_mtu > LIBIPW_DATA_LEN)) -+ return -EINVAL; -+ dev->mtu = new_mtu; -+ return 0; -+} -+EXPORT_SYMBOL(libipw_change_mtu); -+ - struct net_device *alloc_libipw(int sizeof_priv, int monitor) - { - struct libipw_device *ieee; ---- a/drivers/net/wireless/intersil/hostap/hostap_main.c -+++ b/drivers/net/wireless/intersil/hostap/hostap_main.c -@@ -765,6 +765,16 @@ static void hostap_set_multicast_list(st - } - - -+static int prism2_change_mtu(struct net_device *dev, int new_mtu) -+{ -+ if (new_mtu < PRISM2_MIN_MTU || new_mtu > PRISM2_MAX_MTU) -+ return -EINVAL; -+ -+ dev->mtu = new_mtu; -+ return 0; -+} -+ -+ - static void prism2_tx_timeout(struct net_device *dev) - { - struct hostap_interface *iface; -@@ -803,6 +813,7 @@ static const struct net_device_ops hosta - .ndo_do_ioctl = hostap_ioctl, - .ndo_set_mac_address = prism2_set_mac_address, - .ndo_set_rx_mode = hostap_set_multicast_list, -+ .ndo_change_mtu = prism2_change_mtu, - .ndo_tx_timeout = prism2_tx_timeout, - .ndo_validate_addr = eth_validate_addr, - }; -@@ -815,6 +826,7 @@ static const struct net_device_ops hosta - .ndo_do_ioctl = hostap_ioctl, - .ndo_set_mac_address = prism2_set_mac_address, - .ndo_set_rx_mode = hostap_set_multicast_list, -+ .ndo_change_mtu = prism2_change_mtu, - .ndo_tx_timeout = prism2_tx_timeout, - .ndo_validate_addr = eth_validate_addr, - }; -@@ -827,6 +839,7 @@ static const struct net_device_ops hosta - .ndo_do_ioctl = hostap_ioctl, - .ndo_set_mac_address = prism2_set_mac_address, - .ndo_set_rx_mode = hostap_set_multicast_list, -+ .ndo_change_mtu = prism2_change_mtu, - .ndo_tx_timeout = prism2_tx_timeout, - .ndo_validate_addr = eth_validate_addr, - }; -@@ -838,8 +851,6 @@ void hostap_setup_dev(struct net_device - - iface = netdev_priv(dev); - ether_setup(dev); -- dev->min_mtu = PRISM2_MIN_MTU; -- dev->max_mtu = PRISM2_MAX_MTU; - dev->priv_flags &= ~IFF_TX_SKB_SHARING; - - /* kernel callbacks */ ---- a/drivers/net/wireless/intersil/orinoco/main.c -+++ b/drivers/net/wireless/intersil/orinoco/main.c -@@ -322,6 +322,9 @@ int orinoco_change_mtu(struct net_device - { - struct orinoco_private *priv = ndev_priv(dev); - -+ if ((new_mtu < ORINOCO_MIN_MTU) || (new_mtu > ORINOCO_MAX_MTU)) -+ return -EINVAL; -+ - /* MTU + encapsulation + header length */ - if ((new_mtu + ENCAPS_OVERHEAD + sizeof(struct ieee80211_hdr)) > - (priv->nicbuf_size - ETH_HLEN)) -@@ -2285,9 +2288,6 @@ int orinoco_if_add(struct orinoco_privat - dev->base_addr = base_addr; - dev->irq = irq; - -- dev->min_mtu = ORINOCO_MIN_MTU; -- dev->max_mtu = ORINOCO_MAX_MTU; -- - SET_NETDEV_DEV(dev, priv->dev); - ret = register_netdev(dev); - if (ret) diff --git a/package/kernel/mac80211/patches/010-disable_rfkill.patch b/package/kernel/mac80211/patches/010-disable_rfkill.patch index 2902e498d8..d5253063ce 100644 --- a/package/kernel/mac80211/patches/010-disable_rfkill.patch +++ b/package/kernel/mac80211/patches/010-disable_rfkill.patch @@ -10,6 +10,6 @@ +#undef CONFIG_RFKILL_MODULE +#undef CONFIG_RFKILL_FULL_MODULE + - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) + #if LINUX_VERSION_IS_GEQ(3,10,0) #include_next #else diff --git a/package/kernel/mac80211/patches/011-backport_strscpy.patch b/package/kernel/mac80211/patches/011-backport_strscpy.patch deleted file mode 100644 index c8e26c46f2..0000000000 --- a/package/kernel/mac80211/patches/011-backport_strscpy.patch +++ /dev/null @@ -1,43 +0,0 @@ ---- a/backport-include/linux/string.h -+++ b/backport-include/linux/string.h -@@ -25,4 +25,8 @@ extern void *memdup_user_nul(const void - void memzero_explicit(void *s, size_t count); - #endif - -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,3,0)) -+ssize_t strscpy(char *dest, const char *src, size_t count); -+#endif -+ - #endif /* __BACKPORT_LINUX_STRING_H */ ---- a/compat/backport-4.3.c -+++ b/compat/backport-4.3.c -@@ -57,3 +57,29 @@ void seq_hex_dump(struct seq_file *m, co - } - } - EXPORT_SYMBOL_GPL(seq_hex_dump); -+ -+ssize_t strscpy(char *dest, const char *src, size_t count) -+{ -+ long res = 0; -+ -+ if (count == 0) -+ return -E2BIG; -+ -+ while (count) { -+ char c; -+ -+ c = src[res]; -+ dest[res] = c; -+ if (!c) -+ return res; -+ res++; -+ count--; -+ } -+ -+ /* Hit buffer length without finding a NUL; force NUL-termination. */ -+ if (res) -+ dest[res-1] = '\0'; -+ -+ return -E2BIG; -+} -+EXPORT_SYMBOL_GPL(strscpy); diff --git a/package/kernel/mac80211/patches/012-kernel_build_check.patch b/package/kernel/mac80211/patches/012-kernel_build_check.patch new file mode 100644 index 0000000000..d225ba1820 --- /dev/null +++ b/package/kernel/mac80211/patches/012-kernel_build_check.patch @@ -0,0 +1,11 @@ +--- a/Makefile ++++ b/Makefile +@@ -2,7 +2,7 @@ + # Makefile for the output source package + # + +-ifeq ($(KERNELRELEASE),) ++ifeq ($(KERNELVERSION),) + + MAKEFLAGS += --no-print-directory + SHELL := /usr/bin/env bash diff --git a/package/kernel/mac80211/patches/015-ipw200-mtu.patch b/package/kernel/mac80211/patches/015-ipw200-mtu.patch new file mode 100644 index 0000000000..8d273a095b --- /dev/null +++ b/package/kernel/mac80211/patches/015-ipw200-mtu.patch @@ -0,0 +1,34 @@ +--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c ++++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c +@@ -11506,6 +11506,15 @@ static const struct attribute_group ipw_ + .attrs = ipw_sysfs_entries, + }; + ++#if LINUX_VERSION_IS_LESS(4,10,0) ++static int __change_mtu(struct net_device *ndev, int new_mtu){ ++ if (new_mtu < 68 || new_mtu > LIBIPW_DATA_LEN) ++ return -EINVAL; ++ ndev->mtu = new_mtu; ++ return 0; ++} ++#endif ++ + #ifdef CPTCFG_IPW2200_PROMISCUOUS + static int ipw_prom_open(struct net_device *dev) + { +@@ -11554,15 +11563,6 @@ static netdev_tx_t ipw_prom_hard_start_x + return NETDEV_TX_OK; + } + +-#if LINUX_VERSION_IS_LESS(4,10,0) +-static int __change_mtu(struct net_device *ndev, int new_mtu){ +- if (new_mtu < 68 || new_mtu > LIBIPW_DATA_LEN) +- return -EINVAL; +- ndev->mtu = new_mtu; +- return 0; +-} +-#endif +- + static const struct net_device_ops ipw_prom_netdev_ops = { + #if LINUX_VERSION_IS_LESS(4,10,0) + .ndo_change_mtu = __change_mtu, diff --git a/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch b/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch deleted file mode 100644 index 7e829faef6..0000000000 --- a/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 6232c17438ed01f43665197db5a98a4a4f77ef47 Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Thu, 2 Feb 2017 10:57:40 +0100 -Subject: [PATCH 01/19] rt2x00: avoid introducing a USB dependency in the - rt2x00lib module - -As reported by Felix: - -Though protected by an ifdef, introducing an usb symbol dependency in -the rt2x00lib module is a major inconvenience for distributions that -package kernel modules split into individual packages. - -Get rid of this unnecessary dependency by calling the usb related -function from a more suitable place. - -Cc: Vishal Thanki -Reported-by: Felix Fietkau -Fixes: 8b4c0009313f ("rt2x00usb: Use usb anchor to manage URB") -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 23 ++++++++--------------- - drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 5 +++++ - 2 files changed, 13 insertions(+), 15 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -index 8fcbc8dc94c1..4b08007f93f7 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -1436,21 +1436,6 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev) - cancel_work_sync(&rt2x00dev->intf_work); - cancel_delayed_work_sync(&rt2x00dev->autowakeup_work); - cancel_work_sync(&rt2x00dev->sleep_work); --#if IS_ENABLED(CPTCFG_RT2X00_LIB_USB) -- if (rt2x00_is_usb(rt2x00dev)) { -- usb_kill_anchored_urbs(rt2x00dev->anchor); -- hrtimer_cancel(&rt2x00dev->txstatus_timer); -- cancel_work_sync(&rt2x00dev->rxdone_work); -- cancel_work_sync(&rt2x00dev->txdone_work); -- } --#endif -- if (rt2x00dev->workqueue) -- destroy_workqueue(rt2x00dev->workqueue); -- -- /* -- * Free the tx status fifo. -- */ -- kfifo_free(&rt2x00dev->txstatus_fifo); - - /* - * Kill the tx status tasklet. -@@ -1466,6 +1451,14 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev) - */ - rt2x00lib_uninitialize(rt2x00dev); - -+ if (rt2x00dev->workqueue) -+ destroy_workqueue(rt2x00dev->workqueue); -+ -+ /* -+ * Free the tx status fifo. -+ */ -+ kfifo_free(&rt2x00dev->txstatus_fifo); -+ - /* - * Free extra components - */ -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c -index 838ca58d2dd6..5a2bf9f63cd7 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c -@@ -744,6 +744,11 @@ void rt2x00usb_uninitialize(struct rt2x00_dev *rt2x00dev) - { - struct data_queue *queue; - -+ usb_kill_anchored_urbs(rt2x00dev->anchor); -+ hrtimer_cancel(&rt2x00dev->txstatus_timer); -+ cancel_work_sync(&rt2x00dev->rxdone_work); -+ cancel_work_sync(&rt2x00dev->txdone_work); -+ - queue_for_each(rt2x00dev, queue) - rt2x00usb_free_entries(queue); - } --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch b/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch deleted file mode 100644 index 6510b55c79..0000000000 --- a/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 93c7018ec16bb83399dd4db61c361a6d6aba0d5a Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 8 Feb 2017 12:18:09 +0100 -Subject: [PATCH 02/19] rt2x00usb: do not anchor rx and tx urb's - -We might kill TX or RX urb during rt2x00usb_flush_entry(), what can -cause anchor list corruption like shown below: - -[ 2074.035633] WARNING: CPU: 2 PID: 14480 at lib/list_debug.c:33 __list_add+0xac/0xc0 -[ 2074.035634] list_add corruption. prev->next should be next (ffff88020f362c28), but was dead000000000100. (prev=ffff8801d161bb70). - -[ 2074.035670] Call Trace: -[ 2074.035672] [] dump_stack+0x63/0x8c -[ 2074.035674] [] __warn+0xd1/0xf0 -[ 2074.035676] [] warn_slowpath_fmt+0x5f/0x80 -[ 2074.035678] [] ? rt2x00usb_register_write_lock+0x3d/0x60 [rt2800usb] -[ 2074.035679] [] __list_add+0xac/0xc0 -[ 2074.035681] [] usb_anchor_urb+0x4c/0xa0 -[ 2074.035683] [] rt2x00usb_kick_rx_entry+0xaf/0x100 [rt2x00usb] -[ 2074.035684] [] rt2x00usb_clear_entry+0x22/0x30 [rt2x00usb] - -To fix do not anchor TX and RX urb's, it is not needed as during -shutdown we kill those urbs in rt2x00usb_free_entries(). - -Cc: Vishal Thanki -Fixes: 8b4c0009313f ("rt2x00usb: Use usb anchor to manage URB") -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c -index 5a2bf9f63cd7..fe13dd07cc2a 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c -@@ -319,10 +319,8 @@ static bool rt2x00usb_kick_tx_entry(struct queue_entry *entry, void *data) - entry->skb->data, length, - rt2x00usb_interrupt_txdone, entry); - -- usb_anchor_urb(entry_priv->urb, rt2x00dev->anchor); - status = usb_submit_urb(entry_priv->urb, GFP_ATOMIC); - if (status) { -- usb_unanchor_urb(entry_priv->urb); - if (status == -ENODEV) - clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); - set_bit(ENTRY_DATA_IO_FAILED, &entry->flags); -@@ -410,10 +408,8 @@ static bool rt2x00usb_kick_rx_entry(struct queue_entry *entry, void *data) - entry->skb->data, entry->skb->len, - rt2x00usb_interrupt_rxdone, entry); - -- usb_anchor_urb(entry_priv->urb, rt2x00dev->anchor); - status = usb_submit_urb(entry_priv->urb, GFP_ATOMIC); - if (status) { -- usb_unanchor_urb(entry_priv->urb); - if (status == -ENODEV) - clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); - set_bit(ENTRY_DATA_IO_FAILED, &entry->flags); --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch b/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch deleted file mode 100644 index 78d8ac63d8..0000000000 --- a/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 0488a6121dfe6cbd44de15ea3627913b7549a1e9 Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 8 Feb 2017 12:18:10 +0100 -Subject: [PATCH 03/19] rt2x00usb: fix anchor initialization - -If device fail to initialize we can OOPS in rt2x00lib_remove_dev(), due -to using uninitialized usb_anchor structure: - -[ 855.435820] ieee80211 phy3: rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x1000 with error -19 -[ 855.435826] ieee80211 phy3: rt2800_probe_rt: Error - Invalid RT chipset 0x0000, rev 0000 detected -[ 855.435829] ieee80211 phy3: rt2x00lib_probe_dev: Error - Failed to allocate device -[ 855.435845] BUG: unable to handle kernel NULL pointer dereference at 0000000000000028 -[ 855.435900] IP: _raw_spin_lock_irq+0xd/0x30 -[ 855.435926] PGD 0 -[ 855.435953] Oops: 0002 [#1] SMP - -[ 855.437011] Call Trace: -[ 855.437029] ? usb_kill_anchored_urbs+0x27/0xc0 -[ 855.437061] rt2x00lib_remove_dev+0x190/0x1c0 [rt2x00lib] -[ 855.437097] rt2x00lib_probe_dev+0x246/0x7a0 [rt2x00lib] -[ 855.437149] ? ieee80211_roc_setup+0x9e/0xd0 [mac80211] -[ 855.437183] ? __kmalloc+0x1af/0x1f0 -[ 855.437207] ? rt2x00usb_probe+0x13d/0xc50 [rt2x00usb] -[ 855.437240] rt2x00usb_probe+0x155/0xc50 [rt2x00usb] -[ 855.437273] rt2800usb_probe+0x15/0x20 [rt2800usb] -[ 855.437304] usb_probe_interface+0x159/0x2d0 -[ 855.437333] driver_probe_device+0x2bb/0x460 - -Patch changes initialization sequence to fix the problem. - -Cc: Vishal Thanki -Fixes: 8b4c0009313f ("rt2x00usb: Use usb anchor to manage URB") -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c -index fe13dd07cc2a..c696f0ad6a68 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c -@@ -825,10 +825,6 @@ int rt2x00usb_probe(struct usb_interface *usb_intf, - if (retval) - goto exit_free_device; - -- retval = rt2x00lib_probe_dev(rt2x00dev); -- if (retval) -- goto exit_free_reg; -- - rt2x00dev->anchor = devm_kmalloc(&usb_dev->dev, - sizeof(struct usb_anchor), - GFP_KERNEL); -@@ -836,10 +832,17 @@ int rt2x00usb_probe(struct usb_interface *usb_intf, - retval = -ENOMEM; - goto exit_free_reg; - } -- - init_usb_anchor(rt2x00dev->anchor); -+ -+ retval = rt2x00lib_probe_dev(rt2x00dev); -+ if (retval) -+ goto exit_free_anchor; -+ - return 0; - -+exit_free_anchor: -+ usb_kill_anchored_urbs(rt2x00dev->anchor); -+ - exit_free_reg: - rt2x00usb_free_reg(rt2x00dev); - --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch b/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch deleted file mode 100644 index d8f262af85..0000000000 --- a/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 80a97eae304631f57ff8560f87c0b18b95321443 Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 8 Feb 2017 13:51:29 +0100 -Subject: [PATCH 04/19] rt61pci: use entry directly - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt61pci.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c -index 5306a3b2622d..8adb5f3abe15 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c -@@ -1903,8 +1903,7 @@ static void rt61pci_write_tx_desc(struct queue_entry *entry, - - rt2x00_desc_read(txd, 5, &word); - rt2x00_set_field32(&word, TXD_W5_PID_TYPE, entry->queue->qid); -- rt2x00_set_field32(&word, TXD_W5_PID_SUBTYPE, -- skbdesc->entry->entry_idx); -+ rt2x00_set_field32(&word, TXD_W5_PID_SUBTYPE, entry->entry_idx); - rt2x00_set_field32(&word, TXD_W5_TX_POWER, - TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power)); - rt2x00_set_field32(&word, TXD_W5_WAITING_DMA_DONE_INT, 1); --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch b/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch deleted file mode 100644 index 04a5118103..0000000000 --- a/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch +++ /dev/null @@ -1,181 +0,0 @@ -From 2ceb813798e1fd33e71a574771828c0f298e077b Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 8 Feb 2017 13:51:30 +0100 -Subject: [PATCH 05/19] rt2x00: call entry directly in rt2x00_dump_frame - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2400pci.c | 2 +- - drivers/net/wireless/ralink/rt2x00/rt2500pci.c | 2 +- - drivers/net/wireless/ralink/rt2x00/rt2500usb.c | 2 +- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 +- - drivers/net/wireless/ralink/rt2x00/rt2x00.h | 4 ++-- - drivers/net/wireless/ralink/rt2x00/rt2x00debug.c | 7 ++++--- - drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 4 ++-- - drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 2 +- - drivers/net/wireless/ralink/rt2x00/rt61pci.c | 2 +- - drivers/net/wireless/ralink/rt2x00/rt73usb.c | 2 +- - 10 files changed, 15 insertions(+), 14 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c -index 085c5b423bdf..19874439ac40 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c -@@ -1200,7 +1200,7 @@ static void rt2400pci_write_beacon(struct queue_entry *entry, - /* - * Dump beacon to userspace through debugfs. - */ -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry); - out: - /* - * Enable beaconing again. -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c -index 9832fd50c793..791434de8052 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c -@@ -1349,7 +1349,7 @@ static void rt2500pci_write_beacon(struct queue_entry *entry, - /* - * Dump beacon to userspace through debugfs. - */ -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry); - out: - /* - * Enable beaconing again. -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c -index cd3ab5a9e98d..62357465fe29 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c -@@ -1170,7 +1170,7 @@ static void rt2500usb_write_beacon(struct queue_entry *entry, - /* - * Dump beacon to userspace through debugfs. - */ -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry); - - /* - * USB devices cannot blindly pass the skb->len as the -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 572cdea4ca25..8223a1520316 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -1014,7 +1014,7 @@ void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc) - /* - * Dump beacon to userspace through debugfs. - */ -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry); - - /* - * Write entire beacon with TXWI and padding to register. -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -index ea299c4e7ada..26869b3bef45 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -@@ -1400,11 +1400,11 @@ void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop); - */ - #ifdef CPTCFG_RT2X00_LIB_DEBUGFS - void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev, -- enum rt2x00_dump_type type, struct sk_buff *skb); -+ enum rt2x00_dump_type type, struct queue_entry *entry); - #else - static inline void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev, - enum rt2x00_dump_type type, -- struct sk_buff *skb) -+ struct queue_entry *entry) - { - } - #endif /* CPTCFG_RT2X00_LIB_DEBUGFS */ -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c -index 72ae530e4a3b..964aefdc11f0 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c -@@ -157,9 +157,10 @@ void rt2x00debug_update_crypto(struct rt2x00_dev *rt2x00dev, - } - - void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev, -- enum rt2x00_dump_type type, struct sk_buff *skb) -+ enum rt2x00_dump_type type, struct queue_entry *entry) - { - struct rt2x00debug_intf *intf = rt2x00dev->debugfs_intf; -+ struct sk_buff *skb = entry->skb; - struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); - struct sk_buff *skbcopy; - struct rt2x00dump_hdr *dump_hdr; -@@ -196,8 +197,8 @@ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev, - dump_hdr->chip_rf = cpu_to_le16(rt2x00dev->chip.rf); - dump_hdr->chip_rev = cpu_to_le16(rt2x00dev->chip.rev); - dump_hdr->type = cpu_to_le16(type); -- dump_hdr->queue_index = skbdesc->entry->queue->qid; -- dump_hdr->entry_index = skbdesc->entry->entry_idx; -+ dump_hdr->queue_index = entry->queue->qid; -+ dump_hdr->entry_index = entry->entry_idx; - dump_hdr->timestamp_sec = cpu_to_le32(timestamp.tv_sec); - dump_hdr->timestamp_usec = cpu_to_le32(timestamp.tv_usec); - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -index 4b08007f93f7..dd6678109b7e 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -363,7 +363,7 @@ void rt2x00lib_txdone(struct queue_entry *entry, - * Send frame to debugfs immediately, after this call is completed - * we are going to overwrite the skb->cb array. - */ -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry->skb); -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry); - - /* - * Determine if the frame has been successfully transmitted and -@@ -772,7 +772,7 @@ void rt2x00lib_rxdone(struct queue_entry *entry, gfp_t gfp) - */ - rt2x00link_update_stats(rt2x00dev, entry->skb, &rxdesc); - rt2x00debug_update_crypto(rt2x00dev, &rxdesc); -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_RXDONE, entry->skb); -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_RXDONE, entry); - - /* - * Initialize RX status information, and send frame -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c -index b2364d378774..380daf4e1b8d 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c -@@ -544,7 +544,7 @@ static void rt2x00queue_write_tx_descriptor(struct queue_entry *entry, - * All processing on the frame has been completed, this means - * it is now ready to be dumped to userspace through debugfs. - */ -- rt2x00debug_dump_frame(queue->rt2x00dev, DUMP_FRAME_TX, entry->skb); -+ rt2x00debug_dump_frame(queue->rt2x00dev, DUMP_FRAME_TX, entry); - } - - static void rt2x00queue_kick_tx_queue(struct data_queue *queue, -diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c -index 8adb5f3abe15..973d418b8113 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c -@@ -1988,7 +1988,7 @@ static void rt61pci_write_beacon(struct queue_entry *entry, - /* - * Dump beacon to userspace through debugfs. - */ -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry); - - /* - * Write entire beacon with descriptor and padding to register. -diff --git a/drivers/net/wireless/ralink/rt2x00/rt73usb.c b/drivers/net/wireless/ralink/rt2x00/rt73usb.c -index 1a29c4d205a5..bb8d307a789f 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt73usb.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt73usb.c -@@ -1557,7 +1557,7 @@ static void rt73usb_write_beacon(struct queue_entry *entry, - /* - * Dump beacon to userspace through debugfs. - */ -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb); -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry); - - /* - * Write entire beacon with descriptor and padding to register. --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch b/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch deleted file mode 100644 index d8194acd23..0000000000 --- a/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch +++ /dev/null @@ -1,59 +0,0 @@ -From cf81db30a6edcca791b1bfa5348a162471121d11 Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 8 Feb 2017 13:51:31 +0100 -Subject: [PATCH 06/19] rt2x00: remove queue_entry from skbdesc - -queue_entry field of skbdesc is not read any more, remove it to allow -skbdesc contain other data. - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 3 --- - drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 2 -- - 2 files changed, 5 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c -index 380daf4e1b8d..e1660b92b20c 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c -@@ -83,7 +83,6 @@ struct sk_buff *rt2x00queue_alloc_rxskb(struct queue_entry *entry, gfp_t gfp) - */ - skbdesc = get_skb_frame_desc(skb); - memset(skbdesc, 0, sizeof(*skbdesc)); -- skbdesc->entry = entry; - - if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA)) { - dma_addr_t skb_dma; -@@ -689,7 +688,6 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb, - goto out; - } - -- skbdesc->entry = entry; - entry->skb = skb; - - /* -@@ -774,7 +772,6 @@ int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev, - */ - skbdesc = get_skb_frame_desc(intf->beacon->skb); - memset(skbdesc, 0, sizeof(*skbdesc)); -- skbdesc->entry = intf->beacon; - - /* - * Send beacon to hardware. -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h -index 2233b911a1d7..22d18818e850 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h -@@ -116,8 +116,6 @@ struct skb_frame_desc { - __le32 iv[2]; - - dma_addr_t skb_dma; -- -- struct queue_entry *entry; - }; - - /** --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch b/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch deleted file mode 100644 index a82886d234..0000000000 --- a/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 7272416609126e8910b7f0d0e3dba008aa87830c Mon Sep 17 00:00:00 2001 -From: Arnd Bergmann -Date: Tue, 14 Feb 2017 22:28:33 +0100 -Subject: [PATCH 07/19] rt2500usb: don't mark register accesses as inline - -When CONFIG_KASAN is set, we get a rather large stack here: - -drivers/net/wireless/ralink/rt2x00/rt2500usb.c: In function 'rt2500usb_set_device_state': -drivers/net/wireless/ralink/rt2x00/rt2500usb.c:1074:1: error: the frame size of 3032 bytes is larger than 100 bytes [-Werror=frame-larger-than=] - -If we don't force those functions to be inline, the compiler can figure this -out better itself and not inline the functions when doing so would be harmful, -reducing the stack size to a merge 256 bytes. - -Note that there is another problem that manifests in this driver, as a result -of the typecheck() macro causing even larger stack frames. - -Signed-off-by: Arnd Bergmann -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2500usb.c | 19 +++++-------------- - 1 file changed, 5 insertions(+), 14 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c -index 62357465fe29..0d2670a56c4c 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c -@@ -55,7 +55,7 @@ MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption."); - * If the csr_mutex is already held then the _lock variants must - * be used instead. - */ --static inline void rt2500usb_register_read(struct rt2x00_dev *rt2x00dev, -+static void rt2500usb_register_read(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, - u16 *value) - { -@@ -66,7 +66,7 @@ static inline void rt2500usb_register_read(struct rt2x00_dev *rt2x00dev, - *value = le16_to_cpu(reg); - } - --static inline void rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev, -+static void rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, - u16 *value) - { -@@ -77,16 +77,7 @@ static inline void rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev, - *value = le16_to_cpu(reg); - } - --static inline void rt2500usb_register_multiread(struct rt2x00_dev *rt2x00dev, -- const unsigned int offset, -- void *value, const u16 length) --{ -- rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_READ, -- USB_VENDOR_REQUEST_IN, offset, -- value, length); --} -- --static inline void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev, -+static void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, - u16 value) - { -@@ -96,7 +87,7 @@ static inline void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev, - ®, sizeof(reg)); - } - --static inline void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev, -+static void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, - u16 value) - { -@@ -106,7 +97,7 @@ static inline void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev, - ®, sizeof(reg), REGISTER_TIMEOUT); - } - --static inline void rt2500usb_register_multiwrite(struct rt2x00_dev *rt2x00dev, -+static void rt2500usb_register_multiwrite(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, - void *value, const u16 length) - { --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch b/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch deleted file mode 100644 index c2fa92641a..0000000000 --- a/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 96609f366c6f792421e1939c5c834abbe24eb88a Mon Sep 17 00:00:00 2001 -From: Gabor Juhos -Date: Wed, 15 Feb 2017 10:25:04 +0100 -Subject: [PATCH 08/19] rt2x00: rt2800lib: move rt2800_drv_data declaration - into rt2800lib.h - -The rt2800_drv_data structure contains driver specific -information. Move the declaration into the rt2800lib.h -header which is a more logical place for it. Also fix -the comment style to avoid checkpatch warning. - -The patch contains no functional changes, it is in -preparation for the next patch. - -Signed-off-by: Gabor Juhos -Signed-off-by: Daniel Golle -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2800.h | 25 ------------------------- - drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 23 +++++++++++++++++++++++ - 2 files changed, 23 insertions(+), 25 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h -index 256496bfbafb..0e7051d8132f 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h -@@ -2987,29 +2987,4 @@ enum rt2800_eeprom_word { - */ - #define BCN_TBTT_OFFSET 64 - --/* -- * Hardware has 255 WCID table entries. First 32 entries are reserved for -- * shared keys. Since parts of the pairwise key table might be shared with -- * the beacon frame buffers 6 & 7 we could only use the first 222 entries. -- */ --#define WCID_START 33 --#define WCID_END 222 --#define STA_IDS_SIZE (WCID_END - WCID_START + 2) -- --/* -- * RT2800 driver data structure -- */ --struct rt2800_drv_data { -- u8 calibration_bw20; -- u8 calibration_bw40; -- u8 bbp25; -- u8 bbp26; -- u8 txmixer_gain_24g; -- u8 txmixer_gain_5g; -- u8 max_psdu; -- unsigned int tbtt_tick; -- unsigned int ampdu_factor_cnt[4]; -- DECLARE_BITMAP(sta_ids, STA_IDS_SIZE); --}; -- - #endif /* RT2800_H */ -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -index 0a8b4df665fe..8e1ae138c3f1 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -@@ -20,6 +20,29 @@ - #ifndef RT2800LIB_H - #define RT2800LIB_H - -+/* -+ * Hardware has 255 WCID table entries. First 32 entries are reserved for -+ * shared keys. Since parts of the pairwise key table might be shared with -+ * the beacon frame buffers 6 & 7 we could only use the first 222 entries. -+ */ -+#define WCID_START 33 -+#define WCID_END 222 -+#define STA_IDS_SIZE (WCID_END - WCID_START + 2) -+ -+/* RT2800 driver data structure */ -+struct rt2800_drv_data { -+ u8 calibration_bw20; -+ u8 calibration_bw40; -+ u8 bbp25; -+ u8 bbp26; -+ u8 txmixer_gain_24g; -+ u8 txmixer_gain_5g; -+ u8 max_psdu; -+ unsigned int tbtt_tick; -+ unsigned int ampdu_factor_cnt[4]; -+ DECLARE_BITMAP(sta_ids, STA_IDS_SIZE); -+}; -+ - struct rt2800_ops { - void (*register_read)(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, u32 *value); --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch b/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch deleted file mode 100644 index e6c829cbf8..0000000000 --- a/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch +++ /dev/null @@ -1,94 +0,0 @@ -From a13d985f26f6df07d5c5c0e190477628e236babc Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 15 Feb 2017 10:25:05 +0100 -Subject: [PATCH 09/19] rt2800: identify station based on status WCID - -Add framework to identify sta based on tx status WCID. This is currently -not used, will start be utilized in the future patch. - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 +++++ - drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 1 + - drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 3 ++- - 3 files changed, 8 insertions(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 8223a1520316..46405cce35e0 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -855,11 +855,13 @@ EXPORT_SYMBOL_GPL(rt2800_process_rxwi); - void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi) - { - struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; -+ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; - struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); - struct txdone_entry_desc txdesc; - u32 word; - u16 mcs, real_mcs; - int aggr, ampdu; -+ int wcid; - - /* - * Obtain the status about this packet. -@@ -872,6 +874,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi) - - real_mcs = rt2x00_get_field32(status, TX_STA_FIFO_MCS); - aggr = rt2x00_get_field32(status, TX_STA_FIFO_TX_AGGRE); -+ wcid = rt2x00_get_field32(status, TX_STA_FIFO_WCID); - - /* - * If a frame was meant to be sent as a single non-aggregated MPDU -@@ -1468,6 +1471,7 @@ int rt2800_sta_add(struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif, - return 0; - - __set_bit(wcid - WCID_START, drv_data->sta_ids); -+ drv_data->wcid_to_sta[wcid - WCID_START] = sta; - - /* - * Clean up WCID attributes and write STA address to the device. -@@ -1498,6 +1502,7 @@ int rt2800_sta_remove(struct rt2x00_dev *rt2x00dev, struct ieee80211_sta *sta) - * get renewed when the WCID is reused. - */ - rt2800_config_wcid(rt2x00dev, NULL, wcid); -+ drv_data->wcid_to_sta[wcid - WCID_START] = NULL; - __clear_bit(wcid - WCID_START, drv_data->sta_ids); - - return 0; -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -index 8e1ae138c3f1..6811d677a6e7 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -@@ -41,6 +41,7 @@ struct rt2800_drv_data { - unsigned int tbtt_tick; - unsigned int ampdu_factor_cnt[4]; - DECLARE_BITMAP(sta_ids, STA_IDS_SIZE); -+ struct ieee80211_sta *wcid_to_sta[STA_IDS_SIZE]; - }; - - struct rt2800_ops { -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h -index 22d18818e850..9b297fce4692 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h -@@ -102,7 +102,7 @@ enum skb_frame_desc_flags { - * of the scope of the skb->data pointer. - * @iv: IV/EIV data used during encryption/decryption. - * @skb_dma: (PCI-only) the DMA address associated with the sk buffer. -- * @entry: The entry to which this sk buffer belongs. -+ * @sta: The station where sk buffer was sent. - */ - struct skb_frame_desc { - u8 flags; -@@ -116,6 +116,7 @@ struct skb_frame_desc { - __le32 iv[2]; - - dma_addr_t skb_dma; -+ struct ieee80211_sta *sta; - }; - - /** --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch b/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch deleted file mode 100644 index 278d2d6071..0000000000 --- a/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 5edb05afebba8f488a30db29550e55c42eea6d6a Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 15 Feb 2017 10:25:06 +0100 -Subject: [PATCH 10/19] rt2x00: separte filling tx status from rt2x00lib_txdone - -This makes rt2x00lib_txdone a bit simpler and will allow to reuse code -in different variant of txdone which I'm preparing. - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 141 +++++++++++++------------ - 1 file changed, 76 insertions(+), 65 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -index dd6678109b7e..b5d90fefc96b 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -313,73 +313,14 @@ static inline int rt2x00lib_txdone_bar_status(struct queue_entry *entry) - return ret; - } - --void rt2x00lib_txdone(struct queue_entry *entry, -- struct txdone_entry_desc *txdesc) -+static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev, -+ struct ieee80211_tx_info *tx_info, -+ struct skb_frame_desc *skbdesc, -+ struct txdone_entry_desc *txdesc, -+ bool success) - { -- struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; -- struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb); -- struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); -- unsigned int header_length, i; - u8 rate_idx, rate_flags, retry_rates; -- u8 skbdesc_flags = skbdesc->flags; -- bool success; -- -- /* -- * Unmap the skb. -- */ -- rt2x00queue_unmap_skb(entry); -- -- /* -- * Remove the extra tx headroom from the skb. -- */ -- skb_pull(entry->skb, rt2x00dev->extra_tx_headroom); -- -- /* -- * Signal that the TX descriptor is no longer in the skb. -- */ -- skbdesc->flags &= ~SKBDESC_DESC_IN_SKB; -- -- /* -- * Determine the length of 802.11 header. -- */ -- header_length = ieee80211_get_hdrlen_from_skb(entry->skb); -- -- /* -- * Remove L2 padding which was added during -- */ -- if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_L2PAD)) -- rt2x00queue_remove_l2pad(entry->skb, header_length); -- -- /* -- * If the IV/EIV data was stripped from the frame before it was -- * passed to the hardware, we should now reinsert it again because -- * mac80211 will expect the same data to be present it the -- * frame as it was passed to us. -- */ -- if (rt2x00_has_cap_hw_crypto(rt2x00dev)) -- rt2x00crypto_tx_insert_iv(entry->skb, header_length); -- -- /* -- * Send frame to debugfs immediately, after this call is completed -- * we are going to overwrite the skb->cb array. -- */ -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry); -- -- /* -- * Determine if the frame has been successfully transmitted and -- * remove BARs from our check list while checking for their -- * TX status. -- */ -- success = -- rt2x00lib_txdone_bar_status(entry) || -- test_bit(TXDONE_SUCCESS, &txdesc->flags) || -- test_bit(TXDONE_UNKNOWN, &txdesc->flags); -- -- /* -- * Update TX statistics. -- */ -- rt2x00dev->link.qual.tx_success += success; -- rt2x00dev->link.qual.tx_failed += !success; -+ int i; - - rate_idx = skbdesc->tx_rate_idx; - rate_flags = skbdesc->tx_rate_flags; -@@ -448,6 +389,76 @@ void rt2x00lib_txdone(struct queue_entry *entry, - else - rt2x00dev->low_level_stats.dot11RTSFailureCount++; - } -+} -+ -+void rt2x00lib_txdone(struct queue_entry *entry, -+ struct txdone_entry_desc *txdesc) -+{ -+ struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; -+ struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb); -+ struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); -+ u8 skbdesc_flags = skbdesc->flags; -+ unsigned int header_length; -+ bool success; -+ -+ /* -+ * Unmap the skb. -+ */ -+ rt2x00queue_unmap_skb(entry); -+ -+ /* -+ * Remove the extra tx headroom from the skb. -+ */ -+ skb_pull(entry->skb, rt2x00dev->extra_tx_headroom); -+ -+ /* -+ * Signal that the TX descriptor is no longer in the skb. -+ */ -+ skbdesc->flags &= ~SKBDESC_DESC_IN_SKB; -+ -+ /* -+ * Determine the length of 802.11 header. -+ */ -+ header_length = ieee80211_get_hdrlen_from_skb(entry->skb); -+ -+ /* -+ * Remove L2 padding which was added during -+ */ -+ if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_L2PAD)) -+ rt2x00queue_remove_l2pad(entry->skb, header_length); -+ -+ /* -+ * If the IV/EIV data was stripped from the frame before it was -+ * passed to the hardware, we should now reinsert it again because -+ * mac80211 will expect the same data to be present it the -+ * frame as it was passed to us. -+ */ -+ if (rt2x00_has_cap_hw_crypto(rt2x00dev)) -+ rt2x00crypto_tx_insert_iv(entry->skb, header_length); -+ -+ /* -+ * Send frame to debugfs immediately, after this call is completed -+ * we are going to overwrite the skb->cb array. -+ */ -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry); -+ -+ /* -+ * Determine if the frame has been successfully transmitted and -+ * remove BARs from our check list while checking for their -+ * TX status. -+ */ -+ success = -+ rt2x00lib_txdone_bar_status(entry) || -+ test_bit(TXDONE_SUCCESS, &txdesc->flags) || -+ test_bit(TXDONE_UNKNOWN, &txdesc->flags); -+ -+ /* -+ * Update TX statistics. -+ */ -+ rt2x00dev->link.qual.tx_success += success; -+ rt2x00dev->link.qual.tx_failed += !success; -+ -+ rt2x00lib_fill_tx_status(rt2x00dev, tx_info, skbdesc, txdesc, success); - - /* - * Only send the status report to mac80211 when it's a frame --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch b/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch deleted file mode 100644 index b28d894fc6..0000000000 --- a/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 56646adf9cd60b488ddc5633a2d9aa1f30efa5db Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 15 Feb 2017 10:25:07 +0100 -Subject: [PATCH 11/19] rt2x00: separte clearing entry from rt2x00lib_txdone - -This makes rt2x00lib_txdone a bit simpler and will allow to reuse -code in different variant of txdone which I'm preparing. - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 51 +++++++++++++++----------- - 1 file changed, 29 insertions(+), 22 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -index b5d90fefc96b..03b368ac9cb6 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -391,6 +391,32 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev, - } - } - -+static void rt2x00lib_clear_entry(struct rt2x00_dev *rt2x00dev, -+ struct queue_entry *entry) -+{ -+ /* -+ * Make this entry available for reuse. -+ */ -+ entry->skb = NULL; -+ entry->flags = 0; -+ -+ rt2x00dev->ops->lib->clear_entry(entry); -+ -+ rt2x00queue_index_inc(entry, Q_INDEX_DONE); -+ -+ /* -+ * If the data queue was below the threshold before the txdone -+ * handler we must make sure the packet queue in the mac80211 stack -+ * is reenabled when the txdone handler has finished. This has to be -+ * serialized with rt2x00mac_tx(), otherwise we can wake up queue -+ * before it was stopped. -+ */ -+ spin_lock_bh(&entry->queue->tx_lock); -+ if (!rt2x00queue_threshold(entry->queue)) -+ rt2x00queue_unpause_queue(entry->queue); -+ spin_unlock_bh(&entry->queue->tx_lock); -+} -+ - void rt2x00lib_txdone(struct queue_entry *entry, - struct txdone_entry_desc *txdesc) - { -@@ -471,30 +497,11 @@ void rt2x00lib_txdone(struct queue_entry *entry, - ieee80211_tx_status(rt2x00dev->hw, entry->skb); - else - ieee80211_tx_status_ni(rt2x00dev->hw, entry->skb); -- } else -+ } else { - dev_kfree_skb_any(entry->skb); -+ } - -- /* -- * Make this entry available for reuse. -- */ -- entry->skb = NULL; -- entry->flags = 0; -- -- rt2x00dev->ops->lib->clear_entry(entry); -- -- rt2x00queue_index_inc(entry, Q_INDEX_DONE); -- -- /* -- * If the data queue was below the threshold before the txdone -- * handler we must make sure the packet queue in the mac80211 stack -- * is reenabled when the txdone handler has finished. This has to be -- * serialized with rt2x00mac_tx(), otherwise we can wake up queue -- * before it was stopped. -- */ -- spin_lock_bh(&entry->queue->tx_lock); -- if (!rt2x00queue_threshold(entry->queue)) -- rt2x00queue_unpause_queue(entry->queue); -- spin_unlock_bh(&entry->queue->tx_lock); -+ rt2x00lib_clear_entry(rt2x00dev, entry); - } - EXPORT_SYMBOL_GPL(rt2x00lib_txdone); - --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch b/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch deleted file mode 100644 index 7bec546a9e..0000000000 --- a/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch +++ /dev/null @@ -1,92 +0,0 @@ -From a09305d052166cb489402a63a5d275e954e0b923 Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 15 Feb 2017 10:25:08 +0100 -Subject: [PATCH 12/19] rt2x00: add txdone nomatch function - -This txdone nomatch function will be used when we get status from the HW, -but we could not match it with any sent skb. - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00.h | 2 ++ - drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 50 ++++++++++++++++++++++++++ - 2 files changed, 52 insertions(+) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -index 340787894c69..91ba10fdf732 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -@@ -1425,6 +1425,8 @@ void rt2x00lib_dmastart(struct queue_entry *entry); - void rt2x00lib_dmadone(struct queue_entry *entry); - void rt2x00lib_txdone(struct queue_entry *entry, - struct txdone_entry_desc *txdesc); -+void rt2x00lib_txdone_nomatch(struct queue_entry *entry, -+ struct txdone_entry_desc *txdesc); - void rt2x00lib_txdone_noinfo(struct queue_entry *entry, u32 status); - void rt2x00lib_rxdone(struct queue_entry *entry, gfp_t gfp); - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -index 03b368ac9cb6..90fc259fb5bc 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -417,6 +417,56 @@ static void rt2x00lib_clear_entry(struct rt2x00_dev *rt2x00dev, - spin_unlock_bh(&entry->queue->tx_lock); - } - -+void rt2x00lib_txdone_nomatch(struct queue_entry *entry, -+ struct txdone_entry_desc *txdesc) -+{ -+ struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; -+ struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); -+ struct ieee80211_tx_info txinfo = {}; -+ bool success; -+ -+ /* -+ * Unmap the skb. -+ */ -+ rt2x00queue_unmap_skb(entry); -+ -+ /* -+ * Signal that the TX descriptor is no longer in the skb. -+ */ -+ skbdesc->flags &= ~SKBDESC_DESC_IN_SKB; -+ -+ /* -+ * Send frame to debugfs immediately, after this call is completed -+ * we are going to overwrite the skb->cb array. -+ */ -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry); -+ -+ /* -+ * Determine if the frame has been successfully transmitted and -+ * remove BARs from our check list while checking for their -+ * TX status. -+ */ -+ success = -+ rt2x00lib_txdone_bar_status(entry) || -+ test_bit(TXDONE_SUCCESS, &txdesc->flags); -+ -+ if (!test_bit(TXDONE_UNKNOWN, &txdesc->flags)) { -+ /* -+ * Update TX statistics. -+ */ -+ rt2x00dev->link.qual.tx_success += success; -+ rt2x00dev->link.qual.tx_failed += !success; -+ -+ rt2x00lib_fill_tx_status(rt2x00dev, &txinfo, skbdesc, txdesc, -+ success); -+ ieee80211_tx_status_noskb(rt2x00dev->hw, skbdesc->sta, &txinfo); -+ } -+ -+ dev_kfree_skb_any(entry->skb); -+ rt2x00lib_clear_entry(rt2x00dev, entry); -+} -+EXPORT_SYMBOL_GPL(rt2x00lib_txdone_nomatch); -+ - void rt2x00lib_txdone(struct queue_entry *entry, - struct txdone_entry_desc *txdesc) - { --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch b/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch deleted file mode 100644 index bb35f2d300..0000000000 --- a/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch +++ /dev/null @@ -1,54 +0,0 @@ -From ec80ad70d778af7665992672896633ebd3b02ac8 Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 15 Feb 2017 10:25:09 +0100 -Subject: [PATCH 13/19] rt2x00: fixup fill_tx_status for nomatch case - -Add bits rt2x00lib_fill_tx_status() when filling status in nomatch -case and hopefully do not break the function for existing cases. - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 6 +++++- - drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 1 + - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -index 90fc259fb5bc..e95d2aad3b3f 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -357,6 +357,9 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev, - if (i < (IEEE80211_TX_MAX_RATES - 1)) - tx_info->status.rates[i].idx = -1; /* terminate */ - -+ if (test_bit(TXDONE_NO_ACK_REQ, &txdesc->flags)) -+ tx_info->flags |= IEEE80211_TX_CTL_NO_ACK; -+ - if (!(tx_info->flags & IEEE80211_TX_CTL_NO_ACK)) { - if (success) - tx_info->flags |= IEEE80211_TX_STAT_ACK; -@@ -375,7 +378,8 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev, - */ - if (test_bit(TXDONE_AMPDU, &txdesc->flags) || - tx_info->flags & IEEE80211_TX_CTL_AMPDU) { -- tx_info->flags |= IEEE80211_TX_STAT_AMPDU; -+ tx_info->flags |= IEEE80211_TX_STAT_AMPDU | -+ IEEE80211_TX_CTL_AMPDU; - tx_info->status.ampdu_len = 1; - tx_info->status.ampdu_ack_len = success ? 1 : 0; - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h -index 9b297fce4692..c78fb8c8838a 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h -@@ -215,6 +215,7 @@ enum txdone_entry_desc_flags { - TXDONE_FAILURE, - TXDONE_EXCESSIVE_RETRY, - TXDONE_AMPDU, -+ TXDONE_NO_ACK_REQ, - }; - - /** --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch b/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch deleted file mode 100644 index f4e4b8b075..0000000000 --- a/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch +++ /dev/null @@ -1,191 +0,0 @@ -From 293dff78ee058ec1e0b90e05a803c512b6a2097f Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 15 Feb 2017 10:25:10 +0100 -Subject: [PATCH 14/19] rt2x00: use txdone_nomatch on rt2800usb - -If we do not match skb entry, provide tx status via nomatch procedure. - -Currently in that case we do rt2x00lib_txdone_noinfo(TXDONE_NOINFO), -which actually assume that entry->skb was posted without retries and -provide rate saved in skb desc as successful. Patch changed that to -rate read from TX_STAT_FIFO, however still do not provide correct -number of retries. - -On SoC/PCI devices we keep providing status via standard txdone -procedure, no change in those devices, though we should thing about it. - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 31 ++++++++++++++++++++----- - drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 3 ++- - drivers/net/wireless/ralink/rt2x00/rt2800mmio.c | 2 +- - drivers/net/wireless/ralink/rt2x00/rt2800usb.c | 18 ++++++-------- - 4 files changed, 35 insertions(+), 19 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 46405cce35e0..4a7bec708a13 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -852,7 +852,8 @@ void rt2800_process_rxwi(struct queue_entry *entry, - } - EXPORT_SYMBOL_GPL(rt2800_process_rxwi); - --void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi) -+void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi, -+ bool match) - { - struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; - struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; -@@ -860,8 +861,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi) - struct txdone_entry_desc txdesc; - u32 word; - u16 mcs, real_mcs; -- int aggr, ampdu; -- int wcid; -+ int aggr, ampdu, wcid, ack_req; - - /* - * Obtain the status about this packet. -@@ -875,6 +875,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi) - real_mcs = rt2x00_get_field32(status, TX_STA_FIFO_MCS); - aggr = rt2x00_get_field32(status, TX_STA_FIFO_TX_AGGRE); - wcid = rt2x00_get_field32(status, TX_STA_FIFO_WCID); -+ ack_req = rt2x00_get_field32(status, TX_STA_FIFO_TX_ACK_REQUIRED); - - /* - * If a frame was meant to be sent as a single non-aggregated MPDU -@@ -891,8 +892,12 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi) - * Hence, replace the requested rate with the real tx rate to not - * confuse the rate control algortihm by providing clearly wrong - * data. -- */ -- if (unlikely(aggr == 1 && ampdu == 0 && real_mcs != mcs)) { -+ * -+ * FIXME: if we do not find matching entry, we tell that frame was -+ * posted without any retries. We need to find a way to fix that -+ * and provide retry count. -+ */ -+ if (unlikely((aggr == 1 && ampdu == 0 && real_mcs != mcs)) || !match) { - skbdesc->tx_rate_idx = real_mcs; - mcs = real_mcs; - } -@@ -900,6 +905,9 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi) - if (aggr == 1 || ampdu == 1) - __set_bit(TXDONE_AMPDU, &txdesc.flags); - -+ if (!ack_req) -+ __set_bit(TXDONE_NO_ACK_REQ, &txdesc.flags); -+ - /* - * Ralink has a retry mechanism using a global fallback - * table. We setup this fallback table to try the immediate -@@ -931,7 +939,18 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi) - if (txdesc.retry) - __set_bit(TXDONE_FALLBACK, &txdesc.flags); - -- rt2x00lib_txdone(entry, &txdesc); -+ if (!match) { -+ /* RCU assures non-null sta will not be freed by mac80211. */ -+ rcu_read_lock(); -+ if (likely(wcid >= WCID_START && wcid <= WCID_END)) -+ skbdesc->sta = drv_data->wcid_to_sta[wcid - WCID_START]; -+ else -+ skbdesc->sta = NULL; -+ rt2x00lib_txdone_nomatch(entry, &txdesc); -+ rcu_read_unlock(); -+ } else { -+ rt2x00lib_txdone(entry, &txdesc); -+ } - } - EXPORT_SYMBOL_GPL(rt2800_txdone_entry); - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -index 6811d677a6e7..d9ef260d542a 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -@@ -191,7 +191,8 @@ void rt2800_write_tx_data(struct queue_entry *entry, - struct txentry_desc *txdesc); - void rt2800_process_rxwi(struct queue_entry *entry, struct rxdone_entry_desc *txdesc); - --void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32* txwi); -+void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi, -+ bool match); - - void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc); - void rt2800_clear_beacon(struct queue_entry *entry); -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c -index de4790b41be7..3ab3b5323897 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c -@@ -239,7 +239,7 @@ static bool rt2800mmio_txdone_release_entries(struct queue_entry *entry, - { - if (test_bit(ENTRY_DATA_STATUS_SET, &entry->flags)) { - rt2800_txdone_entry(entry, entry->status, -- rt2800mmio_get_txwi(entry)); -+ rt2800mmio_get_txwi(entry), true); - return false; - } - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c -index 205a7b8ac8a7..f11e3f532a84 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c -@@ -501,8 +501,7 @@ static int rt2800usb_get_tx_data_len(struct queue_entry *entry) - /* - * TX control handlers - */ --static enum txdone_entry_desc_flags --rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg) -+static bool rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg) - { - __le32 *txwi; - u32 word; -@@ -515,7 +514,7 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg) - * frame. - */ - if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags)) -- return TXDONE_FAILURE; -+ return false; - - wcid = rt2x00_get_field32(reg, TX_STA_FIFO_WCID); - ack = rt2x00_get_field32(reg, TX_STA_FIFO_TX_ACK_REQUIRED); -@@ -537,10 +536,10 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg) - rt2x00_dbg(entry->queue->rt2x00dev, - "TX status report missed for queue %d entry %d\n", - entry->queue->qid, entry->entry_idx); -- return TXDONE_UNKNOWN; -+ return false; - } - -- return TXDONE_SUCCESS; -+ return true; - } - - static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev) -@@ -549,7 +548,7 @@ static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev) - struct queue_entry *entry; - u32 reg; - u8 qid; -- enum txdone_entry_desc_flags done_status; -+ bool match; - - while (kfifo_get(&rt2x00dev->txstatus_fifo, ®)) { - /* -@@ -574,11 +573,8 @@ static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev) - break; - } - -- done_status = rt2800usb_txdone_entry_check(entry, reg); -- if (likely(done_status == TXDONE_SUCCESS)) -- rt2800_txdone_entry(entry, reg, rt2800usb_get_txwi(entry)); -- else -- rt2x00lib_txdone_noinfo(entry, done_status); -+ match = rt2800usb_txdone_entry_check(entry, reg); -+ rt2800_txdone_entry(entry, reg, rt2800usb_get_txwi(entry), match); - } - } - --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch b/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch deleted file mode 100644 index 4e18dc8e2a..0000000000 --- a/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 9d7a7a4d2b02bcd30fb5fe4270278212353cc332 Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 15 Feb 2017 10:25:11 +0100 -Subject: [PATCH 15/19] rt2800: status based rate flags for nomatch case - -We use skb_desc->tx_rate_flags from entry as rate[].flags even if -skb does not match status. Patch corrects flags and also fixes -mcs for legacy rates. - -rt2800_rate_from_status() is based on Felix's mt76 -mt76x2_mac_process_tx_rate() function. - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2800.h | 2 ++ - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 35 +++++++++++++++++++++++++- - 2 files changed, 36 insertions(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h -index 0e7051d8132f..480b08601785 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h -@@ -1760,6 +1760,8 @@ - #define TX_STA_FIFO_WCID FIELD32(0x0000ff00) - #define TX_STA_FIFO_SUCCESS_RATE FIELD32(0xffff0000) - #define TX_STA_FIFO_MCS FIELD32(0x007f0000) -+#define TX_STA_FIFO_BW FIELD32(0x00800000) -+#define TX_STA_FIFO_SGI FIELD32(0x01000000) - #define TX_STA_FIFO_PHYMODE FIELD32(0xc0000000) - - /* -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 4a7bec708a13..8d00c599e47a 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -852,6 +852,39 @@ void rt2800_process_rxwi(struct queue_entry *entry, - } - EXPORT_SYMBOL_GPL(rt2800_process_rxwi); - -+static void rt2800_rate_from_status(struct skb_frame_desc *skbdesc, -+ u32 status, enum nl80211_band band) -+{ -+ u8 flags = 0; -+ u8 idx = rt2x00_get_field32(status, TX_STA_FIFO_MCS); -+ -+ switch (rt2x00_get_field32(status, TX_STA_FIFO_PHYMODE)) { -+ case RATE_MODE_HT_GREENFIELD: -+ flags |= IEEE80211_TX_RC_GREEN_FIELD; -+ /* fall through */ -+ case RATE_MODE_HT_MIX: -+ flags |= IEEE80211_TX_RC_MCS; -+ break; -+ case RATE_MODE_OFDM: -+ if (band == NL80211_BAND_2GHZ) -+ idx += 4; -+ break; -+ case RATE_MODE_CCK: -+ if (idx >= 8) -+ idx -= 8; -+ break; -+ } -+ -+ if (rt2x00_get_field32(status, TX_STA_FIFO_BW)) -+ flags |= IEEE80211_TX_RC_40_MHZ_WIDTH; -+ -+ if (rt2x00_get_field32(status, TX_STA_FIFO_SGI)) -+ flags |= IEEE80211_TX_RC_SHORT_GI; -+ -+ skbdesc->tx_rate_idx = idx; -+ skbdesc->tx_rate_flags = flags; -+} -+ - void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi, - bool match) - { -@@ -898,7 +931,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi, - * and provide retry count. - */ - if (unlikely((aggr == 1 && ampdu == 0 && real_mcs != mcs)) || !match) { -- skbdesc->tx_rate_idx = real_mcs; -+ rt2800_rate_from_status(skbdesc, status, rt2x00dev->curr_band); - mcs = real_mcs; - } - --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch b/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch deleted file mode 100644 index 31d79bb751..0000000000 --- a/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch +++ /dev/null @@ -1,43 +0,0 @@ -From fb47ada8dc3c30c8e7b415da155742b49536c61e Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 15 Feb 2017 10:25:12 +0100 -Subject: [PATCH 16/19] rt2800: use TXOP_BACKOFF for probe frames - -Even if we do not set AMPDU bit in TXWI, device still can aggregate -frame and send it with rate not corresponding to requested. That mean -we can do not sent probe frames with requested rate. To prevent that -use TXOP_BACKOFF for probe frames. - -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c -index e1660b92b20c..a2c1ca5c76d1 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c -@@ -372,15 +372,16 @@ static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev, - - /* - * Determine IFS values -- * - Use TXOP_BACKOFF for management frames except beacons -+ * - Use TXOP_BACKOFF for probe and management frames except beacons - * - Use TXOP_SIFS for fragment bursts - * - Use TXOP_HTTXOP for everything else - * - * Note: rt2800 devices won't use CTS protection (if used) - * for frames not transmitted with TXOP_HTTXOP - */ -- if (ieee80211_is_mgmt(hdr->frame_control) && -- !ieee80211_is_beacon(hdr->frame_control)) -+ if ((ieee80211_is_mgmt(hdr->frame_control) && -+ !ieee80211_is_beacon(hdr->frame_control)) || -+ (tx_info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE)) - txdesc->u.ht.txop = TXOP_BACKOFF; - else if (!(tx_info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT)) - txdesc->u.ht.txop = TXOP_SIFS; --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch b/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch deleted file mode 100644 index 4e53092d12..0000000000 --- a/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch +++ /dev/null @@ -1,28 +0,0 @@ -From dd35cc0896faff5ed9d22eac9ea4a1920e2eec0c Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka -Date: Wed, 15 Feb 2017 10:25:13 +0100 -Subject: [PATCH 17/19] rt2x00: fix rt2x00debug_dump_frame comment - -Reported-by: Jeroen Roovers -Signed-off-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2x00.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -index 91ba10fdf732..ce340bfd71a0 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -@@ -1396,7 +1396,7 @@ void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop); - * rt2x00debug_dump_frame - Dump a frame to userspace through debugfs. - * @rt2x00dev: Pointer to &struct rt2x00_dev. - * @type: The type of frame that is being dumped. -- * @skb: The skb containing the frame to be dumped. -+ * @entry: The queue entry containing the frame to be dumped. - */ - #ifdef CPTCFG_RT2X00_LIB_DEBUGFS - void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev, --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch b/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch deleted file mode 100644 index 3cf342d690..0000000000 --- a/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 5ce33b603063f36272fcfb1b4a5fde69f46eca88 Mon Sep 17 00:00:00 2001 -From: Daniel Golle -Date: Thu, 9 Mar 2017 00:54:22 +0100 -Subject: [PATCH 18/19] rt2x00: fix TX_PWR_CFG_4 register definition - -Some of the macros used to describe the TX_PWR_CFG_4 register accidentally -refer to TX_PWR_CFG_3, probably a copy&paste error. Fix that. - -Signed-off-by: Daniel Golle -Acked-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/rt2800.h | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h -index 480b08601785..fd1dbd956bad 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h -@@ -1171,10 +1171,10 @@ - #define TX_PWR_CFG_4_UKNOWN7 FIELD32(0x00000f00) - #define TX_PWR_CFG_4_UKNOWN8 FIELD32(0x0000f000) - /* bits for 3T devices */ --#define TX_PWR_CFG_3_STBC4_CH0 FIELD32(0x0000000f) --#define TX_PWR_CFG_3_STBC4_CH1 FIELD32(0x000000f0) --#define TX_PWR_CFG_3_STBC6_CH0 FIELD32(0x00000f00) --#define TX_PWR_CFG_3_STBC6_CH1 FIELD32(0x0000f000) -+#define TX_PWR_CFG_4_STBC4_CH0 FIELD32(0x0000000f) -+#define TX_PWR_CFG_4_STBC4_CH1 FIELD32(0x000000f0) -+#define TX_PWR_CFG_4_STBC6_CH0 FIELD32(0x00000f00) -+#define TX_PWR_CFG_4_STBC6_CH1 FIELD32(0x0000f000) - - /* - * TX_PIN_CFG: --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch b/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch deleted file mode 100644 index 7b99312744..0000000000 --- a/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch +++ /dev/null @@ -1,2077 +0,0 @@ -From 41977e86c984fcdddb454a3d7887de5d47b5f530 Mon Sep 17 00:00:00 2001 -From: Roman Yeryomin -Date: Tue, 21 Mar 2017 00:43:00 +0100 -Subject: [PATCH 19/19] rt2x00: add support for MT7620 - -Basic support for MT7620 built-in wireless radio was added to -OpenWrt in r41441. It has seen some heavy cleaning and refactoring -since in order to match the Kernel's code quality standards. - -Signed-off-by: Roman Yeryomin -Signed-off-by: Daniel Golle -Acked-by: Stanislaw Gruszka -Signed-off-by: Kalle Valo ---- - drivers/net/wireless/ralink/rt2x00/Kconfig | 2 +- - drivers/net/wireless/ralink/rt2x00/rt2800.h | 177 +++ - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 1421 +++++++++++++++++++++++- - drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 4 + - drivers/net/wireless/ralink/rt2x00/rt2x00.h | 1 + - 5 files changed, 1578 insertions(+), 27 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/Kconfig b/drivers/net/wireless/ralink/rt2x00/Kconfig -index de62f5dcb62f..a1d1cfe214d2 100644 ---- a/drivers/net/wireless/ralink/rt2x00/Kconfig -+++ b/drivers/net/wireless/ralink/rt2x00/Kconfig -@@ -210,7 +210,7 @@ endif - config RT2800SOC - tristate "Ralink WiSoC support" - depends on m -- depends on SOC_RT288X || SOC_RT305X -+ depends on SOC_RT288X || SOC_RT305X || SOC_MT7620 - select RT2X00_LIB_SOC - select RT2X00_LIB_MMIO - select RT2X00_LIB_CRYPTO -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h -index fd1dbd956bad..6a8c93fb6a43 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h -@@ -79,6 +79,7 @@ - #define RF5372 0x5372 - #define RF5390 0x5390 - #define RF5392 0x5392 -+#define RF7620 0x7620 - - /* - * Chipset revisions. -@@ -639,6 +640,24 @@ - #define RF_CSR_CFG_BUSY FIELD32(0x00020000) - - /* -+ * MT7620 RF registers (reversed order) -+ */ -+#define RF_CSR_CFG_DATA_MT7620 FIELD32(0x0000ff00) -+#define RF_CSR_CFG_REGNUM_MT7620 FIELD32(0x03ff0000) -+#define RF_CSR_CFG_WRITE_MT7620 FIELD32(0x00000010) -+#define RF_CSR_CFG_BUSY_MT7620 FIELD32(0x00000001) -+ -+/* undocumented registers for calibration of new MAC */ -+#define RF_CONTROL0 0x0518 -+#define RF_BYPASS0 0x051c -+#define RF_CONTROL1 0x0520 -+#define RF_BYPASS1 0x0524 -+#define RF_CONTROL2 0x0528 -+#define RF_BYPASS2 0x052c -+#define RF_CONTROL3 0x0530 -+#define RF_BYPASS3 0x0534 -+ -+/* - * EFUSE_CSR: RT30x0 EEPROM - */ - #define EFUSE_CTRL 0x0580 -@@ -1022,6 +1041,16 @@ - #define AUTOWAKEUP_CFG_AUTOWAKE FIELD32(0x00008000) - - /* -+ * MIMO_PS_CFG: MIMO Power-save Configuration -+ */ -+#define MIMO_PS_CFG 0x1210 -+#define MIMO_PS_CFG_MMPS_BB_EN FIELD32(0x00000001) -+#define MIMO_PS_CFG_MMPS_RX_ANT_NUM FIELD32(0x00000006) -+#define MIMO_PS_CFG_MMPS_RF_EN FIELD32(0x00000008) -+#define MIMO_PS_CFG_RX_STBY_POL FIELD32(0x00000010) -+#define MIMO_PS_CFG_RX_RX_STBY0 FIELD32(0x00000020) -+ -+/* - * EDCA_AC0_CFG: - */ - #define EDCA_AC0_CFG 0x1300 -@@ -1095,6 +1124,12 @@ - #define TX_PWR_CFG_0_OFDM6_CH1 FIELD32(0x00f00000) - #define TX_PWR_CFG_0_OFDM12_CH0 FIELD32(0x0f000000) - #define TX_PWR_CFG_0_OFDM12_CH1 FIELD32(0xf0000000) -+/* bits for new 2T devices */ -+#define TX_PWR_CFG_0B_1MBS_2MBS FIELD32(0x000000ff) -+#define TX_PWR_CFG_0B_5MBS_11MBS FIELD32(0x0000ff00) -+#define TX_PWR_CFG_0B_6MBS_9MBS FIELD32(0x00ff0000) -+#define TX_PWR_CFG_0B_12MBS_18MBS FIELD32(0xff000000) -+ - - /* - * TX_PWR_CFG_1: -@@ -1117,6 +1152,11 @@ - #define TX_PWR_CFG_1_MCS0_CH1 FIELD32(0x00f00000) - #define TX_PWR_CFG_1_MCS2_CH0 FIELD32(0x0f000000) - #define TX_PWR_CFG_1_MCS2_CH1 FIELD32(0xf0000000) -+/* bits for new 2T devices */ -+#define TX_PWR_CFG_1B_24MBS_36MBS FIELD32(0x000000ff) -+#define TX_PWR_CFG_1B_48MBS FIELD32(0x0000ff00) -+#define TX_PWR_CFG_1B_MCS0_MCS1 FIELD32(0x00ff0000) -+#define TX_PWR_CFG_1B_MCS2_MCS3 FIELD32(0xff000000) - - /* - * TX_PWR_CFG_2: -@@ -1139,6 +1179,11 @@ - #define TX_PWR_CFG_2_MCS8_CH1 FIELD32(0x00f00000) - #define TX_PWR_CFG_2_MCS10_CH0 FIELD32(0x0f000000) - #define TX_PWR_CFG_2_MCS10_CH1 FIELD32(0xf0000000) -+/* bits for new 2T devices */ -+#define TX_PWR_CFG_2B_MCS4_MCS5 FIELD32(0x000000ff) -+#define TX_PWR_CFG_2B_MCS6_MCS7 FIELD32(0x0000ff00) -+#define TX_PWR_CFG_2B_MCS8_MCS9 FIELD32(0x00ff0000) -+#define TX_PWR_CFG_2B_MCS10_MCS11 FIELD32(0xff000000) - - /* - * TX_PWR_CFG_3: -@@ -1161,6 +1206,11 @@ - #define TX_PWR_CFG_3_STBC0_CH1 FIELD32(0x00f00000) - #define TX_PWR_CFG_3_STBC2_CH0 FIELD32(0x0f000000) - #define TX_PWR_CFG_3_STBC2_CH1 FIELD32(0xf0000000) -+/* bits for new 2T devices */ -+#define TX_PWR_CFG_3B_MCS12_MCS13 FIELD32(0x000000ff) -+#define TX_PWR_CFG_3B_MCS14 FIELD32(0x0000ff00) -+#define TX_PWR_CFG_3B_STBC_MCS0_MCS1 FIELD32(0x00ff0000) -+#define TX_PWR_CFG_3B_STBC_MCS2_MSC3 FIELD32(0xff000000) - - /* - * TX_PWR_CFG_4: -@@ -1175,6 +1225,9 @@ - #define TX_PWR_CFG_4_STBC4_CH1 FIELD32(0x000000f0) - #define TX_PWR_CFG_4_STBC6_CH0 FIELD32(0x00000f00) - #define TX_PWR_CFG_4_STBC6_CH1 FIELD32(0x0000f000) -+/* bits for new 2T devices */ -+#define TX_PWR_CFG_4B_STBC_MCS4_MCS5 FIELD32(0x000000ff) -+#define TX_PWR_CFG_4B_STBC_MCS6 FIELD32(0x0000ff00) - - /* - * TX_PIN_CFG: -@@ -1201,6 +1254,8 @@ - #define TX_PIN_CFG_RFTR_POL FIELD32(0x00020000) - #define TX_PIN_CFG_TRSW_EN FIELD32(0x00040000) - #define TX_PIN_CFG_TRSW_POL FIELD32(0x00080000) -+#define TX_PIN_CFG_RFRX_EN FIELD32(0x00100000) -+#define TX_PIN_CFG_RFRX_POL FIELD32(0x00200000) - #define TX_PIN_CFG_PA_PE_A2_EN FIELD32(0x01000000) - #define TX_PIN_CFG_PA_PE_G2_EN FIELD32(0x02000000) - #define TX_PIN_CFG_PA_PE_A2_POL FIELD32(0x04000000) -@@ -1547,6 +1602,95 @@ - #define TX_PWR_CFG_4_EXT_STBC4_CH2 FIELD32(0x0000000f) - #define TX_PWR_CFG_4_EXT_STBC6_CH2 FIELD32(0x00000f00) - -+/* TXn_RF_GAIN_CORRECT: RF Gain Correction for each RF_ALC[3:2] -+ * Unit: 0.1 dB, Range: -3.2 dB to 3.1 dB -+ */ -+#define TX0_RF_GAIN_CORRECT 0x13a0 -+#define TX0_RF_GAIN_CORRECT_GAIN_CORR_0 FIELD32(0x0000003f) -+#define TX0_RF_GAIN_CORRECT_GAIN_CORR_1 FIELD32(0x00003f00) -+#define TX0_RF_GAIN_CORRECT_GAIN_CORR_2 FIELD32(0x003f0000) -+#define TX0_RF_GAIN_CORRECT_GAIN_CORR_3 FIELD32(0x3f000000) -+ -+#define TX1_RF_GAIN_CORRECT 0x13a4 -+#define TX1_RF_GAIN_CORRECT_GAIN_CORR_0 FIELD32(0x0000003f) -+#define TX1_RF_GAIN_CORRECT_GAIN_CORR_1 FIELD32(0x00003f00) -+#define TX1_RF_GAIN_CORRECT_GAIN_CORR_2 FIELD32(0x003f0000) -+#define TX1_RF_GAIN_CORRECT_GAIN_CORR_3 FIELD32(0x3f000000) -+ -+/* TXn_RF_GAIN_ATTEN: TXn RF Gain Attenuation Level -+ * Format: 7-bit, signed value -+ * Unit: 0.5 dB, Range: -20 dB to -5 dB -+ */ -+#define TX0_RF_GAIN_ATTEN 0x13a8 -+#define TX0_RF_GAIN_ATTEN_LEVEL_0 FIELD32(0x0000007f) -+#define TX0_RF_GAIN_ATTEN_LEVEL_1 FIELD32(0x00007f00) -+#define TX0_RF_GAIN_ATTEN_LEVEL_2 FIELD32(0x007f0000) -+#define TX0_RF_GAIN_ATTEN_LEVEL_3 FIELD32(0x7f000000) -+#define TX1_RF_GAIN_ATTEN 0x13ac -+#define TX1_RF_GAIN_ATTEN_LEVEL_0 FIELD32(0x0000007f) -+#define TX1_RF_GAIN_ATTEN_LEVEL_1 FIELD32(0x00007f00) -+#define TX1_RF_GAIN_ATTEN_LEVEL_2 FIELD32(0x007f0000) -+#define TX1_RF_GAIN_ATTEN_LEVEL_3 FIELD32(0x7f000000) -+ -+/* TX_ALC_CFG_0: TX Automatic Level Control Configuration 0 -+ * TX_ALC_LIMIT_n: TXn upper limit -+ * TX_ALC_CH_INIT_n: TXn channel initial transmission gain -+ * Unit: 0.5 dB, Range: 0 to 23.5 dB -+ */ -+#define TX_ALC_CFG_0 0x13b0 -+#define TX_ALC_CFG_0_CH_INIT_0 FIELD32(0x0000003f) -+#define TX_ALC_CFG_0_CH_INIT_1 FIELD32(0x00003f00) -+#define TX_ALC_CFG_0_LIMIT_0 FIELD32(0x003f0000) -+#define TX_ALC_CFG_0_LIMIT_1 FIELD32(0x3f000000) -+ -+/* TX_ALC_CFG_1: TX Automatic Level Control Configuration 1 -+ * TX_TEMP_COMP: TX Power Temperature Compensation -+ * Unit: 0.5 dB, Range: -10 dB to 10 dB -+ * TXn_GAIN_FINE: TXn Gain Fine Adjustment -+ * Unit: 0.1 dB, Range: -0.8 dB to 0.7 dB -+ * RF_TOS_DLY: Sets the RF_TOS_EN assertion delay after -+ * deassertion of PA_PE. -+ * Unit: 0.25 usec -+ * TXn_RF_GAIN_ATTEN: TXn RF gain attentuation selector -+ * RF_TOS_TIMEOUT: time-out value for RF_TOS_ENABLE -+ * deassertion if RF_TOS_DONE is missing. -+ * Unit: 0.25 usec -+ * RF_TOS_ENABLE: TX offset calibration enable -+ * ROS_BUSY_EN: RX offset calibration busy enable -+ */ -+#define TX_ALC_CFG_1 0x13b4 -+#define TX_ALC_CFG_1_TX_TEMP_COMP FIELD32(0x0000003f) -+#define TX_ALC_CFG_1_TX0_GAIN_FINE FIELD32(0x00000f00) -+#define TX_ALC_CFG_1_TX1_GAIN_FINE FIELD32(0x0000f000) -+#define TX_ALC_CFG_1_RF_TOS_DLY FIELD32(0x00070000) -+#define TX_ALC_CFG_1_TX0_RF_GAIN_ATTEN FIELD32(0x00300000) -+#define TX_ALC_CFG_1_TX1_RF_GAIN_ATTEN FIELD32(0x00c00000) -+#define TX_ALC_CFG_1_RF_TOS_TIMEOUT FIELD32(0x3f000000) -+#define TX_ALC_CFG_1_RF_TOS_ENABLE FIELD32(0x40000000) -+#define TX_ALC_CFG_1_ROS_BUSY_EN FIELD32(0x80000000) -+ -+/* TXn_BB_GAIN_ATTEN: TXn RF Gain Attenuation Level -+ * Format: 5-bit signed values -+ * Unit: 0.5 dB, Range: -8 dB to 7 dB -+ */ -+#define TX0_BB_GAIN_ATTEN 0x13c0 -+#define TX0_BB_GAIN_ATTEN_LEVEL_0 FIELD32(0x0000001f) -+#define TX0_BB_GAIN_ATTEN_LEVEL_1 FIELD32(0x00001f00) -+#define TX0_BB_GAIN_ATTEN_LEVEL_2 FIELD32(0x001f0000) -+#define TX0_BB_GAIN_ATTEN_LEVEL_3 FIELD32(0x1f000000) -+#define TX1_BB_GAIN_ATTEN 0x13c4 -+#define TX1_BB_GAIN_ATTEN_LEVEL_0 FIELD32(0x0000001f) -+#define TX1_BB_GAIN_ATTEN_LEVEL_1 FIELD32(0x00001f00) -+#define TX1_BB_GAIN_ATTEN_LEVEL_2 FIELD32(0x001f0000) -+#define TX1_BB_GAIN_ATTEN_LEVEL_3 FIELD32(0x1f000000) -+ -+/* TX_ALC_VGA3: TX Automatic Level Correction Variable Gain Amplifier 3 */ -+#define TX_ALC_VGA3 0x13c8 -+#define TX_ALC_VGA3_TX0_ALC_VGA3 FIELD32(0x0000001f) -+#define TX_ALC_VGA3_TX1_ALC_VGA3 FIELD32(0x00001f00) -+#define TX_ALC_VGA3_TX0_ALC_VGA2 FIELD32(0x001f0000) -+#define TX_ALC_VGA3_TX1_ALC_VGA2 FIELD32(0x1f000000) -+ - /* TX_PWR_CFG_7 */ - #define TX_PWR_CFG_7 0x13d4 - #define TX_PWR_CFG_7_OFDM54_CH0 FIELD32(0x0000000f) -@@ -1555,6 +1699,10 @@ - #define TX_PWR_CFG_7_MCS7_CH0 FIELD32(0x000f0000) - #define TX_PWR_CFG_7_MCS7_CH1 FIELD32(0x00f00000) - #define TX_PWR_CFG_7_MCS7_CH2 FIELD32(0x0f000000) -+/* bits for new 2T devices */ -+#define TX_PWR_CFG_7B_54MBS FIELD32(0x000000ff) -+#define TX_PWR_CFG_7B_MCS7 FIELD32(0x00ff0000) -+ - - /* TX_PWR_CFG_8 */ - #define TX_PWR_CFG_8 0x13d8 -@@ -1564,12 +1712,17 @@ - #define TX_PWR_CFG_8_MCS23_CH0 FIELD32(0x000f0000) - #define TX_PWR_CFG_8_MCS23_CH1 FIELD32(0x00f00000) - #define TX_PWR_CFG_8_MCS23_CH2 FIELD32(0x0f000000) -+/* bits for new 2T devices */ -+#define TX_PWR_CFG_8B_MCS15 FIELD32(0x000000ff) -+ - - /* TX_PWR_CFG_9 */ - #define TX_PWR_CFG_9 0x13dc - #define TX_PWR_CFG_9_STBC7_CH0 FIELD32(0x0000000f) - #define TX_PWR_CFG_9_STBC7_CH1 FIELD32(0x000000f0) - #define TX_PWR_CFG_9_STBC7_CH2 FIELD32(0x00000f00) -+/* bits for new 2T devices */ -+#define TX_PWR_CFG_9B_STBC_MCS7 FIELD32(0x000000ff) - - /* - * RX_FILTER_CFG: RX configuration register. -@@ -2137,11 +2290,14 @@ struct mac_iveiv_entry { - #define RFCSR1_TX1_PD FIELD8(0x20) - #define RFCSR1_RX2_PD FIELD8(0x40) - #define RFCSR1_TX2_PD FIELD8(0x80) -+#define RFCSR1_TX2_EN_MT7620 FIELD8(0x02) - - /* - * RFCSR 2: - */ - #define RFCSR2_RESCAL_EN FIELD8(0x80) -+#define RFCSR2_RX2_EN_MT7620 FIELD8(0x02) -+#define RFCSR2_TX2_EN_MT7620 FIELD8(0x20) - - /* - * RFCSR 3: -@@ -2160,6 +2316,12 @@ struct mac_iveiv_entry { - #define RFCSR3_BIT5 FIELD8(0x20) - - /* -+ * RFCSR 4: -+ * VCOCAL_EN used by MT7620 -+ */ -+#define RFCSR4_VCOCAL_EN FIELD8(0x80) -+ -+/* - * FRCSR 5: - */ - #define RFCSR5_R1 FIELD8(0x0c) -@@ -2214,6 +2376,7 @@ struct mac_iveiv_entry { - */ - #define RFCSR13_TX_POWER FIELD8(0x1f) - #define RFCSR13_DR0 FIELD8(0xe0) -+#define RFCSR13_RDIV_MT7620 FIELD8(0x03) - - /* - * RFCSR 15: -@@ -2224,6 +2387,8 @@ struct mac_iveiv_entry { - * RFCSR 16: - */ - #define RFCSR16_TXMIXER_GAIN FIELD8(0x07) -+#define RFCSR16_RF_PLL_FREQ_SEL_MT7620 FIELD8(0x0F) -+#define RFCSR16_SDM_MODE_MT7620 FIELD8(0xE0) - - /* - * RFCSR 17: -@@ -2236,6 +2401,8 @@ struct mac_iveiv_entry { - /* RFCSR 18 */ - #define RFCSR18_XO_TUNE_BYPASS FIELD8(0x40) - -+/* RFCSR 19 */ -+#define RFCSR19_K FIELD8(0x03) - - /* - * RFCSR 20: -@@ -2246,11 +2413,14 @@ struct mac_iveiv_entry { - * RFCSR 21: - */ - #define RFCSR21_RX_LO2_EN FIELD8(0x08) -+#define RFCSR21_BIT1 FIELD8(0x01) -+#define RFCSR21_BIT8 FIELD8(0x80) - - /* - * RFCSR 22: - */ - #define RFCSR22_BASEBAND_LOOPBACK FIELD8(0x01) -+#define RFCSR22_FREQPLAN_D_MT7620 FIELD8(0x07) - - /* - * RFCSR 23: -@@ -2273,6 +2443,11 @@ struct mac_iveiv_entry { - #define RFCSR27_R4 FIELD8(0x40) - - /* -+ * RFCSR 28: -+ */ -+#define RFCSR28_CH11_HT40 FIELD8(0x04) -+ -+/* - * RFCSR 29: - */ - #define RFCSR29_ADC6_TEST FIELD8(0x01) -@@ -2333,6 +2508,7 @@ struct mac_iveiv_entry { - */ - #define RFCSR42_BIT1 FIELD8(0x01) - #define RFCSR42_BIT4 FIELD8(0x08) -+#define RFCSR42_TX2_EN_MT7620 FIELD8(0x40) - - /* - * RFCSR 49: -@@ -2435,6 +2611,7 @@ enum rt2800_eeprom_word { - EEPROM_TSSI_BOUND_BG5, - EEPROM_TXPOWER_A1, - EEPROM_TXPOWER_A2, -+ EEPROM_TXPOWER_INIT, - EEPROM_TSSI_BOUND_A1, - EEPROM_TSSI_BOUND_A2, - EEPROM_TSSI_BOUND_A3, -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 8d00c599e47a..201b12ed90c6 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -59,6 +59,9 @@ - rt2800_regbusy_read((__dev), BBP_CSR_CFG, BBP_CSR_CFG_BUSY, (__reg)) - #define WAIT_FOR_RFCSR(__dev, __reg) \ - rt2800_regbusy_read((__dev), RF_CSR_CFG, RF_CSR_CFG_BUSY, (__reg)) -+#define WAIT_FOR_RFCSR_MT7620(__dev, __reg) \ -+ rt2800_regbusy_read((__dev), RF_CSR_CFG, RF_CSR_CFG_BUSY_MT7620, \ -+ (__reg)) - #define WAIT_FOR_RF(__dev, __reg) \ - rt2800_regbusy_read((__dev), RF_CSR_CFG0, RF_CSR_CFG0_BUSY, (__reg)) - #define WAIT_FOR_MCU(__dev, __reg) \ -@@ -150,19 +153,56 @@ static void rt2800_rfcsr_write(struct rt2x00_dev *rt2x00dev, - * Wait until the RFCSR becomes available, afterwards we - * can safely write the new data into the register. - */ -- if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { -- reg = 0; -- rt2x00_set_field32(®, RF_CSR_CFG_DATA, value); -- rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word); -- rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 1); -- rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1); -+ switch (rt2x00dev->chip.rt) { -+ case RT6352: -+ if (WAIT_FOR_RFCSR_MT7620(rt2x00dev, ®)) { -+ reg = 0; -+ rt2x00_set_field32(®, RF_CSR_CFG_DATA_MT7620, value); -+ rt2x00_set_field32(®, RF_CSR_CFG_REGNUM_MT7620, -+ word); -+ rt2x00_set_field32(®, RF_CSR_CFG_WRITE_MT7620, 1); -+ rt2x00_set_field32(®, RF_CSR_CFG_BUSY_MT7620, 1); -+ -+ rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); -+ } -+ break; - -- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); -+ default: -+ if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { -+ reg = 0; -+ rt2x00_set_field32(®, RF_CSR_CFG_DATA, value); -+ rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word); -+ rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 1); -+ rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1); -+ -+ rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); -+ } -+ break; - } - - mutex_unlock(&rt2x00dev->csr_mutex); - } - -+static void rt2800_rfcsr_write_bank(struct rt2x00_dev *rt2x00dev, const u8 bank, -+ const unsigned int reg, const u8 value) -+{ -+ rt2800_rfcsr_write(rt2x00dev, (reg | (bank << 6)), value); -+} -+ -+static void rt2800_rfcsr_write_chanreg(struct rt2x00_dev *rt2x00dev, -+ const unsigned int reg, const u8 value) -+{ -+ rt2800_rfcsr_write_bank(rt2x00dev, 4, reg, value); -+ rt2800_rfcsr_write_bank(rt2x00dev, 6, reg, value); -+} -+ -+static void rt2800_rfcsr_write_dccal(struct rt2x00_dev *rt2x00dev, -+ const unsigned int reg, const u8 value) -+{ -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, reg, value); -+ rt2800_rfcsr_write_bank(rt2x00dev, 7, reg, value); -+} -+ - static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev, - const unsigned int word, u8 *value) - { -@@ -178,22 +218,48 @@ static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev, - * doesn't become available in time, reg will be 0xffffffff - * which means we return 0xff to the caller. - */ -- if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { -- reg = 0; -- rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word); -- rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 0); -- rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1); -+ switch (rt2x00dev->chip.rt) { -+ case RT6352: -+ if (WAIT_FOR_RFCSR_MT7620(rt2x00dev, ®)) { -+ reg = 0; -+ rt2x00_set_field32(®, RF_CSR_CFG_REGNUM_MT7620, -+ word); -+ rt2x00_set_field32(®, RF_CSR_CFG_WRITE_MT7620, 0); -+ rt2x00_set_field32(®, RF_CSR_CFG_BUSY_MT7620, 1); - -- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); -+ rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); - -- WAIT_FOR_RFCSR(rt2x00dev, ®); -- } -+ WAIT_FOR_RFCSR_MT7620(rt2x00dev, ®); -+ } - -- *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA); -+ *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA_MT7620); -+ break; -+ -+ default: -+ if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { -+ reg = 0; -+ rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word); -+ rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 0); -+ rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1); -+ -+ rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); -+ -+ WAIT_FOR_RFCSR(rt2x00dev, ®); -+ } -+ -+ *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA); -+ break; -+ } - - mutex_unlock(&rt2x00dev->csr_mutex); - } - -+static void rt2800_rfcsr_read_bank(struct rt2x00_dev *rt2x00dev, const u8 bank, -+ const unsigned int reg, u8 *value) -+{ -+ rt2800_rfcsr_read(rt2x00dev, (reg | (bank << 6)), value); -+} -+ - static void rt2800_rf_write(struct rt2x00_dev *rt2x00dev, - const unsigned int word, const u32 value) - { -@@ -250,6 +316,7 @@ static const unsigned int rt2800_eeprom_map[EEPROM_WORD_COUNT] = { - [EEPROM_TSSI_BOUND_BG5] = 0x003b, - [EEPROM_TXPOWER_A1] = 0x003c, - [EEPROM_TXPOWER_A2] = 0x0053, -+ [EEPROM_TXPOWER_INIT] = 0x0068, - [EEPROM_TSSI_BOUND_A1] = 0x006a, - [EEPROM_TSSI_BOUND_A2] = 0x006b, - [EEPROM_TSSI_BOUND_A3] = 0x006c, -@@ -524,6 +591,7 @@ void rt2800_get_txwi_rxwi_size(struct rt2x00_dev *rt2x00dev, - break; - - case RT5592: -+ case RT6352: - *txwi_size = TXWI_DESC_SIZE_5WORDS; - *rxwi_size = RXWI_DESC_SIZE_6WORDS; - break; -@@ -2810,7 +2878,8 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, - rt2800_rfcsr_write(rt2x00dev, 59, - r59_nonbt_rev[idx]); - } else if (rt2x00_rt(rt2x00dev, RT5390) || -- rt2x00_rt(rt2x00dev, RT5392)) { -+ rt2x00_rt(rt2x00dev, RT5392) || -+ rt2x00_rt(rt2x00dev, RT6352)) { - static const char r59_non_bt[] = {0x8f, 0x8f, - 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d, - 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86}; -@@ -3104,6 +3173,242 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev, - rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x19 : 0x7F); - } - -+static void rt2800_config_channel_rf7620(struct rt2x00_dev *rt2x00dev, -+ struct ieee80211_conf *conf, -+ struct rf_channel *rf, -+ struct channel_info *info) -+{ -+ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; -+ u8 rx_agc_fc, tx_agc_fc; -+ u8 rfcsr; -+ -+ /* Frequeny plan setting */ -+ /* Rdiv setting (set 0x03 if Xtal==20) -+ * R13[1:0] -+ */ -+ rt2800_rfcsr_read(rt2x00dev, 13, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR13_RDIV_MT7620, -+ rt2800_clk_is_20mhz(rt2x00dev) ? 3 : 0); -+ rt2800_rfcsr_write(rt2x00dev, 13, rfcsr); -+ -+ /* N setting -+ * R20[7:0] in rf->rf1 -+ * R21[0] always 0 -+ */ -+ rt2800_rfcsr_read(rt2x00dev, 20, &rfcsr); -+ rfcsr = (rf->rf1 & 0x00ff); -+ rt2800_rfcsr_write(rt2x00dev, 20, rfcsr); -+ -+ rt2800_rfcsr_read(rt2x00dev, 21, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR21_BIT1, 0); -+ rt2800_rfcsr_write(rt2x00dev, 21, rfcsr); -+ -+ /* K setting (always 0) -+ * R16[3:0] (RF PLL freq selection) -+ */ -+ rt2800_rfcsr_read(rt2x00dev, 16, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR16_RF_PLL_FREQ_SEL_MT7620, 0); -+ rt2800_rfcsr_write(rt2x00dev, 16, rfcsr); -+ -+ /* D setting (always 0) -+ * R22[2:0] (D=15, R22[2:0]=<111>) -+ */ -+ rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR22_FREQPLAN_D_MT7620, 0); -+ rt2800_rfcsr_write(rt2x00dev, 22, rfcsr); -+ -+ /* Ksd setting -+ * Ksd: R17<7:0> in rf->rf2 -+ * R18<7:0> in rf->rf3 -+ * R19<1:0> in rf->rf4 -+ */ -+ rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr); -+ rfcsr = rf->rf2; -+ rt2800_rfcsr_write(rt2x00dev, 17, rfcsr); -+ -+ rt2800_rfcsr_read(rt2x00dev, 18, &rfcsr); -+ rfcsr = rf->rf3; -+ rt2800_rfcsr_write(rt2x00dev, 18, rfcsr); -+ -+ rt2800_rfcsr_read(rt2x00dev, 19, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR19_K, rf->rf4); -+ rt2800_rfcsr_write(rt2x00dev, 19, rfcsr); -+ -+ /* Default: XO=20MHz , SDM mode */ -+ rt2800_rfcsr_read(rt2x00dev, 16, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR16_SDM_MODE_MT7620, 0x80); -+ rt2800_rfcsr_write(rt2x00dev, 16, rfcsr); -+ -+ rt2800_rfcsr_read(rt2x00dev, 21, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR21_BIT8, 1); -+ rt2800_rfcsr_write(rt2x00dev, 21, rfcsr); -+ -+ rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR1_TX2_EN_MT7620, -+ rt2x00dev->default_ant.tx_chain_num != 1); -+ rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); -+ -+ rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR2_TX2_EN_MT7620, -+ rt2x00dev->default_ant.tx_chain_num != 1); -+ rt2x00_set_field8(&rfcsr, RFCSR2_RX2_EN_MT7620, -+ rt2x00dev->default_ant.rx_chain_num != 1); -+ rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); -+ -+ rt2800_rfcsr_read(rt2x00dev, 42, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR42_TX2_EN_MT7620, -+ rt2x00dev->default_ant.tx_chain_num != 1); -+ rt2800_rfcsr_write(rt2x00dev, 42, rfcsr); -+ -+ /* RF for DC Cal BW */ -+ if (conf_is_ht40(conf)) { -+ rt2800_rfcsr_write_dccal(rt2x00dev, 6, 0x10); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 7, 0x10); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 8, 0x04); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x10); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x10); -+ } else { -+ rt2800_rfcsr_write_dccal(rt2x00dev, 6, 0x20); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 7, 0x20); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 8, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x20); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x20); -+ } -+ -+ if (conf_is_ht40(conf)) { -+ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x08); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x08); -+ } else { -+ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x28); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x28); -+ } -+ -+ rt2800_rfcsr_read(rt2x00dev, 28, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR28_CH11_HT40, -+ conf_is_ht40(conf) && (rf->channel == 11)); -+ rt2800_rfcsr_write(rt2x00dev, 28, rfcsr); -+ -+ if (!test_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags)) { -+ if (conf_is_ht40(conf)) { -+ rx_agc_fc = drv_data->rx_calibration_bw40; -+ tx_agc_fc = drv_data->tx_calibration_bw40; -+ } else { -+ rx_agc_fc = drv_data->rx_calibration_bw20; -+ tx_agc_fc = drv_data->tx_calibration_bw20; -+ } -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 6, &rfcsr); -+ rfcsr &= (~0x3F); -+ rfcsr |= rx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 6, rfcsr); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 7, &rfcsr); -+ rfcsr &= (~0x3F); -+ rfcsr |= rx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 7, rfcsr); -+ rt2800_rfcsr_read_bank(rt2x00dev, 7, 6, &rfcsr); -+ rfcsr &= (~0x3F); -+ rfcsr |= rx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 7, 6, rfcsr); -+ rt2800_rfcsr_read_bank(rt2x00dev, 7, 7, &rfcsr); -+ rfcsr &= (~0x3F); -+ rfcsr |= rx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 7, 7, rfcsr); -+ -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 58, &rfcsr); -+ rfcsr &= (~0x3F); -+ rfcsr |= tx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 58, rfcsr); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 59, &rfcsr); -+ rfcsr &= (~0x3F); -+ rfcsr |= tx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 59, rfcsr); -+ rt2800_rfcsr_read_bank(rt2x00dev, 7, 58, &rfcsr); -+ rfcsr &= (~0x3F); -+ rfcsr |= tx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 7, 58, rfcsr); -+ rt2800_rfcsr_read_bank(rt2x00dev, 7, 59, &rfcsr); -+ rfcsr &= (~0x3F); -+ rfcsr |= tx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 7, 59, rfcsr); -+ } -+} -+ -+static void rt2800_config_alc(struct rt2x00_dev *rt2x00dev, -+ struct ieee80211_channel *chan, -+ int power_level) { -+ u16 eeprom, target_power, max_power; -+ u32 mac_sys_ctrl, mac_status; -+ u32 reg; -+ u8 bbp; -+ int i; -+ -+ /* hardware unit is 0.5dBm, limited to 23.5dBm */ -+ power_level *= 2; -+ if (power_level > 0x2f) -+ power_level = 0x2f; -+ -+ max_power = chan->max_power * 2; -+ if (max_power > 0x2f) -+ max_power = 0x2f; -+ -+ rt2800_register_read(rt2x00dev, TX_ALC_CFG_0, ®); -+ rt2x00_set_field32(®, TX_ALC_CFG_0_CH_INIT_0, power_level); -+ rt2x00_set_field32(®, TX_ALC_CFG_0_CH_INIT_1, power_level); -+ rt2x00_set_field32(®, TX_ALC_CFG_0_LIMIT_0, max_power); -+ rt2x00_set_field32(®, TX_ALC_CFG_0_LIMIT_1, max_power); -+ -+ rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); -+ if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_INTERNAL_TX_ALC)) { -+ /* init base power by eeprom target power */ -+ rt2800_eeprom_read(rt2x00dev, EEPROM_TXPOWER_INIT, -+ &target_power); -+ rt2x00_set_field32(®, TX_ALC_CFG_0_CH_INIT_0, target_power); -+ rt2x00_set_field32(®, TX_ALC_CFG_0_CH_INIT_1, target_power); -+ } -+ rt2800_register_write(rt2x00dev, TX_ALC_CFG_0, reg); -+ -+ rt2800_register_read(rt2x00dev, TX_ALC_CFG_1, ®); -+ rt2x00_set_field32(®, TX_ALC_CFG_1_TX_TEMP_COMP, 0); -+ rt2800_register_write(rt2x00dev, TX_ALC_CFG_1, reg); -+ -+ /* Save MAC SYS CTRL registers */ -+ rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &mac_sys_ctrl); -+ /* Disable Tx/Rx */ -+ rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0); -+ /* Check MAC Tx/Rx idle */ -+ for (i = 0; i < 10000; i++) { -+ rt2800_register_read(rt2x00dev, MAC_STATUS_CFG, -+ &mac_status); -+ if (mac_status & 0x3) -+ usleep_range(50, 200); -+ else -+ break; -+ } -+ -+ if (i == 10000) -+ rt2x00_warn(rt2x00dev, "Wait MAC Status to MAX !!!\n"); -+ -+ if (chan->center_freq > 2457) { -+ rt2800_bbp_read(rt2x00dev, 30, &bbp); -+ bbp = 0x40; -+ rt2800_bbp_write(rt2x00dev, 30, bbp); -+ rt2800_rfcsr_write(rt2x00dev, 39, 0); -+ if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) -+ rt2800_rfcsr_write(rt2x00dev, 42, 0xfb); -+ else -+ rt2800_rfcsr_write(rt2x00dev, 42, 0x7b); -+ } else { -+ rt2800_bbp_read(rt2x00dev, 30, &bbp); -+ bbp = 0x1f; -+ rt2800_bbp_write(rt2x00dev, 30, bbp); -+ rt2800_rfcsr_write(rt2x00dev, 39, 0x80); -+ if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) -+ rt2800_rfcsr_write(rt2x00dev, 42, 0xdb); -+ else -+ rt2800_rfcsr_write(rt2x00dev, 42, 0x5b); -+ } -+ rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, mac_sys_ctrl); -+} -+ - static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev, - const unsigned int word, - const u8 value) -@@ -3228,7 +3533,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, - struct channel_info *info) - { - u32 reg; -- unsigned int tx_pin; -+ u32 tx_pin; - u8 bbp, rfcsr; - - info->default_power1 = rt2800_txpower_to_dev(rt2x00dev, rf->channel, -@@ -3273,6 +3578,9 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, - case RF5592: - rt2800_config_channel_rf55xx(rt2x00dev, conf, rf, info); - break; -+ case RF7620: -+ rt2800_config_channel_rf7620(rt2x00dev, conf, rf, info); -+ break; - default: - rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info); - } -@@ -3347,7 +3655,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, - - if (rf->channel <= 14) { - if (!rt2x00_rt(rt2x00dev, RT5390) && -- !rt2x00_rt(rt2x00dev, RT5392)) { -+ !rt2x00_rt(rt2x00dev, RT5392) && -+ !rt2x00_rt(rt2x00dev, RT6352)) { - if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { - rt2800_bbp_write(rt2x00dev, 82, 0x62); - rt2800_bbp_write(rt2x00dev, 75, 0x46); -@@ -3367,7 +3676,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, - rt2800_bbp_write(rt2x00dev, 82, 0x94); - else if (rt2x00_rt(rt2x00dev, RT3593)) - rt2800_bbp_write(rt2x00dev, 82, 0x82); -- else -+ else if (!rt2x00_rt(rt2x00dev, RT6352)) - rt2800_bbp_write(rt2x00dev, 82, 0xf2); - - if (rt2x00_rt(rt2x00dev, RT3593)) -@@ -3388,7 +3697,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, - if (rt2x00_rt(rt2x00dev, RT3572)) - rt2800_rfcsr_write(rt2x00dev, 8, 0); - -- tx_pin = 0; -+ rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin); - - switch (rt2x00dev->default_ant.tx_chain_num) { - case 3: -@@ -3437,6 +3746,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, - - rt2x00_set_field32(&tx_pin, TX_PIN_CFG_RFTR_EN, 1); - rt2x00_set_field32(&tx_pin, TX_PIN_CFG_TRSW_EN, 1); -+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_RFRX_EN, 1); /* mt7620 */ - - rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); - -@@ -3495,7 +3805,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, - usleep_range(1000, 1500); - } - -- if (rt2x00_rt(rt2x00dev, RT5592)) { -+ if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) { - rt2800_bbp_write(rt2x00dev, 195, 141); - rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a); - -@@ -4182,6 +4492,128 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev, - (unsigned long) regs[i]); - } - -+static void rt2800_config_txpower_rt6352(struct rt2x00_dev *rt2x00dev, -+ struct ieee80211_channel *chan, -+ int power_level) -+{ -+ u32 reg, pwreg; -+ u16 eeprom; -+ u32 data, gdata; -+ u8 t, i; -+ enum nl80211_band band = chan->band; -+ int delta; -+ -+ /* Warn user if bw_comp is set in EEPROM */ -+ delta = rt2800_get_txpower_bw_comp(rt2x00dev, band); -+ -+ if (delta) -+ rt2x00_warn(rt2x00dev, "ignoring EEPROM HT40 power delta: %d\n", -+ delta); -+ -+ /* populate TX_PWR_CFG_0 up to TX_PWR_CFG_4 from EEPROM for HT20, limit -+ * value to 0x3f and replace 0x20 by 0x21 as this is what the vendor -+ * driver does as well, though it looks kinda wrong. -+ * Maybe some misunderstanding of what a signed 8-bit value is? Maybe -+ * the hardware has a problem handling 0x20, and as the code initially -+ * used a fixed offset between HT20 and HT40 rates they had to work- -+ * around that issue and most likely just forgot about it later on. -+ * Maybe we should use rt2800_get_txpower_bw_comp() here as well, -+ * however, the corresponding EEPROM value is not respected by the -+ * vendor driver, so maybe this is rather being taken care of the -+ * TXALC and the driver doesn't need to handle it...? -+ * Though this is all very awkward, just do as they did, as that's what -+ * board vendors expected when they populated the EEPROM... -+ */ -+ for (i = 0; i < 5; i++) { -+ rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, -+ i * 2, &eeprom); -+ -+ data = eeprom; -+ -+ t = eeprom & 0x3f; -+ if (t == 32) -+ t++; -+ -+ gdata = t; -+ -+ t = (eeprom & 0x3f00) >> 8; -+ if (t == 32) -+ t++; -+ -+ gdata |= (t << 8); -+ -+ rt2800_eeprom_read_from_array(rt2x00dev, EEPROM_TXPOWER_BYRATE, -+ (i * 2) + 1, &eeprom); -+ -+ t = eeprom & 0x3f; -+ if (t == 32) -+ t++; -+ -+ gdata |= (t << 16); -+ -+ t = (eeprom & 0x3f00) >> 8; -+ if (t == 32) -+ t++; -+ -+ gdata |= (t << 24); -+ data |= (eeprom << 16); -+ -+ if (!test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)) { -+ /* HT20 */ -+ if (data != 0xffffffff) -+ rt2800_register_write(rt2x00dev, -+ TX_PWR_CFG_0 + (i * 4), -+ data); -+ } else { -+ /* HT40 */ -+ if (gdata != 0xffffffff) -+ rt2800_register_write(rt2x00dev, -+ TX_PWR_CFG_0 + (i * 4), -+ gdata); -+ } -+ } -+ -+ /* Aparently Ralink ran out of space in the BYRATE calibration section -+ * of the EERPOM which is copied to the corresponding TX_PWR_CFG_x -+ * registers. As recent 2T chips use 8-bit instead of 4-bit values for -+ * power-offsets more space would be needed. Ralink decided to keep the -+ * EEPROM layout untouched and rather have some shared values covering -+ * multiple bitrates. -+ * Populate the registers not covered by the EEPROM in the same way the -+ * vendor driver does. -+ */ -+ -+ /* For OFDM 54MBS use value from OFDM 48MBS */ -+ pwreg = 0; -+ rt2800_register_read(rt2x00dev, TX_PWR_CFG_1, ®); -+ t = rt2x00_get_field32(reg, TX_PWR_CFG_1B_48MBS); -+ rt2x00_set_field32(&pwreg, TX_PWR_CFG_7B_54MBS, t); -+ -+ /* For MCS 7 use value from MCS 6 */ -+ rt2800_register_read(rt2x00dev, TX_PWR_CFG_2, ®); -+ t = rt2x00_get_field32(reg, TX_PWR_CFG_2B_MCS6_MCS7); -+ rt2x00_set_field32(&pwreg, TX_PWR_CFG_7B_MCS7, t); -+ rt2800_register_write(rt2x00dev, TX_PWR_CFG_7, pwreg); -+ -+ /* For MCS 15 use value from MCS 14 */ -+ pwreg = 0; -+ rt2800_register_read(rt2x00dev, TX_PWR_CFG_3, ®); -+ t = rt2x00_get_field32(reg, TX_PWR_CFG_3B_MCS14); -+ rt2x00_set_field32(&pwreg, TX_PWR_CFG_8B_MCS15, t); -+ rt2800_register_write(rt2x00dev, TX_PWR_CFG_8, pwreg); -+ -+ /* For STBC MCS 7 use value from STBC MCS 6 */ -+ pwreg = 0; -+ rt2800_register_read(rt2x00dev, TX_PWR_CFG_4, ®); -+ t = rt2x00_get_field32(reg, TX_PWR_CFG_4B_STBC_MCS6); -+ rt2x00_set_field32(&pwreg, TX_PWR_CFG_9B_STBC_MCS7, t); -+ rt2800_register_write(rt2x00dev, TX_PWR_CFG_9, pwreg); -+ -+ rt2800_config_alc(rt2x00dev, chan, power_level); -+ -+ /* TODO: temperature compensation code! */ -+} -+ - /* - * We configure transmit power using MAC TX_PWR_CFG_{0,...,N} registers and - * BBP R1 register. TX_PWR_CFG_X allow to configure per rate TX power values, -@@ -4378,6 +4810,8 @@ static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev, - { - if (rt2x00_rt(rt2x00dev, RT3593)) - rt2800_config_txpower_rt3593(rt2x00dev, chan, power_level); -+ else if (rt2x00_rt(rt2x00dev, RT6352)) -+ rt2800_config_txpower_rt6352(rt2x00dev, chan, power_level); - else - rt2800_config_txpower_rt28xx(rt2x00dev, chan, power_level); - } -@@ -4393,6 +4827,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) - { - u32 tx_pin; - u8 rfcsr; -+ unsigned long min_sleep = 0; - - /* - * A voltage-controlled oscillator(VCO) is an electronic oscillator -@@ -4431,6 +4866,15 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) - rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); - rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1); - rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); -+ min_sleep = 1000; -+ break; -+ case RF7620: -+ rt2800_rfcsr_write(rt2x00dev, 5, 0x40); -+ rt2800_rfcsr_write(rt2x00dev, 4, 0x0C); -+ rt2800_rfcsr_read(rt2x00dev, 4, &rfcsr); -+ rt2x00_set_field8(&rfcsr, RFCSR4_VCOCAL_EN, 1); -+ rt2800_rfcsr_write(rt2x00dev, 4, rfcsr); -+ min_sleep = 2000; - break; - default: - WARN_ONCE(1, "Not supported RF chipet %x for VCO recalibration", -@@ -4438,7 +4882,8 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) - return; - } - -- usleep_range(1000, 1500); -+ if (min_sleep > 0) -+ usleep_range(min_sleep, min_sleep * 2); - - rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin); - if (rt2x00dev->rf_channel <= 14) { -@@ -4470,6 +4915,42 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) - } - rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); - -+ if (rt2x00_rt(rt2x00dev, RT6352)) { -+ if (rt2x00dev->default_ant.tx_chain_num == 1) { -+ rt2800_bbp_write(rt2x00dev, 91, 0x07); -+ rt2800_bbp_write(rt2x00dev, 95, 0x1A); -+ rt2800_bbp_write(rt2x00dev, 195, 128); -+ rt2800_bbp_write(rt2x00dev, 196, 0xA0); -+ rt2800_bbp_write(rt2x00dev, 195, 170); -+ rt2800_bbp_write(rt2x00dev, 196, 0x12); -+ rt2800_bbp_write(rt2x00dev, 195, 171); -+ rt2800_bbp_write(rt2x00dev, 196, 0x10); -+ } else { -+ rt2800_bbp_write(rt2x00dev, 91, 0x06); -+ rt2800_bbp_write(rt2x00dev, 95, 0x9A); -+ rt2800_bbp_write(rt2x00dev, 195, 128); -+ rt2800_bbp_write(rt2x00dev, 196, 0xE0); -+ rt2800_bbp_write(rt2x00dev, 195, 170); -+ rt2800_bbp_write(rt2x00dev, 196, 0x30); -+ rt2800_bbp_write(rt2x00dev, 195, 171); -+ rt2800_bbp_write(rt2x00dev, 196, 0x30); -+ } -+ -+ if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { -+ rt2800_bbp_write(rt2x00dev, 75, 0x60); -+ rt2800_bbp_write(rt2x00dev, 76, 0x44); -+ rt2800_bbp_write(rt2x00dev, 79, 0x1C); -+ rt2800_bbp_write(rt2x00dev, 80, 0x0C); -+ rt2800_bbp_write(rt2x00dev, 82, 0xB6); -+ } -+ -+ /* On 11A, We should delay and wait RF/BBP to be stable -+ * and the appropriate time should be 1000 micro seconds -+ * 2005/06/05 - On 11G, we also need this delay time. -+ * Otherwise it's difficult to pass the WHQL. -+ */ -+ usleep_range(1000, 1500); -+ } - } - EXPORT_SYMBOL_GPL(rt2800_vco_calibration); - -@@ -4568,7 +5049,8 @@ static u8 rt2800_get_default_vgc(struct rt2x00_dev *rt2x00dev) - rt2x00_rt(rt2x00dev, RT3593) || - rt2x00_rt(rt2x00dev, RT5390) || - rt2x00_rt(rt2x00dev, RT5392) || -- rt2x00_rt(rt2x00dev, RT5592)) -+ rt2x00_rt(rt2x00dev, RT5592) || -+ rt2x00_rt(rt2x00dev, RT6352)) - vgc = 0x1c + (2 * rt2x00dev->lna_gain); - else - vgc = 0x2e + rt2x00dev->lna_gain; -@@ -4795,7 +5277,8 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) - 0x00000000); - } - } else if (rt2x00_rt(rt2x00dev, RT5390) || -- rt2x00_rt(rt2x00dev, RT5392)) { -+ rt2x00_rt(rt2x00dev, RT5392) || -+ rt2x00_rt(rt2x00dev, RT6352)) { - rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); - rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); - rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); -@@ -4805,6 +5288,24 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) - rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); - } else if (rt2x00_rt(rt2x00dev, RT5350)) { - rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); -+ } else if (rt2x00_rt(rt2x00dev, RT6352)) { -+ rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000401); -+ rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x000C0000); -+ rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); -+ rt2800_register_write(rt2x00dev, MIMO_PS_CFG, 0x00000002); -+ rt2800_register_write(rt2x00dev, TX_PIN_CFG, 0x00150F0F); -+ rt2800_register_write(rt2x00dev, TX_ALC_VGA3, 0x06060606); -+ rt2800_register_write(rt2x00dev, TX0_BB_GAIN_ATTEN, 0x0); -+ rt2800_register_write(rt2x00dev, TX1_BB_GAIN_ATTEN, 0x0); -+ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_ATTEN, 0x6C6C666C); -+ rt2800_register_write(rt2x00dev, TX1_RF_GAIN_ATTEN, 0x6C6C666C); -+ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_CORRECT, -+ 0x3630363A); -+ rt2800_register_write(rt2x00dev, TX1_RF_GAIN_CORRECT, -+ 0x3630363A); -+ rt2800_register_read(rt2x00dev, TX_ALC_CFG_1, ®); -+ rt2x00_set_field32(®, TX_ALC_CFG_1_ROS_BUSY_EN, 0); -+ rt2800_register_write(rt2x00dev, TX_ALC_CFG_1, reg); - } else { - rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000); - rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); -@@ -5786,6 +6287,231 @@ static void rt2800_init_bbp_5592(struct rt2x00_dev *rt2x00dev) - rt2800_bbp_write(rt2x00dev, 103, 0xc0); - } - -+static void rt2800_bbp_glrt_write(struct rt2x00_dev *rt2x00dev, -+ const u8 reg, const u8 value) -+{ -+ rt2800_bbp_write(rt2x00dev, 195, reg); -+ rt2800_bbp_write(rt2x00dev, 196, value); -+} -+ -+static void rt2800_bbp_dcoc_write(struct rt2x00_dev *rt2x00dev, -+ const u8 reg, const u8 value) -+{ -+ rt2800_bbp_write(rt2x00dev, 158, reg); -+ rt2800_bbp_write(rt2x00dev, 159, value); -+} -+ -+static void rt2800_bbp_dcoc_read(struct rt2x00_dev *rt2x00dev, -+ const u8 reg, u8 *value) -+{ -+ rt2800_bbp_write(rt2x00dev, 158, reg); -+ rt2800_bbp_read(rt2x00dev, 159, value); -+} -+ -+static void rt2800_init_bbp_6352(struct rt2x00_dev *rt2x00dev) -+{ -+ u8 bbp; -+ -+ /* Apply Maximum Likelihood Detection (MLD) for 2 stream case */ -+ rt2800_bbp_read(rt2x00dev, 105, &bbp); -+ rt2x00_set_field8(&bbp, BBP105_MLD, -+ rt2x00dev->default_ant.rx_chain_num == 2); -+ rt2800_bbp_write(rt2x00dev, 105, bbp); -+ -+ /* Avoid data loss and CRC errors */ -+ rt2800_bbp4_mac_if_ctrl(rt2x00dev); -+ -+ /* Fix I/Q swap issue */ -+ rt2800_bbp_read(rt2x00dev, 1, &bbp); -+ bbp |= 0x04; -+ rt2800_bbp_write(rt2x00dev, 1, bbp); -+ -+ /* BBP for G band */ -+ rt2800_bbp_write(rt2x00dev, 3, 0x08); -+ rt2800_bbp_write(rt2x00dev, 4, 0x00); /* rt2800_bbp4_mac_if_ctrl? */ -+ rt2800_bbp_write(rt2x00dev, 6, 0x08); -+ rt2800_bbp_write(rt2x00dev, 14, 0x09); -+ rt2800_bbp_write(rt2x00dev, 15, 0xFF); -+ rt2800_bbp_write(rt2x00dev, 16, 0x01); -+ rt2800_bbp_write(rt2x00dev, 20, 0x06); -+ rt2800_bbp_write(rt2x00dev, 21, 0x00); -+ rt2800_bbp_write(rt2x00dev, 22, 0x00); -+ rt2800_bbp_write(rt2x00dev, 27, 0x00); -+ rt2800_bbp_write(rt2x00dev, 28, 0x00); -+ rt2800_bbp_write(rt2x00dev, 30, 0x00); -+ rt2800_bbp_write(rt2x00dev, 31, 0x48); -+ rt2800_bbp_write(rt2x00dev, 47, 0x40); -+ rt2800_bbp_write(rt2x00dev, 62, 0x00); -+ rt2800_bbp_write(rt2x00dev, 63, 0x00); -+ rt2800_bbp_write(rt2x00dev, 64, 0x00); -+ rt2800_bbp_write(rt2x00dev, 65, 0x2C); -+ rt2800_bbp_write(rt2x00dev, 66, 0x1C); -+ rt2800_bbp_write(rt2x00dev, 67, 0x20); -+ rt2800_bbp_write(rt2x00dev, 68, 0xDD); -+ rt2800_bbp_write(rt2x00dev, 69, 0x10); -+ rt2800_bbp_write(rt2x00dev, 70, 0x05); -+ rt2800_bbp_write(rt2x00dev, 73, 0x18); -+ rt2800_bbp_write(rt2x00dev, 74, 0x0F); -+ rt2800_bbp_write(rt2x00dev, 75, 0x60); -+ rt2800_bbp_write(rt2x00dev, 76, 0x44); -+ rt2800_bbp_write(rt2x00dev, 77, 0x59); -+ rt2800_bbp_write(rt2x00dev, 78, 0x1E); -+ rt2800_bbp_write(rt2x00dev, 79, 0x1C); -+ rt2800_bbp_write(rt2x00dev, 80, 0x0C); -+ rt2800_bbp_write(rt2x00dev, 81, 0x3A); -+ rt2800_bbp_write(rt2x00dev, 82, 0xB6); -+ rt2800_bbp_write(rt2x00dev, 83, 0x9A); -+ rt2800_bbp_write(rt2x00dev, 84, 0x9A); -+ rt2800_bbp_write(rt2x00dev, 86, 0x38); -+ rt2800_bbp_write(rt2x00dev, 88, 0x90); -+ rt2800_bbp_write(rt2x00dev, 91, 0x04); -+ rt2800_bbp_write(rt2x00dev, 92, 0x02); -+ rt2800_bbp_write(rt2x00dev, 95, 0x9A); -+ rt2800_bbp_write(rt2x00dev, 96, 0x00); -+ rt2800_bbp_write(rt2x00dev, 103, 0xC0); -+ rt2800_bbp_write(rt2x00dev, 104, 0x92); -+ /* FIXME BBP105 owerwrite */ -+ rt2800_bbp_write(rt2x00dev, 105, 0x3C); -+ rt2800_bbp_write(rt2x00dev, 106, 0x12); -+ rt2800_bbp_write(rt2x00dev, 109, 0x00); -+ rt2800_bbp_write(rt2x00dev, 134, 0x10); -+ rt2800_bbp_write(rt2x00dev, 135, 0xA6); -+ rt2800_bbp_write(rt2x00dev, 137, 0x04); -+ rt2800_bbp_write(rt2x00dev, 142, 0x30); -+ rt2800_bbp_write(rt2x00dev, 143, 0xF7); -+ rt2800_bbp_write(rt2x00dev, 160, 0xEC); -+ rt2800_bbp_write(rt2x00dev, 161, 0xC4); -+ rt2800_bbp_write(rt2x00dev, 162, 0x77); -+ rt2800_bbp_write(rt2x00dev, 163, 0xF9); -+ rt2800_bbp_write(rt2x00dev, 164, 0x00); -+ rt2800_bbp_write(rt2x00dev, 165, 0x00); -+ rt2800_bbp_write(rt2x00dev, 186, 0x00); -+ rt2800_bbp_write(rt2x00dev, 187, 0x00); -+ rt2800_bbp_write(rt2x00dev, 188, 0x00); -+ rt2800_bbp_write(rt2x00dev, 186, 0x00); -+ rt2800_bbp_write(rt2x00dev, 187, 0x01); -+ rt2800_bbp_write(rt2x00dev, 188, 0x00); -+ rt2800_bbp_write(rt2x00dev, 189, 0x00); -+ -+ rt2800_bbp_write(rt2x00dev, 91, 0x06); -+ rt2800_bbp_write(rt2x00dev, 92, 0x04); -+ rt2800_bbp_write(rt2x00dev, 93, 0x54); -+ rt2800_bbp_write(rt2x00dev, 99, 0x50); -+ rt2800_bbp_write(rt2x00dev, 148, 0x84); -+ rt2800_bbp_write(rt2x00dev, 167, 0x80); -+ rt2800_bbp_write(rt2x00dev, 178, 0xFF); -+ rt2800_bbp_write(rt2x00dev, 106, 0x13); -+ -+ /* BBP for G band GLRT function (BBP_128 ~ BBP_221) */ -+ rt2800_bbp_glrt_write(rt2x00dev, 0, 0x00); -+ rt2800_bbp_glrt_write(rt2x00dev, 1, 0x14); -+ rt2800_bbp_glrt_write(rt2x00dev, 2, 0x20); -+ rt2800_bbp_glrt_write(rt2x00dev, 3, 0x0A); -+ rt2800_bbp_glrt_write(rt2x00dev, 10, 0x16); -+ rt2800_bbp_glrt_write(rt2x00dev, 11, 0x06); -+ rt2800_bbp_glrt_write(rt2x00dev, 12, 0x02); -+ rt2800_bbp_glrt_write(rt2x00dev, 13, 0x07); -+ rt2800_bbp_glrt_write(rt2x00dev, 14, 0x05); -+ rt2800_bbp_glrt_write(rt2x00dev, 15, 0x09); -+ rt2800_bbp_glrt_write(rt2x00dev, 16, 0x20); -+ rt2800_bbp_glrt_write(rt2x00dev, 17, 0x08); -+ rt2800_bbp_glrt_write(rt2x00dev, 18, 0x4A); -+ rt2800_bbp_glrt_write(rt2x00dev, 19, 0x00); -+ rt2800_bbp_glrt_write(rt2x00dev, 20, 0x00); -+ rt2800_bbp_glrt_write(rt2x00dev, 128, 0xE0); -+ rt2800_bbp_glrt_write(rt2x00dev, 129, 0x1F); -+ rt2800_bbp_glrt_write(rt2x00dev, 130, 0x4F); -+ rt2800_bbp_glrt_write(rt2x00dev, 131, 0x32); -+ rt2800_bbp_glrt_write(rt2x00dev, 132, 0x08); -+ rt2800_bbp_glrt_write(rt2x00dev, 133, 0x28); -+ rt2800_bbp_glrt_write(rt2x00dev, 134, 0x19); -+ rt2800_bbp_glrt_write(rt2x00dev, 135, 0x0A); -+ rt2800_bbp_glrt_write(rt2x00dev, 138, 0x16); -+ rt2800_bbp_glrt_write(rt2x00dev, 139, 0x10); -+ rt2800_bbp_glrt_write(rt2x00dev, 140, 0x10); -+ rt2800_bbp_glrt_write(rt2x00dev, 141, 0x1A); -+ rt2800_bbp_glrt_write(rt2x00dev, 142, 0x36); -+ rt2800_bbp_glrt_write(rt2x00dev, 143, 0x2C); -+ rt2800_bbp_glrt_write(rt2x00dev, 144, 0x26); -+ rt2800_bbp_glrt_write(rt2x00dev, 145, 0x24); -+ rt2800_bbp_glrt_write(rt2x00dev, 146, 0x42); -+ rt2800_bbp_glrt_write(rt2x00dev, 147, 0x40); -+ rt2800_bbp_glrt_write(rt2x00dev, 148, 0x30); -+ rt2800_bbp_glrt_write(rt2x00dev, 149, 0x29); -+ rt2800_bbp_glrt_write(rt2x00dev, 150, 0x4C); -+ rt2800_bbp_glrt_write(rt2x00dev, 151, 0x46); -+ rt2800_bbp_glrt_write(rt2x00dev, 152, 0x3D); -+ rt2800_bbp_glrt_write(rt2x00dev, 153, 0x40); -+ rt2800_bbp_glrt_write(rt2x00dev, 154, 0x3E); -+ rt2800_bbp_glrt_write(rt2x00dev, 155, 0x38); -+ rt2800_bbp_glrt_write(rt2x00dev, 156, 0x3D); -+ rt2800_bbp_glrt_write(rt2x00dev, 157, 0x2F); -+ rt2800_bbp_glrt_write(rt2x00dev, 158, 0x3C); -+ rt2800_bbp_glrt_write(rt2x00dev, 159, 0x34); -+ rt2800_bbp_glrt_write(rt2x00dev, 160, 0x2C); -+ rt2800_bbp_glrt_write(rt2x00dev, 161, 0x2F); -+ rt2800_bbp_glrt_write(rt2x00dev, 162, 0x3C); -+ rt2800_bbp_glrt_write(rt2x00dev, 163, 0x35); -+ rt2800_bbp_glrt_write(rt2x00dev, 164, 0x2E); -+ rt2800_bbp_glrt_write(rt2x00dev, 165, 0x2F); -+ rt2800_bbp_glrt_write(rt2x00dev, 166, 0x49); -+ rt2800_bbp_glrt_write(rt2x00dev, 167, 0x41); -+ rt2800_bbp_glrt_write(rt2x00dev, 168, 0x36); -+ rt2800_bbp_glrt_write(rt2x00dev, 169, 0x39); -+ rt2800_bbp_glrt_write(rt2x00dev, 170, 0x30); -+ rt2800_bbp_glrt_write(rt2x00dev, 171, 0x30); -+ rt2800_bbp_glrt_write(rt2x00dev, 172, 0x0E); -+ rt2800_bbp_glrt_write(rt2x00dev, 173, 0x0D); -+ rt2800_bbp_glrt_write(rt2x00dev, 174, 0x28); -+ rt2800_bbp_glrt_write(rt2x00dev, 175, 0x21); -+ rt2800_bbp_glrt_write(rt2x00dev, 176, 0x1C); -+ rt2800_bbp_glrt_write(rt2x00dev, 177, 0x16); -+ rt2800_bbp_glrt_write(rt2x00dev, 178, 0x50); -+ rt2800_bbp_glrt_write(rt2x00dev, 179, 0x4A); -+ rt2800_bbp_glrt_write(rt2x00dev, 180, 0x43); -+ rt2800_bbp_glrt_write(rt2x00dev, 181, 0x50); -+ rt2800_bbp_glrt_write(rt2x00dev, 182, 0x10); -+ rt2800_bbp_glrt_write(rt2x00dev, 183, 0x10); -+ rt2800_bbp_glrt_write(rt2x00dev, 184, 0x10); -+ rt2800_bbp_glrt_write(rt2x00dev, 185, 0x10); -+ rt2800_bbp_glrt_write(rt2x00dev, 200, 0x7D); -+ rt2800_bbp_glrt_write(rt2x00dev, 201, 0x14); -+ rt2800_bbp_glrt_write(rt2x00dev, 202, 0x32); -+ rt2800_bbp_glrt_write(rt2x00dev, 203, 0x2C); -+ rt2800_bbp_glrt_write(rt2x00dev, 204, 0x36); -+ rt2800_bbp_glrt_write(rt2x00dev, 205, 0x4C); -+ rt2800_bbp_glrt_write(rt2x00dev, 206, 0x43); -+ rt2800_bbp_glrt_write(rt2x00dev, 207, 0x2C); -+ rt2800_bbp_glrt_write(rt2x00dev, 208, 0x2E); -+ rt2800_bbp_glrt_write(rt2x00dev, 209, 0x36); -+ rt2800_bbp_glrt_write(rt2x00dev, 210, 0x30); -+ rt2800_bbp_glrt_write(rt2x00dev, 211, 0x6E); -+ -+ /* BBP for G band DCOC function */ -+ rt2800_bbp_dcoc_write(rt2x00dev, 140, 0x0C); -+ rt2800_bbp_dcoc_write(rt2x00dev, 141, 0x00); -+ rt2800_bbp_dcoc_write(rt2x00dev, 142, 0x10); -+ rt2800_bbp_dcoc_write(rt2x00dev, 143, 0x10); -+ rt2800_bbp_dcoc_write(rt2x00dev, 144, 0x10); -+ rt2800_bbp_dcoc_write(rt2x00dev, 145, 0x10); -+ rt2800_bbp_dcoc_write(rt2x00dev, 146, 0x08); -+ rt2800_bbp_dcoc_write(rt2x00dev, 147, 0x40); -+ rt2800_bbp_dcoc_write(rt2x00dev, 148, 0x04); -+ rt2800_bbp_dcoc_write(rt2x00dev, 149, 0x04); -+ rt2800_bbp_dcoc_write(rt2x00dev, 150, 0x08); -+ rt2800_bbp_dcoc_write(rt2x00dev, 151, 0x08); -+ rt2800_bbp_dcoc_write(rt2x00dev, 152, 0x03); -+ rt2800_bbp_dcoc_write(rt2x00dev, 153, 0x03); -+ rt2800_bbp_dcoc_write(rt2x00dev, 154, 0x03); -+ rt2800_bbp_dcoc_write(rt2x00dev, 155, 0x02); -+ rt2800_bbp_dcoc_write(rt2x00dev, 156, 0x40); -+ rt2800_bbp_dcoc_write(rt2x00dev, 157, 0x40); -+ rt2800_bbp_dcoc_write(rt2x00dev, 158, 0x64); -+ rt2800_bbp_dcoc_write(rt2x00dev, 159, 0x64); -+ -+ rt2800_bbp4_mac_if_ctrl(rt2x00dev); -+} -+ - static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) - { - unsigned int i; -@@ -5830,6 +6556,9 @@ static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) - case RT5592: - rt2800_init_bbp_5592(rt2x00dev); - return; -+ case RT6352: -+ rt2800_init_bbp_6352(rt2x00dev); -+ break; - } - - for (i = 0; i < EEPROM_BBP_SIZE; i++) { -@@ -6901,6 +7630,615 @@ static void rt2800_init_rfcsr_5592(struct rt2x00_dev *rt2x00dev) - rt2800_led_open_drain_enable(rt2x00dev); - } - -+static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev, -+ bool set_bw, bool is_ht40) -+{ -+ u8 bbp_val; -+ -+ rt2800_bbp_read(rt2x00dev, 21, &bbp_val); -+ bbp_val |= 0x1; -+ rt2800_bbp_write(rt2x00dev, 21, bbp_val); -+ usleep_range(100, 200); -+ -+ if (set_bw) { -+ rt2800_bbp_read(rt2x00dev, 4, &bbp_val); -+ rt2x00_set_field8(&bbp_val, BBP4_BANDWIDTH, 2 * is_ht40); -+ rt2800_bbp_write(rt2x00dev, 4, bbp_val); -+ usleep_range(100, 200); -+ } -+ -+ rt2800_bbp_read(rt2x00dev, 21, &bbp_val); -+ bbp_val &= (~0x1); -+ rt2800_bbp_write(rt2x00dev, 21, bbp_val); -+ usleep_range(100, 200); -+} -+ -+static int rt2800_rf_lp_config(struct rt2x00_dev *rt2x00dev, bool btxcal) -+{ -+ u8 rf_val; -+ -+ if (btxcal) -+ rt2800_register_write(rt2x00dev, RF_CONTROL0, 0x04); -+ else -+ rt2800_register_write(rt2x00dev, RF_CONTROL0, 0x02); -+ -+ rt2800_register_write(rt2x00dev, RF_BYPASS0, 0x06); -+ -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 17, &rf_val); -+ rf_val |= 0x80; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 17, rf_val); -+ -+ if (btxcal) { -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 18, 0xC1); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 19, 0x20); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 20, 0x02); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 3, &rf_val); -+ rf_val &= (~0x3F); -+ rf_val |= 0x3F; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 3, rf_val); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 4, &rf_val); -+ rf_val &= (~0x3F); -+ rf_val |= 0x3F; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 4, rf_val); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 5, 0x31); -+ } else { -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 18, 0xF1); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 19, 0x18); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 20, 0x02); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 3, &rf_val); -+ rf_val &= (~0x3F); -+ rf_val |= 0x34; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 3, rf_val); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 4, &rf_val); -+ rf_val &= (~0x3F); -+ rf_val |= 0x34; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 4, rf_val); -+ } -+ -+ return 0; -+} -+ -+static char rt2800_lp_tx_filter_bw_cal(struct rt2x00_dev *rt2x00dev) -+{ -+ unsigned int cnt; -+ u8 bbp_val; -+ char cal_val; -+ -+ rt2800_bbp_dcoc_write(rt2x00dev, 0, 0x82); -+ -+ cnt = 0; -+ do { -+ usleep_range(500, 2000); -+ rt2800_bbp_read(rt2x00dev, 159, &bbp_val); -+ if (bbp_val == 0x02 || cnt == 20) -+ break; -+ -+ cnt++; -+ } while (cnt < 20); -+ -+ rt2800_bbp_dcoc_read(rt2x00dev, 0x39, &bbp_val); -+ cal_val = bbp_val & 0x7F; -+ if (cal_val >= 0x40) -+ cal_val -= 128; -+ -+ return cal_val; -+} -+ -+static void rt2800_bw_filter_calibration(struct rt2x00_dev *rt2x00dev, -+ bool btxcal) -+{ -+ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; -+ u8 tx_agc_fc = 0, rx_agc_fc = 0, cmm_agc_fc; -+ u8 filter_target; -+ u8 tx_filter_target_20m = 0x09, tx_filter_target_40m = 0x02; -+ u8 rx_filter_target_20m = 0x27, rx_filter_target_40m = 0x31; -+ int loop = 0, is_ht40, cnt; -+ u8 bbp_val, rf_val; -+ char cal_r32_init, cal_r32_val, cal_diff; -+ u8 saverfb5r00, saverfb5r01, saverfb5r03, saverfb5r04, saverfb5r05; -+ u8 saverfb5r06, saverfb5r07; -+ u8 saverfb5r08, saverfb5r17, saverfb5r18, saverfb5r19, saverfb5r20; -+ u8 saverfb5r37, saverfb5r38, saverfb5r39, saverfb5r40, saverfb5r41; -+ u8 saverfb5r42, saverfb5r43, saverfb5r44, saverfb5r45, saverfb5r46; -+ u8 saverfb5r58, saverfb5r59; -+ u8 savebbp159r0, savebbp159r2, savebbpr23; -+ u32 MAC_RF_CONTROL0, MAC_RF_BYPASS0; -+ -+ /* Save MAC registers */ -+ rt2800_register_read(rt2x00dev, RF_CONTROL0, &MAC_RF_CONTROL0); -+ rt2800_register_read(rt2x00dev, RF_BYPASS0, &MAC_RF_BYPASS0); -+ -+ /* save BBP registers */ -+ rt2800_bbp_read(rt2x00dev, 23, &savebbpr23); -+ -+ rt2800_bbp_dcoc_read(rt2x00dev, 0, &savebbp159r0); -+ rt2800_bbp_dcoc_read(rt2x00dev, 2, &savebbp159r2); -+ -+ /* Save RF registers */ -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 0, &saverfb5r00); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 1, &saverfb5r01); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 3, &saverfb5r03); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 4, &saverfb5r04); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 5, &saverfb5r05); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 6, &saverfb5r06); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 7, &saverfb5r07); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 8, &saverfb5r08); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 17, &saverfb5r17); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 18, &saverfb5r18); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 19, &saverfb5r19); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 20, &saverfb5r20); -+ -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 37, &saverfb5r37); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 38, &saverfb5r38); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 39, &saverfb5r39); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 40, &saverfb5r40); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 41, &saverfb5r41); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 42, &saverfb5r42); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 43, &saverfb5r43); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 44, &saverfb5r44); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 45, &saverfb5r45); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 46, &saverfb5r46); -+ -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 58, &saverfb5r58); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 59, &saverfb5r59); -+ -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 0, &rf_val); -+ rf_val |= 0x3; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 0, rf_val); -+ -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 1, &rf_val); -+ rf_val |= 0x1; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 1, rf_val); -+ -+ cnt = 0; -+ do { -+ usleep_range(500, 2000); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 1, &rf_val); -+ if (((rf_val & 0x1) == 0x00) || (cnt == 40)) -+ break; -+ cnt++; -+ } while (cnt < 40); -+ -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 0, &rf_val); -+ rf_val &= (~0x3); -+ rf_val |= 0x1; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 0, rf_val); -+ -+ /* I-3 */ -+ rt2800_bbp_read(rt2x00dev, 23, &bbp_val); -+ bbp_val &= (~0x1F); -+ bbp_val |= 0x10; -+ rt2800_bbp_write(rt2x00dev, 23, bbp_val); -+ -+ do { -+ /* I-4,5,6,7,8,9 */ -+ if (loop == 0) { -+ is_ht40 = false; -+ -+ if (btxcal) -+ filter_target = tx_filter_target_20m; -+ else -+ filter_target = rx_filter_target_20m; -+ } else { -+ is_ht40 = true; -+ -+ if (btxcal) -+ filter_target = tx_filter_target_40m; -+ else -+ filter_target = rx_filter_target_40m; -+ } -+ -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 8, &rf_val); -+ rf_val &= (~0x04); -+ if (loop == 1) -+ rf_val |= 0x4; -+ -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 8, rf_val); -+ -+ rt2800_bbp_core_soft_reset(rt2x00dev, true, is_ht40); -+ -+ rt2800_rf_lp_config(rt2x00dev, btxcal); -+ if (btxcal) { -+ tx_agc_fc = 0; -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 58, &rf_val); -+ rf_val &= (~0x7F); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 58, rf_val); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 59, &rf_val); -+ rf_val &= (~0x7F); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 59, rf_val); -+ } else { -+ rx_agc_fc = 0; -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 6, &rf_val); -+ rf_val &= (~0x7F); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 6, rf_val); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 7, &rf_val); -+ rf_val &= (~0x7F); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 7, rf_val); -+ } -+ -+ usleep_range(1000, 2000); -+ -+ rt2800_bbp_dcoc_read(rt2x00dev, 2, &bbp_val); -+ bbp_val &= (~0x6); -+ rt2800_bbp_dcoc_write(rt2x00dev, 2, bbp_val); -+ -+ rt2800_bbp_core_soft_reset(rt2x00dev, false, is_ht40); -+ -+ cal_r32_init = rt2800_lp_tx_filter_bw_cal(rt2x00dev); -+ -+ rt2800_bbp_dcoc_read(rt2x00dev, 2, &bbp_val); -+ bbp_val |= 0x6; -+ rt2800_bbp_dcoc_write(rt2x00dev, 2, bbp_val); -+do_cal: -+ if (btxcal) { -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 58, &rf_val); -+ rf_val &= (~0x7F); -+ rf_val |= tx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 58, rf_val); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 59, &rf_val); -+ rf_val &= (~0x7F); -+ rf_val |= tx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 59, rf_val); -+ } else { -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 6, &rf_val); -+ rf_val &= (~0x7F); -+ rf_val |= rx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 6, rf_val); -+ rt2800_rfcsr_read_bank(rt2x00dev, 5, 7, &rf_val); -+ rf_val &= (~0x7F); -+ rf_val |= rx_agc_fc; -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 7, rf_val); -+ } -+ -+ usleep_range(500, 1000); -+ -+ rt2800_bbp_core_soft_reset(rt2x00dev, false, is_ht40); -+ -+ cal_r32_val = rt2800_lp_tx_filter_bw_cal(rt2x00dev); -+ -+ cal_diff = cal_r32_init - cal_r32_val; -+ -+ if (btxcal) -+ cmm_agc_fc = tx_agc_fc; -+ else -+ cmm_agc_fc = rx_agc_fc; -+ -+ if (((cal_diff > filter_target) && (cmm_agc_fc == 0)) || -+ ((cal_diff < filter_target) && (cmm_agc_fc == 0x3f))) { -+ if (btxcal) -+ tx_agc_fc = 0; -+ else -+ rx_agc_fc = 0; -+ } else if ((cal_diff <= filter_target) && (cmm_agc_fc < 0x3f)) { -+ if (btxcal) -+ tx_agc_fc++; -+ else -+ rx_agc_fc++; -+ goto do_cal; -+ } -+ -+ if (btxcal) { -+ if (loop == 0) -+ drv_data->tx_calibration_bw20 = tx_agc_fc; -+ else -+ drv_data->tx_calibration_bw40 = tx_agc_fc; -+ } else { -+ if (loop == 0) -+ drv_data->rx_calibration_bw20 = rx_agc_fc; -+ else -+ drv_data->rx_calibration_bw40 = rx_agc_fc; -+ } -+ -+ loop++; -+ } while (loop <= 1); -+ -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 0, saverfb5r00); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 1, saverfb5r01); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 3, saverfb5r03); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 4, saverfb5r04); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 5, saverfb5r05); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 6, saverfb5r06); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 7, saverfb5r07); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 8, saverfb5r08); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 17, saverfb5r17); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 18, saverfb5r18); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 19, saverfb5r19); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 20, saverfb5r20); -+ -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 37, saverfb5r37); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 38, saverfb5r38); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 39, saverfb5r39); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 40, saverfb5r40); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 41, saverfb5r41); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 42, saverfb5r42); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 43, saverfb5r43); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 44, saverfb5r44); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 45, saverfb5r45); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 46, saverfb5r46); -+ -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 58, saverfb5r58); -+ rt2800_rfcsr_write_bank(rt2x00dev, 5, 59, saverfb5r59); -+ -+ rt2800_bbp_write(rt2x00dev, 23, savebbpr23); -+ -+ rt2800_bbp_dcoc_write(rt2x00dev, 0, savebbp159r0); -+ rt2800_bbp_dcoc_write(rt2x00dev, 2, savebbp159r2); -+ -+ rt2800_bbp_read(rt2x00dev, 4, &bbp_val); -+ rt2x00_set_field8(&bbp_val, BBP4_BANDWIDTH, -+ 2 * test_bit(CONFIG_CHANNEL_HT40, &rt2x00dev->flags)); -+ rt2800_bbp_write(rt2x00dev, 4, bbp_val); -+ -+ rt2800_register_write(rt2x00dev, RF_CONTROL0, MAC_RF_CONTROL0); -+ rt2800_register_write(rt2x00dev, RF_BYPASS0, MAC_RF_BYPASS0); -+} -+ -+static void rt2800_init_rfcsr_6352(struct rt2x00_dev *rt2x00dev) -+{ -+ /* Initialize RF central register to default value */ -+ rt2800_rfcsr_write(rt2x00dev, 0, 0x02); -+ rt2800_rfcsr_write(rt2x00dev, 1, 0x03); -+ rt2800_rfcsr_write(rt2x00dev, 2, 0x33); -+ rt2800_rfcsr_write(rt2x00dev, 3, 0xFF); -+ rt2800_rfcsr_write(rt2x00dev, 4, 0x0C); -+ rt2800_rfcsr_write(rt2x00dev, 5, 0x40); -+ rt2800_rfcsr_write(rt2x00dev, 6, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 7, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 8, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 9, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 10, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 11, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 12, rt2x00dev->freq_offset); -+ rt2800_rfcsr_write(rt2x00dev, 13, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 14, 0x40); -+ rt2800_rfcsr_write(rt2x00dev, 15, 0x22); -+ rt2800_rfcsr_write(rt2x00dev, 16, 0x4C); -+ rt2800_rfcsr_write(rt2x00dev, 17, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 18, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 19, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 20, 0xA0); -+ rt2800_rfcsr_write(rt2x00dev, 21, 0x12); -+ rt2800_rfcsr_write(rt2x00dev, 22, 0x07); -+ rt2800_rfcsr_write(rt2x00dev, 23, 0x13); -+ rt2800_rfcsr_write(rt2x00dev, 24, 0xFE); -+ rt2800_rfcsr_write(rt2x00dev, 25, 0x24); -+ rt2800_rfcsr_write(rt2x00dev, 26, 0x7A); -+ rt2800_rfcsr_write(rt2x00dev, 27, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 28, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 29, 0x05); -+ rt2800_rfcsr_write(rt2x00dev, 30, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 31, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 32, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 33, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 34, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 35, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 36, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 37, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 38, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 39, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 40, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 41, 0xD0); -+ rt2800_rfcsr_write(rt2x00dev, 42, 0x5B); -+ rt2800_rfcsr_write(rt2x00dev, 43, 0x00); -+ -+ rt2800_rfcsr_write(rt2x00dev, 11, 0x21); -+ if (rt2800_clk_is_20mhz(rt2x00dev)) -+ rt2800_rfcsr_write(rt2x00dev, 13, 0x03); -+ else -+ rt2800_rfcsr_write(rt2x00dev, 13, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 14, 0x7C); -+ rt2800_rfcsr_write(rt2x00dev, 16, 0x80); -+ rt2800_rfcsr_write(rt2x00dev, 17, 0x99); -+ rt2800_rfcsr_write(rt2x00dev, 18, 0x99); -+ rt2800_rfcsr_write(rt2x00dev, 19, 0x09); -+ rt2800_rfcsr_write(rt2x00dev, 20, 0x50); -+ rt2800_rfcsr_write(rt2x00dev, 21, 0xB0); -+ rt2800_rfcsr_write(rt2x00dev, 22, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 23, 0x06); -+ rt2800_rfcsr_write(rt2x00dev, 24, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 25, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 26, 0x5D); -+ rt2800_rfcsr_write(rt2x00dev, 27, 0x00); -+ rt2800_rfcsr_write(rt2x00dev, 28, 0x61); -+ rt2800_rfcsr_write(rt2x00dev, 29, 0xB5); -+ rt2800_rfcsr_write(rt2x00dev, 43, 0x02); -+ -+ rt2800_rfcsr_write(rt2x00dev, 28, 0x62); -+ rt2800_rfcsr_write(rt2x00dev, 29, 0xAD); -+ rt2800_rfcsr_write(rt2x00dev, 39, 0x80); -+ -+ /* Initialize RF channel register to default value */ -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 0, 0x03); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 1, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 2, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 3, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 4, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 5, 0x08); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 6, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 7, 0x51); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 8, 0x53); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 9, 0x16); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 10, 0x61); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 11, 0x53); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 12, 0x22); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 13, 0x3D); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 14, 0x06); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 15, 0x13); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 16, 0x22); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 17, 0x27); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 18, 0x02); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 19, 0xA7); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 20, 0x01); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 21, 0x52); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 22, 0x80); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 23, 0xB3); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 24, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 25, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 26, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 27, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 28, 0x5C); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 29, 0x6B); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 30, 0x6B); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 31, 0x31); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 32, 0x5D); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 33, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 34, 0xE6); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 35, 0x55); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 36, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 37, 0xBB); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 38, 0xB3); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 39, 0xB3); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 40, 0x03); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 41, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 42, 0x00); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0xB3); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xD3); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xD5); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x07); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x68); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xEF); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 49, 0x1C); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x07); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0xA8); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0x85); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x10); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x07); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0x6A); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0x85); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 61, 0x10); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 62, 0x1C); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 63, 0x00); -+ -+ rt2800_rfcsr_write_bank(rt2x00dev, 6, 45, 0xC5); -+ -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 9, 0x47); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 10, 0x71); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 11, 0x33); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 14, 0x0E); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 17, 0x23); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 19, 0xA4); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 20, 0x02); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 21, 0x12); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 28, 0x1C); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 29, 0xEB); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 32, 0x7D); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 34, 0xD6); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 36, 0x08); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 38, 0xB4); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0xD3); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xB3); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xD5); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x69); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xFF); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x20); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xFF); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x1C); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x20); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0x6B); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0xF7); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 61, 0x09); -+ -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 10, 0x51); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 14, 0x06); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 19, 0xA7); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 28, 0x2C); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x64); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 8, 0x51); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 9, 0x36); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 11, 0x53); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 14, 0x16); -+ -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x6C); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xFC); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 49, 0x1F); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x27); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0x6B); -+ -+ /* Initialize RF channel register for DRQFN */ -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0xD3); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xE3); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xE5); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x28); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x68); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xF7); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x02); -+ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0xC7); -+ -+ /* Initialize RF DC calibration register to default value */ -+ rt2800_rfcsr_write_dccal(rt2x00dev, 0, 0x47); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 1, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 2, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 3, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 4, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 6, 0x10); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 7, 0x10); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 8, 0x04); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 9, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 10, 0x07); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 11, 0x01); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 12, 0x07); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 13, 0x07); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 14, 0x07); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 15, 0x20); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 16, 0x22); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 18, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 19, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 20, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 21, 0xF1); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 22, 0x11); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 23, 0x02); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 24, 0x41); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 25, 0x20); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 26, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 27, 0xD7); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 28, 0xA2); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 29, 0x20); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 30, 0x49); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 31, 0x20); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 32, 0x04); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 33, 0xF1); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 34, 0xA1); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 35, 0x01); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 41, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 42, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 43, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 44, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 45, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 46, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 47, 0x3E); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 48, 0x3D); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 49, 0x3E); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 50, 0x3D); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 51, 0x3E); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 52, 0x3D); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 53, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 54, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 55, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 56, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 57, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x10); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x10); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 60, 0x0A); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 61, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 62, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 63, 0x00); -+ -+ rt2800_rfcsr_write_dccal(rt2x00dev, 3, 0x08); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 4, 0x04); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x20); -+ -+ rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00); -+ rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C); -+ -+ rt2800_bw_filter_calibration(rt2x00dev, true); -+ rt2800_bw_filter_calibration(rt2x00dev, false); -+} -+ - static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) - { - if (rt2800_is_305x_soc(rt2x00dev)) { -@@ -6941,6 +8279,9 @@ static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) - case RT5592: - rt2800_init_rfcsr_5592(rt2x00dev); - break; -+ case RT6352: -+ rt2800_init_rfcsr_6352(rt2x00dev); -+ break; - } - } - -@@ -7307,7 +8648,8 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) - */ - if (rt2x00_rt(rt2x00dev, RT3290) || - rt2x00_rt(rt2x00dev, RT5390) || -- rt2x00_rt(rt2x00dev, RT5392)) -+ rt2x00_rt(rt2x00dev, RT5392) || -+ rt2x00_rt(rt2x00dev, RT6352)) - rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); - else if (rt2x00_rt(rt2x00dev, RT3352)) - rf = RF3322; -@@ -7339,6 +8681,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) - case RF5390: - case RF5392: - case RF5592: -+ case RF7620: - break; - default: - rt2x00_err(rt2x00dev, "Invalid RF chipset 0x%04x detected\n", -@@ -7746,6 +9089,23 @@ static const struct rf_channel rf_vals_5592_xtal40[] = { - {196, 83, 0, 12, 1}, - }; - -+static const struct rf_channel rf_vals_7620[] = { -+ {1, 0x50, 0x99, 0x99, 1}, -+ {2, 0x50, 0x44, 0x44, 2}, -+ {3, 0x50, 0xEE, 0xEE, 2}, -+ {4, 0x50, 0x99, 0x99, 3}, -+ {5, 0x51, 0x44, 0x44, 0}, -+ {6, 0x51, 0xEE, 0xEE, 0}, -+ {7, 0x51, 0x99, 0x99, 1}, -+ {8, 0x51, 0x44, 0x44, 2}, -+ {9, 0x51, 0xEE, 0xEE, 2}, -+ {10, 0x51, 0x99, 0x99, 3}, -+ {11, 0x52, 0x44, 0x44, 0}, -+ {12, 0x52, 0xEE, 0xEE, 0}, -+ {13, 0x52, 0x99, 0x99, 1}, -+ {14, 0x52, 0x33, 0x33, 3}, -+}; -+ - static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) - { - struct hw_mode_spec *spec = &rt2x00dev->spec; -@@ -7849,6 +9209,11 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) - spec->channels = rf_vals_3x; - break; - -+ case RF7620: -+ spec->num_channels = ARRAY_SIZE(rf_vals_7620); -+ spec->channels = rf_vals_7620; -+ break; -+ - case RF3052: - case RF3053: - spec->num_channels = ARRAY_SIZE(rf_vals_3x); -@@ -7980,6 +9345,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) - case RF5390: - case RF5392: - case RF5592: -+ case RF7620: - __set_bit(CAPABILITY_VCO_RECALIBRATION, &rt2x00dev->cap_flags); - break; - } -@@ -8024,6 +9390,9 @@ static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev) - return -ENODEV; - } - -+ if (rt == RT5390 && rt2x00_is_soc(rt2x00dev)) -+ rt = RT6352; -+ - rt2x00_set_rt(rt2x00dev, rt, rev); - - return 0; -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -index d9ef260d542a..f357531d9488 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -@@ -33,6 +33,10 @@ - struct rt2800_drv_data { - u8 calibration_bw20; - u8 calibration_bw40; -+ char rx_calibration_bw20; -+ char rx_calibration_bw40; -+ char tx_calibration_bw20; -+ char tx_calibration_bw40; - u8 bbp25; - u8 bbp26; - u8 txmixer_gain_24g; -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -index ce340bfd71a0..8fdd2f9726ee 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -@@ -174,6 +174,7 @@ struct rt2x00_chip { - #define RT5390 0x5390 /* 2.4GHz */ - #define RT5392 0x5392 /* 2.4GHz */ - #define RT5592 0x5592 -+#define RT6352 0x6352 /* WSOC 2.4GHz */ - - u16 rf; - u16 rev; --- -2.12.1 - diff --git a/package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch b/package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch deleted file mode 100644 index 3270ea2c56..0000000000 --- a/package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 0109238d62a99ea779a7e28e21868118e7b8d69d Mon Sep 17 00:00:00 2001 -From: Daniel Golle -Date: Mon, 10 Apr 2017 14:28:14 +0200 -Subject: [PATCH 1/2] rt2800: fix LNA gain assignment for MT7620 -To: Stanislaw Gruszka -Cc: Helmut Schaa , - linux-wireless@vger.kernel.org, - Kalle Valo - -The base value used for MT7620 differs from Rt5392 which resulted in -quite bad RX signal quality. Fix this by using the correct base value as -well as the LNA calibration values for HT20. - -Reported-by: Tom Psyborg -Signed-off-by: Daniel Golle ---- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 18 ++++++++++++++++-- - 1 file changed, 16 insertions(+), 2 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index ba06ac2d876d..7135519a638c 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -3806,11 +3806,25 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, - } - - if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) { -+ reg = 0x10; -+ if (!conf_is_ht40(conf)) { -+ if (rt2x00_rt(rt2x00dev, RT6352) && -+ rt2x00_has_cap_external_lna_bg(rt2x00dev)) { -+ reg |= 0x5; -+ } else { -+ reg |= 0xa; -+ } -+ } - rt2800_bbp_write(rt2x00dev, 195, 141); -- rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a); -+ rt2800_bbp_write(rt2x00dev, 196, reg); - - /* AGC init */ -- reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain; -+ if (rt2x00_rt(rt2x00dev, RT6352)) -+ reg = 0x04; -+ else -+ reg = rf->channel <= 14 ? 0x1c : 0x24; -+ -+ reg += 2 * rt2x00dev->lna_gain; - rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); - - rt2800_iq_calibrate(rt2x00dev, rf->channel); --- -2.12.2 - diff --git a/package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch b/package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch deleted file mode 100644 index 1dafb78f1c..0000000000 --- a/package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch +++ /dev/null @@ -1,34 +0,0 @@ -From feb608c7986c14bab153f31f8e96f251072e6578 Mon Sep 17 00:00:00 2001 -From: Daniel Golle -Date: Mon, 10 Apr 2017 15:33:20 +0200 -Subject: [PATCH 2/2] rt2800: do VCO calibration after programming ALC -To: Stanislaw Gruszka -Cc: Helmut Schaa , - linux-wireless@vger.kernel.org, - Kalle Valo - -Scanning fails if we don't do VCO calibration every time. -The vendor driver duplicates the VCO calibration function into the -channel switching logic, we can do the same with less duplication. - -Signed-off-by: Daniel Golle ---- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 7135519a638c..870bf315f98b 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -3407,6 +3407,8 @@ static void rt2800_config_alc(struct rt2x00_dev *rt2x00dev, - rt2800_rfcsr_write(rt2x00dev, 42, 0x5b); - } - rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, mac_sys_ctrl); -+ -+ rt2800_vco_calibration(rt2x00dev); - } - - static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev, --- -2.12.2 - diff --git a/package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch b/package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch deleted file mode 100644 index 708b0b2d31..0000000000 --- a/package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 02c452f317b4a4d06c433c294e66896a389731c1 Mon Sep 17 00:00:00 2001 -From: Daniel Golle -Date: Tue, 18 Apr 2017 11:09:53 +0200 -Subject: [PATCH] rt2800: fix mt7620 vco calibration registers -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit -To: Stanislaw Gruszka -Cc: Helmut Schaa , - linux-wireless@vger.kernel.org, - Kalle Valo , - Tom Psyborg - -Use register values from init LNA function instead of the ones from -restore LNA function. Apply register values based on rx path -configuration. - -Signed-off-by: Tomislav Požega -Signed-off-by: Daniel Golle ---- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 870bf315f98b..86cffee6876a 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -4932,7 +4932,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) - rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); - - if (rt2x00_rt(rt2x00dev, RT6352)) { -- if (rt2x00dev->default_ant.tx_chain_num == 1) { -+ if (rt2x00dev->default_ant.rx_chain_num == 1) { - rt2800_bbp_write(rt2x00dev, 91, 0x07); - rt2800_bbp_write(rt2x00dev, 95, 0x1A); - rt2800_bbp_write(rt2x00dev, 195, 128); -@@ -4953,8 +4953,8 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) - } - - if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { -- rt2800_bbp_write(rt2x00dev, 75, 0x60); -- rt2800_bbp_write(rt2x00dev, 76, 0x44); -+ rt2800_bbp_write(rt2x00dev, 75, 0x68); -+ rt2800_bbp_write(rt2x00dev, 76, 0x4C); - rt2800_bbp_write(rt2x00dev, 79, 0x1C); - rt2800_bbp_write(rt2x00dev, 80, 0x0C); - rt2800_bbp_write(rt2x00dev, 82, 0xB6); --- -2.12.2 - diff --git a/package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch b/package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch deleted file mode 100644 index 284a347f25..0000000000 --- a/package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch +++ /dev/null @@ -1,41 +0,0 @@ -From c426cb0ed15ee12dfdc8c53ddd1449ac617023cf Mon Sep 17 00:00:00 2001 -From: Daniel Golle -Date: Tue, 18 Apr 2017 11:45:37 +0200 -Subject: [PATCH] rt2800: fix mt7620 E2 channel registers -To: Stanislaw Gruszka -Cc: Helmut Schaa , - linux-wireless@vger.kernel.org, - Kalle Valo , - Tom Psyborg - -From: Tomislav Požega - -update RF register 47 and 54 values according to vendor driver - -Signed-off-by: Tomislav Požega -Signed-off-by: Daniel Golle ---- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 86cffee6876a..8585cdc3de53 100644 ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -8145,9 +8145,11 @@ static void rt2800_init_rfcsr_6352(struct rt2x00_dev *rt2x00dev) - rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xB3); - rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xD5); - rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27); -- rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x69); -+ rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0x67); -+ rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0x69); - rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xFF); -- rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x20); -+ rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27); -+ rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x20); - rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66); - rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xFF); - rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x1C); --- -2.12.2 - diff --git a/package/kernel/mac80211/patches/040-brcmutil_option.patch b/package/kernel/mac80211/patches/040-brcmutil_option.patch new file mode 100644 index 0000000000..167332d916 --- /dev/null +++ b/package/kernel/mac80211/patches/040-brcmutil_option.patch @@ -0,0 +1,9 @@ +--- a/drivers/net/wireless/broadcom/brcm80211/Kconfig ++++ b/drivers/net/wireless/broadcom/brcm80211/Kconfig +@@ -1,5 +1,5 @@ + config BRCMUTIL +- tristate ++ tristate "Broadcom 802.11 driver utility functions" + depends on m + + config BRCMSMAC diff --git a/package/kernel/mac80211/patches/050-lib80211_option.patch b/package/kernel/mac80211/patches/050-lib80211_option.patch index 3fc8c05207..28a0d905b7 100644 --- a/package/kernel/mac80211/patches/050-lib80211_option.patch +++ b/package/kernel/mac80211/patches/050-lib80211_option.patch @@ -1,6 +1,6 @@ --- a/net/wireless/Kconfig +++ b/net/wireless/Kconfig -@@ -171,7 +171,7 @@ config CFG80211_WEXT_EXPORT +@@ -181,7 +181,7 @@ config CFG80211_WEXT_EXPORT wext compatibility symbols to be exported. config LIB80211 @@ -9,7 +9,7 @@ depends on m default n help -@@ -181,15 +181,15 @@ config LIB80211 +@@ -191,15 +191,15 @@ config LIB80211 Drivers should select this themselves if needed. config LIB80211_CRYPT_WEP diff --git a/package/kernel/mac80211/patches/060-no_local_ssb_bcma.patch b/package/kernel/mac80211/patches/060-no_local_ssb_bcma.patch index 527938f015..d897b2b40e 100644 --- a/package/kernel/mac80211/patches/060-no_local_ssb_bcma.patch +++ b/package/kernel/mac80211/patches/060-no_local_ssb_bcma.patch @@ -1,6 +1,6 @@ ---- a/.local-symbols -+++ b/.local-symbols -@@ -482,45 +482,6 @@ USB_IPHETH= +--- a/local-symbols ++++ b/local-symbols +@@ -388,45 +388,6 @@ USB_IPHETH= USB_SIERRA_NET= USB_VL600= USB_NET_CH9200= @@ -48,7 +48,7 @@ NFC_NCI= --- a/drivers/net/wireless/broadcom/b43/main.c +++ b/drivers/net/wireless/broadcom/b43/main.c -@@ -2866,7 +2866,7 @@ static struct ssb_device *b43_ssb_gpio_d +@@ -2876,7 +2876,7 @@ static struct ssb_device *b43_ssb_gpio_d { struct ssb_bus *bus = dev->dev->sdev->bus; @@ -57,7 +57,7 @@ return (bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev); #else return bus->chipco.dev; -@@ -4883,7 +4883,7 @@ static int b43_wireless_core_init(struct +@@ -4893,7 +4893,7 @@ static int b43_wireless_core_init(struct } if (sprom->boardflags_lo & B43_BFL_XTAL_NOSLOW) hf |= B43_HF_DSCRQ; /* Disable slowclock requests from ucode. */ @@ -110,7 +110,7 @@ --- a/Kconfig.sources +++ b/Kconfig.sources @@ -9,9 +9,6 @@ source "$BACKPORT_DIR/drivers/net/wirele - source "$BACKPORT_DIR/drivers/net/ethernet/Kconfig" + #source "$BACKPORT_DIR/drivers/net/ethernet/Kconfig" source "$BACKPORT_DIR/drivers/net/usb/Kconfig" -source "$BACKPORT_DIR/drivers/ssb/Kconfig" @@ -118,15 +118,15 @@ - source "$BACKPORT_DIR/net/nfc/Kconfig" - source "$BACKPORT_DIR/drivers/media/Kconfig" + #source "$BACKPORT_DIR/drivers/media/Kconfig" --- a/Makefile.kernel +++ b/Makefile.kernel -@@ -38,8 +38,6 @@ obj-$(CPTCFG_MAC80211) += net/mac80211/ +@@ -42,8 +42,6 @@ obj-$(CPTCFG_MAC80211) += net/mac80211/ obj-$(CPTCFG_WLAN) += drivers/net/wireless/ - obj-$(CPTCFG_BT) += net/bluetooth/ - obj-$(CPTCFG_BT) += drivers/bluetooth/ + #obj-$(CPTCFG_BT) += net/bluetooth/ + #obj-$(CPTCFG_BT) += drivers/bluetooth/ -obj-$(CPTCFG_SSB) += drivers/ssb/ -obj-$(CPTCFG_BCMA) += drivers/bcma/ - obj-$(CPTCFG_ETHERNET) += drivers/net/ethernet/ + #obj-$(CPTCFG_ETHERNET) += drivers/net/ethernet/ obj-$(CPTCFG_USB_NET_RNDIS_WLAN) += drivers/net/usb/ obj-$(CPTCFG_NFC) += net/nfc/ diff --git a/package/kernel/mac80211/patches/090-Revert-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch b/package/kernel/mac80211/patches/090-Revert-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch new file mode 100644 index 0000000000..53d1c8a094 --- /dev/null +++ b/package/kernel/mac80211/patches/090-Revert-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch @@ -0,0 +1,47 @@ +From patchwork Mon May 28 11:25:06 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: Revert "rt2800: use TXOP_BACKOFF for probe frames" +From: Stanislaw Gruszka +X-Patchwork-Id: 10431861 +Message-Id: <1527506706-6488-1-git-send-email-sgruszka@redhat.com> +To: linux-wireless@vger.kernel.org +Date: Mon, 28 May 2018 13:25:06 +0200 + +This reverts commit fb47ada8dc3c30c8e7b415da155742b49536c61e. + +In some situations when we set TXOP_BACKOFF, the probe frame is +not sent at all. What it worse then sending probe frame as part +of AMPDU and can degrade 11n performance to 11g rates. + +Cc: stable@vger.kernel.org +Signed-off-by: Stanislaw Gruszka +--- + drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c +index a6884e73d2ab..7ddee980048b 100644 +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c +@@ -372,16 +372,15 @@ static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev, + + /* + * Determine IFS values +- * - Use TXOP_BACKOFF for probe and management frames except beacons ++ * - Use TXOP_BACKOFF for management frames except beacons + * - Use TXOP_SIFS for fragment bursts + * - Use TXOP_HTTXOP for everything else + * + * Note: rt2800 devices won't use CTS protection (if used) + * for frames not transmitted with TXOP_HTTXOP + */ +- if ((ieee80211_is_mgmt(hdr->frame_control) && +- !ieee80211_is_beacon(hdr->frame_control)) || +- (tx_info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE)) ++ if (ieee80211_is_mgmt(hdr->frame_control) && ++ !ieee80211_is_beacon(hdr->frame_control)) + txdesc->u.ht.txop = TXOP_BACKOFF; + else if (!(tx_info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT)) + txdesc->u.ht.txop = TXOP_SIFS; diff --git a/package/kernel/mac80211/patches/090-remove-cred.patch b/package/kernel/mac80211/patches/090-remove-cred.patch deleted file mode 100644 index 3adb2afb86..0000000000 --- a/package/kernel/mac80211/patches/090-remove-cred.patch +++ /dev/null @@ -1,15 +0,0 @@ -This is only needed for kernel < 2.6.29 and conflicts with kernel 4.4.42 - ---- a/backport-include/linux/cred.h -+++ /dev/null -@@ -1,10 +0,0 @@ --#ifndef __BACKPORT_LINUX_CRED_H --#define __BACKPORT_LINUX_CRED_H --#include_next --#include -- --#ifndef current_user_ns --#define current_user_ns() (current->nsproxy->user_ns) --#endif -- --#endif /* __BACKPORT_LINUX_CRED_H */ diff --git a/package/kernel/mac80211/patches/100-remove-cryptoapi-dependencies.patch b/package/kernel/mac80211/patches/100-remove-cryptoapi-dependencies.patch index 95fea441a4..aa44149aed 100644 --- a/package/kernel/mac80211/patches/100-remove-cryptoapi-dependencies.patch +++ b/package/kernel/mac80211/patches/100-remove-cryptoapi-dependencies.patch @@ -1,134 +1,81 @@ ---- a/net/mac80211/Kconfig -+++ b/net/mac80211/Kconfig -@@ -5,8 +5,6 @@ config MAC80211 - depends on CRYPTO - depends on CRYPTO_ARC4 - depends on CRYPTO_AES -- select BPAUTO_CRYPTO_CCM -- depends on CRYPTO_GCM - depends on CRC32 - ---help--- - This option enables the hardware independent IEEE 802.11 --- a/net/mac80211/Makefile +++ b/net/mac80211/Makefile -@@ -16,9 +16,7 @@ mac80211-y := \ +@@ -6,7 +6,6 @@ mac80211-y := \ + driver-ops.o \ + sta_info.o \ + wep.o \ +- aead_api.o \ + wpa.o \ + scan.o offchannel.o \ + ht.o agg-tx.o agg-rx.o \ +@@ -16,8 +15,8 @@ mac80211-y := \ + rate.o \ michael.o \ tkip.o \ - aes_ccm.o \ -- aes_gcm.o \ ++ aes_ccm.o \ aes_cmac.o \ - aes_gmac.o \ fils_aead.o \ cfg.o \ ethtool.o \ ---- a/net/mac80211/aes_ccm.c -+++ b/net/mac80211/aes_ccm.c -@@ -13,103 +13,132 @@ - #include - #include - #include -+#include - - #include - #include "key.h" - #include "aes_ccm.h" - --int ieee80211_aes_ccm_encrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, -- u8 *data, size_t data_len, u8 *mic, -- size_t mic_len) -+static void aes_ccm_prepare(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, u8 *s_0, -+ u8 *a, u8 *b) - { +--- a/net/mac80211/aead_api.c ++++ /dev/null +@@ -1,115 +0,0 @@ +-/* +- * Copyright 2003-2004, Instant802 Networks, Inc. +- * Copyright 2005-2006, Devicescape Software, Inc. +- * Copyright 2014-2015, Qualcomm Atheros, Inc. +- * +- * Rewrite: Copyright (C) 2013 Linaro Ltd +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License version 2 as +- * published by the Free Software Foundation. +- */ +- +-#include +-#include +-#include +-#include +-#include +- +-#include "aead_api.h" +- +-int aead_encrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, size_t aad_len, +- u8 *data, size_t data_len, u8 *mic) +-{ +- size_t mic_len = crypto_aead_authsize(tfm); - struct scatterlist sg[3]; - struct aead_request *aead_req; - int reqsize = sizeof(*aead_req) + crypto_aead_reqsize(tfm); - u8 *__aad; - -- aead_req = kzalloc(reqsize + CCM_AAD_LEN, GFP_ATOMIC); +- aead_req = kzalloc(reqsize + aad_len, GFP_ATOMIC); - if (!aead_req) - return -ENOMEM; - - __aad = (u8 *)aead_req + reqsize; -- memcpy(__aad, aad, CCM_AAD_LEN); +- memcpy(__aad, aad, aad_len); - - sg_init_table(sg, 3); -- sg_set_buf(&sg[0], &__aad[2], be16_to_cpup((__be16 *)__aad)); +- sg_set_buf(&sg[0], __aad, aad_len); - sg_set_buf(&sg[1], data, data_len); - sg_set_buf(&sg[2], mic, mic_len); - - aead_request_set_tfm(aead_req, tfm); - aead_request_set_crypt(aead_req, sg, sg, data_len, b_0); - aead_request_set_ad(aead_req, sg[0].length); -+ int i; - +- - crypto_aead_encrypt(aead_req); - kzfree(aead_req); -+ crypto_cipher_encrypt_one(tfm, b, b_0); - +- - return 0; -+ /* Extra Authenticate-only data (always two AES blocks) */ -+ for (i = 0; i < AES_BLOCK_SIZE; i++) -+ aad[i] ^= b[i]; -+ crypto_cipher_encrypt_one(tfm, b, aad); -+ -+ aad += AES_BLOCK_SIZE; -+ -+ for (i = 0; i < AES_BLOCK_SIZE; i++) -+ aad[i] ^= b[i]; -+ crypto_cipher_encrypt_one(tfm, a, aad); -+ -+ /* Mask out bits from auth-only-b_0 */ -+ b_0[0] &= 0x07; -+ -+ /* S_0 is used to encrypt T (= MIC) */ -+ b_0[14] = 0; -+ b_0[15] = 0; -+ crypto_cipher_encrypt_one(tfm, s_0, b_0); -+} -+ -+ -+void ieee80211_aes_ccm_encrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, -+ u8 *data, size_t data_len, u8 *mic, -+ size_t mic_len) -+{ -+ int i, j, last_len, num_blocks; -+ u8 b[AES_BLOCK_SIZE]; -+ u8 s_0[AES_BLOCK_SIZE]; -+ u8 e[AES_BLOCK_SIZE]; -+ u8 *pos, *cpos; -+ -+ num_blocks = DIV_ROUND_UP(data_len, AES_BLOCK_SIZE); -+ last_len = data_len % AES_BLOCK_SIZE; -+ aes_ccm_prepare(tfm, b_0, aad, s_0, b, b); -+ -+ /* Process payload blocks */ -+ pos = data; -+ cpos = data; -+ for (j = 1; j <= num_blocks; j++) { -+ int blen = (j == num_blocks && last_len) ? -+ last_len : AES_BLOCK_SIZE; -+ -+ /* Authentication followed by encryption */ -+ for (i = 0; i < blen; i++) -+ b[i] ^= pos[i]; -+ crypto_cipher_encrypt_one(tfm, b, b); -+ -+ b_0[14] = (j >> 8) & 0xff; -+ b_0[15] = j & 0xff; -+ crypto_cipher_encrypt_one(tfm, e, b_0); -+ for (i = 0; i < blen; i++) -+ *cpos++ = *pos++ ^ e[i]; -+ } -+ -+ for (i = 0; i < mic_len; i++) -+ mic[i] = b[i] ^ s_0[i]; - } - --int ieee80211_aes_ccm_decrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, -+int ieee80211_aes_ccm_decrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, - u8 *data, size_t data_len, u8 *mic, - size_t mic_len) - { +-} +- +-int aead_decrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, size_t aad_len, +- u8 *data, size_t data_len, u8 *mic) +-{ +- size_t mic_len = crypto_aead_authsize(tfm); - struct scatterlist sg[3]; - struct aead_request *aead_req; - int reqsize = sizeof(*aead_req) + crypto_aead_reqsize(tfm); @@ -138,73 +85,36 @@ - if (data_len == 0) - return -EINVAL; - -- aead_req = kzalloc(reqsize + CCM_AAD_LEN, GFP_ATOMIC); +- aead_req = kzalloc(reqsize + aad_len, GFP_ATOMIC); - if (!aead_req) - return -ENOMEM; - - __aad = (u8 *)aead_req + reqsize; -- memcpy(__aad, aad, CCM_AAD_LEN); +- memcpy(__aad, aad, aad_len); - - sg_init_table(sg, 3); -- sg_set_buf(&sg[0], &__aad[2], be16_to_cpup((__be16 *)__aad)); +- sg_set_buf(&sg[0], __aad, aad_len); - sg_set_buf(&sg[1], data, data_len); - sg_set_buf(&sg[2], mic, mic_len); - - aead_request_set_tfm(aead_req, tfm); - aead_request_set_crypt(aead_req, sg, sg, data_len + mic_len, b_0); - aead_request_set_ad(aead_req, sg[0].length); -+ int i, j, last_len, num_blocks; -+ u8 *pos, *cpos; -+ u8 a[AES_BLOCK_SIZE]; -+ u8 b[AES_BLOCK_SIZE]; -+ u8 s_0[AES_BLOCK_SIZE]; -+ -+ num_blocks = DIV_ROUND_UP(data_len, AES_BLOCK_SIZE); -+ last_len = data_len % AES_BLOCK_SIZE; -+ aes_ccm_prepare(tfm, b_0, aad, s_0, a, b); -+ -+ /* Process payload blocks */ -+ cpos = data; -+ pos = data; -+ for (j = 1; j <= num_blocks; j++) { -+ int blen = (j == num_blocks && last_len) ? -+ last_len : AES_BLOCK_SIZE; -+ -+ /* Decryption followed by authentication */ -+ b_0[14] = (j >> 8) & 0xff; -+ b_0[15] = j & 0xff; -+ crypto_cipher_encrypt_one(tfm, b, b_0); -+ for (i = 0; i < blen; i++) { -+ *pos = *cpos++ ^ b[i]; -+ a[i] ^= *pos++; -+ } -+ crypto_cipher_encrypt_one(tfm, a, a); -+ } -+ -+ for (i = 0; i < mic_len; i++) { -+ if ((mic[i] ^ s_0[i]) != a[i]) -+ return -1; -+ } - +- - err = crypto_aead_decrypt(aead_req); - kzfree(aead_req); - - return err; -+ return 0; - } - --struct crypto_aead *ieee80211_aes_key_setup_encrypt(const u8 key[], -- size_t key_len, -- size_t mic_len) -+struct crypto_cipher *ieee80211_aes_key_setup_encrypt(const u8 key[], -+ size_t key_len, -+ size_t mic_len) - { +-} +- +-struct crypto_aead * +-aead_key_setup_encrypt(const char *alg, const u8 key[], +- size_t key_len, size_t mic_len) +-{ - struct crypto_aead *tfm; - int err; -+ struct crypto_cipher *tfm; - -- tfm = crypto_alloc_aead("ccm(aes)", 0, CRYPTO_ALG_ASYNC); +- +- tfm = crypto_alloc_aead(alg, 0, CRYPTO_ALG_ASYNC); - if (IS_ERR(tfm)) - return tfm; - @@ -214,68 +124,268 @@ - err = crypto_aead_setauthsize(tfm, mic_len); - if (err) - goto free_aead; -+ tfm = crypto_alloc_cipher("aes", 0, CRYPTO_ALG_ASYNC); -+ if (!IS_ERR(tfm)) -+ crypto_cipher_setkey(tfm, key, key_len); - - return tfm; +- +- return tfm; - -free_aead: - crypto_free_aead(tfm); - return ERR_PTR(err); - } - --void ieee80211_aes_key_free(struct crypto_aead *tfm) -+ -+void ieee80211_aes_key_free(struct crypto_cipher *tfm) - { +-} +- +-void aead_key_free(struct crypto_aead *tfm) +-{ - crypto_free_aead(tfm); -+ crypto_free_cipher(tfm); - } ---- a/net/mac80211/aes_gmac.h -+++ b/net/mac80211/aes_gmac.h -@@ -15,10 +15,22 @@ - #define GMAC_MIC_LEN 16 - #define GMAC_NONCE_LEN 12 +-} +--- a/net/mac80211/aead_api.h ++++ /dev/null +@@ -1,27 +0,0 @@ +-/* +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License version 2 as +- * published by the Free Software Foundation. +- */ +- +-#ifndef _AEAD_API_H +-#define _AEAD_API_H +- +-#include +-#include +- +-struct crypto_aead * +-aead_key_setup_encrypt(const char *alg, const u8 key[], +- size_t key_len, size_t mic_len); +- +-int aead_encrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, +- size_t aad_len, u8 *data, +- size_t data_len, u8 *mic); +- +-int aead_decrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, +- size_t aad_len, u8 *data, +- size_t data_len, u8 *mic); +- +-void aead_key_free(struct crypto_aead *tfm); +- +-#endif /* _AEAD_API_H */ +--- a/net/mac80211/aes_ccm.h ++++ b/net/mac80211/aes_ccm.h +@@ -10,39 +10,17 @@ + #ifndef AES_CCM_H + #define AES_CCM_H --struct crypto_aead *ieee80211_aes_gmac_key_setup(const u8 key[], -- size_t key_len); --int ieee80211_aes_gmac(struct crypto_aead *tfm, const u8 *aad, u8 *nonce, -- const u8 *data, size_t data_len, u8 *mic); --void ieee80211_aes_gmac_key_free(struct crypto_aead *tfm); -+static inline struct crypto_aead * -+ieee80211_aes_gmac_key_setup(const u8 key[], size_t key_len) +-#include "aead_api.h" +- +-#define CCM_AAD_LEN 32 +- +-static inline struct crypto_aead * +-ieee80211_aes_key_setup_encrypt(const u8 key[], size_t key_len, size_t mic_len) +-{ +- return aead_key_setup_encrypt("ccm(aes)", key, key_len, mic_len); +-} +- +-static inline int +-ieee80211_aes_ccm_encrypt(struct crypto_aead *tfm, +- u8 *b_0, u8 *aad, u8 *data, +- size_t data_len, u8 *mic) +-{ +- return aead_encrypt(tfm, b_0, aad + 2, +- be16_to_cpup((__be16 *)aad), +- data, data_len, mic); +-} +- +-static inline int +-ieee80211_aes_ccm_decrypt(struct crypto_aead *tfm, +- u8 *b_0, u8 *aad, u8 *data, +- size_t data_len, u8 *mic) +-{ +- return aead_decrypt(tfm, b_0, aad + 2, +- be16_to_cpup((__be16 *)aad), +- data, data_len, mic); +-} ++#include + +-static inline void ieee80211_aes_key_free(struct crypto_aead *tfm) +-{ +- return aead_key_free(tfm); +-} ++struct crypto_cipher *ieee80211_aes_key_setup_encrypt(const u8 key[], ++ size_t key_len, ++ size_t mic_len); ++void ieee80211_aes_ccm_encrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, ++ u8 *data, size_t data_len, u8 *mic, ++ size_t mic_len); ++int ieee80211_aes_ccm_decrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, ++ u8 *data, size_t data_len, u8 *mic, ++ size_t mic_len); ++void ieee80211_aes_key_free(struct crypto_cipher *tfm); + + #endif /* AES_CCM_H */ +--- /dev/null ++++ b/net/mac80211/aes_gcm.c +@@ -0,0 +1,109 @@ ++/* ++ * Copyright 2014-2015, Qualcomm Atheros, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include "key.h" ++#include "aes_gcm.h" ++ ++int ieee80211_aes_gcm_encrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, ++ u8 *data, size_t data_len, u8 *mic) +{ -+ return NULL; ++ struct scatterlist sg[3]; ++ struct aead_request *aead_req; ++ int reqsize = sizeof(*aead_req) + crypto_aead_reqsize(tfm); ++ u8 *__aad; ++ ++ aead_req = kzalloc(reqsize + GCM_AAD_LEN, GFP_ATOMIC); ++ if (!aead_req) ++ return -ENOMEM; ++ ++ __aad = (u8 *)aead_req + reqsize; ++ memcpy(__aad, aad, GCM_AAD_LEN); ++ ++ sg_init_table(sg, 3); ++ sg_set_buf(&sg[0], &__aad[2], be16_to_cpup((__be16 *)__aad)); ++ sg_set_buf(&sg[1], data, data_len); ++ sg_set_buf(&sg[2], mic, IEEE80211_GCMP_MIC_LEN); ++ ++ aead_request_set_tfm(aead_req, tfm); ++ aead_request_set_crypt(aead_req, sg, sg, data_len, j_0); ++ aead_request_set_ad(aead_req, sg[0].length); ++ ++ crypto_aead_encrypt(aead_req); ++ kzfree(aead_req); ++ return 0; +} + -+static inline int -+ieee80211_aes_gmac(struct crypto_aead *tfm, const u8 *aad, u8 *nonce, -+ const u8 *data, size_t data_len, u8 *mic) ++int ieee80211_aes_gcm_decrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, ++ u8 *data, size_t data_len, u8 *mic) +{ -+ return -EOPNOTSUPP; ++ struct scatterlist sg[3]; ++ struct aead_request *aead_req; ++ int reqsize = sizeof(*aead_req) + crypto_aead_reqsize(tfm); ++ u8 *__aad; ++ int err; ++ ++ if (data_len == 0) ++ return -EINVAL; ++ ++ aead_req = kzalloc(reqsize + GCM_AAD_LEN, GFP_ATOMIC); ++ if (!aead_req) ++ return -ENOMEM; ++ ++ __aad = (u8 *)aead_req + reqsize; ++ memcpy(__aad, aad, GCM_AAD_LEN); ++ ++ sg_init_table(sg, 3); ++ sg_set_buf(&sg[0], &__aad[2], be16_to_cpup((__be16 *)__aad)); ++ sg_set_buf(&sg[1], data, data_len); ++ sg_set_buf(&sg[2], mic, IEEE80211_GCMP_MIC_LEN); ++ ++ aead_request_set_tfm(aead_req, tfm); ++ aead_request_set_crypt(aead_req, sg, sg, ++ data_len + IEEE80211_GCMP_MIC_LEN, j_0); ++ aead_request_set_ad(aead_req, sg[0].length); ++ ++ err = crypto_aead_decrypt(aead_req); ++ kzfree(aead_req); ++ ++ return err; +} + -+static inline void -+ieee80211_aes_gmac_key_free(struct crypto_aead *tfm) ++struct crypto_aead *ieee80211_aes_gcm_key_setup_encrypt(const u8 key[], ++ size_t key_len) +{ ++ struct crypto_aead *tfm; ++ int err; ++ ++ tfm = crypto_alloc_aead("gcm(aes)", 0, CRYPTO_ALG_ASYNC); ++ if (IS_ERR(tfm)) ++ return tfm; ++ ++ err = crypto_aead_setkey(tfm, key, key_len); ++ if (err) ++ goto free_aead; ++ err = crypto_aead_setauthsize(tfm, IEEE80211_GCMP_MIC_LEN); ++ if (err) ++ goto free_aead; ++ ++ return tfm; ++ ++free_aead: ++ crypto_free_aead(tfm); ++ return ERR_PTR(err); ++} ++ ++void ieee80211_aes_gcm_key_free(struct crypto_aead *tfm) ++{ ++ crypto_free_aead(tfm); +} +--- a/net/mac80211/aes_gcm.h ++++ b/net/mac80211/aes_gcm.h +@@ -9,38 +9,30 @@ + #ifndef AES_GCM_H + #define AES_GCM_H - #endif /* AES_GMAC_H */ ---- a/net/mac80211/key.h -+++ b/net/mac80211/key.h -@@ -88,7 +88,7 @@ struct ieee80211_key { - * Management frames. - */ - u8 rx_pn[IEEE80211_NUM_TIDS + 1][IEEE80211_CCMP_PN_LEN]; -- struct crypto_aead *tfm; -+ struct crypto_cipher *tfm; - u32 replays; /* dot11RSNAStatsCCMPReplays */ - } ccmp; - struct { +-#include "aead_api.h" +- +-#define GCM_AAD_LEN 32 ++#include + +-static inline int ieee80211_aes_gcm_encrypt(struct crypto_aead *tfm, +- u8 *j_0, u8 *aad, u8 *data, +- size_t data_len, u8 *mic) ++static inline void ++ieee80211_aes_gcm_encrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, ++ u8 *data, size_t data_len, u8 *mic) + { +- return aead_encrypt(tfm, j_0, aad + 2, +- be16_to_cpup((__be16 *)aad), +- data, data_len, mic); + } + +-static inline int ieee80211_aes_gcm_decrypt(struct crypto_aead *tfm, +- u8 *j_0, u8 *aad, u8 *data, +- size_t data_len, u8 *mic) ++static inline int ++ieee80211_aes_gcm_decrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, ++ u8 *data, size_t data_len, u8 *mic) + { +- return aead_decrypt(tfm, j_0, aad + 2, +- be16_to_cpup((__be16 *)aad), +- data, data_len, mic); ++ return -EOPNOTSUPP; + } + + static inline struct crypto_aead * + ieee80211_aes_gcm_key_setup_encrypt(const u8 key[], size_t key_len) + { +- return aead_key_setup_encrypt("gcm(aes)", key, +- key_len, IEEE80211_GCMP_MIC_LEN); ++ return NULL; + } + +-static inline void ieee80211_aes_gcm_key_free(struct crypto_aead *tfm) ++static inline void ++ieee80211_aes_gcm_key_free(struct crypto_aead *tfm) + { +- return aead_key_free(tfm); + } + + #endif /* AES_GCM_H */ --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c -@@ -305,7 +305,8 @@ ieee80211_crypto_tkip_decrypt(struct iee +@@ -306,7 +306,8 @@ ieee80211_crypto_tkip_decrypt(struct iee } @@ -285,7 +395,7 @@ { __le16 mask_fc; int a4_included, mgmt; -@@ -335,14 +336,8 @@ static void ccmp_special_blocks(struct s +@@ -336,14 +337,8 @@ static void ccmp_special_blocks(struct s else qos_tid = 0; @@ -302,7 +412,7 @@ /* Nonce: Nonce Flags | A2 | PN * Nonce Flags: Priority (b0..b3) | Management (b4) | Reserved (b5..b7) -@@ -350,6 +345,8 @@ static void ccmp_special_blocks(struct s +@@ -351,6 +346,8 @@ static void ccmp_special_blocks(struct s b_0[1] = qos_tid | (mgmt << 4); memcpy(&b_0[2], hdr->addr2, ETH_ALEN); memcpy(&b_0[8], pn, IEEE80211_CCMP_PN_LEN); @@ -311,7 +421,7 @@ /* AAD (extra authenticate-only data) / masked 802.11 header * FC | A1 | A2 | A3 | SC | [A4] | [QC] */ -@@ -406,7 +403,7 @@ static int ccmp_encrypt_skb(struct ieee8 +@@ -407,7 +404,7 @@ static int ccmp_encrypt_skb(struct ieee8 u8 *pos; u8 pn[6]; u64 pn64; @@ -320,13 +430,13 @@ u8 b_0[AES_BLOCK_SIZE]; if (info->control.hw_key && -@@ -461,9 +458,11 @@ static int ccmp_encrypt_skb(struct ieee8 +@@ -462,9 +459,11 @@ static int ccmp_encrypt_skb(struct ieee8 return 0; pos += IEEE80211_CCMP_HDR_LEN; - ccmp_special_blocks(skb, pn, b_0, aad); - return ieee80211_aes_ccm_encrypt(key->u.ccmp.tfm, b_0, aad, pos, len, -- skb_put(skb, mic_len), mic_len); +- skb_put(skb, mic_len)); + ccmp_special_blocks(skb, pn, b_0, aad, len); + ieee80211_aes_ccm_encrypt(key->u.ccmp.tfm, b_0, aad, pos, len, + skb_put(skb, mic_len), mic_len); @@ -335,7 +445,7 @@ } -@@ -536,7 +535,7 @@ ieee80211_crypto_ccmp_decrypt(struct iee +@@ -537,13 +536,13 @@ ieee80211_crypto_ccmp_decrypt(struct iee u8 aad[2 * AES_BLOCK_SIZE]; u8 b_0[AES_BLOCK_SIZE]; /* hardware didn't decrypt/verify MIC */ @@ -344,7 +454,14 @@ if (ieee80211_aes_ccm_decrypt( key->u.ccmp.tfm, b_0, aad, -@@ -638,7 +637,7 @@ static int gcmp_encrypt_skb(struct ieee8 + skb->data + hdrlen + IEEE80211_CCMP_HDR_LEN, + data_len, +- skb->data + skb->len - mic_len)) ++ skb->data + skb->len - mic_len, mic_len)) + return RX_DROP_UNUSABLE; + } + +@@ -639,7 +638,7 @@ static int gcmp_encrypt_skb(struct ieee8 u8 *pos; u8 pn[6]; u64 pn64; @@ -353,7 +470,7 @@ u8 j_0[AES_BLOCK_SIZE]; if (info->control.hw_key && -@@ -695,8 +694,10 @@ static int gcmp_encrypt_skb(struct ieee8 +@@ -696,8 +695,10 @@ static int gcmp_encrypt_skb(struct ieee8 pos += IEEE80211_GCMP_HDR_LEN; gcmp_special_blocks(skb, pn, j_0, aad); @@ -366,7 +483,7 @@ } ieee80211_tx_result -@@ -1120,9 +1121,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct +@@ -1121,9 +1122,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct struct ieee80211_key *key = tx->key; struct ieee80211_mmie_16 *mmie; struct ieee80211_hdr *hdr; @@ -378,7 +495,7 @@ if (WARN_ON(skb_queue_len(&tx->skbs) != 1)) return TX_DROP; -@@ -1168,7 +1169,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct +@@ -1169,7 +1170,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); struct ieee80211_key *key = rx->key; struct ieee80211_mmie_16 *mmie; @@ -387,70 +504,202 @@ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; if (!ieee80211_is_mgmt(hdr->frame_control)) ---- a/net/mac80211/aes_ccm.h -+++ b/net/mac80211/aes_ccm.h -@@ -12,17 +12,15 @@ - - #include - --#define CCM_AAD_LEN 32 -- --struct crypto_aead *ieee80211_aes_key_setup_encrypt(const u8 key[], -- size_t key_len, -- size_t mic_len); --int ieee80211_aes_ccm_encrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, -- u8 *data, size_t data_len, u8 *mic, -- size_t mic_len); --int ieee80211_aes_ccm_decrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, -+struct crypto_cipher *ieee80211_aes_key_setup_encrypt(const u8 key[], -+ size_t key_len, -+ size_t mic_len); +--- /dev/null ++++ b/net/mac80211/aes_ccm.c +@@ -0,0 +1,144 @@ ++/* ++ * Copyright 2003-2004, Instant802 Networks, Inc. ++ * Copyright 2005-2006, Devicescape Software, Inc. ++ * ++ * Rewrite: Copyright (C) 2013 Linaro Ltd ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include "key.h" ++#include "aes_ccm.h" ++ ++static void aes_ccm_prepare(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, u8 *s_0, ++ u8 *a, u8 *b) ++{ ++ int i; ++ ++ crypto_cipher_encrypt_one(tfm, b, b_0); ++ ++ /* Extra Authenticate-only data (always two AES blocks) */ ++ for (i = 0; i < AES_BLOCK_SIZE; i++) ++ aad[i] ^= b[i]; ++ crypto_cipher_encrypt_one(tfm, b, aad); ++ ++ aad += AES_BLOCK_SIZE; ++ ++ for (i = 0; i < AES_BLOCK_SIZE; i++) ++ aad[i] ^= b[i]; ++ crypto_cipher_encrypt_one(tfm, a, aad); ++ ++ /* Mask out bits from auth-only-b_0 */ ++ b_0[0] &= 0x07; ++ ++ /* S_0 is used to encrypt T (= MIC) */ ++ b_0[14] = 0; ++ b_0[15] = 0; ++ crypto_cipher_encrypt_one(tfm, s_0, b_0); ++} ++ ++ +void ieee80211_aes_ccm_encrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, + u8 *data, size_t data_len, u8 *mic, -+ size_t mic_len); ++ size_t mic_len) ++{ ++ int i, j, last_len, num_blocks; ++ u8 b[AES_BLOCK_SIZE]; ++ u8 s_0[AES_BLOCK_SIZE]; ++ u8 e[AES_BLOCK_SIZE]; ++ u8 *pos, *cpos; ++ ++ num_blocks = DIV_ROUND_UP(data_len, AES_BLOCK_SIZE); ++ last_len = data_len % AES_BLOCK_SIZE; ++ aes_ccm_prepare(tfm, b_0, aad, s_0, b, b); ++ ++ /* Process payload blocks */ ++ pos = data; ++ cpos = data; ++ for (j = 1; j <= num_blocks; j++) { ++ int blen = (j == num_blocks && last_len) ? ++ last_len : AES_BLOCK_SIZE; ++ ++ /* Authentication followed by encryption */ ++ for (i = 0; i < blen; i++) ++ b[i] ^= pos[i]; ++ crypto_cipher_encrypt_one(tfm, b, b); ++ ++ b_0[14] = (j >> 8) & 0xff; ++ b_0[15] = j & 0xff; ++ crypto_cipher_encrypt_one(tfm, e, b_0); ++ for (i = 0; i < blen; i++) ++ *cpos++ = *pos++ ^ e[i]; ++ } ++ ++ for (i = 0; i < mic_len; i++) ++ mic[i] = b[i] ^ s_0[i]; ++} ++ +int ieee80211_aes_ccm_decrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, - u8 *data, size_t data_len, u8 *mic, - size_t mic_len); --void ieee80211_aes_key_free(struct crypto_aead *tfm); -+void ieee80211_aes_key_free(struct crypto_cipher *tfm); - - #endif /* AES_CCM_H */ ---- a/net/mac80211/aes_gcm.h -+++ b/net/mac80211/aes_gcm.h -@@ -11,14 +11,28 @@ - - #include - --#define GCM_AAD_LEN 32 -+static inline void -+ieee80211_aes_gcm_encrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, -+ u8 *data, size_t data_len, u8 *mic) ++ u8 *data, size_t data_len, u8 *mic, ++ size_t mic_len) +{ ++ int i, j, last_len, num_blocks; ++ u8 *pos, *cpos; ++ u8 a[AES_BLOCK_SIZE]; ++ u8 b[AES_BLOCK_SIZE]; ++ u8 s_0[AES_BLOCK_SIZE]; ++ ++ num_blocks = DIV_ROUND_UP(data_len, AES_BLOCK_SIZE); ++ last_len = data_len % AES_BLOCK_SIZE; ++ aes_ccm_prepare(tfm, b_0, aad, s_0, a, b); ++ ++ /* Process payload blocks */ ++ cpos = data; ++ pos = data; ++ for (j = 1; j <= num_blocks; j++) { ++ int blen = (j == num_blocks && last_len) ? ++ last_len : AES_BLOCK_SIZE; ++ ++ /* Decryption followed by authentication */ ++ b_0[14] = (j >> 8) & 0xff; ++ b_0[15] = j & 0xff; ++ crypto_cipher_encrypt_one(tfm, b, b_0); ++ for (i = 0; i < blen; i++) { ++ *pos = *cpos++ ^ b[i]; ++ a[i] ^= *pos++; ++ } ++ crypto_cipher_encrypt_one(tfm, a, a); ++ } ++ ++ for (i = 0; i < mic_len; i++) { ++ if ((mic[i] ^ s_0[i]) != a[i]) ++ return -1; ++ } ++ ++ return 0; +} - --int ieee80211_aes_gcm_encrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, -- u8 *data, size_t data_len, u8 *mic); --int ieee80211_aes_gcm_decrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, -- u8 *data, size_t data_len, u8 *mic); --struct crypto_aead *ieee80211_aes_gcm_key_setup_encrypt(const u8 key[], -- size_t key_len); --void ieee80211_aes_gcm_key_free(struct crypto_aead *tfm); -+static inline int -+ieee80211_aes_gcm_decrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, -+ u8 *data, size_t data_len, u8 *mic) ++ ++struct crypto_cipher *ieee80211_aes_key_setup_encrypt(const u8 key[], ++ size_t key_len, ++ size_t mic_len) +{ -+ return -EOPNOTSUPP; ++ struct crypto_cipher *tfm; ++ ++ tfm = crypto_alloc_cipher("aes", 0, CRYPTO_ALG_ASYNC); ++ if (!IS_ERR(tfm)) ++ crypto_cipher_setkey(tfm, key, key_len); ++ ++ return tfm; +} + ++ ++void ieee80211_aes_key_free(struct crypto_cipher *tfm) ++{ ++ crypto_free_cipher(tfm); ++} +--- a/net/mac80211/Kconfig ++++ b/net/mac80211/Kconfig +@@ -5,8 +5,6 @@ config MAC80211 + depends on CRYPTO + depends on CRYPTO_ARC4 + depends on CRYPTO_AES +- depends on CRYPTO_CCM +- depends on CRYPTO_GCM + depends on CRYPTO_CMAC + depends on CRC32 + ---help--- +--- a/net/mac80211/aes_gmac.h ++++ b/net/mac80211/aes_gmac.h +@@ -15,10 +15,22 @@ + #define GMAC_MIC_LEN 16 + #define GMAC_NONCE_LEN 12 + +-struct crypto_aead *ieee80211_aes_gmac_key_setup(const u8 key[], +- size_t key_len); +-int ieee80211_aes_gmac(struct crypto_aead *tfm, const u8 *aad, u8 *nonce, +- const u8 *data, size_t data_len, u8 *mic); +-void ieee80211_aes_gmac_key_free(struct crypto_aead *tfm); +static inline struct crypto_aead * -+ieee80211_aes_gcm_key_setup_encrypt(const u8 key[], size_t key_len) ++ieee80211_aes_gmac_key_setup(const u8 key[], size_t key_len) +{ -+ return NULL; ++ return NULL; ++} ++ ++static inline int ++ieee80211_aes_gmac(struct crypto_aead *tfm, const u8 *aad, u8 *nonce, ++ const u8 *data, size_t data_len, u8 *mic) ++{ ++ return -EOPNOTSUPP; +} + +static inline void -+ieee80211_aes_gcm_key_free(struct crypto_aead *tfm) ++ieee80211_aes_gmac_key_free(struct crypto_aead *tfm) +{ +} - #endif /* AES_GCM_H */ + #endif /* AES_GMAC_H */ +--- a/net/mac80211/key.h ++++ b/net/mac80211/key.h +@@ -88,7 +88,7 @@ struct ieee80211_key { + * Management frames. + */ + u8 rx_pn[IEEE80211_NUM_TIDS + 1][IEEE80211_CCMP_PN_LEN]; +- struct crypto_aead *tfm; ++ struct crypto_cipher *tfm; + u32 replays; /* dot11RSNAStatsCCMPReplays */ + } ccmp; + struct { diff --git a/package/kernel/mac80211/patches/110-mac80211_keep_keys_on_stop_ap.patch b/package/kernel/mac80211/patches/110-mac80211_keep_keys_on_stop_ap.patch index ff619129d9..3b1fcdf9c8 100644 --- a/package/kernel/mac80211/patches/110-mac80211_keep_keys_on_stop_ap.patch +++ b/package/kernel/mac80211/patches/110-mac80211_keep_keys_on_stop_ap.patch @@ -2,7 +2,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -1014,7 +1014,6 @@ static int ieee80211_stop_ap(struct wiph +@@ -1058,7 +1058,6 @@ static int ieee80211_stop_ap(struct wiph sdata->u.ap.driver_smps_mode = IEEE80211_SMPS_OFF; __sta_info_flush(sdata, true); diff --git a/package/kernel/mac80211/patches/130-disable-fils.patch b/package/kernel/mac80211/patches/130-disable-fils.patch new file mode 100644 index 0000000000..1f03589878 --- /dev/null +++ b/package/kernel/mac80211/patches/130-disable-fils.patch @@ -0,0 +1,32 @@ +Disable FILS support, since it pulls in crypto hash support + +--- a/net/mac80211/fils_aead.h ++++ b/net/mac80211/fils_aead.h +@@ -10,7 +10,7 @@ + #ifndef FILS_AEAD_H + #define FILS_AEAD_H + +-#if LINUX_VERSION_IS_GEQ(4,3,0) ++#if 0 /* LINUX_VERSION_IS_GEQ(4,3,0) */ + int fils_encrypt_assoc_req(struct sk_buff *skb, + struct ieee80211_mgd_assoc_data *assoc_data); + int fils_decrypt_assoc_resp(struct ieee80211_sub_if_data *sdata, +--- a/net/mac80211/fils_aead.c ++++ b/net/mac80211/fils_aead.c +@@ -1,4 +1,4 @@ +-#if LINUX_VERSION_IS_GEQ(4,3,0) ++#if 0 /* LINUX_VERSION_IS_GEQ(4,3,0) */ + /* + * FILS AEAD for (Re)Association Request/Response frames + * Copyright 2016, Qualcomm Atheros, Inc. +--- a/net/mac80211/main.c ++++ b/net/mac80211/main.c +@@ -550,7 +550,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_ + NL80211_FEATURE_MAC_ON_CREATE | + NL80211_FEATURE_USERSPACE_MPM | + NL80211_FEATURE_FULL_AP_CLIENT_STATE; +-#if LINUX_VERSION_IS_GEQ(4,3,0) ++#if 0 /* LINUX_VERSION_IS_GEQ(4,3,0) */ + wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_FILS_STA); + #endif + diff --git a/package/kernel/mac80211/patches/130-mac80211-hwsim-hrtimer-clock.patch b/package/kernel/mac80211/patches/130-mac80211-hwsim-hrtimer-clock.patch deleted file mode 100644 index 828ed83cb7..0000000000 --- a/package/kernel/mac80211/patches/130-mac80211-hwsim-hrtimer-clock.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/drivers/net/wireless/mac80211_hwsim.c -+++ b/drivers/net/wireless/mac80211_hwsim.c -@@ -2678,7 +2678,7 @@ static int mac80211_hwsim_new_radio(stru - - tasklet_hrtimer_init(&data->beacon_timer, - mac80211_hwsim_beacon, -- CLOCK_MONOTONIC_RAW, HRTIMER_MODE_ABS); -+ CLOCK_MONOTONIC, HRTIMER_MODE_ABS); - - spin_lock_bh(&hwsim_radio_lock); - list_add_tail(&data->list, &hwsim_radios); diff --git a/package/kernel/mac80211/patches/131-Revert-mac80211-aes-cmac-switch-to-shash-CMAC-driver.patch b/package/kernel/mac80211/patches/131-Revert-mac80211-aes-cmac-switch-to-shash-CMAC-driver.patch new file mode 100644 index 0000000000..f2bee9b05c --- /dev/null +++ b/package/kernel/mac80211/patches/131-Revert-mac80211-aes-cmac-switch-to-shash-CMAC-driver.patch @@ -0,0 +1,198 @@ +From: Felix Fietkau +Date: Sat, 7 Oct 2017 09:37:28 +0200 +Subject: [PATCH] Revert "mac80211: aes-cmac: switch to shash CMAC + driver" + +This reverts commit 26717828b75dd5c46e97f7f4a9b937d038bb2852. +Reduces mac80211 dependencies for LEDE + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/aes_cmac.c ++++ b/net/mac80211/aes_cmac.c +@@ -22,50 +22,126 @@ + #define CMAC_TLEN_256 16 /* CMAC TLen = 128 bits (16 octets) */ + #define AAD_LEN 20 + +-static const u8 zero[CMAC_TLEN_256]; + +-void ieee80211_aes_cmac(struct crypto_shash *tfm, const u8 *aad, +- const u8 *data, size_t data_len, u8 *mic) ++void gf_mulx(u8 *pad) + { +- SHASH_DESC_ON_STACK(desc, tfm); +- u8 out[AES_BLOCK_SIZE]; ++ int i, carry; + +- desc->tfm = tfm; ++ carry = pad[0] & 0x80; ++ for (i = 0; i < AES_BLOCK_SIZE - 1; i++) ++ pad[i] = (pad[i] << 1) | (pad[i + 1] >> 7); ++ pad[AES_BLOCK_SIZE - 1] <<= 1; ++ if (carry) ++ pad[AES_BLOCK_SIZE - 1] ^= 0x87; ++} + +- crypto_shash_init(desc); +- crypto_shash_update(desc, aad, AAD_LEN); +- crypto_shash_update(desc, data, data_len - CMAC_TLEN); +- crypto_shash_finup(desc, zero, CMAC_TLEN, out); ++void aes_cmac_vector(struct crypto_cipher *tfm, size_t num_elem, ++ const u8 *addr[], const size_t *len, u8 *mac, ++ size_t mac_len) ++{ ++ u8 cbc[AES_BLOCK_SIZE], pad[AES_BLOCK_SIZE]; ++ const u8 *pos, *end; ++ size_t i, e, left, total_len; + +- memcpy(mic, out, CMAC_TLEN); ++ memset(cbc, 0, AES_BLOCK_SIZE); ++ ++ total_len = 0; ++ for (e = 0; e < num_elem; e++) ++ total_len += len[e]; ++ left = total_len; ++ ++ e = 0; ++ pos = addr[0]; ++ end = pos + len[0]; ++ ++ while (left >= AES_BLOCK_SIZE) { ++ for (i = 0; i < AES_BLOCK_SIZE; i++) { ++ cbc[i] ^= *pos++; ++ if (pos >= end) { ++ e++; ++ pos = addr[e]; ++ end = pos + len[e]; ++ } ++ } ++ if (left > AES_BLOCK_SIZE) ++ crypto_cipher_encrypt_one(tfm, cbc, cbc); ++ left -= AES_BLOCK_SIZE; ++ } ++ ++ memset(pad, 0, AES_BLOCK_SIZE); ++ crypto_cipher_encrypt_one(tfm, pad, pad); ++ gf_mulx(pad); ++ ++ if (left || total_len == 0) { ++ for (i = 0; i < left; i++) { ++ cbc[i] ^= *pos++; ++ if (pos >= end) { ++ e++; ++ pos = addr[e]; ++ end = pos + len[e]; ++ } ++ } ++ cbc[left] ^= 0x80; ++ gf_mulx(pad); ++ } ++ ++ for (i = 0; i < AES_BLOCK_SIZE; i++) ++ pad[i] ^= cbc[i]; ++ crypto_cipher_encrypt_one(tfm, pad, pad); ++ memcpy(mac, pad, mac_len); + } + +-void ieee80211_aes_cmac_256(struct crypto_shash *tfm, const u8 *aad, ++ ++void ieee80211_aes_cmac(struct crypto_cipher *tfm, const u8 *aad, ++ const u8 *data, size_t data_len, u8 *mic) ++{ ++ const u8 *addr[3]; ++ size_t len[3]; ++ u8 zero[CMAC_TLEN]; ++ ++ memset(zero, 0, CMAC_TLEN); ++ addr[0] = aad; ++ len[0] = AAD_LEN; ++ addr[1] = data; ++ len[1] = data_len - CMAC_TLEN; ++ addr[2] = zero; ++ len[2] = CMAC_TLEN; ++ ++ aes_cmac_vector(tfm, 3, addr, len, mic, CMAC_TLEN); ++} ++ ++void ieee80211_aes_cmac_256(struct crypto_cipher *tfm, const u8 *aad, + const u8 *data, size_t data_len, u8 *mic) + { +- SHASH_DESC_ON_STACK(desc, tfm); ++ const u8 *addr[3]; ++ size_t len[3]; ++ u8 zero[CMAC_TLEN_256]; + +- desc->tfm = tfm; ++ memset(zero, 0, CMAC_TLEN_256); ++ addr[0] = aad; ++ len[0] = AAD_LEN; ++ addr[1] = data; ++ len[1] = data_len - CMAC_TLEN_256; ++ addr[2] = zero; ++ len[2] = CMAC_TLEN_256; + +- crypto_shash_init(desc); +- crypto_shash_update(desc, aad, AAD_LEN); +- crypto_shash_update(desc, data, data_len - CMAC_TLEN_256); +- crypto_shash_finup(desc, zero, CMAC_TLEN_256, mic); ++ aes_cmac_vector(tfm, 3, addr, len, mic, CMAC_TLEN_256); + } + +-struct crypto_shash *ieee80211_aes_cmac_key_setup(const u8 key[], +- size_t key_len) ++struct crypto_cipher *ieee80211_aes_cmac_key_setup(const u8 key[], ++ size_t key_len) + { +- struct crypto_shash *tfm; ++ struct crypto_cipher *tfm; + +- tfm = crypto_alloc_shash("cmac(aes)", 0, 0); ++ tfm = crypto_alloc_cipher("aes", 0, CRYPTO_ALG_ASYNC); + if (!IS_ERR(tfm)) +- crypto_shash_setkey(tfm, key, key_len); ++ crypto_cipher_setkey(tfm, key, key_len); + + return tfm; + } + +-void ieee80211_aes_cmac_key_free(struct crypto_shash *tfm) ++ ++void ieee80211_aes_cmac_key_free(struct crypto_cipher *tfm) + { +- crypto_free_shash(tfm); ++ crypto_free_cipher(tfm); + } +--- a/net/mac80211/aes_cmac.h ++++ b/net/mac80211/aes_cmac.h +@@ -10,14 +10,13 @@ + #define AES_CMAC_H + + #include +-#include + +-struct crypto_shash *ieee80211_aes_cmac_key_setup(const u8 key[], +- size_t key_len); +-void ieee80211_aes_cmac(struct crypto_shash *tfm, const u8 *aad, ++struct crypto_cipher *ieee80211_aes_cmac_key_setup(const u8 key[], ++ size_t key_len); ++void ieee80211_aes_cmac(struct crypto_cipher *tfm, const u8 *aad, + const u8 *data, size_t data_len, u8 *mic); +-void ieee80211_aes_cmac_256(struct crypto_shash *tfm, const u8 *aad, ++void ieee80211_aes_cmac_256(struct crypto_cipher *tfm, const u8 *aad, + const u8 *data, size_t data_len, u8 *mic); +-void ieee80211_aes_cmac_key_free(struct crypto_shash *tfm); ++void ieee80211_aes_cmac_key_free(struct crypto_cipher *tfm); + + #endif /* AES_CMAC_H */ +--- a/net/mac80211/key.h ++++ b/net/mac80211/key.h +@@ -93,7 +93,7 @@ struct ieee80211_key { + } ccmp; + struct { + u8 rx_pn[IEEE80211_CMAC_PN_LEN]; +- struct crypto_shash *tfm; ++ struct crypto_cipher *tfm; + u32 replays; /* dot11RSNAStatsCMACReplays */ + u32 icverrors; /* dot11RSNAStatsCMACICVErrors */ + } aes_cmac; diff --git a/package/kernel/mac80211/patches/132-mac80211-remove-cmac-dependency.patch b/package/kernel/mac80211/patches/132-mac80211-remove-cmac-dependency.patch new file mode 100644 index 0000000000..9d185e61e7 --- /dev/null +++ b/package/kernel/mac80211/patches/132-mac80211-remove-cmac-dependency.patch @@ -0,0 +1,10 @@ +--- a/net/mac80211/Kconfig ++++ b/net/mac80211/Kconfig +@@ -5,7 +5,6 @@ config MAC80211 + depends on CRYPTO + depends on CRYPTO_ARC4 + depends on CRYPTO_AES +- depends on CRYPTO_CMAC + depends on CRC32 + ---help--- + This option enables the hardware independent IEEE 802.11 diff --git a/package/kernel/mac80211/patches/140-tweak-TSQ-setting.patch b/package/kernel/mac80211/patches/140-tweak-TSQ-setting.patch new file mode 100644 index 0000000000..6e9a07a927 --- /dev/null +++ b/package/kernel/mac80211/patches/140-tweak-TSQ-setting.patch @@ -0,0 +1,15 @@ +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -3750,6 +3750,12 @@ out: + netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, + struct net_device *dev) + { ++#if defined(sk_pacing_shift) || LINUX_VERSION_IS_GEQ(4,15,0) ++ if (skb->sk && sk_fullsock(skb->sk) && ++ skb->sk->sk_pacing_shift != 6) ++ skb->sk->sk_pacing_shift = 6; ++#endif ++ + if (unlikely(ieee80211_multicast_to_unicast(skb, dev))) { + struct sk_buff_head queue; + diff --git a/package/kernel/mac80211/patches/150-disable_addr_notifier.patch b/package/kernel/mac80211/patches/150-disable_addr_notifier.patch index ca1e53f8df..781dd3c1bc 100644 --- a/package/kernel/mac80211/patches/150-disable_addr_notifier.patch +++ b/package/kernel/mac80211/patches/150-disable_addr_notifier.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/main.c +++ b/net/mac80211/main.c -@@ -291,7 +291,7 @@ void ieee80211_restart_hw(struct ieee802 +@@ -292,7 +292,7 @@ void ieee80211_restart_hw(struct ieee802 } EXPORT_SYMBOL(ieee80211_restart_hw); @@ -9,7 +9,7 @@ static int ieee80211_ifa_changed(struct notifier_block *nb, unsigned long data, void *arg) { -@@ -350,7 +350,7 @@ static int ieee80211_ifa_changed(struct +@@ -351,7 +351,7 @@ static int ieee80211_ifa_changed(struct } #endif @@ -18,7 +18,7 @@ static int ieee80211_ifa6_changed(struct notifier_block *nb, unsigned long data, void *arg) { -@@ -1111,14 +1111,14 @@ int ieee80211_register_hw(struct ieee802 +@@ -1114,14 +1114,14 @@ int ieee80211_register_hw(struct ieee802 if (result) goto fail_flows; @@ -35,7 +35,7 @@ local->ifa6_notifier.notifier_call = ieee80211_ifa6_changed; result = register_inet6addr_notifier(&local->ifa6_notifier); if (result) -@@ -1127,13 +1127,13 @@ int ieee80211_register_hw(struct ieee802 +@@ -1130,13 +1130,13 @@ int ieee80211_register_hw(struct ieee802 return 0; @@ -52,7 +52,7 @@ fail_ifa: #endif ieee80211_txq_teardown_flows(local); -@@ -1163,10 +1163,10 @@ void ieee80211_unregister_hw(struct ieee +@@ -1166,10 +1166,10 @@ void ieee80211_unregister_hw(struct ieee tasklet_kill(&local->tx_pending_tasklet); tasklet_kill(&local->tasklet); diff --git a/package/kernel/mac80211/patches/210-ap_scan.patch b/package/kernel/mac80211/patches/210-ap_scan.patch index 3b613bba0e..8ade963c9f 100644 --- a/package/kernel/mac80211/patches/210-ap_scan.patch +++ b/package/kernel/mac80211/patches/210-ap_scan.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -2165,7 +2165,7 @@ static int ieee80211_scan(struct wiphy * +@@ -2215,7 +2215,7 @@ static int ieee80211_scan(struct wiphy * * the frames sent while scanning on other channel will be * lost) */ diff --git a/package/kernel/mac80211/patches/301-ath9k_hw-issue-external-reset-for-QCA955x.patch b/package/kernel/mac80211/patches/301-ath9k_hw-issue-external-reset-for-QCA955x.patch deleted file mode 100644 index 5eb69b898d..0000000000 --- a/package/kernel/mac80211/patches/301-ath9k_hw-issue-external-reset-for-QCA955x.patch +++ /dev/null @@ -1,129 +0,0 @@ -From: Felix Fietkau -Date: Sat, 9 Jul 2016 15:26:44 +0200 -Subject: [PATCH] ath9k_hw: issue external reset for QCA955x - -The RTC interface on the SoC needs to be reset along with the rest of -the WMAC. - -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1271,39 +1271,56 @@ void ath9k_hw_get_delta_slope_vals(struc - *coef_exponent = coef_exp - 16; - } - --/* AR9330 WAR: -- * call external reset function to reset WMAC if: -- * - doing a cold reset -- * - we have pending frames in the TX queues. -- */ --static bool ath9k_hw_ar9330_reset_war(struct ath_hw *ah, int type) -+static bool ath9k_hw_need_external_reset(struct ath_hw *ah, int type) - { -- int i, npend = 0; -+ int i; - -- for (i = 0; i < AR_NUM_QCU; i++) { -- npend = ath9k_hw_numtxpending(ah, i); -- if (npend) -- break; -- } -- -- if (ah->external_reset && -- (npend || type == ATH9K_RESET_COLD)) { -- int reset_err = 0; -- -- ath_dbg(ath9k_hw_common(ah), RESET, -- "reset MAC via external reset\n"); -- -- reset_err = ah->external_reset(); -- if (reset_err) { -- ath_err(ath9k_hw_common(ah), -- "External reset failed, err=%d\n", -- reset_err); -- return false; -+ if (type == ATH9K_RESET_COLD) -+ return true; -+ -+ if (AR_SREV_9550(ah)) -+ return true; -+ -+ /* AR9330 WAR: -+ * call external reset function to reset WMAC if: -+ * - doing a cold reset -+ * - we have pending frames in the TX queues. -+ */ -+ if (AR_SREV_9330(ah)) { -+ for (i = 0; i < AR_NUM_QCU; i++) { -+ if (ath9k_hw_numtxpending(ah, i)) -+ return true; - } -+ } -+ -+ return false; -+} -+ -+static bool ath9k_hw_external_reset(struct ath_hw *ah, int type) -+{ -+ int err; -+ -+ if (!ah->external_reset || !ath9k_hw_need_external_reset(ah, type)) -+ return true; -+ -+ ath_dbg(ath9k_hw_common(ah), RESET, -+ "reset MAC via external reset\n"); - -- REG_WRITE(ah, AR_RTC_RESET, 1); -+ err = ah->external_reset(); -+ if (err) { -+ ath_err(ath9k_hw_common(ah), -+ "External reset failed, err=%d\n", err); -+ return false; - } - -+ if (AR_SREV_9550(ah)) { -+ REG_WRITE(ah, AR_RTC_RESET, 0); -+ udelay(10); -+ } -+ -+ REG_WRITE(ah, AR_RTC_RESET, 1); -+ udelay(10); -+ - return true; - } - -@@ -1356,24 +1373,24 @@ static bool ath9k_hw_set_reset(struct at - rst_flags |= AR_RTC_RC_MAC_COLD; - } - -- if (AR_SREV_9330(ah)) { -- if (!ath9k_hw_ar9330_reset_war(ah, type)) -- return false; -- } -- - if (ath9k_hw_mci_is_enabled(ah)) - ar9003_mci_check_gpm_offset(ah); - - /* DMA HALT added to resolve ar9300 and ar9580 bus error during -- * RTC_RC reg read -+ * RTC_RC reg read. Also needed for AR9550 external reset - */ -- if (AR_SREV_9300(ah) || AR_SREV_9580(ah)) { -+ if (AR_SREV_9300(ah) || AR_SREV_9580(ah) || AR_SREV_9550(ah)) { - REG_SET_BIT(ah, AR_CFG, AR_CFG_HALT_REQ); - ath9k_hw_wait(ah, AR_CFG, AR_CFG_HALT_ACK, AR_CFG_HALT_ACK, - 20 * AH_WAIT_TIMEOUT); -- REG_CLR_BIT(ah, AR_CFG, AR_CFG_HALT_REQ); - } - -+ if (!AR_SREV_9100(ah)) -+ ath9k_hw_external_reset(ah, type); -+ -+ if (AR_SREV_9300(ah) || AR_SREV_9580(ah)) -+ REG_CLR_BIT(ah, AR_CFG, AR_CFG_HALT_REQ); -+ - REG_WRITE(ah, AR_RTC_RC, rst_flags); - - REGWRITE_BUFFER_FLUSH(ah); diff --git a/package/kernel/mac80211/patches/301-v4.15-mac80211-properly-free-requested-but-not-started-TX-.patch b/package/kernel/mac80211/patches/301-v4.15-mac80211-properly-free-requested-but-not-started-TX-.patch new file mode 100644 index 0000000000..ecc5e49120 --- /dev/null +++ b/package/kernel/mac80211/patches/301-v4.15-mac80211-properly-free-requested-but-not-started-TX-.patch @@ -0,0 +1,37 @@ +From: Johannes Berg +Date: Mon, 20 Nov 2017 17:01:44 +0100 +Subject: [PATCH] mac80211: properly free requested-but-not-started TX agg + sessions + +When deleting a station or otherwise tearing down all aggregation +sessions, make sure to delete requested but not yet started ones, +to avoid the following scenario: + + * session is requested, added to tid_start_tx[] + * ieee80211_ba_session_work() runs, gets past BLOCK_BA check + * ieee80211_sta_tear_down_BA_sessions() runs, locks &sta->ampdu_mlme.mtx, + e.g. while deleting the station - deleting all active sessions + * ieee80211_ba_session_work() continues since tear down flushes it, and + calls ieee80211_tx_ba_session_handle_start() for the new session, arms + the timer for it + * station deletion continues to __cleanup_single_sta() and frees the + session struct, while the timer is armed + +Reported-by: Fengguang Wu +Signed-off-by: Johannes Berg +--- + +--- a/net/mac80211/agg-tx.c ++++ b/net/mac80211/agg-tx.c +@@ -330,6 +330,11 @@ int ___ieee80211_stop_tx_ba_session(stru + + spin_lock_bh(&sta->lock); + ++ /* free struct pending for start, if present */ ++ tid_tx = sta->ampdu_mlme.tid_start_tx[tid]; ++ kfree(tid_tx); ++ sta->ampdu_mlme.tid_start_tx[tid] = NULL; ++ + tid_tx = rcu_dereference_protected_tid_tx(sta, tid); + if (!tid_tx) { + spin_unlock_bh(&sta->lock); diff --git a/package/kernel/mac80211/patches/302-v4.15-mac80211-mesh-drop-frames-appearing-to-be-from-us.patch b/package/kernel/mac80211/patches/302-v4.15-mac80211-mesh-drop-frames-appearing-to-be-from-us.patch new file mode 100644 index 0000000000..839e927880 --- /dev/null +++ b/package/kernel/mac80211/patches/302-v4.15-mac80211-mesh-drop-frames-appearing-to-be-from-us.patch @@ -0,0 +1,25 @@ +From: Johannes Berg +Date: Thu, 4 Jan 2018 15:51:53 +0100 +Subject: [PATCH] mac80211: mesh: drop frames appearing to be from us + +If there are multiple mesh stations with the same MAC address, +they will both get confused and start throwing warnings. + +Obviously in this case nothing can actually work anyway, so just +drop frames that look like they're from ourselves early on. + +Reported-by: Gui Iribarren +Signed-off-by: Johannes Berg +--- + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -3632,6 +3632,8 @@ static bool ieee80211_accept_frame(struc + } + return true; + case NL80211_IFTYPE_MESH_POINT: ++ if (ether_addr_equal(sdata->vif.addr, hdr->addr2)) ++ return false; + if (multicast) + return true; + return ether_addr_equal(sdata->vif.addr, hdr->addr1); diff --git a/package/kernel/mac80211/patches/304-ath9k-force-rx_clear-when-disabling-rx.patch b/package/kernel/mac80211/patches/304-ath9k-force-rx_clear-when-disabling-rx.patch deleted file mode 100644 index eb6862db6d..0000000000 --- a/package/kernel/mac80211/patches/304-ath9k-force-rx_clear-when-disabling-rx.patch +++ /dev/null @@ -1,35 +0,0 @@ -From: Felix Fietkau -Date: Sun, 7 Jun 2015 13:53:35 +0200 -Subject: [PATCH] ath9k: force rx_clear when disabling rx - -This makes stopping Rx more reliable and should reduce the frequency of -Rx related DMA stop warnings. Don't use rx_clear in TX99 mode. - -Cc: stable@vger.kernel.org -Signed-off-by: Felix Fietkau -Signed-off-by: Helmut Schaa ---- - ---- a/drivers/net/wireless/ath/ath9k/mac.c -+++ b/drivers/net/wireless/ath/ath9k/mac.c -@@ -677,13 +677,18 @@ void ath9k_hw_startpcureceive(struct ath - - ath9k_ani_reset(ah, is_scanning); - -- REG_CLR_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); -+ REG_CLR_BIT(ah, AR_DIAG_SW, -+ AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT | AR_DIAG_FORCE_RX_CLEAR); - } - EXPORT_SYMBOL(ath9k_hw_startpcureceive); - - void ath9k_hw_abortpcurecv(struct ath_hw *ah) - { -- REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_ABORT | AR_DIAG_RX_DIS); -+ u32 reg = AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT; -+ -+ if (!IS_ENABLED(CPTCFG_ATH9K_TX99)) -+ reg |= AR_DIAG_FORCE_RX_CLEAR; -+ REG_SET_BIT(ah, AR_DIAG_SW, reg); - - ath9k_hw_disable_mib_counters(ah); - } diff --git a/package/kernel/mac80211/patches/305-ath9k-limit-retries-for-powersave-response-frames.patch b/package/kernel/mac80211/patches/305-ath9k-limit-retries-for-powersave-response-frames.patch deleted file mode 100644 index 5923594be3..0000000000 --- a/package/kernel/mac80211/patches/305-ath9k-limit-retries-for-powersave-response-frames.patch +++ /dev/null @@ -1,96 +0,0 @@ -From: Felix Fietkau -Date: Thu, 2 Jul 2015 15:20:56 +0200 -Subject: [PATCH] ath9k: limit retries for powersave response frames - -In some cases, the channel might be busy enough that an ath9k AP's -response to PS-Poll frames might be too slow and the station has already -gone to sleep. To avoid wasting too much airtime on this, limit the -number of retries on such frames and ensure that no sample rate gets -used. - -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -188,10 +188,25 @@ static void ath_send_bar(struct ath_atx_ - } - - static void ath_set_rates(struct ieee80211_vif *vif, struct ieee80211_sta *sta, -- struct ath_buf *bf) -+ struct ath_buf *bf, bool ps) - { -+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(bf->bf_mpdu); -+ -+ if (ps) { -+ /* Clear the first rate to avoid using a sample rate for PS frames */ -+ info->control.rates[0].idx = -1; -+ info->control.rates[0].count = 0; -+ } -+ - ieee80211_get_tx_rates(vif, sta, bf->bf_mpdu, bf->rates, - ARRAY_SIZE(bf->rates)); -+ if (!ps) -+ return; -+ -+ if (bf->rates[0].count > 2) -+ bf->rates[0].count = 2; -+ -+ bf->rates[1].idx = -1; - } - - static void ath_txq_skb_done(struct ath_softc *sc, struct ath_txq *txq, -@@ -1522,7 +1537,7 @@ ath_tx_form_burst(struct ath_softc *sc, - break; - } - -- ath_set_rates(tid->an->vif, tid->an->sta, bf); -+ ath_set_rates(tid->an->vif, tid->an->sta, bf, false); - } while (1); - } - -@@ -1552,7 +1567,7 @@ static bool ath_tx_sched_aggr(struct ath - return false; - } - -- ath_set_rates(tid->an->vif, tid->an->sta, bf); -+ ath_set_rates(tid->an->vif, tid->an->sta, bf, false); - if (aggr) - aggr_len = ath_tx_form_aggr(sc, txq, tid, &bf_q, bf); - else -@@ -1710,7 +1725,7 @@ void ath9k_release_buffered_frames(struc - break; - - list_add_tail(&bf->list, &bf_q); -- ath_set_rates(tid->an->vif, tid->an->sta, bf); -+ ath_set_rates(tid->an->vif, tid->an->sta, bf, true); - if (bf_isampdu(bf)) { - ath_tx_addto_baw(sc, tid, bf); - bf->bf_state.bf_type &= ~BUF_AGGR; -@@ -2410,7 +2425,7 @@ int ath_tx_start(struct ieee80211_hw *hw - if (txctl->paprd) - bf->bf_state.bfs_paprd_timestamp = jiffies; - -- ath_set_rates(vif, sta, bf); -+ ath_set_rates(vif, sta, bf, ps_resp); - ath_tx_send_normal(sc, txq, tid, skb); - - out: -@@ -2449,7 +2464,7 @@ void ath_tx_cabq(struct ieee80211_hw *hw - break; - - bf->bf_lastbf = bf; -- ath_set_rates(vif, NULL, bf); -+ ath_set_rates(vif, NULL, bf, false); - ath_buf_set_rate(sc, bf, &info, fi->framelen, false); - duration += info.rates[0].PktDuration; - if (bf_tail) -@@ -2968,7 +2983,7 @@ int ath9k_tx99_send(struct ath_softc *sc - return -EINVAL; - } - -- ath_set_rates(sc->tx99_vif, NULL, bf); -+ ath_set_rates(sc->tx99_vif, NULL, bf, false); - - ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, bf->bf_daddr); - ath9k_hw_tx99_start(sc->sc_ah, txctl->txq->axq_qnum); diff --git a/package/kernel/mac80211/patches/306-Revert-ath9k-interpret-requested-txpower-in-EIRP-dom.patch b/package/kernel/mac80211/patches/306-Revert-ath9k-interpret-requested-txpower-in-EIRP-dom.patch deleted file mode 100644 index 956ab83903..0000000000 --- a/package/kernel/mac80211/patches/306-Revert-ath9k-interpret-requested-txpower-in-EIRP-dom.patch +++ /dev/null @@ -1,37 +0,0 @@ -From: Felix Fietkau -Date: Sat, 14 May 2016 14:51:02 +0200 -Subject: [PATCH] Revert "ath9k: interpret requested txpower in EIRP - domain" - -This reverts commit 71f5137bf010c6faffab50c0ec15374c59c4a411. ---- - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -2931,7 +2931,8 @@ void ath9k_hw_apply_txpower(struct ath_h - { - struct ath_regulatory *reg = ath9k_hw_regulatory(ah); - struct ieee80211_channel *channel; -- int chan_pwr, new_pwr; -+ int chan_pwr, new_pwr, max_gain; -+ int ant_gain, ant_reduction = 0; - - if (!chan) - return; -@@ -2939,10 +2940,15 @@ void ath9k_hw_apply_txpower(struct ath_h - channel = chan->chan; - chan_pwr = min_t(int, channel->max_power * 2, MAX_RATE_POWER); - new_pwr = min_t(int, chan_pwr, reg->power_limit); -+ max_gain = chan_pwr - new_pwr + channel->max_antenna_gain * 2; -+ -+ ant_gain = get_antenna_gain(ah, chan); -+ if (ant_gain > max_gain) -+ ant_reduction = ant_gain - max_gain; - - ah->eep_ops->set_txpower(ah, chan, - ath9k_regd_get_ctl(reg, chan), -- get_antenna_gain(ah, chan), new_pwr, test); -+ ant_reduction, new_pwr, test); - } - - void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test) diff --git a/package/kernel/mac80211/patches/307-mac80211-add-hdrlen-to-ieee80211_tx_data.patch b/package/kernel/mac80211/patches/307-mac80211-add-hdrlen-to-ieee80211_tx_data.patch deleted file mode 100644 index 1a6fd8471c..0000000000 --- a/package/kernel/mac80211/patches/307-mac80211-add-hdrlen-to-ieee80211_tx_data.patch +++ /dev/null @@ -1,219 +0,0 @@ -From: Janusz Dziedzic -Date: Fri, 19 Feb 2016 11:01:49 +0100 -Subject: [PATCH] mac80211: add hdrlen to ieee80211_tx_data - -Add hdrlen to ieee80211_tx_data and use this -when wep/ccmd/tkip. This is preparation for -aligned4 code. - -Signed-off-by: Janusz Dziedzic ---- - ---- a/net/mac80211/ieee80211_i.h -+++ b/net/mac80211/ieee80211_i.h -@@ -177,6 +177,7 @@ struct ieee80211_tx_data { - struct ieee80211_tx_rate rate; - - unsigned int flags; -+ unsigned int hdrlen; - }; - - ---- a/net/mac80211/tx.c -+++ b/net/mac80211/tx.c -@@ -925,7 +925,7 @@ ieee80211_tx_h_fragment(struct ieee80211 - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); - struct ieee80211_hdr *hdr = (void *)skb->data; - int frag_threshold = tx->local->hw.wiphy->frag_threshold; -- int hdrlen; -+ int hdrlen = tx->hdrlen; - int fragnum; - - /* no matter what happens, tx->skb moves to tx->skbs */ -@@ -946,8 +946,6 @@ ieee80211_tx_h_fragment(struct ieee80211 - if (WARN_ON(info->flags & IEEE80211_TX_CTL_AMPDU)) - return TX_DROP; - -- hdrlen = ieee80211_hdrlen(hdr->frame_control); -- - /* internal error, why isn't DONTFRAG set? */ - if (WARN_ON(skb->len + FCS_LEN <= frag_threshold)) - return TX_DROP; -@@ -1179,6 +1177,8 @@ ieee80211_tx_prepare(struct ieee80211_su - - hdr = (struct ieee80211_hdr *) skb->data; - -+ tx->hdrlen = ieee80211_hdrlen(hdr->frame_control); -+ - if (likely(sta)) { - if (!IS_ERR(sta)) - tx->sta = sta; -@@ -3437,6 +3437,7 @@ begin: - tx.local = local; - tx.skb = skb; - tx.sdata = vif_to_sdata(info->control.vif); -+ tx.hdrlen = ieee80211_padded_hdrlen(hw, hdr->frame_control); - - if (txq->sta) - tx.sta = container_of(txq->sta, struct sta_info, sta); -@@ -3731,6 +3732,7 @@ ieee80211_build_data_template(struct iee - hdr = (void *)skb->data; - tx.sta = sta_info_get(sdata, hdr->addr1); - tx.skb = skb; -+ tx.hdrlen = ieee80211_padded_hdrlen(&tx.local->hw, hdr->frame_control); - - if (ieee80211_tx_h_select_key(&tx) != TX_CONTINUE) { - rcu_read_unlock(); ---- a/net/mac80211/util.c -+++ b/net/mac80211/util.c -@@ -1227,6 +1227,7 @@ void ieee80211_send_auth(struct ieee8021 - struct ieee80211_local *local = sdata->local; - struct sk_buff *skb; - struct ieee80211_mgmt *mgmt; -+ unsigned int hdrlen; - int err; - - /* 24 + 6 = header + auth_algo + auth_transaction + status_code */ -@@ -1251,8 +1252,10 @@ void ieee80211_send_auth(struct ieee8021 - memcpy(skb_put(skb, extra_len), extra, extra_len); - - if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) { -+ hdrlen = ieee80211_hdrlen(mgmt->frame_control); - mgmt->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); -- err = ieee80211_wep_encrypt(local, skb, key, key_len, key_idx); -+ err = ieee80211_wep_encrypt(local, skb, hdrlen, key, -+ key_len, key_idx); - WARN_ON(err); - } - ---- a/net/mac80211/wep.c -+++ b/net/mac80211/wep.c -@@ -89,11 +89,11 @@ static void ieee80211_wep_get_iv(struct - - static u8 *ieee80211_wep_add_iv(struct ieee80211_local *local, - struct sk_buff *skb, -+ unsigned int hdrlen, - int keylen, int keyidx) - { - struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); -- unsigned int hdrlen; - u8 *newhdr; - - hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); -@@ -101,7 +101,6 @@ static u8 *ieee80211_wep_add_iv(struct i - if (WARN_ON(skb_headroom(skb) < IEEE80211_WEP_IV_LEN)) - return NULL; - -- hdrlen = ieee80211_hdrlen(hdr->frame_control); - newhdr = skb_push(skb, IEEE80211_WEP_IV_LEN); - memmove(newhdr, newhdr + IEEE80211_WEP_IV_LEN, hdrlen); - -@@ -160,6 +159,7 @@ int ieee80211_wep_encrypt_data(struct cr - */ - int ieee80211_wep_encrypt(struct ieee80211_local *local, - struct sk_buff *skb, -+ unsigned int hdrlen, - const u8 *key, int keylen, int keyidx) - { - u8 *iv; -@@ -169,7 +169,7 @@ int ieee80211_wep_encrypt(struct ieee802 - if (WARN_ON(skb_tailroom(skb) < IEEE80211_WEP_ICV_LEN)) - return -1; - -- iv = ieee80211_wep_add_iv(local, skb, keylen, keyidx); -+ iv = ieee80211_wep_add_iv(local, skb, hdrlen, keylen, keyidx); - if (!iv) - return -1; - -@@ -307,13 +307,14 @@ static int wep_encrypt_skb(struct ieee80 - struct ieee80211_key_conf *hw_key = info->control.hw_key; - - if (!hw_key) { -- if (ieee80211_wep_encrypt(tx->local, skb, tx->key->conf.key, -+ if (ieee80211_wep_encrypt(tx->local, skb, tx->hdrlen, -+ tx->key->conf.key, - tx->key->conf.keylen, - tx->key->conf.keyidx)) - return -1; - } else if ((hw_key->flags & IEEE80211_KEY_FLAG_GENERATE_IV) || - (hw_key->flags & IEEE80211_KEY_FLAG_PUT_IV_SPACE)) { -- if (!ieee80211_wep_add_iv(tx->local, skb, -+ if (!ieee80211_wep_add_iv(tx->local, skb, tx->hdrlen, - tx->key->conf.keylen, - tx->key->conf.keyidx)) - return -1; ---- a/net/mac80211/wep.h -+++ b/net/mac80211/wep.h -@@ -22,6 +22,7 @@ int ieee80211_wep_encrypt_data(struct cr - size_t klen, u8 *data, size_t data_len); - int ieee80211_wep_encrypt(struct ieee80211_local *local, - struct sk_buff *skb, -+ unsigned int hdrlen, - const u8 *key, int keylen, int keyidx); - int ieee80211_wep_decrypt_data(struct crypto_cipher *tfm, u8 *rc4key, - size_t klen, u8 *data, size_t data_len); ---- a/net/mac80211/wpa.c -+++ b/net/mac80211/wpa.c -@@ -43,7 +43,7 @@ ieee80211_tx_h_michael_mic_add(struct ie - skb->len < 24 || !ieee80211_is_data_present(hdr->frame_control)) - return TX_CONTINUE; - -- hdrlen = ieee80211_hdrlen(hdr->frame_control); -+ hdrlen = tx->hdrlen; - if (skb->len < hdrlen) - return TX_DROP; - -@@ -186,7 +186,6 @@ mic_fail_no_key: - - static int tkip_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) - { -- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; - struct ieee80211_key *key = tx->key; - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); - unsigned int hdrlen; -@@ -201,7 +200,7 @@ static int tkip_encrypt_skb(struct ieee8 - return 0; - } - -- hdrlen = ieee80211_hdrlen(hdr->frame_control); -+ hdrlen = tx->hdrlen; - len = skb->len - hdrlen; - - if (info->control.hw_key) -@@ -419,7 +418,7 @@ static int ccmp_encrypt_skb(struct ieee8 - return 0; - } - -- hdrlen = ieee80211_hdrlen(hdr->frame_control); -+ hdrlen = tx->hdrlen; - len = skb->len - hdrlen; - - if (info->control.hw_key) -@@ -652,7 +651,7 @@ static int gcmp_encrypt_skb(struct ieee8 - return 0; - } - -- hdrlen = ieee80211_hdrlen(hdr->frame_control); -+ hdrlen = tx->hdrlen; - len = skb->len - hdrlen; - - if (info->control.hw_key) -@@ -792,7 +791,6 @@ static ieee80211_tx_result - ieee80211_crypto_cs_encrypt(struct ieee80211_tx_data *tx, - struct sk_buff *skb) - { -- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; - struct ieee80211_key *key = tx->key; - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); - int hdrlen; -@@ -808,8 +806,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8 - pskb_expand_head(skb, iv_len, 0, GFP_ATOMIC))) - return TX_DROP; - -- hdrlen = ieee80211_hdrlen(hdr->frame_control); -- -+ hdrlen = tx->hdrlen; - pos = skb_push(skb, iv_len); - memmove(pos, pos + iv_len, hdrlen); - diff --git a/package/kernel/mac80211/patches/308-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch b/package/kernel/mac80211/patches/308-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch deleted file mode 100644 index 43455773f1..0000000000 --- a/package/kernel/mac80211/patches/308-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch +++ /dev/null @@ -1,233 +0,0 @@ -From: Janusz Dziedzic -Date: Fri, 19 Feb 2016 11:01:50 +0100 -Subject: [PATCH] mac80211: add NEED_ALIGNED4_SKBS hw flag - -HW/driver should set NEED_ALIGNED4_SKBS flag in case -require aligned skbs to four-byte boundaries. -This affect only TX direction. - -Padding is added after ieee80211_hdr, before IV/LLC. - -Before we have to do memmove(hdrlen) twice in the -dirver. Once before we pass this to HW and next -in tx completion (to be sure monitor will report -this tx frame correctly). - -With this patch we can skip this memmove() and save CPU. - -Currently this was tested with ath9k, both hw/sw crypt for -wep/tkip/ccmp. - -Signed-off-by: Janusz Dziedzic ---- - ---- a/include/net/mac80211.h -+++ b/include/net/mac80211.h -@@ -2043,6 +2043,9 @@ struct ieee80211_txq { - * The stack will not do fragmentation. - * The callback for @set_frag_threshold should be set as well. - * -+ * @IEEE80211_HW_NEEDS_ALIGNED4_SKBS: Driver need aligned skbs to four-byte. -+ * Padding will be added after ieee80211_hdr, before IV/LLC. -+ * - * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays - */ - enum ieee80211_hw_flags { -@@ -2085,6 +2088,7 @@ enum ieee80211_hw_flags { - IEEE80211_HW_TX_FRAG_LIST, - IEEE80211_HW_REPORTS_LOW_ACK, - IEEE80211_HW_SUPPORTS_TX_FRAG, -+ IEEE80211_HW_NEEDS_ALIGNED4_SKBS, - - /* keep last, obviously */ - NUM_IEEE80211_HW_FLAGS ---- a/net/mac80211/debugfs.c -+++ b/net/mac80211/debugfs.c -@@ -211,6 +211,7 @@ static const char *hw_flag_names[] = { - FLAG(TX_FRAG_LIST), - FLAG(REPORTS_LOW_ACK), - FLAG(SUPPORTS_TX_FRAG), -+ FLAG(NEEDS_ALIGNED4_SKBS), - #undef FLAG - }; - ---- a/net/mac80211/ieee80211_i.h -+++ b/net/mac80211/ieee80211_i.h -@@ -1553,6 +1553,29 @@ ieee80211_vif_get_num_mcast_if(struct ie - return -1; - } - -+static inline unsigned int -+ieee80211_hdr_padsize(struct ieee80211_hw *hw, unsigned int hdrlen) -+{ -+ /* -+ * While hdrlen is already aligned to two-byte boundaries, -+ * simple check with & 2 will return correct padsize. -+ */ -+ if (ieee80211_hw_check(hw, NEEDS_ALIGNED4_SKBS)) -+ return hdrlen & 2; -+ return 0; -+} -+ -+static inline unsigned int -+ieee80211_padded_hdrlen(struct ieee80211_hw *hw, __le16 fc) -+{ -+ unsigned int hdrlen; -+ -+ hdrlen = ieee80211_hdrlen(fc); -+ hdrlen += ieee80211_hdr_padsize(hw, hdrlen); -+ -+ return hdrlen; -+} -+ - u64 ieee80211_calculate_rx_timestamp(struct ieee80211_local *local, - struct ieee80211_rx_status *status, - unsigned int mpdu_len, ---- a/net/mac80211/sta_info.h -+++ b/net/mac80211/sta_info.h -@@ -282,7 +282,7 @@ struct ieee80211_fast_tx { - u8 hdr_len; - u8 sa_offs, da_offs, pn_offs; - u8 band; -- u8 hdr[30 + 2 + IEEE80211_FAST_XMIT_MAX_IV + -+ u8 hdr[30 + 2 + 2 + IEEE80211_FAST_XMIT_MAX_IV + - sizeof(rfc1042_header)] __aligned(2); - - struct rcu_head rcu_head; ---- a/net/mac80211/status.c -+++ b/net/mac80211/status.c -@@ -693,9 +693,22 @@ void ieee80211_tx_monitor(struct ieee802 - struct sk_buff *skb2; - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); - struct ieee80211_sub_if_data *sdata; -+ struct ieee80211_hdr *hdr = (void *)skb->data; - struct net_device *prev_dev = NULL; -+ unsigned int hdrlen, padsize; - int rtap_len; - -+ /* Remove padding if was added */ -+ if (ieee80211_hw_check(&local->hw, NEEDS_ALIGNED4_SKBS)) { -+ hdrlen = ieee80211_hdrlen(hdr->frame_control); -+ padsize = ieee80211_hdr_padsize(&local->hw, hdrlen); -+ -+ if (padsize && skb->len > hdrlen + padsize) { -+ memmove(skb->data + padsize, skb->data, hdrlen); -+ skb_pull(skb, padsize); -+ } -+ } -+ - /* send frame to monitor interfaces now */ - rtap_len = ieee80211_tx_radiotap_len(info); - if (WARN_ON_ONCE(skb_headroom(skb) < rtap_len)) { ---- a/net/mac80211/tkip.c -+++ b/net/mac80211/tkip.c -@@ -201,10 +201,12 @@ void ieee80211_get_tkip_p2k(struct ieee8 - { - struct ieee80211_key *key = (struct ieee80211_key *) - container_of(keyconf, struct ieee80211_key, conf); -+ struct ieee80211_hw *hw = &key->local->hw; - const u8 *tk = &key->conf.key[NL80211_TKIP_DATA_OFFSET_ENCR_KEY]; - struct tkip_ctx *ctx = &key->u.tkip.tx; - struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; -- const u8 *data = (u8 *)hdr + ieee80211_hdrlen(hdr->frame_control); -+ const u8 *data = (u8 *)hdr + ieee80211_padded_hdrlen(hw, -+ hdr->frame_control); - u32 iv32 = get_unaligned_le32(&data[4]); - u16 iv16 = data[2] | (data[0] << 8); - ---- a/net/mac80211/tx.c -+++ b/net/mac80211/tx.c -@@ -1176,8 +1176,7 @@ ieee80211_tx_prepare(struct ieee80211_su - info->flags &= ~IEEE80211_TX_INTFL_NEED_TXPROCESSING; - - hdr = (struct ieee80211_hdr *) skb->data; -- -- tx->hdrlen = ieee80211_hdrlen(hdr->frame_control); -+ tx->hdrlen = ieee80211_padded_hdrlen(&local->hw, hdr->frame_control); - - if (likely(sta)) { - if (!IS_ERR(sta)) -@@ -2152,7 +2151,7 @@ netdev_tx_t ieee80211_monitor_start_xmit - goto fail; - - hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr); -- hdrlen = ieee80211_hdrlen(hdr->frame_control); -+ hdrlen = ieee80211_padded_hdrlen(&local->hw, hdr->frame_control); - - if (skb->len < len_rthdr + hdrlen) - goto fail; -@@ -2370,7 +2369,7 @@ static struct sk_buff *ieee80211_build_h - struct ieee80211_chanctx_conf *chanctx_conf; - struct ieee80211_sub_if_data *ap_sdata; - enum nl80211_band band; -- int ret; -+ int padsize, ret; - - if (IS_ERR(sta)) - sta = NULL; -@@ -2590,6 +2589,9 @@ static struct sk_buff *ieee80211_build_h - hdrlen += 2; - } - -+ /* Check aligned4 skb required */ -+ padsize = ieee80211_hdr_padsize(&sdata->local->hw, hdrlen); -+ - /* - * Drop unicast frames to unauthorised stations unless they are - * EAPOL frames from the local station. -@@ -2670,6 +2672,7 @@ static struct sk_buff *ieee80211_build_h - - skb_pull(skb, skip_header_bytes); - head_need = hdrlen + encaps_len + meshhdrlen - skb_headroom(skb); -+ head_need += padsize; - - /* - * So we need to modify the skb header and hence need a copy of -@@ -2702,6 +2705,9 @@ static struct sk_buff *ieee80211_build_h - memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen); - #endif - -+ if (padsize) -+ memset(skb_push(skb, padsize), 0, padsize); -+ - if (ieee80211_is_data_qos(fc)) { - __le16 *qos_control; - -@@ -2877,6 +2883,9 @@ void ieee80211_check_fast_xmit(struct st - fc |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA); - } - -+ /* Check aligned4 skb required */ -+ build.hdr_len += ieee80211_hdr_padsize(&local->hw, build.hdr_len); -+ - /* We store the key here so there's no point in using rcu_dereference() - * but that's fine because the code that changes the pointers will call - * this function after doing so. For a single CPU that would be enough, -@@ -3464,7 +3473,7 @@ begin: - - if (tx.key && - (tx.key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV)) -- pn_offs = ieee80211_hdrlen(hdr->frame_control); -+ pn_offs = tx.hdrlen; - - ieee80211_xmit_fast_finish(sta->sdata, sta, pn_offs, - tx.key, skb); ---- a/net/mac80211/util.c -+++ b/net/mac80211/util.c -@@ -1225,6 +1225,7 @@ void ieee80211_send_auth(struct ieee8021 - u32 tx_flags) - { - struct ieee80211_local *local = sdata->local; -+ struct ieee80211_hw *hw = &local->hw; - struct sk_buff *skb; - struct ieee80211_mgmt *mgmt; - unsigned int hdrlen; -@@ -1252,7 +1253,7 @@ void ieee80211_send_auth(struct ieee8021 - memcpy(skb_put(skb, extra_len), extra, extra_len); - - if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) { -- hdrlen = ieee80211_hdrlen(mgmt->frame_control); -+ hdrlen = ieee80211_padded_hdrlen(hw, mgmt->frame_control); - mgmt->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); - err = ieee80211_wep_encrypt(local, skb, hdrlen, key, - key_len, key_idx); diff --git a/package/kernel/mac80211/patches/308-v4.16-0001-ath9k-move-spectral-scan-support-under-a-separate-co.patch b/package/kernel/mac80211/patches/308-v4.16-0001-ath9k-move-spectral-scan-support-under-a-separate-co.patch new file mode 100644 index 0000000000..703051fe19 --- /dev/null +++ b/package/kernel/mac80211/patches/308-v4.16-0001-ath9k-move-spectral-scan-support-under-a-separate-co.patch @@ -0,0 +1,103 @@ +From 9df7ddc3ed25b7d3473f117a0680b9418adb5753 Mon Sep 17 00:00:00 2001 +Message-Id: <9df7ddc3ed25b7d3473f117a0680b9418adb5753.1515610034.git.mschiffer@universe-factory.net> +From: Matthias Schiffer +Date: Mon, 27 Nov 2017 18:56:22 +0100 +Subject: [PATCH 1/2] ath9k: move spectral scan support under a separate config + symbol + +At the moment, spectral scan support, and with it RELAY, is always enabled +with ATH9K[_HTC]_DEBUGFS. Spectral scan support is currently the only user +of RELAY in ath9k, and it unconditionally reserves a relay channel. + +Having debugfs support in ath9k is often useful even on very small embedded +routers, where we'd rather like to avoid the code size and RAM usage of the +relay support. + +Signed-off-by: Matthias Schiffer +Signed-off-by: Kalle Valo +--- + drivers/net/wireless/ath/ath9k/Kconfig | 14 ++++++++++---- + drivers/net/wireless/ath/ath9k/Makefile | 4 ++-- + drivers/net/wireless/ath/ath9k/common-spectral.h | 4 ++-- + 3 files changed, 14 insertions(+), 8 deletions(-) + +--- a/drivers/net/wireless/ath/ath9k/Kconfig ++++ b/drivers/net/wireless/ath/ath9k/Kconfig +@@ -64,13 +64,12 @@ config ATH9K_DEBUGFS + depends on ATH9K && DEBUG_FS + select MAC80211_DEBUGFS + select ATH9K_COMMON_DEBUG +- depends on RELAY + ---help--- + Say Y, if you need access to ath9k's statistics for + interrupts, rate control, etc. + +- Also required for changing debug message flags at run time. +- As well as access to the FFT/spectral data and TX99. ++ Also required for changing debug message flags at run time and for ++ TX99. + + config ATH9K_STATION_STATISTICS + bool "Detailed station statistics" +@@ -181,7 +180,6 @@ config ATH9K_HTC_DEBUGFS + bool "Atheros ath9k_htc debugging" + depends on ATH9K_HTC && DEBUG_FS + select ATH9K_COMMON_DEBUG +- depends on RELAY + ---help--- + Say Y, if you need access to ath9k_htc's statistics. + As well as access to the FFT/spectral data. +@@ -197,3 +195,11 @@ config ATH9K_HWRNG + + Say Y, feeds the entropy directly from the WiFi driver to the input + pool. ++ ++config ATH9K_COMMON_SPECTRAL ++ bool "Atheros ath9k/ath9k_htc spectral scan support" ++ depends on ATH9K_DEBUGFS || ATH9K_HTC_DEBUGFS ++ depends on RELAY ++ default n ++ ---help--- ++ Say Y to enable access to the FFT/spectral data via debugfs. +--- a/drivers/net/wireless/ath/ath9k/Makefile ++++ b/drivers/net/wireless/ath/ath9k/Makefile +@@ -61,8 +61,8 @@ ath9k_common-y:= common.o \ + common-init.o \ + common-beacon.o \ + +-ath9k_common-$(CPTCFG_ATH9K_COMMON_DEBUG) += common-debug.o \ +- common-spectral.o ++ath9k_common-$(CPTCFG_ATH9K_COMMON_DEBUG) += common-debug.o ++ath9k_common-$(CPTCFG_ATH9K_COMMON_SPECTRAL) += common-spectral.o + + ath9k_htc-y += htc_hst.o \ + hif_usb.o \ +--- a/drivers/net/wireless/ath/ath9k/common-spectral.h ++++ b/drivers/net/wireless/ath/ath9k/common-spectral.h +@@ -151,7 +151,7 @@ static inline u8 spectral_bitmap_weight( + return bins[0] & 0x3f; + } + +-#ifdef CPTCFG_ATH9K_COMMON_DEBUG ++#ifdef CPTCFG_ATH9K_COMMON_SPECTRAL + void ath9k_cmn_spectral_init_debug(struct ath_spec_scan_priv *spec_priv, struct dentry *debugfs_phy); + void ath9k_cmn_spectral_deinit_debug(struct ath_spec_scan_priv *spec_priv); + +@@ -183,6 +183,6 @@ static inline int ath_cmn_process_fft(st + { + return 0; + } +-#endif /* CPTCFG_ATH9K_COMMON_DEBUG */ ++#endif /* CPTCFG_ATH9K_COMMON_SPECTRAL */ + + #endif /* SPECTRAL_H */ +--- a/local-symbols ++++ b/local-symbols +@@ -116,6 +116,7 @@ ATH9K_PCOEM= + ATH9K_HTC= + ATH9K_HTC_DEBUGFS= + ATH9K_HWRNG= ++ATH9K_COMMON_SPECTRAL= + CARL9170= + CARL9170_LEDS= + CARL9170_DEBUGFS= diff --git a/package/kernel/mac80211/patches/309-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch b/package/kernel/mac80211/patches/309-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch deleted file mode 100644 index a62b1bb28e..0000000000 --- a/package/kernel/mac80211/patches/309-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch +++ /dev/null @@ -1,82 +0,0 @@ -From: Chaitanya T K -Date: Mon, 27 Jun 2016 15:23:26 +0530 -Subject: [PATCH] mac80211: minstrel: Enable STBC and LDPC for VHT Rates - -If peer support reception of STBC and LDPC, enable them for better -performance. - -Signed-off-by: Chaitanya TK ---- - ---- a/include/linux/ieee80211.h -+++ b/include/linux/ieee80211.h -@@ -1553,6 +1553,7 @@ struct ieee80211_vht_operation { - #define IEEE80211_VHT_CAP_RXSTBC_3 0x00000300 - #define IEEE80211_VHT_CAP_RXSTBC_4 0x00000400 - #define IEEE80211_VHT_CAP_RXSTBC_MASK 0x00000700 -+#define IEEE80211_VHT_CAP_RXSTBC_SHIFT 8 - #define IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE 0x00000800 - #define IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE 0x00001000 - #define IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT 13 ---- a/net/mac80211/rc80211_minstrel_ht.c -+++ b/net/mac80211/rc80211_minstrel_ht.c -@@ -1130,7 +1130,7 @@ minstrel_ht_update_caps(void *priv, stru - struct minstrel_ht_sta_priv *msp = priv_sta; - struct minstrel_ht_sta *mi = &msp->ht; - struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs; -- u16 sta_cap = sta->ht_cap.cap; -+ u16 ht_cap = sta->ht_cap.cap; - struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap; - struct sta_info *sinfo = container_of(sta, struct sta_info, sta); - int use_vht; -@@ -1138,6 +1138,7 @@ minstrel_ht_update_caps(void *priv, stru - int ack_dur; - int stbc; - int i; -+ bool ldpc = false; - - /* fall back to the old minstrel for legacy stations */ - if (!sta->ht_cap.ht_supported) -@@ -1175,16 +1176,24 @@ minstrel_ht_update_caps(void *priv, stru - } - mi->sample_tries = 4; - -- /* TODO tx_flags for vht - ATM the RC API is not fine-grained enough */ - if (!use_vht) { -- stbc = (sta_cap & IEEE80211_HT_CAP_RX_STBC) >> -+ stbc = (ht_cap & IEEE80211_HT_CAP_RX_STBC) >> - IEEE80211_HT_CAP_RX_STBC_SHIFT; -- mi->tx_flags |= stbc << IEEE80211_TX_CTL_STBC_SHIFT; - -- if (sta_cap & IEEE80211_HT_CAP_LDPC_CODING) -- mi->tx_flags |= IEEE80211_TX_CTL_LDPC; -+ if (ht_cap & IEEE80211_HT_CAP_LDPC_CODING) -+ ldpc = true; -+ } else { -+ stbc = (vht_cap->cap & IEEE80211_VHT_CAP_RXSTBC_MASK) >> -+ IEEE80211_VHT_CAP_RXSTBC_SHIFT; -+ -+ if (vht_cap->cap & IEEE80211_VHT_CAP_RXLDPC) -+ ldpc = true; - } - -+ mi->tx_flags |= stbc << IEEE80211_TX_CTL_STBC_SHIFT; -+ if (ldpc) -+ mi->tx_flags |= IEEE80211_TX_CTL_LDPC; -+ - for (i = 0; i < ARRAY_SIZE(mi->groups); i++) { - u32 gflags = minstrel_mcs_groups[i].flags; - int bw, nss; -@@ -1197,10 +1206,10 @@ minstrel_ht_update_caps(void *priv, stru - - if (gflags & IEEE80211_TX_RC_SHORT_GI) { - if (gflags & IEEE80211_TX_RC_40_MHZ_WIDTH) { -- if (!(sta_cap & IEEE80211_HT_CAP_SGI_40)) -+ if (!(ht_cap & IEEE80211_HT_CAP_SGI_40)) - continue; - } else { -- if (!(sta_cap & IEEE80211_HT_CAP_SGI_20)) -+ if (!(ht_cap & IEEE80211_HT_CAP_SGI_20)) - continue; - } - } diff --git a/package/kernel/mac80211/patches/310-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch b/package/kernel/mac80211/patches/310-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch deleted file mode 100644 index b2a74ccbac..0000000000 --- a/package/kernel/mac80211/patches/310-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch +++ /dev/null @@ -1,50 +0,0 @@ -From: Felix Fietkau -Date: Sun, 28 Aug 2016 13:13:01 +0200 -Subject: [PATCH] ath9k: fix moredata bit in PS buffered frame release - -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -1694,6 +1694,22 @@ void ath_tx_aggr_wakeup(struct ath_softc - } - } - -+ -+static void -+ath9k_set_moredata(struct ath_softc *sc, struct ath_buf *bf, bool val) -+{ -+ struct ieee80211_hdr *hdr; -+ u16 mask = cpu_to_le16(IEEE80211_FCTL_MOREDATA); -+ u16 mask_val = mask * val; -+ -+ hdr = (struct ieee80211_hdr *) bf->bf_mpdu->data; -+ if ((hdr->frame_control & mask) != mask_val) { -+ hdr->frame_control = (hdr->frame_control & ~mask) | mask_val; -+ dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, -+ sizeof(*hdr), DMA_TO_DEVICE); -+ } -+} -+ - void ath9k_release_buffered_frames(struct ieee80211_hw *hw, - struct ieee80211_sta *sta, - u16 tids, int nframes, -@@ -1724,6 +1740,7 @@ void ath9k_release_buffered_frames(struc - if (!bf) - break; - -+ ath9k_set_moredata(sc, bf, true); - list_add_tail(&bf->list, &bf_q); - ath_set_rates(tid->an->vif, tid->an->sta, bf, true); - if (bf_isampdu(bf)) { -@@ -1747,6 +1764,9 @@ void ath9k_release_buffered_frames(struc - if (list_empty(&bf_q)) - return; - -+ if (!more_data) -+ ath9k_set_moredata(sc, bf_tail, false); -+ - info = IEEE80211_SKB_CB(bf_tail->bf_mpdu); - info->flags |= IEEE80211_TX_STATUS_EOSP; - diff --git a/package/kernel/mac80211/patches/310-v4.16-ath9k-discard-undersized-packets.patch b/package/kernel/mac80211/patches/310-v4.16-ath9k-discard-undersized-packets.patch new file mode 100644 index 0000000000..b2b2fcf4aa --- /dev/null +++ b/package/kernel/mac80211/patches/310-v4.16-ath9k-discard-undersized-packets.patch @@ -0,0 +1,25 @@ +From: Felix Fietkau +Date: Wed, 17 Jan 2018 11:11:17 +0100 +Subject: [PATCH] ath9k: discard undersized packets + +Sometimes the hardware will push small packets that trigger a WARN_ON +in mac80211. Discard them early to avoid this issue. + +Reported-by: Stijn Tintel +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/recv.c ++++ b/drivers/net/wireless/ath/ath9k/recv.c +@@ -826,9 +826,9 @@ static int ath9k_rx_skb_preprocess(struc + sc->rx.discard_next = false; + + /* +- * Discard zero-length packets. ++ * Discard zero-length packets and packets smaller than an ACK + */ +- if (!rx_stats->rs_datalen) { ++ if (rx_stats->rs_datalen < 10) { + RX_STAT_INC(rx_len_err); + goto corrupt; + } diff --git a/package/kernel/mac80211/patches/311-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch b/package/kernel/mac80211/patches/311-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch deleted file mode 100644 index 9863dffc90..0000000000 --- a/package/kernel/mac80211/patches/311-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch +++ /dev/null @@ -1,22 +0,0 @@ -From: Felix Fietkau -Date: Sun, 28 Aug 2016 13:13:42 +0200 -Subject: [PATCH] ath9k: clear potentially stale EOSP status bit in - intermediate queues - -Prevents spurious ieee80211_sta_eosp calls. - -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -1004,7 +1004,8 @@ ath_tx_get_tid_subframe(struct ath_softc - bf->bf_lastbf = bf; - - tx_info = IEEE80211_SKB_CB(skb); -- tx_info->flags &= ~IEEE80211_TX_CTL_CLEAR_PS_FILT; -+ tx_info->flags &= ~(IEEE80211_TX_CTL_CLEAR_PS_FILT | -+ IEEE80211_TX_STATUS_EOSP); - - /* - * No aggregation session is running, but there may be frames diff --git a/package/kernel/mac80211/patches/313-ath9k-fix-block-ack-window-tracking-issues.patch b/package/kernel/mac80211/patches/313-ath9k-fix-block-ack-window-tracking-issues.patch deleted file mode 100644 index fb8df08afe..0000000000 --- a/package/kernel/mac80211/patches/313-ath9k-fix-block-ack-window-tracking-issues.patch +++ /dev/null @@ -1,114 +0,0 @@ -From: Felix Fietkau -Date: Tue, 30 Aug 2016 12:44:08 +0200 -Subject: [PATCH] ath9k: fix block-ack window tracking issues - -Ensure that a buffer gets tracked as part of the block-ack window as -soon as it's dequeued from the tid for the first time. Ensure that -double calls to ath_tx_addto_baw (e.g. on retransmission) don't cause -any issues. - -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -62,7 +62,7 @@ static void ath_tx_rc_status(struct ath_ - struct ath_tx_status *ts, int nframes, int nbad, - int txok); - static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid, -- int seqno); -+ struct ath_buf *bf); - static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, - struct ath_txq *txq, - struct ath_atx_tid *tid, -@@ -311,7 +311,7 @@ static void ath_tx_flush_tid(struct ath_ - } - - if (fi->baw_tracked) { -- ath_tx_update_baw(sc, tid, bf->bf_state.seqno); -+ ath_tx_update_baw(sc, tid, bf); - sendbar = true; - } - -@@ -327,10 +327,15 @@ static void ath_tx_flush_tid(struct ath_ - } - - static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid, -- int seqno) -+ struct ath_buf *bf) - { -+ struct ath_frame_info *fi = get_frame_info(bf->bf_mpdu); -+ u16 seqno = bf->bf_state.seqno; - int index, cindex; - -+ if (!fi->baw_tracked) -+ return; -+ - index = ATH_BA_INDEX(tid->seq_start, seqno); - cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1); - -@@ -351,6 +356,9 @@ static void ath_tx_addto_baw(struct ath_ - u16 seqno = bf->bf_state.seqno; - int index, cindex; - -+ if (fi->baw_tracked) -+ return; -+ - index = ATH_BA_INDEX(tid->seq_start, seqno); - cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1); - __set_bit(cindex, tid->tx_buf); -@@ -627,7 +635,7 @@ static void ath_tx_complete_aggr(struct - * complete the acked-ones/xretried ones; update - * block-ack window - */ -- ath_tx_update_baw(sc, tid, seqno); -+ ath_tx_update_baw(sc, tid, bf); - - if (rc_update && (acked_cnt == 1 || txfail_cnt == 1)) { - memcpy(tx_info->control.rates, rates, sizeof(rates)); -@@ -657,7 +665,7 @@ static void ath_tx_complete_aggr(struct - * run out of tx buf. - */ - if (!tbf) { -- ath_tx_update_baw(sc, tid, seqno); -+ ath_tx_update_baw(sc, tid, bf); - - ath_tx_complete_buf(sc, bf, txq, - &bf_head, NULL, ts, -@@ -1046,11 +1054,14 @@ ath_tx_get_tid_subframe(struct ath_softc - - INIT_LIST_HEAD(&bf_head); - list_add(&bf->list, &bf_head); -- ath_tx_update_baw(sc, tid, seqno); -+ ath_tx_update_baw(sc, tid, bf); - ath_tx_complete_buf(sc, bf, txq, &bf_head, NULL, &ts, 0); - continue; - } - -+ if (bf_isampdu(bf)) -+ ath_tx_addto_baw(sc, tid, bf); -+ - return bf; - } - -@@ -1108,8 +1119,6 @@ ath_tx_form_aggr(struct ath_softc *sc, s - bf->bf_next = NULL; - - /* link buffers of this frame to the aggregate */ -- if (!fi->baw_tracked) -- ath_tx_addto_baw(sc, tid, bf); - bf->bf_state.ndelim = ndelim; - - list_add_tail(&bf->list, bf_q); -@@ -1745,10 +1754,8 @@ void ath9k_release_buffered_frames(struc - ath9k_set_moredata(sc, bf, true); - list_add_tail(&bf->list, &bf_q); - ath_set_rates(tid->an->vif, tid->an->sta, bf, true); -- if (bf_isampdu(bf)) { -- ath_tx_addto_baw(sc, tid, bf); -+ if (bf_isampdu(bf)) - bf->bf_state.bf_type &= ~BUF_AGGR; -- } - if (bf_tail) - bf_tail->bf_next = bf; - diff --git a/package/kernel/mac80211/patches/314-ath9k-rename-tx_complete_work-to-hw_check_work.patch b/package/kernel/mac80211/patches/314-ath9k-rename-tx_complete_work-to-hw_check_work.patch deleted file mode 100644 index 5465df3ccf..0000000000 --- a/package/kernel/mac80211/patches/314-ath9k-rename-tx_complete_work-to-hw_check_work.patch +++ /dev/null @@ -1,175 +0,0 @@ -From: Felix Fietkau -Date: Wed, 25 Jan 2017 12:57:05 +0100 -Subject: [PATCH] ath9k: rename tx_complete_work to hw_check_work - -Also include common MAC alive check. This should make the hang checks -more reliable for modes where beacons are not sent and is used as a -starting point for further hang check improvements - -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ath/ath9k/ath9k.h -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -108,7 +108,7 @@ int ath_descdma_setup(struct ath_softc * - #define ATH_AGGR_MIN_QDEPTH 2 - /* minimum h/w qdepth for non-aggregated traffic */ - #define ATH_NON_AGGR_MIN_QDEPTH 8 --#define ATH_TX_COMPLETE_POLL_INT 1000 -+#define ATH_HW_CHECK_POLL_INT 1000 - #define ATH_TXFIFO_DEPTH 8 - #define ATH_TX_ERROR 0x01 - -@@ -745,7 +745,7 @@ void ath9k_csa_update(struct ath_softc * - #define ATH_PAPRD_TIMEOUT 100 /* msecs */ - #define ATH_PLL_WORK_INTERVAL 100 - --void ath_tx_complete_poll_work(struct work_struct *work); -+void ath_hw_check_work(struct work_struct *work); - void ath_reset_work(struct work_struct *work); - bool ath_hw_check(struct ath_softc *sc); - void ath_hw_pll_work(struct work_struct *work); -@@ -1053,7 +1053,7 @@ struct ath_softc { - #ifdef CPTCFG_ATH9K_DEBUGFS - struct ath9k_debug debug; - #endif -- struct delayed_work tx_complete_work; -+ struct delayed_work hw_check_work; - struct delayed_work hw_pll_work; - struct timer_list sleep_timer; - ---- a/drivers/net/wireless/ath/ath9k/init.c -+++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -681,6 +681,7 @@ static int ath9k_init_softc(u16 devid, s - INIT_WORK(&sc->hw_reset_work, ath_reset_work); - INIT_WORK(&sc->paprd_work, ath_paprd_calibrate); - INIT_DELAYED_WORK(&sc->hw_pll_work, ath_hw_pll_work); -+ INIT_DELAYED_WORK(&sc->hw_check_work, ath_hw_check_work); - - ath9k_init_channel_context(sc); - ---- a/drivers/net/wireless/ath/ath9k/link.c -+++ b/drivers/net/wireless/ath/ath9k/link.c -@@ -20,20 +20,13 @@ - * TX polling - checks if the TX engine is stuck somewhere - * and issues a chip reset if so. - */ --void ath_tx_complete_poll_work(struct work_struct *work) -+static bool ath_tx_complete_check(struct ath_softc *sc) - { -- struct ath_softc *sc = container_of(work, struct ath_softc, -- tx_complete_work.work); - struct ath_txq *txq; - int i; -- bool needreset = false; -- - -- if (sc->tx99_state) { -- ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, -- "skip tx hung detection on tx99\n"); -- return; -- } -+ if (sc->tx99_state) -+ return true; - - for (i = 0; i < IEEE80211_NUM_ACS; i++) { - txq = sc->tx.txq_map[i]; -@@ -41,25 +34,36 @@ void ath_tx_complete_poll_work(struct wo - ath_txq_lock(sc, txq); - if (txq->axq_depth) { - if (txq->axq_tx_inprogress) { -- needreset = true; - ath_txq_unlock(sc, txq); -- break; -- } else { -- txq->axq_tx_inprogress = true; -+ goto reset; - } -+ -+ txq->axq_tx_inprogress = true; - } - ath_txq_unlock(sc, txq); - } - -- if (needreset) { -- ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, -- "tx hung, resetting the chip\n"); -- ath9k_queue_reset(sc, RESET_TYPE_TX_HANG); -+ return true; -+ -+reset: -+ ath_dbg(ath9k_hw_common(sc->sc_ah), RESET, -+ "tx hung, resetting the chip\n"); -+ ath9k_queue_reset(sc, RESET_TYPE_TX_HANG); -+ return false; -+ -+} -+ -+void ath_hw_check_work(struct work_struct *work) -+{ -+ struct ath_softc *sc = container_of(work, struct ath_softc, -+ hw_check_work.work); -+ -+ if (!ath_hw_check(sc) || -+ !ath_tx_complete_check(sc)) - return; -- } - -- ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, -- msecs_to_jiffies(ATH_TX_COMPLETE_POLL_INT)); -+ ieee80211_queue_delayed_work(sc->hw, &sc->hw_check_work, -+ msecs_to_jiffies(ATH_HW_CHECK_POLL_INT)); - } - - /* ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -181,7 +181,7 @@ void ath9k_ps_restore(struct ath_softc * - static void __ath_cancel_work(struct ath_softc *sc) - { - cancel_work_sync(&sc->paprd_work); -- cancel_delayed_work_sync(&sc->tx_complete_work); -+ cancel_delayed_work_sync(&sc->hw_check_work); - cancel_delayed_work_sync(&sc->hw_pll_work); - - #ifdef CPTCFG_ATH9K_BTCOEX_SUPPORT -@@ -198,7 +198,8 @@ void ath_cancel_work(struct ath_softc *s - - void ath_restart_work(struct ath_softc *sc) - { -- ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0); -+ ieee80211_queue_delayed_work(sc->hw, &sc->hw_check_work, -+ ATH_HW_CHECK_POLL_INT); - - if (AR_SREV_9340(sc->sc_ah) || AR_SREV_9330(sc->sc_ah)) - ieee80211_queue_delayed_work(sc->hw, &sc->hw_pll_work, -@@ -2091,7 +2092,7 @@ void __ath9k_flush(struct ieee80211_hw * - int timeout; - bool drain_txq; - -- cancel_delayed_work_sync(&sc->tx_complete_work); -+ cancel_delayed_work_sync(&sc->hw_check_work); - - if (ah->ah_flags & AH_UNPLUGGED) { - ath_dbg(common, ANY, "Device has been unplugged!\n"); -@@ -2129,7 +2130,8 @@ void __ath9k_flush(struct ieee80211_hw * - ath9k_ps_restore(sc); - } - -- ieee80211_queue_delayed_work(hw, &sc->tx_complete_work, 0); -+ ieee80211_queue_delayed_work(hw, &sc->hw_check_work, -+ ATH_HW_CHECK_POLL_INT); - } - - static bool ath9k_tx_frames_pending(struct ieee80211_hw *hw) ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -2916,8 +2916,6 @@ int ath_tx_init(struct ath_softc *sc, in - return error; - } - -- INIT_DELAYED_WORK(&sc->tx_complete_work, ath_tx_complete_poll_work); -- - if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) - error = ath_tx_edma_init(sc); - diff --git a/package/kernel/mac80211/patches/315-ath9k_hw-check-if-the-chip-failed-to-wake-up.patch b/package/kernel/mac80211/patches/315-ath9k_hw-check-if-the-chip-failed-to-wake-up.patch deleted file mode 100644 index b0cb74ad05..0000000000 --- a/package/kernel/mac80211/patches/315-ath9k_hw-check-if-the-chip-failed-to-wake-up.patch +++ /dev/null @@ -1,30 +0,0 @@ -From: Felix Fietkau -Date: Wed, 25 Jan 2017 12:58:17 +0100 -Subject: [PATCH] ath9k_hw: check if the chip failed to wake up - -In an RFC patch, Sven Eckelmann and Simon Wunderlich reported: - -"QCA 802.11n chips (especially AR9330/AR9340) sometimes end up in a -state in which a read of AR_CFG always returns 0xdeadbeef. -This should not happen when when the power_mode of the device is -ATH9K_PM_AWAKE." - -Include the check for the default register state in the existing MAC -hang check. - -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ath/ath9k/hw.c -+++ b/drivers/net/wireless/ath/ath9k/hw.c -@@ -1624,6 +1624,10 @@ bool ath9k_hw_check_alive(struct ath_hw - int count = 50; - u32 reg, last_val; - -+ /* Check if chip failed to wake up */ -+ if (REG_READ(ah, AR_CFG) == 0xdeadbeef) -+ return false; -+ - if (AR_SREV_9300(ah)) - return !ath9k_hw_detect_mac_hang(ah); - diff --git a/package/kernel/mac80211/patches/316-ath9k-fix-race-condition-in-enabling-disabling-IRQs.patch b/package/kernel/mac80211/patches/316-ath9k-fix-race-condition-in-enabling-disabling-IRQs.patch deleted file mode 100644 index 7a41206132..0000000000 --- a/package/kernel/mac80211/patches/316-ath9k-fix-race-condition-in-enabling-disabling-IRQs.patch +++ /dev/null @@ -1,197 +0,0 @@ -From: Felix Fietkau -Date: Wed, 25 Jan 2017 15:10:37 +0100 -Subject: [PATCH] ath9k: fix race condition in enabling/disabling IRQs - -The code currently relies on refcounting to disable IRQs from within the -IRQ handler and re-enabling them again after the tasklet has run. - -However, due to race conditions sometimes the IRQ handler might be -called twice, or the tasklet may not run at all (if interrupted in the -middle of a reset). - -This can cause nasty imbalances in the irq-disable refcount which will -get the driver permanently stuck until the entire radio has been stopped -and started again (ath_reset will not recover from this). - -Instead of using this fragile logic, change the code to ensure that -running the irq handler during tasklet processing is safe, and leave the -refcount untouched. - -Cc: stable@vger.kernel.org -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ath/ath9k/ath9k.h -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -998,6 +998,7 @@ struct ath_softc { - struct survey_info *cur_survey; - struct survey_info survey[ATH9K_NUM_CHANNELS]; - -+ spinlock_t intr_lock; - struct tasklet_struct intr_tq; - struct tasklet_struct bcon_tasklet; - struct ath_hw *sc_ah; ---- a/drivers/net/wireless/ath/ath9k/init.c -+++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -669,6 +669,7 @@ static int ath9k_init_softc(u16 devid, s - common->bt_ant_diversity = 1; - - spin_lock_init(&common->cc_lock); -+ spin_lock_init(&sc->intr_lock); - spin_lock_init(&sc->sc_serial_rw); - spin_lock_init(&sc->sc_pm_lock); - spin_lock_init(&sc->chan_lock); ---- a/drivers/net/wireless/ath/ath9k/mac.c -+++ b/drivers/net/wireless/ath/ath9k/mac.c -@@ -810,21 +810,12 @@ void ath9k_hw_disable_interrupts(struct - } - EXPORT_SYMBOL(ath9k_hw_disable_interrupts); - --void ath9k_hw_enable_interrupts(struct ath_hw *ah) -+static void __ath9k_hw_enable_interrupts(struct ath_hw *ah) - { - struct ath_common *common = ath9k_hw_common(ah); - u32 sync_default = AR_INTR_SYNC_DEFAULT; - u32 async_mask; - -- if (!(ah->imask & ATH9K_INT_GLOBAL)) -- return; -- -- if (!atomic_inc_and_test(&ah->intr_ref_cnt)) { -- ath_dbg(common, INTERRUPT, "Do not enable IER ref count %d\n", -- atomic_read(&ah->intr_ref_cnt)); -- return; -- } -- - if (AR_SREV_9340(ah) || AR_SREV_9550(ah) || AR_SREV_9531(ah) || - AR_SREV_9561(ah)) - sync_default &= ~AR_INTR_SYNC_HOST1_FATAL; -@@ -846,6 +837,39 @@ void ath9k_hw_enable_interrupts(struct a - ath_dbg(common, INTERRUPT, "AR_IMR 0x%x IER 0x%x\n", - REG_READ(ah, AR_IMR), REG_READ(ah, AR_IER)); - } -+ -+void ath9k_hw_resume_interrupts(struct ath_hw *ah) -+{ -+ struct ath_common *common = ath9k_hw_common(ah); -+ -+ if (!(ah->imask & ATH9K_INT_GLOBAL)) -+ return; -+ -+ if (atomic_read(&ah->intr_ref_cnt) != 0) { -+ ath_dbg(common, INTERRUPT, "Do not enable IER ref count %d\n", -+ atomic_read(&ah->intr_ref_cnt)); -+ return; -+ } -+ -+ __ath9k_hw_enable_interrupts(ah); -+} -+EXPORT_SYMBOL(ath9k_hw_resume_interrupts); -+ -+void ath9k_hw_enable_interrupts(struct ath_hw *ah) -+{ -+ struct ath_common *common = ath9k_hw_common(ah); -+ -+ if (!(ah->imask & ATH9K_INT_GLOBAL)) -+ return; -+ -+ if (!atomic_inc_and_test(&ah->intr_ref_cnt)) { -+ ath_dbg(common, INTERRUPT, "Do not enable IER ref count %d\n", -+ atomic_read(&ah->intr_ref_cnt)); -+ return; -+ } -+ -+ __ath9k_hw_enable_interrupts(ah); -+} - EXPORT_SYMBOL(ath9k_hw_enable_interrupts); - - void ath9k_hw_set_interrupts(struct ath_hw *ah) ---- a/drivers/net/wireless/ath/ath9k/mac.h -+++ b/drivers/net/wireless/ath/ath9k/mac.h -@@ -744,6 +744,7 @@ void ath9k_hw_set_interrupts(struct ath_ - void ath9k_hw_enable_interrupts(struct ath_hw *ah); - void ath9k_hw_disable_interrupts(struct ath_hw *ah); - void ath9k_hw_kill_interrupts(struct ath_hw *ah); -+void ath9k_hw_resume_interrupts(struct ath_hw *ah); - - void ar9002_hw_attach_mac_ops(struct ath_hw *ah); - ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -374,21 +374,20 @@ void ath9k_tasklet(unsigned long data) - struct ath_common *common = ath9k_hw_common(ah); - enum ath_reset_type type; - unsigned long flags; -- u32 status = sc->intrstatus; -+ u32 status; - u32 rxmask; - -+ spin_lock_irqsave(&sc->intr_lock, flags); -+ status = sc->intrstatus; -+ sc->intrstatus = 0; -+ spin_unlock_irqrestore(&sc->intr_lock, flags); -+ - ath9k_ps_wakeup(sc); - spin_lock(&sc->sc_pcu_lock); - - if (status & ATH9K_INT_FATAL) { - type = RESET_TYPE_FATAL_INT; - ath9k_queue_reset(sc, type); -- -- /* -- * Increment the ref. counter here so that -- * interrupts are enabled in the reset routine. -- */ -- atomic_inc(&ah->intr_ref_cnt); - ath_dbg(common, RESET, "FATAL: Skipping interrupts\n"); - goto out; - } -@@ -404,11 +403,6 @@ void ath9k_tasklet(unsigned long data) - type = RESET_TYPE_BB_WATCHDOG; - ath9k_queue_reset(sc, type); - -- /* -- * Increment the ref. counter here so that -- * interrupts are enabled in the reset routine. -- */ -- atomic_inc(&ah->intr_ref_cnt); - ath_dbg(common, RESET, - "BB_WATCHDOG: Skipping interrupts\n"); - goto out; -@@ -421,7 +415,6 @@ void ath9k_tasklet(unsigned long data) - if ((sc->gtt_cnt >= MAX_GTT_CNT) && !ath9k_hw_check_alive(ah)) { - type = RESET_TYPE_TX_GTT; - ath9k_queue_reset(sc, type); -- atomic_inc(&ah->intr_ref_cnt); - ath_dbg(common, RESET, - "GTT: Skipping interrupts\n"); - goto out; -@@ -478,7 +471,7 @@ void ath9k_tasklet(unsigned long data) - ath9k_btcoex_handle_interrupt(sc, status); - - /* re-enable hardware interrupt */ -- ath9k_hw_enable_interrupts(ah); -+ ath9k_hw_resume_interrupts(ah); - out: - spin_unlock(&sc->sc_pcu_lock); - ath9k_ps_restore(sc); -@@ -542,7 +535,9 @@ irqreturn_t ath_isr(int irq, void *dev) - return IRQ_NONE; - - /* Cache the status */ -- sc->intrstatus = status; -+ spin_lock(&sc->intr_lock); -+ sc->intrstatus |= status; -+ spin_unlock(&sc->intr_lock); - - if (status & SCHED_INTR) - sched = true; -@@ -588,7 +583,7 @@ chip_reset: - - if (sched) { - /* turn off every interrupt */ -- ath9k_hw_disable_interrupts(ah); -+ ath9k_hw_kill_interrupts(ah); - tasklet_schedule(&sc->intr_tq); - } - diff --git a/package/kernel/mac80211/patches/318-v4.17-mac80211-round-IEEE80211_TX_STATUS_HEADROOM-up-to-mu.patch b/package/kernel/mac80211/patches/318-v4.17-mac80211-round-IEEE80211_TX_STATUS_HEADROOM-up-to-mu.patch new file mode 100644 index 0000000000..e955cb3a25 --- /dev/null +++ b/package/kernel/mac80211/patches/318-v4.17-mac80211-round-IEEE80211_TX_STATUS_HEADROOM-up-to-mu.patch @@ -0,0 +1,26 @@ +From: Felix Fietkau +Date: Fri, 9 Feb 2018 19:46:54 +0100 +Subject: [PATCH] mac80211: round IEEE80211_TX_STATUS_HEADROOM up to multiple + of 4 + +This ensures that mac80211 allocated management frames are properly +aligned, which makes copying them more efficient. +For instance, mt76 uses iowrite32_copy to copy beacon frames to beacon +template memory on the chip. +Misaligned 32-bit accesses cause CPU exceptions on MIPS and should be +avoided. + +Signed-off-by: Felix Fietkau +--- + +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -4145,7 +4145,7 @@ void ieee80211_sta_uapsd_trigger(struct + * The TX headroom reserved by mac80211 for its own tx_status functions. + * This is enough for the radiotap header. + */ +-#define IEEE80211_TX_STATUS_HEADROOM 14 ++#define IEEE80211_TX_STATUS_HEADROOM ALIGN(14, 4) + + /** + * ieee80211_sta_set_buffered - inform mac80211 about driver-buffered frames diff --git a/package/kernel/mac80211/patches/319-v4.17-0001-mac80211-drop-frames-with-unexpected-DS-bits-from-fa.patch b/package/kernel/mac80211/patches/319-v4.17-0001-mac80211-drop-frames-with-unexpected-DS-bits-from-fa.patch new file mode 100644 index 0000000000..a7562996b1 --- /dev/null +++ b/package/kernel/mac80211/patches/319-v4.17-0001-mac80211-drop-frames-with-unexpected-DS-bits-from-fa.patch @@ -0,0 +1,21 @@ +From: Felix Fietkau +Date: Fri, 23 Feb 2018 09:59:35 +0100 +Subject: [PATCH] mac80211: drop frames with unexpected DS bits from + fast-rx to slow path + +Fixes rx for 4-addr packets in AP mode + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -3928,7 +3928,7 @@ static bool ieee80211_invoke_fast_rx(str + if ((hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_FROMDS | + IEEE80211_FCTL_TODS)) != + fast_rx->expected_ds_bits) +- goto drop; ++ return false; + + /* assign the key to drop unencrypted frames (later) + * and strip the IV/MIC if necessary diff --git a/package/kernel/mac80211/patches/319-v4.17-0002-mac80211-support-AP-4-addr-mode-fast-rx.patch b/package/kernel/mac80211/patches/319-v4.17-0002-mac80211-support-AP-4-addr-mode-fast-rx.patch new file mode 100644 index 0000000000..3f3eb0a5e1 --- /dev/null +++ b/package/kernel/mac80211/patches/319-v4.17-0002-mac80211-support-AP-4-addr-mode-fast-rx.patch @@ -0,0 +1,25 @@ +From: Felix Fietkau +Date: Fri, 23 Feb 2018 10:00:22 +0100 +Subject: [PATCH] mac80211: support AP 4-addr mode fast-rx + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -3774,6 +3774,15 @@ void ieee80211_check_fast_rx(struct sta_ + !(sdata->flags & IEEE80211_SDATA_DONT_BRIDGE_PACKETS) && + (sdata->vif.type != NL80211_IFTYPE_AP_VLAN || + !sdata->u.vlan.sta); ++ ++ if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN && ++ sdata->u.vlan.sta) { ++ fastrx.expected_ds_bits |= ++ cpu_to_le16(IEEE80211_FCTL_FROMDS); ++ fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr4); ++ fastrx.internal_forward = 0; ++ } ++ + break; + default: + goto clear; diff --git a/package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch b/package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch new file mode 100644 index 0000000000..8c4c724ef7 --- /dev/null +++ b/package/kernel/mac80211/patches/319-v4.17-0003-mac80211-support-fast-rx-with-incompatible-PS-capabi.patch @@ -0,0 +1,53 @@ +From: Felix Fietkau +Date: Fri, 23 Feb 2018 10:01:53 +0100 +Subject: [PATCH] mac80211: support fast-rx with incompatible PS + capabilities when PS is disabled + +When powersave is disabled for the interface, we can do fast-rx anyway. + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/cfg.c ++++ b/net/mac80211/cfg.c +@@ -2658,6 +2658,7 @@ static int ieee80211_set_power_mgmt(stru + + ieee80211_recalc_ps(local); + ieee80211_recalc_ps_vif(sdata); ++ ieee80211_check_fast_rx_iface(sdata); + + return 0; + } +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -3741,12 +3741,7 @@ void ieee80211_check_fast_rx(struct sta_ + /* 4-addr is harder to deal with, later maybe */ + if (sdata->u.mgd.use_4addr) + goto clear; +- /* software powersave is a huge mess, avoid all of it */ +- if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK)) +- goto clear; +- if (ieee80211_hw_check(&local->hw, SUPPORTS_PS) && +- !ieee80211_hw_check(&local->hw, SUPPORTS_DYNAMIC_PS)) +- goto clear; ++ + if (sta->sta.tdls) { + fastrx.da_offs = offsetof(struct ieee80211_hdr, addr1); + fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr2); +@@ -3758,6 +3753,16 @@ void ieee80211_check_fast_rx(struct sta_ + fastrx.expected_ds_bits = + cpu_to_le16(IEEE80211_FCTL_FROMDS); + } ++ ++ if (!sdata->u.mgd.powersave) ++ break; ++ ++ /* software powersave is a huge mess, avoid all of it */ ++ if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK)) ++ goto clear; ++ if (ieee80211_hw_check(&local->hw, SUPPORTS_PS) && ++ !ieee80211_hw_check(&local->hw, SUPPORTS_DYNAMIC_PS)) ++ goto clear; + break; + case NL80211_IFTYPE_AP_VLAN: + case NL80211_IFTYPE_AP: diff --git a/package/kernel/mac80211/patches/319-v4.17-0004-mac80211-support-station-4-addr-mode-fast-rx.patch b/package/kernel/mac80211/patches/319-v4.17-0004-mac80211-support-station-4-addr-mode-fast-rx.patch new file mode 100644 index 0000000000..97a5d8beba --- /dev/null +++ b/package/kernel/mac80211/patches/319-v4.17-0004-mac80211-support-station-4-addr-mode-fast-rx.patch @@ -0,0 +1,34 @@ +From: Felix Fietkau +Date: Fri, 23 Feb 2018 10:05:08 +0100 +Subject: [PATCH] mac80211: support station 4-addr mode fast-rx + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -3738,10 +3738,6 @@ void ieee80211_check_fast_rx(struct sta_ + + switch (sdata->vif.type) { + case NL80211_IFTYPE_STATION: +- /* 4-addr is harder to deal with, later maybe */ +- if (sdata->u.mgd.use_4addr) +- goto clear; +- + if (sta->sta.tdls) { + fastrx.da_offs = offsetof(struct ieee80211_hdr, addr1); + fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr2); +@@ -3754,6 +3750,13 @@ void ieee80211_check_fast_rx(struct sta_ + cpu_to_le16(IEEE80211_FCTL_FROMDS); + } + ++ if (sdata->u.mgd.use_4addr && !sta->sta.tdls) { ++ fastrx.expected_ds_bits |= ++ cpu_to_le16(IEEE80211_FCTL_TODS); ++ fastrx.da_offs = offsetof(struct ieee80211_hdr, addr3); ++ fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr4); ++ } ++ + if (!sdata->u.mgd.powersave) + break; + diff --git a/package/kernel/mac80211/patches/320-ath9k-clean-up-and-fix-ath_tx_count_airtime.patch b/package/kernel/mac80211/patches/320-ath9k-clean-up-and-fix-ath_tx_count_airtime.patch deleted file mode 100644 index a6a3bfca6d..0000000000 --- a/package/kernel/mac80211/patches/320-ath9k-clean-up-and-fix-ath_tx_count_airtime.patch +++ /dev/null @@ -1,107 +0,0 @@ -From: Felix Fietkau -Date: Sun, 12 Feb 2017 13:13:05 +0100 -Subject: [PATCH] ath9k: clean up and fix ath_tx_count_airtime - -ath_tx_count_airtime is doing a lot of unnecessary work: - -- Redundant station lookup -- Redundant rcu_read_lock/unlock -- Useless memcpy of bf->rates -- Useless NULL check of bf->bf_mpdu -- Redundant lookup of the skb tid - -Additionally, it tries to look up the mac80211 queue index from the txq, -which fails if the frame was delivered via the power save queue. - -This patch fixes all of these issues by passing down the right set of -pointers instead of doing extra work - -Cc: stable@vger.kernel.org -Fixes: 63fefa050477 ("ath9k: Introduce airtime fairness scheduling between stations") -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -723,51 +723,31 @@ static bool bf_is_ampdu_not_probing(stru - return bf_isampdu(bf) && !(info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE); - } - --static void ath_tx_count_airtime(struct ath_softc *sc, struct ath_txq *txq, -- struct ath_buf *bf, struct ath_tx_status *ts) -+static void ath_tx_count_airtime(struct ath_softc *sc, struct ath_node *an, -+ struct ath_atx_tid *tid, struct ath_buf *bf, -+ struct ath_tx_status *ts) - { -- struct ath_node *an; -- struct ath_acq *acq = &sc->cur_chan->acq[txq->mac80211_qnum]; -- struct sk_buff *skb; -- struct ieee80211_hdr *hdr; -- struct ieee80211_hw *hw = sc->hw; -- struct ieee80211_tx_rate rates[4]; -- struct ieee80211_sta *sta; -- int i; -+ struct ath_txq *txq = tid->txq; - u32 airtime = 0; -- -- skb = bf->bf_mpdu; -- if(!skb) -- return; -- -- hdr = (struct ieee80211_hdr *)skb->data; -- memcpy(rates, bf->rates, sizeof(rates)); -- -- rcu_read_lock(); -- -- sta = ieee80211_find_sta_by_ifaddr(hw, hdr->addr1, hdr->addr2); -- if(!sta) -- goto exit; -- -- -- an = (struct ath_node *) sta->drv_priv; -+ int i; - - airtime += ts->duration * (ts->ts_longretry + 1); -+ for(i = 0; i < ts->ts_rateindex; i++) { -+ int rate_dur = ath9k_hw_get_duration(sc->sc_ah, bf->bf_desc, i); -+ airtime += rate_dur * bf->rates[i].count; -+ } - -- for(i=0; i < ts->ts_rateindex; i++) -- airtime += ath9k_hw_get_duration(sc->sc_ah, bf->bf_desc, i) * rates[i].count; -+ if (sc->airtime_flags & AIRTIME_USE_TX) { -+ int q = txq->mac80211_qnum; -+ struct ath_acq *acq = &sc->cur_chan->acq[q]; - -- if (!!(sc->airtime_flags & AIRTIME_USE_TX)) { - spin_lock_bh(&acq->lock); -- an->airtime_deficit[txq->mac80211_qnum] -= airtime; -- if (an->airtime_deficit[txq->mac80211_qnum] <= 0) -- __ath_tx_queue_tid(sc, ath_get_skb_tid(sc, an, skb)); -+ an->airtime_deficit[q] -= airtime; -+ if (an->airtime_deficit[q] <= 0) -+ __ath_tx_queue_tid(sc, tid); - spin_unlock_bh(&acq->lock); - } - ath_debug_airtime(sc, an, 0, airtime); -- --exit: -- rcu_read_unlock(); - } - - static void ath_tx_process_buffer(struct ath_softc *sc, struct ath_txq *txq, -@@ -791,13 +771,13 @@ static void ath_tx_process_buffer(struct - - ts->duration = ath9k_hw_get_duration(sc->sc_ah, bf->bf_desc, - ts->ts_rateindex); -- ath_tx_count_airtime(sc, txq, bf, ts); - - hdr = (struct ieee80211_hdr *) bf->bf_mpdu->data; - sta = ieee80211_find_sta_by_ifaddr(hw, hdr->addr1, hdr->addr2); - if (sta) { - struct ath_node *an = (struct ath_node *)sta->drv_priv; - tid = ath_get_skb_tid(sc, an, bf->bf_mpdu); -+ ath_tx_count_airtime(sc, an, tid, bf, ts); - if (ts->ts_status & (ATH9K_TXERR_FILT | ATH9K_TXERR_XRETRY)) - tid->clear_ps_filter = true; - } diff --git a/package/kernel/mac80211/patches/320-v4.17-mac80211-support-A-MSDU-in-fast-rx.patch b/package/kernel/mac80211/patches/320-v4.17-mac80211-support-A-MSDU-in-fast-rx.patch new file mode 100644 index 0000000000..3c6d342ff1 --- /dev/null +++ b/package/kernel/mac80211/patches/320-v4.17-mac80211-support-A-MSDU-in-fast-rx.patch @@ -0,0 +1,256 @@ +From: Felix Fietkau +Date: Mon, 26 Feb 2018 22:09:29 +0100 +Subject: [PATCH] mac80211: support A-MSDU in fast-rx + +Only works if the IV was stripped from packets. Create a smaller +variant of ieee80211_rx_h_amsdu, which bypasses checks already done +within the fast-rx context. + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -2358,39 +2358,17 @@ ieee80211_deliver_skb(struct ieee80211_r + } + + static ieee80211_rx_result debug_noinline +-ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx) ++__ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx, u8 data_offset) + { + struct net_device *dev = rx->sdata->dev; + struct sk_buff *skb = rx->skb; + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; + __le16 fc = hdr->frame_control; + struct sk_buff_head frame_list; +- struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(rx->skb); + struct ethhdr ethhdr; + const u8 *check_da = ethhdr.h_dest, *check_sa = ethhdr.h_source; + +- if (unlikely(!ieee80211_is_data(fc))) +- return RX_CONTINUE; +- +- if (unlikely(!ieee80211_is_data_present(fc))) +- return RX_DROP_MONITOR; +- +- if (!(status->rx_flags & IEEE80211_RX_AMSDU)) +- return RX_CONTINUE; +- + if (unlikely(ieee80211_has_a4(hdr->frame_control))) { +- switch (rx->sdata->vif.type) { +- case NL80211_IFTYPE_AP_VLAN: +- if (!rx->sdata->u.vlan.sta) +- return RX_DROP_UNUSABLE; +- break; +- case NL80211_IFTYPE_STATION: +- if (!rx->sdata->u.mgd.use_4addr) +- return RX_DROP_UNUSABLE; +- break; +- default: +- return RX_DROP_UNUSABLE; +- } + check_da = NULL; + check_sa = NULL; + } else switch (rx->sdata->vif.type) { +@@ -2410,15 +2388,13 @@ ieee80211_rx_h_amsdu(struct ieee80211_rx + break; + } + +- if (is_multicast_ether_addr(hdr->addr1)) +- return RX_DROP_UNUSABLE; +- + skb->dev = dev; + __skb_queue_head_init(&frame_list); + + if (ieee80211_data_to_8023_exthdr(skb, ðhdr, + rx->sdata->vif.addr, +- rx->sdata->vif.type)) ++ rx->sdata->vif.type, ++ data_offset)) + return RX_DROP_UNUSABLE; + + ieee80211_amsdu_to_8023s(skb, &frame_list, dev->dev_addr, +@@ -2440,6 +2416,44 @@ ieee80211_rx_h_amsdu(struct ieee80211_rx + return RX_QUEUED; + } + ++static ieee80211_rx_result debug_noinline ++ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx) ++{ ++ struct sk_buff *skb = rx->skb; ++ struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); ++ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; ++ __le16 fc = hdr->frame_control; ++ ++ if (!(status->rx_flags & IEEE80211_RX_AMSDU)) ++ return RX_CONTINUE; ++ ++ if (unlikely(!ieee80211_is_data(fc))) ++ return RX_CONTINUE; ++ ++ if (unlikely(!ieee80211_is_data_present(fc))) ++ return RX_DROP_MONITOR; ++ ++ if (unlikely(ieee80211_has_a4(hdr->frame_control))) { ++ switch (rx->sdata->vif.type) { ++ case NL80211_IFTYPE_AP_VLAN: ++ if (!rx->sdata->u.vlan.sta) ++ return RX_DROP_UNUSABLE; ++ break; ++ case NL80211_IFTYPE_STATION: ++ if (!rx->sdata->u.mgd.use_4addr) ++ return RX_DROP_UNUSABLE; ++ break; ++ default: ++ return RX_DROP_UNUSABLE; ++ } ++ } ++ ++ if (is_multicast_ether_addr(hdr->addr1)) ++ return RX_DROP_UNUSABLE; ++ ++ return __ieee80211_rx_h_amsdu(rx, 0); ++} ++ + #ifdef CPTCFG_MAC80211_MESH + static ieee80211_rx_result + ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx) +@@ -3889,7 +3903,8 @@ static bool ieee80211_invoke_fast_rx(str + struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); + struct sta_info *sta = rx->sta; + int orig_len = skb->len; +- int snap_offs = ieee80211_hdrlen(hdr->frame_control); ++ int hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ int snap_offs = hdrlen; + struct { + u8 snap[sizeof(rfc1042_header)]; + __be16 proto; +@@ -3920,10 +3935,6 @@ static bool ieee80211_invoke_fast_rx(str + (status->flag & FAST_RX_CRYPT_FLAGS) != FAST_RX_CRYPT_FLAGS) + return false; + +- /* we don't deal with A-MSDU deaggregation here */ +- if (status->rx_flags & IEEE80211_RX_AMSDU) +- return false; +- + if (unlikely(!ieee80211_is_data_present(hdr->frame_control))) + return false; + +@@ -3955,21 +3966,24 @@ static bool ieee80211_invoke_fast_rx(str + snap_offs += IEEE80211_CCMP_HDR_LEN; + } + +- if (!pskb_may_pull(skb, snap_offs + sizeof(*payload))) +- goto drop; +- payload = (void *)(skb->data + snap_offs); ++ if (!(status->rx_flags & IEEE80211_RX_AMSDU)) { ++ if (!pskb_may_pull(skb, snap_offs + sizeof(*payload))) ++ goto drop; + +- if (!ether_addr_equal(payload->snap, fast_rx->rfc1042_hdr)) +- return false; ++ payload = (void *)(skb->data + snap_offs); + +- /* Don't handle these here since they require special code. +- * Accept AARP and IPX even though they should come with a +- * bridge-tunnel header - but if we get them this way then +- * there's little point in discarding them. +- */ +- if (unlikely(payload->proto == cpu_to_be16(ETH_P_TDLS) || +- payload->proto == fast_rx->control_port_protocol)) +- return false; ++ if (!ether_addr_equal(payload->snap, fast_rx->rfc1042_hdr)) ++ return false; ++ ++ /* Don't handle these here since they require special code. ++ * Accept AARP and IPX even though they should come with a ++ * bridge-tunnel header - but if we get them this way then ++ * there's little point in discarding them. ++ */ ++ if (unlikely(payload->proto == cpu_to_be16(ETH_P_TDLS) || ++ payload->proto == fast_rx->control_port_protocol)) ++ return false; ++ } + + /* after this point, don't punt to the slowpath! */ + +@@ -3983,12 +3997,6 @@ static bool ieee80211_invoke_fast_rx(str + } + + /* statistics part of ieee80211_rx_h_sta_process() */ +- stats->last_rx = jiffies; +- stats->last_rate = sta_stats_encode_rate(status); +- +- stats->fragments++; +- stats->packets++; +- + if (!(status->flag & RX_FLAG_NO_SIGNAL_VAL)) { + stats->last_signal = status->signal; + if (!fast_rx->uses_rss) +@@ -4017,6 +4025,20 @@ static bool ieee80211_invoke_fast_rx(str + if (rx->key && !ieee80211_has_protected(hdr->frame_control)) + goto drop; + ++ if (status->rx_flags & IEEE80211_RX_AMSDU) { ++ if (__ieee80211_rx_h_amsdu(rx, snap_offs - hdrlen) != ++ RX_QUEUED) ++ goto drop; ++ ++ return true; ++ } ++ ++ stats->last_rx = jiffies; ++ stats->last_rate = sta_stats_encode_rate(status); ++ ++ stats->fragments++; ++ stats->packets++; ++ + /* do the header conversion - first grab the addresses */ + ether_addr_copy(addrs.da, skb->data + fast_rx->da_offs); + ether_addr_copy(addrs.sa, skb->data + fast_rx->sa_offs); +--- a/include/net/cfg80211.h ++++ b/include/net/cfg80211.h +@@ -4331,10 +4331,12 @@ unsigned int ieee80211_get_mesh_hdrlen(s + * of it being pushed into the SKB + * @addr: the device MAC address + * @iftype: the virtual interface type ++ * @data_offset: offset of payload after the 802.11 header + * Return: 0 on success. Non-zero on error. + */ + int ieee80211_data_to_8023_exthdr(struct sk_buff *skb, struct ethhdr *ehdr, +- const u8 *addr, enum nl80211_iftype iftype); ++ const u8 *addr, enum nl80211_iftype iftype, ++ u8 data_offset); + + /** + * ieee80211_data_to_8023 - convert an 802.11 data frame to 802.3 +@@ -4346,7 +4348,7 @@ int ieee80211_data_to_8023_exthdr(struct + static inline int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr, + enum nl80211_iftype iftype) + { +- return ieee80211_data_to_8023_exthdr(skb, NULL, addr, iftype); ++ return ieee80211_data_to_8023_exthdr(skb, NULL, addr, iftype, 0); + } + + /** +--- a/net/wireless/util.c ++++ b/net/wireless/util.c +@@ -419,7 +419,8 @@ unsigned int ieee80211_get_mesh_hdrlen(s + EXPORT_SYMBOL(ieee80211_get_mesh_hdrlen); + + int ieee80211_data_to_8023_exthdr(struct sk_buff *skb, struct ethhdr *ehdr, +- const u8 *addr, enum nl80211_iftype iftype) ++ const u8 *addr, enum nl80211_iftype iftype, ++ u8 data_offset) + { + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; + struct { +@@ -433,7 +434,7 @@ int ieee80211_data_to_8023_exthdr(struct + if (unlikely(!ieee80211_is_data_present(hdr->frame_control))) + return -1; + +- hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ hdrlen = ieee80211_hdrlen(hdr->frame_control) + data_offset; + if (skb->len < hdrlen + 8) + return -1; + diff --git a/package/kernel/mac80211/patches/321-mac80211-fix-CSA-in-IBSS-mode.patch b/package/kernel/mac80211/patches/321-mac80211-fix-CSA-in-IBSS-mode.patch deleted file mode 100644 index 13765b2900..0000000000 --- a/package/kernel/mac80211/patches/321-mac80211-fix-CSA-in-IBSS-mode.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: Koen Vandeputte -Date: Wed, 8 Feb 2017 15:29:45 +0100 -Subject: [PATCH] mac80211: fix CSA in IBSS mode -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add the missing IBSS capability flag during capability init as it needs -to be inserted into the generated beacon in order for CSA to work. - -Signed-off-by: Piotr Gawlowicz -Signed-off-by: Mikołaj Chwalisz -Tested-by: Koen Vandeputte ---- - ---- a/net/mac80211/ibss.c -+++ b/net/mac80211/ibss.c -@@ -487,14 +487,14 @@ int ieee80211_ibss_csa_beacon(struct iee - struct beacon_data *presp, *old_presp; - struct cfg80211_bss *cbss; - const struct cfg80211_bss_ies *ies; -- u16 capability = 0; -+ u16 capability = WLAN_CAPABILITY_IBSS; - u64 tsf; - int ret = 0; - - sdata_assert_lock(sdata); - - if (ifibss->privacy) -- capability = WLAN_CAPABILITY_PRIVACY; -+ capability |= WLAN_CAPABILITY_PRIVACY; - - cbss = cfg80211_get_bss(sdata->local->hw.wiphy, ifibss->chandef.chan, - ifibss->bssid, ifibss->ssid, diff --git a/package/kernel/mac80211/patches/322-mac80211-don-t-handle-filtered-frames-within-a-BA-se.patch b/package/kernel/mac80211/patches/322-mac80211-don-t-handle-filtered-frames-within-a-BA-se.patch deleted file mode 100644 index 66e1bfb4c1..0000000000 --- a/package/kernel/mac80211/patches/322-mac80211-don-t-handle-filtered-frames-within-a-BA-se.patch +++ /dev/null @@ -1,28 +0,0 @@ -From: Felix Fietkau -Date: Wed, 22 Feb 2017 16:13:17 +0100 -Subject: [PATCH] mac80211: don't handle filtered frames within a BA session - -When running a BA session, the driver (or the hardware) already takes -care of retransmitting failed frames, since it has to keep the receiver -reorder window in sync. - -Adding another layer of retransmit around that does not improve -anything. In fact, it can only lead to some strong reordering with huge -latency. - -Cc: stable@vger.kernel.org -Signed-off-by: Felix Fietkau ---- - ---- a/net/mac80211/status.c -+++ b/net/mac80211/status.c -@@ -51,7 +51,8 @@ static void ieee80211_handle_filtered_fr - struct ieee80211_hdr *hdr = (void *)skb->data; - int ac; - -- if (info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER) { -+ if (info->flags & (IEEE80211_TX_CTL_NO_PS_BUFFER | -+ IEEE80211_TX_CTL_AMPDU)) { - ieee80211_free_txskb(&local->hw, skb); - return; - } diff --git a/package/kernel/mac80211/patches/325-mac80211-unconditionally-start-new-netdev-queues-wit.patch b/package/kernel/mac80211/patches/325-mac80211-unconditionally-start-new-netdev-queues-wit.patch deleted file mode 100644 index ff7bbcb645..0000000000 --- a/package/kernel/mac80211/patches/325-mac80211-unconditionally-start-new-netdev-queues-wit.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: Johannes Berg -Date: Wed, 29 Mar 2017 14:15:24 +0200 -Subject: [PATCH] mac80211: unconditionally start new netdev queues with iTXQ - support - -When internal mac80211 TXQs aren't supported, netdev queues must -always started out started even when driver queues are stopped -while the interface is added. This is necessary because with the -internal TXQ support netdev queues are never stopped and packet -scheduling/dropping is done in mac80211. - -Cc: stable@vger.kernel.org # 4.9+ -Fixes: 80a83cfc434b1 ("mac80211: skip netdev queue control with software queuing") -Reported-and-tested-by: Sven Eckelmann -Signed-off-by: Johannes Berg ---- - ---- a/net/mac80211/iface.c -+++ b/net/mac80211/iface.c -@@ -727,7 +727,8 @@ int ieee80211_do_open(struct wireless_de - ieee80211_recalc_ps(local); - - if (sdata->vif.type == NL80211_IFTYPE_MONITOR || -- sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { -+ sdata->vif.type == NL80211_IFTYPE_AP_VLAN || -+ local->ops->wake_tx_queue) { - /* XXX: for AP_VLAN, actually track AP queues */ - netif_tx_start_all_queues(dev); - } else if (dev) { diff --git a/package/kernel/mac80211/patches/327-mac80211-accept-key-reinstall-without-changing-anyth.patch b/package/kernel/mac80211/patches/327-mac80211-accept-key-reinstall-without-changing-anyth.patch deleted file mode 100644 index 7d0be0395b..0000000000 --- a/package/kernel/mac80211/patches/327-mac80211-accept-key-reinstall-without-changing-anyth.patch +++ /dev/null @@ -1,81 +0,0 @@ -From fdf7cb4185b60c68e1a75e61691c4afdc15dea0e Mon Sep 17 00:00:00 2001 -From: Johannes Berg -Date: Tue, 5 Sep 2017 14:54:54 +0200 -Subject: [PATCH] mac80211: accept key reinstall without changing anything - -When a key is reinstalled we can reset the replay counters -etc. which can lead to nonce reuse and/or replay detection -being impossible, breaking security properties, as described -in the "KRACK attacks". - -In particular, CVE-2017-13080 applies to GTK rekeying that -happened in firmware while the host is in D3, with the second -part of the attack being done after the host wakes up. In -this case, the wpa_supplicant mitigation isn't sufficient -since wpa_supplicant doesn't know the GTK material. - -In case this happens, simply silently accept the new key -coming from userspace but don't take any action on it since -it's the same key; this keeps the PN replay counters intact. - -Signed-off-by: Johannes Berg ---- - net/mac80211/key.c | 21 +++++++++++++++++---- - 1 file changed, 17 insertions(+), 4 deletions(-) - -diff --git a/net/mac80211/key.c b/net/mac80211/key.c -index a98fc2b5e0dc..ae995c8480db 100644 ---- a/net/mac80211/key.c -+++ b/net/mac80211/key.c -@@ -4,7 +4,7 @@ - * Copyright 2006-2007 Jiri Benc - * Copyright 2007-2008 Johannes Berg - * Copyright 2013-2014 Intel Mobile Communications GmbH -- * Copyright 2015 Intel Deutschland GmbH -+ * Copyright 2015-2017 Intel Deutschland GmbH - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as -@@ -620,9 +620,6 @@ int ieee80211_key_link(struct ieee80211_key *key, - - pairwise = key->conf.flags & IEEE80211_KEY_FLAG_PAIRWISE; - idx = key->conf.keyidx; -- key->local = sdata->local; -- key->sdata = sdata; -- key->sta = sta; - - mutex_lock(&sdata->local->key_mtx); - -@@ -633,6 +630,21 @@ int ieee80211_key_link(struct ieee80211_key *key, - else - old_key = key_mtx_dereference(sdata->local, sdata->keys[idx]); - -+ /* -+ * Silently accept key re-installation without really installing the -+ * new version of the key to avoid nonce reuse or replay issues. -+ */ -+ if (old_key && key->conf.keylen == old_key->conf.keylen && -+ !memcmp(key->conf.key, old_key->conf.key, key->conf.keylen)) { -+ ieee80211_key_free_unused(key); -+ ret = 0; -+ goto out; -+ } -+ -+ key->local = sdata->local; -+ key->sdata = sdata; -+ key->sta = sta; -+ - increment_tailroom_need_count(sdata); - - ieee80211_key_replace(sdata, sta, pairwise, old_key, key); -@@ -648,6 +660,7 @@ int ieee80211_key_link(struct ieee80211_key *key, - ret = 0; - } - -+ out: - mutex_unlock(&sdata->local->key_mtx); - - return ret; --- -2.13.6 - diff --git a/package/kernel/mac80211/patches/300-ath9k_hw-reset-AHB-WMAC-interface-on-AR91xx.patch b/package/kernel/mac80211/patches/350-ath9k_hw-reset-AHB-WMAC-interface-on-AR91xx.patch similarity index 100% rename from package/kernel/mac80211/patches/300-ath9k_hw-reset-AHB-WMAC-interface-on-AR91xx.patch rename to package/kernel/mac80211/patches/350-ath9k_hw-reset-AHB-WMAC-interface-on-AR91xx.patch diff --git a/package/kernel/mac80211/patches/351-ath9k_hw-issue-external-reset-for-QCA955x.patch b/package/kernel/mac80211/patches/351-ath9k_hw-issue-external-reset-for-QCA955x.patch new file mode 100644 index 0000000000..34d7d3b1cf --- /dev/null +++ b/package/kernel/mac80211/patches/351-ath9k_hw-issue-external-reset-for-QCA955x.patch @@ -0,0 +1,126 @@ +From: Felix Fietkau +Date: Sat, 9 Jul 2016 15:26:44 +0200 +Subject: [PATCH] ath9k_hw: issue external reset for QCA955x + +The RTC interface on the SoC needs to be reset along with the rest of +the WMAC. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -1271,39 +1271,56 @@ void ath9k_hw_get_delta_slope_vals(struc + *coef_exponent = coef_exp - 16; + } + +-/* AR9330 WAR: +- * call external reset function to reset WMAC if: +- * - doing a cold reset +- * - we have pending frames in the TX queues. +- */ +-static bool ath9k_hw_ar9330_reset_war(struct ath_hw *ah, int type) ++static bool ath9k_hw_need_external_reset(struct ath_hw *ah, int type) + { +- int i, npend = 0; ++ int i; + +- for (i = 0; i < AR_NUM_QCU; i++) { +- npend = ath9k_hw_numtxpending(ah, i); +- if (npend) +- break; ++ if (type == ATH9K_RESET_COLD) ++ return true; ++ ++ if (AR_SREV_9550(ah)) ++ return true; ++ ++ /* AR9330 WAR: ++ * call external reset function to reset WMAC if: ++ * - doing a cold reset ++ * - we have pending frames in the TX queues. ++ */ ++ if (AR_SREV_9330(ah)) { ++ for (i = 0; i < AR_NUM_QCU; i++) { ++ if (ath9k_hw_numtxpending(ah, i)) ++ return true; ++ } + } + +- if (ah->external_reset && +- (npend || type == ATH9K_RESET_COLD)) { +- int reset_err = 0; ++ return false; ++} + +- ath_dbg(ath9k_hw_common(ah), RESET, +- "reset MAC via external reset\n"); ++static bool ath9k_hw_external_reset(struct ath_hw *ah, int type) ++{ ++ int err; + +- reset_err = ah->external_reset(); +- if (reset_err) { +- ath_err(ath9k_hw_common(ah), +- "External reset failed, err=%d\n", +- reset_err); +- return false; +- } ++ if (!ah->external_reset || !ath9k_hw_need_external_reset(ah, type)) ++ return true; + +- REG_WRITE(ah, AR_RTC_RESET, 1); ++ ath_dbg(ath9k_hw_common(ah), RESET, ++ "reset MAC via external reset\n"); ++ ++ err = ah->external_reset(); ++ if (err) { ++ ath_err(ath9k_hw_common(ah), ++ "External reset failed, err=%d\n", err); ++ return false; ++ } ++ ++ if (AR_SREV_9550(ah)) { ++ REG_WRITE(ah, AR_RTC_RESET, 0); ++ udelay(10); + } + ++ REG_WRITE(ah, AR_RTC_RESET, 1); ++ udelay(10); ++ + return true; + } + +@@ -1356,24 +1373,24 @@ static bool ath9k_hw_set_reset(struct at + rst_flags |= AR_RTC_RC_MAC_COLD; + } + +- if (AR_SREV_9330(ah)) { +- if (!ath9k_hw_ar9330_reset_war(ah, type)) +- return false; +- } +- + if (ath9k_hw_mci_is_enabled(ah)) + ar9003_mci_check_gpm_offset(ah); + + /* DMA HALT added to resolve ar9300 and ar9580 bus error during +- * RTC_RC reg read ++ * RTC_RC reg read. Also needed for AR9550 external reset + */ +- if (AR_SREV_9300(ah) || AR_SREV_9580(ah)) { ++ if (AR_SREV_9300(ah) || AR_SREV_9580(ah) || AR_SREV_9550(ah)) { + REG_SET_BIT(ah, AR_CFG, AR_CFG_HALT_REQ); + ath9k_hw_wait(ah, AR_CFG, AR_CFG_HALT_ACK, AR_CFG_HALT_ACK, + 20 * AH_WAIT_TIMEOUT); +- REG_CLR_BIT(ah, AR_CFG, AR_CFG_HALT_REQ); + } + ++ if (!AR_SREV_9100(ah)) ++ ath9k_hw_external_reset(ah, type); ++ ++ if (AR_SREV_9300(ah) || AR_SREV_9580(ah)) ++ REG_CLR_BIT(ah, AR_CFG, AR_CFG_HALT_REQ); ++ + REG_WRITE(ah, AR_RTC_RC, rst_flags); + + REGWRITE_BUFFER_FLUSH(ah); diff --git a/package/kernel/mac80211/patches/302-ath9k_hw-set-spectral-scan-enable-bit-on-trigger-for.patch b/package/kernel/mac80211/patches/352-ath9k_hw-set-spectral-scan-enable-bit-on-trigger-for.patch similarity index 100% rename from package/kernel/mac80211/patches/302-ath9k_hw-set-spectral-scan-enable-bit-on-trigger-for.patch rename to package/kernel/mac80211/patches/352-ath9k_hw-set-spectral-scan-enable-bit-on-trigger-for.patch diff --git a/package/kernel/mac80211/patches/303-ath9k-don-t-run-periodic-and-nf-calibation-at-the-sa.patch b/package/kernel/mac80211/patches/353-ath9k-don-t-run-periodic-and-nf-calibation-at-the-sa.patch similarity index 100% rename from package/kernel/mac80211/patches/303-ath9k-don-t-run-periodic-and-nf-calibation-at-the-sa.patch rename to package/kernel/mac80211/patches/353-ath9k-don-t-run-periodic-and-nf-calibation-at-the-sa.patch diff --git a/package/kernel/mac80211/patches/354-ath9k-force-rx_clear-when-disabling-rx.patch b/package/kernel/mac80211/patches/354-ath9k-force-rx_clear-when-disabling-rx.patch new file mode 100644 index 0000000000..8aaccf49b4 --- /dev/null +++ b/package/kernel/mac80211/patches/354-ath9k-force-rx_clear-when-disabling-rx.patch @@ -0,0 +1,35 @@ +From: Felix Fietkau +Date: Sun, 7 Jun 2015 13:53:35 +0200 +Subject: [PATCH] ath9k: force rx_clear when disabling rx + +This makes stopping Rx more reliable and should reduce the frequency of +Rx related DMA stop warnings. Don't use rx_clear in TX99 mode. + +Cc: stable@vger.kernel.org +Signed-off-by: Felix Fietkau +Signed-off-by: Helmut Schaa +--- + +--- a/drivers/net/wireless/ath/ath9k/mac.c ++++ b/drivers/net/wireless/ath/ath9k/mac.c +@@ -678,13 +678,18 @@ void ath9k_hw_startpcureceive(struct ath + + ath9k_ani_reset(ah, is_scanning); + +- REG_CLR_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); ++ REG_CLR_BIT(ah, AR_DIAG_SW, ++ AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT | AR_DIAG_FORCE_RX_CLEAR); + } + EXPORT_SYMBOL(ath9k_hw_startpcureceive); + + void ath9k_hw_abortpcurecv(struct ath_hw *ah) + { +- REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_ABORT | AR_DIAG_RX_DIS); ++ u32 reg = AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT; ++ ++ if (!IS_ENABLED(CPTCFG_ATH9K_TX99)) ++ reg |= AR_DIAG_FORCE_RX_CLEAR; ++ REG_SET_BIT(ah, AR_DIAG_SW, reg); + + ath9k_hw_disable_mib_counters(ah); + } diff --git a/package/kernel/mac80211/patches/355-ath9k-limit-retries-for-powersave-response-frames.patch b/package/kernel/mac80211/patches/355-ath9k-limit-retries-for-powersave-response-frames.patch new file mode 100644 index 0000000000..31825b819c --- /dev/null +++ b/package/kernel/mac80211/patches/355-ath9k-limit-retries-for-powersave-response-frames.patch @@ -0,0 +1,96 @@ +From: Felix Fietkau +Date: Thu, 2 Jul 2015 15:20:56 +0200 +Subject: [PATCH] ath9k: limit retries for powersave response frames + +In some cases, the channel might be busy enough that an ath9k AP's +response to PS-Poll frames might be too slow and the station has already +gone to sleep. To avoid wasting too much airtime on this, limit the +number of retries on such frames and ensure that no sample rate gets +used. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -188,10 +188,25 @@ static void ath_send_bar(struct ath_atx_ + } + + static void ath_set_rates(struct ieee80211_vif *vif, struct ieee80211_sta *sta, +- struct ath_buf *bf) ++ struct ath_buf *bf, bool ps) + { ++ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(bf->bf_mpdu); ++ ++ if (ps) { ++ /* Clear the first rate to avoid using a sample rate for PS frames */ ++ info->control.rates[0].idx = -1; ++ info->control.rates[0].count = 0; ++ } ++ + ieee80211_get_tx_rates(vif, sta, bf->bf_mpdu, bf->rates, + ARRAY_SIZE(bf->rates)); ++ if (!ps) ++ return; ++ ++ if (bf->rates[0].count > 2) ++ bf->rates[0].count = 2; ++ ++ bf->rates[1].idx = -1; + } + + static void ath_txq_skb_done(struct ath_softc *sc, struct ath_txq *txq, +@@ -1502,7 +1517,7 @@ ath_tx_form_burst(struct ath_softc *sc, + break; + } + +- ath_set_rates(tid->an->vif, tid->an->sta, bf); ++ ath_set_rates(tid->an->vif, tid->an->sta, bf, false); + } while (1); + } + +@@ -1532,7 +1547,7 @@ static bool ath_tx_sched_aggr(struct ath + return false; + } + +- ath_set_rates(tid->an->vif, tid->an->sta, bf); ++ ath_set_rates(tid->an->vif, tid->an->sta, bf, false); + if (aggr) + aggr_len = ath_tx_form_aggr(sc, txq, tid, &bf_q, bf); + else +@@ -1690,7 +1705,7 @@ void ath9k_release_buffered_frames(struc + break; + + list_add_tail(&bf->list, &bf_q); +- ath_set_rates(tid->an->vif, tid->an->sta, bf); ++ ath_set_rates(tid->an->vif, tid->an->sta, bf, true); + if (bf_isampdu(bf)) { + ath_tx_addto_baw(sc, tid, bf); + bf->bf_state.bf_type &= ~BUF_AGGR; +@@ -2390,7 +2405,7 @@ int ath_tx_start(struct ieee80211_hw *hw + if (txctl->paprd) + bf->bf_state.bfs_paprd_timestamp = jiffies; + +- ath_set_rates(vif, sta, bf); ++ ath_set_rates(vif, sta, bf, ps_resp); + ath_tx_send_normal(sc, txq, tid, skb); + + out: +@@ -2429,7 +2444,7 @@ void ath_tx_cabq(struct ieee80211_hw *hw + break; + + bf->bf_lastbf = bf; +- ath_set_rates(vif, NULL, bf); ++ ath_set_rates(vif, NULL, bf, false); + ath_buf_set_rate(sc, bf, &info, fi->framelen, false); + duration += info.rates[0].PktDuration; + if (bf_tail) +@@ -2946,7 +2961,7 @@ int ath9k_tx99_send(struct ath_softc *sc + return -EINVAL; + } + +- ath_set_rates(sc->tx99_vif, NULL, bf); ++ ath_set_rates(sc->tx99_vif, NULL, bf, false); + + ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, bf->bf_daddr); + ath9k_hw_tx99_start(sc->sc_ah, txctl->txq->axq_qnum); diff --git a/package/kernel/mac80211/patches/356-Revert-ath9k-interpret-requested-txpower-in-EIRP-dom.patch b/package/kernel/mac80211/patches/356-Revert-ath9k-interpret-requested-txpower-in-EIRP-dom.patch new file mode 100644 index 0000000000..35d07430eb --- /dev/null +++ b/package/kernel/mac80211/patches/356-Revert-ath9k-interpret-requested-txpower-in-EIRP-dom.patch @@ -0,0 +1,37 @@ +From: Felix Fietkau +Date: Sat, 14 May 2016 14:51:02 +0200 +Subject: [PATCH] Revert "ath9k: interpret requested txpower in EIRP + domain" + +This reverts commit 71f5137bf010c6faffab50c0ec15374c59c4a411. +--- + +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -2935,7 +2935,8 @@ void ath9k_hw_apply_txpower(struct ath_h + { + struct ath_regulatory *reg = ath9k_hw_regulatory(ah); + struct ieee80211_channel *channel; +- int chan_pwr, new_pwr; ++ int chan_pwr, new_pwr, max_gain; ++ int ant_gain, ant_reduction = 0; + + if (!chan) + return; +@@ -2943,10 +2944,15 @@ void ath9k_hw_apply_txpower(struct ath_h + channel = chan->chan; + chan_pwr = min_t(int, channel->max_power * 2, MAX_RATE_POWER); + new_pwr = min_t(int, chan_pwr, reg->power_limit); ++ max_gain = chan_pwr - new_pwr + channel->max_antenna_gain * 2; ++ ++ ant_gain = get_antenna_gain(ah, chan); ++ if (ant_gain > max_gain) ++ ant_reduction = ant_gain - max_gain; + + ah->eep_ops->set_txpower(ah, chan, + ath9k_regd_get_ctl(reg, chan), +- get_antenna_gain(ah, chan), new_pwr, test); ++ ant_reduction, new_pwr, test); + } + + void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test) diff --git a/package/kernel/mac80211/patches/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch b/package/kernel/mac80211/patches/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch new file mode 100644 index 0000000000..83c613434d --- /dev/null +++ b/package/kernel/mac80211/patches/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch @@ -0,0 +1,219 @@ +From: Janusz Dziedzic +Date: Fri, 19 Feb 2016 11:01:49 +0100 +Subject: [PATCH] mac80211: add hdrlen to ieee80211_tx_data + +Add hdrlen to ieee80211_tx_data and use this +when wep/ccmd/tkip. This is preparation for +aligned4 code. + +Signed-off-by: Janusz Dziedzic +--- + +--- a/net/mac80211/ieee80211_i.h ++++ b/net/mac80211/ieee80211_i.h +@@ -177,6 +177,7 @@ struct ieee80211_tx_data { + struct ieee80211_tx_rate rate; + + unsigned int flags; ++ unsigned int hdrlen; + }; + + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -921,7 +921,7 @@ ieee80211_tx_h_fragment(struct ieee80211 + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + struct ieee80211_hdr *hdr = (void *)skb->data; + int frag_threshold = tx->local->hw.wiphy->frag_threshold; +- int hdrlen; ++ int hdrlen = tx->hdrlen; + int fragnum; + + /* no matter what happens, tx->skb moves to tx->skbs */ +@@ -942,8 +942,6 @@ ieee80211_tx_h_fragment(struct ieee80211 + if (WARN_ON(info->flags & IEEE80211_TX_CTL_AMPDU)) + return TX_DROP; + +- hdrlen = ieee80211_hdrlen(hdr->frame_control); +- + /* internal error, why isn't DONTFRAG set? */ + if (WARN_ON(skb->len + FCS_LEN <= frag_threshold)) + return TX_DROP; +@@ -1175,6 +1173,8 @@ ieee80211_tx_prepare(struct ieee80211_su + + hdr = (struct ieee80211_hdr *) skb->data; + ++ tx->hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ + if (likely(sta)) { + if (!IS_ERR(sta)) + tx->sta = sta; +@@ -3468,6 +3468,7 @@ begin: + tx.local = local; + tx.skb = skb; + tx.sdata = vif_to_sdata(info->control.vif); ++ tx.hdrlen = ieee80211_padded_hdrlen(hw, hdr->frame_control); + + if (txq->sta) + tx.sta = container_of(txq->sta, struct sta_info, sta); +@@ -3796,6 +3797,7 @@ ieee80211_build_data_template(struct iee + hdr = (void *)skb->data; + tx.sta = sta_info_get(sdata, hdr->addr1); + tx.skb = skb; ++ tx.hdrlen = ieee80211_padded_hdrlen(&tx.local->hw, hdr->frame_control); + + if (ieee80211_tx_h_select_key(&tx) != TX_CONTINUE) { + rcu_read_unlock(); +--- a/net/mac80211/util.c ++++ b/net/mac80211/util.c +@@ -1232,6 +1232,7 @@ void ieee80211_send_auth(struct ieee8021 + struct ieee80211_local *local = sdata->local; + struct sk_buff *skb; + struct ieee80211_mgmt *mgmt; ++ unsigned int hdrlen; + int err; + + /* 24 + 6 = header + auth_algo + auth_transaction + status_code */ +@@ -1255,8 +1256,10 @@ void ieee80211_send_auth(struct ieee8021 + skb_put_data(skb, extra, extra_len); + + if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) { ++ hdrlen = ieee80211_hdrlen(mgmt->frame_control); + mgmt->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); +- err = ieee80211_wep_encrypt(local, skb, key, key_len, key_idx); ++ err = ieee80211_wep_encrypt(local, skb, hdrlen, key, ++ key_len, key_idx); + WARN_ON(err); + } + +--- a/net/mac80211/wep.c ++++ b/net/mac80211/wep.c +@@ -89,11 +89,11 @@ static void ieee80211_wep_get_iv(struct + + static u8 *ieee80211_wep_add_iv(struct ieee80211_local *local, + struct sk_buff *skb, ++ unsigned int hdrlen, + int keylen, int keyidx) + { + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); +- unsigned int hdrlen; + u8 *newhdr; + + hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); +@@ -101,7 +101,6 @@ static u8 *ieee80211_wep_add_iv(struct i + if (WARN_ON(skb_headroom(skb) < IEEE80211_WEP_IV_LEN)) + return NULL; + +- hdrlen = ieee80211_hdrlen(hdr->frame_control); + newhdr = skb_push(skb, IEEE80211_WEP_IV_LEN); + memmove(newhdr, newhdr + IEEE80211_WEP_IV_LEN, hdrlen); + +@@ -160,6 +159,7 @@ int ieee80211_wep_encrypt_data(struct cr + */ + int ieee80211_wep_encrypt(struct ieee80211_local *local, + struct sk_buff *skb, ++ unsigned int hdrlen, + const u8 *key, int keylen, int keyidx) + { + u8 *iv; +@@ -169,7 +169,7 @@ int ieee80211_wep_encrypt(struct ieee802 + if (WARN_ON(skb_tailroom(skb) < IEEE80211_WEP_ICV_LEN)) + return -1; + +- iv = ieee80211_wep_add_iv(local, skb, keylen, keyidx); ++ iv = ieee80211_wep_add_iv(local, skb, hdrlen, keylen, keyidx); + if (!iv) + return -1; + +@@ -307,13 +307,14 @@ static int wep_encrypt_skb(struct ieee80 + struct ieee80211_key_conf *hw_key = info->control.hw_key; + + if (!hw_key) { +- if (ieee80211_wep_encrypt(tx->local, skb, tx->key->conf.key, ++ if (ieee80211_wep_encrypt(tx->local, skb, tx->hdrlen, ++ tx->key->conf.key, + tx->key->conf.keylen, + tx->key->conf.keyidx)) + return -1; + } else if ((hw_key->flags & IEEE80211_KEY_FLAG_GENERATE_IV) || + (hw_key->flags & IEEE80211_KEY_FLAG_PUT_IV_SPACE)) { +- if (!ieee80211_wep_add_iv(tx->local, skb, ++ if (!ieee80211_wep_add_iv(tx->local, skb, tx->hdrlen, + tx->key->conf.keylen, + tx->key->conf.keyidx)) + return -1; +--- a/net/mac80211/wep.h ++++ b/net/mac80211/wep.h +@@ -22,6 +22,7 @@ int ieee80211_wep_encrypt_data(struct cr + size_t klen, u8 *data, size_t data_len); + int ieee80211_wep_encrypt(struct ieee80211_local *local, + struct sk_buff *skb, ++ unsigned int hdrlen, + const u8 *key, int keylen, int keyidx); + int ieee80211_wep_decrypt_data(struct crypto_cipher *tfm, u8 *rc4key, + size_t klen, u8 *data, size_t data_len); +--- a/net/mac80211/wpa.c ++++ b/net/mac80211/wpa.c +@@ -44,7 +44,7 @@ ieee80211_tx_h_michael_mic_add(struct ie + skb->len < 24 || !ieee80211_is_data_present(hdr->frame_control)) + return TX_CONTINUE; + +- hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ hdrlen = tx->hdrlen; + if (skb->len < hdrlen) + return TX_DROP; + +@@ -187,7 +187,6 @@ mic_fail_no_key: + + static int tkip_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) + { +- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; + struct ieee80211_key *key = tx->key; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + unsigned int hdrlen; +@@ -202,7 +201,7 @@ static int tkip_encrypt_skb(struct ieee8 + return 0; + } + +- hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ hdrlen = tx->hdrlen; + len = skb->len - hdrlen; + + if (info->control.hw_key) +@@ -420,7 +419,7 @@ static int ccmp_encrypt_skb(struct ieee8 + return 0; + } + +- hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ hdrlen = tx->hdrlen; + len = skb->len - hdrlen; + + if (info->control.hw_key) +@@ -653,7 +652,7 @@ static int gcmp_encrypt_skb(struct ieee8 + return 0; + } + +- hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ hdrlen = tx->hdrlen; + len = skb->len - hdrlen; + + if (info->control.hw_key) +@@ -793,7 +792,6 @@ static ieee80211_tx_result + ieee80211_crypto_cs_encrypt(struct ieee80211_tx_data *tx, + struct sk_buff *skb) + { +- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; + struct ieee80211_key *key = tx->key; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + int hdrlen; +@@ -809,8 +807,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8 + pskb_expand_head(skb, iv_len, 0, GFP_ATOMIC))) + return TX_DROP; + +- hdrlen = ieee80211_hdrlen(hdr->frame_control); +- ++ hdrlen = tx->hdrlen; + pos = skb_push(skb, iv_len); + memmove(pos, pos + iv_len, hdrlen); + diff --git a/package/kernel/mac80211/patches/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch b/package/kernel/mac80211/patches/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch new file mode 100644 index 0000000000..a9f01b368d --- /dev/null +++ b/package/kernel/mac80211/patches/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch @@ -0,0 +1,233 @@ +From: Janusz Dziedzic +Date: Fri, 19 Feb 2016 11:01:50 +0100 +Subject: [PATCH] mac80211: add NEED_ALIGNED4_SKBS hw flag + +HW/driver should set NEED_ALIGNED4_SKBS flag in case +require aligned skbs to four-byte boundaries. +This affect only TX direction. + +Padding is added after ieee80211_hdr, before IV/LLC. + +Before we have to do memmove(hdrlen) twice in the +dirver. Once before we pass this to HW and next +in tx completion (to be sure monitor will report +this tx frame correctly). + +With this patch we can skip this memmove() and save CPU. + +Currently this was tested with ath9k, both hw/sw crypt for +wep/tkip/ccmp. + +Signed-off-by: Janusz Dziedzic +--- + +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -2059,6 +2059,9 @@ struct ieee80211_txq { + * @IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA: Hardware supports buffer STA on + * TDLS links. + * ++ * @IEEE80211_HW_NEEDS_ALIGNED4_SKBS: Driver need aligned skbs to four-byte. ++ * Padding will be added after ieee80211_hdr, before IV/LLC. ++ * + * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays + */ + enum ieee80211_hw_flags { +@@ -2102,6 +2105,7 @@ enum ieee80211_hw_flags { + IEEE80211_HW_REPORTS_LOW_ACK, + IEEE80211_HW_SUPPORTS_TX_FRAG, + IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA, ++ IEEE80211_HW_NEEDS_ALIGNED4_SKBS, + + /* keep last, obviously */ + NUM_IEEE80211_HW_FLAGS +--- a/net/mac80211/debugfs.c ++++ b/net/mac80211/debugfs.c +@@ -212,6 +212,7 @@ static const char *hw_flag_names[] = { + FLAG(REPORTS_LOW_ACK), + FLAG(SUPPORTS_TX_FRAG), + FLAG(SUPPORTS_TDLS_BUFFER_STA), ++ FLAG(NEEDS_ALIGNED4_SKBS), + #undef FLAG + }; + +--- a/net/mac80211/ieee80211_i.h ++++ b/net/mac80211/ieee80211_i.h +@@ -1548,6 +1548,29 @@ ieee80211_vif_get_num_mcast_if(struct ie + return -1; + } + ++static inline unsigned int ++ieee80211_hdr_padsize(struct ieee80211_hw *hw, unsigned int hdrlen) ++{ ++ /* ++ * While hdrlen is already aligned to two-byte boundaries, ++ * simple check with & 2 will return correct padsize. ++ */ ++ if (ieee80211_hw_check(hw, NEEDS_ALIGNED4_SKBS)) ++ return hdrlen & 2; ++ return 0; ++} ++ ++static inline unsigned int ++ieee80211_padded_hdrlen(struct ieee80211_hw *hw, __le16 fc) ++{ ++ unsigned int hdrlen; ++ ++ hdrlen = ieee80211_hdrlen(fc); ++ hdrlen += ieee80211_hdr_padsize(hw, hdrlen); ++ ++ return hdrlen; ++} ++ + u64 ieee80211_calculate_rx_timestamp(struct ieee80211_local *local, + struct ieee80211_rx_status *status, + unsigned int mpdu_len, +--- a/net/mac80211/sta_info.h ++++ b/net/mac80211/sta_info.h +@@ -300,7 +300,7 @@ struct ieee80211_fast_tx { + u8 hdr_len; + u8 sa_offs, da_offs, pn_offs; + u8 band; +- u8 hdr[30 + 2 + IEEE80211_FAST_XMIT_MAX_IV + ++ u8 hdr[30 + 2 + 2 + IEEE80211_FAST_XMIT_MAX_IV + + sizeof(rfc1042_header)] __aligned(2); + + struct rcu_head rcu_head; +--- a/net/mac80211/status.c ++++ b/net/mac80211/status.c +@@ -642,9 +642,22 @@ void ieee80211_tx_monitor(struct ieee802 + struct sk_buff *skb2; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); + struct ieee80211_sub_if_data *sdata; ++ struct ieee80211_hdr *hdr = (void *)skb->data; + struct net_device *prev_dev = NULL; ++ unsigned int hdrlen, padsize; + int rtap_len; + ++ /* Remove padding if was added */ ++ if (ieee80211_hw_check(&local->hw, NEEDS_ALIGNED4_SKBS)) { ++ hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ padsize = ieee80211_hdr_padsize(&local->hw, hdrlen); ++ ++ if (padsize && skb->len > hdrlen + padsize) { ++ memmove(skb->data + padsize, skb->data, hdrlen); ++ skb_pull(skb, padsize); ++ } ++ } ++ + /* send frame to monitor interfaces now */ + rtap_len = ieee80211_tx_radiotap_len(info); + if (WARN_ON_ONCE(skb_headroom(skb) < rtap_len)) { +--- a/net/mac80211/tkip.c ++++ b/net/mac80211/tkip.c +@@ -201,10 +201,12 @@ void ieee80211_get_tkip_p2k(struct ieee8 + { + struct ieee80211_key *key = (struct ieee80211_key *) + container_of(keyconf, struct ieee80211_key, conf); ++ struct ieee80211_hw *hw = &key->local->hw; + const u8 *tk = &key->conf.key[NL80211_TKIP_DATA_OFFSET_ENCR_KEY]; + struct tkip_ctx *ctx = &key->u.tkip.tx; + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; +- const u8 *data = (u8 *)hdr + ieee80211_hdrlen(hdr->frame_control); ++ const u8 *data = (u8 *)hdr + ieee80211_padded_hdrlen(hw, ++ hdr->frame_control); + u32 iv32 = get_unaligned_le32(&data[4]); + u16 iv16 = data[2] | (data[0] << 8); + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -1172,8 +1172,7 @@ ieee80211_tx_prepare(struct ieee80211_su + info->flags &= ~IEEE80211_TX_INTFL_NEED_TXPROCESSING; + + hdr = (struct ieee80211_hdr *) skb->data; +- +- tx->hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ tx->hdrlen = ieee80211_padded_hdrlen(&local->hw, hdr->frame_control); + + if (likely(sta)) { + if (!IS_ERR(sta)) +@@ -2184,7 +2183,7 @@ netdev_tx_t ieee80211_monitor_start_xmit + goto fail; + + hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr); +- hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ hdrlen = ieee80211_padded_hdrlen(&local->hw, hdr->frame_control); + + if (skb->len < len_rthdr + hdrlen) + goto fail; +@@ -2402,7 +2401,7 @@ static struct sk_buff *ieee80211_build_h + struct ieee80211_chanctx_conf *chanctx_conf; + struct ieee80211_sub_if_data *ap_sdata; + enum nl80211_band band; +- int ret; ++ int padsize, ret; + + if (IS_ERR(sta)) + sta = NULL; +@@ -2622,6 +2621,9 @@ static struct sk_buff *ieee80211_build_h + hdrlen += 2; + } + ++ /* Check aligned4 skb required */ ++ padsize = ieee80211_hdr_padsize(&sdata->local->hw, hdrlen); ++ + /* + * Drop unicast frames to unauthorised stations unless they are + * EAPOL frames from the local station. +@@ -2702,6 +2704,7 @@ static struct sk_buff *ieee80211_build_h + + skb_pull(skb, skip_header_bytes); + head_need = hdrlen + encaps_len + meshhdrlen - skb_headroom(skb); ++ head_need += padsize; + + /* + * So we need to modify the skb header and hence need a copy of +@@ -2734,6 +2737,9 @@ static struct sk_buff *ieee80211_build_h + memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen); + #endif + ++ if (padsize) ++ memset(skb_push(skb, padsize), 0, padsize); ++ + if (ieee80211_is_data_qos(fc)) { + __le16 *qos_control; + +@@ -2909,6 +2915,9 @@ void ieee80211_check_fast_xmit(struct st + fc |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA); + } + ++ /* Check aligned4 skb required */ ++ build.hdr_len += ieee80211_hdr_padsize(&local->hw, build.hdr_len); ++ + /* We store the key here so there's no point in using rcu_dereference() + * but that's fine because the code that changes the pointers will call + * this function after doing so. For a single CPU that would be enough, +@@ -3495,7 +3504,7 @@ begin: + + if (tx.key && + (tx.key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV)) +- pn_offs = ieee80211_hdrlen(hdr->frame_control); ++ pn_offs = tx.hdrlen; + + ieee80211_xmit_fast_finish(sta->sdata, sta, pn_offs, + tx.key, skb); +--- a/net/mac80211/util.c ++++ b/net/mac80211/util.c +@@ -1230,6 +1230,7 @@ void ieee80211_send_auth(struct ieee8021 + u32 tx_flags) + { + struct ieee80211_local *local = sdata->local; ++ struct ieee80211_hw *hw = &local->hw; + struct sk_buff *skb; + struct ieee80211_mgmt *mgmt; + unsigned int hdrlen; +@@ -1256,7 +1257,7 @@ void ieee80211_send_auth(struct ieee8021 + skb_put_data(skb, extra, extra_len); + + if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) { +- hdrlen = ieee80211_hdrlen(mgmt->frame_control); ++ hdrlen = ieee80211_padded_hdrlen(hw, mgmt->frame_control); + mgmt->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); + err = ieee80211_wep_encrypt(local, skb, hdrlen, key, + key_len, key_idx); diff --git a/package/kernel/mac80211/patches/359-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch b/package/kernel/mac80211/patches/359-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch new file mode 100644 index 0000000000..609b15b832 --- /dev/null +++ b/package/kernel/mac80211/patches/359-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch @@ -0,0 +1,82 @@ +From: Chaitanya T K +Date: Mon, 27 Jun 2016 15:23:26 +0530 +Subject: [PATCH] mac80211: minstrel: Enable STBC and LDPC for VHT Rates + +If peer support reception of STBC and LDPC, enable them for better +performance. + +Signed-off-by: Chaitanya TK +--- + +--- a/include/linux/ieee80211.h ++++ b/include/linux/ieee80211.h +@@ -1556,6 +1556,7 @@ struct ieee80211_vht_operation { + #define IEEE80211_VHT_CAP_RXSTBC_3 0x00000300 + #define IEEE80211_VHT_CAP_RXSTBC_4 0x00000400 + #define IEEE80211_VHT_CAP_RXSTBC_MASK 0x00000700 ++#define IEEE80211_VHT_CAP_RXSTBC_SHIFT 8 + #define IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE 0x00000800 + #define IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE 0x00001000 + #define IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT 13 +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -1130,7 +1130,7 @@ minstrel_ht_update_caps(void *priv, stru + struct minstrel_ht_sta_priv *msp = priv_sta; + struct minstrel_ht_sta *mi = &msp->ht; + struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs; +- u16 sta_cap = sta->ht_cap.cap; ++ u16 ht_cap = sta->ht_cap.cap; + struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap; + struct sta_info *sinfo = container_of(sta, struct sta_info, sta); + int use_vht; +@@ -1138,6 +1138,7 @@ minstrel_ht_update_caps(void *priv, stru + int ack_dur; + int stbc; + int i; ++ bool ldpc = false; + + /* fall back to the old minstrel for legacy stations */ + if (!sta->ht_cap.ht_supported) +@@ -1175,16 +1176,24 @@ minstrel_ht_update_caps(void *priv, stru + } + mi->sample_tries = 4; + +- /* TODO tx_flags for vht - ATM the RC API is not fine-grained enough */ + if (!use_vht) { +- stbc = (sta_cap & IEEE80211_HT_CAP_RX_STBC) >> ++ stbc = (ht_cap & IEEE80211_HT_CAP_RX_STBC) >> + IEEE80211_HT_CAP_RX_STBC_SHIFT; +- mi->tx_flags |= stbc << IEEE80211_TX_CTL_STBC_SHIFT; + +- if (sta_cap & IEEE80211_HT_CAP_LDPC_CODING) +- mi->tx_flags |= IEEE80211_TX_CTL_LDPC; ++ if (ht_cap & IEEE80211_HT_CAP_LDPC_CODING) ++ ldpc = true; ++ } else { ++ stbc = (vht_cap->cap & IEEE80211_VHT_CAP_RXSTBC_MASK) >> ++ IEEE80211_VHT_CAP_RXSTBC_SHIFT; ++ ++ if (vht_cap->cap & IEEE80211_VHT_CAP_RXLDPC) ++ ldpc = true; + } + ++ mi->tx_flags |= stbc << IEEE80211_TX_CTL_STBC_SHIFT; ++ if (ldpc) ++ mi->tx_flags |= IEEE80211_TX_CTL_LDPC; ++ + for (i = 0; i < ARRAY_SIZE(mi->groups); i++) { + u32 gflags = minstrel_mcs_groups[i].flags; + int bw, nss; +@@ -1197,10 +1206,10 @@ minstrel_ht_update_caps(void *priv, stru + + if (gflags & IEEE80211_TX_RC_SHORT_GI) { + if (gflags & IEEE80211_TX_RC_40_MHZ_WIDTH) { +- if (!(sta_cap & IEEE80211_HT_CAP_SGI_40)) ++ if (!(ht_cap & IEEE80211_HT_CAP_SGI_40)) + continue; + } else { +- if (!(sta_cap & IEEE80211_HT_CAP_SGI_20)) ++ if (!(ht_cap & IEEE80211_HT_CAP_SGI_20)) + continue; + } + } diff --git a/package/kernel/mac80211/patches/360-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch b/package/kernel/mac80211/patches/360-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch new file mode 100644 index 0000000000..c9c74bb836 --- /dev/null +++ b/package/kernel/mac80211/patches/360-ath9k-fix-moredata-bit-in-PS-buffered-frame-release.patch @@ -0,0 +1,50 @@ +From: Felix Fietkau +Date: Sun, 28 Aug 2016 13:13:01 +0200 +Subject: [PATCH] ath9k: fix moredata bit in PS buffered frame release + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -1674,6 +1674,22 @@ void ath_tx_aggr_wakeup(struct ath_softc + } + } + ++ ++static void ++ath9k_set_moredata(struct ath_softc *sc, struct ath_buf *bf, bool val) ++{ ++ struct ieee80211_hdr *hdr; ++ u16 mask = cpu_to_le16(IEEE80211_FCTL_MOREDATA); ++ u16 mask_val = mask * val; ++ ++ hdr = (struct ieee80211_hdr *) bf->bf_mpdu->data; ++ if ((hdr->frame_control & mask) != mask_val) { ++ hdr->frame_control = (hdr->frame_control & ~mask) | mask_val; ++ dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, ++ sizeof(*hdr), DMA_TO_DEVICE); ++ } ++} ++ + void ath9k_release_buffered_frames(struct ieee80211_hw *hw, + struct ieee80211_sta *sta, + u16 tids, int nframes, +@@ -1704,6 +1720,7 @@ void ath9k_release_buffered_frames(struc + if (!bf) + break; + ++ ath9k_set_moredata(sc, bf, true); + list_add_tail(&bf->list, &bf_q); + ath_set_rates(tid->an->vif, tid->an->sta, bf, true); + if (bf_isampdu(bf)) { +@@ -1727,6 +1744,9 @@ void ath9k_release_buffered_frames(struc + if (list_empty(&bf_q)) + return; + ++ if (!more_data) ++ ath9k_set_moredata(sc, bf_tail, false); ++ + info = IEEE80211_SKB_CB(bf_tail->bf_mpdu); + info->flags |= IEEE80211_TX_STATUS_EOSP; + diff --git a/package/kernel/mac80211/patches/361-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch b/package/kernel/mac80211/patches/361-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch new file mode 100644 index 0000000000..1893187e8a --- /dev/null +++ b/package/kernel/mac80211/patches/361-ath9k-clear-potentially-stale-EOSP-status-bit-in-int.patch @@ -0,0 +1,22 @@ +From: Felix Fietkau +Date: Sun, 28 Aug 2016 13:13:42 +0200 +Subject: [PATCH] ath9k: clear potentially stale EOSP status bit in + intermediate queues + +Prevents spurious ieee80211_sta_eosp calls. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -984,7 +984,8 @@ ath_tx_get_tid_subframe(struct ath_softc + bf->bf_lastbf = bf; + + tx_info = IEEE80211_SKB_CB(skb); +- tx_info->flags &= ~IEEE80211_TX_CTL_CLEAR_PS_FILT; ++ tx_info->flags &= ~(IEEE80211_TX_CTL_CLEAR_PS_FILT | ++ IEEE80211_TX_STATUS_EOSP); + + /* + * No aggregation session is running, but there may be frames diff --git a/package/kernel/mac80211/patches/312-ath9k-report-tx-status-on-EOSP.patch b/package/kernel/mac80211/patches/362-ath9k-report-tx-status-on-EOSP.patch similarity index 100% rename from package/kernel/mac80211/patches/312-ath9k-report-tx-status-on-EOSP.patch rename to package/kernel/mac80211/patches/362-ath9k-report-tx-status-on-EOSP.patch diff --git a/package/kernel/mac80211/patches/363-ath9k-fix-block-ack-window-tracking-issues.patch b/package/kernel/mac80211/patches/363-ath9k-fix-block-ack-window-tracking-issues.patch new file mode 100644 index 0000000000..59de1dfe1a --- /dev/null +++ b/package/kernel/mac80211/patches/363-ath9k-fix-block-ack-window-tracking-issues.patch @@ -0,0 +1,114 @@ +From: Felix Fietkau +Date: Tue, 30 Aug 2016 12:44:08 +0200 +Subject: [PATCH] ath9k: fix block-ack window tracking issues + +Ensure that a buffer gets tracked as part of the block-ack window as +soon as it's dequeued from the tid for the first time. Ensure that +double calls to ath_tx_addto_baw (e.g. on retransmission) don't cause +any issues. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -62,7 +62,7 @@ static void ath_tx_rc_status(struct ath_ + struct ath_tx_status *ts, int nframes, int nbad, + int txok); + static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid, +- int seqno); ++ struct ath_buf *bf); + static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, + struct ath_txq *txq, + struct ath_atx_tid *tid, +@@ -311,7 +311,7 @@ static void ath_tx_flush_tid(struct ath_ + } + + if (fi->baw_tracked) { +- ath_tx_update_baw(sc, tid, bf->bf_state.seqno); ++ ath_tx_update_baw(sc, tid, bf); + sendbar = true; + } + +@@ -327,10 +327,15 @@ static void ath_tx_flush_tid(struct ath_ + } + + static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid, +- int seqno) ++ struct ath_buf *bf) + { ++ struct ath_frame_info *fi = get_frame_info(bf->bf_mpdu); ++ u16 seqno = bf->bf_state.seqno; + int index, cindex; + ++ if (!fi->baw_tracked) ++ return; ++ + index = ATH_BA_INDEX(tid->seq_start, seqno); + cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1); + +@@ -351,6 +356,9 @@ static void ath_tx_addto_baw(struct ath_ + u16 seqno = bf->bf_state.seqno; + int index, cindex; + ++ if (fi->baw_tracked) ++ return; ++ + index = ATH_BA_INDEX(tid->seq_start, seqno); + cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1); + __set_bit(cindex, tid->tx_buf); +@@ -627,7 +635,7 @@ static void ath_tx_complete_aggr(struct + * complete the acked-ones/xretried ones; update + * block-ack window + */ +- ath_tx_update_baw(sc, tid, seqno); ++ ath_tx_update_baw(sc, tid, bf); + + if (rc_update && (acked_cnt == 1 || txfail_cnt == 1)) { + memcpy(tx_info->control.rates, rates, sizeof(rates)); +@@ -657,7 +665,7 @@ static void ath_tx_complete_aggr(struct + * run out of tx buf. + */ + if (!tbf) { +- ath_tx_update_baw(sc, tid, seqno); ++ ath_tx_update_baw(sc, tid, bf); + + ath_tx_complete_buf(sc, bf, txq, + &bf_head, NULL, ts, +@@ -1026,11 +1034,14 @@ ath_tx_get_tid_subframe(struct ath_softc + + INIT_LIST_HEAD(&bf_head); + list_add(&bf->list, &bf_head); +- ath_tx_update_baw(sc, tid, seqno); ++ ath_tx_update_baw(sc, tid, bf); + ath_tx_complete_buf(sc, bf, txq, &bf_head, NULL, &ts, 0); + continue; + } + ++ if (bf_isampdu(bf)) ++ ath_tx_addto_baw(sc, tid, bf); ++ + return bf; + } + +@@ -1088,8 +1099,6 @@ ath_tx_form_aggr(struct ath_softc *sc, s + bf->bf_next = NULL; + + /* link buffers of this frame to the aggregate */ +- if (!fi->baw_tracked) +- ath_tx_addto_baw(sc, tid, bf); + bf->bf_state.ndelim = ndelim; + + list_add_tail(&bf->list, bf_q); +@@ -1725,10 +1734,8 @@ void ath9k_release_buffered_frames(struc + ath9k_set_moredata(sc, bf, true); + list_add_tail(&bf->list, &bf_q); + ath_set_rates(tid->an->vif, tid->an->sta, bf, true); +- if (bf_isampdu(bf)) { +- ath_tx_addto_baw(sc, tid, bf); ++ if (bf_isampdu(bf)) + bf->bf_state.bf_type &= ~BUF_AGGR; +- } + if (bf_tail) + bf_tail->bf_next = bf; + diff --git a/package/kernel/mac80211/patches/324-ath9k_hw-fix-channel-maximum-power-level-test.patch b/package/kernel/mac80211/patches/364-ath9k_hw-fix-channel-maximum-power-level-test.patch similarity index 100% rename from package/kernel/mac80211/patches/324-ath9k_hw-fix-channel-maximum-power-level-test.patch rename to package/kernel/mac80211/patches/364-ath9k_hw-fix-channel-maximum-power-level-test.patch diff --git a/package/kernel/mac80211/patches/365-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch b/package/kernel/mac80211/patches/365-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch new file mode 100644 index 0000000000..78083517bc --- /dev/null +++ b/package/kernel/mac80211/patches/365-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch @@ -0,0 +1,24 @@ +From: Felix Fietkau +Date: Wed, 19 Jul 2017 08:49:31 +0200 +Subject: [PATCH] ath9k: adjust tx power reduction for US regulatory + domain + +FCC regulatory rules allow for up to 3 dBi antenna gain. Account for +this in the EEPROM based tx power reduction code. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -2954,6 +2954,10 @@ void ath9k_hw_apply_txpower(struct ath_h + if (ant_gain > max_gain) + ant_reduction = ant_gain - max_gain; + ++ /* FCC allows maximum antenna gain of 3 dBi */ ++ if (reg->region == NL80211_DFS_FCC) ++ ant_reduction = max_t(int, ant_reduction - 6, 0); ++ + ah->eep_ops->set_txpower(ah, chan, ctl, ant_reduction, new_pwr, test); + } + diff --git a/package/kernel/mac80211/patches/366-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch b/package/kernel/mac80211/patches/366-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch new file mode 100644 index 0000000000..096eb56a2d --- /dev/null +++ b/package/kernel/mac80211/patches/366-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch @@ -0,0 +1,41 @@ +From: Felix Fietkau +Date: Sun, 23 Jul 2017 14:58:22 +0200 +Subject: [PATCH] ath9k: fix more-data flag for buffered multicast + packets + +The flag needs to be cleared for the last packet in the list, not the +first one. Fixes some issues with multicast packet loss for powersave +clients connected to an ath9k AP. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -2451,7 +2451,6 @@ void ath_tx_cabq(struct ieee80211_hw *hw + .txq = sc->beacon.cabq + }; + struct ath_tx_info info = {}; +- struct ieee80211_hdr *hdr; + struct ath_buf *bf_tail = NULL; + struct ath_buf *bf; + LIST_HEAD(bf_q); +@@ -2495,15 +2494,10 @@ void ath_tx_cabq(struct ieee80211_hw *hw + if (list_empty(&bf_q)) + return; + +- bf = list_first_entry(&bf_q, struct ath_buf, list); +- hdr = (struct ieee80211_hdr *) bf->bf_mpdu->data; +- +- if (hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_MOREDATA)) { +- hdr->frame_control &= ~cpu_to_le16(IEEE80211_FCTL_MOREDATA); +- dma_sync_single_for_device(sc->dev, bf->bf_buf_addr, +- sizeof(*hdr), DMA_TO_DEVICE); +- } ++ bf = list_last_entry(&bf_q, struct ath_buf, list); ++ ath9k_set_moredata(sc, bf, false); + ++ bf = list_first_entry(&bf_q, struct ath_buf, list); + ath_txq_lock(sc, txctl.txq); + ath_tx_fill_desc(sc, bf, txctl.txq, 0); + ath_tx_txqaddbuf(sc, txctl.txq, &bf_q, false); diff --git a/package/kernel/mac80211/patches/369-cfg80211-use-only-1Mbps-for-basic-rates-in-mesh.patch b/package/kernel/mac80211/patches/369-cfg80211-use-only-1Mbps-for-basic-rates-in-mesh.patch new file mode 100644 index 0000000000..bc4174e4c2 --- /dev/null +++ b/package/kernel/mac80211/patches/369-cfg80211-use-only-1Mbps-for-basic-rates-in-mesh.patch @@ -0,0 +1,55 @@ +From: Johannes Berg +Date: Tue, 30 Jan 2018 13:17:38 +0100 +Subject: [PATCH] cfg80211: use only 1Mbps for basic rates in mesh + +Mesh used to use the mandatory rates as basic rates, but we got +the calculation of mandatory rates wrong until some time ago. +Fix this this broke interoperability with older versions since +now more basic rates are required, and thus the MBSS isn't the +same and the network stops working. + +Fix this by simply using only 1Mbps as the basic rate in 2.4GHz. +Since the changed mandatory rates only affected 2.4GHz, this is +all we need to make it work again. + +Reported-and-tested-by: Matthias Schiffer +Fixes: 1bd773c077de ("wireless: set correct mandatory rate flags") +Signed-off-by: Johannes Berg +--- + net/wireless/mesh.c | 25 ++++++++++++++++++++++--- + 1 file changed, 22 insertions(+), 3 deletions(-) + +--- a/net/wireless/mesh.c ++++ b/net/wireless/mesh.c +@@ -169,9 +169,28 @@ int __cfg80211_join_mesh(struct cfg80211 + enum nl80211_bss_scan_width scan_width; + struct ieee80211_supported_band *sband = + rdev->wiphy.bands[setup->chandef.chan->band]; +- scan_width = cfg80211_chandef_to_scan_width(&setup->chandef); +- setup->basic_rates = ieee80211_mandatory_rates(sband, +- scan_width); ++ ++ if (setup->chandef.chan->band == NL80211_BAND_2GHZ) { ++ int i; ++ ++ /* ++ * Older versions selected the mandatory rates for ++ * 2.4 GHz as well, but were broken in that only ++ * 1 Mbps was regarded as a mandatory rate. Keep ++ * using just 1 Mbps as the default basic rate for ++ * mesh to be interoperable with older versions. ++ */ ++ for (i = 0; i < sband->n_bitrates; i++) { ++ if (sband->bitrates[i].bitrate == 10) { ++ setup->basic_rates = BIT(i); ++ break; ++ } ++ } ++ } else { ++ scan_width = cfg80211_chandef_to_scan_width(&setup->chandef); ++ setup->basic_rates = ieee80211_mandatory_rates(sband, ++ scan_width); ++ } + } + + err = cfg80211_chandef_dfs_required(&rdev->wiphy, diff --git a/package/kernel/mac80211/patches/370-mac80211-minstrel-remove-unnecessary-debugfs-cleanup.patch b/package/kernel/mac80211/patches/370-mac80211-minstrel-remove-unnecessary-debugfs-cleanup.patch new file mode 100644 index 0000000000..14cf6641d8 --- /dev/null +++ b/package/kernel/mac80211/patches/370-mac80211-minstrel-remove-unnecessary-debugfs-cleanup.patch @@ -0,0 +1,150 @@ +From: Felix Fietkau +Date: Sat, 10 Feb 2018 12:41:51 +0100 +Subject: [PATCH] mac80211: minstrel: remove unnecessary debugfs cleanup + code + +debugfs entries are cleaned up by debugfs_remove_recursive already. + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel.c ++++ b/net/mac80211/rc80211_minstrel.c +@@ -689,8 +689,8 @@ minstrel_alloc(struct ieee80211_hw *hw, + + #ifdef CPTCFG_MAC80211_DEBUGFS + mp->fixed_rate_idx = (u32) -1; +- mp->dbg_fixed_rate = debugfs_create_u32("fixed_rate_idx", +- S_IRUGO | S_IWUGO, debugfsdir, &mp->fixed_rate_idx); ++ debugfs_create_u32("fixed_rate_idx", S_IRUGO | S_IWUGO, debugfsdir, ++ &mp->fixed_rate_idx); + #endif + + minstrel_init_cck_rates(mp); +@@ -701,9 +701,6 @@ minstrel_alloc(struct ieee80211_hw *hw, + static void + minstrel_free(void *priv) + { +-#ifdef CPTCFG_MAC80211_DEBUGFS +- debugfs_remove(((struct minstrel_priv *)priv)->dbg_fixed_rate); +-#endif + kfree(priv); + } + +@@ -735,7 +732,6 @@ const struct rate_control_ops mac80211_m + .free_sta = minstrel_free_sta, + #ifdef CPTCFG_MAC80211_DEBUGFS + .add_sta_debugfs = minstrel_add_sta_debugfs, +- .remove_sta_debugfs = minstrel_remove_sta_debugfs, + #endif + .get_expected_throughput = minstrel_get_expected_throughput, + }; +--- a/net/mac80211/rc80211_minstrel.h ++++ b/net/mac80211/rc80211_minstrel.h +@@ -109,11 +109,6 @@ struct minstrel_sta_info { + + /* sampling table */ + u8 *sample_table; +- +-#ifdef CPTCFG_MAC80211_DEBUGFS +- struct dentry *dbg_stats; +- struct dentry *dbg_stats_csv; +-#endif + }; + + struct minstrel_priv { +@@ -137,7 +132,6 @@ struct minstrel_priv { + * - setting will be applied on next update + */ + u32 fixed_rate_idx; +- struct dentry *dbg_fixed_rate; + #endif + }; + +@@ -156,7 +150,6 @@ minstrel_get_ewmsd10(struct minstrel_rat + + extern const struct rate_control_ops mac80211_minstrel; + void minstrel_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir); +-void minstrel_remove_sta_debugfs(void *priv, void *priv_sta); + + /* Recalculate success probabilities and counters for a given rate using EWMA */ + void minstrel_calc_rate_stats(struct minstrel_rate_stats *mrs); +--- a/net/mac80211/rc80211_minstrel_debugfs.c ++++ b/net/mac80211/rc80211_minstrel_debugfs.c +@@ -214,19 +214,7 @@ minstrel_add_sta_debugfs(void *priv, voi + { + struct minstrel_sta_info *mi = priv_sta; + +- mi->dbg_stats = debugfs_create_file("rc_stats", S_IRUGO, dir, mi, +- &minstrel_stat_fops); +- +- mi->dbg_stats_csv = debugfs_create_file("rc_stats_csv", S_IRUGO, dir, +- mi, &minstrel_stat_csv_fops); +-} +- +-void +-minstrel_remove_sta_debugfs(void *priv, void *priv_sta) +-{ +- struct minstrel_sta_info *mi = priv_sta; +- +- debugfs_remove(mi->dbg_stats); +- +- debugfs_remove(mi->dbg_stats_csv); ++ debugfs_create_file("rc_stats", S_IRUGO, dir, mi, &minstrel_stat_fops); ++ debugfs_create_file("rc_stats_csv", S_IRUGO, dir, mi, ++ &minstrel_stat_csv_fops); + } +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -1393,7 +1393,6 @@ static const struct rate_control_ops mac + .free = minstrel_ht_free, + #ifdef CPTCFG_MAC80211_DEBUGFS + .add_sta_debugfs = minstrel_ht_add_sta_debugfs, +- .remove_sta_debugfs = minstrel_ht_remove_sta_debugfs, + #endif + .get_expected_throughput = minstrel_ht_get_expected_throughput, + }; +--- a/net/mac80211/rc80211_minstrel_ht.h ++++ b/net/mac80211/rc80211_minstrel_ht.h +@@ -110,17 +110,12 @@ struct minstrel_ht_sta_priv { + struct minstrel_ht_sta ht; + struct minstrel_sta_info legacy; + }; +-#ifdef CPTCFG_MAC80211_DEBUGFS +- struct dentry *dbg_stats; +- struct dentry *dbg_stats_csv; +-#endif + void *ratelist; + void *sample_table; + bool is_ht; + }; + + void minstrel_ht_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir); +-void minstrel_ht_remove_sta_debugfs(void *priv, void *priv_sta); + int minstrel_ht_get_tp_avg(struct minstrel_ht_sta *mi, int group, int rate, + int prob_ewma); + +--- a/net/mac80211/rc80211_minstrel_ht_debugfs.c ++++ b/net/mac80211/rc80211_minstrel_ht_debugfs.c +@@ -303,17 +303,8 @@ minstrel_ht_add_sta_debugfs(void *priv, + { + struct minstrel_ht_sta_priv *msp = priv_sta; + +- msp->dbg_stats = debugfs_create_file("rc_stats", S_IRUGO, dir, msp, +- &minstrel_ht_stat_fops); +- msp->dbg_stats_csv = debugfs_create_file("rc_stats_csv", S_IRUGO, +- dir, msp, &minstrel_ht_stat_csv_fops); +-} +- +-void +-minstrel_ht_remove_sta_debugfs(void *priv, void *priv_sta) +-{ +- struct minstrel_ht_sta_priv *msp = priv_sta; +- +- debugfs_remove(msp->dbg_stats); +- debugfs_remove(msp->dbg_stats_csv); ++ debugfs_create_file("rc_stats", S_IRUGO, dir, msp, ++ &minstrel_ht_stat_fops); ++ debugfs_create_file("rc_stats_csv", S_IRUGO, dir, msp, ++ &minstrel_ht_stat_csv_fops); + } diff --git a/package/kernel/mac80211/patches/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch b/package/kernel/mac80211/patches/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch new file mode 100644 index 0000000000..a2bdfd81a0 --- /dev/null +++ b/package/kernel/mac80211/patches/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch @@ -0,0 +1,576 @@ +From: Felix Fietkau +Date: Sat, 10 Feb 2018 12:43:30 +0100 +Subject: [PATCH] mac80211: minstrel: merge with minstrel_ht, always enable + VHT support + +Legacy-only devices are not very common and the overhead of the extra +code for HT and VHT rates is not big enough to justify all those extra +lines of code to make it optional. + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/Kconfig ++++ b/net/mac80211/Kconfig +@@ -25,20 +25,6 @@ config MAC80211_RC_MINSTREL + ---help--- + This option enables the 'minstrel' TX rate control algorithm + +-config MAC80211_RC_MINSTREL_HT +- bool "Minstrel 802.11n support" if EXPERT +- depends on MAC80211_RC_MINSTREL +- default y +- ---help--- +- This option enables the 'minstrel_ht' TX rate control algorithm +- +-config MAC80211_RC_MINSTREL_VHT +- bool "Minstrel 802.11ac support" if EXPERT +- depends on MAC80211_RC_MINSTREL_HT +- default n +- ---help--- +- This option enables VHT in the 'minstrel_ht' TX rate control algorithm +- + choice + prompt "Default rate control algorithm" + depends on MAC80211_HAS_RC +@@ -60,8 +46,7 @@ endchoice + + config MAC80211_RC_DEFAULT + string +- default "minstrel_ht" if MAC80211_RC_DEFAULT_MINSTREL && MAC80211_RC_MINSTREL_HT +- default "minstrel" if MAC80211_RC_DEFAULT_MINSTREL ++ default "minstrel_ht" if MAC80211_RC_DEFAULT_MINSTREL + default "" + + endif +--- a/net/mac80211/Makefile ++++ b/net/mac80211/Makefile +@@ -50,13 +50,14 @@ mac80211-$(CONFIG_PM) += pm.o + + CFLAGS_trace.o := -I$(src) + +-rc80211_minstrel-y := rc80211_minstrel.o +-rc80211_minstrel-$(CPTCFG_MAC80211_DEBUGFS) += rc80211_minstrel_debugfs.o ++rc80211_minstrel-y := \ ++ rc80211_minstrel.o \ ++ rc80211_minstrel_ht.o + +-rc80211_minstrel_ht-y := rc80211_minstrel_ht.o +-rc80211_minstrel_ht-$(CPTCFG_MAC80211_DEBUGFS) += rc80211_minstrel_ht_debugfs.o ++rc80211_minstrel-$(CPTCFG_MAC80211_DEBUGFS) += \ ++ rc80211_minstrel_debugfs.o \ ++ rc80211_minstrel_ht_debugfs.o + + mac80211-$(CPTCFG_MAC80211_RC_MINSTREL) += $(rc80211_minstrel-y) +-mac80211-$(CPTCFG_MAC80211_RC_MINSTREL_HT) += $(rc80211_minstrel_ht-y) + + ccflags-y += -DDEBUG +--- a/net/mac80211/main.c ++++ b/net/mac80211/main.c +@@ -1252,18 +1252,12 @@ static int __init ieee80211_init(void) + if (ret) + return ret; + +- ret = rc80211_minstrel_ht_init(); +- if (ret) +- goto err_minstrel; +- + ret = ieee80211_iface_init(); + if (ret) + goto err_netdev; + + return 0; + err_netdev: +- rc80211_minstrel_ht_exit(); +- err_minstrel: + rc80211_minstrel_exit(); + + return ret; +@@ -1271,7 +1265,6 @@ static int __init ieee80211_init(void) + + static void __exit ieee80211_exit(void) + { +- rc80211_minstrel_ht_exit(); + rc80211_minstrel_exit(); + + ieee80211s_stop(); +--- a/net/mac80211/rate.h ++++ b/net/mac80211/rate.h +@@ -95,18 +95,5 @@ static inline void rc80211_minstrel_exit + } + #endif + +-#ifdef CPTCFG_MAC80211_RC_MINSTREL_HT +-int rc80211_minstrel_ht_init(void); +-void rc80211_minstrel_ht_exit(void); +-#else +-static inline int rc80211_minstrel_ht_init(void) +-{ +- return 0; +-} +-static inline void rc80211_minstrel_ht_exit(void) +-{ +-} +-#endif +- + + #endif /* IEEE80211_RATE_H */ +--- a/net/mac80211/rc80211_minstrel.c ++++ b/net/mac80211/rc80211_minstrel.c +@@ -572,138 +572,6 @@ minstrel_rate_init(void *priv, struct ie + minstrel_update_rates(mp, mi); + } + +-static void * +-minstrel_alloc_sta(void *priv, struct ieee80211_sta *sta, gfp_t gfp) +-{ +- struct ieee80211_supported_band *sband; +- struct minstrel_sta_info *mi; +- struct minstrel_priv *mp = priv; +- struct ieee80211_hw *hw = mp->hw; +- int max_rates = 0; +- int i; +- +- mi = kzalloc(sizeof(struct minstrel_sta_info), gfp); +- if (!mi) +- return NULL; +- +- for (i = 0; i < NUM_NL80211_BANDS; i++) { +- sband = hw->wiphy->bands[i]; +- if (sband && sband->n_bitrates > max_rates) +- max_rates = sband->n_bitrates; +- } +- +- mi->r = kzalloc(sizeof(struct minstrel_rate) * max_rates, gfp); +- if (!mi->r) +- goto error; +- +- mi->sample_table = kmalloc(SAMPLE_COLUMNS * max_rates, gfp); +- if (!mi->sample_table) +- goto error1; +- +- mi->last_stats_update = jiffies; +- return mi; +- +-error1: +- kfree(mi->r); +-error: +- kfree(mi); +- return NULL; +-} +- +-static void +-minstrel_free_sta(void *priv, struct ieee80211_sta *sta, void *priv_sta) +-{ +- struct minstrel_sta_info *mi = priv_sta; +- +- kfree(mi->sample_table); +- kfree(mi->r); +- kfree(mi); +-} +- +-static void +-minstrel_init_cck_rates(struct minstrel_priv *mp) +-{ +- static const int bitrates[4] = { 10, 20, 55, 110 }; +- struct ieee80211_supported_band *sband; +- u32 rate_flags = ieee80211_chandef_rate_flags(&mp->hw->conf.chandef); +- int i, j; +- +- sband = mp->hw->wiphy->bands[NL80211_BAND_2GHZ]; +- if (!sband) +- return; +- +- for (i = 0, j = 0; i < sband->n_bitrates; i++) { +- struct ieee80211_rate *rate = &sband->bitrates[i]; +- +- if (rate->flags & IEEE80211_RATE_ERP_G) +- continue; +- +- if ((rate_flags & sband->bitrates[i].flags) != rate_flags) +- continue; +- +- for (j = 0; j < ARRAY_SIZE(bitrates); j++) { +- if (rate->bitrate != bitrates[j]) +- continue; +- +- mp->cck_rates[j] = i; +- break; +- } +- } +-} +- +-static void * +-minstrel_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir) +-{ +- struct minstrel_priv *mp; +- +- mp = kzalloc(sizeof(struct minstrel_priv), GFP_ATOMIC); +- if (!mp) +- return NULL; +- +- /* contention window settings +- * Just an approximation. Using the per-queue values would complicate +- * the calculations and is probably unnecessary */ +- mp->cw_min = 15; +- mp->cw_max = 1023; +- +- /* number of packets (in %) to use for sampling other rates +- * sample less often for non-mrr packets, because the overhead +- * is much higher than with mrr */ +- mp->lookaround_rate = 5; +- mp->lookaround_rate_mrr = 10; +- +- /* maximum time that the hw is allowed to stay in one MRR segment */ +- mp->segment_size = 6000; +- +- if (hw->max_rate_tries > 0) +- mp->max_retry = hw->max_rate_tries; +- else +- /* safe default, does not necessarily have to match hw properties */ +- mp->max_retry = 7; +- +- if (hw->max_rates >= 4) +- mp->has_mrr = true; +- +- mp->hw = hw; +- mp->update_interval = 100; +- +-#ifdef CPTCFG_MAC80211_DEBUGFS +- mp->fixed_rate_idx = (u32) -1; +- debugfs_create_u32("fixed_rate_idx", S_IRUGO | S_IWUGO, debugfsdir, +- &mp->fixed_rate_idx); +-#endif +- +- minstrel_init_cck_rates(mp); +- +- return mp; +-} +- +-static void +-minstrel_free(void *priv) +-{ +- kfree(priv); +-} +- + static u32 minstrel_get_expected_throughput(void *priv_sta) + { + struct minstrel_sta_info *mi = priv_sta; +@@ -722,29 +590,8 @@ static u32 minstrel_get_expected_through + } + + const struct rate_control_ops mac80211_minstrel = { +- .name = "minstrel", + .tx_status_ext = minstrel_tx_status, + .get_rate = minstrel_get_rate, + .rate_init = minstrel_rate_init, +- .alloc = minstrel_alloc, +- .free = minstrel_free, +- .alloc_sta = minstrel_alloc_sta, +- .free_sta = minstrel_free_sta, +-#ifdef CPTCFG_MAC80211_DEBUGFS +- .add_sta_debugfs = minstrel_add_sta_debugfs, +-#endif + .get_expected_throughput = minstrel_get_expected_throughput, + }; +- +-int __init +-rc80211_minstrel_init(void) +-{ +- return ieee80211_rate_control_register(&mac80211_minstrel); +-} +- +-void +-rc80211_minstrel_exit(void) +-{ +- ieee80211_rate_control_unregister(&mac80211_minstrel); +-} +- +--- a/net/mac80211/rc80211_minstrel.h ++++ b/net/mac80211/rc80211_minstrel.h +@@ -158,7 +158,5 @@ int minstrel_get_tp_avg(struct minstrel_ + /* debugfs */ + int minstrel_stats_open(struct inode *inode, struct file *file); + int minstrel_stats_csv_open(struct inode *inode, struct file *file); +-ssize_t minstrel_stats_read(struct file *file, char __user *buf, size_t len, loff_t *ppos); +-int minstrel_stats_release(struct inode *inode, struct file *file); + + #endif +--- a/net/mac80211/rc80211_minstrel_debugfs.c ++++ b/net/mac80211/rc80211_minstrel_debugfs.c +@@ -54,22 +54,6 @@ + #include + #include "rc80211_minstrel.h" + +-ssize_t +-minstrel_stats_read(struct file *file, char __user *buf, size_t len, loff_t *ppos) +-{ +- struct minstrel_debugfs_info *ms; +- +- ms = file->private_data; +- return simple_read_from_buffer(buf, len, ppos, ms->buf, ms->len); +-} +- +-int +-minstrel_stats_release(struct inode *inode, struct file *file) +-{ +- kfree(file->private_data); +- return 0; +-} +- + int + minstrel_stats_open(struct inode *inode, struct file *file) + { +@@ -135,14 +119,6 @@ minstrel_stats_open(struct inode *inode, + return 0; + } + +-static const struct file_operations minstrel_stat_fops = { +- .owner = THIS_MODULE, +- .open = minstrel_stats_open, +- .read = minstrel_stats_read, +- .release = minstrel_stats_release, +- .llseek = default_llseek, +-}; +- + int + minstrel_stats_csv_open(struct inode *inode, struct file *file) + { +@@ -200,21 +176,3 @@ minstrel_stats_csv_open(struct inode *in + + return 0; + } +- +-static const struct file_operations minstrel_stat_csv_fops = { +- .owner = THIS_MODULE, +- .open = minstrel_stats_csv_open, +- .read = minstrel_stats_read, +- .release = minstrel_stats_release, +- .llseek = default_llseek, +-}; +- +-void +-minstrel_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir) +-{ +- struct minstrel_sta_info *mi = priv_sta; +- +- debugfs_create_file("rc_stats", S_IRUGO, dir, mi, &minstrel_stat_fops); +- debugfs_create_file("rc_stats_csv", S_IRUGO, dir, mi, +- &minstrel_stat_csv_fops); +-} +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -137,12 +137,10 @@ + } \ + } + +-#ifdef CPTCFG_MAC80211_RC_MINSTREL_VHT + static bool minstrel_vht_only = true; + module_param(minstrel_vht_only, bool, 0644); + MODULE_PARM_DESC(minstrel_vht_only, + "Use only VHT rates when VHT is supported by sta."); +-#endif + + /* + * To enable sufficiently targeted rate sampling, MCS rates are divided into +@@ -171,7 +169,6 @@ const struct mcs_group minstrel_mcs_grou + + CCK_GROUP, + +-#ifdef CPTCFG_MAC80211_RC_MINSTREL_VHT + VHT_GROUP(1, 0, BW_20), + VHT_GROUP(2, 0, BW_20), + VHT_GROUP(3, 0, BW_20), +@@ -195,7 +192,6 @@ const struct mcs_group minstrel_mcs_grou + VHT_GROUP(1, 1, BW_80), + VHT_GROUP(2, 1, BW_80), + VHT_GROUP(3, 1, BW_80), +-#endif + }; + + static u8 sample_table[SAMPLE_COLUMNS][MCS_GROUP_RATES] __read_mostly; +@@ -1146,12 +1142,10 @@ minstrel_ht_update_caps(void *priv, stru + + BUILD_BUG_ON(ARRAY_SIZE(minstrel_mcs_groups) != MINSTREL_GROUPS_NB); + +-#ifdef CPTCFG_MAC80211_RC_MINSTREL_VHT + if (vht_cap->vht_supported) + use_vht = vht_cap->vht_mcs.tx_mcs_map != cpu_to_le16(~0); + else +-#endif +- use_vht = 0; ++ use_vht = 0; + + msp->is_ht = true; + memset(mi, 0, sizeof(*mi)); +@@ -1226,10 +1220,9 @@ minstrel_ht_update_caps(void *priv, stru + + /* HT rate */ + if (gflags & IEEE80211_TX_RC_MCS) { +-#ifdef CPTCFG_MAC80211_RC_MINSTREL_VHT + if (use_vht && minstrel_vht_only) + continue; +-#endif ++ + mi->supported[i] = mcs->rx_mask[nss - 1]; + if (mi->supported[i]) + n_supported++; +@@ -1349,16 +1342,88 @@ minstrel_ht_free_sta(void *priv, struct + kfree(msp); + } + ++static void ++minstrel_ht_init_cck_rates(struct minstrel_priv *mp) ++{ ++ static const int bitrates[4] = { 10, 20, 55, 110 }; ++ struct ieee80211_supported_band *sband; ++ u32 rate_flags = ieee80211_chandef_rate_flags(&mp->hw->conf.chandef); ++ int i, j; ++ ++ sband = mp->hw->wiphy->bands[NL80211_BAND_2GHZ]; ++ if (!sband) ++ return; ++ ++ for (i = 0, j = 0; i < sband->n_bitrates; i++) { ++ struct ieee80211_rate *rate = &sband->bitrates[i]; ++ ++ if (rate->flags & IEEE80211_RATE_ERP_G) ++ continue; ++ ++ if ((rate_flags & sband->bitrates[i].flags) != rate_flags) ++ continue; ++ ++ for (j = 0; j < ARRAY_SIZE(bitrates); j++) { ++ if (rate->bitrate != bitrates[j]) ++ continue; ++ ++ mp->cck_rates[j] = i; ++ break; ++ } ++ } ++} ++ + static void * + minstrel_ht_alloc(struct ieee80211_hw *hw, struct dentry *debugfsdir) + { +- return mac80211_minstrel.alloc(hw, debugfsdir); ++ struct minstrel_priv *mp; ++ ++ mp = kzalloc(sizeof(struct minstrel_priv), GFP_ATOMIC); ++ if (!mp) ++ return NULL; ++ ++ /* contention window settings ++ * Just an approximation. Using the per-queue values would complicate ++ * the calculations and is probably unnecessary */ ++ mp->cw_min = 15; ++ mp->cw_max = 1023; ++ ++ /* number of packets (in %) to use for sampling other rates ++ * sample less often for non-mrr packets, because the overhead ++ * is much higher than with mrr */ ++ mp->lookaround_rate = 5; ++ mp->lookaround_rate_mrr = 10; ++ ++ /* maximum time that the hw is allowed to stay in one MRR segment */ ++ mp->segment_size = 6000; ++ ++ if (hw->max_rate_tries > 0) ++ mp->max_retry = hw->max_rate_tries; ++ else ++ /* safe default, does not necessarily have to match hw properties */ ++ mp->max_retry = 7; ++ ++ if (hw->max_rates >= 4) ++ mp->has_mrr = true; ++ ++ mp->hw = hw; ++ mp->update_interval = 100; ++ ++#ifdef CPTCFG_MAC80211_DEBUGFS ++ mp->fixed_rate_idx = (u32) -1; ++ debugfs_create_u32("fixed_rate_idx", S_IRUGO | S_IWUGO, debugfsdir, ++ &mp->fixed_rate_idx); ++#endif ++ ++ minstrel_ht_init_cck_rates(mp); ++ ++ return mp; + } + + static void + minstrel_ht_free(void *priv) + { +- mac80211_minstrel.free(priv); ++ kfree(priv); + } + + static u32 minstrel_ht_get_expected_throughput(void *priv_sta) +@@ -1417,14 +1482,14 @@ static void __init init_sample_table(voi + } + + int __init +-rc80211_minstrel_ht_init(void) ++rc80211_minstrel_init(void) + { + init_sample_table(); + return ieee80211_rate_control_register(&mac80211_minstrel_ht); + } + + void +-rc80211_minstrel_ht_exit(void) ++rc80211_minstrel_exit(void) + { + ieee80211_rate_control_unregister(&mac80211_minstrel_ht); + } +--- a/net/mac80211/rc80211_minstrel_ht.h ++++ b/net/mac80211/rc80211_minstrel_ht.h +@@ -15,11 +15,7 @@ + */ + #define MINSTREL_MAX_STREAMS 3 + #define MINSTREL_HT_STREAM_GROUPS 4 /* BW(=2) * SGI(=2) */ +-#ifdef CPTCFG_MAC80211_RC_MINSTREL_VHT + #define MINSTREL_VHT_STREAM_GROUPS 6 /* BW(=3) * SGI(=2) */ +-#else +-#define MINSTREL_VHT_STREAM_GROUPS 0 +-#endif + + #define MINSTREL_HT_GROUPS_NB (MINSTREL_MAX_STREAMS * \ + MINSTREL_HT_STREAM_GROUPS) +@@ -34,11 +30,7 @@ + #define MINSTREL_CCK_GROUP (MINSTREL_HT_GROUP_0 + MINSTREL_HT_GROUPS_NB) + #define MINSTREL_VHT_GROUP_0 (MINSTREL_CCK_GROUP + 1) + +-#ifdef CPTCFG_MAC80211_RC_MINSTREL_VHT + #define MCS_GROUP_RATES 10 +-#else +-#define MCS_GROUP_RATES 8 +-#endif + + struct mcs_group { + u32 flags; +--- a/net/mac80211/rc80211_minstrel_ht_debugfs.c ++++ b/net/mac80211/rc80211_minstrel_ht_debugfs.c +@@ -15,6 +15,22 @@ + #include "rc80211_minstrel.h" + #include "rc80211_minstrel_ht.h" + ++static ssize_t ++minstrel_stats_read(struct file *file, char __user *buf, size_t len, loff_t *ppos) ++{ ++ struct minstrel_debugfs_info *ms; ++ ++ ms = file->private_data; ++ return simple_read_from_buffer(buf, len, ppos, ms->buf, ms->len); ++} ++ ++static int ++minstrel_stats_release(struct inode *inode, struct file *file) ++{ ++ kfree(file->private_data); ++ return 0; ++} ++ + static char * + minstrel_ht_stats_dump(struct minstrel_ht_sta *mi, int i, char *p) + { diff --git a/package/kernel/mac80211/patches/372-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch b/package/kernel/mac80211/patches/372-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch new file mode 100644 index 0000000000..fa51f1be7e --- /dev/null +++ b/package/kernel/mac80211/patches/372-mac80211-minstrel-reduce-minstrel_mcs_groups-size.patch @@ -0,0 +1,358 @@ +From: Felix Fietkau +Date: Sat, 10 Feb 2018 12:45:47 +0100 +Subject: [PATCH] mac80211: minstrel: reduce minstrel_mcs_groups size + +By storing a shift value for all duration values of a group, we can +reduce precision by a neglegible amount to make it fit into a u16 value. +This improves cache footprint and reduces size: + +Before: + text data bss dec hex filename + 10024 116 0 10140 279c rc80211_minstrel_ht.o + +After: + text data bss dec hex filename + 9368 116 0 9484 250c rc80211_minstrel_ht.o + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -52,22 +52,23 @@ + _streams - 1 + + /* MCS rate information for an MCS group */ +-#define MCS_GROUP(_streams, _sgi, _ht40) \ ++#define MCS_GROUP(_streams, _sgi, _ht40, _s) \ + [GROUP_IDX(_streams, _sgi, _ht40)] = { \ + .streams = _streams, \ ++ .shift = _s, \ + .flags = \ + IEEE80211_TX_RC_MCS | \ + (_sgi ? IEEE80211_TX_RC_SHORT_GI : 0) | \ + (_ht40 ? IEEE80211_TX_RC_40_MHZ_WIDTH : 0), \ + .duration = { \ +- MCS_DURATION(_streams, _sgi, _ht40 ? 54 : 26), \ +- MCS_DURATION(_streams, _sgi, _ht40 ? 108 : 52), \ +- MCS_DURATION(_streams, _sgi, _ht40 ? 162 : 78), \ +- MCS_DURATION(_streams, _sgi, _ht40 ? 216 : 104), \ +- MCS_DURATION(_streams, _sgi, _ht40 ? 324 : 156), \ +- MCS_DURATION(_streams, _sgi, _ht40 ? 432 : 208), \ +- MCS_DURATION(_streams, _sgi, _ht40 ? 486 : 234), \ +- MCS_DURATION(_streams, _sgi, _ht40 ? 540 : 260) \ ++ MCS_DURATION(_streams, _sgi, _ht40 ? 54 : 26) >> _s, \ ++ MCS_DURATION(_streams, _sgi, _ht40 ? 108 : 52) >> _s, \ ++ MCS_DURATION(_streams, _sgi, _ht40 ? 162 : 78) >> _s, \ ++ MCS_DURATION(_streams, _sgi, _ht40 ? 216 : 104) >> _s, \ ++ MCS_DURATION(_streams, _sgi, _ht40 ? 324 : 156) >> _s, \ ++ MCS_DURATION(_streams, _sgi, _ht40 ? 432 : 208) >> _s, \ ++ MCS_DURATION(_streams, _sgi, _ht40 ? 486 : 234) >> _s, \ ++ MCS_DURATION(_streams, _sgi, _ht40 ? 540 : 260) >> _s \ + } \ + } + +@@ -80,9 +81,10 @@ + #define BW2VBPS(_bw, r3, r2, r1) \ + (_bw == BW_80 ? r3 : _bw == BW_40 ? r2 : r1) + +-#define VHT_GROUP(_streams, _sgi, _bw) \ ++#define VHT_GROUP(_streams, _sgi, _bw, _s) \ + [VHT_GROUP_IDX(_streams, _sgi, _bw)] = { \ + .streams = _streams, \ ++ .shift = _s, \ + .flags = \ + IEEE80211_TX_RC_VHT_MCS | \ + (_sgi ? IEEE80211_TX_RC_SHORT_GI : 0) | \ +@@ -90,25 +92,25 @@ + _bw == BW_40 ? IEEE80211_TX_RC_40_MHZ_WIDTH : 0), \ + .duration = { \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 117, 54, 26)), \ ++ BW2VBPS(_bw, 117, 54, 26)) >> _s, \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 234, 108, 52)), \ ++ BW2VBPS(_bw, 234, 108, 52)) >> _s, \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 351, 162, 78)), \ ++ BW2VBPS(_bw, 351, 162, 78)) >> _s, \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 468, 216, 104)), \ ++ BW2VBPS(_bw, 468, 216, 104)) >> _s, \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 702, 324, 156)), \ ++ BW2VBPS(_bw, 702, 324, 156)) >> _s, \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 936, 432, 208)), \ ++ BW2VBPS(_bw, 936, 432, 208)) >> _s, \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 1053, 486, 234)), \ ++ BW2VBPS(_bw, 1053, 486, 234)) >> _s, \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 1170, 540, 260)), \ ++ BW2VBPS(_bw, 1170, 540, 260)) >> _s, \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 1404, 648, 312)), \ ++ BW2VBPS(_bw, 1404, 648, 312)) >> _s, \ + MCS_DURATION(_streams, _sgi, \ +- BW2VBPS(_bw, 1560, 720, 346)) \ ++ BW2VBPS(_bw, 1560, 720, 346)) >> _s \ + } \ + } + +@@ -121,19 +123,20 @@ + (CCK_DURATION((_bitrate > 10 ? 20 : 10), false, 60) + \ + CCK_DURATION(_bitrate, _short, AVG_PKT_SIZE)) + +-#define CCK_DURATION_LIST(_short) \ +- CCK_ACK_DURATION(10, _short), \ +- CCK_ACK_DURATION(20, _short), \ +- CCK_ACK_DURATION(55, _short), \ +- CCK_ACK_DURATION(110, _short) ++#define CCK_DURATION_LIST(_short, _s) \ ++ CCK_ACK_DURATION(10, _short) >> _s, \ ++ CCK_ACK_DURATION(20, _short) >> _s, \ ++ CCK_ACK_DURATION(55, _short) >> _s, \ ++ CCK_ACK_DURATION(110, _short) >> _s + +-#define CCK_GROUP \ ++#define CCK_GROUP(_s) \ + [MINSTREL_CCK_GROUP] = { \ + .streams = 0, \ + .flags = 0, \ ++ .shift = _s, \ + .duration = { \ +- CCK_DURATION_LIST(false), \ +- CCK_DURATION_LIST(true) \ ++ CCK_DURATION_LIST(false, _s), \ ++ CCK_DURATION_LIST(true, _s) \ + } \ + } + +@@ -151,47 +154,47 @@ MODULE_PARM_DESC(minstrel_vht_only, + * BW -> SGI -> #streams + */ + const struct mcs_group minstrel_mcs_groups[] = { +- MCS_GROUP(1, 0, BW_20), +- MCS_GROUP(2, 0, BW_20), +- MCS_GROUP(3, 0, BW_20), ++ MCS_GROUP(1, 0, BW_20, 5), ++ MCS_GROUP(2, 0, BW_20, 4), ++ MCS_GROUP(3, 0, BW_20, 4), + +- MCS_GROUP(1, 1, BW_20), +- MCS_GROUP(2, 1, BW_20), +- MCS_GROUP(3, 1, BW_20), ++ MCS_GROUP(1, 1, BW_20, 5), ++ MCS_GROUP(2, 1, BW_20, 4), ++ MCS_GROUP(3, 1, BW_20, 4), + +- MCS_GROUP(1, 0, BW_40), +- MCS_GROUP(2, 0, BW_40), +- MCS_GROUP(3, 0, BW_40), ++ MCS_GROUP(1, 0, BW_40, 4), ++ MCS_GROUP(2, 0, BW_40, 4), ++ MCS_GROUP(3, 0, BW_40, 4), + +- MCS_GROUP(1, 1, BW_40), +- MCS_GROUP(2, 1, BW_40), +- MCS_GROUP(3, 1, BW_40), ++ MCS_GROUP(1, 1, BW_40, 4), ++ MCS_GROUP(2, 1, BW_40, 4), ++ MCS_GROUP(3, 1, BW_40, 4), + +- CCK_GROUP, ++ CCK_GROUP(8), + +- VHT_GROUP(1, 0, BW_20), +- VHT_GROUP(2, 0, BW_20), +- VHT_GROUP(3, 0, BW_20), ++ VHT_GROUP(1, 0, BW_20, 5), ++ VHT_GROUP(2, 0, BW_20, 4), ++ VHT_GROUP(3, 0, BW_20, 4), + +- VHT_GROUP(1, 1, BW_20), +- VHT_GROUP(2, 1, BW_20), +- VHT_GROUP(3, 1, BW_20), ++ VHT_GROUP(1, 1, BW_20, 5), ++ VHT_GROUP(2, 1, BW_20, 4), ++ VHT_GROUP(3, 1, BW_20, 4), + +- VHT_GROUP(1, 0, BW_40), +- VHT_GROUP(2, 0, BW_40), +- VHT_GROUP(3, 0, BW_40), ++ VHT_GROUP(1, 0, BW_40, 4), ++ VHT_GROUP(2, 0, BW_40, 4), ++ VHT_GROUP(3, 0, BW_40, 4), + +- VHT_GROUP(1, 1, BW_40), +- VHT_GROUP(2, 1, BW_40), +- VHT_GROUP(3, 1, BW_40), ++ VHT_GROUP(1, 1, BW_40, 4), ++ VHT_GROUP(2, 1, BW_40, 4), ++ VHT_GROUP(3, 1, BW_40, 4), + +- VHT_GROUP(1, 0, BW_80), +- VHT_GROUP(2, 0, BW_80), +- VHT_GROUP(3, 0, BW_80), ++ VHT_GROUP(1, 0, BW_80, 4), ++ VHT_GROUP(2, 0, BW_80, 4), ++ VHT_GROUP(3, 0, BW_80, 4), + +- VHT_GROUP(1, 1, BW_80), +- VHT_GROUP(2, 1, BW_80), +- VHT_GROUP(3, 1, BW_80), ++ VHT_GROUP(1, 1, BW_80, 4), ++ VHT_GROUP(2, 1, BW_80, 4), ++ VHT_GROUP(3, 1, BW_80, 4), + }; + + static u8 sample_table[SAMPLE_COLUMNS][MCS_GROUP_RATES] __read_mostly; +@@ -307,7 +310,8 @@ minstrel_ht_get_tp_avg(struct minstrel_h + if (group != MINSTREL_CCK_GROUP) + nsecs = 1000 * mi->overhead / MINSTREL_TRUNC(mi->avg_ampdu_len); + +- nsecs += minstrel_mcs_groups[group].duration[rate]; ++ nsecs += minstrel_mcs_groups[group].duration[rate] << ++ minstrel_mcs_groups[group].shift; + + /* + * For the throughput calculation, limit the probability value to 90% to +@@ -755,12 +759,19 @@ minstrel_ht_tx_status(void *priv, struct + minstrel_ht_update_rates(mp, mi); + } + ++static inline int ++minstrel_get_duration(int index) ++{ ++ const struct mcs_group *group = &minstrel_mcs_groups[index / MCS_GROUP_RATES]; ++ unsigned int duration = group->duration[index % MCS_GROUP_RATES]; ++ return duration << group->shift; ++} ++ + static void + minstrel_calc_retransmit(struct minstrel_priv *mp, struct minstrel_ht_sta *mi, + int index) + { + struct minstrel_rate_stats *mrs; +- const struct mcs_group *group; + unsigned int tx_time, tx_time_rtscts, tx_time_data; + unsigned int cw = mp->cw_min; + unsigned int ctime = 0; +@@ -779,8 +790,7 @@ minstrel_calc_retransmit(struct minstrel + mrs->retry_count_rtscts = 2; + mrs->retry_updated = true; + +- group = &minstrel_mcs_groups[index / MCS_GROUP_RATES]; +- tx_time_data = group->duration[index % MCS_GROUP_RATES] * ampdu_len / 1000; ++ tx_time_data = minstrel_get_duration(index) * ampdu_len / 1000; + + /* Contention time for first 2 tries */ + ctime = (t_slot * cw) >> 1; +@@ -874,20 +884,24 @@ minstrel_ht_get_max_amsdu_len(struct min + int group = mi->max_prob_rate / MCS_GROUP_RATES; + const struct mcs_group *g = &minstrel_mcs_groups[group]; + int rate = mi->max_prob_rate % MCS_GROUP_RATES; ++ unsigned int duration; + + /* Disable A-MSDU if max_prob_rate is bad */ + if (mi->groups[group].rates[rate].prob_ewma < MINSTREL_FRAC(50, 100)) + return 1; + ++ duration = g->duration[rate]; ++ duration <<= g->shift; ++ + /* If the rate is slower than single-stream MCS1, make A-MSDU limit small */ +- if (g->duration[rate] > MCS_DURATION(1, 0, 52)) ++ if (duration > MCS_DURATION(1, 0, 52)) + return 500; + + /* + * If the rate is slower than single-stream MCS4, limit A-MSDU to usual + * data packet size + */ +- if (g->duration[rate] > MCS_DURATION(1, 0, 104)) ++ if (duration > MCS_DURATION(1, 0, 104)) + return 1600; + + /* +@@ -895,7 +909,7 @@ minstrel_ht_get_max_amsdu_len(struct min + * rate success probability is less than 75%, limit A-MSDU to twice the usual + * data packet size + */ +- if (g->duration[rate] > MCS_DURATION(1, 0, 260) || ++ if (duration > MCS_DURATION(1, 0, 260) || + (minstrel_ht_get_prob_ewma(mi, mi->max_tp_rate[0]) < + MINSTREL_FRAC(75, 100))) + return 3200; +@@ -942,13 +956,6 @@ minstrel_ht_update_rates(struct minstrel + rate_control_set_rates(mp->hw, mi->sta, rates); + } + +-static inline int +-minstrel_get_duration(int index) +-{ +- const struct mcs_group *group = &minstrel_mcs_groups[index / MCS_GROUP_RATES]; +- return group->duration[index % MCS_GROUP_RATES]; +-} +- + static int + minstrel_get_sample_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi) + { +--- a/net/mac80211/rc80211_minstrel_ht.h ++++ b/net/mac80211/rc80211_minstrel_ht.h +@@ -33,9 +33,10 @@ + #define MCS_GROUP_RATES 10 + + struct mcs_group { +- u32 flags; +- unsigned int streams; +- unsigned int duration[MCS_GROUP_RATES]; ++ u16 flags; ++ u8 streams; ++ u8 shift; ++ u16 duration[MCS_GROUP_RATES]; + }; + + extern const struct mcs_group minstrel_mcs_groups[]; +--- a/net/mac80211/rc80211_minstrel_ht_debugfs.c ++++ b/net/mac80211/rc80211_minstrel_ht_debugfs.c +@@ -58,6 +58,7 @@ minstrel_ht_stats_dump(struct minstrel_h + static const int bitrates[4] = { 10, 20, 55, 110 }; + int idx = i * MCS_GROUP_RATES + j; + unsigned int prob_ewmsd; ++ unsigned int duration; + + if (!(mi->supported[i] & BIT(j))) + continue; +@@ -95,7 +96,9 @@ minstrel_ht_stats_dump(struct minstrel_h + p += sprintf(p, " %3u ", idx); + + /* tx_time[rate(i)] in usec */ +- tx_time = DIV_ROUND_CLOSEST(mg->duration[j], 1000); ++ duration = mg->duration[j]; ++ duration <<= mg->shift; ++ tx_time = DIV_ROUND_CLOSEST(duration, 1000); + p += sprintf(p, "%6u ", tx_time); + + tp_max = minstrel_ht_get_tp_avg(mi, i, j, MINSTREL_FRAC(100, 100)); +@@ -204,6 +207,7 @@ minstrel_ht_stats_csv_dump(struct minstr + static const int bitrates[4] = { 10, 20, 55, 110 }; + int idx = i * MCS_GROUP_RATES + j; + unsigned int prob_ewmsd; ++ unsigned int duration; + + if (!(mi->supported[i] & BIT(j))) + continue; +@@ -238,7 +242,10 @@ minstrel_ht_stats_csv_dump(struct minstr + } + + p += sprintf(p, "%u,", idx); +- tx_time = DIV_ROUND_CLOSEST(mg->duration[j], 1000); ++ ++ duration = mg->duration[j]; ++ duration <<= mg->shift; ++ tx_time = DIV_ROUND_CLOSEST(duration, 1000); + p += sprintf(p, "%u,", tx_time); + + tp_max = minstrel_ht_get_tp_avg(mi, i, j, MINSTREL_FRAC(100, 100)); diff --git a/package/kernel/mac80211/patches/373-mac80211-minstrel-fix-using-short-preamble-CCK-rates.patch b/package/kernel/mac80211/patches/373-mac80211-minstrel-fix-using-short-preamble-CCK-rates.patch new file mode 100644 index 0000000000..502d8c7768 --- /dev/null +++ b/package/kernel/mac80211/patches/373-mac80211-minstrel-fix-using-short-preamble-CCK-rates.patch @@ -0,0 +1,31 @@ +From: Felix Fietkau +Date: Sat, 10 Feb 2018 13:43:07 +0100 +Subject: [PATCH] mac80211: minstrel: fix using short preamble CCK rates on + HT clients + +mi->supported[MINSTREL_CCK_GROUP] needs to be updated + +Fixes: 782dda00ab8e ("mac80211: minstrel_ht: move short preamble check out of get_rate") +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -1135,7 +1135,6 @@ minstrel_ht_update_caps(void *priv, stru + struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs; + u16 ht_cap = sta->ht_cap.cap; + struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap; +- struct sta_info *sinfo = container_of(sta, struct sta_info, sta); + int use_vht; + int n_supported = 0; + int ack_dur; +@@ -1267,8 +1266,7 @@ minstrel_ht_update_caps(void *priv, stru + if (!n_supported) + goto use_legacy; + +- if (test_sta_flag(sinfo, WLAN_STA_SHORT_PREAMBLE)) +- mi->cck_supported_short |= mi->cck_supported_short << 4; ++ mi->supported[MINSTREL_CCK_GROUP] |= mi->cck_supported_short << 4; + + /* create an initial rate table with the lowest supported rates */ + minstrel_ht_update_stats(mp, mi); diff --git a/package/kernel/mac80211/patches/374-ath9k-Protect-queue-draining-by-rcu_read_lock.patch b/package/kernel/mac80211/patches/374-ath9k-Protect-queue-draining-by-rcu_read_lock.patch new file mode 100644 index 0000000000..9970574e14 --- /dev/null +++ b/package/kernel/mac80211/patches/374-ath9k-Protect-queue-draining-by-rcu_read_lock.patch @@ -0,0 +1,43 @@ +From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= +Date: Fri, 2 Feb 2018 11:36:45 +0100 +Subject: [PATCH] ath9k: Protect queue draining by rcu_read_lock() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When ath9k was switched over to use the mac80211 intermediate queues, +node cleanup now drains the mac80211 queues. However, this call path is +not protected by rcu_read_lock() as it was previously entirely internal +to the driver which uses its own locking. + +This leads to a possible rcu_dereference() without holding +rcu_read_lock(); but only if a station is cleaned up while having +packets queued on the TXQ. Fix this by adding the rcu_read_lock() to the +caller in ath9k. + +Fixes: 50f08edf9809 ("ath9k: Switch to using mac80211 intermediate software queues.") +Cc: stable@vger.kernel.org +Reported-by: Ben Greear +Signed-off-by: Toke Høiland-Jørgensen +--- + +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -2930,6 +2930,8 @@ void ath_tx_node_cleanup(struct ath_soft + struct ath_txq *txq; + int tidno; + ++ rcu_read_lock(); ++ + for (tidno = 0; tidno < IEEE80211_NUM_TIDS; tidno++) { + tid = ath_node_to_tid(an, tidno); + txq = tid->txq; +@@ -2947,6 +2949,8 @@ void ath_tx_node_cleanup(struct ath_soft + if (!an->sta) + break; /* just one multicast ath_atx_tid */ + } ++ ++ rcu_read_unlock(); + } + + #ifdef CPTCFG_ATH9K_TX99 diff --git a/package/kernel/mac80211/patches/375-mac80211-minstrel-fix-CCK-rate-group-streams-value.patch b/package/kernel/mac80211/patches/375-mac80211-minstrel-fix-CCK-rate-group-streams-value.patch new file mode 100644 index 0000000000..f0ffcd9655 --- /dev/null +++ b/package/kernel/mac80211/patches/375-mac80211-minstrel-fix-CCK-rate-group-streams-value.patch @@ -0,0 +1,20 @@ +From: Felix Fietkau +Date: Thu, 1 Mar 2018 13:27:54 +0100 +Subject: [PATCH] mac80211: minstrel: fix CCK rate group streams value + +Fixes a harmless underflow issue when CCK rates are actively being used + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -131,7 +131,7 @@ + + #define CCK_GROUP(_s) \ + [MINSTREL_CCK_GROUP] = { \ +- .streams = 0, \ ++ .streams = 1, \ + .flags = 0, \ + .shift = _s, \ + .duration = { \ diff --git a/package/kernel/mac80211/patches/376-mac80211-minstrel-fix-sampling-reporting-of-CCK-rate.patch b/package/kernel/mac80211/patches/376-mac80211-minstrel-fix-sampling-reporting-of-CCK-rate.patch new file mode 100644 index 0000000000..e0049c36eb --- /dev/null +++ b/package/kernel/mac80211/patches/376-mac80211-minstrel-fix-sampling-reporting-of-CCK-rate.patch @@ -0,0 +1,58 @@ +From: Felix Fietkau +Date: Thu, 1 Mar 2018 13:28:48 +0100 +Subject: [PATCH] mac80211: minstrel: fix sampling/reporting of CCK rates + in HT mode + +Long/short preamble selection cannot be sampled separately, since it +depends on the BSS state. Because of that, sampling attempts to +currently not used preamble modes are not counted in the statistics, +which leads to CCK rates being sampled too often. + +Fix statistics accounting for long/short preamble by increasing the +index where necessary. +Fix excessive CCK rate sampling by dropping unsupported sample attempts. + +This improves throughput on 2.4 GHz channels + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -281,7 +281,8 @@ minstrel_ht_get_stats(struct minstrel_pr + break; + + /* short preamble */ +- if (!(mi->supported[group] & BIT(idx))) ++ if ((mi->supported[group] & BIT(idx + 4)) && ++ (rate->flags & IEEE80211_TX_RC_USE_SHORT_PREAMBLE)) + idx += 4; + } + return &mi->groups[group].rates[idx]; +@@ -1080,18 +1081,23 @@ minstrel_ht_get_rate(void *priv, struct + return; + + sample_group = &minstrel_mcs_groups[sample_idx / MCS_GROUP_RATES]; ++ sample_idx %= MCS_GROUP_RATES; ++ ++ if (sample_group == &minstrel_mcs_groups[MINSTREL_CCK_GROUP] && ++ (sample_idx >= 4) != txrc->short_preamble) ++ return; ++ + info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE; + rate->count = 1; + +- if (sample_idx / MCS_GROUP_RATES == MINSTREL_CCK_GROUP) { ++ if (sample_group == &minstrel_mcs_groups[MINSTREL_CCK_GROUP]) { + int idx = sample_idx % ARRAY_SIZE(mp->cck_rates); + rate->idx = mp->cck_rates[idx]; + } else if (sample_group->flags & IEEE80211_TX_RC_VHT_MCS) { + ieee80211_rate_set_vht(rate, sample_idx % MCS_GROUP_RATES, + sample_group->streams); + } else { +- rate->idx = sample_idx % MCS_GROUP_RATES + +- (sample_group->streams - 1) * 8; ++ rate->idx = sample_idx + (sample_group->streams - 1) * 8; + } + + rate->flags = sample_group->flags; diff --git a/package/kernel/mac80211/patches/377-mac80211-minstrel-do-not-sample-rates-3-times-slower.patch b/package/kernel/mac80211/patches/377-mac80211-minstrel-do-not-sample-rates-3-times-slower.patch new file mode 100644 index 0000000000..414cb137de --- /dev/null +++ b/package/kernel/mac80211/patches/377-mac80211-minstrel-do-not-sample-rates-3-times-slower.patch @@ -0,0 +1,40 @@ +From: Felix Fietkau +Date: Sat, 3 Mar 2018 18:48:58 +0100 +Subject: [PATCH] mac80211: minstrel: do not sample rates 3 times slower than + max_prob_rate + +These rates are highly unlikely to be used quickly, even if the link +deteriorates rapidly. This improves throughput in cases where CCK rates +are not reliable enough to be skipped entirely during sampling. +Sampling these rates regularly can cost a lot of airtime. + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -1004,10 +1004,13 @@ minstrel_get_sample_rate(struct minstrel + return -1; + + /* +- * Do not sample if the probability is already higher than 95% +- * to avoid wasting airtime. ++ * Do not sample if the probability is already higher than 95%, ++ * or if the rate is 3 times slower than the current max probability ++ * rate, to avoid wasting airtime. + */ +- if (mrs->prob_ewma > MINSTREL_FRAC(95, 100)) ++ sample_dur = minstrel_get_duration(sample_idx); ++ if (mrs->prob_ewma > MINSTREL_FRAC(95, 100) || ++ minstrel_get_duration(mi->max_prob_rate) * 3 < sample_dur) + return -1; + + /* +@@ -1017,7 +1020,6 @@ minstrel_get_sample_rate(struct minstrel + + cur_max_tp_streams = minstrel_mcs_groups[tp_rate1 / + MCS_GROUP_RATES].streams; +- sample_dur = minstrel_get_duration(sample_idx); + if (sample_dur >= minstrel_get_duration(tp_rate2) && + (cur_max_tp_streams - 1 < + minstrel_mcs_groups[sample_group].streams || diff --git a/package/kernel/mac80211/patches/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch b/package/kernel/mac80211/patches/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch new file mode 100644 index 0000000000..c64457a17f --- /dev/null +++ b/package/kernel/mac80211/patches/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch @@ -0,0 +1,58 @@ +From: Felix Fietkau +Date: Thu, 8 Mar 2018 21:00:56 +0100 +Subject: [PATCH] mac80211: fix memory accounting with A-MSDU aggregation + +fq uses skb->truesize for memory usage tracking. Increments/decrements +are done on enqueue/dequeue. +When A-MSDU aggregation is performed on tx side, the packet is +aggregated with the last packet in the queue belonging to the same flow. +There are multiple bugs here: +- The truesize field of the aggregated packet isn't updated, so memory +usage is underestimated +- fq->memory_usage isn't adjusted. + +Because of the combination of both bugs, this only causes tx issues in +rare cases, mainly when the A-MSDU head needs to be reallocated. + +Fix this by adjusting both truesize of the A-MSDU head and adding the +truesize delta to fq->memory_usage. + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -3171,6 +3171,7 @@ static bool ieee80211_amsdu_aggregate(st + u8 max_subframes = sta->sta.max_amsdu_subframes; + int max_frags = local->hw.max_tx_fragments; + int max_amsdu_len = sta->sta.max_amsdu_len; ++ int orig_truesize; + __be16 len; + void *data; + bool ret = false; +@@ -3201,12 +3202,13 @@ static bool ieee80211_amsdu_aggregate(st + flow = fq_flow_classify(fq, tin, skb, fq_flow_get_default_func); + head = skb_peek_tail(&flow->queue); + if (!head) +- goto out; ++ goto unlock; + ++ orig_truesize = head->truesize; + orig_len = head->len; + + if (skb->len + head->len > max_amsdu_len) +- goto out; ++ goto unlock; + + if (!ieee80211_amsdu_prepare_head(sdata, fast_tx, head)) + goto out; +@@ -3249,6 +3251,9 @@ static bool ieee80211_amsdu_aggregate(st + fq_recalc_backlog(fq, tin, flow); + + out: ++ fq->memory_usage += head->truesize - orig_truesize; ++ ++unlock: + spin_unlock_bh(&fq->lock); + + return ret; diff --git a/package/kernel/mac80211/patches/402-ath_regd_optional.patch b/package/kernel/mac80211/patches/402-ath_regd_optional.patch index c8ede7f583..8fa56f40a4 100644 --- a/package/kernel/mac80211/patches/402-ath_regd_optional.patch +++ b/package/kernel/mac80211/patches/402-ath_regd_optional.patch @@ -27,7 +27,7 @@ if (!IS_ENABLED(CPTCFG_ATH_REG_DYNAMIC_USER_REG_HINTS)) return false; if (!dynamic_country_user_possible(reg)) -@@ -341,6 +347,9 @@ ath_reg_apply_beaconing_flags(struct wip +@@ -345,6 +351,9 @@ ath_reg_apply_beaconing_flags(struct wip struct ieee80211_channel *ch; unsigned int i; @@ -37,7 +37,7 @@ for (band = 0; band < NUM_NL80211_BANDS; band++) { if (!wiphy->bands[band]) continue; -@@ -374,6 +383,9 @@ ath_reg_apply_ir_flags(struct wiphy *wip +@@ -378,6 +387,9 @@ ath_reg_apply_ir_flags(struct wiphy *wip { struct ieee80211_supported_band *sband; @@ -47,7 +47,7 @@ sband = wiphy->bands[NL80211_BAND_2GHZ]; if (!sband) return; -@@ -402,6 +414,9 @@ static void ath_reg_apply_radar_flags(st +@@ -407,6 +419,9 @@ static void ath_reg_apply_radar_flags(st struct ieee80211_channel *ch; unsigned int i; @@ -57,19 +57,7 @@ if (!wiphy->bands[NL80211_BAND_5GHZ]) return; -@@ -539,6 +554,11 @@ void ath_reg_notifier_apply(struct wiphy - ath_reg_dyn_country(wiphy, reg, request); - break; - } -+ -+ /* Prevent broken CTLs from being applied */ -+ if (IS_ENABLED(CPTCFG_ATH_USER_REGD) && -+ reg->regpair != common->reg_world_copy.regpair) -+ reg->regpair = ath_get_regpair(WOR0_WORLD); - } - EXPORT_SYMBOL(ath_reg_notifier_apply); - -@@ -634,6 +654,10 @@ ath_regd_init_wiphy(struct ath_regulator +@@ -639,6 +654,10 @@ ath_regd_init_wiphy(struct ath_regulator const struct ieee80211_regdomain *regd; wiphy->reg_notifier = reg_notifier; @@ -80,18 +68,6 @@ wiphy->regulatory_flags |= REGULATORY_STRICT_REG | REGULATORY_CUSTOM_REG; -@@ -762,10 +786,7 @@ ath_regd_init(struct ath_regulatory *reg - if (r) - return r; - -- if (ath_is_world_regd(reg)) -- memcpy(&common->reg_world_copy, reg, -- sizeof(struct ath_regulatory)); -- -+ memcpy(&common->reg_world_copy, reg, sizeof(struct ath_regulatory)); - ath_regd_init_wiphy(reg, wiphy, reg_notifier); - - return 0; --- a/drivers/net/wireless/ath/Kconfig +++ b/drivers/net/wireless/ath/Kconfig @@ -23,6 +23,9 @@ config WLAN_VENDOR_ATH @@ -104,9 +80,9 @@ config ATH_DEBUG bool "Atheros wireless debugging" ---help--- ---- a/.local-symbols -+++ b/.local-symbols -@@ -130,6 +130,7 @@ ADM8211= +--- a/local-symbols ++++ b/local-symbols +@@ -87,6 +87,7 @@ ADM8211= ATH_COMMON= WLAN_VENDOR_ATH= ATH_DEBUG= diff --git a/package/kernel/mac80211/patches/404-regd_no_assoc_hints.patch b/package/kernel/mac80211/patches/404-regd_no_assoc_hints.patch index 469da90160..00be2ef98d 100644 --- a/package/kernel/mac80211/patches/404-regd_no_assoc_hints.patch +++ b/package/kernel/mac80211/patches/404-regd_no_assoc_hints.patch @@ -1,6 +1,6 @@ --- a/net/wireless/reg.c +++ b/net/wireless/reg.c -@@ -2398,6 +2398,8 @@ void regulatory_hint_country_ie(struct w +@@ -2860,6 +2860,8 @@ void regulatory_hint_country_ie(struct w enum environment_cap env = ENVIRON_ANY; struct regulatory_request *request = NULL, *lr; @@ -9,7 +9,7 @@ /* IE len must be evenly divisible by 2 */ if (country_ie_len & 0x01) return; -@@ -2604,6 +2606,7 @@ static void restore_regulatory_settings( +@@ -3066,6 +3068,7 @@ static void restore_regulatory_settings( void regulatory_hint_disconnect(void) { diff --git a/package/kernel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch b/package/kernel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch index 1d249a9723..3ae01a5c35 100644 --- a/package/kernel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch +++ b/package/kernel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch @@ -109,7 +109,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++ /* debugfs: queues etc */ -@@ -1009,6 +1100,9 @@ ath5k_debug_init_device(struct ath5k_hw +@@ -1012,6 +1103,9 @@ ath5k_debug_init_device(struct ath5k_hw debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah, &fops_beacon); diff --git a/package/kernel/mac80211/patches/500-ath9k_eeprom_debugfs.patch b/package/kernel/mac80211/patches/500-ath9k_eeprom_debugfs.patch index f21eed18c3..b6dc45cd96 100644 --- a/package/kernel/mac80211/patches/500-ath9k_eeprom_debugfs.patch +++ b/package/kernel/mac80211/patches/500-ath9k_eeprom_debugfs.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1315,6 +1315,53 @@ void ath9k_deinit_debug(struct ath_softc +@@ -1374,6 +1374,53 @@ void ath9k_deinit_debug(struct ath_softc ath9k_cmn_spectral_deinit_debug(&sc->spec_priv); } @@ -54,7 +54,7 @@ int ath9k_init_debug(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); -@@ -1334,6 +1381,8 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1393,6 +1440,8 @@ int ath9k_init_debug(struct ath_hw *ah) ath9k_tx99_init_debug(sc); ath9k_cmn_spectral_init_debug(&sc->spec_priv, sc->debug.debugfs_phy); diff --git a/package/kernel/mac80211/patches/501-ath9k_ahb_init.patch b/package/kernel/mac80211/patches/501-ath9k_ahb_init.patch index d076e3c2eb..53225dbc36 100644 --- a/package/kernel/mac80211/patches/501-ath9k_ahb_init.patch +++ b/package/kernel/mac80211/patches/501-ath9k_ahb_init.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -1086,23 +1086,23 @@ static int __init ath9k_init(void) +@@ -1088,23 +1088,23 @@ static int __init ath9k_init(void) { int error; diff --git a/package/kernel/mac80211/patches/512-ath9k_channelbw_debugfs.patch b/package/kernel/mac80211/patches/512-ath9k_channelbw_debugfs.patch index c98072bac9..2ebb73d689 100644 --- a/package/kernel/mac80211/patches/512-ath9k_channelbw_debugfs.patch +++ b/package/kernel/mac80211/patches/512-ath9k_channelbw_debugfs.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1362,6 +1362,52 @@ static const struct file_operations fops +@@ -1421,6 +1421,52 @@ static const struct file_operations fops .owner = THIS_MODULE }; @@ -53,7 +53,7 @@ int ath9k_init_debug(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); -@@ -1383,6 +1429,8 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1442,6 +1488,8 @@ int ath9k_init_debug(struct ath_hw *ah) debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, &fops_eeprom); @@ -74,7 +74,7 @@ --- a/drivers/net/wireless/ath/ath9k/common.c +++ b/drivers/net/wireless/ath/ath9k/common.c -@@ -296,11 +296,13 @@ EXPORT_SYMBOL(ath9k_cmn_get_hw_crypto_ke +@@ -297,11 +297,13 @@ EXPORT_SYMBOL(ath9k_cmn_get_hw_crypto_ke /* * Update internal channel flags. */ @@ -89,7 +89,7 @@ ichan->channel = chan->center_freq; ichan->chan = chan; -@@ -308,7 +310,19 @@ static void ath9k_cmn_update_ichannel(st +@@ -309,7 +311,19 @@ static void ath9k_cmn_update_ichannel(st if (chan->band == NL80211_BAND_5GHZ) flags |= CHANNEL_5GHZ; @@ -110,7 +110,7 @@ case NL80211_CHAN_WIDTH_5: flags |= CHANNEL_QUARTER; break; -@@ -341,10 +355,11 @@ struct ath9k_channel *ath9k_cmn_get_chan +@@ -342,10 +356,11 @@ struct ath9k_channel *ath9k_cmn_get_chan struct cfg80211_chan_def *chandef) { struct ieee80211_channel *curchan = chandef->chan; diff --git a/package/kernel/mac80211/patches/513-ath9k_add_pci_ids.patch b/package/kernel/mac80211/patches/513-ath9k_add_pci_ids.patch index 59daf4fe11..fdeaed05e8 100644 --- a/package/kernel/mac80211/patches/513-ath9k_add_pci_ids.patch +++ b/package/kernel/mac80211/patches/513-ath9k_add_pci_ids.patch @@ -20,7 +20,7 @@ #define AR9160_DEVID_PCI 0x0027 --- a/drivers/net/wireless/ath/ath9k/pci.c +++ b/drivers/net/wireless/ath/ath9k/pci.c -@@ -763,6 +763,7 @@ static const struct pci_device_id ath_pc +@@ -773,6 +773,7 @@ static const struct pci_device_id ath_pc .driver_data = ATH9K_PCI_BT_ANT_DIV }, #endif diff --git a/package/kernel/mac80211/patches/522-mac80211_configure_antenna_gain.patch b/package/kernel/mac80211/patches/522-mac80211_configure_antenna_gain.patch index 9a0f6f5dbd..19f0ff2ae9 100644 --- a/package/kernel/mac80211/patches/522-mac80211_configure_antenna_gain.patch +++ b/package/kernel/mac80211/patches/522-mac80211_configure_antenna_gain.patch @@ -1,6 +1,6 @@ --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h -@@ -2660,6 +2660,7 @@ struct cfg80211_nan_func { +@@ -2750,6 +2750,7 @@ struct cfg80211_pmk_conf { * (as advertised by the nl80211 feature flag.) * @get_tx_power: store the current TX power into the dbm variable; * return 0 if successful @@ -8,7 +8,7 @@ * * @set_wds_peer: set the WDS peer for a WDS interface * -@@ -2940,6 +2941,7 @@ struct cfg80211_ops { +@@ -3041,6 +3042,7 @@ struct cfg80211_ops { enum nl80211_tx_power_setting type, int mbm); int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, int *dbm); @@ -18,7 +18,7 @@ const u8 *addr); --- a/include/net/mac80211.h +++ b/include/net/mac80211.h -@@ -1325,6 +1325,7 @@ enum ieee80211_smps_mode { +@@ -1338,6 +1338,7 @@ enum ieee80211_smps_mode { * * @power_level: requested transmit power (in dBm), backward compatibility * value only that is set to the minimum of all interfaces @@ -26,7 +26,7 @@ * * @chandef: the channel definition to tune to * @radar_enabled: whether radar detection is enabled -@@ -1345,6 +1346,7 @@ enum ieee80211_smps_mode { +@@ -1358,6 +1359,7 @@ enum ieee80211_smps_mode { struct ieee80211_conf { u32 flags; int power_level, dynamic_ps_timeout; @@ -36,9 +36,9 @@ u8 ps_dtim_period; --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h -@@ -2002,6 +2002,9 @@ enum nl80211_commands { - * u32 attribute with an &enum nl80211_timeout_reason value. This is used, - * e.g., with %NL80211_CMD_CONNECT event. +@@ -2153,6 +2153,9 @@ enum nl80211_commands { + * @NL80211_ATTR_PMKR0_NAME: PMK-R0 Name for offloaded FT. + * @NL80211_ATTR_PORT_AUTHORIZED: (reserved) * + * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce + * transmit power to stay within regulatory limits. u32, dBi. @@ -46,9 +46,9 @@ * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use -@@ -2413,6 +2416,8 @@ enum nl80211_attrs { - - NL80211_ATTR_TIMEOUT_REASON, +@@ -2579,6 +2582,8 @@ enum nl80211_attrs { + NL80211_ATTR_PMKR0_NAME, + NL80211_ATTR_PORT_AUTHORIZED, + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + @@ -57,7 +57,7 @@ __NL80211_ATTR_AFTER_LAST, --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -2396,6 +2396,19 @@ static int ieee80211_get_tx_power(struct +@@ -2447,6 +2447,19 @@ static int ieee80211_get_tx_power(struct return 0; } @@ -77,7 +77,7 @@ static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev, const u8 *addr) { -@@ -3627,6 +3640,7 @@ const struct cfg80211_ops mac80211_confi +@@ -3721,6 +3734,7 @@ const struct cfg80211_ops mac80211_confi .set_wiphy_params = ieee80211_set_wiphy_params, .set_tx_power = ieee80211_set_tx_power, .get_tx_power = ieee80211_get_tx_power, @@ -87,7 +87,7 @@ CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd) --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -1370,6 +1370,7 @@ struct ieee80211_local { +@@ -1348,6 +1348,7 @@ struct ieee80211_local { int dynamic_ps_forced_timeout; int user_power_level; /* in dBm, for all interfaces */ @@ -119,7 +119,7 @@ if (local->hw.conf.power_level != power) { changed |= IEEE80211_CONF_CHANGE_POWER; local->hw.conf.power_level = power; -@@ -589,6 +595,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_ +@@ -592,6 +598,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_ IEEE80211_RADIOTAP_MCS_HAVE_BW; local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI | IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH; @@ -129,15 +129,15 @@ local->user_power_level = IEEE80211_UNSET_POWER_LEVEL; --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c -@@ -424,6 +424,7 @@ static const struct nla_policy nl80211_p - .len = sizeof(struct nl80211_bss_select_rssi_adjust) - }, - [NL80211_ATTR_TIMEOUT_REASON] = { .type = NLA_U32 }, +@@ -420,6 +420,7 @@ static const struct nla_policy nl80211_p + [NL80211_ATTR_FILS_CACHE_ID] = { .len = 2 }, + [NL80211_ATTR_PMK] = { .type = NLA_BINARY, .len = PMK_MAX_LEN }, + [NL80211_ATTR_SCHED_SCAN_MULTI] = { .type = NLA_FLAG }, + [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 }, }; /* policy for the key attributes */ -@@ -2385,6 +2386,20 @@ static int nl80211_set_wiphy(struct sk_b +@@ -2395,6 +2396,20 @@ static int nl80211_set_wiphy(struct sk_b if (result) return result; } diff --git a/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch b/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch index b3b51b4433..9084ea7db3 100644 --- a/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch +++ b/package/kernel/mac80211/patches/530-ath9k_extra_leds.patch @@ -103,7 +103,8 @@ + GFP_KERNEL); + if (!led) + return -ENOMEM; -+ + +- ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, val); + led->gpio = gpio = (struct gpio_led *) (led + 1); + _name = (char *) (led->gpio + 1); + @@ -116,8 +117,7 @@ + ret = ath_add_led(sc, led); + if (unlikely(ret < 0)) + kfree(led); - -- ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, val); ++ + return ret; } @@ -125,11 +125,11 @@ { - if (!sc->led_registered) - return; -+ struct ath_led *led; - +- - ath_led_brightness(&sc->led_cdev, LED_OFF); - led_classdev_unregister(&sc->led_cdev); -- ++ struct ath_led *led; + - ath9k_hw_gpio_free(sc->sc_ah, sc->sc_ah->led_pin); + while (!list_empty(&sc->leds)) { + led = list_first_entry(&sc->leds, struct ath_led, list); @@ -181,7 +181,7 @@ --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c -@@ -998,7 +998,7 @@ int ath9k_init_device(u16 devid, struct +@@ -1000,7 +1000,7 @@ int ath9k_init_device(u16 devid, struct #ifdef CPTCFG_MAC80211_LEDS /* must be initialized before ieee80211_register_hw */ @@ -192,7 +192,7 @@ #endif --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1407,6 +1407,61 @@ static const struct file_operations fops +@@ -1466,6 +1466,61 @@ static const struct file_operations fops .llseek = default_llseek, }; @@ -254,7 +254,7 @@ int ath9k_init_debug(struct ath_hw *ah) { -@@ -1431,6 +1486,10 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1490,6 +1545,10 @@ int ath9k_init_debug(struct ath_hw *ah) &fops_eeprom); debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, sc, &fops_chanbw); diff --git a/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch b/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch index 35d8e8bd42..8ed7ad8a09 100644 --- a/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch +++ b/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch @@ -56,16 +56,21 @@ INIT_LIST_HEAD(&sc->leds); -@@ -144,6 +165,12 @@ void ath_init_leds(struct ath_softc *sc) +@@ -134,6 +155,17 @@ void ath_init_leds(struct ath_softc *sc) - ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, - !sc->sc_ah->config.led_active_high); + ath_fill_led_pin(sc); + ++ if (pdata && pdata->leds && pdata->num_leds) ++ for (i = 0; i < pdata->num_leds; i++) { ++ if (pdata->leds[i].gpio == sc->sc_ah->led_pin) ++ sc->sc_ah->led_pin = -1; ++ ++ ath_create_platform_led(sc, &pdata->leds[i]); ++ } + -+ if (!pdata) ++ if (sc->sc_ah->led_pin < 0) + return; + -+ for (i = 0; i < pdata->num_leds; i++) -+ ath_create_platform_led(sc, &pdata->leds[i]); - } - #endif + snprintf(led_name, sizeof(led_name), "ath9k-%s", + wiphy_name(sc->hw->wiphy)); diff --git a/package/kernel/mac80211/patches/542-ath9k_debugfs_diag.patch b/package/kernel/mac80211/patches/542-ath9k_debugfs_diag.patch index 3e687792da..6dd03fd28a 100644 --- a/package/kernel/mac80211/patches/542-ath9k_debugfs_diag.patch +++ b/package/kernel/mac80211/patches/542-ath9k_debugfs_diag.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c -@@ -1463,6 +1463,50 @@ static const struct file_operations fops +@@ -1522,6 +1522,50 @@ static const struct file_operations fops #endif @@ -51,7 +51,7 @@ int ath9k_init_debug(struct ath_hw *ah) { struct ath_common *common = ath9k_hw_common(ah); -@@ -1490,6 +1534,8 @@ int ath9k_init_debug(struct ath_hw *ah) +@@ -1549,6 +1593,8 @@ int ath9k_init_debug(struct ath_hw *ah) debugfs_create_file("gpio_led", S_IWUSR, sc->debug.debugfs_phy, sc, &fops_gpio_led); #endif @@ -75,16 +75,16 @@ struct ath9k_hw_version { u32 magic; u16 devid; -@@ -805,6 +811,8 @@ struct ath_hw { - u32 rfkill_polarity; +@@ -806,6 +812,8 @@ struct ath_hw { u32 ah_flags; + s16 nf_override; + unsigned long diag; + bool reset_power_on; bool htc_reset_init; -@@ -1067,6 +1075,7 @@ void ath9k_hw_check_nav(struct ath_hw *a +@@ -1068,6 +1076,7 @@ void ath9k_hw_check_nav(struct ath_hw *a bool ath9k_hw_check_alive(struct ath_hw *ah); bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode); @@ -125,7 +125,7 @@ REG_SET_BIT(ah, AR_BTCOEX_WL_LNADIV, AR_BTCOEX_WL_LNADIV_FORCE_ON); --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -527,6 +527,11 @@ irqreturn_t ath_isr(int irq, void *dev) +@@ -528,6 +528,11 @@ irqreturn_t ath_isr(int irq, void *dev) if (test_bit(ATH_OP_HW_RESET, &common->op_flags)) return IRQ_HANDLED; diff --git a/package/kernel/mac80211/patches/543-ath9k_entropy_from_adc.patch b/package/kernel/mac80211/patches/543-ath9k_entropy_from_adc.patch index 6f7370203b..f9d3251c22 100644 --- a/package/kernel/mac80211/patches/543-ath9k_entropy_from_adc.patch +++ b/package/kernel/mac80211/patches/543-ath9k_entropy_from_adc.patch @@ -18,7 +18,7 @@ void (*spectral_scan_trigger)(struct ath_hw *ah); --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c -@@ -1947,6 +1947,26 @@ void ar9003_hw_init_rate_txpower(struct +@@ -1945,6 +1945,26 @@ void ar9003_hw_init_rate_txpower(struct } } @@ -45,7 +45,7 @@ void ar9003_hw_attach_phy_ops(struct ath_hw *ah) { struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); -@@ -1983,6 +2003,7 @@ void ar9003_hw_attach_phy_ops(struct ath +@@ -1981,6 +2001,7 @@ void ar9003_hw_attach_phy_ops(struct ath priv_ops->set_radar_params = ar9003_hw_set_radar_params; priv_ops->fast_chan_change = ar9003_hw_fast_chan_change; @@ -65,8 +65,8 @@ } static const struct ieee80211_iface_limit if_limits[] = { -@@ -958,6 +959,18 @@ static void ath9k_set_hw_capab(struct at - SET_IEEE80211_PERM_ADDR(hw, common->macaddr); +@@ -960,6 +961,18 @@ static void ath9k_set_hw_capab(struct at + wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST); } +static void ath_get_initial_entropy(struct ath_softc *sc) @@ -84,7 +84,7 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, const struct ath_bus_ops *bus_ops) { -@@ -1003,6 +1016,8 @@ int ath9k_init_device(u16 devid, struct +@@ -1005,6 +1018,8 @@ int ath9k_init_device(u16 devid, struct ARRAY_SIZE(ath9k_tpt_blink)); #endif diff --git a/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch b/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch deleted file mode 100644 index ced72c6c69..0000000000 --- a/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch +++ /dev/null @@ -1,39 +0,0 @@ -From: Michal Cieslakiewicz -Date: Sun, 31 Jan 2016 20:45:57 +0100 -Subject: [PATCH v4 1/8] mac80211: ath9k: enable platform WLAN LED name - -Enable platform-supplied WLAN LED name for ath9k device. It replaces generic -'ath9k-phy*' label with string set during platform initialization. - -Signed-off-by: Michal Cieslakiewicz ---- - drivers/net/wireless/ath/ath9k/gpio.c | 10 +++++++--- - include/linux/ath9k_platform.h | 1 + - 2 files changed, 8 insertions(+), 3 deletions(-) - ---- a/drivers/net/wireless/ath/ath9k/gpio.c -+++ b/drivers/net/wireless/ath/ath9k/gpio.c -@@ -155,8 +155,11 @@ void ath_init_leds(struct ath_softc *sc) - - ath_fill_led_pin(sc); - -- snprintf(led_name, sizeof(led_name), "ath9k-%s", -- wiphy_name(sc->hw->wiphy)); -+ if (pdata && pdata->led_name) -+ strncpy(led_name, pdata->led_name, sizeof(led_name)); -+ else -+ snprintf(led_name, sizeof(led_name), "ath9k-%s", -+ wiphy_name(sc->hw->wiphy)); - - if (ath9k_led_blink) - trigger = sc->led_default_trigger; ---- a/include/linux/ath9k_platform.h -+++ b/include/linux/ath9k_platform.h -@@ -49,6 +49,7 @@ struct ath9k_platform_data { - - int num_leds; - const struct gpio_led *leds; -+ const char *led_name; - }; - - #endif /* _LINUX_ATH9K_PLATFORM_H */ diff --git a/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch b/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch index d4269282d9..31dac29ad7 100644 --- a/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch +++ b/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch @@ -196,7 +196,7 @@ Signed-off-by: Felix Fietkau return 0; } -@@ -136,12 +264,18 @@ void ath_deinit_leds(struct ath_softc *s +@@ -136,17 +264,24 @@ void ath_deinit_leds(struct ath_softc *s while (!list_empty(&sc->leds)) { led = list_first_entry(&sc->leds, struct ath_led, list); @@ -215,18 +215,31 @@ Signed-off-by: Felix Fietkau } void ath_init_leds(struct ath_softc *sc) -@@ -158,6 +292,8 @@ void ath_init_leds(struct ath_softc *sc) + { + struct ath9k_platform_data *pdata = sc->dev->platform_data; ++ struct device_node *np = sc->dev->of_node; + char led_name[32]; + const char *trigger; + int i; +@@ -156,6 +291,15 @@ void ath_init_leds(struct ath_softc *sc) + if (AR_SREV_9100(sc->sc_ah)) + return; ++ if (!np) ++ ath9k_register_gpio_chip(sc); ++ ++ /* setup gpio controller only if requested and skip the led_pin setup */ ++ if (of_property_read_bool(np, "gpio-controller")) { ++ ath9k_register_gpio_chip(sc); ++ return; ++ } ++ ath_fill_led_pin(sc); -+ ath9k_register_gpio_chip(sc); -+ - if (pdata && pdata->led_name) - strncpy(led_name, pdata->led_name, sizeof(led_name)); - else -@@ -178,6 +314,7 @@ void ath_init_leds(struct ath_softc *sc) - for (i = 0; i < pdata->num_leds; i++) - ath_create_platform_led(sc, &pdata->leds[i]); + if (pdata && pdata->leds && pdata->num_leds) +@@ -180,6 +324,7 @@ void ath_init_leds(struct ath_softc *sc) + ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, + !sc->sc_ah->config.led_active_high); } + #endif diff --git a/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch b/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch index f40bac93c3..e86e3e38bd 100644 --- a/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch +++ b/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch @@ -29,7 +29,7 @@ Signed-off-by: Felix Fietkau #ifdef CPTCFG_MAC80211_LEDS -@@ -129,6 +131,64 @@ static void ath9k_unregister_gpio_chip(s +@@ -129,6 +131,67 @@ static void ath9k_unregister_gpio_chip(s sc->gpiochip = NULL; } @@ -59,6 +59,9 @@ Signed-off-by: Felix Fietkau + return; + + for (i = 0; i < pdata->num_btns; i++) { ++ if (pdata->btns[i].gpio == sc->sc_ah->led_pin) ++ sc->sc_ah->led_pin = -1; ++ + ath9k_hw_gpio_request_in(sc->sc_ah, pdata->btns[i].gpio, + "ath9k-gpio"); + bt[i].gpio = sc->gpiochip->gchip.base + pdata->btns[i].gpio; @@ -94,7 +97,7 @@ Signed-off-by: Felix Fietkau #else /* CONFIG_GPIOLIB */ static inline void ath9k_register_gpio_chip(struct ath_softc *sc) -@@ -139,6 +199,14 @@ static inline void ath9k_unregister_gpio +@@ -139,6 +202,14 @@ static inline void ath9k_unregister_gpio { } @@ -109,7 +112,7 @@ Signed-off-by: Felix Fietkau #endif /* CONFIG_GPIOLIB */ /********************************/ -@@ -262,6 +330,7 @@ void ath_deinit_leds(struct ath_softc *s +@@ -262,6 +333,7 @@ void ath_deinit_leds(struct ath_softc *s { struct ath_led *led; @@ -117,29 +120,20 @@ Signed-off-by: Felix Fietkau while (!list_empty(&sc->leds)) { led = list_first_entry(&sc->leds, struct ath_led, list); #ifdef CONFIG_GPIOLIB -@@ -293,6 +362,7 @@ void ath_init_leds(struct ath_softc *sc) - ath_fill_led_pin(sc); +@@ -301,6 +373,7 @@ void ath_init_leds(struct ath_softc *sc) + } - ath9k_register_gpio_chip(sc); + ath_fill_led_pin(sc); + ath9k_init_buttons(sc); - if (pdata && pdata->led_name) - strncpy(led_name, pdata->led_name, sizeof(led_name)); -@@ -308,7 +378,7 @@ void ath_init_leds(struct ath_softc *sc) - ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, - !sc->sc_ah->config.led_active_high); - -- if (!pdata) -+ if (!pdata || !pdata->leds || !pdata->num_leds) - return; - - for (i = 0; i < pdata->num_leds; i++) + if (pdata && pdata->leds && pdata->num_leds) + for (i = 0; i < pdata->num_leds; i++) { --- a/include/linux/ath9k_platform.h +++ b/include/linux/ath9k_platform.h -@@ -50,6 +50,10 @@ struct ath9k_platform_data { +@@ -49,6 +49,10 @@ struct ath9k_platform_data { + int num_leds; const struct gpio_led *leds; - const char *led_name; + + unsigned num_btns; + const struct gpio_keys_button *btns; diff --git a/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch b/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch index 45284c71ee..82b8109e06 100644 --- a/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch +++ b/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch @@ -17,7 +17,7 @@ struct ath_hw *ah = sc->sc_ah; struct ath_common *common = ath9k_hw_common(ah); struct ieee80211_hw *hw = sc->hw; -@@ -41,6 +44,11 @@ static int ath_set_channel(struct ath_so +@@ -42,6 +45,11 @@ static int ath_set_channel(struct ath_so ath_dbg(common, CONFIG, "Set channel: %d MHz width: %d\n", chan->center_freq, chandef->width); @@ -27,7 +27,7 @@ + } + /* update survey stats for the old channel before switching */ - spin_lock_bh(&common->cc_lock); + spin_lock_irqsave(&common->cc_lock, flags); ath_update_survey_stats(sc); --- /dev/null +++ b/drivers/net/wireless/ath/ath9k/hsr.c @@ -343,7 +343,7 @@ u8 ath9k_parse_mpdudensity(u8 mpdudensity) { -@@ -648,6 +650,7 @@ void ath_reset_work(struct work_struct * +@@ -649,6 +651,7 @@ void ath_reset_work(struct work_struct * static int ath9k_start(struct ieee80211_hw *hw) { struct ath_softc *sc = hw->priv; @@ -351,7 +351,7 @@ struct ath_hw *ah = sc->sc_ah; struct ath_common *common = ath9k_hw_common(ah); struct ieee80211_channel *curchan = sc->cur_chan->chandef.chan; -@@ -726,6 +729,11 @@ static int ath9k_start(struct ieee80211_ +@@ -727,6 +730,11 @@ static int ath9k_start(struct ieee80211_ AR_GPIO_OUTPUT_MUX_AS_OUTPUT); } @@ -375,7 +375,7 @@ --- a/include/linux/ath9k_platform.h +++ b/include/linux/ath9k_platform.h -@@ -54,6 +54,8 @@ struct ath9k_platform_data { +@@ -53,6 +53,8 @@ struct ath9k_platform_data { unsigned num_btns; const struct gpio_keys_button *btns; unsigned btn_poll_interval; @@ -384,9 +384,9 @@ }; #endif /* _LINUX_ATH9K_PLATFORM_H */ ---- a/.local-symbols -+++ b/.local-symbols -@@ -157,6 +157,7 @@ ATH9K_WOW= +--- a/local-symbols ++++ b/local-symbols +@@ -114,6 +114,7 @@ ATH9K_WOW= ATH9K_RFKILL= ATH9K_CHANNEL_CONTEXT= ATH9K_PCOEM= diff --git a/package/kernel/mac80211/patches/552-ahb_of.patch b/package/kernel/mac80211/patches/552-ahb_of.patch new file mode 100644 index 0000000000..1af1f44b7f --- /dev/null +++ b/package/kernel/mac80211/patches/552-ahb_of.patch @@ -0,0 +1,334 @@ +Index: backports-2017-11-01/drivers/net/wireless/ath/ath9k/ahb.c +=================================================================== +--- backports-2017-11-01.orig/drivers/net/wireless/ath/ath9k/ahb.c ++++ backports-2017-11-01/drivers/net/wireless/ath/ath9k/ahb.c +@@ -19,7 +19,15 @@ + #include + #include + #include ++#include + #include "ath9k.h" ++#include ++ ++#ifdef CONFIG_OF ++#include ++#include ++#include ++#endif + + static const struct platform_device_id ath9k_platform_id_table[] = { + { +@@ -68,6 +76,235 @@ static const struct ath_bus_ops ath_ahb_ + .eeprom_read = ath_ahb_eeprom_read, + }; + ++#ifdef CONFIG_OF ++ ++#define QCA955X_DDR_CTL_CONFIG 0x108 ++#define QCA955X_DDR_CTL_CONFIG_ACT_WMAC BIT(23) ++ ++static int of_get_wifi_cal(struct device_node *np, struct ath9k_platform_data *pdata) ++{ ++#ifdef CONFIG_MTD ++ struct device_node *mtd_np = NULL; ++ size_t retlen; ++ int size, ret; ++ struct mtd_info *mtd; ++ const char *part; ++ const __be32 *list; ++ phandle phandle; ++ ++ list = of_get_property(np, "mtd-cal-data", &size); ++ if (!list) ++ return 0; ++ ++ if (size != (2 * sizeof(*list))) ++ return 1; ++ ++ phandle = be32_to_cpup(list++); ++ if (phandle) ++ mtd_np = of_find_node_by_phandle(phandle); ++ ++ if (!mtd_np) ++ return 1; ++ ++ part = of_get_property(mtd_np, "label", NULL); ++ if (!part) ++ part = mtd_np->name; ++ ++ mtd = get_mtd_device_nm(part); ++ if (IS_ERR(mtd)) ++ return 1; ++ ++ ret = mtd_read(mtd, be32_to_cpup(list), sizeof(pdata->eeprom_data), ++ &retlen, (u8*)pdata->eeprom_data); ++ put_mtd_device(mtd); ++ ++#endif ++ return 0; ++} ++ ++static int ar913x_wmac_reset(void) ++{ ++ ath79_device_reset_set(AR913X_RESET_AMBA2WMAC); ++ mdelay(10); ++ ++ ath79_device_reset_clear(AR913X_RESET_AMBA2WMAC); ++ mdelay(10); ++ ++ return 0; ++} ++ ++static int ar933x_wmac_reset(void) ++{ ++ int retries = 20; ++ ++ ath79_device_reset_set(AR933X_RESET_WMAC); ++ ath79_device_reset_clear(AR933X_RESET_WMAC); ++ ++ while (1) { ++ u32 bootstrap; ++ ++ bootstrap = ath79_reset_rr(AR933X_RESET_REG_BOOTSTRAP); ++ if ((bootstrap & AR933X_BOOTSTRAP_EEPBUSY) == 0) ++ return 0; ++ ++ if (retries-- == 0) ++ break; ++ ++ udelay(10000); ++ } ++ ++ pr_err("ar933x: WMAC reset timed out"); ++ return -ETIMEDOUT; ++} ++ ++static int qca955x_wmac_reset(void) ++{ ++ int i; ++ ++ /* Try to wait for WMAC DDR activity to stop */ ++ for (i = 0; i < 10; i++) { ++ if (!(__raw_readl(ath79_ddr_base + QCA955X_DDR_CTL_CONFIG) & ++ QCA955X_DDR_CTL_CONFIG_ACT_WMAC)) ++ break; ++ ++ udelay(10); ++ } ++ ++ ath79_device_reset_set(QCA955X_RESET_RTC); ++ udelay(10); ++ ath79_device_reset_clear(QCA955X_RESET_RTC); ++ udelay(10); ++ ++ return 0; ++} ++ ++enum { ++ AR913X_WMAC = 0, ++ AR933X_WMAC, ++ AR934X_WMAC, ++ QCA953X_WMAC, ++ QCA955X_WMAC, ++ QCA956X_WMAC, ++}; ++ ++static int ar9330_get_soc_revision(void) ++{ ++ if (ath79_soc_rev == 1) ++ return ath79_soc_rev; ++ ++ return 0; ++} ++ ++static int ath79_get_soc_revision(void) ++{ ++ return ath79_soc_rev; ++} ++ ++static const struct of_ath_ahb_data { ++ u16 dev_id; ++ u32 bootstrap_reg; ++ u32 bootstrap_ref; ++ ++ int (*soc_revision)(void); ++ int (*wmac_reset)(void); ++} of_ath_ahb_data[] = { ++ [AR913X_WMAC] = { ++ .dev_id = AR5416_AR9100_DEVID, ++ .wmac_reset = ar913x_wmac_reset, ++ ++ }, ++ [AR933X_WMAC] = { ++ .dev_id = AR9300_DEVID_AR9330, ++ .bootstrap_reg = AR933X_RESET_REG_BOOTSTRAP, ++ .bootstrap_ref = AR933X_BOOTSTRAP_REF_CLK_40, ++ .soc_revision = ar9330_get_soc_revision, ++ .wmac_reset = ar933x_wmac_reset, ++ }, ++ [AR934X_WMAC] = { ++ .dev_id = AR9300_DEVID_AR9340, ++ .bootstrap_reg = AR934X_RESET_REG_BOOTSTRAP, ++ .bootstrap_ref = AR934X_BOOTSTRAP_REF_CLK_40, ++ .soc_revision = ath79_get_soc_revision, ++ }, ++ [QCA953X_WMAC] = { ++ .dev_id = AR9300_DEVID_AR953X, ++ .bootstrap_reg = QCA953X_RESET_REG_BOOTSTRAP, ++ .bootstrap_ref = QCA953X_BOOTSTRAP_REF_CLK_40, ++ .soc_revision = ath79_get_soc_revision, ++ }, ++ [QCA955X_WMAC] = { ++ .dev_id = AR9300_DEVID_QCA955X, ++ .bootstrap_reg = QCA955X_RESET_REG_BOOTSTRAP, ++ .bootstrap_ref = QCA955X_BOOTSTRAP_REF_CLK_40, ++ .wmac_reset = qca955x_wmac_reset, ++ }, ++ [QCA956X_WMAC] = { ++ .dev_id = AR9300_DEVID_QCA956X, ++ .bootstrap_reg = QCA956X_RESET_REG_BOOTSTRAP, ++ .bootstrap_ref = QCA956X_BOOTSTRAP_REF_CLK_40, ++ .soc_revision = ath79_get_soc_revision, ++ }, ++}; ++ ++const struct of_device_id of_ath_ahb_match[] = { ++ { .compatible = "qca,ar9130-wmac", .data = &of_ath_ahb_data[AR913X_WMAC] }, ++ { .compatible = "qca,ar9330-wmac", .data = &of_ath_ahb_data[AR933X_WMAC] }, ++ { .compatible = "qca,ar9340-wmac", .data = &of_ath_ahb_data[AR934X_WMAC] }, ++ { .compatible = "qca,qca9530-wmac", .data = &of_ath_ahb_data[QCA953X_WMAC] }, ++ { .compatible = "qca,qca9550-wmac", .data = &of_ath_ahb_data[QCA955X_WMAC] }, ++ { .compatible = "qca,qca9560-wmac", .data = &of_ath_ahb_data[QCA956X_WMAC] }, ++ {}, ++}; ++MODULE_DEVICE_TABLE(of, of_ath_ahb_match); ++ ++static int of_ath_ahb_probe(struct platform_device *pdev) ++{ ++ struct ath9k_platform_data *pdata; ++ const struct of_device_id *match; ++ const struct of_ath_ahb_data *data; ++ u8 led_pin; ++ ++ match = of_match_device(of_ath_ahb_match, &pdev->dev); ++ data = (const struct of_ath_ahb_data *)match->data; ++ ++ pdata = dev_get_platdata(&pdev->dev); ++ ++ if (!of_property_read_u8(pdev->dev.of_node, "qca,led-pin", &led_pin)) ++ pdata->led_pin = led_pin; ++ else ++ pdata->led_pin = -1; ++ ++ if (of_property_read_bool(pdev->dev.of_node, "qca,disable-2ghz")) ++ pdata->disable_2ghz = true; ++ ++ if (of_property_read_bool(pdev->dev.of_node, "qca,disable-5ghz")) ++ pdata->disable_5ghz = true; ++ ++ if (of_property_read_bool(pdev->dev.of_node, "qca,tx-gain-buffalo")) ++ pdata->tx_gain_buffalo = true; ++ ++ if (data->wmac_reset) { ++ data->wmac_reset(); ++ pdata->external_reset = data->wmac_reset; ++ } ++ ++ if (data->bootstrap_reg && data->bootstrap_ref) { ++ u32 t = ath79_reset_rr(data->bootstrap_reg); ++ if (t & data->bootstrap_ref) ++ pdata->is_clk_25mhz = false; ++ else ++ pdata->is_clk_25mhz = true; ++ } ++ ++ pdata->get_mac_revision = data->soc_revision; ++ ++ if (of_get_wifi_cal(pdev->dev.of_node, pdata)) ++ dev_err(&pdev->dev, "failed to load calibration data from mtd device\n"); ++ ++ return data->dev_id; ++} ++#endif ++ + static int ath_ahb_probe(struct platform_device *pdev) + { + void __iomem *mem; +@@ -79,6 +316,17 @@ static int ath_ahb_probe(struct platform + int ret = 0; + struct ath_hw *ah; + char hw_name[64]; ++ u16 dev_id; ++ ++ if (id) ++ dev_id = id->driver_data; ++ ++#ifdef CONFIG_OF ++ if (pdev->dev.of_node) ++ pdev->dev.platform_data = devm_kzalloc(&pdev->dev, ++ sizeof(struct ath9k_platform_data), ++ GFP_KERNEL); ++#endif + + if (!dev_get_platdata(&pdev->dev)) { + dev_err(&pdev->dev, "no platform data specified\n"); +@@ -121,13 +369,16 @@ static int ath_ahb_probe(struct platform + sc->mem = mem; + sc->irq = irq; + ++#ifdef CONFIG_OF ++ dev_id = of_ath_ahb_probe(pdev); ++#endif + ret = request_irq(irq, ath_isr, IRQF_SHARED, "ath9k", sc); + if (ret) { + dev_err(&pdev->dev, "request_irq failed\n"); + goto err_free_hw; + } + +- ret = ath9k_init_device(id->driver_data, sc, &ath_ahb_bus_ops); ++ ret = ath9k_init_device(dev_id, sc, &ath_ahb_bus_ops); + if (ret) { + dev_err(&pdev->dev, "failed to initialize device\n"); + goto err_irq; +@@ -158,6 +409,9 @@ static int ath_ahb_remove(struct platfor + free_irq(sc->irq, sc); + ieee80211_free_hw(sc->hw); + } ++#ifdef CONFIG_OF ++ pdev->dev.platform_data = NULL; ++#endif + + return 0; + } +@@ -167,6 +421,9 @@ static struct platform_driver ath_ahb_dr + .remove = ath_ahb_remove, + .driver = { + .name = "ath9k", ++#ifdef CONFIG_OF ++ .of_match_table = of_ath_ahb_match, ++#endif + }, + .id_table = ath9k_platform_id_table, + }; +Index: backports-2017-11-01/drivers/net/wireless/ath/ath9k/ath9k.h +=================================================================== +--- backports-2017-11-01.orig/drivers/net/wireless/ath/ath9k/ath9k.h ++++ backports-2017-11-01/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + #include "common.h" + #include "debug.h" +@@ -1023,6 +1024,9 @@ struct ath_softc { + struct ath_hw *sc_ah; + void __iomem *mem; + int irq; ++#ifdef CONFIG_OF ++ struct reset_control *reset; ++#endif + spinlock_t sc_serial_rw; + spinlock_t sc_pm_lock; + spinlock_t sc_pcu_lock; diff --git a/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch b/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch index 2325f37670..5127c5cfe4 100644 --- a/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch +++ b/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -9379,6 +9379,7 @@ static int rt2800_probe_rt(struct rt2x00 +@@ -9403,6 +9403,7 @@ static int rt2800_probe_rt(struct rt2x00 case RT3390: case RT3572: case RT3593: diff --git a/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch b/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch index 9775664deb..60e57c1bae 100644 --- a/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch +++ b/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch @@ -31,7 +31,7 @@ Signed-off-by: Gabor Juhos #define RF5362 0x5362 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -8957,6 +8957,66 @@ static const struct rf_channel rf_vals_3 +@@ -8981,6 +8981,66 @@ static const struct rf_channel rf_vals_3 {14, 0xF0, 2, 0x18}, }; @@ -98,7 +98,7 @@ Signed-off-by: Gabor Juhos static const struct rf_channel rf_vals_5592_xtal20[] = { /* Channel, N, K, mod, R */ {1, 482, 4, 10, 3}, -@@ -9220,6 +9280,11 @@ static int rt2800_probe_hw_mode(struct r +@@ -9244,6 +9304,11 @@ static int rt2800_probe_hw_mode(struct r spec->channels = rf_vals_3x; break; @@ -108,5 +108,5 @@ Signed-off-by: Gabor Juhos + break; + case RF5592: - rt2800_register_read(rt2x00dev, MAC_DEBUG_INDEX, ®); + reg = rt2800_register_read(rt2x00dev, MAC_DEBUG_INDEX); if (rt2x00_get_field32(reg, MAC_DEBUG_INDEX_XTAL)) { diff --git a/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch b/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch index 5737e015c1..def2c397fd 100644 --- a/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch +++ b/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -4855,6 +4855,7 @@ void rt2800_vco_calibration(struct rt2x0 +@@ -4881,6 +4881,7 @@ void rt2800_vco_calibration(struct rt2x0 case RF3053: case RF3070: case RF3290: @@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos case RF5350: case RF5360: case RF5362: -@@ -9402,6 +9403,7 @@ static int rt2800_probe_hw_mode(struct r +@@ -9426,6 +9427,7 @@ static int rt2800_probe_hw_mode(struct r case RF3053: case RF3070: case RF3290: diff --git a/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch b/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch index afcb6bdf4a..1d6e312037 100644 --- a/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch +++ b/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -2709,6 +2709,211 @@ static void rt2800_config_channel_rf3053 +@@ -2713,6 +2713,211 @@ static void rt2800_config_channel_rf3053 } } @@ -50,7 +50,7 @@ Signed-off-by: Gabor Juhos + + rt2800_rfcsr_write(rt2x00dev, 13, 0x12); + -+ rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 1); + rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0); + rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0); + rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 0); @@ -87,7 +87,7 @@ Signed-off-by: Gabor Juhos + + rt2800_freq_cal_mode1(rt2x00dev); + -+ rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 30); + if (!conf_is_ht40(conf)) + rfcsr &= ~(0x06); + else @@ -110,7 +110,7 @@ Signed-off-by: Gabor Juhos + rt2800_rfcsr_write(rt2x00dev, 34, 0x20); + + /* loopback RF_BS */ -+ rt2800_rfcsr_read(rt2x00dev, 36, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 36); + if (rf->channel <= 14) + rt2x00_set_field8(&rfcsr, RFCSR36_RF_BS, 1); + else @@ -158,13 +158,13 @@ Signed-off-by: Gabor Juhos + + rt2800_rfcsr_write(rt2x00dev, 50, 0x86); + -+ rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 51); + if (rf->channel <= 14) + rt2800_rfcsr_write(rt2x00dev, 51, 0x75); + else + rt2800_rfcsr_write(rt2x00dev, 51, 0x51); + -+ rt2800_rfcsr_read(rt2x00dev, 52, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 52); + if (rf->channel <= 14) + rt2800_rfcsr_write(rt2x00dev, 52, 0x45); + else @@ -194,25 +194,25 @@ Signed-off-by: Gabor Juhos + ((info->default_power2 & 0xe0) >> 1); + rt2800_bbp_write(rt2x00dev, 109, bbp); + -+ rt2800_bbp_read(rt2x00dev, 110, &bbp); ++ bbp = rt2800_bbp_read(rt2x00dev, 110); + bbp &= 0x0f; + bbp |= (info->default_power3 & 0xe0) >> 1; + rt2800_bbp_write(rt2x00dev, 110, bbp); + -+ rt2800_rfcsr_read(rt2x00dev, 57, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 57); + if (rf->channel <= 14) + rt2800_rfcsr_write(rt2x00dev, 57, 0x6e); + else + rt2800_rfcsr_write(rt2x00dev, 57, 0x3e); + + /* Enable RF tuning */ -+ rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 3); + rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1); + rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); + + udelay(2000); + -+ rt2800_bbp_read(rt2x00dev, 49, &bbp); ++ bbp = rt2800_bbp_read(rt2x00dev, 49); + /* clear update flag */ + rt2800_bbp_write(rt2x00dev, 49, bbp & 0xfe); + rt2800_bbp_write(rt2x00dev, 49, bbp); @@ -223,7 +223,7 @@ Signed-off-by: Gabor Juhos #define POWER_BOUND 0x27 #define POWER_BOUND_5G 0x2b -@@ -3565,6 +3770,9 @@ static void rt2800_config_channel(struct +@@ -3570,6 +3775,9 @@ static void rt2800_config_channel(struct case RF3322: rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info); break; diff --git a/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch b/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch index 9579016595..6476dc107b 100644 --- a/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch +++ b/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -8882,6 +8882,7 @@ static int rt2800_init_eeprom(struct rt2 +@@ -8906,6 +8906,7 @@ static int rt2800_init_eeprom(struct rt2 case RF3290: case RF3320: case RF3322: diff --git a/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch b/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch index 08b54f6726..0a931e2026 100644 --- a/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch +++ b/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch @@ -35,7 +35,7 @@ Signed-off-by: Gabor Juhos #define RX_FILTER_CFG 0x1400 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -5485,6 +5485,12 @@ static int rt2800_init_registers(struct +@@ -5509,6 +5509,12 @@ static int rt2800_init_registers(struct rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); } @@ -48,7 +48,7 @@ Signed-off-by: Gabor Juhos } else if (rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392) || rt2x00_rt(rt2x00dev, RT6352)) { -@@ -5698,6 +5704,11 @@ static int rt2800_init_registers(struct +@@ -5722,6 +5728,11 @@ static int rt2800_init_registers(struct reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002; rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg); @@ -57,6 +57,6 @@ Signed-off-by: Gabor Juhos + rt2800_register_write(rt2x00dev, TX_FBK_CFG_3S_1, 0x16151413); + } + - rt2800_register_read(rt2x00dev, TX_RTS_CFG, ®); + reg = rt2800_register_read(rt2x00dev, TX_RTS_CFG); rt2x00_set_field32(®, TX_RTS_CFG_AUTO_RTS_RETRY_LIMIT, 7); rt2x00_set_field32(®, TX_RTS_CFG_RTS_THRES, diff --git a/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch b/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch index ced3645aef..99f57bcd33 100644 --- a/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch +++ b/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -6325,6 +6325,47 @@ static void rt2800_init_bbp_3593(struct +@@ -6349,6 +6349,47 @@ static void rt2800_init_bbp_3593(struct rt2800_bbp_write(rt2x00dev, 103, 0xc0); } @@ -59,7 +59,7 @@ Signed-off-by: Gabor Juhos static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev) { int ant, div_mode; -@@ -6769,6 +6810,9 @@ static void rt2800_init_bbp(struct rt2x0 +@@ -6792,6 +6833,9 @@ static void rt2800_init_bbp(struct rt2x0 case RT3593: rt2800_init_bbp_3593(rt2x00dev); return; diff --git a/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch b/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch index 08e4ffe9ba..c0f1f5863b 100644 --- a/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch +++ b/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch @@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos #define RFCSR2_TX2_EN_MT7620 FIELD8(0x20) --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -7685,6 +7685,144 @@ static void rt2800_init_rfcsr_5350(struc +@@ -7707,6 +7707,144 @@ static void rt2800_init_rfcsr_5350(struc rt2800_rfcsr_write(rt2x00dev, 63, 0x00); } @@ -134,7 +134,7 @@ Signed-off-by: Gabor Juhos + rt2800_rfcsr_write(rt2x00dev, 33, 0x32); + } + -+ rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 2); + rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_BP, 0); + rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 1); + rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); @@ -142,23 +142,23 @@ Signed-off-by: Gabor Juhos + rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 0); + rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); + -+ rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 1); + rt2x00_set_field8(&rfcsr, RFCSR1_RF_BLOCK_EN, 1); + rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); + -+ rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 6); + rfcsr |= 0xc0; + rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); + -+ rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 22); + rfcsr |= 0x20; + rt2800_rfcsr_write(rt2x00dev, 22, rfcsr); + -+ rt2800_rfcsr_read(rt2x00dev, 46, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 46); + rfcsr |= 0x20; + rt2800_rfcsr_write(rt2x00dev, 46, rfcsr); + -+ rt2800_rfcsr_read(rt2x00dev, 20, &rfcsr); ++ rfcsr = rt2800_rfcsr_read(rt2x00dev, 20); + rfcsr &= ~0xee; + rt2800_rfcsr_write(rt2x00dev, 20, rfcsr); +} @@ -166,7 +166,7 @@ Signed-off-by: Gabor Juhos static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev) { rt2800_rf_init_calibration(rt2x00dev, 2); -@@ -8525,6 +8663,9 @@ static void rt2800_init_rfcsr(struct rt2 +@@ -8549,6 +8687,9 @@ static void rt2800_init_rfcsr(struct rt2 case RT3390: rt2800_init_rfcsr_3390(rt2x00dev); break; diff --git a/package/kernel/mac80211/patches/600-11-rt2x00-rt2800lib-use-the-extended-EEPROM-map-for-RT3.patch b/package/kernel/mac80211/patches/600-11-rt2x00-rt2800lib-use-the-extended-EEPROM-map-for-RT3.patch index 0e9496c056..e74f399e65 100644 --- a/package/kernel/mac80211/patches/600-11-rt2x00-rt2800lib-use-the-extended-EEPROM-map-for-RT3.patch +++ b/package/kernel/mac80211/patches/600-11-rt2x00-rt2800lib-use-the-extended-EEPROM-map-for-RT3.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -376,7 +376,8 @@ static unsigned int rt2800_eeprom_word_i +@@ -381,7 +381,8 @@ static unsigned int rt2800_eeprom_word_i wiphy_name(rt2x00dev->hw->wiphy), word)) return 0; diff --git a/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch b/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch index c03527b4f7..2e917c8ebf 100644 --- a/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch +++ b/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch @@ -10,8 +10,8 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -9059,6 +9059,8 @@ static int rt2800_init_eeprom(struct rt2 - rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); +@@ -9083,6 +9083,8 @@ static int rt2800_init_eeprom(struct rt2 + rf = rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID); else if (rt2x00_rt(rt2x00dev, RT3352)) rf = RF3322; + else if (rt2x00_rt(rt2x00dev, RT3883)) diff --git a/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch b/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch index 04574db7c1..0bb2d33577 100644 --- a/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch +++ b/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -3733,6 +3733,36 @@ static char rt2800_txpower_to_dev(struct +@@ -3738,6 +3738,36 @@ static char rt2800_txpower_to_dev(struct return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER); } @@ -47,7 +47,7 @@ Signed-off-by: Gabor Juhos static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, struct ieee80211_conf *conf, struct rf_channel *rf, -@@ -3751,6 +3781,12 @@ static void rt2800_config_channel(struct +@@ -3756,6 +3786,12 @@ static void rt2800_config_channel(struct rt2800_txpower_to_dev(rt2x00dev, rf->channel, info->default_power3); @@ -60,7 +60,7 @@ Signed-off-by: Gabor Juhos switch (rt2x00dev->chip.rf) { case RF2020: case RF3020: -@@ -3855,6 +3891,15 @@ static void rt2800_config_channel(struct +@@ -3860,6 +3896,15 @@ static void rt2800_config_channel(struct rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); rt2800_bbp_write(rt2x00dev, 77, 0x98); @@ -76,7 +76,7 @@ Signed-off-by: Gabor Juhos } else { rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); -@@ -3868,6 +3913,7 @@ static void rt2800_config_channel(struct +@@ -3873,6 +3918,7 @@ static void rt2800_config_channel(struct !rt2x00_rt(rt2x00dev, RT6352)) { if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { rt2800_bbp_write(rt2x00dev, 82, 0x62); @@ -84,7 +84,7 @@ Signed-off-by: Gabor Juhos rt2800_bbp_write(rt2x00dev, 75, 0x46); } else { if (rt2x00_rt(rt2x00dev, RT3593)) -@@ -3876,19 +3922,22 @@ static void rt2800_config_channel(struct +@@ -3881,19 +3927,22 @@ static void rt2800_config_channel(struct rt2800_bbp_write(rt2x00dev, 82, 0x84); rt2800_bbp_write(rt2x00dev, 75, 0x50); } @@ -110,7 +110,7 @@ Signed-off-by: Gabor Juhos rt2800_bbp_write(rt2x00dev, 83, 0x9a); if (rt2x00_has_cap_external_lna_a(rt2x00dev)) -@@ -4011,6 +4060,23 @@ static void rt2800_config_channel(struct +@@ -4019,6 +4068,23 @@ static void rt2800_config_channel(struct rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); diff --git a/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch b/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch index 3412a3e133..56157510eb 100644 --- a/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch +++ b/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -3720,13 +3720,15 @@ static char rt2800_txpower_to_dev(struct +@@ -3725,13 +3725,15 @@ static char rt2800_txpower_to_dev(struct unsigned int channel, char txpower) { diff --git a/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch b/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch index 8d1df8cf77..c1409bcfa3 100644 --- a/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch +++ b/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -5085,7 +5085,8 @@ static void rt2800_config_txpower(struct +@@ -5111,7 +5111,8 @@ static void rt2800_config_txpower(struct struct ieee80211_channel *chan, int power_level) { diff --git a/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch b/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch index 9aeb41fe6b..a4ccb28518 100644 --- a/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch +++ b/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -8941,7 +8941,8 @@ static u8 rt2800_get_txmixer_gain_24g(st +@@ -8965,7 +8965,8 @@ static u8 rt2800_get_txmixer_gain_24g(st { u16 word; @@ -20,8 +20,8 @@ Signed-off-by: Gabor Juhos + rt2x00_rt(rt2x00dev, RT3883)) return 0; - rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG, &word); -@@ -8955,7 +8956,8 @@ static u8 rt2800_get_txmixer_gain_5g(str + word = rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG); +@@ -8979,7 +8980,8 @@ static u8 rt2800_get_txmixer_gain_5g(str { u16 word; @@ -30,4 +30,4 @@ Signed-off-by: Gabor Juhos + rt2x00_rt(rt2x00dev, RT3883)) return 0; - rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_A, &word); + word = rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_A); diff --git a/package/kernel/mac80211/patches/600-17-rt2x00-rt2800lib-use-correct-RT-XWI-size-for-RT3883.patch b/package/kernel/mac80211/patches/600-17-rt2x00-rt2800lib-use-correct-RT-XWI-size-for-RT3883.patch index 9d12c76255..197aabd7bc 100644 --- a/package/kernel/mac80211/patches/600-17-rt2x00-rt2800lib-use-correct-RT-XWI-size-for-RT3883.patch +++ b/package/kernel/mac80211/patches/600-17-rt2x00-rt2800lib-use-correct-RT-XWI-size-for-RT3883.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -587,6 +587,7 @@ void rt2800_get_txwi_rxwi_size(struct rt +@@ -591,6 +591,7 @@ void rt2800_get_txwi_rxwi_size(struct rt { switch (rt2x00dev->chip.rt) { case RT3593: diff --git a/package/kernel/mac80211/patches/600-18-rt2x00-rt2800lib-fix-antenna-configuration-for-RT388.patch b/package/kernel/mac80211/patches/600-18-rt2x00-rt2800lib-fix-antenna-configuration-for-RT388.patch index cd212f9d8d..24c0ef91b0 100644 --- a/package/kernel/mac80211/patches/600-18-rt2x00-rt2800lib-fix-antenna-configuration-for-RT388.patch +++ b/package/kernel/mac80211/patches/600-18-rt2x00-rt2800lib-fix-antenna-configuration-for-RT388.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -2013,7 +2013,8 @@ void rt2800_config_ant(struct rt2x00_dev +@@ -2017,7 +2017,8 @@ void rt2800_config_ant(struct rt2x00_dev rt2800_bbp_write(rt2x00dev, 3, r3); rt2800_bbp_write(rt2x00dev, 1, r1); diff --git a/package/kernel/mac80211/patches/600-19-rt2x00-rt2800lib-fix-LNA-gain-configuration-for-RT38.patch b/package/kernel/mac80211/patches/600-19-rt2x00-rt2800lib-fix-LNA-gain-configuration-for-RT38.patch index 30ea12a5cd..52733ffeb9 100644 --- a/package/kernel/mac80211/patches/600-19-rt2x00-rt2800lib-fix-LNA-gain-configuration-for-RT38.patch +++ b/package/kernel/mac80211/patches/600-19-rt2x00-rt2800lib-fix-LNA-gain-configuration-for-RT38.patch @@ -10,23 +10,23 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -2036,7 +2036,8 @@ static void rt2800_config_lna_gain(struc - rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom); +@@ -2040,7 +2040,8 @@ static void rt2800_config_lna_gain(struc + eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_LNA); lna_gain = rt2x00_get_field16(eeprom, EEPROM_LNA_A0); } else if (libconf->rf.channel <= 128) { - if (rt2x00_rt(rt2x00dev, RT3593)) { + if (rt2x00_rt(rt2x00dev, RT3593) || + rt2x00_rt(rt2x00dev, RT3883)) { - rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom); + eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2); lna_gain = rt2x00_get_field16(eeprom, EEPROM_EXT_LNA2_A1); -@@ -2046,7 +2047,8 @@ static void rt2800_config_lna_gain(struc +@@ -2050,7 +2051,8 @@ static void rt2800_config_lna_gain(struc EEPROM_RSSI_BG2_LNA_A1); } } else { - if (rt2x00_rt(rt2x00dev, RT3593)) { + if (rt2x00_rt(rt2x00dev, RT3593) || + rt2x00_rt(rt2x00dev, RT3883)) { - rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom); + eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2); lna_gain = rt2x00_get_field16(eeprom, EEPROM_EXT_LNA2_A2); diff --git a/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch b/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch index 70c33a1d20..301928d283 100644 --- a/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch +++ b/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -5338,7 +5338,8 @@ static u8 rt2800_get_default_vgc(struct +@@ -5364,7 +5364,8 @@ static u8 rt2800_get_default_vgc(struct else vgc = 0x2e + rt2x00dev->lna_gain; } else { /* 5GHZ band */ @@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos vgc = 0x20 + (rt2x00dev->lna_gain * 5) / 3; else if (rt2x00_rt(rt2x00dev, RT5592)) vgc = 0x24 + (2 * rt2x00dev->lna_gain); -@@ -5358,7 +5359,8 @@ static inline void rt2800_set_vgc(struct +@@ -5384,7 +5385,8 @@ static inline void rt2800_set_vgc(struct { if (qual->vgc_level != vgc_level) { if (rt2x00_rt(rt2x00dev, RT3572) || @@ -30,7 +30,7 @@ Signed-off-by: Gabor Juhos rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, vgc_level); } else if (rt2x00_rt(rt2x00dev, RT5592)) { -@@ -5405,6 +5407,11 @@ void rt2800_link_tuner(struct rt2x00_dev +@@ -5431,6 +5433,11 @@ void rt2800_link_tuner(struct rt2x00_dev } break; diff --git a/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch b/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch index a2cfd896eb..4bbc7ae44e 100644 --- a/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch +++ b/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch @@ -10,8 +10,8 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -9074,7 +9074,8 @@ static int rt2800_validate_eeprom(struct - rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &word); +@@ -9098,7 +9098,8 @@ static int rt2800_validate_eeprom(struct + word = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2); if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG2_OFFSET2)) > 10) rt2x00_set_field16(&word, EEPROM_RSSI_BG2_OFFSET2, 0); - if (!rt2x00_rt(rt2x00dev, RT3593)) { @@ -20,8 +20,8 @@ Signed-off-by: Gabor Juhos if (rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0x00 || rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0xff) rt2x00_set_field16(&word, EEPROM_RSSI_BG2_LNA_A1, -@@ -9094,7 +9095,8 @@ static int rt2800_validate_eeprom(struct - rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &word); +@@ -9118,7 +9119,8 @@ static int rt2800_validate_eeprom(struct + word = rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2); if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A2_OFFSET2)) > 10) rt2x00_set_field16(&word, EEPROM_RSSI_A2_OFFSET2, 0); - if (!rt2x00_rt(rt2x00dev, RT3593)) { @@ -30,13 +30,13 @@ Signed-off-by: Gabor Juhos if (rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0x00 || rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0xff) rt2x00_set_field16(&word, EEPROM_RSSI_A2_LNA_A2, -@@ -9102,7 +9104,8 @@ static int rt2800_validate_eeprom(struct +@@ -9126,7 +9128,8 @@ static int rt2800_validate_eeprom(struct } rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word); - if (rt2x00_rt(rt2x00dev, RT3593)) { + if (rt2x00_rt(rt2x00dev, RT3593) || + rt2x00_rt(rt2x00dev, RT3883)) { - rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &word); + word = rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2); if (rt2x00_get_field16(word, EEPROM_EXT_LNA2_A1) == 0x00 || rt2x00_get_field16(word, EEPROM_EXT_LNA2_A1) == 0xff) diff --git a/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch b/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch index ac8b219efd..e752efd0ea 100644 --- a/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch +++ b/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -@@ -4332,6 +4332,9 @@ static u8 rt2800_compensate_txpower(stru +@@ -4354,6 +4354,9 @@ static u8 rt2800_compensate_txpower(stru if (rt2x00_rt(rt2x00dev, RT3593)) return min_t(u8, txpower, 0xc); diff --git a/package/kernel/mac80211/patches/600-23-rt2x00-rt2800mmio-add-a-workaround-for-spurious-TX_F.patch b/package/kernel/mac80211/patches/600-23-rt2x00-rt2800mmio-add-a-workaround-for-spurious-TX_F.patch index 7d8d2f5e13..342174f8d5 100644 --- a/package/kernel/mac80211/patches/600-23-rt2x00-rt2800mmio-add-a-workaround-for-spurious-TX_F.patch +++ b/package/kernel/mac80211/patches/600-23-rt2x00-rt2800mmio-add-a-workaround-for-spurious-TX_F.patch @@ -12,7 +12,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c -@@ -415,9 +415,9 @@ void rt2800mmio_autowake_tasklet(unsigne +@@ -424,9 +424,9 @@ void rt2800mmio_autowake_tasklet(unsigne } EXPORT_SYMBOL_GPL(rt2800mmio_autowake_tasklet); @@ -24,12 +24,12 @@ Signed-off-by: Gabor Juhos int i; /* -@@ -438,29 +438,77 @@ static void rt2800mmio_txstatus_interrup +@@ -447,29 +447,77 @@ static void rt2800mmio_txstatus_interrup * Since we have only one producer and one consumer we don't * need to lock the kfifo. */ - for (i = 0; i < rt2x00dev->tx->limit; i++) { -- rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO, &status); +- status = rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO); - - if (!rt2x00_get_field32(status, TX_STA_FIFO_VALID)) - break; @@ -47,7 +47,7 @@ Signed-off-by: Gabor Juhos + if (++i >= rt2x00dev->tx->limit) + break; + -+ rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO, &status); ++ status = rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO); + } while (rt2x00_get_field32(status, TX_STA_FIFO_VALID)); /* Schedule the tasklet for processing the tx status. */ @@ -87,7 +87,7 @@ Signed-off-by: Gabor Juhos - /* Read status and ACK all interrupts */ + /* Read status */ - rt2x00mmio_register_read(rt2x00dev, INT_SOURCE_CSR, ®); + reg = rt2x00mmio_register_read(rt2x00dev, INT_SOURCE_CSR); + + if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TX_FIFO_STATUS)) { + /* Due to unknown reason the hardware generates a @@ -96,7 +96,7 @@ Signed-off-by: Gabor Juhos + * here to see if we have to process the actual + * request. + */ -+ rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO, &txstatus); ++ txstatus = rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO); + if (rt2800mmio_txstatus_is_spurious(rt2x00dev, txstatus)) { + /* Remove the TX_FIFO_STATUS bit so it won't be + * processed in this turn. The hardware will @@ -111,7 +111,7 @@ Signed-off-by: Gabor Juhos rt2x00mmio_register_write(rt2x00dev, INT_SOURCE_CSR, reg); if (!reg) -@@ -477,7 +525,7 @@ irqreturn_t rt2800mmio_interrupt(int irq +@@ -486,7 +534,7 @@ irqreturn_t rt2800mmio_interrupt(int irq mask = ~reg; if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TX_FIFO_STATUS)) { diff --git a/package/kernel/mac80211/patches/602-rt2x00-introduce-rt2x00eeprom.patch b/package/kernel/mac80211/patches/602-rt2x00-introduce-rt2x00eeprom.patch index 435cc96fc5..b0c5d5ba37 100644 --- a/package/kernel/mac80211/patches/602-rt2x00-introduce-rt2x00eeprom.patch +++ b/package/kernel/mac80211/patches/602-rt2x00-introduce-rt2x00eeprom.patch @@ -1,6 +1,6 @@ ---- a/.local-symbols -+++ b/.local-symbols -@@ -336,6 +336,7 @@ RT2X00_LIB_FIRMWARE= +--- a/local-symbols ++++ b/local-symbols +@@ -296,6 +296,7 @@ RT2X00_LIB_FIRMWARE= RT2X00_LIB_CRYPTO= RT2X00_LIB_LEDS= RT2X00_LIB_DEBUGFS= @@ -55,9 +55,9 @@ +#include "rt2800.h" + struct rt2800_ops { - void (*register_read)(struct rt2x00_dev *rt2x00dev, - const unsigned int offset, u32 *value); -@@ -147,6 +149,15 @@ static inline int rt2800_read_eeprom(str + u32 (*register_read)(struct rt2x00_dev *rt2x00dev, + const unsigned int offset); +@@ -145,6 +147,15 @@ static inline int rt2800_read_eeprom(str { const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; @@ -127,7 +127,7 @@ DECLARE_KFIFO_PTR(txstatus_fifo, u32); --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -1418,6 +1418,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de +@@ -1421,6 +1421,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup); INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep); @@ -138,7 +138,7 @@ /* * Let the driver probe the device to detect the capabilities. */ -@@ -1556,6 +1560,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ +@@ -1562,6 +1566,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ * Free the driver data. */ kfree(rt2x00dev->drv_data); diff --git a/package/kernel/mac80211/patches/606-rt2x00-allow_disabling_bands_through_platform_data.patch b/package/kernel/mac80211/patches/606-rt2x00-allow_disabling_bands_through_platform_data.patch index c3cd2f4341..202dfc0b89 100644 --- a/package/kernel/mac80211/patches/606-rt2x00-allow_disabling_bands_through_platform_data.patch +++ b/package/kernel/mac80211/patches/606-rt2x00-allow_disabling_bands_through_platform_data.patch @@ -12,7 +12,7 @@ #endif /* _RT2X00_PLATFORM_H */ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -1023,6 +1023,22 @@ static int rt2x00lib_probe_hw_modes(stru +@@ -1026,6 +1026,22 @@ static int rt2x00lib_probe_hw_modes(stru unsigned int num_rates; unsigned int i; diff --git a/package/kernel/mac80211/patches/607-rt2x00-add_platform_data_mac_addr.patch b/package/kernel/mac80211/patches/607-rt2x00-add_platform_data_mac_addr.patch index bca7be8533..b8b0188040 100644 --- a/package/kernel/mac80211/patches/607-rt2x00-add_platform_data_mac_addr.patch +++ b/package/kernel/mac80211/patches/607-rt2x00-add_platform_data_mac_addr.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -1001,8 +1001,13 @@ static void rt2x00lib_rate(struct ieee80 +@@ -1004,8 +1004,13 @@ static void rt2x00lib_rate(struct ieee80 void rt2x00lib_set_mac_address(struct rt2x00_dev *rt2x00dev, u8 *eeprom_mac_addr) { diff --git a/package/kernel/mac80211/patches/608-rt2x00-allow_disabling_bands_through_dts.patch b/package/kernel/mac80211/patches/608-rt2x00-allow_disabling_bands_through_dts.patch index 724e626ca9..ca66aa8e3b 100644 --- a/package/kernel/mac80211/patches/608-rt2x00-allow_disabling_bands_through_dts.patch +++ b/package/kernel/mac80211/patches/608-rt2x00-allow_disabling_bands_through_dts.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -1027,6 +1027,16 @@ static int rt2x00lib_probe_hw_modes(stru +@@ -1030,6 +1030,16 @@ static int rt2x00lib_probe_hw_modes(stru struct ieee80211_rate *rates; unsigned int num_rates; unsigned int i; diff --git a/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch b/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch index 0236683d5f..ad70aa7826 100644 --- a/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch +++ b/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch @@ -8,7 +8,7 @@ #include "rt2x00.h" #include "rt2800lib.h" -@@ -9261,6 +9262,17 @@ static int rt2800_init_eeprom(struct rt2 +@@ -9285,6 +9286,17 @@ static int rt2800_init_eeprom(struct rt2 rt2800_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC); rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY); diff --git a/package/kernel/mac80211/patches/611-rt2x00-add-AP+STA-support.patch b/package/kernel/mac80211/patches/611-rt2x00-add-AP+STA-support.patch index 5ef5fc8def..062b18a63b 100644 --- a/package/kernel/mac80211/patches/611-rt2x00-add-AP+STA-support.patch +++ b/package/kernel/mac80211/patches/611-rt2x00-add-AP+STA-support.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -1358,7 +1358,7 @@ static inline void rt2x00lib_set_if_comb +@@ -1361,7 +1361,7 @@ static inline void rt2x00lib_set_if_comb */ if_limit = &rt2x00dev->if_limits_ap; if_limit->max = rt2x00dev->ops->max_ap_intf; diff --git a/package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch b/package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch new file mode 100644 index 0000000000..9fad80b672 --- /dev/null +++ b/package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch @@ -0,0 +1,118 @@ +From 9782a7f7488443568fa4d6088b73c9aff7eb8510 Mon Sep 17 00:00:00 2001 +From: Daniel Golle +Date: Wed, 19 Apr 2017 16:14:53 +0200 +Subject: [PATCH] rt2x00: add support for external PA on MT7620 +To: Stanislaw Gruszka +Cc: Helmut Schaa , + linux-wireless@vger.kernel.org, + Kalle Valo + +Signed-off-by: Daniel Golle +--- + drivers/net/wireless/ralink/rt2x00/rt2800.h | 1 + + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 70 +++++++++++++++++++++++++- + 2 files changed, 70 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -2749,6 +2749,7 @@ enum rt2800_eeprom_word { + #define EEPROM_NIC_CONF2_RX_STREAM FIELD16(0x000f) + #define EEPROM_NIC_CONF2_TX_STREAM FIELD16(0x00f0) + #define EEPROM_NIC_CONF2_CRYSTAL FIELD16(0x0600) ++#define EEPROM_NIC_CONF2_EXTERNAL_PA FIELD16(0xc000) + + /* + * EEPROM LNA +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -4120,6 +4120,61 @@ static void rt2800_config_channel(struct + rt2800_iq_calibrate(rt2x00dev, rf->channel); + } + ++ if (rt2x00_rt(rt2x00dev, RT6352)) { ++ if (test_bit(CAPABILITY_EXTERNAL_PA_TX0, ++ &rt2x00dev->cap_flags)) { ++ rt2x00_warn(rt2x00dev, "Using incomplete support for " \ ++ "external PA\n"); ++ reg = rt2800_register_read(rt2x00dev, RF_CONTROL3); ++ reg |= 0x00000101; ++ rt2800_register_write(rt2x00dev, RF_CONTROL3, reg); ++ ++ reg = rt2800_register_read(rt2x00dev, RF_BYPASS3); ++ reg |= 0x00000101; ++ rt2800_register_write(rt2x00dev, RF_BYPASS3, reg); ++ ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 43, 0x73); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 43, 0x73); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 44, 0x73); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 44, 0x73); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 45, 0x73); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 45, 0x73); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 46, 0x27); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 46, 0x27); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0xC8); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0xC8); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 48, 0xA4); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 48, 0xA4); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 49, 0x05); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 49, 0x05); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x27); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 55, 0xC8); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 55, 0xC8); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 56, 0xA4); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 56, 0xA4); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 57, 0x05); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 57, 0x05); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 58, 0x27); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 58, 0x27); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 59, 0xC8); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 59, 0xC8); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 60, 0xA4); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 60, 0xA4); ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 61, 0x05); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 61, 0x05); ++ rt2800_rfcsr_write_bank(rt2x00dev, 5, 05, 0x00); ++ rt2800_rfcsr_write_bank(rt2x00dev, 7, 05, 0x00); ++ ++ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_CORRECT, ++ 0x36303636); ++ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_ATTEN, ++ 0x6C6C6B6C); ++ rt2800_register_write(rt2x00dev, TX1_RF_GAIN_ATTEN, ++ 0x6C6C6B6C); ++ } ++ } ++ + bbp = rt2800_bbp_read(rt2x00dev, 4); + rt2x00_set_field8(&bbp, BBP4_BANDWIDTH, 2 * conf_is_ht40(conf)); + rt2800_bbp_write(rt2x00dev, 4, bbp); +@@ -9314,7 +9369,8 @@ static int rt2800_init_eeprom(struct rt2 + */ + eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1); + +- if (rt2x00_rt(rt2x00dev, RT3352)) { ++ if (rt2x00_rt(rt2x00dev, RT3352) || ++ rt2x00_rt(rt2x00dev, RT6352)) { + if (rt2x00_get_field16(eeprom, + EEPROM_NIC_CONF1_EXTERNAL_TX0_PA_3352)) + __set_bit(CAPABILITY_EXTERNAL_PA_TX0, +@@ -9325,6 +9381,18 @@ static int rt2800_init_eeprom(struct rt2 + &rt2x00dev->cap_flags); + } + ++ eeprom = rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF2); ++ ++ if (rt2x00_rt(rt2x00dev, RT6352) && eeprom != 0 && eeprom != 0xffff) { ++ if (rt2x00_get_field16(eeprom, ++ EEPROM_NIC_CONF2_EXTERNAL_PA)) { ++ __set_bit(CAPABILITY_EXTERNAL_PA_TX0, ++ &rt2x00dev->cap_flags); ++ __set_bit(CAPABILITY_EXTERNAL_PA_TX1, ++ &rt2x00dev->cap_flags); ++ } ++ } ++ + return 0; + } + diff --git a/package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch b/package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch new file mode 100644 index 0000000000..475fcbc223 --- /dev/null +++ b/package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch @@ -0,0 +1,132 @@ +From pozega.tomislav@gmail.com Thu May 18 12:42:27 2017 +Return-path: +Envelope-to: daniel@makrotopia.org +Delivery-date: Thu, 18 May 2017 12:42:27 +0200 +Received: from mail by fudo.makrotopia.org with sa-checked (Exim 4.88) + (envelope-from ) + id 1dBIsy-00088b-PU + for daniel@makrotopia.org; Thu, 18 May 2017 12:42:27 +0200 +X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on fudo.makrotopia.org +X-Spam-Level: +X-Spam-Status: No, score=-0.8 required=2.5 tests=DKIM_SIGNED,DKIM_VALID, + DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW shortcircuit=no + autolearn=ham autolearn_force=no version=3.4.1 +Received: from mail-oi0-x22a.google.com ([2607:f8b0:4003:c06::22a]) + by fudo.makrotopia.org with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) + (Exim 4.88) + (envelope-from ) + id 1dBIsv-00088Q-Dq + for daniel@makrotopia.org; Thu, 18 May 2017 12:42:24 +0200 +Received: by mail-oi0-x22a.google.com with SMTP id w10so48782189oif.0 + for ; Thu, 18 May 2017 03:42:21 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20161025; + h=mime-version:from:date:message-id:subject:to; + bh=9dF7PHDassYY74+N6dAhmsL/B9i5oG3SEuMzHuazhJo=; + b=cBGJ44v+o4ASyCPmHCBRMmRYnJCv4Gx6lzDiScKn0XqYmNHYpZTPg5cAY1GZFUhHdz + 9QT5fzhJKFikBliSuJc/7/pI8KzvyEAdvawiWA7/5fbeiTZ+zjJnzRVGezqkYDKxjR6u + 7TsoJxR2/oFwo7bOFlThhee+Nwf7qaX8AVal7JdkqovekX79JQ5vsKAa4LapDp7Cl0wr + KCh0WRUHGEgpTLJFyQ3ThPmLqc8bhmu+6/V/LJ53VOY7uksZHMhvaKkk9vDCoOuPnBMK + Cj2/c7z9RTErz/xlHg6HxnBe/pPc31XUsuPJUleOEdZASczPsreEEKacKCONVlP1wjAB + iOkA== +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:mime-version:from:date:message-id:subject:to; + bh=9dF7PHDassYY74+N6dAhmsL/B9i5oG3SEuMzHuazhJo=; + b=LJAe4ZwS9aNJypROW7j+I9aNfRBWyDYy0c8ABnDbLrIoF9P2AA/Vs/Cli5f7GjaAxr + 1JCx602ach+7R7QjQq/nqNmLuhRCfSvB0TGrq4R4v+CJ4ADO541+PddnFiU1dlIXQRP2 + TE2FOydSO0FGJBMg+kY0eFiidBtYj1T5x7IHAhQzufiuiF6/1xZS8h61CYJjLzt/aR5y + JxOxsVvu3W2YQ0T5wKmAPlKtarFH6ZZgs446bRYt1MX5KAWzIoBM1+IPMMv7lSCpCaDR + fwH05aDyaJW2IzXH5R9Tq7gGYycYjx/SnO7JupJXJVvOzKgBJxp60JwJhCfqCwESDuuD + 8nNA== +X-Gm-Message-State: AODbwcDOpdFZgbxAxFsVsqFdCBN3pRGDvEclZ1heVg2byNZ9BuG5kqJg + GvZ9x4NGt0v8lVGa3esDw0N1KiJENg== +X-Received: by 10.157.17.217 with SMTP id y25mr1310632oty.137.1495104134863; + Thu, 18 May 2017 03:42:14 -0700 (PDT) +MIME-Version: 1.0 +Received: by 10.157.0.105 with HTTP; Thu, 18 May 2017 03:42:14 -0700 (PDT) +From: Tom Psyborg +Date: Thu, 18 May 2017 12:42:14 +0200 +Message-ID: +Subject: [PATCH] rt2x00: remove unneccesary code +To: linux-wireless , + Linux Kernel Mailing List , Arnd Bergmann , + Jes Sorensen , Stanislaw Gruszka , + David Miller , Helmut Schaa , + Kalle Valo , Daniel Golle , + Mathias Kresin , Johannes Berg , + Serge Vasilugin , Roman Yeryomin , + Networking +Content-Type: multipart/alternative; boundary="94eb2c1905d2dc6361054fca0e62" +Status: RO +Content-Length: 11079 +Lines: 178 + +--94eb2c1905d2dc6361054fca0e62 +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: quoted-printable + +Use chanreg and dccal helpers to reduce the size of ePA code. + +Signed-off-by: Tomislav Po=C5=BEega +Signed-off-by: Daniel Golle +[daniel@makrotopia.org: fixed white-space so patch applies] +--- + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -4133,38 +4133,22 @@ static void rt2800_config_channel(struct + reg |= 0x00000101; + rt2800_register_write(rt2x00dev, RF_BYPASS3, reg); + +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 43, 0x73); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 43, 0x73); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 44, 0x73); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 44, 0x73); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 45, 0x73); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 45, 0x73); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 46, 0x27); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 46, 0x27); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0xC8); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0xC8); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 48, 0xA4); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 48, 0xA4); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 49, 0x05); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 49, 0x05); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x27); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 55, 0xC8); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 55, 0xC8); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 56, 0xA4); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 56, 0xA4); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 57, 0x05); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 57, 0x05); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 58, 0x27); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 58, 0x27); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 59, 0xC8); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 59, 0xC8); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 60, 0xA4); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 60, 0xA4); +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 61, 0x05); +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 61, 0x05); +- rt2800_rfcsr_write_bank(rt2x00dev, 5, 05, 0x00); +- rt2800_rfcsr_write_bank(rt2x00dev, 7, 05, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0x73); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0x73); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0x73); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0xC8); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xA4); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 49, 0x05); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x27); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0xC8); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xA4); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x05); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x27); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0xC8); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0xA4); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 61, 0x05); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 05, 0x00); + + rt2800_register_write(rt2x00dev, TX0_RF_GAIN_CORRECT, + 0x36303636); diff --git a/package/kernel/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch b/package/kernel/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch new file mode 100644 index 0000000000..a901a44ba4 --- /dev/null +++ b/package/kernel/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch @@ -0,0 +1,10 @@ +--- a/drivers/net/wireless/marvell/mwl8k.c ++++ b/drivers/net/wireless/marvell/mwl8k.c +@@ -5681,6 +5681,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw") + MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API)); + + static const struct pci_device_id mwl8k_pci_id_table[] = { ++ { PCI_VDEVICE(MARVELL, 0x2a02), .driver_data = MWL8363, }, + { PCI_VDEVICE(MARVELL, 0x2a0a), .driver_data = MWL8363, }, + { PCI_VDEVICE(MARVELL, 0x2a0c), .driver_data = MWL8363, }, + { PCI_VDEVICE(MARVELL, 0x2a24), .driver_data = MWL8363, }, diff --git a/package/kernel/mac80211/patches/940-mwl8k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/940-mwl8k_init_devices_synchronously.patch new file mode 100644 index 0000000000..a958c78b43 --- /dev/null +++ b/package/kernel/mac80211/patches/940-mwl8k_init_devices_synchronously.patch @@ -0,0 +1,20 @@ +--- a/drivers/net/wireless/marvell/mwl8k.c ++++ b/drivers/net/wireless/marvell/mwl8k.c +@@ -6266,6 +6266,8 @@ static int mwl8k_probe(struct pci_dev *p + + priv->running_bsses = 0; + ++ wait_for_completion(&priv->firmware_loading_complete); ++ + return rc; + + err_stop_firmware: +@@ -6299,8 +6301,6 @@ static void mwl8k_remove(struct pci_dev + return; + priv = hw->priv; + +- wait_for_completion(&priv->firmware_loading_complete); +- + if (priv->fw_state == FW_STATE_ERROR) { + mwl8k_hw_reset(priv); + goto unmap; diff --git a/package/kernel/mac80211/patches/970-rsi-fix-kbuild-reported-build-errors-with-CONFIG_PM-off b/package/kernel/mac80211/patches/970-rsi-fix-kbuild-reported-build-errors-with-CONFIG_PM-off new file mode 100644 index 0000000000..3b139ee326 --- /dev/null +++ b/package/kernel/mac80211/patches/970-rsi-fix-kbuild-reported-build-errors-with-CONFIG_PM-off @@ -0,0 +1,93 @@ +From e6b3b2ed3d270b3c7080c9cf7d28636dc74b0387 Mon Sep 17 00:00:00 2001 +From: Amitkumar Karwar +Date: Wed, 1 Nov 2017 17:42:45 +0530 +Subject: rsi: fix kbuild reported build errors with CONFIG_PM off + +Some wowlan related code was outside CONFIG_PM flag which caused these +build errors. They are fixed by moving that code under CONFIG_PM flag. + +Reported-by: kbuild test robot +Fixes: ef71ed0608c ("rsi: sdio: Add WOWLAN support for S5 shutdown state") +Fixes: a24e35fcee0 ("rsi: sdio: Add WOWLAN support for S4 hibernate state") +Fixes: e1ced6422a3 ("rsi: sdio: add WOWLAN support for S3 suspend state") +Signed-off-by: Amitkumar Karwar +Signed-off-by: Kalle Valo +--- + drivers/net/wireless/rsi/rsi_91x_mac80211.c | 5 ++++- + drivers/net/wireless/rsi/rsi_91x_mgmt.c | 2 ++ + drivers/net/wireless/rsi/rsi_common.h | 2 ++ + drivers/net/wireless/rsi/rsi_mgmt.h | 2 ++ + 4 files changed, 10 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/rsi/rsi_91x_mac80211.c ++++ b/drivers/net/wireless/rsi/rsi_91x_mac80211.c +@@ -1752,6 +1752,7 @@ static int rsi_mac80211_cancel_roc(struc + return 0; + } + ++#ifdef CONFIG_PM + static const struct wiphy_wowlan_support rsi_wowlan_support = { + .flags = WIPHY_WOWLAN_ANY | + WIPHY_WOWLAN_MAGIC_PKT | +@@ -1824,7 +1825,6 @@ int rsi_config_wowlan(struct rsi_hw *ada + } + EXPORT_SYMBOL(rsi_config_wowlan); + +-#ifdef CONFIG_PM + static int rsi_mac80211_suspend(struct ieee80211_hw *hw, + struct cfg80211_wowlan *wowlan) + { +@@ -1977,7 +1977,10 @@ int rsi_mac80211_attach(struct rsi_commo + wiphy->features |= NL80211_FEATURE_INACTIVITY_TIMER; + wiphy->reg_notifier = rsi_reg_notify; + ++#ifdef CONFIG_PM + wiphy->wowlan = &rsi_wowlan_support; ++#endif ++ + wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST); + + /* Wi-Fi direct parameters */ +--- a/drivers/net/wireless/rsi/rsi_91x_mgmt.c ++++ b/drivers/net/wireless/rsi/rsi_91x_mgmt.c +@@ -1597,6 +1597,7 @@ static int rsi_send_beacon(struct rsi_co + return 0; + } + ++#ifdef CONFIG_PM + int rsi_send_wowlan_request(struct rsi_common *common, u16 flags, + u16 sleep_status) + { +@@ -1630,6 +1631,7 @@ int rsi_send_wowlan_request(struct rsi_c + + return rsi_send_internal_mgmt_frame(common, skb); + } ++#endif + + /** + * rsi_handle_ta_confirm_type() - This function handles the confirm frames. +--- a/drivers/net/wireless/rsi/rsi_common.h ++++ b/drivers/net/wireless/rsi/rsi_common.h +@@ -83,7 +83,9 @@ u16 rsi_get_connected_channel(struct iee + struct rsi_hw *rsi_91x_init(void); + void rsi_91x_deinit(struct rsi_hw *adapter); + int rsi_read_pkt(struct rsi_common *common, s32 rcv_pkt_len); ++#ifdef CONFIG_PM + int rsi_config_wowlan(struct rsi_hw *adapter, struct cfg80211_wowlan *wowlan); ++#endif + struct rsi_sta *rsi_find_sta(struct rsi_common *common, u8 *mac_addr); + struct ieee80211_vif *rsi_get_vif(struct rsi_hw *adapter, u8 *mac); + void rsi_roc_timeout(struct timer_list *t); +--- a/drivers/net/wireless/rsi/rsi_mgmt.h ++++ b/drivers/net/wireless/rsi/rsi_mgmt.h +@@ -668,8 +668,10 @@ int rsi_band_check(struct rsi_common *co + int rsi_send_rx_filter_frame(struct rsi_common *common, u16 rx_filter_word); + int rsi_send_radio_params_update(struct rsi_common *common); + int rsi_set_antenna(struct rsi_common *common, u8 antenna); ++#ifdef CONFIG_PM + int rsi_send_wowlan_request(struct rsi_common *common, u16 flags, + u16 sleep_status); ++#endif + int rsi_send_ps_request(struct rsi_hw *adapter, bool enable, + struct ieee80211_vif *vif); + #endif diff --git a/package/kernel/mac80211/patches/971-rsi-move-rsi_sdio_reinit_device-out-of-CONFIG_PM.patch b/package/kernel/mac80211/patches/971-rsi-move-rsi_sdio_reinit_device-out-of-CONFIG_PM.patch new file mode 100644 index 0000000000..499b4ee7fc --- /dev/null +++ b/package/kernel/mac80211/patches/971-rsi-move-rsi_sdio_reinit_device-out-of-CONFIG_PM.patch @@ -0,0 +1,96 @@ +From 39f1332c526cd9d6de59a72520e8334e54b62cda Mon Sep 17 00:00:00 2001 +From: Amitkumar Karwar +Date: Wed, 1 Nov 2017 17:42:44 +0530 +Subject: rsi: move rsi_sdio_reinit_device() out of CONFIG_PM + +This function is generic. It doesn't contain wowlan specific code. +It should not be under CONFIG_PM. This patch resolves compilation +errors observed when CONFIG_PM flag is disabled. + +Reported-by: kbuild test robot +Fixes: ef71ed0608c ("rsi: sdio: Add WOWLAN support for S5 shutdown state") +Fixes: a24e35fcee0 ("rsi: sdio: Add WOWLAN support for S4 hibernate state") +Fixes: e1ced6422a3 ("rsi: sdio: add WOWLAN support for S3 suspend state") +Signed-off-by: Amitkumar Karwar +Signed-off-by: Kalle Valo +--- + drivers/net/wireless/rsi/rsi_91x_sdio.c | 52 ++++++++++++++++----------------- + drivers/net/wireless/rsi/rsi_sdio.h | 1 - + 2 files changed, 26 insertions(+), 27 deletions(-) + +--- a/drivers/net/wireless/rsi/rsi_91x_sdio.c ++++ b/drivers/net/wireless/rsi/rsi_91x_sdio.c +@@ -871,6 +871,32 @@ fail: + return status; + } + ++static int rsi_sdio_reinit_device(struct rsi_hw *adapter) ++{ ++ struct rsi_91x_sdiodev *sdev = adapter->rsi_dev; ++ struct sdio_func *pfunction = sdev->pfunction; ++ int ii; ++ ++ for (ii = 0; ii < NUM_SOFT_QUEUES; ii++) ++ skb_queue_purge(&adapter->priv->tx_queue[ii]); ++ ++ /* Initialize device again */ ++ sdio_claim_host(pfunction); ++ ++ sdio_release_irq(pfunction); ++ rsi_reset_card(pfunction); ++ ++ sdio_enable_func(pfunction); ++ rsi_setupcard(adapter); ++ rsi_init_sdio_slave_regs(adapter); ++ sdio_claim_irq(pfunction, rsi_handle_interrupt); ++ rsi_hal_device_init(adapter); ++ ++ sdio_release_host(pfunction); ++ ++ return 0; ++} ++ + static struct rsi_host_intf_ops sdio_host_intf_ops = { + .write_pkt = rsi_sdio_host_intf_write_pkt, + .read_pkt = rsi_sdio_host_intf_read_pkt, +@@ -1281,32 +1307,6 @@ static void rsi_shutdown(struct device * + rsi_dbg(INFO_ZONE, "***** RSI module shut down *****\n"); + } + +-int rsi_sdio_reinit_device(struct rsi_hw *adapter) +-{ +- struct rsi_91x_sdiodev *sdev = adapter->rsi_dev; +- struct sdio_func *pfunction = sdev->pfunction; +- int ii; +- +- for (ii = 0; ii < NUM_SOFT_QUEUES; ii++) +- skb_queue_purge(&adapter->priv->tx_queue[ii]); +- +- /* Initialize device again */ +- sdio_claim_host(pfunction); +- +- sdio_release_irq(pfunction); +- rsi_reset_card(pfunction); +- +- sdio_enable_func(pfunction); +- rsi_setupcard(adapter); +- rsi_init_sdio_slave_regs(adapter); +- sdio_claim_irq(pfunction, rsi_handle_interrupt); +- rsi_hal_device_init(adapter); +- +- sdio_release_host(pfunction); +- +- return 0; +-} +- + static int rsi_restore(struct device *dev) + { + struct sdio_func *pfunction = dev_to_sdio_func(dev); +--- a/drivers/net/wireless/rsi/rsi_sdio.h ++++ b/drivers/net/wireless/rsi/rsi_sdio.h +@@ -131,5 +131,4 @@ int rsi_sdio_master_access_msword(struct + void rsi_sdio_ack_intr(struct rsi_hw *adapter, u8 int_bit); + int rsi_sdio_determine_event_timeout(struct rsi_hw *adapter); + int rsi_sdio_check_buffer_status(struct rsi_hw *adapter, u8 q_num); +-int rsi_sdio_reinit_device(struct rsi_hw *adapter); + #endif diff --git a/package/kernel/om-watchdog/files/om-watchdog.init b/package/kernel/om-watchdog/files/om-watchdog.init index 906ee665fd..10eb55ccc2 100644 --- a/package/kernel/om-watchdog/files/om-watchdog.init +++ b/package/kernel/om-watchdog/files/om-watchdog.init @@ -11,10 +11,9 @@ NAME=om-watchdog PROG=/sbin/om-watchdog get_gpio() { - if [ -r /lib/ar71xx.sh ]; then - . /lib/ar71xx.sh - local board=$(ar71xx_board_name) + local board=$(board_name) + if [ -r /lib/ar71xx.sh ]; then case "$board" in "a40"|\ "a60"|\ @@ -49,9 +48,6 @@ get_gpio() { ;; esac elif [ -r /lib/ramips.sh ]; then - . /lib/ramips.sh - local board=$(ramips_board_name) - case "$board" in "rut5xx") return 11 diff --git a/package/kernel/rotary-gpio-custom/Makefile b/package/kernel/rotary-gpio-custom/Makefile index f338fe7ad0..f758567365 100644 --- a/package/kernel/rotary-gpio-custom/Makefile +++ b/package/kernel/rotary-gpio-custom/Makefile @@ -16,7 +16,7 @@ include $(INCLUDE_DIR)/package.mk define KernelPackage/rotary-gpio-custom SUBMENU:=Other modules TITLE:=Custom GPIO-based rotary encoder device - DEPENDS:=@GPIO_SUPPORT +kmod-input-gpio-encoder + DEPENDS:=@GPIO_SUPPORT +kmod-input-gpio-encoder @LINUX_3_18||LINUX_4_4 FILES:=$(PKG_BUILD_DIR)/rotary-gpio-custom.ko KCONFIG:= endef @@ -33,8 +33,7 @@ EXTRA_CFLAGS:= \ $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \ MAKE_OPTS:= \ - ARCH="$(LINUX_KARCH)" \ - CROSS_COMPILE="$(TARGET_CROSS)" \ + $(KERNEL_MAKE_FLAGS) \ SUBDIRS="$(PKG_BUILD_DIR)" \ EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ $(EXTRA_KCONFIG) diff --git a/package/kernel/rtc-rv5c386a/Makefile b/package/kernel/rtc-rv5c386a/Makefile new file mode 100644 index 0000000000..a268ad508c --- /dev/null +++ b/package/kernel/rtc-rv5c386a/Makefile @@ -0,0 +1,32 @@ +# +# Copyright (C) 2006-2009 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=rtc-rv5c386a +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/rtc-rv5c386a + SUBMENU:=Other modules + DEPENDS:=@TARGET_brcm47xx @!IN_SDK + TITLE:=Driver for RTC RV5C386A (used in WL-700gE and WL-HDD) + AUTOLOAD:=$(call AutoLoad,70,rtc) + FILES:=$(PKG_BUILD_DIR)/rtc.ko +endef + +define Build/Compile + $(MAKE) -C "$(LINUX_DIR)" \ + $(KERNEL_MAKE_FLAGS) \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + EXTRA_CFLAGS="$(BUILDFLAGS)" \ + modules +endef + +$(eval $(call KernelPackage,rtc-rv5c386a)) diff --git a/package/kernel/rtc-rv5c386a/src/Makefile b/package/kernel/rtc-rv5c386a/src/Makefile new file mode 100644 index 0000000000..eeb0430774 --- /dev/null +++ b/package/kernel/rtc-rv5c386a/src/Makefile @@ -0,0 +1,18 @@ +# $Id$ +# +# Makefile for Real Time Clock driver for WL-HDD +# +# Copyright (C) 2007 Andreas Engel +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version +# 2 of the License, or (at your option) any later version. +# + +obj-m := rtc.o + +ifeq ($(MAKING_MODULES),1) + +-include $(TOPDIR)/Rules.make +endif diff --git a/package/kernel/rtc-rv5c386a/src/rtc.c b/package/kernel/rtc-rv5c386a/src/rtc.c new file mode 100644 index 0000000000..96dc56eb36 --- /dev/null +++ b/package/kernel/rtc-rv5c386a/src/rtc.c @@ -0,0 +1,613 @@ +/* + * Real Time Clock driver for WL-HDD + * + * Copyright (C) 2007 Andreas Engel + * + * Hacked together mostly by copying the relevant code parts from: + * drivers/i2c/i2c-bcm5365.c + * drivers/i2c/i2c-algo-bit.c + * drivers/char/rtc.c + * + * Note 1: + * This module uses the standard char device (10,135), while the Asus module + * rtcdrv.o uses (12,0). So, both can coexist which might be handy during + * development (but see the comment in rtc_open()). + * + * Note 2: + * You might need to set the clock once after loading the driver the first + * time because the driver switches the chip into 24h mode if it is running + * in 12h mode. + * + * Usage: + * For compatibility reasons with the original asus driver, the time can be + * read and set via the /dev/rtc device entry. The only accepted data format + * is "YYYY:MM:DD:W:HH:MM:SS\n". See OpenWrt wiki for a script which handles + * this format. + * + * In addition, this driver supports the standard ioctl() calls for setting + * and reading the hardware clock, so the ordinary hwclock utility can also + * be used. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. + * + * TODO: + * - add a /proc/driver/rtc interface? + * - make the battery failure bit available through the /proc interface? + * + * $Id: rtc.c 7 2007-05-25 19:37:01Z ae $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0) +#include +#endif + +#include +#include + +#define RTC_IS_OPEN 0x01 /* Means /dev/rtc is in use. */ + +/* Can be changed via a module parameter. */ +static int rtc_debug = 0; + +static unsigned long rtc_status = 0; /* Bitmapped status byte. */ + +/* These settings are platform dependents. */ +unsigned int sda_index = 0; +unsigned int scl_index = 0; + +#define I2C_READ_MASK 1 +#define I2C_WRITE_MASK 0 + +#define I2C_ACK 1 +#define I2C_NAK 0 + +#define RTC_EPOCH 1900 +#define RTC_I2C_ADDRESS (0x32 << 1) +#define RTC_24HOUR_MODE_MASK 0x20 +#define RTC_PM_MASK 0x20 +#define RTC_VDET_MASK 0x40 +#define RTC_Y2K_MASK 0x80 + +/* + * Delay in microseconds for generating the pulses on the I2C bus. We use + * a rather conservative setting here. See datasheet of the RTC chip. + */ +#define ADAP_DELAY 50 + +/* Avoid spurious compiler warnings. */ +#define UNUSED __attribute__((unused)) + +MODULE_AUTHOR("Andreas Engel"); +MODULE_LICENSE("GPL"); + +/* Test stolen from switch-adm.c. */ +module_param(rtc_debug, int, 0); + +static inline void sdalo(void) +{ + gpio_direction_output(sda_index, 1); + udelay(ADAP_DELAY); +} + +static inline void sdahi(void) +{ + gpio_direction_input(sda_index); + udelay(ADAP_DELAY); +} + +static inline void scllo(void) +{ + gpio_direction_output(scl_index, 1); + udelay(ADAP_DELAY); +} + +static inline int getscl(void) +{ + return (gpio_get_value(scl_index)); +} + +static inline int getsda(void) +{ + return (gpio_get_value(sda_index)); +} + +/* + * We shouldn't simply set the SCL pin to high. Like SDA, the SCL line is + * bidirectional too. According to the I2C spec, the slave is allowed to + * pull down the SCL line to slow down the clock, so we need to check this. + * Generally, we'd need a timeout here, but in our case, we just check the + * line, assuming the RTC chip behaves well. + */ +static int sclhi(void) +{ + gpio_direction_input(scl_index); + udelay(ADAP_DELAY); + if (!getscl()) { + printk(KERN_ERR "SCL pin should be low\n"); + return -ETIMEDOUT; + } + return 0; +} + +static void i2c_start(void) +{ + sdalo(); + scllo(); +} + +static void i2c_stop(void) +{ + sdalo(); + sclhi(); + sdahi(); +} + +static int i2c_outb(int c) +{ + int i; + int ack; + + /* assert: scl is low */ + for (i = 7; i >= 0; i--) { + if (c & ( 1 << i )) { + sdahi(); + } else { + sdalo(); + } + if (sclhi() < 0) { /* timed out */ + sdahi(); /* we don't want to block the net */ + return -ETIMEDOUT; + }; + scllo(); + } + sdahi(); + if (sclhi() < 0) { + return -ETIMEDOUT; + }; + /* read ack: SDA should be pulled down by slave */ + ack = getsda() == 0; /* ack: sda is pulled low ->success. */ + scllo(); + + if (rtc_debug) + printk(KERN_DEBUG "i2c_outb(0x%02x) -> %s\n", + c, ack ? "ACK": "NAK"); + + return ack; /* return 1 if device acked */ + /* assert: scl is low (sda undef) */ +} + +static int i2c_inb(int ack) +{ + int i; + unsigned int indata = 0; + + /* assert: scl is low */ + + sdahi(); + for (i = 0; i < 8; i++) { + if (sclhi() < 0) { + return -ETIMEDOUT; + }; + indata *= 2; + if (getsda()) + indata |= 0x01; + scllo(); + } + if (ack) { + sdalo(); + } else { + sdahi(); + } + + if (sclhi() < 0) { + sdahi(); + return -ETIMEDOUT; + } + scllo(); + sdahi(); + + if (rtc_debug) + printk(KERN_DEBUG "i2c_inb() -> 0x%02x\n", indata); + + /* assert: scl is low */ + return indata & 0xff; +} + +static void i2c_init(void) +{ + /* no gpio_control for EXTIF */ + // ssb_gpio_control(&ssb, sda_mask | scl_mask, 0); + + gpio_set_value(sda_index, 0); + gpio_set_value(scl_index, 0); + sdahi(); + sclhi(); +} + +static int rtc_open(UNUSED struct inode *inode, UNUSED struct file *filp) +{ + spin_lock_irq(&rtc_lock); + + if (rtc_status & RTC_IS_OPEN) { + spin_unlock_irq(&rtc_lock); + return -EBUSY; + } + + rtc_status |= RTC_IS_OPEN; + + /* + * The following call is only necessary if we use both this driver and + * the proprietary one from asus at the same time (which, b.t.w. only + * makes sense during development). Otherwise, each access via the asus + * driver will make access via this driver impossible. + */ + i2c_init(); + + spin_unlock_irq(&rtc_lock); + + return 0; +} + +static int rtc_release(UNUSED struct inode *inode, UNUSED struct file *filp) +{ + /* No need for locking here. */ + rtc_status &= ~RTC_IS_OPEN; + return 0; +} + +static int from_bcd(int bcdnum) +{ + int fac, num = 0; + + for (fac = 1; bcdnum; fac *= 10) { + num += (bcdnum % 16) * fac; + bcdnum /= 16; + } + + return num; +} + +static int to_bcd(int decnum) +{ + int fac, num = 0; + + for (fac = 1; decnum; fac *= 16) { + num += (decnum % 10) * fac; + decnum /= 10; + } + + return num; +} + +static void get_rtc_time(struct rtc_time *rtc_tm) +{ + int cr2; + + /* + * Read date and time from the RTC. We use read method (3). + */ + + spin_lock_irq(&rtc_lock); + i2c_start(); + i2c_outb(RTC_I2C_ADDRESS | I2C_READ_MASK); + cr2 = i2c_inb(I2C_ACK); + rtc_tm->tm_sec = i2c_inb(I2C_ACK); + rtc_tm->tm_min = i2c_inb(I2C_ACK); + rtc_tm->tm_hour = i2c_inb(I2C_ACK); + rtc_tm->tm_wday = i2c_inb(I2C_ACK); + rtc_tm->tm_mday = i2c_inb(I2C_ACK); + rtc_tm->tm_mon = i2c_inb(I2C_ACK); + rtc_tm->tm_year = i2c_inb(I2C_NAK); + i2c_stop(); + spin_unlock_irq(&rtc_lock); + + if (cr2 & RTC_VDET_MASK) { + printk(KERN_WARNING "***RTC BATTERY FAILURE***\n"); + } + + /* Handle century bit */ + if (rtc_tm->tm_mon & RTC_Y2K_MASK) { + rtc_tm->tm_mon &= ~RTC_Y2K_MASK; + rtc_tm->tm_year += 0x100; + } + + rtc_tm->tm_sec = from_bcd(rtc_tm->tm_sec); + rtc_tm->tm_min = from_bcd(rtc_tm->tm_min); + rtc_tm->tm_hour = from_bcd(rtc_tm->tm_hour); + rtc_tm->tm_mday = from_bcd(rtc_tm->tm_mday); + rtc_tm->tm_mon = from_bcd(rtc_tm->tm_mon) - 1; + rtc_tm->tm_year = from_bcd(rtc_tm->tm_year); + + rtc_tm->tm_isdst = -1; /* DST not known */ +} + +static void set_rtc_time(struct rtc_time *rtc_tm) +{ + rtc_tm->tm_sec = to_bcd(rtc_tm->tm_sec); + rtc_tm->tm_min = to_bcd(rtc_tm->tm_min); + rtc_tm->tm_hour = to_bcd(rtc_tm->tm_hour); + rtc_tm->tm_mday = to_bcd(rtc_tm->tm_mday); + rtc_tm->tm_mon = to_bcd(rtc_tm->tm_mon + 1); + rtc_tm->tm_year = to_bcd(rtc_tm->tm_year); + + if (rtc_tm->tm_year >= 0x100) { + rtc_tm->tm_year -= 0x100; + rtc_tm->tm_mon |= RTC_Y2K_MASK; + } + + spin_lock_irq(&rtc_lock); + i2c_start(); + i2c_outb(RTC_I2C_ADDRESS | I2C_WRITE_MASK); + i2c_outb(0x00); /* set starting register to 0 (=seconds) */ + i2c_outb(rtc_tm->tm_sec); + i2c_outb(rtc_tm->tm_min); + i2c_outb(rtc_tm->tm_hour); + i2c_outb(rtc_tm->tm_wday); + i2c_outb(rtc_tm->tm_mday); + i2c_outb(rtc_tm->tm_mon); + i2c_outb(rtc_tm->tm_year); + i2c_stop(); + spin_unlock_irq(&rtc_lock); +} + +static ssize_t rtc_write(UNUSED struct file *filp, const char *buf, + size_t count, loff_t *ppos) +{ + struct rtc_time rtc_tm; + char buffer[23]; + char *p; + + if (!capable(CAP_SYS_TIME)) + return -EACCES; + + if (ppos != &filp->f_pos) + return -ESPIPE; + + /* + * For simplicity, the only acceptable format is: + * YYYY:MM:DD:W:HH:MM:SS\n + */ + + if (count != 22) + goto err_out; + + if (copy_from_user(buffer, buf, count)) + return -EFAULT; + + buffer[sizeof(buffer)-1] = '\0'; + + p = &buffer[0]; + + rtc_tm.tm_year = simple_strtoul(p, &p, 10); + if (*p++ != ':') goto err_out; + + rtc_tm.tm_mon = simple_strtoul(p, &p, 10) - 1; + if (*p++ != ':') goto err_out; + + rtc_tm.tm_mday = simple_strtoul(p, &p, 10); + if (*p++ != ':') goto err_out; + + rtc_tm.tm_wday = simple_strtoul(p, &p, 10); + if (*p++ != ':') goto err_out; + + rtc_tm.tm_hour = simple_strtoul(p, &p, 10); + if (*p++ != ':') goto err_out; + + rtc_tm.tm_min = simple_strtoul(p, &p, 10); + if (*p++ != ':') goto err_out; + + rtc_tm.tm_sec = simple_strtoul(p, &p, 10); + if (*p != '\n') goto err_out; + + rtc_tm.tm_year -= RTC_EPOCH; + + set_rtc_time(&rtc_tm); + + *ppos += count; + + return count; + + err_out: + printk(KERN_ERR "invalid format: use YYYY:MM:DD:W:HH:MM:SS\\n\n"); + return -EINVAL; +} + + +static ssize_t rtc_read(UNUSED struct file *filp, char *buf, size_t count, + loff_t *ppos) +{ + char wbuf[23]; + struct rtc_time tm; + ssize_t len; + + if (count == 0 || *ppos != 0) + return 0; + + get_rtc_time(&tm); + + len = sprintf(wbuf, "%04d:%02d:%02d:%d:%02d:%02d:%02d\n", + tm.tm_year + RTC_EPOCH, + tm.tm_mon + 1, + tm.tm_mday, + tm.tm_wday, + tm.tm_hour, + tm.tm_min, + tm.tm_sec); + + if (len > (ssize_t)count) + len = count; + + if (copy_to_user(buf, wbuf, len)) + return -EFAULT; + + *ppos += len; + + return len; +} + +static int rtc_do_ioctl(unsigned int cmd, unsigned long arg) +{ + struct rtc_time rtc_tm; + + switch (cmd) { + case RTC_RD_TIME: + memset(&rtc_tm, 0, sizeof(struct rtc_time)); + get_rtc_time(&rtc_tm); + if (copy_to_user((void *)arg, &rtc_tm, sizeof(rtc_tm))) + return -EFAULT; + break; + + case RTC_SET_TIME: + if (!capable(CAP_SYS_TIME)) + return -EACCES; + + if (copy_from_user(&rtc_tm, (struct rtc_time *)arg, + sizeof(struct rtc_time))) + return -EFAULT; + + set_rtc_time(&rtc_tm); + break; + + default: + return -ENOTTY; + } + + return 0; +} + +static long rtc_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long ret; + ret = rtc_do_ioctl(cmd, arg); + return ret; +} + +static const struct file_operations rtc_fops = { + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = rtc_read, + .write = rtc_write, + .unlocked_ioctl = rtc_ioctl, + .open = rtc_open, + .release = rtc_release, +}; + +static struct miscdevice rtc_dev = { + .minor = RTC_MINOR, + .name = "rtc", + .fops = &rtc_fops, +}; + +/* Savagely ripped from diag.c. */ +static inline int startswith (char *source, char *cmp) +{ + return !strncmp(source, cmp, strlen(cmp)); +} + +static void platform_detect(void) +{ + char buf[20]; + int et0phyaddr, et1phyaddr; + + /* Based on "model_no". */ + if (bcm47xx_nvram_getenv("model_no", buf, sizeof(buf)) >= 0) { + if (startswith(buf, "WL700")) { /* WL700* */ + sda_index = 2; + scl_index = 5; + return; + } + } + + if (bcm47xx_nvram_getenv("et0phyaddr", buf, sizeof(buf)) >= 0 ) + et0phyaddr = simple_strtoul(buf, NULL, 0); + if (bcm47xx_nvram_getenv("et1phyaddr", buf, sizeof(buf)) >= 0 ) + et1phyaddr = simple_strtoul(buf, NULL, 0); + + if (bcm47xx_nvram_getenv("hardware_version", buf, sizeof(buf)) >= 0) { + /* Either WL-300g or WL-HDD, do more extensive checks */ + if (startswith(buf, "WL300-") && et0phyaddr == 0 && et1phyaddr == 1) { + sda_index = 4; + scl_index = 5; + return; + } + } + /* not found */ +} + +static int __init rtc_init(void) +{ + int cr1; + + platform_detect(); + + if (sda_index == scl_index) { + printk(KERN_ERR "RTC-RV5C386A: unrecognized platform!\n"); + return -ENODEV; + } + + i2c_init(); + + /* + * Switch RTC to 24h mode + */ + spin_lock_irq(&rtc_lock); + i2c_start(); + i2c_outb(RTC_I2C_ADDRESS | I2C_WRITE_MASK); + i2c_outb(0xE4); /* start at address 0xE, transmission mode 4 */ + cr1 = i2c_inb(I2C_NAK); + i2c_stop(); + spin_unlock_irq(&rtc_lock); + if ((cr1 & RTC_24HOUR_MODE_MASK) == 0) { + /* RTC is running in 12h mode */ + printk(KERN_INFO "rtc.o: switching to 24h mode\n"); + spin_lock_irq(&rtc_lock); + i2c_start(); + i2c_outb(RTC_I2C_ADDRESS | I2C_WRITE_MASK); + i2c_outb(0xE0); + i2c_outb(cr1 | RTC_24HOUR_MODE_MASK); + i2c_stop(); + spin_unlock_irq(&rtc_lock); + } + + misc_register(&rtc_dev); + + printk(KERN_INFO "RV5C386A Real Time Clock Driver loaded\n"); + + return 0; +} + +static void __exit rtc_exit (void) +{ + misc_deregister(&rtc_dev); + printk(KERN_INFO "Successfully removed RTC RV5C386A driver\n"); +} + +module_init(rtc_init); +module_exit(rtc_exit); + +/* + * Local Variables: + * indent-tabs-mode:t + * c-basic-offset:8 + * End: + */ diff --git a/package/kernel/spi-gpio-custom/Makefile b/package/kernel/spi-gpio-custom/Makefile index e6d692db44..19aef20ed2 100644 --- a/package/kernel/spi-gpio-custom/Makefile +++ b/package/kernel/spi-gpio-custom/Makefile @@ -33,8 +33,7 @@ EXTRA_CFLAGS:= \ $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \ MAKE_OPTS:= \ - ARCH="$(LINUX_KARCH)" \ - CROSS_COMPILE="$(TARGET_CROSS)" \ + $(KERNEL_MAKE_FLAGS) \ SUBDIRS="$(PKG_BUILD_DIR)" \ EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ $(EXTRA_KCONFIG) diff --git a/package/kernel/trelay/Makefile b/package/kernel/trelay/Makefile index f95115a7d9..525a028c35 100644 --- a/package/kernel/trelay/Makefile +++ b/package/kernel/trelay/Makefile @@ -32,7 +32,7 @@ endef include $(INCLUDE_DIR)/kernel-defaults.mk define Build/Compile - $(MAKE) $(KERNEL_MAKEOPTS) SUBDIRS="$(PKG_BUILD_DIR)" modules + $(KERNEL_MAKE) SUBDIRS="$(PKG_BUILD_DIR)" modules endef define KernelPackage/trelay/conffiles diff --git a/package/kernel/w1-gpio-custom/Makefile b/package/kernel/w1-gpio-custom/Makefile index 67fdc7d15e..1008cf9736 100644 --- a/package/kernel/w1-gpio-custom/Makefile +++ b/package/kernel/w1-gpio-custom/Makefile @@ -33,8 +33,7 @@ EXTRA_CFLAGS:= \ $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) MAKE_OPTS:= \ - ARCH="$(LINUX_KARCH)" \ - CROSS_COMPILE="$(TARGET_CROSS)" \ + $(KERNEL_MAKE_FLAGS) \ SUBDIRS="$(PKG_BUILD_DIR)" \ EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ $(EXTRA_KCONFIG) diff --git a/package/libs/argp-standalone/patches/001-throw-in-funcdef.patch b/package/libs/argp-standalone/patches/001-throw-in-funcdef.patch index 4a90751e1e..2dcfe9c212 100644 --- a/package/libs/argp-standalone/patches/001-throw-in-funcdef.patch +++ b/package/libs/argp-standalone/patches/001-throw-in-funcdef.patch @@ -18,9 +18,9 @@ No __THROW in function implementation. --jsaw ---- argp-standalone-1.4-test2/argp.h.orig 2006-01-06 02:29:59.000000000 +0100 -+++ argp-standalone-1.4-test2/argp.h 2006-01-06 02:41:10.000000000 +0100 -@@ -560,17 +560,17 @@ +--- a/argp.h ++++ b/argp.h +@@ -560,17 +560,17 @@ __argp_short_program_name(const struct a # endif # ifndef ARGP_EI @@ -41,7 +41,7 @@ No __THROW in function implementation. { if (__opt->flags & OPTION_DOC) return 0; -@@ -582,7 +582,7 @@ +@@ -582,7 +582,7 @@ __option_is_short (__const struct argp_o } ARGP_EI int @@ -50,9 +50,9 @@ No __THROW in function implementation. { return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; } ---- argp-standalone-1.4-test2/argp-parse.c.orig 2006-01-06 02:47:48.000000000 +0100 -+++ argp-standalone-1.4-test2/argp-parse.c 2006-01-06 02:48:16.000000000 +0100 -@@ -1290,13 +1290,13 @@ +--- a/argp-parse.c ++++ b/argp-parse.c +@@ -1277,13 +1277,13 @@ weak_alias (__argp_input, _argp_input) /* Defined here, in case a user is not inlining the definitions in * argp.h */ void @@ -68,7 +68,7 @@ No __THROW in function implementation. { if (__opt->flags & OPTION_DOC) return 0; -@@ -1310,7 +1310,7 @@ +@@ -1297,7 +1297,7 @@ __option_is_short (__const struct argp_o } int diff --git a/package/libs/cyassl/Config.in b/package/libs/cyassl/Config.in deleted file mode 100644 index 371bb564f8..0000000000 --- a/package/libs/cyassl/Config.in +++ /dev/null @@ -1,48 +0,0 @@ -if PACKAGE_libcyassl - -config CYASSL_HAS_AES_CCM - bool "Include AES-CCM support" - default n - -config CYASSL_HAS_AES_GCM - bool "Include AES-GCM support" - default n - -config CYASSL_HAS_CHACHA - bool "Include ChaCha cipher suite support" - default n - -config CYASSL_HAS_ECC - bool "Include ECC (Elliptic Curve Cryptography) support" - default y - -config CYASSL_HAS_DH - bool "Include DH (Diffie-Hellman) support" - default n - -config CYASSL_HAS_ARC4 - bool "Include ARC4 support" - default n - -config CYASSL_HAS_DES3 - bool "Include DES3 (Tripple-DES) support" - default n - -config CYASSL_HAS_PSK - bool "Include PKS (Pre Share Key) support" - default n - -config CYASSL_HAS_DTLS - bool "Include DTLS support" - default n - -config CYASSL_HAS_ECC25519 - bool "Include ECC Curve 22519 support" - depends on CYASSL_HAS_ECC - default n - -config CYASSL_HAS_POLY_1305 - bool "Include Poly-1305 support" - default n - -endif diff --git a/package/libs/cyassl/Makefile b/package/libs/cyassl/Makefile deleted file mode 100644 index 68646d9b00..0000000000 --- a/package/libs/cyassl/Makefile +++ /dev/null @@ -1,139 +0,0 @@ -# -# Copyright (C) 2006-2016 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=wolfssl -PKG_VERSION:=3.10.0 -PKG_RELEASE:=1 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip -PKG_SOURCE_URL:=https://www.wolfssl.com/ -PKG_HASH:=66f7f2a8b8ee37d6b4beab3cb0dcb6a6980fd4674373bfd3bf1214b9d0d2c02e - -PKG_FIXUP:=libtool -PKG_INSTALL:=1 -PKG_USE_MIPS16:=0 -PKG_BUILD_PARALLEL:=1 -PKG_LICENSE:=GPL-2.0+ - -include $(INCLUDE_DIR)/package.mk - -define Package/libcyassl - SECTION:=libs - SUBMENU:=SSL - CATEGORY:=Libraries - TITLE:=CyaSSL library - URL:=http://www.wolfssl.com/ - MENU:=1 -endef - -define Package/libcyassl/description -CyaSSL is an SSL library optimized for small footprint, both on disk and for -memory use. -endef - -define Package/libcyassl/config - source "$(SOURCE)/Config.in" -endef - -TARGET_CFLAGS += $(FPIC) - -# --enable-stunnel needed for OpenSSL API compatibility bits -CONFIGURE_ARGS += \ - --enable-opensslextra \ - --enable-sni \ - --enable-stunnel \ - --disable-examples - -ifeq ($(CONFIG_IPV6),y) -CONFIGURE_ARGS += \ - --enable-ipv6 -endif - -ifeq ($(CONFIG_CYASSL_HAS_AES_CCM),y) -CONFIGURE_ARGS += \ - --enable-aesccm -endif - -ifeq ($(CONFIG_CYASSL_HAS_AES_GCM),y) -CONFIGURE_ARGS += \ - --enable-aesgcm -endif - -ifeq ($(CONFIG_CYASSL_HAS_CHACHA),y) -CONFIGURE_ARGS += \ - --enable-chacha -endif - -ifeq ($(CONFIG_CYASSL_HAS_ECC),y) -CONFIGURE_ARGS += \ - --enable-ecc \ - --enable-supportedcurves -endif - -ifeq ($(CONFIG_CYASSL_HAS_DH),y) -CONFIGURE_ARGS += \ - --enable-dh -endif - -ifeq ($(CONFIG_CYASSL_HAS_ARC4),n) -CONFIGURE_ARGS += \ - --disable-arc4 -endif - -ifeq ($(CONFIG_CYASSL_HAS_DES3),y) -CONFIGURE_ARGS += \ - --disable-des3 -endif - -ifeq ($(CONFIG_CYASSL_HAS_PSK),y) -CONFIGURE_ARGS += \ - --enable-psk -endif - -ifeq ($(CONFIG_CYASSL_HAS_DTLS),y) -CONFIGURE_ARGS += \ - --enable-dtls -endif - -ifeq ($(CONFIG_CYASSL_HAS_ECC25519),y) -CONFIGURE_ARGS += \ - --enable-ecc25519 -endif - -ifeq ($(CONFIG_CYASSL_HAS_POLY1305),y) -CONFIGURE_ARGS += \ - --enable-poly1305 -endif - -#ifneq ($(CONFIG_TARGET_x86),) -# CONFIGURE_ARGS += --enable-intelasm -#endif -#ifneq ($(CONFIG_TARGET_x86_64),) -# CONFIGURE_ARGS += --enable-intelasm -#endif - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib/pkgconfig - $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/ - - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwolfssl.{so*,la} $(1)/usr/lib/ - ln -s libwolfssl.so $(1)/usr/lib/libcyassl.so - ln -s libwolfssl.la $(1)/usr/lib/libcyassl.la - - $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig -endef - -define Package/libcyassl/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwolfssl.so* $(1)/usr/lib/ - ln -s libwolfssl.so $(1)/usr/lib/libcyassl.so -endef - -$(eval $(call BuildPackage,libcyassl)) diff --git a/package/libs/elfutils/Makefile b/package/libs/elfutils/Makefile index 0645d4e1cb..07e1eb8157 100644 --- a/package/libs/elfutils/Makefile +++ b/package/libs/elfutils/Makefile @@ -1,6 +1,6 @@ # # Copyright (C) 2010-2014 OpenWrt.org -# Copyright (C) 2016 Luiz Angelo Daros de Luca +# Copyright (C) 2016-2017 Luiz Angelo Daros de Luca # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -8,15 +8,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=elfutils -PKG_VERSION:=0.168 +PKG_VERSION:=0.169 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=https://sourceware.org/$(PKG_NAME)/ftp/$(PKG_VERSION) -PKG_HASH:=b88d07893ba1373c7dd69a7855974706d05377766568a7d9002706d5de72c276 +PKG_HASH:=9412fac7b30872b738bc1ed1ebcaed54493c26ef9a67887913498c17b10f3bc2 PKG_MAINTAINER:=Luiz Angelo Daros de Luca PKG_LICENSE:=GPL-3.0+ PKG_LICENSE_FILES:=COPYING COPYING-GPLV2 COPYING-LGPLV3 +PKG_CPE_ID:=cpe:/a:elfutils_project:elfutils PKG_INSTALL:=1 PKG_USE_MIPS16:=0 @@ -68,7 +69,7 @@ endif CONFIGURE_ARGS += \ --without-lzma -TARGET_CFLAGS += -D_GNU_SOURCE +TARGET_CFLAGS += -D_GNU_SOURCE -Wno-unused-result -Wno-format-nonliteral define Build/InstallDev $(INSTALL_DIR) $(1)/usr/include diff --git a/package/libs/elfutils/patches/003-libint-stub.patch b/package/libs/elfutils/patches/003-libint-stub.patch index 0aa31a86cb..2050bee64a 100644 --- a/package/libs/elfutils/patches/003-libint-stub.patch +++ b/package/libs/elfutils/patches/003-libint-stub.patch @@ -1,6 +1,8 @@ ---- a/libelf/libelfP.h -+++ b/libelf/libelfP.h -@@ -43,6 +43,9 @@ +Index: elfutils-0.169/libelf/libelfP.h +=================================================================== +--- elfutils-0.169.orig/libelf/libelfP.h ++++ elfutils-0.169/libelf/libelfP.h +@@ -39,6 +39,9 @@ #include #include @@ -10,8 +12,10 @@ /* gettext helper macros. */ #define _(Str) dgettext ("elfutils", Str) ---- a/libdw/libdwP.h -+++ b/libdw/libdwP.h +Index: elfutils-0.169/libdw/libdwP.h +=================================================================== +--- elfutils-0.169.orig/libdw/libdwP.h ++++ elfutils-0.169/libdw/libdwP.h @@ -36,7 +36,9 @@ #include #include @@ -23,9 +27,11 @@ /* gettext helper macros. */ #define _(Str) dgettext ("elfutils", Str) ---- a/libdwfl/libdwflP.h -+++ b/libdwfl/libdwflP.h -@@ -46,6 +46,9 @@ +Index: elfutils-0.169/libdwfl/libdwflP.h +=================================================================== +--- elfutils-0.169.orig/libdwfl/libdwflP.h ++++ elfutils-0.169/libdwfl/libdwflP.h +@@ -43,6 +43,9 @@ typedef struct Dwfl_Process Dwfl_Process; @@ -35,8 +41,10 @@ /* gettext helper macros. */ #define _(Str) dgettext ("elfutils", Str) ---- a/libasm/libasmP.h -+++ b/libasm/libasmP.h +Index: elfutils-0.169/libasm/libasmP.h +=================================================================== +--- elfutils-0.169.orig/libasm/libasmP.h ++++ elfutils-0.169/libasm/libasmP.h @@ -35,6 +35,9 @@ #include "libdwelf.h" diff --git a/package/libs/elfutils/patches/004-maybe-uninitialized.patch b/package/libs/elfutils/patches/004-maybe-uninitialized.patch deleted file mode 100644 index d0ce85cc86..0000000000 --- a/package/libs/elfutils/patches/004-maybe-uninitialized.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/libelf/elf_getarsym.c -+++ b/libelf/elf_getarsym.c -@@ -167,7 +167,7 @@ elf_getarsym (Elf *elf, size_t *ptr) - - /* We have an archive. The first word in there is the number of - entries in the table. */ -- uint64_t n; -+ uint64_t n = 0; - size_t off = elf->start_offset + SARMAG + sizeof (struct ar_hdr); - if (read_number_entries (&n, elf, &off, index64_p) < 0) - { diff --git a/package/libs/elfutils/patches/007-fix_TEMP_FAILURE_RETRY.patch b/package/libs/elfutils/patches/007-fix_TEMP_FAILURE_RETRY.patch deleted file mode 100644 index 2a4c5c0e3e..0000000000 --- a/package/libs/elfutils/patches/007-fix_TEMP_FAILURE_RETRY.patch +++ /dev/null @@ -1,92 +0,0 @@ -From b853c091231a56cc36135323d2668775a3d3c435 Mon Sep 17 00:00:00 2001 -From: Luiz Angelo Daros de Luca -Date: Thu, 29 Dec 2016 20:51:41 -0200 -Subject: [PATCH] Fix TEMP_FAILURE_RETRY definition when not defined - -https://sourceware.org/bugzilla/show_bug.cgi?id=21001 - -Signed-off-by: Luiz Angelo Daros de Luca ---- - ChangeLog | 4 ++++ - lib/crc32_file.c | 1 + - lib/system.h | 2 +- - libdwfl/dwfl_build_id_find_elf.c | 1 + - libdwfl/dwfl_module_getdwarf.c | 1 + - libdwfl/libdwfl_crc32_file.c | 1 - - 6 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/ChangeLog b/ChangeLog -index bb2ec10..77a7db8 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,7 @@ -+2016-12-29 Luiz Angelo Daros de Luca -+ -+ * Fix TEMP_FAILURE_RETRY definition when not defined -+ - 2016-12-27 Mark Wielaard - - * configure.ac: Set version to 0.168. -diff --git a/lib/crc32_file.c b/lib/crc32_file.c -index a8434d4..57e4298 100644 ---- a/lib/crc32_file.c -+++ b/lib/crc32_file.c -@@ -35,6 +35,7 @@ - #include - #include - #include -+#include "system.h" - - int - crc32_file (int fd, uint32_t *resp) -diff --git a/lib/system.h b/lib/system.h -index ccd99d6..dde7c4a 100644 ---- a/lib/system.h -+++ b/lib/system.h -@@ -81,7 +81,7 @@ - do \ - __res = expression; \ - while (__res == -1 && errno == EINTR); \ -- __res; }); -+ __res; }) - #endif - - static inline ssize_t __attribute__ ((unused)) -diff --git a/libdwfl/dwfl_build_id_find_elf.c b/libdwfl/dwfl_build_id_find_elf.c -index 903e193..d4737c9 100644 ---- a/libdwfl/dwfl_build_id_find_elf.c -+++ b/libdwfl/dwfl_build_id_find_elf.c -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include "system.h" - - - int -diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c -index 0e8810b..46caece 100644 ---- a/libdwfl/dwfl_module_getdwarf.c -+++ b/libdwfl/dwfl_module_getdwarf.c -@@ -33,6 +33,7 @@ - #include - #include "../libdw/libdwP.h" /* DWARF_E_* values are here. */ - #include "../libelf/libelfP.h" -+#include "system.h" - - static inline Dwfl_Error - open_elf_file (Elf **elf, int *fd, char **name) -diff --git a/libdwfl/libdwfl_crc32_file.c b/libdwfl/libdwfl_crc32_file.c -index 6b6b7d3..f849128 100644 ---- a/libdwfl/libdwfl_crc32_file.c -+++ b/libdwfl/libdwfl_crc32_file.c -@@ -31,6 +31,5 @@ - - #define crc32_file attribute_hidden __libdwfl_crc32_file - #define crc32 __libdwfl_crc32 --#define LIB_SYSTEM_H 1 - #include - #include "../lib/crc32_file.c" --- -2.9.3 - diff --git a/package/libs/elfutils/patches/100-musl-compat.patch b/package/libs/elfutils/patches/100-musl-compat.patch index 2b71b97055..cbced1101d 100644 --- a/package/libs/elfutils/patches/100-musl-compat.patch +++ b/package/libs/elfutils/patches/100-musl-compat.patch @@ -1,30 +1,44 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 ---- a/lib/system.h -+++ b/lib/system.h -@@ -140,6 +140,19 @@ pread_retry (int fd, void *buf, size_t l - return recvd; - } +Index: elfutils-0.169/lib/system.h +=================================================================== +--- elfutils-0.169.orig/lib/system.h ++++ elfutils-0.169/lib/system.h +@@ -29,7 +29,18 @@ + #ifndef LIB_SYSTEM_H + #define LIB_SYSTEM_H 1 +#ifdef HAVE_ERROR_H +#include "error.h" +#else +#include "err.h" + #include ++#include +#define error(status, errno, ...) \ + fflush(stdout); \ + warn(__VA_ARGS__); \ + if (status) exit(status) +#endif + + #include + #include + #include +@@ -37,6 +48,10 @@ + #include + #include + +#ifndef __GLIBC__ +#define canonicalize_file_name(name) realpath(name,NULL) +#endif - - /* We need define two variables, argp_program_version_hook and - argp_program_bug_address, in all programs. argp.h declares these ---- a/lib/color.c -+++ b/lib/color.c -@@ -32,12 +32,12 @@ ++ + #if __BYTE_ORDER == __LITTLE_ENDIAN + # define LE32(n) (n) + # define LE64(n) (n) +Index: elfutils-0.169/lib/color.c +=================================================================== +--- elfutils-0.169.orig/lib/color.c ++++ elfutils-0.169/lib/color.c +@@ -32,13 +32,13 @@ #endif #include @@ -34,12 +48,15 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include "libeu.h" + #include "color.h" +#include "system.h" - /* Prototype for option handler. */ ---- a/lib/xmalloc.c -+++ b/lib/xmalloc.c + static error_t parse_opt (int key, char *arg, struct argp_state *state); +Index: elfutils-0.169/lib/xmalloc.c +=================================================================== +--- elfutils-0.169.orig/lib/xmalloc.c ++++ elfutils-0.169/lib/xmalloc.c @@ -30,7 +30,6 @@ # include #endif @@ -48,8 +65,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/addr2line.c -+++ b/src/addr2line.c +Index: elfutils-0.169/src/addr2line.c +=================================================================== +--- elfutils-0.169.orig/src/addr2line.c ++++ elfutils-0.169/src/addr2line.c @@ -23,7 +23,6 @@ #include #include @@ -58,8 +77,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/ar.c -+++ b/src/ar.c +Index: elfutils-0.169/src/ar.c +=================================================================== +--- elfutils-0.169.orig/src/ar.c ++++ elfutils-0.169/src/ar.c @@ -22,7 +22,6 @@ #include @@ -68,8 +89,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/arlib2.c -+++ b/src/arlib2.c +Index: elfutils-0.169/src/arlib2.c +=================================================================== +--- elfutils-0.169.orig/src/arlib2.c ++++ elfutils-0.169/src/arlib2.c @@ -20,7 +20,6 @@ # include #endif @@ -78,8 +101,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/arlib.c -+++ b/src/arlib.c +Index: elfutils-0.169/src/arlib.c +=================================================================== +--- elfutils-0.169.orig/src/arlib.c ++++ elfutils-0.169/src/arlib.c @@ -21,7 +21,6 @@ #endif @@ -88,8 +113,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/elfcmp.c -+++ b/src/elfcmp.c +Index: elfutils-0.169/src/elfcmp.c +=================================================================== +--- elfutils-0.169.orig/src/elfcmp.c ++++ elfutils-0.169/src/elfcmp.c @@ -23,7 +23,6 @@ #include #include @@ -98,8 +125,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/elflint.c -+++ b/src/elflint.c +Index: elfutils-0.169/src/elflint.c +=================================================================== +--- elfutils-0.169.orig/src/elflint.c ++++ elfutils-0.169/src/elflint.c @@ -24,7 +24,6 @@ #include #include @@ -108,8 +137,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/findtextrel.c -+++ b/src/findtextrel.c +Index: elfutils-0.169/src/findtextrel.c +=================================================================== +--- elfutils-0.169.orig/src/findtextrel.c ++++ elfutils-0.169/src/findtextrel.c @@ -23,7 +23,6 @@ #include #include @@ -118,8 +149,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/nm.c -+++ b/src/nm.c +Index: elfutils-0.169/src/nm.c +=================================================================== +--- elfutils-0.169.orig/src/nm.c ++++ elfutils-0.169/src/nm.c @@ -26,7 +26,6 @@ #include #include @@ -128,8 +161,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/objdump.c -+++ b/src/objdump.c +Index: elfutils-0.169/src/objdump.c +=================================================================== +--- elfutils-0.169.orig/src/objdump.c ++++ elfutils-0.169/src/objdump.c @@ -21,7 +21,6 @@ #endif @@ -138,8 +173,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/ranlib.c -+++ b/src/ranlib.c +Index: elfutils-0.169/src/ranlib.c +=================================================================== +--- elfutils-0.169.orig/src/ranlib.c ++++ elfutils-0.169/src/ranlib.c @@ -24,7 +24,6 @@ #include #include @@ -148,8 +185,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/readelf.c -+++ b/src/readelf.c +Index: elfutils-0.169/src/readelf.c +=================================================================== +--- elfutils-0.169.orig/src/readelf.c ++++ elfutils-0.169/src/readelf.c @@ -25,7 +25,6 @@ #include #include @@ -158,8 +197,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/size.c -+++ b/src/size.c +Index: elfutils-0.169/src/size.c +=================================================================== +--- elfutils-0.169.orig/src/size.c ++++ elfutils-0.169/src/size.c @@ -21,7 +21,6 @@ #endif @@ -168,8 +209,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/stack.c -+++ b/src/stack.c +Index: elfutils-0.169/src/stack.c +=================================================================== +--- elfutils-0.169.orig/src/stack.c ++++ elfutils-0.169/src/stack.c @@ -18,7 +18,6 @@ #include #include @@ -178,8 +221,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/strings.c -+++ b/src/strings.c +Index: elfutils-0.169/src/strings.c +=================================================================== +--- elfutils-0.169.orig/src/strings.c ++++ elfutils-0.169/src/strings.c @@ -25,7 +25,6 @@ #include #include @@ -188,8 +233,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/strip.c -+++ b/src/strip.c +Index: elfutils-0.169/src/strip.c +=================================================================== +--- elfutils-0.169.orig/src/strip.c ++++ elfutils-0.169/src/strip.c @@ -24,7 +24,6 @@ #include #include @@ -198,8 +245,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/src/unstrip.c -+++ b/src/unstrip.c +Index: elfutils-0.169/src/unstrip.c +=================================================================== +--- elfutils-0.169.orig/src/unstrip.c ++++ elfutils-0.169/src/unstrip.c @@ -31,7 +31,6 @@ #include #include @@ -208,8 +257,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/addrscopes.c -+++ b/tests/addrscopes.c +Index: elfutils-0.169/tests/addrscopes.c +=================================================================== +--- elfutils-0.169.orig/tests/addrscopes.c ++++ elfutils-0.169/tests/addrscopes.c @@ -25,7 +25,6 @@ #include #include @@ -218,8 +269,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include ---- a/tests/allregs.c -+++ b/tests/allregs.c +Index: elfutils-0.169/tests/allregs.c +=================================================================== +--- elfutils-0.169.orig/tests/allregs.c ++++ elfutils-0.169/tests/allregs.c @@ -21,7 +21,6 @@ #include #include @@ -228,8 +281,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/backtrace.c -+++ b/tests/backtrace.c +Index: elfutils-0.169/tests/backtrace.c +=================================================================== +--- elfutils-0.169.orig/tests/backtrace.c ++++ elfutils-0.169/tests/backtrace.c @@ -24,7 +24,6 @@ #include #include @@ -238,8 +293,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #ifdef __linux__ ---- a/tests/backtrace-data.c -+++ b/tests/backtrace-data.c +Index: elfutils-0.169/tests/backtrace-data.c +=================================================================== +--- elfutils-0.169.orig/tests/backtrace-data.c ++++ elfutils-0.169/tests/backtrace-data.c @@ -27,7 +27,6 @@ #include #include @@ -248,8 +305,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #if defined(__x86_64__) && defined(__linux__) ---- a/tests/buildid.c -+++ b/tests/buildid.c +Index: elfutils-0.169/tests/buildid.c +=================================================================== +--- elfutils-0.169.orig/tests/buildid.c ++++ elfutils-0.169/tests/buildid.c @@ -23,7 +23,6 @@ #include ELFUTILS_HEADER(elf) #include ELFUTILS_HEADER(dwelf) @@ -258,8 +317,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/debugaltlink.c -+++ b/tests/debugaltlink.c +Index: elfutils-0.169/tests/debugaltlink.c +=================================================================== +--- elfutils-0.169.orig/tests/debugaltlink.c ++++ elfutils-0.169/tests/debugaltlink.c @@ -23,7 +23,6 @@ #include ELFUTILS_HEADER(dw) #include ELFUTILS_HEADER(dwelf) @@ -268,8 +329,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/debuglink.c -+++ b/tests/debuglink.c +Index: elfutils-0.169/tests/debuglink.c +=================================================================== +--- elfutils-0.169.orig/tests/debuglink.c ++++ elfutils-0.169/tests/debuglink.c @@ -21,7 +21,6 @@ #include #include ELFUTILS_HEADER(dwelf) @@ -278,8 +341,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/dwfl-addr-sect.c -+++ b/tests/dwfl-addr-sect.c +Index: elfutils-0.169/tests/dwfl-addr-sect.c +=================================================================== +--- elfutils-0.169.orig/tests/dwfl-addr-sect.c ++++ elfutils-0.169/tests/dwfl-addr-sect.c @@ -23,7 +23,6 @@ #include #include @@ -288,8 +353,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ELFUTILS_HEADER(dwfl) ---- a/tests/dwfl-bug-addr-overflow.c -+++ b/tests/dwfl-bug-addr-overflow.c +Index: elfutils-0.169/tests/dwfl-bug-addr-overflow.c +=================================================================== +--- elfutils-0.169.orig/tests/dwfl-bug-addr-overflow.c ++++ elfutils-0.169/tests/dwfl-bug-addr-overflow.c @@ -20,7 +20,6 @@ #include #include @@ -298,8 +365,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include ELFUTILS_HEADER(dwfl) ---- a/tests/dwfl-bug-fd-leak.c -+++ b/tests/dwfl-bug-fd-leak.c +Index: elfutils-0.169/tests/dwfl-bug-fd-leak.c +=================================================================== +--- elfutils-0.169.orig/tests/dwfl-bug-fd-leak.c ++++ elfutils-0.169/tests/dwfl-bug-fd-leak.c @@ -24,7 +24,6 @@ #include #include @@ -308,8 +377,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include ---- a/tests/dwfl-bug-getmodules.c -+++ b/tests/dwfl-bug-getmodules.c +Index: elfutils-0.169/tests/dwfl-bug-getmodules.c +=================================================================== +--- elfutils-0.169.orig/tests/dwfl-bug-getmodules.c ++++ elfutils-0.169/tests/dwfl-bug-getmodules.c @@ -18,7 +18,6 @@ #include #include ELFUTILS_HEADER(dwfl) @@ -318,8 +389,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 static const Dwfl_Callbacks callbacks = { ---- a/tests/dwfllines.c -+++ b/tests/dwfllines.c +Index: elfutils-0.169/tests/dwfllines.c +=================================================================== +--- elfutils-0.169.orig/tests/dwfllines.c ++++ elfutils-0.169/tests/dwfllines.c @@ -27,7 +27,6 @@ #include #include @@ -328,8 +401,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 int main (int argc, char *argv[]) ---- a/tests/dwflmodtest.c -+++ b/tests/dwflmodtest.c +Index: elfutils-0.169/tests/dwflmodtest.c +=================================================================== +--- elfutils-0.169.orig/tests/dwflmodtest.c ++++ elfutils-0.169/tests/dwflmodtest.c @@ -23,7 +23,6 @@ #include #include @@ -338,8 +413,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ELFUTILS_HEADER(dwfl) ---- a/tests/dwfl-report-elf-align.c -+++ b/tests/dwfl-report-elf-align.c +Index: elfutils-0.169/tests/dwfl-report-elf-align.c +=================================================================== +--- elfutils-0.169.orig/tests/dwfl-report-elf-align.c ++++ elfutils-0.169/tests/dwfl-report-elf-align.c @@ -20,7 +20,6 @@ #include #include @@ -348,8 +425,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/dwflsyms.c -+++ b/tests/dwflsyms.c +Index: elfutils-0.169/tests/dwflsyms.c +=================================================================== +--- elfutils-0.169.orig/tests/dwflsyms.c ++++ elfutils-0.169/tests/dwflsyms.c @@ -25,7 +25,6 @@ #include #include @@ -358,8 +437,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include static const char * ---- a/tests/early-offscn.c -+++ b/tests/early-offscn.c +Index: elfutils-0.169/tests/early-offscn.c +=================================================================== +--- elfutils-0.169.orig/tests/early-offscn.c ++++ elfutils-0.169/tests/early-offscn.c @@ -19,7 +19,6 @@ #endif @@ -368,8 +449,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/ecp.c -+++ b/tests/ecp.c +Index: elfutils-0.169/tests/ecp.c +=================================================================== +--- elfutils-0.169.orig/tests/ecp.c ++++ elfutils-0.169/tests/ecp.c @@ -20,7 +20,6 @@ #endif @@ -378,8 +461,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/find-prologues.c -+++ b/tests/find-prologues.c +Index: elfutils-0.169/tests/find-prologues.c +=================================================================== +--- elfutils-0.169.orig/tests/find-prologues.c ++++ elfutils-0.169/tests/find-prologues.c @@ -25,7 +25,6 @@ #include #include @@ -388,8 +473,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include ---- a/tests/funcretval.c -+++ b/tests/funcretval.c +Index: elfutils-0.169/tests/funcretval.c +=================================================================== +--- elfutils-0.169.orig/tests/funcretval.c ++++ elfutils-0.169/tests/funcretval.c @@ -25,7 +25,6 @@ #include #include @@ -398,8 +485,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include ---- a/tests/funcscopes.c -+++ b/tests/funcscopes.c +Index: elfutils-0.169/tests/funcscopes.c +=================================================================== +--- elfutils-0.169.orig/tests/funcscopes.c ++++ elfutils-0.169/tests/funcscopes.c @@ -25,7 +25,6 @@ #include #include @@ -408,8 +497,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include ---- a/tests/line2addr.c -+++ b/tests/line2addr.c +Index: elfutils-0.169/tests/line2addr.c +=================================================================== +--- elfutils-0.169.orig/tests/line2addr.c ++++ elfutils-0.169/tests/line2addr.c @@ -26,7 +26,6 @@ #include #include @@ -418,8 +509,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 static void ---- a/tests/low_high_pc.c -+++ b/tests/low_high_pc.c +Index: elfutils-0.169/tests/low_high_pc.c +=================================================================== +--- elfutils-0.169.orig/tests/low_high_pc.c ++++ elfutils-0.169/tests/low_high_pc.c @@ -25,7 +25,6 @@ #include #include @@ -428,8 +521,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include ---- a/tests/md5-sha1-test.c -+++ b/tests/md5-sha1-test.c +Index: elfutils-0.169/tests/md5-sha1-test.c +=================================================================== +--- elfutils-0.169.orig/tests/md5-sha1-test.c ++++ elfutils-0.169/tests/md5-sha1-test.c @@ -19,7 +19,6 @@ #endif @@ -438,8 +533,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include "md5.h" #include "sha1.h" ---- a/tests/rdwrmmap.c -+++ b/tests/rdwrmmap.c +Index: elfutils-0.169/tests/rdwrmmap.c +=================================================================== +--- elfutils-0.169.orig/tests/rdwrmmap.c ++++ elfutils-0.169/tests/rdwrmmap.c @@ -19,7 +19,6 @@ #endif @@ -448,8 +545,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/saridx.c -+++ b/tests/saridx.c +Index: elfutils-0.169/tests/saridx.c +=================================================================== +--- elfutils-0.169.orig/tests/saridx.c ++++ elfutils-0.169/tests/saridx.c @@ -17,7 +17,6 @@ #include @@ -458,8 +557,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/sectiondump.c -+++ b/tests/sectiondump.c +Index: elfutils-0.169/tests/sectiondump.c +=================================================================== +--- elfutils-0.169.orig/tests/sectiondump.c ++++ elfutils-0.169/tests/sectiondump.c @@ -18,7 +18,6 @@ #include @@ -468,8 +569,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/tests/varlocs.c -+++ b/tests/varlocs.c +Index: elfutils-0.169/tests/varlocs.c +=================================================================== +--- elfutils-0.169.orig/tests/varlocs.c ++++ elfutils-0.169/tests/varlocs.c @@ -25,7 +25,6 @@ #include #include @@ -478,8 +581,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/libasm/asm_end.c -+++ b/libasm/asm_end.c +Index: elfutils-0.169/libasm/asm_end.c +=================================================================== +--- elfutils-0.169.orig/libasm/asm_end.c ++++ elfutils-0.169/libasm/asm_end.c @@ -32,7 +32,6 @@ #endif @@ -488,8 +593,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/libasm/asm_newscn.c -+++ b/libasm/asm_newscn.c +Index: elfutils-0.169/libasm/asm_newscn.c +=================================================================== +--- elfutils-0.169.orig/libasm/asm_newscn.c ++++ elfutils-0.169/libasm/asm_newscn.c @@ -32,7 +32,6 @@ #endif @@ -498,8 +605,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/libcpu/i386_gendis.c -+++ b/libcpu/i386_gendis.c +Index: elfutils-0.169/libcpu/i386_gendis.c +=================================================================== +--- elfutils-0.169.orig/libcpu/i386_gendis.c ++++ elfutils-0.169/libcpu/i386_gendis.c @@ -31,7 +31,6 @@ # include #endif @@ -508,8 +617,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/libcpu/i386_lex.c -+++ b/libcpu/i386_lex.c +Index: elfutils-0.169/libcpu/i386_lex.c +=================================================================== +--- elfutils-0.169.orig/libcpu/i386_lex.c ++++ elfutils-0.169/libcpu/i386_lex.c @@ -592,7 +592,6 @@ char *i386_text; #endif @@ -518,8 +629,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include ---- a/libcpu/i386_lex.l -+++ b/libcpu/i386_lex.l +Index: elfutils-0.169/libcpu/i386_lex.l +=================================================================== +--- elfutils-0.169.orig/libcpu/i386_lex.l ++++ elfutils-0.169/libcpu/i386_lex.l @@ -31,7 +31,6 @@ #endif @@ -528,8 +641,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include ---- a/libcpu/i386_parse.c -+++ b/libcpu/i386_parse.c +Index: elfutils-0.169/libcpu/i386_parse.c +=================================================================== +--- elfutils-0.169.orig/libcpu/i386_parse.c ++++ elfutils-0.169/libcpu/i386_parse.c @@ -107,7 +107,6 @@ #include #include @@ -538,8 +653,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/libdw/libdw_alloc.c -+++ b/libdw/libdw_alloc.c +Index: elfutils-0.169/libdw/libdw_alloc.c +=================================================================== +--- elfutils-0.169.orig/libdw/libdw_alloc.c ++++ elfutils-0.169/libdw/libdw_alloc.c @@ -31,7 +31,6 @@ # include #endif @@ -555,8 +672,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 - error (EXIT_FAILURE, ENOMEM, "libdw"); + error (EXIT_FAILURE, errno, gettext ("cannot allocate memory")); } ---- a/libebl/eblopenbackend.c -+++ b/libebl/eblopenbackend.c +Index: elfutils-0.169/libebl/eblopenbackend.c +=================================================================== +--- elfutils-0.169.orig/libebl/eblopenbackend.c ++++ elfutils-0.169/libebl/eblopenbackend.c @@ -32,7 +32,6 @@ #include @@ -565,8 +684,10 @@ https://sourceware.org/bugzilla/show_bug.cgi?id=21002 #include #include #include ---- a/libdwfl/dwfl_error.c -+++ b/libdwfl/dwfl_error.c +Index: elfutils-0.169/libdwfl/dwfl_error.c +=================================================================== +--- elfutils-0.169.orig/libdwfl/dwfl_error.c ++++ elfutils-0.169/libdwfl/dwfl_error.c @@ -140,6 +140,7 @@ __libdwfl_seterrno (Dwfl_Error error) const char * dwfl_errmsg (int error) diff --git a/package/libs/elfutils/patches/101-no-fts.patch b/package/libs/elfutils/patches/101-no-fts.patch index e6a672997d..63699fea26 100644 --- a/package/libs/elfutils/patches/101-no-fts.patch +++ b/package/libs/elfutils/patches/101-no-fts.patch @@ -1,6 +1,8 @@ ---- a/libdwfl/argp-std.c -+++ b/libdwfl/argp-std.c -@@ -52,9 +52,6 @@ static const struct argp_option options[ +Index: elfutils-0.169/libdwfl/argp-std.c +=================================================================== +--- elfutils-0.169.orig/libdwfl/argp-std.c ++++ elfutils-0.169/libdwfl/argp-std.c +@@ -56,9 +56,6 @@ static const struct argp_option options[ { "linux-process-map", 'M', "FILE", 0, N_("Find addresses in files mapped as read from FILE" " in Linux /proc/PID/maps format"), 0 }, @@ -10,7 +12,7 @@ { "debuginfo-path", OPT_DEBUGINFO, "PATH", 0, N_("Search path for separate debuginfo files"), 0 }, { NULL, 0, NULL, 0, NULL, 0 } -@@ -81,15 +78,6 @@ static const Dwfl_Callbacks proc_callbac +@@ -85,15 +82,6 @@ static const Dwfl_Callbacks proc_callbac .find_elf = INTUSE(dwfl_linux_proc_find_elf), }; @@ -26,7 +28,7 @@ /* Structure held at state->HOOK. */ struct parse_opt { -@@ -219,43 +207,6 @@ parse_opt (int key, char *arg, struct ar +@@ -223,43 +211,6 @@ parse_opt (int key, char *arg, struct ar } break; @@ -70,8 +72,10 @@ case ARGP_KEY_SUCCESS: { struct parse_opt *opt = state->hook; ---- a/libdwfl/Makefile.in -+++ b/libdwfl/Makefile.in +Index: elfutils-0.169/libdwfl/Makefile.in +=================================================================== +--- elfutils-0.169.orig/libdwfl/Makefile.in ++++ elfutils-0.169/libdwfl/Makefile.in @@ -120,7 +120,7 @@ am__libdwfl_a_SOURCES_DIST = dwfl_begin. dwfl_getmodules.c dwfl_getdwarf.c dwfl_module_getdwarf.c \ dwfl_module_getelf.c dwfl_validate_address.c argp-std.c \ diff --git a/package/libs/gettext-full/Makefile b/package/libs/gettext-full/Makefile index deb4840109..db6aee7508 100644 --- a/package/libs/gettext-full/Makefile +++ b/package/libs/gettext-full/Makefile @@ -19,6 +19,7 @@ HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/gettext-$(PKG_VERSION) PKG_MAINTAINER:=Jo-Philipp Wich PKG_LICENSE:=GPL-3.0+ +PKG_CPE_ID:=cpe:/a:gnu:gettext PKG_FIXUP:=autoreconf PKG_INSTALL:=1 diff --git a/package/libs/gettext-full/patches/000-relocatable.patch b/package/libs/gettext-full/patches/000-relocatable.patch index c14be72836..a95c268f5b 100644 --- a/package/libs/gettext-full/patches/000-relocatable.patch +++ b/package/libs/gettext-full/patches/000-relocatable.patch @@ -5,8 +5,8 @@ # Set variables # - gettext_datadir directory where the data files are stored. -prefix="@prefix@" -+if [ -n "$STAGING_DIR" ]; then -+ prefix="$STAGING_DIR/host" ++if [ -n "$STAGING_DIR_HOSTPKG" ]; then ++ prefix="$STAGING_DIR_HOSTPKG" +else + prefix="@prefix@" +fi @@ -20,8 +20,8 @@ # Set variables # - gettext_datadir directory where the data files are stored. -prefix="@prefix@" -+if [ -n "$STAGING_DIR" ]; then -+ prefix="$STAGING_DIR/host" ++if [ -n "$STAGING_DIR_HOSTPKG" ]; then ++ prefix="$STAGING_DIR_HOSTPKG" +else + prefix="@prefix@" +fi diff --git a/package/libs/libcap/Makefile b/package/libs/libcap/Makefile deleted file mode 100644 index e60b8978c5..0000000000 --- a/package/libs/libcap/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# -# Copyright (C) 2011 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=libcap -PKG_VERSION:=2.25 -PKG_RELEASE:=1 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_SOURCE_URL:=@KERNEL/linux/libs/security/linux-privs/libcap2 -PKG_HASH:=693c8ac51e983ee678205571ef272439d83afe62dd8e424ea14ad9790bc35162 -PKG_LICENSE:=GPL-2.0 -PKG_LICENSE_FILES:=License -PKG_MAINTAINER:=Paul Wassi - -PKG_INSTALL:=1 - -include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/kernel.mk - -define Package/libcap - TITLE:=Linux capabilities library - SECTION:=libs - CATEGORY:=Libraries - URL:=http://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/ -endef - -MAKE_FLAGS += \ - CFLAGS="$(TARGET_CFLAGS)" \ - BUILD_CC="$(CC)" \ - BUILD_CFLAGS="$(FPIC) -I$(PKG_BUILD_DIR)/libcap/include" \ - CFLAGS="$(TARGET_CFLAGS)" \ - LD="$(TARGET_CC)" \ - LDFLAGS="$(TARGET_LDFLAGS) -shared" \ - INDENT="| true" \ - PAM_CAP="no" \ - RAISE_SETFCAP="no" \ - DYNAMIC="yes" \ - lib="lib" - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include/sys - $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/ - $(INSTALL_DIR) $(1)/usr/lib/ - $(CP) $(PKG_INSTALL_DIR)/lib/* $(1)/usr/lib/ -endef - -define Package/libcap/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libcap.so* $(1)/usr/lib/ -endef - -$(eval $(call BuildPackage,libcap)) diff --git a/package/libs/libcap/patches/100-portability.patch b/package/libs/libcap/patches/100-portability.patch deleted file mode 100644 index 735a97396b..0000000000 --- a/package/libs/libcap/patches/100-portability.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/libcap/_makenames.c -+++ b/libcap/_makenames.c -@@ -7,7 +7,6 @@ - - #include - #include --#include - - /* - * #include 'sed' generated array -@@ -22,7 +21,7 @@ struct { - }; - - /* this should be more than big enough (factor of three at least) */ --const char *pointers[8*sizeof(struct __user_cap_data_struct)]; -+const char *pointers[8*12]; - - int main(void) - { diff --git a/package/libs/libevent2/Makefile b/package/libs/libevent2/Makefile index 99034bb228..5d56f37c51 100644 --- a/package/libs/libevent2/Makefile +++ b/package/libs/libevent2/Makefile @@ -17,6 +17,7 @@ PKG_SOURCE_URL:=@SF/levent PKG_HASH:=71c2c49f0adadacfdbe6332a372c38cf9c8b7895bb73dabeaa53cdcc1d4e1fa3 PKG_MAINTAINER:=Jo-Philipp Wich PKG_LICENSE:=BSD-3-Clause +PKG_CPE_ID:=cpe:/a:libevent_project:libevent PKG_FIXUP:=autoreconf PKG_INSTALL:=1 diff --git a/package/libs/libiconv-full/Makefile b/package/libs/libiconv-full/Makefile index 9776711a79..ac7bfddf56 100644 --- a/package/libs/libiconv-full/Makefile +++ b/package/libs/libiconv-full/Makefile @@ -51,7 +51,7 @@ define Package/iconv TITLE+= utility endef -TARGET_CFLAGS += $(FPIC) -DUSE_DOS +TARGET_CFLAGS += $(FPIC) -DUSE_DOS -std=gnu89 CONFIGURE_ARGS += \ --enable-shared \ diff --git a/package/libs/libjson-c/Makefile b/package/libs/libjson-c/Makefile index 87dbc4708e..eeb7870f07 100644 --- a/package/libs/libjson-c/Makefile +++ b/package/libs/libjson-c/Makefile @@ -19,6 +19,7 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) PKG_LICENSE:=MIT PKG_LICENSE_FILES:=COPYING +PKG_CPE_ID:=cpe:/a:json-c_project:json-c PKG_FIXUP:=autoreconf PKG_INSTALL:=1 @@ -27,7 +28,7 @@ PKG_MAINTAINER:=Felix Fietkau include $(INCLUDE_DIR)/package.mk -TARGET_CFLAGS += $(FPIC) +TARGET_CFLAGS += $(FPIC) -Wno-implicit-fallthrough define Package/libjson-c SECTION:=libs diff --git a/package/libs/libnetfilter-conntrack/Makefile b/package/libs/libnetfilter-conntrack/Makefile index 399aa6ce1d..be82285317 100644 --- a/package/libs/libnetfilter-conntrack/Makefile +++ b/package/libs/libnetfilter-conntrack/Makefile @@ -8,14 +8,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libnetfilter_conntrack -PKG_VERSION:=1.0.6 PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:= \ - http://www.netfilter.org/projects/libnetfilter_conntrack/files/ \ - ftp://ftp.netfilter.org/pub/libnetfilter_conntrack/ -PKG_HASH:=efcc08021284e75f4d96d3581c5155a11f08fd63316b1938cbcb269c87f37feb +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://git.netfilter.org/libnetfilter_conntrack +PKG_SOURCE_DATE:=2017-07-25 +PKG_SOURCE_VERSION:=e870432649955d377a73ee5a72cb23f0f6b5e4c5 +PKG_MIRROR_HASH:=6891e6bea956d5d3514524918f439dfe8b5806397d8d40d1afc69b9bfebc1d57 + PKG_MAINTAINER:=Jo-Philipp Wich PKG_FIXUP:=autoreconf diff --git a/package/libs/libnetfilter-queue/Makefile b/package/libs/libnetfilter-queue/Makefile index dd8fd9f09e..8a11d07988 100644 --- a/package/libs/libnetfilter-queue/Makefile +++ b/package/libs/libnetfilter-queue/Makefile @@ -11,10 +11,10 @@ PKG_NAME:=libnetfilter_queue PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL=http://git.netfilter.org/libnetfilter_queue -PKG_SOURCE_DATE:=2016-07-03 -PKG_SOURCE_VERSION:=981025e103d887fb6a9c9bb49c74ec323108d098 -PKG_MIRROR_HASH:=85c124be0e19162e1ebd1aba6e7e86bb4106e9dab4267baaf66d3ccb48d56e3f +PKG_SOURCE_URL=https://git.netfilter.org/libnetfilter_queue +PKG_SOURCE_DATE:=2017-06-27 +PKG_SOURCE_VERSION:=601abd1c71ccdf90753cf294c120ad43fb25dc54 +PKG_MIRROR_HASH:=283b99cfe5856dc87fd6bab8f78c0c59b72462d6b4f2b13111f928cf33020eb3 PKG_FIXUP:=autoreconf PKG_LICENSE:=GPL-2.0+ diff --git a/package/libs/libnetfilter-queue/patches/100-checksum_computation.patch b/package/libs/libnetfilter-queue/patches/100-checksum_computation.patch index 81faffe82e..92e750d510 100644 --- a/package/libs/libnetfilter-queue/patches/100-checksum_computation.patch +++ b/package/libs/libnetfilter-queue/patches/100-checksum_computation.patch @@ -8,7 +8,7 @@ #include #include #include -@@ -26,8 +27,13 @@ uint16_t nfq_checksum(uint32_t sum, uint16_t *buf, int size) +@@ -26,8 +27,13 @@ uint16_t nfq_checksum(uint32_t sum, uint sum += *buf++; size -= sizeof(uint16_t); } @@ -24,7 +24,7 @@ sum = (sum >> 16) + (sum & 0xffff); sum += (sum >>16); -@@ -35,7 +41,7 @@ uint16_t nfq_checksum(uint32_t sum, uint16_t *buf, int size) +@@ -35,7 +41,7 @@ uint16_t nfq_checksum(uint32_t sum, uint return (uint16_t)(~sum); } @@ -33,7 +33,7 @@ { uint32_t sum = 0; uint32_t iph_len = iph->ihl*4; -@@ -46,13 +52,13 @@ uint16_t nfq_checksum_tcpudp_ipv4(struct iphdr *iph) +@@ -46,13 +52,13 @@ uint16_t nfq_checksum_tcpudp_ipv4(struct sum += (iph->saddr) & 0xFFFF; sum += (iph->daddr >> 16) & 0xFFFF; sum += (iph->daddr) & 0xFFFF; @@ -49,7 +49,7 @@ { uint32_t sum = 0; uint32_t hdr_len = (uint32_t *)transport_hdr - (uint32_t *)ip6h; -@@ -68,7 +74,7 @@ uint16_t nfq_checksum_tcpudp_ipv6(struct ip6_hdr *ip6h, void *transport_hdr) +@@ -68,7 +74,7 @@ uint16_t nfq_checksum_tcpudp_ipv6(struct sum += (ip6h->ip6_dst.s6_addr16[i] >> 16) & 0xFFFF; sum += (ip6h->ip6_dst.s6_addr16[i]) & 0xFFFF; } @@ -58,11 +58,9 @@ sum += htons(ip6h->ip6_plen); return nfq_checksum(sum, (uint16_t *)payload, len); -diff --git a/src/extra/tcp.c b/src/extra/tcp.c -index d1cd79d..a66f392 100644 --- a/src/extra/tcp.c +++ b/src/extra/tcp.c -@@ -96,7 +96,7 @@ nfq_tcp_compute_checksum_ipv4(struct tcphdr *tcph, struct iphdr *iph) +@@ -96,7 +96,7 @@ nfq_tcp_compute_checksum_ipv4(struct tcp { /* checksum field in header needs to be zero for calculation. */ tcph->check = 0; @@ -71,7 +69,7 @@ index d1cd79d..a66f392 100644 } EXPORT_SYMBOL(nfq_tcp_compute_checksum_ipv4); -@@ -110,7 +110,7 @@ nfq_tcp_compute_checksum_ipv6(struct tcphdr *tcph, struct ip6_hdr *ip6h) +@@ -110,7 +110,7 @@ nfq_tcp_compute_checksum_ipv6(struct tcp { /* checksum field in header needs to be zero for calculation. */ tcph->check = 0; @@ -82,7 +80,7 @@ index d1cd79d..a66f392 100644 --- a/src/extra/udp.c +++ b/src/extra/udp.c -@@ -96,7 +96,7 @@ nfq_udp_compute_checksum_ipv4(struct udphdr *udph, struct iphdr *iph) +@@ -96,7 +96,7 @@ nfq_udp_compute_checksum_ipv4(struct udp { /* checksum field in header needs to be zero for calculation. */ udph->check = 0; @@ -91,7 +89,7 @@ index d1cd79d..a66f392 100644 } EXPORT_SYMBOL(nfq_udp_compute_checksum_ipv4); -@@ -115,7 +115,7 @@ nfq_udp_compute_checksum_ipv6(struct udphdr *udph, struct ip6_hdr *ip6h) +@@ -115,7 +115,7 @@ nfq_udp_compute_checksum_ipv6(struct udp { /* checksum field in header needs to be zero for calculation. */ udph->check = 0; diff --git a/package/libs/libnftnl/Makefile b/package/libs/libnftnl/Makefile index 5b541f4518..b23dd2579f 100644 --- a/package/libs/libnftnl/Makefile +++ b/package/libs/libnftnl/Makefile @@ -8,13 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libnftnl -PKG_VERSION:=1.0.6 +PKG_VERSION:=1.1.0 PKG_RELEASE:=1 -PKG_SOURCE_URL:=git://git.netfilter.org/libnftnl -PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=libnftnl-1.0.6 -PKG_MIRROR_HASH:=c9e066e3fd29951cbe96d2898b4d6cdcfe802b3a4f09f8273a508e7a0a20a357 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files +PKG_HASH:=ec0eaca11b165110c2b61e6a7b50a7a0a9b17fa04a0c333f795bec2d19f78f6c PKG_MAINTAINER:=Steven Barth PKG_LICENSE:=GPL-2.0+ @@ -24,6 +23,8 @@ PKG_INSTALL:=1 include $(INCLUDE_DIR)/package.mk +DISABLE_NLS:= + define Package/libnftnl SECTION:=libs CATEGORY:=Libraries @@ -42,8 +43,7 @@ TARGET_CFLAGS += $(FPIC) CONFIGURE_ARGS += \ --enable-static \ --enable-shared \ - --without-json-parsing \ - --without-xml-parsing \ + --without-json-parsing define Build/InstallDev $(INSTALL_DIR) $(1)/usr/include/libnftnl diff --git a/package/libs/libnl-tiny/src/msg.c b/package/libs/libnl-tiny/src/msg.c index e84c281fc9..b502047c4c 100644 --- a/package/libs/libnl-tiny/src/msg.c +++ b/package/libs/libnl-tiny/src/msg.c @@ -166,12 +166,7 @@ #include #include -static size_t default_msg_size; - -static void __init init_msg_size(void) -{ - default_msg_size = getpagesize(); -} +static size_t default_msg_size = 4096; /** * @name Attribute Access diff --git a/package/libs/libnl/Makefile b/package/libs/libnl/Makefile index 7916556c00..2339a95652 100644 --- a/package/libs/libnl/Makefile +++ b/package/libs/libnl/Makefile @@ -8,14 +8,17 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libnl -PKG_VERSION:=3.2.29 +PKG_VERSION:=3.3.0 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://github.com/thom311/libnl/releases/download/libnl3_2_29 -PKG_HASH:=0beb593dc6abfffa18a5c787b27884979c1b7e7f1fd468c801e3cc938a685922 +PKG_SOURCE_URL:=https://github.com/thom311/libnl/releases/download/libnl3_3_0 +PKG_HASH:=705468b5ae4cd1eb099d2d1c476d6a3abe519bc2810becf12fb1e32de1e074e4 PKG_LICENSE:=LGPL-2.1 +PKG_INSTALL:=1 +PKG_FIXUP:=autoreconf + include $(INCLUDE_DIR)/package.mk define Package/libnl/default @@ -77,12 +80,8 @@ endef TARGET_CFLAGS += -ffunction-sections $(FPIC) -define Build/Compile - $(call Build/Compile/Default) - make -C $(PKG_BUILD_DIR) \ - DESTDIR="$(PKG_INSTALL_DIR)" \ - install -endef +CONFIGURE_ARGS += \ + --disable-debug define Build/InstallDev $(INSTALL_DIR) $(1)/usr/include/libnl3 $(1)/usr/lib/pkgconfig diff --git a/package/libs/libnl/patches/100-build-add-Libs.private-field-in-libnl-pkg-config-file.patch b/package/libs/libnl/patches/100-build-add-Libs.private-field-in-libnl-pkg-config-file.patch new file mode 100644 index 0000000000..845a593761 --- /dev/null +++ b/package/libs/libnl/patches/100-build-add-Libs.private-field-in-libnl-pkg-config-file.patch @@ -0,0 +1,30 @@ +From db0d59cd06f3ffd350379847c0885e1bfb85af0f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 7 Mar 2015 11:34:42 +0100 +Subject: [PATCH 2/2] build: add Libs.private field in libnl pkg-config file + +In order to support static linking, the libnl pkg-config file should +indicate in its Libs.private field the libraries that libnl-3.0.a +requires. The LIBS variable contains the appropriate list of +libraries: -lm in all cases, and -lpthread when pthread support is +enabled. This allows to statically link applications against libnl +properly. + +Signed-off-by: Thomas Petazzoni +--- + libnl-3.0.pc.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libnl-3.0.pc.in b/libnl-3.0.pc.in +index b87e3dc..ddbc999 100644 +--- a/libnl-3.0.pc.in ++++ b/libnl-3.0.pc.in +@@ -7,4 +7,5 @@ Name: libnl + Description: Convenience library for netlink sockets + Version: @PACKAGE_VERSION@ + Libs: -L${libdir} -lnl-@MAJ_VERSION@ ++Libs.private: @LIBS@ + Cflags: -I${includedir}/libnl@MAJ_VERSION@ +-- +2.1.0 + diff --git a/package/libs/libnl/patches/101-add-musl-workaround-to-the-libc-compat.h-copy.patch b/package/libs/libnl/patches/101-add-musl-workaround-to-the-libc-compat.h-copy.patch new file mode 100644 index 0000000000..11dc75b898 --- /dev/null +++ b/package/libs/libnl/patches/101-add-musl-workaround-to-the-libc-compat.h-copy.patch @@ -0,0 +1,103 @@ +diff -Naur libnl-3.3.0_rc1.orig/include/linux-private/linux/if_ether.h libnl-3.3.0_rc1/include/linux-private/linux/if_ether.h +--- /include/linux-private/linux/if_ether.h 2017-03-08 19:56:31.824516933 -0800 ++++ /include/linux-private/linux/if_ether.h 2017-03-08 20:07:01.938237767 -0800 +@@ -22,6 +22,7 @@ + #define _LINUX_IF_ETHER_H + + #include ++#include + + /* + * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble +@@ -117,10 +118,12 @@ + * This is an Ethernet frame header. + */ + ++#if __UAPI_DEF_ETHHDR + struct ethhdr { + unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ + unsigned char h_source[ETH_ALEN]; /* source ether addr */ + __be16 h_proto; /* packet type ID field */ + } __attribute__((packed)); ++#endif + + #endif /* _LINUX_IF_ETHER_H */ +diff -Naur libnl-3.3.0_rc1.orig/include/linux-private/linux/libc-compat.h libnl-3.3.0_rc1/include/linux-private/linux/libc-compat.h +--- /include/linux-private/linux/libc-compat.h 2017-03-08 19:56:31.823516923 -0800 ++++ /include/linux-private/linux/libc-compat.h 2017-03-08 20:12:30.376843489 -0800 +@@ -48,10 +48,18 @@ + #ifndef _LIBC_COMPAT_H + #define _LIBC_COMPAT_H + +-/* We have included glibc headers... */ +-#if defined(__GLIBC__) ++/* We're used from userspace... */ ++#if !defined(__KERNEL__) + +-/* Coordinate with glibc netinet/in.h header. */ ++/* Coordinate with libc netinet/if_ether.h */ ++#ifdef _NETINET_IF_ETHER_H /* musl */ ++#define __UAPI_DEF_ETHHDR 0 ++#else ++/* glibc uses __NETINET_IF_ETHER_H, and uses the uapi header. */ ++#define __UAPI_DEF_ETHHDR 1 ++#endif ++ ++/* Coordinate with libc netinet/in.h header. */ + #if defined(_NETINET_IN_H) + + /* GLIBC headers included first so don't define anything +@@ -64,15 +72,7 @@ + #define __UAPI_DEF_IN_CLASS 0 + + #define __UAPI_DEF_IN6_ADDR 0 +-/* The exception is the in6_addr macros which must be defined +- * if the glibc code didn't define them. This guard matches +- * the guard in glibc/inet/netinet/in.h which defines the +- * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */ +-#if defined(__USE_MISC) || defined (__USE_GNU) + #define __UAPI_DEF_IN6_ADDR_ALT 0 +-#else +-#define __UAPI_DEF_IN6_ADDR_ALT 1 +-#endif + #define __UAPI_DEF_SOCKADDR_IN6 0 + #define __UAPI_DEF_IPV6_MREQ 0 + #define __UAPI_DEF_IPPROTO_V6 0 +@@ -83,7 +83,7 @@ + #else + + /* Linux headers included first, and we must define everything +- * we need. The expectation is that glibc will check the ++ * we need. The expectation is that libc will check the + * __UAPI_DEF_* defines and adjust appropriately. */ + #define __UAPI_DEF_IN_ADDR 1 + #define __UAPI_DEF_IN_IPPROTO 1 +@@ -93,7 +93,7 @@ + #define __UAPI_DEF_IN_CLASS 1 + + #define __UAPI_DEF_IN6_ADDR 1 +-/* We unconditionally define the in6_addr macros and glibc must ++/* We unconditionally define the in6_addr macros and libc must + * coordinate. */ + #define __UAPI_DEF_IN6_ADDR_ALT 1 + #define __UAPI_DEF_SOCKADDR_IN6 1 +@@ -115,7 +115,10 @@ + /* If we did not see any headers from any supported C libraries, + * or we are being included in the kernel, then define everything + * that we need. */ +-#else /* !defined(__GLIBC__) */ ++#else /* defined(__KERNEL__) */ ++ ++/* Definitions for if/ether.h */ ++#define __UAPI_DEF_ETHHDR 1 + + /* Definitions for in.h */ + #define __UAPI_DEF_IN_ADDR 1 +@@ -138,6 +141,6 @@ + /* Definitions for xattr.h */ + #define __UAPI_DEF_XATTR 1 + +-#endif /* __GLIBC__ */ ++#endif /* defined(__KERNEL__) */ + + #endif /* _LIBC_COMPAT_H */ diff --git a/package/libs/libnl/patches/102-revert-build-enable-building-cli-during-tests.patch b/package/libs/libnl/patches/102-revert-build-enable-building-cli-during-tests.patch new file mode 100644 index 0000000000..f715bb83f9 --- /dev/null +++ b/package/libs/libnl/patches/102-revert-build-enable-building-cli-during-tests.patch @@ -0,0 +1,115 @@ +From 68f8393bd356a3d0598cf77e1044b7e8b98aa4d8 Mon Sep 17 00:00:00 2001 +Message-Id: <68f8393bd356a3d0598cf77e1044b7e8b98aa4d8.1493920165.git.baruch@tkos.co.il> +From: Baruch Siach +Date: Thu, 4 May 2017 15:56:14 +0300 +Subject: [PATCH] Revert "build: enable building cli during tests" + +This reverts commit 3cb28534d34392ceec4adead0cfa97039796ccb7. + +Contrary to what 3cb28534d commit log claims, the cli programs depend on +dynamic libraries support of the toolchain. Enabling cli programs +unconditionally breaks static build as follows: + +In file included from lib/cli/cls/basic.c:12:0: +./include/netlink/cli/utils.h:25:19: fatal error: dlfcn.h: No such file or directory +compilation terminated. +Makefile:3666: recipe for target 'lib/cli/cls/lib_cli_cls_basic_la-basic.lo' failed +make[1]: *** [lib/cli/cls/lib_cli_cls_basic_la-basic.lo] Error 1 + +Revert that commit to restore the ability of static only build of libnl, and +its dependencies. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/thom311/libnl/pull/141 + + Makefile.am | 21 ++++++--------------- + 1 file changed, 6 insertions(+), 15 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 1b95a559304f..279548394650 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -3,8 +3,6 @@ + ACLOCAL_AMFLAGS = -I m4 + + lib_LTLIBRARIES = +-noinst_LTLIBRARIES = +-check_LTLIBRARIES = + + check_PROGRAMS = + check_programs = +@@ -500,6 +498,8 @@ EXTRA_lib_libnl_xfrm_3_la_DEPENDENCIES = \ + lib_libnl_xfrm_3_la_LIBADD = \ + lib/libnl-3.la + ++if ENABLE_CLI ++ + lib_cli_ltlibraries_cls = \ + lib/cli/cls/basic.la \ + lib/cli/cls/cgroup.la +@@ -513,15 +513,11 @@ lib_cli_ltlibraries_qdisc = \ + lib/cli/qdisc/pfifo.la \ + lib/cli/qdisc/plug.la + +-if ENABLE_CLI + pkglib_clsdir = $(pkglibdir)/cli/cls + pkglib_qdiscdir = $(pkglibdir)/cli/qdisc + pkglib_cls_LTLIBRARIES = $(lib_cli_ltlibraries_cls) + pkglib_qdisc_LTLIBRARIES = $(lib_cli_ltlibraries_qdisc) +-else +-noinst_LTLIBRARIES += \ +- $(lib_cli_ltlibraries_cls) \ +- $(lib_cli_ltlibraries_qdisc) ++ + endif + + lib_cli_ldflags = \ +@@ -550,13 +546,8 @@ lib_cli_qdisc_plug_la_LDFLAGS = $(lib_cli_ldflags) + + ############################################################################### + +-src_lib_ldflags = +- + if ENABLE_CLI + lib_LTLIBRARIES += src/lib/libnl-cli-3.la +-src_lib_ldflags += -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) +-else +-check_LTLIBRARIES += src/lib/libnl-cli-3.la + endif + + src_lib_libnl_cli_3_la_SOURCES = \ +@@ -583,7 +574,7 @@ src_lib_libnl_cli_3_la_CPPFLAGS = \ + -I$(srcdir)/include \ + -I$(builddir)/include + src_lib_libnl_cli_3_la_LDFLAGS = \ +- $(src_lib_ldflags) \ ++ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -Wl,--version-script=$(srcdir)/libnl-cli-3.sym + src_lib_libnl_cli_3_la_LIBADD = \ + lib/libnl-3.la \ +@@ -668,8 +659,6 @@ else + noinst_PROGRAMS += $(cli_programs) + endif + endif +-else +-check_PROGRAMS += $(cli_programs) + endif + + src_genl_ctrl_list_CPPFLAGS = $(src_cppflags) +@@ -847,10 +836,12 @@ tests_test_complex_HTB_with_hash_filters_LDADD = $(tests_ldadd) + tests_test_u32_filter_with_actions_CPPFLAGS = $(tests_cppflags) + tests_test_u32_filter_with_actions_LDADD = $(tests_ldadd) + ++if ENABLE_CLI + check_PROGRAMS += \ + tests/test-cache-mngr \ + tests/test-genl \ + tests/test-nf-cache-mngr ++endif + + tests_cli_ldadd = \ + $(tests_ldadd) \ +-- +2.11.0 + diff --git a/package/libs/libpcap/Makefile b/package/libs/libpcap/Makefile index 4d0ce40993..e702d5c059 100644 --- a/package/libs/libpcap/Makefile +++ b/package/libs/libpcap/Makefile @@ -12,7 +12,8 @@ PKG_VERSION:=1.8.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=http://www.tcpdump.org/release/ +PKG_SOURCE_URL:=http://www.us.tcpdump.org/release/ \ + http://www.tcpdump.org/release/ PKG_HASH:=673dbc69fdc3f5a86fb5759ab19899039a8e5e6c631749e48dcd9c6f0c83541e PKG_FIXUP:=patch-libtool diff --git a/package/libs/libreadline/Makefile b/package/libs/libreadline/Makefile deleted file mode 100644 index 3c1b048fe8..0000000000 --- a/package/libs/libreadline/Makefile +++ /dev/null @@ -1,72 +0,0 @@ -# -# Copyright (C) 2006-2014 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=readline -PKG_VERSION:=7.0 -PKG_RELEASE:=1 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=@GNU/readline -PKG_HASH:=750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334 - -PKG_LICENSE:=GPL-3.0 -PKG_LICENSE_FILES:=COPYING - -PKG_BUILD_PARALLEL:=1 -PKG_FIXUP:=autoreconf -PKG_INSTALL:=1 - -include $(INCLUDE_DIR)/package.mk - -define Package/libreadline - SECTION:=libs - CATEGORY:=Libraries - TITLE:=Command lines edition library - URL:=http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html - ABI_VERSION:=$(PKG_VERSION) -endef - -define Package/libreadline/description - The Readline library provides a set of functions for use by applications - that allow users to edit command lines as they are typed in. Both Emacs - and vi editing modes are available. The Readline library includes - additional functions to maintain a list of previously-entered command - lines, to recall and perhaps reedit those lines, and perform csh-like - history expansion on previous commands. -endef - -# prevent "autoreconf" from removing "aclocal.m4" -PKG_REMOVE_FILES:= - -CONFIGURE_ARGS += \ - --enable-shared \ - --enable-static \ - --with-curses \ - -CONFIGURE_VARS += \ - bash_cv_wcwidth_broken=no \ - bash_cv_func_sigsetjmp=yes \ - -TARGET_CPPFLAGS:=-I. -I.. $(TARGET_CPPFLAGS) - -TARGET_CFLAGS += $(FPIC) - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include - $(CP) $(PKG_INSTALL_DIR)/usr/include/readline $(1)/usr/include/ - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.{a,so,so.7,so.7.0} $(1)/usr/lib/ -endef - -define Package/libreadline/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.{so,so.7,so.7.0} $(1)/usr/lib/ -endef - -$(eval $(call BuildPackage,libreadline)) diff --git a/package/libs/librpc/Makefile b/package/libs/librpc/Makefile index 0330614c31..ffa540ef70 100644 --- a/package/libs/librpc/Makefile +++ b/package/libs/librpc/Makefile @@ -4,7 +4,7 @@ PKG_NAME:=librpc PKG_RELEASE=1 PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL=$(LEDE_GIT)/project/librpc-uclibc.git +PKG_SOURCE_URL=$(PROJECT_GIT)/librpc-uclibc.git PKG_SOURCE_DATE:=2015-11-04 PKG_SOURCE_VERSION:=a921e3ded051746f9f7cd5e5a312fb6771716aac PKG_MIRROR_HASH:=22c8dc55e1c4e8e31635a37708a3ce622a6ca33ebd918a4321b0be6ffce89b21 diff --git a/package/libs/libtool/Makefile b/package/libs/libtool/Makefile index 5eb521a72b..37b91dce7a 100644 --- a/package/libs/libtool/Makefile +++ b/package/libs/libtool/Makefile @@ -8,15 +8,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libtool -PKG_VERSION:=2.4 -PKG_RELEASE:=2 +PKG_VERSION:=2.4.6 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@GNU/libtool -PKG_HASH:=afcce660d3dc54c63a0a5ba3cf05272239dc3c54bbeba20f6bad250f9dc007ae +PKG_HASH:=7c87a8c2c8c0fc9cd5019e402bed4292462d00a718a7cd5f11218153bf28b26f PKG_LICENSE:=GPL-2.0+ PKG_LICENSE_FILES:=COPYING +PKG_CPE_ID:=cpe:/a:gnu:libtool PKG_BUILD_PARALLEL:=0 diff --git a/package/libs/libtool/patches/160-passthrough-ssp.patch b/package/libs/libtool/patches/160-passthrough-ssp.patch deleted file mode 100644 index 6fcbe68000..0000000000 --- a/package/libs/libtool/patches/160-passthrough-ssp.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/libltdl/config/ltmain.m4sh -+++ b/libltdl/config/ltmain.m4sh -@@ -5051,7 +5051,7 @@ func_mode_link () - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -- -O*|-flto*|-fwhopr*|-fuse-linker-plugin) -+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" diff --git a/package/libs/libubox/Makefile b/package/libs/libubox/Makefile index fa7107e5da..367a79d949 100644 --- a/package/libs/libubox/Makefile +++ b/package/libs/libubox/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=libubox PKG_RELEASE=1 PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL=$(LEDE_GIT)/project/libubox.git -PKG_SOURCE_DATE:=2017-02-24 -PKG_SOURCE_VERSION:=96305a3cafcc9c0df7f189567671bb26ce3eb129 -PKG_MIRROR_HASH:=19dc9f73621a65d1374427160f59e338db45ee6edc30edff6a6fee10dcdfc8b6 +PKG_SOURCE_URL=$(PROJECT_GIT)/libubox.git +PKG_SOURCE_DATE:=2018-04-12 +PKG_SOURCE_VERSION:=6eff829d788b36939325557066f58aafd6a05321 +PKG_MIRROR_HASH:=d0ea16385a133d668d18d793d0bffd867a8c799832a176f0a312c1b473ff918d CMAKE_INSTALL:=1 PKG_LICENSE:=ISC diff --git a/package/libs/libunwind/Makefile b/package/libs/libunwind/Makefile index 7d51f7487d..ddb467f656 100644 --- a/package/libs/libunwind/Makefile +++ b/package/libs/libunwind/Makefile @@ -1,5 +1,6 @@ # # Copyright (C) 2008-2013 OpenWrt.org +# Copyright (C) 2017 Yousong Zhou # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -8,20 +9,22 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libunwind -PKG_VERSION:=1.1 -PKG_RELEASE:=1 +PKG_VERSION:=1.2.1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=@SAVANNAH/$(PKG_NAME) -PKG_HASH:=9dfe0fcae2a866de9d3942c66995e4b460230446887dbdab302d41a8aee8d09a +PKG_HASH:=3f3ecb90e28cbe53fba7a4a27ccce7aad188d3210bb1964a923a731a27a75acb PKG_FIXUP:=autoreconf PKG_INSTALL:=1 PKG_LICENSE:=X11 PKG_LICENSE_FILES:=LICENSE +PKG_CPE_ID:=cpe:/a:libunwind_project:libunwind PKG_MAINTAINER:=Yousong Zhou +PKG_SSP:=0 include $(INCLUDE_DIR)/package.mk define Package/libunwind @@ -29,14 +32,17 @@ define Package/libunwind CATEGORY:=Libraries TITLE:=The libunwind project URL:=http://www.nongnu.org/libunwind/ - DEPENDS:=@(mips||mipsel||powerpc||i386||x86_64) + DEPENDS:=@(mips||mipsel||powerpc||i386||x86_64||arm||aarch64) endef define Package/libunwind/description Libunwind defines a portable and efficient C programming interface (API) to determine the call-chain of a program. endef -CONFIGURE_ARGS += --enable-minidebuginfo=no +CONFIGURE_ARGS += \ + --disable-documentation \ + --enable-minidebuginfo=no \ + define Package/libunwind/install $(INSTALL_DIR) $(1)/usr/lib diff --git a/package/libs/libunwind/patches/001-disable-tests.patch b/package/libs/libunwind/patches/001-disable-tests.patch index 9700fea477..667b6a71e2 100644 --- a/package/libs/libunwind/patches/001-disable-tests.patch +++ b/package/libs/libunwind/patches/001-disable-tests.patch @@ -1,22 +1,11 @@ --- a/Makefile.am +++ b/Makefile.am -@@ -36,7 +36,7 @@ +@@ -42,7 +42,7 @@ endif nodist_include_HEADERS = include/libunwind-common.h --SUBDIRS = src tests doc -+SUBDIRS = src doc +-SUBDIRS = src tests ++SUBDIRS = src - noinst_HEADERS = include/dwarf.h include/dwarf_i.h include/dwarf-eh.h \ - include/compiler.h include/libunwind_i.h include/mempool.h \ ---- a/Makefile.in -+++ b/Makefile.in -@@ -313,7 +313,7 @@ - $(am__append_7) $(am__append_8) $(am__append_9) \ - $(am__append_10) - nodist_include_HEADERS = include/libunwind-common.h --SUBDIRS = src tests doc -+SUBDIRS = src doc - noinst_HEADERS = include/dwarf.h include/dwarf_i.h include/dwarf-eh.h \ - include/compiler.h include/libunwind_i.h include/mempool.h \ - include/remote.h \ + if CONFIG_DOCS + SUBDIRS += doc diff --git a/package/libs/libunwind/patches/004-ppc-musl.patch b/package/libs/libunwind/patches/004-ppc-musl.patch new file mode 100644 index 0000000000..f0f46258ac --- /dev/null +++ b/package/libs/libunwind/patches/004-ppc-musl.patch @@ -0,0 +1,383 @@ +--- a/include/libunwind-ppc32.h ++++ b/include/libunwind-ppc32.h +@@ -74,6 +74,88 @@ typedef int64_t unw_sword_t; + + typedef long double unw_tdep_fpreg_t; + ++#ifndef __GLIBC__ ++ ++/* We can't include asm/ptrace.h here, as it conflicts with musl's definitions */ ++ ++#define PT_R0 0 ++#define PT_R1 1 ++#define PT_R2 2 ++#define PT_R3 3 ++#define PT_R4 4 ++#define PT_R5 5 ++#define PT_R6 6 ++#define PT_R7 7 ++#define PT_R8 8 ++#define PT_R9 9 ++#define PT_R10 10 ++#define PT_R11 11 ++#define PT_R12 12 ++#define PT_R13 13 ++#define PT_R14 14 ++#define PT_R15 15 ++#define PT_R16 16 ++#define PT_R17 17 ++#define PT_R18 18 ++#define PT_R19 19 ++#define PT_R20 20 ++#define PT_R21 21 ++#define PT_R22 22 ++#define PT_R23 23 ++#define PT_R24 24 ++#define PT_R25 25 ++#define PT_R26 26 ++#define PT_R27 27 ++#define PT_R28 28 ++#define PT_R29 29 ++#define PT_R30 30 ++#define PT_R31 31 ++ ++#define PT_NIP 32 ++#define PT_MSR 33 ++#define PT_ORIG_R3 34 ++#define PT_CTR 35 ++#define PT_LNK 36 ++#define PT_XER 37 ++#define PT_CCR 38 ++#ifndef __powerpc64__ ++#define PT_MQ 39 ++#else ++#define PT_SOFTE 39 ++#endif ++#define PT_TRAP 40 ++#define PT_DAR 41 ++#define PT_DSISR 42 ++#define PT_RESULT 43 ++#define PT_DSCR 44 ++#define PT_REGS_COUNT 44 ++ ++#define PT_FPR0 48 /* each FP reg occupies 2 slots in this space */ ++ ++#ifndef __powerpc64__ ++ ++#define PT_FPR31 (PT_FPR0 + 2*31) ++#define PT_FPSCR (PT_FPR0 + 2*32 + 1) ++ ++#else /* __powerpc64__ */ ++ ++#define PT_FPSCR (PT_FPR0 + 32) /* each FP reg occupies 1 slot in 64-bit space */ ++ ++ ++#define PT_VR0 82 /* each Vector reg occupies 2 slots in 64-bit */ ++#define PT_VSCR (PT_VR0 + 32*2 + 1) ++#define PT_VRSAVE (PT_VR0 + 33*2) ++ ++ ++/* ++ * Only store first 32 VSRs here. The second 32 VSRs in VR0-31 ++ */ ++#define PT_VSR0 150 /* each VSR reg occupies 2 slots in 64-bit */ ++#define PT_VSR31 (PT_VSR0 + 2*31) ++#endif /* __powerpc64__ */ ++ ++#endif /* !__GLIBC__ */ ++ + typedef enum + { + UNW_PPC32_R0, +--- a/include/libunwind-ppc64.h ++++ b/include/libunwind-ppc64.h +@@ -81,6 +81,88 @@ typedef struct { + uint64_t halves[2]; + } unw_tdep_vreg_t; + ++#ifndef __GLIBC__ ++ ++/* We can't include asm/ptrace.h here, as it conflicts with musl's definitions */ ++ ++#define PT_R0 0 ++#define PT_R1 1 ++#define PT_R2 2 ++#define PT_R3 3 ++#define PT_R4 4 ++#define PT_R5 5 ++#define PT_R6 6 ++#define PT_R7 7 ++#define PT_R8 8 ++#define PT_R9 9 ++#define PT_R10 10 ++#define PT_R11 11 ++#define PT_R12 12 ++#define PT_R13 13 ++#define PT_R14 14 ++#define PT_R15 15 ++#define PT_R16 16 ++#define PT_R17 17 ++#define PT_R18 18 ++#define PT_R19 19 ++#define PT_R20 20 ++#define PT_R21 21 ++#define PT_R22 22 ++#define PT_R23 23 ++#define PT_R24 24 ++#define PT_R25 25 ++#define PT_R26 26 ++#define PT_R27 27 ++#define PT_R28 28 ++#define PT_R29 29 ++#define PT_R30 30 ++#define PT_R31 31 ++ ++#define PT_NIP 32 ++#define PT_MSR 33 ++#define PT_ORIG_R3 34 ++#define PT_CTR 35 ++#define PT_LNK 36 ++#define PT_XER 37 ++#define PT_CCR 38 ++#ifndef __powerpc64__ ++#define PT_MQ 39 ++#else ++#define PT_SOFTE 39 ++#endif ++#define PT_TRAP 40 ++#define PT_DAR 41 ++#define PT_DSISR 42 ++#define PT_RESULT 43 ++#define PT_DSCR 44 ++#define PT_REGS_COUNT 44 ++ ++#define PT_FPR0 48 /* each FP reg occupies 2 slots in this space */ ++ ++#ifndef __powerpc64__ ++ ++#define PT_FPR31 (PT_FPR0 + 2*31) ++#define PT_FPSCR (PT_FPR0 + 2*32 + 1) ++ ++#else /* __powerpc64__ */ ++ ++#define PT_FPSCR (PT_FPR0 + 32) /* each FP reg occupies 1 slot in 64-bit space */ ++ ++ ++#define PT_VR0 82 /* each Vector reg occupies 2 slots in 64-bit */ ++#define PT_VSCR (PT_VR0 + 32*2 + 1) ++#define PT_VRSAVE (PT_VR0 + 33*2) ++ ++ ++/* ++ * Only store first 32 VSRs here. The second 32 VSRs in VR0-31 ++ */ ++#define PT_VSR0 150 /* each VSR reg occupies 2 slots in 64-bit */ ++#define PT_VSR31 (PT_VSR0 + 2*31) ++#endif /* __powerpc64__ */ ++ ++#endif /* !__GLIBC__ */ ++ + typedef enum + { + UNW_PPC64_R0, +--- a/src/ppc32/Ginit.c ++++ b/src/ppc32/Ginit.c +@@ -46,14 +46,19 @@ static void * + uc_addr (ucontext_t *uc, int reg) + { + void *addr; ++#ifdef __GLIBC__ ++ mcontext_t *mc = uc->uc_mcontext.uc_regs; ++#else ++ mcontext_t *mc = &uc->uc_mcontext; ++#endif + + if ((unsigned) (reg - UNW_PPC32_R0) < 32) +- addr = &uc->uc_mcontext.uc_regs->gregs[reg - UNW_PPC32_R0]; ++ addr = &mc->gregs[reg - UNW_PPC32_R0]; + + else + if ( ((unsigned) (reg - UNW_PPC32_F0) < 32) && + ((unsigned) (reg - UNW_PPC32_F0) >= 0) ) +- addr = &uc->uc_mcontext.uc_regs->fpregs.fpregs[reg - UNW_PPC32_F0]; ++ addr = &mc->fpregs.fpregs[reg - UNW_PPC32_F0]; + + else + { +@@ -76,7 +81,7 @@ uc_addr (ucontext_t *uc, int reg) + default: + return NULL; + } +- addr = &uc->uc_mcontext.uc_regs->gregs[gregs_idx]; ++ addr = &mc->gregs[gregs_idx]; + } + return addr; + } +--- a/src/ppc32/ucontext_i.h ++++ b/src/ppc32/ucontext_i.h +@@ -46,83 +46,89 @@ WITH THE SOFTWARE OR THE USE OR OTHER DE + various structure members. */ + static ucontext_t dmy_ctxt UNUSED; + +-#define UC_MCONTEXT_GREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[0] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[1] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[2] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[3] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[4] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[5] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[6] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[7] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[8] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[9] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[10] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[11] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[12] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[13] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[14] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[15] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[16] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[17] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[18] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[19] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[20] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[21] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[22] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[23] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[24] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[25] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[26] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[27] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[28] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[29] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[30] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[31] - (void *)&dmy_ctxt) ++#ifdef __GLIBC__ ++#define UC_MCONTEXT_OFFSET(field) ((void *)&dmy_ctxt.uc_mcontext.uc_regs->field - (void *)&dmy_ctxt) ++#else ++#define UC_MCONTEXT_OFFSET(field) ((void *)&dmy_ctxt.uc_mcontext.field - (void *)&dmy_ctxt) ++#endif ++ ++#define UC_MCONTEXT_GREGS_R0 UC_MCONTEXT_OFFSET(gregs[0]) ++#define UC_MCONTEXT_GREGS_R1 UC_MCONTEXT_OFFSET(gregs[1]) ++#define UC_MCONTEXT_GREGS_R2 UC_MCONTEXT_OFFSET(gregs[2]) ++#define UC_MCONTEXT_GREGS_R3 UC_MCONTEXT_OFFSET(gregs[3]) ++#define UC_MCONTEXT_GREGS_R4 UC_MCONTEXT_OFFSET(gregs[4]) ++#define UC_MCONTEXT_GREGS_R5 UC_MCONTEXT_OFFSET(gregs[5]) ++#define UC_MCONTEXT_GREGS_R6 UC_MCONTEXT_OFFSET(gregs[6]) ++#define UC_MCONTEXT_GREGS_R7 UC_MCONTEXT_OFFSET(gregs[7]) ++#define UC_MCONTEXT_GREGS_R8 UC_MCONTEXT_OFFSET(gregs[8]) ++#define UC_MCONTEXT_GREGS_R9 UC_MCONTEXT_OFFSET(gregs[9]) ++#define UC_MCONTEXT_GREGS_R10 UC_MCONTEXT_OFFSET(gregs[10]) ++#define UC_MCONTEXT_GREGS_R11 UC_MCONTEXT_OFFSET(gregs[11]) ++#define UC_MCONTEXT_GREGS_R12 UC_MCONTEXT_OFFSET(gregs[12]) ++#define UC_MCONTEXT_GREGS_R13 UC_MCONTEXT_OFFSET(gregs[13]) ++#define UC_MCONTEXT_GREGS_R14 UC_MCONTEXT_OFFSET(gregs[14]) ++#define UC_MCONTEXT_GREGS_R15 UC_MCONTEXT_OFFSET(gregs[15]) ++#define UC_MCONTEXT_GREGS_R16 UC_MCONTEXT_OFFSET(gregs[16]) ++#define UC_MCONTEXT_GREGS_R17 UC_MCONTEXT_OFFSET(gregs[17]) ++#define UC_MCONTEXT_GREGS_R18 UC_MCONTEXT_OFFSET(gregs[18]) ++#define UC_MCONTEXT_GREGS_R19 UC_MCONTEXT_OFFSET(gregs[19]) ++#define UC_MCONTEXT_GREGS_R20 UC_MCONTEXT_OFFSET(gregs[20]) ++#define UC_MCONTEXT_GREGS_R21 UC_MCONTEXT_OFFSET(gregs[21]) ++#define UC_MCONTEXT_GREGS_R22 UC_MCONTEXT_OFFSET(gregs[22]) ++#define UC_MCONTEXT_GREGS_R23 UC_MCONTEXT_OFFSET(gregs[23]) ++#define UC_MCONTEXT_GREGS_R24 UC_MCONTEXT_OFFSET(gregs[24]) ++#define UC_MCONTEXT_GREGS_R25 UC_MCONTEXT_OFFSET(gregs[25]) ++#define UC_MCONTEXT_GREGS_R26 UC_MCONTEXT_OFFSET(gregs[26]) ++#define UC_MCONTEXT_GREGS_R27 UC_MCONTEXT_OFFSET(gregs[27]) ++#define UC_MCONTEXT_GREGS_R28 UC_MCONTEXT_OFFSET(gregs[28]) ++#define UC_MCONTEXT_GREGS_R29 UC_MCONTEXT_OFFSET(gregs[29]) ++#define UC_MCONTEXT_GREGS_R30 UC_MCONTEXT_OFFSET(gregs[30]) ++#define UC_MCONTEXT_GREGS_R31 UC_MCONTEXT_OFFSET(gregs[31]) + +-#define UC_MCONTEXT_GREGS_MSR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[MSR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_ORIG_GPR3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[ORIG_GPR3_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_CTR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[CTR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_LINK ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[LINK_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_XER ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[XER_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_CCR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[CCR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_SOFTE ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[SOFTE_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_TRAP ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[TRAP_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_DAR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[DAR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_DSISR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[DSISR_IDX] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_GREGS_RESULT ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[RESULT_IDX] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_GREGS_MSR UC_MCONTEXT_OFFSET(gregs[MSR_IDX]) ++#define UC_MCONTEXT_GREGS_ORIG_GPR3 UC_MCONTEXT_OFFSET(gregs[ORIG_GPR3_IDX]) ++#define UC_MCONTEXT_GREGS_CTR UC_MCONTEXT_OFFSET(gregs[CTR_IDX]) ++#define UC_MCONTEXT_GREGS_LINK UC_MCONTEXT_OFFSET(gregs[LINK_IDX]) ++#define UC_MCONTEXT_GREGS_XER UC_MCONTEXT_OFFSET(gregs[XER_IDX]) ++#define UC_MCONTEXT_GREGS_CCR UC_MCONTEXT_OFFSET(gregs[CCR_IDX]) ++#define UC_MCONTEXT_GREGS_SOFTE UC_MCONTEXT_OFFSET(gregs[SOFTE_IDX]) ++#define UC_MCONTEXT_GREGS_TRAP UC_MCONTEXT_OFFSET(gregs[TRAP_IDX]) ++#define UC_MCONTEXT_GREGS_DAR UC_MCONTEXT_OFFSET(gregs[DAR_IDX]) ++#define UC_MCONTEXT_GREGS_DSISR UC_MCONTEXT_OFFSET(gregs[DSISR_IDX]) ++#define UC_MCONTEXT_GREGS_RESULT UC_MCONTEXT_OFFSET(gregs[RESULT_IDX]) + +-#define UC_MCONTEXT_FREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[0] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[1] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[2] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[3] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[4] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[5] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[6] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[7] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[8] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[9] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[10] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[11] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[12] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[13] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[14] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[15] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[16] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[17] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[18] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[19] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[20] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[21] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[22] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[23] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[24] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[25] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[26] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[27] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[28] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[29] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[30] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[31] - (void *)&dmy_ctxt) +-#define UC_MCONTEXT_FREGS_FPSCR ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[32] - (void *)&dmy_ctxt) ++#define UC_MCONTEXT_FREGS_R0 UC_MCONTEXT_OFFSET(fpregs.fpregs[0]) ++#define UC_MCONTEXT_FREGS_R1 UC_MCONTEXT_OFFSET(fpregs.fpregs[1]) ++#define UC_MCONTEXT_FREGS_R2 UC_MCONTEXT_OFFSET(fpregs.fpregs[2]) ++#define UC_MCONTEXT_FREGS_R3 UC_MCONTEXT_OFFSET(fpregs.fpregs[3]) ++#define UC_MCONTEXT_FREGS_R4 UC_MCONTEXT_OFFSET(fpregs.fpregs[4]) ++#define UC_MCONTEXT_FREGS_R5 UC_MCONTEXT_OFFSET(fpregs.fpregs[5]) ++#define UC_MCONTEXT_FREGS_R6 UC_MCONTEXT_OFFSET(fpregs.fpregs[6]) ++#define UC_MCONTEXT_FREGS_R7 UC_MCONTEXT_OFFSET(fpregs.fpregs[7]) ++#define UC_MCONTEXT_FREGS_R8 UC_MCONTEXT_OFFSET(fpregs.fpregs[8]) ++#define UC_MCONTEXT_FREGS_R9 UC_MCONTEXT_OFFSET(fpregs.fpregs[9]) ++#define UC_MCONTEXT_FREGS_R10 UC_MCONTEXT_OFFSET(fpregs.fpregs[10]) ++#define UC_MCONTEXT_FREGS_R11 UC_MCONTEXT_OFFSET(fpregs.fpregs[11]) ++#define UC_MCONTEXT_FREGS_R12 UC_MCONTEXT_OFFSET(fpregs.fpregs[12]) ++#define UC_MCONTEXT_FREGS_R13 UC_MCONTEXT_OFFSET(fpregs.fpregs[13]) ++#define UC_MCONTEXT_FREGS_R14 UC_MCONTEXT_OFFSET(fpregs.fpregs[14]) ++#define UC_MCONTEXT_FREGS_R15 UC_MCONTEXT_OFFSET(fpregs.fpregs[15]) ++#define UC_MCONTEXT_FREGS_R16 UC_MCONTEXT_OFFSET(fpregs.fpregs[16]) ++#define UC_MCONTEXT_FREGS_R17 UC_MCONTEXT_OFFSET(fpregs.fpregs[17]) ++#define UC_MCONTEXT_FREGS_R18 UC_MCONTEXT_OFFSET(fpregs.fpregs[18]) ++#define UC_MCONTEXT_FREGS_R19 UC_MCONTEXT_OFFSET(fpregs.fpregs[19]) ++#define UC_MCONTEXT_FREGS_R20 UC_MCONTEXT_OFFSET(fpregs.fpregs[20]) ++#define UC_MCONTEXT_FREGS_R21 UC_MCONTEXT_OFFSET(fpregs.fpregs[21]) ++#define UC_MCONTEXT_FREGS_R22 UC_MCONTEXT_OFFSET(fpregs.fpregs[22]) ++#define UC_MCONTEXT_FREGS_R23 UC_MCONTEXT_OFFSET(fpregs.fpregs[23]) ++#define UC_MCONTEXT_FREGS_R24 UC_MCONTEXT_OFFSET(fpregs.fpregs[24]) ++#define UC_MCONTEXT_FREGS_R25 UC_MCONTEXT_OFFSET(fpregs.fpregs[25]) ++#define UC_MCONTEXT_FREGS_R26 UC_MCONTEXT_OFFSET(fpregs.fpregs[26]) ++#define UC_MCONTEXT_FREGS_R27 UC_MCONTEXT_OFFSET(fpregs.fpregs[27]) ++#define UC_MCONTEXT_FREGS_R28 UC_MCONTEXT_OFFSET(fpregs.fpregs[28]) ++#define UC_MCONTEXT_FREGS_R29 UC_MCONTEXT_OFFSET(fpregs.fpregs[29]) ++#define UC_MCONTEXT_FREGS_R30 UC_MCONTEXT_OFFSET(fpregs.fpregs[30]) ++#define UC_MCONTEXT_FREGS_R31 UC_MCONTEXT_OFFSET(fpregs.fpregs[31]) ++#define UC_MCONTEXT_FREGS_FPSCR UC_MCONTEXT_OFFSET(fpregs.fpregs[32]) + + #endif diff --git a/package/libs/libusb-compat/Makefile b/package/libs/libusb-compat/Makefile index 59c5a80bd0..0dc93941a9 100644 --- a/package/libs/libusb-compat/Makefile +++ b/package/libs/libusb-compat/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libusb-compat -PKG_VERSION:=0.1.4 -PKG_RELEASE:=2 +PKG_VERSION:=0.1.5 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=@SF/libusb -PKG_HASH:=ed5bdd160c7b01ef767fb931a81b454f46226d1e2cf58502ced758d3e5a9fdc4 +PKG_HASH:=404ef4b6b324be79ac1bfb3d839eac860fbc929e6acb1ef88793a6ea328bc55a PKG_INSTALL:=1 PKG_BUILD_PARALLEL:=1 diff --git a/package/libs/libusb/Makefile b/package/libs/libusb/Makefile index 2d1d9c2b50..54008212b9 100644 --- a/package/libs/libusb/Makefile +++ b/package/libs/libusb/Makefile @@ -8,12 +8,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libusb -PKG_VERSION:=1.0.21 +PKG_VERSION:=1.0.22 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=@SF/$(PKG_NAME) -PKG_HASH:=7dce9cce9a81194b7065ee912bcd55eeffebab694ea403ffb91b67db66b1824b +PKG_SOURCE_URL:=\ + https://github.com/libusb/libusb/releases/download/v$(PKG_VERSION) \ + @SF/$(PKG_NAME) +PKG_HASH:=75aeb9d59a4fdb800d329a545c2e6799f732362193b465ea198f2aa275518157 PKG_INSTALL:=1 PKG_BUILD_PARALLEL:=0 @@ -28,7 +30,7 @@ define Package/libusb-1.0 CATEGORY:=Libraries TITLE:=A library for accessing Linux USB devices DEPENDS:=+libpthread +librt - URL:=http://libusb.wiki.sourceforge.net/ + URL:=http://libusb.info/ endef define Package/libusb-1.0/description diff --git a/package/libs/lzo/Makefile b/package/libs/lzo/Makefile index e939616101..ef33619d88 100644 --- a/package/libs/lzo/Makefile +++ b/package/libs/lzo/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=lzo -PKG_VERSION:=2.09 +PKG_VERSION:=2.10 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://www.oberhumer.com/opensource/lzo/download/ -PKG_HASH:=f294a7ced313063c057c504257f437c8335c41bfeed23531ee4e6a2b87bcb34c +PKG_HASH:=c0f892943208266f9b6543b3ae308fab6284c5c90e627931446fb49b4221a072 PKG_FIXUP:=autoreconf PKG_INSTALL:=1 @@ -35,20 +35,13 @@ define Package/liblzo/description in real-time. This means it favours speed over compression ratio. endef -define Build/Configure - $(call Build/Configure/Default, \ - --enable-shared \ - --enable-static \ - ) -endef +CONFIGURE_ARGS += \ + --enable-shared \ + --enable-static \ TARGET_CFLAGS += $(FPIC) MAKE_FLAGS += CFLAGS_O="$(TARGET_CFLAGS)" -ifeq ($(CONFIG_i386)$(CONFIG_x86_64),) - TARGET_CFLAGS += -DLZO_CFG_NO_UNALIGNED=1 -endif - define Build/InstallDev $(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/include/lzo $(1)/usr/include/ diff --git a/package/libs/mbedtls/Makefile b/package/libs/mbedtls/Makefile index ea4c533db0..8e0a480e40 100644 --- a/package/libs/mbedtls/Makefile +++ b/package/libs/mbedtls/Makefile @@ -8,22 +8,22 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mbedtls -PKG_VERSION:=2.8.0 +PKG_VERSION:=2.9.0 PKG_RELEASE:=1 PKG_USE_MIPS16:=0 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-gpl.tgz PKG_SOURCE_URL:=https://tls.mbed.org/download/ -PKG_HASH:=649eb27187154590edda52943a7f468e740ec08807e5bf68ff45f4e8ffd68923 +PKG_HASH:=361837d0d8d4e178ac51ea1a4eacfbc0c57ea3cafb460fd6b46a1f4223a4e151 PKG_BUILD_PARALLEL:=1 PKG_LICENSE:=GPL-2.0+ +PKG_CPE_ID:=cpe:/a:arm:mbed_tls include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/cmake.mk define Package/mbedtls/Default - SUBMENU:=SSL TITLE:=Embedded SSL URL:=https://tls.mbed.org endef @@ -37,15 +37,30 @@ define Package/libmbedtls $(call Package/mbedtls/Default) SECTION:=libs CATEGORY:=Libraries + SUBMENU:=SSL TITLE+= (library) ABI_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE) endef +define Package/mbedtls-util +$(call Package/mbedtls/Default) + SECTION:=utils + CATEGORY:=Utilities + TITLE+= (utilities) + DEPENDS:=+libmbedtls +endef + define Package/libmbedtls/description $(call Package/mbedtls/Default/description) This package contains the mbedtls library. endef +define Package/mbedtls-util/description +$(call Package/mbedtls/Default/description) +This package contains mbedtls helper programs for private key and +CSR generation (gen_key, cert_req) +endef + PKG_INSTALL:=1 TARGET_CFLAGS += -ffunction-sections -fdata-sections @@ -54,7 +69,7 @@ CMAKE_OPTIONS += \ -DCMAKE_BUILD_TYPE:String="Release" \ -DUSE_SHARED_MBEDTLS_LIBRARY:Bool=ON \ -DENABLE_TESTING:Bool=OFF \ - -DENABLE_PROGRAMS:Bool=OFF \ + -DENABLE_PROGRAMS:Bool=ON define Build/InstallDev $(INSTALL_DIR) $(1)/usr/include @@ -69,4 +84,11 @@ define Package/libmbedtls/install $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib/ endef +define Package/mbedtls-util/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gen_key $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cert_req $(1)/usr/bin/ +endef + $(eval $(call BuildPackage,libmbedtls)) +$(eval $(call BuildPackage,mbedtls-util)) diff --git a/package/libs/mbedtls/patches/200-config.patch b/package/libs/mbedtls/patches/200-config.patch index 3dfa9e7a22..7bd0711e2c 100644 --- a/package/libs/mbedtls/patches/200-config.patch +++ b/package/libs/mbedtls/patches/200-config.patch @@ -1,6 +1,6 @@ --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h -@@ -566,17 +566,17 @@ +@@ -599,19 +599,19 @@ * * Comment macros to disable the curve and functions for it */ @@ -24,9 +24,12 @@ +//#define MBEDTLS_ECP_DP_BP384R1_ENABLED +//#define MBEDTLS_ECP_DP_BP512R1_ENABLED #define MBEDTLS_ECP_DP_CURVE25519_ENABLED +-#define MBEDTLS_ECP_DP_CURVE448_ENABLED ++//#define MBEDTLS_ECP_DP_CURVE448_ENABLED /** -@@ -601,8 +601,8 @@ + * \def MBEDTLS_ECP_NIST_OPTIM +@@ -635,8 +635,8 @@ * Requires: MBEDTLS_HMAC_DRBG_C * * Comment this macro to disable deterministic ECDSA. @@ -36,7 +39,7 @@ /** * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED -@@ -655,7 +655,7 @@ +@@ -689,7 +689,7 @@ * See dhm.h for more details. * */ @@ -45,7 +48,7 @@ /** * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED -@@ -674,8 +674,8 @@ +@@ -708,8 +708,8 @@ * MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 * MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA * MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA @@ -55,7 +58,7 @@ /** * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED -@@ -700,7 +700,7 @@ +@@ -734,7 +734,7 @@ * MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA * MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA */ @@ -64,7 +67,7 @@ /** * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED -@@ -834,7 +834,7 @@ +@@ -868,7 +868,7 @@ * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 * MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 */ @@ -73,7 +76,7 @@ /** * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED -@@ -858,7 +858,7 @@ +@@ -892,7 +892,7 @@ * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 * MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 */ @@ -82,7 +85,7 @@ /** * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED -@@ -962,7 +962,7 @@ +@@ -996,7 +996,7 @@ * This option is only useful if both MBEDTLS_SHA256_C and * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used. */ @@ -91,7 +94,7 @@ /** * \def MBEDTLS_ENTROPY_NV_SEED -@@ -1057,14 +1057,14 @@ +@@ -1091,14 +1091,14 @@ * Uncomment this macro to disable the use of CRT in RSA. * */ @@ -108,7 +111,7 @@ /** * \def MBEDTLS_SHA256_SMALLER -@@ -1080,7 +1080,7 @@ +@@ -1114,7 +1114,7 @@ * * Uncomment to enable the smaller implementation of SHA256. */ @@ -117,7 +120,7 @@ /** * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES -@@ -1207,7 +1207,7 @@ +@@ -1241,7 +1241,7 @@ * configuration of this extension). * */ @@ -126,7 +129,7 @@ /** * \def MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO -@@ -1381,8 +1381,8 @@ +@@ -1415,8 +1415,8 @@ * callbacks are provided by MBEDTLS_SSL_TICKET_C. * * Comment this macro to disable support for SSL session tickets @@ -136,7 +139,7 @@ /** * \def MBEDTLS_SSL_EXPORT_KEYS -@@ -1412,7 +1412,7 @@ +@@ -1446,7 +1446,7 @@ * * Comment this macro to disable support for truncated HMAC in SSL */ @@ -145,7 +148,7 @@ /** * \def MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT -@@ -1470,8 +1470,8 @@ +@@ -1504,8 +1504,8 @@ * Requires: MBEDTLS_VERSION_C * * Comment this to disable run-time checking and save ROM space @@ -155,7 +158,7 @@ /** * \def MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3 -@@ -1801,7 +1801,7 @@ +@@ -1835,7 +1835,7 @@ * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 * MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 */ @@ -164,7 +167,7 @@ /** * \def MBEDTLS_CCM_C -@@ -1815,7 +1815,7 @@ +@@ -1849,7 +1849,7 @@ * This module enables the AES-CCM ciphersuites, if other requisites are * enabled as well. */ @@ -173,7 +176,7 @@ /** * \def MBEDTLS_CERTS_C -@@ -1827,7 +1827,7 @@ +@@ -1861,7 +1861,7 @@ * * This module is used for testing (ssl_client/server). */ @@ -182,7 +185,7 @@ /** * \def MBEDTLS_CIPHER_C -@@ -1880,7 +1880,7 @@ +@@ -1914,7 +1914,7 @@ * * This module provides debugging functions. */ @@ -191,7 +194,7 @@ /** * \def MBEDTLS_DES_C -@@ -1909,7 +1909,7 @@ +@@ -1943,7 +1943,7 @@ * \warning DES is considered a weak cipher and its use constitutes a * security risk. We recommend considering stronger ciphers instead. */ @@ -200,7 +203,7 @@ /** * \def MBEDTLS_DHM_C -@@ -2070,8 +2070,8 @@ +@@ -2104,8 +2104,8 @@ * Requires: MBEDTLS_MD_C * * Uncomment to enable the HMAC_DRBG random number geerator. @@ -210,7 +213,16 @@ /** * \def MBEDTLS_MD_C -@@ -2365,7 +2365,7 @@ +@@ -2388,7 +2388,7 @@ + * + * This module enables abstraction of common (libc) functions. + */ +-#define MBEDTLS_PLATFORM_C ++//#define MBEDTLS_PLATFORM_C + + /** + * \def MBEDTLS_RIPEMD160_C +@@ -2399,7 +2399,7 @@ * Caller: library/md.c * */ @@ -219,17 +231,7 @@ /** * \def MBEDTLS_RSA_C -@@ -2449,8 +2449,8 @@ - * Caller: - * - * Requires: MBEDTLS_SSL_CACHE_C -- */ - #define MBEDTLS_SSL_CACHE_C -+ */ - - /** - * \def MBEDTLS_SSL_COOKIE_C -@@ -2471,8 +2471,8 @@ +@@ -2505,8 +2505,8 @@ * Caller: * * Requires: MBEDTLS_CIPHER_C @@ -239,7 +241,7 @@ /** * \def MBEDTLS_SSL_CLI_C -@@ -2571,8 +2571,8 @@ +@@ -2605,8 +2605,8 @@ * Module: library/version.c * * This module provides run-time version information. @@ -249,7 +251,7 @@ /** * \def MBEDTLS_X509_USE_C -@@ -2682,7 +2682,7 @@ +@@ -2716,7 +2716,7 @@ * Module: library/xtea.c * Caller: */ @@ -258,12 +260,3 @@ /* \} name SECTION: mbed TLS modules */ -@@ -2681,7 +2681,7 @@ - * recommended because of it is possible to generte SHA-1 collisions, however - * this may be safe for legacy infrastructure where additional controls apply. - */ --// #define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES -+#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES - - /** - * Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake diff --git a/package/libs/ncurses/Makefile b/package/libs/ncurses/Makefile index 60a8a176df..95f05fa711 100644 --- a/package/libs/ncurses/Makefile +++ b/package/libs/ncurses/Makefile @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ncurses -PKG_VERSION:=6.0 +PKG_VERSION:=6.1 PKG_RELEASE:=1 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=@GNU/ncurses -PKG_HASH:=f551c24b30ce8bfb6e96d9f59b42fbea30fa3a6123384172f9e7284bcf647260 +PKG_SOURCE_URL:=@GNU/$(PKG_NAME) +PKG_HASH:=aa057eeeb4a14d470101eff4597d5833dcef5965331be3528c08d99cebaa0d17 PKG_LICENSE:=MIT PKG_LICENSE_FILES:=README @@ -44,6 +44,14 @@ define Package/libncurses ABI_VERSION:=$(PKG_VERSION) endef +define Package/libncurses-dev + SECTION:=devel + CATEGORY:=Development + SUBMENU:=Libraries + DEPENDS:=zlib + TITLE:=Development files for the ncurses library +endef + TARGET_CFLAGS += $(FPIC) CONFIGURE_ARGS += \ @@ -124,6 +132,17 @@ define Package/libncurses/install done endef +define Package/libncurses-dev/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.a $(1)/usr/lib/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig/ +endef + define Build/InstallDev $(CP) $(PKG_INSTALL_DIR)/* $(1) for lib in ncurses panel menu form; do \ @@ -150,3 +169,4 @@ endef $(eval $(call HostBuild)) $(eval $(call BuildPackage,terminfo)) $(eval $(call BuildPackage,libncurses)) +$(eval $(call BuildPackage,libncurses-dev)) diff --git a/package/libs/ncurses/patches/100-ncurses-5.6-20080112-urxvt.patch b/package/libs/ncurses/patches/100-ncurses-5.6-20080112-urxvt.patch index 49537b94ee..ed7b2ee448 100644 --- a/package/libs/ncurses/patches/100-ncurses-5.6-20080112-urxvt.patch +++ b/package/libs/ncurses/patches/100-ncurses-5.6-20080112-urxvt.patch @@ -1,6 +1,6 @@ --- a/misc/terminfo.src +++ b/misc/terminfo.src -@@ -5214,6 +5214,172 @@ rxvt-cygwin-native|rxvt terminal emulato +@@ -5875,6 +5875,172 @@ rxvt-cygwin-native|rxvt terminal emulato rxvt-16color|rxvt with 16 colors like aixterm, ncv#32, use=ibm+16color, use=rxvt, diff --git a/package/libs/ncurses/patches/101-ncurses-5.6-20080628-kbs.patch b/package/libs/ncurses/patches/101-ncurses-5.6-20080628-kbs.patch index 394b6f9fde..ebd6df2e91 100644 --- a/package/libs/ncurses/patches/101-ncurses-5.6-20080628-kbs.patch +++ b/package/libs/ncurses/patches/101-ncurses-5.6-20080628-kbs.patch @@ -1,52 +1,52 @@ --- a/misc/terminfo.src +++ b/misc/terminfo.src -@@ -3955,6 +3955,7 @@ xterm-xfree86|xterm terminal emulator (X +@@ -4327,6 +4327,7 @@ xterm-xfree86|xterm terminal emulator (X # This version reflects the current xterm features. xterm-new|modern xterm terminal emulator, npc, + kbs=\177, indn=\E[%p1%dS, kb2=\EOE, kcbt=\E[Z, kent=\EOM, - rin=\E[%p1%dT, use=xterm+pcfkeys, use=xterm+tmux, - use=xterm-basic, -@@ -5048,6 +5049,7 @@ mlterm-256color|mlterm 3.0 with xterm 25 + rin=\E[%p1%dT, use=ansi+rep, use=ecma+strikeout, + use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux, +@@ -5703,6 +5704,7 @@ mlterm-256color|mlterm 3.0 with xterm 25 rxvt-basic|rxvt terminal base (X Window System), OTbs, am, bce, eo, mir, msgr, xenl, xon, XT, cols#80, it#8, lines#24, + kbs=\177, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, -@@ -5058,7 +5060,7 @@ rxvt-basic|rxvt terminal base (X Window - enacs=\E(B\E)0, flash=\E[?5h\E[?5l, home=\E[H, ht=^I, - hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, - ind=^J, is1=\E[?47l\E=\E[?1l, + clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r, +@@ -5713,7 +5715,7 @@ rxvt-basic|rxvt terminal base (X Window + enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H, + ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, + il1=\E[L, ind=\n, is1=\E[?47l\E=\E[?1l, - is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^H, + is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, rmso=\E[27m, rmul=\E[24m, -@@ -6118,6 +6120,7 @@ eterm-color|Emacs term.el terminal emula +@@ -6883,6 +6885,7 @@ dumb-emacs-ansi|Emacs dumb terminal with screen|VT 100/ANSI X3.64 virtual terminal, OTbs, OTpt, am, km, mir, msgr, xenl, G0, colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1, + kbs=\177, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M, -@@ -6128,7 +6131,7 @@ screen|VT 100/ANSI X3.64 virtual termina +@@ -6894,7 +6897,7 @@ screen|VT 100/ANSI X3.64 virtual termina dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)0, flash=\Eg, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, -- kbs=^H, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, -+ kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~, + enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG, + ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, +- ind=\n, indn=\E[%p1%dS, is2=\E)0, kbs=^H, kcbt=\E[Z, ++ ind=\n, indn=\E[%p1%dS, is2=\E)0, kcbt=\E[Z, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, -@@ -6252,6 +6255,7 @@ screen.xterm-r6|screen customized for X1 +@@ -7023,6 +7026,7 @@ screen.xterm-r6|screen customized for X1 # on Solaris because Sun's curses implementation gets confused. screen.teraterm|disable ncv in teraterm, ncv#127, + kbs=^H, - acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, - use=screen+fkeys, use=screen, - # Other terminals + acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i + \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u + \264v\301w\302x\263y\363z\362{\343|\330}\234~\376, diff --git a/package/libs/ncurses/patches/102-ncurses-5.9-gcc-5.patch b/package/libs/ncurses/patches/102-ncurses-5.9-gcc-5.patch index 0424b23781..b84fcb965c 100644 --- a/package/libs/ncurses/patches/102-ncurses-5.9-gcc-5.patch +++ b/package/libs/ncurses/patches/102-ncurses-5.9-gcc-5.patch @@ -15,7 +15,7 @@ Subject: [PATCH] ncurses 5.9 - patch 20141206 --- a/ncurses/base/MKlib_gen.sh +++ b/ncurses/base/MKlib_gen.sh -@@ -491,11 +491,22 @@ sed -n -f $ED1 \ +@@ -505,11 +505,22 @@ sed -n -f $ED1 \ -e 's/gen_$//' \ -e 's/ / /g' >>$TMP diff --git a/package/libs/ncurses/patches/500-cross.patch b/package/libs/ncurses/patches/500-cross.patch deleted file mode 100644 index 590bddf68c..0000000000 --- a/package/libs/ncurses/patches/500-cross.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/aclocal.m4 -+++ b/aclocal.m4 -@@ -5720,7 +5720,7 @@ CF_EOF - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" - fi - CF_SHARED_SONAME -- MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' -+ MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_shared_soname',-stats,$(LDFLAGS) -lc -o $[@]' - ;; - (mingw*) - cf_cv_shlib_version=mingw diff --git a/package/libs/ncurses/patches/900-terminfo.patch b/package/libs/ncurses/patches/900-terminfo.patch index ab623b1973..645b7ad90e 100644 --- a/package/libs/ncurses/patches/900-terminfo.patch +++ b/package/libs/ncurses/patches/900-terminfo.patch @@ -1,20 +1,20 @@ --- a/misc/terminfo.src +++ b/misc/terminfo.src -@@ -4919,12 +4919,11 @@ konsole-xf3x|KDE console window with key - # The value for kbs reflects local customization rather than the settings used - # for XFree86 xterm. +@@ -5563,12 +5563,11 @@ konsole-xf3x|KDE console window with key + # The value for kbs (see konsole-vt100) reflects local customization rather + # than the settings used for XFree86 xterm. konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm, - kend=\EOF, khome=\EOH, use=konsole+pcfkeys, - use=konsole-vt100, --# Konsole does not implement shifted cursor-keys. +- -konsole+pcfkeys|konsole subset of xterm+pcfkeys, -- kLFT@, kRIT@, kcbt=\E[Z, kind@, kri@, kDN@, kUP@, use=xterm+pcc2, -- use=xterm+pcf0, +- kcbt=\E[Z, use=xterm+pcc2, use=xterm+pcf0, +- use=xterm+pce2, + kend=\EOF, kf1=\EOP, kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, + kf16=\EO2S, kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, + kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~, + kf23=\E[23;2~, kf24=\E[24;2~, kf3=\EOR, kf4=\EOS, + khome=\EOH, use=konsole-vt100, + + # Obsolete: vt100.keymap # KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but - # it is still useful for deriving the other entries. - konsole-vt100|KDE console window with vt100 (sic) keyboard, diff --git a/package/libs/nettle/Makefile b/package/libs/nettle/Makefile index 172b5b2563..67889d079b 100644 --- a/package/libs/nettle/Makefile +++ b/package/libs/nettle/Makefile @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=nettle -PKG_VERSION:=3.3 +PKG_VERSION:=3.4 PKG_RELEASE:=1 PKG_USE_MIPS16:=0 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=@GNU/nettle -PKG_HASH:=46942627d5d0ca11720fec18d81fc38f7ef837ea4197c1f630e71ce0d470b11e +PKG_HASH:=ae7a42df026550b85daca8389b6a60ba6313b0567f374392e54918588a411e94 PKG_LICENSE:=GPL-2.0+ PKG_LICENSE_FILES:=COPYING diff --git a/package/libs/nghttp2/Makefile b/package/libs/nghttp2/Makefile new file mode 100644 index 0000000000..8201e59f21 --- /dev/null +++ b/package/libs/nghttp2/Makefile @@ -0,0 +1,45 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=nghttp2 +PKG_VERSION:=1.32.0 +PKG_RELEASE:=1 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz + +PKG_SOURCE_URL:=https://github.com/nghttp2/nghttp2/releases/download/v$(PKG_VERSION) +PKG_HASH:=700a89d59fcc55acc2b18184001bfb3220fa6a6e543486aca35f40801cba6f7d + +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=COPYING +CMAKE_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk + +define Package/libnghttp2 + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Library implementing the framing layer of HTTP/2 + MAINTAINER:=Hans Dedecker +endef + +define Package/libnghttp2/description + C library implementing the framing layer of the HTTP/2 protocol. It can be used to build a HTTP/2-capable HTTP client or server +endef + +CMAKE_OPTIONS += \ + -DENABLE_LIB_ONLY=ON + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include/nghttp2 + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/nghttp2/*.h $(1)/usr/include/nghttp2/ + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig/ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libnghttp2.so* $(1)/usr/lib/ +endef + +define Package/libnghttp2/install + $(INSTALL_DIR) $(1)/usr/lib + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libnghttp2.so* $(1)/usr/lib +endef + +$(eval $(call BuildPackage,libnghttp2)) diff --git a/package/libs/openssl/Config.in b/package/libs/openssl/Config.in index dbcd11abfc..96d3ba3e9d 100644 --- a/package/libs/openssl/Config.in +++ b/package/libs/openssl/Config.in @@ -55,8 +55,14 @@ config OPENSSL_HARDWARE_SUPPORT default n prompt "Enable hardware support" +config OPENSSL_OPTIMIZE_SPEED + bool + default n + prompt "Enable optimization for speed instead of size" + endif config OPENSSL_ENGINE_CRYPTO bool + select OPENSSL_HARDWARE_SUPPORT prompt "Crypto acceleration support" if PACKAGE_libopenssl diff --git a/package/libs/openssl/Makefile b/package/libs/openssl/Makefile index caecebf254..8409730d70 100644 --- a/package/libs/openssl/Makefile +++ b/package/libs/openssl/Makefile @@ -18,16 +18,17 @@ PKG_BUILD_PARALLEL:=0 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=http://www.openssl.org/source/ \ - ftp://ftp.openssl.org/source/ \ - http://www.openssl.org/source/old/$(PKG_BASE)/ \ - ftp://ftp.funet.fi/pub/crypt/mirrors/ftp.openssl.org/source \ - ftp://ftp.sunet.se/pub/security/tools/net/openssl/source/ - +PKG_SOURCE_URL:= \ + http://ftp.fi.muni.cz/pub/openssl/source/ \ + http://ftp.linux.hr/pub/openssl/source/ \ + http://gd.tuwien.ac.at/infosys/security/openssl/source/ \ + http://www.openssl.org/source/ \ + http://www.openssl.org/source/old/$(PKG_BASE)/ PKG_HASH:=ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d PKG_LICENSE:=OpenSSL PKG_LICENSE_FILES:=LICENSE +PKG_CPE_ID:=cpe:/a:openssl:openssl PKG_CONFIG_DEPENDS:= \ CONFIG_OPENSSL_ENGINE_CRYPTO \ CONFIG_OPENSSL_ENGINE_DIGEST \ @@ -40,7 +41,8 @@ PKG_CONFIG_DEPENDS:= \ CONFIG_OPENSSL_WITH_COMPRESSION \ CONFIG_OPENSSL_WITH_NPN \ CONFIG_OPENSSL_WITH_PSK \ - CONFIG_OPENSSL_WITH_SRP + CONFIG_OPENSSL_WITH_SRP \ + CONFIG_OPENSSL_OPTIMIZE_SPEED include $(INCLUDE_DIR)/package.mk @@ -154,6 +156,10 @@ ifndef CONFIG_OPENSSL_WITH_SRP OPENSSL_OPTIONS += no-srp endif +ifeq ($(CONFIG_OPENSSL_OPTIMIZE_SPEED),y) + TARGET_CFLAGS := $(filter-out -Os,$(TARGET_CFLAGS)) -O3 +endif + ifeq ($(CONFIG_x86_64),y) OPENSSL_TARGET:=linux-x86_64-openwrt OPENSSL_MAKEFLAGS += LIBDIR=lib @@ -161,6 +167,8 @@ else OPENSSL_OPTIONS+=no-sse2 ifeq ($(CONFIG_mips)$(CONFIG_mipsel),y) OPENSSL_TARGET:=linux-mips-openwrt + else ifeq ($(CONFIG_aarch64),y) + OPENSSL_TARGET:=linux-aarch64-openwrt else ifeq ($(CONFIG_arm)$(CONFIG_armeb),y) OPENSSL_TARGET:=linux-armv4-openwrt else @@ -182,14 +190,12 @@ define Build/Configure --openssldir=/etc/ssl \ $(TARGET_CPPFLAGS) \ $(TARGET_LDFLAGS) -ldl \ - -DOPENSSL_SMALL_FOOTPRINT \ + $(if $(CONFIG_OPENSSL_OPTIMIZE_SPEED),,-DOPENSSL_SMALL_FOOTPRINT) \ $(OPENSSL_NO_CIPHERS) \ $(OPENSSL_OPTIONS) \ ) - # XXX: OpenSSL "make depend" will look for installed headers before its own, - # so remove installed stuff first - -$(SUBMAKE) -j1 clean-staging +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ MAKEDEPPROG="$(TARGET_CROSS)gcc" \ OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \ $(OPENSSL_MAKEFLAGS) \ @@ -201,6 +207,7 @@ TARGET_LDFLAGS += -Wl,--gc-sections define Build/Compile +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ CC="$(TARGET_CC)" \ ASFLAGS="$(TARGET_ASFLAGS) -I$(PKG_BUILD_DIR)/crypto -c" \ AR="$(TARGET_CROSS)ar r" \ @@ -209,6 +216,7 @@ define Build/Compile $(OPENSSL_MAKEFLAGS) \ all +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ CC="$(TARGET_CC)" \ ASFLAGS="$(TARGET_ASFLAGS) -I$(PKG_BUILD_DIR)/crypto -c" \ AR="$(TARGET_CROSS)ar r" \ @@ -219,11 +227,13 @@ define Build/Compile # Work around openssl build bug to link libssl.so with libcrypto.so. -rm $(PKG_BUILD_DIR)/libssl.so.*.*.* +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ CC="$(TARGET_CC)" \ OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \ $(OPENSSL_MAKEFLAGS) \ do_linux-shared $(MAKE) -C $(PKG_BUILD_DIR) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ CC="$(TARGET_CC)" \ INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \ $(OPENSSL_MAKEFLAGS) \ diff --git a/package/libs/openssl/patches/110-optimize-for-size.patch b/package/libs/openssl/patches/110-optimize-for-size.patch index 0f174a3469..d6d4a21111 100644 --- a/package/libs/openssl/patches/110-optimize-for-size.patch +++ b/package/libs/openssl/patches/110-optimize-for-size.patch @@ -1,11 +1,12 @@ --- a/Configure +++ b/Configure -@@ -470,6 +470,12 @@ my %table=( +@@ -470,6 +470,13 @@ my %table=( "linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}", "linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}", +# OpenWrt targets +"linux-armv4-openwrt","gcc:-DTERMIOS \$(OPENWRT_OPTIMIZATION_FLAGS) -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", ++"linux-aarch64-openwrt","gcc:-DTERMIOS \$(OPENWRT_OPTIMIZATION_FLAGS) -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${aarch64_asm}:linux64:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", +"linux-x86_64-openwrt", "gcc:-m64 -DL_ENDIAN -DTERMIOS \$(OPENWRT_OPTIMIZATION_FLAGS) -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64", +"linux-mips-openwrt","gcc:-DTERMIOS \$(OPENWRT_OPTIMIZATION_FLAGS) -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${mips32_asm}:o32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", +"linux-generic-openwrt","gcc:-DTERMIOS \$(OPENWRT_OPTIMIZATION_FLAGS) -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", diff --git a/package/libs/openssl/patches/150-no_engines.patch b/package/libs/openssl/patches/150-no_engines.patch index 1cb04bdabb..102e7a3272 100644 --- a/package/libs/openssl/patches/150-no_engines.patch +++ b/package/libs/openssl/patches/150-no_engines.patch @@ -1,6 +1,6 @@ --- a/Configure +++ b/Configure -@@ -2130,6 +2130,11 @@ EOF +@@ -2136,6 +2136,11 @@ EOF close(OUT); } diff --git a/package/libs/openssl/patches/160-disable_doc_tests.patch b/package/libs/openssl/patches/160-disable_doc_tests.patch index 73459ff905..e38d44a768 100644 --- a/package/libs/openssl/patches/160-disable_doc_tests.patch +++ b/package/libs/openssl/patches/160-disable_doc_tests.patch @@ -36,7 +36,7 @@ build_libs: build_libcrypto build_libssl openssl.pc -@@ -534,7 +534,7 @@ dist: +@@ -542,7 +542,7 @@ dist: @$(MAKE) SDIRS='$(SDIRS)' clean @$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' $(DISTTARVARS) tar @@ -47,7 +47,7 @@ @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \ --- a/Makefile.org +++ b/Makefile.org -@@ -532,7 +532,7 @@ dist: +@@ -540,7 +540,7 @@ dist: @$(MAKE) SDIRS='$(SDIRS)' clean @$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' $(DISTTARVARS) tar diff --git a/package/libs/openssl/patches/200-parallel_build.patch b/package/libs/openssl/patches/200-parallel_build.patch index f1d9f07051..0616551b6e 100644 --- a/package/libs/openssl/patches/200-parallel_build.patch +++ b/package/libs/openssl/patches/200-parallel_build.patch @@ -24,7 +24,7 @@ all_testapps: build_libs build_testapps build_testapps: -@@ -465,7 +465,7 @@ update: errors stacks util/libeay.num ut +@@ -473,7 +473,7 @@ update: errors stacks util/libeay.num ut @set -e; target=update; $(RECURSIVE_BUILD_CMD) depend: @@ -33,7 +33,7 @@ lint: @set -e; target=lint; $(RECURSIVE_BUILD_CMD) -@@ -527,9 +527,9 @@ dist: +@@ -535,9 +535,9 @@ dist: @$(MAKE) SDIRS='$(SDIRS)' clean @$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' $(DISTTARVARS) tar @@ -45,7 +45,7 @@ @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \ $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \ $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \ -@@ -538,12 +538,19 @@ install_sw: +@@ -546,12 +546,19 @@ install_sw: $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \ $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \ $(INSTALL_PREFIX)$(OPENSSLDIR)/private @@ -66,7 +66,7 @@ @set -e; liblist="$(LIBS)"; for i in $$liblist ;\ do \ if [ -f "$$i" ]; then \ -@@ -627,12 +634,7 @@ install_html_docs: +@@ -635,12 +642,7 @@ install_html_docs: done; \ done @@ -164,7 +164,7 @@ ctags $(SRC) --- a/test/Makefile +++ b/test/Makefile -@@ -144,7 +144,7 @@ install: +@@ -145,7 +145,7 @@ install: tags: ctags $(SRC) @@ -173,7 +173,7 @@ apps: @(cd ..; $(MAKE) DIRS=apps all) -@@ -577,7 +577,7 @@ $(DTLSTEST)$(EXE_EXT): $(DTLSTEST).o ssl +@@ -586,7 +586,7 @@ $(DTLSTEST)$(EXE_EXT): $(DTLSTEST).o ssl # fi dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO) diff --git a/package/libs/readline/Makefile b/package/libs/readline/Makefile new file mode 100644 index 0000000000..ca3a468637 --- /dev/null +++ b/package/libs/readline/Makefile @@ -0,0 +1,75 @@ +# +# Copyright (C) 2006-2014 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=readline +PKG_VERSION:=7.0 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=@GNU/readline +PKG_HASH:=750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334 + +PKG_LICENSE:=GPL-3.0 +PKG_LICENSE_FILES:=COPYING +PKG_CPE_ID:=cpe:/a:gnu:readline + +PKG_BUILD_PARALLEL:=1 +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/host-build.mk + +define Package/libreadline + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Command lines edition library + URL:=http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html + ABI_VERSION:=$(PKG_VERSION) +endef + +define Package/libreadline/description + The Readline library provides a set of functions for use by applications + that allow users to edit command lines as they are typed in. Both Emacs + and vi editing modes are available. The Readline library includes + additional functions to maintain a list of previously-entered command + lines, to recall and perhaps reedit those lines, and perform csh-like + history expansion on previous commands. +endef + +# prevent "autoreconf" from removing "aclocal.m4" +PKG_REMOVE_FILES:= + +CONFIGURE_ARGS += \ + --enable-shared \ + --enable-static \ + --with-curses \ + +CONFIGURE_VARS += \ + bash_cv_wcwidth_broken=no \ + bash_cv_func_sigsetjmp=yes \ + +TARGET_CPPFLAGS:=-I. -I.. $(TARGET_CPPFLAGS) + +TARGET_CFLAGS += $(FPIC) + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/readline $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.{a,so,so.7,so.7.0} $(1)/usr/lib/ +endef + +define Package/libreadline/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.{so,so.7,so.7.0} $(1)/usr/lib/ +endef + +$(eval $(call HostBuild)) +$(eval $(call BuildPackage,libreadline)) diff --git a/package/libs/libreadline/patches/001-install_perm.patch b/package/libs/readline/patches/001-install_perm.patch similarity index 100% rename from package/libs/libreadline/patches/001-install_perm.patch rename to package/libs/readline/patches/001-install_perm.patch diff --git a/package/libs/sysfsutils/Makefile b/package/libs/sysfsutils/Makefile index 6265442ea8..60275ec343 100644 --- a/package/libs/sysfsutils/Makefile +++ b/package/libs/sysfsutils/Makefile @@ -65,9 +65,21 @@ define Package/libsysfs/install endef define Package/sysfsutils/install + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/sysfsutils $(1)/etc/init.d/ + + $(INSTALL_DATA) ./files/sysfs.conf $(1)/etc/ + $(INSTALL_DIR) $(1)/etc/sysfs.d + $(INSTALL_DATA) ./files/local.conf $(1)/etc/sysfs.d/ + $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_INSTALL_DIR)/usr/bin/systool $(1)/usr/bin/ endef +define Package/sysfsutils/conffiles +/etc/sysfs.conf +/etc/sysfs.d/local.conf +endef + $(eval $(call BuildPackage,libsysfs)) $(eval $(call BuildPackage,sysfsutils)) diff --git a/package/base-files/files/etc/sysctl.d/local.conf b/package/libs/sysfsutils/files/local.conf similarity index 100% rename from package/base-files/files/etc/sysctl.d/local.conf rename to package/libs/sysfsutils/files/local.conf diff --git a/package/libs/sysfsutils/files/sysfs.conf b/package/libs/sysfsutils/files/sysfs.conf new file mode 100644 index 0000000000..f03246284f --- /dev/null +++ b/package/libs/sysfsutils/files/sysfs.conf @@ -0,0 +1,22 @@ +# +# /etc/sysfs.conf - Configuration file for setting sysfs attributes. +# +# The sysfs mount directory is automatically prepended to the attribute paths. +# +# Syntax: +# attribute = value +# mode attribute = 0600 # (any valid argument for chmod) +# owner attribute = root:wheel # (any valid argument for chown) +# +# Examples: +# +# Always use the powersave CPU frequency governor +# devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave +# +# Use userspace CPU frequency governor and set initial speed +# devices/system/cpu/cpu0/cpufreq/scaling_governor = userspace +# devices/system/cpu/cpu0/cpufreq/scaling_setspeed = 600000 +# +# Set permissions of suspend control file +# mode power/state = 0660 +# owner power/state = root:power diff --git a/package/libs/sysfsutils/files/sysfsutils b/package/libs/sysfsutils/files/sysfsutils new file mode 100644 index 0000000000..0305ca82a9 --- /dev/null +++ b/package/libs/sysfsutils/files/sysfsutils @@ -0,0 +1,48 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2017 Rodolfo Giometti +# +# Based on Debian's script /etc/init.d/sysfsutils by +# Martin Pitt + +load_conffile() { + FILE="$1" + sed 's/#.*$//; /^[[:space:]]*$/d; + s/^[[:space:]]*\([^=[:space:]]*\)[[:space:]]*\([^=[:space:]]*\)[[:space:]]*=[[:space:]]*\(.*\)/\1 \2 \3/' \ + $FILE | { + while read f1 f2 f3; do + if [ "$f1" = "mode" -a -n "$f2" -a -n "$f3" ]; then + if [ -f "/sys/$f2" ] || [ -d "/sys/$f2" ]; then + chmod "$f3" "/sys/$f2" + else + echo "unknown attribute $f2" + fi + elif [ "$f1" = "owner" -a -n "$f2" -a -n "$f3" ]; then + if [ -f "/sys/$f2" ]; then + chown "$f3" "/sys/$f2" + else + echo "unknown attribute $f2" + fi + elif [ "$f1" -a -n "$f2" -a -z "$f3" ]; then + if [ -f "/sys/$f1" ]; then + # Some fields need a terminating newline, others + # need the terminating newline to be absent :-( + echo -n "$f2" > "/sys/$f1" 2>/dev/null || + echo "$f2" > "/sys/$f1" + else + echo "unknown attribute $f1" + fi + else + echo "syntax error in $CONFFILE: '$f1' '$f2' '$f3'" + exit 1 + fi + done + } +} + +START=11 +start() { + for file in /etc/sysfs.conf /etc/sysfs.d/*.conf; do + [ -r "$file" ] || continue + load_conffile "$file" + done +} diff --git a/package/libs/tcp_wrappers/Makefile b/package/libs/tcp_wrappers/Makefile deleted file mode 100644 index d453031ec1..0000000000 --- a/package/libs/tcp_wrappers/Makefile +++ /dev/null @@ -1,69 +0,0 @@ -# -# Copyright (C) 2006 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=tcp_wrappers -PKG_VERSION:=7.6 -PKG_RELEASE:=1 - -PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=ftp://ftp.porcupine.org/pub/security -PKG_MD5SUM:=e6fa25f71226d090f34de3f6b122fb5a - -PKG_LICENSE:=BSD -PKG_LICENE_FILES:=DISCLAIMER - -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION) - -include $(INCLUDE_DIR)/package.mk - -define Package/libwrap - SECTION:=libs - CATEGORY:=Libraries - TITLE:=Security wrapper library for TCP services - URL:=ftp://ftp.porcupine.org/pub/security/index.html - MAINTAINER:=Peter Wagner -endef - -TARGET_CFLAGS += $(FPIC) - -ifeq ($(CONFIG_USE_MUSL),) -TARGET_EXTRA_LIBS:=LIBS=-lnsl -endif - -define Build/Compile - $(MAKE) -C $(PKG_BUILD_DIR) \ - $(TARGET_CONFIGURE_OPTS) \ - OPT_CFLAGS="$(TARGET_CFLAGS)" \ - $(TARGET_EXTRA_LIBS) \ - NETGROUP= \ - VSYSLOG= \ - BUGS= \ - EXTRA_CFLAGS="-DSYS_ERRLIST_DEFINED -DHAVE_STRERROR -DHAVE_WEAKSYMS -D_REENTRANT -DINET6=1 \ - -Dss_family=__ss_family -Dss_len=__ss_len" \ - FACILITY=LOG_DAEMON \ - SEVERITY=LOG_INFO \ - REAL_DAEMON_DIR=/usr/sbin \ - STYLE="-DPROCESS_OPTIONS" \ - tidy all -endef - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include - $(CP) $(PKG_BUILD_DIR)/tcpd.h $(1)/usr/include/ - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_BUILD_DIR)/libwrap.a $(1)/usr/lib/ - $(CP) $(PKG_BUILD_DIR)/shared/libwrap.so* $(1)/usr/lib/ -endef - -define Package/libwrap/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_BUILD_DIR)/shared/libwrap.so.* $(1)/usr/lib/ -endef - -$(eval $(call BuildPackage,libwrap)) diff --git a/package/libs/tcp_wrappers/patches/001-debian_subset.patch b/package/libs/tcp_wrappers/patches/001-debian_subset.patch deleted file mode 100644 index 0b3ad2cea1..0000000000 --- a/package/libs/tcp_wrappers/patches/001-debian_subset.patch +++ /dev/null @@ -1,936 +0,0 @@ ---- a/hosts_access.c -+++ b/hosts_access.c -@@ -240,6 +240,26 @@ struct request_info *request; - } - } - -+/* hostfile_match - look up host patterns from file */ -+ -+static int hostfile_match(path, host) -+char *path; -+struct hosts_info *host; -+{ -+ char tok[BUFSIZ]; -+ int match = NO; -+ FILE *fp; -+ -+ if ((fp = fopen(path, "r")) != 0) { -+ while (fscanf(fp, "%s", tok) == 1 && !(match = host_match(tok, host))) -+ /* void */ ; -+ fclose(fp); -+ } else if (errno != ENOENT) { -+ tcpd_warn("open %s: %m", path); -+ } -+ return (match); -+} -+ - /* host_match - match host name and/or address against pattern */ - - static int host_match(tok, host) -@@ -267,6 +287,8 @@ struct host_info *host; - tcpd_warn("netgroup support is disabled"); /* not tcpd_jump() */ - return (NO); - #endif -+ } else if (tok[0] == '/') { /* /file hack */ -+ return (hostfile_match(tok, host)); - } else if (STR_EQ(tok, "KNOWN")) { /* check address and name */ - char *name = eval_hostname(host); - return (STR_NE(eval_hostaddr(host), unknown) && HOSTNAME_KNOWN(name)); ---- a/tcpd.h -+++ b/tcpd.h -@@ -4,6 +4,25 @@ - * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. - */ - -+#ifndef _TCPWRAPPERS_TCPD_H -+#define _TCPWRAPPERS_TCPD_H -+ -+/* someone else may have defined this */ -+#undef __P -+ -+/* use prototypes if we have an ANSI C compiler or are using C++ */ -+#if defined(__STDC__) || defined(__cplusplus) -+#define __P(args) args -+#else -+#define __P(args) () -+#endif -+ -+/* Need definitions of struct sockaddr_in and FILE. */ -+#include -+#include -+ -+__BEGIN_DECLS -+ - /* Structure to describe one communications endpoint. */ - - #define STRING_LENGTH 128 /* hosts, users, processes */ -@@ -25,10 +44,10 @@ struct request_info { - char pid[10]; /* access via eval_pid(request) */ - struct host_info client[1]; /* client endpoint info */ - struct host_info server[1]; /* server endpoint info */ -- void (*sink) (); /* datagram sink function or 0 */ -- void (*hostname) (); /* address to printable hostname */ -- void (*hostaddr) (); /* address to printable address */ -- void (*cleanup) (); /* cleanup function or 0 */ -+ void (*sink) __P((int)); /* datagram sink function or 0 */ -+ void (*hostname) __P((struct host_info *)); /* address to printable hostname */ -+ void (*hostaddr) __P((struct host_info *)); /* address to printable address */ -+ void (*cleanup) __P((struct request_info *)); /* cleanup function or 0 */ - struct netconfig *config; /* netdir handle */ - }; - -@@ -61,25 +80,30 @@ extern char paranoid[]; - /* Global functions. */ - - #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT) --extern void fromhost(); /* get/validate client host info */ -+extern void fromhost __P((struct request_info *)); /* get/validate client host info */ - #else - #define fromhost sock_host /* no TLI support needed */ - #endif - --extern int hosts_access(); /* access control */ --extern void shell_cmd(); /* execute shell command */ --extern char *percent_x(); /* do % expansion */ --extern void rfc931(); /* client name from RFC 931 daemon */ --extern void clean_exit(); /* clean up and exit */ --extern void refuse(); /* clean up and exit */ --extern char *xgets(); /* fgets() on steroids */ --extern char *split_at(); /* strchr() and split */ --extern unsigned long dot_quad_addr(); /* restricted inet_addr() */ -+extern void shell_cmd __P((char *)); /* execute shell command */ -+extern char *percent_x __P((char *, int, char *, struct request_info *)); /* do % expansion */ -+extern void rfc931 __P((struct sockaddr_in *, struct sockaddr_in *, char *)); /* client name from RFC 931 daemon */ -+extern void clean_exit __P((struct request_info *)); /* clean up and exit */ -+extern void refuse __P((struct request_info *)); /* clean up and exit */ -+extern char *xgets __P((char *, int, FILE *)); /* fgets() on steroids */ -+extern char *split_at __P((char *, int)); /* strchr() and split */ -+extern unsigned long dot_quad_addr __P((char *)); /* restricted inet_addr() */ - - /* Global variables. */ - -+#ifdef HAVE_WEAKSYMS -+extern int allow_severity __attribute__ ((weak)); /* for connection logging */ -+extern int deny_severity __attribute__ ((weak)); /* for connection logging */ -+#else - extern int allow_severity; /* for connection logging */ - extern int deny_severity; /* for connection logging */ -+#endif -+ - extern char *hosts_allow_table; /* for verification mode redirection */ - extern char *hosts_deny_table; /* for verification mode redirection */ - extern int hosts_access_verbose; /* for verbose matching mode */ -@@ -92,9 +116,14 @@ extern int resident; /* > 0 if residen - */ - - #ifdef __STDC__ -+extern int hosts_access(struct request_info *request); -+extern int hosts_ctl(char *daemon, char *client_name, char *client_addr, -+ char *client_user); - extern struct request_info *request_init(struct request_info *,...); - extern struct request_info *request_set(struct request_info *,...); - #else -+extern int hosts_access(); -+extern int hosts_ctl(); - extern struct request_info *request_init(); /* initialize request */ - extern struct request_info *request_set(); /* update request structure */ - #endif -@@ -117,27 +146,31 @@ extern struct request_info *request_set( - * host_info structures serve as caches for the lookup results. - */ - --extern char *eval_user(); /* client user */ --extern char *eval_hostname(); /* printable hostname */ --extern char *eval_hostaddr(); /* printable host address */ --extern char *eval_hostinfo(); /* host name or address */ --extern char *eval_client(); /* whatever is available */ --extern char *eval_server(); /* whatever is available */ -+extern char *eval_user __P((struct request_info *)); /* client user */ -+extern char *eval_hostname __P((struct host_info *)); /* printable hostname */ -+extern char *eval_hostaddr __P((struct host_info *)); /* printable host address */ -+extern char *eval_hostinfo __P((struct host_info *)); /* host name or address */ -+extern char *eval_client __P((struct request_info *)); /* whatever is available */ -+extern char *eval_server __P((struct request_info *)); /* whatever is available */ - #define eval_daemon(r) ((r)->daemon) /* daemon process name */ - #define eval_pid(r) ((r)->pid) /* process id */ - - /* Socket-specific methods, including DNS hostname lookups. */ - --extern void sock_host(); /* look up endpoint addresses */ --extern void sock_hostname(); /* translate address to hostname */ --extern void sock_hostaddr(); /* address to printable address */ -+/* look up endpoint addresses */ -+extern void sock_host __P((struct request_info *)); -+/* translate address to hostname */ -+extern void sock_hostname __P((struct host_info *)); -+/* address to printable address */ -+extern void sock_hostaddr __P((struct host_info *)); -+ - #define sock_methods(r) \ - { (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; } - - /* The System V Transport-Level Interface (TLI) interface. */ - - #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT) --extern void tli_host(); /* look up endpoint addresses etc. */ -+extern void tli_host __P((struct request_info *)); /* look up endpoint addresses etc. */ - #endif - - /* -@@ -178,7 +211,7 @@ extern struct tcpd_context tcpd_context; - * behavior. - */ - --extern void process_options(); /* execute options */ -+extern void process_options __P((char *, struct request_info *)); /* execute options */ - extern int dry_run; /* verification flag */ - - /* Bug workarounds. */ -@@ -217,3 +250,7 @@ extern char *fix_strtok(); - #define strtok my_strtok - extern char *my_strtok(); - #endif -+ -+__END_DECLS -+ -+#endif /* tcpd.h */ ---- a/Makefile -+++ b/Makefile -@@ -1,5 +1,10 @@ -+GLIBC=$(shell grep -s -c __GLIBC__ /usr/include/features.h) -+ - # @(#) Makefile 1.23 97/03/21 19:27:20 - -+# unset the HOSTNAME environment variable -+HOSTNAME = -+ - what: - @echo - @echo "Usage: edit the REAL_DAEMON_DIR definition in the Makefile then:" -@@ -19,7 +24,7 @@ what: - @echo " generic (most bsd-ish systems with sys5 compatibility)" - @echo " 386bsd aix alpha apollo bsdos convex-ultranet dell-gcc dgux dgux543" - @echo " dynix epix esix freebsd hpux irix4 irix5 irix6 isc iunix" -- @echo " linux machten mips(untested) ncrsvr4 netbsd next osf power_unix_211" -+ @echo " linux gnu machten mips(untested) ncrsvr4 netbsd next osf power_unix_211" - @echo " ptx-2.x ptx-generic pyramid sco sco-nis sco-od2 sco-os5 sinix sunos4" - @echo " sunos40 sunos5 sysv4 tandem ultrix unicos7 unicos8 unixware1 unixware2" - @echo " uts215 uxp" -@@ -43,8 +48,8 @@ what: - # Ultrix 4.x SunOS 4.x ConvexOS 10.x Dynix/ptx - #REAL_DAEMON_DIR=/usr/etc - # --# SysV.4 Solaris 2.x OSF AIX --#REAL_DAEMON_DIR=/usr/sbin -+# SysV.4 Solaris 2.x OSF AIX Linux -+REAL_DAEMON_DIR=/usr/sbin - # - # BSD 4.4 - #REAL_DAEMON_DIR=/usr/libexec -@@ -141,10 +146,21 @@ freebsd: - LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ= NETGROUP= TLI= \ - EXTRA_CFLAGS=-DSYS_ERRLIST_DEFINED VSYSLOG= all - -+ifneq ($(GLIBC),0) -+MYLIB=-lnsl -+endif -+ - linux: - @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ -- LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ=setenv.o \ -- NETGROUP= TLI= EXTRA_CFLAGS="-DBROKEN_SO_LINGER" all -+ LIBS=$(MYLIB) RANLIB=ranlib ARFLAGS=rv AUX_OBJ=weak_symbols.o \ -+ NETGROUP=-DNETGROUP TLI= VSYSLOG= BUGS= all \ -+ EXTRA_CFLAGS="-DSYS_ERRLIST_DEFINED -DHAVE_WEAKSYMS -D_REENTRANT" -+ -+gnu: -+ @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ -+ LIBS=$(MYLIB) RANLIB=ranlib ARFLAGS=rv AUX_OBJ=weak_symbols.o \ -+ NETGROUP=-DNETGROUP TLI= VSYSLOG= BUGS= all \ -+ EXTRA_CFLAGS="-DHAVE_STRERROR -DHAVE_WEAKSYMS -D_REENTRANT" - - # This is good for many SYSV+BSD hybrids with NIS, probably also for HP-UX 7.x. - hpux hpux8 hpux9 hpux10: -@@ -391,7 +407,7 @@ AR = ar - # the ones provided with this source distribution. The environ.c module - # implements setenv(), getenv(), and putenv(). - --AUX_OBJ= setenv.o -+#AUX_OBJ= setenv.o - #AUX_OBJ= environ.o - #AUX_OBJ= environ.o strcasecmp.o - -@@ -454,7 +470,8 @@ AUX_OBJ= setenv.o - # host name aliases. Compile with -DSOLARIS_24_GETHOSTBYNAME_BUG to work - # around this. The workaround does no harm on other Solaris versions. - --BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK -+BUGS = -+#BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DLIBC_CALLS_STRTOK - #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DINET_ADDR_BUG - #BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS -DSOLARIS_24_GETHOSTBYNAME_BUG - -@@ -464,7 +481,7 @@ BUGS = -DGETPEERNAME_BUG -DBROKEN_FGETS - # If your system supports NIS or YP-style netgroups, enable the following - # macro definition. Netgroups are used only for host access control. - # --#NETGROUP= -DNETGROUP -+NETGROUP= -DNETGROUP - - ############################################################### - # System dependencies: whether or not your system has vsyslog() -@@ -491,7 +508,7 @@ VSYSLOG = -Dvsyslog=myvsyslog - # Uncomment the next definition to turn on the language extensions - # (examples: allow, deny, banners, twist and spawn). - # --#STYLE = -DPROCESS_OPTIONS # Enable language extensions. -+STYLE = -DPROCESS_OPTIONS # Enable language extensions. - - ################################################################ - # Optional: Changing the default disposition of logfile records -@@ -514,7 +531,7 @@ VSYSLOG = -Dvsyslog=myvsyslog - # - # The LOG_XXX names below are taken from the /usr/include/syslog.h file. - --FACILITY= LOG_MAIL # LOG_MAIL is what most sendmail daemons use -+FACILITY= LOG_DAEMON # LOG_MAIL is what most sendmail daemons use - - # The syslog priority at which successful connections are logged. - -@@ -610,7 +627,7 @@ TABLES = -DHOSTS_DENY=\"/etc/hosts.deny\ - # Paranoid mode implies hostname lookup. In order to disable hostname - # lookups altogether, see the next section. - --PARANOID= -DPARANOID -+#PARANOID= -DPARANOID - - ######################################## - # Optional: turning off hostname lookups -@@ -623,7 +640,7 @@ PARANOID= -DPARANOID - # In order to perform selective hostname lookups, disable paranoid - # mode (see previous section) and comment out the following definition. - --HOSTNAME= -DALWAYS_HOSTNAME -+#HOSTNAME= -DALWAYS_HOSTNAME - - ############################################# - # Optional: Turning on host ADDRESS checking -@@ -649,28 +666,46 @@ HOSTNAME= -DALWAYS_HOSTNAME - # source-routed traffic in the kernel. Examples: 4.4BSD derivatives, - # Solaris 2.x, and Linux. See your system documentation for details. - # --# KILL_OPT= -DKILL_IP_OPTIONS -+KILL_OPT= -DKILL_IP_OPTIONS - - ## End configuration options - ############################ - - # Protection against weird shells or weird make programs. - -+CC = gcc - SHELL = /bin/sh --.c.o:; $(CC) $(CFLAGS) -c $*.c -+.c.o:; $(CC) $(CFLAGS) -o $*.o -c $*.c -+ -+SOMAJOR = 0 -+SOMINOR = 7.6 -+ -+LIB = libwrap.a -+SHLIB = shared/libwrap.so.$(SOMAJOR).$(SOMINOR) -+SHLIBSOMAJ= shared/libwrap.so.$(SOMAJOR) -+SHLIBSO = shared/libwrap.so -+SHLIBFLAGS = -Lshared -lwrap - --CFLAGS = -O -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \ -+shared/%.o: %.c -+ $(CC) $(CFLAGS) $(SHCFLAGS) -c $< -o $@ -+ -+CFLAGS = -O2 -g -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \ - $(BUGS) $(SYSTYPE) $(AUTH) $(UMASK) \ - -DREAL_DAEMON_DIR=\"$(REAL_DAEMON_DIR)\" $(STYLE) $(KILL_OPT) \ - -DSEVERITY=$(SEVERITY) -DRFC931_TIMEOUT=$(RFC931_TIMEOUT) \ - $(UCHAR) $(TABLES) $(STRINGS) $(TLI) $(EXTRA_CFLAGS) $(DOT) \ - $(VSYSLOG) $(HOSTNAME) - -+SHLINKFLAGS = -shared -Xlinker -soname -Xlinker libwrap.so.$(SOMAJOR) -lc $(LIBS) -+SHCFLAGS = -fPIC -shared -D_REENTRANT -+ - LIB_OBJ= hosts_access.o options.o shell_cmd.o rfc931.o eval.o \ - hosts_ctl.o refuse.o percent_x.o clean_exit.o $(AUX_OBJ) \ - $(FROM_OBJ) fix_options.o socket.o tli.o workarounds.o \ - update.o misc.o diag.o percent_m.o myvsyslog.o - -+SHLIB_OBJ= $(addprefix shared/, $(LIB_OBJ)); -+ - FROM_OBJ= fromhost.o - - KIT = README miscd.c tcpd.c fromhost.c hosts_access.c shell_cmd.c \ -@@ -684,46 +719,78 @@ KIT = README miscd.c tcpd.c fromhost.c h - refuse.c tcpdchk.8 setenv.c inetcf.c inetcf.h scaffold.c \ - scaffold.h tcpdmatch.8 README.NIS - --LIB = libwrap.a -- --all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk -+all other: config-check tcpd tcpdmatch try-from safe_finger tcpdchk $(LIB) - - # Invalidate all object files when the compiler options (CFLAGS) have changed. - - config-check: - @set +e; test -n "$(REAL_DAEMON_DIR)" || { make; exit 1; } -- @set +e; echo $(CFLAGS) >/tmp/cflags.$$$$ ; \ -- if cmp cflags /tmp/cflags.$$$$ ; \ -- then rm /tmp/cflags.$$$$ ; \ -- else mv /tmp/cflags.$$$$ cflags ; \ -+ @set +e; echo $(CFLAGS) >cflags.new ; \ -+ if cmp cflags cflags.new ; \ -+ then rm cflags.new ; \ -+ else mv cflags.new cflags ; \ - fi >/dev/null 2>/dev/null -+ @if [ ! -d shared ]; then mkdir shared; fi - - $(LIB): $(LIB_OBJ) - rm -f $(LIB) - $(AR) $(ARFLAGS) $(LIB) $(LIB_OBJ) - -$(RANLIB) $(LIB) - --tcpd: tcpd.o $(LIB) -- $(CC) $(CFLAGS) -o $@ tcpd.o $(LIB) $(LIBS) -+$(SHLIB): $(SHLIB_OBJ) -+ rm -f $(SHLIB) -+ $(CC) -o $(SHLIB) $(SHLINKFLAGS) $(SHLIB_OBJ) -+ ln -s $(notdir $(SHLIB)) $(SHLIBSOMAJ) -+ ln -s $(notdir $(SHLIBSOMAJ)) $(SHLIBSO) -+ -+tcpd: tcpd.o $(SHLIB) -+ $(CC) $(CFLAGS) -o $@ tcpd.o $(SHLIBFLAGS) - --miscd: miscd.o $(LIB) -- $(CC) $(CFLAGS) -o $@ miscd.o $(LIB) $(LIBS) -+miscd: miscd.o $(SHLIB) -+ $(CC) $(CFLAGS) -o $@ miscd.o $(SHLIBFLAGS) - --safe_finger: safe_finger.o $(LIB) -- $(CC) $(CFLAGS) -o $@ safe_finger.o $(LIB) $(LIBS) -+safe_finger: safe_finger.o $(SHLIB) -+ $(CC) $(CFLAGS) -o $@ safe_finger.o $(SHLIBFLAGS) - - TCPDMATCH_OBJ = tcpdmatch.o fakelog.o inetcf.o scaffold.o - --tcpdmatch: $(TCPDMATCH_OBJ) $(LIB) -- $(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(LIB) $(LIBS) -+tcpdmatch: $(TCPDMATCH_OBJ) $(SHLIB) -+ $(CC) $(CFLAGS) -o $@ $(TCPDMATCH_OBJ) $(SHLIBFLAGS) - --try-from: try-from.o fakelog.o $(LIB) -- $(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(LIB) $(LIBS) -+try-from: try-from.o fakelog.o $(SHLIB) -+ $(CC) $(CFLAGS) -o $@ try-from.o fakelog.o $(SHLIBFLAGS) - - TCPDCHK_OBJ = tcpdchk.o fakelog.o inetcf.o scaffold.o - --tcpdchk: $(TCPDCHK_OBJ) $(LIB) -- $(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(LIB) $(LIBS) -+tcpdchk: $(TCPDCHK_OBJ) $(SHLIB) -+ $(CC) $(CFLAGS) -o $@ $(TCPDCHK_OBJ) $(SHLIBFLAGS) -+ -+install: install-lib install-bin install-dev -+ -+install-lib: -+ install -o root -g root -m 0644 $(SHLIB) ${DESTDIR}/lib/ -+ ln -s $(notdir $(SHLIB)) ${DESTDIR}/lib/$(notdir $(SHLIBSOMAJ)) -+ -+install-bin: -+ install -o root -g root -m 0755 tcpd ${DESTDIR}/usr/sbin/ -+ install -o root -g root -m 0755 tcpdchk ${DESTDIR}/usr/sbin/ -+ install -o root -g root -m 0755 tcpdmatch ${DESTDIR}/usr/sbin/ -+ install -o root -g root -m 0755 try-from ${DESTDIR}/usr/sbin/ -+ install -o root -g root -m 0755 safe_finger ${DESTDIR}/usr/sbin/ -+ install -o root -g root -m 0644 tcpd.8 ${DESTDIR}/usr/share/man/man8/ -+ install -o root -g root -m 0644 tcpdchk.8 ${DESTDIR}/usr/share/man/man8/ -+ install -o root -g root -m 0644 tcpdmatch.8 ${DESTDIR}/usr/share/man/man8/ -+ install -o root -g root -m 0644 hosts_access.5 ${DESTDIR}/usr/share/man/man5/ -+ install -o root -g root -m 0644 hosts_options.5 ${DESTDIR}/usr/share/man/man5/ -+ -+install-dev: -+ ln -s /lib/$(notdir $(SHLIBSOMAJ)) ${DESTDIR}/usr/lib/$(notdir $(SHLIBSO)) -+ install -o root -g root -m 0644 hosts_access.3 ${DESTDIR}/usr/share/man/man3/ -+ install -o root -g root -m 0644 tcpd.h ${DESTDIR}/usr/include/ -+ install -o root -g root -m 0644 $(LIB) ${DESTDIR}/usr/lib/ -+ ln -s hosts_access.3 ${DESTDIR}/usr/share/man/man3/hosts_ctl.3 -+ ln -s hosts_access.3 ${DESTDIR}/usr/share/man/man3/request_init.3 -+ ln -s hosts_access.3 ${DESTDIR}/usr/share/man/man3/request_set.3 - - shar: $(KIT) - @shar $(KIT) -@@ -739,7 +806,8 @@ archive: - - clean: - rm -f tcpd miscd safe_finger tcpdmatch tcpdchk try-from *.[oa] core \ -- cflags -+ cflags libwrap*.so* -+ rm -rf shared - - tidy: clean - chmod -R a+r . -@@ -885,5 +953,6 @@ update.o: cflags - update.o: mystdarg.h - update.o: tcpd.h - vfprintf.o: cflags -+weak_symbols.o: tcpd.h - workarounds.o: cflags - workarounds.o: tcpd.h ---- a/hosts_access.5 -+++ b/hosts_access.5 -@@ -8,9 +8,9 @@ name, host name/address) patterns. Exam - impatient reader is encouraged to skip to the EXAMPLES section for a - quick introduction. - .PP --An extended version of the access control language is described in the --\fIhosts_options\fR(5) document. The extensions are turned on at --program build time by building with -DPROCESS_OPTIONS. -+The extended version of the access control language is described in the -+\fIhosts_options\fR(5) document. \fBNote that this language supersedes -+the meaning of \fIshell_command\fB as documented below.\fR - .PP - In the following text, \fIdaemon\fR is the the process name of a - network daemon process, and \fIclient\fR is the name and/or address of -@@ -40,7 +40,7 @@ A newline character is ignored when it i - character. This permits you to break up long lines so that they are - easier to edit. - .IP \(bu --Blank lines or lines that begin with a `#\' character are ignored. -+Blank lines or lines that begin with a `#' character are ignored. - This permits you to insert comments and whitespace so that the tables - are easier to read. - .IP \(bu -@@ -69,26 +69,33 @@ checks are case insensitive. - .SH PATTERNS - The access control language implements the following patterns: - .IP \(bu --A string that begins with a `.\' character. A host name is matched if -+A string that begins with a `.' character. A host name is matched if - the last components of its name match the specified pattern. For --example, the pattern `.tue.nl\' matches the host name --`wzv.win.tue.nl\'. -+example, the pattern `.tue.nl' matches the host name -+`wzv.win.tue.nl'. - .IP \(bu --A string that ends with a `.\' character. A host address is matched if -+A string that ends with a `.' character. A host address is matched if - its first numeric fields match the given string. For example, the --pattern `131.155.\' matches the address of (almost) every host on the -+pattern `131.155.' matches the address of (almost) every host on the - Eind\%hoven University network (131.155.x.x). - .IP \(bu --A string that begins with an `@\' character is treated as an NIS -+A string that begins with an `@' character is treated as an NIS - (formerly YP) netgroup name. A host name is matched if it is a host - member of the specified netgroup. Netgroup matches are not supported - for daemon process names or for client user names. - .IP \(bu --An expression of the form `n.n.n.n/m.m.m.m\' is interpreted as a --`net/mask\' pair. A host address is matched if `net\' is equal to the --bitwise AND of the address and the `mask\'. For example, the net/mask --pattern `131.155.72.0/255.255.254.0\' matches every address in the --range `131.155.72.0\' through `131.155.73.255\'. -+An expression of the form `n.n.n.n/m.m.m.m' is interpreted as a -+`net/mask' pair. A host address is matched if `net' is equal to the -+bitwise AND of the address and the `mask'. For example, the net/mask -+pattern `131.155.72.0/255.255.254.0' matches every address in the -+range `131.155.72.0' through `131.155.73.255'. -+.IP \(bu -+A string that begins with a `/' character is treated as a file -+name. A host name or address is matched if it matches any host name -+or address pattern listed in the named file. The file format is -+zero or more lines with zero or more host name or address patterns -+separated by whitespace. A file name pattern can be used anywhere -+a host name or address pattern can be used. - .SH WILDCARDS - The access control language supports explicit wildcards: - .IP ALL -@@ -115,19 +122,19 @@ without -DPARANOID when you want more co - .ne 6 - .SH OPERATORS - .IP EXCEPT --Intended use is of the form: `list_1 EXCEPT list_2\'; this construct -+Intended use is of the form: `list_1 EXCEPT list_2'; this construct - matches anything that matches \fIlist_1\fR unless it matches - \fIlist_2\fR. The EXCEPT operator can be used in daemon_lists and in - client_lists. The EXCEPT operator can be nested: if the control --language would permit the use of parentheses, `a EXCEPT b EXCEPT c\' --would parse as `(a EXCEPT (b EXCEPT c))\'. -+language would permit the use of parentheses, `a EXCEPT b EXCEPT c' -+would parse as `(a EXCEPT (b EXCEPT c))'. - .br - .ne 6 - .SH SHELL COMMANDS - If the first-matched access control rule contains a shell command, that - command is subjected to % substitutions (see next section). - The result is executed by a \fI/bin/sh\fR child process with standard --input, output and error connected to \fI/dev/null\fR. Specify an `&\' -+input, output and error connected to \fI/dev/null\fR. Specify an `&' - at the end of the command if you do not want to wait until it has - completed. - .PP -@@ -159,7 +166,7 @@ depending on how much information is ava - .IP %u - The client user name (or "unknown"). - .IP %% --Expands to a single `%\' character. -+Expands to a single `%' character. - .PP - Characters in % expansions that may confuse the shell are replaced by - underscores. -@@ -243,9 +250,9 @@ A positive IDENT lookup result (the clie - less trustworthy. It is possible for an intruder to spoof both the - client connection and the IDENT lookup, although doing so is much - harder than spoofing just a client connection. It may also be that --the client\'s IDENT server is lying. -+the client's IDENT server is lying. - .PP --Note: IDENT lookups don\'t work with UDP services. -+Note: IDENT lookups don't work with UDP services. - .SH EXAMPLES - The language is flexible enough that different types of access control - policy can be expressed with a minimum of fuss. Although the language -@@ -285,7 +292,7 @@ ALL: LOCAL @some_netgroup - .br - ALL: .foobar.edu EXCEPT terminalserver.foobar.edu - .PP --The first rule permits access from hosts in the local domain (no `.\' -+The first rule permits access from hosts in the local domain (no `.' - in the host name) and from members of the \fIsome_netgroup\fP - netgroup. The second rule permits access from all hosts in the - \fIfoobar.edu\fP domain (notice the leading dot), with the exception of -@@ -322,8 +329,8 @@ in.tftpd: LOCAL, .my.domain - /etc/hosts.deny: - .in +3 - .nf --in.tftpd: ALL: (/some/where/safe_finger -l @%h | \\ -- /usr/ucb/mail -s %d-%h root) & -+in.tftpd: ALL: (/usr/sbin/safe_finger -l @%h | \\ -+ /usr/bin/mail -s %d-%h root) & - .fi - .PP - The safe_finger command comes with the tcpd wrapper and should be -@@ -349,7 +356,7 @@ control rule; when the length of an acce - capacity of an internal buffer; when an access control rule is not - terminated by a newline character; when the result of % - expansion would overflow an internal buffer; when a system call fails --that shouldn\'t. All problems are reported via the syslog daemon. -+that shouldn't. All problems are reported via the syslog daemon. - .SH FILES - .na - .nf ---- a/rfc931.c -+++ b/rfc931.c -@@ -33,7 +33,7 @@ static char sccsid[] = "@(#) rfc931.c 1. - - int rfc931_timeout = RFC931_TIMEOUT;/* Global so it can be changed */ - --static jmp_buf timebuf; -+static sigjmp_buf timebuf; - - /* fsocket - open stdio stream on top of socket */ - -@@ -62,7 +62,7 @@ int protocol; - static void timeout(sig) - int sig; - { -- longjmp(timebuf, sig); -+ siglongjmp(timebuf, sig); - } - - /* rfc931 - return remote user name, given socket structures */ -@@ -99,7 +99,7 @@ char *dest; - * Set up a timer so we won't get stuck while waiting for the server. - */ - -- if (setjmp(timebuf) == 0) { -+ if (sigsetjmp(timebuf,1) == 0) { - signal(SIGALRM, timeout); - alarm(rfc931_timeout); - ---- a/tcpd.8 -+++ b/tcpd.8 -@@ -94,7 +94,7 @@ configuration files. - .PP - The example assumes that the network daemons live in /usr/etc. On some - systems, network daemons live in /usr/sbin or in /usr/libexec, or have --no `in.\' prefix to their name. -+no `in.' prefix to their name. - .SH EXAMPLE 2 - This example applies when \fItcpd\fR expects that the network daemons - are left in their original place. -@@ -110,26 +110,26 @@ finger stream tcp nowait nobody /us - becomes: - .sp - .ti +5 --finger stream tcp nowait nobody /some/where/tcpd in.fingerd -+finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd - .sp - .fi - .PP - The example assumes that the network daemons live in /usr/etc. On some - systems, network daemons live in /usr/sbin or in /usr/libexec, the --daemons have no `in.\' prefix to their name, or there is no userid -+daemons have no `in.' prefix to their name, or there is no userid - field in the inetd configuration file. - .PP - Similar changes will be needed for the other services that are to be --covered by \fItcpd\fR. Send a `kill -HUP\' to the \fIinetd\fR(8) -+covered by \fItcpd\fR. Send a `kill -HUP' to the \fIinetd\fR(8) - process to make the changes effective. AIX users may also have to --execute the `inetimp\' command. -+execute the `inetimp' command. - .SH EXAMPLE 3 - In the case of daemons that do not live in a common directory ("secret" - or otherwise), edit the \fIinetd\fR configuration file so that it - specifies an absolute path name for the process name field. For example: - .nf - .sp -- ntalk dgram udp wait root /some/where/tcpd /usr/local/lib/ntalkd -+ ntalk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.ntalkd - .sp - .fi - .PP ---- a/hosts_access.3 -+++ b/hosts_access.3 -@@ -3,7 +3,7 @@ - hosts_access, hosts_ctl, request_init, request_set \- access control library - .SH SYNOPSIS - .nf --#include "tcpd.h" -+#include - - extern int allow_severity; - extern int deny_severity; ---- a/options.c -+++ b/options.c -@@ -473,6 +473,9 @@ static struct syslog_names log_fac[] = { - #ifdef LOG_CRON - "cron", LOG_CRON, - #endif -+#ifdef LOG_FTP -+ "ftp", LOG_FTP, -+#endif - #ifdef LOG_LOCAL0 - "local0", LOG_LOCAL0, - #endif ---- a/fix_options.c -+++ b/fix_options.c -@@ -35,7 +35,12 @@ struct request_info *request; - #ifdef IP_OPTIONS - unsigned char optbuf[BUFFER_SIZE / 3], *cp; - char lbuf[BUFFER_SIZE], *lp; -+#if !defined(__GLIBC__) - int optsize = sizeof(optbuf), ipproto; -+#else /* __GLIBC__ */ -+ size_t optsize = sizeof(optbuf); -+ int ipproto; -+#endif /* __GLIBC__ */ - struct protoent *ip; - int fd = request->fd; - unsigned int opt; ---- a/workarounds.c -+++ b/workarounds.c -@@ -163,7 +163,11 @@ int *fromlen; - int fix_getpeername(sock, sa, len) - int sock; - struct sockaddr *sa; -+#if !defined(__GLIBC__) - int *len; -+#else /* __GLIBC__ */ -+size_t *len; -+#endif /* __GLIBC__ */ - { - int ret; - struct sockaddr_in *sin = (struct sockaddr_in *) sa; ---- a/socket.c -+++ b/socket.c -@@ -76,7 +76,11 @@ struct request_info *request; - { - static struct sockaddr_in client; - static struct sockaddr_in server; -+#if !defined (__GLIBC__) - int len; -+#else /* __GLIBC__ */ -+ size_t len; -+#endif /* __GLIBC__ */ - char buf[BUFSIZ]; - int fd = request->fd; - -@@ -224,7 +228,11 @@ int fd; - { - char buf[BUFSIZ]; - struct sockaddr_in sin; -+#if !defined(__GLIBC__) - int size = sizeof(sin); -+#else /* __GLIBC__ */ -+ size_t size = sizeof(sin); -+#endif /* __GLIBC__ */ - - /* - * Eat up the not-yet received datagram. Some systems insist on a ---- a/safe_finger.c -+++ b/safe_finger.c -@@ -26,21 +26,24 @@ static char sccsid[] = "@(#) safe_finger - #include - #include - #include -+#include - - extern void exit(); - - /* Local stuff */ - --char path[] = "PATH=/bin:/usr/bin:/usr/ucb:/usr/bsd:/etc:/usr/etc:/usr/sbin"; -+char path[] = "PATH=/bin:/usr/bin:/sbin:/usr/sbin"; - - #define TIME_LIMIT 60 /* Do not keep listinging forever */ - #define INPUT_LENGTH 100000 /* Do not keep listinging forever */ - #define LINE_LENGTH 128 /* Editors can choke on long lines */ - #define FINGER_PROGRAM "finger" /* Most, if not all, UNIX systems */ - #define UNPRIV_NAME "nobody" /* Preferred privilege level */ --#define UNPRIV_UGID 32767 /* Default uid and gid */ -+#define UNPRIV_UGID 65534 /* Default uid and gid */ - - int finger_pid; -+int allow_severity = SEVERITY; -+int deny_severity = LOG_WARNING; - - void cleanup(sig) - int sig; ---- a/hosts_options.5 -+++ b/hosts_options.5 -@@ -58,12 +58,12 @@ Notice the leading dot on the domain nam - Execute, in a child process, the specified shell command, after - performing the % expansions described in the hosts_access(5) - manual page. The command is executed with stdin, stdout and stderr --connected to the null device, so that it won\'t mess up the -+connected to the null device, so that it won't mess up the - conversation with the client host. Example: - .sp - .nf - .ti +3 --spawn (/some/where/safe_finger -l @%h | /usr/ucb/mail root) & -+spawn (/usr/sbin/safe_finger -l @%h | /usr/bin/mail root) & - .fi - .sp - executes, in a background child process, the shell command "safe_finger ---- a/tcpdchk.c -+++ b/tcpdchk.c -@@ -350,6 +350,8 @@ char *pat; - { - if (pat[0] == '@') { - tcpd_warn("%s: daemon name begins with \"@\"", pat); -+ } else if (pat[0] == '/') { -+ tcpd_warn("%s: daemon name begins with \"/\"", pat); - } else if (pat[0] == '.') { - tcpd_warn("%s: daemon name begins with dot", pat); - } else if (pat[strlen(pat) - 1] == '.') { -@@ -382,6 +384,8 @@ char *pat; - { - if (pat[0] == '@') { /* @netgroup */ - tcpd_warn("%s: user name begins with \"@\"", pat); -+ } else if (pat[0] == '/') { -+ tcpd_warn("%s: user name begins with \"/\"", pat); - } else if (pat[0] == '.') { - tcpd_warn("%s: user name begins with dot", pat); - } else if (pat[strlen(pat) - 1] == '.') { -@@ -402,8 +406,13 @@ char *pat; - static int check_host(pat) - char *pat; - { -+ char buf[BUFSIZ]; - char *mask; - int addr_count = 1; -+ FILE *fp; -+ struct tcpd_context saved_context; -+ char *cp; -+ char *wsp = " \t\r\n"; - - if (pat[0] == '@') { /* @netgroup */ - #ifdef NO_NETGRENT -@@ -422,6 +431,21 @@ char *pat; - tcpd_warn("netgroup support disabled"); - #endif - #endif -+ } else if (pat[0] == '/') { /* /path/name */ -+ if ((fp = fopen(pat, "r")) != 0) { -+ saved_context = tcpd_context; -+ tcpd_context.file = pat; -+ tcpd_context.line = 0; -+ while (fgets(buf, sizeof(buf), fp)) { -+ tcpd_context.line++; -+ for (cp = strtok(buf, wsp); cp; cp = strtok((char *) 0, wsp)) -+ check_host(cp); -+ } -+ tcpd_context = saved_context; -+ fclose(fp); -+ } else if (errno != ENOENT) { -+ tcpd_warn("open %s: %m", pat); -+ } - } else if (mask = split_at(pat, '/')) { /* network/netmask */ - if (dot_quad_addr(pat) == INADDR_NONE - || dot_quad_addr(mask) == INADDR_NONE) ---- a/percent_m.c -+++ b/percent_m.c -@@ -13,7 +13,7 @@ static char sccsid[] = "@(#) percent_m.c - #include - - extern int errno; --#ifndef SYS_ERRLIST_DEFINED -+#if !defined(SYS_ERRLIST_DEFINED) && !defined(HAVE_STRERROR) - extern char *sys_errlist[]; - extern int sys_nerr; - #endif -@@ -29,11 +29,15 @@ char *ibuf; - - while (*bp = *cp) - if (*cp == '%' && cp[1] == 'm') { -+#ifdef HAVE_STRERROR -+ strcpy(bp, strerror(errno)); -+#else - if (errno < sys_nerr && errno > 0) { - strcpy(bp, sys_errlist[errno]); - } else { - sprintf(bp, "Unknown error %d", errno); - } -+#endif - bp += strlen(bp); - cp += 2; - } else { ---- a/scaffold.c -+++ b/scaffold.c -@@ -180,10 +180,12 @@ struct request_info *request; - - /* ARGSUSED */ - --void rfc931(request) --struct request_info *request; -+void rfc931(rmt_sin, our_sin, dest) -+struct sockaddr_in *rmt_sin; -+struct sockaddr_in *our_sin; -+char *dest; - { -- strcpy(request->user, unknown); -+ strcpy(dest, unknown); - } - - /* check_path - examine accessibility */ ---- /dev/null -+++ b/weak_symbols.c -@@ -0,0 +1,11 @@ -+ /* -+ * @(#) weak_symbols.h 1.5 99/12/29 23:50 -+ * -+ * Author: Anthony Towns -+ */ -+ -+#ifdef HAVE_WEAKSYMS -+#include -+int deny_severity = LOG_WARNING; -+int allow_severity = SEVERITY; -+#endif diff --git a/package/libs/tcp_wrappers/patches/002-opt_cflags.patch b/package/libs/tcp_wrappers/patches/002-opt_cflags.patch deleted file mode 100644 index 1f38eb3fef..0000000000 --- a/package/libs/tcp_wrappers/patches/002-opt_cflags.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/Makefile -+++ b/Makefile -@@ -689,7 +689,8 @@ SHLIBFLAGS = -Lshared -lwrap - shared/%.o: %.c - $(CC) $(CFLAGS) $(SHCFLAGS) -c $< -o $@ - --CFLAGS = -O2 -g -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \ -+OPT_CFLAGS = -O2 -g -+CFLAGS = $(OPT_CFLAGS) -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \ - $(BUGS) $(SYSTYPE) $(AUTH) $(UMASK) \ - -DREAL_DAEMON_DIR=\"$(REAL_DAEMON_DIR)\" $(STYLE) $(KILL_OPT) \ - -DSEVERITY=$(SEVERITY) -DRFC931_TIMEOUT=$(RFC931_TIMEOUT) \ diff --git a/package/libs/tcp_wrappers/patches/003-scaffold_malloc.patch b/package/libs/tcp_wrappers/patches/003-scaffold_malloc.patch deleted file mode 100644 index ecda5ae96d..0000000000 --- a/package/libs/tcp_wrappers/patches/003-scaffold_malloc.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- a/scaffold.c -+++ b/scaffold.c -@@ -20,13 +20,12 @@ static char sccs_id[] = "@(#) scaffold.c - #include - #include - #include -+#include - - #ifndef INADDR_NONE - #define INADDR_NONE (-1) /* XXX should be 0xffffffff */ - #endif - --extern char *malloc(); -- - /* Application-specific. */ - - #include "tcpd.h" diff --git a/package/libs/tcp_wrappers/patches/004-ipv4_prefix.patch b/package/libs/tcp_wrappers/patches/004-ipv4_prefix.patch deleted file mode 100644 index 29c9cefcad..0000000000 --- a/package/libs/tcp_wrappers/patches/004-ipv4_prefix.patch +++ /dev/null @@ -1,72 +0,0 @@ ---- a/hosts_access.5 -+++ b/hosts_access.5 -@@ -90,6 +90,9 @@ bitwise AND of the address and the `mask - pattern `131.155.72.0/255.255.254.0' matches every address in the - range `131.155.72.0' through `131.155.73.255'. - .IP \(bu -+An expression of the form `n.n.n.n/m\' is interpreted as a -+`net/prefixlen\' pair, as below, for IPv4 addresses. -+.IP \(bu - A string that begins with a `/' character is treated as a file - name. A host name or address is matched if it matches any host name - or address pattern listed in the named file. The file format is ---- a/tcpd.h -+++ b/tcpd.h -@@ -93,6 +93,7 @@ extern void refuse __P((struct request_i - extern char *xgets __P((char *, int, FILE *)); /* fgets() on steroids */ - extern char *split_at __P((char *, int)); /* strchr() and split */ - extern unsigned long dot_quad_addr __P((char *)); /* restricted inet_addr() */ -+extern unsigned long prefix_to_netmask __P((char *)); /* 0-32 prefix length */ - - /* Global variables. */ - ---- a/misc.c -+++ b/misc.c -@@ -14,6 +14,8 @@ static char sccsic[] = "@(#) misc.c 1.2 - #include - #include - #include -+#include -+#include - - #include "tcpd.h" - -@@ -85,3 +87,22 @@ char *str; - } - return (runs == 4 ? inet_addr(str) : INADDR_NONE); - } -+ -+/* prefix_to_netmask - convert prefix (0-32) to netmask */ -+ -+unsigned long prefix_to_netmask(str) -+char *str; -+{ -+ unsigned long prefix; -+ char *endptr; -+ -+ if (!isdigit(str[0])) -+ return INADDR_NONE; -+ -+ prefix = strtoul(str, &endptr, 10); -+ if ((endptr == str) || (*endptr != '\0') || (prefix > 32)) -+ return INADDR_NONE; -+ -+ return htonl(~0UL << (32 - prefix)); -+} -+ ---- a/hosts_access.c -+++ b/hosts_access.c -@@ -345,7 +345,12 @@ char *string; - if ((addr = dot_quad_addr(string)) == INADDR_NONE) - return (NO); - if ((net = dot_quad_addr(net_tok)) == INADDR_NONE -- || (mask = dot_quad_addr(mask_tok)) == INADDR_NONE) { -+ || ((mask = dot_quad_addr(mask_tok)) == INADDR_NONE -+ && strcmp(mask_tok, "255.255.255.255") -+ && (mask = prefix_to_netmask(mask_tok)) == INADDR_NONE -+ && strcmp(mask_tok, "32"))) { -+ /* 255.255.255.255 == INADDR_NONE, separate check needed. TJ. */ -+ /* 32 == INADDR_NONE, separate check needed. philipp */ - tcpd_warn("bad net/mask expression: %s/%s", net_tok, mask_tok); - return (NO); /* not tcpd_jump() */ - } diff --git a/package/libs/tcp_wrappers/patches/005-no--lnsl-on-musl.patch b/package/libs/tcp_wrappers/patches/005-no--lnsl-on-musl.patch deleted file mode 100644 index 5e7b968dde..0000000000 --- a/package/libs/tcp_wrappers/patches/005-no--lnsl-on-musl.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: tcp_wrappers_7.6/Makefile -=================================================================== ---- tcp_wrappers_7.6.orig/Makefile -+++ tcp_wrappers_7.6/Makefile -@@ -1,4 +1,4 @@ --GLIBC=$(shell grep -s -c __GLIBC__ /usr/include/features.h) -+GLIBC=$(shell grep -s -c __GLIBC__ ${STAGING_DIR}/usr/include/features.h) - - # @(#) Makefile 1.23 97/03/21 19:27:20 - -@@ -146,9 +146,11 @@ freebsd: - LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ= NETGROUP= TLI= \ - EXTRA_CFLAGS=-DSYS_ERRLIST_DEFINED VSYSLOG= all - -+ifneq ($(GLIBC),) - ifneq ($(GLIBC),0) - MYLIB=-lnsl - endif -+endif - - linux: - @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ diff --git a/package/libs/toolchain/Makefile b/package/libs/toolchain/Makefile index 0101b81a31..febc7c2dbc 100644 --- a/package/libs/toolchain/Makefile +++ b/package/libs/toolchain/Makefile @@ -83,7 +83,7 @@ endef define Package/libssp $(call Package/gcc/Default) - DEPENDS+=@SSP_SUPPORT + DEPENDS+=@GCC_LIBSSP TITLE:=GCC support library endef @@ -164,7 +164,7 @@ define Package/libc/config string prompt "libc shared library files (use wildcards)" depends on EXTERNAL_TOOLCHAIN && PACKAGE_libc - default "./lib/ld{-*.so,-linux*.so.*} ./lib/lib{anl,c,cidn,crypt,dl,m,nsl,nss_dns,nss_files,resolv,util}{-*.so,.so.*}" + default "./lib/ld{*.so*,-linux*.so.*} ./lib/lib{anl,c,cidn,crypt,dl,m,nsl,nss_dns,nss_files,resolv,util}{-*.so,.so.*,.so}" endmenu endef @@ -202,6 +202,26 @@ $(call Package/libc/Default) TITLE:=POSIX thread library debugging support endef +define Package/libthread-db/config + menu "Configuration" + depends on EXTERNAL_TOOLCHAIN && PACKAGE_libthread-db + + config LIBTHREAD_DB_ROOT_DIR + string + prompt "POSIX thread debugging shared library base directory" + depends on EXTERNAL_TOOLCHAIN && PACKAGE_libthread-db + default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN + default "/" if NATIVE_TOOLCHAIN + + config LIBTHREAD_DB_FILE_SPEC + string + prompt "POSIX thread debugging shared library files (use wildcards)" + depends on EXTERNAL_TOOLCHAIN && PACKAGE_libthread-db + default "./lib/libthread_db{-*.so,.so.*}" + + endmenu +endef + define Package/librt $(call Package/libc/Default) TITLE:=POSIX.1b RealTime extension library @@ -255,6 +275,32 @@ define Package/libgfortran/config endmenu endef +define Package/libgomp +$(call Package/gcc/Default) + TITLE:=OpenMP support library +endef + +define Package/libgomp/config + menu "Configuration" + depends on EXTERNAL_TOOLCHAIN && PACKAGE_libgomp + + config LIBGOMP_ROOT_DIR + string + prompt "libgomp shared library base directory" + depends on EXTERNAL_TOOLCHAIN && PACKAGE_libgomp + default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN + default "/" if NATIVE_TOOLCHAIN + + config LIBGOMP_FILE_SPEC + string + prompt "libgomp shared library files (use wildcards)" + depends on EXTERNAL_TOOLCHAIN && PACKAGE_libgomp + default "./lib/libgomp.so*" + + endmenu +endef + + define Package/ldd $(call Package/libc/Default) DEPENDS:=@!USE_MUSL @@ -323,9 +369,6 @@ LIBGCC_SO=$(lastword $(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so.*)) define Build/Compile/uClibc $(CP) \ $(TOOLCHAIN_DIR)/lib/libuClibc-*.so \ - $(TOOLCHAIN_DIR)/lib/libcrypt-*.so \ - $(TOOLCHAIN_DIR)/lib/libm-*.so \ - $(TOOLCHAIN_DIR)/lib/libpthread-*.so \ $(PKG_BUILD_DIR)/ endef ifneq ($(LIBGCC_SO),) @@ -395,17 +438,8 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) $(TOOLCHAIN_DIR)/lib/libc.so.* \ $(TOOLCHAIN_DIR)/lib/libuClibc-$(LIBC_SO_VERSION).so \ $(1)/lib/ - for file in libcrypt libdl libm libutil; do \ - $(CP) \ - $(TOOLCHAIN_DIR)/lib/$$$$file.so.* \ - $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_SO_VERSION).so \ - $(1)/lib/; \ - done - $(CP) \ $(PKG_BUILD_DIR)/libuClibc-* \ - $(PKG_BUILD_DIR)/libm-* \ - $(PKG_BUILD_DIR)/libcrypt-* \ $(1)/lib/ endef @@ -437,7 +471,7 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) define Package/libpthread/install $(INSTALL_DIR) $(1)/lib - ifneq ($(CONFIG_USE_MUSL),y) + ifneq ($(CONFIG_USE_MUSL)$(CONFIG_USE_UCLIBC),y) $(CP) \ $(TOOLCHAIN_DIR)/lib/libpthread.so.* \ $(TOOLCHAIN_DIR)/lib/libpthread-$(LIBC_SO_VERSION).so \ @@ -462,7 +496,7 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) define Package/librt/install $(INSTALL_DIR) $(1)/lib - ifneq ($(CONFIG_USE_MUSL),y) + ifneq ($(CONFIG_USE_MUSL)$(CONFIG_USE_UCLIBC),y) $(CP) \ $(TOOLCHAIN_DIR)/lib/librt.so.* \ $(TOOLCHAIN_DIR)/lib/librt-$(LIBC_SO_VERSION).so \ @@ -529,6 +563,14 @@ else exit 0 endef + define Package/libthread-db/install + for file in $(call qstrip,$(CONFIG_LIBTHREAD_DB_FILE_SPEC)); do \ + $(INSTALL_DIR) $(1)/lib ; \ + $(CP) $(call qstrip,$(CONFIG_LIBTHREAD_DB_ROOT_DIR))/$$$$file $(1)/lib/ ; \ + done ; \ + exit 0 + endef + define Package/librt/install for file in $(call qstrip,$(CONFIG_LIBRT_FILE_SPEC)); do \ $(INSTALL_DIR) $(1)/lib ; \ @@ -545,6 +587,14 @@ else exit 0 endef + define Package/libgomp/install + for file in $(call qstrip,$(CONFIG_LIBGOMP_FILE_SPEC)); do \ + $(INSTALL_DIR) $(1)/lib ; \ + $(CP) $(call qstrip,$(CONFIG_LIBGOMP_ROOT_DIR))/$$$$file $(1)/lib/ ; \ + done ; \ + exit 0 + endef + define Package/ldd/install for file in $(call qstrip,$(CONFIG_LDD_FILE_SPEC)); do \ dir=`dirname $$$$file` ; \ @@ -574,5 +624,6 @@ $(eval $(call BuildPackage,libpthread)) $(eval $(call BuildPackage,libthread-db)) $(eval $(call BuildPackage,librt)) $(eval $(call BuildPackage,libgfortran)) +$(eval $(call BuildPackage,libgomp)) $(eval $(call BuildPackage,ldd)) $(eval $(call BuildPackage,ldconfig)) diff --git a/package/libs/uclient/Makefile b/package/libs/uclient/Makefile index 3eefa2e012..1e86c808bc 100644 --- a/package/libs/uclient/Makefile +++ b/package/libs/uclient/Makefile @@ -4,7 +4,7 @@ PKG_NAME:=uclient PKG_RELEASE=1 PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL=$(LEDE_GIT)/project/uclient.git +PKG_SOURCE_URL=$(PROJECT_GIT)/uclient.git PKG_SOURCE_DATE:=2017-11-02 PKG_SOURCE_VERSION:=4b87d83160fec70d50b7fcd736a8c538c28a016c PKG_MIRROR_HASH:=4bbb4d5f295ebdcd67fec87a6794168bea2176a42cb2907c47d8566fb33dafb3 diff --git a/package/libs/ustream-ssl/Makefile b/package/libs/ustream-ssl/Makefile index b9b9e19dfb..eca0417133 100644 --- a/package/libs/ustream-ssl/Makefile +++ b/package/libs/ustream-ssl/Makefile @@ -1,13 +1,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ustream-ssl -PKG_RELEASE:=3 +PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL=$(LEDE_GIT)/project/ustream-ssl.git -PKG_SOURCE_DATE:=2016-07-02 -PKG_SOURCE_VERSION:=ec80adaa1b47f28d426fa19c692011ce60b992d6 -PKG_MIRROR_HASH:=bfbad6b4e8c1e933f0bfaab43cbdd44a536c08128c3a779e6f2395a6a886aab7 +PKG_SOURCE_URL=$(PROJECT_GIT)/ustream-ssl.git +PKG_SOURCE_DATE:=2018-05-24 +PKG_SOURCE_VERSION:=189cd38b4188bfcb4c8cf67d8ae71741ffc2b906 +PKG_MIRROR_HASH:=114d229828d95229e2b7134f668c0d2c3cee63ffa90e970d4c50a331f505b17d CMAKE_INSTALL:=1 PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR) @@ -35,11 +35,11 @@ define Package/libustream-openssl VARIANT:=openssl endef -define Package/libustream-cyassl +define Package/libustream-wolfssl $(Package/libustream/default) - TITLE += (cyassl) - DEPENDS += +PACKAGE_libustream-cyassl:libcyassl - VARIANT:=cyassl + TITLE += (wolfssl) + DEPENDS += +PACKAGE_libustream-wolfssl:libwolfssl + VARIANT:=wolfssl endef define Package/libustream-mbedtls @@ -50,7 +50,7 @@ define Package/libustream-mbedtls DEFAULT_VARIANT:=1 endef -ifeq ($(BUILD_VARIANT),cyassl) +ifeq ($(BUILD_VARIANT),wolfssl) TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/cyassl -DHAVE_SNI CMAKE_OPTIONS += -DCYASSL=on endif @@ -64,9 +64,9 @@ define Package/libustream/default/install endef Package/libustream-openssl/install = $(Package/libustream/default/install) -Package/libustream-cyassl/install = $(Package/libustream/default/install) +Package/libustream-wolfssl/install = $(Package/libustream/default/install) Package/libustream-mbedtls/install = $(Package/libustream/default/install) $(eval $(call BuildPackage,libustream-mbedtls)) -$(eval $(call BuildPackage,libustream-cyassl)) +$(eval $(call BuildPackage,libustream-wolfssl)) $(eval $(call BuildPackage,libustream-openssl)) diff --git a/package/libs/wolfssl/Config.in b/package/libs/wolfssl/Config.in new file mode 100644 index 0000000000..50b0bb9cdf --- /dev/null +++ b/package/libs/wolfssl/Config.in @@ -0,0 +1,60 @@ +if PACKAGE_libwolfssl + +config WOLFSSL_HAS_AES_CCM + bool "Include AES-CCM support" + default y + +config WOLFSSL_HAS_AES_GCM + bool "Include AES-GCM support" + default y + +config WOLFSSL_HAS_CHACHA + bool "Include ChaCha cipher suite support" + default n + +config WOLFSSL_HAS_ECC + bool "Include ECC (Elliptic Curve Cryptography) support" + default y + +config WOLFSSL_HAS_DH + bool "Include DH (Diffie-Hellman) support" + default y + +config WOLFSSL_HAS_ARC4 + bool "Include ARC4 support" + default y + +config WOLFSSL_HAS_DES3 + bool "Include DES3 (Tripple-DES) support" + default y + +config WOLFSSL_HAS_PSK + bool "Include PKS (Pre Share Key) support" + default y + +config WOLFSSL_HAS_SESSION_TICKET + bool "Include session ticket support" + default y + +config WOLFSSL_HAS_DTLS + bool "Include DTLS support" + default n + +config WOLFSSL_HAS_OCSP + bool "Include OSCP support" + default y + +config WOLFSSL_HAS_WPAS + bool "Include wpa_supplicant support" + default y + +config WOLFSSL_HAS_ECC25519 + bool "Include ECC Curve 22519 support" + depends on WOLFSSL_HAS_ECC + default n + +config WOLFSSL_HAS_POLY_1305 + bool "Include Poly-1305 support" + default n + +endif diff --git a/package/libs/wolfssl/Makefile b/package/libs/wolfssl/Makefile new file mode 100644 index 0000000000..e08b6f3929 --- /dev/null +++ b/package/libs/wolfssl/Makefile @@ -0,0 +1,175 @@ +# +# Copyright (C) 2006-2017 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=wolfssl +PKG_VERSION:=3.14.4 +PKG_RELEASE:=3 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip +# PKG_SOURCE_URL:=https://www.wolfssl.com/ +PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION) +PKG_HASH:=1da1b45dec4a455716c8547074ad883c737865225f69443bb173c0dc21683fd1 + +PKG_FIXUP:=libtool +PKG_INSTALL:=1 +PKG_USE_MIPS16:=0 +PKG_BUILD_PARALLEL:=1 +PKG_LICENSE:=GPL-2.0+ +PKG_CPE_ID:=cpe:/a:yassl:cyassl + +PKG_CONFIG_DEPENDS:=\ + CONFIG_WOLFSSL_HAS_AES_CCM CONFIG_WOLFSSL_HAS_AES_GCM \ + CONFIG_WOLFSSL_HAS_ARC4 CONFIG_WOLFSSL_HAS_CHACHA \ + CONFIG_WOLFSSL_HAS_DES3 CONFIG_WOLFSSL_HAS_DH CONFIG_WOLFSSL_HAS_DTLS \ + CONFIG_WOLFSSL_HAS_ECC CONFIG_WOLFSSL_HAS_ECC25519 \ + CONFIG_WOLFSSL_HAS_OCSP CONFIG_WOLFSSL_HAS_POLY_1305 \ + CONFIG_WOLFSSL_HAS_PSK CONFIG_WOLFSSL_HAS_SESSION_TICKET \ + CONFIG_WOLFSSL_HAS_WPAS + +include $(INCLUDE_DIR)/package.mk + +define Package/libwolfssl + SECTION:=libs + SUBMENU:=SSL + CATEGORY:=Libraries + TITLE:=wolfSSL library + URL:=http://www.wolfssl.com/ + MAINTAINER:=Alexandru Ardelean + MENU:=1 + PROVIDES:=libcyassl +endef + +define Package/libwolfssl/description +wolfSSL (formerly CyaSSL) is an SSL library optimized for small +footprint, both on disk and for memory use. +endef + +define Package/libwolfssl/config + source "$(SOURCE)/Config.in" +endef + +TARGET_CFLAGS += $(FPIC) + +# --enable-stunnel needed for OpenSSL API compatibility bits +CONFIGURE_ARGS += \ + --enable-opensslextra \ + --enable-sni \ + --enable-stunnel \ + --disable-examples \ + --disable-leanpsk \ + --disable-leantls \ + +ifeq ($(CONFIG_IPV6),y) +CONFIGURE_ARGS += \ + --enable-ipv6 +endif + +ifeq ($(CONFIG_WOLFSSL_HAS_AES_CCM),y) +CONFIGURE_ARGS += \ + --enable-aesccm +endif + +ifneq ($(CONFIG_WOLFSSL_HAS_AES_GCM),y) +CONFIGURE_ARGS += \ + --disable-aesgcm +endif + +ifneq ($(CONFIG_WOLFSSL_HAS_CHACHA),y) +CONFIGURE_ARGS += \ + --disable-chacha +endif + +ifeq ($(CONFIG_WOLFSSL_HAS_ECC),y) +CONFIGURE_ARGS += \ + --enable-ecc \ + --enable-supportedcurves +endif + +ifeq ($(CONFIG_WOLFSSL_HAS_DH),y) +CONFIGURE_ARGS += \ + --enable-dh +endif + +ifneq ($(CONFIG_WOLFSSL_HAS_ARC4),y) +CONFIGURE_ARGS += \ + --disable-arc4 +else +CONFIGURE_ARGS += \ + --enable-arc4 +endif + +ifneq ($(CONFIG_WOLFSSL_HAS_DES3),y) +CONFIGURE_ARGS += \ + --disable-des3 +else +CONFIGURE_ARGS += \ + --enable-des3 +endif + +ifeq ($(CONFIG_WOLFSSL_HAS_PSK),y) +CONFIGURE_ARGS += \ + --enable-psk +endif + +ifeq ($(CONFIG_WOLFSSL_HAS_SESSION_TICKET),y) +CONFIGURE_ARGS += \ + --enable-session-ticket +endif + +ifeq ($(CONFIG_WOLFSSL_HAS_DTLS),y) +CONFIGURE_ARGS += \ + --enable-dtls +endif + +ifeq ($(CONFIG_WOLFSSL_HAS_OCSP),y) +CONFIGURE_ARGS += \ + --enable-ocsp --enable-ocspstapling --enable-ocspstapling2 +endif + +ifeq ($(CONFIG_WOLFSSL_HAS_WPAS),y) +CONFIGURE_ARGS += \ + --enable-wpas --enable-sha512 --enable-fortress --enable-fastmath +endif + +ifeq ($(CONFIG_WOLFSSL_HAS_ECC25519),y) +CONFIGURE_ARGS += \ + --enable-curve25519 +endif + +ifneq ($(CONFIG_WOLFSSL_HAS_POLY1305),y) +CONFIGURE_ARGS += \ + --enable-poly1305 +endif + +#ifneq ($(CONFIG_TARGET_x86),) +# CONFIGURE_ARGS += --enable-intelasm +#endif +#ifneq ($(CONFIG_TARGET_x86_64),) +# CONFIGURE_ARGS += --enable-intelasm +#endif + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib/pkgconfig + $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/ + + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwolfssl.{so*,la} $(1)/usr/lib/ + ln -s libwolfssl.so $(1)/usr/lib/libcyassl.so + ln -s libwolfssl.la $(1)/usr/lib/libcyassl.la + + $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig +endef + +define Package/libwolfssl/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwolfssl.so* $(1)/usr/lib/ + ln -s libwolfssl.so $(1)/usr/lib/libcyassl.so +endef + +$(eval $(call BuildPackage,libwolfssl)) diff --git a/package/libs/wolfssl/patches/100-disable-hardening-check.patch b/package/libs/wolfssl/patches/100-disable-hardening-check.patch new file mode 100644 index 0000000000..d913b5fdea --- /dev/null +++ b/package/libs/wolfssl/patches/100-disable-hardening-check.patch @@ -0,0 +1,11 @@ +--- a/wolfssl/wolfcrypt/settings.h ++++ b/wolfssl/wolfcrypt/settings.h +@@ -1624,7 +1624,7 @@ extern void uITRON4_free(void *p) ; + #endif + + /* warning for not using harden build options (default with ./configure) */ +-#ifndef WC_NO_HARDEN ++#if 0 + #if (defined(USE_FAST_MATH) && !defined(TFM_TIMING_RESISTANT)) || \ + (defined(HAVE_ECC) && !defined(ECC_TIMING_RESISTANT)) || \ + (!defined(NO_RSA) && !defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS)) diff --git a/package/libs/cyassl/patches/400-additional_compatibility.patch b/package/libs/wolfssl/patches/400-additional_compatibility.patch similarity index 100% rename from package/libs/cyassl/patches/400-additional_compatibility.patch rename to package/libs/wolfssl/patches/400-additional_compatibility.patch diff --git a/package/libs/zlib/Config.in b/package/libs/zlib/Config.in new file mode 100644 index 0000000000..64b835e77a --- /dev/null +++ b/package/libs/zlib/Config.in @@ -0,0 +1,11 @@ +menu "Configuration" + depends on PACKAGE_zlib + +config ZLIB_OPTIMIZE_SPEED + bool "Optimize for speed" + help + This enables additional optimization and + increases performance considerably at + the expense of binary size. + +endmenu diff --git a/package/libs/zlib/Makefile b/package/libs/zlib/Makefile index 902381bdea..4a2a0e53b0 100644 --- a/package/libs/zlib/Makefile +++ b/package/libs/zlib/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=zlib PKG_VERSION:=1.2.11 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@SF/libpng http://www.zlib.net @@ -17,8 +17,12 @@ PKG_HASH:=4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066 PKG_LICENSE:=Zlib PKG_LICENSE_FILES:=README +PKG_CPE_ID:=cpe:/a:gnu:zlib + +PKG_CONFIG_DEPENDS:= CONFIG_ZLIB_OPTIMIZE_SPEED include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk define Package/zlib SECTION:=libs @@ -45,28 +49,18 @@ define Package/zlib-dev/description This package includes the development support files. endef -define Build/Configure - (cd $(PKG_BUILD_DIR); \ - $(TARGET_CONFIGURE_OPTS) \ - LDSHARED="$(TARGET_CC) -shared -Wl,-soname,libz.so.1" \ - CFLAGS="$(TARGET_CFLAGS) $(FPIC)" \ - ./configure \ - --prefix=/usr \ - --shared \ - --uname=Linux \ - ); +define Package/zlib/config + source "$(SOURCE)/Config.in" endef -define Build/Compile - +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ - $(TARGET_CONFIGURE_OPTS) \ - CFLAGS="$(TARGET_CFLAGS)" \ - libz.a libz.so.$(PKG_VERSION) - mkdir -p $(PKG_INSTALL_DIR) - $(MAKE) -C $(PKG_BUILD_DIR) \ - DESTDIR="$(PKG_INSTALL_DIR)" \ - install -endef +TARGET_CFLAGS += $(FPIC) + +ifeq ($(CONFIG_ZLIB_OPTIMIZE_SPEED),y) + TARGET_CFLAGS := $(filter-out -O%,$(TARGET_CFLAGS)) -O3 +endif + +CMAKE_OPTIONS += \ + -DARMv8=$$$$(echo -e '\#ifdef __ARM_NEON__\nON\n\#else\nOFF\n\#endif' | $$(TARGET_CC) $$(TARGET_CFLAGS) -x c -E - | grep -xE 'ON|OFF') define Build/InstallDev mkdir -p $(1)/usr/include @@ -76,7 +70,7 @@ define Build/InstallDev $(CP) $(PKG_INSTALL_DIR)/usr/lib/libz.{a,so*} \ $(1)/usr/lib/ mkdir -p $(1)/usr/lib/pkgconfig - $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/zlib.pc \ + $(CP) $(PKG_INSTALL_DIR)/usr/share/pkgconfig/zlib.pc \ $(1)/usr/lib/pkgconfig/ endef @@ -96,7 +90,7 @@ define Package/zlib-dev/install $(INSTALL_DIR) $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/lib/libz.a $(1)/usr/lib/ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig - $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/zlib.pc \ + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/pkgconfig/zlib.pc \ $(1)/usr/lib/pkgconfig/ endef diff --git a/package/libs/zlib/patches/001-neon-implementation-of-adler32.patch b/package/libs/zlib/patches/001-neon-implementation-of-adler32.patch new file mode 100644 index 0000000000..843ef45c7d --- /dev/null +++ b/package/libs/zlib/patches/001-neon-implementation-of-adler32.patch @@ -0,0 +1,253 @@ +From d2f06cd65d7ac39c6dd6761eef162abc946b155b Mon Sep 17 00:00:00 2001 +From: Adenilson Cavalcanti +Date: Tue, 11 Apr 2017 17:13:02 -0700 +Subject: [PATCH] NEON implementation for Adler32 + +The checksum is calculated in the uncompressed PNG data +and can be made much faster by using SIMD. + +Tests in ARMv8 yielded an improvement of about 3x +(e.g. walltime was 350ms x 125ms for a 4096x4096 bytes +executed 30 times). That results in at least 18% improvement +in image decoding in Chromium. + +Further details at: +https://bugs.chromium.org/p/chromium/issues/detail?id=688601 +--- + CMakeLists.txt | 29 +++++++--- + adler32.c | 5 ++ + contrib/README.contrib | 3 + + contrib/arm/neon_adler32.c | 137 +++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 166 insertions(+), 8 deletions(-) + create mode 100644 contrib/arm/neon_adler32.c + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0fe939df..8e75f664 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,6 +7,7 @@ set(VERSION "1.2.11") + + option(ASM686 "Enable building i686 assembly implementation") + option(AMD64 "Enable building amd64 assembly implementation") ++option(ARMv8 "Enable building ARM NEON intrinsics implementation") + + set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables") + set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries") +@@ -132,14 +133,26 @@ endif() + if(CMAKE_COMPILER_IS_GNUCC) + if(ASM686) + set(ZLIB_ASMS contrib/asm686/match.S) +- elseif (AMD64) ++ elseif(AMD64) + set(ZLIB_ASMS contrib/amd64/amd64-match.S) +- endif () ++ elseif(ARMv8) ++ set(ZLIB_ARMv8 contrib/arm/neon_adler32.c) ++ endif() + +- if(ZLIB_ASMS) +- add_definitions(-DASMV) +- set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE) +- endif() ++ if(ZLIB_ASMS) ++ add_definitions(-DASMV) ++ set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE) ++ elseif(ZLIB_ARMv8) ++ add_definitions(-DARMv8) ++ set(COMPILER ${CMAKE_C_COMPILER}) ++ # NEON is mandatory in ARMv8. ++ if(${COMPILER} MATCHES "aarch64") ++ set_source_files_properties(${ZLIB_ARMv8} PROPERTIES LANGUAGE C COMPILE_FLAGS -march=armv8-a) ++ # But it was optional for ARMv7. ++ elseif(${COMPILER} MATCHES "arm") ++ set_source_files_properties(${ZLIB_ARMv8} PROPERTIES LANGUAGE C COMPILE_FLAGS -mfpu=neon) ++ endif() ++ endif() + endif() + + if(MSVC) +@@ -183,8 +196,8 @@ if(MINGW) + set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) + endif(MINGW) + +-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) +-add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) ++add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_ARMv8} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) ++add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_ARMv8} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) + set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) + set_target_properties(zlib PROPERTIES SOVERSION 1) + +diff --git a/adler32.c b/adler32.c +index d0be4380..45ebaa4b 100644 +--- a/adler32.c ++++ b/adler32.c +@@ -136,7 +136,12 @@ uLong ZEXPORT adler32(adler, buf, len) + const Bytef *buf; + uInt len; + { ++#ifdef ARMv8 ++# pragma message("Using NEON-ized Adler32.") ++ return NEON_adler32(adler, buf, len); ++#else + return adler32_z(adler, buf, len); ++#endif + } + + /* ========================================================================= */ +diff --git a/contrib/README.contrib b/contrib/README.contrib +index a411d5c3..3fd1d202 100644 +--- a/contrib/README.contrib ++++ b/contrib/README.contrib +@@ -12,6 +12,9 @@ amd64/ by Mikhail Teterin + asm code for AMD64 + See patch at http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/96393 + ++arm/ by Adenilson Cavalcanti ++ ARM optimizations (NEON and ARMv8 code). ++ + asm686/ by Brian Raiter + asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax + See http://www.muppetlabs.com/~breadbox/software/assembly.html +diff --git a/contrib/arm/neon_adler32.c b/contrib/arm/neon_adler32.c +new file mode 100644 +index 00000000..f173a74f +--- /dev/null ++++ b/contrib/arm/neon_adler32.c +@@ -0,0 +1,137 @@ ++/* Copyright (C) 1995-2011, 2016 Mark Adler ++ * Copyright (C) 2017 ARM Holdings Inc. ++ * Authors: Adenilson Cavalcanti ++ * Simon Hosie ++ * This software is provided 'as-is', without any express or implied ++ * warranty. In no event will the authors be held liable for any damages ++ * arising from the use of this software. ++ * Permission is granted to anyone to use this software for any purpose, ++ * including commercial applications, and to alter it and redistribute it ++ * freely, subject to the following restrictions: ++ * 1. The origin of this software must not be misrepresented; you must not ++ * claim that you wrote the original software. If you use this software ++ * in a product, an acknowledgment in the product documentation would be ++ * appreciated but is not required. ++ * 2. Altered source versions must be plainly marked as such, and must not be ++ * misrepresented as being the original software. ++ * 3. This notice may not be removed or altered from any source distribution. ++ */ ++ ++#if (defined(__ARM_NEON__) || defined(__ARM_NEON)) ++#include ++ ++static void NEON_accum32(uint32_t *s, const unsigned char *buf, ++ unsigned int len) ++{ ++ static const uint8_t taps[32] = { ++ 32, 31, 30, 29, 28, 27, 26, 25, ++ 24, 23, 22, 21, 20, 19, 18, 17, ++ 16, 15, 14, 13, 12, 11, 10, 9, ++ 8, 7, 6, 5, 4, 3, 2, 1 }; ++ ++ uint32x2_t adacc2, s2acc2, as; ++ uint8x16_t t0 = vld1q_u8(taps), t1 = vld1q_u8(taps + 16); ++ ++ uint32x4_t adacc = vdupq_n_u32(0), s2acc = vdupq_n_u32(0); ++ adacc = vsetq_lane_u32(s[0], adacc, 0); ++ s2acc = vsetq_lane_u32(s[1], s2acc, 0); ++ ++ while (len >= 2) { ++ uint8x16_t d0 = vld1q_u8(buf), d1 = vld1q_u8(buf + 16); ++ uint16x8_t adler, sum2; ++ s2acc = vaddq_u32(s2acc, vshlq_n_u32(adacc, 5)); ++ adler = vpaddlq_u8( d0); ++ adler = vpadalq_u8(adler, d1); ++ sum2 = vmull_u8( vget_low_u8(t0), vget_low_u8(d0)); ++ sum2 = vmlal_u8(sum2, vget_high_u8(t0), vget_high_u8(d0)); ++ sum2 = vmlal_u8(sum2, vget_low_u8(t1), vget_low_u8(d1)); ++ sum2 = vmlal_u8(sum2, vget_high_u8(t1), vget_high_u8(d1)); ++ adacc = vpadalq_u16(adacc, adler); ++ s2acc = vpadalq_u16(s2acc, sum2); ++ len -= 2; ++ buf += 32; ++ } ++ ++ while (len > 0) { ++ uint8x16_t d0 = vld1q_u8(buf); ++ uint16x8_t adler, sum2; ++ s2acc = vaddq_u32(s2acc, vshlq_n_u32(adacc, 4)); ++ adler = vpaddlq_u8(d0); ++ sum2 = vmull_u8( vget_low_u8(t1), vget_low_u8(d0)); ++ sum2 = vmlal_u8(sum2, vget_high_u8(t1), vget_high_u8(d0)); ++ adacc = vpadalq_u16(adacc, adler); ++ s2acc = vpadalq_u16(s2acc, sum2); ++ buf += 16; ++ len--; ++ } ++ ++ adacc2 = vpadd_u32(vget_low_u32(adacc), vget_high_u32(adacc)); ++ s2acc2 = vpadd_u32(vget_low_u32(s2acc), vget_high_u32(s2acc)); ++ as = vpadd_u32(adacc2, s2acc2); ++ s[0] = vget_lane_u32(as, 0); ++ s[1] = vget_lane_u32(as, 1); ++} ++ ++static void NEON_handle_tail(uint32_t *pair, const unsigned char *buf, ++ unsigned int len) ++{ ++ /* Oldie K&R code integration. */ ++ unsigned int i; ++ for (i = 0; i < len; ++i) { ++ pair[0] += buf[i]; ++ pair[1] += pair[0]; ++ } ++} ++ ++extern unsigned long NEON_adler32(unsigned long adler, const unsigned char *buf, ++ const unsigned int len) ++{ ++ /* initial Adler-32 value (deferred check for len == 1 speed) */ ++ if (!buf) ++ return 1L; ++ ++ /* The largest prime smaller than 65536. */ ++ const uint32_t M_BASE = 65521; ++ /* This is the threshold where doing accumulation may overflow. */ ++ const int M_NMAX = 5552; ++ ++ unsigned long sum2; ++ uint32_t pair[2]; ++ int n = M_NMAX; ++ unsigned int done = 0; ++ /* Oldie K&R code integration. */ ++ unsigned int i; ++ ++ /* Split Adler-32 into component sums, it can be supplied by ++ * the caller sites (e.g. in a PNG file). ++ */ ++ sum2 = (adler >> 16) & 0xffff; ++ adler &= 0xffff; ++ pair[0] = adler; ++ pair[1] = sum2; ++ ++ for (i = 0; i < len; i += n) { ++ if ((i + n) > len) ++ n = len - i; ++ ++ if (n < 16) ++ break; ++ ++ NEON_accum32(pair, buf + i, n / 16); ++ pair[0] %= M_BASE; ++ pair[1] %= M_BASE; ++ ++ done += (n / 16) * 16; ++ } ++ ++ /* Handle the tail elements. */ ++ if (done < len) { ++ NEON_handle_tail(pair, (buf + done), len - done); ++ pair[0] %= M_BASE; ++ pair[1] %= M_BASE; ++ } ++ ++ /* D = B * 65536 + A, see: https://en.wikipedia.org/wiki/Adler-32. */ ++ return (pair[1] << 16) | pair[0]; ++} ++#endif diff --git a/package/libs/zlib/patches/002-arm-specific-optimisations-for-inflate.patch b/package/libs/zlib/patches/002-arm-specific-optimisations-for-inflate.patch new file mode 100644 index 0000000000..475ed6f3e9 --- /dev/null +++ b/package/libs/zlib/patches/002-arm-specific-optimisations-for-inflate.patch @@ -0,0 +1,2411 @@ +From 6bac7a3e0ebcd3147294b73acb34606eba18ae7f Mon Sep 17 00:00:00 2001 +From: Simon Hosie +Date: Wed, 12 Apr 2017 12:52:33 -0700 +Subject: [PATCH 1/2] Prepare ARM-specific contrib directory. + +Change-Id: Id4cda552b39bfb39ab35ec499dbe122b43b6d1a1 +--- + contrib/arm/inffast.c | 323 ++++++++++ + contrib/arm/inflate.c | 1561 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 1884 insertions(+) + create mode 100644 contrib/arm/inffast.c + create mode 100644 contrib/arm/inflate.c + +diff --git a/contrib/arm/inffast.c b/contrib/arm/inffast.c +new file mode 100644 +index 00000000..0dbd1dbc +--- /dev/null ++++ b/contrib/arm/inffast.c +@@ -0,0 +1,323 @@ ++/* inffast.c -- fast decoding ++ * Copyright (C) 1995-2017 Mark Adler ++ * For conditions of distribution and use, see copyright notice in zlib.h ++ */ ++ ++#include "zutil.h" ++#include "inftrees.h" ++#include "inflate.h" ++#include "inffast.h" ++ ++#ifdef ASMINF ++# pragma message("Assembler code may have bugs -- use at your own risk") ++#else ++ ++/* ++ Decode literal, length, and distance codes and write out the resulting ++ literal and match bytes until either not enough input or output is ++ available, an end-of-block is encountered, or a data error is encountered. ++ When large enough input and output buffers are supplied to inflate(), for ++ example, a 16K input buffer and a 64K output buffer, more than 95% of the ++ inflate execution time is spent in this routine. ++ ++ Entry assumptions: ++ ++ state->mode == LEN ++ strm->avail_in >= 6 ++ strm->avail_out >= 258 ++ start >= strm->avail_out ++ state->bits < 8 ++ ++ On return, state->mode is one of: ++ ++ LEN -- ran out of enough output space or enough available input ++ TYPE -- reached end of block code, inflate() to interpret next block ++ BAD -- error in block data ++ ++ Notes: ++ ++ - The maximum input bits used by a length/distance pair is 15 bits for the ++ length code, 5 bits for the length extra, 15 bits for the distance code, ++ and 13 bits for the distance extra. This totals 48 bits, or six bytes. ++ Therefore if strm->avail_in >= 6, then there is enough input to avoid ++ checking for available input while decoding. ++ ++ - The maximum bytes that a single length/distance pair can output is 258 ++ bytes, which is the maximum length that can be coded. inflate_fast() ++ requires strm->avail_out >= 258 for each loop to avoid checking for ++ output space. ++ */ ++void ZLIB_INTERNAL inflate_fast(strm, start) ++z_streamp strm; ++unsigned start; /* inflate()'s starting value for strm->avail_out */ ++{ ++ struct inflate_state FAR *state; ++ z_const unsigned char FAR *in; /* local strm->next_in */ ++ z_const unsigned char FAR *last; /* have enough input while in < last */ ++ unsigned char FAR *out; /* local strm->next_out */ ++ unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ ++ unsigned char FAR *end; /* while out < end, enough space available */ ++#ifdef INFLATE_STRICT ++ unsigned dmax; /* maximum distance from zlib header */ ++#endif ++ unsigned wsize; /* window size or zero if not using window */ ++ unsigned whave; /* valid bytes in the window */ ++ unsigned wnext; /* window write index */ ++ unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ ++ unsigned long hold; /* local strm->hold */ ++ unsigned bits; /* local strm->bits */ ++ code const FAR *lcode; /* local strm->lencode */ ++ code const FAR *dcode; /* local strm->distcode */ ++ unsigned lmask; /* mask for first level of length codes */ ++ unsigned dmask; /* mask for first level of distance codes */ ++ code here; /* retrieved table entry */ ++ unsigned op; /* code bits, operation, extra bits, or */ ++ /* window position, window bytes to copy */ ++ unsigned len; /* match length, unused bytes */ ++ unsigned dist; /* match distance */ ++ unsigned char FAR *from; /* where to copy match from */ ++ ++ /* copy state to local variables */ ++ state = (struct inflate_state FAR *)strm->state; ++ in = strm->next_in; ++ last = in + (strm->avail_in - 5); ++ out = strm->next_out; ++ beg = out - (start - strm->avail_out); ++ end = out + (strm->avail_out - 257); ++#ifdef INFLATE_STRICT ++ dmax = state->dmax; ++#endif ++ wsize = state->wsize; ++ whave = state->whave; ++ wnext = state->wnext; ++ window = state->window; ++ hold = state->hold; ++ bits = state->bits; ++ lcode = state->lencode; ++ dcode = state->distcode; ++ lmask = (1U << state->lenbits) - 1; ++ dmask = (1U << state->distbits) - 1; ++ ++ /* decode literals and length/distances until end-of-block or not enough ++ input data or output space */ ++ do { ++ if (bits < 15) { ++ hold += (unsigned long)(*in++) << bits; ++ bits += 8; ++ hold += (unsigned long)(*in++) << bits; ++ bits += 8; ++ } ++ here = lcode[hold & lmask]; ++ dolen: ++ op = (unsigned)(here.bits); ++ hold >>= op; ++ bits -= op; ++ op = (unsigned)(here.op); ++ if (op == 0) { /* literal */ ++ Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? ++ "inflate: literal '%c'\n" : ++ "inflate: literal 0x%02x\n", here.val)); ++ *out++ = (unsigned char)(here.val); ++ } ++ else if (op & 16) { /* length base */ ++ len = (unsigned)(here.val); ++ op &= 15; /* number of extra bits */ ++ if (op) { ++ if (bits < op) { ++ hold += (unsigned long)(*in++) << bits; ++ bits += 8; ++ } ++ len += (unsigned)hold & ((1U << op) - 1); ++ hold >>= op; ++ bits -= op; ++ } ++ Tracevv((stderr, "inflate: length %u\n", len)); ++ if (bits < 15) { ++ hold += (unsigned long)(*in++) << bits; ++ bits += 8; ++ hold += (unsigned long)(*in++) << bits; ++ bits += 8; ++ } ++ here = dcode[hold & dmask]; ++ dodist: ++ op = (unsigned)(here.bits); ++ hold >>= op; ++ bits -= op; ++ op = (unsigned)(here.op); ++ if (op & 16) { /* distance base */ ++ dist = (unsigned)(here.val); ++ op &= 15; /* number of extra bits */ ++ if (bits < op) { ++ hold += (unsigned long)(*in++) << bits; ++ bits += 8; ++ if (bits < op) { ++ hold += (unsigned long)(*in++) << bits; ++ bits += 8; ++ } ++ } ++ dist += (unsigned)hold & ((1U << op) - 1); ++#ifdef INFLATE_STRICT ++ if (dist > dmax) { ++ strm->msg = (char *)"invalid distance too far back"; ++ state->mode = BAD; ++ break; ++ } ++#endif ++ hold >>= op; ++ bits -= op; ++ Tracevv((stderr, "inflate: distance %u\n", dist)); ++ op = (unsigned)(out - beg); /* max distance in output */ ++ if (dist > op) { /* see if copy from window */ ++ op = dist - op; /* distance back in window */ ++ if (op > whave) { ++ if (state->sane) { ++ strm->msg = ++ (char *)"invalid distance too far back"; ++ state->mode = BAD; ++ break; ++ } ++#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR ++ if (len <= op - whave) { ++ do { ++ *out++ = 0; ++ } while (--len); ++ continue; ++ } ++ len -= op - whave; ++ do { ++ *out++ = 0; ++ } while (--op > whave); ++ if (op == 0) { ++ from = out - dist; ++ do { ++ *out++ = *from++; ++ } while (--len); ++ continue; ++ } ++#endif ++ } ++ from = window; ++ if (wnext == 0) { /* very common case */ ++ from += wsize - op; ++ if (op < len) { /* some from window */ ++ len -= op; ++ do { ++ *out++ = *from++; ++ } while (--op); ++ from = out - dist; /* rest from output */ ++ } ++ } ++ else if (wnext < op) { /* wrap around window */ ++ from += wsize + wnext - op; ++ op -= wnext; ++ if (op < len) { /* some from end of window */ ++ len -= op; ++ do { ++ *out++ = *from++; ++ } while (--op); ++ from = window; ++ if (wnext < len) { /* some from start of window */ ++ op = wnext; ++ len -= op; ++ do { ++ *out++ = *from++; ++ } while (--op); ++ from = out - dist; /* rest from output */ ++ } ++ } ++ } ++ else { /* contiguous in window */ ++ from += wnext - op; ++ if (op < len) { /* some from window */ ++ len -= op; ++ do { ++ *out++ = *from++; ++ } while (--op); ++ from = out - dist; /* rest from output */ ++ } ++ } ++ while (len > 2) { ++ *out++ = *from++; ++ *out++ = *from++; ++ *out++ = *from++; ++ len -= 3; ++ } ++ if (len) { ++ *out++ = *from++; ++ if (len > 1) ++ *out++ = *from++; ++ } ++ } ++ else { ++ from = out - dist; /* copy direct from output */ ++ do { /* minimum length is three */ ++ *out++ = *from++; ++ *out++ = *from++; ++ *out++ = *from++; ++ len -= 3; ++ } while (len > 2); ++ if (len) { ++ *out++ = *from++; ++ if (len > 1) ++ *out++ = *from++; ++ } ++ } ++ } ++ else if ((op & 64) == 0) { /* 2nd level distance code */ ++ here = dcode[here.val + (hold & ((1U << op) - 1))]; ++ goto dodist; ++ } ++ else { ++ strm->msg = (char *)"invalid distance code"; ++ state->mode = BAD; ++ break; ++ } ++ } ++ else if ((op & 64) == 0) { /* 2nd level length code */ ++ here = lcode[here.val + (hold & ((1U << op) - 1))]; ++ goto dolen; ++ } ++ else if (op & 32) { /* end-of-block */ ++ Tracevv((stderr, "inflate: end of block\n")); ++ state->mode = TYPE; ++ break; ++ } ++ else { ++ strm->msg = (char *)"invalid literal/length code"; ++ state->mode = BAD; ++ break; ++ } ++ } while (in < last && out < end); ++ ++ /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ ++ len = bits >> 3; ++ in -= len; ++ bits -= len << 3; ++ hold &= (1U << bits) - 1; ++ ++ /* update state and return */ ++ strm->next_in = in; ++ strm->next_out = out; ++ strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); ++ strm->avail_out = (unsigned)(out < end ? ++ 257 + (end - out) : 257 - (out - end)); ++ state->hold = hold; ++ state->bits = bits; ++ return; ++} ++ ++/* ++ inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): ++ - Using bit fields for code structure ++ - Different op definition to avoid & for extra bits (do & for table bits) ++ - Three separate decoding do-loops for direct, window, and wnext == 0 ++ - Special case for distance > 1 copies to do overlapped load and store copy ++ - Explicit branch predictions (based on measured branch probabilities) ++ - Deferring match copy and interspersed it with decoding subsequent codes ++ - Swapping literal/length else ++ - Swapping window/direct else ++ - Larger unrolled copy loops (three is about right) ++ - Moving len -= 3 statement into middle of loop ++ */ ++ ++#endif /* !ASMINF */ +diff --git a/contrib/arm/inflate.c b/contrib/arm/inflate.c +new file mode 100644 +index 00000000..ac333e8c +--- /dev/null ++++ b/contrib/arm/inflate.c +@@ -0,0 +1,1561 @@ ++/* inflate.c -- zlib decompression ++ * Copyright (C) 1995-2016 Mark Adler ++ * For conditions of distribution and use, see copyright notice in zlib.h ++ */ ++ ++/* ++ * Change history: ++ * ++ * 1.2.beta0 24 Nov 2002 ++ * - First version -- complete rewrite of inflate to simplify code, avoid ++ * creation of window when not needed, minimize use of window when it is ++ * needed, make inffast.c even faster, implement gzip decoding, and to ++ * improve code readability and style over the previous zlib inflate code ++ * ++ * 1.2.beta1 25 Nov 2002 ++ * - Use pointers for available input and output checking in inffast.c ++ * - Remove input and output counters in inffast.c ++ * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 ++ * - Remove unnecessary second byte pull from length extra in inffast.c ++ * - Unroll direct copy to three copies per loop in inffast.c ++ * ++ * 1.2.beta2 4 Dec 2002 ++ * - Change external routine names to reduce potential conflicts ++ * - Correct filename to inffixed.h for fixed tables in inflate.c ++ * - Make hbuf[] unsigned char to match parameter type in inflate.c ++ * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) ++ * to avoid negation problem on Alphas (64 bit) in inflate.c ++ * ++ * 1.2.beta3 22 Dec 2002 ++ * - Add comments on state->bits assertion in inffast.c ++ * - Add comments on op field in inftrees.h ++ * - Fix bug in reuse of allocated window after inflateReset() ++ * - Remove bit fields--back to byte structure for speed ++ * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths ++ * - Change post-increments to pre-increments in inflate_fast(), PPC biased? ++ * - Add compile time option, POSTINC, to use post-increments instead (Intel?) ++ * - Make MATCH copy in inflate() much faster for when inflate_fast() not used ++ * - Use local copies of stream next and avail values, as well as local bit ++ * buffer and bit count in inflate()--for speed when inflate_fast() not used ++ * ++ * 1.2.beta4 1 Jan 2003 ++ * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings ++ * - Move a comment on output buffer sizes from inffast.c to inflate.c ++ * - Add comments in inffast.c to introduce the inflate_fast() routine ++ * - Rearrange window copies in inflate_fast() for speed and simplification ++ * - Unroll last copy for window match in inflate_fast() ++ * - Use local copies of window variables in inflate_fast() for speed ++ * - Pull out common wnext == 0 case for speed in inflate_fast() ++ * - Make op and len in inflate_fast() unsigned for consistency ++ * - Add FAR to lcode and dcode declarations in inflate_fast() ++ * - Simplified bad distance check in inflate_fast() ++ * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new ++ * source file infback.c to provide a call-back interface to inflate for ++ * programs like gzip and unzip -- uses window as output buffer to avoid ++ * window copying ++ * ++ * 1.2.beta5 1 Jan 2003 ++ * - Improved inflateBack() interface to allow the caller to provide initial ++ * input in strm. ++ * - Fixed stored blocks bug in inflateBack() ++ * ++ * 1.2.beta6 4 Jan 2003 ++ * - Added comments in inffast.c on effectiveness of POSTINC ++ * - Typecasting all around to reduce compiler warnings ++ * - Changed loops from while (1) or do {} while (1) to for (;;), again to ++ * make compilers happy ++ * - Changed type of window in inflateBackInit() to unsigned char * ++ * ++ * 1.2.beta7 27 Jan 2003 ++ * - Changed many types to unsigned or unsigned short to avoid warnings ++ * - Added inflateCopy() function ++ * ++ * 1.2.0 9 Mar 2003 ++ * - Changed inflateBack() interface to provide separate opaque descriptors ++ * for the in() and out() functions ++ * - Changed inflateBack() argument and in_func typedef to swap the length ++ * and buffer address return values for the input function ++ * - Check next_in and next_out for Z_NULL on entry to inflate() ++ * ++ * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. ++ */ ++ ++#include "zutil.h" ++#include "inftrees.h" ++#include "inflate.h" ++#include "inffast.h" ++ ++#ifdef MAKEFIXED ++# ifndef BUILDFIXED ++# define BUILDFIXED ++# endif ++#endif ++ ++/* function prototypes */ ++local int inflateStateCheck OF((z_streamp strm)); ++local void fixedtables OF((struct inflate_state FAR *state)); ++local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, ++ unsigned copy)); ++#ifdef BUILDFIXED ++ void makefixed OF((void)); ++#endif ++local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf, ++ unsigned len)); ++ ++local int inflateStateCheck(strm) ++z_streamp strm; ++{ ++ struct inflate_state FAR *state; ++ if (strm == Z_NULL || ++ strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) ++ return 1; ++ state = (struct inflate_state FAR *)strm->state; ++ if (state == Z_NULL || state->strm != strm || ++ state->mode < HEAD || state->mode > SYNC) ++ return 1; ++ return 0; ++} ++ ++int ZEXPORT inflateResetKeep(strm) ++z_streamp strm; ++{ ++ struct inflate_state FAR *state; ++ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ strm->total_in = strm->total_out = state->total = 0; ++ strm->msg = Z_NULL; ++ if (state->wrap) /* to support ill-conceived Java test suite */ ++ strm->adler = state->wrap & 1; ++ state->mode = HEAD; ++ state->last = 0; ++ state->havedict = 0; ++ state->dmax = 32768U; ++ state->head = Z_NULL; ++ state->hold = 0; ++ state->bits = 0; ++ state->lencode = state->distcode = state->next = state->codes; ++ state->sane = 1; ++ state->back = -1; ++ Tracev((stderr, "inflate: reset\n")); ++ return Z_OK; ++} ++ ++int ZEXPORT inflateReset(strm) ++z_streamp strm; ++{ ++ struct inflate_state FAR *state; ++ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ state->wsize = 0; ++ state->whave = 0; ++ state->wnext = 0; ++ return inflateResetKeep(strm); ++} ++ ++int ZEXPORT inflateReset2(strm, windowBits) ++z_streamp strm; ++int windowBits; ++{ ++ int wrap; ++ struct inflate_state FAR *state; ++ ++ /* get the state */ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ ++ /* extract wrap request from windowBits parameter */ ++ if (windowBits < 0) { ++ wrap = 0; ++ windowBits = -windowBits; ++ } ++ else { ++ wrap = (windowBits >> 4) + 5; ++#ifdef GUNZIP ++ if (windowBits < 48) ++ windowBits &= 15; ++#endif ++ } ++ ++ /* set number of window bits, free window if different */ ++ if (windowBits && (windowBits < 8 || windowBits > 15)) ++ return Z_STREAM_ERROR; ++ if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) { ++ ZFREE(strm, state->window); ++ state->window = Z_NULL; ++ } ++ ++ /* update state and reset the rest of it */ ++ state->wrap = wrap; ++ state->wbits = (unsigned)windowBits; ++ return inflateReset(strm); ++} ++ ++int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size) ++z_streamp strm; ++int windowBits; ++const char *version; ++int stream_size; ++{ ++ int ret; ++ struct inflate_state FAR *state; ++ ++ if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || ++ stream_size != (int)(sizeof(z_stream))) ++ return Z_VERSION_ERROR; ++ if (strm == Z_NULL) return Z_STREAM_ERROR; ++ strm->msg = Z_NULL; /* in case we return an error */ ++ if (strm->zalloc == (alloc_func)0) { ++#ifdef Z_SOLO ++ return Z_STREAM_ERROR; ++#else ++ strm->zalloc = zcalloc; ++ strm->opaque = (voidpf)0; ++#endif ++ } ++ if (strm->zfree == (free_func)0) ++#ifdef Z_SOLO ++ return Z_STREAM_ERROR; ++#else ++ strm->zfree = zcfree; ++#endif ++ state = (struct inflate_state FAR *) ++ ZALLOC(strm, 1, sizeof(struct inflate_state)); ++ if (state == Z_NULL) return Z_MEM_ERROR; ++ Tracev((stderr, "inflate: allocated\n")); ++ strm->state = (struct internal_state FAR *)state; ++ state->strm = strm; ++ state->window = Z_NULL; ++ state->mode = HEAD; /* to pass state test in inflateReset2() */ ++ ret = inflateReset2(strm, windowBits); ++ if (ret != Z_OK) { ++ ZFREE(strm, state); ++ strm->state = Z_NULL; ++ } ++ return ret; ++} ++ ++int ZEXPORT inflateInit_(strm, version, stream_size) ++z_streamp strm; ++const char *version; ++int stream_size; ++{ ++ return inflateInit2_(strm, DEF_WBITS, version, stream_size); ++} ++ ++int ZEXPORT inflatePrime(strm, bits, value) ++z_streamp strm; ++int bits; ++int value; ++{ ++ struct inflate_state FAR *state; ++ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ if (bits < 0) { ++ state->hold = 0; ++ state->bits = 0; ++ return Z_OK; ++ } ++ if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; ++ value &= (1L << bits) - 1; ++ state->hold += (unsigned)value << state->bits; ++ state->bits += (uInt)bits; ++ return Z_OK; ++} ++ ++/* ++ Return state with length and distance decoding tables and index sizes set to ++ fixed code decoding. Normally this returns fixed tables from inffixed.h. ++ If BUILDFIXED is defined, then instead this routine builds the tables the ++ first time it's called, and returns those tables the first time and ++ thereafter. This reduces the size of the code by about 2K bytes, in ++ exchange for a little execution time. However, BUILDFIXED should not be ++ used for threaded applications, since the rewriting of the tables and virgin ++ may not be thread-safe. ++ */ ++local void fixedtables(state) ++struct inflate_state FAR *state; ++{ ++#ifdef BUILDFIXED ++ static int virgin = 1; ++ static code *lenfix, *distfix; ++ static code fixed[544]; ++ ++ /* build fixed huffman tables if first call (may not be thread safe) */ ++ if (virgin) { ++ unsigned sym, bits; ++ static code *next; ++ ++ /* literal/length table */ ++ sym = 0; ++ while (sym < 144) state->lens[sym++] = 8; ++ while (sym < 256) state->lens[sym++] = 9; ++ while (sym < 280) state->lens[sym++] = 7; ++ while (sym < 288) state->lens[sym++] = 8; ++ next = fixed; ++ lenfix = next; ++ bits = 9; ++ inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); ++ ++ /* distance table */ ++ sym = 0; ++ while (sym < 32) state->lens[sym++] = 5; ++ distfix = next; ++ bits = 5; ++ inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); ++ ++ /* do this just once */ ++ virgin = 0; ++ } ++#else /* !BUILDFIXED */ ++# include "inffixed.h" ++#endif /* BUILDFIXED */ ++ state->lencode = lenfix; ++ state->lenbits = 9; ++ state->distcode = distfix; ++ state->distbits = 5; ++} ++ ++#ifdef MAKEFIXED ++#include ++ ++/* ++ Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also ++ defines BUILDFIXED, so the tables are built on the fly. makefixed() writes ++ those tables to stdout, which would be piped to inffixed.h. A small program ++ can simply call makefixed to do this: ++ ++ void makefixed(void); ++ ++ int main(void) ++ { ++ makefixed(); ++ return 0; ++ } ++ ++ Then that can be linked with zlib built with MAKEFIXED defined and run: ++ ++ a.out > inffixed.h ++ */ ++void makefixed() ++{ ++ unsigned low, size; ++ struct inflate_state state; ++ ++ fixedtables(&state); ++ puts(" /* inffixed.h -- table for decoding fixed codes"); ++ puts(" * Generated automatically by makefixed()."); ++ puts(" */"); ++ puts(""); ++ puts(" /* WARNING: this file should *not* be used by applications."); ++ puts(" It is part of the implementation of this library and is"); ++ puts(" subject to change. Applications should only use zlib.h."); ++ puts(" */"); ++ puts(""); ++ size = 1U << 9; ++ printf(" static const code lenfix[%u] = {", size); ++ low = 0; ++ for (;;) { ++ if ((low % 7) == 0) printf("\n "); ++ printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, ++ state.lencode[low].bits, state.lencode[low].val); ++ if (++low == size) break; ++ putchar(','); ++ } ++ puts("\n };"); ++ size = 1U << 5; ++ printf("\n static const code distfix[%u] = {", size); ++ low = 0; ++ for (;;) { ++ if ((low % 6) == 0) printf("\n "); ++ printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, ++ state.distcode[low].val); ++ if (++low == size) break; ++ putchar(','); ++ } ++ puts("\n };"); ++} ++#endif /* MAKEFIXED */ ++ ++/* ++ Update the window with the last wsize (normally 32K) bytes written before ++ returning. If window does not exist yet, create it. This is only called ++ when a window is already in use, or when output has been written during this ++ inflate call, but the end of the deflate stream has not been reached yet. ++ It is also called to create a window for dictionary data when a dictionary ++ is loaded. ++ ++ Providing output buffers larger than 32K to inflate() should provide a speed ++ advantage, since only the last 32K of output is copied to the sliding window ++ upon return from inflate(), and since all distances after the first 32K of ++ output will fall in the output data, making match copies simpler and faster. ++ The advantage may be dependent on the size of the processor's data caches. ++ */ ++local int updatewindow(strm, end, copy) ++z_streamp strm; ++const Bytef *end; ++unsigned copy; ++{ ++ struct inflate_state FAR *state; ++ unsigned dist; ++ ++ state = (struct inflate_state FAR *)strm->state; ++ ++ /* if it hasn't been done already, allocate space for the window */ ++ if (state->window == Z_NULL) { ++ state->window = (unsigned char FAR *) ++ ZALLOC(strm, 1U << state->wbits, ++ sizeof(unsigned char)); ++ if (state->window == Z_NULL) return 1; ++ } ++ ++ /* if window not in use yet, initialize */ ++ if (state->wsize == 0) { ++ state->wsize = 1U << state->wbits; ++ state->wnext = 0; ++ state->whave = 0; ++ } ++ ++ /* copy state->wsize or less output bytes into the circular window */ ++ if (copy >= state->wsize) { ++ zmemcpy(state->window, end - state->wsize, state->wsize); ++ state->wnext = 0; ++ state->whave = state->wsize; ++ } ++ else { ++ dist = state->wsize - state->wnext; ++ if (dist > copy) dist = copy; ++ zmemcpy(state->window + state->wnext, end - copy, dist); ++ copy -= dist; ++ if (copy) { ++ zmemcpy(state->window, end - copy, copy); ++ state->wnext = copy; ++ state->whave = state->wsize; ++ } ++ else { ++ state->wnext += dist; ++ if (state->wnext == state->wsize) state->wnext = 0; ++ if (state->whave < state->wsize) state->whave += dist; ++ } ++ } ++ return 0; ++} ++ ++/* Macros for inflate(): */ ++ ++/* check function to use adler32() for zlib or crc32() for gzip */ ++#ifdef GUNZIP ++# define UPDATE(check, buf, len) \ ++ (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) ++#else ++# define UPDATE(check, buf, len) adler32(check, buf, len) ++#endif ++ ++/* check macros for header crc */ ++#ifdef GUNZIP ++# define CRC2(check, word) \ ++ do { \ ++ hbuf[0] = (unsigned char)(word); \ ++ hbuf[1] = (unsigned char)((word) >> 8); \ ++ check = crc32(check, hbuf, 2); \ ++ } while (0) ++ ++# define CRC4(check, word) \ ++ do { \ ++ hbuf[0] = (unsigned char)(word); \ ++ hbuf[1] = (unsigned char)((word) >> 8); \ ++ hbuf[2] = (unsigned char)((word) >> 16); \ ++ hbuf[3] = (unsigned char)((word) >> 24); \ ++ check = crc32(check, hbuf, 4); \ ++ } while (0) ++#endif ++ ++/* Load registers with state in inflate() for speed */ ++#define LOAD() \ ++ do { \ ++ put = strm->next_out; \ ++ left = strm->avail_out; \ ++ next = strm->next_in; \ ++ have = strm->avail_in; \ ++ hold = state->hold; \ ++ bits = state->bits; \ ++ } while (0) ++ ++/* Restore state from registers in inflate() */ ++#define RESTORE() \ ++ do { \ ++ strm->next_out = put; \ ++ strm->avail_out = left; \ ++ strm->next_in = next; \ ++ strm->avail_in = have; \ ++ state->hold = hold; \ ++ state->bits = bits; \ ++ } while (0) ++ ++/* Clear the input bit accumulator */ ++#define INITBITS() \ ++ do { \ ++ hold = 0; \ ++ bits = 0; \ ++ } while (0) ++ ++/* Get a byte of input into the bit accumulator, or return from inflate() ++ if there is no input available. */ ++#define PULLBYTE() \ ++ do { \ ++ if (have == 0) goto inf_leave; \ ++ have--; \ ++ hold += (unsigned long)(*next++) << bits; \ ++ bits += 8; \ ++ } while (0) ++ ++/* Assure that there are at least n bits in the bit accumulator. If there is ++ not enough available input to do that, then return from inflate(). */ ++#define NEEDBITS(n) \ ++ do { \ ++ while (bits < (unsigned)(n)) \ ++ PULLBYTE(); \ ++ } while (0) ++ ++/* Return the low n bits of the bit accumulator (n < 16) */ ++#define BITS(n) \ ++ ((unsigned)hold & ((1U << (n)) - 1)) ++ ++/* Remove n bits from the bit accumulator */ ++#define DROPBITS(n) \ ++ do { \ ++ hold >>= (n); \ ++ bits -= (unsigned)(n); \ ++ } while (0) ++ ++/* Remove zero to seven bits as needed to go to a byte boundary */ ++#define BYTEBITS() \ ++ do { \ ++ hold >>= bits & 7; \ ++ bits -= bits & 7; \ ++ } while (0) ++ ++/* ++ inflate() uses a state machine to process as much input data and generate as ++ much output data as possible before returning. The state machine is ++ structured roughly as follows: ++ ++ for (;;) switch (state) { ++ ... ++ case STATEn: ++ if (not enough input data or output space to make progress) ++ return; ++ ... make progress ... ++ state = STATEm; ++ break; ++ ... ++ } ++ ++ so when inflate() is called again, the same case is attempted again, and ++ if the appropriate resources are provided, the machine proceeds to the ++ next state. The NEEDBITS() macro is usually the way the state evaluates ++ whether it can proceed or should return. NEEDBITS() does the return if ++ the requested bits are not available. The typical use of the BITS macros ++ is: ++ ++ NEEDBITS(n); ++ ... do something with BITS(n) ... ++ DROPBITS(n); ++ ++ where NEEDBITS(n) either returns from inflate() if there isn't enough ++ input left to load n bits into the accumulator, or it continues. BITS(n) ++ gives the low n bits in the accumulator. When done, DROPBITS(n) drops ++ the low n bits off the accumulator. INITBITS() clears the accumulator ++ and sets the number of available bits to zero. BYTEBITS() discards just ++ enough bits to put the accumulator on a byte boundary. After BYTEBITS() ++ and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. ++ ++ NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return ++ if there is no input available. The decoding of variable length codes uses ++ PULLBYTE() directly in order to pull just enough bytes to decode the next ++ code, and no more. ++ ++ Some states loop until they get enough input, making sure that enough ++ state information is maintained to continue the loop where it left off ++ if NEEDBITS() returns in the loop. For example, want, need, and keep ++ would all have to actually be part of the saved state in case NEEDBITS() ++ returns: ++ ++ case STATEw: ++ while (want < need) { ++ NEEDBITS(n); ++ keep[want++] = BITS(n); ++ DROPBITS(n); ++ } ++ state = STATEx; ++ case STATEx: ++ ++ As shown above, if the next state is also the next case, then the break ++ is omitted. ++ ++ A state may also return if there is not enough output space available to ++ complete that state. Those states are copying stored data, writing a ++ literal byte, and copying a matching string. ++ ++ When returning, a "goto inf_leave" is used to update the total counters, ++ update the check value, and determine whether any progress has been made ++ during that inflate() call in order to return the proper return code. ++ Progress is defined as a change in either strm->avail_in or strm->avail_out. ++ When there is a window, goto inf_leave will update the window with the last ++ output written. If a goto inf_leave occurs in the middle of decompression ++ and there is no window currently, goto inf_leave will create one and copy ++ output to the window for the next call of inflate(). ++ ++ In this implementation, the flush parameter of inflate() only affects the ++ return code (per zlib.h). inflate() always writes as much as possible to ++ strm->next_out, given the space available and the provided input--the effect ++ documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers ++ the allocation of and copying into a sliding window until necessary, which ++ provides the effect documented in zlib.h for Z_FINISH when the entire input ++ stream available. So the only thing the flush parameter actually does is: ++ when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it ++ will return Z_BUF_ERROR if it has not reached the end of the stream. ++ */ ++ ++int ZEXPORT inflate(strm, flush) ++z_streamp strm; ++int flush; ++{ ++ struct inflate_state FAR *state; ++ z_const unsigned char FAR *next; /* next input */ ++ unsigned char FAR *put; /* next output */ ++ unsigned have, left; /* available input and output */ ++ unsigned long hold; /* bit buffer */ ++ unsigned bits; /* bits in bit buffer */ ++ unsigned in, out; /* save starting available input and output */ ++ unsigned copy; /* number of stored or match bytes to copy */ ++ unsigned char FAR *from; /* where to copy match bytes from */ ++ code here; /* current decoding table entry */ ++ code last; /* parent table entry */ ++ unsigned len; /* length to copy for repeats, bits to drop */ ++ int ret; /* return code */ ++#ifdef GUNZIP ++ unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ ++#endif ++ static const unsigned short order[19] = /* permutation of code lengths */ ++ {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; ++ ++ if (inflateStateCheck(strm) || strm->next_out == Z_NULL || ++ (strm->next_in == Z_NULL && strm->avail_in != 0)) ++ return Z_STREAM_ERROR; ++ ++ state = (struct inflate_state FAR *)strm->state; ++ if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ ++ LOAD(); ++ in = have; ++ out = left; ++ ret = Z_OK; ++ for (;;) ++ switch (state->mode) { ++ case HEAD: ++ if (state->wrap == 0) { ++ state->mode = TYPEDO; ++ break; ++ } ++ NEEDBITS(16); ++#ifdef GUNZIP ++ if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ ++ if (state->wbits == 0) ++ state->wbits = 15; ++ state->check = crc32(0L, Z_NULL, 0); ++ CRC2(state->check, hold); ++ INITBITS(); ++ state->mode = FLAGS; ++ break; ++ } ++ state->flags = 0; /* expect zlib header */ ++ if (state->head != Z_NULL) ++ state->head->done = -1; ++ if (!(state->wrap & 1) || /* check if zlib header allowed */ ++#else ++ if ( ++#endif ++ ((BITS(8) << 8) + (hold >> 8)) % 31) { ++ strm->msg = (char *)"incorrect header check"; ++ state->mode = BAD; ++ break; ++ } ++ if (BITS(4) != Z_DEFLATED) { ++ strm->msg = (char *)"unknown compression method"; ++ state->mode = BAD; ++ break; ++ } ++ DROPBITS(4); ++ len = BITS(4) + 8; ++ if (state->wbits == 0) ++ state->wbits = len; ++ if (len > 15 || len > state->wbits) { ++ strm->msg = (char *)"invalid window size"; ++ state->mode = BAD; ++ break; ++ } ++ state->dmax = 1U << len; ++ Tracev((stderr, "inflate: zlib header ok\n")); ++ strm->adler = state->check = adler32(0L, Z_NULL, 0); ++ state->mode = hold & 0x200 ? DICTID : TYPE; ++ INITBITS(); ++ break; ++#ifdef GUNZIP ++ case FLAGS: ++ NEEDBITS(16); ++ state->flags = (int)(hold); ++ if ((state->flags & 0xff) != Z_DEFLATED) { ++ strm->msg = (char *)"unknown compression method"; ++ state->mode = BAD; ++ break; ++ } ++ if (state->flags & 0xe000) { ++ strm->msg = (char *)"unknown header flags set"; ++ state->mode = BAD; ++ break; ++ } ++ if (state->head != Z_NULL) ++ state->head->text = (int)((hold >> 8) & 1); ++ if ((state->flags & 0x0200) && (state->wrap & 4)) ++ CRC2(state->check, hold); ++ INITBITS(); ++ state->mode = TIME; ++ case TIME: ++ NEEDBITS(32); ++ if (state->head != Z_NULL) ++ state->head->time = hold; ++ if ((state->flags & 0x0200) && (state->wrap & 4)) ++ CRC4(state->check, hold); ++ INITBITS(); ++ state->mode = OS; ++ case OS: ++ NEEDBITS(16); ++ if (state->head != Z_NULL) { ++ state->head->xflags = (int)(hold & 0xff); ++ state->head->os = (int)(hold >> 8); ++ } ++ if ((state->flags & 0x0200) && (state->wrap & 4)) ++ CRC2(state->check, hold); ++ INITBITS(); ++ state->mode = EXLEN; ++ case EXLEN: ++ if (state->flags & 0x0400) { ++ NEEDBITS(16); ++ state->length = (unsigned)(hold); ++ if (state->head != Z_NULL) ++ state->head->extra_len = (unsigned)hold; ++ if ((state->flags & 0x0200) && (state->wrap & 4)) ++ CRC2(state->check, hold); ++ INITBITS(); ++ } ++ else if (state->head != Z_NULL) ++ state->head->extra = Z_NULL; ++ state->mode = EXTRA; ++ case EXTRA: ++ if (state->flags & 0x0400) { ++ copy = state->length; ++ if (copy > have) copy = have; ++ if (copy) { ++ if (state->head != Z_NULL && ++ state->head->extra != Z_NULL) { ++ len = state->head->extra_len - state->length; ++ zmemcpy(state->head->extra + len, next, ++ len + copy > state->head->extra_max ? ++ state->head->extra_max - len : copy); ++ } ++ if ((state->flags & 0x0200) && (state->wrap & 4)) ++ state->check = crc32(state->check, next, copy); ++ have -= copy; ++ next += copy; ++ state->length -= copy; ++ } ++ if (state->length) goto inf_leave; ++ } ++ state->length = 0; ++ state->mode = NAME; ++ case NAME: ++ if (state->flags & 0x0800) { ++ if (have == 0) goto inf_leave; ++ copy = 0; ++ do { ++ len = (unsigned)(next[copy++]); ++ if (state->head != Z_NULL && ++ state->head->name != Z_NULL && ++ state->length < state->head->name_max) ++ state->head->name[state->length++] = (Bytef)len; ++ } while (len && copy < have); ++ if ((state->flags & 0x0200) && (state->wrap & 4)) ++ state->check = crc32(state->check, next, copy); ++ have -= copy; ++ next += copy; ++ if (len) goto inf_leave; ++ } ++ else if (state->head != Z_NULL) ++ state->head->name = Z_NULL; ++ state->length = 0; ++ state->mode = COMMENT; ++ case COMMENT: ++ if (state->flags & 0x1000) { ++ if (have == 0) goto inf_leave; ++ copy = 0; ++ do { ++ len = (unsigned)(next[copy++]); ++ if (state->head != Z_NULL && ++ state->head->comment != Z_NULL && ++ state->length < state->head->comm_max) ++ state->head->comment[state->length++] = (Bytef)len; ++ } while (len && copy < have); ++ if ((state->flags & 0x0200) && (state->wrap & 4)) ++ state->check = crc32(state->check, next, copy); ++ have -= copy; ++ next += copy; ++ if (len) goto inf_leave; ++ } ++ else if (state->head != Z_NULL) ++ state->head->comment = Z_NULL; ++ state->mode = HCRC; ++ case HCRC: ++ if (state->flags & 0x0200) { ++ NEEDBITS(16); ++ if ((state->wrap & 4) && hold != (state->check & 0xffff)) { ++ strm->msg = (char *)"header crc mismatch"; ++ state->mode = BAD; ++ break; ++ } ++ INITBITS(); ++ } ++ if (state->head != Z_NULL) { ++ state->head->hcrc = (int)((state->flags >> 9) & 1); ++ state->head->done = 1; ++ } ++ strm->adler = state->check = crc32(0L, Z_NULL, 0); ++ state->mode = TYPE; ++ break; ++#endif ++ case DICTID: ++ NEEDBITS(32); ++ strm->adler = state->check = ZSWAP32(hold); ++ INITBITS(); ++ state->mode = DICT; ++ case DICT: ++ if (state->havedict == 0) { ++ RESTORE(); ++ return Z_NEED_DICT; ++ } ++ strm->adler = state->check = adler32(0L, Z_NULL, 0); ++ state->mode = TYPE; ++ case TYPE: ++ if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; ++ case TYPEDO: ++ if (state->last) { ++ BYTEBITS(); ++ state->mode = CHECK; ++ break; ++ } ++ NEEDBITS(3); ++ state->last = BITS(1); ++ DROPBITS(1); ++ switch (BITS(2)) { ++ case 0: /* stored block */ ++ Tracev((stderr, "inflate: stored block%s\n", ++ state->last ? " (last)" : "")); ++ state->mode = STORED; ++ break; ++ case 1: /* fixed block */ ++ fixedtables(state); ++ Tracev((stderr, "inflate: fixed codes block%s\n", ++ state->last ? " (last)" : "")); ++ state->mode = LEN_; /* decode codes */ ++ if (flush == Z_TREES) { ++ DROPBITS(2); ++ goto inf_leave; ++ } ++ break; ++ case 2: /* dynamic block */ ++ Tracev((stderr, "inflate: dynamic codes block%s\n", ++ state->last ? " (last)" : "")); ++ state->mode = TABLE; ++ break; ++ case 3: ++ strm->msg = (char *)"invalid block type"; ++ state->mode = BAD; ++ } ++ DROPBITS(2); ++ break; ++ case STORED: ++ BYTEBITS(); /* go to byte boundary */ ++ NEEDBITS(32); ++ if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { ++ strm->msg = (char *)"invalid stored block lengths"; ++ state->mode = BAD; ++ break; ++ } ++ state->length = (unsigned)hold & 0xffff; ++ Tracev((stderr, "inflate: stored length %u\n", ++ state->length)); ++ INITBITS(); ++ state->mode = COPY_; ++ if (flush == Z_TREES) goto inf_leave; ++ case COPY_: ++ state->mode = COPY; ++ case COPY: ++ copy = state->length; ++ if (copy) { ++ if (copy > have) copy = have; ++ if (copy > left) copy = left; ++ if (copy == 0) goto inf_leave; ++ zmemcpy(put, next, copy); ++ have -= copy; ++ next += copy; ++ left -= copy; ++ put += copy; ++ state->length -= copy; ++ break; ++ } ++ Tracev((stderr, "inflate: stored end\n")); ++ state->mode = TYPE; ++ break; ++ case TABLE: ++ NEEDBITS(14); ++ state->nlen = BITS(5) + 257; ++ DROPBITS(5); ++ state->ndist = BITS(5) + 1; ++ DROPBITS(5); ++ state->ncode = BITS(4) + 4; ++ DROPBITS(4); ++#ifndef PKZIP_BUG_WORKAROUND ++ if (state->nlen > 286 || state->ndist > 30) { ++ strm->msg = (char *)"too many length or distance symbols"; ++ state->mode = BAD; ++ break; ++ } ++#endif ++ Tracev((stderr, "inflate: table sizes ok\n")); ++ state->have = 0; ++ state->mode = LENLENS; ++ case LENLENS: ++ while (state->have < state->ncode) { ++ NEEDBITS(3); ++ state->lens[order[state->have++]] = (unsigned short)BITS(3); ++ DROPBITS(3); ++ } ++ while (state->have < 19) ++ state->lens[order[state->have++]] = 0; ++ state->next = state->codes; ++ state->lencode = (const code FAR *)(state->next); ++ state->lenbits = 7; ++ ret = inflate_table(CODES, state->lens, 19, &(state->next), ++ &(state->lenbits), state->work); ++ if (ret) { ++ strm->msg = (char *)"invalid code lengths set"; ++ state->mode = BAD; ++ break; ++ } ++ Tracev((stderr, "inflate: code lengths ok\n")); ++ state->have = 0; ++ state->mode = CODELENS; ++ case CODELENS: ++ while (state->have < state->nlen + state->ndist) { ++ for (;;) { ++ here = state->lencode[BITS(state->lenbits)]; ++ if ((unsigned)(here.bits) <= bits) break; ++ PULLBYTE(); ++ } ++ if (here.val < 16) { ++ DROPBITS(here.bits); ++ state->lens[state->have++] = here.val; ++ } ++ else { ++ if (here.val == 16) { ++ NEEDBITS(here.bits + 2); ++ DROPBITS(here.bits); ++ if (state->have == 0) { ++ strm->msg = (char *)"invalid bit length repeat"; ++ state->mode = BAD; ++ break; ++ } ++ len = state->lens[state->have - 1]; ++ copy = 3 + BITS(2); ++ DROPBITS(2); ++ } ++ else if (here.val == 17) { ++ NEEDBITS(here.bits + 3); ++ DROPBITS(here.bits); ++ len = 0; ++ copy = 3 + BITS(3); ++ DROPBITS(3); ++ } ++ else { ++ NEEDBITS(here.bits + 7); ++ DROPBITS(here.bits); ++ len = 0; ++ copy = 11 + BITS(7); ++ DROPBITS(7); ++ } ++ if (state->have + copy > state->nlen + state->ndist) { ++ strm->msg = (char *)"invalid bit length repeat"; ++ state->mode = BAD; ++ break; ++ } ++ while (copy--) ++ state->lens[state->have++] = (unsigned short)len; ++ } ++ } ++ ++ /* handle error breaks in while */ ++ if (state->mode == BAD) break; ++ ++ /* check for end-of-block code (better have one) */ ++ if (state->lens[256] == 0) { ++ strm->msg = (char *)"invalid code -- missing end-of-block"; ++ state->mode = BAD; ++ break; ++ } ++ ++ /* build code tables -- note: do not change the lenbits or distbits ++ values here (9 and 6) without reading the comments in inftrees.h ++ concerning the ENOUGH constants, which depend on those values */ ++ state->next = state->codes; ++ state->lencode = (const code FAR *)(state->next); ++ state->lenbits = 9; ++ ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), ++ &(state->lenbits), state->work); ++ if (ret) { ++ strm->msg = (char *)"invalid literal/lengths set"; ++ state->mode = BAD; ++ break; ++ } ++ state->distcode = (const code FAR *)(state->next); ++ state->distbits = 6; ++ ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, ++ &(state->next), &(state->distbits), state->work); ++ if (ret) { ++ strm->msg = (char *)"invalid distances set"; ++ state->mode = BAD; ++ break; ++ } ++ Tracev((stderr, "inflate: codes ok\n")); ++ state->mode = LEN_; ++ if (flush == Z_TREES) goto inf_leave; ++ case LEN_: ++ state->mode = LEN; ++ case LEN: ++ if (have >= 6 && left >= 258) { ++ RESTORE(); ++ inflate_fast(strm, out); ++ LOAD(); ++ if (state->mode == TYPE) ++ state->back = -1; ++ break; ++ } ++ state->back = 0; ++ for (;;) { ++ here = state->lencode[BITS(state->lenbits)]; ++ if ((unsigned)(here.bits) <= bits) break; ++ PULLBYTE(); ++ } ++ if (here.op && (here.op & 0xf0) == 0) { ++ last = here; ++ for (;;) { ++ here = state->lencode[last.val + ++ (BITS(last.bits + last.op) >> last.bits)]; ++ if ((unsigned)(last.bits + here.bits) <= bits) break; ++ PULLBYTE(); ++ } ++ DROPBITS(last.bits); ++ state->back += last.bits; ++ } ++ DROPBITS(here.bits); ++ state->back += here.bits; ++ state->length = (unsigned)here.val; ++ if ((int)(here.op) == 0) { ++ Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? ++ "inflate: literal '%c'\n" : ++ "inflate: literal 0x%02x\n", here.val)); ++ state->mode = LIT; ++ break; ++ } ++ if (here.op & 32) { ++ Tracevv((stderr, "inflate: end of block\n")); ++ state->back = -1; ++ state->mode = TYPE; ++ break; ++ } ++ if (here.op & 64) { ++ strm->msg = (char *)"invalid literal/length code"; ++ state->mode = BAD; ++ break; ++ } ++ state->extra = (unsigned)(here.op) & 15; ++ state->mode = LENEXT; ++ case LENEXT: ++ if (state->extra) { ++ NEEDBITS(state->extra); ++ state->length += BITS(state->extra); ++ DROPBITS(state->extra); ++ state->back += state->extra; ++ } ++ Tracevv((stderr, "inflate: length %u\n", state->length)); ++ state->was = state->length; ++ state->mode = DIST; ++ case DIST: ++ for (;;) { ++ here = state->distcode[BITS(state->distbits)]; ++ if ((unsigned)(here.bits) <= bits) break; ++ PULLBYTE(); ++ } ++ if ((here.op & 0xf0) == 0) { ++ last = here; ++ for (;;) { ++ here = state->distcode[last.val + ++ (BITS(last.bits + last.op) >> last.bits)]; ++ if ((unsigned)(last.bits + here.bits) <= bits) break; ++ PULLBYTE(); ++ } ++ DROPBITS(last.bits); ++ state->back += last.bits; ++ } ++ DROPBITS(here.bits); ++ state->back += here.bits; ++ if (here.op & 64) { ++ strm->msg = (char *)"invalid distance code"; ++ state->mode = BAD; ++ break; ++ } ++ state->offset = (unsigned)here.val; ++ state->extra = (unsigned)(here.op) & 15; ++ state->mode = DISTEXT; ++ case DISTEXT: ++ if (state->extra) { ++ NEEDBITS(state->extra); ++ state->offset += BITS(state->extra); ++ DROPBITS(state->extra); ++ state->back += state->extra; ++ } ++#ifdef INFLATE_STRICT ++ if (state->offset > state->dmax) { ++ strm->msg = (char *)"invalid distance too far back"; ++ state->mode = BAD; ++ break; ++ } ++#endif ++ Tracevv((stderr, "inflate: distance %u\n", state->offset)); ++ state->mode = MATCH; ++ case MATCH: ++ if (left == 0) goto inf_leave; ++ copy = out - left; ++ if (state->offset > copy) { /* copy from window */ ++ copy = state->offset - copy; ++ if (copy > state->whave) { ++ if (state->sane) { ++ strm->msg = (char *)"invalid distance too far back"; ++ state->mode = BAD; ++ break; ++ } ++#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR ++ Trace((stderr, "inflate.c too far\n")); ++ copy -= state->whave; ++ if (copy > state->length) copy = state->length; ++ if (copy > left) copy = left; ++ left -= copy; ++ state->length -= copy; ++ do { ++ *put++ = 0; ++ } while (--copy); ++ if (state->length == 0) state->mode = LEN; ++ break; ++#endif ++ } ++ if (copy > state->wnext) { ++ copy -= state->wnext; ++ from = state->window + (state->wsize - copy); ++ } ++ else ++ from = state->window + (state->wnext - copy); ++ if (copy > state->length) copy = state->length; ++ } ++ else { /* copy from output */ ++ from = put - state->offset; ++ copy = state->length; ++ } ++ if (copy > left) copy = left; ++ left -= copy; ++ state->length -= copy; ++ do { ++ *put++ = *from++; ++ } while (--copy); ++ if (state->length == 0) state->mode = LEN; ++ break; ++ case LIT: ++ if (left == 0) goto inf_leave; ++ *put++ = (unsigned char)(state->length); ++ left--; ++ state->mode = LEN; ++ break; ++ case CHECK: ++ if (state->wrap) { ++ NEEDBITS(32); ++ out -= left; ++ strm->total_out += out; ++ state->total += out; ++ if ((state->wrap & 4) && out) ++ strm->adler = state->check = ++ UPDATE(state->check, put - out, out); ++ out = left; ++ if ((state->wrap & 4) && ( ++#ifdef GUNZIP ++ state->flags ? hold : ++#endif ++ ZSWAP32(hold)) != state->check) { ++ strm->msg = (char *)"incorrect data check"; ++ state->mode = BAD; ++ break; ++ } ++ INITBITS(); ++ Tracev((stderr, "inflate: check matches trailer\n")); ++ } ++#ifdef GUNZIP ++ state->mode = LENGTH; ++ case LENGTH: ++ if (state->wrap && state->flags) { ++ NEEDBITS(32); ++ if (hold != (state->total & 0xffffffffUL)) { ++ strm->msg = (char *)"incorrect length check"; ++ state->mode = BAD; ++ break; ++ } ++ INITBITS(); ++ Tracev((stderr, "inflate: length matches trailer\n")); ++ } ++#endif ++ state->mode = DONE; ++ case DONE: ++ ret = Z_STREAM_END; ++ goto inf_leave; ++ case BAD: ++ ret = Z_DATA_ERROR; ++ goto inf_leave; ++ case MEM: ++ return Z_MEM_ERROR; ++ case SYNC: ++ default: ++ return Z_STREAM_ERROR; ++ } ++ ++ /* ++ Return from inflate(), updating the total counts and the check value. ++ If there was no progress during the inflate() call, return a buffer ++ error. Call updatewindow() to create and/or update the window state. ++ Note: a memory error from inflate() is non-recoverable. ++ */ ++ inf_leave: ++ RESTORE(); ++ if (state->wsize || (out != strm->avail_out && state->mode < BAD && ++ (state->mode < CHECK || flush != Z_FINISH))) ++ if (updatewindow(strm, strm->next_out, out - strm->avail_out)) { ++ state->mode = MEM; ++ return Z_MEM_ERROR; ++ } ++ in -= strm->avail_in; ++ out -= strm->avail_out; ++ strm->total_in += in; ++ strm->total_out += out; ++ state->total += out; ++ if ((state->wrap & 4) && out) ++ strm->adler = state->check = ++ UPDATE(state->check, strm->next_out - out, out); ++ strm->data_type = (int)state->bits + (state->last ? 64 : 0) + ++ (state->mode == TYPE ? 128 : 0) + ++ (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); ++ if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) ++ ret = Z_BUF_ERROR; ++ return ret; ++} ++ ++int ZEXPORT inflateEnd(strm) ++z_streamp strm; ++{ ++ struct inflate_state FAR *state; ++ if (inflateStateCheck(strm)) ++ return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ if (state->window != Z_NULL) ZFREE(strm, state->window); ++ ZFREE(strm, strm->state); ++ strm->state = Z_NULL; ++ Tracev((stderr, "inflate: end\n")); ++ return Z_OK; ++} ++ ++int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength) ++z_streamp strm; ++Bytef *dictionary; ++uInt *dictLength; ++{ ++ struct inflate_state FAR *state; ++ ++ /* check state */ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ ++ /* copy dictionary */ ++ if (state->whave && dictionary != Z_NULL) { ++ zmemcpy(dictionary, state->window + state->wnext, ++ state->whave - state->wnext); ++ zmemcpy(dictionary + state->whave - state->wnext, ++ state->window, state->wnext); ++ } ++ if (dictLength != Z_NULL) ++ *dictLength = state->whave; ++ return Z_OK; ++} ++ ++int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength) ++z_streamp strm; ++const Bytef *dictionary; ++uInt dictLength; ++{ ++ struct inflate_state FAR *state; ++ unsigned long dictid; ++ int ret; ++ ++ /* check state */ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ if (state->wrap != 0 && state->mode != DICT) ++ return Z_STREAM_ERROR; ++ ++ /* check for correct dictionary identifier */ ++ if (state->mode == DICT) { ++ dictid = adler32(0L, Z_NULL, 0); ++ dictid = adler32(dictid, dictionary, dictLength); ++ if (dictid != state->check) ++ return Z_DATA_ERROR; ++ } ++ ++ /* copy dictionary to window using updatewindow(), which will amend the ++ existing dictionary if appropriate */ ++ ret = updatewindow(strm, dictionary + dictLength, dictLength); ++ if (ret) { ++ state->mode = MEM; ++ return Z_MEM_ERROR; ++ } ++ state->havedict = 1; ++ Tracev((stderr, "inflate: dictionary set\n")); ++ return Z_OK; ++} ++ ++int ZEXPORT inflateGetHeader(strm, head) ++z_streamp strm; ++gz_headerp head; ++{ ++ struct inflate_state FAR *state; ++ ++ /* check state */ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; ++ ++ /* save header structure */ ++ state->head = head; ++ head->done = 0; ++ return Z_OK; ++} ++ ++/* ++ Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found ++ or when out of input. When called, *have is the number of pattern bytes ++ found in order so far, in 0..3. On return *have is updated to the new ++ state. If on return *have equals four, then the pattern was found and the ++ return value is how many bytes were read including the last byte of the ++ pattern. If *have is less than four, then the pattern has not been found ++ yet and the return value is len. In the latter case, syncsearch() can be ++ called again with more data and the *have state. *have is initialized to ++ zero for the first call. ++ */ ++local unsigned syncsearch(have, buf, len) ++unsigned FAR *have; ++const unsigned char FAR *buf; ++unsigned len; ++{ ++ unsigned got; ++ unsigned next; ++ ++ got = *have; ++ next = 0; ++ while (next < len && got < 4) { ++ if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) ++ got++; ++ else if (buf[next]) ++ got = 0; ++ else ++ got = 4 - got; ++ next++; ++ } ++ *have = got; ++ return next; ++} ++ ++int ZEXPORT inflateSync(strm) ++z_streamp strm; ++{ ++ unsigned len; /* number of bytes to look at or looked at */ ++ unsigned long in, out; /* temporary to save total_in and total_out */ ++ unsigned char buf[4]; /* to restore bit buffer to byte string */ ++ struct inflate_state FAR *state; ++ ++ /* check parameters */ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; ++ ++ /* if first time, start search in bit buffer */ ++ if (state->mode != SYNC) { ++ state->mode = SYNC; ++ state->hold <<= state->bits & 7; ++ state->bits -= state->bits & 7; ++ len = 0; ++ while (state->bits >= 8) { ++ buf[len++] = (unsigned char)(state->hold); ++ state->hold >>= 8; ++ state->bits -= 8; ++ } ++ state->have = 0; ++ syncsearch(&(state->have), buf, len); ++ } ++ ++ /* search available input */ ++ len = syncsearch(&(state->have), strm->next_in, strm->avail_in); ++ strm->avail_in -= len; ++ strm->next_in += len; ++ strm->total_in += len; ++ ++ /* return no joy or set up to restart inflate() on a new block */ ++ if (state->have != 4) return Z_DATA_ERROR; ++ in = strm->total_in; out = strm->total_out; ++ inflateReset(strm); ++ strm->total_in = in; strm->total_out = out; ++ state->mode = TYPE; ++ return Z_OK; ++} ++ ++/* ++ Returns true if inflate is currently at the end of a block generated by ++ Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP ++ implementation to provide an additional safety check. PPP uses ++ Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored ++ block. When decompressing, PPP checks that at the end of input packet, ++ inflate is waiting for these length bytes. ++ */ ++int ZEXPORT inflateSyncPoint(strm) ++z_streamp strm; ++{ ++ struct inflate_state FAR *state; ++ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ return state->mode == STORED && state->bits == 0; ++} ++ ++int ZEXPORT inflateCopy(dest, source) ++z_streamp dest; ++z_streamp source; ++{ ++ struct inflate_state FAR *state; ++ struct inflate_state FAR *copy; ++ unsigned char FAR *window; ++ unsigned wsize; ++ ++ /* check input */ ++ if (inflateStateCheck(source) || dest == Z_NULL) ++ return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)source->state; ++ ++ /* allocate space */ ++ copy = (struct inflate_state FAR *) ++ ZALLOC(source, 1, sizeof(struct inflate_state)); ++ if (copy == Z_NULL) return Z_MEM_ERROR; ++ window = Z_NULL; ++ if (state->window != Z_NULL) { ++ window = (unsigned char FAR *) ++ ZALLOC(source, 1U << state->wbits, sizeof(unsigned char)); ++ if (window == Z_NULL) { ++ ZFREE(source, copy); ++ return Z_MEM_ERROR; ++ } ++ } ++ ++ /* copy state */ ++ zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); ++ zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); ++ copy->strm = dest; ++ if (state->lencode >= state->codes && ++ state->lencode <= state->codes + ENOUGH - 1) { ++ copy->lencode = copy->codes + (state->lencode - state->codes); ++ copy->distcode = copy->codes + (state->distcode - state->codes); ++ } ++ copy->next = copy->codes + (state->next - state->codes); ++ if (window != Z_NULL) { ++ wsize = 1U << state->wbits; ++ zmemcpy(window, state->window, wsize); ++ } ++ copy->window = window; ++ dest->state = (struct internal_state FAR *)copy; ++ return Z_OK; ++} ++ ++int ZEXPORT inflateUndermine(strm, subvert) ++z_streamp strm; ++int subvert; ++{ ++ struct inflate_state FAR *state; ++ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR ++ state->sane = !subvert; ++ return Z_OK; ++#else ++ (void)subvert; ++ state->sane = 1; ++ return Z_DATA_ERROR; ++#endif ++} ++ ++int ZEXPORT inflateValidate(strm, check) ++z_streamp strm; ++int check; ++{ ++ struct inflate_state FAR *state; ++ ++ if (inflateStateCheck(strm)) return Z_STREAM_ERROR; ++ state = (struct inflate_state FAR *)strm->state; ++ if (check) ++ state->wrap |= 4; ++ else ++ state->wrap &= ~4; ++ return Z_OK; ++} ++ ++long ZEXPORT inflateMark(strm) ++z_streamp strm; ++{ ++ struct inflate_state FAR *state; ++ ++ if (inflateStateCheck(strm)) ++ return -(1L << 16); ++ state = (struct inflate_state FAR *)strm->state; ++ return (long)(((unsigned long)((long)state->back)) << 16) + ++ (state->mode == COPY ? state->length : ++ (state->mode == MATCH ? state->was - state->length : 0)); ++} ++ ++unsigned long ZEXPORT inflateCodesUsed(strm) ++z_streamp strm; ++{ ++ struct inflate_state FAR *state; ++ if (inflateStateCheck(strm)) return (unsigned long)-1; ++ state = (struct inflate_state FAR *)strm->state; ++ return (unsigned long)(state->next - state->codes); ++} + +From 247147654fe5cd11cf15d8dff91440405ea57040 Mon Sep 17 00:00:00 2001 +From: Simon Hosie +Date: Wed, 12 Apr 2017 15:44:21 -0700 +Subject: [PATCH 2/2] Inflate using wider loads and stores + +In inflate_fast() the output pointer always has plenty of room to write. This +means that so long as the target is capable, wide un-aligned loads and stores +can be used to transfer several bytes at once. When the reference distance is +too short simply unroll the data a little to increase the distance. + +Change-Id: I59854eb25d2b1e43561c8a2afaf9175bf10cf674 +--- + contrib/arm/chunkcopy.h | 279 ++++++++++++++++++++++++++++++++++++++++++++++++ + contrib/arm/inffast.c | 96 +++++++---------- + contrib/arm/inflate.c | 22 ++-- + 3 files changed, 335 insertions(+), 62 deletions(-) + create mode 100644 contrib/arm/chunkcopy.h + +diff --git a/contrib/arm/chunkcopy.h b/contrib/arm/chunkcopy.h +new file mode 100644 +index 00000000..2d6fd6f9 +--- /dev/null ++++ b/contrib/arm/chunkcopy.h +@@ -0,0 +1,279 @@ ++/* chunkcopy.h -- fast copies and sets ++ * Copyright (C) 2017 ARM, Inc. ++ * For conditions of distribution and use, see copyright notice in zlib.h ++ */ ++ ++#ifndef CHUNKCOPY_H ++#define CHUNKCOPY_H ++ ++#include "zutil.h" ++#include ++ ++#if __STDC_VERSION__ >= 199901L ++#define Z_RESTRICT restrict ++#else ++#define Z_RESTRICT ++#endif ++ ++typedef uint8x16_t chunkcopy_chunk_t; ++#define CHUNKCOPY_CHUNK_SIZE sizeof(chunkcopy_chunk_t) ++ ++/* ++ Ask the compiler to perform a wide, unaligned load with an machine ++ instruction appropriate for the chunkcopy_chunk_t type. ++ */ ++static inline chunkcopy_chunk_t loadchunk(const unsigned char FAR *s) { ++ chunkcopy_chunk_t c; ++ __builtin_memcpy(&c, s, sizeof(c)); ++ return c; ++} ++ ++/* ++ Ask the compiler to perform a wide, unaligned store with an machine ++ instruction appropriate for the chunkcopy_chunk_t type. ++ */ ++static inline void storechunk(unsigned char FAR *d, chunkcopy_chunk_t c) { ++ __builtin_memcpy(d, &c, sizeof(c)); ++} ++ ++/* ++ Perform a memcpy-like operation, but assume that length is non-zero and that ++ it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE bytes of output even if ++ the length is shorter than this. ++ ++ It also guarantees that it will properly unroll the data if the distance ++ between `out` and `from` is at least CHUNKCOPY_CHUNK_SIZE, which we rely on ++ in chunkcopy_relaxed(). ++ ++ Aside from better memory bus utilisation, this means that short copies ++ (CHUNKCOPY_CHUNK_SIZE bytes or fewer) will fall straight through the loop ++ without iteration, which will hopefully make the branch prediction more ++ reliable. ++ */ ++static inline unsigned char FAR *chunkcopy_core(unsigned char FAR *out, ++ const unsigned char FAR *from, ++ unsigned len) { ++ int bump = (--len % CHUNKCOPY_CHUNK_SIZE) + 1; ++ storechunk(out, loadchunk(from)); ++ out += bump; ++ from += bump; ++ len /= CHUNKCOPY_CHUNK_SIZE; ++ while (len-- > 0) { ++ storechunk(out, loadchunk(from)); ++ out += CHUNKCOPY_CHUNK_SIZE; ++ from += CHUNKCOPY_CHUNK_SIZE; ++ } ++ return out; ++} ++ ++/* ++ Like chunkcopy_core, but avoid writing beyond of legal output. ++ ++ Accepts an additional pointer to the end of safe output. A generic safe ++ copy would use (out + len), but it's normally the case that the end of the ++ output buffer is beyond the end of the current copy, and this can still be ++ exploited. ++ */ ++static inline unsigned char FAR *chunkcopy_core_safe(unsigned char FAR *out, ++ const unsigned char FAR * from, ++ unsigned len, ++ unsigned char FAR *limit) { ++ Assert(out + len <= limit, "chunk copy exceeds safety limit"); ++ if (limit - out < CHUNKCOPY_CHUNK_SIZE) { ++ const unsigned char FAR * Z_RESTRICT rfrom = from; ++ if (len & 8) { __builtin_memcpy(out, rfrom, 8); out += 8; rfrom += 8; } ++ if (len & 4) { __builtin_memcpy(out, rfrom, 4); out += 4; rfrom += 4; } ++ if (len & 2) { __builtin_memcpy(out, rfrom, 2); out += 2; rfrom += 2; } ++ if (len & 1) { *out++ = *rfrom++; } ++ return out; ++ } ++ return chunkcopy_core(out, from, len); ++} ++ ++/* ++ Perform short copies until distance can be rewritten as being at least ++ CHUNKCOPY_CHUNK_SIZE. ++ ++ This assumes that it's OK to overwrite at least the first ++ 2*CHUNKCOPY_CHUNK_SIZE bytes of output even if the copy is shorter than ++ this. This assumption holds within inflate_fast() which starts every ++ iteration with at least 258 bytes of output space available (258 being the ++ maximum length output from a single token; see inffast.c). ++ */ ++static inline unsigned char FAR *chunkunroll_relaxed(unsigned char FAR *out, ++ unsigned FAR *dist, ++ unsigned FAR *len) { ++ const unsigned char FAR *from = out - *dist; ++ while (*dist < *len && *dist < CHUNKCOPY_CHUNK_SIZE) { ++ storechunk(out, loadchunk(from)); ++ out += *dist; ++ *len -= *dist; ++ *dist += *dist; ++ } ++ return out; ++} ++ ++ ++static inline uint8x16_t chunkset_vld1q_dup_u8x8(const unsigned char FAR * Z_RESTRICT from) { ++#if defined(__clang__) || defined(__aarch64__) ++ return vreinterpretq_u8_u64(vld1q_dup_u64((void *)from)); ++#else ++ /* 32-bit GCC uses an alignment hint for vld1q_dup_u64, even when given a ++ * void pointer, so here's an alternate implementation. ++ */ ++ uint8x8_t h = vld1_u8(from); ++ return vcombine_u8(h, h); ++#endif ++} ++ ++/* ++ Perform an overlapping copy which behaves as a memset() operation, but ++ supporting periods other than one, and assume that length is non-zero and ++ that it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE*3 bytes of output ++ even if the length is shorter than this. ++ */ ++static inline unsigned char FAR *chunkset_core(unsigned char FAR *out, ++ unsigned period, ++ unsigned len) { ++ uint8x16_t f; ++ int bump = ((len - 1) % sizeof(f)) + 1; ++ ++ switch (period) { ++ case 1: ++ f = vld1q_dup_u8(out - 1); ++ vst1q_u8(out, f); ++ out += bump; ++ len -= bump; ++ while (len > 0) { ++ vst1q_u8(out, f); ++ out += sizeof(f); ++ len -= sizeof(f); ++ } ++ return out; ++ case 2: ++ f = vreinterpretq_u8_u16(vld1q_dup_u16((void *)(out - 2))); ++ vst1q_u8(out, f); ++ out += bump; ++ len -= bump; ++ if (len > 0) { ++ f = vreinterpretq_u8_u16(vld1q_dup_u16((void *)(out - 2))); ++ do { ++ vst1q_u8(out, f); ++ out += sizeof(f); ++ len -= sizeof(f); ++ } while (len > 0); ++ } ++ return out; ++ case 4: ++ f = vreinterpretq_u8_u32(vld1q_dup_u32((void *)(out - 4))); ++ vst1q_u8(out, f); ++ out += bump; ++ len -= bump; ++ if (len > 0) { ++ f = vreinterpretq_u8_u32(vld1q_dup_u32((void *)(out - 4))); ++ do { ++ vst1q_u8(out, f); ++ out += sizeof(f); ++ len -= sizeof(f); ++ } while (len > 0); ++ } ++ return out; ++ case 8: ++ f = chunkset_vld1q_dup_u8x8(out - 8); ++ vst1q_u8(out, f); ++ out += bump; ++ len -= bump; ++ if (len > 0) { ++ f = chunkset_vld1q_dup_u8x8(out - 8); ++ do { ++ vst1q_u8(out, f); ++ out += sizeof(f); ++ len -= sizeof(f); ++ } while (len > 0); ++ } ++ return out; ++ } ++ out = chunkunroll_relaxed(out, &period, &len); ++ return chunkcopy_core(out, out - period, len); ++} ++ ++/* ++ Perform a memcpy-like operation, but assume that length is non-zero and that ++ it's OK to overwrite at least CHUNKCOPY_CHUNK_SIZE bytes of output even if ++ the length is shorter than this. ++ ++ Unlike chunkcopy_core() above, no guarantee is made regarding the behaviour ++ of overlapping buffers, regardless of the distance between the pointers. ++ This is reflected in the `restrict`-qualified pointers, allowing the ++ compiler to reorder loads and stores. ++ */ ++static inline unsigned char FAR *chunkcopy_relaxed(unsigned char FAR * Z_RESTRICT out, ++ const unsigned char FAR * Z_RESTRICT from, ++ unsigned len) { ++ return chunkcopy_core(out, from, len); ++} ++ ++/* ++ Like chunkcopy_relaxed, but avoid writing beyond of legal output. ++ ++ Unlike chunkcopy_core_safe() above, no guarantee is made regarding the ++ behaviour of overlapping buffers, regardless of the distance between the ++ pointers. This is reflected in the `restrict`-qualified pointers, allowing ++ the compiler to reorder loads and stores. ++ ++ Accepts an additional pointer to the end of safe output. A generic safe ++ copy would use (out + len), but it's normally the case that the end of the ++ output buffer is beyond the end of the current copy, and this can still be ++ exploited. ++ */ ++static inline unsigned char FAR *chunkcopy_safe(unsigned char FAR *out, ++ const unsigned char FAR * Z_RESTRICT from, ++ unsigned len, ++ unsigned char FAR *limit) { ++ Assert(out + len <= limit, "chunk copy exceeds safety limit"); ++ return chunkcopy_core_safe(out, from, len, limit); ++} ++ ++/* ++ Perform chunky copy within the same buffer, where the source and destination ++ may potentially overlap. ++ ++ Assumes that len > 0 on entry, and that it's safe to write at least ++ CHUNKCOPY_CHUNK_SIZE*3 bytes to the output. ++ */ ++static inline unsigned char FAR *chunkcopy_lapped_relaxed(unsigned char FAR *out, ++ unsigned dist, ++ unsigned len) { ++ if (dist < len && dist < CHUNKCOPY_CHUNK_SIZE) { ++ return chunkset_core(out, dist, len); ++ } ++ return chunkcopy_core(out, out - dist, len); ++} ++ ++/* ++ Behave like chunkcopy_lapped_relaxed, but avoid writing beyond of legal output. ++ ++ Accepts an additional pointer to the end of safe output. A generic safe ++ copy would use (out + len), but it's normally the case that the end of the ++ output buffer is beyond the end of the current copy, and this can still be ++ exploited. ++ */ ++static inline unsigned char FAR *chunkcopy_lapped_safe(unsigned char FAR *out, ++ unsigned dist, ++ unsigned len, ++ unsigned char FAR *limit) { ++ Assert(out + len <= limit, "chunk copy exceeds safety limit"); ++ if (limit - out < CHUNKCOPY_CHUNK_SIZE * 3) { ++ /* TODO: try harder to optimise this */ ++ while (len-- > 0) { ++ *out = *(out - dist); ++ out++; ++ } ++ return out; ++ } ++ return chunkcopy_lapped_relaxed(out, dist, len); ++} ++ ++#undef Z_RESTRICT ++ ++#endif /* CHUNKCOPY_H */ +diff --git a/contrib/arm/inffast.c b/contrib/arm/inffast.c +index 0dbd1dbc..f7f50071 100644 +--- a/contrib/arm/inffast.c ++++ b/contrib/arm/inffast.c +@@ -7,6 +7,7 @@ + #include "inftrees.h" + #include "inflate.h" + #include "inffast.h" ++#include "chunkcopy.h" + + #ifdef ASMINF + # pragma message("Assembler code may have bugs -- use at your own risk") +@@ -57,6 +58,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ + unsigned char FAR *out; /* local strm->next_out */ + unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ + unsigned char FAR *end; /* while out < end, enough space available */ ++ unsigned char FAR *limit; /* safety limit for chunky copies */ + #ifdef INFLATE_STRICT + unsigned dmax; /* maximum distance from zlib header */ + #endif +@@ -84,12 +86,13 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ + out = strm->next_out; + beg = out - (start - strm->avail_out); + end = out + (strm->avail_out - 257); ++ limit = out + strm->avail_out; + #ifdef INFLATE_STRICT + dmax = state->dmax; + #endif + wsize = state->wsize; + whave = state->whave; +- wnext = state->wnext; ++ wnext = (state->wnext == 0 && whave >= wsize) ? wsize : state->wnext; + window = state->window; + hold = state->hold; + bits = state->bits; +@@ -197,70 +200,51 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ + #endif + } + from = window; +- if (wnext == 0) { /* very common case */ +- from += wsize - op; +- if (op < len) { /* some from window */ +- len -= op; +- do { +- *out++ = *from++; +- } while (--op); +- from = out - dist; /* rest from output */ +- } ++ if (wnext >= op) { /* contiguous in window */ ++ from += wnext - op; + } +- else if (wnext < op) { /* wrap around window */ +- from += wsize + wnext - op; ++ else { /* wrap around window */ + op -= wnext; ++ from += wsize - op; + if (op < len) { /* some from end of window */ + len -= op; +- do { +- *out++ = *from++; +- } while (--op); +- from = window; +- if (wnext < len) { /* some from start of window */ +- op = wnext; +- len -= op; +- do { +- *out++ = *from++; +- } while (--op); +- from = out - dist; /* rest from output */ +- } ++ out = chunkcopy_safe(out, from, op, limit); ++ from = window; /* more from start of window */ ++ op = wnext; ++ /* This (rare) case can create a situation where ++ the first chunkcopy below must be checked. ++ */ + } + } +- else { /* contiguous in window */ +- from += wnext - op; +- if (op < len) { /* some from window */ +- len -= op; +- do { +- *out++ = *from++; +- } while (--op); +- from = out - dist; /* rest from output */ +- } +- } +- while (len > 2) { +- *out++ = *from++; +- *out++ = *from++; +- *out++ = *from++; +- len -= 3; +- } +- if (len) { +- *out++ = *from++; +- if (len > 1) +- *out++ = *from++; ++ if (op < len) { /* still need some from output */ ++ out = chunkcopy_safe(out, from, op, limit); ++ len -= op; ++ /* When dist is small the amount of data that can be ++ copied from the window is also small, and progress ++ towards the dangerous end of the output buffer is ++ also small. This means that for trivial memsets and ++ for chunkunroll_relaxed() a safety check is ++ unnecessary. However, these conditions may not be ++ entered at all, and in that case it's possible that ++ the main copy is near the end. ++ */ ++ out = chunkunroll_relaxed(out, &dist, &len); ++ out = chunkcopy_safe(out, out - dist, len, limit); ++ } else { ++ /* from points to window, so there is no risk of ++ overlapping pointers requiring memset-like behaviour ++ */ ++ out = chunkcopy_safe(out, from, len, limit); + } + } + else { +- from = out - dist; /* copy direct from output */ +- do { /* minimum length is three */ +- *out++ = *from++; +- *out++ = *from++; +- *out++ = *from++; +- len -= 3; +- } while (len > 2); +- if (len) { +- *out++ = *from++; +- if (len > 1) +- *out++ = *from++; +- } ++ /* Whole reference is in range of current output. No ++ range checks are necessary because we start with room ++ for at least 258 bytes of output, so unroll and roundoff ++ operations can write beyond `out+len` so long as they ++ stay within 258 bytes of `out`. ++ */ ++ out = chunkcopy_lapped_relaxed(out, dist, len); + } + } + else if ((op & 64) == 0) { /* 2nd level distance code */ +diff --git a/contrib/arm/inflate.c b/contrib/arm/inflate.c +index ac333e8c..e40322c3 100644 +--- a/contrib/arm/inflate.c ++++ b/contrib/arm/inflate.c +@@ -84,6 +84,7 @@ + #include "inftrees.h" + #include "inflate.h" + #include "inffast.h" ++#include "contrib/arm/chunkcopy.h" + + #ifdef MAKEFIXED + # ifndef BUILDFIXED +@@ -405,10 +406,20 @@ unsigned copy; + + /* if it hasn't been done already, allocate space for the window */ + if (state->window == Z_NULL) { ++ unsigned wsize = 1U << state->wbits; + state->window = (unsigned char FAR *) +- ZALLOC(strm, 1U << state->wbits, ++ ZALLOC(strm, wsize + CHUNKCOPY_CHUNK_SIZE, + sizeof(unsigned char)); + if (state->window == Z_NULL) return 1; ++#ifdef INFLATE_CLEAR_UNUSED_UNDEFINED ++ /* Copies from the overflow portion of this buffer are undefined and ++ may cause analysis tools to raise a warning if we don't initialize ++ it. However, this undefined data overwrites other undefined data ++ and is subsequently either overwritten or left deliberately ++ undefined at the end of decode; so there's really no point. ++ */ ++ memset(state->window + wsize, 0, CHUNKCOPY_CHUNK_SIZE); ++#endif + } + + /* if window not in use yet, initialize */ +@@ -1175,17 +1186,16 @@ int flush; + else + from = state->window + (state->wnext - copy); + if (copy > state->length) copy = state->length; ++ if (copy > left) copy = left; ++ put = chunkcopy_safe(put, from, copy, put + left); + } + else { /* copy from output */ +- from = put - state->offset; + copy = state->length; ++ if (copy > left) copy = left; ++ put = chunkcopy_lapped_safe(put, state->offset, copy, put + left); + } +- if (copy > left) copy = left; + left -= copy; + state->length -= copy; +- do { +- *put++ = *from++; +- } while (--copy); + if (state->length == 0) state->mode = LEN; + break; + case LIT: diff --git a/package/libs/zlib/patches/003-attach-sourcefiles-in-patch-002-to-buildsystem.patch b/package/libs/zlib/patches/003-attach-sourcefiles-in-patch-002-to-buildsystem.patch new file mode 100644 index 0000000000..68f317b24b --- /dev/null +++ b/package/libs/zlib/patches/003-attach-sourcefiles-in-patch-002-to-buildsystem.patch @@ -0,0 +1,100 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8e75f66..24d7329 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -95,34 +95,67 @@ set(ZLIB_PUBLIC_HDRS + ${CMAKE_CURRENT_BINARY_DIR}/zconf.h + zlib.h + ) +-set(ZLIB_PRIVATE_HDRS +- crc32.h +- deflate.h +- gzguts.h +- inffast.h +- inffixed.h +- inflate.h +- inftrees.h +- trees.h +- zutil.h +-) +-set(ZLIB_SRCS +- adler32.c +- compress.c +- crc32.c +- deflate.c +- gzclose.c +- gzlib.c +- gzread.c +- gzwrite.c +- inflate.c +- infback.c +- inftrees.c +- inffast.c +- trees.c +- uncompr.c +- zutil.c +-) ++ ++if(ARMv8) ++ set(ZLIB_PRIVATE_HDRS ++ crc32.h ++ deflate.h ++ gzguts.h ++ inffast.h ++ inffixed.h ++ inflate.h ++ inftrees.h ++ trees.h ++ zutil.h ++ contrib/arm/chunkcopy.h ++ ) ++ set(ZLIB_SRCS ++ adler32.c ++ compress.c ++ crc32.c ++ deflate.c ++ gzclose.c ++ gzlib.c ++ gzread.c ++ gzwrite.c ++ infback.c ++ inftrees.c ++ contrib/arm/inflate.c ++ contrib/arm/inffast.c ++ trees.c ++ uncompr.c ++ zutil.c ++ ) ++ else() ++ set(ZLIB_PRIVATE_HDRS ++ crc32.h ++ deflate.h ++ gzguts.h ++ inffast.h ++ inffixed.h ++ inflate.h ++ inftrees.h ++ trees.h ++ zutil.h ++ ) ++ set(ZLIB_SRCS ++ adler32.c ++ compress.c ++ crc32.c ++ deflate.c ++ gzclose.c ++ gzlib.c ++ gzread.c ++ gzwrite.c ++ inflate.c ++ infback.c ++ inftrees.c ++ inffast.c ++ trees.c ++ uncompr.c ++ zutil.c ++ ) ++endif() + + if(NOT MINGW) + set(ZLIB_DLL_SRCS diff --git a/package/luci/LICENSE b/package/luci/LICENSE deleted file mode 100644 index f49a4e16e6..0000000000 --- a/package/luci/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/package/luci/NOTICE b/package/luci/NOTICE deleted file mode 100644 index 47e1969213..0000000000 --- a/package/luci/NOTICE +++ /dev/null @@ -1,9 +0,0 @@ -LuCI - Lua Configuration Interface -Copyright 2008 Steven Barth -Copyright 2008 Jo-Philipp Wich -Licensed under the Apache License, Version 2.0. - -Contains code from: -coxpcall - Copyright 2005 - Kepler Project (www.keplerproject.org) -ltn12/luasocket - Copyright 2004-2007 Diego Nehab -axTLS - Copyright 2008 Cameron Rich diff --git a/package/luci/applications/luci-app-adblock/Makefile b/package/luci/applications/luci-app-adblock/Makefile deleted file mode 100644 index ae1eba2516..0000000000 --- a/package/luci/applications/luci-app-adblock/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright 2017 Dirk Brenken (dev@brenken.org) -# This is free software, licensed under the Apache License, Version 2.0 - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI support for Adblock -LUCI_DEPENDS:=+adblock +luci-lib-jsonc -LUCI_PKGARCH:=all - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature \ No newline at end of file diff --git a/package/luci/applications/luci-app-adblock/luasrc/controller/adblock.lua b/package/luci/applications/luci-app-adblock/luasrc/controller/adblock.lua deleted file mode 100644 index b74858400b..0000000000 --- a/package/luci/applications/luci-app-adblock/luasrc/controller/adblock.lua +++ /dev/null @@ -1,54 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -module("luci.controller.adblock", package.seeall) - -local fs = require("nixio.fs") -local util = require("luci.util") -local templ = require("luci.template") -local i18n = require("luci.i18n") - -function index() - if not nixio.fs.access("/etc/config/adblock") then - return - end - entry({"admin", "services", "adblock"}, firstchild(), _("Adblock"), 30).dependent = false - entry({"admin", "services", "adblock", "tab_from_cbi"}, cbi("adblock/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true - entry({"admin", "services", "adblock", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true - entry({"admin", "services", "adblock", "advanced"}, firstchild(), _("Advanced"), 100) - entry({"admin", "services", "adblock", "advanced", "blacklist"}, cbi("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true - entry({"admin", "services", "adblock", "advanced", "whitelist"}, cbi("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true - entry({"admin", "services", "adblock", "advanced", "configuration"}, cbi("adblock/configuration_tab"), _("Edit Configuration"), 130).leaf = true - entry({"admin", "services", "adblock", "advanced", "query"}, template("adblock/query"), _("Query domains"), 140).leaf = true - entry({"admin", "services", "adblock", "advanced", "result"}, call("queryData"), nil, 150).leaf = true -end - -function logread() - local logfile - - if nixio.fs.access("/var/log/messages") then - logfile = util.trim(util.exec("cat /var/log/messages | grep 'adblock'")) - else - logfile = util.trim(util.exec("logread -e 'adblock'")) - end - templ.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile}) -end - -function queryData(domain) - if domain and domain:match("^[a-zA-Z0-9%-%._]+$") then - luci.http.prepare_content("text/plain") - local cmd = "/etc/init.d/adblock query %q 2>&1" - local util = io.popen(cmd % domain) - if util then - while true do - local line = util:read("*l") - if not line then - break - end - luci.http.write(line) - luci.http.write("\n") - end - util:close() - end - end -end diff --git a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua deleted file mode 100644 index ef70100e4f..0000000000 --- a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua +++ /dev/null @@ -1,52 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local uci = require("uci") -local adbinput = uci.get("adblock", "blacklist", "adb_src" or "/etc/adblock/adblock.blacklist") - -if not nixio.fs.access(adbinput) then - m = SimpleForm("error", nil, - translate("Input file not found, please check your configuration.")) - m.reset = false - m.submit = false - return m -end - -if nixio.fs.stat(adbinput).size > 524288 then - m = SimpleForm("error", nil, - translate("The file size is too large for online editing in LuCI (> 512 KB). ") - .. translate("Please edit this file directly in a terminal session.")) - m.reset = false - m.submit = false - return m -end - -m = SimpleForm("input", nil) -m:append(Template("adblock/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translatef("This form allows you to modify the content of the adblock blacklist (%s).
", adbinput) - .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not.")) - -f = s:option(TextValue, "data") -f.datatype = "string" -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nixio.fs.readfile(adbinput) or "" -end - -function f.write(self, section, data) - return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua deleted file mode 100644 index 1d89485e79..0000000000 --- a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local adbinput = "/etc/config/adblock" - -if not nixio.fs.access(adbinput) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - m.reset = false - m.submit = false - return m -end - -m = SimpleForm("input", nil) -m:append(Template("adblock/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main adblock configuration file (/etc/config/adblock).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nixio.fs.readfile(adbinput) or "" -end - -function f.write(self, section, data) - return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua deleted file mode 100644 index 4bb404c25c..0000000000 --- a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua +++ /dev/null @@ -1,242 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local sys = require("luci.sys") -local util = require("luci.util") -local dump = util.ubus("network.interface", "dump", {}) -local json = require("luci.jsonc") -local adbinput = uci.get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json" - -if not uci:get("adblock", "extra") then - m = SimpleForm("", nil, translate("Please update your adblock config file to use this package.
") - .. translatef("During opkg package installation use the '--force-maintainer' option to overwrite the pre-existing config file or download a fresh default config from " - .. "" - .. "here", "https://raw.githubusercontent.com/openwrt/packages/master/net/adblock/files/adblock.conf")) - m.submit = false - m.reset = false - return m -end - -m = Map("adblock", translate("Adblock"), - translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ") - .. translatef("For further information " - .. "" - .. "check the online documentation", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md")) - -function m.on_after_commit(self) - luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock")) -end - --- Main adblock options - -s = m:section(NamedSection, "global", "adblock") - -local parse = json.parse(fs.readfile(adbinput) or "") -if parse then - status = parse.data.adblock_status - version = parse.data.adblock_version - domains = parse.data.overall_domains - fetch = parse.data.fetch_utility - backend = parse.data.dns_backend - rundate = parse.data.last_rundate -end - -o1 = s:option(Flag, "adb_enabled", translate("Enable Adblock")) -o1.default = o1.disabled -o1.rmempty = false - -btn = s:option(Button, "", translate("Suspend / Resume Adblock")) -if parse and status == "enabled" then - btn.inputtitle = translate("Suspend") - btn.inputstyle = "reset" - btn.disabled = false - function btn.write() - luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock")) - end -elseif parse and status == "paused" then - btn.inputtitle = translate("Resume") - btn.inputstyle = "apply" - btn.disabled = false - function btn.write() - luci.sys.call("/etc/init.d/adblock resume >/dev/null 2>&1") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock")) - end -else - btn.inputtitle = translate("-------") - btn.inputstyle = "button" - btn.disabled = true -end - -o2 = s:option(ListValue, "adb_dns", translate("DNS Backend (DNS Directory)"), - translate("List of supported DNS backends with their default list export directory.
") - .. translate("To overwrite the default path use the 'DNS Directory' option in the extra section below.")) -o2:value("dnsmasq", "dnsmasq (/tmp/dnsmasq.d)") -o2:value("unbound", "unbound (/var/lib/unbound)") -o2:value("named", "named (/var/lib/bind)") -o2:value("kresd", "kresd (/etc/kresd)") -o2:value("dnscrypt-proxy","dnscrypt-proxy (/tmp)") -o2.rmempty = false - -o3 = s:option(ListValue, "adb_trigger", translate("Startup Trigger"), - translate("List of available network interfaces. Usually the startup will be triggered by the 'wan' interface.
") - .. translate("Choose 'none' to disable automatic startups, 'timed' to use a classic timeout (default 30 sec.) or select another trigger interface.")) -o3:value("none") -o3:value("timed") -if dump then - local i, v - for i, v in ipairs(dump.interface) do - if v.interface ~= "loopback" then - o3:value(v.interface) - end - end -end -o3.rmempty = false - --- Runtime information - -ds = s:option(DummyValue, "", translate("Runtime Information")) -ds.template = "cbi/nullsection" - -dv1 = s:option(DummyValue, "", translate("Adblock Status")) -dv1.template = "adblock/runtime" -if parse == nil then - dv1.value = translate("n/a") -else - if status == "error" then - dv1.value = translate("error") - elseif status == "disabled" then - dv1.value = translate("disabled") - elseif status == "paused" then - dv1.value = translate("paused") - else - dv1.value = translate("enabled") - end -end - -dv2 = s:option(DummyValue, "", translate("Adblock Version")) -dv2.template = "adblock/runtime" -if parse == nil then - dv2.value = translate("n/a") -else - dv2.value = version -end - -dv3 = s:option(DummyValue, "", translate("Download Utility (SSL Library)"), - translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or the wget 'built-in'.")) -dv3.template = "adblock/runtime" -if parse == nil then - dv3.value = translate("n/a") -else - dv3.value = fetch -end - -dv4 = s:option(DummyValue, "", translate("DNS Backend (DNS Directory)")) -dv4.template = "adblock/runtime" -if parse == nil then - dv4.value = translate("n/a") -else - dv4.value = backend -end - -dv5 = s:option(DummyValue, "", translate("Overall Domains")) -dv5.template = "adblock/runtime" -if parse == nil then - dv5.value = translate("n/a") -else - dv5.value = domains -end - -dv6 = s:option(DummyValue, "", translate("Last Run")) -dv6.template = "adblock/runtime" -if parse == nil then - dv6.value = translate("n/a") -else - dv6.value = rundate -end - --- Blocklist table - -bl = m:section(TypedSection, "source", translate("Blocklist Sources"), - translate("Available blocklist sources. ") - .. translate("List URLs and Shallalist category selections are configurable in the 'Advanced' section.
") - .. translate("Caution: To prevent OOM exceptions on low memory devices with less than 64 MB free RAM, please do not select too many lists - 5-6 should be sufficient!")) -bl.template = "cbi/tblsection" - -name = bl:option(Flag, "enabled", translate("Enabled")) -name.rmempty = false - -ssl = bl:option(DummyValue, "adb_src", translate("SSL req.")) -function ssl.cfgvalue(self, section) - local source = self.map:get(section, "adb_src") - if source and source:match("https://") then - return translate("Yes") - else - return translate("No") - end -end -des = bl:option(DummyValue, "adb_src_desc", translate("Description")) - --- Extra options - -e = m:section(NamedSection, "extra", "adblock", translate("Extra Options"), - translate("Options for further tweaking in case the defaults are not suitable for you.")) - -e1 = e:option(Flag, "adb_debug", translate("Verbose Debug Logging"), - translate("Enable verbose debug logging in case of any processing error.")) -e1.default = e1.disabled -e1.rmempty = false - -e2 = e:option(Flag, "adb_forcedns", translate("Force Local DNS"), - translate("Redirect all DNS queries from 'lan' zone to the local resolver.")) -e2.default = e2.disabled -e2.rmempty = false - -e3 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"), - translate("Enable memory intense overall sort / duplicate removal on low memory devices (< 64 MB free RAM)")) -e3.default = e3.disabled -e3.rmempty = false - -e4 = e:option(Flag, "adb_backup", translate("Enable Blocklist Backup"), - translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in backup mode.")) -e4.default = e4.disabled -e4.rmempty = false - -e5 = e:option(Value, "adb_backupdir", translate("Backup Directory"), - translate("Target directory for adblock backups. Please use only non-volatile disks, e.g. an external usb stick.")) -e5:depends("adb_backup", 1) -e5.datatype = "directory" -e5.default = "/mnt" -e5.rmempty = true - -e6 = e:option(Flag, "adb_backup_mode", translate("Backup Mode"), - translate("Do not automatically update blocklists during startup, use blocklist backups instead.")) -e6:depends("adb_backup", 1) -e6.default = e6.disabled -e6.rmempty = true - -e7 = e:option(Flag, "adb_whitelist_mode", translate("Whitelist Mode"), - translate("Block access to all domains except those explicitly listed in the whitelist file.")) -e7.default = e7.disabled -e7.rmempty = true - -e8 = e:option(Value, "adb_dnsdir", translate("DNS Directory"), - translate("Target directory for the generated blocklist 'adb_list.overall'.")) -e8.datatype = "directory" -e8.optional = true - -e9 = e:option(Value, "adb_whitelist", translate("Whitelist File"), - translate("Full path to the whitelist file.")) -e9.datatype = "file" -e9.default = "/etc/adblock/adblock.whitelist" -e9.optional = true - -e10 = e:option(Value, "adb_triggerdelay", translate("Trigger Delay"), - translate("Additional trigger delay in seconds before adblock processing begins.")) -e10.datatype = "range(1,60)" -e10.optional = true - -return m diff --git a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua deleted file mode 100644 index a3659eb469..0000000000 --- a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua +++ /dev/null @@ -1,51 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local uci = require("uci") -local adbinput = uci.get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist" - -if not nixio.fs.access(adbinput) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - m.reset = false - m.submit = false - return m -end - -if nixio.fs.stat(adbinput).size > 524288 then - m = SimpleForm("error", nil, - translate("The file size is too large for online editing in LuCI (> 512 KB). ") - .. translate("Please edit this file directly in a terminal session.")) - m.reset = false - m.submit = false - return m -end - -m = SimpleForm("input", nil) -m:append(Template("adblock/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translatef("This form allows you to modify the content of the adblock whitelist (%s).
", adbinput) - .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not.")) - -f = s:option(TextValue, "data") -f.datatype = "string" -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nixio.fs.readfile(adbinput) or "" -end - -function f.write(self, section, data) - return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm deleted file mode 100644 index 2233a15e31..0000000000 --- a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/logread.htm b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/logread.htm deleted file mode 100644 index 5e25a549c6..0000000000 --- a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/logread.htm +++ /dev/null @@ -1,14 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+header%> - -
-
-
<%:This form shows the syslog output, pre-filtered for adblock related messages only.%>
- -
-
-<%+footer%> diff --git a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/query.htm b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/query.htm deleted file mode 100644 index ce706e40aa..0000000000 --- a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/query.htm +++ /dev/null @@ -1,65 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+header%> - - - - -
-
-
-
<%:This form allows you to query active block lists for certain domains, e.g. for whitelisting.%>
-
- - -
-
-
-
-
- -
- -<%+footer%> diff --git a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm deleted file mode 100644 index 0221a75ed1..0000000000 --- a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+cbi/valueheader%> - - - -<%+cbi/valuefooter%> diff --git a/package/luci/applications/luci-app-adblock/po/it/adblock.po b/package/luci/applications/luci-app-adblock/po/it/adblock.po deleted file mode 100644 index af3414c997..0000000000 --- a/package/luci/applications/luci-app-adblock/po/it/adblock.po +++ /dev/null @@ -1,396 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 17/09/2017\n" -"Last-Translator: Bubu83 \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.3\n" -"Language: it\n" - -msgid "-------" -msgstr "" - -msgid "Adblock" -msgstr "Adblock" - -msgid "Adblock Logfile" -msgstr "Registro Adblock" - -msgid "Adblock Status" -msgstr "Status Adblock" - -msgid "Adblock Version" -msgstr "Versione Adblock" - -msgid "Additional trigger delay in seconds before adblock processing begins." -msgstr "Tempo addizionale in secondi di attesa prima che adblock si avvii." - -msgid "Advanced" -msgstr "Avanzato" - -msgid "Available blocklist sources." -msgstr "Fonti lista di blocco disponibili." - -msgid "Backup Directory" -msgstr "Directory del Backup" - -msgid "Backup Mode" -msgstr "" - -msgid "" -"Block access to all domains except those explicitly listed in the whitelist " -"file." -msgstr "" - -msgid "Blocklist Sources" -msgstr "Fonti lista di Blocco" - -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select too many lists - 5-6 should be sufficient!" -msgstr "" - -msgid "" -"Choose 'none' to disable automatic startups, 'timed' to use a classic " -"timeout (default 30 sec.) or select another trigger interface." -msgstr "" -"Scegli 'none' per disabilitare l'avvio automatico, 'timed' per usare un " -"classico timeout (default 30 sec.) o seleziona un'altra interfaccia di avvio." - -msgid "Collecting data..." -msgstr "Raccogliendo dati..." - -msgid "" -"Configuration of the adblock package to block ad/abuse domains by using DNS." -msgstr "" -"Configurazione del pacchetto adblock per bloccare domini pubblicità/abuso " -"usando i DNS." - -msgid "" -"Create compressed blocklist backups, they will be used in case of download " -"errors or during startup in backup mode." -msgstr "" - -msgid "DNS Backend (DNS Directory)" -msgstr "" - -msgid "DNS Directory" -msgstr "Directory DNS" - -msgid "Description" -msgstr "Descrizione" - -msgid "" -"Do not automatically update blocklists during startup, use blocklist backups " -"instead." -msgstr "" -"Non aggiornare automaticamente le liste durante l'avvio, usa invece i backup " -"della lista di blocco." - -msgid "Download Utility (SSL Library)" -msgstr "" - -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from here" -msgstr "" - -msgid "Edit Blacklist" -msgstr "Modifica Lista Nera" - -msgid "Edit Configuration" -msgstr "Modifica Configurazione" - -msgid "Edit Whitelist" -msgstr "Modifica Lista Bianca" - -msgid "Enable Adblock" -msgstr "Attiva Adblock" - -msgid "Enable Blocklist Backup" -msgstr "Attiva Backup Lista di Blocco" - -msgid "" -"Enable memory intense overall sort / duplicate removal on low memory devices " -"(< 64 MB free RAM)" -msgstr "" - -msgid "Enable verbose debug logging in case of any processing error." -msgstr "" -"Abilita il registro dettagliato in caso di qualsiasi errore di processo." - -msgid "Enabled" -msgstr "Abilitato" - -msgid "Extra Options" -msgstr "Opzioni Extra" - -msgid "" -"For SSL protected blocklist sources you need a suitable SSL library, e.g. " -"'libustream-ssl' or the wget 'built-in'." -msgstr "" -"Per le fonti delle liste protette da SSL hai bisogno di una libreria SSL " -"adatta, p.e. 'libustream-ssl' o wget 'built-in'." - -msgid "" -"For further information check the online " -"documentation" -msgstr "" - -msgid "Force Local DNS" -msgstr "Forza DNS Locale" - -msgid "Force Overall Sort" -msgstr "Forza Ordinamento Globale" - -msgid "Full path to the whitelist file." -msgstr "" - -msgid "Input file not found, please check your configuration." -msgstr "File di input non trovato, per favore controlla la tua configurazione." - -msgid "Invalid domain specified!" -msgstr "Dominio invalido specificato!" - -msgid "Last Run" -msgstr "Ultimo Avvio" - -msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.
" -msgstr "" -"Le selezioni degli URL delle liste e categorie Shallalist sono configurabili " -"nella sezione 'Avanzato'.
" - -msgid "" -"List of available network interfaces. Usually the startup will be triggered " -"by the 'wan' interface.
" -msgstr "" - -msgid "" -"List of supported DNS backends with their default list export directory.
" -msgstr "" -"Lista dei backend DNS supportati con la loro directory di default di esporto " -"della lista.
" - -msgid "Loading" -msgstr "Caricando" - -msgid "No" -msgstr "No" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "" -"Opzioni per ulteriori modifiche in caso che quelle di default non ti sono " -"adatte." - -msgid "Overall Domains" -msgstr "" - -msgid "Overview" -msgstr "Riassunto" - -msgid "" -"Please add only one domain per line. Comments introduced with '#' are " -"allowed - ip addresses, wildcards and regex are not." -msgstr "" -"Per favore aggiungi solo un dominio per linea. I commenti introdotti con '#' " -"sono consentiti - indirizzi ip , jolly e regex non lo sono." - -msgid "Please edit this file directly in a terminal session." -msgstr "" -"Per favore modifica questo file direttamente in una sessione al terminale." - -msgid "Please update your adblock config file to use this package.
" -msgstr "" - -msgid "Query" -msgstr "Interrogazione" - -msgid "Query domains" -msgstr "Interrogazione domini" - -msgid "Redirect all DNS queries from 'lan' zone to the local resolver." -msgstr "" -"Reindirizza tutte le richieste DNS dalla zona 'lan' al risolvitore locale." - -msgid "Resume" -msgstr "Riprendi" - -msgid "Runtime Information" -msgstr "Informazione di Runtime" - -msgid "SSL req." -msgstr "Ric. SSL" - -msgid "Save" -msgstr "Salva" - -msgid "Startup Trigger" -msgstr "Innesco d'Avvio" - -msgid "Suspend" -msgstr "Sospendi" - -msgid "Suspend / Resume Adblock" -msgstr "Sospendi / Riprendi Adblock" - -msgid "" -"Target directory for adblock backups. Please use only non-volatile disks, e." -"g. an external usb stick." -msgstr "" - -msgid "Target directory for the generated blocklist 'adb_list.overall'." -msgstr "Directory per la lista di blocco generata 'adb_list.overall'." - -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "" -"La grandezza del file è troppo grande per modificarla online in LuCI (> " -"512 KB)." - -msgid "" -"This form allows you to modify the content of the adblock blacklist (%s)." -"
" -msgstr "" -"Questo form ti consente di modificare il contenuto della lista nera di " -"adblock (%s).
" - -msgid "" -"This form allows you to modify the content of the adblock whitelist (%s)." -"
" -msgstr "" -"Questo form ti consente di modificare il contenuto della lista bianca di " -"adblock (%s).
" - -msgid "" -"This form allows you to modify the content of the main adblock configuration " -"file (/etc/config/adblock)." -msgstr "" -"Questo form ti consente di modificare il contenuto del file principale di " -"configurazione di adblock (/etc/config/adblock)." - -msgid "" -"This form allows you to query active block lists for certain domains, e.g. " -"for whitelisting." -msgstr "" -"Questo form ti consente di interrogare le liste di blocco attive per " -"determinati domini, p.e. per metterli nella lista bianca." - -msgid "" -"This form shows the syslog output, pre-filtered for adblock related messages " -"only." -msgstr "" -"Questo form mostra l'output del registro, prefiltrato per messaggi relativi " -"solo ad adblock." - -msgid "" -"To overwrite the default path use the 'DNS Directory' option in the extra " -"section below." -msgstr "" -"Per sovrascrivere il percorso di default usa l'opzione 'Directory DNS' nella " -"sezione aggiuntiva sotto." - -msgid "Trigger Delay" -msgstr "Ritardo Innesco" - -msgid "Verbose Debug Logging" -msgstr "Registro di Debug Dettagliato" - -msgid "View Logfile" -msgstr "Vedi Registro" - -msgid "Waiting for command to complete..." -msgstr "Aspettando che il comando venga completato..." - -msgid "Whitelist File" -msgstr "" - -msgid "Whitelist Mode" -msgstr "" - -msgid "Yes" -msgstr "Sì" - -msgid "disabled" -msgstr "disabilitato" - -msgid "enabled" -msgstr "abilitato" - -msgid "error" -msgstr "errore" - -msgid "n/a" -msgstr "n/d" - -msgid "paused" -msgstr "in pausa" - -#~ msgid "" -#~ "Caution: Please don't select big lists or many lists at once on low " -#~ "memory devices to prevent OOM exceptions!" -#~ msgstr "" -#~ "Attenzione: Per favore non selezionare grandi liste o molte liste alla " -#~ "volta su dispositivi con poca memoria per prevenire errori OOM!" - -#~ msgid "" -#~ "Create compressed blocklist backups, they will be used in case of " -#~ "download errors or during startup in manual mode." -#~ msgstr "" -#~ "Crea i backup compressi delle liste di blocco, saranno usati in caso di " -#~ "errori di download o durante l'avvio in modalità manuale." - -#~ msgid "" -#~ "Enable memory intense overall sort / duplicate removal on low memory " -#~ "devices (< 64 MB RAM)" -#~ msgstr "" -#~ "Attiva l'ordinamento globale / rimozione duplicati stressante per la " -#~ "memoria su dispositivi con poca memoria (< 64 MB RAM)" - -#~ msgid "" -#~ "For further information see online " -#~ "documentation" -#~ msgstr "" -#~ "Per ulteriori informazioni vedi " -#~ "documentazione online" - -#~ msgid "" -#~ "In OPKG use the '--force-maintainer' option to overwrite the pre-existing " -#~ "config file or download a fresh default config from here" -#~ msgstr "" -#~ "In OPKG usa l'opzione '--force-maintainer' per sovrascrivere il pre-" -#~ "esistente file di configurazione o scarica una nuova configurazione di " -#~ "default da qui" - -#~ msgid "" -#~ "List of available network interfaces. By default the startup will be " -#~ "triggered by the 'wan' interface.
" -#~ msgstr "" -#~ "Lista delle interfacce di rete disponibili. Per default l'avvio sarà " -#~ "innescato dall'interfaccia 'wan'.
" - -#~ msgid "Manual / Backup mode" -#~ msgstr "Modalità Manuale / Backup" - -#~ msgid "Overall Blocked Domains" -#~ msgstr "Totale Domini Bloccati" - -#~ msgid "Please update your adblock config file to use this package." -#~ msgstr "" -#~ "Per favore aggiorna il tuo file configurazione di adblock per usare " -#~ "questo pacchetto." - -#~ msgid "" -#~ "Target directory for adblock backups. Please use only non-volatile disks, " -#~ "no ram/tmpfs drives." -#~ msgstr "" -#~ "Directory per i backup di adblock. Per favore usa solo dischi non " -#~ "volatili, non dischi ram/tmpfs." diff --git a/package/luci/applications/luci-app-adblock/po/ja/adblock.po b/package/luci/applications/luci-app-adblock/po/ja/adblock.po deleted file mode 100644 index becef993fd..0000000000 --- a/package/luci/applications/luci-app-adblock/po/ja/adblock.po +++ /dev/null @@ -1,353 +0,0 @@ -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 \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.4\n" -"Language: ja\n" - -msgid "-------" -msgstr "(利用不可)" - -msgid "Adblock" -msgstr "Adblock" - -msgid "Adblock Logfile" -msgstr "Adblock ログファイル" - -msgid "Adblock Status" -msgstr "Adblock ステータス" - -msgid "Adblock Version" -msgstr "Adblock バージョン" - -msgid "Additional trigger delay in seconds before adblock processing begins." -msgstr "Adblock の処理が開始されるまでの、追加の遅延時間(秒)です。" - -msgid "Advanced" -msgstr "詳細設定" - -msgid "Available blocklist sources." -msgstr "利用可能なブロックリスト提供元です。" - -msgid "Backup Directory" -msgstr "バックアップ先 ディレクトリ" - -msgid "Backup Mode" -msgstr "バックアップ モード" - -msgid "" -"Block access to all domains except those explicitly listed in the whitelist " -"file." -msgstr "" -"ホワイトリストに列記されていない全ドメインへのアクセスをブロックします。" - -msgid "Blocklist Sources" -msgstr "ブロックリスト提供元" - -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select too many lists - 5-6 should be sufficient!" -msgstr "" -"警告: RAM の空き容量が 64MB に満たないメモリー容量の小さいデバイスでは、 " -"OutOfMemory (OOM) 例外を防ぐために、多くのリストを選択しないようにしてくださ" -"い。5 - 6個のリストで十分です。" - -msgid "" -"Choose 'none' to disable automatic startups, 'timed' to use a classic " -"timeout (default 30 sec.) or select another trigger interface." -msgstr "" -"自動スタートアップを無効にするには 'none' を、従来のタイムアウト(既定値: 30" -"秒)を使用するには 'timed' を選択してください。または、他のトリガとなるイン" -"ターフェースを選択してください。" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "" -"Configuration of the adblock package to block ad/abuse domains by using DNS." -msgstr "" -"DNS の利用によって広告/不正ドメインをブロックする、Adblock パッケージの設定で" -"す。" - -msgid "" -"Create compressed blocklist backups, they will be used in case of download " -"errors or during startup in backup mode." -msgstr "" -"圧縮されたブロックリストのバックアップを作成します。これは、リストのダウン" -"ロードがエラーの場合、またはバックアップ モードでサービスを起動した場合に使用" -"されます。" - -msgid "DNS Backend (DNS Directory)" -msgstr "DNS バックエンド(DNS ディレクトリ)" - -msgid "DNS Directory" -msgstr "DNS ディレクトリ" - -msgid "Description" -msgstr "説明" - -msgid "" -"Do not automatically update blocklists during startup, use blocklist backups " -"instead." -msgstr "" -"サービス起動時にブロックリストを自動的に更新せず、代わりにバックアップされた" -"ブロックリストを使用します。" - -msgid "Download Utility (SSL Library)" -msgstr "ダウンロード ユーティリティ(SSL ライブラリ)" - -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from here" -msgstr "" -"opkg でパッケージをインストールする際に '--force-maintainer' オプションを使用" -"して既存の設定ファイルを上書きするか、 ここ" -" からデフォルトの設定ファイルをダウンロードしてください。" - -msgid "Edit Blacklist" -msgstr "ブラックリストの編集" - -msgid "Edit Configuration" -msgstr "設定の編集" - -msgid "Edit Whitelist" -msgstr "ホワイトリストの編集" - -msgid "Enable Adblock" -msgstr "Adblock の有効化" - -msgid "Enable Blocklist Backup" -msgstr "ブロックリスト バックアップの有効化" - -msgid "" -"Enable memory intense overall sort / duplicate removal on low memory devices " -"(< 64 MB free RAM)" -msgstr "" -"メモリー容量の少ないデバイス(RAM 空き領域 64MB 未満)において、一時ファイル" -"内の全体的なソート及び重複の除去を有効にします。" - -msgid "Enable verbose debug logging in case of any processing error." -msgstr "" -"何らかの処理エラーが発生した場合に、詳細なデバッグ ログを有効にします。" - -msgid "Enabled" -msgstr "有効" - -msgid "Extra Options" -msgstr "拡張オプション" - -msgid "" -"For SSL protected blocklist sources you need a suitable SSL library, e.g. " -"'libustream-ssl' or the wget 'built-in'." -msgstr "" -"SSLで保護されているブロックリストの取得には、適切なSSL ライブラリが必要です。" -"例: 'libustream-ssl' または wget 'built-in'" - -msgid "" -"For further information check the online " -"documentation" -msgstr "" -"詳細な情報は オンライン ドキュメント を" -"確認してください。" - -msgid "Force Local DNS" -msgstr "ローカル DNS の強制" - -msgid "Force Overall Sort" -msgstr "全体ソートの強制" - -msgid "Full path to the whitelist file." -msgstr "ホワイトリスト ファイルへのフルパスです。" - -msgid "Input file not found, please check your configuration." -msgstr "入力ファイルが見つかりません。設定を確認してください。" - -msgid "Invalid domain specified!" -msgstr "無効なドメインが指定されています!" - -msgid "Last Run" -msgstr "最終実行" - -msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.
" -msgstr "" -"リストの URL 及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクション" -"で設定することができます。
" - -msgid "" -"List of available network interfaces. Usually the startup will be triggered " -"by the 'wan' interface.
" -msgstr "" -"利用可能なネットワーク インターフェースの一覧です。通常、 'wan' インター" -"フェースによりスタートアップがトリガされます。
" - -msgid "" -"List of supported DNS backends with their default list export directory.
" -msgstr "" -"サポートされる DNS バックエンドと、それぞれのデフォルトのリスト出力先ディレク" -"トリのリストです
" - -msgid "Loading" -msgstr "読込中" - -msgid "No" -msgstr "いいえ" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。" - -msgid "Overall Domains" -msgstr "全体のドメイン" - -msgid "Overview" -msgstr "概要" - -msgid "" -"Please add only one domain per line. Comments introduced with '#' are " -"allowed - ip addresses, wildcards and regex are not." -msgstr "" -"1行に1つのドメインを追加してください。'#' から始まるコメントを記述できます" -"が、IP アドレスやワイルドカード、正規表現を設定値として使用することはできませ" -"ん。" - -msgid "Please edit this file directly in a terminal session." -msgstr "ターミナル セッションで直接このファイルを編集してください。" - -msgid "Please update your adblock config file to use this package.
" -msgstr "" -"このパッケージを使用するには、既存の Adblock 設定ファイルを更新してください。" -"
" - -msgid "Query" -msgstr "検索" - -msgid "Query domains" -msgstr "ドメインの検索" - -msgid "Redirect all DNS queries from 'lan' zone to the local resolver." -msgstr "" -"'lan' ゾーンからの全 DNS クエリを、ローカル リゾルバにリダイレクトします。" - -msgid "Resume" -msgstr "再開" - -msgid "Runtime Information" -msgstr "実行情報" - -msgid "SSL req." -msgstr "SSL 必須" - -msgid "Save" -msgstr "保存" - -msgid "Startup Trigger" -msgstr "スタートアップ トリガ" - -msgid "Suspend" -msgstr "一時停止" - -msgid "Suspend / Resume Adblock" -msgstr "Adblock の一時停止 / 再開" - -msgid "" -"Target directory for adblock backups. Please use only non-volatile disks, e." -"g. an external usb stick." -msgstr "" -"Adblock バックアップの保存先ディレクトリです。 外部 USB フラッシュメモリなど" -"の不揮発性ドライブのみを使用してください。" - -msgid "Target directory for the generated blocklist 'adb_list.overall'." -msgstr "生成されたブロックリスト 'adb_list.overall' の保存先ディレクトリです。" - -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "" -"ファイル サイズが大きすぎる(512 KB超)ため、 LuCI 上でオンライン編集できませ" -"ん。" - -msgid "" -"This form allows you to modify the content of the adblock blacklist (%s)." -"
" -msgstr "" -"このフォームでは、Adblock ブラックリスト (%s) の内容を変更することができま" -"す。
" - -msgid "" -"This form allows you to modify the content of the adblock whitelist (%s)." -"
" -msgstr "" -"このフォームでは、Adblock ホワイトリスト (%s) の内容を変更することができま" -"す。
" - -msgid "" -"This form allows you to modify the content of the main adblock configuration " -"file (/etc/config/adblock)." -msgstr "" -"このフォームでは、メインのAdblock 設定ファイル (/etc/config/adblock) の内容を" -"変更することができます。" - -msgid "" -"This form allows you to query active block lists for certain domains, e.g. " -"for whitelisting." -msgstr "" -"このフォームでは、現在有効なリスト内で特定のドメインを検索することができま" -"す。例: ホワイトリスト内" - -msgid "" -"This form shows the syslog output, pre-filtered for adblock related messages " -"only." -msgstr "" -"このフォームには、システムログ内の Adblock に関連するメッセージのみが表示され" -"ます。" - -msgid "" -"To overwrite the default path use the 'DNS Directory' option in the extra " -"section below." -msgstr "" -"デフォルトのパスを上書きするには、下記拡張セクションの 'DNS ディレクトリ' オ" -"プションを使用します。" - -msgid "Trigger Delay" -msgstr "トリガ遅延" - -msgid "Verbose Debug Logging" -msgstr "詳細なデバッグ ログ" - -msgid "View Logfile" -msgstr "ログファイルを見る" - -msgid "Waiting for command to complete..." -msgstr "コマンド実行中です..." - -msgid "Whitelist File" -msgstr "ホワイトリスト ファイル" - -msgid "Whitelist Mode" -msgstr "ホワイトリスト モード" - -msgid "Yes" -msgstr "はい" - -msgid "disabled" -msgstr "無効" - -msgid "enabled" -msgstr "有効" - -msgid "error" -msgstr "エラー" - -msgid "n/a" -msgstr "利用不可" - -msgid "paused" -msgstr "一時停止" diff --git a/package/luci/applications/luci-app-adblock/po/pt-br/adblock.po b/package/luci/applications/luci-app-adblock/po/pt-br/adblock.po deleted file mode 100644 index f51791f48d..0000000000 --- a/package/luci/applications/luci-app-adblock/po/pt-br/adblock.po +++ /dev/null @@ -1,427 +0,0 @@ -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: Luís Gabriel Lima Silva \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "-------" -msgstr "" - -msgid "Adblock" -msgstr "Adblock" - -msgid "Adblock Logfile" -msgstr "Arquivo de log do Adblock" - -msgid "Adblock Status" -msgstr "" - -msgid "Adblock Version" -msgstr "Versão do Adblock" - -msgid "Additional trigger delay in seconds before adblock processing begins." -msgstr "" -"Atraso de gatilho adicional em segundos antes do processamento do adblock " -"começar." - -msgid "Advanced" -msgstr "Avançado" - -msgid "Available blocklist sources." -msgstr "Fontes de listas de bloqueio disponíveis." - -msgid "Backup Directory" -msgstr "Diretório da cópia de segurança" - -msgid "Backup Mode" -msgstr "" - -msgid "" -"Block access to all domains except those explicitly listed in the whitelist " -"file." -msgstr "" - -msgid "Blocklist Sources" -msgstr "Fontes de listas de bloqueio" - -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select too many lists - 5-6 should be sufficient!" -msgstr "" - -msgid "" -"Choose 'none' to disable automatic startups, 'timed' to use a classic " -"timeout (default 30 sec.) or select another trigger interface." -msgstr "" - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "" -"Configuration of the adblock package to block ad/abuse domains by using DNS." -msgstr "" -"Configuração do pacote adblock para bloquear, usando o DNS, domínios que " -"distribuem propagandas abusivas." - -msgid "" -"Create compressed blocklist backups, they will be used in case of download " -"errors or during startup in backup mode." -msgstr "" - -msgid "DNS Backend (DNS Directory)" -msgstr "" - -msgid "DNS Directory" -msgstr "" - -msgid "Description" -msgstr "Descrição" - -msgid "" -"Do not automatically update blocklists during startup, use blocklist backups " -"instead." -msgstr "" -"Não atualize as listas de bloqueio automaticamente durante o início, use o " -"backup das listas como alternativa." - -msgid "Download Utility (SSL Library)" -msgstr "Utilitário de Download (Biblioteca SSL)" - -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from here" -msgstr "" - -msgid "Edit Blacklist" -msgstr "Editar Lista de Bloqueio" - -msgid "Edit Configuration" -msgstr "Editar Configuração" - -msgid "Edit Whitelist" -msgstr "Editar Lista Permitida" - -msgid "Enable Adblock" -msgstr "Habilitar adblock" - -msgid "Enable Blocklist Backup" -msgstr "Habilitar cópia de segurança da lista de bloqueio" - -msgid "" -"Enable memory intense overall sort / duplicate removal on low memory devices " -"(< 64 MB free RAM)" -msgstr "" - -msgid "Enable verbose debug logging in case of any processing error." -msgstr "" - -msgid "Enabled" -msgstr "Habilitado" - -msgid "Extra Options" -msgstr "Opções adicionais" - -msgid "" -"For SSL protected blocklist sources you need a suitable SSL library, e.g. " -"'libustream-ssl' or the wget 'built-in'." -msgstr "" -"Para uma lista de bloqueio protegida por SSL você precisa de uma biblioteca " -"SSL adequada, e.x. 'libustream-ssl' ou o wget 'built-in'." - -msgid "" -"For further information check the online " -"documentation" -msgstr "" - -msgid "Force Local DNS" -msgstr "Force o DNS local" - -msgid "Force Overall Sort" -msgstr "Force Tipo Geral" - -msgid "Full path to the whitelist file." -msgstr "" - -msgid "Input file not found, please check your configuration." -msgstr "Arquivo de entrada não encontrado, por favor cheque sua configuração." - -msgid "Invalid domain specified!" -msgstr "Domínio especificado inválido!" - -msgid "Last Run" -msgstr "" - -msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.
" -msgstr "" - -msgid "" -"List of available network interfaces. Usually the startup will be triggered " -"by the 'wan' interface.
" -msgstr "" - -msgid "" -"List of supported DNS backends with their default list export directory.
" -msgstr "" - -msgid "Loading" -msgstr "Carregando" - -msgid "No" -msgstr "Não" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "" -"Opções para aprimoramentos adicionais caso as opções padrão não sejam " -"suficientes para você." - -msgid "Overall Domains" -msgstr "" - -msgid "Overview" -msgstr "Visão geral" - -msgid "" -"Please add only one domain per line. Comments introduced with '#' are " -"allowed - ip addresses, wildcards and regex are not." -msgstr "" - -msgid "Please edit this file directly in a terminal session." -msgstr "Por favor edite esse arquivo direto em uma sessão de terminal." - -msgid "Please update your adblock config file to use this package.
" -msgstr "" - -msgid "Query" -msgstr "Consulta" - -msgid "Query domains" -msgstr "Consulta de domínios" - -msgid "Redirect all DNS queries from 'lan' zone to the local resolver." -msgstr "" - -msgid "Resume" -msgstr "" - -msgid "Runtime Information" -msgstr "Informação de execução" - -msgid "SSL req." -msgstr "req. de SSL" - -msgid "Save" -msgstr "Salvar" - -msgid "Startup Trigger" -msgstr "" - -msgid "Suspend" -msgstr "" - -msgid "Suspend / Resume Adblock" -msgstr "Suspender / Resumir adblock" - -msgid "" -"Target directory for adblock backups. Please use only non-volatile disks, e." -"g. an external usb stick." -msgstr "" - -msgid "Target directory for the generated blocklist 'adb_list.overall'." -msgstr "" - -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "" -"O tamanho do arquivo é muito grande para edição online no LuCI (> 512 KB)." - -msgid "" -"This form allows you to modify the content of the adblock blacklist (%s)." -"
" -msgstr "" -"Esse formulário permite que você modifique o conteúdo das listas de bloqueio " -"do adblock (%s).
" - -msgid "" -"This form allows you to modify the content of the adblock whitelist (%s)." -"
" -msgstr "" -"Esse formulário permite que você modifique o conteúdo das listas de " -"permissão do adblock (%s).
" - -msgid "" -"This form allows you to modify the content of the main adblock configuration " -"file (/etc/config/adblock)." -msgstr "" -"Esse formulário permite que você modifique o conteúdo das do arquivo de " -"configuração principal (/etc/config/adblock)." - -msgid "" -"This form allows you to query active block lists for certain domains, e.g. " -"for whitelisting." -msgstr "" -"Esse formulário permite que você consulte listas de blocos ativos para " -"certos domínios, e.x. para listas de permissão." - -msgid "" -"This form shows the syslog output, pre-filtered for adblock related messages " -"only." -msgstr "" -"Esse formulário mostra a saída do syslog, pré-filtrado para mensagens do " -"adblock apenas." - -msgid "" -"To overwrite the default path use the 'DNS Directory' option in the extra " -"section below." -msgstr "" - -msgid "Trigger Delay" -msgstr "Atraso no gatilho" - -msgid "Verbose Debug Logging" -msgstr "" - -msgid "View Logfile" -msgstr "Ver arquivo de log" - -msgid "Waiting for command to complete..." -msgstr "Aguardando por comando para completar..." - -msgid "Whitelist File" -msgstr "" - -msgid "Whitelist Mode" -msgstr "" - -msgid "Yes" -msgstr "Sim" - -msgid "disabled" -msgstr "" - -msgid "enabled" -msgstr "" - -msgid "error" -msgstr "" - -msgid "n/a" -msgstr "n/d" - -msgid "paused" -msgstr "" - -#~ msgid "" -#~ "Create compressed blocklist backups, they will be used in case of " -#~ "download errors or during startup in manual mode." -#~ msgstr "" -#~ "Crie backups comprimidos das listas de bloqueio, eles serão usados em " -#~ "caso de erro dedownload ou durante o início em modo manual." - -#~ msgid "" -#~ "Enable memory intense overall sort / duplicate removal on low memory " -#~ "devices (< 64 MB RAM)" -#~ msgstr "" -#~ "Ativar tipo geral intenso de memória / duplicar remoção em dispositivos " -#~ "com pouca memória (< 64 MB RAM)" - -#~ msgid "" -#~ "For further information see online " -#~ "documentation" -#~ msgstr "" -#~ "Para outras informações veja a " -#~ "documentação online" - -#~ msgid "Manual / Backup mode" -#~ msgstr "Manual / Modo backup" - -#~ msgid "Blocked domains (overall)" -#~ msgstr "Domínios bloqueados (total)" - -#~ msgid "DNS backend" -#~ msgstr "Porta dos fundos de DNS" - -#~ msgid "Enable verbose debug logging" -#~ msgstr "Habilite registros detalhados para depuração" - -#~ msgid "Last rundate" -#~ msgstr "Última data de execução" - -#~ msgid "" -#~ "Note that list URLs and Shallalist category selections are configurable " -#~ "in the 'Advanced' section." -#~ msgstr "" -#~ "Observe que as URLs da lista e as seleções da categoria Shallalist são " -#~ "configuráveis na secção 'Avançada'." - -#~ msgid "Redirect all DNS queries to the local resolver." -#~ msgstr "Redirecione todas as consultas de DNS para o resolvedor local." - -#~ msgid "Restrict interface trigger to certain interface(s)" -#~ msgstr "Restingir o gatilho de interface para certas interface(s)" - -#~ msgid "Resume adblock" -#~ msgstr "Resumir adblock" - -#~ msgid "Status" -#~ msgstr "Estado" - -#~ msgid "active" -#~ msgstr "ativo" - -#~ msgid "no domains blocked" -#~ msgstr "nenhum domínio bloqueado" - -#~ msgid "suspended" -#~ msgstr "suspenso" - -#~ msgid "Backup options" -#~ msgstr "Opções da cópia de segurança" - -#~ msgid "" -#~ "). Note that list URLs and Shallalist category selections are not " -#~ "configurable via Luci." -#~ msgstr "" -#~ "). Note que a lista de URL e as seleções de categoria da Shallalist não " -#~ "são configuráveis pelo Luci." - -#~ msgid "Available blocklist sources (" -#~ msgstr "Fontes de listas de bloqueio disponíveis (" - -#~ msgid "" -#~ "File with whitelisted hosts/domains that are allowed despite being on a " -#~ "blocklist." -#~ msgstr "" -#~ "Arquivo com a lista branca dos equipamentos/domínios que serão " -#~ "autorizados mesmo estando na lista de bloqueio." - -#~ msgid "Global options" -#~ msgstr "Opções Globais" - -#~ msgid "Restrict reload trigger to certain interface(s)" -#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)" - -#~ msgid "" -#~ "Space separated list of wan interfaces that trigger reload action. To " -#~ "disable reload trigger set it to 'false'. Default: empty" -#~ msgstr "" -#~ "Lista das interfaces WAN, separadas por espaço, que podem disparar uma " -#~ "ação de recarga. Para desabilitar este gatilho, defina-o como 'false'. " -#~ "Padrão: em branco" - -#~ msgid "Whitelist file" -#~ msgstr "Arquivo da lista branca" - -#~ msgid "see list details" -#~ msgstr "veja os detalhes da lista" diff --git a/package/luci/applications/luci-app-adblock/po/sv/adblock.po b/package/luci/applications/luci-app-adblock/po/sv/adblock.po deleted file mode 100644 index 503c5f6ef7..0000000000 --- a/package/luci/applications/luci-app-adblock/po/sv/adblock.po +++ /dev/null @@ -1,390 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "-------" -msgstr "-------" - -msgid "Adblock" -msgstr "Adblock" - -msgid "Adblock Logfile" -msgstr "Adblock's loggfil" - -msgid "Adblock Status" -msgstr "Status för Adblock" - -msgid "Adblock Version" -msgstr "Version av Adblock" - -msgid "Additional trigger delay in seconds before adblock processing begins." -msgstr "" - -msgid "Advanced" -msgstr "Avancerat" - -msgid "Available blocklist sources." -msgstr "Tillgängliga källor för blockeringslistor" - -msgid "Backup Directory" -msgstr "Säkerhetskopiera mapp" - -msgid "Backup Mode" -msgstr "" - -msgid "" -"Block access to all domains except those explicitly listed in the whitelist " -"file." -msgstr "" - -msgid "Blocklist Sources" -msgstr "Källor för blockeringslistor" - -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select too many lists - 5-6 should be sufficient!" -msgstr "" - -msgid "" -"Choose 'none' to disable automatic startups, 'timed' to use a classic " -"timeout (default 30 sec.) or select another trigger interface." -msgstr "" -"Välj 'inga' för att stänga av automatiska uppstarter, 'tidsinställd för att " -"använda ett klassiskt avbrott (30 sek. är standard) eller välj ett annat " -"utlösande gränssnitt." - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "" -"Configuration of the adblock package to block ad/abuse domains by using DNS." -msgstr "" -"Konfiguration av paketet adblock för att blockera annons/otillåtna domäner " -"genom att använda DNS." - -msgid "" -"Create compressed blocklist backups, they will be used in case of download " -"errors or during startup in backup mode." -msgstr "" - -msgid "DNS Backend (DNS Directory)" -msgstr "DNS-bakände (DNS-mapp)" - -msgid "DNS Directory" -msgstr "DNS-mapp" - -msgid "Description" -msgstr "Beskrivning" - -msgid "" -"Do not automatically update blocklists during startup, use blocklist backups " -"instead." -msgstr "" -"Uppdatera inte automatiskt blockeringlistor vid uppstarten, använd " -"säkerhetskopierade blockeringslistor istället." - -msgid "Download Utility (SSL Library)" -msgstr "Nerladdningsprogram (SSL-bibliotek)" - -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from here" -msgstr "" - -msgid "Edit Blacklist" -msgstr "Redigera svartlista" - -msgid "Edit Configuration" -msgstr "Redigerar konfigurationen" - -msgid "Edit Whitelist" -msgstr "Redigera vitlista" - -msgid "Enable Adblock" -msgstr "Aktivera adblock" - -msgid "Enable Blocklist Backup" -msgstr "Aktivera säkerhetskopiering av blockeringslistan" - -msgid "" -"Enable memory intense overall sort / duplicate removal on low memory devices " -"(< 64 MB free RAM)" -msgstr "" - -msgid "Enable verbose debug logging in case of any processing error." -msgstr "" - -msgid "Enabled" -msgstr "Aktiverad" - -msgid "Extra Options" -msgstr "Extra alternativ" - -msgid "" -"For SSL protected blocklist sources you need a suitable SSL library, e.g. " -"'libustream-ssl' or the wget 'built-in'." -msgstr "" - -msgid "" -"For further information check the online " -"documentation" -msgstr "" - -msgid "Force Local DNS" -msgstr "Tvinga lokal DNS" - -msgid "Force Overall Sort" -msgstr "" - -msgid "Full path to the whitelist file." -msgstr "" - -msgid "Input file not found, please check your configuration." -msgstr "" -"Inmatningsfilen kunde inte hittas, var vänlig kontrollera din konfiguration." - -msgid "Invalid domain specified!" -msgstr "Ogiltig domän angiven!" - -msgid "Last Run" -msgstr "Kördes senast" - -msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.
" -msgstr "" - -msgid "" -"List of available network interfaces. Usually the startup will be triggered " -"by the 'wan' interface.
" -msgstr "" - -msgid "" -"List of supported DNS backends with their default list export directory.
" -msgstr "" - -msgid "Loading" -msgstr "Laddar" - -msgid "No" -msgstr "Nej" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "" - -msgid "Overall Domains" -msgstr "" - -msgid "Overview" -msgstr "Översikt" - -msgid "" -"Please add only one domain per line. Comments introduced with '#' are " -"allowed - ip addresses, wildcards and regex are not." -msgstr "" - -msgid "Please edit this file directly in a terminal session." -msgstr "Vänligen redigera den här filen direkt i en terminal-session." - -msgid "Please update your adblock config file to use this package.
" -msgstr "" - -msgid "Query" -msgstr "Fråga" - -msgid "Query domains" -msgstr "Fråga efter domäner" - -msgid "Redirect all DNS queries from 'lan' zone to the local resolver." -msgstr "" - -msgid "Resume" -msgstr "Återuppta" - -msgid "Runtime Information" -msgstr "Information om körtid" - -msgid "SSL req." -msgstr "SSL-rek." - -msgid "Save" -msgstr "Spara" - -msgid "Startup Trigger" -msgstr "Uppstartslösare" - -msgid "Suspend" -msgstr "Stäng av" - -msgid "Suspend / Resume Adblock" -msgstr "Upphäv / Återuppta adblock" - -msgid "" -"Target directory for adblock backups. Please use only non-volatile disks, e." -"g. an external usb stick." -msgstr "" - -msgid "Target directory for the generated blocklist 'adb_list.overall'." -msgstr "" - -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "Filstorleken är för stor för online-redigering i LuCi (> 512 KB)." - -msgid "" -"This form allows you to modify the content of the adblock blacklist (%s)." -"
" -msgstr "" -"Det här formuläret tillåter dig att förändra innehållet i adblock's " -"svartlista (%s).
" - -msgid "" -"This form allows you to modify the content of the adblock whitelist (%s)." -"
" -msgstr "" -"Det här formuläret tillåter dig att förändra innehållet i adblock's vitlista " -"(%s).
" - -msgid "" -"This form allows you to modify the content of the main adblock configuration " -"file (/etc/config/adblock)." -msgstr "" -"Det här formuläret tillåter dig att förändra innehållet i adblock's " -"huvudsakliga konfigurations fil (/etc/config/adblock)." - -msgid "" -"This form allows you to query active block lists for certain domains, e.g. " -"for whitelisting." -msgstr "" - -msgid "" -"This form shows the syslog output, pre-filtered for adblock related messages " -"only." -msgstr "" - -msgid "" -"To overwrite the default path use the 'DNS Directory' option in the extra " -"section below." -msgstr "" - -msgid "Trigger Delay" -msgstr "" - -msgid "Verbose Debug Logging" -msgstr "" - -msgid "View Logfile" -msgstr "Visa loggfil" - -msgid "Waiting for command to complete..." -msgstr "Väntar på att kommandot ska slutföras..." - -msgid "Whitelist File" -msgstr "" - -msgid "Whitelist Mode" -msgstr "" - -msgid "Yes" -msgstr "Ja" - -msgid "disabled" -msgstr "inaktiverad" - -msgid "enabled" -msgstr "aktiverad" - -msgid "error" -msgstr "fel" - -msgid "n/a" -msgstr "n/a" - -msgid "paused" -msgstr "pausad" - -#~ msgid "" -#~ "Caution: Please don't select big lists or many lists at once on low " -#~ "memory devices to prevent OOM exceptions!" -#~ msgstr "" -#~ "Försiktig: Vänligen välj inte stora listor eller många listor på samma " -#~ "gång för enheter med lite minne för att undvika OOM-undantag!" - -#~ msgid "" -#~ "For further information see online " -#~ "documentation" -#~ msgstr "" -#~ "För mer information se dokumentationen " -#~ "på internet" - -#~ msgid "Manual / Backup mode" -#~ msgstr "Manuell / Säkerhetskopieringsläge" - -#~ msgid "Please update your adblock config file to use this package." -#~ msgstr "" -#~ "Vänligen uppdatera din adblock's konfigurationsfil till att använda det " -#~ "här paketet." - -#~ msgid "Blocked domains (overall)" -#~ msgstr "Blockerade domäner (övergripande)" - -#~ msgid "DNS backend" -#~ msgstr "Bakände för DNS" - -#~ msgid "Enable verbose debug logging" -#~ msgstr "Aktivera utförlig loggning för avlusning" - -#~ msgid "Last rundate" -#~ msgstr "Senaste kördatum" - -#~ msgid "Redirect all DNS queries to the local resolver." -#~ msgstr "Dirigera om alla DNS-förfrågningar till den lokala " - -#~ msgid "Resume adblock" -#~ msgstr "Återuppta adblock" - -#~ msgid "Status" -#~ msgstr "Status" - -#~ msgid "Suspend adblock" -#~ msgstr "Upphäv adblock" - -#~ msgid "active" -#~ msgstr "aktiv" - -#~ msgid "no domains blocked" -#~ msgstr "inga domäner blockerades" - -#~ msgid "suspended" -#~ msgstr "upphävd" - -#~ msgid "." -#~ msgstr "." - -#~ msgid "For further information" -#~ msgstr "För mer information" - -#~ msgid "Backup options" -#~ msgstr "Alternativ för säkerhetskopiering" - -#~ msgid "Available blocklist sources (" -#~ msgstr "Tillgängliga källor för blockeringslistor (" - -#~ msgid "Global options" -#~ msgstr "Globala alternativ" - -#~ msgid "Whitelist file" -#~ 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" diff --git a/package/luci/applications/luci-app-adblock/po/templates/adblock.pot b/package/luci/applications/luci-app-adblock/po/templates/adblock.pot deleted file mode 100644 index 9698333515..0000000000 --- a/package/luci/applications/luci-app-adblock/po/templates/adblock.pot +++ /dev/null @@ -1,291 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "-------" -msgstr "" - -msgid "Adblock" -msgstr "" - -msgid "Adblock Logfile" -msgstr "" - -msgid "Adblock Status" -msgstr "" - -msgid "Adblock Version" -msgstr "" - -msgid "Additional trigger delay in seconds before adblock processing begins." -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Available blocklist sources." -msgstr "" - -msgid "Backup Directory" -msgstr "" - -msgid "Backup Mode" -msgstr "" - -msgid "" -"Block access to all domains except those explicitly listed in the whitelist " -"file." -msgstr "" - -msgid "Blocklist Sources" -msgstr "" - -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select too many lists - 5-6 should be sufficient!" -msgstr "" - -msgid "" -"Choose 'none' to disable automatic startups, 'timed' to use a classic " -"timeout (default 30 sec.) or select another trigger interface." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configuration of the adblock package to block ad/abuse domains by using DNS." -msgstr "" - -msgid "" -"Create compressed blocklist backups, they will be used in case of download " -"errors or during startup in backup mode." -msgstr "" - -msgid "DNS Backend (DNS Directory)" -msgstr "" - -msgid "DNS Directory" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "" -"Do not automatically update blocklists during startup, use blocklist backups " -"instead." -msgstr "" - -msgid "Download Utility (SSL Library)" -msgstr "" - -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from here" -msgstr "" - -msgid "Edit Blacklist" -msgstr "" - -msgid "Edit Configuration" -msgstr "" - -msgid "Edit Whitelist" -msgstr "" - -msgid "Enable Adblock" -msgstr "" - -msgid "Enable Blocklist Backup" -msgstr "" - -msgid "" -"Enable memory intense overall sort / duplicate removal on low memory devices " -"(< 64 MB free RAM)" -msgstr "" - -msgid "Enable verbose debug logging in case of any processing error." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Extra Options" -msgstr "" - -msgid "" -"For SSL protected blocklist sources you need a suitable SSL library, e.g. " -"'libustream-ssl' or the wget 'built-in'." -msgstr "" - -msgid "" -"For further information check the online " -"documentation" -msgstr "" - -msgid "Force Local DNS" -msgstr "" - -msgid "Force Overall Sort" -msgstr "" - -msgid "Full path to the whitelist file." -msgstr "" - -msgid "Input file not found, please check your configuration." -msgstr "" - -msgid "Invalid domain specified!" -msgstr "" - -msgid "Last Run" -msgstr "" - -msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.
" -msgstr "" - -msgid "" -"List of available network interfaces. Usually the startup will be triggered " -"by the 'wan' interface.
" -msgstr "" - -msgid "" -"List of supported DNS backends with their default list export directory.
" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "No" -msgstr "" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "" - -msgid "Overall Domains" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "" -"Please add only one domain per line. Comments introduced with '#' are " -"allowed - ip addresses, wildcards and regex are not." -msgstr "" - -msgid "Please edit this file directly in a terminal session." -msgstr "" - -msgid "Please update your adblock config file to use this package.
" -msgstr "" - -msgid "Query" -msgstr "" - -msgid "Query domains" -msgstr "" - -msgid "Redirect all DNS queries from 'lan' zone to the local resolver." -msgstr "" - -msgid "Resume" -msgstr "" - -msgid "Runtime Information" -msgstr "" - -msgid "SSL req." -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Startup Trigger" -msgstr "" - -msgid "Suspend" -msgstr "" - -msgid "Suspend / Resume Adblock" -msgstr "" - -msgid "" -"Target directory for adblock backups. Please use only non-volatile disks, e." -"g. an external usb stick." -msgstr "" - -msgid "Target directory for the generated blocklist 'adb_list.overall'." -msgstr "" - -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "" - -msgid "" -"This form allows you to modify the content of the adblock blacklist (%s)." -"
" -msgstr "" - -msgid "" -"This form allows you to modify the content of the adblock whitelist (%s)." -"
" -msgstr "" - -msgid "" -"This form allows you to modify the content of the main adblock configuration " -"file (/etc/config/adblock)." -msgstr "" - -msgid "" -"This form allows you to query active block lists for certain domains, e.g. " -"for whitelisting." -msgstr "" - -msgid "" -"This form shows the syslog output, pre-filtered for adblock related messages " -"only." -msgstr "" - -msgid "" -"To overwrite the default path use the 'DNS Directory' option in the extra " -"section below." -msgstr "" - -msgid "Trigger Delay" -msgstr "" - -msgid "Verbose Debug Logging" -msgstr "" - -msgid "View Logfile" -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Whitelist File" -msgstr "" - -msgid "Whitelist Mode" -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "disabled" -msgstr "" - -msgid "enabled" -msgstr "" - -msgid "error" -msgstr "" - -msgid "n/a" -msgstr "" - -msgid "paused" -msgstr "" diff --git a/package/luci/applications/luci-app-adblock/po/zh-cn/adblock.po b/package/luci/applications/luci-app-adblock/po/zh-cn/adblock.po deleted file mode 100644 index 08032cab04..0000000000 --- a/package/luci/applications/luci-app-adblock/po/zh-cn/adblock.po +++ /dev/null @@ -1,454 +0,0 @@ -# liushuyu , 2017. -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-10-28 16:06+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_CN\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Gtranslator 2.91.7\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "-------" -msgstr "-------" - -msgid "Adblock" -msgstr "Adblock" - -msgid "Adblock Logfile" -msgstr "Adblock 日志文件" - -msgid "Adblock Status" -msgstr "Adblock 状态" - -msgid "Adblock Version" -msgstr "Adblock 版本" - -msgid "Additional trigger delay in seconds before adblock processing begins." -msgstr "触发 Adblock 开始处理前的额外延迟(以秒为单位)。" - -msgid "Advanced" -msgstr "高级" - -msgid "Available blocklist sources." -msgstr "可用的 blocklist 来源。" - -msgid "Backup Directory" -msgstr "备份目录" - -msgid "Backup Mode" -msgstr "" - -msgid "" -"Block access to all domains except those explicitly listed in the whitelist " -"file." -msgstr "" - -msgid "Blocklist Sources" -msgstr "拦截列表来源" - -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select too many lists - 5-6 should be sufficient!" -msgstr "" - -msgid "" -"Choose 'none' to disable automatic startups, 'timed' to use a classic " -"timeout (default 30 sec.) or select another trigger interface." -msgstr "" -"选择“none”以禁用自动启动,“timed”以使用默认的超时设定(默认 30 秒),或选择另" -"一个触发接口。" - -msgid "Collecting data..." -msgstr "正在收集数据..." - -msgid "" -"Configuration of the adblock package to block ad/abuse domains by using DNS." -msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。" - -msgid "" -"Create compressed blocklist backups, they will be used in case of download " -"errors or during startup in backup mode." -msgstr "" - -msgid "DNS Backend (DNS Directory)" -msgstr "DNS 后端(DNS 目录)" - -msgid "DNS Directory" -msgstr "DNS 目录" - -msgid "Description" -msgstr "描述" - -msgid "" -"Do not automatically update blocklists during startup, use blocklist backups " -"instead." -msgstr "启动期间不要自动更新 blocklists,改用 blocklists 的备份。" - -msgid "Download Utility (SSL Library)" -msgstr "下载实用程序(SSL 库)" - -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from here" -msgstr "" - -msgid "Edit Blacklist" -msgstr "编辑黑名单" - -msgid "Edit Configuration" -msgstr "编辑设置" - -msgid "Edit Whitelist" -msgstr "编辑白名单" - -msgid "Enable Adblock" -msgstr "启用 Adblock" - -msgid "Enable Blocklist Backup" -msgstr "启用 Blocklist 备份" - -msgid "" -"Enable memory intense overall sort / duplicate removal on low memory devices " -"(< 64 MB free RAM)" -msgstr "" - -msgid "Enable verbose debug logging in case of any processing error." -msgstr "在出现任何处理错误的情况下启用详细调试日志记录。" - -msgid "Enabled" -msgstr "已启用" - -msgid "Extra Options" -msgstr "额外选项" - -msgid "" -"For SSL protected blocklist sources you need a suitable SSL library, e.g. " -"'libustream-ssl' or the wget 'built-in'." -msgstr "" -"对于 SSL 保护的 blocklist 源,您需要一个合适的 SSL 库,例如'libustream-" -"ssl'或 wget'built-in'。" - -msgid "" -"For further information check the online " -"documentation" -msgstr "" - -msgid "Force Local DNS" -msgstr "强制本地 DNS" - -msgid "Force Overall Sort" -msgstr "强制整体排序" - -msgid "Full path to the whitelist file." -msgstr "" - -msgid "Input file not found, please check your configuration." -msgstr "输入文件未找到,请检查您的配置。" - -msgid "Invalid domain specified!" -msgstr "无效域名!" - -msgid "Last Run" -msgstr "最后运行" - -msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.
" -msgstr "列表 URL 和 Shallalist 类别选择可在“高级”选项卡中配置。
" - -msgid "" -"List of available network interfaces. Usually the startup will be triggered " -"by the 'wan' interface.
" -msgstr "" - -msgid "" -"List of supported DNS backends with their default list export directory.
" -msgstr "支持的 DNS 后端列表及其默认列表导出目录。
" - -msgid "Loading" -msgstr "加载中" - -msgid "No" -msgstr "否" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "在默认设置并不适合您时的额外选项。" - -msgid "Overall Domains" -msgstr "" - -msgid "Overview" -msgstr "总览" - -msgid "" -"Please add only one domain per line. Comments introduced with '#' are " -"allowed - ip addresses, wildcards and regex are not." -msgstr "" -"请每行只添加一个域。允许使用'#'开头的注释 - ip 地址、通配符和正则表达式都不" -"允许。" - -msgid "Please edit this file directly in a terminal session." -msgstr "请在终端会话中直接编辑此文件。" - -msgid "Please update your adblock config file to use this package.
" -msgstr "" - -msgid "Query" -msgstr "查询" - -msgid "Query domains" -msgstr "查询域" - -msgid "Redirect all DNS queries from 'lan' zone to the local resolver." -msgstr "将所有 DNS 查询从“lan”区域重定向到本地解析器。" - -msgid "Resume" -msgstr "恢复" - -msgid "Runtime Information" -msgstr "运行信息" - -msgid "SSL req." -msgstr "SSL 要求" - -msgid "Save" -msgstr "保存" - -msgid "Startup Trigger" -msgstr "启动触发器" - -msgid "Suspend" -msgstr "暂停" - -msgid "Suspend / Resume Adblock" -msgstr "暂停/恢复 Adblock" - -msgid "" -"Target directory for adblock backups. Please use only non-volatile disks, e." -"g. an external usb stick." -msgstr "" - -msgid "Target directory for the generated blocklist 'adb_list.overall'." -msgstr "生成的 blocklist 'adb_list.overall'的目标目录。" - -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "文件大小太大,无法在 LuCI(> 512 KB)中进行在线编辑。" - -msgid "" -"This form allows you to modify the content of the adblock blacklist (%s)." -"
" -msgstr "此表单允许您修改 adblock 黑名单(%s)的内容。
" - -msgid "" -"This form allows you to modify the content of the adblock whitelist (%s)." -"
" -msgstr "此表单允许您修改 adblock 白名单(%s)的内容。
" - -msgid "" -"This form allows you to modify the content of the main adblock configuration " -"file (/etc/config/adblock)." -msgstr "此表单允许您修改主要 adblock 配置文件(/etc/config/adblock)的内容。" - -msgid "" -"This form allows you to query active block lists for certain domains, e.g. " -"for whitelisting." -msgstr "此表单允许您查询某些域的活动块列表,例如用于列出白名单。" - -msgid "" -"This form shows the syslog output, pre-filtered for adblock related messages " -"only." -msgstr "此表单显示系统日志输出,仅针对 adblock 相关的消息进行了预筛选。" - -msgid "" -"To overwrite the default path use the 'DNS Directory' option in the extra " -"section below." -msgstr "要覆盖默认路径,请使用下面额外部分中的“DNS 目录”选项。" - -msgid "Trigger Delay" -msgstr "触发延迟" - -msgid "Verbose Debug Logging" -msgstr "详细的调试记录" - -msgid "View Logfile" -msgstr "查看日志文件" - -msgid "Waiting for command to complete..." -msgstr "正在执行命令..." - -msgid "Whitelist File" -msgstr "" - -msgid "Whitelist Mode" -msgstr "" - -msgid "Yes" -msgstr "是" - -msgid "disabled" -msgstr "已禁用" - -msgid "enabled" -msgstr "已启用" - -msgid "error" -msgstr "错误" - -msgid "n/a" -msgstr "不可用" - -msgid "paused" -msgstr "已暂停" - -#~ msgid "" -#~ "Caution: Please don't select big lists or many lists at once on low " -#~ "memory devices to prevent OOM exceptions!" -#~ msgstr "" -#~ "注意:请勿在内存较小的设备上选择过长的列表或同时选择多个列表,以防止 OOM " -#~ "异常!" - -#~ msgid "" -#~ "Create compressed blocklist backups, they will be used in case of " -#~ "download errors or during startup in manual mode." -#~ msgstr "创建压缩的 blocklist 备份,它们将在下载错误或手动模式下启动时使用。" - -#~ msgid "" -#~ "Enable memory intense overall sort / duplicate removal on low memory " -#~ "devices (< 64 MB RAM)" -#~ msgstr "在低内存设备上启用耗用内存的整体排序/重复规则删除(<64 MB RAM)" - -#~ msgid "" -#~ "For further information see online " -#~ "documentation" -#~ msgstr "有关更多信息,请参阅在线文档" - -#~ msgid "" -#~ "In OPKG use the '--force-maintainer' option to overwrite the pre-existing " -#~ "config file or download a fresh default config from here" -#~ msgstr "" -#~ "在 OPKG 中,使用“--force-maintainer”选项覆盖预先存在的配置文件,或从此处下载新的默认配置" - -#~ msgid "" -#~ "List of available network interfaces. By default the startup will be " -#~ "triggered by the 'wan' interface.
" -#~ msgstr "可用网络接口列表。默认情况下,将由“wan”界面触发启动。
" - -#~ msgid "Manual / Backup mode" -#~ msgstr "手动/备份模式" - -#~ msgid "Overall Blocked Domains" -#~ msgstr "整体封锁域名" - -#~ msgid "Please update your adblock config file to use this package." -#~ msgstr "请更新您的 adblock 配置文件以使用此软件包。" - -#~ msgid "" -#~ "Target directory for adblock backups. Please use only non-volatile disks, " -#~ "no ram/tmpfs drives." -#~ msgstr "" -#~ "adblock 备份的目标目录。请仅使用非易失性磁盘,不使用 ram/tmpfs 驱动器。" - -#~ msgid "DNS backend" -#~ msgstr "DNS 后端" - -#~ msgid "Enable verbose debug logging" -#~ msgstr "启用详细调试输出" - -#~ msgid "Resume adblock" -#~ msgstr "恢复 Adblock" - -#~ msgid "Status" -#~ msgstr "状态" - -#~ msgid "Suspend adblock" -#~ msgstr "暂停 Adblock" - -#~ msgid "active" -#~ msgstr "已启用" - -#~ msgid "no domains blocked" -#~ msgstr "没有被拦截的域名" - -#~ msgid "suspended" -#~ msgstr "已暂停" - -#~ msgid "." -#~ msgstr "." - -#~ msgid "For further information" -#~ msgstr "更多信息" - -#~ msgid "see online documentation" -#~ msgstr "查看在线文档" - -#~ msgid "Backup options" -#~ msgstr "备份选项" - -#~ msgid "" -#~ "). Note that list URLs and Shallalist category selections are not " -#~ "configurable via Luci." -#~ msgstr ")。需要注意的是列表URL和列表类别选项无法通过Luci设置。" - -#~ msgid "Available blocklist sources (" -#~ msgstr "可用拦截列表来源(" - -#~ msgid "" -#~ "File with whitelisted hosts/domains that are allowed despite being on a " -#~ "blocklist." -#~ msgstr "允许的主机/域名列表" - -#~ msgid "Global options" -#~ msgstr "全局选项" - -#~ msgid "Whitelist file" -#~ msgstr "白名单文件" - -#~ msgid "see list details" -#~ msgstr "查看列表详情" - -#~ msgid "Count" -#~ msgstr "数量" - -#~ msgid "IPv4 blackhole ip address" -#~ msgstr "IPv4禁止列表" - -#~ msgid "IPv6 blackhole ip address" -#~ msgstr "IPv6禁止列表" - -#~ msgid "List date/state" -#~ msgstr "列表日期/状态" - -#~ msgid "Name of the logical lan interface" -#~ msgstr "LAN接口名称" - -#~ msgid "Port of the adblock uhttpd instance" -#~ msgstr "Adblock uhttpd端口" - -#~ 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服务器。" diff --git a/package/luci/applications/luci-app-adblock/po/zh-tw/adblock.po b/package/luci/applications/luci-app-adblock/po/zh-tw/adblock.po deleted file mode 100644 index f838fa0432..0000000000 --- a/package/luci/applications/luci-app-adblock/po/zh-tw/adblock.po +++ /dev/null @@ -1,455 +0,0 @@ -# liushuyu , 2017. -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-10-28 16:06+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Gtranslator 2.91.7\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "-------" -msgstr "-------" - -msgid "Adblock" -msgstr "Adblock" - -msgid "Adblock Logfile" -msgstr "Adblock 日誌檔案" - -msgid "Adblock Status" -msgstr "Adblock 狀態" - -msgid "Adblock Version" -msgstr "Adblock 版本" - -msgid "Additional trigger delay in seconds before adblock processing begins." -msgstr "觸發 Adblock 開始處理前的額外延遲(以秒為單位)。" - -msgid "Advanced" -msgstr "高階" - -msgid "Available blocklist sources." -msgstr "可用的 blocklist 來源。" - -msgid "Backup Directory" -msgstr "備份目錄" - -msgid "Backup Mode" -msgstr "" - -msgid "" -"Block access to all domains except those explicitly listed in the whitelist " -"file." -msgstr "" - -msgid "Blocklist Sources" -msgstr "攔截列表來源" - -msgid "" -"Caution: To prevent OOM exceptions on low memory devices with less than 64 " -"MB free RAM, please do not select too many lists - 5-6 should be sufficient!" -msgstr "" - -msgid "" -"Choose 'none' to disable automatic startups, 'timed' to use a classic " -"timeout (default 30 sec.) or select another trigger interface." -msgstr "" -"選擇“none”以禁用自動啟動,“timed”以使用預設的超時設定(預設 30 秒),或選擇另" -"一個觸發介面。" - -msgid "Collecting data..." -msgstr "正在收集資料..." - -msgid "" -"Configuration of the adblock package to block ad/abuse domains by using DNS." -msgstr "Adblock 配置工具,通過 DNS 來攔截廣告和阻止域名。" - -msgid "" -"Create compressed blocklist backups, they will be used in case of download " -"errors or during startup in backup mode." -msgstr "" - -msgid "DNS Backend (DNS Directory)" -msgstr "DNS 後端(DNS 目錄)" - -msgid "DNS Directory" -msgstr "DNS 目錄" - -msgid "Description" -msgstr "描述" - -msgid "" -"Do not automatically update blocklists during startup, use blocklist backups " -"instead." -msgstr "啟動期間不要自動更新 blocklists,改用 blocklists 的備份。" - -msgid "Download Utility (SSL Library)" -msgstr "下載實用程式(SSL 庫)" - -msgid "" -"During opkg package installation use the '--force-maintainer' option to " -"overwrite the pre-existing config file or download a fresh default config " -"from here" -msgstr "" - -msgid "Edit Blacklist" -msgstr "編輯黑名單" - -msgid "Edit Configuration" -msgstr "編輯設定" - -msgid "Edit Whitelist" -msgstr "編輯白名單" - -msgid "Enable Adblock" -msgstr "啟用 Adblock" - -msgid "Enable Blocklist Backup" -msgstr "啟用 Blocklist 備份" - -msgid "" -"Enable memory intense overall sort / duplicate removal on low memory devices " -"(< 64 MB free RAM)" -msgstr "" - -msgid "Enable verbose debug logging in case of any processing error." -msgstr "在出現任何處理錯誤的情況下啟用詳細除錯日誌記錄。" - -msgid "Enabled" -msgstr "已啟用" - -msgid "Extra Options" -msgstr "額外選項" - -msgid "" -"For SSL protected blocklist sources you need a suitable SSL library, e.g. " -"'libustream-ssl' or the wget 'built-in'." -msgstr "" -"對於 SSL 保護的 blocklist 源,您需要一個合適的 SSL 庫,例如'libustream-" -"ssl'或 wget'built-in'。" - -msgid "" -"For further information check the online " -"documentation" -msgstr "" - -msgid "Force Local DNS" -msgstr "強制本地 DNS" - -msgid "Force Overall Sort" -msgstr "強制整體排序" - -msgid "Full path to the whitelist file." -msgstr "" - -msgid "Input file not found, please check your configuration." -msgstr "輸入檔案未找到,請檢查您的配置。" - -msgid "Invalid domain specified!" -msgstr "無效域名!" - -msgid "Last Run" -msgstr "最後執行" - -msgid "" -"List URLs and Shallalist category selections are configurable in the " -"'Advanced' section.
" -msgstr "列表 URL 和 Shallalist 類別選擇可在“高階”選項卡中配置。
" - -msgid "" -"List of available network interfaces. Usually the startup will be triggered " -"by the 'wan' interface.
" -msgstr "" - -msgid "" -"List of supported DNS backends with their default list export directory.
" -msgstr "支援的 DNS 後端列表及其預設列表匯出目錄。
" - -msgid "Loading" -msgstr "載入中" - -msgid "No" -msgstr "否" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "在預設設定並不適合您時的額外選項。" - -msgid "Overall Domains" -msgstr "" - -msgid "Overview" -msgstr "總覽" - -msgid "" -"Please add only one domain per line. Comments introduced with '#' are " -"allowed - ip addresses, wildcards and regex are not." -msgstr "" -"請每行只新增一個域。允許使用'#'開頭的註釋 - ip 位址、萬用字元和正則表示式都" -"不允許。" - -msgid "Please edit this file directly in a terminal session." -msgstr "請在終端會話中直接編輯此檔案。" - -msgid "Please update your adblock config file to use this package.
" -msgstr "" - -msgid "Query" -msgstr "查詢" - -msgid "Query domains" -msgstr "查詢域" - -msgid "Redirect all DNS queries from 'lan' zone to the local resolver." -msgstr "將所有 DNS 查詢從“lan”區域重定向到本地解析器。" - -msgid "Resume" -msgstr "恢復" - -msgid "Runtime Information" -msgstr "執行資訊" - -msgid "SSL req." -msgstr "SSL 要求" - -msgid "Save" -msgstr "儲存" - -msgid "Startup Trigger" -msgstr "啟動觸發器" - -msgid "Suspend" -msgstr "暫停" - -msgid "Suspend / Resume Adblock" -msgstr "暫停/恢復 Adblock" - -msgid "" -"Target directory for adblock backups. Please use only non-volatile disks, e." -"g. an external usb stick." -msgstr "" - -msgid "Target directory for the generated blocklist 'adb_list.overall'." -msgstr "生成的 blocklist 'adb_list.overall'的目標目錄。" - -msgid "The file size is too large for online editing in LuCI (> 512 KB)." -msgstr "檔案大小太大,無法在 LuCI(> 512 KB)中進行線上編輯。" - -msgid "" -"This form allows you to modify the content of the adblock blacklist (%s)." -"
" -msgstr "此表單允許您修改 adblock 黑名單(%s)的內容。
" - -msgid "" -"This form allows you to modify the content of the adblock whitelist (%s)." -"
" -msgstr "此表單允許您修改 adblock 白名單(%s)的內容。
" - -msgid "" -"This form allows you to modify the content of the main adblock configuration " -"file (/etc/config/adblock)." -msgstr "此表單允許您修改主要 adblock 配置檔案(/etc/config/adblock)的內容。" - -msgid "" -"This form allows you to query active block lists for certain domains, e.g. " -"for whitelisting." -msgstr "此表單允許您查詢某些域的活動塊列表,例如用於列出白名單。" - -msgid "" -"This form shows the syslog output, pre-filtered for adblock related messages " -"only." -msgstr "此表單顯示系統日誌輸出,僅針對 adblock 相關的訊息進行了預篩選。" - -msgid "" -"To overwrite the default path use the 'DNS Directory' option in the extra " -"section below." -msgstr "要覆蓋預設路徑,請使用下面額外部分中的“DNS 目錄”選項。" - -msgid "Trigger Delay" -msgstr "觸發延遲" - -msgid "Verbose Debug Logging" -msgstr "詳細的除錯記錄" - -msgid "View Logfile" -msgstr "檢視日誌檔案" - -msgid "Waiting for command to complete..." -msgstr "正在執行命令..." - -msgid "Whitelist File" -msgstr "" - -msgid "Whitelist Mode" -msgstr "" - -msgid "Yes" -msgstr "是" - -msgid "disabled" -msgstr "已禁用" - -msgid "enabled" -msgstr "已啟用" - -msgid "error" -msgstr "錯誤" - -msgid "n/a" -msgstr "不可用" - -msgid "paused" -msgstr "已暫停" - -#~ msgid "" -#~ "Caution: Please don't select big lists or many lists at once on low " -#~ "memory devices to prevent OOM exceptions!" -#~ msgstr "" -#~ "注意:請勿在記憶體較小的裝置上選擇過長的列表或同時選擇多個列表,以防止 " -#~ "OOM 異常!" - -#~ msgid "" -#~ "Create compressed blocklist backups, they will be used in case of " -#~ "download errors or during startup in manual mode." -#~ msgstr "建立壓縮的 blocklist 備份,它們將在下載錯誤或手動模式下啟動時使用。" - -#~ msgid "" -#~ "Enable memory intense overall sort / duplicate removal on low memory " -#~ "devices (< 64 MB RAM)" -#~ msgstr "" -#~ "在低記憶體裝置上啟用耗用記憶體的整體排序/重複規則刪除(<64 MB RAM)" - -#~ msgid "" -#~ "For further information see online " -#~ "documentation" -#~ msgstr "有關更多資訊,請參閱線上文件" - -#~ msgid "" -#~ "In OPKG use the '--force-maintainer' option to overwrite the pre-existing " -#~ "config file or download a fresh default config from here" -#~ msgstr "" -#~ "在 OPKG 中,使用“--force-maintainer”選項覆蓋預先存在的配置檔案,或從此處下載新的預設配置" - -#~ msgid "" -#~ "List of available network interfaces. By default the startup will be " -#~ "triggered by the 'wan' interface.
" -#~ msgstr "可用網路介面列表。預設情況下,將由“wan”介面觸發啟動。
" - -#~ msgid "Manual / Backup mode" -#~ msgstr "手動/備份模式" - -#~ msgid "Overall Blocked Domains" -#~ msgstr "整體封鎖域名" - -#~ msgid "Please update your adblock config file to use this package." -#~ msgstr "請更新您的 adblock 配置檔案以使用此軟體包。" - -#~ msgid "" -#~ "Target directory for adblock backups. Please use only non-volatile disks, " -#~ "no ram/tmpfs drives." -#~ msgstr "" -#~ "adblock 備份的目標目錄。請僅使用非易失性磁碟,不使用 ram/tmpfs 驅動器。" - -#~ msgid "DNS backend" -#~ msgstr "DNS 後端" - -#~ msgid "Enable verbose debug logging" -#~ msgstr "啟用詳細除錯輸出" - -#~ msgid "Resume adblock" -#~ msgstr "恢復 Adblock" - -#~ msgid "Status" -#~ msgstr "狀態" - -#~ msgid "Suspend adblock" -#~ msgstr "暫停 Adblock" - -#~ msgid "active" -#~ msgstr "已啟用" - -#~ msgid "no domains blocked" -#~ msgstr "沒有被攔截的域名" - -#~ msgid "suspended" -#~ msgstr "已暫停" - -#~ msgid "." -#~ msgstr "." - -#~ msgid "For further information" -#~ msgstr "更多資訊" - -#~ msgid "see online documentation" -#~ msgstr "檢視線上文件" - -#~ msgid "Backup options" -#~ msgstr "備份選項" - -#~ msgid "" -#~ "). Note that list URLs and Shallalist category selections are not " -#~ "configurable via Luci." -#~ msgstr ")。需要注意的是列表URL和列表類別選項無法通過Luci設定。" - -#~ msgid "Available blocklist sources (" -#~ msgstr "可用攔截列表來源(" - -#~ msgid "" -#~ "File with whitelisted hosts/domains that are allowed despite being on a " -#~ "blocklist." -#~ msgstr "允許的主機/域名列表" - -#~ msgid "Global options" -#~ msgstr "全域性選項" - -#~ msgid "Whitelist file" -#~ msgstr "白名單檔案" - -#~ msgid "see list details" -#~ msgstr "檢視列表詳情" - -#~ msgid "Count" -#~ msgstr "數量" - -#~ msgid "IPv4 blackhole ip address" -#~ msgstr "IPv4禁止列表" - -#~ msgid "IPv6 blackhole ip address" -#~ msgstr "IPv6禁止列表" - -#~ msgid "List date/state" -#~ msgstr "列表日期/狀態" - -#~ msgid "Name of the logical lan interface" -#~ msgstr "LAN介面名稱" - -#~ msgid "Port of the adblock uhttpd instance" -#~ msgstr "Adblock uhttpd埠" - -#~ 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伺服器。" diff --git a/package/luci/applications/luci-app-adblock/root/etc/uci-defaults/40_luci-adblock b/package/luci/applications/luci-app-adblock/root/etc/uci-defaults/40_luci-adblock deleted file mode 100755 index 1f7fb1c0fb..0000000000 --- a/package/luci/applications/luci-app-adblock/root/etc/uci-defaults/40_luci-adblock +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@adblock[-1] - add ucitrack adblock - set ucitrack.@adblock[-1].init=adblock - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-advanced-reboot/Makefile b/package/luci/applications/luci-app-advanced-reboot/Makefile deleted file mode 100644 index 3a886eb8de..0000000000 --- a/package/luci/applications/luci-app-advanced-reboot/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2017 Stan Grishin (stangri@melmac.net) -# This is free software, licensed under the GNU General Public License v3. - -include $(TOPDIR)/rules.mk - -PKG_LICENSE:=GPL-3.0+ -PKG_MAINTAINER:=Stan Grishin - -LUCI_TITLE:=Advanced Linksys Reboot Web UI -LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys routers to\ - an altnerative partition. Also provides Web UI to shut down (power off) your device. Supported dual-partition\ - routers are listed at https://github.com/stangri/openwrt-luci/blob/luci-app-advanced-reboot/applications/luci-app-advanced-reboot/README.md - -LUCI_DEPENDS:=+luci -LUCI_PKGARCH:=all -PKG_RELEASE:=23 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-advanced-reboot/README.md b/package/luci/applications/luci-app-advanced-reboot/README.md deleted file mode 100644 index ee87a00020..0000000000 --- a/package/luci/applications/luci-app-advanced-reboot/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Advanced Reboot Web UI (luci-app-advanced-reboot) - -## Description -This package allows you to reboot to an alternative partition on supported (dual-partition) routers and to power off (power down) your OpenWrt/LEDE Project device. - -## Supported Devices -Currently supported dual-partition devices include: -- Linksys WRT1200AC -- Linksys WRT1900AC -- Linksys WRT1900ACv2 -- Linksys WRT1900ACS -- Linksys WRT3200ACM -- Linksys E4200v2 -- Linksys EA4500 -- Linksys EA8500 - -If you're interested in having your device supported, please post in [LEDE Project Forum Support Thread](https://forum.lede-project.org/t/web-ui-to-reboot-to-another-partition-dual-partition-routers/3423). - -## Screenshot (luci-app-advanced-reboot) -![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/luci-app-advanced-reboot/screenshot01.png "screenshot") - -## How to install -Install ```luci-app-advanced-reboot``` from Web UI or connect to your router via ssh and run the following commands: -```sh -opkg update -opkg install luci-app-advanced-reboot -``` - -## Notes/Known Issues -- When you reboot to a different partition, your current settings (WiFi SSID/password, etc.) will not apply to a different partition. Different partitions might have completely different settings and even firmware. -- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock Linksys firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, loosing all the settings. -- Some devices allow you to trigger reboot to alternative partition by interrupting boot 3 times in a row (by resetting/switching off the device or pulling power). As these methods might be different for different devices, do your own homework. - -## Thanks -I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman) and [@jpstyves](https://github.com/jpstyves) it wouldn't have been possible. diff --git a/package/luci/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua b/package/luci/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua deleted file mode 100644 index 2b55217b8e..0000000000 --- a/package/luci/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua +++ /dev/null @@ -1,120 +0,0 @@ --- Copyright 2017 Stan Grishin --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.advanced_reboot", package.seeall) - --- device, board_name, part1, part2, offset, env_var_1, value_1_1, value_1_2, env_var_2, value_2_1, value_2_2 -devices = { - {"Linksys WRT1200AC", "armada-385-linksys-caiman", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, - {"Linksys WRT1900AC", "armada-xp-linksys-mamba", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, - {"Linksys WRT1900ACv2", "armada-385-linksys-cobra", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, - {"Linksys WRT1900ACS", "armada-385-linksys-shelby", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, - {"Linksys WRT3200ACM", "armada-385-linksys-rango", "mtd5", "mtd7", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, - {"Linksys E4200v2/EA4500", "linksys-viper", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"}, - {"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2} -} - -board_name = luci.util.trim(luci.sys.exec("cat /tmp/sysinfo/board_name")) -for i=1, #devices do - if board_name and devices[i][2] == board_name then - device_name = devices[i][1] - partition_one_mtd = devices[i][3] or nil - partition_two_mtd = devices[i][4] or nil - partition_skip = devices[i][5] or nil - boot_envvar1 = devices[i][6] or nil - boot_envvar1_partition_one = tonumber(devices[i][7]) or nil - boot_envvar1_partition_two = tonumber(devices[i][8]) or nil - boot_envvar2 = devices[i][9] or nil - boot_envvar2_partition_one = devices[i][10] or nil - boot_envvar2_partition_two = devices[i][11] or nil - if partition_one_mtd and partition_skip then - partition_one_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_one_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null")) - n, partition_one_version = string.match(partition_one_label, '(Linux)-([%d|.]+)') - end - if partition_two_mtd and partition_skip then - partition_two_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_two_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null")) - n, partition_two_version = string.match(partition_two_label, '(Linux)-([%d|.]+)') - end - if string.find(partition_one_label, "LEDE") then partition_one_os = "LEDE" end - if string.find(partition_one_label, "OpenWrt") then partition_one_os = "OpenWrt" end - if string.find(partition_one_label, "Linksys") then partition_one_os = "Linksys" end - if string.find(partition_two_label, "LEDE") then partition_two_os = "LEDE" end - if string.find(partition_two_label, "OpenWrt") then partition_two_os = "OpenWrt" end - if string.find(partition_two_label, "Linksys") then partition_two_os = "Linksys" end - if not partition_one_os then partition_one_os = "Unknown" end - if not partition_two_os then partition_two_os = "Unknown" end - if partition_one_os and partition_one_version then partition_one_os = partition_one_os .. " (Linux " .. partition_one_version .. ")" end - if partition_two_os and partition_two_version then partition_two_os = partition_two_os .. " (Linux " .. partition_two_version .. ")" end - if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then - current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) - other_partition = current_partition == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one - end - end -end - -function index() - entry({"admin", "system", "advanced_reboot"}, template("advanced_reboot/advanced_reboot"), _("Advanced Reboot"), 90) - entry({"admin", "system", "advanced_reboot", "reboot"}, post("action_reboot")) --- if device_name then entry({"admin", "system", "advanced_reboot", "altreboot"}, post("action_altreboot")) end - entry({"admin", "system", "advanced_reboot", "alternative_reboot"}, post("action_altreboot")) - entry({"admin", "system", "advanced_reboot", "power_off"}, post("action_poweroff")) -end - -function action_reboot() - luci.template.render("admin_system/applyreboot", { - title = luci.i18n.translate("Rebooting..."), - msg = luci.i18n.translate("The system is rebooting now.
DO NOT POWER OFF THE DEVICE!
Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), - addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1" - }) - luci.sys.reboot() -end - -function action_altreboot() - if luci.http.formvalue("cancel") then - luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot')) - return - end - local step = tonumber(luci.http.formvalue("step") or 1) - if step == 1 then - if device_name and nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then - luci.template.render("advanced_reboot/alternative_reboot",{}) - else - luci.template.render("advanced_reboot/advanced_reboot",{}) - end - elseif step == 2 then - luci.template.render("admin_system/applyreboot", { - title = luci.i18n.translate("Rebooting..."), - msg = luci.i18n.translate("The system is rebooting to an alternative partition now.
DO NOT POWER OFF THE DEVICE!
Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), - addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1" - }) - if boot_envvar1 then env1 = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) end - if boot_envvar2 then env2 = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2)) end - if env1 and env1 == boot_envvar1_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_two) end - if env1 and env1 == boot_envvar1_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_one) end - if env2 and env2 == boot_envvar2_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_two .. "'") end - if env2 and env2 == boot_envvar2_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_one .. "'") end - luci.sys.reboot() - end -end - -function action_poweroff() - if luci.http.formvalue("cancel") then - luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot')) - return - end - local step = tonumber(luci.http.formvalue("step") or 1) - if step == 1 then - if nixio.fs.access("/sbin/poweroff") then - luci.template.render("advanced_reboot/power_off",{}) - else - luci.template.render("advanced_reboot/advanced_reboot",{}) - end - elseif step == 2 then - luci.template.render("admin_system/applyreboot", { - title = luci.i18n.translate("Shutting down..."), - msg = luci.i18n.translate("The system is shutting down now.
DO NOT POWER OFF THE DEVICE!
It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), - addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1" - }) - luci.sys.call("/sbin/poweroff") - end -end diff --git a/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm b/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm deleted file mode 100644 index 206d250543..0000000000 --- a/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm +++ /dev/null @@ -1,92 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Copyright 2017 Stan Grishin - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

<%:Advanced Reboot%>

-
- -<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%> -

<%:Warning: There are unsaved changes that will get lost on reboot!%>

-<%- end -%> - -<%- if device_name then -%> -
- <%=device_name%><%: Partitions%> - - - - - - - - - - - - - - - - - - - -
<%:Partition%><%:Status%><%:Firmware/OS (Kernel)%><%:Action%>
- <%=boot_envvar1_partition_one%> - - <%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%> - - <%=partition_one_os%> - - <%- if boot_envvar1_partition_one == current_partition then -%> -
- - -
- <%- else -%> -
- - -
- <%- end -%> -
- <%=boot_envvar1_partition_two%> - - <%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%> - - <%=partition_two_os%> - - <%- if boot_envvar1_partition_two == current_partition then -%> -
- - -
- <%- else -%> -
- - -
- <%- end -%> -
-
-<%- else -%> -

<%:Warning: This system does not have two partitions!%>

-<%- end -%> - -
- -<%- if nixio.fs.access("/sbin/poweroff") then -%> -
- - -
-<%- else -%> -

<%:Warning: This system does not support powering off!%>

-<%- end -%> - -<%+footer%> diff --git a/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm b/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm deleted file mode 100644 index 6325934094..0000000000 --- a/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm +++ /dev/null @@ -1,29 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2009 Jo-Philipp Wich - Copyright 2017 Stan Grishin - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

<%:Reboot Device to an Alternative Partition%> - <%:Confirm%>

-

- <%_ WARNING: An alternative partition might have its own settings and completely different firmware.

- As your network configuration and WiFi SSID/password on alternative partition might be different, - you might have to adjust your computer settings to be able to access your device once it reboots.

- Please also be aware that alternative partition firmware might not provide an easy way to switch active partition - and boot back to the currently active partition.

- Click "Proceed" below to reboot device to an alternative partition. %> -

- -
-
- - - - -
-
- -<%+footer%> diff --git a/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm b/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm deleted file mode 100644 index 0ddea11e65..0000000000 --- a/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm +++ /dev/null @@ -1,25 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2009 Jo-Philipp Wich - Copyright 2017 Stan Grishin - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

<%:Power Off Device%> - <%:Confirm%>

-

- <%_ WARNING: Power off might result in a reboot on a device which doesn't support power off.

- Click "Proceed" below to power off your device. %> -

- -
-
- - - - -
-
- -<%+footer%> diff --git a/package/luci/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po b/package/luci/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po deleted file mode 100644 index 20d77cbcf7..0000000000 --- a/package/luci/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po +++ /dev/null @@ -1,109 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Action" -msgstr "Åtgärd" - -msgid "Advanced Reboot" -msgstr "Avancerad omstart" - -msgid "Alternative" -msgstr "Alternativ" - -msgid "Cancel" -msgstr "Avbryt" - -msgid "Confirm" -msgstr "Bekräfta" - -msgid "Current" -msgstr "Nuvarande" - -msgid "Firmware/OS (Kernel)" -msgstr "Inre mjukvara/OS (Kärna)" - -msgid "Partition" -msgstr "Partition" - -msgid "Partitions" -msgstr "Partitioner" - -msgid "Perform power off..." -msgstr "Utför avstängning..." - -msgid "Power Off Device" -msgstr "Stäng av enhet" - -msgid "Proceed" -msgstr "Fortsätt" - -msgid "Reboot Device to an Alternative Partition" -msgstr "Starta om enheten till en alternativ partition" - -msgid "Reboot to alternative partition..." -msgstr "Starta om till alternativ partition..." - -msgid "Reboot to current partition" -msgstr "Starta om till nuvarande partition" - -msgid "Rebooting..." -msgstr "Startar om..." - -msgid "Shutting down..." -msgstr "Stänger av..." - -msgid "Status" -msgstr "Status" - -msgid "" -"The system is rebooting now.
DO NOT POWER OFF THE DEVICE!
Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The system is rebooting to an alternative partition now.
DO NOT POWER " -"OFF THE DEVICE!
Wait a few minutes before you try to reconnect. It " -"might be necessary to renew the address of your computer to reach the device " -"again, depending on your settings." -msgstr "" - -msgid "" -"The system is shutting down now.
DO NOT POWER OFF THE DEVICE!
It " -"might be necessary to renew the address of your computer to reach the device " -"again, depending on your settings." -msgstr "" -"Systemet stänger ner nu.
STÄNG INTE AV ENHETEN!
Beroende på dina " -"inställningar så kan det vara nödvändigt att förnya din dators adress för " -"att nå enheten igen." - -msgid "" -"WARNING: An alternative partition might have its own settings and completely " -"different firmware.

As your network configuration and WiFi SSID/" -"password on alternative partition might be different, you might have to " -"adjust your computer settings to be able to access your device once it " -"reboots.

Please also be aware that alternative partition " -"firmware might not provide an easy way to switch active partition and boot " -"back to the currently active partition.

Click \"Proceed\" below " -"to reboot device to an alternative partition." -msgstr "" - -msgid "" -"WARNING: Power off might result in a reboot on a device which doesn't " -"support power off.

Click \"Proceed\" below to power off your " -"device." -msgstr "" -"VARNING: Att stänga av kan resultera i en omstart i en enhet som inte har " -"stöd för avstängning.

Klicka på \"Fortsätt\" nedanför för att " -"stänga av din enhet." - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" -"Varning: Det finns osparade ändringar som kommer att förloras vid omstart!" - -msgid "Warning: This system does not have two partitions!" -msgstr "Varning: Det här systemet har inte två partitioner!" - -msgid "Warning: This system does not support powering off!" -msgstr "Varning: Det här systemet har inte stöd för avstängning!" diff --git a/package/luci/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot b/package/luci/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot deleted file mode 100644 index 9c810892c2..0000000000 --- a/package/luci/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot +++ /dev/null @@ -1,102 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Action" -msgstr "" - -msgid "Advanced Reboot" -msgstr "" - -msgid "Alternative" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Confirm" -msgstr "" - -msgid "Current" -msgstr "" - -msgid "Firmware/OS (Kernel)" -msgstr "" - -msgid "Partition" -msgstr "" - -msgid "Partitions" -msgstr "" - -msgid "Perform power off..." -msgstr "" - -msgid "Power Off Device" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Reboot Device to an Alternative Partition" -msgstr "" - -msgid "Reboot to alternative partition..." -msgstr "" - -msgid "Reboot to current partition" -msgstr "" - -msgid "Rebooting..." -msgstr "" - -msgid "Shutting down..." -msgstr "" - -msgid "Status" -msgstr "" - -msgid "" -"The system is rebooting now.
DO NOT POWER OFF THE DEVICE!
Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The system is rebooting to an alternative partition now.
DO NOT POWER " -"OFF THE DEVICE!
Wait a few minutes before you try to reconnect. It " -"might be necessary to renew the address of your computer to reach the device " -"again, depending on your settings." -msgstr "" - -msgid "" -"The system is shutting down now.
DO NOT POWER OFF THE DEVICE!
It " -"might be necessary to renew the address of your computer to reach the device " -"again, depending on your settings." -msgstr "" - -msgid "" -"WARNING: An alternative partition might have its own settings and completely " -"different firmware.

As your network configuration and WiFi SSID/" -"password on alternative partition might be different, you might have to " -"adjust your computer settings to be able to access your device once it " -"reboots.

Please also be aware that alternative partition " -"firmware might not provide an easy way to switch active partition and boot " -"back to the currently active partition.

Click \"Proceed\" below " -"to reboot device to an alternative partition." -msgstr "" - -msgid "" -"WARNING: Power off might result in a reboot on a device which doesn't " -"support power off.

Click \"Proceed\" below to power off your " -"device." -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "Warning: This system does not have two partitions!" -msgstr "" - -msgid "Warning: This system does not support powering off!" -msgstr "" diff --git a/package/luci/applications/luci-app-ahcp/Makefile b/package/luci/applications/luci-app-ahcp/Makefile deleted file mode 100644 index bb4d4158d0..0000000000 --- a/package/luci/applications/luci-app-ahcp/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for AHCPd -LUCI_DEPENDS:=+ahcpd - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-ahcp/luasrc/controller/ahcp.lua b/package/luci/applications/luci-app-ahcp/luasrc/controller/ahcp.lua deleted file mode 100644 index e97da558b5..0000000000 --- a/package/luci/applications/luci-app-ahcp/luasrc/controller/ahcp.lua +++ /dev/null @@ -1,49 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.ahcp", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/ahcpd") then - return - end - - entry({"admin", "network", "ahcpd"}, cbi("ahcp"), _("AHCP Server"), 90) - entry({"admin", "network", "ahcpd", "status"}, call("ahcp_status")) -end - -function ahcp_status() - local nfs = require "nixio.fs" - local uci = require "luci.model.uci".cursor() - local lsd = uci:get_first("ahcpd", "ahcpd", "lease_dir") or "/var/lib/leases" - local idf = uci:get_first("ahcpd", "ahcpd", "id_file") or "/var/lib/ahcpd-unique-id" - - local rv = { - uid = "00:00:00:00:00:00:00:00", - leases = { } - } - - idf = nfs.readfile(idf) - if idf and #idf == 8 then - rv.uid = "%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X" %{ idf:byte(1, 8) } - end - - local itr = nfs.dir(lsd) - if itr then - local addr - for addr in itr do - if addr:match("^%d+%.%d+%.%d+%.%d+$") then - local s = nfs.stat(lsd .. "/" .. addr) - rv.leases[#rv.leases+1] = { - addr = addr, - age = s and (os.time() - s.mtime) or 0 - } - end - end - end - - table.sort(rv.leases, function(a, b) return a.age < b.age end) - - luci.http.prepare_content("application/json") - luci.http.write_json(rv) -end diff --git a/package/luci/applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua b/package/luci/applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua deleted file mode 100644 index 30897ebf1d..0000000000 --- a/package/luci/applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua +++ /dev/null @@ -1,110 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("ahcpd", translate("AHCP Server"), translate("AHCP is an autoconfiguration protocol " .. - "for IPv6 and dual-stack IPv6/IPv4 networks designed to be used in place of router " .. - "discovery or DHCP on networks where it is difficult or impossible to configure a " .. - "server within every link-layer broadcast domain, for example mobile ad-hoc networks.")) - - -m:section(SimpleSection).template = "ahcp_status" - -s = m:section(TypedSection, "ahcpd") -s:tab("general", translate("General Setup")) -s:tab("advanced", translate("Advanced Settings")) -s.addremove = false -s.anonymous = true - - -mode = s:taboption("general", ListValue, "mode", translate("Operation mode")) -mode:value("server", translate("Server")) -mode:value("forwarder", translate("Forwarder")) - -net = s:taboption("general", Value, "interface", translate("Served interfaces")) -net.template = "cbi/network_netlist" -net.widget = "checkbox" -net.nocreate = true - -function net.cfgvalue(self, section) - return m.uci:get("ahcpd", section, "interface") -end - -pfx = s:taboption("general", DynamicList, "prefix", translate("Announced prefixes"), - translate("Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation")) -pfx.optional = true -pfx.datatype = "ipaddr" -pfx:depends("mode", "server") - -nss = s:taboption("general", DynamicList, "name_server", translate("Announced DNS servers"), - translate("Specifies the announced IPv4 and IPv6 name servers")) -nss.optional = true -nss.datatype = "ipaddr" -nss:depends("mode", "server") - -ntp = s:taboption("general", DynamicList, "ntp_server", translate("Announced NTP servers"), - translate("Specifies the announced IPv4 and IPv6 NTP servers")) -ntp.optional = true -ntp.datatype = "ipaddr" -ntp:depends("mode", "server") - -mca = s:taboption("general", Value, "multicast_address", translate("Multicast address")) -mca.optional = true -mca.placeholder = "ff02::cca6:c0f9:e182:5359" -mca.datatype = "ip6addr" - -port = s:taboption("general", Value, "port", translate("Port")) -port.optional = true -port.placeholder = 5359 -port.datatype = "port" - -fam = s:taboption("general", ListValue, "_family", translate("Protocol family")) -fam:value("", translate("IPv4 and IPv6")) -fam:value("ipv4", translate("IPv4 only")) -fam:value("ipv6", translate("IPv6 only")) - -function fam.cfgvalue(self, section) - local v4 = m.uci:get_bool("ahcpd", section, "ipv4_only") - local v6 = m.uci:get_bool("ahcpd", section, "ipv6_only") - if v4 then - return "ipv4" - elseif v6 then - return "ipv6" - end - return "" -end - -function fam.write(self, section, value) - if value == "ipv4" then - m.uci:set("ahcpd", section, "ipv4_only", "true") - m.uci:delete("ahcpd", section, "ipv6_only") - elseif value == "ipv6" then - m.uci:set("ahcpd", section, "ipv6_only", "true") - m.uci:delete("ahcpd", section, "ipv4_only") - end -end - -function fam.remove(self, section) - m.uci:delete("ahcpd", section, "ipv4_only") - m.uci:delete("ahcpd", section, "ipv6_only") -end - -ltime = s:taboption("general", Value, "lease_time", translate("Lease validity time")) -ltime.optional = true -ltime.placeholder = 3666 -ltime.datatype = "uinteger" - - -ld = s:taboption("advanced", Value, "lease_dir", translate("Lease directory")) -ld.datatype = "directory" -ld.placeholder = "/var/lib/leases" - -id = s:taboption("advanced", Value, "id_file", translate("Unique ID file")) ---id.datatype = "file" -id.placeholder = "/var/lib/ahcpd-unique-id" - -log = s:taboption("advanced", Value, "log_file", translate("Log file")) ---log.datatype = "file" -log.placeholder = "/var/log/ahcpd.log" - - -return m diff --git a/package/luci/applications/luci-app-ahcp/luasrc/view/admin_status/index/ahcp.htm b/package/luci/applications/luci-app-ahcp/luasrc/view/admin_status/index/ahcp.htm deleted file mode 100644 index ef4cfca56a..0000000000 --- a/package/luci/applications/luci-app-ahcp/luasrc/view/admin_status/index/ahcp.htm +++ /dev/null @@ -1 +0,0 @@ -<%+ahcp_status%> diff --git a/package/luci/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm b/package/luci/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm deleted file mode 100644 index 946828953e..0000000000 --- a/package/luci/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm +++ /dev/null @@ -1,53 +0,0 @@ - - -
- <%:Active AHCP Leases%> -

- - - - - - - - -
<%:Address%><%:Age%>

<%:Collecting data...%>
-
diff --git a/package/luci/applications/luci-app-ahcp/po/ca/ahcp.po b/package/luci/applications/luci-app-ahcp/po/ca/ahcp.po deleted file mode 100644 index 89108fd78c..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/ca/ahcp.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-02 21:34+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "Servidor AHCP" - -# Minor misspelling corrections -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP és un protocol de configuració automàtica per IPv6 i xarxes de pila " -"dual IPv6/IPv4 dissenyat per fer servir en lloc del descobriment de rutes o " -"DHCP en xarxes on es difícil o impossible configurar un servidor dins de " -"tots els dominis de difusió a la capa d'enllaç, per exemple xarxes mòbils ad-" -"hoc." - -# apòstrof+acrònims http://ca.wikipedia.org/wiki/Ap%C3%B2strof#Observacions -msgid "Active AHCP Leases" -msgstr "Leases actius d'AHCP" - -msgid "Address" -msgstr "Adreça" - -msgid "Advanced Settings" -msgstr "Configuració avançada" - -msgid "Age" -msgstr "Edat" - -msgid "Announced DNS servers" -msgstr "Servidors DNS anunciats" - -msgid "Announced NTP servers" -msgstr "Servidors NTP anunciats" - -msgid "Announced prefixes" -msgstr "Prefixos anunciats" - -msgid "Collecting data..." -msgstr "Recopilant informació..." - -msgid "Forwarder" -msgstr "Retransmissor" - -msgid "General Setup" -msgstr "Configuració general" - -msgid "IPv4 and IPv6" -msgstr "IPv4 i IPv6" - -msgid "IPv4 only" -msgstr "Només IPv4" - -msgid "IPv6 only" -msgstr "Només IPv6" - -msgid "Lease directory" -msgstr "Directori d'arrendament" - -msgid "Lease validity time" -msgstr "Duració d'arrendament" - -msgid "Log file" -msgstr "Fitxer de registre" - -msgid "Multicast address" -msgstr "Adreça de difusió selectiva" - -msgid "Operation mode" -msgstr "Mode d'operació" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Família de protocol" - -msgid "Served interfaces" -msgstr "Interfícies servides" - -msgid "Server" -msgstr "Servidor" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Especifica els servidors NTP IPv4 i IPv6 anunciats" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Especifica els servidors de noms IPv4 i IPv6 anunciats" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Especifica els prefixos de xarxa IPv4 i IPv6 anunciats en notació CIDR" - -msgid "The AHCP Service is not running." -msgstr "El servidor AHCP no està funcionant." - -msgid "The AHCP Service is running with ID %s." -msgstr "El servei AHCP està funcionant amb el ID %s." - -msgid "There are no active leases." -msgstr "No hi ha arrendaments actius." - -msgid "Unique ID file" -msgstr "Fitxer ID únic" diff --git a/package/luci/applications/luci-app-ahcp/po/cs/ahcp.po b/package/luci/applications/luci-app-ahcp/po/cs/ahcp.po deleted file mode 100644 index 0a9e0afadc..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/cs/ahcp.po +++ /dev/null @@ -1,114 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-23 23:01+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "AHCP Server" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP je autokonfigurační protokol pro IPv6 a dual-stack IPv6/IPv4 sítě, " -"vytvořený pro použití vedle funkcí router discovery (Vyhledávání směrovačů " -"pomocí ICMP zpráv) a DHCP na sítích kde je obtížné či nemožné nakonfigurovat " -"server v každé vrstvě broadcast domény, například mobilní ad-hoc sítě." - -msgid "Active AHCP Leases" -msgstr "Aktivní AHCP zapůjčení" - -msgid "Address" -msgstr "Adresa" - -msgid "Advanced Settings" -msgstr "Pokročilé nastavení" - -msgid "Age" -msgstr "Stáří" - -msgid "Announced DNS servers" -msgstr "Oznámené DNS servery" - -msgid "Announced NTP servers" -msgstr "Oznámené NTP servery" - -msgid "Announced prefixes" -msgstr "Oznámené předčíslí" - -msgid "Collecting data..." -msgstr "Probíhá shromažďování dat..." - -msgid "Forwarder" -msgstr "Přesměrování" - -msgid "General Setup" -msgstr "Obecné nastavení" - -msgid "IPv4 and IPv6" -msgstr "IPv4 a IPv6" - -msgid "IPv4 only" -msgstr "pouze IPv4" - -msgid "IPv6 only" -msgstr "Pouze IPv6" - -msgid "Lease directory" -msgstr "Zapůjčené adresáře" - -msgid "Lease validity time" -msgstr "Doba platnosti zapujčení" - -msgid "Log file" -msgstr "Soubor protokolu" - -msgid "Multicast address" -msgstr "Vícesměrové adresy" - -msgid "Operation mode" -msgstr "Pracovní režim" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Rodina protokolů" - -msgid "Served interfaces" -msgstr "Obsluhované rozhraní" - -msgid "Server" -msgstr "Servr" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Specifikuje ohlášené IPv4 a IPv6 NTP servery" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Specifikuje ohlášené IPv4 a IPv6 názvové servery" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Specifikuje ohlášené IPv4 a IPv6 sítě předpony v CIDR notaci" - -msgid "The AHCP Service is not running." -msgstr "Služba AHCP neběží" - -msgid "The AHCP Service is running with ID %s." -msgstr "Služba AHCP je spuštěna s ID %s." - -msgid "There are no active leases." -msgstr "Neexistují žádná aktivní pronajmutí." - -msgid "Unique ID file" -msgstr "Jedinečný ID soubor" diff --git a/package/luci/applications/luci-app-ahcp/po/de/ahcp.po b/package/luci/applications/luci-app-ahcp/po/de/ahcp.po deleted file mode 100644 index 6df34d8d98..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/de/ahcp.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-30 18:21+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "AHCP Server" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP ist ein Autokonfigurationsprotokoll für IPv6- und IPv4/IPv6 Dualstack-" -"Netzwerke. Es ist darauf ausgelegt anstelle von Router Advertisements und " -"DHCP-Servern in Ad-Hoc Netzwerken eingesetzt zu werden." - -msgid "Active AHCP Leases" -msgstr "Aktive AHCP-Leases" - -msgid "Address" -msgstr "Adresse" - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Age" -msgstr "Alter" - -msgid "Announced DNS servers" -msgstr "Angekündigte DNS-Server" - -msgid "Announced NTP servers" -msgstr "Angekündigte NTP-Server" - -msgid "Announced prefixes" -msgstr "Angekündigte Prefixe" - -msgid "Collecting data..." -msgstr "Sammle Daten..." - -msgid "Forwarder" -msgstr "Forwarder" - -msgid "General Setup" -msgstr "Allgemeine Einstellungen" - -msgid "IPv4 and IPv6" -msgstr "IPv4 und IPv6" - -msgid "IPv4 only" -msgstr "nur IPv4" - -msgid "IPv6 only" -msgstr "nur IPv6" - -msgid "Lease directory" -msgstr "Lease-Verzeichnis" - -msgid "Lease validity time" -msgstr "Lease-Gültigkeitsdauer" - -msgid "Log file" -msgstr "Protokolldatei" - -msgid "Multicast address" -msgstr "Mutlicast-Adresse" - -msgid "Operation mode" -msgstr "Betriebsmodus" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Protokollfamilie" - -msgid "Served interfaces" -msgstr "Verwendete Schnittstellen" - -msgid "Server" -msgstr "Server" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Konfiguriert die bekannt gegebenen IPv4- und IPv6-NTP-Server" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Konfiguriert die bekannt gegebenen IPv4- und IPv6-DNS-Server" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" -"Konfiguriert die bekannt gegebenen IPv4- und IPv6-Netzwerkprefixe. Angabe in " -"CIDR-Notation." - -msgid "The AHCP Service is not running." -msgstr "Der AHCP-Dienst läuft nicht." - -msgid "The AHCP Service is running with ID %s." -msgstr "Der AHCP-Dienst läuft mit ID %s." - -msgid "There are no active leases." -msgstr "Es gibt keine aktiven Leases." - -msgid "Unique ID file" -msgstr "UID-Datei" diff --git a/package/luci/applications/luci-app-ahcp/po/el/ahcp.po b/package/luci/applications/luci-app-ahcp/po/el/ahcp.po deleted file mode 100644 index 0d7d6bd797..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/el/ahcp.po +++ /dev/null @@ -1,114 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-18 16:25+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: none\n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "AHCP Server" -msgstr "Εξυπηρετητής AHCP" - -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" - -msgid "Active AHCP Leases" -msgstr "Ενεργά AHCP Leases" - -msgid "Address" -msgstr "Διεύθυνση" - -msgid "Advanced Settings" -msgstr "" - -msgid "Age" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Announced NTP servers" -msgstr "" - -msgid "Announced prefixes" -msgstr "" - -msgid "Collecting data..." -msgstr "Συλλέγονται δεδομένα..." - -msgid "Forwarder" -msgstr "Προωθητής" - -msgid "General Setup" -msgstr "Γενικές ρυθμίσεις" - -msgid "IPv4 and IPv6" -msgstr "IPv4 και IPv6" - -msgid "IPv4 only" -msgstr "μόνο IPv4" - -msgid "IPv6 only" -msgstr "μόνο IPv6" - -#, fuzzy -msgid "Lease directory" -msgstr "Κατάλογος leases" - -msgid "Lease validity time" -msgstr "Χρόνος εγκυρότητας lease" - -msgid "Log file" -msgstr "Αρχείο καταγραφής" - -msgid "Multicast address" -msgstr "Διεύθυνση multicast" - -msgid "Operation mode" -msgstr "" - -msgid "Port" -msgstr "Θύρα" - -msgid "Protocol family" -msgstr "Οικογένεια πρωτοκόλλου" - -msgid "Served interfaces" -msgstr "Εξυπηρετούμενες διεπαφές" - -msgid "Server" -msgstr "Εξυπηρετητής" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Καθορίζει τους εξυπηρετητές NTP σε IPv4 και IPv6 που ανακοινώνονται" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Καθορίζει τους εξυπηρετητές DNS σε IPv4 και IPv6 που ανακοινώνονται" - -#, fuzzy -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" -"Καθορίζει τα προθέματα διευθύνσεων IPv4 και IPv6 που ανακοινώνονται, σε " -"μορφή CIDR" - -msgid "The AHCP Service is not running." -msgstr "" - -msgid "The AHCP Service is running with ID %s." -msgstr "" - -#, fuzzy -msgid "There are no active leases." -msgstr "Δεν υπάρχουν ενεργά leases" - -msgid "Unique ID file" -msgstr "Αρχείο μοναδικού αναγνωριστικού" diff --git a/package/luci/applications/luci-app-ahcp/po/en/ahcp.po b/package/luci/applications/luci-app-ahcp/po/en/ahcp.po deleted file mode 100644 index 4ad2ab278e..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/en/ahcp.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-15 11:31+0200\n" -"Last-Translator: madanadam \n" -"Language-Team: none\n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "AHCP Server" -msgstr "AHCP Server" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery and DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." - -msgid "Active AHCP Leases" -msgstr "Active AHCP Leases" - -msgid "Address" -msgstr "Address" - -msgid "Advanced Settings" -msgstr "Advanced Settings" - -msgid "Age" -msgstr "Age" - -msgid "Announced DNS servers" -msgstr "Announced DNS servers" - -msgid "Announced NTP servers" -msgstr "Announced NTP servers" - -msgid "Announced prefixes" -msgstr "Announced prefixes" - -msgid "Collecting data..." -msgstr "Collecting data..." - -msgid "Forwarder" -msgstr "Forwarder" - -msgid "General Setup" -msgstr "General Setup" - -msgid "IPv4 and IPv6" -msgstr "IPv4 and IPv6" - -msgid "IPv4 only" -msgstr "IPv4 only" - -msgid "IPv6 only" -msgstr "IPv6 only" - -msgid "Lease directory" -msgstr "Lease directory" - -msgid "Lease validity time" -msgstr "Lease validity time" - -msgid "Log file" -msgstr "Log file" - -msgid "Multicast address" -msgstr "Multicast address" - -msgid "Operation mode" -msgstr "Operation mode" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Protocol family" - -msgid "Served interfaces" -msgstr "Served interfaces" - -msgid "Server" -msgstr "Server" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Specifies the announced IPv4 and IPv6 NTP servers" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Specifies the announced IPv4 and IPv6 name servers" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" -"Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" - -msgid "The AHCP Service is not running." -msgstr "The AHCP Service is not running." - -msgid "The AHCP Service is running with ID %s." -msgstr "The AHCP Service is running with ID %s." - -msgid "There are no active leases." -msgstr "There are no active leases." - -msgid "Unique ID file" -msgstr "Unique ID file" diff --git a/package/luci/applications/luci-app-ahcp/po/es/ahcp.po b/package/luci/applications/luci-app-ahcp/po/es/ahcp.po deleted file mode 100644 index 512606a129..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/es/ahcp.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-14 19:30+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "Servidor AHCP" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP es un protocolo de autoconfiguración para redes con IPv6 o duales IPv6/" -"IPv4 diseñado para ser usado en lugar de router discovery o DHCP en redes en " -"las que es difícil o imposible configurar un servidor en cada capa de enlace " -"del dominio de propagación como las redes móviles ad-hoc." - -# "Lease" en el sentido usado en DHCP no tiene una traducción clara en español y se puede usar la misma palabra en que en inglés. -msgid "Active AHCP Leases" -msgstr "Cesiones activas AHCP" - -msgid "Address" -msgstr "Dirección" - -msgid "Advanced Settings" -msgstr "Configuración avanzada" - -msgid "Age" -msgstr "Vida" - -msgid "Announced DNS servers" -msgstr "Servidores DNS declarados" - -msgid "Announced NTP servers" -msgstr "Servidores NTP declarados" - -msgid "Announced prefixes" -msgstr "Prefijos declarados" - -msgid "Collecting data..." -msgstr "Obteniendo datos..." - -msgid "Forwarder" -msgstr "Transmisor" - -msgid "General Setup" -msgstr "Configuración general" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 only" -msgstr "Sólo IPv4" - -msgid "IPv6 only" -msgstr "Sólo IPv6" - -msgid "Lease directory" -msgstr "Directorio de cesiones" - -msgid "Lease validity time" -msgstr "Tiempo de validez de la cesión" - -msgid "Log file" -msgstr "Fichero de registro" - -msgid "Multicast address" -msgstr "Dirección multicast" - -msgid "Operation mode" -msgstr "Modo de funcionamiento" - -msgid "Port" -msgstr "Puerto" - -msgid "Protocol family" -msgstr "Familia de protocolos" - -msgid "Served interfaces" -msgstr "Interfaces configurados" - -msgid "Server" -msgstr "Servidor" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Especifica los servidores NTP IPv4 e IPv6 declarados" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Especifica los servidores de nombres IPv4 e IPv6 declarados" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Especifica los prefijos de red IPv4 e IPv6 declarados en notación CIDR" - -msgid "The AHCP Service is not running." -msgstr "El Servicio AHCP no está funcionando." - -msgid "The AHCP Service is running with ID %s." -msgstr "El Servicio AHCP está funcionando con el ID %s." - -msgid "There are no active leases." -msgstr "No hay cesiones activas." - -msgid "Unique ID file" -msgstr "ID único de fichero" diff --git a/package/luci/applications/luci-app-ahcp/po/fr/ahcp.po b/package/luci/applications/luci-app-ahcp/po/fr/ahcp.po deleted file mode 100644 index 1163518078..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/fr/ahcp.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-11-06 13:06+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: none\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "Serveur AHCP" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP est un protocole d'auto-configuration pour les réseaux IPv6 et double-" -"pile IPv6/IPv4, destiné à remplacer la recherche de routeur et le service " -"DHCP sur des réseaux où il est difficile, voire impossible de configurer un " -"tel serveur pour tous les domaines de diffusion au niveau lien, par exemple " -"pour des réseaux ad-hoc mobiles." - -msgid "Active AHCP Leases" -msgstr "Baux AHCP actifs" - -msgid "Address" -msgstr "Adresse" - -msgid "Advanced Settings" -msgstr "Paramètres avancés" - -msgid "Age" -msgstr "Age" - -msgid "Announced DNS servers" -msgstr "Serveurs DNS publiés" - -msgid "Announced NTP servers" -msgstr "Serveurs NTP publiés" - -msgid "Announced prefixes" -msgstr "Préfixes publiés" - -msgid "Collecting data..." -msgstr "Récupération des données…" - -msgid "Forwarder" -msgstr "Transmetteur" - -msgid "General Setup" -msgstr "Paramètres principaux" - -msgid "IPv4 and IPv6" -msgstr "IPv4 et IPv6" - -msgid "IPv4 only" -msgstr "IPv4 seulement" - -msgid "IPv6 only" -msgstr "IPv6 seulement" - -msgid "Lease directory" -msgstr "Répertoire d'un bail" - -msgid "Lease validity time" -msgstr "Date de validité d'un bail" - -msgid "Log file" -msgstr "Fichier journal" - -msgid "Multicast address" -msgstr "Adresse multidiffusion" - -msgid "Operation mode" -msgstr "Mode de fonctionnement" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Famille de protocole" - -msgid "Served interfaces" -msgstr "Interfaces gérés" - -msgid "Server" -msgstr "Serveur" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Décrit les serveurs NTP IPv4 et IPv6 publiés" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Décrit les serveurs de noms IPv4 et IPv6 publiés" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Décrit les préfixes réseaux IPv4 et IPv6 publiés en notation CIDR" - -msgid "The AHCP Service is not running." -msgstr "Le service AHCP n'est pas en fonctionnement." - -msgid "The AHCP Service is running with ID %s." -msgstr "Le service AHCP est en fonctionnement avec l'ID s." - -msgid "There are no active leases." -msgstr "Il n'y a aucun bail actif." - -msgid "Unique ID file" -msgstr "Fichier de l'ID unique" diff --git a/package/luci/applications/luci-app-ahcp/po/he/ahcp.po b/package/luci/applications/luci-app-ahcp/po/he/ahcp.po deleted file mode 100644 index 1c45cc8536..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/he/ahcp.po +++ /dev/null @@ -1,118 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-10 03:44+0200\n" -"Last-Translator: Snoof \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "שרת AHCP" - -# מי שמבין את המונחים הטכניים שיעבור על זה ויתקן. -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP הוא פרוטוקול להגדרה אוטומטית של רשתות IPV6 ו- dual-stack IPv6/IPv4, אשר " -"עוצב לשימוש כתחליף לגילוי נתבים ול- DHCP ברשתות שבהן קשה או בלתי אפשרי " -"להגדיר שרת בתוך כל שם מתחם לשידור שכבת קישור, לדוגמה רשתות אד-הוק ניידות." - -#, fuzzy -msgid "Active AHCP Leases" -msgstr "החכרות AHCP קיימות" - -msgid "Address" -msgstr "כתובת" - -msgid "Advanced Settings" -msgstr "הגדרות מתקדמות" - -msgid "Age" -msgstr "גיל" - -msgid "Announced DNS servers" -msgstr "שרתי DNS מוכרזים" - -msgid "Announced NTP servers" -msgstr "שרתי NTP מוכרזים" - -msgid "Announced prefixes" -msgstr "קידומות מוכרזות" - -msgid "Collecting data..." -msgstr "אוסף נתונים..." - -msgid "Forwarder" -msgstr "" - -msgid "General Setup" -msgstr "התקנה כללית" - -msgid "IPv4 and IPv6" -msgstr "IPv4 ו- IPv6" - -msgid "IPv4 only" -msgstr "IPv4 בלבד" - -msgid "IPv6 only" -msgstr "IPv6 בלבד" - -#, fuzzy -msgid "Lease directory" -msgstr "ספריית החכרות" - -# תו -msgid "Lease validity time" -msgstr "תוקף ההקצאה" - -msgid "Log file" -msgstr "קובץ רישום" - -msgid "Multicast address" -msgstr "כתובת Multicast" - -# אפשר גם מצב פעולה -msgid "Operation mode" -msgstr "מצב הפעלה" - -msgid "Port" -msgstr "פורט" - -msgid "Protocol family" -msgstr "משפחת פרוטוקולים" - -msgid "Served interfaces" -msgstr "סיגמנטים מופעלים" - -msgid "Server" -msgstr "שרת" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "שרתי NTP ברשתות IPV4 IPV6" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "שרתי DNS ברשתות IPV4 IPV6" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "קידומת שרתים (CIDR)" - -msgid "The AHCP Service is not running." -msgstr "" - -msgid "The AHCP Service is running with ID %s." -msgstr "" - -msgid "There are no active leases." -msgstr "אין הקצאות פעילות." - -msgid "Unique ID file" -msgstr "קובץ מזהה יחודי" diff --git a/package/luci/applications/luci-app-ahcp/po/hu/ahcp.po b/package/luci/applications/luci-app-ahcp/po/hu/ahcp.po deleted file mode 100644 index a0a91be3d1..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/hu/ahcp.po +++ /dev/null @@ -1,116 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-31 15:46+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "AHCP Server" -msgstr "AHCP kiszolgáló" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"Az AHCP egy olyan automatikus konfigurációs protokoll IPv6 és kettős IPv6/" -"IPv4 hálózatokhoz, mely a DHCP és a router dicovery protokoll helyett " -"használható olyan hálózatokok ahol nehéz vagy lehetetlen beállítani külön " -"kiszolgálót minden kapcsolati réteg tartományon belül, mint például a mobil " -"eseti hálózatok." - -msgid "Active AHCP Leases" -msgstr "Aktív AHCP bérletek" - -msgid "Address" -msgstr "Cím" - -msgid "Advanced Settings" -msgstr "Haladó beállítások" - -msgid "Age" -msgstr "Kor" - -msgid "Announced DNS servers" -msgstr "Bejelentett névkiszolgálók" - -msgid "Announced NTP servers" -msgstr "Bejelentett NTP kiszolgálók" - -msgid "Announced prefixes" -msgstr "Bejelentett előtagok" - -msgid "Collecting data..." -msgstr "Adatok összegyűjtése..." - -msgid "Forwarder" -msgstr "Továbbító" - -msgid "General Setup" -msgstr "Általános beállítások" - -msgid "IPv4 and IPv6" -msgstr "IPv4 és IPv6" - -msgid "IPv4 only" -msgstr "csak IPv4" - -msgid "IPv6 only" -msgstr "csak IPv6" - -msgid "Lease directory" -msgstr "Bérlet könytár" - -msgid "Lease validity time" -msgstr "Bérlet érvényességi ideje" - -msgid "Log file" -msgstr "Napló fájl" - -msgid "Multicast address" -msgstr "Multicast cím" - -msgid "Operation mode" -msgstr "Működési mód" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Protokoll család" - -msgid "Served interfaces" -msgstr "Kiszolgált interfészek" - -msgid "Server" -msgstr "Kiszolgáló" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "A bejelentett IPv4 és IPv6 NTP kiszolgálók részletezése" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "A bejelentett IPv4 és IPv6 névkiszolgálók részletezése" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" -"A bejelentett IPv4 és IPv6 hálózati előtagok részletezése CIDR jelölésben" - -msgid "The AHCP Service is not running." -msgstr "Az AHCP szolgáltatás nem fut" - -msgid "The AHCP Service is running with ID %s." -msgstr "Az AHCP szolgáltatás fut, azonosítója:%s." - -msgid "There are no active leases." -msgstr "Nincsenek aktív bérletek." - -msgid "Unique ID file" -msgstr "Egyedi azonosító fájl" diff --git a/package/luci/applications/luci-app-ahcp/po/it/ahcp.po b/package/luci/applications/luci-app-ahcp/po/it/ahcp.po deleted file mode 100644 index 56d9516bd9..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/it/ahcp.po +++ /dev/null @@ -1,114 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-03 12:53+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "Server AHCP" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP è un protocollo di configurazione automatica per reti IPv6 e dual-stack " -"IPv6/IPv4 progettato per essere usato al posto del router discovery e DHCP " -"su reti dove è difficile o impossibile configurare un server all'interno di " -"ogni dominio di broadcast, per esempio reti ad-hoc mobili." - -msgid "Active AHCP Leases" -msgstr "Lease AHCP Attivi" - -msgid "Address" -msgstr "Indirizzo" - -msgid "Advanced Settings" -msgstr "Impostazioni Avanzate" - -msgid "Age" -msgstr "Età" - -msgid "Announced DNS servers" -msgstr "Server DNS indicati" - -msgid "Announced NTP servers" -msgstr "Server NTP indicati" - -msgid "Announced prefixes" -msgstr "Prefissi indicati" - -msgid "Collecting data..." -msgstr "Raccolta dei dati..." - -msgid "Forwarder" -msgstr "Mittente" - -msgid "General Setup" -msgstr "Setup Generale" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 only" -msgstr "Solo IPv4" - -msgid "IPv6 only" -msgstr "Solo IPv6" - -msgid "Lease directory" -msgstr "Directory di Lease" - -msgid "Lease validity time" -msgstr "Tempo di validità del Lease" - -msgid "Log file" -msgstr "File di log" - -msgid "Multicast address" -msgstr "Indirizzo Multicast" - -msgid "Operation mode" -msgstr "Modalità di funzionamento" - -msgid "Port" -msgstr "Porta" - -msgid "Protocol family" -msgstr "Protocollo famiglia" - -msgid "Served interfaces" -msgstr "Interfacce servite" - -msgid "Server" -msgstr "Server" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Specifica i server NTP IPv4 e IPv6 annunciati" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Specifica il server dei nomi IPv4 e IPv6" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Specifica i prefissi delle reti IPv4 e IPv6 in notazione CIDR" - -msgid "The AHCP Service is not running." -msgstr "Il servizio AHCP non è in esecuzione." - -msgid "The AHCP Service is running with ID %s." -msgstr "Il servizio AHCP è in esecuzione con ID %s." - -msgid "There are no active leases." -msgstr "Non ci sono leases attivi." - -msgid "Unique ID file" -msgstr "File degli Unique ID" diff --git a/package/luci/applications/luci-app-ahcp/po/ja/ahcp.po b/package/luci/applications/luci-app-ahcp/po/ja/ahcp.po deleted file mode 100644 index dd78ccdfff..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/ja/ahcp.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-19 07:54+0200\n" -"Last-Translator: Kentaro \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.4\n" - -msgid "AHCP Server" -msgstr "AHCPサーバー" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCPはIPv6及びIPv6/IPv4デュアルスタックを使用するネットワークにおいて、ルー" -"ターディスカバリの代わりとして使用するためにデザインされた自動設定プロトコル" -"です。また、AHCPはモバイル・アドホックネットワークのような、リンク層のドメイ" -"ンブロードキャスト毎に設定を行うことが困難なネットワークでのDHCP機能としても" -"使用することができます。" - -msgid "Active AHCP Leases" -msgstr "有効なAHCPリース" - -msgid "Address" -msgstr "アドレス" - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Age" -msgstr "Age" - -msgid "Announced DNS servers" -msgstr "通知するDNSサーバー" - -msgid "Announced NTP servers" -msgstr "通知するNTPサーバー" - -msgid "Announced prefixes" -msgstr "通知するプレフィクス" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "Forwarder" -msgstr "転送" - -msgid "General Setup" -msgstr "一般設定" - -msgid "IPv4 and IPv6" -msgstr "IPv4及びIPv6" - -msgid "IPv4 only" -msgstr "IPv4のみ" - -msgid "IPv6 only" -msgstr "IPv6のみ" - -msgid "Lease directory" -msgstr "リースファイル・ディレクトリ" - -msgid "Lease validity time" -msgstr "リース有効時間" - -msgid "Log file" -msgstr "ログファイル" - -msgid "Multicast address" -msgstr "マルチキャストアドレス" - -msgid "Operation mode" -msgstr "動作モード" - -msgid "Port" -msgstr "ポート" - -msgid "Protocol family" -msgstr "プロトコルファミリ" - -msgid "Served interfaces" -msgstr "対象インターフェース" - -msgid "Server" -msgstr "サーバー" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "通知するNTPサーバーのIPv4及びIPv6アドレスを設定します" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "通知するDNSサーバーのIPv4及びIPv6アドレスを設定します" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" -"通知するIPv4及びIPv6アドレスのネットワーク・プレフィクスをCIDR形式で設定しま" -"す" - -msgid "The AHCP Service is not running." -msgstr "AHCP サービスは稼働していません。" - -msgid "The AHCP Service is running with ID %s." -msgstr "AHCP サービスは稼働中です。(ID %s)" - -msgid "There are no active leases." -msgstr "有効なリースはありません。" - -msgid "Unique ID file" -msgstr "ユニークIDファイル" diff --git a/package/luci/applications/luci-app-ahcp/po/ms/ahcp.po b/package/luci/applications/luci-app-ahcp/po/ms/ahcp.po deleted file mode 100644 index 0b6963b1ea..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/ms/ahcp.po +++ /dev/null @@ -1,105 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "AHCP Server" -msgstr "" - -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" - -msgid "Active AHCP Leases" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Age" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Announced NTP servers" -msgstr "" - -msgid "Announced prefixes" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Forwarder" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "Lease directory" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "Operation mode" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Served interfaces" -msgstr "" - -msgid "Server" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" - -msgid "The AHCP Service is not running." -msgstr "" - -msgid "The AHCP Service is running with ID %s." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "Unique ID file" -msgstr "" diff --git a/package/luci/applications/luci-app-ahcp/po/no/ahcp.po b/package/luci/applications/luci-app-ahcp/po/no/ahcp.po deleted file mode 100644 index 4c3bc03aad..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/no/ahcp.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-06-14 20:11+0200\n" -"Last-Translator: protx \n" -"Language-Team: none\n" -"Language: no\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "AHCP Server" -msgstr "AHCP Server" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP er en autokonfigurasjon protokoll for IPv6, og dual-stack IPv6/IPv4 " -"nettverk. Det er laget for bruk der DHCP og Ruter oppdagelse er problematisk " -"eller umulig å bruke for hvert link-lags broadcast domene, f.eks. mobile ad-" -"hoc nettverk." - -msgid "Active AHCP Leases" -msgstr "Aktive AHCP Leier" - -msgid "Address" -msgstr "Adresse" - -msgid "Advanced Settings" -msgstr "Avanserte Innstillinger" - -msgid "Age" -msgstr "Alder" - -msgid "Announced DNS servers" -msgstr "Annonserte DNS servere" - -msgid "Announced NTP servers" -msgstr "Annonserte NTP servere" - -msgid "Announced prefixes" -msgstr "Annonserte prefikser" - -msgid "Collecting data..." -msgstr "Henter data..." - -#, fuzzy -msgid "Forwarder" -msgstr "Sender" - -msgid "General Setup" -msgstr "Generelt Oppsett" - -msgid "IPv4 and IPv6" -msgstr "IPv4 og IPv6" - -msgid "IPv4 only" -msgstr "Kun IPv4" - -msgid "IPv6 only" -msgstr "Kun IPv6" - -#, fuzzy -msgid "Lease directory" -msgstr "Leie katalog" - -msgid "Lease validity time" -msgstr "Gyldig leietid" - -msgid "Log file" -msgstr "Logg fil" - -msgid "Multicast address" -msgstr "Multicast adresse" - -msgid "Operation mode" -msgstr "Driftsmodus" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Protokoll familie" - -#, fuzzy -msgid "Served interfaces" -msgstr "Utdelte grensesnitt" - -msgid "Server" -msgstr "Server" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Angir annonserte IPv4 og IPv6 NTP-servere" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Angir annonserte IPv4 og IPv6 navnetjenere" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Angir annonserte IPv4 og IPv6 nettverk prefikser i CIDR-notasjon" - -msgid "The AHCP Service is not running." -msgstr "" - -msgid "The AHCP Service is running with ID %s." -msgstr "" - -msgid "There are no active leases." -msgstr "Det er ingen aktive leieavtaler." - -msgid "Unique ID file" -msgstr "Unik ID fil" diff --git a/package/luci/applications/luci-app-ahcp/po/pl/ahcp.po b/package/luci/applications/luci-app-ahcp/po/pl/ahcp.po deleted file mode 100644 index 5095224940..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/pl/ahcp.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-14 16:40+0200\n" -"Last-Translator: Tomecki \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "AHCP Server" -msgstr "Serwer AHCP" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP to protokół automatycznej konfiguracji sieci IPv6 i IPv6/IPv4 " -"przeznaczone do stosowania zamiast DHCP w sieciach, w których jest trudne " -"lub wręcz niemożliwe, aby skonfigurować serwer w każdej warstwie łącza " -"domeny rozgłoszeniowej, na przykład w mobilnych sieciach ad-hoc." - -msgid "Active AHCP Leases" -msgstr "Aktywne dzierżawy AHCP" - -msgid "Address" -msgstr "Adres" - -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -msgid "Age" -msgstr "Wiek" - -msgid "Announced DNS servers" -msgstr "Rozgłaszane serwery DNS" - -msgid "Announced NTP servers" -msgstr "Rozgłaszane serwery NTP" - -msgid "Announced prefixes" -msgstr "Rozgłaszane prefiksy" - -msgid "Collecting data..." -msgstr "Zbieranie informacji..." - -msgid "Forwarder" -msgstr "Przekierowanie" - -msgid "General Setup" -msgstr "Ustawienia podstawowe" - -msgid "IPv4 and IPv6" -msgstr "IPv4 oraz IPv6" - -msgid "IPv4 only" -msgstr "Tylko IPv4" - -msgid "IPv6 only" -msgstr "Tylko IPv6" - -msgid "Lease directory" -msgstr "Katalog dzierżaw" - -msgid "Lease validity time" -msgstr "Czas dzierżawy" - -msgid "Log file" -msgstr "Plik dziennika" - -msgid "Multicast address" -msgstr "Adres Multicast" - -msgid "Operation mode" -msgstr "Tryb pracy" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Rodzina protokołów" - -msgid "Served interfaces" -msgstr "Udostępniane interfejsy" - -msgid "Server" -msgstr "Serwer" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Określa rozgłaszane adresy IPv4/6 serwerów NTP" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Określa rozgłaszane adresy IPv4/6 serwerów nazw" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Określa rozgłaszane prefiksy sieciowe w notacji CIDR" - -msgid "The AHCP Service is not running." -msgstr "Usługa AHCP nie jest uruchomiona." - -msgid "The AHCP Service is running with ID %s." -msgstr "Usługa AHCP jest uruchomiona z ID %s." - -msgid "There are no active leases." -msgstr "Nie ma aktywnych dzierżaw." - -msgid "Unique ID file" -msgstr "Unikalny plik ID" diff --git a/package/luci/applications/luci-app-ahcp/po/pt-br/ahcp.po b/package/luci/applications/luci-app-ahcp/po/pt-br/ahcp.po deleted file mode 100644 index 741c14572b..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/pt-br/ahcp.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"PO-Revision-Date: 2017-02-17 17:07-0200\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"POT-Creation-Date: \n" - -msgid "AHCP Server" -msgstr "Servidor AHCP" - -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP é um protocolo de autoconfiguração para redes IPv6 ou IPv6/IPv4 " -"projetado para ser usado no lugar da \"descoberta de roteador\" ou DHCP em " -"redes onde é difícil ou impossível configurar um servidor em cada camada de " -"enlace de domínio de broadcast, como exemplo as redes móvel ad-hoc." - -msgid "Active AHCP Leases" -msgstr "Alocações AHCP Ativas" - -msgid "Address" -msgstr "Endereço" - -msgid "Advanced Settings" -msgstr "Configurações Avançadas" - -msgid "Age" -msgstr "Tempo de vida" - -msgid "Announced DNS servers" -msgstr "Servidores DNS anunciados" - -msgid "Announced NTP servers" -msgstr "Servidores NTP anunciados" - -msgid "Announced prefixes" -msgstr "Prefixos anunciados" - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "Forwarder" -msgstr "Forwarder" - -msgid "General Setup" -msgstr "Configurações Gerais" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 only" -msgstr "Apenas IPv4" - -msgid "IPv6 only" -msgstr "Apenas IPv6" - -msgid "Lease directory" -msgstr "Diretório de atribuições" - -msgid "Lease validity time" -msgstr "Tempo de validade da atribuição" - -msgid "Log file" -msgstr "Arquivo de registro" - -msgid "Multicast address" -msgstr "Endereço multicast" - -msgid "Operation mode" -msgstr "Modo de operação" - -msgid "Port" -msgstr "Porta" - -msgid "Protocol family" -msgstr "Família de protocolos" - -msgid "Served interfaces" -msgstr "Interfaces configuradas" - -msgid "Server" -msgstr "Servidor" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Especifica os servidores NTP IPv4 e IPv6 anunciados" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Especifica os servidores de nomes IPv4 e IPv6 anunciados" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" -"Especifica os prefixos de rede IPv4 e IPv6, em notação CIDR, anunciados" - -msgid "The AHCP Service is not running." -msgstr "O serviço AHCP está parado" - -msgid "The AHCP Service is running with ID %s." -msgstr "O serviço AHCP esta executando com o ID %s." - -msgid "There are no active leases." -msgstr "Não existe alocações ativas." - -msgid "Unique ID file" -msgstr "Arquivo de identificador único" diff --git a/package/luci/applications/luci-app-ahcp/po/pt/ahcp.po b/package/luci/applications/luci-app-ahcp/po/pt/ahcp.po deleted file mode 100644 index f96fc453dd..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/pt/ahcp.po +++ /dev/null @@ -1,116 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-06-02 21:12+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "Servidor AHCP" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"O AHCP é um protocolo de auto-configuração para redes IPv6 e IPv6/IPv4 dual-" -"stack foi desenhado para ser usado no lugar do router discovery e DHCP nas " -"redes onde é difícil ou impossível configurar o servidor dentro de cada " -"camada de ligação no dominio de broadcast, por exemplo, redes ad-hoc móveis." - -msgid "Active AHCP Leases" -msgstr "Concessões AHCP Ativas" - -msgid "Address" -msgstr "Endereço" - -msgid "Advanced Settings" -msgstr "Definições Avançadas" - -msgid "Age" -msgstr "Idade" - -msgid "Announced DNS servers" -msgstr "Servidores DNS anunciados" - -msgid "Announced NTP servers" -msgstr "Servidores NTP anunciados" - -msgid "Announced prefixes" -msgstr "Prefixos anunciados" - -msgid "Collecting data..." -msgstr "A obter dados..." - -msgid "Forwarder" -msgstr "Encaminhador" - -msgid "General Setup" -msgstr "Configuração Geral" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 only" -msgstr "Só IPv4" - -msgid "IPv6 only" -msgstr "Só IPv6" - -msgid "Lease directory" -msgstr "Directório de concessões" - -msgid "Lease validity time" -msgstr "Prazo de validade das concessões" - -msgid "Log file" -msgstr "Ficheiro log" - -msgid "Multicast address" -msgstr "Endereço de multicast" - -msgid "Operation mode" -msgstr "Modo de operação" - -msgid "Port" -msgstr "Porta" - -msgid "Protocol family" -msgstr "Família do protocolo" - -msgid "Served interfaces" -msgstr "Interfaces servidas" - -msgid "Server" -msgstr "Servidor" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Especifica os servidores NTP anunciados em IPv4 e IPv6" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Especifica os servidores de nomes anunciados em IPv4 e IPv6" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" -"Especifica os prefixos de rede na notação CIDR a serem anunciados em IPv4 e " -"IPv6" - -msgid "The AHCP Service is not running." -msgstr "O serviço AHCP não está a correr." - -msgid "The AHCP Service is running with ID %s." -msgstr "O serviço AHCP está a correr com o ID %s" - -msgid "There are no active leases." -msgstr "Não existem concessões activas." - -msgid "Unique ID file" -msgstr "Ficheiro de ID único" diff --git a/package/luci/applications/luci-app-ahcp/po/ro/ahcp.po b/package/luci/applications/luci-app-ahcp/po/ro/ahcp.po deleted file mode 100644 index 2882b31fdb..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/ro/ahcp.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-28 19:14+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "Server AHCP" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP este un protocol de autoconfigurare pentru IPv6 si IPv4 menit sa " -"inlocuie \"router discovery\" si DHCP in retele unde este dificil de " -"configurat un server pentru fiecare domeniu de broadcast pe fiecare " -"legatura, de exemplu pentru retele mobile ad-hoc." - -msgid "Active AHCP Leases" -msgstr "Conexiuni active AHCP" - -msgid "Address" -msgstr "Adresă" - -msgid "Advanced Settings" -msgstr "Setări avansate" - -msgid "Age" -msgstr "Vârstă" - -msgid "Announced DNS servers" -msgstr "Servere DNS anuntate" - -msgid "Announced NTP servers" -msgstr "Servere NTP anuntate" - -msgid "Announced prefixes" -msgstr "Prefixe anuntate" - -msgid "Collecting data..." -msgstr "Colectare date.." - -msgid "Forwarder" -msgstr "Forwarder" - -msgid "General Setup" -msgstr "Configurare generala" - -msgid "IPv4 and IPv6" -msgstr "IPv4 si IPv6" - -msgid "IPv4 only" -msgstr "Doar IPv4 " - -msgid "IPv6 only" -msgstr "Doar IPv6 " - -msgid "Lease directory" -msgstr "Director de conexiuni" - -msgid "Lease validity time" -msgstr "Timpul pentru conexiuni valide" - -msgid "Log file" -msgstr "Fisier log" - -msgid "Multicast address" -msgstr "Adresa multicast" - -msgid "Operation mode" -msgstr "Modul de operare" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Familia de protocol" - -msgid "Served interfaces" -msgstr "Interfetele servite" - -msgid "Server" -msgstr "Server" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Specifica serverele de NTP IPv4 si IPv6 anuntate" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Specifica serverele de DNS IPv4 si IPv6 anuntate" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Specifica prefixele IPv4 si IPv6 anuntate in format CIDR" - -msgid "The AHCP Service is not running." -msgstr "Serviciul AHCP nu ruleaza" - -msgid "The AHCP Service is running with ID %s." -msgstr "Serviciul AHCP nu ruleaza cu ID %s." - -msgid "There are no active leases." -msgstr "Nu exista conexiuni active." - -msgid "Unique ID file" -msgstr "ID de fisier unic" diff --git a/package/luci/applications/luci-app-ahcp/po/ru/ahcp.po b/package/luci/applications/luci-app-ahcp/po/ru/ahcp.po deleted file mode 100644 index f08cb70877..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/ru/ahcp.po +++ /dev/null @@ -1,120 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: ahcp\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2013-09-05 15:29+0200\n" -"Last-Translator: datasheet \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -# Ad-Hoc Configuration Protocol - протокол автоматической конфигурации IPv6 и сетей IPv6/IPv4 двойного стека -msgid "AHCP Server" -msgstr "AHCP-сервер" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP - это протокол автоматической конфигурации сетей IPv6 и IPv6/IPv4, " -"разработанный для использования вместо DHCP и протоколов обнаружения " -"маршрутизаторов в сетях, где сложно или невозможно настроить сервер внутри " -"каждой широковещательной зоны канального уровня, например, в мобильных ad-" -"hoc сетях." - -msgid "Active AHCP Leases" -msgstr "Активные арендованные AHCP-адреса" - -msgid "Address" -msgstr "Адрес" - -msgid "Advanced Settings" -msgstr "Дополнительные настройки" - -msgid "Age" -msgstr "Возраст" - -msgid "Announced DNS servers" -msgstr "Анонсируемые DNS-серверы" - -msgid "Announced NTP servers" -msgstr "Анонсируемые NTP-серверы" - -msgid "Announced prefixes" -msgstr "Анонсируемые префиксы" - -msgid "Collecting data..." -msgstr "Сбор данных..." - -#, fuzzy -msgid "Forwarder" -msgstr "Перенаправление запросов" - -msgid "General Setup" -msgstr "Общие настройки" - -msgid "IPv4 and IPv6" -msgstr "IPv4 и IPv6" - -msgid "IPv4 only" -msgstr "Только IPv4" - -msgid "IPv6 only" -msgstr "Только IPv6" - -msgid "Lease directory" -msgstr "Директория арендованных адресов" - -msgid "Lease validity time" -msgstr "Срок действия аренды" - -msgid "Log file" -msgstr "Файл журнала" - -msgid "Multicast address" -msgstr "Групповой адрес" - -msgid "Operation mode" -msgstr "Режим работы" - -msgid "Port" -msgstr "Порт" - -msgid "Protocol family" -msgstr "Протокол" - -msgid "Served interfaces" -msgstr "Используемые интерфейсы" - -msgid "Server" -msgstr "Сервер" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Определяет IPv4 и IPv6 NTP-серверы" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Определяет IPv4 и IPv6 DNS-серверы" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Определяет IPv4- и IPv6-префиксы сети в нотации CIDR" - -msgid "The AHCP Service is not running." -msgstr "Служба AHCP не запущена." - -msgid "The AHCP Service is running with ID %s." -msgstr "Служба AHCP запущена с ID %s." - -msgid "There are no active leases." -msgstr "Нет активных арендованных адресов." - -msgid "Unique ID file" -msgstr "Файл уникального идентификатора" diff --git a/package/luci/applications/luci-app-ahcp/po/sk/ahcp.po b/package/luci/applications/luci-app-ahcp/po/sk/ahcp.po deleted file mode 100644 index b61849039f..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/sk/ahcp.po +++ /dev/null @@ -1,106 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "AHCP Server" -msgstr "" - -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" - -msgid "Active AHCP Leases" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Age" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Announced NTP servers" -msgstr "" - -msgid "Announced prefixes" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Forwarder" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "Lease directory" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "Operation mode" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Served interfaces" -msgstr "" - -msgid "Server" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" - -msgid "The AHCP Service is not running." -msgstr "" - -msgid "The AHCP Service is running with ID %s." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "Unique ID file" -msgstr "" diff --git a/package/luci/applications/luci-app-ahcp/po/sv/ahcp.po b/package/luci/applications/luci-app-ahcp/po/sv/ahcp.po deleted file mode 100644 index db1cc35ec5..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/sv/ahcp.po +++ /dev/null @@ -1,113 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-27 22:52+0200\n" -"Last-Translator: Umeaboy \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "AHCP-server" - -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP är ett autokonfigurationsprotokoll för IPv6 och dual-stack IPv6/IPv4- " -"nätverk designade för att användas vid upptäckt av router eller DHCP på " -"nätverk där det är svårt eller omöjligt att ställa in en server inom " -"varje sändningslänkslags-domän, till exempel mobila ad-hocnätverk." - -msgid "Active AHCP Leases" -msgstr "Aktiva AHCP-hyror" - -msgid "Address" -msgstr "Adress" - -msgid "Advanced Settings" -msgstr "Avancerade inställningar" - -msgid "Age" -msgstr "Ålder" - -msgid "Announced DNS servers" -msgstr "Aviserade DNS-servrar" - -msgid "Announced NTP servers" -msgstr "Aviserade NTP-servrar" - -msgid "Announced prefixes" -msgstr "Aviserade prefix" - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "Forwarder" -msgstr "Vidarebefordrare" - -msgid "General Setup" -msgstr "Allmän inställning" - -msgid "IPv4 and IPv6" -msgstr "IPv4 och IPv6" - -msgid "IPv4 only" -msgstr "Endast IPv4" - -msgid "IPv6 only" -msgstr "Endast IPv6" - -msgid "Lease directory" -msgstr "Hyr mappen" - -msgid "Lease validity time" -msgstr "Giltighetstid för hyran" - -msgid "Log file" -msgstr "Logg-fil" - -msgid "Multicast address" -msgstr "Multicast-adress" - -msgid "Operation mode" -msgstr "Driftsläge" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Protokoll-familj" - -msgid "Served interfaces" -msgstr "Betjänade gränssnitt" - -msgid "Server" -msgstr "Server" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Specificerar de aviserade IPv4 och IPv6 NTP-servrarna" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Specificerar de aviserade IPv4 och IPv6 namn-servrarna" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Specificerar de aviserade IPv4 och IPv6 nätverksprefixen i CIDR-noteringen" - -msgid "The AHCP Service is not running." -msgstr "AHCP-tjänsten körs inte." - -msgid "The AHCP Service is running with ID %s." -msgstr "AHCP-tjänsten körs med ID %s." - -msgid "There are no active leases." -msgstr "Det finns inga aktiva hyror." - -msgid "Unique ID file" -msgstr "Unik ID-fil" diff --git a/package/luci/applications/luci-app-ahcp/po/templates/ahcp.pot b/package/luci/applications/luci-app-ahcp/po/templates/ahcp.pot deleted file mode 100644 index ea6bb42524..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/templates/ahcp.pot +++ /dev/null @@ -1,99 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "AHCP Server" -msgstr "" - -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" - -msgid "Active AHCP Leases" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Age" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Announced NTP servers" -msgstr "" - -msgid "Announced prefixes" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Forwarder" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "Lease directory" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "Operation mode" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Served interfaces" -msgstr "" - -msgid "Server" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" - -msgid "The AHCP Service is not running." -msgstr "" - -msgid "The AHCP Service is running with ID %s." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "Unique ID file" -msgstr "" diff --git a/package/luci/applications/luci-app-ahcp/po/tr/ahcp.po b/package/luci/applications/luci-app-ahcp/po/tr/ahcp.po deleted file mode 100644 index ca33071826..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/tr/ahcp.po +++ /dev/null @@ -1,113 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-11-25 14:51+0200\n" -"Last-Translator: qbilay \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "AHCP Sunucusu" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP bir IPv6 ve IPv4/IPv6 çift ağ için otomatik yapılandırma protokolüdür. " -"Yönlendirici Bildirimleri ve DHCP sunucuları geçici olarak yerine dağıtılmış " -"ağlar için tasarlanmıştır." - -msgid "Active AHCP Leases" -msgstr "Aktif ACHP Kiralamaları" - -msgid "Address" -msgstr "Adres" - -msgid "Advanced Settings" -msgstr "Gelişmiş Ayarlar" - -msgid "Age" -msgstr "Yaş" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Announced NTP servers" -msgstr "" - -msgid "Announced prefixes" -msgstr "" - -msgid "Collecting data..." -msgstr "Veriler toplanıyor..." - -msgid "Forwarder" -msgstr "" - -msgid "General Setup" -msgstr "Genel Ayarlar" - -msgid "IPv4 and IPv6" -msgstr "IPv4 ve IPv6" - -msgid "IPv4 only" -msgstr "Sadece IPv4" - -msgid "IPv6 only" -msgstr "Sadece IPv6" - -msgid "Lease directory" -msgstr "Kiralama Dizini" - -msgid "Lease validity time" -msgstr "Kiralama Geçerlilik Süresi" - -msgid "Log file" -msgstr "Kayıt Dosyası" - -msgid "Multicast address" -msgstr "" - -msgid "Operation mode" -msgstr "Çalışma Modu" - -msgid "Port" -msgstr "Port" - -msgid "Protocol family" -msgstr "Protokol Ailesi" - -msgid "Served interfaces" -msgstr "Sunucu Arayüzleri" - -msgid "Server" -msgstr "Sunucu" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" - -msgid "The AHCP Service is not running." -msgstr " AHCP Hizmeti Çalışmıyor" - -msgid "The AHCP Service is running with ID %s." -msgstr " AHCP Hizmeti ID %ile çalışıyor" - -msgid "There are no active leases." -msgstr "Aktif Kiralama Yok" - -msgid "Unique ID file" -msgstr "Benzersiz ID Dosyası" diff --git a/package/luci/applications/luci-app-ahcp/po/uk/ahcp.po b/package/luci/applications/luci-app-ahcp/po/uk/ahcp.po deleted file mode 100644 index 764901988a..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/uk/ahcp.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-28 21:17+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "Сервер AHCP" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP є протоколом автоматичної конфігурації мереж IPv6 та IPv6/IPv4, що " -"разраблений для використання замість DHCP. Наприклад, він використовується у " -"стільникових ad-hoc мережах." - -msgid "Active AHCP Leases" -msgstr "Активні оренди AHCP" - -msgid "Address" -msgstr "Адреса" - -msgid "Advanced Settings" -msgstr "Додаткові параметри" - -msgid "Age" -msgstr "Вік" - -msgid "Announced DNS servers" -msgstr "Оголошені DNS-сервери" - -msgid "Announced NTP servers" -msgstr "Оголошені NTP-сервери" - -msgid "Announced prefixes" -msgstr "Оголошені префікси" - -msgid "Collecting data..." -msgstr "Збирання даних..." - -msgid "Forwarder" -msgstr "Спрямовувач" - -msgid "General Setup" -msgstr "Загальні параметри" - -msgid "IPv4 and IPv6" -msgstr "IPv4 та IPv6" - -msgid "IPv4 only" -msgstr "Тільки IPv4" - -msgid "IPv6 only" -msgstr "Тільки IPv6" - -msgid "Lease directory" -msgstr "Каталог оренд" - -msgid "Lease validity time" -msgstr "Термін дії оренди" - -msgid "Log file" -msgstr "Файл журналу" - -msgid "Multicast address" -msgstr "Групова адреса" - -msgid "Operation mode" -msgstr "Режим роботи" - -msgid "Port" -msgstr "Порт" - -msgid "Protocol family" -msgstr "Протокол" - -msgid "Served interfaces" -msgstr "Інтерфейси, які обслуговуються" - -msgid "Server" -msgstr "Сервер" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Дозволяє вказати оголошувані IPv4 та IPv6 NTP-сервери" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Дозволяє вказати оголошувані IPv4 та IPv6 DNS-сервери" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "" -"Дозволяє вказати оголошувані IPv4 та IPv6 префікси мережі в нотації CIDR" - -msgid "The AHCP Service is not running." -msgstr "Сервіс AHCP не запущено" - -msgid "The AHCP Service is running with ID %s." -msgstr "Сервіс AHCP запущено з ID %s." - -msgid "There are no active leases." -msgstr "Активних оренд немає." - -msgid "Unique ID file" -msgstr "Файл унікальних ідентифікаторів" diff --git a/package/luci/applications/luci-app-ahcp/po/vi/ahcp.po b/package/luci/applications/luci-app-ahcp/po/vi/ahcp.po deleted file mode 100644 index 1041add8f0..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/vi/ahcp.po +++ /dev/null @@ -1,114 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-12-05 04:46+0200\n" -"Last-Translator: Thành \n" -"Language-Team: none\n" -"Language: vi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "AHCP Server" -msgstr "AHCP Server" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP là một giao thức tự động cấu hình cho IPv6 và mạng IPv6/IPv4 dual-stack " -"thiết kế để được sử dụng trong địa điểm phát hiện router và DHCP trên mạng, " -"nơi rất khó hoặc không thể cấu hình một máy chủ trong tất cả các lĩnh vực " -"phát sóng liên kết lớp, ví dụ như mạng Ad-hoc." - -msgid "Active AHCP Leases" -msgstr "Kích hoạt thuê AHCP" - -msgid "Address" -msgstr "Địa chỉ" - -msgid "Advanced Settings" -msgstr "Thiết lập nâng cao" - -msgid "Age" -msgstr "Thời gian thuê" - -msgid "Announced DNS servers" -msgstr "Quảng bá máy chủ DNS" - -msgid "Announced NTP servers" -msgstr "Quảng bá máy chủ NTP" - -msgid "Announced prefixes" -msgstr "Quảng bá tiền tố" - -msgid "Collecting data..." -msgstr "Đang kết xuất dữ liệu..." - -msgid "Forwarder" -msgstr "Chuyển tiếp" - -msgid "General Setup" -msgstr "Thiết lập chung" - -msgid "IPv4 and IPv6" -msgstr "IPv4 và IPv6" - -msgid "IPv4 only" -msgstr "Chỉ IPv4" - -msgid "IPv6 only" -msgstr "Chỉ IPv6" - -msgid "Lease directory" -msgstr "Thư mục cho thuê" - -msgid "Lease validity time" -msgstr "Thời gian cho thuê" - -msgid "Log file" -msgstr "Tệp nhật ký" - -msgid "Multicast address" -msgstr "Đa địa chỉ" - -msgid "Operation mode" -msgstr "Chế độ hoạt động" - -msgid "Port" -msgstr "Cổng" - -msgid "Protocol family" -msgstr "Giao thức" - -msgid "Served interfaces" -msgstr "Giao diện phục vụ" - -msgid "Server" -msgstr "Máy chủ" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "Quy định cụ thể máy chủ IPv4, IPv6 và NTP" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "Quy định cụ thể tên máy chủ IPv4, IPv6 và NTP" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "Định rõ công bố IPv4 và IPv6 mạng tiền tố trong ký hiệu CIDR" - -msgid "The AHCP Service is not running." -msgstr "Dịch vụ AHCP khộng hoạt động." - -msgid "The AHCP Service is running with ID %s." -msgstr "Dịch vụ AHCP đang hoạt động với ID %s." - -msgid "There are no active leases." -msgstr "Hiện không có người thuê" - -msgid "Unique ID file" -msgstr "Tệp Unique ID" diff --git a/package/luci/applications/luci-app-ahcp/po/zh-cn/ahcp.po b/package/luci/applications/luci-app-ahcp/po/zh-cn/ahcp.po deleted file mode 100644 index 295bbe7f12..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/zh-cn/ahcp.po +++ /dev/null @@ -1,113 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-09 03:31+0200\n" -"Last-Translator: Tanyingyu \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" - -msgid "AHCP Server" -msgstr "AHCP 服务器" - -#, fuzzy -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" -"AHCP是一个自动配置IPv6和IPv6/IPv4双栈网络的协议,用于在网络上进行路由探测和地" -"址分配。因为在某些网络上为每个链路层广播域均配置服务器是非常困难的,例如移动" -"ad-hoc网络。" - -msgid "Active AHCP Leases" -msgstr "活动的AHCP租约" - -msgid "Address" -msgstr "地址" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Age" -msgstr "有效期" - -msgid "Announced DNS servers" -msgstr "公布DNS服务器" - -msgid "Announced NTP servers" -msgstr "公布NTP服务器" - -msgid "Announced prefixes" -msgstr "公布地址前缀" - -msgid "Collecting data..." -msgstr "数据收集中..." - -msgid "Forwarder" -msgstr "转发器" - -msgid "General Setup" -msgstr "通用设置" - -msgid "IPv4 and IPv6" -msgstr "IPv4和IPv6" - -msgid "IPv4 only" -msgstr "仅IPv4" - -msgid "IPv6 only" -msgstr "仅IPv6" - -msgid "Lease directory" -msgstr "租赁目录" - -msgid "Lease validity time" -msgstr "租约有效期" - -msgid "Log file" -msgstr "日志文件" - -msgid "Multicast address" -msgstr "多播地址" - -msgid "Operation mode" -msgstr "工作模式" - -msgid "Port" -msgstr "端口" - -msgid "Protocol family" -msgstr "协议簇" - -msgid "Served interfaces" -msgstr "服务接口" - -msgid "Server" -msgstr "服务器" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "指定IPv4与IPv6 时间服务器" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "指定IPv4与IPv6 域名服务器" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "指定IPv4与IPv6网络地址前缀(CIDR表示法)" - -msgid "The AHCP Service is not running." -msgstr "AHCP服务没有运行。" - -msgid "The AHCP Service is running with ID %s." -msgstr "AHCP服务程序进程ID %s" - -msgid "There are no active leases." -msgstr "没有活跃租约。" - -msgid "Unique ID file" -msgstr "UID文件" diff --git a/package/luci/applications/luci-app-ahcp/po/zh-tw/ahcp.po b/package/luci/applications/luci-app-ahcp/po/zh-tw/ahcp.po deleted file mode 100644 index dc7f6c5a00..0000000000 --- a/package/luci/applications/luci-app-ahcp/po/zh-tw/ahcp.po +++ /dev/null @@ -1,109 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-10 12:30+0200\n" -"Last-Translator: mp607 \n" -"Language-Team: none\n" -"Language: zh_TW\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 "AHCP Server" -msgstr "AHCP伺服器" - -msgid "" -"AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 " -"networks designed to be used in place of router discovery or DHCP on " -"networks where it is difficult or impossible to configure a server within " -"every link-layer broadcast domain, for example mobile ad-hoc networks." -msgstr "" - -msgid "Active AHCP Leases" -msgstr "" - -msgid "Address" -msgstr "位置" - -msgid "Advanced Settings" -msgstr "進階設定" - -msgid "Age" -msgstr "" - -msgid "Announced DNS servers" -msgstr "匿名的DNS伺服器" - -msgid "Announced NTP servers" -msgstr "匿名的NTP伺服器" - -msgid "Announced prefixes" -msgstr "匿名的前綴" - -msgid "Collecting data..." -msgstr "收集資料" - -msgid "Forwarder" -msgstr "" - -msgid "General Setup" -msgstr "一般設定" - -msgid "IPv4 and IPv6" -msgstr "IPv4 和 IPv6" - -msgid "IPv4 only" -msgstr "只有IPv4" - -msgid "IPv6 only" -msgstr "只有IPv6" - -msgid "Lease directory" -msgstr "租用目錄" - -msgid "Lease validity time" -msgstr "租用有效時間" - -msgid "Log file" -msgstr "記錄檔" - -msgid "Multicast address" -msgstr "多點廣播位置" - -msgid "Operation mode" -msgstr "操作模式" - -msgid "Port" -msgstr "通訊埠" - -msgid "Protocol family" -msgstr "協定群組" - -msgid "Served interfaces" -msgstr "提供服務的界面" - -msgid "Server" -msgstr "伺服器" - -msgid "Specifies the announced IPv4 and IPv6 NTP servers" -msgstr "特別的匿名IPv4 與 IPv6 NTP 伺服器" - -msgid "Specifies the announced IPv4 and IPv6 name servers" -msgstr "特別的匿名IPv4 與 IPv6 名稱伺服器" - -msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation" -msgstr "特別的匿名IPv4 與 IPv6 網路CIDR前綴" - -msgid "The AHCP Service is not running." -msgstr "AHCP服務沒有運作" - -msgid "The AHCP Service is running with ID %s." -msgstr "AHCP服務運作中 ID為 %s" - -msgid "There are no active leases." -msgstr "沒有使用中的租用" - -msgid "Unique ID file" -msgstr "獨立的ID檔案" diff --git a/package/luci/applications/luci-app-ahcp/root/etc/uci-defaults/40_luci-ahcp b/package/luci/applications/luci-app-ahcp/root/etc/uci-defaults/40_luci-ahcp deleted file mode 100755 index f2b2487cac..0000000000 --- a/package/luci/applications/luci-app-ahcp/root/etc/uci-defaults/40_luci-ahcp +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@ahcpd[-1] - add ucitrack ahcpd - set ucitrack.@ahcpd[-1].init=ahcpd - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-aria2/Makefile b/package/luci/applications/luci-app-aria2/Makefile deleted file mode 100644 index f5b006c357..0000000000 --- a/package/luci/applications/luci-app-aria2/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (C) 2016 Openwrt.org -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -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 - -# 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 - $(LUCI_TITLE) - . - Version: $(PKG_VERSION)-$(PKG_RELEASE) - $(PKG_MAINTAINER) -endef - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/package/luci/applications/luci-app-aria2/luasrc/controller/aria2.lua b/package/luci/applications/luci-app-aria2/luasrc/controller/aria2.lua deleted file mode 100644 index 17289305d7..0000000000 --- a/package/luci/applications/luci-app-aria2/luasrc/controller/aria2.lua +++ /dev/null @@ -1,42 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - aria2 support - -Copyright 2014-2015 nanpuyue -Modified by kuoruan - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -]]-- - -module("luci.controller.aria2", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/aria2") then - return - end - - local page = entry({"admin", "services", "aria2"}, cbi("aria2"), _("Aria2 Settings")) - page.dependent = true - - entry({"admin", "services", "aria2", "status"}, call("status")).leaf = true - -end - -function status() - local sys = require "luci.sys" - local ipkg = require "luci.model.ipkg" - local http = require "luci.http" - local uci = require "luci.model.uci".cursor() - - local status = { - running = (sys.call("pidof aria2c > /dev/null") == 0), - yaaw = ipkg.installed("yaaw"), - webui = ipkg.installed("webui-aria2") - } - - http.prepare_content("application/json") - http.write_json(status) -end diff --git a/package/luci/applications/luci-app-aria2/luasrc/model/cbi/aria2.lua b/package/luci/applications/luci-app-aria2/luasrc/model/cbi/aria2.lua deleted file mode 100644 index 3b61f95464..0000000000 --- a/package/luci/applications/luci-app-aria2/luasrc/model/cbi/aria2.lua +++ /dev/null @@ -1,211 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - Aria2 support - -Copyright 2014-2016 nanpuyue -Modified by maz-1 -Modified by kuoruan - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 -]]-- - -local sys = require "luci.sys" -local util = require "luci.util" -local uci = require "luci.model.uci".cursor() - -local cfgbtn = "" -local sessionbtn = "" -local aria2rpctxt = "" -local use_websocket = "" - -function ipkg_ver(pkg) - local version = nil - local control = io.open("/usr/lib/opkg/info/%s.control" % pkg, "r") - if control then - local ln - repeat - ln = control:read("*l") - if ln and ln:match("^Version: ") then - version = ln:gsub("^Version: ", ""):gsub("-%d", "") - break - end - until not ln - control:close() - end - return version -end - -function ipkg_ver_lined(pkg) - return ipkg_ver(pkg):gsub("%.", "-") -end - -m = Map("aria2", translate("Aria2"), translate("Aria2 is a multi-protocol & multi-source download utility, here you can configure the settings.")) - -m:section(SimpleSection).template = "aria2/overview_status" - -s = m:section(TypedSection, "aria2", translate("Aria2 Settings")) -s.addremove = false -s.anonymous = true - -s:tab("general", translate("General Settings")) -s:tab("file", translate("Files and Locations")) -s:tab("task", translate("Task Settings")) -s:tab("bittorrent", translate("BitTorrent Settings")) - -o = s:taboption("general", Flag, "enabled", translate("Enabled")) -o.rmempty = false - -user = s:taboption("general", ListValue, "user", translate("Run daemon as user")) -local p_user -for _, p_user in util.vspairs(util.split(sys.exec("cat /etc/passwd | cut -f 1 -d :"))) do - user:value(p_user) -end - -o = s:taboption("general", Value, "rpc_listen_port", translate("RPC port")) -o.datatype = "port" -o.placeholder = "6800" - -rpc_auth_method = s:taboption("general", ListValue, "rpc_auth_method", translate("RPC authentication method")) -rpc_auth_method:value("none", translate("No Authentication")) -rpc_auth_method:value("user_pass", translate("Username & Password")) -rpc_auth_method:value("token", translate("Token")) - -o = s:taboption("general", Value, "rpc_user", translate("RPC username")) -o:depends("rpc_auth_method", "user_pass") -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 = true - -o = s:taboption("general", Value, "rpc_secret", translate("RPC Token"), "
" .. cfgbtn) -o:depends("rpc_auth_method", "token") -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 - -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")) -o:value("prealloc", translate("Prealloc")) -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") - -o = s:taboption("task", Value, "max_overall_upload_limit", translate("Overall upload limit"), translate("in bytes/sec, You can append K or M.")) -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") - -o = s:taboption("task", Value, "max_upload_limit", translate("Per task upload limit"), translate("in bytes/sec, You can append K or M.")) -o:depends("task_speed_limit", "1") - -o = s:taboption("task", Value, "max_concurrent_downloads", translate("Max concurrent downloads")) -o.placeholder = "5" - -o = s:taboption("task", Value, "max_connection_per_server", translate("Max connection per server"), "1-16") -o.datetype = "range(1, 16)" -o.placeholder = "1" - -o = s:taboption("task", Value, "min_split_size", translate("Min split size"), "1M-1024M") -o.placeholder = "20M" - -o = s:taboption("task", Value, "split", translate("Max number of split")) -o.placeholder = "5" - -o = s:taboption("task", Value, "save_session_interval", translate("Autosave session interval"), translate("Sec")) -o.default = "30" - -o = s:taboption("task", Value, "user_agent", translate("User agent value")) -o.placeholder = "aria2/" .. ipkg_ver("aria2") - -o = s:taboption("bittorrent", Flag, "enable_dht", translate("DHT enabled")) -o.enabled = "true" -o.disabled = "false" - -o = s:taboption("bittorrent", Flag, "bt_enable_lpd", translate("LPD enabled")) -o.enabled = "true" -o.disabled = "false" - -o = s:taboption("bittorrent", Flag, "follow_torrent", translate("Follow torrent")) -o.enabled = "true" -o.disabled = "false" - -o = s:taboption("bittorrent", Value, "listen_port", translate("BitTorrent listen port")) -o.placeholder = "6881-6999" - -o = s:taboption("bittorrent", Value, "bt_max_peers", translate("Max number of peers per torrent")) -o.placeholder = "55" - -bt_tracker_enable = s:taboption("bittorrent", Flag, "bt_tracker_enable", translate("Additional Bt tracker enabled")) -bt_tracker = s:taboption("bittorrent", DynamicList, "bt_tracker", translate("List of additional Bt tracker")) -bt_tracker:depends("bt_tracker_enable", "1") -bt_tracker.rmempty = true - -function bt_tracker.cfgvalue(self, section) - local rv = {} - local val = Value.cfgvalue(self, section) - if type(val) == "table" then - val = table.concat(val, ",") - elseif not val then - val = "" - end - for v in val:gmatch("[^,%s]+") do - rv[#rv+1] = v - end - return rv -end - -function bt_tracker.write(self, section, value) - local rv = {} - for v in util.imatch(value) do - rv[#rv+1] = v - end - Value.write(self, section, table.concat(rv, ",")) -end - -o = s:taboption("bittorrent", Value, "peer_id_prefix", translate("Prefix of peer ID")) -o.placeholder = "A2-" .. ipkg_ver_lined("aria2") .. "-" - -s = m:section(TypedSection, "aria2", translate("Extra Settings")) -s.addremove = false -s.anonymous = true - -o = s:option(DynamicList, "extra_settings", translate("List of extra settings")) -o.placeholder = "option=value" -o.rmempty = true - -m:section(SimpleSection, nil, sessionbtn .. use_websocket .. aria2rpctxt) - -return m diff --git a/package/luci/applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm b/package/luci/applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm deleted file mode 100644 index b14cca228f..0000000000 --- a/package/luci/applications/luci-app-aria2/luasrc/view/aria2/overview_status.htm +++ /dev/null @@ -1,77 +0,0 @@ - - -
- <%:Aria2 Status%> -

- <%:Collecting data...%> -

-
diff --git a/package/luci/applications/luci-app-aria2/po/pt-br/aria2.po b/package/luci/applications/luci-app-aria2/po/pt-br/aria2.po deleted file mode 100644 index 1bb4137446..0000000000 --- a/package/luci/applications/luci-app-aria2/po/pt-br/aria2.po +++ /dev/null @@ -1,236 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "\"Falloc\" is not available in all cases." -msgstr "\"Falloc\" não está disponível em todas as classes." - -msgid "DHT enabled" -msgstr "" -"DHT habilitado" - -msgid "LPD enabled" -msgstr "" -"LPD habilitado" - -msgid "Additional Bt tracker enabled" -msgstr "Rastreadores BitTorrent adicionais habilitado" - -msgid "Aria2" -msgstr "Aria2" - -msgid "Aria2 Settings" -msgstr "Configurações do Aria2" - -msgid "Aria2 Status" -msgstr "Estado do Aria2" - -msgid "" -"Aria2 is a multi-protocol & multi-source download utility, here you can " -"configure the settings." -msgstr "" -"Aria2 é um utilitário de transferência multi-protocolo de múltiplas fontes, " -"aqui você pode configurá-lo." - -msgid "Autosave session interval" -msgstr "Intervalo para autossalvamento da sessão" - -msgid "BitTorrent Settings" -msgstr "Configurações do BitTorrent" - -msgid "BitTorrent listen port" -msgstr "Porta de escuta do BitTorrent" - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "Config file directory" -msgstr "Diretório dos arquivos de configuração" - -msgid "Debug" -msgstr "Depuração" - -msgid "Default download directory" -msgstr "Diretório padrão de arquivos baixados" - -msgid "Disk cache" -msgstr "Cache em Disco" - -msgid "Enable log" -msgstr "Habilitar registros" - -msgid "Enabled" -msgstr "Habilitado" - -msgid "Error" -msgstr "Erro" - -msgid "Extra Settings" -msgstr "Configurações Adicionais" - -msgid "Falloc" -msgstr "Falloc" - -msgid "Files and Locations" -msgstr "Arquivos e Locais" - -msgid "Follow torrent" -msgstr "Seguir torrent" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "Generate Randomly" -msgstr "Gerar aleatoriamente" - -msgid "Info" -msgstr "Informações" - -msgid "List of additional Bt tracker" -msgstr "Lista de rastreadores BitTorrent adicionais" - -msgid "List of extra settings" -msgstr "Lista de configurações adicionais" - -msgid "Log file is in the config file dir." -msgstr "" -"Arquivo de registro (log) está no diretório do arquivo de configuração." - -msgid "Log level" -msgstr "Nível do registro" - -msgid "Max concurrent downloads" -msgstr "Número máximo de transferencias simultâneas" - -msgid "Max connection per server" -msgstr "Numero máximo de conexões por servidor" - -msgid "Max number of peers per torrent" -msgstr "Numero máximo de parceiros por torrent" - -msgid "Max number of split" -msgstr "Numero máximo de divisões" - -msgid "Min split size" -msgstr "Tamanho mínimo da divisão" - -msgid "No Authentication" -msgstr "Sem Autenticação" - -msgid "Notice" -msgstr "Aviso" - -msgid "Off" -msgstr "Desligado" - -msgid "Open WebUI-Aria2" -msgstr "Abrir WebUI-Aria2" - -msgid "Open YAAW" -msgstr "Abrir YAAW" - -msgid "Overall download limit" -msgstr "Limite global para baixar" - -msgid "Overall speed limit enabled" -msgstr "Limite da taxa de transferência global habilitado" - -msgid "Overall upload limit" -msgstr "Limite global para subir" - -msgid "Per task download limit" -msgstr "Limite por tarefa para baixar" - -msgid "Per task speed limit enabled" -msgstr "Limite da taxa de transferência por tarefa habilitado" - -msgid "Per task upload limit" -msgstr "Limite por tarefa para subir" - -msgid "Prealloc" -msgstr "Pré-alocação" - -msgid "Preallocation" -msgstr "Pré-alocação" - -msgid "Prefix of peer ID" -msgstr "Prefixo da identificação do paceiro" - -msgid "RPC Token" -msgstr "" -"Chave eletrônica do RPC" - -msgid "RPC authentication method" -msgstr "" -"Método de autenticação do RPC" - -msgid "RPC password" -msgstr "" -"Senha do RPC" - -msgid "RPC port" -msgstr "" -"Porta do RPC" - -msgid "RPC username" -msgstr "" -"Nome do usuario do RPC" - -msgid "Run daemon as user" -msgstr "Executar serviço como usuário" - -msgid "Sec" -msgstr "Segurança" - -msgid "Task Settings" -msgstr "Configurações das tarefas" - -msgid "The Aria2 service is not running." -msgstr "O serviço Aria2 está parado." - -msgid "The Aria2 service is running." -msgstr "O serviço Aria2 está em execução." - -msgid "Token" -msgstr "Chave eletrônica" - -msgid "Trunc" -msgstr "Truncar" - -msgid "Use WebSocket" -msgstr "Use WebSockets" - -msgid "User agent value" -msgstr "Valor da identificação do agente do usuário" - -msgid "Username & Password" -msgstr "Usuário & Senha" - -msgid "View Json-RPC URL" -msgstr "Visualizar URL do JSON-RPC" - -msgid "Warn" -msgstr "Atenção" - -msgid "in bytes, You can append K or M." -msgstr "em bytes. Você pode sufixar com K (quilo) ou M (mega)." - -msgid "in bytes/sec, You can append K or M." -msgstr "em bytes por segundo. Você pode sufixar com K (quilo) ou M (mega)." diff --git a/package/luci/applications/luci-app-aria2/po/sv/aria2.po b/package/luci/applications/luci-app-aria2/po/sv/aria2.po deleted file mode 100644 index 33613faca5..0000000000 --- a/package/luci/applications/luci-app-aria2/po/sv/aria2.po +++ /dev/null @@ -1,208 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "\"Falloc\" is not available in all cases." -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Additional Bt tracker enabled" -msgstr "" - -msgid "Aria2" -msgstr "Aria2" - -msgid "Aria2 Settings" -msgstr "Inställningar för Aria2" - -msgid "Aria2 Status" -msgstr "Status för Aria2" - -msgid "" -"Aria2 is a multi-protocol & multi-source download utility, here you can " -"configure the settings." -msgstr "" - -msgid "Autosave session interval" -msgstr "Autospara sessionintervall" - -msgid "BitTorrent Settings" -msgstr "Inställningar för BitTorrent" - -msgid "BitTorrent listen port" -msgstr "Lyssningsport för BitTorrent" - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "Config file directory" -msgstr "Ställ in fil-mapp" - -msgid "Debug" -msgstr "Avlusa" - -msgid "Default download directory" -msgstr "Standard nerladdningsmapp" - -msgid "Disk cache" -msgstr "Disk-cache" - -msgid "Enable log" -msgstr "Aktivera logg" - -msgid "Enabled" -msgstr "Aktiverad" - -msgid "Error" -msgstr "Fel" - -msgid "Extra Settings" -msgstr "Extra inställningar" - -msgid "Falloc" -msgstr "Falloc" - -msgid "Files and Locations" -msgstr "Filer och Platser" - -msgid "Follow torrent" -msgstr "Följ torrenten" - -msgid "General Settings" -msgstr "Generella inställningar" - -msgid "Generate Randomly" -msgstr "Generera slumpmässigt" - -msgid "Info" -msgstr "Info" - -msgid "List of additional Bt tracker" -msgstr "Lista över extra Bt-tracker" - -msgid "List of extra settings" -msgstr "Lista över extra inställningar" - -msgid "Log file is in the config file dir." -msgstr "Logg-filen är i konfigurationsfilens mapp." - -msgid "Log level" -msgstr "LoggnivÃ¥" - -msgid "Max concurrent downloads" -msgstr "Maximalt sammanhängande nerladdningar" - -msgid "Max connection per server" -msgstr "Max antalet anslutningar per server" - -msgid "Max number of peers per torrent" -msgstr "Maximalt antalet jämlikar per torrent" - -msgid "Max number of split" -msgstr "Högst antal split" - -msgid "Min split size" -msgstr "Minsta split-storlek" - -msgid "No Authentication" -msgstr "Ingen autentisering" - -msgid "Notice" -msgstr "Avisering" - -msgid "Off" -msgstr "Av" - -msgid "Open WebUI-Aria2" -msgstr "Öppna WebUI-Aria2" - -msgid "Open YAAW" -msgstr "Öppna YAAW" - -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 "Prealloc" - -msgid "Preallocation" -msgstr "Förallokering" - -msgid "Prefix of peer ID" -msgstr "Peer-ID prefix" - -msgid "RPC Token" -msgstr "" - -msgid "RPC authentication method" -msgstr "" - -msgid "RPC password" -msgstr "RPC-lösenord" - -msgid "RPC port" -msgstr "RPC-port" - -msgid "RPC username" -msgstr "RPC-användarnamn" - -msgid "Run daemon as user" -msgstr "Kör daemonen som användare" - -msgid "Sec" -msgstr "Sek" - -msgid "Task Settings" -msgstr "Inställningar för uppgifter" - -msgid "The Aria2 service is not running." -msgstr "Aria2-tjänsten körs inte." - -msgid "The Aria2 service is running." -msgstr "Aria2-tjänsten körs." - -msgid "Token" -msgstr "Tecken" - -msgid "Trunc" -msgstr "" - -msgid "Use WebSocket" -msgstr "Använd WebSocket" - -msgid "User agent value" -msgstr "Använd agent-värde" - -msgid "Username & Password" -msgstr "Användarnamn & Lösenord" - -msgid "View Json-RPC URL" -msgstr "Visa Json-RPC URL" - -msgid "Warn" -msgstr "Varna" - -msgid "in bytes, You can append K or M." -msgstr "i bytes, Du kan bifoga K eller M." - -msgid "in bytes/sec, You can append K or M." -msgstr "i bytes/sek, Du kan bifoga K eller M." diff --git a/package/luci/applications/luci-app-aria2/po/templates/aria2.pot b/package/luci/applications/luci-app-aria2/po/templates/aria2.pot deleted file mode 100644 index 357c0ae760..0000000000 --- a/package/luci/applications/luci-app-aria2/po/templates/aria2.pot +++ /dev/null @@ -1,208 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "\"Falloc\" is not available in all cases." -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "LPD 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 & 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 "" diff --git a/package/luci/applications/luci-app-aria2/po/zh-cn/aria2.po b/package/luci/applications/luci-app-aria2/po/zh-cn/aria2.po deleted file mode 100644 index 0b7eea21c7..0000000000 --- a/package/luci/applications/luci-app-aria2/po/zh-cn/aria2.po +++ /dev/null @@ -1,221 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2017-10-28 16:10+0800\n" -"X-Generator: Gtranslator 2.91.7\n" - -msgid "\"Falloc\" is not available in all cases." -msgstr "\"Falloc\" 并不是在所有情况下都可用" - -msgid "DHT enabled" -msgstr "启用DHT" - -msgid "LPD enabled" -msgstr "启用LPD" - -msgid "Additional Bt tracker enabled" -msgstr "添加额外的Tracker" - -msgid "Aria2" -msgstr "Aria2" - -msgid "Aria2 Settings" -msgstr "Aria2 配置" - -msgid "Aria2 Status" -msgstr "Aria2 状态" - -msgid "" -"Aria2 is a multi-protocol & multi-source download utility, here you can " -"configure the settings." -msgstr "Aria2 是一个支持多协议多线程的下载器, 您可以在这里对其进行配置。" - -msgid "Autosave session interval" -msgstr "定时保存会话间隔" - -msgid "BitTorrent Settings" -msgstr "BitTorrent 设置" - -msgid "BitTorrent listen port" -msgstr "BitTorrent 监听端口" - -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 "快速 alloc(Falloc)" - -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 "附加 Bt tracker 列表" - -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 "打开 WebUI-Aria2" - -msgid "Open YAAW" -msgstr "打开 YAAW" - -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 "Peer ID 前缀" - -msgid "RPC Token" -msgstr "RPC 令牌" - -msgid "RPC authentication method" -msgstr "RPC 认证方式" - -msgid "RPC password" -msgstr "RPC 密码" - -msgid "RPC port" -msgstr "RPC 端口" - -msgid "RPC username" -msgstr "RPC 用户名" - -msgid "Run daemon as user" -msgstr "以此用户权限运行" - -msgid "Sec" -msgstr "秒" - -msgid "Task Settings" -msgstr "任务设置" - -msgid "The Aria2 service is not running." -msgstr "Aria2 未运行" - -msgid "The Aria2 service is running." -msgstr "Aria2 正在运行" - -msgid "Token" -msgstr "令牌" - -msgid "Trunc" -msgstr "" - -msgid "Use WebSocket" -msgstr "使用 WebSocket" - -msgid "User agent value" -msgstr "用户代理(UA)" - -msgid "Username & Password" -msgstr "用户名与密码" - -msgid "View Json-RPC URL" -msgstr "查看 Json-RPC URL" - -msgid "Warn" -msgstr "警告" - -msgid "in bytes, You can append K or M." -msgstr "单位 B, 您可以在数字后跟上 K 或 M。" - -msgid "in bytes/sec, You can append K or M." -msgstr "单位 B/s, 您可以在数字后跟上 K 或 M。" - -#~ msgid "General settings" -#~ msgstr "基本设置" diff --git a/package/luci/applications/luci-app-aria2/po/zh-tw/aria2.po b/package/luci/applications/luci-app-aria2/po/zh-tw/aria2.po deleted file mode 100644 index d6782cf7fe..0000000000 --- a/package/luci/applications/luci-app-aria2/po/zh-tw/aria2.po +++ /dev/null @@ -1,221 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2017-10-28 16:10+0800\n" -"X-Generator: Gtranslator 2.91.7\n" - -msgid "\"Falloc\" is not available in all cases." -msgstr "\"Falloc\" 並不是在所有情況下都可用" - -msgid "DHT enabled" -msgstr "啟用DHT" - -msgid "LPD enabled" -msgstr "啟用LPD" - -msgid "Additional Bt tracker enabled" -msgstr "新增額外的Tracker" - -msgid "Aria2" -msgstr "Aria2" - -msgid "Aria2 Settings" -msgstr "Aria2 配置" - -msgid "Aria2 Status" -msgstr "Aria2 狀態" - -msgid "" -"Aria2 is a multi-protocol & multi-source download utility, here you can " -"configure the settings." -msgstr "Aria2 是一個支援多協議多執行緒的下載器, 您可以在這裡對其進行配置。" - -msgid "Autosave session interval" -msgstr "定時儲存會話間隔" - -msgid "BitTorrent Settings" -msgstr "BitTorrent 設定" - -msgid "BitTorrent listen port" -msgstr "BitTorrent 監聽埠" - -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 "快速 alloc(Falloc)" - -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 "附加 Bt tracker 列表" - -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 "開啟 WebUI-Aria2" - -msgid "Open YAAW" -msgstr "開啟 YAAW" - -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 "Peer ID 字首" - -msgid "RPC Token" -msgstr "RPC 令牌" - -msgid "RPC authentication method" -msgstr "RPC 認證方式" - -msgid "RPC password" -msgstr "RPC 密碼" - -msgid "RPC port" -msgstr "RPC 埠" - -msgid "RPC username" -msgstr "RPC 使用者名稱" - -msgid "Run daemon as user" -msgstr "以此使用者許可權執行" - -msgid "Sec" -msgstr "秒" - -msgid "Task Settings" -msgstr "任務設定" - -msgid "The Aria2 service is not running." -msgstr "Aria2 未執行" - -msgid "The Aria2 service is running." -msgstr "Aria2 正在執行" - -msgid "Token" -msgstr "令牌" - -msgid "Trunc" -msgstr "" - -msgid "Use WebSocket" -msgstr "使用 WebSocket" - -msgid "User agent value" -msgstr "使用者代理(UA)" - -msgid "Username & Password" -msgstr "使用者名稱與密碼" - -msgid "View Json-RPC URL" -msgstr "檢視 Json-RPC URL" - -msgid "Warn" -msgstr "警告" - -msgid "in bytes, You can append K or M." -msgstr "單位 B, 您可以在數字後跟上 K 或 M。" - -msgid "in bytes/sec, You can append K or M." -msgstr "單位 B/s, 您可以在數字後跟上 K 或 M。" - -#~ msgid "General settings" -#~ msgstr "基本設定" diff --git a/package/luci/applications/luci-app-aria2/root/etc/uci-defaults/40_luci-aria2 b/package/luci/applications/luci-app-aria2/root/etc/uci-defaults/40_luci-aria2 deleted file mode 100755 index 3a9ba5b29a..0000000000 --- a/package/luci/applications/luci-app-aria2/root/etc/uci-defaults/40_luci-aria2 +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@aria2[-1] - add ucitrack aria2 - set ucitrack.@aria2[-1].init=aria2 - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-asterisk/Makefile b/package/luci/applications/luci-app-asterisk/Makefile deleted file mode 100644 index 3434e167f4..0000000000 --- a/package/luci/applications/luci-app-asterisk/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Asterisk - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-asterisk/luasrc/asterisk.lua b/package/luci/applications/luci-app-asterisk/luasrc/asterisk.lua deleted file mode 100644 index ceb738d112..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/asterisk.lua +++ /dev/null @@ -1,746 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.asterisk", package.seeall) -require("luci.asterisk.cc_idd") - -local _io = require("io") -local uci = require("luci.model.uci").cursor() -local sys = require("luci.sys") -local util = require("luci.util") - -AST_BIN = "/usr/sbin/asterisk" -AST_FLAGS = "-r -x" - - ---- LuCI Asterisk - Resync uci context -function uci_resync() - uci = luci.model.uci.cursor() -end - ---- LuCI Asterisk io interface --- Handles low level io. --- @type module -io = luci.util.class() - ---- Execute command and return output --- @param command String containing the command to execute --- @return String containing the command output -function io.exec(command) - local fh = _io.popen( "%s %s %q" %{ AST_BIN, AST_FLAGS, command }, "r" ) - assert(fh, "Failed to invoke asterisk") - - local buffer = fh:read("*a") - fh:close() - return buffer -end - ---- Execute command and invoke given callback for each readed line --- @param command String containing the command to execute --- @param callback Function to call back for each line --- @return Always true -function io.execl(command, callback) - local ln - local fh = _io.popen( "%s %s %q" %{ AST_BIN, AST_FLAGS, command }, "r" ) - assert(fh, "Failed to invoke asterisk") - - repeat - ln = fh:read("*l") - callback(ln) - until not ln - - fh:close() - return true -end - ---- Execute command and return an iterator that returns one line per invokation --- @param command String containing the command to execute --- @return Iterator function -function io.execi(command) - local fh = _io.popen( "%s %s %q" %{ AST_BIN, AST_FLAGS, command }, "r" ) - assert(fh, "Failed to invoke asterisk") - - return function() - local ln = fh:read("*l") - if not ln then fh:close() end - return ln - end -end - - ---- LuCI Asterisk - core status -core = luci.util.class() - ---- Retrive version string. --- @return String containing the reported asterisk version -function core.version(self) - local version = io.exec("core show version") - return version:gsub(" *\n", "") -end - - ---- LuCI Asterisk - SIP information. --- @type module -sip = luci.util.class() - ---- Get a list of known SIP peers --- @return Table containing each SIP peer -function sip.peers(self) - local head = false - local peers = { } - - for line in io.execi("sip show peers") do - if not head then - head = true - elseif not line:match(" sip peers ") then - local online, delay, id, uid - local name, host, dyn, nat, acl, port, status = - line:match("(.-) +(.-) +([D ]) ([N ]) (.) (%d+) +(.+)") - - if host == '(Unspecified)' then host = nil end - if port == '0' then port = nil else port = tonumber(port) end - - dyn = ( dyn == 'D' and true or false ) - nat = ( nat == 'N' and true or false ) - acl = ( acl ~= ' ' and true or false ) - - online, delay = status:match("(OK) %((%d+) ms%)") - - if online == 'OK' then - online = true - delay = tonumber(delay) - elseif status ~= 'Unmonitored' then - online = false - delay = 0 - else - online = nil - delay = 0 - end - - id, uid = name:match("(.+)/(.+)") - - if not ( id and uid ) then - id = name .. "..." - uid = nil - end - - peers[#peers+1] = { - online = online, - delay = delay, - name = id, - user = uid, - dynamic = dyn, - nat = nat, - acl = acl, - host = host, - port = port - } - end - end - - return peers -end - ---- Get informations of given SIP peer --- @param peer String containing the name of the SIP peer -function sip.peer(peer) - local info = { } - local keys = { } - - for line in io.execi("sip show peer " .. peer) do - if #line > 0 then - local key, val = line:match("(.-) *: +(.*)") - if key and val then - - key = key:gsub("^ +",""):gsub(" +$", "") - val = val:gsub("^ +",""):gsub(" +$", "") - - if key == "* Name" then - key = "Name" - elseif key == "Addr->IP" then - info.address, info.port = val:match("(.+) Port (.+)") - info.port = tonumber(info.port) - elseif key == "Status" then - info.online, info.delay = val:match("(OK) %((%d+) ms%)") - if info.online == 'OK' then - info.online = true - info.delay = tonumber(info.delay) - elseif status ~= 'Unmonitored' then - info.online = false - info.delay = 0 - else - info.online = nil - info.delay = 0 - end - end - - if val == 'Yes' or val == 'yes' or val == '' then - val = true - elseif val == 'No' or val == 'no' then - val = false - elseif val == '' or val == '(none)' then - val = nil - end - - keys[#keys+1] = key - info[key] = val - end - end - end - - return info, keys -end - - ---- LuCI Asterisk - Internal helpers --- @type module -tools = luci.util.class() - ---- Convert given value to a list of tokens. Split by white space. --- @param val String or table value --- @return Table containing tokens -function tools.parse_list(v) - local tokens = { } - - v = type(v) == "table" and v or { v } - for _, v in ipairs(v) do - if type(v) == "string" then - for v in v:gmatch("(%S+)") do - tokens[#tokens+1] = v - end - end - end - - return tokens -end - ---- Convert given list to a collection of hyperlinks --- @param list Table of tokens --- @param url String pattern or callback function to construct urls (optional) --- @param sep String containing the seperator (optional, default is ", ") --- @return String containing the html fragment -function tools.hyperlinks(list, url, sep) - local html - - local function mkurl(p, t) - if type(p) == "string" then - return p:format(t) - elseif type(p) == "function" then - return p(t) - else - return '#' - end - end - - list = list or { } - url = url or "%s" - sep = sep or ", " - - for _, token in ipairs(list) do - html = ( html and html .. sep or '' ) .. - '%s' %{ mkurl(url, token), token } - end - - return html or '' -end - - ---- LuCI Asterisk - International Direct Dialing Prefixes --- @type module -idd = luci.util.class() - ---- Lookup the country name for the given IDD code. --- @param country String containing IDD code --- @return String containing the country name -function idd.country(c) - for _, v in ipairs(cc_idd.CC_IDD) do - if type(v[3]) == "table" then - for _, v2 in ipairs(v[3]) do - if v2 == tostring(c) then - return v[1] - end - end - elseif v[3] == tostring(c) then - return v[1] - end - end -end - ---- Lookup the country code for the given IDD code. --- @param country String containing IDD code --- @return Table containing the country code(s) -function idd.cc(c) - for _, v in ipairs(cc_idd.CC_IDD) do - if type(v[3]) == "table" then - for _, v2 in ipairs(v[3]) do - if v2 == tostring(c) then - return type(v[2]) == "table" - and v[2] or { v[2] } - end - end - elseif v[3] == tostring(c) then - return type(v[2]) == "table" - and v[2] or { v[2] } - end - end -end - ---- Lookup the IDD code(s) for the given country. --- @param idd String containing the country name --- @return Table containing the IDD code(s) -function idd.idd(c) - for _, v in ipairs(cc_idd.CC_IDD) do - if v[1]:lower():match(c:lower()) then - return type(v[3]) == "table" - and v[3] or { v[3] } - end - end -end - ---- Populate given CBI field with IDD codes. --- @param field CBI option object --- @return (nothing) -function idd.cbifill(o) - for i, v in ipairs(cc_idd.CC_IDD) do - o:value("_%i" % i, util.pcdata(v[1])) - end - - o.formvalue = function(...) - local val = luci.cbi.Value.formvalue(...) - if val:sub(1,1) == "_" then - val = tonumber((val:gsub("^_", ""))) - if val then - return type(cc_idd.CC_IDD[val][3]) == "table" - and cc_idd.CC_IDD[val][3] or { cc_idd.CC_IDD[val][3] } - end - end - return val - end - - o.cfgvalue = function(...) - local val = luci.cbi.Value.cfgvalue(...) - if val then - val = tools.parse_list(val) - for i, v in ipairs(cc_idd.CC_IDD) do - if type(v[3]) == "table" then - if v[3][1] == val[1] then - return "_%i" % i - end - else - if v[3] == val[1] then - return "_%i" % i - end - end - end - end - return val - end -end - - ---- LuCI Asterisk - Country Code Prefixes --- @type module -cc = luci.util.class() - ---- Lookup the country name for the given CC code. --- @param country String containing CC code --- @return String containing the country name -function cc.country(c) - for _, v in ipairs(cc_idd.CC_IDD) do - if type(v[2]) == "table" then - for _, v2 in ipairs(v[2]) do - if v2 == tostring(c) then - return v[1] - end - end - elseif v[2] == tostring(c) then - return v[1] - end - end -end - ---- Lookup the international dialing code for the given CC code. --- @param cc String containing CC code --- @return String containing IDD code -function cc.idd(c) - for _, v in ipairs(cc_idd.CC_IDD) do - if type(v[2]) == "table" then - for _, v2 in ipairs(v[2]) do - if v2 == tostring(c) then - return type(v[3]) == "table" - and v[3] or { v[3] } - end - end - elseif v[2] == tostring(c) then - return type(v[3]) == "table" - and v[3] or { v[3] } - end - end -end - ---- Lookup the CC code(s) for the given country. --- @param country String containing the country name --- @return Table containing the CC code(s) -function cc.cc(c) - for _, v in ipairs(cc_idd.CC_IDD) do - if v[1]:lower():match(c:lower()) then - return type(v[2]) == "table" - and v[2] or { v[2] } - end - end -end - ---- Populate given CBI field with CC codes. --- @param field CBI option object --- @return (nothing) -function cc.cbifill(o) - for i, v in ipairs(cc_idd.CC_IDD) do - o:value("_%i" % i, util.pcdata(v[1])) - end - - o.formvalue = function(...) - local val = luci.cbi.Value.formvalue(...) - if val:sub(1,1) == "_" then - val = tonumber((val:gsub("^_", ""))) - if val then - return type(cc_idd.CC_IDD[val][2]) == "table" - and cc_idd.CC_IDD[val][2] or { cc_idd.CC_IDD[val][2] } - end - end - return val - end - - o.cfgvalue = function(...) - local val = luci.cbi.Value.cfgvalue(...) - if val then - val = tools.parse_list(val) - for i, v in ipairs(cc_idd.CC_IDD) do - if type(v[2]) == "table" then - if v[2][1] == val[1] then - return "_%i" % i - end - else - if v[2] == val[1] then - return "_%i" % i - end - end - end - end - return val - end -end - - ---- LuCI Asterisk - Dialzone --- @type module -dialzone = luci.util.class() - ---- Parse a dialzone section --- @param zone Table containing the zone info --- @return Table with parsed information -function dialzone.parse(z) - if z['.name'] then - return { - trunks = tools.parse_list(z.uses), - name = z['.name'], - description = z.description or z['.name'], - addprefix = z.addprefix, - matches = tools.parse_list(z.match), - intlmatches = tools.parse_list(z.international), - countrycode = z.countrycode, - localzone = z.localzone, - localprefix = z.localprefix - } - end -end - ---- Get a list of known dial zones --- @return Associative table of zones and table of zone names -function dialzone.zones() - local zones = { } - local znames = { } - uci:foreach("asterisk", "dialzone", - function(z) - zones[z['.name']] = dialzone.parse(z) - znames[#znames+1] = z['.name'] - end) - return zones, znames -end - ---- Get a specific dial zone --- @param name Name of the dial zone --- @return Table containing zone information -function dialzone.zone(n) - local zone - uci:foreach("asterisk", "dialzone", - function(z) - if z['.name'] == n then - zone = dialzone.parse(z) - end - end) - return zone -end - ---- Find uci section hash for given zone number --- @param idx Zone number --- @return String containing the uci hash pointing to the section -function dialzone.ucisection(i) - local hash - local index = 1 - i = tonumber(i) - uci:foreach("asterisk", "dialzone", - function(z) - if not hash and index == i then - hash = z['.name'] - end - index = index + 1 - end) - return hash -end - - ---- LuCI Asterisk - Voicemailbox --- @type module -voicemail = luci.util.class() - ---- Parse a voicemail section --- @param zone Table containing the mailbox info --- @return Table with parsed information -function voicemail.parse(z) - if z.number and #z.number > 0 then - local v = { - id = '%s@%s' %{ z.number, z.context or 'default' }, - number = z.number, - context = z.context or 'default', - name = z.name or z['.name'] or 'OpenWrt', - zone = z.zone or 'homeloc', - password = z.password or '0000', - email = z.email or '', - page = z.page or '', - dialplans = { } - } - - uci:foreach("asterisk", "dialplanvoice", - function(s) - if s.dialplan and #s.dialplan > 0 and - s.voicebox == v.number - then - v.dialplans[#v.dialplans+1] = s.dialplan - end - end) - - return v - end -end - ---- Get a list of known voicemail boxes --- @return Associative table of boxes and table of box numbers -function voicemail.boxes() - local vboxes = { } - local vnames = { } - uci:foreach("asterisk", "voicemail", - function(z) - local v = voicemail.parse(z) - if v then - local n = '%s@%s' %{ v.number, v.context } - vboxes[n] = v - vnames[#vnames+1] = n - end - end) - return vboxes, vnames -end - ---- Get a specific voicemailbox --- @param number Number of the voicemailbox --- @return Table containing mailbox information -function voicemail.box(n) - local box - n = n:gsub("@.+$","") - uci:foreach("asterisk", "voicemail", - function(z) - if z.number == tostring(n) then - box = voicemail.parse(z) - end - end) - return box -end - ---- Find all voicemailboxes within the given dialplan --- @param plan Dialplan name or table --- @return Associative table containing extensions mapped to mailbox info -function voicemail.in_dialplan(p) - local plan = type(p) == "string" and p or p.name - local boxes = { } - uci:foreach("asterisk", "dialplanvoice", - function(s) - if s.extension and #s.extension > 0 and s.dialplan == plan then - local box = voicemail.box(s.voicebox) - if box then - boxes[s.extension] = box - end - end - end) - return boxes -end - ---- Remove voicemailbox and associated extensions from config --- @param box Voicemailbox number or table --- @param ctx UCI context to use (optional) --- @return Boolean indicating success -function voicemail.remove(v, ctx) - ctx = ctx or uci - local box = type(v) == "string" and v or v.number - local ok1 = ctx:delete_all("asterisk", "voicemail", {number=box}) - local ok2 = ctx:delete_all("asterisk", "dialplanvoice", {voicebox=box}) - return ( ok1 or ok2 ) and true or false -end - - ---- LuCI Asterisk - MeetMe Conferences --- @type module -meetme = luci.util.class() - ---- Parse a meetme section --- @param room Table containing the room info --- @return Table with parsed information -function meetme.parse(r) - if r.room and #r.room > 0 then - local v = { - room = r.room, - pin = r.pin or '', - adminpin = r.adminpin or '', - description = r._description or '', - dialplans = { } - } - - uci:foreach("asterisk", "dialplanmeetme", - function(s) - if s.dialplan and #s.dialplan > 0 and s.room == v.room then - v.dialplans[#v.dialplans+1] = s.dialplan - end - end) - - return v - end -end - ---- Get a list of known meetme rooms --- @return Associative table of rooms and table of room numbers -function meetme.rooms() - local mrooms = { } - local mnames = { } - uci:foreach("asterisk", "meetme", - function(r) - local v = meetme.parse(r) - if v then - mrooms[v.room] = v - mnames[#mnames+1] = v.room - end - end) - return mrooms, mnames -end - ---- Get a specific meetme room --- @param number Number of the room --- @return Table containing room information -function meetme.room(n) - local room - uci:foreach("asterisk", "meetme", - function(r) - if r.room == tostring(n) then - room = meetme.parse(r) - end - end) - return room -end - ---- Find all meetme rooms within the given dialplan --- @param plan Dialplan name or table --- @return Associative table containing extensions mapped to room info -function meetme.in_dialplan(p) - local plan = type(p) == "string" and p or p.name - local rooms = { } - uci:foreach("asterisk", "dialplanmeetme", - function(s) - if s.extension and #s.extension > 0 and s.dialplan == plan then - local room = meetme.room(s.room) - if room then - rooms[s.extension] = room - end - end - end) - return rooms -end - ---- Remove meetme room and associated extensions from config --- @param room Voicemailbox number or table --- @param ctx UCI context to use (optional) --- @return Boolean indicating success -function meetme.remove(v, ctx) - ctx = ctx or uci - local room = type(v) == "string" and v or v.number - local ok1 = ctx:delete_all("asterisk", "meetme", {room=room}) - local ok2 = ctx:delete_all("asterisk", "dialplanmeetme", {room=room}) - return ( ok1 or ok2 ) and true or false -end - - ---- LuCI Asterisk - Dialplan --- @type module -dialplan = luci.util.class() - ---- Parse a dialplan section --- @param plan Table containing the plan info --- @return Table with parsed information -function dialplan.parse(z) - if z['.name'] then - local plan = { - zones = { }, - name = z['.name'], - description = z.description or z['.name'] - } - - -- dialzones - for _, name in ipairs(tools.parse_list(z.include)) do - local zone = dialzone.zone(name) - if zone then - plan.zones[#plan.zones+1] = zone - end - end - - -- voicemailboxes - plan.voicemailboxes = voicemail.in_dialplan(plan) - - -- meetme conferences - plan.meetmerooms = meetme.in_dialplan(plan) - - return plan - end -end - ---- Get a list of known dial plans --- @return Associative table of plans and table of plan names -function dialplan.plans() - local plans = { } - local pnames = { } - uci:foreach("asterisk", "dialplan", - function(p) - plans[p['.name']] = dialplan.parse(p) - pnames[#pnames+1] = p['.name'] - end) - return plans, pnames -end - ---- Get a specific dial plan --- @param name Name of the dial plan --- @return Table containing plan information -function dialplan.plan(n) - local plan - uci:foreach("asterisk", "dialplan", - function(p) - if p['.name'] == n then - plan = dialplan.parse(p) - end - end) - return plan -end diff --git a/package/luci/applications/luci-app-asterisk/luasrc/asterisk/cc_idd.lua b/package/luci/applications/luci-app-asterisk/luasrc/asterisk/cc_idd.lua deleted file mode 100644 index 6ed8dfd450..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/asterisk/cc_idd.lua +++ /dev/null @@ -1,245 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module "luci.asterisk.cc_idd" - -CC_IDD = { --- Country, CC, IDD - { "Afghanistan", "93", "00" }, - { "Albania", "355", "00" }, - { "Algeria", "213", "00" }, - { "American Samoa", "684", "00" }, - { "Andorra", "376", "00" }, - { "Angola", "244", "00" }, - { "Anguilla", "264", "011" }, - { "Antarctica", "672", "" }, - { "Antigua", "268", "011" }, - { "Argentina", "54", "00" }, - { "Armenia", "374", "00" }, - { "Aruba", "297", "00" }, - { "Ascension Island", "247", "00" }, - { "Australia", "61", "0011" }, - { "Austria", "43", "00" }, - { "Azberbaijan", "994", "00" }, - { "Bahamas", "242", "011" }, - { "Bahrain", "973", "00" }, - { "Bangladesh", "880", "00" }, - { "Barbados", "246", "011" }, - { "Barbuda", "268", "011" }, - { "Belarus", "375", "810" }, - { "Belgium", "32", "00" }, - { "Belize", "501", "00" }, - { "Benin", "229", "00" }, - { "Bermuda", "441", "011" }, - { "Bhutan", "975", "00" }, - { "Bolivia", "591", "00" }, - { "Bosnia", "387", "00" }, - { "Botswana", "267", "00" }, - { "Brazil", "55", "00" }, - { "British Virgin Islands", "284", "011" }, - { "Brunei", "673", "00" }, - { "Bulgaria", "359", "00" }, - { "Burkina Faso", "226", "00" }, - { "Burma (Myanmar)", "95", "00" }, - { "Burundi", "257", "00" }, - { "Cambodia", "855", "001" }, - { "Cameroon", "237", "00" }, - { "Canada", "1", "011" }, - { "Cape Verde Islands", "238", "0" }, - { "Cayman Islands", "345", "011" }, - { "Central African Rep.", "236", "00" }, - { "Chad", "235", "15" }, - { "Chile", "56", "00" }, - { "China", "86", "00" }, - { "Christmas Island", "61", "0011" }, - { "Cocos Islands", "61", "0011" }, - { "Colombia", "57", "00" }, - { "Comoros", "269", "00" }, - { "Congo", "242", "00" }, - { "Congo, Dem. Rep. of", "243", "00" }, - { "Cook Islands", "682", "00" }, - { "Costa Rica", "506", "00" }, - { "Croatia", "385", "00" }, - { "Cuba", "53", "119" }, - { "Cyprus", "357", "00" }, - { "Czech Republic", "420", "00" }, - { "Denmark", "45", "00" }, - { "Diego Garcia", "246", "00" }, - { "Djibouti", "253", "00" }, - { "Dominica", "767", "011" }, - { "Dominican Rep.", "809", "011" }, - { "Ecuador", "593", "00" }, - { "Egypt", "20", "00" }, - { "El Salvador", "503", "00" }, - { "Equatorial Guinea", "240", "00" }, - { "Eritrea", "291", "00" }, - { "Estonia", "372", "00" }, - { "Ethiopia", "251", "00" }, - { "Faeroe Islands", "298", "00" }, - { "Falkland Islands", "500", "00" }, - { "Fiji Islands", "679", "00" }, - { "Finland", "358", "00" }, - { "France", "33", "00" }, - { "French Antilles", "596", "00" }, - { "French Guiana", "594", "00" }, - { "French Polynesia", "689", "00" }, - { "Gabon", "241", "00" }, - { "Gambia", "220", "00" }, - { "Georgia", "995", "810" }, - { "Germany", "49", "00" }, - { "Ghana", "233", "00" }, - { "Gibraltar", "350", "00" }, - { "Greece", "30", "00" }, - { "Greenland", "299", "00" }, - { "Grenada", "473", "011" }, - { "Guadeloupe", "590", "00" }, - { "Guam", "671", "011" }, - { "Guantanamo Bay", "5399", "00" }, - { "Guatemala", "502", "00" }, - { "Guinea", "224", "00" }, - { "Guinea Bissau", "245", "00" }, - { "Guyana", "592", "001" }, - { "Haiti", "509", "00" }, - { "Honduras", "504", "00" }, - { "Hong Kong", "852", "001" }, - { "Hungary", "36", "00" }, - { "Iceland", "354", "00" }, - { "India", "91", "00" }, - { "Indonesia", "62", { "001", "008" } }, - { "Iran", "98", "00" }, - { "Iraq", "964", "00" }, - { "Ireland", "353", "00" }, - { "Israel", "972", "00" }, - { "Italy", "39", "00" }, - { "Ivory Coast", "225", "00" }, - { "Jamaica", "876", "011" }, - { "Japan", "81", "001" }, - { "Jordan", "962", "00" }, - { "Kazakhstan", "7", "810" }, - { "Kenya", "254", "000" }, - { "Kiribati", "686", "00" }, - { "Korea, North", "850", "00" }, - { "Korea, South", "82", "001" }, - { "Kuwait", "965", "00" }, - { "Kyrgyzstan", "996", "00" }, - { "Laos", "856", "00" }, - { "Latvia", "371", "00" }, - { "Lebanon", "961", "00" }, - { "Lesotho", "266", "00" }, - { "Liberia", "231", "00" }, - { "Libya", "218", "00" }, - { "Liechtenstein", "423", "00" }, - { "Lithuania", "370", "00" }, - { "Luxembourg", "352", "00" }, - { "Macau", "853", "00" }, - { "Macedonia", "389", "00" }, - { "Madagascar", "261", "00" }, - { "Malawi", "265", "00" }, - { "Malaysia", "60", "00" }, - { "Maldives", "960", "00" }, - { "Mali", "223", "00" }, - { "Malta", "356", "00" }, - { "Mariana Islands", "670", "011" }, - { "Marshall Islands", "692", "011" }, - { "Martinique", "596", "00" }, - { "Mauritania", "222", "00" }, - { "Mauritius", "230", "00" }, - { "Mayotte Islands", "269", "00" }, - { "Mexico", "52", "00" }, - { "Micronesia", "691", "011" }, - { "Midway Island", "808", "011" }, - { "Moldova", "373", "00" }, - { "Monaco", "377", "00" }, - { "Mongolia", "976", "001" }, - { "Montserrat", "664", "011" }, - { "Morocco", "212", "00" }, - { "Mozambique", "258", "00" }, - { "Myanmar (Burma)", "95", "00" }, - { "Namibia", "264", "00" }, - { "Nauru", "674", "00" }, - { "Nepal", "977", "00" }, - { "Netherlands", "31", "00" }, - { "Netherlands Antilles", "599", "00" }, - { "Nevis", "869", "011" }, - { "New Caledonia", "687", "00" }, - { "New Zealand", "64", "00" }, - { "Nicaragua", "505", "00" }, - { "Niger", "227", "00" }, - { "Nigeria", "234", "009" }, - { "Niue", "683", "00" }, - { "Norfolk Island", "672", "00" }, - { "Norway", "47", "00" }, - { "Oman", "968", "00" }, - { "Pakistan", "92", "00" }, - { "Palau", "680", "011" }, - { "Palestine", "970", "00" }, - { "Panama", "507", "00" }, - { "Papua New Guinea", "675", "05" }, - { "Paraguay", "595", "002" }, - { "Peru", "51", "00" }, - { "Philippines", "63", "00" }, - { "Poland", "48", "00" }, - { "Portugal", "351", "00" }, - { "Puerto Rico", { "787", "939" }, "011" }, - { "Qatar", "974", "00" }, - { "Reunion Island", "262", "00" }, - { "Romania", "40", "00" }, - { "Russia", "7", "810" }, - { "Rwanda", "250", "00" }, - { "St. Helena", "290", "00" }, - { "St. Kitts", "869", "011" }, - { "St. Lucia", "758", "011" }, - { "St. Perre & Miquelon", "508", "00" }, - { "St. Vincent", "784", "011" }, - { "San Marino", "378", "00" }, - { "Sao Tome & Principe", "239", "00" }, - { "Saudi Arabia", "966", "00" }, - { "Senegal", "221", "00" }, - { "Serbia", "381", "99" }, - { "Seychelles", "248", "00" }, - { "Sierra Leone", "232", "00" }, - { "Singapore", "65", "001" }, - { "Slovakia", "421", "00" }, - { "Slovenia", "386", "00" }, - { "Solomon Islands", "677", "00" }, - { "Somalia", "252", "00" }, - { "South Africa", "27", "09" }, - { "Spain", "34", "00" }, - { "Sri Lanka", "94", "00" }, - { "Sudan", "249", "00" }, - { "Suriname", "597", "00" }, - { "Swaziland", "268", "00" }, - { "Sweden", "46", "00" }, - { "Switzerland", "41", "00" }, - { "Syria", "963", "00" }, - { "Taiwan", "886", "002" }, - { "Tajikistan", "992", "810" }, - { "Tanzania", "255", "00" }, - { "Thailand", "66", "001" }, - { "Togo", "228", "00" }, - { "Tonga", "676", "00" }, - { "Trinidad & Tobago", "868", "011" }, - { "Tunisia", "216", "00" }, - { "Turkey", "90", "00" }, - { "Turkmenistan", "993", "810" }, - { "Turks & Caicos", "649", "011" }, - { "Tuvalu", "688", "00" }, - { "Uganda", "256", "000" }, - { "Ukraine", "380", "810" }, - { "United Arab Emirates", "971", "00" }, - { "United Kingdom", "44", "00" }, - { "Uruguay", "598", "00" }, - { "USA", "1", "011" }, - { "US Virgin Islands", "340", "011" }, - { "Uzbekistan", "998", "810" }, - { "Vanuatu", "678", "00" }, - { "Vatican City", "39", "00" }, - { "Venezuela", "58", "00" }, - { "Vietnam", "84", "00" }, - { "Wake Island", "808", "00" }, - { "Wallis & Futuna", "681", "19" }, - { "Western Samoa", "685", "00" }, - { "Yemen", "967", "00" }, - { "Yugoslavia", "381", "99" }, - { "Zambia", "260", "00" }, - { "Zimbabwe", "263", "00" } -} diff --git a/package/luci/applications/luci-app-asterisk/luasrc/controller/asterisk.lua b/package/luci/applications/luci-app-asterisk/luasrc/controller/asterisk.lua deleted file mode 100644 index 4923584c9a..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/controller/asterisk.lua +++ /dev/null @@ -1,194 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.asterisk", package.seeall) - -function index() - - entry({"admin", "services", "asterisk"}, cbi("asterisk"), "Asterisk", 80) - - entry({"admin", "services", "asterisk", "voice"}, cbi("asterisk-voice"), "Voice Functions", 1) - entry({"admin", "services", "asterisk", "meetme"}, cbi("asterisk-meetme"), "Meetme Conferences", 2) - - entry({"admin", "services", "asterisk", "iax-conns"}, cbi("asterisk-iax-connections"), "IAX Connections", 3) - entry({"admin", "services", "asterisk", "sip-conns"}, cbi("asterisk-sip-connections"), "SIP Connections", 4) - - entry({"admin", "services", "asterisk", "dialplans"}, cbi("asterisk-dialplans"), "Dial Plans", 5) - - entry({"admin", "services", "asterisk", "mod"}, cbi("asterisk-mod-app"), "Modules", 4) - entry({"admin", "services", "asterisk", "mod", "app"}, cbi("asterisk-mod-app"), "Applications", 1) - entry({"admin", "services", "asterisk", "mod", "cdr"}, cbi("asterisk-mod-cdr"), "Call Detail Records", 2) - entry({"admin", "services", "asterisk", "mod", "chan"}, cbi("asterisk-mod-chan"), "Channels", 3) - entry({"admin", "services", "asterisk", "mod", "codec"}, cbi("asterisk-mod-codec"), "Codecs", 4) - entry({"admin", "services", "asterisk", "mod", "format"}, cbi("asterisk-mod-format"), "Format", 5) - entry({"admin", "services", "asterisk", "mod", "func"}, cbi("asterisk-mod-func"), "Functions", 6) - entry({"admin", "services", "asterisk", "mod", "pbx"}, cbi("asterisk-mod-pbx"), "PBX", 7) - entry({"admin", "services", "asterisk", "mod", "res"}, cbi("asterisk-mod-res"), "Resources", 8) - entry({"admin", "services", "asterisk", "mod", "res", "feature"}, - cbi("asterisk-mod-res-feature"), "Feature Module Configuration", 9 ) - - - entry({"admin", "asterisk"}, cbi("asterisk/main"), "Asterisk", 99).i18n = "asterisk" - - entry({"admin", "asterisk", "phones"}, cbi("asterisk/phones"), "Phones", 1) - entry({"admin", "asterisk", "phones", "sip"}, cbi("asterisk/phone_sip"), nil, 1).leaf = true - --entry({"admin", "asterisk", "phones", "exten"}, cbi("asterisk/phone_exten"), "Extensions", 2).leaf = true - - entry({"admin", "asterisk", "trunks"}, cbi("asterisk/trunks"), "Trunks", 2) - entry({"admin", "asterisk", "trunks", "sip"}, cbi("asterisk/trunk_sip"), nil, 1).leaf = true - - entry({"admin", "asterisk", "voicemail"}, cbi("asterisk/voicemail"), "Voicemail", 3) - entry({"admin", "asterisk", "voicemail", "mailboxes"}, cbi("asterisk/voicemail"), "Mailboxes", 1) - entry({"admin", "asterisk", "voicemail", "settings"}, cbi("asterisk/voicemail_settings"), "Settings", 2) - - entry({"admin", "asterisk", "meetme"}, cbi("asterisk/meetme"), "MeetMe", 4) - entry({"admin", "asterisk", "meetme", "rooms"}, cbi("asterisk/meetme"), "Rooms", 1) - entry({"admin", "asterisk", "meetme", "settings"}, cbi("asterisk/meetme_settings"), "Settings", 2) - - entry({"admin", "asterisk", "dialplans"}, call("handle_dialplan"), "Call Routing", 5) - entry({"admin", "asterisk", "dialplans", "out"}, cbi("asterisk/dialplan_out"), nil, 1).leaf = true - entry({"admin", "asterisk", "dialplans", "zones"}, call("handle_dialzones"), "Dial Zones", 2).leaf = true - -end - - -function handle_dialplan() - local uci = luci.model.uci.cursor() - local ast = require "luci.asterisk" - local err = false - - for k, v in pairs(luci.http.formvaluetable("delzone")) do - local plan = ast.dialplan.plan(k) - if #v > 0 and plan then - local newinc = { } - - for _, z in ipairs(plan.zones) do - if z.name ~= v then - newinc[#newinc+1] = z.name - end - end - - uci:delete("asterisk", plan.name, "include") - - if #newinc > 0 then - uci:set("asterisk", plan.name, "include", newinc) - end - end - end - - for k, v in pairs(luci.http.formvaluetable("addzone")) do - local plan = ast.dialplan.plan(k) - local zone = ast.dialzone.zone(v) - if #v > 0 and plan and zone then - local newinc = { zone.name } - - for _, z in ipairs(plan.zones) do - newinc[#newinc+1] = z.name - end - - uci:delete("asterisk", plan.name, "include") - - if #newinc > 0 then - uci:set("asterisk", plan.name, "include", newinc) - end - end - end - - for k, v in pairs(luci.http.formvaluetable("delvbox")) do - local plan = ast.dialplan.plan(k) - if #v > 0 and plan then - uci:delete_all("asterisk", "dialplanvoice", - { extension=v, dialplan=plan.name }) - end - end - - for k, v in pairs(luci.http.formvaluetable("addvbox")) do - local plan = ast.dialplan.plan(k) - local vbox = ast.voicemail.box(v) - if plan and vbox then - local vext = luci.http.formvalue("addvboxext.%s" % plan.name) - vext = ( vext and #vext > 0 ) and vext or vbox.number - uci:section("asterisk", "dialplanvoice", nil, { - dialplan = plan.name, - extension = vext, - voicebox = vbox.number, - voicecontext = vbox.context - }) - end - end - - for k, v in pairs(luci.http.formvaluetable("delmeetme")) do - local plan = ast.dialplan.plan(k) - if #v > 0 and plan then - uci:delete_all("asterisk", "dialplanmeetme", - { extension=v, dialplan=plan.name }) - end - end - - for k, v in pairs(luci.http.formvaluetable("addmeetme")) do - local plan = ast.dialplan.plan(k) - local meetme = ast.meetme.room(v) - if plan and meetme then - local mext = luci.http.formvalue("addmeetmeext.%s" % plan.name) - mext = ( mext and #mext > 0 ) and mext or meetme.room - uci:section("asterisk", "dialplanmeetme", nil, { - dialplan = plan.name, - extension = mext, - room = meetme.room - }) - end - end - - local aname = luci.http.formvalue("addplan") - if aname and #aname > 0 then - if aname:match("^[a-zA-Z0-9_]+$") then - uci:section("asterisk", "dialplan", aname, { }) - else - err = true - end - end - - local dname = luci.http.formvalue("delplan") - if dname and #dname > 0 then - if uci:get("asterisk", dname) == "dialplan" then - uci:delete("asterisk", dname) - uci:delete_all("asterisk", "dialplanvoice", { dialplan=dname }) - uci:delete_all("asterisk", "dialplanmeetme", { dialplan=dname }) - end - end - - uci:save("asterisk") - ast.uci_resync() - - luci.template.render("asterisk/dialplans", { create_error = err }) -end - -function handle_dialzones() - local ast = require "luci.asterisk" - local uci = luci.model.uci.cursor() - local err = false - - if luci.http.formvalue("newzone") then - local name = luci.http.formvalue("newzone_name") - if name and name:match("^[a-zA-Z0-9_]+$") then - uci:section("asterisk", "dialzone", name, { - uses = ast.tools.parse_list(luci.http.formvalue("newzone_uses") or {}), - match = ast.tools.parse_list(luci.http.formvalue("newzone_match") or {}) - }) - uci:save("asterisk") - else - err = true - end - end - - if luci.http.formvalue("delzone") then - local name = luci.http.formvalue("delzone") - if uci:get("asterisk", name) == "dialzone" then - uci:delete("asterisk", name) - uci:save("asterisk") - end - end - - luci.template.render("asterisk/dialzones", { create_error = err }) -end diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-dialplans.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-dialplans.lua deleted file mode 100644 index d4daa68738..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-dialplans.lua +++ /dev/null @@ -1,91 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -dialplan = cbimap:section(TypedSection, "dialplan", "Section dialplan", "") -dialplan.addremove = true -dialplan.dynamic = true - -include = dialplan:option(MultiValue, "include", "Include zones and plans", "") -cbimap.uci:foreach( "asterisk", "dialplan", function(s) include:value(s['.name']) end ) -cbimap.uci:foreach( "asterisk", "dialzone", function(s) include:value(s['.name']) end ) - -dialplanexten = cbimap:section(TypedSection, "dialplanexten", "Dialplan Extension", "") -dialplanexten.anonymous = true -dialplanexten.addremove = true -dialplanexten.dynamic = true - - -dialplangeneral = cbimap:section(TypedSection, "dialplangeneral", "Dialplan General Options", "") -dialplangeneral.anonymous = true -dialplangeneral.addremove = true - -allowtransfer = dialplangeneral:option(Flag, "allowtransfer", "Allow transfer", "") -allowtransfer.rmempty = true - -canreinvite = dialplangeneral:option(ListValue, "canreinvite", "Reinvite/redirect media connections", "") -canreinvite:value("yes", "Yes") -canreinvite:value("nonat", "Yes when not behind NAT") -canreinvite:value("update", "Use UPDATE rather than INVITE for path redirection") -canreinvite:value("no", "No") -canreinvite.rmempty = true - -clearglobalvars = dialplangeneral:option(Flag, "clearglobalvars", "Clear global vars", "") -clearglobalvars.rmempty = true - - -dialplangoto = cbimap:section(TypedSection, "dialplangoto", "Dialplan Goto", "") -dialplangoto.anonymous = true -dialplangoto.addremove = true -dialplangoto.dynamic = true - - -dialplanmeetme = cbimap:section(TypedSection, "dialplanmeetme", "Dialplan Conference", "") -dialplanmeetme.anonymous = true -dialplanmeetme.addremove = true -dialplanmeetme.dynamic = true - - -dialplansaytime = cbimap:section(TypedSection, "dialplansaytime", "Dialplan Time", "") -dialplansaytime.anonymous = true -dialplansaytime.addremove = true -dialplansaytime.dynamic = true - - -dialplanvoice = cbimap:section(TypedSection, "dialplanvoice", "Dialplan Voicemail", "") -dialplanvoice.anonymous = true -dialplanvoice.addremove = true -dialplanvoice.dynamic = true - - -dialzone = cbimap:section(TypedSection, "dialzone", "Dial Zones for Dialplan", "") -dialzone.addremove = true -dialzone.template = "cbi/tblsection" - -addprefix = dialzone:option(Value, "addprefix", "Prefix to add matching dialplans", "") -addprefix.rmempty = true - ---international = dialzone:option(DynamicList, "international", "Match International prefix", "") -international = dialzone:option(Value, "international", "Match International prefix", "") -international.rmempty = true - -localprefix = dialzone:option(Value, "localprefix", "Prefix (0) to add/remove to/from intl. numbers", "") -localprefix.rmempty = true - -localzone = dialzone:option(Value, "localzone", "Dialzone for intl. numbers matched as local", "") -localzone.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk", "dialplans" ) -cbimap.uci:foreach( "asterisk", "dialplan", function(s) localzone:value(s['.name']) end ) -cbimap.uci:foreach( "asterisk", "dialzone", function(s) localzone:value(s['.name']) end ) - -match = dialzone:option(Value, "match", "Match plan", "") -match.rmempty = true - -uses = dialzone:option(ListValue, "uses", "Connection to use", "") -uses.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk", "sip-conns" ) -cbimap.uci:foreach( "asterisk", "sip", function(s) uses:value('SIP/'..s['.name']) end ) -cbimap.uci:foreach( "asterisk", "iax", function(s) uses:value('IAX/'..s['.name']) end ) - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-iax-connections.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-iax-connections.lua deleted file mode 100644 index d0eaf34bfb..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-iax-connections.lua +++ /dev/null @@ -1,49 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -iax = cbimap:section(TypedSection, "iax", "IAX Connection", "") -iax.addremove = true - -alwaysinternational = iax:option(Flag, "alwaysinternational", "Always Dial International", "") -alwaysinternational.optional = true - -context = iax:option(ListValue, "context", "Context to use", "") -context.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk", "dialplans" ) -cbimap.uci:foreach( "asterisk", "dialplan", function(s) context:value(s['.name']) end ) -cbimap.uci:foreach( "asterisk", "dialzone", function(s) context:value(s['.name']) end ) - -countrycode = iax:option(Value, "countrycode", "Country Code for connection", "") -countrycode.optional = true - -extension = iax:option(Value, "extension", "Add as Extension", "") -extension.optional = true - -host = iax:option(Value, "host", "Host name (or blank)", "") -host.optional = true - -internationalprefix = iax:option(Value, "internationalprefix", "International Dial Prefix", "") -internationalprefix.optional = true - -prefix = iax:option(Value, "prefix", "Dial Prefix (for external line)", "") -prefix.optional = true - -secret = iax:option(Value, "secret", "Secret", "") -secret.optional = true - -timeout = iax:option(Value, "timeout", "Dial Timeout (sec)", "") -timeout.optional = true - -type = iax:option(ListValue, "type", "Option type", "") -type:value("friend", "Friend (outbound/inbound)") -type:value("user", "User (inbound - authenticate by \"from\")") -type:value("peer", "Peer (outbound - match by host)") -type.optional = true - -username = iax:option(Value, "username", "User name", "") -username.optional = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-meetme.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-meetme.lua deleted file mode 100644 index dd79e46387..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-meetme.lua +++ /dev/null @@ -1,22 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -meetmegeneral = cbimap:section(TypedSection, "meetmegeneral", "Meetme Conference General Options", "") - -audiobuffers = meetmegeneral:option(Value, "audiobuffers", "Number of 20ms audio buffers to be used", "") - - -meetme = cbimap:section(TypedSection, "meetme", "Meetme Conference", "") -meetme.addremove = true - -adminpin = meetme:option(Value, "adminpin", "Admin PIN", "") -adminpin.password = true - -pin = meetme:option(Value, "pin", "Meeting PIN", "") -pin.password = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-app.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-app.lua deleted file mode 100644 index 72685b0110..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-app.lua +++ /dev/null @@ -1,391 +0,0 @@ -cbimap = Map("asterisk", "asterisk", "") - -module = cbimap:section(TypedSection, "module", "Modules", "") -module.anonymous = true - -app_alarmreceiver = module:option(ListValue, "app_alarmreceiver", "Alarm Receiver Application", "") -app_alarmreceiver:value("yes", "Load") -app_alarmreceiver:value("no", "Do Not Load") -app_alarmreceiver:value("auto", "Load as Required") -app_alarmreceiver.rmempty = true - -app_authenticate = module:option(ListValue, "app_authenticate", "Authentication Application", "") -app_authenticate:value("yes", "Load") -app_authenticate:value("no", "Do Not Load") -app_authenticate:value("auto", "Load as Required") -app_authenticate.rmempty = true - -app_cdr = module:option(ListValue, "app_cdr", "Make sure asterisk doesn't save CDR", "") -app_cdr:value("yes", "Load") -app_cdr:value("no", "Do Not Load") -app_cdr:value("auto", "Load as Required") -app_cdr.rmempty = true - -app_chanisavail = module:option(ListValue, "app_chanisavail", "Check if channel is available", "") -app_chanisavail:value("yes", "Load") -app_chanisavail:value("no", "Do Not Load") -app_chanisavail:value("auto", "Load as Required") -app_chanisavail.rmempty = true - -app_chanspy = module:option(ListValue, "app_chanspy", "Listen in on any channel", "") -app_chanspy:value("yes", "Load") -app_chanspy:value("no", "Do Not Load") -app_chanspy:value("auto", "Load as Required") -app_chanspy.rmempty = true - -app_controlplayback = module:option(ListValue, "app_controlplayback", "Control Playback Application", "") -app_controlplayback:value("yes", "Load") -app_controlplayback:value("no", "Do Not Load") -app_controlplayback:value("auto", "Load as Required") -app_controlplayback.rmempty = true - -app_cut = module:option(ListValue, "app_cut", "Cuts up variables", "") -app_cut:value("yes", "Load") -app_cut:value("no", "Do Not Load") -app_cut:value("auto", "Load as Required") -app_cut.rmempty = true - -app_db = module:option(ListValue, "app_db", "Database access functions", "") -app_db:value("yes", "Load") -app_db:value("no", "Do Not Load") -app_db:value("auto", "Load as Required") -app_db.rmempty = true - -app_dial = module:option(ListValue, "app_dial", "Dialing Application", "") -app_dial:value("yes", "Load") -app_dial:value("no", "Do Not Load") -app_dial:value("auto", "Load as Required") -app_dial.rmempty = true - -app_dictate = module:option(ListValue, "app_dictate", "Virtual Dictation Machine Application", "") -app_dictate:value("yes", "Load") -app_dictate:value("no", "Do Not Load") -app_dictate:value("auto", "Load as Required") -app_dictate.rmempty = true - -app_directed_pickup = module:option(ListValue, "app_directed_pickup", "Directed Call Pickup Support", "") -app_directed_pickup:value("yes", "Load") -app_directed_pickup:value("no", "Do Not Load") -app_directed_pickup:value("auto", "Load as Required") -app_directed_pickup.rmempty = true - -app_directory = module:option(ListValue, "app_directory", "Extension Directory", "") -app_directory:value("yes", "Load") -app_directory:value("no", "Do Not Load") -app_directory:value("auto", "Load as Required") -app_directory.rmempty = true - -app_disa = module:option(ListValue, "app_disa", "DISA (Direct Inward System Access) Application", "") -app_disa:value("yes", "Load") -app_disa:value("no", "Do Not Load") -app_disa:value("auto", "Load as Required") -app_disa.rmempty = true - -app_dumpchan = module:option(ListValue, "app_dumpchan", "Dump channel variables Application", "") -app_dumpchan:value("yes", "Load") -app_dumpchan:value("no", "Do Not Load") -app_dumpchan:value("auto", "Load as Required") -app_dumpchan.rmempty = true - -app_echo = module:option(ListValue, "app_echo", "Simple Echo Application", "") -app_echo:value("yes", "Load") -app_echo:value("no", "Do Not Load") -app_echo:value("auto", "Load as Required") -app_echo.rmempty = true - -app_enumlookup = module:option(ListValue, "app_enumlookup", "ENUM Lookup", "") -app_enumlookup:value("yes", "Load") -app_enumlookup:value("no", "Do Not Load") -app_enumlookup:value("auto", "Load as Required") -app_enumlookup.rmempty = true - -app_eval = module:option(ListValue, "app_eval", "Reevaluates strings", "") -app_eval:value("yes", "Load") -app_eval:value("no", "Do Not Load") -app_eval:value("auto", "Load as Required") -app_eval.rmempty = true - -app_exec = module:option(ListValue, "app_exec", "Executes applications", "") -app_exec:value("yes", "Load") -app_exec:value("no", "Do Not Load") -app_exec:value("auto", "Load as Required") -app_exec.rmempty = true - -app_externalivr = module:option(ListValue, "app_externalivr", "External IVR application interface", "") -app_externalivr:value("yes", "Load") -app_externalivr:value("no", "Do Not Load") -app_externalivr:value("auto", "Load as Required") -app_externalivr.rmempty = true - -app_forkcdr = module:option(ListValue, "app_forkcdr", "Fork The CDR into 2 separate entities", "") -app_forkcdr:value("yes", "Load") -app_forkcdr:value("no", "Do Not Load") -app_forkcdr:value("auto", "Load as Required") -app_forkcdr.rmempty = true - -app_getcpeid = module:option(ListValue, "app_getcpeid", "Get ADSI CPE ID", "") -app_getcpeid:value("yes", "Load") -app_getcpeid:value("no", "Do Not Load") -app_getcpeid:value("auto", "Load as Required") -app_getcpeid.rmempty = true - -app_groupcount = module:option(ListValue, "app_groupcount", "Group Management Routines", "") -app_groupcount:value("yes", "Load") -app_groupcount:value("no", "Do Not Load") -app_groupcount:value("auto", "Load as Required") -app_groupcount.rmempty = true - -app_ices = module:option(ListValue, "app_ices", "Encode and Stream via icecast and ices", "") -app_ices:value("yes", "Load") -app_ices:value("no", "Do Not Load") -app_ices:value("auto", "Load as Required") -app_ices.rmempty = true - -app_image = module:option(ListValue, "app_image", "Image Transmission Application", "") -app_image:value("yes", "Load") -app_image:value("no", "Do Not Load") -app_image:value("auto", "Load as Required") -app_image.rmempty = true - -app_lookupblacklist = module:option(ListValue, "app_lookupblacklist", "Look up Caller*ID name/number from black", "") -app_lookupblacklist:value("yes", "Load") -app_lookupblacklist:value("no", "Do Not Load") -app_lookupblacklist:value("auto", "Load as Required") -app_lookupblacklist.rmempty = true - -app_lookupcidname = module:option(ListValue, "app_lookupcidname", "Look up CallerID Name from local databas", "") -app_lookupcidname:value("yes", "Load") -app_lookupcidname:value("no", "Do Not Load") -app_lookupcidname:value("auto", "Load as Required") -app_lookupcidname.rmempty = true - -app_macro = module:option(ListValue, "app_macro", "Extension Macros", "") -app_macro:value("yes", "Load") -app_macro:value("no", "Do Not Load") -app_macro:value("auto", "Load as Required") -app_macro.rmempty = true - -app_math = module:option(ListValue, "app_math", "A simple math Application", "") -app_math:value("yes", "Load") -app_math:value("no", "Do Not Load") -app_math:value("auto", "Load as Required") -app_math.rmempty = true - -app_md5 = module:option(ListValue, "app_md5", "MD5 checksum Application", "") -app_md5:value("yes", "Load") -app_md5:value("no", "Do Not Load") -app_md5:value("auto", "Load as Required") -app_md5.rmempty = true - -app_milliwatt = module:option(ListValue, "app_milliwatt", "Digital Milliwatt (mu-law) Test Application", "") -app_milliwatt:value("yes", "Load") -app_milliwatt:value("no", "Do Not Load") -app_milliwatt:value("auto", "Load as Required") -app_milliwatt.rmempty = true - -app_mixmonitor = module:option(ListValue, "app_mixmonitor", "Record a call and mix the audio during the recording", "") -app_mixmonitor:value("yes", "Load") -app_mixmonitor:value("no", "Do Not Load") -app_mixmonitor:value("auto", "Load as Required") -app_mixmonitor.rmempty = true - -app_parkandannounce = module:option(ListValue, "app_parkandannounce", "Call Parking and Announce Application", "") -app_parkandannounce:value("yes", "Load") -app_parkandannounce:value("no", "Do Not Load") -app_parkandannounce:value("auto", "Load as Required") -app_parkandannounce.rmempty = true - -app_playback = module:option(ListValue, "app_playback", "Trivial Playback Application", "") -app_playback:value("yes", "Load") -app_playback:value("no", "Do Not Load") -app_playback:value("auto", "Load as Required") -app_playback.rmempty = true - -app_privacy = module:option(ListValue, "app_privacy", "Require phone number to be entered", "") -app_privacy:value("yes", "Load") -app_privacy:value("no", "Do Not Load") -app_privacy:value("auto", "Load as Required") -app_privacy.rmempty = true - -app_queue = module:option(ListValue, "app_queue", "True Call Queueing", "") -app_queue:value("yes", "Load") -app_queue:value("no", "Do Not Load") -app_queue:value("auto", "Load as Required") -app_queue.rmempty = true - -app_random = module:option(ListValue, "app_random", "Random goto", "") -app_random:value("yes", "Load") -app_random:value("no", "Do Not Load") -app_random:value("auto", "Load as Required") -app_random.rmempty = true - -app_read = module:option(ListValue, "app_read", "Read Variable Application", "") -app_read:value("yes", "Load") -app_read:value("no", "Do Not Load") -app_read:value("auto", "Load as Required") -app_read.rmempty = true - -app_readfile = module:option(ListValue, "app_readfile", "Read in a file", "") -app_readfile:value("yes", "Load") -app_readfile:value("no", "Do Not Load") -app_readfile:value("auto", "Load as Required") -app_readfile.rmempty = true - -app_realtime = module:option(ListValue, "app_realtime", "Realtime Data Lookup/Rewrite", "") -app_realtime:value("yes", "Load") -app_realtime:value("no", "Do Not Load") -app_realtime:value("auto", "Load as Required") -app_realtime.rmempty = true - -app_record = module:option(ListValue, "app_record", "Trivial Record Application", "") -app_record:value("yes", "Load") -app_record:value("no", "Do Not Load") -app_record:value("auto", "Load as Required") -app_record.rmempty = true - -app_sayunixtime = module:option(ListValue, "app_sayunixtime", "Say time", "") -app_sayunixtime:value("yes", "Load") -app_sayunixtime:value("no", "Do Not Load") -app_sayunixtime:value("auto", "Load as Required") -app_sayunixtime.rmempty = true - -app_senddtmf = module:option(ListValue, "app_senddtmf", "Send DTMF digits Application", "") -app_senddtmf:value("yes", "Load") -app_senddtmf:value("no", "Do Not Load") -app_senddtmf:value("auto", "Load as Required") -app_senddtmf.rmempty = true - -app_sendtext = module:option(ListValue, "app_sendtext", "Send Text Applications", "") -app_sendtext:value("yes", "Load") -app_sendtext:value("no", "Do Not Load") -app_sendtext:value("auto", "Load as Required") -app_sendtext.rmempty = true - -app_setcallerid = module:option(ListValue, "app_setcallerid", "Set CallerID Application", "") -app_setcallerid:value("yes", "Load") -app_setcallerid:value("no", "Do Not Load") -app_setcallerid:value("auto", "Load as Required") -app_setcallerid.rmempty = true - -app_setcdruserfield = module:option(ListValue, "app_setcdruserfield", "CDR user field apps", "") -app_setcdruserfield:value("yes", "Load") -app_setcdruserfield:value("no", "Do Not Load") -app_setcdruserfield:value("auto", "Load as Required") -app_setcdruserfield.rmempty = true - -app_setcidname = module:option(ListValue, "app_setcidname", "load => .so ; Set CallerID Name", "") -app_setcidname:value("yes", "Load") -app_setcidname:value("no", "Do Not Load") -app_setcidname:value("auto", "Load as Required") -app_setcidname.rmempty = true - -app_setcidnum = module:option(ListValue, "app_setcidnum", "load => .so ; Set CallerID Number", "") -app_setcidnum:value("yes", "Load") -app_setcidnum:value("no", "Do Not Load") -app_setcidnum:value("auto", "Load as Required") -app_setcidnum.rmempty = true - -app_setrdnis = module:option(ListValue, "app_setrdnis", "Set RDNIS Number", "") -app_setrdnis:value("yes", "Load") -app_setrdnis:value("no", "Do Not Load") -app_setrdnis:value("auto", "Load as Required") -app_setrdnis.rmempty = true - -app_settransfercapability = module:option(ListValue, "app_settransfercapability", "Set ISDN Transfer Capability", "") -app_settransfercapability:value("yes", "Load") -app_settransfercapability:value("no", "Do Not Load") -app_settransfercapability:value("auto", "Load as Required") -app_settransfercapability.rmempty = true - -app_sms = module:option(ListValue, "app_sms", "SMS/PSTN handler", "") -app_sms:value("yes", "Load") -app_sms:value("no", "Do Not Load") -app_sms:value("auto", "Load as Required") -app_sms.rmempty = true - -app_softhangup = module:option(ListValue, "app_softhangup", "Hangs up the requested channel", "") -app_softhangup:value("yes", "Load") -app_softhangup:value("no", "Do Not Load") -app_softhangup:value("auto", "Load as Required") -app_softhangup.rmempty = true - -app_stack = module:option(ListValue, "app_stack", "Stack Routines", "") -app_stack:value("yes", "Load") -app_stack:value("no", "Do Not Load") -app_stack:value("auto", "Load as Required") -app_stack.rmempty = true - -app_system = module:option(ListValue, "app_system", "Generic System() application", "") -app_system:value("yes", "Load") -app_system:value("no", "Do Not Load") -app_system:value("auto", "Load as Required") -app_system.rmempty = true - -app_talkdetect = module:option(ListValue, "app_talkdetect", "Playback with Talk Detection", "") -app_talkdetect:value("yes", "Load") -app_talkdetect:value("no", "Do Not Load") -app_talkdetect:value("auto", "Load as Required") -app_talkdetect.rmempty = true - -app_test = module:option(ListValue, "app_test", "Interface Test Application", "") -app_test:value("yes", "Load") -app_test:value("no", "Do Not Load") -app_test:value("auto", "Load as Required") -app_test.rmempty = true - -app_transfer = module:option(ListValue, "app_transfer", "Transfer", "") -app_transfer:value("yes", "Load") -app_transfer:value("no", "Do Not Load") -app_transfer:value("auto", "Load as Required") -app_transfer.rmempty = true - -app_txtcidname = module:option(ListValue, "app_txtcidname", "TXTCIDName", "") -app_txtcidname:value("yes", "Load") -app_txtcidname:value("no", "Do Not Load") -app_txtcidname:value("auto", "Load as Required") -app_txtcidname.rmempty = true - -app_url = module:option(ListValue, "app_url", "Send URL Applications", "") -app_url:value("yes", "Load") -app_url:value("no", "Do Not Load") -app_url:value("auto", "Load as Required") -app_url.rmempty = true - -app_userevent = module:option(ListValue, "app_userevent", "Custom User Event Application", "") -app_userevent:value("yes", "Load") -app_userevent:value("no", "Do Not Load") -app_userevent:value("auto", "Load as Required") -app_userevent.rmempty = true - -app_verbose = module:option(ListValue, "app_verbose", "Send verbose output", "") -app_verbose:value("yes", "Load") -app_verbose:value("no", "Do Not Load") -app_verbose:value("auto", "Load as Required") -app_verbose.rmempty = true - -app_voicemail = module:option(ListValue, "app_voicemail", "Voicemail", "") -app_voicemail:value("yes", "Load") -app_voicemail:value("no", "Do Not Load") -app_voicemail:value("auto", "Load as Required") -app_voicemail.rmempty = true - -app_waitforring = module:option(ListValue, "app_waitforring", "Waits until first ring after time", "") -app_waitforring:value("yes", "Load") -app_waitforring:value("no", "Do Not Load") -app_waitforring:value("auto", "Load as Required") -app_waitforring.rmempty = true - -app_waitforsilence = module:option(ListValue, "app_waitforsilence", "Wait For Silence Application", "") -app_waitforsilence:value("yes", "Load") -app_waitforsilence:value("no", "Do Not Load") -app_waitforsilence:value("auto", "Load as Required") -app_waitforsilence.rmempty = true - -app_while = module:option(ListValue, "app_while", "While Loops and Conditional Execution", "") -app_while:value("yes", "Load") -app_while:value("no", "Do Not Load") -app_while:value("auto", "Load as Required") -app_while.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-cdr.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-cdr.lua deleted file mode 100644 index 13dcba5101..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-cdr.lua +++ /dev/null @@ -1,47 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -module = cbimap:section(TypedSection, "module", "Modules", "") -module.anonymous = true - -cdr_csv = module:option(ListValue, "cdr_csv", "Comma Separated Values CDR Backend", "") -cdr_csv:value("yes", "Load") -cdr_csv:value("no", "Do Not Load") -cdr_csv:value("auto", "Load as Required") -cdr_csv.rmempty = true - -cdr_custom = module:option(ListValue, "cdr_custom", "Customizable Comma Separated Values CDR Backend", "") -cdr_custom:value("yes", "Load") -cdr_custom:value("no", "Do Not Load") -cdr_custom:value("auto", "Load as Required") -cdr_custom.rmempty = true - -cdr_manager = module:option(ListValue, "cdr_manager", "Asterisk Call Manager CDR Backend", "") -cdr_manager:value("yes", "Load") -cdr_manager:value("no", "Do Not Load") -cdr_manager:value("auto", "Load as Required") -cdr_manager.rmempty = true - -cdr_mysql = module:option(ListValue, "cdr_mysql", "MySQL CDR Backend", "") -cdr_mysql:value("yes", "Load") -cdr_mysql:value("no", "Do Not Load") -cdr_mysql:value("auto", "Load as Required") -cdr_mysql.rmempty = true - -cdr_pgsql = module:option(ListValue, "cdr_pgsql", "PostgreSQL CDR Backend", "") -cdr_pgsql:value("yes", "Load") -cdr_pgsql:value("no", "Do Not Load") -cdr_pgsql:value("auto", "Load as Required") -cdr_pgsql.rmempty = true - -cdr_sqlite = module:option(ListValue, "cdr_sqlite", "SQLite CDR Backend", "") -cdr_sqlite:value("yes", "Load") -cdr_sqlite:value("no", "Do Not Load") -cdr_sqlite:value("auto", "Load as Required") -cdr_sqlite.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-chan.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-chan.lua deleted file mode 100644 index 425569dd0c..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-chan.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - - -module = cbimap:section(TypedSection, "module", "Modules", "") -module.anonymous = true - -chan_agent = module:option(ListValue, "chan_agent", "Agent Proxy Channel", "") -chan_agent:value("yes", "Load") -chan_agent:value("no", "Do Not Load") -chan_agent:value("auto", "Load as Required") -chan_agent.rmempty = true - -chan_alsa = module:option(ListValue, "chan_alsa", "Channel driver for GTalk", "") -chan_alsa:value("yes", "Load") -chan_alsa:value("no", "Do Not Load") -chan_alsa:value("auto", "Load as Required") -chan_alsa.rmempty = true - -chan_gtalk = module:option(ListValue, "chan_gtalk", "Channel driver for GTalk", "") -chan_gtalk:value("yes", "Load") -chan_gtalk:value("no", "Do Not Load") -chan_gtalk:value("auto", "Load as Required") -chan_gtalk.rmempty = true - -chan_iax2 = module:option(Flag, "chan_iax2", "Option chan_iax2", "") -chan_iax2.rmempty = true - -chan_local = module:option(ListValue, "chan_local", "Local Proxy Channel", "") -chan_local:value("yes", "Load") -chan_local:value("no", "Do Not Load") -chan_local:value("auto", "Load as Required") -chan_local.rmempty = true - -chan_sip = module:option(ListValue, "chan_sip", "Session Initiation Protocol (SIP)", "") -chan_sip:value("yes", "Load") -chan_sip:value("no", "Do Not Load") -chan_sip:value("auto", "Load as Required") -chan_sip.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-codec.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-codec.lua deleted file mode 100644 index 0893c0e2da..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-codec.lua +++ /dev/null @@ -1,53 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -module = cbimap:section(TypedSection, "module", "Modules", "") -module.anonymous = true - -codec_a_mu = module:option(ListValue, "codec_a_mu", "A-law and Mulaw direct Coder/Decoder", "") -codec_a_mu:value("yes", "Load") -codec_a_mu:value("no", "Do Not Load") -codec_a_mu:value("auto", "Load as Required") -codec_a_mu.rmempty = true - -codec_adpcm = module:option(ListValue, "codec_adpcm", "Adaptive Differential PCM Coder/Decoder", "") -codec_adpcm:value("yes", "Load") -codec_adpcm:value("no", "Do Not Load") -codec_adpcm:value("auto", "Load as Required") -codec_adpcm.rmempty = true - -codec_alaw = module:option(ListValue, "codec_alaw", "A-law Coder/Decoder", "") -codec_alaw:value("yes", "Load") -codec_alaw:value("no", "Do Not Load") -codec_alaw:value("auto", "Load as Required") -codec_alaw.rmempty = true - -codec_g726 = module:option(ListValue, "codec_g726", "ITU G.726-32kbps G726 Transcoder", "") -codec_g726:value("yes", "Load") -codec_g726:value("no", "Do Not Load") -codec_g726:value("auto", "Load as Required") -codec_g726.rmempty = true - -codec_gsm = module:option(ListValue, "codec_gsm", "GSM/PCM16 (signed linear) Codec Translation", "") -codec_gsm:value("yes", "Load") -codec_gsm:value("no", "Do Not Load") -codec_gsm:value("auto", "Load as Required") -codec_gsm.rmempty = true - -codec_speex = module:option(ListValue, "codec_speex", "Speex/PCM16 (signed linear) Codec Translator", "") -codec_speex:value("yes", "Load") -codec_speex:value("no", "Do Not Load") -codec_speex:value("auto", "Load as Required") -codec_speex.rmempty = true - -codec_ulaw = module:option(ListValue, "codec_ulaw", "Mu-law Coder/Decoder", "") -codec_ulaw:value("yes", "Load") -codec_ulaw:value("no", "Do Not Load") -codec_ulaw:value("auto", "Load as Required") -codec_ulaw.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-format.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-format.lua deleted file mode 100644 index 9b59d94054..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-format.lua +++ /dev/null @@ -1,89 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -module = cbimap:section(TypedSection, "module", "Modules", "") -module.anonymous = true - -format_au = module:option(ListValue, "format_au", "Sun Microsystems AU format (signed linear)", "") -format_au:value("yes", "Load") -format_au:value("no", "Do Not Load") -format_au:value("auto", "Load as Required") -format_au.rmempty = true - -format_g723 = module:option(ListValue, "format_g723", "G.723.1 Simple Timestamp File Format", "") -format_g723:value("yes", "Load") -format_g723:value("no", "Do Not Load") -format_g723:value("auto", "Load as Required") -format_g723.rmempty = true - -format_g726 = module:option(ListValue, "format_g726", "Raw G.726 (16/24/32/40kbps) data", "") -format_g726:value("yes", "Load") -format_g726:value("no", "Do Not Load") -format_g726:value("auto", "Load as Required") -format_g726.rmempty = true - -format_g729 = module:option(ListValue, "format_g729", "Raw G729 data", "") -format_g729:value("yes", "Load") -format_g729:value("no", "Do Not Load") -format_g729:value("auto", "Load as Required") -format_g729.rmempty = true - -format_gsm = module:option(ListValue, "format_gsm", "Raw GSM data", "") -format_gsm:value("yes", "Load") -format_gsm:value("no", "Do Not Load") -format_gsm:value("auto", "Load as Required") -format_gsm.rmempty = true - -format_h263 = module:option(ListValue, "format_h263", "Raw h263 data", "") -format_h263:value("yes", "Load") -format_h263:value("no", "Do Not Load") -format_h263:value("auto", "Load as Required") -format_h263.rmempty = true - -format_jpeg = module:option(ListValue, "format_jpeg", "JPEG (Joint Picture Experts Group) Image", "") -format_jpeg:value("yes", "Load") -format_jpeg:value("no", "Do Not Load") -format_jpeg:value("auto", "Load as Required") -format_jpeg.rmempty = true - -format_pcm = module:option(ListValue, "format_pcm", "Raw uLaw 8khz Audio support (PCM)", "") -format_pcm:value("yes", "Load") -format_pcm:value("no", "Do Not Load") -format_pcm:value("auto", "Load as Required") -format_pcm.rmempty = true - -format_pcm_alaw = module:option(ListValue, "format_pcm_alaw", "load => .so ; Raw aLaw 8khz PCM Audio support", "") -format_pcm_alaw:value("yes", "Load") -format_pcm_alaw:value("no", "Do Not Load") -format_pcm_alaw:value("auto", "Load as Required") -format_pcm_alaw.rmempty = true - -format_sln = module:option(ListValue, "format_sln", "Raw Signed Linear Audio support (SLN)", "") -format_sln:value("yes", "Load") -format_sln:value("no", "Do Not Load") -format_sln:value("auto", "Load as Required") -format_sln.rmempty = true - -format_vox = module:option(ListValue, "format_vox", "Dialogic VOX (ADPCM) File Format", "") -format_vox:value("yes", "Load") -format_vox:value("no", "Do Not Load") -format_vox:value("auto", "Load as Required") -format_vox.rmempty = true - -format_wav = module:option(ListValue, "format_wav", "Microsoft WAV format (8000hz Signed Line", "") -format_wav:value("yes", "Load") -format_wav:value("no", "Do Not Load") -format_wav:value("auto", "Load as Required") -format_wav.rmempty = true - -format_wav_gsm = module:option(ListValue, "format_wav_gsm", "Microsoft WAV format (Proprietary GSM)", "") -format_wav_gsm:value("yes", "Load") -format_wav_gsm:value("no", "Do Not Load") -format_wav_gsm:value("auto", "Load as Required") -format_wav_gsm.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-func.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-func.lua deleted file mode 100644 index 04eb97473a..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-func.lua +++ /dev/null @@ -1,29 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -module = cbimap:section(TypedSection, "module", "Modules", "") -module.anonymous = true - -func_callerid = module:option(ListValue, "func_callerid", "Caller ID related dialplan functions", "") -func_callerid:value("yes", "Load") -func_callerid:value("no", "Do Not Load") -func_callerid:value("auto", "Load as Required") -func_callerid.rmempty = true - -func_enum = module:option(ListValue, "func_enum", "ENUM Functions", "") -func_enum:value("yes", "Load") -func_enum:value("no", "Do Not Load") -func_enum:value("auto", "Load as Required") -func_enum.rmempty = true - -func_uri = module:option(ListValue, "func_uri", "URI encoding / decoding functions", "") -func_uri:value("yes", "Load") -func_uri:value("no", "Do Not Load") -func_uri:value("auto", "Load as Required") -func_uri.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-pbx.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-pbx.lua deleted file mode 100644 index cca4f34d5f..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-pbx.lua +++ /dev/null @@ -1,53 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -module = cbimap:section(TypedSection, "module", "Modules", "") -module.anonymous = true - -pbx_ael = module:option(ListValue, "pbx_ael", "Asterisk Extension Language Compiler", "") -pbx_ael:value("yes", "Load") -pbx_ael:value("no", "Do Not Load") -pbx_ael:value("auto", "Load as Required") -pbx_ael.rmempty = true - -pbx_config = module:option(ListValue, "pbx_config", "Text Extension Configuration", "") -pbx_config:value("yes", "Load") -pbx_config:value("no", "Do Not Load") -pbx_config:value("auto", "Load as Required") -pbx_config.rmempty = true - -pbx_functions = module:option(ListValue, "pbx_functions", "load => .so ; Builtin dialplan functions", "") -pbx_functions:value("yes", "Load") -pbx_functions:value("no", "Do Not Load") -pbx_functions:value("auto", "Load as Required") -pbx_functions.rmempty = true - -pbx_loopback = module:option(ListValue, "pbx_loopback", "Loopback Switch", "") -pbx_loopback:value("yes", "Load") -pbx_loopback:value("no", "Do Not Load") -pbx_loopback:value("auto", "Load as Required") -pbx_loopback.rmempty = true - -pbx_realtime = module:option(ListValue, "pbx_realtime", "Realtime Switch", "") -pbx_realtime:value("yes", "Load") -pbx_realtime:value("no", "Do Not Load") -pbx_realtime:value("auto", "Load as Required") -pbx_realtime.rmempty = true - -pbx_spool = module:option(ListValue, "pbx_spool", "Outgoing Spool Support", "") -pbx_spool:value("yes", "Load") -pbx_spool:value("no", "Do Not Load") -pbx_spool:value("auto", "Load as Required") -pbx_spool.rmempty = true - -pbx_wilcalu = module:option(ListValue, "pbx_wilcalu", "Wil Cal U (Auto Dialer)", "") -pbx_wilcalu:value("yes", "Load") -pbx_wilcalu:value("no", "Do Not Load") -pbx_wilcalu:value("auto", "Load as Required") -pbx_wilcalu.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res-feature.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res-feature.lua deleted file mode 100644 index 7c818760d1..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res-feature.lua +++ /dev/null @@ -1,100 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -featuremap = cbimap:section(TypedSection, "featuremap", "Feature Key maps", "") -featuremap.anonymous = true -featuremap.addremove = true - -atxfer = featuremap:option(Value, "atxfer", "Attended transfer key", "") -atxfer.rmempty = true - -blindxfer = featuremap:option(Value, "blindxfer", "Blind transfer key", "") -blindxfer.rmempty = true - -disconnect = featuremap:option(Value, "disconnect", "Key to Disconnect call", "") -disconnect.rmempty = true - -parkcall = featuremap:option(Value, "parkcall", "Key to Park call", "") -parkcall.rmempty = true - - -featurepark = cbimap:section(TypedSection, "featurepark", "Parking Feature", "") -featurepark.anonymous = true - -parkenabled = featurepark:option(Flag, "parkenabled", "Enable Parking", "") - -adsipark = featurepark:option(Flag, "adsipark", "ADSI Park", "") -adsipark.rmempty = true -adsipark:depends({ parkenabled = "1" }) - -atxfernoanswertimeout = featurepark:option(Value, "atxfernoanswertimeout", "Attended transfer timeout (sec)", "") -atxfernoanswertimeout.rmempty = true -atxfernoanswertimeout:depends({ parkenabled = "1" }) - -automon = featurepark:option(Value, "automon", "One touch record key", "") -automon.rmempty = true -automon:depends({ parkenabled = "1" }) - -context = featurepark:option(Value, "context", "Name of call context for parking", "") -context.rmempty = true -context:depends({ parkenabled = "1" }) - -courtesytone = featurepark:option(Value, "courtesytone", "Sound file to play to parked caller", "") -courtesytone.rmempty = true -courtesytone:depends({ parkenabled = "1" }) - -featuredigittimeout = featurepark:option(Value, "featuredigittimeout", "Max time (ms) between digits for feature activation", "") -featuredigittimeout.rmempty = true -featuredigittimeout:depends({ parkenabled = "1" }) - -findslot = featurepark:option(ListValue, "findslot", "Method to Find Parking slot", "") -findslot:value("first", "First available slot") -findslot:value("next", "Next free parking space") -findslot.rmempty = true -findslot:depends({ parkenabled = "1" }) - -parkedmusicclass = featurepark:option(ListValue, "parkedmusicclass", "Music on Hold class for the parked channel", "") -parkedmusicclass.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk" ) -parkedmusicclass:depends({ parkenabled = "1" }) -cbimap.uci:foreach( "asterisk", "moh", function(s) parkedmusicclass:value(s['.name']) end ) - -parkedplay = featurepark:option(ListValue, "parkedplay", "Play courtesy tone to", "") -parkedplay:value("caller", "Caller") -parkedplay:value("parked", "Parked user") -parkedplay:value("both", "Both") -parkedplay.rmempty = true -parkedplay:depends({ parkenabled = "1" }) - -parkext = featurepark:option(Value, "parkext", "Extension to dial to park", "") -parkext.rmempty = true -parkext:depends({ parkenabled = "1" }) - -parkingtime = featurepark:option(Value, "parkingtime", "Parking time (secs)", "") -parkingtime.rmempty = true -parkingtime:depends({ parkenabled = "1" }) - -parkpos = featurepark:option(Value, "parkpos", "Range of extensions for call parking", "") -parkpos.rmempty = true -parkpos:depends({ parkenabled = "1" }) - -pickupexten = featurepark:option(Value, "pickupexten", "Pickup extension", "") -pickupexten.rmempty = true -pickupexten:depends({ parkenabled = "1" }) - -transferdigittimeout = featurepark:option(Value, "transferdigittimeout", "Seconds to wait between digits when transferring", "") -transferdigittimeout.rmempty = true -transferdigittimeout:depends({ parkenabled = "1" }) - -xferfailsound = featurepark:option(Value, "xferfailsound", "sound when attended transfer is complete", "") -xferfailsound.rmempty = true -xferfailsound:depends({ parkenabled = "1" }) - -xfersound = featurepark:option(Value, "xfersound", "Sound when attended transfer fails", "") -xfersound.rmempty = true -xfersound:depends({ parkenabled = "1" }) - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res.lua deleted file mode 100644 index 4bef199d8a..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res.lua +++ /dev/null @@ -1,77 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -module = cbimap:section(TypedSection, "module", "Modules", "") -module.anonymous = true - -res_config_mysql = module:option(ListValue, "res_config_mysql", "MySQL Config Resource", "") -res_config_mysql:value("yes", "Load") -res_config_mysql:value("no", "Do Not Load") -res_config_mysql:value("auto", "Load as Required") -res_config_mysql.rmempty = true - -res_config_odbc = module:option(ListValue, "res_config_odbc", "ODBC Config Resource", "") -res_config_odbc:value("yes", "Load") -res_config_odbc:value("no", "Do Not Load") -res_config_odbc:value("auto", "Load as Required") -res_config_odbc.rmempty = true - -res_config_pgsql = module:option(ListValue, "res_config_pgsql", "PGSQL Module", "") -res_config_pgsql:value("yes", "Load") -res_config_pgsql:value("no", "Do Not Load") -res_config_pgsql:value("auto", "Load as Required") -res_config_pgsql.rmempty = true - -res_crypto = module:option(ListValue, "res_crypto", "Cryptographic Digital Signatures", "") -res_crypto:value("yes", "Load") -res_crypto:value("no", "Do Not Load") -res_crypto:value("auto", "Load as Required") -res_crypto.rmempty = true - -res_features = module:option(ListValue, "res_features", "Call Parking Resource", "") -res_features:value("yes", "Load") -res_features:value("no", "Do Not Load") -res_features:value("auto", "Load as Required") -res_features.rmempty = true - -res_indications = module:option(ListValue, "res_indications", "Indications Configuration", "") -res_indications:value("yes", "Load") -res_indications:value("no", "Do Not Load") -res_indications:value("auto", "Load as Required") -res_indications.rmempty = true - -res_monitor = module:option(ListValue, "res_monitor", "Call Monitoring Resource", "") -res_monitor:value("yes", "Load") -res_monitor:value("no", "Do Not Load") -res_monitor:value("auto", "Load as Required") -res_monitor.rmempty = true - -res_musiconhold = module:option(ListValue, "res_musiconhold", "Music On Hold Resource", "") -res_musiconhold:value("yes", "Load") -res_musiconhold:value("no", "Do Not Load") -res_musiconhold:value("auto", "Load as Required") -res_musiconhold.rmempty = true - -res_odbc = module:option(ListValue, "res_odbc", "ODBC Resource", "") -res_odbc:value("yes", "Load") -res_odbc:value("no", "Do Not Load") -res_odbc:value("auto", "Load as Required") -res_odbc.rmempty = true - -res_smdi = module:option(ListValue, "res_smdi", "SMDI Module", "") -res_smdi:value("yes", "Load") -res_smdi:value("no", "Do Not Load") -res_smdi:value("auto", "Load as Required") -res_smdi.rmempty = true - -res_snmp = module:option(ListValue, "res_snmp", "SNMP Module", "") -res_snmp:value("yes", "Load") -res_snmp:value("no", "Do Not Load") -res_snmp:value("auto", "Load as Required") -res_snmp.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-sip-connections.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-sip-connections.lua deleted file mode 100644 index a095ec3ecc..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-sip-connections.lua +++ /dev/null @@ -1,98 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -sip = cbimap:section(TypedSection, "sip", "SIP Connection", "") -sip.addremove = true - -alwaysinternational = sip:option(Flag, "alwaysinternational", "Always Dial International", "") -alwaysinternational.optional = true - -canreinvite = sip:option(ListValue, "canreinvite", "Reinvite/redirect media connections", "") -canreinvite:value("yes", "Yes") -canreinvite:value("nonat", "Yes when not behind NAT") -canreinvite:value("update", "Use UPDATE rather than INVITE for path redirection") -canreinvite:value("no", "No") -canreinvite.optional = true - -context = sip:option(ListValue, "context", "Context to use", "") -context.titleref = luci.dispatcher.build_url( "admin", "services", "asterisk", "dialplans" ) -cbimap.uci:foreach( "asterisk", "dialplan", function(s) context:value(s['.name']) end ) -cbimap.uci:foreach( "asterisk", "dialzone", function(s) context:value(s['.name']) end ) - -countrycode = sip:option(Value, "countrycode", "Country Code for connection", "") -countrycode.optional = true - -dtmfmode = sip:option(ListValue, "dtmfmode", "DTMF mode", "") -dtmfmode:value("info", "Use RFC2833 or INFO for the BudgeTone") -dtmfmode:value("rfc2833", "Use RFC2833 for the BudgeTone") -dtmfmode:value("inband", "Use Inband (only with ulaw/alaw)") -dtmfmode.optional = true - -extension = sip:option(Value, "extension", "Add as Extension", "") -extension.optional = true - -fromdomain = sip:option(Value, "fromdomain", "Primary domain identity for From: headers", "") -fromdomain.optional = true - -fromuser = sip:option(Value, "fromuser", "From user (required by many SIP providers)", "") -fromuser.optional = true - -host = sip:option(Value, "host", "Host name (or blank)", "") -host.optional = true - -incoming = sip:option(DynamicList, "incoming", "Ring on incoming dialplan contexts", "") -incoming.optional = true - -insecure = sip:option(ListValue, "insecure", "Allow Insecure for", "") -insecure:value("port", "Allow mismatched port number") -insecure:value("invite", "Do not require auth of incoming INVITE") -insecure:value("port,invite", "Allow mismatched port and Do not require auth of incoming INVITE") -insecure.optional = true - -internationalprefix = sip:option(Value, "internationalprefix", "International Dial Prefix", "") -internationalprefix.optional = true - -mailbox = sip:option(Value, "mailbox", "Mailbox for MWI", "") -mailbox.optional = true - -nat = sip:option(Flag, "nat", "NAT between phone and Asterisk", "") -nat.optional = true - -pedantic = sip:option(Flag, "pedantic", "Check tags in headers", "") -pedantic.optional = true - -port = sip:option(Value, "port", "SIP Port", "") -port.optional = true - -prefix = sip:option(Value, "prefix", "Dial Prefix (for external line)", "") -prefix.optional = true - -qualify = sip:option(Value, "qualify", "Reply Timeout (ms) for down connection", "") -qualify.optional = true - -register = sip:option(Flag, "register", "Register connection", "") -register.optional = true - -secret = sip:option(Value, "secret", "Secret", "") -secret.optional = true - -selfmailbox = sip:option(Flag, "selfmailbox", "Dial own extension for mailbox", "") -selfmailbox.optional = true - -timeout = sip:option(Value, "timeout", "Dial Timeout (sec)", "") -timeout.optional = true - -type = sip:option(ListValue, "type", "Client Type", "") -type:value("friend", "Friend (outbound/inbound)") -type:value("user", "User (inbound - authenticate by \"from\")") -type:value("peer", "Peer (outbound - match by host)") -type.optional = true - -username = sip:option(Value, "username", "Username", "") -username.optional = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-voice.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-voice.lua deleted file mode 100644 index 7341dfbe64..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-voice.lua +++ /dev/null @@ -1,41 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -voicegeneral = cbimap:section(TypedSection, "voicegeneral", "Voicemail general options", "") - -serveremail = voicegeneral:option(Value, "serveremail", "From Email address of server", "") - - -voicemail = cbimap:section(TypedSection, "voicemail", "Voice Mail boxes", "") -voicemail.addremove = true - -attach = voicemail:option(Flag, "attach", "Email contains attachment", "") -attach.rmempty = true - -email = voicemail:option(Value, "email", "Email", "") -email.rmempty = true - -name = voicemail:option(Value, "name", "Display Name", "") -name.rmempty = true - -password = voicemail:option(Value, "password", "Password", "") -password.rmempty = true - -zone = voicemail:option(ListValue, "zone", "Voice Zone", "") -cbimap.uci:foreach( "asterisk", "voicezone", function(s) zone:value(s['.name']) end ) - - -voicezone = cbimap:section(TypedSection, "voicezone", "Voice Zone settings", "") -voicezone.addremove = true - -message = voicezone:option(Value, "message", "Message Format", "") -message.rmempty = true - -zone = voicezone:option(Value, "zone", "Time Zone", "") -zone.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk.lua deleted file mode 100644 index 026aab4c63..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk.lua +++ /dev/null @@ -1,151 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "asterisk", "") - -asterisk = cbimap:section(TypedSection, "asterisk", "Asterisk General Options", "") -asterisk.anonymous = true - -agidir = asterisk:option(Value, "agidir", "AGI directory", "") -agidir.rmempty = true - -cache_record_files = asterisk:option(Flag, "cache_record_files", "Cache recorded sound files during recording", "") -cache_record_files.rmempty = true - -debug = asterisk:option(Value, "debug", "Debug Level", "") -debug.rmempty = true - -dontwarn = asterisk:option(Flag, "dontwarn", "Disable some warnings", "") -dontwarn.rmempty = true - -dumpcore = asterisk:option(Flag, "dumpcore", "Dump core on crash", "") -dumpcore.rmempty = true - -highpriority = asterisk:option(Flag, "highpriority", "High Priority", "") -highpriority.rmempty = true - -initcrypto = asterisk:option(Flag, "initcrypto", "Initialise Crypto", "") -initcrypto.rmempty = true - -internal_timing = asterisk:option(Flag, "internal_timing", "Use Internal Timing", "") -internal_timing.rmempty = true - -logdir = asterisk:option(Value, "logdir", "Log directory", "") -logdir.rmempty = true - -maxcalls = asterisk:option(Value, "maxcalls", "Maximum number of calls allowed", "") -maxcalls.rmempty = true - -maxload = asterisk:option(Value, "maxload", "Maximum load to stop accepting new calls", "") -maxload.rmempty = true - -nocolor = asterisk:option(Flag, "nocolor", "Disable console colors", "") -nocolor.rmempty = true - -record_cache_dir = asterisk:option(Value, "record_cache_dir", "Sound files Cache directory", "") -record_cache_dir.rmempty = true -record_cache_dir:depends({ ["cache_record_files"] = "true" }) - -rungroup = asterisk:option(Flag, "rungroup", "The Group to run as", "") -rungroup.rmempty = true - -runuser = asterisk:option(Flag, "runuser", "The User to run as", "") -runuser.rmempty = true - -spooldir = asterisk:option(Value, "spooldir", "Voicemail Spool directory", "") -spooldir.rmempty = true - -systemname = asterisk:option(Value, "systemname", "Prefix UniquID with system name", "") -systemname.rmempty = true - -transcode_via_sln = asterisk:option(Flag, "transcode_via_sln", "Build transcode paths via SLINEAR, not directly", "") -transcode_via_sln.rmempty = true - -transmit_silence_during_record = asterisk:option(Flag, "transmit_silence_during_record", "Transmit SLINEAR silence while recording a channel", "") -transmit_silence_during_record.rmempty = true - -verbose = asterisk:option(Value, "verbose", "Verbose Level", "") -verbose.rmempty = true - -zone = asterisk:option(Value, "zone", "Time Zone", "") -zone.rmempty = true - - -hardwarereboot = cbimap:section(TypedSection, "hardwarereboot", "Reload Hardware Config", "") - -method = hardwarereboot:option(ListValue, "method", "Reboot Method", "") -method:value("web", "Web URL (wget)") -method:value("system", "program to run") -method.rmempty = true - -param = hardwarereboot:option(Value, "param", "Parameter", "") -param.rmempty = true - - -iaxgeneral = cbimap:section(TypedSection, "iaxgeneral", "IAX General Options", "") -iaxgeneral.anonymous = true -iaxgeneral.addremove = true - -allow = iaxgeneral:option(MultiValue, "allow", "Allow Codecs", "") -allow:value("alaw", "alaw") -allow:value("gsm", "gsm") -allow:value("g726", "g726") -allow.rmempty = true - -canreinvite = iaxgeneral:option(ListValue, "canreinvite", "Reinvite/redirect media connections", "") -canreinvite:value("yes", "Yes") -canreinvite:value("nonat", "Yes when not behind NAT") -canreinvite:value("update", "Use UPDATE rather than INVITE for path redirection") -canreinvite:value("no", "No") -canreinvite.rmempty = true - -static = iaxgeneral:option(Flag, "static", "Static", "") -static.rmempty = true - -writeprotect = iaxgeneral:option(Flag, "writeprotect", "Write Protect", "") -writeprotect.rmempty = true - - -sipgeneral = cbimap:section(TypedSection, "sipgeneral", "Section sipgeneral", "") -sipgeneral.anonymous = true -sipgeneral.addremove = true - -allow = sipgeneral:option(MultiValue, "allow", "Allow codecs", "") -allow:value("ulaw", "ulaw") -allow:value("alaw", "alaw") -allow:value("gsm", "gsm") -allow:value("g726", "g726") -allow.rmempty = true - -port = sipgeneral:option(Value, "port", "SIP Port", "") -port.rmempty = true - -realm = sipgeneral:option(Value, "realm", "SIP realm", "") -realm.rmempty = true - - -moh = cbimap:section(TypedSection, "moh", "Music On Hold", "") - -application = moh:option(Value, "application", "Application", "") -application.rmempty = true -application:depends({ ["asterisk.moh.mode"] = "custom" }) - -directory = moh:option(Value, "directory", "Directory of Music", "") -directory.rmempty = true - -mode = moh:option(ListValue, "mode", "Option mode", "") -mode:value("system", "program to run") -mode:value("files", "Read files from directory") -mode:value("quietmp3", "Quite MP3") -mode:value("mp3", "Loud MP3") -mode:value("mp3nb", "unbuffered MP3") -mode:value("quietmp3nb", "Quiet Unbuffered MP3") -mode:value("custom", "Run a custom application") -mode.rmempty = true - -random = moh:option(Flag, "random", "Random Play", "") -random.rmempty = true - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplan_out.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplan_out.lua deleted file mode 100644 index b4c81bb29d..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplan_out.lua +++ /dev/null @@ -1,125 +0,0 @@ --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ast = require("luci.asterisk") - -local function find_outgoing_contexts(uci) - local c = { } - local h = { } - --- uci:foreach("asterisk", "dialplan", --- function(s) --- if not h[s['.name']] then --- c[#c+1] = { s['.name'], "Dialplan: %s" % s['.name'] } --- h[s['.name']] = true --- end --- end) - - uci:foreach("asterisk", "dialzone", - function(s) - if not h[s['.name']] then - c[#c+1] = { s['.name'], "Dialzone: %s" % s['.name'] } - h[s['.name']] = true - end - end) - - return c -end - -local function find_incoming_contexts(uci) - local c = { } - local h = { } - - uci:foreach("asterisk", "sip", - function(s) - if s.context and not h[s.context] and - uci:get_bool("asterisk", s['.name'], "provider") - then - c[#c+1] = { s.context, "Incoming: %s" % s['.name'] or s.context } - h[s.context] = true - end - end) - - return c -end - -local function find_trunks(uci) - local t = { } - - uci:foreach("asterisk", "sip", - function(s) - if uci:get_bool("asterisk", s['.name'], "provider") then - t[#t+1] = { - "SIP/%s" % s['.name'], - "SIP: %s" % s['.name'] - } - end - end) - - uci:foreach("asterisk", "iax", - function(s) - t[#t+1] = { - "IAX/%s" % s['.name'], - "IAX: %s" % s.extension or s['.name'] - } - end) - - return t -end - ---[[ - -dialzone {name} - Outgoing zone. - uses - Outgoing line to use: TYPE/Name - match (list) - Number to match - countrycode - The effective country code of this dialzone - international (list) - International prefix to match - localzone - dialzone for local numbers - addprefix - Prexix required to dial out. - localprefix - Prefix for a local call - -]] - - --- --- SIP dialzone configuration --- -if arg[1] then - cbimap = Map("asterisk", "Edit Dialplan Entry") - - entry = cbimap:section(NamedSection, arg[1]) - - back = entry:option(DummyValue, "_overview", "Back to dialplan overview") - back.value = "" - back.titleref = luci.dispatcher.build_url("admin", "asterisk", "dialplans") - - desc = entry:option(Value, "description", "Description") - function desc.cfgvalue(self, s, ...) - return Value.cfgvalue(self, s, ...) or s - end - - match = entry:option(DynamicList, "match", "Number matches") - - intl = entry:option(DynamicList, "international", "Intl. prefix matches (optional)") - - trunk = entry:option(MultiValue, "uses", "Used trunk") - for _, v in ipairs(find_trunks(cbimap.uci)) do - trunk:value(unpack(v)) - end - - aprefix = entry:option(Value, "addprefix", "Add prefix to dial out (optional)") - --ast.idd.cbifill(aprefix) - - ccode = entry:option(Value, "countrycode", "Effective countrycode (optional)") - ast.cc.cbifill(ccode) - - lzone = entry:option(ListValue, "localzone", "Dialzone for local numbers") - lzone:value("", "no special treatment of local numbers") - for _, v in ipairs(find_outgoing_contexts(cbimap.uci)) do - lzone:value(unpack(v)) - end - - lprefix = entry:option(Value, "localprefix", "Prefix for local calls (optional)") - - return cbimap -end diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplans.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplans.lua deleted file mode 100644 index 4ffeca4f8a..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplans.lua +++ /dev/null @@ -1,103 +0,0 @@ --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ast = require("luci.asterisk") - -cbimap = Map("asterisk", "Registered Trunks") -cbimap.pageaction = false - -local sip_peers = { } -cbimap.uci:foreach("asterisk", "sip", - function(s) - if s.type == "peer" then - s.name = s['.name'] - s.info = ast.sip.peer(s.name) - sip_peers[s.name] = s - end - end) - - -sip_table = cbimap:section(TypedSection, "sip", "SIP Trunks") -sip_table.template = "cbi/tblsection" -sip_table.extedit = luci.dispatcher.build_url("admin", "asterisk", "trunks", "sip", "%s") -sip_table.addremove = true -sip_table.sectionhead = "Extension" - -function sip_table.filter(self, s) - return s and ( - cbimap.uci:get("asterisk", s, "type") == nil or - cbimap.uci:get_bool("asterisk", s, "provider") - ) -end - -function sip_table.create(self, section) - if TypedSection.create(self, section) then - created = section - else - self.invalid_cts = true - end -end - -function sip_table.parse(self, ...) - TypedSection.parse(self, ...) - if created then - cbimap.uci:tset("asterisk", created, { - type = "friend", - qualify = "yes", - provider = "yes" - }) - - cbimap.uci:save("asterisk") - luci.http.redirect(luci.dispatcher.build_url( - "admin", "asterisk", "trunks", "sip", created - )) - end -end - - -user = sip_table:option(DummyValue, "username", "Username") - -host = sip_table:option(DummyValue, "host", "Hostname") -function host.cfgvalue(self, s) - if sip_peers[s] and sip_peers[s].info.address then - return "%s:%i" %{ sip_peers[s].info.address, sip_peers[s].info.port } - else - return "n/a" - end -end - -context = sip_table:option(DummyValue, "context", "Dialplan") -context.href = luci.dispatcher.build_url("admin", "asterisk", "dialplan") -function context.cfgvalue(...) - return AbstractValue.cfgvalue(...) or "(default)" -end - -online = sip_table:option(DummyValue, "online", "Registered") -function online.cfgvalue(self, s) - if sip_peers[s] and sip_peers[s].info.online == nil then - return "n/a" - else - return sip_peers[s] and sip_peers[s].info.online - and "yes" or "no (%s)" %{ - sip_peers[s] and sip_peers[s].info.Status:lower() or "unknown" - } - end -end - -delay = sip_table:option(DummyValue, "delay", "Delay") -function delay.cfgvalue(self, s) - if sip_peers[s] and sip_peers[s].info.online then - return "%i ms" % sip_peers[s].info.delay - else - return "n/a" - end -end - -info = sip_table:option(Button, "_info", "Info") -function info.write(self, s) - luci.http.redirect(luci.dispatcher.build_url( - "admin", "asterisk", "trunks", "sip", s, "info" - )) -end - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialzones.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialzones.lua deleted file mode 100644 index 5585c062d2..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialzones.lua +++ /dev/null @@ -1,123 +0,0 @@ --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ast = require("luci.asterisk") -local uci = require("luci.model.uci").cursor() - ---[[ - Dialzone overview table -]] - -if not arg[1] then - zonemap = Map("asterisk", "Dial Zones", [[ - Dial zones hold patterns of dialed numbers to match. - Each zone has one or more trunks assigned. If the first trunk is - congested, Asterisk will try to use the next available connection. - If all trunks fail, then the following zones in the parent dialplan - are tried. - ]]) - - local zones, znames = ast.dialzone.zones() - - zonetbl = zonemap:section(Table, zones, "Zone Overview") - zonetbl.sectionhead = "Zone" - zonetbl.addremove = true - zonetbl.anonymous = false - zonetbl.extedit = luci.dispatcher.build_url( - "admin", "asterisk", "dialplans", "zones", "%s" - ) - - function zonetbl.cfgsections(self) - return znames - end - - function zonetbl.parse(self) - for k, v in pairs(self.map:formvaluetable( - luci.cbi.REMOVE_PREFIX .. self.config - ) or {}) do - if k:sub(-2) == ".x" then k = k:sub(1, #k - 2) end - uci:delete("asterisk", k) - uci:save("asterisk") - self.data[k] = nil - for i = 1,#znames do - if znames[i] == k then - table.remove(znames, i) - break - end - end - end - - Table.parse(self) - end - - zonetbl:option(DummyValue, "description", "Description") - zonetbl:option(DummyValue, "addprefix") - - match = zonetbl:option(DummyValue, "matches") - function match.cfgvalue(self, s) - return table.concat(zones[s].matches, ", ") - end - - trunks = zonetbl:option(DummyValue, "trunk") - trunks.template = "asterisk/cbi/cell" - function trunks.cfgvalue(self, s) - return ast.tools.hyperlinks(zones[s].trunks) - end - - return zonemap - ---[[ - Zone edit form -]] - -else - zoneedit = Map("asterisk", "Edit Dialzone") - - entry = zoneedit:section(NamedSection, arg[1]) - entry.title = "Zone %q" % arg[1]; - - back = entry:option(DummyValue, "_overview", "Back to dialzone overview") - back.value = "" - back.titleref = luci.dispatcher.build_url( - "admin", "asterisk", "dialplans", "zones" - ) - - desc = entry:option(Value, "description", "Description") - function desc.cfgvalue(self, s, ...) - return Value.cfgvalue(self, s, ...) or s - end - - trunks = entry:option(MultiValue, "uses", "Used trunks") - trunks.widget = "checkbox" - uci:foreach("asterisk", "sip", - function(s) - if s.provider == "yes" then - trunks:value( - "SIP/%s" % s['.name'], - "SIP/%s (%s)" %{ s['.name'], s.host or 'n/a' } - ) - end - end) - - - match = entry:option(DynamicList, "match", "Number matches") - - intl = entry:option(DynamicList, "international", "Intl. prefix matches (optional)") - - aprefix = entry:option(Value, "addprefix", "Add prefix to dial out (optional)") - ccode = entry:option(Value, "countrycode", "Effective countrycode (optional)") - - lzone = entry:option(ListValue, "localzone", "Dialzone for local numbers") - lzone:value("", "no special treatment of local numbers") - for _, z in ipairs(ast.dialzone.zones()) do - lzone:value(z.name, "%q (%s)" %{ z.name, z.description }) - end - --for _, v in ipairs(find_outgoing_contexts(zoneedit.uci)) do - -- lzone:value(unpack(v)) - --end - - lprefix = entry:option(Value, "localprefix", "Prefix for local calls (optional)") - - return zoneedit - -end diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme.lua deleted file mode 100644 index e409d706ae..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme.lua +++ /dev/null @@ -1,38 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ast = require "luci.asterisk" - -cbimap = Map("asterisk", "MeetMe - Rooms") - -meetme = cbimap:section(TypedSection, "meetme", "MeetMe Rooms") -meetme.addremove = true -meetme.anonymous = true -meetme.template = "cbi/tblsection" -meetme:option(Value, "_description", "Description", "Short room description") - -room = meetme:option(Value, "room", "Room Number", "Unique room identifier") - -function room.write(self, s, val) - if val and #val > 0 then - local old = self:cfgvalue(s) - self.map.uci:foreach("asterisk", "dialplanmeetme", - function(v) - if v.room == old then - self.map:set(v['.name'], "room", val) - end - end) - Value.write(self, s, val) - end -end - - -meetme:option(Value, "pin", "PIN", "PIN required to access") -meetme:option(Value, "adminpin", "Admin PIN", "PIN required for administration") - -function meetme.remove(self, s) - return ast.meetme.remove(self.map:get(s, "room"), self.map.uci) -end - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme_settings.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme_settings.lua deleted file mode 100644 index 9e5aed7f34..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme_settings.lua +++ /dev/null @@ -1,17 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -cbimap = Map("asterisk", "MeetMe - Common Settings", - "Common settings for MeetMe phone conferences.") - -meetme = cbimap:section(TypedSection, "meetmegeneral", "General MeetMe Options") -meetme.addremove = false -meetme.anonymous = true - -audiobuffers = meetme:option(ListValue, "audiobuffers", - "Number of 20ms audio buffers to use for conferences") - -for i = 2, 32 do audiobuffers:value(i) end - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phone_sip.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phone_sip.lua deleted file mode 100644 index 01dfc1682f..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phone_sip.lua +++ /dev/null @@ -1,145 +0,0 @@ --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ast = require("luci.asterisk") - -local function find_outgoing_contexts(uci) - local c = { } - local h = { } - - uci:foreach("asterisk", "dialplan", - function(s) - if not h[s['.name']] then - c[#c+1] = { s['.name'], "Dialplan: %s" % s['.name'] } - h[s['.name']] = true - end - end) - - return c -end - -local function find_incoming_contexts(uci) - local c = { } - local h = { } - - uci:foreach("asterisk", "sip", - function(s) - if s.context and not h[s.context] and - uci:get_bool("asterisk", s['.name'], "provider") - then - c[#c+1] = { s.context, "Incoming: %s" % s['.name'] or s.context } - h[s.context] = true - end - end) - - return c -end - - --- --- SIP phone info --- -if arg[2] == "info" then - form = SimpleForm("asterisk", "SIP Phone Information") - form.reset = false - form.submit = "Back to overview" - - local info, keys = ast.sip.peer(arg[1]) - local data = { } - - for _, key in ipairs(keys) do - data[#data+1] = { - key = key, - val = type(info[key]) == "boolean" - and ( info[key] and "yes" or "no" ) - or ( info[key] == nil or #info[key] == 0 ) - and "(none)" - or tostring(info[key]) - } - end - - itbl = form:section(Table, data, "SIP Phone %q" % arg[1]) - itbl:option(DummyValue, "key", "Key") - itbl:option(DummyValue, "val", "Value") - - function itbl.parse(...) - luci.http.redirect( - luci.dispatcher.build_url("admin", "asterisk", "phones") - ) - end - - return form - --- --- SIP phone configuration --- -elseif arg[1] then - cbimap = Map("asterisk", "Edit SIP Client") - - peer = cbimap:section(NamedSection, arg[1]) - peer.hidden = { - type = "friend", - qualify = "yes", - host = "dynamic", - nat = "no", - canreinvite = "no" - } - - back = peer:option(DummyValue, "_overview", "Back to phone overview") - back.value = "" - back.titleref = luci.dispatcher.build_url("admin", "asterisk", "phones") - - active = peer:option(Flag, "disable", "Account enabled") - active.enabled = "yes" - active.disabled = "no" - function active.cfgvalue(...) - return AbstractValue.cfgvalue(...) or "yes" - end - - exten = peer:option(Value, "extension", "Extension Number") - cbimap.uci:foreach("asterisk", "dialplanexten", - function(s) - exten:value( - s.extension, - "%s (via %s/%s)" %{ s.extension, s.type:upper(), s.target } - ) - end) - - display = peer:option(Value, "callerid", "Display Name") - - username = peer:option(Value, "username", "Authorization ID") - password = peer:option(Value, "secret", "Authorization Password") - password.password = true - - regtimeout = peer:option(Value, "registertimeout", "Registration Time Value") - function regtimeout.cfgvalue(...) - return AbstractValue.cfgvalue(...) or "60" - end - - sipport = peer:option(Value, "port", "SIP Port") - function sipport.cfgvalue(...) - return AbstractValue.cfgvalue(...) or "5060" - end - - linekey = peer:option(ListValue, "_linekey", "Linekey Mode (broken)") - linekey:value("", "Off") - linekey:value("trunk", "Trunk Appearance") - linekey:value("call", "Call Appearance") - - dialplan = peer:option(ListValue, "context", "Assign Dialplan") - dialplan.titleref = luci.dispatcher.build_url("admin", "asterisk", "dialplans") - for _, v in ipairs(find_outgoing_contexts(cbimap.uci)) do - dialplan:value(unpack(v)) - end - - incoming = peer:option(StaticList, "incoming", "Receive incoming calls from") - for _, v in ipairs(find_incoming_contexts(cbimap.uci)) do - incoming:value(unpack(v)) - end - - --function incoming.cfgvalue(...) - --error(table.concat(MultiValue.cfgvalue(...),".")) - --end - - return cbimap -end diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phones.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phones.lua deleted file mode 100644 index a6c44f9335..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phones.lua +++ /dev/null @@ -1,104 +0,0 @@ --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ast = require("luci.asterisk") - -cbimap = Map("asterisk", "Registered Phones") -cbimap.pageaction = false - -local sip_peers = { } -cbimap.uci:foreach("asterisk", "sip", - function(s) - if s.type ~= "peer" then - s.name = s['.name'] - s.info = ast.sip.peer(s.name) - sip_peers[s.name] = s - end - end) - - -sip_table = cbimap:section(TypedSection, "sip", "SIP Phones") -sip_table.template = "cbi/tblsection" -sip_table.extedit = luci.dispatcher.build_url("admin", "asterisk", "phones", "sip", "%s") -sip_table.addremove = true - -function sip_table.filter(self, s) - return s and not cbimap.uci:get_bool("asterisk", s, "provider") -end - -function sip_table.create(self, section) - if TypedSection.create(self, section) then - created = section - cbimap.uci:tset("asterisk", section, { - type = "friend", - qualify = "yes", - provider = "no", - host = "dynamic", - nat = "no", - canreinvite = "no", - extension = section:match("^%d+$") and section or "", - username = section:match("^%d+$") and section or "" - }) - else - self.invalid_cts = true - end -end - -function sip_table.parse(self, ...) - TypedSection.parse(self, ...) - if created then - cbimap.uci:save("asterisk") - luci.http.redirect(luci.dispatcher.build_url( - "admin", "asterisk", "phones", "sip", created - )) - end -end - - -user = sip_table:option(DummyValue, "username", "Username") -function user.cfgvalue(self, s) - return sip_peers[s] and sip_peers[s].callerid or - AbstractValue.cfgvalue(self, s) -end - -host = sip_table:option(DummyValue, "host", "Hostname") -function host.cfgvalue(self, s) - if sip_peers[s] and sip_peers[s].info.address then - return "%s:%i" %{ sip_peers[s].info.address, sip_peers[s].info.port } - else - return "n/a" - end -end - -context = sip_table:option(DummyValue, "context", "Dialplan") -context.href = luci.dispatcher.build_url("admin", "asterisk", "dialplan") - -online = sip_table:option(DummyValue, "online", "Registered") -function online.cfgvalue(self, s) - if sip_peers[s] and sip_peers[s].info.online == nil then - return "n/a" - else - return sip_peers[s] and sip_peers[s].info.online - and "yes" or "no (%s)" % { - sip_peers[s] and sip_peers[s].info.Status:lower() or "unknown" - } - end -end - -delay = sip_table:option(DummyValue, "delay", "Delay") -function delay.cfgvalue(self, s) - if sip_peers[s] and sip_peers[s].info.online then - return "%i ms" % sip_peers[s].info.delay - else - return "n/a" - end -end - -info = sip_table:option(Button, "_info", "Info") -function info.write(self, s) - luci.http.redirect(luci.dispatcher.build_url( - "admin", "asterisk", "phones", "sip", s, "info" - )) -end - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua deleted file mode 100644 index eedc1c2cac..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua +++ /dev/null @@ -1,86 +0,0 @@ --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ast = require("luci.asterisk") - --- --- SIP trunk info --- -if arg[2] == "info" then - form = SimpleForm("asterisk", "SIP Trunk Information") - form.reset = false - form.submit = "Back to overview" - - local info, keys = ast.sip.peer(arg[1]) - local data = { } - - for _, key in ipairs(keys) do - data[#data+1] = { - key = key, - val = type(info[key]) == "boolean" - and ( info[key] and "yes" or "no" ) - or ( info[key] == nil or #info[key] == 0 ) - and "(none)" - or tostring(info[key]) - } - end - - itbl = form:section(Table, data, "SIP Trunk %q" % arg[1]) - itbl:option(DummyValue, "key", "Key") - itbl:option(DummyValue, "val", "Value") - - function itbl.parse(...) - luci.http.redirect( - luci.dispatcher.build_url("admin", "asterisk", "trunks") - ) - end - - return form - --- --- SIP trunk config --- -elseif arg[1] then - cbimap = Map("asterisk", "Edit SIP Trunk") - - peer = cbimap:section(NamedSection, arg[1]) - peer.hidden = { - type = "peer", - qualify = "yes", - } - - back = peer:option(DummyValue, "_overview", "Back to trunk overview") - back.value = "" - back.titleref = luci.dispatcher.build_url("admin", "asterisk", "trunks") - - sipdomain = peer:option(Value, "host", "SIP Domain") - sipport = peer:option(Value, "port", "SIP Port") - function sipport.cfgvalue(...) - return AbstractValue.cfgvalue(...) or "5060" - end - - username = peer:option(Value, "username", "Authorization ID") - password = peer:option(Value, "secret", "Authorization Password") - password.password = true - - outboundproxy = peer:option(Value, "outboundproxy", "Outbound Proxy") - outboundport = peer:option(Value, "outboundproxyport", "Outbound Proxy Port") - - register = peer:option(Flag, "register", "Register with peer") - register.enabled = "yes" - register.disabled = "no" - - regext = peer:option(Value, "registerextension", "Extension to register (optional)") - regext:depends({register="1"}) - - didval = peer:option(ListValue, "_did", "Number of assigned DID numbers") - didval:value("", "(none)") - for i=1,24 do didval:value(i) end - - dialplan = peer:option(ListValue, "context", "Dialplan Context") - dialplan:value(arg[1] .. "_inbound", "(default)") - cbimap.uci:foreach("asterisk", "dialplan", - function(s) dialplan:value(s['.name']) end) - - return cbimap -end diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunks.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunks.lua deleted file mode 100644 index 44c8ca87d5..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunks.lua +++ /dev/null @@ -1,94 +0,0 @@ --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ast = require("luci.asterisk") - -cbimap = Map("asterisk", "Trunks") -cbimap.pageaction = false - -local sip_peers = { } -cbimap.uci:foreach("asterisk", "sip", - function(s) - if s.type == "peer" then - s.name = s['.name'] - s.info = ast.sip.peer(s.name) - sip_peers[s.name] = s - end - end) - - -sip_table = cbimap:section(TypedSection, "sip", "SIP Trunks") -sip_table.template = "cbi/tblsection" -sip_table.extedit = luci.dispatcher.build_url("admin", "asterisk", "trunks", "sip", "%s") -sip_table.addremove = true -sip_table.sectionhead = "Extension" - -function sip_table.filter(self, s) - return s and ( - cbimap.uci:get("asterisk", s, "type") == nil or - cbimap.uci:get_bool("asterisk", s, "provider") - ) -end - -function sip_table.create(self, section) - if TypedSection.create(self, section) then - created = section - else - self.invalid_cts = true - end -end - -function sip_table.parse(self, ...) - TypedSection.parse(self, ...) - if created then - cbimap.uci:tset("asterisk", created, { - type = "friend", - qualify = "yes", - provider = "yes" - }) - - cbimap.uci:save("asterisk") - luci.http.redirect(luci.dispatcher.build_url( - "admin", "asterisk", "trunks", "sip", created - )) - end -end - - -user = sip_table:option(DummyValue, "username", "Username") - -context = sip_table:option(DummyValue, "context", "Dialplan") -context.href = luci.dispatcher.build_url("admin", "asterisk", "dialplan") -function context.cfgvalue(...) - return AbstractValue.cfgvalue(...) or "(default)" -end - -online = sip_table:option(DummyValue, "online", "Registered") -function online.cfgvalue(self, s) - if sip_peers[s] and sip_peers[s].info.online == nil then - return "n/a" - else - return sip_peers[s] and sip_peers[s].info.online - and "yes" or "no (%s)" %{ - sip_peers[s] and sip_peers[s].info.Status:lower() or "unknown" - } - end -end - -delay = sip_table:option(DummyValue, "delay", "Delay") -function delay.cfgvalue(self, s) - if sip_peers[s] and sip_peers[s].info.online then - return "%i ms" % sip_peers[s].info.delay - else - return "n/a" - end -end - -info = sip_table:option(Button, "_info", "Info") -function info.write(self, s) - luci.http.redirect(luci.dispatcher.build_url( - "admin", "asterisk", "trunks", "sip", s, "info" - )) -end - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail.lua deleted file mode 100644 index 51143e6a88..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail.lua +++ /dev/null @@ -1,48 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ast = require "luci.asterisk" - -cbimap = Map("asterisk", "Voicemail - Mailboxes") - -voicemail = cbimap:section(TypedSection, "voicemail", "Voicemail Boxes") -voicemail.addremove = true -voicemail.anonymous = true -voicemail.template = "cbi/tblsection" - -context = voicemail:option(ListValue, "context", "Context") -context:value("default") - -number = voicemail:option(Value, "number", - "Mailbox Number", "Unique mailbox identifier") - -function number.write(self, s, val) - if val and #val > 0 then - local old = self:cfgvalue(s) - self.map.uci:foreach("asterisk", "dialplanvoice", - function(v) - if v.voicebox == old then - self.map:set(v['.name'], "voicebox", val) - end - end) - Value.write(self, s, val) - end -end - - -voicemail:option(Value, "name", "Ownername", "Human readable display name") -voicemail:option(Value, "password", "Password", "Access protection") -voicemail:option(Value, "email", "eMail", "Where to send voice messages") -voicemail:option(Value, "page", "Pager", "Pager number") - -zone = voicemail:option(ListValue, "zone", "Timezone", "Used time format") -zone.titleref = luci.dispatcher.build_url("admin/asterisk/voicemail/settings") -cbimap.uci:foreach("asterisk", "voicezone", - function(s) zone:value(s['.name']) end) - -function voicemail.remove(self, s) - return ast.voicemail.remove(self.map:get(s, "number"), self.map.uci) -end - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua b/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua deleted file mode 100644 index ef52a32e7d..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua +++ /dev/null @@ -1,51 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require "luci.sys.zoneinfo" - - -cbimap = Map("asterisk", "Voicemail - Common Settings") - -voicegeneral = cbimap:section(TypedSection, "voicegeneral", - "General Voicemail Options", "Common settings for all mailboxes are " .. - "defined here. Most of them are optional. The storage format should " .. - "never be changed once set.") - -voicegeneral.anonymous = true -voicegeneral.addremove = false - -format = voicegeneral:option(MultiValue, "Used storage formats") -format.widget = "checkbox" -format:value("wav49") -format:value("gsm") -format:value("wav") - -voicegeneral:option(Flag, "sendvoicemail", "Enable sending of emails") -voicegeneral:option(Flag, "attach", "Attach voice messages to emails") -voicegeneral:option(Value, "serveremail", "Used email sender address") -voicegeneral:option(Value, "emaildateformat", "Date format used in emails").optional = true -voicegeneral:option(Value, "maxlogins", "Max. failed login attempts").optional = true -voicegeneral:option(Value, "maxmsg", "Max. allowed messages per mailbox").optional = true -voicegeneral:option(Value, "minmessage", "Min. number of seconds for voicemail").optional = true -voicegeneral:option(Value, "maxmessage", "Max. number of seconds for voicemail").optional = true -voicegeneral:option(Value, "maxsilence", "Seconds of silence until stop recording").optional = true -voicegeneral:option(Value, "maxgreet", "Max. number of seconds for greetings").optional = true -voicegeneral:option(Value, "skipms", "Milliseconds to skip for rew./ff.").optional = true -voicegeneral:option(Value, "silencethreshold", "Threshold to detect silence").optional = true - - -voicezone = cbimap:section(TypedSection, "voicezone", "Time Zones", - "Time zones define how dates and times are expressen when used in " .. - "an voice mails. Refer to the asterisk manual for placeholder values.") - -voicezone.addremove = true -voicezone.sectionhead = "Name" -voicezone.template = "cbi/tblsection" - -tz = voicezone:option(ListValue, "zone", "Location") -for _, z in ipairs(luci.sys.zoneinfo.TZ) do tz:value(z[1]) end - -voicezone:option(Value, "message", "Date Format") - - -return cbimap diff --git a/package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/cbi/cell.htm b/package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/cbi/cell.htm deleted file mode 100644 index 3afb26bdac..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/cbi/cell.htm +++ /dev/null @@ -1,13 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+cbi/valueheader%> -<% if self.href then %><% end -%> - <%=self:cfgvalue(section)%> -<%- if self.href then %><%end%> -  - -<%+cbi/valuefooter%> diff --git a/package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm b/package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm deleted file mode 100644 index 9f644ba074..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm +++ /dev/null @@ -1,245 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<% - local uci = luci.model.uci.cursor_state() - local ast = require "luci.asterisk" - - function digit_pattern(s,t) - return "%s" - %{ t and " title='" .. t .. "'" or "", s } - end - - function rowstyle(i) - return "cbi-rowstyle-%i" %{ - ( i % 2 ) == 0 and 2 or 1 - } - end - - function format_matches(z) - local html = { } - - if type(z) ~= "table" then - z = { matches = { z } } - end - - if z.localprefix then - for _, m in ipairs(z.matches) do - html[#html+1] = - digit_pattern(z.localprefix, "local prefix") .. " " .. - digit_pattern(m) - end - end - - if z.intlmatches and #z.intlmatches > 0 then - for _, i in ipairs(z.intlmatches) do - for _, m in ipairs(z.matches) do - html[#html+1] = "%s %s" %{ - digit_pattern("(%s)" % i, "intl. prefix"), - digit_pattern(m) - } - end - end - else - for _, m in ipairs(z.matches) do - html[#html+1] = digit_pattern(m) - end - end - - return table.concat(html, "; ") - end -%> - - -
-
- - - -
- -
-

Outgoing Call Routing

-
- Here you can manage your dial plans which are used to route outgoing calls from your local extensions.

- Related tasks:
- Manage dialzones | - Manage voicemail boxes | - Manage meetme rooms -
- -
- -
- - <% for i, plan in pairs(ast.dialplan.plans()) do %> -
- - - - - - - - <% local zones_used = { }; local row = 0 %> - <% for i, zone in ipairs(plan.zones) do zones_used[zone.name] = true %> - - - - - <% row = row + 1; end %> - - - - <% local boxes_used = { } %> - <% for ext, box in luci.util.kspairs(plan.voicemailboxes) do boxes_used[box.id] = true %> - - - - - <% row = row + 1; end %> - - - - <% local rooms_used = { } %> - <% for ext, room in luci.util.kspairs(plan.meetmerooms) do rooms_used[room.room] = true %> - - - - - <% row = row + 1; end %> - - - - - - -
- Dialplan <%=plan.name%> - - - Remove this dialplan - -
- └ Dialzone <%=zone.name%> (<%=zone.description%>) -

- Lines: - <%=ast.tools.hyperlinks( - zone.trunks, function(v) - return luci.dispatcher.build_url("admin", "asterisk", "trunks", "%s") % v:lower() - end - )%>
- Matches: - <%=format_matches(zone)%> -

-
- - Edit dialzone - - - Remove from this dialplan - -
- └ Voicemailbox <%=box.id%> (<%=box.name%>) -

- Owner: <%=box.name%> | - eMail: <%=#box.email > 0 and box.email or 'n/a'%> | - Pager: <%=#box.page > 0 and box.page or 'n/a'%>
- Matches: <%=format_matches(ext)%> -

-
- - Manage mailboxes ... - - - Remove from this dialplan - -
- └ MeetMe Room <%=room.room%> - <% if room.description and #room.description > 0 then %> (<%=room.description%>)<% end %> -

- Matches: <%=format_matches(ext)%> -

-
- - Manage conferences ... - - - Remove from this dialplan - -
-
- - Add Dialzone:
- -

- - Add Voicemailbox:
- - as extension - -

- - Add MeetMe Conference:
- - as extension - -

- - -
- -
-
-
- <% end %> - -
-
-

Create a new dialplan

- The name is required and must be unique. It may only contain the characters A-Z, a-z, 0-9 and _ .
- - <%- if create_error then %> -
Invalid name given!
- <% end -%> - -
- - -
-
- -
-
-
-
-<%+footer%> diff --git a/package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm b/package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm deleted file mode 100644 index ffdbbcf359..0000000000 --- a/package/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm +++ /dev/null @@ -1,165 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<% - local uci = luci.model.uci.cursor_state() - local ast = require("luci.asterisk") - - function digit_pattern(s) - return "%s" % s - end - - function rowstyle(i) - return "cbi-rowstyle-%i" %{ - ( i % 2 ) == 0 and 2 or 1 - } - end - - local function find_trunks() - local t = { } - - uci:foreach("asterisk", "sip", - function(s) - if uci:get_bool("asterisk", s['.name'], "provider") then - t[#t+1] = { - "SIP/%s" % s['.name'], - "SIP: %s" % s['.name'] - } - end - end) - - uci:foreach("asterisk", "iax", - function(s) - t[#t+1] = { - "IAX/%s" % s['.name'], - "IAX: %s" % s.extension or s['.name'] - } - end) - - return t - end - -%> - - -
-
- - - -
- -
-

Dial Zone Management

-
- " class="cbi-title-ref">Back to dialplan overview

- Here you can manage your dial zones. The zones are used to route outgoing calls to the destination. - Each zone groups multiple trunks and number matches to represent a logical destination. Zones can - also be used to enforce certain dial restrictions on selected extensions. -
- - -
-
- - - - - - - - - - - - - - - <% for i, rule in pairs(ast.dialzone.zones()) do %> - - - - - - - - - <% end %> -
-

Dialzone Overview

-
NamePrepend- MatchTrunkDescription
- <%=rule.name%> - - <% for _ in ipairs(rule.matches) do %> - <%=rule.addprefix and digit_pattern(rule.addprefix)%> 
- <% end %> -
- <% for _, m in ipairs(rule.matches) do %> - <%=rule.localprefix and "%s " % digit_pattern(rule.localprefix)%> - <%=digit_pattern(m)%>
- <% end %> -
- <%=ast.tools.hyperlinks( - rule.trunks, function(v) - return luci.dispatcher.build_url("admin", "asterisk", "trunks", "%s") % v:lower() - end - )%> - - <%=rule.description or rule.name%> - - - Edit entry - - - Delete entry - -
-
-
-
- -
-
-

Create a new dialzone

- The name is required and must be unique. It may only contain the characters A-Z, a-z, 0-9 and _ .
- You can specifiy multiple number matches by separating them with spaces.
- - <%- if create_error then %> -
Invalid name given!
- <% end -%> - - - - - - -
-
- -

- -
- -
-
- -
-
- - -
-
-
-
-
-
-<%+footer%> diff --git a/package/luci/applications/luci-app-asterisk/po/ca/asterisk.po b/package/luci/applications/luci-app-asterisk/po/ca/asterisk.po deleted file mode 100644 index aa534432e1..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/ca/asterisk.po +++ /dev/null @@ -1,680 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2009-05-31 19:18+0200\n" -"Last-Translator: Eduard Duran \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Opcions Generals d'Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "Directori AGI" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Desa en memòria cau els sons gravats durant la gravació" - -#~ msgid "Debug Level" -#~ msgstr "Nivell de depuració" - -#~ msgid "Disable some warnings" -#~ msgstr "Desactiva algunes alertes" - -#~ msgid "Dump core on crash" -#~ msgstr "Bolca el nucli en cas de fallada" - -#~ msgid "High Priority" -#~ msgstr "Alta Prioritat" - -#~ msgid "Initialise Crypto" -#~ msgstr "Inicialitza Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "Utilitza l'hora interna" - -#~ msgid "Log directory" -#~ msgstr "Directori de registres" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Número màxim de trucades permeses" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Càrrega màxima per deixar d'acceptar trucades noves" - -#~ msgid "Disable console colors" -#~ msgstr "Desactiva els colors de consola" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Directori de memòria cau dels fitxers de so" - -#~ msgid "The Group to run as" -#~ msgstr "Executa amb els permisos del Grup" - -#~ msgid "The User to run as" -#~ msgstr "Executa amb els permisos de l'Usuari" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Directori de bústia de correu" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Prefixa l'UniquID amb el nom del sistema" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "Munta les rutes de transcodificació via SLINEAR, no directament" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Transmet silenci SLINEAR mentre s'enregistri un canal" - -#~ msgid "Verbose Level" -#~ msgstr "Nivell de detall" - -#~ msgid "Section dialplan" -#~ msgstr "Secció Dialplan" - -#~ msgid "include" -#~ msgstr "inclou" - -#~ msgid "Dialplan Extension" -#~ msgstr "Connector Dialplan" - -#~ msgid "Dialplan General Options" -#~ msgstr "Opcions generals de Dialplan" - -#~ msgid "Allow transfer" -#~ msgstr "Permet la transferència" - -#~ msgid "Clear global vars" -#~ msgstr "Buida les variables globals" - -#~ msgid "Dialplan Goto" -#~ msgstr "Dialplan Goto" - -#~ msgid "Dialplan Conference" -#~ msgstr "Conferència Dialplan" - -#~ msgid "Dialplan Time" -#~ msgstr "Dialplan Time" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "Bústia de correu Dialplan" - -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "Zones de marcatge per Dialplan" - -#~ msgid "Prefix to add matching dialplans" -#~ msgstr "Prefix per afegir als Dialplan que coincideixin" - -#~ msgid "Match International prefix" -#~ msgstr "Coincideix amb el prefix Internacional" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "Prefix (0) per afegir/esborrar a/des de números internacionals" - -#~ msgid "localzone" -#~ msgstr "zona local" - -#~ msgid "Match plan" -#~ msgstr "Pla coincident" - -#~ msgid "Connection to use" -#~ msgstr "Connexió a fer servir" - -#~ msgid "Feature Key maps" -#~ msgstr "Mapa de Funcions Principals" - -#~ msgid "Attended transfer key" -#~ msgstr "Tecla de transferència assistida" - -#~ msgid "Blind transfer key" -#~ msgstr "Tecla de transferència cega" - -#~ msgid "Key to Disconnect call" -#~ msgstr "Tecla per desconnectar trucada" - -#~ msgid "Key to Park call" -#~ msgstr "Tecla per trucada en espera" - -#~ msgid "Parking Feature" -#~ msgstr "Funció de trucada en espera" - -#~ msgid "ADSI Park" -#~ msgstr "Trucada en espera ADSI" - -#~ msgid "Attended transfer timeout (sec)" -#~ msgstr "Temps d'espera de transferència assistida (seg)" - -#~ msgid "One touch record key" -#~ msgstr "Tecla de registre d'un toc" - -#~ msgid "Name of call context for parking" -#~ msgstr "Nom del context de la trucada en espera" - -#~ msgid "Sound file to play to parked caller" -#~ msgstr "Fitxer de so per reproduir a la trucada en espera" - -#~ msgid "Max time (ms) between digits for feature activation" -#~ msgstr "Temps màxim (en ms) entre dígits per l'activació de funció" - -#~ msgid "Method to Find Parking slot" -#~ msgstr "Mètode per trobar una ranura de trucada en espera" - -#~ msgid "parkedmusicclass" -#~ msgstr "parkedmusicclass" - -#~ msgid "Play courtesy tone to" -#~ msgstr "Reprodueix to de cortesia a" - -#~ msgid "Enable Parking" -#~ msgstr "Activa les trucades en espera" - -#~ msgid "Extension to dial to park" -#~ msgstr "Extensió per marcar per deixar en espera una trucada" - -#~ msgid "Parking time (secs)" -#~ msgstr "Temps de trucada en espera (secs)" - -#~ msgid "Range of extensions for call parking" -#~ msgstr "Rang d'extensions per trucada en espera" - -#~ msgid "Pickup extension" -#~ msgstr "Connector de recol·lecció" - -#~ msgid "Seconds to wait between digits when transferring" -#~ msgstr "Segons a esperar entre dígits quan es transfereix" - -#~ msgid "sound when attended transfer is complete" -#~ msgstr "so quan es completa la transferència assistida" - -#~ msgid "Sound when attended transfer fails" -#~ msgstr "so quan falla la transferència assitida" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Recarrega la configuració de maquinari" - -#~ msgid "Reboot Method" -#~ msgstr "Mètode de Reinici" - -#~ msgid "Parameter" -#~ msgstr "Paràmetre" - -#~ msgid "Option type" -#~ msgstr "Tipus d'opció" - -#~ msgid "User name" -#~ msgstr "Nom d'usuari" - -#~ msgid "IAX General Options" -#~ msgstr "Opcions generals IAX" - -#~ msgid "Allow Codecs" -#~ msgstr "Permet Codecs" - -#~ msgid "Static" -#~ msgstr "Estàtic" - -#~ msgid "Write Protect" -#~ msgstr "Protecció d'escriptura" - -#~ msgid "Meetme Conference" -#~ msgstr "Conferència Meetme" - -#~ msgid "Admin PIN" -#~ msgstr "PIN d'administrador" - -#~ msgid "Meeting PIN" -#~ msgstr "PIN de reunió" - -#~ msgid "Meetme Conference General Options" -#~ msgstr "Opcions generals de conferència Meetme" - -#~ msgid "Number of 20ms audio buffers to be used" -#~ msgstr "Número de memòries intermitges d'àudio de 20 ms a utilitzar" - -#~ msgid "Modules" -#~ msgstr "Mòduls" - -#~ msgid "Alarm Receiver Application" -#~ msgstr "Aplicació de recepció d'alarma" - -#~ msgid "Authentication Application" -#~ msgstr "Aplicació d'autenticació" - -#~ msgid "Make sure asterisk doesn't save CDR" -#~ msgstr "Assegura't que asterisk no desa CDR" - -#~ msgid "Check if channel is available" -#~ msgstr "Comprova que el canal estigui disponible" - -#~ msgid "Listen in on any channel" -#~ msgstr "Escolta a qualsevol canal" - -#~ msgid "Control Playback Application" -#~ msgstr "Aplicació de control de reproducció" - -#~ msgid "Cuts up variables" -#~ msgstr "Talla les variables" - -#~ msgid "Database access functions" -#~ msgstr "Funcions d'accés a base de dades" - -#~ msgid "Dialing Application" -#~ msgstr "Aplicació de marcatge" - -#~ msgid "Virtual Dictation Machine Application" -#~ msgstr "Aplicació de màquina de dictat virtual" - -#~ msgid "Directed Call Pickup Support" -#~ msgstr "Suport de recollida de trucades adreçades" - -#~ msgid "Extension Directory" -#~ msgstr "Directori de connectors" - -#~ msgid "DISA (Direct Inward System Access) Application" -#~ msgstr "Aplicació DISA (Direct Inward System Access)" - -#~ msgid "Dump channel variables Application" -#~ msgstr "Bolca les variables de canal de l'aplicació" - -#~ msgid "Simple Echo Application" -#~ msgstr "Aplicació d'eco simple" - -#~ msgid "ENUM Lookup" -#~ msgstr "Consulta ENUM" - -#~ msgid "Reevaluates strings" -#~ msgstr "Reavalua cadenes" - -#~ msgid "Executes applications" -#~ msgstr "Executa aplicacions" - -#~ msgid "External IVR application interface" -#~ msgstr "Interfície d'aplicació IVR externa" - -#~ msgid "Fork The CDR into 2 separate entities" -#~ msgstr "Bifurca el CDR en 2 entitats separades" - -#~ msgid "Get ADSI CPE ID" -#~ msgstr "Obtingues la ADSI CPE ID" - -#~ msgid "Group Management Routines" -#~ msgstr "Rutines de gestió de grup" - -#~ msgid "Encode and Stream via icecast and ices" -#~ msgstr "Codifica i emet via icecast i ices" - -#~ msgid "Image Transmission Application" -#~ msgstr "Aplicació de transmissió d'imatge" - -#~ msgid "Look up Caller*ID name/number from black" -#~ msgstr "Cerca la ID/nom/número de qui truca de negre" - -#~ msgid "Look up CallerID Name from local databas" -#~ msgstr "Cerca la ID/nom/número de qui truca de la base de dades local" - -#~ msgid "Extension Macros" -#~ msgstr "Macros de connectors" - -#~ msgid "A simple math Application" -#~ msgstr "Una aplicació de matemàtiques simple" - -#~ msgid "MD5 checksum Application" -#~ msgstr "Aplicació de suma de verificació MD5" - -#~ msgid "Digital Milliwatt (mu-law) Test Application" -#~ msgstr "Aplicació de prova de milliwat digital (mu-law)" - -#~ msgid "Record a call and mix the audio during the recording" -#~ msgstr "Registra una trucada i mescla l'àudio durant la gravació" - -#~ msgid "Call Parking and Announce Application" -#~ msgstr "Aplicació d'anunci de trucades i trucada en espera" - -#~ msgid "Trivial Playback Application" -#~ msgstr "Aplicació de reproducció trivial" - -#~ msgid "Require phone number to be entered" -#~ msgstr "Requereix que s'entri un número de telèfon" - -#~ msgid "True Call Queueing" -#~ msgstr "Encuament de trucades real" - -#~ msgid "Random goto" -#~ msgstr "Goto aleatori" - -#~ msgid "Read Variable Application" -#~ msgstr "Aplicació de lectura de variables" - -#~ msgid "Read in a file" -#~ msgstr "Llegeix en un fitxer" - -#~ msgid "Realtime Data Lookup/Rewrite" -#~ msgstr "Cerca/reescriptura de dades en temps real" - -#~ msgid "Trivial Record Application" -#~ msgstr "Aplicació d'enregistrament trivial" - -#~ msgid "Say time" -#~ msgstr "Digues l'hora" - -#~ msgid "Send DTMF digits Application" -#~ msgstr "Envia aplicació de dígits DTMF" - -#~ msgid "Send Text Applications" -#~ msgstr "Envia aplicacions de text" - -#~ msgid "Set CallerID Application" -#~ msgstr "Estableix l'aplicació CallerID" - -#~ msgid "CDR user field apps" -#~ msgstr "Aplicacions de camp d'usuari CDR" - -#~ msgid "load => .so ; Set CallerID Name" -#~ msgstr "load => .so ; Estableix el nom CallerID" - -#~ msgid "load => .so ; Set CallerID Number" -#~ msgstr "load => .so ; Estableix el número CallerID" - -#~ msgid "Set RDNIS Number" -#~ msgstr "Estableix el número RDNIS" - -#~ msgid "Set ISDN Transfer Capability" -#~ msgstr "Estableix la capacitat de transferència XDSI" - -#~ msgid "SMS/PSTN handler" -#~ msgstr "Gestor SMS/PSTN" - -#~ msgid "Hangs up the requested channel" -#~ msgstr "Penja el canal sol·licitat" - -#~ msgid "Stack Routines" -#~ msgstr "Rutines de pila" - -#~ msgid "Generic System() application" -#~ msgstr "Aplicació genèrica de System()" - -#~ msgid "Playback with Talk Detection" -#~ msgstr "Playback amb Detecció de Parla" - -#~ msgid "Interface Test Application" -#~ msgstr "Aplicació de proves d'interfície" - -#~ msgid "Transfer" -#~ msgstr "Transfereix" - -#~ msgid "TXTCIDName" -#~ msgstr "TXTCIDName" - -#~ msgid "Send URL Applications" -#~ msgstr "Envia aplicacions d'URL" - -#~ msgid "Custom User Event Application" -#~ msgstr "Aplicació d'esdeveniments personalitzats d'usuari" - -#~ msgid "Send verbose output" -#~ msgstr "Envia sortida detallada" - -#~ msgid "Voicemail" -#~ msgstr "Bústia de veu" - -#~ msgid "Waits until first ring after time" -#~ msgstr "Espera fins el primer to després del temps" - -#~ msgid "Wait For Silence Application" -#~ msgstr "Espera l'aplicació de silenci" - -#~ msgid "While Loops and Conditional Execution" -#~ msgstr "Execució de bucles while i condicionals" - -#~ msgid "Comma Separated Values CDR Backend" -#~ msgstr "Valors de Backend CDR separats per comes" - -#~ msgid "Customizable Comma Separated Values CDR Backend" -#~ msgstr "Valors de Backend CDR personalitzats separats per comes" - -#~ msgid "Asterisk Call Manager CDR Backend" -#~ msgstr "Backend CDR del gestor de trucades Asterisk" - -#~ msgid "MySQL CDR Backend" -#~ msgstr "Backend CDR MySQL" - -#~ msgid "PostgreSQL CDR Backend" -#~ msgstr "Backend CDR PostgreSQL" - -#~ msgid "SQLite CDR Backend" -#~ msgstr "Backend CDR SQLite" - -#~ msgid "Agent Proxy Channel" -#~ msgstr "Canal de l'Agent Proxy" - -#~ msgid "Option chan_iax2" -#~ msgstr "Opció chan_iax2" - -#~ msgid "Local Proxy Channel" -#~ msgstr "Canal de proxy local" - -#~ msgid "Session Initiation Protocol (SIP)" -#~ msgstr "Protocol d'inicialització de sessió (SIP)" - -#~ msgid "Adaptive Differential PCM Coder/Decoder" -#~ msgstr "Codificador/Decodificador PCM adaptatiu diferencial" - -#~ msgid "A-law Coder/Decoder" -#~ msgstr "Codificador/Decodificador de llei A" - -#~ msgid "A-law and Mulaw direct Coder/Decoder" -#~ msgstr "Codificador/Decodificador directe de llei A i Mu" - -#~ msgid "ITU G.726-32kbps G726 Transcoder" -#~ msgstr "Transcodificador ITU G.726-32kbps G726" - -#~ msgid "GSM/PCM16 (signed linear) Codec Translation" -#~ msgstr "Còdec de traducció GSM/PCM16 (lineal amb signe)" - -#~ msgid "Speex/PCM16 (signed linear) Codec Translator" -#~ msgstr "Còdec de traducció Speex/PCM16 (lineal amb signe)" - -#~ msgid "Mu-law Coder/Decoder" -#~ msgstr "Codificador/Decodificador llei Mu" - -#~ msgid "Sun Microsystems AU format (signed linear)" -#~ msgstr "Format AU de Sun Microsystems (lineal amb signe)" - -#~ msgid "G.723.1 Simple Timestamp File Format" -#~ msgstr "Format de fitxer de marca de temps simple G.723.1" - -#~ msgid "Raw G.726 (16/24/32/40kbps) data" -#~ msgstr "Dades Raw G.726 (16/24/32/40kbps)" - -#~ msgid "Raw G729 data" -#~ msgstr "Dades Raw G729" - -#~ msgid "Raw GSM data" -#~ msgstr "Dades Raw GSM" - -#~ msgid "Raw h263 data" -#~ msgstr "Dades Raw h263" - -#~ msgid "JPEG (Joint Picture Experts Group) Image" -#~ msgstr "Imatge JPEG (Joint Picture Experts Group)" - -#~ msgid "Raw uLaw 8khz Audio support (PCM)" -#~ msgstr "Suport d'àudio Raw llei-u 8khz (PCM)" - -#~ msgid "load => .so ; Raw aLaw 8khz PCM Audio support" -#~ msgstr "load => .so ; suport d'àudio Raw llei-a 8khz PCM" - -#~ msgid "Raw Signed Linear Audio support (SLN)" -#~ msgstr "Suport d'àudio Raw amb signe lineal (SLN)" - -#~ msgid "Dialogic VOX (ADPCM) File Format" -#~ msgstr "Format de fitxer Dialogic VOX (ADPCM)" - -#~ msgid "Microsoft WAV format (8000hz Signed Line" -#~ msgstr "Format Microsoft WAV (8000hz amb signe lineal)" - -#~ msgid "Microsoft WAV format (Proprietary GSM)" -#~ msgstr "Format Microsoft WAV (GSM propietari)" - -#~ msgid "Caller ID related dialplan functions" -#~ msgstr "Functions de dialplan relacionades amb la ID de qui truca" - -#~ msgid "ENUM Functions" -#~ msgstr "Funcions ENUM" - -#~ msgid "URI encoding / decoding functions" -#~ msgstr "Funcions de codificació / decodificació d'URI" - -#~ msgid "Asterisk Extension Language Compiler" -#~ msgstr "Compilador del llenguatge de connectors d'Asterisk" - -#~ msgid "Text Extension Configuration" -#~ msgstr "Configuració del connector de text" - -#~ msgid "load => .so ; Builtin dialplan functions" -#~ msgstr "load => .s ; Funcions integrades dialplan" - -#~ msgid "Loopback Switch" -#~ msgstr "Switch loopback" - -#~ msgid "Realtime Switch" -#~ msgstr "Switch en temps real" - -#~ msgid "Outgoing Spool Support" -#~ msgstr "Suport de gestió de cues sortint" - -#~ msgid "Wil Cal U (Auto Dialer)" -#~ msgstr "Wil Cal U (Auto Marcatge)" - -#~ msgid "MySQL Config Resource" -#~ msgstr "Configuració del recurs MySQL" - -#~ msgid "ODBC Config Resource" -#~ msgstr "Configuració del recurs ODBC" - -#~ msgid "PGSQL Module" -#~ msgstr "Mòdul PGSQL" - -#~ msgid "Cryptographic Digital Signatures" -#~ msgstr "Signatures digitals criptogràfiques" - -#~ msgid "Call Parking Resource" -#~ msgstr "Recurs de trucada en espera" - -#~ msgid "Indications Configuration" -#~ msgstr "Configuració d'indicacions" - -#~ msgid "Call Monitoring Resource" -#~ msgstr "Recurs de monitoreig de trucades" - -#~ msgid "Music On Hold Resource" -#~ msgstr "Recurs de música en espera" - -#~ msgid "ODBC Resource" -#~ msgstr "Recurs ODBC" - -#~ msgid "SMDI Module" -#~ msgstr "Mòdul SMDI" - -#~ msgid "SNMP Module" -#~ msgstr "Mòdul SNMP" - -#~ msgid "Music On Hold" -#~ msgstr "Música en espera" - -#~ msgid "Application" -#~ msgstr "Aplicació" - -#~ msgid "Directory of Music" -#~ msgstr "Directori de música" - -#~ msgid "Option mode" -#~ msgstr "Mode d'opció" - -#~ msgid "Random Play" -#~ msgstr "Reproducció aleatòria" - -#~ msgid "DTMF mode" -#~ msgstr "Mode DTMF" - -#~ msgid "Primary domain identity for From: headers" -#~ msgstr "Domini d'identitat primari per les capçaleres From:" - -#~ msgid "From user (required by many SIP providers)" -#~ msgstr "Usuari d'inici (requerit per diversos proveïdors SIP)" - -#~ msgid "Ring on incoming dialplan contexts" -#~ msgstr "Truca en contextos d'entrades dialplan" - -#~ msgid "Allow Insecure for" -#~ msgstr "Permet insegur per" - -#~ msgid "Mailbox for MWI" -#~ msgstr "Bústia de veu per MWI" - -#~ msgid "NAT between phone and Asterisk" -#~ msgstr "NAT entre el telèfon i l'Asterisk" - -#~ msgid "Check tags in headers" -#~ msgstr "Comprova etiquetes a les capçaleres" - -#~ msgid "Reply Timeout (ms) for down connection" -#~ msgstr "Temps d'esperi per contestar (ms) per caigudes de connexió" - -#~ msgid "Register connection" -#~ msgstr "Registra connexió" - -#~ msgid "Dial own extension for mailbox" -#~ msgstr "Truca el propi connector per la bústia de veu" - -#~ msgid "Client Type" -#~ msgstr "Tipus de client" - -#~ msgid "Username" -#~ msgstr "Nom d'usuari" - -#~ msgid "Section sipgeneral" -#~ msgstr "Secció sipgeneral" - -#~ msgid "Allow codecs" -#~ msgstr "Permet còdecs" - -#~ msgid "SIP realm" -#~ msgstr "Reialme SIP" - -#~ msgid "Voicemail general options" -#~ msgstr "Opcions generals de bústia de veu" - -#~ msgid "From Email address of server" -#~ msgstr "Adreça de correu electrònic d'origen del servidor" - -#~ msgid "Voice Mail boxes" -#~ msgstr "Bústies de la bústia de veu" - -#~ msgid "Email contains attachment" -#~ msgstr "El correu electrònic conté fitxers adjunts" - -#~ msgid "Email" -#~ msgstr "Correu electrònic" - -#~ msgid "Display Name" -#~ msgstr "Nom a mostrar" - -#~ msgid "Password" -#~ msgstr "Contrasenya" - -#~ msgid "zone" -#~ msgstr "zona" - -#~ msgid "Voice Zone settings" -#~ msgstr "Configuració de zona de veu" - -#~ msgid "Message Format" -#~ msgstr "Format de missatge" diff --git a/package/luci/applications/luci-app-asterisk/po/cs/asterisk.po b/package/luci/applications/luci-app-asterisk/po/cs/asterisk.po deleted file mode 100644 index 7341d57cbd..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/cs/asterisk.po +++ /dev/null @@ -1,11 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" diff --git a/package/luci/applications/luci-app-asterisk/po/de/asterisk.po b/package/luci/applications/luci-app-asterisk/po/de/asterisk.po deleted file mode 100644 index f289849bd1..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/de/asterisk.po +++ /dev/null @@ -1,131 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2012-02-23 16:29+0200\n" -"Last-Translator: Martin \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Asterisk Grundeinstellungen" - -#~ msgid "AGI directory" -#~ msgstr "AGI - Verzeichnis" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Audiodateien während der Aufnahme zwischenspeichern" - -#~ msgid "Debug Level" -#~ msgstr "Debug Stufe" - -#~ msgid "Disable some warnings" -#~ msgstr "Schalte einige Warnungen aus" - -#~ msgid "Dump core on crash" -#~ msgstr "Speicherabbild bei Absturz erstellen" - -#~ msgid "High Priority" -#~ msgstr "Hohe Priorität" - -#~ msgid "Initialise Crypto" -#~ msgstr "Verschlüsselung initialisieren" - -#~ msgid "Use Internal Timing" -#~ msgstr "Interne Zeitreferenz benutzen" - -#~ msgid "Log directory" -#~ msgstr "Log - Verzeichnis" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Maximale Anruferanzahl" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Maximale CPU Auslastung um eingehende Anrufe anzunehmen" - -#~ msgid "Disable console colors" -#~ msgstr "Farbige Ausgabe auf der Konsole deaktivieren" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Verzeichnis zum Zwischenspeichern von Audiodateien" - -#~ msgid "The Group to run as" -#~ msgstr "zu benutzende Gruppenkennung" - -#~ msgid "The User to run as" -#~ msgstr "zu benutzende Benutzerkennung" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Sprachnachrichten Puffer" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Systemnamen als Präfix von UniquID benutzen" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "Transcode Pfade durch SLINEAR bauen, indirekt" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Übertrage Stille (SLINEAR) während der Aufnahme eines Kanals" - -#~ msgid "Verbose Level" -#~ msgstr "Detailgrad" - -#~ msgid "Allow transfer" -#~ msgstr "Übertragung erlauben" - -#~ msgid "Clear global vars" -#~ msgstr "globale Variablen Zurücksetzen" - -#~ msgid "localzone" -#~ msgstr "Zeitzone" - -#~ msgid "Connection to use" -#~ msgstr "zu verwendende Verbindung" - -#~ msgid "One touch record key" -#~ msgstr "Sofortaufnahmetaste" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Hardwarekonfiguration neuladen" - -#~ msgid "Reboot Method" -#~ msgstr "Neustartmethode" - -#~ msgid "Parameter" -#~ msgstr "Parameter" - -#~ msgid "User name" -#~ msgstr "Benutzername" - -#~ msgid "IAX General Options" -#~ msgstr "IAX Allgemeine Einstellungen" - -#~ msgid "Allow Codecs" -#~ msgstr "Codecs erlauben" - -#~ msgid "Admin PIN" -#~ msgstr "Admin PIN" - -#~ msgid "Modules" -#~ msgstr "Module" - -#~ msgid "Check if channel is available" -#~ msgstr "Prüfen, ob der Kanal verfügbar ist" - -#~ msgid "Control Playback Application" -#~ msgstr "Anwendung zur Wiedergabesteuerung" - -#~ msgid "Executes applications" -#~ msgstr "startet Anwendungen" - -#~ msgid "A simple math Application" -#~ msgstr "Einfache Mathe-Anwendung" - -#~ msgid "MD5 checksum Application" -#~ msgstr "MD5-Prüfsummen Anwendung" diff --git a/package/luci/applications/luci-app-asterisk/po/el/asterisk.po b/package/luci/applications/luci-app-asterisk/po/el/asterisk.po deleted file mode 100644 index 7a0fee7750..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/el/asterisk.po +++ /dev/null @@ -1,71 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-03-19 14:55+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Γενικές επιλογές του Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "Φάκελος AGI" - -#~ msgid "Debug Level" -#~ msgstr "Επίπεδο αποσφαλμάτωσης" - -#~ msgid "Disable some warnings" -#~ msgstr "Απενεργοποίηση ορισμένων μηνυμάτων" - -#~ msgid "High Priority" -#~ msgstr "Υψηλή Προτεραιότητα" - -#~ msgid "Initialise Crypto" -#~ msgstr "Αρχικοποίηση Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "Χρήση εσωτερικού χρονόμετρου" - -#~ msgid "Log directory" -#~ msgstr "Φάκελος καταγραφής" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Μέγιστος επιτρεπόμενος αριθμός κλήσεων" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Μέγιστος φόρτος για παύση εισερχόμενων κλήσεων" - -#~ msgid "Disable console colors" -#~ msgstr "Απενεργοποίηση χρωμάτων κονσόλας" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Κρυφός φάκελος αρχείων ήχου" - -#~ msgid "include" -#~ msgstr "περιλαμβάνω" - -#~ msgid "Clear global vars" -#~ msgstr "Καθαρισμός γενικών μεταβλητών" - -#~ msgid "Connection to use" -#~ msgstr "Χρήση σύνδεσης" - -#~ msgid "Reboot Method" -#~ msgstr "Μέθοδος Επανεκκίνησης" - -#~ msgid "Parameter" -#~ msgstr "Παράμετρος" - -#~ msgid "JPEG (Joint Picture Experts Group) Image" -#~ msgstr "Εικόνα JPEG (Joint Picture Experts Group)" - -#~ msgid "Application" -#~ msgstr "Εφαρμογή" diff --git a/package/luci/applications/luci-app-asterisk/po/en/asterisk.po b/package/luci/applications/luci-app-asterisk/po/en/asterisk.po deleted file mode 100644 index fc095087e2..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/en/asterisk.po +++ /dev/null @@ -1,680 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: 2011-06-03 10:45+0200\n" -"Last-Translator: Ladislav \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Asterisk General Options" - -#~ msgid "AGI directory" -#~ msgstr "AGI directory" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Cache recorded sound files during recording" - -#~ msgid "Debug Level" -#~ msgstr "Debug Level" - -#~ msgid "Disable some warnings" -#~ msgstr "Disable some warnings" - -#~ msgid "Dump core on crash" -#~ msgstr "Dump core on crash" - -#~ msgid "High Priority" -#~ msgstr "High Priority" - -#~ msgid "Initialise Crypto" -#~ msgstr "Initialise Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "Use Internal Timing" - -#~ msgid "Log directory" -#~ msgstr "Log directory" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Maximum number of calls allowed" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Maximum load to stop accepting new calls" - -#~ msgid "Disable console colors" -#~ msgstr "Disable console colors" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Sound files Cache directory" - -#~ msgid "The Group to run as" -#~ msgstr "The Group to run as" - -#~ msgid "The User to run as" -#~ msgstr "The User to run as" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Voicemail Spool directory" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Prefix UniquID with system name" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "Build transcode paths via SLINEAR, not directly" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Transmit SLINEAR silence while recording a channel" - -#~ msgid "Verbose Level" -#~ msgstr "Verbose Level" - -#~ msgid "Section dialplan" -#~ msgstr "Section dialplan" - -#~ msgid "include" -#~ msgstr "include" - -#~ msgid "Dialplan Extension" -#~ msgstr "Dialplan Extension" - -#~ msgid "Dialplan General Options" -#~ msgstr "Dialplan General Options" - -#~ msgid "Allow transfer" -#~ msgstr "Allow transfer" - -#~ msgid "Clear global vars" -#~ msgstr "Clear global vars" - -#~ msgid "Dialplan Goto" -#~ msgstr "Dialplan Goto" - -#~ msgid "Dialplan Conference" -#~ msgstr "Dialplan Conference" - -#~ msgid "Dialplan Time" -#~ msgstr "Dialplan Time" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "Dialplan Voicemail" - -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "Dial Zones for Dialplan" - -#~ msgid "Prefix to add matching dialplans" -#~ msgstr "Prefix to add matching dialplans" - -#~ msgid "Match International prefix" -#~ msgstr "Match International prefix" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "Prefix (0) to add/remove to/from international numbers" - -#~ msgid "localzone" -#~ msgstr "localzone" - -#~ msgid "Match plan" -#~ msgstr "Match plan" - -#~ msgid "Connection to use" -#~ msgstr "Connection to use" - -#~ msgid "Feature Key maps" -#~ msgstr "Feature Key maps" - -#~ msgid "Attended transfer key" -#~ msgstr "Attended transfer key" - -#~ msgid "Blind transfer key" -#~ msgstr "Blind transfer key" - -#~ msgid "Key to Disconnect call" -#~ msgstr "Key to Disconnect call" - -#~ msgid "Key to Park call" -#~ msgstr "Key to Park call" - -#~ msgid "Parking Feature" -#~ msgstr "Parking Feature" - -#~ msgid "ADSI Park" -#~ msgstr "ADSI Park" - -#~ msgid "Attended transfer timeout (sec)" -#~ msgstr "Attended transfer timeout (sec)" - -#~ msgid "One touch record key" -#~ msgstr "One touch record key" - -#~ msgid "Name of call context for parking" -#~ msgstr "Name of call context for parking" - -#~ msgid "Sound file to play to parked caller" -#~ msgstr "Sound file to play to parked caller" - -#~ msgid "Max time (ms) between digits for feature activation" -#~ msgstr "Max time (ms) between digits for feature activation" - -#~ msgid "Method to Find Parking slot" -#~ msgstr "Method to Find Parking slot" - -#~ msgid "parkedmusicclass" -#~ msgstr "parkedmusicclass" - -#~ msgid "Play courtesy tone to" -#~ msgstr "Play courtesy tone to" - -#~ msgid "Enable Parking" -#~ msgstr "Enable Parking" - -#~ msgid "Extension to dial to park" -#~ msgstr "Extension to dial to park" - -#~ msgid "Parking time (secs)" -#~ msgstr "Parking time (secs)" - -#~ msgid "Range of extensions for call parking" -#~ msgstr "Range of extensions for call parking" - -#~ msgid "Pickup extension" -#~ msgstr "Pickup extension" - -#~ msgid "Seconds to wait between digits when transferring" -#~ msgstr "Seconds to wait between digits when transferring" - -#~ msgid "sound when attended transfer is complete" -#~ msgstr "sound when attended transfer is complete" - -#~ msgid "Sound when attended transfer fails" -#~ msgstr "Sound when attended transfer fails" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Reload Hardware Config" - -#~ msgid "Reboot Method" -#~ msgstr "Reboot Method" - -#~ msgid "Parameter" -#~ msgstr "Parameter" - -#~ msgid "Option type" -#~ msgstr "Option type" - -#~ msgid "User name" -#~ msgstr "User name" - -#~ msgid "IAX General Options" -#~ msgstr "IAX General Options" - -#~ msgid "Allow Codecs" -#~ msgstr "Allow Codecs" - -#~ msgid "Static" -#~ msgstr "Static" - -#~ msgid "Write Protect" -#~ msgstr "Write Protect" - -#~ msgid "Meetme Conference" -#~ msgstr "Meetme Conference" - -#~ msgid "Admin PIN" -#~ msgstr "Admin PIN" - -#~ msgid "Meeting PIN" -#~ msgstr "Meeting PIN" - -#~ msgid "Meetme Conference General Options" -#~ msgstr "Meetme Conference General Options" - -#~ msgid "Number of 20ms audio buffers to be used" -#~ msgstr "Number of 20ms audio buffers to be used" - -#~ msgid "Modules" -#~ msgstr "Modules" - -#~ msgid "Alarm Receiver Application" -#~ msgstr "Alarm Receiver Application" - -#~ msgid "Authentication Application" -#~ msgstr "Authentication Application" - -#~ msgid "Make sure asterisk doesn't save CDR" -#~ msgstr "Make sure asterisk doesn't save CDR" - -#~ msgid "Check if channel is available" -#~ msgstr "Check if channel is available" - -#~ msgid "Listen in on any channel" -#~ msgstr "Listen in on any channel" - -#~ msgid "Control Playback Application" -#~ msgstr "Control Playback Application" - -#~ msgid "Cuts up variables" -#~ msgstr "Cuts up variables" - -#~ msgid "Database access functions" -#~ msgstr "Database access functions" - -#~ msgid "Dialing Application" -#~ msgstr "Dialing Application" - -#~ msgid "Virtual Dictation Machine Application" -#~ msgstr "Virtual Dictation Machine Application" - -#~ msgid "Directed Call Pickup Support" -#~ msgstr "Directed Call Pickup Support" - -#~ msgid "Extension Directory" -#~ msgstr "Extension Directory" - -#~ msgid "DISA (Direct Inward System Access) Application" -#~ msgstr "DISA (Direct Inward System Access) Application" - -#~ msgid "Dump channel variables Application" -#~ msgstr "Dump channel variables Application" - -#~ msgid "Simple Echo Application" -#~ msgstr "Simple Echo Application" - -#~ msgid "ENUM Lookup" -#~ msgstr "ENUM Lookup" - -#~ msgid "Reevaluates strings" -#~ msgstr "Reevaluates strings" - -#~ msgid "Executes applications" -#~ msgstr "Executes applications" - -#~ msgid "External IVR application interface" -#~ msgstr "External IVR application interface" - -#~ msgid "Fork The CDR into 2 separate entities" -#~ msgstr "Fork The CDR into 2 separate entities" - -#~ msgid "Get ADSI CPE ID" -#~ msgstr "Get ADSI CPE ID" - -#~ msgid "Group Management Routines" -#~ msgstr "Group Management Routines" - -#~ msgid "Encode and Stream via icecast and ices" -#~ msgstr "Encode and Stream via icecast and ices" - -#~ msgid "Image Transmission Application" -#~ msgstr "Image Transmission Application" - -#~ msgid "Look up Caller*ID name/number from black" -#~ msgstr "Look up Caller*ID name/number from black" - -#~ msgid "Look up CallerID Name from local databas" -#~ msgstr "Look up CallerID Name from local databas" - -#~ msgid "Extension Macros" -#~ msgstr "Extension Macros" - -#~ msgid "A simple math Application" -#~ msgstr "A simple math Application" - -#~ msgid "MD5 checksum Application" -#~ msgstr "MD5 checksum Application" - -#~ msgid "Digital Milliwatt (mu-law) Test Application" -#~ msgstr "Digital Milliwatt (mu-law) Test Application" - -#~ msgid "Record a call and mix the audio during the recording" -#~ msgstr "Record a call and mix the audio during the recording" - -#~ msgid "Call Parking and Announce Application" -#~ msgstr "Call Parking and Announce Application" - -#~ msgid "Trivial Playback Application" -#~ msgstr "Trivial Playback Application" - -#~ msgid "Require phone number to be entered" -#~ msgstr "Require phone number to be entered" - -#~ msgid "True Call Queueing" -#~ msgstr "True Call Queueing" - -#~ msgid "Random goto" -#~ msgstr "Random goto" - -#~ msgid "Read Variable Application" -#~ msgstr "Read Variable Application" - -#~ msgid "Read in a file" -#~ msgstr "Read in a file" - -#~ msgid "Realtime Data Lookup/Rewrite" -#~ msgstr "Realtime Data Lookup/Rewrite" - -#~ msgid "Trivial Record Application" -#~ msgstr "Trivial Record Application" - -#~ msgid "Say time" -#~ msgstr "Say time" - -#~ msgid "Send DTMF digits Application" -#~ msgstr "Send DTMF digits Application" - -#~ msgid "Send Text Applications" -#~ msgstr "Send Text Applications" - -#~ msgid "Set CallerID Application" -#~ msgstr "Set CallerID Application" - -#~ msgid "CDR user field apps" -#~ msgstr "CDR user field apps" - -#~ msgid "load => .so ; Set CallerID Name" -#~ msgstr "load => .so ; Set CallerID Name" - -#~ msgid "load => .so ; Set CallerID Number" -#~ msgstr "load => .so ; Set CallerID Number" - -#~ msgid "Set RDNIS Number" -#~ msgstr "Set RDNIS Number" - -#~ msgid "Set ISDN Transfer Capability" -#~ msgstr "Set ISDN Transfer Capability" - -#~ msgid "SMS/PSTN handler" -#~ msgstr "SMS/PSTN handler" - -#~ msgid "Hangs up the requested channel" -#~ msgstr "Hangs up the requested channel" - -#~ msgid "Stack Routines" -#~ msgstr "Stack Routines" - -#~ msgid "Generic System() application" -#~ msgstr "Generic System() application" - -#~ msgid "Playback with Talk Detection" -#~ msgstr "Playback with Talk Detection" - -#~ msgid "Interface Test Application" -#~ msgstr "Interface Test Application" - -#~ msgid "Transfer" -#~ msgstr "Transfer" - -#~ msgid "TXTCIDName" -#~ msgstr "TXTCIDName" - -#~ msgid "Send URL Applications" -#~ msgstr "Send URL Applications" - -#~ msgid "Custom User Event Application" -#~ msgstr "Custom User Event Application" - -#~ msgid "Send verbose output" -#~ msgstr "Send verbose output" - -#~ msgid "Voicemail" -#~ msgstr "Voicemail" - -#~ msgid "Waits until first ring after time" -#~ msgstr "Waits until first ring after time" - -#~ msgid "Wait For Silence Application" -#~ msgstr "Wait For Silence Application" - -#~ msgid "While Loops and Conditional Execution" -#~ msgstr "While Loops and Conditional Execution" - -#~ msgid "Comma Separated Values CDR Backend" -#~ msgstr "Comma Separated Values CDR Backend" - -#~ msgid "Customizable Comma Separated Values CDR Backend" -#~ msgstr "Customizable Comma Separated Values CDR Backend" - -#~ msgid "Asterisk Call Manager CDR Backend" -#~ msgstr "Asterisk Call Manager CDR Backend" - -#~ msgid "MySQL CDR Backend" -#~ msgstr "MySQL CDR Backend" - -#~ msgid "PostgreSQL CDR Backend" -#~ msgstr "PostgreSQL CDR Backend" - -#~ msgid "SQLite CDR Backend" -#~ msgstr "SQLite CDR Backend" - -#~ msgid "Agent Proxy Channel" -#~ msgstr "Agent Proxy Channel" - -#~ msgid "Option chan_iax2" -#~ msgstr "Option chan_iax2" - -#~ msgid "Local Proxy Channel" -#~ msgstr "Local Proxy Channel" - -#~ msgid "Session Initiation Protocol (SIP)" -#~ msgstr "Session Initiation Protocol (SIP)" - -#~ msgid "Adaptive Differential PCM Coder/Decoder" -#~ msgstr "Adaptive Differential PCM Coder/Decoder" - -#~ msgid "A-law Coder/Decoder" -#~ msgstr "A-law Coder/Decoder" - -#~ msgid "A-law and Mulaw direct Coder/Decoder" -#~ msgstr "A-law and Mulaw direct Coder/Decoder" - -#~ msgid "ITU G.726-32kbps G726 Transcoder" -#~ msgstr "ITU G.726-32kbps G726 Transcoder" - -#~ msgid "GSM/PCM16 (signed linear) Codec Translation" -#~ msgstr "GSM/PCM16 (signed linear) Codec Translation" - -#~ msgid "Speex/PCM16 (signed linear) Codec Translator" -#~ msgstr "Speex/PCM16 (signed linear) Codec Translator" - -#~ msgid "Mu-law Coder/Decoder" -#~ msgstr "Mu-law Coder/Decoder" - -#~ msgid "Sun Microsystems AU format (signed linear)" -#~ msgstr "Sun Microsystems AU format (signed linear)" - -#~ msgid "G.723.1 Simple Timestamp File Format" -#~ msgstr "G.723.1 Simple Timestamp File Format" - -#~ msgid "Raw G.726 (16/24/32/40kbps) data" -#~ msgstr "Raw G.726 (16/24/32/40kbps) data" - -#~ msgid "Raw G729 data" -#~ msgstr "Raw G729 data" - -#~ msgid "Raw GSM data" -#~ msgstr "Raw GSM data" - -#~ msgid "Raw h263 data" -#~ msgstr "Raw h263 data" - -#~ msgid "JPEG (Joint Picture Experts Group) Image" -#~ msgstr "JPEG (Joint Picture Experts Group) Image" - -#~ msgid "Raw uLaw 8khz Audio support (PCM)" -#~ msgstr "Raw uLaw 8khz Audio support (PCM)" - -#~ msgid "load => .so ; Raw aLaw 8khz PCM Audio support" -#~ msgstr "load => .so ; Raw aLaw 8khz PCM Audio support" - -#~ msgid "Raw Signed Linear Audio support (SLN)" -#~ msgstr "Raw Signed Linear Audio support (SLN)" - -#~ msgid "Dialogic VOX (ADPCM) File Format" -#~ msgstr "Dialogic VOX (ADPCM) File Format" - -#~ msgid "Microsoft WAV format (8000hz Signed Line" -#~ msgstr "Microsoft WAV format (8000hz Signed Line" - -#~ msgid "Microsoft WAV format (Proprietary GSM)" -#~ msgstr "Microsoft WAV format (Proprietary GSM)" - -#~ msgid "Caller ID related dialplan functions" -#~ msgstr "Caller ID related dialplan functions" - -#~ msgid "ENUM Functions" -#~ msgstr "ENUM Functions" - -#~ msgid "URI encoding / decoding functions" -#~ msgstr "URI encoding / decoding functions" - -#~ msgid "Asterisk Extension Language Compiler" -#~ msgstr "Asterisk Extension Language Compiler" - -#~ msgid "Text Extension Configuration" -#~ msgstr "Text Extension Configuration" - -#~ msgid "load => .so ; Builtin dialplan functions" -#~ msgstr "load => .so ; Builtin dialplan functions" - -#~ msgid "Loopback Switch" -#~ msgstr "Loopback Switch" - -#~ msgid "Realtime Switch" -#~ msgstr "Realtime Switch" - -#~ msgid "Outgoing Spool Support" -#~ msgstr "Outgoing Spool Support" - -#~ msgid "Wil Cal U (Auto Dialer)" -#~ msgstr "Wil Cal U (Auto Dialer)" - -#~ msgid "MySQL Config Resource" -#~ msgstr "MySQL Config Resource" - -#~ msgid "ODBC Config Resource" -#~ msgstr "ODBC Config Resource" - -#~ msgid "PGSQL Module" -#~ msgstr "PGSQL Module" - -#~ msgid "Cryptographic Digital Signatures" -#~ msgstr "Cryptographic Digital Signatures" - -#~ msgid "Call Parking Resource" -#~ msgstr "Call Parking Resource" - -#~ msgid "Indications Configuration" -#~ msgstr "Indications Configuration" - -#~ msgid "Call Monitoring Resource" -#~ msgstr "Call Monitoring Resource" - -#~ msgid "Music On Hold Resource" -#~ msgstr "Music On Hold Resource" - -#~ msgid "ODBC Resource" -#~ msgstr "ODBC Resource" - -#~ msgid "SMDI Module" -#~ msgstr "SMDI Module" - -#~ msgid "SNMP Module" -#~ msgstr "SNMP Module" - -#~ msgid "Music On Hold" -#~ msgstr "Music On Hold" - -#~ msgid "Application" -#~ msgstr "Application" - -#~ msgid "Directory of Music" -#~ msgstr "Directory of Music" - -#~ msgid "Option mode" -#~ msgstr "Option mode" - -#~ msgid "Random Play" -#~ msgstr "Random Play" - -#~ msgid "DTMF mode" -#~ msgstr "DTMF mode" - -#~ msgid "Primary domain identity for From: headers" -#~ msgstr "Primary domain identity for From: headers" - -#~ msgid "From user (required by many SIP providers)" -#~ msgstr "From user (required by many SIP providers)" - -#~ msgid "Ring on incoming dialplan contexts" -#~ msgstr "Ring on incoming dialplan contexts" - -#~ msgid "Allow Insecure for" -#~ msgstr "Allow Insecure for" - -#~ msgid "Mailbox for MWI" -#~ msgstr "Mailbox for MWI" - -#~ msgid "NAT between phone and Asterisk" -#~ msgstr "NAT between phone and Asterisk" - -#~ msgid "Check tags in headers" -#~ msgstr "Check tags in headers" - -#~ msgid "Reply Timeout (ms) for down connection" -#~ msgstr "Reply Timeout (ms) for down connection" - -#~ msgid "Register connection" -#~ msgstr "Register connection" - -#~ msgid "Dial own extension for mailbox" -#~ msgstr "Dial own extension for mailbox" - -#~ msgid "Client Type" -#~ msgstr "Client Type" - -#~ msgid "Username" -#~ msgstr "Username" - -#~ msgid "Section sipgeneral" -#~ msgstr "Section sipgeneral" - -#~ msgid "Allow codecs" -#~ msgstr "Allow codecs" - -#~ msgid "SIP realm" -#~ msgstr "SIP realm" - -#~ msgid "Voicemail general options" -#~ msgstr "Voicemail general options" - -#~ msgid "From Email address of server" -#~ msgstr "From Email address of server" - -#~ msgid "Voice Mail boxes" -#~ msgstr "Voice Mail boxes" - -#~ msgid "Email contains attachment" -#~ msgstr "Email contains attachment" - -#~ msgid "Email" -#~ msgstr "Email" - -#~ msgid "Display Name" -#~ msgstr "Display Name" - -#~ msgid "Password" -#~ msgstr "Password" - -#~ msgid "zone" -#~ msgstr "zone" - -#~ msgid "Voice Zone settings" -#~ msgstr "Voice Zone settings" - -#~ msgid "Message Format" -#~ msgstr "Message Format" diff --git a/package/luci/applications/luci-app-asterisk/po/es/asterisk.po b/package/luci/applications/luci-app-asterisk/po/es/asterisk.po deleted file mode 100644 index f42ddb4fd5..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/es/asterisk.po +++ /dev/null @@ -1,355 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-04-16 00:52+0200\n" -"Last-Translator: Jose \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Opciones Generales de Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "Directorio AGI" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Almacena los ficheros de sonido mientras se graba" - -#~ msgid "Debug Level" -#~ msgstr "Nivel de Depuración" - -#~ msgid "Disable some warnings" -#~ msgstr "Desactivar algunos avisos" - -#~ msgid "Dump core on crash" -#~ msgstr "Volcar núcleo en caso de fallo" - -#~ msgid "High Priority" -#~ msgstr "Prioridad Alta" - -#~ msgid "Initialise Crypto" -#~ msgstr "Inicializar Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "Usar temporización interna" - -#~ msgid "Log directory" -#~ msgstr "Directorio de registro" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Número máximo de llamadas permitidas" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Carga máxima para dejar de admitir nuevas llamadas" - -#~ msgid "Disable console colors" -#~ msgstr "Desactivar colores en la consola" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Directorio de caché de archivos de sonido" - -#~ msgid "The Group to run as" -#~ msgstr "Grupo en el que ejecutarse" - -#~ msgid "The User to run as" -#~ msgstr "Usuario como el que se ejecutará" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Directorio de la cola de mensajes de voz" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Prefijo UniquID con el nombre del sistema" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "" -#~ "Construir las rutas de transcodificación usando SLINEAR, no directamente" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Transmitir silencio SLINEAR mientras graba un canal" - -#~ msgid "Verbose Level" -#~ msgstr "Nivel de detalle" - -#~ msgid "Section dialplan" -#~ msgstr "Sección Dialplan" - -#~ msgid "include" -#~ msgstr "incluir" - -#~ msgid "Dialplan Extension" -#~ msgstr "Extensión Dialplan" - -#~ msgid "Dialplan General Options" -#~ msgstr "Opciones generales de Dialplan" - -#~ msgid "Allow transfer" -#~ msgstr "Permitir transferencia" - -#~ msgid "Clear global vars" -#~ msgstr "Limpiar las variables globales" - -#~ msgid "Dialplan Goto" -#~ msgstr "Dialplan Goto" - -#~ msgid "Dialplan Conference" -#~ msgstr "Conferencia Dialplan" - -#~ msgid "Dialplan Time" -#~ msgstr "Dialplan Time" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "Buzón de voz de Dialplan" - -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "Zonas de marcado para Dialplan" - -#~ msgid "Prefix to add matching dialplans" -#~ msgstr "Prefijo para añadir coincidencias de plan de marcado" - -#~ msgid "Match International prefix" -#~ msgstr "Coincidir con el prefijo internacional" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "Prefijo (0) para añadir/eliminar a/de números internacionales" - -#~ msgid "localzone" -#~ msgstr "zona local" - -#~ msgid "Match plan" -#~ msgstr "Coincidir con el plan" - -#~ msgid "Connection to use" -#~ msgstr "Conexión que se utilizará" - -#~ msgid "Feature Key maps" -#~ msgstr "Mapa de Funciones Clave" - -#~ msgid "Attended transfer key" -#~ msgstr "Tecla de transferencia asistida" - -#~ msgid "Blind transfer key" -#~ msgstr "Tecla de transferencia ciega" - -#~ msgid "Key to Disconnect call" -#~ msgstr "Tecla para desconectar la llamada" - -#~ msgid "Key to Park call" -#~ msgstr "Tecla para retener la llamada" - -#~ msgid "Parking Feature" -#~ msgstr "Función de llamada en espera" - -#~ msgid "ADSI Park" -#~ msgstr "Llamada en espera ADSI" - -#~ msgid "Attended transfer timeout (sec)" -#~ msgstr "Tiempo de espera de transferencia asistida (seg)" - -#~ msgid "One touch record key" -#~ msgstr "Tecla de grabacion con una sola tecla" - -#~ msgid "Name of call context for parking" -#~ msgstr "Nombre del contexto de la llamada en espera" - -#~ msgid "Sound file to play to parked caller" -#~ msgstr "Archivo de sonido para reproducir en la llamada en espera" - -#~ msgid "Max time (ms) between digits for feature activation" -#~ msgstr "Tiempo máximo (en ms) entre digitos para la activación de funciones" - -#~ msgid "Method to Find Parking slot" -#~ msgstr "Método para encontrar una ranura de llamada en espera" - -#~ msgid "parkedmusicclass" -#~ msgstr "parkedmusicclass" - -#~ msgid "Play courtesy tone to" -#~ msgstr "Reproducir tono de cortesía en" - -#~ msgid "Enable Parking" -#~ msgstr "Activar llamadas en espera" - -#~ msgid "Extension to dial to park" -#~ msgstr "Extensión a marcar para dejar en espera una llamada" - -#~ msgid "Parking time (secs)" -#~ msgstr "Tiempo de llamada en espera (segs)" - -#~ msgid "Range of extensions for call parking" -#~ msgstr "Rango de extensiones para llamadas en espera" - -#~ msgid "Pickup extension" -#~ msgstr "Extensión de Pickup" - -#~ msgid "Seconds to wait between digits when transferring" -#~ msgstr "Segundos de espera entre digitos mientras se transfiere" - -#~ msgid "sound when attended transfer is complete" -#~ msgstr "sonido cuando se completa la transferencia asistida" - -#~ msgid "Sound when attended transfer fails" -#~ msgstr "sonido para cuando falla la transferencia asistida" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Recargar la configuración del Hardware" - -#~ msgid "Reboot Method" -#~ msgstr "Método de reinicio" - -#~ msgid "Parameter" -#~ msgstr "Parámetro" - -#~ msgid "Option type" -#~ msgstr "Tipo de opción" - -#~ msgid "User name" -#~ msgstr "Nombre de Usuario" - -#~ msgid "IAX General Options" -#~ msgstr "Opciones Generales de IAX" - -#~ msgid "Allow Codecs" -#~ msgstr "Permitir Codecs" - -#~ msgid "Static" -#~ msgstr "Estático" - -#~ msgid "Write Protect" -#~ msgstr "Protección contra escritura" - -#~ msgid "Meetme Conference" -#~ msgstr "Conferencia Meetme (entre dos)" - -#~ msgid "Admin PIN" -#~ msgstr "PIN de Administrador" - -#~ msgid "Meeting PIN" -#~ msgstr "PIN de Reunión (Meeting)" - -#~ msgid "Meetme Conference General Options" -#~ msgstr "Opciones generales de conferencia Meetme (entre dos)" - -#~ msgid "Number of 20ms audio buffers to be used" -#~ msgstr "Número de memorias intermedias de audio de 20 ms a utilizar" - -#~ msgid "Modules" -#~ msgstr "Módulos" - -#~ msgid "Alarm Receiver Application" -#~ msgstr "Aplicación de Recepción de Alarma" - -#~ msgid "Authentication Application" -#~ msgstr "Aplicación de autenticación" - -#~ msgid "Make sure asterisk doesn't save CDR" -#~ msgstr "Asegúrate que asterisk no graba CDR" - -#~ msgid "Check if channel is available" -#~ msgstr "Comprueba que el canal esté disponible" - -#~ msgid "Listen in on any channel" -#~ msgstr "Escuchar en cualquier canal" - -#~ msgid "Control Playback Application" -#~ msgstr "Aplicación para el control de reproducción" - -#~ msgid "Cuts up variables" -#~ msgstr "Variables de corte" - -#~ msgid "Database access functions" -#~ msgstr "Funciones de acceso a la Base de Datos" - -#~ msgid "Dialing Application" -#~ msgstr "Aplicación de marcado telefónico" - -#~ msgid "Virtual Dictation Machine Application" -#~ msgstr "Aplicación de máquina de Dictado Virtual" - -#~ msgid "Directed Call Pickup Support" -#~ msgstr "Apoyo a la captura de llamadas dirigidas" - -#~ msgid "Extension Directory" -#~ msgstr "Directorio de Extensiones" - -#~ msgid "DISA (Direct Inward System Access) Application" -#~ msgstr "Aplicación DISA (Acceso directo entrante al sistema)" - -#~ msgid "Simple Echo Application" -#~ msgstr "Aplicación de Eco Simple" - -#~ msgid "ENUM Lookup" -#~ msgstr "Consulta ENUM" - -#~ msgid "Reevaluates strings" -#~ msgstr "Reevaluar secuencia de caracteres" - -#~ msgid "Executes applications" -#~ msgstr "Ejecuta aplicaciones" - -#~ msgid "External IVR application interface" -#~ msgstr "Interfaz de aplicación IVR externa" - -#~ msgid "Fork The CDR into 2 separate entities" -#~ msgstr "Bifurcar el CDR en 2 entidades separadas" - -#~ msgid "Get ADSI CPE ID" -#~ msgstr "Obtener el ADSI CPE ID" - -#~ msgid "Group Management Routines" -#~ msgstr "Rutinas de Administración de grupo" - -#~ msgid "Encode and Stream via icecast and ices" -#~ msgstr "Codifica y emite a través de icecast e ices" - -#~ msgid "Image Transmission Application" -#~ msgstr "Aplicación de transmisión de imagen" - -#~ msgid "Look up Caller*ID name/number from black" -#~ msgstr "Buscar la identidad del llamante nombre/número en la lista negra" - -#~ msgid "Look up CallerID Name from local databas" -#~ msgstr "" -#~ "Buscar el nombre de identidad del llamante en las bases de datos locales" - -#~ msgid "Extension Macros" -#~ msgstr "Macros de Extensión" - -#~ msgid "A simple math Application" -#~ msgstr "Una simple aplicación matemática" - -#~ msgid "MD5 checksum Application" -#~ msgstr "Aplicación de suma de verificación MD5" - -#~ msgid "Digital Milliwatt (mu-law) Test Application" -#~ msgstr "Aplicación de testeo de Milivatios Digitales (mu-law)" - -#~ msgid "Record a call and mix the audio during the recording" -#~ msgstr "Grabar una llamada y mezclar el sonido durante la grabación" - -#~ msgid "Call Parking and Announce Application" -#~ msgstr "Aplicación de Anuncio y Llamada en Espera" - -#~ msgid "Trivial Playback Application" -#~ msgstr "Aplicación de reproducción trivial" - -#~ msgid "Require phone number to be entered" -#~ msgstr "Requiere que se introduzca un número de teléfono" - -#~ msgid "True Call Queueing" -#~ msgstr "Lista de espera real de llamadas" - -#~ msgid "Random goto" -#~ msgstr "Goto (ir a) Aleatorio" - -#~ msgid "Read Variable Application" -#~ msgstr "Aplicación de lectura de variables" - -#~ msgid "Read in a file" -#~ msgstr "Leer en un archivo" diff --git a/package/luci/applications/luci-app-asterisk/po/fr/asterisk.po b/package/luci/applications/luci-app-asterisk/po/fr/asterisk.po deleted file mode 100644 index 63d085a1af..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/fr/asterisk.po +++ /dev/null @@ -1,569 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2011-11-23 22:34+0200\n" -"Last-Translator: fredb \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Paramètres généraux d'Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "Répertoire AGI" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Mes les sons enregistrés en cache pendant l'enregistrement" - -#~ msgid "Debug Level" -#~ msgstr "Niveau de déboguage" - -#~ msgid "Disable some warnings" -#~ msgstr "Désactiver certaines alertes" - -#~ msgid "Dump core on crash" -#~ msgstr "Créer une image-core en cas de crash" - -#~ msgid "High Priority" -#~ msgstr "Priorité haute" - -#~ msgid "Initialise Crypto" -#~ msgstr "Initialise le chiffrage" - -#~ msgid "Use Internal Timing" -#~ msgstr "Utiliser un délai interne" - -#~ msgid "Log directory" -#~ msgstr "Répertoire des journaux" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Nombre maximum d'appels autorisés" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Charge maximum jusqu'à laquelle on accepte de nouveaux appels" - -#~ msgid "Disable console colors" -#~ msgstr "Désactiver les couleurs de la console" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Répertoire de cache des ficihers-sons" - -#~ msgid "The Group to run as" -#~ msgstr "Exécuté avec ce groupe" - -#~ msgid "The User to run as" -#~ msgstr "Exécuté avec cet utilisateur" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Répertoire de stockage du répondeur" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Préfixer le « UniquID » avec le nom du système" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "Construire des chemins de traduction via SLINEAR, pas directement" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Transmettre le silence SLINEAR lors de l'enregistrement d'un canal" - -#~ msgid "Verbose Level" -#~ msgstr "Niveau de verbosité" - -#~ msgid "Section dialplan" -#~ msgstr "Section du plan de numérotation" - -#~ msgid "include" -#~ msgstr "Inclure" - -#~ msgid "Dialplan Extension" -#~ msgstr "Extension du plan de numérotation" - -#~ msgid "Dialplan General Options" -#~ msgstr "Paramètres généraux du plan de numérotation" - -#~ msgid "Allow transfer" -#~ msgstr "Permettre le transfert" - -#~ msgid "Clear global vars" -#~ msgstr "Effacer les variables globales" - -#~ msgid "Dialplan Conference" -#~ msgstr "Règles d'aiguillage pour la conférence" - -#~ msgid "Dialplan Time" -#~ msgstr "Règles d'aiguillage liées au temps" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "Règles d'aiguillage de la messagerie vocale" - -#~ msgid "Match International prefix" -#~ msgstr "Préfixe correspondant à l'international" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "Préfixe (0) à ajouter à/retirer d'un numéro international" - -#~ msgid "localzone" -#~ msgstr "zone locale" - -#~ msgid "Match plan" -#~ msgstr "Règle de correspondance" - -#~ msgid "Connection to use" -#~ msgstr "Connexion à utiliser" - -#~ msgid "Blind transfer key" -#~ msgstr "Touche de transfert en aveugle" - -#~ msgid "Key to Disconnect call" -#~ msgstr "Touche pour déconnecter un appel" - -#~ msgid "Key to Park call" -#~ msgstr "Touche pour parquer un appel" - -#~ msgid "Parking Feature" -#~ msgstr "Capacité de mise en parking" - -#~ msgid "ADSI Park" -#~ msgstr "Parking ADSI" - -#~ msgid "Attended transfer timeout (sec)" -#~ msgstr "Délai max d'un transfert programmé (secondes)" - -#~ msgid "Name of call context for parking" -#~ msgstr "Nom du contexte d'appel pour une mise en parking" - -#~ msgid "Sound file to play to parked caller" -#~ msgstr "Fichier-son à jouer aux appelants mis en parking" - -#~ msgid "Max time (ms) between digits for feature activation" -#~ msgstr "" -#~ "Durée max (en ms) entre les chiffres pour l'activation d'une commande" - -#~ msgid "Method to Find Parking slot" -#~ msgstr "Méthode pour trouver une place de parking" - -#~ msgid "Play courtesy tone to" -#~ msgstr "Jouer une tonalité de courtoisie à" - -#~ msgid "Enable Parking" -#~ msgstr "Activer la mise en parking" - -#~ msgid "Parking time (secs)" -#~ msgstr "Durée de mise en parking (secondes)" - -#~ msgid "Seconds to wait between digits when transferring" -#~ msgstr "Attente en secondes entre les chiffres Lors d'un transfert" - -#~ msgid "sound when attended transfer is complete" -#~ msgstr "Son joué quand un transfert programmé est effectué" - -#~ msgid "Sound when attended transfer fails" -#~ msgstr "Son joué quand nu transfert programmé rate" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Relit la configuration matérielle" - -#~ msgid "Reboot Method" -#~ msgstr "Méthode de redémarrage" - -#~ msgid "Parameter" -#~ msgstr "Paramètre" - -#~ msgid "Option type" -#~ msgstr "Type d'option" - -#~ msgid "User name" -#~ msgstr "Nom d'utilisateur" - -#~ msgid "IAX General Options" -#~ msgstr "Paramètres généraux du protocole IAX" - -#~ msgid "Allow Codecs" -#~ msgstr "Codecs autorisés" - -#~ msgid "Static" -#~ msgstr "Statique" - -#~ msgid "Write Protect" -#~ msgstr "Protection contre l'écriture" - -#~ msgid "Meetme Conference" -#~ msgstr "Conférence « Meetme »" - -#~ msgid "Admin PIN" -#~ msgstr "ID d'administrateur" - -#~ msgid "Meeting PIN" -#~ msgstr "Code de conférence" - -#~ msgid "Meetme Conference General Options" -#~ msgstr "Options générales de conférence « Meetme »" - -#~ msgid "Number of 20ms audio buffers to be used" -#~ msgstr "Nombre de buffers audio de 20 ms à utiliser" - -#~ msgid "Modules" -#~ msgstr "Modules" - -#~ msgid "Alarm Receiver Application" -#~ msgstr "Application de réception d'alarme" - -#~ msgid "Authentication Application" -#~ msgstr "Application d'authentification" - -#~ msgid "Make sure asterisk doesn't save CDR" -#~ msgstr "S'assure qu'Asterisk ne sauve pas le CDR" - -#~ msgid "Check if channel is available" -#~ msgstr "Vérifie que le canal est libre" - -#~ msgid "Listen in on any channel" -#~ msgstr "Écoute sur n'importe quel canal" - -#~ msgid "Database access functions" -#~ msgstr "Fonctions d'accès aux bases de données" - -#~ msgid "Dialing Application" -#~ msgstr "Application de numérotation" - -#~ msgid "Virtual Dictation Machine Application" -#~ msgstr "Application de dictaphone virtuel" - -#~ msgid "Dump channel variables Application" -#~ msgstr "Application de copie des variables d'un canal" - -#~ msgid "Simple Echo Application" -#~ msgstr "Application de simple écho" - -#~ msgid "ENUM Lookup" -#~ msgstr "Résolution d'un ENUM" - -#~ msgid "Reevaluates strings" -#~ msgstr "Ré-évaluer les chaînes" - -#~ msgid "Executes applications" -#~ msgstr "Lance les applications" - -#~ msgid "External IVR application interface" -#~ msgstr "Interface d'application SVI externe" - -#~ msgid "Fork The CDR into 2 separate entities" -#~ msgstr "Dupliquer le CDR en deux entités séparées" - -#~ msgid "Get ADSI CPE ID" -#~ msgstr "Obtenir le « ADSI CPE ID »" - -#~ msgid "Group Management Routines" -#~ msgstr "Fonctions de gestion des groupes" - -#~ msgid "Encode and Stream via icecast and ices" -#~ msgstr "Coder et diffuser via icecast et ices" - -#~ msgid "Image Transmission Application" -#~ msgstr "Application d'envoi d'image" - -#~ msgid "Look up CallerID Name from local databas" -#~ msgstr "Rechercher le nom de l'appelant dans la base locale" - -#~ msgid "Extension Macros" -#~ msgstr "Macros d'extension" - -#~ msgid "A simple math Application" -#~ msgstr "Une simple application mathématique" - -#~ msgid "MD5 checksum Application" -#~ msgstr "Application de signature MD5" - -#~ msgid "Record a call and mix the audio during the recording" -#~ msgstr "Enregistre un appelle et mixe le son pendant l'enregistrement" - -#~ msgid "Call Parking and Announce Application" -#~ msgstr "Application de mise en parking d'appel et annonce" - -#~ msgid "Trivial Playback Application" -#~ msgstr "Application de simple écoute" - -#~ msgid "Require phone number to be entered" -#~ msgstr "Nécessite d'entrer un numéro de téléphone" - -#~ msgid "True Call Queueing" -#~ msgstr "Véritable sérialisation des appels" - -#~ msgid "Read Variable Application" -#~ msgstr "Application de lecture d'une variable" - -#~ msgid "Read in a file" -#~ msgstr "Lire dans un fichier" - -#~ msgid "Realtime Data Lookup/Rewrite" -#~ msgstr "Recherche/ré-écriture de données en temps-réel" - -#~ msgid "Trivial Record Application" -#~ msgstr "Application de simple enregistrement" - -#~ msgid "Say time" -#~ msgstr "Dis l'heure" - -#~ msgid "Send DTMF digits Application" -#~ msgstr "Application d'envoi de chiffres en DTMF" - -#~ msgid "Send Text Applications" -#~ msgstr "Applications d'envoi de texte" - -#~ msgid "Set CallerID Application" -#~ msgstr "Application de positionnement de l'identifiant de l'appelant" - -#~ msgid "load => .so ; Set CallerID Name" -#~ msgstr "" -#~ "charger => .so ; Positionner le nom dans l'identifiant de l'appelant" - -#~ msgid "load => .so ; Set CallerID Number" -#~ msgstr "" -#~ "charger => .so ; Positionner le numéro dans l'identifiant de l'appelant" - -#~ msgid "Set RDNIS Number" -#~ msgstr "Positionner le numéro RDNIS" - -#~ msgid "Set ISDN Transfer Capability" -#~ msgstr "Activer la possibilité de transfert RNIS" - -#~ msgid "SMS/PSTN handler" -#~ msgstr "Gestionnaire SMS/RTC" - -#~ msgid "Hangs up the requested channel" -#~ msgstr "Raccroche le canal demandé" - -#~ msgid "Stack Routines" -#~ msgstr "Empile les routines" - -#~ msgid "Generic System() application" -#~ msgstr "Application générique System()" - -#~ msgid "Playback with Talk Detection" -#~ msgstr "Jouer un son avec la détection de parole" - -#~ msgid "Interface Test Application" -#~ msgstr "Application de test d'interface" - -#~ msgid "Transfer" -#~ msgstr "Transfert" - -#~ msgid "Send URL Applications" -#~ msgstr "Applications d'envois d'URL" - -#~ msgid "Send verbose output" -#~ msgstr "Envoyer une sortie détaillée" - -#~ msgid "Voicemail" -#~ msgstr "Répondeur" - -#~ msgid "Wait For Silence Application" -#~ msgstr "Application d'attente de silence" - -#~ msgid "Session Initiation Protocol (SIP)" -#~ msgstr "Session Initiation Protocol (SIP)" - -#~ msgid "Adaptive Differential PCM Coder/Decoder" -#~ msgstr "Codec PCM différentiel adaptatif (ADPCM)" - -#~ msgid "A-law Coder/Decoder" -#~ msgstr "Codec loi-A" - -#~ msgid "A-law and Mulaw direct Coder/Decoder" -#~ msgstr "Codec loi-A et loi-Mu directs" - -#~ msgid "ITU G.726-32kbps G726 Transcoder" -#~ msgstr "Transcodeur G726 (ITU G.726 32 kbit/s)" - -#~ msgid "GSM/PCM16 (signed linear) Codec Translation" -#~ msgstr "Codec de traduction GSM/PCM16 (linéaire signé)" - -#~ msgid "Speex/PCM16 (signed linear) Codec Translator" -#~ msgstr "Codec de traduction Speex/PCM16 (linéaire signé)" - -#~ msgid "Mu-law Coder/Decoder" -#~ msgstr "Codec loi-Mu" - -#~ msgid "Sun Microsystems AU format (signed linear)" -#~ msgstr "Format Sun Microsystems AU (linéaire signé)" - -#~ msgid "G.723.1 Simple Timestamp File Format" -#~ msgstr "Format de fichier G.723.1 à horodatage simple" - -#~ msgid "Raw G.726 (16/24/32/40kbps) data" -#~ msgstr "Données brutes G.726 (16/24/32/40 kbit/s)" - -#~ msgid "Raw G729 data" -#~ msgstr "Données brutes G729" - -#~ msgid "Raw GSM data" -#~ msgstr "Données brutes GSM" - -#~ msgid "Raw h263 data" -#~ msgstr "Données brutes h263" - -#~ msgid "JPEG (Joint Picture Experts Group) Image" -#~ msgstr "Image JPEG (Joint Picture Experts Group)" - -#~ msgid "Raw uLaw 8khz Audio support (PCM)" -#~ msgstr "Gestion de l'audio en loi-µ 8 kHz brute (PCM)" - -#~ msgid "load => .so ; Raw aLaw 8khz PCM Audio support" -#~ msgstr "Charger => .so ; Gestion de l'audio en loi-A brute PCM 8 kHz" - -#~ msgid "Raw Signed Linear Audio support (SLN)" -#~ msgstr "Gestion de l'audio en linéaire signé brut (SLN)" - -#~ msgid "Dialogic VOX (ADPCM) File Format" -#~ msgstr "Format de fichier Dialogic VOX (ADPCM)" - -#~ msgid "Microsoft WAV format (8000hz Signed Line" -#~ msgstr "Format Microsoft WAV (8 kHz linéaire signé)" - -#~ msgid "Microsoft WAV format (Proprietary GSM)" -#~ msgstr "Format Microsoft WAV (GSM propriétaire)" - -#~ msgid "Caller ID related dialplan functions" -#~ msgstr "Fonctions d'aiguillage des appels liées à l'identifiant d'appel" - -#~ msgid "ENUM Functions" -#~ msgstr "Fonctions ENUM" - -#~ msgid "URI encoding / decoding functions" -#~ msgstr "Fonctions de codage/décodage des URI" - -#~ msgid "Asterisk Extension Language Compiler" -#~ msgstr "Compilateur du langage d'extension d'Asterisk" - -#~ msgid "Text Extension Configuration" -#~ msgstr "Configuration de l'extension Texte" - -#~ msgid "load => .so ; Builtin dialplan functions" -#~ msgstr "charger => .so ; fonctions natives d'aiguillages des appels" - -#~ msgid "Outgoing Spool Support" -#~ msgstr "Gestion d'un spool sortant" - -#~ msgid "Wil Cal U (Auto Dialer)" -#~ msgstr "Wil Cal U (composeur automatique)" - -#~ msgid "MySQL Config Resource" -#~ msgstr "Ressource de configuration de MySQL" - -#~ msgid "ODBC Config Resource" -#~ msgstr "Ressource de configuration d'ODBC" - -#~ msgid "PGSQL Module" -#~ msgstr "Module PGSQL" - -#~ msgid "Cryptographic Digital Signatures" -#~ msgstr "Signatures de chiffrage numérique" - -#~ msgid "Call Parking Resource" -#~ msgstr "Ressource de mise en parking des appels" - -#~ msgid "Call Monitoring Resource" -#~ msgstr "Ressource de supervision des appels" - -#~ msgid "Music On Hold Resource" -#~ msgstr "Ressource de mise en attente musicale" - -#~ msgid "ODBC Resource" -#~ msgstr "Ressource ODBC" - -#~ msgid "SMDI Module" -#~ msgstr "Module SMDI" - -#~ msgid "SNMP Module" -#~ msgstr "Module SNMP" - -#~ msgid "Music On Hold" -#~ msgstr "Mise en attente musicale" - -#~ msgid "Application" -#~ msgstr "Application" - -#~ msgid "Directory of Music" -#~ msgstr "Répertoire sonore" - -#~ msgid "Random Play" -#~ msgstr "morceau choisi aléatoirement" - -#~ msgid "DTMF mode" -#~ msgstr "Mode DTMF" - -#~ msgid "Primary domain identity for From: headers" -#~ msgstr "Identité du domaine primaire pour les entêtes « From: »" - -#~ msgid "From user (required by many SIP providers)" -#~ msgstr "Utilisateur « From » (requis par de nombreux fournisseurs SIP)" - -#~ msgid "Allow Insecure for" -#~ msgstr "Autoriser le mode non sécurisé pour" - -#~ msgid "Mailbox for MWI" -#~ msgstr "Boîte aux lettres pour MWI" - -#~ msgid "NAT between phone and Asterisk" -#~ msgstr "NAT entre le téléphone et Asterisk" - -#~ msgid "Check tags in headers" -#~ msgstr "Vérifier les « tags » dans les entêtes" - -#~ msgid "Reply Timeout (ms) for down connection" -#~ msgstr "Délai de réponse (en ms) indiquant une connexion tombée" - -#~ msgid "Register connection" -#~ msgstr "Connexion au registre" - -#~ msgid "Client Type" -#~ msgstr "Type de client" - -#~ msgid "Username" -#~ msgstr "Nom d'utilisateur" - -#~ msgid "Section sipgeneral" -#~ msgstr "Section générale SIP" - -#~ msgid "Allow codecs" -#~ msgstr "Codecs autorisés" - -#~ msgid "SIP realm" -#~ msgstr "Domaine SIP" - -#~ msgid "Voicemail general options" -#~ msgstr "Options générales de la messagerie vocale" - -#~ msgid "From Email address of server" -#~ msgstr "Adresse de courrier électronique source du serveur" - -#~ msgid "Voice Mail boxes" -#~ msgstr "Boîtes de messagerie vocale" - -#~ msgid "Email contains attachment" -#~ msgstr "Courriel contenant une pièce-jointe" - -#~ msgid "Email" -#~ msgstr "Courriel" - -#~ msgid "Display Name" -#~ msgstr "Nom affiché" - -#~ msgid "Password" -#~ msgstr "Mot de passe" - -#~ msgid "zone" -#~ msgstr "zone" - -#~ msgid "Voice Zone settings" -#~ msgstr "Paramètres de la zone Voix" - -#~ msgid "Message Format" -#~ msgstr "Format de message" diff --git a/package/luci/applications/luci-app-asterisk/po/he/asterisk.po b/package/luci/applications/luci-app-asterisk/po/he/asterisk.po deleted file mode 100644 index 25ed5bb142..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/he/asterisk.po +++ /dev/null @@ -1,194 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-07-14 12:48+0200\n" -"Last-Translator: zstorch \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "הגדרות כלליות של Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "תיקית AGI" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "שמור את קבצי הקול במהלך ההקלטה" - -#~ msgid "Debug Level" -#~ msgstr "רמת מצב ניפוי שגיאות" - -#~ msgid "Disable some warnings" -#~ msgstr "בטל חלק מהאזהרות" - -#~ msgid "Dump core on crash" -#~ msgstr "תעד את מצב הליבה בעת נפילת המערכת" - -#~ msgid "High Priority" -#~ msgstr "עדיפות גבוהה" - -#~ msgid "Initialise Crypto" -#~ msgstr "מפעיל את Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "השתמש בשעון הפנימי" - -#~ msgid "Log directory" -#~ msgstr "תיקית התיעוד" - -# צריך לבדוק אם מדובר על שיחות "בו זמנית" אם כן חשוב לציין אם לא הנל טעות חמורה -#, fuzzy -#~ msgid "Maximum number of calls allowed" -#~ msgstr "מקסימום שיחות בו זמנית" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "מקסימות שיחות שבו המערכת תדחה שיחות נוספות" - -#~ msgid "Disable console colors" -#~ msgstr "בטל צבעים במסוף" - -#~ msgid "Sound files Cache directory" -#~ msgstr "תיקית קבצי הקול" - -#~ msgid "The Group to run as" -#~ msgstr "הפעל עם הרשאות קבוצת" - -#~ msgid "The User to run as" -#~ msgstr "הפעל עם הרשאות משתמש" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "תיקית התא קולי" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "הוסף לUniquID את שם המערכת" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "המר תבניות קול ישירות עם SLINEAR" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "שדר שקט של SLINEAR במהלך הקלטה" - -#~ msgid "Verbose Level" -#~ msgstr "רמת דו\"ח המערכת" - -#~ msgid "Time Zone" -#~ msgstr "אזור זמן" - -#~ msgid "Section dialplan" -#~ msgstr "מחלקה בתוכנית השיחות" - -#~ msgid "include" -#~ msgstr "כולל" - -#~ msgid "Dialplan Extension" -#~ msgstr "שלוחה בתוכנית השיחות" - -#~ msgid "Dialplan General Options" -#~ msgstr "הגדרות כללית של תוכנית השיחות" - -#~ msgid "Allow transfer" -#~ msgstr "אפשר העברה" - -#~ msgid "Clear global vars" -#~ msgstr "נקה משתנים כללים" - -#~ msgid "Dialplan Goto" -#~ msgstr "\"לך אל\" בתוכנית השיחות" - -#~ msgid "Dialplan Conference" -#~ msgstr "שיחת ועידה בתוכנית השיחות" - -#~ msgid "Dialplan Time" -#~ msgstr "זמן בתוכנית השיחות" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "תא קולי בתוכנית השיחות" - -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "אזורי חיוג עבור תוכנית השיחות" - -#~ msgid "Prefix to add matching dialplans" -#~ msgstr "קידומת להוספה עבור תוכניות שיחה דומות" - -#~ msgid "Match International prefix" -#~ msgstr "השווה קידומת בין לאומית" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "קידומת (0) להוספה או הסרה במספר בין לאומי" - -#~ msgid "localzone" -#~ msgstr "מיקום" - -#~ msgid "Match plan" -#~ msgstr "תוכנית מתאימה" - -#~ msgid "Connection to use" -#~ msgstr "השתמש בחיבור מסוג" - -#~ msgid "Feature Key maps" -#~ msgstr "מיפוי מקשים יעודיים" - -#~ msgid "NAT between phone and Asterisk" -#~ msgstr "נתב (NAT) בין מכשיר הטלפון לAsterisk" - -#~ msgid "Check tags in headers" -#~ msgstr "בדוק את התגיות בהקדמה" - -#, fuzzy -#~ msgid "Reply Timeout (ms) for down connection" -#~ msgstr "החזר את פרק זמן (timeout) במילישניות עבור חבורים סגורים" - -#~ msgid "Register connection" -#~ msgstr "חיבור רשום (מנוי)" - -#~ msgid "Dial own extension for mailbox" -#~ msgstr "חיוג סיפרה בודדת עבור תא דואר" - -#~ msgid "Client Type" -#~ msgstr "סוג הלקוח" - -#~ msgid "Username" -#~ msgstr "שם משתמש" - -#~ msgid "Allow codecs" -#~ msgstr "מקודדים מאושרים" - -#~ msgid "SIP realm" -#~ msgstr "מתחם SIP" - -#~ msgid "Voicemail general options" -#~ msgstr "הגדרות כלליות עבור התא קולי" - -#~ msgid "From Email address of server" -#~ msgstr "שדה דואר אלקטרוני מאת (של השרת)" - -#~ msgid "Voice Mail boxes" -#~ msgstr "תאים קוליים" - -#~ msgid "Email contains attachment" -#~ msgstr "מצורף תוכן ההודעה" - -#~ msgid "Email" -#~ msgstr "דואר אלקטרוני" - -#~ msgid "Display Name" -#~ msgstr "שם תצוגה" - -#~ msgid "Password" -#~ msgstr "סיסמה" - -#~ msgid "zone" -#~ msgstr "אזור" - -#~ msgid "Voice Zone settings" -#~ msgstr "הגדרות אזוריות עבור הקול" - -#~ msgid "Message Format" -#~ msgstr "תבנית ההודעה" diff --git a/package/luci/applications/luci-app-asterisk/po/hu/asterisk.po b/package/luci/applications/luci-app-asterisk/po/hu/asterisk.po deleted file mode 100644 index c6a5d81b3e..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/hu/asterisk.po +++ /dev/null @@ -1,134 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-18 23:18+0200\n" -"Last-Translator: Anonymous Pootle User\n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Általános Asterisk beállítások" - -#~ msgid "AGI directory" -#~ msgstr "AGI könyvtár" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "A felvett hang fájlok gyorsítótárazása a felvétel alatt" - -#~ msgid "Debug Level" -#~ msgstr "Nyomkövetési szint" - -#~ msgid "Disable some warnings" -#~ msgstr "Néhány figyelmeztetés letilása" - -#~ msgid "Dump core on crash" -#~ msgstr "Memóriatartalom kiírása összeomláskor" - -#~ msgid "High Priority" -#~ msgstr "Magas prioritás" - -#~ msgid "Initialise Crypto" -#~ msgstr "Titkosítás inicializálása" - -#~ msgid "Use Internal Timing" -#~ msgstr "Belső időzítés használata" - -#~ msgid "Log directory" -#~ msgstr "Napló könyvtár" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "A hivások megengedett maximális száma" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "A CPU maximális terhelése új hívások fogadásához" - -#~ msgid "Disable console colors" -#~ msgstr "Konzol színek letiltása" - -#~ msgid "Sound files Cache directory" -#~ msgstr "A gyorsítótárazott hang fájlok könyvtára" - -#~ msgid "The Group to run as" -#~ msgstr "Csoport futtatása mint" - -#~ msgid "The User to run as" -#~ msgstr "Felhasználó futtatása mint" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Hangposta puffer könyvtár" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Rendszer név használata UniquID előtagként" - -#~ msgid "Verbose Level" -#~ msgstr "Részletes szint" - -#~ msgid "Time Zone" -#~ msgstr "Időzóna" - -#~ msgid "include" -#~ msgstr "tartalmaz" - -#~ msgid "Allow transfer" -#~ msgstr "Átvitel engedélyezése" - -#~ msgid "Clear global vars" -#~ msgstr "Globális változók törlése" - -#~ msgid "Enable Parking" -#~ msgstr "Várakoztatás engedélyezése" - -#~ msgid "Parking time (secs)" -#~ msgstr "Várakoztatási idő (másodperc)" - -#~ msgid "Reboot Method" -#~ msgstr "Újraindítás módja" - -#~ msgid "Parameter" -#~ msgstr "Paraméter" - -#~ msgid "IAX General Options" -#~ msgstr "Általános IAX beállítások" - -#~ msgid "Static" -#~ msgstr "Statikus" - -#~ msgid "Write Protect" -#~ msgstr "Írásvédelem" - -#~ msgid "Modules" -#~ msgstr "Modulok" - -#~ msgid "DTMF mode" -#~ msgstr "DTMF mód" - -#~ msgid "Client Type" -#~ msgstr "Ügyfél típusa" - -#~ msgid "Username" -#~ msgstr "Felhasználónév" - -#~ msgid "Email" -#~ msgstr "E-mail" - -#~ msgid "Display Name" -#~ msgstr "Megjelenítendő név" - -#~ msgid "Password" -#~ msgstr "Jelszó" - -#~ msgid "zone" -#~ msgstr "zóna" - -#~ msgid "Voice Zone settings" -#~ msgstr "Hang zóna beállítások" - -#~ msgid "Message Format" -#~ msgstr "Üzenet formátuma" diff --git a/package/luci/applications/luci-app-asterisk/po/it/asterisk.po b/package/luci/applications/luci-app-asterisk/po/it/asterisk.po deleted file mode 100644 index f2aa51e96f..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/it/asterisk.po +++ /dev/null @@ -1,162 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-04-19 23:40+0200\n" -"Last-Translator: claudyus \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Asterisk Opzioni Generali" - -#~ msgid "AGI directory" -#~ msgstr "AGI directory" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Cache dei file audio registrati durante la registrazione" - -#~ msgid "Debug Level" -#~ msgstr "Livello di debug" - -#~ msgid "Disable some warnings" -#~ msgstr "Disattivare alcuni avvis" - -#~ msgid "Dump core on crash" -#~ msgstr "Effettua il core dump al crash" - -#~ msgid "High Priority" -#~ msgstr "Alta Priorità" - -#~ msgid "Use Internal Timing" -#~ msgstr "Usa temporizzazione interna" - -#~ msgid "Log directory" -#~ msgstr "Accedi alla directory" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Numero massimo di chiamate consentite" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Smettere di accettare carico massimo di nuove chiamate" - -#~ msgid "Disable console colors" -#~ msgstr "Disabilitare la console dei colori" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Cache directori files suoni" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Prefisso UniquID con il nome di sistema" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "Costruire percorsi di transcodifica via SLINEAR, non direttamente" - -#~ msgid "Verbose Level" -#~ msgstr "Livello verbose" - -#~ msgid "Section dialplan" -#~ msgstr "Sezione dialplan" - -#~ msgid "include" -#~ msgstr "include" - -#~ msgid "Dialplan Extension" -#~ msgstr "Estensione Dialplan" - -#~ msgid "Dialplan General Options" -#~ msgstr "Opzioni generali Dialplan" - -#~ msgid "Allow transfer" -#~ msgstr "Permettere il trasferimento" - -#~ msgid "Clear global vars" -#~ msgstr "Cancella le variabili globali" - -#~ msgid "Dialplan Conference" -#~ msgstr "Conferenza Dialplan" - -#~ msgid "Prefix to add matching dialplans" -#~ msgstr "Aggiungere il prefisso corrispondente per Dialplans" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "" -#~ "Prefisso (0) per aggiungere / rimuovere a / da numeri internazionali" - -#~ msgid "localzone" -#~ msgstr "localzone" - -#~ msgid "Connection to use" -#~ msgstr "Connessione da utilizzare" - -#~ msgid "Feature Key maps" -#~ msgstr "Caratteristica chiave delle mappe" - -#~ msgid "Key to Disconnect call" -#~ msgstr "Chiave per disconnettere una chiamata" - -#~ msgid "Key to Park call" -#~ msgstr "Chiave di riserva per chiamata" - -#~ msgid "Parking Feature" -#~ msgstr "Riserva futura" - -#~ msgid "ADSI Park" -#~ msgstr "Riserva ADSI" - -#~ msgid "Play courtesy tone to" -#~ msgstr "Ascolta il tono di cortesia per" - -#~ msgid "Enable Parking" -#~ msgstr "Abilita la sosta" - -#~ msgid "Parking time (secs)" -#~ msgstr "Ora di sosta (in secondi)" - -#~ msgid "Range of extensions for call parking" -#~ msgstr "Gamma di estensioni per la sosta di chiamata" - -#~ msgid "Pickup extension" -#~ msgstr "Estensione Pickup" - -#~ msgid "Seconds to wait between digits when transferring" -#~ msgstr "Secondi di attesa tra le cifre per il trasferimento" - -#~ msgid "Sound when attended transfer fails" -#~ msgstr "Suono quando il trasferimento non ha partecipato" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Ricarica Hardware Config" - -#~ msgid "Reboot Method" -#~ msgstr "Metodo per riavviare" - -#~ msgid "Parameter" -#~ msgstr "Parametro" - -#~ msgid "Option type" -#~ msgstr "Tipo di opzione" - -#~ msgid "User name" -#~ msgstr "Usare il nome" - -#~ msgid "IAX General Options" -#~ msgstr "Opzione generale per IAX" - -#~ msgid "Allow Codecs" -#~ msgstr "Lasciare il codec" - -#~ msgid "Static" -#~ msgstr "Statico" - -#~ msgid "Write Protect" -#~ msgstr "Protezione da scrittura" - -#~ msgid "Message Format" -#~ msgstr "Formato messaggio" diff --git a/package/luci/applications/luci-app-asterisk/po/ja/asterisk.po b/package/luci/applications/luci-app-asterisk/po/ja/asterisk.po deleted file mode 100644 index 98bd10b4a3..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/ja/asterisk.po +++ /dev/null @@ -1,44 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-01-08 13:20+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Asterisk の全般オプション" - -#~ msgid "AGI directory" -#~ msgstr "AGI ディレクトリ" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "録音されたサウンドを録音中にキャッシュ" - -#~ msgid "Debug Level" -#~ msgstr "デバッグレベル" - -#~ msgid "Disable some warnings" -#~ msgstr "いくつかの警告を無効にする" - -#~ msgid "Dump core on crash" -#~ msgstr "クラッシュ時にコアダンプを出力する" - -#~ msgid "High Priority" -#~ msgstr "高優先度" - -#~ msgid "Log directory" -#~ msgstr "ログ ディレクトリ" - -#~ msgid "Allow transfer" -#~ msgstr "転送を許可" - -#~ msgid "Clear global vars" -#~ msgstr "グローバル変数を消去" diff --git a/package/luci/applications/luci-app-asterisk/po/ms/asterisk.po b/package/luci/applications/luci-app-asterisk/po/ms/asterisk.po deleted file mode 100644 index d4b6baac90..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/ms/asterisk.po +++ /dev/null @@ -1,611 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-03 12:40+1000\n" -"PO-Revision-Date: 2010-05-05 23:32+1000\n" -"Last-Translator: Wai Chet Teow \n" -"Language-Team: LANGUAGE\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Pilihan Umum Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "AGI Direktori" - -#, fuzzy -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Cache dicatat semasa rakaman fail bunyi" - -#, fuzzy -#~ msgid "Debug Level" -#~ msgstr "Tingkatan debug" - -#~ msgid "Disable some warnings" -#~ msgstr "Mematikan beberapa amaran" - -#, fuzzy -#~ msgid "Dump core on crash" -#~ msgstr "Dump teras dalam kemalangan" - -#~ msgid "High Priority" -#~ msgstr "Keutamaan Tinggi" - -#~ msgid "Initialise Crypto" -#~ msgstr "Menginisialisasinya Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "Gunakan Intern pemilihan waktu" - -#, fuzzy -#~ msgid "Log directory" -#~ msgstr "Direktori log" - -#, fuzzy -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Jumlah maksimum panggilan dibenarkan" - -#, fuzzy -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "beban maksimum untuk berhenti menerima panggilan baru" - -#, fuzzy -#~ msgid "Disable console colors" -#~ msgstr "Matikan warna konsol" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Sound fail Direktori Cache" - -#, fuzzy -#~ msgid "The Group to run as" -#~ msgstr "Kumpulan untuk menjalankan sebagai" - -#, fuzzy -#~ msgid "The User to run as" -#~ msgstr "Pengguna untuk menjalankan sebagai" - -#, fuzzy -#~ msgid "Voicemail Spool directory" -#~ msgstr "Surat suara spool Direktori" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Awalan UniquID dengan nama sistem" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "Membangun transcode jalan melalui SLINEAR, tidak secara langsung" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Transmit SLINEAR keheningan ketika sedang merakam saluran" - -#, fuzzy -#~ msgid "Verbose Level" -#~ msgstr "Tingkat verbose" - -#~ msgid "Section dialplan" -#~ msgstr "Bahagian dial rencana" - -#~ msgid "include" -#~ msgstr "memasukkan" - -#~ msgid "Dialplan Extension" -#~ msgstr "Ekstensi dial rencana" - -#~ msgid "Dialplan General Options" -#~ msgstr "Pilihan Umum Dialplan" - -#~ msgid "Allow transfer" -#~ msgstr "Membolehkan pemindahan" - -#~ msgid "Clear global vars" -#~ msgstr "Hapus variable global" - -#~ msgid "Dialplan Goto" -#~ msgstr "Buka dial rencana" - -#~ msgid "Dialplan Conference" -#~ msgstr "Persidangan dial rencana" - -#~ msgid "Dialplan Time" -#~ msgstr "Masa dial rencana" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "Surat suara dial rencana" - -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "Dial Zon untuk dial rencana" - -#~ msgid "Prefix to add matching dialplans" -#~ msgstr "Prefix untuk menambah pencocokan dial rencana" - -#~ msgid "Match International prefix" -#~ msgstr "Awalan Antarabangsa Match" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "Awalan (0) untuk menambah / memadam ke / dari nombor antarabangsa" - -#~ msgid "localzone" -#~ msgstr "zon tempatan" - -#~ msgid "Match plan" -#~ msgstr "Rencana sesuai" - -#~ msgid "Connection to use" -#~ msgstr "Sambungan yang digunakan" - -#~ msgid "Feature Key maps" -#~ msgstr "Ciri-ciri kunci peta" - -#~ msgid "Attended transfer key" -#~ msgstr "Mengikuti memindahkan kunci" - -#~ msgid "Blind transfer key" -#~ msgstr "kunci pemindahkan buta" - -#~ msgid "Key to Disconnect call" -#~ msgstr "Kunci untuk Putus panggilan" - -#~ msgid "Key to Park call" -#~ msgstr "Kunci untuk Park panggilan" - -#~ msgid "Parking Feature" -#~ msgstr "Parkir Ciri-ciri" - -#~ msgid "ADSI Park" -#~ msgstr "ADSI Park" - -#~ msgid "Attended transfer timeout (sec)" -#~ msgstr "Mengikuti pemindahan timeout (saat)" - -#~ msgid "One touch record key" -#~ msgstr "Satu nota sentuh butang" - -#~ msgid "Name of call context for parking" -#~ msgstr "Nama konteks panggilan untuk parkir" - -#~ msgid "Sound file to play to parked caller" -#~ msgstr "Fail bunyi untuk memainkan ke pemanggil parkir" - -#~ msgid "Max time (ms) between digits for feature activation" -#~ msgstr "Maksimum masa (milidetik) antara nombor untuk pengaktifan ciri" - -#~ msgid "Method to Find Parking slot" -#~ msgstr "Kaedah untuk Menemukan slot Parkir" - -#~ msgid "parkedmusicclass" -#~ msgstr "parkir muzik kelas" - -#~ msgid "Play courtesy tone to" -#~ msgstr "Nada kebaikan yang dimainkan untuk" - -#~ msgid "Enable Parking" -#~ msgstr "Aktifkan Parkir" - -#~ msgid "Extension to dial to park" -#~ msgstr "Extension untuk dial ke taman" - -#~ msgid "Parking time (secs)" -#~ msgstr "Parkir waktu (saat)" - -#~ msgid "Range of extensions for call parking" -#~ msgstr "Rentang sambungan untuk parkir panggilan" - -#~ msgid "Pickup extension" -#~ msgstr "Angkat sambungan" - -#~ msgid "Seconds to wait between digits when transferring" -#~ msgstr "Detik untuk menunggu antara nombor ketika memindahkan" - -#~ msgid "sound when attended transfer is complete" -#~ msgstr "suara saat menghadiri pemindahan selesai" - -#~ msgid "Sound when attended transfer fails" -#~ msgstr "Suara saat menghadiri gagal transfer" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Beban kembali menatarajah peranti keras" - -#~ msgid "Reboot Method" -#~ msgstr "Kaedah Reboot" - -#~ msgid "Parameter" -#~ msgstr "Parameter" - -#~ msgid "Option type" -#~ msgstr "Pilihan jenis" - -#~ msgid "User name" -#~ msgstr "Nama pemakai" - -#~ msgid "IAX General Options" -#~ msgstr "Pilihan Umum IAX" - -#~ msgid "Allow Codecs" -#~ msgstr "Izinkan Codec" - -#~ msgid "Static" -#~ msgstr "Statik" - -#~ msgid "Write Protect" -#~ msgstr "Dilindungi Menulis" - -#~ msgid "Meetme Conference" -#~ msgstr "Persidangan Meetme" - -#~ msgid "Admin PIN" -#~ msgstr "PIN Admin" - -#~ msgid "Meeting PIN" -#~ msgstr "PIN Pertemuan" - -#~ msgid "Meetme Conference General Options" -#~ msgstr "Pilihan Umum Persidangan Meetme" - -#~ msgid "Number of 20ms audio buffers to be used" -#~ msgstr "Jumlah buffer audio yang akan digunakan dalam 20 mili detik" - -#~ msgid "Modules" -#~ msgstr "Modul" - -#~ msgid "Alarm Receiver Application" -#~ msgstr "Penggera Aplikasi Penerima" - -#~ msgid "Authentication Application" -#~ msgstr "Pengesahan Aplikasi" - -#~ msgid "Make sure asterisk doesn't save CDR" -#~ msgstr "Membuat asterisk yakin tidak menyimpan CDR" - -#~ msgid "Check if channel is available" -#~ msgstr "Periksa sama ada saluran sedia" - -#~ msgid "Listen in on any channel" -#~ msgstr "Mendengar pada setiap saluran" - -#~ msgid "Control Playback Application" -#~ msgstr "Kawalan Main Aplikasi" - -#~ msgid "Cuts up variables" -#~ msgstr "Memotong pembolehubah" - -#~ msgid "Database access functions" -#~ msgstr "fungsi untuk mengakses dasar data" - -#~ msgid "Dialing Application" -#~ msgstr "Aplikasi Panggilan" - -#~ msgid "Virtual Dictation Machine Application" -#~ msgstr "Aplikasi Dikte Virtual Machine" - -#~ msgid "Directed Call Pickup Support" -#~ msgstr "Sokongan Pengarah Angkatan Pangillan" - -#~ msgid "Extension Directory" -#~ msgstr "Extension Direktori" - -#~ msgid "DISA (Direct Inward System Access) Application" -#~ msgstr "Aplikasi DISA (Direct Inward System Access)" - -#~ msgid "Dump channel variables Application" -#~ msgstr "Aplikasi membuang variable saluran" - -#~ msgid "Simple Echo Application" -#~ msgstr "Echo Aplikasi Mudah" - -#~ msgid "ENUM Lookup" -#~ msgstr "Pencarian ENUM" - -#~ msgid "Reevaluates strings" -#~ msgstr "Menilai semula string" - -#~ msgid "Executes applications" -#~ msgstr "Menjalankan aplikasi" - -#~ msgid "External IVR application interface" -#~ msgstr "IVR aplikasi antara muka luaran" - -#~ msgid "Fork The CDR into 2 separate entities" -#~ msgstr "CDR garpu menjadi 2 entiti yang berasingan" - -#~ msgid "Get ADSI CPE ID" -#~ msgstr "Dapatkan ADSI CPE ID" - -#~ msgid "Group Management Routines" -#~ msgstr "Pengurusan Kumpulan Rutinitas" - -#~ msgid "Encode and Stream via icecast and ices" -#~ msgstr "Menyandi dan Stream melalui icecast dan es" - -#~ msgid "Image Transmission Application" -#~ msgstr "Aplikasi Transmisi Gambar" - -#~ msgid "Look up Caller*ID name/number from black" -#~ msgstr "Mencari nama / nombor Pemangil dari hitam" - -#~ msgid "Look up CallerID Name from local databas" -#~ msgstr "Mencari Nama Pemangil dari database tempatan" - -#~ msgid "Extension Macros" -#~ msgstr "Makro Extension" - -#~ msgid "A simple math Application" -#~ msgstr "Sebuah Aplikasi matematik senang" - -#~ msgid "MD5 checksum Application" -#~ msgstr "Aplikasi MD5 checksum" - -#~ msgid "Digital Milliwatt (mu-law) Test Application" -#~ msgstr "Milliwatt digital (mu-law) Aplikasi Uji" - -#~ msgid "Record a call and mix the audio during the recording" -#~ msgstr "Merakam panggilan dan campuran audio semasa rakaman" - -#~ msgid "Call Parking and Announce Application" -#~ msgstr "Panggilan Parkir dan Aplikasi Pengumuman" - -#~ msgid "Trivial Playback Application" -#~ msgstr "Aplikasi Pemain Trivial" - -#~ msgid "Require phone number to be entered" -#~ msgstr "Nombor telefon diperlukan untuk dimasuk" - -#~ msgid "True Call Queueing" -#~ msgstr "Panggilan antrian benar" - -#~ msgid "Random goto" -#~ msgstr "Pergi ke random" - -#~ msgid "Read Variable Application" -#~ msgstr "Aplikasi Baca Variabel" - -#~ msgid "Read in a file" -#~ msgstr "Baca dalam fail" - -#~ msgid "Realtime Data Lookup/Rewrite" -#~ msgstr "Masa benar mencari / menulis kembali data " - -#~ msgid "Trivial Record Application" -#~ msgstr "Aplikasi Trivial Rakam" - -#~ msgid "Say time" -#~ msgstr "Katakan masa" - -#~ msgid "Send DTMF digits Application" -#~ msgstr "Aplikasi Hantar DTMF angka" - -#~ msgid "Send Text Applications" -#~ msgstr "Aplikasi Kirim Mesej" - -#~ msgid "Set CallerID Application" -#~ msgstr "Aplikasi menetapkan CallerID" - -#~ msgid "CDR user field apps" -#~ msgstr "Aplikasi CDR bidang pengguna" - -#~ msgid "load => .so ; Set CallerID Name" -#~ msgstr "beban => .so ; Menetapkan Nama CallerID" - -#~ msgid "Set RDNIS Number" -#~ msgstr "Menetapkan Nombor RDNIS" - -#~ msgid "Set ISDN Transfer Capability" -#~ msgstr "Menetapkan Kemampuan Transfer ISDN" - -#~ msgid "SMS/PSTN handler" -#~ msgstr "Penangan SMS/PSTN" - -#~ msgid "Hangs up the requested channel" -#~ msgstr "Menutup saluran yang diminta" - -#~ msgid "Stack Routines" -#~ msgstr "Rutinitas Stack" - -#~ msgid "Generic System() application" -#~ msgstr "Aplikasi Generic Sistem()" - -#~ msgid "Playback with Talk Detection" -#~ msgstr "Putar dengan Pengesanan Bicara" - -#~ msgid "Interface Test Application" -#~ msgstr "Aplikasi Antarmuka Test" - -#~ msgid "Transfer" -#~ msgstr "Transfer" - -#~ msgid "TXTCIDName" -#~ msgstr "Nama TXTCID" - -#~ msgid "Send URL Applications" -#~ msgstr "Aplikasi Kirim URL" - -#~ msgid "Custom User Event Application" -#~ msgstr "Aplikasi Acara Pengguna Tersuai" - -#~ msgid "Send verbose output" -#~ msgstr "Kirim keluaran verbose" - -#~ msgid "Voicemail" -#~ msgstr "Voicemail" - -#~ msgid "Waits until first ring after time" -#~ msgstr "Menunggu waktu sampai setelah deringan pertama" - -#~ msgid "Wait For Silence Application" -#~ msgstr "Aplikasi Tunggu Untuk Tenang" - -#~ msgid "While Loops and Conditional Execution" -#~ msgstr "Sementara Loops dan Pelaksanaan bersyarat" - -#~ msgid "Comma Separated Values CDR Backend" -#~ msgstr "Hujung belakang nilai-nilai dipisahkan koma CDR" - -#~ msgid "Customizable Comma Separated Values CDR Backend" -#~ msgstr "Nilai-nilai dipisahkan koma CDR hujung belakang yang disesuaikan" - -#~ msgid "Asterisk Call Manager CDR Backend" -#~ msgstr "Hujung belakang asterisk panggilan pengurus CDR " - -#~ msgid "MySQL CDR Backend" -#~ msgstr "Hujung belakang MySQL CDR" - -#~ msgid "PostgreSQL CDR Backend" -#~ msgstr "Hujung belakang PostgreSQL CDR" - -#~ msgid "SQLite CDR Backend" -#~ msgstr "Hujung belakang SQLite CDR" - -#~ msgid "Agent Proxy Channel" -#~ msgstr "Agen Proksi Saluran" - -#~ msgid "Option chan_iax2" -#~ msgstr "Pilihan chan_iax2" - -#~ msgid "Local Proxy Channel" -#~ msgstr "Saluran Proksi Tempatan" - -#~ msgid "Session Initiation Protocol (SIP)" -#~ msgstr "Session Initiation Protocol (SIP)" - -#~ msgid "Adaptive Differential PCM Coder/Decoder" -#~ msgstr "Adaptif Pengkamiran PCM Coder/Decoder" - -#~ msgid "GSM/PCM16 (signed linear) Codec Translation" -#~ msgstr "GSM/PCM16 (ditandatangani linier) Codec Terjemahan" - -#~ msgid "Speex/PCM16 (signed linear) Codec Translator" -#~ msgstr "Speex/PCM16 (ditandatangani linier) Codec Terjemahan" - -#~ msgid "Sun Microsystems AU format (signed linear)" -#~ msgstr "Sun Microsystems AU format (ditandatangani linier)" - -#~ msgid "Asterisk Extension Language Compiler" -#~ msgstr "Asterisk Sambungan Bahasa Compiler" - -#~ msgid "Text Extension Configuration" -#~ msgstr "Teks Sambungan Tatarajah" - -#~ msgid "Loopback Switch" -#~ msgstr "Loop Beralih Kembali" - -#~ msgid "MySQL Config Resource" -#~ msgstr "MySQL menatarajah sumber daya" - -#~ msgid "ODBC Config Resource" -#~ msgstr "ODBC tatarajah sumber daya" - -#~ msgid "PGSQL Module" -#~ msgstr "Modul PGSQL" - -#~ msgid "Cryptographic Digital Signatures" -#~ msgstr "tanda tangan digital kriptografi" - -#~ msgid "Call Parking Resource" -#~ msgstr "Panggilan Parkir Sumber Daya" - -#~ msgid "Indications Configuration" -#~ msgstr "Penunjuk Konfigurasi" - -#~ msgid "Call Monitoring Resource" -#~ msgstr "panggilan pemantauan sumber daya" - -#~ msgid "Music On Hold Resource" -#~ msgstr "Muzik Pada Sumber Daya Tahan" - -#~ msgid "ODBC Resource" -#~ msgstr "Sumber ODBC" - -#~ msgid "SMDI Module" -#~ msgstr "Modul SMDI" - -#~ msgid "SNMP Module" -#~ msgstr "Modul SNMP" - -#~ msgid "Music On Hold" -#~ msgstr "Muzik Di Tahan" - -#~ msgid "Application" -#~ msgstr "Aplikasi" - -#~ msgid "Directory of Music" -#~ msgstr "Direktori Muzik" - -#~ msgid "Option mode" -#~ msgstr "Pilihan mod" - -#~ msgid "Random Play" -#~ msgstr "Bermain Rawak" - -#~ msgid "DTMF mode" -#~ msgstr "Mode DTMF" - -#~ msgid "Primary domain identity for From: headers" -#~ msgstr "Domain utama identiti untuk Dari: header" - -#~ msgid "From user (required by many SIP providers)" -#~ msgstr "Dari pengguna (diperlukan oleh banyak pembekal SIP)" - -#~ msgid "Ring on incoming dialplan contexts" -#~ msgstr "Dering pada konteks rancangan panggilan masuk" - -#~ msgid "Allow Insecure for" -#~ msgstr "Biarkan tidak selamat untuk" - -#~ msgid "Mailbox for MWI" -#~ msgstr "Peti mel untuk MWI" - -#~ msgid "NAT between phone and Asterisk" -#~ msgstr "NAT antara telefon dan asterisk" - -#~ msgid "Check tags in headers" -#~ msgstr "Menyemak tag di header" - -#~ msgid "Reply Timeout (ms) for down connection" -#~ msgstr "Balas Masa tamat (ms) untuk sambungan ke bawah" - -#~ msgid "Register connection" -#~ msgstr "Register sambungan" - -#~ msgid "Dial own extension for mailbox" -#~ msgstr "Dial perpanjangan sendiri untuk peti mel" - -#~ msgid "Client Type" -#~ msgstr "Pelanggan Jenis" - -#~ msgid "Section sipgeneral" -#~ msgstr "Bahagian sipgeneral" - -#~ msgid "Allow codecs" -#~ msgstr "Membenarkan codec" - -#~ msgid "SIP realm" -#~ msgstr "Dunia SIP" - -#~ msgid "Voicemail general options" -#~ msgstr "Pilihan umum Voicemail" - -#~ msgid "From Email address of server" -#~ msgstr "Dari alamat email server" - -#~ msgid "Voice Mail boxes" -#~ msgstr "Kotak mail suara" - -#~ msgid "Email contains attachment" -#~ msgstr "Email mengandungi lampiran" - -#~ msgid "Display Name" -#~ msgstr "Nama Paparan" - -#~ msgid "Password" -#~ msgstr "Kata laluan" - -#~ msgid "zone" -#~ msgstr "daerah" - -#~ msgid "Voice Zone settings" -#~ msgstr "Tetapan Zon Suara" - -#~ msgid "Message Format" -#~ msgstr "Format Mesej" diff --git a/package/luci/applications/luci-app-asterisk/po/no/asterisk.po b/package/luci/applications/luci-app-asterisk/po/no/asterisk.po deleted file mode 100644 index 70c448d9fc..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/no/asterisk.po +++ /dev/null @@ -1,12 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \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" diff --git a/package/luci/applications/luci-app-asterisk/po/pl/asterisk.po b/package/luci/applications/luci-app-asterisk/po/pl/asterisk.po deleted file mode 100644 index f092853297..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/pl/asterisk.po +++ /dev/null @@ -1,75 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-18 01:39+0200\n" -"Last-Translator: Michał \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Ustawienia Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "Katalog AGI" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Buforuj nagrane pliki podczas nagrywania" - -#~ msgid "Debug Level" -#~ msgstr "Poziom debugowania" - -#~ msgid "Disable some warnings" -#~ msgstr "Wyłącz niektóre ostrzeżenia" - -#~ msgid "Dump core on crash" -#~ msgstr "Wykonaj zrzut pamięci podczas awarii" - -#~ msgid "High Priority" -#~ msgstr "Wysoki Priorytet" - -#~ msgid "Initialise Crypto" -#~ msgstr "Uruchom Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "Użyj wbudowanego próbkowania" - -#~ msgid "Log directory" -#~ msgstr "Katalog logów" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Max. dozwolona ilość połączeń" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Max. obciążenie powodujące odrzucanie nowych połączeń" - -#~ msgid "Disable console colors" -#~ msgstr "Wyłącz kolory konsoli" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Katalog tymczasowy dla plików dźwiękowych" - -#~ msgid "The Group to run as" -#~ msgstr "Grupa dla uruchamiania" - -#~ msgid "The User to run as" -#~ msgstr "Użytkownik dla uruchamiania" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Katalog bufora poczty głosowej" - -#~ msgid "Time Zone" -#~ msgstr "Strefa Czasowa" - -#~ msgid "localzone" -#~ msgstr "localzone" - -#~ msgid "parkedmusicclass" -#~ msgstr "parkedmusicclass" diff --git a/package/luci/applications/luci-app-asterisk/po/pt-br/asterisk.po b/package/luci/applications/luci-app-asterisk/po/pt-br/asterisk.po deleted file mode 100644 index 00a0bb6431..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/pt-br/asterisk.po +++ /dev/null @@ -1,691 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2011-10-18 22:20+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Opções Gerais do Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "Diretório do AGI" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Guardar em cache os arquivos de som durante a gravação" - -#~ msgid "Debug Level" -#~ msgstr "Nível de detalhamento" - -#~ msgid "Disable some warnings" -#~ msgstr "Desativar alguns avisos" - -#~ msgid "Dump core on crash" -#~ msgstr "Guardar o core quando o programa estourar" - -#~ msgid "High Priority" -#~ msgstr "Alta Prioridade" - -#~ msgid "Initialise Crypto" -#~ msgstr "Inicializar Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "Usar Temporização Interna" - -#~ msgid "Log directory" -#~ msgstr "Diretório de registos" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Número máximo de chamadas permitidas" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Carga máxima para deixar de aceitar novas chamadas" - -#~ msgid "Disable console colors" -#~ msgstr "Desativar cores no console" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Diretório de cache para arquivos de som" - -#~ msgid "The Group to run as" -#~ msgstr "O grupo sob o qual o asterisk será executado" - -#~ msgid "The User to run as" -#~ msgstr "O usuário sob o qual o asterisk será executado" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Directorio da spool de voicemail" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Prefixar o nome de sistema à UniquID" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "" -#~ "Construir os caminhos de transcode atraves de SLINEAR e não directamente" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Transmitir silencio SLINEAR durante a gravação de um canal" - -#~ msgid "Verbose Level" -#~ msgstr "Nível de Detalhamento" - -#~ msgid "Time Zone" -#~ msgstr "Fuso Horário" - -#~ msgid "Section dialplan" -#~ msgstr "Seção do Plano de Marcação" - -#~ msgid "include" -#~ msgstr "incluir" - -#~ msgid "Dialplan Extension" -#~ msgstr "Extensão do Plano de Discagem" - -#~ msgid "Dialplan General Options" -#~ msgstr "Opções Gerais do Plano de Discagem" - -#~ msgid "Allow transfer" -#~ msgstr "Permitir transferência" - -#~ msgid "Reinvite/redirect media connections" -#~ msgstr "Reconvidar/redirecionar conexões multimídia" - -#~ msgid "Clear global vars" -#~ msgstr "Limpar variáveis globais" - -#~ msgid "Dialplan Goto" -#~ msgstr "Encaminhamento do Plano de Discagem" - -#~ msgid "Dialplan Conference" -#~ msgstr "Conferência do Plano de Discagem" - -#~ msgid "Dialplan Time" -#~ msgstr "Tempo do Plano de Discagem" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "Correio de voz do Plano de Discagem" - -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "Zonas do Plano de Discagem" - -#~ msgid "Prefix to add matching dialplans" -#~ msgstr "Prefixo para adicionar aos planos de discagem correspondentes" - -#~ msgid "Match International prefix" -#~ msgstr "Coincidir com o prefixo internacional" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "Prefixo (0) para adicionar/remover para/de números internacionais" - -#~ msgid "localzone" -#~ msgstr "zona local" - -#~ msgid "Match plan" -#~ msgstr "Plano de combinação" - -#~ msgid "Connection to use" -#~ msgstr "Conexão usada" - -#~ msgid "Feature Key maps" -#~ msgstr "Mapeamentos de Tecla de Função" - -#~ msgid "Attended transfer key" -#~ msgstr "Tecla de transferência assistida" - -#~ msgid "Blind transfer key" -#~ msgstr "Tecla de transferência cega" - -#~ msgid "Key to Disconnect call" -#~ msgstr "Tecla para Desligar a chamada" - -#~ msgid "Key to Park call" -#~ msgstr "Tecla para Estacionar a chamada" - -#~ msgid "Parking Feature" -#~ msgstr "Recurso de Estacionamento" - -#~ msgid "ADSI Park" -#~ msgstr "Estacionamento ADSI" - -#~ msgid "Attended transfer timeout (sec)" -#~ msgstr "Tempo limite (seg) da transferência assistida" - -#~ msgid "One touch record key" -#~ msgstr "Tecla de gravação em um toque" - -#~ msgid "Name of call context for parking" -#~ msgstr "Nome do contexto de chamada para o estacionamento" - -#~ msgid "Sound file to play to parked caller" -#~ msgstr "Arquivo de som para tocar para o chamador estacionado" - -#~ msgid "Max time (ms) between digits for feature activation" -#~ msgstr "Tempo máximo (ms) entre os dígitos para ativação de recursos" - -#~ msgid "Method to Find Parking slot" -#~ msgstr "Método para Encontrar uma Vaga de Estacionamento" - -#~ msgid "parkedmusicclass" -#~ msgstr "parkedmusicclass" - -#~ msgid "Play courtesy tone to" -#~ msgstr "Toque o tom de cortesia para" - -#~ msgid "Enable Parking" -#~ msgstr "Habilitar Estacionamento" - -#~ msgid "Extension to dial to park" -#~ msgstr "Extensão para discar para estacionar" - -#~ msgid "Parking time (secs)" -#~ msgstr "Tempo de estacionamento (seg)" - -#~ msgid "Range of extensions for call parking" -#~ msgstr "faixa de extensões para o estacionamento de chamada" - -#~ msgid "Pickup extension" -#~ msgstr "Extensão de captura" - -#~ msgid "Seconds to wait between digits when transferring" -#~ msgstr "Segundos para esperar entre os dígitos quando transferindo" - -#~ msgid "sound when attended transfer is complete" -#~ msgstr "emitir som quando a transferência assistida estiver completa" - -#~ msgid "Sound when attended transfer fails" -#~ msgstr "Emitir som quando a transferência assistida falhar" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Recarregar a Configuração de Hardware" - -#~ msgid "Reboot Method" -#~ msgstr "Método de Reinicialização" - -#~ msgid "Parameter" -#~ msgstr "Parâmetro" - -#~ msgid "Option type" -#~ msgstr "Tipo de Opção" - -#~ msgid "User name" -#~ msgstr "Nome do usuário" - -#~ msgid "IAX General Options" -#~ msgstr "Opções Gerais do Plano de Discagem" - -#~ msgid "Allow Codecs" -#~ msgstr "Permitir Codificadores (codecs)" - -#~ msgid "Static" -#~ msgstr "Estático" - -#~ msgid "Write Protect" -#~ msgstr "Proteção à Escrita" - -#~ msgid "Meetme Conference" -#~ msgstr "Conferência Encontre-me" - -#~ msgid "Admin PIN" -#~ msgstr "PIN do Administrador" - -#~ msgid "Meeting PIN" -#~ msgstr "PIN da Conferência" - -#~ msgid "Meetme Conference General Options" -#~ msgstr "Opções Gerais da Conferência Encontre-me" - -#~ msgid "Number of 20ms audio buffers to be used" -#~ msgstr "Número de buffers de 20ms que serão usados" - -#~ msgid "Modules" -#~ msgstr "Módulos" - -#~ msgid "Alarm Receiver Application" -#~ msgstr "Aplicativo de Recepção de Alarmes" - -#~ msgid "Authentication Application" -#~ msgstr "Aplicativo de Autenticação" - -#~ msgid "Make sure asterisk doesn't save CDR" -#~ msgstr "Garanta que o asterisk não salva o CDR" - -#~ msgid "Check if channel is available" -#~ msgstr "Verifique se o canal está disponível" - -#~ msgid "Listen in on any channel" -#~ msgstr "Escute em qualquer canal" - -#~ msgid "Control Playback Application" -#~ msgstr "Controlar o Aplicativo de Reprodução" - -#~ msgid "Cuts up variables" -#~ msgstr "Variáveis de Cortes" - -#~ msgid "Database access functions" -#~ msgstr "Funções de acesso ao banco de dados" - -#~ msgid "Dialing Application" -#~ msgstr "Aplicativo de Discagem" - -#~ msgid "Virtual Dictation Machine Application" -#~ msgstr "Aplicativo de Máquina de Ditado Virtual" - -#~ msgid "Directed Call Pickup Support" -#~ msgstr "Suporte a Captura de Chamadas Direcionadas" - -#~ msgid "Extension Directory" -#~ msgstr "Diretório de Extensão" - -#~ msgid "DISA (Direct Inward System Access) Application" -#~ msgstr "Aplicativo DISA (Acesso Direto ao Sistema Interior)" - -#~ msgid "Dump channel variables Application" -#~ msgstr "Descarregar Aplicativo de variáveis do canal" - -#~ msgid "Simple Echo Application" -#~ msgstr "Aplicativo de Eco Simples" - -#~ msgid "ENUM Lookup" -#~ msgstr "Pesquisa ENUM" - -#~ msgid "Reevaluates strings" -#~ msgstr "Reavaliar sequências de caracteres" - -#~ msgid "Executes applications" -#~ msgstr "Executa aplicativos" - -#~ msgid "External IVR application interface" -#~ msgstr "Interface de aplicativo IVR externo" - -#~ msgid "Fork The CDR into 2 separate entities" -#~ msgstr "Bifurcar o CDR em duas entidades separadas" - -#~ msgid "Get ADSI CPE ID" -#~ msgstr "Pegar o ID do CPE ADSI" - -#~ msgid "Group Management Routines" -#~ msgstr "Rotinas de Gerenciamento e Grupo" - -#~ msgid "Encode and Stream via icecast and ices" -#~ msgstr "Codificar e Transmitir através do icecast e ices" - -#~ msgid "Image Transmission Application" -#~ msgstr "Aplicativo de Transmissão de Imagem" - -# what is this black? Seems to be truncated! -#~ msgid "Look up Caller*ID name/number from black" -#~ msgstr "Buscar o Identificador de chamadas/nome/número do preto" - -#~ msgid "Look up CallerID Name from local databas" -#~ msgstr "Buscar o Identificador de chamadas/nome/número do banco de dados" - -#~ msgid "Extension Macros" -#~ msgstr "Macros de extensão" - -#~ msgid "A simple math Application" -#~ msgstr "Um Aplicativo simples de matemática" - -#~ msgid "MD5 checksum Application" -#~ msgstr "Aplicativo de soma de verificação MD5" - -#~ msgid "Digital Milliwatt (mu-law) Test Application" -#~ msgstr "Aplicativo de Teste de Miliwatt (mu-law) Digital" - -#~ msgid "Record a call and mix the audio during the recording" -#~ msgstr "Gravar uma ligação e mixar o áudio durante a gravação" - -#~ msgid "Call Parking and Announce Application" -#~ msgstr "Aplicativo de Anúncio e Estacionamento de Chamada" - -#~ msgid "Trivial Playback Application" -#~ msgstr "Aplicativo de Reprodução Trivial" - -#~ msgid "Require phone number to be entered" -#~ msgstr "Requer que seja informado um número de telefone" - -#~ msgid "True Call Queueing" -#~ msgstr "Enfileiramento Real da Chamada" - -#~ msgid "Random goto" -#~ msgstr "Vá para aleatório" - -#~ msgid "Read Variable Application" -#~ msgstr "Aplicativo de Leitura de Variável" - -#~ msgid "Read in a file" -#~ msgstr "Ler em um arquivo" - -#~ msgid "Realtime Data Lookup/Rewrite" -#~ msgstr "Escrita/Consulta de Dados em Tempo Real" - -#~ msgid "Trivial Record Application" -#~ msgstr "Aplicativo de Gravação Trivial" - -#~ msgid "Say time" -#~ msgstr "Dizer a hora" - -#~ msgid "Send DTMF digits Application" -#~ msgstr "Aplicativo para Enviar dígitos DTMF" - -#~ msgid "Send Text Applications" -#~ msgstr "Aplicativos para Enviar Texto" - -#~ msgid "Set CallerID Application" -#~ msgstr "Aplicativo de Definir a Identificação da Chamada" - -# I guess there is something wrong with English here -#~ msgid "CDR user field apps" -#~ msgstr "Aplicativos do campo do usuário no CDR" - -#~ msgid "load => .so ; Set CallerID Name" -#~ msgstr "Carregar => .so ; Definir o Nome na Identificação da Chamada" - -#~ msgid "load => .so ; Set CallerID Number" -#~ msgstr "Carregar => .so ; Definir o Número na Identificação da Chamada" - -#~ msgid "Set RDNIS Number" -#~ msgstr "Definir o Número do RDNIS" - -#~ msgid "Set ISDN Transfer Capability" -#~ msgstr "Definir Capacidade de Transferência ISDN" - -#~ msgid "SMS/PSTN handler" -#~ msgstr "Tratador do SMS/PSTN" - -#~ msgid "Hangs up the requested channel" -#~ msgstr "Termina a ligação no canal requisitado" - -#~ msgid "Stack Routines" -#~ msgstr "Rotinas de Empilhamento" - -#~ msgid "Generic System() application" -#~ msgstr "Aplicativo de Sistema Genérico" - -#~ msgid "Playback with Talk Detection" -#~ msgstr "Reprodução com Detecção de Conversa" - -#~ msgid "Interface Test Application" -#~ msgstr "Aplicativo de Teste de Interface" - -#~ msgid "Transfer" -#~ msgstr "Transferir" - -#~ msgid "TXTCIDName" -#~ msgstr "TXTCIDName" - -#~ msgid "Send URL Applications" -#~ msgstr "Aplicativo para Enviar URL" - -#~ msgid "Custom User Event Application" -#~ msgstr "Aplicativo para Eventos do Usuário Personalizados" - -#~ msgid "Send verbose output" -#~ msgstr "Enviar saída detalhada" - -#~ msgid "Voicemail" -#~ msgstr "Correio de Voz" - -#~ msgid "Waits until first ring after time" -#~ msgstr "Espere até o primeiro toque após tempo" - -#~ msgid "Wait For Silence Application" -#~ msgstr "Aplicativo para Esperar Por Silêncio" - -#~ msgid "While Loops and Conditional Execution" -#~ msgstr "Laços de Repetição e Execução Condicional" - -#~ msgid "Comma Separated Values CDR Backend" -#~ msgstr "Serviço de CDR em Valores Separados por Vírgula" - -#~ msgid "Customizable Comma Separated Values CDR Backend" -#~ msgstr "Serviço de CDR em Valores Separados por Vírgula Personalizável" - -#~ msgid "Asterisk Call Manager CDR Backend" -#~ msgstr "Serviço de CDR de Gerenciamento de Chamadas Asterisk" - -#~ msgid "MySQL CDR Backend" -#~ msgstr "Serviço de CDR em MySQL" - -#~ msgid "PostgreSQL CDR Backend" -#~ msgstr "Serviço de CDR em PostgreSQL" - -#~ msgid "SQLite CDR Backend" -#~ msgstr "Serviço de CDR em SQLite" - -#~ msgid "Agent Proxy Channel" -#~ msgstr "Canal de Proxy do Agente" - -#~ msgid "Option chan_iax2" -#~ msgstr "Opção chan_iax2" - -#~ msgid "Local Proxy Channel" -#~ msgstr "Canal de Proxy Local" - -#~ msgid "Session Initiation Protocol (SIP)" -#~ msgstr "Protocolo de Iniciação de Sessão (SIP)" - -#~ msgid "Adaptive Differential PCM Coder/Decoder" -#~ msgstr "Codificador/Decodificador PCM Diferencial Adaptativo" - -#~ msgid "A-law Coder/Decoder" -#~ msgstr "Codificador/Decodificador A-law" - -#~ msgid "A-law and Mulaw direct Coder/Decoder" -#~ msgstr "Codificador/Decodificador direto A-law e Mulaw" - -#~ msgid "ITU G.726-32kbps G726 Transcoder" -#~ msgstr "Transcodificador G726 ITU G.726-32kbps" - -#~ msgid "GSM/PCM16 (signed linear) Codec Translation" -#~ msgstr "Tradutor de codificação GSM/PCM16 (linear com sinal)" - -#~ msgid "Speex/PCM16 (signed linear) Codec Translator" -#~ msgstr "Tradutor de codificação Speex/PCM16 (linear com sinal)" - -#~ msgid "Mu-law Coder/Decoder" -#~ msgstr "Codificador/Decodificador Mu-law" - -#~ msgid "Sun Microsystems AU format (signed linear)" -#~ msgstr "Formato AU Sun Microsystems (linear com sinal)" - -#~ msgid "G.723.1 Simple Timestamp File Format" -#~ msgstr "Formato de Arquivo de Selo Temporal Simples G.723.1" - -#~ msgid "Raw G.726 (16/24/32/40kbps) data" -#~ msgstr "Dado G.726 bruto (16/24/32/40kbps)" - -#~ msgid "Raw G729 data" -#~ msgstr "Dado G729 bruto" - -#~ msgid "Raw GSM data" -#~ msgstr "Dado GSM bruto" - -#~ msgid "Raw h263 data" -#~ msgstr "Dado h263 bruto" - -#~ msgid "JPEG (Joint Picture Experts Group) Image" -#~ msgstr "Imagem JPEG ((Joint Picture Experts Group)" - -#~ msgid "Raw uLaw 8khz Audio support (PCM)" -#~ msgstr "Suporte a uLaw 8khz Áudio bruto (PCM)" - -#~ msgid "load => .so ; Raw aLaw 8khz PCM Audio support" -#~ msgstr "carregar => .so ; Suporte a uLaw 8khz Áudio PCM bruto" - -#~ msgid "Raw Signed Linear Audio support (SLN)" -#~ msgstr "Suporte a Áudio Linear com Sinal (SLN)" - -#~ msgid "Dialogic VOX (ADPCM) File Format" -#~ msgstr "Formato de Arquivo Dialogic VOX (ADPCM)" - -#~ msgid "Microsoft WAV format (8000hz Signed Line" -#~ msgstr "Formato WAV da Microsoft (8000hz Linear com Sinal)" - -#~ msgid "Microsoft WAV format (Proprietary GSM)" -#~ msgstr "Formato WAV da Microsoft (GSM Proprietário) " - -#~ msgid "Caller ID related dialplan functions" -#~ msgstr "" -#~ "Funções do plano de discagem relacionadas ao identificador da chamada" - -#~ msgid "ENUM Functions" -#~ msgstr "Funções ENUM" - -#~ msgid "URI encoding / decoding functions" -#~ msgstr "Funções de codificação / decodificação de URI" - -#~ msgid "Asterisk Extension Language Compiler" -#~ msgstr "Compilador da Linguagem de Extensão do Asterisk" - -#~ msgid "Text Extension Configuration" -#~ msgstr "Configuração da Extensão de Texto" - -#~ msgid "load => .so ; Builtin dialplan functions" -#~ msgstr "carregar => .so ; Funções de plano de discagem embutidas" - -#~ msgid "Loopback Switch" -#~ msgstr "Interruptor loopback" - -#~ msgid "Realtime Switch" -#~ msgstr "Interruptor de Tempo Real" - -#~ msgid "Outgoing Spool Support" -#~ msgstr "Suporte a bufferização da Saída" - -#~ msgid "Wil Cal U (Auto Dialer)" -#~ msgstr "Wil Cal U (Discador Automático)" - -#~ msgid "MySQL Config Resource" -#~ msgstr "Recurso de Configuração do Mysql" - -#~ msgid "ODBC Config Resource" -#~ msgstr "Recurso de Configuração do ODBC" - -#~ msgid "PGSQL Module" -#~ msgstr "Módulo do PGSQL" - -#~ msgid "Cryptographic Digital Signatures" -#~ msgstr "Assinaturas Digitais Criptográficas" - -#~ msgid "Call Parking Resource" -#~ msgstr "Recurso de Estacionamento de Chamadas" - -#~ msgid "Indications Configuration" -#~ msgstr "Configuração dos Indicadores" - -#~ msgid "Call Monitoring Resource" -#~ msgstr "Recurso de Monitoramento de Chamada" - -#~ msgid "Music On Hold Resource" -#~ msgstr "Recurso da Música de Espera" - -#~ msgid "ODBC Resource" -#~ msgstr "Recurso do ODBC" - -#~ msgid "SMDI Module" -#~ msgstr "Módulo SMDI" - -#~ msgid "SNMP Module" -#~ msgstr "Módulo SNMP" - -#~ msgid "Music On Hold" -#~ msgstr "Música de Espera" - -#~ msgid "Application" -#~ msgstr "Aplicativo" - -#~ msgid "Directory of Music" -#~ msgstr "Diretório de Música" - -#~ msgid "Option mode" -#~ msgstr "Modo da opção" - -#~ msgid "Random Play" -#~ msgstr "Toque Aleatoriamente" - -#~ msgid "DTMF mode" -#~ msgstr "Modo DTMF" - -#~ msgid "Primary domain identity for From: headers" -#~ msgstr "Identidade do primeiro domínio para cabeçalhos De:" - -#~ msgid "From user (required by many SIP providers)" -#~ msgstr "Do usuário (necessário para muitos provedores de SIP)" - -# I didn't undestand this one -#~ msgid "Ring on incoming dialplan contexts" -#~ msgstr "Tocar no contextos de plano de discagem recebidas" - -#~ msgid "Allow Insecure for" -#~ msgstr "Permitir Inseguro para" - -#~ msgid "Mailbox for MWI" -#~ msgstr "Caixa de Correio para MWI" - -#~ msgid "NAT between phone and Asterisk" -#~ msgstr "NAT entre o telefone e o Asterisk" - -#~ msgid "Check tags in headers" -#~ msgstr "Verifique as etiquetas nos cabeçalhos" - -#~ msgid "Reply Timeout (ms) for down connection" -#~ msgstr "Tempo Limite da Resposta (ms) para conexões desconectadas" - -#~ msgid "Register connection" -#~ msgstr "Registro da conexão" - -#~ msgid "Dial own extension for mailbox" -#~ msgstr "Discar extensão própria para a caixa de correio" - -#~ msgid "Client Type" -#~ msgstr "Tipo de Cliente" - -#~ msgid "Username" -#~ msgstr "Usuário" - -#~ msgid "Section sipgeneral" -#~ msgstr "Opções Gerais do SIP" - -#~ msgid "Allow codecs" -#~ msgstr "Permitir codificações" - -#~ msgid "SIP realm" -#~ msgstr "Domínio do SIP (realm)" - -#~ msgid "Voicemail general options" -#~ msgstr "Opções gerais do correio de voz" - -#~ msgid "From Email address of server" -#~ msgstr "Endereço do email de origem do servidor" - -#~ msgid "Voice Mail boxes" -#~ msgstr "Caixas de Correio de Voz" - -#~ msgid "Email contains attachment" -#~ msgstr "O email contém anexos" - -#~ msgid "Email" -#~ msgstr "Email" - -#~ msgid "Display Name" -#~ msgstr "Nome para exibição" - -#~ msgid "Password" -#~ msgstr "Senha" - -#~ msgid "zone" -#~ msgstr "zona" - -#~ msgid "Voice Zone settings" -#~ msgstr "Configuração de Zona da Voz" - -#~ msgid "Message Format" -#~ msgstr "Formato da Mensagem" diff --git a/package/luci/applications/luci-app-asterisk/po/pt/asterisk.po b/package/luci/applications/luci-app-asterisk/po/pt/asterisk.po deleted file mode 100644 index d1b98363af..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/pt/asterisk.po +++ /dev/null @@ -1,150 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2009-05-20 11:54+0200\n" -"Last-Translator: Jose Monteiro \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Opções Gerais do Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "Directorio AGI" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Guardar em cache os ficheiros de som durante a gravação" - -#~ msgid "Debug Level" -#~ msgstr "Nível de debug" - -#~ msgid "Disable some warnings" -#~ msgstr "Desactivar alguns avisos" - -#~ msgid "Dump core on crash" -#~ msgstr "Guardar o core quando houver crash" - -#~ msgid "High Priority" -#~ msgstr "Alta Prioridade" - -#~ msgid "Initialise Crypto" -#~ msgstr "Inicializar Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "Usar temporizações internas" - -#~ msgid "Log directory" -#~ msgstr "Directorio de registos" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Maximo de chamadas permitidas" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Maximo de carga para deixar de aceitar novas chamadas" - -#~ msgid "Disable console colors" -#~ msgstr "Desactivar cores na consola" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Directorio de cache para ficheiros de som" - -#~ msgid "The Group to run as" -#~ msgstr "O grupo sob o qual o asterisk será executado" - -#~ msgid "The User to run as" -#~ msgstr "O utilizador sob o qual o asterisk será executado" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Directorio da spool de voicemail" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Prefixar o nome de sistema à UniquID" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "" -#~ "Construir os caminhos de transcode atraves de SLINEAR e não directamente" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Transmitir silencio SLINEAR durante a gravação de um canal" - -#~ msgid "Verbose Level" -#~ msgstr "Nivel de verbosidade" - -#~ msgid "Time Zone" -#~ msgstr "Fuso Horário" - -#~ msgid "Section dialplan" -#~ msgstr "Secção do Plano de Marcação" - -#~ msgid "include" -#~ msgstr "incluir" - -#~ msgid "Dialplan Extension" -#~ msgstr "Extensão do Plano de Marcação" - -#~ msgid "Dialplan General Options" -#~ msgstr "Opções Gerais do Plano de Marcação" - -#~ msgid "Allow transfer" -#~ msgstr "Permitir transferência" - -#~ msgid "Reinvite/redirect media connections" -#~ msgstr "Redirigir/Repetir ligações multimedia" - -#~ msgid "Clear global vars" -#~ msgstr "Limpar variaveis globais" - -#~ msgid "Dialplan Goto" -#~ msgstr "Encaminhamento do Plano de Marcação" - -#~ msgid "Dialplan Conference" -#~ msgstr "Conferencia do Plano de Marcação" - -#, fuzzy -#~ msgid "Dialplan Time" -#~ msgstr "Conferencia do Plano de Marcação" - -#, fuzzy -#~ msgid "Dialplan Voicemail" -#~ msgstr "Encaminhamento do Plano de Marcação" - -#, fuzzy -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "Secção do Plano de Marcação" - -#, fuzzy -#~ msgid "Connection to use" -#~ msgstr "Secção do Plano de Marcação" - -#, fuzzy -#~ msgid "IAX General Options" -#~ msgstr "Opções Gerais do Plano de Marcação" - -#, fuzzy -#~ msgid "Allow Codecs" -#~ msgstr "Opções Gerais do Plano de Marcação" - -#, fuzzy -#~ msgid "Section sipgeneral" -#~ msgstr "Opções Gerais do Plano de Marcação" - -#, fuzzy -#~ msgid "Allow codecs" -#~ msgstr "Opções Gerais do Plano de Marcação" - -#, fuzzy -#~ msgid "SIP realm" -#~ msgstr "Opções Gerais do Plano de Marcação" - -#, fuzzy -#~ msgid "Voicemail general options" -#~ msgstr "Opções Gerais do Plano de Marcação" - -#, fuzzy -#~ msgid "Voice Zone settings" -#~ msgstr "Secção do Plano de Marcação" diff --git a/package/luci/applications/luci-app-asterisk/po/ro/asterisk.po b/package/luci/applications/luci-app-asterisk/po/ro/asterisk.po deleted file mode 100644 index e271370070..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/ro/asterisk.po +++ /dev/null @@ -1,54 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-07 00:35+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Optiunile generale Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "Director AGI" - -#~ msgid "Disable some warnings" -#~ msgstr "Dezactiveaza cateva avertizari" - -#~ msgid "High Priority" -#~ msgstr "Prioritate inalta" - -#~ msgid "Log directory" -#~ msgstr "Director de loguri" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Incarcarea maxima de cand se refuza apeluri noi" - -#~ msgid "Disable console colors" -#~ msgstr "Dezactiveaza culorile in consola" - -#~ msgid "The Group to run as" -#~ msgstr "Ruleaza sub grupul" - -#~ msgid "The User to run as" -#~ msgstr "Ruleaza sub utilizatorul" - -#~ msgid "Time Zone" -#~ msgstr "Fusul orar" - -#~ msgid "Allow transfer" -#~ msgstr "Permite transferul" - -#~ msgid "Clear global vars" -#~ msgstr "Goleste variabilele globale" - -#~ msgid "Connection to use" -#~ msgstr "Conexiunea pentru folosire" diff --git a/package/luci/applications/luci-app-asterisk/po/ru/asterisk.po b/package/luci/applications/luci-app-asterisk/po/ru/asterisk.po deleted file mode 100644 index d27ba33d7c..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/ru/asterisk.po +++ /dev/null @@ -1,515 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-04-02 15:02+0200\n" -"Last-Translator: Kamal \n" -"Language-Team: LANGUAGE \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Общие настройки Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "Каталог AGI" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Кэшировать звуковые файлы во время записи" - -#~ msgid "Debug Level" -#~ msgstr "Уровень отладки" - -#~ msgid "Disable some warnings" -#~ msgstr "Отключить некоторые предупреждения" - -#~ msgid "Dump core on crash" -#~ msgstr "Сохранять дамп ядра при фатальной ошибке" - -#~ msgid "High Priority" -#~ msgstr "Высокий приоритет" - -#~ msgid "Initialise Crypto" -#~ msgstr "Включить шифрование" - -#~ msgid "Use Internal Timing" -#~ msgstr "Использовать внутренние тайминги" - -#~ msgid "Log directory" -#~ msgstr "Каталог файлов журнала" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Максимальное разрешённое количество вызовов" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Максимальная нагрузка для запрета приёма новых вызовов" - -#~ msgid "Disable console colors" -#~ msgstr "Выключить цвета консоли" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Каталог кэша звуковых файлов" - -#~ msgid "The Group to run as" -#~ msgstr "Группа, от имени которой запускать" - -#~ msgid "The User to run as" -#~ msgstr "Пользователь, от имени которого запускать" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Добавлять имя системы к уникальному идентификатору (UID)" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Передавать тишину в формате SLINEAR при записи канала" - -#~ msgid "Section dialplan" -#~ msgstr "Раздел правил набора" - -#~ msgid "include" -#~ msgstr "включить" - -#~ msgid "Dialplan Extension" -#~ msgstr "Раcширение правила набора" - -#~ msgid "Dialplan General Options" -#~ msgstr "Общие настройки правил набора" - -#~ msgid "Allow transfer" -#~ msgstr "Разрешить перевод" - -#~ msgid "Clear global vars" -#~ msgstr "Очистить глобальные переменные" - -#~ msgid "Dialplan Conference" -#~ msgstr "Правила набора для конференции" - -#~ msgid "Dialplan Time" -#~ msgstr "Время правил набора" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "Правила набора для голосовой почты" - -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "Зоны для правил набора" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "Префикс (0) для добавления/удаления к/из международных номеров" - -#~ msgid "localzone" -#~ msgstr "местная зона" - -#~ msgid "Connection to use" -#~ msgstr "Использовать соединение" - -#~ msgid "Feature Key maps" -#~ msgstr "Назначения функцилнальных клавиш" - -#~ msgid "Key to Disconnect call" -#~ msgstr "Клавиша для разрыва соединения" - -#~ msgid "Key to Park call" -#~ msgstr "Клавиша для \"парковки\" вызова " - -#~ msgid "Parking Feature" -#~ msgstr "Функция \"Парковка\"" - -#~ msgid "One touch record key" -#~ msgstr "Клавиша записи в одно касание" - -#~ msgid "Sound file to play to parked caller" -#~ msgstr "Аудио файл, проигрываемый \"припаркованному\"" - -#~ msgid "Max time (ms) between digits for feature activation" -#~ msgstr "Максимальное время (мс) между нажатиями для активации функции" - -#~ msgid "Method to Find Parking slot" -#~ msgstr "Метод поиска слота для парковки" - -#~ msgid "Play courtesy tone to" -#~ msgstr "Играть тон вежливости для" - -#~ msgid "Enable Parking" -#~ msgstr "Разрешить \"Парковку\"" - -#~ msgid "Extension to dial to park" -#~ msgstr "Расширение набора для \"парковки\"" - -#~ msgid "Parking time (secs)" -#~ msgstr "Время \"Парковки\" (секунды)" - -#~ msgid "Range of extensions for call parking" -#~ msgstr "Диапазон расширений для \"парковки\" вызова" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Перезагрузить конфигурацию оборудования" - -#~ msgid "Reboot Method" -#~ msgstr "Метод перезагрузки" - -#~ msgid "Parameter" -#~ msgstr "Параметр" - -#~ msgid "Option type" -#~ msgstr "Тип параметра" - -#~ msgid "User name" -#~ msgstr "Имя пользователя" - -#~ msgid "IAX General Options" -#~ msgstr "Общие параметры IAX" - -#~ msgid "Allow Codecs" -#~ msgstr "Разрешить кодеки" - -#~ msgid "Static" -#~ msgstr "Статический" - -#~ msgid "Write Protect" -#~ msgstr "Защита от записи" - -#~ msgid "Meetme Conference" -#~ msgstr "Конференция Meetme" - -#~ msgid "Admin PIN" -#~ msgstr "PIN администратора" - -#~ msgid "Meeting PIN" -#~ msgstr "PIN совещания" - -#~ msgid "Meetme Conference General Options" -#~ msgstr "Общие параметры конференции Meetme" - -#~ msgid "Number of 20ms audio buffers to be used" -#~ msgstr "Количество используемых 20 мс буферов" - -#~ msgid "Modules" -#~ msgstr "Модули" - -#~ msgid "Alarm Receiver Application" -#~ msgstr "Приложение сбора сигналов тревоги" - -#~ msgid "Authentication Application" -#~ msgstr "Приложение аутентификации" - -#~ msgid "Make sure asterisk doesn't save CDR" -#~ msgstr "Убедитесь что Asterisk не сохраняет CDR" - -#~ msgid "Check if channel is available" -#~ msgstr "Проверить канал на доступность" - -#~ msgid "Listen in on any channel" -#~ msgstr "Слашать на любом канале" - -#~ msgid "Database access functions" -#~ msgstr "Функции доступа базы данных" - -#~ msgid "Dialing Application" -#~ msgstr "Приложение набора" - -#~ msgid "DISA (Direct Inward System Access) Application" -#~ msgstr "" -#~ "Приложение доступа к добавочной линии путем прямого установления " -#~ "входящего соединения (DISA)" - -#~ msgid "Dump channel variables Application" -#~ msgstr "Приложение сбора переменных канала" - -#~ msgid "Simple Echo Application" -#~ msgstr "Приложение эха" - -#~ msgid "Executes applications" -#~ msgstr "Выполняет приложение" - -#~ msgid "External IVR application interface" -#~ msgstr "Интерфейс внешнего IVR приложения" - -#~ msgid "Group Management Routines" -#~ msgstr "Операции управления группой" - -#~ msgid "Image Transmission Application" -#~ msgstr "Приложение передачи изображений" - -#~ msgid "Look up Caller*ID name/number from black" -#~ msgstr "Искать имя CallerID в \"черном\" списке" - -#~ msgid "Look up CallerID Name from local databas" -#~ msgstr "Искать имя CallerID в локальной базе" - -#~ msgid "Extension Macros" -#~ msgstr "Макрос расширения" - -#~ msgid "A simple math Application" -#~ msgstr "Простое математическое приложение" - -#~ msgid "MD5 checksum Application" -#~ msgstr "Приложение MD5" - -#~ msgid "Record a call and mix the audio during the recording" -#~ msgstr "Записать вызов и микшировать аудио во время записи" - -#~ msgid "Trivial Playback Application" -#~ msgstr "Приложение для воспроизведения" - -#~ msgid "Require phone number to be entered" -#~ msgstr "Требовать номер телефона, который необходимо ввести" - -#~ msgid "True Call Queueing" -#~ msgstr "Постановка вызовов на ожидание" - -#~ msgid "Read Variable Application" -#~ msgstr "Приложение чтения переменных" - -#~ msgid "Read in a file" -#~ msgstr "Читать в файл" - -#~ msgid "Trivial Record Application" -#~ msgstr "Приложения для записи" - -#~ msgid "Send DTMF digits Application" -#~ msgstr "Приложение отправки DTMF" - -#~ msgid "Send Text Applications" -#~ msgstr "Приложения отправки текста" - -#~ msgid "Set CallerID Application" -#~ msgstr "Приложение установки CallerID" - -#~ msgid "Set RDNIS Number" -#~ msgstr "Установить номер RDNIS" - -#~ msgid "Set ISDN Transfer Capability" -#~ msgstr "Установить возможности передачи ISDN " - -#~ msgid "SMS/PSTN handler" -#~ msgstr "Обработчик SMS/PSTN" - -#~ msgid "Hangs up the requested channel" -#~ msgstr "Отсоединяет запрошенный канал" - -#~ msgid "Stack Routines" -#~ msgstr "Функции стека" - -#~ msgid "Generic System() application" -#~ msgstr "Приложение System()" - -#~ msgid "Playback with Talk Detection" -#~ msgstr "Воспроизведение с обнаружением разговора" - -#~ msgid "Interface Test Application" -#~ msgstr "Приложение для тестирования интерфейса" - -#~ msgid "Transfer" -#~ msgstr "Пересылка" - -#~ msgid "TXTCIDName" -#~ msgstr "Имя TXTCID" - -#~ msgid "Send URL Applications" -#~ msgstr "Приложения отсылки URL" - -#~ msgid "Custom User Event Application" -#~ msgstr "Приложение пользовательских событий" - -#~ msgid "Send verbose output" -#~ msgstr "Отправлять подробный вывод" - -#~ msgid "Voicemail" -#~ msgstr "Голосовая почта" - -#~ msgid "While Loops and Conditional Execution" -#~ msgstr "Циклы while и условное выполнение" - -#~ msgid "Asterisk Call Manager CDR Backend" -#~ msgstr "Бэкенд CDR менеджера вызовов Asterisk" - -#~ msgid "MySQL CDR Backend" -#~ msgstr "Бэкенд MySQL CDR" - -#~ msgid "PostgreSQL CDR Backend" -#~ msgstr "Бэкенд PostgreSQL CDR" - -#~ msgid "SQLite CDR Backend" -#~ msgstr "Бэкенд SQLite CDR" - -#~ msgid "Local Proxy Channel" -#~ msgstr "Локальный прокси-канал" - -#~ msgid "Session Initiation Protocol (SIP)" -#~ msgstr "Session Initiation Protocol - протокол установления сеанса (SIP)" - -#~ msgid "Adaptive Differential PCM Coder/Decoder" -#~ msgstr "Адаптивный дифференциальный PCM кодер/декодер" - -#~ msgid "A-law Coder/Decoder" -#~ msgstr "A-law кодер/декодер" - -#~ msgid "A-law and Mulaw direct Coder/Decoder" -#~ msgstr "A-law и Mu-law прямой кодер/декодер" - -#~ msgid "ITU G.726-32kbps G726 Transcoder" -#~ msgstr "ITU G.726-32кбит/с G726 транскодер" - -#~ msgid "GSM/PCM16 (signed linear) Codec Translation" -#~ msgstr "Транслятор кодека GSM/PCM16 (знаковый линейный)" - -#~ msgid "Speex/PCM16 (signed linear) Codec Translator" -#~ msgstr "Транслятор кодека Speex/PCM16 (знаковый линейный)" - -#~ msgid "Mu-law Coder/Decoder" -#~ msgstr "Mu-law кодер/декодер" - -#~ msgid "Sun Microsystems AU format (signed linear)" -#~ msgstr "Формат Sun Microsystems AU (знаковый линейный)" - -#~ msgid "Raw G.726 (16/24/32/40kbps) data" -#~ msgstr "Необработанные данные G.726 (16/24/32/40кбит/с)" - -#~ msgid "Raw G729 data" -#~ msgstr "Необработанные данные G729" - -#~ msgid "Raw GSM data" -#~ msgstr "Необработанные данные GSM" - -#~ msgid "Raw h263 data" -#~ msgstr "Необработанные данные h263" - -#~ msgid "JPEG (Joint Picture Experts Group) Image" -#~ msgstr "Изображение JPEG (Joint Picture Experts Group) " - -#~ msgid "Dialogic VOX (ADPCM) File Format" -#~ msgstr "Формат Dialogic VOX (ADPCM)" - -#~ msgid "Microsoft WAV format (8000hz Signed Line" -#~ msgstr "Формат Microsoft WAV (800Гц, линейный знаковый)" - -#~ msgid "Microsoft WAV format (Proprietary GSM)" -#~ msgstr "Формат Microsoft WAV (проприетарный GSM)" - -#~ msgid "Caller ID related dialplan functions" -#~ msgstr "Функции правил набора Caller ID" - -#~ msgid "ENUM Functions" -#~ msgstr "Функции ENUM" - -#~ msgid "URI encoding / decoding functions" -#~ msgstr "Функции кодирования/декодирования URI" - -#~ msgid "Asterisk Extension Language Compiler" -#~ msgstr "Компилятор языка расширений Asterisk" - -#~ msgid "Text Extension Configuration" -#~ msgstr "Настройка текстового расширения" - -#~ msgid "Wil Cal U (Auto Dialer)" -#~ msgstr "Позвоню тебе (Wil Cal U, автодозвонщик)" - -#~ msgid "MySQL Config Resource" -#~ msgstr "Ресурс конфигурации MySQL" - -#~ msgid "ODBC Config Resource" -#~ msgstr "Ресурс конфигурации ODBC" - -#~ msgid "PGSQL Module" -#~ msgstr "PGSQL модуль" - -#~ msgid "Cryptographic Digital Signatures" -#~ msgstr "Цифровые подписи" - -#~ msgid "Call Parking Resource" -#~ msgstr "Ресурс \"парковки\"" - -#~ msgid "Indications Configuration" -#~ msgstr "Конфигурация индикаций" - -#~ msgid "Call Monitoring Resource" -#~ msgstr "Ресурс мониторинга вызова" - -#~ msgid "ODBC Resource" -#~ msgstr "Ресурс ODBC" - -#~ msgid "SMDI Module" -#~ msgstr "Модуль SMDI" - -#~ msgid "SNMP Module" -#~ msgstr "Модуль SNMP" - -#~ msgid "Music On Hold" -#~ msgstr "Музыка при ожидании" - -#~ msgid "Application" -#~ msgstr "Приложение" - -#~ msgid "Directory of Music" -#~ msgstr "Директория музыки" - -#~ msgid "Random Play" -#~ msgstr "Воспроизведение в случайном порядке" - -#~ msgid "DTMF mode" -#~ msgstr "DTMF режим" - -#~ msgid "From user (required by many SIP providers)" -#~ msgstr "From user (от пользователя, требуется многими SIP-провайдерами)" - -#~ msgid "Allow Insecure for" -#~ msgstr "Разрешить небезопасные для" - -#~ msgid "Mailbox for MWI" -#~ msgstr "Почтовый ящик для MWI" - -#~ msgid "NAT between phone and Asterisk" -#~ msgstr "NAT между телефоном и Asterisk" - -#~ msgid "Check tags in headers" -#~ msgstr "Проверять метки в заголовках" - -#~ msgid "Register connection" -#~ msgstr "Зарегистрировать соединение" - -#~ msgid "Client Type" -#~ msgstr "Тип клиента" - -#~ msgid "Username" -#~ msgstr "Имя пользователя" - -#~ msgid "Section sipgeneral" -#~ msgstr "Общие SIP" - -#~ msgid "SIP realm" -#~ msgstr "SIP realm" - -#~ msgid "Voicemail general options" -#~ msgstr "Общие настройки голосовой почты" - -#~ msgid "From Email address of server" -#~ msgstr "От адреса эл. почты сервера" - -#~ msgid "Voice Mail boxes" -#~ msgstr "Ящики голосовой почты" - -#~ msgid "Email contains attachment" -#~ msgstr "Письмо содержит вложение" - -#~ msgid "Email" -#~ msgstr "Эл. почта" - -#~ msgid "Display Name" -#~ msgstr "Отображаемое имя" - -#~ msgid "Password" -#~ msgstr "Пароль" - -#~ msgid "zone" -#~ msgstr "зона" - -#~ msgid "Voice Zone settings" -#~ msgstr "Настройки голосовой зоны" - -#~ msgid "Message Format" -#~ msgstr "Формат сообщения" diff --git a/package/luci/applications/luci-app-asterisk/po/sk/asterisk.po b/package/luci/applications/luci-app-asterisk/po/sk/asterisk.po deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/package/luci/applications/luci-app-asterisk/po/sv/asterisk.po b/package/luci/applications/luci-app-asterisk/po/sv/asterisk.po deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/package/luci/applications/luci-app-asterisk/po/templates/asterisk.pot b/package/luci/applications/luci-app-asterisk/po/templates/asterisk.pot deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/package/luci/applications/luci-app-asterisk/po/tr/asterisk.po b/package/luci/applications/luci-app-asterisk/po/tr/asterisk.po deleted file mode 100644 index c8b4e58c1a..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/tr/asterisk.po +++ /dev/null @@ -1,12 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \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" diff --git a/package/luci/applications/luci-app-asterisk/po/uk/asterisk.po b/package/luci/applications/luci-app-asterisk/po/uk/asterisk.po deleted file mode 100644 index d6dd63e91d..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/uk/asterisk.po +++ /dev/null @@ -1,79 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-21 14:22+0200\n" -"Last-Translator: Anonymous Pootle User\n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Головні налаштування Asterisk" - -#~ msgid "AGI directory" -#~ msgstr "AGI тека " - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Кешувати файли записів поки йде запис" - -#~ msgid "Debug Level" -#~ msgstr "Рівень налагоджування" - -#~ msgid "Disable some warnings" -#~ msgstr "Вимкнути деякі попередження" - -#~ msgid "Dump core on crash" -#~ msgstr "Зберегти дамп ядра в разі фатальної помилки" - -#~ msgid "High Priority" -#~ msgstr "Високий пріоритет" - -#~ msgid "Initialise Crypto" -#~ msgstr "Ініціалізувати шифрування" - -#~ msgid "Use Internal Timing" -#~ msgstr "Використовувати внутрішні таймінги" - -#~ msgid "Log directory" -#~ msgstr "Тека з журналом" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Максимальна кількість дозволених дзвінків" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Максимальне навантаження, при якому зупиняти прийом дзвінків" - -#~ msgid "Disable console colors" -#~ msgstr "Вимкнути кольори в консолі" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Тека з кешованими звуковими файлами" - -#~ msgid "The Group to run as" -#~ msgstr "Запустити з правами Групи" - -#~ msgid "The User to run as" -#~ msgstr "Запустити з правами Користувача" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Тека з голосовою поштою" - -#, fuzzy -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Префікс Uniquid з назвою системи " - -#~ msgid "Time Zone" -#~ msgstr "Часовий пояс" - -#~ msgid "Allow transfer" -#~ msgstr "Дозволити переадресацію" - -#~ msgid "Clear global vars" -#~ msgstr "Видалити глобальні змінні" diff --git a/package/luci/applications/luci-app-asterisk/po/vi/asterisk.po b/package/luci/applications/luci-app-asterisk/po/vi/asterisk.po deleted file mode 100644 index 133f864abb..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/vi/asterisk.po +++ /dev/null @@ -1,680 +0,0 @@ -# asterisk.pot -# generated from ./applications/luci-asterisk/luasrc/i18n/asterisk.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:58+0200\n" -"PO-Revision-Date: 2009-08-16 08:36+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Asterisk những tùy chọn căn bản" - -#~ msgid "AGI directory" -#~ msgstr "Thư mục AGI" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "Cache ghi lại tập tin âm thanh trong suốt qua trình recording" - -#~ msgid "Debug Level" -#~ msgstr "Debug Level" - -#~ msgid "Disable some warnings" -#~ msgstr "Vô hiệu hóa một số cảnh báo" - -#~ msgid "Dump core on crash" -#~ msgstr "Dump core on crash" - -#~ msgid "High Priority" -#~ msgstr "High Priority" - -#~ msgid "Initialise Crypto" -#~ msgstr "Initialise Crypto" - -#~ msgid "Use Internal Timing" -#~ msgstr "Sử dụng thời gian nội bộ" - -#~ msgid "Log directory" -#~ msgstr "Thư mục log" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "Số lượng cuộc gọi tối đa cho phép" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "Mức độ tải tối đa để ngừng thu nhận cuộc gọi mới" - -#~ msgid "Disable console colors" -#~ msgstr "Vô hiệu hóa bản điều khiển màu sắc" - -#~ msgid "Sound files Cache directory" -#~ msgstr "Thư mục sound files cache" - -#~ msgid "The Group to run as" -#~ msgstr "Nhóm vận hành như" - -#~ msgid "The User to run as" -#~ msgstr "Người sử dụng vận hành như" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "Thư mục Voicemail Spool " - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "Tiền tố UniquID với tên hệ thống" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "Xây dựng đừng dẫn transcode via SLINEAR, không trực tiếp" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "Truyền SLINEAR silence trong khi recording một channel" - -#~ msgid "Verbose Level" -#~ msgstr "Verbose Level" - -#~ msgid "Section dialplan" -#~ msgstr "Section dialplan" - -#~ msgid "include" -#~ msgstr "bao gồm" - -#~ msgid "Dialplan Extension" -#~ msgstr "Dialplan Extension" - -#~ msgid "Dialplan General Options" -#~ msgstr "Dialplan tùy chọn tổng quát" - -#~ msgid "Allow transfer" -#~ msgstr "Cho phép chuyển đổi" - -#~ msgid "Clear global vars" -#~ msgstr "Xóa global vars" - -#~ msgid "Dialplan Goto" -#~ msgstr "Dialplan Goto" - -#~ msgid "Dialplan Conference" -#~ msgstr "Dialplan Conference" - -#~ msgid "Dialplan Time" -#~ msgstr "Dialplan Time" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "Dialplan Voicemail" - -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "Dial Zones cho Dialplan" - -#~ msgid "Prefix to add matching dialplans" -#~ msgstr "Tiền tố để thêm vào matching dialplans" - -#~ msgid "Match International prefix" -#~ msgstr "Match tiền tố quốc tê" - -#~ msgid "Prefix (0) to add/remove to/from international numbers" -#~ msgstr "Tiền tố để thêm vào/ bỏ ra/ từ số gọi quốc tế" - -#~ msgid "localzone" -#~ msgstr "vùng địa phương" - -#~ msgid "Match plan" -#~ msgstr "Match plan" - -#~ msgid "Connection to use" -#~ msgstr "Kết nối sử dụng" - -#~ msgid "Feature Key maps" -#~ msgstr "Bản đồ phím tính năng" - -#~ msgid "Attended transfer key" -#~ msgstr "Attended transfer key" - -#~ msgid "Blind transfer key" -#~ msgstr "phím chuyển đổi ẩn" - -#~ msgid "Key to Disconnect call" -#~ msgstr "phím để vô hiệu hóa cuộc gọi" - -#~ msgid "Key to Park call" -#~ msgstr "phím để định vị cuộc gọi" - -#~ msgid "Parking Feature" -#~ msgstr "Tính năng định vị" - -#~ msgid "ADSI Park" -#~ msgstr "định vị ADSI" - -#~ msgid "Attended transfer timeout (sec)" -#~ msgstr "Attended transfer timeout (sec)" - -#~ msgid "One touch record key" -#~ msgstr "Phím thu chạm một lần" - -#~ msgid "Name of call context for parking" -#~ msgstr "Tên của call context cho parking" - -#~ msgid "Sound file to play to parked caller" -#~ msgstr "Tập tin âm thanh để play to parked caller" - -#~ msgid "Max time (ms) between digits for feature activation" -#~ msgstr "Thời gian tối đa (ms) giữa các digits cho feature activation" - -#~ msgid "Method to Find Parking slot" -#~ msgstr "Phương pháp tìm điểm định vị" - -#~ msgid "parkedmusicclass" -#~ msgstr "parkedmusicclass" - -#~ msgid "Play courtesy tone to" -#~ msgstr "Play courtesy tone để" - -#~ msgid "Enable Parking" -#~ msgstr "cho phép định vị" - -#~ msgid "Extension to dial to park" -#~ msgstr "nhanh số để gọi để định vị" - -#~ msgid "Parking time (secs)" -#~ msgstr "Thời gian định vị" - -#~ msgid "Range of extensions for call parking" -#~ msgstr "Vùng của đuôi mở rộng cho call parking" - -#~ msgid "Pickup extension" -#~ msgstr "Pickup extension" - -#~ msgid "Seconds to wait between digits when transferring" -#~ msgstr "Thời gian chờ giữa những chữ số khi chuyển đổi" - -#~ msgid "sound when attended transfer is complete" -#~ msgstr "âm thanh khi chuyển đổi hoàn tất" - -#~ msgid "Sound when attended transfer fails" -#~ msgstr "âm thanh khi chuyển đổi không thành công" - -#~ msgid "Reload Hardware Config" -#~ msgstr "Tải lại cấu hình phần cứng" - -#~ msgid "Reboot Method" -#~ msgstr "phương pháp khởi động lại" - -#~ msgid "Parameter" -#~ msgstr "Tham số" - -#~ msgid "Option type" -#~ msgstr "Lựa chọn" - -#~ msgid "User name" -#~ msgstr "Tên người dùng" - -#~ msgid "IAX General Options" -#~ msgstr "Những lựa chọn tổng quát IAX" - -#~ msgid "Allow Codecs" -#~ msgstr "Cho phép Codecs" - -#~ msgid "Static" -#~ msgstr "Tĩnh" - -#~ msgid "Write Protect" -#~ msgstr "Viết bảo vệ" - -#~ msgid "Meetme Conference" -#~ msgstr "Gặp mặt thảo luận" - -#~ msgid "Admin PIN" -#~ msgstr "PIN quản trị" - -#~ msgid "Meeting PIN" -#~ msgstr "PIN cuộc gặp" - -#~ msgid "Meetme Conference General Options" -#~ msgstr "Lựu chọn chung về thảo luận trực tiếp" - -#~ msgid "Number of 20ms audio buffers to be used" -#~ msgstr "Số của 20ms audio buffers để được dùng" - -#~ msgid "Modules" -#~ msgstr "Modules" - -#~ msgid "Alarm Receiver Application" -#~ msgstr "Ứng dụng nhận báo thức" - -#~ msgid "Authentication Application" -#~ msgstr "Ứng dụng xác thực" - -#~ msgid "Make sure asterisk doesn't save CDR" -#~ msgstr "Bảo đảm asterisk không lưu CDR" - -#~ msgid "Check if channel is available" -#~ msgstr "Kiểm tra xem nếu kênh đã có sẵn" - -#~ msgid "Listen in on any channel" -#~ msgstr "Nghe trên bất kỳ kênh nào" - -#~ msgid "Control Playback Application" -#~ msgstr "Điều khiển ứng dụng phát lại" - -#~ msgid "Cuts up variables" -#~ msgstr "Cuts up variables" - -#~ msgid "Database access functions" -#~ msgstr "Chức năng truy cập cơ sở dữ liệu" - -#~ msgid "Dialing Application" -#~ msgstr "Ứng dụng quay số" - -#~ msgid "Virtual Dictation Machine Application" -#~ msgstr "Ứng dụng virtual Dictation Machine " - -#~ msgid "Directed Call Pickup Support" -#~ msgstr "Directed hỗ trợ call pickup" - -#~ msgid "Extension Directory" -#~ msgstr "Danh bạ nhánh số" - -#~ msgid "DISA (Direct Inward System Access) Application" -#~ msgstr "Ứng dụng DISA (Direct Inward System Access) " - -#~ msgid "Dump channel variables Application" -#~ msgstr "Dump channel variables Application" - -#~ msgid "Simple Echo Application" -#~ msgstr "Ứng dụng Echo đơn giản" - -#~ msgid "ENUM Lookup" -#~ msgstr "ENUM tra cứu" - -#~ msgid "Reevaluates strings" -#~ msgstr "Đánh giá lại strings" - -#~ msgid "Executes applications" -#~ msgstr "thực thi ứng dụng" - -#~ msgid "External IVR application interface" -#~ msgstr "Ứng dụng giao diện bên ngoài IVR" - -#~ msgid "Fork The CDR into 2 separate entities" -#~ msgstr "Fork The CDR into 2 nhân riêng biệt" - -#~ msgid "Get ADSI CPE ID" -#~ msgstr "Lấy ADSI CPE ID" - -#~ msgid "Group Management Routines" -#~ msgstr "Group Management Routines" - -#~ msgid "Encode and Stream via icecast and ices" -#~ msgstr "Encode và Stream via icecast và ices" - -#~ msgid "Image Transmission Application" -#~ msgstr "Ứng dụng truyền hình ảnh" - -#~ msgid "Look up Caller*ID name/number from black" -#~ msgstr "Tra cứu tên/số của người gọi" - -#~ msgid "Look up CallerID Name from local databas" -#~ msgstr "Tra cứu tên người gọi từ cơ sở dữ liệu địa phương" - -#~ msgid "Extension Macros" -#~ msgstr "Nhánh số Macro" - -#~ msgid "A simple math Application" -#~ msgstr "Ứng dụng tính toán đơn giản" - -#~ msgid "MD5 checksum Application" -#~ msgstr "Ứng dụng MD5 checksum " - -#~ msgid "Digital Milliwatt (mu-law) Test Application" -#~ msgstr "Ứng dụng kiểm tra Digital Milliwatt (mu-law) " - -#~ msgid "Record a call and mix the audio during the recording" -#~ msgstr "Thu âm cuộc gọi và phối âm trong khi thu" - -#~ msgid "Call Parking and Announce Application" -#~ msgstr "Định vị cuộc gọi và ứng dụng thông báo" - -#~ msgid "Trivial Playback Application" -#~ msgstr "Ứng dụng trivial Playback " - -#~ msgid "Require phone number to be entered" -#~ msgstr "Yêu cầu nhập số điện thoại" - -#~ msgid "True Call Queueing" -#~ msgstr "True Call Queueing" - -#~ msgid "Random goto" -#~ msgstr "Random goto" - -#~ msgid "Read Variable Application" -#~ msgstr "Ứng dụng đọc variable " - -#~ msgid "Read in a file" -#~ msgstr "Đọc trong một tập tin" - -#~ msgid "Realtime Data Lookup/Rewrite" -#~ msgstr "Tra cứu dữ liệu đúng lúc/ Viết lại" - -#~ msgid "Trivial Record Application" -#~ msgstr "Ứng dụng trivial record" - -#~ msgid "Say time" -#~ msgstr "Nói thời gian" - -#~ msgid "Send DTMF digits Application" -#~ msgstr "Ứng dụng gửi những chữ số DTMF" - -#~ msgid "Send Text Applications" -#~ msgstr "Gửi ứng dụng tin nhắn" - -#~ msgid "Set CallerID Application" -#~ msgstr "Ứng dụng cài đặt định dạng cuộc gọi" - -#~ msgid "CDR user field apps" -#~ msgstr "CDR user field apps" - -#~ msgid "load => .so ; Set CallerID Name" -#~ msgstr "load =&gt; .so ; Đặt tên CallerID " - -#~ msgid "load => .so ; Set CallerID Number" -#~ msgstr "load =&gt; .so ; Đặt số CallerID " - -#~ msgid "Set RDNIS Number" -#~ msgstr "Cài đặt số RDNIS" - -#~ msgid "Set ISDN Transfer Capability" -#~ msgstr "Cài đặt công suất truyền tải ISDN" - -#~ msgid "SMS/PSTN handler" -#~ msgstr "SMS/PSTN handler" - -#~ msgid "Hangs up the requested channel" -#~ msgstr "Bãi bỏ kênh yêu cầu" - -#~ msgid "Stack Routines" -#~ msgstr "Ngăn xếp Routines" - -#~ msgid "Generic System() application" -#~ msgstr "Ứng dụng Genetic System" - -#~ msgid "Playback with Talk Detection" -#~ msgstr "Playback với bộ phát hiện tiếng nói" - -#~ msgid "Interface Test Application" -#~ msgstr "Ứng dụng kiểm tra giao diện" - -#~ msgid "Transfer" -#~ msgstr "truyền tải" - -#~ msgid "TXTCIDName" -#~ msgstr "TXTCIDName" - -#~ msgid "Send URL Applications" -#~ msgstr "Gửi những ứng dụng URL" - -#~ msgid "Custom User Event Application" -#~ msgstr "Ứng dụng Custom User Event " - -#~ msgid "Send verbose output" -#~ msgstr "Gửi verbose output" - -#~ msgid "Voicemail" -#~ msgstr "Thư thoại" - -#~ msgid "Waits until first ring after time" -#~ msgstr "Đợi tới tiếng ring đầu tiên sau khi" - -#~ msgid "Wait For Silence Application" -#~ msgstr "Đợi ứng dụng im lặng" - -#~ msgid "While Loops and Conditional Execution" -#~ msgstr "Trong khi Loops và Conditional Execution" - -#~ msgid "Comma Separated Values CDR Backend" -#~ msgstr "Comma Separated Values CDR Backend" - -#~ msgid "Customizable Comma Separated Values CDR Backend" -#~ msgstr "Tùy chỉnh Comma Separated Values CDR Backend" - -#~ msgid "Asterisk Call Manager CDR Backend" -#~ msgstr "Asterisk Call Manager CDR Backend" - -#~ msgid "MySQL CDR Backend" -#~ msgstr "MySQL CDR Backend" - -#~ msgid "PostgreSQL CDR Backend" -#~ msgstr "PostgreSQL CDR Backend" - -#~ msgid "SQLite CDR Backend" -#~ msgstr "SQLite CDR Backend" - -#~ msgid "Agent Proxy Channel" -#~ msgstr "Agent Proxy Channel" - -#~ msgid "Option chan_iax2" -#~ msgstr "Tùy chọn chan_iax2" - -#~ msgid "Local Proxy Channel" -#~ msgstr "Local Proxy Channel" - -#~ msgid "Session Initiation Protocol (SIP)" -#~ msgstr "Session Initiation Protocol (SIP)" - -#~ msgid "Adaptive Differential PCM Coder/Decoder" -#~ msgstr "Adaptive Differential PCM Coder/Decoder" - -#~ msgid "A-law Coder/Decoder" -#~ msgstr "A-law Coder/Decoder" - -#~ msgid "A-law and Mulaw direct Coder/Decoder" -#~ msgstr "A-law and Mulaw direct Coder/Decoder" - -#~ msgid "ITU G.726-32kbps G726 Transcoder" -#~ msgstr "ITU G.726-32kbps G726 Transcoder" - -#~ msgid "GSM/PCM16 (signed linear) Codec Translation" -#~ msgstr "GSM/PCM16 (signed linear) Codec Translation" - -#~ msgid "Speex/PCM16 (signed linear) Codec Translator" -#~ msgstr "Speex/PCM16 (signed linear) Codec Translator" - -#~ msgid "Mu-law Coder/Decoder" -#~ msgstr "Mu-law Coder/Decoder" - -#~ msgid "Sun Microsystems AU format (signed linear)" -#~ msgstr "Sun Microsystems AU format (signed linear)" - -#~ msgid "G.723.1 Simple Timestamp File Format" -#~ msgstr "G.723.1 Simple Timestamp File Format" - -#~ msgid "Raw G.726 (16/24/32/40kbps) data" -#~ msgstr "Raw G.726 (16/24/32/40kbps) data" - -#~ msgid "Raw G729 data" -#~ msgstr "Raw G729 data" - -#~ msgid "Raw GSM data" -#~ msgstr "Raw GSM data" - -#~ msgid "Raw h263 data" -#~ msgstr "Raw h263 data" - -#~ msgid "JPEG (Joint Picture Experts Group) Image" -#~ msgstr "JPEG (Joint Picture Experts Group) Image" - -#~ msgid "Raw uLaw 8khz Audio support (PCM)" -#~ msgstr "Raw uLaw 8khz Audio support (PCM)" - -#~ msgid "load => .so ; Raw aLaw 8khz PCM Audio support" -#~ msgstr "load =&gt; .so ; Raw aLaw 8khz PCM Audio support" - -#~ msgid "Raw Signed Linear Audio support (SLN)" -#~ msgstr "Raw Signed Linear Audio support (SLN)" - -#~ msgid "Dialogic VOX (ADPCM) File Format" -#~ msgstr "Dialogic VOX (ADPCM) File Format" - -#~ msgid "Microsoft WAV format (8000hz Signed Line" -#~ msgstr "Microsoft WAV format (8000hz Signed Line" - -#~ msgid "Microsoft WAV format (Proprietary GSM)" -#~ msgstr "Microsoft WAV format (Proprietary GSM)" - -#~ msgid "Caller ID related dialplan functions" -#~ msgstr "Caller ID liên quan đến chức năng dialplan " - -#~ msgid "ENUM Functions" -#~ msgstr "chức năng ENUM" - -#~ msgid "URI encoding / decoding functions" -#~ msgstr "Chức năng URI encoding / decoding " - -#~ msgid "Asterisk Extension Language Compiler" -#~ msgstr "Asterisk Extension Language Compiler" - -#~ msgid "Text Extension Configuration" -#~ msgstr "Cấu hình Text Extension " - -#~ msgid "load => .so ; Builtin dialplan functions" -#~ msgstr "load =&gt; .so ; chức năng Builtin dialplan " - -#~ msgid "Loopback Switch" -#~ msgstr "Loopback Switch" - -#~ msgid "Realtime Switch" -#~ msgstr "Realtime Switch" - -#~ msgid "Outgoing Spool Support" -#~ msgstr "Hỗ trợ outgoing spool" - -#~ msgid "Wil Cal U (Auto Dialer)" -#~ msgstr "Wil Cal U (Auto Dialer)" - -#~ msgid "MySQL Config Resource" -#~ msgstr "MySQL Config Resource" - -#~ msgid "ODBC Config Resource" -#~ msgstr "ODBC Config Resource" - -#~ msgid "PGSQL Module" -#~ msgstr "PGSQL Module" - -#~ msgid "Cryptographic Digital Signatures" -#~ msgstr "Cryptographic Digital Signatures" - -#~ msgid "Call Parking Resource" -#~ msgstr "Call Parking Resource" - -#~ msgid "Indications Configuration" -#~ msgstr "Cấu hình indications" - -#~ msgid "Call Monitoring Resource" -#~ msgstr "Call Monitoring Resource" - -#~ msgid "Music On Hold Resource" -#~ msgstr "Music On Hold Resource" - -#~ msgid "ODBC Resource" -#~ msgstr "ODBC Resource" - -#~ msgid "SMDI Module" -#~ msgstr "SMDI Module" - -#~ msgid "SNMP Module" -#~ msgstr "SNMP Module" - -#~ msgid "Music On Hold" -#~ msgstr "Music On Hold" - -#~ msgid "Application" -#~ msgstr "Ứng dụng" - -#~ msgid "Directory of Music" -#~ msgstr "Thư mục music" - -#~ msgid "Option mode" -#~ msgstr "Chế độ tùy chọn" - -#~ msgid "Random Play" -#~ msgstr "Random Play" - -#~ msgid "DTMF mode" -#~ msgstr "chế độ DTMF" - -#~ msgid "Primary domain identity for From: headers" -#~ msgstr "Nhận dạng primary domain cho From: headers" - -#~ msgid "From user (required by many SIP providers)" -#~ msgstr "Từ user (yêu cầu bởi nhiều nhà cung cấp SIP)" - -#~ msgid "Ring on incoming dialplan contexts" -#~ msgstr "Ring on incoming dialplan contexts" - -#~ msgid "Allow Insecure for" -#~ msgstr "Cho phép không an toàn cho" - -#~ msgid "Mailbox for MWI" -#~ msgstr "Hộp thư cho MWI" - -#~ msgid "NAT between phone and Asterisk" -#~ msgstr "NAT giữa điện thoại và Asterisk" - -#~ msgid "Check tags in headers" -#~ msgstr "Kiểm tra tags trong headers" - -#~ msgid "Reply Timeout (ms) for down connection" -#~ msgstr "Trả lời Timeout (ms) cho down kết nối" - -#~ msgid "Register connection" -#~ msgstr "Đăng ký kết nối" - -#~ msgid "Dial own extension for mailbox" -#~ msgstr "Gọi nhánh số cho hộp thư" - -#~ msgid "Client Type" -#~ msgstr "Loại Client" - -#~ msgid "Username" -#~ msgstr "Username" - -#~ msgid "Section sipgeneral" -#~ msgstr "Section sipgeneral" - -#~ msgid "Allow codecs" -#~ msgstr "Cho phép Codecs" - -#~ msgid "SIP realm" -#~ msgstr "SIP realm" - -#~ msgid "Voicemail general options" -#~ msgstr "Thư thoại tùy chọn tổng quát" - -#~ msgid "From Email address of server" -#~ msgstr "Từ địa chỉ email của server" - -#~ msgid "Voice Mail boxes" -#~ msgstr "Hộp thư thoại" - -#~ msgid "Email contains attachment" -#~ msgstr "Email bao gồm attachment" - -#~ msgid "Email" -#~ msgstr "Email" - -#~ msgid "Display Name" -#~ msgstr "Tên display" - -#~ msgid "Password" -#~ msgstr "Mật khẩu" - -#~ msgid "zone" -#~ msgstr "zone" - -#~ msgid "Voice Zone settings" -#~ msgstr "Cài đặt voice zone" - -#~ msgid "Message Format" -#~ msgstr "Message Format" diff --git a/package/luci/applications/luci-app-asterisk/po/zh-cn/asterisk.po b/package/luci/applications/luci-app-asterisk/po/zh-cn/asterisk.po deleted file mode 100644 index 9ef2f1f584..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/zh-cn/asterisk.po +++ /dev/null @@ -1,171 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-04-02 19:34+0200\n" -"Last-Translator: Anonymous Pootle User\n" -"Language-Team: LANGUAGE \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.4\n" - -#~ msgid "Asterisk General Options" -#~ msgstr "Asterisk 基本选项" - -# test -#~ msgid "AGI directory" -#~ msgstr "AGI 目录" - -#~ msgid "Cache recorded sound files during recording" -#~ msgstr "录音时缓存录音文件" - -#~ msgid "Debug Level" -#~ msgstr "调试级别" - -#~ msgid "Disable some warnings" -#~ msgstr "屏蔽部分警告" - -#~ msgid "Dump core on crash" -#~ msgstr "系统崩溃时记录错误信息" - -#~ msgid "High Priority" -#~ msgstr "高优先级" - -#~ msgid "Initialise Crypto" -#~ msgstr "初始化加密" - -#~ msgid "Use Internal Timing" -#~ msgstr "使用内部计时器" - -#~ msgid "Log directory" -#~ msgstr "日志目录" - -#~ msgid "Maximum number of calls allowed" -#~ msgstr "最大允许呼叫数" - -#~ msgid "Maximum load to stop accepting new calls" -#~ msgstr "允许接受新呼叫的最大负载" - -#~ msgid "Disable console colors" -#~ msgstr "禁用控制台色彩" - -#~ msgid "Sound files Cache directory" -#~ msgstr "音效文件缓存目录" - -#~ msgid "The Group to run as" -#~ msgstr "以此“组”权限运行" - -#~ msgid "The User to run as" -#~ msgstr "以此“用户”身份运行" - -#~ msgid "Voicemail Spool directory" -#~ msgstr "语音邮件缓存目录" - -#~ msgid "Prefix UniquID with system name" -#~ msgstr "UniquID前加系统名做前缀" - -#~ msgid "Build transcode paths via SLINEAR, not directly" -#~ msgstr "由SLINEAR间接建立转码路径" - -#~ msgid "Transmit SLINEAR silence while recording a channel" -#~ msgstr "对频道录音时传送SLINEAR静默" - -#~ msgid "Verbose Level" -#~ msgstr "详细级别" - -#~ msgid "Time Zone" -#~ msgstr "时区" - -#~ msgid "Section dialplan" -#~ msgstr "段内拨号计划" - -#~ msgid "include" -#~ msgstr "包含" - -#~ msgid "Dialplan Extension" -#~ msgstr "拨号计划 扩展" - -#~ msgid "Dialplan General Options" -#~ msgstr "拨号计划 基本参数" - -#~ msgid "Allow transfer" -#~ msgstr "允许 呼叫转移" - -#~ msgid "Clear global vars" -#~ msgstr "清除全局变量" - -#~ msgid "Dialplan Goto" -#~ msgstr "拨号计划至" - -#~ msgid "Dialplan Conference" -#~ msgstr "会议拨号计划" - -#~ msgid "Dialplan Time" -#~ msgstr "时间拨号计划" - -#~ msgid "Dialplan Voicemail" -#~ msgstr "语音信箱拨号计划" - -#~ msgid "Dial Zones for Dialplan" -#~ msgstr "适用拨号计划的拨号区域" - -#~ msgid "Prefix to add matching dialplans" -#~ msgstr "用于匹配拨号计划的前缀" - -#~ msgid "Match International prefix" -#~ msgstr "匹配的国际前缀" - -#~ msgid "localzone" -#~ msgstr "本地区域" - -#~ msgid "Match plan" -#~ msgstr "匹配计划" - -#~ msgid "Connection to use" -#~ msgstr "使用连接" - -#~ msgid "Feature Key maps" -#~ msgstr "特殊键映射" - -#~ msgid "Attended transfer key" -#~ msgstr "加入传输键" - -#~ msgid "Blind transfer key" -#~ msgstr "屏蔽传输键" - -#~ msgid "Key to Disconnect call" -#~ msgstr "结束呼叫键" - -#~ msgid "Key to Park call" -#~ msgstr "呼叫驻留键" - -#~ msgid "Parking Feature" -#~ msgstr "驻留特性" - -#~ msgid "ADSI Park" -#~ msgstr "ADSI驻留" - -#~ msgid "Attended transfer timeout (sec)" -#~ msgstr "加入传输超时(秒)" - -#~ msgid "One touch record key" -#~ msgstr "一键录制" - -#~ msgid "Email" -#~ msgstr "Email" - -#~ msgid "Display Name" -#~ msgstr "显示名字" - -#~ msgid "Password" -#~ msgstr "密码" - -#~ msgid "zone" -#~ msgstr "区" - -#~ msgid "Message Format" -#~ msgstr "消息格式" diff --git a/package/luci/applications/luci-app-asterisk/po/zh-tw/asterisk.po b/package/luci/applications/luci-app-asterisk/po/zh-tw/asterisk.po deleted file mode 100644 index c7eef9d1bd..0000000000 --- a/package/luci/applications/luci-app-asterisk/po/zh-tw/asterisk.po +++ /dev/null @@ -1,13 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-06 23:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.9.0\n" diff --git a/package/luci/applications/luci-app-asterisk/root/etc/config/asterisk b/package/luci/applications/luci-app-asterisk/root/etc/config/asterisk deleted file mode 100644 index 248409793c..0000000000 --- a/package/luci/applications/luci-app-asterisk/root/etc/config/asterisk +++ /dev/null @@ -1,231 +0,0 @@ -config 'asterisk' - option 'verbose' 3 - option 'debug' 3 - option 'zone' 'Australia/Perth' - -config 'hardware' 'reboot' - option 'method' 'web' - option 'param' 'http://ata.lan/admin/reboot' - -config 'feature' 'park' - option 'parkenabled' 'yes' - option 'parkext' '700' - option 'parkpos' '701-720' - option 'context' 'parkedcalls' - option 'parkingtime' '45' - option 'courtesytone' 'beep' - option 'parkedplay' 'caller' - option 'adsipark' 'yes' - option 'findslot' 'first' - option 'parkedmusicclass' 'default' - option 'transferdigittimeout' '3' - option 'xfersound' 'beep' - option 'xferfailsound' 'beeperr' - option 'pickupexten' '"*8"' - option 'featuredigittimeout' '500' - option 'atxfernoanswertimeout' '15' - -config 'feature' 'map' - option 'blindxfer' '#1' - option 'disconnect' '*0' - option 'automon' '*1' - option 'atxfer' '#2' - option 'parkcall' '#30' - -config 'sipgeneral' - option 'realm' 'sip.mydomain.net' - option 'allow' 'alaw' - option 'extension' '102' - -config 'module' - option 'res_config_mysql' 'no' - option 'res_crypto' 'auto' - option 'chan_iax2' 'yes' - -config 'sip' 'PAP2T' - option 'type' 'friend' - option 'extension' '101' - option 'username' 'PAP2T' - option 'secret' 'mypass' - option 'port' '5061' - option 'host' '' - option 'dtmfmode' 'rfc2833' - option 'insecure' 'very' - option 'context' 'internal' - option 'mailbox' '1001@default' - option 'nat' 'no' - option 'canreinvite' 'nonat' - option 'selfmailbox' 'yes' - option 'incoming' 'provider_inbound' - -config 'sip' 'PAP2T2' - option 'type' 'friend' - option 'extension' '101' - option 'username' 'PAP2T2' - option 'secret' 'mysecret' - option 'port' '5060' - option 'host' '' - option 'dtmfmode' 'rfc2833' - option 'insecure' 'very' - option 'context' 'internal' - option 'mailbox' '1001@default' - option 'nat' 'no' - option 'canreinvite' 'nonat' - option 'selfmailbox' 'yes' - option 'incoming' 'provider_inbound' - -config 'sip' 'providerphone' - option 'provider' 'yes' - option 'type' 'friend' - option 'timeout' '55' - option 'internationalprefix' '0011' - option 'alwaysinternational' 'no' - option 'countrycode' '63' - option 'register' 'yes' - option 'host' '200.200.200.200' - option 'username' '0899999999' - option 'fromuser' '0899999999' - option 'secret' 'mysecret' - option 'fromdomain' 'providerphone.provider.net.au' - option 'context' 'provider_inbound' - option 'canreinvite' 'no' - option 'nat' 'yes' - option 'qualify' 'yes' - option 'insecure' 'very' - option 'pedantic' 'no' - option 'qualify' '1000' - -config 'iaxgeneral' - option 'static' 'yes' - option 'writeprotect' 'no' - option 'canreinvite' 'no' - option 'allow' 'ulaw,gsm' - -config 'iax' 'nell' - option 'type' 'friend' - option 'extension' '108' - option 'host' '' - option 'username' 'nell' - option 'secret' 'mypass' - option 'context' 'internal' - -config 'iax' 'iax_vista' - option 'extension' '106' - option 'type' 'friend' - option 'host' '' - option 'username' 'vista' - option 'secret' 'mysecret' - option 'context' 'internal' - -config 'iax' 'sam' - option 'type' 'friend' - option 'extension' '103' - option 'host' '' - option 'username' 'sam' - option 'secret' 'mysecret' - option 'context' 'internal' - -config 'voicegeneral' - option 'serveremail' 'voice@sip.mydomain.net' - -config 'voicemail' - option 'number' '1001' - option 'context' 'default' - option 'password' '0000' - option 'name' 'Family' - option 'email' 'us@mydomain.net' - option 'zone' 'wa' - option 'attach' 'no' - -config 'voicezone' 'wa' - option 'zone' 'Australia/Perth' - option 'message' 'Q IMp' - -config 'voicezone' 'military' - option 'zone' 'Zulu' - option 'message' '"vm-received" q "digits/at" H N "hours" "phonetic/z_p"' - -config 'incominggeneral' - option 'allowtransfer' 'no' - option 'timeout' '20' - option 'answerfirst' 'no' - option 'mailbox' '1001@default' - -config 'dialplangeneral' - option 'static' 'yes' - option 'writeprotect' 'no' - option 'canreinvite' 'no' - option 'clearglobalvars' 'no' - option 'allowtransfer' 'no' - -config 'dialplan' 'internal' - option 'include' 'localcall interstate smartnumber emergency extensions' - -config 'dialplanvoice' - option 'dialplan' 'internal' - option 'extension' '1001' - option 'voicecontext' 'default' - option 'voicebox' '1001' - -config 'dialplansaytime' - option 'dialplan' 'internal' - option 'extension' '108' - -config 'dialplanmeetme' - option 'dialplan' 'internal' - option 'extension' '109' - option 'room' '101' - -config 'dialplanmeetme' - option 'dialplan' 'internal' - option 'extension' '1009' - option 'room' '' - -config 'dialplan' 'localinternational' - option 'include' 'mobile interstate' - -config 'dialzone' 'interstate' - option 'uses' 'SIP/providerphone' - option 'match' '0[235-8]NXXXXXXX' - option 'localprefix' '0' - -config 'dialzone' 'mobile' - option 'uses' 'SIP/providerphone' - option 'match' '04XXXXXXXX' - option 'localprefix' '0' - -config 'dialzone' 'smartnumber' - option 'uses' 'SIP/providerphone' - option 'match' '1[835]00.' - option 'match' '13ZXXX' - -config 'dialzone' 'emergency' - option 'uses' 'SIP/providerphone' - option 'match' '000' - option 'match' '112' - -config 'dialzone' 'localcall' - option 'uses' 'SIP/providerphone' - option 'match' 'NXXXXXXX' - option 'addprefix' '08' - option 'localprefix' '0' - -config 'dialzone' 'international' - option 'uses' 'SIP/providerphone' - option 'international' '0011,+' - option 'localzone' 'localinternational' - option 'localprefix' '0' - option 'addprefix' '' - -config 'meetmegeneral' - option 'audiobuffers' '32' - -config 'meetme' - option 'room' '101' - option 'pin' '' - option 'adminpin' '' - -config 'moh' 'default' - option 'mode' 'files' - option 'directory' '/opt/moh' - option 'random' 'no' diff --git a/package/luci/applications/luci-app-asterisk/root/etc/uci-defaults/40_luci-asterisk b/package/luci/applications/luci-app-asterisk/root/etc/uci-defaults/40_luci-asterisk deleted file mode 100755 index e45819f602..0000000000 --- a/package/luci/applications/luci-app-asterisk/root/etc/uci-defaults/40_luci-asterisk +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@asterisk[-1] - add ucitrack asterisk - set ucitrack.@asterisk[-1].init=asterisk - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-attendedsysupgrade/Makefile b/package/luci/applications/luci-app-attendedsysupgrade/Makefile deleted file mode 100644 index dbb572bd28..0000000000 --- a/package/luci/applications/luci-app-attendedsysupgrade/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# See /LICENSE for more information. -# This is free software, licensed under the GNU General Public License v2. - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI support for attended sysupgrades -LUCI_DEPENDS:=+luci-base +uhttpd-mod-ubus +attendedsysupgrade-common +cgi-io - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua b/package/luci/applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua deleted file mode 100644 index 1bd050af66..0000000000 --- a/package/luci/applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua +++ /dev/null @@ -1,5 +0,0 @@ -module("luci.controller.attendedsysupgrade", package.seeall) - -function index() - entry({"admin", "system", "attended_sysupgrade"}, template("attendedsysupgrade"), _("Attended Sysupgrade"), 1) -end diff --git a/package/luci/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm b/package/luci/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm deleted file mode 100644 index 4ea67ce70a..0000000000 --- a/package/luci/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm +++ /dev/null @@ -1,520 +0,0 @@ -<% --- all lua code provided by https://github.com/jow-/ --- thank you very much! - - function apply_acls(filename, session) - local json = require "luci.jsonc" - local util = require "luci.util" - local fs = require "nixio.fs" - - local grants = { } - - local acl = json.parse(fs.readfile(filename)) - if type(acl) ~= "table" then - return - end - - local group, perms - for group, perms in pairs(acl) do - local perm, scopes - for perm, scopes in pairs(perms) do - if type(scopes) == "table" then - local scope, objects - for scope, objects in pairs(scopes) do - if type(objects) == "table" then - if not grants[scope] then - grants[scope] = { } - end - - if next(objects) == 1 then - local _, object - for _, object in ipairs(objects) do - if not grants[scope][object] then - grants[scope][object] = { } - end - table.insert(grants[scope][object], perm) - end - else - local object, funcs - for object, funcs in pairs(objects) do - if type(funcs) == "table" then - local _, func - for _, func in ipairs(funcs) do - if not grants[scope][object] then - grants[scope][object] = { } - end - table.insert(grants[scope][object], func) - end - end - end - end - end - end - end - end - end - - local _, scope, object, func - for scope, _ in pairs(grants) do - local objects = { } - for object, _ in pairs(_) do - for _, func in ipairs(_) do - table.insert(objects, { object, func }) - end - end - - util.ubus("session", "grant", { - ubus_rpc_session = session, - scope = scope, objects = objects - }) - end - end - - apply_acls("/usr/share/rpcd/acl.d/attendedsysupgrade.json", luci.dispatcher.context.authsession) -%> -<%+header%> -

<%:Attended Sysupgrade%>

-
- Easily search and install new releases and package upgrades. Sysupgrade firmware are created on demand based on locally installed packages. -
- - - -

- -

-
-
-
- - - -
-
- -
-
-
-
-
- - -<%+footer%> diff --git a/package/luci/applications/luci-app-attendedsysupgrade/root/etc/uci-defaults/40_luci-attendedsysupgrade b/package/luci/applications/luci-app-attendedsysupgrade/root/etc/uci-defaults/40_luci-attendedsysupgrade deleted file mode 100755 index 832744f7d8..0000000000 --- a/package/luci/applications/luci-app-attendedsysupgrade/root/etc/uci-defaults/40_luci-attendedsysupgrade +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -rm -rf /tmp/luci-indexcache /tmp/luci-modulecache/ -/etc/init.d/uhttpd restart - -return 0 diff --git a/package/luci/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json b/package/luci/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json deleted file mode 100644 index 7549319260..0000000000 --- a/package/luci/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "attendedsysupgrade": { - "description": "attended sysupgrade via rpcd and luci", - "read": { - "ubus": { - "rpc-sys": [ - "upgrade_start", - "packagelist" - ], - "system": [ - "board", - "info" - ], - "uci": [ - "get", "set", "commit" - ] - }, - "uci": [ - "attendedsysupgrade" - ] - }, - "write": { - "cgi-io": [ - "upload" - ], - "uci": [ - "attendedsysupgrade" - ] - } - } -} diff --git a/package/luci/applications/luci-app-bcp38/Makefile b/package/luci/applications/luci-app-bcp38/Makefile deleted file mode 100644 index 9ab5a6701d..0000000000 --- a/package/luci/applications/luci-app-bcp38/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2010 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=BCP38 LuCI interface -LUCI_DEPENDS:=+luci-mod-admin-full +bcp38 - -PKG_MAINTAINER:=Toke Høiland-Jørgensen -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-bcp38/luasrc/controller/bcp38.lua b/package/luci/applications/luci-app-bcp38/luasrc/controller/bcp38.lua deleted file mode 100644 index 7ea22835d6..0000000000 --- a/package/luci/applications/luci-app-bcp38/luasrc/controller/bcp38.lua +++ /dev/null @@ -1,7 +0,0 @@ -module("luci.controller.bcp38", package.seeall) - -function index() - entry({"admin", "network", "firewall", "bcp38"}, - cbi("bcp38"), - _("BCP38"), 50).dependent = false -end diff --git a/package/luci/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua b/package/luci/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua deleted file mode 100644 index 632074a56f..0000000000 --- a/package/luci/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua +++ /dev/null @@ -1,60 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2014 Toke Høiland-Jørgensen - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- - -local wa = require "luci.tools.webadmin" -local net = require "luci.model.network".init() -local ifaces = net:get_interfaces() - -m = Map("bcp38", translate("BCP38"), - translate("This function blocks packets with private address destinations " .. - "from going out onto the internet as per " .. - "BCP 38. " .. - "For IPv6, only source specific default routes are installed, so " .. - "no BCP38 firewall routes are needed.")) - -s = m:section(TypedSection, "bcp38", translate("BCP38 config")) -s.anonymous = true --- BASIC -e = s:option(Flag, "enabled", translate("Enable")) -e.rmempty = false - -a = s:option(Flag, "detect_upstream", translate("Auto-detect upstream IP"), - translate("Attempt to automatically detect if the upstream IP " .. - "will be blocked by the configuration, and add an exception if it will. " .. - "If this does not work correctly, you can add exceptions manually below.")) -a.rmempty = false - -n = s:option(ListValue, "interface", translate("Interface name"), translate("Interface to apply the blocking to " .. - "(should be the upstream WAN interface).")) -for _, iface in ipairs(ifaces) do - if iface:is_up() then - n:value(iface:name()) - end -end -n.rmempty = false - -ma = s:option(DynamicList, "match", - translate("Blocked IP ranges")) - -ma.datatype = "ip4addr" - -nm = s:option(DynamicList, "nomatch", - translate("Allowed IP ranges"), translate("Takes precedence over blocked ranges. ".. - "Use to whitelist your upstream network if you're behind a double NAT " .. - "and the auto-detection doesn't work.")) - -nm.datatype = "ip4addr" - - -return m diff --git a/package/luci/applications/luci-app-bcp38/po/sv/bcp38.po b/package/luci/applications/luci-app-bcp38/po/sv/bcp38.po deleted file mode 100644 index 7293278f26..0000000000 --- a/package/luci/applications/luci-app-bcp38/po/sv/bcp38.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Allowed IP ranges" -msgstr "" - -msgid "" -"Attempt to automatically detect if the upstream IP will be blocked by the " -"configuration, and add an exception if it will. If this does not work " -"correctly, you can add exceptions manually below." -msgstr "" - -msgid "Auto-detect upstream IP" -msgstr "Upptäck automatiskt IP från uppströms" - -msgid "BCP38" -msgstr "BCP38" - -msgid "BCP38 config" -msgstr "" - -msgid "Blocked IP ranges" -msgstr "" - -msgid "Enable" -msgstr "Aktivera" - -msgid "Interface name" -msgstr "Namn på gränssnittet" - -msgid "" -"Interface to apply the blocking to (should be the upstream WAN interface)." -msgstr "" - -msgid "" -"Takes precedence over blocked ranges. Use to whitelist your upstream network " -"if you're behind a double NAT and the auto-detection doesn't work." -msgstr "" - -msgid "" -"This function blocks packets with private address destinations from going " -"out onto the internet as per BCP 38. For IPv6, only source specific default routes are " -"installed, so no BCP38 firewall routes are needed." -msgstr "" diff --git a/package/luci/applications/luci-app-bcp38/po/templates/bcp38.pot b/package/luci/applications/luci-app-bcp38/po/templates/bcp38.pot deleted file mode 100644 index 1210784d23..0000000000 --- a/package/luci/applications/luci-app-bcp38/po/templates/bcp38.pot +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Allowed IP ranges" -msgstr "" - -msgid "" -"Attempt to automatically detect if the upstream IP will be blocked by the " -"configuration, and add an exception if it will. If this does not work " -"correctly, you can add exceptions manually below." -msgstr "" - -msgid "Auto-detect upstream IP" -msgstr "" - -msgid "BCP38" -msgstr "" - -msgid "BCP38 config" -msgstr "" - -msgid "Blocked IP ranges" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "" -"Interface to apply the blocking to (should be the upstream WAN interface)." -msgstr "" - -msgid "" -"Takes precedence over blocked ranges. Use to whitelist your upstream network " -"if you're behind a double NAT and the auto-detection doesn't work." -msgstr "" - -msgid "" -"This function blocks packets with private address destinations from going " -"out onto the internet as per BCP 38. For IPv6, only source specific default routes are " -"installed, so no BCP38 firewall routes are needed." -msgstr "" diff --git a/package/luci/applications/luci-app-bcp38/po/zh-cn/bcp38.po b/package/luci/applications/luci-app-bcp38/po/zh-cn/bcp38.po deleted file mode 100644 index 45eff986b2..0000000000 --- a/package/luci/applications/luci-app-bcp38/po/zh-cn/bcp38.po +++ /dev/null @@ -1,52 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Allowed IP ranges" -msgstr "允许的 IP 范围" - -msgid "" -"Attempt to automatically detect if the upstream IP will be blocked by the " -"configuration, and add an exception if it will. If this does not work " -"correctly, you can add exceptions manually below." -msgstr "" -"自动检测上游 IP 是否会被当前配置所阻止,当检测到会被阻止时将会添加例外。如果" -"自动检测无法正常工作,您可以在下面手动添加例外。" - -msgid "Auto-detect upstream IP" -msgstr "自动检测上游 IP" - -msgid "BCP38" -msgstr "BCP38" - -msgid "BCP38 config" -msgstr "BCP38 配置" - -msgid "Blocked IP ranges" -msgstr "阻止的 IP 范围" - -msgid "Enable" -msgstr "启用" - -msgid "Interface name" -msgstr "接口名称" - -msgid "" -"Interface to apply the blocking to (should be the upstream WAN interface)." -msgstr "应用“阻止规则”的接口(应当为上游 WAN 接口)。" - -msgid "" -"Takes precedence over blocked ranges. Use to whitelist your upstream network " -"if you're behind a double NAT and the auto-detection doesn't work." -msgstr "" -"这里的规则优先于阻止规则被使用。如果您在双重 NAT 之后并且自动检测功能不起作" -"用,请在这里添加您上游网络的白名单。" - -msgid "" -"This function blocks packets with private address destinations from going " -"out onto the internet as per BCP 38. For IPv6, only source specific default routes are " -"installed, so no BCP38 firewall routes are needed." -msgstr "" -"此功能可以阻止具有私有目标地址的数据包通过 BCP 38 发送到互联网上。对于 IPv6,仅安装源特定的默认路由,因" -"此不需要 BCP38 防火墙路由。" diff --git a/package/luci/applications/luci-app-bcp38/po/zh-tw/bcp38.po b/package/luci/applications/luci-app-bcp38/po/zh-tw/bcp38.po deleted file mode 100644 index 7900cb37f0..0000000000 --- a/package/luci/applications/luci-app-bcp38/po/zh-tw/bcp38.po +++ /dev/null @@ -1,52 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Allowed IP ranges" -msgstr "允許的 IP 範圍" - -msgid "" -"Attempt to automatically detect if the upstream IP will be blocked by the " -"configuration, and add an exception if it will. If this does not work " -"correctly, you can add exceptions manually below." -msgstr "" -"自動檢測上游 IP 是否會被當前配置所阻止,當檢測到會被阻止時將會新增例外。如果" -"自動檢測無法正常工作,您可以在下面手動新增例外。" - -msgid "Auto-detect upstream IP" -msgstr "自動檢測上游 IP" - -msgid "BCP38" -msgstr "BCP38" - -msgid "BCP38 config" -msgstr "BCP38 配置" - -msgid "Blocked IP ranges" -msgstr "阻止的 IP 範圍" - -msgid "Enable" -msgstr "啟用" - -msgid "Interface name" -msgstr "介面名稱" - -msgid "" -"Interface to apply the blocking to (should be the upstream WAN interface)." -msgstr "應用“阻止規則”的介面(應當為上游 WAN 介面)。" - -msgid "" -"Takes precedence over blocked ranges. Use to whitelist your upstream network " -"if you're behind a double NAT and the auto-detection doesn't work." -msgstr "" -"這裡的規則優先於阻止規則被使用。如果您在雙重 NAT 之後並且自動檢測功能不起作" -"用,請在這裡新增您上游網路的白名單。" - -msgid "" -"This function blocks packets with private address destinations from going " -"out onto the internet as per BCP 38. For IPv6, only source specific default routes are " -"installed, so no BCP38 firewall routes are needed." -msgstr "" -"此功能可以阻止具有私有目標位址的資料包通過 BCP 38 傳送到網際網路上。對於 IPv6,僅安裝源特定的預設路由,因" -"此不需要 BCP38 防火牆路由。" diff --git a/package/luci/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38 b/package/luci/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38 deleted file mode 100755 index c204236e37..0000000000 --- a/package/luci/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38 +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@bcp38[-1] - add ucitrack bcp38 - add_list ucitrack.@bcp38[0].affects=firewall - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-cjdns/Makefile b/package/luci/applications/luci-app-cjdns/Makefile deleted file mode 100644 index 793b4ecd4f..0000000000 --- a/package/luci/applications/luci-app-cjdns/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# Copyright (C) 2014,2015 Hyperboria.net -# -# You may redistribute this program and/or modify it under the terms of -# the GNU General Public License as published by the Free Software Foundation, -# either version 3 of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=luci-app-cjdns -PKG_VERSION:=1.3 -PKG_RELEASE:=5 - -PKG_LICENSE:=GPL-3.0 - -include $(INCLUDE_DIR)/package.mk - -define Package/luci-app-cjdns - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=3. Applications - TITLE:=Encrypted near-zero-conf mesh routing protocol - URL:=https://github.com/hyperboria/cjdns - MAINTAINER:=Lars Gierth - DEPENDS:=+cjdns +luci-base -endef - -define Package/luci-app-cjdns/description - This package allows you to configure and inspect cjdns networking using LuCI. - - Cjdns implements an encrypted IPv6 network using public-key cryptography - for address allocation and a distributed hash table for routing. - This provides near-zero-configuration networking, and prevents many - of the security and scalability issues that plague existing networks. -endef - -define Build/Compile -endef - -define Package/luci-app-cjdns/install - $(INSTALL_DIR) $(1)/usr/lib/lua/luci - $(CP) ./luasrc/* $(1)/usr/lib/lua/luci -endef - -$(eval $(call BuildPackage,luci-app-cjdns)) diff --git a/package/luci/applications/luci-app-cjdns/luasrc/controller/cjdns.lua b/package/luci/applications/luci-app-cjdns/luasrc/controller/cjdns.lua deleted file mode 100644 index 63644cbad9..0000000000 --- a/package/luci/applications/luci-app-cjdns/luasrc/controller/cjdns.lua +++ /dev/null @@ -1,105 +0,0 @@ -module("luci.controller.cjdns", package.seeall) - -cjdns = require "cjdns/init" -dkjson = require "dkjson" - -function index() - if not nixio.fs.access("/etc/config/cjdns") then - return - end - - entry({"admin", "services", "cjdns"}, - cbi("cjdns/overview"), _("cjdns")).dependent = true - - entry({"admin", "services", "cjdns", "overview"}, - cbi("cjdns/overview"), _("Overview"), 1).leaf = false - - entry({"admin", "services", "cjdns", "peering"}, - cbi("cjdns/peering"), _("Peers"), 2).leaf = false - - entry({"admin", "services", "cjdns", "iptunnel"}, - cbi("cjdns/iptunnel"), _("IP Tunnel"), 3).leaf = false - - entry({"admin", "services", "cjdns", "settings"}, - cbi("cjdns/settings"), _("Settings"), 4).leaf = false - - entry({"admin", "services", "cjdns", "cjdrouteconf"}, - cbi("cjdns/cjdrouteconf"), _("cjdroute.conf"), 5).leaf = false - - entry({"admin", "services", "cjdns", "peers"}, call("act_peers")).leaf = true - entry({"admin", "services", "cjdns", "ping"}, call("act_ping")).leaf = true -end - -function act_peers() - require("cjdns/uci") - admin = cjdns.uci.makeInterface() - - local page = 0 - local peers = {} - - while page do - local response, err = admin:auth({ - q = "InterfaceController_peerStats", - page = page - }) - - if err or response.error then - luci.http.status(502, "Bad Gateway") - luci.http.prepare_content("application/json") - luci.http.write_json({ err = err, response = response }) - return - end - - for i,peer in pairs(response.peers) do - peer.ipv6 = publictoip6(peer.publicKey) - if peer.user == nil then - peer.user = '' - uci.cursor():foreach("cjdns", "udp_peer", function(udp_peer) - if peer.publicKey == udp_peer.public_key then - peer.user = udp_peer.user - end - end) - end - peers[#peers + 1] = peer - end - - if response.more then - page = page + 1 - else - page = nil - end - end - - luci.http.status(200, "OK") - luci.http.prepare_content("application/json") - luci.http.write_json(peers) -end - -function act_ping() - require("cjdns/uci") - admin = cjdns.uci.makeInterface() - - local response, err = admin:auth({ - q = "SwitchPinger_ping", - path = luci.http.formvalue("label"), - timeout = tonumber(luci.http.formvalue("timeout")) - }) - - if err or response.error then - luci.http.status(502, "Bad Gateway") - luci.http.prepare_content("application/json") - luci.http.write_json({ err = err, response = response }) - return - end - - luci.http.status(200, "OK") - luci.http.prepare_content("application/json") - luci.http.write_json(response) -end - -function publictoip6(publicKey) - local process = io.popen("/usr/bin/publictoip6 " .. publicKey, "r") - local ipv6 = process:read() - process:close() - return ipv6 -end diff --git a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/cjdrouteconf.lua b/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/cjdrouteconf.lua deleted file mode 100644 index 00e9ae0037..0000000000 --- a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/cjdrouteconf.lua +++ /dev/null @@ -1,32 +0,0 @@ -m = Map("cjdns", translate("cjdns"), - translate("Implements an encrypted IPv6 network using public-key \ - cryptography for address allocation and a distributed hash table for \ - routing. This provides near-zero-configuration networking, and prevents \ - many of the security and scalability issues that plague existing \ - networks.")) - -dkjson = require("dkjson") -cjdns = require("cjdns") -require("cjdns/uci") - -local f = SimpleForm("cjdrouteconf", translate("Edit cjdroute.conf"), - translate("JSON interface to what's /etc/cjdroute.conf on other systems. \ - Will be parsed and written to UCI by cjdrouteconf set.")) - -local o = f:field(Value, "_cjdrouteconf") -o.template = "cbi/tvalue" -o.rows = 25 - -function o.cfgvalue(self, section) - return dkjson.encode(cjdns.uci.get(), { indent = true }) -end - -function o.write(self, section, value) - local obj, pos, err = dkjson.decode(value, 1, nil) - - if obj then - cjdns.uci.set(obj) - end -end - -return f diff --git a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/iptunnel.lua b/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/iptunnel.lua deleted file mode 100644 index 02b37dde5a..0000000000 --- a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/iptunnel.lua +++ /dev/null @@ -1,46 +0,0 @@ -uci = require "luci.model.uci" -cursor = uci:cursor_state() - -m = Map("cjdns", translate("cjdns"), - translate("Implements an encrypted IPv6 network using public-key \ - cryptography for address allocation and a distributed hash table for \ - routing. This provides near-zero-configuration networking, and prevents \ - many of the security and scalability issues that plague existing \ - networks.")) - -m.on_after_commit = function(self) - os.execute("/etc/init.d/cjdns restart") -end - --- Outgoing -outgoing = m:section(TypedSection, "iptunnel_outgoing", translate("Outgoing IP Tunnel Connections"), - translate("Enter the public keys of the nodes that will provide Internet access.")) -outgoing.anonymous = true -outgoing.addremove = true -outgoing.template = "cbi/tblsection" - -outgoing:option(Value, "public_key", translate("Public Key")).size = 55 - --- Allowed -allowed = m:section(TypedSection, "iptunnel_allowed", translate("Allowed IP Tunnel Connections"), - translate("Enter the public key of the node you will provide Internet access to, along with the \ - IPv4 and/or IPv6 address you will assign them.")) -allowed.anonymous = true -allowed.addremove = true - -public_key = allowed:option(Value, "public_key", translate("Public Key")) -public_key.template = "cjdns/value" -public_key.size = 55 - -ipv4 = allowed:option(Value, "ipv4", translate("IPv4")) -ipv4.template = "cjdns/value" -ipv4.datatype = 'ipaddr' -ipv4.size = 55 - -ipv6 = allowed:option(Value, "ipv6", translate("IPv6"), - translate("IPv6 addresses should be entered without brackets here, e.g. 2001:123:ab::10.")) -ipv6.template = "cjdns/value" -ipv6.datatype = 'ip6addr' -ipv6.size = 55 - -return m diff --git a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/overview.lua b/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/overview.lua deleted file mode 100644 index efa3a03cc7..0000000000 --- a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/overview.lua +++ /dev/null @@ -1,10 +0,0 @@ -m = Map("cjdns", translate("cjdns"), - translate("Implements an encrypted IPv6 network using public-key \ - cryptography for address allocation and a distributed hash table for \ - routing. This provides near-zero-configuration networking, and prevents \ - many of the security and scalability issues that plague existing \ - networks.")) - -m:section(SimpleSection).template = "cjdns/status" - -return m diff --git a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/peering.lua b/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/peering.lua deleted file mode 100644 index 2b1fc1be95..0000000000 --- a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/peering.lua +++ /dev/null @@ -1,73 +0,0 @@ -uci = require "luci.model.uci" -cursor = uci:cursor_state() - -cjdns = require("cjdns") -require("cjdns/uci") - -m = Map("cjdns", translate("cjdns"), - translate("Implements an encrypted IPv6 network using public-key \ - cryptography for address allocation and a distributed hash table for \ - routing. This provides near-zero-configuration networking, and prevents \ - many of the security and scalability issues that plague existing \ - networks.")) - -m.on_after_commit = function(self) - os.execute("/etc/init.d/cjdns restart") -end - --- Authorized Passwords -passwords = m:section(TypedSection, "password", translate("Authorized Passwords"), - translate("Anyone offering one of the these passwords will be allowed to peer with you on the existing UDP and Ethernet interfaces.")) -passwords.anonymous = true -passwords.addremove = true -passwords.template = "cbi/tblsection" - -passwords:option(Value, "user", translate("User/Name"), - translate("Must be unique.") -).default = "user-" .. cjdns.uci.random_string(6) -passwords:option(Value, "contact", translate("Contact"), translate("Optional, for out-of-band communication.")) -passwords:option(Value, "password", translate("Password"), - translate("Hand out to your peer, in accordance with the peering best practices of the network.") -).default = cjdns.uci.random_string(32) - --- UDP Peers -udp_peers = m:section(TypedSection, "udp_peer", translate("Outgoing UDP Peers"), - translate("For peering via public IP networks, the peer handed you their Public Key and IP address/port along with a password. IPv6 addresses should be entered with square brackets, like so: [2001::1].")) -udp_peers.anonymous = true -udp_peers.addremove = true -udp_peers.template = "cbi/tblsection" -udp_peers:option(Value, "user", translate("User/Name")).datatype = "string" - -udp_interface = udp_peers:option(Value, "interface", translate("UDP interface")) -local index = 1 -for i,section in pairs(cursor:get_all("cjdns")) do - if section[".type"] == "udp_interface" then - udp_interface:value(index, section.address .. ":" .. section.port) - end -end -udp_interface.default = 1 -udp_peers:option(Value, "address", translate("IP address")) -udp_peers:option(Value, "port", translate("Port")).datatype = "portrange" -udp_peers:option(Value, "public_key", translate("Public key")) -udp_peers:option(Value, "password", translate("Password")) - --- Ethernet Peers -eth_peers = m:section(TypedSection, "eth_peer", translate("Outgoing Ethernet Peers"), - translate("For peering via local Ethernet networks, the peer handed you their Public Key and MAC address along with a password.")) -eth_peers.anonymous = true -eth_peers.addremove = true -eth_peers.template = "cbi/tblsection" - -eth_interface = eth_peers:option(Value, "interface", translate("Ethernet interface")) -local index = 1 -for i,section in pairs(cursor:get_all("cjdns")) do - if section[".type"] == "eth_interface" then - eth_interface:value(index, section.bind) - end -end -eth_interface.default = 1 -eth_peers:option(Value, "address", translate("MAC address")).datatype = "macaddr" -eth_peers:option(Value, "public_key", translate("Public key")) -eth_peers:option(Value, "password", translate("Password")) - -return m diff --git a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/settings.lua b/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/settings.lua deleted file mode 100644 index d1889154ba..0000000000 --- a/package/luci/applications/luci-app-cjdns/luasrc/model/cbi/cjdns/settings.lua +++ /dev/null @@ -1,67 +0,0 @@ -m = Map("cjdns", translate("cjdns"), - translate("Implements an encrypted IPv6 network using public-key \ - cryptography for address allocation and a distributed hash table for \ - routing. This provides near-zero-configuration networking, and prevents \ - many of the security and scalability issues that plague existing \ - networks.")) - -m.on_after_commit = function(self) - os.execute("/etc/init.d/cjdns restart") -end - -s = m:section(NamedSection, "cjdns", nil, translate("Settings")) -s.addremove = false - --- Identity -s:tab("identity", translate("Identity")) -node6 = s:taboption("identity", Value, "ipv6", translate("IPv6 address"), - translate("This node's IPv6 address within the cjdns network.")) -node6.datatype = "ip6addr" -pbkey = s:taboption("identity", Value, "public_key", translate("Public key"), - translate("Used for packet encryption and authentication.")) -pbkey.datatype = "string" -prkey = s:taboption("identity", Value, "private_key", translate("Private key"), - translate("Keep this private. When compromised, generate a new keypair and IPv6.")) -prkey.datatype = "string" - --- Admin Interface -s:tab("admin", translate("Admin API"), translate("The Admin API can be used by other applications or services to configure and inspect cjdns' routing and peering.

Documentation: admin/README.md")) -aip = s:taboption("admin", Value, "admin_address", translate("IP Address"), - translate("IPv6 addresses should be entered like so: [2001::1].")) -apt = s:taboption("admin", Value, "admin_port", translate("Port")) -apt.datatype = "port" -apw = s:taboption("admin", Value, "admin_password", translate("Password")) -apw.datatype = "string" - --- Security -s:tab("security", translate("Security"), translate("Functionality related to hardening the cjdroute process.")) -s:taboption("security", Flag, "seccomp", translate("SecComp sandboxing")) - --- UDP Interfaces -udp_interfaces = m:section(TypedSection, "udp_interface", translate("UDP Interfaces"), - translate("These interfaces allow peering via public IP networks, such as the Internet, or many community-operated wireless networks. IPv6 addresses should be entered with square brackets, like so: [2001::1].")) -udp_interfaces.anonymous = true -udp_interfaces.addremove = true -udp_interfaces.template = "cbi/tblsection" - -udp_address = udp_interfaces:option(Value, "address", translate("IP Address")) -udp_address.placeholder = "0.0.0.0" -udp_interfaces:option(Value, "port", translate("Port")).datatype = "portrange" - --- Ethernet Interfaces -eth_interfaces = m:section(TypedSection, "eth_interface", translate("Ethernet Interfaces"), - translate("These interfaces allow peering via local Ethernet networks, such as home or office networks, or phone tethering. If an interface name is set to \"all\" each available device will be used.")) -eth_interfaces.anonymous = true -eth_interfaces.addremove = true -eth_interfaces.template = "cbi/tblsection" - -eth_bind = eth_interfaces:option(Value, "bind", translate("Network Interface")) -eth_bind.placeholder = "br-lan" -eth_beacon = eth_interfaces:option(Value, "beacon", translate("Beacon Mode")) -eth_beacon:value(0, translate("0 -- Disabled")) -eth_beacon:value(1, translate("1 -- Accept beacons")) -eth_beacon:value(2, translate("2 -- Accept and send beacons")) -eth_beacon.default = 2 -eth_beacon.datatype = "integer(range(0,2))" - -return m diff --git a/package/luci/applications/luci-app-cjdns/luasrc/view/admin_status/index/cjdns.htm b/package/luci/applications/luci-app-cjdns/luasrc/view/admin_status/index/cjdns.htm deleted file mode 100644 index 58c3843d37..0000000000 --- a/package/luci/applications/luci-app-cjdns/luasrc/view/admin_status/index/cjdns.htm +++ /dev/null @@ -1 +0,0 @@ -<%+cjdns/status%> diff --git a/package/luci/applications/luci-app-cjdns/luasrc/view/cjdns/status.htm b/package/luci/applications/luci-app-cjdns/luasrc/view/cjdns/status.htm deleted file mode 100644 index 9d43e85a8d..0000000000 --- a/package/luci/applications/luci-app-cjdns/luasrc/view/cjdns/status.htm +++ /dev/null @@ -1,116 +0,0 @@ - - - - -
- Active cjdns peers - - - - - - - - - - - - -
User/NameIPv6StatusVersionRx / TxLatency
Querying Admin API
-
diff --git a/package/luci/applications/luci-app-cjdns/luasrc/view/cjdns/value.htm b/package/luci/applications/luci-app-cjdns/luasrc/view/cjdns/value.htm deleted file mode 100644 index d1e54bb3cc..0000000000 --- a/package/luci/applications/luci-app-cjdns/luasrc/view/cjdns/value.htm +++ /dev/null @@ -1,35 +0,0 @@ -<%+cbi/valueheader%> - style="width: auto" /> - <% if self.password then %><% end %> - <% if #self.keylist > 0 or self.datatype then -%> - - <% end -%> -<%+cbi/valuefooter%> diff --git a/package/luci/applications/luci-app-clamav/Makefile b/package/luci/applications/luci-app-clamav/Makefile deleted file mode 100644 index f91e692af8..0000000000 --- a/package/luci/applications/luci-app-clamav/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2015 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=ClamAV LuCI interface -LUCI_DEPENDS:=+luci-mod-admin-full +clamav - -PKG_MAINTAINER:=Marko Ratkaj -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-clamav/luasrc/controller/clamav.lua b/package/luci/applications/luci-app-clamav/luasrc/controller/clamav.lua deleted file mode 100644 index 02f3bfc4b1..0000000000 --- a/package/luci/applications/luci-app-clamav/luasrc/controller/clamav.lua +++ /dev/null @@ -1,22 +0,0 @@ ---[[ - -LuCI ClamAV module - -Copyright (C) 2015, Itus Networks, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Author: Marko Ratkaj - Luka Perkov - -]]-- - -module("luci.controller.clamav", package.seeall) - -function index() - entry({"admin", "services", "clamav"}, cbi("clamav"), _("ClamAV")) -end diff --git a/package/luci/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua b/package/luci/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua deleted file mode 100644 index ff98139d4a..0000000000 --- a/package/luci/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua +++ /dev/null @@ -1,178 +0,0 @@ ---[[ - -LuCI ClamAV module - -Copyright (C) 2015, Itus Networks, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Author: Marko Ratkaj - Luka Perkov - -]]-- - -local fs = require "nixio.fs" -local sys = require "luci.sys" -require "ubus" - -m = Map("clamav", translate("ClamAV")) -m.on_after_commit = function() luci.sys.call("/etc/init.d/clamav restart") end - -s = m:section(TypedSection, "clamav") -s.anonymous = true -s.addremove = false - -s:tab("tab_advanced", translate("Settings")) -s:tab("tab_logs", translate("Log")) - ---------------- Settings -------------- - -LogFileMaxSize = s:taboption("tab_advanced", Value, "LogFileMaxSize", translate("Max size of log file")) -LogFileMaxSize:value("512K", translate("512K")) -LogFileMaxSize:value("1M", translate("1M")) -LogFileMaxSize:value("2M", translate("2M")) -LogFileMaxSize.default = "1M" - -LogTime = s:taboption("tab_advanced", ListValue, "LogTime", translate("Log time with each message")) -LogTime:value("no", translate("No")) -LogTime:value("yes", translate("Yes")) -LogTime.default = "no" - -LogVerbose = s:taboption("tab_advanced", ListValue, "LogVerbose", translate("Enable verbose logging")) -LogVerbose:value("no", translate("No")) -LogVerbose:value("yes", translate("Yes")) -LogVerbose.default = "no" - -ExtendedDetectionInfo = s:taboption("tab_advanced", ListValue, "ExtendedDetectionInfo", translate("Log additional infection info")) -ExtendedDetectionInfo:value("no", translate("No")) -ExtendedDetectionInfo:value("yes", translate("Yes")) -ExtendedDetectionInfo.default = "no" - -dummy3 = s:taboption("tab_advanced", DummyValue, "") -dummy4 = s:taboption("tab_advanced", DummyValue, "") - -MaxDirectoryRecursion = s:taboption("tab_advanced", Value, "MaxDirectoryRecursion", translate("Max directory scan depth")) -MaxDirectoryRecursion:value("15", translate("15")) -MaxDirectoryRecursion:value("20", translate("20")) -MaxDirectoryRecursion.default = "15" - -FollowDirectorySymlink = s:taboption("tab_advanced", ListValue, "FollowDirectorySymlink", translate("Follow directory symlinks")) -FollowDirectorySymlink:value("no", translate("No")) -FollowDirectorySymlink:value("yes", translate("Yes")) -FollowDirectorySymlink.default = "no" - -FollowFileSymlinks = s:taboption("tab_advanced", ListValue, "FollowFileSymlinks", translate("Follow file symlinks")) -FollowFileSymlinks:value("no", translate("No")) -FollowFileSymlinks:value("yes", translate("Yes")) -FollowFileSymlinks.default = "no" - -DetectPUA = s:taboption("tab_advanced", ListValue, "DetectPUA", translate("Detect possibly unwanted apps")) -DetectPUA:value("no", translate("No")) -DetectPUA:value("yes", translate("Yes")) -DetectPUA.default = "no" - -ScanPE = s:taboption("tab_advanced", ListValue, "ScanPE", translate("Scan portable executables")) -ScanPE:value("no", translate("No")) -ScanPE:value("yes", translate("Yes")) -ScanPE.default = "yes" - -ScanELF = s:taboption("tab_advanced", ListValue, "ScanELF", translate("Scan ELF files")) -ScanELF:value("no", translate("No")) -ScanELF:value("yes", translate("Yes")) -ScanELF.default = "yes" - -DetectBrokenExecutables = s:taboption("tab_advanced", ListValue, "DetectBrokenExecutables", translate("Detect broken executables")) -DetectBrokenExecutables:value("no", translate("No")) -DetectBrokenExecutables:value("yes", translate("Yes")) -DetectBrokenExecutables.default = "no" - -ScanOLE2 = s:taboption("tab_advanced", ListValue, "ScanOLE2", translate("Scan MS Office and .msi files")) -ScanOLE2:value("no", translate("No")) -ScanOLE2:value("yes", translate("Yes")) -ScanOLE2.default = "yes" - -ScanPDF = s:taboption("tab_advanced", ListValue, "ScanPDF", translate("Scan pdf files")) -ScanPDF:value("no", translate("No")) -ScanPDF:value("yes", translate("Yes")) -ScanPDF.default = "yes" - -ScanSWF = s:taboption("tab_advanced", ListValue, "ScanSWF", translate("Scan swf files")) -ScanSWF:value("no", translate("No")) -ScanSWF:value("yes", translate("Yes")) -ScanSWF.default = "yes" - -ScanMail = s:taboption("tab_advanced", ListValue, "ScanMail", translate("Scan emails")) -ScanMail:value("no", translate("No")) -ScanMail:value("yes", translate("Yes")) -ScanMail.default = "yes" - -ScanPartialMessages = s:taboption("tab_advanced", ListValue, "ScanPartialMessages", translate("Scan RFC1341 messages split over many emails")) -ScanPartialMessages:value("no", translate("No")) -ScanPartialMessages:value("yes", translate("Yes")) -ScanPartialMessages.default = "no" - -ScanArchive = s:taboption("tab_advanced", ListValue, "ScanArchive", translate("Scan archives")) -ScanArchive:value("no", translate("No")) -ScanArchive:value("yes", translate("Yes")) -ScanArchive.default = "yes" - -ArchiveBlockEncrypted = s:taboption("tab_advanced", ListValue, "ArchiveBlockEncrypted", translate("Block encrypted archives")) -ArchiveBlockEncrypted:value("no", translate("No")) -ArchiveBlockEncrypted:value("yes", translate("Yes")) -ArchiveBlockEncrypted.default = "no" - -dummy5 = s:taboption("tab_advanced", DummyValue, "") -dummy6 = s:taboption("tab_advanced", DummyValue, "") - -StreamMinPort = s:taboption("tab_advanced", Value, "StreamMinPort", translate("Port range, lowest port")) -StreamMinPort.datatype = "portrange" -StreamMinPort:value("1024",translate("1024")) -StreamMinPort.default = "1024" - -StreamMaxPort = s:taboption("tab_advanced", Value, "StreamMaxPort", translate("Port range, highest port")) -StreamMaxPort.datatype = "portrange" -StreamMaxPort:value("2048",translate("2048")) -StreamMaxPort.default = "2048" - -MaxThreads = s:taboption("tab_advanced", Value, "MaxThreads", translate("Max number of threads")) -MaxThreads.datatype = "and(uinteger,min(1))" -MaxThreads:value("10",translate("10")) -MaxThreads:value("20",translate("20")) -MaxThreads.default = "10" - -SelfCheck = s:taboption("tab_advanced", Value, "SelfCheck", translate("Database check every N sec")) -SelfCheck.datatype = "and(uinteger,min(1))" -SelfCheck:value("600",translate("600")) -SelfCheck.default = "600" - -MaxFileSize = s:taboption("tab_advanced", Value, "MaxFileSize", translate("Max size of scanned file")) -MaxFileSize.datatype = "string" -MaxFileSize:value("150M",translate("150M")) -MaxFileSize:value("50M",translate("50M")) -MaxFileSize.default = "150M" - ------------------- Log -------------------- - -clamav_logfile = s:taboption("tab_logs", TextValue, "lines", "") -clamav_logfile.wrap = "off" -clamav_logfile.rows = 25 -clamav_logfile.rmempty = true - -function clamav_logfile.cfgvalue() - local uci = require "luci.model.uci".cursor_state() - local file = "/tmp/clamd.log" - if file then - return fs.readfile(file) or "" - else - return "" - end -end - -function clamav_logfile.write() -end - -return m diff --git a/package/luci/applications/luci-app-clamav/po/ja/clamav.po b/package/luci/applications/luci-app-clamav/po/ja/clamav.po deleted file mode 100644 index c54c7b18aa..0000000000 --- a/package/luci/applications/luci-app-clamav/po/ja/clamav.po +++ /dev/null @@ -1,130 +0,0 @@ -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.12\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: ja\n" - -msgid "10" -msgstr "10" - -msgid "1024" -msgstr "1024" - -msgid "15" -msgstr "15" - -msgid "150M" -msgstr "150M" - -msgid "1M" -msgstr "1M" - -msgid "20" -msgstr "20" - -msgid "2048" -msgstr "2048" - -msgid "2M" -msgstr "2M" - -msgid "50M" -msgstr "50M" - -msgid "512K" -msgstr "512K" - -msgid "600" -msgstr "600" - -msgid "Block encrypted archives" -msgstr "暗号化されたアーカイブのブロック" - -msgid "ClamAV" -msgstr "ClamAV" - -msgid "Database check every N sec" -msgstr "データベース チェック間隔(秒)" - -msgid "Detect broken executables" -msgstr "破損した実行ファイルの検出" - -msgid "Detect possibly unwanted apps" -msgstr "不必要と思われるアプリケーションの検出" - -msgid "Enable verbose logging" -msgstr "詳細なログの有効化" - -msgid "Follow directory symlinks" -msgstr "ディレクトリ シンボリックリンクに従う" - -msgid "Follow file symlinks" -msgstr "ファイル シンボリックリンクに従う" - -msgid "Log" -msgstr "ログ" - -msgid "Log additional infection info" -msgstr "追加の感染情報ログ" - -msgid "Log time with each message" -msgstr "ログ メッセージ毎に時刻を付加" - -msgid "Max directory scan depth" -msgstr "ディレクトリ スキャンの最大深度" - -msgid "Max number of threads" -msgstr "スレッドの最大数" - -msgid "Max size of log file" -msgstr "ログの最大サイズ" - -msgid "Max size of scanned file" -msgstr "" - -msgid "No" -msgstr "いいえ" - -msgid "Port range, highest port" -msgstr "ポート範囲(上限)" - -msgid "Port range, lowest port" -msgstr "ポート範囲(下限)" - -msgid "Scan ELF files" -msgstr "ELF ファイルのスキャン" - -msgid "Scan MS Office and .msi files" -msgstr "MS Office と .msi ファイルのスキャン" - -msgid "Scan RFC1341 messages split over many emails" -msgstr "" - -msgid "Scan archives" -msgstr "アーカイブのスキャン" - -msgid "Scan emails" -msgstr "E-mailのスキャン" - -msgid "Scan pdf files" -msgstr "PDF ファイルのスキャン" - -msgid "Scan portable executables" -msgstr "ポータブル 実行ファイルのスキャン" - -msgid "Scan swf files" -msgstr "SWF ファイルのスキャン" - -msgid "Settings" -msgstr "設定" - -msgid "Yes" -msgstr "はい" diff --git a/package/luci/applications/luci-app-clamav/po/sv/clamav.po b/package/luci/applications/luci-app-clamav/po/sv/clamav.po deleted file mode 100644 index a6c98377df..0000000000 --- a/package/luci/applications/luci-app-clamav/po/sv/clamav.po +++ /dev/null @@ -1,119 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "10" -msgstr "10" - -msgid "1024" -msgstr "1024" - -msgid "15" -msgstr "15" - -msgid "150M" -msgstr "150M" - -msgid "1M" -msgstr "1M" - -msgid "20" -msgstr "20" - -msgid "2048" -msgstr "2048" - -msgid "2M" -msgstr "2M" - -msgid "50M" -msgstr "50M" - -msgid "512K" -msgstr "512K" - -msgid "600" -msgstr "600" - -msgid "Block encrypted archives" -msgstr "Blockera krypterade arkiv" - -msgid "ClamAV" -msgstr "ClamAV" - -msgid "Database check every N sec" -msgstr "Kontrollera databasen var N sek" - -msgid "Detect broken executables" -msgstr "Upptäck trasiga exekverbara filer" - -msgid "Detect possibly unwanted apps" -msgstr "Upptäck möjliga oönskade appar" - -msgid "Enable verbose logging" -msgstr "Aktivera utförlig loggning" - -msgid "Follow directory symlinks" -msgstr "Följ mappens symbollänkar" - -msgid "Follow file symlinks" -msgstr "Följ symbollänkar för fil" - -msgid "Log" -msgstr "Logg" - -msgid "Log additional infection info" -msgstr "Logga ytterligare information om infektionen" - -msgid "Log time with each message" -msgstr "Loggtid med varje meddelande" - -msgid "Max directory scan depth" -msgstr "" - -msgid "Max number of threads" -msgstr "Maximalt antalet trådar" - -msgid "Max size of log file" -msgstr "Högsta storlek av loggfilen" - -msgid "Max size of scanned file" -msgstr "Högsta storlek av skannad fil" - -msgid "No" -msgstr "Nej" - -msgid "Port range, highest port" -msgstr "Räckvidd för port, högsta port" - -msgid "Port range, lowest port" -msgstr "Räckvidd för port, lägsta port" - -msgid "Scan ELF files" -msgstr "Sök igenom ELF-filer" - -msgid "Scan MS Office and .msi files" -msgstr "Sök igen MS Office och .msi-filer" - -msgid "Scan RFC1341 messages split over many emails" -msgstr "Sök igen RFC1341-meddelanden uppdelade över många e-postmeddelanden" - -msgid "Scan archives" -msgstr "Sök igenom arkiven" - -msgid "Scan emails" -msgstr "Sök igenom e-postmeddelanden" - -msgid "Scan pdf files" -msgstr "Sök igenom pdf-filer" - -msgid "Scan portable executables" -msgstr "Sök igenom bärbara exekverbara filer" - -msgid "Scan swf files" -msgstr "Sök igenom swf-filer" - -msgid "Settings" -msgstr "Inställningar" - -msgid "Yes" -msgstr "Ja" diff --git a/package/luci/applications/luci-app-clamav/po/templates/clamav.pot b/package/luci/applications/luci-app-clamav/po/templates/clamav.pot deleted file mode 100644 index 768f73093a..0000000000 --- a/package/luci/applications/luci-app-clamav/po/templates/clamav.pot +++ /dev/null @@ -1,119 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "10" -msgstr "" - -msgid "1024" -msgstr "" - -msgid "15" -msgstr "" - -msgid "150M" -msgstr "" - -msgid "1M" -msgstr "" - -msgid "20" -msgstr "" - -msgid "2048" -msgstr "" - -msgid "2M" -msgstr "" - -msgid "50M" -msgstr "" - -msgid "512K" -msgstr "" - -msgid "600" -msgstr "" - -msgid "Block encrypted archives" -msgstr "" - -msgid "ClamAV" -msgstr "" - -msgid "Database check every N sec" -msgstr "" - -msgid "Detect broken executables" -msgstr "" - -msgid "Detect possibly unwanted apps" -msgstr "" - -msgid "Enable verbose logging" -msgstr "" - -msgid "Follow directory symlinks" -msgstr "" - -msgid "Follow file symlinks" -msgstr "" - -msgid "Log" -msgstr "" - -msgid "Log additional infection info" -msgstr "" - -msgid "Log time with each message" -msgstr "" - -msgid "Max directory scan depth" -msgstr "" - -msgid "Max number of threads" -msgstr "" - -msgid "Max size of log file" -msgstr "" - -msgid "Max size of scanned file" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Port range, highest port" -msgstr "" - -msgid "Port range, lowest port" -msgstr "" - -msgid "Scan ELF files" -msgstr "" - -msgid "Scan MS Office and .msi files" -msgstr "" - -msgid "Scan RFC1341 messages split over many emails" -msgstr "" - -msgid "Scan archives" -msgstr "" - -msgid "Scan emails" -msgstr "" - -msgid "Scan pdf files" -msgstr "" - -msgid "Scan portable executables" -msgstr "" - -msgid "Scan swf files" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Yes" -msgstr "" diff --git a/package/luci/applications/luci-app-clamav/po/zh-cn/clamav.po b/package/luci/applications/luci-app-clamav/po/zh-cn/clamav.po deleted file mode 100644 index 6a2c5dfd54..0000000000 --- a/package/luci/applications/luci-app-clamav/po/zh-cn/clamav.po +++ /dev/null @@ -1,131 +0,0 @@ -# liushuyu , 2017. -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-04-15 21:37-0600\n" -"Language-Team: Chinese \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.1\n" -"Last-Translator: liushuyu \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: zh_CN\n" - -msgid "10" -msgstr "10" - -msgid "1024" -msgstr "1024" - -msgid "15" -msgstr "15" - -msgid "150M" -msgstr "150M" - -msgid "1M" -msgstr "1M" - -msgid "20" -msgstr "20" - -msgid "2048" -msgstr "2048" - -msgid "2M" -msgstr "2M" - -msgid "50M" -msgstr "50M" - -msgid "512K" -msgstr "512K" - -msgid "600" -msgstr "600" - -msgid "Block encrypted archives" -msgstr "拦截加密的归档文件" - -msgid "ClamAV" -msgstr "ClamAV" - -msgid "Database check every N sec" -msgstr "每 N 秒检测一次数据库" - -msgid "Detect broken executables" -msgstr "检测破损的可执行文件" - -msgid "Detect possibly unwanted apps" -msgstr "检测不受欢迎的软件" - -msgid "Enable verbose logging" -msgstr "启用详细日志输出" - -msgid "Follow directory symlinks" -msgstr "跟随目录符号链接" - -msgid "Follow file symlinks" -msgstr "跟随文件符号链接" - -msgid "Log" -msgstr "日志" - -msgid "Log additional infection info" -msgstr "记录详细的感染信息" - -msgid "Log time with each message" -msgstr "记录消息时间戳" - -msgid "Max directory scan depth" -msgstr "最大扫描深度" - -msgid "Max number of threads" -msgstr "最大线程数" - -msgid "Max size of log file" -msgstr "最大日志大小" - -msgid "Max size of scanned file" -msgstr "最大可扫描的文件大小" - -msgid "No" -msgstr "否" - -msgid "Port range, highest port" -msgstr "端口范围,最大端口" - -msgid "Port range, lowest port" -msgstr "端口范围,最小端口" - -msgid "Scan ELF files" -msgstr "扫描 ELF 文件" - -msgid "Scan MS Office and .msi files" -msgstr "扫描 MS Office 文档和 .msi 安装包文件" - -msgid "Scan RFC1341 messages split over many emails" -msgstr "扫描符合 RFC1341 邮件分离规范的邮件" - -msgid "Scan archives" -msgstr "扫描归档文件" - -msgid "Scan emails" -msgstr "扫描电子邮件" - -msgid "Scan pdf files" -msgstr "扫描 PDF 文件" - -msgid "Scan portable executables" -msgstr "扫描 PE (Windows) 可执行文件" - -msgid "Scan swf files" -msgstr "扫描 SWF 文件" - -msgid "Settings" -msgstr "设置" - -msgid "Yes" -msgstr "是" diff --git a/package/luci/applications/luci-app-commands/Makefile b/package/luci/applications/luci-app-commands/Makefile deleted file mode 100644 index f41d6e2d42..0000000000 --- a/package/luci/applications/luci-app-commands/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Shell Command Module -LUCI_DEPENDS:= - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-commands/luasrc/controller/commands.lua b/package/luci/applications/luci-app-commands/luasrc/controller/commands.lua deleted file mode 100644 index ca91813b17..0000000000 --- a/package/luci/applications/luci-app-commands/luasrc/controller/commands.lua +++ /dev/null @@ -1,268 +0,0 @@ --- Copyright 2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.commands", package.seeall) - -function index() - entry({"admin", "system", "commands"}, firstchild(), _("Custom Commands"), 80) - entry({"admin", "system", "commands", "dashboard"}, template("commands"), _("Dashboard"), 1) - entry({"admin", "system", "commands", "config"}, cbi("commands"), _("Configure"), 2) - entry({"admin", "system", "commands", "run"}, call("action_run"), nil, 3).leaf = true - entry({"admin", "system", "commands", "download"}, call("action_download"), nil, 3).leaf = true - - entry({"command"}, call("action_public"), nil, 1).leaf = true -end - ---- Decode a given string into arguments following shell quoting rules ---- [[abc \def "foo\"bar" abc'def']] -> [[abc def]] [[foo"bar]] [[abcdef]] -local function parse_args(str) - local args = { } - - local function isspace(c) - if c == 9 or c == 10 or c == 11 or c == 12 or c == 13 or c == 32 then - return c - end - end - - local function isquote(c) - if c == 34 or c == 39 or c == 96 then - return c - end - end - - local function isescape(c) - if c == 92 then - return c - end - end - - local function ismeta(c) - if c == 36 or c == 92 or c == 96 then - return c - end - end - - --- Convert given table of byte values into a Lua string and append it to - --- the "args" table. Segment byte value sequence into chunks of 256 values - --- to not trip over the parameter limit for string.char() - local function putstr(bytes) - local chunks = { } - local csz = 256 - local upk = unpack - local chr = string.char - local min = math.min - local len = #bytes - local off - - for off = 1, len, csz do - chunks[#chunks+1] = chr(upk(bytes, off, min(off + csz - 1, len))) - end - - args[#args+1] = table.concat(chunks) - end - - --- Scan substring defined by the indexes [s, e] of the string "str", - --- perform unquoting and de-escaping on the fly and store the result in - --- a table of byte values which is passed to putstr() - local function unquote(s, e) - local off, esc, quote - local res = { } - - for off = s, e do - local byte = str:byte(off) - local q = isquote(byte) - local e = isescape(byte) - local m = ismeta(byte) - - if e then - esc = true - elseif esc then - if m then res[#res+1] = 92 end - res[#res+1] = byte - esc = false - elseif q and quote and q == quote then - quote = nil - elseif q and not quote then - quote = q - else - if m then res[#res+1] = 92 end - res[#res+1] = byte - end - end - - putstr(res) - end - - --- Find substring boundaries in "str". Ignore escaped or quoted - --- whitespace, pass found start- and end-index for each substring - --- to unquote() - local off, esc, start, quote - for off = 1, #str + 1 do - local byte = str:byte(off) - local q = isquote(byte) - local s = isspace(byte) or (off > #str) - local e = isescape(byte) - - if esc then - esc = false - elseif e then - esc = true - elseif q and quote and q == quote then - quote = nil - elseif q and not quote then - start = start or off - quote = q - elseif s and not quote then - if start then - unquote(start, off - 1) - start = nil - end - else - start = start or off - end - end - - --- If the "quote" is still set we encountered an unfinished string - if quote then - unquote(start, #str) - end - - return args -end - -local function parse_cmdline(cmdid, args) - local uci = require "luci.model.uci".cursor() - if uci:get("luci", cmdid) == "command" then - local cmd = uci:get_all("luci", cmdid) - local argv = parse_args(cmd.command) - local i, v - - if cmd.param == "1" and args then - for i, v in ipairs(parse_args(luci.http.urldecode(args))) do - argv[#argv+1] = v - end - end - - for i, v in ipairs(argv) do - if v:match("[^%w%.%-i/]") then - argv[i] = '"%s"' % v:gsub('"', '\\"') - end - end - - return argv - end -end - -function execute_command(callback, ...) - local fs = require "nixio.fs" - local argv = parse_cmdline(...) - if argv then - local outfile = os.tmpname() - local errfile = os.tmpname() - - local rv = os.execute(table.concat(argv, " ") .. " >%s 2>%s" %{ outfile, errfile }) - local stdout = fs.readfile(outfile, 1024 * 512) or "" - local stderr = fs.readfile(errfile, 1024 * 512) or "" - - fs.unlink(outfile) - fs.unlink(errfile) - - local binary = not not (stdout:match("[%z\1-\8\14-\31]")) - - callback({ - ok = true, - command = table.concat(argv, " "), - stdout = not binary and stdout, - stderr = stderr, - exitcode = rv, - binary = binary - }) - else - 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(...) - if argv then - local fd = io.popen(table.concat(argv, " ") .. " 2>/dev/null") - if fd then - local chunk = fd:read(4096) or "" - 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") - luci.http.prepare_content("application/octet-stream") - else - luci.http.header("Content-Disposition", "attachment; filename=%s" - % fs.basename(argv[1]):gsub("%W+", ".") .. ".txt") - luci.http.prepare_content("text/plain") - end - - while chunk do - luci.http.write(chunk) - chunk = fd:read(4096) - end - - fd:close() - else - luci.http.status(500, "Failed to execute command") - end - else - luci.http.status(404, "No such command") - 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 - 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 diff --git a/package/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua b/package/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua deleted file mode 100644 index 7794f15379..0000000000 --- a/package/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright 2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local m, s - -m = Map("luci", translate("Custom Commands"), - translate("This page allows you to configure custom shell commands which can be easily invoked from the web interface.")) - -s = m:section(TypedSection, "command", "") -s.template = "cbi/tblsection" -s.anonymous = true -s.addremove = true - - -s:option(Value, "name", translate("Description"), - translate("A short textual description of the configured command")) - -s:option(Value, "command", translate("Command"), - translate("Command line to execute")) - -s:option(Flag, "param", translate("Custom arguments"), - translate("Allow the user to provide additional command line arguments")) - -s:option(Flag, "public", translate("Public access"), - translate("Allow executing the command and downloading its output without prior authentication")) - -return m diff --git a/package/luci/applications/luci-app-commands/luasrc/view/commands.htm b/package/luci/applications/luci-app-commands/luasrc/view/commands.htm deleted file mode 100644 index f094e186d4..0000000000 --- a/package/luci/applications/luci-app-commands/luasrc/view/commands.htm +++ /dev/null @@ -1,172 +0,0 @@ -<%# - Copyright 2012 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% css = [[ - -.commandbox { - height: 12em; - width: 30%; - float: left; - height: 12em; - margin: 5px; - position: relative; -} - -.commandbox h3 { - font-size: 1.5em !important; - line-height: 2em !important; - margin: 0 !important; -} - -.commandbox input[type="text"] { - width: 50% !important; -} - -.commandbox div { - position: absolute; - left: 0; - bottom: 1.5em; -} - -]] -%> - -<%+header%> - - - - -<% - local uci = require "luci.model.uci".cursor() - local commands = { } - - uci:foreach("luci", "command", function(s) commands[#commands+1] = s end) -%> - -
"> -
-

<%:Custom Commands%>

- -
- <% local _, command; for _, command in ipairs(commands) do %> -
-

<%=pcdata(command.name)%>

-

<%:Command:%> <%=pcdata(command.command)%>

- <% if command.param == "1" then %> -

<%:Arguments:%>

- <% end %> -
- - - <% if command.public == "1" then %> - - <% end %> -
-
- <% end %> - -

- -
-
- - -
- -<%+footer%> diff --git a/package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm b/package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm deleted file mode 100644 index f20799d40f..0000000000 --- a/package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm +++ /dev/null @@ -1,50 +0,0 @@ -<%# - Copyright 2016 t123yh - 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 %> - -<% else %> - -<% end %> - -<% if stdout ~= "" then %> -

<%:Standard Output%>

-
<%= stdout %>
-<% end %> - -<% if stderr ~= "" then %> -

<%:Standard Error%>

-
<%= stderr %>
-<% end %> - - - -<%+footer%> \ No newline at end of file diff --git a/package/luci/applications/luci-app-commands/po/ca/commands.po b/package/luci/applications/luci-app-commands/po/ca/commands.po deleted file mode 100644 index 11ea8960d7..0000000000 --- a/package/luci/applications/luci-app-commands/po/ca/commands.po +++ /dev/null @@ -1,116 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-06 10:41+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "Una breva descripció textual de l'ordre configurat" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Permet la execució de l'ordre i la baixada de la seva sortida sense " -"autenticació prèvia" - -msgid "Allow the user to provide additional command line arguments" -msgstr "Permet que l'usuari proveïa paràmetres de línia de consola addicionals" - -msgid "Arguments:" -msgstr "Paràmetres:" - -msgid "Binary data not displayed, download instead." -msgstr "Els dades binaris no es mostren, descarregueu-los." - -msgid "Code:" -msgstr "Codi:" - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Línia d'ordre per executar" - -msgid "Command successful" -msgstr "L'ordre ha tingut èxit" - -msgid "Command:" -msgstr "Ordre;" - -msgid "Configure" -msgstr "Configura" - -msgid "Custom Commands" -msgstr "Ordres personalitzats" - -msgid "Custom arguments" -msgstr "Paràmetres personalitzats" - -msgid "Dashboard" -msgstr "Panell" - -msgid "Description" -msgstr "Descripció" - -msgid "Download" -msgstr "Baixa" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "L'execució de l'ordre ha fallat!" - -msgid "Link" -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." -msgstr "" -"Aquesta pàgina us permet configurar ordres de consola personalitzats que es " -"poden invocar fàcilment de la interfície web." - -msgid "Waiting for command to complete..." -msgstr "Esperant que l'ordre acabi..." - -#~ msgid "Access command with" -#~ msgstr "Accedeix l'ordre amb" diff --git a/package/luci/applications/luci-app-commands/po/cs/commands.po b/package/luci/applications/luci-app-commands/po/cs/commands.po deleted file mode 100644 index f6aa3cc44b..0000000000 --- a/package/luci/applications/luci-app-commands/po/cs/commands.po +++ /dev/null @@ -1,111 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-08-04 19:01+0200\n" -"Last-Translator: KubaCZ \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "Krátky popis nastaveného příkazu" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "Povolit vykonání příkazu a stažení výstupu bez předchozí autentizace." - -msgid "Allow the user to provide additional command line arguments" -msgstr "Povolit uživateli poskytnout dodatečné argumenty příkazového řádku" - -msgid "Arguments:" -msgstr "Argumenty:" - -msgid "Binary data not displayed, download instead." -msgstr "Binární data nezobrazena, stáhněte si je." - -msgid "Code:" -msgstr "Kód:" - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Příkazový řádek k vykonání" - -msgid "Command successful" -msgstr "Příkaz úspěšný." - -msgid "Command:" -msgstr "Příkaz:" - -msgid "Configure" -msgstr "Konfigurovat" - -msgid "Custom Commands" -msgstr "Vlastní příkazy" - -msgid "Custom arguments" -msgstr "Vlastní parametry" - -msgid "Dashboard" -msgstr "Řídicí panel" - -msgid "Description" -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!" - -msgid "Link" -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." -msgstr "" -"Tato stránka umožňuje nastavit vlastní příkazy shellu, které lze snadno " -"vyvolat z webového rozhraní." - -msgid "Waiting for command to complete..." -msgstr "Čekejte na dokončení příkazu..." diff --git a/package/luci/applications/luci-app-commands/po/de/commands.po b/package/luci/applications/luci-app-commands/po/de/commands.po deleted file mode 100644 index e67404afac..0000000000 --- a/package/luci/applications/luci-app-commands/po/de/commands.po +++ /dev/null @@ -1,116 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-11-21 18:45+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "Kurze Beschreibung des abgespeicherten Kommandos" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Ausführen des Kommandos und Herunterladen der Ausgabe ohne vorherige " -"Authentifizierung ermöglichen" - -msgid "Allow the user to provide additional command line arguments" -msgstr "Erlaube dem Nutzer zusätzliche Kommandozeilenargumente zu übergeben" - -msgid "Arguments:" -msgstr "Argumente:" - -msgid "Binary data not displayed, download instead." -msgstr "Binärdaten ausgeblendet, laden Sie die Ausgaben stattdessen herunter" - -msgid "Code:" -msgstr "Rückgabewert:" - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Auszuführende Kommandozeile" - -msgid "Command successful" -msgstr "Kommando erfolgreich" - -msgid "Command:" -msgstr "Kommando:" - -msgid "Configure" -msgstr "Konfigurieren" - -msgid "Custom Commands" -msgstr "Benutzerdefinierte Kommandos" - -msgid "Custom arguments" -msgstr "Benutzerdefinierte Argumente" - -msgid "Dashboard" -msgstr "Übersicht" - -msgid "Description" -msgstr "Beschreibung" - -msgid "Download" -msgstr "Herunterladen" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "Kommando konnte nicht ausgeführt werden!" - -msgid "Link" -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." -msgstr "" -"Diese Seite ermöglicht die Konfiguration eigener Shell-Kommandos um diese " -"einfach über das Webinterface ausführen zu können." - -msgid "Waiting for command to complete..." -msgstr "Warte auf die Ausführung des Kommandos..." - -#~ msgid "Access command with" -#~ msgstr "Kommando aufrufen mit" diff --git a/package/luci/applications/luci-app-commands/po/el/commands.po b/package/luci/applications/luci-app-commands/po/el/commands.po deleted file mode 100644 index 48b18366f7..0000000000 --- a/package/luci/applications/luci-app-commands/po/el/commands.po +++ /dev/null @@ -1,106 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "A short textual description of the configured command" -msgstr "" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" - -msgid "Arguments:" -msgstr "" - -msgid "Binary data not displayed, download instead." -msgstr "" - -msgid "Code:" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "" - -msgid "Command line to execute" -msgstr "" - -msgid "Command successful" -msgstr "" - -msgid "Command:" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Custom Commands" -msgstr "" - -msgid "Custom arguments" -msgstr "" - -msgid "Dashboard" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Download" -msgstr "" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "" - -msgid "Link" -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 "" - -msgid "Waiting for command to complete..." -msgstr "" diff --git a/package/luci/applications/luci-app-commands/po/en/commands.po b/package/luci/applications/luci-app-commands/po/en/commands.po deleted file mode 100644 index ec192e4c18..0000000000 --- a/package/luci/applications/luci-app-commands/po/en/commands.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Last-Translator: INAGAKI Hiroshi \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 "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Allow executing the command and downloading its output without prior " -"authentication" - -msgid "Allow the user to provide additional command line arguments" -msgstr "Allow the user to provide additional command line arguments" - -msgid "Arguments:" -msgstr "Arguments:" - -msgid "Binary data not displayed, download instead." -msgstr "Binary data not displayed, download instead." - -msgid "Code:" -msgstr "Code:" - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Command line to execute" - -msgid "Command successful" -msgstr "Command successful" - -msgid "Command:" -msgstr "Command:" - -msgid "Configure" -msgstr "Configure" - -msgid "Custom Commands" -msgstr "Custom Commands" - -msgid "Custom arguments" -msgstr "Custom arguments" - -msgid "Dashboard" -msgstr "Dashboard" - -msgid "Description" -msgstr "Description" - -msgid "Download" -msgstr "Download" - -msgid "Download execution result" -msgstr "Download execution result" - -msgid "Failed to execute command!" -msgstr "Failed to execute command!" - -msgid "Link" -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." -msgstr "" -"This page allows you to configure custom shell commands which can be easily " -"invoked from the web interface." - -msgid "Waiting for command to complete..." -msgstr "Waiting for command to complete..." - -#~ msgid "Command exited with status code " -#~ msgstr "Command exited with status code " diff --git a/package/luci/applications/luci-app-commands/po/es/commands.po b/package/luci/applications/luci-app-commands/po/es/commands.po deleted file mode 100644 index b9029b9042..0000000000 --- a/package/luci/applications/luci-app-commands/po/es/commands.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-11-24 10:16+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "Descripción breve del comando a configurar" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Permitir ejecutar el comando y descargar su salida sin más autentificación" - -msgid "Allow the user to provide additional command line arguments" -msgstr "Permitir al usuario añadir parámetros de línea de comandos" - -msgid "Arguments:" -msgstr "Parámetros:" - -msgid "Binary data not displayed, download instead." -msgstr "No se pueden mostrar datos binarios, descárguelos." - -msgid "Code:" -msgstr "Código:" - -msgid "Collecting data..." -msgstr "Recuperando datos..." - -msgid "Command" -msgstr "Comando" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "Falló" - -msgid "Command line to execute" -msgstr "Comando a ejecutar" - -msgid "Command successful" -msgstr "OK" - -msgid "Command:" -msgstr "Comando:" - -msgid "Configure" -msgstr "Configurar" - -msgid "Custom Commands" -msgstr "Comandos propios" - -msgid "Custom arguments" -msgstr "Parámetros propios" - -msgid "Dashboard" -msgstr "Panel" - -msgid "Description" -msgstr "Descripción" - -msgid "Download" -msgstr "Descarga" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "¡Error al ejecutar el comando!" - -msgid "Link" -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." -msgstr "" -"Aquí puede configurar sus propios comandos shell para lanzarlos fácilmente " -"desde el interfaz web." - -msgid "Waiting for command to complete..." -msgstr "Esperando a que termine el comando..." - -#~ msgid "Access command with" -#~ msgstr "Acceder al comando con" diff --git a/package/luci/applications/luci-app-commands/po/fr/commands.po b/package/luci/applications/luci-app-commands/po/fr/commands.po deleted file mode 100644 index f348326a02..0000000000 --- a/package/luci/applications/luci-app-commands/po/fr/commands.po +++ /dev/null @@ -1,118 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-12-12 13:36+0200\n" -"Last-Translator: maximeguillaud \n" -"Language-Team: none\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "Une courte description de la commande configurée" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Autoriser l'exécution de la commande et le téléchargement de son résultat " -"sans authentification préalable" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" -"Autoriser l'utilisateur à fournir des arguments de ligne de commande " -"supplémentaires" - -msgid "Arguments:" -msgstr "Arguments :" - -msgid "Binary data not displayed, download instead." -msgstr "Données binaires non affichables, elle peuvent être téléchargées." - -msgid "Code:" -msgstr "Code : " - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Ligne de commande à exécuter" - -msgid "Command successful" -msgstr "Commande réussie" - -msgid "Command:" -msgstr "Commande :" - -msgid "Configure" -msgstr "Configurer" - -msgid "Custom Commands" -msgstr "Commandes personnalisées" - -msgid "Custom arguments" -msgstr "Arguments personnalisés" - -msgid "Dashboard" -msgstr "Tableau de bord" - -msgid "Description" -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 ! " - -msgid "Link" -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." -msgstr "" -"Cette page vous permet de configurer des commandes shell personnalisées, " -"pouvant être invoquées facilement depuis l'interface web." - -msgid "Waiting for command to complete..." -msgstr "En attente de la commande pour finir..." - -#~ msgid "Access command with" -#~ msgstr "Accéder à la commande par" diff --git a/package/luci/applications/luci-app-commands/po/he/commands.po b/package/luci/applications/luci-app-commands/po/he/commands.po deleted file mode 100644 index 48b18366f7..0000000000 --- a/package/luci/applications/luci-app-commands/po/he/commands.po +++ /dev/null @@ -1,106 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "A short textual description of the configured command" -msgstr "" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" - -msgid "Arguments:" -msgstr "" - -msgid "Binary data not displayed, download instead." -msgstr "" - -msgid "Code:" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "" - -msgid "Command line to execute" -msgstr "" - -msgid "Command successful" -msgstr "" - -msgid "Command:" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Custom Commands" -msgstr "" - -msgid "Custom arguments" -msgstr "" - -msgid "Dashboard" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Download" -msgstr "" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "" - -msgid "Link" -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 "" - -msgid "Waiting for command to complete..." -msgstr "" diff --git a/package/luci/applications/luci-app-commands/po/hu/commands.po b/package/luci/applications/luci-app-commands/po/hu/commands.po deleted file mode 100644 index a9c759b9a8..0000000000 --- a/package/luci/applications/luci-app-commands/po/hu/commands.po +++ /dev/null @@ -1,116 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-24 18:47+0200\n" -"Last-Translator: Gábor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "A beállított parancs rövid szöveges leírása" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Engedélyezi a parancs végrehajtását és kimenetének letöltését előzetes " -"hitelesítés nélkül" - -msgid "Allow the user to provide additional command line arguments" -msgstr "A felhasználó által további parancsori argumentumok adhatók meg" - -msgid "Arguments:" -msgstr "Argumentumok:" - -msgid "Binary data not displayed, download instead." -msgstr "Bináris adat nem jelenik meg, töltse le helyette." - -msgid "Code:" -msgstr "Kód:" - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Futtatandó parancssor" - -msgid "Command successful" -msgstr "Parancs végrehajtás sikeres" - -msgid "Command:" -msgstr "Parancs:" - -msgid "Configure" -msgstr "Beállítás" - -msgid "Custom Commands" -msgstr "Egyedi parancsok" - -msgid "Custom arguments" -msgstr "Egyedi argumentumok" - -msgid "Dashboard" -msgstr "Vezérlőpult" - -msgid "Description" -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!" - -msgid "Link" -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." -msgstr "" -"Ezen az oldalon egyéni shell parancsokat állíthat be, amelyeket könnyen " -"felhasználhat a webes felületen." - -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" diff --git a/package/luci/applications/luci-app-commands/po/it/commands.po b/package/luci/applications/luci-app-commands/po/it/commands.po deleted file mode 100644 index 8155a07ef4..0000000000 --- a/package/luci/applications/luci-app-commands/po/it/commands.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-03 13:52+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "Una breve descrizione testuale del comando configurato" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Consentire l'esecuzione del comando e il download del suo output senza " -"previa autenticazione" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" -"Consente all'utente di fornire ulteriori argomenti della riga di comando" - -msgid "Arguments:" -msgstr "Argomenti:" - -msgid "Binary data not displayed, download instead." -msgstr "I dati binari non vengono visualizzati, ma possono essere scaricati." - -msgid "Code:" -msgstr "Codice:" - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Riga di comando da eseguire" - -msgid "Command successful" -msgstr "Comando riuscito" - -msgid "Command:" -msgstr "Comando:" - -msgid "Configure" -msgstr "Configura" - -msgid "Custom Commands" -msgstr "Comandi Personalizzati" - -msgid "Custom arguments" -msgstr "Argomenti Personalizzati" - -msgid "Dashboard" -msgstr "Dashboard" - -msgid "Description" -msgstr "Descrizione" - -msgid "Download" -msgstr "Download" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "Impossibile eseguire il comando!" - -msgid "Link" -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." -msgstr "" -"Questa pagina consente di configurare i comandi della shell personalizzate " -"che possono essere facilmente richiamati dall'interfaccia web." - -msgid "Waiting for command to complete..." -msgstr "In attesa del comando da completare..." - -#~ msgid "Access command with" -#~ msgstr "Accesso comando con" diff --git a/package/luci/applications/luci-app-commands/po/ja/commands.po b/package/luci/applications/luci-app-commands/po/ja/commands.po deleted file mode 100644 index 307951c9c9..0000000000 --- a/package/luci/applications/luci-app-commands/po/ja/commands.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"PO-Revision-Date: 2017-01-21 18:09+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 1.8.11\n" -"POT-Creation-Date: \n" - -msgid "A short textual description of the configured command" -msgstr "設定したコマンドの簡単な説明文を記載します" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "事前認証無しでのコマンドの実行と、結果出力のダウンロードを許可します。" - -msgid "Allow the user to provide additional command line arguments" -msgstr "コマンドラインに対する引数の追記を許可するか設定します" - -msgid "Arguments:" -msgstr "引数:" - -msgid "Binary data not displayed, download instead." -msgstr "バイナリデータは表示されずにダウンロードされます。" - -msgid "Code:" -msgstr "コード:" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "Command" -msgstr "コマンド" - -msgid "Command executed successfully." -msgstr "コマンドの実行に成功しました。" - -msgid "Command exited with status code" -msgstr "コマンドは次のステータス コードで終了しました:" - -msgid "Command failed" -msgstr "コマンド失敗" - -msgid "Command line to execute" -msgstr "実行するコマンドラインを記載します" - -msgid "Command successful" -msgstr "コマンド成功" - -msgid "Command:" -msgstr "コマンド:" - -msgid "Configure" -msgstr "設定" - -msgid "Custom Commands" -msgstr "カスタムコマンド" - -msgid "Custom arguments" -msgstr "カスタム引数" - -msgid "Dashboard" -msgstr "ダッシュボード" - -msgid "Description" -msgstr "説明" - -msgid "Download" -msgstr "ダウンロード" - -msgid "Download execution result" -msgstr "実行結果のダウンロード:" - -msgid "Failed to execute command!" -msgstr "コマンドの実行に失敗しました!" - -msgid "Link" -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 "" -"このページでは、ウェブインターフェースから簡単にシェル・コマンドを実行するこ" -"とができます。" - -msgid "Waiting for command to complete..." -msgstr "コマンド実行中です..." - -#~ msgid "Access command with" -#~ msgstr "コマンドへのアクセス" diff --git a/package/luci/applications/luci-app-commands/po/ms/commands.po b/package/luci/applications/luci-app-commands/po/ms/commands.po deleted file mode 100644 index ad2f1518a3..0000000000 --- a/package/luci/applications/luci-app-commands/po/ms/commands.po +++ /dev/null @@ -1,105 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "A short textual description of the configured command" -msgstr "" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" - -msgid "Arguments:" -msgstr "" - -msgid "Binary data not displayed, download instead." -msgstr "" - -msgid "Code:" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "" - -msgid "Command line to execute" -msgstr "" - -msgid "Command successful" -msgstr "" - -msgid "Command:" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Custom Commands" -msgstr "" - -msgid "Custom arguments" -msgstr "" - -msgid "Dashboard" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Download" -msgstr "" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "" - -msgid "Link" -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 "" - -msgid "Waiting for command to complete..." -msgstr "" diff --git a/package/luci/applications/luci-app-commands/po/no/commands.po b/package/luci/applications/luci-app-commands/po/no/commands.po deleted file mode 100644 index 593c9764f6..0000000000 --- a/package/luci/applications/luci-app-commands/po/no/commands.po +++ /dev/null @@ -1,116 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-03-25 23:38+0200\n" -"Last-Translator: protx \n" -"Language-Team: none\n" -"Language: no\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "En kort tekstlig beskrivelse av den konfigurerte kommandoen" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Tillat Ã¥ utføre kommandoen og laste ned resultatet uten forutgÃ¥ende " -"godkjenning" - -msgid "Allow the user to provide additional command line arguments" -msgstr "Tillat brukeren Ã¥ gi ytterligere kommandolinjeargumenter" - -msgid "Arguments:" -msgstr "Argumenter:" - -msgid "Binary data not displayed, download instead." -msgstr "Binære data vises ikke, last ned i stedet." - -msgid "Code:" -msgstr "Kode:" - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Kommandolinje Ã¥ utføre" - -msgid "Command successful" -msgstr "Kommando vellykket" - -msgid "Command:" -msgstr "Kommando:" - -msgid "Configure" -msgstr "Konfigurer" - -msgid "Custom Commands" -msgstr "Egendefinerte Kommandoer" - -msgid "Custom arguments" -msgstr "Egendefinerte argumenter" - -msgid "Dashboard" -msgstr "Dashboard" - -msgid "Description" -msgstr "Beskrivelse" - -msgid "Download" -msgstr "Nedlasting" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "Kunne ikke utføre kommandoen!" - -msgid "Link" -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." -msgstr "" -"Denne siden lar deg konfigurere egendefinerte shell-kommandoer som lett kan " -"startes fra webgrensesnittet." - -msgid "Waiting for command to complete..." -msgstr "Venter pÃ¥ at kommandoen fullføres..." - -#~ msgid "Access command with" -#~ msgstr "Åpne kommandoen med" diff --git a/package/luci/applications/luci-app-commands/po/pl/commands.po b/package/luci/applications/luci-app-commands/po/pl/commands.po deleted file mode 100644 index 7c62eb05cb..0000000000 --- a/package/luci/applications/luci-app-commands/po/pl/commands.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-02-25 18:03+0200\n" -"Last-Translator: TheTranslator2238 \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "Krótki opis konfigurowanej komendy" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Zezwól na uruchomienie komendy i pobranie wyjścia bez uprzedniego " -"uwierzytelnienia" - -msgid "Allow the user to provide additional command line arguments" -msgstr "Pozwól użytkownikowi dodać argumenty wiersza poleceń" - -msgid "Arguments:" -msgstr "Argumenty:" - -msgid "Binary data not displayed, download instead." -msgstr "Nie wyświetlono danych binarnych, możesz je pobrać." - -msgid "Code:" -msgstr "Kod:" - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Linia Komendy do wykonania" - -msgid "Command successful" -msgstr "Komenda Wykonana" - -msgid "Command:" -msgstr "Komenda:" - -msgid "Configure" -msgstr "Konfiguracja" - -msgid "Custom Commands" -msgstr "Własne komendy" - -msgid "Custom arguments" -msgstr "Własne argumenty" - -msgid "Dashboard" -msgstr "Tablica" - -msgid "Description" -msgstr "Opis" - -msgid "Download" -msgstr "Download" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "Nie można wykonać komendy!" - -msgid "Link" -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." -msgstr "" -"Ta strona pozwala ci skonfigurować niestandardową komendę którą można łatwo " -"użyć z Web Interfejsa" - -msgid "Waiting for command to complete..." -msgstr "Czekanie na wykonanie komendy..." - -#~ msgid "Access command with" -#~ msgstr "Dostęp do komendy przez" diff --git a/package/luci/applications/luci-app-commands/po/pt-br/commands.po b/package/luci/applications/luci-app-commands/po/pt-br/commands.po deleted file mode 100644 index 4d04bffbc1..0000000000 --- a/package/luci/applications/luci-app-commands/po/pt-br/commands.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"PO-Revision-Date: 2017-02-20 17:39-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"POT-Creation-Date: \n" - -msgid "A short textual description of the configured command" -msgstr "Uma pequena descrição textual do comando configurado" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Permitir a execução do comando e descarregar o resultado sem autenticação " -"prévia" - -msgid "Allow the user to provide additional command line arguments" -msgstr "Permitir ao usuário inserir argumentos de linha de comando adicionais" - -msgid "Arguments:" -msgstr "Argumentos:" - -msgid "Binary data not displayed, download instead." -msgstr "Dados binários não mostrados, mas podem ser baixados." - -msgid "Code:" -msgstr "Código:" - -msgid "Collecting data..." -msgstr "Adquirindo dados..." - -msgid "Command" -msgstr "Comando" - -msgid "Command executed successfully." -msgstr "O comando executou com sucesso." - -msgid "Command exited with status code" -msgstr "O comando encerrou com um estado de erro" - -msgid "Command failed" -msgstr "O comando falhou" - -msgid "Command line to execute" -msgstr "Linha de comandos a executar" - -msgid "Command successful" -msgstr "Comando executado com sucesso" - -msgid "Command:" -msgstr "Comando:" - -msgid "Configure" -msgstr "Configurar" - -msgid "Custom Commands" -msgstr "Comandos Personalizados" - -msgid "Custom arguments" -msgstr "Argumentos personalizados" - -msgid "Dashboard" -msgstr "Painel de Controle" - -msgid "Description" -msgstr "Descrição" - -msgid "Download" -msgstr "Baixar" - -msgid "Download execution result" -msgstr "Baixar os resultados da execução" - -msgid "Failed to execute command!" -msgstr "Falha ao executar comando!" - -msgid "Link" -msgstr "Endereço" - -msgid "Loading" -msgstr "Carregando" - -msgid "Or display result" -msgstr "Ou mostre o resultado" - -msgid "Public access" -msgstr "Acesso público" - -msgid "Run" -msgstr "Executar" - -msgid "Standard Error" -msgstr "Saída de Erro" - -msgid "Standard Output" -msgstr "Saída Padrão" - -msgid "" -"This page allows you to configure custom shell commands which can be easily " -"invoked from the web interface." -msgstr "" -"Esta página permite a configuração de comandos personalizados que podem ser " -"facilmente executados através da interface web." - -msgid "Waiting for command to complete..." -msgstr "Aguardando a conclusão do comando..." - -#~ msgid "Access command with" -#~ msgstr "Acessar o comando com" diff --git a/package/luci/applications/luci-app-commands/po/pt/commands.po b/package/luci/applications/luci-app-commands/po/pt/commands.po deleted file mode 100644 index b2ad0ae44c..0000000000 --- a/package/luci/applications/luci-app-commands/po/pt/commands.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-06-02 19:17+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "Uma pequena descrição textual do comando configurado" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Permitir a execução do comando e descarregar o resultado sem autenticação " -"prévia" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" -"Permitir que o utilizador forneça argumentos adicionais na linha de comandos" - -msgid "Arguments:" -msgstr "Argumentos:" - -msgid "Binary data not displayed, download instead." -msgstr "Dados binários não mostrados, mas pode descarregar." - -msgid "Code:" -msgstr "Código:" - -msgid "Collecting data..." -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" - -msgid "Command line to execute" -msgstr "Linha de comandos a executar" - -msgid "Command successful" -msgstr "Comando executado com sucesso" - -msgid "Command:" -msgstr "Comando:" - -msgid "Configure" -msgstr "Configurar" - -msgid "Custom Commands" -msgstr "Comandos Personalizados" - -msgid "Custom arguments" -msgstr "Argumentos personalizados" - -msgid "Dashboard" -msgstr "Painel de Controlo" - -msgid "Description" -msgstr "Descrição" - -msgid "Download" -msgstr "Descarregar" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "Falha ao executar comando!" - -msgid "Link" -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." -msgstr "" -"Esta página permite-lhe configurar uma linha de comandos personalizada que " -"pode facilmente ser executada a partir da interface web." - -msgid "Waiting for command to complete..." -msgstr "A aguardar que o comando termine..." - -#~ msgid "Access command with" -#~ msgstr "Aceder ao comando com" diff --git a/package/luci/applications/luci-app-commands/po/ro/commands.po b/package/luci/applications/luci-app-commands/po/ro/commands.po deleted file mode 100644 index 57d1f7bb27..0000000000 --- a/package/luci/applications/luci-app-commands/po/ro/commands.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-28 18:45+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "O scurta descriere textuala a comenzii configurate" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Permite executarea comenzii si descarcarea rezultatului fara o autentificare " -"anterioara" - -msgid "Allow the user to provide additional command line arguments" -msgstr "Permite utilizatorului sa adauge parametrii in linia de comanda" - -msgid "Arguments:" -msgstr "Parametrii:" - -msgid "Binary data not displayed, download instead." -msgstr "Datele binare nu sunt afisate, descarcale in schimb" - -msgid "Code:" -msgstr "Cod:" - -msgid "Collecting data..." -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ă" - -msgid "Command line to execute" -msgstr "Linie de comanda pentru a executa" - -msgid "Command successful" -msgstr "Comanda reusita" - -msgid "Command:" -msgstr "Comanda:" - -msgid "Configure" -msgstr "Configureaza" - -msgid "Custom Commands" -msgstr "Comenzi particulare" - -msgid "Custom arguments" -msgstr "Argumenta particulare" - -msgid "Dashboard" -msgstr "Dashboard" - -msgid "Description" -msgstr "Descriere" - -msgid "Download" -msgstr "Descarca" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "S-a esuat executarea comenzii!!" - -msgid "Link" -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." -msgstr "" -"Aceasta pagina permite configurarea de comenzi personale ce pot fi usor " -"apelate din interfata grafica" - -msgid "Waiting for command to complete..." -msgstr "Astept finalizarea comenzii..." - -#~ msgid "Access command with" -#~ msgstr "Acces la comanda cu" diff --git a/package/luci/applications/luci-app-commands/po/ru/commands.po b/package/luci/applications/luci-app-commands/po/ru/commands.po deleted file mode 100644 index 0c035ab731..0000000000 --- a/package/luci/applications/luci-app-commands/po/ru/commands.po +++ /dev/null @@ -1,120 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-15 16:48+0200\n" -"Last-Translator: datasheet \n" -"Language-Team: none\n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "A short textual description of the configured command" -msgstr "Короткое текстовое описание команды" - -#, fuzzy -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"Разрешить выполнение команды и загрузку ее вывода без предварительной " -"аутентификации" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" -"Разрешить пользователям использовать дополнительные аргументы командной " -"строки" - -msgid "Arguments:" -msgstr "Аргументы:" - -msgid "Binary data not displayed, download instead." -msgstr "Двоичные данные не отображаются, вместо этого - выгружаются" - -msgid "Code:" -msgstr "Код:" - -msgid "Collecting data..." -msgstr "Сбор данных..." - -msgid "Command" -msgstr "Команда" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "Команда не выполнена" - -msgid "Command line to execute" -msgstr "Командная строка для выполнения" - -msgid "Command successful" -msgstr "Команда выполнена" - -msgid "Command:" -msgstr "Команда:" - -msgid "Configure" -msgstr "Настроить" - -msgid "Custom Commands" -msgstr "Пользовательские команды" - -msgid "Custom arguments" -msgstr "Пользовательские аргументы" - -msgid "Dashboard" -msgstr "Информационная панель" - -msgid "Description" -msgstr "Описание" - -msgid "Download" -msgstr "Скачать" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "Ошибка выполнения команды!" - -msgid "Link" -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 "" -"Эта страница предоставляет возможность настраивать пользовательские " -"консольные команды, которые могут быть легко вызваны из веб-интерфейса" - -msgid "Waiting for command to complete..." -msgstr "Ожидание завершения команды..." - -#~ msgid "Access command with" -#~ msgstr "Доступ к команде через" diff --git a/package/luci/applications/luci-app-commands/po/sk/commands.po b/package/luci/applications/luci-app-commands/po/sk/commands.po deleted file mode 100644 index 17bed402d7..0000000000 --- a/package/luci/applications/luci-app-commands/po/sk/commands.po +++ /dev/null @@ -1,106 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "A short textual description of the configured command" -msgstr "" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" - -msgid "Arguments:" -msgstr "" - -msgid "Binary data not displayed, download instead." -msgstr "" - -msgid "Code:" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "" - -msgid "Command line to execute" -msgstr "" - -msgid "Command successful" -msgstr "" - -msgid "Command:" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Custom Commands" -msgstr "" - -msgid "Custom arguments" -msgstr "" - -msgid "Dashboard" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Download" -msgstr "" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "" - -msgid "Link" -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 "" - -msgid "Waiting for command to complete..." -msgstr "" diff --git a/package/luci/applications/luci-app-commands/po/sv/commands.po b/package/luci/applications/luci-app-commands/po/sv/commands.po deleted file mode 100644 index a944fdb63d..0000000000 --- a/package/luci/applications/luci-app-commands/po/sv/commands.po +++ /dev/null @@ -1,111 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "A short textual description of the configured command" -msgstr "En kort textuell beskrivning av det inställda kommandot" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" -"TillÃ¥t att kommandot kan köras och ladda ner dess utmatning utan föregÃ¥ende " -"autentisering" - -msgid "Allow the user to provide additional command line arguments" -msgstr "TillÃ¥t användaren att tillge extra kommandoradsargument" - -msgid "Arguments:" -msgstr "Argument:" - -msgid "Binary data not displayed, download instead." -msgstr "Binärdatan visades inte, ladda ner istället." - -msgid "Code:" -msgstr "Kod:" - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "Command" -msgstr "Kommando" - -msgid "Command executed successfully." -msgstr "Kommandot utfördes korrekt" - -msgid "Command exited with status code" -msgstr "Kommandot avslutade med statuskod" - -msgid "Command failed" -msgstr "Kommandot misslyckades" - -msgid "Command line to execute" -msgstr "Kommandorad att exekvera" - -msgid "Command successful" -msgstr "Kommandot lyckades" - -msgid "Command:" -msgstr "Kommando:" - -msgid "Configure" -msgstr "Ställ in" - -msgid "Custom Commands" -msgstr "Anpassade kommandon" - -msgid "Custom arguments" -msgstr "Anpassade argument" - -msgid "Dashboard" -msgstr "Instrumentpanel" - -msgid "Description" -msgstr "Beskrivning" - -msgid "Download" -msgstr "Ladda ner" - -msgid "Download execution result" -msgstr "Resultatet av nerladdningen" - -msgid "Failed to execute command!" -msgstr "Misslyckade med att köra kommando!" - -msgid "Link" -msgstr "Länk" - -msgid "Loading" -msgstr "Laddar" - -msgid "Or display result" -msgstr "Eller visa resultat" - -msgid "Public access" -msgstr "Publik tillgÃ¥ng" - -msgid "Run" -msgstr "Kör" - -msgid "Standard Error" -msgstr "Standardfel" - -msgid "Standard Output" -msgstr "Standardinmatning" - -msgid "" -"This page allows you to configure custom shell commands which can be easily " -"invoked from the web interface." -msgstr "" -"Den här sidan tillÃ¥ter dig att ställa in anpassade skalkommandon som lättast " -"kan Ã¥beropas frÃ¥n webbgränssnittet." - -msgid "Waiting for command to complete..." -msgstr "Väntar pÃ¥ att kommandot ska slutföras..." diff --git a/package/luci/applications/luci-app-commands/po/templates/commands.pot b/package/luci/applications/luci-app-commands/po/templates/commands.pot deleted file mode 100644 index 31df11dc11..0000000000 --- a/package/luci/applications/luci-app-commands/po/templates/commands.pot +++ /dev/null @@ -1,99 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "A short textual description of the configured command" -msgstr "" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" - -msgid "Arguments:" -msgstr "" - -msgid "Binary data not displayed, download instead." -msgstr "" - -msgid "Code:" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "" - -msgid "Command line to execute" -msgstr "" - -msgid "Command successful" -msgstr "" - -msgid "Command:" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Custom Commands" -msgstr "" - -msgid "Custom arguments" -msgstr "" - -msgid "Dashboard" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Download" -msgstr "" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "" - -msgid "Link" -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 "" - -msgid "Waiting for command to complete..." -msgstr "" diff --git a/package/luci/applications/luci-app-commands/po/tr/commands.po b/package/luci/applications/luci-app-commands/po/tr/commands.po deleted file mode 100644 index 587bc2b84f..0000000000 --- a/package/luci/applications/luci-app-commands/po/tr/commands.po +++ /dev/null @@ -1,106 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "A short textual description of the configured command" -msgstr "" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" - -msgid "Arguments:" -msgstr "" - -msgid "Binary data not displayed, download instead." -msgstr "" - -msgid "Code:" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "" - -msgid "Command line to execute" -msgstr "" - -msgid "Command successful" -msgstr "" - -msgid "Command:" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Custom Commands" -msgstr "" - -msgid "Custom arguments" -msgstr "" - -msgid "Dashboard" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Download" -msgstr "" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "" - -msgid "Link" -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 "" - -msgid "Waiting for command to complete..." -msgstr "" diff --git a/package/luci/applications/luci-app-commands/po/uk/commands.po b/package/luci/applications/luci-app-commands/po/uk/commands.po deleted file mode 100644 index f72fc9354c..0000000000 --- a/package/luci/applications/luci-app-commands/po/uk/commands.po +++ /dev/null @@ -1,118 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-14 12:14+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -#, fuzzy -msgid "A short textual description of the configured command" -msgstr "Короткий опис команд налаштування" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" - -#, fuzzy -msgid "Arguments:" -msgstr "Аргументи:" - -msgid "Binary data not displayed, download instead." -msgstr "" - -msgid "Code:" -msgstr "Код:" - -msgid "Collecting data..." -msgstr "Збирання даних..." - -msgid "Command" -msgstr "" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "Команда не виконана" - -msgid "Command line to execute" -msgstr "" - -msgid "Command successful" -msgstr "" - -msgid "Command:" -msgstr "" - -msgid "Configure" -msgstr "Конфігурація" - -msgid "Custom Commands" -msgstr "" - -msgid "Custom arguments" -msgstr "" - -#, fuzzy -msgid "Dashboard" -msgstr "Панель керування" - -msgid "Description" -msgstr "Опис" - -msgid "Download" -msgstr "Завантажити" - -msgid "Download execution result" -msgstr "" - -#, fuzzy -msgid "Failed to execute command!" -msgstr "Помилка під час запуску команди!" - -msgid "Link" -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 " -"invoked from the web interface." -msgstr "" -"Ця сторінка дозволяє налаштувати користувацькі команди оболонки, яка може " -"бути легко запущена з веб-інтерфейсу." - -#, fuzzy -msgid "Waiting for command to complete..." -msgstr "Очікування завершення команди..." diff --git a/package/luci/applications/luci-app-commands/po/vi/commands.po b/package/luci/applications/luci-app-commands/po/vi/commands.po deleted file mode 100644 index 587bc2b84f..0000000000 --- a/package/luci/applications/luci-app-commands/po/vi/commands.po +++ /dev/null @@ -1,106 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "A short textual description of the configured command" -msgstr "" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "" - -msgid "Allow the user to provide additional command line arguments" -msgstr "" - -msgid "Arguments:" -msgstr "" - -msgid "Binary data not displayed, download instead." -msgstr "" - -msgid "Code:" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "" - -msgid "Command line to execute" -msgstr "" - -msgid "Command successful" -msgstr "" - -msgid "Command:" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Custom Commands" -msgstr "" - -msgid "Custom arguments" -msgstr "" - -msgid "Dashboard" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Download" -msgstr "" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "" - -msgid "Link" -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 "" - -msgid "Waiting for command to complete..." -msgstr "" diff --git a/package/luci/applications/luci-app-commands/po/zh-cn/commands.po b/package/luci/applications/luci-app-commands/po/zh-cn/commands.po deleted file mode 100644 index 90f1dbed2b..0000000000 --- a/package/luci/applications/luci-app-commands/po/zh-cn/commands.po +++ /dev/null @@ -1,113 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"PO-Revision-Date: 2017-01-21 09:34+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 1.8.11\n" -"POT-Creation-Date: \n" - -msgid "A short textual description of the configured command" -msgstr "简短描述命令用途" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "允许在不认证的前提下执行命令,并获取其输出。" - -msgid "Allow the user to provide additional command line arguments" -msgstr "允许用户提供额外的命令行参数" - -msgid "Arguments:" -msgstr "参数:" - -msgid "Binary data not displayed, download instead." -msgstr "不显示二进制数据,使用下载方式替代。" - -msgid "Code:" -msgstr "代码:" - -msgid "Collecting data..." -msgstr "收集数据:" - -msgid "Command" -msgstr "命令" - -msgid "Command executed successfully." -msgstr "命令成功执行。" - -msgid "Command exited with status code" -msgstr "命令退出,状态码:" - -msgid "Command failed" -msgstr "执行命令失败" - -msgid "Command line to execute" -msgstr "执行命令行" - -msgid "Command successful" -msgstr "执行命令成功" - -msgid "Command:" -msgstr "命令:" - -msgid "Configure" -msgstr "配置" - -msgid "Custom Commands" -msgstr "自定义命令" - -msgid "Custom arguments" -msgstr "自定义参数" - -msgid "Dashboard" -msgstr "看板" - -msgid "Description" -msgstr "描述" - -msgid "Download" -msgstr "下载" - -msgid "Download execution result" -msgstr "下载执行结果" - -msgid "Failed to execute command!" -msgstr "执行命令失败!" - -msgid "Link" -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 "此页面允许您配置自定义Shell命令,并可以从Web界面调用shell命令。" - -msgid "Waiting for command to complete..." -msgstr "等待命令执行完成... ..." - -#~ msgid "Command exited with status code " -#~ msgstr "命令退出,状态码:" diff --git a/package/luci/applications/luci-app-commands/po/zh-tw/commands.po b/package/luci/applications/luci-app-commands/po/zh-tw/commands.po deleted file mode 100644 index 157c07695f..0000000000 --- a/package/luci/applications/luci-app-commands/po/zh-tw/commands.po +++ /dev/null @@ -1,112 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-18 19:59+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "A short textual description of the configured command" -msgstr "以短文描述設定指令" - -msgid "" -"Allow executing the command and downloading its output without prior " -"authentication" -msgstr "允許執行這指令及下載它的輸出無須事先驗證" - -msgid "Allow the user to provide additional command line arguments" -msgstr "允許用戶提供額外的指令行參數" - -msgid "Arguments:" -msgstr "參數:" - -msgid "Binary data not displayed, download instead." -msgstr "二進進資料未顯示, 以下載替代." - -msgid "Code:" -msgstr "碼:" - -msgid "Collecting data..." -msgstr "收集資料中..." - -msgid "Command" -msgstr "指令" - -msgid "Command executed successfully." -msgstr "" - -msgid "Command exited with status code" -msgstr "" - -msgid "Command failed" -msgstr "命令失敗" - -msgid "Command line to execute" -msgstr "要執行的指令行" - -msgid "Command successful" -msgstr "命令成功" - -msgid "Command:" -msgstr "命令:" - -msgid "Configure" -msgstr "設定" - -msgid "Custom Commands" -msgstr "自訂指令集" - -msgid "Custom arguments" -msgstr "自訂參數集" - -msgid "Dashboard" -msgstr "儀表板" - -msgid "Description" -msgstr "描述" - -msgid "Download" -msgstr "下載" - -msgid "Download execution result" -msgstr "" - -msgid "Failed to execute command!" -msgstr "執行指令失敗!" - -msgid "Link" -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 "只要可以從web介輕易調用, 這頁面允許您自定shell指令." - -msgid "Waiting for command to complete..." -msgstr "等待完整命令中..." - -#~ msgid "Access command with" -#~ msgstr "存取指令" diff --git a/package/luci/applications/luci-app-coovachilli/Makefile b/package/luci/applications/luci-app-coovachilli/Makefile deleted file mode 100644 index 61209917cd..0000000000 --- a/package/luci/applications/luci-app-coovachilli/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Coova Chilli -LUCI_DEPENDS:=@BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-coovachilli/luasrc/controller/coovachilli.lua b/package/luci/applications/luci-app-coovachilli/luasrc/controller/coovachilli.lua deleted file mode 100644 index f962b9bbb5..0000000000 --- a/package/luci/applications/luci-app-coovachilli/luasrc/controller/coovachilli.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.coovachilli", package.seeall) - -function index() - local cc - - cc = entry( { "admin", "services", "coovachilli" }, cbi("coovachilli"), _("CoovaChilli"), 90) - cc.subindex = true - - entry( { "admin", "services", "coovachilli", "network" }, cbi("coovachilli_network"), _("Network Configuration"), 10) - entry( { "admin", "services", "coovachilli", "radius" }, cbi("coovachilli_radius"), _("RADIUS configuration"), 20) - entry( { "admin", "services", "coovachilli", "auth" }, cbi("coovachilli_auth"), _("UAM and MAC Authentication"), 30) -end diff --git a/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli.lua b/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli.lua deleted file mode 100644 index 7a2056c119..0000000000 --- a/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli.lua +++ /dev/null @@ -1,19 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("coovachilli") - --- general -s = m:section(TypedSection, "general") -s.anonymous = true - -s:option( Flag, "debug" ) -s:option( Value, "interval" ) -s:option( Value, "pidfile" ).optional = true -s:option( Value, "statedir" ).optional = true -s:option( Value, "cmdsock" ).optional = true -s:option( Value, "logfacility" ).optional = true - - -return m diff --git a/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_auth.lua b/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_auth.lua deleted file mode 100644 index 4123532f41..0000000000 --- a/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_auth.lua +++ /dev/null @@ -1,64 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("coovachilli") - --- uam config -s1 = m:section(TypedSection, "uam") -s1.anonymous = true - -s1:option( Value, "uamserver" ) -s1:option( Value, "uamsecret" ).password = true - -s1:option( Flag, "uamanydns" ) -s1:option( Flag, "nouamsuccess" ) -s1:option( Flag, "nouamwispr" ) -s1:option( Flag, "chillixml" ) -s1:option( Flag, "uamanyip" ).optional = true -s1:option( Flag, "dnsparanoia" ).optional = true -s1:option( Flag, "usestatusfile" ).optional = true - -s1:option( Value, "uamhomepage" ).optional = true -s1:option( Value, "uamlisten" ).optional = true -s1:option( Value, "uamport" ).optional = true -s1:option( Value, "uamiport" ).optional = true -s1:option( DynamicList, "uamdomain" ).optional = true -s1:option( Value, "uamlogoutip" ).optional = true -s1:option( DynamicList, "uamallowed" ).optional = true -s1:option( Value, "uamui" ).optional = true - -s1:option( Value, "wisprlogin" ).optional = true - -s1:option( Value, "defsessiontimeout" ).optional = true -s1:option( Value, "defidletimeout" ).optional = true -s1:option( Value, "definteriminterval" ).optional = true - -s1:option( Value, "ssid" ).optional = true -s1:option( Value, "vlan" ).optional = true -s1:option( Value, "nasip" ).optional = true -s1:option( Value, "nasmac" ).optional = true -s1:option( Value, "wwwdir" ).optional = true -s1:option( Value, "wwwbin" ).optional = true - -s1:option( Value, "localusers" ).optional = true -s1:option( Value, "postauthproxy" ).optional = true -s1:option( Value, "postauthproxyport" ).optional = true -s1:option( Value, "locationname" ).optional = true - - --- mac authentication -s2 = m:section(TypedSection, "macauth") -s2.anonymous = true - -s2:option( Flag, "macauth" ) -s2:option( Flag, "macallowlocal" ) -s2:option( DynamicList, "macallowed" ) - -pw = s2:option( Value, "macpasswd" ) -pw.optional = true -pw.password = true - -s2:option( Value, "macsuffix" ).optional = true - -return m diff --git a/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_network.lua b/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_network.lua deleted file mode 100644 index 025bc1795b..0000000000 --- a/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_network.lua +++ /dev/null @@ -1,56 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sys = require"luci.sys" -local ip = require "luci.ip" - -m = Map("coovachilli") - --- tun -s1 = m:section(TypedSection, "tun") -s1.anonymous = true - -s1:option( Flag, "usetap" ) -s1:option( Value, "tundev" ).optional = true -s1:option( Value, "txqlen" ).optional = true - -net = s1:option( Value, "net" ) -for _, route in ipairs(ip.routes({ family = 4, type = 1 })) do - if route.dest:prefix() > 0 and route.dest:prefix() < 32 then - net:value( route.dest:string() ) - end -end - -s1:option( Value, "dynip" ).optional = true -s1:option( Value, "statip" ).optional = true - -s1:option( Value, "dns1" ).optional = true -s1:option( Value, "dns2" ).optional = true -s1:option( Value, "domain" ).optional = true - -s1:option( Value, "ipup" ).optional = true -s1:option( Value, "ipdown" ).optional = true - -s1:option( Value, "conup" ).optional = true -s1:option( Value, "condown" ).optional = true - - --- dhcp config -s2 = m:section(TypedSection, "dhcp") -s2.anonymous = true - -dif = s2:option( Value, "dhcpif" ) -for _, nif in ipairs(sys.net.devices()) do - if nif ~= "lo" then dif:value(nif) end -end - -s2:option( Value, "dhcpmac" ).optional = true -s2:option( Value, "lease" ).optional = true -s2:option( Value, "dhcpstart" ).optional = true -s2:option( Value, "dhcpend" ).optional = true - -s2:option( Flag, "eapolenable" ) - - -return m diff --git a/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_radius.lua b/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_radius.lua deleted file mode 100644 index e2cbe495e0..0000000000 --- a/package/luci/applications/luci-app-coovachilli/luasrc/model/cbi/coovachilli_radius.lua +++ /dev/null @@ -1,55 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("coovachilli") - --- radius server -s1 = m:section(TypedSection, "radius") -s1.anonymous = true - -s1:option( Value, "radiusserver1" ) -s1:option( Value, "radiusserver2" ) -s1:option( Value, "radiussecret" ).password = true - -s1:option( Value, "radiuslisten" ).optional = true -s1:option( Value, "radiusauthport" ).optional = true -s1:option( Value, "radiusacctport" ).optional = true - -s1:option( Value, "radiusnasid" ).optional = true -s1:option( Value, "radiusnasip" ).optional = true - -s1:option( Value, "radiuscalled" ).optional = true -s1:option( Value, "radiuslocationid" ).optional = true -s1:option( Value, "radiuslocationname" ).optional = true - -s1:option( Value, "radiusnasporttype" ).optional = true - -s1:option( Flag, "radiusoriginalurl" ) - -s1:option( Value, "adminuser" ).optional = true -rs = s1:option( Value, "adminpassword" ) -rs.optional = true -rs.password = true - -s1:option( Flag, "swapoctets" ) -s1:option( Flag, "openidauth" ) -s1:option( Flag, "wpaguests" ) -s1:option( Flag, "acctupdate" ) - -s1:option( Value, "coaport" ).optional = true -s1:option( Flag, "coanoipcheck" ) - - --- radius proxy -s2 = m:section(TypedSection, "proxy") -s2.anonymous = true - -s2:option( Value, "proxylisten" ).optional = true -s2:option( Value, "proxyport" ).optional = true -s2:option( Value, "proxyclient" ).optional = true -ps = s2:option( Value, "proxysecret" ) -ps.optional = true -ps.password = true - -return m diff --git a/package/luci/applications/luci-app-coovachilli/po/ca/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/ca/coovachilli.po deleted file mode 100644 index 4970a1270e..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/ca/coovachilli.po +++ /dev/null @@ -1,655 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-06-01 22:48+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Configuració de xarxa" - -msgid "RADIUS configuration" -msgstr "Configuració RADIUS" - -msgid "UAM and MAC Authentication" -msgstr "Autenticació UAM i MAC" - -#~ msgid "General configuration" -#~ msgstr "Configuració general" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "Configuració CoovaChilli general" - -#~ msgid "Command socket" -#~ msgstr "Socket de comanda" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "SocketUNIX usat per comunicació amb chilli_query" - -#~ msgid "Config refresh interval" -#~ msgstr "Configuració d'interval de refresc" - -#~ msgid "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " -#~ msgstr "" -#~ "Re-llegeix el fitxer de configuració i les consultes DNS cada interval " -#~ "segons. Això té el mateix efecte que enviar el senyal HUP. Si l'interval " -#~ "és 0 (zero) es deshabilita la funció." - -#~ msgid "Pid file" -#~ msgstr "Fitxer PID" - -#~ msgid "Filename to put the process id" -#~ msgstr "Nom de fitxer on posar la ID de procés" - -#~ msgid "State directory" -#~ msgstr "Directori d'estat" - -#~ msgid "Directory of non-volatile data" -#~ msgstr "Directori de dades no volàtils" - -#~ msgid "TUN/TAP configuration" -#~ msgstr "Configuració TUN/TAP" - -#~ msgid "Network/Tun configuration" -#~ msgstr "Configuració de xarxa/tun" - -#~ msgid "Network down script" -#~ msgstr "Script de baixada de xarxa" - -#~ msgid "" -#~ "Script executed after a session has moved from authorized state to " -#~ "unauthorized" -#~ msgstr "" -#~ "Script executat quan es mou una sessió des de l'estat autoritzat a no " -#~ "autoritzat" - -#~ msgid "Network up script" -#~ msgstr "Script de pujada de xarxa" - -#~ msgid "Script executed after the tun network interface has been brought up" -#~ msgstr "Script executat després que la interfície de xarxa tun s'hagi alçat" - -#~ msgid "Primary DNS Server" -#~ msgstr "Servidor DNS primari" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Servidor DNS secundari" - -#~ msgid "Domain name" -#~ msgstr "Nom de domini" - -#~ msgid "" -#~ "Is used to inform the client about the domain name to use for DNS lookups" -#~ msgstr "" -#~ "S'utilitza per informar el client sobre el no mde domini a utilitzar per " -#~ "les consultes DNS" - -#~ msgid "Dynamic IP address pool" -#~ msgstr "Bateria d'adreces IP dinàmiques" - -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "Especifica una bateria d'adreces IP dinàmiques" - -#~ msgid "IP down script" -#~ msgstr "Scripts de baixada IP" - -#~ msgid "Script executed after the tun network interface has been taken down" -#~ msgstr "" -#~ "Script executat després que s'hagi abaixat la interfície de xarxa tun" - -#~ msgid "IP up script" -#~ msgstr "Script de pujada IP" - -#~ msgid "" -#~ "Script executed after the TUN/TAP network interface has been brought up" -#~ msgstr "" -#~ "Script executat després que s'hagi apujat la interfície de xarxa TUN/TAP" - -#~ msgid "Uplink subnet" -#~ msgstr "Subxarxa de pujada" - -#~ msgid "Network address of the uplink interface (CIDR notation)" -#~ msgstr "Adreça de xarxa de la interfície d'enllaç de pujada (notació CIDR)" - -#~ msgid "Static IP address pool" -#~ msgstr "Bateria d'adreces IP estàtiques" - -#~ msgid "Specifies a pool of static IP addresses" -#~ msgstr "Especifica una bateria d'adreces IP estàtiques" - -#~ msgid "TUN/TAP device" -#~ msgstr "Dispositiu TUN/TAP" - -#~ msgid "The specific device to use for the TUN/TAP interface" -#~ msgstr "El dispositiu específic utilitzar per la interfície TUN/TAP" - -#~ msgid "TX queue length" -#~ msgstr "Llargària de la cua TX" - -#~ msgid "The TX queue length to set on the TUN/TAP interface" -#~ msgstr "La llargària de la cua TX per establir la interfície TUN/TAP" - -#~ msgid "Use TAP device" -#~ msgstr "Utilitza dispositiu TAP" - -#~ msgid "Use the TAP interface instead of TUN" -#~ msgstr "Utilitza la interfície TAP en comptes de TUN" - -#~ msgid "DHCP configuration" -#~ msgstr "Configuració DHCP" - -#~ msgid "Set DHCP options for connecting clients" -#~ msgstr "Estebleix les opcions DHCP pels clients connectats" - -#~ msgid "DHCP end number" -#~ msgstr "Número final de DHCP" - -#~ msgid "Where to stop assigning IP addresses (default 254)" -#~ msgstr "Quan deixar d'assignar adreces IP (per defecte 254)" - -#~ msgid "DHCP interface" -#~ msgstr "Interfície DHCP" - -#~ msgid "Ethernet interface to listen to for the downlink interface" -#~ msgstr "" -#~ "Interfície Ethernet per escoltar les connexions a la interfície de baixada" - -#~ msgid "Listen MAC address" -#~ msgstr "Escolta adreça MAC" - -#~ msgid "" -#~ "MAC address to listen to. If not specified the MAC address of the " -#~ "interface will be used" -#~ msgstr "" -#~ "Adreça MAC per escoltar. Si no s'especifica, s'utilitzarà l'adreça MAC de " -#~ "la interfície." - -#~ msgid "DHCP start number" -#~ msgstr "Número d'inici de DHCP" - -#~ msgid "Where to start assigning IP addresses (default 10)" -#~ msgstr "Quan començar a assignar adreces IP (per defecte 10)" - -#~ msgid "Enable IEEE 802.1x" -#~ msgstr "Activa IEEE 802.1x" - -#~ msgid "Enable IEEE 802.1x authentication and listen for EAP requests" -#~ msgstr "Activa l'autenticació IEEE 802.1x i escolta peticions EAP" - -#~ msgid "Leasetime" -#~ msgstr "Temps de Lease" - -#~ msgid "Use a DHCP lease of seconds (default 600)" -#~ msgstr "Utilitza un lease de segons (per defecte 600)" - -#~ msgid "Allow session update through RADIUS" -#~ msgstr "Permet l'actualització de sessió a través de RADIUS" - -#~ msgid "" -#~ "Allow updating of session parameters with RADIUS attributes sent in " -#~ "Accounting-Response" -#~ msgstr "" -#~ "Permet l'actualització dels paràmetres de sessió amb atributs RADIUS " -#~ "enviats per Accounting-Response" - -#~ msgid "Admin password" -#~ msgstr "Contrasenya d'administració" - -#~ msgid "" -#~ "Password to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "Contrasenya per utilitzar per autenticació d'usuari administrador per " -#~ "agafar configurcions Chilli i establir una sessió \"system\" de dispositiu" - -#~ msgid "Admin user" -#~ msgstr "Usuari administrador" - -#~ msgid "" -#~ "User-name to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "Nom d'usuari per utilitzar per autenticació d'usuari administrador per " -#~ "agafar configurcions Chilli i establir una sessió \"system\" de dispositiu" - -#~ msgid "Do not check disconnection requests" -#~ msgstr "No comprovis les peticions de desconnexió" - -#~ msgid "Do not check the source IP address of radius disconnect requests" -#~ msgstr "" -#~ "No comprovis l'origen de l'adreça IP de les peticions de desconnexió " -#~ "RADIUS" - -#~ msgid "RADIUS disconnect port" -#~ msgstr "Port de desconnexió RADIUS" - -#~ msgid "UDP port to listen to for accepting radius disconnect requests" -#~ msgstr "Port UDP per acceptar peticions de desconnexió RADIUS" - -#~ msgid "NAS IP" -#~ msgstr "NAS IP" - -#~ msgid "Value to use in RADIUS NAS-IP-Address attribute" -#~ msgstr "Valor per utilitzar a l'atribut RADIUS adreça NAS-IP" - -#~ msgid "NAS MAC" -#~ msgstr "NAS MAC" - -#~ msgid "MAC address value to use in RADIUS Called-Station-ID attribute" -#~ msgstr "" -#~ "Valor d'adreça MAC per utilitzar a l'atribiut RADIUS Called-Station-ID" - -#~ msgid "Allow OpenID authentication" -#~ msgstr "Permet autenticació OpenID" - -#~ msgid "" -#~ "Allows OpenID authentication by sending ChilliSpot-Config=allow-" -#~ "openidauth in RADIUS Access-Requests" -#~ msgstr "" -#~ "Permet autenticació OpenID enviant ChilliSpot-Config=allow-openidauth als " -#~ "Access-Requests de RADIUS" - -#~ msgid "RADIUS accounting port" -#~ msgstr "Port d'accounting RADIUS" - -#~ msgid "" -#~ "The UDP port number to use for radius accounting requests (default 1813)" -#~ msgstr "" -#~ "Port UDP a utilitzar per les peticions d'accounting RADIUS (per defecte " -#~ "1813)" - -#~ msgid "RADIUS authentication port" -#~ msgstr "Port d'autenticació RADIUS" - -#~ msgid "" -#~ "The UDP port number to use for radius authentication requests (default " -#~ "1812)" -#~ msgstr "" -#~ "Port UDP a utilitzar per les peticions d'autenticació RADIUS (per defecte " -#~ "1812)" - -#~ msgid "Option radiuscalled" -#~ msgstr "Opció radiuscalled" - -#~ msgid "RADIUS listen address" -#~ msgstr "Adreça per rebre connexions RADIUS" - -#~ msgid "Local interface IP address to use for the radius interface" -#~ msgstr "Adreça IP d'interfície local per utilitzar per la interfície RADIUS" - -#~ msgid "RADIUS location ID" -#~ msgstr "ID de localització RADIUS" - -#~ msgid "WISPr Location ID" -#~ msgstr "ID de localització WISPr" - -#~ msgid "RADIUS location name" -#~ msgstr "Nom de localització RADIUS" - -#~ msgid "WISPr Location Name" -#~ msgstr "Nom de localització WISPr" - -#~ msgid "NAS ID" -#~ msgstr "NAS ID" - -#~ msgid "Network access server identifier" -#~ msgstr "Identificació de servidor d'accés de xarxa" - -#~ msgid "Option radiusnasip" -#~ msgstr "Opció radiusnasip" - -#~ msgid "NAS port type" -#~ msgstr "Tipus de port NAS" - -#~ msgid "" -#~ "Value of NAS-Port-Type attribute. Defaults to 19 (Wireless-IEEE-802.11)" -#~ msgstr "" -#~ "Valor de l'atribut NAS-Port-Type. Per defecte 19 (Wireless-IEEE-802.11)" - -#~ msgid "Send RADIUS VSA" -#~ msgstr "Envia RADIUS VSA" - -#~ msgid "Send the ChilliSpot-OriginalURL RADIUS VSA in Access-Request" -#~ msgstr "Envia el RADIUS VSA ChilliSpot-OriginalURl al Access-Request" - -#~ msgid "RADIUS secret" -#~ msgstr "Secret RADIUS" - -#~ msgid "Radius shared secret for both servers" -#~ msgstr "Secret compartit RADIUS pels dos servidors" - -#~ msgid "RADIUS server 1" -#~ msgstr "Servidor RADIUS 1" - -#~ msgid "The IP address of radius server 1" -#~ msgstr "L'adreça IP del servidor RADIUS 1" - -#~ msgid "RADIUS server 2" -#~ msgstr "Servidor RADIUS 2" - -#~ msgid "The IP address of radius server 2" -#~ msgstr "L'adreça IP del servidor RADIUS 2" - -#~ msgid "Swap octets" -#~ msgstr "Intercanvia octets" - -#~ msgid "" -#~ "Swap the meaning of \"input octets\" and \"output octets\" as it related " -#~ "to RADIUS attribtues" -#~ msgstr "" -#~ "Intercanvia el significat dels \"octets d'entrada\" i els \"octets de " -#~ "sortida\" com es relacionen els atributs RADIUS" - -#~ msgid "Allow WPA guests" -#~ msgstr "Permet convidats WPA" - -#~ msgid "" -#~ "Allows WPA Guest authentication by sending ChilliSpot-Config=allow-wpa-" -#~ "guests in RADIUS Access-Requests" -#~ msgstr "" -#~ "Permet l'autenticació de convidats WPA enviant un ChilliSpot-Config=allow-" -#~ "wpa-guests als Access-Requests de RADIUS" - -#~ msgid "Proxy client" -#~ msgstr "Client proxy" - -#~ msgid "" -#~ "IP address from which radius requests are accepted. If omitted the server " -#~ "will not accept radius requests" -#~ msgstr "" -#~ "Adreça IP des de la qual s'accepten les peticions RADIUS. Si s'omet, el " -#~ "servidor no acceptarà peticions RADIUS" - -#~ msgid "Proxy listen address" -#~ msgstr "Adreça que rep connexions del proxy" - -#~ msgid "Local interface IP address to use for accepting radius requests" -#~ msgstr "" -#~ "L'adreça IP de la interfície local a utilitzar per acceptar peticions " -#~ "RADIUS" - -#~ msgid "Proxy port" -#~ msgstr "Port proxy" - -#~ msgid "UDP Port to listen to for accepting radius requests" -#~ msgstr "Port UDP a rebre connexions per acceptar peticions RADIUS" - -#~ msgid "Proxy secret" -#~ msgstr "Secret de proxy" - -#~ msgid "Radius shared secret for clients" -#~ msgstr "Secret compartit de RADIUS pels clients" - -#~ msgid "UAM configuration" -#~ msgstr "Configuració UAM" - -#~ msgid "Unified Configuration Method settings" -#~ msgstr "Preferències de Mètode de Configuració Unificat" - -#~ msgid "Use Chilli XML" -#~ msgstr "Utilitza XML Chilli" - -#~ msgid "Return the so-called Chilli XML along with WISPr XML" -#~ msgstr "Retorna l'XML Chilli juntament amb l'XML WISPr" - -#~ msgid "Default idle timeout" -#~ msgstr "Temps d'espera d'inactivitat màxim per defecte" - -#~ msgid "Default idle timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Temps d'espera d'inactivitat màxim per defecte excepte si s'estableix pel " -#~ "RADIUS (per defecte 0)" - -#~ msgid "Default interim interval" -#~ msgstr "Interval provisional predeterminat" - -#~ msgid "" -#~ "Default interim-interval for RADIUS accounting unless otherwise set by " -#~ "RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Interval provisional predeterminat per accounting RADIUS excepte si " -#~ "s'estableix pel RADIUS (per defecte 0)" - -#~ msgid "Default session timeout" -#~ msgstr "Temps d'espera màxim de sessió per defecte" - -#~ msgid "" -#~ "Default session timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Temps d'espera màxim de sessió per defecte excepte si s'estableix pel " -#~ "RADIUS (per defecte 0)" - -#~ msgid "Inspect DNS traffic" -#~ msgstr "Inspeccions tràfic DNS" - -#~ msgid "" -#~ "Inspect DNS packets and drop responses with any non- A, CNAME, SOA, or MX " -#~ "records to prevent dns tunnels (experimental)" -#~ msgstr "" -#~ "Inspecciona paquets DNS i descarta ls respostes per qualsevol registre " -#~ "que no sigui A, CNAME, SOA o MX per prevenir túnels DNS (experimental)" - -#~ msgid "Local users file" -#~ msgstr "Fitxers d'usuaris local" - -#~ msgid "" -#~ "A colon separated file containing usernames and passwords of locally " -#~ "authenticated users" -#~ msgstr "" -#~ "Un fitxer contenint usuaris i contrasenyes separats per punts d'usuaris " -#~ "autenticats localment" - -#~ msgid "Location name" -#~ msgstr "Nom de localització" - -#~ msgid "Human readable location name used in JSON interface" -#~ msgstr "Nom de localització llegible utilitzat en l'interfície JSON" - -#~ msgid "Do not redirect to UAM server" -#~ msgstr "No readrecis al servidor UAM" - -#~ msgid "" -#~ "Do not return to UAM server on login success, just redirect to original " -#~ "URL" -#~ msgstr "" -#~ "No retornis al servidor UAM amb quan s'iniciï la sessió amb èxit, " -#~ "readreça només a la URL original" - -#~ msgid "Do not do WISPr" -#~ msgstr "No facis WISPr" - -#~ msgid "Do not do any WISPr XML, assume the back-end is doing this instead" -#~ msgstr "No facis cap XML WISPr, assumeix que el back-end ho està fent" - -#~ msgid "Post auth proxy" -#~ msgstr "Proxy post autenticació" - -#~ msgid "" -#~ "Used with postauthproxyport to define a post authentication HTTP proxy " -#~ "server" -#~ msgstr "" -#~ "Utilitzat amb postauthproxyport per definir una autenticació HTTP " -#~ "posterior de proxy server" - -#~ msgid "Post auth proxy port" -#~ msgstr "Port proxy post autenticació" - -#~ msgid "" -#~ "Used with postauthproxy to define a post authentication HTTP proxy server" -#~ msgstr "" -#~ "Utilitzat amb postauthproxy per definir un servidor proxy HTTP " -#~ "d'autenticació posterior" - -#~ msgid "Allowed resources" -#~ msgstr "Recursos permesos" - -#~ msgid "List of resources the client can access without first authenticating" -#~ msgstr "" -#~ "Llista dels recursos que el client pot accedir sense autenticar-se primer" - -#~ msgid "Allow any DNS server" -#~ msgstr "Permet qualsevol servidor DNS" - -#~ msgid "Allow any DNS server for unauthenticated clients" -#~ msgstr "Permet qualsevol servidor DNS per clients no autenticats" - -#~ msgid "Allow any IP address" -#~ msgstr "Permet qualsevol adreça IP" - -#~ msgid "" -#~ "Allow clients to use any IP settings they wish by spoofing ARP " -#~ "(experimental)" -#~ msgstr "" -#~ "Permet que els clients utilitzin qualsevol configuració IP que vulguin " -#~ "fent ARP spoofind (experimental)" - -#~ msgid "Allowed domains" -#~ msgstr "Dominis permesos" - -#~ msgid "" -#~ "Defines a list of domain names to automatically add to the walled garden" -#~ msgstr "" -#~ "Defineix una llista de noms de domini per afegir automàticament al jardí " -#~ "tancat" - -#~ msgid "UAM homepage" -#~ msgstr "Pàgina d'inici UAM" - -#~ msgid "URL of homepage to redirect unauthenticated users to" -#~ msgstr "URL de la pàgina d'inici per readreçar usuari no autenticats" - -#~ msgid "UAM static content port" -#~ msgstr "Port de contingut estàtic UAM" - -#~ msgid "TCP port to bind to for only serving embedded content" -#~ msgstr "Port TCP on escoltar per servir només contingut empotrat" - -#~ msgid "UAM listening address" -#~ msgstr "Adreça per on escoltar UAM" - -#~ msgid "IP address to listen to for authentication of clients" -#~ msgstr "Adreça IP on escoltar pels l'autenticació dels clients" - -#~ msgid "UAM logout IP" -#~ msgstr "IP de final de sessió UAM" - -#~ msgid "" -#~ "Use this IP address to instantly logout a client accessing it (defaults " -#~ "to 1.1.1.1)" -#~ msgstr "" -#~ "Utilitza aquesta adreça IP per finalitzar la sessió d'un que hi accedeix " -#~ "instantàniament (per defecte 1.1.1.1)" - -#~ msgid "UAM listening port" -#~ msgstr "Port on escoltar UAM" - -#~ msgid "TCP port to bind to for authenticating clients (default 3990)" -#~ msgstr "" -#~ "Port TCP per on escoltar l'autenticació de clients (per defecte 3990)" - -#~ msgid "UAM secret" -#~ msgstr "Secret UAM" - -#~ msgid "Shared secret between uamserver and chilli" -#~ msgstr "Secret compartit entre el uamserver i el chilli" - -#~ msgid "UAM server" -#~ msgstr "Servidor UAM" - -#~ msgid "URL of web server to use for authenticating clients" -#~ msgstr "URL del servidor URL a utilitzar per clients autenticats" - -#~ msgid "UAM user interface" -#~ msgstr "Interfície d'usuari UAM" - -#~ msgid "" -#~ "An init.d style program to handle local content on the uamuiport web " -#~ "server" -#~ msgstr "" -#~ "Un programa de l'stil init.d per gestionar el contingut local al servidor " -#~ "web uamuiport" - -#~ msgid "Use status file" -#~ msgstr "Utilitza fitxer d'estat" - -#~ msgid "" -#~ "Write the status of clients in a non-volatile state file (experimental)" -#~ msgstr "" -#~ "Escriu l'estat dels clients en un fitxer d'estat no volàtil (experimental)" - -#~ msgid "WISPr login url" -#~ msgstr "URL d'inici de sessió WISPr" - -#~ msgid "Specific URL to be given in WISPr XML LoginURL" -#~ msgstr "URL específica a donar a la URL d'inici de sessió de l'XML WISPr" - -#~ msgid "CGI program" -#~ msgstr "Programa CGI" - -#~ msgid "" -#~ "Executable to run as a CGI type program (like haserl) for URLs with " -#~ "extension .chi" -#~ msgstr "" -#~ "Executable per executar com un programa de tipus CGI (com el haserl) per " -#~ "URLs amb extensió .chi" - -#~ msgid "Web content directory" -#~ msgstr "Directori de contingut web" - -#~ msgid "Directory where embedded local web content is placed" -#~ msgstr "Directori on se situa el contingut web local empotrat" - -#~ msgid "MAC configuration" -#~ msgstr "Configuració MAC" - -#~ msgid "Configure MAC authentication" -#~ msgstr "Configura l'autenticació MAC" - -#~ msgid "Allowed MAC addresses" -#~ msgstr "Adreces MAC permeses" - -#~ msgid "List of MAC addresses for which MAC authentication will be performed" -#~ msgstr "Llista d'adreces MAC per les que es realitzarà autenticació MAC" - -#~ msgid "Authenticate locally allowed MACs" -#~ msgstr "Autentica localment les MACs permeses" - -#~ msgid "Authenticate allowed MAC addresses without the use of RADIUS" -#~ msgstr "Autentica les adreces MAC permeses sense l'ús del RADIUS" - -#~ msgid "Enable MAC authentification" -#~ msgstr "Activa l'autenticació MAC" - -#~ msgid "Try to authenticate all users based on their mac address alone" -#~ msgstr "" -#~ "Intenta autenticar tots els usuaris basats només en la seva adreça MAC" - -#~ msgid "Password" -#~ msgstr "Contrasenya" - -#~ msgid "Password used when performing MAC authentication" -#~ msgstr "Contrasenya utilitzada quan es realitza autenticació MAC" - -#~ msgid "Suffix" -#~ msgstr "Sufix" - -#~ msgid "coovachilli_macauth_macsuffix_desc" -#~ msgstr "" -#~ "Sufix per afegir a l'adreça MAC per formar el nm d'usuari, que s'enviarà " -#~ "al servidor RADIUS" diff --git a/package/luci/applications/luci-app-coovachilli/po/cs/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/cs/coovachilli.po deleted file mode 100644 index bc7ef7a584..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/cs/coovachilli.po +++ /dev/null @@ -1,348 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-30 10:33+0200\n" -"Last-Translator: Astran \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Nastavení sítě" - -msgid "RADIUS configuration" -msgstr "Nastavení RADIUS" - -msgid "UAM and MAC Authentication" -msgstr "UAM a MAC ověřování" - -#~ msgid "General configuration" -#~ msgstr "Obecná konfigurace" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "Obecné nastavení CoovaChilli" - -#~ msgid "Command socket" -#~ msgstr "Příkazový socket" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "UNIX socket, používaný pro komunikaci s chilli_query" - -#~ msgid "Config refresh interval" -#~ msgstr "Interval obnovení konfigurace" - -#~ msgid "Pid file" -#~ msgstr "PID soubor" - -#~ msgid "TUN/TAP configuration" -#~ msgstr "Nastavení TUN/TAP" - -#~ msgid "Network/Tun configuration" -#~ msgstr "Nastavení sítě/Tun" - -#~ msgid "Network down script" -#~ msgstr "Network down skript" - -#~ msgid "Network up script" -#~ msgstr "Network up skript" - -#~ msgid "Script executed after the tun network interface has been brought up" -#~ msgstr "Skript, spuÅ¡těný po nahození síťového rozhraní TUN" - -#~ msgid "Primary DNS Server" -#~ msgstr "Primární DNS server" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Sekundární DNS server" - -#~ msgid "Domain name" -#~ msgstr "Doménové jméno" - -#~ msgid "Dynamic IP address pool" -#~ msgstr "Pool dynamických IP adres" - -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "Urči rozsah, z něhož se budou přidělovat dynamické IP adresy" - -#~ msgid "IP down script" -#~ msgstr "IP down skript" - -#~ msgid "IP up script" -#~ msgstr "IP up skript" - -#~ msgid "Network address of the uplink interface (CIDR notation)" -#~ msgstr "Síťová adresa uplink rozhraní (CIDR notace)" - -#~ msgid "Static IP address pool" -#~ msgstr "Pool statických IP adres" - -#~ msgid "Specifies a pool of static IP addresses" -#~ msgstr "Určuje rozsah, z něhož se budou přidělovat statické IP adresy" - -#~ msgid "TX queue length" -#~ msgstr "Délka odchozí fronty" - -#~ msgid "The TX queue length to set on the TUN/TAP interface" -#~ msgstr "Délka odchozí fronty na zařízení TUN/TAP" - -#~ msgid "Use TAP device" -#~ msgstr "Použít zařízení TAP" - -#~ msgid "Use the TAP interface instead of TUN" -#~ msgstr "Použít TAP rozhraní namísto TUN" - -#~ msgid "DHCP configuration" -#~ msgstr "Nastavení DHCP" - -#~ msgid "Set DHCP options for connecting clients" -#~ msgstr "Nastavit možnosti DHCP pro příchozí klienty" - -#~ msgid "DHCP end number" -#~ msgstr "DHCP koncové číslo" - -#~ msgid "Where to stop assigning IP addresses (default 254)" -#~ msgstr "Kde přestat přidělovat IP adresy (standardně 254)" - -#~ msgid "DHCP interface" -#~ msgstr "DHCP rozhraní" - -#~ msgid "Where to start assigning IP addresses (default 10)" -#~ msgstr "Odkud začít přidělovat IP adresy" - -#~ msgid "Enable IEEE 802.1x" -#~ msgstr "Povolit IEEE 802.1x" - -#~ msgid "Enable IEEE 802.1x authentication and listen for EAP requests" -#~ msgstr "Povolit IEEE 802.1x autentizaci a naslouchat požadavkům EAP" - -#~ msgid "Admin password" -#~ msgstr "Administrátorské heslo" - -#~ msgid "Admin user" -#~ msgstr "Administrátorský uživatel" - -#~ msgid "Do not check disconnection requests" -#~ msgstr "Neověřovat požadavky na odpojení" - -#~ msgid "Do not check the source IP address of radius disconnect requests" -#~ msgstr "" -#~ "Neověřovat zdrojovou IP adresu požadavku na odpojení protokolu RADIUS" - -#~ msgid "NAS IP" -#~ msgstr "NAS IP" - -#~ msgid "NAS MAC" -#~ msgstr "NAS MAC" - -#~ msgid "Allow OpenID authentication" -#~ msgstr "Povolit autentizaci pomocí OpenID" - -#~ msgid "RADIUS server 1" -#~ msgstr "RADIUS server 1" - -#~ msgid "The IP address of radius server 1" -#~ msgstr "IP adresa prvního radius serveru" - -#~ msgid "RADIUS server 2" -#~ msgstr "RADIUS server 2" - -#~ msgid "The IP address of radius server 2" -#~ msgstr "IP adresa druhého radius serveru" - -#~ msgid "" -#~ "Swap the meaning of \"input octets\" and \"output octets\" as it related " -#~ "to RADIUS attribtues" -#~ msgstr "" -#~ "Prohodit významy spojení \"vstupní oktety\" a \"výstupní oktety\", " -#~ "vztahující se k atributům protokolu RADIUS" - -#~ msgid "Allow WPA guests" -#~ msgstr "Povolit WPA hosty" - -#~ msgid "Proxy client" -#~ msgstr "Proxy klient" - -#~ msgid "" -#~ "IP address from which radius requests are accepted. If omitted the server " -#~ "will not accept radius requests" -#~ msgstr "" -#~ "IP adresa, ze které budou přijímány požadavky radius. Pokud necháte " -#~ "prázdné, server nebude přijímat požadavky protokolu RADIUS." - -#~ msgid "Proxy listen address" -#~ msgstr "Naslouchající adresa Proxy" - -#~ msgid "Local interface IP address to use for accepting radius requests" -#~ msgstr "" -#~ "IP adresa místního rozhraní, určená pro naslouchání požadavkům protokolu " -#~ "RADIUS" - -#~ msgid "Proxy port" -#~ msgstr "Port Proxy" - -#~ msgid "UDP Port to listen to for accepting radius requests" -#~ msgstr "UDP port, určený pro naslouchání požadavkům protokolu RADIUS" - -#~ msgid "UAM configuration" -#~ msgstr "Konfigurace UAM" - -#~ msgid "Unified Configuration Method settings" -#~ msgstr "Nastavení 'Unified Configuration Method'" - -#~ msgid "Use Chilli XML" -#~ msgstr "Použít Chilli XML" - -#~ msgid "Default idle timeout" -#~ msgstr "Výchozí časový limit nečinnosti" - -#~ msgid "Default idle timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Výchozí časový limit nečinnosti, pokud nebyl nastaven pomocí RADIUS " -#~ "(standardně 0)" - -#~ msgid "Default session timeout" -#~ msgstr "Výchozí časový limit sezení" - -#~ msgid "" -#~ "Default session timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Výchozí časový limit sezení, pokud není RADIUS nastaven jinak (standardně " -#~ "0)" - -#~ msgid "Inspect DNS traffic" -#~ msgstr "Kontrolovat DNS provoz" - -#~ msgid "Local users file" -#~ msgstr "Soubor s místními uživateli" - -#~ msgid "" -#~ "A colon separated file containing usernames and passwords of locally " -#~ "authenticated users" -#~ msgstr "" -#~ "Soubor, obsahující uživatelská jména a hesla místně ověřovaných " -#~ "uživatelů. Jednotlivé položky jsou odděleny dvojtečkou." - -#~ msgid "Location name" -#~ msgstr "Název umístění" - -#~ msgid "Human readable location name used in JSON interface" -#~ msgstr "Čitelný název umístění, používán v rozhraní JSON" - -#~ msgid "Do not redirect to UAM server" -#~ msgstr "Nepřesměrovávat na UAM server" - -#~ msgid "" -#~ "Do not return to UAM server on login success, just redirect to original " -#~ "URL" -#~ msgstr "" -#~ "Při úspěšném přihlášení nevracet na UAM server, pouze přesměrovat na " -#~ "původní URL" - -#~ msgid "Do not do WISPr" -#~ msgstr "Neprovádět WISPr" - -#~ msgid "Allowed resources" -#~ msgstr "Povolené zdroje" - -#~ msgid "List of resources the client can access without first authenticating" -#~ msgstr "Seznam zdrojů, jež může klient využívat bez nutnosti autentizace" - -#~ msgid "Allow any DNS server" -#~ msgstr "Povolit libovolný DNS server" - -#~ msgid "Allow any DNS server for unauthenticated clients" -#~ msgstr "Povolí libovolný DNS server neověřeným klientům" - -#~ msgid "Allow any IP address" -#~ msgstr "Povolit libovolnou IP adresu" - -#~ msgid "Allowed domains" -#~ msgstr "Povolené domény" - -#~ msgid "UAM homepage" -#~ msgstr "Domovská stránka UAM" - -#~ msgid "URL of homepage to redirect unauthenticated users to" -#~ msgstr "" -#~ "URL domovské stránky, na kterou budou přesměrováni neověření uživatelé" - -#~ msgid "IP address to listen to for authentication of clients" -#~ msgstr "IP adresa, na které naslouchat za účelem ověřování klientů" - -#~ msgid "UAM logout IP" -#~ msgstr "OdhlaÅ¡ovací IP UAM" - -#~ msgid "" -#~ "Use this IP address to instantly logout a client accessing it (defaults " -#~ "to 1.1.1.1)" -#~ msgstr "" -#~ "Adresa, sloužící k okamžitému odhlášení klienta, pokud na ní přistoupí " -#~ "(standardně 1.1.1.1)" - -#~ msgid "UAM listening port" -#~ msgstr "Naslouchající port UAM" - -#~ msgid "UAM server" -#~ msgstr "UAM server" - -#~ msgid "URL of web server to use for authenticating clients" -#~ msgstr "URL web serveru, sloužícího k ověřování klientů" - -#~ msgid "UAM user interface" -#~ msgstr "Uživatelské rozhraní UAM" - -#~ msgid "Use status file" -#~ msgstr "Použít stavový soubor" - -#~ msgid "" -#~ "Write the status of clients in a non-volatile state file (experimental)" -#~ msgstr "" -#~ "Zapisovat stavy klientů do stálého stavového souboru (experimentální)" - -#~ msgid "WISPr login url" -#~ msgstr "PřihlaÅ¡ovací URL WISPr" - -#~ msgid "CGI program" -#~ msgstr "CGI program" - -#~ msgid "Web content directory" -#~ msgstr "Adresář s webovým obsahem" - -#~ msgid "Directory where embedded local web content is placed" -#~ msgstr "Adresář, ve kterém je umístěn místní webový obsah." - -#~ msgid "MAC configuration" -#~ msgstr "Nastavení MAC" - -#~ msgid "Configure MAC authentication" -#~ msgstr "Nastavit ověřování pomocí MAC" - -#~ msgid "Allowed MAC addresses" -#~ msgstr "Povolené MAC adresy" - -#~ msgid "List of MAC addresses for which MAC authentication will be performed" -#~ msgstr "Seznam MAC adres, pro které bude prováděno ověřování pomocí MAC" - -#~ msgid "Authenticate locally allowed MACs" -#~ msgstr "Ověřit lokálně povolené MAC" - -#~ msgid "Authenticate allowed MAC addresses without the use of RADIUS" -#~ msgstr "Ověří povolené MAC adresy bez použití protokolu RADIUS" - -#~ msgid "Enable MAC authentification" -#~ msgstr "Povolit ověřování pomocí MAC" - -#~ msgid "Password" -#~ msgstr "Heslo" - -#~ msgid "Suffix" -#~ msgstr "Přípona" diff --git a/package/luci/applications/luci-app-coovachilli/po/de/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/de/coovachilli.po deleted file mode 100644 index 79955d7ba5..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/de/coovachilli.po +++ /dev/null @@ -1,658 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2012-07-17 15:05+0200\n" -"Last-Translator: Martin \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Netzwerk-Konfiguration" - -msgid "RADIUS configuration" -msgstr "RADIUS Konfiguration" - -msgid "UAM and MAC Authentication" -msgstr "UAM- und MAC-Authentifizierung" - -#~ msgid "General configuration" -#~ msgstr "Allgemeine Einstellungen" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "Allgemeine Einstellungen zu CoovaChilli" - -#, fuzzy -#~ msgid "Command socket" -#~ msgstr "Eingabeschnittstelle" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "" -#~ "UNIX socket der fuer die Kommunikation mit chilli_query benutzt wird" - -#, fuzzy -#~ msgid "Config refresh interval" -#~ msgstr "Zeit zwischen neuladen der Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " -#~ msgstr "Zeit zwischen neuladen der Konfiguration" - -#~ msgid "Pid file" -#~ msgstr "Pid-Datei" - -#~ msgid "Filename to put the process id" -#~ msgstr "" -#~ "Name der Datei, in der die Pid gespeichert wird" - -#, fuzzy -#~ msgid "State directory" -#~ msgstr "Statisches Verzeichniss" - -#~ msgid "Directory of non-volatile data" -#~ msgstr "Verzeichniss für statische Daten" - -#, fuzzy -#~ msgid "TUN/TAP configuration" -#~ msgstr "TUN/TAP Konfiguration" - -#, fuzzy -#~ msgid "Network/Tun configuration" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Network down script" -#~ msgstr "" -#~ "Script, das nach einer Umwandlung von einer autorisierten zu einer " -#~ "unautorisierten Sitzung ausgeführt wird" - -#~ msgid "" -#~ "Script executed after a session has moved from authorized state to " -#~ "unauthorized" -#~ msgstr "" -#~ "Skript, das nach einer Umwandlung von einer autorisierten zu einer " -#~ "unautorisierten Sitzung ausgeführt wird" - -#~ msgid "Network up script" -#~ msgstr "Netzwerk Up Skript" - -#, fuzzy -#~ msgid "Script executed after the tun network interface has been brought up" -#~ msgstr "Script, dass nach erfolgreicher tun - Verbindung ausgeführt wird" - -#~ msgid "Primary DNS Server" -#~ msgstr "Primärer DNS-Server" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Sekundärer DNS-Server" - -#, fuzzy -#~ msgid "Domain name" -#~ msgstr "Domain Name" - -#~ msgid "" -#~ "Is used to inform the client about the domain name to use for DNS lookups" -#~ msgstr "" -#~ "Wird benutzt um Clients ueber den zu benutzenden Domain Namen fuer DNS " -#~ "Anfragen zu informieren" - -#~ msgid "Dynamic IP address pool" -#~ msgstr "Dynamischer IP-Adressen Pool" - -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "Legt einen Bereich von dynamischen IP-Adressen fest" - -#~ msgid "IP down script" -#~ msgstr "IP down Skript" - -#, fuzzy -#~ msgid "Script executed after the tun network interface has been taken down" -#~ msgstr "" -#~ "Script, das nach einer Umwandlung von einer autorisierten zu einer " -#~ "unautorisierten Sitzung ausgeführt wird" - -#, fuzzy -#~ msgid "IP up script" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "Script executed after the TUN/TAP network interface has been brought up" -#~ msgstr "Script, dass nach erfolgreicher tun - Verbindung ausgeführt wird" - -#, fuzzy -#~ msgid "Uplink subnet" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Network address of the uplink interface (CIDR notation)" -#~ msgstr "" -#~ "Zur Auflösung der Host-Namen benötigter DNS Server, die an den client " -#~ "übertragen wird" - -#, fuzzy -#~ msgid "Static IP address pool" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "Specifies a pool of static IP addresses" -#~ msgstr "Script, dass nach erfolgreicher tun - Verbindung ausgeführt wird" - -#, fuzzy -#~ msgid "TUN/TAP device" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "The specific device to use for the TUN/TAP interface" -#~ msgstr "" -#~ "Script, das nach einer Umwandlung von einer autorisierten zu einer " -#~ "unautorisierten Sitzung ausgeführt wird" - -#, fuzzy -#~ msgid "TX queue length" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "The TX queue length to set on the TUN/TAP interface" -#~ msgstr "" -#~ "Script, das nach einer Umwandlung von einer autorisierten zu einer " -#~ "unautorisierten Sitzung ausgeführt wird" - -#, fuzzy -#~ msgid "Use TAP device" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Use the TAP interface instead of TUN" -#~ msgstr "Script, dass nach erfolgreicher tun - Verbindung ausgeführt wird" - -#, fuzzy -#~ msgid "DHCP configuration" -#~ msgstr "TUN/TAP Konfiguration" - -#, fuzzy -#~ msgid "Set DHCP options for connecting clients" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "DHCP end number" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Where to stop assigning IP addresses (default 254)" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "DHCP interface" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Ethernet interface to listen to for the downlink interface" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Listen MAC address" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "MAC address to listen to. If not specified the MAC address of the " -#~ "interface will be used" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "DHCP start number" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Where to start assigning IP addresses (default 10)" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Enable IEEE 802.1x" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Enable IEEE 802.1x authentication and listen for EAP requests" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Leasetime" -#~ msgstr "Vorhaltezeit" - -#~ msgid "Use a DHCP lease of seconds (default 600)" -#~ msgstr "Benutze eine DHCP-Vorhaltezeit in Sekunden (voreingestelllt 600)" - -#~ msgid "Allow session update through RADIUS" -#~ msgstr "Erlaube Sitzungsupdates durch RADIUS" - -#, fuzzy -#~ msgid "" -#~ "Allow updating of session parameters with RADIUS attributes sent in " -#~ "Accounting-Response" -#~ msgstr "" -#~ "Erlaubt das Aktuallisieren der Sitzungsparameter mit RADIUS-attributen, " -#~ "die im der Konten-Antwort enthalten sind" - -#~ msgid "Admin password" -#~ msgstr "Administratorkennwort" - -#, fuzzy -#~ msgid "" -#~ "Password to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "Kennwort zur Administratoren-Authentifizierung um die chilli- " -#~ "konfigurationen aufzunehmen und eine Systemsitzung fürs Gerät zu erstellen" - -#, fuzzy -#~ msgid "Admin user" -#~ msgstr "Adminstratorenkennung" - -#, fuzzy -#~ msgid "" -#~ "User-name to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "Benutzername des für Administration berechtigten Benutzers. " - -#, fuzzy -#~ msgid "Do not check disconnection requests" -#~ msgstr "Ignoriere die Verbindungstrennungsanfragen" - -#, fuzzy -#~ msgid "Do not check the source IP address of radius disconnect requests" -#~ msgstr "Prüft nicht die Quell-IP einer RADIUS Verbindungstrennungsanfrage." - -#, fuzzy -#~ msgid "RADIUS disconnect port" -#~ msgstr "Port für die Verbindungstrennung" - -#, fuzzy -#~ msgid "UDP port to listen to for accepting radius disconnect requests" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "NAS IP" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Value to use in RADIUS NAS-IP-Address attribute" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "NAS MAC" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "MAC address value to use in RADIUS Called-Station-ID attribute" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Allow OpenID authentication" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "Allows OpenID authentication by sending ChilliSpot-Config=allow-" -#~ "openidauth in RADIUS Access-Requests" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "RADIUS accounting port" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "The UDP port number to use for radius accounting requests (default 1813)" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "RADIUS authentication port" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "The UDP port number to use for radius authentication requests (default " -#~ "1812)" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Option radiuscalled" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "RADIUS listen address" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Local interface IP address to use for the radius interface" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "RADIUS location ID" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "WISPr Location ID" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "RADIUS location name" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "WISPr Location Name" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "NAS ID" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Network access server identifier" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Option radiusnasip" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "NAS port type" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "Value of NAS-Port-Type attribute. Defaults to 19 (Wireless-IEEE-802.11)" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Send RADIUS VSA" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Send the ChilliSpot-OriginalURL RADIUS VSA in Access-Request" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "RADIUS secret" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Radius shared secret for both servers" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "RADIUS server 1" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "The IP address of radius server 1" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "RADIUS server 2" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "The IP address of radius server 2" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Swap octets" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "Swap the meaning of \"input octets\" and \"output octets\" as it related " -#~ "to RADIUS attribtues" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Allow WPA guests" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "Allows WPA Guest authentication by sending ChilliSpot-Config=allow-wpa-" -#~ "guests in RADIUS Access-Requests" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "UAM configuration" -#~ msgstr "TUN/TAP Konfiguration" - -#, fuzzy -#~ msgid "Unified Configuration Method settings" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Inspect DNS traffic" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "" -#~ "Inspect DNS packets and drop responses with any non- A, CNAME, SOA, or MX " -#~ "records to prevent dns tunnels (experimental)" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Local users file" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "" -#~ "A colon separated file containing usernames and passwords of locally " -#~ "authenticated users" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Human readable location name used in JSON interface" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Do not redirect to UAM server" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "" -#~ "Do not return to UAM server on login success, just redirect to original " -#~ "URL" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Do not do WISPr" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "Do not do any WISPr XML, assume the back-end is doing this instead" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Allowed resources" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "List of resources the client can access without first authenticating" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Allow any DNS server" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "Allow any DNS server for unauthenticated clients" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "Allow any IP address" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "" -#~ "Allow clients to use any IP settings they wish by spoofing ARP " -#~ "(experimental)" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Allowed domains" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "" -#~ "Defines a list of domain names to automatically add to the walled garden" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "UAM homepage" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "URL of homepage to redirect unauthenticated users to" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "UAM static content port" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "TCP port to bind to for only serving embedded content" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "UAM listening address" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "IP address to listen to for authentication of clients" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "UAM logout IP" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "" -#~ "Use this IP address to instantly logout a client accessing it (defaults " -#~ "to 1.1.1.1)" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "UAM listening port" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "TCP port to bind to for authenticating clients (default 3990)" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "UAM secret" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "Shared secret between uamserver and chilli" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "UAM server" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "URL of web server to use for authenticating clients" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "UAM user interface" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "" -#~ "An init.d style program to handle local content on the uamuiport web " -#~ "server" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "WISPr login url" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Specific URL to be given in WISPr XML LoginURL" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "CGI program" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "" -#~ "Executable to run as a CGI type program (like haserl) for URLs with " -#~ "extension .chi" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Web content directory" -#~ msgstr "Domain Name" - -#, fuzzy -#~ msgid "Directory where embedded local web content is placed" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "MAC configuration" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Configure MAC authentication" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Allowed MAC addresses" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "List of MAC addresses for which MAC authentication will be performed" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Authenticate locally allowed MACs" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Authenticate allowed MAC addresses without the use of RADIUS" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Enable MAC authentification" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Try to authenticate all users based on their mac address alone" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Password" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Password used when performing MAC authentication" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "Suffix" -#~ msgstr "Netzwerk/TUN Konfiguration" - -#, fuzzy -#~ msgid "coovachilli_macauth_macsuffix_desc" -#~ msgstr "Netzwerk/TUN Konfiguration" diff --git a/package/luci/applications/luci-app-coovachilli/po/el/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/el/coovachilli.po deleted file mode 100644 index 90d693d4ab..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/el/coovachilli.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-03-19 15:27+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "" - -msgid "RADIUS configuration" -msgstr "" - -msgid "UAM and MAC Authentication" -msgstr "" - -#~ msgid "General configuration" -#~ msgstr "Γενική παραμετροποίηση" - -#~ msgid "DHCP configuration" -#~ msgstr "Παραμετροποίηση DHCP" - -#~ msgid "DHCP interface" -#~ msgstr "Διεπαφή DHCP" - -#~ msgid "Enable IEEE 802.1x" -#~ msgstr "Ενεργοποίηση IEEE 802.1x" - -#~ msgid "Admin password" -#~ msgstr "Κωδικός πρόσβασης διαχειριστή" - -#~ msgid "Location name" -#~ msgstr "Όνομα τοποθεσίας" - -#~ msgid "CGI program" -#~ msgstr "Πρόγραμμα CGI" - -#~ msgid "Password" -#~ msgstr "Κωδικός πρόσβασης" diff --git a/package/luci/applications/luci-app-coovachilli/po/en/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/en/coovachilli.po deleted file mode 100644 index 6d7c747a55..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/en/coovachilli.po +++ /dev/null @@ -1,639 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-03-18 05:30+0200\n" -"Last-Translator: Anonymous Pootle User\n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "" - -msgid "RADIUS configuration" -msgstr "" - -msgid "UAM and MAC Authentication" -msgstr "" - -#, fuzzy -#~ msgid "General configuration" -#~ msgstr "General configuration" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "General CoovaChilli settings" - -#~ msgid "Command socket" -#~ msgstr "Command socket" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "UNIX socket used for communication with chilli_query" - -#~ msgid "Config refresh interval" -#~ msgstr "Config refresh interval" - -#~ msgid "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " -#~ msgstr "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " - -#~ msgid "Pid file" -#~ msgstr "Pid file" - -#~ msgid "Filename to put the process id" -#~ msgstr "Filename to put the process id" - -#~ msgid "State directory" -#~ msgstr "State directory" - -#~ msgid "Directory of non-volatile data" -#~ msgstr "Directory of non-volatile data" - -#~ msgid "TUN/TAP configuration" -#~ msgstr "TUN/TAP configuration" - -#~ msgid "Network/Tun configuration" -#~ msgstr "Network/Tun configuration" - -#~ msgid "Network down script" -#~ msgstr "Network down script" - -#~ msgid "" -#~ "Script executed after a session has moved from authorized state to " -#~ "unauthorized" -#~ msgstr "" -#~ "Script executed after a session has moved from authorized state to " -#~ "unauthorized" - -#~ msgid "Network up script" -#~ msgstr "Network up script" - -#~ msgid "Script executed after the tun network interface has been brought up" -#~ msgstr "Script executed after the tun network interface has been brought up" - -#~ msgid "Primary DNS Server" -#~ msgstr "Primary DNS Server" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Secondary DNS Server" - -#~ msgid "Domain name" -#~ msgstr "Domain name" - -#~ msgid "" -#~ "Is used to inform the client about the domain name to use for DNS lookups" -#~ msgstr "" -#~ "Is used to inform the client about the domain name to use for DNS lookups" - -#~ msgid "Dynamic IP address pool" -#~ msgstr "Dynamic IP address pool" - -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "Specifies a pool of dynamic IP addresses" - -#~ msgid "IP down script" -#~ msgstr "IP down script" - -#~ msgid "Script executed after the tun network interface has been taken down" -#~ msgstr "Script executed after the tun network interface has been taken down" - -#~ msgid "IP up script" -#~ msgstr "IP up script" - -#~ msgid "" -#~ "Script executed after the TUN/TAP network interface has been brought up" -#~ msgstr "" -#~ "Script executed after the TUN/TAP network interface has been brought up" - -#~ msgid "Uplink subnet" -#~ msgstr "Uplink subnet" - -#~ msgid "Network address of the uplink interface (CIDR notation)" -#~ msgstr "Network address of the uplink interface (CIDR notation)" - -#~ msgid "Static IP address pool" -#~ msgstr "Static IP address pool" - -#~ msgid "Specifies a pool of static IP addresses" -#~ msgstr "Specifies a pool of static IP addresses" - -#~ msgid "TUN/TAP device" -#~ msgstr "TUN/TAP device" - -#~ msgid "The specific device to use for the TUN/TAP interface" -#~ msgstr "The specific device to use for the TUN/TAP interface" - -#~ msgid "TX queue length" -#~ msgstr "TX queue length" - -#~ msgid "The TX queue length to set on the TUN/TAP interface" -#~ msgstr "The TX queue length to set on the TUN/TAP interface" - -#~ msgid "Use TAP device" -#~ msgstr "Use TAP device" - -#~ msgid "Use the TAP interface instead of TUN" -#~ msgstr "Use the TAP interface instead of TUN" - -#~ msgid "DHCP configuration" -#~ msgstr "DHCP configuration" - -#~ msgid "Set DHCP options for connecting clients" -#~ msgstr "Set DHCP options for connecting clients" - -#~ msgid "DHCP end number" -#~ msgstr "DHCP end number" - -#~ msgid "Where to stop assigning IP addresses (default 254)" -#~ msgstr "Where to stop assigning IP addresses (default 254)" - -#~ msgid "DHCP interface" -#~ msgstr "DHCP interface" - -#~ msgid "Ethernet interface to listen to for the downlink interface" -#~ msgstr "Ethernet interface to listen to for the downlink interface" - -#~ msgid "Listen MAC address" -#~ msgstr "Listen MAC address" - -#~ msgid "" -#~ "MAC address to listen to. If not specified the MAC address of the " -#~ "interface will be used" -#~ msgstr "" -#~ "MAC address to listen to. If not specified the MAC address of the " -#~ "interface will be used" - -#~ msgid "DHCP start number" -#~ msgstr "DHCP start number" - -#~ msgid "Where to start assigning IP addresses (default 10)" -#~ msgstr "Where to start assigning IP addresses (default 10)" - -#~ msgid "Enable IEEE 802.1x" -#~ msgstr "Enable IEEE 802.1x" - -#~ msgid "Enable IEEE 802.1x authentication and listen for EAP requests" -#~ msgstr "Enable IEEE 802.1x authentication and listen for EAP requests" - -#~ msgid "Leasetime" -#~ msgstr "Leasetime" - -#~ msgid "Use a DHCP lease of seconds (default 600)" -#~ msgstr "Use a DHCP lease of seconds (default 600)" - -#~ msgid "Allow session update through RADIUS" -#~ msgstr "Allow session update through RADIUS" - -#~ msgid "" -#~ "Allow updating of session parameters with RADIUS attributes sent in " -#~ "Accounting-Response" -#~ msgstr "" -#~ "Allow updating of session parameters with RADIUS attributes sent in " -#~ "Accounting-Response" - -#~ msgid "Admin password" -#~ msgstr "Admin password" - -#~ msgid "" -#~ "Password to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "Password to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" - -#~ msgid "Admin user" -#~ msgstr "Admin user" - -#~ msgid "" -#~ "User-name to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "User-name to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" - -#~ msgid "Do not check disconnection requests" -#~ msgstr "Do not check disconnection requests" - -#~ msgid "Do not check the source IP address of radius disconnect requests" -#~ msgstr "Do not check the source IP address of radius disconnect requests" - -#~ msgid "RADIUS disconnect port" -#~ msgstr "RADIUS disconnect port" - -#~ msgid "UDP port to listen to for accepting radius disconnect requests" -#~ msgstr "UDP port to listen to for accepting radius disconnect requests" - -#~ msgid "NAS IP" -#~ msgstr "NAS IP" - -#~ msgid "Value to use in RADIUS NAS-IP-Address attribute" -#~ msgstr "Value to use in RADIUS NAS-IP-Address attribute" - -#~ msgid "NAS MAC" -#~ msgstr "NAS MAC" - -#~ msgid "MAC address value to use in RADIUS Called-Station-ID attribute" -#~ msgstr "MAC address value to use in RADIUS Called-Station-ID attribute" - -#~ msgid "Allow OpenID authentication" -#~ msgstr "Allow OpenID authentication" - -#~ msgid "" -#~ "Allows OpenID authentication by sending ChilliSpot-Config=allow-" -#~ "openidauth in RADIUS Access-Requests" -#~ msgstr "" -#~ "Allows OpenID authentication by sending ChilliSpot-Config=allow-" -#~ "openidauth in RADIUS Access-Requests" - -#~ msgid "RADIUS accounting port" -#~ msgstr "RADIUS accounting port" - -#~ msgid "" -#~ "The UDP port number to use for radius accounting requests (default 1813)" -#~ msgstr "" -#~ "The UDP port number to use for radius accounting requests (default 1813)" - -#~ msgid "RADIUS authentication port" -#~ msgstr "RADIUS authentication port" - -#~ msgid "" -#~ "The UDP port number to use for radius authentication requests (default " -#~ "1812)" -#~ msgstr "" -#~ "The UDP port number to use for radius authentication requests (default " -#~ "1812)" - -#~ msgid "Option radiuscalled" -#~ msgstr "Option radiuscalled" - -#~ msgid "RADIUS listen address" -#~ msgstr "RADIUS listen address" - -#~ msgid "Local interface IP address to use for the radius interface" -#~ msgstr "Local interface IP address to use for the radius interface" - -#~ msgid "RADIUS location ID" -#~ msgstr "RADIUS location ID" - -#~ msgid "WISPr Location ID" -#~ msgstr "WISPr Location ID" - -#~ msgid "RADIUS location name" -#~ msgstr "RADIUS location name" - -#~ msgid "WISPr Location Name" -#~ msgstr "WISPr Location Name" - -#~ msgid "NAS ID" -#~ msgstr "NAS ID" - -#~ msgid "Network access server identifier" -#~ msgstr "Network access server identifier" - -#~ msgid "Option radiusnasip" -#~ msgstr "Option radiusnasip" - -#~ msgid "NAS port type" -#~ msgstr "NAS port type" - -#~ msgid "" -#~ "Value of NAS-Port-Type attribute. Defaults to 19 (Wireless-IEEE-802.11)" -#~ msgstr "" -#~ "Value of NAS-Port-Type attribute. Defaults to 19 (Wireless-IEEE-802.11)" - -#~ msgid "Send RADIUS VSA" -#~ msgstr "Send RADIUS VSA" - -#~ msgid "Send the ChilliSpot-OriginalURL RADIUS VSA in Access-Request" -#~ msgstr "Send the ChilliSpot-OriginalURL RADIUS VSA in Access-Request" - -#~ msgid "RADIUS secret" -#~ msgstr "RADIUS secret" - -#~ msgid "Radius shared secret for both servers" -#~ msgstr "Radius shared secret for both servers" - -#~ msgid "RADIUS server 1" -#~ msgstr "RADIUS server 1" - -#~ msgid "The IP address of radius server 1" -#~ msgstr "The IP address of radius server 1" - -#~ msgid "RADIUS server 2" -#~ msgstr "RADIUS server 2" - -#~ msgid "The IP address of radius server 2" -#~ msgstr "The IP address of radius server 2" - -#~ msgid "Swap octets" -#~ msgstr "Swap octets" - -#~ msgid "" -#~ "Swap the meaning of \"input octets\" and \"output octets\" as it related " -#~ "to RADIUS attribtues" -#~ msgstr "" -#~ "Swap the meaning of \"input octets\" and \"output octets\" as it related " -#~ "to RADIUS attribtues" - -#~ msgid "Allow WPA guests" -#~ msgstr "Allow WPA guests" - -#~ msgid "" -#~ "Allows WPA Guest authentication by sending ChilliSpot-Config=allow-wpa-" -#~ "guests in RADIUS Access-Requests" -#~ msgstr "" -#~ "Allows WPA Guest authentication by sending ChilliSpot-Config=allow-wpa-" -#~ "guests in RADIUS Access-Requests" - -#~ msgid "Proxy client" -#~ msgstr "Proxy client" - -#~ msgid "" -#~ "IP address from which radius requests are accepted. If omitted the server " -#~ "will not accept radius requests" -#~ msgstr "" -#~ "IP address from which radius requests are accepted. If omitted the server " -#~ "will not accept radius requests" - -#~ msgid "Proxy listen address" -#~ msgstr "Proxy listen address" - -#~ msgid "Local interface IP address to use for accepting radius requests" -#~ msgstr "Local interface IP address to use for accepting radius requests" - -#~ msgid "Proxy port" -#~ msgstr "Proxy port" - -#~ msgid "UDP Port to listen to for accepting radius requests" -#~ msgstr "UDP Port to listen to for accepting radius requests" - -#~ msgid "Proxy secret" -#~ msgstr "Proxy secret" - -#~ msgid "Radius shared secret for clients" -#~ msgstr "Radius shared secret for clients" - -#~ msgid "UAM configuration" -#~ msgstr "UAM configuration" - -#~ msgid "Unified Configuration Method settings" -#~ msgstr "Unified Configuration Method settings" - -#~ msgid "Use Chilli XML" -#~ msgstr "Use Chilli XML" - -#~ msgid "Return the so-called Chilli XML along with WISPr XML" -#~ msgstr "Return the so-called Chilli XML along with WISPr XML" - -#~ msgid "Default idle timeout" -#~ msgstr "Default idle timeout" - -#~ msgid "Default idle timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "Default idle timeout unless otherwise set by RADIUS (defaults to 0)" - -#~ msgid "Default interim interval" -#~ msgstr "Default interim interval" - -#~ msgid "" -#~ "Default interim-interval for RADIUS accounting unless otherwise set by " -#~ "RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Default interim-interval for RADIUS accounting unless otherwise set by " -#~ "RADIUS (defaults to 0)" - -#~ msgid "Default session timeout" -#~ msgstr "Default session timeout" - -#~ msgid "" -#~ "Default session timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Default session timeout unless otherwise set by RADIUS (defaults to 0)" - -#~ msgid "Inspect DNS traffic" -#~ msgstr "Inspect DNS traffic" - -#~ msgid "" -#~ "Inspect DNS packets and drop responses with any non- A, CNAME, SOA, or MX " -#~ "records to prevent dns tunnels (experimental)" -#~ msgstr "" -#~ "Inspect DNS packets and drop responses with any non- A, CNAME, SOA, or MX " -#~ "records to prevent dns tunnels (experimental)" - -#~ msgid "Local users file" -#~ msgstr "Local users file" - -#~ msgid "" -#~ "A colon separated file containing usernames and passwords of locally " -#~ "authenticated users" -#~ msgstr "" -#~ "A colon separated file containing usernames and passwords of locally " -#~ "authenticated users" - -#~ msgid "Location name" -#~ msgstr "Location name" - -#~ msgid "Human readable location name used in JSON interface" -#~ msgstr "Human readable location name used in JSON interface" - -#~ msgid "Do not redirect to UAM server" -#~ msgstr "Do not redirect to UAM server" - -#~ msgid "" -#~ "Do not return to UAM server on login success, just redirect to original " -#~ "URL" -#~ msgstr "" -#~ "Do not return to UAM server on login success, just redirect to original " -#~ "URL" - -#~ msgid "Do not do WISPr" -#~ msgstr "Do not do WISPr" - -#~ msgid "Do not do any WISPr XML, assume the back-end is doing this instead" -#~ msgstr "Do not do any WISPr XML, assume the back-end is doing this instead" - -#~ msgid "Post auth proxy" -#~ msgstr "Post auth proxy" - -#~ msgid "" -#~ "Used with postauthproxyport to define a post authentication HTTP proxy " -#~ "server" -#~ msgstr "" -#~ "Used with postauthproxyport to define a post authentication HTTP proxy " -#~ "server" - -#~ msgid "Post auth proxy port" -#~ msgstr "Post auth proxy port" - -#~ msgid "" -#~ "Used with postauthproxy to define a post authentication HTTP proxy server" -#~ msgstr "" -#~ "Used with postauthproxy to define a post authentication HTTP proxy server" - -#~ msgid "Allowed resources" -#~ msgstr "Allowed resources" - -#~ msgid "List of resources the client can access without first authenticating" -#~ msgstr "" -#~ "List of resources the client can access without first authenticating" - -#~ msgid "Allow any DNS server" -#~ msgstr "Allow any DNS server" - -#~ msgid "Allow any DNS server for unauthenticated clients" -#~ msgstr "Allow any DNS server for unauthenticated clients" - -#~ msgid "Allow any IP address" -#~ msgstr "Allow any IP address" - -#~ msgid "" -#~ "Allow clients to use any IP settings they wish by spoofing ARP " -#~ "(experimental)" -#~ msgstr "" -#~ "Allow clients to use any IP settings they wish by spoofing ARP " -#~ "(experimental)" - -#~ msgid "Allowed domains" -#~ msgstr "Allowed domains" - -#~ msgid "" -#~ "Defines a list of domain names to automatically add to the walled garden" -#~ msgstr "" -#~ "Defines a list of domain names to automatically add to the walled garden" - -#~ msgid "UAM homepage" -#~ msgstr "UAM homepage" - -#~ msgid "URL of homepage to redirect unauthenticated users to" -#~ msgstr "URL of homepage to redirect unauthenticated users to" - -#~ msgid "UAM static content port" -#~ msgstr "UAM static content port" - -#~ msgid "TCP port to bind to for only serving embedded content" -#~ msgstr "TCP port to bind to for only serving embedded content" - -#~ msgid "UAM listening address" -#~ msgstr "UAM listening address" - -#~ msgid "IP address to listen to for authentication of clients" -#~ msgstr "IP address to listen to for authentication of clients" - -#~ msgid "UAM logout IP" -#~ msgstr "UAM logout IP" - -#~ msgid "" -#~ "Use this IP address to instantly logout a client accessing it (defaults " -#~ "to 1.1.1.1)" -#~ msgstr "" -#~ "Use this IP address to instantly logout a client accessing it (defaults " -#~ "to 1.1.1.1)" - -#~ msgid "UAM listening port" -#~ msgstr "UAM listening port" - -#~ msgid "TCP port to bind to for authenticating clients (default 3990)" -#~ msgstr "TCP port to bind to for authenticating clients (default 3990)" - -#~ msgid "UAM secret" -#~ msgstr "UAM secret" - -#~ msgid "Shared secret between uamserver and chilli" -#~ msgstr "Shared secret between uamserver and chilli" - -#~ msgid "UAM server" -#~ msgstr "UAM server" - -#~ msgid "URL of web server to use for authenticating clients" -#~ msgstr "URL of web server to use for authenticating clients" - -#~ msgid "UAM user interface" -#~ msgstr "UAM user interface" - -#~ msgid "" -#~ "An init.d style program to handle local content on the uamuiport web " -#~ "server" -#~ msgstr "" -#~ "An init.d style program to handle local content on the uamuiport web " -#~ "server" - -#~ msgid "Use status file" -#~ msgstr "Use status file" - -#~ msgid "" -#~ "Write the status of clients in a non-volatile state file (experimental)" -#~ msgstr "" -#~ "Write the status of clients in a non-volatile state file (experimental)" - -#~ msgid "WISPr login url" -#~ msgstr "WISPr login url" - -#~ msgid "Specific URL to be given in WISPr XML LoginURL" -#~ msgstr "Specific URL to be given in WISPr XML LoginURL" - -#~ msgid "CGI program" -#~ msgstr "CGI program" - -#~ msgid "" -#~ "Executable to run as a CGI type program (like haserl) for URLs with " -#~ "extension .chi" -#~ msgstr "" -#~ "Executable to run as a CGI type program (like haserl) for URLs with " -#~ "extension .chi" - -#~ msgid "Web content directory" -#~ msgstr "Web content directory" - -#~ msgid "Directory where embedded local web content is placed" -#~ msgstr "Directory where embedded local web content is placed" - -#~ msgid "MAC configuration" -#~ msgstr "MAC configuration" - -#~ msgid "Configure MAC authentication" -#~ msgstr "Configure MAC authentication" - -#~ msgid "Allowed MAC addresses" -#~ msgstr "Allowed MAC addresses" - -#~ msgid "List of MAC addresses for which MAC authentication will be performed" -#~ msgstr "" -#~ "List of MAC addresses for which MAC authentication will be performed" - -#~ msgid "Authenticate locally allowed MACs" -#~ msgstr "Authenticate locally allowed MACs" - -#~ msgid "Authenticate allowed MAC addresses without the use of RADIUS" -#~ msgstr "Authenticate allowed MAC addresses without the use of RADIUS" - -#~ msgid "Enable MAC authentification" -#~ msgstr "Enable MAC authentification" - -#~ msgid "Try to authenticate all users based on their mac address alone" -#~ msgstr "Try to authenticate all users based on their mac address alone" - -#~ msgid "Password" -#~ msgstr "Password" - -#~ msgid "Password used when performing MAC authentication" -#~ msgstr "Password used when performing MAC authentication" - -#~ msgid "Suffix" -#~ msgstr "Suffix" - -#~ msgid "coovachilli_macauth_macsuffix_desc" -#~ msgstr "" -#~ "Suffix to add to the MAC address in order to form the User-Name, which is " -#~ "sent to the radius server" diff --git a/package/luci/applications/luci-app-coovachilli/po/es/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/es/coovachilli.po deleted file mode 100644 index 886da590ef..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/es/coovachilli.po +++ /dev/null @@ -1,113 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-07-28 23:18+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Configuración de Red" - -msgid "RADIUS configuration" -msgstr "Configuración RADIUS" - -msgid "UAM and MAC Authentication" -msgstr "Autenticación UAM y MAC" - -#~ msgid "General configuration" -#~ msgstr "Configuración General" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "Configuración General de CoovaChilli" - -#~ msgid "Command socket" -#~ msgstr "Socket de Comando" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "SocketUNIX utilizado para comunicación con chilli_query" - -#~ msgid "Config refresh interval" -#~ msgstr "Configuración del intervalo de refresco " - -#~ msgid "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " -#~ msgstr "" -#~ "Vuelve a leer el fichero de configuracion y las consultas DNS cada " -#~ "intervalo de segundos. Eso tiene el mismo efecto que enviar la señal HUP. " -#~ "Si el intervalo es 0 (cero) se inhabilita la función." - -#~ msgid "Pid file" -#~ msgstr "Fichero Pid" - -#~ msgid "Filename to put the process id" -#~ msgstr "Nombre de archivo donde poner el ID del proceso" - -#~ msgid "State directory" -#~ msgstr "Directorio de estado" - -#~ msgid "Directory of non-volatile data" -#~ msgstr "Directorio de datos no volátiles" - -#~ msgid "TUN/TAP configuration" -#~ msgstr "Configuración TUN / TAP" - -#~ msgid "Network/Tun configuration" -#~ msgstr "Configuración de Red / Tun" - -#~ msgid "" -#~ "Script executed after a session has moved from authorized state to " -#~ "unauthorized" -#~ msgstr "" -#~ "Script ejecutado cuando el estado de una sesión es alterado de autorizado " -#~ "a no autorizado" - -#~ msgid "Network up script" -#~ msgstr "Script de subida de red" - -#~ msgid "Script executed after the tun network interface has been brought up" -#~ msgstr "" -#~ "Script ejecutado después de que la interfaz de red tun haya sido " -#~ "levantado." - -#~ msgid "Primary DNS Server" -#~ msgstr "Servidor DNS primario" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Servidor DNS secundario" - -#~ msgid "Domain name" -#~ msgstr "Nombre de dominio" - -#~ msgid "" -#~ "Is used to inform the client about the domain name to use for DNS lookups" -#~ msgstr "" -#~ "Se utiliza para informar al cliente sobre el nombre de dominio a utilizar " -#~ "para las consultas DNS" - -#~ msgid "Dynamic IP address pool" -#~ msgstr "Conjunto de direcciones IP Dinámicas" - -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "Especifica un conjunto de direcciones IP Dinámicas" - -#~ msgid "IP down script" -#~ msgstr "Scripts de bajada IP" - -#~ msgid "Script executed after the tun network interface has been taken down" -#~ msgstr "Script ejecutado después de que la red de interfaz tun sea bajado" - -#~ msgid "IP up script" -#~ msgstr "Script de subida IP" diff --git a/package/luci/applications/luci-app-coovachilli/po/fr/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/fr/coovachilli.po deleted file mode 100644 index b95bb4491b..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/fr/coovachilli.po +++ /dev/null @@ -1,26 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-11-06 13:16+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Configuration Réseau" - -msgid "RADIUS configuration" -msgstr "Configuration RADIUS" - -msgid "UAM and MAC Authentication" -msgstr "Authentification UAM et MAC" diff --git a/package/luci/applications/luci-app-coovachilli/po/he/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/he/coovachilli.po deleted file mode 100644 index 04efb54da3..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/he/coovachilli.po +++ /dev/null @@ -1,26 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-10 03:37+0200\n" -"Last-Translator: Snoof \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "" - -msgid "Network Configuration" -msgstr "תצורת רשת" - -msgid "RADIUS configuration" -msgstr "" - -msgid "UAM and MAC Authentication" -msgstr "אימות UAM ן- MAC" diff --git a/package/luci/applications/luci-app-coovachilli/po/hu/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/hu/coovachilli.po deleted file mode 100644 index 5ac8278f32..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/hu/coovachilli.po +++ /dev/null @@ -1,26 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-07-05 16:44+0200\n" -"Last-Translator: Gyula \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Hálózati konfiguráció" - -msgid "RADIUS configuration" -msgstr "RADIUS konfiguráció" - -msgid "UAM and MAC Authentication" -msgstr "UAM és MAC azonosítás" diff --git a/package/luci/applications/luci-app-coovachilli/po/it/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/it/coovachilli.po deleted file mode 100644 index dbf5b9630f..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/it/coovachilli.po +++ /dev/null @@ -1,75 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2013-02-03 13:43+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Configurazione della Rete" - -msgid "RADIUS configuration" -msgstr "Configurazione RAGGIO" - -msgid "UAM and MAC Authentication" -msgstr "Autenticazione UAM e MAC" - -#~ msgid "General configuration" -#~ msgstr "Configurazione generale" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "Impostazioni generali di CoovaChilli" - -#~ msgid "Command socket" -#~ msgstr "Socket di comando" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "Socket UNIX usato per la comunicazione con chilli_query" - -#~ msgid "Config refresh interval" -#~ msgstr "Intervallo di aggiornamento configurazione" - -#~ msgid "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " -#~ msgstr "" -#~ "Rilegge il file di configurazione ed esegue una ricerca DNS ogni " -#~ "intervallo in secondi. Questo ha lo stesso risultato dell'invio del " -#~ "segnale HUP. Se l'intervallo è 0 (zero) questa funzionalità è " -#~ "disabilitata." - -#~ msgid "Pid file" -#~ msgstr "File Pid" - -#~ msgid "TUN/TAP configuration" -#~ msgstr "Configurazione TUN/TAP" - -#~ msgid "Network/Tun configuration" -#~ msgstr "Configurazione Rete/TUN" - -#~ msgid "Primary DNS Server" -#~ msgstr "Server DNS Primario" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Server DNS Secondario" - -#~ msgid "Domain name" -#~ msgstr "Nome di dominio" - -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "Specifica un pool di indirizzi IP dinamici" - -#~ msgid "Network address of the uplink interface (CIDR notation)" -#~ msgstr "Indirizzo di rete dell'interfaccia di uplink (CIDR notazione)" diff --git a/package/luci/applications/luci-app-coovachilli/po/ja/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/ja/coovachilli.po deleted file mode 100644 index 941571256f..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/ja/coovachilli.po +++ /dev/null @@ -1,25 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "CoovaChilli" -msgstr "" - -msgid "Network Configuration" -msgstr "" - -msgid "RADIUS configuration" -msgstr "" - -msgid "UAM and MAC Authentication" -msgstr "" diff --git a/package/luci/applications/luci-app-coovachilli/po/ms/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/ms/coovachilli.po deleted file mode 100644 index d910ef2db8..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/ms/coovachilli.po +++ /dev/null @@ -1,22 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "CoovaChilli" -msgstr "" - -msgid "Network Configuration" -msgstr "" - -msgid "RADIUS configuration" -msgstr "" - -msgid "UAM and MAC Authentication" -msgstr "" diff --git a/package/luci/applications/luci-app-coovachilli/po/no/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/no/coovachilli.po deleted file mode 100644 index f37afdd550..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/no/coovachilli.po +++ /dev/null @@ -1,26 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-04-05 08:41+0200\n" -"Last-Translator: protx \n" -"Language-Team: none\n" -"Language: no\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Nettverk Konfigurasjon" - -msgid "RADIUS configuration" -msgstr "RADIUS Konfigurasjon" - -msgid "UAM and MAC Authentication" -msgstr "UAM og MAC Autentisering" diff --git a/package/luci/applications/luci-app-coovachilli/po/pl/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/pl/coovachilli.po deleted file mode 100644 index 7dc2ef853a..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/pl/coovachilli.po +++ /dev/null @@ -1,27 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-25 06:22+0200\n" -"Last-Translator: obsy \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Konfiguracja sieci" - -msgid "RADIUS configuration" -msgstr "Konfiguracja RADIUS`a" - -msgid "UAM and MAC Authentication" -msgstr "Uwierzytelnianie UAM oraz MAC" diff --git a/package/luci/applications/luci-app-coovachilli/po/pt-br/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/pt-br/coovachilli.po deleted file mode 100644 index 46ed3581b0..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/pt-br/coovachilli.po +++ /dev/null @@ -1,657 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2011-10-18 20:37+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Configuração de rede" - -msgid "RADIUS configuration" -msgstr "Configuração de RADIUS" - -msgid "UAM and MAC Authentication" -msgstr "Autenticação UAM e MAC" - -#~ msgid "General configuration" -#~ msgstr "Configuração Geral" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "Definições gerais do CoovaChilli" - -#~ msgid "Command socket" -#~ msgstr "Soquete de comando" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "Soquete UNIX para comunicação com chilli_query" - -#~ msgid "Config refresh interval" -#~ msgstr "Intervalo de atualização da configuração" - -#~ msgid "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " -#~ msgstr "" -#~ "Reler o arquivo de configuração e faça a busca DNS a cada intervalo de " -#~ "segundos. Isto tem o mesmo efeito que o envio do sinal HUP. Se o " -#~ "intervalo for 0, (zero) esta funcionalidade será desativada." - -#~ msgid "Pid file" -#~ msgstr "Arquivo de PID" - -#~ msgid "Filename to put the process id" -#~ msgstr "Nome do arquivo onde será armazenado o PID" - -#~ msgid "State directory" -#~ msgstr "Diretório de estado" - -#~ msgid "Directory of non-volatile data" -#~ msgstr "Diretório para dados não-voláteis" - -#~ msgid "TUN/TAP configuration" -#~ msgstr "Configuração TUN/TAP" - -#~ msgid "Network/Tun configuration" -#~ msgstr "Configuração de Rede/Tun" - -#~ msgid "Network down script" -#~ msgstr "Script de descida de rede" - -#~ msgid "" -#~ "Script executed after a session has moved from authorized state to " -#~ "unauthorized" -#~ msgstr "" -#~ "Script executado após o estado de uma sessão ser alterado de autorizado " -#~ "para não-autorizado" - -#~ msgid "Network up script" -#~ msgstr "Script de subida da rede" - -#~ msgid "Script executed after the tun network interface has been brought up" -#~ msgstr "Script executado após a interface tun de rede ter sido levantada" - -#~ msgid "Primary DNS Server" -#~ msgstr "Servidor DNS primário" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Servidor DNS secundário" - -#~ msgid "Domain name" -#~ msgstr "Domínio" - -#~ msgid "" -#~ "Is used to inform the client about the domain name to use for DNS lookups" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o domínio a ser utilizado para " -#~ "consultas DNS" - -#~ msgid "Dynamic IP address pool" -#~ msgstr "Conjunto de endereços IP dinâmicos" - -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "Especifica um conjunto de endereços IP dinâmicos" - -#~ msgid "IP down script" -#~ msgstr "Script de descida da rede IP" - -#~ msgid "Script executed after the tun network interface has been taken down" -#~ msgstr "Script executado após a rede da interface tun seja baixada" - -#~ msgid "IP up script" -#~ msgstr "Script de subida da rede IP" - -#~ msgid "" -#~ "Script executed after the TUN/TAP network interface has been brought up" -#~ msgstr "Script executado após a rede da interface TUN/TAP seja levantadas" - -#~ msgid "Uplink subnet" -#~ msgstr "Subrede do enlace superior (uplink)" - -#~ msgid "Network address of the uplink interface (CIDR notation)" -#~ msgstr "Endereço de rede da interface do enlace superior (notação CIDR)" - -#~ msgid "Static IP address pool" -#~ msgstr "Conjunto de endereços IP estáticos" - -#~ msgid "Specifies a pool of static IP addresses" -#~ msgstr "Especifica um conjunto de endereços IP estáticos" - -#~ msgid "TUN/TAP device" -#~ msgstr "Dispositivo TUN/TAP" - -#~ msgid "The specific device to use for the TUN/TAP interface" -#~ msgstr "O dispositivo especificado para ser usado pela interface TUN/TAP" - -#~ msgid "TX queue length" -#~ msgstr "Tamanho da fila de envio (TX)" - -#~ msgid "The TX queue length to set on the TUN/TAP interface" -#~ msgstr "O tamanho da fila de envio (TX) para ser usado na interface TUN/TAP" - -#~ msgid "Use TAP device" -#~ msgstr "Use dispositivo TAP" - -#~ msgid "Use the TAP interface instead of TUN" -#~ msgstr "Use o dispositivo TAP ao invés de TUN" - -#~ msgid "DHCP configuration" -#~ msgstr "Configuração do DHCP" - -#~ msgid "Set DHCP options for connecting clients" -#~ msgstr "Ajusta as opções do DHCP para clientes a se conectarem" - -#~ msgid "DHCP end number" -#~ msgstr "Número final do DHCP" - -#~ msgid "Where to stop assigning IP addresses (default 254)" -#~ msgstr "Onde terminar a atribuição de endereços IP (padrão 254)" - -#~ msgid "DHCP interface" -#~ msgstr "Interface DHCP" - -#~ msgid "Ethernet interface to listen to for the downlink interface" -#~ msgstr "Interface Ethernet para escutar por conexões dos clientes" - -#~ msgid "Listen MAC address" -#~ msgstr "Endereço MAC de escuta" - -#~ msgid "" -#~ "MAC address to listen to. If not specified the MAC address of the " -#~ "interface will be used" -#~ msgstr "" -#~ "Endereço MAC de escuta. Se não especificado, o endereço MAC da interface " -#~ "será usado" - -#~ msgid "DHCP start number" -#~ msgstr "Número inicial do DHCP" - -#~ msgid "Where to start assigning IP addresses (default 10)" -#~ msgstr "A partir de onde iniciará a atribuição de endereços IP (padrão 10)" - -#~ msgid "Enable IEEE 802.1x" -#~ msgstr "Habilite IEEE 802.1x" - -#~ msgid "Enable IEEE 802.1x authentication and listen for EAP requests" -#~ msgstr "Habilite autenticação IEEE 802.1x e escute por requisições EAP" - -#~ msgid "Leasetime" -#~ msgstr "Tempo de atribuição" - -#~ msgid "Use a DHCP lease of seconds (default 600)" -#~ msgstr "Use o tempo de atribuição do DHCP, em segundos (padrão 600)" - -#~ msgid "Allow session update through RADIUS" -#~ msgstr "Permite a atualização da sessão através do RADIUS" - -#~ msgid "" -#~ "Allow updating of session parameters with RADIUS attributes sent in " -#~ "Accounting-Response" -#~ msgstr "" -#~ "Permite a atualização dos parâmetros da sessão com atributos RADIUS " -#~ "enviados na Contabilidade-Resposta" - -#~ msgid "Admin password" -#~ msgstr "Senha do Administrador" - -#~ msgid "" -#~ "Password to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "Senha para a autenticação do usuário administrador para pegar as " -#~ "configurações do chili e estabelecer uma sessão de dispositivo \"sistema\"" - -#~ msgid "Admin user" -#~ msgstr "Usuário administrador" - -#~ msgid "" -#~ "User-name to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "Nome do usuário para a autenticação do usuário administrador para pegar " -#~ "as configurações do chili e estabelecer uma sessão de dispositivo " -#~ "\"sistema\"" - -#~ msgid "Do not check disconnection requests" -#~ msgstr "Não verifique as requisições de desconexão" - -#~ msgid "Do not check the source IP address of radius disconnect requests" -#~ msgstr "" -#~ "Não verifique o endereço IP de origem das requisições de desconexão do " -#~ "radius" - -#~ msgid "RADIUS disconnect port" -#~ msgstr "Porta de desconexão do RADIUS" - -#~ msgid "UDP port to listen to for accepting radius disconnect requests" -#~ msgstr "" -#~ "Porta UDP de escuta para aceitar requisições de desconexão do radius" - -#~ msgid "NAS IP" -#~ msgstr "IP do NAS" - -#~ msgid "Value to use in RADIUS NAS-IP-Address attribute" -#~ msgstr "Valor para usar no atributo NAS-IP-Address do RADIUS" - -#~ msgid "NAS MAC" -#~ msgstr "MAC do NAS" - -#~ msgid "MAC address value to use in RADIUS Called-Station-ID attribute" -#~ msgstr "Endereço MAC para usar no atributo Called-Station-ID do RADIUS" - -#~ msgid "Allow OpenID authentication" -#~ msgstr "Permitir autenticação OpenID" - -#~ msgid "" -#~ "Allows OpenID authentication by sending ChilliSpot-Config=allow-" -#~ "openidauth in RADIUS Access-Requests" -#~ msgstr "" -#~ "Permitir autenticação OpenID enviando ChilliSpot-Config=allow-openidauth " -#~ "na Resquisição de Acesso do Radius" - -#~ msgid "RADIUS accounting port" -#~ msgstr "Porta de contabilidade do RADIUS" - -#~ msgid "" -#~ "The UDP port number to use for radius accounting requests (default 1813)" -#~ msgstr "" -#~ "O número da porta UDP para ser usada pela requisição de contabilização do " -#~ "radius (padrão 1813)" - -#~ msgid "RADIUS authentication port" -#~ msgstr "Porta de autenticação do RADIUS" - -#~ msgid "" -#~ "The UDP port number to use for radius authentication requests (default " -#~ "1812)" -#~ msgstr "" -#~ "O número da porta UDP para ser usada pela requisição de autenticação do " -#~ "radius (padrão 1812)" - -#~ msgid "Option radiuscalled" -#~ msgstr "Opção radiuscalled" - -#~ msgid "RADIUS listen address" -#~ msgstr "Endereço de escuta do RADIUS" - -#~ msgid "Local interface IP address to use for the radius interface" -#~ msgstr "Endereço IP da interface local para a interface radius" - -#~ msgid "RADIUS location ID" -#~ msgstr "ID da localização do RADIUS" - -#~ msgid "WISPr Location ID" -#~ msgstr "ID da Localização WISPr" - -#~ msgid "RADIUS location name" -#~ msgstr "Nome da localização do RADIUS" - -#~ msgid "WISPr Location Name" -#~ msgstr "Nome da localização WISPr" - -#~ msgid "NAS ID" -#~ msgstr "ID do NAS" - -#~ msgid "Network access server identifier" -#~ msgstr "Identificador do servidor de acesso à rede" - -#~ msgid "Option radiusnasip" -#~ msgstr "Opção radiusnasip" - -#~ msgid "NAS port type" -#~ msgstr "Tipo de porta NAS" - -#~ msgid "" -#~ "Value of NAS-Port-Type attribute. Defaults to 19 (Wireless-IEEE-802.11)" -#~ msgstr "" -#~ "Valor do atributo do NAS-Port-Type. O padrão é 19 (IEEE-802.11-Sem fio)" - -#~ msgid "Send RADIUS VSA" -#~ msgstr "Enviar VSA do RADIUS" - -#~ msgid "Send the ChilliSpot-OriginalURL RADIUS VSA in Access-Request" -#~ msgstr "" -#~ "Enviar o ChilliSpot-OriginalURL do VSA do RADIUS na Requisição de Acesso" - -#~ msgid "RADIUS secret" -#~ msgstr "Segredo do RADIUS" - -#~ msgid "Radius shared secret for both servers" -#~ msgstr "Segredo compartilhado entre ambos os servidores Radius" - -#~ msgid "RADIUS server 1" -#~ msgstr "Servidor 1 do RADIUS" - -#~ msgid "The IP address of radius server 1" -#~ msgstr "Endereço IP do servidor 1 do radius" - -#~ msgid "RADIUS server 2" -#~ msgstr "Servidor 2 do RADIUS" - -#~ msgid "The IP address of radius server 2" -#~ msgstr "Endereço IP do servidor 2 do radius" - -#~ msgid "Swap octets" -#~ msgstr "Troque octetos" - -#~ msgid "" -#~ "Swap the meaning of \"input octets\" and \"output octets\" as it related " -#~ "to RADIUS attribtues" -#~ msgstr "" -#~ "Troca o significado de \"octetos de entrada\" e \"octetos de saída\" como " -#~ "está relatado nos atributos RADIUS" - -#~ msgid "Allow WPA guests" -#~ msgstr "Permite convidados WPA" - -#~ msgid "" -#~ "Allows WPA Guest authentication by sending ChilliSpot-Config=allow-wpa-" -#~ "guests in RADIUS Access-Requests" -#~ msgstr "" -#~ "Permite a autenticação de convidados WPA enviando ChilliSpot-Config=allow-" -#~ "wpa-guests na Requisição de Acesso do RADIUS" - -#~ msgid "Proxy client" -#~ msgstr "Cliente proxy" - -#~ msgid "" -#~ "IP address from which radius requests are accepted. If omitted the server " -#~ "will not accept radius requests" -#~ msgstr "" -#~ "Endereço IP do qual as requisições radius serão aceitas. Se omitido, o " -#~ "servidor não vai aceitar requisições radius" - -#~ msgid "Proxy listen address" -#~ msgstr "Endereço de escuta do proxy" - -#~ msgid "Local interface IP address to use for accepting radius requests" -#~ msgstr "" -#~ "Endereço IP da interface local usado para aceitar as requisições radius" - -#~ msgid "Proxy port" -#~ msgstr "Porta do Proxy" - -#~ msgid "UDP Port to listen to for accepting radius requests" -#~ msgstr "Porta UDP para aceitar requisições radius" - -#~ msgid "Proxy secret" -#~ msgstr "Segredo do Proxy" - -#~ msgid "Radius shared secret for clients" -#~ msgstr "Segredo compartilhado do Radius para clientes" - -#~ msgid "UAM configuration" -#~ msgstr "Configuração UAM" - -#~ msgid "Unified Configuration Method settings" -#~ msgstr "Configurações do Método de Configuração Unificado" - -#~ msgid "Use Chilli XML" -#~ msgstr "Use XML do Chilli" - -#~ msgid "Return the so-called Chilli XML along with WISPr XML" -#~ msgstr "Retorna o famoso XML do Chili juntamente com o XML do WISPr" - -#~ msgid "Default idle timeout" -#~ msgstr "Estouro de tempo de ociosidade padrão" - -#~ msgid "Default idle timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Estouro de tempo de ociosidade padrão, a não ser que seja definido pelo " -#~ "RADIUS (padrão é 0)" - -#~ msgid "Default interim interval" -#~ msgstr "Intervalo padrão como interino" - -#~ msgid "" -#~ "Default interim-interval for RADIUS accounting unless otherwise set by " -#~ "RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Intervalo padrão como interino para a contabilidade do RADIUS, a não ser " -#~ "que seja definido pelo RADIUS (padrão é 0)" - -#~ msgid "Default session timeout" -#~ msgstr "Estouro de tempo padrão da sessão" - -#~ msgid "" -#~ "Default session timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Estouro de tempo padrão da sessão, a não ser que seja definido pelo " -#~ "RADIUS (padrão é 0)" - -#~ msgid "Inspect DNS traffic" -#~ msgstr "Inspeciona tráfego DNS" - -#~ msgid "" -#~ "Inspect DNS packets and drop responses with any non- A, CNAME, SOA, or MX " -#~ "records to prevent dns tunnels (experimental)" -#~ msgstr "" -#~ "Inspeciona os pacotes DNS e descarta respostas para qualquer registro que " -#~ "não seja A, CNAME, SOA ou MX. Isto evita túneis pelo DNS (experimental)" - -#~ msgid "Local users file" -#~ msgstr "Arquivo de usuários locais" - -#~ msgid "" -#~ "A colon separated file containing usernames and passwords of locally " -#~ "authenticated users" -#~ msgstr "" -#~ "Um arquivo separado por dois pontos (:) contendo o nome de usuário e " -#~ "senhas para usuários autenticados localmente" - -#~ msgid "Location name" -#~ msgstr "Nome da localização" - -#~ msgid "Human readable location name used in JSON interface" -#~ msgstr "Nome da localização legível usado na interface JSON" - -#~ msgid "Do not redirect to UAM server" -#~ msgstr "Não redirecionar para servidor UAM" - -#~ msgid "" -#~ "Do not return to UAM server on login success, just redirect to original " -#~ "URL" -#~ msgstr "" -#~ "Não redirecione para o servidor UAM quando o login for bem sucedido. " -#~ "Somente redirecione para a URL original" - -#~ msgid "Do not do WISPr" -#~ msgstr "Não faça WISPr" - -#~ msgid "Do not do any WISPr XML, assume the back-end is doing this instead" -#~ msgstr "" -#~ "Não faça qualquer XML do WISPr. Ao invés disto, assuma que o servidor " -#~ "está fazendo isto" - -#~ msgid "Post auth proxy" -#~ msgstr "Proxy após a autenticação" - -#~ msgid "" -#~ "Used with postauthproxyport to define a post authentication HTTP proxy " -#~ "server" -#~ msgstr "" -#~ "Usado em conjunto com postauthproxyport para definir um servidor PROXY " -#~ "HTTP após a autenticação" - -#~ msgid "Post auth proxy port" -#~ msgstr "Porta do proxy após a autenticação" - -#~ msgid "" -#~ "Used with postauthproxy to define a post authentication HTTP proxy server" -#~ msgstr "" -#~ "Usado em conjunto com postauthproxyport para definir um servidor PROXY " -#~ "HTTP após a autenticação" - -#~ msgid "Allowed resources" -#~ msgstr "Recursos permitidos" - -#~ msgid "List of resources the client can access without first authenticating" -#~ msgstr "" -#~ "Lista de recursos que o cliente pode acessar sem antes se autenticar" - -#~ msgid "Allow any DNS server" -#~ msgstr "Permitir qualquer Servidor DNS" - -#~ msgid "Allow any DNS server for unauthenticated clients" -#~ msgstr "Permitir qualquer servidor DNS para clientes não autenticados" - -#~ msgid "Allow any IP address" -#~ msgstr "Permitir qualquer endereço IP" - -#~ msgid "" -#~ "Allow clients to use any IP settings they wish by spoofing ARP " -#~ "(experimental)" -#~ msgstr "" -#~ "Permitir que clientes usem qualquer configuração de IP desejada usando a " -#~ "técnica de falsificação de APR (experimental)" - -#~ msgid "Allowed domains" -#~ msgstr "Domínios permitidos" - -#~ msgid "" -#~ "Defines a list of domain names to automatically add to the walled garden" -#~ msgstr "" -#~ "Define uma lista de domínios automaticamente adicionados para acesso da " -#~ "zona controlada" - -#~ msgid "UAM homepage" -#~ msgstr "Página do UAM" - -#~ msgid "URL of homepage to redirect unauthenticated users to" -#~ msgstr "URL da página para onde redirecionar os usuários não autenticados" - -#~ msgid "UAM static content port" -#~ msgstr "Porta de conteúdo estático do UAM" - -#~ msgid "TCP port to bind to for only serving embedded content" -#~ msgstr "Porta TCP para somente servidor conteúdo embutido" - -#~ msgid "UAM listening address" -#~ msgstr "Endereço de escuta do UAM" - -#~ msgid "IP address to listen to for authentication of clients" -#~ msgstr "Endereço IP para escutar pela autenticação dos clientes" - -#~ msgid "UAM logout IP" -#~ msgstr "IP de desautenticação do UAM" - -#~ msgid "" -#~ "Use this IP address to instantly logout a client accessing it (defaults " -#~ "to 1.1.1.1)" -#~ msgstr "" -#~ "Use este endereço IP para instantaneamente desautenticar um cliente que a " -#~ "acessar (padrão é 1.1.1.1)" - -#~ msgid "UAM listening port" -#~ msgstr "Porta de escuta do UAM" - -#~ msgid "TCP port to bind to for authenticating clients (default 3990)" -#~ msgstr "Porta de escuta do UAM para autenticar clientes (padrão é 3990)" - -#~ msgid "UAM secret" -#~ msgstr "Segredo do UAM" - -#~ msgid "Shared secret between uamserver and chilli" -#~ msgstr "Segredo compatilhado entre o servidor UAM e o chilli" - -#~ msgid "UAM server" -#~ msgstr "Servidor UAM" - -#~ msgid "URL of web server to use for authenticating clients" -#~ msgstr "URL do servidor web usado para autenticar os clientes" - -#~ msgid "UAM user interface" -#~ msgstr "Interface do usuário do UAM" - -#~ msgid "" -#~ "An init.d style program to handle local content on the uamuiport web " -#~ "server" -#~ msgstr "" -#~ "Um programa estilo init.d para tratar o conteúdo local no servidor web " -#~ "uamuiport" - -#~ msgid "Use status file" -#~ msgstr "Usar o arquivo de estado" - -#~ msgid "" -#~ "Write the status of clients in a non-volatile state file (experimental)" -#~ msgstr "" -#~ "Escreva o estado dos clientes em um arquivo de estado não volátil " -#~ "(experimental)" - -#~ msgid "WISPr login url" -#~ msgstr "URL de login do WISPr" - -#~ msgid "Specific URL to be given in WISPr XML LoginURL" -#~ msgstr "Especifica a URL para ser dada no LoginURL do XML do WISPr" - -#~ msgid "CGI program" -#~ msgstr "Programa CGI" - -#~ msgid "" -#~ "Executable to run as a CGI type program (like haserl) for URLs with " -#~ "extension .chi" -#~ msgstr "" -#~ "Executável para rodar como um programa do tipo CGI (como o haserl) para " -#~ "URLs com a extensão .chi" - -#~ msgid "Web content directory" -#~ msgstr "Diretório de conteúdo Web" - -#~ msgid "Directory where embedded local web content is placed" -#~ msgstr "Diretório onde o conteúdo web local embutido fica localizado" - -#~ msgid "MAC configuration" -#~ msgstr "Configuração do MAC" - -#~ msgid "Configure MAC authentication" -#~ msgstr "Configurar a autenticação MAC" - -#~ msgid "Allowed MAC addresses" -#~ msgstr "Endereços MAC permitidos" - -#~ msgid "List of MAC addresses for which MAC authentication will be performed" -#~ msgstr "" -#~ "Lista dos endereços MAC permitidos para os quais a autenticação MAC será " -#~ "realizada" - -#~ msgid "Authenticate locally allowed MACs" -#~ msgstr "Autenticar MACs autorizados localmente" - -#~ msgid "Authenticate allowed MAC addresses without the use of RADIUS" -#~ msgstr "Autenticar os endereços MAC autorizados sem usar o RADIUS" - -#~ msgid "Enable MAC authentification" -#~ msgstr "Habilita a autenticação MAC" - -#~ msgid "Try to authenticate all users based on their mac address alone" -#~ msgstr "" -#~ "Tente autenticar todos os usuários baseados somente no seu endereço MAC" - -#~ msgid "Password" -#~ msgstr "Senha" - -#~ msgid "Password used when performing MAC authentication" -#~ msgstr "Senha usada para realizar a autenticação MAC" - -#~ msgid "Suffix" -#~ msgstr "Sufixo" - -#~ msgid "" -#~ "Suffix to add to the MAC address in order to form the User-Name, which is " -#~ "sent to the radius server" -#~ msgstr "" -#~ "Sufixo para adicionar ao endereço MAC que forma o nome do usuário, o qual " -#~ "é enviado ao servidor radius" diff --git a/package/luci/applications/luci-app-coovachilli/po/pt/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/pt/coovachilli.po deleted file mode 100644 index c2cccc31ae..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/pt/coovachilli.po +++ /dev/null @@ -1,372 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-05-01 00:43+0200\n" -"Last-Translator: pedromrgoncalves \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Configuração da Rede" - -msgid "RADIUS configuration" -msgstr "Configuração RADIUS" - -msgid "UAM and MAC Authentication" -msgstr "Autenticação UAM e MAC" - -#~ msgid "General configuration" -#~ msgstr "Configuração Geral" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "Definições gerais do CoovaChilli" - -#~ msgid "Command socket" -#~ msgstr "Socket de comando" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "Socket UNIX para comunicação com chilli_query" - -#~ msgid "Config refresh interval" -#~ msgstr "Intervalo de refrescamento da configuração" - -#~ msgid "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " -#~ msgstr "" -#~ "Reler o ficheiro de configuração e executar verificações DNS n segundos " -#~ "de intervalo. Tem o mesmo efeito que o envio do sinal HUP. Se o intervalo " -#~ "for 0 (zero) esta funcionalidade será desactivada." - -#~ msgid "Pid file" -#~ msgstr "Ficheiro PID" - -#~ msgid "Filename to put the process id" -#~ msgstr "Nome do ficheiro onde será guardado o PID" - -#~ msgid "State directory" -#~ msgstr "Directorio de estado" - -#~ msgid "Directory of non-volatile data" -#~ msgstr "Directorio para dados não-volateis" - -#~ msgid "TUN/TAP configuration" -#~ msgstr "Configuração tun/tap" - -#~ msgid "Network/Tun configuration" -#~ msgstr "Configuração de rede/tun" - -#~ msgid "Network down script" -#~ msgstr "Script de rede/tun em baixo" - -#~ msgid "" -#~ "Script executed after a session has moved from authorized state to " -#~ "unauthorized" -#~ msgstr "" -#~ "Script executado após o estado de uma sessão ser alterado de autorizado " -#~ "para não-autorizado " - -#~ msgid "Network up script" -#~ msgstr "Script de rede/tun em cima" - -#~ msgid "Script executed after the tun network interface has been brought up" -#~ msgstr "Script executado apos o interface tun de rede ter sido levantado" - -#~ msgid "Primary DNS Server" -#~ msgstr "Servidor primário de DNS" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Servidor secundário de DNS" - -#~ msgid "Domain name" -#~ msgstr "Domínio" - -#~ msgid "" -#~ "Is used to inform the client about the domain name to use for DNS lookups" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "Dynamic IP address pool" -#~ msgstr "Servidor primário de DNS" - -#, fuzzy -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o endereço de servidor DNS a usar " -#~ "para a resolução de nomes" - -#, fuzzy -#~ msgid "IP down script" -#~ msgstr "Script de rede/tun em baixo" - -#, fuzzy -#~ msgid "Script executed after the tun network interface has been taken down" -#~ msgstr "" -#~ "Script executado após o estado de uma sessão ser alterado de autorizado " -#~ "para não-autorizado " - -#, fuzzy -#~ msgid "IP up script" -#~ msgstr "Script de rede/tun em cima" - -#, fuzzy -#~ msgid "" -#~ "Script executed after the TUN/TAP network interface has been brought up" -#~ msgstr "Script executado apos o interface tun de rede ter sido levantado" - -#, fuzzy -#~ msgid "Uplink subnet" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Network address of the uplink interface (CIDR notation)" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o endereço de servidor DNS a usar " -#~ "para a resolução de nomes" - -#, fuzzy -#~ msgid "Static IP address pool" -#~ msgstr "Script de rede/tun em cima" - -#, fuzzy -#~ msgid "Specifies a pool of static IP addresses" -#~ msgstr "Script executado apos o interface tun de rede ter sido levantado" - -#, fuzzy -#~ msgid "TUN/TAP device" -#~ msgstr "Script de rede/tun em baixo" - -#, fuzzy -#~ msgid "The specific device to use for the TUN/TAP interface" -#~ msgstr "" -#~ "Script executado após o estado de uma sessão ser alterado de autorizado " -#~ "para não-autorizado " - -#, fuzzy -#~ msgid "TX queue length" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "The TX queue length to set on the TUN/TAP interface" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "Use TAP device" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Use the TAP interface instead of TUN" -#~ msgstr "Script executado apos o interface tun de rede ter sido levantado" - -#, fuzzy -#~ msgid "DHCP configuration" -#~ msgstr "Configuração tun/tap" - -#, fuzzy -#~ msgid "Set DHCP options for connecting clients" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "DHCP end number" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "DHCP interface" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Ethernet interface to listen to for the downlink interface" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Listen MAC address" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Leasetime" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Use a DHCP lease of seconds (default 600)" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Admin user" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "NAS IP" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Value to use in RADIUS NAS-IP-Address attribute" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "NAS MAC" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "MAC address value to use in RADIUS Called-Station-ID attribute" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Allow WPA guests" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "UAM configuration" -#~ msgstr "Configuração tun/tap" - -#, fuzzy -#~ msgid "Unified Configuration Method settings" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "List of resources the client can access without first authenticating" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "Allow any DNS server" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "Allow any DNS server for unauthenticated clients" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "Allow any IP address" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "" -#~ "Allow clients to use any IP settings they wish by spoofing ARP " -#~ "(experimental)" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "Allowed domains" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "" -#~ "Defines a list of domain names to automatically add to the walled garden" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "UAM homepage" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "URL of homepage to redirect unauthenticated users to" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "UAM static content port" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "TCP port to bind to for only serving embedded content" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "UAM listening address" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "IP address to listen to for authentication of clients" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "UAM logout IP" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "" -#~ "Use this IP address to instantly logout a client accessing it (defaults " -#~ "to 1.1.1.1)" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "UAM listening port" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "TCP port to bind to for authenticating clients (default 3990)" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "UAM secret" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "Shared secret between uamserver and chilli" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "UAM server" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "URL of web server to use for authenticating clients" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "UAM user interface" -#~ msgstr "Domínio" - -#, fuzzy -#~ msgid "" -#~ "An init.d style program to handle local content on the uamuiport web " -#~ "server" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "" -#~ "Executable to run as a CGI type program (like haserl) for URLs with " -#~ "extension .chi" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "Directory where embedded local web content is placed" -#~ msgstr "" -#~ "Usado para informar o cliente sobre o dominio a utilizar para pedidos DNS" - -#, fuzzy -#~ msgid "MAC configuration" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Configure MAC authentication" -#~ msgstr "Configuração de rede/tun" - -#, fuzzy -#~ msgid "Try to authenticate all users based on their mac address alone" -#~ msgstr "Configuração de rede/tun" diff --git a/package/luci/applications/luci-app-coovachilli/po/ro/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/ro/coovachilli.po deleted file mode 100644 index 8f458bb810..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/ro/coovachilli.po +++ /dev/null @@ -1,27 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-28 19:15+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Configurare reÅ£ea" - -msgid "RADIUS configuration" -msgstr "Configurare RADIUS" - -msgid "UAM and MAC Authentication" -msgstr "Autentificare UAM şi MAC" diff --git a/package/luci/applications/luci-app-coovachilli/po/ru/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/ru/coovachilli.po deleted file mode 100644 index 3420e24f70..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/ru/coovachilli.po +++ /dev/null @@ -1,560 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: coovachilli\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-08-15 11:29+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Конфигурация сети" - -msgid "RADIUS configuration" -msgstr "Конфигурация RADIUS" - -msgid "UAM and MAC Authentication" -msgstr "Аутентификация с помощью UAM и MAC" - -#~ msgid "General configuration" -#~ msgstr "Общие настройки" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "Общие настройки CoovaChilli" - -#~ msgid "Command socket" -#~ msgstr "Сокет команд" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "UNIX сокет для связи с chilli_query" - -#~ msgid "Config refresh interval" -#~ msgstr "Интервал обновления конфигурации" - -#~ msgid "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " -#~ msgstr "" -#~ "Считывание файла конфигурации и запуск DNS поиска раз в указанный " -#~ "интервал. Достигается тот же эффект что и при отсылке HUP сигнала. " -#~ "Значение интервала выражено в секундах. В случае указания нулевого " -#~ "значения интервала, данная функция становится неактивной." - -#~ msgid "Pid file" -#~ msgstr "Pid файл" - -#~ msgid "Filename to put the process id" -#~ msgstr "Имя файла, который будет содержать идентификатор процесса (PID)" - -#~ msgid "State directory" -#~ msgstr "Директория состояния" - -#~ msgid "TUN/TAP configuration" -#~ msgstr "TUN/TAP конфигурация" - -#~ msgid "Network down script" -#~ msgstr "Скрипт выключения сети" - -#~ msgid "Network up script" -#~ msgstr "Скрипт включения сети" - -#~ msgid "Primary DNS Server" -#~ msgstr "Первичный DNS сервер" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Вторичный DNS сервер" - -#~ msgid "Domain name" -#~ msgstr "Доменное имя" - -#~ msgid "" -#~ "Is used to inform the client about the domain name to use for DNS lookups" -#~ msgstr "Используется, чтобы сообщить клиенту имя домена при DNS поисках" - -#~ msgid "Dynamic IP address pool" -#~ msgstr "Диапазон динамических IP адресов" - -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "Определяет диапазон динамических IP адресов" - -#~ msgid "IP down script" -#~ msgstr "Скрипт сброса IP-адреса" - -#~ msgid "IP up script" -#~ msgstr "Скрипт установки IP-адреса" - -#~ msgid "" -#~ "Script executed after the TUN/TAP network interface has been brought up" -#~ msgstr "Скрипт, выполняемый после включения сетевого интерфейса TUN/TAP" - -#~ msgid "Uplink subnet" -#~ msgstr "Подсеть uplink'а" - -#~ msgid "Network address of the uplink interface (CIDR notation)" -#~ msgstr "Сетевой адрес uplink-интерфейса (в нотации CIDR)" - -#~ msgid "Static IP address pool" -#~ msgstr "Диапазон статических IP адресов" - -#~ msgid "Specifies a pool of static IP addresses" -#~ msgstr "Определяет диапазон статических IP адресов" - -#~ msgid "TUN/TAP device" -#~ msgstr "TUN/TAP устройство" - -#~ msgid "The specific device to use for the TUN/TAP interface" -#~ msgstr "Устройство для TUN/TAP интерфейса" - -#~ msgid "TX queue length" -#~ msgstr "Длина очереди TX" - -#~ msgid "The TX queue length to set on the TUN/TAP interface" -#~ msgstr "Длина TX очереди TUN/TAP интерфейса" - -#~ msgid "Use TAP device" -#~ msgstr "Использовать устройство TAP" - -#~ msgid "Use the TAP interface instead of TUN" -#~ msgstr "Использовать интерфейс TAP вместо TUN" - -#~ msgid "DHCP configuration" -#~ msgstr "Настройки DHCP" - -#~ msgid "Set DHCP options for connecting clients" -#~ msgstr "Установите параметры DHCP для подключения клиентов" - -#~ msgid "DHCP end number" -#~ msgstr "Конечное значение DHCP" - -#~ msgid "DHCP interface" -#~ msgstr "DHCP интерфейс" - -#~ msgid "Ethernet interface to listen to for the downlink interface" -#~ msgstr "Ethernet интерфейс для прослушивания downlink-интерфеса" - -#~ msgid "Listen MAC address" -#~ msgstr "Прослушиваемые MAC адреса" - -#~ msgid "DHCP start number" -#~ msgstr "Начальное значение DHCP" - -#~ msgid "Where to start assigning IP addresses (default 10)" -#~ msgstr "Начать присвоения IP-адресов с (по умолчанию 10)" - -#~ msgid "Enable IEEE 802.1x" -#~ msgstr "Включить IEEE 802.1x" - -#~ msgid "Enable IEEE 802.1x authentication and listen for EAP requests" -#~ msgstr "Включить IEEE 802.1x аутентификацию и обработку запросов EAP" - -#~ msgid "Leasetime" -#~ msgstr "Время аренды" - -#~ msgid "Use a DHCP lease of seconds (default 600)" -#~ msgstr "Использовать DHCP аренду заданное время (секунды, 600 по умолчанию)" - -#~ msgid "Allow session update through RADIUS" -#~ msgstr "Разрешить обновление сессии через RADIUS" - -#~ msgid "" -#~ "Allow updating of session parameters with RADIUS attributes sent in " -#~ "Accounting-Response" -#~ msgstr "" -#~ "Разрешить обновление параметров сессии используя RADIUS атрибуты " -#~ "посланные через Accounting-Response" - -#~ msgid "Admin password" -#~ msgstr "Пароль администратора" - -#~ msgid "" -#~ "Password to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "Пароль администратора для аутентификации пользователя и применения " -#~ "настроек chilli с созданием \"системной\" сессии устройства" - -#~ msgid "Admin user" -#~ msgstr "Администратор" - -#~ msgid "" -#~ "User-name to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "Имя администратора для аутентификации пользователя и применения настроек " -#~ "chilli с созданием \"системной\" сессии устройства" - -#~ msgid "Do not check disconnection requests" -#~ msgstr "Не проверять запросы на разъединение" - -#~ msgid "Do not check the source IP address of radius disconnect requests" -#~ msgstr "Не проверять IP-адрес запросов разъединения radius" - -#~ msgid "RADIUS disconnect port" -#~ msgstr "Порт разъединения RADIUS" - -#~ msgid "UDP port to listen to for accepting radius disconnect requests" -#~ msgstr "UDP порт для запросов разъединения RADIUS" - -#~ msgid "NAS IP" -#~ msgstr "IP-адрес NAS" - -#~ msgid "Value to use in RADIUS NAS-IP-Address attribute" -#~ msgstr "Значение RADIUS NAS-IP-Address атрибута" - -#~ msgid "NAS MAC" -#~ msgstr "MAC адрес NAS" - -#~ msgid "MAC address value to use in RADIUS Called-Station-ID attribute" -#~ msgstr "Значение MAC адреса RADIUS Called-Station-ID атрибута" - -#~ msgid "Allow OpenID authentication" -#~ msgstr "Разрешить OpenID аутентификацию" - -#~ msgid "" -#~ "Allows OpenID authentication by sending ChilliSpot-Config=allow-" -#~ "openidauth in RADIUS Access-Requests" -#~ msgstr "" -#~ "Разрешает аутентификацию OpenID, посылая ChilliSpot-Config=allow-" -#~ "openidauth в запросах доступа RADIUS." - -#~ msgid "RADIUS accounting port" -#~ msgstr "Порт RADIUS Accounting" - -#~ msgid "" -#~ "The UDP port number to use for radius accounting requests (default 1813)" -#~ msgstr "Порт UDP для запросов RADIUS Accounting (1813 по умолчанию)" - -#~ msgid "RADIUS authentication port" -#~ msgstr "Порт аутентификации RADIUS" - -#~ msgid "" -#~ "The UDP port number to use for radius authentication requests (default " -#~ "1812)" -#~ msgstr "UDP порт для запросов аутентификации radius (1812 по умолчанию)" - -#~ msgid "RADIUS listen address" -#~ msgstr "Слушающий адрес RADIUS" - -#~ msgid "Local interface IP address to use for the radius interface" -#~ msgstr "IP адрес локального интерфейса для интерфейса radius" - -#~ msgid "RADIUS location ID" -#~ msgstr "Идентификатор расположения RADIUS" - -#~ msgid "WISPr Location ID" -#~ msgstr "Идентификатор расположения WISPr" - -#~ msgid "RADIUS location name" -#~ msgstr "Имя расположения RADIUS" - -#~ msgid "WISPr Location Name" -#~ msgstr "Имя расположения WISPr" - -#~ msgid "NAS ID" -#~ msgstr "Идентификатор NAS" - -#~ msgid "Network access server identifier" -#~ msgstr "Идентификатор сервера доступа к сети (NAS)" - -#~ msgid "Option radiusnasip" -#~ msgstr "Опция radiusnasip" - -#~ msgid "NAS port type" -#~ msgstr "Тип порта NAS" - -#~ msgid "" -#~ "Value of NAS-Port-Type attribute. Defaults to 19 (Wireless-IEEE-802.11)" -#~ msgstr "Значение аттрибута NAS-Port-Type. По умолчанию 19 (IEEE-802.11)" - -#~ msgid "Send RADIUS VSA" -#~ msgstr "Отсылать RADIUS VSA" - -#~ msgid "Send the ChilliSpot-OriginalURL RADIUS VSA in Access-Request" -#~ msgstr "Отсылать ChilliSpot-OriginalURL RADIUS VSA в запросах доступа" - -#~ msgid "RADIUS secret" -#~ msgstr "Секрет RADIUS" - -#~ msgid "Radius shared secret for both servers" -#~ msgstr "Общий секрет RADIUS для обоих серверов" - -#~ msgid "RADIUS server 1" -#~ msgstr "RADIUS сервер 1" - -#~ msgid "The IP address of radius server 1" -#~ msgstr "IP адрес RADIUS сервера 1" - -#~ msgid "RADIUS server 2" -#~ msgstr "RADIUS сервер 2" - -#~ msgid "The IP address of radius server 2" -#~ msgstr "IP адрес RADIUS сервера 2" - -#~ msgid "Swap octets" -#~ msgstr "Переставлять октеты" - -#~ msgid "" -#~ "Swap the meaning of \"input octets\" and \"output octets\" as it related " -#~ "to RADIUS attribtues" -#~ msgstr "Менять местами значения \"входной октет\" и \"выходной октет\"" - -#~ msgid "Allow WPA guests" -#~ msgstr "Разрешить гостевой WPA вход" - -#~ msgid "" -#~ "Allows WPA Guest authentication by sending ChilliSpot-Config=allow-wpa-" -#~ "guests in RADIUS Access-Requests" -#~ msgstr "" -#~ "Разрешает гстевую WPA аутентификацию, отсылая ChilliSpot-Config=allow-wpa-" -#~ "guests в запросах доступа RADIUS" - -#~ msgid "Proxy client" -#~ msgstr "Клиент прокси" - -#~ msgid "" -#~ "IP address from which radius requests are accepted. If omitted the server " -#~ "will not accept radius requests" -#~ msgstr "" -#~ "IP адрес с которого запросы radius принимаются. Если не указан, то сервер " -#~ "не будет принимать запросы radius" - -#~ msgid "Local interface IP address to use for accepting radius requests" -#~ msgstr "IP адрес локального интерфейса для приема запросов radius" - -#~ msgid "Proxy port" -#~ msgstr "Порт прокси" - -#~ msgid "UDP Port to listen to for accepting radius requests" -#~ msgstr "Порт UDP для запросов RADIUS" - -#~ msgid "Proxy secret" -#~ msgstr "Секрет прокси" - -#~ msgid "Radius shared secret for clients" -#~ msgstr "Общий RADIUS секрет для клиентов" - -#~ msgid "UAM configuration" -#~ msgstr "Конфигурация UAM" - -#~ msgid "Unified Configuration Method settings" -#~ msgstr "Настройки UAM" - -#~ msgid "Use Chilli XML" -#~ msgstr "Использовать Chilli XML" - -#~ msgid "Return the so-called Chilli XML along with WISPr XML" -#~ msgstr "Возвращать так называемый Chilli XML вместе с WISPr XML" - -#~ msgid "Default idle timeout" -#~ msgstr "Таймаут ожидания по умолчанию" - -#~ msgid "Default idle timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Таймаут ожидания по умолчанию если не установлен RADIUS'ом (0 по " -#~ "умолчанию)" - -#~ msgid "Default session timeout" -#~ msgstr "Таймаут сессии (значение по умолчанию)" - -#~ msgid "" -#~ "Default session timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Таймаут сессии по умолчанию если не установлено RADIUS'ом (0 по умолчанию)" - -#~ msgid "Inspect DNS traffic" -#~ msgstr "Инспектировать траффик DNS" - -#~ msgid "" -#~ "Inspect DNS packets and drop responses with any non- A, CNAME, SOA, or MX " -#~ "records to prevent dns tunnels (experimental)" -#~ msgstr "" -#~ "Проверять DNS пакеты и отбрасывать ответы без A, CNAME, SOA, или MX " -#~ "записей для предотвращения DNS туннелей (экспериментальная ф-ция)." - -#~ msgid "Local users file" -#~ msgstr "Локальный файл пользователей" - -#~ msgid "" -#~ "A colon separated file containing usernames and passwords of locally " -#~ "authenticated users" -#~ msgstr "" -#~ "Файл, содержащий логины и пароли локально авторизованных пользователей " -#~ "(записи разделены двоеточием)" - -#~ msgid "Location name" -#~ msgstr "Имя расположения" - -#~ msgid "Human readable location name used in JSON interface" -#~ msgstr "Имя расположения, используемой в интерфейсе JSON" - -#~ msgid "Do not redirect to UAM server" -#~ msgstr "Не перенаправлять на сервер UAM" - -#~ msgid "" -#~ "Do not return to UAM server on login success, just redirect to original " -#~ "URL" -#~ msgstr "" -#~ "Не возвращаться на UAM сервер при удачном входе, перенаправить на " -#~ "исходный URL" - -#~ msgid "Do not do WISPr" -#~ msgstr "Не выполнять WISPr" - -#~ msgid "Do not do any WISPr XML, assume the back-end is doing this instead" -#~ msgstr "Не выполнять WISPr XML, предполагая выполнение в бэкенд'е" - -#~ msgid "Post auth proxy" -#~ msgstr "Прокси пост-аутентификации" - -#~ msgid "" -#~ "Used with postauthproxyport to define a post authentication HTTP proxy " -#~ "server" -#~ msgstr "" -#~ "Используется с портом прокси пост-аутентификации для определения HTTP " -#~ "прокси-сервера аутентификации" - -#~ msgid "Post auth proxy port" -#~ msgstr "Порт прокси пост-аутентификации" - -#~ msgid "" -#~ "Used with postauthproxy to define a post authentication HTTP proxy server" -#~ msgstr "" -#~ "Ипользуется с прокси пост-аутентификации для определения HTTP прокси-" -#~ "сервера пост-аутентификации" - -#~ msgid "Allowed resources" -#~ msgstr "Разрешенные ресурсы" - -#~ msgid "List of resources the client can access without first authenticating" -#~ msgstr "" -#~ "Список ресурсов к которым клиент может получить доступ без " -#~ "предварительной аутентификации" - -#~ msgid "Allow any DNS server" -#~ msgstr "Разрешить любой DNS сервер" - -#~ msgid "Allow any DNS server for unauthenticated clients" -#~ msgstr "Разрешить любой DNS сервер для клиентов не прошедших аутентификацию" - -#~ msgid "Allow any IP address" -#~ msgstr "Разрешить любой IP-адрес" - -#~ msgid "" -#~ "Allow clients to use any IP settings they wish by spoofing ARP " -#~ "(experimental)" -#~ msgstr "" -#~ "Разрешить клиентам использовать любые настройки IP за счет \"спуфинга\" " -#~ "ARP (экспериментальная ф-ция)" - -#~ msgid "Allowed domains" -#~ msgstr "Разрешенные домены" - -#~ msgid "UAM homepage" -#~ msgstr "Домашняя страница UAM" - -#~ msgid "URL of homepage to redirect unauthenticated users to" -#~ msgstr "" -#~ "URL домашней страницы для перенаправления пользователей не прошедших " -#~ "аутентификацию" - -#~ msgid "UAM static content port" -#~ msgstr "Порт UAM статического контента" - -#~ msgid "UAM listening address" -#~ msgstr "Слашающий адрес UAM" - -#~ msgid "IP address to listen to for authentication of clients" -#~ msgstr "IP адрес для приема аутентификации клиентов" - -#~ msgid "UAM logout IP" -#~ msgstr "IP-адрес выхода UAM" - -#~ msgid "UAM listening port" -#~ msgstr "Слушающий порт UAM" - -#~ msgid "UAM secret" -#~ msgstr "Секрет UAM" - -#~ msgid "Shared secret between uamserver and chilli" -#~ msgstr "Общий секрет для сервера UAM и Chilli" - -#~ msgid "UAM server" -#~ msgstr "Сервер UAM" - -#~ msgid "URL of web server to use for authenticating clients" -#~ msgstr "URL или веб-сервер для аутентификации клиентов" - -#~ msgid "UAM user interface" -#~ msgstr "Интерфейс пользователя UAM" - -#~ msgid "Use status file" -#~ msgstr "Использовать статус-файл" - -#~ msgid "WISPr login url" -#~ msgstr "URL входа WISPr" - -#~ msgid "Specific URL to be given in WISPr XML LoginURL" -#~ msgstr "Особый URL в WISPr XML LoginURL" - -#~ msgid "CGI program" -#~ msgstr "Программа GCI" - -#~ msgid "Web content directory" -#~ msgstr "Директория Web-контента" - -#~ msgid "Directory where embedded local web content is placed" -#~ msgstr "Директория куда будет помещен встроенный Web-контент" - -#~ msgid "MAC configuration" -#~ msgstr "Настройка MAC" - -#~ msgid "Configure MAC authentication" -#~ msgstr "Настройка аутентификации по MAC адресу" - -#~ msgid "Allowed MAC addresses" -#~ msgstr "Разрешенные MAC адреса" - -#~ msgid "List of MAC addresses for which MAC authentication will be performed" -#~ msgstr "Список MAC адресов для которых будет производиться аутентификация" - -#~ msgid "Authenticate locally allowed MACs" -#~ msgstr "Аутентифицировать локально разрешенные MAC адреса" - -#~ msgid "Authenticate allowed MAC addresses without the use of RADIUS" -#~ msgstr "Аутентифицировать разрешенные MAC адреса без использования RADIUS" - -#~ msgid "Enable MAC authentification" -#~ msgstr "Разрешить MAC аутентификацию" - -#~ msgid "Try to authenticate all users based on their mac address alone" -#~ msgstr "" -#~ "Пробовать аутентификацию всех пользователей только на основе их MAC " -#~ "адресов" - -#~ msgid "Password" -#~ msgstr "Пароль" - -#~ msgid "Password used when performing MAC authentication" -#~ msgstr "Пароль для MAC аутентификации" - -#~ msgid "Suffix" -#~ msgstr "Суффикс" - -#~ msgid "" -#~ "Suffix to add to the MAC address in order to form the User-Name, which is " -#~ "sent to the radius server" -#~ msgstr "" -#~ "Суффикс, добавляемый в MAC адрес, для формирования имени пользователя, " -#~ "которое посылается radius серверу" diff --git a/package/luci/applications/luci-app-coovachilli/po/sk/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/sk/coovachilli.po deleted file mode 100644 index bb5b1b9ff4..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/sk/coovachilli.po +++ /dev/null @@ -1,21 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "CoovaChilli" -msgstr "" - -msgid "Network Configuration" -msgstr "" - -msgid "RADIUS configuration" -msgstr "" - -msgid "UAM and MAC Authentication" -msgstr "" diff --git a/package/luci/applications/luci-app-coovachilli/po/sv/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/sv/coovachilli.po deleted file mode 100644 index 751b9211bf..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/sv/coovachilli.po +++ /dev/null @@ -1,24 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-28 06:16+0200\n" -"Last-Translator: Kristoffer Grundström \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChili" - -msgid "Network Configuration" -msgstr "Nätverkskonfiguration" - -msgid "RADIUS configuration" -msgstr "RADIUS-konfiguration" - -msgid "UAM and MAC Authentication" -msgstr "UAM och MAC-autensiering" diff --git a/package/luci/applications/luci-app-coovachilli/po/templates/coovachilli.pot b/package/luci/applications/luci-app-coovachilli/po/templates/coovachilli.pot deleted file mode 100644 index c1a2bed344..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/templates/coovachilli.pot +++ /dev/null @@ -1,14 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "CoovaChilli" -msgstr "" - -msgid "Network Configuration" -msgstr "" - -msgid "RADIUS configuration" -msgstr "" - -msgid "UAM and MAC Authentication" -msgstr "" diff --git a/package/luci/applications/luci-app-coovachilli/po/tr/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/tr/coovachilli.po deleted file mode 100644 index b70a840384..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/tr/coovachilli.po +++ /dev/null @@ -1,26 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-10-11 23:09+0200\n" -"Last-Translator: vincenzo \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Network Yapılandırması" - -msgid "RADIUS configuration" -msgstr "Radius Yapılandırması" - -msgid "UAM and MAC Authentication" -msgstr "UAM ve MAC Kimlik Doğrulaması" diff --git a/package/luci/applications/luci-app-coovachilli/po/uk/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/uk/coovachilli.po deleted file mode 100644 index 07ffc5562e..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/uk/coovachilli.po +++ /dev/null @@ -1,27 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-12-29 13:00+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "Конфігурація мережі" - -msgid "RADIUS configuration" -msgstr "Конфігурація RADIUS" - -msgid "UAM and MAC Authentication" -msgstr "Автентифікація через UAM і MAC" diff --git a/package/luci/applications/luci-app-coovachilli/po/vi/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/vi/coovachilli.po deleted file mode 100644 index dc27f8b7a2..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/vi/coovachilli.po +++ /dev/null @@ -1,607 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:59+0200\n" -"PO-Revision-Date: 2009-08-16 07:05+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "CoovaChilli" -msgstr "CoovaChilli" - -msgid "Network Configuration" -msgstr "" - -msgid "RADIUS configuration" -msgstr "" - -msgid "UAM and MAC Authentication" -msgstr "" - -#~ msgid "General configuration" -#~ msgstr "Cấu hình tổng quát" - -#~ msgid "General CoovaChilli settings" -#~ msgstr "Các cài đặt CoovaChilli tổng quát" - -#~ msgid "Command socket" -#~ msgstr "Command socket" - -#~ msgid "UNIX socket used for communication with chilli_query" -#~ msgstr "UNIX socket dùng để giao tiếp với chilli_query" - -#~ msgid "Config refresh interval" -#~ msgstr "Config refresh interval" - -#~ msgid "" -#~ "Re-read configuration file and do DNS lookups every interval seconds. " -#~ "This has the same effect as sending the HUP signal. If interval is 0 " -#~ "(zero) this feature is disabled. " -#~ msgstr "" -#~ "Đọc lại tập tin cấu hình và tra cưứ DNS mỗi giây. Cái này có ảnh hưởng " -#~ "giống nhÆ° đang gá»­i một tín hiệu HUP. Nếu interval là 0, tính năng này sẽ " -#~ "bị vô hiệu hóa. " - -#~ msgid "Pid file" -#~ msgstr "Tập tin Pid" - -#~ msgid "Filename to put the process id" -#~ msgstr "Tên tập tin để đặt làm ID xá»­ lý" - -#~ msgid "State directory" -#~ msgstr "Dạnh bạ vùng" - -#~ msgid "Directory of non-volatile data" -#~ msgstr "ThÆ° mục của những dữ liệu cố định" - -#~ msgid "TUN/TAP configuration" -#~ msgstr "Cấu hình TUN/TAP" - -#~ msgid "Network/Tun configuration" -#~ msgstr "Mạng lưới/ Cấu hình TUN" - -#~ msgid "Network down script" -#~ msgstr "Network down script" - -#~ msgid "" -#~ "Script executed after a session has moved from authorized state to " -#~ "unauthorized" -#~ msgstr "" -#~ "Script đã thá»±c hiện sau khi một section đã di chuyển từ nÆ¡i có thẩm quyền " -#~ "đến nÆ¡i không" - -#~ msgid "Network up script" -#~ msgstr "Network up script" - -#~ msgid "Script executed after the tun network interface has been brought up" -#~ msgstr "Script thi hành sau khi giao diện mạng tun được đưa lên" - -#~ msgid "Primary DNS Server" -#~ msgstr "Primary DNS Server" - -#~ msgid "Secondary DNS Server" -#~ msgstr "Secondary DNS Server" - -#~ msgid "Domain name" -#~ msgstr "Tên miền" - -#~ msgid "" -#~ "Is used to inform the client about the domain name to use for DNS lookups" -#~ msgstr "" -#~ "Được sá»­ dụng để thông báo cho khách hàng về tên miền để dùng cho các tra " -#~ "cứu DNS" - -#~ msgid "Dynamic IP address pool" -#~ msgstr "Dynamic IP address pool" - -#~ msgid "Specifies a pool of dynamic IP addresses" -#~ msgstr "Chỉ định một pool of dynamic IP addresses" - -#~ msgid "IP down script" -#~ msgstr "IP down script" - -#~ msgid "Script executed after the tun network interface has been taken down" -#~ msgstr "Script thá»±c hiện sau khi giao diện mạng tun bị lấy xuống" - -#~ msgid "IP up script" -#~ msgstr "IP up script" - -#~ msgid "" -#~ "Script executed after the TUN/TAP network interface has been brought up" -#~ msgstr "Script thá»±c hiện sau khi giao diện mạng TUN/TAP đã được đưa lên" - -#~ msgid "Uplink subnet" -#~ msgstr "Uplink subnet" - -#~ msgid "Network address of the uplink interface (CIDR notation)" -#~ msgstr "Địa chỉ mạng của giao diện uplink (CIDR chú thích)" - -#~ msgid "Static IP address pool" -#~ msgstr "Static IP address pool" - -#~ msgid "Specifies a pool of static IP addresses" -#~ msgstr "Chỉ định một pool of static IP addresses" - -#~ msgid "TUN/TAP device" -#~ msgstr "TUN/TAP device" - -#~ msgid "The specific device to use for the TUN/TAP interface" -#~ msgstr "Thiết bị cụ thể để dùng cho giao diện TUN/TAP" - -#~ msgid "TX queue length" -#~ msgstr "Độ dài của TX queue" - -#~ msgid "The TX queue length to set on the TUN/TAP interface" -#~ msgstr "Độ dài TX queue để đặt trên giao diện TUN/TAP " - -#~ msgid "Use TAP device" -#~ msgstr "Dùng dụng cụ TAP" - -#~ msgid "Use the TAP interface instead of TUN" -#~ msgstr "Dùng giao diện TAP thay cho TUN" - -#~ msgid "DHCP configuration" -#~ msgstr "Cấu hình DHCP" - -#~ msgid "Set DHCP options for connecting clients" -#~ msgstr "Đặt lá»±a chọn DHCP cho đối tượng kết nối" - -#~ msgid "DHCP end number" -#~ msgstr "Số cuối DHCP" - -#~ msgid "Where to stop assigning IP addresses (default 254)" -#~ msgstr "Chỗ để stop những gán IP (mặc định 254)" - -#~ msgid "DHCP interface" -#~ msgstr "Giao diện DHCP" - -#~ msgid "Ethernet interface to listen to for the downlink interface" -#~ msgstr "Giao diện Ethernet để listen cho những giao diện downlink " - -#~ msgid "Listen MAC address" -#~ msgstr "Nghe địa chỉ MAC" - -#~ msgid "" -#~ "MAC address to listen to. If not specified the MAC address of the " -#~ "interface will be used" -#~ msgstr "" -#~ "Địa chỉ MAC để nghe. Nếu địa chỉ MAC chỉ định của giao diện sẽ được sá»­ " -#~ "dụng " - -#~ msgid "DHCP start number" -#~ msgstr "Số DHCP bắt đầu " - -#~ msgid "Where to start assigning IP addresses (default 10)" -#~ msgstr "Chỗ để bắt đầu gán địa chỉ IP (mặc định 10)" - -#~ msgid "Enable IEEE 802.1x" -#~ msgstr "Kích hoạt IEEE 802.1x" - -#~ msgid "Enable IEEE 802.1x authentication and listen for EAP requests" -#~ msgstr "Kích hoạt quá trình xác thá»±c IEEE 802.1x và lắng nghe yêu cầu EAP" - -#~ msgid "Leasetime" -#~ msgstr "Leasetime" - -#~ msgid "Use a DHCP lease of seconds (default 600)" -#~ msgstr "Dùng một DHCP lease ở giây (600)" - -#~ msgid "Allow session update through RADIUS" -#~ msgstr "Cho phép phiên cập nhật thông qua RADIUS" - -#~ msgid "" -#~ "Allow updating of session parameters with RADIUS attributes sent in " -#~ "Accounting-Response" -#~ msgstr "" -#~ "Cho phép phiên cập nhật tham số phiên với RADIUS được gá»­i trong " -#~ "Accounting-Response" - -#~ msgid "Admin password" -#~ msgstr "Mật mã quản trị " - -#~ msgid "" -#~ "Password to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "Mật mã dùng để xác thá»±c chế độ quản trị để pick up cấu hình chilli và " -#~ "thành lập một công cụ &quot;system&quot; session" - -#~ msgid "Admin user" -#~ msgstr "Người quản trị " - -#~ msgid "" -#~ "User-name to use for Administrative-User authentication in order to pick " -#~ "up chilli configurations and establish a device \"system\" session" -#~ msgstr "" -#~ "User name dùng để xác thá»±c chế độ quản trị để pick up cấu hình chilli và " -#~ "thành lập một công cụ &quot;system&quot; session" - -#~ msgid "Do not check disconnection requests" -#~ msgstr "Không kiểm tra yêu cầu ngừng kết nối" - -#~ msgid "Do not check the source IP address of radius disconnect requests" -#~ msgstr "" -#~ "Không tên kiểm tra nguồn địa chỉ IP trong bán kính yêu cầu ngừng kết nối" - -#~ msgid "RADIUS disconnect port" -#~ msgstr "Cá»­a ngừng kết nối RADIUS" - -#~ msgid "UDP port to listen to for accepting radius disconnect requests" -#~ msgstr "Cá»­a UDP để nghe khi chấp nhận một yêu cầu ngừng kết nối" - -#~ msgid "NAS IP" -#~ msgstr "NAS IP " - -#~ msgid "Value to use in RADIUS NAS-IP-Address attribute" -#~ msgstr "Giá trị để dùng trong RADIUS NAS-IP-Address attribute" - -#~ msgid "NAS MAC" -#~ msgstr "NAS MAC" - -#~ msgid "MAC address value to use in RADIUS Called-Station-ID attribute" -#~ msgstr "" -#~ "Giá trị địa chỉ MAC để dùng trong RADIUS Called-Station-ID attribute" - -#~ msgid "Allow OpenID authentication" -#~ msgstr "Cho phép xác thá»±c OpenID " - -#~ msgid "" -#~ "Allows OpenID authentication by sending ChilliSpot-Config=allow-" -#~ "openidauth in RADIUS Access-Requests" -#~ msgstr "" -#~ "Cho phép xác thá»±c OpenID bằng cách gá»­i ChilliSpot-Config=allow-openidauth " -#~ "in RADIUS Access-Requests" - -#~ msgid "RADIUS accounting port" -#~ msgstr "Cổng RADIUS accounting" - -#~ msgid "" -#~ "The UDP port number to use for radius accounting requests (default 1813)" -#~ msgstr "Số của cổng UDP dùng cho yêu cầu radius accounting (mặcđịnh 1813)" - -#~ msgid "RADIUS authentication port" -#~ msgstr "Cổng xác thá»±c RADIUS" - -#~ msgid "" -#~ "The UDP port number to use for radius authentication requests (default " -#~ "1812)" -#~ msgstr "Số của cổng UDP để yêu cầu xác thá»±c radius (default 1812)" - -#~ msgid "Option radiuscalled" -#~ msgstr "Tùy chọn radiuscalled" - -#~ msgid "RADIUS listen address" -#~ msgstr "Địa chỉ nghe RADIUS" - -#~ msgid "Local interface IP address to use for the radius interface" -#~ msgstr "Địa chỉ IP giao diện địa phÆ°Æ¡ng để dùng cho giao diện radius" - -#~ msgid "RADIUS location ID" -#~ msgstr "RADIUS vị tri ID" - -#~ msgid "WISPr Location ID" -#~ msgstr "WISPr vị trí ID" - -#~ msgid "RADIUS location name" -#~ msgstr "Tên vị trí RADIUS" - -#~ msgid "WISPr Location Name" -#~ msgstr "Tên vị trí WISPr" - -#~ msgid "NAS ID" -#~ msgstr "NAS ID" - -#~ msgid "Network access server identifier" -#~ msgstr "Network truy cập server identifier" - -#~ msgid "Option radiusnasip" -#~ msgstr "Lá»±a chọn radiusnasip" - -#~ msgid "NAS port type" -#~ msgstr "Loại cổng NAS" - -#~ msgid "" -#~ "Value of NAS-Port-Type attribute. Defaults to 19 (Wireless-IEEE-802.11)" -#~ msgstr "" -#~ "Giá trị của NAS-Port-Type attribute. Mặc định tới 19 (Wireless-" -#~ "IEEE-802.11)" - -#~ msgid "Send RADIUS VSA" -#~ msgstr "Gá»­i RADIUS VSA" - -#~ msgid "Send the ChilliSpot-OriginalURL RADIUS VSA in Access-Request" -#~ msgstr "Gá»­i ChilliSpot-OriginalURL RADIUS VSA trong yêu cầu truy cập" - -#~ msgid "RADIUS secret" -#~ msgstr "RADIUS bí mật" - -#~ msgid "Radius shared secret for both servers" -#~ msgstr "Radius chia sẻ bí mật cho cả 2 servers" - -#~ msgid "RADIUS server 1" -#~ msgstr "RADIUS server 1" - -#~ msgid "The IP address of radius server 1" -#~ msgstr "Địa chỉ IP của radius server 1" - -#~ msgid "RADIUS server 2" -#~ msgstr "RADIUS server 2" - -#~ msgid "The IP address of radius server 2" -#~ msgstr "Địa chỉ IP của radius server 2" - -#~ msgid "Swap octets" -#~ msgstr "Swap octets" - -#~ msgid "" -#~ "Swap the meaning of \"input octets\" and \"output octets\" as it related " -#~ "to RADIUS attribtues" -#~ msgstr "" -#~ "Hoán ý nghÄ©a của &quot;input octets&quot; và &quot;output " -#~ "octets&quot; khi nó liên quan tới RADIUS attribtues" - -#~ msgid "Allow WPA guests" -#~ msgstr "Cho phép WPA guests" - -#~ msgid "" -#~ "Allows WPA Guest authentication by sending ChilliSpot-Config=allow-wpa-" -#~ "guests in RADIUS Access-Requests" -#~ msgstr "" -#~ "Cho phép xác thá»±c WPA Guest bằng cách gá»­i ChilliSpot-Config=allow-wpa-" -#~ "guests trong RADIUS yêu cầu truy cập" - -#~ msgid "Proxy client" -#~ msgstr "Proxy client" - -#~ msgid "" -#~ "IP address from which radius requests are accepted. If omitted the server " -#~ "will not accept radius requests" -#~ msgstr "" -#~ "Địa chỉ IP mà yêu cầu radius được chấp nhận. Nếu bỏ qua server sẽ không " -#~ "chấp nhận yêu cầu radius." - -#~ msgid "Proxy listen address" -#~ msgstr "Proxy listen address" - -#~ msgid "Local interface IP address to use for accepting radius requests" -#~ msgstr "Địa chỉ giao diện IP địa phÆ°Æ¡ng dùng để chấp nhận yêu cầu radius" - -#~ msgid "Proxy port" -#~ msgstr "Proxy port" - -#~ msgid "UDP Port to listen to for accepting radius requests" -#~ msgstr "Cổng UDP để listen để chấp nhận yêu cầu radius" - -#~ msgid "Proxy secret" -#~ msgstr "Proxy bí mật" - -#~ msgid "Radius shared secret for clients" -#~ msgstr "Radius chia sẻ bí mật cho các client" - -#~ msgid "UAM configuration" -#~ msgstr "Cấu hình UAM" - -#~ msgid "Unified Configuration Method settings" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#~ msgid "Use Chilli XML" -#~ msgstr "Dùng Chilli XML" - -#~ msgid "Return the so-called Chilli XML along with WISPr XML" -#~ msgstr "Trở về cái gọi là Chilli XML cùng với WISPr XML" - -#~ msgid "Default idle timeout" -#~ msgstr "Mặc định idle timeout" - -#~ msgid "Default idle timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "Mặc định idle timeout trừ khi đặt bởi RADIUS (mặc định tới 0)" - -#~ msgid "Default interim interval" -#~ msgstr "Mặc định interim interval" - -#~ msgid "" -#~ "Default interim-interval for RADIUS accounting unless otherwise set by " -#~ "RADIUS (defaults to 0)" -#~ msgstr "" -#~ "Mặc định interim-interval cho RADIUS accounting trừ khi đặt bởi RADIUS " -#~ "(defaults tới 0)" - -#~ msgid "Default session timeout" -#~ msgstr "Mặc định session timeout" - -#~ msgid "" -#~ "Default session timeout unless otherwise set by RADIUS (defaults to 0)" -#~ msgstr "Mặc định session timeout trừ khi đặt bởi RADIUS (mặc định tới 0)" - -#~ msgid "Inspect DNS traffic" -#~ msgstr "Kiểm tra lÆ°u thông DNS" - -#, fuzzy -#~ msgid "Do not redirect to UAM server" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "" -#~ "Do not return to UAM server on login success, just redirect to original " -#~ "URL" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "Do not do WISPr" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "Do not do any WISPr XML, assume the back-end is doing this instead" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "List of resources the client can access without first authenticating" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "Allow any DNS server" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "Allow any DNS server for unauthenticated clients" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "Allow any IP address" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "" -#~ "Allow clients to use any IP settings they wish by spoofing ARP " -#~ "(experimental)" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "Allowed domains" -#~ msgstr "Tên miền" - -#, fuzzy -#~ msgid "" -#~ "Defines a list of domain names to automatically add to the walled garden" -#~ msgstr "" -#~ "Được sá»­ dụng để thông báo cho khách hàng về tên miền để dùng cho các tra " -#~ "cứu DNS" - -#, fuzzy -#~ msgid "UAM homepage" -#~ msgstr "Tên miền" - -#, fuzzy -#~ msgid "URL of homepage to redirect unauthenticated users to" -#~ msgstr "" -#~ "Được sá»­ dụng để thông báo cho khách hàng về tên miền để dùng cho các tra " -#~ "cứu DNS" - -#, fuzzy -#~ msgid "UAM static content port" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "TCP port to bind to for only serving embedded content" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "UAM listening address" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "IP address to listen to for authentication of clients" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "UAM logout IP" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "" -#~ "Use this IP address to instantly logout a client accessing it (defaults " -#~ "to 1.1.1.1)" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "UAM listening port" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "TCP port to bind to for authenticating clients (default 3990)" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "UAM secret" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "Shared secret between uamserver and chilli" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "UAM server" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "URL of web server to use for authenticating clients" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "UAM user interface" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "" -#~ "An init.d style program to handle local content on the uamuiport web " -#~ "server" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "CGI program" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "" -#~ "Executable to run as a CGI type program (like haserl) for URLs with " -#~ "extension .chi" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "Web content directory" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "Directory where embedded local web content is placed" -#~ msgstr "Thống nhất cấu hình phÆ°Æ¡ng pháp cài đặt" - -#, fuzzy -#~ msgid "MAC configuration" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "Configure MAC authentication" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "Allowed MAC addresses" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "List of MAC addresses for which MAC authentication will be performed" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "Authenticate allowed MAC addresses without the use of RADIUS" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "Enable MAC authentification" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "Try to authenticate all users based on their mac address alone" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "Password" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "Password used when performing MAC authentication" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "Suffix" -#~ msgstr "Cấu hình RADIUS" - -#, fuzzy -#~ msgid "coovachilli_macauth_macsuffix_desc" -#~ msgstr "Cấu hình RADIUS" diff --git a/package/luci/applications/luci-app-coovachilli/po/zh-cn/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/zh-cn/coovachilli.po deleted file mode 100644 index 7ab003293d..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/zh-cn/coovachilli.po +++ /dev/null @@ -1,26 +0,0 @@ -# coovachilli.pot -# generated from ./applications/luci-coovachilli/luasrc/i18n/coovachilli.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-05 14:32+0200\n" -"Last-Translator: nKsyn \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" - -msgid "CoovaChilli" -msgstr "CoovaChilli 网页认证" - -msgid "Network Configuration" -msgstr "网络配置" - -msgid "RADIUS configuration" -msgstr "RADIUS配置" - -msgid "UAM and MAC Authentication" -msgstr "UAM和MAC认证" diff --git a/package/luci/applications/luci-app-coovachilli/po/zh-tw/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/zh-tw/coovachilli.po deleted file mode 100644 index aad8a4d7a6..0000000000 --- a/package/luci/applications/luci-app-coovachilli/po/zh-tw/coovachilli.po +++ /dev/null @@ -1,24 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-18 19:49+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "CoovaChilli" -msgstr "CoovaChilli服務" - -msgid "Network Configuration" -msgstr "網路設定" - -msgid "RADIUS configuration" -msgstr "RADIUS設定" - -msgid "UAM and MAC Authentication" -msgstr "微軟UAM模組和MAC位指驗證" diff --git a/package/luci/applications/luci-app-coovachilli/root/etc/config/coovachilli b/package/luci/applications/luci-app-coovachilli/root/etc/config/coovachilli deleted file mode 100644 index 0b6be2c593..0000000000 --- a/package/luci/applications/luci-app-coovachilli/root/etc/config/coovachilli +++ /dev/null @@ -1,243 +0,0 @@ -############################################################################## -# -# Sample CoovaChilli configuration file -# -############################################################################## - -# General settings -config general - - # Enable this flag to include debug information. - option debug 0 - - # Re-read configuration file at this interval. Will also cause new domain - # name lookups to be performed. Value is given in seconds. - option interval 3600 - - # File to store information about the process id of the program. - # The program must have write access to this file/directory. - option pidfile /var/run/chilli.pid - - # Directory to use for nonvolatile storage. - # The program must have write access to this directory. - # This tag is currently ignored - #option statedir ./ - - -# TUN parameters -config tun - - # IP network address of external packet data network - # Used to allocate dynamic IP addresses and set up routing. - # Normally you do not need to uncomment this tag. - option net 192.168.182.0/24 - - # Dynamic IP address pool - # Used to allocate dynamic IP addresses to clients. - # If not set it defaults to the net tag. - # Do not uncomment this tag unless you are an experienced user! - #option dynip 192.168.182.0/24 - - # Static IP address pool - # Used to allocate static IP addresses to clients. - # Do not uncomment this tag unless you are an experienced user! - #option statip 192.168.182.0/24 - - # Primary DNS server. - # Will be suggested to the client. - # If omitted the system default will be used. - # Normally you do not need to uncomment this tag. - #option dns1 172.16.0.5 - - # Secondary DNS server. - # Will be suggested to the client. - # If omitted the system default will be used. - # Normally you do not need to uncomment this tag. - #option dns2 172.16.0.6 - - # Domain name - # Will be suggested to the client. - # Normally you do not need to uncomment this tag. - option domain key.chillispot.org - - # Script executed after network interface has been brought up. - # Executed with the following parameters: - # Normally you do not need to uncomment this tag. - #option ipup /etc/chilli.ipup - - # Script executed after network interface has been taken down. - # Executed with the following parameters: - # Normally you do not need to uncomment this tag. - #option ipdown /etc/chilli.ipdown - - # Script executed after a user has been authenticated. - # Executed with the following parameters: - # - # Normally you do not need to uncomment this tag. - #option conup /etc/chilli.conup - - # Script executed after a user has disconnected. - # Executed with the following parameters: - # - # Normally you do not need to uncomment this tag. - #option condown /etc/chilli.condown - - -# DHCP Parameters -config dhcp - - # Ethernet interface to listen to. - # This is the network interface which is connected to the access points. - # In a typical configuration this tag should be set to eth1. - option dhcpif eth1 - - # Use specified MAC address. - # An address in the range 00:00:5E:00:02:00 - 00:00:5E:FF:FF:FF falls - # within the IANA range of addresses and is not allocated for other - # purposes. - # Normally you do not need to uncomment this tag. - #option dhcpmac 00:00:5E:00:02:00 - - # Time before DHCP lease expires - # Normally you do not need to uncomment this tag. - #option lease 600 - - -# Radius parameters -config radius - - # IP address to listen to - # Normally you do not need to uncomment this tag. - #option radiuslisten 127.0.0.1 - - # IP address of radius server 1 - # For most installations you need to modify this tag. - option radiusserver1 rad01.chillispot.org - - # IP address of radius server 2 - # If you have only one radius server you should set radiusserver2 to the - # same value as radiusserver1. - # For most installations you need to modify this tag. - option radiusserver2 rad02.chillispot.org - - # Radius authentication port - # The UDP port number to use for radius authentication requests. - # The same port number is used for both radiusserver1 and radiusserver2. - # Normally you do not need to uncomment this tag. - #option radiusauthport 1812 - - # Radius accounting port - # The UDP port number to use for radius accounting requests. - # The same port number is used for both radiusserver1 and radiusserver2. - # Normally you do not need to uncomment this tag. - #option radiusacctport 1813 - - # Radius shared secret for both servers - # For all installations you should modify this tag. - #option radiussecret testing123 - - # Radius NAS-Identifier - # Normally you do not need to uncomment this tag. - #option radiusnasid nas01 - - # Radius NAS-IP-Address - # Normally you do not need to uncomment this tag. - #option radiusnasip 127.0.0.1 - - # Radius Called-Station-ID - # Normally you do not need to uncomment this tag. - #option radiuscalled 00133300 - - # WISPr Location ID. Should be in the format: isocc=, - # cc=,ac=,network= - # Normally you do not need to uncomment this tag. - #option radiuslocationid isocc=us,cc=1,ac=408,network=ACMEWISP_NewarkAirport - - # WISPr Location Name. Should be in the format: - # , - # Normally you do not need to uncomment this tag. - #option radiuslocationname ACMEWISP,Gate_14_Terminal_C_of_Newark_Airport - - -# Radius proxy parameters -config proxy - - # IP address to listen to - # Normally you do not need to uncomment this tag. - #option proxylisten 10.0.0.1 - - # UDP port to listen to. - # If not specified a port will be selected by the system - # Normally you do not need to uncomment this tag. - #option proxyport 1645 - - # Client(s) from which we accept radius requests - # Normally you do not need to uncomment this tag. - #option proxyclient 10.0.0.1/24 - - # Radius proxy shared secret for all clients - # If not specified defaults to radiussecret - # Normally you do not need to uncomment this tag. - #option proxysecret testing123 - - -# Universal access method (UAM) parameters -config uam - - # URL of web server handling authentication. - option uamserver https://radius.chillispot.org/hotspotlogin - - # URL of welcome homepage. - # Unauthenticated users will be redirected to this URL. If not specified - # users will be redirected to the uamserver instead. - # Normally you do not need to uncomment this tag. - #option uamhomepage http://192.168.182.1/welcome.html - - # Shared between chilli and authentication web server - #option uamsecret ht2eb8ej6s4et3rg1ulp - - # IP address to listen to for authentication requests - # Do not uncomment this tag unless you are an experienced user! - #option uamlisten 192.168.182.1 - - # TCP port to listen to for authentication requests - # Do not uncomment this tag unless you are an experienced user! - #option uamport 3990 - - # Comma separated list of domain names, IP addresses or network segments - # the client can access without first authenticating. - # It is possible to specify this tag multiple times. - # Normally you do not need to uncomment this tag. - #list uamallowed www.chillispot.org - #list uamallowed 10.11.12.0/24 - - # If this flag is given unauthenticated users are allowed to use - # any DNS server. - # Normally you do not need to uncomment this tag. - #uamanydns - - -# MAC authentication -config macauth - - # If this flag is given users will be authenticated only on their MAC - # address. - # Normally you do not need to enable this flag. - option macauth 0 - - # List of MAC addresses. - # The MAC addresses specified in this list will be authenticated only on - # their MAC address. - # This tag is ignored if the macauth tag is given. - # It is possible to specify this tag multiple times. - # Normally you do not need to uncomment this tag. - #list macallowed 00-0A-5E-AC-BE-51 - #list macallowed 00-30-1B-3C-32-E9 - - # Password to use for MAC authentication. - # Normally you do not need to uncomment this tag. - #option macpasswd password - - # Suffix to add to MAC address in order to form the username. - # Normally you do not need to uncomment this tag. - #option macsuffix suffix diff --git a/package/luci/applications/luci-app-cshark/Makefile b/package/luci/applications/luci-app-cshark/Makefile deleted file mode 100644 index 40b0e9fb7f..0000000000 --- a/package/luci/applications/luci-app-cshark/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2017 Dan Luedtke -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Cloudshark capture tool Web UI -LUCI_DEPENDS:=+cshark -LUCI_PKGARCH:=all - -PKG_MAINTAINER:=Luka Perkov - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-cshark/luasrc/controller/cshark.lua b/package/luci/applications/luci-app-cshark/luasrc/controller/cshark.lua deleted file mode 100644 index 4d9bbba290..0000000000 --- a/package/luci/applications/luci-app-cshark/luasrc/controller/cshark.lua +++ /dev/null @@ -1,125 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright (C) 2014, QA Cafe, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -]]-- - -module("luci.controller.cshark", package.seeall) - -function index() - page = node("admin", "network", "cloudshark") - page.target = cbi("admin_network/cshark") - page.title = _("CloudShark") - page.order = 70 - - page = entry({"admin", "network", "cshark_iface_dump_start"}, call("cshark_iface_dump_start"), nil) - page.leaf = true - - page = entry({"admin", "network", "cshark_iface_dump_stop"}, call("cshark_iface_dump_stop"), nil) - page.leaf = true - - page = entry({"admin", "network", "cshark_check_status"}, call("cshark_check_status"), nil) - page.leaf = true - - page = entry({"admin", "network", "cshark_link_list_get"}, call("cshark_link_list_get"), nil) - page.leaf = true - - page = entry({"admin", "network", "cshark_link_list_clear"}, call("cshark_link_list_clear"), nil) - page.leaf = true -end - -function cshark_iface_dump_start(ifname, value, flag, filter) - if ifname == nil or ifname == '' then - ifname = 'any' - end - if tonumber(value) == nil - then - value = '0' - end - if filter == nil or filter == '' then - filter = '' - end - - if flag == nil or flag == '' then - filter = 'T' - end - - luci.http.prepare_content("text/plain") - - local res = os.execute("(/sbin/cshark -i " .. ifname .. " -" .. flag .. " " .. value .. " -p /tmp/cshark-luci.pid " .. filter .. " > /tmp/cshark-luci.out 2>&1) &") - luci.http.write(tostring(res)) -end - -function cshark_iface_dump_stop() - luci.http.prepare_content("text/plain") - - local f = io.open("/tmp/cshark-luci.pid", "rb") - local pid = f:read("*all") - io.close(f) - - local res = os.execute("kill -TERM " .. pid) - luci.http.write(tostring(res)) -end - -function cshark_check_status() - - local msg = ""; - local status; - local f = io.open("/tmp/cshark-luci.pid","r") - if f ~= nil then - status = 1; - io.close(f) - else - status = 0; - end - - f = io.open("/tmp/cshark-luci.out","r") - if f ~= nil then - msg = f:read("*all") - io.close(f) - if msg ~= '' then - os.remove('/tmp/cshark-luci.out') - end - end - - luci.http.prepare_content("application/json") - - local res = {} - res["status"] = status; - res["msg"] = msg; - - luci.http.write_json(res) -end - -function cshark_link_list_get() - local uci = require("uci").cursor() - - luci.http.prepare_content("application/json") - - luci.http.write("[") - - local t = uci:get("cshark", "cshark", "entry") - if (t ~= nil) then - for i = #t, 1, -1 do - luci.http.write("[\"" .. t[i] .. "\"],") - end - end - - luci.http.write("[]]") -end - -function cshark_link_list_clear() - local uci = require("uci").cursor() - - uci:delete("cshark", "cshark", "entry") - uci:commit("cshark"); - - luci.http.status(200, "OK") -end diff --git a/package/luci/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua b/package/luci/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua deleted file mode 100644 index 8db95596f8..0000000000 --- a/package/luci/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua +++ /dev/null @@ -1,30 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright (C) 2014, QA Cafe, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- - -local fs = require "nixio.fs" - -m = Map("cshark", translate("CloudShark")) - -if fs.access("/etc/config/cshark") then - m:section(SimpleSection).template = "cshark" - - s = m:section(TypedSection, "cshark", translate("Options")) - s.anonymous = true - s.addremove = false - - s:option(Value, "url", translate("CloudShark URL")) - s:option(Value, "token", translate("CloudShark API token")) -end - -return m diff --git a/package/luci/applications/luci-app-cshark/luasrc/view/cshark.htm b/package/luci/applications/luci-app-cshark/luasrc/view/cshark.htm deleted file mode 100644 index bc67f806c4..0000000000 --- a/package/luci/applications/luci-app-cshark/luasrc/view/cshark.htm +++ /dev/null @@ -1,291 +0,0 @@ -<%# -LuCI - Lua Configuration Interface - -Copyright (C) 2014, QA Cafe, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ - --%> - -
- <%:Start network capture%> -
- - - - - - - - - - - - - -
<%:Interface%><%:seconds, packets, bytes%><%:Filter%><%:Actions%>
- - - - - - - - -
-
-
- -
- -
- -
- -
- <%:Capture links%> -
- - - - - - -
-
- -
- Visit support.cloudshark.org for help. -
- -
- - - diff --git a/package/luci/applications/luci-app-ddns/Makefile b/package/luci/applications/luci-app-ddns/Makefile deleted file mode 100644 index 69f9880d4f..0000000000 --- a/package/luci/applications/luci-app-ddns/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -# -# Copyright 2008 Steven Barth -# Copyright 2008 Jo-Philipp Wich -# Copyright 2013 Manuel Munz -# Copyright 2014-2017 Christian Schoenebeck -# -# This is free software, licensed under the Apache License, Version 2.0 - -include $(TOPDIR)/rules.mk - -# PKG_NAME:=luci-app-ddns - -# Version == major.minor.patch -# increase on new functionality (minor) or patches (patch) -PKG_VERSION:=2.4.8 - -# Release == build -# increase on changes of translation files -PKG_RELEASE:=2 - -PKG_LICENSE:=Apache-2.0 -PKG_MAINTAINER:=Christian Schoenebeck - -# LuCI specific settings -LUCI_TITLE:=LuCI Support for Dynamic DNS Client (ddns-scripts) -LUCI_DEPENDS:=+luci-mod-admin-full +ddns-scripts -# LUCI_PKGARCH:=all - -define Package/$(PKG_NAME)/config -# shown in make menuconfig -help - $(LUCI_TITLE) - Version: $(PKG_VERSION)-$(PKG_RELEASE) -endef - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-ddns/luasrc/controller/ddns.lua b/package/luci/applications/luci-app-ddns/luasrc/controller/ddns.lua deleted file mode 100755 index 1dfa625541..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/controller/ddns.lua +++ /dev/null @@ -1,313 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Copyright 2013 Manuel Munz --- Copyright 2014-2017 Christian Schoenebeck --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.ddns", package.seeall) - -local NX = require "nixio" -local NXFS = require "nixio.fs" -local DISP = require "luci.dispatcher" -local HTTP = require "luci.http" -local I18N = require "luci.i18n" -- not globally avalible here -local IPKG = require "luci.model.ipkg" -local SYS = require "luci.sys" -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.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.8-2" - -function index() - local nxfs = require "nixio.fs" -- global definitions not available - local sys = require "luci.sys" -- in function index() - local ddns = require "luci.tools.ddns" -- ddns multiused functions - local muci = require "luci.model.uci" - - -- no config create an empty one - if not nxfs.access("/etc/config/ddns") then - nxfs.writefile("/etc/config/ddns", "") - end - - -- preset new option "lookup_host" if not already defined - local uci = muci.cursor() - local commit = false - uci:foreach("ddns", "service", function (s) - if not s["lookup_host"] and s["domain"] then - uci:set("ddns", s[".name"], "lookup_host", s["domain"]) - commit = true - end - end) - if commit then uci:commit("ddns") end - uci:unload("ddns") - - entry( {"admin", "services", "ddns"}, cbi("ddns/overview"), _("Dynamic DNS"), 59) - entry( {"admin", "services", "ddns", "detail"}, cbi("ddns/detail"), nil ).leaf = true - entry( {"admin", "services", "ddns", "hints"}, cbi("ddns/hints", - {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), nil ).leaf = true - entry( {"admin", "services", "ddns", "global"}, cbi("ddns/global"), nil ).leaf = true - entry( {"admin", "services", "ddns", "logview"}, call("logread") ).leaf = true - entry( {"admin", "services", "ddns", "startstop"}, post("startstop") ).leaf = true - entry( {"admin", "services", "ddns", "status"}, call("status") ).leaf = true -end - --- Application specific information functions -function app_description() - return I18N.translate("Dynamic DNS allows that your router can be reached with " .. - "a fixed hostname while having a dynamically changing IP address.") - .. [[
]] - .. I18N.translate("OpenWrt Wiki") .. ": " - .. [[]] - .. I18N.translate("DDNS Client Documentation") .. [[]] - .. " --- " - .. [[]] - .. I18N.translate("DDNS Client Configuration") .. [[]] -end -function app_title_back() - return [[]] - .. I18N.translate(app_title) - .. [[]] -end - --- Standardized application/service functions -function app_title_main() - return [[]] - .. I18N.translate(app_title) - .. [[]] -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 - ) - return ver -end -function service_ok() - return IPKG.compare_versions((service_version() or "0"), ">=", srv_ver_min) -end - --- internal function to read all sections status and return data array -local function _get_status() - local uci = UCI.cursor() - local service = SYS.init.enabled("ddns") and 1 or 0 - local url_start = DISP.build_url("admin", "system", "startup") - local data = {} -- Array to transfer data to javascript - - data[#data+1] = { - enabled = service, -- service enabled - url_up = url_start, -- link to enable DDS (System-Startup) - } - - uci:foreach("ddns", "service", function (s) - - -- Get section we are looking at - -- and enabled state - local section = s[".name"] - local enabled = tonumber(s["enabled"]) or 0 - local datelast = "_empty_" -- formatted date of last update - local datenext = "_empty_" -- formatted date of next update - - -- get force seconds - local force_seconds = DDNS.calc_seconds( - tonumber(s["force_interval"]) or 72 , - s["force_unit"] or "hours" ) - -- get/validate pid and last update - local pid = DDNS.get_pid(section) - local uptime = SYS.uptime() - local lasttime = DDNS.get_lastupd(section) - if lasttime > uptime then -- /var might not be linked to /tmp - lasttime = 0 -- and/or not cleared on reboot - end - - -- no last update happen - if lasttime == 0 then - datelast = "_never_" - - -- we read last update - else - -- calc last update - -- sys.epoch - sys uptime + lastupdate(uptime) - local epoch = os.time() - uptime + lasttime - -- use linux date to convert epoch - datelast = DDNS.epoch2date(epoch) - -- calc and fill next update - datenext = DDNS.epoch2date(epoch + force_seconds) - end - - -- process running but update needs to happen - -- problems if force_seconds > uptime - force_seconds = (force_seconds > uptime) and uptime or force_seconds - if pid > 0 and ( lasttime + force_seconds - uptime ) <= 0 then - datenext = "_verify_" - - -- run once - elseif force_seconds == 0 then - datenext = "_runonce_" - - -- no process running and NOT enabled - elseif pid == 0 and enabled == 0 then - datenext = "_disabled_" - - -- no process running and enabled - elseif pid == 0 and enabled ~= 0 then - datenext = "_stopped_" - end - - -- get/set monitored interface and IP version - local iface = s["interface"] or "wan" - local use_ipv6 = tonumber(s["use_ipv6"]) or 0 - local ipv = (use_ipv6 == 1) and "IPv6" or "IPv4" - iface = ipv .. " / " .. iface - - -- try to get registered IP - local lookup_host = s["lookup_host"] or "_nolookup_" - local dnsserver = s["dns_server"] or "" - 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 = 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_" - end - - -- fill transfer array - data[#data+1] = { - section = section, - enabled = enabled, - iface = iface, - lookup = lookup_host, - reg_ip = reg_ip, - pid = pid, - datelast = datelast, - datenext = datenext - } - end) - - uci:unload("ddns") - return data -end - --- called by XHR.get from detail_logview.htm -function logread(section) - -- read application settings - local uci = UCI.cursor() - 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 - ldata="_nodata_" - end - uci:unload("ddns") - HTTP.write(ldata) -end - --- called by XHR.get from overview_status.htm -function startstop(section, enabled) - local uci = UCI.cursor() - local pid = DDNS.get_pid(section) - local data = {} -- Array to transfer data to javascript - - -- if process running we want to stop and return - if pid > 0 then - local tmp = NX.kill(pid, 15) -- terminate - NX.nanosleep(2) -- 2 second "show time" - -- status changed so return full status - data = _get_status() - HTTP.prepare_content("application/json") - HTTP.write_json(data) - return - end - - -- read uncommitted changes - -- we don't save and commit data from other section or other options - -- only enabled will be done - local exec = true - local changed = uci:changes("ddns") - for k_config, v_section in pairs(changed) do - -- security check because uci.changes only gets our config - if k_config ~= "ddns" then - exec = false - break - end - for k_section, v_option in pairs(v_section) do - -- check if only section of button was changed - if k_section ~= section then - exec = false - break - end - for k_option, v_value in pairs(v_option) do - -- check if only enabled was changed - if k_option ~= "enabled" then - exec = false - break - end - end - end - end - - -- we can not execute because other - -- uncommitted changes pending, so exit here - if not exec then - HTTP.write("_uncommitted_") - return - end - - -- save enable state - uci:set("ddns", section, "enabled", ( (enabled == "true") and "1" or "0") ) - uci:save("ddns") - uci:commit("ddns") - uci:unload("ddns") - - -- 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 - data = _get_status() - HTTP.prepare_content("application/json") - HTTP.write_json(data) -end - --- called by XHR.poll from overview_status.htm -function status() - local data = _get_status() - HTTP.prepare_content("application/json") - HTTP.write_json(data) -end - diff --git a/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua b/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua deleted file mode 100644 index a8f4cbf7ad..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua +++ /dev/null @@ -1,1480 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Copyright 2013 Manuel Munz --- Copyright 2014-2016 Christian Schoenebeck --- Licensed to the public under the Apache License 2.0. - -local NX = require "nixio" -local NXFS = require "nixio.fs" -local SYS = require "luci.sys" -local UTIL = require "luci.util" -local HTTP = require "luci.http" -local DISP = require "luci.dispatcher" -local WADM = require "luci.tools.webadmin" -local DTYP = require "luci.cbi.datatypes" -local CTRL = require "luci.controller.ddns" -- this application's controller -local DDNS = require "luci.tools.ddns" -- ddns multiused functions - --- takeover arguments -- ####################################################### -local section = arg[1] - --- html constants -- ########################################################### -local font_red = "" -local font_off = "" -local bold_on = "" -local bold_off = "" - --- error text constants -- ##################################################### -local err_ipv6_plain = translate("IPv6 not supported") .. " - " .. - translate("please select 'IPv4' address version") -local err_ipv6_basic = bold_on .. - font_red .. - translate("IPv6 not supported") .. - font_off .. - "
" .. translate("please select 'IPv4' address version") .. - bold_off -local err_ipv6_other = bold_on .. - font_red .. - translate("IPv6 not supported") .. - font_off .. - "
" .. translate("please select 'IPv4' address version in") .. " " .. - [[]] .. - translate("Basic Settings") .. - [[]] .. - bold_off - -function err_tab_basic(self) - return translate("Basic Settings") .. " - " .. self.title .. ": " -end -function err_tab_adv(self) - return translate("Advanced Settings") .. " - " .. self.title .. ": " -end -function err_tab_timer(self) - return translate("Timer Settings") .. " - " .. self.title .. ": " -end - --- read services/services_ipv6 files -- ######################################## -local services4 = { } -- IPv4 -- -local fd4 = io.open("/etc/ddns/services", "r") -if fd4 then - local ln, s, t - repeat - ln = fd4:read("*l") - s = ln and ln:match('^%s*".*') -- only handle lines beginning with " - s = s and s:gsub('"','') -- remove " - t = s and UTIL.split(s,"(%s+)",nil,true) -- split on whitespaces - if t then services4[t[1]]=t[2] end - until not ln - fd4:close() -end - -local services6 = { } -- IPv6 -- -local fd6 = io.open("/etc/ddns/services_ipv6", "r") -if fd6 then - local ln, s, t - repeat - ln = fd6:read("*l") - s = ln and ln:match('^%s*".*') -- only handle lines beginning with " - s = s and s:gsub('"','') -- remove " - t = s and UTIL.split(s,"(%s+)",nil,true) -- split on whitespaces - if t then services6[t[1]]=t[2] end - until not ln - fd6:close() -end - --- multi-used functions -- #################################################### --- function to verify settings around ip_source --- will use dynamic_dns_lucihelper to check if --- local IP can be read -local function _verify_ip_source() - -- section is globally defined here be calling agrument (see above) - 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 - _arg = (_ipv6 == "1") - and ipn6:formvalue(section) - or ipn4:formvalue(section) - command = command .. [[n ]] .. _arg - elseif _source == "web" then - _arg = (_ipv6 == "1") - and iurl6:formvalue(section) - or iurl4:formvalue(section) - command = command .. [[u ]] .. _arg - - -- proxy only needed for checking url - _arg = (pxy) and pxy:formvalue(section) or "" - if (_arg and #_arg > 0) then - command = command .. [[ -p ]] .. _arg - end - elseif _source == "interface" then - command = command .. [[i ]] .. ipi:formvalue(section) - elseif _source == "script" then - command = command .. [[s ]] .. ips:formvalue(section) - end - command = command .. [[ -- get_local_ip]] - return (SYS.call(command) == 0) -end - --- function to check if option is used inside url or script --- return -1 on error, 0 NOT required, 1 required -local function _option_used(option, urlscript) - local surl -- search string for url - local ssh -- search string for script - local required -- option used inside url or script - - if option == "domain" then surl, ssh = '%[DOMAIN%]', '%$domain' - elseif option == "username" then surl, ssh = '%[USERNAME%]', '%$username' - elseif option == "password" then surl, ssh = '%[PASSWORD%]', '%$password' - elseif option == "param_enc" then surl, ssh = '%[PARAMENC%]', '%$param_enc' - elseif option == "param_opt" then surl, ssh = '%[PARAMOPT%]', '%$param_opt' - else - error("undefined option") - return -1 -- return on error - end - - local required = false - -- handle url - if urlscript:find('http') then - required = ( urlscript:find(surl) ) - -- handle script - else - if not urlscript:find("/") then - -- might be inside ddns-scripts directory - urlscript = "/usr/lib/ddns/" .. urlscript - end - -- problem with script exit here - if not NXFS.access(urlscript) then return -1 end - - local f = io.input(urlscript) - -- still problem with script exit here - if not f then return -1 end - for l in f:lines() do - repeat - if l:find('^#') then break end -- continue on comment lines - required = ( l:find(surl) or l:find(ssh) ) - until true - if required then break end - end - f:close() - end - return (required and 1 or 0) -end - --- function to verify if option is valid -local function _option_validate(self, value) - -- section is globally defined here be calling agrument (see above) - local fusev6 = usev6:formvalue(section) or "0" - local fsvc4 = svc4:formvalue(section) or "-" - local fsvc6 = svc6:formvalue(section) or "-" - local urlsh, used - - -- IP-Version dependent custom service selected - if (fusev6 == "0" and fsvc4 == "-") or - (fusev6 == "1" and fsvc6 == "-") then - -- read custom url - urlsh = uurl:formvalue(section) or "" - -- no url then read custom script - if (#urlsh == 0) then - urlsh = ush:formvalue(section) or "" - end - -- IPv4 read from services4 table - elseif (fusev6 == "0") then - urlsh = services4[fsvc4] or "" - -- IPv6 read from services6 table - else - urlsh = services6[fsvc6] or "" - end - -- problem with url or script exit here - -- error handled somewhere else - if (#urlsh == 0) then return "" end - - used = _option_used(self.option, urlsh) - -- on error or not used return empty sting - if used < 1 then return "" end - -- needed but no data then return error - if not value or (#value == 0) then - return nil, err_tab_basic(self) .. translate("missing / required") - end - return value -end - --- cbi-map definition -- ####################################################### -local m = Map("ddns") -m.title = CTRL.app_title_back() -m.description = CTRL.app_description() -m.redirect = DISP.build_url("admin", "services", "ddns") - -m.on_after_commit = function(self) - if self.changed then -- changes ? - local pid = DDNS.get_pid(section) - if pid > 0 then -- running ? - local tmp = NX.kill(pid, 1) -- send SIGHUP - end - end -end - --- provider switch was requested, save and reload page -if m:formvalue("cbid.ddns.%s._switch" % section) then -- section == arg[1] - local fsvc - local fusev6 = m:formvalue("cbid.ddns.%s.use_ipv6" % section) or "0" - if fusev6 == "1" then - fsvc = m:formvalue("cbid.ddns.%s.ipv6_service_name" % section) or "" - else - fsvc = m:formvalue("cbid.ddns.%s.ipv4_service_name" % section) or "" - end - - if fusev6 ~= (m:get(section, "use_ipv6") or "0") then -- IPv6 was changed - m:set(section, "use_ipv6", fusev6) -- save it - end - - if fsvc ~= "-" then -- NOT "custom" - m:set(section, "service_name", fsvc) -- save it - else -- else - m:del(section, "service_name") -- delete it - end - m.uci:save(m.config) - - -- reload page - HTTP.redirect( DISP.build_url("admin", "services", "ddns", "detail", section) ) - return -end - --- read application settings -- ################################################ --- log directory -local logdir = m.uci:get(m.config, "global", "ddns_logdir") or "/var/log/ddns" - --- cbi-section definition -- ################################################### -local ns = m:section( NamedSection, section, "service", - translate("Details for") .. ([[: %s]] % section), - translate("Configure here the details for selected Dynamic DNS service.") ) -ns.instance = section -- arg [1] -ns:tab("basic", translate("Basic Settings"), nil ) -ns:tab("advanced", translate("Advanced Settings"), nil ) -ns:tab("timer", translate("Timer Settings"), nil ) -ns:tab("logview", translate("Log File Viewer"), nil ) - --- TAB: Basic ##################################################################################### --- enabled -- ################################################################# -en = ns:taboption("basic", Flag, "enabled", - translate("Enabled"), - translate("If this service section is disabled it could not be started." .. "
" .. - "Neither from LuCI interface nor from console") ) -en.orientation = "horizontal" - --- IPv4/IPv6 - lookup_host -- ################################################# -luh = ns:taboption("basic", Value, "lookup_host", - translate("Lookup Hostname"), - translate("Hostname/FQDN to validate, if IP update happen or necessary") ) -luh.rmempty = false -luh.placeholder = "myhost.example.com" -function luh.validate(self, value) - if not value - or not (#value > 0) - or not DTYP.hostname(value) then - return nil, err_tab_basic(self) .. translate("invalid FQDN / required - Sample") .. ": 'myhost.example.com'" - else - return UTIL.trim(value) - end -end -function luh.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- use_ipv6 -- ################################################################ -usev6 = ns:taboption("basic", ListValue, "use_ipv6", - translate("IP address version"), - translate("Defines which IP address 'IPv4/IPv6' is send to the DDNS provider") ) -usev6.widget = "radio" -usev6.default = "0" -usev6:value("0", translate("IPv4-Address") ) -function usev6.cfgvalue(self, section) - local value = AbstractValue.cfgvalue(self, section) or "0" - if DDNS.has_ipv6 or (value == "1" and not DDNS.has_ipv6) then - self:value("1", translate("IPv6-Address") ) - end - if value == "1" and not DDNS.has_ipv6 then - self.description = err_ipv6_basic - end - return value -end -function usev6.validate(self, value) - if (value == "1" and DDNS.has_ipv6) or value == "0" then - return value - end - return nil, err_tab_basic(self) .. err_ipv6_plain -end -function usev6.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4 - service_name -- ##################################################### -svc4 = ns:taboption("basic", ListValue, "ipv4_service_name", - translate("DDNS Service provider") .. " [IPv4]" ) -svc4.default = "-" -svc4:depends("use_ipv6", "0") -- only show on IPv4 -function svc4.cfgvalue(self, section) - local v = DDNS.read_value(self, section, "service_name") - if v and (#v > 0) then - for s, u in UTIL.kspairs(services4) do - if v == s then return v end - end - end - return "-" -end -function svc4.validate(self, value) - if usev6:formvalue(section) ~= "1" then -- do only on IPv4 - return value - else - return "" -- suppress validate error - end -end -function svc4.write(self, section, value) - if usev6:formvalue(section) ~= "1" then -- do only IPv4 here - self.map:del(section, self.option) -- to be shure - if value ~= "-" then -- and write "service_name - self.map:del(section, "update_url") -- delete update_url - self.map:del(section, "update_script") -- delete update_script - return self.map:set(section, "service_name", value) - else - return self.map:del(section, "service_name") - end - end -end -function svc4.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv6 - service_name -- ##################################################### -svc6 = ns:taboption("basic", ListValue, "ipv6_service_name", - translate("DDNS Service provider") .. " [IPv6]" ) -svc6.default = "-" -svc6:depends("use_ipv6", "1") -- only show on IPv6 -if not DDNS.has_ipv6 then - svc6.description = err_ipv6_basic -end -function svc6.cfgvalue(self, section) - local v = DDNS.read_value(self, section, "service_name") - if v and (#v > 0) then - for s, u in UTIL.kspairs(services4) do - if v == s then return v end - end - end - return "-" -end -function svc6.validate(self, value) - if usev6:formvalue(section) == "1" then -- do only on IPv6 - if DDNS.has_ipv6 then return value end - return nil, err_tab_basic(self) .. err_ipv6_plain - else - return "" -- suppress validate error - end -end -function svc6.write(self, section, value) - if usev6:formvalue(section) == "1" then -- do only when IPv6 - self.map:del(section, self.option) -- delete "ipv6_service_name" helper - if value ~= "-" then -- and write "service_name - self.map:del(section, "update_url") -- delete update_url - self.map:del(section, "update_script") -- delete update_script - return self.map:set(section, "service_name", value) - else - return self.map:del(section, "service_name") - end - end -end -function svc6.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4/IPv6 - change Provider -- ############################################# -svs = ns:taboption("basic", Button, "_switch") -svs.title = translate("Really change DDNS provider?") -svs.inputtitle = translate("Change provider") -svs.inputstyle = "apply" - --- IPv4/IPv6 - update_url -- ################################################## -uurl = ns:taboption("basic", Value, "update_url", - translate("Custom update-URL"), - translate("Update URL to be used for updating your DDNS Provider." .. "
" .. - "Follow instructions you will find on their WEB page.") ) -function uurl.validate(self, value) - local fush = ush:formvalue(section) - local fusev6 = usev6:formvalue(section) - - if (fusev6 ~= "1" and svc4:formvalue(section) ~= "-") or - (fusev6 == "1" and svc6:formvalue(section) ~= "-") then - return "" -- suppress validate error - elseif not value or (#value == 0) then - if not fush or (#fush == 0) then - return nil, err_tab_basic(self) .. translate("missing / required") - else - return "" -- suppress validate error / update_script is given - end - elseif (#fush > 0) then - return nil, err_tab_basic(self) .. translate("either url or script could be set") - end - - local url = DDNS.parse_url(value) - if not url.scheme == "http" then - return nil, err_tab_basic(self) .. translate("must start with 'http://'") - elseif not url.query then - return nil, err_tab_basic(self) .. " " .. translate("missing / required") - elseif not url.host then - return nil, err_tab_basic(self) .. " " .. translate("missing / required") - elseif SYS.call([[nslookup ]] .. url.host .. [[ >/dev/null 2>&1]]) ~= 0 then - return nil, err_tab_basic(self) .. translate("can not resolve host: ") .. url.host - end - - return value -end -function uurl.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4/IPv6 - update_script -- ############################################### -ush = ns:taboption("basic", Value, "update_script", - translate("Custom update-script"), - translate("Custom update script to be used for updating your DDNS Provider.") ) -function ush.validate(self, value) - local fuurl = uurl:formvalue(section) - local fusev6 = usev6:formvalue(section) - - if (fusev6 ~= "1" and svc4:formvalue(section) ~= "-") or - (fusev6 == "1" and svc6:formvalue(section) ~= "-") then - return "" -- suppress validate error - elseif not value or (#value == 0) then - if not fuurl or (#fuurl == 0) then - return nil, err_tab_basic(self) .. translate("missing / required") - else - return "" -- suppress validate error / update_url is given - end - elseif (#fuurl > 0) then - return nil, err_tab_basic(self) .. translate("either url or script could be set") - elseif not NXFS.access(value) then - return nil, err_tab_basic(self) .. translate("File not found") - end - return value -end -function ush.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4/IPv6 - domain -- ###################################################### -dom = ns:taboption("basic", Value, "domain", - translate("Domain"), - translate("Replaces [DOMAIN] in Update-URL") ) -dom.placeholder = "myhost.example.com" -function dom.validate(self, value) - return _option_validate(self, value) -end -function dom.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4/IPv6 - username -- #################################################### -user = ns:taboption("basic", Value, "username", - translate("Username"), - translate("Replaces [USERNAME] in Update-URL (URL-encoded)") ) -function user.validate(self, value) - return _option_validate(self, value) -end -function user.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4/IPv6 - password -- #################################################### -pw = ns:taboption("basic", Value, "password", - translate("Password"), - translate("Replaces [PASSWORD] in Update-URL (URL-encoded)") ) -pw.password = true -function pw.validate(self, value) - return _option_validate(self, value) -end -function pw.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4/IPv6 - param_enc -- ################################################### -pe = ns:taboption("basic", Value, "param_enc", - translate("Optional Encoded Parameter"), - translate("Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)") ) -function pe.validate(self, value) - return _option_validate(self, value) -end -function pe.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4/IPv6 - param_enc -- ################################################### -po = ns:taboption("basic", Value, "param_opt", - translate("Optional Parameter"), - translate("Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)") ) -function po.validate(self, value) - return _option_validate(self, value) -end -function po.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- handled service dependent show/display -- ################################## --- IPv4 -- -local cv4 = svc4:cfgvalue(section) -if cv4 ~= "-" then - svs:depends ("ipv4_service_name", "-" ) -- show only if "-" - ush:depends ("ipv4_service_name", "?") - uurl:depends("ipv4_service_name", "?") -else - uurl:depends("ipv4_service_name", "-") - ush:depends ("ipv4_service_name", "-") - dom:depends("ipv4_service_name", "-" ) - user:depends("ipv4_service_name", "-" ) - pw:depends("ipv4_service_name", "-" ) - pe:depends("ipv4_service_name", "-" ) - po:depends("ipv4_service_name", "-" ) -end -for s, u in UTIL.kspairs(services4) do - svc4:value(s) -- fill DropDown-List - if cv4 ~= s then - svs:depends("ipv4_service_name", s ) - else - dom:depends ("ipv4_service_name", ((_option_used(dom.option, u) == 1) and s or "?") ) - user:depends("ipv4_service_name", ((_option_used(user.option, u) == 1) and s or "?") ) - pw:depends ("ipv4_service_name", ((_option_used(pw.option, u) == 1) and s or "?") ) - pe:depends ("ipv4_service_name", ((_option_used(pe.option, u) == 1) and s or "?") ) - po:depends ("ipv4_service_name", ((_option_used(po.option, u) == 1) and s or "?") ) - end -end -svc4:value("-", translate("-- custom --") ) - --- IPv6 -- -local cv6 = svc6:cfgvalue(section) -if cv6 ~= "-" then - svs:depends ("ipv6_service_name", "-" ) - uurl:depends("ipv6_service_name", "?") - ush:depends ("ipv6_service_name", "?") -else - uurl:depends("ipv6_service_name", "-") - ush:depends ("ipv6_service_name", "-") - dom:depends("ipv6_service_name", "-" ) - user:depends("ipv6_service_name", "-" ) - pw:depends("ipv6_service_name", "-" ) - pe:depends("ipv6_service_name", "-" ) - po:depends("ipv6_service_name", "-" ) -end -for s, u in UTIL.kspairs(services6) do - svc6:value(s) -- fill DropDown-List - if cv6 ~= s then - svs:depends("ipv6_service_name", s ) - else - dom:depends ("ipv6_service_name", ((_option_used(dom.option, u) == 1) and s or "?") ) - user:depends("ipv6_service_name", ((_option_used(user.option, u) == 1) and s or "?") ) - pw:depends ("ipv6_service_name", ((_option_used(pw.option, u) == 1) and s or "?") ) - pe:depends ("ipv6_service_name", ((_option_used(pe.option, u) == 1) and s or "?") ) - po:depends ("ipv6_service_name", ((_option_used(po.option, u) == 1) and s or "?") ) - end -end -svc6:value("-", translate("-- custom --") ) - --- IPv4/IPv6 - use_https -- ################################################### -if DDNS.has_ssl or ( ( m:get(section, "use_https") or "0" ) == "1" ) then - https = ns:taboption("basic", Flag, "use_https", - translate("Use HTTP Secure") ) - https.orientation = "horizontal" - function https.cfgvalue(self, section) - local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_ssl and value == "1" then - self.description = bold_on .. font_red .. - translate("HTTPS not supported") .. font_off .. "
" .. - translate("please disable") .. " !" .. bold_off - else - self.description = translate("Enable secure communication with DDNS provider") - end - return value - end - function https.validate(self, value) - if (value == "1" and DDNS.has_ssl ) or value == "0" then return value end - return nil, err_tab_basic(self) .. translate("HTTPS not supported") .. " !" - end - function https.write(self, section, value) - if value == "1" then - return self.map:set(section, self.option, value) - else - self.map:del(section, "cacert") - return self.map:del(section, self.option) - end - end -end - --- IPv4/IPv6 - cacert -- ###################################################### -if DDNS.has_ssl then - cert = ns:taboption("basic", Value, "cacert", - translate("Path to CA-Certificate"), - translate("directory or path/file") .. "
" .. - translate("or") .. bold_on .. " IGNORE " .. bold_off .. - translate("to run HTTPS without verification of server certificates (insecure)") ) - cert:depends("use_https", "1") - cert.placeholder = "/etc/ssl/certs" - cert.forcewrite = true - function cert.validate(self, value) - if https:formvalue(section) ~= "1" then - return "" -- suppress validate error if NOT https - end - if value then -- otherwise errors in datatype check - if DTYP.directory(value) - or DTYP.file(value) - or (value == "IGNORE") - or (#value == 0) then - return value - end - end - return nil, err_tab_basic(self) .. - translate("file or directory not found or not 'IGNORE'") .. " !" - end - function cert.parse(self, section, novld) - DDNS.value_parse(self, section, novld) - end -end - --- TAB: Advanced ################################################################################# --- IPv4 - ip_source -- ######################################################## -src4 = ns:taboption("advanced", ListValue, "ipv4_source", - translate("IP address source") .. " [IPv4]", - translate("Defines the source to read systems IPv4-Address from, that will be send to the DDNS provider") ) -src4:depends("use_ipv6", "0") -- IPv4 selected -src4.default = "network" -src4:value("network", translate("Network")) -src4:value("web", translate("URL")) -src4:value("interface", translate("Interface")) -src4:value("script", translate("Script")) -function src4.cfgvalue(self, section) - return DDNS.read_value(self, section, "ip_source") -end -function src4.validate(self, value) - if usev6:formvalue(section) == "1" then - return "" -- ignore on IPv6 selected - elseif not _verify_ip_source() then - return nil, err_tab_adv(self) .. - translate("can not detect local IP. Please select a different Source combination") - else - return value - end -end -function src4.write(self, section, value) - if usev6:formvalue(section) == "1" then - return true -- ignore on IPv6 selected - elseif value == "network" then - self.map:del(section, "ip_url") -- delete not need parameters - self.map:del(section, "ip_interface") - self.map:del(section, "ip_script") - elseif value == "web" then - self.map:del(section, "ip_network") -- delete not need parameters - self.map:del(section, "ip_interface") - self.map:del(section, "ip_script") - elseif value == "interface" then - self.map:del(section, "ip_network") -- delete not need parameters - self.map:del(section, "ip_url") - self.map:del(section, "ip_script") - elseif value == "script" then - self.map:del(section, "ip_network") - self.map:del(section, "ip_url") -- delete not need parameters - self.map:del(section, "ip_interface") - end - self.map:del(section, self.option) -- delete "ipv4_source" helper - return self.map:set(section, "ip_source", value) -- and write "ip_source -end -function src4.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv6 - ip_source -- ######################################################## -src6 = ns:taboption("advanced", ListValue, "ipv6_source", - translate("IP address source") .. " [IPv6]", - translate("Defines the source to read systems IPv6-Address from, that will be send to the DDNS provider") ) -src6:depends("use_ipv6", 1) -- IPv6 selected -src6.default = "network" -src6:value("network", translate("Network")) -src6:value("web", translate("URL")) -src6:value("interface", translate("Interface")) -src6:value("script", translate("Script")) -if not DDNS.has_ipv6 then - src6.description = err_ipv6_other -end -function src6.cfgvalue(self, section) - return DDNS.read_value(self, section, "ip_source") -end -function src6.validate(self, value) - if usev6:formvalue(section) ~= "1" then - return "" -- ignore on IPv4 selected - elseif not DDNS.has_ipv6 then - return nil, err_tab_adv(self) .. err_ipv6_plain - elseif not _verify_ip_source() then - return nil, err_tab_adv(self) .. - translate("can not detect local IP. Please select a different Source combination") - else - return value - end -end -function src6.write(self, section, value) - if usev6:formvalue(section) ~= "1" then - return true -- ignore on IPv4 selected - elseif value == "network" then - self.map:del(section, "ip_url") -- delete not need parameters - self.map:del(section, "ip_interface") - self.map:del(section, "ip_script") - elseif value == "web" then - self.map:del(section, "ip_network") -- delete not need parameters - self.map:del(section, "ip_interface") - self.map:del(section, "ip_script") - elseif value == "interface" then - self.map:del(section, "ip_network") -- delete not need parameters - self.map:del(section, "ip_url") - self.map:del(section, "ip_script") - elseif value == "script" then - self.map:del(section, "ip_network") - self.map:del(section, "ip_url") -- delete not need parameters - self.map:del(section, "ip_interface") - end - self.map:del(section, self.option) -- delete "ipv4_source" helper - return self.map:set(section, "ip_source", value) -- and write "ip_source -end -function src6.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4 - ip_network (default "wan") -- ####################################### -ipn4 = ns:taboption("advanced", ListValue, "ipv4_network", - translate("Network") .. " [IPv4]", - translate("Defines the network to read systems IPv4-Address from") ) -ipn4:depends("ipv4_source", "network") -ipn4.default = "wan" -WADM.cbi_add_networks(ipn4) -function ipn4.cfgvalue(self, section) - return DDNS.read_value(self, section, "ip_network") -end -function ipn4.validate(self, value) - if usev6:formvalue(section) == "1" - or src4:formvalue(section) ~= "network" then - -- ignore if IPv6 selected OR - -- ignore everything except "network" - return "" - else - return value - end -end -function ipn4.write(self, section, value) - if usev6:formvalue(section) == "1" - or src4:formvalue(section) ~= "network" then - -- ignore if IPv6 selected OR - -- ignore everything except "network" - return true - else - -- set also as "interface" for monitoring events changes/hot-plug - self.map:set(section, "interface", value) - self.map:del(section, self.option) -- delete "ipv4_network" helper - return self.map:set(section, "ip_network", value) -- and write "ip_network" - end -end -function ipn4.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv6 - ip_network (default "wan6") -- ###################################### -ipn6 = ns:taboption("advanced", ListValue, "ipv6_network", - translate("Network") .. " [IPv6]" ) -ipn6:depends("ipv6_source", "network") -ipn6.default = "wan6" -WADM.cbi_add_networks(ipn6) -if DDNS.has_ipv6 then - ipn6.description = translate("Defines the network to read systems IPv6-Address from") -else - ipn6.description = err_ipv6_other -end -function ipn6.cfgvalue(self, section) - return DDNS.read_value(self, section, "ip_network") -end -function ipn6.validate(self, value) - if usev6:formvalue(section) ~= "1" - or src6:formvalue(section) ~= "network" then - -- ignore if IPv4 selected OR - -- ignore everything except "network" - return "" - elseif DDNS.has_ipv6 then - return value - else - return nil, err_tab_adv(self) .. err_ipv6_plain - end -end -function ipn6.write(self, section, value) - if usev6:formvalue(section) ~= "1" - or src6:formvalue(section) ~= "network" then - -- ignore if IPv4 selected OR - -- ignore everything except "network" - return true - else - -- set also as "interface" for monitoring events changes/hotplug - self.map:set(section, "interface", value) - self.map:del(section, self.option) -- delete "ipv6_network" helper - return self.map:set(section, "ip_network", value) -- and write "ip_network" - end -end -function ipn6.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4 - ip_url (default "checkip.dyndns.com") -- ############################ -iurl4 = ns:taboption("advanced", Value, "ipv4_url", - translate("URL to detect") .. " [IPv4]", - translate("Defines the Web page to read systems IPv4-Address from") ) -iurl4:depends("ipv4_source", "web") -iurl4.default = "http://checkip.dyndns.com" -function iurl4.cfgvalue(self, section) - return DDNS.read_value(self, section, "ip_url") -end -function iurl4.validate(self, value) - if usev6:formvalue(section) == "1" - or src4:formvalue(section) ~= "web" then - -- ignore if IPv6 selected OR - -- ignore everything except "web" - return "" - elseif not value or #value == 0 then - return nil, err_tab_adv(self) .. translate("missing / required") - end - - local url = DDNS.parse_url(value) - if not (url.scheme == "http" or url.scheme == "https") then - return nil, err_tab_adv(self) .. translate("must start with 'http://'") - elseif not url.host then - return nil, err_tab_adv(self) .. " " .. translate("missing / required") - elseif SYS.call([[nslookup ]] .. url.host .. [[>/dev/null 2>&1]]) ~= 0 then - return nil, err_tab_adv(self) .. translate("can not resolve host: ") .. url.host - else - return value - end -end -function iurl4.write(self, section, value) - if usev6:formvalue(section) == "1" - or src4:formvalue(section) ~= "web" then - -- ignore if IPv6 selected OR - -- ignore everything except "web" - return true - else - self.map:del(section, self.option) -- delete "ipv4_url" helper - return self.map:set(section, "ip_url", value) -- and write "ip_url" - end -end -function iurl4.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv6 - ip_url (default "checkipv6.dyndns.com") -- ########################## -iurl6 = ns:taboption("advanced", Value, "ipv6_url", - translate("URL to detect") .. " [IPv6]" ) -iurl6:depends("ipv6_source", "web") -iurl6.default = "http://checkipv6.dyndns.com" -if DDNS.has_ipv6 then - iurl6.description = translate("Defines the Web page to read systems IPv6-Address from") -else - iurl6.description = err_ipv6_other -end -function iurl6.cfgvalue(self, section) - return DDNS.read_value(self, section, "ip_url") -end -function iurl6.validate(self, value) - if usev6:formvalue(section) ~= "1" - or src6:formvalue(section) ~= "web" then - -- ignore if IPv4 selected OR - -- ignore everything except "web" - return "" - elseif not DDNS.has_ipv6 then - return nil, err_tab_adv(self) .. err_ipv6_plain - elseif not value or #value == 0 then - return nil, err_tab_adv(self) .. translate("missing / required") - end - - local url = DDNS.parse_url(value) - if not (url.scheme == "http" or url.scheme == "https") then - return nil, err_tab_adv(self) .. translate("must start with 'http://'") - elseif not url.host then - return nil, err_tab_adv(self) .. " " .. translate("missing / required") - elseif SYS.call([[nslookup ]] .. url.host .. [[>/dev/null 2>&1]]) ~= 0 then - return nil, err_tab_adv(self) .. translate("can not resolve host: ") .. url.host - else - return value - end -end -function iurl6.write(self, section, value) - if usev6:formvalue(section) ~= "1" - or src6:formvalue(section) ~= "web" then - -- ignore if IPv4 selected OR - -- ignore everything except "web" - return true - else - self.map:del(section, self.option) -- delete "ipv6_url" helper - return self.map:set(section, "ip_url", value) -- and write "ip_url" - end -end -function iurl6.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4 + IPv6 - ip_interface -- ############################################## -ipi = ns:taboption("advanced", ListValue, "ip_interface", - translate("Interface"), - translate("Defines the interface to read systems IP-Address from") ) -ipi:depends("ipv4_source", "interface") -- IPv4 -ipi:depends("ipv6_source", "interface") -- or IPv6 -for _, v in pairs(SYS.net.devices()) do - -- show only interface set to a network - -- and ignore loopback - net = WADM.iface_get_network(v) - if net and net ~= "loopback" then - ipi:value(v) - end -end -function ipi.validate(self, value) - local fusev6 = usev6:formvalue(section) - if (fusev6 ~= "1" and src4:formvalue(section) ~= "interface") - or (fusev6 == "1" and src6:formvalue(section) ~= "interface") then - return "" - else - return value - end -end -function ipi.write(self, section, value) - local fusev6 = usev6:formvalue(section) - if (fusev6 ~= "1" and src4:formvalue(section) ~= "interface") - or (fusev6 == "1" and src6:formvalue(section) ~= "interface") then - return true - else - -- get network from device to - -- set also as "interface" for monitoring events changes/hotplug - local net = WADM.iface_get_network(value) - self.map:set(section, "interface", net) - return self.map:set(section, self.option, value) - end -end -function ipi.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4 + IPv6 - ip_script -- ################################################# -ips = ns:taboption("advanced", Value, "ip_script", - translate("Script"), - translate("User defined script to read systems IP-Address") ) -ips:depends("ipv4_source", "script") -- IPv4 -ips:depends("ipv6_source", "script") -- or IPv6 -ips.placeholder = "/path/to/script.sh" -function ips.validate(self, value) - local fusev6 = usev6:formvalue(section) - local split - if value then split = UTIL.split(value, " ") end - - if (fusev6 ~= "1" and src4:formvalue(section) ~= "script") - or (fusev6 == "1" and src6:formvalue(section) ~= "script") then - return "" - elseif not value or not (#value > 0) or not NXFS.access(split[1], "x") then - return nil, err_tab_adv(self) .. - translate("not found or not executable - Sample: '/path/to/script.sh'") - else - return value - end -end -function ips.write(self, section, value) - local fusev6 = usev6:formvalue(section) - if (fusev6 ~= "1" and src4:formvalue(section) ~= "script") - or (fusev6 == "1" and src6:formvalue(section) ~= "script") then - return true - else - return self.map:set(section, self.option, value) - end -end -function ips.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4 - interface - default "wan" -- ######################################## --- event network to monitor changes/hotplug/dynamic_dns_updater.sh --- only needs to be set if "ip_source"="web" or "script" --- if "ip_source"="network" or "interface" we use their network -eif4 = ns:taboption("advanced", ListValue, "ipv4_interface", - translate("Event Network") .. " [IPv4]", - translate("Network on which the ddns-updater scripts will be started") ) -eif4:depends("ipv4_source", "web") -eif4:depends("ipv4_source", "script") -eif4.default = "wan" -WADM.cbi_add_networks(eif4) -function eif4.cfgvalue(self, section) - return DDNS.read_value(self, section, "interface") -end -function eif4.validate(self, value) - local fsrc4 = src4:formvalue(section) or "" - if usev6:formvalue(section) == "1" - or fsrc4 == "network" - or fsrc4 == "interface" then - return "" -- ignore IPv6, network, interface - else - return value - end -end -function eif4.write(self, section, value) - local fsrc4 = src4:formvalue(section) or "" - if usev6:formvalue(section) == "1" - or fsrc4 == "network" - or fsrc4 == "interface" then - return true -- ignore IPv6, network, interface - else - self.map:del(section, self.option) -- delete "ipv4_interface" helper - return self.map:set(section, "interface", value) -- and write "interface" - end -end -function eif4.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv6 - interface - default "wan6" -- ####################################### --- event network to monitor changes/hotplug --- only needs to be set if "ip_source"="web" or "script" --- if "ip_source"="network" or "interface" we use their network -eif6 = ns:taboption("advanced", ListValue, "ipv6_interface", - translate("Event Network") .. " [IPv6]" ) -eif6:depends("ipv6_source", "web") -eif6:depends("ipv6_source", "script") -eif6.default = "wan6" -WADM.cbi_add_networks(eif6) -if not DDNS.has_ipv6 then - eif6.description = err_ipv6_other -else - eif6.description = translate("Network on which the ddns-updater scripts will be started") -end -function eif6.cfgvalue(self, section) - return DDNS.read_value(self, section, "interface") -end -function eif6.validate(self, value) - local fsrc6 = src6:formvalue(section) or "" - if usev6:formvalue(section) ~= "1" - or fsrc6 == "network" - or fsrc6 == "interface" then - return "" -- ignore IPv4, network, interface - elseif not DDNS.has_ipv6 then - return nil, err_tab_adv(self) .. err_ipv6_plain - else - return value - end -end -function eif6.write(self, section, value) - local fsrc6 = src6:formvalue(section) or "" - if usev6:formvalue(section) ~= "1" - or fsrc6 == "network" - or fsrc6 == "interface" then - return true -- ignore IPv4, network, interface - else - self.map:del(section, self.option) -- delete "ipv6_interface" helper - return self.map:set(section, "interface", value) -- and write "interface" - end -end -function eif6.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- IPv4/IPv6 - bind_network -- ################################################ -if DDNS.has_bindnet or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then - bnet = ns:taboption("advanced", ListValue, "bind_network", - translate("Bind Network") ) - bnet:depends("ipv4_source", "web") - bnet:depends("ipv6_source", "web") - bnet.default = "" - bnet:value("", translate("-- default --")) - WADM.cbi_add_networks(bnet) - function bnet.cfgvalue(self, section) - local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_bindnet and value ~= "" then - self.description = bold_on .. font_red .. - translate("Binding to a specific network not supported") .. font_off .. "
" .. - translate("please set to 'default'") .. " !" .. bold_off - else - self.description = translate("OPTIONAL: Network to use for communication") .. - "
" .. translate("Casual users should not change this setting") - end - return value - end - function bnet.validate(self, value) - if ( (value ~= "") and DDNS.has_bindnet ) or (value == "") then return value end - return nil, err_tab_adv(self) .. translate("Binding to a specific network not supported") .. " !" - end - function bnet.parse(self, section, novld) - DDNS.value_parse(self, section, novld) - end -end - --- IPv4 + IPv6 - force_ipversion -- ########################################### --- optional to force wget/curl and host to use only selected IP version --- command parameter "-4" or "-6" -if DDNS.has_forceip or ( ( m:get(section, "force_ipversion") or "0" ) ~= "0" ) then - fipv = ns:taboption("advanced", Flag, "force_ipversion", - translate("Force IP Version") ) - fipv.orientation = "horizontal" - function fipv.cfgvalue(self, section) - local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_forceip and value ~= "0" then - self.description = bold_on .. font_red .. - translate("Force IP Version not supported") .. font_off .. "
" .. - translate("please disable") .. " !" .. bold_off - else - self.description = translate("OPTIONAL: Force the usage of pure IPv4/IPv6 only communication.") - end - return value - end - function fipv.validate(self, value) - if (value == "1" and DDNS.has_forceip) or value == "0" then return value end - return nil, err_tab_adv(self) .. translate("Force IP Version not supported") - end -end - --- IPv4 + IPv6 - dns_server -- ################################################ --- optional DNS Server to use resolving my IP -if DDNS.has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then - dns = ns:taboption("advanced", Value, "dns_server", - translate("DNS-Server"), - translate("OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'.") .. "
" .. - translate("Format: IP or FQDN")) - dns.placeholder = "mydns.lan" - function dns.validate(self, value) - -- if .datatype is set, then it is checked before calling this function - if not value or (#value == 0) then - return "" -- ignore on empty - elseif not DDNS.has_dnsserver then - return nil, err_tab_adv(self) .. translate("Specifying a DNS-Server is not supported") - elseif not DTYP.host(value) then - return nil, err_tab_adv(self) .. translate("use hostname, FQDN, IPv4- or IPv6-Address") - else - local ipv6 = usev6:formvalue(section) or "0" - local force = fipv:formvalue(section) or "0" - 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") - elseif ret == 3 then return nil, err_tab_adv(self) .. translate("nc (netcat) can not connect") - elseif ret == 4 then return nil, err_tab_adv(self) .. translate("Forced IP Version don't matched") - else return nil, err_tab_adv(self) .. translate("unspecific error") - end - end - end - function dns.parse(self, section, novld) - DDNS.value_parse(self, section, novld) - end -end - --- IPv4 + IPv6 - force_dnstcp -- ############################################## -if DDNS.has_bindhost or ( ( m:get(section, "force_dnstcp") or "0" ) ~= "0" ) then - tcp = ns:taboption("advanced", Flag, "force_dnstcp", - translate("Force TCP on DNS") ) - tcp.orientation = "horizontal" - function tcp.cfgvalue(self, section) - local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_bindhost and value ~= "0" then - self.description = bold_on .. font_red .. - translate("DNS requests via TCP not supported") .. font_off .. "
" .. - translate("please disable") .. " !" .. bold_off - else - self.description = translate("OPTIONAL: Force the use of TCP instead of default UDP on DNS requests.") - end - return value - end - function tcp.validate(self, value) - if (value == "1" and DDNS.has_bindhost ) or value == "0" then - return value - end - return nil, err_tab_adv(self) .. translate("DNS requests via TCP not supported") - end -end - --- IPv4 + IPv6 - proxy -- ##################################################### --- optional Proxy to use for http/https requests [user:password@]proxyhost[:port] -if DDNS.has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then - pxy = ns:taboption("advanced", Value, "proxy", - translate("PROXY-Server") ) - pxy.placeholder="user:password@myproxy.lan:8080" - function pxy.cfgvalue(self, section) - local value = AbstractValue.cfgvalue(self, section) - if not DDNS.has_proxy and value ~= "" then - self.description = bold_on .. font_red .. - translate("PROXY-Server not supported") .. font_off .. "
" .. - translate("please remove entry") .. "!" .. bold_off - else - self.description = translate("OPTIONAL: Proxy-Server for detection and updates.") .. "
" .. - translate("Format") .. ": " .. bold_on .. "[user:password@]proxyhost:port" .. bold_off .. "
" .. - translate("IPv6 address must be given in square brackets") .. ": " .. - bold_on .. " [2001:db8::1]:8080" .. bold_off - end - return value - end - function pxy.validate(self, value) - -- if .datatype is set, then it is checked before calling this function - if not value or (#value == 0) then - return "" -- ignore on empty - elseif DDNS.has_proxy then - local ipv6 = usev6:formvalue(section) or "0" - local force = fipv:formvalue(section) or "0" - 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") - elseif ret == 3 then return nil, err_tab_adv(self) .. translate("nc (netcat) can not connect") - elseif ret == 4 then return nil, err_tab_adv(self) .. translate("Forced IP Version don't matched") - elseif ret == 5 then return nil, err_tab_adv(self) .. translate("proxy port missing") - else return nil, err_tab_adv(self) .. translate("unspecific error") - end - else - return nil, err_tab_adv(self) .. translate("PROXY-Server not supported") - end - end - function pxy.parse(self, section, novld) - DDNS.value_parse(self, section, novld) - end -end - --- use_syslog -- ############################################################## -slog = ns:taboption("advanced", ListValue, "use_syslog", - translate("Log to syslog"), - translate("Writes log messages to syslog. Critical Errors will always be written to syslog.") ) -slog.default = "2" -slog:value("0", translate("No logging")) -slog:value("1", translate("Info")) -slog:value("2", translate("Notice")) -slog:value("3", translate("Warning")) -slog:value("4", translate("Error")) -function slog.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- use_logfile -- ############################################################# -logf = ns:taboption("advanced", Flag, "use_logfile", - translate("Log to file"), - translate("Writes detailed messages to log file. File will be truncated automatically.") .. "
" .. - translate("File") .. [[: "]] .. logdir .. [[/]] .. section .. [[.log"]] ) -logf.orientation = "horizontal" -logf.default = "1" -- if not defined write to log by default - --- TAB: Timer #################################################################################### --- check_interval -- ########################################################## -ci = ns:taboption("timer", Value, "check_interval", - translate("Check Interval") ) -ci.template = "ddns/detail_value" -ci.default = "10" -function ci.validate(self, value) - if not DTYP.uinteger(value) - or tonumber(value) < 1 then - return nil, err_tab_timer(self) .. translate("minimum value 5 minutes == 300 seconds") - end - - local secs = DDNS.calc_seconds(value, cu:formvalue(section)) - if secs >= 300 then - return value - else - return nil, err_tab_timer(self) .. translate("minimum value 5 minutes == 300 seconds") - end -end -function ci.write(self, section, value) - -- remove when default - local secs = DDNS.calc_seconds(value, cu:formvalue(section)) - if secs ~= 600 then --default 10 minutes - return self.map:set(section, self.option, value) - else - self.map:del(section, "check_unit") - return self.map:del(section, self.option) - end -end -function ci.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- check_unit -- ############################################################## -cu = ns:taboption("timer", ListValue, "check_unit", "not displayed, but needed otherwise error", - translate("Interval to check for changed IP" .. "
" .. - "Values below 5 minutes == 300 seconds are not supported") ) -cu.template = "ddns/detail_lvalue" -cu.default = "minutes" -cu:value("seconds", translate("seconds")) -cu:value("minutes", translate("minutes")) -cu:value("hours", translate("hours")) ---cu:value("days", translate("days")) -function cu.write(self, section, value) - -- remove when default - local secs = DDNS.calc_seconds(ci:formvalue(section), value) - if secs ~= 600 then --default 10 minutes - return self.map:set(section, self.option, value) - else - return true - end -end -function cu.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- force_interval (modified) -- ############################################### -fi = ns:taboption("timer", Value, "force_interval", - translate("Force Interval") ) -fi.template = "ddns/detail_value" -fi.default = "72" -- see dynamic_dns_updater.sh script ---fi.rmempty = false -- validate ourselves for translatable error messages -function fi.validate(self, value) - if not DTYP.uinteger(value) - or tonumber(value) < 0 then - return nil, err_tab_timer(self) .. translate("minimum value '0'") - end - - local force_s = DDNS.calc_seconds(value, fu:formvalue(section)) - if force_s == 0 then - return value - end - - local ci_value = ci:formvalue(section) - if not DTYP.uinteger(ci_value) then - return "" -- ignore because error in check_interval above - end - - local check_s = DDNS.calc_seconds(ci_value, cu:formvalue(section)) - if force_s >= check_s then - return value - end - - return nil, err_tab_timer(self) .. translate("must be greater or equal 'Check Interval'") -end -function fi.write(self, section, value) - -- simulate rmempty=true remove default - local secs = DDNS.calc_seconds(value, fu:formvalue(section)) - if secs ~= 259200 then --default 72 hours == 3 days - return self.map:set(section, self.option, value) - else - self.map:del(section, "force_unit") - return self.map:del(section, self.option) - end -end -function fi.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- force_unit -- ############################################################## -fu = ns:taboption("timer", ListValue, "force_unit", "not displayed, but needed otherwise error", - translate("Interval to force updates send to DDNS Provider" .. "
" .. - "Setting this parameter to 0 will force the script to only run once" .. "
" .. - "Values lower 'Check Interval' except '0' are not supported") ) -fu.template = "ddns/detail_lvalue" -fu.default = "hours" ---fu.rmempty = false -- want to control write process ---fu:value("seconds", translate("seconds")) -fu:value("minutes", translate("minutes")) -fu:value("hours", translate("hours")) -fu:value("days", translate("days")) -function fu.write(self, section, value) - -- simulate rmempty=true remove default - local secs = DDNS.calc_seconds(fi:formvalue(section), value) - if secs ~= 259200 and secs ~= 0 then --default 72 hours == 3 days - return self.map:set(section, self.option, value) - else - return true - end -end -function fu.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- retry_count -- ############################################################# -rc = ns:taboption("timer", Value, "retry_count") -rc.title = translate("Error Retry Counter") -rc.description = translate("On Error the script will stop execution after given number of retrys") - .. "
" - .. translate("The default setting of '0' will retry infinite.") -rc.default = "0" -function rc.validate(self, value) - if not DTYP.uinteger(value) then - return nil, err_tab_timer(self) .. translate("minimum value '0'") - else - return value - end -end -function rc.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- retry_interval -- ########################################################## -ri = ns:taboption("timer", Value, "retry_interval", - translate("Error Retry Interval") ) -ri.template = "ddns/detail_value" -ri.default = "60" -function ri.validate(self, value) - if not DTYP.uinteger(value) - or tonumber(value) < 1 then - return nil, err_tab_timer(self) .. translate("minimum value '1'") - else - return value - end -end -function ri.write(self, section, value) - -- simulate rmempty=true remove default - local secs = DDNS.calc_seconds(value, ru:formvalue(section)) - if secs ~= 60 then --default 60seconds - return self.map:set(section, self.option, value) - else - self.map:del(section, "retry_unit") - return self.map:del(section, self.option) - end -end -function ri.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- retry_unit -- ############################################################## -ru = ns:taboption("timer", ListValue, "retry_unit", "not displayed, but needed otherwise error", - translate("On Error the script will retry the failed action after given time") ) -ru.template = "ddns/detail_lvalue" -ru.default = "seconds" ---ru.rmempty = false -- want to control write process -ru:value("seconds", translate("seconds")) -ru:value("minutes", translate("minutes")) ---ru:value("hours", translate("hours")) ---ru:value("days", translate("days")) -function ru.write(self, section, value) - -- simulate rmempty=true remove default - local secs = DDNS.calc_seconds(ri:formvalue(section), value) - if secs ~= 60 then --default 60seconds - return self.map:set(section, self.option, value) - else - return true -- will be deleted by retry_interval - end -end -function ru.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- TAB: LogView ################################################################################## -lv = ns:taboption("logview", DummyValue, "_logview") -lv.template = "ddns/detail_logview" -lv.inputtitle = translate("Read / Reread log file") -lv.rows = 50 -function lv.cfgvalue(self, section) - local lfile=logdir .. "/" .. section .. ".log" - if NXFS.access(lfile) then - return lfile .. "\n" .. translate("Please press [Read] button") - end - return lfile .. "\n" .. translate("File not found or empty") -end - -return m diff --git a/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua b/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua deleted file mode 100644 index 9dc0857509..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua +++ /dev/null @@ -1,121 +0,0 @@ --- Copyright 2014 Christian Schoenebeck --- Licensed to the public under the Apache License 2.0. - -local NX = require "nixio" -local NXFS = require "nixio.fs" -local DISP = require "luci.dispatcher" -local SYS = require "luci.sys" -local CTRL = require "luci.controller.ddns" -- this application's controller -local DDNS = require "luci.tools.ddns" -- ddns multiused functions - --- cbi-map definition -- ####################################################### -local m = Map("ddns") -m.title = CTRL.app_title_back() -m.description = CTRL.app_description() -m.redirect = DISP.build_url("admin", "services", "ddns") - -function m.commit_handler(self) - if self.changed then -- changes ? - local command = CTRL.luci_helper .. " -- reload" - os.execute(command) -- reload configuration - end -end - --- cbi-section definition -- ################################################### -local ns = m:section( NamedSection, "global", "ddns", - translate("Global Settings"), - translate("Configure here the details for all Dynamic DNS services including this LuCI application.") - .. [[
]] - .. translate("It is NOT recommended for casual users to change settings on this page.") - .. [[
]] - .. [[]] - .. translate("For detailed information about parameter settings look here.") - .. [[]] - ) - --- section might not exist -function ns.cfgvalue(self, section) - if not self.map:get(section) then - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - --- 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") .. ":" - .. [[
IPv4: ]] - .. "0/8, 10/8, 100.64/10, 127/8, 169.254/16, 172.16/12, 192.168/16" - .. [[
IPv6: ]] - .. "::/32, f000::/4" -ali.default = "0" - --- ddns_dateformat -- ######################################################### -local df = ns:option(Value, "ddns_dateformat") -df.title = translate("Date format") -df.description = [[]] - .. translate("For supported codes look here") - .. [[]] -df.template = "ddns/global_value" -df.default = "%F %R" -df.date_string = "" -function df.cfgvalue(self, section) - local value = AbstractValue.cfgvalue(self, section) or self.default - local epoch = os.time() - self.date_string = DDNS.epoch2date(epoch, value) - return value -end -function df.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- 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" --- no need to validate. if empty default is used everything else created by dns-scripts -function rd.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- 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" --- no need to validate. if empty default is used everything else created by dns-scripts -function ld.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- 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" -function ll.validate(self, value) - local n = tonumber(value) - if not n or math.floor(n) ~= n or n < 1 then - return nil, self.title .. ": " .. translate("minimum value '1'") - end - return value -end -function ll.parse(self, section, novld) - DDNS.value_parse(self, section, novld) -end - --- use_curl -- ################################################################ -if (SYS.call([[ grep -i "\+ssl" /usr/bin/wget >/dev/null 2>&1 ]]) == 0) -and NXFS.access("/usr/bin/curl") then - local pc = ns:option(Flag, "use_curl") - pc.title = translate("Use cURL") - pc.description = translate("If both cURL and GNU Wget are installed, Wget is used by default.") - .. [[
]] - .. translate("To use cURL activate this option.") - pc.orientation = "horizontal" - pc.default = "0" -end - -return m diff --git a/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua b/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua deleted file mode 100644 index df39a3a7e5..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua +++ /dev/null @@ -1,166 +0,0 @@ --- Copyright 2014-2016 Christian Schoenebeck --- Licensed to the public under the Apache License 2.0. - -local DISP = require "luci.dispatcher" -local SYS = require "luci.sys" -local CTRL = require "luci.controller.ddns" -- this application's controller -local DDNS = require "luci.tools.ddns" -- ddns multiused functions - --- html constants -font_red = [[]] -font_off = [[]] -bold_on = [[]] -bold_off = [[]] - --- cbi-map definition -- ####################################################### -m = Map("ddns") -m.title = CTRL.app_title_back() -m.description = CTRL.app_description() -m.redirect = DISP.build_url("admin", "services", "ddns") - --- SimpleSection definition -- ################################################# --- show Hints to optimize installation and script usage -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 -if not CTRL.service_ok() then - local so = s:option(DummyValue, "_update_needed") - so.titleref = DISP.build_url("admin", "system", "packages") - so.rawhtml = true - so.title = font_red .. bold_on .. - translate("Software update required") .. bold_off .. font_off - so.value = translate("The currently installed 'ddns-scripts' package did not support all available settings.") .. - "
" .. - translate("Please update to the current version!") -end - --- DDNS Service disabled -if not SYS.init.enabled("ddns") then - local se = s:option(DummyValue, "_not_enabled") - se.titleref = DISP.build_url("admin", "system", "startup") - se.rawhtml = true - se.title = bold_on .. - translate("DDNS Autostart disabled") .. bold_off - se.value = translate("Currently DDNS updates are not started at boot or on interface events." .. "
" .. - "This is the default if you run DDNS scripts by yourself (i.e. via cron with force_interval set to '0')" ) -end - --- No IPv6 support -if not DDNS.has_ipv6 then - local v6 = s:option(DummyValue, "_no_ipv6") - v6.titleref = 'http://www.openwrt.org" target="_blank' - v6.rawhtml = true - v6.title = bold_on .. - translate("IPv6 not supported") .. bold_off - v6.value = translate("IPv6 is currently not (fully) supported by this system" .. "
" .. - "Please follow the instructions on OpenWrt's homepage to enable IPv6 support" .. "
" .. - "or update your system to the latest OpenWrt Release") -end - --- No HTTPS support -if not DDNS.has_ssl then - local sl = s:option(DummyValue, "_no_https") - sl.titleref = DISP.build_url("admin", "system", "packages") - sl.rawhtml = true - sl.title = bold_on .. - translate("HTTPS not supported") .. bold_off - sl.value = translate("Neither GNU Wget with SSL nor cURL installed to support secure updates via HTTPS protocol.") .. - "
- " .. - translate("You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-*ssl' package.") .. - "
- " .. - translate("In some versions cURL/libcurl in OpenWrt is compiled without proxy support.") -end - --- No bind_network -if not DDNS.has_bindnet then - local bn = s:option(DummyValue, "_no_bind_network") - bn.titleref = DISP.build_url("admin", "system", "packages") - bn.rawhtml = true - bn.title = bold_on .. - translate("Binding to a specific network not supported") .. bold_off - bn.value = translate("Neither GNU Wget with SSL nor cURL installed to select a network to use for communication.") .. - "
- " .. - translate("You should install 'wget' or 'curl' package.") .. - "
- " .. - translate("GNU Wget will use the IP of given network, cURL will use the physical interface.") .. - "
- " .. - translate("In some versions cURL/libcurl in OpenWrt is compiled without proxy support.") -end - --- currently only cURL possibly without proxy support -if not DDNS.has_proxy then - local px = s:option(DummyValue, "_no_proxy") - px.titleref = DISP.build_url("admin", "system", "packages") - px.rawhtml = true - px.title = bold_on .. - translate("cURL without Proxy Support") .. bold_off - px.value = translate("cURL is installed, but libcurl was compiled without proxy support.") .. - "
- " .. - translate("You should install 'wget' or 'uclient-fetch' package or replace libcurl.") .. - "
- " .. - translate("In some versions cURL/libcurl in OpenWrt is compiled without proxy support.") -end - --- "Force IP Version not supported" -if not DDNS.has_forceip then - local fi = s:option(DummyValue, "_no_force_ip") - fi.titleref = DISP.build_url("admin", "system", "packages") - fi.rawhtml = true - fi.title = bold_on .. - translate("Force IP Version not supported") .. bold_off - local value = translate("BusyBox's nslookup and Wget do not support to specify " .. - "the IP version to use for communication with DDNS Provider!") - if not (DDNS.has_wgetssl or DDNS.has_curl or DDNS.has_fetch) then - value = value .. "
- " .. - translate("You should install 'wget' or 'curl' or 'uclient-fetch' package.") - end - if not DDNS.has_bindhost then - value = value .. "
- " .. - translate("You should install 'bind-host' or 'knot-host' or 'drill' package for DNS requests.") - end - fi.value = value -end - --- "DNS requests via TCP not supported" -if not DDNS.has_bindhost then - local dt = s:option(DummyValue, "_no_dnstcp") - dt.titleref = DISP.build_url("admin", "system", "packages") - dt.rawhtml = true - dt.title = bold_on .. - translate("DNS requests via TCP not supported") .. bold_off - dt.value = translate("BusyBox's nslookup and hostip do not support to specify to use TCP " .. - "instead of default UDP when requesting DNS server!") .. - "
- " .. - translate("You should install 'bind-host' or 'knot-host' or 'drill' package for DNS requests.") -end - --- nslookup compiled with musl produce problems when using -if not DDNS.has_dnsserver then - local ds = s:option(DummyValue, "_no_dnsserver") - ds.titleref = DISP.build_url("admin", "system", "packages") - ds.rawhtml = true - ds.title = bold_on .. - translate("Using specific DNS Server not supported") .. bold_off - ds.value = translate("BusyBox's nslookup in the current compiled version " .. - "does not handle given DNS Servers correctly!") .. - "
- " .. - translate("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.") -end - --- certificates installed -if DDNS.has_ssl and not DDNS.has_cacerts then - local ca = s:option(DummyValue, "_no_certs") - ca.titleref = DISP.build_url("admin", "system", "packages") - ca.rawhtml = true - ca.title = bold_on .. - translate("No certificates found") .. bold_off - ca.value = translate("If using secure communication you should verify server certificates!") .. - "
- " .. - translate("Install 'ca-certificates' package or needed certificates " .. - "by hand into /etc/ssl/certs default directory") -end - -return m diff --git a/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua b/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua deleted file mode 100644 index 6ba3ea0dd8..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua +++ /dev/null @@ -1,243 +0,0 @@ --- Copyright 2014-2016 Christian Schoenebeck --- Licensed to the public under the Apache License 2.0. - -local NXFS = require "nixio.fs" -local DISP = require "luci.dispatcher" -local HTTP = require "luci.http" -local SYS = require "luci.sys" -local CTRL = require "luci.controller.ddns" -- this application's controller -local DDNS = require "luci.tools.ddns" -- ddns multiused functions - -local show_hints = not (DDNS.has_ipv6 -- IPv6 support - and DDNS.has_ssl -- HTTPS support - and DDNS.has_proxy -- Proxy support - and DDNS.has_bindhost -- DNS TCP support - and DDNS.has_forceip -- Force IP version - and DDNS.has_dnsserver -- DNS server support - and DDNS.has_bindnet -- Bind to network/interface - and DDNS.has_cacerts -- certificates installed at /etc/ssl/certs - ) -local not_enabled = not SYS.init.enabled("ddns") -local need_update = not CTRL.service_ok() - --- html constants -font_red = [[]] -font_off = [[]] -bold_on = [[]] -bold_off = [[]] - --- cbi-map definition -- ####################################################### -m = Map("ddns") -m.title = CTRL.app_title_main() -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 - command = command .. " -- restart" - os.execute(command) - else -- ddns service disabled, send SIGHUP to running - command = command .. " -- reload" - os.execute(command) - end - end -end - --- SimpleSection definition -- ################################################## --- with all the JavaScripts we need for "a good Show" -a = m:section( SimpleSection ) -a.template = "ddns/overview_status" - --- SimpleSection definition -- ################################################# --- show Hints to optimize installation and script usage -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 - if need_update then - local dv = s:option(DummyValue, "_update_needed") - dv.titleref = DISP.build_url("admin", "system", "packages") - dv.rawhtml = true - dv.title = font_red .. bold_on .. - translate("Software update required") .. bold_off .. font_off - dv.value = translate("The currently installed 'ddns-scripts' package did not support all available settings.") .. - "
" .. - translate("Please update to the current version!") - end - - -- DDNS Service disabled - if not_enabled then - local dv = s:option(DummyValue, "_not_enabled") - dv.titleref = DISP.build_url("admin", "system", "startup") - dv.rawhtml = true - dv.title = bold_on .. - translate("DDNS Autostart disabled") .. bold_off - dv.value = translate("Currently DDNS updates are not started at boot or on interface events." .. "
" .. - "You can start/stop each configuration here. It will run until next reboot.") - end - - -- Show more hints on a separate page - if show_hints then - local dv = s:option(DummyValue, "_separate") - dv.titleref = DISP.build_url("admin", "services", "ddns", "hints") - dv.rawhtml = true - dv.title = bold_on .. - translate("Show more") .. bold_off - dv.value = translate("Follow this link" .. "
" .. - "You will find more hints to optimize your system to run DDNS scripts with all options") - end -end - --- TableSection definition -- ################################################## -ts = m:section( TypedSection, "service", - translate("Overview"), - translate("Below is a list of configured DDNS configurations and their current state.") - .. "
" - .. translate("If you want to send updates for IPv4 and IPv6 you need to define two separate Configurations " - .. "i.e. 'myddns_ipv4' and 'myddns_ipv6'") - .. "
" - .. [[]] - .. translate("To change global settings click here") .. [[]] ) -ts.sectionhead = translate("Configuration") -ts.template = "cbi/tblsection" -ts.addremove = true -ts.extedit = DISP.build_url("admin", "services", "ddns", "detail", "%s") -function ts.create(self, name) - AbstractSection.create(self, name) - HTTP.redirect( self.extedit:format(name) ) -end - --- Lookup_Host and registered IP -- ################################################# -dom = ts:option(DummyValue, "_lookupIP", - translate("Lookup Hostname") .. "
" .. translate("Registered IP") ) -dom.template = "ddns/overview_doubleline" -function dom.set_one(self, section) - local lookup = self.map:get(section, "lookup_host") or "" - if lookup ~= "" then - return lookup - else - return [[]] .. translate("config error") .. [[]] - end -end -function dom.set_two(self, section) - 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 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 -end - --- enabled -ena = ts:option( Flag, "enabled", - translate("Enabled")) -ena.template = "ddns/overview_enabled" -ena.rmempty = false - --- show PID and next update -upd = ts:option( DummyValue, "_update", - translate("Last Update") .. "
" .. translate("Next Update")) -upd.template = "ddns/overview_doubleline" -function upd.set_one(self, section) -- fill Last Update - -- get/validate last update - local uptime = SYS.uptime() - local lasttime = DDNS.get_lastupd(section) - if lasttime > uptime then -- /var might not be linked to /tmp and cleared on reboot - lasttime = 0 - end - - -- no last update happen - if lasttime == 0 then - return translate("never") - - -- we read last update - else - -- calc last update - -- os.epoch - sys.uptime + lastupdate(uptime) - local epoch = os.time() - uptime + lasttime - -- use linux date to convert epoch - return DDNS.epoch2date(epoch) - end -end -function upd.set_two(self, section) -- fill Next Update - -- get enabled state - local enabled = tonumber(self.map:get(section, "enabled") or 0) - local datenext = translate("unknown error") -- formatted date of next update - - -- get force seconds - local force_interval = tonumber(self.map:get(section, "force_interval") or 72) - local force_unit = self.map:get(section, "force_unit") or "hours" - local force_seconds = DDNS.calc_seconds(force_interval, force_unit) - - -- get last update and get/validate PID - local uptime = SYS.uptime() - local lasttime = DDNS.get_lastupd(section) - if lasttime > uptime then -- /var might not be linked to /tmp and cleared on reboot - lasttime = 0 - end - local pid = DDNS.get_pid(section) - - -- calc next update - if lasttime > 0 then - local epoch = os.time() - uptime + lasttime + force_seconds - -- use linux date to convert epoch - datelast = DDNS.epoch2date(epoch) - end - - -- process running but update needs to happen - if pid > 0 and ( lasttime + force_seconds - uptime ) < 0 then - datenext = translate("Verify") - - -- run once - elseif force_seconds == 0 then - datenext = translate("Run once") - - -- no process running and NOT enabled - elseif pid == 0 and enabled == 0 then - datenext = translate("Disabled") - - -- no process running and NOT - elseif pid == 0 and enabled ~= 0 then - datenext = translate("Stopped") - end - - return datenext -end - --- start/stop button -btn = ts:option( Button, "_startstop", - translate("Process ID") .. "
" .. translate("Start / Stop") ) -btn.template = "ddns/overview_startstop" -function btn.cfgvalue(self, section) - local pid = DDNS.get_pid(section) - if pid > 0 then - btn.inputtitle = "PID: " .. pid - btn.inputstyle = "reset" - btn.disabled = false - elseif (self.map:get(section, "enabled") or "0") ~= "0" then - btn.inputtitle = translate("Start") - btn.inputstyle = "apply" - btn.disabled = false - else - btn.inputtitle = "----------" - btn.inputstyle = "button" - btn.disabled = true - end - return true -end - -return m diff --git a/package/luci/applications/luci-app-ddns/luasrc/tools/ddns.lua b/package/luci/applications/luci-app-ddns/luasrc/tools/ddns.lua deleted file mode 100755 index 209d9c3a41..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/tools/ddns.lua +++ /dev/null @@ -1,315 +0,0 @@ --- Copyright 2014-2016 Christian Schoenebeck --- Licensed to the public under the Apache License 2.0. - -module("luci.tools.ddns", package.seeall) - -local NX = require "nixio" -local NXFS = require "nixio.fs" -local OPKG = require "luci.model.ipkg" -local UCI = require "luci.model.uci" -local SYS = require "luci.sys" -local UTIL = require "luci.util" - -local function _check_certs() - local _, v = NXFS.glob("/etc/ssl/certs/*.crt") - if ( v == 0 ) then _, v = NXFS.glob("/etc/ssl/certs/*.pem") end - return (v > 0) -end - -has_wgetssl = (SYS.call( [[which wget-ssl >/dev/null 2>&1]] ) == 0) -- and true or nil -has_curl = (SYS.call( [[which curl >/dev/null 2>&1]] ) == 0) -has_curlssl = (SYS.call( [[$(which curl) -V 2>&1 | grep "Protocols:" | grep -qF "https"]] ) ~= 0) -has_curlpxy = (SYS.call( [[grep -i "all_proxy" /usr/lib/libcurl.so* >/dev/null 2>&1]] ) == 0) -has_fetch = (SYS.call( [[which uclient-fetch >/dev/null 2>&1]] ) == 0) -has_fetchssl = NXFS.access("/lib/libustream-ssl.so") -has_bbwget = (SYS.call( [[$(which wget) -V 2>&1 | grep -iqF "busybox"]] ) == 0) -has_bindhost = (SYS.call( [[which host >/dev/null 2>&1]] ) == 0) - or (SYS.call( [[which khost >/dev/null 2>&1]] ) == 0) - or (SYS.call( [[which drill >/dev/null 2>&1]] ) == 0) -has_hostip = (SYS.call( [[which hostip >/dev/null 2>&1]] ) == 0) -has_nslookup = (SYS.call( [[$(which nslookup) localhost 2>&1 | grep -qF "(null)"]] ) ~= 0) -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) -- 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() - --- function to calculate seconds from given interval and unit -function calc_seconds(interval, unit) - if not tonumber(interval) then - return nil - elseif unit == "days" then - return (tonumber(interval) * 86400) -- 60 sec * 60 min * 24 h - elseif unit == "hours" then - return (tonumber(interval) * 3600) -- 60 sec * 60 min - elseif unit == "minutes" then - return (tonumber(interval) * 60) -- 60 sec - elseif unit == "seconds" then - return tonumber(interval) - else - return nil - end -end - --- convert epoch date to given format -function epoch2date(epoch, format) - if not format or #format < 2 then - local uci = UCI.cursor() - format = uci:get("ddns", "global", "ddns_dateformat") or "%F %R" - uci:unload("ddns") - end - format = format:gsub("%%n", "
") -- replace newline - format = format:gsub("%%t", " ") -- replace tab - return os.date(format, epoch) -end - --- read lastupdate from [section].update file -function get_lastupd(section) - 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 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 - uci:unload("ddns") - return pid -end - --- replacement of build-in read of UCI option --- modified AbstractValue.cfgvalue(self, section) from cbi.lua --- needed to read from other option then current value definition -function read_value(self, section, option) - local value - if self.tag_error[section] then - value = self:formvalue(section) - else - value = self.map:get(section, option) - end - - if not value then - return nil - elseif not self.cast or self.cast == type(value) then - return value - elseif self.cast == "string" then - if type(value) == "table" then - return value[1] - end - elseif self.cast == "table" then - return { value } - end -end - --- replacement of build-in parse of "Value" --- modified AbstractValue.parse(self, section, novld) from cbi.lua --- validate is called if rmempty/optional true or false --- before write check if forcewrite, value eq default, and more -function value_parse(self, section, novld) - local fvalue = self:formvalue(section) - local fexist = ( fvalue and (#fvalue > 0) ) -- not "nil" and "not empty" - local cvalue = self:cfgvalue(section) - local rm_opt = ( self.rmempty or self.optional ) - local eq_cfg -- flag: equal cfgvalue - - -- If favlue and cvalue are both tables and have the same content - -- make them identical - if type(fvalue) == "table" and type(cvalue) == "table" then - eq_cfg = (#fvalue == #cvalue) - if eq_cfg then - for i=1, #fvalue do - if cvalue[i] ~= fvalue[i] then - eq_cfg = false - end - end - end - if eq_cfg then - fvalue = cvalue - end - end - - -- removed parameter "section" from function call because used/accepted nowhere - -- also removed call to function "transfer" - local vvalue, errtxt = self:validate(fvalue) - - -- error handling; validate return "nil" - if not vvalue then - if novld then -- and "novld" set - return -- then exit without raising an error - end - - if fexist then -- and there is a formvalue - self:add_error(section, "invalid", errtxt or self.title .. ": invalid") - return -- so data are invalid - elseif not rm_opt then -- and empty formvalue but NOT (rmempty or optional) set - self:add_error(section, "missing", errtxt or self.title .. ": missing") - return -- so data is missing - elseif errtxt then - self:add_error(section, "invalid", errtxt) - return - end --- error ("\n option: " .. self.option .. --- "\n fvalue: " .. tostring(fvalue) .. --- "\n fexist: " .. tostring(fexist) .. --- "\n cvalue: " .. tostring(cvalue) .. --- "\n vvalue: " .. tostring(vvalue) .. --- "\n vexist: " .. tostring(vexist) .. --- "\n rm_opt: " .. tostring(rm_opt) .. --- "\n eq_cfg: " .. tostring(eq_cfg) .. --- "\n eq_def: " .. tostring(eq_def) .. --- "\n novld : " .. tostring(novld) .. --- "\n errtxt: " .. tostring(errtxt) ) - end - - -- lets continue with value returned from validate - eq_cfg = ( vvalue == cvalue ) -- update equal_config flag - local vexist = ( vvalue and (#vvalue > 0) ) and true or false -- not "nil" and "not empty" - local eq_def = ( vvalue == self.default ) -- equal_default flag - - -- (rmempty or optional) and (no data or equal_default) - if rm_opt and (not vexist or eq_def) then - if self:remove(section) then -- remove data from UCI - self.section.changed = true -- and push events - end - return - end - - -- not forcewrite and no changes, so nothing to write - if not self.forcewrite and eq_cfg then - return - end - - -- we should have a valid value here - assert (vvalue, "\n option: " .. self.option .. - "\n fvalue: " .. tostring(fvalue) .. - "\n fexist: " .. tostring(fexist) .. - "\n cvalue: " .. tostring(cvalue) .. - "\n vvalue: " .. tostring(vvalue) .. - "\n vexist: " .. tostring(vexist) .. - "\n rm_opt: " .. tostring(rm_opt) .. - "\n eq_cfg: " .. tostring(eq_cfg) .. - "\n eq_def: " .. tostring(eq_def) .. - "\n errtxt: " .. tostring(errtxt) ) - - -- write data to UCI; raise event only on changes - if self:write(section, vvalue) and not eq_cfg then - self.section.changed = true - end -end - ------------------------------------------------------------------------------ --- copied from https://svn.nmap.org/nmap/nselib/url.lua --- @author Diego Nehab --- @author Eddie Bell ---[[ - URI parsing, composition and relative URL resolution - LuaSocket toolkit. - Author: Diego Nehab - RCS ID: $Id: url.lua,v 1.37 2005/11/22 08:33:29 diego Exp $ - parse_query and build_query added For nmap (Eddie Bell ) -]]-- ---- --- Parses a URL and returns a table with all its parts according to RFC 2396. --- --- The following grammar describes the names given to the URL parts. --- --- ::= :///;?# --- ::= @: --- ::= [:] --- :: = {/} --- --- --- The leading / in / is considered part of --- . --- @param url URL of request. --- @param default Table with default values for each field. --- @return A table with the following fields, where RFC naming conventions have --- been preserved: --- scheme, authority, userinfo, --- user, password, host, --- port, path, params, --- query, and fragment. ------------------------------------------------------------------------------ -function parse_url(url) --, default) - -- initialize default parameters - local parsed = {} --- for i,v in base.pairs(default or parsed) do --- parsed[i] = v --- end - - -- remove whitespace --- url = string.gsub(url, "%s", "") - -- get fragment - url = string.gsub(url, "#(.*)$", - function(f) - parsed.fragment = f - return "" - end) - -- get scheme. Lower-case according to RFC 3986 section 3.1. - url = string.gsub(url, "^([%w][%w%+%-%.]*)%:", - function(s) - parsed.scheme = string.lower(s); - return "" - end) - -- get authority - url = string.gsub(url, "^//([^/]*)", - function(n) - parsed.authority = n - return "" - end) - -- get query stringing - url = string.gsub(url, "%?(.*)", - function(q) - parsed.query = q - return "" - end) - -- get params - url = string.gsub(url, "%;(.*)", - function(p) - parsed.params = p - return "" - end) - -- path is whatever was left - parsed.path = url - - local authority = parsed.authority - if not authority then - return parsed - end - authority = string.gsub(authority,"^([^@]*)@", - function(u) - parsed.userinfo = u; - return "" - end) - authority = string.gsub(authority, ":([0-9]*)$", - function(p) - if p ~= "" then - parsed.port = p - end; - return "" - end) - if authority ~= "" then - parsed.host = authority - end - - local userinfo = parsed.userinfo - if not userinfo then - return parsed - end - userinfo = string.gsub(userinfo, ":([^:]*)$", - function(p) - parsed.password = p; - return "" - end) - parsed.user = userinfo - return parsed -end diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/admin_status/index/ddns.htm b/package/luci/applications/luci-app-ddns/luasrc/view/admin_status/index/ddns.htm deleted file mode 100644 index 9791065083..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/admin_status/index/ddns.htm +++ /dev/null @@ -1 +0,0 @@ -<%+ddns/system_status%> diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_logview.htm b/package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_logview.htm deleted file mode 100644 index fd1d5be268..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_logview.htm +++ /dev/null @@ -1,56 +0,0 @@ - - - - -<%+cbi/valueheader%> - -
- -<% --- one button on top, one at the buttom -%> - /> - -

- -<% --- set a readable style taken from openwrt theme for textarea#syslog --- in openwrt theme there are problems with a width of 100 so we check for theme and set to lower value -%> - -

- -<% --- one button on top, one at the buttom -%> - /> - -<%+cbi/valuefooter%> - diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_lvalue.htm b/package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_lvalue.htm deleted file mode 100644 index b69d780ea9..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_lvalue.htm +++ /dev/null @@ -1,23 +0,0 @@ - - - -  -<% if self.widget == "select" then %> - -<% elseif self.widget == "radio" then - local c = 0 - for i, key in pairs(self.keylist) do - c = c + 1 -%> - /> - > - ><%=self.vallist[i]%> -<% if c == self.size then c = 0 %><% if self.orientation == "horizontal" then %> <% else %>
<% end %> -<% end end %> -<% end %> -<%+cbi/valuefooter%> - diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_value.htm b/package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_value.htm deleted file mode 100644 index cbe76abc6e..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/detail_value.htm +++ /dev/null @@ -1,9 +0,0 @@ - - -<%+cbi/valueheader%> - /> - - diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm b/package/luci/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm deleted file mode 100644 index 23ec059170..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm +++ /dev/null @@ -1,34 +0,0 @@ - - -<%+cbi/valueheader%> - - - -/> -
-
- <%:help%><%=self.description%> -
- <%:Current setting%>: <%=self.date_string%> -
- - - diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_doubleline.htm b/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_doubleline.htm deleted file mode 100644 index 1d1b4be019..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_doubleline.htm +++ /dev/null @@ -1,10 +0,0 @@ - - -<%+cbi/valueheader%> - -<%=self:set_one(section)%> -
-<%=self:set_two(section)%> - -<%+cbi/valuefooter%> - diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_enabled.htm b/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_enabled.htm deleted file mode 100644 index 2efc125fcc..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_enabled.htm +++ /dev/null @@ -1,16 +0,0 @@ - - -<%+cbi/valueheader%> - - /> - - /> -> - -<%+cbi/valuefooter%> - diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_startstop.htm b/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_startstop.htm deleted file mode 100644 index 327028cbea..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_startstop.htm +++ /dev/null @@ -1,17 +0,0 @@ - - -<%+cbi/valueheader%> - -<% if self:cfgvalue(section) ~= false then --- We need to garantie that function cfgvalue run first to set missing parameters -%> - - - " style="font-size: 100%;" type="button" onclick="onclick_startstop(this.id)" - <%= - attr("name", section) .. attr("id", cbid) .. attr("value", self.inputtitle) .. ifattr(self.disabled, "disabled") - %> /> -<% end %> - -<%+cbi/valuefooter%> - diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm b/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm deleted file mode 100644 index b409ed0728..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - diff --git a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm b/package/luci/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm deleted file mode 100644 index 5bdcb03e73..0000000000 --- a/package/luci/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm +++ /dev/null @@ -1,144 +0,0 @@ - - - - -
- <%:Dynamic DNS%> - - - - - - - - - - - - -
<%:Configuration%><%:Next Update%><%:Lookup Hostname%><%:Registered IP%><%:Network%>

<%:Collecting data...%>
-
- diff --git a/package/luci/applications/luci-app-ddns/po/ca/ddns.po b/package/luci/applications/luci-app-ddns/po/ca/ddns.po deleted file mode 100644 index 69be6ed8b1..0000000000 --- a/package/luci/applications/luci-app-ddns/po/ca/ddns.po +++ /dev/null @@ -1,733 +0,0 @@ -# ddns.pot -# generated from ./applications/luci-ddns/luasrc/i18n/ddns.en.lua -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2014-07-03 20:30+0200\n" -"Last-Translator: Alex \n" -"Language-Team: \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -#, fuzzy -msgid "Custom update-URL" -msgstr "URL d'actualització personalitzada" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "DNS dinàmic" - -#, fuzzy -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"El DNS dinàmic permet que el teu router sigui localitzable amb un nom de " -"màquin fix mentre té una adreça IP dinàmica." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Interfície" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Xarxa" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Contrasenya" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Nom d'usuari" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/cs/ddns.po b/package/luci/applications/luci-app-ddns/po/cs/ddns.po deleted file mode 100644 index 2366f629b1..0000000000 --- a/package/luci/applications/luci-app-ddns/po/cs/ddns.po +++ /dev/null @@ -1,731 +0,0 @@ -# Generated from applications/luci-ddns/luasrc/model/cbi/ddns/ddns.lua -# -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2014-06-20 23:22+0200\n" -"Last-Translator: koli \n" -"Language-Team: \n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "Vlastní aktualizační-URL" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "Dynamické DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"Dynamické DNS umožňuje, aby mohl být váš router dostupný pod pevným " -"hostname, zatímco se jeho IP adresa dynamicky mění." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Rozhraní" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Síť" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Heslo" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Uživatelské jméno" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/de/ddns.po b/package/luci/applications/luci-app-ddns/po/de/ddns.po deleted file mode 100644 index 39c1fdc831..0000000000 --- a/package/luci/applications/luci-app-ddns/po/de/ddns.po +++ /dev/null @@ -1,830 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.2-1\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 \n" -"Language-Team: \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.7.1\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-Basepath: .\n" - -msgid "&" -msgstr "&" - -msgid "-- custom --" -msgstr "-- benutzerdefiniert --" - -msgid "-- default --" -msgstr "-- Standard --" - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Allow non-public IP's" -msgstr "Erlaube Nicht-öffentliche IPs" - -msgid "Applying changes" -msgstr "Änderungen anwenden" - -msgid "Basic Settings" -msgstr "Grundlegende Einstellungen" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" -"Liste der Konfigurationshinweise um Dynamische DNS Aktualisierungen ohne " -"Einschränkungen zu nutzen" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" -"Liste der konfigurierten DDNS Konfigurationen und ihr momentaner Status." - -msgid "Bind Network" -msgstr "Bind-Netzwerk" - -msgid "Binding to a specific network not supported" -msgstr "'Bind' an ein bestimmtes Netzwerk wird nicht unterstützt" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" -"BusyBox's nslookup und Wget unterstützen nicht die IP Version für die " -"Kommunikation festzulegen!" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" -"BusyBox's nslookup und hostip unterstützen es nicht das TCP-Protokoll für " -"DNS Anfragen anstelle des standardmäßigen UDP-Protokolls zu verwenden!" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" -"BusyBox nslookup in der aktuellen compilierten Version kann gegebenen DNS-" -"Server nicht korrekt verarbeiten!" - -msgid "Casual users should not change this setting" -msgstr "Standard Benutzer sollten diese Einstellung nicht ändern." - -msgid "Change provider" -msgstr "Anbieter wechseln" - -msgid "Check Interval" -msgstr "Prüfinterval" - -msgid "Collecting data..." -msgstr "Sammle Daten..." - -msgid "Config error" -msgstr "Konfigurationsfehler" - -msgid "Configuration" -msgstr "Einstellungen" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" -"Konfiguriere hier die Details für alle Dynamik DNS Dienste einschließlich " -"dieser LuCI Anwendung." - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "Konfiguriere hier die Details für den gewählten Dynamik DNS Dienst." - -msgid "Current setting" -msgstr "Aktuelle Einstellung" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" -"Aktuell werden keine DDNS Aktualisierungen beim Systemstart oder bei " -"Netzwerkereignissen gestartet.
Dieses ist der Standard, wenn Sie die " -"DDSN Skripte über eigene Routinen (z.B. cron und Erzwungener Aktualisierung " -"von '0') starten." - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" -"Aktuell werden DDNS Aktualisierungen nicht bei Systemstart oder bei " -"Netzwerkereignissen gestartet.
Sie können jede Konfiguration hier " -"starten und stoppen. Sie wird bis zum nächsten Neustart ausgeführt." - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "Update-Skript um Aktualisierungen an Ihren DDNS Anbieter zu senden." - -msgid "Custom update-URL" -msgstr "Eigene Update-URL" - -msgid "Custom update-script" -msgstr "Eigenes Update-Skript" - -msgid "DDNS Autostart disabled" -msgstr "DDNS Autostart deaktiviert" - -msgid "DDNS Client Configuration" -msgstr "DDNS Client Konfiguration" - -msgid "DDNS Client Documentation" -msgstr "DDNS Client Dokumentation" - -msgid "DDNS Service provider" -msgstr "DDNS-Dienstanbieter" - -msgid "DNS requests via TCP not supported" -msgstr "DNS Anfragen über TCP nicht unterstützt" - -msgid "DNS-Server" -msgstr "DNS-Server" - -msgid "Date format" -msgstr "Datumsformat " - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" -"Definiert die Web-Seite von der die aktuelle IPv4-Adresse des System gelesen " -"wird." - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" -"Definiert die Web-Seite von der die aktuelle IPv6-Adresse des System gelesen " -"wird." - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" -"Definiert die Schnittstelle von der die aktuelle IP-Adresse des System " -"gelesen wird." - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" -"Definiert das Netzwerk von dem die aktuelle IPv4-Adresse des System gelesen " -"wird." - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" -"Definiert das Netzwerk von dem die aktuelle IPv6-Adresse des System gelesen " -"wird." - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" -"Definiert die Quelle von der die aktuelle IPv4-Adresse des Systems gelesen " -"wird, die an Ihren DDNS Anbieter gesendet wird." - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" -"Definiert die Quelle von der die aktuelle IPv6-Adresse des Systems gelesen " -"wird, die an Ihren DDNS Anbieter gesendet wird." - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" -"Legt fest welche IP-Adresse 'IPv4/IPv6' zum DDNS Anbieter gesendet wird" - -msgid "Details for" -msgstr "Details für" - -msgid "Directory contains Log files for each running section" -msgstr "" -"Das Verzeichnis enthält die Protokolldateien aller laufenden Konfigurationen." - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" -"Das Verzeichnis enthält die PID und andere Statusinformationen aller " -"laufenden Konfigurationen." - -msgid "Disabled" -msgstr "Deaktiviert" - -msgid "Domain" -msgstr "Domäne" - -msgid "Dynamic DNS" -msgstr "Dynamisches DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"Dynamisches DNS erlaubt es, den Router bei dynamischer IP-Adresse über einen " -"festen DNS-Namen zu erreichen." - -msgid "Enable secure communication with DDNS provider" -msgstr "Aktiviert sichere Kommunikation mit dem DDNS Anbieter" - -msgid "Enabled" -msgstr "Aktiviert" - -msgid "Error" -msgstr "Fehler" - -msgid "Error Retry Counter" -msgstr "Wiederholungszähler bei Fehler" - -msgid "Error Retry Interval" -msgstr "Wiederholungsintervall bei Fehler" - -msgid "Event Network" -msgstr "Ereignis Netzwerk" - -msgid "File" -msgstr "Datei" - -msgid "File not found" -msgstr "Datei nicht gefunden" - -msgid "File not found or empty" -msgstr "Datei nicht gefunden oder leer" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" -"Folgen Sie dem Link
Hier finden Sie weitere Hinweise um Ihr System für " -"die Nutzung aller Optionen der DDNS Skripte zu optimieren." - -msgid "For detailed information about parameter settings look here." -msgstr "" -"Detaillierte Informationen zu den Parametereinstellungen finden Sie hier." - -msgid "For supported codes look here" -msgstr "Unterstützte Kodierungen finden Sie hier." - -msgid "Force IP Version" -msgstr "Erzwinge IP-Version" - -msgid "Force IP Version not supported" -msgstr "Erzwinge IP-Version nicht unterstützt" - -msgid "Force Interval" -msgstr "Erzwungene Aktualisierung" - -msgid "Force TCP on DNS" -msgstr "Erzwinge TCP bei DNS-Anfragen" - -msgid "Forced IP Version don't matched" -msgstr "Erzwungene IP Version stimmt nicht überein" - -msgid "Format" -msgstr "Format" - -msgid "Format: IP or FQDN" -msgstr "Format: IP-Adresse oder FQDN" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" -"GNU Wget verwendet die IP des gewählten Netzwerkes; cURL verwendet die " -"physikalische Schnittstelle." - -msgid "Global Settings" -msgstr "Globale Einstellungen" - -msgid "HTTPS not supported" -msgstr "HTTPS nicht unterstützt" - -msgid "Hints" -msgstr "Hinweise" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" -"Hostname/FQDN um zu überprüfen, ob eine Aktualisierung stattgefunden hat " -"oder notwendig ist" - -msgid "IP address source" -msgstr "IP-Adressquelle" - -msgid "IP address version" -msgstr "IP-Adressversion" - -msgid "IPv4-Address" -msgstr "IPv4-Adresse" - -msgid "IPv6 address must be given in square brackets" -msgstr "Eine IPv6 Adresse muss in eckigen Klammern angegeben werden" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" -"IPv6 wird vom System nicht (voll) unterstützt.
Bitte folgen Sie den " -"Hinweisen auf der Homepage von OpenWrt um die volle IPv6-Unterstützung zu " -"aktivieren
oder installieren Sie die aktuellste OpenWrt Version." - -msgid "IPv6 not supported" -msgstr "IPv6 nicht unterstützt" - -msgid "IPv6-Address" -msgstr "IPv6-Adresse" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "Wenn cURL und GNU Wget installiert sind, wird Wget verwendet." - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" -"Wenn deaktiviert kann die Aktualisierung nicht gestartet werden.
Weder " -"über das LuCI Web Interface noch von der Geräte-Konsole" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" -"Wenn Sie sichere Kommunikation verwenden, sollten Sie Serverzertifikate " -"überprüfen!" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" -"Wenn Sie Aktualisierungen für IPv4 und IPv6 senden möchten benötigen Sie " -"zwei Konfigurationen z.B. 'myddns_ipv4' und 'myddns_ipv6'" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" -"In einigen Versionen von OpenWrt wurde cURL/libcurl ohne Proxy Unterstützung " -"compiliert." - -msgid "Info" -msgstr "Info" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" -"Installieren Sie das 'ca-certificates' Paket oder die benötigten Zertifikate " -"von Hand in das Standardverzeichnis /etc/ssl/certs" - -msgid "Interface" -msgstr "Schnittstelle" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" -"Intervall zur Prüfung auf geänderte IP-Adresse
Minimum Wert 5 Minuten " -"== 300 Sekunden" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" -"Intervall mit dem Aktualisierungen erzwungen an den DDNS Anbieter gesendet " -"werden.
Ein Wert von '0' führt das Skript nur einmalig aus.
Der " -"Wert muss größer als das Prüfintervall sein oder '0'." - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" -"Es wird nicht empfohlen, dass Standard Benutzer die Einstellungen auf dieser " -"Seite ändern." - -msgid "Last Update" -msgstr "Letztes Aktualisierung" - -msgid "Loading" -msgstr "Lade" - -msgid "Log File Viewer" -msgstr "Protokolldatei" - -msgid "Log directory" -msgstr "Protokoll-Verzeichnis" - -msgid "Log length" -msgstr "Protokolllänge" - -msgid "Log to file" -msgstr "Protokoll in Datei schreiben" - -msgid "Log to syslog" -msgstr "Systemprotokoll verwenden" - -msgid "Lookup Hostname" -msgstr "Nachschlage-Hostname" - -msgid "NOT installed" -msgstr "NICHT installiert" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" -"Weder GNU Wget mit SSL noch cURL sind installiert um ein Netzwerk zur " -"Kommunikation festzulegen." - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" -"Weder GNU Wget mit SSL noch cURL sind installiert um sichere " -"Aktualisierungen über HTTPS Protokoll zu unterstützen." - -msgid "Network" -msgstr "Netzwerk" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "Netzwerk auf dem Ereignisse die ddns-updater Skripte starten" - -msgid "Never" -msgstr "Nie" - -msgid "Next Update" -msgstr "Nächste Aktualisierung" - -msgid "No certificates found" -msgstr "Keine Zertifikate gefunden" - -msgid "No data" -msgstr "Keine Daten" - -msgid "No logging" -msgstr "Keine Protokollierung" - -msgid "Non-public and by default blocked IP's" -msgstr "Nicht-öffentliche und standardmäßig blockierte IPs." - -msgid "Notice" -msgstr "Notiz" - -msgid "Number of last lines stored in log files" -msgstr "" -"Anzahl der letzten Zeilen die in der Protokolldatei gespeichert werden." - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" -"OPTIONAL: Erzwingt die Verwendung einer reinen IPv4/IPv6 Kommunikation." - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" -"OPTIONAL: Erzwingt die Verwendung von TCP anstelle von UDP bei DNS Anfragen." - -msgid "OPTIONAL: Network to use for communication" -msgstr "OPTIONAL: Netzwerk das zur Kommunikation verwendet werden soll." - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "OPTIONAL: Proxy-Server für Adresserkennung und Aktualisierungen" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" -"OPTIONAL: Ersetzt den voreingestellten DNS-Server um die 'Registrierte IP' " -"zu ermitteln." - -msgid "On Error the script will retry the failed action after given time" -msgstr "" -"Bei Fehlern wird das Skript die fehlerhafte Aktion nach der gegebenen Zeit " -"wiederholen" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "Das Skript wird nach der gegebenen Anzahl von Fehlversuchen beendet." - -msgid "OpenWrt Wiki" -msgstr "OpenWrt Wiki" - -msgid "Optional Encoded Parameter" -msgstr "Optionaler codierten Parameter" - -msgid "Optional Parameter" -msgstr "Optionaler Parameter" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "Optional: Ersetzt [PARAMENC] in der Update-URL (URL-codiert)" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "Optional: Ersetzt [PARAMENC] in der Update-URL (NICHT URL-codiert)" - -msgid "Overview" -msgstr "Übersicht" - -msgid "PROXY-Server" -msgstr "Proxy-Server" - -msgid "PROXY-Server not supported" -msgstr "Proxy-Server nicht unterstützt" - -msgid "Password" -msgstr "Passwort" - -msgid "Path to CA-Certificate" -msgstr "Pfad zum CA-Zertifikat" - -msgid "Please [Save & Apply] your changes first" -msgstr "Bitte [Speichern & Anwenden] Sie Änderungen zunächst" - -msgid "Please press [Read] button" -msgstr "Bitte Protokolldatei einlesen" - -msgid "Please update to the current version!" -msgstr "Aktualisieren Sie bitte auf die aktuelle Version!" - -msgid "Process ID" -msgstr "Prozess ID" - -msgid "Read / Reread log file" -msgstr "Protokolldatei (neu) einlesen" - -msgid "Really change DDNS provider?" -msgstr "Wirklich DDNS-Anbieter wechseln?" - -msgid "Registered IP" -msgstr "Registrierte IP" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "Ersetzt [DOMAIN] in der Update-URL" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "Ersetzt [PASSWORD] in der Update-URL (URL-codiert)" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "Ersetzt [USERNAME] in der Update-URL (URL-codiert)" - -msgid "Run once" -msgstr "Einmalig ausführen" - -msgid "Script" -msgstr "Skript" - -msgid "Show more" -msgstr "Zeige mehr" - -msgid "Software update required" -msgstr "Softwareaktualisierung nötig" - -msgid "Specifying a DNS-Server is not supported" -msgstr "Die Angabe eines DNS-Server wird nicht unterstützt" - -msgid "Start" -msgstr "Start" - -msgid "Start / Stop" -msgstr "Start / Stopp" - -msgid "Status directory" -msgstr "Status-Verzeichnis" - -msgid "Stopped" -msgstr "Angehalten" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" -"Die installierte Software 'ddns-scripts' unterstützt nicht alle verfügbaren " -"Optionen." - -msgid "The default setting of '0' will retry infinite." -msgstr "Beim Standard-Wert von '0' wird es endlos erneut versucht." - -msgid "There is no service configured." -msgstr "Kein Dienst konfiguriert" - -msgid "Timer Settings" -msgstr "Zeitgeber Einstellungen" - -msgid "To change global settings click here" -msgstr "Globale Einstellungen können sie hier ändern." - -msgid "To use cURL activate this option." -msgstr "Um cURL zu verwenden aktivieren sie diese Einstellung." - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "URL zur Adresserkennung für" - -msgid "Unknown error" -msgstr "Unbekannter Fehler" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" -"Update-URL um Aktualisierungen an Ihren DDNS Anbieter zu senden.
Folgen " -"Sie der Anleitung auf der Internet Seite des Anbieters." - -msgid "Update error" -msgstr "Aktualisierungsfehler" - -msgid "Use HTTP Secure" -msgstr "Verwende sicheres HTTP" - -msgid "Use cURL" -msgstr "Verwende cURL" - -msgid "User defined script to read systems IP-Address" -msgstr "" -"Definiert das Skript mit dem die aktuelle IP-Adresse des System gelesen " -"wird." - -msgid "Username" -msgstr "Benutzername" - -msgid "Using specific DNS Server not supported" -msgstr "Verwendung spezifischer DNS-Server wird nicht unterstützt" - -msgid "Verify" -msgstr "Überprüfen" - -msgid "Version" -msgstr "Version" - -msgid "Version Information" -msgstr "Versionsinformationen" - -msgid "Waiting for changes to be applied..." -msgstr "Änderungen werden angewandt..." - -msgid "Warning" -msgstr "Warnung" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" -"Schreibt detaillierte Meldungen in die Protokolldatei. Die Datei wird " -"automatisch gekürzt." - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -msgstr "" -"Schreibt Meldungen ins Systemprotokoll. Kritische Fehler werden immer in das " -"Systemprotokoll geschrieben." - -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 "" -"Sie sollten das Programmpakete 'bind-host' oder 'knot-host' oder 'drill' " -"oder 'hostip' installieren, wenn Sie einen DNS Server angeben müssen um Ihre " -"registrierte IP zu ermitteln." - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" -"Sie sollten das Programmpakete 'bind-host' oder 'knot-host' oder 'drill' für " -"DNS Anfragen installieren." - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" -"Sie sollten das Programmpaket 'wget' oder 'curl' oder 'uclient-fetch' " -"installieren." - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" -"Sie sollten das Programmpaket 'wget' oder 'curl' oder 'uclient-fetch' mit " -"'libustream-*ssl' installieren." - -msgid "You should install 'wget' or 'curl' package." -msgstr "Sie sollten das Programmpaket 'wget' oder 'curl' installieren." - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" -"Sie sollten das Programmpaket 'wget' oder 'uclient-fetch' installieren oder " -"libcurl ersetzen." - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" -"cURL ist installiert, aber libcurl wurde ohne Proxy Unterstützung compiliert" - -msgid "cURL without Proxy Support" -msgstr "cURL ohne Proxy Unterstützung" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" -"kann lokale IP-Adresse nicht ermitteln. Bitte wählen Sie eine andere Quelle." - -msgid "can not resolve host:" -msgstr "Konnte Server nicht finden:" - -msgid "config error" -msgstr "Konfigurationsfehler" - -msgid "days" -msgstr "Tage" - -msgid "directory or path/file" -msgstr "Verzeichnis oder Pfad/zur/Datei" - -msgid "either url or script could be set" -msgstr "Weder Url noch Script ist definiert" - -msgid "enable here" -msgstr "hier aktivieren" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "Datei oder Verzeichnis nicht gefunden oder nicht 'IGNORE'" - -msgid "help" -msgstr "Hilfe" - -msgid "hours" -msgstr "Stunden" - -msgid "installed" -msgstr "installiert" - -msgid "invalid FQDN / required - Sample" -msgstr "ungültige FQDN / Pflichtfeld - Beispiel" - -msgid "minimum value '0'" -msgstr "Minimum Wert '0'" - -msgid "minimum value '1'" -msgstr "Minimum Wert '1'" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "Minimum Wert 5 Minuten == 300 Sekunden" - -msgid "minutes" -msgstr "Minuten" - -msgid "missing / required" -msgstr "fehlt / Pflichteingabe" - -msgid "must be greater or equal 'Check Interval'" -msgstr "muss größer als das Prüfintervall sein" - -msgid "must start with 'http://'" -msgstr "muss mit 'http://' beginnen" - -msgid "nc (netcat) can not connect" -msgstr "nc (netcat) kann keine Verbindung herstellen" - -msgid "never" -msgstr "nie" - -msgid "no data" -msgstr "Keine Daten" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" -"Skript nicht gefunden oder nicht ausführbar. - Beispiel: 'Pfad/zum/Skript.sh'" - -msgid "nslookup can not resolve host" -msgstr "nslookup kann den Namen nicht auflösen" - -msgid "or" -msgstr "oder" - -msgid "or higher" -msgstr "oder höher" - -msgid "please disable" -msgstr "Bitte deaktivieren" - -msgid "please remove entry" -msgstr "Bitte Eintrag entfernen" - -msgid "please select 'IPv4' address version" -msgstr "Bitte 'IPv4' Adressversion auswählen" - -msgid "please select 'IPv4' address version in" -msgstr "Bitte 'IPv4' Adressversion auswählen in den" - -msgid "please set to 'default'" -msgstr "Bitte auf 'Standard' setzen" - -msgid "proxy port missing" -msgstr "Proxy-Port fehlt" - -msgid "required" -msgstr "erforderlich" - -msgid "seconds" -msgstr "Sekunden" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" -"um HTTPS ohne Überprüfung der Server Zertifikate auszuführen (unsicher)" - -msgid "unknown error" -msgstr "Unbekannter Fehler" - -msgid "unspecific error" -msgstr "Unspezifischer Fehler" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "verwende Rechnername, FQDN, IPv4- oder IPv6-Adresse" diff --git a/package/luci/applications/luci-app-ddns/po/el/ddns.po b/package/luci/applications/luci-app-ddns/po/el/ddns.po deleted file mode 100644 index fce0cb8532..0000000000 --- a/package/luci/applications/luci-app-ddns/po/el/ddns.po +++ /dev/null @@ -1,730 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2012-03-18 17:08+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "Προσαρμοσμένο URL-ενημέρωσης" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "Δυναμικό DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"Το Δυναμικό DNS επιτρέπει στον δρομολογητή σας να είναι προσβάσιμος μέσω " -"ενός σταθερού ονόματος υπολογιστή παρόλο που η διεύθυνση IP του μπορεί να " -"αλλάζει δυναμικά." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Διεπαφή" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Δίκτυο" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Κωδικός πρόσβασης" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Όνομα χρήστη" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/es/ddns.po b/package/luci/applications/luci-app-ddns/po/es/ddns.po deleted file mode 100644 index eb5a38576c..0000000000 --- a/package/luci/applications/luci-app-ddns/po/es/ddns.po +++ /dev/null @@ -1,729 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2012-11-01 23:37+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "URL de actualización personalizada" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "DNS dinámico" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"DNS Dinámico le permite conectar a su router con un nombre concreto aunque " -"su dirección IP cambie dinámicamente." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Interfaz" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Red" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Contraseña" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Nombre de usuario" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/fr/ddns.po b/package/luci/applications/luci-app-ddns/po/fr/ddns.po deleted file mode 100644 index 2004989594..0000000000 --- a/package/luci/applications/luci-app-ddns/po/fr/ddns.po +++ /dev/null @@ -1,729 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2012-11-06 13:19+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "URL de mise à jour personnalisée" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "DNS Dynamique" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"Le DNS Dynamique permet au routeur d'être joint avec un nom d'hôte fixe bien " -"que changeant dynamiquement d'adresse IP." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Interface" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Réseau" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Mot de passe" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Nom d'utilisateur" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/he/ddns.po b/package/luci/applications/luci-app-ddns/po/he/ddns.po deleted file mode 100644 index f6f2e2b843..0000000000 --- a/package/luci/applications/luci-app-ddns/po/he/ddns.po +++ /dev/null @@ -1,730 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2012-09-10 04:26+0200\n" -"Last-Translator: Snoof \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -#, fuzzy -msgid "Custom update-URL" -msgstr "עדכן URL באופן ידני" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "DNS דינאמי" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"שירות DDNS מאפשר גישה לנתב שלך ע\"י שם דומיין קבוע, בעוד כתובת ה- IP שלך " -"משתנה באופן דינמי." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "ממשק" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "רשת" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "סיסמא" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "שם משתמש" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/hu/ddns.po b/package/luci/applications/luci-app-ddns/po/hu/ddns.po deleted file mode 100644 index 1f91fa176f..0000000000 --- a/package/luci/applications/luci-app-ddns/po/hu/ddns.po +++ /dev/null @@ -1,729 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2013-01-28 13:49+0200\n" -"Last-Translator: Gábor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "Egyéni update-URL" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "Dinamikus DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"A dinamikus DNS lehetővé teszi, hogy a routere elérhető legyen egy fix host " -"névvel akkor is ha dinamikusan változó IP címmel rendelkezik." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Interfész" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Hálózat" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Jelszó" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Felhasználónév" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/it/ddns.po b/package/luci/applications/luci-app-ddns/po/it/ddns.po deleted file mode 100644 index 4b8d2f844e..0000000000 --- a/package/luci/applications/luci-app-ddns/po/it/ddns.po +++ /dev/null @@ -1,788 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2017-09-06 01:53+0200\n" -"Last-Translator: Bubu83 \n" -"Language-Team: \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "Opzioni Avanzate" - -msgid "Allow non-public IP's" -msgstr "Consenti IP non pubblici" - -msgid "Applying changes" -msgstr "Applico i cambiamenti" - -msgid "Basic Settings" -msgstr "Opzioni di Base" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" -"Sotto c'è una lista di consigli di configurazione per il tuo sistema per eseguire " -"aggiornamenti di Dynamic DNS senza limitazioni" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" -"Sotto c'è una lista delle configurazioni DDNS configurate e il loro stato attuale." - -msgid "Bind Network" -msgstr "Collega Rete" - -msgid "Binding to a specific network not supported" -msgstr "Collegamento a una specifica rete non supportato" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" -"Nslookup di BusyBox e Wget non supportano lo specificare la versione IP da usare " -"per la comunicazione con il Provider DDNS!" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" -"Nslookup di BusyBox e hostip non supportano lo specificare l'uso di TCP invece " -"di UDP di default quando richiedono il server DNS!" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" -"Nslookup di BusyBox nella versione compilata corrente non gestisce i dati Server " -"DNS correttamente!" - -msgid "Casual users should not change this setting" -msgstr "Gli utenti casuali non dovrebbero cambiare questa opzione" - -msgid "Change provider" -msgstr "Cambia provider" - -msgid "Check Interval" -msgstr "Controlla Intervallo" - -msgid "Collecting data..." -msgstr "Raccogliendo dati..." - -msgid "Config error" -msgstr "Errore di configurazione" - -msgid "Configuration" -msgstr "Configurazione" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" -"Configura qui i dettagli per tutti i servizi Dynamic DNS inclusa questa " -"applicazione LuCI." - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "Configura qui i dettagli per il servizio Dynamic DNS selezionato." - -msgid "Current setting" -msgstr "Impostazione corrente" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" -"Attualmente gli aggiornamenti DDNS non si avviano al boot o per eventi " -"dell'interfaccia.
Questo è di default se esegui gli script DDNS per conto tuo " -" (es. usando cron con force_interval impostato a '0')" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" -"Attualmente gli aggiornamenti DDNS non si avviano al boot o per eventi " -"dell'interfaccia.
Puoi avviare/fermare ogni configurazione qui. Verrà eseguita " -"fino al prossimo riavvio." - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "Script aggiornamento personalizzato da usare per aggiornare il tuo DDNS Provider." - -msgid "Custom update-URL" -msgstr "URL di aggiornamento personalizzato" - -msgid "Custom update-script" -msgstr "Script di aggiornamento personalizzato" - -msgid "DDNS Autostart disabled" -msgstr "Autoavvio DDNS disabilitato" - -msgid "DDNS Client Configuration" -msgstr "Configurazione Cliente DDNS" - -msgid "DDNS Client Documentation" -msgstr "Documentazione Cliente DDNS" - -msgid "DDNS Service provider" -msgstr "Provider del Servizio DDNS" - -msgid "DNS requests via TCP not supported" -msgstr "Richieste DNS via TCP non supportate" - -msgid "DNS-Server" -msgstr "Server DNS" - -msgid "Date format" -msgstr "Formato Data" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "Definisce la pagina WEB che legge l'indirizzo IPv4 dei sistemi" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "Definisce la pagina WEB che legge l'indirizzo IPv6 dei sistemi" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "Definisce l'interfaccia che legge l'indirizzo IP dei sistemi" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "Definisce la rete che legge l'indirizzo IPv4 dei sistemi" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "Definisce la rete che legge l'indirizzo IPv6 dei sistemi" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" -"Definisce la sorgente che legge l'indirizzo IPv4 dei sistemi, che sarà mandata " -"al provider DDNS" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" -"Definisce la sorgente che legge l'indirizzo IPv6 dei sistemi, che sarà mandata " -"al provider DDNS" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "Definisce quale indirizzo IP 'IPv4/IPv6' è mandato al provider DDNS" - -msgid "Details for" -msgstr "Dettagli per" - -msgid "Directory contains Log files for each running section" -msgstr "Directory che contiene i file di registro per ogni sezione avviata" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" -"Directory che contiene il PID e altre informazioni di stato per ogni seziona avviata" - -msgid "Disabled" -msgstr "Disabilitato" - -msgid "Domain" -msgstr "Dominio" - -msgid "Dynamic DNS" -msgstr "DNS Dinamico" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"DNS Dinamico permette al tuo router di essere raggiunto con un indirizzo " -"statico anche nel caso in cui tu disponga di un indirizzo IP dinamico." - -msgid "Enable secure communication with DDNS provider" -msgstr "Abilita la comunicazione sicura con il provider DDNS" - -msgid "Enabled" -msgstr "Abilitato" - -msgid "Error" -msgstr "Errore" - -msgid "Error Retry Counter" -msgstr "Conteggio errore di riprova" - -msgid "Error Retry Interval" -msgstr "Intervallo errore di riprova" - -msgid "Event Network" -msgstr "Network Evento" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "File non trovato" - -msgid "File not found or empty" -msgstr "File non trovato o vuoto" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" -"Segui questo collegamento
Troverai più aiuti per ottimizzare il tuo sistema " -"a eseguire script DDNS con tutte le opzioni" - -msgid "For detailed information about parameter settings look here." -msgstr "Per informazioni dettagliate sui parametri opzionali guarda qui." - -msgid "For supported codes look here" -msgstr "Per i codici supportati guarda qui" - -msgid "Force IP Version" -msgstr "Forza Versione IP" - -msgid "Force IP Version not supported" -msgstr "Forza Versione IP non supportato" - -msgid "Force Interval" -msgstr "Forza Intervallo" - -msgid "Force TCP on DNS" -msgstr "Forza TCP su DNS" - -msgid "Forced IP Version don't matched" -msgstr "La Versione IP forzata non corrisponde" - -msgid "Format" -msgstr "Formato" - -msgid "Format: IP or FQDN" -msgstr "Formato: IP o FQDN" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" -"GNU Wget userà l'IP della rete data, cURL userà l'interfaccia " -"fisica." - -msgid "Global Settings" -msgstr "Opzioni Globali" - -msgid "HTTPS not supported" -msgstr "HTTPS non supportato" - -msgid "Hints" -msgstr "Suggerimenti" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "Indirizzo/FQDN da validare, se l'aggiornamento IP avviene o è necessario" - -msgid "IP address source" -msgstr "Sorgente indirizzo IP" - -msgid "IP address version" -msgstr "Versione indirizzo IP" - -msgid "IPv4-Address" -msgstr "Indirizzo IPv4" - -msgid "IPv6 address must be given in square brackets" -msgstr "Indirizzo IPv6 deve essere dato con le parentesi quadre" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" -"IPv6 non è (pienamente) supportato da questo sistema
Per favore segui " -"le istruzioni sul sito di OpenWrt per abilitare il supporto a IPv6
o aggiorna " -"il tuo sistema all'ultima Release di OpenWrt" - -msgid "IPv6 not supported" -msgstr "IPv6 non supportato" - -msgid "IPv6-Address" -msgstr "Indirizzo IPv6" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "Se sia cURL e sia GNU Wget sono installati, Wget è usato di default." - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" -"Se questa sezione del servizio è disabilitata, non può essere avviata
Nè " -"da interfaccia LuCI nè da console" - -msgid "If using secure communication you should verify server certificates!" -msgstr "Se usi la comunicazione sicura dovresti verificare i certificati del server!" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" -"Se vuoi mandare aggiornamenti per IPv4 e IPv6, devi definire due " -"Configurazioni separate es. 'myddns_ipv4' e 'myddns_ipv6'" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" -"In alcune versioni cURL/libcurl in OpenWrt è compilato senza supporto proxy." - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" -"Installa il pacchetto 'ca-certificates' o i certificati necessari " -"a mano nella directory di default /etc/ssl/certs" - -msgid "Interface" -msgstr "Interfaccia" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" -"Intervallo per controllare i cambiamenti dell'IP
I valori sotto i 5 minuti == " -"300 secondi non sono supportati" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" -"Intervallo per forzare gli aggiornamenti da mandare al provider DDNS
Impostanto questo " -"parametro a 0 forzerà lo script ad eseguirsi una sola volta
Valori sotto 'Controllo " -"Intervallo' eccetto '0' non sono supportati" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "Non è raccomandato agli utenti casuali di cambiare le opzioni in questa pagina." - -msgid "Last Update" -msgstr "Ultimo Aggiornamento" - -msgid "Loading" -msgstr "Caricando" - -msgid "Log File Viewer" -msgstr "Visualizzatore Registro" - -msgid "Log directory" -msgstr "Directory registro" - -msgid "Log length" -msgstr "Lunghezza registro" - -msgid "Log to file" -msgstr "Registra su file" - -msgid "Log to syslog" -msgstr "Registra su syslog" - -msgid "Lookup Hostname" -msgstr "Indirizzo da consultare" - -msgid "NOT installed" -msgstr "NON installato" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" -"Nè GNU Wget con SSL nè cURL installati per selezionare una rete da usare per " -"comunicazione." - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" -"Nè GNU Wget con SSL nè cURL installati per supportare aggiornamenti sicuri via " -"protocollo HTTPS." - -msgid "Network" -msgstr "Rete" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "Rete su cui lo script di aggiornamento DDNS sara avviato" - -msgid "Never" -msgstr "Mai" - -msgid "Next Update" -msgstr "Prossimo Aggiornamento" - -msgid "No certificates found" -msgstr "Nessun certificato trovato" - -msgid "No data" -msgstr "Nessuno dato" - -msgid "No logging" -msgstr "Nessun registro" - -msgid "Non-public and by default blocked IP's" -msgstr "Ip non pubblici e bloccati di default" - -msgid "Notice" -msgstr "Avviso" - -msgid "Number of last lines stored in log files" -msgstr "Numero di ultime linee memorizzato nei file registro" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "OPZIONALE: Forza l'uso di puro IPv4/IPv6 solo comunicazione." - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "OPZIONALE: Forza l'uso del TCP invece del UDP di default per richieste DNS." - -msgid "OPTIONAL: Network to use for communication" -msgstr "OPZIONALE: Rete da usare per comunicazione" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "OPZIONALE: Server Proxy per rivelazioni e aggiornamenti." - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "OPZIONALE: Usa Server DNS non di default per individuare 'IP Registrati'." - -msgid "On Error the script will retry the failed action after given time" -msgstr "Ad Errore lo script riproverà l'azione fallita dopo il tempo dato" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "Ad Errore lo script fermerà l'esecuzione dopo il numero di tentativi dati" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "Parametro Codificato Opzionale" - -msgid "Optional Parameter" -msgstr "Parametro Opzionale" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "Opzionale: Sostituisci [PARAMENC] nell'URL di aggiornamento (URL codificato)" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "Opzionale: Sostituisci [PARAMOPT] nell'URL di aggiornamento (URL NON codificato)" - -msgid "Overview" -msgstr "Riassunto" - -msgid "PROXY-Server" -msgstr "Server PROXY" - -msgid "PROXY-Server not supported" -msgstr "SERVER PROXY non supportato" - -msgid "Password" -msgstr "Password" - -msgid "Path to CA-Certificate" -msgstr "Percorso per Certificato CA" - -msgid "Please [Save & Apply] your changes first" -msgstr "Per favore [Salva & Applica] prima i cambiamenti" - -msgid "Please press [Read] button" -msgstr "Per favore premi il pulsante [Leggi]" - -msgid "Please update to the current version!" -msgstr "Per favore aggiorna alla versione corrente!" - -msgid "Process ID" -msgstr "ID del Processo" - -msgid "Read / Reread log file" -msgstr "Leggi / Rileggi registro" - -msgid "Really change DDNS provider?" -msgstr "Cambiare provider DDNS veramente?" - -msgid "Registered IP" -msgstr "IP Registrato" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "Sostituisci [DOMAIN] nell'URL di aggiornamento" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "Sostituisci [PASSWORD] nell'URL di aggiornamento (URL codificato)" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "Sostituisci [NOME UTENTE] nell'URL di aggiornamento (URL codificato)" - -msgid "Run once" -msgstr "Esegui una volta" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "Mostra di più" - -msgid "Software update required" -msgstr "Richiesto aggiornamento Software" - -msgid "Specifying a DNS-Server is not supported" -msgstr "Specificare un server DNS non è supportato" - -msgid "Start" -msgstr "Inizio" - -msgid "Start / Stop" -msgstr "Inizio / Stop" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "Fermato" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" -"Il pacchetto 'ddns-scripts' attualmente installato non supporta tutte le opzioni " -"disponibili." - -msgid "The default setting of '0' will retry infinite." -msgstr "L'opzione di default '0' riproverà all'infinito." - -msgid "There is no service configured." -msgstr "Non c'è un servizio configurato." - -msgid "Timer Settings" -msgstr "Impostazioni del Timer" - -msgid "To change global settings click here" -msgstr "Per cambiare le opzioni globali clicca qui" - -msgid "To use cURL activate this option." -msgstr "Per usare cURL attiva questa opzione." - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "URL da individuare" - -msgid "Unknown error" -msgstr "Errore sconosciuto" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" -"L'URL di aggiornamento da usare per aggiornare il tuo Provider DDNS.
" -"Segui le istruzioni che trovi sulla loro pagina WEB." - -msgid "Update error" -msgstr "Errore di aggiornamento" - -msgid "Use HTTP Secure" -msgstr "Usa HTTP Sicuro" - -msgid "Use cURL" -msgstr "Usa cURL" - -msgid "User defined script to read systems IP-Address" -msgstr "Script definito dall'utente per leggere l'indirizzo IP dei sistemi" - -msgid "Username" -msgstr "Nome Utente" - -msgid "Using specific DNS Server not supported" -msgstr "Usare specifici Server DNS non supportato" - -msgid "Verify" -msgstr "Verifica" - -msgid "Version" -msgstr "Versione" - -msgid "Version Information" -msgstr "Informazione Versione" - -msgid "Waiting for changes to be applied..." -msgstr "Aspettando l'applicazione dei cambiamenti..." - -msgid "Warning" -msgstr "Allarme" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" -"Scrivi messaggi dettagliati sul registro. Il file sarà tagliato automaticamente." - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -msgstr "" -"Scrivi i messaggi registro al syslog. Gli Errori Critici saranno sempre scritti " -"sul syslog." - -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 "" -"Dovresti installare il pacchetto 'bind-host' o 'knot-host' o 'drill' o 'hostip', " -"se hai bisogno di specificare un server DNS che identifichi il tuo IP registrato." - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" -"Dovresti installare il pacchetto 'bind-host' o 'knot-host' o 'drill' per le " -"richieste DNS." - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "Dovresti installare il pacchetto 'wget' o 'curl' o 'uclient-fetch'." - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" -"Dovresti installare il pacchetto 'wget' o 'curl' o 'uclient-fetch' con il " -"pacchetto 'libustream-*ssl'." - -msgid "You should install 'wget' or 'curl' package." -msgstr "Dovresti installare il pacchetto 'wget' o 'curl'." - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" -"Dovresti installare il pacchetto 'wget' o 'uclient-fetch' o sostituire libcurl." - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "cURL è installato, ma libcurl è compilato senza supporto proxy." - -msgid "cURL without Proxy Support" -msgstr "cURL senza Supporto Proxy" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "non individuo l'IP locale. Per favore seleziona una combinazione Sorgente diversa" - -msgid "can not resolve host:" -msgstr "non posso risolvere host:" - -msgid "config error" -msgstr "errore configurazione" - -msgid "days" -msgstr "giorni" - -msgid "directory or path/file" -msgstr "directory o percorso/file" - -msgid "either url or script could be set" -msgstr "o l'url o lo script può essere impostato" - -msgid "enable here" -msgstr "abilita qui" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "file o directory non trovati o non 'IGNORE'" - -msgid "help" -msgstr "aiuto" - -msgid "hours" -msgstr "ore" - -msgid "installed" -msgstr "installato" - -msgid "invalid FQDN / required - Sample" -msgstr "FQDN invalido / richiesto - Esempio" - -msgid "minimum value '0'" -msgstr "valore minimo '0'" - -msgid "minimum value '1'" -msgstr "valore minimo '1'" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "valore minimo 5 minuti == 300 secondi" - -msgid "minutes" -msgstr "minuti" - -msgid "missing / required" -msgstr "mancante / richiesto" - -msgid "must be greater or equal 'Check Interval'" -msgstr "deve essere più grande o uguale 'Controlla Intervallo'" - -msgid "must start with 'http://'" -msgstr "deve iniziare con 'http://'" - -msgid "nc (netcat) can not connect" -msgstr "nc (netcat) non può connettersi" - -msgid "never" -msgstr "mai" - -msgid "no data" -msgstr "Niente dati" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "non trovato o non eseguibile - Esempio: '/path/to/script.sh'" - -msgid "nslookup can not resolve host" -msgstr "nslookup non può risolvere l'host" - -msgid "or" -msgstr "o" - -msgid "or higher" -msgstr "o più alto" - -msgid "please disable" -msgstr "per favore disabilita" - -msgid "please remove entry" -msgstr "per favore rimuovi la voce" - -msgid "please select 'IPv4' address version" -msgstr "per favore seleziona versione indirizzo 'IPv4'" - -msgid "please select 'IPv4' address version in" -msgstr "per favore seleziona versione indirizzo 'IPv4' in" - -msgid "please set to 'default'" -msgstr "per favore imposta a 'default'" - -msgid "proxy port missing" -msgstr "porta proxy mancante" - -msgid "required" -msgstr "richiesto" - -msgid "seconds" -msgstr "secondi" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "per eseguire HTTPS senza la verifica dei certificati del server (insicuro)" - -msgid "unknown error" -msgstr "errore sconosciuto" - -msgid "unspecific error" -msgstr "errore non specifico" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "usa nome host, FQDN, indirizzo IPv4 o IPv6" diff --git a/package/luci/applications/luci-app-ddns/po/ja/ddns.po b/package/luci/applications/luci-app-ddns/po/ja/ddns.po deleted file mode 100644 index 8fe0180d42..0000000000 --- a/package/luci/applications/luci-app-ddns/po/ja/ddns.po +++ /dev/null @@ -1,729 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2013-10-05 17:19+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: \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: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "手動アップデート-URL" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "ダイナミックDNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"ダイナミックDNSを使用することで、IPアドレスが変更されても固定のホスト名を使っ" -"てルーターにアクセスすることができます。" - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "インターフェース" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "ネットワーク" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "パスワード" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "ユーザー名" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/no/ddns.po b/package/luci/applications/luci-app-ddns/po/no/ddns.po deleted file mode 100644 index a8efd0f8b5..0000000000 --- a/package/luci/applications/luci-app-ddns/po/no/ddns.po +++ /dev/null @@ -1,728 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: \n" -"Last-Translator: Lars Hardy \n" -"Language-Team: \n" -"Language: no\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "Egendefinert oppdaterings-URL" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "Dynamisk DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"Dynamisk DNS tillater at enheten kan kontaktes ved hjelp av et fast " -"vertsnavn, uavhengig av om IP adressen endres dynamisk." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Grensesnitt" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Nettverk" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Passord" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Brukernavn" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/pl/ddns.po b/package/luci/applications/luci-app-ddns/po/pl/ddns.po deleted file mode 100644 index ade7982309..0000000000 --- a/package/luci/applications/luci-app-ddns/po/pl/ddns.po +++ /dev/null @@ -1,730 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2013-01-06 13:08+0200\n" -"Last-Translator: obsy \n" -"Language-Team: \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "Niestandardowy adres aktualizacyjny" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "Dynamiczny DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"Dynamiczny DNS umożliwia dostęp do routera z użyciem stałej nazwy hosta, " -"pomimo posiadania dynamicznie zmieniającego się adresu IP." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Interfejs" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Sieć" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Hasło" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Nazwa użytkownika" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/pt-br/ddns.po b/package/luci/applications/luci-app-ddns/po/pt-br/ddns.po deleted file mode 100644 index ab22837b28..0000000000 --- a/package/luci/applications/luci-app-ddns/po/pt-br/ddns.po +++ /dev/null @@ -1,809 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2017-02-20 17:41-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language-Team: \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" - -msgid "&" -msgstr "&" - -msgid "-- custom --" -msgstr "-- personalizado --" - -msgid "-- default --" -msgstr "-- padrão --" - -msgid "Advanced Settings" -msgstr "Configurações Avançadas" - -msgid "Allow non-public IP's" -msgstr "Permitir IPs não-públicos" - -msgid "Applying changes" -msgstr "Aplicar mudanças" - -msgid "Basic Settings" -msgstr "Configurações Básicas" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" -"Abaixo uma lista de dicas de configurações para seu sistema para rodar " -"atualizações de DNS Dinâmico sem limitações" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" -"Abaixo uma lista de configurações DDNS configuradas e seus estados atuais" - -msgid "Bind Network" -msgstr "Limitar Rede" - -msgid "Binding to a specific network not supported" -msgstr "Não suportado limitar a uma rede específica" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" -"nslookup e Wget do BusyBox não suportam que especifique a versão de IP a ser " -"usada para comunicação com o provedor DDNS!" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" -"nslookup e hostip do BusyBox não suportam que especifique para usar TCP em " -"vez do padrão UDP quando requisitando servidor DNS!" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" -"nslookup do BusyBox na versão compilada atualmente não trabalha corretamente " -"com servidores DNS dados!" - -msgid "Casual users should not change this setting" -msgstr "Usuários iniciantes não devem alterar esta configuração" - -msgid "Change provider" -msgstr "Mudando provedor" - -msgid "Check Interval" -msgstr "Checar Intervalo" - -msgid "Collecting data..." -msgstr "Coletando dados…" - -msgid "Config error" -msgstr "Erro de configuração" - -msgid "Configuration" -msgstr "Configuração" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" -"Configure aqui os detalhes para todos os serviços DNS Dinâmicos incluindo " -"esta aplicação LuCI." - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "Configure aqui os detalhes para o serviço DNS Dinâmico selecionado." - -msgid "Current setting" -msgstr "Configuração atual" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" -"Atualizações DDNS atuais não são iniciadas no boot ou nos eventos da " -"interface.
Isso é o normal se você roda scripts DDNS por conta própria " -"(ex. via cron com force_interval setado para ‘0’)" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" -"Atualizações DDNS atuais não são iniciadas no boot ou nos eventos da " -"interface.
Você pode iniciar/parar cada configuração aqui. Ela irá " -"rodar até o próximo reboto." - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" -"Scripts de atualização personalizados para serem usados para atualizar seu " -"Provedor DDNS." - -msgid "Custom update-URL" -msgstr "URL para atualização personalizada" - -msgid "Custom update-script" -msgstr "Script para atualização personalizado" - -msgid "DDNS Autostart disabled" -msgstr "Auto-inicialização de DDNS desabilitada" - -msgid "DDNS Client Configuration" -msgstr "Configuração de cliente DDNS" - -msgid "DDNS Client Documentation" -msgstr "Documentação de cliente DDNS" - -msgid "DDNS Service provider" -msgstr "Provedor de serviço DDNS" - -msgid "DNS requests via TCP not supported" -msgstr "Requisição de DNS via TCP não suportada" - -msgid "DNS-Server" -msgstr "Servidor DNS" - -msgid "Date format" -msgstr "Formato de data" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "Define a página Web para ler o endereço IPv4 do sistema" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "Define a página Web para ler o endereço IPv6 do sistema" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "Define a interface para ler o endereço IP do sistema" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "Define a rede para ler o endereço IPv4 do sistema" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "Define a rede para ler o endereço IPv6 do sistema" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" -"Define a origem para ler o endereço IPv4 do sistema, que será enviado ao " -"provedor DDNS" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" -"Define a origem para ler o endereço IPv6 do sistema, que será enviado ao " -"provedor DDNS" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "Define qual endereço IP ‘IPv4/IPv6’ é enviado ao provedor DDNS" - -msgid "Details for" -msgstr "Detalhes para" - -msgid "Directory contains Log files for each running section" -msgstr "Diretório contendo arquivos de Log para cada sessão em execução" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" -"Diretório contendo PID e outras informações de status para cada sessão em " -"execução" - -msgid "Disabled" -msgstr "Desabilitado" - -msgid "Domain" -msgstr "Domínio" - -msgid "Dynamic DNS" -msgstr "DNS Dinâmico" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"O DNS dinâmico permite que o seu roteador possa ser encontrado a partir de " -"um nome fixo, mesmo usando um Endereço IP dinâmico." - -msgid "Enable secure communication with DDNS provider" -msgstr "Habilitar comunicação segura com o provedor DDNS" - -msgid "Enabled" -msgstr "Habilitado" - -msgid "Error" -msgstr "Erro" - -msgid "Error Retry Counter" -msgstr "Contador de Tentativas em Erro" - -msgid "Error Retry Interval" -msgstr "Intervalo de tentativas em Erro" - -msgid "Event Network" -msgstr "Rede de Evento" - -msgid "File" -msgstr "Arquivo" - -msgid "File not found" -msgstr "Arquivo não encontrado" - -msgid "File not found or empty" -msgstr "Arquivo não encontrado ou vazio" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" -"Siga esse link
Você vai encontrar mais dicas para otimizar seu sistema " -"para rodar scripts DDNS com todas as opções" - -msgid "For detailed information about parameter settings look here." -msgstr "" -"Olhe aqui para informações mais detalhadas sobre as configurações de " -"parâmetro" - -msgid "For supported codes look here" -msgstr "Olhe aqui para códigos suportados" - -msgid "Force IP Version" -msgstr "Forçar versão de IP" - -msgid "Force IP Version not supported" -msgstr "Forçar versão de IP não suportado" - -msgid "Force Interval" -msgstr "Forçar intervalo" - -msgid "Force TCP on DNS" -msgstr "Forçar TCP em DNS" - -msgid "Forced IP Version don't matched" -msgstr "Forçar versão de IP não corresponde" - -msgid "Format" -msgstr "Formato" - -msgid "Format: IP or FQDN" -msgstr "Formato: IP ou FQDN" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "GNU Wget usará o IP da rede informada, cURL usará a interface física" - -msgid "Global Settings" -msgstr "Configurações Globais" - -msgid "HTTPS not supported" -msgstr "HTTPS não suportado" - -msgid "Hints" -msgstr "Dicas" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" -"Hostname/FQDN a ser validado, se atualização de IP acontecer ou for " -"necessária" - -msgid "IP address source" -msgstr "Fonte do endereço IP" - -msgid "IP address version" -msgstr "Versão do endereço IP" - -msgid "IPv4-Address" -msgstr "Endereço IPv4" - -msgid "IPv6 address must be given in square brackets" -msgstr "Endereço IPv6 deve estar entre colchetes" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" -"IPv6 não é (completamente) suportado por este sistema
Por favor siga as " -"instruções na página inicial do OpenWrt para habilitar o suporte ao IPv6
ou atualize seu sistema para a última distribuição do OpenWrt" - -msgid "IPv6 not supported" -msgstr "IPv6 não suportado" - -msgid "IPv6-Address" -msgstr "Endereço IPv6" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "Se ambos cURL e GNU Wget estão instalados, Wget é utilizado por padrão" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" -"Se esta sessão do serviço está desabilidade, ele não pôde ser iniciado.
nem da interface LuCI nem do console" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" -"Você deve verificar os certificados do servidor caso estiver utilizando " -"comunicação segura" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" -"Se deseja enviar atualizações para IPv4 e IPv6 você deve definir duas " -"configurações separadas. Ex.: ‘myddns_ipv4’ e ‘myddns_ipv6’" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" -"Em algumas versões do OpenWrt cURL/libcurl é compilada sem suporte a proxy." - -msgid "Info" -msgstr "Informações" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" -"Instale manualmente o pacote ’ca-certificates’ ou certificados necessários " -"no diretório padrão /etc/ssl/certs" - -msgid "Interface" -msgstr "Interface" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" -"Intervalo para checar mudança no IP
Valores abaixo de 5 minutos == 300 " -"segundos não são suportados" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" -"Intervalo para forçar envio de atualizações para o provedor DDNS
Definindo esse parâmetro em 0 irá forçar o script a rodar apenas uma " -"vez>br />Valores menores que 'Check Interval', exceto '0', não são suportados" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" -"Não é recomendado que usuários iniciantes alterem configurações nessa página" - -msgid "Last Update" -msgstr "Última atualização" - -msgid "Loading" -msgstr "Carregando" - -msgid "Log File Viewer" -msgstr "Visualizador de arquivo de log" - -msgid "Log directory" -msgstr "Diretório do log" - -msgid "Log length" -msgstr "Tamanho do log" - -msgid "Log to file" -msgstr "Log para arquivo" - -msgid "Log to syslog" -msgstr "Log para log do sistema" - -msgid "Lookup Hostname" -msgstr "Verificar nome de host" - -msgid "NOT installed" -msgstr "NÃO instalado" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" -"Nem GNU Wget com SSL nem cURL instalado para selecionar uma rede para usar " -"para comunicação" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" -"Nem GNU Wget com SSL nem cURL instalado para suportar atualizações seguras " -"via protocolo HTTPS" - -msgid "Network" -msgstr "Rede" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "Rede na qual os scripts de atualização DDNS serão iniciados" - -msgid "Never" -msgstr "Nunca" - -msgid "Next Update" -msgstr "Próxima atualização" - -msgid "No certificates found" -msgstr "Nenhum certificado encontrado" - -msgid "No data" -msgstr "Sem dados" - -msgid "No logging" -msgstr "Sem registros" - -msgid "Non-public and by default blocked IP's" -msgstr "IPs não públicos e bloqueados por padrão" - -msgid "Notice" -msgstr "Aviso" - -msgid "Number of last lines stored in log files" -msgstr "Número das últimas linhas salvas nos arquivos de log" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "OPCIONAL: Force o uso de apenas comunicação IPv4/IPv6 pura" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "OPCIONAL: Force o uso de TCB em vez do padrão UDP em requisições DNS" - -msgid "OPTIONAL: Network to use for communication" -msgstr "OPCIONAL: Rede para usar para comunicação" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "OPCIONAL: Servidor Proxy para detecção e atualização" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "OPCIONAL: Use servidor DNS não-padrão para detectar 'Registered IP'" - -msgid "On Error the script will retry the failed action after given time" -msgstr "Em Erro, o script irá tentar a ação que falhou após um tempo definido" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" -"Em Erro, o script irá para a execução após um número definido de tentativas" - -msgid "OpenWrt Wiki" -msgstr "Wiki do OpenWRT" - -msgid "Optional Encoded Parameter" -msgstr "Parâmetro Opcionalmente Codificado" - -msgid "Optional Parameter" -msgstr "Parâmetro Opcional" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "Opcional: Substitui [PARAMEND] na URL de atualização" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "Opcional: Substitui [PARAMOPT] na URL de atualização" - -msgid "Overview" -msgstr "Visão Geral" - -msgid "PROXY-Server" -msgstr "servidor PROXY" - -msgid "PROXY-Server not supported" -msgstr "Servidor PROXY não suportado" - -msgid "Password" -msgstr "Senha" - -msgid "Path to CA-Certificate" -msgstr "Caminho para os certificados CA" - -msgid "Please [Save & Apply] your changes first" -msgstr "Por favor antes [Salve e Aplique] suas alterações" - -msgid "Please press [Read] button" -msgstr "Por favor pressione o botão [Ler]" - -msgid "Please update to the current version!" -msgstr "Por favor atualize para a versão atual" - -msgid "Process ID" -msgstr "ID do processo" - -msgid "Read / Reread log file" -msgstr "Ler / Ler novamente o arquivo de log" - -msgid "Really change DDNS provider?" -msgstr "Mudar servidor DDNS?" - -msgid "Registered IP" -msgstr "IP registrado" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "Substitui [DOMAIN] na URL de atualização" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "Substitui [PASSWORD] na URL de atualização" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "Substitui [USERNAME] na URL de atualização" - -msgid "Run once" -msgstr "Rodar apenas uma vez" - -msgid "Script" -msgstr "Script" - -msgid "Show more" -msgstr "Mostrar mais" - -msgid "Software update required" -msgstr "Atualização de software necessária" - -msgid "Specifying a DNS-Server is not supported" -msgstr "Não é suportado especificar um servidor DNS" - -msgid "Start" -msgstr "Iniciar" - -msgid "Start / Stop" -msgstr "Iniciar / Parar" - -msgid "Status directory" -msgstr "Diretório de status" - -msgid "Stopped" -msgstr "Parado" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" -"O pacote 'ddns-scripts' instalado atualmente não suporta todas as " -"configurações disponíveis" - -msgid "The default setting of '0' will retry infinite." -msgstr "A configuração padrão de '0' terá infinitas tentativas" - -msgid "There is no service configured." -msgstr "Não há serviço configurado" - -msgid "Timer Settings" -msgstr "Configurações do Controlador de Tempo" - -msgid "To change global settings click here" -msgstr "Clique aqui para mudar configurações globais" - -msgid "To use cURL activate this option." -msgstr "Ative essa opção para usar cURL" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "Detectada pela URL" - -msgid "Unknown error" -msgstr "Erro desconhecido" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" -"URL a ser usada para atualizar seu provedor DDNS.
Siga as instruções " -"encontradas na página deles." - -msgid "Update error" -msgstr "Erro de atualização" - -msgid "Use HTTP Secure" -msgstr "Usar HTTP Seguro" - -msgid "Use cURL" -msgstr "Usar cURL" - -msgid "User defined script to read systems IP-Address" -msgstr "Script definido pelo usuário para ler endereço IP do sistema" - -msgid "Username" -msgstr "Usuário" - -msgid "Using specific DNS Server not supported" -msgstr "Usar servidor DNS específico não é suportado" - -msgid "Verify" -msgstr "Verificar" - -msgid "Version" -msgstr "Versão" - -msgid "Version Information" -msgstr "Informação de Versão" - -msgid "Waiting for changes to be applied..." -msgstr "Aguardando as alterações serem aplicadas…" - -msgid "Warning" -msgstr "Alerta" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" -"Escreve mensagens detalhadas no arquivo de log. Arquivo será automaticamente " -"truncado." - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -msgstr "" -"Escreve mensagens de log no log do sistema. Erros críticos sempre serão " -"escritos no log do sistema." - -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 "" -"Você deve instalar o pacote 'bind-host' ou 'knot-host' ou 'drill' ou " -"'hostip' caso precise especificar um servidor DNS para detectar seu IP " -"registrado." - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" -"Você deve instalar o pacote 'bind-host' ou 'knot-host' ou 'drill' para " -"requisições DNS." - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "Você deve instalar o pacote 'wget' ou 'curl' ou 'uclient-fetch'." - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" -"Você deve instalar o pacote 'wget' ou 'curl' ou 'uclient-fetch' com " -"'libustream-*ssl'." - -msgid "You should install 'wget' or 'curl' package." -msgstr "Você deve instalar o pacote ‘wget’ ou ‘curl’." - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" -"Você deve instalar o pacote ‘wget’ ou ‘uclient-fetch’ ou substituir libcurl." - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "cURL está instalado, mas libcurl foi compilada sem suporte a proxy" - -msgid "cURL without Proxy Support" -msgstr "cURL sem suporte a proxy" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" -"não pôde detectar IP local. Por favor selecione uma combinação de fonte " -"diferente" - -msgid "can not resolve host:" -msgstr "não pôde resolver host:" - -msgid "config error" -msgstr "erro de configuração" - -msgid "days" -msgstr "dias" - -msgid "directory or path/file" -msgstr "diretório ou caminho/arquivo" - -msgid "either url or script could be set" -msgstr "url ou script pode ser setado" - -msgid "enable here" -msgstr "habilite aqui" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "arquivo ou diretório não encontrado ou não ‘IGNORE’" - -msgid "help" -msgstr "ajuda" - -msgid "hours" -msgstr "horas" - -msgid "installed" -msgstr "instalado" - -msgid "invalid FQDN / required - Sample" -msgstr "FQDN requerido inválido - Exemplo" - -msgid "minimum value '0'" -msgstr "valor mínimo ‘0’" - -msgid "minimum value '1'" -msgstr "valor mínimo ‘1’" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "valor mínimo 5 minutos == 300 segundos" - -msgid "minutes" -msgstr "minutos" - -msgid "missing / required" -msgstr "faltando / necessário" - -msgid "must be greater or equal 'Check Interval'" -msgstr "deve ser maior ou igual ‘Check Interval’" - -msgid "must start with 'http://'" -msgstr "deve iniciar com ‘http://'" - -msgid "nc (netcat) can not connect" -msgstr "nc (netcat) não pôde conectar" - -msgid "never" -msgstr "nunca" - -msgid "no data" -msgstr "sem dados" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "não encontrado ou não executável - Exemplo: ‘/caminho/para/script.sh'" - -msgid "nslookup can not resolve host" -msgstr "nslookup não pôde resolver o host" - -msgid "or" -msgstr "ou" - -msgid "or higher" -msgstr "ou maior" - -msgid "please disable" -msgstr "por favor desabilite" - -msgid "please remove entry" -msgstr "por favor remova a entrada" - -msgid "please select 'IPv4' address version" -msgstr "por favor selecione a versão de endereço ‘IPv4’" - -msgid "please select 'IPv4' address version in" -msgstr "por favor selecione a versão de endereço ‘IPv4’ em" - -msgid "please set to 'default'" -msgstr "por favor defina como ‘default’" - -msgid "proxy port missing" -msgstr "porta de proxy faltando" - -msgid "required" -msgstr "necessário" - -msgid "seconds" -msgstr "segundos" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" -"para rodar HTTPS sem verificação dos certificados do servidor (não seguro)" - -msgid "unknown error" -msgstr "erro desconhecido" - -msgid "unspecific error" -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." diff --git a/package/luci/applications/luci-app-ddns/po/pt/ddns.po b/package/luci/applications/luci-app-ddns/po/pt/ddns.po deleted file mode 100644 index 1a00efbb75..0000000000 --- a/package/luci/applications/luci-app-ddns/po/pt/ddns.po +++ /dev/null @@ -1,731 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2013-05-31 23:52+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -#, fuzzy -msgid "Custom update-URL" -msgstr "URL para actualização personalizada" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "DNS Dinâmico" - -#, fuzzy -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"O DNS dinâmico permite que o seu router possa ser encontrado a partir de um " -"hostname fixo, mesmo usando um Endereço IP dinâmico." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Interface" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Rede" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Password" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Nome de Utilizador" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/ro/ddns.po b/package/luci/applications/luci-app-ddns/po/ro/ddns.po deleted file mode 100644 index 93424ad0d0..0000000000 --- a/package/luci/applications/luci-app-ddns/po/ro/ddns.po +++ /dev/null @@ -1,730 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2013-09-25 19:11+0200\n" -"Last-Translator: Mihai \n" -"Language-Team: \n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "Adresa particularizata de actualizare" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "DNS dinamic" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"DNS-ul dinamic permite accesarea routerului printr-un nume dns fix legat de " -"adresa dinamic IP." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Interfata" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Retea" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Parola" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Utilizator" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/ru/ddns.po b/package/luci/applications/luci-app-ddns/po/ru/ddns.po deleted file mode 100644 index a41d1f498b..0000000000 --- a/package/luci/applications/luci-app-ddns/po/ru/ddns.po +++ /dev/null @@ -1,731 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2012-11-01 21:54+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 1.8.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "Пользовательский URL обновления" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "Динамический DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"Динамический DNS позволяет вашему маршрутизатору иметь постоянное доменное " -"имя при динамическом IP-адресе." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Интерфейс" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Сеть" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Пароль" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Имя пользователя" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/sv/ddns.po b/package/luci/applications/luci-app-ddns/po/sv/ddns.po deleted file mode 100644 index 2e63ee1bde..0000000000 --- a/package/luci/applications/luci-app-ddns/po/sv/ddns.po +++ /dev/null @@ -1,724 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "&" -msgstr "&" - -msgid "-- custom --" -msgstr "-- anpassad --" - -msgid "-- default --" -msgstr "-- standard --" - -msgid "Advanced Settings" -msgstr "Avancerade inställningar" - -msgid "Allow non-public IP's" -msgstr "Tillåt icke-publika IP-adresser" - -msgid "Applying changes" -msgstr "Verkställer ändringar" - -msgid "Basic Settings" -msgstr "Standardinställningar" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" -"Här nedanför finns det en lista över konfigurerade DDNS-konfigurationer och deras nuvarande skick." - -msgid "Bind Network" -msgstr "Bind samman nätverk" - -msgid "Binding to a specific network not supported" -msgstr "Att binda samman med ett specifikt nätverk stöds inte" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "Byt operatör" - -msgid "Check Interval" -msgstr "Kontroll-intervall" - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "Config error" -msgstr "Konfigurationsfel" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "Nuvarande inställning" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "Anpassad webbadress för uppdatering" - -msgid "Custom update-script" -msgstr "Anpassat uppdateringsskript" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "DNS-server" - -msgid "Date format" -msgstr "Datumformat" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "Detaljer för" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "Inaktivera" - -msgid "Domain" -msgstr "Domän" - -msgid "Dynamic DNS" -msgstr "Dynamisk DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "Aktiverad" - -msgid "Error" -msgstr "Fel" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "Fil" - -msgid "File not found" -msgstr "Filen hittades inte" - -msgid "File not found or empty" -msgstr "Filen hittades inte eller tom" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "Tvinga IP-version" - -msgid "Force IP Version not supported" -msgstr "Påtvingad IP-version stöds inte" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "Format" - -msgid "Format: IP or FQDN" -msgstr "Format: IP eller FQDN" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" -"GNU Wget kommer att använda IP-adressen för det angivna nätverket, cURL " -"kommer att använda det fysiska gränssnittet." - -msgid "Global Settings" -msgstr "Globala inställningar" - -msgid "HTTPS not supported" -msgstr "HTTPS stöds inte" - -msgid "Hints" -msgstr "Ledtrådar" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "IP-adressens källa" - -msgid "IP address version" -msgstr "Version för IP-adress" - -msgid "IPv4-Address" -msgstr "IPv4-adress" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "IPv6 stöds inte" - -msgid "IPv6-Address" -msgstr "IPv6-adress" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" -"Om både cURL och GNU Wget är installerade så används Wget som standard." - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "Info" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Gränssnitt" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" -"Det är INTE rekommenderat för vanliga användare att ändra inställningar på " -"den här sidan." - -msgid "Last Update" -msgstr "Senaste uppdateringen" - -msgid "Loading" -msgstr "Laddar" - -msgid "Log File Viewer" -msgstr "Visare för loggfil" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "Loggens längd" - -msgid "Log to file" -msgstr "Logga till fil" - -msgid "Log to syslog" -msgstr "Logga till syslog" - -msgid "Lookup Hostname" -msgstr "Kolla upp värdnamn" - -msgid "NOT installed" -msgstr "INTE installerad" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Nätverk" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "Aldrig" - -msgid "Next Update" -msgstr "Nästa uppdatering" - -msgid "No certificates found" -msgstr "Inga ceritifikat hittades" - -msgid "No data" -msgstr "Ingen data" - -msgid "No logging" -msgstr "Ingen loggning" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "Wiki för OpenWrt" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "Valfri parameter" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "PROXY-server" - -msgid "PROXY-Server not supported" -msgstr "PROXY-servern stöds inte" - -msgid "Password" -msgstr "Lösenord" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "Vänligen [Spara & Verkställ] dina ändringar först" - -msgid "Please press [Read] button" -msgstr "Vänligen tryck på [Läs]-knappen" - -msgid "Please update to the current version!" -msgstr "Vänligen uppdatera till den senaste versionen!" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "Läs / Läs om loggfilen" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "Registrerad IP" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "Kör en gång" - -msgid "Script" -msgstr "Skript" - -msgid "Show more" -msgstr "Visa mer" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "Starta" - -msgid "Start / Stop" -msgstr "Starta / Stoppa" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "Stoppad" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "Det finns ingen tjänst inställd." - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "Klicka här för att ändra på globala inställningar" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "Webbadress" - -msgid "URL to detect" -msgstr "Webbadress att upptäcka" - -msgid "Unknown error" -msgstr "Okänt fel" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "Uppdateringsfel" - -msgid "Use HTTP Secure" -msgstr "Använd Säker HTTP" - -msgid "Use cURL" -msgstr "Använd cURL" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Användarnamn" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "Verkställ" - -msgid "Version" -msgstr "Version" - -msgid "Version Information" -msgstr "Information om versionen" - -msgid "Waiting for changes to be applied..." -msgstr "Väntar på att ändringarna ska bli verkställda..." - -msgid "Warning" -msgstr "Varning" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "cURL utan Proxy-stöd" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" -"kan inte upptäcka lokal IP-adress. Vänligen välj en annorlunda Käll-" -"kombination" - -msgid "can not resolve host:" -msgstr "kan inte avgöra värd:" - -msgid "config error" -msgstr "konfigurationsfel" - -msgid "days" -msgstr "dagar" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "kunde varken fastställa webbadress eller skript" - -msgid "enable here" -msgstr "aktivera här" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "hjälp" - -msgid "hours" -msgstr "timmar" - -msgid "installed" -msgstr "installerad" - -msgid "invalid FQDN / required - Sample" -msgstr "ogiltig FQDN / behövs - Urval" - -msgid "minimum value '0'" -msgstr "minimalt värde '0'" - -msgid "minimum value '1'" -msgstr "minimalt värde '1'" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "minimalt värde 5 minuter == 300 sekunder" - -msgid "minutes" -msgstr "minutrar" - -msgid "missing / required" -msgstr "saknas / behövs" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "måste börja med 'http://" - -msgid "nc (netcat) can not connect" -msgstr "nc (netcat) kan inte ansluta" - -msgid "never" -msgstr "aldrig" - -msgid "no data" -msgstr "ingen data" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "eller" - -msgid "or higher" -msgstr "eller större" - -msgid "please disable" -msgstr "vänligen inaktivera" - -msgid "please remove entry" -msgstr "vänligen ta bort inmatningen" - -msgid "please select 'IPv4' address version" -msgstr "vänligen välj version för 'IPv4'-adress" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "behövs" - -msgid "seconds" -msgstr "sekunder" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "för att köra HTTPS utan verifiering av server-certifikaten (osäkert)" - -msgid "unknown error" -msgstr "okänt fel" - -msgid "unspecific error" -msgstr "ospecifierat fel" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "använd värdnamn, FQDN, IPv4- eller IPv6-adress" diff --git a/package/luci/applications/luci-app-ddns/po/templates/ddns.pot b/package/luci/applications/luci-app-ddns/po/templates/ddns.pot deleted file mode 100644 index 194bf816a1..0000000000 --- a/package/luci/applications/luci-app-ddns/po/templates/ddns.pot +++ /dev/null @@ -1,716 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/tr/ddns.po b/package/luci/applications/luci-app-ddns/po/tr/ddns.po deleted file mode 100644 index be3b1e572d..0000000000 --- a/package/luci/applications/luci-app-ddns/po/tr/ddns.po +++ /dev/null @@ -1,727 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2013-11-25 14:27+0200\n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Arabirim" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Ağ" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Parola" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Kullanıcı adı" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/uk/ddns.po b/package/luci/applications/luci-app-ddns/po/uk/ddns.po deleted file mode 100644 index 33c077e878..0000000000 --- a/package/luci/applications/luci-app-ddns/po/uk/ddns.po +++ /dev/null @@ -1,732 +0,0 @@ -# Generated from applications/luci-ddns/luasrc/model/cbi/ddns/ddns.lua -# -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2012-12-29 12:47+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: \n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -msgid "Custom update-URL" -msgstr "Користувацький URL оновлення" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "Динамічний DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"Динамічний DNS дозволяє вашому маршрутизатору бути доступним за фіксованим " -"доменним ім'ям, маючи динамічну IP-адресу." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "Інтерфейс" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "Мережа" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "Пароль" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "Ім'я користувача" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/vi/ddns.po b/package/luci/applications/luci-app-ddns/po/vi/ddns.po deleted file mode 100644 index 9d9ee070ee..0000000000 --- a/package/luci/applications/luci-app-ddns/po/vi/ddns.po +++ /dev/null @@ -1,730 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2009-08-12 18:06+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: \n" -"Language: vi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "&" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- default --" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow non-public IP's" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "" - -msgid "Bind Network" -msgstr "" - -msgid "Binding to a specific network not supported" -msgstr "" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "" - -msgid "Casual users should not change this setting" -msgstr "" - -msgid "Change provider" -msgstr "" - -msgid "Check Interval" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Config error" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "" - -msgid "Current setting" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "" - -#, fuzzy -msgid "Custom update-URL" -msgstr "Tùy chỉnh cập nhật - URL" - -msgid "Custom update-script" -msgstr "" - -msgid "DDNS Autostart disabled" -msgstr "" - -msgid "DDNS Client Configuration" -msgstr "" - -msgid "DDNS Client Documentation" -msgstr "" - -msgid "DDNS Service provider" -msgstr "" - -msgid "DNS requests via TCP not supported" -msgstr "" - -msgid "DNS-Server" -msgstr "" - -msgid "Date format" -msgstr "" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "" - -msgid "Details for" -msgstr "" - -msgid "Directory contains Log files for each running section" -msgstr "" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Domain" -msgstr "" - -msgid "Dynamic DNS" -msgstr "Dynamic DNS" - -#, fuzzy -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "" -"Dynamic DNS cho phép bộ định tuyến có thể được đạt đến với một hostname cố " -"định, trong khi có một địa chỉ AP thay đổi năng động." - -msgid "Enable secure communication with DDNS provider" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Error Retry Counter" -msgstr "" - -msgid "Error Retry Interval" -msgstr "" - -msgid "Event Network" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File not found" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" - -msgid "For detailed information about parameter settings look here." -msgstr "" - -msgid "For supported codes look here" -msgstr "" - -msgid "Force IP Version" -msgstr "" - -msgid "Force IP Version not supported" -msgstr "" - -msgid "Force Interval" -msgstr "" - -msgid "Force TCP on DNS" -msgstr "" - -msgid "Forced IP Version don't matched" -msgstr "" - -msgid "Format" -msgstr "" - -msgid "Format: IP or FQDN" -msgstr "" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "HTTPS not supported" -msgstr "" - -msgid "Hints" -msgstr "" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "" - -msgid "IP address source" -msgstr "" - -msgid "IP address version" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv6 address must be given in square brackets" -msgstr "" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" - -msgid "IPv6 not supported" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" - -msgid "If using secure communication you should verify server certificates!" -msgstr "" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "" - -msgid "Info" -msgstr "" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "" - -msgid "Last Update" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log directory" -msgstr "" - -msgid "Log length" -msgstr "" - -msgid "Log to file" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Lookup Hostname" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Next Update" -msgstr "" - -msgid "No certificates found" -msgstr "" - -msgid "No data" -msgstr "" - -msgid "No logging" -msgstr "" - -msgid "Non-public and by default blocked IP's" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Number of last lines stored in log files" -msgstr "" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "" - -msgid "OPTIONAL: Network to use for communication" -msgstr "" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "" - -msgid "On Error the script will retry the failed action after given time" -msgstr "" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "" - -msgid "OpenWrt Wiki" -msgstr "" - -msgid "Optional Encoded Parameter" -msgstr "" - -msgid "Optional Parameter" -msgstr "" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PROXY-Server" -msgstr "" - -msgid "PROXY-Server not supported" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Please [Save & Apply] your changes first" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Process ID" -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Really change DDNS provider?" -msgstr "" - -msgid "Registered IP" -msgstr "" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "" - -msgid "Run once" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Show more" -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Specifying a DNS-Server is not supported" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Status directory" -msgstr "" - -msgid "Stopped" -msgstr "" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "" - -msgid "The default setting of '0' will retry infinite." -msgstr "" - -msgid "There is no service configured." -msgstr "" - -msgid "Timer Settings" -msgstr "" - -msgid "To change global settings click here" -msgstr "" - -msgid "To use cURL activate this option." -msgstr "" - -msgid "URL" -msgstr "" - -msgid "URL to detect" -msgstr "" - -msgid "Unknown error" -msgstr "" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" - -msgid "Update error" -msgstr "" - -msgid "Use HTTP Secure" -msgstr "" - -msgid "Use cURL" -msgstr "" - -msgid "User defined script to read systems IP-Address" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "Using specific DNS Server not supported" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "" - -msgid "You should install 'wget' or 'curl' package." -msgstr "" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "" - -msgid "cURL without Proxy Support" -msgstr "" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "" - -msgid "can not resolve host:" -msgstr "" - -msgid "config error" -msgstr "" - -msgid "days" -msgstr "" - -msgid "directory or path/file" -msgstr "" - -msgid "either url or script could be set" -msgstr "" - -msgid "enable here" -msgstr "" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hours" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "invalid FQDN / required - Sample" -msgstr "" - -msgid "minimum value '0'" -msgstr "" - -msgid "minimum value '1'" -msgstr "" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "missing / required" -msgstr "" - -msgid "must be greater or equal 'Check Interval'" -msgstr "" - -msgid "must start with 'http://'" -msgstr "" - -msgid "nc (netcat) can not connect" -msgstr "" - -msgid "never" -msgstr "" - -msgid "no data" -msgstr "" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "" - -msgid "nslookup can not resolve host" -msgstr "" - -msgid "or" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "please disable" -msgstr "" - -msgid "please remove entry" -msgstr "" - -msgid "please select 'IPv4' address version" -msgstr "" - -msgid "please select 'IPv4' address version in" -msgstr "" - -msgid "please set to 'default'" -msgstr "" - -msgid "proxy port missing" -msgstr "" - -msgid "required" -msgstr "" - -msgid "seconds" -msgstr "" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "" - -msgid "unknown error" -msgstr "" - -msgid "unspecific error" -msgstr "" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "" diff --git a/package/luci/applications/luci-app-ddns/po/zh-cn/ddns.po b/package/luci/applications/luci-app-ddns/po/zh-cn/ddns.po deleted file mode 100644 index f004f8282f..0000000000 --- a/package/luci/applications/luci-app-ddns/po/zh-cn/ddns.po +++ /dev/null @@ -1,772 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2017-10-29 14:14+0800\n" -"Last-Translator: Yangfl \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: Gtranslator 2.91.7\n" -"Language-Team: \n" - -msgid "&" -msgstr "&" - -msgid "-- custom --" -msgstr "-- 自定义 --" - -msgid "-- default --" -msgstr "-- 默认 --" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Allow non-public IP's" -msgstr "允许非公网 IP" - -msgid "Applying changes" -msgstr "正在应用更改" - -msgid "Basic Settings" -msgstr "基础设置" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "以下是一个能够让您的系统不受限制地进行动态 DNS 更新设置的提示列表" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "以下是当前已经配置好的 DDNS 设置项列表以及它们的当前状态。" - -msgid "Bind Network" -msgstr "使用的接口" - -msgid "Binding to a specific network not supported" -msgstr "不支持绑定到一个指定的网络" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" -"与 DDNS 供应商通讯时,BusyBox 的 nslookup 和 Wget 不支持设置特定的 IP 协议版" -"本。" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" -"向 DNS 服务器查询时,BusyBox 的 nslookup 和 hostip 不支持使用 TCP 而不是默认" -"的 UDP!" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "当前编译版本中 BusyBox 的 nslookup 在处理给定的 DNS 服务器不正确!" - -msgid "Casual users should not change this setting" -msgstr "普通用户不应该改变这个设置" - -msgid "Change provider" -msgstr "更改提供者" - -msgid "Check Interval" -msgstr "检查时间周期" - -msgid "Collecting data..." -msgstr "正在收集数据..." - -msgid "Config error" -msgstr "配置错误" - -msgid "Configuration" -msgstr "设置" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "在这里修改动态 DNS 服务的详细配置。" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "在这里修改选择的 DDNS 服务的详细配置。" - -msgid "Current setting" -msgstr "当前设置" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" -"现在,DDNS 更新在开机或者接口动作时不会被触发。
如果您手工运行 DDNS 脚本" -"的话(例如使用 cron 时把 force_interval 设置为 0),这是默认设置。" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" -"现在,DDNS 更新在开机或者接口动作时不会被触发。
您可以在这里开始/停止每" -"一个设置的条目。它在下次重启之前一直有效。" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "用来更新动态 DNS 的自定义脚本。" - -msgid "Custom update-URL" -msgstr "自定义更新 URL" - -msgid "Custom update-script" -msgstr "自定义更新脚本" - -msgid "DDNS Autostart disabled" -msgstr "DDNS 自动启动已禁用。" - -msgid "DDNS Client Configuration" -msgstr "DDNS 客户端配置" - -msgid "DDNS Client Documentation" -msgstr "DDNS 客户端文档" - -msgid "DDNS Service provider" -msgstr "DDNS 服务提供商" - -msgid "DNS requests via TCP not supported" -msgstr "不支持使用 TCP 进行 DNS 解析" - -msgid "DNS-Server" -msgstr "DNS-服务器" - -msgid "Date format" -msgstr "日期格式" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "设定用来读取系统 IPv4 地址的网页" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "设定用来读取系统 IPv6 地址的网页" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "设定用来读取系统 IP 地址的接口" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "设定用来读取系统 IPv4 地址的网络" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "设定用来读取系统 IPv6 地址的网络" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "设定 IPv4 地址的来源。这将会被发送给 DDNS 提供商" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "设定 IPv6 地址的来源。这将会被发送给 DDNS 提供商" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "设定哪一个 IP 地址(IPv4 或 IPv6)会被发送给 DDNS 提供商" - -msgid "Details for" -msgstr "详情" - -msgid "Directory contains Log files for each running section" -msgstr "保存每一个运行中的设置的运行日志的目录" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "保存每个运行中的设置的PID以及其它状态信息的目录" - -msgid "Disabled" -msgstr "已禁用" - -msgid "Domain" -msgstr "域名" - -msgid "Dynamic DNS" -msgstr "动态 DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "动态 DNS 允许为拥有动态 IP 的主机配置一个固定的可访问域名。" - -msgid "Enable secure communication with DDNS provider" -msgstr "启用安全连接与 DDNS 提供商联系" - -msgid "Enabled" -msgstr "已启用" - -msgid "Error" -msgstr "错误" - -msgid "Error Retry Counter" -msgstr "错误重试计数" - -msgid "Error Retry Interval" -msgstr "错误重试间隔" - -msgid "Event Network" -msgstr "事件网络" - -msgid "File" -msgstr "文件" - -msgid "File not found" -msgstr "文件未找到" - -msgid "File not found or empty" -msgstr "文件未找到或为空" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" -"打开这个链接
您将会得到更多关于如何通过所有设置项优化您的系统以运行 " -"DDNS 脚本的提示" - -msgid "For detailed information about parameter settings look here." -msgstr "请看这里获得关于参数设置的详细信息" - -msgid "For supported codes look here" -msgstr "查看这里获取支持的编码" - -msgid "Force IP Version" -msgstr "强制设定 IP 版本" - -msgid "Force IP Version not supported" -msgstr "不支持强制设定 IP 版本" - -msgid "Force Interval" -msgstr "设定周期" - -msgid "Force TCP on DNS" -msgstr "强制使用 TCP 进行 DNS 查询" - -msgid "Forced IP Version don't matched" -msgstr "强制设定的 IP 版本不匹配" - -msgid "Format" -msgstr "格式" - -msgid "Format: IP or FQDN" -msgstr "格式:IP 或者 FQDN" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "GNU Wget 将会使用给定的网络的 IP 地址,而 cURL 将会使用物理接口。" - -msgid "Global Settings" -msgstr "全局设置" - -msgid "HTTPS not supported" -msgstr "不支持 HTTPS" - -msgid "Hints" -msgstr "提示" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "主机名/FQDN 验证,如果 IP 更新发生或必要" - -msgid "IP address source" -msgstr "IP 地址来源" - -msgid "IP address version" -msgstr "IP 地址版本" - -msgid "IPv4-Address" -msgstr "IPv4 地址" - -msgid "IPv6 address must be given in square brackets" -msgstr "IPv6 地址必须填写在中括号(\"[ ]\")内" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" -"当前系统暂时不能(完整地)支持 IPv6
请查看 OpenWrt 首页的介绍以启用 " -"IPv6 支持
或者更新您的系统到最新 OpenWrt 版本" - -msgid "IPv6 not supported" -msgstr "IPv6 不被支持" - -msgid "IPv6-Address" -msgstr "IPv6 地址" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "如果 cURL 和 GNU Wget 同时被安装,那么 Wget 将会被优先使用。" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" -"如果服务配置被禁用,那么它将不能被启动。
无论是通过 LuCI 页面或者是通过" -"终端。" - -msgid "If using secure communication you should verify server certificates!" -msgstr "如果使用安全通信,您应该验证服务器证书!" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" -"如果您需要同时更新 IPv4 和 IPv6 地址,您需要单独添加两个配置项(例" -"如'myddns_ipv4'和'myddns_ipv6')" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "OpenWrt 中,cURL/libcurl 的某些版本编译时没有启用代理服务器支持" - -msgid "Info" -msgstr "信息" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" -"手动将“ca-certificates”包或需要的证书安装到 /etc/ssl/certs 的默认目录中" - -msgid "Interface" -msgstr "接口" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "检查 IP 是否改变的时间隔
不支持小于 5 分钟(300 秒)的数值。" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" -"强制向提供商更新 DDNS 的时间周期
将这个参数设置为 0 则会让脚本仅执行一次" -"
不支持小于\"检查时间周期\"的数值(除了 0)。" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "强烈不建议初次使用的用户修改本页设定。" - -msgid "Last Update" -msgstr "上次更新" - -msgid "Loading" -msgstr "加载中" - -msgid "Log File Viewer" -msgstr "日志查看器" - -msgid "Log directory" -msgstr "日志目录" - -msgid "Log length" -msgstr "日志长度" - -msgid "Log to file" -msgstr "把日志记录到文件" - -msgid "Log to syslog" -msgstr "把日志记录到系统日志" - -msgid "Lookup Hostname" -msgstr "查询主机名" - -msgid "NOT installed" -msgstr "未安装" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "包含 SSL 支持的 GNU Wget 或者 cURL 均未安装,无法选择网络用于通信。" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" -"包含 SSL 支持的 GNU Wget 或者 cURL 均未安装,无法通过 HTTPS 协议进行安全的更" -"新。" - -msgid "Network" -msgstr "网络" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "DDNS 更新脚本将会运行于该网络" - -msgid "Never" -msgstr "从不" - -msgid "Next Update" -msgstr "下次更新" - -msgid "No certificates found" -msgstr "找不到证书" - -msgid "No data" -msgstr "无数据" - -msgid "No logging" -msgstr "无日志" - -msgid "Non-public and by default blocked IP's" -msgstr "非公网 IP 以及默认被锁定的 IP" - -msgid "Notice" -msgstr "提示" - -msgid "Number of last lines stored in log files" -msgstr "日志文件中的最后几行" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "可选:强制仅使用 IPv4/IPv6 通信。" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "可选:强制使用 TCP 而非 UDP 请求 DNS。" - -msgid "OPTIONAL: Network to use for communication" -msgstr "可选:用于通信的网络" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "可选:用于检测以及更新的代理服务器。" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "可选:使用非默认 DNS 服务器检测\"已注册的 IP 地址\"。" - -msgid "On Error the script will retry the failed action after given time" -msgstr "当出错时,脚本将会重试失败的动作的次数" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "当出错时,脚本将会重试该次数之后退出" - -msgid "OpenWrt Wiki" -msgstr "OpenWrt Wiki" - -msgid "Optional Encoded Parameter" -msgstr "可选编码参数" - -msgid "Optional Parameter" -msgstr "可选参数" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "可选:替换更新 URL(已编码 URL)中的 [PARAMENC]" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "可选:替换更新 URL(未编码 URL)中的 [PARAMENC]" - -msgid "Overview" -msgstr "总览" - -msgid "PROXY-Server" -msgstr "代理服务器" - -msgid "PROXY-Server not supported" -msgstr "不支持代理服务器" - -msgid "Password" -msgstr "密码" - -msgid "Path to CA-Certificate" -msgstr "CA 证书路径" - -msgid "Please [Save & Apply] your changes first" -msgstr "请先保存并应用您的设置" - -msgid "Please press [Read] button" -msgstr "请按下\"读取\"按钮" - -msgid "Please update to the current version!" -msgstr "请更新到最新版本!" - -msgid "Process ID" -msgstr "进程 ID" - -msgid "Read / Reread log file" -msgstr "读取/重新读取日志文件" - -msgid "Really change DDNS provider?" -msgstr "确定更改 DDNS 提供商吗?" - -msgid "Registered IP" -msgstr "已注册的 IP 地址" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "替换更新 URL 中的 [DOMAIN]" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "替换更新 URL(已编码 URL)中的 [PASSWORD]" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "替换更新 URL(已编码 URL)中的 [USERNAME]" - -msgid "Run once" -msgstr "运行一次" - -msgid "Script" -msgstr "脚本" - -msgid "Show more" -msgstr "查看更多" - -msgid "Software update required" -msgstr "需要进行软件更新" - -msgid "Specifying a DNS-Server is not supported" -msgstr "不支持指定 DNS 服务器" - -msgid "Start" -msgstr "启动" - -msgid "Start / Stop" -msgstr "启动 / 停止" - -msgid "Status directory" -msgstr "状态目录" - -msgid "Stopped" -msgstr "已停止" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "当前已安装的'ddns-scripts'软件包暂不支持所有可用设置项" - -msgid "The default setting of '0' will retry infinite." -msgstr "默认设置“0”将无限重试。" - -msgid "There is no service configured." -msgstr "没有已经配置好的服务项" - -msgid "Timer Settings" -msgstr "计时器设定" - -msgid "To change global settings click here" -msgstr "点击这里更改全局设置" - -msgid "To use cURL activate this option." -msgstr "选中此项以使用 cURL" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "用于检测的 URL" - -msgid "Unknown error" -msgstr "未知错误" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" -"DDNS 提供商用于更新 DDNS 的 URL。
跟随教程,您可以在它们的网站上找到这" -"个 URL。" - -msgid "Update error" -msgstr "更新错误" - -msgid "Use HTTP Secure" -msgstr "使用 HTTPS" - -msgid "Use cURL" -msgstr "使用 cURL" - -msgid "User defined script to read systems IP-Address" -msgstr "使用设定的脚本来读取系统 IP 地址" - -msgid "Username" -msgstr "用户名" - -msgid "Using specific DNS Server not supported" -msgstr "不支持使用特定的 DNS 服务器" - -msgid "Verify" -msgstr "验证" - -msgid "Version" -msgstr "版本" - -msgid "Version Information" -msgstr "版本信息" - -msgid "Waiting for changes to be applied..." -msgstr "正在应用更改..." - -msgid "Warning" -msgstr "等待" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "向日志中写入详细信息。文件将自动缩小。" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" -"如果您需要指定 DNS 服务器来检测您注册的 IP,您应该安装“bind-host”或“knot-" -"host”或“drill”或“hostip”软件包。" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "您应该为 DNS 请求安装“bind-host”或“knot-host”或“drill”软件包。" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "您应该安装“wget”或“curl”或“uclient-fetch”软件包。" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "您应该安装“wget”或“curl”或“uclient-fetch”,及“libustream-*ssl”软件包。" - -msgid "You should install 'wget' or 'curl' package." -msgstr "您应该安装“wget”或“curl”软件包。" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "您应该安装“wget”或“uclient-fetch”软件包,或替换 libcurl。" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "cURL 已经安装,但是 libcurl 编译时没有启用代理支持。" - -msgid "cURL without Proxy Support" -msgstr "cURL 没有包含代理支持" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "无法确定本地 IP。请更换 IP 来源。" - -msgid "can not resolve host:" -msgstr "无法解析主机:" - -msgid "config error" -msgstr "配置错误" - -msgid "days" -msgstr "天" - -msgid "directory or path/file" -msgstr "目录或者到文件的路径" - -msgid "either url or script could be set" -msgstr "接受 URL 或者脚本" - -msgid "enable here" -msgstr "在这里启用" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "文件或目录未找到或未\"被忽视\"" - -msgid "help" -msgstr "帮助" - -msgid "hours" -msgstr "小时" - -msgid "installed" -msgstr "已安装" - -msgid "invalid FQDN / required - Sample" -msgstr "FQDN 无效 / 必需 - 示例" - -msgid "minimum value '0'" -msgstr "最小值 0" - -msgid "minimum value '1'" -msgstr "最小值 1" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "最小值为 5 分钟(300 秒)" - -msgid "minutes" -msgstr "分钟" - -msgid "missing / required" -msgstr "必须填写" - -msgid "must be greater or equal 'Check Interval'" -msgstr "必须大于或等于\"检查时间周期\"" - -msgid "must start with 'http://'" -msgstr "必须以'http://'开头" - -msgid "nc (netcat) can not connect" -msgstr "nc(netcat)不可连接" - -msgid "never" -msgstr "从不" - -msgid "no data" -msgstr "无数据" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "未找到或者不可执行 - 示例:“/path/to/script.sh”" - -msgid "nslookup can not resolve host" -msgstr "nslookup 不能解析主机" - -msgid "or" -msgstr "或者" - -msgid "or higher" -msgstr "或者更大" - -msgid "please disable" -msgstr "请禁用" - -msgid "please remove entry" -msgstr "请移除该字段" - -msgid "please select 'IPv4' address version" -msgstr "请设定 IPv4 地址" - -msgid "please select 'IPv4' address version in" -msgstr "请设定 IPv4 地址于" - -msgid "please set to 'default'" -msgstr "请设置为\"默认\"" - -msgid "proxy port missing" -msgstr "代理端口未填" - -msgid "required" -msgstr "必须填写" - -msgid "seconds" -msgstr "秒" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "使用 HTTPS 但不检查服务器证书(不安全)" - -msgid "unknown error" -msgstr "未知错误" - -msgid "unspecific error" -msgstr "未指定的错误" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "使用主机名或 IPv4/IPv6 地址" - -#~ msgid "" -#~ "Neither GNU Wget with SSL nor cURL installed to support updates via HTTPS " -#~ "protocol." -#~ msgstr "包含SSL支持的GNU Wget或者cURL均未被安装.无法使用HTTPS更新DDNS" - -#~ msgid "You should install BIND host package for DNS requests." -#~ msgstr "您需要安装BIND以请求DNS记录." - -#~ msgid "You should install GNU Wget with SSL (preferred) or cURL package." -#~ msgstr "您需要安装包含SSL支持的GNU Wget(推荐)或是cURL软件包." - -#~ msgid "You should install GNU Wget with SSL or cURL package." -#~ msgstr "您需要安装包含SSL支持的GNU Wget或是cURL软件包." - -#~ msgid "You should install GNU Wget with SSL or replace libcurl." -#~ msgstr "您需要安装包含SSL支持的GNU Wget或替换libcurl." diff --git a/package/luci/applications/luci-app-ddns/po/zh-tw/ddns.po b/package/luci/applications/luci-app-ddns/po/zh-tw/ddns.po deleted file mode 100644 index f378b39738..0000000000 --- a/package/luci/applications/luci-app-ddns/po/zh-tw/ddns.po +++ /dev/null @@ -1,772 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: luci-app-ddns 2.4.0-1\n" -"POT-Creation-Date: 2016-01-30 11:07+0100\n" -"PO-Revision-Date: 2017-10-29 14:14+0800\n" -"Last-Translator: Yangfl \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" -"Language-Team: \n" - -msgid "&" -msgstr "&" - -msgid "-- custom --" -msgstr "-- 自定義 --" - -msgid "-- default --" -msgstr "-- 預設 --" - -msgid "Advanced Settings" -msgstr "高階設定" - -msgid "Allow non-public IP's" -msgstr "允許非公網 IP" - -msgid "Applying changes" -msgstr "正在應用更改" - -msgid "Basic Settings" -msgstr "基礎設定" - -msgid "" -"Below a list of configuration tips for your system to run Dynamic DNS " -"updates without limitations" -msgstr "以下是一個能夠讓您的系統不受限制地進行動態 DNS 更新設定的提示列表" - -msgid "" -"Below is a list of configured DDNS configurations and their current state." -msgstr "以下是當前已經配置好的 DDNS 設定項列表以及它們的當前狀態。" - -msgid "Bind Network" -msgstr "使用的介面" - -msgid "Binding to a specific network not supported" -msgstr "不支援繫結到一個指定的網路" - -msgid "" -"BusyBox's nslookup and Wget do not support to specify the IP version to use " -"for communication with DDNS Provider!" -msgstr "" -"與 DDNS 供應商通訊時,BusyBox 的 nslookup 和 Wget 不支援設定特定的 IP 協議版" -"本。" - -msgid "" -"BusyBox's nslookup and hostip do not support to specify to use TCP instead " -"of default UDP when requesting DNS server!" -msgstr "" -"向 DNS 伺服器查詢時,BusyBox 的 nslookup 和 hostip 不支援使用 TCP 而不是預設" -"的 UDP!" - -msgid "" -"BusyBox's nslookup in the current compiled version does not handle given DNS " -"Servers correctly!" -msgstr "當前編譯版本中 BusyBox 的 nslookup 在處理給定的 DNS 伺服器不正確!" - -msgid "Casual users should not change this setting" -msgstr "普通使用者不應該改變這個設定" - -msgid "Change provider" -msgstr "更改提供者" - -msgid "Check Interval" -msgstr "檢查時間週期" - -msgid "Collecting data..." -msgstr "正在收集資料..." - -msgid "Config error" -msgstr "配置錯誤" - -msgid "Configuration" -msgstr "設定" - -msgid "" -"Configure here the details for all Dynamic DNS services including this LuCI " -"application." -msgstr "在這裡修改動態 DNS 服務的詳細配置。" - -msgid "Configure here the details for selected Dynamic DNS service." -msgstr "在這裡修改選擇的 DDNS 服務的詳細配置。" - -msgid "Current setting" -msgstr "當前設定" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
This is the default if you run DDNS scripts by yourself (i.e. via cron with " -"force_interval set to '0')" -msgstr "" -"現在,DDNS 更新在開機或者介面動作時不會被觸發。
如果您手工執行 DDNS 指令" -"碼的話(例如使用 cron 時把 force_interval 設定為 0),這是預設設定。" - -msgid "" -"Currently DDNS updates are not started at boot or on interface events.
You can start/stop each configuration here. It will run until next reboot." -msgstr "" -"現在,DDNS 更新在開機或者介面動作時不會被觸發。
您可以在這裡開始/停止每" -"一個設定的條目。它在下次重啟之前一直有效。" - -msgid "Custom update script to be used for updating your DDNS Provider." -msgstr "用來更新動態 DNS 的自定義指令碼。" - -msgid "Custom update-URL" -msgstr "自定義更新 URL" - -msgid "Custom update-script" -msgstr "自定義更新指令碼" - -msgid "DDNS Autostart disabled" -msgstr "DDNS 自動啟動已禁用。" - -msgid "DDNS Client Configuration" -msgstr "DDNS 客戶端配置" - -msgid "DDNS Client Documentation" -msgstr "DDNS 客戶端文件" - -msgid "DDNS Service provider" -msgstr "DDNS 服務提供商" - -msgid "DNS requests via TCP not supported" -msgstr "不支援使用 TCP 進行 DNS 解析" - -msgid "DNS-Server" -msgstr "DNS-伺服器" - -msgid "Date format" -msgstr "日期格式" - -msgid "Defines the Web page to read systems IPv4-Address from" -msgstr "設定用來讀取系統 IPv4 位址的網頁" - -msgid "Defines the Web page to read systems IPv6-Address from" -msgstr "設定用來讀取系統 IPv6 位址的網頁" - -msgid "Defines the interface to read systems IP-Address from" -msgstr "設定用來讀取系統 IP 位址的介面" - -msgid "Defines the network to read systems IPv4-Address from" -msgstr "設定用來讀取系統 IPv4 位址的網路" - -msgid "Defines the network to read systems IPv6-Address from" -msgstr "設定用來讀取系統 IPv6 位址的網路" - -msgid "" -"Defines the source to read systems IPv4-Address from, that will be send to " -"the DDNS provider" -msgstr "設定 IPv4 位址的來源。這將會被髮送給 DDNS 提供商" - -msgid "" -"Defines the source to read systems IPv6-Address from, that will be send to " -"the DDNS provider" -msgstr "設定 IPv6 位址的來源。這將會被髮送給 DDNS 提供商" - -msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider" -msgstr "設定哪一個 IP 位址(IPv4 或 IPv6)會被髮送給 DDNS 提供商" - -msgid "Details for" -msgstr "詳情" - -msgid "Directory contains Log files for each running section" -msgstr "儲存每一個執行中的設定的執行日誌的目錄" - -msgid "" -"Directory contains PID and other status information for each running section" -msgstr "儲存每個執行中的設定的PID以及其它狀態資訊的目錄" - -msgid "Disabled" -msgstr "已禁用" - -msgid "Domain" -msgstr "域名" - -msgid "Dynamic DNS" -msgstr "動態 DNS" - -msgid "" -"Dynamic DNS allows that your router can be reached with a fixed hostname " -"while having a dynamically changing IP address." -msgstr "動態 DNS 允許為擁有動態 IP 的主機配置一個固定的可訪問域名。" - -msgid "Enable secure communication with DDNS provider" -msgstr "啟用安全連線與 DDNS 提供商聯絡" - -msgid "Enabled" -msgstr "已啟用" - -msgid "Error" -msgstr "錯誤" - -msgid "Error Retry Counter" -msgstr "錯誤重試計數" - -msgid "Error Retry Interval" -msgstr "錯誤重試間隔" - -msgid "Event Network" -msgstr "事件網路" - -msgid "File" -msgstr "檔案" - -msgid "File not found" -msgstr "檔案未找到" - -msgid "File not found or empty" -msgstr "檔案未找到或為空" - -msgid "" -"Follow this link
You will find more hints to optimize your system to " -"run DDNS scripts with all options" -msgstr "" -"開啟這個連結
您將會得到更多關於如何通過所有設定項優化您的系統以執行 " -"DDNS 指令碼的提示" - -msgid "For detailed information about parameter settings look here." -msgstr "請看這裡獲得關於引數設定的詳細資訊" - -msgid "For supported codes look here" -msgstr "檢視這裡獲取支援的編碼" - -msgid "Force IP Version" -msgstr "強制設定 IP 版本" - -msgid "Force IP Version not supported" -msgstr "不支援強制設定 IP 版本" - -msgid "Force Interval" -msgstr "設定週期" - -msgid "Force TCP on DNS" -msgstr "強制使用 TCP 進行 DNS 查詢" - -msgid "Forced IP Version don't matched" -msgstr "強制設定的 IP 版本不匹配" - -msgid "Format" -msgstr "格式" - -msgid "Format: IP or FQDN" -msgstr "格式:IP 或者 FQDN" - -msgid "" -"GNU Wget will use the IP of given network, cURL will use the physical " -"interface." -msgstr "GNU Wget 將會使用給定的網路的 IP 位址,而 cURL 將會使用物理介面。" - -msgid "Global Settings" -msgstr "全域性設定" - -msgid "HTTPS not supported" -msgstr "不支援 HTTPS" - -msgid "Hints" -msgstr "提示" - -msgid "Hostname/FQDN to validate, if IP update happen or necessary" -msgstr "主機名/FQDN 驗證,如果 IP 更新發生或必要" - -msgid "IP address source" -msgstr "IP 位址來源" - -msgid "IP address version" -msgstr "IP 位址版本" - -msgid "IPv4-Address" -msgstr "IPv4 位址" - -msgid "IPv6 address must be given in square brackets" -msgstr "IPv6 位址必須填寫在中括號(\"[ ]\")內" - -msgid "" -"IPv6 is currently not (fully) supported by this system
Please follow " -"the instructions on OpenWrt's homepage to enable IPv6 support
or update " -"your system to the latest OpenWrt Release" -msgstr "" -"當前系統暫時不能(完整地)支援 IPv6
請檢視 OpenWrt 首頁的介紹以啟用 " -"IPv6 支援
或者更新您的系統到最新 OpenWrt 版本" - -msgid "IPv6 not supported" -msgstr "IPv6 不被支援" - -msgid "IPv6-Address" -msgstr "IPv6 位址" - -msgid "If both cURL and GNU Wget are installed, Wget is used by default." -msgstr "如果 cURL 和 GNU Wget 同時被安裝,那麼 Wget 將會被優先使用。" - -msgid "" -"If this service section is disabled it could not be started.
Neither " -"from LuCI interface nor from console" -msgstr "" -"如果服務配置被禁用,那麼它將不能被啟動。
無論是通過 LuCI 頁面或者是通過" -"終端。" - -msgid "If using secure communication you should verify server certificates!" -msgstr "如果使用安全通訊,您應該驗證伺服器證書!" - -msgid "" -"If you want to send updates for IPv4 and IPv6 you need to define two " -"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" -msgstr "" -"如果您需要同時更新 IPv4 和 IPv6 位址,您需要單獨新增兩個配置項(例" -"如'myddns_ipv4'和'myddns_ipv6')" - -msgid "" -"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." -msgstr "OpenWrt 中,cURL/libcurl 的某些版本編譯時沒有啟用代理伺服器支援" - -msgid "Info" -msgstr "資訊" - -msgid "" -"Install 'ca-certificates' package or needed certificates by hand into /etc/" -"ssl/certs default directory" -msgstr "" -"手動將“ca-certificates”包或需要的證書安裝到 /etc/ssl/certs 的預設目錄中" - -msgid "Interface" -msgstr "介面" - -msgid "" -"Interval to check for changed IP
Values below 5 minutes == 300 seconds " -"are not supported" -msgstr "檢查 IP 是否改變的時間隔
不支援小於 5 分鐘(300 秒)的數值。" - -msgid "" -"Interval to force updates send to DDNS Provider
Setting this parameter " -"to 0 will force the script to only run once
Values lower 'Check " -"Interval' except '0' are not supported" -msgstr "" -"強制向提供商更新 DDNS 的時間週期
將這個引數設定為 0 則會讓指令碼僅執行一" -"次
不支援小於\"檢查時間週期\"的數值(除了 0)。" - -msgid "It is NOT recommended for casual users to change settings on this page." -msgstr "強烈不建議初次使用的使用者修改本頁設定。" - -msgid "Last Update" -msgstr "上次更新" - -msgid "Loading" -msgstr "載入中" - -msgid "Log File Viewer" -msgstr "日誌檢視器" - -msgid "Log directory" -msgstr "日誌目錄" - -msgid "Log length" -msgstr "日誌長度" - -msgid "Log to file" -msgstr "把日誌記錄到檔案" - -msgid "Log to syslog" -msgstr "把日誌記錄到系統日誌" - -msgid "Lookup Hostname" -msgstr "查詢主機名" - -msgid "NOT installed" -msgstr "未安裝" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to select a network to use for " -"communication." -msgstr "包含 SSL 支援的 GNU Wget 或者 cURL 均未安裝,無法選擇網路用於通訊。" - -msgid "" -"Neither GNU Wget with SSL nor cURL installed to support secure updates via " -"HTTPS protocol." -msgstr "" -"包含 SSL 支援的 GNU Wget 或者 cURL 均未安裝,無法通過 HTTPS 協議進行安全的更" -"新。" - -msgid "Network" -msgstr "網路" - -msgid "Network on which the ddns-updater scripts will be started" -msgstr "DDNS 更新指令碼將會運行於該網路" - -msgid "Never" -msgstr "從不" - -msgid "Next Update" -msgstr "下次更新" - -msgid "No certificates found" -msgstr "找不到證書" - -msgid "No data" -msgstr "無資料" - -msgid "No logging" -msgstr "無日誌" - -msgid "Non-public and by default blocked IP's" -msgstr "非公網 IP 以及預設被鎖定的 IP" - -msgid "Notice" -msgstr "提示" - -msgid "Number of last lines stored in log files" -msgstr "日誌檔案中的最後幾行" - -msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." -msgstr "可選:強制僅使用 IPv4/IPv6 通訊。" - -msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." -msgstr "可選:強制使用 TCP 而非 UDP 請求 DNS。" - -msgid "OPTIONAL: Network to use for communication" -msgstr "可選:用於通訊的網路" - -msgid "OPTIONAL: Proxy-Server for detection and updates." -msgstr "可選:用於檢測以及更新的代理伺服器。" - -msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." -msgstr "可選:使用非預設 DNS 伺服器檢測\"已註冊的 IP 位址\"。" - -msgid "On Error the script will retry the failed action after given time" -msgstr "當出錯時,指令碼將會重試失敗的動作的次數" - -msgid "On Error the script will stop execution after given number of retrys" -msgstr "當出錯時,指令碼將會重試該次數之後退出" - -msgid "OpenWrt Wiki" -msgstr "OpenWrt Wiki" - -msgid "Optional Encoded Parameter" -msgstr "可選編碼引數" - -msgid "Optional Parameter" -msgstr "可選引數" - -msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)" -msgstr "可選:替換更新 URL(已編碼 URL)中的 [PARAMENC]" - -msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)" -msgstr "可選:替換更新 URL(未編碼 URL)中的 [PARAMENC]" - -msgid "Overview" -msgstr "總覽" - -msgid "PROXY-Server" -msgstr "代理伺服器" - -msgid "PROXY-Server not supported" -msgstr "不支援代理伺服器" - -msgid "Password" -msgstr "密碼" - -msgid "Path to CA-Certificate" -msgstr "CA 證書路徑" - -msgid "Please [Save & Apply] your changes first" -msgstr "請先儲存並應用您的設定" - -msgid "Please press [Read] button" -msgstr "請按下\"讀取\"按鈕" - -msgid "Please update to the current version!" -msgstr "請更新到最新版本!" - -msgid "Process ID" -msgstr "程序 ID" - -msgid "Read / Reread log file" -msgstr "讀取/重新讀取日誌檔案" - -msgid "Really change DDNS provider?" -msgstr "確定更改 DDNS 提供商嗎?" - -msgid "Registered IP" -msgstr "已註冊的 IP 位址" - -msgid "Replaces [DOMAIN] in Update-URL" -msgstr "替換更新 URL 中的 [DOMAIN]" - -msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)" -msgstr "替換更新 URL(已編碼 URL)中的 [PASSWORD]" - -msgid "Replaces [USERNAME] in Update-URL (URL-encoded)" -msgstr "替換更新 URL(已編碼 URL)中的 [USERNAME]" - -msgid "Run once" -msgstr "執行一次" - -msgid "Script" -msgstr "指令碼" - -msgid "Show more" -msgstr "檢視更多" - -msgid "Software update required" -msgstr "需要進行軟體更新" - -msgid "Specifying a DNS-Server is not supported" -msgstr "不支援指定 DNS 伺服器" - -msgid "Start" -msgstr "啟動" - -msgid "Start / Stop" -msgstr "啟動 / 停止" - -msgid "Status directory" -msgstr "狀態目錄" - -msgid "Stopped" -msgstr "已停止" - -msgid "" -"The currently installed 'ddns-scripts' package did not support all available " -"settings." -msgstr "當前已安裝的'ddns-scripts'軟體包暫不支援所有可用設定項" - -msgid "The default setting of '0' will retry infinite." -msgstr "預設設定“0”將無限重試。" - -msgid "There is no service configured." -msgstr "沒有已經配置好的服務項" - -msgid "Timer Settings" -msgstr "計時器設定" - -msgid "To change global settings click here" -msgstr "點選這裡更改全域性設定" - -msgid "To use cURL activate this option." -msgstr "選中此項以使用 cURL" - -msgid "URL" -msgstr "URL" - -msgid "URL to detect" -msgstr "用於檢測的 URL" - -msgid "Unknown error" -msgstr "未知錯誤" - -msgid "" -"Update URL to be used for updating your DDNS Provider.
Follow " -"instructions you will find on their WEB page." -msgstr "" -"DDNS 提供商用於更新 DDNS 的 URL。
跟隨教程,您可以在它們的網站上找到這" -"個 URL。" - -msgid "Update error" -msgstr "更新錯誤" - -msgid "Use HTTP Secure" -msgstr "使用 HTTPS" - -msgid "Use cURL" -msgstr "使用 cURL" - -msgid "User defined script to read systems IP-Address" -msgstr "使用設定的指令碼來讀取系統 IP 位址" - -msgid "Username" -msgstr "使用者名稱" - -msgid "Using specific DNS Server not supported" -msgstr "不支援使用特定的 DNS 伺服器" - -msgid "Verify" -msgstr "驗證" - -msgid "Version" -msgstr "版本" - -msgid "Version Information" -msgstr "版本資訊" - -msgid "Waiting for changes to be applied..." -msgstr "正在應用更改..." - -msgid "Warning" -msgstr "等待" - -msgid "" -"Writes detailed messages to log file. File will be truncated automatically." -msgstr "向日志中寫入詳細資訊。檔案將自動縮小。" - -msgid "" -"Writes log messages to syslog. Critical Errors will always be written to " -"syslog." -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 "" -"如果您需要指定 DNS 伺服器來檢測您註冊的 IP,您應該安裝“bind-host”或“knot-" -"host”或“drill”或“hostip”軟體包。" - -msgid "" -"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS " -"requests." -msgstr "您應該為 DNS 請求安裝“bind-host”或“knot-host”或“drill”軟體包。" - -msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package." -msgstr "您應該安裝“wget”或“curl”或“uclient-fetch”軟體包。" - -msgid "" -"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-" -"*ssl' package." -msgstr "您應該安裝“wget”或“curl”或“uclient-fetch”,及“libustream-*ssl”軟體包。" - -msgid "You should install 'wget' or 'curl' package." -msgstr "您應該安裝“wget”或“curl”軟體包。" - -msgid "" -"You should install 'wget' or 'uclient-fetch' package or replace libcurl." -msgstr "您應該安裝“wget”或“uclient-fetch”軟體包,或替換 libcurl。" - -msgid "cURL is installed, but libcurl was compiled without proxy support." -msgstr "cURL 已經安裝,但是 libcurl 編譯時沒有啟用代理支援。" - -msgid "cURL without Proxy Support" -msgstr "cURL 沒有包含代理支援" - -msgid "can not detect local IP. Please select a different Source combination" -msgstr "無法確定本地 IP。請更換 IP 來源。" - -msgid "can not resolve host:" -msgstr "無法解析主機:" - -msgid "config error" -msgstr "配置錯誤" - -msgid "days" -msgstr "天" - -msgid "directory or path/file" -msgstr "目錄或者到檔案的路徑" - -msgid "either url or script could be set" -msgstr "接受 URL 或者指令碼" - -msgid "enable here" -msgstr "在這裡啟用" - -msgid "file or directory not found or not 'IGNORE'" -msgstr "檔案或目錄未找到或未\"被忽視\"" - -msgid "help" -msgstr "幫助" - -msgid "hours" -msgstr "小時" - -msgid "installed" -msgstr "已安裝" - -msgid "invalid FQDN / required - Sample" -msgstr "FQDN 無效 / 必需 - 示例" - -msgid "minimum value '0'" -msgstr "最小值 0" - -msgid "minimum value '1'" -msgstr "最小值 1" - -msgid "minimum value 5 minutes == 300 seconds" -msgstr "最小值為 5 分鐘(300 秒)" - -msgid "minutes" -msgstr "分鐘" - -msgid "missing / required" -msgstr "必須填寫" - -msgid "must be greater or equal 'Check Interval'" -msgstr "必須大於或等於\"檢查時間週期\"" - -msgid "must start with 'http://'" -msgstr "必須以'http://'開頭" - -msgid "nc (netcat) can not connect" -msgstr "nc(netcat)不可連線" - -msgid "never" -msgstr "從不" - -msgid "no data" -msgstr "無資料" - -msgid "not found or not executable - Sample: '/path/to/script.sh'" -msgstr "未找到或者不可執行 - 示例:“/path/to/script.sh”" - -msgid "nslookup can not resolve host" -msgstr "nslookup 不能解析主機" - -msgid "or" -msgstr "或者" - -msgid "or higher" -msgstr "或者更大" - -msgid "please disable" -msgstr "請禁用" - -msgid "please remove entry" -msgstr "請移除該欄位" - -msgid "please select 'IPv4' address version" -msgstr "請設定 IPv4 位址" - -msgid "please select 'IPv4' address version in" -msgstr "請設定 IPv4 位址於" - -msgid "please set to 'default'" -msgstr "請設定為\"預設\"" - -msgid "proxy port missing" -msgstr "代理埠未填" - -msgid "required" -msgstr "必須填寫" - -msgid "seconds" -msgstr "秒" - -msgid "to run HTTPS without verification of server certificates (insecure)" -msgstr "使用 HTTPS 但不檢查伺服器證書(不安全)" - -msgid "unknown error" -msgstr "未知錯誤" - -msgid "unspecific error" -msgstr "未指定的錯誤" - -msgid "use hostname, FQDN, IPv4- or IPv6-Address" -msgstr "使用主機名或 IPv4/IPv6 位址" - -#~ msgid "" -#~ "Neither GNU Wget with SSL nor cURL installed to support updates via HTTPS " -#~ "protocol." -#~ msgstr "包含SSL支援的GNU Wget或者cURL均未被安裝.無法使用HTTPS更新DDNS" - -#~ msgid "You should install BIND host package for DNS requests." -#~ msgstr "您需要安裝BIND以請求DNS記錄." - -#~ msgid "You should install GNU Wget with SSL (preferred) or cURL package." -#~ msgstr "您需要安裝包含SSL支援的GNU Wget(推薦)或是cURL軟體包." - -#~ msgid "You should install GNU Wget with SSL or cURL package." -#~ msgstr "您需要安裝包含SSL支援的GNU Wget或是cURL軟體包." - -#~ msgid "You should install GNU Wget with SSL or replace libcurl." -#~ msgstr "您需要安裝包含SSL支援的GNU Wget或替換libcurl." diff --git a/package/luci/applications/luci-app-ddns/root/etc/uci-defaults/40_luci-ddns b/package/luci/applications/luci-app-ddns/root/etc/uci-defaults/40_luci-ddns deleted file mode 100755 index a82c1f9ac6..0000000000 --- a/package/luci/applications/luci-app-ddns/root/etc/uci-defaults/40_luci-ddns +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -# no longer needed for "Save and Apply" to restart ddns -uci -q batch <<-EOF >/dev/null - delete ucitrack.@ddns[-1] - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -return 0 diff --git a/package/luci/applications/luci-app-diag-core/Makefile b/package/luci/applications/luci-app-diag-core/Makefile deleted file mode 100644 index ac9f499b12..0000000000 --- a/package/luci/applications/luci-app-diag-core/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Diagnostics Tools (Core) -LUCI_DEPENDS:= - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-diag-core/luasrc/controller/luci_diag.lua b/package/luci/applications/luci-app-diag-core/luasrc/controller/luci_diag.lua deleted file mode 100644 index b662d7fb36..0000000000 --- a/package/luci/applications/luci-app-diag-core/luasrc/controller/luci_diag.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Copyright 2009 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.luci_diag", package.seeall) - -function index() - local e - - e = entry({"admin", "network", "diag_config"}, template("diag/network_config_index") , _("Configure Diagnostics"), 120) - e.index = true - e.dependent = true - - e = entry({"mini", "diag"}, template("diag/index"), _("Diagnostics"), 120) - e.index = true - e.dependent = true -end diff --git a/package/luci/applications/luci-app-diag-core/luasrc/view/diag/index.htm b/package/luci/applications/luci-app-diag-core/luasrc/view/diag/index.htm deleted file mode 100644 index c66776771f..0000000000 --- a/package/luci/applications/luci-app-diag-core/luasrc/view/diag/index.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# - Copyright 2009 Daniel Dickinson - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

<%:Diagnostics%>

-

<%:The entries in the menu allow you to perform diagnostic tests on your system to aid in troubleshooting.%>

-

<%:The diagnostics available under this menu depend on what modules you have installed on your device.%>

-<%+footer%> diff --git a/package/luci/applications/luci-app-diag-core/luasrc/view/diag/network_config_index.htm b/package/luci/applications/luci-app-diag-core/luasrc/view/diag/network_config_index.htm deleted file mode 100644 index 3d01453e48..0000000000 --- a/package/luci/applications/luci-app-diag-core/luasrc/view/diag/network_config_index.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# - Copyright 2009 Daniel Dickinson - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

<%:Diagnostics%>

-

<%:With this menu you can configure network diagnostics, such as network device scans and ping tests.%>

-

<%:The diagnostics available under this menu depend on what modules you have installed on your device.%>

-<%+footer%> diff --git a/package/luci/applications/luci-app-diag-core/po/ca/diag_core.po b/package/luci/applications/luci-app-diag-core/po/ca/diag_core.po deleted file mode 100644 index ffe0ded633..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/ca/diag_core.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-01 23:52+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Configuració de diagnòstics" - -msgid "Diagnostics" -msgstr "Diagnòstics" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" diff --git a/package/luci/applications/luci-app-diag-core/po/cs/diag_core.po b/package/luci/applications/luci-app-diag-core/po/cs/diag_core.po deleted file mode 100644 index dcfea7750f..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/cs/diag_core.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-20 23:19+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Nastavení diagnostiky" - -msgid "Diagnostics" -msgstr "Diagnostika" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Počet diagnostických testů, které jsou k dispozici v tomto menu je závislý " -"na modulech nainstalovaných ve vašem zařízení." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Položky v menu vám umožní provádět systémové diagnostické testy, které vám " -"pomohou vyřešit problémy." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"V tomto menu můžete nastavit síťovou diagnostiku, jako je skenování síťových " -"zařízení a ping testů." diff --git a/package/luci/applications/luci-app-diag-core/po/de/diag_core.po b/package/luci/applications/luci-app-diag-core/po/de/diag_core.po deleted file mode 100644 index feda0fcb68..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/de/diag_core.po +++ /dev/null @@ -1,42 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-07-02 08:24+0200\n" -"Last-Translator: dgolle \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Diagnose-Tests konfigurieren" - -msgid "Diagnostics" -msgstr "Diagnose" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Die verfügbaren Diagnose-Programme in diesem Menü hängen von den auf Ihrem " -"Gerät installierten Modulen ab." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Falls es mit ihrem Gerät Probleme gibt können hier Diagnose-Tests " -"durchgeführt werden." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Hier werden die Netzwerk Diagnose Tools konfiguriert (zB. Netzwerkscans und " -"Pings)." - -#~ msgid "l_d_diag" -#~ msgstr "Diagnose" diff --git a/package/luci/applications/luci-app-diag-core/po/el/diag_core.po b/package/luci/applications/luci-app-diag-core/po/el/diag_core.po deleted file mode 100644 index 8e57c52495..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/el/diag_core.po +++ /dev/null @@ -1,38 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-18 14:53+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: none\n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Configure Diagnostics" -msgstr "Ρύθμιση Διαγνωστικών" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Η καταχωρήσεις στο μενού, σας επιτρέπουν να προβαίνετε σε διαγνωστικές " -"δοκιμές στο σύστημά σας, για την διευκόλυνση αντιμετώπισης προβλημάτων." - -#, fuzzy -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Με αυτό το μενού, μπορείτε να παραμετροποιήσετε διαγνωστικά δικτύου, όπως " -"σαρώσεις συσκευών δικτύου και δοκιμές ping." diff --git a/package/luci/applications/luci-app-diag-core/po/en/diag_core.po b/package/luci/applications/luci-app-diag-core/po/en/diag_core.po deleted file mode 100644 index aa030efb98..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/en/diag_core.po +++ /dev/null @@ -1,42 +0,0 @@ -# Diagnostics Core. -# Copyright (C) 2009 Daniel Dickinson. -# Daniel Dickinson , 2009. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: diag-core 0.1\n" -"PO-Revision-Date: 2009-07-17 04:54-0400\n" -"Last-Translator: Daniel Dickinson \n" -"Language-Team: en \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Configure Diagnostics" -msgstr "Configure Diagnostics" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." - -#~ msgid "l_d_diag" -#~ msgstr "Diagnostics" diff --git a/package/luci/applications/luci-app-diag-core/po/es/diag_core.po b/package/luci/applications/luci-app-diag-core/po/es/diag_core.po deleted file mode 100644 index 8b9b3b5817..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/es/diag_core.po +++ /dev/null @@ -1,42 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-07-28 23:25+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Configurar diagnósticos" - -msgid "Diagnostics" -msgstr "Diagnósticos" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Los diagnósticos disponibles bajo este menú dependen de qué módulos haya " -"instalado en su dispositivo." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Este menú le permite realizar test de prueba de su sistema para ayudar en la " -"resolución de problemas." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"En este menú puede configurar diagnósticos de red como el escaneo de equipos " -"en red o pings." - -#~ msgid "l_d_diag" -#~ msgstr "Diagnośticos" diff --git a/package/luci/applications/luci-app-diag-core/po/fr/diag_core.po b/package/luci/applications/luci-app-diag-core/po/fr/diag_core.po deleted file mode 100644 index a5b4e6adc1..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/fr/diag_core.po +++ /dev/null @@ -1,42 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-11-06 13:21+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: none\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Configuration des diagnostics" - -msgid "Diagnostics" -msgstr "Diagnostiques" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Les diagnostics disponible ci-dessous dépendent des modules que vous avez " -"installé sur votre appareil. " - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Les items de ce menu vous permettent d'accomplir des diagnostics sur votre " -"système pour vous aider à le dépanner." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Ce menu vous permet de configurer des diagnostics réseau, comme des " -"recherches de périphérique réseau et des tests par ping." - -#~ msgid "l_d_diag" -#~ msgstr "l_d_diag" diff --git a/package/luci/applications/luci-app-diag-core/po/he/diag_core.po b/package/luci/applications/luci-app-diag-core/po/he/diag_core.po deleted file mode 100644 index b4d73e0222..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/he/diag_core.po +++ /dev/null @@ -1,30 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Configure Diagnostics" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" diff --git a/package/luci/applications/luci-app-diag-core/po/hu/diag_core.po b/package/luci/applications/luci-app-diag-core/po/hu/diag_core.po deleted file mode 100644 index f9f6e66cf7..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/hu/diag_core.po +++ /dev/null @@ -1,42 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-07-05 16:44+0200\n" -"Last-Translator: Gyula \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Diagnosztikai beállítások" - -msgid "Diagnostics" -msgstr "Diagnosztika" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Az itt található statisztikák attól függően változnak, hogy milyen modulokat " -"telepítettél az eszközödre." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Ennek a menünek az elemei lehetővé teszik hálózati diagnosztikai tesztek " -"elvégzését a rendszeren a hibaelhárítás megkönnyítésére." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Ebben a menüben beállíthatók a hálózati diagnosztika elemei, mint például " -"eszközök keresése és ping teszt." - -#~ msgid "l_d_diag" -#~ msgstr "l_d_diag" diff --git a/package/luci/applications/luci-app-diag-core/po/it/diag_core.po b/package/luci/applications/luci-app-diag-core/po/it/diag_core.po deleted file mode 100644 index 39d4cedff6..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/it/diag_core.po +++ /dev/null @@ -1,42 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-03 13:54+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Configura Diagnostici" - -msgid "Diagnostics" -msgstr "Diagnostiche" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Le funzioni di diagnostica disponibili in questo menu dipendono dai moduli " -"che avete installato sul vostro dispositivo." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Gli stumenti nel menù possono servirti per diagnosi e test per aiutarti " -"nello scoprire le problematiche." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Con questo menu puoi configurare la diagnostica di rete, come la scansione " -"di un dispositivo di rete o dei ping di test." - -#~ msgid "l_d_diag" -#~ msgstr "l_d_diag" diff --git a/package/luci/applications/luci-app-diag-core/po/ja/diag_core.po b/package/luci/applications/luci-app-diag-core/po/ja/diag_core.po deleted file mode 100644 index f67657fdf8..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/ja/diag_core.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-18 14:36+0200\n" -"Last-Translator: Kentaro \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.4\n" - -msgid "Configure Diagnostics" -msgstr "診断機能設定" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" diff --git a/package/luci/applications/luci-app-diag-core/po/ms/diag_core.po b/package/luci/applications/luci-app-diag-core/po/ms/diag_core.po deleted file mode 100644 index 90fefc50d1..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/ms/diag_core.po +++ /dev/null @@ -1,29 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Configure Diagnostics" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" diff --git a/package/luci/applications/luci-app-diag-core/po/no/diag_core.po b/package/luci/applications/luci-app-diag-core/po/no/diag_core.po deleted file mode 100644 index 4955d47352..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/no/diag_core.po +++ /dev/null @@ -1,35 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Configure Diagnostics" -msgstr "Konfigurer Diagnostikk" - -msgid "Diagnostics" -msgstr "Diagnostikk" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Diagnostikken tilgjengelig under denne menyen avhenger av hvilke moduler du " -"har installert på enheten." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Oppføringene i menyen lar deg utføre diagnostiske tester på systemet ditt " -"til hjelp ved feilsøking." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Her kan du konfigurere nettverks diagnostikk, som skanning etter nettverks " -"enheter og ping tester." - -#~ msgid "l_d_diag" -#~ msgstr "Nettverks Diagnostikk" diff --git a/package/luci/applications/luci-app-diag-core/po/pl/diag_core.po b/package/luci/applications/luci-app-diag-core/po/pl/diag_core.po deleted file mode 100644 index 0935fdbfa0..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/pl/diag_core.po +++ /dev/null @@ -1,43 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-08 13:17+0200\n" -"Last-Translator: Staszek \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Konfiguracja diagnostyki" - -msgid "Diagnostics" -msgstr "Diagnostyka" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Liczba testów diagnostycznych dostępnych w tym menu jest uzależniona od " -"modułów zainstalowanych w tym urządzeniu." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Wpisy w menu pozwalają na wykonanie testów diagnostycznych systemu pomocnych " -"w rozwiązywaniu problemów." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"W tym menu można skonfigurować diagnostykę sieci, jak np. skanowanie " -"urządzeń sieciowych lub testy ping." - -#~ msgid "l_d_diag" -#~ msgstr "l_d_diag" diff --git a/package/luci/applications/luci-app-diag-core/po/pt-br/diag_core.po b/package/luci/applications/luci-app-diag-core/po/pt-br/diag_core.po deleted file mode 100644 index e27315bc59..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/pt-br/diag_core.po +++ /dev/null @@ -1,42 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-08 03:14+0200\n" -"Last-Translator: luizluca \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Configure Diagnostics" -msgstr "Configura os Diagnósticos" - -msgid "Diagnostics" -msgstr "Diagnósticos" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Os diagnósticos disponíveis neste menu dependem de quais módulos você tem " -"instalado no seu dispositivo." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"As entradas no menu permitem que você realize diagnósticos em seu sistema " -"para ajudar na resolução de problemas." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Com este menu, você pode configurar o diagnóstico de rede como varredura de " -"dispositivos e testes de ping." - -#~ msgid "l_d_diag" -#~ msgstr "l_d_diag" diff --git a/package/luci/applications/luci-app-diag-core/po/pt/diag_core.po b/package/luci/applications/luci-app-diag-core/po/pt/diag_core.po deleted file mode 100644 index 6083f285e4..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/pt/diag_core.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-05-30 22:57+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Configurar Diagnósticos" - -msgid "Diagnostics" -msgstr "Diagnósticos " - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Os diagnósticos disponíveis neste menu dependem dos módulos que tem " -"instalados no seu dispositivo. " - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"As entradas neste menu permitem levar a cabo testes de diagnóstico no seu " -"sistema para o ajudar na resolução de problemas." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Com este menu pode configurar o diagnóstico de rede, tal como explorar " -"dispositivos de rede e testes ping." diff --git a/package/luci/applications/luci-app-diag-core/po/ro/diag_core.po b/package/luci/applications/luci-app-diag-core/po/ro/diag_core.po deleted file mode 100644 index 604841eb8d..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/ro/diag_core.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-09 14:24+0200\n" -"Last-Translator: lex404 \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Configurează diagnozele" - -# diagnostic/ diagnostice; suna oricum prea medical. Tehnic se foloseste diagnoza, din cate stiu. -msgid "Diagnostics" -msgstr "Diagnoze" - -# . -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Diagnozele disponibile sub acest meniu depind de ce module aveți instalate " -"pe device-ul dumneavoastră." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Intrările din acest meniu permit utilizarea testelor de diagnoză în sistem " -"pentru a vă ajuta la rezolvarea problemelor." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Cu acest meniu poți configura diagnoza în rețea, cum ar fi scanarea unor " -"dispozitive din rețea sau teste ping." - -#~ msgid "l_d_diag" -#~ msgstr "l_d_diag" diff --git a/package/luci/applications/luci-app-diag-core/po/ru/diag_core.po b/package/luci/applications/luci-app-diag-core/po/ru/diag_core.po deleted file mode 100644 index 1abaa8c6c8..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/ru/diag_core.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: diag_core\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2012-08-15 11:44+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Configure Diagnostics" -msgstr "Настройки диагностики" - -msgid "Diagnostics" -msgstr "Диагностика" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Доступные в данном меню виды диагностики зависят от установленных на вашем " -"устройстве модулей. " - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Записи в меню позволять вам выполнить диагностику системы, чтобы помочь в " -"обнаружении проблем." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Используя это меню, вы можете настроить диагностику сети, например, " -"сканирование сетевых устройств или ping-тест." - -#~ msgid "l_d_diag" -#~ msgstr "l_d_diag" diff --git a/package/luci/applications/luci-app-diag-core/po/sk/diag_core.po b/package/luci/applications/luci-app-diag-core/po/sk/diag_core.po deleted file mode 100644 index 389516fd12..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/sk/diag_core.po +++ /dev/null @@ -1,30 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Configure Diagnostics" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" diff --git a/package/luci/applications/luci-app-diag-core/po/sv/diag_core.po b/package/luci/applications/luci-app-diag-core/po/sv/diag_core.po deleted file mode 100644 index c31433287f..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/sv/diag_core.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Configure Diagnostics" -msgstr "Ställ in diagnostik" - -msgid "Diagnostics" -msgstr "Diagnostik" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Med den här menyn så kan du ställa in nätverksdiagnostik så som " -"igenomsökningar och ping-tester för nätverksenheten." diff --git a/package/luci/applications/luci-app-diag-core/po/templates/diag_core.pot b/package/luci/applications/luci-app-diag-core/po/templates/diag_core.pot deleted file mode 100644 index 1b34f8381c..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/templates/diag_core.pot +++ /dev/null @@ -1,23 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Configure Diagnostics" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" diff --git a/package/luci/applications/luci-app-diag-core/po/tr/diag_core.po b/package/luci/applications/luci-app-diag-core/po/tr/diag_core.po deleted file mode 100644 index d0b6211043..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/tr/diag_core.po +++ /dev/null @@ -1,30 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Configure Diagnostics" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" diff --git a/package/luci/applications/luci-app-diag-core/po/uk/diag_core.po b/package/luci/applications/luci-app-diag-core/po/uk/diag_core.po deleted file mode 100644 index eae98867cc..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/uk/diag_core.po +++ /dev/null @@ -1,40 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-05-26 17:55+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configure Diagnostics" -msgstr "Конфігурування діагностики" - -msgid "Diagnostics" -msgstr "Діагностика" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" -"Доступні в цьому меню види діагностики залежать від того, які модулі " -"інстальовані на вашому пристроі." - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" -"Пункти меню дозволяють виконувати діагностичні тести на вашій системі, щоб " -"допомогти при усуненні неполадок." - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" -"Використовуючи це меню, ви можете сконфігурувати діагностику мережі, " -"наприклад, сканування мережевих пристроїв та пінг-тести." diff --git a/package/luci/applications/luci-app-diag-core/po/vi/diag_core.po b/package/luci/applications/luci-app-diag-core/po/vi/diag_core.po deleted file mode 100644 index d0b6211043..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/vi/diag_core.po +++ /dev/null @@ -1,30 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Configure Diagnostics" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "" diff --git a/package/luci/applications/luci-app-diag-core/po/zh-cn/diag_core.po b/package/luci/applications/luci-app-diag-core/po/zh-cn/diag_core.po deleted file mode 100644 index e857d3d828..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/zh-cn/diag_core.po +++ /dev/null @@ -1,36 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-05 14:39+0200\n" -"Last-Translator: nKsyn \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" - -msgid "Configure Diagnostics" -msgstr "配置诊断" - -msgid "Diagnostics" -msgstr "诊断" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "可用的诊断依赖于设备上已经安装的诊断模块" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "下面的条目可以诊断测试系统,为排除故障提供信息" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "在这里可以配置网络诊断,例如:扫描网络设备,进行ping测试等。" - -#~ msgid "l_d_diag" -#~ msgstr "l_d诊断" diff --git a/package/luci/applications/luci-app-diag-core/po/zh-tw/diag_core.po b/package/luci/applications/luci-app-diag-core/po/zh-tw/diag_core.po deleted file mode 100644 index 2d62488451..0000000000 --- a/package/luci/applications/luci-app-diag-core/po/zh-tw/diag_core.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 12:47+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Configure Diagnostics" -msgstr "診斷設定" - -msgid "Diagnostics" -msgstr "診斷" - -msgid "" -"The diagnostics available under this menu depend on what modules you have " -"installed on your device." -msgstr "這選單下的診斷機制可運用性, 端看您設備上已安裝的模組而定" - -msgid "" -"The entries in the menu allow you to perform diagnostic tests on your system " -"to aid in troubleshooting." -msgstr "選單內的項目允許您在系統內執行診斷測試以便解決疑難雜症" - -msgid "" -"With this menu you can configure network diagnostics, such as network device " -"scans and ping tests." -msgstr "採用這選項可以讓您設定網路診斷, 例如網路設備掃描跟ping的測試." diff --git a/package/luci/applications/luci-app-diag-devinfo/Makefile b/package/luci/applications/luci-app-diag-devinfo/Makefile deleted file mode 100644 index 1505b62121..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=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/package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/devinfo_common.lua b/package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/devinfo_common.lua deleted file mode 100644 index 93f735c692..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/devinfo_common.lua +++ /dev/null @@ -1,185 +0,0 @@ --- Copyright 2009 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.luci_diag.devinfo_common", package.seeall) - -require("luci.i18n") -require("luci.util") -require("luci.sys") -require("luci.cbi") -require("luci.model.uci") - -local translate = luci.i18n.translate -local DummyValue = luci.cbi.DummyValue -local SimpleSection = luci.cbi.SimpleSection - -function index() - return -- no-op -end - -function run_processes(outnets, cmdfunc) - i = next(outnets, nil) - while (i) do - outnets[i]["output"] = luci.sys.exec(cmdfunc(outnets, i)) - i = next(outnets, i) - end -end - -function parse_output(devmap, outnets, haslink, type, mini, debug) - local curnet = next(outnets, nil) - - while (curnet) do - local output = outnets[curnet]["output"] - local subnet = outnets[curnet]["subnet"] - local ports = outnets[curnet]["ports"] - local interface = outnets[curnet]["interface"] - local netdevs = {} - devlines = luci.util.split(output) - if not devlines then - devlines = {} - table.insert(devlines, output) - end - - local j = nil - j = next(devlines, j) - - local found_a_device = false - - while (j) do - if devlines[j] and ( devlines[j] ~= "" ) then - found_a_device = true - local devtable - local row = {} - devtable = luci.util.split(devlines[j], ' | ') - row["ip"] = devtable[1] - if (not mini) then - row["mac"] = devtable[2] - end - if ( devtable[4] == 'unknown' ) then - row["vendor"] = devtable[3] - else - row["vendor"] = devtable[4] - end - row["type"] = devtable[5] - if (not mini) then - row["model"] = devtable[6] - end - if (haslink) then - row["config_page"] = devtable[7] - end - - if (debug) then - row["raw"] = devlines[j] - end - table.insert(netdevs, row) - end - j = next(devlines, j) - end - if not found_a_device then - local row = {} - row["ip"] = curnet - if (not mini) then - row["mac"] = "" - end - if (type == "smap") then - row["vendor"] = luci.i18n.translate("No SIP devices") - else - row["vendor"] = luci.i18n.translate("No devices detected") - end - row["type"] = luci.i18n.translate("check other networks") - if (not mini) then - row["model"] = "" - end - if (haslink) then - row["config_page"] = "" - end - if (debug) then - row["raw"] = output - end - table.insert(netdevs, row) - end - local s - if (type == "smap") then - if (mini) then - s = devmap:section(luci.cbi.Table, netdevs, luci.i18n.translate("SIP devices discovered for") .. " " .. curnet) - else - local interfacestring = "" - if ( interface ~= "" ) then - interfacestring = ", " .. interface - end - s = devmap:section(luci.cbi.Table, netdevs, luci.i18n.translate("SIP devices discovered for") .. " " .. curnet .. " (" .. subnet .. ":" .. ports .. interfacestring .. ")") - end - s.template = "diag/smapsection" - else - if (mini) then - s = devmap:section(luci.cbi.Table, netdevs, luci.i18n.translate("Devices discovered for") .. " " .. curnet) - else - local interfacestring = "" - if ( interface ~= "" ) then - interfacestring = ", " .. interface - end - s = devmap:section(luci.cbi.Table, netdevs, luci.i18n.translate("Devices discovered for") .. " " .. curnet .. " (" .. subnet .. interfacestring .. ")") - end - end - s:option(DummyValue, "ip", translate("IP Address")) - if (not mini) then - s:option(DummyValue, "mac", translate("MAC Address")) - end - s:option(DummyValue, "vendor", translate("Vendor")) - s:option(DummyValue, "type", translate("Device Type")) - if (not mini) then - s:option(DummyValue, "model", translate("Model")) - end - if (haslink) then - s:option(DummyValue, "config_page", translate("Link to Device")) - end - if (debug) then - s:option(DummyValue, "raw", translate("Raw")) - end - curnet = next(outnets, curnet) - end -end - -function get_network_device(interface) - local state = luci.model.uci.cursor_state() - state:load("network") - local dev - - return state:get("network", interface, "ifname") -end - - -function cbi_add_networks(field) - uci.cursor():foreach("network", "interface", - function (section) - if section[".name"] ~= "loopback" then - field:value(section[".name"]) - end - end - ) - field.titleref = luci.dispatcher.build_url("admin", "network", "network") -end - -function config_devinfo_scan(map, scannet) - local o - o = scannet:option(luci.cbi.Flag, "enable", translate("Enable")) - o.optional = false - o.rmempty = false - - o = scannet:option(luci.cbi.Value, "interface", translate("Interface")) - o.optional = false - luci.controller.luci_diag.devinfo_common.cbi_add_networks(o) - - local scansubnet - scansubnet = scannet:option(luci.cbi.Value, "subnet", translate("Subnet")) - scansubnet.optional = false - - o = scannet:option(luci.cbi.Value, "timeout", translate("Timeout"), translate("Time to wait for responses in seconds (default 10)")) - o.optional = true - - o = scannet:option(luci.cbi.Value, "repeat_count", translate("Repeat Count"), translate("Number of times to send requests (default 1)")) - o.optional = true - - o = scannet:option(luci.cbi.Value, "sleepreq", translate("Sleep Between Requests"), translate("Milliseconds to sleep between requests (default 100)")) - o.optional = true -end diff --git a/package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/luci_diag_devinfo.lua b/package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/luci_diag_devinfo.lua deleted file mode 100644 index ebba03fb4c..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/luci_diag_devinfo.lua +++ /dev/null @@ -1,46 +0,0 @@ --- Copyright 2009 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.luci_diag.luci_diag_devinfo", package.seeall) - -function index() - local e - - e = entry({"admin", "voice", "diag", "phones"}, arcombine(cbi("luci_diag/smap_devinfo"), cbi("luci_diag/smap_devinfo_config")), _("Phones"), 10) - e.leaf = true - e.subindex = true - e.dependent = true - - e = entry({"admin", "voice", "diag", "phones", "config"}, cbi("luci_diag/smap_devinfo_config"), _("Configure"), 10) - - e = entry({"admin", "status", "smap_devinfo"}, cbi("luci_diag/smap_devinfo"), _("SIP Devices on Network"), 120) - e.leaf = true - e.dependent = true - - e = entry({"admin", "network", "diag_config", "netdiscover_devinfo_config"}, cbi("luci_diag/netdiscover_devinfo_config"), _("Network Device Scan"), 100) - e.leaf = true - e.dependent = true - - e = entry({"admin", "network", "diag_config", "smap_devinfo_config"}, cbi("luci_diag/smap_devinfo_config"), _("SIP Device Scan")) - e.leaf = true - e.dependent = true - - e = entry({"admin", "status", "netdiscover_devinfo"}, cbi("luci_diag/netdiscover_devinfo"), _("Devices on Network"), 90) - e.dependent = true - - e = entry({"admin", "network", "mactodevinfo"}, cbi("luci_diag/mactodevinfo"), _("MAC Device Info Overrides"), 190) - e.dependent = true - - e = entry({"mini", "diag", "phone_scan"}, cbi("luci_diag/smap_devinfo_mini"), _("Phone Scan"), 100) - e.dependent = true - - e = entry({"mini", "voice", "phones", "phone_scan_config"}, cbi("luci_diag/smap_devinfo_config_mini"), _("Config Phone Scan"), 90) - e.dependent = true - - e = entry({"mini", "diag", "netdiscover_devinfo"}, cbi("luci_diag/netdiscover_devinfo_mini"), _("Network Device Scan"), 10) - e.dependent = true - - e = entry({"mini", "network", "netdiscover_devinfo_config"}, cbi("luci_diag/netdiscover_devinfo_config_mini"), _("Device Scan Config")) - e.dependent = true - -end diff --git a/package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/netdiscover_common.lua b/package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/netdiscover_common.lua deleted file mode 100644 index 2e879a6fed..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/netdiscover_common.lua +++ /dev/null @@ -1,91 +0,0 @@ --- Copyright 2009 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.luci_diag.netdiscover_common", package.seeall) - -require("luci.i18n") -require("luci.util") -require("luci.sys") -require("luci.cbi") -require("luci.model.uci") - -local translate = luci.i18n.translate -local DummyValue = luci.cbi.DummyValue -local SimpleSection = luci.cbi.SimpleSection - -function index() - return -- no-op -end - -function get_params() - - local netdiscover_uci = luci.model.uci.cursor() - netdiscover_uci:load("luci_devinfo") - local nettable = netdiscover_uci:get_all("luci_devinfo") - - local i - local subnet - local netdout - - local outnets = {} - - i = next(nettable, nil) - - while (i) do - if (netdiscover_uci:get("luci_devinfo", i) == "netdiscover_scannet") then - local scannet = netdiscover_uci:get_all("luci_devinfo", i) - if scannet["subnet"] and (scannet["subnet"] ~= "") and scannet["enable"] and ( scannet["enable"] == "1") then - local output = "" - local outrow = {} - outrow["interface"] = scannet["interface"] - outrow["timeout"] = 10 - local timeout = tonumber(scannet["timeout"]) - if timeout and ( timeout > 0 ) then - outrow["timeout"] = scannet["timeout"] - end - - outrow["repeat_count"] = 1 - local repcount = tonumber(scannet["repeat_count"]) - if repcount and ( repcount > 0 ) then - outrow["repeat_count"] = scannet["repeat_count"] - end - - outrow["sleepreq"] = 100 - local repcount = tonumber(scannet["sleepreq"]) - if repcount and ( repcount > 0 ) then - outrow["sleepreq"] = scannet["sleepreq"] - end - - outrow["subnet"] = scannet["subnet"] - outrow["output"] = output - outnets[i] = outrow - end - end - i = next(nettable, i) - end - return outnets -end - -function command_function(outnets, i) - local interface = luci.controller.luci_diag.devinfo_common.get_network_device(outnets[i]["interface"]) - - return "/usr/bin/netdiscover-to-devinfo " .. outnets[i]["subnet"] .. " " .. interface .. " " .. outnets[i]["timeout"] .. " -r " .. outnets[i]["repeat_count"] .. " -s " .. outnets[i]["sleepreq"] .. " 0 ) then - outrow["timeout"] = scannet["timeout"] - end - - outrow["repeat_count"] = 1 - local repcount = tonumber(scannet["repeat_count"]) - if repcount and ( repcount > 0 ) then - outrow["repeat_count"] = scannet["repeat_count"] - end - - outrow["sleepreq"] = 100 - local repcount = tonumber(scannet["sleepreq"]) - if repcount and ( repcount > 0 ) then - outrow["sleepreq"] = scannet["sleepreq"] - end - - if scannet["interface"] and ( scannet["interface"] ~= "" ) then - outrow["interface"] = scannet["interface"] - else - outrow["interface"] = "" - end - - outrow["ports"] = ports - outrow["output"] = output - outnets[i] = outrow - end - end - i = next(nettable, i) - end - return outnets -end - -function command_function(outnets, i) - - local interface = luci.controller.luci_diag.devinfo_common.get_network_device(outnets[i]["interface"]) - - return "/usr/bin/netsmap-to-devinfo -r " .. outnets[i]["subnet"] .. " -t " .. outnets[i]["timeout"] .. " -i " .. interface .. " -x -p " .. outnets[i]["ports"] .. " -c " .. outnets[i]["repeat_count"] .. " -s " .. outnets[i]["sleepreq"] .. " - -<%- -local rowcnt = 1 -function rowstyle() - rowcnt = rowcnt + 1 - return (rowcnt % 2) + 1 -end --%> - - -
- <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> -
<%=self.description%>
-
- <%- local count = 0 -%> - - - <%- if not self.anonymous then -%> - <%- if self.sectionhead then -%> - - <%- else -%> - - <%- end -%> - <%- end -%> - <%- for i, k in pairs(self.children) do if not k.optional then -%> - - <%- count = count + 1; end; end; if self.extedit or self.addremove then -%> - - <%- count = count + 1; end -%> - - - <%- if not self.anonymous then -%> - <%- if self.sectiondesc then -%> - - <%- else -%> - - <%- end -%> - <%- end -%> - <%- for i, k in pairs(self.children) do if not k.optional then -%> - - <%- end; end; if self.extedit or self.addremove then -%> - - <%- end -%> - - <%- local isempty = true - for i, k in ipairs(self:cfgsections()) do - section = k - isempty = false - scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" } - -%> - - <% if not self.anonymous then -%> - - <%- end %> - - <%- for k, node in ipairs(self.children) do -%> - <%- if not node.optional then -%> - <%- nodevalue = node:cfgvalue(section) -%> - <%- if nodevalue and ( nodevalue ~= "" ) and string.find(nodevalue, 'http://', 1, plain) then - node.href = nodevalue - node.template = "diag/smapvalue" - end - -%> - <%- node:render(section, scope or {}) -%> - <%- end -%> - <%- end -%> - - <%- if self.extedit or self.addremove then -%> - - <%- end -%> - - <%- end -%> - - <%- if isempty then -%> - - - - <%- end -%> -
<%=self.sectionhead%>  - <%- if k.titleref then -%><%- end -%> - <%-=k.title-%> - <%- if k.titleref then -%><%- end -%> -  
<%=self.sectiondesc%><%=k.description%>

<%=k%>

- <%- if self.extedit then -%> - - <%=self.extedit:format(section)%> - <%- elseif type(self.extedit) == "function" then -%> - <%=self:extedit(section)%> - <%- end -%> - " title="<%:Edit%>"><%:Edit%> - <%- end; if self.addremove then %> - - <%- end -%> -

<%:This section contains no values yet%>
- - <% if self.error then %> -
-
    <% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%> -
  • <%=luci.util.pcdata(e):gsub("\n","
    ")%>
  • - <%- end end %>
-
- <% end %> - - <%- if self.addremove then -%> - <% if self.template_addremove then include(self.template_addremove) else -%> -
- <% if self.anonymous then %> - - <% else %> - <% if self.invalid_cts then -%>
<% end %> - - - <% if self.invalid_cts then -%> -
<%:Invalid%>
- <%- end %> - <% end %> -
- <%- end %> - <%- end -%> -
-
- diff --git a/package/luci/applications/luci-app-diag-devinfo/luasrc/view/diag/smapvalue.htm b/package/luci/applications/luci-app-diag-devinfo/luasrc/view/diag/smapvalue.htm deleted file mode 100644 index 278985c9fb..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/luasrc/view/diag/smapvalue.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%# - Copyright 2009 Daniel Dickinson - Licensed to the public under the Apache License 2.0. --%> - -<%+cbi/valueheader%> -<% if self.href then %><% end -%> - <%=luci.util.pcdata(self:cfgvalue(section))%> -<%- if self.href then %><%end%> -  - -<%+cbi/valuefooter%> diff --git a/package/luci/applications/luci-app-diag-devinfo/po/ca/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/ca/diag_devinfo.po deleted file mode 100644 index 9739a4b3b9..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/ca/diag_devinfo.po +++ /dev/null @@ -1,209 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-02 05:29+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Accions" - -msgid "Add" -msgstr "Afegeix" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "Configura" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "Suprimeix" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "" - -msgid "Edit" -msgstr "Edita" - -msgid "Enable" -msgstr "Habilita" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "Adreça IP" - -msgid "Interface" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Link to Device" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "Model" - -msgid "Name" -msgstr "Nom" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "Cap dispositiu SIP" - -msgid "No devices detected" -msgstr "Cap dispositiu detectat" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "Propietari OUI" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "Informació de telèfon" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "Telèfons" - -msgid "Ports" -msgstr "Ports" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "" - -msgid "SIP Devices on Network" -msgstr "" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "" - -msgid "Subnet" -msgstr "Subxarxa" - -msgid "This section contains no values yet" -msgstr "Esta secció encara no conté valors" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "" - -msgid "Timeout" -msgstr "Temps d'espera" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "Venedor" - -msgid "check other networks" -msgstr "" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/cs/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/cs/diag_devinfo.po deleted file mode 100644 index 73fe67e2e4..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/cs/diag_devinfo.po +++ /dev/null @@ -1,209 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-11 19:32+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Akce" - -msgid "Add" -msgstr "Přidat" - -msgid "Beginning of MAC address range" -msgstr "Začátek rozsahu MAC adres" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "Konfigurace" - -msgid "Configure Scans" -msgstr "Konfigurace skenů" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "Odstranit" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "Typ zařízení" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "Zařízení na síti" - -msgid "Edit" -msgstr "Upravit" - -msgid "Enable" -msgstr "Povolit" - -msgid "End of MAC address range" -msgstr "Konec rozsahu MAC adres" - -msgid "Go to relevant configuration page" -msgstr "Přejít na přísluÅ¡nou konfigurační stránku" - -msgid "IP Address" -msgstr "IP adresa" - -msgid "Interface" -msgstr "Rozhraní" - -msgid "Invalid" -msgstr "Neplatný" - -msgid "Link to Device" -msgstr "Odkaz na zařízení" - -msgid "MAC Address" -msgstr "MAC adresa" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Jak dlouho spát mezi požadavky (milisekundy, výchozí 100)" - -msgid "Model" -msgstr "Model" - -msgid "Name" -msgstr "Jméno" - -msgid "Network Device Scan" -msgstr "Vyhledání síťových zařízení" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "Žádná zařízení SIP" - -msgid "No devices detected" -msgstr "Nebyla detekována žádná zařízení" - -msgid "Number of times to send requests (default 1)" -msgstr "Kolikrát odeslat požadavek (standardně 1)" - -msgid "OUI Owner" -msgstr "Vlastník OUI" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Provést skenování (může trvat několik minut)" - -msgid "Phone Information" -msgstr "Informace o telefonu" - -msgid "Phone Scan" -msgstr "Vyhledání telefonů" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "Telefony" - -msgid "Ports" -msgstr "Porty" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "Počet opakování" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Opakování skenování (může trvat několik minut)" - -msgid "SIP Device Information" -msgstr "Informace o zařízení SIP" - -msgid "SIP Device Scan" -msgstr "Skenování SIP zařízení" - -msgid "SIP Device Scanning Configuration" -msgstr "Konfigurace skenování SIP zařízení" - -msgid "SIP Devices on Network" -msgstr "Zařízení SIP na síti" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "Hledat zařízení na zadané síti" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "Nastavení skenování" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "Uspat mezi jednotlivými požadavky" - -msgid "Subnet" -msgstr "Podsíť" - -msgid "This section contains no values yet" -msgstr "Tato sekce zatím neobsahuje žádné hodnoty" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Doba čekání na odpovědi v sekundách (výchozí 10)" - -msgid "Timeout" -msgstr "Časový limit" - -msgid "Use Configuration" -msgstr "Použít nastavení" - -msgid "Vendor" -msgstr "Prodejce" - -msgid "check other networks" -msgstr "zkontrolovat ostatní sítě" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/de/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/de/diag_devinfo.po deleted file mode 100644 index 2401ece3bd..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/de/diag_devinfo.po +++ /dev/null @@ -1,221 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-10 02:08+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Aktionen" - -msgid "Add" -msgstr "Hinzufügen" - -msgid "Beginning of MAC address range" -msgstr "Beginn des MAC-Adress-Bereiches" - -msgid "Config Phone Scan" -msgstr "Telefonsuche konfigurieren" - -msgid "Configure" -msgstr "Konfigurieren" - -msgid "Configure Scans" -msgstr "Suche konfigurieren" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" -"Konfiguriere Suche für Geräte in gewählten Netzwerken. Das Verringern von " -"'Zeitüberschreitung', 'Wiederholungszähler' und/oder 'Pause zwischen " -"Anfragen' kann die Geschwindigkeit der Suche erhöhen, aber auch das Finden " -"einzelner Geräte verhindern." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"Konfiguriere Suche für SIP-Gerätein gewählten Netzwerken. Das Verringern von " -"'Zeitüberschreitung', 'Wiederholungszähler' und/oder 'Pause zwischen " -"Anfragen' kann die Geschwindigkeit der Suche erhöhen, aber auch das Finden " -"einzelner Geräte verhindern." - -msgid "Delete" -msgstr "Löschen" - -msgid "Device Scan Config" -msgstr "Gerätesuche konfigurieren" - -msgid "Device Type" -msgstr "Geräte-Typ" - -msgid "Devices discovered for" -msgstr "Geräte gefunden für" - -msgid "Devices on Network" -msgstr "Geräte im Netzwerk" - -msgid "Edit" -msgstr "Bearbeiten" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "End of MAC address range" -msgstr "Ende des MAC-Adress-Bereiches" - -msgid "Go to relevant configuration page" -msgstr "Gehe zu entsprechender Konfigurations-Seite" - -msgid "IP Address" -msgstr "IP-Adresse" - -msgid "Interface" -msgstr "Schnittstelle" - -msgid "Invalid" -msgstr "Ungültig" - -msgid "Link to Device" -msgstr "Verknüpfung zu Gerät" - -msgid "MAC Address" -msgstr "MAC-Adresse" - -msgid "MAC Device Info Overrides" -msgstr "Benutzerdefinierte MAC-zu-Gerät-Benennungen" - -msgid "MAC Device Override" -msgstr "Benutzerdefinierte MAC-zu-Gerät-Benennung" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" -"MAC-Adressbereich und Benennungen um die Informationen der System- und IEEE-" -"Datenbanken zu überschreiben" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Wartezeit zwischen den Anfragen in Millisekunden (Standard 100)" - -msgid "Model" -msgstr "Modell" - -msgid "Name" -msgstr "Name" - -msgid "Network Device Scan" -msgstr "Netzwerkgerätesuche" - -msgid "Network Device Scanning Configuration" -msgstr "Konfiguration der Netzwerkgerätesuche" - -msgid "Networks to scan for devices" -msgstr "Zu durchsuchende Netzwerke" - -msgid "Networks to scan for supported devices" -msgstr "Nach unterstützten Geräten zu durchsuchende Netzwerke" - -msgid "No SIP devices" -msgstr "keine SIP-Geräte" - -msgid "No devices detected" -msgstr "keine Geräte gefunden" - -msgid "Number of times to send requests (default 1)" -msgstr "Anzahl der Versuche Anfragen zu senden (Standard 1)" - -msgid "OUI Owner" -msgstr "OUI-Organisation" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"Überschreibt die Informationen die durch das MAC-zu-Gerätename-Programm (mac-" -"to-devinfo) für einen bestimmten MAC-Adressbereich zurückgegeben werden" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Führe Suche aus (Dies kann einige Minuten dauern)" - -msgid "Phone Information" -msgstr "Informationen zum Telefon" - -msgid "Phone Scan" -msgstr "Telefonsuche" - -msgid "Phone Scanning Configuration" -msgstr "Konfiguration der Telefonsuche" - -msgid "Phones" -msgstr "Telefone" - -msgid "Ports" -msgstr "Ports" - -msgid "Raw" -msgstr "Rohdaten" - -msgid "Repeat Count" -msgstr "Wiederholungsanzahl" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Wiederhole Suche (Dies kann einige Minuten dauern)" - -msgid "SIP Device Information" -msgstr "SIP-Geräteinformationen" - -msgid "SIP Device Scan" -msgstr "SIP-Gerätesuche" - -msgid "SIP Device Scanning Configuration" -msgstr "Konfiguration der SIP-Gerätesuche" - -msgid "SIP Devices on Network" -msgstr "SIP-Geräte im Netzwerk" - -msgid "SIP devices discovered for" -msgstr "SIP-Geräte entdeckt für" - -msgid "Scan for devices on specified networks." -msgstr "Suche nach Geräten im spezifizierten Netzwerk" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Suche nach SIP-unterstützenden Geräten im spezifizierten Netzwerk" - -msgid "Scanning Configuration" -msgstr "Such-Konfiguration" - -msgid "Scans for devices on specified networks." -msgstr "Scans for devices on specified networks." - -msgid "Sleep Between Requests" -msgstr "Wartezeit zwischen den Versuchen" - -msgid "Subnet" -msgstr "Subnetz" - -msgid "This section contains no values yet" -msgstr "Dieser Abschnitt enthält noch keine Werte" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Antwortwartezeit in Sekunden (Standard: 10)" - -msgid "Timeout" -msgstr "Zeitüberschreitung" - -msgid "Use Configuration" -msgstr "Verwende Konfiguration" - -msgid "Vendor" -msgstr "Hersteller" - -msgid "check other networks" -msgstr "Prüfe andere Netzwerke" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/el/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/el/diag_devinfo.po deleted file mode 100644 index 7a247cbd92..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/el/diag_devinfo.po +++ /dev/null @@ -1,209 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-19 15:30+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: none\n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "Προσθήκη" - -msgid "Beginning of MAC address range" -msgstr "Αρχή εύρους διευθύνσεων MAC" - -msgid "Config Phone Scan" -msgstr "Ρύθμιση Σάρωσης Τηλεφώνων" - -msgid "Configure" -msgstr "Παραμετροποίηση" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "Διαγραφή" - -msgid "Device Scan Config" -msgstr "Ρύθμιση Σάρωσης Συσκευών" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "Συσκευές στο Δίκτυο" - -msgid "Edit" -msgstr "Επεξεργασία" - -msgid "Enable" -msgstr "Ενεργοποίηση" - -msgid "End of MAC address range" -msgstr "Τέλος εύρους διευθύνσεων MAC" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "Διεύθυνση IP" - -msgid "Interface" -msgstr "Διεπαφή" - -msgid "Invalid" -msgstr "Μη έγκυρο" - -msgid "Link to Device" -msgstr "Ζεύξη με Συσκευή" - -msgid "MAC Address" -msgstr "Διεύθυνση MAC" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "Όνομα" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "Δεν υπάρχουν συσκευές SIP" - -msgid "No devices detected" -msgstr "Δεν ανιχνεύτηκαν συσκευές" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "Ιδιοκτήτης OUI" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "Πληροφορίες Τηλεφώνου" - -msgid "Phone Scan" -msgstr "Σάρωση Τηλεφώνων" - -msgid "Phone Scanning Configuration" -msgstr "Παραμετροποίηση Σάρωσης Τηλεφώνων" - -msgid "Phones" -msgstr "Τηλέφωνα" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "Ανεπεξέργαστα" - -msgid "Repeat Count" -msgstr "Επανάληψη Μέτρησης" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "Πληροφορίες Συσκευής SIP" - -msgid "SIP Device Scan" -msgstr "Σάρωση για συσκευές SIP" - -msgid "SIP Device Scanning Configuration" -msgstr "Παραμετροποίηση Σάρωσης Συσκευών SIP" - -msgid "SIP Devices on Network" -msgstr "Συσκευές SIP στο Δίκτυο" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "Σάρωση για συσκευές σε καθορισμένα δίκτυα." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "Scans for devices on specified networks." - -msgid "Sleep Between Requests" -msgstr "" - -msgid "Subnet" -msgstr "Υποδίκτυο" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "" - -msgid "Timeout" -msgstr "" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "έλεγχος άλλων δικτύων" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/en/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/en/diag_devinfo.po deleted file mode 100644 index 7adbbeaaf2..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/en/diag_devinfo.po +++ /dev/null @@ -1,213 +0,0 @@ -# Diagnostics (Device Info). -# Copyright (C) 2009 Daniel Dickinson -# Daniel Dickinson , 2009. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2009-07-17 04:22-0400\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "Add" - -msgid "Beginning of MAC address range" -msgstr "Beginning of MAC address range" - -msgid "Config Phone Scan" -msgstr "Config Phone Scan" - -msgid "Configure" -msgstr "Configure" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "Delete" - -msgid "Device Scan Config" -msgstr "Device Scan Config" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "" - -msgid "Devices on Network" -msgstr "Devices on Network" - -msgid "Edit" -msgstr "Edit" - -msgid "Enable" -msgstr "Enable" - -msgid "End of MAC address range" -msgstr "End of MAC address range" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "IP Address" - -msgid "Interface" -msgstr "Interface" - -msgid "Invalid" -msgstr "Invalid" - -msgid "Link to Device" -msgstr "Link to Device" - -msgid "MAC Address" -msgstr "MAC Address" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "MAC Device Override" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "MAC range and information used to override system and IEEE databases" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Milliseconds to sleep between requests (default 100)" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "Name" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "No SIP devices" - -msgid "No devices detected" -msgstr "No devices detected" - -msgid "Number of times to send requests (default 1)" -msgstr "Number of times to send requests (default 1)" - -msgid "OUI Owner" -msgstr "OUI Owner" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "Phone Information" - -msgid "Phone Scan" -msgstr "Phone Scan" - -msgid "Phone Scanning Configuration" -msgstr "Phone Scanning Configuration" - -msgid "Phones" -msgstr "Phones" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "Raw" - -msgid "Repeat Count" -msgstr "Repeat Count" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "SIP Device Information" - -msgid "SIP Device Scan" -msgstr "SIP Device Scan" - -msgid "SIP Device Scanning Configuration" -msgstr "SIP Device Scanning Configuration" - -msgid "SIP Devices on Network" -msgstr "SIP Devices on Network" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "Scan for devices on specified networks." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "Scans for devices on specified networks." - -msgid "Sleep Between Requests" -msgstr "Sleep Between Requests" - -msgid "Subnet" -msgstr "Subnet" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Time to wait for responses in seconds (default 10)" - -msgid "Timeout" -msgstr "Timeout" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "check other networks" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/es/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/es/diag_devinfo.po deleted file mode 100644 index 0b44ff3eb7..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/es/diag_devinfo.po +++ /dev/null @@ -1,222 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-26 20:14+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Acciones" - -msgid "Add" -msgstr "Añadir" - -msgid "Beginning of MAC address range" -msgstr "Inicio del rango de direcciones MAC" - -msgid "Config Phone Scan" -msgstr "Configurar escaneo de teléfono" - -msgid "Configure" -msgstr "Configurar" - -msgid "Configure Scans" -msgstr "Explorar configuraciones" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" -"Configure la exploración de dispositivos en las redes especificadas. " -"Reduciendo \"Espera\", \"Repeticiones\" y/o \"Parar entre peticiones\" puede " -"acelerar las exploración, pero también puede que no encuentre algunos " -"dispositivos." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"Configure la exploración de dispositivos SIP soportados en las redes " -"especificadas. Reduciendo \"Espera\", \"Repeticiones\" y/o \"Parar entre " -"peticiones\" puede acelerar la exploración, pero también puede que no " -"encuentre algunos dispositivos." - -msgid "Delete" -msgstr "Borrar" - -msgid "Device Scan Config" -msgstr "Configuración del escaneo de dispositivos" - -msgid "Device Type" -msgstr "Tipo de dispositivo" - -msgid "Devices discovered for" -msgstr "Dispositivos encontrados para" - -msgid "Devices on Network" -msgstr "Dispositivos en red" - -msgid "Edit" -msgstr "Editar" - -msgid "Enable" -msgstr "Activar" - -msgid "End of MAC address range" -msgstr "Fin del rango de direcciones MAC" - -msgid "Go to relevant configuration page" -msgstr "Ir a la página de configuración pertinente" - -msgid "IP Address" -msgstr "Dirección IP" - -msgid "Interface" -msgstr "Interfaz" - -msgid "Invalid" -msgstr "No válido" - -msgid "Link to Device" -msgstr "Enlazar con dispositivo" - -msgid "MAC Address" -msgstr "Dirección MAC" - -msgid "MAC Device Info Overrides" -msgstr "Ignorar la información del dispositivo MAC" - -msgid "MAC Device Override" -msgstr "Ignorar MAC del dispositivo" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" -"Dirección MAC e información usada para ignorar el sistema y bases de datos " -"IEEE" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Milisegundos a detenerse entre peticiones (100 por defecto)" - -msgid "Model" -msgstr "Modelo" - -msgid "Name" -msgstr "Nombre" - -msgid "Network Device Scan" -msgstr "Exploración de dispositivos de red" - -msgid "Network Device Scanning Configuration" -msgstr "Configuración de la exploración de dispositivos de red" - -msgid "Networks to scan for devices" -msgstr "Redes en las que escanear dispositivos" - -msgid "Networks to scan for supported devices" -msgstr "Redes en las que escanear dispositivos soportados" - -msgid "No SIP devices" -msgstr "No hay dispositivos SIP" - -msgid "No devices detected" -msgstr "No se detectan dispositivos" - -msgid "Number of times to send requests (default 1)" -msgstr "Número de veces que se enviarán peticiones (1 por defecto)" - -msgid "OUI Owner" -msgstr "Propietario del OUI" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"Ignorar la información devuelta por el script de información MAC a " -"dispositivo (mac-to-devinfo) para el rango de direcciones MAC que se " -"especifica" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Realizar exploraciones (puede llevar unos minutos)" - -msgid "Phone Information" -msgstr "Información de teléfono" - -msgid "Phone Scan" -msgstr "Escanear teléfono" - -msgid "Phone Scanning Configuration" -msgstr "Configuración del escaneo telefónico" - -msgid "Phones" -msgstr "Teléfonos" - -msgid "Ports" -msgstr "Puertos" - -msgid "Raw" -msgstr "Sin tratar" - -msgid "Repeat Count" -msgstr "Número de repeticiones" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Repetir exploraciones (puede llevar unos minutos)" - -msgid "SIP Device Information" -msgstr "Información de dispositivos SIP" - -msgid "SIP Device Scan" -msgstr "Escanear dispositivos SIP" - -msgid "SIP Device Scanning Configuration" -msgstr "Configuración de escaneo de dispositivos SIP" - -msgid "SIP Devices on Network" -msgstr "Dispositivos SIP en red" - -msgid "SIP devices discovered for" -msgstr "Dispositivos SIP para los que descubrir" - -msgid "Scan for devices on specified networks." -msgstr "Buscar dispositivos en las redes especificadas." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Explorar dispositivos SIP soportados en las redes especificadas." - -msgid "Scanning Configuration" -msgstr "Configuración de la exploración" - -msgid "Scans for devices on specified networks." -msgstr "Explora dispositivos en las redes especificadas." - -msgid "Sleep Between Requests" -msgstr "Detenerse entre peticiones" - -msgid "Subnet" -msgstr "Subred" - -msgid "This section contains no values yet" -msgstr "Esta sección aún no tiene valores" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Esperar de respuestas en segundos (10 por defecto)" - -msgid "Timeout" -msgstr "Espera" - -msgid "Use Configuration" -msgstr "Use la configuración" - -msgid "Vendor" -msgstr "Vendedor" - -msgid "check other networks" -msgstr "comprueba otras redes" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/fr/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/fr/diag_devinfo.po deleted file mode 100644 index e3d3809b9f..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/fr/diag_devinfo.po +++ /dev/null @@ -1,220 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-01-26 12:49+0200\n" -"Last-Translator: kyas \n" -"Language-Team: none\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Actions" - -msgid "Add" -msgstr "Ajouter" - -msgid "Beginning of MAC address range" -msgstr "Début de la plage d'adresses MAC" - -msgid "Config Phone Scan" -msgstr "Configurer la recherche de téléphone" - -msgid "Configure" -msgstr "Configurer" - -msgid "Configure Scans" -msgstr "Configurer la recherche" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" -"Configurer la recherche d'appareils sur un réseau spécifié. Réduire le " -"'Timeout', 'Repeat Count', et/ou 'Sleep Between Requests' peut augmenter la " -"vitesse des scans, mais peut aussi ne pas trouver certains appareils." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"Configurer la recherche d'appareils SIP supporté sur un réseau spécifié. " -"Réduire le 'Timeout', 'Repeat Count', et/ou 'Sleep Between Requests' peut " -"augmenter la vitesse des scans, mais peut aussi ne pas trouver certains " -"appareils." - -msgid "Delete" -msgstr "Supprimer" - -msgid "Device Scan Config" -msgstr "Configuration de la recherche de périphériques" - -msgid "Device Type" -msgstr "Type d'appareil" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "Périphériques sur le réseau" - -msgid "Edit" -msgstr "Éditer" - -msgid "Enable" -msgstr "Activer" - -msgid "End of MAC address range" -msgstr "Fin de la plage d'adresses MAC" - -msgid "Go to relevant configuration page" -msgstr "Aller à la page de configuration appropriée" - -msgid "IP Address" -msgstr "Adresse IP" - -msgid "Interface" -msgstr "Interface" - -msgid "Invalid" -msgstr "Invalide" - -msgid "Link to Device" -msgstr "Lien vers le périphérique" - -msgid "MAC Address" -msgstr "Adresse MAC" - -msgid "MAC Device Info Overrides" -msgstr "Modification info MAC du périphérique" - -msgid "MAC Device Override" -msgstr "Modification de MAC de périphériques" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" -"Gamme d'adresses MAC et informations utilisées pour modifier les bases " -"système et IEEE" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Durée d'attente en millisecondes entre les requêtes (par défaut 100)" - -msgid "Model" -msgstr "Modèle" - -msgid "Name" -msgstr "Nom" - -msgid "Network Device Scan" -msgstr "Analyse des périphériques réseau" - -msgid "Network Device Scanning Configuration" -msgstr "Configuration de l'analyse des périphériques réseau" - -msgid "Networks to scan for devices" -msgstr "Réseaux à scanner pour les périphériques " - -msgid "Networks to scan for supported devices" -msgstr "Réseaux à scanner pour les périphériques supporté" - -msgid "No SIP devices" -msgstr "Pas de périphérique SIP" - -msgid "No devices detected" -msgstr "Pas de périphérique détecté" - -msgid "Number of times to send requests (default 1)" -msgstr "Nombre de tentatives d'envois des requêtes (1 par défaut)" - -msgid "OUI Owner" -msgstr "OUI du fabricant" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"Modifie les informations renvoyées par le script d'information « MAC vers " -"Périphérique » (mac-to-devinfo) pour une gamme donnée d'adresses MAC" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Faire un scan ( Cela peut prendre quelques minutes)" - -msgid "Phone Information" -msgstr "Informations concernant le téléphone" - -msgid "Phone Scan" -msgstr "Recherche d'un téléphone" - -msgid "Phone Scanning Configuration" -msgstr "Configuration de la recherche d'un téléphone" - -msgid "Phones" -msgstr "Téléphones" - -msgid "Ports" -msgstr "Ports" - -msgid "Raw" -msgstr "Brut" - -msgid "Repeat Count" -msgstr "Nombre de tentatives" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Refaire scans (cela peut prendre quelques minutes )" - -msgid "SIP Device Information" -msgstr "Informations concernant le périphérique SIP" - -msgid "SIP Device Scan" -msgstr "Recherche de périphérique SIP" - -msgid "SIP Device Scanning Configuration" -msgstr "Configuration de la recherche de périphériques SIP" - -msgid "SIP Devices on Network" -msgstr "Périphériques SIP sur le réseau" - -msgid "SIP devices discovered for" -msgstr "Périphériques SIP découvert pour" - -msgid "Scan for devices on specified networks." -msgstr "Rechercher des périphériques sur les réseaux spécifiés." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Rechercher des périphériques SIP supportés sur les réseaux spécifiés." - -msgid "Scanning Configuration" -msgstr "Analyse de la configuration" - -msgid "Scans for devices on specified networks." -msgstr "Recherches des périphériques sur les réseaux spécifiés." - -msgid "Sleep Between Requests" -msgstr "Attente entre les requêtes" - -msgid "Subnet" -msgstr "Sous-réseau" - -msgid "This section contains no values yet" -msgstr "Cette partie ne contient pas encore de valeur." - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Durée d'attente des réponses en secondes (par défaut 10)" - -msgid "Timeout" -msgstr "Timeout" - -msgid "Use Configuration" -msgstr "Utiliser la configuration" - -msgid "Vendor" -msgstr "Vendeur" - -msgid "check other networks" -msgstr "Explorer d'autres réseaux" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/he/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/he/diag_devinfo.po deleted file mode 100644 index 7161955d81..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/he/diag_devinfo.po +++ /dev/null @@ -1,206 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Link to Device" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "" - -msgid "No devices detected" -msgstr "" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "" - -msgid "SIP Devices on Network" -msgstr "" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "" - -msgid "Subnet" -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "" - -msgid "Timeout" -msgstr "" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/hu/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/hu/diag_devinfo.po deleted file mode 100644 index 52019941b2..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/hu/diag_devinfo.po +++ /dev/null @@ -1,222 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-01-31 10:01+0200\n" -"Last-Translator: Gabor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Műveletek" - -msgid "Add" -msgstr "Hozzáadás" - -msgid "Beginning of MAC address range" -msgstr "MAC cím tartomány kezdete" - -msgid "Config Phone Scan" -msgstr "Telefon keresés beállításai" - -msgid "Configure" -msgstr "Beállítás" - -msgid "Configure Scans" -msgstr "Keresési beállítások" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" -"Állítsa be az eszközkeresést a megadott hálózatokon. Az 'Időlimit', " -"'Ismétlésszám', és/vagy 'Alvás a lekérdezések között' csökkentése " -"felgyorsíthatja a keresést, de lehet, hogy nem talál meg néhány eszközt." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"Állítsa be a támogatott SIP eszközök keresését a megadott hálózatokon. Az " -"'Időlimit', 'Ismétlésszám', és/vagy 'Alvás a lekérdezések között' " -"csökkentése felgyorsíthatja a keresést, de lehet, hogy nem talál meg néhány " -"eszközt." - -msgid "Delete" -msgstr "Törlés" - -msgid "Device Scan Config" -msgstr "Eszköz keresés beállításai" - -msgid "Device Type" -msgstr "Eszköztípus" - -msgid "Devices discovered for" -msgstr "Felfedezett eszközök" - -msgid "Devices on Network" -msgstr "Eszközök a hálózatban" - -msgid "Edit" -msgstr "Szerkesztés" - -msgid "Enable" -msgstr "Engedélyezés" - -msgid "End of MAC address range" -msgstr "MAC cím tartomány vége" - -msgid "Go to relevant configuration page" -msgstr "Ugrás a kapcsolódó beállítások oldalára" - -msgid "IP Address" -msgstr "IP cím" - -msgid "Interface" -msgstr "Interfész" - -msgid "Invalid" -msgstr "Érvénytelen" - -msgid "Link to Device" -msgstr "Eszközre mutató hivatkozás" - -msgid "MAC Address" -msgstr "MAC cím" - -msgid "MAC Device Info Overrides" -msgstr "MAC eszköz információ felülbírálások" - -msgid "MAC Device Override" -msgstr "MAC eszköz felülbírálása" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" -"A rendszer és IEEE adatbázisok felülbíráláshoz használt MAC cím tartomány és " -"információ" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" -"A kérések küldése közötti szünet időtartama ezredmásodpercben " -"(alapértelmezés: 100)" - -msgid "Model" -msgstr "Típus" - -msgid "Name" -msgstr "Név" - -msgid "Network Device Scan" -msgstr "Hálózati eszközök keresése" - -msgid "Network Device Scanning Configuration" -msgstr "Hálózati eszközök keresési beállításai" - -msgid "Networks to scan for devices" -msgstr "Eszközök keresése ezekben a hálózatokban" - -msgid "Networks to scan for supported devices" -msgstr "Támogatott eszközök keresése ezekben a hálózatokban" - -msgid "No SIP devices" -msgstr "Nem találhatóak SIP eszközök" - -msgid "No devices detected" -msgstr "Nem található semmilyen eszköz" - -msgid "Number of times to send requests (default 1)" -msgstr "Az elküldött kérések száma (alapértelmezés: 1)" - -msgid "OUI Owner" -msgstr "OUI tulajdonos" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"A meghatározott tartományba tartozó MAC címeknél felülbírálja a 'MAC to " -"Device Info' szkript (mac-to-devinfo) által visszadott információt." - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Keresés (ez eltarthat néhány percig)" - -msgid "Phone Information" -msgstr "Telefon információ" - -msgid "Phone Scan" -msgstr "Telefon keresés" - -msgid "Phone Scanning Configuration" -msgstr "Telefon keresési beállítások" - -msgid "Phones" -msgstr "Telefonok" - -msgid "Ports" -msgstr "Portok" - -msgid "Raw" -msgstr "Nyers" - -msgid "Repeat Count" -msgstr "Ismétlés száma" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Keresés megismétlése (ez eltarthat néhány percig)" - -msgid "SIP Device Information" -msgstr "SIP eszköz információ" - -msgid "SIP Device Scan" -msgstr "SIP eszközök keresése" - -msgid "SIP Device Scanning Configuration" -msgstr "SIP eszköz keresés beállításai" - -msgid "SIP Devices on Network" -msgstr "SIP eszközök a hálózatban" - -msgid "SIP devices discovered for" -msgstr "Megtalált SIP eszközök ehhez:" - -msgid "Scan for devices on specified networks." -msgstr "Eszközök keresése a megadott hálózatokban." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Támogatott SIP eszközök keresése a megadott hálózatokban." - -msgid "Scanning Configuration" -msgstr "Keresési beállítások" - -msgid "Scans for devices on specified networks." -msgstr "Scans for devices on specified networks." - -msgid "Sleep Between Requests" -msgstr "Kérések közötti szünet" - -msgid "Subnet" -msgstr "Alhálózat" - -msgid "This section contains no values yet" -msgstr "Ez a rész még nem tartlamaz értékeket" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Várakozási idő a válasz beérkezésére (alapértelemezés: 10)" - -msgid "Timeout" -msgstr "Várakozási idő" - -msgid "Use Configuration" -msgstr "Beállítás használata" - -msgid "Vendor" -msgstr "Gyártó" - -msgid "check other networks" -msgstr "egyéb hálózatok ellenőrzése" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/it/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/it/diag_devinfo.po deleted file mode 100644 index 767245c84a..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/it/diag_devinfo.po +++ /dev/null @@ -1,221 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-09 20:40+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Azioni" - -msgid "Add" -msgstr "Aggiungi" - -msgid "Beginning of MAC address range" -msgstr "Inizio del campo di indirizzi MAC" - -msgid "Config Phone Scan" -msgstr "Configura Scansione Telefono" - -msgid "Configure" -msgstr "Configura" - -msgid "Configure Scans" -msgstr "Configura Scansioni" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" -"Configurare la scansione per i dispositivi su reti specifiche. Diminuendo il " -"'Timeout', 'Numero Ripetizioni' e/o ''Pausa tra le Richieste' è possibile " -"aumentare la velocità delle scansioni, ma può anche non riuscire a trovare " -"alcuni dispositivo." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"Configurare la scansione dei dispositivi SIP supportati su reti specifiche. " -"Diminuendo il 'Timeout', 'Numero ripetizioni' e / o ''Pausa tra le " -"richieste' è possibile aumentare la velocità delle scansioni, ma può anche " -"non riuscire a trovare alcuni dispositivo." - -msgid "Delete" -msgstr "Elimina" - -msgid "Device Scan Config" -msgstr "Configura Scansione Periferica" - -msgid "Device Type" -msgstr "Tipo di Periferica" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "Periferiche in Rete" - -msgid "Edit" -msgstr "Modifica" - -msgid "Enable" -msgstr "Attiva" - -msgid "End of MAC address range" -msgstr "Fine intervallo dell' indirizzo MAC" - -msgid "Go to relevant configuration page" -msgstr "Vai alla pagina di configurazione rilevanti" - -msgid "IP Address" -msgstr "Indirizzo IP" - -msgid "Interface" -msgstr "Interfaccia" - -msgid "Invalid" -msgstr "Non valido" - -msgid "Link to Device" -msgstr "Collegamento alla Periferica" - -msgid "MAC Address" -msgstr "Indirizzo MAC" - -msgid "MAC Device Info Overrides" -msgstr "Informazioni su Sostituzioni della Periferica MAC" - -msgid "MAC Device Override" -msgstr "Sostituzione del MAC del dispositivo" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" -"La gamma e le informazioni MAC utilizzate per eseguire la sostituzione dei " -"database di sistema e IEEE" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Millisecondi di attesa tra le richieste (predefinito: 100)" - -msgid "Model" -msgstr "Modello" - -msgid "Name" -msgstr "Nome" - -msgid "Network Device Scan" -msgstr "Dispositivo Scansione della Rete" - -msgid "Network Device Scanning Configuration" -msgstr "Configurazione Dispositivo di Scansione della Rete" - -msgid "Networks to scan for devices" -msgstr "Reti da scandire per i dispositivi" - -msgid "Networks to scan for supported devices" -msgstr "Reti da scandire per i dispositivi supportati" - -msgid "No SIP devices" -msgstr "Nessun dispositivo SIP" - -msgid "No devices detected" -msgstr "Nessun dispositivo rilevato" - -msgid "Number of times to send requests (default 1)" -msgstr "Numero di volte delle richieste da inviare (predefinito: 1)" - -msgid "OUI Owner" -msgstr "Proprietario OUI" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"Ignora le informazioni restituite dal MAC su Script per le Informazioni sul " -"dispositivo (mac-in-devinfo) per un determinato intervallo di indirizzi MAC" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Rilevamento (richiede alcuni minuti)" - -msgid "Phone Information" -msgstr "Informazione Telefono" - -msgid "Phone Scan" -msgstr "Rilevamento Telefono" - -msgid "Phone Scanning Configuration" -msgstr "Configurazione Rilevamento Telefono" - -msgid "Phones" -msgstr "Telefoni" - -msgid "Ports" -msgstr "Porte" - -msgid "Raw" -msgstr "Raw" - -msgid "Repeat Count" -msgstr "Ripetizione Conteggio" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Ripetizione Rilevamento (richiede alcuni minuti)" - -msgid "SIP Device Information" -msgstr "Informazioni Periferica SIP" - -msgid "SIP Device Scan" -msgstr "Rilevamento Periferica SIP" - -msgid "SIP Device Scanning Configuration" -msgstr "Configurazione Rilevamento Periferica SIP" - -msgid "SIP Devices on Network" -msgstr "Periferiche SIP in Rete" - -msgid "SIP devices discovered for" -msgstr "Periferiche SIP rilevate per" - -msgid "Scan for devices on specified networks." -msgstr "Rilevamento per periferiche su reti specificate." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Rilevamento per periferiche SIP supportate sulle reti specificate." - -msgid "Scanning Configuration" -msgstr "Configurazione Rilevamento" - -msgid "Scans for devices on specified networks." -msgstr "Rilevamento periferiche sulle reti specificate." - -msgid "Sleep Between Requests" -msgstr "Attendi tra le richieste" - -msgid "Subnet" -msgstr "Sottorete" - -msgid "This section contains no values yet" -msgstr "Questa sezione non contiene ancora valori" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Tempo di attesa per le risposte in secondi (predefinito: 10)" - -msgid "Timeout" -msgstr "Timeout" - -msgid "Use Configuration" -msgstr "Usa Configurazione" - -msgid "Vendor" -msgstr "Produttore" - -msgid "check other networks" -msgstr "Controlla altre reti" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/ja/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/ja/diag_devinfo.po deleted file mode 100644 index 1ef3dadc23..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/ja/diag_devinfo.po +++ /dev/null @@ -1,209 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-19 07:59+0200\n" -"Last-Translator: Kentaro \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.4\n" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "追加" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "設定" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "削除" - -msgid "Device Scan Config" -msgstr "デバイススキャン設定" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "" - -msgid "Devices on Network" -msgstr "ネットワーク上のデバイス" - -msgid "Edit" -msgstr "編集" - -msgid "Enable" -msgstr "有効" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "IPアドレス" - -msgid "Interface" -msgstr "インターフェース" - -msgid "Invalid" -msgstr "" - -msgid "Link to Device" -msgstr "" - -msgid "MAC Address" -msgstr "MACアドレス" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "リクエスト間のスリープ時間 (単位:ミリ秒, 標準設定:100)" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "SIPデバイスは見つかりませんでした。" - -msgid "No devices detected" -msgstr "デバイスは検出されませんでした。" - -msgid "Number of times to send requests (default 1)" -msgstr "リクエスト送信回数 (標準設定:1)" - -msgid "OUI Owner" -msgstr "" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "電話" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "リピート回数" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "SIPデバイス情報" - -msgid "SIP Device Scan" -msgstr "SIPデバイスのスキャン" - -msgid "SIP Device Scanning Configuration" -msgstr "SIPデバイススキャン設定" - -msgid "SIP Devices on Network" -msgstr "ネットワーク上のSIPデバイス" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "リクエスト間のスリープ時間" - -msgid "Subnet" -msgstr "サブネット" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "応答待ち時間 (単位:秒, 標準設定:10)" - -msgid "Timeout" -msgstr "タイムアウト" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/ms/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/ms/diag_devinfo.po deleted file mode 100644 index 27d2b46170..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/ms/diag_devinfo.po +++ /dev/null @@ -1,205 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Link to Device" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "" - -msgid "No devices detected" -msgstr "" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "" - -msgid "SIP Devices on Network" -msgstr "" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "" - -msgid "Subnet" -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "" - -msgid "Timeout" -msgstr "" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/no/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/no/diag_devinfo.po deleted file mode 100644 index 4ada96badb..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/no/diag_devinfo.po +++ /dev/null @@ -1,213 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Actions" -msgstr "Handlinger" - -msgid "Add" -msgstr "Legg til" - -msgid "Beginning of MAC address range" -msgstr "Begynnelsen av MAC adresseomrÃ¥de" - -msgid "Config Phone Scan" -msgstr "Konfigurer Telefon Skanning" - -msgid "Configure" -msgstr "Konfigurer" - -msgid "Configure Scans" -msgstr "Konfigurer Skanning" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" -"Konfigurer skanning etter enheter pÃ¥ angitte nettverk. Ved Ã¥ minske verdiene " -"til 'Tidsavbrudd', 'Gjentagelser' og/eller Tid mellom forespørsler blir " -"skanningen utført raskere, men det kan ogsÃ¥ medføre at noen enheter ikke " -"blir funnet." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"Konfigurer skanning etter støttede SIP enheter pÃ¥ angitte nettverk. Ved Ã¥ " -"minske verdiene til 'Tidsavbrudd', 'Gjentagelser' og/eller tid mellom " -"forespørsler blir skanningen utført raskere, men det kan ogsÃ¥ medføre at " -"noen enheter ikke blir funnet." - -msgid "Delete" -msgstr "Slett" - -msgid "Device Scan Config" -msgstr "Enhets skann konfigurasjon" - -msgid "Device Type" -msgstr "Enhets type" - -msgid "Devices discovered for" -msgstr "Enheter oppdaget for" - -msgid "Devices on Network" -msgstr "Enheter i Nettverket" - -msgid "Edit" -msgstr "Rediger" - -msgid "Enable" -msgstr "Aktiver" - -msgid "End of MAC address range" -msgstr "Slutten av MAC omrÃ¥de" - -msgid "Go to relevant configuration page" -msgstr "GÃ¥ til relevant konfigurasjons side" - -msgid "IP Address" -msgstr "IP Adresse" - -msgid "Interface" -msgstr "Grensesnitt" - -msgid "Invalid" -msgstr "Ugyldig" - -msgid "Link to Device" -msgstr "Link til Enhet" - -msgid "MAC Address" -msgstr "MAC Adresse" - -msgid "MAC Device Info Overrides" -msgstr "MAC Enhets Info Overstyring" - -msgid "MAC Device Override" -msgstr "MAC Enhets Overstyring" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" -"MAC omrÃ¥de og informasjon brukt til Ã¥ overstyre system og IEEE databaser" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Antall millisekunder ventetid mellom forespørsler (standard 100)" - -msgid "Model" -msgstr "Modell" - -msgid "Name" -msgstr "Navn" - -msgid "Network Device Scan" -msgstr "Nettverks Enhets Skanning" - -msgid "Network Device Scanning Configuration" -msgstr "Nettverks Enhets Skanning Konfigurasjon" - -msgid "Networks to scan for devices" -msgstr "Nettverk som blir skannet" - -msgid "Networks to scan for supported devices" -msgstr "Nettverk som blir skannet for støttede enheter" - -msgid "No SIP devices" -msgstr "Ingen SIP enheter" - -msgid "No devices detected" -msgstr "Ingen enheter oppdaget" - -msgid "Number of times to send requests (default 1)" -msgstr "Antall ganger Ã¥ sende forespørsel (standard 1)" - -msgid "OUI Owner" -msgstr "OUI Eier" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"Overstyr informasjonen hentet fra MAC til enhets info skriptet (mac-til-" -"devinfo) for et gitt omrÃ¥de med MAC adresser" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Utfør Skanning (dette kan ta noen minutter)" - -msgid "Phone Information" -msgstr "Telefon Informasjon" - -msgid "Phone Scan" -msgstr "Telefon skanning" - -msgid "Phone Scanning Configuration" -msgstr "Telefon skanning konfigurasjon" - -msgid "Phones" -msgstr "Telefoner" - -msgid "Ports" -msgstr "Porter" - -msgid "Raw" -msgstr "RÃ¥" - -msgid "Repeat Count" -msgstr "Gjentagelser" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Gjennta Skanning (dette kan ta noen minutter)" - -msgid "SIP Device Information" -msgstr "SIP Enhets Informasjon" - -msgid "SIP Device Scan" -msgstr "SIP Enhets Skanning" - -msgid "SIP Device Scanning Configuration" -msgstr "SIP Enhets Skann Konfigurasjon" - -msgid "SIP Devices on Network" -msgstr "SIP Enheter i Nettverket" - -msgid "SIP devices discovered for" -msgstr "SIP enheter oppdaget pÃ¥" - -msgid "Scan for devices on specified networks." -msgstr "Skann etter enheter pÃ¥ spesifiserte nettverk" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Skann etter SIP enheter pÃ¥ spesifiserte nettverk" - -msgid "Scanning Configuration" -msgstr "Skanning Konfigurasjon" - -msgid "Scans for devices on specified networks." -msgstr "Nettverks Skanning Informasjon" - -msgid "Sleep Between Requests" -msgstr "Tid mellom forespørsler" - -msgid "Subnet" -msgstr "Subnett" - -msgid "This section contains no values yet" -msgstr "Denne seksjonen inneholder ennÃ¥ ingen verdier" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Tid for Ã¥ vente pÃ¥ svar i sekunder (standard 10)" - -msgid "Timeout" -msgstr "Tidsavbrudd" - -msgid "Use Configuration" -msgstr "Bruk Konfigurasjonen" - -msgid "Vendor" -msgstr "Leverandør" - -msgid "check other networks" -msgstr "skjekk andre nettverk" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/pl/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/pl/diag_devinfo.po deleted file mode 100644 index 32ccdce516..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/pl/diag_devinfo.po +++ /dev/null @@ -1,222 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-10-11 13:44+0200\n" -"Last-Translator: mesiu84 \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Akcje" - -msgid "Add" -msgstr "Dodaj" - -msgid "Beginning of MAC address range" -msgstr "Początek zakresu MAC adresów" - -msgid "Config Phone Scan" -msgstr "Konfiguruj skanowanie telefonów" - -msgid "Configure" -msgstr "Konfiguruj" - -msgid "Configure Scans" -msgstr "Konfiguruj skany" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" -"Konfiguruj skanowanie dla urządzeń w wybranych sieciach. Zmniejszanie " -"\"Limitu czasu\", \"Liczby powtórzeń\" i/lub \"Oczekiwania między żądaniami" -"\" może przyspieszyć skany, ale może też uniemożliwić wykrycie niektórych " -"urządzeń." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"Konfiguruj skanowanie dla wspieranych urządzeń SIP w wybranych sieciach. " -"Zmniejszanie \"Limitu czasu\", \"Liczby powtórzeń\" i/lub \"Oczekiwania " -"między żądaniami\" może przyspieszyć skany, ale może też uniemożliwić " -"wykrycie niektórych urządzeń." - -msgid "Delete" -msgstr "Usuń" - -msgid "Device Scan Config" -msgstr "Konfiguruj skanowanie urządzeń" - -msgid "Device Type" -msgstr "Typ urządzenia" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "Urządzenia w sieci" - -msgid "Edit" -msgstr "Edytuj" - -msgid "Enable" -msgstr "Włącz" - -msgid "End of MAC address range" -msgstr "Koniec zakresu adresów MAC" - -msgid "Go to relevant configuration page" -msgstr "Idź do stosownej strony konfiguracyjnej" - -msgid "IP Address" -msgstr "Adres IP" - -msgid "Interface" -msgstr "Interfejs" - -msgid "Invalid" -msgstr "Nieprawidłowe" - -msgid "Link to Device" -msgstr "Połączenie do urządzenia" - -msgid "MAC Address" -msgstr "Adres MAC" - -msgid "MAC Device Info Overrides" -msgstr "Nadpisywanie informacji o adresie MAC urządzenia" - -msgid "MAC Device Override" -msgstr "Pomijanie adresu MAC urządzenia" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" -"Zakres adresów MAC i informacje użyte do zastąpienia baz danych systemowych " -"i IEEE" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Ilośś milisekund pauzy pomiędzy zapytaniami (domyślnie 100)" - -msgid "Model" -msgstr "Model" - -msgid "Name" -msgstr "Nazwa" - -msgid "Network Device Scan" -msgstr "Skan urządzeń w sieci" - -msgid "Network Device Scanning Configuration" -msgstr "Ustawienia skanowania urządzeń w sieci" - -msgid "Networks to scan for devices" -msgstr "Sieci do skanowania w poszukiwaniu urządzeń" - -msgid "Networks to scan for supported devices" -msgstr "Sieci do skanowania w poszukiwaniu wspieranych urządzeń" - -msgid "No SIP devices" -msgstr "Brak urządzeń SIP" - -msgid "No devices detected" -msgstr "Nie wykryto urządzeń" - -msgid "Number of times to send requests (default 1)" -msgstr "Ilość powtórzeń wysłania żądania (domyślnie 1)" - -msgid "OUI Owner" -msgstr "Właściciel OUI" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"Zastąp informacje zwracanych przez skrypt MAC to Device Info Script (MAC-to-" -"devinfo) dla określonego zakresu adresów MAC" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Wykonaj skany (to może potrwać kilka minut)" - -msgid "Phone Information" -msgstr "Informacje o telefonie" - -msgid "Phone Scan" -msgstr "Skanowanie telefonów" - -msgid "Phone Scanning Configuration" -msgstr "Konfiguracja skanowania telefonu" - -msgid "Phones" -msgstr "Telefony" - -msgid "Ports" -msgstr "Porty" - -msgid "Raw" -msgstr "Surowe" - -msgid "Repeat Count" -msgstr "Ilość powtórzeń" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Powtórz skany (to może potrwać kilka minut)" - -msgid "SIP Device Information" -msgstr "Informacje o urządzeniu SIP" - -msgid "SIP Device Scan" -msgstr "Skanowanie urządzeń SIP" - -msgid "SIP Device Scanning Configuration" -msgstr "Konfiguracja skanowania urządzeń SIP" - -msgid "SIP Devices on Network" -msgstr "Urządzenia SIP w sieci" - -msgid "SIP devices discovered for" -msgstr "Urządzenia SIP znalezione dla" - -msgid "Scan for devices on specified networks." -msgstr "Skanuj w poszukiwaniu urządzeń w wybranych sieciach." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Skanuj w poszukiwaniu wspieranych urządzeń SIP w wybranych sieciach." - -msgid "Scanning Configuration" -msgstr "Ustawienia skanowania" - -msgid "Scans for devices on specified networks." -msgstr "Scans for devices on specified networks." - -msgid "Sleep Between Requests" -msgstr "Pauza pomiędzy zapytaniami" - -msgid "Subnet" -msgstr "Podsieć" - -msgid "This section contains no values yet" -msgstr "Ta sekcja nie zawiera jeszcze wartości" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Czas oczekiwania na odpowiedź w sekundach (domyślnie 10)" - -msgid "Timeout" -msgstr "Czas oczekiwania" - -msgid "Use Configuration" -msgstr "Użyj konfiguracji" - -msgid "Vendor" -msgstr "Sprzedawca" - -msgid "check other networks" -msgstr "sprawdź inne sieci" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/pt-br/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/pt-br/diag_devinfo.po deleted file mode 100644 index 53face0d5d..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/pt-br/diag_devinfo.po +++ /dev/null @@ -1,220 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-17 23:51+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Actions" -msgstr "Ações" - -msgid "Add" -msgstr "Adicionar" - -msgid "Beginning of MAC address range" -msgstr "Começo da faixa de endereços MAC" - -msgid "Config Phone Scan" -msgstr "Configurar a Busca por Telefone" - -msgid "Configure" -msgstr "Configurar" - -msgid "Configure Scans" -msgstr "Configurar Scans" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" -"Configura busca por dispositivos em redes específicas. Ao se reduzir " -"'Timeout', 'Repeat Count' e/ou 'Sleep Between Requests' pode-se agilizar " -"buscas, mas também pode não encontrar alguns dispositivos." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"Configura busca por dispositivos com suporte a SIP em redes específicas. Ao " -"se reduzir 'Timeout', 'Repeat Count' e/ou 'Sleep Between Requests' pode-se " -"agilizar buscas, mas também pode não encontrar alguns dispositivos." - -msgid "Delete" -msgstr "Apagar" - -msgid "Device Scan Config" -msgstr "Configurar a Busca por Dispositivos" - -msgid "Device Type" -msgstr "Tipo de dispositivo" - -msgid "Devices discovered for" -msgstr "Dispositivos descobertos para" - -msgid "Devices on Network" -msgstr "Dispositivos na Rede" - -msgid "Edit" -msgstr "Editar" - -msgid "Enable" -msgstr "Habilitar" - -msgid "End of MAC address range" -msgstr "Final da faixa de endereços MAC" - -msgid "Go to relevant configuration page" -msgstr "Vá para página de configuração relevante" - -msgid "IP Address" -msgstr "Endereço IP" - -msgid "Interface" -msgstr "Interface" - -msgid "Invalid" -msgstr "Inválido" - -# Link like or network link? -msgid "Link to Device" -msgstr "Ligar ao Dispositivo" - -msgid "MAC Address" -msgstr "Endereço MAC" - -msgid "MAC Device Info Overrides" -msgstr "Sobrescrição da informação do dispositivo MAC" - -msgid "MAC Device Override" -msgstr "Sobrescreve o Dispositivo MAC" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" -"Faixa MAC e informação usada para sobrescrever os bancos de dados do sistema " -"e IEEE" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Milissegundos para esperar entre requisições (padrão 100)" - -msgid "Model" -msgstr "Modelo" - -msgid "Name" -msgstr "Nome" - -msgid "Network Device Scan" -msgstr "Busca por dispositivo de rede" - -msgid "Network Device Scanning Configuration" -msgstr "Configuração de busca por dispositivo de rede" - -msgid "Networks to scan for devices" -msgstr "Redes a serem pesquisadas por dispositivos" - -msgid "Networks to scan for supported devices" -msgstr "Redes a serem pesquisadas por dispositivos suportados" - -msgid "No SIP devices" -msgstr "Nenhum dispositivo SIP" - -msgid "No devices detected" -msgstr "Nenhum dispositivo detectado" - -msgid "Number of times to send requests (default 1)" -msgstr "Número de vezes para enviar requisições (padrão 1 )" - -msgid "OUI Owner" -msgstr "Dono da OUI" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"Sobrescrever a informação retornada pelo MAC para o Script de Informação do " -"Dispositivo (mac-to_devinfo) para uma faixa especificada de Endereços MAC" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Realiza buscas (pode levar alguns minutos)" - -msgid "Phone Information" -msgstr "Informação do Telefone" - -msgid "Phone Scan" -msgstr "Busca por Telefone" - -msgid "Phone Scanning Configuration" -msgstr "Configuração da Busca por Telefone" - -msgid "Phones" -msgstr "Telefones" - -msgid "Ports" -msgstr "Portas" - -msgid "Raw" -msgstr "Bruto" - -msgid "Repeat Count" -msgstr "Quantidade de Repetições" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Buscas Repetidas (pode levar alguns minutos)" - -msgid "SIP Device Information" -msgstr "Informação de Dispositivo SIP" - -msgid "SIP Device Scan" -msgstr "Busca por Dispositivos SIP" - -msgid "SIP Device Scanning Configuration" -msgstr "Configuração da Busca por Dispositivos SIP" - -msgid "SIP Devices on Network" -msgstr "Dispositivos SIP na Rede" - -msgid "SIP devices discovered for" -msgstr "Dispositivos SIP descobertos para" - -msgid "Scan for devices on specified networks." -msgstr "Busca por dispositivos nas redes especificadas." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Busca por dispositivos com suporte a SIP em redes especificadas." - -msgid "Scanning Configuration" -msgstr "Configuração de busca" - -msgid "Scans for devices on specified networks." -msgstr "Busca por dispositivos nas redes especificadas." - -msgid "Sleep Between Requests" -msgstr "Espera Entre Requisições" - -msgid "Subnet" -msgstr "Subrede" - -msgid "This section contains no values yet" -msgstr "Esta seção contém nenhum valor ainda" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Tempo para esperar por respostas em segundos (padrão 10)" - -msgid "Timeout" -msgstr "Estouro de tempo" - -msgid "Use Configuration" -msgstr "Usar configuração" - -msgid "Vendor" -msgstr "Fabricante" - -msgid "check other networks" -msgstr "verifique outras redes" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/pt/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/pt/diag_devinfo.po deleted file mode 100644 index afe488503d..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/pt/diag_devinfo.po +++ /dev/null @@ -1,209 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-06-03 12:23+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Acções" - -msgid "Add" -msgstr "Adicionar" - -msgid "Beginning of MAC address range" -msgstr "Inicio da gama de endereços MAC" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "Configurar" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "Apagar" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "Tipo de Dispositivo" - -msgid "Devices discovered for" -msgstr "Dispositivos descobertos para" - -msgid "Devices on Network" -msgstr "Dispositivos na Rede" - -msgid "Edit" -msgstr "Editar" - -msgid "Enable" -msgstr "Ativar" - -msgid "End of MAC address range" -msgstr "Fim da gama de endereços MAC" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "Endereço IP" - -msgid "Interface" -msgstr "Interface" - -msgid "Invalid" -msgstr "Inválido" - -msgid "Link to Device" -msgstr "" - -msgid "MAC Address" -msgstr "Endereço MAC" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "Modelo" - -msgid "Name" -msgstr "Nome" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "Não há dispositivos SIP" - -msgid "No devices detected" -msgstr "Não foram detetados dispositivos" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "Dono OUI" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "Informação do Telefone" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "" - -msgid "Ports" -msgstr "Portas" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "Repetir Contagem" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "" - -msgid "SIP Devices on Network" -msgstr "" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "" - -msgid "Subnet" -msgstr "Sub-rede" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "" - -msgid "Timeout" -msgstr "" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "verificar outras redes" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/ro/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/ro/diag_devinfo.po deleted file mode 100644 index eefbd5e18f..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/ro/diag_devinfo.po +++ /dev/null @@ -1,210 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-09 14:27+0200\n" -"Last-Translator: lex404 \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "Acțiuni" - -msgid "Add" -msgstr "Adauga" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "Configureaza scanarea telefonului" - -msgid "Configure" -msgstr "Configureaza" - -msgid "Configure Scans" -msgstr "Configurează scanări" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "Sterge" - -msgid "Device Scan Config" -msgstr "Configureaza scanarea dispozitivului" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "Dispozitive descoperite pentru" - -msgid "Devices on Network" -msgstr "Dispozitive in retea" - -msgid "Edit" -msgstr "Editeaza" - -msgid "Enable" -msgstr "Activeaza" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "Adresa IP" - -msgid "Interface" -msgstr "Interfata" - -msgid "Invalid" -msgstr "Invalid" - -msgid "Link to Device" -msgstr "Legatura spre dispozitiv" - -msgid "MAC Address" -msgstr "Adresa MAC" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Milisecunde de asteptare intre cereri (100 implicit)" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "Nume" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "Nici un device SIP" - -msgid "No devices detected" -msgstr "Nici un dispozitiv detectat" - -msgid "Number of times to send requests (default 1)" -msgstr "Numarul de trimiteri cereri (1 implicit)" - -msgid "OUI Owner" -msgstr "" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "Informatii despre telefon" - -msgid "Phone Scan" -msgstr "Scanare telefon" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "Telefoane" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "Numarul de repetitii" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "Informatii despre dispozitivul SIP" - -msgid "SIP Device Scan" -msgstr "Scanare dispozitiv SIP" - -msgid "SIP Device Scanning Configuration" -msgstr "Configurarea scanarii dispozitivului SIP" - -msgid "SIP Devices on Network" -msgstr "Dispozitive SIP in retea" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "Pauza dintre cereri" - -msgid "Subnet" -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Timpul de asteptare pentru raspunsuri in secunde (10 implicit)" - -msgid "Timeout" -msgstr "" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "verifica alte retele" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/ru/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/ru/diag_devinfo.po deleted file mode 100644 index 7531dde444..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/ru/diag_devinfo.po +++ /dev/null @@ -1,223 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: diag_devinfo\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2014-01-31 21:07+0200\n" -"Last-Translator: Moon_dark \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Actions" -msgstr "Действия" - -msgid "Add" -msgstr "Добавить" - -msgid "Beginning of MAC address range" -msgstr "Начало диапазона MAC-адресов" - -msgid "Config Phone Scan" -msgstr "Настроить сканирование телефонов" - -msgid "Configure" -msgstr "Настроить" - -msgid "Configure Scans" -msgstr "Настроить сканирование" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" -"Настроить сканирование устройств в указанных сетях. Уменьшение таймаута, " -"количества повторов и/или паузы между запросами может ускорить сканирование, " -"но также вызвать проблемы поиска некоторых устройств." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"Настроить сканирование поддерживаемых SIP-устройств в указанных сетях. " -"Уменьшение таймаута, количества повторов и/или паузы между запросами может " -"ускорить сканирование, но также вызвать проблемы поиска некоторых устройств." - -msgid "Delete" -msgstr "Удалить" - -msgid "Device Scan Config" -msgstr "Конфигурация сканирования устройства" - -msgid "Device Type" -msgstr "Тип устройства" - -msgid "Devices discovered for" -msgstr "Устройства, найденные в" - -msgid "Devices on Network" -msgstr "Устройства в сети" - -msgid "Edit" -msgstr "Редактировать" - -msgid "Enable" -msgstr "Включить" - -msgid "End of MAC address range" -msgstr "Конец диапазона MAC адресов" - -msgid "Go to relevant configuration page" -msgstr "Перейти на соответствующую страницу конфигурации" - -msgid "IP Address" -msgstr "IP-адрес" - -msgid "Interface" -msgstr "Интерфейс" - -msgid "Invalid" -msgstr "Неверный" - -msgid "Link to Device" -msgstr "Соединение с устройством" - -msgid "MAC Address" -msgstr "MAC-адрес" - -#, fuzzy -msgid "MAC Device Info Overrides" -msgstr "Переопределение информации о MAC-устройстве" - -msgid "MAC Device Override" -msgstr "Задать MAC-адрес устройства" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" -"Диапазон MAC-адресов и информация для переопределения системной базы данных " -"и базы данных IEEE" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Время бездействия между запросами (мс, 100 по умолчанию)" - -msgid "Model" -msgstr "Модель" - -msgid "Name" -msgstr "Имя" - -msgid "Network Device Scan" -msgstr "Сканирование сетевых устройств" - -msgid "Network Device Scanning Configuration" -msgstr "Конфигурация сканирования сетевых устройств" - -msgid "Networks to scan for devices" -msgstr "Сети, в которых производить сканирование устройств" - -msgid "Networks to scan for supported devices" -msgstr "Сети, в которых производить сканирование поддерживаемых устройств" - -msgid "No SIP devices" -msgstr "SIP-устройства отсутствуют" - -msgid "No devices detected" -msgstr "Устройства не обнаружены" - -msgid "Number of times to send requests (default 1)" -msgstr "Количество запросов (1 по умолчанию)" - -msgid "OUI Owner" -msgstr "Владелец OUI" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" -"Переопределить значения, полученные из скрипта \"MAC to Device\" (mac-to-" -"devinfo), для заданного диапазона MAC-адресов" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Произвести сканирование (это может занять несколько минут)" - -msgid "Phone Information" -msgstr "Информация о телефоне" - -msgid "Phone Scan" -msgstr "Сканировать телефоны" - -msgid "Phone Scanning Configuration" -msgstr "Конфигурация сканирования телефонов" - -msgid "Phones" -msgstr "Телефоны" - -msgid "Ports" -msgstr "Порты" - -msgid "Raw" -msgstr "Необработанные (сырые) данные" - -msgid "Repeat Count" -msgstr "Количество повторов" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Повторить сканирование (это может занять несколько минут)" - -msgid "SIP Device Information" -msgstr "Информация о SIP-устройстве" - -msgid "SIP Device Scan" -msgstr "Сканировать SIP-устройства" - -msgid "SIP Device Scanning Configuration" -msgstr "Конфигурация сканирования SIP-устройств" - -msgid "SIP Devices on Network" -msgstr "SIP-устройства в сети" - -msgid "SIP devices discovered for" -msgstr "SIP-устройства, найденные в" - -msgid "Scan for devices on specified networks." -msgstr "Сканировать устройства в заданных сетях." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Сканировать поддерживаемые SIP-устройства в заданных сетях." - -msgid "Scanning Configuration" -msgstr "Конфигурация сканирования" - -msgid "Scans for devices on specified networks." -msgstr "Сканирует устройства в заданных сетях." - -msgid "Sleep Between Requests" -msgstr "Пауза между запросами" - -msgid "Subnet" -msgstr "Подсеть" - -msgid "This section contains no values yet" -msgstr "Эта секция пока не содержит значений." - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Время ожидания ответов (сек, 10 по умолчанию)" - -msgid "Timeout" -msgstr "Таймаут" - -msgid "Use Configuration" -msgstr "Использовать конфигурацию" - -msgid "Vendor" -msgstr "Производитель" - -msgid "check other networks" -msgstr "проверить другие сети" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/sk/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/sk/diag_devinfo.po deleted file mode 100644 index 0d62204ca1..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/sk/diag_devinfo.po +++ /dev/null @@ -1,206 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "" - -msgid "Devices on Network" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Link to Device" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "" - -msgid "No devices detected" -msgstr "" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "" - -msgid "SIP Devices on Network" -msgstr "" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "" - -msgid "Subnet" -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "" - -msgid "Timeout" -msgstr "" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po deleted file mode 100644 index d68116bf7b..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po +++ /dev/null @@ -1,207 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Kristoffer Grundström \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Actions" -msgstr "Åtgärder" - -msgid "Add" -msgstr "Lägg till" - -msgid "Beginning of MAC address range" -msgstr "Början av räckvidd för MAC-adress" - -msgid "Config Phone Scan" -msgstr "Konfigurera skanning av telefon" - -msgid "Configure" -msgstr "Konfigurera" - -msgid "Configure Scans" -msgstr "Konfigurera skanningar" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "Radera" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "Enhetstyp" - -msgid "Devices discovered for" -msgstr "" - -msgid "Devices on Network" -msgstr "Enheter pÃ¥ nätverket" - -msgid "Edit" -msgstr "Redigera" - -msgid "Enable" -msgstr "Aktivera" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "GÃ¥ till relevant konfigurationssida" - -msgid "IP Address" -msgstr "IP-adress" - -msgid "Interface" -msgstr "Gränssnitt" - -msgid "Invalid" -msgstr "Ogiltig" - -msgid "Link to Device" -msgstr "Länka till enhet" - -msgid "MAC Address" -msgstr "MAC-adress" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "Millisekunder att sova mellan förfrÃ¥gningar (100 är standard)" - -msgid "Model" -msgstr "Modell" - -msgid "Name" -msgstr "Namn" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "Nätverk att skanna efter enheter i" - -msgid "Networks to scan for supported devices" -msgstr "Nätverk att skanna efter enheter som stöds" - -msgid "No SIP devices" -msgstr "Inga SIP-enheter" - -msgid "No devices detected" -msgstr "Upptäckte inga enheter" - -msgid "Number of times to send requests (default 1)" -msgstr "Antalet gÃ¥nger att skicka förfrÃ¥gningar (1 är standard)" - -msgid "OUI Owner" -msgstr "OUI-ägare" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "Utför skanningar (det här kan ta ett par minuter)" - -msgid "Phone Information" -msgstr "Information om telefon" - -msgid "Phone Scan" -msgstr "Skanna telefon" - -msgid "Phone Scanning Configuration" -msgstr "Konfiguration av skanning i telefon" - -msgid "Phones" -msgstr "Telefoner" - -msgid "Ports" -msgstr "Portar" - -msgid "Raw" -msgstr "RÃ¥" - -msgid "Repeat Count" -msgstr "" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "Repetera skanningar (det här kan ta nÃ¥gra minuter)" - -msgid "SIP Device Information" -msgstr "Information om SIP-enhet" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "Skanningskonfiguration för SIP-enhet" - -msgid "SIP Devices on Network" -msgstr "SIP-enheter pÃ¥ nätverk" - -msgid "SIP devices discovered for" -msgstr "Upptäckta SIP-enheter för" - -msgid "Scan for devices on specified networks." -msgstr "Skanna efter enheter i angivna nätverk." - -msgid "Scan for supported SIP devices on specified networks." -msgstr "Skannar efter SIP-enheter som stöds i angivna nätverk." - -msgid "Scanning Configuration" -msgstr "Skannar konfiguration" - -msgid "Scans for devices on specified networks." -msgstr "Skannar efter enheter i angivna nätverk." - -msgid "Sleep Between Requests" -msgstr "Sov mellan förfrÃ¥gningar" - -msgid "Subnet" -msgstr "Subnät" - -msgid "This section contains no values yet" -msgstr "Den här sektionen innehÃ¥ller inga värden än" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Tid att vänta pÃ¥ svar i sekunder (standard 10)" - -msgid "Timeout" -msgstr "Avbrott" - -msgid "Use Configuration" -msgstr "Använd konfiguration" - -msgid "Vendor" -msgstr "Tillverkare" - -msgid "check other networks" -msgstr "kolla andra nätverk" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/templates/diag_devinfo.pot b/package/luci/applications/luci-app-diag-devinfo/po/templates/diag_devinfo.pot deleted file mode 100644 index 350466c0d2..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/templates/diag_devinfo.pot +++ /dev/null @@ -1,199 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "" - -msgid "Devices on Network" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Link to Device" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "" - -msgid "No devices detected" -msgstr "" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "" - -msgid "SIP Devices on Network" -msgstr "" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "" - -msgid "Subnet" -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "" - -msgid "Timeout" -msgstr "" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/tr/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/tr/diag_devinfo.po deleted file mode 100644 index 32516758bc..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/tr/diag_devinfo.po +++ /dev/null @@ -1,206 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Link to Device" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "" - -msgid "No devices detected" -msgstr "" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "" - -msgid "SIP Devices on Network" -msgstr "" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "" - -msgid "Subnet" -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "" - -msgid "Timeout" -msgstr "" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/uk/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/uk/diag_devinfo.po deleted file mode 100644 index 03f49eb065..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/uk/diag_devinfo.po +++ /dev/null @@ -1,219 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-13 15:23+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "Додати" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "Конфігурація" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "Вилучити" - -msgid "Device Scan Config" -msgstr "Конфігурація пристрою сканування" - -msgid "Device Type" -msgstr "Тип пристрою" - -msgid "Devices discovered for" -msgstr "Виявленні пристрої на" - -msgid "Devices on Network" -msgstr "Пристрої в мережі" - -msgid "Edit" -msgstr "Редагувати" - -msgid "Enable" -msgstr "Активувати" - -msgid "End of MAC address range" -msgstr "" - -#, fuzzy -msgid "Go to relevant configuration page" -msgstr "Перейти до відповідної сторінки конфігурації" - -msgid "IP Address" -msgstr "IP-адреса" - -msgid "Interface" -msgstr "Інтерфейс" - -msgid "Invalid" -msgstr "Несправність" - -msgid "Link to Device" -msgstr "Посилання на пристрій" - -msgid "MAC Address" -msgstr "MAC-адреса" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "Модель" - -msgid "Name" -msgstr "Назва" - -msgid "Network Device Scan" -msgstr "Сканування мережевих пристроїв" - -msgid "Network Device Scanning Configuration" -msgstr "Мережевий Пристрій Конфігурація Сканування" - -#, fuzzy -msgid "Networks to scan for devices" -msgstr "Мережі для сканування пристроїв" - -#, fuzzy -msgid "Networks to scan for supported devices" -msgstr "Мережі для пошуку підтримуваних пристроїв" - -msgid "No SIP devices" -msgstr "Немає SIP пристроїв" - -msgid "No devices detected" -msgstr "" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "" - -msgid "SIP Devices on Network" -msgstr "" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "Конфігурація Сканування" - -#, fuzzy -msgid "Scans for devices on specified networks." -msgstr "Сканування пристроїв у вказаних мережах." - -#, fuzzy -msgid "Sleep Between Requests" -msgstr "Сон між запитами" - -#, fuzzy -msgid "Subnet" -msgstr "Підмережі" - -#, fuzzy -msgid "This section contains no values yet" -msgstr "Цей розділ ще не містить значень" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "Час очікування відповіді в секундах (типово 10)" - -#, fuzzy -msgid "Timeout" -msgstr "Затримка" - -#, fuzzy -msgid "Use Configuration" -msgstr "Використання конфігурації" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "перевірити інші мережі" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/vi/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/vi/diag_devinfo.po deleted file mode 100644 index 32516758bc..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/vi/diag_devinfo.po +++ /dev/null @@ -1,206 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Actions" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Beginning of MAC address range" -msgstr "" - -msgid "Config Phone Scan" -msgstr "" - -msgid "Configure" -msgstr "" - -msgid "Configure Scans" -msgstr "" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Device Scan Config" -msgstr "" - -msgid "Device Type" -msgstr "" - -msgid "Devices discovered for" -msgstr "Devices discovered for" - -msgid "Devices on Network" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "End of MAC address range" -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Link to Device" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC Device Info Overrides" -msgstr "" - -msgid "MAC Device Override" -msgstr "" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Device Scan" -msgstr "" - -msgid "Network Device Scanning Configuration" -msgstr "" - -msgid "Networks to scan for devices" -msgstr "" - -msgid "Networks to scan for supported devices" -msgstr "" - -msgid "No SIP devices" -msgstr "" - -msgid "No devices detected" -msgstr "" - -msgid "Number of times to send requests (default 1)" -msgstr "" - -msgid "OUI Owner" -msgstr "" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "" - -msgid "Phone Information" -msgstr "" - -msgid "Phone Scan" -msgstr "" - -msgid "Phone Scanning Configuration" -msgstr "" - -msgid "Phones" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Raw" -msgstr "" - -msgid "Repeat Count" -msgstr "" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "" - -msgid "SIP Device Information" -msgstr "" - -msgid "SIP Device Scan" -msgstr "" - -msgid "SIP Device Scanning Configuration" -msgstr "" - -msgid "SIP Devices on Network" -msgstr "" - -msgid "SIP devices discovered for" -msgstr "" - -msgid "Scan for devices on specified networks." -msgstr "" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "" - -msgid "Scanning Configuration" -msgstr "" - -msgid "Scans for devices on specified networks." -msgstr "" - -msgid "Sleep Between Requests" -msgstr "" - -msgid "Subnet" -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "" - -msgid "Timeout" -msgstr "" - -msgid "Use Configuration" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "check other networks" -msgstr "" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/zh-cn/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/zh-cn/diag_devinfo.po deleted file mode 100644 index fe4d241579..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/zh-cn/diag_devinfo.po +++ /dev/null @@ -1,210 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-10 05:33+0200\n" -"Last-Translator: Tanyingyu \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" - -msgid "Actions" -msgstr "动作" - -msgid "Add" -msgstr "添加" - -msgid "Beginning of MAC address range" -msgstr "MAC起始地址" - -msgid "Config Phone Scan" -msgstr "配置话机识别参数" - -msgid "Configure" -msgstr "配置" - -msgid "Configure Scans" -msgstr "识别参数配置" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "配置识别指定网络上设备的过程参数。减小'​​超时时长','重复次数',和/或“休眠请求”可加快识别过程,但也可能因此导致识别一些设备会失败。" - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"配置识别指定网络上SIP设备的过程参数。降低'​​超时时长','重复次数',和/或“休眠请求”可加快识别过程,但也可能因此导致识别一些设备会失败。" - -msgid "Delete" -msgstr "删除" - -msgid "Device Scan Config" -msgstr "设备识别参数配置" - -msgid "Device Type" -msgstr "设备类型" - -msgid "Devices discovered for" -msgstr "对发现​​的设备" - -msgid "Devices on Network" -msgstr "网络上的设备" - -msgid "Edit" -msgstr "编辑" - -msgid "Enable" -msgstr "启用" - -msgid "End of MAC address range" -msgstr "MAC地址段结束" - -msgid "Go to relevant configuration page" -msgstr "相关配置页面" - -msgid "IP Address" -msgstr "IP地址" - -msgid "Interface" -msgstr "接口" - -msgid "Invalid" -msgstr "不合法" - -msgid "Link to Device" -msgstr "连接到设备" - -msgid "MAC Address" -msgstr "MAC地址" - -msgid "MAC Device Info Overrides" -msgstr "覆盖MAC设备信息" - -msgid "MAC Device Override" -msgstr "覆盖MAC设备" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "MAC范围和使用信息覆盖系统和IEEE数据库" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "两次请求间睡眠毫秒数(默认为100)" - -msgid "Model" -msgstr "型号" - -msgid "Name" -msgstr "名字" - -msgid "Network Device Scan" -msgstr "识别网络设备" - -msgid "Network Device Scanning Configuration" -msgstr "网络设备识别参数" - -msgid "Networks to scan for devices" -msgstr "网络识别设备" - -msgid "Networks to scan for supported devices" -msgstr "网络识别支持的设备" - -msgid "No SIP devices" -msgstr "无SIP设备" - -msgid "No devices detected" -msgstr "没有识别到设备" - -msgid "Number of times to send requests (default 1)" -msgstr "发送请求次数(默认为1)" - -msgid "OUI Owner" -msgstr "OUI所有者" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "返回指定MAC地址范围内覆盖MAC设备信息脚本(mac-to-devinfo)的信息。" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "执行识别过程(这可能需要几分钟)" - -msgid "Phone Information" -msgstr "话机信息" - -msgid "Phone Scan" -msgstr "识别话机" - -msgid "Phone Scanning Configuration" -msgstr "话机识别过程参数" - -msgid "Phones" -msgstr "话机" - -msgid "Ports" -msgstr "端口" - -msgid "Raw" -msgstr "原始数据" - -msgid "Repeat Count" -msgstr "重复次数" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "重复识别(这可能需要几分钟)" - -msgid "SIP Device Information" -msgstr "SIP设备信息" - -msgid "SIP Device Scan" -msgstr "SIP设备识别" - -msgid "SIP Device Scanning Configuration" -msgstr "SIP设备识别过程参数配置" - -msgid "SIP Devices on Network" -msgstr "在线的SIP设备" - -msgid "SIP devices discovered for" -msgstr "发掘SIP设备" - -msgid "Scan for devices on specified networks." -msgstr "在指定网络上识别设备" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "在指定网络上识别SIP设备" - -msgid "Scanning Configuration" -msgstr "识别过程配置" - -msgid "Scans for devices on specified networks." -msgstr "识别指定网络上的设备" - -msgid "Sleep Between Requests" -msgstr "请求间等待间隙" - -msgid "Subnet" -msgstr "子网" - -msgid "This section contains no values yet" -msgstr "这部分任然不包含的值" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "等待响应秒数(默认10)" - -msgid "Timeout" -msgstr "超时" - -msgid "Use Configuration" -msgstr "使用配置" - -msgid "Vendor" -msgstr "厂商" - -msgid "check other networks" -msgstr "检查其他网络" diff --git a/package/luci/applications/luci-app-diag-devinfo/po/zh-tw/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/zh-tw/diag_devinfo.po deleted file mode 100644 index fe14f68d7a..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/po/zh-tw/diag_devinfo.po +++ /dev/null @@ -1,210 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 14:54+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Actions" -msgstr "操作" - -msgid "Add" -msgstr "新增" - -msgid "Beginning of MAC address range" -msgstr "MAC位址起始範圍" - -msgid "Config Phone Scan" -msgstr "設定電話掃描" - -msgid "Configure" -msgstr "設置" - -msgid "Configure Scans" -msgstr "掃描設置" - -msgid "" -"Configure scanning for devices on specified networks. Decreasing 'Timeout', " -"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also " -"may fail to find some devices." -msgstr "針對特定網路的掃描設定值. 增加\"超時\",\"重複數量,\"並且/或者\"傳到睡著者\"可以加速掃描, 但也有可能將要去搜尋某些設備時會失敗." - -msgid "" -"Configure scanning for supported SIP devices on specified networks. " -"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may " -"speed up scans, but also may fail to find some devices." -msgstr "" -"對指定的網路上已支援的SIP設備設定掃描,減少\"超時\",\"重複數量,\"並且/或者\"傳到睡著者\"可以加速描, 但也有可能將要去搜尋某些設備時會失敗." - -msgid "Delete" -msgstr "刪除" - -msgid "Device Scan Config" -msgstr "設備掃描設定" - -msgid "Device Type" -msgstr "設備型態" - -msgid "Devices discovered for" -msgstr "已發現的設備為" - -msgid "Devices on Network" -msgstr "網路中的設備" - -msgid "Edit" -msgstr "編輯" - -msgid "Enable" -msgstr "啟用" - -msgid "End of MAC address range" -msgstr "MAC位址的結束範圍" - -msgid "Go to relevant configuration page" -msgstr "到相應的設定頁面" - -msgid "IP Address" -msgstr "IP位址" - -msgid "Interface" -msgstr "介面" - -msgid "Invalid" -msgstr "無效" - -msgid "Link to Device" -msgstr "連結到設備上" - -msgid "MAC Address" -msgstr "MAC位址" - -msgid "MAC Device Info Overrides" -msgstr "MAC設備資訊覆寫" - -msgid "MAC Device Override" -msgstr "MAC設備覆寫" - -msgid "MAC range and information used to override system and IEEE databases" -msgstr "MAC範圍及資訊用來覆寫系統和IEEE資料庫" - -msgid "Milliseconds to sleep between requests (default 100)" -msgstr "要求多久(毫)秒後進入睡眠" - -msgid "Model" -msgstr "型號" - -msgid "Name" -msgstr "名稱" - -msgid "Network Device Scan" -msgstr "網路設備掃描" - -msgid "Network Device Scanning Configuration" -msgstr "網路設備掃描設定值" - -msgid "Networks to scan for devices" -msgstr "要掃描的網路設備" - -msgid "Networks to scan for supported devices" -msgstr "要掃描的已支援網路設備" - -msgid "No SIP devices" -msgstr "無任何SIP設備" - -msgid "No devices detected" -msgstr "偵測不到設備" - -msgid "Number of times to send requests (default 1)" -msgstr "傳送要求的次數(預設1)" - -msgid "OUI Owner" -msgstr "OUI擁有者" - -msgid "" -"Override the information returned by the MAC to Device Info Script (mac-to-" -"devinfo) for a specified range of MAC Addresses" -msgstr "針對指定範圍的MAC位址,由設備資訊腳本回傳的MAC位址資訊進行覆蓋" - -msgid "Perform Scans (this can take a few minutes)" -msgstr "掃描操作(可能會花費數分鐘)" - -msgid "Phone Information" -msgstr "電話資訊" - -msgid "Phone Scan" -msgstr "電話掃描" - -msgid "Phone Scanning Configuration" -msgstr "電話掃描設定值" - -msgid "Phones" -msgstr "電話" - -msgid "Ports" -msgstr "埠" - -msgid "Raw" -msgstr "原生RAW" - -msgid "Repeat Count" -msgstr "重複次數" - -msgid "Repeat Scans (this can take a few minutes)" -msgstr "重複掃描(可能花費數分鐘)" - -msgid "SIP Device Information" -msgstr "SIP設備資訊" - -msgid "SIP Device Scan" -msgstr "SIP設備掃描" - -msgid "SIP Device Scanning Configuration" -msgstr "SIP設備掃描設定值" - -msgid "SIP Devices on Network" -msgstr "網路中的SIP設備" - -msgid "SIP devices discovered for" -msgstr "已發現的SIP設備" - -msgid "Scan for devices on specified networks." -msgstr "針對特定網路掃描設備" - -msgid "Scan for supported SIP devices on specified networks." -msgstr "針對特定網路掃描有支援的SIP設備" - -msgid "Scanning Configuration" -msgstr "掃描設定值" - -msgid "Scans for devices on specified networks." -msgstr "針對特定網路掃描設備" - -msgid "Sleep Between Requests" -msgstr "請求之間的睡眠" - -msgid "Subnet" -msgstr "子網路" - -msgid "This section contains no values yet" -msgstr "這個部分尚無任何數值" - -msgid "Time to wait for responses in seconds (default 10)" -msgstr "秒計等待回應時間(預設10)" - -msgid "Timeout" -msgstr "超時" - -msgid "Use Configuration" -msgstr "使用設定值" - -msgid "Vendor" -msgstr "供應製造商" - -msgid "check other networks" -msgstr "檢查它網" diff --git a/package/luci/applications/luci-app-diag-devinfo/root/etc/config/luci_devinfo b/package/luci/applications/luci-app-diag-devinfo/root/etc/config/luci_devinfo deleted file mode 100644 index 1bcdc198c0..0000000000 --- a/package/luci/applications/luci-app-diag-devinfo/root/etc/config/luci_devinfo +++ /dev/null @@ -1,20 +0,0 @@ -config 'smap_scannet' 'SIP_LAN' - option 'enable' '0' - option 'interface' 'lan' - option 'subnet' '192.168.99.0/24' - -config 'smap_scannet' 'SIP_WAN' - option 'enable' '0' - option 'interface' 'wan' - option 'subnet' '216.218.0.0/16' - -config 'netdiscover_scannet' 'SCAN_LAN' - option 'enable' '0' - option 'interface' 'lan' - option 'subnet' '192.168.99.0/24' - -config 'netdiscover_scannet' 'SCAN_WAN' - option 'enable' '0' - option 'interface' 'wan' - option 'subnet' '216.218.0.0/16' - diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/Makefile b/package/luci/applications/luci-app-dnscrypt-proxy/Makefile deleted file mode 100644 index 4b632b8d04..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2017 Dirk Brenken (dev@brenken.org) -# This is free software, licensed under the Apache License, Version 2.0 -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI support for DNSCrypt-Proxy -LUCI_DEPENDS:=+uclient-fetch +dnscrypt-proxy -LUCI_PKGARCH:=all - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua deleted file mode 100644 index 9f6472e7de..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua +++ /dev/null @@ -1,38 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -module("luci.controller.dnscrypt-proxy", package.seeall) - -local util = require("luci.util") -local i18n = require("luci.i18n") -local templ = require("luci.template") - -function index() - if not nixio.fs.access("/etc/config/dnscrypt-proxy") then - nixio.fs.writefile("/etc/config/dnscrypt-proxy", "") - end - entry({"admin", "services", "dnscrypt-proxy"}, firstchild(), _("DNSCrypt-Proxy"), 60).dependent = false - entry({"admin", "services", "dnscrypt-proxy", "tab_from_cbi"}, cbi("dnscrypt-proxy/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true - entry({"admin", "services", "dnscrypt-proxy", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true - entry({"admin", "services", "dnscrypt-proxy", "advanced"}, firstchild(), _("Advanced"), 100) - entry({"admin", "services", "dnscrypt-proxy", "advanced", "configuration"}, cbi("dnscrypt-proxy/configuration_tab"), _("Edit DNSCrypt-Proxy Configuration"), 110).leaf = true - entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_dnsmasq"}, cbi("dnscrypt-proxy/cfg_dnsmasq_tab"), _("Edit Dnsmasq Configuration"), 120).leaf = true - entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_resolvcrypt"}, cbi("dnscrypt-proxy/cfg_resolvcrypt_tab"), _("Edit Resolvcrypt Configuration"), 130).leaf = true - entry({"admin", "services", "dnscrypt-proxy", "advanced", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 140).leaf = true -end - -function view_reslist() - local reslist = util.trim(util.exec("cat /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv")) - templ.render("dnscrypt-proxy/view_reslist", {title = i18n.translate("DNSCrypt-Proxy Resolver List"), content = reslist}) -end - -function logread() - local logfile - - if nixio.fs.access("/var/log/messages") then - logfile = util.trim(util.exec("cat /var/log/messages | grep 'dnscrypt-proxy'")) - else - logfile = util.trim(util.exec("logread -e 'dnscrypt-proxy'")) - end - templ.render("dnscrypt-proxy/logread", {title = i18n.translate("DNSCrypt-Proxy Logfile"), content = logfile}) -end diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua deleted file mode 100644 index 6e75ac9f97..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local nxfs = require("nixio.fs") -local util = require("luci.util") -local uci_input = "/etc/config/dhcp" - -if not nxfs.access(uci_input) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - m.reset = false - m.submit = false - return m -end - -m = SimpleForm("input", nil) -m:append(Template("dnscrypt-proxy/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main Dnsmasq configuration file (/etc/config/dhcp).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nxfs.readfile(uci_input) or "" -end - -function f.write(self, section, data) - return nxfs.writefile(uci_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua deleted file mode 100644 index f172b15f81..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local nxfs = require("nixio.fs") -local util = require("luci.util") -local res_input = "/etc/resolv-crypt.conf" - -if not nxfs.access(res_input) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - m.reset = false - m.submit = false - return m -end - -m = SimpleForm("input", nil) -m:append(Template("dnscrypt-proxy/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the resolv-crypt configuration file (/etc/resolv-crypt.conf).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nxfs.readfile(res_input) or "" -end - -function f.write(self, section, data) - return nxfs.writefile(res_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua deleted file mode 100644 index f1842731d5..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local nxfs = require("nixio.fs") -local util = require("luci.util") -local uci_input = "/etc/config/dnscrypt-proxy" - -if not nxfs.access(uci_input) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - m.reset = false - m.submit = false - return m -end - -m = SimpleForm("input", nil) -m:append(Template("dnscrypt-proxy/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main DNSCrypt-Proxy configuration file (/etc/config/dnscrypt-proxy).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nxfs.readfile(uci_input) or "" -end - -function f.write(self, section, data) - return nxfs.writefile(uci_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua deleted file mode 100644 index 368c6673ad..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua +++ /dev/null @@ -1,245 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local util = require("luci.util") -local date = require("luci.http.protocol.date") -local res_input = "/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv" -local dump = util.ubus("network.interface", "dump", {}) -local plug_cnt = tonumber(luci.sys.exec("env -i /usr/sbin/dnscrypt-proxy --version | grep 'Support for plugins: present' | wc -l")) -local res_list = {} -local url = "https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-resolvers.csv" - -if not fs.access(res_input) then - if not fs.access("/lib/libustream-ssl.so") then - m = SimpleForm("error", nil, translate("No default resolver list and no SSL support available.
") - .. translate("Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv' to use this package.")) - m.submit = false - m.reset = false - return m - else - luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1") - end -end - -if not uci:get_first("dnscrypt-proxy", "global") then - uci:add("dnscrypt-proxy", "global") - uci:save("dnscrypt-proxy") - uci:commit("dnscrypt-proxy") -end - -for line in io.lines(res_input) do - local name, - location, - dnssec, - nolog = line:match("^([^,]+),.-,\".-\",\"*(.-)\"*,.-,[0-9],\"*([yesno]+)\"*,\"*([yesno]+)\"*,.*") - if name ~= "" and name ~= "Name" then - if location == "" then - location = "-" - end - if dnssec == "" then - dnssec = "-" - end - if nolog == "" then - nolog = "-" - end - res_list[#res_list + 1] = { name = name, location = location, dnssec = dnssec, nolog = nolog } - end -end - -m = Map("dnscrypt-proxy", translate("DNSCrypt-Proxy"), - translate("Configuration of the DNSCrypt-Proxy package. ") - .. translatef("For further information " - .. "
" - .. "see the wiki online", "https://wiki.openwrt.org/inbox/dnscrypt")) -m:chain("dhcp") - -function m.on_after_commit(self) - function d1.validate(self, value, s1) - if value == "1" then - uci:commit("dnscrypt-proxy") - uci:set("dhcp", s1, "noresolv", 1) - if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then - uci:set("dhcp", s1, "resolvfile", "/tmp/resolv.conf.auto") - else - uci:set("dhcp", s1, "resolvfile", "/etc/resolv-crypt.conf") - end - local server_list = {} - local cnt = 1 - uci:foreach("dnscrypt-proxy", "dnscrypt-proxy", function(s) - server_list[cnt] = s['address'] .. "#" .. s['port'] - cnt = cnt + 1 - end) - server_list[cnt] = "/pool.ntp.org/8.8.8.8" - uci:set_list("dhcp", s1, "server", server_list) - if cnt > 2 then - uci:set("dhcp", s1, "allservers", 1) - else - uci:set("dhcp", s1, "allservers", 0) - end - uci:save("dhcp") - uci:commit("dhcp") - end - return value - end - luci.sys.call("env -i /etc/init.d/dnscrypt-proxy restart >/dev/null 2>&1") - luci.sys.call("env -i /etc/init.d/dnsmasq restart >/dev/null 2>&1") -end - -s = m:section(TypedSection, "global", translate("General Options")) -s.anonymous = true - --- Main dnscrypt-proxy resource list - -o1 = s:option(DummyValue, "", translate("Default Resolver List")) -o1.template = "dnscrypt-proxy/res_options" -o1.value = res_input - -o2 = s:option(DummyValue, "", translate("File Date")) -o2.template = "dnscrypt-proxy/res_options" -o2.value = date.to_http(nixio.fs.stat(res_input).mtime) - -o3 = s:option(DummyValue, "", translate("File Checksum")) -o3.template = "dnscrypt-proxy/res_options" -o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'") - -if fs.access("/lib/libustream-ssl.so") then - btn1 = s:option(Button, "", translate("Refresh Resolver List"), - translate("Download the current resolver list from 'download.dnscrypt.org'.")) - btn1.inputtitle = translate("Refresh List") - btn1.inputstyle = "apply" - btn1.disabled = false - function btn1.write() - luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy")) - end -else - btn1 = s:option(Button, "", translate("Refresh Resolver List"), - translate("No SSL support available.
") - .. translate("Please install a 'libustream-ssl' library to download the current resolver list from 'download.dnscrypt.org'.")) - btn1.inputtitle = translate("-------") - btn1.inputstyle = "button" - btn1.disabled = true -end - -if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then - btn2 = s:option(Button, "", translate("Create Custom Config File"), - translate("Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS upstream timeouts with multiple DNSCrypt instances.
") - .. translatef("For further information " - .. "" - .. "see the wiki online", "https://wiki.openwrt.org/inbox/dnscrypt")) - btn2.inputtitle = translate("Create Config File") - btn2.inputstyle = "apply" - btn2.disabled = false - function btn2.write() - luci.sys.call("env -i echo 'options timeout:1' > '/etc/resolv-crypt.conf'") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy")) - end -else - btn2 = s:option(Button, "", translate("Create Custom Config File"), - translate("The config file '/etc/resolv-crypt.conf' already exist.
") - .. translate("Please edit the file manually in the 'Advanced' section.")) - btn2.inputtitle = translate("-------") - btn2.inputstyle = "button" - btn2.disabled = true -end - --- Trigger settings - -t = s:option(ListValue, "procd_trigger", translate("Startup Trigger"), - translate("By default the DNSCrypt-Proxy startup will be triggered by ifup events of 'All' available network interfaces.
") - .. translate("To restrict the trigger, select only the relevant network interface. Usually the 'wan' interface should work for most users.")) -t:value("", "All") -if dump then - local i, v - for i, v in ipairs(dump.interface) do - if v.interface ~= "loopback" then - t:value(v.interface) - end - end -end -t.default = procd_trigger or "All" -t.rmempty = true - --- Mandatory options per instance - -s = m:section(TypedSection, "dnscrypt-proxy", translate("Instance Options")) -s.anonymous = true -s.addremove = true - -i1 = s:option(Value, "address", translate("IP Address"), - translate("The local IPv4 or IPv6 address. The latter one should be specified within brackets, e.g. '[::1]'.")) -i1.default = address or "127.0.0.1" -i1.rmempty = false - -i2 = s:option(Value, "port", translate("Port"), - translate("The listening port for DNS queries.")) -i2.datatype = "port" -i2.default = port -i2.rmempty = false - -i3 = s:option(ListValue, "resolver", translate("Resolver (LOC/SEC/NOLOG)"), - translate("Name of the remote DNS service for resolving queries incl. Location, DNSSEC- and NOLOG-Flag.")) -i3.datatype = "hostname" -i3.widget = "select" -local i, v -for i, v in ipairs(res_list) do - if v.name then - i3:value(v.name, v.name .. " (" .. v.location .. "/" .. v.dnssec .. "/" .. v.nolog .. ")") - end -end -i3.default = resolver -i3.rmempty = false - --- Extra options per instance - -e1 = s:option(Value, "resolvers_list", translate("Alternate Resolver List"), - translate("Specify a non-default Resolver List.")) -e1.datatype = "file" -e1.optional = true - -e2 = s:option(Value, "ephemeral_keys", translate("Ephemeral Keys"), - translate("Improve privacy by using an ephemeral public key for each query. ") - .. translate("This option requires extra CPU cycles and is useless with most DNSCrypt server.")) -e2.datatype = "bool" -e2.value = 1 -e2.optional = true - -if plug_cnt > 0 then - e3 = s:option(DynamicList, "blacklist", translate("Blacklist"), - translate("Local blacklists allow you to block abuse sites by domains or ip addresses. ") - .. translate("The value for this property is the blocklist type and path to the file, e.g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'.")) - e3.optional = true - - e4 = s:option(Value, "block_ipv6", translate("Block IPv6"), - translate("Disable IPv6 to speed up DNSCrypt-Proxy.")) - e4.datatype = "bool" - e4.value = 1 - e4.optional = true - - e5 = s:option(Value, "local_cache", translate("Local Cache"), - translate("Enable Caching to speed up DNSCcrypt-Proxy.")) - e5.datatype = "bool" - e5.value = 1 - e5.optional = true - - e6 = s:option(Value, "query_log_file", translate("DNS Query Logfile"), - translate("Log the received DNS queries to a file, so you can watch in real-time what is happening on the network.")) - e6.optional = true -end - --- Dnsmasq options - -m1 = Map("dhcp") - -s1 = m1:section(TypedSection, "dnsmasq", translate("Dnsmasq Options")) -s1.anonymous = true - -d1 = s1:option(Flag, "", translate("Transfer Options To Dnsmasq"), - translate("Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.
") - .. translate("Please note: This may change the values for 'noresolv', 'resolvfile', 'allservers' and the list 'server' settings.")) -d1.default = d1.enabled -d1.rmempty = false - -return m, m1 diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm deleted file mode 100644 index 2233a15e31..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm deleted file mode 100644 index 5c5ac6f81f..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm +++ /dev/null @@ -1,15 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+header%> - -
-
-
<%:This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related messages only.%>
- -
-
- -<%+footer%> diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm deleted file mode 100644 index 04dc37bc9d..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+cbi/valueheader%> - - - -<%+cbi/valuefooter%> diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm deleted file mode 100644 index 76a2300932..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm +++ /dev/null @@ -1,15 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+header%> - -
-
-
<%:This form shows the content of the current DNSCrypt Resolver List.%>
- -
-
- -<%+footer%> diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po b/package/luci/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po deleted file mode 100644 index 2cd01c019e..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po +++ /dev/null @@ -1,279 +0,0 @@ -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 2.0.4\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: ja\n" - -msgid "-------" -msgstr "(利用不可)" - -msgid "Advanced" -msgstr "詳細" - -msgid "Alternate Resolver List" -msgstr "代替 リゾルバ リスト" - -msgid "" -"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.
" -msgstr "Dnsmasq の構成に、DNSCrypt-Proxy を指定する設定を適用します。
" - -msgid "Blacklist" -msgstr "ブラックリスト" - -msgid "Block IPv6" -msgstr "IPv6 のブロック" - -msgid "" -"By default the DNSCrypt-Proxy startup will be triggered by ifup events of " -"'All' available network interfaces.
" -msgstr "" -"デフォルトでは、 DNSCrypt-Proxy は利用可能な全ネットワーク インターフェース" -"の ifup イベントによりトリガされ起動します。
" - -msgid "Configuration of the DNSCrypt-Proxy package." -msgstr "DNSCrypt-Proxy パッケージの設定です。" - -msgid "" -"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS " -"upstream timeouts with multiple DNSCrypt instances.
" -msgstr "" -"複数の DNSCrypt インスタンスで DNS アップストリーム タイムアウトの設定値を共" -"用するため、 'options timeout:1' を含めた '/etc/resolv-crypt.conf' を作成しま" -"す。
" - -msgid "Create Config File" -msgstr "設定ファイルの作成" - -msgid "Create Custom Config File" -msgstr "カスタム設定ファイルの作成" - -msgid "DNS Query Logfile" -msgstr "DNS クエリ ログファイル" - -msgid "DNSCrypt-Proxy" -msgstr "DNSCrypt-Proxy" - -msgid "DNSCrypt-Proxy Logfile" -msgstr "DNSCrypt-Proxy ログファイル" - -msgid "DNSCrypt-Proxy Resolver List" -msgstr "DNSCrypt-Proxy リゾルバ リスト" - -msgid "Default Resolver List" -msgstr "デフォルト リゾルバ リスト" - -msgid "Disable IPv6 to speed up DNSCrypt-Proxy." -msgstr "DNSCrypt-Proxy の高速化のため、IPv6 を無効化します。" - -msgid "Dnsmasq Options" -msgstr "Dnsmasq オプション" - -msgid "Download the current resolver list from 'download.dnscrypt.org'." -msgstr "" -"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードします。" - -msgid "Edit DNSCrypt-Proxy Configuration" -msgstr "DNSCrypt-Proxy 設定の編集" - -msgid "Edit Dnsmasq Configuration" -msgstr "Dnsmasq 設定の編集" - -msgid "Edit Resolvcrypt Configuration" -msgstr "Resolvcrypt 設定の編集" - -msgid "Enable Caching to speed up DNSCcrypt-Proxy." -msgstr "DNSCrypt-Proxy の高速化のため、キャッシュ機能を有効化します。" - -msgid "Ephemeral Keys" -msgstr "一時的なキー" - -msgid "File Checksum" -msgstr "ファイル チェックサム" - -msgid "File Date" -msgstr "ファイル日付" - -msgid "" -"For further information see the wiki " -"online" -msgstr "" -"詳細な情報は オンライン Wiki を確認して" -"ください。" - -msgid "General Options" -msgstr "全般オプション" - -msgid "IP Address" -msgstr "IP アドレス" - -msgid "Improve privacy by using an ephemeral public key for each query." -msgstr "" -"クエリ毎に一時的な公開鍵を使用することにより、プライバシーを向上します。" - -msgid "Input file not found, please check your configuration." -msgstr "入力ファイルが見つかりません。設定を確認してください。" - -msgid "Instance Options" -msgstr "インスタンス オプション" - -msgid "Local Cache" -msgstr "ローカル キャッシュ" - -msgid "" -"Local blacklists allow you to block abuse sites by domains or ip addresses." -msgstr "" -"ローカル ブラックリストは、不正なサイトをドメイン名または IP アドレスによって" -"ブロックすることが可能です。" - -msgid "" -"Log the received DNS queries to a file, so you can watch in real-time what " -"is happening on the network." -msgstr "" -"受信した DNS クエリをファイルに記録します。これにより、ネットワークで何が起き" -"ているかをリアルタイムに把握することが可能です。" - -msgid "" -"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- " -"and NOLOG-Flag." -msgstr "" -"クエリの名前解決を行う、ロケーション, DNSSECの有無, NOLOG フラグを含めたリ" -"モート DNS サービスの名前です。" - -msgid "No SSL support available.
" -msgstr "利用可能な SSL サポートがありません。
" - -msgid "No default resolver list and no SSL support available.
" -msgstr "" -"デフォルトのリゾルバ リストと、利用可能な SSL サポートがありません。
" - -msgid "Overview" -msgstr "概要" - -msgid "Please edit the file manually in the 'Advanced' section." -msgstr "'詳細' タブで手動でファイルを編集してください。" - -msgid "" -"Please install a 'libustream-ssl' library to download the current resolver " -"list from 'download.dnscrypt.org'." -msgstr "" -"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードするために、 " -"'libustream-ssl' ライブラリをインストールしてください。" - -msgid "" -"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-" -"resolvers.csv' to use this package." -msgstr "" -"このパッケージを利用するには、リゾルバ リストを '/usr/share/dnscrypt-proxy/" -"dnscrypt-resolvers.csv' にインストールしてください。" - -msgid "" -"Please note: This may change the values for 'noresolv', 'resolvfile', " -"'allservers' and the list 'server' settings." -msgstr "" -"注: これは、 'noresolv' および 'resolvfile', 'allservers', 'list server' の設" -"定値を変更する場合があります。" - -msgid "Port" -msgstr "ポート" - -msgid "Refresh List" -msgstr "リストのリフレッシュ" - -msgid "Refresh Resolver List" -msgstr "リゾルバ リストのリフレッシュ" - -msgid "Resolver (LOC/SEC/NOLOG)" -msgstr "リゾルバ(LOC/SEC/NOLOG)" - -msgid "Save" -msgstr "保存" - -msgid "Specify a non-default Resolver List." -msgstr "デフォルトとは異なるリゾルバ リストを設定します。" - -msgid "Startup Trigger" -msgstr "スタートアップ トリガ" - -msgid "The config file '/etc/resolv-crypt.conf' already exist.
" -msgstr "設定ファイル '/etc/resolv-crypt.conf' は既に存在しています。
" - -msgid "The listening port for DNS queries." -msgstr "DNS クエリを待ち受けるポートです。" - -msgid "" -"The local IPv4 or IPv6 address. The latter one should be specified within " -"brackets, e.g. '[::1]'." -msgstr "" -"ローカルの IPv4 または IPv6 アドレスです。 IPv6 アドレスの場合、ブラケット " -"\"[ ]\" を含めて記述される必要があります(例: '[::1]')。" - -msgid "" -"The value for this property is the blocklist type and path to the file, e." -"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'." -msgstr "" -"このプロパティの値は、ブロックリストのタイプ及びファイルへのパスの組み合わせ" -"です。(例: 'domains:/path/to/domainlist.txt' または 'ips:/path/to/iplist." -"txt')" - -msgid "" -"This form allows you to modify the content of the main DNSCrypt-Proxy " -"configuration file (/etc/config/dnscrypt-proxy)." -msgstr "" -"このフォームでは、メインの DNSCrypt-Proxy 設定ファイル (/etc/config/dnscrypt-" -"proxy) の内容を変更することができます。" - -msgid "" -"This form allows you to modify the content of the main Dnsmasq configuration " -"file (/etc/config/dhcp)." -msgstr "" -"このフォームでは、メインの Dnsmasq 設定ファイル (/etc/config/dhcp) の内容を変" -"更することができます。" - -msgid "" -"This form allows you to modify the content of the resolv-crypt configuration " -"file (/etc/resolv-crypt.conf)." -msgstr "" -"このフォームでは、 resolv-crypt 設定ファイル(/etc/resolv-crypt.conf)の内容" -"を変更することができます。" - -msgid "This form shows the content of the current DNSCrypt Resolver List." -msgstr "" -"このフォームには、現在の DNSCrypt リゾルバ リストの内容が表示されます。" - -msgid "" -"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related " -"messages only." -msgstr "" -"このフォームには、システムログ内の DNSCrypt-Proxy に関連するメッセージのみが" -"表示されます。" - -msgid "" -"This option requires extra CPU cycles and is useless with most DNSCrypt " -"server." -msgstr "" -"このオプションは、通常よりも CPU リソースを多く使用するほか、ほとんどの " -"DNSCrypt サーバーでは不要なものです。" - -msgid "" -"To restrict the trigger, select only the relevant network interface. Usually " -"the 'wan' interface should work for most users." -msgstr "" -"トリガを限定するには、適切なインターフェースを選択してください。通常、 'wan' " -"インターフェースがほとんどのユーザーに適しています。" - -msgid "Transfer Options To Dnsmasq" -msgstr "Dnsmasq の転送オプション" - -msgid "View Logfile" -msgstr "ログファイルの確認" - -msgid "View Resolver List" -msgstr "リゾルバ リストの確認" diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot b/package/luci/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot deleted file mode 100644 index 59bded87b8..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot +++ /dev/null @@ -1,228 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "-------" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Alternate Resolver List" -msgstr "" - -msgid "" -"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.
" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Block IPv6" -msgstr "" - -msgid "" -"By default the DNSCrypt-Proxy startup will be triggered by ifup events of " -"'All' available network interfaces.
" -msgstr "" - -msgid "Configuration of the DNSCrypt-Proxy package." -msgstr "" - -msgid "" -"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS " -"upstream timeouts with multiple DNSCrypt instances.
" -msgstr "" - -msgid "Create Config File" -msgstr "" - -msgid "Create Custom Config File" -msgstr "" - -msgid "DNS Query Logfile" -msgstr "" - -msgid "DNSCrypt-Proxy" -msgstr "" - -msgid "DNSCrypt-Proxy Logfile" -msgstr "" - -msgid "DNSCrypt-Proxy Resolver List" -msgstr "" - -msgid "Default Resolver List" -msgstr "" - -msgid "Disable IPv6 to speed up DNSCrypt-Proxy." -msgstr "" - -msgid "Dnsmasq Options" -msgstr "" - -msgid "Download the current resolver list from 'download.dnscrypt.org'." -msgstr "" - -msgid "Edit DNSCrypt-Proxy Configuration" -msgstr "" - -msgid "Edit Dnsmasq Configuration" -msgstr "" - -msgid "Edit Resolvcrypt Configuration" -msgstr "" - -msgid "Enable Caching to speed up DNSCcrypt-Proxy." -msgstr "" - -msgid "Ephemeral Keys" -msgstr "" - -msgid "File Checksum" -msgstr "" - -msgid "File Date" -msgstr "" - -msgid "" -"For further information see the wiki " -"online" -msgstr "" - -msgid "General Options" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "Improve privacy by using an ephemeral public key for each query." -msgstr "" - -msgid "Input file not found, please check your configuration." -msgstr "" - -msgid "Instance Options" -msgstr "" - -msgid "Local Cache" -msgstr "" - -msgid "" -"Local blacklists allow you to block abuse sites by domains or ip addresses." -msgstr "" - -msgid "" -"Log the received DNS queries to a file, so you can watch in real-time what " -"is happening on the network." -msgstr "" - -msgid "" -"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- " -"and NOLOG-Flag." -msgstr "" - -msgid "No SSL support available.
" -msgstr "" - -msgid "No default resolver list and no SSL support available.
" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Please edit the file manually in the 'Advanced' section." -msgstr "" - -msgid "" -"Please install a 'libustream-ssl' library to download the current resolver " -"list from 'download.dnscrypt.org'." -msgstr "" - -msgid "" -"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-" -"resolvers.csv' to use this package." -msgstr "" - -msgid "" -"Please note: This may change the values for 'noresolv', 'resolvfile', " -"'allservers' and the list 'server' settings." -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Refresh List" -msgstr "" - -msgid "Refresh Resolver List" -msgstr "" - -msgid "Resolver (LOC/SEC/NOLOG)" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Specify a non-default Resolver List." -msgstr "" - -msgid "Startup Trigger" -msgstr "" - -msgid "The config file '/etc/resolv-crypt.conf' already exist.
" -msgstr "" - -msgid "The listening port for DNS queries." -msgstr "" - -msgid "" -"The local IPv4 or IPv6 address. The latter one should be specified within " -"brackets, e.g. '[::1]'." -msgstr "" - -msgid "" -"The value for this property is the blocklist type and path to the file, e." -"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'." -msgstr "" - -msgid "" -"This form allows you to modify the content of the main DNSCrypt-Proxy " -"configuration file (/etc/config/dnscrypt-proxy)." -msgstr "" - -msgid "" -"This form allows you to modify the content of the main Dnsmasq configuration " -"file (/etc/config/dhcp)." -msgstr "" - -msgid "" -"This form allows you to modify the content of the resolv-crypt configuration " -"file (/etc/resolv-crypt.conf)." -msgstr "" - -msgid "This form shows the content of the current DNSCrypt Resolver List." -msgstr "" - -msgid "" -"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related " -"messages only." -msgstr "" - -msgid "" -"This option requires extra CPU cycles and is useless with most DNSCrypt " -"server." -msgstr "" - -msgid "" -"To restrict the trigger, select only the relevant network interface. Usually " -"the 'wan' interface should work for most users." -msgstr "" - -msgid "Transfer Options To Dnsmasq" -msgstr "" - -msgid "View Logfile" -msgstr "" - -msgid "View Resolver List" -msgstr "" diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy b/package/luci/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy deleted file mode 100755 index ec4da17c9a..0000000000 --- a/package/luci/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@dnscrypt-proxy[-1] - add ucitrack dnscrypt-proxy - set ucitrack.@dnscrypt-proxy[-1].init=dnscrypt-proxy - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-dump1090/Makefile b/package/luci/applications/luci-app-dump1090/Makefile deleted file mode 100644 index e6abd44b39..0000000000 --- a/package/luci/applications/luci-app-dump1090/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for dump1090 -LUCI_DEPENDS:=+dump1090 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-dump1090/luasrc/controller/dump1090.lua b/package/luci/applications/luci-app-dump1090/luasrc/controller/dump1090.lua deleted file mode 100644 index bc2b36dc32..0000000000 --- a/package/luci/applications/luci-app-dump1090/luasrc/controller/dump1090.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright 2014 Álvaro Fernández Rojas --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.dump1090", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/dump1090") then - return - end - - local page = entry({"admin", "services", "dump1090"}, cbi("dump1090"), _("dump1090")) - page.dependent = true - -end diff --git a/package/luci/applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua b/package/luci/applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua deleted file mode 100644 index 4470a0d2f0..0000000000 --- a/package/luci/applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua +++ /dev/null @@ -1,199 +0,0 @@ --- Copyright 2014-2015 Álvaro Fernández Rojas --- Licensed to the public under the Apache License 2.0. - -m = Map("dump1090", "dump1090", translate("dump1090 is a Mode S decoder specifically designed for RTLSDR devices, here you can configure the settings.")) - -s = m:section(TypedSection, "dump1090", "") -s.addremove = true -s.anonymous = false - -enable=s:option(Flag, "disabled", translate("Enabled")) -enable.enabled="0" -enable.disabled="1" -enable.default = "1" -enable.rmempty = false - -respawn=s:option(Flag, "respawn", translate("Respawn")) -respawn.default = false - -device_index=s:option(Value, "device_index", translate("RTL device index")) -device_index.rmempty = true -device_index.datatype = "uinteger" - -gain=s:option(Value, "gain", translate("Gain (-10 for auto-gain)")) -gain.rmempty = true -gain.datatype = "integer" - -enable_agc=s:option(Flag, "enable_agc", translate("Enable automatic gain control")) -enable_agc.default = false - -freq=s:option(Value, "freq", translate("Frequency")) -freq.rmempty = true -freq.datatype = "uinteger" - -ifile=s:option(Value, "ifile", translate("Data file")) -ifile.rmempty = true -ifile.datatype = "file" - -iformat=s:option(ListValue, "iformat", translate("Sample format for data file")) -iformat:value("", translate("Default")) -iformat:value("UC8") -iformat:value("SC16") -iformat:value("SC16Q11") - -throttle=s:option(Flag, "throttle", translate("When reading from a file play back in realtime, not at max speed")) -throttle.default = false - -raw=s:option(Flag, "raw", translate("Show only messages hex values")) -raw.default = false - -net=s:option(Flag, "net", translate("Enable networking")) - -modeac=s:option(Flag, "modeac", translate("Enable decoding of SSR Modes 3/A & 3/C")) -modeac.default = false - -net_beast=s:option(Flag, "net_beast", translate("TCP raw output in Beast binary format")) -net_beast.default = false - -net_only=s:option(Flag, "net_only", translate("Enable just networking, no RTL device or file used")) -net_only.default = false - -net_bind_address=s:option(Value, "net_bind_address", translate("IP address to bind to")) -net_bind_address.rmempty = true -net_bind_address.datatype = "ipaddr" - -net_http_port=s:option(Value, "net_http_port", translate("HTTP server port")) -net_http_port.rmempty = true -net_http_port.datatype = "port" - -net_ri_port=s:option(Value, "net_ri_port", translate("TCP raw input listen port")) -net_ri_port.rmempty = true -net_ri_port.datatype = "port" - -net_ro_port=s:option(Value, "net_ro_port", translate("TCP raw output listen port")) -net_ro_port.rmempty = true -net_ro_port.datatype = "port" - -net_sbs_port=s:option(Value, "net_sbs_port", translate("TCP BaseStation output listen port")) -net_sbs_port.rmempty = true -net_sbs_port.datatype = "port" - -net_bi_port=s:option(Value, "net_bi_port", translate("TCP Beast input listen port")) -net_bi_port.rmempty = true -net_bi_port.datatype = "port" - -net_bo_port=s:option(Value, "net_bo_port", translate("TCP Beast output listen port")) -net_bo_port.rmempty = true -net_bo_port.datatype = "port" - -net_fatsv_port=s:option(Value, "net_fatsv_port", translate("FlightAware TSV output port")) -net_fatsv_port.rmempty = true -net_fatsv_port.datatype = "port" - -net_ro_size=s:option(Value, "net_ro_size", translate("TCP raw output minimum size")) -net_ro_size.rmempty = true -net_ro_size.datatype = "uinteger" - -net_ro_interval=s:option(Value, "net_ro_interval", translate("TCP raw output memory flush rate in seconds")) -net_ro_interval.rmempty = true -net_ro_interval.datatype = "uinteger" - -net_heartbeat=s:option(Value, "net_heartbeat", translate("TCP heartbeat rate in seconds")) -net_heartbeat.rmempty = true -net_heartbeat.datatype = "uinteger" - -net_buffer=s:option(Value, "net_buffer", translate("TCP buffer size 64Kb * (2^n)")) -net_buffer.rmempty = true -net_buffer.datatype = "uinteger" - -net_verbatim=s:option(Flag, "net_verbatim", translate("Do not apply CRC corrections to messages we forward")) -net_verbatim.default = false - -forward_mlat=s:option(Flag, "forward_mlat", translate("Allow forwarding of received mlat results to output ports")) -forward_mlat.default = false - -lat=s:option(Value, "lat", translate("Reference/receiver latitude for surface posn")) -lat.rmempty = true -lat.datatype = "float" - -lon=s:option(Value, "lon", translate("Reference/receiver longitude for surface posn")) -lon.rmempty = true -lon.datatype = "float" - -max_range=s:option(Value, "max_range", translate("Absolute maximum range for position decoding")) -max_range.rmempty = true -max_range.datatype = "uinteger" - -fix=s:option(Flag, "fix", translate("Enable single-bits error correction using CRC")) -fix.default = false - -no_fix=s:option(Flag, "no_fix", translate("Disable single-bits error correction using CRC")) -no_fix.default = false - -no_crc_check=s:option(Flag, "no_crc_check", translate("Disable messages with broken CRC")) -no_crc_check.default = false - -phase_enhance=s:option(Flag, "phase_enhance", translate("Enable phase enhancement")) -phase_enhance.default = false - -agressive=s:option(Flag, "agressive", translate("More CPU for more messages")) -agressive.default = false - -mlat=s:option(Flag, "mlat", translate("Display raw messages in Beast ascii mode")) -mlat.default = false - -stats=s:option(Flag, "stats", translate("Print stats at exit")) -stats.default = false - -stats_range=s:option(Flag, "stats_range", translate("Collect/show range histogram")) -stats_range.default = false - -stats_every=s:option(Value, "stats_every", translate("Show and reset stats every seconds")) -stats_every.rmempty = true -stats_every.datatype = "uinteger" - -onlyaddr=s:option(Flag, "onlyaddr", translate("Show only ICAO addresses")) -onlyaddr.default = false - -metric=s:option(Flag, "metric", translate("Use metric units")) -metric.default = false - -snip=s:option(Value, "snip", translate("Strip IQ file removing samples")) -snip.rmempty = true -snip.datatype = "uinteger" - -debug_mode=s:option(Value, "debug", translate("Debug mode flags")) -debug_mode.rmempty = true - -ppm=s:option(Value, "ppm", translate("Set receiver error in parts per million")) -ppm.rmempty = true -ppm.datatype = "uinteger" - -html_dir=s:option(Value, "html_dir", translate("Base directory for the internal HTTP server")) -html_dir.rmempty = true -html_dir.datatype = "directory" - -write_json=s:option(Value, "write_json", translate("Periodically write json output to a directory")) -write_json.rmempty = true -write_json.datatype = "directory" - -write_json_every=s:option(Flag, "write_json_every", translate("Write json output every t seconds")) -write_json_every.rmempty = true -write_json_every.datatype = "uinteger" - -json_location_accuracy=s:option(ListValue, "json_location_accuracy", translate("Accuracy of receiver location in json metadata")) -json_location_accuracy:value("", translate("Default")) -json_location_accuracy:value("0", "No location") -json_location_accuracy:value("1", "Approximate") -json_location_accuracy:value("2", "Exact") - -oversample=s:option(Flag, "oversample", translate("Use the 2.4MHz demodulator")) -oversample.default = false - -dcfilter=s:option(Flag, "dcfilter", translate("Apply a 1Hz DC filter to input data")) -dcfilter.default = false - -measure_noise=s:option(Flag, "measure_noise", translate("Measure noise power")) -measure_noise.default = false - -return m diff --git a/package/luci/applications/luci-app-dump1090/root/etc/uci-defaults/40_luci-dump1090 b/package/luci/applications/luci-app-dump1090/root/etc/uci-defaults/40_luci-dump1090 deleted file mode 100644 index 4475d2fb93..0000000000 --- a/package/luci/applications/luci-app-dump1090/root/etc/uci-defaults/40_luci-dump1090 +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# needed for "Save and Apply" to restart dump1090 -uci -q batch <<-EOF >/dev/null - delete ucitrack.@dump1090[-1] - add ucitrack dump1090 - set ucitrack.@dump1090[-1].init="dump1090" - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-dynapoint/Makefile b/package/luci/applications/luci-app-dynapoint/Makefile deleted file mode 100644 index 83512dba5e..0000000000 --- a/package/luci/applications/luci-app-dynapoint/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2016 The LuCI Team -# -# 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_LICENSE:=GPL-3.0+ -PKG_MAINTAINER:=Tobias Ilte -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/package/luci/applications/luci-app-dynapoint/luasrc/controller/dynapoint.lua b/package/luci/applications/luci-app-dynapoint/luasrc/controller/dynapoint.lua deleted file mode 100644 index 65348632e9..0000000000 --- a/package/luci/applications/luci-app-dynapoint/luasrc/controller/dynapoint.lua +++ /dev/null @@ -1,9 +0,0 @@ -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/package/luci/applications/luci-app-dynapoint/luasrc/model/cbi/dynapoint.lua b/package/luci/applications/luci-app-dynapoint/luasrc/model/cbi/dynapoint.lua deleted file mode 100644 index e6871a5bc4..0000000000 --- a/package/luci/applications/luci-app-dynapoint/luasrc/model/cbi/dynapoint.lua +++ /dev/null @@ -1,99 +0,0 @@ -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 " - ..[[]] - .. "Software Section" .. [[]] - .. "." - ) - 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/package/luci/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_checkbox.htm b/package/luci/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_checkbox.htm deleted file mode 100644 index 5f8bcd5ee0..0000000000 --- a/package/luci/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_checkbox.htm +++ /dev/null @@ -1,6 +0,0 @@ -<%+cbi/valueheader%> - - - - -<%+cbi/valuefooter%> diff --git a/package/luci/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_color.htm b/package/luci/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_color.htm deleted file mode 100644 index bfc710e236..0000000000 --- a/package/luci/applications/luci-app-dynapoint/luasrc/view/dynapoint/cbi_color.htm +++ /dev/null @@ -1,18 +0,0 @@ -<%+cbi/valueheader%> - - -<% -if (self:cfgvalue(section) == translate("Disabled")) then -%> - -<%=self:cfgvalue(section)%> - -<% -else -%> -<%=self:cfgvalue(section)%> -<% -end -%> - -<%+cbi/valuefooter%> diff --git a/package/luci/applications/luci-app-dynapoint/po/de/dynapoint.po b/package/luci/applications/luci-app-dynapoint/po/de/dynapoint.po deleted file mode 100644 index e2507e493e..0000000000 --- a/package/luci/applications/luci-app-dynapoint/po/de/dynapoint.po +++ /dev/null @@ -1,106 +0,0 @@ -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/package/luci/applications/luci-app-dynapoint/po/ja/dynapoint.po b/package/luci/applications/luci-app-dynapoint/po/ja/dynapoint.po deleted file mode 100644 index 75031985f7..0000000000 --- a/package/luci/applications/luci-app-dynapoint/po/ja/dynapoint.po +++ /dev/null @@ -1,108 +0,0 @@ -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 \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/package/luci/applications/luci-app-dynapoint/po/pt-br/dynapoint.po b/package/luci/applications/luci-app-dynapoint/po/pt-br/dynapoint.po deleted file mode 100644 index 59b02629a9..0000000000 --- a/package/luci/applications/luci-app-dynapoint/po/pt-br/dynapoint.po +++ /dev/null @@ -1,107 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "Activate this wVIF if status is:" -msgstr "Aivar este wVIF se o estado for:" - -msgid "Append hostname to ssid" -msgstr "Sufixar o nome do equipamento ao SSID" - -msgid "Append the router's hostname to the SSID when connectivity check fails" -msgstr "" -"Sufixar o nome do roteador ao SSID quando a verificação da conectividade " -"falhar" - -msgid "Check Internet connectivity via HTTP header download" -msgstr "Cerifique a conectividade com a internet baixando o cabeçalho HTTP " - -msgid "Configuration" -msgstr "Configuração" - -msgid "Curl is currently not installed." -msgstr "O cURL não está instalado." - -msgid "Device" -msgstr "Dispositivo" - -msgid "Disabled" -msgstr "Desabilitado" - -msgid "DynaPoint" -msgstr "DynaPoint" - -msgid "Dynamic Access Point Manager" -msgstr "Gerenciamento do Ponto de Acesso Dinâmico" - -msgid "Enabled" -msgstr "Habilitado" - -msgid "" -"Failure counter after how many failed download attempts, the state is " -"considered as offline" -msgstr "Numero de falhar para considerar como inalcançável" - -msgid "List of Wireless Virtual Interfaces (wVIF)" -msgstr "Lista de Interfaces Virtuais Wireless (wVIF)" - -msgid "List of host addresses" -msgstr "Lista de endereços dos equipamentos" - -msgid "" -"List of host addresses (url or IP) to track and request http headers from" -msgstr "" -"Lista de endereços dos equipamentos (URL ou endereço IP) para requisitar " -"cabeçalhos HTTP" - -msgid "Mode" -msgstr "Modo" - -msgid "Not used by DynaPoint" -msgstr "Não usado pelo DynaPoint" - -msgid "Offline" -msgstr "Desconectado" - -msgid "Online" -msgstr "Conectado" - -msgid "SSID" -msgstr "SSID" - -msgid "Switch_to_offline threshold" -msgstr "Limiar para mudar para desconectado" - -msgid "Test-run interval" -msgstr "Intervalo para execução do teste" - -msgid "Time interval in seconds to re-start a new test run" -msgstr "Intervalo, em segundos, para reiniciar um nova execução do teste" - -msgid "Use curl" -msgstr "Usar cURL" - -msgid "Use curl instead of wget" -msgstr "Usar cURL ao invés do wget" - -msgid "Use curl instead of wget for testing the connectivity." -msgstr "Usar cURL ao invés do wget para testar a conectividade." - -msgid "Used interface" -msgstr "Dispositivos usadas" - -msgid "Which interface should curl use. (Use ifconfig to find out)" -msgstr "Qual dispositivo o cURL deve usar. (Use ifconfig para listá-las)" - -msgid "WiFi Status" -msgstr "Estado da WiFi" diff --git a/package/luci/applications/luci-app-dynapoint/po/templates/dynapoint.pot b/package/luci/applications/luci-app-dynapoint/po/templates/dynapoint.pot deleted file mode 100644 index f352425be3..0000000000 --- a/package/luci/applications/luci-app-dynapoint/po/templates/dynapoint.pot +++ /dev/null @@ -1,92 +0,0 @@ -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/package/luci/applications/luci-app-dynapoint/root/etc/uci-defaults/40_luci-dynapoint b/package/luci/applications/luci-app-dynapoint/root/etc/uci-defaults/40_luci-dynapoint deleted file mode 100644 index 7287ccd420..0000000000 --- a/package/luci/applications/luci-app-dynapoint/root/etc/uci-defaults/40_luci-dynapoint +++ /dev/null @@ -1,13 +0,0 @@ -#!/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 - diff --git a/package/luci/applications/luci-app-e2guardian/Makefile b/package/luci/applications/luci-app-e2guardian/Makefile deleted file mode 100644 index c3ac029885..0000000000 --- a/package/luci/applications/luci-app-e2guardian/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2015 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=E2Guardian LuCI Interface -LUCI_DEPENDS:=+luci-mod-admin-full +e2guardian - -PKG_MAINTAINER:=Marko Ratkaj -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua b/package/luci/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua deleted file mode 100644 index dd545f50ba..0000000000 --- a/package/luci/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua +++ /dev/null @@ -1,22 +0,0 @@ ---[[ - -LuCI E2Guardian module - -Copyright (C) 2015, Itus Networks, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Author: Marko Ratkaj - Luka Perkov - -]]-- - -module("luci.controller.e2guardian", package.seeall) - -function index() - entry({"admin", "services", "e2guardian"}, cbi("e2guardian"), _("E2Guardian")) -end diff --git a/package/luci/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua b/package/luci/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua deleted file mode 100644 index b62132108c..0000000000 --- a/package/luci/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua +++ /dev/null @@ -1,399 +0,0 @@ ---[[ - -LuCI E2Guardian module - -Copyright (C) 2015, Itus Networks, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Author: Marko Ratkaj - Luka Perkov - -]]-- - -local fs = require "nixio.fs" -local sys = require "luci.sys" - -m = Map("e2guardian", translate("E2Guardian")) -m.on_after_commit = function() luci.sys.call("/etc/init.d/e2guardian restart") end - -s = m:section(TypedSection, "e2guardian") -s.anonymous = true -s.addremove = false - -s:tab("tab_general", translate("General Settings")) -s:tab("tab_additional", translate("Additional Settings")) -s:tab("tab_logs", translate("Logs")) - - ------------------ General Settings Tab ----------------------- - -filterip = s:taboption("tab_general", Value, "filterip", translate("IP that E2Guardian listens")) -filterip.datatype = "ip4addr" - -filterports = s:taboption("tab_general", Value, "filterports", translate("Port that E2Guardian listens")) -filterports.datatype = "portrange" -filterports.placeholder = "0-65535" - -proxyip = s:taboption("tab_general", Value, "proxyip", translate("IP address of the proxy")) -proxyip.datatype = "ip4addr" -proxyip.default = "127.0.0.1" - -proxyport = s:taboption("tab_general", Value, "proxyport", translate("Port of the proxy")) -proxyport.datatype = "portrange" -proxyport.placeholder = "0-65535" - -languagedir = s:taboption("tab_general", Value, "languagedir", translate("Language dir")) -languagedir.datatype = "string" -languagedir.default = "/usr/share/e2guardian/languages" - -language = s:taboption("tab_general", Value, "language", translate("Language to use")) -language.datatype = "string" -language.default = "ukenglish" - -loglevel = s:taboption("tab_general", ListValue, "loglevel", translate("Logging Settings")) -loglevel:value("0", translate("none")) -loglevel:value("1", translate("just denied")) -loglevel:value("2", translate("all text based")) -loglevel:value("3", translate("all requests")) -loglevel.default = "2" - -logexceptionhits = s:taboption("tab_general", ListValue, "logexceptionhits", translate("Log Exception Hits")) -logexceptionhits:value("0", translate("never")) -logexceptionhits:value("1", translate("log, but don't mark as exceptions")) -logexceptionhits:value("2", translate("log and mark")) -logexceptionhits.default = "2" - -logfileformat = s:taboption("tab_general", ListValue, "logfileformat", translate("Log File Format")) -logfileformat:value("1", translate("DansgGuardian format, space delimited")) -logfileformat:value("2", translate("CSV-style format")) -logfileformat:value("3", translate("Squid Log File Format")) -logfileformat:value("4", translate("Tab delimited")) -logfileformat:value("5", translate("Protex format")) -logfileformat:value("6", translate("Protex format with server field blanked")) -logfileformat.default = "1" - -accessdeniedaddress = s:taboption("tab_general", Value, "accessdeniedaddress", translate("Access denied address"), -translate("Server to which the cgi e2guardian reporting script was copied. Reporting levels 1 and 2 only")) -accessdeniedaddress.datatype = "string" -accessdeniedaddress.default = "http://YOURSERVER.YOURDOMAIN/cgi-bin/e2guardian.pl" - -usecustombannedimage = s:taboption("tab_general", ListValue, "usecustombannedimage", translate("Banned image replacement")) -usecustombannedimage:value("on", translate("Yes")) -usecustombannedimage:value("off", translate("No")) -usecustombannedimage.default = "on" - -custombannedimagefile = s:taboption("tab_general", Value, "custombannedimagefile", translate("Custom banned image file")) -custombannedimagefile.datatype = "string" -custombannedimagefile.default = "/usr/share/e2guardian/transparent1x1.gif" - -usecustombannedflash = s:taboption("tab_general", ListValue, "usecustombannedflash", translate("Banned flash replacement")) -usecustombannedflash:value("on", translate("Yes")) -usecustombannedflash:value("off", translate("No")) -usecustombannedflash.default = "on" - -custombannedflashfile = s:taboption("tab_general", Value, "custombannedflashfile", translate("Custom banned flash file")) -custombannedflashfile.datatype = "string" -custombannedflashfile.default = "/usr/share/e2guardian/blockedflash.swf" - -filtergroups = s:taboption("tab_general", Value, "filtergroups", translate("Number of filter groups")) -filtergroups.datatype = "and(uinteger,min(1))" -filtergroups.default = "1" - -filtergroupslist = s:taboption("tab_general", Value, "filtergroupslist", translate("List of filter groups")) -filtergroupslist.datatype = "string" -filtergroupslist.default = "/etc/e2guardian/lists/filtergroupslist" - -bannediplist = s:taboption("tab_general", Value, "bannediplist", translate("List of banned IPs")) -bannediplist.datatype = "string" -bannediplist.default = "/etc/e2guardian/lists/bannediplist" - -exceptioniplist = s:taboption("tab_general", Value, "exceptioniplist", translate("List of IP exceptions")) -exceptioniplist.datatype = "string" -exceptioniplist.default = "/etc/e2guardian/lists/exceptioniplist" - -perroomblockingdirectory = s:taboption("tab_general", Value, "perroomblockingdirectory", translate("Per-Room blocking definition directory")) -perroomblockingdirectory.datatype = "string" -perroomblockingdirectory.default = "/etc/e2guardian/lists/bannedrooms/" - -showweightedfound = s:taboption("tab_general", ListValue, "showweightedfound", translate("Show weighted phrases found")) -showweightedfound:value("on", translate("Yes")) -showweightedfound:value("off", translate("No")) -showweightedfound.default = "on" - -weightedphrasemode = s:taboption("tab_general", ListValue, "weightedphrasemode", translate("Weighted phrase mode")) -weightedphrasemode:value("0", translate("off")) -weightedphrasemode:value("1", translate("on, normal operation")) -weightedphrasemode:value("2", translate("on, phrase found only counts once on a page")) -weightedphrasemode.default = "2" - -urlcachenumber = s:taboption("tab_general", Value, "urlcachenumber", translate("Clean result caching for URLs")) -urlcachenumber.datatype = "and(uinteger,min(0))" -urlcachenumber.default = "1000" - -urlcacheage = s:taboption("tab_general", Value, "urlcacheage", translate("Age before they should be ignored in seconds")) -urlcacheage.datatype = "and(uinteger,min(0))" -urlcacheage.default = "900" - -scancleancache = s:taboption("tab_general", ListValue, "scancleancache", translate("Cache for content (AV) scans as 'clean'")) -scancleancache:value("on", translate("Yes")) -scancleancache:value("off", translate("No")) -scancleancache.default = "on" - -phrasefiltermode = s:taboption("tab_general", ListValue, "phrasefiltermode", translate("Filtering options")) -phrasefiltermode:value("0", translate("raw")) -phrasefiltermode:value("1", translate("smart")) -phrasefiltermode:value("2", translate("both raw and smart")) -phrasefiltermode:value("3", translate("meta/title")) -phrasefiltermode.default = "2" - -preservecase = s:taboption("tab_general", ListValue, "perservecase", translate("Lower caseing options")) -preservecase:value("0", translate("force lower case")) -preservecase:value("1", translate("don't change")) -preservecase:value("2", translate("scan fist in lower, then in original")) -preservecase.default = "0" - -hexdecodecontent = s:taboption("tab_general", ListValue, "hexdecodecontent", translate("Hex decoding options")) -hexdecodecontent:value("on", translate("Yes")) -hexdecodecontent:value("off", translate("No")) -hexdecodecontent.default = "off" - -forcequicksearch = s:taboption("tab_general", ListValue, "forcequicksearch", translate("Quick search")) -forcequicksearch:value("on", translate("Yes")) -forcequicksearch:value("off", translate("No")) -forcequicksearch.default = "off" - -reverseaddresslookups= s:taboption("tab_general", ListValue, "reverseaddresslookups", translate("Reverse lookups for banned site and URLs")) -reverseaddresslookups:value("on", translate("Yes")) -reverseaddresslookups:value("off", translate("No")) -reverseaddresslookups.default = "off" - -reverseclientiplookups = s:taboption("tab_general", ListValue, "reverseclientiplookups", translate("Reverse lookups for banned and exception IP lists")) -reverseclientiplookups:value("on", translate("Yes")) -reverseclientiplookups:value("off", translate("No")) -reverseclientiplookups.default = "off" - -logclienthostnames = s:taboption("tab_general", ListValue, "logclienthostnames", translate("Perform reverse lookups on client IPs for successful requests")) -logclienthostnames:value("on", translate("Yes")) -logclienthostnames:value("off", translate("No")) -logclienthostnames.default = "off" - -createlistcachefiles = s:taboption("tab_general", ListValue, "createlistcachefiles", translate("Build bannedsitelist and bannedurllist cache files")) -createlistcachefiles:value("on",translate("Yes")) -createlistcachefiles:value("off",translate("No")) -createlistcachefiles.default = "on" - -prefercachedlists = s:taboption("tab_general", ListValue, "prefercachedlists", translate("Prefer cached list files")) -prefercachedlists:value("on", translate("Yes")) -prefercachedlists:value("off", translate("No")) -prefercachedlists.default = "off" - -maxuploadsize = s:taboption("tab_general", Value, "maxuploadsize", translate("Max upload size (in Kbytes)")) -maxuploadsize:value("-1", translate("no blocking")) -maxuploadsize:value("0", translate("complete block")) -maxuploadsize.default = "-1" - -maxcontentfiltersize = s:taboption("tab_general", Value, "maxcontentfiltersize", translate("Max content filter size"), -translate("The value must not be higher than max content ram cache scan size or 0 to match it")) -maxcontentfiltersize.datatype = "and(uinteger,min(0))" -maxcontentfiltersize.default = "256" - -maxcontentramcachescansize = s:taboption("tab_general", Value, "maxcontentramcachescansize", translate("Max content ram cache scan size"), -translate("This is the max size of file that DG will download and cache in RAM")) -maxcontentramcachescansize.datatype = "and(uinteger,min(0))" -maxcontentramcachescansize.default = "2000" - -maxcontentfilecachescansize = s:taboption("tab_general", Value, "maxcontentfilecachescansize", translate("Max content file cache scan size")) -maxcontentfilecachescansize.datatype = "and(uinteger,min(0))" -maxcontentfilecachescansize.default = "20000" - -proxytimeout = s:taboption("tab_general", Value, "proxytimeout", translate("Proxy timeout (5-100)")) -proxytimeout.datatype = "range(5,100)" -proxytimeout.default = "20" - -proxyexchange = s:taboption("tab_general", Value, "proxyexchange", translate("Proxy header excahnge (20-300)")) -proxyexchange.datatype = "range(20,300)" -proxyexchange.default = "20" - -pcontimeout = s:taboption("tab_general", Value, "pcontimeout", translate("Pconn timeout"), -translate("How long a persistent connection will wait for other requests")) -pcontimeout.datatype = "range(5,300)" -pcontimeout.default = "55" - -filecachedir = s:taboption("tab_general", Value, "filecachedir", translate("File cache directory")) -filecachedir.datatype = "string" -filecachedir.default = "/tmp" - -deletedownloadedtempfiles = s:taboption("tab_general", ListValue, "deletedownloadedtempfiles", translate("Delete file cache after user completes download")) -deletedownloadedtempfiles:value("on", translate("Yes")) -deletedownloadedtempfiles:value("off", translate("No")) -deletedownloadedtempfiles.default = "on" - -initialtrickledelay = s:taboption("tab_general", Value, "initialtrickledelay", translate("Initial Trickle delay"), -translate("Number of seconds a browser connection is left waiting before first being sent *something* to keep it alive")) -initialtrickledelay.datatype = "and(uinteger,min(0))" -initialtrickledelay.default = "20" - -trickledelay = s:taboption("tab_general", Value, "trickledelay", translate("Trickle delay"), -translate("Number of seconds a browser connection is left waiting before being sent more *something* to keep it alive")) -trickledelay.datatype = "and(uinteger,min(0))" -trickledelay.default = "10" - -downloadmanager = s:taboption("tab_general", Value, "downloadmanager", translate("Download manager")) -downloadmanager.datatype = "string" -downloadmanager.default = "/etc/e2guardian/downloadmanagers/default.conf" - -contentscannertimeout = s:taboption("tab_general", Value, "contentscannertimeout", translate("Content scanner timeout")) -contentscannertimeout.datatype = "and(uinteger,min(0))" -contentscannertimeout.default = "60" - -contentscanexceptions = s:taboption("tab_general", ListValue, "contentscanexceptions", translate("Content scan exceptions")) -contentscanexceptions:value("on", translate("Yes")) -contentscanexceptions:value("off", translate("No")) -contentscanexceptions.default = "off" - -recheckreplacedurls = s:taboption("tab_general", ListValue, "recheckreplacedurls", translate("e-check replaced URLs")) -recheckreplacedurls:value("on", translate("Yes")) -recheckreplacedurls:value("off", translate("No")) -recheckreplacedurls.default = "off" - -forwardedfor = s:taboption("tab_general", ListValue, "forwardedfor", translate("Misc setting: forwardedfor"), -translate("If on, it may help solve some problem sites that need to know the source ip.")) -forwardedfor:value("on", translate("Yes")) -forwardedfor:value("off", translate("No")) -forwardedfor.default = "off" - -usexforwardedfor = s:taboption("tab_general", ListValue, "usexforwardedfor", translate("Misc setting: usexforwardedfor"), -translate("This is for when you have squid between the clients and E2Guardian")) -usexforwardedfor:value("on", translate("Yes")) -usexforwardedfor:value("off", translate("No")) -usexforwardedfor.default = "off" - -logconnectionhandlingerrors = s:taboption("tab_general", ListValue, "logconnectionhandlingerrors", translate("Log debug info about log()ing and accept()ing")) -logconnectionhandlingerrors:value("on", translate("Yes")) -logconnectionhandlingerrors:value("off", translate("No")) -logconnectionhandlingerrors.default = "on" - -logchildprocesshandling = s:taboption("tab_general", ListValue, "logchildprocesshandling", translate("Log child process handling")) -logchildprocesshandling:value("on", translate("Yes")) -logchildprocesshandling:value("off", translate("No")) -logchildprocesshandling.default = "off" - -maxchildren = s:taboption("tab_general", Value, "maxchildren", translate("Max number of processes to spawn")) -maxchildren.datatype = "and(uinteger,min(0))" -maxchildren.default = "180" - -minchildren = s:taboption("tab_general", Value, "minchildren", translate("Min number of processes to spawn")) -minchildren.datatype = "and(uinteger,min(0))" -minchildren.default = "20" - -minsparechildren = s:taboption("tab_general", Value, "minsparechildren", translate("Min number of processes to keep ready")) -minsparechildren.datatype = "and(uinteger,min(0))" -minsparechildren.default = "16" - -preforkchildren = s:taboption("tab_general", Value, "preforkchildren", translate("Sets minimum nuber of processes when it runs out")) -preforkchildren.datatype = "and(uinteger,min(0))" -preforkchildren.default = "10" - -maxsparechildren = s:taboption("tab_general", Value, "maxsparechildren", translate("Sets the maximum number of processes to have doing nothing")) -maxsparechildren.datatype = "and(uinteger,min(0))" -maxsparechildren.default = "32" - -maxagechildren = s:taboption("tab_general", Value, "maxagechildren", translate("Max age of child process")) -maxagechildren.datatype = "and(uinteger,min(0))" -maxagechildren.default = "500" - -maxips = s:taboption("tab_general", Value, "maxips", translate("Max number of clinets allowed to connect")) -maxips:value("0", translate("no limit")) -maxips.default = "0" - -ipipcfilename = s:taboption("tab_general", Value, "ipipcfilename", translate("IP list IPC server directory and filename")) -ipipcfilename.datatype = "string" -ipipcfilename.default = "/tmp/.dguardianipc" - -urlipcfilename = s:taboption("tab_general", Value, "urlipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process")) -urlipcfilename.datatype = "string" -urlipcfilename.default = "/tmp/.dguardianurlipc" - -ipcfilename = s:taboption("tab_general", Value, "ipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process")) -ipcfilename.datatype = "string" -ipcfilename.default = "/tmp/.dguardianipipc" - -nodeamon = s:taboption("tab_general", ListValue, "nodeamon", translate("Disable deamoning")) -nodeamon:value("on", translate("Yes")) -nodeamon:value("off", translate("No")) -nodeamon.default = "off" - -nologger = s:taboption("tab_general", ListValue, "nologger", translate("Disable logger")) -nologger:value("on", translate("Yes")) -nologger:value("off", translate("No")) -nologger.default = "off" - -logadblock = s:taboption("tab_general", ListValue, "logadblock", translate("Enable logging of ADs")) -logadblock:value("on", translate("Yes")) -logadblock:value("off", translate("No")) -logadblock.default = "off" - -loguseragent = s:taboption("tab_general", ListValue, "loguseragent", translate("Enable logging of client user agent")) -loguseragent:value("on", translate("Yes")) -loguseragent:value("off", translate("No")) -loguseragent.default = "off" - -softrestart = s:taboption("tab_general", ListValue, "softrestart", translate("Enable soft restart")) -softrestart:value("on", translate("Yes")) -softrestart:value("off", translate("No")) -softrestart.default = "off" - - ------------------------- Additional Settings Tab ---------------------------- - -e2guardian_config_file = s:taboption("tab_additional", TextValue, "_data", "") -e2guardian_config_file.wrap = "off" -e2guardian_config_file.rows = 25 -e2guardian_config_file.rmempty = false - -function e2guardian_config_file.cfgvalue() - local uci = require "luci.model.uci".cursor_state() - file = "/etc/e2guardian/e2guardianf1.conf" - if file then - return fs.readfile(file) or "" - else - return "" - end -end - -function e2guardian_config_file.write(self, section, value) - if value then - local uci = require "luci.model.uci".cursor_state() - file = "/etc/e2guardian/e2guardianf1.conf" - fs.writefile(file, value:gsub("\r\n", "\n")) - end -end - - ----------------------------- Logs Tab ----------------------------- - -e2guardian_logfile = s:taboption("tab_logs", TextValue, "lines", "") -e2guardian_logfile.wrap = "off" -e2guardian_logfile.rows = 25 -e2guardian_logfile.rmempty = true - -function e2guardian_logfile.cfgvalue() - local uci = require "luci.model.uci".cursor_state() - file = "/tmp/e2guardian/access.log" - if file then - return fs.readfile(file) or "" - else - return "Can't read log file" - end -end - -function e2guardian_logfile.write() - return "" -end - -return m diff --git a/package/luci/applications/luci-app-firewall/Makefile b/package/luci/applications/luci-app-firewall/Makefile deleted file mode 100644 index 4fa85f2d5b..0000000000 --- a/package/luci/applications/luci-app-firewall/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Firewall and Portforwarding application -LUCI_DEPENDS:=+firewall - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-firewall/luasrc/controller/firewall.lua b/package/luci/applications/luci-app-firewall/luasrc/controller/firewall.lua deleted file mode 100644 index 5a6ab0ad31..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/controller/firewall.lua +++ /dev/null @@ -1,23 +0,0 @@ -module("luci.controller.firewall", package.seeall) - -function index() - entry({"admin", "network", "firewall"}, - alias("admin", "network", "firewall", "zones"), - _("Firewall"), 60) - - entry({"admin", "network", "firewall", "zones"}, - arcombine(cbi("firewall/zones"), cbi("firewall/zone-details")), - _("General Settings"), 10).leaf = true - - entry({"admin", "network", "firewall", "forwards"}, - arcombine(cbi("firewall/forwards"), cbi("firewall/forward-details")), - _("Port Forwards"), 20).leaf = true - - entry({"admin", "network", "firewall", "rules"}, - arcombine(cbi("firewall/rules"), cbi("firewall/rule-details")), - _("Traffic Rules"), 30).leaf = true - - entry({"admin", "network", "firewall", "custom"}, - cbi("firewall/custom"), - _("Custom Rules"), 40).leaf = true -end diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua deleted file mode 100644 index 21a1b2796d..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua +++ /dev/null @@ -1,31 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" - -local f = SimpleForm("firewall", - translate("Firewall - Custom Rules"), - translate("Custom rules allow you to execute arbitrary iptables commands \ - which are not otherwise covered by the firewall framework. \ - The commands are executed after each firewall restart, right after \ - the default ruleset has been loaded.")) - -local o = f:field(Value, "_custom") - -o.template = "cbi/tvalue" -o.rows = 20 - -function o.cfgvalue(self, section) - return fs.readfile("/etc/firewall.user") -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 diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua deleted file mode 100644 index 17a49483d7..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forward-details.lua +++ /dev/null @@ -1,150 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sys = require "luci.sys" -local dsp = require "luci.dispatcher" -local ft = require "luci.tools.firewall" - -local m, s, o - -arg[1] = arg[1] or "" - -m = Map("firewall", - translate("Firewall - Port Forwards"), - translate("This page allows you to change advanced properties of the port \ - forwarding entry. In most cases there is no need to modify \ - those settings.")) - -m.redirect = dsp.build_url("admin/network/firewall/forwards") - -if m.uci:get("firewall", arg[1]) ~= "redirect" then - luci.http.redirect(m.redirect) - return -else - local name = m:get(arg[1], "name") or m:get(arg[1], "_name") - if not name or #name == 0 then - name = translate("(Unnamed Entry)") - end - m.title = "%s - %s" %{ translate("Firewall - Port Forwards"), name } -end - -s = m:section(NamedSection, arg[1], "redirect", "") -s.anonymous = true -s.addremove = false - -ft.opt_enabled(s, Button) -ft.opt_name(s, Value, translate("Name")) - - -o = s:option(Value, "proto", translate("Protocol")) -o:value("tcp udp", "TCP+UDP") -o:value("tcp", "TCP") -o:value("udp", "UDP") -o:value("icmp", "ICMP") - -function o.cfgvalue(...) - local v = Value.cfgvalue(...) - if not v or v == "tcpudp" then - return "tcp udp" - end - return v -end - - -o = s:option(Value, "src", translate("Source zone")) -o.nocreate = true -o.default = "wan" -o.template = "cbi/firewall_zonelist" - - -o = s:option(DynamicList, "src_mac", - translate("Source MAC address"), - translate("Only match incoming traffic from these MACs.")) -o.rmempty = true -o.datatype = "neg(macaddr)" -o.placeholder = translate("any") - -luci.sys.net.mac_hints(function(mac, name) - o:value(mac, "%s (%s)" %{ mac, name }) -end) - - -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(ipmask4)" -o.placeholder = translate("any") - -luci.sys.net.ipv4_hints(function(ip, name) - o:value(ip, "%s (%s)" %{ ip, name }) -end) - - -o = s:option(Value, "src_port", - translate("Source port"), - translate("Only match incoming traffic originating from the given source port or port range on the client host")) -o.rmempty = true -o.datatype = "neg(portrange)" -o.placeholder = translate("any") - - -o = s:option(Value, "src_dip", - translate("External IP address"), - translate("Only match incoming traffic directed at the given IP address.")) - -luci.sys.net.ipv4_hints(function(ip, name) - o:value(ip, "%s (%s)" %{ ip, name }) -end) - - -o.rmempty = true -o.datatype = "neg(ipmask4)" -o.placeholder = translate("any") - - -o = s:option(Value, "src_dport", translate("External port"), - translate("Match incoming traffic directed at the given " .. - "destination port or port range on this host")) -o.datatype = "neg(portrange)" - - - -o = s:option(Value, "dest", translate("Internal zone")) -o.nocreate = true -o.default = "lan" -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 = "ipmask4" - -luci.sys.net.ipv4_hints(function(ip, name) - o:value(ip, "%s (%s)" %{ ip, name }) -end) - - -o = s:option(Value, "dest_port", - translate("Internal port"), - translate("Redirect matched incoming traffic to the given port on \ - the internal host")) -o.placeholder = translate("any") -o.datatype = "portrange" - - -o = s:option(Flag, "reflection", translate("Enable NAT Loopback")) -o.rmempty = true -o.default = o.enabled -o.cfgvalue = function(...) - return Flag.cfgvalue(...) or "1" -end - - -s:option(Value, "extra", - translate("Extra arguments"), - translate("Passes additional arguments to iptables. Use with care!")) - - -return m diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua deleted file mode 100644 index e61ce73cdd..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/forwards.lua +++ /dev/null @@ -1,134 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ds = require "luci.dispatcher" -local ft = require "luci.tools.firewall" - -m = Map("firewall", translate("Firewall - Port Forwards"), - translate("Port forwarding allows remote computers on the Internet to \ - connect to a specific computer or service within the \ - private LAN.")) - --- --- Port Forwards --- - -s = m:section(TypedSection, "redirect", translate("Port Forwards")) -s.template = "cbi/tblsection" -s.addremove = true -s.anonymous = true -s.sortable = true -s.extedit = ds.build_url("admin/network/firewall/forwards/%s") -s.template_addremove = "firewall/cbi_addforward" - -function s.create(self, section) - local n = m:formvalue("_newfwd.name") - local p = m:formvalue("_newfwd.proto") - local E = m:formvalue("_newfwd.extzone") - local e = m:formvalue("_newfwd.extport") - local I = m:formvalue("_newfwd.intzone") - local a = m:formvalue("_newfwd.intaddr") - local i = m:formvalue("_newfwd.intport") - - if p == "other" or (p and a) then - created = TypedSection.create(self, section) - - self.map:set(created, "target", "DNAT") - self.map:set(created, "src", E or "wan") - self.map:set(created, "dest", I or "lan") - self.map:set(created, "proto", (p ~= "other") and p or "all") - self.map:set(created, "src_dport", e) - self.map:set(created, "dest_ip", a) - self.map:set(created, "dest_port", i) - self.map:set(created, "name", n) - end - - if p ~= "other" then - created = nil - end -end - -function s.parse(self, ...) - TypedSection.parse(self, ...) - if created then - m.uci:save("firewall") - luci.http.redirect(ds.build_url( - "admin/network/firewall/redirect", created - )) - end -end - -function s.filter(self, sid) - return (self.map:get(sid, "target") ~= "SNAT") -end - - -ft.opt_name(s, DummyValue, translate("Name")) - - -local function forward_proto_txt(self, s) - return "%s-%s" %{ - translate("IPv4"), - ft.fmt_proto(self.map:get(s, "proto"), - self.map:get(s, "icmp_type")) or "TCP+UDP" - } -end - -local function forward_src_txt(self, s) - local z = ft.fmt_zone(self.map:get(s, "src"), translate("any zone")) - local a = ft.fmt_ip(self.map:get(s, "src_ip"), translate("any host")) - local p = ft.fmt_port(self.map:get(s, "src_port")) - local m = ft.fmt_mac(self.map:get(s, "src_mac")) - - if p and m then - return translatef("From %s in %s with source %s and %s", a, z, p, m) - elseif p or m then - return translatef("From %s in %s with source %s", a, z, p or m) - else - return translatef("From %s in %s", a, z) - end -end - -local function forward_via_txt(self, s) - local a = ft.fmt_ip(self.map:get(s, "src_dip"), translate("any router IP")) - local p = ft.fmt_port(self.map:get(s, "src_dport")) - - if p then - return translatef("Via %s at %s", a, p) - else - return translatef("Via %s", a) - end -end - -match = s:option(DummyValue, "match", translate("Match")) -match.rawhtml = true -match.width = "50%" -function match.cfgvalue(self, s) - return "%s
%s
%s
" % { - forward_proto_txt(self, s), - forward_src_txt(self, s), - forward_via_txt(self, s) - } -end - - -dest = s:option(DummyValue, "dest", translate("Forward to")) -dest.rawhtml = true -dest.width = "40%" -function dest.cfgvalue(self, s) - local z = ft.fmt_zone(self.map:get(s, "dest"), translate("any zone")) - local a = ft.fmt_ip(self.map:get(s, "dest_ip"), translate("any host")) - local p = ft.fmt_port(self.map:get(s, "dest_port")) or - ft.fmt_port(self.map:get(s, "src_dport")) - - if p then - return translatef("%s, %s in %s", a, p, z) - else - return translatef("%s in %s", a, z) - end -end - -ft.opt_enabled(s, Flag, translate("Enable")).width = "1%" - -return m diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua deleted file mode 100644 index 1c838888f1..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rule-details.lua +++ /dev/null @@ -1,349 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sys = require "luci.sys" -local utl = require "luci.util" -local dsp = require "luci.dispatcher" -local nxo = require "nixio" - -local ft = require "luci.tools.firewall" -local nw = require "luci.model.network" -local m, s, o, k, v - -arg[1] = arg[1] or "" - -m = Map("firewall", - translate("Firewall - Traffic Rules"), - translate("This page allows you to change advanced properties of the \ - traffic rule entry, such as matched source and destination \ - hosts.")) - -m.redirect = dsp.build_url("admin/network/firewall/rules") - -nw.init(m.uci) - -local rule_type = m.uci:get("firewall", arg[1]) -if rule_type == "redirect" and m:get(arg[1], "target") ~= "SNAT" then - rule_type = nil -end - -if not rule_type then - luci.http.redirect(m.redirect) - return - --- --- SNAT --- -elseif rule_type == "redirect" then - - local name = m:get(arg[1], "name") or m:get(arg[1], "_name") - if not name or #name == 0 then - name = translate("(Unnamed SNAT)") - else - name = "SNAT %s" % name - end - - m.title = "%s - %s" %{ translate("Firewall - Traffic Rules"), name } - - local wan_zone = nil - - m.uci:foreach("firewall", "zone", - function(s) - local n = s.network or s.name - if n then - local i - for i in utl.imatch(n) do - if i == "wan" then - wan_zone = s.name - return false - end - end - end - end) - - s = m:section(NamedSection, arg[1], "redirect", "") - s.anonymous = true - s.addremove = false - - - ft.opt_enabled(s, Button) - ft.opt_name(s, Value, translate("Name")) - - - o = s:option(Value, "proto", - translate("Protocol"), - translate("You may specify multiple by selecting \"-- custom --\" and \ - then entering protocols separated by space.")) - - o:value("all", "All protocols") - o:value("tcp udp", "TCP+UDP") - o:value("tcp", "TCP") - o:value("udp", "UDP") - o:value("icmp", "ICMP") - - function o.cfgvalue(...) - local v = Value.cfgvalue(...) - if not v or v == "tcpudp" then - return "tcp udp" - end - return v - end - - - o = s:option(Value, "src", translate("Source zone")) - o.nocreate = true - o.default = "wan" - o.template = "cbi/firewall_zonelist" - - - o = s:option(Value, "src_ip", translate("Source IP address")) - o.rmempty = true - o.datatype = "neg(ipmask4)" - o.placeholder = translate("any") - - luci.sys.net.ipv4_hints(function(ip, name) - o:value(ip, "%s (%s)" %{ ip, name }) - end) - - - o = s:option(Value, "src_port", - translate("Source port"), - translate("Match incoming traffic originating from the given source \ - port or port range on the client host.")) - o.rmempty = true - o.datatype = "neg(portrange)" - o.placeholder = translate("any") - - - o = s:option(Value, "dest", translate("Destination zone")) - o.nocreate = true - o.default = "lan" - o.template = "cbi/firewall_zonelist" - - - o = s:option(Value, "dest_ip", translate("Destination IP address")) - o.datatype = "neg(ipmask4)" - - luci.sys.net.ipv4_hints(function(ip, name) - o:value(ip, "%s (%s)" %{ ip, name }) - end) - - - o = s:option(Value, "dest_port", - translate("Destination port"), - translate("Match forwarded traffic to the given destination port or \ - port range.")) - - o.rmempty = true - o.placeholder = translate("any") - o.datatype = "neg(portrange)" - - - o = s:option(Value, "src_dip", - translate("SNAT IP address"), - translate("Rewrite matched traffic to the given address.")) - o.rmempty = false - o.datatype = "ip4addr" - - for k, v in ipairs(nw:get_interfaces()) do - local a - for k, a in ipairs(v:ipaddrs()) do - o:value(a:host():string(), '%s (%s)' %{ - a:host():string(), v:shortname() - }) - end - end - - - o = s:option(Value, "src_dport", translate("SNAT port"), - translate("Rewrite matched traffic to the given source port. May be \ - left empty to only rewrite the IP address.")) - o.datatype = "portrange" - o.rmempty = true - o.placeholder = translate('Do not rewrite') - - - s:option(Value, "extra", - translate("Extra arguments"), - translate("Passes additional arguments to iptables. Use with care!")) - - --- --- Rule --- -else - local name = m:get(arg[1], "name") or m:get(arg[1], "_name") - if not name or #name == 0 then - name = translate("(Unnamed Rule)") - end - - m.title = "%s - %s" %{ translate("Firewall - Traffic Rules"), name } - - - s = m:section(NamedSection, arg[1], "rule", "") - s.anonymous = true - s.addremove = false - - ft.opt_enabled(s, Button) - ft.opt_name(s, Value, translate("Name")) - - - o = s:option(ListValue, "family", translate("Restrict to address family")) - o.rmempty = true - o:value("", translate("IPv4 and IPv6")) - o:value("ipv4", translate("IPv4 only")) - o:value("ipv6", translate("IPv6 only")) - - - o = s:option(Value, "proto", translate("Protocol")) - o:value("all", translate("Any")) - o:value("tcp udp", "TCP+UDP") - o:value("tcp", "TCP") - o:value("udp", "UDP") - o:value("icmp", "ICMP") - - function o.cfgvalue(...) - local v = Value.cfgvalue(...) - if not v or v == "tcpudp" then - return "tcp udp" - end - return v - end - - - o = s:option(DynamicList, "icmp_type", translate("Match ICMP type")) - o:value("", "any") - o:value("echo-reply") - o:value("destination-unreachable") - o:value("network-unreachable") - o:value("host-unreachable") - o:value("protocol-unreachable") - o:value("port-unreachable") - o:value("fragmentation-needed") - o:value("source-route-failed") - o:value("network-unknown") - o:value("host-unknown") - o:value("network-prohibited") - o:value("host-prohibited") - o:value("TOS-network-unreachable") - o:value("TOS-host-unreachable") - o:value("communication-prohibited") - o:value("host-precedence-violation") - o:value("precedence-cutoff") - o:value("source-quench") - o:value("redirect") - o:value("network-redirect") - o:value("host-redirect") - o:value("TOS-network-redirect") - o:value("TOS-host-redirect") - o:value("echo-request") - o:value("router-advertisement") - o:value("router-solicitation") - o:value("time-exceeded") - o:value("ttl-zero-during-transit") - o:value("ttl-zero-during-reassembly") - o:value("parameter-problem") - o:value("ip-header-bad") - o:value("required-option-missing") - o:value("timestamp-request") - o:value("timestamp-reply") - o:value("address-mask-request") - o:value("address-mask-reply") - - - o = s:option(Value, "src", translate("Source zone")) - o.nocreate = true - o.allowany = true - o.default = "wan" - o.template = "cbi/firewall_zonelist" - - - o = s:option(Value, "src_mac", translate("Source MAC address")) - o.datatype = "list(macaddr)" - o.placeholder = translate("any") - - luci.sys.net.mac_hints(function(mac, name) - o:value(mac, "%s (%s)" %{ mac, name }) - end) - - - o = s:option(Value, "src_ip", translate("Source address")) - o.datatype = "neg(ipmask)" - o.placeholder = translate("any") - - luci.sys.net.ipv4_hints(function(ip, name) - o:value(ip, "%s (%s)" %{ ip, name }) - end) - - - o = s:option(Value, "src_port", translate("Source port")) - o.datatype = "list(neg(portrange))" - o.placeholder = translate("any") - - - o = s:option(Value, "dest", translate("Destination zone")) - o.nocreate = true - o.allowany = true - o.allowlocal = true - o.template = "cbi/firewall_zonelist" - - - o = s:option(Value, "dest_ip", translate("Destination address")) - o.datatype = "neg(ipmask)" - o.placeholder = translate("any") - - luci.sys.net.ipv4_hints(function(ip, name) - o:value(ip, "%s (%s)" %{ ip, name }) - end) - - - o = s:option(Value, "dest_port", translate("Destination port")) - o.datatype = "list(neg(portrange))" - o.placeholder = translate("any") - - - o = s:option(ListValue, "target", translate("Action")) - o.default = "ACCEPT" - o:value("DROP", translate("drop")) - o:value("ACCEPT", translate("accept")) - o:value("REJECT", translate("reject")) - o:value("NOTRACK", translate("don't track")) - - - s:option(Value, "extra", - translate("Extra arguments"), - translate("Passes additional arguments to iptables. Use with care!")) -end - -o = s:option(MultiValue, "weekdays", translate("Week Days")) -o.oneline = true -o.widget = "checkbox" -o:value("Sun", translate("Sunday")) -o:value("Mon", translate("Monday")) -o:value("Tue", translate("Tuesday")) -o:value("Wed", translate("Wednesday")) -o:value("Thu", translate("Thursday")) -o:value("Fri", translate("Friday")) -o:value("Sat", translate("Saturday")) - -o = s:option(MultiValue, "monthdays", translate("Month Days")) -o.oneline = true -o.widget = "checkbox" -for i = 1,31 do - o:value(translate(i)) -end - -o = s:option(Value, "start_time", translate("Start Time (hh:mm:ss)")) -o.datatype = "timehhmmss" -o = s:option(Value, "stop_time", translate("Stop Time (hh:mm:ss)")) -o.datatype = "timehhmmss" -o = s:option(Value, "start_date", translate("Start Date (yyyy-mm-dd)")) -o.datatype = "dateyyyymmdd" -o = s:option(Value, "stop_date", translate("Stop Date (yyyy-mm-dd)")) -o.datatype = "dateyyyymmdd" - -o = s:option(Flag, "utc_time", translate("Time in UTC")) -o.default = o.disabled - -return m diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua deleted file mode 100644 index c533491977..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/rules.lua +++ /dev/null @@ -1,259 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ds = require "luci.dispatcher" -local ft = require "luci.tools.firewall" - -m = Map("firewall", - translate("Firewall - Traffic Rules"), - translate("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.")) - --- --- Rules --- - -s = m:section(TypedSection, "rule", translate("Traffic Rules")) -s.addremove = true -s.anonymous = true -s.sortable = true -s.template = "cbi/tblsection" -s.extedit = ds.build_url("admin/network/firewall/rules/%s") -s.defaults.target = "ACCEPT" -s.template_addremove = "firewall/cbi_addrule" - - -function s.create(self, section) - created = TypedSection.create(self, section) -end - -function s.parse(self, ...) - TypedSection.parse(self, ...) - - local i_n = m:formvalue("_newopen.name") - local i_p = m:formvalue("_newopen.proto") - local i_e = m:formvalue("_newopen.extport") - local i_x = m:formvalue("_newopen.submit") - - local f_n = m:formvalue("_newfwd.name") - local f_s = m:formvalue("_newfwd.src") - local f_d = m:formvalue("_newfwd.dest") - local f_x = m:formvalue("_newfwd.submit") - - if i_x then - created = TypedSection.create(self, section) - - self.map:set(created, "target", "ACCEPT") - self.map:set(created, "src", "wan") - self.map:set(created, "proto", (i_p ~= "other") and i_p or "all") - self.map:set(created, "dest_port", i_e) - self.map:set(created, "name", i_n) - - if i_p ~= "other" and i_e and #i_e > 0 then - created = nil - end - - elseif f_x then - created = TypedSection.create(self, section) - - self.map:set(created, "target", "ACCEPT") - self.map:set(created, "src", f_s) - self.map:set(created, "dest", f_d) - self.map:set(created, "name", f_n) - end - - if created then - m.uci:save("firewall") - luci.http.redirect(ds.build_url( - "admin/network/firewall/rules", created - )) - end -end - -ft.opt_name(s, DummyValue, translate("Name")) - -local function rule_proto_txt(self, s) - local f = self.map:get(s, "family") - local p = ft.fmt_proto(self.map:get(s, "proto"), - self.map:get(s, "icmp_type")) or translate("traffic") - - if f and f:match("4") then - return "%s-%s" %{ translate("IPv4"), p } - elseif f and f:match("6") then - return "%s-%s" %{ translate("IPv6"), p } - else - return "%s %s" %{ translate("Any"), p } - end -end - -local function rule_src_txt(self, s) - local z = ft.fmt_zone(self.map:get(s, "src"), translate("any zone")) - local a = ft.fmt_ip(self.map:get(s, "src_ip"), translate("any host")) - local p = ft.fmt_port(self.map:get(s, "src_port")) - local m = ft.fmt_mac(self.map:get(s, "src_mac")) - - if p and m then - return translatef("From %s in %s with source %s and %s", a, z, p, m) - elseif p or m then - return translatef("From %s in %s with source %s", a, z, p or m) - else - return translatef("From %s in %s", a, z) - end -end - -local function rule_dest_txt(self, s) - local z = ft.fmt_zone(self.map:get(s, "dest")) - local p = ft.fmt_port(self.map:get(s, "dest_port")) - - -- Forward - if z then - local a = ft.fmt_ip(self.map:get(s, "dest_ip"), translate("any host")) - if p then - return translatef("To %s, %s in %s", a, p, z) - else - return translatef("To %s in %s", a, z) - end - - -- Input - else - local a = ft.fmt_ip(self.map:get(s, "dest_ip"), - translate("any router IP")) - - if p then - return translatef("To %s at %s on this device", a, p) - else - return translatef("To %s on this device", a) - end - end -end - -local function snat_dest_txt(self, s) - local z = ft.fmt_zone(self.map:get(s, "dest"), translate("any zone")) - local a = ft.fmt_ip(self.map:get(s, "dest_ip"), translate("any host")) - local p = ft.fmt_port(self.map:get(s, "dest_port")) or - ft.fmt_port(self.map:get(s, "src_dport")) - - if p then - return translatef("To %s, %s in %s", a, p, z) - else - return translatef("To %s in %s", a, z) - end -end - - -match = s:option(DummyValue, "match", translate("Match")) -match.rawhtml = true -match.width = "70%" -function match.cfgvalue(self, s) - return "%s
%s
%s
" % { - rule_proto_txt(self, s), - rule_src_txt(self, s), - rule_dest_txt(self, s) - } -end - -target = s:option(DummyValue, "target", translate("Action")) -target.rawhtml = true -target.width = "20%" -function target.cfgvalue(self, s) - local t = ft.fmt_target(self.map:get(s, "target"), self.map:get(s, "dest")) - local l = ft.fmt_limit(self.map:get(s, "limit"), - self.map:get(s, "limit_burst")) - - if l then - return translatef("%s and limit to %s", t, l) - else - return "%s" % t - end -end - -ft.opt_enabled(s, Flag, translate("Enable")).width = "1%" - - --- --- SNAT --- - -s = m:section(TypedSection, "redirect", - translate("Source NAT"), - translate("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.")) -s.template = "cbi/tblsection" -s.addremove = true -s.anonymous = true -s.sortable = true -s.extedit = ds.build_url("admin/network/firewall/rules/%s") -s.template_addremove = "firewall/cbi_addsnat" - -function s.create(self, section) - created = TypedSection.create(self, section) -end - -function s.parse(self, ...) - TypedSection.parse(self, ...) - - local n = m:formvalue("_newsnat.name") - local s = m:formvalue("_newsnat.src") - local d = m:formvalue("_newsnat.dest") - local a = m:formvalue("_newsnat.dip") - local p = m:formvalue("_newsnat.dport") - local x = m:formvalue("_newsnat.submit") - - if x and a and #a > 0 then - created = TypedSection.create(self, section) - - self.map:set(created, "target", "SNAT") - self.map:set(created, "src", s) - self.map:set(created, "dest", d) - self.map:set(created, "proto", "all") - self.map:set(created, "src_dip", a) - self.map:set(created, "src_dport", p) - self.map:set(created, "name", n) - end - - if created then - m.uci:save("firewall") - luci.http.redirect(ds.build_url( - "admin/network/firewall/rules", created - )) - end -end - -function s.filter(self, sid) - return (self.map:get(sid, "target") == "SNAT") -end - -ft.opt_name(s, DummyValue, translate("Name")) - -match = s:option(DummyValue, "match", translate("Match")) -match.rawhtml = true -match.width = "70%" -function match.cfgvalue(self, s) - return "%s
%s
%s
" % { - rule_proto_txt(self, s), - rule_src_txt(self, s), - snat_dest_txt(self, s) - } -end - -snat = s:option(DummyValue, "via", translate("Action")) -snat.rawhtml = true -snat.width = "20%" -function snat.cfgvalue(self, s) - local a = ft.fmt_ip(self.map:get(s, "src_dip")) - local p = ft.fmt_port(self.map:get(s, "src_dport")) - - if a and p then - return translatef("Rewrite to source %s, %s", a, p) - else - return translatef("Rewrite to source %s", a or p) - end -end - -ft.opt_enabled(s, Flag, translate("Enable")).width = "1%" - - -return m diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua deleted file mode 100644 index 7553504572..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua +++ /dev/null @@ -1,232 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local nw = require "luci.model.network" -local fw = require "luci.model.firewall" -local ds = require "luci.dispatcher" -local ut = require "luci.util" - -local m, p, i, v -local s, name, net, family, msrc, mdest, log, lim -local s2, out, inp - - -m = Map("firewall", translate("Firewall - Zone Settings")) -m.redirect = luci.dispatcher.build_url("admin/network/firewall/zones") - -fw.init(m.uci) -nw.init(m.uci) - - -local zone = fw:get_zone(arg[1]) -if not zone then - luci.http.redirect(ds.build_url("admin/network/firewall/zones")) - return -else - m.title = "%s - %s" %{ - translate("Firewall - Zone Settings"), - translatef("Zone %q", zone:name() or "?") - } -end - - -s = m:section(NamedSection, zone.sid, "zone", - translatef("Zone %q", zone:name()), - translatef("This section defines common properties of %q. \ - The input and output options set the default \ - policies for traffic entering and leaving this zone while the \ - forward option describes the policy for forwarded traffic \ - between different networks within the zone. \ - Covered networks specifies which available networks are \ - members of this zone.", zone:name())) - -s.anonymous = true -s.addremove = false - -m.on_commit = function(map) - local zone = fw:get_zone(arg[1]) - if zone then - s.section = zone.sid - s2.section = zone.sid - end -end - - -s:tab("general", translate("General Settings")) -s:tab("advanced", translate("Advanced Settings")) - - -name = s:taboption("general", Value, "name", translate("Name")) -name.optional = false -name.forcewrite = true -name.datatype = "and(uciname,maxlength(11))" - -function name.write(self, section, value) - if zone:name() ~= value then - fw:rename_zone(zone:name(), value) - out.exclude = value - inp.exclude = value - end - - m.redirect = ds.build_url("admin/network/firewall/zones", value) - m.title = "%s - %s" %{ - translate("Firewall - Zone Settings"), - translatef("Zone %q", value or "?") - } -end - -p = { - s:taboption("general", ListValue, "input", translate("Input")), - s:taboption("general", ListValue, "output", translate("Output")), - s:taboption("general", ListValue, "forward", translate("Forward")) -} - -for i, v in ipairs(p) do - v:value("REJECT", translate("reject")) - v:value("DROP", translate("drop")) - v:value("ACCEPT", translate("accept")) -end - -s:taboption("general", Flag, "masq", translate("Masquerading")) -s:taboption("general", Flag, "mtu_fix", translate("MSS clamping")) - -net = s:taboption("general", Value, "network", translate("Covered networks")) -net.template = "cbi/network_netlist" -net.widget = "checkbox" -net.cast = "string" - -function net.formvalue(self, section) - return Value.formvalue(self, section) or "-" -end - -function net.cfgvalue(self, section) - return Value.cfgvalue(self, section) or name:cfgvalue(section) -end - -function net.write(self, section, value) - zone:clear_networks() - - local n - for n in ut.imatch(value) do - zone:add_network(n) - end -end - - -family = s:taboption("advanced", ListValue, "family", - translate("Restrict to address family")) - -family.rmempty = true -family:value("", translate("IPv4 and IPv6")) -family:value("ipv4", translate("IPv4 only")) -family:value("ipv6", translate("IPv6 only")) - -msrc = s:taboption("advanced", DynamicList, "masq_src", - translate("Restrict Masquerading to given source subnets")) - -msrc.optional = true -msrc.datatype = "list(neg(or(uciname,hostname,ipmask4)))" -msrc.placeholder = "0.0.0.0/0" -msrc:depends("family", "") -msrc:depends("family", "ipv4") - -mdest = s:taboption("advanced", DynamicList, "masq_dest", - translate("Restrict Masquerading to given destination subnets")) - -mdest.optional = true -mdest.datatype = "list(neg(or(uciname,hostname,ipmask4)))" -mdest.placeholder = "0.0.0.0/0" -mdest:depends("family", "") -mdest:depends("family", "ipv4") - -s:taboption("advanced", Flag, "conntrack", - translate("Force connection tracking")) - -log = s:taboption("advanced", Flag, "log", - translate("Enable logging on this zone")) - -log.rmempty = true -log.enabled = "1" - -lim = s:taboption("advanced", Value, "log_limit", - translate("Limit log messages")) - -lim.placeholder = "10/minute" -lim:depends("log", "1") - - -s2 = m:section(NamedSection, zone.sid, "fwd_out", - translate("Inter-Zone Forwarding"), - translatef("The options below control the forwarding policies between \ - this zone (%s) and other zones. Destination zones cover \ - forwarded traffic originating from %q. \ - Source zones match forwarded traffic from other zones \ - targeted at %q. The forwarding rule is \ - unidirectional, e.g. a forward from lan to wan does \ - not imply a permission to forward from wan to lan as well.", - zone:name(), zone:name(), zone:name() - - )) - -out = s2:option(Value, "out", - translate("Allow forward to destination zones:")) - -out.nocreate = true -out.widget = "checkbox" -out.exclude = zone:name() -out.template = "cbi/firewall_zonelist" - -inp = s2:option(Value, "in", - translate("Allow forward from source zones:")) - -inp.nocreate = true -inp.widget = "checkbox" -inp.exclude = zone:name() -inp.template = "cbi/firewall_zonelist" - -function out.cfgvalue(self, section) - local v = { } - local f - for _, f in ipairs(zone:get_forwardings_by("src")) do - v[#v+1] = f:dest() - end - return table.concat(v, " ") -end - -function inp.cfgvalue(self, section) - local v = { } - local f - for _, f in ipairs(zone:get_forwardings_by("dest")) do - v[#v+1] = f:src() - end - return v -end - -function out.formvalue(self, section) - return Value.formvalue(self, section) or "-" -end - -function inp.formvalue(self, section) - return Value.formvalue(self, section) or "-" -end - -function out.write(self, section, value) - zone:del_forwardings_by("src") - - local f - for f in ut.imatch(value) do - zone:add_forwarding_to(f) - end -end - -function inp.write(self, section, value) - zone:del_forwardings_by("dest") - - local f - for f in ut.imatch(value) do - zone:add_forwarding_from(f) - end -end - -return m diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua deleted file mode 100644 index 500e5078f4..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zones.lua +++ /dev/null @@ -1,76 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local ds = require "luci.dispatcher" -local fw = require "luci.model.firewall" - -local m, s, o, p, i, v - -m = Map("firewall", - translate("Firewall - Zone Settings"), - translate("The firewall creates zones over your network interfaces to control network traffic flow.")) - -fw.init(m.uci) - -s = m:section(TypedSection, "defaults", translate("General Settings")) -s.anonymous = true -s.addremove = false - -s:option(Flag, "syn_flood", translate("Enable SYN-flood protection")) - -o = s:option(Flag, "drop_invalid", translate("Drop invalid packets")) - -p = { - s:option(ListValue, "input", translate("Input")), - s:option(ListValue, "output", translate("Output")), - s:option(ListValue, "forward", translate("Forward")) -} - -for i, v in ipairs(p) do - v:value("REJECT", translate("reject")) - v:value("DROP", translate("drop")) - v:value("ACCEPT", translate("accept")) -end - - -s = m:section(TypedSection, "zone", translate("Zones")) -s.template = "cbi/tblsection" -s.anonymous = true -s.addremove = true -s.extedit = ds.build_url("admin", "network", "firewall", "zones", "%s") - -function s.create(self) - local z = fw:new_zone() - if z then - luci.http.redirect( - ds.build_url("admin", "network", "firewall", "zones", z.sid) - ) - end -end - -function s.remove(self, section) - return fw:del_zone(section) -end - -o = s:option(DummyValue, "_info", translate("Zone ⇒ Forwardings")) -o.template = "cbi/firewall_zoneforwards" -o.cfgvalue = function(self, section) - return self.map:get(section, "name") -end - -p = { - s:option(ListValue, "input", translate("Input")), - s:option(ListValue, "output", translate("Output")), - s:option(ListValue, "forward", translate("Forward")) -} - -for i, v in ipairs(p) do - v:value("REJECT", translate("reject")) - v:value("DROP", translate("drop")) - v:value("ACCEPT", translate("accept")) -end - -s:option(Flag, "masq", translate("Masquerading")) -s:option(Flag, "mtu_fix", translate("MSS clamping")) - -return m diff --git a/package/luci/applications/luci-app-firewall/luasrc/tools/firewall.lua b/package/luci/applications/luci-app-firewall/luasrc/tools/firewall.lua deleted file mode 100644 index 6d08fe13a9..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/tools/firewall.lua +++ /dev/null @@ -1,279 +0,0 @@ --- Copyright 2011-2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.tools.firewall", package.seeall) - -local ut = require "luci.util" -local ip = require "luci.ip" -local nx = require "nixio" - -local translate, translatef = luci.i18n.translate, luci.i18n.translatef - -local function tr(...) - return tostring(translate(...)) -end - -function fmt_neg(x) - if type(x) == "string" then - local v, neg = x:gsub("^ *! *", "") - if neg > 0 then - return v, "%s " % tr("not") - else - return x, "" - end - end - return x, "" -end - -function fmt_mac(x) - if x and #x > 0 then - local m, n - local l = { tr("MAC"), " " } - for m in ut.imatch(x) do - m, n = fmt_neg(m) - l[#l+1] = "%s%s" %{ n, m } - l[#l+1] = ", " - end - if #l > 1 then - l[#l] = nil - if #l > 3 then - l[1] = tr("MACs") - end - return table.concat(l, "") - end - end -end - -function fmt_port(x, d) - if x and #x > 0 then - local p, n - local l = { tr("port"), " " } - for p in ut.imatch(x) do - p, n = fmt_neg(p) - local a, b = p:match("(%d+)%D+(%d+)") - if a and b then - l[1] = tr("ports") - l[#l+1] = "%s%d-%d" %{ n, a, b } - else - l[#l+1] = "%s%d" %{ n, p } - end - l[#l+1] = ", " - end - if #l > 1 then - l[#l] = nil - if #l > 3 then - l[1] = tr("ports") - end - return table.concat(l, "") - end - end - return d and "%s" % d -end - -function fmt_ip(x, d) - if x and #x > 0 then - local l = { tr("IP"), " " } - local v, a, n - for v in ut.imatch(x) do - v, n = fmt_neg(v) - a, m = v:match("(%S+)/(%d+%.%S+)") - a = a or v - a = a:match(":") and ip.IPv6(a, m) or ip.IPv4(a, m) - if a and (a:is6() and a:prefix() < 128 or a:prefix() < 32) then - l[1] = tr("IP range") - l[#l+1] = "%s%s" %{ - a:minhost():string(), - a:maxhost():string(), - n, a:string() - } - else - l[#l+1] = "%s%s" %{ - n, - a and a:string() or v - } - end - l[#l+1] = ", " - end - if #l > 1 then - l[#l] = nil - if #l > 3 then - l[1] = tr("IPs") - end - return table.concat(l, "") - end - end - return d and "%s" % d -end - -function fmt_zone(x, d) - if x == "*" then - return "%s" % tr("any zone") - elseif x and #x > 0 then - return "%s" % x - elseif d then - return "%s" % d - end -end - -function fmt_icmp_type(x) - if x and #x > 0 then - local t, v, n - local l = { tr("type"), " " } - for v in ut.imatch(x) do - v, n = fmt_neg(v) - l[#l+1] = "%s%s" %{ n, v } - l[#l+1] = ", " - end - if #l > 1 then - l[#l] = nil - if #l > 3 then - l[1] = tr("types") - end - return table.concat(l, "") - end - end -end - -function fmt_proto(x, icmp_types) - if x and #x > 0 then - local v, n - local l = { } - local t = fmt_icmp_type(icmp_types) - for v in ut.imatch(x) do - v, n = fmt_neg(v) - if v == "tcpudp" then - l[#l+1] = "TCP" - l[#l+1] = ", " - l[#l+1] = "UDP" - l[#l+1] = ", " - elseif v ~= "all" then - local p = nx.getproto(v) - if p then - -- ICMP - if (p.proto == 1 or p.proto == 58) and t then - l[#l+1] = translatef( - "%s%s with %s", - n, p.aliases[1] or p.name, t - ) - else - l[#l+1] = "%s%s" %{ - n, - p.aliases[1] or p.name - } - end - l[#l+1] = ", " - end - end - end - if #l > 0 then - l[#l] = nil - return table.concat(l, "") - end - end -end - -function fmt_limit(limit, burst) - burst = tonumber(burst) - if limit and #limit > 0 then - local l, u = limit:match("(%d+)/(%w+)") - l = tonumber(l or limit) - u = u or "second" - if l then - if u:match("^s") then - u = tr("second") - elseif u:match("^m") then - u = tr("minute") - elseif u:match("^h") then - u = tr("hour") - elseif u:match("^d") then - u = tr("day") - end - if burst and burst > 0 then - return translatef("%d pkts. per %s, \ - burst %d pkts.", l, u, burst) - else - return translatef("%d pkts. per %s", l, u) - end - end - end -end - -function fmt_target(x, dest) - if dest and #dest > 0 then - if x == "ACCEPT" then - return tr("Accept forward") - elseif x == "REJECT" then - return tr("Refuse forward") - elseif x == "NOTRACK" then - return tr("Do not track forward") - else --if x == "DROP" then - return tr("Discard forward") - end - else - if x == "ACCEPT" then - return tr("Accept input") - elseif x == "REJECT" then - return tr("Refuse input") - elseif x == "NOTRACK" then - return tr("Do not track input") - else --if x == "DROP" then - return tr("Discard input") - end - end -end - - -function opt_enabled(s, t, ...) - if t == luci.cbi.Button then - local o = s:option(t, "__enabled") - function o.render(self, section) - if self.map:get(section, "enabled") ~= "0" then - self.title = tr("Rule is enabled") - self.inputtitle = tr("Disable") - self.inputstyle = "reset" - else - self.title = tr("Rule is disabled") - self.inputtitle = tr("Enable") - self.inputstyle = "apply" - end - t.render(self, section) - end - function o.write(self, section, value) - if self.map:get(section, "enabled") ~= "0" then - self.map:set(section, "enabled", "0") - else - self.map:del(section, "enabled") - end - end - return o - else - local o = s:option(t, "enabled", ...) - o.default = "1" - return o - end -end - -function opt_name(s, t, ...) - local o = s:option(t, "name", ...) - - function o.cfgvalue(self, section) - return self.map:get(section, "name") or - self.map:get(section, "_name") or "-" - end - - function o.write(self, section, value) - if value ~= "-" then - self.map:set(section, "name", value) - self.map:del(section, "_name") - else - self:remove(section) - end - end - - function o.remove(self, section) - self.map:del(section, "name") - self.map:del(section, "_name") - end - - return o -end diff --git a/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm b/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm deleted file mode 100644 index b3079f3a48..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addforward.htm +++ /dev/null @@ -1,112 +0,0 @@ -<%- - local fw = require "luci.model.firewall".init() - local izl = { } - local ezl = { } - local _, z - for _, z in ipairs(fw:get_zones()) do - if z:name() ~= "wan" then - izl[#izl+1] = z - end - if z:name() ~= "lan" then - ezl[#ezl+1] = z - end - end - - local keys, vals = { }, { } - luci.sys.net.ipv4_hints(function(ip, name) - keys[#keys+1] = ip - vals[#vals+1] = '%s (%s)' %{ ip, name } - end) --%> -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
<%:New port forward%>:
<%:Name%><%:Protocol%><%:External zone%><%:External port%><%:Internal zone%><%:Internal IP address%><%:Internal port%>
- - - - - - - - - - - 0, "data-choices", {keys, vals}) - %>/> - - - - -
- - -
diff --git a/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm b/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm deleted file mode 100644 index 463b2e05f4..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm +++ /dev/null @@ -1,112 +0,0 @@ -<% - local fw = require "luci.model.firewall".init() - local wz = fw:get_zone("wan") - local lz = fw:get_zone("lan") -%> - -
- <% if wz and lz then %> -
- - - - - - - - - - - - - - - - -
<%:Open ports on router%>:
<%:Name%><%:Protocol%><%:External port%>
- - - - - - - -
- - - - - - - - - - - - - - - - - -

<%:New forward rule%>:
<%:Name%><%:Source zone%><%:Destination zone%>
- - - - - - - -
- - - <% else %> - - <% end %> -
diff --git a/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm b/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm deleted file mode 100644 index ce275111d8..0000000000 --- a/package/luci/applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm +++ /dev/null @@ -1,65 +0,0 @@ -<% - local fw = require "luci.model.firewall".init() - local nw = require "luci.model.network".init() - local wz = fw:get_zone("wan") - local lz = fw:get_zone("lan") - - local keys, vals, a, k, v = {}, {} - for k, v in ipairs(nw:get_interfaces()) do - for k, a in ipairs(v:ipaddrs()) do - keys[#keys+1] = a:host():string() - vals[#vals+1] = '%s (%s)' %{ a:host(), v:shortname() } - end - end -%> - -
- <% if wz and lz then %> -
- - - - - - - - - - - - - - - - - - - - -
<%:New source NAT%>:
<%:Name%><%:Source zone%><%:Destination zone%><%:To source IP%><%:To source port%>
- - - - - - - 0, "data-choices", { keys, vals }) - %> /> - - - - -
- <% else %> - - <% end %> -
diff --git a/package/luci/applications/luci-app-firewall/po/ca/firewall.po b/package/luci/applications/luci-app-firewall/po/ca/firewall.po deleted file mode 100644 index 3abdc892d8..0000000000 --- a/package/luci/applications/luci-app-firewall/po/ca/firewall.po +++ /dev/null @@ -1,521 +0,0 @@ -# luci-fw.pot -# generated from ./applications/luci-fw/luasrc/i18n/luci-fw.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2014-06-17 09:40+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s en %s" - -msgid "%s%s with %s" -msgstr "%s%s amb %s" - -msgid "%s, %s in %s" -msgstr "%s, %s en %s" - -msgid "(Unnamed Entry)" -msgstr "(Entrada sense nom)" - -msgid "(Unnamed Rule)" -msgstr "(Regla sense nom)" - -msgid "(Unnamed SNAT)" -msgstr "(SNAT sense nom)" - -msgid "%d pkts. per %s" -msgstr "%d paquets al %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "%s i limita a %s" - -msgid "Action" -msgstr "Acció" - -msgid "Add" -msgstr "Afegeix" - -msgid "Add and edit..." -msgstr "Afegeix i edita..." - -msgid "Advanced Settings" -msgstr "Ajusts avançats" - -msgid "Allow forward from source zones:" -msgstr "Permet el reenviament des dels zones d'origen:" - -msgid "Allow forward to destination zones:" -msgstr "Permet el reenviament als zones de destí:" - -msgid "Any" -msgstr "Qualsevol" - -msgid "Covered networks" -msgstr "Xarxes cobertes" - -msgid "Custom Rules" -msgstr "Regles personalitzades" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Les regles personalitzades us permet executar ordres del iptables arbitraris " -"que la infraestructura de tallafocs no cobreix d'altra manera. Aquests " -"ordres s'executen després de cada reinici de tallafocs, just després el " -"conjunt de regles per defecte s'ha carregat." - -msgid "Destination IP address" -msgstr "Adreça IP de destí" - -msgid "Destination address" -msgstr "Adreça de destí" - -msgid "Destination port" -msgstr "Port de destí" - -msgid "Destination zone" -msgstr "Zona de destí" - -msgid "Do not rewrite" -msgstr "No reescriguis" - -msgid "Drop invalid packets" -msgstr "Descarta els paquets invàlids" - -msgid "Enable" -msgstr "Habilita" - -msgid "Enable NAT Loopback" -msgstr "" - -msgid "Enable SYN-flood protection" -msgstr "Habilita protecció contra la inundació SYN" - -msgid "Enable logging on this zone" -msgstr "Habilita el registre d'aquesta zona" - -msgid "External IP address" -msgstr "Adreça IP extern" - -msgid "External port" -msgstr "Port extern" - -msgid "External zone" -msgstr "Zona extern" - -msgid "Extra arguments" -msgstr "Paràmetres extres" - -msgid "Firewall" -msgstr "Tallafocs" - -msgid "Firewall - Custom Rules" -msgstr "Tallafocs - Regles personalitzades" - -msgid "Firewall - Port Forwards" -msgstr "Tallafocs - Reenviaments de port" - -msgid "Firewall - Traffic Rules" -msgstr "Tallafocs - Regles de tràfic" - -msgid "Firewall - Zone Settings" -msgstr "Tallafocs - Ajusts de zona" - -msgid "Force connection tracking" -msgstr "Força el rastreig de connexió" - -msgid "Forward" -msgstr "Reenvia" - -msgid "Forward to" -msgstr "Reenvia a" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "Des de %s en %s" - -msgid "From %s in %s with source %s" -msgstr "Des de %s en %s amb origen %s" - -msgid "From %s in %s with source %s and %s" -msgstr "Des de %s en %s amb orígens %s i %s" - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 i IPv6" - -msgid "IPv4 only" -msgstr "Només IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Només IPv6" - -msgid "Input" -msgstr "Entrada" - -msgid "Inter-Zone Forwarding" -msgstr "Reenviament interzonal" - -msgid "Internal IP address" -msgstr "Adreça IP interna" - -msgid "Internal port" -msgstr "Port intern" - -msgid "Internal zone" -msgstr "Zona interna" - -msgid "Limit log messages" -msgstr "Limita els missatges de registre" - -msgid "MSS clamping" -msgstr "Fixació MSS" - -msgid "Masquerading" -msgstr "Mascarada" - -msgid "Match" -msgstr "Coincideix" - -msgid "Match ICMP type" -msgstr "Coincideix amb el tipus ICMP" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "" -"Coincideix amb trànsit reenviat al port o rang de ports de destí donat." - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Coincideix amb trànsit entrant dirigit al port o rang de ports de destí en " -"aquest host donat" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" -"Coincideix amb trànsit entrant originant en el host client des del port o " -"rang de ports d'origen donat." - -msgid "Monday" -msgstr "" - -msgid "Month Days" -msgstr "" - -msgid "Name" -msgstr "Nom" - -msgid "New SNAT rule" -msgstr "Nova regla SNAT" - -msgid "New forward rule" -msgstr "Nova regla de reenviament" - -msgid "New input rule" -msgstr "Nova regla d'entrada" - -msgid "New port forward" -msgstr "Nou reenviament de port" - -msgid "New source NAT" -msgstr "Nou origen NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Només coincideix amb trànsit entrant dirigit a la adreça IP donada." - -msgid "Only match incoming traffic from these MACs." -msgstr "Només coincideix amb trànsit entrant des d'aquests MAC." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Només coincideix amb trànsit entrant des d'aquest IP o rang." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "" -"Només coincideix amb trànsit originant en el host client des del port o del " -"rang de ports d'origen donat" - -msgid "Open ports on router" -msgstr "Obre els ports en el encaminador" - -msgid "Other..." -msgstr "Altre..." - -msgid "Output" -msgstr "Sortida" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "Passa paràmetres addicionals al iptables. Utilitzeu-ho amb cura!" - -msgid "Port Forwards" -msgstr "Reenviaments de port" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"El reenviament de ports permet que els ordinadors remots en el Internet " -"connectin a un ordinador o servei específic dins del LAN privat." - -msgid "Protocol" -msgstr "Protocol" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "Redirigeix trànsit entrant coincidit al port donat en el host intern" - -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" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Restringeix la mascarada a les subxarxes d'origen donades" - -msgid "Restrict to address family" -msgstr "Restringeix a la família d'adreces" - -msgid "Rewrite matched traffic to the given address." -msgstr "Reescriu el trànsit coincidint cap a la adreça donada." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Reescriu el trànsit coincidint cap al port d'origen donat. Pot ser deixat en " -"blanc per només reescriure l'adreça IP." - -msgid "Rewrite to source %s" -msgstr "Reescriu a l'origen %s" - -msgid "Rewrite to source %s, %s" -msgstr "Reescriu als orígens %s, %s" - -msgid "SNAT IP address" -msgstr "Adreça IP de SNAT" - -msgid "SNAT port" -msgstr "Port SNAT" - -msgid "Saturday" -msgstr "" - -msgid "Source IP address" -msgstr "Adreça IP d'origen" - -msgid "Source MAC address" -msgstr "Adreça MAC d'origen" - -msgid "Source NAT" -msgstr "NAT d'origen" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"El NAT d'origen és un forma específic de mascarada que permet control de gra " -"fi sobre l'IP d'origen utilitzat pel trànsit sortint, per exemple per " -"associar múltiples adreces WAN a subxarxes internes." - -msgid "Source address" -msgstr "Adreça d'origen" - -msgid "Source port" -msgstr "Port d'origen" - -msgid "Source zone" -msgstr "Zona d'origen" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"El tallafocs crea zones a les teves interfícies de xarxa per controlar el " -"flux de tràfic de xarxa." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Les opcions a sota controlen les polítiques de reenviament entre aquesta " -"zona (%s) i altres zones. Zones de destí cobreixen trànsit reenviat " -"originant des de %q. Zones d'origen coincideixen " -"amb trànsit reenviat des de altres zones apuntat a %q. La " -"regla de reenviament es unidirectional, per exemple un reenviament " -"de lan a wan no implica permís per reenviar de wan a lan també." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Aquesta pàgina us permet canviar propietats avançats de l'entrada de " -"reenviament de port. En la majoria dels casos no hi ha necessitat de " -"modificar aquests ajusts." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Aquesta pàgina us permet canviar propietats avançats de l'entrada de regla " -"de trànsit, com als hosts d'origen i de destí coincidits." - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Aquesta secció defineix propietats comuns de %q. Les opcions entrada i sortida estableixen les polítiques per defecte per a trànsit " -"entrant i sortint aquesta zona mentre l'opció reenvia descriu la " -"política de trànsit reenviat entre xarxes distintes dins de la zona. " -"Xarxes cobertes especifica quines xarxes disponibles són membres " -"d'aquesta zona." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "A %s a %s en aquest dispositiu" - -msgid "To %s in %s" -msgstr "A %s en %s" - -msgid "To %s on this device" -msgstr "A %s en aquest dispositiu" - -msgid "To %s, %s in %s" -msgstr "A %s, %s en %s" - -msgid "To source IP" -msgstr "A l'IP d'origen" - -msgid "To source port" -msgstr "Al port d'origen" - -msgid "Traffic Rules" -msgstr "Regles de trànsit" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"Les regles de trànsit defineixen polítiques per als paquets viatjant entre " -"zones distintes, per exemple per a rebutjar trànsit entre certs hosts o " -"obrir ports WAN en el encaminador." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "Via %s" - -msgid "Via %s at %s" -msgstr "Via %s a %s" - -msgid "Wednesday" -msgstr "" - -msgid "Week Days" -msgstr "" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" -"Podeu especificar múltiples per seleccionar \"-- personalitzat --\" i " -"llavors introduir protocols separats per espai." - -msgid "Zone %q" -msgstr "Zona %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Zona ⇒ Reenviaments" - -msgid "Zones" -msgstr "Zones" - -msgid "accept" -msgstr "accepta" - -msgid "any" -msgstr "qualsevol" - -msgid "any host" -msgstr "qualsevol host" - -msgid "any router IP" -msgstr "qualsevol IP d'encaminador" - -msgid "any zone" -msgstr "qualsevol zona" - -msgid "don't track" -msgstr "no rastregis" - -msgid "drop" -msgstr "descarta" - -msgid "reject" -msgstr "rebutja" - -msgid "traffic" -msgstr "trànsit" diff --git a/package/luci/applications/luci-app-firewall/po/cs/firewall.po b/package/luci/applications/luci-app-firewall/po/cs/firewall.po deleted file mode 100644 index c796873ded..0000000000 --- a/package/luci/applications/luci-app-firewall/po/cs/firewall.po +++ /dev/null @@ -1,516 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-21 11:22+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s v %s" - -msgid "%s%s with %s" -msgstr "%s%s s %s" - -msgid "%s, %s in %s" -msgstr "%s, %s v %s" - -msgid "(Unnamed Entry)" -msgstr "(Nepojmenovaný vstup)" - -msgid "(Unnamed Rule)" -msgstr "(Nepojmenované pravidlo)" - -msgid "(Unnamed SNAT)" -msgstr "(Nepojmenovaný SNAT)" - -msgid "%d pkts. per %s" -msgstr "%d paketů za %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d paketů za %s, burst %d paketů." - -msgid "%s and limit to %s" -msgstr "%s a omezit na %s" - -msgid "Action" -msgstr "Akce" - -msgid "Add" -msgstr "Přidat" - -msgid "Add and edit..." -msgstr "Přidat a upravit" - -msgid "Advanced Settings" -msgstr "Pokročilé nastavení" - -msgid "Allow forward from source zones:" -msgstr "Povolit přesměrování ze zdrojových oblastí:" - -msgid "Allow forward to destination zones:" -msgstr "Povolit přesměrování do zdrojových oblastí:" - -msgid "Any" -msgstr "Libovolné" - -msgid "Covered networks" -msgstr "Pokryté sítě" - -msgid "Custom Rules" -msgstr "Vlastní pravidla" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Vlastní pravidla vám umožňují spustit libovolné iptables příkazy, které " -"nejsou jinak pokryté frameworkem firewallu. Příkazy jsou spuštěny po každém " -"restartu firewallu, právě po načtení výchozí sady pravidel." - -msgid "Destination IP address" -msgstr "Cílová IP adresa" - -msgid "Destination address" -msgstr "Cílová adresa" - -msgid "Destination port" -msgstr "Cílový port" - -msgid "Destination zone" -msgstr "Cílová oblast" - -msgid "Do not rewrite" -msgstr "Nepřepisovat" - -msgid "Drop invalid packets" -msgstr "Zahazovat neplatné pakety" - -msgid "Enable" -msgstr "Povolit" - -msgid "Enable NAT Loopback" -msgstr "Povolit NAT Loopback" - -msgid "Enable SYN-flood protection" -msgstr "Povolit ochranu proti SYN-flood" - -msgid "Enable logging on this zone" -msgstr "Povolit logování v této oblasti" - -msgid "External IP address" -msgstr "Vnější IP adresa" - -msgid "External port" -msgstr "Vnější port" - -msgid "External zone" -msgstr "Vnější zóna" - -msgid "Extra arguments" -msgstr "Dodatečné argumenty" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall - Custom Rules" -msgstr "Firewall - Vlastní pravidla" - -msgid "Firewall - Port Forwards" -msgstr "Firewall - Přesměrování portů" - -msgid "Firewall - Traffic Rules" -msgstr "Firewall - Pravidla síťového provozu" - -msgid "Firewall - Zone Settings" -msgstr "Firewall - Nastavení zón" - -msgid "Force connection tracking" -msgstr "Vynutit sledování připojení" - -msgid "Forward" -msgstr "Přesměrování" - -msgid "Forward to" -msgstr "Přesměrovat na" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "Z %s v %s" - -msgid "From %s in %s with source %s" -msgstr "Z %s v %s se zdrojovou %s" - -msgid "From %s in %s with source %s and %s" -msgstr "Z %s v %s se zdrojovou %s a %s" - -msgid "General Settings" -msgstr "Obecné nastavení" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 a IPv6" - -msgid "IPv4 only" -msgstr "pouze IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "pouze IPv6" - -msgid "Input" -msgstr "Vstup" - -# nebo mimo zóny? -msgid "Inter-Zone Forwarding" -msgstr "Přesměrování mezi zónami" - -msgid "Internal IP address" -msgstr "Vnitřní IP adresa" - -msgid "Internal port" -msgstr "Vnitřní port" - -msgid "Internal zone" -msgstr "Vnitřní zóna" - -msgid "Limit log messages" -msgstr "Omezit logovací zprávy" - -msgid "MSS clamping" -msgstr "MSS clamping" - -msgid "Masquerading" -msgstr "Maškárádování" - -msgid "Match" -msgstr "Shoda" - -msgid "Match ICMP type" -msgstr "Odpovídá ICMP typu" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "Vybrat provoz, přesměrovaný na zadaný port nebo rozsah portů" - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Vybrat příchozí provoz, směrovaný na zadaný cílový port nebo rozsah portů " -"tohoto hostitele" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" -"Vybrat příchozí provoz, pocházející ze zadaného portu nebo rozsahu portů " -"klienta." - -msgid "Monday" -msgstr "" - -msgid "Month Days" -msgstr "" - -msgid "Name" -msgstr "Název" - -msgid "New SNAT rule" -msgstr "Nové pravidlo SNAT" - -msgid "New forward rule" -msgstr "Nové přesměrovací pravidlo" - -msgid "New input rule" -msgstr "Nové vstupní pravidlo" - -msgid "New port forward" -msgstr "Nové přesměrování portu" - -msgid "New source NAT" -msgstr "Nový zdrojový NAT (SNAT)" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Vybrat pouze příchozí provoz, směrovaný na danou IP adresu." - -msgid "Only match incoming traffic from these MACs." -msgstr "Vybrat pouze příchozí provoz z těchto MAC adres." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Vybrat pouze příchozí provoz z této IP nebo rozsahu IP adres." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "" -"Vybrat pouze příchozí provoz, pocházející ze zadaného portu nebo rozsahu " -"portů klienta." - -msgid "Open ports on router" -msgstr "Otevřené porty na routeru" - -msgid "Other..." -msgstr "Ostatní ..." - -msgid "Output" -msgstr "Výstup" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "Předává další argumenty iptables. Používat opatrně!" - -msgid "Port Forwards" -msgstr "Přesměrování portů" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"Přesměrování portů (port forwarding) umožňuje vzdáleným počítačům z " -"Internetu připojení k vybraným počítačům nebo službám uvnitř privátní sítě " -"LAN." - -msgid "Protocol" -msgstr "Protokol" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Přesměrovat vybraný příchozí provoz na uvedený port vnitřního hostitele." - -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ě" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Omezit maškarádování na uvedené zdrojové podsítě" - -msgid "Restrict to address family" -msgstr "Omezit na rodinu adres" - -msgid "Rewrite matched traffic to the given address." -msgstr "Přepsat shodný provoz na uvedenou adresu." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Přepsat shodný provoz na uvedený zdrojový port. Může zůstat prázdné, pak " -"bude přepsána pouze IP adresa." - -msgid "Rewrite to source %s" -msgstr "Přepsat na zdrojovou %s" - -msgid "Rewrite to source %s, %s" -msgstr "Přepsat na zdrojovou %s, %s" - -msgid "SNAT IP address" -msgstr "IP adresa SNATu" - -msgid "SNAT port" -msgstr "Port SNATu" - -msgid "Saturday" -msgstr "" - -msgid "Source IP address" -msgstr "Zdrojová IP adresa" - -msgid "Source MAC address" -msgstr "Zdrojová MAC adresa" - -msgid "Source NAT" -msgstr "Zdrojový NAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"Zdrojový NAT je specifická forma maškarádování, která umožňuje jemnozrnnou " -"kontrolu nad zdrojovými IP, použitými pro odchozí provoz. Využívá se " -"například pro mapování množství WAN adres do vnitřních podsítí." - -msgid "Source address" -msgstr "Zdrojová adresa" - -msgid "Source port" -msgstr "Zdrojový port" - -msgid "Source zone" -msgstr "Zdrojová zóna" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"Firewall vytváří zóny přes vaše síťová rozhraní za účelem řízení síťového " -"provozu." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Níže uvedené možnosti řídí přesměrovací politiky mezi touto zónou (%s) a " -"ostatními zónami. Cílové zóny pokrývají přesměrovávaný provoz, " -"pocházející z %q. Zdrojové zóny porovnávají " -"přesměrovávaný provoz z ostatních zón, zaměřený na %q. " -"Přesměrovávací pravidlo je jednosměrné, například přesměrování z " -"lan do wan nepovoluje přesměrování z wan do lan (a naopak)." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Tato stránka vám umožňuje změnit pokročilé vlastností přesměrování portů. Ve " -"většině případů není potřeba upravovat tato nastavení." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Tato stránka vám umožňuje změnit pokročilé vlastnosti pravidla síťového " -"provozu, například zdrojové a cílové hostitele." - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Tato sekce definuje běžné možnosti %q. Vstupní a výstupní " -"možnosti nastavují výchozí politiky pro provoz, vstupující do této zóny a " -"vystupující z ní, zatímco přesměrovací možnosti popisují politiku " -"pro přesměrování provozu mezi rozdílnými sítěmi uvnitř jedné zóny. " -"Pokryté sítě určuje, které z dostupných sítí jsou členy této zóny." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "Na %s v %s na tomto zařízení" - -msgid "To %s in %s" -msgstr "Na %s v %s" - -msgid "To %s on this device" -msgstr "Na %s na tomto zařízení" - -msgid "To %s, %s in %s" -msgstr "Na %s, %s v %s" - -msgid "To source IP" -msgstr "Na zdrojovou IP" - -msgid "To source port" -msgstr "Na zdrojový port" - -msgid "Traffic Rules" -msgstr "Pravidla síťového provozu" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"Pravidla síťového provozu definují politiky pro cestování paketů mezi " -"různými zónami, například pro odmítnutí provozu mezi jistými hostiteli nebo " -"pro otevření WAN portů na routeru." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "Prostřednictvím %s" - -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 "" -"Lze určit více protokolů. Vyberte \"-- vlastní --\" a vkládejte protokoly " -"oddělené mezerou." - -msgid "Zone %q" -msgstr "Zóna %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Zóna ⇒ Přesměrování" - -msgid "Zones" -msgstr "Zóny" - -msgid "accept" -msgstr "přijmout" - -msgid "any" -msgstr "libovolný" - -msgid "any host" -msgstr "libovolný hostitel" - -msgid "any router IP" -msgstr "libovolná IP routeru" - -msgid "any zone" -msgstr "libovolná zóna" - -msgid "don't track" -msgstr "nesledovat" - -msgid "drop" -msgstr "zahodit" - -msgid "reject" -msgstr "odmítnout" - -msgid "traffic" -msgstr "provoz" diff --git a/package/luci/applications/luci-app-firewall/po/de/firewall.po b/package/luci/applications/luci-app-firewall/po/de/firewall.po deleted file mode 100644 index 00e259ca70..0000000000 --- a/package/luci/applications/luci-app-firewall/po/de/firewall.po +++ /dev/null @@ -1,522 +0,0 @@ -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: 2014-03-25 02:04+0200\n" -"Last-Translator: laryllian \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s in %s" - -msgid "%s%s with %s" -msgstr "%s%s mit %s" - -msgid "%s, %s in %s" -msgstr "%s, %s in %s" - -msgid "(Unnamed Entry)" -msgstr "(Unbenannter Eintrag)" - -msgid "(Unnamed Rule)" -msgstr "(Unbenannte Regel)" - -msgid "(Unnamed SNAT)" -msgstr "(Unbennanter SNAT-Eintrag)" - -msgid "%d pkts. per %s" -msgstr "%d Pkte. pro %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d Pkte. pro %s, Häufung %d Pkte." - -msgid "%s and limit to %s" -msgstr "%s und limitieren auf %s" - -msgid "Action" -msgstr "Aktion" - -msgid "Add" -msgstr "Hinzufügen" - -msgid "Add and edit..." -msgstr "Hinzufügen und bearbeiten..." - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Allow forward from source zones:" -msgstr "Erlaube Weiterleitung von Quellzone:" - -msgid "Allow forward to destination zones:" -msgstr "Erlaube Weiterleitung zu Zielzone:" - -msgid "Any" -msgstr "beliebig" - -msgid "Covered networks" -msgstr "Abgedeckte Netzwerke" - -msgid "Custom Rules" -msgstr "Benutzerdefinierte Regeln" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Benutzerdefinierte Regeln ermöglichen das Ausführen belieber iptables-" -"Befehle welche durch das Firewall-Framework nicht unterstützt werden. Die " -"Befehle werden mit jedem Firewall-Neustart abgearbeitet, direkt nach dem " -"Laden der Basisregeln." - -msgid "Destination IP address" -msgstr "Ziel IP-Adresse" - -msgid "Destination address" -msgstr "Zieladresse" - -msgid "Destination port" -msgstr "Zielport" - -msgid "Destination zone" -msgstr "Ziel-Zone" - -msgid "Do not rewrite" -msgstr "Nicht umschreiben" - -msgid "Drop invalid packets" -msgstr "Ungültige Pakete verwerfen" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "Enable NAT Loopback" -msgstr "NAT-Loopback aktivieren" - -msgid "Enable SYN-flood protection" -msgstr "Schutz vor SYN-flood-Attacken" - -msgid "Enable logging on this zone" -msgstr "Protokollierung innerhalb der Zone aktivieren" - -msgid "External IP address" -msgstr "Externe IP-Adresse" - -msgid "External port" -msgstr "Externer Port" - -msgid "External zone" -msgstr "Externe Zone" - -msgid "Extra arguments" -msgstr "Zusätzliche Argumente" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall - Custom Rules" -msgstr "Firewall - Benutzerdefinierte Regeln" - -msgid "Firewall - Port Forwards" -msgstr "Firewall - Portweiterleitungen" - -msgid "Firewall - Traffic Rules" -msgstr "Firewall - Verkehrsregeln" - -msgid "Firewall - Zone Settings" -msgstr "Firewall - Zoneneinstellungen" - -msgid "Force connection tracking" -msgstr "Connectiontracking erzwingen" - -msgid "Forward" -msgstr "Weitergeleitet" - -msgid "Forward to" -msgstr "Weiterleiten an" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "Von %s in %s" - -msgid "From %s in %s with source %s" -msgstr "Von %s in %s mit Quell-%s" - -msgid "From %s in %s with source %s and %s" -msgstr "Von %s in %s mit Quell-%s und %s" - -msgid "General Settings" -msgstr "Allgemein" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 und IPv6" - -msgid "IPv4 only" -msgstr "nur IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "nur IPv6" - -msgid "Input" -msgstr "Eingang" - -msgid "Inter-Zone Forwarding" -msgstr "Weiterleitungen zwischen Zonen" - -msgid "Internal IP address" -msgstr "Interne IP-Adresse" - -msgid "Internal port" -msgstr "Interner Port" - -msgid "Internal zone" -msgstr "Interne Zone" - -msgid "Limit log messages" -msgstr "Protokollnachrichten limitieren" - -msgid "MSS clamping" -msgstr "MSS Korrektur" - -msgid "Masquerading" -msgstr "NAT aktivieren" - -msgid "Match" -msgstr "Filter" - -msgid "Match ICMP type" -msgstr "Nach ICMP-Typ filtern" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "Selektiert weitergeleiteten Verkehr nach den angegebenen Ziel-Ports." - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Eingehende Verbindungen filtern welche an den angegebenen Port oder " -"Portbereich auf dem lokalen Gerät gerichtet sind" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "Selektiert eingehenden Verkehr nach den angegebenen Quell-Ports." - -msgid "Monday" -msgstr "" - -msgid "Month Days" -msgstr "" - -msgid "Name" -msgstr "Name" - -msgid "New SNAT rule" -msgstr "Neue SNAT-Regel" - -msgid "New forward rule" -msgstr "Neuer Weiterleitungsregel" - -msgid "New input rule" -msgstr "Neue Eingangsregel" - -msgid "New port forward" -msgstr "Neue Portweiterleitung" - -msgid "New source NAT" -msgstr "Neues SNAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Selektiere nur Verkehr der an die angegebene IP-Adresse gerichtet ist." - -msgid "Only match incoming traffic from these MACs." -msgstr "Selektiere nur Verkehr von den angegebenen MAC-Adressen." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Selektiere nur Verkehr vom angebenem Quell-IP-Adressbereich." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "Selektiere nur Verkehr von den angegebenen Quell-Ports auf dem Client." - -msgid "Open ports on router" -msgstr "Ports auf dem Router öffnen" - -msgid "Other..." -msgstr "Anderes..." - -msgid "Output" -msgstr "Ausgang" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" -"Gibt zusätzliche Kommandozeilenargumente an iptables weiter. Mit Vorsicht " -"benutzen!" - -msgid "Port Forwards" -msgstr "Portweiterleitungen" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"Portweiterleitungen ermöglichen es entfernten Rechnern im Internet auf " -"bestimmte Computer oder Dienste im lokalen LAN zuzugreifen." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Gefilterte Verbindungen an den angegeben Port auf dem internen Host " -"weiterleiten" - -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" - -msgid "Restrict Masquerading to given source subnets" -msgstr "NAT auf die angegebenen Quell-Subnetze beschränken" - -msgid "Restrict to address family" -msgstr "Beschränke auf Adressfamilie" - -msgid "Rewrite matched traffic to the given address." -msgstr "Schreibe selektierten Verkehr auf die angegebene Quell-IP-Adresse um." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Schreibe selektierten Verkehr auf den angegebenen Qull-Port um. Kann leer " -"gelassen werden um nur die IP-Adresse umzuschreiben." - -msgid "Rewrite to source %s" -msgstr "Schreibe um auf Quell-%s" - -msgid "Rewrite to source %s, %s" -msgstr "Schreibe um auf Quell-%s, %s" - -msgid "SNAT IP address" -msgstr "SNAT-IP-Adresse" - -msgid "SNAT port" -msgstr "SNAT-Port" - -msgid "Saturday" -msgstr "" - -msgid "Source IP address" -msgstr "Quell-IP-Adresse" - -msgid "Source MAC address" -msgstr "Quell-MAC-Adresse" - -msgid "Source NAT" -msgstr "Source NAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"Source NAT ist eine spezifische From von NAT, welche volle Kontrolle über " -"die verwendete Quell-IP-Adresse für ausgehenden Verkehr zulässt, zum " -"Beispiel um mehrere WAN-IP-Adressen auf interne Subnetze abzubilden." - -msgid "Source address" -msgstr "Quelladresse" - -msgid "Source port" -msgstr "Quellport" - -msgid "Source zone" -msgstr "Quell-Zone" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"Die Firewall erstellt Netzwerkzonen über bestimmte Netzwerkschnittstellen um " -"den Netzverkehr zu trennen." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Die untenstehenen Optionen regeln die Verfahreinsweisen für Verkehr zwischen " -"dieser Zone (%s) und anderen Zonen. Ziel-Zonen decken " -"weitergeleiteten Verkehr von %q ab. Quell-Zonen " -"treffen auf weitergeleiteten Verkehr aus anderen Zonen zu, welcher " -"an %q gerichtet ist. Die Weiterleitung gilt nur in eine " -"Richtung, d.h. eine erlaubte Weiterleitung von LAN nach WAN impliziert " -"nicht zusätzlich die Erlaubnis, auch von WAN nach LAN " -"weiterzuleiten." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Diese Seite bietet Zugriff auf die erweiterten Eigenschaften der " -"Portweiterleitung. In den meisten Fällen ist es unnötig die Eigenschaften zu " -"ändern." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Diese Seite bietet Zugriff auf die erweiterten Eigenschaften der " -"Verkehrsregel, zum Beispiel die Selektion nach Quell- und Zieladressen." - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Diese Sektion definiert allgemeine Eigenschaften der %q Zone. Die " -"Eingang und Ausgang Optionen regeln die Verfahrensweise " -"für Verkehr der in diese Zone eintritt oder diese verlässt. " -"Weitergeleitet trifft auf Verkehr zwischen verschiedenen " -"Schnittstellen innerhalb dieser Zone zu. Abgedeckte Netzwerke " -"definieren die Zugehörigkeit von Schnittstellen zu dieser Zone." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "Zu %s an %s auf diesem Gerät" - -msgid "To %s in %s" -msgstr "Zu %s in %s" - -msgid "To %s on this device" -msgstr "Zu %s auf diesem Gerät" - -msgid "To %s, %s in %s" -msgstr "Zu %s, %s in %s" - -msgid "To source IP" -msgstr "Zu Quell-IP" - -msgid "To source port" -msgstr "Zu Quell-Port" - -msgid "Traffic Rules" -msgstr "Verkehrsregeln" - -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 "" -"Verkehrsregeln bestimmen den Fluss der Pakete zwischen verschiedenen Zonen, " -"zum Beispiel um Verkehr zwischen bestimmten Rechnern zu unterbinden oder um " -"WAN-Ports auf dem Router zu öffnen." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "Über %s" - -msgid "Via %s at %s" -msgstr "Über %s an %s" - -msgid "Wednesday" -msgstr "" - -msgid "Week Days" -msgstr "" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" -"Durch die Auswahl von \"-- benutzerdefiniert --\" könnene mehrere Werte " -"durch Leerzeichen getrennt angegeben werden." - -msgid "Zone %q" -msgstr "Zone %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Zone ⇒ Weiterleitungen" - -msgid "Zones" -msgstr "Zonen" - -# Die richtige Übersetzung von ACCEPT im Firewallkontext ist nicht "Annehmen" sondern "Zulassen". Man kann ja keinen -# ausgehenden Verkehr annehmen. -msgid "accept" -msgstr "zulassen" - -msgid "any" -msgstr "beliebig" - -msgid "any host" -msgstr "beliebiger Rechner" - -msgid "any router IP" -msgstr "beliebige Router-IP" - -msgid "any zone" -msgstr "beliebige Zone" - -msgid "don't track" -msgstr "nicht verfolgen" - -msgid "drop" -msgstr "verwerfen" - -msgid "reject" -msgstr "zurückweisen" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/el/firewall.po b/package/luci/applications/luci-app-firewall/po/el/firewall.po deleted file mode 100644 index 6ebc2286ab..0000000000 --- a/package/luci/applications/luci-app-firewall/po/el/firewall.po +++ /dev/null @@ -1,486 +0,0 @@ -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-03-31 15:40+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\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 "%d pkts. per %s" -msgstr "%d πκτ. ανά %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "Ενέργεια" - -msgid "Add" -msgstr "Προσθήκη" - -msgid "Add and edit..." -msgstr "Προσθήκη και επεξεργασία..." - -msgid "Advanced Settings" -msgstr "Ρυθμίσεις για προχωρημένους" - -msgid "Allow forward from source zones:" -msgstr "" - -msgid "Allow forward to destination zones:" -msgstr "" - -msgid "Any" -msgstr "Οποιοδήποτε" - -msgid "Covered networks" -msgstr "" - -msgid "Custom Rules" -msgstr "Προσαρμοσμένοι Κανόνες" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "Διεύθυνση IP προορισμού" - -msgid "Destination address" -msgstr "Διεύθυνση προορισμού" - -msgid "Destination port" -msgstr "Θύρα προορισμού" - -#, fuzzy -msgid "Destination zone" -msgstr "Ζώνη προορισμού" - -msgid "Do not rewrite" -msgstr "" - -msgid "Drop invalid packets" -msgstr "Αγνόηση μη-έγκυρων πακετών" - -msgid "Enable" -msgstr "Ενεργοποίηση" - -msgid "Enable NAT Loopback" -msgstr "" - -#, fuzzy -msgid "Enable SYN-flood protection" -msgstr "Προστασία SYN-flood" - -msgid "Enable logging on this zone" -msgstr "" - -msgid "External IP address" -msgstr "Εξωτερική διεύθυνση IP" - -msgid "External port" -msgstr "Εξωτερική θύρα" - -msgid "External zone" -msgstr "" - -msgid "Extra arguments" -msgstr "Επιπλέον παράμετροι" - -msgid "Firewall" -msgstr "Τείχος προστασίας" - -msgid "Firewall - Custom Rules" -msgstr "Τείχος προστασίας - Προσαρμοσμένοι Κανόνες" - -msgid "Firewall - Port Forwards" -msgstr "Τείχος προστασίας - Προώθηση Θυρών" - -msgid "Firewall - Traffic Rules" -msgstr "Τείχος προστασίας - Κανόνες Κίνησεις" - -msgid "Firewall - Zone Settings" -msgstr "Τείχος προστασίας - Ρυθμίσεις Ζώνης" - -msgid "Force connection tracking" -msgstr "Επιβολή παρακολούθησης σύνδεσης" - -msgid "Forward" -msgstr "Προώθηση" - -msgid "Forward to" -msgstr "" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "Απο %s στο %s" - -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 "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 και IPv6" - -msgid "IPv4 only" -msgstr "Μόνο IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Μόνο IPv6" - -msgid "Input" -msgstr "Είσοδος" - -msgid "Inter-Zone Forwarding" -msgstr "" - -#, fuzzy -msgid "Internal IP address" -msgstr "Εσωτερική διεύθυνση" - -#, fuzzy -msgid "Internal port" -msgstr "Εξωτερική θύρα" - -msgid "Internal zone" -msgstr "Εσωτερική ζώνη" - -msgid "Limit log messages" -msgstr "Περιορισμός καταγραφών συστήματος" - -#, fuzzy -msgid "MSS clamping" -msgstr "Περιορισμός MSS" - -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 "" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "" - -msgid "New port forward" -msgstr "" - -msgid "New source NAT" -msgstr "" - -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 "" - -msgid "Port Forwards" -msgstr "Προώθηση Θυρών" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "" - -msgid "Rewrite matched traffic to the given address." -msgstr "" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" - -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 "" - -#, fuzzy -msgid "Source IP address" -msgstr "Διεύθυνση MAC πηγής" - -msgid "Source MAC address" -msgstr "" - -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 "" - -#, fuzzy -msgid "Source address" -msgstr "Διεύθυνση MAC πηγής" - -msgid "Source port" -msgstr "Θύρα πηγής" - -#, fuzzy -msgid "Source zone" -msgstr "Θύρα πηγής" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"Το τείχος προστασίας δημιουργεί ζώνες πάνω στις διεπαφές δικτύου για να " -"ελέγχει την δικτυακή κίνηση." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -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 "" - -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 "Ζώνες" - -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 "" diff --git a/package/luci/applications/luci-app-firewall/po/en/firewall.po b/package/luci/applications/luci-app-firewall/po/en/firewall.po deleted file mode 100644 index f7658a5b0c..0000000000 --- a/package/luci/applications/luci-app-firewall/po/en/firewall.po +++ /dev/null @@ -1,513 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "%s in %s" -msgstr "" - -msgid "%s%s with %s" -msgstr "" - -msgid "%s, %s in %s" -msgstr "" - -msgid "(Unnamed Entry)" -msgstr "" - -msgid "(Unnamed Rule)" -msgstr "" - -msgid "(Unnamed SNAT)" -msgstr "" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "Action" - -msgid "Add" -msgstr "" - -msgid "Add and edit..." -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow forward from source zones:" -msgstr "" - -msgid "Allow forward to destination zones:" -msgstr "" - -msgid "Any" -msgstr "" - -msgid "Covered networks" -msgstr "" - -msgid "Custom Rules" -msgstr "" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "" - -msgid "Destination address" -msgstr "Destination address" - -msgid "Destination port" -msgstr "Destination port" - -msgid "Destination zone" -msgstr "Destination zone" - -msgid "Do not rewrite" -msgstr "" - -msgid "Drop invalid packets" -msgstr "Drop invalid packets" - -msgid "Enable" -msgstr "" - -msgid "Enable NAT Loopback" -msgstr "" - -msgid "Enable SYN-flood protection" -msgstr "Enable SYN-flood protection" - -msgid "Enable logging on this zone" -msgstr "" - -msgid "External IP address" -msgstr "" - -msgid "External port" -msgstr "External port" - -msgid "External zone" -msgstr "" - -msgid "Extra arguments" -msgstr "" - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall - Custom Rules" -msgstr "" - -msgid "Firewall - Port Forwards" -msgstr "" - -msgid "Firewall - Traffic Rules" -msgstr "" - -msgid "Firewall - Zone Settings" -msgstr "" - -msgid "Force connection tracking" -msgstr "" - -msgid "Forward" -msgstr "Forward" - -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 "Input" - -msgid "Inter-Zone Forwarding" -msgstr "" - -msgid "Internal IP address" -msgstr "Internal IP address" - -msgid "Internal port" -msgstr "Internal port" - -msgid "Internal zone" -msgstr "" - -msgid "Limit log messages" -msgstr "" - -msgid "MSS clamping" -msgstr "MSS clamping" - -msgid "Masquerading" -msgstr "Masquerading" - -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 "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" - -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 "Name" - -msgid "New SNAT rule" -msgstr "" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "" - -msgid "New port forward" -msgstr "" - -msgid "New source NAT" -msgstr "" - -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 "Output" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" - -msgid "Port Forwards" -msgstr "" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -msgid "Protocol" -msgstr "Protocol" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Redirect matched incoming traffic to the given port on the internal host" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "" - -msgid "Rewrite matched traffic to the given address." -msgstr "" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" - -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 "" - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -# msgid "Traffic Redirection" -# msgstr "" -# -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# -# msgid "Overview" -# msgstr "" -# -# msgid "Name" -# msgstr "" -# -# msgid "Source zone" -# msgstr "" -# -# msgid "Source MAC-address" -# msgstr "" -# -# msgid "Source port" -# msgstr "" -# -# msgid "Protocol" -# msgstr "" -# -msgid "Source IP address" -msgstr "Source IP address" - -msgid "Source MAC address" -msgstr "" - -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 "" - -msgid "Source address" -msgstr "Source address" - -msgid "Source port" -msgstr "Source port" - -msgid "Source zone" -msgstr "Source zone" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -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 "" - -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 "Zones" - -msgid "accept" -msgstr "accept" - -msgid "any" -msgstr "any" - -msgid "any host" -msgstr "" - -msgid "any router IP" -msgstr "" - -msgid "any zone" -msgstr "" - -msgid "don't track" -msgstr "" - -msgid "drop" -msgstr "drop" - -msgid "reject" -msgstr "reject" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/es/firewall.po b/package/luci/applications/luci-app-firewall/po/es/firewall.po deleted file mode 100644 index 8550d0567a..0000000000 --- a/package/luci/applications/luci-app-firewall/po/es/firewall.po +++ /dev/null @@ -1,519 +0,0 @@ -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: 2014-06-15 09:00+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s en %s" - -msgid "%s%s with %s" -msgstr "%s%s con %s" - -msgid "%s, %s in %s" -msgstr "%s, %s en %s" - -msgid "(Unnamed Entry)" -msgstr "(Entrada sin nombre)" - -msgid "(Unnamed Rule)" -msgstr "(Reglas sin nombre)" - -msgid "(Unnamed SNAT)" -msgstr "(SNAT sin nombre)" - -msgid "%d pkts. per %s" -msgstr "%d paquetes por %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" -"%d paquetes por %s, máximo %d paquetes." - -msgid "%s and limit to %s" -msgstr "%s y límite a %s" - -msgid "Action" -msgstr "Acción" - -msgid "Add" -msgstr "Añadir" - -msgid "Add and edit..." -msgstr "Añadir y editar..." - -msgid "Advanced Settings" -msgstr "Configuración avanzada" - -msgid "Allow forward from source zones:" -msgstr "Permitir traspaso desde zonas de origen:" - -msgid "Allow forward to destination zones:" -msgstr "Permitir traspaso a zonas de destino:" - -msgid "Any" -msgstr "Cualquiera" - -msgid "Covered networks" -msgstr "Redes cubiertas" - -msgid "Custom Rules" -msgstr "Reglas propias" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Las reglas propias le permiten ejecutar comandos de iptables que no están " -"disponibles en el marco del cortafuegos. Los comandos se ejecutarán tras " -"cualquier rearranque del cortafuegos, justo tras haber cargado el conjunto " -"de reglas por defecto." - -msgid "Destination IP address" -msgstr "Dirección IP destino" - -msgid "Destination address" -msgstr "Dirección de destino" - -msgid "Destination port" -msgstr "Puerto de destino" - -msgid "Destination zone" -msgstr "Zona de destino" - -msgid "Do not rewrite" -msgstr "No reescribir" - -msgid "Drop invalid packets" -msgstr "Descartar paquetes no válidos" - -msgid "Enable" -msgstr "Activar" - -msgid "Enable NAT Loopback" -msgstr "Activar bucle NAT" - -msgid "Enable SYN-flood protection" -msgstr "Activar protección a inundación-SYN" - -msgid "Enable logging on this zone" -msgstr "Activar registro en esta zona" - -msgid "External IP address" -msgstr "Dirección IP externa" - -msgid "External port" -msgstr "Puerto externo" - -msgid "External zone" -msgstr "Zona externa" - -msgid "Extra arguments" -msgstr "Parámetros extra" - -msgid "Firewall" -msgstr "Cortafuegos" - -msgid "Firewall - Custom Rules" -msgstr "Cortafuegos - Reglas propias" - -msgid "Firewall - Port Forwards" -msgstr "Cortafuegos - traspasos de puerto" - -msgid "Firewall - Traffic Rules" -msgstr "Cortafuegos - Reglas de tráfico" - -msgid "Firewall - Zone Settings" -msgstr "Cortafuegos - Configuración de la zona" - -msgid "Force connection tracking" -msgstr "Forzar seguimiento de conexión" - -msgid "Forward" -msgstr "Traspasar" - -msgid "Forward to" -msgstr "Traspasar a" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "Desde %s en %s" - -msgid "From %s in %s with source %s" -msgstr "Desde %s en %s con origen %s" - -msgid "From %s in %s with source %s and %s" -msgstr "Desde %s en %s con origen %s y %s" - -msgid "General Settings" -msgstr "Configuración general" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 only" -msgstr "Sólo IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Sñolo IPv6" - -msgid "Input" -msgstr "Entrada" - -msgid "Inter-Zone Forwarding" -msgstr "Traspaso entre zonas" - -msgid "Internal IP address" -msgstr "Dirección IP interna" - -msgid "Internal port" -msgstr "Puerto interno" - -msgid "Internal zone" -msgstr "Zona interna" - -msgid "Limit log messages" -msgstr "Limitar registro de mensajes" - -msgid "MSS clamping" -msgstr "Fijado de MSS" - -msgid "Masquerading" -msgstr "Enmascaramiento" - -msgid "Match" -msgstr "Coincidir" - -msgid "Match ICMP type" -msgstr "Coincidir con tipo ICMP" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "Coincidir con tráfico traspasado al puerto o rango de puertos destino." - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Coincidir con tráfico de entrada dirigido al puerto o rango de puertos " -"destino en esta máquina" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" -"Coincidir con tráfico de entrada originado desde el puerto o rango de " -"puertos origen en la máquina cliente." - -msgid "Monday" -msgstr "" - -msgid "Month Days" -msgstr "" - -msgid "Name" -msgstr "Nombre" - -msgid "New SNAT rule" -msgstr "Nueva regla SNAT" - -msgid "New forward rule" -msgstr "Nueva regla de traspaso" - -msgid "New input rule" -msgstr "Nueva regla de entrada" - -msgid "New port forward" -msgstr "Nuevo traspaso de puerto" - -msgid "New source NAT" -msgstr "Nuevo origen NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Coincidir sólo con tráfico de entrada a esta dirección IP." - -msgid "Only match incoming traffic from these MACs." -msgstr "Coincidir sólo con tráfico de entrada desde estas MACs." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Coincidir sólo con tráfico de entrada desde esta IP o rango." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "" -"Coincidir sólo con tráfico de entrada originado desde el puerto o rango de " -"puertos origen en la máquina cliente" - -msgid "Open ports on router" -msgstr "Abrir puertos en el router" - -msgid "Other..." -msgstr "Otros..." - -msgid "Output" -msgstr "Salida" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "Pasa más parámetros a IPTables. ¡Usar con cuidado!" - -msgid "Port Forwards" -msgstr "Traspasos de puerto" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"El traspaso de puertos permite a ordenadores remotos en internet conectar a " -"un ordenador o servicio específico en la LAN privada." - -msgid "Protocol" -msgstr "Protocolo" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Redirigir el tráfico de entrada que coincida al puerto en la máquina interna" - -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" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Restringir enmascaramiento a las subredes origen" - -msgid "Restrict to address family" -msgstr "Restringir a la familia de direcciones" - -msgid "Rewrite matched traffic to the given address." -msgstr "Reescribir el tráfico que coincida a estas direcciones." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Reescribir el tráfico que coincida con este puerto origen. Deje en blanco " -"para reescribir sólo la dirección IP." - -msgid "Rewrite to source %s" -msgstr "Reescribir a origen %s" - -msgid "Rewrite to source %s, %s" -msgstr "Reescribir a origen %s, %s" - -msgid "SNAT IP address" -msgstr "Dirección IP SNAT" - -msgid "SNAT port" -msgstr "Puerto SNAT" - -msgid "Saturday" -msgstr "" - -msgid "Source IP address" -msgstr "Dirección IP origen" - -msgid "Source MAC address" -msgstr "Dirección MAC origen" - -msgid "Source NAT" -msgstr "NAT origen" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"NAT origen es una forma específica de enmascaramiento que permite el control " -"fino del origen IP que se usa en el tráfico de salida por ejemplo para " -"dirigir múltiples direcciones WAN a las subredes internas." - -msgid "Source address" -msgstr "Dirección origen" - -msgid "Source port" -msgstr "Puerto origen" - -msgid "Source zone" -msgstr "Zona origen" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"El cortafuegos crea zonas sobre sus interfaces de red para controlar el " -"flujo del tráfico." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Estas opciones controlan las políticas de traspaso entre esta zona (%s) y " -"otras. Las zonas origen cubren el tráfico traspasado desde " -"%q. Las zonas origen coinciden con el tráfico traspasado " -"desde otras zonas dirigido a %q. La regla de traspaso es " -"unidireccional, por ejemplo una regla de traspaso desde la LAN a la " -"WAN no implica permiso para traspasar desde la WAN a la LAN también." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Propiedades avanzadas de la entrada \"traspaso de puertos\". No suele ser " -"necesario modificar esta configuración." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Propiedades avanzadas de la entrada \"reglas de tráfico\", como " -"coincidencias en puertos de origen y destino." - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Esta sección define propierdades comunes de %q. Las opciones de entrada y la salida marcan las políticas por defecto para el tráfico " -"que entra y deja esta zona mientras que la opción traspaso describe " -"la política para tráfico traspasado desde diferentes redes en la zona. " -"Redes cubiertas especifican qué redes disponibles son miembros de " -"esta zona." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "A %s en %s por este dispositivo" - -msgid "To %s in %s" -msgstr "A %s en %s" - -msgid "To %s on this device" -msgstr "A %s por este dispositivo" - -msgid "To %s, %s in %s" -msgstr "A %s, %s en %s" - -msgid "To source IP" -msgstr "A IP origen" - -msgid "To source port" -msgstr "A puerto origen" - -msgid "Traffic Rules" -msgstr "Reglas de tráfico" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"Las reglas de tráfico definen políticas para tramas que se mueven entre " -"zonas diferentes, por ejemplo para rechazar tráfico entre ciertas máquinas o " -"puertos WAN abiertos en el router." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "Vía %s" - -msgid "Via %s at %s" -msgstr "Vía %s a %s" - -msgid "Wednesday" -msgstr "" - -msgid "Week Days" -msgstr "" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" -"Puede poner varios seleccionando \"-- propio --\" e introduciendo los " -"protocolos separados por espacio." - -msgid "Zone %q" -msgstr "Zona %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Zona ⇒ Traspasos" - -msgid "Zones" -msgstr "Zonas" - -msgid "accept" -msgstr "aceptar" - -msgid "any" -msgstr "cualquiera" - -msgid "any host" -msgstr "cualquier máquina" - -msgid "any router IP" -msgstr "cualquier router IP" - -msgid "any zone" -msgstr "cualquier zona" - -msgid "don't track" -msgstr "no seguir" - -msgid "drop" -msgstr "descartar" - -msgid "reject" -msgstr "rechazar" - -msgid "traffic" -msgstr "tráfico" diff --git a/package/luci/applications/luci-app-firewall/po/fr/firewall.po b/package/luci/applications/luci-app-firewall/po/fr/firewall.po deleted file mode 100644 index 7be4d8f4f4..0000000000 --- a/package/luci/applications/luci-app-firewall/po/fr/firewall.po +++ /dev/null @@ -1,540 +0,0 @@ -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: 2013-02-26 00:44+0200\n" -"Last-Translator: val56 \n" -"Language-Team: French\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "" - -msgid "%s%s with %s" -msgstr "" - -msgid "%s, %s in %s" -msgstr "" - -msgid "(Unnamed Entry)" -msgstr "" - -msgid "(Unnamed Rule)" -msgstr "" - -msgid "(Unnamed SNAT)" -msgstr "" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "Action" - -msgid "Add" -msgstr "" - -msgid "Add and edit..." -msgstr "" - -msgid "Advanced Settings" -msgstr "Paramètres avancés" - -msgid "Allow forward from source zones:" -msgstr "Permettre la transmission des zones source :" - -msgid "Allow forward to destination zones:" -msgstr "Permettre la transmission vers les zones destination :" - -msgid "Any" -msgstr "N'importe lequel" - -msgid "Covered networks" -msgstr "Réseaux couverts" - -msgid "Custom Rules" -msgstr "Régles spécifiques" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "Adresse IP de destination" - -msgid "Destination address" -msgstr "Adresse de destination" - -msgid "Destination port" -msgstr "Port de destination" - -msgid "Destination zone" -msgstr "Zone de destination" - -msgid "Do not rewrite" -msgstr "" - -msgid "Drop invalid packets" -msgstr "Supprimer les paquets invalides" - -msgid "Enable" -msgstr "Activer" - -msgid "Enable NAT Loopback" -msgstr "Activer le NAT sur la boucle-locale" - -msgid "Enable SYN-flood protection" -msgstr "Activer la protection contre le SYN-flood" - -msgid "Enable logging on this zone" -msgstr "Activer les traces (logs) sur cette zone" - -msgid "External IP address" -msgstr "Adresse IP externe" - -msgid "External port" -msgstr "Port externe" - -msgid "External zone" -msgstr "Zone externe" - -msgid "Extra arguments" -msgstr "" - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -msgid "Firewall" -msgstr "Pare-feu" - -msgid "Firewall - Custom Rules" -msgstr "Pare-feu -- Règles personnalisées" - -msgid "Firewall - Port Forwards" -msgstr "Pare-feu -- Redirections de ports" - -msgid "Firewall - Traffic Rules" -msgstr "Pare-feu -- Règles de trafic" - -msgid "Firewall - Zone Settings" -msgstr "Pare-feu - Configuration des zones" - -msgid "Force connection tracking" -msgstr "Forcer le suivi des connexions" - -msgid "Forward" -msgstr "Transfert" - -msgid "Forward to" -msgstr "Transférer à" - -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 "Paramètres généraux" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 et IPv6" - -msgid "IPv4 only" -msgstr "IPv4 seulement" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "IPv6 seulement" - -msgid "Input" -msgstr "Entrée" - -msgid "Inter-Zone Forwarding" -msgstr "Transmission entre zones" - -msgid "Internal IP address" -msgstr "Adresse IP interne" - -msgid "Internal port" -msgstr "Port interne" - -msgid "Internal zone" -msgstr "Zone interne" - -msgid "Limit log messages" -msgstr "Limiter les messages de journalisation" - -msgid "MSS clamping" -msgstr "Contrainte du MSS" - -msgid "Masquerading" -msgstr "Masquage" - -msgid "Match" -msgstr "" - -msgid "Match ICMP type" -msgstr "Type ICMP correspondant" - -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 "" -"Prendre en compte le trafic dirigé vers le port de destination donné (ou la " -"gamme de ports) sur cet hôte" - -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 "Nom" - -msgid "New SNAT rule" -msgstr "Nouvelle règle SNAT" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "Nouvelle règle d'entrée" - -msgid "New port forward" -msgstr "Nouvelle redirection de port" - -msgid "New source NAT" -msgstr "Nouvelle source NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "" - -msgid "Only match incoming traffic from these MACs." -msgstr "Montrer seulement le trafic entrant provenant de ces adresses MAC." - -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 "Ports ouverts sur le routeur" - -msgid "Other..." -msgstr "Autre..." - -msgid "Output" -msgstr "Sortie" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" - -msgid "Port Forwards" -msgstr "Redirections de port" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"La redirection de port permet aux ordinateurs distants sur Internet, de se " -"connecter à un ordinateur ou service spécifié dans le réseau local privé." - -msgid "Protocol" -msgstr "Protocole" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Rediriger le trafic entrant correspondant vers le port donné sur l'hôte " -"interne" - -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 " -"destinataires" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" -"Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux " -"sources" - -msgid "Restrict to address family" -msgstr "Restreindre à cette famille d'adresses" - -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 "Adresse IP SNAT" - -msgid "SNAT port" -msgstr "Port SNAT" - -msgid "Saturday" -msgstr "" - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -# msgid "Traffic Redirection" -# msgstr "" -# -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# -# msgid "Overview" -# msgstr "" -# -# msgid "Name" -# msgstr "" -# -# msgid "Source zone" -# msgstr "" -# -# msgid "Source MAC-address" -# msgstr "" -# -# msgid "Source port" -# msgstr "" -# -# msgid "Protocol" -# msgstr "" -# -msgid "Source IP address" -msgstr "Adresse IP source" - -msgid "Source MAC address" -msgstr "Adresse MAC source" - -msgid "Source NAT" -msgstr "Source NAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" - -msgid "Source address" -msgstr "Adresse source" - -msgid "Source port" -msgstr "Port source" - -msgid "Source zone" -msgstr "Zone source" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"Le pare-feu crée des zones sur les interfaces réseau pour contrôler le flux " -"du trafic réseau." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Les options ci-dessous contrôlent les politiques de transmission entre cette " -"zone (%s) et les autres zones. Zones de destination couvre le " -"trafic transfmis venant de %q. Zones source " -"correspond au trafic transféré d'autres zones à destination de %q. La règle de transmission est unidirectionnelle, la " -"transmission du LAN au WAN n'implique pas également l'autorisation " -"de transmission du WAN au LAN." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Cette page vous permet de modifier les propriétés avancées parmi les entrées " -"de redirection de port. Dans la plupart des cas, cela n'est pas nécessaire " -"de modifier ces paramètres." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Cette section définit des propriétés communes de %q. Les options entrée et sortie définissent les politiques par défaut pour le trafic " -"entrant et sortant de cette zone, tandis que l'option transmission " -"décrit la politique pour le trafic transmis entre différents réseaux dans " -"cette zone. Les réseaux couverts indiquent quels réseaux " -"disponibles sont membre de cette zone." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "Règles de trafic" - -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 "" - -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 "Zone %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Zone ⇒ Transmissions" - -msgid "Zones" -msgstr "Zones" - -msgid "accept" -msgstr "accepter" - -#, fuzzy -msgid "any" -msgstr "tous" - -msgid "any host" -msgstr "" - -msgid "any router IP" -msgstr "" - -msgid "any zone" -msgstr "" - -msgid "don't track" -msgstr "" - -msgid "drop" -msgstr "ignorer" - -msgid "reject" -msgstr "rejeter" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/he/firewall.po b/package/luci/applications/luci-app-firewall/po/he/firewall.po deleted file mode 100644 index e269e58cb2..0000000000 --- a/package/luci/applications/luci-app-firewall/po/he/firewall.po +++ /dev/null @@ -1,471 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "%s in %s" -msgstr "" - -msgid "%s%s with %s" -msgstr "" - -msgid "%s, %s in %s" -msgstr "" - -msgid "(Unnamed Entry)" -msgstr "" - -msgid "(Unnamed Rule)" -msgstr "" - -msgid "(Unnamed SNAT)" -msgstr "" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add and edit..." -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow forward from source zones:" -msgstr "" - -msgid "Allow forward to destination zones:" -msgstr "" - -msgid "Any" -msgstr "" - -msgid "Covered networks" -msgstr "" - -msgid "Custom Rules" -msgstr "" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "" - -msgid "Destination address" -msgstr "" - -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 "" - -msgid "Enable SYN-flood protection" -msgstr "" - -msgid "Enable logging on this zone" -msgstr "" - -msgid "External IP address" -msgstr "" - -msgid "External port" -msgstr "" - -msgid "External zone" -msgstr "" - -msgid "Extra arguments" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall - Custom Rules" -msgstr "" - -msgid "Firewall - Port Forwards" -msgstr "" - -msgid "Firewall - Traffic Rules" -msgstr "" - -msgid "Firewall - Zone Settings" -msgstr "" - -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 "" - -msgid "Internal port" -msgstr "" - -msgid "Internal zone" -msgstr "" - -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 "" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "" - -msgid "New port forward" -msgstr "" - -msgid "New source NAT" -msgstr "" - -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 "" - -msgid "Port Forwards" -msgstr "" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "" - -msgid "Rewrite matched traffic to the given address." -msgstr "" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" - -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 "" - -msgid "Source MAC address" -msgstr "" - -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 "" - -msgid "Source address" -msgstr "" - -msgid "Source port" -msgstr "" - -msgid "Source zone" -msgstr "" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -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 "" - -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 "" - -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 "" diff --git a/package/luci/applications/luci-app-firewall/po/hu/firewall.po b/package/luci/applications/luci-app-firewall/po/hu/firewall.po deleted file mode 100644 index 2c3ae02f61..0000000000 --- a/package/luci/applications/luci-app-firewall/po/hu/firewall.po +++ /dev/null @@ -1,523 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-01-31 16:54+0200\n" -"Last-Translator: Gabor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s %s-ban" - -msgid "%s%s with %s" -msgstr "%s%s %s-el" - -msgid "%s, %s in %s" -msgstr "%s, %s %s-ben" - -msgid "(Unnamed Entry)" -msgstr "(Névtelen bejegyzés)" - -msgid "(Unnamed Rule)" -msgstr "(Névtelen szabály)" - -msgid "(Unnamed SNAT)" -msgstr "(Névtelen SNAT)" - -msgid "%d pkts. per %s" -msgstr "%d csomag/%s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d csom. %s-enként, burst %d csom." - -msgid "%s and limit to %s" -msgstr "%s és korlátozás %s-re" - -msgid "Action" -msgstr "Művelet" - -msgid "Add" -msgstr "Hozzáadás" - -msgid "Add and edit..." -msgstr "Hozzáadás és szerkesztés..." - -msgid "Advanced Settings" -msgstr "Haladó beállítások" - -msgid "Allow forward from source zones:" -msgstr "Továbbítás engedélyezése ezekből a forrás zónákból:" - -msgid "Allow forward to destination zones:" -msgstr "Továbbítás engedélyezése ezekbe a cél zónákba:" - -msgid "Any" -msgstr "Bármelyik" - -msgid "Covered networks" -msgstr "Lefedett hálózatok" - -msgid "Custom Rules" -msgstr "Egyéni szabályok" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Az egyedi szabályok lehetővé teszik tetszőleges iptables parancsok " -"futtatását melyekre a tűzfal keretrendszer egyébként nem biztosít " -"lehetőséget. A parancsok a tűzfal minden újraindításakor futtatásra " -"kerülnek, közvetlenül az alapértelmezett szabálykészletek betöltése után." - -msgid "Destination IP address" -msgstr "Cél IP-cím" - -msgid "Destination address" -msgstr "Cél cím" - -msgid "Destination port" -msgstr "Cél port" - -msgid "Destination zone" -msgstr "Cél zóna" - -msgid "Do not rewrite" -msgstr "Ne írja felül" - -msgid "Drop invalid packets" -msgstr "Érvénytelen csomagok eldobása" - -msgid "Enable" -msgstr "Engedélyezés" - -msgid "Enable NAT Loopback" -msgstr "NAT visszacsatolás engedélyezése" - -msgid "Enable SYN-flood protection" -msgstr "SYN-flood védelem engedélyezése" - -msgid "Enable logging on this zone" -msgstr "Naplózás engeélyezése ezen a zónán" - -msgid "External IP address" -msgstr "Külső IP cím" - -msgid "External port" -msgstr "Külső port" - -msgid "External zone" -msgstr "Külső zóna" - -msgid "Extra arguments" -msgstr "További argumentumok" - -msgid "Firewall" -msgstr "Tűzfal" - -msgid "Firewall - Custom Rules" -msgstr "Tűzfal - Egyéni szabályok" - -msgid "Firewall - Port Forwards" -msgstr "Tűzfal - Port továbbítások" - -msgid "Firewall - Traffic Rules" -msgstr "Tűzfal - Forgalmi szabályok" - -msgid "Firewall - Zone Settings" -msgstr "Tűzfal - Zóna beállítások" - -msgid "Force connection tracking" -msgstr "Kapcsolat követés kényszerítése" - -msgid "Forward" -msgstr "Továbbítás" - -msgid "Forward to" -msgstr "Továbbítás ennek" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "%s felől %s-ben" - -msgid "From %s in %s with source %s" -msgstr "%s felől %s-ben %s forrással" - -msgid "From %s in %s with source %s and %s" -msgstr "%s felől %s-ben %s és %s forrással" - -msgid "General Settings" -msgstr "Általános beállítások" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 és IPv6" - -msgid "IPv4 only" -msgstr "csak IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "csak IPv6" - -msgid "Input" -msgstr "Bemenet" - -msgid "Inter-Zone Forwarding" -msgstr "Zónák-közötti továbbítás" - -msgid "Internal IP address" -msgstr "Belső IP cím" - -msgid "Internal port" -msgstr "Belső port" - -msgid "Internal zone" -msgstr "Belső zóna" - -msgid "Limit log messages" -msgstr "Napló üzenetek korlátozása" - -msgid "MSS clamping" -msgstr "MSS clamping engegélyezése" - -msgid "Masquerading" -msgstr "Álcázás" - -msgid "Match" -msgstr "Szűrés" - -msgid "Match ICMP type" -msgstr "Szűrés ICMP típus alapján" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "" -"Továbbított forgalom szűrése a megadott cél port, vagy port tartomány " -"szerint." - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Adott portra vagy port tartományra irányított bejövő forgalom szűrése ezen a " -"gépen" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" -"Az ügyfél gép megadott portjáról, vagy port tartományából indított forgalom " -"szűrése. " - -msgid "Monday" -msgstr "" - -msgid "Month Days" -msgstr "" - -msgid "Name" -msgstr "Név" - -msgid "New SNAT rule" -msgstr "Új SNAT szabály" - -msgid "New forward rule" -msgstr "Új továbbítási szabály" - -msgid "New input rule" -msgstr "Új bemeneti szabály" - -msgid "New port forward" -msgstr "Új port továbbítás" - -msgid "New source NAT" -msgstr "Új forrás NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Csak a megadott IP címre irányított bejövő forgalmat egyeztesse." - -msgid "Only match incoming traffic from these MACs." -msgstr "Csak a megadott MAC címekről érkező bejövő forgalmat egyeztesse." - -msgid "Only match incoming traffic from this IP or range." -msgstr "" -"Csak a megadott IP címről illetve IP címtartományból érkező bejövő forgalmat " -"egyeztesse." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "" -"Csak az ügyfél gép megadott forrás portjáról illetve forrás port " -"tartományába tartozó portról indított bejövő forgalmat egyeztesse." - -msgid "Open ports on router" -msgstr "Port megnyitása a routeren" - -msgid "Other..." -msgstr "Egyéb..." - -msgid "Output" -msgstr "Kimenet" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" -"További argumentumok küldése az iptables részére. Használja körültekintően!" - -msgid "Port Forwards" -msgstr "Port továbbítás" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"A port továbbítás lehetővé teszi az interneten lévő távoli számítógépeknek a " -"privát helyi hálózat bizonyos számítógépéhez vagy szolgáltatásához történő " -"csatlakozását." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "Átirányítja az egyező bejövő forgalmat a belső gép megadott portjához" - -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" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Álcázás korlátozása a megadott forrás alhálózatokra" - -msgid "Restrict to address family" -msgstr "Korlátozás cím családra" - -msgid "Rewrite matched traffic to the given address." -msgstr "Az összeíllő forgalom átírása a megadott címre." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Az összeillő forgalom átírása a megadott forrás portra. Amennyibe üresen van " -"hagyva, csak az IP cím kerül átírásra." - -msgid "Rewrite to source %s" -msgstr "Átírás %s forrásra" - -msgid "Rewrite to source %s, %s" -msgstr "Átírás %s, %s forrásra" - -msgid "SNAT IP address" -msgstr "SNAT IP cím" - -msgid "SNAT port" -msgstr "SNAT port" - -msgid "Saturday" -msgstr "" - -msgid "Source IP address" -msgstr "Forrás IP cím" - -msgid "Source MAC address" -msgstr "Forrás MAC cím" - -msgid "Source NAT" -msgstr "Forrás NAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"A forrás NAT az álcázás olyan speciális formája, mely lehetővé teszi a " -"kimenő forgalomhoz használt forrás IP címek aprólékos szabályozását, például " -"több WAN cím hozzárendelését a belső alhálózatokhoz." - -msgid "Source address" -msgstr "Forrás cím" - -msgid "Source port" -msgstr "Forrás port" - -msgid "Source zone" -msgstr "Forrás zóna" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"A tűzfal zónákat határoz meg a hálózati interfészek fölött a hálózati " -"forgalom áramlásának szabályozására." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Az alábbi beállítások vezérlik a továbbítási irányelveket a jelenlegi zóna " -"(%s) és a többi zóna között. A cél zónák fedik le a továbbított " -"forgalmat amelynek forrása %q. A forrás zónák " -"szűrik a továbbított forgalmat más zónákból melynek célja %q. A továbbítási szabály egyirányú, tehát pl. egy továbbítás " -"LAN-ból WAN-ba nem jelenti azt, hogy a továbbítás WAN-ból LAN-ba is " -"engedélyezett." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Ez a lap lehetővé teszi a port továbbítási bejegyzések speciális " -"tulajdonságainak módosítását. A legtöbb esetben ezeknek a beállításoknak a " -"módosítása nem szükséges." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Ez a lap lehetővé teszi a forgalmi szabály bejegyzés speciális " -"tulajdonságainak módosítását, mint a forrás- és célgépek megfeleltetése." - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Ez a rész a(z) %q általános beállításait határozza meg. A bejövő és " -"kimenő beállítások határozzák meg a zónába be- és kilépő forgalom " -"alapértelmezett szabályait, míg a továbbítási beállítás a különböző " -"hálózatok közötti forgalomtovábbítás szabályát írja le a zónán belül. A " -"lefedett hálózatok adják meg, hogy mely elérhető hálózatok tagjai " -"ennek a zónának." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "%s-re %s-nél a eszközön" - -msgid "To %s in %s" -msgstr "%s-re %s-ben" - -msgid "To %s on this device" -msgstr "%s-re a eszközön" - -msgid "To %s, %s in %s" -msgstr "%s-re, %s %s-ben" - -msgid "To source IP" -msgstr "Forrás IP-re" - -msgid "To source port" -msgstr "Forrás portra" - -msgid "Traffic Rules" -msgstr "Forgalmi szabályok" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"A forgalmi szabályok a különböző zónák között utazó csomagokra vonatkozó " -"házirendet határozzák meg, például bizonyos gépek közötti forgalom " -"megakadályozához vagy WAN portok megnyitásához a routeren." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "%s-en át" - -msgid "Via %s at %s" -msgstr "%s-en át %s-nél" - -msgid "Wednesday" -msgstr "" - -msgid "Week Days" -msgstr "" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" -"Az \"-- egyéni --\" lehetőség választásával több protokoll megadása " -"lehetséges egymástól szóközzell elválasztva." - -msgid "Zone %q" -msgstr "Zóna %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Zóna ⇒ Továbbítások" - -msgid "Zones" -msgstr "Zónák" - -msgid "accept" -msgstr "elfogadás" - -msgid "any" -msgstr "bármelyik" - -msgid "any host" -msgstr "bármelyik gép" - -msgid "any router IP" -msgstr "bármelyik router IP" - -msgid "any zone" -msgstr "bármelyik zóna" - -msgid "don't track" -msgstr "ne kövesse" - -msgid "drop" -msgstr "eldobás" - -msgid "reject" -msgstr "visszautasítás" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/it/firewall.po b/package/luci/applications/luci-app-firewall/po/it/firewall.po deleted file mode 100644 index a5c4a1ee08..0000000000 --- a/package/luci/applications/luci-app-firewall/po/it/firewall.po +++ /dev/null @@ -1,539 +0,0 @@ -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: 2017-09-02 23:05+0200\n" -"Last-Translator: bubu83 \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%s in %s" -msgstr "" - -msgid "%s%s with %s" -msgstr "%s%s con %s" - -msgid "%s, %s in %s" -msgstr "" - -msgid "(Unnamed Entry)" -msgstr "" - -msgid "(Unnamed Rule)" -msgstr "" - -msgid "(Unnamed SNAT)" -msgstr "" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "%s e limita a %s" - -msgid "Action" -msgstr "Azione" - -msgid "Add" -msgstr "Aggiungi" - -msgid "Add and edit..." -msgstr "Aggiungi e modifica..." - -msgid "Advanced Settings" -msgstr "Opzioni Avanzate" - -msgid "Allow forward from source zones:" -msgstr "Permetti routing da zone di origine:" - -msgid "Allow forward to destination zones:" -msgstr "Permetti rounting a zone di destinazione:" - -msgid "Any" -msgstr "Qualsiasi" - -msgid "Covered networks" -msgstr "Reti coperte" - -msgid "Custom Rules" -msgstr "Regole Personalizzate" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Le regole personalizzate ti permettorno di eseguire comandi iptables " -"arbitrari che non sono altrimenti coperti dall'applicazione firewall. I " -"comandi sono eseguiti dopo ogni riavvio del firewall, giusto dopo le altre " -"regole che sono state caricate." - -msgid "Destination IP address" -msgstr "Indirizzo IP destinazione" - -msgid "Destination address" -msgstr "Indirizzo di destinazione" - -msgid "Destination port" -msgstr "Porta di destinazione" - -msgid "Destination zone" -msgstr "Zona di destinazione" - -msgid "Do not rewrite" -msgstr "Non riscrivere" - -msgid "Drop invalid packets" -msgstr "Scarta pacchetti invalidi" - -msgid "Enable" -msgstr "Attiva" - -msgid "Enable NAT Loopback" -msgstr "Attiva NAT Loopback" - -msgid "Enable SYN-flood protection" -msgstr "Attiva protezione SYN-flood" - -msgid "Enable logging on this zone" -msgstr "Attiva registro su questa zona" - -msgid "External IP address" -msgstr "Indirizzo IP Esterno" - -msgid "External port" -msgstr "Porta Esterna" - -msgid "External zone" -msgstr "Zona Esterna" - -msgid "Extra arguments" -msgstr "Comandi extra" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall - Custom Rules" -msgstr "Firewall - Regole Personalizzate" - -msgid "Firewall - Port Forwards" -msgstr "Firewall - Inoltro Porte" - -msgid "Firewall - Traffic Rules" -msgstr "Firewall - Regole Traffico" - -msgid "Firewall - Zone Settings" -msgstr "Firewall - Opzioni delle Zone" - -msgid "Force connection tracking" -msgstr "Forza tracciamento connessione" - -msgid "Forward" -msgstr "Inoltra" - -msgid "Forward to" -msgstr "Inoltra a" - -msgid "Friday" -msgstr "Venerdì" - -msgid "From %s in %s" -msgstr "Da %s a %s" - -msgid "From %s in %s with source %s" -msgstr "Da %s a %s con sorgente %s" - -msgid "From %s in %s with source %s and %s" -msgstr "Da %s a %s con sorgente %s e %s" - -msgid "General Settings" -msgstr "Opzioni Generali" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 only" -msgstr "Solo IPv4" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 only" -msgstr "Solo IPv6" - -msgid "Input" -msgstr "Ingresso" - -msgid "Inter-Zone Forwarding" -msgstr "Inoltro tra le zone" - -msgid "Internal IP address" -msgstr "Indirizzo IP interno" - -msgid "Internal port" -msgstr "Porta interna" - -msgid "Internal zone" -msgstr "Zona Interna" - -msgid "Limit log messages" -msgstr "Limita messaggi del registro" - -msgid "MSS clamping" -msgstr "" - -msgid "Masquerading" -msgstr "" - -msgid "Match" -msgstr "Corrispondenza" - -msgid "Match ICMP type" -msgstr "Corrispondenza tipo ICMP" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "Corrispondi traffico inoltrato alla porta o intervallo di porte dato." - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Corrispondi traffico in entrata diretto alla porta o intervallo di porte dato " -"su questo host" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" -"Corrispondi traffico in entrata originato dalla porta o intervallo di porte dato " -"su host cliente" - -msgid "Monday" -msgstr "Lunedì" - -msgid "Month Days" -msgstr "Giorni del Mese" - -msgid "Name" -msgstr "Nome" - -msgid "New SNAT rule" -msgstr "Nuova regola SNAT" - -msgid "New forward rule" -msgstr "Nuova regola di inoltro" - -msgid "New input rule" -msgstr "Nuova regola di ingresso" - -msgid "New port forward" -msgstr "Nuova porta di inoltro" - -msgid "New source NAT" -msgstr "Nuova sorgente NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Corrispondi solo traffico in entrata diretto al dato indirizzo IP." - -msgid "Only match incoming traffic from these MACs." -msgstr "Corrispondi solo traffico in entrata da questi MAC." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Corrispondi solo traffico in entrata da questo IP o intervallo." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "" -"Corrispondi solo traffico in entrata originato dalla porta o intervallo di " -"porte sorgenti su host cliente" - -msgid "Open ports on router" -msgstr "Porte aperte sul router" - -msgid "Other..." -msgstr "Altri..." - -msgid "Output" -msgstr "" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "Passa comandi addizionali a iptables. Usare con cura!" - -msgid "Port Forwards" -msgstr "Inoltri Porta" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"L'inoltro delle porte permette ai computer in remoto su Internet di " -"connettersi a uno specifico computer o servizio presente nella LAN " -"privata" - -msgid "Protocol" -msgstr "Protocollo" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Reindirizza il traffico in entrata alla porta data su host interno" - -msgid "Redirect matched incoming traffic to the specified internal host" -msgstr "Reindirizza il traffico in entrata allo specifico host interno" - -msgid "Restart Firewall" -msgstr "Riavvia Firewall" - -msgid "Restrict Masquerading to given destination subnets" -msgstr "Limita il Masquerading alle subnet di destinazione date" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Limita il Masquerading alle subnet sorgente date" - -msgid "Restrict to address family" -msgstr "Limita agli indirizzi famiglia" - -msgid "Rewrite matched traffic to the given address." -msgstr "Riscrivi il traffico verso l'indirizzo dato." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Riscrivi il traffico corrispondente alla porta sorgente data. Può essere " -"lasciato vuoto per riscrivere solo l'indirizzo IP." - -msgid "Rewrite to source %s" -msgstr "Riscrivi alla sorgente %s" - -msgid "Rewrite to source %s, %s" -msgstr "Riscrivi alla sorgente %s, %s" - -msgid "SNAT IP address" -msgstr "Indirizzo IP SNAT" - -msgid "SNAT port" -msgstr "Porta SNAT" - -msgid "Saturday" -msgstr "Sabato" - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# msgid "Traffic Redirection" -# msgstr "" -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# msgid "Overview" -# msgstr "" -# msgid "Name" -# msgstr "" -# msgid "Source zone" -# msgstr "" -# msgid "Source MAC-address" -# msgstr "" -# msgid "Source port" -# msgstr "" -# msgid "Protocol" -# msgstr "" -msgid "Source IP address" -msgstr "Indirizzo IP di origine" - -msgid "Source MAC address" -msgstr "Indirizzo MAC di origine" - -msgid "Source NAT" -msgstr "NAT di origine" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"La sorgente NAT è una forma specifica di masquerading che consente un controllo " -"preciso sull'IP sorgente usato per il traffico in uscita, per esempio per " -"mappare indirizzi WAN multipli verso le subnet interne." - - -msgid "Source address" -msgstr "Indirizzo di origine" - -msgid "Source port" -msgstr "Porta di origine" - -msgid "Source zone" -msgstr "Zona di origine" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "Data di Inizio (yyyy-mm-dd)" - -msgid "Start Time (hh:mm:ss)" -msgstr "Ora di Inizio (hh:mm:ss)" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "Data di Stop (yyyy-mm-dd)" - -msgid "Stop Time (hh:mm:ss)" -msgstr "Ora di Stop (hh:mm:ss)" - -msgid "Sunday" -msgstr "Domenica" - -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." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Queste opzioni controllano le regole di inoltro tra questa zona (%s) e " -"altre zone. Le zone di destinazione coprono il traffico inoltrato " -"originato da %q. Le zone di origine corrispondono il " -"traffico inoltrato da altre zone che puntano a %q. La regola di " -"inoltro è unidirezionale, esempio: un inoltro dalla lan alla wan " -"non implica anche un permesso da inoltrare dalla wan alla lan." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Questa pagina ti consente di cambiare le opzioni avanzate della voce porta di " -"inoltro. Nella maggioranza dei casi non serve modificare queste impostazioni." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Questa pagina ti consente di cambiare le opzioni avanzate della voce regola del " -"traffico, come la sorgente corrispondente e gli host di destinazione." - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Questa sezione definisce le proprietà comuni di %q. Le opzioni diingresso " -"e uscita definiscono le regole di default per il traffico in entrata e " -"uscita di questa zona mentre l'opzione di inoltro descrive il metodo per il " -"traffico inoltrato tra reti differenti nella zona. Le reti coperte " -"specificano quali reti disponibili sono membri di questa zona." - -msgid "Thursday" -msgstr "Giovedì" - -msgid "Time in UTC" -msgstr "Orario in UTC" - -msgid "To %s at %s on this device" -msgstr "Verso %s a %s su questo dispositivo" - -msgid "To %s in %s" -msgstr "Verso %s in %s" - -msgid "To %s on this device" -msgstr "Verso %s su questo dispositivo" - -msgid "To %s, %s in %s" -msgstr "Verso %s, %s in %s" - -msgid "To source IP" -msgstr "Verso IP sorgente" - -msgid "To source port" -msgstr "Verso la porta sorgente" - -msgid "Traffic Rules" -msgstr "Regole di Traffico" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"Le regole del traffico definiscono il metodo per il viaggio dei pacchetti tra " -"zone differenti, per esempio per rifiutare il traffico tra certi host o per " -"aprire porte WAN sul router." - -msgid "Tuesday" -msgstr "Martedì" - -msgid "Via %s" -msgstr "" - -msgid "Via %s at %s" -msgstr "Via %s a %s" - -msgid "Wednesday" -msgstr "Mercoledì" - -msgid "Week Days" -msgstr "Giorni della Settimana" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" -"Puoi specificare multipli selezionando \"-- custom --\" e poi inserendo " -"i protocolli separati da uno spazio." - -msgid "Zone %q" -msgstr "Zona %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Zona ⇒ Inoltri" - -msgid "Zones" -msgstr "Zone" - -msgid "accept" -msgstr "accetta" - -msgid "any" -msgstr "qualsiasi" - -msgid "any host" -msgstr "qualsiasi host" - -msgid "any router IP" -msgstr "qualsiasi router IP" - -msgid "any zone" -msgstr "qualsiasi zona" - -msgid "don't track" -msgstr "non tracciare" - -msgid "drop" -msgstr "scarta" - -msgid "reject" -msgstr "rifiuta" - -msgid "traffic" -msgstr "traffico" diff --git a/package/luci/applications/luci-app-firewall/po/ja/firewall.po b/package/luci/applications/luci-app-firewall/po/ja/firewall.po deleted file mode 100644 index eb4b06f29a..0000000000 --- a/package/luci/applications/luci-app-firewall/po/ja/firewall.po +++ /dev/null @@ -1,555 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2016-12-24 02:55+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "%s in %s" -msgstr "%s (%s)" - -msgid "%s%s with %s" -msgstr "%s%s ,%s" - -msgid "%s, %s in %s" -msgstr "%s, %s (%s)" - -msgid "(Unnamed Entry)" -msgstr "(名前設定の無いエントリー)" - -msgid "(Unnamed Rule)" -msgstr "(名前設定の無いルール)" - -msgid "(Unnamed SNAT)" -msgstr "(名前設定の無いSNAT)" - -msgid "%d pkts. per %s" -msgstr "%d パケット / %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" -"%d パケット / %s, バースト %d パケット" - -msgid "%s and limit to %s" -msgstr "%s, %s を上限に設定" - -msgid "Action" -msgstr "動作" - -msgid "Add" -msgstr "追加" - -msgid "Add and edit..." -msgstr "追加及び編集..." - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Allow forward from source zones:" -msgstr "送信元ゾーンからの転送を許可する:" - -msgid "Allow forward to destination zones:" -msgstr "宛先ゾーンへの転送を許可する:" - -msgid "Any" -msgstr "全て" - -msgid "Covered networks" -msgstr "対象ネットワーク" - -msgid "Custom Rules" -msgstr "手動設定ルール" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"手動設定ルールの設定では、ファイアウォールの設定画面ではサポートされていない" -"ような、任意のiptablesコマンドを実行することが可能です。これらの任意のコマン" -"ドは、ファイアウォール機能の起動ごとに、標準のルールが読み込まれた後に実行さ" -"れます。" - -msgid "Destination IP address" -msgstr "宛先IPアドレス" - -msgid "Destination address" -msgstr "宛先アドレス" - -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ループバックを有効にする" - -msgid "Enable SYN-flood protection" -msgstr "SYN-Floodプロテクションを有効にする" - -msgid "Enable logging on this zone" -msgstr "このゾーンのログ記録を有効にする" - -msgid "External IP address" -msgstr "外部IPアドレス" - -msgid "External port" -msgstr "外部ポート" - -msgid "External zone" -msgstr "外部ゾーン" - -msgid "Extra arguments" -msgstr "追加設定" - -msgid "Firewall" -msgstr "ファイアウォール" - -msgid "Firewall - Custom Rules" -msgstr "ファイアウォール - 手動設定ルール" - -msgid "Firewall - Port Forwards" -msgstr "ファイアウォール - ポートフォワーディング" - -msgid "Firewall - Traffic Rules" -msgstr "ファイアウォール - トラフィック・ルール" - -msgid "Firewall - Zone Settings" -msgstr "ファイアウォール - ゾーン設定" - -msgid "Force connection tracking" -msgstr "強制的にコネクション追跡を行う" - -msgid "Forward" -msgstr "転送" - -msgid "Forward to" -msgstr "転送先" - -msgid "Friday" -msgstr "金曜日" - -msgid "From %s in %s" -msgstr "送信元 %s (%s)" - -msgid "From %s in %s with source %s" -msgstr "送信元 %s (%s) , 送信元 %s" - -msgid "From %s in %s with source %s and %s" -msgstr "送信元 %s (%s) , 送信元 %s, 送信元 %s" - -msgid "General Settings" -msgstr "一般設定" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4及びIPv6" - -msgid "IPv4 only" -msgstr "IPv4のみ" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "IPv6のみ" - -msgid "Input" -msgstr "受信" - -msgid "Inter-Zone Forwarding" -msgstr "内部ゾーン転送" - -msgid "Internal IP address" -msgstr "内部IPアドレス" - -msgid "Internal port" -msgstr "内部ポート" - -msgid "Internal zone" -msgstr "内部ゾーン" - -msgid "Limit log messages" -msgstr "ログメッセージを制限" - -msgid "MSS clamping" -msgstr "MSSクランプ" - -msgid "Masquerading" -msgstr "マスカレード" - -msgid "Match" -msgstr "対象" - -msgid "Match ICMP type" -msgstr "ICMPタイプの一致" - -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ルールの新規作成" - -msgid "New forward rule" -msgstr "転送ルールの新規作成" - -msgid "New input rule" -msgstr "受信ルールの新規作成" - -msgid "New port forward" -msgstr "転送設定の新規作成" - -msgid "New source NAT" -msgstr "SNATルールの新規作成" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "設定された宛先IPアドレスと一致した受信トラフィックが対象になります。" - -msgid "Only match incoming traffic from these MACs." -msgstr "設定されたMACアドレスと一致した受信したトラフィックが対象になります。" - -msgid "Only match incoming traffic from this IP or range." -msgstr "" -"設定されたIPアドレス (または範囲) と一致した受信したトラフィックが対象になり" -"ます。" - -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 "ポートフォワーディング" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"ポートフォワーディングは、インターネット上のリモートコンピュータから、プライ" -"ベートなネットワーク上の、特定のコンピュータやサービスへのアクセスを可能にし" -"ます。" - -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 "設定された宛先サブネットへのマスカレードを制限する" - -msgid "Restrict Masquerading to given source subnets" -msgstr "設定された送信元サブネットへのマスカレードを制限する" - -msgid "Restrict to address family" -msgstr "アドレスファミリの制限" - -msgid "Rewrite matched traffic to the given address." -msgstr "" -"ルールに一致したトラフィックの送信元アドレスを設定した値にリライトします。" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"ルールに一致したトラフィックの送信元ポートを設定した値にリライトします。空欄" -"にした場合、IPアドレスのみを書き直します。" - -msgid "Rewrite to source %s" -msgstr "送信元 %s にリライト" - -msgid "Rewrite to source %s, %s" -msgstr "送信元 %s, %s にリライト" - -msgid "SNAT IP address" -msgstr "SNAT IPアドレス" - -msgid "SNAT port" -msgstr "SNAT ポート" - -msgid "Saturday" -msgstr "土曜日" - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# -# msgid "Traffic Redirection" -# msgstr "" -# -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# -# msgid "Overview" -# msgstr "" -# -# msgid "Name" -# msgstr "" -# -# msgid "Source zone" -# msgstr "" -# -# msgid "Source MAC-address" -# msgstr "" -# -# msgid "Source port" -# msgstr "" -# -# msgid "Protocol" -# msgstr "" -# -msgid "Source IP address" -msgstr "送信元IPアドレス" - -msgid "Source MAC address" -msgstr "送信元MACアドレス" - -msgid "Source NAT" -msgstr "送信元NAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"送信元NAT設定は、複数のWANアドレスを内部のサブネットにマッピングするような、" -"出力トラフィックに対する送信元IPアドレスのきめ細かい制御を行うマスカレードの" -"設定フォームです。" - -msgid "Source address" -msgstr "送信元アドレス" - -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 "" -"ファイアウォール機能は、各ネットワークインターフェース上にゾーンを作成してト" -"ラフィックの制御を行います。" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"下記の設定は、このゾーン (%s)とその他のゾーン間の転送ポリシーを制御します。" -"宛先ゾーンへの転送 は、%q から転送されたトラフィッ" -"クに対して転送を許可します。 送信元ゾーンからの転送 は、別のゾーンか" -"ら%qへ の転送を許可します。トラフィック転送設定は、一方" -"向であり、例えばlanからwanへの転送設定は、wanからlanへの転送を許可し" -"ません。" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"このページでは、各転送ルールの詳細設定を行うことができます。ただし、ほとんど" -"のケースは、これらの設定を変更する必要はありません。" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"このページでは、各トラフィックルールの送信元・宛先ホストの設定などの詳細設定" -"を行うことができます。" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"このセクションでは、%sの標準的な動作を設定します。受信及び送信オプションは、このゾーンに対して入出力するトラフィックに対する標準のポリ" -"シーを設定し、転送オプションは、ゾーン間の転送トラフィックに対する標" -"準のポリシーになります。対象ネットワークは、どのネットワーク設定がこ" -"のゾーンに属するかを設定します。" - -msgid "Thursday" -msgstr "木曜日" - -msgid "Time in UTC" -msgstr "UTC時刻を使用" - -msgid "To %s at %s on this device" -msgstr "宛先 %s, %s (デバイス)" - -msgid "To %s in %s" -msgstr "宛先 %s (%s)" - -msgid "To %s on this device" -msgstr "宛先 %s (デバイス)" - -msgid "To %s, %s in %s" -msgstr "宛先 %s, %s (%s)" - -msgid "To source IP" -msgstr "変換後送信元IP" - -msgid "To source port" -msgstr "変換後送信元ポート" - -msgid "Traffic Rules" -msgstr "トラフィック・ルール" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"トラフィック・ルールの設定では、ゾーン間を行き来するパケットのポリシーを設定" -"します。例えば、特定のホスト間や、ルーターのWANポートへのトラフィックの拒否を" -"設定することができます。" - -msgid "Tuesday" -msgstr "火曜日" - -msgid "Via %s" -msgstr "経由 %s" - -msgid "Via %s at %s" -msgstr "経由 %s , %s" - -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 "ゾーン %q" - -msgid "Zone ⇒ Forwardings" -msgstr "ゾーン ⇒ 転送" - -msgid "Zones" -msgstr "ゾーン" - -msgid "accept" -msgstr "許可" - -msgid "any" -msgstr "全て" - -msgid "any host" -msgstr "全てのホスト" - -msgid "any router IP" -msgstr "全てのルーターIP" - -msgid "any zone" -msgstr "全てのゾーン" - -msgid "don't track" -msgstr "コネクション追跡を行わない" - -msgid "drop" -msgstr "遮断" - -msgid "reject" -msgstr "拒否" - -msgid "traffic" -msgstr "トラフィック" diff --git a/package/luci/applications/luci-app-firewall/po/ko/firewall.po b/package/luci/applications/luci-app-firewall/po/ko/firewall.po deleted file mode 100644 index e5e0e871ee..0000000000 --- a/package/luci/applications/luci-app-firewall/po/ko/firewall.po +++ /dev/null @@ -1,505 +0,0 @@ -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 \n" -"Language-Team: LANGUAGE \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 "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add and edit..." -msgstr "추가 후 수정..." - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow forward from source zones:" -msgstr "Source zone 로부터의 forward 허용:" - -msgid "Allow forward to destination zones:" -msgstr "Destination zone 으로 forward 허용:" - -msgid "Any" -msgstr "" - -msgid "Covered networks" -msgstr "" - -msgid "Custom Rules" -msgstr "Custom Rule" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Custom rule 은 방화벽 UI 로 해결이 되지 않는 임의의 iptables 명령을 실행할 " -"수 있도록 합니다. 입력된 명령어들은 매 방화벽 재시작시 실행되는데 default " -"ruleset 이 load 된 후 시점입니다." - -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. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"이 zone (%s) 과 다른 zone 들 사이의 forwarding 정책을 제어하는 옵션들입니다. " -"Destination zones 은 %q 에서 출발한 forward " -"traffic 을 뜻하고, Source zones 은 다른 zone 들에서 %q 로 전" -"달되는 forward traffic 을 뜻합니다. Forwarding rule 은 " -"unidirectional 인데, 예를 들어 LAN 에서 WAN 으로의 forward 규칙이 " -"WAN 에서 LAN 으로의 forward 를 허락하는 것이 아닙니다." - -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 input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"이 섹션은 %q 의 공통 속성을 설정할 수 있습니다. input 과 " -"output 옵션은 이 zone 으로 전달되어 들오거나 나가는 트래픽에 대한 기" -"본 정책을 뜻합니다. forward 옵션은 zone 내에서 다른 네트워크들 사이" -"를 오가는 forward traffic 에 대한 정책을 뜻합니다. Covered networks " -"에서는 zone 의 영향을 받을 네트워크들을 지정할 수 있습니다." - -msgid "Thursday" -msgstr "목요일" - -msgid "Time in UTC" -msgstr "UTC 기준시" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -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 "" diff --git a/package/luci/applications/luci-app-firewall/po/ms/firewall.po b/package/luci/applications/luci-app-firewall/po/ms/firewall.po deleted file mode 100644 index edc92514fb..0000000000 --- a/package/luci/applications/luci-app-firewall/po/ms/firewall.po +++ /dev/null @@ -1,470 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "%s in %s" -msgstr "" - -msgid "%s%s with %s" -msgstr "" - -msgid "%s, %s in %s" -msgstr "" - -msgid "(Unnamed Entry)" -msgstr "" - -msgid "(Unnamed Rule)" -msgstr "" - -msgid "(Unnamed SNAT)" -msgstr "" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add and edit..." -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow forward from source zones:" -msgstr "" - -msgid "Allow forward to destination zones:" -msgstr "" - -msgid "Any" -msgstr "" - -msgid "Covered networks" -msgstr "" - -msgid "Custom Rules" -msgstr "" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "" - -msgid "Destination address" -msgstr "" - -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 "" - -msgid "Enable SYN-flood protection" -msgstr "" - -msgid "Enable logging on this zone" -msgstr "" - -msgid "External IP address" -msgstr "" - -msgid "External port" -msgstr "" - -msgid "External zone" -msgstr "" - -msgid "Extra arguments" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall - Custom Rules" -msgstr "" - -msgid "Firewall - Port Forwards" -msgstr "" - -msgid "Firewall - Traffic Rules" -msgstr "" - -msgid "Firewall - Zone Settings" -msgstr "" - -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 "" - -msgid "Internal port" -msgstr "" - -msgid "Internal zone" -msgstr "" - -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 "" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "" - -msgid "New port forward" -msgstr "" - -msgid "New source NAT" -msgstr "" - -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 "" - -msgid "Port Forwards" -msgstr "" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "" - -msgid "Rewrite matched traffic to the given address." -msgstr "" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" - -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 "" - -msgid "Source MAC address" -msgstr "" - -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 "" - -msgid "Source address" -msgstr "" - -msgid "Source port" -msgstr "" - -msgid "Source zone" -msgstr "" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -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 "" - -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 "" - -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 "" diff --git a/package/luci/applications/luci-app-firewall/po/no/firewall.po b/package/luci/applications/luci-app-firewall/po/no/firewall.po deleted file mode 100644 index e26e36564d..0000000000 --- a/package/luci/applications/luci-app-firewall/po/no/firewall.po +++ /dev/null @@ -1,517 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2013-03-25 16:42+0200\n" -"Last-Translator: protx \n" -"Language: no\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s i %s" - -msgid "%s%s with %s" -msgstr "%s%s med %s" - -msgid "%s, %s in %s" -msgstr "%s, %s i %s" - -msgid "(Unnamed Entry)" -msgstr "(oppføring uten navn)" - -msgid "(Unnamed Rule)" -msgstr "(regel uten navn)" - -msgid "(Unnamed SNAT)" -msgstr "(SNAT uten navn)" - -msgid "%d pkts. per %s" -msgstr "%d pakker per %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d pakker per %s, burst %dpakker." - -msgid "%s and limit to %s" -msgstr "%s og begrens til %s" - -msgid "Action" -msgstr "Handling" - -msgid "Add" -msgstr "Legg til" - -msgid "Add and edit..." -msgstr "Legg til og redigere..." - -msgid "Advanced Settings" -msgstr "Avanserte Innstillinger" - -msgid "Allow forward from source zones:" -msgstr "Tillat videresending fra kilde soner:" - -msgid "Allow forward to destination zones:" -msgstr "Tillat videresending til destinasjon soner:" - -msgid "Any" -msgstr "Enhver" - -msgid "Covered networks" -msgstr "Gjeldene nettverk" - -msgid "Custom Rules" -msgstr "Egendefinerte Regler" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Egendefinerte regler tillater deg å utføre vilkårlige iptables kommandoer " -"som ikke dekkes av brannmurens standardoppsett. Kommandoene utføres etter " -"hver omstart av brannmuren, rett etter at standard regelsett er lastet." - -msgid "Destination IP address" -msgstr "Destinasjon IP adresse" - -msgid "Destination address" -msgstr "Destinasjon adresse" - -msgid "Destination port" -msgstr "Destinasjon port" - -msgid "Destination zone" -msgstr "Destinasjon sone" - -msgid "Do not rewrite" -msgstr "Ikke omskriv" - -msgid "Drop invalid packets" -msgstr "Forkast ugyldige pakker" - -msgid "Enable" -msgstr "Aktiver" - -msgid "Enable NAT Loopback" -msgstr "Aktiver NAT Tilbakekobling" - -msgid "Enable SYN-flood protection" -msgstr "Aktiver SYN-flood beskyttelse" - -msgid "Enable logging on this zone" -msgstr "Aktiver logging av denne sonen" - -msgid "External IP address" -msgstr "Ekstern IP adressse" - -msgid "External port" -msgstr "Ekstern port" - -msgid "External zone" -msgstr "Ekstern sone" - -msgid "Extra arguments" -msgstr "Ekstra argumenter" - -msgid "Firewall" -msgstr "Brannmur" - -msgid "Firewall - Custom Rules" -msgstr "Brannmur - Egendefinerte Regler" - -msgid "Firewall - Port Forwards" -msgstr "Brannmur - Port Videresending" - -msgid "Firewall - Traffic Rules" -msgstr "Brannmur - Trafikk Regler" - -msgid "Firewall - Zone Settings" -msgstr "Brannmur - Sone Innstillinger" - -msgid "Force connection tracking" -msgstr "" -"Bruk forbindelse sporing" - -msgid "Forward" -msgstr "Videresend" - -msgid "Forward to" -msgstr "Videresend til" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "Fra %s i %s" - -msgid "From %s in %s with source %s" -msgstr "Fra %s i %s med kilde %s" - -msgid "From %s in %s with source %s and %s" -msgstr "Fra %s i %s med kilde %s og %s" - -msgid "General Settings" -msgstr "Generelle Innstillinger" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 og IPv6" - -msgid "IPv4 only" -msgstr "Kun IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Kun IPv6" - -msgid "Input" -msgstr "Inndata" - -msgid "Inter-Zone Forwarding" -msgstr "Sone til Sone Videresending" - -msgid "Internal IP address" -msgstr "Intern IP adresse" - -msgid "Internal port" -msgstr "Intern port" - -msgid "Internal zone" -msgstr "Intern sone" - -msgid "Limit log messages" -msgstr "Begrens logging" - -msgid "MSS clamping" -msgstr "MSS Kontroll (Clamping)" - -msgid "Masquerading" -msgstr "Masquerading" - -msgid "Match" -msgstr "Match" - -msgid "Match ICMP type" -msgstr "Match ICMP type" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "" -"Match videresendt trafikk til den oppgitte destinasjonsport eller " -"portområdet." - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Match innkommende trafikk rettet mot den oppgitte destinasjonsport eller " -"portområdet på denne verten" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" -"Match innkommende trafikk som kommer fra den oppgitte kildeport eller " -"portområdet på klienten." - -msgid "Monday" -msgstr "" - -msgid "Month Days" -msgstr "" - -msgid "Name" -msgstr "Navn" - -msgid "New SNAT rule" -msgstr "Ny SNAT regel" - -msgid "New forward rule" -msgstr "Ny videresending regel" - -msgid "New input rule" -msgstr "Ny inndata regel" - -msgid "New port forward" -msgstr "Ny port videresending" - -msgid "New source NAT" -msgstr "Ny kilde NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Match kun innkommende trafikk rettet mot den oppgitt IP adresse." - -msgid "Only match incoming traffic from these MACs." -msgstr "Match kun innkommende trafikk fra disse MAC adresser." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Match kun innkommende trafikk fra denne IP eller IP område." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "" -"Match kun innkommende trafikk som kommer fra den oppgitte kildeport eller " -"fra portområdet til klienten" - -msgid "Open ports on router" -msgstr "Åpne porter på ruteren" - -msgid "Other..." -msgstr "Andre..." - -msgid "Output" -msgstr "Utdata" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "Sender flere argumenter til iptables. Bruk med forsiktighet!" - -msgid "Port Forwards" -msgstr "Port Videresendinger" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"Port videresending tillater at eksterne datamaskiner på Internett kan koble " -"seg til en bestemt maskin eller tjeneste innenfor det private LAN." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Viderekoble matchet innkommende trafikk til den oppgitte porten på intern " -"vert" - -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" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Begrens Masqeuerading til oppgitt kilde subnett" - -msgid "Restrict to address family" -msgstr "Begrens til adresse familie" - -msgid "Rewrite matched traffic to the given address." -msgstr "Omskriv matchet trafikk til den oppgitte adressen." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Omskriv matchet trafikk til den oppgitte kildeport. Kan stå tom for kun " -"omskriving av IP adressen." - -msgid "Rewrite to source %s" -msgstr "Omskriv til kilde %s" - -msgid "Rewrite to source %s, %s" -msgstr "Omskriv til kilde %s, %s" - -msgid "SNAT IP address" -msgstr "SNAT IP adresse" - -msgid "SNAT port" -msgstr "SNAT port" - -msgid "Saturday" -msgstr "" - -msgid "Source IP address" -msgstr "Kilde IP adresse" - -msgid "Source MAC address" -msgstr "Kilde MAC adresse" - -msgid "Source NAT" -msgstr "Kilde NAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"Kilde NAT er en spesifikk form for masquerading som tillater finkornet " -"kontroll over kilde IP adressen som brukes for utgående trafikk, for " -"eksempel for å mappe flere WAN adresser til interne subnett." - -msgid "Source address" -msgstr "Kilde adresse" - -msgid "Source port" -msgstr "Kilde port" - -msgid "Source zone" -msgstr "Kilde sone" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"Brannmuren skaper soner over nettverkets grensesnitt for å styre " -"nettverkstrafikken." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Med valgene under konfigurerer man videresending mellom denne sone (%s) og " -"andre soner. Destinasjons soner omhandler videresendt trafikk " -"med opprinnelse fra %q. Kilde soner matcher " -"videresendt trafikk fra andre soner rettet mot %q. Reglene " -"ved videresending er enveis, d.v.s at videresending fra LAN til WAN " -"ikke automatisk også tillater videresending fra WAN til LAN." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Denne siden lar deg endre avanserte egenskaper til port videresending " -"oppføringer. I de fleste tilfeller er det ikke nødvendig å endre disse " -"innstillingene." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Denne siden lar deg endre de avanserte egenskapene til trafikken regel " -"oppføringer, som for eksempel matchet kilde og destinasjons vert." - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Denne seksjonen definerer de vanligste valg for %q. Med Inndata og " -"Utdata fastsetter man vanlige regler for trafikk gjennom sonen, " -"mens videresend valget definerer regler for videresendt trafikk " -"mellom forskjellige nettverk i sonen. Gjeldene nettverk " -"spesifiserer hvilken av de tilgjengelige nettverk som er medlem av denne " -"sone." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "Til %s på %s på denne enheten" - -msgid "To %s in %s" -msgstr "Til %s i %s" - -msgid "To %s on this device" -msgstr "Til %s på denne enheten" - -msgid "To %s, %s in %s" -msgstr "Til %s, %s i %s" - -msgid "To source IP" -msgstr "Til kilde IP" - -msgid "To source port" -msgstr "Til kilde port" - -msgid "Traffic Rules" -msgstr "Trafikk Regler" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"Trafikk regler definerer regler for sending av pakker mellom ulike soner, " -"for eksempel for å avvise trafikk mellom visse verter eller for å åpne WAN " -"porter på ruteren." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "Via %s" - -msgid "Via %s at %s" -msgstr "Via %s på %s" - -msgid "Wednesday" -msgstr "" - -msgid "Week Days" -msgstr "" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" -"Du kan spesifisere flere ved å velge \"-- egendefinert --\" og deretter " -"skrive flere protokoller atskilt med mellomrom." - -msgid "Zone %q" -msgstr "Sone %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Sone = Videresendinger" - -msgid "Zones" -msgstr "Soner" - -msgid "accept" -msgstr "godta" - -msgid "any" -msgstr "enhver" - -msgid "any host" -msgstr "enhver vert" - -msgid "any router IP" -msgstr "enhver ruter IP" - -msgid "any zone" -msgstr "enhver sone" - -msgid "don't track" -msgstr "ikke track" - -msgid "drop" -msgstr "forkast" - -msgid "reject" -msgstr "avslå" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/pl/firewall.po b/package/luci/applications/luci-app-firewall/po/pl/firewall.po deleted file mode 100644 index 77e6a956a2..0000000000 --- a/package/luci/applications/luci-app-firewall/po/pl/firewall.po +++ /dev/null @@ -1,530 +0,0 @@ -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: 2013-06-22 15:49+0200\n" -"Last-Translator: obsy \n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s w %s" - -msgid "%s%s with %s" -msgstr "%s%s z %s" - -msgid "%s, %s in %s" -msgstr "%s, %s w %s" - -msgid "(Unnamed Entry)" -msgstr "(Nienazwany wpis)" - -msgid "(Unnamed Rule)" -msgstr "(Nienazwana reguła)" - -msgid "(Unnamed SNAT)" -msgstr "(Nienazwany SNAT)" - -msgid "%d pkts. per %s" -msgstr "%d pakiet. na %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" -"%d pakiet. na %s, popsutych %d pakiet." - -msgid "%s and limit to %s" -msgstr "%s i ograniczone do %s" - -msgid "Action" -msgstr "Działanie" - -msgid "Add" -msgstr "Dodaj" - -msgid "Add and edit..." -msgstr "Dodaj i edytuj..." - -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -msgid "Allow forward from source zones:" -msgstr "Zezwól na przekazywanie z source zones:" - -msgid "Allow forward to destination zones:" -msgstr "Zezwól na przekazywanie do destination zones:" - -msgid "Any" -msgstr "Każdy" - -msgid "Covered networks" -msgstr "Objęte sieci" - -msgid "Custom Rules" -msgstr "Własne reguły" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Własne reguły pozwalają na arbitralne wykonanie poleceń iptables, które nie " -"są objęte składnią zapory. Polecenia wykonywane są po każdym restarcie " -"zapory, zaraz po załadowaniu zestawu reguł domyślnych." - -msgid "Destination IP address" -msgstr "Docelowy adres IP" - -msgid "Destination address" -msgstr "Adres docelowy" - -msgid "Destination port" -msgstr "Port docelowy" - -msgid "Destination zone" -msgstr "Strefa docelowa" - -msgid "Do not rewrite" -msgstr "Nie przepisuj" - -msgid "Drop invalid packets" -msgstr "Porzuć wadliwe pakiety" - -msgid "Enable" -msgstr "Włącz" - -msgid "Enable NAT Loopback" -msgstr "Włącz NAT Loopback" - -msgid "Enable SYN-flood protection" -msgstr "Włącz ochronę przed atakiem SYN-flood" - -msgid "Enable logging on this zone" -msgstr "Włącz logowanie na tej strefy" - -msgid "External IP address" -msgstr "Zewnętrzne adresy IP" - -msgid "External port" -msgstr "Port zewnętrzny" - -msgid "External zone" -msgstr "Strefa zewnętrzna" - -msgid "Extra arguments" -msgstr "Dodatkowe argumenty" - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/zones.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -msgid "Firewall" -msgstr "Zapora" - -msgid "Firewall - Custom Rules" -msgstr "Zapora - Reguły własne" - -msgid "Firewall - Port Forwards" -msgstr "Zapora - Przekazywanie portów" - -msgid "Firewall - Traffic Rules" -msgstr "Zapora - Reguły ruchu" - -msgid "Firewall - Zone Settings" -msgstr "Zapora - Ustawienia strefy" - -msgid "Force connection tracking" -msgstr "Wymuś śledzenie połączeń" - -msgid "Forward" -msgstr "Przekazuj" - -msgid "Forward to" -msgstr "Przekazuj do" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "Z %s w %s" - -msgid "From %s in %s with source %s" -msgstr "Z %s w %s ze źródłem %s" - -msgid "From %s in %s with source %s and %s" -msgstr "Z %s w %s ze źródłem %s i %s" - -msgid "General Settings" -msgstr "Ustawienia ogólne" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 i IPv6" - -msgid "IPv4 only" -msgstr "Tylko IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Tylko IPv6" - -msgid "Input" -msgstr "Ruch przychodzący" - -msgid "Inter-Zone Forwarding" -msgstr "Przekazywanie pomiędzy strefami" - -msgid "Internal IP address" -msgstr "Wewnętrzny adres IP" - -msgid "Internal port" -msgstr "Wewnętrzny port" - -msgid "Internal zone" -msgstr "Strefa wewnętrzna" - -msgid "Limit log messages" -msgstr "Ograniczenie logowania" - -msgid "MSS clamping" -msgstr "Dostosuj MSS" - -msgid "Masquerading" -msgstr "Maskarada" - -msgid "Match" -msgstr "Dopasuj" - -msgid "Match ICMP type" -msgstr "Dopasuj typ ICMP" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "" -"Dopasuj przekazywany ruch do danego docelowego portu lub zakresu portów" - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Dopasuj ruch przychodzący do danego portu docelowego lub zakresu portów na " -"tym hoście" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" -"Dopasuj przychodzący ruch pochodzący z danego portu źródłowego lub zakresu " -"portów na hoście klienta." - -msgid "Monday" -msgstr "" - -msgid "Month Days" -msgstr "" - -msgid "Name" -msgstr "Nazwa" - -msgid "New SNAT rule" -msgstr "Nowa reguła SNAT" - -msgid "New forward rule" -msgstr "Nowa reguła przekazywania (forward)" - -msgid "New input rule" -msgstr "Nowa reguła wejściowa (input)" - -msgid "New port forward" -msgstr "Nowe przekierowanie portu" - -msgid "New source NAT" -msgstr "Nowy NAT źródłowy" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Dopasuj tylko przychodzący ruch skierowany do danego adresu IP." - -msgid "Only match incoming traffic from these MACs." -msgstr "Dopasuj tylko ruch z tych adresów MAC." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Dopasuj tylko ruch przychodzący z tego adresu IP lub zakresu adresów." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "" -"Dopasuj tylko ruch przychodzący z podanego portu źródłowego lub zakresu " -"portów na hoście klienta" - -msgid "Open ports on router" -msgstr "Otwarte porty na routerze" - -msgid "Other..." -msgstr "Inne..." - -msgid "Output" -msgstr "Wyjście (Output)" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" -"Przekazuje dodatkowe argumenty do iptables. Zachowaj szczególną ostrożność!" - -msgid "Port Forwards" -msgstr "Przekierowania portów" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"Przekierowanie portów pozwala komputerom z internetu na połączenia z " -"komputerami z sieci LAN." - -msgid "Protocol" -msgstr "Protokół" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Przekieruj ruch przychodzący na podany port do wskazanego hosta w sieci " -"wewnętrznej" - -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" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Ogranicz maskaradę do wskazanych sieci źródłowych" - -# Wstawiłem rodzinę gdyż gdzieś wcześniej było tak opisane ale klasa pasuje mi tu bardziej. -# Obsy - niestety ale "rodzina". W gui dotyczy to wyboru IPv4/IPv6, więc "rodzina" a nie klasa. -msgid "Restrict to address family" -msgstr "Ogranicz do rodziny adresów" - -# Dosłownie przetłumaczone, nie bardzo wiem czy chodzi o czynność przepisywania pakietu przez usługę czy to jakieś ogólne sformułowanie... -msgid "Rewrite matched traffic to the given address." -msgstr "Przepisz dopasowany ruch do wskazanych adresów." - -# Jak wyżej chodzi o przepisanie pakietu przez usługę? -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Przepisz dopasowany ruch do danego portu źródłowego. Można zostawić puste " -"aby przepisać tylko adres IP" - -msgid "Rewrite to source %s" -msgstr "Przepisz do źródła %s" - -msgid "Rewrite to source %s, %s" -msgstr "Przepisz do źródła %s, %s" - -msgid "SNAT IP address" -msgstr "Adres IP SNAT" - -msgid "SNAT port" -msgstr "Port SNAT" - -msgid "Saturday" -msgstr "" - -msgid "Source IP address" -msgstr "Źródłowy adres IP" - -msgid "Source MAC address" -msgstr "Źródłowy adres MAC" - -msgid "Source NAT" -msgstr "NAT źródłowy" - -# http://www.digipedia.pl/def/doc/id/677604507/name/SNAT/ -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"SNAT używany jest wtedy, gdy zmieniane są adresy pakietów połączenia " -"wychodzącego, czyli pakiety źródłowe. Wykonywany jest zawsze po routowaniu " -"(POSTROUTING), a więc w chwili, gdy pakiety są gotowe opuścić host. " -"IPmasquerading jest formą SNAT." - -msgid "Source address" -msgstr "Adres źródłowy" - -msgid "Source port" -msgstr "Port źródłowy" - -msgid "Source zone" -msgstr "Strefa źródłowa" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"Firewall tworzy strefy z Twoich interfejsów sieciowych, aby kontrolować ruch " -"sieciowy." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Opcje poniżej kontrolują politykę przekazywania pomiędzy tą strefą (%s) a " -"innymi strefami. Strefy docelowe obejmują przekazywany ruch " -"pochodzący z %q. Strefy źródłowe match forwarded " -"traffic from other zones skierowane do %q. Reguła " -"przekazywania jest jednokierunkowa, np. przekazywanie z sieci LAN " -"do WAN nie implikuje pozwolenia na przekazywanie z sieci WAN do LAN." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Ta strona pozwala zmienić zaawansowane ustawienia przekierowania portów. W " -"większości przypadków nie ma potrzeby zmieniać tych ustawień." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Ta strona pozwala zmienić zaawansowane ustawienia reguły ruchu sieciowego, " -"takie jak pasujące źródło i hosty docelowe." - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Ta sekcja definiuje ustawienia ogólne %q. Opcje \"wejście\" i " -"\"wyjście\" określają domyślną politykę dla ruchu przychodzącego i " -"wychodzącego w tej strefie, podczas gdy \"przekazywanie\" opisuje " -"politykę ruchu przekazywanego pomiędzy różnymi sieciami wewnątrz strefy. " -"Objęte sieci określają dostępne sieci będące członkami tej strefy." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "Do %s w %s na tym urządzeniu" - -msgid "To %s in %s" -msgstr "Do %s w %s" - -msgid "To %s on this device" -msgstr "Do %s na tym urządzeniu" - -msgid "To %s, %s in %s" -msgstr "Do %s, %s w %s" - -msgid "To source IP" -msgstr "Do źródłowego IP" - -msgid "To source port" -msgstr "Do źródłowego portu" - -msgid "Traffic Rules" -msgstr "Reguły ruchu sieciowego" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"Reguły ruchu sieciowego definiują politykę dla pakietów przechodzących " -"między strefami, na przykład aby odrzucać ruch między konkretnymi hostami " -"albo otworzyć porty WAN routera." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "Przez %s" - -msgid "Via %s at %s" -msgstr "Przez %s w %s" - -msgid "Wednesday" -msgstr "" - -msgid "Week Days" -msgstr "" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" -"Możesz określić kilka wybierając \"-- własne --\" i wpisując protokoły " -"rozdzielone spacją." - -msgid "Zone %q" -msgstr "Strefa %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Strefa ⇒ Przekazywanie" - -msgid "Zones" -msgstr "Strefy" - -msgid "accept" -msgstr "akceptuj" - -msgid "any" -msgstr "dowolny" - -msgid "any host" -msgstr "dowolny host" - -msgid "any router IP" -msgstr "dowolne IP routera" - -msgid "any zone" -msgstr "dowolna strefa" - -msgid "don't track" -msgstr "nie śledź" - -msgid "drop" -msgstr "porzucaj" - -msgid "reject" -msgstr "odrzucaj" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/pt-br/firewall.po b/package/luci/applications/luci-app-firewall/po/pt-br/firewall.po deleted file mode 100644 index 1ee89cfbfb..0000000000 --- a/package/luci/applications/luci-app-firewall/po/pt-br/firewall.po +++ /dev/null @@ -1,521 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2017-02-20 17:43-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "%s in %s" -msgstr "%s in %s" - -msgid "%s%s with %s" -msgstr "%s%s com %s" - -msgid "%s, %s in %s" -msgstr "%s, %s em %s" - -msgid "(Unnamed Entry)" -msgstr "(Entrada Sem Nome)" - -msgid "(Unnamed Rule)" -msgstr "(Regra Sem Nome)" - -msgid "(Unnamed SNAT)" -msgstr "(SNAT Sem Nome)" - -msgid "%d pkts. per %s" -msgstr "%d pcts. por %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d pcts. por %s, pico %d pcts." - -msgid "%s and limit to %s" -msgstr "%s e limite a %s" - -msgid "Action" -msgstr "Ação" - -msgid "Add" -msgstr "Adicionar" - -msgid "Add and edit..." -msgstr "Adicionar e editar..." - -msgid "Advanced Settings" -msgstr "Configurações Avançadas" - -msgid "Allow forward from source zones:" -msgstr "Permite o encaminhamento da zona de origem:" - -msgid "Allow forward to destination zones:" -msgstr "Permite o encaminhamento para a zona de destino:" - -msgid "Any" -msgstr "Qualquer" - -msgid "Covered networks" -msgstr "Redes cobertas" - -msgid "Custom Rules" -msgstr "Regras Personalizadas" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"As regras personalizadas permitem executar comandos iptables arbitrários não " -"cobertos por esta ferramenta. Os comandos serão executados após cada " -"reinício do firewall, logo após a carga do conjunto de regras padrão." - -msgid "Destination IP address" -msgstr "Endereço IP de destino" - -msgid "Destination address" -msgstr "Endereço de destino" - -msgid "Destination port" -msgstr "Porta de destino" - -msgid "Destination zone" -msgstr "Zona de destino" - -msgid "Do not rewrite" -msgstr "Não sobrescreva" - -msgid "Drop invalid packets" -msgstr "Descartar pacotes inválidos" - -msgid "Enable" -msgstr "Habilitar" - -msgid "Enable NAT Loopback" -msgstr "Habilite o Loopback do NAT" - -msgid "Enable SYN-flood protection" -msgstr "Habilite proteção contra SYN-flood" - -msgid "Enable logging on this zone" -msgstr "Habilite o registro nesta zona" - -msgid "External IP address" -msgstr "Endereço IP externo" - -msgid "External port" -msgstr "Porta Externa" - -msgid "External zone" -msgstr "Zona externa" - -msgid "Extra arguments" -msgstr "Argumentos extras" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall - Custom Rules" -msgstr "Firewall - Regras personalizadas" - -msgid "Firewall - Port Forwards" -msgstr "Firewall - Encaminhamento de Portas" - -msgid "Firewall - Traffic Rules" -msgstr "Firewall - Regras de Tráfego" - -msgid "Firewall - Zone Settings" -msgstr "Firewall - Configurações de Zona" - -msgid "Force connection tracking" -msgstr "Force o rastreamento da conexão" - -msgid "Forward" -msgstr "Encaminhar" - -msgid "Forward to" -msgstr "Encaminhar para" - -msgid "Friday" -msgstr "Sexta-feira" - -msgid "From %s in %s" -msgstr "Vindo de %s em %s" - -msgid "From %s in %s with source %s" -msgstr "Vindo de %s em %s com origem %s" - -msgid "From %s in %s with source %s and %s" -msgstr "Vindo de %s em %s com origem %s e %s" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 only" -msgstr "Somente IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Somente IPv6" - -msgid "Input" -msgstr "Entrada" - -msgid "Inter-Zone Forwarding" -msgstr "Encaminhamento entre Zonas" - -msgid "Internal IP address" -msgstr "Endereço IP interno" - -msgid "Internal port" -msgstr "Porta Interna" - -msgid "Internal zone" -msgstr "Zona interna" - -msgid "Limit log messages" -msgstr "Limita as mensagens de registro" - -msgid "MSS clamping" -msgstr "Ajuste do MSS" - -msgid "Masquerading" -msgstr "Mascaramento" - -msgid "Match" -msgstr "casol" - -msgid "Match ICMP type" -msgstr "Casa com ICMP tipo" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "" -"Casa o tráfego encaminhado para uma porta ou faixa de portas de destino " -"específica." - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Casa o tráfego entrante direcionado para uma porta ou faixa de portas de " -"destino específica neste computador" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" -"Casa o tráfego entrante originado de uma porta ou faixa de portas no " -"equipamento cliente." - -msgid "Monday" -msgstr "Segunda-Feira" - -msgid "Month Days" -msgstr "Dias do mês" - -msgid "Name" -msgstr "Nome" - -msgid "New SNAT rule" -msgstr "Nova regra de SNAT" - -msgid "New forward rule" -msgstr "Nova regra de encaminhamento" - -msgid "New input rule" -msgstr "Nova regra de entrada" - -msgid "New port forward" -msgstr "Novo encaminhamento de porta" - -msgid "New source NAT" -msgstr "Nova origem NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "" -"Somente case o tráfego entrante direcionado para o endereço IP fornecido." - -msgid "Only match incoming traffic from these MACs." -msgstr "Somente case o tráfego entrante destes endereços MAC." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Somente case o tráfego entrante desta faixa de endereços IP." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "" -"Somente case o tráfego entrante vindo da porta de origem fornecida ou " -"intervalo de portas no equipamento cliente" - -msgid "Open ports on router" -msgstr "Abrir portas no roteador" - -msgid "Other..." -msgstr "Outro..." - -msgid "Output" -msgstr "Saída" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "Passa argumentos adicionais para o iptables. Use com cuidado!" - -msgid "Port Forwards" -msgstr "Encaminhamentos de Porta" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"O encaminhamento de portas permite que computadores remotos na Internet " -"conectem a um computador ou serviço específico dentro da rede local privada." - -msgid "Protocol" -msgstr "Protocolo" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Redireciona tráfego entrante para a porta especificada no computador interno" - -msgid "Redirect matched incoming traffic to the specified internal host" -msgstr "Redireciona tráfego entrante para o computador interno especificado" - -msgid "Restart Firewall" -msgstr "Reiniciar o Firewall" - -msgid "Restrict Masquerading to given destination subnets" -msgstr "Restringe o mascaramento para uma subrede de destino específica" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Restringe o mascaramento para uma subrede de origem específica" - -msgid "Restrict to address family" -msgstr "Restringe para uma família de endereços" - -msgid "Rewrite matched traffic to the given address." -msgstr "Reescreva o tráfego correspondente para o endereço fornecido." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Reescreva o tráfego correspondente para a porta de origem fornecida. Pode " -"ficar em branco para somente reescrever o endereço IP." - -msgid "Rewrite to source %s" -msgstr "Reescrever para a origem %s" - -msgid "Rewrite to source %s, %s" -msgstr "Reescrever para a origem %s, %s" - -msgid "SNAT IP address" -msgstr "Endereço IP da SNAT" - -msgid "SNAT port" -msgstr "Porta da SNAT" - -msgid "Saturday" -msgstr "Sábado" - -msgid "Source IP address" -msgstr "Endereço IP de origem" - -msgid "Source MAC address" -msgstr "Endereço MAC de origem" - -msgid "Source NAT" -msgstr "NAT origem" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"NAT origem é uma forma específica de mascaramento que permite o controle " -"fino do endereço IP de origem usado no tráfego sainte. Por exemplo, para " -"mapear múltiplos endereços WAN para subredes internas." - -msgid "Source address" -msgstr "Endereço de origem" - -msgid "Source port" -msgstr "Porta de origem" - -msgid "Source zone" -msgstr "Zona de origem" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "Dia inicial (aaaa-mm-dd)" - -msgid "Start Time (hh:mm:ss)" -msgstr "Hora inicial (hh:mm:ss)" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "Dia final (aaaa-mm-dd)" - -msgid "Stop Time (hh:mm:ss)" -msgstr "Hora final (hh:mm:ss)" - -msgid "Sunday" -msgstr "Domingo" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"O firewall cria zonas sobre as interfaces de rede para controlar o fluxo do " -"tráfego de rede." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"As opções abaixo controlam as políticas de encaminhamento entre esta zona " -"(%s) e outras zonas. Zonas de destino incluem tráfego encaminhado " -"originado de %q. Zonas de origem casam com tráfego " -"encaminhado de outras zonas apontando para %q. A regra de " -"encaminhamento é unidirecional, ex: um encaminhamento da LAN para " -"WAN não implica na permissão de encaminhar da WAN para LAN." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"Esta página permite que você mude propriedades avançadas da entrada do " -"encaminhamento de porta. Na maioria dos casos, não é necessário modificar " -"estas configurações." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Esta página permite que você mude propriedades avançadas da entrada da regra " -"de tráfego, como os equipamentos de origem e destino." - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Esta seção define as propriedades comuns de %q. As opções de entrada e saída definem as políticas padrão para o tráfego entrando e " -"saindo desta zona, enquanto a opção de encaminhamento descreve a " -"política para encaminhar o tráfego entre diferentes redes dentro da zona. " -"Redes Cobertas especificam que redes disponíveis são membros desta " -"zona." - -msgid "Thursday" -msgstr "Quita-feira" - -msgid "Time in UTC" -msgstr "Hora em UTC" - -msgid "To %s at %s on this device" -msgstr "Para %s em %s neste dispositivo" - -msgid "To %s in %s" -msgstr "Para %s em %s" - -msgid "To %s on this device" -msgstr "Para %s neste dispositivo" - -msgid "To %s, %s in %s" -msgstr "Para %s, %s em %s" - -msgid "To source IP" -msgstr "Para o endereço IP de origem" - -msgid "To source port" -msgstr "Para a porta de origem" - -msgid "Traffic Rules" -msgstr "Regras de tráfego" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"Regras de tráfego definem políticas para a passagem de pacotes entre as " -"diferentes zonas. Por exemplo, rejeitar o tráfego entre certos equipamentos " -"ou abrir portas WAN no roteador." - -msgid "Tuesday" -msgstr "Terça-feira" - -msgid "Via %s" -msgstr "Via %s" - -msgid "Via %s at %s" -msgstr "Via %s at %s" - -msgid "Wednesday" -msgstr "Quarta-feira" - -msgid "Week Days" -msgstr "Dias da semana" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" -"Você pode especificar múltiplas entradas selecionando \"-- personalizado --" -"\" e então entrando os protocolos separados por espaço." - -msgid "Zone %q" -msgstr "Zona %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Zona ⇒ Encaminhamentos" - -msgid "Zones" -msgstr "Zonas" - -msgid "accept" -msgstr "aceitar" - -msgid "any" -msgstr "qualquer" - -msgid "any host" -msgstr "qualquer equipamento" - -msgid "any router IP" -msgstr "qualquer endereço IP do roteador" - -msgid "any zone" -msgstr "qualquer zona" - -msgid "don't track" -msgstr "não rastrear" - -msgid "drop" -msgstr "descartar" - -msgid "reject" -msgstr "rejeitar" - -# 20140621: edersg: tradução -msgid "traffic" -msgstr "Tráfego" diff --git a/package/luci/applications/luci-app-firewall/po/pt/firewall.po b/package/luci/applications/luci-app-firewall/po/pt/firewall.po deleted file mode 100644 index d803dfab10..0000000000 --- a/package/luci/applications/luci-app-firewall/po/pt/firewall.po +++ /dev/null @@ -1,505 +0,0 @@ -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: 2013-06-03 13:37+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s em %s" - -msgid "%s%s with %s" -msgstr "%s%s with %s" - -msgid "%s, %s in %s" -msgstr "%s, %s em %s" - -msgid "(Unnamed Entry)" -msgstr "(Entrada Sem Nome)" - -msgid "(Unnamed Rule)" -msgstr "(Regra Sem Nome)" - -msgid "(Unnamed SNAT)" -msgstr "(SNAT Sem Nome)" - -msgid "%d pkts. per %s" -msgstr "%d pkts. por %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "Acção" - -msgid "Add" -msgstr "Adicionar" - -msgid "Add and edit..." -msgstr "Adicionar e editar..." - -msgid "Advanced Settings" -msgstr "Definições Avançadas" - -msgid "Allow forward from source zones:" -msgstr "Permitir encaminhamento de zonas de origem" - -msgid "Allow forward to destination zones:" -msgstr "Permitir encaminhamento para zonas de destino" - -msgid "Any" -msgstr "Qualquer" - -msgid "Covered networks" -msgstr "Redes abrangidas" - -msgid "Custom Rules" -msgstr "Regras Personalizadas" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"As regras personalizadas permitem-lhe executar comandos arbitrários iptables " -"os quais não são possiveis de aplicar usando a framework da firewall. Os " -"comandos são executados a seguir ao reinicio da firewall, logo a seguir ao " -"conjunto de regras predefinidas serem carregadas." - -msgid "Destination IP address" -msgstr "Endereço IP de destino" - -msgid "Destination address" -msgstr "Endereço de destino" - -msgid "Destination port" -msgstr "Porta de destino" - -msgid "Destination zone" -msgstr "Zona de destino" - -msgid "Do not rewrite" -msgstr "Não re-escrever" - -msgid "Drop invalid packets" -msgstr "Cancelar pacotes inválidos" - -msgid "Enable" -msgstr "Ativar" - -msgid "Enable NAT Loopback" -msgstr "Ativar NAT Loopback" - -msgid "Enable SYN-flood protection" -msgstr "Ativar a Proteção SYN-flood" - -msgid "Enable logging on this zone" -msgstr "Ativar registo nesta zona" - -msgid "External IP address" -msgstr "Endereço IP externo" - -msgid "External port" -msgstr "Porta externa" - -msgid "External zone" -msgstr "Zona externa" - -msgid "Extra arguments" -msgstr "Argumentos extra" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall - Custom Rules" -msgstr "Firewall - Regras Personalizadas" - -msgid "Firewall - Port Forwards" -msgstr "Firewall - Encaminhamento de Portas" - -msgid "Firewall - Traffic Rules" -msgstr "Firewall - Regras de Tráfego" - -msgid "Firewall - Zone Settings" -msgstr "Firewall - Definições de Zona" - -msgid "Force connection tracking" -msgstr "Forçar rasto de ligação" - -msgid "Forward" -msgstr "Encaminhar" - -msgid "Forward to" -msgstr "Encaminhar para" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "De %s em %s" - -msgid "From %s in %s with source %s" -msgstr "De %s em %s com origem %s" - -msgid "From %s in %s with source %s and %s" -msgstr "De %s em %s com origem %s e %s" - -msgid "General Settings" -msgstr "Definições Gerais" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 only" -msgstr "Só IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Só IPv6" - -msgid "Input" -msgstr "Entrada" - -msgid "Inter-Zone Forwarding" -msgstr "Encaminhamento Inter-Zona" - -msgid "Internal IP address" -msgstr "Endereço IP interno" - -msgid "Internal port" -msgstr "Porta interna" - -msgid "Internal zone" -msgstr "Zona Interna" - -msgid "Limit log messages" -msgstr "Limitar registo de mensagens" - -#, fuzzy -msgid "MSS clamping" -msgstr "MSS-Correction" - -msgid "Masquerading" -msgstr "" - -msgid "Match" -msgstr "Corresponder" - -msgid "Match ICMP type" -msgstr "" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "" -"O tráfego encaminhado corresponde a uma determinada porta de destino ou " -"intervalo de portas." - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"O tráfego de entrada corresponde a uma dada porta de destino ou intervalo de " -"portas neste host" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" -"O tráfego de entrada corresponde a uma dada porta ou de um intervalo de " -"portas no host cliente." - -msgid "Monday" -msgstr "" - -msgid "Month Days" -msgstr "" - -msgid "Name" -msgstr "Nome" - -msgid "New SNAT rule" -msgstr "Nova regra SNAT" - -msgid "New forward rule" -msgstr "Nova regra de encaminhamento" - -msgid "New input rule" -msgstr "Nova regra de entrada" - -msgid "New port forward" -msgstr "Novo encaminhamento de porta" - -msgid "New source NAT" -msgstr "Nova origem de NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Só se tráfego de entrada corresponder ao endereço IP fornecido." - -msgid "Only match incoming traffic from these MACs." -msgstr "Só se o tráfego de entrada corresponder a um destes MACs." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Só se o tráfego de entrada corresponder a este IP ou intervalo." - -msgid "" -"Only match incoming traffic originating from the given source port or port " -"range on the client host" -msgstr "" -"Só se o tráfego de entrada corresponder à porta de origem fornecida ou de um " -"intervalo de portas no host cliente" - -msgid "Open ports on router" -msgstr "Abrir portas no router" - -msgid "Other..." -msgstr "Outro..." - -msgid "Output" -msgstr "Saída" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "Passa argumentos adicionais para o iptables. Usar com cuidado!" - -msgid "Port Forwards" -msgstr "Encaminhamento de Portas" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"O Encaminhamento de Portas permite que computadores remotos na internet se " -"liguem a um computador ou serviço especifico na rede privada (LAN)." - -msgid "Protocol" -msgstr "Protocolo" - -msgid "" -"Redirect matched incoming traffic to the given port on the internal host" -msgstr "" -"Redirecionar a entrada de trafego correspondente à porta fornecida no host " -"interno" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "Restringir a família de endereços" - -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 "Re-escrever para a origem %s" - -msgid "Rewrite to source %s, %s" -msgstr "Re-escrever para a origem %s, %s" - -msgid "SNAT IP address" -msgstr "Endereço IP da SNAT" - -msgid "SNAT port" -msgstr "Porta SNAT" - -msgid "Saturday" -msgstr "" - -msgid "Source IP address" -msgstr "Endereço IP de origem" - -msgid "Source MAC address" -msgstr "Endereço MAC de origem" - -msgid "Source NAT" -msgstr "NAT de origem" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"NAT de origem é uma forma especifica de mascarar que permite um controlo " -"melhorado sobre o IP de origem usado para o tráfego de saída, por exemplo, " -"para mapear múltiplos endereços para as sub-redes internas." - -msgid "Source address" -msgstr "Endereço de origem" - -msgid "Source port" -msgstr "Porta de origem" - -msgid "Source zone" -msgstr "Zona de origem" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"A firewall cria zonas sobre as interfaces de rede para controlar o fluxo do " -"tráfego." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"Esta página permite-lhe alterar as definições avançadas da regra de entrada " -"de tráfego, tal como correspondências de hosts de origem e destino." - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "Para %s no %s em este dispositivo" - -msgid "To %s in %s" -msgstr "Para %s em %s" - -msgid "To %s on this device" -msgstr "Para %s em este dispositivo" - -msgid "To %s, %s in %s" -msgstr "Para %s, %s em %s" - -msgid "To source IP" -msgstr "Para o IP de origem" - -msgid "To source port" -msgstr "Para a porta de origem" - -msgid "Traffic Rules" -msgstr "Regras de Tráfego" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"As Regras de Tráfego definem políticas para os pacotes que viajam entre " -"diferentes zonas, por exemplo, para rejeitar trafego entre certos hosts ou " -"para abrir portas WAN no router." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "Via %s" - -msgid "Via %s at %s" -msgstr "Via %s no %s" - -msgid "Wednesday" -msgstr "" - -msgid "Week Days" -msgstr "" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" -"Pode especificar múltiplos seleccionando \"-- personalizado --\" e depois " -"introduzir os protocolos separados por espaço." - -msgid "Zone %q" -msgstr "Zona %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Zona ⇒ Encaminhamentos" - -msgid "Zones" -msgstr "Zonas" - -msgid "accept" -msgstr "aceitar" - -msgid "any" -msgstr "qualquer" - -msgid "any host" -msgstr "qualquer host" - -msgid "any router IP" -msgstr "qualquer IP do router" - -msgid "any zone" -msgstr "qualquer zona" - -msgid "don't track" -msgstr "não seguir" - -msgid "drop" -msgstr "drop" - -msgid "reject" -msgstr "rejeitar" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/ro/firewall.po b/package/luci/applications/luci-app-firewall/po/ro/firewall.po deleted file mode 100644 index e0027de417..0000000000 --- a/package/luci/applications/luci-app-firewall/po/ro/firewall.po +++ /dev/null @@ -1,475 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-29 19:33+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s în %s" - -msgid "%s%s with %s" -msgstr "%s%s cu %s" - -msgid "%s, %s in %s" -msgstr "%s, %s în %s" - -msgid "(Unnamed Entry)" -msgstr "(Intrare fără nume)" - -msgid "(Unnamed Rule)" -msgstr "(Regulă fără nume)" - -msgid "(Unnamed SNAT)" -msgstr "(SNAT fără nume)" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "Acţiune" - -msgid "Add" -msgstr "Adaugă" - -msgid "Add and edit..." -msgstr "Adaugă şi editează..." - -msgid "Advanced Settings" -msgstr "Setări avansate" - -msgid "Allow forward from source zones:" -msgstr "Permite trecerea din zonele sursa." - -msgid "Allow forward to destination zones:" -msgstr "Permite trecerea catre zonele sursa." - -msgid "Any" -msgstr "Oricare" - -msgid "Covered networks" -msgstr "Retele acoperite" - -msgid "Custom Rules" -msgstr "Reguli suplimentare" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "Destinaţie adresă IP" - -msgid "Destination address" -msgstr "Destinaţie adresă" - -msgid "Destination port" -msgstr "Portul destinatie" - -msgid "Destination zone" -msgstr "Zona destinatie" - -msgid "Do not rewrite" -msgstr "Nu rescrie" - -msgid "Drop invalid packets" -msgstr "Descarcă pachetele invalide" - -msgid "Enable" -msgstr "Activează" - -msgid "Enable NAT Loopback" -msgstr "Activează loopback NAT" - -msgid "Enable SYN-flood protection" -msgstr "Activează protecţia SYN-flood" - -msgid "Enable logging on this zone" -msgstr "Activeaza log in aceasta zona" - -msgid "External IP address" -msgstr "Adresă IP externă" - -msgid "External port" -msgstr "Port extern" - -msgid "External zone" -msgstr "Zonă externă" - -msgid "Extra arguments" -msgstr "" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall - Custom Rules" -msgstr "Firewall - Reguli particularizate" - -msgid "Firewall - Port Forwards" -msgstr "" - -msgid "Firewall - Traffic Rules" -msgstr "" - -msgid "Firewall - Zone Settings" -msgstr "Setari zona la firewall" - -msgid "Force connection tracking" -msgstr "Forteaza urmarirea conexiunilor" - -msgid "Forward" -msgstr "Forward" - -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 "Setari generale" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 şi IPv6" - -msgid "IPv4 only" -msgstr "doar IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "doar IPv6" - -msgid "Input" -msgstr "Intrare" - -msgid "Inter-Zone Forwarding" -msgstr "Forwardare intre-zone" - -msgid "Internal IP address" -msgstr "Adresa IP interna" - -msgid "Internal port" -msgstr "Port intern" - -msgid "Internal zone" -msgstr "Zonă internă" - -msgid "Limit log messages" -msgstr "Limitează mesaje în log" - -msgid "MSS clamping" -msgstr "Ajustare MSS" - -msgid "Masquerading" -msgstr "Translatare" - -msgid "Match" -msgstr "Potrivire" - -msgid "Match ICMP type" -msgstr "Potriveste pe tipul de ICMP" - -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 "Nume" - -msgid "New SNAT rule" -msgstr "Regulă nouă SNAT" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "" - -msgid "New port forward" -msgstr "" - -msgid "New source NAT" -msgstr "" - -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 "Altele..." - -msgid "Output" -msgstr "Ieşire" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" - -msgid "Port Forwards" -msgstr "" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -msgid "Protocol" -msgstr "Protocol" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "" - -msgid "Rewrite matched traffic to the given address." -msgstr "" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" - -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 "Sursă adresă IP" - -msgid "Source MAC address" -msgstr "Sursă adresă MAC" - -msgid "Source NAT" -msgstr "Sursă NAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" - -msgid "Source address" -msgstr "Adresa sursa" - -msgid "Source port" -msgstr "Port sursa" - -msgid "Source zone" -msgstr "Zona sursa" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -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 "" - -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 "Zona %q" - -msgid "Zone ⇒ Forwardings" -msgstr "" - -msgid "Zones" -msgstr "Zone" - -msgid "accept" -msgstr "accept" - -msgid "any" -msgstr "oricare" - -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 "" diff --git a/package/luci/applications/luci-app-firewall/po/ru/firewall.po b/package/luci/applications/luci-app-firewall/po/ru/firewall.po deleted file mode 100644 index be16fece88..0000000000 --- a/package/luci/applications/luci-app-firewall/po/ru/firewall.po +++ /dev/null @@ -1,545 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: firewall\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2013-09-05 16:02+0200\n" -"Last-Translator: datasheet \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "%s in %s" -msgstr "%s в %s" - -msgid "%s%s with %s" -msgstr "%s%s с %s" - -msgid "%s, %s in %s" -msgstr "%s, %s в %s" - -msgid "(Unnamed Entry)" -msgstr "(Запись без имени)" - -msgid "(Unnamed Rule)" -msgstr "(Правило без имени)" - -msgid "(Unnamed SNAT)" -msgstr "(SNAT без имени)" - -msgid "%d pkts. per %s" -msgstr "%d пакетов за %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d пакетов за %s, подряд %d пакетов" - -msgid "%s and limit to %s" -msgstr "%s с пределом в %s" - -msgid "Action" -msgstr "Действие" - -msgid "Add" -msgstr "Добавить" - -msgid "Add and edit..." -msgstr "Добавить и редактировать..." - -msgid "Advanced Settings" -msgstr "Расширенные настройки" - -msgid "Allow forward from source zones:" -msgstr "Разрешить перенаправление из зон-источников:" - -msgid "Allow forward to destination zones:" -msgstr "Разрешить перенаправление в зоны назначения:" - -msgid "Any" -msgstr "Любой" - -msgid "Covered networks" -msgstr "Использовать сети" - -msgid "Custom Rules" -msgstr "Пользовательские правила" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Пользовательские правила позволяют выполнять произвольные команды iptables, " -"которые так или иначе не покрываются данным фреймворком межсетевого экрана. " -"Команды выполняются при каждом перезапуске межсетевого экрана, сразу после " -"того, как загружен набор правил по умолчанию." - -msgid "Destination IP address" -msgstr "IP-адрес назначения" - -msgid "Destination address" -msgstr "Адрес назначения" - -msgid "Destination port" -msgstr "Порт назначения" - -msgid "Destination zone" -msgstr "Зона назначения" - -msgid "Do not rewrite" -msgstr "Не перезаписывать" - -msgid "Drop invalid packets" -msgstr "Не пропускать некорректные пакеты" - -msgid "Enable" -msgstr "Включить" - -#, fuzzy -msgid "Enable NAT Loopback" -msgstr "Включить NAT Loopback" - -msgid "Enable SYN-flood protection" -msgstr "Включить защиту от SYN-flood атак" - -msgid "Enable logging on this zone" -msgstr "Включить журналирование в этой зоне" - -msgid "External IP address" -msgstr "Внешний IP-адрес" - -msgid "External port" -msgstr "Внешний порт" - -msgid "External zone" -msgstr "Внешняя зона" - -msgid "Extra arguments" -msgstr "Дополнительные аргументы" - -msgid "Firewall" -msgstr "Межсетевой экран" - -msgid "Firewall - Custom Rules" -msgstr "Межсетевой экран - Пользовательские правила" - -msgid "Firewall - Port Forwards" -msgstr "Межсетевой экран - Перенаправление портов" - -msgid "Firewall - Traffic Rules" -msgstr "Межсетевой экран - Правила для трафика" - -msgid "Firewall - Zone Settings" -msgstr "Межсетевой экран - Настройка зон" - -msgid "Force connection tracking" -msgstr "Включить отслеживание соединений" - -msgid "Forward" -msgstr "Перенаправление" - -msgid "Forward to" -msgstr "Перенаправлять в" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "Из %s в %s" - -msgid "From %s in %s with source %s" -msgstr "Из %s в %s с источником %s" - -msgid "From %s in %s with source %s and %s" -msgstr "Из %s в %s с источниками %s и %s" - -msgid "General Settings" -msgstr "Общие настройки" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 и IPv6" - -msgid "IPv4 only" -msgstr "Только IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Только IPv6" - -msgid "Input" -msgstr "Входящий" - -msgid "Inter-Zone Forwarding" -msgstr "Перенаправление между зонами" - -msgid "Internal IP address" -msgstr "Внутренний IP-адрес" - -msgid "Internal port" -msgstr "Внутренний порт" - -msgid "Internal zone" -msgstr "Внутренняя зона" - -msgid "Limit log messages" -msgstr "Ограничить журнал сообщений" - -msgid "MSS clamping" -msgstr "Ограничение MSS" - -msgid "Masquerading" -msgstr "Маскарадинг" - -#, fuzzy -msgid "Match" -msgstr "Выбирать" - -msgid "Match ICMP type" -msgstr "Соответствовать ICMP типу" - -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" - -msgid "New forward rule" -msgstr "Новое правило перенаправления" - -msgid "New input rule" -msgstr "Новое правило для входящего трафика" - -msgid "New port forward" -msgstr "Новое перенаправление порта" - -msgid "New source NAT" -msgstr "Новый SNAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Выбирать только входящий трафик, направленный на указанный IP-адрес." - -msgid "Only match incoming traffic from these MACs." -msgstr "Выбирать только входящий трафик от этих MAC-адресов." - -msgid "Only match incoming traffic from this IP or range." -msgstr "" -"Выбирать только входящий трафик от этого IP-адреса или диапазона адресов." - -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 "Перенаправления портов" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"Перенаправленные портов позволяет удалённым компьютерам из Интернета " -"соединяться с компьютером или службой внутри частной локальной сети." - -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 "Использовать маскарадинг только для указанных подсетей-получателей" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Использовать маскарадинг только для указанных подсетей-отправителей" - -msgid "Restrict to address family" -msgstr "Использовать только семейство протоколов" - -msgid "Rewrite matched traffic to the given address." -msgstr "Перенаправлять соответствующий трафик к указанному адресу." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Перенаправлять соответствующий трафик к указанному порту источника. Может " -"быть пустым в случае, если необходимо перенаправить только IP-адрес." - -msgid "Rewrite to source %s" -msgstr "Перенаправлять к источнику %s" - -msgid "Rewrite to source %s, %s" -msgstr "Перенаправлять к источнику %s, %s" - -msgid "SNAT IP address" -msgstr "IP-адрес SNAT" - -msgid "SNAT port" -msgstr "Порт SNAT" - -msgid "Saturday" -msgstr "" - -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua # -# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# msgid "Traffic Redirection" -# msgstr "" -# msgid "" -# "Traffic redirection allows you to change the destination address of " -# "forwarded packets." -# msgstr "" -# msgid "Overview" -# msgstr "" -# msgid "Name" -# msgstr "" -# msgid "Source zone" -# msgstr "" -# msgid "Source MAC-address" -# msgstr "" -# msgid "Source port" -# msgstr "" -# msgid "Protocol" -# msgstr "" -msgid "Source IP address" -msgstr "IP-адрес источника" - -msgid "Source MAC address" -msgstr "MAC-адрес источника" - -msgid "Source NAT" -msgstr "SNAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"SNAT - это особая форма маскарадинга (masquerading), позволяющая " -"осуществлять детальный контроль над IP-адресом источника для исходящего " -"трафика, например, перенаправление нескольких WAN-адресов во внутреннюю " -"подсеть." - -msgid "Source address" -msgstr "Адрес источника" - -msgid "Source port" -msgstr "Порт источника" - -msgid "Source zone" -msgstr "Зона-источник" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "Межсетевой экран создает зоны в вашей сети для контроля трафика." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Данные настройки управляют перенаправлением между этой (%s) и другими " -"зонами. Трафиком зон-получателей является трафик исходящий " -"из %q. Трафиком зон-источников является трафик " -"направленый в %q. Перенаправление является " -"однонаправленным, то есть перанаправление из lan в wan не " -"допускает перенаправление трафика из wan в lan." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"На этой странице можно изменить расширенные настройки перенаправления " -"портов. В большинстве случаев нет необходимости изменять эти параметры." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"На этой странице можно изменить расширенные настройки правил для трафика. В " -"большинстве случаев нет необходимости изменять эти параметры." - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Данная секция позволяет изменять общие настройки %q. Опции входящий " -"и исходящий устанавливают политику по умолчанию для входящего и " -"исходящего трафика. Опция перенаправление позволяет установить " -"политику для трафика, который перенаправляется через несколько сетей в зоне. " -"Пункт использовать сети позволяет указать, какие сети являются " -"частью данной зоны." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "К %s, порту %s на этом устройстве" - -msgid "To %s in %s" -msgstr "К %s в %s" - -msgid "To %s on this device" -msgstr "К %s на этом устройстве" - -msgid "To %s, %s in %s" -msgstr "К %s, %s в %s" - -msgid "To source IP" -msgstr "К IP-адресу источника" - -msgid "To source port" -msgstr "К порту источника" - -msgid "Traffic Rules" -msgstr "Правила для трафика" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"Правила для трафика определяют политику прохождения пакетов между разными " -"зонами, например, запрет трафика между некоторыми хостами или открытие WAN-" -"портов маршрутизатора." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "Через %s" - -msgid "Via %s at %s" -msgstr "Через %s, порт %s" - -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 "Зона %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Зона ⇒ Перенаправления" - -msgid "Zones" -msgstr "Зоны" - -msgid "accept" -msgstr "принимать" - -msgid "any" -msgstr "любой" - -msgid "any host" -msgstr "любого хоста" - -msgid "any router IP" -msgstr "любой IP-адрес маршрутизатора" - -msgid "any zone" -msgstr "любой зоны" - -msgid "don't track" -msgstr "не отслеживать" - -msgid "drop" -msgstr "не обрабатывать" - -msgid "reject" -msgstr "отвергать" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/sk/firewall.po b/package/luci/applications/luci-app-firewall/po/sk/firewall.po deleted file mode 100644 index 1dda5bf53a..0000000000 --- a/package/luci/applications/luci-app-firewall/po/sk/firewall.po +++ /dev/null @@ -1,471 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "%s in %s" -msgstr "" - -msgid "%s%s with %s" -msgstr "" - -msgid "%s, %s in %s" -msgstr "" - -msgid "(Unnamed Entry)" -msgstr "" - -msgid "(Unnamed Rule)" -msgstr "" - -msgid "(Unnamed SNAT)" -msgstr "" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add and edit..." -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow forward from source zones:" -msgstr "" - -msgid "Allow forward to destination zones:" -msgstr "" - -msgid "Any" -msgstr "" - -msgid "Covered networks" -msgstr "" - -msgid "Custom Rules" -msgstr "" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "" - -msgid "Destination address" -msgstr "" - -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 "" - -msgid "Enable SYN-flood protection" -msgstr "" - -msgid "Enable logging on this zone" -msgstr "" - -msgid "External IP address" -msgstr "" - -msgid "External port" -msgstr "" - -msgid "External zone" -msgstr "" - -msgid "Extra arguments" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall - Custom Rules" -msgstr "" - -msgid "Firewall - Port Forwards" -msgstr "" - -msgid "Firewall - Traffic Rules" -msgstr "" - -msgid "Firewall - Zone Settings" -msgstr "" - -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 "" - -msgid "Internal port" -msgstr "" - -msgid "Internal zone" -msgstr "" - -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 "" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "" - -msgid "New port forward" -msgstr "" - -msgid "New source NAT" -msgstr "" - -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 "" - -msgid "Port Forwards" -msgstr "" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "" - -msgid "Rewrite matched traffic to the given address." -msgstr "" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" - -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 "" - -msgid "Source MAC address" -msgstr "" - -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 "" - -msgid "Source address" -msgstr "" - -msgid "Source port" -msgstr "" - -msgid "Source zone" -msgstr "" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -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 "" - -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 "" - -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 "" diff --git a/package/luci/applications/luci-app-firewall/po/sv/firewall.po b/package/luci/applications/luci-app-firewall/po/sv/firewall.po deleted file mode 100644 index f9fd920727..0000000000 --- a/package/luci/applications/luci-app-firewall/po/sv/firewall.po +++ /dev/null @@ -1,477 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Kristoffer Grundström \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "%s in %s" -msgstr "%s i %s" - -msgid "%s%s with %s" -msgstr "%s%s med %s" - -msgid "%s, %s in %s" -msgstr "%2, %s i %s" - -msgid "(Unnamed Entry)" -msgstr "(Namnlös post)" - -msgid "(Unnamed Rule)" -msgstr "(Namnlös regel)" - -msgid "(Unnamed SNAT)" -msgstr "(Namnlös SNAT)" - -msgid "%d pkts. per %s" -msgstr "%d pkt. per %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d pkt. per %s, brustna %d pkt." - -msgid "%s and limit to %s" -msgstr "%s och gränsen till %s" - -msgid "Action" -msgstr "Åtgärd" - -msgid "Add" -msgstr "Lägg till" - -msgid "Add and edit..." -msgstr "Lägg till och redigera..." - -msgid "Advanced Settings" -msgstr "Avancerade inställningar" - -msgid "Allow forward from source zones:" -msgstr "Tillåt vidarebefordring från källzonerna:" - -msgid "Allow forward to destination zones:" -msgstr "Till vidarebefordring till destinationszonerna::" - -msgid "Any" -msgstr "Alla" - -msgid "Covered networks" -msgstr "Nätverk som omfattas" - -msgid "Custom Rules" -msgstr "Anpassade regler" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "Destinationens IP-adress" - -msgid "Destination address" -msgstr "Destinationens adress" - -msgid "Destination port" -msgstr "Destinationsport" - -msgid "Destination zone" -msgstr "Destinationens zon" - -msgid "Do not rewrite" -msgstr "Skriv inte om igen" - -msgid "Drop invalid packets" -msgstr "Släpp ogiltiga paket" - -msgid "Enable" -msgstr "Aktivera" - -msgid "Enable NAT Loopback" -msgstr "" - -msgid "Enable SYN-flood protection" -msgstr "" - -msgid "Enable logging on this zone" -msgstr "Aktivera loggning i den här zonen" - -msgid "External IP address" -msgstr "Extern IP-adress" - -msgid "External port" -msgstr "Extern port" - -msgid "External zone" -msgstr "Extern zon" - -msgid "Extra arguments" -msgstr "Extra argument" - -msgid "Firewall" -msgstr "Brandvägg" - -msgid "Firewall - Custom Rules" -msgstr "Brandvägg - Anpassade regler" - -msgid "Firewall - Port Forwards" -msgstr "Brandvägg - Vidarebefordring av port" - -msgid "Firewall - Traffic Rules" -msgstr "Brandvägg - Trafikregler" - -msgid "Firewall - Zone Settings" -msgstr "Brandvägg - Zoninställningar" - -msgid "Force connection tracking" -msgstr "" - -msgid "Forward" -msgstr "Vidarebefordra" - -msgid "Forward to" -msgstr "Vidarebefordra till" - -msgid "Friday" -msgstr "Fredag" - -msgid "From %s in %s" -msgstr "Från %s i %s" - -msgid "From %s in %s with source %s" -msgstr "Från %s i %s med källa %s" - -msgid "From %s in %s with source %s and %s" -msgstr "Från %s i %s med källa %s och %s" - -msgid "General Settings" -msgstr "Generella inställningar" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 och IPv6" - -msgid "IPv4 only" -msgstr "Endast IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Endast IPv6" - -msgid "Input" -msgstr "Inmatning" - -msgid "Inter-Zone Forwarding" -msgstr "" - -msgid "Internal IP address" -msgstr "Intern IP-adress" - -msgid "Internal port" -msgstr "Intern port" - -msgid "Internal zone" -msgstr "Intern zon" - -msgid "Limit log messages" -msgstr "Begränsa loggmeddelanden" - -msgid "MSS clamping" -msgstr "" - -msgid "Masquerading" -msgstr "Maskering" - -msgid "Match" -msgstr "Matcha" - -msgid "Match ICMP type" -msgstr "Matchar ICMP-typ" - -msgid "Match forwarded traffic to the given destination port or port range." -msgstr "" -"Matcha vidarebefordrad trafik till den angivna destinationsporten eller " -"portens räckvidd." - -msgid "" -"Match incoming traffic directed at the given destination port or port range " -"on this host" -msgstr "" -"Matcha inkommande trafik dirigerad till den angivna destinationsporten eller " -"portens räckvidd på den här värden" - -msgid "" -"Match incoming traffic originating from the given source port or port range " -"on the client host." -msgstr "" - -msgid "Monday" -msgstr "Måndag" - -msgid "Month Days" -msgstr "Dagar i månaden" - -msgid "Name" -msgstr "Namn" - -msgid "New SNAT rule" -msgstr "Ny SNAT-regel" - -msgid "New forward rule" -msgstr "Ny regel för vidarebefordring" - -msgid "New input rule" -msgstr "Ny inmatningsregel" - -msgid "New port forward" -msgstr "Ny vidarebefordring av port" - -msgid "New source NAT" -msgstr "Ny käll-NAT" - -msgid "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 "" -"Matcha endast inkommande trafik från den här IP-adressen eller räckvidden." - -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 "Öppna portar i router" - -msgid "Other..." -msgstr "Andra..." - -msgid "Output" -msgstr "Utmatning" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" - -msgid "Port Forwards" -msgstr "Vidarebefordringar av port" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -msgid "Protocol" -msgstr "Protokoll" - -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 "Starta om brandvägg" - -msgid "Restrict Masquerading to given destination subnets" -msgstr "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "Begränsa till adressfamilj" - -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 "Skriv om igen till källan %s" - -msgid "Rewrite to source %s, %s" -msgstr "" - -msgid "SNAT IP address" -msgstr "IP-adress för SNAT" - -msgid "SNAT port" -msgstr "SNAT-port" - -msgid "Saturday" -msgstr "Lördag" - -msgid "Source IP address" -msgstr "IP-adress för källa" - -msgid "Source MAC address" -msgstr "MAC-adress för källa" - -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 "" - -msgid "Source address" -msgstr "" - -msgid "Source port" -msgstr "" - -msgid "Source zone" -msgstr "" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "Startdatum (åååå-mm-dd)" - -msgid "Start Time (hh:mm:ss)" -msgstr "Starttid (tt:mm:ss)" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "Stopptid (åååå-mm-dd)" - -msgid "Stop Time (hh:mm:ss)" -msgstr "Stopptid (tt:mm:ss)" - -msgid "Sunday" -msgstr "Söndag" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "Torsdag" - -msgid "Time in UTC" -msgstr "Tid enligt UTC" - -msgid "To %s at %s on this device" -msgstr "Till %s vid %s på den här enheten" - -msgid "To %s in %s" -msgstr "Till %s i %s" - -msgid "To %s on this device" -msgstr "Till %s på den här enheten" - -msgid "To %s, %s in %s" -msgstr "Till %s, %s i %s" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "Trafikregler" - -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 "" - -msgid "Tuesday" -msgstr "Tisdag" - -msgid "Via %s" -msgstr "Via %s" - -msgid "Via %s at %s" -msgstr "" - -msgid "Wednesday" -msgstr "Onsdag" - -msgid "Week Days" -msgstr "Veckodagar" - -msgid "" -"You may specify multiple by selecting \"-- custom --\" and then entering " -"protocols separated by space." -msgstr "" - -msgid "Zone %q" -msgstr "Zon %q" - -msgid "Zone ⇒ Forwardings" -msgstr "" - -msgid "Zones" -msgstr "Zoner" - -msgid "accept" -msgstr "acceptera" - -msgid "any" -msgstr "alla" - -msgid "any host" -msgstr "alla värdar" - -msgid "any router IP" -msgstr "" - -msgid "any zone" -msgstr "alla zoner" - -msgid "don't track" -msgstr "spåra inte" - -msgid "drop" -msgstr "släpp" - -msgid "reject" -msgstr "neka" - -msgid "traffic" -msgstr "trafik" diff --git a/package/luci/applications/luci-app-firewall/po/templates/firewall.pot b/package/luci/applications/luci-app-firewall/po/templates/firewall.pot deleted file mode 100644 index bec02d4486..0000000000 --- a/package/luci/applications/luci-app-firewall/po/templates/firewall.pot +++ /dev/null @@ -1,464 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "%s in %s" -msgstr "" - -msgid "%s%s with %s" -msgstr "" - -msgid "%s, %s in %s" -msgstr "" - -msgid "(Unnamed Entry)" -msgstr "" - -msgid "(Unnamed Rule)" -msgstr "" - -msgid "(Unnamed SNAT)" -msgstr "" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add and edit..." -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow forward from source zones:" -msgstr "" - -msgid "Allow forward to destination zones:" -msgstr "" - -msgid "Any" -msgstr "" - -msgid "Covered networks" -msgstr "" - -msgid "Custom Rules" -msgstr "" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "" - -msgid "Destination address" -msgstr "" - -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 "" - -msgid "Enable SYN-flood protection" -msgstr "" - -msgid "Enable logging on this zone" -msgstr "" - -msgid "External IP address" -msgstr "" - -msgid "External port" -msgstr "" - -msgid "External zone" -msgstr "" - -msgid "Extra arguments" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall - Custom Rules" -msgstr "" - -msgid "Firewall - Port Forwards" -msgstr "" - -msgid "Firewall - Traffic Rules" -msgstr "" - -msgid "Firewall - Zone Settings" -msgstr "" - -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 "" - -msgid "Internal port" -msgstr "" - -msgid "Internal zone" -msgstr "" - -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 "" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "" - -msgid "New port forward" -msgstr "" - -msgid "New source NAT" -msgstr "" - -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 "" - -msgid "Port Forwards" -msgstr "" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "" - -msgid "Rewrite matched traffic to the given address." -msgstr "" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" - -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 "" - -msgid "Source MAC address" -msgstr "" - -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 "" - -msgid "Source address" -msgstr "" - -msgid "Source port" -msgstr "" - -msgid "Source zone" -msgstr "" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -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 "" - -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 "" - -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 "" diff --git a/package/luci/applications/luci-app-firewall/po/tr/firewall.po b/package/luci/applications/luci-app-firewall/po/tr/firewall.po deleted file mode 100644 index 5bb897cc28..0000000000 --- a/package/luci/applications/luci-app-firewall/po/tr/firewall.po +++ /dev/null @@ -1,471 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "%s in %s" -msgstr "" - -msgid "%s%s with %s" -msgstr "" - -msgid "%s, %s in %s" -msgstr "" - -msgid "(Unnamed Entry)" -msgstr "" - -msgid "(Unnamed Rule)" -msgstr "" - -msgid "(Unnamed SNAT)" -msgstr "" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add and edit..." -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow forward from source zones:" -msgstr "" - -msgid "Allow forward to destination zones:" -msgstr "" - -msgid "Any" -msgstr "" - -msgid "Covered networks" -msgstr "" - -msgid "Custom Rules" -msgstr "" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "" - -msgid "Destination address" -msgstr "" - -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 "" - -msgid "Enable SYN-flood protection" -msgstr "" - -msgid "Enable logging on this zone" -msgstr "" - -msgid "External IP address" -msgstr "" - -msgid "External port" -msgstr "" - -msgid "External zone" -msgstr "" - -msgid "Extra arguments" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall - Custom Rules" -msgstr "" - -msgid "Firewall - Port Forwards" -msgstr "" - -msgid "Firewall - Traffic Rules" -msgstr "" - -msgid "Firewall - Zone Settings" -msgstr "" - -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 "" - -msgid "Internal port" -msgstr "" - -msgid "Internal zone" -msgstr "" - -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 "" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "" - -msgid "New port forward" -msgstr "" - -msgid "New source NAT" -msgstr "" - -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 "" - -msgid "Port Forwards" -msgstr "" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "" - -msgid "Rewrite matched traffic to the given address." -msgstr "" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" - -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 "" - -msgid "Source MAC address" -msgstr "" - -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 "" - -msgid "Source address" -msgstr "" - -msgid "Source port" -msgstr "" - -msgid "Source zone" -msgstr "" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -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 "" - -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 "" - -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 "" diff --git a/package/luci/applications/luci-app-firewall/po/uk/firewall.po b/package/luci/applications/luci-app-firewall/po/uk/firewall.po deleted file mode 100644 index 8ca1428e71..0000000000 --- a/package/luci/applications/luci-app-firewall/po/uk/firewall.po +++ /dev/null @@ -1,519 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-12-29 12:53+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s in %s" -msgstr "%s у %s" - -msgid "%s%s with %s" -msgstr "%s%s із %s" - -msgid "%s, %s in %s" -msgstr "%s, %s у %s" - -msgid "(Unnamed Entry)" -msgstr "(Запис без імені)" - -msgid "(Unnamed Rule)" -msgstr "(Правило без імені)" - -msgid "(Unnamed SNAT)" -msgstr "(SNAT без імені)" - -msgid "%d pkts. per %s" -msgstr "%d пакетів за %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d пакетів за %s, підряд %d пакетів" - -msgid "%s and limit to %s" -msgstr "%s з лімітом %s" - -msgid "Action" -msgstr "Дія" - -msgid "Add" -msgstr "Додати" - -msgid "Add and edit..." -msgstr "Додати та редагувати..." - -msgid "Advanced Settings" -msgstr "Розширені настройки" - -msgid "Allow forward from source zones:" -msgstr "Дозволити спрямовування від зон-джерел:" - -msgid "Allow forward to destination zones:" -msgstr "Дозволити спрямовування до зон призначення:" - -msgid "Any" -msgstr "Будь-який" - -msgid "Covered networks" -msgstr "Покриті мережі" - -msgid "Custom Rules" -msgstr "Настроювані правила" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"Настроювані правила дозволяють виконувати довільні команди iptables, які в іншому випадку не охоплені в межах брандмауера. Команди " -"виконуються після кожного перезавантаження брандмауера, відразу після " -"завантаження типового набору правил." - -msgid "Destination IP address" -msgstr "IP-адреса призначення" - -msgid "Destination address" -msgstr "Адреса призначення" - -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" - -msgid "Enable logging on this zone" -msgstr "Увімкнути реєстрування у цій зоні" - -msgid "External IP address" -msgstr "Зовнішня IP-адреса" - -msgid "External port" -msgstr "Зовнішній порт" - -msgid "External zone" -msgstr "Зовнішня зона" - -msgid "Extra arguments" -msgstr "Додаткові аргументи" - -msgid "Firewall" -msgstr "Брандмауер" - -msgid "Firewall - Custom Rules" -msgstr "Брандмауер — Настроювані правила" - -msgid "Firewall - Port Forwards" -msgstr "Брандмауер — Спрямовування портів" - -msgid "Firewall - Traffic Rules" -msgstr "Брандмауер — Правила трафіка" - -msgid "Firewall - Zone Settings" -msgstr "Брандмауер — Параметри зон" - -msgid "Force connection tracking" -msgstr "Увімкнути відстеження з'єднань" - -msgid "Forward" -msgstr "Спрямовування" - -msgid "Forward to" -msgstr "спрямовування до" - -msgid "Friday" -msgstr "" - -msgid "From %s in %s" -msgstr "%s у %s" - -msgid "From %s in %s with source %s" -msgstr "%s у %s з вихідним %s" - -msgid "From %s in %s with source %s and %s" -msgstr "%s у %s з вихідним %s та %s" - -msgid "General Settings" -msgstr "Загальні настройки" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 та IPv6" - -msgid "IPv4 only" -msgstr "Лише IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "Лише IPv6" - -msgid "Input" -msgstr "Вхідний" - -msgid "Inter-Zone Forwarding" -msgstr "Спрямовування крізь зони" - -msgid "Internal IP address" -msgstr "Внутрішня IP-адреса" - -msgid "Internal port" -msgstr "Внутрішній порт" - -msgid "Internal zone" -msgstr "Внутрішня зона" - -msgid "Limit log messages" -msgstr "Обмеження повідомлень журналу" - -msgid "MSS clamping" -msgstr "Затискання MSS" - -msgid "Masquerading" -msgstr "Підміна" - -msgid "Match" -msgstr "Зіставляти" - -msgid "Match ICMP type" -msgstr "Зіставляти ICMP типу" - -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" - -msgid "New forward rule" -msgstr "Нове правило спрямовування" - -msgid "New input rule" -msgstr "Нове вхідне правило" - -msgid "New port forward" -msgstr "Нове спрямовування порту" - -msgid "New source NAT" -msgstr "Новий NAT джерела" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "Зіставляти тільки вхідний трафік, спрямований на задану IP-адресу." - -msgid "Only match incoming traffic from these MACs." -msgstr "Зіставляти тільки вхідний трафік від цих MAC-адрес." - -msgid "Only match incoming traffic from this IP or range." -msgstr "Зіставляти тільки вхідний трафік від цього IP чи діапазону." - -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 "Спрямовування портів" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"Спрямовування портів дозволяє віддаленим комп'ютерам з Інтернету " -"підключатися до певного комп'ютера або служби у приватній мережі." - -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 "Обмежити підміну заданими підмережами призначення" - -msgid "Restrict Masquerading to given source subnets" -msgstr "Обмежити підміну заданими вихідними підмережами" - -msgid "Restrict to address family" -msgstr "Обмежити сімейство протоколів" - -msgid "Rewrite matched traffic to the given address." -msgstr "Переписувати зіставлений трафік на вказану адресу." - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" -"Переписувати зіставлений трафік на вказаний порт джерела. Може залишатися " -"порожнім, щоб переписувати тільки IP-адресу." - -msgid "Rewrite to source %s" -msgstr "перезапис на вихідний %s" - -msgid "Rewrite to source %s, %s" -msgstr "перезапис на вихідний %s, %s" - -msgid "SNAT IP address" -msgstr "IP-адреса SNAT" - -msgid "SNAT port" -msgstr "Порт SNAT" - -msgid "Saturday" -msgstr "" - -msgid "Source IP address" -msgstr "IP-адреса джерела" - -msgid "Source MAC address" -msgstr "MAC-адреса джерела" - -msgid "Source NAT" -msgstr "NAT джерела" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"NAT джерела є специфічною формою маскування, яка дозволяє мати детальний " -"контроль над IP джерела, що використовуються для вихідного трафіку, " -"наприклад, для зіставлення кількох WAN-адрес внутрішнім підмережам." - -msgid "Source address" -msgstr "Адреса джерела" - -msgid "Source port" -msgstr "Порт джерела" - -msgid "Source zone" -msgstr "Зона-джерело" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"Брандмауер створює зони поверх ваших мережевих інтерфейсів для управління " -"потоком мережевого трафіку." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"Опції, наведені нижче, управляють політиками спрямовування між цією (%s) та " -"іншими зонами. Зони призначення покриваються трафіком, що " -"виходить з %q. Зони-джерела покриваються трафіком " -"з інших зон, спрямованим на %q. Правила спрямування є " -"односпрямованим, тобто, спрямування від LAN до WAN не " -"означає, що є також дозвіл спрямовувати від WAN в LAN." - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" -"На цій сторінці можна змінити додаткові властивості елемента спрямовування " -"портів. У більшості випадків змінювати ці параметри немає необхідності." - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" -"На цій сторінці можна змінити додаткові властивості елемента правил трафіка, " -"таких як відповідні параметри джерела та вузлів призначення." - -#, fuzzy -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"Цей розділ визначає загальні властивості %q. Параметри вхідний і " -"вихідний задають типову політику для трафіку на вході й виході з " -"цієї зони, а параметр \"спрямовування\" описує політику спрямовування " -"трафіку між різними мережами в межах зони. Пункт вкриті мережі " -"визначає, які доступні мережі є членами цієї зони." - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "%s на %s цього пристрою" - -msgid "To %s in %s" -msgstr "%s у %s" - -msgid "To %s on this device" -msgstr "%s на цього пристрою" - -msgid "To %s, %s in %s" -msgstr "%s, %s у %s" - -msgid "To source IP" -msgstr "До IP джерела" - -msgid "To source port" -msgstr "До порту джерела" - -msgid "Traffic Rules" -msgstr "Правила трафіка" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"Правила трафіка визначають політику для пакетів, що пересилаються між " -"різними зонами, наприклад, відхиляти трафік між певними вузлами або відкрити " -"порти WAN на маршрутизаторі." - -msgid "Tuesday" -msgstr "" - -msgid "Via %s" -msgstr "Через %s" - -msgid "Via %s at %s" -msgstr "Через %s на %s" - -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 "Зона %q" - -msgid "Zone ⇒ Forwardings" -msgstr "Зона ⇒ Спрямовування" - -msgid "Zones" -msgstr "Зони" - -msgid "accept" -msgstr "приймати" - -msgid "any" -msgstr "будь-який" - -msgid "any host" -msgstr "будь-який вузол" - -msgid "any router IP" -msgstr "будь-який IP роутера" - -msgid "any zone" -msgstr "будь-якій зоні" - -msgid "don't track" -msgstr "не відстеж." - -msgid "drop" -msgstr "опускати" - -msgid "reject" -msgstr "відкидати" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/vi/firewall.po b/package/luci/applications/luci-app-firewall/po/vi/firewall.po deleted file mode 100644 index 9509613f23..0000000000 --- a/package/luci/applications/luci-app-firewall/po/vi/firewall.po +++ /dev/null @@ -1,486 +0,0 @@ -# luci-fw.pot -# generated from ./applications/luci-fw/luasrc/i18n/luci-fw.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-30 17:00+0200\n" -"PO-Revision-Date: 2009-08-16 14:02+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "%s in %s" -msgstr "" - -msgid "%s%s with %s" -msgstr "" - -msgid "%s, %s in %s" -msgstr "" - -msgid "(Unnamed Entry)" -msgstr "" - -msgid "(Unnamed Rule)" -msgstr "" - -msgid "(Unnamed SNAT)" -msgstr "" - -msgid "%d pkts. per %s" -msgstr "" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "" - -msgid "%s and limit to %s" -msgstr "" - -msgid "Action" -msgstr "Action" - -msgid "Add" -msgstr "" - -msgid "Add and edit..." -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow forward from source zones:" -msgstr "" - -msgid "Allow forward to destination zones:" -msgstr "" - -msgid "Any" -msgstr "" - -msgid "Covered networks" -msgstr "" - -msgid "Custom Rules" -msgstr "" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" - -msgid "Destination IP address" -msgstr "" - -msgid "Destination address" -msgstr "Địa chỉ điểm đến" - -msgid "Destination port" -msgstr "Cổng điểm đến" - -#, fuzzy -msgid "Destination zone" -msgstr "Điểm đến" - -msgid "Do not rewrite" -msgstr "" - -msgid "Drop invalid packets" -msgstr "Bỏ qua nhưng gói không hợp lý" - -msgid "Enable" -msgstr "" - -msgid "Enable NAT Loopback" -msgstr "" - -#, fuzzy -msgid "Enable SYN-flood protection" -msgstr "SYN-flood bảo vệ " - -msgid "Enable logging on this zone" -msgstr "" - -msgid "External IP address" -msgstr "" - -msgid "External port" -msgstr "External port" - -msgid "External zone" -msgstr "" - -msgid "Extra arguments" -msgstr "" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall - Custom Rules" -msgstr "" - -msgid "Firewall - Port Forwards" -msgstr "" - -msgid "Firewall - Traffic Rules" -msgstr "" - -msgid "Firewall - Zone Settings" -msgstr "" - -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 "Input" - -msgid "Inter-Zone Forwarding" -msgstr "" - -#, fuzzy -msgid "Internal IP address" -msgstr "Internal address" - -#, fuzzy -msgid "Internal port" -msgstr "External port" - -msgid "Internal zone" -msgstr "" - -msgid "Limit log messages" -msgstr "" - -#, fuzzy -msgid "MSS clamping" -msgstr "MSS Clamping" - -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 "" - -msgid "New forward rule" -msgstr "" - -msgid "New input rule" -msgstr "" - -msgid "New port forward" -msgstr "" - -msgid "New source NAT" -msgstr "" - -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 "Output" - -msgid "Passes additional arguments to iptables. Use with care!" -msgstr "" - -msgid "Port Forwards" -msgstr "" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" - -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 "" - -msgid "Restrict Masquerading to given source subnets" -msgstr "" - -msgid "Restrict to address family" -msgstr "" - -msgid "Rewrite matched traffic to the given address." -msgstr "" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "" - -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 "" - -#, fuzzy -msgid "Source IP address" -msgstr "Đỉa chỉ MAC nguồn" - -msgid "Source MAC address" -msgstr "" - -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 "" - -#, fuzzy -msgid "Source address" -msgstr "Đỉa chỉ MAC nguồn" - -msgid "Source port" -msgstr "Cổng nguồn" - -#, fuzzy -msgid "Source zone" -msgstr "Cổng nguồn" - -msgid "Start Date (yyyy-mm-dd)" -msgstr "" - -msgid "Start Time (hh:mm:ss)" -msgstr "" - -msgid "Stop Date (yyyy-mm-dd)" -msgstr "" - -msgid "Stop Time (hh:mm:ss)" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "" -"The firewall creates zones over your network interfaces to control network " -"traffic flow." -msgstr "" -"The firewall tạo zones trên giao diện mạng lưới để điều triển sự dòng lưu " -"thông của mạng." - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Time in UTC" -msgstr "" - -msgid "To %s at %s on this device" -msgstr "" - -msgid "To %s in %s" -msgstr "" - -msgid "To %s on this device" -msgstr "" - -msgid "To %s, %s in %s" -msgstr "" - -msgid "To source IP" -msgstr "" - -msgid "To source port" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -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 "" - -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 "Zones" - -msgid "accept" -msgstr "chấp nhận" - -msgid "any" -msgstr "" - -msgid "any host" -msgstr "" - -msgid "any router IP" -msgstr "" - -msgid "any zone" -msgstr "" - -msgid "don't track" -msgstr "" - -msgid "drop" -msgstr "drop" - -msgid "reject" -msgstr "Không chấp nhận" - -msgid "traffic" -msgstr "" diff --git a/package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po b/package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po deleted file mode 100644 index f21d49250a..0000000000 --- a/package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po +++ /dev/null @@ -1,488 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2017-10-28 18:56+0800\n" -"X-Generator: Gtranslator 2.91.7\n" - -msgid "%s in %s" -msgstr "%s 位于 %s" - -msgid "%s%s with %s" -msgstr "%s%s 和 %s" - -msgid "%s, %s in %s" -msgstr "%s, %s 位于 %s" - -msgid "(Unnamed Entry)" -msgstr "(未命名条目)" - -msgid "(Unnamed Rule)" -msgstr "(未命名规则)" - -msgid "(Unnamed SNAT)" -msgstr "(未命名 SNAT)" - -msgid "%d pkts. per %s" -msgstr "%d 数据包。每 %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d 数据包。每 %s,突发 %d 数据包。" - -msgid "%s and limit to %s" -msgstr "%s 并限制到 %s" - -msgid "Action" -msgstr "动作" - -msgid "Add" -msgstr "添加" - -msgid "Add and edit..." -msgstr "添加并编辑..." - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Allow forward from source zones:" -msgstr "允许从源区域转发:" - -msgid "Allow forward to destination zones:" -msgstr "允许转发到目标区域:" - -msgid "Any" -msgstr "任何" - -msgid "Covered networks" -msgstr "覆盖网络" - -msgid "Custom Rules" -msgstr "自定义规则" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"自定义规则允许您执行不属于防火墙框架的任意 iptables 命令。每次重启防火墙时," -"在默认的规则运行后这些命令将立即执行。" - -msgid "Destination IP address" -msgstr "目标 IP 地址" - -msgid "Destination address" -msgstr "目标地址" - -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 环回" - -msgid "Enable SYN-flood protection" -msgstr "启用 SYN-flood 防御" - -msgid "Enable logging on this zone" -msgstr "启用此区域的日志记录" - -msgid "External IP address" -msgstr "外部 IP 地址" - -msgid "External port" -msgstr "外部端口" - -msgid "External zone" -msgstr "外部区域" - -msgid "Extra arguments" -msgstr "附加参数" - -msgid "Firewall" -msgstr "防火墙" - -msgid "Firewall - Custom Rules" -msgstr "防火墙 - 自定义规则" - -msgid "Firewall - Port Forwards" -msgstr "防火墙 - 端口转发" - -msgid "Firewall - Traffic Rules" -msgstr "防火墙 - 通信规则" - -msgid "Firewall - Zone Settings" -msgstr "防火墙 - 区域设置" - -msgid "Force connection tracking" -msgstr "强制连接追踪" - -msgid "Forward" -msgstr "转发" - -msgid "Forward to" -msgstr "转发到" - -msgid "Friday" -msgstr "星期五" - -msgid "From %s in %s" -msgstr "来自 %s 位于 %s" - -msgid "From %s in %s with source %s" -msgstr "来自 %s 位于 %s 源于 %s" - -msgid "From %s in %s with source %s and %s" -msgstr "来自 %s 位于 %s 源端口 %s 源 MAC %s" - -msgid "General Settings" -msgstr "基本设置" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 和 IPv6" - -msgid "IPv4 only" -msgstr "仅 IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "仅 IPv6" - -msgid "Input" -msgstr "入站数据" - -msgid "Inter-Zone Forwarding" -msgstr "端口触发" - -msgid "Internal IP address" -msgstr "内部 IP 地址" - -msgid "Internal port" -msgstr "内部端口" - -msgid "Internal zone" -msgstr "内部区域" - -msgid "Limit log messages" -msgstr "限制日志信息" - -msgid "MSS clamping" -msgstr "MSS 钳制" - -msgid "Masquerading" -msgstr "IP 动态伪装" - -msgid "Match" -msgstr "匹配规则" - -msgid "Match ICMP type" -msgstr "匹配 ICMP 类型" - -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 规则" - -msgid "New forward rule" -msgstr "新建转发规则" - -msgid "New input rule" -msgstr "新建进入规则" - -msgid "New port forward" -msgstr "新建端口转发" - -msgid "New source NAT" -msgstr "新建 Source NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "仅匹配指定目的 IP 地址的入站流量。" - -msgid "Only match incoming traffic from these MACs." -msgstr "仅匹配来自这些 MAC 的入站流量。" - -msgid "Only match incoming traffic from this IP or range." -msgstr "仅匹配来自此 IP 或 IP 范围的入站流量。" - -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 "端口转发" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "" -"端口转发允许 Internet 上的远程计算机连接到内部网络中的特定计算机或服务。" - -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 "要限制 IP 动态伪装的目标子网" - -msgid "Restrict Masquerading to given source subnets" -msgstr "要限制 IP 动态伪装的源子网" - -msgid "Restrict to address family" -msgstr "限制地址" - -msgid "Rewrite matched traffic to the given address." -msgstr "将匹配流量的源地址改写成指定地址。" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "将匹配流量的源端口改写成指定端口。留空只改写 IP 地址。" - -msgid "Rewrite to source %s" -msgstr "源地址改写成 %s" - -msgid "Rewrite to source %s, %s" -msgstr "源地址改写成 %s, %s" - -msgid "SNAT IP address" -msgstr "SNAT IP 地址" - -msgid "SNAT port" -msgstr "SNAT 端口" - -msgid "Saturday" -msgstr "星期六" - -msgid "Source IP address" -msgstr "源 IP 地址" - -msgid "Source MAC address" -msgstr "源 MAC 地址" - -msgid "Source NAT" -msgstr "Source NAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"Source NAT 是一种特殊形式的封包伪装,它允许精细的控制传出流量的源 IP,例如:" -"将多个 WAN 地址映射到内部子网。" - -msgid "Source address" -msgstr "源地址" - -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 "防火墙通过在网络接口上创建区域来控制网络流量。" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"以下选项可以控制区域(%s)和其它区域间的转发规则。目标区域接收" -"源自 %q 的转发流量。源区域匹配从目标为 %q 的区域的需转发流量。转发规则的作用是单向的,例如:一条允许" -"从 lan 到 wan 的转发规则并不隐含有允许相反方向从 wan 到 lan 的流量转发。" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "本页面可以更改端口转发的高级设置。大多数情况下,不需要更改这些设置。" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "本页面可以更改通信规则的高级设置,比如:需匹配的源主机和目标主机。" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"本节定义 %q 的通用属性,入站数据和出站数据选项用于设置此区" -"域入站和出站流量的默认策略,转发选项描述该区域内不同网络之间的流量转" -"发策略。覆盖网络指定从属于这个区域的网络。" - -msgid "Thursday" -msgstr "星期四" - -msgid "Time in UTC" -msgstr "UTC 时间" - -msgid "To %s at %s on this device" -msgstr "到 %s 在 %s 位于本设备" - -msgid "To %s in %s" -msgstr "到 %s 位于 %s" - -msgid "To %s on this device" -msgstr "到 %s 位于本设备" - -msgid "To %s, %s in %s" -msgstr "到 %s, %s 位于 %s" - -msgid "To source IP" -msgstr "到源 IP" - -msgid "To source port" -msgstr "到源端口" - -msgid "Traffic Rules" -msgstr "通信规则" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"通信规则定义了不同区域间的数据包传输策略,例如:拒绝一些主机之间的通信,开放" -"路由器 WAN 上的端口。" - -msgid "Tuesday" -msgstr "星期二" - -msgid "Via %s" -msgstr "通过 %s" - -msgid "Via %s at %s" -msgstr "通过 %s 在 %s" - -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 "区域 %q" - -msgid "Zone ⇒ Forwardings" -msgstr "区域 ⇒ 转发" - -msgid "Zones" -msgstr "区域" - -msgid "accept" -msgstr "接受" - -msgid "any" -msgstr "所有" - -msgid "any host" -msgstr "所有主机" - -msgid "any router IP" -msgstr "所有路由 IP" - -msgid "any zone" -msgstr "所有区域" - -msgid "don't track" -msgstr "不跟踪" - -msgid "drop" -msgstr "丢弃" - -msgid "reject" -msgstr "拒绝" - -msgid "traffic" -msgstr "通信" diff --git a/package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po b/package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po deleted file mode 100644 index eceef36632..0000000000 --- a/package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po +++ /dev/null @@ -1,487 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2017-10-28 18:56+0800\n" -"X-Generator: Gtranslator 2.91.7\n" - -msgid "%s in %s" -msgstr "%s 位於 %s" - -msgid "%s%s with %s" -msgstr "%s%s 和 %s" - -msgid "%s, %s in %s" -msgstr "%s, %s 位於 %s" - -msgid "(Unnamed Entry)" -msgstr "(未命名條目)" - -msgid "(Unnamed Rule)" -msgstr "(未命名規則)" - -msgid "(Unnamed SNAT)" -msgstr "(未命名 SNAT)" - -msgid "%d pkts. per %s" -msgstr "%d 資料包。每 %s" - -msgid "%d pkts. per %s, burst %d pkts." -msgstr "%d 資料包。每 %s,突發 %d 資料包。" - -msgid "%s and limit to %s" -msgstr "%s 並限制到 %s" - -msgid "Action" -msgstr "動作" - -msgid "Add" -msgstr "新增" - -msgid "Add and edit..." -msgstr "新增並編輯..." - -msgid "Advanced Settings" -msgstr "高階設定" - -msgid "Allow forward from source zones:" -msgstr "允許從源區域轉發:" - -msgid "Allow forward to destination zones:" -msgstr "允許轉發到目標區域:" - -msgid "Any" -msgstr "任何" - -msgid "Covered networks" -msgstr "覆蓋網路" - -msgid "Custom Rules" -msgstr "自定義規則" - -msgid "" -"Custom rules allow you to execute arbitrary iptables commands which are not " -"otherwise covered by the firewall framework. The commands are executed after " -"each firewall restart, right after the default ruleset has been loaded." -msgstr "" -"自定義規則允許您執行不屬於防火牆框架的任意 iptables 命令。每次重啟防火牆時," -"在預設的規則執行後這些命令將立即執行。" - -msgid "Destination IP address" -msgstr "目標 IP 位址" - -msgid "Destination address" -msgstr "目標位址" - -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 環回" - -msgid "Enable SYN-flood protection" -msgstr "啟用 SYN-flood 防禦" - -msgid "Enable logging on this zone" -msgstr "啟用此區域的日誌記錄" - -msgid "External IP address" -msgstr "外部 IP 位址" - -msgid "External port" -msgstr "外部埠" - -msgid "External zone" -msgstr "外部區域" - -msgid "Extra arguments" -msgstr "附加引數" - -msgid "Firewall" -msgstr "防火牆" - -msgid "Firewall - Custom Rules" -msgstr "防火牆 - 自定義規則" - -msgid "Firewall - Port Forwards" -msgstr "防火牆 - 埠轉發" - -msgid "Firewall - Traffic Rules" -msgstr "防火牆 - 通訊規則" - -msgid "Firewall - Zone Settings" -msgstr "防火牆 - 區域設定" - -msgid "Force connection tracking" -msgstr "強制連線追蹤" - -msgid "Forward" -msgstr "轉發" - -msgid "Forward to" -msgstr "轉發到" - -msgid "Friday" -msgstr "星期五" - -msgid "From %s in %s" -msgstr "來自 %s 位於 %s" - -msgid "From %s in %s with source %s" -msgstr "來自 %s 位於 %s 源於 %s" - -msgid "From %s in %s with source %s and %s" -msgstr "來自 %s 位於 %s 源埠 %s 源 MAC %s" - -msgid "General Settings" -msgstr "基本設定" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 和 IPv6" - -msgid "IPv4 only" -msgstr "僅 IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 only" -msgstr "僅 IPv6" - -msgid "Input" -msgstr "入站資料" - -msgid "Inter-Zone Forwarding" -msgstr "埠觸發" - -msgid "Internal IP address" -msgstr "內部 IP 位址" - -msgid "Internal port" -msgstr "內部埠" - -msgid "Internal zone" -msgstr "內部區域" - -msgid "Limit log messages" -msgstr "限制日誌資訊" - -msgid "MSS clamping" -msgstr "MSS 鉗制" - -msgid "Masquerading" -msgstr "IP 動態偽裝" - -msgid "Match" -msgstr "匹配規則" - -msgid "Match ICMP type" -msgstr "匹配 ICMP 型別" - -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 規則" - -msgid "New forward rule" -msgstr "新建轉發規則" - -msgid "New input rule" -msgstr "新建進入規則" - -msgid "New port forward" -msgstr "新建埠轉發" - -msgid "New source NAT" -msgstr "新建 Source NAT" - -msgid "Only match incoming traffic directed at the given IP address." -msgstr "僅匹配指定目的 IP 位址的入站流量。" - -msgid "Only match incoming traffic from these MACs." -msgstr "僅匹配來自這些 MAC 的入站流量。" - -msgid "Only match incoming traffic from this IP or range." -msgstr "僅匹配來自此 IP 或 IP 範圍的入站流量。" - -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 "埠轉發" - -msgid "" -"Port forwarding allows remote computers on the Internet to connect to a " -"specific computer or service within the private LAN." -msgstr "埠轉發允許 Internet 上的遠端計算機連線到內部網路中的特定計算機或服務。" - -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 "要限制 IP 動態偽裝的目標子網" - -msgid "Restrict Masquerading to given source subnets" -msgstr "要限制 IP 動態偽裝的源子網" - -msgid "Restrict to address family" -msgstr "限制位址" - -msgid "Rewrite matched traffic to the given address." -msgstr "將匹配流量的源位址改寫成指定位址。" - -msgid "" -"Rewrite matched traffic to the given source port. May be left empty to only " -"rewrite the IP address." -msgstr "將匹配流量的源埠改寫成指定埠。留空只改寫 IP 位址。" - -msgid "Rewrite to source %s" -msgstr "源位址改寫成 %s" - -msgid "Rewrite to source %s, %s" -msgstr "源位址改寫成 %s, %s" - -msgid "SNAT IP address" -msgstr "SNAT IP 位址" - -msgid "SNAT port" -msgstr "SNAT 埠" - -msgid "Saturday" -msgstr "星期六" - -msgid "Source IP address" -msgstr "源 IP 位址" - -msgid "Source MAC address" -msgstr "源 MAC 位址" - -msgid "Source NAT" -msgstr "Source NAT" - -msgid "" -"Source NAT is a specific form of masquerading which allows fine grained " -"control over the source IP used for outgoing traffic, for example to map " -"multiple WAN addresses to internal subnets." -msgstr "" -"Source NAT 是一種特殊形式的封包偽裝,它允許精細的控制傳出流量的源 IP,例如:" -"將多個 WAN 位址對映到內部子網。" - -msgid "Source address" -msgstr "源位址" - -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 "防火牆通過在網路介面上建立區域來控制網路流量。" - -msgid "" -"The options below control the forwarding policies between this zone (%s) and " -"other zones. Destination zones cover forwarded traffic " -"originating from %q. Source zones match forwarded " -"traffic from other zones targeted at %q. The forwarding " -"rule is unidirectional, e.g. a forward from lan to wan does " -"not imply a permission to forward from wan to lan as well." -msgstr "" -"以下選項可以控制區域(%s)和其它區域間的轉發規則。目標區域接收" -"源自 %q 的轉發流量。源區域匹配從目標為 %q 的區域的需轉發流量。轉發規則的作用是單向的,例如:一條允許" -"從 lan 到 wan 的轉發規則並不隱含有允許相反方向從 wan 到 lan 的流量轉發。" - -msgid "" -"This page allows you to change advanced properties of the port forwarding " -"entry. In most cases there is no need to modify those settings." -msgstr "本頁面可以更改埠轉發的高階設定。大多數情況下,不需要更改這些設定。" - -msgid "" -"This page allows you to change advanced properties of the traffic rule " -"entry, such as matched source and destination hosts." -msgstr "本頁面可以更改通訊規則的高階設定,比如:需匹配的源主機和目標主機。" - -msgid "" -"This section defines common properties of %q. The input and " -"output options set the default policies for traffic entering and " -"leaving this zone while the forward option describes the policy for " -"forwarded traffic between different networks within the zone. Covered " -"networks specifies which available networks are members of this zone." -msgstr "" -"本節定義 %q 的通用屬性,入站資料和出站資料選項用於設定此區" -"域入站和出站流量的預設策略,轉發選項描述該區域內不同網路之間的流量轉" -"發策略。覆蓋網路指定從屬於這個區域的網路。" - -msgid "Thursday" -msgstr "星期四" - -msgid "Time in UTC" -msgstr "UTC 時間" - -msgid "To %s at %s on this device" -msgstr "到 %s 在 %s 位於本裝置" - -msgid "To %s in %s" -msgstr "到 %s 位於 %s" - -msgid "To %s on this device" -msgstr "到 %s 位於本裝置" - -msgid "To %s, %s in %s" -msgstr "到 %s, %s 位於 %s" - -msgid "To source IP" -msgstr "到源 IP" - -msgid "To source port" -msgstr "到源埠" - -msgid "Traffic Rules" -msgstr "通訊規則" - -msgid "" -"Traffic rules define policies for packets traveling between different zones, " -"for example to reject traffic between certain hosts or to open WAN ports on " -"the router." -msgstr "" -"通訊規則定義了不同區域間的資料包傳輸策略,例如:拒絕一些主機之間的通訊,開放" -"路由器 WAN 上的埠。" - -msgid "Tuesday" -msgstr "星期二" - -msgid "Via %s" -msgstr "通過 %s" - -msgid "Via %s at %s" -msgstr "通過 %s 在 %s" - -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 "區域 %q" - -msgid "Zone ⇒ Forwardings" -msgstr "區域 ⇒ 轉發" - -msgid "Zones" -msgstr "區域" - -msgid "accept" -msgstr "接受" - -msgid "any" -msgstr "所有" - -msgid "any host" -msgstr "所有主機" - -msgid "any router IP" -msgstr "所有路由 IP" - -msgid "any zone" -msgstr "所有區域" - -msgid "don't track" -msgstr "不跟蹤" - -msgid "drop" -msgstr "丟棄" - -msgid "reject" -msgstr "拒絕" - -msgid "traffic" -msgstr "通訊" diff --git a/package/luci/applications/luci-app-freifunk-diagnostics/Makefile b/package/luci/applications/luci-app-freifunk-diagnostics/Makefile deleted file mode 100644 index d511684b64..0000000000 --- a/package/luci/applications/luci-app-freifunk-diagnostics/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Tools for network diagnosis like traceroute and ping -LUCI_DEPENDS:= - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-freifunk-diagnostics/luasrc/controller/freifunk/diag.lua b/package/luci/applications/luci-app-freifunk-diagnostics/luasrc/controller/freifunk/diag.lua deleted file mode 100644 index 7bb47612b6..0000000000 --- a/package/luci/applications/luci-app-freifunk-diagnostics/luasrc/controller/freifunk/diag.lua +++ /dev/null @@ -1,72 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Jo-Philipp Wich --- Copyright 2013 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.freifunk.diag", package.seeall) - -function index() - local uci = require("luci.model.uci").cursor() - local page - page = node("freifunk", "status", "diagnostics") - page.target = template("freifunk/diagnostics") - page.title = _("Diagnostics") - page.order = 60 - - page = entry({"freifunk", "status", "diag_ping"}, call("diag_ping"), nil) - page.leaf = true - - page = entry({"freifunk", "status", "diag_nslookup"}, call("diag_nslookup"), nil) - page.leaf = true - - page = entry({"freifunk", "status", "diag_traceroute"}, call("diag_traceroute"), nil) - page.leaf = true - - page = entry({"freifunk", "status", "diag_ping6"}, call("diag_ping6"), nil) - page.leaf = true - - page = entry({"freifunk", "status", "diag_traceroute6"}, call("diag_traceroute6"), nil) - page.leaf = true -end - -function diag_command(cmd, addr) - if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then - luci.http.prepare_content("text/plain") - - local util = io.popen(cmd % addr) - if util then - while true do - local ln = util:read("*l") - if not ln then break end - luci.http.write(ln) - luci.http.write("\n") - end - - util:close() - end - - return - end - - luci.http.status(500, "Bad address") -end - -function diag_ping(addr) - diag_command("ping -c 5 -W 1 %q 2>&1", addr) -end - -function diag_traceroute(addr) - diag_command("traceroute -q 1 -w 1 -n %q 2>&1", addr) -end - -function diag_nslookup(addr) - diag_command("nslookup %q 2>&1", addr) -end - -function diag_ping6(addr) - diag_command("ping6 -c 5 %q 2>&1", addr) -end - -function diag_traceroute6(addr) - diag_command("traceroute6 -q 1 -w 2 -n %q 2>&1", addr) -end diff --git a/package/luci/applications/luci-app-freifunk-diagnostics/luasrc/view/freifunk/diagnostics.htm b/package/luci/applications/luci-app-freifunk-diagnostics/luasrc/view/freifunk/diagnostics.htm deleted file mode 100644 index fe205d053b..0000000000 --- a/package/luci/applications/luci-app-freifunk-diagnostics/luasrc/view/freifunk/diagnostics.htm +++ /dev/null @@ -1,111 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<% -local fs = require "nixio.fs" -local has_ping6 = fs.access("/bin/ping6") or fs.access("/usr/bin/ping6") -local has_traceroute6 = fs.access("/usr/bin/traceroute6") -%> - - - - -
"> -
-

<%:Diagnostics%>

- -
- <%:Network Utilities%> - -
- -
-
- <% if has_ping6 then %> - - - <% else %> - - <% end %> -
- -
-
- <% if has_traceroute6 then %> - - - <% else %> - - <% end %> - <% if not has_traceroute6 then %> -

 

-

<%:Install iputils-traceroute6 for IPv6 traceroute%>

- <% end %> -
- -
-
- -
- -

- -
-
- - -
- -<%+footer%> diff --git a/package/luci/applications/luci-app-freifunk-diagnostics/root/etc/uci-defaults/40_luci-freifunk-diagnostics b/package/luci/applications/luci-app-freifunk-diagnostics/root/etc/uci-defaults/40_luci-freifunk-diagnostics deleted file mode 100644 index 963d8a4efc..0000000000 --- a/package/luci/applications/luci-app-freifunk-diagnostics/root/etc/uci-defaults/40_luci-freifunk-diagnostics +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -rm -f /tmp/luci-indexcache diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/Makefile b/package/luci/applications/luci-app-freifunk-policyrouting/Makefile deleted file mode 100644 index f60c2ea055..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Policy routing for mesh traffic -LUCI_DEPENDS:=+freifunk-policyrouting - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/luasrc/controller/freifunk/policy-routing.lua b/package/luci/applications/luci-app-freifunk-policyrouting/luasrc/controller/freifunk/policy-routing.lua deleted file mode 100644 index b550fc87eb..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/luasrc/controller/freifunk/policy-routing.lua +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -module "luci.controller.freifunk.policy-routing" - -function index() - entry({"admin", "freifunk", "policyrouting"}, cbi("freifunk/policyrouting"), - _("Policy Routing"), 60) -end diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/luasrc/model/cbi/freifunk/policyrouting.lua b/package/luci/applications/luci-app-freifunk-policyrouting/luasrc/model/cbi/freifunk/policyrouting.lua deleted file mode 100644 index b09c237ca2..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/luasrc/model/cbi/freifunk/policyrouting.lua +++ /dev/null @@ -1,34 +0,0 @@ --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local uci = require "luci.model.uci".cursor() - -m = Map("freifunk-policyrouting", translate("Policy Routing"), translate("These pages can be used to setup policy routing for certain firewall zones. ".. - "This is useful if you need to use your own internet connection for yourself but you don't want to share it with others (thats why it can also be ".. - "called 'Ego Mode'). Your own traffic is then sent via your internet connection while traffic originating from the mesh will use another gateway in the mesh. ")) -m:chain("network") - -c = m:section(NamedSection, "pr", "settings", "") - -local pr = c:option(Flag, "enable", translate("Enable Policy Routing")) -pr.rmempty = false - -local strict = c:option(Flag, "strict", translate("Strict Filtering"), translate("If no default route is received from the mesh network then traffic which belongs to ".. - "the selected firewall zones is routed via your internet connection as a fallback. If you do not want this and instead block that traffic then you should ".. - "select this option.")) -strict.rmempty = false - -local fallback = c:option(Flag, "fallback", translate("Fallback to mesh"), - translate("If your own gateway is not available then fallback to the mesh default gateway.")) -strict.rmempty = false - -local zones = c:option(MultiValue, "zones", translate("Firewall zones"), translate("All traffic from interfaces belonging to these zones will be sent via ".. - "a gateway in the mesh network.")) -uci:foreach("firewall", "zone", function(section) - local name = section.name - if not (name == "wan") then - zones:value(name) - end -end) - -return m diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/ca/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/ca/freifunk-policyrouting.po deleted file mode 100644 index c1d96e03ee..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/ca/freifunk-policyrouting.po +++ /dev/null @@ -1,62 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-01 23:52+0200\n" -"PO-Revision-Date: 2014-07-03 20:37+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" -"Tot el trànsit des de interfícies pertinent a aquestes zones s'enviarà via " -"una passarel·la en la xarxa en malla." - -msgid "Enable Policy Routing" -msgstr "Habilita el encaminament per política" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "Zones de tallafocs" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "Encaminament per política" - -msgid "Strict Filtering" -msgstr "Filtració estricta" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" -"Aquestes pàgines es poden utilitzar per configurar encaminament en certes " -"zones de tallafocs. Això és útil si necessiteu utilitzar la vostra pròpia " -"connexió a Internet per a vós mateix però no voleu compartir-la amb altres " -"(és per això que també es diu 'Mode egoista'). El vostre propi trànsit " -"llavors s'envia via la vostra connexió d'Internet mentre el trànsit " -"originant en malla utilitzarà altra passarel·la en malla." diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/cs/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/cs/freifunk-policyrouting.po deleted file mode 100644 index 4ec9f8da82..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/cs/freifunk-policyrouting.po +++ /dev/null @@ -1,52 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-26 20:27+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "Povolit politiku směrování" - -msgid "Fallback to mesh" -msgstr "Fallback do mesh" - -msgid "Firewall zones" -msgstr "Zóny firewallu" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "Politika směrování" - -msgid "Strict Filtering" -msgstr "Striktní filtrování" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/de/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/de/freifunk-policyrouting.po deleted file mode 100644 index bb24f61853..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/de/freifunk-policyrouting.po +++ /dev/null @@ -1,67 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2012-11-21 20:53+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" -"Traffic der aus diesen Zonen kommt wird über ein Internetgateway im Mesh " -"weitergeleitet." - -msgid "Enable Policy Routing" -msgstr "Policy Routing aktivieren" - -msgid "Fallback to mesh" -msgstr "Auf Mesh zurückfallen" - -msgid "Firewall zones" -msgstr "Firewallzonen" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" -"Falls im Mesh kein anderer Internetgateway verfügbar ist, dann wird Traffic " -"aus den ausgewählten Zonen als Fallback über die Internetverbindung dieses " -"Routers geleitet. Wenn das nicht gewünscht ist und dieser Traffic dann " -"stattdessen geblockt werden soll, dann aktiviere diese Option." - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" -"Wenn das eigene lokale Gateway nicht verfügbar ist, dann nutze das aktuelle " -"Mesh-Default-Gateway." - -msgid "Policy Routing" -msgstr "Policy Routing" - -msgid "Strict Filtering" -msgstr "Strenges Filtern" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" -"Auf diesen Seiten kann Policy Routing für bestimmte Firewallzonen aktiviert " -"werden. Dies ist z.B. nützlich, wenn du deinen eigenen Internetverkehr über " -"deine eigene Internetverbindung routen aber diese nicht mit anderen teilen " -"willst ('Mein Gateway für mich allein'). Eigener Traffic wird dann über die " -"eigene Internetverbindung geschickt während Traffic aus den ausgewählten " -"Firewallzonen über einen anderen Gateway im Mesh geleitet wird." diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/el/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/el/freifunk-policyrouting.po deleted file mode 100644 index 3c9a17e0d4..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/el/freifunk-policyrouting.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/en/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/en/freifunk-policyrouting.po deleted file mode 100644 index 3c9a17e0d4..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/en/freifunk-policyrouting.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/es/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/es/freifunk-policyrouting.po deleted file mode 100644 index 8af3458dfe..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/es/freifunk-policyrouting.po +++ /dev/null @@ -1,66 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-22 22:34+0200\n" -"PO-Revision-Date: 2012-10-14 22:49+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" -"Todo el tráfico desde interfaces de estas zonas se enviará por una pasarela " -"de la red mesh." - -msgid "Enable Policy Routing" -msgstr "Activar política de enrutado" - -msgid "Fallback to mesh" -msgstr "Si falla usar mesh" - -msgid "Firewall zones" -msgstr "Zonas del cortafuegos" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" -"Si no se recibe una ruta por defecto de la red mesh el tráfico de las zonas " -"de cortafuegos seleccionado se enviará por esta conexión de red. Si no desea " -"esto marque esta opción para bloquearlo." - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" -"Si su pasarela no está disponible cambie a la pasarela por defecto de la " -"mesh." - -msgid "Policy Routing" -msgstr "Política de enrutamiento" - -msgid "Strict Filtering" -msgstr "Filtrado estricto" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" -"Estas páginas se pueden usar para definir la política de enrutamiento para " -"ciertas zonas del cortafuegos. Esto es útil si quiere usar su conexión a " -"internet pero no quiere compartirla con otros (por eso se llama \"Modo " -"egoísta\"). Su propio tráfico se enviará por su conexión internet mientras " -"que el tráfico del mes usará otra pasarela en la mesh." diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/fr/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/fr/freifunk-policyrouting.po deleted file mode 100644 index 3c9a17e0d4..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/fr/freifunk-policyrouting.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/he/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/he/freifunk-policyrouting.po deleted file mode 100644 index 8d83098d6f..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/he/freifunk-policyrouting.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \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 "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/hu/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/hu/freifunk-policyrouting.po deleted file mode 100644 index 8d83098d6f..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/hu/freifunk-policyrouting.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \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 "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/it/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/it/freifunk-policyrouting.po deleted file mode 100644 index 61ac6c0d4b..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/it/freifunk-policyrouting.po +++ /dev/null @@ -1,69 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-09 20:22+0200\n" -"PO-Revision-Date: 2013-02-09 20:27+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" -"Tutto il traffico dalle interfacce appartenenti a tali zone saranno inviate " -"tramite un gateway nella rete mesh." - -msgid "Enable Policy Routing" -msgstr "Attiva la politica di instradamento" - -msgid "Fallback to mesh" -msgstr "Posizione di sicurezza in mesh" - -msgid "Firewall zones" -msgstr "Zone Firewall" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" -"Se nessun percorso predefinito viene ricevuto dalla rete mesh, il traffico " -"che fa parte delle zone del firewall selezionato verranno instradate tramite " -"la connessione a Internet come ripiego. Se non si desidera questo invece " -"di bloccare il traffico è necessario selezionare questa opzione." - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" -"Se il proprio gateway non è disponibile, ripiego per il gateway predefinito " -"mash." - -msgid "Policy Routing" -msgstr "Politica di Instradamento" - -msgid "Strict Filtering" -msgstr "Livello massimo di filtraggio" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" -"Queste pagine possono essere utilizzati per impostare la politica di " -"instradamento per le zone del firewall determinati. Questo è utile se è " -"necessario utilizzare la vostra connessione internet per de stesso, ma non " -"si desidera condividere con gli altri (questo è il motivo per cui può anche " -"essere chiamato 'Modalità Ego'). Il tuo traffico viene poi inviato tramite " -"la tua connessione a Internet mentre il traffico proveniente dalla rete " -"utilizzerà un altro gateway in mesh." diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/ja/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/ja/freifunk-policyrouting.po deleted file mode 100644 index 3c9a17e0d4..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/ja/freifunk-policyrouting.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/ms/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/ms/freifunk-policyrouting.po deleted file mode 100644 index 3c9a17e0d4..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/ms/freifunk-policyrouting.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/no/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/no/freifunk-policyrouting.po deleted file mode 100644 index 3c9a17e0d4..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/no/freifunk-policyrouting.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/pl/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/pl/freifunk-policyrouting.po deleted file mode 100644 index bcb4492a09..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/pl/freifunk-policyrouting.po +++ /dev/null @@ -1,69 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-24 07:01+0200\n" -"PO-Revision-Date: 2012-08-24 08:02+0200\n" -"Last-Translator: goodgod261 \n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" -"Cały ruch sieciowy z interfejsów należących do tych stref będzie wysyłany " -"przez bramę w sieci mesh." - -msgid "Enable Policy Routing" -msgstr "Włącz politykę trasowania (routingu)" - -msgid "Fallback to mesh" -msgstr "Fallback do mesh" - -msgid "Firewall zones" -msgstr "Strefy firewalla" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" -"Jeśli nie otrzymano domyślnej trasy z sieci mesh, ruch sieciowy należący do " -"wybranej strefy firewalla jest trasowany przez Twoje połączenie z internetem " -"jako fallback. Jeśli tego nie chcesz i zamiast tego chciałbyś blokować taki " -"ruch sieciowy, powinieneś zaznaczyć tę opcję." - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" -"Jeśli Twoja własna brama nie jest dostępna, wykonaj fallback do domyślnej " -"bramy sieci mesh." - -msgid "Policy Routing" -msgstr "Polityka trasowania (routingu)" - -msgid "Strict Filtering" -msgstr "Ścisłe filtrowanie" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" -"Te strony mogą zostać użyte do ustawienia polityki trasowania (routingu) dla " -"wybranych stref firewalla. Jest to użyteczne jeśli chcesz używać swojego " -"połączenia z internetem sam i nie chcesz dzielić się nim z innymi (stąd " -"alternatywna nazwa \"tryb ego\"). Twój własny ruch sieciowy jest wysyłany " -"przez Twoje połączenie, zaś ruch pochodzący z sieci mesh będzie używać innej " -"bramy w sieci." diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/pt-br/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/pt-br/freifunk-policyrouting.po deleted file mode 100644 index 4aac8ca15a..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/pt-br/freifunk-policyrouting.po +++ /dev/null @@ -1,68 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-10-12 09:13+0200\n" -"PO-Revision-Date: 2012-09-27 00:40+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" -"Todo o tráfego das interfaces pertencentes a estas zonas será enviado " -"através de um roteador padrão na rede em malha." - -msgid "Enable Policy Routing" -msgstr "Habilitar a Política de Roteamento" - -msgid "Fallback to mesh" -msgstr "Se falhar, usar a malha" - -msgid "Firewall zones" -msgstr "Zonas do firewall" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" -"Se nenhuma rota padrão for recebida da rede em malha, então o tráfego que " -"pertencer a zona de firewall selecionada através da sua conexão internet " -"como solução de contorno. Se você não quer isto e, ao contrário, deseja " -"bloquear este tráfego, então você deve selecionar esta opção." - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" -"Se o seu roteador não estiver disponível, usar como alternativa o roteador " -"padrão da malha." - -msgid "Policy Routing" -msgstr "Política de Roteamento" - -msgid "Strict Filtering" -msgstr "Filtragem Estrita" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" -"Estas páginas podem ser usadas para configurar a política de roteamento para " -"certas zonas de firewall. Isto pode ser útil se você precisa usar sua " -"própria conexão com a internet para si e não quer compartilhá-la com outros " -"(é por isto que isto pode ser chamado de 'Modo Egocêntrico'). Seu próprio " -"tráfego é enviado através de sua conexão com a internet enquanto o tráfego " -"originado da rede em malha irá usar outro roteador na malha." diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/pt/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/pt/freifunk-policyrouting.po deleted file mode 100644 index 41a6b21b7c..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/pt/freifunk-policyrouting.po +++ /dev/null @@ -1,56 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-05-31 11:53+0200\n" -"PO-Revision-Date: 2013-05-31 11:54+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" -"Todo o trafego das interfaces que pertencem a estas zonas será enviado pela " -"gateway de rede." - -msgid "Enable Policy Routing" -msgstr "Ativar a Politica de Routing" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "Zonas da Firewall" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "Política de Routing" - -msgid "Strict Filtering" -msgstr "Filtragem Estrita" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/ro/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/ro/freifunk-policyrouting.po deleted file mode 100644 index 3386101bb9..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/ro/freifunk-policyrouting.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-28 19:28+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "Zone de firewall" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/ru/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/ru/freifunk-policyrouting.po deleted file mode 100644 index a4ba704f71..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/ru/freifunk-policyrouting.po +++ /dev/null @@ -1,70 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: freifunk-policyrouting\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-07-25 12:26+0200\n" -"PO-Revision-Date: 2012-08-15 15:27+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" -"Весь трафик от интерфейсов, принадлежащих этим зонам, будет послан через " -"шлюз в ячеистой сети." - -msgid "Enable Policy Routing" -msgstr "Разрешить политику маршрутизации" - -#, fuzzy -msgid "Fallback to mesh" -msgstr "Откат к ячеистой сети" - -msgid "Firewall zones" -msgstr "Зоны межсетевого экрана" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" -"Трафик, принадлежащий выбранным зонам межсетевого экрана, маршрутизируется " -"через ваше интернет-соединение, если маршрут по умолчанию не был получен из " -"ячеистой сети. Если вас это не устраивает, то выберите эту опцию и данный " -"трафик будет заблокирован." - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" -"Если ваш шлюз не доступен, откатиться к использованию шлюза ячеистой сети по " -"умолчанию." - -msgid "Policy Routing" -msgstr "Политика маршрутизации" - -msgid "Strict Filtering" -msgstr "Строгая фильтрация" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" -"На этих страницах Вы можете настроить политику маршрутизации для " -"определённых зон межсетевого экрана. Это может быть полезно, если вы хотите " -"использовать интернет-соединения только для себя. Ваш трафик в этом случае " -"будет использовать только ваше интернет-соединение, в то время как трафик " -"ячеистой сети будет использовать другой шлюз." diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/sk/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/sk/freifunk-policyrouting.po deleted file mode 100644 index b1a7810324..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/sk/freifunk-policyrouting.po +++ /dev/null @@ -1,49 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/sv/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/sv/freifunk-policyrouting.po deleted file mode 100644 index 1310afa962..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/sv/freifunk-policyrouting.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/templates/freifunk-policyrouting.pot b/package/luci/applications/luci-app-freifunk-policyrouting/po/templates/freifunk-policyrouting.pot deleted file mode 100644 index b4c35c177c..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/templates/freifunk-policyrouting.pot +++ /dev/null @@ -1,42 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/tr/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/tr/freifunk-policyrouting.po deleted file mode 100644 index af1616fa48..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/tr/freifunk-policyrouting.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/uk/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/uk/freifunk-policyrouting.po deleted file mode 100644 index e4cc687e92..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/uk/freifunk-policyrouting.po +++ /dev/null @@ -1,72 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-13 16:14+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -#, fuzzy -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" -"Весь трафік з інтерфейсів, прив'язаних до цих зон буде відправлений через " -"шлюз в комірчасті мережі." - -#, fuzzy -msgid "Enable Policy Routing" -msgstr "Активувати політику маршрутизації" - -msgid "Fallback to mesh" -msgstr "" - -#, fuzzy -msgid "Firewall zones" -msgstr "Зона фаєрволу" - -#, fuzzy -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" -"Якщо маршрут типово не буде отриманий з сітки мережі, то трафік, який " -"належить до вибраної зони фаєрволу прямує через ваше інтернет-з'єднання в " -"якості запасного варіанту. Якщо ви не хочете цього, а замість цього, що " -"блокувати трафік, то ви повинні вибрати цю опцію." - -#, fuzzy -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" -"Якщо ваш шлюз недоступний, то відбувається повернення до основного шлюзу " -"сітки." - -msgid "Policy Routing" -msgstr "Політика маршрутизації" - -msgid "Strict Filtering" -msgstr "Жорстка фільтрація" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" -"Ці сторінки можна використовувати для налаштування політики маршрутизації " -"для певних зон фаєрволу. Це корисно, якщо вам потрібно використовувати своє " -"власне інтернет-з'єднання для себе, і ви не хочете ділитися ним з іншими " -"людьми (ось чому воно також називатися 'Его режим '). Ваш власний трафік " -"потім відправлений через ваше інтернет-з'єднання в той час як трафік, " -"витікаючий із мережі буде використовувати інший шлюз у мережі." diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/vi/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/vi/freifunk-policyrouting.po deleted file mode 100644 index 3c9a17e0d4..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/vi/freifunk-policyrouting.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/zh-cn/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/zh-cn/freifunk-policyrouting.po deleted file mode 100644 index 6a07b1dce9..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/zh-cn/freifunk-policyrouting.po +++ /dev/null @@ -1,57 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-09 03:50+0200\n" -"PO-Revision-Date: 2013-10-09 04:04+0200\n" -"Last-Translator: Tanyingyu \n" -"Language-Team: LANGUAGE \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" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "所有流量属于这个mesh网络区域的数据流都将通过网关来发送。" - -msgid "Enable Policy Routing" -msgstr "启用策略路由" - -msgid "Fallback to mesh" -msgstr "mesh后备" - -msgid "Firewall zones" -msgstr "防火墙区域" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" -"如果没有缺省的mesh网络路由,则使用属于防火墙区域内的Internet连接作为备用路由。如果您不想要这个,而是阻止该流量,那么您应该选择此选项。" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "如果您自己的网关不可用,则退回到mesh默认网关。" - -msgid "Policy Routing" -msgstr "策略路由" - -msgid "Strict Filtering" -msgstr "严格过滤" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" -"这些页面用于某些防火墙区域设置策略路由。这是非常有用的,如果您需要自己使用自己的互联网连接,但您不想把它分享给其他人(这就是为什么它也被称为“自我模式'" -")。您自己的流量,通过您的互联网连接发送,而mesh中的数据包将使用mesh中另外的网关。" diff --git a/package/luci/applications/luci-app-freifunk-policyrouting/po/zh-tw/freifunk-policyrouting.po b/package/luci/applications/luci-app-freifunk-policyrouting/po/zh-tw/freifunk-policyrouting.po deleted file mode 100644 index 58efa74c50..0000000000 --- a/package/luci/applications/luci-app-freifunk-policyrouting/po/zh-tw/freifunk-policyrouting.po +++ /dev/null @@ -1,48 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "" -"All traffic from interfaces belonging to these zones will be sent via a " -"gateway in the mesh network." -msgstr "" - -msgid "Enable Policy Routing" -msgstr "" - -msgid "Fallback to mesh" -msgstr "" - -msgid "Firewall zones" -msgstr "" - -msgid "" -"If no default route is received from the mesh network then traffic which " -"belongs to the selected firewall zones is routed via your internet " -"connection as a fallback. If you do not want this and instead block that " -"traffic then you should select this option." -msgstr "" - -msgid "" -"If your own gateway is not available then fallback to the mesh default " -"gateway." -msgstr "" - -msgid "Policy Routing" -msgstr "" - -msgid "Strict Filtering" -msgstr "" - -msgid "" -"These pages can be used to setup policy routing for certain firewall zones. " -"This is useful if you need to use your own internet connection for yourself " -"but you don't want to share it with others (thats why it can also be called " -"'Ego Mode'). Your own traffic is then sent via your internet connection " -"while traffic originating from the mesh will use another gateway in the mesh." -msgstr "" diff --git a/package/luci/applications/luci-app-freifunk-widgets/Makefile b/package/luci/applications/luci-app-freifunk-widgets/Makefile deleted file mode 100644 index d748827ba3..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Widgets for the Freifunk index page -LUCI_DEPENDS:=+luci-mod-freifunk - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/controller/freifunk/widgets.lua b/package/luci/applications/luci-app-freifunk-widgets/luasrc/controller/freifunk/widgets.lua deleted file mode 100644 index 37104fc215..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/controller/freifunk/widgets.lua +++ /dev/null @@ -1,35 +0,0 @@ --- Copyright 2012 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local require = require -module "luci.controller.freifunk.widgets" - - -function index() - - local page = node("admin", "freifunk", "widgets") - page.target = cbi("freifunk/widgets/widgets_overview") - page.title = _("Widgets") - page.i18n = "widgets" - page.order = 30 - - local page = node("admin", "freifunk", "widgets", "widget") - page.target = cbi("freifunk/widgets/widget") - page.leaf = true - - local page = node("freifunk", "search_redirect") - page.target = call("search_redirect") - page.leaf = true -end - -function search_redirect() - local dsp = require "luci.dispatcher" - local http = require "luci.http" - local engine = http.formvalue("engine") - local searchterms = http.formvalue("searchterms") or "" - if engine then - http.redirect(engine .. searchterms) - else - http.redirect(dsp.build_url()) - end -end diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua b/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua deleted file mode 100644 index fc23f4bdbc..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/heightwidth.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Copyright 2012 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local map, section = ... - -local width = wdg:option(Value, "width", translate("Width")) -width.rmempty = true - ---[[ -local height = wdg:option(Value, "height", translate("Height")) -height.rmempty = true -height.optional = true -]]-- - -local pr = wdg:option(Value, "paddingright", translate("Padding right")) -pr.rmempty = true diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua b/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua deleted file mode 100644 index adeffa965d..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/html.lua +++ /dev/null @@ -1,31 +0,0 @@ --- Copyright 2012 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local map, section = ... -local utl = require "luci.util" -local fs = require "nixio.fs" -local file = "/usr/share/customtext/" .. arg[1] .. ".html" - -local form, ferr = loadfile(utl.libpath() .. "/model/cbi/freifunk/widgets/heightwidth.lua") -if form then - setfenv(form, getfenv(1))(m, wdg) -end - -t = wdg:option(TextValue, "_text") -t.rmempty = true -t.rows = 20 - - -function t.cfgvalue() - return fs.readfile(file) or "" -end - -function t.write(self, section, value) - return fs.writefile(file, value) -end - -function t.remove(self, section) - return fs.unlink(file) -end - - diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua b/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua deleted file mode 100644 index 68ab06d885..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/iframe.lua +++ /dev/null @@ -1,13 +0,0 @@ --- Copyright 2012 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local map, section = ... -local utl = require "luci.util" - -local form, ferr = loadfile(utl.libpath() .. "/model/cbi/freifunk/widgets/heightwidth.lua") -if form then - setfenv(form, getfenv(1))(m, wdg) -end - -local url = wdg:option(Value, "url", translate("URL")) -url.default = "http://www.freifunk.net" diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua b/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua deleted file mode 100644 index 68fa3be7b6..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/rssfeed.lua +++ /dev/null @@ -1,25 +0,0 @@ --- Copyright 2012 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local map, section = ... -local utl = require "luci.util" - -local form, ferr = loadfile(utl.libpath() .. "/model/cbi/freifunk/widgets/heightwidth.lua") -if form then - setfenv(form, getfenv(1))(m, wdg) -end - -local url = wdg:option(Value, "url", translate("URL")) -url.default = "http://global.freifunk.net/rss/all/rss.xml" - -local max = wdg:option(Value, "max", translate("Maximal entries to show")) -max.rmempty = true -max.default = "10" -max.datatype = "integer" - -local cache = wdg:option(Value, "cache", translate("Cache Time"), translate("Cache downloaded feed for that many seconds.")) -cache.rmempty = true -cache.default = "3600" -cache.datatype = "integer" - - diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua b/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua deleted file mode 100644 index a02748924b..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/search.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2012 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local map, section = ... -local utl = require "luci.util" - -local form, ferr = loadfile(utl.libpath() .. "/model/cbi/freifunk/widgets/heightwidth.lua") -if form then - setfenv(form, getfenv(1))(m, wdg) -end - -local engine = wdg:option(DynamicList, "engine", translate("Search Engine"), - translate("Use the form Name|URL, where URL must be a full URL to the search engine " .. - "including the query GET parameter, e.g. 'Google|http://www.google.de/search?q='") - ) diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua b/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua deleted file mode 100644 index 7b6cd89961..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widget.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2012 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local uci = require "luci.model.uci".cursor() -local dsp = require "luci.dispatcher" -local utl = require "luci.util" -local widget = uci:get("freifunk-widgets", arg[1], "template") -local title = uci:get("freifunk-widgets", arg[1], "title") or "" - -m = Map("freifunk-widgets", translate("Widget")) -m.redirect = luci.dispatcher.build_url("admin/freifunk/widgets") - -if not arg[1] or m.uci:get("freifunk-widgets", arg[1]) ~= "widget" then - luci.http.redirect(m.redirect) - return -end - -wdg = m:section(NamedSection, arg[1], "widget", translate("Widget") .. " " .. title) -wdg.anonymous = true -wdg.addremove = false - -local en = wdg:option(Flag, "enabled", translate("Enable")) -en.rmempty = false - -local title = wdg:option(Value, "title", translate("Title")) -title.rmempty = true - -local form = loadfile( - utl.libpath() .. "/model/cbi/freifunk/widgets/%s.lua" % widget -) - -if form then - setfenv(form, getfenv(1))(m, wdg) -end - -return m - diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua b/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua deleted file mode 100644 index 076d8e08cb..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/model/cbi/freifunk/widgets/widgets_overview.lua +++ /dev/null @@ -1,68 +0,0 @@ --- Copyright 2012 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local uci = require "luci.model.uci".cursor() -local fs = require "nixio.fs" -local utl = require "luci.util" -m = Map("freifunk-widgets", translate("Widgets"), - translate("Configure installed widgets.")) - -wdg = m:section(TypedSection, "widget", translate("Widgets")) -wdg.addremove = true -wdg.extedit = luci.dispatcher.build_url("admin/freifunk/widgets/widget/%s") -wdg.template = "cbi/tblsection" -wdg.sortable = true - ---[[ -function wdg.create(...) - local sid = TypedSection.create(...) - luci.http.redirect(wdg.extedit % sid) -end -]]-- - -local en = wdg:option(Flag, "enabled", translate("Enable")) -en.rmempty = false ---en.default = "0" -function en.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" -end - -local tmpl = wdg:option(ListValue, "template", translate("Template")) -local file -for file in fs.dir("/usr/lib/lua/luci/view/freifunk/widgets/") do - if file ~= "." and file ~= ".." then - tmpl:value(file) - end -end - -local title = wdg:option(Value, "title", translate("Title")) -title.rmempty = true - -local width = wdg:option(Value, "width", translate("Width")) -width.rmempty = true - -local height = wdg:option(Value, "height", translate("Height")) -height.rmempty = true - -local pr = wdg:option(Value, "paddingright", translate("Padding right")) -pr.rmempty = true - -function m.on_commit(self) - -- clean custom text files whose config has been deleted - local dir = "/usr/share/customtext/" - local active = {} - uci:foreach("freifunk-widgets", "widget", function(s) - if s["template"] == "html" then - table.insert(active, s[".name"]) - end - end ) - local file - for file in fs.dir(dir) do - local filename = string.gsub(file, ".html", "") - if not utl.contains(active, filename) then - fs.unlink(dir .. file) - end - end -end - -return m diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/clear/main.htm b/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/clear/main.htm deleted file mode 100644 index df01839f44..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/clear/main.htm +++ /dev/null @@ -1,15 +0,0 @@ -<% ---[[ -LuCI - Lua Configuration Interface - -Copyright 2012 Manuel Munz - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -]]-- -%> -
diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/html/main.htm b/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/html/main.htm deleted file mode 100644 index 46e063b24f..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/html/main.htm +++ /dev/null @@ -1,42 +0,0 @@ -<% ---[[ -LuCI - Lua Configuration Interface - -Copyright 2012 Manuel Munz - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -]]-- - ---local utl = require "luci.util" -local fs = require "nixio.fs" -local title = data.title -local name = data['.name'] -local file = "/usr/share/customtext/" .. name .. ".html" -local text = fs.readfile(file) -local width = data.width or "100%" -local pr = data.paddingright or "0" -if type(width) == "number" then - width = width .. "px" -end - -%> - -
-
- <% if title then %> -

<%=title%>

- <% end %> - <% if text then %> - <%=text%> - <%else%> - <%:Could not load the custom text from%> "<%=file%>!" - <%end%> - - <%=data.text%> -
-
diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/iframe/main.htm b/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/iframe/main.htm deleted file mode 100644 index f0d89d7425..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/iframe/main.htm +++ /dev/null @@ -1,45 +0,0 @@ -<% ---[[ -LuCI - Lua Configuration Interface - -Copyright 2012 Manuel Munz - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -]]-- - -local url = data['url'] -local name = data['.name'] -local title = data['title'] or "No title set" -local height = data['height'] or "400px" -if type(height) == "number" then - height = height .. "px" -end -local width = data['width'] or "100%" -if type(width) == "number" then - width = width .. "px" -end - -%> - -
-

<%=title%>

- -<% if not url then %> - -<%:No url set.%> - -<% else %> -
- - -<%:Sorry, your browser doesn't support the object tag and cannot display this page:%>
-<%=url%> -
-
-
-<%end%> diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed/main.htm b/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed/main.htm deleted file mode 100644 index ff81ba8a67..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/rssfeed/main.htm +++ /dev/null @@ -1,84 +0,0 @@ -<% ---[[ -LuCI - Lua Configuration Interface - -Copyright 2012 Manuel Munz - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -]]-- - -local sys = require "luci.sys" -local utl = require "luci.util" -local fs = require "nixio.fs" -local i18n = require "luci.i18n" -local url = data.url -local title = data.title or i18n.translate("RSS") -local max = tonumber(data.max) or 10 -local rss -local pr = data.paddingright or "0" -local output = {} -local width = data.width or "100%" -if type(width) == "number" then - width = width .. "px" -end -local name = data['.name'] -local cachetime = tonumber(data.cache) or 3600 -cachefile = "/tmp/" .. name .. ".cache" -%> -
-
-

<%=title%>

- - <% if not url then %> - <%:No url found in config%> - <% else - local mtime = fs.stat(cachefile, "mtime") or 0 - local now = os.time() - expire = mtime + cachetime - - if not fs.access(cachefile) or expire < now then - rss = sys.httpget(url) - if #rss == 0 then - %> - <%:Could not get rss data from%> <%=url%> - <% - else - local count = 0 - for item in string.gmatch(rss, "(.-)") do - if count < max then - local title = item:match("(.-)") - local link = item:match("(.-)") - local desc = item:match("(.-)") or "" - if title and link then - table.insert(output, { title = utl.pcdata(title), link = utl.pcdata(link) }) - end - count = count + 1 - end - end - if count > 0 then - local file = io.open(cachefile, "w") - file:write(utl.serialize_data(output)) - file:close() - end - end - else - local file = assert(io.open(cachefile)) - output = utl.restore_data(file:read'*a') - end - end - - if #output > 0 then - %> -
    - <% for k, v in ipairs(output) do %> -
  • <%=v.title%>
  • - <% end %> -
- <%end%> -
-
diff --git a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/search/main.htm b/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/search/main.htm deleted file mode 100644 index f2e2fb9069..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/luasrc/view/freifunk/widgets/search/main.htm +++ /dev/null @@ -1,54 +0,0 @@ -<% ---[[ -LuCI - Lua Configuration Interface - -Copyright 2012 Manuel Munz - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -]]-- -local utl = require "luci.util" -local title = luci.i18n.translate(data.title or "Search") -local name = data['.name'] -local width = data.width or "100%" - -if type(width) == "number" then - width = width .. "px" -end - -local engines = {} -if type(data.engine) == "table" then - engines = data.engine -else - for k, v in ipairs(string.split(data.engine, " ")) do - table.insert(engines, v) - end -end -%> - -
-

<%=title%>

-
-
-
- <% - local checked = " checked" - for k, v in ipairs(engines) do - local e = utl.split(v, "|") - local name = e[1] - local url = e[2] - if name and url then - %> - > <%=name%>
- <% end - checked = "" - end -%> - -
-
-
diff --git a/package/luci/applications/luci-app-freifunk-widgets/root/etc/config/freifunk-widgets b/package/luci/applications/luci-app-freifunk-widgets/root/etc/config/freifunk-widgets deleted file mode 100644 index 5a9f3254fa..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/root/etc/config/freifunk-widgets +++ /dev/null @@ -1,33 +0,0 @@ -config widget 'example_iframe' - option template 'iframe' - option url 'http://www.freifunk.net' - option title 'Freifunk Homepage' - option height '500px' - option width '100%' - option enabled '0' - -config widget 'example_rss' - option template 'rssfeed' - option url 'http://global.freifunk.net/rss/all/rss.xml' - option max '10' - option cache '3600' - option enabled '0' - option title 'Globaler Freifunk RSS Feed' - -config widget 'example_search' - option template 'search' - option enabled '0' - option title 'Search' - list engine 'Google|http://www.google.de/search?q=' - list engine 'Freifunk Wiki|http://wiki.freifunk.net/index.php?search=' - option width '50%' - option paddingright '8%' - -config widget 'example_customtext' - option template 'html' - option width '50%' - option enabled '0' - -config widget 'example_clear' - option enabled '0' - option template 'clear' diff --git a/package/luci/applications/luci-app-freifunk-widgets/root/lib/upgrade/keep.d/freifunk-widgets b/package/luci/applications/luci-app-freifunk-widgets/root/lib/upgrade/keep.d/freifunk-widgets deleted file mode 100644 index ce5537ac20..0000000000 --- a/package/luci/applications/luci-app-freifunk-widgets/root/lib/upgrade/keep.d/freifunk-widgets +++ /dev/null @@ -1 +0,0 @@ -/usr/share/customtext diff --git a/package/luci/applications/luci-app-fwknopd/Makefile b/package/luci/applications/luci-app-fwknopd/Makefile deleted file mode 100644 index ba7a8568e7..0000000000 --- a/package/luci/applications/luci-app-fwknopd/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# -# Copyright (C) 2015 The LuCI Team -# -# This is free software, licensed under the GNU General Public License v2. -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Fwknopd config - web config for the firewall knock daemon -LUCI_DEPENDS:=+fwknopd +qrencode -PKG_LICENSE:=GPLv2 -PKG_MAINTAINER:=Jonathan Bennett -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-fwknopd/luasrc/controller/fwknopd.lua b/package/luci/applications/luci-app-fwknopd/luasrc/controller/fwknopd.lua deleted file mode 100644 index 069a77ea3e..0000000000 --- a/package/luci/applications/luci-app-fwknopd/luasrc/controller/fwknopd.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2015 Jonathan Bennett --- Licensed to the public under the GNU General Public License v2. - -module("luci.controller.fwknopd", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/fwknopd") then - return - end - - local page - - page = entry({"admin", "services", "fwknopd"}, cbi("fwknopd"), _("Firewall Knock Daemon")) - page.dependent = true -end diff --git a/package/luci/applications/luci-app-fwknopd/luasrc/model/cbi/fwknopd.lua b/package/luci/applications/luci-app-fwknopd/luasrc/model/cbi/fwknopd.lua deleted file mode 100644 index 4358374440..0000000000 --- a/package/luci/applications/luci-app-fwknopd/luasrc/model/cbi/fwknopd.lua +++ /dev/null @@ -1,52 +0,0 @@ --- Copyright 2015 Jonathan Bennett --- 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.")) - -s = m:section(TypedSection, "access", translate("access.conf stanzas")) -- set the access.conf settings -s.anonymous=true -s.addremove=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")) -k2 = s:option(Value, "KEY_BASE64", "KEY_BASE64", translate("Define the symmetric key used for decrypting an incoming SPA \ - packet that is encrypted by the fwknop client with Rijndael.")) -k2:depends("keytype", translate("Base 64 key")) -l1 = s:option(ListValue, "keytype", "Key type") -l1:value("Normal Key", "Normal Key") -l1:value("Base 64 key", "Base 64 key") -k3 = s:option(Value, "HMAC_KEY", "HMAC_KEY", "The hmac key") -k3:depends("hkeytype", "Normal Key") -k4 = s:option(Value, "HMAC_KEY_BASE64", "HMAC_KEY_BASE64", translate("The base64 hmac key")) -k4:depends("hkeytype", "Base 64 key") -l2 = s:option(ListValue, "hkeytype", "HMAC Key type") -l2:value("Normal Key", "Normal Key") -l2:value("Base 64 key", "Base 64 key") -s:option(Value, "OPEN_PORTS", "OPEN_PORTS", translate("Define a set of ports and protocols (tcp or udp) that will be opened if a valid knock sequence is seen. \ - If this entry is not set, fwknopd will attempt to honor any proto/port request specified in the SPA data \ - (unless of it matches any “RESTRICT_PORTS” entries). Multiple entries are comma-separated.")) -s:option(Value, "FW_ACCESS_TIMEOUT", "FW_ACCESS_TIMEOUT", translate("Define the length of time access will be granted by fwknopd through the firewall after a \ - valid knock sequence from a source IP address. If “FW_ACCESS_TIMEOUT” is not set then the default \ - timeout of 30 seconds will automatically be set.")) -s:option(Value, "REQUIRE_SOURCE_ADDRESS", "REQUIRE_SOURCE_ADDRESS", translate("Force all SPA packets to contain a real IP address within the encrypted data. \ - 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 = m:section(TypedSection, "config", translate("fwknopd.conf config options")) -s.anonymous=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(Value, "ENABLE_NAT_DNS", "ENABLE_NAT_DNS", translate("Allow SPA clients to request forwarding destination by DNS name.")) - -return m - diff --git a/package/luci/applications/luci-app-fwknopd/luasrc/view/fwknopd-qr.htm b/package/luci/applications/luci-app-fwknopd/luasrc/view/fwknopd-qr.htm deleted file mode 100644 index 5773f523e5..0000000000 --- a/package/luci/applications/luci-app-fwknopd/luasrc/view/fwknopd-qr.htm +++ /dev/null @@ -1,2 +0,0 @@ -<% print(luci.sys.exec("sh /usr/sbin/gen-qr.sh " .. self.tmp)) %> -<% self.tmp = self.tmp + 1 %> diff --git a/package/luci/applications/luci-app-fwknopd/po/en/fwknopd.po b/package/luci/applications/luci-app-fwknopd/po/en/fwknopd.po deleted file mode 100644 index fbdd8d7532..0000000000 --- a/package/luci/applications/luci-app-fwknopd/po/en/fwknopd.po +++ /dev/null @@ -1,116 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2015-05-12 21:03-0500\n" -"Last-Translator: Jonathan Bennett \n" -"Language-Team: English\n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "" -"Allow SPA clients to request access to services through an iptables firewall " -"instead of just to it." -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" - -msgid "" -"Define a set of ports and protocols (tcp or udp) that will be opened if a " -"valid knock sequence is seen. If this entry is not set, fwknopd will attempt " -"to honor any proto/port request specified in the SPA data (unless of it " -"matches any “RESTRICT_PORTS” entries). Multiple entries are comma-separated." -msgstr "" -"Define a set of ports and protocols (tcp or udp) that will be opened if a " -"valid knock sequence is seen. If this entry is not set, fwknopd will attempt " -"to honor any proto/port request specified in the SPA data (unless of it " -"matches any “RESTRICT_PORTS” entries). Multiple entries are comma-separated." - -msgid "" -"Define the length of time access will be granted by fwknopd through the " -"firewall after a valid knock sequence from a source IP address. If " -"“FW_ACCESS_TIMEOUT” is not set then the default timeout of 30 seconds will " -"automatically be set." -msgstr "" -"Define the length of time access will be granted by fwknopd through the " -"firewall after a valid knock sequence from a source IP address. If " -"“FW_ACCESS_TIMEOUT” is not set then the default timeout of 30 seconds will " -"automatically be set." - -msgid "" -"Define the symmetric key used for decrypting an incoming SPA packet that is " -"encrypted by the fwknop client with Rijndael." -msgstr "" -"Define the symmetric key used for decrypting an incoming SPA packet that is " -"encrypted by the fwknop client with Rijndael." - -msgid "Enable Uci/Luci control" -msgstr "Enable Uci/Luci control" - -msgid "Enable config overwrite" -msgstr "Enable config overwrite" - -msgid "Firewall Knock Daemon" -msgstr "Firewall Knock Daemon" - -msgid "Firewall Knock Operator" -msgstr "Firewall Knock Operator" - -msgid "" -"Force all SPA packets to contain a real IP address within the encrypted " -"data. 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." -msgstr "" -"Force all SPA packets to contain a real IP address within the encrypted " -"data. 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." - -msgid "" -"Maximum age in seconds that an SPA packet will be accepted. defaults to 120 " -"seconds" -msgstr "" -"Maximum age in seconds that an SPA packet will be accepted. defaults to 120 " -"seconds" - -msgid "Normal Key" -msgstr "Normal Key" - -msgid "Specify the ethernet interface on which fwknopd will sniff packets." -msgstr "Specify the ethernet interface on which fwknopd will sniff packets." - -msgid "The base64 hmac key" -msgstr "The base64 hmac key" - -msgid "Use ANY for any source ip" -msgstr "Use ANY for any source ip" - -msgid "" -"When unchecked, the config files in /etc/fwknopd will be used as is, " -"ignoring any settings here." -msgstr "" -"When unchecked, the config files in /etc/fwknopd will be used as is, " -"ignoring any settings here." - -msgid "access.conf stanzas" -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:" diff --git a/package/luci/applications/luci-app-fwknopd/po/pt-br/fwknopd.po b/package/luci/applications/luci-app-fwknopd/po/pt-br/fwknopd.po deleted file mode 100644 index 286b49db31..0000000000 --- a/package/luci/applications/luci-app-fwknopd/po/pt-br/fwknopd.po +++ /dev/null @@ -1,116 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "" -"Allow SPA clients to request access to services through an iptables firewall " -"instead of just to it." -msgstr "" -"Permitir que clientes SPA requeiram acesso a serviços através de um firewall " -"iptables ao invés de apenas fazê-lo." - -msgid "Allow SPA clients to request forwarding destination by DNS name." -msgstr "" -"Permitir que clientes SPA requeiram encaminhamento de destinos por nome DNS." - -msgid "Base 64 key" -msgstr "Chave em formato base64" - -msgid "" -"Define a set of ports and protocols (tcp or udp) that will be opened if a " -"valid knock sequence is seen. If this entry is not set, fwknopd will attempt " -"to honor any proto/port request specified in the SPA data (unless of it " -"matches any “RESTRICT_PORTS” entries). Multiple entries are comma-separated." -msgstr "" -"Define um conjunto de porta e protocolos (TCP ou UDP) que serão abertos se " -"uma sequência de batidas for observada. Se esta entrada não estiver " -"definida, fwknopd irá tentar honrar qualquer requisição de protocolo/porta " -"especificada nos dados SPA (a não ser se casar com qualquer entrada de " -"\"RESTRICT_PORTS\"). Múltiplas entradas serão separadas por vírgula." - -msgid "" -"Define the length of time access will be granted by fwknopd through the " -"firewall after a valid knock sequence from a source IP address. If " -"“FW_ACCESS_TIMEOUT” is not set then the default timeout of 30 seconds will " -"automatically be set." -msgstr "" -"Define a duração do tempo de acesso que será concedido pelo fwknopd através " -"do firewall depois de uma sequência de batidas válida de um endereço IP. Se " -"“FW_ACCESS_TIMEOUT” não estiver definido, o valor padrão será de 30 " -"segundos. " - -msgid "" -"Define the symmetric key used for decrypting an incoming SPA packet that is " -"encrypted by the fwknop client with Rijndael." -msgstr "" -"Define a chave simétrica usada para decifrar um pacote SPA entrante que foi " -"cifrado pelo cliente fwknop com o algoritmo Rijndael." - -msgid "Enable Uci/Luci control" -msgstr "Habilitar o controle UCI/Luci" - -msgid "Enable config overwrite" -msgstr "Habilitar a sobrescrita da configuração" - -msgid "Firewall Knock Daemon" -msgstr "Servidor do Firwall Knock" - -msgid "Firewall Knock Operator" -msgstr "Operador do Firewall Knock" - -msgid "" -"Force all SPA packets to contain a real IP address within the encrypted " -"data. 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." -msgstr "" -"Forçar que todos os pacotes SPA contenham um endereço IP real dentro do " -"pacote cifrado. Isto torna impossível o uso do argumento de linha de comando " -"'-s' no cliente fwknop. Desta forma, ou o argumento '-R' deve ser usada para " -"resolver os endereços externos automaticamente (se o cliente estiver atrás " -"de uma NAT) ou o ciente deve conhecer o seu endereço IP externo e defini-lo " -"através do argumento '-a'." - -msgid "" -"Maximum age in seconds that an SPA packet will be accepted. defaults to 120 " -"seconds" -msgstr "" -"Idade máxima, em segundos, que um pacote SPA será aceito. Padrão é 120 " -"segundos." - -msgid "Normal Key" -msgstr "Chave Normal" - -msgid "Specify the ethernet interface on which fwknopd will sniff packets." -msgstr "" -"Especifica o dispositivo ethernet no qual o fwknopd irá observar os pacotes." - -msgid "The base64 hmac key" -msgstr "A chave de autenticação HMAC em formato base64" - -msgid "Use ANY for any source ip" -msgstr "Use \"ANY\" para qualquer endereço IP de origem" - -msgid "" -"When unchecked, the config files in /etc/fwknopd will be used as is, " -"ignoring any settings here." -msgstr "" -"Quando desmarcado, os arquivos de configuração em /etc/fwknopd serão usados " -"como estão, ignorando qualquer ajustes feitos aqui." - -msgid "access.conf stanzas" -msgstr "Estâncias do access.conf" - -msgid "fwknopd.conf config options" -msgstr "Opções do fwknopd.conf" diff --git a/package/luci/applications/luci-app-fwknopd/po/templates/fwknopd.pot b/package/luci/applications/luci-app-fwknopd/po/templates/fwknopd.pot deleted file mode 100644 index 1010ba70e6..0000000000 --- a/package/luci/applications/luci-app-fwknopd/po/templates/fwknopd.pot +++ /dev/null @@ -1,80 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "" -"Allow SPA clients to request access to services through an iptables firewall " -"instead of just to it." -msgstr "" - -msgid "Allow SPA clients to request forwarding destination by DNS name." -msgstr "" - -msgid "Base 64 key" -msgstr "" - -msgid "" -"Define a set of ports and protocols (tcp or udp) that will be opened if a " -"valid knock sequence is seen. If this entry is not set, fwknopd will attempt " -"to honor any proto/port request specified in the SPA data (unless of it " -"matches any “RESTRICT_PORTS” entries). Multiple entries are comma-separated." -msgstr "" - -msgid "" -"Define the length of time access will be granted by fwknopd through the " -"firewall after a valid knock sequence from a source IP address. If " -"“FW_ACCESS_TIMEOUT” is not set then the default timeout of 30 seconds will " -"automatically be set." -msgstr "" - -msgid "" -"Define the symmetric key used for decrypting an incoming SPA packet that is " -"encrypted by the fwknop client with Rijndael." -msgstr "" - -msgid "Enable Uci/Luci control" -msgstr "" - -msgid "Enable config overwrite" -msgstr "" - -msgid "Firewall Knock Daemon" -msgstr "" - -msgid "Firewall Knock Operator" -msgstr "" - -msgid "" -"Force all SPA packets to contain a real IP address within the encrypted " -"data. 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." -msgstr "" - -msgid "" -"Maximum age in seconds that an SPA packet will be accepted. defaults to 120 " -"seconds" -msgstr "" - -msgid "Normal Key" -msgstr "" - -msgid "Specify the ethernet interface on which fwknopd will sniff packets." -msgstr "" - -msgid "The base64 hmac key" -msgstr "" - -msgid "Use ANY for any source ip" -msgstr "" - -msgid "" -"When unchecked, the config files in /etc/fwknopd will be used as is, " -"ignoring any settings here." -msgstr "" - -msgid "access.conf stanzas" -msgstr "" - -msgid "fwknopd.conf config options" -msgstr "" diff --git a/package/luci/applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd b/package/luci/applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd deleted file mode 100644 index 9e5057e701..0000000000 --- a/package/luci/applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -#-- Copyright 2015 Jonathan Bennett -#-- Licensed to the public under the GNU General Public License v2. -. /lib/functions/network.sh - -[ "$(uci -q get fwknopd.@access[0].KEY)" != "CHANGEME" ] && exit 0 -uci batch < -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Hard Disk Idle Spin-Down module -LUCI_DEPENDS:=+hd-idle - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua b/package/luci/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua deleted file mode 100644 index 9a981acac3..0000000000 --- a/package/luci/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2008 Yanira --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.hd_idle", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/hd-idle") then - return - end - - local page - - page = entry({"admin", "services", "hd_idle"}, cbi("hd_idle"), _("HDD Idle"), 60) - page.dependent = true -end diff --git a/package/luci/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua b/package/luci/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua deleted file mode 100644 index c15fdc028a..0000000000 --- a/package/luci/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua +++ /dev/null @@ -1,29 +0,0 @@ --- Copyright 2008 Yanira --- Licensed to the public under the Apache License 2.0. - -require("nixio.fs") - -m = Map("hd-idle", translate("HDD Idle"), - translate("HDD Idle is a utility program for spinning-down external " .. - "disks after a period of idle time.")) - -s = m:section(TypedSection, "hd-idle", translate("Settings")) -s.anonymous = true - -s:option(Flag, "enabled", translate("Enable")) - -disk = s:option(Value, "disk", translate("Disk")) -disk.rmempty = true -for dev in nixio.fs.glob("/dev/[sh]d[a-z]") do - disk:value(nixio.fs.basename(dev)) -end - -s:option(Value, "idle_time_interval", translate("Idle time")).default = 10 -s.rmempty = true -unit = s:option(ListValue, "idle_time_unit", translate("Idle time unit")) -unit.default = "minutes" -unit:value("minutes", translate("min")) -unit:value("hours", translate("h")) -unit.rmempty = true - -return m diff --git a/package/luci/applications/luci-app-hd-idle/po/ca/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ca/hd_idle.po deleted file mode 100644 index 10ca4cd1cb..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/ca/hd_idle.po +++ /dev/null @@ -1,52 +0,0 @@ -# hd_idle.pot -# generated from ./applications/luci-hd_idle/luasrc/i18n/hd_idle.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2014-07-01 05:48+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Disc" - -msgid "Enable" -msgstr "Habilita" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle és un programa per ralentitzar els discos externs després d'un " -"període de temps inactiu." - -msgid "Idle time" -msgstr "Temps d'inactivitat" - -msgid "Idle time unit" -msgstr "Unitat de temps d'inactivitat" - -msgid "Settings" -msgstr "Ajusts" - -# Hours -msgid "h" -msgstr "h" - -# Minutes (not minimum) -msgid "min" -msgstr "min" - -#~ msgid "Enable debug" -#~ msgstr "Habilita la depuració" diff --git a/package/luci/applications/luci-app-hd-idle/po/cs/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/cs/hd_idle.po deleted file mode 100644 index b77539278e..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/cs/hd_idle.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-hd-idle/luasrc/model/cbi/hd_idle.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2014-04-23 22:33+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Disk" - -msgid "Enable" -msgstr "Povolit" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle je utilita pro vypnutí externích pevných disků po určité době " -"nečinnosti." - -msgid "Idle time" -msgstr "Čas nečinnosti" - -msgid "Idle time unit" -msgstr "Čas nečinnosti - jednotka" - -msgid "Settings" -msgstr "Nastavení" - -# Hodin -msgid "h" -msgstr "h" - -# Minut (ne minimum) -msgid "min" -msgstr "min" - -#~ msgid "Enable debug" -#~ msgstr "Povolit ladění" diff --git a/package/luci/applications/luci-app-hd-idle/po/de/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/de/hd_idle.po deleted file mode 100644 index 79fa603f07..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/de/hd_idle.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2011-06-11 01:55+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Disk" -msgstr "Festplatte" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle ist ein Hilfsprogramm um externe Festplatten nach einer " -"festgelegten Leerlaufzeit herunter zu fahren." - -msgid "Idle time" -msgstr "Leerlaufzeit" - -msgid "Idle time unit" -msgstr "Leerlaufzeiteinheit" - -msgid "Settings" -msgstr "Einstellungen" - -# Hours -msgid "h" -msgstr "Stunden" - -# Minutes (not minimum) -msgid "min" -msgstr "Minuten" - -#~ msgid "Enable debug" -#~ msgstr "Debug-Ausgaben aktivieren" diff --git a/package/luci/applications/luci-app-hd-idle/po/el/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/el/hd_idle.po deleted file mode 100644 index e4f006adf7..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/el/hd_idle.po +++ /dev/null @@ -1,48 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2012-03-18 15:14+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Disk" -msgstr "Δίσκος" - -msgid "Enable" -msgstr "Ενεργοποίηση" - -msgid "HDD Idle" -msgstr "" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" - -msgid "Idle time" -msgstr "" - -msgid "Idle time unit" -msgstr "" - -msgid "Settings" -msgstr "Ρυθμίσεις" - -# Hours -msgid "h" -msgstr "ω" - -# Minutes (not minimum) -msgid "min" -msgstr "λεπτά" - -#~ msgid "Enable debug" -#~ msgstr "Ενεργοποίηση αποσφαλμάτωσης" diff --git a/package/luci/applications/luci-app-hd-idle/po/en/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/en/hd_idle.po deleted file mode 100644 index 3ed519f182..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/en/hd_idle.po +++ /dev/null @@ -1,48 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Disk" -msgstr "Disk" - -msgid "Enable" -msgstr "Enable" - -msgid "HDD Idle" -msgstr "" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." - -msgid "Idle time" -msgstr "Idle time" - -msgid "Idle time unit" -msgstr "Idle time unit" - -msgid "Settings" -msgstr "Settings" - -# Hours -msgid "h" -msgstr "h" - -# Minutes (not minimum) -msgid "min" -msgstr "min" - -#~ msgid "Enable debug" -#~ msgstr "Enable debug" diff --git a/package/luci/applications/luci-app-hd-idle/po/es/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/es/hd_idle.po deleted file mode 100644 index 09dd3b80d1..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/es/hd_idle.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2012-08-22 17:44+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Disco" - -msgid "Enable" -msgstr "Activar" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle es un programa que gestiona el reposo de discos externos tras un " -"tiempo de inactividad." - -msgid "Idle time" -msgstr "Tiempo de inactividad" - -msgid "Idle time unit" -msgstr "Unidad de tiempo" - -msgid "Settings" -msgstr "Configuración" - -# Hours -msgid "h" -msgstr "h" - -# Minutes (not minimum) -msgid "min" -msgstr "minutos" - -#~ msgid "Enable debug" -#~ msgstr "Activar depuración" diff --git a/package/luci/applications/luci-app-hd-idle/po/fr/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/fr/hd_idle.po deleted file mode 100644 index ea30bf192a..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/fr/hd_idle.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2012-11-06 15:20+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Disque" - -msgid "Enable" -msgstr "Activer" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle est un utilitaire pour arrêter la rotation des disques externes " -"après une période d'inactivité." - -msgid "Idle time" -msgstr "Temps d'inactivité" - -msgid "Idle time unit" -msgstr "Unité de temps" - -msgid "Settings" -msgstr "Réglages" - -# Hours -msgid "h" -msgstr "h" - -# Minutes (not minimum) -msgid "min" -msgstr "min" - -#~ msgid "Enable debug" -#~ msgstr "Activer le débogage" diff --git a/package/luci/applications/luci-app-hd-idle/po/he/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/he/hd_idle.po deleted file mode 100644 index 8a73d5f9b8..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/he/hd_idle.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-hd-idle/luasrc/model/cbi/hd_idle.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2011-06-25 11:35+0200\n" -"Last-Translator: GiladL \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Disk" -msgstr "כונן" - -msgid "Enable" -msgstr "אפשר" - -msgid "HDD Idle" -msgstr "" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle הינה תוכנת שירות שמטרתה להקטין את מהירות הסיבוב של כוננים חיצוניים " -"לאחר זמן מסוים של חוסר פעילות." - -msgid "Idle time" -msgstr "זמן חוסר פעילות" - -msgid "Idle time unit" -msgstr "יחידת זמן חוסר פעילות" - -msgid "Settings" -msgstr "הגדרות" - -# Hours -msgid "h" -msgstr "ש'" - -# Minutes (not minimum) -msgid "min" -msgstr "דק'" - -#~ msgid "Enable debug" -#~ msgstr "אפשר ניפוי שגיאות" diff --git a/package/luci/applications/luci-app-hd-idle/po/hu/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/hu/hd_idle.po deleted file mode 100644 index d902ee0f83..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/hu/hd_idle.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-hd-idle/luasrc/model/cbi/hd_idle.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2012-07-10 21:04+0200\n" -"Last-Translator: Gyula \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Lemez" - -msgid "Enable" -msgstr "Engedélyezés" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle egy a külső lemezek adott üresjárati idő után történő leállítására " -"szolgáló segédprogram." - -msgid "Idle time" -msgstr "Üresjárati idő" - -msgid "Idle time unit" -msgstr "Üresjárati idő egysége" - -msgid "Settings" -msgstr "Beállítások" - -# Hours -msgid "h" -msgstr "óra" - -# Minutes (not minimum) -msgid "min" -msgstr "perc" - -#~ msgid "Enable debug" -#~ msgstr "Hibakeresés engedélyezése" diff --git a/package/luci/applications/luci-app-hd-idle/po/it/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/it/hd_idle.po deleted file mode 100644 index 63751c332c..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/it/hd_idle.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2013-02-03 13:54+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Disco" - -msgid "Enable" -msgstr "Abilita" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle è un programma per mettere in standby i dischi esterni dopo un " -"periodo di inattività." - -msgid "Idle time" -msgstr "Tempo di inattività" - -msgid "Idle time unit" -msgstr "Unità di misura del tempo di inattività" - -msgid "Settings" -msgstr "Opzioni" - -# Hours -msgid "h" -msgstr "ora/e" - -# Minutes (not minimum) -msgid "min" -msgstr "min" - -#~ msgid "Enable debug" -#~ msgstr "Abilita debug" diff --git a/package/luci/applications/luci-app-hd-idle/po/ja/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ja/hd_idle.po deleted file mode 100644 index 6023778c8e..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/ja/hd_idle.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2012-11-14 14:40+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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" - -msgid "Disk" -msgstr "ディスク" - -msgid "Enable" -msgstr "有効" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idleはアイドル時に外部ディスクをスピンダウンさせるための、ユーティリティ" -"プログラムです。" - -msgid "Idle time" -msgstr "アイドル時間" - -msgid "Idle time unit" -msgstr "アイドル時間 (単位)" - -msgid "Settings" -msgstr "設定" - -# Hours -msgid "h" -msgstr "時" - -# Minutes (not minimum) -msgid "min" -msgstr "分" - -#~ msgid "Enable debug" -#~ msgstr "デバッグを有効にする" diff --git a/package/luci/applications/luci-app-hd-idle/po/ms/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ms/hd_idle.po deleted file mode 100644 index 361f1ac54f..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/ms/hd_idle.po +++ /dev/null @@ -1,44 +0,0 @@ -# Generated from applications/luci-hd-idle/luasrc/model/cbi/hd_idle.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2010-04-14 10:33+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Disk" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "HDD Idle" -msgstr "" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" - -msgid "Idle time" -msgstr "" - -msgid "Idle time unit" -msgstr "" - -msgid "Settings" -msgstr "" - -# Hours -msgid "h" -msgstr "" - -# Minutes (not minimum) -msgid "min" -msgstr "" diff --git a/package/luci/applications/luci-app-hd-idle/po/no/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/no/hd_idle.po deleted file mode 100644 index 6482a291ee..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/no/hd_idle.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Disk" -msgstr "Disk" - -msgid "Enable" -msgstr "Aktiver" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle er et verktøy for Ã¥ spinne ned eksterne disker etter en periode med " -"inaktivitet." - -msgid "Idle time" -msgstr "Tid inaktiv" - -msgid "Idle time unit" -msgstr "Tidsenhet" - -msgid "Settings" -msgstr "Innstillinger" - -msgid "h" -msgstr "timer" - -msgid "min" -msgstr "minutter" - -#~ msgid "Enable debug" -#~ msgstr "Aktiver feilsøking" diff --git a/package/luci/applications/luci-app-hd-idle/po/pl/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/pl/hd_idle.po deleted file mode 100644 index 29c286f12c..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/pl/hd_idle.po +++ /dev/null @@ -1,51 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2011-06-03 16:09+0200\n" -"Last-Translator: Staszek \n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Disk" -msgstr "Dysk" - -msgid "Enable" -msgstr "Włącz" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle jest narzędziem do zwalniania obrotów zewnętrznych dysków po " -"określonym czasie bezczynności." - -msgid "Idle time" -msgstr "Czas bezczynności" - -msgid "Idle time unit" -msgstr "Jednostka czasu bezczynności" - -msgid "Settings" -msgstr "Ustawienia" - -# Hours -msgid "h" -msgstr "godz." - -# Minutes (not minimum) -msgid "min" -msgstr "min" - -#~ msgid "Enable debug" -#~ msgstr "Włącz tryb debugowania" diff --git a/package/luci/applications/luci-app-hd-idle/po/pt-br/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/pt-br/hd_idle.po deleted file mode 100644 index adcf063dc6..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/pt-br/hd_idle.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2011-10-08 03:12+0200\n" -"Last-Translator: luizluca \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Disk" -msgstr "Disco" - -msgid "Enable" -msgstr "Habilitar" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle é um programa utilitário para ativar o modo \"economia de energia" -"\" (spinning-down) de discos externos após um período de ociosidade." - -msgid "Idle time" -msgstr "Tempo de ociosidade" - -msgid "Idle time unit" -msgstr "Unidade do tempo da ociosidade" - -msgid "Settings" -msgstr "Configurações" - -# Hours -msgid "h" -msgstr "horas" - -# Minutes (not minimum) -msgid "min" -msgstr "minutos" - -#~ msgid "Enable debug" -#~ msgstr "Ativar depuração" diff --git a/package/luci/applications/luci-app-hd-idle/po/pt/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/pt/hd_idle.po deleted file mode 100644 index 81a6ae27e8..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/pt/hd_idle.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2013-05-31 15:28+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Disco" - -msgid "Enable" -msgstr "Ativar" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle é um programa utilitário para activar o modo \"economia de energia" -"\" (spinning-down) de discos externos após um período de ociosidade." - -msgid "Idle time" -msgstr "Tempo de ociosidade" - -msgid "Idle time unit" -msgstr "Unidade de tempo de ociosidade" - -msgid "Settings" -msgstr "Configurações" - -# Hours -msgid "h" -msgstr "h" - -# Minutes (not minimum) -msgid "min" -msgstr "min" - -#~ msgid "Enable debug" -#~ msgstr "Ativar debug" diff --git a/package/luci/applications/luci-app-hd-idle/po/ro/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ro/hd_idle.po deleted file mode 100644 index 31311cec0f..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/ro/hd_idle.po +++ /dev/null @@ -1,53 +0,0 @@ -# Generated from applications/luci-hd-idle/luasrc/model/cbi/hd_idle.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2013-09-25 19:12+0200\n" -"Last-Translator: Mihai \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Disc" - -msgid "Enable" -msgstr "Activeaza" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle este un utilitar pentru a oprit din rotatie hard disc-urile externe " -"dupa o anumita perioada de inactivitate." - -msgid "Idle time" -msgstr "Timp de inactivitate" - -msgid "Idle time unit" -msgstr "Unitatea de timp pentru masurarea inactivitatii" - -msgid "Settings" -msgstr "Setari" - -# Hours -msgid "h" -msgstr "ore" - -# Minutes (not minimum) -msgid "min" -msgstr "minute" - -#~ msgid "Enable debug" -#~ msgstr "Activeaza informatii suplimentare de tip \"debug\"" diff --git a/package/luci/applications/luci-app-hd-idle/po/ru/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ru/hd_idle.po deleted file mode 100644 index e58a32f1de..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/ru/hd_idle.po +++ /dev/null @@ -1,52 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: hd_idle\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2012-08-15 11:24+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Disk" -msgstr "Диск" - -msgid "Enable" -msgstr "Включить" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"Утилита HDD Idle позволяет замедлять внешние диски после определённого " -"времени бездействия." - -msgid "Idle time" -msgstr "Время бездействия" - -msgid "Idle time unit" -msgstr "Единицы времени бездействия" - -msgid "Settings" -msgstr "Настройки" - -# Hours -msgid "h" -msgstr "ч" - -# Minutes (not minimum) -msgid "min" -msgstr "мин" - -#~ msgid "Enable debug" -#~ msgstr "Включить отладку" diff --git a/package/luci/applications/luci-app-hd-idle/po/sk/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/sk/hd_idle.po deleted file mode 100644 index aa82e966b4..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/sk/hd_idle.po +++ /dev/null @@ -1,38 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Disk" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "HDD Idle" -msgstr "" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" - -msgid "Idle time" -msgstr "" - -msgid "Idle time unit" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "h" -msgstr "" - -msgid "min" -msgstr "" diff --git a/package/luci/applications/luci-app-hd-idle/po/sv/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/sv/hd_idle.po deleted file mode 100644 index f2ce8f1019..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/sv/hd_idle.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Disk" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "HDD Idle" -msgstr "" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" - -msgid "Idle time" -msgstr "" - -msgid "Idle time unit" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "h" -msgstr "" - -msgid "min" -msgstr "" diff --git a/package/luci/applications/luci-app-hd-idle/po/templates/hd_idle.pot b/package/luci/applications/luci-app-hd-idle/po/templates/hd_idle.pot deleted file mode 100644 index b8aedcd37a..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/templates/hd_idle.pot +++ /dev/null @@ -1,31 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Disk" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "HDD Idle" -msgstr "" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" - -msgid "Idle time" -msgstr "" - -msgid "Idle time unit" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "h" -msgstr "" - -msgid "min" -msgstr "" diff --git a/package/luci/applications/luci-app-hd-idle/po/tr/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/tr/hd_idle.po deleted file mode 100644 index aed11b6c89..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/tr/hd_idle.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-hd-idle/luasrc/model/cbi/hd_idle.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2012-10-11 23:15+0200\n" -"Last-Translator: vincenzo \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Disk" - -msgid "Enable" -msgstr "Kullanıma Aç" - -msgid "HDD Idle" -msgstr "Harddisk-Park" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"Harddisk-Park belirli bir zaman sonra diskleri beklemeye alan bir yardımcı " -"programdır" - -msgid "Idle time" -msgstr "Bekleme Zamanı" - -msgid "Idle time unit" -msgstr "bekleme zamanı birimi" - -msgid "Settings" -msgstr "Ayarlar" - -# Hours -msgid "h" -msgstr "s" - -# Minutes (not minimum) -msgid "min" -msgstr "d" - -#~ msgid "Enable debug" -#~ msgstr "Hata Ayıklama" diff --git a/package/luci/applications/luci-app-hd-idle/po/uk/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/uk/hd_idle.po deleted file mode 100644 index 3d8e45c91c..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/uk/hd_idle.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-hd-idle/luasrc/model/cbi/hd_idle.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2013-08-13 15:59+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Disk" -msgstr "Диск" - -msgid "Enable" -msgstr "Активувати" - -#, fuzzy -msgid "HDD Idle" -msgstr "HD-простій" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" - -msgid "Idle time" -msgstr "Час простою" - -msgid "Idle time unit" -msgstr "" - -msgid "Settings" -msgstr "Налаштування" - -# Hours -msgid "h" -msgstr "" - -# Minutes (not minimum) -msgid "min" -msgstr "хв" - -#~ msgid "Enable debug" -#~ msgstr "Активувати налагодження" diff --git a/package/luci/applications/luci-app-hd-idle/po/vi/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/vi/hd_idle.po deleted file mode 100644 index a5d4ffeead..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/vi/hd_idle.po +++ /dev/null @@ -1,53 +0,0 @@ -# hd_idle.pot -# generated from ./applications/luci-hd_idle/luasrc/i18n/hd_idle.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2009-08-12 17:50+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "Disk" -msgstr "Ổ đĩa" - -#, fuzzy -msgid "Enable" -msgstr "Kích hoạt debug" - -msgid "HDD Idle" -msgstr "HDD Idle" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "" -"HDD Idle là một chÆ°Æ¡ng trình tiện ích để quay các đĩa ngoài sau một khoảng " -"thời gian idle." - -#, fuzzy -msgid "Idle time" -msgstr "Thời gian Idle" - -#, fuzzy -msgid "Idle time unit" -msgstr "Đơn vị thời gian Idle" - -msgid "Settings" -msgstr "Sắp đặt" - -# Hours -msgid "h" -msgstr "" - -# Minutes (not minimum) -msgid "min" -msgstr "" - -#~ msgid "Enable debug" -#~ msgstr "Kích hoạt debug" diff --git a/package/luci/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po deleted file mode 100644 index d67abfd593..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po +++ /dev/null @@ -1,48 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 10:33+0200\n" -"PO-Revision-Date: 2012-09-03 17:57+0200\n" -"Last-Translator: nKsyn \n" -"Language-Team: QQ Group:75543259 \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" - -msgid "Disk" -msgstr "硬盘" - -msgid "Enable" -msgstr "开启" - -msgid "HDD Idle" -msgstr "硬盘休眠" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "硬盘休眠是一个让硬盘在空闲一段时间后休眠的工具" - -msgid "Idle time" -msgstr "空闲时间" - -msgid "Idle time unit" -msgstr "空闲时间单位" - -msgid "Settings" -msgstr "设置" - -# Hours -msgid "h" -msgstr "小时" - -# Minutes (not minimum) -msgid "min" -msgstr "分钟" - -#~ msgid "Enable debug" -#~ msgstr "开启调试" diff --git a/package/luci/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po deleted file mode 100644 index dee14cb089..0000000000 --- a/package/luci/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po +++ /dev/null @@ -1,44 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-07 15:47+0200\n" -"Last-Translator: Ethan \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Disk" -msgstr "磁碟" - -msgid "Enable" -msgstr "啟用" - -msgid "HDD Idle" -msgstr "硬碟休眠" - -msgid "" -"HDD Idle is a utility program for spinning-down external disks after a " -"period of idle time." -msgstr "硬碟休眠是控制當硬碟閒置一段時間後進入休眠模式的工具" - -msgid "Idle time" -msgstr "休眠時間" - -msgid "Idle time unit" -msgstr "休眠時間單位" - -msgid "Settings" -msgstr "設定" - -msgid "h" -msgstr "小時" - -msgid "min" -msgstr "分鐘" - -#~ msgid "Enable debug" -#~ msgstr "啟用偵錯模式" diff --git a/package/luci/applications/luci-app-hd-idle/root/etc/uci-defaults/40_luci-hd_idle b/package/luci/applications/luci-app-hd-idle/root/etc/uci-defaults/40_luci-hd_idle deleted file mode 100755 index 92f4356367..0000000000 --- a/package/luci/applications/luci-app-hd-idle/root/etc/uci-defaults/40_luci-hd_idle +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@hd-idle[-1] - add ucitrack hd-idle - set ucitrack.@hd-idle[-1].init=hd-idle - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-ltqtapi/Makefile b/package/luci/applications/luci-app-ltqtapi/Makefile deleted file mode 100644 index bf4a99928b..0000000000 --- a/package/luci/applications/luci-app-ltqtapi/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Lantiq Devices -LUCI_DEPENDS:=@BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua b/package/luci/applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua deleted file mode 100644 index 46c7684015..0000000000 --- a/package/luci/applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua +++ /dev/null @@ -1,40 +0,0 @@ --- Copyright 2019 John Crispin --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.ltqtapi", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/telephony") then - return - end - - page = node("admin", "telephony") - page.target = firstchild() - page.title = _("VoIP") - page.order = 90 - - entry({"admin", "telephony", "account"}, cbi("luci_ltqtapi/account") , _("Account"), 10) - entry({"admin", "telephony", "contact"}, cbi("luci_ltqtapi/contact") , _("Contacts"), 20) - - entry({"admin", "telephony", "status"}, call("tapi_status")).leaf = true -end - -function tapi_status() - local st = { } - local state = require "luci.model.uci".cursor_state() - state:load("telephony") - - st.status = "Offline"; - if state:get("telephony", "state", "port1", "0") == "0" then - st.line1 = "Idle"; - else - st.line1 = "Calling"; - end - if state:get("telephony", "state", "port2", "0") == "0" then - st.line2 = "Idle"; - else - st.line2 = "Calling"; - end - luci.http.prepare_content("application/json") - luci.http.write_json(st) -end diff --git a/package/luci/applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua b/package/luci/applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua deleted file mode 100644 index 907db56e89..0000000000 --- a/package/luci/applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Copyright 2010 John Crispin --- Licensed to the public under the Apache License 2.0. - -m = Map("telephony", translate("VoIP")) -m.on_after_commit = function() luci.sys.call("/etc/init.d/telephony restart") end - -s = m:section(TypedSection, "account", translate("Account"), translate("Here You can specify the SIP account that you want to use.")) -s.anonymous = true -s.addremove = true - -s:option(Value, "realm", translate("Realm")) -s:option(Value, "username", translate("Username")) -s:option(Value, "password", translate("Password")) -s:option(Flag, "disabled", translate("Disabled")) - -return m diff --git a/package/luci/applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua b/package/luci/applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua deleted file mode 100644 index b32feded72..0000000000 --- a/package/luci/applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua +++ /dev/null @@ -1,20 +0,0 @@ --- Copyright 2010 John Crispin --- Licensed to the public under the Apache License 2.0. - -m = Map("telephony", translate("VoIP")) -m.on_after_commit = function() luci.sys.call("/etc/init.d/telephony reload") end - -s = m:section(TypedSection, "contact", translate("Contact"), translate("Here You can specify the SIP contacts that you want to use.")) -s.anonymous = true -s.addremove = true -s.template = "cbi/tsection" - -s:option(Value, "desc", translate("Name")) -s:option(Value, "code", translate("Shortdial")) -s:option(Value, "dial", translate("Dial")) - -t = s:option(ListValue, "type", translate("Type")) -t:value("sip", "SIP") -t:value("realm", "Landline") - -return m diff --git a/package/luci/applications/luci-app-ltqtapi/luasrc/view/admin_status/index/telephony.htm b/package/luci/applications/luci-app-ltqtapi/luasrc/view/admin_status/index/telephony.htm deleted file mode 100644 index c7a58dd3ea..0000000000 --- a/package/luci/applications/luci-app-ltqtapi/luasrc/view/admin_status/index/telephony.htm +++ /dev/null @@ -1 +0,0 @@ -<%+telephony_status%> diff --git a/package/luci/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm b/package/luci/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm deleted file mode 100644 index d861ef9fcb..0000000000 --- a/package/luci/applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm +++ /dev/null @@ -1,32 +0,0 @@ - - -
- <%:Current Telephony State%> - - - - - - - - - -
<%:Uplink%><%:Port1%><%:Port2%>

<%:Collecting data...%>
-
diff --git a/package/luci/applications/luci-app-lxc/Makefile b/package/luci/applications/luci-app-lxc/Makefile deleted file mode 100644 index 9f313dfb11..0000000000 --- a/package/luci/applications/luci-app-lxc/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2017 Dan Luedtke -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LXC management Web UI -LUCI_DEPENDS:=+luci-mod-admin-full +lxc +lxc-create +liblxc +rpcd-mod-lxc +getopt +xz -LUCI_PKGARCH:=all - -PKG_MAINTAINER:=Petar Koretic - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif b/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif deleted file mode 100644 index d09febf1273b9a20ed89f69b19c9837c325b6db2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmV-60m=SHNk%w1VG;lm0K^{vZ~bkE`i3IOOtAj1%l^tt)@2&AVF&*PSoufY_~E|k z)JgwHS>#w4z1r7`qnUWO@4hjMkkD&(? z0tz3V7O9d47M&sq1`M&7ve%u0>iE{m+T+XZwTj1Er9cj@j0>9S$296cLx79uX8676b;Mmj(nD z0vijDs2vL%0v{X*39y$P2?!h_5Df&mpS%PO5F-K&7<&n-5d+>4 S5eN;-E)Uxq8{)YwApkob^ml{+ diff --git a/package/luci/applications/luci-app-lxc/luasrc/controller/lxc.lua b/package/luci/applications/luci-app-lxc/luasrc/controller/lxc.lua deleted file mode 100644 index ea7adbafbb..0000000000 --- a/package/luci/applications/luci-app-lxc/luasrc/controller/lxc.lua +++ /dev/null @@ -1,167 +0,0 @@ ---[[ - -LuCI LXC module - -Copyright (C) 2014, Cisco Systems, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Author: Petar Koretic - -]]-- - -module("luci.controller.lxc", package.seeall) - -require "ubus" -local conn = ubus.connect() -if not conn then - error("Failed to connect to ubus") -end - - -function fork_exec(command) - local pid = nixio.fork() - if pid > 0 then - return - elseif pid == 0 then - -- change to root dir - nixio.chdir("/") - - -- patch stdin, out, err to /dev/null - local null = nixio.open("/dev/null", "w+") - if null then - nixio.dup(null, nixio.stderr) - nixio.dup(null, nixio.stdout) - nixio.dup(null, nixio.stdin) - if null:fileno() > 2 then - null:close() - end - end - - -- replace with target command - nixio.exec("/bin/sh", "-c", command) - end -end - -function index() - page = node("admin", "services", "lxc") - page.target = cbi("lxc") - page.title = _("LXC Containers") - page.order = 70 - - page = entry({"admin", "services", "lxc_create"}, call("lxc_create"), nil) - page.leaf = true - - page = entry({"admin", "services", "lxc_action"}, call("lxc_action"), nil) - page.leaf = true - - page = entry({"admin", "services", "lxc_get_downloadable"}, call("lxc_get_downloadable"), nil) - page.leaf = true - - page = entry({"admin", "services", "lxc_configuration_get"}, call("lxc_configuration_get"), nil) - page.leaf = true - - page = entry({"admin", "services", "lxc_configuration_set"}, call("lxc_configuration_set"), nil) - page.leaf = true - -end - -function lxc_get_downloadable() - luci.http.prepare_content("application/json") - - local f = io.popen('uname -m', 'r') - local target = f:read('*a') - f:close() - target = target:gsub("^%s*(.-)%s*$", "%1") - - local templates = {} - - local f = io.popen('lxc-create -n just_want_to_list_available_lxc_templates -t download -- --list', 'r') - - for line in f:lines() do - local dist,version = line:match("^(%S+)%s+(%S+)%s+" .. target .. "%s+default%s+%S+$") - if dist~=nil and version~=nil then templates[#templates + 1] = dist .. ":" .. version end - end - - f:close() - luci.http.write_json(templates) -end - -function lxc_create(lxc_name, lxc_template) - luci.http.prepare_content("text/plain") - - local uci = require("uci").cursor() - - local url = uci:get("lxc", "lxc", "url") - - if not pcall(dofile, "/etc/openwrt_release") then - return luci.http.write("1") - end - - local f = io.popen('uname -m', 'r') - local target = f:read('*a') - f:close() - target = target:gsub("^%s*(.-)%s*$", "%1") - - local lxc_dist = lxc_template:gsub("(.*):(.*)", '%1') - local lxc_release = lxc_template:gsub("(.*):(.*)", '%2') - - local data = conn:call("lxc", "create", { name = lxc_name, template = "download", args = { "--server", url, "--no-validate", "--dist", lxc_dist, "--release", lxc_release, "--arch", target } } ) - - luci.http.write(data) -end - -function lxc_action(lxc_action, lxc_name) - luci.http.prepare_content("application/json") - - local data, ec = conn:call("lxc", lxc_action, lxc_name and { name = lxc_name} or {} ) - - luci.http.write_json(ec and {} or data) -end - -function lxc_get_config_path() - local f = io.open("/etc/lxc/lxc.conf", "r") - local content = f:read("*all") - f:close() - local ret = content:match('^%s*lxc.lxcpath%s*=%s*([^%s]*)') - if ret then - return ret .. "/" - else - return "/srv/lxc/" - end -end - -function lxc_configuration_get(lxc_name) - luci.http.prepare_content("text/plain") - - local f = io.open(lxc_get_config_path() .. lxc_name .. "/config", "r") - local content = f:read("*all") - f:close() - - luci.http.write(content) -end - -function lxc_configuration_set(lxc_name) - luci.http.prepare_content("text/plain") - - local lxc_configuration = luci.http.formvalue("lxc_configuration") - - if lxc_configuration == nil then - return luci.http.write("1") - end - - local f, err = io.open(lxc_get_config_path() .. lxc_name .. "/config","w+") - if not f then - return luci.http.write("2") - end - - f:write(lxc_configuration) - f:close() - - luci.http.write("0") -end - diff --git a/package/luci/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua b/package/luci/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua deleted file mode 100644 index ac0fdff332..0000000000 --- a/package/luci/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua +++ /dev/null @@ -1,31 +0,0 @@ ---[[ - -LuCI LXC module - -Copyright (C) 2014, Cisco Systems, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Author: Petar Koretic - -]]-- - -local fs = require "nixio.fs" - -m = Map("lxc", translate("LXC Containers")) - -if fs.access("/etc/config/lxc") then - m:section(SimpleSection).template = "lxc" - - s = m:section(TypedSection, "lxc", translate("Options")) - s.anonymous = true - s.addremove = false - - s:option(Value, "url", translate("Containers URL")) -end - -return m diff --git a/package/luci/applications/luci-app-lxc/luasrc/view/lxc.htm b/package/luci/applications/luci-app-lxc/luasrc/view/lxc.htm deleted file mode 100644 index edfff8e063..0000000000 --- a/package/luci/applications/luci-app-lxc/luasrc/view/lxc.htm +++ /dev/null @@ -1,458 +0,0 @@ -<%# - -LuCI LXC module - -Copyright (C) 2014, Cisco Systems, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Author: Petar Koretic - --%> - -
- <%:Available Containers%> -
- - - - - - -
<%:Name%><%:Status%><%:Actions%>
-
-
- -
- -
- -
-
- <%:Create New Container%> -
- - - - - - - - - - - -
<%:Name%><%:Template%><%:Actions%>
- - - - - - -
-
-
- -
- -
- -
- - - diff --git a/package/luci/applications/luci-app-lxc/root/etc/config/lxc b/package/luci/applications/luci-app-lxc/root/etc/config/lxc deleted file mode 100644 index 5572c735fa..0000000000 --- a/package/luci/applications/luci-app-lxc/root/etc/config/lxc +++ /dev/null @@ -1,6 +0,0 @@ -# -# lxc uci configuration -# - -config lxc 'lxc' - option url 'virtualwrt.org/containers/' diff --git a/package/luci/applications/luci-app-meshwizard/Makefile b/package/luci/applications/luci-app-meshwizard/Makefile deleted file mode 100644 index fb2610eb0e..0000000000 --- a/package/luci/applications/luci-app-meshwizard/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Shellscript based wizard to setup mesh networks -LUCI_DEPENDS:=+meshwizard - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-meshwizard/luasrc/controller/meshwizard.lua b/package/luci/applications/luci-app-meshwizard/luasrc/controller/meshwizard.lua deleted file mode 100644 index 0ad76b521b..0000000000 --- a/package/luci/applications/luci-app-meshwizard/luasrc/controller/meshwizard.lua +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -module "luci.controller.meshwizard" - -function index() - entry({"admin", "freifunk", "meshwizard"}, cbi("freifunk/meshwizard"), _("Mesh Wizard"), 40) -end - diff --git a/package/luci/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua b/package/luci/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua deleted file mode 100644 index 62ce25effb..0000000000 --- a/package/luci/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua +++ /dev/null @@ -1,196 +0,0 @@ --- wizard rewrite wip - -local uci = require "luci.model.uci".cursor() -local sys = require "luci.sys" -local util = require "luci.util" -local ip = require "luci.ip" - -local community = "profile_" .. (uci:get("freifunk", "community", "name") or "Freifunk") -local mesh_network = ip.IPv4(uci:get_first(community, "community", "mesh_network") or "10.0.0.0/8") -local community_ipv6 = uci:get_first(community, "community", "ipv6") or 0 -local community_ipv6mode = uci:get_first(community, "community", "ipv6_config") or "static" -local meshkit_ipv6 = uci:get("meshwizard", "ipv6", "enabled") or 0 -local community_vap = uci:get_first(community, "community", "vap") or 0 - -m = Map("meshwizard", translate("Wizard"), translate("This wizard will assist you in setting up your router for Freifunk " .. - "or another similar wireless community network.")) - -n = m:section(NamedSection, "netconfig", nil, translate("Interfaces")) -n.anonymous = true - --- common functions - -function cbi_configure(device) - local configure = n:taboption(device, Flag, device .. "_config", translate("Configure this interface"), - translate("Note: this will set up this interface for mesh operation, i.e. add it to zone 'freifunk' and enable olsr.")) -end - -function cbi_ip4addr(device) - local ip4addr = n:taboption(device, Value, device .. "_ip4addr", translate("Mesh IP address"), - translate("This is a unique address in the mesh (e.g. 10.1.1.1) and has to be registered at your local community.")) - ip4addr:depends(device .. "_config", 1) - ip4addr.datatype = "ip4addr" - function ip4addr.validate(self, value) - local x = ip.IPv4(value) - if mesh_network:contains(x) then - return value - else - return nil, translate("The given IP address is not inside the mesh network range ") .. - "(" .. mesh_network:string() .. ")." - end - end -end - -function cbi_ip6addr(device) - local ip6addr = n:taboption(device, Value, device .. "_ip6addr", translate("Mesh IPv6 address"), - translate("This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and has to be registered at your local community.")) - ip6addr:depends(device .. "_config", 1) - ip6addr.datatype = "ip6addr" -end - - -function cbi_dhcp(device) - local dhcp = n:taboption(device, Flag, device .. "_dhcp", translate("Enable DHCP"), - translate("DHCP will automatically assign ip addresses to clients")) - dhcp:depends(device .. "_config", 1) - dhcp.rmempty = true -end - -function cbi_ra(device) - local ra = n:taboption(device, Flag, device .. "_ipv6ra", translate("Enable RA"), - translate("Send router advertisements on this device.")) - ra:depends(device .. "_config", 1) - ra.rmempty = true -end - -function cbi_dhcprange(device) - local dhcprange = n:taboption(device, Value, device .. "_dhcprange", translate("DHCP IP range"), - translate("The IP range from which clients are assigned ip addresses (e.g. 10.1.2.1/28). " .. - "If this is a range inside your mesh network range, then it will be announced as HNA. Any other range will use NAT. " .. - "If left empty then the defaults from the community profile will be used.")) - dhcprange:depends(device .. "_dhcp", "1") - dhcprange.rmempty = true - dhcprange.datatype = "ip4addr" -end --- create tabs and config for wireless -local nets={} -uci:foreach("wireless", "wifi-device", function(section) - local device = section[".name"] - table.insert(nets, device) -end) - -local wired_nets = {} -uci:foreach("network", "interface", function(section) - local device = section[".name"] - if not util.contains(nets, device) and device ~= "loopback" and not device:find("wireless") then - table.insert(nets, device) - table.insert(wired_nets, device) - end -end) - -for _, net in util.spairs(nets, function(a,b) return (nets[a] < nets[b]) end) do - n:tab(net, net) -end - --- create cbi config for wireless -uci:foreach("wireless", "wifi-device", function(section) - local device = section[".name"] - local hwtype = section.type - local syscc = section.country or uci:get(community, "wifi_device", "country") or - uci:get("freifunk", "wifi_device", "country") - - cbi_configure(device) - - -- Channel selection - - if hwtype == "mac80211" then - sys.exec("iw reg set " .. syscc) - elseif hwtype == "broadcom" then - sys.exec ("wlc country " .. syscc) - end - - local chan = n:taboption(device, ListValue, device .. "_channel", translate("Channel"), - translate("Your device and neighbouring nodes have to use the same channel.")) - chan:depends(device .. "_config", 1) - chan:value('default') - - local iwinfo = sys.wifi.getiwinfo(device) - if iwinfo and iwinfo.freqlist then - for _, f in ipairs(iwinfo.freqlist) do - if not f.restricted then - chan:value(f.channel) - end - end - end - -- IPv4 address - cbi_ip4addr(device) - - -- DHCP enable - cbi_dhcp(device) - - -- DHCP range - cbi_dhcprange(device) - - -- IPv6 addr and RA - if community_ipv6 == "1" then - if community_ipv6mode == "static" then - cbi_ip6addr(device) - end - cbi_ra(device) - end - - -- Enable VAP - local supports_vap = 0 - if sys.call("/usr/bin/meshwizard/helpers/supports_vap.sh " .. device .. " " .. hwtype) == 0 then - supports_vap = 1 - end - if supports_vap == 1 then - local vap = n:taboption(device, Flag, device .. "_vap", translate("Virtual Access Point (VAP)"), - translate("This will setup a new virtual wireless interface in Access Point mode.")) - vap:depends(device .. "_dhcp", "1") - vap.rmempty = true - if community_vap == "1" then - vap.default = "1" - end - end -end) - -for _, device in pairs(wired_nets) do - cbi_configure(device) - cbi_ip4addr(device) - cbi_dhcp(device) - cbi_dhcprange(device) - -- IPv6 addr and RA - if community_ipv6 == "1" then - if community_ipv6mode == "static" then - cbi_ip6addr(device) - end - cbi_ra(device) - end -end - --- General settings -g = m:section(TypedSection, "general", translate("General Settings")) -g.anonymous = true - -local cleanup = g:option(Flag, "cleanup", translate("Cleanup config"), - translate("If this is selected then config is cleaned before setting new config options.")) -cleanup.default = "1" - -local restrict = g:option(Flag, "local_restrict", translate("Protect LAN"), - translate("Check this to protect your LAN from other nodes or clients") .. " (" .. translate("recommended") .. ").") - -local share = g:option(Flag, "sharenet", translate("Share your internet connection"), - translate("Select this to allow others to use your connection to access the internet.")) - share.rmempty = true - --- IPv6 config -if community_ipv6 == "1" then - v6 = m:section(NamedSection, "ipv6", nil, translate("IPv6 Settings")) - local enabled = v6:option(Flag, "enabled", translate("Enabled"), - translate("Activate or deactivate IPv6 config globally.")) - enabled.default = meshkit_ipv6 - enabled.rmempty = false -end - -return m diff --git a/package/luci/applications/luci-app-meshwizard/po/ca/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/ca/meshwizard.po deleted file mode 100644 index 6d7bf936bc..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/ca/meshwizard.po +++ /dev/null @@ -1,144 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-01 23:43+0200\n" -"PO-Revision-Date: 2014-07-01 06:11+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "Activa o desactiva la configuració IPv6 globalment." - -msgid "Channel" -msgstr "Canal" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "Neteja la configuració" - -msgid "Configure this interface" -msgstr "Configura aquesta interfície" - -msgid "DHCP IP range" -msgstr "Rang IP de DHCP" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "DHCP assignarà automàticament adreces IP als clients" - -msgid "Enable DHCP" -msgstr "Habilita DHCP" - -msgid "Enable RA" -msgstr "Habilita RA" - -msgid "Enabled" -msgstr "Habilitat" - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "IPv6 Settings" -msgstr "Ajusts IPv6" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" -"Si això està seleccionat, la configuració es neteja abans d'establir noves " -"opcions de configuració." - -msgid "Interfaces" -msgstr "Interfícies" - -msgid "Mesh IP address" -msgstr "Adreça IP en malla" - -msgid "Mesh IPv6 address" -msgstr "Adreça IPv6 en malla" - -msgid "Mesh Wizard" -msgstr "Ajudant de malla" - -#, fuzzy -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" -"Nota: això configurarà aquesta interfície per a operació en malla, és a dir, " -"la afegirà a la zona 'freifunk' i habilitarà l'OLSR." - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Seleccioneu aquesta opció per permetre que altres utilitzin la vostra " -"connexió per accedir a Internet." - -msgid "Send router advertisements on this device." -msgstr "Envia publicitats d'encaminador en aquest dispositiu." - -msgid "Share your internet connection" -msgstr "Comparteix la vostra connexió a Internet" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" -"El rang IP del qual s'assignen adreces IP als clients (per exemple, " -"10.1.2.1/28). Si aquest és un rang dins del vostre rang de xarxa en malla, " -"s'anunciarà com HNA. Qualsevol altre rang utilitzarà NAT. Si deixat en " -"blanc, els valors per defecte del perfil comunitari s'utilitzaran." - -msgid "The given IP address is not inside the mesh network range" -msgstr "L'adreça IP donada no està dins del rang de la xarxa en malla" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" -"Aquesta és una adreça IPv4 única en notació CIDR (per exemple, " -"2001:1:2:3::1/64) i ha de ser registrada a la vostra comunitat local." - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" -"Aquesta és una adreça única en la malla (per exemple, 10.1.1.1) i ha de ser " -"registrada a la vostra comunitat local." - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" -"Això configurarà una nova interfície sense fil virtual en mode de punt " -"d'accés." - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" -"Aquest ajudant us ajudarà a configurar el vostre encaminador per al Freifunk " -"o altre xarxa comunitària sense fil similar." - -msgid "Virtual Access Point (VAP)" -msgstr "Punt d'accés virtual (VAP)" - -msgid "Wizard" -msgstr "Ajudant" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" -"El vostre dispositiu i els nodes veïns han d'utilitzar el mateix canal." - -msgid "recommended" -msgstr "recomanat" diff --git a/package/luci/applications/luci-app-meshwizard/po/cs/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/cs/meshwizard.po deleted file mode 100644 index b1253d0190..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/cs/meshwizard.po +++ /dev/null @@ -1,122 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-21 14:39+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "Kanál" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "Nastavit toto rozhraní" - -msgid "DHCP IP range" -msgstr "DHCP IP rozsah" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "Povolit DHCP" - -msgid "Enable RA" -msgstr "Povolit RA" - -msgid "Enabled" -msgstr "Povoleno" - -msgid "General Settings" -msgstr "Obecné nastavení" - -msgid "IPv6 Settings" -msgstr "Nastavení IPv6" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "Rozhraní" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "Průvodce mesh" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "Ochrana LAN" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "Sdílet vaše internetové připojení" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "Virtuální přístupový bod (VAP)" - -msgid "Wizard" -msgstr "Průvodce" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "doporučeno" diff --git a/package/luci/applications/luci-app-meshwizard/po/de/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/de/meshwizard.po deleted file mode 100644 index ef7ba8a96a..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/de/meshwizard.po +++ /dev/null @@ -1,145 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-26 15:36+0200\n" -"PO-Revision-Date: 2012-11-21 20:51+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "IPv6 global aktivieren oder deaktivieren" - -msgid "Channel" -msgstr "Kanal" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" -"Aktivieren um Zugriff auf das LAN von anderen Knoten oder Clients zu " -"verhindern" - -msgid "Cleanup config" -msgstr "Konfiguration aufräumen" - -msgid "Configure this interface" -msgstr "Diese Schnittstelle einrichten" - -msgid "DHCP IP range" -msgstr "DHCP-Adressbereich" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "DHCP vergibt automatisch IP-Adressen an Clients" - -msgid "Enable DHCP" -msgstr "DHCP aktivieren" - -msgid "Enable RA" -msgstr "RAs aktivieren" - -msgid "Enabled" -msgstr "Aktiviert" - -msgid "General Settings" -msgstr "Allgemeine Einstellungen" - -msgid "IPv6 Settings" -msgstr "IPv6 Einstellungen" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" -"Wenn diese Option aktiviert wird, werden eventuell vorhandene Einstellungen " -"aufgeräumt bevor neue Optionen gesetzt werden." - -msgid "Interfaces" -msgstr "Schnittstellen" - -msgid "Mesh IP address" -msgstr "Mesh-IP-Adresse" - -msgid "Mesh IPv6 address" -msgstr "Mesh-IPv6-Adresse" - -msgid "Mesh Wizard" -msgstr "Mesh-Assistent" - -#, fuzzy -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" -"Hinweis: Dies konfiguriert die Schnittstelle für den Mesh-Betrieb, d.h. sie " -"wird zur Freifunk-Zone hinzugefügt und OLSR eingerichtet." - -msgid "Protect LAN" -msgstr "LAN schützen" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Diese Option aktivieren um anderen den Zugriff auf die lokale " -"Internetverbindung zu gestatten" - -msgid "Send router advertisements on this device." -msgstr "Router-Advertisements auf dieser Schnittstelle senden" - -msgid "Share your internet connection" -msgstr "Internetverbindung freigeben" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" -"Der Adressbereich, aus welchem den Clients IP-Adressen zugewiesen werden (z." -"B. 10.1.2.1/28). Liegt dieser Adressbereich außerhalb des Mesh-Bereiches, " -"dann wird dieser per HNA angekündigt. Leer lassen um den Standardwert aus " -"dem Community-Profil zu verwenden." - -msgid "The given IP address is not inside the mesh network range" -msgstr "Die angegebene IP-Adresse ist nicht Teil des Mesh-Adressbereiches" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" -"Diese ist eine eindeutige IPv6-Adresse in CIDR-Notation (z.B. " -"2001:1:2:3::1/64) welche bei der lokalen Community registriert werden muss." - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" -"Dies ist die eindeutige IP-Adresse des Mesh-Knotens (z.B. 10.1.1.1). Diese " -"muss bei der lokalen Community registriert werden." - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" -"Dies richtet eine weitere, virtuelle WLAN-Schnittstelle im Access-Point-" -"Modus ein." - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" -"Der Assistent hilft beim Einrichten des Routers für ein Freifunk- oder " -"ähnliches Wireless-Community-Netzwerk." - -msgid "Virtual Access Point (VAP)" -msgstr "Virtueller Access-Point (VAP)" - -msgid "Wizard" -msgstr "Assistent" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "Dieses Gerät und benachbarte Knoten müssen den selben Kanal verwenden." - -msgid "recommended" -msgstr "empfohlen" diff --git a/package/luci/applications/luci-app-meshwizard/po/el/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/el/meshwizard.po deleted file mode 100644 index 1aeff1e342..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/el/meshwizard.po +++ /dev/null @@ -1,124 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-18 15:14+0200\n" -"PO-Revision-Date: 2012-03-31 15:40+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "Κανάλι" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "Καθαρισμός ρυθμίσεων" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "Ενεργοποίηση DHCP" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "Γενικές Ρυθμίσεις" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "Διεπαφές" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/en/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/en/meshwizard.po deleted file mode 100644 index a67c71f5cd..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/en/meshwizard.po +++ /dev/null @@ -1,109 +0,0 @@ -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/es/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/es/meshwizard.po deleted file mode 100644 index 9471d42f98..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/es/meshwizard.po +++ /dev/null @@ -1,137 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-23 22:25+0200\n" -"PO-Revision-Date: 2012-11-24 10:22+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "Activar o desactivar la configuración IPv6 globalmente." - -msgid "Channel" -msgstr "Canal" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "Proteger la LAN de otros nodos y clientes" - -msgid "Cleanup config" -msgstr "Borrar configuración" - -msgid "Configure this interface" -msgstr "Configurar esta interfaz" - -msgid "DHCP IP range" -msgstr "Rango IP de DHCP" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "DHCP asignará direcciones IP automáticamente a los clientes" - -msgid "Enable DHCP" -msgstr "Activar DHCP" - -msgid "Enable RA" -msgstr "Activar RA" - -msgid "Enabled" -msgstr "Activado" - -msgid "General Settings" -msgstr "Configuración general" - -msgid "IPv6 Settings" -msgstr "Configuración IPv6" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "Borrar la configuración antes de establecer una nueva." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Mesh IP address" -msgstr "Dirección IP del mesh" - -msgid "Mesh IPv6 address" -msgstr "Dirección IPv6 del mesh" - -msgid "Mesh Wizard" -msgstr "Asistente del mesh" - -#, fuzzy -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" -"Nota: esto configurará esta interfaz para uso mesh, es decir: la añadirá a " -"la zona \"freifunk\" y activará OSLR." - -msgid "Protect LAN" -msgstr "Proteger LAN" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "Permitir a otros usar su conexión para acceder a internet." - -msgid "Send router advertisements on this device." -msgstr "Envía publicaciones de routers por este dispositivo." - -msgid "Share your internet connection" -msgstr "Compartir su conexión a internet" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" -"Rango IP desde el que asignar direcciones IP (ej. 10.1.2.1/28). Si el rango " -"está dentro del de la mesh se declarará como HNA. Cualquier otro rango usará " -"NAT. Si se deja vación tomará el del perfil de la comunidad." - -msgid "The given IP address is not inside the mesh network range" -msgstr "Este rango IP no está dentro del de la red mesh" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" -"Dirección única IPv6 en notación CIDR (p.e.: 2001:1:2:3::1/64) y que tiene " -"que estar registrada en su comunidad local." - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" -"Esta dirección debe ser única en la mesh (ej. 10.1.1.1) y debe registrarse " -"en su comunidad local." - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" -"Configurar un nuevo interfaz virtual inalámbrico en modo punto de acceso." - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" -"Este asistente le ayudará a configurar su ruter para Freifunk o una red " -"comunitaria similar." - -msgid "Virtual Access Point (VAP)" -msgstr "Punto de acceso virtual (VAP)" - -msgid "Wizard" -msgstr "Asistente" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "Su dispositivo y los vecinos deben usar el mismo canal." - -msgid "recommended" -msgstr "recomendado" diff --git a/package/luci/applications/luci-app-meshwizard/po/fr/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/fr/meshwizard.po deleted file mode 100644 index c9f7b0204b..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/fr/meshwizard.po +++ /dev/null @@ -1,139 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-11-23 22:20+0200\n" -"PO-Revision-Date: 2011-11-23 22:20+0200\n" -"Last-Translator: fredb \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "Canal" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "Cochez ceci pour protéger votre réseau LAN des autres nœuds ou clients" - -msgid "Cleanup config" -msgstr "Nettoyer la config" - -msgid "Configure this interface" -msgstr "Configurer cette interface" - -msgid "DHCP IP range" -msgstr "Gamme d'adresses IP pour DHCP" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "Le serveur DHCP donnera automatiquement des adresses IP aux clients" - -msgid "Enable DHCP" -msgstr "Activer le serveur DHCP" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "Paramètres généraux" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" -"Si vous sélectionnez ceci, la configuration sera nettoyée avant de " -"positionner de nouvelles options de configuration." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Mesh IP address" -msgstr "Adresse IP maillée" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "Assistant de Maillage" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "Protéger le LAN" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Sélectionnez ceci pour permettre aux autres d'utiliser votre connexion pour " -"accéder à Internet." - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "Partager votre connexion Internet" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" -"La gamme d'adresses IP utilisée pour attribuer des adresses IP aux clients " -"(par ex. 10.1.2.1/28). Si ce lot d'adresses est compris dans le réseau " -"maillé, il sera annoncé comme HNA, sinon du NAT sera utilisé. Si ce champ " -"reste vide, les valeurs par défaut du profil de la communauté seront " -"utilisées." - -msgid "The given IP address is not inside the mesh network range" -msgstr "L'adresse IP donnée n'est pas dans le réseau maillé" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" -"C'est une adresse unique dans le réseau maillé (par ex. 10.1.1.1) et doit " -"être enregistré dans votre communauté locale." - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" -"Cela configurera une nouvelle interface sans-fil virtuelle en mode Point " -"d'Accès." - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" -"Cet assistant vous aidera à configurer votre routeur pour le réseau maillé " -"Freifunk ou un autre réseau sans-fil communautaire du même genre." - -msgid "Virtual Access Point (VAP)" -msgstr "Point d'accès virtuel (VAP)" - -msgid "Wizard" -msgstr "Assistant" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "Votre matériel et les nœuds voisins doivent utiliser le même canal." - -msgid "recommended" -msgstr "recommandé" diff --git a/package/luci/applications/luci-app-meshwizard/po/he/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/he/meshwizard.po deleted file mode 100644 index acf5f10263..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/he/meshwizard.po +++ /dev/null @@ -1,119 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/hu/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/hu/meshwizard.po deleted file mode 100644 index 22aeccefa7..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/hu/meshwizard.po +++ /dev/null @@ -1,122 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-09 12:55+0200\n" -"Last-Translator: Bgray \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "Globális IPV6 konfiguráció aktiválása vagy kikapcsolása." - -msgid "Channel" -msgstr "Csatorna" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "DHCP Engedélyezése" - -msgid "Enable RA" -msgstr "RA Engedélyezése" - -msgid "Enabled" -msgstr "Engedélyezés" - -msgid "General Settings" -msgstr "Általános Beállítások" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "Interfészek" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/it/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/it/meshwizard.po deleted file mode 100644 index b1b979954f..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/it/meshwizard.po +++ /dev/null @@ -1,143 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-02-06 18:07+0200\n" -"PO-Revision-Date: 2013-02-09 20:46+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "Attivare o disattivare la configurazione IPv6 a livello globale." - -msgid "Channel" -msgstr "Canale" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "Abilita per proteggere la tua LAN da altri nodi o clienti" - -msgid "Cleanup config" -msgstr "Ripulisci config" - -msgid "Configure this interface" -msgstr "Configura questa interfaccia" - -msgid "DHCP IP range" -msgstr "Range DHCP IP" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "DHCP assegnerà indirizzi ip ai client" - -msgid "Enable DHCP" -msgstr "Abilità DHCP" - -msgid "Enable RA" -msgstr "Attiva RA" - -msgid "Enabled" -msgstr "Attivato" - -msgid "General Settings" -msgstr "Impostazioni generali" - -msgid "IPv6 Settings" -msgstr "Impostazioni IPv6" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" -"Se questa opzione è selezionata, config viene pulita prima di nuove opzioni " -"di configurazione." - -msgid "Interfaces" -msgstr "Interfacce" - -msgid "Mesh IP address" -msgstr "Rete indirizzo IP" - -msgid "Mesh IPv6 address" -msgstr "Rete indirizzo IPv6" - -msgid "Mesh Wizard" -msgstr "Configurazione Rete" - -#, fuzzy -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" -"Nota: questo permette di configurare questa interfaccia per il funzionamento " -"in rete, vale a dire aggiungere nella zona 'Freifunk' e consentire OLSR." - -msgid "Protect LAN" -msgstr "Proteggi LAN" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Selezionare per permettere ad altri di usare la tua connessione per accedere " -"a internet." - -msgid "Send router advertisements on this device." -msgstr "Inviare annunci router su questo dispositivo." - -msgid "Share your internet connection" -msgstr "Condividi la tua connessione internet" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" -"Il range IP dal quale i client ricevono gli indirizzi (es. 10.1.2.1/28). Se " -"questa subnet è all'interno della tua rete mesh, sarà annunciata as HNA. " -"Ogni altro range userà il NAT. Se lasciato vuoto allora la scelta " -"predefinita della community sarà usata." - -msgid "The given IP address is not inside the mesh network range" -msgstr "L'IP dato non è all'interno del range degli indirizzi di rete mesh" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" -"Si tratta di un indirizzo IPv6 unico in notazione CIDR (ad esempio " -"2001:1:2:3::1/64) e deve essere registrato presso la comunità locale." - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" -"Questo è un indirizzo univoco nella mesh (es. 10.1.1.1) e deve essere " -"accordato con la tua community." - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" -"Questo confgurerà una nuova interfaccia wireless virtuale in modalità Access " -"Point." - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" -"Questo wizard ti assisterà nel setup del tuo router per l'uso in una rete " -"wireless comunitaria come Freifunk o Ninux." - -msgid "Virtual Access Point (VAP)" -msgstr "Punto di Accesso Virtuale (VAP)" - -msgid "Wizard" -msgstr "Creazione guidata" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "Il tuo device a i nodi confinanti devono sare lo stesso canale." - -msgid "recommended" -msgstr "raccomandato" diff --git a/package/luci/applications/luci-app-meshwizard/po/ja/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/ja/meshwizard.po deleted file mode 100644 index a67c71f5cd..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/ja/meshwizard.po +++ /dev/null @@ -1,109 +0,0 @@ -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/ms/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/ms/meshwizard.po deleted file mode 100644 index a67c71f5cd..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/ms/meshwizard.po +++ /dev/null @@ -1,109 +0,0 @@ -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/no/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/no/meshwizard.po deleted file mode 100644 index a67c71f5cd..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/no/meshwizard.po +++ /dev/null @@ -1,109 +0,0 @@ -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/pl/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/pl/meshwizard.po deleted file mode 100644 index 79409aa4a2..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/pl/meshwizard.po +++ /dev/null @@ -1,147 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-04-19 21:15+0200\n" -"PO-Revision-Date: 2014-04-23 19:18+0200\n" -"Last-Translator: goodgod261 \n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "Aktywuj lub dezaktywuj ipv6 konfiguracja globalna" - -msgid "Channel" -msgstr "Kanał" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" -"Zaznacz, aby zabezpieczyć sieć lokalną przed innymi węzłami lub klientami " -"sieci" - -msgid "Cleanup config" -msgstr "Wyczyść konfigurację" - -msgid "Configure this interface" -msgstr "Skonfiguruj ten interfejs" - -msgid "DHCP IP range" -msgstr "Pula adresów DHCP" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "DHCP automatycznie przypisze adresy IP klientom" - -msgid "Enable DHCP" -msgstr "Włącz DHCP" - -msgid "Enable RA" -msgstr "Włącz RA" - -msgid "Enabled" -msgstr "Włączone" - -msgid "General Settings" -msgstr "Ustawienia ogólne" - -msgid "IPv6 Settings" -msgstr "IPv6 Ustawienia" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" -"Jeśli ta opcja jest zaznaczona to stara konfiguracja jest usuwana przed " -"zapisaniem nowych opcji." - -msgid "Interfaces" -msgstr "Interfejsy" - -msgid "Mesh IP address" -msgstr "Adres Mesh IP" - -msgid "Mesh IPv6 address" -msgstr "Adres Mech IPv6" - -msgid "Mesh Wizard" -msgstr "Kreator Mesh" - -#, fuzzy -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" -"Nota: To są ustawienia interfejsu mesh operacja i.e Dodawanie Strefy " -"'Freifunk' oraz włączyć olsr" - -msgid "Protect LAN" -msgstr "Chroń LAN" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Zaznacz tę opcję aby inni użytkownicy mogli używać twojego połączenia do " -"korzystania z internetu" - -msgid "Send router advertisements on this device." -msgstr "Wyślij Routera Reklamę na urządzenie" - -msgid "Share your internet connection" -msgstr "Współdziel swoje połączenie internetowe" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" -"Zakres adresów IP, z którego klientom są przypisywane adresy IP (np. " -"10.1.2.1/28). Jeżeli jest to zakres wewnątrz twojej sieci mesh, wówczas " -"zostanie rozgłoszony jako HNA. Każdy inny zakres będzie używać NAT. Jeżeli " -"pozostanie pusty, wówczas zostanie użyty domyślny profil społeczności." - -msgid "The given IP address is not inside the mesh network range" -msgstr "Podany adres IP nie należy do zakresu sieci mesh" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" -"To jest unikalny adres IPv6 w notacji CIDR (np. 2001:1:2:3:1/64) i musi zostać zarejestrowany w " -"Twojej lokalnej społeczności" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" -"Jest to unikalny adres w sieci mesh (np. 10.1.1.1) i musi być zarejestrowana " -"w lokalnej społeczności." - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" -"Ta opcja skonfiguruje nowy wirtualny interfejs bezprzewodowy w trybie Access " -"Point`a" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" -"Ten kreator pomoże skonfigurować router do korzystania z Freifunk lub " -"podobnej społecznej sieci bezprzewodowej (darmowe WiFi)" - -msgid "Virtual Access Point (VAP)" -msgstr "Access Point Wirtualny (VAP)" - -msgid "Wizard" -msgstr "Kreator" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "Twój router i sąsiedzkie węzły sieci używają tego samego kanału." - -msgid "recommended" -msgstr "zalecane" diff --git a/package/luci/applications/luci-app-meshwizard/po/pt-br/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/pt-br/meshwizard.po deleted file mode 100644 index 9421e02531..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/pt-br/meshwizard.po +++ /dev/null @@ -1,149 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-10-11 00:23+0200\n" -"PO-Revision-Date: 2017-02-20 18:00-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "Habilita e desabilita a configuração IPv6 globalmente." - -msgid "Channel" -msgstr "Canal" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" -"Marque isto para proteger sua rede local (LAN) de outros nós ou clientes" - -msgid "Cleanup config" -msgstr "Limpar configuração" - -msgid "Configure this interface" -msgstr "Configure esta interface" - -msgid "DHCP IP range" -msgstr "Faixa de IP do DHCP" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "O DHCP irá atribuir automaticamente endereços IP para os clientes" - -msgid "Enable DHCP" -msgstr "Habilitar DHCP" - -msgid "Enable RA" -msgstr "" -"Habilitar RA" - -msgid "Enabled" -msgstr "Habilitado" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "IPv6 Settings" -msgstr "Configurações IPv6" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" -"Se selecionado, a configuração é limpa antes de definir as novas opções de " -"configuração." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Mesh IP address" -msgstr "Endereço IP da rede em malha" - -msgid "Mesh IPv6 address" -msgstr "Endereço IPv6 da rede em malha" - -msgid "Mesh Wizard" -msgstr "Assistente de Configuração da Rede em Malha" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" -"Nota: Isto irá configurar a interface para operação em malha, p. ex. " -"adicionar à zona 'freifunk' e ativar o OLSR. " - -msgid "Protect LAN" -msgstr "Proteget Rede Local (LAN)" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Selecione isto para permitir que outros usem sua conexão para acessar a " -"internet." - -msgid "Send router advertisements on this device." -msgstr "" -"Envia RA a partir deste dispositivo." - -msgid "Share your internet connection" -msgstr "Compartilhar sua conexão com a internet" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" -"Faixa de endereços IP atribuídos aos clientes (ex: 10.1.2.1/28). Se esta " -"faixa está dentro da faixa da rede em malha, então ela será anunciada no " -"HNA. Qualquer outra faixa irá utilizar NAT. Se deixada vazia, " -"os padrões do perfil da comunidade será usada." - -msgid "The given IP address is not inside the mesh network range" -msgstr "" -"O endereço IP informado não está na faixa de endereços da rede em malha" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" -"Este é um endereço IPv6 único na notação CIDR (ex: 2001:1:2:3::1/64) e deve " -"ser registrado na sua comunidade local." - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" -"Este é um endereço único na rede em malha (ex: 10.1.1.1) e tem que ser " -"registrado na sua comunidade local." - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" -"Isto configurará uma nova interface de rede sem fio virtual em modo de ponto " -"de acesso." - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" -"Este assistente irá ajudá-lo na configuração do seu roteador para Freifunk " -"ou outra rede comunitária sem fio similar." - -msgid "Virtual Access Point (VAP)" -msgstr "Ponto de Acesso Virtual (VAP)" - -msgid "Wizard" -msgstr "Assistente" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "Seu dispositivo e os nós vizinhos devem utilizar o mesmo canal." - -msgid "recommended" -msgstr "recomendado" diff --git a/package/luci/applications/luci-app-meshwizard/po/pt/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/pt/meshwizard.po deleted file mode 100644 index 41957698b5..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/pt/meshwizard.po +++ /dev/null @@ -1,133 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-03 16:20+0200\n" -"PO-Revision-Date: 2013-06-03 18:01+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "Ativar ou desativar a configuração IPv6 globalmente." - -msgid "Channel" -msgstr "Canal" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "Marcar isto para proteger a sua LAN de outros nós ou clientes" - -msgid "Cleanup config" -msgstr "Limpar configuração" - -msgid "Configure this interface" -msgstr "Configurar esta interface" - -msgid "DHCP IP range" -msgstr "Intervalo de IPs DHCP" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "O DHCP irá atribuir automaticamente endereços IP aos clientes" - -msgid "Enable DHCP" -msgstr "Ativar DHCP" - -msgid "Enable RA" -msgstr "Ativar RA" - -msgid "Enabled" -msgstr "Ativo" - -msgid "General Settings" -msgstr "Definições Gerais" - -msgid "IPv6 Settings" -msgstr "Definições IPv6" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" -"Se isto estiver selecionado a configuração é limpa antes de serem definidas " -"novas opções na configuração." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -#, fuzzy -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" -"Nota: Isto irá configurar a interface para operação em malha, p. ex. " -"adicionar à zona 'freifunk' e ativar OLSR." - -msgid "Protect LAN" -msgstr "Proteger LAN" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Ative isto para permitir que outros usem a sua ligação para aceder à " -"internet." - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" -"Irá ser configurado uma nova interface virtual wireless em modo de Ponto de " -"Acesso." - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "Ponto de Acesso Virtual (VAP)" - -msgid "Wizard" -msgstr "Assistente" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "O seu dispositivo e os nós vizinhos têm de usar o mesmo canal." - -msgid "recommended" -msgstr "recomendado" diff --git a/package/luci/applications/luci-app-meshwizard/po/ro/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/ro/meshwizard.po deleted file mode 100644 index 9f1c46656d..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/ro/meshwizard.po +++ /dev/null @@ -1,126 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-29 19:55+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "Canal" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" -"Bifeaza aici sa-ti protejezi reteaua locala LAN de alte noduri sau clienti" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "Configureaza aceasta interfata" - -msgid "DHCP IP range" -msgstr "Plaja de adrese IP DHCP" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "DHCP va aloca automat adrese IP la clienti" - -msgid "Enable DHCP" -msgstr "Activeaza DHCP" - -msgid "Enable RA" -msgstr "Activează RA" - -msgid "Enabled" -msgstr "Activat" - -msgid "General Settings" -msgstr "Setări generale" - -msgid "IPv6 Settings" -msgstr "Setări IPv6" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "Interfete" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "Protejeaza reteaua locala LAN" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Selecteaza aici ca sa permiti si altora sa-ti foloseasca si ei conexiunea ta " -"de Internet." - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "Partajeaza cu altii conexiunea ta de Internet" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "recomandat" diff --git a/package/luci/applications/luci-app-meshwizard/po/ru/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/ru/meshwizard.po deleted file mode 100644 index 876ac36dae..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/ru/meshwizard.po +++ /dev/null @@ -1,150 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: meshwizard\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-07-20 09:47+0200\n" -"PO-Revision-Date: 2013-09-06 09:43+0200\n" -"Last-Translator: datasheet \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -#, fuzzy -msgid "Activate or deactivate IPv6 config globally." -msgstr "Активировать или деактивировать глобальную конфигурацию IPv6." - -msgid "Channel" -msgstr "Канал" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" -"Включите эту опцию, чтобы защитить локальную сеть от других узлов или " -"клиентов" - -msgid "Cleanup config" -msgstr "Очистить конфигурацию" - -msgid "Configure this interface" -msgstr "Настроить этот интерфейс" - -msgid "DHCP IP range" -msgstr "Диапазон IP-адресов DHCP" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "DHCP автоматически назначит IP-адреса клиентам" - -msgid "Enable DHCP" -msgstr "Включить DHCP" - -msgid "Enable RA" -msgstr "Разрешить ICMPv6-ответ \"Router Advertisement\"" - -msgid "Enabled" -msgstr "Включен" - -msgid "General Settings" -msgstr "Общие настройки" - -msgid "IPv6 Settings" -msgstr "Настройки IPv6" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" -"Если эта опция включена, то конфигурация очищается перед установкой новых " -"настроек." - -msgid "Interfaces" -msgstr "Интерфейсы" - -msgid "Mesh IP address" -msgstr "IP-адрес ячейки" - -msgid "Mesh IPv6 address" -msgstr "IPv6-адрес в mesh-сети" - -# предлагаю использовать именно термин "mesh-сеть", т.к. русский аналог этого понятия слишком длинный (сеть с ячеистой топологиейб ячеистая сеть) -msgid "Mesh Wizard" -msgstr "Мастер настройки ячеистой сети" - -#, fuzzy -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" -"Примечание: эта опция установит данный интерфейс в режим работы с mesh-" -"сетями, т.е. добавит его в зону ''freifunk' (\"free wireless radio\") и " -"включит протокол OLSR." - -msgid "Protect LAN" -msgstr "Защита LAN" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Включите эту опцию, чтобы позволить другим клиентам использовать ваше " -"подключение к интернету." - -msgid "Send router advertisements on this device." -msgstr "Посылать ICMPv6 сообщения \"Router Advertisement\" на это устройство" - -msgid "Share your internet connection" -msgstr "Сделать интернет-подключение общедоступным" - -# HNA - Home Network Announcement -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" -"Диапазон IP-адресов для использования клиентами сети (например 10.1.2.1/28). " -"Если указанный диапазон находится внутри вашей сети, тогда он будет объявлен " -"как HNA. Любой другой диапазон будет использовать NAT. В случае пустого " -"значение будут использоваться стандартные настройки." - -msgid "The given IP address is not inside the mesh network range" -msgstr "Заданный IP-адрес не находится внутри ячеистой сети" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" -"Это уникальный адрес в ячеистой сети (например 10.1.1.1), который должен " -"быть зарегистрирован в вашем местном сообществе." - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" -"Будет произведена настройка новой виртуальной беспроводной сети в режиме " -"точки доступа." - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" -"Данный мастер поможет настроить ваш маршрутизатор для сети Freifunk или " -"другой подобной беспроводной сети." - -msgid "Virtual Access Point (VAP)" -msgstr "Виртуальная точка доступа (VAP)" - -msgid "Wizard" -msgstr "Мастер установки" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" -"Ваше устройство и соседние узлы должны использовать один и тот же канал." - -msgid "recommended" -msgstr "рекомендуется" diff --git a/package/luci/applications/luci-app-meshwizard/po/sk/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/sk/meshwizard.po deleted file mode 100644 index c86708ad1d..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/sk/meshwizard.po +++ /dev/null @@ -1,119 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/sv/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/sv/meshwizard.po deleted file mode 100644 index b898024ec8..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/sv/meshwizard.po +++ /dev/null @@ -1,120 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/templates/meshwizard.pot b/package/luci/applications/luci-app-meshwizard/po/templates/meshwizard.pot deleted file mode 100644 index 9dfdec5013..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/templates/meshwizard.pot +++ /dev/null @@ -1,112 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/tr/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/tr/meshwizard.po deleted file mode 100644 index 92cabd4844..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/tr/meshwizard.po +++ /dev/null @@ -1,119 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/uk/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/uk/meshwizard.po deleted file mode 100644 index 9a317b7ea0..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/uk/meshwizard.po +++ /dev/null @@ -1,126 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-21 15:47+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "Канал" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "DHCP IP-діапазон" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "DHCP автоматично призначить IP-адреси клієнтам" - -msgid "Enable DHCP" -msgstr "Активувати DHCP" - -msgid "Enable RA" -msgstr "Активувати RA" - -msgid "Enabled" -msgstr "Активувати" - -msgid "General Settings" -msgstr "Загальні налаштування" - -msgid "IPv6 Settings" -msgstr "Налаштування IPv6" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "Інтерфейси" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "Захист локальної мережі" - -#, fuzzy -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" -"Оберіть це, щоб дозволити іншим використовувати з'єднання для доступу в " -"Інтернет." - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/vi/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/vi/meshwizard.po deleted file mode 100644 index a67c71f5cd..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/vi/meshwizard.po +++ /dev/null @@ -1,109 +0,0 @@ -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/po/zh-cn/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/zh-cn/meshwizard.po deleted file mode 100644 index b04c880183..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/zh-cn/meshwizard.po +++ /dev/null @@ -1,126 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-09-24 18:01+0200\n" -"PO-Revision-Date: 2014-03-25 04:25+0200\n" -"Last-Translator: hewenhao \n" -"Language-Team: LANGUAGE \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" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "启用或停用全球IPv6设置" - -msgid "Channel" -msgstr "频道" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "选择此项,隔离其他节点或客户端的攻击来保护您的局域网" - -msgid "Cleanup config" -msgstr "清空配置" - -msgid "Configure this interface" -msgstr "配置当前界面" - -msgid "DHCP IP range" -msgstr "DHCP IP 范围" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "DHCP将自动给客户端分配IP地址" - -msgid "Enable DHCP" -msgstr "启动DHCP" - -msgid "Enable RA" -msgstr "启用RA" - -msgid "Enabled" -msgstr "启用" - -msgid "General Settings" -msgstr "总体设置" - -msgid "IPv6 Settings" -msgstr "IPv6设置" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "如果此项被选中,在设置新选项之前,配置将被清空。" - -msgid "Interfaces" -msgstr "界面" - -msgid "Mesh IP address" -msgstr "Mesh IP 地址" - -msgid "Mesh IPv6 address" -msgstr "Mesh IPv6地址" - -msgid "Mesh Wizard" -msgstr "Mesh 导引" - -#, fuzzy -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "注意:这将为mesh操作建立一个接口,如:增加到‘freifunk’区域并使能olsr" - -msgid "Protect LAN" -msgstr "保护LAN口" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "选择这项来允许其它程序用您这个连接来接入因特网" - -#, fuzzy -msgid "Send router advertisements on this device." -msgstr "在这个设备上发送路由广播" - -msgid "Share your internet connection" -msgstr "分享您的Internet连接" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "这将会在接入点模式设置一个新的虚拟无线网络接口" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "虚拟接入点" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "推荐" diff --git a/package/luci/applications/luci-app-meshwizard/po/zh-tw/meshwizard.po b/package/luci/applications/luci-app-meshwizard/po/zh-tw/meshwizard.po deleted file mode 100644 index a4d29e8c10..0000000000 --- a/package/luci/applications/luci-app-meshwizard/po/zh-tw/meshwizard.po +++ /dev/null @@ -1,118 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Activate or deactivate IPv6 config globally." -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check this to protect your LAN from other nodes or clients" -msgstr "" - -msgid "Cleanup config" -msgstr "" - -msgid "Configure this interface" -msgstr "" - -msgid "DHCP IP range" -msgstr "" - -msgid "DHCP will automatically assign ip addresses to clients" -msgstr "" - -msgid "Enable DHCP" -msgstr "" - -msgid "Enable RA" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "" -"If this is selected then config is cleaned before setting new config options." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Mesh IP address" -msgstr "" - -msgid "Mesh IPv6 address" -msgstr "" - -msgid "Mesh Wizard" -msgstr "" - -msgid "" -"Note: this will set up this interface for mesh operation, i.e. add it to " -"zone 'freifunk' and enable olsr." -msgstr "" - -msgid "Protect LAN" -msgstr "" - -msgid "" -"Select this to allow others to use your connection to access the internet." -msgstr "" - -msgid "Send router advertisements on this device." -msgstr "" - -msgid "Share your internet connection" -msgstr "" - -msgid "" -"The IP range from which clients are assigned ip addresses (e.g. " -"10.1.2.1/28). If this is a range inside your mesh network range, then it " -"will be announced as HNA. Any other range will use NAT. If left empty then " -"the defaults from the community profile will be used." -msgstr "" - -msgid "The given IP address is not inside the mesh network range" -msgstr "" - -msgid "" -"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and " -"has to be registered at your local community." -msgstr "" - -msgid "" -"This is a unique address in the mesh (e.g. 10.1.1.1) and has to be " -"registered at your local community." -msgstr "" - -msgid "This will setup a new virtual wireless interface in Access Point mode." -msgstr "" - -msgid "" -"This wizard will assist you in setting up your router for Freifunk or " -"another similar wireless community network." -msgstr "" - -msgid "Virtual Access Point (VAP)" -msgstr "" - -msgid "Wizard" -msgstr "" - -msgid "Your device and neighbouring nodes have to use the same channel." -msgstr "" - -msgid "recommended" -msgstr "" diff --git a/package/luci/applications/luci-app-meshwizard/root/etc/uci-defaults/meshwizard b/package/luci/applications/luci-app-meshwizard/root/etc/uci-defaults/meshwizard deleted file mode 100644 index 6ceb1b7142..0000000000 --- a/package/luci/applications/luci-app-meshwizard/root/etc/uci-defaults/meshwizard +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -uci batch < -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for miniDLNA -LUCI_DEPENDS:=+minidlna - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-minidlna/luasrc/controller/minidlna.lua b/package/luci/applications/luci-app-minidlna/luasrc/controller/minidlna.lua deleted file mode 100644 index 9200796476..0000000000 --- a/package/luci/applications/luci-app-minidlna/luasrc/controller/minidlna.lua +++ /dev/null @@ -1,46 +0,0 @@ --- Copyright 2012 Gabor Juhos --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.minidlna", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/minidlna") then - return - end - - local page - - page = entry({"admin", "services", "minidlna"}, cbi("minidlna"), _("miniDLNA")) - page.dependent = true - - entry({"admin", "services", "minidlna_status"}, call("minidlna_status")) -end - -function minidlna_status() - local sys = require "luci.sys" - local uci = require "luci.model.uci".cursor() - local port = tonumber(uci:get_first("minidlna", "minidlna", "port")) - - local status = { - running = (sys.call("pidof minidlna >/dev/null") == 0), - audio = 0, - video = 0, - image = 0 - } - - if status.running then - local fd = sys.httpget("http://127.0.0.1:%d/" % (port or 8200), true) - if fd then - local html = fd:read("*a") - if html then - status.audio = (tonumber(html:match("Audio files(%d+)")) or 0) - status.video = (tonumber(html:match("Video files(%d+)")) or 0) - status.image = (tonumber(html:match("Image files(%d+)")) or 0) - end - fd:close() - end - end - - luci.http.prepare_content("application/json") - luci.http.write_json(status) -end diff --git a/package/luci/applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua b/package/luci/applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua deleted file mode 100644 index 067d08cf0a..0000000000 --- a/package/luci/applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua +++ /dev/null @@ -1,169 +0,0 @@ --- Copyright 2012 Gabor Juhos --- Licensed to the public under the Apache License 2.0. - -local m, s, o - -m = Map("minidlna", translate("miniDLNA"), - translate("MiniDLNA is server software with the aim of being fully compliant with DLNA/UPnP-AV clients.")) - -m:section(SimpleSection).template = "minidlna_status" - -s = m:section(TypedSection, "minidlna", "miniDLNA Settings") -s.addremove = false -s.anonymous = true - -s:tab("general", translate("General Settings")) -s:tab("advanced", translate("Advanced Settings")) - -o = s:taboption("general", Flag, "enabled", translate("Enable:")) -o.rmempty = false - -function o.cfgvalue(self, section) - return luci.sys.init.enabled("minidlna") and self.enabled or self.disabled -end - -function o.write(self, section, value) - if value == "1" then - luci.sys.init.enable("minidlna") - luci.sys.call("/etc/init.d/minidlna start >/dev/null") - else - luci.sys.call("/etc/init.d/minidlna stop >/dev/null") - luci.sys.init.disable("minidlna") - end - - return Flag.write(self, section, value) -end - -o = s:taboption("general", Value, "port", translate("Port:"), - translate("Port for HTTP (descriptions, SOAP, media transfer) traffic.")) -o.datatype = "port" -o.default = 8200 - - -o = s:taboption("general", Value, "interface", translate("Interfaces:"), - translate("Network interfaces to serve.")) - -o.template = "cbi/network_ifacelist" -o.widget = "checkbox" -o.nocreate = true - -function o.cfgvalue(self, section) - local rv = { } - local val = Value.cfgvalue(self, section) - if val then - local ifc - for ifc in val:gmatch("[^,%s]+") do - rv[#rv+1] = ifc - end - end - return rv -end - -function o.write(self, section, value) - local rv = { } - local ifc - for ifc in luci.util.imatch(value) do - rv[#rv+1] = ifc - end - Value.write(self, section, table.concat(rv, ",")) -end - - -o = s:taboption("general", Value, "friendly_name", translate("Friendly name:"), - translate("Set this if you want to customize the name that shows up on your clients.")) -o.rmempty = true -o.placeholder = "OpenWrt DLNA Server" - -o = s:taboption("advanced", Value, "db_dir", translate("Database directory:"), - translate("Set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache.")) -o.rmempty = true -o.placeholder = "/var/cache/minidlna" - -o = s:taboption("advanced", Value, "log_dir", translate("Log directory:"), - translate("Set this if you would like to specify the directory where you want MiniDLNA to store its log file.")) -o.rmempty = true -o.placeholder = "/var/log" - -s:taboption("advanced", Flag, "inotify", translate("Enable inotify:"), - translate("Set this to enable inotify monitoring to automatically discover new files.")) - -s:taboption("advanced", Flag, "enable_tivo", translate("Enable TIVO:"), - translate("Set this to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO.")) -o.rmempty = true - -s:taboption("advanced", Flag, "wide_links", translate("Allow wide links:"), - translate("Set this to allow serving content outside the media root (via symlinks).")) -o.rmempty = true - -o = s:taboption("advanced", Flag, "strict_dlna", translate("Strict to DLNA standard:"), - translate("Set this to strictly adhere to DLNA standards. This will allow server-side downscaling of very large JPEG images, which may hurt JPEG serving performance on (at least) Sony DLNA products.")) -o.rmempty = true - -o = s:taboption("advanced", Value, "presentation_url", translate("Presentation URL:")) -o.rmempty = true -o.placeholder = "http://192.168.1.1/" - -o = s:taboption("advanced", Value, "notify_interval", translate("Notify interval:"), - translate("Notify interval in seconds.")) -o.datatype = "uinteger" -o.placeholder = 900 - -o = s:taboption("advanced", Value, "serial", translate("Announced serial number:"), - translate("Serial number the miniDLNA daemon will report to clients in its XML description.")) -o.placeholder = "12345678" - -s:taboption("advanced", Value, "model_number", translate("Announced model number:"), - translate("Model number the miniDLNA daemon will report to clients in its XML description.")) -o.placholder = "1" - -o = s:taboption("advanced", Value, "minissdpsocket", translate("miniSSDP socket:"), - translate("Specify the path to the MiniSSDPd socket.")) -o.rmempty = true -o.placeholder = "/var/run/minissdpd.sock" - -o = s:taboption("general", ListValue, "root_container", translate("Root container:")) -o:value(".", translate("Standard container")) -o:value("B", translate("Browse directory")) -o:value("M", translate("Music")) -o:value("V", translate("Video")) -o:value("P", translate("Pictures")) - - -s:taboption("general", DynamicList, "media_dir", translate("Media directories:"), - translate("Set this to the directory you want scanned. If you want to restrict the directory to a specific content type, you can prepend the type ('A' for audio, 'V' for video, 'P' for images), followed by a comma, to the directory (eg. A,/mnt/media/Music). Multiple directories can be specified.")) - - -o = s:taboption("general", DynamicList, "album_art_names", translate("Album art names:"), - translate("This is a list of file names to check for when searching for album art.")) -o.rmempty = true -o.placeholder = "Cover.jpg" - -function o.cfgvalue(self, section) - local rv = { } - - local val = Value.cfgvalue(self, section) - if type(val) == "table" then - val = table.concat(val, "/") - elseif not val then - val = "" - end - - local file - for file in val:gmatch("[^/%s]+") do - rv[#rv+1] = file - end - - return rv -end - -function o.write(self, section, value) - local rv = { } - local file - for file in luci.util.imatch(value) do - rv[#rv+1] = file - end - Value.write(self, section, table.concat(rv, "/")) -end - - -return m diff --git a/package/luci/applications/luci-app-minidlna/luasrc/view/admin_status/index/minidlna.htm b/package/luci/applications/luci-app-minidlna/luasrc/view/admin_status/index/minidlna.htm deleted file mode 100644 index b2feeb2efd..0000000000 --- a/package/luci/applications/luci-app-minidlna/luasrc/view/admin_status/index/minidlna.htm +++ /dev/null @@ -1 +0,0 @@ -<%+minidlna_status%> diff --git a/package/luci/applications/luci-app-minidlna/luasrc/view/minidlna_status.htm b/package/luci/applications/luci-app-minidlna/luasrc/view/minidlna_status.htm deleted file mode 100644 index 866eded03e..0000000000 --- a/package/luci/applications/luci-app-minidlna/luasrc/view/minidlna_status.htm +++ /dev/null @@ -1,29 +0,0 @@ - - -
- <%:miniDLNA Status%> -

- <%:Collecting data...%> -

-
diff --git a/package/luci/applications/luci-app-minidlna/po/ca/minidlna.po b/package/luci/applications/luci-app-minidlna/po/ca/minidlna.po deleted file mode 100644 index dadcf04aeb..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/ca/minidlna.po +++ /dev/null @@ -1,174 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-01 05:45+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Ajusts avançats" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "Habilita TIVO:" - -msgid "Enable inotify:" -msgstr "Habilita inotify:" - -msgid "Enable:" -msgstr "Habilita:" - -msgid "Friendly name:" -msgstr "Nom amistós:" - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "Interfaces:" -msgstr "Interfícies" - -msgid "Log directory:" -msgstr "Directori de registre:" - -msgid "Media directories:" -msgstr "Directoris de medis:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "Música" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "Interval de notificació en segons." - -msgid "Notify interval:" -msgstr "Interval de notificació:" - -msgid "Pictures" -msgstr "Imatges" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Port de tràfic HTTP (descripcions, SOAP, transferència de medis)" - -msgid "Port:" -msgstr "Port:" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "Especifiqueu la ruta a l'endoll de MiniSSDPd." - -msgid "Standard container" -msgstr "Contenidor estàndard" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "Vídeo" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "Estat de miniDLNA" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/cs/minidlna.po b/package/luci/applications/luci-app-minidlna/po/cs/minidlna.po deleted file mode 100644 index f4cbd76ec0..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/cs/minidlna.po +++ /dev/null @@ -1,178 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-08-04 19:18+0200\n" -"Last-Translator: KubaCZ \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Pokročilé nastavení" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "Procházet adresář" - -msgid "Collecting data..." -msgstr "Shromažďování dat ..." - -msgid "Database directory:" -msgstr "Adresář databáze:" - -msgid "Enable TIVO:" -msgstr "Povolit TIVO:" - -msgid "Enable inotify:" -msgstr "Povolit inotify:" - -msgid "Enable:" -msgstr "Povolit:" - -msgid "Friendly name:" -msgstr "Popisek:" - -msgid "General Settings" -msgstr "Obecné nastavení" - -msgid "Interfaces:" -msgstr "Rozhraní:" - -msgid "Log directory:" -msgstr "Log adresář:" - -msgid "Media directories:" -msgstr "Media adresáře:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNA je serverový software s cílem být plně kompatibilní s DLNA / UPnP-" -"AV klienty." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "Hudba" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "Notifikační interval v sekundách." - -msgid "Notify interval:" -msgstr "Notifikační interval:" - -msgid "Pictures" -msgstr "Obrázky" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Port pro HTTP (popisy, SOAP, přenos médií) provoz." - -msgid "Port:" -msgstr "Port:" - -msgid "Presentation URL:" -msgstr "Prezentační URL:" - -msgid "Root container:" -msgstr "Kořenový/root kontejner:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "Standardní kontejner" - -msgid "Strict to DLNA standard:" -msgstr "Striktně se držet standardu DLNA:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"Služba miniDLNA je aktivní, poskytuje %d audio, %d video a %d obrázkových " -"souborů." - -msgid "The miniDLNA service is not running." -msgstr "Služba miniDLNA není spuštěna." - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "Video" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "Stav miniDLNA" - -msgid "miniSSDP socket:" -msgstr "miniSSDP socket:" diff --git a/package/luci/applications/luci-app-minidlna/po/de/minidlna.po b/package/luci/applications/luci-app-minidlna/po/de/minidlna.po deleted file mode 100644 index d001696874..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/de/minidlna.po +++ /dev/null @@ -1,212 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-09 14:39+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Album art names:" -msgstr "Dateinamen für Cover-Bilder:" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "Angekündigte Modellnummer:" - -msgid "Announced serial number:" -msgstr "Angekündigte Seriennummer:" - -msgid "Browse directory" -msgstr "Browse-Verzeichnis" - -msgid "Collecting data..." -msgstr "Sammle Daten..." - -msgid "Database directory:" -msgstr "Datenbankverzeichnis:" - -msgid "Enable TIVO:" -msgstr "TIVO aktivieren:" - -msgid "Enable inotify:" -msgstr "Inotify aktivieren:" - -msgid "Enable:" -msgstr "Aktivieren:" - -msgid "Friendly name:" -msgstr "Spitzname:" - -msgid "General Settings" -msgstr "Allgemeine Einstellungen" - -msgid "Interfaces:" -msgstr "Schnittstellen:" - -msgid "Log directory:" -msgstr "Protokollverzeichnis:" - -msgid "Media directories:" -msgstr "Medienverzeichnisse:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNA ist eine Serversoftware mit dem Ziel voll kompatibel mit DLNA/UPnP-" -"AV-Klienten zu sein." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Spezifiziert die Modellnummer welche der miniDLNA-Dienst als Teil seiner XML-" -"Beschreibung an Clients versendet." - -msgid "Music" -msgstr "Musik" - -msgid "Network interfaces to serve." -msgstr "Zu bedienende Netzwerkschnittstellen." - -msgid "Notify interval in seconds." -msgstr "Ankündigungsinterval in Sekunden." - -msgid "Notify interval:" -msgstr "Ankündigunsintervall" - -msgid "Pictures" -msgstr "Bilder" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Port für HTTP-Verkehr (Beschreibungen, SOAP, Mediendaten)." - -msgid "Port:" -msgstr "Port:" - -msgid "Presentation URL:" -msgstr "Präsentations-URL:" - -msgid "Root container:" -msgstr "Root-Container:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Spezifiziert die Seriennummer welche der miniDLNA-Dienst als Teil seiner XML-" -"Beschreibung an Clients versendet." - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "Diesen Wert setzen um den auf Clients angezeigten Namen zu verändern." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"Diesen Wert setzen um das Verzeichnis zu bestimmen in dem miniDLNA seine " -"Datenbank und den Cover-Bild-Speicher ablegt." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" -"Diesen Wert setzen um das Verzeichnis zu bestimmen in dem miniDLNA seine " -"Protokolldateien ablegt." - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" -"Diese Option aktivieren um den Inotify-Mechanismus zum Entdecken neuer " -"Dateien zu benutzen." - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" -"Diese Option aktivieren um die Unterstützung von JPEG- und MP3-Streaming zu " -"HMO-TiVo-Geräten zu aktivieren." - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"Diese Option setzen um den DLNA-Standard strikt einzuhalten. Damit wird " -"serverseitiges Herunterskalieren von JPEG-Bildern aktviert was die " -"Auslieferunsgeschwindigkeit in Verbindung mit Sony DLNA-Produkten negativ " -"beeinflussen kann." - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"Spezifiziert die zu durchsuchenden Medienverzeichnisse. Durch Voranstellung " -"eines Buchstaben gefolgt von einem Komma kann ein Verzeichnis auf einen " -"bestimmten Typ eingeschränkt werden; 'A' für Audio-, 'V' für Video- und 'P' " -"für Bild-Verzeichnisse. Es können mehrere Verzeichnisse angegeben werden." - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "Spezifiziert den Pfad zur MiniSSDPd-Socket-Datei." - -msgid "Standard container" -msgstr "Standard-Container" - -msgid "Strict to DLNA standard:" -msgstr "Stikt nach DLNA-Standard:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"Der miniDLNA-Dienst ist aktiv und publiziert %d Audio-, %d Video- und %d " -"Bild-Dateien." - -msgid "The miniDLNA service is not running." -msgstr "Der miniDLNA-Dienst ist inaktiv." - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" -"Dies ist eine Liste von Dateinamen, die geprüft werden sollen wenn nach " -"Cover-Bildern gesucht wird." - -msgid "Video" -msgstr "Video" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "miniDLNA-Status" - -msgid "miniSSDP socket:" -msgstr "miniSSDP-Socket:" - -#~ msgid "Network interfaces to serve, comma delimited list." -#~ msgstr "" -#~ "Lister dee bedienten Netzwerkschnittstellen als Komma-getrennte Liste." - -#~ msgid "" -#~ "This is a list of file names to check for when searching for album art. " -#~ "Note: names must be delimited with a forward slash '/'" -#~ msgstr "" -#~ "Dies ist eine Liste von zu prüfenden Dateinamen wenn nach Album-Covern " -#~ "gesucht wird. Hinweis: Namen müssen mit einem Schrägstrich ('/') getrennt " -#~ "werden." diff --git a/package/luci/applications/luci-app-minidlna/po/el/minidlna.po b/package/luci/applications/luci-app-minidlna/po/el/minidlna.po deleted file mode 100644 index d319afd238..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/el/minidlna.po +++ /dev/null @@ -1,171 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/en/minidlna.po b/package/luci/applications/luci-app-minidlna/po/en/minidlna.po deleted file mode 100644 index ca5bc3b593..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/en/minidlna.po +++ /dev/null @@ -1,202 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "Album art names:" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "Announced model number:" - -msgid "Announced serial number:" -msgstr "Announced serial number:" - -msgid "Browse directory" -msgstr "Browse directory" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "Database directory:" - -msgid "Enable TIVO:" -msgstr "Enable TIVO:" - -msgid "Enable inotify:" -msgstr "Enable inotify:" - -msgid "Enable:" -msgstr "Enable:" - -msgid "Friendly name:" -msgstr "Friendly name:" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "Interfaces:" - -msgid "Log directory:" -msgstr "Log directory:" - -msgid "Media directories:" -msgstr "Media directories:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." - -msgid "Music" -msgstr "Music" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "Notify interval in seconds." - -msgid "Notify interval:" -msgstr "Notify interval:" - -msgid "Pictures" -msgstr "Pictures" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Port for HTTP (descriptions, SOAP, media transfer) traffic." - -msgid "Port:" -msgstr "Port:" - -msgid "Presentation URL:" -msgstr "Presentation URL:" - -msgid "Root container:" -msgstr "Root container:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" -"Set this if you want to customize the name that shows up on your clients." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" -"Set this to enable inotify monitoring to automatically discover new files." - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "Specify the path to the MiniSSDPd socket." - -msgid "Standard container" -msgstr "Standard container" - -msgid "Strict to DLNA standard:" -msgstr "Strict to DLNA standard:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "Video" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "miniSSDP socket:" - -#~ msgid "Network interfaces to serve, comma delimited list." -#~ msgstr "Network interfaces to serve, comma delimited list." - -#~ msgid "" -#~ "This is a list of file names to check for when searching for album art. " -#~ "Note: names must be delimited with a forward slash '/'" -#~ msgstr "" -#~ "This is a list of file names to check for when searching for album art. " -#~ "Note: names must be delimited with a forward slash '/'" diff --git a/package/luci/applications/luci-app-minidlna/po/es/minidlna.po b/package/luci/applications/luci-app-minidlna/po/es/minidlna.po deleted file mode 100644 index f71e9a2b9e..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/es/minidlna.po +++ /dev/null @@ -1,191 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-01 09:07+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Configuración avanzada" - -msgid "Album art names:" -msgstr "Imágenes de álbumes:" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "Número de modelo declarado:" - -msgid "Announced serial number:" -msgstr "Número de serie declarado:" - -msgid "Browse directory" -msgstr "Ver directorio" - -msgid "Collecting data..." -msgstr "Recopilando información..." - -msgid "Database directory:" -msgstr "Directorio de la base de datos:" - -msgid "Enable TIVO:" -msgstr "Activar TIVO:" - -msgid "Enable inotify:" -msgstr "Activar inotify:" - -msgid "Enable:" -msgstr "Activar:" - -msgid "Friendly name:" -msgstr "Nombre amigable:" - -msgid "General Settings" -msgstr "Configuración general" - -msgid "Interfaces:" -msgstr "Interfaces:" - -msgid "Log directory:" -msgstr "Directorio de registro:" - -msgid "Media directories:" -msgstr "Directorios de medios:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNA es un servidor que buscar ser compatible con clientes DLNA/UPnP-AV." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Número de modelo que el demonio miniDLNA mostrará a los clientes en su " -"descripción XML." - -msgid "Music" -msgstr "Música" - -msgid "Network interfaces to serve." -msgstr "Interfaces de red a usar." - -msgid "Notify interval in seconds." -msgstr "Intervalo de notificación en segundos." - -msgid "Notify interval:" -msgstr "Intervalo de notificación:" - -msgid "Pictures" -msgstr "Imágenes" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" -"Puerto para tráfico HTTP (descripciones, SOAP y transferencia de medios)." - -msgid "Port:" -msgstr "Puerto:" - -msgid "Presentation URL:" -msgstr "URL de presentación:" - -msgid "Root container:" -msgstr "Raíz de contenidos:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Número de serie que el demonio miniDLNA informará a los clientes en su " -"descripción XML." - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "Personalizar el nombre mostrado a los clientes." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"Indicar el directorio en el que MiniDLNA guardará su base de datos y la " -"caché de álbumes." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "Indicar el directorio donde MiniDLNA guardará su archivo de registro." - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "Inotify descubrirá automáticamente nuevos archivos." - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "Envío de archivos .jpg y .mp3 a un TiVo usando HMO." - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"Seguir estrictamente el estándar DLNA. Esto permite el reescalado desde el " -"servidor de imágenes JPEG grandes que pueden perjudicar el rendimiento en " -"(al menos) productos DLNA de Sony." - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"Directorio a explorar. Si quiere restringir el directorio a un contenido " -"específico puede añadir el tipo ('A' par audio, 'V' para vídeo o 'P' para " -"imágenes), seguido por una coma al nombre del directorio (ej. A,/mnt/media/" -"Music). Se puede establecer varios directorios." - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "Camino al socket de MiniSSDPd." - -msgid "Standard container" -msgstr "Contenedor estándar" - -msgid "Strict to DLNA standard:" -msgstr "Ceñirse al estándar DLNA:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"El servicio miniDLNA está activo, sirviendo %d archivos de audio, %d de " -"vídeo y %d de imágenes." - -msgid "The miniDLNA service is not running." -msgstr "El servicio miniDLNA no está arrancado." - -msgid "This is a list of file names to check for when searching for album art." -msgstr "Lista de nombres a comprobar para buscar imágenes de álbumes." - -msgid "Video" -msgstr "Vídeo" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "Estado de miniDLNA" - -msgid "miniSSDP socket:" -msgstr "Socket de miniSSDP:" diff --git a/package/luci/applications/luci-app-minidlna/po/fr/minidlna.po b/package/luci/applications/luci-app-minidlna/po/fr/minidlna.po deleted file mode 100644 index 498dea6c80..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/fr/minidlna.po +++ /dev/null @@ -1,171 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/he/minidlna.po b/package/luci/applications/luci-app-minidlna/po/he/minidlna.po deleted file mode 100644 index d319afd238..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/he/minidlna.po +++ /dev/null @@ -1,171 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/hu/minidlna.po b/package/luci/applications/luci-app-minidlna/po/hu/minidlna.po deleted file mode 100644 index c1371afd9e..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/hu/minidlna.po +++ /dev/null @@ -1,206 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-09 19:18+0200\n" -"Last-Translator: Gábor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Advanced Settings" -msgstr "Haladó beállítások" - -msgid "Album art names:" -msgstr "Borító album nevek:" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "Közölt modellszám:" - -msgid "Announced serial number:" -msgstr "Közölt sorozatszám:" - -msgid "Browse directory" -msgstr "Könyvtár tallózása" - -msgid "Collecting data..." -msgstr "Adatok gyűjtése..." - -msgid "Database directory:" -msgstr "Adatbázis könyvtár:" - -msgid "Enable TIVO:" -msgstr "TIVO engedélyezése:" - -msgid "Enable inotify:" -msgstr "Inotify engedélyezése:" - -msgid "Enable:" -msgstr "Engedélyezés:" - -msgid "Friendly name:" -msgstr "Egyéni név:" - -msgid "General Settings" -msgstr "Általános beállítások" - -msgid "Interfaces:" -msgstr "Interfészek:" - -msgid "Log directory:" -msgstr "Napló könyvtár:" - -msgid "Media directories:" -msgstr "Média könyvtárak:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"A MiniDLNA egy szerver alkalmazás, ami teljes mértékben kompatibilis a DLNA/" -"UPnP-AV képes kliensekkel." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"A miniDLNA által az XML leírásban jelentett modellszám a kliensek számára." - -msgid "Music" -msgstr "Zene" - -msgid "Network interfaces to serve." -msgstr "Kiszolgált hálózati interfészek." - -msgid "Notify interval in seconds." -msgstr "Értesítés intervalluma másodpercben." - -msgid "Notify interval:" -msgstr "Értesítési intervallum:" - -msgid "Pictures" -msgstr "Képek" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "HTTP forgalom (leírások, SOAP, média átvitel) portja." - -msgid "Port:" -msgstr "Port:" - -msgid "Presentation URL:" -msgstr "Szolgáltatott URL:" - -msgid "Root container:" -msgstr "Gyökér konténer:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"A miniDLNA által az XML leírásban jelentett szériaszám a kliensek számára." - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" -"Állítsa be, amennyiben a kliensek számára megjelenő nevet szeretné testre " -"szabni." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"Állítsa be, ha meg szeretné adni azt könyvtárat, ahová a a MiniDLNA az " -"adatbázisát, illetve az album borító gyorsítótárat rögzítse." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" -"Áttítsa be, ha meg szeretné adni azt a könyvtárat, ahová a MiniDLNA a napló " -"állományait mentse." - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" -"Engedélyezze az új fájlok automatikus felfedezéséhez szükséges inotify " -"monitorozáshoz." - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" -"Engedélyezze a .jpg és .mp3 fájlok közvetítéséhez TiVo támogatott HMO-k felé." - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"Engedélyezze a DLNA követelmények szigorú betartásához. Ez lehetővé teszi a " -"nagyon nagy JPEG képek szerver oldali leméretezését, amik pl. a Sony DLNA " -"termékek JPEG kiszolgáló teljesítményére nincsenek kedvező hatással." - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"Állítsa be a vizsgálandó könyvtárra. Ha a könyvtárat egy adott típusú " -"tartalom szerint szeretné korlátozni, akkor a neve előtt vesszővel " -"elválasztva megadhatja a típust ('A' az audió, 'V' a videó, 'P' a képek " -"számára. pl.: A,/mnt/media/Music). Több könyvtár is megadható." - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "A MiniSSDPd socket elérési útját határozza meg." - -msgid "Standard container" -msgstr "Szabvány konténer" - -msgid "Strict to DLNA standard:" -msgstr "DLNA követelmények szigorú betartása:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"A miniDLNA szolgáltatás aktív, %d hang, %d videó, %d kép fájl található. " - -msgid "The miniDLNA service is not running." -msgstr "A miniDLNA szolgáltatás nem aktív." - -msgid "This is a list of file names to check for when searching for album art." -msgstr "Fájlnevek listája, amik ellenőrzésre kerülnek albumborító keresésekor." - -msgid "Video" -msgstr "Videó" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "miniDLNA állapot" - -msgid "miniSSDP socket:" -msgstr "miniSSDP socket:" - -#~ msgid "Network interfaces to serve, comma delimited list." -#~ msgstr "Kiszolgált hálózati interfészek vesszővel elválasztott listája." - -#~ msgid "" -#~ "This is a list of file names to check for when searching for album art. " -#~ "Note: names must be delimited with a forward slash '/'" -#~ msgstr "" -#~ "Ez egy lista azokról a fájlnevekről, amelyeket ellenőrizni kell a " -#~ "lemezborító keresésekor. Megjegyzés: a neveket per jellel ('/') kell " -#~ "elválasztani egymástól." diff --git a/package/luci/applications/luci-app-minidlna/po/it/minidlna.po b/package/luci/applications/luci-app-minidlna/po/it/minidlna.po deleted file mode 100644 index 4ecc3d4ae5..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/it/minidlna.po +++ /dev/null @@ -1,199 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-08-05 11:41+0200\n" -"Last-Translator: morganfw \n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Opzioni avanzate" - -msgid "Album art names:" -msgstr "Nome Copertina Album:" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "Numero modello annunciato:" - -msgid "Announced serial number:" -msgstr "Numero seriale annunciato:" - -msgid "Browse directory" -msgstr "Esplora directory" - -msgid "Collecting data..." -msgstr "Recuperando i dati..." - -msgid "Database directory:" -msgstr "Directory database:" - -msgid "Enable TIVO:" -msgstr "Abilita TIVO:" - -msgid "Enable inotify:" -msgstr "Abilita inotify:" - -msgid "Enable:" -msgstr "Abilita:" - -msgid "Friendly name:" -msgstr "Nome Comune:" - -msgid "General Settings" -msgstr "Impostazioni generali" - -msgid "Interfaces:" -msgstr "Interfacce:" - -msgid "Log directory:" -msgstr "Directory di log:" - -msgid "Media directories:" -msgstr "Cartelle Supporto:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNA è un server il cui intento è di essere completamente compatibile " -"con i DLNA/UPnP-AV client disponibili." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Numero del modello che il demone miniDLNA riporterà ai client nella sua " -"descrizione XML." - -msgid "Music" -msgstr "Musica" - -msgid "Network interfaces to serve." -msgstr "Interfaccia di rete usata." - -msgid "Notify interval in seconds." -msgstr "Intervallo di notifica in secondi." - -msgid "Notify interval:" -msgstr "Intervallo di notifica:" - -msgid "Pictures" -msgstr "Immagini" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Porta per traffico (descrizione, SOAP, trasferimento supporto) HTTP:" - -msgid "Port:" -msgstr "Porta:" - -msgid "Presentation URL:" -msgstr "URL di Presentazione:" - -msgid "Root container:" -msgstr "Contenitore Principale:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Serial number che il server miniDLNA invierà ai client nella descrizione XML." - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "Imposta se si desidera personalizzare il nome da mostrare ai client." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"Impostare questa opzione se si desidera specificare la cartella in cui si " -"desidera archiviare i database MiniDLNA e le copertine della cache album." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" -"Impostare questa opzione se si desidera specificare la cartella in cui si " -"desidera che MiniDLNA archivi i propri file di registro." - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" -"Impostare questa opzione per consentire il monitoraggio inotify per rilevare " -"automaticamente i nuovi file." - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" -"Impostare questo per abilitare il supporto per lo streaming di file .jpg e ." -"mp3 ad un supporto TiVo che supporta HMO." - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"Impostare questo parametro per far rispettare rigorosamente gli standard " -"DLNA. Ciò consentirà sul lato server il ridimensionamento delle immagini " -"JPEG di grandi dimensioni che possono influire negativamente sulle " -"prestazioni JPEG del servizio su (almeno) i prodotti Sony DLNA." - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"Impostare la cartella che si desidera sottoporre a scansione. Se si desidera " -"limitare la directory per un tipo di contenuto specifico, è possibile " -"anteporre il tipo ('A' per l'audio, 'V' per video, 'P' per le immagini), " -"seguito da una virgola, nella cartella (es. A,/mnt/media/Music). Cartelle " -"multiple possono essere specificate." - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "Specificare il percorso del socket MiniSSDPd." - -msgid "Standard container" -msgstr "Contenitore Standard" - -msgid "Strict to DLNA standard:" -msgstr "Scrupolosamente DLNA standard:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"Il servizio miniDLNA è attivo, servo %d audio, %d video, %d file di immagine." - -msgid "The miniDLNA service is not running." -msgstr "Il servizio miniDLNA non è in esecuzione." - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" -"Questo è un elenco di nomi di file per verificare la presenza durante la " -"ricerca di copertine degli album." - -msgid "Video" -msgstr "Video" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "Stato miniDLNA" - -msgid "miniSSDP socket:" -msgstr "Socket miniSSDP:" diff --git a/package/luci/applications/luci-app-minidlna/po/ja/minidlna.po b/package/luci/applications/luci-app-minidlna/po/ja/minidlna.po deleted file mode 100644 index de2eb9b57e..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/ja/minidlna.po +++ /dev/null @@ -1,208 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"PO-Revision-Date: 2017-10-25 22:33+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 2.0.4\n" -"POT-Creation-Date: \n" - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Album art names:" -msgstr "アルバムアートワーク ファイル名:" - -msgid "Allow wide links:" -msgstr "ワイド リンクの許可:" - -msgid "Announced model number:" -msgstr "通知するモデル番号:" - -msgid "Announced serial number:" -msgstr "通知するシリアルナンバー:" - -msgid "Browse directory" -msgstr "Browse directory" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "Database directory:" -msgstr "データベース・ディレクトリ:" - -msgid "Enable TIVO:" -msgstr "TIVO を有効にする:" - -msgid "Enable inotify:" -msgstr "inotify を有効にする:" - -msgid "Enable:" -msgstr "サービスを有効にする:" - -msgid "Friendly name:" -msgstr "Friendly名:" - -msgid "General Settings" -msgstr "基本設定" - -msgid "Interfaces:" -msgstr "インターフェース:" - -msgid "Log directory:" -msgstr "ログディレクトリ:" - -msgid "Media directories:" -msgstr "メディアディレクトリ:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNAは、DLNA/UPnP-AVクライアントの完全互換を目的としたサーバー・ソフト" -"ウェアです。" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "miniDLNAがクライアントに通知するXML中のモデル番号を設定します。" - -msgid "Music" -msgstr "ミュージック" - -msgid "Network interfaces to serve." -msgstr "サービスが使用するネットワーク・インターフェースを設定します。" - -msgid "Notify interval in seconds." -msgstr "通知間隔を秒単位で設定します。" - -msgid "Notify interval:" -msgstr "通知間隔:" - -msgid "Pictures" -msgstr "ピクチャ" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "ステータス表示のためのHTTPポート番号を設定してください。" - -msgid "Port:" -msgstr "ポート:" - -msgid "Presentation URL:" -msgstr "プレゼンテーションURL:" - -msgid "Root container:" -msgstr "ルート・コンテナ:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "miniDLNAがクライアントに通知するXML中のシリアルナンバーを設定します。" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "クライアント上で表示されるUPnPノード名を設定してください。" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"miniDLNAが使用するデータベースおよびアルバムアートのキャッシュを保存するディ" -"レクトリパスを設定してください。" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "miniDLNAが書きだすログファイルのディレクトリパスを設定してください。" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" -"シンボリックリンクを通してメディア ルート外のコンテンツの提供を許可するには、" -"このオプションを有効にしてください。" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" -"inotifyを使用した新規ファイルの自動検知を有効にする場合、このオプションを有効" -"にしてください。" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" -"TiVoサポートのための.jpgおよび.mp3ファイルのストリーミングを行う場合、このオ" -"プションを有効にしてください。" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"DLNA規格を厳守する場合、このオプションを有効にしてください。オプションを有効" -"にすると、サーバー側で、大きいサイズのJPEGファイルのダウンスケールを行いま" -"す。しかし、この機能はSonyなどのDLNA製品において、JPEGサービスのパフォーマン" -"スを損なう可能性があります。" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"miniDLNA がスキャンするディレクトリを設定します。ディレクトリを特定のコンテン" -"ツに制限したい場合、タイプをパスのはじめに付け、コンマ記号で区切ることで設定" -"できます ('A'=オーディオ \"audio\", 'V'=ビデオ \"video\", 'P'=写真 \"images" -"\", 例: A,/mnt/media/Music)。また、このオプションは複数のディレクトリを登録可" -"能です。" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "MiniSSDPd ソケットのパスを設定してください。" - -msgid "Standard container" -msgstr "標準コンテナ" - -msgid "Strict to DLNA standard:" -msgstr "DLNA規格の厳守:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"miniDLNA サービスは稼働中です。%d 個の音楽ファイル , %d 個のビデオファイル, " -"%d 個の写真ファイルを認識しています。" - -msgid "The miniDLNA service is not running." -msgstr "miniDLNA サービスは稼働していません。" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "アルバムアート検索時にチェックするファイル名のリストを設定します。" - -msgid "Video" -msgstr "ビデオ" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "miniDLNA ステータス" - -msgid "miniSSDP socket:" -msgstr "miniSSDP ソケット:" - -#~ msgid "Network interfaces to serve, comma delimited list." -#~ msgstr "" -#~ "サービスが使用するネットワーク・インターフェースを設定します。カンマ記号 " -#~ "\",\" で区切ってください。" - -#~ msgid "" -#~ "This is a list of file names to check for when searching for album art. " -#~ "Note: names must be delimited with a forward slash '/'" -#~ msgstr "" -#~ "アルバムアート検索時にチェックするファイル名のリストを設定します。注意: " -#~ "ファイル名はスラッシュ記号 '/' で区切ってください。" diff --git a/package/luci/applications/luci-app-minidlna/po/ms/minidlna.po b/package/luci/applications/luci-app-minidlna/po/ms/minidlna.po deleted file mode 100644 index 7372c90a83..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/ms/minidlna.po +++ /dev/null @@ -1,170 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/no/minidlna.po b/package/luci/applications/luci-app-minidlna/po/no/minidlna.po deleted file mode 100644 index daf1996564..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/no/minidlna.po +++ /dev/null @@ -1,196 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-03-25 17:25+0200\n" -"Last-Translator: protx \n" -"Language-Team: none\n" -"Language: no\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Avanserte Innstillinger" - -msgid "Album art names:" -msgstr "Albumbilder navn:" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "Annonsert modellnummer:" - -msgid "Announced serial number:" -msgstr "Annonsert serienummer:" - -msgid "Browse directory" -msgstr "Bla katalog" - -msgid "Collecting data..." -msgstr "Samler inn data..." - -msgid "Database directory:" -msgstr "Database katalog:" - -msgid "Enable TIVO:" -msgstr "Aktiver TIVO:" - -msgid "Enable inotify:" -msgstr "Aktiver inotify:" - -msgid "Enable:" -msgstr "Aktiver:" - -msgid "Friendly name:" -msgstr "Vennlig navn:" - -msgid "General Settings" -msgstr "Generelle Innstillinger" - -msgid "Interfaces:" -msgstr "Grensesnitt:" - -msgid "Log directory:" -msgstr "Logg katalog:" - -msgid "Media directories:" -msgstr "Media kataloger:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNA er serverprogramvare som sikter på å være fullt kompatibel med DLNA/" -"UPnP-AV klienter." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Modellnummer som MiniDLNA daemon vil rapportere til klienter. (XML " -"beskrivelse)" - -msgid "Music" -msgstr "Musikk" - -msgid "Network interfaces to serve." -msgstr "Nettverksgrensesnittene å tjene." - -msgid "Notify interval in seconds." -msgstr "Notify intervall i sekunder." - -msgid "Notify interval:" -msgstr "Notify intervall:" - -msgid "Pictures" -msgstr "Bilder" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Port for HTTP (beskrivelser, SOAP, media overføring) trafikk." - -msgid "Port:" -msgstr "Port:" - -msgid "Presentation URL:" -msgstr "Presentasjon URL:" - -msgid "Root container:" -msgstr "Root katalog:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Serienummeret miniDLNA daemon vil rapportere til klienter. (XML beskrivelse)" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "Her kan en tilpasse navnet som dukker opp på MiniDLNA klientene." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"Her kan en spesifisere hvilken katalog som MiniDLNA bruker for å lagre sin " -"database og albumcover cache." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" -"Her kan en definere hvilken katalog som MiniDLNA skal bruke til å lagre log " -"filen i." - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" -"Her kan en aktivere inotify som overvåker mediakatalogene og dermed " -"automatisk oppdage om det kommer nytt innhold." - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" -"Her kan en aktivere støtte for strømming av .jpg og .mp3 filer til en TiVo " -"med HMO støtte." - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"Her kan en aktivere at en holder seg til DLNA-standarder. Dette vil tillate " -"server-side nedskalering av svært store JPEG-bilder, noe som kan skade JPEG " -"serverens ytelse på (minst) Sony DLNA-produkter." - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"Her kan en velge den katalogen som blir skannet. Om du ønsker å begrense " -"katalogen til en spesifikk innholdstype kan sette en bokstav foran ('A' for " -"lyd, 'V' for video, 'P' for bilder), etterfulgt av et komma og katalogen. (f." -"eks A,/mnt/media/Musikk). Flere kataloger kan brukes." - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "Angi banen til MiniSSDPd socketen." - -msgid "Standard container" -msgstr "Standard container" - -msgid "Strict to DLNA standard:" -msgstr "Streng overholdelse av DLNA-standarden:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"MiniDLNA tjenesten er aktiv, serverer %d lyd, %d video og %d bildefiler." - -msgid "The miniDLNA service is not running." -msgstr "MiniDLNA tjenesten kjører ikke." - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" -"Dette er en liste over filnavn for å se etter når du søker etter albumcover." - -msgid "Video" -msgstr "Video" - -msgid "miniDLNA" -msgstr "MiniDLNA" - -msgid "miniDLNA Status" -msgstr "MiniDLNA Status" - -msgid "miniSSDP socket:" -msgstr "miniSSDP socket:" diff --git a/package/luci/applications/luci-app-minidlna/po/pl/minidlna.po b/package/luci/applications/luci-app-minidlna/po/pl/minidlna.po deleted file mode 100644 index 8c03b51556..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/pl/minidlna.po +++ /dev/null @@ -1,196 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-24 07:53+0200\n" -"Last-Translator: goodgod261 \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -msgid "Album art names:" -msgstr "Nazwy okładek albumów:" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "Rozgłaszany model:" - -msgid "Announced serial number:" -msgstr "Rozgłaszany numer seryjny:" - -msgid "Browse directory" -msgstr "Przeglądaj folder" - -msgid "Collecting data..." -msgstr "Zbieranie informacji..." - -msgid "Database directory:" -msgstr "Katalog bazy danych:" - -msgid "Enable TIVO:" -msgstr "Włącz TIVO:" - -msgid "Enable inotify:" -msgstr "Włącz inotify:" - -msgid "Enable:" -msgstr "Włącz:" - -msgid "Friendly name:" -msgstr "Przyjazna nazwa:" - -msgid "General Settings" -msgstr "Ustawienia ogólne" - -msgid "Interfaces:" -msgstr "Interfejsy:" - -msgid "Log directory:" -msgstr "Katalog dzienników (logów):" - -msgid "Media directories:" -msgstr "Katalog mediów:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNA jest oprogramowaniem serwerowym mającym na celu pełną zgodność z " -"klientami DLNA/UPnP-AV." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "Model, który demon miniDLNA zgłosi klientom w swoim opisie XML." - -msgid "Music" -msgstr "Muzyka" - -msgid "Network interfaces to serve." -msgstr "Interfejsy sieciowe do obsługiwania." - -msgid "Notify interval in seconds." -msgstr "Interwał powiadamiania w sekundach." - -msgid "Notify interval:" -msgstr "Interwał powiadamiania." - -msgid "Pictures" -msgstr "Obrazy" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Port dla ruchu HTTP (opisy, SOAP, transfer mediów)." - -msgid "Port:" -msgstr "Port:" - -msgid "Presentation URL:" -msgstr "URL prezentacyjny:" - -msgid "Root container:" -msgstr "Kontener główny (root):" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Numer seryjny, który demon miniDLNA zgłosi klientom w swoim opisie XML." - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "Ustaw to, jeśli chcesz wybrać własną nazwę pokazującą się w klientach." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"Ustaw to, jeśli chcesz podać folder, w którym miniDLNA powinien przechowywać " -"bazę danych i cache okładek albumów." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" -"Ustaw to, jeśli chcesz podać folder, w którym miniDLNA powinien przechowywać " -"dzienniki (logi)." - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" -"Ustaw to, aby włączyć monitorowanie inotify, by automatycznie wykrywać nowe " -"pliki." - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" -"Ustaw to, aby włączyć wsparcie dla streamingu plików .jpg i .mp3 do TiVo " -"obsługującego HMO." - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"Ustaw to, aby ściśle przestrzegać standardów DLNA. Pozwoli to na " -"zmniejszanie wielkich plików JPEG po stronie serwera, co może obniżyć " -"wydajność dostarczania plików JPEG (przynajmniej) na urządzeniach DLNA Sony." - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"Ustaw tu folder, który chcesz skanować. Jeśli chcesz ograniczyć folder do " -"konkretnego typu zawartości, możesz poprzedzić ścieżkę typem (\"A\" dla " -"audio, \"V\" dla wideo, \"P\" dla obrazów) i przecinkiem (np A,/mnt/media/" -"Muzyka). Możesz podać kilka folderów." - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "Podaj ścieżkę do gniazda (socketu) miniSSDPd." - -msgid "Standard container" -msgstr "Standardowy kontener" - -msgid "Strict to DLNA standard:" -msgstr "Ściśle trzymaj się standardów DLNA:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"Usługa miniDLNA jest aktywna, dostarczając %d utworów, %d filmów i %d " -"obrazów." - -msgid "The miniDLNA service is not running." -msgstr "Usługa miniDLNA nie jest włączona." - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" -"To jest lista nazw plików do sprawdzenia podczas wyszukiwania okładki albumu." - -msgid "Video" -msgstr "Wideo" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "Status miniDLNA" - -msgid "miniSSDP socket:" -msgstr "Gniazdo (socket) miniSSDP:" diff --git a/package/luci/applications/luci-app-minidlna/po/pt-br/minidlna.po b/package/luci/applications/luci-app-minidlna/po/pt-br/minidlna.po deleted file mode 100644 index 5ae9226d18..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/pt-br/minidlna.po +++ /dev/null @@ -1,200 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -msgid "Advanced Settings" -msgstr "Configuração Avançada" - -msgid "Album art names:" -msgstr "Nomes do Álbum artistico: " - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "numero de modelo anunciado:" - -msgid "Announced serial number:" -msgstr "Anunciar serial:" - -msgid "Browse directory" -msgstr "Procurar diretório " - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "Database directory:" -msgstr "Banco de dados de diretório:" - -msgid "Enable TIVO:" -msgstr "Ativar TIVO:" - -msgid "Enable inotify:" -msgstr "Ativar inotify:" - -msgid "Enable:" -msgstr "Ativado" - -msgid "Friendly name:" -msgstr "Nome amigável:" - -msgid "General Settings" -msgstr "Configuração Geral" - -msgid "Interfaces:" -msgstr "Interfaces:" - -msgid "Log directory:" -msgstr "Diretório de Log" - -msgid "Media directories:" -msgstr "Diretórios de mídia:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNA é um software de servidor com o objetivo de ser totalmente " -"compatível com os clientes DLNA / UPnP-AV." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Número do modelo do daemon miniDLNA irá relatar aos clientes em sua " -"descrição XML." - -msgid "Music" -msgstr "Musica" - -msgid "Network interfaces to serve." -msgstr "As interfaces de rede para servir." - -msgid "Notify interval in seconds." -msgstr "Notificação de intervalo em segundos." - -msgid "Notify interval:" -msgstr "Intervalo de Notificação:" - -msgid "Pictures" -msgstr "Imagems" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Porta para HTTP (descrições, SOAP, transferência de mídia) de tráfego." - -msgid "Port:" -msgstr "Porta:" - -msgid "Presentation URL:" -msgstr "URL para Apresentação:" - -msgid "Root container:" -msgstr "Root container:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Numero serial do miniDLNA daemon apresentará um relatório a clientes em sua " -"descrição XML." - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" -"Defina esta opção se você quiser personalizar o nome que aparece em seus " -"clientes." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"Defina esta opção se você gostaria de especificar o diretório onde você " -"deseja MiniDLNA para armazenar seu banco de dados e cache de arte do álbum." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" -"Defina esta opção se você gostaria de especificar o diretório onde você " -"deseja MiniDLNA para armazenar seu arquivo de log." - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" -"Defina esta opção para permitir o monitoramento inotify para descobrir " -"automaticamente novos arquivos." - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" -"Defina esta opção para habilitar o suporte para streaming. Jpg e. Arquivos " -"MP3 para um TiVo suporte HMO." - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"Defina esta opção para aderir estritamente às normas DLNA. Isso permitirá " -"que do lado do servidor downscaling de imagens muito grandes JPEG, que podem " -"prejudicar o desempenho servindo em JPEG (pelo menos) os produtos da Sony " -"DLNA." - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"Defina esta opção para o diretório que você deseja verificar. Se você quiser " -"restringir o diretório para um tipo específico de conteúdo, você pode " -"prefixar o tipo ('A' para áudio, 'V' para o vídeo, 'P' para imagens), " -"seguido por uma vírgula, para o diretório (por exemplo A, / mnt / media / " -"Música). Vários diretórios podem ser especificados." - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "Especifique o caminho para o soquete MiniSSDPd." - -msgid "Standard container" -msgstr "container padrão" - -msgid "Strict to DLNA standard:" -msgstr "Strict para DLNA padrão:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"O serviço está ativo miniDLNA, servindo% d áudio, vídeo e arquivos% d% d " -"imagem." - -msgid "The miniDLNA service is not running." -msgstr "O serviço miniDLNA não está funcionando." - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" -"Esta é uma lista de nomes de arquivos para verificar quando procurando arte " -"do álbum." - -msgid "Video" -msgstr "Video" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "miniDLNA Status" - -msgid "miniSSDP socket:" -msgstr "miniSSDP soquete:" diff --git a/package/luci/applications/luci-app-minidlna/po/pt/minidlna.po b/package/luci/applications/luci-app-minidlna/po/pt/minidlna.po deleted file mode 100644 index dbd835f509..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/pt/minidlna.po +++ /dev/null @@ -1,178 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-06-03 23:36+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Definições Avançadas" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "Número modelo anunciado:" - -msgid "Announced serial number:" -msgstr "Número de série anunciado:" - -msgid "Browse directory" -msgstr "Procurar directório" - -msgid "Collecting data..." -msgstr "A obter dados..." - -msgid "Database directory:" -msgstr "Directório da base de dados:" - -msgid "Enable TIVO:" -msgstr "Ativar TIVO:" - -msgid "Enable inotify:" -msgstr "Ativar inotify:" - -msgid "Enable:" -msgstr "Ativar:" - -msgid "Friendly name:" -msgstr "Nome amigável:" - -msgid "General Settings" -msgstr "Definições Gerais" - -msgid "Interfaces:" -msgstr "Interfaces:" - -msgid "Log directory:" -msgstr "Directório de Log:" - -msgid "Media directories:" -msgstr "Pastas multimédia:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"O MiniDLNA é um software de servidor com o objectivo de ser totalmente " -"compatível com clientes de DLNA/UPnP-AV." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Número de modelo que o serviço de miniDLNA irá reportar aos clientes na sua " -"descrição XML." - -msgid "Music" -msgstr "Música" - -msgid "Network interfaces to serve." -msgstr "Interfaces de rede a serem seervidas." - -msgid "Notify interval in seconds." -msgstr "Intervalo de notificação em segundos." - -msgid "Notify interval:" -msgstr "Intervalo de Notificação:" - -msgid "Pictures" -msgstr "Imagens" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Porta para tráfego HTTP (descrições, SOAP, tranferencia de conteudos)." - -msgid "Port:" -msgstr "Porta:" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/ro/minidlna.po b/package/luci/applications/luci-app-minidlna/po/ro/minidlna.po deleted file mode 100644 index 5e79cd2cf7..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/ro/minidlna.po +++ /dev/null @@ -1,175 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-09 13:35+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Setări avansate" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "Răsfoire director" - -msgid "Collecting data..." -msgstr "Colectare date..." - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "Activare TIVO:" - -msgid "Enable inotify:" -msgstr "Activare inotify:" - -msgid "Enable:" -msgstr "Activare:" - -msgid "Friendly name:" -msgstr "Nume prieten:" - -msgid "General Settings" -msgstr "Setări generale" - -msgid "Interfaces:" -msgstr "Interfeţe" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "Directoare media" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "Muzică" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "Notificare interval în secunde." - -msgid "Notify interval:" -msgstr "Notificare interval:" - -msgid "Pictures" -msgstr "Fotografii" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Port pentru HTTP (descrieri, SOAP, transfer media) trafic." - -msgid "Port:" -msgstr "Port:" - -msgid "Presentation URL:" -msgstr "URL de prezentare:" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "Video" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "Stare miniDLNA" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/ru/minidlna.po b/package/luci/applications/luci-app-minidlna/po/ru/minidlna.po deleted file mode 100644 index 28ae3165a9..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/ru/minidlna.po +++ /dev/null @@ -1,198 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: minidlna\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2013-11-13 18:43+0200\n" -"Last-Translator: Роман \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Advanced Settings" -msgstr "Расширенные настройки" - -msgid "Album art names:" -msgstr "Имена обложек альбома:" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "Номер модели:" - -msgid "Announced serial number:" -msgstr "Серийный номер:" - -msgid "Browse directory" -msgstr "Обзор директории" - -msgid "Collecting data..." -msgstr "Сбор данных..." - -msgid "Database directory:" -msgstr "Папка базы данных:" - -msgid "Enable TIVO:" -msgstr "Включить TIVO:" - -msgid "Enable inotify:" -msgstr "Включить inotify:" - -msgid "Enable:" -msgstr "Включить:" - -msgid "Friendly name:" -msgstr "Понятное имя:" - -msgid "General Settings" -msgstr "Общие настройки" - -msgid "Interfaces:" -msgstr "Интерфейсы:" - -msgid "Log directory:" -msgstr "Папка журнала:" - -msgid "Media directories:" -msgstr "Папки медиа:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" -"MiniDLNA - это серверное программное обеспечение, имеющее цель обеспечения " -"полной совместимости с клиентами DLNA/UPnP-AV." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Номер модели который, miniDLNA будет сообщать клиентам в своём XML-описании." - -msgid "Music" -msgstr "Музыка" - -msgid "Network interfaces to serve." -msgstr "Обслуживаемые сетевые интерфейсы." - -msgid "Notify interval in seconds." -msgstr "Интервал уведомления (секунды)." - -msgid "Notify interval:" -msgstr "Интервал уведомления:" - -msgid "Pictures" -msgstr "Картинки" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Порт для HTTP-трафика (описания, SOAP, передача мультимедиа)" - -msgid "Port:" -msgstr "Порт:" - -msgid "Presentation URL:" -msgstr "URL представления:" - -msgid "Root container:" -msgstr "Корневой контейнер:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" -"Серийный номер, который miniDLNA будет сообщать клиентам в своём XML-" -"описании." - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "Изменение имени отображения для клиентов." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" -"Папка, в которой miniDLNA будет хранить свою базу данных и кэш обложек " -"альбомов." - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "Папка, в которой miniDLNA будет хранить свой файл журнала." - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" -"Включение наблюдения inotify для автоматического обнаружения новых файлов." - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" -"Установите для включения поддержки потокового воспроизведения файлов .jpg и ." -"mp3 для TiVo с поддержкой HMO." - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"Установите для строгого соответствия стандартам DLNA. Это разрешит " -"уменьшение размера слишком больших JPEG-изображений на стороне сервера, что " -"может повредить производительности (по крайней мере) DLNA-продуктов Sony." - -#, fuzzy -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"Директории, которые необходимо сканировать. Если вы хотите установить " -"ограничение на определённый тип содержимого в директории, вы можете написать " -"тип ('A' для аудио, 'V' для видео, 'P' для изображений) перед путём к " -"директории, за которым следует запятая (напр. A,/mnt/media/Music). Может " -"быть указано несколько директорий." - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "Укажите путь к сокету MiniSSDPd." - -msgid "Standard container" -msgstr "Стандартный контейнер" - -msgid "Strict to DLNA standard:" -msgstr "Строгий стандарт DLNA:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" -"Сервис miniDLNA запущен, обслуживает %d аудио-, %d видео- и %d файлов с " -"изображениями." - -msgid "The miniDLNA service is not running." -msgstr "Сервис miniDLNA не запущен." - -msgid "This is a list of file names to check for when searching for album art." -msgstr "Это список файлов, среди которых необходимо искать обложки альбомов." - -msgid "Video" -msgstr "Видео" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "Статус miniDLNA" - -msgid "miniSSDP socket:" -msgstr "Сокет miniSSDP:" diff --git a/package/luci/applications/luci-app-minidlna/po/sk/minidlna.po b/package/luci/applications/luci-app-minidlna/po/sk/minidlna.po deleted file mode 100644 index 2968311d2a..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/sk/minidlna.po +++ /dev/null @@ -1,171 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/sv/minidlna.po b/package/luci/applications/luci-app-minidlna/po/sv/minidlna.po deleted file mode 100644 index d06abfd4cd..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/sv/minidlna.po +++ /dev/null @@ -1,172 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/templates/minidlna.pot b/package/luci/applications/luci-app-minidlna/po/templates/minidlna.pot deleted file mode 100644 index 0f22c674dd..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/templates/minidlna.pot +++ /dev/null @@ -1,164 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/tr/minidlna.po b/package/luci/applications/luci-app-minidlna/po/tr/minidlna.po deleted file mode 100644 index 1eeba3f1bc..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/tr/minidlna.po +++ /dev/null @@ -1,171 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/uk/minidlna.po b/package/luci/applications/luci-app-minidlna/po/uk/minidlna.po deleted file mode 100644 index db23241cc5..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/uk/minidlna.po +++ /dev/null @@ -1,172 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/vi/minidlna.po b/package/luci/applications/luci-app-minidlna/po/vi/minidlna.po deleted file mode 100644 index 1eeba3f1bc..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/vi/minidlna.po +++ /dev/null @@ -1,171 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Album art names:" -msgstr "" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "" - -msgid "Announced serial number:" -msgstr "" - -msgid "Browse directory" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Database directory:" -msgstr "" - -msgid "Enable TIVO:" -msgstr "" - -msgid "Enable inotify:" -msgstr "" - -msgid "Enable:" -msgstr "" - -msgid "Friendly name:" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Interfaces:" -msgstr "" - -msgid "Log directory:" -msgstr "" - -msgid "Media directories:" -msgstr "" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/po/zh-cn/minidlna.po b/package/luci/applications/luci-app-minidlna/po/zh-cn/minidlna.po deleted file mode 100644 index 76ebcdade2..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/zh-cn/minidlna.po +++ /dev/null @@ -1,180 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-07 16:21+0200\n" -"Last-Translator: qiuchengxuan \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" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Album art names:" -msgstr "专辑封面名称:" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "通告型号:" - -msgid "Announced serial number:" -msgstr "通告编号:" - -msgid "Browse directory" -msgstr "浏览目录" - -msgid "Collecting data..." -msgstr "收集数据..." - -msgid "Database directory:" -msgstr "数据库目录:" - -msgid "Enable TIVO:" -msgstr "启用TIVO:" - -msgid "Enable inotify:" -msgstr "启用inotify:" - -msgid "Enable:" -msgstr "启用:" - -msgid "Friendly name:" -msgstr "友好名称:" - -msgid "General Settings" -msgstr "基本设置" - -msgid "Interfaces:" -msgstr "接口:" - -msgid "Log directory:" -msgstr "日志目录:" - -msgid "Media directories:" -msgstr "媒体目录:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "MiniDLNA是目标为完全兼容DLNA / UPnP-AV客户端的服务器软件。" - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "miniDLNA守护程序将在其XML描述中向客户端通告型号。" - -msgid "Music" -msgstr "音乐" - -msgid "Network interfaces to serve." -msgstr "服务的网络接口。" - -msgid "Notify interval in seconds." -msgstr "通知的时间间隔,以秒为单位。" - -msgid "Notify interval:" -msgstr "通知的时间间隔:" - -msgid "Pictures" -msgstr "图片" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "Port for HTTP (descriptions, SOAP, media transfer) traffic." - -msgid "Port:" -msgstr "端口:" - -msgid "Presentation URL:" -msgstr "服务网址" - -msgid "Root container:" -msgstr "根目录:" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "miniDLNA守护程序将在其XML描述中向客户端通告编号。" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "设置自定义名称。" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "设置miniDLNA缓存目录" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "设置miniDLNA日志目录" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "设定启用inotify监控,自动发现新的文件。" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "为HMO TiVo启用JPG和MP3流媒体支持。" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" -"设定严格遵守DLNA标准。这将允许服务器端降小大尺寸JPEG图像,在(至少)索尼DLNA" -"的产品这可能会降低JPEG服务性能。" - -# 如果写成A,/mnt/media/Music,uci会报错。实际上应该是A,/mnt/media/Music,这样生成的minidlna.conf刚好是A,/mnt/media/Music -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" -"设置要扫描的目录。如果您想限制特定内容类型的目录,您可以在前面加上类型(用于" -"音频'A','V'视频,'P'图片),其次是用逗号分隔的目录(如A,/mnt/媒体/音乐)。可" -"以指定多个目录。" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "指定MiniSSDPd socket的路径。" - -msgid "Standard container" -msgstr "基本目录" - -msgid "Strict to DLNA standard:" -msgstr "严格的DLNA标准:" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "miniDLNA服务已启用,提供 %d 音频, %d 视频 和 %d 图片." - -msgid "The miniDLNA service is not running." -msgstr "miniDLNA服务未启用" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "这是一个文件名列表,为搜索专辑封面。" - -msgid "Video" -msgstr "视频" - -msgid "miniDLNA" -msgstr "miniDLNA" - -msgid "miniDLNA Status" -msgstr "miniDLNA 状态" - -msgid "miniSSDP socket:" -msgstr "miniSSDP socket:" diff --git a/package/luci/applications/luci-app-minidlna/po/zh-tw/minidlna.po b/package/luci/applications/luci-app-minidlna/po/zh-tw/minidlna.po deleted file mode 100644 index 2c636757d2..0000000000 --- a/package/luci/applications/luci-app-minidlna/po/zh-tw/minidlna.po +++ /dev/null @@ -1,174 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 13:15+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Advanced Settings" -msgstr "進階設定值" - -msgid "Album art names:" -msgstr "專輯名稱" - -msgid "Allow wide links:" -msgstr "" - -msgid "Announced model number:" -msgstr "已宣告型號數量" - -msgid "Announced serial number:" -msgstr "已宣告序號數量" - -msgid "Browse directory" -msgstr "瀏覽目錄" - -msgid "Collecting data..." -msgstr "收集資料進行中..." - -msgid "Database directory:" -msgstr "資料庫目錄所在:" - -msgid "Enable TIVO:" -msgstr "啟用TIVO代錄" - -msgid "Enable inotify:" -msgstr "啟用檔案事件監控" - -msgid "Enable:" -msgstr "啟用:" - -msgid "Friendly name:" -msgstr "友善名稱" - -msgid "General Settings" -msgstr "一般設定值" - -msgid "Interfaces:" -msgstr "介面" - -msgid "Log directory:" -msgstr "Log紀錄放置區" - -msgid "Media directories:" -msgstr "媒體目錄區:" - -msgid "" -"MiniDLNA is server software with the aim of being fully compliant with DLNA/" -"UPnP-AV clients." -msgstr "MiniDLNA是一個伺服器軟體針對能完全兼容DLNA/UPnP-AV用戶端." - -msgid "" -"Model number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "Music" -msgstr "" - -msgid "Network interfaces to serve." -msgstr "" - -msgid "Notify interval in seconds." -msgstr "" - -msgid "Notify interval:" -msgstr "" - -msgid "Pictures" -msgstr "" - -msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic." -msgstr "" - -msgid "Port:" -msgstr "" - -msgid "Presentation URL:" -msgstr "" - -msgid "Root container:" -msgstr "" - -msgid "" -"Serial number the miniDLNA daemon will report to clients in its XML " -"description." -msgstr "" - -msgid "" -"Set this if you want to customize the name that shows up on your clients." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its database and album art cache." -msgstr "" - -msgid "" -"Set this if you would like to specify the directory where you want MiniDLNA " -"to store its log file." -msgstr "" - -msgid "" -"Set this to allow serving content outside the media root (via symlinks)." -msgstr "" - -msgid "" -"Set this to enable inotify monitoring to automatically discover new files." -msgstr "" - -msgid "" -"Set this to enable support for streaming .jpg and .mp3 files to a TiVo " -"supporting HMO." -msgstr "" - -msgid "" -"Set this to strictly adhere to DLNA standards. This will allow server-side " -"downscaling of very large JPEG images, which may hurt JPEG serving " -"performance on (at least) Sony DLNA products." -msgstr "" - -msgid "" -"Set this to the directory you want scanned. If you want to restrict the " -"directory to a specific content type, you can prepend the type ('A' for " -"audio, 'V' for video, 'P' for images), followed by a comma, to the directory " -"(eg. A,/mnt/media/Music). Multiple directories can be specified." -msgstr "" - -msgid "Specify the path to the MiniSSDPd socket." -msgstr "" - -msgid "Standard container" -msgstr "" - -msgid "Strict to DLNA standard:" -msgstr "" - -msgid "" -"The miniDLNA service is active, serving %d audio, %d video and %d image " -"files." -msgstr "" - -msgid "The miniDLNA service is not running." -msgstr "" - -msgid "This is a list of file names to check for when searching for album art." -msgstr "" - -msgid "Video" -msgstr "" - -msgid "miniDLNA" -msgstr "" - -msgid "miniDLNA Status" -msgstr "" - -msgid "miniSSDP socket:" -msgstr "" diff --git a/package/luci/applications/luci-app-minidlna/root/etc/uci-defaults/40_luci-minidlna b/package/luci/applications/luci-app-minidlna/root/etc/uci-defaults/40_luci-minidlna deleted file mode 100755 index 47570307ba..0000000000 --- a/package/luci/applications/luci-app-minidlna/root/etc/uci-defaults/40_luci-minidlna +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.minidlna - set ucitrack.minidlna=minidlna - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-mjpg-streamer/Makefile b/package/luci/applications/luci-app-mjpg-streamer/Makefile deleted file mode 100644 index faa024d1a7..0000000000 --- a/package/luci/applications/luci-app-mjpg-streamer/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=MJPG-Streamer service configuration module -LUCI_DEPENDS:=+mjpg-streamer - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-mjpg-streamer/luasrc/controller/mjpg-streamer.lua b/package/luci/applications/luci-app-mjpg-streamer/luasrc/controller/mjpg-streamer.lua deleted file mode 100644 index 81fd3b39d3..0000000000 --- a/package/luci/applications/luci-app-mjpg-streamer/luasrc/controller/mjpg-streamer.lua +++ /dev/null @@ -1,17 +0,0 @@ --- Copyright 2014 Roger D --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.mjpg-streamer", package.seeall) - -function index() - require("luci.i18n") - luci.i18n.loadc("mjpg-streamer") - if not nixio.fs.access("/etc/config/mjpg-streamer") then - return - end - - local page = entry({"admin", "services", "mjpg-streamer"}, cbi("mjpg-streamer"), _("MJPG-streamer")) - page.i18n = "mjpg-streamer" - page.dependent = true - -end diff --git a/package/luci/applications/luci-app-mjpg-streamer/luasrc/model/cbi/mjpg-streamer.lua b/package/luci/applications/luci-app-mjpg-streamer/luasrc/model/cbi/mjpg-streamer.lua deleted file mode 100644 index d89ab27c29..0000000000 --- a/package/luci/applications/luci-app-mjpg-streamer/luasrc/model/cbi/mjpg-streamer.lua +++ /dev/null @@ -1,223 +0,0 @@ --- Copyright 2014 Roger D --- Licensed to the public under the Apache License 2.0. - -m = Map("mjpg-streamer", "MJPG-streamer", translate("mjpg streamer is a streaming application for Linux-UVC compatible webcams")) - ---- General settings --- - -section_gen = m:section(TypedSection, "mjpg-streamer", translate("General")) - section_gen.addremove=false - section_gen.anonymous=true - -enabled = section_gen:option(Flag, "enabled", translate("Enabled"), translate("Enable MJPG-streamer")) - -input = section_gen:option(ListValue, "input", translate("Input plugin")) - input:depends("enabled", "1") - input:value("uvc", "UVC") - ---input:value("file", "File") - input.optional = false - -output = section_gen:option(ListValue, "output", translate("Output plugin")) - output:depends("enabled", "1") - output:value("http", "HTTP") - output:value("file", "File") - output.optional = false - - ---- Plugin settings --- - -s = m:section(TypedSection, "mjpg-streamer", translate("Plugin settings")) - s.addremove=false - s.anonymous=true - - s:tab("output_http", translate("HTTP output")) - s:tab("output_file", translate("File output")) - s:tab("input_uvc", translate("UVC input")) - ---s:tab("input_file", translate("File input")) - - ---- Input UVC settings --- - -this_tab = "input_uvc" - -device = s:taboption(this_tab, Value, "device", translate("Device")) - device.default="/dev/video0" - --device.datatype = "device" - device:value("/dev/video0", "/dev/video0") - device:value("/dev/video1", "/dev/video1") - device:value("/dev/video2", "/dev/video2") - device.optional = false - -resolution = s:taboption(this_tab, Value, "resolution", translate("Resolution")) - resolution.default = "640x480" - resolution:value("320x240", "320x240") - resolution:value("640x480", "640x480") - resolution:value("800x600", "800x600") - resolution:value("864x480", "864x480") - resolution:value("960x544", "960x544") - resolution:value("960x720", "960x720") - resolution:value("1280x720", "1280x720") - resolution:value("1280x960", "1280x960") - resolution:value("1920x1080", "1920x1080") - resolution.optional = true - -fps = s:taboption(this_tab, Value, "fps", translate("Frames per second")) - fps.datatype = "and(uinteger, min(1))" - fps.placeholder = "5" - fps.optional = true - -yuv = s:taboption(this_tab, Flag, "yuv", translate("Enable YUYV format"), translate("Automatic disabling of MJPEG mode")) - -quality = s:taboption(this_tab, Value, "quality", translate("JPEG compression quality"), translate("Set the quality in percent. This setting activates YUYV format, disables MJPEG")) - quality.datatype = "range(0, 100)" - -minimum_size = s:taboption(this_tab, Value, "minimum_size", translate("Drop frames smaller then this limit"),translate("Set the minimum size if the webcam produces small-sized garbage frames. May happen under low light conditions")) - minimum_size.datatype = "uinteger" - -no_dynctrl = s:taboption(this_tab, Flag, "no_dynctrl", translate("Don't initalize dynctrls"), translate("Do not initalize dynctrls of Linux-UVC driver")) - -led = s:taboption(this_tab, ListValue, "led", translate("Led control")) - led:value("on", translate("On")) - led:value("off", translate("Off")) - led:value("blink", translate("Blink")) - led:value("auto", translate("Auto")) - led.optional = true - - ---- Output HTTP settings --- - -this_tab = "output_http" - -port=s:taboption(this_tab, Value, "port", translate("Port"), translate("TCP port for this HTTP server")) - port.datatype = "port" - port.placeholder = "8080" - -enable_auth = s:taboption(this_tab, Flag, "enable_auth", translate("Authentication required"), translate("Ask for username and password on connect")) - enable_auth.default = false - -username = s:taboption(this_tab, Value, "username", translate("Username")) - username:depends("enable_auth", "1") - username.optional = false - -password = s:taboption(this_tab, Value, "password", translate("Password")) - password:depends("enable_auth", "1") - password.password = true - password.optional = false - password.default = false - -www = s:taboption(this_tab, Value, "www", translate("WWW folder"), translate("Folder that contains webpages")) - www.datatype = "directory" - www.default = "/www/webcam/" - www.optional = false - - ---- HTTP preview --- - -html = [[ - - -
- -

Stream unavailable

-
- - -]] - -preview = s:taboption(this_tab, DummyValue, "_dummy", html) - preview:depends("output", "http") - ---- Output file settings --- - -this_tab = "output_file" - -folder=s:taboption(this_tab, Value, "folder", translate("Folder"), translate("Set folder to save pictures")) - folder.placeholder="/tmp/images" - folder.datatype = "directory" - ---mjpeg=s:taboption(this_tab, Value, "mjpeg", translate("Mjpeg output"), translate("Check to save the stream to an mjpeg file")) - -delay=s:taboption(this_tab, Value, "delay", translate("Interval between saving pictures"), translate("Set the inteval in millisecond")) - delay.placeholder="5000" - delay.datatype = "uinteger" - -ringbuffer=s:taboption(this_tab, Value, "ringbuffer", translate("Ring buffer size"), translate("Max. number of pictures to hold")) - ringbuffer.placeholder="10" - ringbuffer.datatype = "uinteger" - -exceed=s:taboption(this_tab, Value, "exceed", translate("Exceed"), translate("Allow ringbuffer to exceed limit by this amount")) - exceed.datatype = "uinteger" - -command=s:taboption(this_tab, Value, "command", translate("Command to run"), translate("Execute command after saving picture. Mjpg-streamer parse the filename as first parameter to your script.")) - - -return m diff --git a/package/luci/applications/luci-app-mjpg-streamer/po/ja/mjpg-streamer.po b/package/luci/applications/luci-app-mjpg-streamer/po/ja/mjpg-streamer.po deleted file mode 100644 index 7da3444613..0000000000 --- a/package/luci/applications/luci-app-mjpg-streamer/po/ja/mjpg-streamer.po +++ /dev/null @@ -1,171 +0,0 @@ -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 \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja\n" -"X-Generator: Poedit 1.8.11\n" - -msgid "Allow ringbuffer to exceed limit by this amount" -msgstr "リングバッファーがこの量だけ制限を超過することを許可します。" - -msgid "Ask for username and password on connect" -msgstr "接続時にユーザー名とパスワードを確認します。" - -msgid "Authentication required" -msgstr "認証が必要" - -msgid "Auto" -msgstr "自動" - -msgid "Automatic disabling of MJPEG mode" -msgstr "MJPEGモードの自動無効化" - -msgid "Blink" -msgstr "点滅" - -msgid "Check to save the stream to an mjpeg file" -msgstr "MJPEGファイルに保存するにはチェックします。" - -msgid "Command to run" -msgstr "実行するコマンド" - -msgid "Device" -msgstr "デバイス" - -msgid "Do not initalize dynctrls of Linux-UVC driver" -msgstr "Linux-UVCドライバのdynctrlsを初期化しません。" - -msgid "Don't initalize dynctrls" -msgstr "dynctrlsを初期化しない" - -msgid "Drop frames smaller then this limit" -msgstr "この制限よりも小さいフレームをドロップする" - -msgid "Enable MJPG-streamer" -msgstr "MJPG-streamerを有効化します。" - -msgid "Enable YUYV format" -msgstr "YUYV形式を有効化" - -msgid "Enabled" -msgstr "有効" - -msgid "Exceed" -msgstr "超過" - -msgid "" -"Execute command after saving picture. Mjpg-streamer parse the filename as " -"first parameter to your script." -msgstr "" -"画像保存後にコマンドを実行します。Mjpg-streamerは、ファイル名をスクリプトの最" -"初の引数として解釈します。" - -msgid "File input" -msgstr "ファイル入力" - -msgid "File output" -msgstr "ファイル出力" - -msgid "Folder" -msgstr "フォルダー" - -msgid "Folder that contains webpages" -msgstr "ウェブページを含むフォルダー" - -msgid "Frames per second" -msgstr "1秒当たりのフレーム数" - -msgid "General" -msgstr "一般設定" - -msgid "HTTP output" -msgstr "HTTP 出力" - -msgid "Input plugin" -msgstr "入力プラグイン" - -msgid "Interval between saving pictures" -msgstr "画像の保存間隔" - -msgid "JPEG compression quality" -msgstr "JPEG 圧縮品質" - -msgid "Led control" -msgstr "LED 制御" - -msgid "MJPG-streamer" -msgstr "MJPG-streamer" - -msgid "Max. number of pictures to hold" -msgstr "保持する画像の最大数です。" - -msgid "Mjpeg output" -msgstr "MJPEG 出力" - -msgid "Off" -msgstr "消灯" - -msgid "On" -msgstr "点灯" - -msgid "Output plugin" -msgstr "出力プラグイン" - -msgid "Password" -msgstr "パスワード" - -msgid "Plugin settings" -msgstr "プラグイン設定" - -msgid "Port" -msgstr "ポート" - -msgid "Resolution" -msgstr "解像度" - -msgid "Ring buffer size" -msgstr "リングバッファー サイズ" - -msgid "Set folder to save pictures" -msgstr "画像を保存するフォルダーを設定します。" - -msgid "Set the inteval in millisecond" -msgstr "間隔をミリ秒で設定します。" - -msgid "" -"Set the minimum size if the webcam produces small-sized garbage frames. May " -"happen under low light conditions" -msgstr "" -"もしウェブカメラが小さなサイズの余分なフレームを生成する場合は、最小サイズを" -"設定します。光量の低い条件下で発生することがあります。" - -msgid "" -"Set the quality in percent. This setting activates YUYV format, disables " -"MJPEG" -msgstr "" -"品質をパーセントで設定します。この設定はYUYV形式を有効にし、MJPEGを無効にしま" -"す。" - -msgid "TCP port for this HTTP server" -msgstr "このHTTPサーバーのTCPポートです。" - -msgid "UVC input" -msgstr "UVC 入力" - -msgid "Username" -msgstr "ユーザー名" - -msgid "WWW folder" -msgstr "WWW フォルダー" - -msgid "" -"mjpg streamer is a streaming application for Linux-UVC compatible webcams" -msgstr "" -"Mjpg streamerは、Linux-UVC互換ウェブカメラのためのストリーミング アプリケー" -"ションです。" diff --git a/package/luci/applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po b/package/luci/applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po deleted file mode 100644 index 28bfa186b0..0000000000 --- a/package/luci/applications/luci-app-mjpg-streamer/po/pt-br/mjpg-streamer.po +++ /dev/null @@ -1,172 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "Allow ringbuffer to exceed limit by this amount" -msgstr "Permitir que o buffer em anel exceda o limite por essa quantidade" - -msgid "Ask for username and password on connect" -msgstr "Pergunte por um usuário e senha na conexão" - -msgid "Authentication required" -msgstr "Requer autenticação" - -msgid "Auto" -msgstr "Automático" - -msgid "Automatic disabling of MJPEG mode" -msgstr "Desativação automática do modo MJPEG" - -msgid "Blink" -msgstr "Pisca" - -msgid "Check to save the stream to an mjpeg file" -msgstr "Marque para salvar o fluxo em um arquivo MJPEG" - -msgid "Command to run" -msgstr "Comando para executar:" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Do not initalize dynctrls of Linux-UVC driver" -msgstr "Não inicie o dynctrls do driver do Linux-UVC" - -msgid "Don't initalize dynctrls" -msgstr "Não inicia o dynctrls" - -msgid "Drop frames smaller then this limit" -msgstr "Descarte quadros menores que este limite" - -msgid "Enable MJPG-streamer" -msgstr "Ativa o MJPG-streamer" - -msgid "Enable YUYV format" -msgstr "Ativar Formato YUYV" - -msgid "Enabled" -msgstr "Habilitado" - -msgid "Exceed" -msgstr "Ultrapassado" - -msgid "" -"Execute command after saving picture. Mjpg-streamer parse the filename as " -"first parameter to your script." -msgstr "" -"Execute o comando depois de salvar a imagem. Mjpg-streamer passa o nome do " -"arquivo como primeiro parâmetro para o comando." - -msgid "File input" -msgstr "Entrada do arquivo" - -msgid "File output" -msgstr "Saída do arquivo" - -msgid "Folder" -msgstr "Pasta" - -msgid "Folder that contains webpages" -msgstr "Pasta que contém páginas web" - -msgid "Frames per second" -msgstr "Quadros por segundos" - -msgid "General" -msgstr "Geral" - -msgid "HTTP output" -msgstr "Saída HTTP" - -msgid "Input plugin" -msgstr "Plugins de entrada" - -msgid "Interval between saving pictures" -msgstr "Intervalo entre o salvamento das imagens" - -msgid "JPEG compression quality" -msgstr "Qualidade da compressão JPEG" - -msgid "Led control" -msgstr "Controle de LED" - -msgid "MJPG-streamer" -msgstr "MJPG-streamer" - -msgid "Max. number of pictures to hold" -msgstr "Número máximo de imagens a serem mantidas" - -msgid "Mjpeg output" -msgstr "Saída Mjpeg" - -msgid "Off" -msgstr "Desligado" - -msgid "On" -msgstr "Ligado" - -msgid "Output plugin" -msgstr "Plugin de saída" - -msgid "Password" -msgstr "Senha" - -msgid "Plugin settings" -msgstr "Configurações do Plugin" - -msgid "Port" -msgstr "Porta" - -msgid "Resolution" -msgstr "Resolução" - -msgid "Ring buffer size" -msgstr "Tamanho do buffer em anel" - -msgid "Set folder to save pictures" -msgstr "Definir pasta para salvas as imagens" - -msgid "Set the inteval in millisecond" -msgstr "Defina o intervalo em milisegundos" - -msgid "" -"Set the minimum size if the webcam produces small-sized garbage frames. May " -"happen under low light conditions" -msgstr "" -"Defina o tamanho mínimo se a webcam produz quadros lixo de tamanho pequeno. " -"Pode acontecer sob condições de pouca luz" - -msgid "" -"Set the quality in percent. This setting activates YUYV format, disables " -"MJPEG" -msgstr "" -"Defina a qualidade em porcentagem. Esta definição ativa o formato YUYV, " -"desativa MJPEG" - -msgid "TCP port for this HTTP server" -msgstr "Porta TCP para este servidor HTTP" - -msgid "UVC input" -msgstr "Dispositivo UVC de entrada" - -msgid "Username" -msgstr "Usuário" - -msgid "WWW folder" -msgstr "Pasta WWW" - -msgid "" -"mjpg streamer is a streaming application for Linux-UVC compatible webcams" -msgstr "" -"Mjpg streamer é uma aplicação de streaming para webcams compatíveis com o " -"Linux-UVC" diff --git a/package/luci/applications/luci-app-mjpg-streamer/po/templates/mjpg-streamer.pot b/package/luci/applications/luci-app-mjpg-streamer/po/templates/mjpg-streamer.pot deleted file mode 100644 index ecb374d7f3..0000000000 --- a/package/luci/applications/luci-app-mjpg-streamer/po/templates/mjpg-streamer.pot +++ /dev/null @@ -1,153 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Allow ringbuffer to exceed limit by this amount" -msgstr "" - -msgid "Ask for username and password on connect" -msgstr "" - -msgid "Authentication required" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Automatic disabling of MJPEG mode" -msgstr "" - -msgid "Blink" -msgstr "" - -msgid "Check to save the stream to an mjpeg file" -msgstr "" - -msgid "Command to run" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Do not initalize dynctrls of Linux-UVC driver" -msgstr "" - -msgid "Don't initalize dynctrls" -msgstr "" - -msgid "Drop frames smaller then this limit" -msgstr "" - -msgid "Enable MJPG-streamer" -msgstr "" - -msgid "Enable YUYV format" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Exceed" -msgstr "" - -msgid "" -"Execute command after saving picture. Mjpg-streamer parse the filename as " -"first parameter to your script." -msgstr "" - -msgid "File input" -msgstr "" - -msgid "File output" -msgstr "" - -msgid "Folder" -msgstr "" - -msgid "Folder that contains webpages" -msgstr "" - -msgid "Frames per second" -msgstr "" - -msgid "General" -msgstr "" - -msgid "HTTP output" -msgstr "" - -msgid "Input plugin" -msgstr "" - -msgid "Interval between saving pictures" -msgstr "" - -msgid "JPEG compression quality" -msgstr "" - -msgid "Led control" -msgstr "" - -msgid "MJPG-streamer" -msgstr "" - -msgid "Max. number of pictures to hold" -msgstr "" - -msgid "Mjpeg output" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "On" -msgstr "" - -msgid "Output plugin" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Plugin settings" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Resolution" -msgstr "" - -msgid "Ring buffer size" -msgstr "" - -msgid "Set folder to save pictures" -msgstr "" - -msgid "Set the inteval in millisecond" -msgstr "" - -msgid "" -"Set the minimum size if the webcam produces small-sized garbage frames. May " -"happen under low light conditions" -msgstr "" - -msgid "" -"Set the quality in percent. This setting activates YUYV format, disables " -"MJPEG" -msgstr "" - -msgid "TCP port for this HTTP server" -msgstr "" - -msgid "UVC input" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "WWW folder" -msgstr "" - -msgid "" -"mjpg streamer is a streaming application for Linux-UVC compatible webcams" -msgstr "" diff --git a/package/luci/applications/luci-app-mjpg-streamer/po/zh-cn/mjpg-streamer.po b/package/luci/applications/luci-app-mjpg-streamer/po/zh-cn/mjpg-streamer.po deleted file mode 100644 index 8b51f6ad4b..0000000000 --- a/package/luci/applications/luci-app-mjpg-streamer/po/zh-cn/mjpg-streamer.po +++ /dev/null @@ -1,165 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-mjpg-streamer\n" -"POT-Creation-Date: 2015-06-11 21:11+0100\n" -"PO-Revision-Date: 2015-06-11 21:11+0100\n" -"Last-Translator: maz-1 \n" -"Language-Team: \n" -"Language: zh-cn\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Allow ringbuffer to exceed limit by this amount" -msgstr "允许环形缓冲区最多超过这个数值" - -msgid "Ask for username and password on connect" -msgstr "连接时询问用户名和密码" - -msgid "Authentication required" -msgstr "需要验证" - -msgid "Auto" -msgstr "自动" - -msgid "Automatic disabling of MJPEG mode" -msgstr "自动禁用MJPEG模式" - -msgid "Blink" -msgstr "闪烁" - -msgid "Check to save the stream to an mjpeg file" -msgstr "勾选以保存视频流至一个mjpeg文件" - -msgid "Command to run" -msgstr "运行的命令" - -msgid "Device" -msgstr "设备" - -msgid "Do not initalize dynctrls of Linux-UVC driver" -msgstr "不要初始化Linux-UVC驱动的dynctrls" - -msgid "Don't initalize dynctrls" -msgstr "不要初始化dynctrls" - -msgid "Drop frames smaller then this limit" -msgstr "丢弃小于该尺寸限制的帧" - -msgid "Enable MJPG-streamer" -msgstr "启用MJPG-streamer" - -msgid "Enable YUYV format" -msgstr "启用YUYV格式" - -msgid "Enabled" -msgstr "启用" - -msgid "Exceed" -msgstr "超出" - -msgid "" -"Execute command after saving picture. Mjpg-streamer parse the filename as " -"first parameter to your script." -msgstr "保存图片后执行命令。文件名将作为第一个参数传递给命令。" - -msgid "File input" -msgstr "文件输入" - -msgid "File output" -msgstr "文件输出" - -msgid "Folder" -msgstr "文件夹" - -msgid "Folder that contains webpages" -msgstr "保存网页的文件夹" - -msgid "Frames per second" -msgstr "帧每秒" - -msgid "General" -msgstr "一般设置" - -msgid "HTTP output" -msgstr "HTTP输出" - -msgid "Input plugin" -msgstr "输入插件" - -msgid "Interval between saving pictures" -msgstr "图片保存时间间隔" - -msgid "JPEG compression quality" -msgstr "JPEG压缩品质" - -msgid "Led control" -msgstr "LED控制" - -msgid "MJPG-streamer" -msgstr "MJPG-streamer" - -msgid "Max. number of pictures to hold" -msgstr "保存的图片数量上限" - -msgid "Mjpeg output" -msgstr "Mjpeg输出" - -msgid "Off" -msgstr "关" - -msgid "On" -msgstr "开" - -msgid "Output plugin" -msgstr "输出插件" - -msgid "Password" -msgstr "密码" - -msgid "Plugin settings" -msgstr "插件设置" - -msgid "Port" -msgstr "端口" - -msgid "Resolution" -msgstr "分辨率" - -msgid "Ring buffer size" -msgstr "环形缓冲区大小" - -msgid "Set folder to save pictures" -msgstr "图片保存位置" - -msgid "Set the inteval in millisecond" -msgstr "设置时间间隔(毫秒)" - -msgid "" -"Set the minimum size if the webcam produces small-sized garbage frames. May " -"happen under low light conditions" -msgstr "设置无用帧的最小尺寸。当光照不足时可能出现无用帧。" - -msgid "" -"Set the quality in percent. This setting activates YUYV format, disables " -"MJPEG" -msgstr "设置品质(百分比)。此设置会开启YUYV格式输出,关闭MJPEG输出。" - -msgid "TCP port for this HTTP server" -msgstr "HTTP服务监听的TCP端口" - -msgid "UVC input" -msgstr "UVC输入" - -msgid "Username" -msgstr "用户名" - -msgid "WWW folder" -msgstr "WWW文件夹" - -msgid "" -"mjpg streamer is a streaming application for Linux-UVC compatible webcams" -msgstr "mjpg streamer是一个视频流程序,用于兼容Linux-UVC的摄像头。" diff --git a/package/luci/applications/luci-app-mjpg-streamer/root/etc/uci-defaults/40_luci-mjpg-streamer b/package/luci/applications/luci-app-mjpg-streamer/root/etc/uci-defaults/40_luci-mjpg-streamer deleted file mode 100755 index 6a380cfe5d..0000000000 --- a/package/luci/applications/luci-app-mjpg-streamer/root/etc/uci-defaults/40_luci-mjpg-streamer +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@mjpg-streamer[-1] - add ucitrack mjpg-streamer - set ucitrack.@mjpg-streamer[-1].init=mjpg-streamer - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-mmc-over-gpio/Makefile b/package/luci/applications/luci-app-mmc-over-gpio/Makefile deleted file mode 100644 index 4e7d69552c..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=MMC-over-GPIO configuration module -LUCI_DEPENDS:=+kmod-mmc-over-gpio - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-mmc-over-gpio/luasrc/controller/mmc_over_gpio.lua b/package/luci/applications/luci-app-mmc-over-gpio/luasrc/controller/mmc_over_gpio.lua deleted file mode 100644 index 78ed24f8b6..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/luasrc/controller/mmc_over_gpio.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2008 Yanira --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.mmc_over_gpio", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/mmc_over_gpio") then - return - end - - local page - - page = entry({"admin", "system", "mmc_over_gpio"}, cbi("mmc_over_gpio"), _("MMC/SD driver configuration"), 60) - page.dependent = true -end diff --git a/package/luci/applications/luci-app-mmc-over-gpio/luasrc/model/cbi/mmc_over_gpio.lua b/package/luci/applications/luci-app-mmc-over-gpio/luasrc/model/cbi/mmc_over_gpio.lua deleted file mode 100644 index fd0896cc43..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/luasrc/model/cbi/mmc_over_gpio.lua +++ /dev/null @@ -1,29 +0,0 @@ --- Copyright 2008 Yanira --- Licensed to the public under the Apache License 2.0. - -m = Map("mmc_over_gpio", translate("MMC/SD driver configuration"), - translate("MMC/SD driver configuration")) - -s = m:section(TypedSection, "mmc_over_gpio", translate("Settings")) -s.addremove = true -s.anonymous = true - -s:option(Flag, "enabled", translate("Enable")) - -s:option(Value, "name", translate("Name")) - -pin = s:option(Value, "DI_pin", translate("DI_pin")) -for i = 0,7 do pin:value(i) end - -pin = s:option(Value, "DO_pin", translate("DO_pin")) -for i = 0,7 do pin:value(i) end - -pin = s:option(Value, "CLK_pin", translate("CLK_pin")) -for i = 0,7 do pin:value(i) end - -pin = s:option(Value, "CS_pin", translate("CS_pin")) -for i = 0,7 do pin:value(i) end - -s:option(Value, "mode", translate("Mode")) - -return m diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/ca/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/ca/mmc_over_gpio.po deleted file mode 100644 index 558e10a798..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/ca/mmc_over_gpio.po +++ /dev/null @@ -1,43 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-06-01 23:04+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "" - -msgid "CS_pin" -msgstr "" - -msgid "DI_pin" -msgstr "" - -msgid "DO_pin" -msgstr "" - -msgid "Enable" -msgstr "Habilita" - -msgid "MMC/SD driver configuration" -msgstr "Configuració de controlador MMC/SD" - -msgid "Mode" -msgstr "Mode" - -msgid "Name" -msgstr "Nom" - -msgid "Settings" -msgstr "Ajusts" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/cs/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/cs/mmc_over_gpio.po deleted file mode 100644 index 6a7b7b12a2..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/cs/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-15 20:16+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "Pin CLK" - -msgid "CS_pin" -msgstr "Pin CS" - -msgid "DI_pin" -msgstr "Pin DI" - -msgid "DO_pin" -msgstr "Pin DO" - -msgid "Enable" -msgstr "Povolit" - -msgid "MMC/SD driver configuration" -msgstr "Konfigurace ovladače MMC/SD" - -msgid "Mode" -msgstr "Mód" - -msgid "Name" -msgstr "Jméno" - -msgid "Settings" -msgstr "Nastavení" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/de/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/de/mmc_over_gpio.po deleted file mode 100644 index 3b21417138..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/de/mmc_over_gpio.po +++ /dev/null @@ -1,42 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2012-11-28 10:44+0200\n" -"Last-Translator: dunkelschunkel \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -# Das wäre der Pin für Clock, also Takt, eventuell kann das auch rein. Halte obige Variante aber für hinreichend -msgid "CLK_pin" -msgstr "CLK-Pin" - -msgid "CS_pin" -msgstr "CS-Pin" - -msgid "DI_pin" -msgstr "DI-Pin" - -msgid "DO_pin" -msgstr "DO-Pin" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "MMC/SD driver configuration" -msgstr "MMC/SD Treibereinstellungen" - -msgid "Mode" -msgstr "Modus" - -msgid "Name" -msgstr "Name" - -msgid "Settings" -msgstr "Einstellungen" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/el/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/el/mmc_over_gpio.po deleted file mode 100644 index 8aadeff892..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/el/mmc_over_gpio.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: 2010-07-01 20:18+0200\n" -"Last-Translator: Vasilis Tsiligiannis \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "CLK_pin" -msgstr "" - -msgid "CS_pin" -msgstr "" - -msgid "DI_pin" -msgstr "" - -msgid "DO_pin" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "MMC/SD driver configuration" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Settings" -msgstr "Ρυθμίσεις" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/en/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/en/mmc_over_gpio.po deleted file mode 100644 index bd8f3c87be..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/en/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-03-21 18:31+0200\n" -"Last-Translator: Anonymous Pootle User\n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "CLK_pin" -msgstr "" - -msgid "CS_pin" -msgstr "" - -msgid "DI_pin" -msgstr "" - -msgid "DO_pin" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "MMC/SD driver configuration" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Settings" -msgstr "Settings" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/es/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/es/mmc_over_gpio.po deleted file mode 100644 index ee0b0c6755..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/es/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-08-19 21:05+0200\n" -"Last-Translator: josevteg \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "Pin CLK" - -msgid "CS_pin" -msgstr "Pin CS" - -msgid "DI_pin" -msgstr "Pin DI" - -msgid "DO_pin" -msgstr "Pin DO" - -msgid "Enable" -msgstr "Activar" - -msgid "MMC/SD driver configuration" -msgstr "Configuración de controlador MMC/SD" - -msgid "Mode" -msgstr "Modo" - -msgid "Name" -msgstr "Nombre" - -msgid "Settings" -msgstr "Configuración" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/fr/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/fr/mmc_over_gpio.po deleted file mode 100644 index 64dc899270..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/fr/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-11-06 16:06+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "CLK_pin" - -msgid "CS_pin" -msgstr "CS_pin" - -msgid "DI_pin" -msgstr "DI_pin" - -msgid "DO_pin" -msgstr "DO_pin" - -msgid "Enable" -msgstr "Activer" - -msgid "MMC/SD driver configuration" -msgstr "Configuration driver MMC/SD" - -msgid "Mode" -msgstr "Mode" - -msgid "Name" -msgstr "Nom" - -msgid "Settings" -msgstr "Configuration" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/he/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/he/mmc_over_gpio.po deleted file mode 100644 index bf506c0dcd..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/he/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-10 04:34+0200\n" -"Last-Translator: Snoof \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "" - -msgid "CS_pin" -msgstr "" - -msgid "DI_pin" -msgstr "" - -msgid "DO_pin" -msgstr "" - -msgid "Enable" -msgstr "אפשר" - -msgid "MMC/SD driver configuration" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Name" -msgstr "שם" - -msgid "Settings" -msgstr "הגדרות" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/hu/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/hu/mmc_over_gpio.po deleted file mode 100644 index 758c711036..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/hu/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-12-30 19:09+0200\n" -"Last-Translator: romboyco \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "CLK_pin" - -msgid "CS_pin" -msgstr "CS_pin" - -msgid "DI_pin" -msgstr "DI_pin" - -msgid "DO_pin" -msgstr "DO_pin" - -msgid "Enable" -msgstr "Bekapcsolás" - -msgid "MMC/SD driver configuration" -msgstr "MMC/SD driver konfiguráció" - -msgid "Mode" -msgstr "Mód" - -msgid "Name" -msgstr "Név" - -msgid "Settings" -msgstr "Beállítások" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/it/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/it/mmc_over_gpio.po deleted file mode 100644 index e0f371a182..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/it/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-02-03 13:57+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "CLK_pin" - -msgid "CS_pin" -msgstr "CS_pin" - -msgid "DI_pin" -msgstr "DI_pin" - -msgid "DO_pin" -msgstr "DO_pin" - -msgid "Enable" -msgstr "Attiva" - -msgid "MMC/SD driver configuration" -msgstr "Configurazione driver MMC/SD" - -msgid "Mode" -msgstr "Modalità" - -msgid "Name" -msgstr "Nome" - -msgid "Settings" -msgstr "Opzioni" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/ja/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/ja/mmc_over_gpio.po deleted file mode 100644 index 5c0f1028f2..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/ja/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-10-05 16:45+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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" - -msgid "CLK_pin" -msgstr "CLK_pin" - -msgid "CS_pin" -msgstr "CS_pin" - -msgid "DI_pin" -msgstr "DI_pin" - -msgid "DO_pin" -msgstr "DO_pin" - -msgid "Enable" -msgstr "有効" - -msgid "MMC/SD driver configuration" -msgstr "MMC/SD ドライバ設定" - -msgid "Mode" -msgstr "モード" - -msgid "Name" -msgstr "名前" - -msgid "Settings" -msgstr "設定" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/ms/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/ms/mmc_over_gpio.po deleted file mode 100644 index edbb2ce6f2..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/ms/mmc_over_gpio.po +++ /dev/null @@ -1,37 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "CLK_pin" -msgstr "" - -msgid "CS_pin" -msgstr "" - -msgid "DI_pin" -msgstr "" - -msgid "DO_pin" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "MMC/SD driver configuration" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Settings" -msgstr "" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/no/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/no/mmc_over_gpio.po deleted file mode 100644 index ea9a533d13..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/no/mmc_over_gpio.po +++ /dev/null @@ -1,32 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "CLK_pin" -msgstr "CLK_pin" - -msgid "CS_pin" -msgstr "CS_pin" - -msgid "DI_pin" -msgstr "DI_pin" - -msgid "DO_pin" -msgstr "DO_pin" - -msgid "Enable" -msgstr "Aktiver" - -msgid "MMC/SD driver configuration" -msgstr "MMC/SD Konfigurasjon" - -msgid "Mode" -msgstr "Modus" - -msgid "Name" -msgstr "Navn" - -msgid "Settings" -msgstr "Innstillinger" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/pl/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/pl/mmc_over_gpio.po deleted file mode 100644 index ff5b51b2f9..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/pl/mmc_over_gpio.po +++ /dev/null @@ -1,42 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-08-26 12:23+0200\n" -"Last-Translator: Staszek \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "CLK_pin" -msgstr "Pin CLK" - -msgid "CS_pin" -msgstr "Pin CS" - -msgid "DI_pin" -msgstr "Pin DI" - -msgid "DO_pin" -msgstr "Pin DO" - -msgid "Enable" -msgstr "Uaktywnij" - -msgid "MMC/SD driver configuration" -msgstr "Konfiguracja sterownika MMC/SD" - -msgid "Mode" -msgstr "Tryb" - -msgid "Name" -msgstr "Nazwa" - -msgid "Settings" -msgstr "Ustawienia" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/pt-br/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/pt-br/mmc_over_gpio.po deleted file mode 100644 index 9fbbf0f98c..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/pt-br/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-07-05 06:43+0200\n" -"Last-Translator: rafaelff1 \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "CLK_pin" - -msgid "CS_pin" -msgstr "CS_pin" - -msgid "DI_pin" -msgstr "DI_pin" - -msgid "DO_pin" -msgstr "DO_pin" - -msgid "Enable" -msgstr "Habilitar" - -msgid "MMC/SD driver configuration" -msgstr "Configuração de driver MMC/SD" - -msgid "Mode" -msgstr "Modo" - -msgid "Name" -msgstr "Nome" - -msgid "Settings" -msgstr "Configurações" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/pt/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/pt/mmc_over_gpio.po deleted file mode 100644 index 497c0b09ae..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/pt/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-05-31 15:28+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "CLK_pin" - -msgid "CS_pin" -msgstr "CS_pin" - -msgid "DI_pin" -msgstr "DI_pin" - -msgid "DO_pin" -msgstr "DO_pin" - -msgid "Enable" -msgstr "Ativar" - -msgid "MMC/SD driver configuration" -msgstr "Configuração do driver MMC/SD" - -msgid "Mode" -msgstr "Modo" - -msgid "Name" -msgstr "Nome" - -msgid "Settings" -msgstr "Definições" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/ro/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/ro/mmc_over_gpio.po deleted file mode 100644 index e465f0a013..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/ro/mmc_over_gpio.po +++ /dev/null @@ -1,42 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-28 19:22+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "CLK_pin" - -msgid "CS_pin" -msgstr "CS_pin" - -msgid "DI_pin" -msgstr "DI_pin" - -msgid "DO_pin" -msgstr "DO_pin" - -msgid "Enable" -msgstr "Activare" - -msgid "MMC/SD driver configuration" -msgstr "Configurare driver MMC/SD" - -msgid "Mode" -msgstr "Mod" - -msgid "Name" -msgstr "Nume" - -msgid "Settings" -msgstr "Setări" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/ru/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/ru/mmc_over_gpio.po deleted file mode 100644 index dcc2e93d74..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/ru/mmc_over_gpio.po +++ /dev/null @@ -1,43 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: mmc_over_gpio\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-08-15 11:23+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "CLK_pin" -msgstr "Вывод CLK" - -msgid "CS_pin" -msgstr "Вывод CS" - -msgid "DI_pin" -msgstr "Вывод DI" - -msgid "DO_pin" -msgstr "Вывод DO" - -msgid "Enable" -msgstr "Включить" - -msgid "MMC/SD driver configuration" -msgstr "Конфигурация драйвера MMC/SD" - -msgid "Mode" -msgstr "Режим" - -msgid "Name" -msgstr "Имя" - -msgid "Settings" -msgstr "Настройки" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/sk/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/sk/mmc_over_gpio.po deleted file mode 100644 index 587ee42ba5..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/sk/mmc_over_gpio.po +++ /dev/null @@ -1,36 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "CLK_pin" -msgstr "" - -msgid "CS_pin" -msgstr "" - -msgid "DI_pin" -msgstr "" - -msgid "DO_pin" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "MMC/SD driver configuration" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Settings" -msgstr "" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/sv/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/sv/mmc_over_gpio.po deleted file mode 100644 index 598a0f025c..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/sv/mmc_over_gpio.po +++ /dev/null @@ -1,37 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "CLK_pin" -msgstr "" - -msgid "CS_pin" -msgstr "" - -msgid "DI_pin" -msgstr "" - -msgid "DO_pin" -msgstr "" - -msgid "Enable" -msgstr "Aktivera" - -msgid "MMC/SD driver configuration" -msgstr "Konfiguration av MMC/SD-drivrutin" - -msgid "Mode" -msgstr "Läge" - -msgid "Name" -msgstr "Namn" - -msgid "Settings" -msgstr "Inställningar" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/templates/mmc_over_gpio.pot b/package/luci/applications/luci-app-mmc-over-gpio/po/templates/mmc_over_gpio.pot deleted file mode 100644 index 1cc8de33f2..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/templates/mmc_over_gpio.pot +++ /dev/null @@ -1,29 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "CLK_pin" -msgstr "" - -msgid "CS_pin" -msgstr "" - -msgid "DI_pin" -msgstr "" - -msgid "DO_pin" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "MMC/SD driver configuration" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Settings" -msgstr "" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/tr/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/tr/mmc_over_gpio.po deleted file mode 100644 index 349b8fc236..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/tr/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-10-11 23:19+0200\n" -"Last-Translator: vincenzo \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "CLK_ayağı" - -msgid "CS_pin" -msgstr "CS_ayağı" - -msgid "DI_pin" -msgstr "DI_ayağı" - -msgid "DO_pin" -msgstr "DO_ayağı" - -msgid "Enable" -msgstr "Etkinleştir" - -msgid "MMC/SD driver configuration" -msgstr "MMC/SD Sürücü Yapılandırması" - -msgid "Mode" -msgstr "Mod" - -msgid "Name" -msgstr "isim" - -msgid "Settings" -msgstr "Ayarlar" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/uk/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/uk/mmc_over_gpio.po deleted file mode 100644 index e9b37f2b63..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/uk/mmc_over_gpio.po +++ /dev/null @@ -1,42 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-12-29 13:06+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "CLK_pin" -msgstr "Вивід ВCLK" - -msgid "CS_pin" -msgstr "Вивід CS" - -msgid "DI_pin" -msgstr "Вивід DI" - -msgid "DO_pin" -msgstr "Вивід DO" - -msgid "Enable" -msgstr "Увімкнути" - -msgid "MMC/SD driver configuration" -msgstr "Конфігурація драйвера MMC/SD" - -msgid "Mode" -msgstr "Режим" - -msgid "Name" -msgstr "Ім'я" - -msgid "Settings" -msgstr "Настройки" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/vi/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/vi/mmc_over_gpio.po deleted file mode 100644 index febcbc08ee..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/vi/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -# mmc_over_gpio.pot -# generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:59+0200\n" -"PO-Revision-Date: 2009-08-13 03:43+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "CLK_pin" -msgstr "" - -msgid "CS_pin" -msgstr "" - -msgid "DI_pin" -msgstr "" - -msgid "DO_pin" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "MMC/SD driver configuration" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Settings" -msgstr "Sắp đặt" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/zh-cn/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/zh-cn/mmc_over_gpio.po deleted file mode 100644 index 27dcefda1d..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/zh-cn/mmc_over_gpio.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2013-10-08 15:25+0200\n" -"Last-Translator: Tanyingyu \n" -"Language-Team: LANGUAGE \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" - -msgid "CLK_pin" -msgstr "CLK针脚" - -msgid "CS_pin" -msgstr "CS针脚" - -msgid "DI_pin" -msgstr "DI针脚" - -msgid "DO_pin" -msgstr "DO针脚" - -msgid "Enable" -msgstr "允许" - -msgid "MMC/SD driver configuration" -msgstr "MMC/SD驱动配置" - -msgid "Mode" -msgstr "模式" - -msgid "Name" -msgstr "名称" - -msgid "Settings" -msgstr "设置" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/po/zh-tw/mmc_over_gpio.po b/package/luci/applications/luci-app-mmc-over-gpio/po/zh-tw/mmc_over_gpio.po deleted file mode 100644 index fe12e6652b..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/po/zh-tw/mmc_over_gpio.po +++ /dev/null @@ -1,39 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-21 12:48+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "CLK_pin" -msgstr "CLK_pin腳" - -msgid "CS_pin" -msgstr "CS_pin腳" - -msgid "DI_pin" -msgstr "DI_pin腳" - -msgid "DO_pin" -msgstr "DO_pin腳" - -msgid "Enable" -msgstr "啟用" - -msgid "MMC/SD driver configuration" -msgstr "MMC/SD記憶卡驅動程式設定" - -msgid "Mode" -msgstr "模式" - -msgid "Name" -msgstr "名稱" - -msgid "Settings" -msgstr "設定值" diff --git a/package/luci/applications/luci-app-mmc-over-gpio/root/etc/uci-defaults/40_luci-mmc-over-gpio b/package/luci/applications/luci-app-mmc-over-gpio/root/etc/uci-defaults/40_luci-mmc-over-gpio deleted file mode 100755 index c6e79e60d4..0000000000 --- a/package/luci/applications/luci-app-mmc-over-gpio/root/etc/uci-defaults/40_luci-mmc-over-gpio +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@mmc_over_gpio[-1] - add ucitrack mmc_over_gpio - set ucitrack.@mmc_over_gpio[-1].init=mmc_over_gpio - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-multiwan/Makefile b/package/luci/applications/luci-app-multiwan/Makefile deleted file mode 100644 index c5b731abbe..0000000000 --- a/package/luci/applications/luci-app-multiwan/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for the OpenWrt MultiWAN agent (obsoleted by mwan3) -LUCI_DEPENDS:=+multiwan @BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-multiwan/luasrc/controller/multiwan.lua b/package/luci/applications/luci-app-multiwan/luasrc/controller/multiwan.lua deleted file mode 100644 index 523ac21200..0000000000 --- a/package/luci/applications/luci-app-multiwan/luasrc/controller/multiwan.lua +++ /dev/null @@ -1,60 +0,0 @@ -module("luci.controller.multiwan", package.seeall) - -function index() - local fs = require "nixio.fs" - if not fs.access("/etc/config/multiwan") then - return - end - - local page - - page = entry({"admin", "network", "multiwan"}, cbi("multiwan/multiwan"), _("Multi-WAN")) - page.dependent = true - - entry({"admin", "network", "multiwan", "status"}, call("multiwan_status")) - - page = entry({"mini", "network", "multiwan"}, cbi("multiwan/multiwanmini", {autoapply=true}), _("Multi-WAN")) - page.dependent = true -end -function multiwan_status() - local nfs = require "nixio.fs" - local cachefile = "/tmp/.mwan/cache" - - local rv = { } - - cachefile = nfs.readfile(cachefile) - if cachefile then - local ntm = require "luci.model.network".init() - _, _, wan_if_map = string.find(cachefile, "wan_if_map=\"([^\"]*)\"") - _, _, wan_fail_map = string.find(cachefile, "wan_fail_map=\"([^\"]*)\"") - _, _, wan_recovery_map = string.find(cachefile, "wan_recovery_map=\"([^\"]*)\"") - - rv.wans = { } - wansid = {} - - for wanname, wanifname in string.gfind(wan_if_map, "([^%[]+)%[([^%]]+)%]") do - local wanlink = ntm:get_interface(wanifname) - wanlink = wanlink and wanlink:get_network() - wanlink = wanlink and wanlink:adminlink() or "#" - wansid[wanname] = #rv.wans + 1 - rv.wans[wansid[wanname]] = { name = wanname, link = wanlink, ifname = wanifname, status = "ok", count = 0 } - end - - for wanname, failcount in string.gfind(wan_fail_map, "([^%[]+)%[([^%]]+)%]") do - if failcount == "x" then - rv.wans[wansid[wanname]].status = "ko" - else - rv.wans[wansid[wanname]].status = "failing" - rv.wans[wansid[wanname]].count = failcount - end - end - - for wanname, recoverycount in string.gfind(wan_recovery_map, "([^%[]+)%[([^%]]+)%]") do - rv.wans[wansid[wanname]].status = "recovering" - rv.wans[wansid[wanname]].count = recoverycount - end - end - - luci.http.prepare_content("application/json") - luci.http.write_json(rv) -end diff --git a/package/luci/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwan.lua b/package/luci/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwan.lua deleted file mode 100644 index 586b6307de..0000000000 --- a/package/luci/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwan.lua +++ /dev/null @@ -1,155 +0,0 @@ -require("luci.tools.webadmin") - -m = Map("multiwan", translate("Multi-WAN"), - translate("Multi-WAN allows for the use of multiple uplinks for load balancing and failover.")) - -s = m:section(NamedSection, "config", "multiwan", "") - -e = s:option(Flag, "enabled", translate("Enable")) -e.rmempty = false -e.default = e.enabled - -function e.write(self, section, value) - if value == "0" then - os.execute("/etc/init.d/multiwan stop") - else - os.execute("/etc/init.d/multiwan enable") - end - Flag.write(self, section, value) -end - -s = m:section(TypedSection, "interface", translate("WAN Interfaces"), - translate("Health Monitor detects and corrects network changes and failed connections.")) -s.addremove = true - -weight = s:option(ListValue, "weight", translate("Load Balancer Distribution")) -weight:value("10", "10") -weight:value("9", "9") -weight:value("8", "8") -weight:value("7", "7") -weight:value("6", "6") -weight:value("5", "5") -weight:value("4", "4") -weight:value("3", "3") -weight:value("2", "2") -weight:value("1", "1") -weight:value("disable", translate("None")) -weight.default = "10" -weight.optional = false -weight.rmempty = false - -interval = s:option(ListValue, "health_interval", translate("Health Monitor Interval")) -interval:value("disable", translate("Disable")) -interval:value("5", "5 sec.") -interval:value("10", "10 sec.") -interval:value("20", "20 sec.") -interval:value("30", "30 sec.") -interval:value("60", "60 sec.") -interval:value("120", "120 sec.") -interval.default = "10" -interval.optional = false -interval.rmempty = false - -icmp_hosts = s:option(Value, "icmp_hosts", translate("Health Monitor ICMP Host(s)")) -icmp_hosts:value("disable", translate("Disable")) -icmp_hosts:value("dns", "DNS Server(s)") -icmp_hosts:value("gateway", "WAN Gateway") -icmp_hosts.default = "dns" -icmp_hosts.optional = false -icmp_hosts.rmempty = false - -timeout = s:option(ListValue, "timeout", translate("Health Monitor ICMP Timeout")) -timeout:value("1", "1 sec.") -timeout:value("2", "2 sec.") -timeout:value("3", "3 sec.") -timeout:value("4", "4 sec.") -timeout:value("5", "5 sec.") -timeout:value("10", "10 sec.") -timeout.default = "3" -timeout.optional = false -timeout.rmempty = false - -fail = s:option(ListValue, "health_fail_retries", translate("Attempts Before WAN Failover")) -fail:value("1", "1") -fail:value("3", "3") -fail:value("5", "5") -fail:value("10", "10") -fail:value("15", "15") -fail:value("20", "20") -fail.default = "3" -fail.optional = false -fail.rmempty = false - -recovery = s:option(ListValue, "health_recovery_retries", translate("Attempts Before WAN Recovery")) -recovery:value("1", "1") -recovery:value("3", "3") -recovery:value("5", "5") -recovery:value("10", "10") -recovery:value("15", "15") -recovery:value("20", "20") -recovery.default = "5" -recovery.optional = false -recovery.rmempty = false - -failover_to = s:option(ListValue, "failover_to", translate("Failover Traffic Destination")) -failover_to:value("disable", translate("None")) -luci.tools.webadmin.cbi_add_networks(failover_to) -failover_to:value("fastbalancer", translate("Load Balancer(Performance)")) -failover_to:value("balancer", translate("Load Balancer(Compatibility)")) -failover_to.default = "balancer" -failover_to.optional = false -failover_to.rmempty = false - -dns = s:option(Value, "dns", translate("DNS Server(s)")) -dns:value("auto", translate("Auto")) -dns.default = "auto" -dns.optional = false -dns.rmempty = true - -s = m:section(TypedSection, "mwanfw", translate("Multi-WAN Traffic Rules"), - translate("Configure rules for directing outbound traffic through specified WAN Uplinks.")) -s.template = "cbi/tblsection" -s.anonymous = true -s.addremove = true - -src = s:option(Value, "src", translate("Source Address")) -src.rmempty = true -src:value("", translate("all")) -luci.tools.webadmin.cbi_add_knownips(src) - -dst = s:option(Value, "dst", translate("Destination Address")) -dst.rmempty = true -dst:value("", translate("all")) -luci.tools.webadmin.cbi_add_knownips(dst) - -proto = s:option(Value, "proto", translate("Protocol")) -proto:value("", translate("all")) -proto:value("tcp", "TCP") -proto:value("udp", "UDP") -proto:value("icmp", "ICMP") -proto.rmempty = true - -ports = s:option(Value, "ports", translate("Ports")) -ports.rmempty = true -ports:value("", translate("all", translate("all"))) - -wanrule = s:option(ListValue, "wanrule", translate("WAN Uplink")) -luci.tools.webadmin.cbi_add_networks(wanrule) -wanrule:value("fastbalancer", translate("Load Balancer(Performance)")) -wanrule:value("balancer", translate("Load Balancer(Compatibility)")) -wanrule.default = "fastbalancer" -wanrule.optional = false -wanrule.rmempty = false - -s = m:section(NamedSection, "config", "", "") -s.addremove = false - -default_route = s:option(ListValue, "default_route", translate("Default Route")) -luci.tools.webadmin.cbi_add_networks(default_route) -default_route:value("fastbalancer", translate("Load Balancer(Performance)")) -default_route:value("balancer", translate("Load Balancer(Compatibility)")) -default_route.default = "balancer" -default_route.optional = false -default_route.rmempty = false - -return m diff --git a/package/luci/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwanmini.lua b/package/luci/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwanmini.lua deleted file mode 100644 index d38974549c..0000000000 --- a/package/luci/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwanmini.lua +++ /dev/null @@ -1,67 +0,0 @@ -require("luci.tools.webadmin") - -m = Map("multiwan", translate("Multi-WAN"), - translate("Multi-WAN allows for the use of multiple uplinks for load balancing and failover.")) - -s = m:section(NamedSection, "config", "multiwan", "") - -e = s:option(Flag, "enabled", translate("Enable")) -e.rmempty = false -e.default = "1" - -function e.write(self, section, value) - if value == "0" then - os.execute("/etc/init.d/multiwan stop") - else - os.execute("/etc/init.d/multiwan enable") - end - Flag.write(self, section, value) -end - -s = m:section(TypedSection, "mwanfw", translate("Multi-WAN Traffic Rules"), - translate("Configure rules for directing outbound traffic through specified WAN Uplinks.")) -s.template = "cbi/tblsection" -s.anonymous = true -s.addremove = true - -src = s:option(Value, "src", translate("Source Address")) -src.rmempty = true -src:value("", translate("all")) -luci.tools.webadmin.cbi_add_knownips(src) - -dst = s:option(Value, "dst", translate("Destination Address")) -dst.rmempty = true -dst:value("", translate("all")) -luci.tools.webadmin.cbi_add_knownips(dst) - -proto = s:option(Value, "proto", translate("Protocol")) -proto:value("", translate("all")) -proto:value("tcp", "TCP") -proto:value("udp", "UDP") -proto:value("icmp", "ICMP") -proto.rmempty = true - -ports = s:option(Value, "ports", translate("Ports")) -ports.rmempty = true -ports:value("", translate("all", translate("all"))) - -wanrule = s:option(ListValue, "wanrule", translate("WAN Uplink")) -luci.tools.webadmin.cbi_add_networks(wanrule) -wanrule:value("fastbalancer", translate("Load Balancer(Performance)")) -wanrule:value("balancer", translate("Load Balancer(Compatibility)")) -wanrule.default = "fastbalancer" -wanrule.optional = false -wanrule.rmempty = false - -s = m:section(NamedSection, "config", "", "") -s.addremove = false - -default_route = s:option(ListValue, "default_route", translate("Default Route")) -luci.tools.webadmin.cbi_add_networks(default_route) -default_route:value("fastbalancer", translate("Load Balancer(Performance)")) -default_route:value("balancer", translate("Load Balancer(Compatibility)")) -default_route.default = "balancer" -default_route.optional = false -default_route.rmempty = false - -return m diff --git a/package/luci/applications/luci-app-multiwan/luasrc/view/admin_status/index/multiwan.htm b/package/luci/applications/luci-app-multiwan/luasrc/view/admin_status/index/multiwan.htm deleted file mode 100644 index 79c04539ff..0000000000 --- a/package/luci/applications/luci-app-multiwan/luasrc/view/admin_status/index/multiwan.htm +++ /dev/null @@ -1 +0,0 @@ -<%+multiwan_status%> diff --git a/package/luci/applications/luci-app-multiwan/luasrc/view/multiwan_status.htm b/package/luci/applications/luci-app-multiwan/luasrc/view/multiwan_status.htm deleted file mode 100644 index 03bfad1c5d..0000000000 --- a/package/luci/applications/luci-app-multiwan/luasrc/view/multiwan_status.htm +++ /dev/null @@ -1,71 +0,0 @@ - - - - -
- <%:Multi-WAN Status%> -
<%:Collecting data...%>
-
diff --git a/package/luci/applications/luci-app-multiwan/po/ca/multiwan.po b/package/luci/applications/luci-app-multiwan/po/ca/multiwan.po deleted file mode 100644 index eb81ae8132..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/ca/multiwan.po +++ /dev/null @@ -1,124 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-01 04:22+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "Intents abans de commutació WAN" - -msgid "Attempts Before WAN Recovery" -msgstr "Intents abans de recuperació WAN" - -msgid "Auto" -msgstr "Auto" - -msgid "Collecting data..." -msgstr "Recollint dades..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Configureu les regles per dirigir trànsit sortint a través d'enllaços " -"ascendents WAN especificats." - -msgid "DNS Server(s)" -msgstr "Servidors DNS" - -msgid "Default Route" -msgstr "Ruta per defecte" - -msgid "Destination Address" -msgstr "Adreça de destí" - -msgid "Disable" -msgstr "Inhabilita" - -msgid "Enable" -msgstr "Habilita" - -msgid "Failing" -msgstr "Fallant" - -msgid "Failover Traffic Destination" -msgstr "Destí de trànsit al commutar" - -msgid "Health Monitor ICMP Host(s)" -msgstr "Hosts ICMP de monitor de salut" - -msgid "Health Monitor ICMP Timeout" -msgstr "Temps d'espera ICMP del monitor de salut" - -msgid "Health Monitor Interval" -msgstr "Interval del monitor de salut" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"El monitor de salut detecta i corregeix canvis de xarxa i connexions " -"fallades." - -msgid "KO" -msgstr "KO" - -msgid "Load Balancer Distribution" -msgstr "Distribució de l'equilibrador de carrega" - -msgid "Load Balancer(Compatibility)" -msgstr "Equilibrador de carrega (compatibilitat)" - -msgid "Load Balancer(Performance)" -msgstr "Equilibrador de carrega (rendiment)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "Estat de Multi-WAN" - -msgid "Multi-WAN Traffic Rules" -msgstr "Regles de trànsit de Multi-WAN" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"El Multi-WAN permet el ús de múltiples enllaços ascendents per a equilibri " -"de carrega i commutació d'errors." - -msgid "None" -msgstr "Cap" - -msgid "OK" -msgstr "D'acord" - -msgid "Ports" -msgstr "Ports" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Recovering" -msgstr "Recuperant" - -msgid "Source Address" -msgstr "Adreça d'origen" - -msgid "Unknown" -msgstr "Desconegut" - -msgid "WAN Interfaces" -msgstr "Interfícies WAN" - -msgid "WAN Uplink" -msgstr "Enllaç ascendent WAN" - -msgid "all" -msgstr "tots" diff --git a/package/luci/applications/luci-app-multiwan/po/cs/multiwan.po b/package/luci/applications/luci-app-multiwan/po/cs/multiwan.po deleted file mode 100644 index 0629827e0c..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/cs/multiwan.po +++ /dev/null @@ -1,124 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-11 19:45+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "Počet pokusů před spuštěním záložního WAN" - -msgid "Attempts Before WAN Recovery" -msgstr "Počet pokusů před obnovou WAN" - -msgid "Auto" -msgstr "Automaticky" - -msgid "Collecting data..." -msgstr "Sbírám data..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Nastavit pravidla pro směrování odchozích paketů přes konkrétní WAN " -"rozhraní." - -msgid "DNS Server(s)" -msgstr "DNS server(y)" - -msgid "Default Route" -msgstr "Výchozí brána" - -msgid "Destination Address" -msgstr "Cílová adresa" - -msgid "Disable" -msgstr "Vypnout" - -msgid "Enable" -msgstr "Povolit" - -msgid "Failing" -msgstr "Selhání" - -msgid "Failover Traffic Destination" -msgstr "Cíl záložního spojení" - -msgid "Health Monitor ICMP Host(s)" -msgstr "Monitorování dostupnosti - ICMP host(é)" - -msgid "Health Monitor ICMP Timeout" -msgstr "Monitorování dostupnosti - ICMP časový limit" - -msgid "Health Monitor Interval" -msgstr "Monitorování dostupnosti - interval" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"Monitorování dostupnosti kontroluje a opravuje změny v síti a selhání " -"připojení." - -msgid "KO" -msgstr "KO" - -msgid "Load Balancer Distribution" -msgstr "Load Balancer - rozdělení" - -msgid "Load Balancer(Compatibility)" -msgstr "Load Balancer(Kompatibilita)" - -msgid "Load Balancer(Performance)" -msgstr "Load Balancer(Výkon)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "Stav Multi-WAN" - -msgid "Multi-WAN Traffic Rules" -msgstr "Multi-WAN pravidla směrování" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Multi-WAN umožňuje použít několik internetových připojení pro vyvažování " -"zátěže a zálohy připojení." - -msgid "None" -msgstr "Žádný" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Porty" - -msgid "Protocol" -msgstr "Protokol" - -msgid "Recovering" -msgstr "Obnovuji" - -msgid "Source Address" -msgstr "Zdrojová adresa" - -msgid "Unknown" -msgstr "Neznámý" - -msgid "WAN Interfaces" -msgstr "WAN rozhraní" - -msgid "WAN Uplink" -msgstr "WAN připojení" - -msgid "all" -msgstr "Všechny" diff --git a/package/luci/applications/luci-app-multiwan/po/de/multiwan.po b/package/luci/applications/luci-app-multiwan/po/de/multiwan.po deleted file mode 100644 index 2fa789fe78..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/de/multiwan.po +++ /dev/null @@ -1,124 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-10 02:55+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "Versuche vor Umschalten auf WAN Ersatzverbindung" - -msgid "Attempts Before WAN Recovery" -msgstr "Versuche vor dem Zurückschalten auf normale WAN Verbindung" - -msgid "Auto" -msgstr "automatisch" - -msgid "Collecting data..." -msgstr "Sammle Daten..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Mit diesen Regeln kann ausgehender Verkehr bestimmten WAN-Uplinks zugeordnet " -"werden." - -msgid "DNS Server(s)" -msgstr "DNS Server" - -msgid "Default Route" -msgstr "Standardroute" - -msgid "Destination Address" -msgstr "Zieladresse" - -msgid "Disable" -msgstr "Deaktivieren" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "Failing" -msgstr "Versagt" - -msgid "Failover Traffic Destination" -msgstr "Failover Traffic Ziel" - -msgid "Health Monitor ICMP Host(s)" -msgstr "ICMP Host(s) zur Verbindungsüberwachung" - -msgid "Health Monitor ICMP Timeout" -msgstr "Timeout für ICMP-Pakete zur Verbindungsüberwachung" - -msgid "Health Monitor Interval" -msgstr "Intervall für Verbindungsüberwachung" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"Die Verbindungsüberwachung erkennt und behebt Netzwerkänderungen und " -"Verbindungsabbrüche." - -msgid "KO" -msgstr "Getrennt" - -msgid "Load Balancer Distribution" -msgstr "Load Balancer Verteilung" - -msgid "Load Balancer(Compatibility)" -msgstr "Load Balancer (Kompatibilität)" - -msgid "Load Balancer(Performance)" -msgstr "Load Balancer (Performance)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "Multi-WAN Status" - -msgid "Multi-WAN Traffic Rules" -msgstr "Multi-WAN Verkehrsregeln" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Multi-WAN erlaubt es, mehrere ISP-Verbindungen gleichzeitig oder als " -"Ersatzverbindung beim Ausfall der Hauptverbindung zu verwenden." - -msgid "None" -msgstr "Keine" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Ports" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Recovering" -msgstr "Neu verbunden" - -msgid "Source Address" -msgstr "Quelladresse" - -msgid "Unknown" -msgstr "Unbekannt" - -msgid "WAN Interfaces" -msgstr "WAN-Schnittstellen" - -msgid "WAN Uplink" -msgstr "WAN Uplink-Verbindung" - -msgid "all" -msgstr "alle" diff --git a/package/luci/applications/luci-app-multiwan/po/el/multiwan.po b/package/luci/applications/luci-app-multiwan/po/el/multiwan.po deleted file mode 100644 index 48d31659cf..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/el/multiwan.po +++ /dev/null @@ -1,118 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-18 15:16+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: none\n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "" - -msgid "Default Route" -msgstr "" - -msgid "Destination Address" -msgstr "Διεύθυνση Προορισμού" - -msgid "Disable" -msgstr "Απενεργοποίηση" - -msgid "Enable" -msgstr "Ενεργοποίηση" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "Πρωτόκολλο" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/en/multiwan.po b/package/luci/applications/luci-app-multiwan/po/en/multiwan.po deleted file mode 100644 index 241e6d020e..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/en/multiwan.po +++ /dev/null @@ -1,114 +0,0 @@ -# multiwan.po -# generated from /tmp/i18n/luasrc/i18n/multiwan.en.lua -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Attempts Before WAN Failover" -msgstr "Attempts Before WAN Failover" - -msgid "Attempts Before WAN Recovery" -msgstr "Attempts Before WAN Recovery" - -msgid "Auto" -msgstr "Auto" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." - -msgid "DNS Server(s)" -msgstr "DNS Server(s)" - -msgid "Default Route" -msgstr "Default Route" - -msgid "Destination Address" -msgstr "Destination Address" - -msgid "Disable" -msgstr "Disable" - -msgid "Enable" -msgstr "Enable" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "Failover Traffic Destination" - -msgid "Health Monitor ICMP Host(s)" -msgstr "Health Monitor ICMP Host(s)" - -msgid "Health Monitor ICMP Timeout" -msgstr "Health Monitor ICMP Timeout" - -msgid "Health Monitor Interval" -msgstr "Health Monitor Interval" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"Health Monitor detects and corrects network changes and failed connections." - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "Load Balancer Distribution" - -msgid "Load Balancer(Compatibility)" -msgstr "Load Balancer(Compatibility)" - -msgid "Load Balancer(Performance)" -msgstr "Load Balancer(Performance)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "Multi-WAN Traffic Rules" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." - -msgid "None" -msgstr "None" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "Ports" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "Source Address" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "WAN Interfaces" - -msgid "WAN Uplink" -msgstr "WAN Uplink" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/es/multiwan.po b/package/luci/applications/luci-app-multiwan/po/es/multiwan.po deleted file mode 100644 index 4d2447eecc..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/es/multiwan.po +++ /dev/null @@ -1,124 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-23 23:07+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "Reintentos ante fallo de la WAN" - -msgid "Attempts Before WAN Recovery" -msgstr "Reintentos tras recuperar la WAN" - -msgid "Auto" -msgstr "Auto" - -msgid "Collecting data..." -msgstr "Recuperando datos..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Configure las reglas que redirigen el tráfico saliente a través de los " -"enlaces WAN salientes especificados." - -msgid "DNS Server(s)" -msgstr "Servidor/es DNS" - -msgid "Default Route" -msgstr "Ruta por defecto" - -msgid "Destination Address" -msgstr "Dirección de destino" - -msgid "Disable" -msgstr "Desactivar" - -msgid "Enable" -msgstr "Activar" - -msgid "Failing" -msgstr "Fallando" - -msgid "Failover Traffic Destination" -msgstr "Destino del tráfico en caso de fallo" - -msgid "Health Monitor ICMP Host(s)" -msgstr "Monitores de salud ICMP" - -msgid "Health Monitor ICMP Timeout" -msgstr "Espera monitor de salud ICMP" - -msgid "Health Monitor Interval" -msgstr "Intervalo del monitor de salud" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"El monitor de salud detecta y corrige cambios en la red y conexiones " -"fallidas." - -msgid "KO" -msgstr "KO" - -msgid "Load Balancer Distribution" -msgstr "Distribución del balanceador de carga" - -msgid "Load Balancer(Compatibility)" -msgstr "Balanceador de carga (compatibilidad)" - -msgid "Load Balancer(Performance)" -msgstr "Balanceador de carga (rendimiento)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "Estado de Multi-WAN" - -msgid "Multi-WAN Traffic Rules" -msgstr "Reglas de tráfico Multi-WAN" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Multi-WAN permite el use varios enlaces de salida para balancear la carga y " -"control de fallos." - -msgid "None" -msgstr "Ninguno" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Puertos" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Recovering" -msgstr "Recuperación" - -msgid "Source Address" -msgstr "Dirección origen" - -msgid "Unknown" -msgstr "Desconocido" - -msgid "WAN Interfaces" -msgstr "Interfaces WAN" - -msgid "WAN Uplink" -msgstr "Enlace saliente WAN" - -msgid "all" -msgstr "todos" diff --git a/package/luci/applications/luci-app-multiwan/po/fr/multiwan.po b/package/luci/applications/luci-app-multiwan/po/fr/multiwan.po deleted file mode 100644 index 39b1421737..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/fr/multiwan.po +++ /dev/null @@ -1,125 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-11-06 16:07+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: none\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "Essais avant de déclarer un WAN défaillant" - -msgid "Attempts Before WAN Recovery" -msgstr "Essais avant de déclarer qu'un WAN est rétabli" - -msgid "Auto" -msgstr "Auto" - -msgid "Collecting data..." -msgstr "Collection de données..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Configuration de règles pour diriger le trafic sortant à travers des liens " -"WAN sécifiés." - -msgid "DNS Server(s)" -msgstr "Serveur(s) DNS" - -msgid "Default Route" -msgstr "Route par défaut" - -msgid "Destination Address" -msgstr "Adresse de destination" - -msgid "Disable" -msgstr "Désactiver" - -msgid "Enable" -msgstr "Activer" - -msgid "Failing" -msgstr "Défaillance" - -msgid "Failover Traffic Destination" -msgstr "Destination du trafic en cas de défaillance" - -msgid "Health Monitor ICMP Host(s)" -msgstr "Hôte(s) à pinguer pour valider le lien" - -msgid "Health Monitor ICMP Timeout" -msgstr "Delai max du ping de validation du lien" - -msgid "Health Monitor Interval" -msgstr "Invervalle de validation du lien" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"La validation de liens détecte et corrige les changements du réseau et les " -"connexions défaillantes." - -msgid "KO" -msgstr "KO" - -msgid "Load Balancer Distribution" -msgstr "Distribution d'équilibrage de charge" - -msgid "Load Balancer(Compatibility)" -msgstr "Équilibrage de charge (compatibilité)" - -msgid "Load Balancer(Performance)" -msgstr "Équilibrage de charge (performance)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "Statut Multi-WAN" - -msgid "Multi-WAN Traffic Rules" -msgstr "Règles de trafic avec des liens sortants multiples" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Multi-WAN permet l'utilisation de liens sortants multiples pour la " -"l'équilibrage de charge et la répartition sur les autres en cas de " -"défaillance." - -msgid "None" -msgstr "Aucun" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Ports" - -msgid "Protocol" -msgstr "Protocole" - -msgid "Recovering" -msgstr "Récupération" - -msgid "Source Address" -msgstr "Adresse source" - -msgid "Unknown" -msgstr "Inconnu" - -msgid "WAN Interfaces" -msgstr "Interfaces WAN" - -msgid "WAN Uplink" -msgstr "Lien remontant WAN" - -msgid "all" -msgstr "tous" diff --git a/package/luci/applications/luci-app-multiwan/po/he/multiwan.po b/package/luci/applications/luci-app-multiwan/po/he/multiwan.po deleted file mode 100644 index 2188822ef7..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/he/multiwan.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "" - -msgid "Default Route" -msgstr "" - -msgid "Destination Address" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/hu/multiwan.po b/package/luci/applications/luci-app-multiwan/po/hu/multiwan.po deleted file mode 100644 index 20ff8d60b0..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/hu/multiwan.po +++ /dev/null @@ -1,124 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-12-30 19:12+0200\n" -"Last-Translator: romboyco \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "Próbálkozások WAN átállás előtt" - -msgid "Attempts Before WAN Recovery" -msgstr "Probálkozások WAN helyreállítás előtt" - -msgid "Auto" -msgstr "Automatikus" - -msgid "Collecting data..." -msgstr "Adatok gyűjtése..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Szabályok beállítása a kimenő forgalom megadott WAN kapcsolatra " -"irányításához." - -msgid "DNS Server(s)" -msgstr "DNS kiszolgáló(k)" - -msgid "Default Route" -msgstr "Alapértelmezett útvonal" - -msgid "Destination Address" -msgstr "Cél cím" - -msgid "Disable" -msgstr "Letiltás" - -msgid "Enable" -msgstr "Engedélyezés" - -msgid "Failing" -msgstr "Csökkenő" - -msgid "Failover Traffic Destination" -msgstr "Failover forgalom cél" - -msgid "Health Monitor ICMP Host(s)" -msgstr "ICMP gépek kapcsolat monitorozáshoz" - -msgid "Health Monitor ICMP Timeout" -msgstr "ICMP csomagok időtúllépése a kapcsolat monitorozásánál" - -msgid "Health Monitor Interval" -msgstr "Kapcsolat monitorozási intervallum" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"A kapcsolat monitorozás megállapítja és korrigálja a hálózati változásokat " -"és sikertelen kapcsolatokat." - -msgid "KO" -msgstr "KO" - -msgid "Load Balancer Distribution" -msgstr "Load balancer megosztás" - -msgid "Load Balancer(Compatibility)" -msgstr "Terhelés kiegyensúlyozás (kompatibilitás)" - -msgid "Load Balancer(Performance)" -msgstr "Terhelés kiegyensúlyozás (teljesítmény)" - -msgid "Multi-WAN" -msgstr "Többszörös WAN" - -msgid "Multi-WAN Status" -msgstr "Többszörös WAN állapot" - -msgid "Multi-WAN Traffic Rules" -msgstr "Többszörös WAN forgalmi szabályok" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"A Multi-WAN lehetővé teszi több kapcsolat használatát egyidejűleg, vagy az " -"elsődleges kapcsolat esetleges hibája esetén." - -msgid "None" -msgstr "Nincs" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Portok" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Recovering" -msgstr "Helyreállítás" - -msgid "Source Address" -msgstr "Forrás cím" - -msgid "Unknown" -msgstr "Ismeretlen" - -msgid "WAN Interfaces" -msgstr "WAN interfészek" - -msgid "WAN Uplink" -msgstr "WAN kapcsolat" - -msgid "all" -msgstr "összes" diff --git a/package/luci/applications/luci-app-multiwan/po/it/multiwan.po b/package/luci/applications/luci-app-multiwan/po/it/multiwan.po deleted file mode 100644 index 863b351045..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/it/multiwan.po +++ /dev/null @@ -1,124 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-03 14:00+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "Tentativi su WAN prima del Failover" - -msgid "Attempts Before WAN Recovery" -msgstr "Tentativi su WAN prima del Recovery" - -msgid "Auto" -msgstr "Auto" - -msgid "Collecting data..." -msgstr "Raccolta di dati..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Configura le regole per inviare direttamente in uscita il traffico su una " -"uplink Wan specifico." - -msgid "DNS Server(s)" -msgstr "DNS Server(s)" - -msgid "Default Route" -msgstr "Default Route" - -msgid "Destination Address" -msgstr "Indirizzo di destinazione" - -msgid "Disable" -msgstr "Disable" - -msgid "Enable" -msgstr "Enable" - -msgid "Failing" -msgstr "Fallimento" - -msgid "Failover Traffic Destination" -msgstr "Destinazione del traffico in failover" - -msgid "Health Monitor ICMP Host(s)" -msgstr "Health Monitor ICMP Host(s)" - -msgid "Health Monitor ICMP Timeout" -msgstr "Health Monitor ICMP Timeout" - -msgid "Health Monitor Interval" -msgstr "Health Monitor Interval" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"L'health monitor monitora e identifica i cambiamenti e la manca di " -"connessioni." - -msgid "KO" -msgstr "KO" - -msgid "Load Balancer Distribution" -msgstr "Bilanciamento del carico" - -msgid "Load Balancer(Compatibility)" -msgstr "Carica Bilanciatore (Compatibilità)" - -msgid "Load Balancer(Performance)" -msgstr "Carica Bilanciatore (Performance)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "Stato Multi-WAN" - -msgid "Multi-WAN Traffic Rules" -msgstr "Regole del Traffico Multi-WAN" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Multi-WAN permette di usare uplink multipi per il bilanciamento del carico e " -"la ridondanza da failover." - -msgid "None" -msgstr "None" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Porte" - -msgid "Protocol" -msgstr "Protocollo" - -msgid "Recovering" -msgstr "Recupero" - -msgid "Source Address" -msgstr "Indirizzo sorgente" - -msgid "Unknown" -msgstr "Sconosciuto" - -msgid "WAN Interfaces" -msgstr "Interfaccia WAN" - -msgid "WAN Uplink" -msgstr "Collegamento ascendente WAN" - -msgid "all" -msgstr "all" diff --git a/package/luci/applications/luci-app-multiwan/po/ja/multiwan.po b/package/luci/applications/luci-app-multiwan/po/ja/multiwan.po deleted file mode 100644 index ab41562901..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/ja/multiwan.po +++ /dev/null @@ -1,120 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-06 17:17+0200\n" -"Last-Translator: Kentaro \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" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "自動" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "DNSサーバー" - -msgid "Default Route" -msgstr "デフォルトルート" - -msgid "Destination Address" -msgstr "宛先アドレス" - -msgid "Disable" -msgstr "無効" - -msgid "Enable" -msgstr "有効" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "ヘルスモニタ ICMP宛先" - -msgid "Health Monitor ICMP Timeout" -msgstr "ヘルスモニタ ICMP タイムアウト" - -msgid "Health Monitor Interval" -msgstr "ヘルスモニタ更新間隔" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "ヘルスモニタは、ネットワークの変更及び接続失敗の検出と調整を行います。" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "ロードバランサ ディストリビューション" - -msgid "Load Balancer(Compatibility)" -msgstr "ロードバランサ (互換性)" - -msgid "Load Balancer(Performance)" -msgstr "ロードバランサ (パフォーマンス)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "Multi-WAN トラフィック・ルール" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Multi-WANを用いることで、複数の上りリンクを使用してロードバランサとフェイル" -"オーバー機能を使用することができます。" - -msgid "None" -msgstr "なし" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "ポート" - -msgid "Protocol" -msgstr "プロトコル" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "送信元アドレス" - -msgid "Unknown" -msgstr "不明" - -msgid "WAN Interfaces" -msgstr "WAN インターフェースリスト" - -msgid "WAN Uplink" -msgstr "WAN アップリンク" - -msgid "all" -msgstr "全て" diff --git a/package/luci/applications/luci-app-multiwan/po/ms/multiwan.po b/package/luci/applications/luci-app-multiwan/po/ms/multiwan.po deleted file mode 100644 index d175246eb0..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/ms/multiwan.po +++ /dev/null @@ -1,114 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "" - -msgid "Default Route" -msgstr "" - -msgid "Destination Address" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/no/multiwan.po b/package/luci/applications/luci-app-multiwan/po/no/multiwan.po deleted file mode 100644 index a6e8bc4de1..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/no/multiwan.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Attempts Before WAN Failover" -msgstr "Antall forsøk før WAN feilsikkerhet" - -msgid "Attempts Before WAN Recovery" -msgstr "Antall forsøk før WAN gjenoppretting" - -msgid "Auto" -msgstr "Auto" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Konfigurer regler for å styre utgående trafikk gjennom spesifiserte WAN " -"koblinger." - -msgid "DNS Server(s)" -msgstr "DNS Server(e)" - -msgid "Default Route" -msgstr "Standard rute" - -msgid "Destination Address" -msgstr "Destinasjonsadresse" - -msgid "Disable" -msgstr "Deaktiver" - -msgid "Enable" -msgstr "Aktiver" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "Feilsikkerhet trafikk destinasjon" - -msgid "Health Monitor ICMP Host(s)" -msgstr "Health monitor ICMP vert(er)" - -msgid "Health Monitor ICMP Timeout" -msgstr "Health monitor ICMP tidsavbrudd" - -msgid "Health Monitor Interval" -msgstr "Health monitor intervall" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"Health monitor oppdager og korrigerer nettverks endringer og mislykkede " -"tilkoblinger." - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "Lastbalansering fordeling" - -msgid "Load Balancer(Compatibility)" -msgstr "Lastbalansering (kompatibilitet)" - -msgid "Load Balancer(Performance)" -msgstr "Lastbalansering (ytelse)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "Multi-WAN trafikk regler" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Multi-WAN tillater bruk av flere internett oppkoblinger for lastbalansering " -"og feilsikkerhet." - -msgid "None" -msgstr "Ingen" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "Porter" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "Kildeadresse" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "WAN Grensesnitt" - -msgid "WAN Uplink" -msgstr "WAN Opplinje" - -msgid "all" -msgstr "alle" diff --git a/package/luci/applications/luci-app-multiwan/po/pl/multiwan.po b/package/luci/applications/luci-app-multiwan/po/pl/multiwan.po deleted file mode 100644 index 5904aed2e6..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/pl/multiwan.po +++ /dev/null @@ -1,125 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-01 15:25+0200\n" -"Last-Translator: Staszek \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "Liczba prób przed procedurą WAN Failover (połączenie awaryjne WAN)" - -msgid "Attempts Before WAN Recovery" -msgstr "Liczba prób przed procedurą WAN Recovery (przywrócenie WAN)" - -msgid "Auto" -msgstr "Automatycznie" - -msgid "Collecting data..." -msgstr "Zbieranie informacji..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Skonfiguruj zasady kierowania ruchu wychodzącego za pośrednictwem " -"określonych łączy WAN." - -msgid "DNS Server(s)" -msgstr "Serwer(y) DNS" - -msgid "Default Route" -msgstr "Trasa domyślna" - -msgid "Destination Address" -msgstr "Adres docelowy" - -msgid "Disable" -msgstr "Wyłącz" - -msgid "Enable" -msgstr "Włącz" - -msgid "Failing" -msgstr "Niepowodzenie" - -msgid "Failover Traffic Destination" -msgstr "Cel ruch dla połączenia awaryjnego" - -msgid "Health Monitor ICMP Host(s)" -msgstr "Monitorowane hosty przy użyciu protokołu ICMP (ping)" - -msgid "Health Monitor ICMP Timeout" -msgstr "" -"Czas nieosiągalności monitorowanych hostów przy użyciu protokołu ICMP (ping)" - -msgid "Health Monitor Interval" -msgstr "Odstęp pomiędzy próbami monitoringu" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"Monitor stanu wykrywa i koryguje zmiany sieci oraz nieudane połączenia." - -msgid "KO" -msgstr "KO" - -msgid "Load Balancer Distribution" -msgstr "Dystrybucja równoważenia obciążenia" - -msgid "Load Balancer(Compatibility)" -msgstr "Równoważenie obciążenia (Zgodność)" - -msgid "Load Balancer(Performance)" -msgstr "Równoważenie obciążenia (Wydajność)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "Status Multi-WAN" - -msgid "Multi-WAN Traffic Rules" -msgstr "Reguły ruchu Multi-WAN" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Multi-WAN pozwala na używanie kilku łącz w celu równoważenia obciążenia lub " -"omijania awarii." - -msgid "None" -msgstr "Żaden" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Porty" - -msgid "Protocol" -msgstr "Protokół" - -msgid "Recovering" -msgstr "Odzyskiwanie" - -msgid "Source Address" -msgstr "Adres źródłowy" - -msgid "Unknown" -msgstr "Nieznany" - -msgid "WAN Interfaces" -msgstr "Interfejsy WAN" - -msgid "WAN Uplink" -msgstr "Łącze WAN" - -msgid "all" -msgstr "wszystkie" diff --git a/package/luci/applications/luci-app-multiwan/po/pt-br/multiwan.po b/package/luci/applications/luci-app-multiwan/po/pt-br/multiwan.po deleted file mode 100644 index ba72b820c5..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/pt-br/multiwan.po +++ /dev/null @@ -1,124 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-11-11 04:01+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "Tentativas Antes da Solução de Contorno da WAN" - -msgid "Attempts Before WAN Recovery" -msgstr "Tentativas Antes da Recuperação da WAN" - -msgid "Auto" -msgstr "Automático" - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Configurar regras para direcionar a saída de tráfego através de uma conexão " -"WAN específica." - -msgid "DNS Server(s)" -msgstr "Servidor(es) DNS" - -msgid "Default Route" -msgstr "Rota Padrão" - -msgid "Destination Address" -msgstr "Endereço de Destino" - -msgid "Disable" -msgstr "Desabilitar" - -msgid "Enable" -msgstr "Habilitar" - -msgid "Failing" -msgstr "Falha" - -msgid "Failover Traffic Destination" -msgstr "Destino do Tráfego para a Recuperação" - -msgid "Health Monitor ICMP Host(s)" -msgstr "Equipamento(s) para Monitoramento da Saúde por ICMP" - -msgid "Health Monitor ICMP Timeout" -msgstr "Limite de tempo do Monitoramento da Saúde por ICMP" - -msgid "Health Monitor Interval" -msgstr "Intervalo do Monitoramento da Saúde" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"O Monitoramento da Saúde detecta e corrige as mudanças de rede e falhas nas " -"conexões." - -msgid "KO" -msgstr "KO" - -msgid "Load Balancer Distribution" -msgstr "Distribuição do Balanceador de Carga" - -msgid "Load Balancer(Compatibility)" -msgstr "Balanceador de Carga(Compatibilidade)" - -msgid "Load Balancer(Performance)" -msgstr "Balanceador de Carga(Desempenho)" - -msgid "Multi-WAN" -msgstr "Multi-WAN" - -msgid "Multi-WAN Status" -msgstr "Status de Multi-WAN" - -msgid "Multi-WAN Traffic Rules" -msgstr "Regras de Tráfego Multi-WAN" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"O Multi-WAN permite o use de múltiplas conexões ao enlace superior (ex: " -"internet) para o balanceamento de carga e tolerância a falha." - -msgid "None" -msgstr "Nenhum" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Portas" - -msgid "Protocol" -msgstr "Procotolo" - -msgid "Recovering" -msgstr "Recuperação" - -msgid "Source Address" -msgstr "Endereço de Origem" - -msgid "Unknown" -msgstr "Desconhecido" - -msgid "WAN Interfaces" -msgstr "Interfaces WAN" - -msgid "WAN Uplink" -msgstr "Conexão WAN" - -msgid "all" -msgstr "todos" diff --git a/package/luci/applications/luci-app-multiwan/po/pt/multiwan.po b/package/luci/applications/luci-app-multiwan/po/pt/multiwan.po deleted file mode 100644 index 95eeba8203..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/pt/multiwan.po +++ /dev/null @@ -1,118 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-22 18:29+0200\n" -"Last-Translator: Low \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "Automático" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "Servidor(s) DNS" - -msgid "Default Route" -msgstr "" - -msgid "Destination Address" -msgstr "Endereço de Destino" - -msgid "Disable" -msgstr "Desativar" - -msgid "Enable" -msgstr "Activar" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "Nenhum" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "Portas" - -msgid "Protocol" -msgstr "Procotolo" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "Endereço de Origem" - -msgid "Unknown" -msgstr "Desconhecido" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "todos" diff --git a/package/luci/applications/luci-app-multiwan/po/ro/multiwan.po b/package/luci/applications/luci-app-multiwan/po/ro/multiwan.po deleted file mode 100644 index cd51944582..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/ro/multiwan.po +++ /dev/null @@ -1,119 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-09 13:26+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Collecting data..." -msgstr "Colectare date..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "Server(e) DNS" - -msgid "Default Route" -msgstr "Ruta default" - -msgid "Destination Address" -msgstr "Adresă destinaţie" - -msgid "Disable" -msgstr "Dezactivează" - -msgid "Enable" -msgstr "Activează" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Porturi" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Recovering" -msgstr "Recuperare" - -msgid "Source Address" -msgstr "Adresa sursei" - -msgid "Unknown" -msgstr "Necunoscut" - -msgid "WAN Interfaces" -msgstr "Interfeţe WAN" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "toate" diff --git a/package/luci/applications/luci-app-multiwan/po/ru/multiwan.po b/package/luci/applications/luci-app-multiwan/po/ru/multiwan.po deleted file mode 100644 index c12d9204ee..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/ru/multiwan.po +++ /dev/null @@ -1,127 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: multiwan\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2012-08-15 14:05+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Attempts Before WAN Failover" -msgstr "Количество попыток перед обработкой отказа WAN" - -msgid "Attempts Before WAN Recovery" -msgstr "Количество попыток перед восстановлением WAN" - -msgid "Auto" -msgstr "Автоматически" - -msgid "Collecting data..." -msgstr "Сбор данных..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" -"Укажите правила для направления исходящего трафика через заданные восходящие " -"каналы WAN." - -msgid "DNS Server(s)" -msgstr "DNS-сервер(ы)" - -msgid "Default Route" -msgstr "Маршрут по умолчанию" - -msgid "Destination Address" -msgstr "Адрес назначения" - -msgid "Disable" -msgstr "Отключить" - -msgid "Enable" -msgstr "Включить" - -msgid "Failing" -msgstr "Отказ" - -msgid "Failover Traffic Destination" -msgstr "Назначение трафика при обработке отказа" - -msgid "Health Monitor ICMP Host(s)" -msgstr "ICMP-хост(ы) для контроля состояния" - -msgid "Health Monitor ICMP Timeout" -msgstr "Тайм-аут контроля состояния по ICMP" - -msgid "Health Monitor Interval" -msgstr "Интервал контроля состояния" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" -"Контроль состояния определяет и исправляет изменения сети и неисправные " -"соединения." - -msgid "KO" -msgstr "Не работает" - -msgid "Load Balancer Distribution" -msgstr "Распределение балансировки нагрузки" - -msgid "Load Balancer(Compatibility)" -msgstr "Балансировка нагрузки (совместимость)" - -msgid "Load Balancer(Performance)" -msgstr "Балансировка нагрузки (производительность)" - -msgid "Multi-WAN" -msgstr "Мульти-WAN" - -msgid "Multi-WAN Status" -msgstr "Состояние мульти-WAN" - -msgid "Multi-WAN Traffic Rules" -msgstr "Правила для мульти-WAN трафика" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" -"Мульти-WAN позволяет использовать несколько портов восходящего канала для " -"балансировки нагрузки и отказоустойчивости." - -msgid "None" -msgstr "Ни один из" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "Порты" - -msgid "Protocol" -msgstr "Протокол" - -msgid "Recovering" -msgstr "Восстановление" - -msgid "Source Address" -msgstr "Адрес отправителя" - -msgid "Unknown" -msgstr "Неизвестно" - -msgid "WAN Interfaces" -msgstr "WAN-интерфейсы" - -msgid "WAN Uplink" -msgstr "Восходящий канал WAN" - -msgid "all" -msgstr "все" diff --git a/package/luci/applications/luci-app-multiwan/po/sk/multiwan.po b/package/luci/applications/luci-app-multiwan/po/sk/multiwan.po deleted file mode 100644 index b113eac31d..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/sk/multiwan.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "" - -msgid "Default Route" -msgstr "" - -msgid "Destination Address" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/sv/multiwan.po b/package/luci/applications/luci-app-multiwan/po/sv/multiwan.po deleted file mode 100644 index fae4c5803a..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/sv/multiwan.po +++ /dev/null @@ -1,116 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "" - -msgid "Default Route" -msgstr "" - -msgid "Destination Address" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/templates/multiwan.pot b/package/luci/applications/luci-app-multiwan/po/templates/multiwan.pot deleted file mode 100644 index 954eed11da..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/templates/multiwan.pot +++ /dev/null @@ -1,108 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "" - -msgid "Default Route" -msgstr "" - -msgid "Destination Address" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/tr/multiwan.po b/package/luci/applications/luci-app-multiwan/po/tr/multiwan.po deleted file mode 100644 index e9d6ece55c..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/tr/multiwan.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "" - -msgid "Default Route" -msgstr "" - -msgid "Destination Address" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/uk/multiwan.po b/package/luci/applications/luci-app-multiwan/po/uk/multiwan.po deleted file mode 100644 index 922b402c2c..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/uk/multiwan.po +++ /dev/null @@ -1,119 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-21 15:52+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "Автоматично" - -msgid "Collecting data..." -msgstr "Збір даних..." - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "DNS-сервер(и)" - -msgid "Default Route" -msgstr "Типовий маршрут" - -msgid "Destination Address" -msgstr "Адреса призначення" - -msgid "Disable" -msgstr "Вимкнути" - -msgid "Enable" -msgstr "Активувати" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/vi/multiwan.po b/package/luci/applications/luci-app-multiwan/po/vi/multiwan.po deleted file mode 100644 index e9d6ece55c..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/vi/multiwan.po +++ /dev/null @@ -1,115 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Attempts Before WAN Failover" -msgstr "" - -msgid "Attempts Before WAN Recovery" -msgstr "" - -msgid "Auto" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "" - -msgid "DNS Server(s)" -msgstr "" - -msgid "Default Route" -msgstr "" - -msgid "Destination Address" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Failing" -msgstr "" - -msgid "Failover Traffic Destination" -msgstr "" - -msgid "Health Monitor ICMP Host(s)" -msgstr "" - -msgid "Health Monitor ICMP Timeout" -msgstr "" - -msgid "Health Monitor Interval" -msgstr "" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "" - -msgid "KO" -msgstr "" - -msgid "Load Balancer Distribution" -msgstr "" - -msgid "Load Balancer(Compatibility)" -msgstr "" - -msgid "Load Balancer(Performance)" -msgstr "" - -msgid "Multi-WAN" -msgstr "" - -msgid "Multi-WAN Status" -msgstr "" - -msgid "Multi-WAN Traffic Rules" -msgstr "" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "" - -msgid "None" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Recovering" -msgstr "" - -msgid "Source Address" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "WAN Interfaces" -msgstr "" - -msgid "WAN Uplink" -msgstr "" - -msgid "all" -msgstr "" diff --git a/package/luci/applications/luci-app-multiwan/po/zh-cn/multiwan.po b/package/luci/applications/luci-app-multiwan/po/zh-cn/multiwan.po deleted file mode 100644 index dfb495876f..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/zh-cn/multiwan.po +++ /dev/null @@ -1,118 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-08 16:16+0200\n" -"Last-Translator: Tanyingyu \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" - -msgid "Attempts Before WAN Failover" -msgstr "WAN故障转移之前尝试" - -msgid "Attempts Before WAN Recovery" -msgstr "WAN故障恢复之前尝试" - -msgid "Auto" -msgstr "自动" - -msgid "Collecting data..." -msgstr "正在收集数据…" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "配置规则引导出站流量通过指定的WAN上行链路。" - -msgid "DNS Server(s)" -msgstr "DNS服务器" - -msgid "Default Route" -msgstr "缺省路由" - -msgid "Destination Address" -msgstr "目的地址" - -msgid "Disable" -msgstr "禁用" - -msgid "Enable" -msgstr "启用" - -msgid "Failing" -msgstr "失败" - -msgid "Failover Traffic Destination" -msgstr "故障转移目的地" - -msgid "Health Monitor ICMP Host(s)" -msgstr "健康状况监测ICMP主机" - -msgid "Health Monitor ICMP Timeout" -msgstr "健康状况监测ICMP主机超时" - -msgid "Health Monitor Interval" -msgstr "健康状况监测间隔" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "健康监视器,检测和修正网络变更和失败的连接。" - -msgid "KO" -msgstr "好" - -msgid "Load Balancer Distribution" -msgstr "负载均衡分布" - -msgid "Load Balancer(Compatibility)" -msgstr "负载平衡器(兼容)" - -msgid "Load Balancer(Performance)" -msgstr "负载平衡器(性能)" - -msgid "Multi-WAN" -msgstr "多WAN" - -msgid "Multi-WAN Status" -msgstr "多WAN状态" - -msgid "Multi-WAN Traffic Rules" -msgstr "多WAN流量规则" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "多WAN允许使用多条上行链路的负载均衡和故障转移。" - -msgid "None" -msgstr "空" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "端口" - -msgid "Protocol" -msgstr "协议" - -msgid "Recovering" -msgstr "恢复" - -msgid "Source Address" -msgstr "源地址" - -msgid "Unknown" -msgstr "未知" - -msgid "WAN Interfaces" -msgstr "WAN接口" - -msgid "WAN Uplink" -msgstr "WAN上联" - -msgid "all" -msgstr "所有" diff --git a/package/luci/applications/luci-app-multiwan/po/zh-tw/multiwan.po b/package/luci/applications/luci-app-multiwan/po/zh-tw/multiwan.po deleted file mode 100644 index 9bfbb8f856..0000000000 --- a/package/luci/applications/luci-app-multiwan/po/zh-tw/multiwan.po +++ /dev/null @@ -1,118 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 18:42+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Attempts Before WAN Failover" -msgstr "寬頻失敗前嘗試" - -msgid "Attempts Before WAN Recovery" -msgstr "寬頻復原前嘗試" - -msgid "Auto" -msgstr "自動" - -msgid "Collecting data..." -msgstr "收集資料中" - -msgid "" -"Configure rules for directing outbound traffic through specified WAN Uplinks." -msgstr "透過指定的寬頻上傳重導輸出流量的規則設定" - -msgid "DNS Server(s)" -msgstr "DNS伺服器" - -msgid "Default Route" -msgstr "預設路由器" - -msgid "Destination Address" -msgstr "目標位址" - -msgid "Disable" -msgstr "關閉" - -msgid "Enable" -msgstr "啟用" - -msgid "Failing" -msgstr "失敗" - -msgid "Failover Traffic Destination" -msgstr "故障備援流量目的地" - -msgid "Health Monitor ICMP Host(s)" -msgstr "健診ICMP的主機群" - -msgid "Health Monitor ICMP Timeout" -msgstr "健診ICMP超時" - -msgid "Health Monitor Interval" -msgstr "健診間隔" - -msgid "" -"Health Monitor detects and corrects network changes and failed connections." -msgstr "健診偵測並校正網路改變及失敗的連線" - -msgid "KO" -msgstr "KO" - -msgid "Load Balancer Distribution" -msgstr "分散式負載平衡" - -msgid "Load Balancer(Compatibility)" -msgstr "(取相容性)負載平衡" - -msgid "Load Balancer(Performance)" -msgstr "(取最大效能)負載平衡" - -msgid "Multi-WAN" -msgstr "多元寬頻" - -msgid "Multi-WAN Status" -msgstr "多元寬頻狀態" - -msgid "Multi-WAN Traffic Rules" -msgstr "多元寬頻流量規則" - -msgid "" -"Multi-WAN allows for the use of multiple uplinks for load balancing and " -"failover." -msgstr "允許多元寬頻使用多重上傳平衡負載和備援" - -msgid "None" -msgstr "無" - -msgid "OK" -msgstr "OK" - -msgid "Ports" -msgstr "埠號" - -msgid "Protocol" -msgstr "協定" - -msgid "Recovering" -msgstr "復原中" - -msgid "Source Address" -msgstr "來源位址" - -msgid "Unknown" -msgstr "未知" - -msgid "WAN Interfaces" -msgstr "寬頻介面" - -msgid "WAN Uplink" -msgstr "寬頻上傳" - -msgid "all" -msgstr "全部" diff --git a/package/luci/applications/luci-app-mwan3/Makefile b/package/luci/applications/luci-app-mwan3/Makefile deleted file mode 100644 index d65cd3af16..0000000000 --- a/package/luci/applications/luci-app-mwan3/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2017 Dan Luedtke -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI support for the MWAN3 multiwan hotplug script -LUCI_DEPENDS:=+mwan3 +luci-mod-admin-full +luci-app-firewall +luci-lib-nixio -LUCI_PKGARCH:=all -PKG_LICENSE:=GPLv2 - -PKG_MAINTAINER:=Aedan Renner \ - Florian Eckert - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/package/luci/applications/luci-app-mwan3/luasrc/controller/mwan3.lua deleted file mode 100644 index c24beda281..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/controller/mwan3.lua +++ /dev/null @@ -1,333 +0,0 @@ -module("luci.controller.mwan3", package.seeall) - -sys = require "luci.sys" -ut = require "luci.util" - -ip = "ip -4 " - -function index() - if not nixio.fs.access("/etc/config/mwan3") then - return - end - - entry({"admin", "network", "mwan"}, - alias("admin", "network", "mwan", "overview"), - _("Load Balancing"), 600) - - entry({"admin", "network", "mwan", "overview"}, - alias("admin", "network", "mwan", "overview", "overview_interface"), - _("Overview"), 10) - entry({"admin", "network", "mwan", "overview", "overview_interface"}, - template("mwan/overview_interface")) - entry({"admin", "network", "mwan", "overview", "interface_status"}, - call("interfaceStatus")) - entry({"admin", "network", "mwan", "overview", "overview_detailed"}, - template("mwan/overview_detailed")) - entry({"admin", "network", "mwan", "overview", "detailed_status"}, - call("detailedStatus")) - - entry({"admin", "network", "mwan", "configuration"}, - alias("admin", "network", "mwan", "configuration", "interface"), - _("Configuration"), 20) - entry({"admin", "network", "mwan", "configuration", "globals"}, - cbi("mwan/globalsconfig"),_("Globals"), 5).leaf = true - entry({"admin", "network", "mwan", "configuration", "interface"}, - arcombine(cbi("mwan/interface"), cbi("mwan/interfaceconfig")), - _("Interfaces"), 10).leaf = true - entry({"admin", "network", "mwan", "configuration", "member"}, - arcombine(cbi("mwan/member"), cbi("mwan/memberconfig")), - _("Members"), 20).leaf = true - entry({"admin", "network", "mwan", "configuration", "policy"}, - arcombine(cbi("mwan/policy"), cbi("mwan/policyconfig")), - _("Policies"), 30).leaf = true - entry({"admin", "network", "mwan", "configuration", "rule"}, - arcombine(cbi("mwan/rule"), cbi("mwan/ruleconfig")), - _("Rules"), 40).leaf = true - - entry({"admin", "network", "mwan", "advanced"}, - alias("admin", "network", "mwan", "advanced", "hotplugscript"), - _("Advanced"), 100) - entry({"admin", "network", "mwan", "advanced", "hotplugscript"}, - form("mwan/advanced_hotplugscript")) - entry({"admin", "network", "mwan", "advanced", "mwanconfig"}, - form("mwan/advanced_mwanconfig")) - entry({"admin", "network", "mwan", "advanced", "networkconfig"}, - form("mwan/advanced_networkconfig")) - entry({"admin", "network", "mwan", "advanced", "wirelessconfig"}, - form("mwan/advanced_wirelessconfig")) - entry({"admin", "network", "mwan", "advanced", "diagnostics"}, - template("mwan/advanced_diagnostics")) - entry({"admin", "network", "mwan", "advanced", "diagnostics_display"}, - call("diagnosticsData"), nil).leaf = true - entry({"admin", "network", "mwan", "advanced", "troubleshooting"}, - template("mwan/advanced_troubleshooting")) - entry({"admin", "network", "mwan", "advanced", "troubleshooting_display"}, - call("troubleshootingData")) -end - -function getInterfaceStatus(ruleNumber, interfaceName) - if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".enabled")) == "1" then - if ut.trim(sys.exec(ip .. "route list table " .. ruleNumber)) ~= "" then - if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".track_ip")) ~= "" then - return "online" - else - return "notMonitored" - end - else - return "offline" - end - else - return "notEnabled" - end -end - -function getInterfaceName() - local ruleNumber, status = 0, "" - uci.cursor():foreach("mwan3", "interface", - function (section) - ruleNumber = ruleNumber+1 - status = status .. section[".name"] .. "[" .. getInterfaceStatus(ruleNumber, section[".name"]) .. "]" - end - ) - return status -end - -function interfaceStatus() - local ntm = require "luci.model.network".init() - - local mArray = {} - - -- overview status - local statusString = getInterfaceName() - if statusString ~= "" then - mArray.wans = {} - wansid = {} - - for wanName, interfaceState in string.gfind(statusString, "([^%[]+)%[([^%]]+)%]") do - local wanInterfaceName = ut.trim(sys.exec("uci -q -p /var/state get network." .. wanName .. ".ifname")) - if wanInterfaceName == "" then - wanInterfaceName = "X" - end - local wanDeviceLink = ntm:get_interface(wanInterfaceName) - wanDeviceLink = wanDeviceLink and wanDeviceLink:get_network() - wanDeviceLink = wanDeviceLink and wanDeviceLink:adminlink() or "#" - wansid[wanName] = #mArray.wans + 1 - mArray.wans[wansid[wanName]] = { name = wanName, link = wanDeviceLink, ifname = wanInterfaceName, status = interfaceState } - end - end - - -- overview status log - local mwanLog = ut.trim(sys.exec("logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x' 2>/dev/null")) - if mwanLog ~= "" then - mArray.mwanlog = { mwanLog } - end - - luci.http.prepare_content("application/json") - luci.http.write_json(mArray) -end - -function detailedStatus() - local mArray = {} - - -- detailed mwan status - local detailStatusInfo = ut.trim(sys.exec("/usr/sbin/mwan3 status")) - if detailStatusInfo ~= "" then - mArray.mwandetail = { detailStatusInfo } - end - - luci.http.prepare_content("application/json") - luci.http.write_json(mArray) -end - -function diagnosticsData(interface, tool, task) - function getInterfaceNumber() - local number = 0 - uci.cursor():foreach("mwan3", "interface", - function (section) - number = number+1 - if section[".name"] == interface then - interfaceNumber = number - end - end - ) - end - - local mArray = {} - - local results = "" - if tool == "service" then - os.execute("/usr/sbin/mwan3 " .. task) - if task == "restart" then - results = "MWAN3 restarted" - elseif task == "stop" then - results = "MWAN3 stopped" - else - results = "MWAN3 started" - end - else - local interfaceDevice = ut.trim(sys.exec("uci -q -p /var/state get network." .. interface .. ".ifname")) - if interfaceDevice ~= "" then - if tool == "ping" then - local gateway = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $2}'")) - if gateway ~= "" then - if task == "gateway" then - local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. gateway - results = pingCommand .. "\n\n" .. sys.exec(pingCommand) - else - local tracked = ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interface .. ".track_ip")) - if tracked ~= "" then - for z in tracked:gmatch("[^ ]+") do - local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. z - results = results .. pingCommand .. "\n\n" .. sys.exec(pingCommand) .. "\n\n" - end - else - results = "No tracking IP addresses configured on " .. interface - end - end - else - results = "No default gateway for " .. interface .. " found. Default route does not exist or is configured incorrectly" - end - elseif tool == "rulechk" then - getInterfaceNumber() - local rule1 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 1000)))") - local rule2 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 2000)))") - if rule1 ~= "" and rule2 ~= "" then - results = "All required interface IP rules found:\n\n" .. rule1 .. rule2 - elseif rule1 ~= "" or rule2 ~= "" then - results = "Missing 1 of the 2 required interface IP rules\n\n\nRules found:\n\n" .. rule1 .. rule2 - else - results = "Missing both of the required interface IP rules" - end - elseif tool == "routechk" then - getInterfaceNumber() - local routeTable = sys.exec(ip .. "route list table " .. interfaceNumber) - if routeTable ~= "" then - results = "Interface routing table " .. interfaceNumber .. " was found:\n\n" .. routeTable - else - results = "Missing required interface routing table " .. interfaceNumber - end - elseif tool == "hotplug" then - if task == "ifup" then - os.execute("/usr/sbin/mwan3 ifup " .. interface) - results = "Hotplug ifup sent to interface " .. interface .. "..." - else - os.execute("/usr/sbin/mwan3 ifdown " .. interface) - results = "Hotplug ifdown sent to interface " .. interface .. "..." - end - end - else - results = "Unable to perform diagnostic tests on " .. interface .. ". There is no physical or virtual device associated with this interface" - end - end - if results ~= "" then - results = ut.trim(results) - mArray.diagnostics = { results } - end - - luci.http.prepare_content("application/json") - luci.http.write_json(mArray) -end - -function troubleshootingData() - local ver = require "luci.version" - - local mArray = {} - - -- software versions - local wrtRelease = ut.trim(ver.distversion) - if wrtRelease ~= "" then - wrtRelease = "OpenWrt - " .. wrtRelease - else - wrtRelease = "OpenWrt - unknown" - end - local luciRelease = ut.trim(ver.luciversion) - if luciRelease ~= "" then - luciRelease = "\nLuCI - " .. luciRelease - else - luciRelease = "\nLuCI - unknown" - end - local mwanVersion = ut.trim(sys.exec("opkg info mwan3 | grep Version | awk '{print $2}'")) - if mwanVersion ~= "" then - mwanVersion = "\n\nmwan3 - " .. mwanVersion - else - mwanVersion = "\n\nmwan3 - unknown" - end - local mwanLuciVersion = ut.trim(sys.exec("opkg info luci-app-mwan3 | grep Version | awk '{print $2}'")) - if mwanLuciVersion ~= "" then - mwanLuciVersion = "\nmwan3-luci - " .. mwanLuciVersion - else - mwanLuciVersion = "\nmwan3-luci - unknown" - end - mArray.versions = { wrtRelease .. luciRelease .. mwanVersion .. mwanLuciVersion } - - -- mwan config - local mwanConfig = ut.trim(sys.exec("cat /etc/config/mwan3")) - if mwanConfig == "" then - mwanConfig = "No data found" - end - mArray.mwanconfig = { mwanConfig } - - -- network config - local networkConfig = ut.trim(sys.exec("cat /etc/config/network | sed -e 's/.*username.*/ USERNAME HIDDEN/' -e 's/.*password.*/ PASSWORD HIDDEN/'")) - if networkConfig == "" then - networkConfig = "No data found" - end - mArray.netconfig = { networkConfig } - - -- wireless config - local wirelessConfig = ut.trim(sys.exec("cat /etc/config/wireless | sed -e 's/.*username.*/ USERNAME HIDDEN/' -e 's/.*password.*/ PASSWORD HIDDEN/' -e 's/.*key.*/ KEY HIDDEN/'")) - if wirelessConfig == "" then - wirelessConfig = "No data found" - end - mArray.wificonfig = { wirelessConfig } - - -- ifconfig - local ifconfig = ut.trim(sys.exec("ifconfig")) - if ifconfig == "" then - ifconfig = "No data found" - end - mArray.ifconfig = { ifconfig } - - -- route -n - local routeShow = ut.trim(sys.exec("route -n")) - if routeShow == "" then - routeShow = "No data found" - end - mArray.routeshow = { routeShow } - - -- ip rule show - local ipRuleShow = ut.trim(sys.exec(ip .. "rule show")) - if ipRuleShow == "" then - ipRuleShow = "No data found" - end - mArray.iprule = { ipRuleShow } - - -- ip route list table 1-250 - local routeList, routeString = ut.trim(sys.exec(ip .. "rule | sed 's/://g' 2>/dev/null | awk '$1>=2001 && $1<=2250' | awk '{print $NF}'")), "" - if routeList ~= "" then - for line in routeList:gmatch("[^\r\n]+") do - routeString = routeString .. line .. "\n" .. sys.exec(ip .. "route list table " .. line) - end - routeString = ut.trim(routeString) - else - routeString = "No data found" - end - mArray.routelist = { routeString } - - -- default firewall output policy - local firewallOut = ut.trim(sys.exec("uci -q -p /var/state get firewall.@defaults[0].output")) - if firewallOut == "" then - firewallOut = "No data found" - end - mArray.firewallout = { firewallOut } - - -- iptables - local iptables = ut.trim(sys.exec("iptables -L -t mangle -v -n")) - if iptables == "" then - iptables = "No data found" - end - mArray.iptables = { iptables } - - luci.http.prepare_content("application/json") - luci.http.write_json(mArray) -end diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua deleted file mode 100644 index 1b97080216..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua +++ /dev/null @@ -1,40 +0,0 @@ --- ------ hotplug script configuration ------ -- - -fs = require "nixio.fs" -ut = require "luci.util" - -script = "/etc/mwan3.user" - -m5 = SimpleForm("luci", nil) - m5:append(Template("mwan/advanced_hotplugscript")) -- highlight current tab - -f = m5:section(SimpleSection, nil, - translate("This section allows you to modify the content of \"/etc/mwan3.user\".
" .. - "The file is also preserved during sysupgrade.
" .. - "
" .. - "Notes:
" .. - "This file is interpreted as a shell script.
" .. - "The first line of the script must be "#!/bin/sh" without quotes.
" .. - "Lines beginning with # are comments and are not executed.
" .. - "Put your custom mwan3 action here, they will
" .. - "be executed with each netifd hotplug interface event
" .. - "on interfaces for which mwan3 is enabled.
" .. - "
" .. - "There are three main environment variables that are passed to this script.
" .. - "
" .. - "$ACTION Either \"ifup\" or \"ifdown\"
" .. - "$INTERFACE Name of the interface which went up or down (e.g. \"wan\" or \"wwan\")
" .. - "$DEVICE Physical device name which interface went up or down (e.g. \"eth0\" or \"wwan0\")
" .. - "
")) - -t = f:option(TextValue, "lines") - t.rmempty = true - t.rows = 20 - function t.cfgvalue() - return fs.readfile(script) - end - function t.write(self, section, data) -- format and write new data to script - return fs.writefile(script, ut.trim(data:gsub("\r\n", "\n")) .. "\n") - end - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua deleted file mode 100644 index e0a99e8366..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua +++ /dev/null @@ -1,32 +0,0 @@ --- ------ mwan configuration ------ -- - -ut = require "luci.util" - -mwanConfig = "/etc/config/mwan3" - - -m5 = SimpleForm("luci", nil) - m5:append(Template("mwan/advanced_mwanconfig")) -- highlight current tab - - -f = m5:section(SimpleSection, nil, - translate("This section allows you to modify the contents of /etc/config/mwan3")) - -t = f:option(TextValue, "lines") - t.rmempty = true - t.rows = 20 - - function t.cfgvalue() - return nixio.fs.readfile(mwanConfig) or "" - end - - function t.write(self, section, data) -- format and write new data to script - return nixio.fs.writefile(mwanConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n") - end - - function f.handle(self, state, data) - return true - end - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua deleted file mode 100644 index b93d89751b..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua +++ /dev/null @@ -1,32 +0,0 @@ --- ------ network configuration ------ -- - -ut = require "luci.util" - -networkConfig = "/etc/config/network" - - -m5 = SimpleForm("networkconf", nil) - m5:append(Template("mwan/advanced_networkconfig")) -- highlight current tab - - -f = m5:section(SimpleSection, nil, - translate("This section allows you to modify the contents of /etc/config/network")) - -t = f:option(TextValue, "lines") - t.rmempty = true - t.rows = 20 - - function t.cfgvalue() - return nixio.fs.readfile(networkConfig) or "" - end - - function t.write(self, section, data) -- format and write new data to script - return nixio.fs.writefile(networkConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n") - end - - function f.handle(self, state, data) - return true - end - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua deleted file mode 100644 index 95e9f7c7e5..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua +++ /dev/null @@ -1,32 +0,0 @@ --- ------ wireless configuration ------ -- - -ut = require "luci.util" - -wirelessConfig = "/etc/config/wireless" - - -m5 = SimpleForm("wirelessconf", nil) - m5:append(Template("mwan/advanced_wirelessconfig")) -- highlight current tab - - -f = m5:section(SimpleSection, nil, - translate("This section allows you to modify the contents of /etc/config/wireless")) - -t = f:option(TextValue, "lines") - t.rmempty = true - t.rows = 20 - - function t.cfgvalue() - return nixio.fs.readfile(wirelessConfig) or "" - end - - function t.write(self, section, data) -- format and write new data to script - return nixio.fs.writefile(wirelessConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n") - end - - function f.handle(self, state, data) - return true - end - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua deleted file mode 100644 index 919ed46cd4..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua +++ /dev/null @@ -1,40 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2017 Florian Eckert - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- - -local net = require "luci.model.network".init() - -m = Map("mwan3") - -s = m:section(NamedSection, "globals", "globals", translate("Globals mwan3 options")) -n = s:option(ListValue, "local_source", - translate("Local source interface"), - translate("Use the IP address of this interface as source IP address for traffic initiated by the router itself")) -n:value("none") -n.default = "none" -for _, net in ipairs(net:get_networks()) do - if net:name() ~= "loopback" then - n:value(net:name()) - end -end -n.rmempty = false - -mask = s:option( - Value, - "mmx_mask", - translate("Firewall mask"), - translate("Enter value in hex, starting with 0x")) -mask.datatype = "hex(4)" -mask.default = "0xff00" - -return m diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua deleted file mode 100644 index 5ee5fb39f3..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua +++ /dev/null @@ -1,276 +0,0 @@ --- ------ extra functions ------ -- - -function interfaceCheck() -- find issues with too many interfaces, reliability and metric - uci.cursor():foreach("mwan3", "interface", - function (section) - local interfaceName = section[".name"] - interfaceNumber = interfaceNumber+1 -- count number of mwan interfaces configured - -- create list of metrics for none and duplicate checking - local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".metric")) - if metricValue == "" then - errorFound = 1 - errorNoMetricList = errorNoMetricList .. interfaceName .. " " - else - metricList = metricList .. interfaceName .. " " .. metricValue .. "\n" - end - -- check if any interfaces have a higher reliability requirement than tracking IPs configured - local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. interfaceName .. ".track_ip) | wc -w"))) - if trackingNumber > 0 then - local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. interfaceName .. ".reliability"))) - if reliabilityNumber and reliabilityNumber > trackingNumber then - errorFound = 1 - errorReliabilityList = errorReliabilityList .. interfaceName .. " " - end - end - -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table - if ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName)) == "interface" then - local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".ifname")) - if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then - errorFound = 1 - errorNetConfigList = errorNetConfigList .. interfaceName .. " " - errorRouteList = errorRouteList .. interfaceName .. " " - else - local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'")) - if routeCheck == "" then - errorFound = 1 - errorRouteList = errorRouteList .. interfaceName .. " " - end - end - else - errorFound = 1 - errorNetConfigList = errorNetConfigList .. interfaceName .. " " - errorRouteList = errorRouteList .. interfaceName .. " " - end - end - ) - -- check if any interfaces have duplicate metrics - local metricDuplicateNumbers = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d") - if metricDuplicateNumbers ~= "" then - errorFound = 1 - local metricDuplicates = "" - for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do - metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'") - errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates - end - errorDuplicateMetricList = sys.exec("echo '" .. errorDuplicateMetricList .. "' | tr '\n' ' '") - end -end - -function interfaceWarnings() -- display status and warning messages at the top of the page - local warnings = "" - if interfaceNumber <= 250 then - warnings = "" .. translatef("There are currently %d of 250 supported interfaces configured", interfaceNumber) .. "" - else - warnings = "" .. translatef("WARNING: %d interfaces are configured exceeding the maximum of 250!", interfaceNumber) .. "" - end - if errorReliabilityList ~= " " then - warnings = warnings .. "

" .. translate("WARNING: Some interfaces have a higher reliability requirement than there are tracking IP addresses!") .. "" - end - if errorRouteList ~= " " then - warnings = warnings .. "

" .. translate("WARNING: Some interfaces have no default route in the main routing table!") .. "" - end - if errorNetConfigList ~= " " then - warnings = warnings .. "

" .. translate("WARNING: Some interfaces are configured incorrectly or not at all in /etc/config/network!") .. "" - end - if errorNoMetricList ~= " " then - warnings = warnings .. "

" .. translate("WARNING: Some interfaces have no metric configured in /etc/config/network!") .. "" - end - if errorDuplicateMetricList ~= " " then - warnings = warnings .. "

" .. translate("WARNING: Some interfaces have duplicate metrics configured in /etc/config/network!") .. "" - end - return warnings -end - --- ------ interface configuration ------ -- - -dsp = require "luci.dispatcher" -sys = require "luci.sys" -ut = require "luci.util" - -interfaceNumber = 0 -metricList = "" -errorFound = 0 -errorDuplicateMetricList = " " -errorNetConfigList = " " -errorNoMetricList = " " -errorReliabilityList = " " -errorRouteList = " " -interfaceCheck() - - -m5 = Map("mwan3", translate("MWAN Interface Configuration"), - interfaceWarnings()) - m5:append(Template("mwan/config_css")) - - -mwan_interface = m5:section(TypedSection, "interface", translate("Interfaces"), - translate("MWAN supports up to 250 physical and/or logical interfaces
" .. - "MWAN requires that all interfaces have a unique metric configured in /etc/config/network
" .. - "Names must match the interface name found in /etc/config/network (see advanced tab)
" .. - "Names may contain characters A-Z, a-z, 0-9, _ and no spaces
" .. - "Interfaces may not share the same name as configured members, policies or rules")) - mwan_interface.addremove = true - mwan_interface.dynamic = false - mwan_interface.sectionhead = translate("Interface") - mwan_interface.sortable = false - mwan_interface.template = "cbi/tblsection" - mwan_interface.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "interface", "%s") - function mwan_interface.create(self, section) - TypedSection.create(self, section) - m5.uci:save("mwan3") - luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "interface", section)) - end - - -enabled = mwan_interface:option(DummyValue, "enabled", translate("Enabled")) - enabled.rawhtml = true - function enabled.cfgvalue(self, s) - if self.map:get(s, "enabled") == "1" then - return "Yes" - else - return "No" - end - end - -track_ip = mwan_interface:option(DummyValue, "track_ip", translate("Tracking IP")) - track_ip.rawhtml = true - function track_ip.cfgvalue(self, s) - tracked = self.map:get(s, "track_ip") - if tracked then - local ipList = "" - for k,v in pairs(tracked) do - ipList = ipList .. v .. "
" - end - return ipList - else - return "—" - end - end - -track_method = mwan_interface:option(DummyValue, "track_method", translate("Tracking method")) - track_method.rawhtml = true - function track_method.cfgvalue(self, s) - if tracked then - return self.map:get(s, "track_method") or "—" - else - return "—" - end - end - -reliability = mwan_interface:option(DummyValue, "reliability", translate("Tracking reliability")) - reliability.rawhtml = true - function reliability.cfgvalue(self, s) - if tracked then - return self.map:get(s, "reliability") or "—" - else - return "—" - end - end - -count = mwan_interface:option(DummyValue, "count", translate("Ping count")) - count.rawhtml = true - function count.cfgvalue(self, s) - if tracked then - return self.map:get(s, "count") or "—" - else - return "—" - end - end - -timeout = mwan_interface:option(DummyValue, "timeout", translate("Ping timeout")) - timeout.rawhtml = true - function timeout.cfgvalue(self, s) - if tracked then - local timeoutValue = self.map:get(s, "timeout") - if timeoutValue then - return timeoutValue .. "s" - else - return "—" - end - else - return "—" - end - end - -interval = mwan_interface:option(DummyValue, "interval", translate("Ping interval")) - interval.rawhtml = true - function interval.cfgvalue(self, s) - if tracked then - local intervalValue = self.map:get(s, "interval") - if intervalValue then - return intervalValue .. "s" - else - return "—" - end - else - return "—" - end - end - -down = mwan_interface:option(DummyValue, "down", translate("Interface down")) - down.rawhtml = true - function down.cfgvalue(self, s) - if tracked then - return self.map:get(s, "down") or "—" - else - return "—" - end - end - -up = mwan_interface:option(DummyValue, "up", translate("Interface up")) - up.rawhtml = true - function up.cfgvalue(self, s) - if tracked then - return self.map:get(s, "up") or "—" - else - return "—" - end - end - -metric = mwan_interface:option(DummyValue, "metric", translate("Metric")) - metric.rawhtml = true - function metric.cfgvalue(self, s) - local metricValue = sys.exec("uci -p /var/state get network." .. s .. ".metric") - if metricValue ~= "" then - return metricValue - else - return "—" - end - end - -errors = mwan_interface:option(DummyValue, "errors", translate("Errors")) - errors.rawhtml = true - function errors.cfgvalue(self, s) - if errorFound == 1 then - local mouseOver, lineBreak = "", "" - if string.find(errorReliabilityList, " " .. s .. " ") then - mouseOver = "Higher reliability requirement than there are tracking IP addresses" - lineBreak = " " - end - if string.find(errorRouteList, " " .. s .. " ") then - mouseOver = mouseOver .. lineBreak .. "No default route in the main routing table" - lineBreak = " " - end - if string.find(errorNetConfigList, " " .. s .. " ") then - mouseOver = mouseOver .. lineBreak .. "Configured incorrectly or not at all in /etc/config/network" - lineBreak = " " - end - if string.find(errorNoMetricList, " " .. s .. " ") then - mouseOver = mouseOver .. lineBreak .. "No metric configured in /etc/config/network" - lineBreak = " " - end - if string.find(errorDuplicateMetricList, " " .. s .. " ") then - mouseOver = mouseOver .. lineBreak .. "Duplicate metric configured in /etc/config/network" - end - if mouseOver == "" then - return "" - else - return "\"error\"" - end - else - return "" - end - end - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua deleted file mode 100644 index a7d7c5af7e..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua +++ /dev/null @@ -1,266 +0,0 @@ --- ------ extra functions ------ -- - -function interfaceCheck() - metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".metric")) - if metricValue == "" then -- no metric - errorNoMetric = 1 - else -- if metric exists create list of interface metrics to compare against for duplicates - uci.cursor():foreach("mwan3", "interface", - function (section) - local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. section[".name"] .. ".metric")) - metricList = metricList .. section[".name"] .. " " .. metricValue .. "\n" - end - ) - -- compare metric against list - local metricDuplicateNumbers, metricDuplicates = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d"), "" - for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do - metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'") - errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates - end - if sys.exec("echo '" .. errorDuplicateMetricList .. "' | grep -w " .. arg[1]) ~= "" then - errorDuplicateMetric = 1 - end - end - -- check if this interface has a higher reliability requirement than track IPs configured - local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. arg[1] .. ".track_ip) | wc -w"))) - if trackingNumber > 0 then - local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".reliability"))) - if reliabilityNumber and reliabilityNumber > trackingNumber then - errorReliability = 1 - end - end - -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table - if ut.trim(sys.exec("uci -p /var/state get network." .. arg[1])) == "interface" then - local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".ifname")) - if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then - errorNetConfig = 1 - errorRoute = 1 - else - local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'")) - if routeCheck == "" then - errorRoute = 1 - end - end - else - errorNetConfig = 1 - errorRoute = 1 - end -end - -function interfaceWarnings() -- display warning messages at the top of the page - local warns, lineBreak = "", "" - if errorReliability == 1 then - warns = "" .. translate("WARNING: This interface has a higher reliability requirement than there are tracking IP addresses!") .. "" - lineBreak = "

" - end - if errorRoute == 1 then - warns = warns .. lineBreak .. "" .. translate("WARNING: This interface has no default route in the main routing table!") .. "" - lineBreak = "

" - end - if errorNetConfig == 1 then - warns = warns .. lineBreak .. "" .. translate("WARNING: This interface is configured incorrectly or not at all in /etc/config/network!") .. "" - lineBreak = "

" - end - if errorNoMetric == 1 then - warns = warns .. lineBreak .. "" .. translate("WARNING: This interface has no metric configured in /etc/config/network!") .. "" - elseif errorDuplicateMetric == 1 then - warns = warns .. lineBreak .. "" .. translate("WARNING: This and other interfaces have duplicate metrics configured in /etc/config/network!") .. "" - end - return warns -end - --- ------ interface configuration ------ -- - -dsp = require "luci.dispatcher" -sys = require "luci.sys" -ut = require "luci.util" -arg[1] = arg[1] or "" - -metricValue = "" -metricList = "" -errorDuplicateMetricList = "" -errorNoMetric = 0 -errorDuplicateMetric = 0 -errorRoute = 0 -errorNetConfig = 0 -errorReliability = 0 -interfaceCheck() - - -m5 = Map("mwan3", translatef("MWAN Interface Configuration - %s", arg[1]), - interfaceWarnings()) - m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "interface") - - -mwan_interface = m5:section(NamedSection, arg[1], "interface", "") - mwan_interface.addremove = false - mwan_interface.dynamic = false - - -enabled = mwan_interface:option(ListValue, "enabled", translate("Enabled")) - enabled.default = "1" - enabled:value("1", translate("Yes")) - enabled:value("0", translate("No")) - -initial_state = mwan_interface:option(ListValue, "initial_state", translate("Initial state"), - translate("Expect interface state on up event")) - initial_state.default = "online" - initial_state:value("online", translate("Online")) - initial_state:value("offline", translate("Offline")) - -family = mwan_interface:option(ListValue, "family", translate("Internet Protocol")) - family.default = "ipv4" - family:value("ipv4", translate("IPv4")) - family:value("ipv6", translate("IPv6")) - -track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking hostname or IP address"), - translate("This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online")) - track_ip.datatype = "host" - -track_method = mwan_interface:option(ListValue, "track_method", translate("Tracking method")) - track_method.default = "ping" - track_method:value("ping") - track_method:value("arping") - track_method:value("httping") - -reliability = mwan_interface:option(Value, "reliability", translate("Tracking reliability"), - translate("Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up")) - reliability.datatype = "range(1, 100)" - reliability.default = "1" - -count = mwan_interface:option(ListValue, "count", translate("Ping count")) - count.default = "1" - count:value("1") - count:value("2") - count:value("3") - count:value("4") - count:value("5") - -size = mwan_interface:option(Value, "size", translate("Ping size")) - size.default = "56" - size:value("8") - size:value("24") - size:value("56") - size:value("120") - size:value("248") - size:value("504") - size:value("1016") - size:value("1472") - size:value("2040") - size.datatype = "range(1, 65507)" - size.rmempty = false - size.optional = false - -timeout = mwan_interface:option(ListValue, "timeout", translate("Ping timeout")) - timeout.default = "2" - timeout:value("1", translatef("%d second", 1)) - timeout:value("2", translatef("%d seconds", 2)) - timeout:value("3", translatef("%d seconds", 3)) - timeout:value("4", translatef("%d seconds", 4)) - timeout:value("5", translatef("%d seconds", 5)) - timeout:value("6", translatef("%d seconds", 6)) - timeout:value("7", translatef("%d seconds", 7)) - timeout:value("8", translatef("%d seconds", 8)) - timeout:value("9", translatef("%d seconds", 9)) - timeout:value("10", translatef("%d seconds", 10)) - -interval = mwan_interface:option(ListValue, "interval", translate("Ping interval")) - interval.default = "5" - interval:value("1", translatef("%d second", 1)) - interval:value("3", translatef("%d seconds", 3)) - interval:value("5", translatef("%d seconds", 5)) - interval:value("10", translatef("%d seconds", 10)) - interval:value("20", translatef("%d seconds", 20)) - interval:value("30", translatef("%d seconds", 30)) - interval:value("60", translatef("%d minute", 1)) - interval:value("300", translatef("%d minutes", 5)) - interval:value("600", translatef("%d minutes", 10)) - interval:value("900", translatef("%d minutes", 15)) - interval:value("1800", translatef("%d minutes", 30)) - interval:value("3600", translatef("%d hour", 1)) - -failure = mwan_interface:option(Value, "failure_interval", translate("Failure interval"), - translate("Ping interval during failure detection")) - failure.default = "5" - failure:value("1", translatef("%d second", 1)) - failure:value("3", translatef("%d seconds", 3)) - failure:value("5", translatef("%d seconds", 5)) - failure:value("10", translatef("%d seconds", 10)) - failure:value("20", translatef("%d seconds", 20)) - failure:value("30", translatef("%d seconds", 30)) - failure:value("60", translatef("%d minute", 1)) - failure:value("300", translatef("%d minutes", 5)) - failure:value("600", translatef("%d minutes", 10)) - failure:value("900", translatef("%d minutes", 15)) - failure:value("1800", translatef("%d minutes", 30)) - failure:value("3600", translatef("%d hour", 1)) - -keep_failure = mwan_interface:option(Flag, "keep_failure_interval", translate("Keep failure interval"), - translate("Keep ping failure interval during failure state")) - keep_failure.default = keep_failure.disabled - -recovery = mwan_interface:option(Value, "recovery_interval", translate("Recovery interval"), - translate("Ping interval during failure recovering")) - recovery.default = "5" - recovery:value("1", translatef("%d second", 1)) - recovery:value("3", translatef("%d seconds", 3)) - recovery:value("5", translatef("%d seconds", 5)) - recovery:value("10", translatef("%d seconds", 10)) - recovery:value("20", translatef("%d seconds", 20)) - recovery:value("30", translatef("%d seconds", 30)) - recovery:value("60", translatef("%d minute", 1)) - recovery:value("300", translatef("%d minutes", 5)) - recovery:value("600", translatef("%d minutes", 10)) - recovery:value("900", translatef("%d minutes", 15)) - recovery:value("1800", translatef("%d minutes", 30)) - recovery:value("3600", translatef("%d hour", 1)) - -down = mwan_interface:option(ListValue, "down", translate("Interface down"), - translate("Interface will be deemed down after this many failed ping tests")) - down.default = "3" - down:value("1") - down:value("2") - down:value("3") - down:value("4") - down:value("5") - down:value("6") - down:value("7") - down:value("8") - down:value("9") - down:value("10") - -up = mwan_interface:option(ListValue, "up", translate("Interface up"), - translate("Downed interface will be deemed up after this many successful ping tests")) - up.default = "3" - up:value("1") - up:value("2") - up:value("3") - up:value("4") - up:value("5") - up:value("6") - up:value("7") - up:value("8") - up:value("9") - up:value("10") - -flush = mwan_interface:option(ListValue, "flush_conntrack", translate("Flush conntrack table"), - translate("Flush global firewall conntrack table on interface events")) - flush.default = "never" - flush:value("ifup", translate("ifup")) - flush:value("ifdown", translate("ifdown")) - flush:value("never", translate("never")) - flush:value("always", translate("always")) - -metric = mwan_interface:option(DummyValue, "metric", translate("Metric"), - translate("This displays the metric assigned to this interface in /etc/config/network")) - metric.rawhtml = true - function metric.cfgvalue(self, s) - if errorNoMetric == 0 then - return metricValue - else - return "—" - end - end - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua deleted file mode 100644 index efbe8f7902..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua +++ /dev/null @@ -1,46 +0,0 @@ --- ------ member configuration ------ -- - -ds = require "luci.dispatcher" - - -m5 = Map("mwan3", translate("MWAN Member Configuration")) - m5:append(Template("mwan/config_css")) - - -mwan_member = m5:section(TypedSection, "member", translate("Members"), - translate("Members are profiles attaching a metric and weight to an MWAN interface
" .. - "Names may contain characters A-Z, a-z, 0-9, _ and no spaces
" .. - "Members may not share the same name as configured interfaces, policies or rules")) - mwan_member.addremove = true - mwan_member.dynamic = false - mwan_member.sectionhead = translate("Member") - mwan_member.sortable = true - mwan_member.template = "cbi/tblsection" - mwan_member.extedit = ds.build_url("admin", "network", "mwan", "configuration", "member", "%s") - function mwan_member.create(self, section) - TypedSection.create(self, section) - m5.uci:save("mwan3") - luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "member", section)) - end - - -interface = mwan_member:option(DummyValue, "interface", translate("Interface")) - interface.rawhtml = true - function interface.cfgvalue(self, s) - return self.map:get(s, "interface") or "—" - end - -metric = mwan_member:option(DummyValue, "metric", translate("Metric")) - metric.rawhtml = true - function metric.cfgvalue(self, s) - return self.map:get(s, "metric") or "1" - end - -weight = mwan_member:option(DummyValue, "weight", translate("Weight")) - weight.rawhtml = true - function weight.cfgvalue(self, s) - return self.map:get(s, "weight") or "1" - end - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua deleted file mode 100644 index eb6f417afe..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua +++ /dev/null @@ -1,47 +0,0 @@ --- ------ extra functions ------ -- - -function cbi_add_interface(field) - uci.cursor():foreach("mwan3", "interface", - function (section) - field:value(section[".name"]) - end - ) -end - --- ------ member configuration ------ -- - -dsp = require "luci.dispatcher" -arg[1] = arg[1] or "" - - -m5 = Map("mwan3", translatef("MWAN Member Configuration - %s", arg[1])) - m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "member") - - -mwan_member = m5:section(NamedSection, arg[1], "member", "") - mwan_member.addremove = false - mwan_member.dynamic = false - - -interface = mwan_member:option(Value, "interface", translate("Interface")) - cbi_add_interface(interface) - -metric = mwan_member:option(Value, "metric", translate("Metric"), - translate("Acceptable values: 1-1000. Defaults to 1 if not set")) - metric.datatype = "range(1, 1000)" - -weight = mwan_member:option(Value, "weight", translate("Weight"), - translate("Acceptable values: 1-1000. Defaults to 1 if not set")) - weight.datatype = "range(1, 1000)" - - --- ------ currently configured interfaces ------ -- - -mwan_interface = m5:section(TypedSection, "interface", translate("Currently Configured Interfaces")) - mwan_interface.addremove = false - mwan_interface.dynamic = false - mwan_interface.sortable = false - mwan_interface.template = "cbi/tblsection" - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua deleted file mode 100644 index 6640564d50..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua +++ /dev/null @@ -1,94 +0,0 @@ --- ------ extra functions ------ -- - -function policyCheck() -- check to see if any policy names exceed the maximum of 15 characters - uci.cursor():foreach("mwan3", "policy", - function (section) - if string.len(section[".name"]) > 15 then - nameTooLong = 1 - err_name_list = err_name_list .. section[".name"] .. " " - end - end - ) -end - -function policyWarn() -- display status and warning messages at the top of the page - if nameTooLong == 1 then - return "" .. translate("WARNING: Some policies have names exceeding the maximum of 15 characters!") .. "" - else - return "" - end -end - --- ------ policy configuration ------ -- - -ds = require "luci.dispatcher" -sys = require "luci.sys" - -nameTooLong = 0 -err_name_list = " " -policyCheck() - - -m5 = Map("mwan3", translate("MWAN Policy Configuration"), - policyWarn()) - m5:append(Template("mwan/config_css")) - - -mwan_policy = m5:section(TypedSection, "policy", translate("Policies"), - translate("Policies are profiles grouping one or more members controlling how MWAN distributes traffic
" .. - "Member interfaces with lower metrics are used first. Interfaces with the same metric load-balance
" .. - "Load-balanced member interfaces distribute more traffic out those with higher weights
" .. - "Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be 15 characters or less
" .. - "Policies may not share the same name as configured interfaces, members or rules")) - mwan_policy.addremove = true - mwan_policy.dynamic = false - mwan_policy.sectionhead = translate("Policy") - mwan_policy.sortable = true - mwan_policy.template = "cbi/tblsection" - mwan_policy.extedit = ds.build_url("admin", "network", "mwan", "configuration", "policy", "%s") - function mwan_policy.create(self, section) - TypedSection.create(self, section) - m5.uci:save("mwan3") - luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "policy", section)) - end - - -use_member = mwan_policy:option(DummyValue, "use_member", translate("Members assigned")) - use_member.rawhtml = true - function use_member.cfgvalue(self, s) - local memberConfig, memberList = self.map:get(s, "use_member"), "" - if memberConfig then - for k,v in pairs(memberConfig) do - memberList = memberList .. v .. "
" - end - return memberList - else - return "—" - end - end - -last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last resort")) - last_resort.rawhtml = true - function last_resort.cfgvalue(self, s) - local action = self.map:get(s, "last_resort") - if action == "blackhole" then - return translate("blackhole (drop)") - elseif action == "default" then - return translate("default (use main routing table)") - else - return translate("unreachable (reject)") - end - end - -errors = mwan_policy:option(DummyValue, "errors", translate("Errors")) - errors.rawhtml = true - function errors.cfgvalue(self, s) - if not string.find(err_name_list, " " .. s .. " ") then - return "" - else - return "\"error\"" - end - end - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua deleted file mode 100644 index feb62dc8a3..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua +++ /dev/null @@ -1,65 +0,0 @@ --- ------ extra functions ------ -- - -function policyCheck() -- check to see if this policy's name exceed the maximum of 15 characters - policyNameLength = string.len(arg[1]) - if policyNameLength > 15 then - nameTooLong = 1 - end -end - -function policyWarn() -- display status and warning messages at the top of the page - if nameTooLong == 1 then - return "" .. translatef("WARNING: This policy's name is %d characters exceeding the maximum of 15!", policyNameLength) .. "" - else - return "" - end -end - -function cbiAddMember(field) - uci.cursor():foreach("mwan3", "member", - function (section) - field:value(section[".name"]) - end - ) -end - --- ------ policy configuration ------ -- - -dsp = require "luci.dispatcher" -arg[1] = arg[1] or "" - -nameTooLong = 0 -policyCheck() - - -m5 = Map("mwan3", translatef("MWAN Policy Configuration - %s", arg[1]), - policyWarn()) - m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "policy") - - -mwan_policy = m5:section(NamedSection, arg[1], "policy", "") - mwan_policy.addremove = false - mwan_policy.dynamic = false - - -use_member = mwan_policy:option(DynamicList, "use_member", translate("Member used")) - cbiAddMember(use_member) - -last_resort = mwan_policy:option(ListValue, "last_resort", translate("Last resort"), - translate("When all policy members are offline use this behavior for matched traffic")) - last_resort.default = "unreachable" - last_resort:value("unreachable", translate("unreachable (reject)")) - last_resort:value("blackhole", translate("blackhole (drop)")) - last_resort:value("default", translate("default (use main routing table)")) - - --- ------ currently configured members ------ -- - -mwan_member = m5:section(TypedSection, "member", translate("Currently Configured Members")) - mwan_member.addremove = false - mwan_member.dynamic = false - mwan_member.sortable = false - mwan_member.template = "cbi/tblsection" - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua deleted file mode 100644 index 9cb4756fc8..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua +++ /dev/null @@ -1,141 +0,0 @@ --- ------ extra functions ------ -- - -function ruleCheck() -- determine if rules needs a proper protocol configured - uci.cursor():foreach("mwan3", "rule", - function (section) - local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".src_port")) - local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".dest_port")) - if sourcePort ~= "" or destPort ~= "" then -- ports configured - local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".proto")) - if protocol == "" or protocol == "all" then -- no or improper protocol - error_protocol_list = error_protocol_list .. section[".name"] .. " " - end - end - end - ) -end - -function ruleWarn() -- display warning messages at the top of the page - if error_protocol_list ~= " " then - return "" .. translate("WARNING: Some rules have a port configured with no or improper protocol specified! Please configure a specific protocol!") .. "" - else - return "" - end -end - --- ------ rule configuration ------ -- - -dsp = require "luci.dispatcher" -sys = require "luci.sys" -ut = require "luci.util" - -error_protocol_list = " " -ruleCheck() - - -m5 = Map("mwan3", translate("MWAN Rule Configuration"), - ruleWarn()) - m5:append(Template("mwan/config_css")) - - -mwan_rule = m5:section(TypedSection, "rule", translate("Traffic Rules"), - translate("Rules specify which traffic will use a particular MWAN policy based on IP address, port or protocol
" .. - "Rules are matched from top to bottom. Rules below a matching rule are ignored. Traffic not matching any rule is routed using the main routing table
" .. - "Traffic destined for known (other than default) networks is handled by the main routing table. Traffic matching a rule, but all WAN interfaces for that policy are down will be blackholed
" .. - "Names may contain characters A-Z, a-z, 0-9, _ and no spaces
" .. - "Rules may not share the same name as configured interfaces, members or policies")) - mwan_rule.addremove = true - mwan_rule.anonymous = false - mwan_rule.dynamic = false - mwan_rule.sectionhead = translate("Rule") - mwan_rule.sortable = true - mwan_rule.template = "cbi/tblsection" - mwan_rule.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "rule", "%s") - function mwan_rule.create(self, section) - TypedSection.create(self, section) - m5.uci:save("mwan3") - luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "rule", section)) - end - - -src_ip = mwan_rule:option(DummyValue, "src_ip", translate("Source address")) - src_ip.rawhtml = true - function src_ip.cfgvalue(self, s) - return self.map:get(s, "src_ip") or "—" - end - -src_port = mwan_rule:option(DummyValue, "src_port", translate("Source port")) - src_port.rawhtml = true - function src_port.cfgvalue(self, s) - return self.map:get(s, "src_port") or "—" - end - -dest_ip = mwan_rule:option(DummyValue, "dest_ip", translate("Destination address")) - dest_ip.rawhtml = true - function dest_ip.cfgvalue(self, s) - return self.map:get(s, "dest_ip") or "—" - end - -dest_port = mwan_rule:option(DummyValue, "dest_port", translate("Destination port")) - dest_port.rawhtml = true - function dest_port.cfgvalue(self, s) - return self.map:get(s, "dest_port") or "—" - end - -proto = mwan_rule:option(DummyValue, "proto", translate("Protocol")) - proto.rawhtml = true - function proto.cfgvalue(self, s) - return self.map:get(s, "proto") or "all" - end - -sticky = mwan_rule:option(DummyValue, "sticky", translate("Sticky")) - sticky.rawhtml = true - function sticky.cfgvalue(self, s) - if self.map:get(s, "sticky") == "1" then - stickied = 1 - return translate("Yes") - else - stickied = nil - return translate("No") - end - end - -timeout = mwan_rule:option(DummyValue, "timeout", translate("Sticky timeout")) - timeout.rawhtml = true - function timeout.cfgvalue(self, s) - if stickied then - local timeoutValue = self.map:get(s, "timeout") - if timeoutValue then - return timeoutValue .. "s" - else - return "600s" - end - else - return "—" - end - end - -ipset = mwan_rule:option(DummyValue, "ipset", translate("IPset")) - ipset.rawhtml = true - function ipset.cfgvalue(self, s) - return self.map:get(s, "ipset") or "—" - end - -use_policy = mwan_rule:option(DummyValue, "use_policy", translate("Policy assigned")) - use_policy.rawhtml = true - function use_policy.cfgvalue(self, s) - return self.map:get(s, "use_policy") or "—" - end - -errors = mwan_rule:option(DummyValue, "errors", translate("Errors")) - errors.rawhtml = true - function errors.cfgvalue(self, s) - if not string.find(error_protocol_list, " " .. s .. " ") then - return "" - else - return "\"error\"" - end - end - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua deleted file mode 100644 index cb1b45d261..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua +++ /dev/null @@ -1,113 +0,0 @@ --- ------ extra functions ------ -- - -function ruleCheck() -- determine if rule needs a protocol specified - local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".src_port")) - local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".dest_port")) - if sourcePort ~= "" or destPort ~= "" then -- ports configured - local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".proto")) - if protocol == "" or protocol == "all" then -- no or improper protocol - error_protocol = 1 - end - end -end - -function ruleWarn() -- display warning message at the top of the page - if error_protocol == 1 then - return "" .. translate("WARNING: This rule is incorrectly configured with no or improper protocol specified! Please configure a specific protocol!") .. "" - else - return "" - end -end - -function cbiAddPolicy(field) - uci.cursor():foreach("mwan3", "policy", - function (section) - field:value(section[".name"]) - end - ) -end - -function cbiAddProtocol(field) - local protocols = ut.trim(sys.exec("cat /etc/protocols | grep ' # ' | awk '{print $1}' | grep -vw -e 'ip' -e 'tcp' -e 'udp' -e 'icmp' -e 'esp' | grep -v 'ipv6' | sort | tr '\n' ' '")) - for p in string.gmatch(protocols, "%S+") do - field:value(p) - end -end - --- ------ rule configuration ------ -- - -dsp = require "luci.dispatcher" -sys = require "luci.sys" -ut = require "luci.util" -arg[1] = arg[1] or "" - -error_protocol = 0 -ruleCheck() - - -m5 = Map("mwan3", translatef("MWAN Rule Configuration - %s", arg[1]), - ruleWarn()) - m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "rule") - - -mwan_rule = m5:section(NamedSection, arg[1], "rule", "") - mwan_rule.addremove = false - mwan_rule.dynamic = false - - -src_ip = mwan_rule:option(Value, "src_ip", translate("Source address"), - translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes")) - src_ip.datatype = ipaddr - -src_port = mwan_rule:option(Value, "src_port", translate("Source port"), - translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes")) - -dest_ip = mwan_rule:option(Value, "dest_ip", translate("Destination address"), - translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes")) - dest_ip.datatype = ipaddr - -dest_port = mwan_rule:option(Value, "dest_port", translate("Destination port"), - translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes")) - -proto = mwan_rule:option(Value, "proto", translate("Protocol"), - translate("View the contents of /etc/protocols for protocol descriptions")) - proto.default = "all" - proto.rmempty = false - proto:value("all") - proto:value("ip") - proto:value("tcp") - proto:value("udp") - proto:value("icmp") - proto:value("esp") - cbiAddProtocol(proto) - -sticky = mwan_rule:option(ListValue, "sticky", translate("Sticky"), - translate("Traffic from the same source IP address that previously matched this rule within the sticky timeout period will use the same WAN interface")) - sticky.default = "0" - sticky:value("1", translate("Yes")) - sticky:value("0", translate("No")) - -timeout = mwan_rule:option(Value, "timeout", translate("Sticky timeout"), - translate("Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set")) - timeout.datatype = "range(1, 1000000)" - -ipset = mwan_rule:option(Value, "ipset", translate("IPset"), - translate("Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/youtube.com/youtube\")")) - -use_policy = mwan_rule:option(Value, "use_policy", translate("Policy assigned")) - cbiAddPolicy(use_policy) - use_policy:value("unreachable", translate("unreachable (reject)")) - use_policy:value("blackhole", translate("blackhole (drop)")) - use_policy:value("default", translate("default (use main routing table)")) - - --- ------ currently configured policies ------ -- - -mwan_policy = m5:section(TypedSection, "policy", translate("Currently Configured Policies")) - mwan_policy.addremove = false - mwan_policy.dynamic = false - mwan_policy.sortable = false - mwan_policy.template = "cbi/tblsection" - - -return m5 diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm deleted file mode 100644 index 53b997af90..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm +++ /dev/null @@ -1 +0,0 @@ -<%+mwan/openwrt_overview_status%> diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm deleted file mode 100644 index 4483485946..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm +++ /dev/null @@ -1,115 +0,0 @@ -<%+header%> - - - -<% - local uci = require "luci.model.uci" - - interfaceNames = "" - uci.cursor():foreach("mwan3", "interface", - function (section) - interfaceNames = interfaceNames .. section[".name"] .. " " - end - ) -%> - - - - -
-
- <%:MWAN Interface Diagnostics%> - -
- - - - - - -
-
-
- <%:MWAN Service Control%> -
- - - -
-
- -
- - - -<%+footer%> diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm deleted file mode 100644 index 10b4f10558..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm deleted file mode 100644 index 20ae6036fc..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm deleted file mode 100644 index bed43107c0..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm deleted file mode 100644 index 4174ef4b21..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm +++ /dev/null @@ -1,63 +0,0 @@ -<%+header%> - - - - - - -
-
- <%:Troubleshooting Data%> -
<%:Loading%><%:Collecting data...%>
-
-
- - - -<%+footer%> diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm deleted file mode 100644 index bb18d53493..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm deleted file mode 100644 index 5d91c536eb..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm deleted file mode 100644 index 7cef0630ee..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm +++ /dev/null @@ -1,80 +0,0 @@ - - -
- <%:MWAN Interface Live Status%> -
<%:Loading%><%:Collecting data...%>
-
- - diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm deleted file mode 100644 index 6a800c3f98..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm +++ /dev/null @@ -1,40 +0,0 @@ -<%+header%> - - - - - - -
-
- <%:MWAN Detailed Status%> -
<%:Loading%><%:Collecting data...%>
-
-
- - - -<%+footer%> diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm deleted file mode 100644 index 2929a6df60..0000000000 --- a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm +++ /dev/null @@ -1,108 +0,0 @@ -<%+header%> - - - - - - -
-
- <%:MWAN Interface Live Status%> -
<%:Loading%><%:Collecting data...%>
-
-
- <%:MWAN Interface Systemlog%> -
<%:Loading%><%:Collecting data...%>
-
-
- - - -<%+footer%> diff --git a/package/luci/applications/luci-app-mwan3/po/ja/mwan3.po b/package/luci/applications/luci-app-mwan3/po/ja/mwan3.po deleted file mode 100644 index 34a9f1f3b3..0000000000 --- a/package/luci/applications/luci-app-mwan3/po/ja/mwan3.po +++ /dev/null @@ -1,665 +0,0 @@ -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 2.0.3\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: ja\n" - -msgid "%d hour" -msgstr "%d 時間" - -msgid "%d minute" -msgstr "%d 分" - -msgid "%d minutes" -msgstr "%d 分" - -msgid "%d second" -msgstr "%d 秒" - -msgid "%d seconds" -msgstr "%d 秒" - -msgid "" -"Acceptable values: 1-100. This many Tracking IP addresses must respond for " -"the link to be deemed up" -msgstr "" -"利用可能な値: 1-100。上記の追跡 IP の合計個数のうち、Up 状態と判定するために" -"に必要な、レスポンスが返された追跡 IP アドレスの個数です。" - -msgid "Acceptable values: 1-1000. Defaults to 1 if not set" -msgstr "利用可能な値: 1-1000。空欄の場合のデフォルトは1です。" - -msgid "Advanced" -msgstr "詳細設定" - -msgid "Check IP rules" -msgstr "IP ルールのチェック" - -msgid "Check routing table" -msgstr "ルーティング テーブルのチェック" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "Configuration" -msgstr "設定" - -msgid "Currently Configured Interfaces" -msgstr "設定済みインターフェース" - -msgid "Currently Configured Members" -msgstr "設定済みメンバー" - -msgid "Currently Configured Policies" -msgstr "設定済みポリシー" - -msgid "Destination address" -msgstr "宛先アドレス" - -msgid "Destination port" -msgstr "宛先ポート" - -msgid "Detailed Status" -msgstr "詳細ステータス" - -msgid "Diagnostic Results" -msgstr "診断結果" - -msgid "Diagnostics" -msgstr "診断機能" - -msgid "Disabled" -msgstr "無効" - -msgid "" -"Downed interface will be deemed up after this many successful ping tests" -msgstr "" -"Down 状態のインターフェースが Up 状態と判断されるまでに要する ping テストの成" -"功回数です。" - -msgid "Enabled" -msgstr "有効" - -msgid "Enter value in hex, starting with 0x" -msgstr "0x で始まる16進数の値を入力してください。" - -msgid "Error collecting troubleshooting information" -msgstr "トラブルシューティング情報の収集エラー" - -msgid "Errors" -msgstr "エラー" - -msgid "Expect interface state on up event" -msgstr "Up イベント時に予想されるインターフェースの状態です。" - -msgid "Failure interval" -msgstr "障害検出 インターバル" - -msgid "Firewall mask" -msgstr "ファイアウォール マスク" - -msgid "Flush conntrack table" -msgstr "" - -msgid "Flush global firewall conntrack table on interface events" -msgstr "" - -msgid "Globals" -msgstr "全般" - -msgid "Globals mwan3 options" -msgstr "MWAN3 全般オプション" - -msgid "Hotplug Script" -msgstr "ホットプラグ スクリプト" - -msgid "Hotplug ifdown" -msgstr "ホットプラグ ifdown" - -msgid "Hotplug ifup" -msgstr "ホットプラグ ifup" - -msgid "IPset" -msgstr "IPset" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "Initial state" -msgstr "初期状態" - -msgid "Interface" -msgstr "インターフェース" - -msgid "Interface Status" -msgstr "インターフェース ステータス" - -msgid "Interface down" -msgstr "インターフェース Down" - -msgid "Interface up" -msgstr "インターフェース Up" - -msgid "Interface will be deemed down after this many failed ping tests" -msgstr "" -"インターフェースが Down 状態と判断されるまでに要する ping テストの失敗回数で" -"す。" - -msgid "Interfaces" -msgstr "インターフェース" - -msgid "Internet Protocol" -msgstr "インターネット プロトコル" - -msgid "Keep failure interval" -msgstr "" - -msgid "Keep ping failure interval during failure state" -msgstr "" - -msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" -msgstr "直近の MWAN システムログ(50行)です。一番上が最新の行です:" - -msgid "Last resort" -msgstr "最終手段" - -msgid "Load Balancing" -msgstr "負荷分散" - -msgid "Loading" -msgstr "読込中" - -msgid "Local source interface" -msgstr "" - -msgid "MWAN Config" -msgstr "MWAN 設定" - -msgid "MWAN Detailed Status" -msgstr "MWAN 詳細ステータス" - -msgid "MWAN Interface Configuration" -msgstr "MWAN インターフェース設定" - -msgid "MWAN Interface Configuration - %s" -msgstr "MWAN インターフェース設定 - %s" - -msgid "MWAN Interface Diagnostics" -msgstr "MWAN インターフェース診断" - -msgid "MWAN Interface Live Status" -msgstr "MWAN インターフェース Live ステータス" - -msgid "MWAN Interface Systemlog" -msgstr "MWAN インターフェース システムログ" - -msgid "MWAN Member Configuration" -msgstr "MWAN メンバー設定" - -msgid "MWAN Member Configuration - %s" -msgstr "MWAN メンバー設定 - %s" - -msgid "MWAN Policy Configuration" -msgstr "MWAN ポリシー設定" - -msgid "MWAN Policy Configuration - %s" -msgstr "MWAN ポリシー設定 - %s" - -msgid "MWAN Rule Configuration" -msgstr "MWAN ルール設定" - -msgid "MWAN Rule Configuration - %s" -msgstr "MWAN ルール設定 - %s" - -msgid "MWAN Service Control" -msgstr "MWAN サービス コントロール" - -msgid "" -"MWAN supports up to 250 physical and/or logical interfaces
MWAN " -"requires that all interfaces have a unique metric configured in /etc/config/" -"network
Names must match the interface name found in /etc/config/" -"network (see advanced tab)
Names may contain characters A-Z, a-z, 0-9, " -"_ and no spaces
Interfaces may not share the same name as configured " -"members, policies or rules" -msgstr "" -"MWAN は、250個までの物理または論理、あるいは両方のインターフェースをサポート" -"します。
MWAN は、全てのインターフェースが /etc/config/network で設定さ" -"れるユニークなメトリックを持つことを必要とします。
下記 \"インターフェー" -"ス\" の名前は、 /etc/config/network に存在するインターフェース名と同じでなけ" -"ればなりません(詳細設定タブを確認)。
名前は A-Z, a-z, 0-9, _ を含むこ" -"とができますが、スペースは使用できません。
インターフェースには、設定済" -"みのメンバーやポリシー、ルールと同じ名前を使用することはできません。" - -msgid "" -"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " -"as a portrange (eg \"1024:2048\") without quotes" -msgstr "" -"単一または複数のポート(例: \"22\" または \"80,443\")、あるいはポートの範囲" -"(例: \"1024:2048\")を、クオーテーション無しで指定することができます。" - -msgid "Member" -msgstr "メンバー" - -msgid "Member used" -msgstr "使用されるメンバー" - -msgid "Members" -msgstr "メンバー" - -msgid "" -"Members are profiles attaching a metric and weight to an MWAN interface
Names may contain characters A-Z, a-z, 0-9, _ and no spaces
Members " -"may not share the same name as configured interfaces, policies or rules" -msgstr "" -"メンバーは、MWAN インターフェースのメトリックおよびウエイトを関連付けたプロ" -"ファイルです。
名前は A-Z, a-z, 0-9, _ を含むことができますが、スペース" -"は使用できません。
メンバーには、設定済みのインターフェースやポリシー、" -"ルールと同じ名前を使用することはできません。" - -msgid "Members assigned" -msgstr "アサイン済みメンバー" - -msgid "Metric" -msgstr "メトリック" - -msgid "" -"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" -"youtube.com/youtube\")" -msgstr "" -"IPset ルールの名前です。このルールは、 /etc/dnsmasq.conf で必要です。(例: " -"\"ipset=/youtube.com/youtube\")" - -msgid "Network Config" -msgstr "ネットワーク設定" - -msgid "No" -msgstr "いいえ" - -msgid "No MWAN interfaces found" -msgstr "MWAN インターフェースが見つかりません" - -msgid "No MWAN systemlog history found" -msgstr "MWAN システムログの履歴が見つかりません" - -msgid "No detailed status information available" -msgstr "詳細ステータス情報は利用できません" - -msgid "No diagnostic results returned" -msgstr "診断結果がありません" - -msgid "No protocol specified" -msgstr "プロトコルが設定されていません" - -msgid "Offline" -msgstr "オフライン" - -msgid "Online" -msgstr "オンライン" - -msgid "Online (tracking active)" -msgstr "オンライン(追跡実行中)" - -msgid "Online (tracking off)" -msgstr "オンライン(追跡オフ)" - -msgid "Overview" -msgstr "概要" - -msgid "Ping count" -msgstr "Ping 回数" - -msgid "Ping default gateway" -msgstr "Ping デフォルト ゲートウェイ" - -msgid "Ping interval" -msgstr "Ping インターバル" - -msgid "Ping interval during failure detection" -msgstr "障害検出中の Ping 実行間隔です。" - -msgid "Ping interval during failure recovering" -msgstr "障害復旧中の Ping 実行間隔です。" - -msgid "Ping size" -msgstr "Ping サイズ" - -msgid "Ping timeout" -msgstr "Ping タイムアウト" - -msgid "Ping tracking IP" -msgstr "Ping トラッキング IP" - -msgid "Policies" -msgstr "ポリシー" - -msgid "" -"Policies are profiles grouping one or more members controlling how MWAN " -"distributes traffic
Member interfaces with lower metrics are used " -"first. Interfaces with the same metric load-balance
Load-balanced " -"member interfaces distribute more traffic out those with higher weights
Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be " -"15 characters or less
Policies may not share the same name as " -"configured interfaces, members or rules" -msgstr "" -"ポリシーは、MWANがどのようにトラフィックの分配を行うかを制御する、1つ以上のメ" -"ンバーをグループ化するプロファイルです。
最小のメトリックを持つメンバー " -"インターフェースが最初に使用されます。同じメトリックを持つ複数のインター" -"フェースでは、負荷分散を行います。
負荷分散に設定されたメンバー インター" -"フェースでは、ウェイトの値が大きい方により多くのトラフィックを分配します。" -"
名前は A-Z, a-z, 0-9, _ を含むことができますが、スペースは使用できませ" -"ん。また、15文字以内でなければなりません。
ポリシーでは、設定済みのイン" -"ターフェースやメンバー、ルールと同じ名前を使用することはできません。" - -msgid "Policy" -msgstr "ポリシー" - -msgid "Policy assigned" -msgstr "アサイン済みポリシー" - -msgid "Protocol" -msgstr "プロトコル" - -msgid "Recovery interval" -msgstr "障害復旧 インターバル" - -msgid "Restart MWAN" -msgstr "MWAN の再起動" - -msgid "Rule" -msgstr "ルール" - -msgid "Rules" -msgstr "ルール" - -msgid "" -"Rules specify which traffic will use a particular MWAN policy based on IP " -"address, port or protocol
Rules are matched from top to bottom. Rules " -"below a matching rule are ignored. Traffic not matching any rule is routed " -"using the main routing table
Traffic destined for known (other than " -"default) networks is handled by the main routing table. Traffic matching a " -"rule, but all WAN interfaces for that policy are down will be blackholed
Names may contain characters A-Z, a-z, 0-9, _ and no spaces
Rules may " -"not share the same name as configured interfaces, members or policies" -msgstr "" -"ルールは IP アドレスやポート、プロトコルを基に、トラフィックがどの MWAN ポリ" -"シーを使用するかを設定します。
ルールは上から下へマッチングが行われ、合" -"致したルールより下のルールは無視されます。全てのルールに合致しないトラフィッ" -"クは、メインのルーティング テーブルを使用してルートが決定されます。
既知" -"(デフォルト以外)のネットワークへのトラフィックは、メインのルーティング テー" -"ブルによって制御されます。ルールに合致したトラフィックでも、当該ポリシーの全 " -"WAN インターフェースが Down 状態の場合は blackhole 状態となります。
名前" -"は A-Z, a-z, 0-9, _ を含むことができますが、スペースは使用できません。
" -"ルールは、設定済みのインターフェースやメンバー、ポリシーと同じ名前を使用する" -"ことはできません。" - -msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set" -msgstr "秒。利用可能な値: 1-1000000。空欄の場合のデフォルト値は600です。" - -msgid "Source address" -msgstr "送信元アドレス" - -msgid "Source port" -msgstr "送信元ポート" - -msgid "Start MWAN" -msgstr "MWAN の起動" - -msgid "Sticky" -msgstr "Sticky" - -msgid "Sticky timeout" -msgstr "Sticky タイムアウト" - -msgid "Stop MWAN" -msgstr "MWAN の停止" - -msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes" -msgstr "CIDR 表記のサポート(例: \"192.168.100.0/24\")" - -msgid "There are currently %d of 250 supported interfaces configured" -msgstr "現在、250個中 %d 個のサポートされたインターフェースが設定済みです。" - -msgid "" -"This displays the metric assigned to this interface in /etc/config/network" -msgstr "" -"/etc/config/network で、このインターフェースに割り当てられたメトリックです。" - -msgid "" -"This hostname or IP address will be pinged to determine if the link is up or " -"down. Leave blank to assume interface is always online" -msgstr "" -"リンクの Up または Down 状態を判定するために、このホスト名または IP アドレス" -"に対して Ping の送信が行われます。常にオンラインとする場合、空欄のままにしま" -"す。" - -msgid "" -"This section allows you to modify the content of \"/etc/mwan3.user\".
The file is also preserved during sysupgrade.

Notes:
This " -"file is interpreted as a shell script.
The first line of the script " -"must be "#!/bin/sh" without quotes.
Lines beginning with # are " -"comments and are not executed.
Put your custom mwan3 action here, they " -"will
be executed with each netifd hotplug interface event
on " -"interfaces for which mwan3 is enabled.

There are three main " -"environment variables that are passed to this script.

$ACTION " -"Either \"ifup\" or \"ifdown\"
$INTERFACE Name of the interface which " -"went up or down (e.g. \"wan\" or \"wwan\")
$DEVICE Physical device name " -"which interface went up or down (e.g. \"eth0\" or \"wwan0\")

" -msgstr "" -"このセクションでは、 \"/etc/mwan3.user\" の内容を変更することができます。" -"
このファイルは、 sysupgrade 時に保持されます。

注意:
" -"このファイルは、シェルスクリプトとして解釈されます。
スクリプトの1行目" -"は、"#!bin/sh" である必要があります(クォーテーション不要)。
# " -"で始まる行はコメントであり、実行されません。
mwan3 のカスタム動作をここ" -"に入力してください。これらは、 mwan3 が有効なインターフェースの
netifd " -"ホットプラグ インターフェース イベント毎に実行されます。

主に3つの" -"環境変数が利用可能です。

$ACTION - \"ifup\" および \"ifdown\"
$INTERFACE - Up または Down が行われたインターフェース名(例: \"wan\" や " -"\"wwan\")
$DEVICE - Up または Down が行われた物理デバイス名(例: " -"\"eth0\" や \"wwan0\")

" - -msgid "This section allows you to modify the contents of /etc/config/mwan3" -msgstr "" -"このセクションでは、 /etc/config/mwan3 の内容を変更することができます。" - -msgid "This section allows you to modify the contents of /etc/config/network" -msgstr "" -"このセクションでは、 /etc/config/network の内容を変更することができます。" - -msgid "This section allows you to modify the contents of /etc/config/wireless" -msgstr "" -"このセクションでは、 /etc/config/wireless の内容を変更することができます。" - -msgid "Tracking IP" -msgstr "追跡 IP" - -msgid "Tracking hostname or IP address" -msgstr "追跡ホスト名または IP アドレス" - -msgid "Tracking method" -msgstr "追跡方式" - -msgid "Tracking reliability" -msgstr "追跡の信頼性" - -msgid "Traffic Rules" -msgstr "トラフィック ルール" - -msgid "" -"Traffic from the same source IP address that previously matched this rule " -"within the sticky timeout period will use the same WAN interface" -msgstr "" -"以前このルールにマッチした同じアクセス元 IP アドレスからのトラフィックが、再" -"度 Sticky 制限時間内にマッチした場合には、同じ WAN インターフェースが使用され" -"ます。" - -msgid "Troubleshooting" -msgstr "トラブルシューティング" - -msgid "Troubleshooting Data" -msgstr "トラブルシューティング データ" - -msgid "" -"Use the IP address of this interface as source IP address for traffic " -"initiated by the router itself" -msgstr "" -"ルーター自身によって発生するトラフィックのアクセス元 IP アドレスとして、この" -"インターフェースの IP アドレスが使用されます。" - -msgid "View the contents of /etc/protocols for protocol descriptions" -msgstr "プロトコルの説明については、 /etc/protocols の内容を確認してください。" - -msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!" -msgstr "" -"警告: %d 個のインターフェースが、最大個数の 250個 を超えて設定されています!" - -msgid "" -"WARNING: Some interfaces are configured incorrectly or not at all in /etc/" -"config/network!" -msgstr "" -"警告: 設定を誤っているか、もしくは完全に設定されていないインターフェースがあ" -"ります!" - -msgid "" -"WARNING: Some interfaces have a higher reliability requirement than there " -"are tracking IP addresses!" -msgstr "" -"警告: 追跡 IP アドレスの個数より大きい追跡信頼性の値が設定されたインター" -"フェースがあります!" - -msgid "" -"WARNING: Some interfaces have duplicate metrics configured in /etc/config/" -"network!" -msgstr "" -"警告: /etc/config/network で、重複するメトリックを設定されているインター" -"フェースがあります!" - -msgid "" -"WARNING: Some interfaces have no default route in the main routing table!" -msgstr "" -"警告: メインのルーティング テーブルで、デフォルト ルートを設定されていないイ" -"ンターフェースがあります!" - -msgid "" -"WARNING: Some interfaces have no metric configured in /etc/config/network!" -msgstr "" -"警告: /etc/config/network で、メトリックを設定されていないインターフェースが" -"あります!" - -msgid "" -"WARNING: Some policies have names exceeding the maximum of 15 characters!" -msgstr "" -"警告: 最大文字数の 15 文字を超える名前が設定されているポリシーがあります!" - -msgid "" -"WARNING: Some rules have a port configured with no or improper protocol " -"specified! Please configure a specific protocol!" -msgstr "" -"警告: 不適切なプロトコルが指定されている、または何も指定されていないポートを" -"設定されたルールがあります!プロトコルを指定し直してください!" - -msgid "" -"WARNING: This and other interfaces have duplicate metrics configured in /etc/" -"config/network!" -msgstr "" -"警告: これと他のインターフェースで重複するメトリックが /etc/config/network に" -"設定されています!" - -msgid "" -"WARNING: This interface has a higher reliability requirement than there are " -"tracking IP addresses!" -msgstr "" -"警告: このインターフェースは、追跡 IP アドレスの個数より大きい追跡信頼性の値" -"を設定されています!" - -msgid "WARNING: This interface has no default route in the main routing table!" -msgstr "" -"警告: このインターフェースは、メインのルーティング テーブルにデフォルト ルー" -"トが設定されていません!" - -msgid "" -"WARNING: This interface has no metric configured in /etc/config/network!" -msgstr "" -"警告: このインターフェースは、 /etc/config/network でメトリックが設定されてい" -"ません!" - -msgid "" -"WARNING: This interface is configured incorrectly or not at all in /etc/" -"config/network!" -msgstr "" -"警告: このインターフェースは /etc/config/network で設定が誤っているか、もしく" -"は完全に設定されていません!" - -msgid "" -"WARNING: This policy's name is %d characters exceeding the maximum of 15!" -msgstr "" -"警告: このポリシーの名前は、最大文字数 15 文字を超える %d 文字が設定されてい" -"ます!" - -msgid "" -"WARNING: This rule is incorrectly configured with no or improper protocol " -"specified! Please configure a specific protocol!" -msgstr "" -"警告: このルールは不適切なプロトコルが指定されているか、または何も指定されて" -"いません!プロトコルを指定し直してください!" - -msgid "Waiting for MWAN to %s..." -msgstr "MWAN の %s を待っています..." - -msgid "Waiting for diagnostic results..." -msgstr "診断結果を待っています..." - -msgid "Weight" -msgstr "ウエイト" - -msgid "" -"When all policy members are offline use this behavior for matched traffic" -msgstr "" -"ポリシーの全メンバーがオフラインの場合、合致したトラフィックに対してこのふる" -"まいが使用されます。" - -msgid "Wireless Config" -msgstr "無線設定" - -msgid "Yes" -msgstr "はい" - -msgid "always" -msgstr "always" - -msgid "blackhole (drop)" -msgstr "blackhole (drop)" - -msgid "default (use main routing table)" -msgstr "デフォルト(メインのルーティング テーブルを使用)" - -msgid "ifdown" -msgstr "ifdown" - -msgid "ifup" -msgstr "ifup" - -msgid "never" -msgstr "never" - -msgid "restart" -msgstr "再起動" - -msgid "start" -msgstr "起動" - -msgid "stop" -msgstr "停止" - -msgid "unreachable (reject)" -msgstr "unreachable (reject)" diff --git a/package/luci/applications/luci-app-mwan3/po/templates/mwan3.pot b/package/luci/applications/luci-app-mwan3/po/templates/mwan3.pot deleted file mode 100644 index ed9fdb131d..0000000000 --- a/package/luci/applications/luci-app-mwan3/po/templates/mwan3.pot +++ /dev/null @@ -1,562 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "%d hour" -msgstr "" - -msgid "%d minute" -msgstr "" - -msgid "%d minutes" -msgstr "" - -msgid "%d second" -msgstr "" - -msgid "%d seconds" -msgstr "" - -msgid "" -"Acceptable values: 1-100. This many Tracking IP addresses must respond for " -"the link to be deemed up" -msgstr "" - -msgid "Acceptable values: 1-1000. Defaults to 1 if not set" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Check IP rules" -msgstr "" - -msgid "Check routing table" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Currently Configured Interfaces" -msgstr "" - -msgid "Currently Configured Members" -msgstr "" - -msgid "Currently Configured Policies" -msgstr "" - -msgid "Destination address" -msgstr "" - -msgid "Destination port" -msgstr "" - -msgid "Detailed Status" -msgstr "" - -msgid "Diagnostic Results" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "" -"Downed interface will be deemed up after this many successful ping tests" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Enter value in hex, starting with 0x" -msgstr "" - -msgid "Error collecting troubleshooting information" -msgstr "" - -msgid "Errors" -msgstr "" - -msgid "Expect interface state on up event" -msgstr "" - -msgid "Failure interval" -msgstr "" - -msgid "Firewall mask" -msgstr "" - -msgid "Flush conntrack table" -msgstr "" - -msgid "Flush global firewall conntrack table on interface events" -msgstr "" - -msgid "Globals" -msgstr "" - -msgid "Globals mwan3 options" -msgstr "" - -msgid "Hotplug Script" -msgstr "" - -msgid "Hotplug ifdown" -msgstr "" - -msgid "Hotplug ifup" -msgstr "" - -msgid "IPset" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "Initial state" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Status" -msgstr "" - -msgid "Interface down" -msgstr "" - -msgid "Interface up" -msgstr "" - -msgid "Interface will be deemed down after this many failed ping tests" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Internet Protocol" -msgstr "" - -msgid "Keep failure interval" -msgstr "" - -msgid "Keep ping failure interval during failure state" -msgstr "" - -msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" -msgstr "" - -msgid "Last resort" -msgstr "" - -msgid "Load Balancing" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local source interface" -msgstr "" - -msgid "MWAN Config" -msgstr "" - -msgid "MWAN Detailed Status" -msgstr "" - -msgid "MWAN Interface Configuration" -msgstr "" - -msgid "MWAN Interface Configuration - %s" -msgstr "" - -msgid "MWAN Interface Diagnostics" -msgstr "" - -msgid "MWAN Interface Live Status" -msgstr "" - -msgid "MWAN Interface Systemlog" -msgstr "" - -msgid "MWAN Member Configuration" -msgstr "" - -msgid "MWAN Member Configuration - %s" -msgstr "" - -msgid "MWAN Policy Configuration" -msgstr "" - -msgid "MWAN Policy Configuration - %s" -msgstr "" - -msgid "MWAN Rule Configuration" -msgstr "" - -msgid "MWAN Rule Configuration - %s" -msgstr "" - -msgid "MWAN Service Control" -msgstr "" - -msgid "" -"MWAN supports up to 250 physical and/or logical interfaces
MWAN " -"requires that all interfaces have a unique metric configured in /etc/config/" -"network
Names must match the interface name found in /etc/config/" -"network (see advanced tab)
Names may contain characters A-Z, a-z, 0-9, " -"_ and no spaces
Interfaces may not share the same name as configured " -"members, policies or rules" -msgstr "" - -msgid "" -"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " -"as a portrange (eg \"1024:2048\") without quotes" -msgstr "" - -msgid "Member" -msgstr "" - -msgid "Member used" -msgstr "" - -msgid "Members" -msgstr "" - -msgid "" -"Members are profiles attaching a metric and weight to an MWAN interface
Names may contain characters A-Z, a-z, 0-9, _ and no spaces
Members " -"may not share the same name as configured interfaces, policies or rules" -msgstr "" - -msgid "Members assigned" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "" -"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" -"youtube.com/youtube\")" -msgstr "" - -msgid "Network Config" -msgstr "" - -msgid "No" -msgstr "" - -msgid "No MWAN interfaces found" -msgstr "" - -msgid "No MWAN systemlog history found" -msgstr "" - -msgid "No detailed status information available" -msgstr "" - -msgid "No diagnostic results returned" -msgstr "" - -msgid "No protocol specified" -msgstr "" - -msgid "Offline" -msgstr "" - -msgid "Online" -msgstr "" - -msgid "Online (tracking active)" -msgstr "" - -msgid "Online (tracking off)" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Ping count" -msgstr "" - -msgid "Ping default gateway" -msgstr "" - -msgid "Ping interval" -msgstr "" - -msgid "Ping interval during failure detection" -msgstr "" - -msgid "Ping interval during failure recovering" -msgstr "" - -msgid "Ping size" -msgstr "" - -msgid "Ping timeout" -msgstr "" - -msgid "Ping tracking IP" -msgstr "" - -msgid "Policies" -msgstr "" - -msgid "" -"Policies are profiles grouping one or more members controlling how MWAN " -"distributes traffic
Member interfaces with lower metrics are used " -"first. Interfaces with the same metric load-balance
Load-balanced " -"member interfaces distribute more traffic out those with higher weights
Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be " -"15 characters or less
Policies may not share the same name as " -"configured interfaces, members or rules" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Policy assigned" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Recovery interval" -msgstr "" - -msgid "Restart MWAN" -msgstr "" - -msgid "Rule" -msgstr "" - -msgid "Rules" -msgstr "" - -msgid "" -"Rules specify which traffic will use a particular MWAN policy based on IP " -"address, port or protocol
Rules are matched from top to bottom. Rules " -"below a matching rule are ignored. Traffic not matching any rule is routed " -"using the main routing table
Traffic destined for known (other than " -"default) networks is handled by the main routing table. Traffic matching a " -"rule, but all WAN interfaces for that policy are down will be blackholed
Names may contain characters A-Z, a-z, 0-9, _ and no spaces
Rules may " -"not share the same name as configured interfaces, members or policies" -msgstr "" - -msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set" -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "Source port" -msgstr "" - -msgid "Start MWAN" -msgstr "" - -msgid "Sticky" -msgstr "" - -msgid "Sticky timeout" -msgstr "" - -msgid "Stop MWAN" -msgstr "" - -msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes" -msgstr "" - -msgid "There are currently %d of 250 supported interfaces configured" -msgstr "" - -msgid "" -"This displays the metric assigned to this interface in /etc/config/network" -msgstr "" - -msgid "" -"This hostname or IP address will be pinged to determine if the link is up or " -"down. Leave blank to assume interface is always online" -msgstr "" - -msgid "" -"This section allows you to modify the content of \"/etc/mwan3.user\".
The file is also preserved during sysupgrade.

Notes:
This " -"file is interpreted as a shell script.
The first line of the script " -"must be "#!/bin/sh" without quotes.
Lines beginning with # are " -"comments and are not executed.
Put your custom mwan3 action here, they " -"will
be executed with each netifd hotplug interface event
on " -"interfaces for which mwan3 is enabled.

There are three main " -"environment variables that are passed to this script.

$ACTION " -"Either \"ifup\" or \"ifdown\"
$INTERFACE Name of the interface which " -"went up or down (e.g. \"wan\" or \"wwan\")
$DEVICE Physical device name " -"which interface went up or down (e.g. \"eth0\" or \"wwan0\")

" -msgstr "" - -msgid "This section allows you to modify the contents of /etc/config/mwan3" -msgstr "" - -msgid "This section allows you to modify the contents of /etc/config/network" -msgstr "" - -msgid "This section allows you to modify the contents of /etc/config/wireless" -msgstr "" - -msgid "Tracking IP" -msgstr "" - -msgid "Tracking hostname or IP address" -msgstr "" - -msgid "Tracking method" -msgstr "" - -msgid "Tracking reliability" -msgstr "" - -msgid "Traffic Rules" -msgstr "" - -msgid "" -"Traffic from the same source IP address that previously matched this rule " -"within the sticky timeout period will use the same WAN interface" -msgstr "" - -msgid "Troubleshooting" -msgstr "" - -msgid "Troubleshooting Data" -msgstr "" - -msgid "" -"Use the IP address of this interface as source IP address for traffic " -"initiated by the router itself" -msgstr "" - -msgid "View the contents of /etc/protocols for protocol descriptions" -msgstr "" - -msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!" -msgstr "" - -msgid "" -"WARNING: Some interfaces are configured incorrectly or not at all in /etc/" -"config/network!" -msgstr "" - -msgid "" -"WARNING: Some interfaces have a higher reliability requirement than there " -"are tracking IP addresses!" -msgstr "" - -msgid "" -"WARNING: Some interfaces have duplicate metrics configured in /etc/config/" -"network!" -msgstr "" - -msgid "" -"WARNING: Some interfaces have no default route in the main routing table!" -msgstr "" - -msgid "" -"WARNING: Some interfaces have no metric configured in /etc/config/network!" -msgstr "" - -msgid "" -"WARNING: Some policies have names exceeding the maximum of 15 characters!" -msgstr "" - -msgid "" -"WARNING: Some rules have a port configured with no or improper protocol " -"specified! Please configure a specific protocol!" -msgstr "" - -msgid "" -"WARNING: This and other interfaces have duplicate metrics configured in /etc/" -"config/network!" -msgstr "" - -msgid "" -"WARNING: This interface has a higher reliability requirement than there are " -"tracking IP addresses!" -msgstr "" - -msgid "WARNING: This interface has no default route in the main routing table!" -msgstr "" - -msgid "" -"WARNING: This interface has no metric configured in /etc/config/network!" -msgstr "" - -msgid "" -"WARNING: This interface is configured incorrectly or not at all in /etc/" -"config/network!" -msgstr "" - -msgid "" -"WARNING: This policy's name is %d characters exceeding the maximum of 15!" -msgstr "" - -msgid "" -"WARNING: This rule is incorrectly configured with no or improper protocol " -"specified! Please configure a specific protocol!" -msgstr "" - -msgid "Waiting for MWAN to %s..." -msgstr "" - -msgid "Waiting for diagnostic results..." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When all policy members are offline use this behavior for matched traffic" -msgstr "" - -msgid "Wireless Config" -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "always" -msgstr "" - -msgid "blackhole (drop)" -msgstr "" - -msgid "default (use main routing table)" -msgstr "" - -msgid "ifdown" -msgstr "" - -msgid "ifup" -msgstr "" - -msgid "never" -msgstr "" - -msgid "restart" -msgstr "" - -msgid "start" -msgstr "" - -msgid "stop" -msgstr "" - -msgid "unreachable (reject)" -msgstr "" diff --git a/package/luci/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/package/luci/applications/luci-app-mwan3/po/zh-cn/mwan3.po deleted file mode 100644 index d0b92a6df1..0000000000 --- a/package/luci/applications/luci-app-mwan3/po/zh-cn/mwan3.po +++ /dev/null @@ -1,631 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2017-10-28 16:58+0800\n" -"X-Generator: Gtranslator 2.91.7\n" - -msgid "%d hour" -msgstr "%d 小时" - -msgid "%d minute" -msgstr "%d 分钟" - -msgid "%d minutes" -msgstr "%d 分钟" - -msgid "%d second" -msgstr "%d 秒" - -msgid "%d seconds" -msgstr "%d 秒" - -msgid "" -"Acceptable values: 1-100. This many Tracking IP addresses must respond for " -"the link to be deemed up" -msgstr "" -"取值范围:1-100。这个设置项指定了当多少个 IP 地址能够连通时接口会被认为在线" - -msgid "Acceptable values: 1-1000. Defaults to 1 if not set" -msgstr "取值范围:1-100。如果不填写,默认值为 1" - -msgid "Advanced" -msgstr "高级" - -msgid "Check IP rules" -msgstr "检查 IP 规则" - -msgid "Check routing table" -msgstr "检查路由表" - -msgid "Collecting data..." -msgstr "正在收集数据..." - -msgid "Configuration" -msgstr "配置" - -msgid "Currently Configured Interfaces" -msgstr "当前配置的接口" - -msgid "Currently Configured Members" -msgstr "当前配置的成员" - -msgid "Currently Configured Policies" -msgstr "当前配置的策略" - -msgid "Destination address" -msgstr "目标地址" - -msgid "Destination port" -msgstr "目标端口" - -msgid "Detailed Status" -msgstr "详细状态" - -msgid "Diagnostic Results" -msgstr "诊断结果" - -msgid "Diagnostics" -msgstr "诊断" - -msgid "Disabled" -msgstr "已禁用" - -msgid "" -"Downed interface will be deemed up after this many successful ping tests" -msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接口将会重新上线" - -msgid "Enabled" -msgstr "已启用" - -msgid "Enter value in hex, starting with 0x" -msgstr "输入十六进制值,以 0x 开头" - -msgid "Error collecting troubleshooting information" -msgstr "收集故障排除信息时出错" - -msgid "Errors" -msgstr "错误" - -msgid "Expect interface state on up event" -msgstr "在 up 事件发生时的预期接口状态" - -msgid "Failure interval" -msgstr "故障检测间隔" - -msgid "Firewall mask" -msgstr "防火墙掩码" - -msgid "Flush conntrack table" -msgstr "刷新连接跟踪表" - -msgid "Flush global firewall conntrack table on interface events" -msgstr "在接口事件触发时刷新全局防火墙连接跟踪表" - -msgid "Globals" -msgstr "全局" - -msgid "Globals mwan3 options" -msgstr "全局 mwan3 选项" - -msgid "Hotplug Script" -msgstr "Hotplug 脚本" - -msgid "Hotplug ifdown" -msgstr "Hotplug ifdown" - -msgid "Hotplug ifup" -msgstr "Hotplug ifup" - -msgid "IPset" -msgstr "IPset" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "Initial state" -msgstr "初始状态" - -msgid "Interface" -msgstr "接口" - -msgid "Interface Status" -msgstr "接口状态" - -msgid "Interface down" -msgstr "接口离线" - -msgid "Interface up" -msgstr "接口在线" - -msgid "Interface will be deemed down after this many failed ping tests" -msgstr "当 Ping 失败次数达到这个数值后,接口会被认为离线" - -msgid "Interfaces" -msgstr "接口" - -msgid "Internet Protocol" -msgstr "互联网协议" - -msgid "Keep failure interval" -msgstr "保持故障检测间隔" - -msgid "Keep ping failure interval during failure state" -msgstr "在故障状态期间保持的 Ping 故障检测间隔" - -msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" -msgstr "最近 50 条 MWAN 系统日志,最新条目排在顶部:" - -msgid "Last resort" -msgstr "备用成员" - -msgid "Load Balancing" -msgstr "负载均衡" - -msgid "Loading" -msgstr "载入中" - -msgid "Local source interface" -msgstr "本地源接口" - -msgid "MWAN Config" -msgstr "MWAN 配置文件" - -msgid "MWAN Detailed Status" -msgstr "MWAN 详细状态" - -msgid "MWAN Interface Configuration" -msgstr "MWAN 接口配置" - -msgid "MWAN Interface Configuration - %s" -msgstr "MWAN 接口配置 - %s" - -msgid "MWAN Interface Diagnostics" -msgstr "MWAN 接口诊断" - -msgid "MWAN Interface Live Status" -msgstr "MWAN 接口实时状态" - -msgid "MWAN Interface Systemlog" -msgstr "MWAN 接口系统日志" - -msgid "MWAN Member Configuration" -msgstr "MWAN 成员配置" - -msgid "MWAN Member Configuration - %s" -msgstr "MWAN 成员配置 - %s" - -msgid "MWAN Policy Configuration" -msgstr "MWAN 策略配置" - -msgid "MWAN Policy Configuration - %s" -msgstr "MWAN 策略配置 - %s" - -msgid "MWAN Rule Configuration" -msgstr "MWAN 规则配置" - -msgid "MWAN Rule Configuration - %s" -msgstr "MWAN 规则配置 - %s" - -msgid "MWAN Service Control" -msgstr "MWAN 服务控制" - -msgid "" -"MWAN supports up to 250 physical and/or logical interfaces
MWAN " -"requires that all interfaces have a unique metric configured in /etc/config/" -"network
Names must match the interface name found in /etc/config/" -"network (see advanced tab)
Names may contain characters A-Z, a-z, 0-9, " -"_ and no spaces
Interfaces may not share the same name as configured " -"members, policies or rules" -msgstr "" -"MWAN 支持最多 250 个物理或逻辑接口。
MWAN 要求所有接口必须在 /etc/" -"config/network 中设定唯一的网关跃点。
名称必须与 /etc/config/network 中" -"的接口名称匹配。(可查看“高级”选项卡)
名称允许包括 A-Z、a-z、0-9、_ 但" -"是不能有空格。
接口不应该与成员、策略、规则中的任意一个设置项使用相同的" -"名称" - -msgid "" -"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " -"as a portrange (eg \"1024:2048\") without quotes" -msgstr "" -"可以输入一个或多个端口(例如“22”或者“80,443”)或者是一个端口范围(例" -"如“1024:2048”)不含引号" - -msgid "Member" -msgstr "成员" - -msgid "Member used" -msgstr "使用的成员" - -msgid "Members" -msgstr "成员" - -msgid "" -"Members are profiles attaching a metric and weight to an MWAN interface
Names may contain characters A-Z, a-z, 0-9, _ and no spaces
Members " -"may not share the same name as configured interfaces, policies or rules" -msgstr "" -"“成员”用来设置每一个 MWAN 接口的跃点数(即接口优先级)和所占比重。
名称" -"允许包括 A-Z、 a-、0-9、_ 但是不能有空格。
成员不应该与接口、策略、规则" -"中的任意一个设置项使用相同的名称" - -msgid "Members assigned" -msgstr "分配的成员" - -msgid "Metric" -msgstr "跃点数" - -msgid "" -"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" -"youtube.com/youtube\")" -msgstr "" -"匹配 IPset 规则列表名称。需要先配置 /etc/dnsmasq.conf 中的 IPset 规则(例" -"如:“ipset=/youtube.com/youtube”)" - -msgid "Network Config" -msgstr "网络配置文件" - -msgid "No" -msgstr "否" - -msgid "No MWAN interfaces found" -msgstr "没有找到 MWAN 接口" - -msgid "No MWAN systemlog history found" -msgstr "没有在系统日志中找到 MWAN 历史信息" - -msgid "No detailed status information available" -msgstr "没有状态详细信息可用" - -msgid "No diagnostic results returned" -msgstr "没有返回诊断结果" - -msgid "No protocol specified" -msgstr "未指定协议" - -msgid "Offline" -msgstr "离线" - -msgid "Online" -msgstr "在线" - -msgid "Online (tracking active)" -msgstr "在线(跟踪启用中)" - -msgid "Online (tracking off)" -msgstr "在线(跟踪已关闭)" - -msgid "Overview" -msgstr "概况" - -msgid "Ping count" -msgstr "Ping 计数" - -msgid "Ping default gateway" -msgstr "Ping 默认网关" - -msgid "Ping interval" -msgstr "Ping 间隔" - -msgid "Ping interval during failure detection" -msgstr "故障检测期间的 Ping 间隔" - -msgid "Ping interval during failure recovering" -msgstr "故障恢复期间的 Ping 间隔" - -msgid "Ping size" -msgstr "Ping 大小" - -msgid "Ping timeout" -msgstr "Ping 超时" - -msgid "Ping tracking IP" -msgstr "Ping 跟踪 IP" - -msgid "Policies" -msgstr "策略" - -msgid "" -"Policies are profiles grouping one or more members controlling how MWAN " -"distributes traffic
Member interfaces with lower metrics are used " -"first. Interfaces with the same metric load-balance
Load-balanced " -"member interfaces distribute more traffic out those with higher weights
Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be " -"15 characters or less
Policies may not share the same name as " -"configured interfaces, members or rules" -msgstr "" -"“策略”把成员进行分组,告诉 MWAN 如何分配“规则”中使用这一策略的流量
拥有" -"较低跃点数的成员将会被优先使用。拥有相同跃点数的成员把流量进行负载均衡。
进行负载均衡的成员之间拥有较高比重的成员将会被分配到更多流量。
名称允许" -"包括A-Z、a-z、0-9、_ 但是不能有空格。名称应该在 15 个字符以内
策略不应该" -"与接口、成员、规则中的任意一个设置项使用相同的名称" - -msgid "Policy" -msgstr "策略" - -msgid "Policy assigned" -msgstr "分配的策略" - -msgid "Protocol" -msgstr "通信协议" - -msgid "Recovery interval" -msgstr "故障恢复间隔" - -msgid "Restart MWAN" -msgstr "重启 MWAN" - -msgid "Rule" -msgstr "规则" - -msgid "Rules" -msgstr "规则" - -msgid "" -"Rules specify which traffic will use a particular MWAN policy based on IP " -"address, port or protocol
Rules are matched from top to bottom. Rules " -"below a matching rule are ignored. Traffic not matching any rule is routed " -"using the main routing table
Traffic destined for known (other than " -"default) networks is handled by the main routing table. Traffic matching a " -"rule, but all WAN interfaces for that policy are down will be blackholed
Names may contain characters A-Z, a-z, 0-9, _ and no spaces
Rules may " -"not share the same name as configured interfaces, members or policies" -msgstr "" -"“规则”基于 IP 地址、协议、端口把流量划分到指定的“策略”中。
规则按照从上" -"到下的顺序进行匹配。除了第一条能够匹配一次通信的规则以外,其它规则将被忽略。" -"不匹配任何规则的通信将会由系统默认路由表进行。
来自已知的网络的转发流量" -"由系统默认路由表接手,然后 MWAN 从中匹配出相应的流量并转移到 MWAN 自己的路由" -"表。但是所有被划分到一个无法使用的策略的流量将会无法正常进行路由。
名称" -"允许包括A-Z、a-z、0-9、_ 但是不能有空格。
规则不应该与接口、成员、策略中" -"的任意一个设置项使用相同的名称" - -msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set" -msgstr "单位为秒。接受的值:1-1000000。留空则使用默认值 600 秒" - -msgid "Source address" -msgstr "源地址" - -msgid "Source port" -msgstr "源端口" - -msgid "Start MWAN" -msgstr "启动 MWAN" - -msgid "Sticky" -msgstr "粘滞模式" - -msgid "Sticky timeout" -msgstr "粘滞超时" - -msgid "Stop MWAN" -msgstr "停止 MWAN" - -msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes" -msgstr "支持 CIDR 记法(例如:\"192.168.100.0/24\")不含引号" - -msgid "There are currently %d of 250 supported interfaces configured" -msgstr "当前已配置 %d 个接口,最大支持 250 个" - -msgid "" -"This displays the metric assigned to this interface in /etc/config/network" -msgstr "这里显示了这个接口在 /etc/config/network 中配置的跃点数" - -msgid "" -"This hostname or IP address will be pinged to determine if the link is up or " -"down. Leave blank to assume interface is always online" -msgstr "通过 ping 此主机或 IP 地址来确定链路是否在线。留空则认为接口始终在线" - -msgid "" -"This section allows you to modify the content of \"/etc/mwan3.user\".
The file is also preserved during sysupgrade.

Notes:
This " -"file is interpreted as a shell script.
The first line of the script " -"must be "#!/bin/sh" without quotes.
Lines beginning with # are " -"comments and are not executed.
Put your custom mwan3 action here, they " -"will
be executed with each netifd hotplug interface event
on " -"interfaces for which mwan3 is enabled.

There are three main " -"environment variables that are passed to this script.

$ACTION " -"Either \"ifup\" or \"ifdown\"
$INTERFACE Name of the interface which " -"went up or down (e.g. \"wan\" or \"wwan\")
$DEVICE Physical device name " -"which interface went up or down (e.g. \"eth0\" or \"wwan0\")

" -msgstr "" -"这里允许您修改“/etc/mwan3.user”的内容。
该文件在 sysupgrade 期间也会保" -"留。

注意:
该文件会作为 shell 脚本解释。
脚本的第一行必" -"须是"#!/bin/sh",不带引号。
以#开头的行是注释,不会执行。
" -"将您的自定义 mwan3 动作放在这里,他们将
在启用 mwan3 的接口上
在 " -"netifd hotplug 接口事件时执行。

有三个主要的环境变量传递给这个脚" -"本。

$ACTION “ifup”或“ifdown”
$INTERFACE 启动或停止的接口名" -"(例如“wan”或“wwan”)
$DEVICE 启动或停止接口的物理设备名(例" -"如“eth0”或“wwan0”)

" - -msgid "This section allows you to modify the contents of /etc/config/mwan3" -msgstr "这里允许您修改 /etc/config/mwan3 的内容" - -msgid "This section allows you to modify the contents of /etc/config/network" -msgstr "这里允许您修改 /etc/config/network 的内容" - -msgid "This section allows you to modify the contents of /etc/config/wireless" -msgstr "这里允许您修改 /etc/config/wireless 的内容" - -msgid "Tracking IP" -msgstr "跟踪的 IP" - -msgid "Tracking hostname or IP address" -msgstr "跟踪的主机或 IP 地址" - -msgid "Tracking method" -msgstr "跟踪方式" - -msgid "Tracking reliability" -msgstr "跟踪可靠性" - -msgid "Traffic Rules" -msgstr "流量规则" - -msgid "" -"Traffic from the same source IP address that previously matched this rule " -"within the sticky timeout period will use the same WAN interface" -msgstr "" -"来自相同源 IP 的流量,如果已经匹配过此规则并且在粘滞超时时间内,将会使用相同" -"的 WAN 接口" - -msgid "Troubleshooting" -msgstr "故障排除" - -msgid "Troubleshooting Data" -msgstr "故障排除数据" - -msgid "" -"Use the IP address of this interface as source IP address for traffic " -"initiated by the router itself" -msgstr "使用该接口的 IP 地址作为路由器本身发起的流量的源 IP 地址" - -msgid "View the contents of /etc/protocols for protocol descriptions" -msgstr "请查看 /etc/protocols 获取可选协议详情" - -msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!" -msgstr "警告:已配置 %d 个接口,超过最大值 250!" - -msgid "" -"WARNING: Some interfaces are configured incorrectly or not at all in /etc/" -"config/network!" -msgstr "警告:某些接口配置不正确或未配置到 /etc/config/network!" - -msgid "" -"WARNING: Some interfaces have a higher reliability requirement than there " -"are tracking IP addresses!" -msgstr "警告:某些接口的跟踪可靠性要求大于了跟踪 IP 地址总数!" - -msgid "" -"WARNING: Some interfaces have duplicate metrics configured in /etc/config/" -"network!" -msgstr "警告:某些接口在 /etc/config/network 中配置了相同的跃点数!" - -msgid "" -"WARNING: Some interfaces have no default route in the main routing table!" -msgstr "警告:某些接口在主路由表中没有默认路由!" - -msgid "" -"WARNING: Some interfaces have no metric configured in /etc/config/network!" -msgstr "警告:某些接口没有在 /etc/config/network 中配置跃点数!" - -msgid "" -"WARNING: Some policies have names exceeding the maximum of 15 characters!" -msgstr "警告:某些策略的名称超过了 15 个字符!" - -msgid "" -"WARNING: Some rules have a port configured with no or improper protocol " -"specified! Please configure a specific protocol!" -msgstr "" -"警告:某些规则指定了端口却没有配置或配置了不正确的协议,请重新指定协议!" - -msgid "" -"WARNING: This and other interfaces have duplicate metrics configured in /etc/" -"config/network!" -msgstr "警告:此接口和其他接口在 /etc/config/network 中配置了相同的跃点数!" - -msgid "" -"WARNING: This interface has a higher reliability requirement than there are " -"tracking IP addresses!" -msgstr "警告:此接口的跟踪可靠性要求大于了跟踪 IP 地址总数!" - -msgid "WARNING: This interface has no default route in the main routing table!" -msgstr "警告:此接口在主路由表中没有默认路由!" - -msgid "" -"WARNING: This interface has no metric configured in /etc/config/network!" -msgstr "警告:此接口没有在 /etc/config/network 中配置跃点数!" - -msgid "" -"WARNING: This interface is configured incorrectly or not at all in /etc/" -"config/network!" -msgstr "警告:此接口配置不正确或未配置到 /etc/config/network!" - -msgid "" -"WARNING: This policy's name is %d characters exceeding the maximum of 15!" -msgstr "警告:此策略的名称具有 %d 个字符,超过了 15 个字符!" - -msgid "" -"WARNING: This rule is incorrectly configured with no or improper protocol " -"specified! Please configure a specific protocol!" -msgstr "警告:此规则没有配置或配置了不正确的协议,请重新指定协议!" - -msgid "Waiting for MWAN to %s..." -msgstr "等待 MWAN %s..." - -msgid "Waiting for diagnostic results..." -msgstr "等待诊断结果..." - -msgid "Weight" -msgstr "比重" - -msgid "" -"When all policy members are offline use this behavior for matched traffic" -msgstr "当所有策略成员都无法使用的时候,对使用该策略的流量使用这个操作" - -msgid "Wireless Config" -msgstr "无线配置" - -msgid "Yes" -msgstr "是" - -msgid "always" -msgstr "总是" - -msgid "blackhole (drop)" -msgstr "黑洞(丢弃)" - -msgid "default (use main routing table)" -msgstr "默认(使用主路由表)" - -msgid "ifdown" -msgstr "ifdown" - -msgid "ifup" -msgstr "ifup" - -msgid "never" -msgstr "从不" - -msgid "restart" -msgstr "重启" - -msgid "start" -msgstr "启动" - -msgid "stop" -msgstr "停止" - -msgid "unreachable (reject)" -msgstr "不可达(拒绝)" - -#~ msgid "Restore default hotplug script" -#~ msgstr "恢复默认的 hotplug 脚本" - -#~ msgid "Restore..." -#~ msgstr "恢复..." - -#~ msgid "" -#~ "This section allows you to modify the contents of /etc/hotplug.d/iface/16-" -#~ "mwancustom
This is useful for running system commands and/or scripts " -#~ "based on interface ifup or ifdown hotplug events

Notes:
The first line of the script must be "#!/bin/sh" without " -#~ "quotes
Lines beginning with # are comments and are not executed

Available variables:
$ACTION is the hotplug event (ifup, " -#~ "ifdown)
$INTERFACE is the interface name (wan1, wan2, etc.)
" -#~ "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)" -#~ msgstr "" -#~ "这里允许您修改 /etc/hotplug.d/iface/16-mwancustom 的内容
这可以在接" -#~ "口 ifup 或 ifdown Hotplug 事件时运行系统命令或脚本

注意:
" -#~ "脚本的第一行必须是 "#!/bin/sh" 不含引号
以#开头的行是注释," -#~ "不会执行

可用变量:
$ACTION 是 Hotplug 事件(ifup, ifdown)" -#~ "
$INTERFACE 是接口名称(wan1、wan2 等)
$DEVICE 是连接到接口的设" -#~ "备名称 (eth0.1、eth1 等)" diff --git a/package/luci/applications/luci-app-mwan3/po/zh-tw/mwan3.po b/package/luci/applications/luci-app-mwan3/po/zh-tw/mwan3.po deleted file mode 100644 index 04711ac3d7..0000000000 --- a/package/luci/applications/luci-app-mwan3/po/zh-tw/mwan3.po +++ /dev/null @@ -1,630 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2017-10-28 16:58+0800\n" -"X-Generator: Gtranslator 2.91.7\n" - -msgid "%d hour" -msgstr "%d 小時" - -msgid "%d minute" -msgstr "%d 分鐘" - -msgid "%d minutes" -msgstr "%d 分鐘" - -msgid "%d second" -msgstr "%d 秒" - -msgid "%d seconds" -msgstr "%d 秒" - -msgid "" -"Acceptable values: 1-100. This many Tracking IP addresses must respond for " -"the link to be deemed up" -msgstr "" -"取值範圍:1-100。這個設定項指定了當多少個 IP 位址能夠連通時介面會被認為線上" - -msgid "Acceptable values: 1-1000. Defaults to 1 if not set" -msgstr "取值範圍:1-100。如果不填寫,預設值為 1" - -msgid "Advanced" -msgstr "高階" - -msgid "Check IP rules" -msgstr "檢查 IP 規則" - -msgid "Check routing table" -msgstr "檢查路由表" - -msgid "Collecting data..." -msgstr "正在收集資料..." - -msgid "Configuration" -msgstr "配置" - -msgid "Currently Configured Interfaces" -msgstr "當前配置的介面" - -msgid "Currently Configured Members" -msgstr "當前配置的成員" - -msgid "Currently Configured Policies" -msgstr "當前配置的策略" - -msgid "Destination address" -msgstr "目標位址" - -msgid "Destination port" -msgstr "目標埠" - -msgid "Detailed Status" -msgstr "詳細狀態" - -msgid "Diagnostic Results" -msgstr "診斷結果" - -msgid "Diagnostics" -msgstr "診斷" - -msgid "Disabled" -msgstr "已禁用" - -msgid "" -"Downed interface will be deemed up after this many successful ping tests" -msgstr "當 Ping 成功次數達到這個數值後,已經被認為離線的介面將會重新上線" - -msgid "Enabled" -msgstr "已啟用" - -msgid "Enter value in hex, starting with 0x" -msgstr "輸入十六進位制值,以 0x 開頭" - -msgid "Error collecting troubleshooting information" -msgstr "收集故障排除資訊時出錯" - -msgid "Errors" -msgstr "錯誤" - -msgid "Expect interface state on up event" -msgstr "在 up 事件發生時的預期介面狀態" - -msgid "Failure interval" -msgstr "故障檢測間隔" - -msgid "Firewall mask" -msgstr "防火牆掩碼" - -msgid "Flush conntrack table" -msgstr "重新整理連線跟蹤表" - -msgid "Flush global firewall conntrack table on interface events" -msgstr "在介面事件觸發時重新整理全域性防火牆連線跟蹤表" - -msgid "Globals" -msgstr "全域性" - -msgid "Globals mwan3 options" -msgstr "全域性 mwan3 選項" - -msgid "Hotplug Script" -msgstr "Hotplug 指令碼" - -msgid "Hotplug ifdown" -msgstr "Hotplug ifdown" - -msgid "Hotplug ifup" -msgstr "Hotplug ifup" - -msgid "IPset" -msgstr "IPset" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv6" -msgstr "IPv6" - -msgid "Initial state" -msgstr "初始狀態" - -msgid "Interface" -msgstr "介面" - -msgid "Interface Status" -msgstr "介面狀態" - -msgid "Interface down" -msgstr "介面離線" - -msgid "Interface up" -msgstr "介面線上" - -msgid "Interface will be deemed down after this many failed ping tests" -msgstr "當 Ping 失敗次數達到這個數值後,介面會被認為離線" - -msgid "Interfaces" -msgstr "介面" - -msgid "Internet Protocol" -msgstr "網際網路協議" - -msgid "Keep failure interval" -msgstr "保持故障檢測間隔" - -msgid "Keep ping failure interval during failure state" -msgstr "在故障狀態期間保持的 Ping 故障檢測間隔" - -msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :" -msgstr "最近 50 條 MWAN 系統日誌,最新條目排在頂部:" - -msgid "Last resort" -msgstr "備用成員" - -msgid "Load Balancing" -msgstr "負載均衡" - -msgid "Loading" -msgstr "載入中" - -msgid "Local source interface" -msgstr "本地源介面" - -msgid "MWAN Config" -msgstr "MWAN 配置檔案" - -msgid "MWAN Detailed Status" -msgstr "MWAN 詳細狀態" - -msgid "MWAN Interface Configuration" -msgstr "MWAN 介面配置" - -msgid "MWAN Interface Configuration - %s" -msgstr "MWAN 介面配置 - %s" - -msgid "MWAN Interface Diagnostics" -msgstr "MWAN 介面診斷" - -msgid "MWAN Interface Live Status" -msgstr "MWAN 介面實時狀態" - -msgid "MWAN Interface Systemlog" -msgstr "MWAN 介面系統日誌" - -msgid "MWAN Member Configuration" -msgstr "MWAN 成員配置" - -msgid "MWAN Member Configuration - %s" -msgstr "MWAN 成員配置 - %s" - -msgid "MWAN Policy Configuration" -msgstr "MWAN 策略配置" - -msgid "MWAN Policy Configuration - %s" -msgstr "MWAN 策略配置 - %s" - -msgid "MWAN Rule Configuration" -msgstr "MWAN 規則配置" - -msgid "MWAN Rule Configuration - %s" -msgstr "MWAN 規則配置 - %s" - -msgid "MWAN Service Control" -msgstr "MWAN 服務控制" - -msgid "" -"MWAN supports up to 250 physical and/or logical interfaces
MWAN " -"requires that all interfaces have a unique metric configured in /etc/config/" -"network
Names must match the interface name found in /etc/config/" -"network (see advanced tab)
Names may contain characters A-Z, a-z, 0-9, " -"_ and no spaces
Interfaces may not share the same name as configured " -"members, policies or rules" -msgstr "" -"MWAN 支援最多 250 個物理或邏輯介面。
MWAN 要求所有介面必須在 /etc/" -"config/network 中設定唯一的閘道器躍點。
名稱必須與 /etc/config/network " -"中的介面名稱匹配。(可檢視“高階”選項卡)
名稱允許包括 A-Z、a-z、0-9、_ " -"但是不能有空格。
介面不應該與成員、策略、規則中的任意一個設定項使用相同" -"的名稱" - -msgid "" -"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or " -"as a portrange (eg \"1024:2048\") without quotes" -msgstr "" -"可以輸入一個或多個埠(例如“22”或者“80,443”)或者是一個埠範圍(例" -"如“1024:2048”)不含引號" - -msgid "Member" -msgstr "成員" - -msgid "Member used" -msgstr "使用的成員" - -msgid "Members" -msgstr "成員" - -msgid "" -"Members are profiles attaching a metric and weight to an MWAN interface
Names may contain characters A-Z, a-z, 0-9, _ and no spaces
Members " -"may not share the same name as configured interfaces, policies or rules" -msgstr "" -"“成員”用來設定每一個 MWAN 介面的躍點數(即介面優先順序)和所佔比重。
名" -"稱允許包括 A-Z、 a-、0-9、_ 但是不能有空格。
成員不應該與介面、策略、規" -"則中的任意一個設定項使用相同的名稱" - -msgid "Members assigned" -msgstr "分配的成員" - -msgid "Metric" -msgstr "躍點數" - -msgid "" -"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" -"youtube.com/youtube\")" -msgstr "" -"匹配 IPset 規則列表名稱。需要先配置 /etc/dnsmasq.conf 中的 IPset 規則(例" -"如:“ipset=/youtube.com/youtube”)" - -msgid "Network Config" -msgstr "網路配置檔案" - -msgid "No" -msgstr "否" - -msgid "No MWAN interfaces found" -msgstr "沒有找到 MWAN 介面" - -msgid "No MWAN systemlog history found" -msgstr "沒有在系統日誌中找到 MWAN 歷史資訊" - -msgid "No detailed status information available" -msgstr "沒有狀態詳細資訊可用" - -msgid "No diagnostic results returned" -msgstr "沒有返回診斷結果" - -msgid "No protocol specified" -msgstr "未指定協議" - -msgid "Offline" -msgstr "離線" - -msgid "Online" -msgstr "線上" - -msgid "Online (tracking active)" -msgstr "線上(跟蹤啟用中)" - -msgid "Online (tracking off)" -msgstr "線上(跟蹤已關閉)" - -msgid "Overview" -msgstr "概況" - -msgid "Ping count" -msgstr "Ping 計數" - -msgid "Ping default gateway" -msgstr "Ping 預設閘道器" - -msgid "Ping interval" -msgstr "Ping 間隔" - -msgid "Ping interval during failure detection" -msgstr "故障檢測期間的 Ping 間隔" - -msgid "Ping interval during failure recovering" -msgstr "故障恢復期間的 Ping 間隔" - -msgid "Ping size" -msgstr "Ping 大小" - -msgid "Ping timeout" -msgstr "Ping 超時" - -msgid "Ping tracking IP" -msgstr "Ping 跟蹤 IP" - -msgid "Policies" -msgstr "策略" - -msgid "" -"Policies are profiles grouping one or more members controlling how MWAN " -"distributes traffic
Member interfaces with lower metrics are used " -"first. Interfaces with the same metric load-balance
Load-balanced " -"member interfaces distribute more traffic out those with higher weights
Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be " -"15 characters or less
Policies may not share the same name as " -"configured interfaces, members or rules" -msgstr "" -"“策略”把成員進行分組,告訴 MWAN 如何分配“規則”中使用這一策略的流量
擁有" -"較低躍點數的成員將會被優先使用。擁有相同躍點數的成員把流量進行負載均衡。
進行負載均衡的成員之間擁有較高比重的成員將會被分配到更多流量。
名稱允許" -"包括A-Z、a-z、0-9、_ 但是不能有空格。名稱應該在 15 個字元以內
策略不應該" -"與介面、成員、規則中的任意一個設定項使用相同的名稱" - -msgid "Policy" -msgstr "策略" - -msgid "Policy assigned" -msgstr "分配的策略" - -msgid "Protocol" -msgstr "通訊協議" - -msgid "Recovery interval" -msgstr "故障恢復間隔" - -msgid "Restart MWAN" -msgstr "重啟 MWAN" - -msgid "Rule" -msgstr "規則" - -msgid "Rules" -msgstr "規則" - -msgid "" -"Rules specify which traffic will use a particular MWAN policy based on IP " -"address, port or protocol
Rules are matched from top to bottom. Rules " -"below a matching rule are ignored. Traffic not matching any rule is routed " -"using the main routing table
Traffic destined for known (other than " -"default) networks is handled by the main routing table. Traffic matching a " -"rule, but all WAN interfaces for that policy are down will be blackholed
Names may contain characters A-Z, a-z, 0-9, _ and no spaces
Rules may " -"not share the same name as configured interfaces, members or policies" -msgstr "" -"“規則”基於 IP 位址、協議、埠把流量劃分到指定的“策略”中。
規則按照從上到" -"下的順序進行匹配。除了第一條能夠匹配一次通訊的規則以外,其它規則將被忽略。不" -"匹配任何規則的通訊將會由系統預設路由表進行。
來自已知的網路的轉發流量由" -"系統預設路由表接手,然後 MWAN 從中匹配出相應的流量並轉移到 MWAN 自己的路由" -"表。但是所有被劃分到一個無法使用的策略的流量將會無法正常進行路由。
名稱" -"允許包括A-Z、a-z、0-9、_ 但是不能有空格。
規則不應該與介面、成員、策略中" -"的任意一個設定項使用相同的名稱" - -msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set" -msgstr "單位為秒。接受的值:1-1000000。留空則使用預設值 600 秒" - -msgid "Source address" -msgstr "源位址" - -msgid "Source port" -msgstr "源埠" - -msgid "Start MWAN" -msgstr "啟動 MWAN" - -msgid "Sticky" -msgstr "粘滯模式" - -msgid "Sticky timeout" -msgstr "粘滯超時" - -msgid "Stop MWAN" -msgstr "停止 MWAN" - -msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes" -msgstr "支援 CIDR 記法(例如:\"192.168.100.0/24\")不含引號" - -msgid "There are currently %d of 250 supported interfaces configured" -msgstr "當前已配置 %d 個介面,最大支援 250 個" - -msgid "" -"This displays the metric assigned to this interface in /etc/config/network" -msgstr "這裡顯示了這個介面在 /etc/config/network 中配置的躍點數" - -msgid "" -"This hostname or IP address will be pinged to determine if the link is up or " -"down. Leave blank to assume interface is always online" -msgstr "通過 ping 此主機或 IP 位址來確定鏈路是否線上。留空則認為介面始終線上" - -msgid "" -"This section allows you to modify the content of \"/etc/mwan3.user\".
The file is also preserved during sysupgrade.

Notes:
This " -"file is interpreted as a shell script.
The first line of the script " -"must be "#!/bin/sh" without quotes.
Lines beginning with # are " -"comments and are not executed.
Put your custom mwan3 action here, they " -"will
be executed with each netifd hotplug interface event
on " -"interfaces for which mwan3 is enabled.

There are three main " -"environment variables that are passed to this script.

$ACTION " -"Either \"ifup\" or \"ifdown\"
$INTERFACE Name of the interface which " -"went up or down (e.g. \"wan\" or \"wwan\")
$DEVICE Physical device name " -"which interface went up or down (e.g. \"eth0\" or \"wwan0\")

" -msgstr "" -"這裡允許您修改“/etc/mwan3.user”的內容。
該檔案在 sysupgrade 期間也會保" -"留。

注意:
該檔案會作為 shell 指令碼解釋。
指令碼的第一" -"行必須是"#!/bin/sh",不帶引號。
以#開頭的行是註釋,不會執行。" -"
將您的自定義 mwan3 動作放在這裡,他們將
在啟用 mwan3 的介面上
在 netifd hotplug 介面事件時執行。

有三個主要的環境變數傳遞給這個" -"腳本。

$ACTION “ifup”或“ifdown”
$INTERFACE 啟動或停止的介面名" -"(例如“wan”或“wwan”)
$DEVICE 啟動或停止介面的物理裝置名(例" -"如“eth0”或“wwan0”)

" - -msgid "This section allows you to modify the contents of /etc/config/mwan3" -msgstr "這裡允許您修改 /etc/config/mwan3 的內容" - -msgid "This section allows you to modify the contents of /etc/config/network" -msgstr "這裡允許您修改 /etc/config/network 的內容" - -msgid "This section allows you to modify the contents of /etc/config/wireless" -msgstr "這裡允許您修改 /etc/config/wireless 的內容" - -msgid "Tracking IP" -msgstr "跟蹤的 IP" - -msgid "Tracking hostname or IP address" -msgstr "跟蹤的主機或 IP 位址" - -msgid "Tracking method" -msgstr "跟蹤方式" - -msgid "Tracking reliability" -msgstr "跟蹤可靠性" - -msgid "Traffic Rules" -msgstr "流量規則" - -msgid "" -"Traffic from the same source IP address that previously matched this rule " -"within the sticky timeout period will use the same WAN interface" -msgstr "" -"來自相同源 IP 的流量,如果已經匹配過此規則並且在粘滯超時時間內,將會使用相同" -"的 WAN 介面" - -msgid "Troubleshooting" -msgstr "故障排除" - -msgid "Troubleshooting Data" -msgstr "故障排除資料" - -msgid "" -"Use the IP address of this interface as source IP address for traffic " -"initiated by the router itself" -msgstr "使用該介面的 IP 位址作為路由器本身發起的流量的源 IP 位址" - -msgid "View the contents of /etc/protocols for protocol descriptions" -msgstr "請檢視 /etc/protocols 獲取可選協議詳情" - -msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!" -msgstr "警告:已配置 %d 個介面,超過最大值 250!" - -msgid "" -"WARNING: Some interfaces are configured incorrectly or not at all in /etc/" -"config/network!" -msgstr "警告:某些介面配置不正確或未配置到 /etc/config/network!" - -msgid "" -"WARNING: Some interfaces have a higher reliability requirement than there " -"are tracking IP addresses!" -msgstr "警告:某些介面的跟蹤可靠性要求大於了跟蹤 IP 位址總數!" - -msgid "" -"WARNING: Some interfaces have duplicate metrics configured in /etc/config/" -"network!" -msgstr "警告:某些介面在 /etc/config/network 中配置了相同的躍點數!" - -msgid "" -"WARNING: Some interfaces have no default route in the main routing table!" -msgstr "警告:某些介面在主路由表中沒有預設路由!" - -msgid "" -"WARNING: Some interfaces have no metric configured in /etc/config/network!" -msgstr "警告:某些介面沒有在 /etc/config/network 中配置躍點數!" - -msgid "" -"WARNING: Some policies have names exceeding the maximum of 15 characters!" -msgstr "警告:某些策略的名稱超過了 15 個字元!" - -msgid "" -"WARNING: Some rules have a port configured with no or improper protocol " -"specified! Please configure a specific protocol!" -msgstr "警告:某些規則指定了埠卻沒有配置或配置了不正確的協議,請重新指定協議!" - -msgid "" -"WARNING: This and other interfaces have duplicate metrics configured in /etc/" -"config/network!" -msgstr "警告:此介面和其他介面在 /etc/config/network 中配置了相同的躍點數!" - -msgid "" -"WARNING: This interface has a higher reliability requirement than there are " -"tracking IP addresses!" -msgstr "警告:此介面的跟蹤可靠性要求大於了跟蹤 IP 位址總數!" - -msgid "WARNING: This interface has no default route in the main routing table!" -msgstr "警告:此介面在主路由表中沒有預設路由!" - -msgid "" -"WARNING: This interface has no metric configured in /etc/config/network!" -msgstr "警告:此介面沒有在 /etc/config/network 中配置躍點數!" - -msgid "" -"WARNING: This interface is configured incorrectly or not at all in /etc/" -"config/network!" -msgstr "警告:此介面配置不正確或未配置到 /etc/config/network!" - -msgid "" -"WARNING: This policy's name is %d characters exceeding the maximum of 15!" -msgstr "警告:此策略的名稱具有 %d 個字元,超過了 15 個字元!" - -msgid "" -"WARNING: This rule is incorrectly configured with no or improper protocol " -"specified! Please configure a specific protocol!" -msgstr "警告:此規則沒有配置或配置了不正確的協議,請重新指定協議!" - -msgid "Waiting for MWAN to %s..." -msgstr "等待 MWAN %s..." - -msgid "Waiting for diagnostic results..." -msgstr "等待診斷結果..." - -msgid "Weight" -msgstr "比重" - -msgid "" -"When all policy members are offline use this behavior for matched traffic" -msgstr "當所有策略成員都無法使用的時候,對使用該策略的流量使用這個操作" - -msgid "Wireless Config" -msgstr "無線配置" - -msgid "Yes" -msgstr "是" - -msgid "always" -msgstr "總是" - -msgid "blackhole (drop)" -msgstr "黑洞(丟棄)" - -msgid "default (use main routing table)" -msgstr "預設(使用主路由表)" - -msgid "ifdown" -msgstr "ifdown" - -msgid "ifup" -msgstr "ifup" - -msgid "never" -msgstr "從不" - -msgid "restart" -msgstr "重啟" - -msgid "start" -msgstr "啟動" - -msgid "stop" -msgstr "停止" - -msgid "unreachable (reject)" -msgstr "不可達(拒絕)" - -#~ msgid "Restore default hotplug script" -#~ msgstr "恢復預設的 hotplug 指令碼" - -#~ msgid "Restore..." -#~ msgstr "恢復..." - -#~ msgid "" -#~ "This section allows you to modify the contents of /etc/hotplug.d/iface/16-" -#~ "mwancustom
This is useful for running system commands and/or scripts " -#~ "based on interface ifup or ifdown hotplug events

Notes:
The first line of the script must be "#!/bin/sh" without " -#~ "quotes
Lines beginning with # are comments and are not executed

Available variables:
$ACTION is the hotplug event (ifup, " -#~ "ifdown)
$INTERFACE is the interface name (wan1, wan2, etc.)
" -#~ "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)" -#~ msgstr "" -#~ "這裡允許您修改 /etc/hotplug.d/iface/16-mwancustom 的內容
這可以在接" -#~ "口 ifup 或 ifdown Hotplug 事件時執行系統命令或指令碼

注意:
指令碼的第一行必須是 "#!/bin/sh" 不含引號
以#開頭的行是註" -#~ "釋,不會執行

可用變數:
$ACTION 是 Hotplug 事件(ifup, " -#~ "ifdown)
$INTERFACE 是介面名稱(wan1、wan2 等)
$DEVICE 是連線到" -#~ "介面的設備名稱 (eth0.1、eth1 等)" diff --git a/package/luci/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak b/package/luci/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak deleted file mode 100755 index 6e2875e3de..0000000000 --- a/package/luci/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -# to enable this script uncomment the case loop at the bottom -# to report mwan status on interface hotplug ifup/ifdown events modify the lines in the send_alert function - -send_alert() -{ - # variable "$1" stores the MWAN status information - # insert your code here to send the contents of "$1" - echo "$1" -} - -gather_event_info() -{ - # create event information message - local EVENT_INFO="Interface [ "$INTERFACE" ($DEVICE) ] on router [ "$(uci -p /var/state get system.@system[0].hostname)" ] has triggered a hotplug [ "$ACTION" ] event on "$(date +"%a %b %d %Y %T %Z")"" - - # get current interface, policy and rule status - local CURRENT_STATUS="$(/usr/sbin/mwan3 status)" - - # get last 50 MWAN systemlog messages - local MWAN_LOG="$(echo -e "Last 50 MWAN systemlog entries. Newest entries sorted at the top:\n$(logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x')")" - - # pass event info to send_alert function - send_alert "$(echo -e "$EVENT_INFO\n\n$CURRENT_STATUS\n\n$MWAN_LOG")" -} - -#case "$ACTION" in -# ifup) -# gather_event_info -# ;; -# -# ifdown) -# gather_event_info -# ;; -#esac - -exit 0 diff --git a/package/luci/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3 b/package/luci/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3 deleted file mode 100755 index 50c65ad678..0000000000 --- a/package/luci/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3 +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -# replace existing mwan ucitrack entry -uci -q batch <<-EOF >/dev/null - del ucitrack.@mwan3[-1] - add ucitrack mwan3 - set ucitrack.@mwan3[-1].exec="/usr/sbin/mwan3 restart" - commit ucitrack -EOF - -uci -q get mwan3.globals >/dev/null || { - uci -q add mwan3 globals >/dev/null - uci -q rename mwan3.@globals[-1]="globals" >/dev/null - uci -q set mwan3.globals.local_source="none" >/dev/null - uci commit mwan3 -} - -# remove LuCI cache -rm -rf /tmp/luci-indexcache /tmp/luci-modulecache - -exit 0 diff --git a/package/luci/applications/luci-app-nlbwmon/Makefile b/package/luci/applications/luci-app-nlbwmon/Makefile deleted file mode 100644 index a00177f2ca..0000000000 --- a/package/luci/applications/luci-app-nlbwmon/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Netlink based bandwidth accounting -LUCI_DEPENDS:=+nlbwmon - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-nlbwmon/htdocs/luci-static/resources/nlbw.chart.min.js b/package/luci/applications/luci-app-nlbwmon/htdocs/luci-static/resources/nlbw.chart.min.js deleted file mode 100644 index 34e3026825..0000000000 --- a/package/luci/applications/luci-app-nlbwmon/htdocs/luci-static/resources/nlbw.chart.min.js +++ /dev/null @@ -1,68 +0,0 @@ -(function(){var p=this,l=p.Chart,e=function(a){this.canvas=a.canvas;this.ctx=a;var b=function(a,b){return a["offset"+b]?a["offset"+b]:document.defaultView.getComputedStyle(a).getPropertyValue(b)};this.width=b(a.canvas,"Width")||a.canvas.width;this.height=b(a.canvas,"Height")||a.canvas.height;this.width=a.canvas.width;this.height=a.canvas.height;this.aspectRatio=this.width/this.height;d.retinaScale(this);return this};e.defaults={global:{animation:!0,animationSteps:60,animationEasing:"easeOutQuart", -showScale:!0,scaleOverride:!1,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:!0,scaleLabel:"<%=value%>",scaleIntegersOnly:!0,scaleBeginAtZero:!1,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:!1,maintainAspectRatio:!0,showTooltips:!0,customTooltips:!1,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)", -tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipTitleTemplate:"<%= label%>",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= value %>", -multiTooltipKeyBackground:"#fff",segmentColorDefault:"#A6CEE3 #1F78B4 #B2DF8A #33A02C #FB9A99 #E31A1C #FDBF6F #FF7F00 #CAB2D6 #6A3D9A #B4B482 #B15928".split(" "),segmentHighlightColorDefaults:"#CEF6FF #47A0DC #DAFFB2 #5BC854 #FFC2C1 #FF4244 #FFE797 #FFA728 #F2DAFE #9265C2 #DCDCAA #D98150".split(" "),onAnimationProgress:function(){},onAnimationComplete:function(){}}};e.types={};var d=e.helpers={},k=d.each=function(a,b,c){var f=Array.prototype.slice.call(arguments,3);if(a)if(a.length===+a.length){var d; -for(d=0;db)return b}else if(u(c)&&aa.indexOf("e-"))return a.split(".")[1].length;if(0>a.indexOf("."))return parseInt(a.split("e-")[1]);a=a.split(".")[1].split("e-");return a[0].length+parseInt(a[1])}return 0},B=d.radians=function(a){return Math.PI/180*a};d.getAngleFromPoint=function(a,b){var c=b.x-a.x,f=b.y-a.y,d=Math.sqrt(c*c+f*f),m=2*Math.PI+Math.atan2(f,c);0>c&&0>f&&(m+= -2*Math.PI);return{angle:m,distance:d}};var F=d.aliasPixel=function(a){return 0===a%2?0:.5};d.splineCurve=function(a,b,c,f){var d=Math.sqrt(Math.pow(b.x-a.x,2)+Math.pow(b.y-a.y,2)),m=Math.sqrt(Math.pow(c.x-b.x,2)+Math.pow(c.y-b.y,2)),g=f*d/(d+m);f=f*m/(d+m);return{inner:{x:b.x-g*(c.x-a.x),y:b.y-g*(c.y-a.y)},outer:{x:b.x+f*(c.x-a.x),y:b.y+f*(c.y-a.y)}}};var N=d.calculateOrderOfMagnitude=function(a){return Math.floor(Math.log(a)/Math.LN10)};d.calculateScaleRange=function(a,b,c,f,d){b=Math.floor(b/(1.5* -c));c=2>=b;var m=[];k(a,function(a){null==a||m.push(a)});var g=w(m),e=y(m);e===g&&(e+=.5,.5<=g&&!f?g-=.5:e+=.5);a=N(Math.abs(e-g));f=f?0:Math.floor(g/(1*Math.pow(10,a)))*Math.pow(10,a);for(var e=Math.ceil(e/(1*Math.pow(10,a)))*Math.pow(10,a)-f,g=Math.pow(10,a),n=Math.round(e/g);(n>b||2*nb)g*=2,n=Math.round(e/g),0!==n%1&&(c=!0);else if(d&&0<=a)if(0===g/2%1)g/=2,n=Math.round(e/g);else break;else g/=2,n=Math.round(e/g);c&&(n=2,g=e/n);return{steps:n,stepValue:g,min:f,max:f+n*g}};var t=d.template= -function(a,b){if(a instanceof Function)return a(b);var c={},c=/\W/.test(a)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):c[a]=c[a];return b?c(b):c};d.generateLabels=function(a,b,c,f){var d=Array(b);a&&k(d,function(b,e){d[e]=t(a,{value:c+ -f*(e+1)})});return d};var x=d.easingEffects={linear:function(a){return a},easeInQuad:function(a){return a*a},easeOutQuad:function(a){return-1*a*(a-2)},easeInOutQuad:function(a){return 1>(a/=.5)?.5*a*a:-.5*(--a*(a-2)-1)},easeInCubic:function(a){return a*a*a},easeOutCubic:function(a){return 1*((a=a/1-1)*a*a+1)},easeInOutCubic:function(a){return 1>(a/=.5)?.5*a*a*a:.5*((a-=2)*a*a+2)},easeInQuart:function(a){return a*a*a*a},easeOutQuart:function(a){return-1*((a=a/1-1)*a*a*a-1)},easeInOutQuart:function(a){return 1> -(a/=.5)?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)},easeInQuint:function(a){return 1*(a/=1)*a*a*a*a},easeOutQuint:function(a){return 1*((a=a/1-1)*a*a*a*a+1)},easeInOutQuint:function(a){return 1>(a/=.5)?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)},easeInSine:function(a){return-1*Math.cos(a/1*(Math.PI/2))+1},easeOutSine:function(a){return 1*Math.sin(a/1*(Math.PI/2))},easeInOutSine:function(a){return-.5*(Math.cos(Math.PI*a/1)-1)},easeInExpo:function(a){return 0===a?1:1*Math.pow(2,10*(a/1-1))},easeOutExpo:function(a){return 1=== -a?1:1*(-Math.pow(2,-10*a/1)+1)},easeInOutExpo:function(a){return 0===a?0:1===a?1:1>(a/=.5)?.5*Math.pow(2,10*(a-1)):.5*(-Math.pow(2,-10*--a)+2)},easeInCirc:function(a){return 1<=a?a:-1*(Math.sqrt(1-(a/=1)*a)-1)},easeOutCirc:function(a){return 1*Math.sqrt(1-(a=a/1-1)*a)},easeInOutCirc:function(a){return 1>(a/=.5)?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)},easeInElastic:function(a){var b=1.70158,c=0,f=1;if(0===a)return 0;if(1==(a/=1))return 1;c||(c=.3);fa?-.5*f*Math.pow(2,10*--a)*Math.sin(2* -(1*a-b)*Math.PI/c):f*Math.pow(2,-10*--a)*Math.sin(2*(1*a-b)*Math.PI/c)*.5+1},easeInBack:function(a){return 1*(a/=1)*a*(2.70158*a-1.70158)},easeOutBack:function(a){return 1*((a=a/1-1)*a*(2.70158*a+1.70158)+1)},easeInOutBack:function(a){var b=1.70158;return 1>(a/=.5)?.5*a*a*(((b*=1.525)+1)*a-b):.5*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},easeInBounce:function(a){return 1-x.easeOutBounce(1-a)},easeOutBounce:function(a){return(a/=1)<1/2.75?7.5625*a*a:a<2/2.75?1*(7.5625*(a-=1.5/2.75)*a+.75):a<2.5/2.75?1*(7.5625* -(a-=2.25/2.75)*a+.9375):1*(7.5625*(a-=2.625/2.75)*a+.984375)},easeInOutBounce:function(a){return.5>a?.5*x.easeInBounce(2*a):.5*x.easeOutBounce(2*a-1)+.5}},G=d.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,1E3/60)}}();d.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame|| -window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(a){return window.clearTimeout(a,1E3/60)}}();d.animationLoop=function(a,b,c,f,d,e){var g=0,k=x[c]||x.linear,n=function(){g++;var c=g/b,h=k(c);a.call(e,h,c,g);f.call(e,h,c);gf?b:f});return f},H=d.drawRoundedRectangle=function(a,b,c,f,d,e){a.beginPath();a.moveTo(b+e,c);a.lineTo(b+f-e,c);a.quadraticCurveTo(b+f,c,b+f,c+e);a.lineTo(b+f,c+d-e);a.quadraticCurveTo(b+f,c+d,b+f-e,c+d);a.lineTo(b+e,c+d);a.quadraticCurveTo(b,c+d,b,c+d-e);a.lineTo(b,c+e);a.quadraticCurveTo(b,c,b+e,c);a.closePath()};e.instances={};e.Type=function(a,b,c){this.options=b;this.chart=c;this.id=K();e.instances[this.id]=this;b.responsive&&this.resize();this.initialize.call(this,a)};r(e.Type.prototype, -{initialize:function(){return this},clear:function(){U(this.chart);return this},stop:function(){e.animationService.cancelAnimation(this);return this},resize:function(a){this.stop();var b=this.chart.canvas,c=R(this.chart.canvas),f=this.options.maintainAspectRatio?c/this.chart.aspectRatio:S(this.chart.canvas);b.width=this.chart.width=c;b.height=this.chart.height=f;T(this.chart);"function"===typeof a&&a.apply(this,Array.prototype.slice.call(arguments,1));return this},reflow:A,render:function(a){a&&this.reflow(); -this.options.animation&&!a?(a=new e.Animation,a.numSteps=this.options.animationSteps,a.easing=this.options.animationEasing,a.render=function(a,c){var f=c.currentStep/c.numSteps,e=(0,d.easingEffects[c.easing])(f);a.draw(e,f,c.currentStep)},a.onAnimationProgress=this.options.onAnimationProgress,a.onAnimationComplete=this.options.onAnimationComplete,e.animationService.addAnimation(this,a)):(this.draw(),this.options.onAnimationComplete.call(this));return this},generateLegend:function(){return t(this.options.legendTemplate, -this)},destroy:function(){this.clear();Q(this,this.events);var a=this.chart.canvas;a.width=this.chart.width;a.height=this.chart.height;a.style.removeProperty?(a.style.removeProperty("width"),a.style.removeProperty("height")):(a.style.removeAttribute("width"),a.style.removeAttribute("height"));delete e.instances[this.id]},showTooltip:function(a,b){"undefined"===typeof this.activeElements&&(this.activeElements=[]);if(function(a){var b=!1;if(a.length!==this.activeElements.length)return b=!0;k(a,function(a, -c){a!==this.activeElements[c]&&(b=!0)},this);return b}.call(this,a)||b){this.activeElements=a;this.draw();this.options.customTooltips&&this.options.customTooltips(!1);if(0this.chart.width/2?h:a,y:(l+k)/2}}.call(this,f);(new e.MultiTooltip({x:c.x,y:c.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor, -fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:m,legendColors:g,legendColorBackground:this.options.multiTooltipKeyBackground,title:t(this.options.tooltipTitleTemplate,a[0]),chart:this.chart, -ctx:this.chart.ctx,custom:this.options.customTooltips})).draw()}else k(a,function(a){var b=a.tooltipPosition();(new e.Tooltip({x:Math.round(b.x),y:Math.round(b.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius, -text:t(this.options.tooltipTemplate,a),chart:this.chart,custom:this.options.customTooltips})).draw()},this);return this}},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}});e.Type.extend=function(a){var b=this,c=function(){return b.apply(this,arguments)};c.prototype=h(b.prototype);r(c.prototype,a);c.extend=e.Type.extend;if(a.name||b.prototype.name){var f=a.name||b.prototype.name,d=e.defaults[b.prototype.name]?h(e.defaults[b.prototype.name]):{};e.defaults[f]= -r(d,a.defaults);e.types[f]=c;e.prototype[f]=function(a,b){var d=I(e.defaults.global,e.defaults[f],b||{});return new c(a,d,this)}}else L("Name not provided for this chart, so it hasn't been registered");return b};e.Element=function(a){r(this,a);this.initialize.apply(this,arguments);this.save()};r(e.Element.prototype,{initialize:function(){},restore:function(a){a?k(a,function(a){this[a]=this._saved[a]},this):r(this,this._saved);return this},save:function(){this._saved=h(this);delete this._saved._saved; -return this},update:function(a){k(a,function(a,c){this._saved[c]=this[c];this[c]=a},this);return this},transition:function(a,b){k(a,function(a,f){this[f]=(a-this._saved[f])*b+this._saved[f]},this);return this},tooltipPosition:function(){return{x:this.x,y:this.y}},hasValue:function(){return u(this.value)}});e.Element.extend=D;e.Point=e.Element.extend({display:!0,inRange:function(a,b){return Math.pow(a-this.x,2)+Math.pow(b-this.y,2)=this.innerRadius&&c.distance<=this.outerRadius;return(m=e:f>=e&&f<=m)&&c},tooltipPosition:function(){var a= -this.startAngle+(this.endAngle-this.startAngle)/2,b=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(a)*b,y:this.y+Math.sin(a)*b}},draw:function(a){a=this.ctx;a.beginPath();a.arc(this.x,this.y,0>this.outerRadius?0:this.outerRadius,this.startAngle,this.endAngle);a.arc(this.x,this.y,0>this.innerRadius?0:this.innerRadius,this.endAngle,this.startAngle,!0);a.closePath();a.strokeStyle=this.strokeColor;a.lineWidth=this.strokeWidth;a.fillStyle=this.fillColor;a.fill();a.lineJoin= -"bevel";this.showStroke&&a.stroke()}});e.Rectangle=e.Element.extend({draw:function(){var a=this.ctx,b=this.width/2,c=this.x-b,b=this.x+b,f=this.base-(this.base-this.y),d=this.strokeWidth/2;this.showStroke&&(c+=d,b-=d,f+=d);a.beginPath();a.fillStyle=this.fillColor;a.strokeStyle=this.strokeColor;a.lineWidth=this.strokeWidth;a.moveTo(c,this.base);a.lineTo(c,f);a.lineTo(b,f);a.lineTo(b,this.base);a.fill();this.showStroke&&a.stroke()},height:function(){return this.base-this.y},inRange:function(a,b){return a>= -this.x-this.width/2&&a<=this.x+this.width/2&&b>=this.y&&b<=this.base}});e.Animation=e.Element.extend({currentStep:null,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null});e.Tooltip=e.Element.extend({draw:function(){var a=this.chart.ctx;a.font=v(this.fontSize,this.fontStyle,this.fontFamily);this.xAlign="center";this.yAlign="above";var b=this.caretPadding=2,c=a.measureText(this.text).width+2*this.xPadding,f=this.fontSize+2*this.yPadding,d=f+this.caretHeight+b;this.x+ -c/2>this.chart.width?this.xAlign="left":0>this.x-c/2&&(this.xAlign="right");0>this.y-d&&(this.yAlign="below");var e=this.x-c/2,d=this.y-d;a.fillStyle=this.fillColor;if(this.custom)this.custom(this);else{switch(this.yAlign){case "above":a.beginPath();a.moveTo(this.x,this.y-b);a.lineTo(this.x+this.caretHeight,this.y-(b+this.caretHeight));a.lineTo(this.x-this.caretHeight,this.y-(b+this.caretHeight));a.closePath();a.fill();break;case "below":d=this.y+b+this.caretHeight,a.beginPath(),a.moveTo(this.x,this.y+ -b),a.lineTo(this.x+this.caretHeight,this.y+b+this.caretHeight),a.lineTo(this.x-this.caretHeight,this.y+b+this.caretHeight),a.closePath(),a.fill()}switch(this.xAlign){case "left":e=this.x-c+(this.cornerRadius+this.caretHeight);break;case "right":e=this.x-(this.cornerRadius+this.caretHeight)}H(a,e,d,c,f,this.cornerRadius);a.fill();a.fillStyle=this.textColor;a.textAlign="center";a.textBaseline="middle";a.fillText(this.text,e+c/2,d+f/2)}}});e.MultiTooltip=e.Element.extend({initialize:function(){this.font= -v(this.fontSize,this.fontStyle,this.fontFamily);this.titleFont=v(this.titleFontSize,this.titleFontStyle,this.titleFontFamily);this.titleHeight=this.title?1.5*this.titleFontSize:0;this.height=this.labels.length*this.fontSize+this.fontSize/2*(this.labels.length-1)+2*this.yPadding+this.titleHeight;this.ctx.font=this.titleFont;var a=this.ctx.measureText(this.title).width,b=C(this.ctx,this.font,this.labels)+this.fontSize+3;this.width=y([b,a])+2*this.xPadding;a=this.height/2;0>this.y-a?this.y=a:this.y+ -a>this.chart.height&&(this.y=this.chart.height-a);this.x=this.x>this.chart.width/2?this.x-(this.xOffset+this.width):this.x+this.xOffset},getLineHeight:function(a){var b=this.y-this.height/2+this.yPadding;return 0===a?b+this.titleHeight/3:b+(1.5*this.fontSize*(a-1)+this.fontSize/2)+this.titleHeight},draw:function(){if(this.custom)this.custom(this);else{H(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var a=this.ctx;a.fillStyle=this.fillColor;a.fill();a.closePath();a.textAlign= -"left";a.textBaseline="middle";a.fillStyle=this.titleTextColor;a.font=this.titleFont;a.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0));a.font=this.font;d.each(this.labels,function(b,c){a.fillStyle=this.textColor;a.fillText(b,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(c+1));a.fillStyle=this.legendColorBackground;a.fillRect(this.x+this.xPadding,this.getLineHeight(c+1)-this.fontSize/2,this.fontSize,this.fontSize);a.fillStyle=this.legendColors[c].fill;a.fillRect(this.x+this.xPadding, -this.getLineHeight(c+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}});e.Scale=e.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];for(var a=E(this.stepValue),b=0;b<=this.steps;b++)this.yLabels.push(t(this.templateString,{value:(this.min+b*this.stepValue).toFixed(a)}));this.yLabelWidth=this.display&&this.showLabels?C(this.ctx,this.font,this.yLabels)+10:0},addXLabel:function(a){this.xLabels.push(a);this.valuesCount++;this.fit()},removeXLabel:function(){this.xLabels.shift(); -this.valuesCount--;this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0;this.endPoint=this.display?this.height-1.5*this.fontSize-5:this.height;this.startPoint+=this.padding;var a=this.endPoint-=this.padding,b=this.endPoint-this.startPoint,c;this.calculateYRange(b);this.buildYLabels();for(this.calculateXLabelRotation();b>this.endPoint-this.startPoint;)b=this.endPoint-this.startPoint,c=this.yLabelWidth,this.calculateYRange(b),this.buildYLabels(),cthis.yLabelWidth?a/2:this.yLabelWidth;this.xLabelRotation=0;if(this.display){var c=C(this.ctx,this.font,this.xLabels),f;this.xLabelWidth=c;for(var d=Math.floor(this.calculateX(1)-this.calculateX(0))-6;this.xLabelWidth>d&&0===this.xLabelRotation|| -this.xLabelWidth>d&&90>=this.xLabelRotation&&0this.yLabelWidth&&(this.xScalePaddingLeft=b+this.fontSize/2),this.xScalePaddingRight=this.fontSize/2,this.xLabelRotation++,this.xLabelWidth=f*c;0e&&(e=b.x+d,k=c),b.x-de&&(e=b.x+d,k=c):c>this.valuesCount/2&&b.x-de-g;e=b===g||b===e-g;a.textAlign=0===b?"center":b===c?"center":bthis.animations[c].animationObject.numSteps&&(this.animations[c].animationObject.currentStep=this.animations[c].animationObject.numSteps),this.animations[c].animationObject.render(this.animations[c].chartInstance,this.animations[c].animationObject),this.animations[c].animationObject.currentStep==this.animations[c].animationObject.numSteps&&(this.animations[c].animationObject.onAnimationComplete.call(this.animations[c].chartInstance), -this.animations.splice(c,1),c--);a=(Date.now()-a-this.frameDuration)/this.frameDuration;1<% for (var i=0; i
  • <%if(segments[i].label){%><%=segments[i].label%><%}%>
  • <%}%>'};p.Type.extend({name:"Doughnut",defaults:e, -initialize:function(d){this.segments=[];this.outerRadius=(l.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2;this.SegmentArc=p.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2});this.options.showTooltips&&l.bindEvents(this,this.options.tooltipEvents,function(d){d="mouseout"!==d.type?this.getSegmentsAtEvent(d):[];l.each(this.segments,function(d){d.restore(["fillColor"])});l.each(d,function(d){d.fillColor=d.highlightColor});this.showTooltip(d)}); -this.calculateTotal(d);l.each(d,function(e,h){e.color||(e.color="hsl("+360*h/d.length+", 100%, 50%)");this.addData(e,h,!0)},this);this.render()},getSegmentsAtEvent:function(d){var e=[],h=l.getRelativePosition(d);l.each(this.segments,function(d){d.inRange(h.x,h.y)&&e.push(d)},this);return e},addData:function(d,e,h){e=void 0!==e?e:this.segments.length;"undefined"===typeof d.color&&(d.color=p.defaults.global.segmentColorDefault[e%p.defaults.global.segmentColorDefault.length],d.highlight=p.defaults.global.segmentHighlightColorDefaults[e% -p.defaults.global.segmentHighlightColorDefaults.length]);this.segments.splice(e,0,new this.SegmentArc({value:d.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:d.color,highlightColor:d.highlight||d.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate? -0:this.calculateCircumference(d.value),label:d.label}));h||(this.reflow(),this.update())},calculateCircumference:function(d){return 0 --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.nlbw", package.seeall) - -function index() - entry({"admin", "nlbw"}, firstchild(), _("Bandwidth Monitor"), 80) - entry({"admin", "nlbw", "display"}, template("nlbw/display"), _("Display"), 1) - entry({"admin", "nlbw", "config"}, cbi("nlbw/config"), _("Configuration"), 2) - entry({"admin", "nlbw", "backup"}, template("nlbw/backup"), _("Backup"), 3) - entry({"admin", "nlbw", "data"}, call("action_data"), nil, 4) - entry({"admin", "nlbw", "list"}, call("action_list"), nil, 5) - entry({"admin", "nlbw", "ptr"}, call("action_ptr"), nil, 6).leaf = true - entry({"admin", "nlbw", "download"}, call("action_download"), nil, 7) - entry({"admin", "nlbw", "restore"}, post("action_restore"), nil, 8) - entry({"admin", "nlbw", "commit"}, call("action_commit"), nil, 9) -end - -local function exec(cmd, args, writer) - local os = require "os" - local nixio = require "nixio" - - local fdi, fdo = nixio.pipe() - local pid = nixio.fork() - - if pid > 0 then - fdo:close() - - while true do - local buffer = fdi:read(2048) - local wpid, stat, code = nixio.waitpid(pid, "nohang") - - if writer and buffer and #buffer > 0 then - writer(buffer) - end - - if wpid and stat == "exited" then - break - end - end - elseif pid == 0 then - nixio.dup(fdo, nixio.stdout) - fdi:close() - fdo:close() - nixio.exece(cmd, args, nil) - nixio.stdout:close() - os.exit(1) - end -end - -function action_data() - local http = require "luci.http" - - local types = { - csv = "text/csv", - json = "application/json" - } - - local args = { } - local mtype = http.formvalue("type") or "json" - local delim = http.formvalue("delim") or ";" - local period = http.formvalue("period") - local group_by = http.formvalue("group_by") - local order_by = http.formvalue("order_by") - - if types[mtype] then - args[#args+1] = "-c" - args[#args+1] = mtype - else - http.status(400, "Unsupported type") - return - end - - if delim and #delim > 0 then - args[#args+1] = "-s%s" % delim - end - - if period and #period > 0 then - args[#args+1] = "-t" - args[#args+1] = period - end - - if group_by and #group_by > 0 then - args[#args+1] = "-g" - args[#args+1] = group_by - end - - if order_by and #order_by > 0 then - args[#args+1] = "-o" - args[#args+1] = order_by - end - - http.prepare_content(types[mtype]) - exec("/usr/sbin/nlbw", args, http.write) -end - -function action_list() - local http = require "luci.http" - - local fd = io.popen("/usr/sbin/nlbw -c list") - local periods = { } - - if fd then - while true do - local period = fd:read("*l") - - if not period then - break - end - - periods[#periods+1] = period - end - - fd:close() - end - - http.prepare_content("application/json") - http.write_json(periods) -end - -function action_ptr(...) - local http = require "luci.http" - local util = require "luci.util" - - http.prepare_content("application/json") - http.write_json(util.ubus("network.rrdns", "lookup", { - addrs = {...}, timeout = 3000 - })) -end - -function action_download() - local nixio = require "nixio" - local http = require "luci.http" - local sys = require "luci.sys" - local uci = require "luci.model.uci".cursor() - - local dir = uci:get_first("nlbwmon", "nlbwmon", "database_directory") - or "/var/lib/nlbwmon" - - if dir and nixio.fs.stat(dir, "type") == "dir" then - local n = "nlbwmon-backup-%s-%s.tar.gz" - %{ sys.hostname(), os.date("%Y-%m-%d") } - - http.prepare_content("application/octet-stream") - http.header("Content-Disposition", "attachment; filename=\"%s\"" % n) - exec("/bin/tar", { "-C", dir, "-c", "-z", ".", "-f", "-" }, http.write) - else - http.status(500, "Unable to find database directory") - end -end - -function action_restore() - local nixio = require "nixio" - local http = require "luci.http" - local i18n = require "luci.i18n" - local tpl = require "luci.template" - local uci = require "luci.model.uci".cursor() - - local tmp = "/tmp/nlbw-restore.tar.gz" - local dir = uci:get_first("nlbwmon", "nlbwmon", "database_directory") - or "/var/lib/nlbwmon" - - local fp - http.setfilehandler( - function(meta, chunk, eof) - if not fp and meta and meta.name == "archive" then - fp = io.open(tmp, "w") - end - if fp and chunk then - fp:write(chunk) - end - if fp and eof then - fp:close() - end - end) - - local files = { } - local tar = io.popen("/bin/tar -tzf %s" % tmp, "r") - if tar then - while true do - local file = tar:read("*l") - if not file then - break - elseif file:match("^%d%d%d%d%d%d%d%d%.db%.gz$") or - file:match("^%./%d%d%d%d%d%d%d%d%.db%.gz$") then - files[#files+1] = file - end - end - tar:close() - end - - if #files == 0 then - http.status(500, "Internal Server Error") - tpl.render("nlbw/backup", { - message = i18n.translate("Invalid or empty backup archive") - }) - return - end - - - local output = { } - - exec("/etc/init.d/nlbwmon", { "stop" }) - exec("/bin/mkdir", { "-p", dir }) - - exec("/bin/tar", { "-C", dir, "-vxzf", tmp, unpack(files) }, - function(chunk) output[#output+1] = chunk:match("%S+") end) - - exec("/bin/rm", { "-f", tmp }) - exec("/etc/init.d/nlbwmon", { "start" }) - - tpl.render("nlbw/backup", { - message = i18n.translatef( - "The following database files have been restored: %s", - table.concat(output, ", ")) - }) -end - -function action_commit() - local http = require "luci.http" - local disp = require "luci.dispatcher" - - http.redirect(disp.build_url("admin/nlbw/display")) - exec("/usr/sbin/nlbw", { "-c", "commit" }) -end diff --git a/package/luci/applications/luci-app-nlbwmon/luasrc/model/cbi/nlbw/config.lua b/package/luci/applications/luci-app-nlbwmon/luasrc/model/cbi/nlbw/config.lua deleted file mode 100644 index 71e096c617..0000000000 --- a/package/luci/applications/luci-app-nlbwmon/luasrc/model/cbi/nlbw/config.lua +++ /dev/null @@ -1,215 +0,0 @@ --- Copyright 2017 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local utl = require "luci.util" -local sys = require "luci.sys" -local fs = require "nixio.fs" -local ip = require "luci.ip" -local nw = require "luci.model.network" - -local s, m, period, warning, date, days, interval, ifaces, subnets, limit, prealloc, compress, generations, commit, refresh, directory, protocols - -m = Map("nlbwmon", translate("Netlink Bandwidth Monitor - Configuration"), - translate("The Netlink Bandwidth Monitor (nlbwmon) is a lightweight, efficient traffic accounting program keeping track of bandwidth usage per host and protocol.")) - -nw.init(luci.model.uci.cursor_state()) - -s = m:section(TypedSection, "nlbwmon") -s.anonymous = true -s.addremove = false -s:tab("general", translate("General Settings")) -s:tab("advanced", translate("Advanced Settings")) -s:tab("protocol", translate("Protocol Mapping"), - translate("Protocol mappings to distinguish traffic types per host, one mapping per line. The first value specifies the IP protocol, the second value the port number and the third column is the name of the mapped protocol.")) - -period = s:taboption("general", ListValue, "_period", translate("Accounting period"), - translate("Choose \"Day of month\" to restart the accounting period monthly on a specific date, e.g. every 3rd. Choose \"Fixed interval\" to restart the accounting period exactly every N days, beginning at a given date.")) - -period:value("relative", translate("Day of month")) -period:value("absolute", translate("Fixed interval")) - -period.write = function(self, cfg, val) - if period:formvalue(cfg) == "relative" then - m:set(cfg, "database_interval", interval:formvalue(cfg)) - else - m:set(cfg, "database_interval", "%s/%s" %{ - date:formvalue(cfg), - days:formvalue(cfg) - }) - end -end - -period.cfgvalue = function(self, cfg) - local val = m:get(cfg, "database_interval") or "" - if val:match("^%d%d%d%d%-%d%d%-%d%d/%d+$") then - return "absolute" - end - return "relative" -end - - -warning = s:taboption("general", DummyValue, "_warning", translate("Warning")) -warning.default = translatef("Changing the accounting interval type will invalidate existing databases!
    Download backup.", luci.dispatcher.build_url("admin/nlbw/backup")) -warning.rawhtml = true - -if (m.uci:get_first("nlbwmon", "nlbwmon", "database_interval") or ""):match("^%d%d%d%d-%d%d-%d%d/%d+$") then - warning:depends("_period", "relative") -else - warning:depends("_period", "absolute") -end - - -interval = s:taboption("general", Value, "_interval", translate("Due date"), - translate("Day of month to restart the accounting period. Use negative values to count towards the end of month, e.g. \"-5\" to specify the 27th of July or the 24th of Februrary.")) - -interval.datatype = "or(range(1,31),range(-31,-1))" -interval.placeholder = "1" -interval:value("1", translate("1 - Restart every 1st of month")) -interval:value("-1", translate("-1 - Restart every last day of month")) -interval:value("-7", translate("-7 - Restart a week before end of month")) -interval.rmempty = false -interval:depends("_period", "relative") -interval.write = period.write - -interval.cfgvalue = function(self, cfg) - local val = m:get(cfg, "database_interval") - return val and tonumber(val) -end - - -date = s:taboption("general", Value, "_date", translate("Start date"), - translate("Start date of the first accounting period, e.g. begin of ISP contract.")) - -date.datatype = "dateyyyymmdd" -date.placeholder = "2016-03-15" -date.rmempty = false -date:depends("_period", "absolute") -date.write = period.write - -date.cfgvalue = function(self, cfg) - local val = m:get(cfg, "database_interval") or "" - return (val:match("^(%d%d%d%d%-%d%d%-%d%d)/%d+$")) -end - - -days = s:taboption("general", Value, "_days", translate("Interval"), - translate("Length of accounting interval in days.")) - -days.datatype = "min(1)" -days.placeholder = "30" -days.rmempty = false -days:depends("_period", "absolute") -days.write = period.write - -days.cfgvalue = function(self, cfg) - local val = m:get(cfg, "database_interval") or "" - return (val:match("^%d%d%d%d%-%d%d%-%d%d/(%d+)$")) -end - - -ifaces = s:taboption("general", Value, "_ifaces", translate("Local interfaces"), - translate("Only conntrack streams from or to any of these networks are counted.")) - -ifaces.template = "cbi/network_netlist" -ifaces.widget = "checkbox" -ifaces.nocreate = true - -ifaces.cfgvalue = function(self, cfg) - return m:get(cfg, "local_network") -end - -ifaces.write = function(self, cfg) - local item - local items = {} - for item in utl.imatch(subnets:formvalue(cfg)) do - items[#items+1] = item - end - for item in utl.imatch(ifaces:formvalue(cfg)) do - items[#items+1] = item - end - m:set(cfg, "local_network", items) -end - - -subnets = s:taboption("general", DynamicList, "_subnets", translate("Local subnets"), - translate("Only conntrack streams from or to any of these subnets are counted.")) - -subnets.datatype = "ipaddr" - -subnets.cfgvalue = function(self, cfg) - local subnet - local subnets = {} - for subnet in utl.imatch(m:get(cfg, "local_network")) do - subnet = ip.new(subnet) - subnets[#subnets+1] = subnet and subnet:string() - end - return subnets -end - -subnets.write = ifaces.write - - -limit = s:taboption("advanced", Value, "database_limit", translate("Maximum entries"), - translate("The maximum amount of entries that should be put into the database, setting the limit to 0 will allow databases to grow indefinitely.")) - -limit.datatype = "uinteger" -limit.placeholder = "10000" - -prealloc = s:taboption("advanced", Flag, "database_prealloc", translate("Preallocate database"), - translate("Whether to preallocate the maximum possible database size in memory. This is mainly useful for memory constrained systems which might not be able to satisfy memory allocation after longer uptime periods.")) - -prealloc:depends({["database_limit"] = "0", ["!reverse"] = true }) - - -compress = s:taboption("advanced", Flag, "database_compress", translate("Compress database"), - translate("Whether to gzip compress archive databases. Compressing the database files makes accessing old data slightly slower but helps to reduce storage requirements.")) - -compress.default = compress.enabled - - -generations = s:taboption("advanced", Value, "database_generations", translate("Stored periods"), - translate("Maximum number of accounting periods to keep, use zero to keep databases forever.")) - -generations.datatype = "uinteger" -generations.placeholder = "10" - - -commit = s:taboption("advanced", Value, "commit_interval", translate("Commit interval"), - translate("Interval at which the temporary in-memory database is committed to the persistent database directory.")) - -commit.placeholder = "24h" -commit:value("24h", translate("24h - least flash wear at the expense of data loss risk")) -commit:value("12h", translate("12h - compromise between risk of data loss and flash wear")) -commit:value("10m", translate("10m - frequent commits at the expense of flash wear")) -commit:value("60s", translate("60s - commit minutely, useful for non-flash storage")) - - -refresh = s:taboption("advanced", Value, "refresh_interval", translate("Refresh interval"), - translate("Interval at which traffic counters of still established connections are refreshed from netlink information.")) - -refresh.placeholder = "30s" -refresh:value("30s", translate("30s - refresh twice per minute for reasonably current stats")) -refresh:value("5m", translate("5m - rarely refresh to avoid frequently clearing conntrack counters")) - - -directory = s:taboption("advanced", Value, "database_directory", translate("Database directory"), - translate("Database storage directory. One file per accounting period will be placed into this directory.")) - -directory.placeholder = "/var/lib/nlbwmon" - - -protocols = s:taboption("protocol", TextValue, "_protocols") -protocols.rows = 50 - -protocols.cfgvalue = function(self, cfg) - return fs.readfile("/usr/share/nlbwmon/protocols") -end - -protocols.write = function(self, cfg, value) - fs.writefile("/usr/share/nlbwmon/protocols", (value or ""):gsub("\r\n", "\n")) -end - -protocols.remove = protocols.write - - -return m diff --git a/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/backup.htm b/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/backup.htm deleted file mode 100644 index ea2e0f05cf..0000000000 --- a/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/backup.htm +++ /dev/null @@ -1,34 +0,0 @@ -<%# - Copyright 2017 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - - - -

    <%:Netlink Bandwidth Monitor - Backup / Restore %>

    - -
    - <%:Restore Database Backup%> -

    -

    " enctype="multipart/form-data"> - - - -
    - - <% if message then %> -
    <%=message%>
    - <% end %> -

    - - <%:Download Database Backup%> -

    -

    "> - -
    -

    -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/display.htm b/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/display.htm deleted file mode 100644 index 932c8849a7..0000000000 --- a/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/display.htm +++ /dev/null @@ -1,1052 +0,0 @@ -<%# - Copyright 2017 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% css = [[ - - #chartjs-tooltip { - opacity: 0; - position: absolute; - background: rgba(0, 0, 0, .7); - color: white; - padding: 3px; - border-radius: 3px; - -webkit-transition: all .1s ease; - transition: all .1s ease; - pointer-events: none; - -webkit-transform: translate(-50%, 0); - transform: translate(-50%, 0); - z-index: 200; - } - - #chartjs-tooltip.above { - -webkit-transform: translate(-50%, -100%); - transform: translate(-50%, -100%); - } - - #chartjs-tooltip.above:before { - border: solid; - border-color: #111 transparent; - border-color: rgba(0, 0, 0, .8) transparent; - border-width: 8px 8px 0 8px; - bottom: 1em; - content: ""; - display: block; - left: 50%; - top: 100%; - position: absolute; - z-index: 99; - -webkit-transform: translate(-50%, 0); - transform: translate(-50%, 0); - } - - table { - border: 1px solid #999; - border-collapse: collapse; - margin: 0 0 2px !important; - } - - th, td, table table td { - border: 1px solid #999; - text-align: right; - padding: 1px 3px !important; - white-space: nowrap; - } - - tbody td { - border-bottom-color: #ccc; - } - - tbody td[rowspan] { - border-bottom-color: #999; - } - - tbody tr:last-child td { - border-bottom-color: #999; - } - - - .pie { - width: 200px; - display: inline-block; - margin: 20px; - } - - .pie label { - font-weight: bold; - font-size: 14px; - display: block; - margin-bottom: 10px; - text-align: center; - } - - .kpi { - display: inline-block; - margin: 80px 20px 20px; - vertical-align: top; - } - - .kpi ul { - list-style: none; - } - - .kpi li { - margin: 10px; - display: none; - } - - .kpi big { - font-weight: bold; - } - - #detail-bubble { - position: absolute; - opacity: 0; - visibility: hidden; - } - - #detail-bubble.in { - opacity: 1; - visibility: visible; - transition: opacity 0.5s; - } - - #detail-bubble > div { - border: 1px solid #ccc; - border-radius: 2px; - padding: 5px; - background: #fcfcfc; - } - - #detail-bubble .head { - text-align: center; - white-space: nowrap; - position: relative; - } - - #detail-bubble .head .dismiss { - top: 0; - right: 0; - width: 20px; - line-height: 20px; - text-align: center; - text-decoration: none; - font-weight: bold; - color: #000; - position: absolute; - font-size: 20px; - } - - #detail-bubble .pie { - width: 100px; - margin: 5px; - } - - #detail-bubble .kpi { - margin: 40px 5px 5px; - font-size: smaller; - text-align: left; - } - - #detail-bubble .kpi ul { - margin: 0; - } - - #bubble-arrow { - border: 1px solid #ccc; - border-width: 1px 0 0 1px; - background: #fcfcfc; - width: 15px; - height: 15px; - position: absolute; - left: 0; - top: -8px; - transform: rotate(45deg); - margin: 0 0 0 -8px; - } - - tr.active > td { - border-bottom: 2px solid red; - } - - tr.active > td.active { - border: 2px solid red; - border-bottom: none; - } - - td.detail { - border: 2px solid red; - border-top: none; - opacity: 0; - transition: opacity 0.5s; - } - - td.detail.in { - opacity: 1; - } - - th.hostname, - td.hostname { - text-align: left; - } - -]] -%> - -<%+header%> - - - - - -

    <%:Netlink Bandwidth Monitor%>

    - -
    - -
    -
    - × -
    - - -
    -
    - - -
    -
    -
      -
    • <%_Hostname: example.org%>
    • -
    • <%_Vendor: Example Corp.%>
    • -
    -
    -
    -
    -
    -
    - -
    - -

    - <%:Select accounting period:%> - -

    - -
    - - - -
    -
    -
    - - -
    - -
    - - -
    - -
    -
      -
    • <%_0 hosts%>
    • -
    • <%_0 download%>
    • -
    • <%_0 upload%>
    • -
    • <%_0 connections%>
    • -
    -
    -
    - - - - - - - - -
    <%:Host%><%:MAC%><%:Connections%><%:Download (Bytes / Packets)%><%:Upload (Bytes / Packets)%>
    -
    - - - - - - - - - -<%+footer%> diff --git a/package/luci/applications/luci-app-nlbwmon/po/ja/nlbwmon.po b/package/luci/applications/luci-app-nlbwmon/po/ja/nlbwmon.po deleted file mode 100644 index b5931e0dfe..0000000000 --- a/package/luci/applications/luci-app-nlbwmon/po/ja/nlbwmon.po +++ /dev/null @@ -1,387 +0,0 @@ -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 \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ja\n" -"X-Generator: Poedit 2.0.3\n" - -msgid "%d IPv4-only hosts" -msgstr "%d IPv4 限定ホスト" - -msgid "%d IPv6-only hosts" -msgstr "%d IPv6 限定ホスト" - -msgid "%d dual-stack hosts" -msgstr "%d デュアルスタック ホスト" - -msgid "%s and %s" -msgstr "%s, %s" - -msgid "%s, %s and %s" -msgstr "%s, %s, %s" - -msgid "-1 - Restart every last day of month" -msgstr "-1 - 月の最終日" - -msgid "-7 - Restart a week before end of month" -msgstr "-7 - 月の最終日の一週間前" - -msgid "1 - Restart every 1st of month" -msgstr "1 - 毎月1日" - -msgid "10m - frequent commits at the expense of flash wear" -msgstr "10m - フラッシュ媒体への負荷が高い頻繁なコミット(10分)" - -msgid "12h - compromise between risk of data loss and flash wear" -msgstr "12h - データ消失リスクとフラッシュ媒体への負荷の妥協点(12時間)" - -msgid "24h - least flash wear at the expense of data loss risk" -msgstr "24h - データ消失リスクは高いがフラッシュ媒体への負荷は最小(24時間)" - -msgid "30s - refresh twice per minute for reasonably current stats" -msgstr "30s - 現在の状態の把握に適切な1分間に2回のリフレッシュ(30秒)" - -msgid "5m - rarely refresh to avoid frequently clearing conntrack counters" -msgstr "" - -msgid "60s - commit minutely, useful for non-flash storage" -msgstr "60秒 - 1分毎のコミット、非フラッシュ ストレージに有用" - -msgid "0 connections" -msgstr "0 接続数" - -msgid "0 hosts" -msgstr "0 ホスト数" - -msgid "0% IPv6 support rate among hosts" -msgstr "0% 全ホスト中の IPv6 サポート比率" - -msgid "0B total IPv6 download" -msgstr "0B IPv6 総ダウンロード" - -msgid "0% of the total traffic is IPv6" -msgstr "0% 全トラフィック中の IPv6 の割合" - -msgid "0B total IPv6 upload" -msgstr "0B IPv6 総アップロード" - -msgid "0 cause the most connections" -msgstr "0 接続数上位" - -msgid "0 cause the most download" -msgstr "0 ダウンロード上位" - -msgid "0 cause the most upload" -msgstr "0 アップロード上位" - -msgid "0 different application protocols" -msgstr "0 アプリケーション プロトコル数" - -msgid "0 download" -msgstr "0 ダウンロード" - -msgid "0 upload" -msgstr "0 アップロード" - -msgid "Accounting period" -msgstr "収集期間" - -msgid "Advanced Settings" -msgstr "拡張設定" - -msgid "Application" -msgstr "アプリケーション" - -msgid "Application Protocols" -msgstr "アプリケーション プロトコル" - -msgid "Backup" -msgstr "バックアップ" - -msgid "Bandwidth Monitor" -msgstr "帯域幅モニター" - -msgid "CSV, grouped by IP" -msgstr "CSV(IP によるグループ化)" - -msgid "CSV, grouped by MAC" -msgstr "CSV(MAC によるグループ化)" - -msgid "CSV, grouped by protocol" -msgstr "CSV(プロトコルによるグループ化)" - -msgid "" -"Changing the accounting interval type will invalidate existing databases!" -"
    Download backup." -msgstr "" -"既存のデータベースと互換性の無い収集期間の形式が選択されました。
    バックアップのダウンロード" - -msgid "" -"Choose \"Day of month\" to restart the accounting period monthly on a " -"specific date, e.g. every 3rd. Choose \"Fixed interval\" to restart the " -"accounting period exactly every N days, beginning at a given date." -msgstr "" -"月毎で設定した日付からのデータの計測を行うには、 \"月間\" を選択します(例: " -"毎月3日)。設定した日数毎にデータの収集を行うには、\"特定の間隔\" を選択しま" -"す。後者の場合、指定された日付から開始されます。" - -msgid "Commit interval" -msgstr "コミット間隔" - -msgid "Compress database" -msgstr "データベースの圧縮" - -msgid "Configuration" -msgstr "設定" - -msgid "Conn." -msgstr "接続数" - -msgid "Connections" -msgstr "接続数" - -msgid "Connections / Host" -msgstr "ホスト毎の接続数" - -msgid "Database directory" -msgstr "データベース ディレクトリ" - -msgid "" -"Database storage directory. One file per accounting period will be placed " -"into this directory." -msgstr "" -"データベースの保存先ディレクトリです。計測期間あたり 1 つのファイルがこのディ" -"レクトリに配置されます。" - -msgid "Day of month" -msgstr "月間" - -msgid "" -"Day of month to restart the accounting period. Use negative values to count " -"towards the end of month, e.g. \"-5\" to specify the 27th of July or the " -"24th of Februrary." -msgstr "" -"月の中で新たな収集期間を開始する日です。月の最終日からの日数をマイナス値で指" -"定することができます(例: 7月27日または2月24日は \"-5\")。" - -msgid "Display" -msgstr "表示" - -msgid "Down. (Bytes / Pkts.)" -msgstr "ダウンロード(Bytes / Pkts.)" - -msgid "Download (Bytes / Packets)" -msgstr "ダウンロード(Bytes / Packets)" - -msgid "Download / Application" -msgstr "ダウンロード / アプリケーション" - -msgid "Download Database Backup" -msgstr "データベース バックアップのダウンロード" - -msgid "Dualstack enabled hosts" -msgstr "デュアルスタック ホスト" - -msgid "Due date" -msgstr "期日" - -msgid "Export" -msgstr "エクスポート" - -msgid "Family" -msgstr "IP 種別" - -msgid "Fixed interval" -msgstr "特定の間隔" - -msgid "Force reload…" -msgstr "強制リロード..." - -msgid "General Settings" -msgstr "全般設定" - -msgid "Generate Backup" -msgstr "バックアップの作成" - -msgid "Host" -msgstr "ホスト" - -msgid "Hostname: example.org" -msgstr "ホスト名: example.org" - -msgid "IPv4 vs. IPv6" -msgstr "IPv4 及び IPv6" - -msgid "IPv6" -msgstr "IPv6" - -msgid "Interval" -msgstr "間隔" - -msgid "" -"Interval at which the temporary in-memory database is committed to the " -"persistent database directory." -msgstr "" -"メモリー上の一時的なデータベースから、永続的なデータベース ディレクトリへのコ" -"ミットを実行する間隔です。" - -msgid "" -"Interval at which traffic counters of still established connections are " -"refreshed from netlink information." -msgstr "" - -msgid "Invalid or empty backup archive" -msgstr "無効または空のバックアップ アーカイブです。" - -msgid "JSON dump" -msgstr "JSON ダンプ" - -msgid "Length of accounting interval in days." -msgstr "収集期間の日数です。" - -msgid "Local interfaces" -msgstr "ローカル インターフェース" - -msgid "Local subnets" -msgstr "ローカル サブネット" - -msgid "MAC" -msgstr "MAC" - -msgid "Maximum entries" -msgstr "最大件数" - -msgid "" -"Maximum number of accounting periods to keep, use zero to keep databases " -"forever." -msgstr "" -"計測データを保持する、収集期間の最大個数です。 '0' を設定した場合、全データを" -"保持します。" - -msgid "Netlink Bandwidth Monitor" -msgstr "Netlink Bandwidth Monitor" - -msgid "Netlink Bandwidth Monitor - Backup / Restore" -msgstr "Netlink Bandwidth Monitor - バックアップ / 復元" - -msgid "Netlink Bandwidth Monitor - Configuration" -msgstr "Netlink Bandwidth Monitor - 設定" - -msgid "No data recorded yet." -msgstr "まだデータがありません。" - -msgid "Only conntrack streams from or to any of these networks are counted." -msgstr "" -"選択されたネットワークにおける conntrack ストリームのみが計測されます。" - -msgid "Only conntrack streams from or to any of these subnets are counted." -msgstr "設定されたサブネットにおける conntrack ストリームのみが計測されます。" - -msgid "Preallocate database" -msgstr "データベースの事前割当" - -msgid "Protocol" -msgstr "プロトコル" - -msgid "Protocol Mapping" -msgstr "プロトコル マッピング" - -msgid "" -"Protocol mappings to distinguish traffic types per host, one mapping per " -"line. The first value specifies the IP protocol, the second value the port " -"number and the third column is the name of the mapped protocol." -msgstr "" -"ホスト毎のトラフィック形式を区別するためのプロトコル マッピングで、一行あたり" -"一つのマッピングを追加します。各エントリーの一つ目の値は IP プロトコルを、2つ" -"目の値はポート番号、3つ目はマッピングされたプロトコルの名前をそれぞれ表しま" -"す。" - -msgid "Refresh interval" -msgstr "リフレッシュ間隔" - -msgid "Restore" -msgstr "復元" - -msgid "Restore Database Backup" -msgstr "データベースの復元" - -msgid "Select accounting period:" -msgstr "収集期間を選択:" - -msgid "Source IP" -msgstr "アクセス元 IP" - -msgid "Start date" -msgstr "開始日" - -msgid "Start date of the first accounting period, e.g. begin of ISP contract." -msgstr "初回のデータ収集の開始日です(例: ISP 契約の開始日)。" - -msgid "Stored periods" -msgstr "保存期間" - -msgid "" -"The Netlink Bandwidth Monitor (nlbwmon) is a lightweight, efficient traffic " -"accounting program keeping track of bandwidth usage per host and protocol." -msgstr "" -"Netlink Bandwidth Monitor (nlbwmon) は、軽量かつ、ホストやプロトコル毎に帯域" -"幅使用量の追跡を行う効率的なトラフィック計測プログラムです。" - -msgid "The following database files have been restored: %s" -msgstr "次のデータベース ファイルが復元されました: %s" - -msgid "" -"The maximum amount of entries that should be put into the database, setting " -"the limit to 0 will allow databases to grow indefinitely." -msgstr "" -"データベースに保管される最大件数です。 '0' を設定した場合、制限無しのデータ" -"ベースの増大を許可します。" - -msgid "Traffic / Host" -msgstr "トラフィック / ホスト" - -msgid "Traffic Distribution" -msgstr "トラフィック内訳" - -msgid "Up. (Bytes / Pkts.)" -msgstr "アップロード(Bytes / Pkts.)" - -msgid "Upload (Bytes / Packets)" -msgstr "アップロード(Bytes / Packets)" - -msgid "Upload / Application" -msgstr "アップロード / アプリケーション" - -msgid "Vendor: Example Corp." -msgstr "ベンダ: Example Corp." - -msgid "Warning" -msgstr "警告" - -msgid "" -"Whether to gzip compress archive databases. Compressing the database files " -"makes accessing old data slightly slower but helps to reduce storage " -"requirements." -msgstr "" -"データベースの gzip 圧縮アーカイブ化です。データベース ファイルを圧縮すると古" -"いデータへのアクセスが多少遅くなりますが、ストレージ使用量の低減に役立ちま" -"す。" - -msgid "" -"Whether to preallocate the maximum possible database size in memory. This is " -"mainly useful for memory constrained systems which might not be able to " -"satisfy memory allocation after longer uptime periods." -msgstr "" - -msgid "no traffic" -msgstr "トラフィック無し" - -msgid "other" -msgstr "その他" diff --git a/package/luci/applications/luci-app-nlbwmon/po/templates/nlbwmon.pot b/package/luci/applications/luci-app-nlbwmon/po/templates/nlbwmon.pot deleted file mode 100644 index 61d2230793..0000000000 --- a/package/luci/applications/luci-app-nlbwmon/po/templates/nlbwmon.pot +++ /dev/null @@ -1,352 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "%d IPv4-only hosts" -msgstr "" - -msgid "%d IPv6-only hosts" -msgstr "" - -msgid "%d dual-stack hosts" -msgstr "" - -msgid "%s and %s" -msgstr "" - -msgid "%s, %s and %s" -msgstr "" - -msgid "-1 - Restart every last day of month" -msgstr "" - -msgid "-7 - Restart a week before end of month" -msgstr "" - -msgid "1 - Restart every 1st of month" -msgstr "" - -msgid "10m - frequent commits at the expense of flash wear" -msgstr "" - -msgid "12h - compromise between risk of data loss and flash wear" -msgstr "" - -msgid "24h - least flash wear at the expense of data loss risk" -msgstr "" - -msgid "30s - refresh twice per minute for reasonably current stats" -msgstr "" - -msgid "5m - rarely refresh to avoid frequently clearing conntrack counters" -msgstr "" - -msgid "60s - commit minutely, useful for non-flash storage" -msgstr "" - -msgid "0 connections" -msgstr "" - -msgid "0 hosts" -msgstr "" - -msgid "0% IPv6 support rate among hosts" -msgstr "" - -msgid "0B total IPv6 download" -msgstr "" - -msgid "0% of the total traffic is IPv6" -msgstr "" - -msgid "0B total IPv6 upload" -msgstr "" - -msgid "0 cause the most connections" -msgstr "" - -msgid "0 cause the most download" -msgstr "" - -msgid "0 cause the most upload" -msgstr "" - -msgid "0 different application protocols" -msgstr "" - -msgid "0 download" -msgstr "" - -msgid "0 upload" -msgstr "" - -msgid "Accounting period" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Application" -msgstr "" - -msgid "Application Protocols" -msgstr "" - -msgid "Backup" -msgstr "" - -msgid "Bandwidth Monitor" -msgstr "" - -msgid "CSV, grouped by IP" -msgstr "" - -msgid "CSV, grouped by MAC" -msgstr "" - -msgid "CSV, grouped by protocol" -msgstr "" - -msgid "" -"Changing the accounting interval type will invalidate existing databases!" -"
    Download backup." -msgstr "" - -msgid "" -"Choose \"Day of month\" to restart the accounting period monthly on a " -"specific date, e.g. every 3rd. Choose \"Fixed interval\" to restart the " -"accounting period exactly every N days, beginning at a given date." -msgstr "" - -msgid "Commit interval" -msgstr "" - -msgid "Compress database" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Conn." -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "Connections / Host" -msgstr "" - -msgid "Database directory" -msgstr "" - -msgid "" -"Database storage directory. One file per accounting period will be placed " -"into this directory." -msgstr "" - -msgid "Day of month" -msgstr "" - -msgid "" -"Day of month to restart the accounting period. Use negative values to count " -"towards the end of month, e.g. \"-5\" to specify the 27th of July or the " -"24th of Februrary." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Down. (Bytes / Pkts.)" -msgstr "" - -msgid "Download (Bytes / Packets)" -msgstr "" - -msgid "Download / Application" -msgstr "" - -msgid "Download Database Backup" -msgstr "" - -msgid "Dualstack enabled hosts" -msgstr "" - -msgid "Due date" -msgstr "" - -msgid "Export" -msgstr "" - -msgid "Family" -msgstr "" - -msgid "Fixed interval" -msgstr "" - -msgid "Force reload…" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Generate Backup" -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname: example.org" -msgstr "" - -msgid "IPv4 vs. IPv6" -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "Interval" -msgstr "" - -msgid "" -"Interval at which the temporary in-memory database is committed to the " -"persistent database directory." -msgstr "" - -msgid "" -"Interval at which traffic counters of still established connections are " -"refreshed from netlink information." -msgstr "" - -msgid "Invalid or empty backup archive" -msgstr "" - -msgid "JSON dump" -msgstr "" - -msgid "Length of accounting interval in days." -msgstr "" - -msgid "Local interfaces" -msgstr "" - -msgid "Local subnets" -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "Maximum entries" -msgstr "" - -msgid "" -"Maximum number of accounting periods to keep, use zero to keep databases " -"forever." -msgstr "" - -msgid "Netlink Bandwidth Monitor" -msgstr "" - -msgid "Netlink Bandwidth Monitor - Backup / Restore" -msgstr "" - -msgid "Netlink Bandwidth Monitor - Configuration" -msgstr "" - -msgid "No data recorded yet." -msgstr "" - -msgid "Only conntrack streams from or to any of these networks are counted." -msgstr "" - -msgid "Only conntrack streams from or to any of these subnets are counted." -msgstr "" - -msgid "Preallocate database" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Protocol Mapping" -msgstr "" - -msgid "" -"Protocol mappings to distinguish traffic types per host, one mapping per " -"line. The first value specifies the IP protocol, the second value the port " -"number and the third column is the name of the mapped protocol." -msgstr "" - -msgid "Refresh interval" -msgstr "" - -msgid "Restore" -msgstr "" - -msgid "Restore Database Backup" -msgstr "" - -msgid "Select accounting period:" -msgstr "" - -msgid "Source IP" -msgstr "" - -msgid "Start date" -msgstr "" - -msgid "Start date of the first accounting period, e.g. begin of ISP contract." -msgstr "" - -msgid "Stored periods" -msgstr "" - -msgid "" -"The Netlink Bandwidth Monitor (nlbwmon) is a lightweight, efficient traffic " -"accounting program keeping track of bandwidth usage per host and protocol." -msgstr "" - -msgid "The following database files have been restored: %s" -msgstr "" - -msgid "" -"The maximum amount of entries that should be put into the database, setting " -"the limit to 0 will allow databases to grow indefinitely." -msgstr "" - -msgid "Traffic / Host" -msgstr "" - -msgid "Traffic Distribution" -msgstr "" - -msgid "Up. (Bytes / Pkts.)" -msgstr "" - -msgid "Upload (Bytes / Packets)" -msgstr "" - -msgid "Upload / Application" -msgstr "" - -msgid "Vendor: Example Corp." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"Whether to gzip compress archive databases. Compressing the database files " -"makes accessing old data slightly slower but helps to reduce storage " -"requirements." -msgstr "" - -msgid "" -"Whether to preallocate the maximum possible database size in memory. This is " -"mainly useful for memory constrained systems which might not be able to " -"satisfy memory allocation after longer uptime periods." -msgstr "" - -msgid "no traffic" -msgstr "" - -msgid "other" -msgstr "" diff --git a/package/luci/applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po b/package/luci/applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po deleted file mode 100644 index 54fb3f6498..0000000000 --- a/package/luci/applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po +++ /dev/null @@ -1,366 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "%d IPv4-only hosts" -msgstr "%d 个主机仅支持 IPv4" - -msgid "%d IPv6-only hosts" -msgstr "%d 个主机仅支持 IPv6" - -msgid "%d dual-stack hosts" -msgstr "%d 个双协议栈主机" - -msgid "%s and %s" -msgstr "%s 和 %s" - -msgid "%s, %s and %s" -msgstr "%s, %s 和 %s" - -msgid "-1 - Restart every last day of month" -msgstr "-1 - 每月的最后一天重新开始" - -msgid "-7 - Restart a week before end of month" -msgstr "-7 - 每月底前一周重新开始" - -msgid "1 - Restart every 1st of month" -msgstr "1 - 每月的第一天重新开始" - -msgid "10m - frequent commits at the expense of flash wear" -msgstr "10m - 频繁提交,闪存损耗的开销也增大" - -msgid "12h - compromise between risk of data loss and flash wear" -msgstr "12h - 平衡统计数据丢失的风险以及闪存使用寿命" - -msgid "24h - least flash wear at the expense of data loss risk" -msgstr "24h - 以数据丢失风险的代价换取最小的闪存损耗" - -msgid "30s - refresh twice per minute for reasonably current stats" -msgstr "30s - 每分钟刷新二次以获得较准确的当前统计值" - -msgid "5m - rarely refresh to avoid frequently clearing conntrack counters" -msgstr "5m - 较少刷新以避免频繁清除连接跟踪计数器" - -msgid "60s - commit minutely, useful for non-flash storage" -msgstr "60s - 每分钟提交,适用于非闪存类型存储" - -msgid "0 connections" -msgstr "连接:0" - -msgid "0 hosts" -msgstr "主机:0" - -msgid "0% IPv6 support rate among hosts" -msgstr "支持 IPv6 的主机比例:0%" - -msgid "0B total IPv6 download" -msgstr "IPv6 总下载量:0B" - -msgid "0% of the total traffic is IPv6" -msgstr "IPv6 流量比例:0%" - -msgid "0B total IPv6 upload" -msgstr "IPv6 总上传量:0B" - -msgid "0 cause the most connections" -msgstr "0 是连接数最多的协议" - -msgid "0 cause the most download" -msgstr "0 是下载量最大的协议" - -msgid "0 cause the most upload" -msgstr "0 是上传量最大的协议" - -msgid "0 different application protocols" -msgstr "0 种不同的应用层协议" - -msgid "0 download" -msgstr "下载:0" - -msgid "0 upload" -msgstr "上传:0" - -msgid "Accounting period" -msgstr "统计周期" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Application" -msgstr "应用层协议" - -msgid "Application Protocols" -msgstr "应用层协议" - -msgid "Backup" -msgstr "备份" - -msgid "Bandwidth Monitor" -msgstr "带宽监控" - -msgid "CSV, grouped by IP" -msgstr "CSV,按 IP 分组" - -msgid "CSV, grouped by MAC" -msgstr "CSV,按 MAC 分组" - -msgid "CSV, grouped by protocol" -msgstr "CSV,按协议分组" - -msgid "" -"Changing the accounting interval type will invalidate existing databases!" -"
    Download backup." -msgstr "" -"更改统计周期类型会使现有数据库无效!
    下载备份." - -msgid "" -"Choose \"Day of month\" to restart the accounting period monthly on a " -"specific date, e.g. every 3rd. Choose \"Fixed interval\" to restart the " -"accounting period exactly every N days, beginning at a given date." -msgstr "" -"选择“每月的某一天”来设置统计周期的重启时间,例如:每个月的第 3 天。选择“固定周" -"期”来设置从给定日期开始每 N 天重启统计周期。" - -msgid "Commit interval" -msgstr "提交间隔" - -msgid "Compress database" -msgstr "压缩数据库" - -msgid "Configuration" -msgstr "配置" - -msgid "Conn." -msgstr "连接" - -msgid "Connections" -msgstr "连接" - -msgid "Connections / Host" -msgstr "连接 / 主机" - -msgid "Database directory" -msgstr "数据库目录" - -msgid "" -"Database storage directory. One file per accounting period will be placed " -"into this directory." -msgstr "数据库存储目录。每个“统计周期”的文件将被放到这个目录中。" - -msgid "Day of month" -msgstr "每月的某一天" - -msgid "" -"Day of month to restart the accounting period. Use negative values to count " -"towards the end of month, e.g. \"-5\" to specify the 27th of July or the " -"24th of Februrary." -msgstr "" -"每个月重启统计周期的日期。使用负数表示从月底开始计算,例如:\"-5\" 可以表" -"示 7 月份的 27 号或者 2 月份的 24 号。" - -msgid "Display" -msgstr "显示" - -msgid "Down. (Bytes / Pkts.)" -msgstr "下载(字节 / 数据包)" - -msgid "Download (Bytes / Packets)" -msgstr "下载(字节 / 数据包)" - -msgid "Download / Application" -msgstr "下载 / 应用层协议" - -msgid "Download Database Backup" -msgstr "下载数据库备份" - -msgid "Dualstack enabled hosts" -msgstr "双协议栈主机" - -msgid "Due date" -msgstr "重置日期" - -msgid "Export" -msgstr "导出" - -msgid "Family" -msgstr "协议类型" - -msgid "Fixed interval" -msgstr "固定周期" - -msgid "Force reload…" -msgstr "强制重新加载..." - -msgid "General Settings" -msgstr "基本设置" - -msgid "Generate Backup" -msgstr "生成备份" - -msgid "Host" -msgstr "主机" - -msgid "Hostname: example.org" -msgstr "主机名:example.org" - -msgid "IPv4 vs. IPv6" -msgstr "IPv4 与 IPv6" - -msgid "IPv6" -msgstr "IPv6" - -msgid "Interval" -msgstr "周期" - -msgid "" -"Interval at which the temporary in-memory database is committed to the " -"persistent database directory." -msgstr "将内存中的临时数据库提交到持久性数据库目录的间隔时间。" - -msgid "" -"Interval at which traffic counters of still established connections are " -"refreshed from netlink information." -msgstr "从 netlink 信息中刷新“已建立连接”的流量计数器的间隔时间。" - -msgid "Invalid or empty backup archive" -msgstr "备份存档无效或为空" - -msgid "JSON dump" -msgstr "JSON 输出" - -msgid "Length of accounting interval in days." -msgstr "统计周期(天)。" - -msgid "Local interfaces" -msgstr "本地接口" - -msgid "Local subnets" -msgstr "本地子网" - -msgid "MAC" -msgstr "MAC" - -msgid "Maximum entries" -msgstr "最大条目" - -msgid "" -"Maximum number of accounting periods to keep, use zero to keep databases " -"forever." -msgstr "保留的统计周期数据库的最大数量,设置 0 表示不限制。" - -msgid "Netlink Bandwidth Monitor" -msgstr "网络带宽监视器" - -msgid "Netlink Bandwidth Monitor - Backup / Restore" -msgstr "网络带宽监视器 - 备份 / 恢复" - -msgid "Netlink Bandwidth Monitor - Configuration" -msgstr "网络带宽监视器 - 配置" - -msgid "No data recorded yet." -msgstr "暂无数据记录。" - -msgid "Only conntrack streams from or to any of these networks are counted." -msgstr "仅统计来自或目标为这些网络接口的连接流量。" - -msgid "Only conntrack streams from or to any of these subnets are counted." -msgstr "仅统计来自或目标为这些子网的连接流量。" - -msgid "Preallocate database" -msgstr "预分配数据库" - -msgid "Protocol" -msgstr "协议" - -msgid "Protocol Mapping" -msgstr "协议映射" - -msgid "" -"Protocol mappings to distinguish traffic types per host, one mapping per " -"line. The first value specifies the IP protocol, the second value the port " -"number and the third column is the name of the mapped protocol." -msgstr "" -"协议映射用于区分流量类型,每行一条。第一个值指定 IP 协议类型,第二个值是" -"端口号,第三个值是映射的协议名称。" - -msgid "Refresh interval" -msgstr "刷新间隔" - -msgid "Restore" -msgstr "恢复" - -msgid "Restore Database Backup" -msgstr "恢复数据库备份" - -msgid "Select accounting period:" -msgstr "选择统计周期:" - -msgid "Source IP" -msgstr "源 IP" - -msgid "Start date" -msgstr "起始日期" - -msgid "Start date of the first accounting period, e.g. begin of ISP contract." -msgstr "第一个统计周期的起始日期,例如:ISP 合约的起始日期。" - -msgid "Stored periods" -msgstr "储存周期" - -msgid "" -"The Netlink Bandwidth Monitor (nlbwmon) is a lightweight, efficient traffic " -"accounting program keeping track of bandwidth usage per host and protocol." -msgstr "" -"网络带宽监视器(nlbwmon)是一个轻量、高效的流量统计程序,可以统计每个主机和" -"协议的带宽使用情况。" - -msgid "The following database files have been restored: %s" -msgstr "以下数据库文件已恢复:%s" - -msgid "" -"The maximum amount of entries that should be put into the database, setting " -"the limit to 0 will allow databases to grow indefinitely." -msgstr "数据库中的最大条目数量, 设置为 0 将允许数据库无限增长。" - -msgid "Traffic / Host" -msgstr "流量 / 主机" - -msgid "Traffic Distribution" -msgstr "流量分布" - -msgid "Up. (Bytes / Pkts.)" -msgstr "上传(字节 / 数据包)" - -msgid "Upload (Bytes / Packets)" -msgstr "上传(字节 / 数据包)" - -msgid "Upload / Application" -msgstr "上传 / 应用层协议" - -msgid "Vendor: Example Corp." -msgstr "供应商: Example Corp." - -msgid "Warning" -msgstr "警告" - -msgid "" -"Whether to gzip compress archive databases. Compressing the database files " -"makes accessing old data slightly slower but helps to reduce storage " -"requirements." -msgstr "" -"是否使用 gzip 压缩数据库存档。压缩数据库文件会使访问旧数据稍微慢一些, 但有助" -"于减少存储占用空间。" - -msgid "" -"Whether to preallocate the maximum possible database size in memory. This is " -"mainly useful for memory constrained systems which might not be able to " -"satisfy memory allocation after longer uptime periods." -msgstr "" -"是否预先分配数据库最大可能占用的内存大小。这主要适用于内存较小系统,这些系统" -"在长时间运行之后可能无法满足数据库的内存需求。" - -msgid "no traffic" -msgstr "无流量数据" - -msgid "other" -msgstr "其他" diff --git a/package/luci/applications/luci-app-nlbwmon/root/etc/uci-defaults/40_luci-nlbwmon b/package/luci/applications/luci-app-nlbwmon/root/etc/uci-defaults/40_luci-nlbwmon deleted file mode 100644 index c9771779ee..0000000000 --- a/package/luci/applications/luci-app-nlbwmon/root/etc/uci-defaults/40_luci-nlbwmon +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@nlbwmon[-1] - add ucitrack nlbwmon - set ucitrack.@nlbwmon[-1].init=nlbwmon - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-noddos/Makefile b/package/luci/applications/luci-app-noddos/Makefile deleted file mode 100644 index 4c2b9044a9..0000000000 --- a/package/luci/applications/luci-app-noddos/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (C) 2017 Steven Hessing (steven.hessing@gmail.com) -# Based on initial implementation by Stan Grishin (stangri@melmac.net) -# This is free software, licensed under the GNU General Public License v3. - -include $(TOPDIR)/rules.mk - -PKG_LICENSE:=GPLv3 -PKG_MAINTAINER:=Steven Hessing - -LUCI_TITLE:=Noddos Service Web UI -LUCI_DESCRIPTION:=Provides Web UI for Noddos service. -LUCI_DEPENDS:=+luci +noddos -LUCI_PKGARCH:=all -PKG_RELEASE:=1 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails b/package/luci/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails deleted file mode 100755 index 6ff4ce59f2..0000000000 --- a/package/luci/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/lua - --- clientdetails.lua : Provides details about client devices discovered by Noddos --- Copyright (C) 2017 Steven Hessing (steven.hessing@gmail.com) --- This is free software, licensed under the GNU General Public License v3. - -require "nixio.fs" - -print ("Content-type: Text/html\n") -local info = os.getenv("QUERY_STRING") - -local params = {} -local echo = {} - -function print_row(key) - print ("") - print (key) - print ("") - print (device[key]) - print ("") -end - -for name, value in string.gmatch(info .. '&', '(.-)%=(.-)%&') do - value = string.gsub(value , '%+', ' ') - value = string.gsub(value , '%%(%x%x)', function(dpc) - return string.char(tonumber(dpc,16)) - end ) - params[name] = value - - value = string.gsub(value, "%&", "&") - value = string.gsub(value, "%<", "<") - value = string.gsub(value, '%"', """) - echo[name] = value -end - -device = {} -profile = {} - -if nixio.fs.access("/var/lib/noddos/DeviceDump.json") then - io.input("/var/lib/noddos/DeviceDump.json") - local t = io.read("*all") - local json = require "luci.jsonc" - local devdump = json.parse(t) - for i, v in ipairs(devdump) do - if v.MacAddress == params["mac"] then - device = v - end - end - io.input("/var/lib/noddos/DeviceProfiles.json") - t = io.read("*all") - local temp = json.parse(t) - for i, v in ipairs(temp) do - if device.DeviceProfileUuid == v.DeviceProfileUuid then - profile = v - end - end -end -pagetop = [[ - - - Client Details by Noddos - - - - - - - - - -

    Client Details

    -]] -print (pagetop) - -if params["mac"] ~= nil then - print ("") - for i, key in ipairs{"MacAddress", "Ipv4Address", "Ipv6Address", "DeviceProfileUuid", "DhcpHostname", "DhcpVendor", "SsdpFriendlyName", "SsdpLocation", "SsdpManufacturer", "SsdpModelName", "SsdpModelUrl", "SsdpSerialNumber", "SsdpServer","SsdpUserAgent", "MdnsDeviceUrl", "MdnsHw", "MdnsManufacturer", "MdnsModelName", "MdnsOs", "WsDiscoveryTypes", "WsDiscoveryXaddrs", "DnsQueries"} do - print_row(key) - end - print ("
    ") -else - print ("no mac address specified") -end - -pagebase = [[

    -Client Details by -
    Noddos - -]] - -print (pagebase) diff --git a/package/luci/applications/luci-app-noddos/luasrc/controller/noddos.lua b/package/luci/applications/luci-app-noddos/luasrc/controller/noddos.lua deleted file mode 100644 index c45e24bc97..0000000000 --- a/package/luci/applications/luci-app-noddos/luasrc/controller/noddos.lua +++ /dev/null @@ -1,10 +0,0 @@ --- Copyright 2017 Steven Hessing (steven.hessing@gmail.com) --- This is free software, licensed under the GNU General Public License v3. --- /usr/lib/lua/luci/controller/noddos.lua - -module("luci.controller.noddos", package.seeall) -function index() - entry({"admin", "status", "noddos"}, template("noddos/clients"), _("Noddos Clients"), 3) - entry({"admin", "network", "noddos"}, cbi("noddos"), _("Noddos Client Tracking"), 55) -end - diff --git a/package/luci/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua b/package/luci/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua deleted file mode 100644 index 3abb73bc66..0000000000 --- a/package/luci/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua +++ /dev/null @@ -1,46 +0,0 @@ --- Copyright 2017 Steven Hessing (steven.hessing@gmail.com) --- This is free software, licensed under the GNU General Public License v3. --- /usr/lib/lua/luci/model/cbi/noddos.lua - -m = Map("noddos", translate("Client Firewall"), - translate("Noddos controls traffic from the clients on your network to the Internet. " .. - "This helps protect your network, the bandwidth on your Internet connection and " .. - "the Internet")) - -s = m:section(TypedSection, "noddos", translate("Server Settings")) -s.anonymous = true -s.addremove = false - -s:option(Flag, "rfc1918", - translate("Private networks"), - translate("Report traffic to private networks (10/8, 172.16/12, 192.168/16, fd75:6b5d:352c:ed05::/64)")).default=false - -s:option(Flag, "upload", - translate("Upload anonimized traffic stats"), - translate("Uploading your statistics helps improving device recognition " .. - "and discovering hacked devices & botnets")) - -o = s:option(DynamicList, "whitelistipv4", - translate("Excluded IPv4 addresses"), - translate("Don't monitor these IPv4 addresses")) -o.optional = true -o.placeholder = "127.0.0.1 192.168.1.1" -o.delimiter = " " -o.datatype="list(ip4addr)" - -o = s:option(DynamicList, "whitelistipv6", - translate("Excluded IPv6 addresses"), - translate("Don't monitor these IPv6 addresses")) -o.optional = true -o.delimiter = " " -o.datatype="list(ip6addr)" - -o = s:option(DynamicList, "whitelistmac", - translate("Excluded MAC addresses"), - translate("Don't monitor these MAC addresses")) -o.optional = true -o.delimiter = " " -o.datatype="list(macaddr)" - -return m - diff --git a/package/luci/applications/luci-app-noddos/luasrc/view/noddos/clients.htm b/package/luci/applications/luci-app-noddos/luasrc/view/noddos/clients.htm deleted file mode 100644 index f2fb9312a7..0000000000 --- a/package/luci/applications/luci-app-noddos/luasrc/view/noddos/clients.htm +++ /dev/null @@ -1,111 +0,0 @@ -<%# - Copyright (C) 2017 Steven Hessing - This is free software, licensed under the GNU General Public License v3. - /usr/lib/lua/luci/view/clients.htm --%> - -<%- - - require "nixio.fs" - require "os" - - local last_modified = "" - local style = true - local v - local devdump - - if nixio.fs.access("/var/lib/noddos/DeviceDump.json") then - last_modified = os.date("%c", nixio.fs.stat("/var/lib/noddos/DeviceDump.json")['mtime']) - io.input("/var/lib/noddos/DeviceDump.json") - t = io.read("*all") - devdump = luci.jsonc.parse(t) - io.input("/var/lib/noddos/DeviceProfiles.json") - t = io.read("*all") - temp = luci.jsonc.parse(t) - devicevalues = {} - for i, v in ipairs(temp) do - devicevalues[v.DeviceProfileUuid] = v - end - end --%> - -<%+header%> - -
    -

    <%:Clients%>

    -
    <%:The following clients have been discovered on the network. The last discovery was completed at %><%=last_modified%>
    - -
    - <%:Recognized Clients%> -
    - - - - - - - - - - - <% - for i,v in ipairs(devdump) do - if v.DeviceProfileUuid ~= "" then - %> - - - - - - - - - <% - style=false - end - end - %> -
    <%:Hostname%><%:IPv4%><%:MAC%><%:Manufacturer%><%:Model%><%:Class%>
    <%=v.Hostname%><%=v.Ipv4Address%><%=v.MacAddress%><%=devicevalues[v.DeviceProfileUuid].Manufacturer%><%=devicevalues[v.DeviceProfileUuid].Model%><%=devicevalues[v.DeviceProfileUuid].ThingClass%>
    -
    -
    -
    -
    - <%:Unrecognized Clients%> -
    - - - - - - - - - - - - <% - for i,v in ipairs(devdump) do - if v.DeviceProfileUuid == "" then - %> - - - - - - - - - - <% - style=false - end - end - %> -
    <%:Hostname%><%:IPv4%><%:MAC%><%:Manufacturer%><%:Model%><%:DhcpVendor%><%:DhcpHostname%>
    <%=v.Hostname%><%=v.Ipv4Address%><%=v.MacAddress%><%=v.SsdpManufacturer%><%=v.SsdpModelName%><%=v.DhcpVendor1%><%=v.DhcpHostname%>
    -
    -
    - -
    - -<%+footer%> - diff --git a/package/luci/applications/luci-app-noddos/po/ja/noddos.po b/package/luci/applications/luci-app-noddos/po/ja/noddos.po deleted file mode 100644 index c6b461747f..0000000000 --- a/package/luci/applications/luci-app-noddos/po/ja/noddos.po +++ /dev/null @@ -1,111 +0,0 @@ -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 2.0.4\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: ja\n" - -msgid "Class" -msgstr "クラス" - -msgid "Client Firewall" -msgstr "クライアント ファイアウォール" - -msgid "Clients" -msgstr "クライアント" - -msgid "DhcpHostname" -msgstr "DHCP ホスト名" - -msgid "DhcpVendor" -msgstr "DHCP ベンダー" - -msgid "Don't monitor these IPv4 addresses" -msgstr "これらの IPv4 アドレスを監視しません。" - -msgid "Don't monitor these IPv6 addresses" -msgstr "これらの IPv6 アドレスを監視しません。" - -msgid "Don't monitor these MAC addresses" -msgstr "これらの MAC アドレスを監視しません。" - -msgid "Excluded IPv4 addresses" -msgstr "除外する IPv4 アドレス" - -msgid "Excluded IPv6 addresses" -msgstr "除外する IPv6 アドレス" - -msgid "Excluded MAC addresses" -msgstr "除外する MAC アドレス" - -msgid "Hostname" -msgstr "ホスト名" - -msgid "IPv4" -msgstr "IPv4" - -msgid "MAC" -msgstr "MAC" - -msgid "Manufacturer" -msgstr "製造元" - -msgid "Model" -msgstr "モデル" - -msgid "Noddos Client Tracking" -msgstr "Noddos クライアント トラッキング" - -msgid "Noddos Clients" -msgstr "Noddos クライアント" - -msgid "" -"Noddos controls traffic from the clients on your network to the Internet. " -"This helps protect your network, the bandwidth on your Internet connection " -"and the Internet" -msgstr "" -"Noddos は、ネットワーク内のクライアントからインターネットへのトラフィックを制" -"御します。これは、ネットワークとインターネット接続の帯域幅、インターネットの" -"保護に役立ちます。" - -msgid "Private networks" -msgstr "プライベート ネットワーク" - -msgid "Recognized Clients" -msgstr "識別済クライアント" - -msgid "" -"Report traffic to private networks (10/8, 172.16/12, 192.168/16, " -"fd75:6b5d:352c:ed05::/64)" -msgstr "" -"プライベート ネットワークへのトラフィックについてのレポート(10/8, " -"172.16/12, 192.168/16, fd75:6b5d:352c:ed05::/64)" - -msgid "Server Settings" -msgstr "サーバー設定" - -msgid "" -"The following clients have been discovered on the network. The last " -"discovery was completed at" -msgstr "" -"以下のクライアントがネットワーク内で見つかりました。探索の最終実行日時:" - -msgid "Unrecognized Clients" -msgstr "未識別クライアント" - -msgid "Upload anonimized traffic stats" -msgstr "匿名トラフィック状況のアップロード" - -msgid "" -"Uploading your statistics helps improving device recognition and discovering " -"hacked devices & botnets" -msgstr "" -"デバイスの識別や、ハックされたデバイスとボットネットの発見の改善に役立てるた" -"め、統計をアップロードします。" diff --git a/package/luci/applications/luci-app-noddos/po/templates/noddos.pot b/package/luci/applications/luci-app-noddos/po/templates/noddos.pot deleted file mode 100644 index 69d135770b..0000000000 --- a/package/luci/applications/luci-app-noddos/po/templates/noddos.pot +++ /dev/null @@ -1,92 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Class" -msgstr "" - -msgid "Client Firewall" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "DhcpHostname" -msgstr "" - -msgid "DhcpVendor" -msgstr "" - -msgid "Don't monitor these IPv4 addresses" -msgstr "" - -msgid "Don't monitor these IPv6 addresses" -msgstr "" - -msgid "Don't monitor these MAC addresses" -msgstr "" - -msgid "Excluded IPv4 addresses" -msgstr "" - -msgid "Excluded IPv6 addresses" -msgstr "" - -msgid "Excluded MAC addresses" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "Manufacturer" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Noddos Client Tracking" -msgstr "" - -msgid "Noddos Clients" -msgstr "" - -msgid "" -"Noddos controls traffic from the clients on your network to the Internet. " -"This helps protect your network, the bandwidth on your Internet connection " -"and the Internet" -msgstr "" - -msgid "Private networks" -msgstr "" - -msgid "Recognized Clients" -msgstr "" - -msgid "" -"Report traffic to private networks (10/8, 172.16/12, 192.168/16, " -"fd75:6b5d:352c:ed05::/64)" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "" -"The following clients have been discovered on the network. The last " -"discovery was completed at" -msgstr "" - -msgid "Unrecognized Clients" -msgstr "" - -msgid "Upload anonimized traffic stats" -msgstr "" - -msgid "" -"Uploading your statistics helps improving device recognition and discovering " -"hacked devices & botnets" -msgstr "" diff --git a/package/luci/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos b/package/luci/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos deleted file mode 100644 index 17abbc41ca..0000000000 --- a/package/luci/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2017 Steven Hessing (steven.hessing@live.com) -# This is free software, licensed under the GNU General Public License v3 - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@noddos[-1] - add ucitrack noddos - set ucitrack.@noddos[-1].init=noddos - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-ntpc/Makefile b/package/luci/applications/luci-app-ntpc/Makefile deleted file mode 100644 index b30f967a1c..0000000000 --- a/package/luci/applications/luci-app-ntpc/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=NTP time synchronisation configuration module -LUCI_DEPENDS:=+ntpclient - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-ntpc/luasrc/controller/ntpc.lua b/package/luci/applications/luci-app-ntpc/luasrc/controller/ntpc.lua deleted file mode 100644 index c21d4eaa7c..0000000000 --- a/package/luci/applications/luci-app-ntpc/luasrc/controller/ntpc.lua +++ /dev/null @@ -1,19 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.ntpc", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/ntpclient") then - return - end - - local page - - page = entry({"admin", "system", "ntpc"}, cbi("ntpc/ntpc"), _("Time Synchronisation"), 50) - page.dependent = true - - page = entry({"mini", "system", "ntpc"}, cbi("ntpc/ntpcmini", {autoapply=true}), _("Time Synchronisation"), 50) - page.dependent = true -end diff --git a/package/luci/applications/luci-app-ntpc/luasrc/model/cbi/ntpc/ntpc.lua b/package/luci/applications/luci-app-ntpc/luasrc/model/cbi/ntpc/ntpc.lua deleted file mode 100644 index 21ea88e309..0000000000 --- a/package/luci/applications/luci-app-ntpc/luasrc/model/cbi/ntpc/ntpc.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("ntpclient", translate("Time Synchronisation"), translate("Synchronizes the system time")) - -s = m:section(TypedSection, "ntpclient", translate("General")) -s.anonymous = true -s.addremove = false - -s:option(DummyValue, "_time", translate("Current system time")).value = os.date("%c") - -interval = s:option(Value, "interval", translate("Update interval (in seconds)")) -interval.datatype = "and(uinteger,min(1))" -interval.rmempty = true - -count = s:option(Value, "count", translate("Count of time measurements"), translate("empty = infinite")) -count.datatype = "and(uinteger,min(1))" -count.rmempty = true - -s2 = m:section(TypedSection, "ntpdrift", translate("Clock Adjustment")) -s2.anonymous = true -s2.addremove = false - -freq = s2:option(Value, "freq", translate("Offset frequency")) -freq.datatype = "integer" -freq.rmempty = true - -s3 = m:section(TypedSection, "ntpserver", translate("Time Servers")) -s3.anonymous = true -s3.addremove = true -s3.template = "cbi/tblsection" - -s3:option(Value, "hostname", translate("Hostname")) -port = s3:option(Value, "port", translate("Port")) -port.datatype = "port" -port.rmempty = true - -return m diff --git a/package/luci/applications/luci-app-ntpc/luasrc/model/cbi/ntpc/ntpcmini.lua b/package/luci/applications/luci-app-ntpc/luasrc/model/cbi/ntpc/ntpcmini.lua deleted file mode 100644 index 82811cfbb8..0000000000 --- a/package/luci/applications/luci-app-ntpc/luasrc/model/cbi/ntpc/ntpcmini.lua +++ /dev/null @@ -1,28 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require("luci.tools.webadmin") -m = Map("ntpclient", translate("Time Synchronisation"), translate("Synchronizes the system time")) - -s = m:section(TypedSection, "ntpclient", translate("General")) -s.anonymous = true -s.addremove = false - -s:option(DummyValue, "_time", translate("Current system time")).value = os.date("%c") - -interval = s:option(Value, "interval", translate("Update interval (in seconds)")) -interval.datatype = "and(uinteger,min(1))" -interval.rmempty = true - -s3 = m:section(TypedSection, "ntpserver", translate("Time Server")) -s3.anonymous = true -s3.addremove = true -s3.template = "cbi/tblsection" - -s3:option(Value, "hostname", translate("Hostname")) -port = s3:option(Value, "port", translate("Port")) -port.datatype = "port" -port.rmempty = true - -return m diff --git a/package/luci/applications/luci-app-ntpc/po/ca/ntpc.po b/package/luci/applications/luci-app-ntpc/po/ca/ntpc.po deleted file mode 100644 index 1a0f5fbc80..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/ca/ntpc.po +++ /dev/null @@ -1,57 +0,0 @@ -# ntpc.pot -# generated from ./applications/luci-ntpc/luasrc/i18n/ntpc.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2014-07-03 20:32+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Ajustament de rellotge" - -#, fuzzy -msgid "Count of time measurements" -msgstr "Compte de mesures d'horari" - -msgid "Current system time" -msgstr "Horari del sistema actual" - -msgid "General" -msgstr "General" - -msgid "Hostname" -msgstr "Nom de host" - -#, fuzzy -msgid "Offset frequency" -msgstr "Compensació de freqüència" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Sincronitza l'hora del sistema" - -msgid "Time Server" -msgstr "Servidor d'horari" - -msgid "Time Servers" -msgstr "Servidors d'horari" - -msgid "Time Synchronisation" -msgstr "Sincronització d'horari" - -msgid "Update interval (in seconds)" -msgstr "Interval d'actualització (en segons)" - -msgid "empty = infinite" -msgstr "buit = infinit" diff --git a/package/luci/applications/luci-app-ntpc/po/cs/ntpc.po b/package/luci/applications/luci-app-ntpc/po/cs/ntpc.po deleted file mode 100644 index 8c342deaab..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/cs/ntpc.po +++ /dev/null @@ -1,55 +0,0 @@ -# Generated from applications/luci-ntpc/luasrc/model/cbi/ntpc/*.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2014-04-14 12:47+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Úprava času" - -msgid "Count of time measurements" -msgstr "Počet měření času" - -msgid "Current system time" -msgstr "Aktuální systémový čas" - -msgid "General" -msgstr "Obecné nastavení" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Offset frequency" -msgstr "Offsetová frekvence (chyba měření času)" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Synchronizuje systémový čas s přesným reálným časem přes síť" - -msgid "Time Server" -msgstr "Synchronizační server" - -msgid "Time Servers" -msgstr "Synchronizační servery" - -msgid "Time Synchronisation" -msgstr "Synchronizace času" - -msgid "Update interval (in seconds)" -msgstr "Interval obnovy synchronizace (v sekundách)" - -msgid "empty = infinite" -msgstr "prázdný = neustálé opakování" diff --git a/package/luci/applications/luci-app-ntpc/po/de/ntpc.po b/package/luci/applications/luci-app-ntpc/po/de/ntpc.po deleted file mode 100644 index b6109358d0..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/de/ntpc.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-07-17 15:07+0200\n" -"Last-Translator: Martin \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Zeitgeberjustierung" - -msgid "Count of time measurements" -msgstr "Anzahl der Zeitmessungen" - -msgid "Current system time" -msgstr "Aktuelle Systemzeit" - -msgid "General" -msgstr "Allgemein" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Offset frequency" -msgstr "Frequenzabweichung" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Synchronisiert die Systemzeit" - -msgid "Time Server" -msgstr "Zeitserver" - -msgid "Time Servers" -msgstr "Zeitserver" - -msgid "Time Synchronisation" -msgstr "Zeitsynchronisation" - -msgid "Update interval (in seconds)" -msgstr "Aktualisierungsintervall (in Sekunden)" - -msgid "empty = infinite" -msgstr "leer = unendlich" diff --git a/package/luci/applications/luci-app-ntpc/po/el/ntpc.po b/package/luci/applications/luci-app-ntpc/po/el/ntpc.po deleted file mode 100644 index c8f22ebaa5..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/el/ntpc.po +++ /dev/null @@ -1,56 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-03-31 15:40+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Clock Adjustment" -msgstr "Ρύθμιση Ρολογιού" - -msgid "Count of time measurements" -msgstr "Πλήθος μετρήσεων ώρας" - -msgid "Current system time" -msgstr "Τρέχουσα ώρα συστήματος" - -msgid "General" -msgstr "Γενικά" - -msgid "Hostname" -msgstr "Όνομα συστήματος" - -#, fuzzy -msgid "Offset frequency" -msgstr "Συχνότητα μετάθεσης" - -msgid "Port" -msgstr "Θύρα" - -msgid "Synchronizes the system time" -msgstr "Συγχρονίζει την ώρα του συστήματος" - -msgid "Time Server" -msgstr "" - -#, fuzzy -msgid "Time Servers" -msgstr "Εξυπηρετητές Ώρας" - -msgid "Time Synchronisation" -msgstr "Συγχρονισμός Ώρας" - -#, fuzzy -msgid "Update interval (in seconds)" -msgstr "Περίοδος ενημέρωσης (σε δευτερόλεπτα)" - -msgid "empty = infinite" -msgstr "άδειο = άπειρος" diff --git a/package/luci/applications/luci-app-ntpc/po/en/ntpc.po b/package/luci/applications/luci-app-ntpc/po/en/ntpc.po deleted file mode 100644 index 803a99656a..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/en/ntpc.po +++ /dev/null @@ -1,51 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Clock Adjustment" -msgstr "Clock Adjustment" - -msgid "Count of time measurements" -msgstr "Count of time measurements" - -msgid "Current system time" -msgstr "Current system time" - -msgid "General" -msgstr "General" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Offset frequency" -msgstr "Offset frequency" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Synchronizes the system time" - -msgid "Time Server" -msgstr "" - -msgid "Time Servers" -msgstr "Time Servers" - -msgid "Time Synchronisation" -msgstr "Time Synchronisation" - -msgid "Update interval (in seconds)" -msgstr "Update interval (in seconds)" - -msgid "empty = infinite" -msgstr "empty = infinite" diff --git a/package/luci/applications/luci-app-ntpc/po/es/ntpc.po b/package/luci/applications/luci-app-ntpc/po/es/ntpc.po deleted file mode 100644 index 40edf249bb..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/es/ntpc.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-11-25 11:14+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Ajuste del Reloj" - -msgid "Count of time measurements" -msgstr "Medida del tiempo" - -msgid "Current system time" -msgstr "Hora actual del sistema" - -msgid "General" -msgstr "General" - -msgid "Hostname" -msgstr "Nombre de la máquina" - -msgid "Offset frequency" -msgstr "Desplazamiento de frecuencia" - -msgid "Port" -msgstr "Puerto" - -msgid "Synchronizes the system time" -msgstr "Sincronizar la hora del sistema" - -msgid "Time Server" -msgstr "Servidor de tiempo" - -msgid "Time Servers" -msgstr "Servidores de hora" - -msgid "Time Synchronisation" -msgstr "Sincronización horaria" - -msgid "Update interval (in seconds)" -msgstr "Intervalo de actualización (en segundos)" - -msgid "empty = infinite" -msgstr "vacío = infinito" diff --git a/package/luci/applications/luci-app-ntpc/po/fr/ntpc.po b/package/luci/applications/luci-app-ntpc/po/fr/ntpc.po deleted file mode 100644 index d417e15e47..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/fr/ntpc.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-11-06 16:08+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Ajustement de l'horloge" - -msgid "Count of time measurements" -msgstr "Nombre de mesures du temps" - -msgid "Current system time" -msgstr "Temps système actuel" - -msgid "General" -msgstr "Général" - -msgid "Hostname" -msgstr "Nom d'hôte" - -msgid "Offset frequency" -msgstr "Décalage en fréquence" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Synchronise le temps système" - -msgid "Time Server" -msgstr "Serveur temps " - -msgid "Time Servers" -msgstr "Serveurs de temps" - -msgid "Time Synchronisation" -msgstr "Synchronisation du temps" - -msgid "Update interval (in seconds)" -msgstr "Intervalle de mise à jour (en secondes)" - -msgid "empty = infinite" -msgstr "vide = infini" diff --git a/package/luci/applications/luci-app-ntpc/po/he/ntpc.po b/package/luci/applications/luci-app-ntpc/po/he/ntpc.po deleted file mode 100644 index 9d2bee6303..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/he/ntpc.po +++ /dev/null @@ -1,59 +0,0 @@ -# Generated from applications/luci-ntpc/luasrc/model/cbi/ntpc/*.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2011-06-25 11:40+0200\n" -"Last-Translator: GiladL \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -# התאמת שעון? -#, fuzzy -msgid "Clock Adjustment" -msgstr "כיוון שעון" - -#, fuzzy -msgid "Count of time measurements" -msgstr "ספירת יחידות זמן" - -msgid "Current system time" -msgstr "זמן מערכת נוכחי" - -msgid "General" -msgstr "כללי" - -msgid "Hostname" -msgstr "שם מארח" - -#, fuzzy -msgid "Offset frequency" -msgstr "תדירות סטייה" - -msgid "Port" -msgstr "פורט" - -msgid "Synchronizes the system time" -msgstr "מסנכרן את זמן המערכת" - -msgid "Time Server" -msgstr "" - -msgid "Time Servers" -msgstr "שרתי זמן" - -msgid "Time Synchronisation" -msgstr "סנכרון זמן" - -msgid "Update interval (in seconds)" -msgstr "מרווח בין עדכונים (בשניות)" - -msgid "empty = infinite" -msgstr "ריק = אינסופי" diff --git a/package/luci/applications/luci-app-ntpc/po/hu/ntpc.po b/package/luci/applications/luci-app-ntpc/po/hu/ntpc.po deleted file mode 100644 index f69046f5fc..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/hu/ntpc.po +++ /dev/null @@ -1,55 +0,0 @@ -# Generated from applications/luci-ntpc/luasrc/model/cbi/ntpc/*.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-07-10 21:05+0200\n" -"Last-Translator: Gyula \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Óra igazítás" - -msgid "Count of time measurements" -msgstr "Időmérések száma" - -msgid "Current system time" -msgstr "Jelenlegi rendszeridő" - -msgid "General" -msgstr "Általános" - -msgid "Hostname" -msgstr "Gépnév" - -msgid "Offset frequency" -msgstr "Frekvencia eltolás" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "A rendszeridő szinkronizálása" - -msgid "Time Server" -msgstr "Időszerver" - -msgid "Time Servers" -msgstr "Időkiszolgálók" - -msgid "Time Synchronisation" -msgstr "Idő szinkronizálás" - -msgid "Update interval (in seconds)" -msgstr "Frissítési időköz (másodpercben)" - -msgid "empty = infinite" -msgstr "üres = végtelen" diff --git a/package/luci/applications/luci-app-ntpc/po/it/ntpc.po b/package/luci/applications/luci-app-ntpc/po/it/ntpc.po deleted file mode 100644 index 4b027b7f49..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/it/ntpc.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2013-02-03 13:56+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Impostazione Ora" - -msgid "Count of time measurements" -msgstr "Conteggio delle misure del tempo" - -msgid "Current system time" -msgstr "Ora corrente del sistema" - -msgid "General" -msgstr "Generale" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Offset frequency" -msgstr "Offset delle frequenza" - -msgid "Port" -msgstr "Porta" - -msgid "Synchronizes the system time" -msgstr "Sincronizza l'ora di sistema" - -msgid "Time Server" -msgstr "Server Orologio" - -msgid "Time Servers" -msgstr "Server dell'ora" - -msgid "Time Synchronisation" -msgstr "Sincronizzazione dell'ora" - -msgid "Update interval (in seconds)" -msgstr "Intervallo di aggiornamento (in secondi)" - -msgid "empty = infinite" -msgstr "vuoto = infinito" diff --git a/package/luci/applications/luci-app-ntpc/po/ja/ntpc.po b/package/luci/applications/luci-app-ntpc/po/ja/ntpc.po deleted file mode 100644 index bb6135cc2d..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/ja/ntpc.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-11-14 14:41+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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" - -msgid "Clock Adjustment" -msgstr "時刻調整" - -msgid "Count of time measurements" -msgstr "時間計測回数" - -msgid "Current system time" -msgstr "現在時刻" - -msgid "General" -msgstr "一般設定" - -msgid "Hostname" -msgstr "ホスト名" - -msgid "Offset frequency" -msgstr "オフセット周波数" - -msgid "Port" -msgstr "ポート" - -msgid "Synchronizes the system time" -msgstr "システムの時間を同期します。" - -msgid "Time Server" -msgstr "時刻サーバー" - -msgid "Time Servers" -msgstr "時刻サーバー" - -msgid "Time Synchronisation" -msgstr "Time Synchronisation" - -msgid "Update interval (in seconds)" -msgstr "アップデート間隔 (秒)" - -msgid "empty = infinite" -msgstr "空の場合、無限大になります" diff --git a/package/luci/applications/luci-app-ntpc/po/ms/ntpc.po b/package/luci/applications/luci-app-ntpc/po/ms/ntpc.po deleted file mode 100644 index abbfdbe6b1..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/ms/ntpc.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-ntpc/luasrc/model/cbi/ntpc/*.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2010-04-14 13:24+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Clock Adjustment" -msgstr "" - -msgid "Count of time measurements" -msgstr "" - -msgid "Current system time" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Offset frequency" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Synchronizes the system time" -msgstr "" - -msgid "Time Server" -msgstr "" - -msgid "Time Servers" -msgstr "" - -msgid "Time Synchronisation" -msgstr "" - -msgid "Update interval (in seconds)" -msgstr "" - -msgid "empty = infinite" -msgstr "" diff --git a/package/luci/applications/luci-app-ntpc/po/no/ntpc.po b/package/luci/applications/luci-app-ntpc/po/no/ntpc.po deleted file mode 100644 index 7b3fd0b369..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/no/ntpc.po +++ /dev/null @@ -1,44 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Clock Adjustment" -msgstr "Tidskorrigering" - -msgid "Count of time measurements" -msgstr "Antall tidsmålinger" - -msgid "Current system time" -msgstr "Nåværende system tid" - -msgid "General" -msgstr "Generelt" - -msgid "Hostname" -msgstr "Vertsnavn" - -msgid "Offset frequency" -msgstr "Frekvens forskyvning" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Synkroniserer systemets tid" - -msgid "Time Server" -msgstr "Tids Server" - -msgid "Time Servers" -msgstr "Tids Servere" - -msgid "Time Synchronisation" -msgstr "Tidssynkronisering" - -msgid "Update interval (in seconds)" -msgstr "Oppdateringsintervall (i sek)" - -msgid "empty = infinite" -msgstr "tomt = uendelig" diff --git a/package/luci/applications/luci-app-ntpc/po/pl/ntpc.po b/package/luci/applications/luci-app-ntpc/po/pl/ntpc.po deleted file mode 100644 index c2cb3e8a94..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/pl/ntpc.po +++ /dev/null @@ -1,54 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2011-09-18 02:23+0200\n" -"Last-Translator: Michał \n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Clock Adjustment" -msgstr "Regulacja zegara" - -msgid "Count of time measurements" -msgstr "Liczba pomiarów czasu" - -msgid "Current system time" -msgstr "Aktualny czas systemowy" - -msgid "General" -msgstr "Główne" - -msgid "Hostname" -msgstr "Nazwa hosta" - -msgid "Offset frequency" -msgstr "Przesunięcie częstotliwości" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Synchronizuje czas systemowy" - -msgid "Time Server" -msgstr "Serwer czasu" - -msgid "Time Servers" -msgstr "Serwery czasu" - -msgid "Time Synchronisation" -msgstr "Synchronizacja czasu" - -msgid "Update interval (in seconds)" -msgstr "Interwał aktualizacji (w sekundach)" - -msgid "empty = infinite" -msgstr "puste = nieskończone" diff --git a/package/luci/applications/luci-app-ntpc/po/pt-br/ntpc.po b/package/luci/applications/luci-app-ntpc/po/pt-br/ntpc.po deleted file mode 100644 index 9e8849a2d5..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/pt-br/ntpc.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2011-10-18 22:38+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Clock Adjustment" -msgstr "Ajuste do Relógio" - -msgid "Count of time measurements" -msgstr "Quantidade de medições do tempo" - -msgid "Current system time" -msgstr "Hora atual do sistema" - -msgid "General" -msgstr "Geral" - -msgid "Hostname" -msgstr "Nome do computador" - -msgid "Offset frequency" -msgstr "Frequência da compensação" - -msgid "Port" -msgstr "Porta" - -msgid "Synchronizes the system time" -msgstr "Sincroniza a hora do sistema" - -msgid "Time Server" -msgstr "Servidor de Hora." - -msgid "Time Servers" -msgstr "Servidores de Hora" - -msgid "Time Synchronisation" -msgstr "Sincronização de Horário" - -msgid "Update interval (in seconds)" -msgstr "Intervalo de atualização (em segundos)" - -msgid "empty = infinite" -msgstr "vazio = infinito" diff --git a/package/luci/applications/luci-app-ntpc/po/pt/ntpc.po b/package/luci/applications/luci-app-ntpc/po/pt/ntpc.po deleted file mode 100644 index 70e7952c80..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/pt/ntpc.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2013-05-01 01:16+0200\n" -"Last-Translator: pedromrgoncalves \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Ajuste do Relógio" - -msgid "Count of time measurements" -msgstr "Quantas vezes irá atualizar" - -msgid "Current system time" -msgstr "Hora actual do sistema" - -msgid "General" -msgstr "Geral" - -msgid "Hostname" -msgstr "Nome do Host" - -msgid "Offset frequency" -msgstr "Frequência do Offset" - -msgid "Port" -msgstr "Porta" - -msgid "Synchronizes the system time" -msgstr "Sincroniza a hora do sistema" - -msgid "Time Server" -msgstr "Servidor de Hora" - -msgid "Time Servers" -msgstr "Servidores de Hora" - -msgid "Time Synchronisation" -msgstr "Sincronização de Horário" - -msgid "Update interval (in seconds)" -msgstr "Intervalo de Actualização (em s)" - -msgid "empty = infinite" -msgstr "vazio = infinito" diff --git a/package/luci/applications/luci-app-ntpc/po/ro/ntpc.po b/package/luci/applications/luci-app-ntpc/po/ro/ntpc.po deleted file mode 100644 index 893419f20d..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/ro/ntpc.po +++ /dev/null @@ -1,56 +0,0 @@ -# Generated from applications/luci-ntpc/luasrc/model/cbi/ntpc/*.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-12-01 16:08+0200\n" -"Last-Translator: cgherman \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Ajustarea ceasului" - -msgid "Count of time measurements" -msgstr "Masuratori de timp" - -msgid "Current system time" -msgstr "Timpul curent de sistem" - -msgid "General" -msgstr "General" - -msgid "Hostname" -msgstr "Numele de host" - -msgid "Offset frequency" -msgstr "Frecventa de offset" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Sincronizeaza timpul sistemului" - -msgid "Time Server" -msgstr "Server de timp" - -msgid "Time Servers" -msgstr "Serverele de timp" - -msgid "Time Synchronisation" -msgstr "Sincronizarea de timp" - -msgid "Update interval (in seconds)" -msgstr "Intervalul de actualizare (in secunde)" - -msgid "empty = infinite" -msgstr "gol = infinit" diff --git a/package/luci/applications/luci-app-ntpc/po/ru/ntpc.po b/package/luci/applications/luci-app-ntpc/po/ru/ntpc.po deleted file mode 100644 index 229b6101ba..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/ru/ntpc.po +++ /dev/null @@ -1,55 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: ntpc\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-08-15 11:41+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Clock Adjustment" -msgstr "Корректировка часов" - -msgid "Count of time measurements" -msgstr "Количество измерений времени" - -msgid "Current system time" -msgstr "Текущее время" - -msgid "General" -msgstr "Общие" - -msgid "Hostname" -msgstr "Имя хоста" - -msgid "Offset frequency" -msgstr "Смещение частоты" - -msgid "Port" -msgstr "Порт" - -msgid "Synchronizes the system time" -msgstr "Синхронизирует системное время" - -msgid "Time Server" -msgstr "Сервер времени" - -msgid "Time Servers" -msgstr "Серверы времени" - -msgid "Time Synchronisation" -msgstr "Синхронизация времени" - -msgid "Update interval (in seconds)" -msgstr "Интервал обновления (в секундах)" - -msgid "empty = infinite" -msgstr "пусто = бесконечно" diff --git a/package/luci/applications/luci-app-ntpc/po/sk/ntpc.po b/package/luci/applications/luci-app-ntpc/po/sk/ntpc.po deleted file mode 100644 index d3f8fb8724..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/sk/ntpc.po +++ /dev/null @@ -1,48 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Clock Adjustment" -msgstr "" - -msgid "Count of time measurements" -msgstr "" - -msgid "Current system time" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Offset frequency" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Synchronizes the system time" -msgstr "" - -msgid "Time Server" -msgstr "" - -msgid "Time Servers" -msgstr "" - -msgid "Time Synchronisation" -msgstr "" - -msgid "Update interval (in seconds)" -msgstr "" - -msgid "empty = infinite" -msgstr "" diff --git a/package/luci/applications/luci-app-ntpc/po/sv/ntpc.po b/package/luci/applications/luci-app-ntpc/po/sv/ntpc.po deleted file mode 100644 index ce1032c7c6..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/sv/ntpc.po +++ /dev/null @@ -1,49 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Clock Adjustment" -msgstr "Justering av klocka" - -msgid "Count of time measurements" -msgstr "" - -msgid "Current system time" -msgstr "Nuvarande systemtid" - -msgid "General" -msgstr "Generell" - -msgid "Hostname" -msgstr "Värdnamn" - -msgid "Offset frequency" -msgstr "Inledningsfrekvens" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Synkroniserar systemtiden" - -msgid "Time Server" -msgstr "Tidsserver" - -msgid "Time Servers" -msgstr "Tidsservrar" - -msgid "Time Synchronisation" -msgstr "Synkronisering av tid" - -msgid "Update interval (in seconds)" -msgstr "Intervall för uppdateringar (i sekunder)" - -msgid "empty = infinite" -msgstr "tom = oändlig" diff --git a/package/luci/applications/luci-app-ntpc/po/templates/ntpc.pot b/package/luci/applications/luci-app-ntpc/po/templates/ntpc.pot deleted file mode 100644 index 1ed4c40e47..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/templates/ntpc.pot +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Clock Adjustment" -msgstr "" - -msgid "Count of time measurements" -msgstr "" - -msgid "Current system time" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Offset frequency" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Synchronizes the system time" -msgstr "" - -msgid "Time Server" -msgstr "" - -msgid "Time Servers" -msgstr "" - -msgid "Time Synchronisation" -msgstr "" - -msgid "Update interval (in seconds)" -msgstr "" - -msgid "empty = infinite" -msgstr "" diff --git a/package/luci/applications/luci-app-ntpc/po/tr/ntpc.po b/package/luci/applications/luci-app-ntpc/po/tr/ntpc.po deleted file mode 100644 index 657b2e8be7..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/tr/ntpc.po +++ /dev/null @@ -1,55 +0,0 @@ -# Generated from applications/luci-ntpc/luasrc/model/cbi/ntpc/*.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-10-11 22:20+0200\n" -"Last-Translator: vincenzo \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Clock Adjustment" -msgstr "Saat Ayarı" - -msgid "Count of time measurements" -msgstr "Zaman Ölçüm Sayacı" - -msgid "Current system time" -msgstr "Mevcut Sistem Saati" - -msgid "General" -msgstr "Genel" - -msgid "Hostname" -msgstr "Sunucu Adı" - -msgid "Offset frequency" -msgstr "Denge Frekansı" - -msgid "Port" -msgstr "Port" - -msgid "Synchronizes the system time" -msgstr "Sistem Saati Senkronizasyonu" - -msgid "Time Server" -msgstr "Zaman Sunucusu" - -msgid "Time Servers" -msgstr "Zaman Sunucuları" - -msgid "Time Synchronisation" -msgstr "Saat Senkronizasyonu" - -msgid "Update interval (in seconds)" -msgstr "Güncelleme Aralığı (Saniye)" - -msgid "empty = infinite" -msgstr "Boş = Sonsuz" diff --git a/package/luci/applications/luci-app-ntpc/po/uk/ntpc.po b/package/luci/applications/luci-app-ntpc/po/uk/ntpc.po deleted file mode 100644 index 451f783f98..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/uk/ntpc.po +++ /dev/null @@ -1,56 +0,0 @@ -# Generated from applications/luci-ntpc/luasrc/model/cbi/ntpc/*.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-03-18 20:32+0200\n" -"Last-Translator: YuriPet \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Clock Adjustment" -msgstr "Коригування годинника" - -msgid "Count of time measurements" -msgstr "Кількість вимірювань часу" - -msgid "Current system time" -msgstr "Поточний системний час" - -msgid "General" -msgstr "Загальне" - -msgid "Hostname" -msgstr "Назва (ім'я) вузла" - -msgid "Offset frequency" -msgstr "Зсув частоти" - -msgid "Port" -msgstr "Порт" - -msgid "Synchronizes the system time" -msgstr "Синхронізація системного часу" - -msgid "Time Server" -msgstr "Сервер часу" - -msgid "Time Servers" -msgstr "Сервери часу" - -msgid "Time Synchronisation" -msgstr "Синхронізація часу" - -msgid "Update interval (in seconds)" -msgstr "Інтервал оновлення (в секундах)" - -msgid "empty = infinite" -msgstr "пусто = нескінченно" diff --git a/package/luci/applications/luci-app-ntpc/po/vi/ntpc.po b/package/luci/applications/luci-app-ntpc/po/vi/ntpc.po deleted file mode 100644 index 4de0971cb8..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/vi/ntpc.po +++ /dev/null @@ -1,57 +0,0 @@ -# ntpc.pot -# generated from ./applications/luci-ntpc/luasrc/i18n/ntpc.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2009-08-13 03:46+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "Clock Adjustment" -msgstr "Điều chỉnh đồng hồ" - -#, fuzzy -msgid "Count of time measurements" -msgstr "Đếm thời gian" - -msgid "Current system time" -msgstr "Thời gian hiện tại của hệ thống" - -msgid "General" -msgstr "" - -msgid "Hostname" -msgstr "" - -#, fuzzy -msgid "Offset frequency" -msgstr "tần số offset " - -msgid "Port" -msgstr "" - -msgid "Synchronizes the system time" -msgstr "Đồng bộ hóa giờ hệ thống" - -msgid "Time Server" -msgstr "" - -#, fuzzy -msgid "Time Servers" -msgstr "Giờ server" - -msgid "Time Synchronisation" -msgstr "Thời gian đồng bộ hóa" - -#, fuzzy -msgid "Update interval (in seconds)" -msgstr "Cập nhật Interval (giây)" - -msgid "empty = infinite" -msgstr "Rỗng = Vô tận" diff --git a/package/luci/applications/luci-app-ntpc/po/zh-cn/ntpc.po b/package/luci/applications/luci-app-ntpc/po/zh-cn/ntpc.po deleted file mode 100644 index 0821c3f46f..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/zh-cn/ntpc.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCi Chinese Translation\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-14 13:24+0200\n" -"PO-Revision-Date: 2012-11-15 21:39+0200\n" -"Last-Translator: Rui \n" -"Language-Team: QQ Group 75543259\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" - -msgid "Clock Adjustment" -msgstr "时钟校对" - -msgid "Count of time measurements" -msgstr "单位时间数" - -msgid "Current system time" -msgstr "当前系统时间" - -msgid "General" -msgstr "基本设置" - -msgid "Hostname" -msgstr "主机名" - -msgid "Offset frequency" -msgstr "偏移量" - -msgid "Port" -msgstr "端口" - -msgid "Synchronizes the system time" -msgstr "同步系统时间" - -msgid "Time Server" -msgstr "时间服务器" - -msgid "Time Servers" -msgstr "时间服务器" - -msgid "Time Synchronisation" -msgstr "时间同步" - -msgid "Update interval (in seconds)" -msgstr "更新间隔(秒)" - -msgid "empty = infinite" -msgstr "空值为无限长度" diff --git a/package/luci/applications/luci-app-ntpc/po/zh-tw/ntpc.po b/package/luci/applications/luci-app-ntpc/po/zh-tw/ntpc.po deleted file mode 100644 index a898671136..0000000000 --- a/package/luci/applications/luci-app-ntpc/po/zh-tw/ntpc.po +++ /dev/null @@ -1,51 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 18:43+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Clock Adjustment" -msgstr "校時修正" - -msgid "Count of time measurements" -msgstr "時間計量次數" - -msgid "Current system time" -msgstr "目前系統時間" - -msgid "General" -msgstr "一般" - -msgid "Hostname" -msgstr "主機名稱" - -msgid "Offset frequency" -msgstr "偏移頻道" - -msgid "Port" -msgstr "埠號" - -msgid "Synchronizes the system time" -msgstr "同步這個系統時間" - -msgid "Time Server" -msgstr "校時伺服器" - -msgid "Time Servers" -msgstr "校時伺服器" - -msgid "Time Synchronisation" -msgstr "校時同步" - -msgid "Update interval (in seconds)" -msgstr "更新間隔(秒)" - -msgid "empty = infinite" -msgstr "留白=不限制" diff --git a/package/luci/applications/luci-app-ocserv/Makefile b/package/luci/applications/luci-app-ocserv/Makefile deleted file mode 100644 index 3fbf4d2c1b..0000000000 --- a/package/luci/applications/luci-app-ocserv/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for OpenConnect VPN -LUCI_DEPENDS:=+ocserv +certtool - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-ocserv/luasrc/controller/ocserv.lua b/package/luci/applications/luci-app-ocserv/luasrc/controller/ocserv.lua deleted file mode 100644 index 79c6ddb78e..0000000000 --- a/package/luci/applications/luci-app-ocserv/luasrc/controller/ocserv.lua +++ /dev/null @@ -1,78 +0,0 @@ --- Copyright 2014 Nikos Mavrogiannopoulos --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.ocserv", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/ocserv") then - return - end - - local page - - page = entry({"admin", "services", "ocserv"}, alias("admin", "services", "ocserv", "main"), - _("OpenConnect VPN")) - page.dependent = true - - page = entry({"admin", "services", "ocserv", "main"}, - cbi("ocserv/main"), - _("Server Settings"), 200) - page.dependent = true - - page = entry({"admin", "services", "ocserv", "users"}, - cbi("ocserv/users"), - _("User Settings"), 300) - page.dependent = true - - entry({"admin", "services", "ocserv", "status"}, - call("ocserv_status")).leaf = true - - entry({"admin", "services", "ocserv", "disconnect"}, - post("ocserv_disconnect")).leaf = true - -end - -function ocserv_status() - local ipt = io.popen("/usr/bin/occtl show users"); - - if ipt then - - local fwd = { } - while true do - - local ln = ipt:read("*l") - if not ln then break end - - local id, user, group, vpn_ip, ip, device, time, cipher, status = - ln:match("^%s*(%d+)%s+([-_%w]+)%s+([%(%)%.%*-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%(%)%:%.-_%w]+)%s+([%:%.-_%w]+).*") - if id then - fwd[#fwd+1] = { - id = id, - user = user, - group = group, - vpn_ip = vpn_ip, - ip = ip, - device = device, - time = time, - cipher = cipher, - status = status - } - end - end - ipt:close() - luci.http.prepare_content("application/json") - luci.http.write_json(fwd) - end -end - -function ocserv_disconnect(num) - local idx = tonumber(num) - - if idx and idx > 0 then - luci.sys.call("/usr/bin/occtl disconnect id %d" % idx) - luci.http.status(200, "OK") - - return - end - luci.http.status(400, "Bad request") -end diff --git a/package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua b/package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua deleted file mode 100644 index 74edaf4894..0000000000 --- a/package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua +++ /dev/null @@ -1,179 +0,0 @@ --- Copyright 2014 Nikos Mavrogiannopoulos --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local has_ipv6 = fs.access("/proc/net/ipv6_route") - -m = Map("ocserv", translate("OpenConnect VPN")) - -s = m:section(TypedSection, "ocserv", "OpenConnect") -s.anonymous = true - -s:tab("general", translate("General Settings")) -s:tab("ca", translate("CA certificate")) -s:tab("template", translate("Edit Template")) - -local e = s:taboption("general", Flag, "enable", translate("Enable server")) -e.rmempty = false -e.default = "1" - -local o_sha = s:taboption("general", DummyValue, "sha_hash", translate("Server's certificate SHA1 hash"), - translate("That value should be communicated to the client to verify the server's certificate")) -local o_pki = s:taboption("general", DummyValue, "pkid", translate("Server's Public Key ID"), - translate("An alternative value to be communicated to the client to verify the server's certificate; this value only depends on the public key")) - -local fd = io.popen("/usr/bin/certtool -i --infile /etc/ocserv/server-cert.pem", "r") -if fd then local ln - local found_sha = false - local found_pki = false - local complete = 0 - while complete < 2 do - local ln = fd:read("*l") - if not ln then - break - elseif ln:match("SHA%-?1 fingerprint:") then - found_sha = true - elseif found_sha then - local hash = ln:match("([a-f0-9]+)") - o_sha.default = hash and hash:upper() - complete = complete + 1 - found_sha = false - elseif ln:match("Public Key I[Dd]:") then - found_pki = true - elseif found_pki then - local hash = ln:match("([a-f0-9]+)") - o_pki.default = hash and "sha1:" .. hash:upper() - complete = complete + 1 - found_pki = false - end - end - fd:close() -end - -function m.on_commit(map) - luci.sys.call("/usr/bin/occtl reload >/dev/null 2>&1") -end - -function e.write(self, section, value) - if value == "0" then - luci.sys.call("/etc/init.d/ocserv stop >/dev/null 2>&1") - luci.sys.call("/etc/init.d/ocserv disable >/dev/null 2>&1") - else - luci.sys.call("/etc/init.d/ocserv enable >/dev/null 2>&1") - luci.sys.call("/etc/init.d/ocserv restart >/dev/null 2>&1") - end - Flag.write(self, section, value) -end - -local o - -o = s:taboption("general", ListValue, "auth", translate("User Authentication"), - translate("The authentication method for the users. The simplest is plain with a single username-password pair. Use PAM modules to authenticate using another server (e.g., LDAP, Radius).")) -o.rmempty = false -o.default = "plain" -o:value("plain") -o:value("PAM") - -s:taboption("general", Value, "port", translate("Port"), - translate("The same UDP and TCP ports will be used")) -s:taboption("general", Value, "max_clients", translate("Max clients")) -s:taboption("general", Value, "max_same", translate("Max same clients")) -s:taboption("general", Value, "dpd", translate("Dead peer detection time (secs)")) - -local pip = s:taboption("general", Flag, "predictable_ips", translate("Predictable IPs"), - translate("The assigned IPs will be selected deterministically")) -pip.default = "1" - -local compr = s:taboption("general", Flag, "compression", translate("Enable compression"), - translate("Enable compression")) -compr.default = "1" - -local udp = s:taboption("general", Flag, "udp", translate("Enable UDP"), - translate("Enable UDP channel support; this must be enabled unless you know what you are doing")) -udp.default = "1" - -local cisco = s:taboption("general", Flag, "cisco_compat", translate("AnyConnect client compatibility"), - translate("Enable support for CISCO AnyConnect clients")) -cisco.default = "1" - - -tmpl = s:taboption("template", Value, "_tmpl", - translate("Edit the template that is used for generating the ocserv configuration.")) - -tmpl.template = "cbi/tvalue" -tmpl.rows = 20 - -function tmpl.cfgvalue(self, section) - return nixio.fs.readfile("/etc/ocserv/ocserv.conf.template") -end - -function tmpl.write(self, section, value) - value = value:gsub("\r\n?", "\n") - nixio.fs.writefile("/etc/ocserv/ocserv.conf.template", value) -end - -ca = s:taboption("ca", Value, "_ca", - translate("View the CA certificate used by this server. You will need to save it as 'ca.pem' and import it into the clients.")) - -ca.template = "cbi/tvalue" -ca.rows = 20 - -function ca.cfgvalue(self, section) - return nixio.fs.readfile("/etc/ocserv/ca.pem") -end - ---[[Networking options]]-- - -local parp = s:taboption("general", Flag, "proxy_arp", translate("Enable proxy arp"), - translate("Provide addresses to clients from a subnet of LAN; if enabled the network below must be a subnet of LAN. Note that the first address of the specified subnet will be reserved by ocserv, so it should not be in use. If you have a network in LAN covering 192.168.1.0/24 use 192.168.1.192/26 to reserve the upper 62 addresses.")) -parp.default = "0" - -ipaddr = s:taboption("general", Value, "ipaddr", translate("VPN IPv4-Network-Address"), - translate("The IPv4 subnet address to provide to clients; this should be some private network different than the LAN addresses unless proxy ARP is enabled. Leave empty to attempt auto-configuration.")) -ipaddr.datatype = "ip4addr" -ipaddr.default = "192.168.100.1" - -nm = s:taboption("general", Value, "netmask", translate("VPN IPv4-Netmask"), - translate("The mask of the subnet above.")) -nm.datatype = "ip4addr" -nm.default = "255.255.255.0" -nm:value("255.255.255.0") -nm:value("255.255.0.0") -nm:value("255.0.0.0") - -if has_ipv6 then - ip6addr = s:taboption("general", Value, "ip6addr", translate("VPN IPv6-Network-Address"), translate("CIDR-Notation: address/prefix"), - translate("The IPv6 subnet address to provide to clients; leave empty to attempt auto-configuration.")) - ip6addr.datatype = "ip6addr" -end - - ---[[DNS]]-- - -s = m:section(TypedSection, "dns", translate("DNS servers"), - translate("The DNS servers to be provided to clients; can be either IPv6 or IPv4. Typically you should include the address of this device")) -s.anonymous = true -s.addremove = true -s.template = "cbi/tblsection" - -s:option(Value, "ip", translate("IP Address")).rmempty = true -s.datatype = "ipaddr" - ---[[Routes]]-- - -s = m:section(TypedSection, "routes", translate("Routing table"), - translate("The routing table to be provided to clients; you can mix IPv4 and IPv6 routes, the server will send only the appropriate. Leave empty to set a default route")) -s.anonymous = true -s.addremove = true -s.template = "cbi/tblsection" - -s:option(Value, "ip", translate("IP Address")).rmempty = true - -o = s:option(Value, "netmask", translate("Netmask (or IPv6-prefix)")) -o.default = "255.255.255.0" -o:value("255.255.255.0") -o:value("255.255.0.0") -o:value("255.0.0.0") - - -return m diff --git a/package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua b/package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua deleted file mode 100644 index c50cb39188..0000000000 --- a/package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua +++ /dev/null @@ -1,139 +0,0 @@ --- Copyright 2014 Nikos Mavrogiannopoulos --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local has_ipv6 = fs.access("/proc/net/ipv6_route") - -m = Map("ocserv", translate("OpenConnect VPN")) - -s = m:section(TypedSection, "ocserv", "OpenConnect") -s.anonymous = true - -s:tab("general", translate("General Settings")) -s:tab("ca", translate("CA certificate")) -s:tab("template", translate("Edit Template")) - -local e = s:taboption("general", Flag, "enable", translate("Enable server")) -e.rmempty = false -e.default = "1" - -function m.on_commit(map) - luci.sys.call("/usr/bin/occtl reload >/dev/null 2>&1") -end - -function e.write(self, section, value) - if value == "0" then - luci.sys.call("/etc/init.d/ocserv stop >/dev/null 2>&1") - luci.sys.call("/etc/init.d/ocserv disable >/dev/null 2>&1") - else - luci.sys.call("/etc/init.d/ocserv enable >/dev/null 2>&1") - luci.sys.call("/etc/init.d/ocserv restart >/dev/null 2>&1") - end - Flag.write(self, section, value) -end - -local o - -o = s:taboption("general", ListValue, "auth", translate("User Authentication"), - translate("The authentication method for the users. The simplest is plain with a single username-password pair. Use PAM modules to authenticate using another server (e.g., LDAP, Radius).")) -o.rmempty = false -o.default = "plain" -o:value("plain") -o:value("PAM") - -o = s:taboption("general", Value, "zone", translate("Firewall Zone"), - translate("The firewall zone that the VPN clients will be set to")) -o.nocreate = true -o.default = "lan" -o.template = "cbi/firewall_zonelist" - -s:taboption("general", Value, "port", translate("Port"), - translate("The same UDP and TCP ports will be used")) -s:taboption("general", Value, "max_clients", translate("Max clients")) -s:taboption("general", Value, "max_same", translate("Max same clients")) -s:taboption("general", Value, "dpd", translate("Dead peer detection time (secs)")) - -local pip = s:taboption("general", Flag, "predictable_ips", translate("Predictable IPs"), - translate("The assigned IPs will be selected deterministically")) -pip.default = "1" - -local udp = s:taboption("general", Flag, "udp", translate("Enable UDP"), - translate("Enable UDP channel support; this must be enabled unless you know what you are doing")) -udp.default = "1" - -local cisco = s:taboption("general", Flag, "cisco_compat", translate("AnyConnect client compatibility"), - translate("Enable support for CISCO AnyConnect clients")) -cisco.default = "1" - -ipaddr = s:taboption("general", Value, "ipaddr", translate("VPN IPv4-Network-Address")) -ipaddr.default = "192.168.100.1" -ipaddr.datatype = "ip4addr" - -nm = s:taboption("general", Value, "netmask", translate("VPN IPv4-Netmask")) -nm.default = "255.255.255.0" -nm.datatype = "ip4addr" -nm:value("255.255.255.0") -nm:value("255.255.0.0") -nm:value("255.0.0.0") - -if has_ipv6 then - ip6addr = s:taboption("general", Value, "ip6addr", translate("VPN IPv6-Network-Address"), translate("CIDR-Notation: address/prefix")) -end - - -tmpl = s:taboption("template", Value, "_tmpl", - translate("Edit the template that is used for generating the ocserv configuration.")) - -tmpl.template = "cbi/tvalue" -tmpl.rows = 20 - -function tmpl.cfgvalue(self, section) - return nixio.fs.readfile("/etc/ocserv/ocserv.conf.template") -end - -function tmpl.write(self, section, value) - value = value:gsub("\r\n?", "\n") - nixio.fs.writefile("/etc/ocserv/ocserv.conf.template", value) -end - -ca = s:taboption("ca", Value, "_ca", - translate("View the CA certificate used by this server. You will need to save it as 'ca.pem' and import it into the clients.")) - -ca.template = "cbi/tvalue" -ca.rows = 20 - -function ca.cfgvalue(self, section) - return nixio.fs.readfile("/etc/ocserv/ca.pem") -end - ---[[DNS]]-- - -s = m:section(TypedSection, "dns", translate("DNS servers"), - translate("The DNS servers to be provided to clients; can be either IPv6 or IPv4")) -s.anonymous = true -s.addremove = true -s.template = "cbi/tblsection" - -s:option(Value, "ip", translate("IP Address")).rmempty = true -s.datatype = "ipaddr" - ---[[Routes]]-- - -s = m:section(TypedSection, "routes", translate("Routing table"), - translate("The routing table to be provided to clients; you can mix IPv4 and IPv6 routes, the server will send only the appropriate. Leave empty to set a default route")) -s.anonymous = true -s.addremove = true -s.template = "cbi/tblsection" - -s:option(Value, "ip", translate("IP Address")).rmempty = true -s.datatype = "ipaddr" - -o = s:option(Value, "netmask", translate("Netmask (or IPv6-prefix)")) -o.default = "255.255.255.0" - -o:value("255.255.255.0") -o:value("255.255.0.0") -o:value("255.0.0.0") - - -return m diff --git a/package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua b/package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua deleted file mode 100644 index 0fa997c8b3..0000000000 --- a/package/luci/applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua +++ /dev/null @@ -1,75 +0,0 @@ --- Copyright 2014 Nikos Mavrogiannopoulos --- Licensed to the public under the Apache License 2.0. - -local dsp = require "luci.dispatcher" -local nixio = require "nixio" - -m = Map("ocserv", translate("OpenConnect VPN")) - -if m.uci:get("ocserv", "config", "auth") == "plain" then - ---[[Users]]-- - -function m.on_commit(map) - luci.sys.call("/etc/init.d/ocserv restart >/dev/null 2>&1") -end - -s = m:section(TypedSection, "ocservusers", translate("Available users")) -s.anonymous = true -s.addremove = true -s.template = "cbi/tblsection" - -s:option(Value, "name", translate("Name")).rmempty = true -s:option(DummyValue, "group", translate("Group")).rmempty = true -pwd = s:option(Value, "password", translate("Password")) -pwd.password = false - -function pwd.write(self, section, value) - local pass - if string.match(value, "^\$%d\$.*") then - pass = value - else - local t = tonumber(nixio.getpid()*os.time()) - local salt = "$1$" .. t .. "$" - pass = nixio.crypt(value, salt) - end - Value.write(self, section, pass) -end - ---[[if plain]]-- -end - -local lusers = { } -local fd = io.popen("/usr/bin/occtl show users", "r") -if fd then local ln - repeat - ln = fd:read("*l") - if not ln then break end - - local id, user, group, vpn_ip, ip, device, time, cipher, status = - ln:match("^%s*(%d+)%s+([-_%w]+)%s+([%(%)%.%*-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%:%.-_%w]+)%s+([%(%)%:%.-_%w]+)%s+([%:%.-_%w]+).*") - if id then - table.insert(lusers, {id, user, group, vpn_ip, ip, device, time, cipher, status}) - end - until not ln - fd:close() -end - - ---[[Active Users]]-- - -local s = m:section(Table, lusers, translate("Active users")) -s.anonymous = true -s.template = "cbi/tblsection" - -s:option(DummyValue, 1, translate("ID")) -s:option(DummyValue, 2, translate("Username")) -s:option(DummyValue, 3, translate("Group")) -s:option(DummyValue, 4, translate("IP")) -s:option(DummyValue, 5, translate("VPN IP")) -s:option(DummyValue, 6, translate("Device")) -s:option(DummyValue, 7, translate("Time")) -s:option(DummyValue, 8, translate("Cipher")) -s:option(DummyValue, 9, translate("Status")) - -return m diff --git a/package/luci/applications/luci-app-ocserv/luasrc/view/admin_status/index/ocserv.htm b/package/luci/applications/luci-app-ocserv/luasrc/view/admin_status/index/ocserv.htm deleted file mode 100644 index 4575806954..0000000000 --- a/package/luci/applications/luci-app-ocserv/luasrc/view/admin_status/index/ocserv.htm +++ /dev/null @@ -1 +0,0 @@ -<%+ocserv_status%> diff --git a/package/luci/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm b/package/luci/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm deleted file mode 100644 index 03a9ed70ee..0000000000 --- a/package/luci/applications/luci-app-ocserv/luasrc/view/ocserv_status.htm +++ /dev/null @@ -1,76 +0,0 @@ - - -
    - <%:Active OpenConnect Users%> - - - - - - - - - - - - - - - -
    <%:User%><%:Group%><%:IP Address%><%:VPN IP Address%><%:Device%><%:Time%><%:Cipher%><%:Status%> 

    <%:Collecting data...%>
    -
    diff --git a/package/luci/applications/luci-app-olsr-services/Makefile b/package/luci/applications/luci-app-olsr-services/Makefile deleted file mode 100644 index b1daf6daad..0000000000 --- a/package/luci/applications/luci-app-olsr-services/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Show services announced with the nameservice plugin -LUCI_DEPENDS:=+luci-app-olsr +olsrd +olsrd-mod-nameservice - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-olsr-services/luasrc/controller/services.lua b/package/luci/applications/luci-app-olsr-services/luasrc/controller/services.lua deleted file mode 100644 index a4636bfd57..0000000000 --- a/package/luci/applications/luci-app-olsr-services/luasrc/controller/services.lua +++ /dev/null @@ -1,16 +0,0 @@ -module "luci.controller.services" - -function index() - local uci = require "luci.model.uci".cursor() - - uci:foreach("olsrd", "LoadPlugin", function(s) - if s.library == "olsrd_nameservice.so.0.3" then - has_serv = true - end - end) - - if has_serv then - entry({"freifunk", "services"}, template("freifunk-services/services"), _("Services"), 60) - end -end - diff --git a/package/luci/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm b/package/luci/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm deleted file mode 100644 index 476150dd28..0000000000 --- a/package/luci/applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm +++ /dev/null @@ -1,193 +0,0 @@ -<%# - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% -local fs = require "nixio.fs" -local utl = require "luci.util" -local last_update -local i = 1 -local rawdata -local rawdata6 -local services_file_empty = true -local has_services = false -local uci = require "luci.model.uci".cursor() -local ip = require "luci.ip" - -uci:foreach("olsrd", "LoadPlugin", function(s) - if s.library == "olsrd_nameservice.so.0.3" then - local services_file=s.services_file - if services_file and fs.access(services_file) then - has_services = true - rawdata = fs.readfile(s.services_file) - else - services_file="/var/run/services_olsr" - if fs.access(services_file) then - has_services = true - rawdata = fs.readfile(services_file) - end - end - services_file=services_file..".ipv6" - if services_file and fs.access(services_file) then - has_services = true - rawdata6 = fs.readfile(services_file) - else - services_file="/var/run/services_olsr.ipv6" - if fs.access(services_file) then - has_services = true - rawdata6 = fs.readfile(services_file) - end - end - if rawdata and #rawdata ~= 0 then - services_file_empty = nil - end - if rawdata6 and #rawdata6 ~= 0 then - services_file_empty = nil - end - end -end) - - -if not has_services or services_file_empty then -%> - <%+header%> -
    - <%:No services can be shown, because olsrd is not running or the olsrd-nameservice Plugin is not loaded.%> - <%+footer%> -<% - return -end - -function fetch_services() - local tables = {} - if rawdata and #rawdata ~= 0 then - tables = utl.split(utl.trim(rawdata), "\n", nil, true) - -- remove first 3 lines - for i = 1,3 do - table.remove(tables,1) - end - end - local tables6 = {} - if rawdata6 and #rawdata6 ~= 0 then - tables6 = utl.split(utl.trim(rawdata6), "\n", nil, true) - -- remove first 3 lines - for i = 1,3 do - table.remove(tables6,1) - end - end - - -- store last line in last_update and remove it, then remove another empty line at the end - last_update=table.remove(tables) - table.remove(tables) - last_update=table.remove(tables6) - table.remove(tables6) - for k, v in ipairs(tables6) do - table.insert(tables, v) - end - return tables -end -local services = fetch_services() - -if luci.http.formvalue("status") == "1" then - local rv = {} - for k, line in ipairs(services) do - local field = utl.split(line, "[#|]", split, true) - local origin_lnk = ip.IPv6(pcdata(field[4])) - local origin_link = "" - if origin_lnk and origin_lnk:is6() then - origin_link = "["..origin_lnk:string().."]" - else - origin_link = pcdata(field[4]) - end - local url, proto, descr, origin = pcdata(field[1]), pcdata(field[2]), utl.trim(pcdata(field[3])), pcdata(field[4]) - rv[#rv+1] = { - url = url, - proto = proto, - origin = origin, - origin_link = origin_link, - descr = descr, - } - end - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return -end - -%> - -<%+header%> - - - - - - - -

    <%:Services%>

    - -
    - <%:Internal services%> - - - - - - - - - - - <% - for k, line in ipairs(services) do - local field = {} - -- split line at # and |, 1=url, 2=proto, 3=description, 4=source - local field = utl.split(line, "[#|]", split, true) - local origin_lnk = ip.IPv6(pcdata(field[4])) - local origin_link - if origin_lnk and origin_lnk:is6() then - origin_link = "["..origin_lnk:string().."]" - else - origin_link = pcdata(field[4]) - end - local url, proto, descr, origin = pcdata(field[1]), pcdata(field[2]), utl.trim(pcdata(field[3])), pcdata(field[4]) - %> - - - - - - - <% i = ((i % 2) + 1) - end %> - -
    <%:Url%><%:Protocol%><%:Source%>
    <%=descr%><%=proto%><%=origin%>
    -
    - <%=last_update%> -
    -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr-viz/Makefile b/package/luci/applications/luci-app-olsr-viz/Makefile deleted file mode 100644 index e1a1185092..0000000000 --- a/package/luci/applications/luci-app-olsr-viz/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=OLSR Visualisation -LUCI_DEPENDS:=+luci-app-olsr +olsrd +olsrd-mod-txtinfo - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-olsr-viz/htdocs/cgi-bin/olsr-viz.sh b/package/luci/applications/luci-app-olsr-viz/htdocs/cgi-bin/olsr-viz.sh deleted file mode 100755 index e33c632465..0000000000 --- a/package/luci/applications/luci-app-olsr-viz/htdocs/cgi-bin/olsr-viz.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -echo Content-type: text/html -echo - -cat << EOF - - -
    -
    -
    -
    -
    -
    -

    Zoom +    -|  Metrik +    -|  Optimierung  -|  Hostnamen  -|  Speichern  -|  Zurücksetzen

    -
    - - - -EOF diff --git a/package/luci/applications/luci-app-olsr-viz/htdocs/cgi-bin/vizdata.sh b/package/luci/applications/luci-app-olsr-viz/htdocs/cgi-bin/vizdata.sh deleted file mode 100755 index 5a74f2be94..0000000000 --- a/package/luci/applications/luci-app-olsr-viz/htdocs/cgi-bin/vizdata.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -echo Content-type: text/html -echo - -cat< - - OLSR-VIZ Data - - - - - - - -EOF diff --git a/package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz.js b/package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz.js deleted file mode 100644 index 49435a4a33..0000000000 --- a/package/luci/applications/luci-app-olsr-viz/htdocs/luci-static/resources/olsr-viz.js +++ /dev/null @@ -1,818 +0,0 @@ -/* -Copyright (c) 2006, Lorenz Schori -All rights reserved (Naja: Ich hab' trotzdem was geaendert. Sven-Ola). (Naja: -diese Rechte garantiert dir die BSD-Lizenz ja ausdrücklich. Lorenz) - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. -- Neither the name of the nor the names of its contributors may - be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -OLSR-Viz is inspired by Wi-viz: http://wiviz.natetrue.com - -Changes: -2007-10-04: Added hostname display option -- Stefan Katerkamp . -2007-10-04: Optimized display by moving presentation css out of js -- lo -2010-12-11: Changed some paths to make it work with Kamikaze and Luci -- soma -*/ - -var cgi_url = "/cgi-bin/vizdata.sh"; - -var maxmetric = 3; -var iconvariant = "-mini"; -var nodes = new Array(); -var ncount = 0; -var newnodes = new Array(); -var edges = new Array(); -var iel = 220; // ideal edge length -var optsize = 10; // boundingbox around nodes - -var vwidth = 0; -var vheight = 0; - -var xoff = 0; -var yoff = 0; -var scale = 1.0; - -var idle_timeout = 15; -var erase_timeout = 60; -var dcl_timeout = 250; -var dcllow_timeout = 500; -var auto_declump = true; -var showdesc = true; -var auto_save = 1; -var now_secs = 5; - -// dom elements -var IFrameObj; -var maindiv; -var nodediv; -var edgediv; - -/******* CALL TO SERVER ********/ -function callToServer(URL) { - var IFrameDoc; - - if (IFrameObj.document) { - // For IE5 + opera - IFrameDoc = IFrameObj.document; - } - else if (IFrameObj.contentDocument) { - // For NS6 - IFrameDoc = IFrameObj.contentDocument; - } - else if (IFrameObj.contentWindow) { - // For IE5.5 and IE6 - IFrameDoc = IFrameObj.contentWindow.document; - } - else { - // opera? hmmmm - return true; - } - - IFrameDoc.location.replace(URL); - return false; -} - - -/******** EDGE CLASS ********/ -function edge(n1,n2){ - this.getHTML = function() - { - var nh = ""; - - if(this.n1.metric > maxmetric || this.n2.metric > maxmetric) { - return ""; - } - - x = this.n1.x*scale; - y = this.n1.y*scale; - dx = this.n2.x*scale - x; - dy = this.n2.y*scale - y; - - x += xoff*scale + 75; - y += yoff*scale + 15; - - imgtag = " 2 && this.etx < 5) { - imgtag += "ok.gif'"; - } - else if(this.etx > 5 && this.etx < 10) { - imgtag += "weak.gif'"; - } - else { - imgtag += "down.gif'"; - } - imgtag += " alt='ETX: " + this.etx + "' title='ETX: " + this.etx + "' "; - - d = Math.sqrt(dx*dx+dy*dy); - - for (j = 0; j < d; j += 15) { - nh += imgtag + "style='top:" - + parseInt(y+dy * j / d) + "px; left:" - + parseInt(x+dx * j / d) + "px; " - + "width: 4px; height: 4px; position: absolute; z-index: 2' >"; - } - - nh += "
    " - + "" + this.etx + "
    "; - - return nh; - } - - this.isIdle = function() - { - return (now_secs - this.lastseen > idle_timeout); - } - - this.isDead = function() - { - return (now_secs - this.lastseen > erase_timeout); - } - - this.cleanup = function() - { - if(this.n1 && this.n1.weight) { - this.n1.weight--; - } - if(this.n2 && this.n2.weight) { - this.n2.weight--; - } - if(this.n1 && this.n2) { - delete this.n1.edges[n2.ip]; - delete this.n2.edges[n1.ip]; - } - } - - this.n1 = n1; - this.n2 = n2; - - // setup edges within node objects - this.n1.weight++; - this.n1.edges[n2.ip] = this; - this.n2.weight++; - this.n2.edges[n1.ip] = this; - - return this; -} - -function getEdgeKey(ip1,ip2) -{ - key = ""; - if(ip1 > ip2) { - key = ip2 + "-" + ip1; - } - else { - key = ip1 + "-" + ip2; - } - return key; -} - -function touch_edge(n1,n2,etx) -{ - var key = getEdgeKey(n1.ip,n2.ip); - var e = edges[key]; - if(!e) { - e = new edge(n1,n2); - edges[key] = e; - } - e.etx = etx; - e.lastseen = now_secs; - return e; -} - -/******** NODE CLASS ********/ -function node(ip) { - this.getHTML = function() - { - var nh; - - if(this.metric > maxmetric) { - return ""; - } - var igw = 0; - for(h in this.hna) { - if(h == "0.0.0.0") { - igw = 1; - break; - } - } - nh = - "
    " - + "
    node " + this.ip + "
    " - + "" - + "" + this.ip + "" - + (showdesc && this.desc != "" ? - "
    " + this.desc + "" : "") - + "
    "; - return nh; - } - - this.isIdle = function() - { - return (now_secs - this.lastseen > idle_timeout); - } - - this.isDead = function() - { - return (now_secs - this.lastseen > erase_timeout); - } - - this.cleanup = function() - { - ncount--; - } - - this.set_metric = function(metric) { - this.metric = metric; - return this; - } - - this.set_desc = function(desc) { - this.desc = desc - return this; - } - - this.update = function() { - this.lastseen = now_secs; - return this; - } - - this.ip = ip; - this.x = 0; - this.y = 0; - this.dx_last=0; - this.dy_last=0; - this.placed = false; - this.weight = 0; - this.edges = new Array(); - this.hna = new Array(); - this.pinned = false; - this.metric = 999; - this.desc = ""; - - ncount++; - return this; -} - -function touch_node(ip) { - n = nodes[ip]; - if(!n) { - n = new node(ip); - nodes[ip] = n; - // newnodes.push(n); - // push and pop not supported in old ie. shit. - newnodes[newnodes.length] = n; - } - return n; -} - -function place_new_nodes() { - var nc = 0; - for(i = 0;i1){ - // see if we find allredy placed nodes - ox=0,oy=0;dx=0,dy=0;c=0; - for(e in n.edges){ - if(nodes[e] && nodes[e].placed){ - if(!ox && !oy) { - ox = nodes[e].x; - oy = nodes[e].y; - } - else { - dx += nodes[e].x - ox; - dy += nodes[e].y - oy; - } - c++; - } - } - if(c>0) { - n.x = ox + dx/c + Math.random()*iel/2-iel/4; - n.y = oy + dy/c + Math.random()*iel/2-iel/4; - } - } - else { - // beginn somewhere - n.x = Math.random()*400; - n.y = Math.random()*400; - } - n.placed = true; - nc++; - } - newnodes.length=0; - return nc; -} - -/******** HNA CLASS ********/ -function hna(gw,net,mask) { - this.gw = gw; - this.net = net; - this.mask = mask; - return this; -} - -function touch_hna(node,net,mask) { - h = node.hna[net]; - if(!h) { - h = new hna(node.ip,net,mask); - node.hna[net] = h; - } - - h.lastseen = now_secs; - return h; -} - -/******** VIZ SETUP AND SETTINGS ********/ -function viz_setup(iframeid,maindivid,nodedivid,edgedivid) { - // assign a reference to the - // object to our global variable IFrameObj. - IFrameObj=document.getElementById(iframeid); - if (document.frames) { - // this is for IE5 Mac, because it will only - // allow access to the document object - // of the IFrame if we access it through - // the document.frames array - IFrameObj = document.frames[iframeid]; - } - - draginit(); - - maindiv=document.getElementById(maindivid); - nodediv=document.getElementById(nodedivid); - edgediv=document.getElementById(edgedivid); - - // autosave on exit? - if((autosave = getCookie("prefs_autosave"))) { - auto_save = parseInt(autosave); - } - viz_autosave(auto_save); - - // maximum metric of surrounding nodes - if(mmx = getCookie("prefs_maxmetric")) { - set_maxmetric(mmx,true,true); - } - - // scale of view - if((savescale = getCookie("prefs_scale")) && - (savescale = parseFloat(savescale))) { - set_scale(savescale,true); - } - - // scroll - FIXME - /* - if(val = getCookie("prefs_innerview")) { - iv = val.split("x"); - if (iv[0] && (iv[0] = parseInt(iv[0])) && - iv[1] && (iv[2] = parseInt(iv[2])) && - iv[3] && (iv[3] = parseInt(iv[3])) && - iv[4] && (iv[4] = parseInt(iv[4]))) - { - maindiv.scrollLeft = iv[0] + "px"; - maindiv.scrollHeight = iv[1] + "px"; - } - } - */ -} - -function viz_save() -{ - // let cookie survive a month - exp = new Date(); - exp.setTime(exp.getTime() + 2592000000); - // save node positions - for(ip in nodes) - { - if(nodes[ip].metric > maxmetric) { - continue; - } - setCookie("node_"+ip,nodes[ip].x+"x"+nodes[ip].y,exp); - } - - // save maxmetric - setCookie("prefs_maxmetric",maxmetric,exp); - - // save zooming - setCookie("prefs_scale",scale,exp); - - // save scroll - FIXME - setCookie("prefs_innerview", - parseInt(maindiv.scrollLeft)+"x"+parseInt(maindiv.scrollTop)+"x"+ - parseInt(vwidth*scale)+"x"+parseInt(vheight*scale),exp); -} - -function viz_autosave(autosave) -{ - auto_save = autosave; - if(auto_save) { - document.body.onunload=viz_save; - } - else { - deleteCookie("prefs_autosave"); - } -} - -function viz_reset() -{ - deleteAllCookies(); - for(ip in nodes) { - delete nodes[ip]; - } - for(e in edges) { - delete edges[e]; - } - viz_update(); -} - -var updateTimer = 0; -function viz_update() { - if (updateTimer) { - clearTimeout(updateTimer); - } - now_secs = new Date().getTime()/1000; - callToServer(cgi_url); -} - -function viz_callback() { - if (updateTimer) { - clearTimeout(updateTimer); - } - - if(place_new_nodes() > 0 && auto_declump) { - declump(); - } - refresh(); - updateTimer = setTimeout('viz_update()', 5000); -} - -var refresh_running = false; -function refresh() { - if(refresh_running) { - return; - } - refresh_running = true; - - var nh = ""; - - // refresh nodes - nh = ""; - for (var n in nodes) { - if(nodes[n].isDead()) { - nodes[n].cleanup(); - delete nodes[n]; - } - else { - nh += nodes[n].getHTML(); - } - } - nodediv.innerHTML = nh; - - // refresh edges - - nh = ""; - for (var e in edges) { - if(edges[e].isDead()) { - edges[e].cleanup(); - delete edges[e]; - } - else { - nh += edges[e].getHTML(); - } - } - edgediv.innerHTML = nh; - refresh_running = false; -} - -function set_showdesc(doit) -{ - showdesc = doit; - if(!noupdate) refresh(); -} - -function set_autodeclump(doit) -{ - auto_declump = doit; - if(doit) { - declump(); - } - else { - clearTimeout(dclTimer); - } -} - -function set_scale(inscale,noupdate) -{ - if(!inscale) { - inscale = parseFloat(document.getElementById("zoom").value/2); - } - scale = Math.round(inscale*100)/100; - if(!scale || scale<0.1) { - scale = 0.1; - } - document.getElementById("zoom").value = scale*2; - if(!noupdate) refresh(); -} - -function set_maxmetric(inmetric,noupdate,noconfirm) -{ - inmetric = parseInt(inmetric); - if(inmetric > 0 || !noconfirm || confirm("warning. setting the maximum metric to zero can lead to expensive calculations if you are connected to a network with many nodes. do you want to proceed?")) { - maxmetric = inmetric; - } - document.getElementById("maxmetric").value = maxmetric; - if(!noupdate) refresh(); -} - -// k = area / nodes -function fr(x) { - return Math.pow((iel*iel)/x,2); -} - -function fa(x) { - return Math.pow((x*x)/iel,2); -} - -var dclTimer = 0; -var declump_running = false; -function declump(t) { - // clear declump timer - if(dclTimer) { - clearTimeout(dclTimer); - } - if(declump_running) { - return; - } - declump_running = true; - - // nodes - nc = 0; - for (var ip1 in nodes) { - nodes[ip1].fr_x=0; - nodes[ip1].fr_y=0; - nodes[ip1].fa_x=0; - nodes[ip1].fa_y=0; - nodes[ip1].x_next = nodes[ip1].x; - nodes[ip1].y_next = nodes[ip1].y; - nodes[ip1].randdisplace = 0; - } - for (var ip1 in nodes) { - if(nodes[ip1].metric > maxmetric || nodes[ip1].pinned) { - continue; - } - for (ip2 in nodes) { - if (nodes[ip2].metric > maxmetric || ip1 == ip2) { - continue; - } - dx = (nodes[ip1].x_next - nodes[ip2].x_next); - dy = (nodes[ip1].y_next - nodes[ip2].y_next); - d = Math.sqrt(dx*dx+dy*dy); - d = Math.max(d-optsize,(d+optsize)/optsize); - - nodes[ip1].fr_x += (dx/d) * fr(d); - nodes[ip1].fr_y += (dy/d) * fr(d); - } - - dx = nodes[ip1].fr_x; - dy = nodes[ip1].fr_y; - d = Math.sqrt(dx*dx+dy*dy); - md = Math.min(d,iel/nodes[ip1].weight); - nodes[ip1].x_next += (dx / d) * md; - nodes[ip1].y_next += (dy / d) * md; - nc++; - } - - // edges - ec = 0; - for (var e in edges) { - if (!edges[e].n1 || !edges[e].n2 || - edges[e].n1.metric > maxmetric || edges[e].n2.metric > maxmetric) { - continue; - } - dx = (edges[e].n1.x_next - edges[e].n2.x_next); - dy = (edges[e].n1.y_next - edges[e].n2.y_next); - d = Math.sqrt(dx*dx+dy*dy); -// d = Math.max(d-optsize,(d+optsize)/optsize); - - edges[e].n1.fa_x -= (dx/d) * fa(d); - edges[e].n1.fa_y -= (dy/d) * fa(d); - edges[e].n2.fa_x += (dx/d) * fa(d); - edges[e].n2.fa_y += (dy/d) * fa(d); - ec++; - } - - // displacement - xmin=-20;ymin=-20;xmax=20;ymax=20;dsum=0; - for (var ip in nodes) { - if(nodes[ip].metric > maxmetric || nodes[ip].pinned) { - continue; - } - - dx = nodes[ip].fa_x; - dy = nodes[ip].fa_y; - d = Math.sqrt(dx*dx+dy*dy); - dx = (dx / d) * Math.min(d,iel/nodes[ip].weight) * 0.75 + nodes[ip].dx_last * 0.25; - dy = (dy / d) * Math.min(d,iel/nodes[ip].weight) * 0.75 + nodes[ip].dy_last * 0.25; - - nodes[ip].dx_last = dx; - nodes[ip].dy_last = dy; - nodes[ip].x_next += dx; - nodes[ip].y_next += dy; - - if(!nodes[ip].x_next || !nodes[ip].y_next) { - continue; - } - - dx = (nodes[ip].x - nodes[ip].x_next); - dy = (nodes[ip].y - nodes[ip].y_next); - dsum += Math.sqrt(dx*dx+dy*dy); - - nodes[ip].x = nodes[ip].x_next; - nodes[ip].y = nodes[ip].y_next; - - xmin = Math.min(xmin,nodes[ip].x); - xmax = Math.max(xmax,nodes[ip].x); - ymin = Math.min(ymin,nodes[ip].y); - ymax = Math.max(ymax,nodes[ip].y); - } - vwidth=(xmax-xmin); - vheight=(ymax-ymin); - - xoff=-xmin; - yoff=-ymin; - /* - document.getElementById('debug').innerHTML = "
    " + - "offset: " + xoff + "x" + yoff + " dsum: " + dsum + "
    " + - "nc: " + nc + " ec: " + ec + "xmax: " + xmax + " xmin: " + xmin + "
    " + - "optsize: " + optsize + "
    "; - */ - refresh(); - if(auto_declump) { - dclTimer = setTimeout("declump()", dsum>ncount ? dcl_timeout : dcllow_timeout ); - } - declump_running = false; -} - -//Das Objekt, das gerade bewegt wird. -var dragip = null; - -// Position, an der das Objekt angeklickt wurde. -var dragx = 0; -var dragy = 0; - -// Mausposition -var posx = 0; -var posy = 0; - -function draginit() { - // Initialisierung der ãberwachung der Events - - document.onmousemove = drag; - document.onmouseup = dragstop; -} - - -function dragstart(element) { - //Wird aufgerufen, wenn ein Objekt bewegt werden soll. - dragip = element.id.split("_")[1]; - dragx = posx - element.offsetLeft; - dragy = posy - element.offsetTop; - - n = nodes[dragip]; - if(n) { - n.pinned = true; - } -} - - -function dragstop() { - //Wird aufgerufen, wenn ein Objekt nicht mehr bewegt werden soll. - - n = nodes[dragip]; - if(n) { - n.pinned = false; - } - refresh(); - dragip=null; -} - - -function drag(ereignis) { - //Wird aufgerufen, wenn die Maus bewegt wird und bewegt bei Bedarf das Objekt. - - posx = document.all ? window.event.clientX : ereignis.pageX; - posy = document.all ? window.event.clientY : ereignis.pageY; - if(dragip != null) { - n = nodes[dragip]; - if(n) { - n.x = (posx - dragx)/scale - xoff; - n.y = (posy - dragy)/scale - yoff; - } - e = document.getElementById('node_'+dragip); - e.style.left = parseInt((n.x+xoff)*scale) + "px"; - e.style.top = parseInt((n.y+yoff)*scale) + "px"; - } -} - -function debug_writeln(line) -{ - document.getElementById('debug').innerHTML = line + "
    " + document.getElementById('debug').innerHTML; -} - -/** - * Sets a Cookie with the given name and value. - * - * name Name of the cookie - * value Value of the cookie - * [expires] Expiration date of the cookie (default: end of current session) - * [path] Path where the cookie is valid (default: path of calling document) - * [domain] Domain where the cookie is valid - * (default: domain of calling document) - * [secure] Boolean value indicating if the cookie transmission requires a - * secure transmission - */ - -function setCookie(name, value, expires, path, domain, secure) { - document.cookie= name + "=" + escape(value) + - ((expires) ? "; expires=" + expires.toGMTString() : "") + - ((path) ? "; path=" + path : "") + - ((domain) ? "; domain=" + domain : "") + - ((secure) ? "; secure" : ""); -} - -/** - * Gets the value of the specified cookie. - * - * name Name of the desired cookie. - * - * Returns a string containing value of specified cookie, - * or null if cookie does not exist. - */ - -function getCookie(name) -{ - var results = document.cookie.match ( name + '=(.*?)(;|$)' ); - if (results) { - return unescape(results[1]); - } - return null; -} - -/** - * Deletes the specified cookie. - * - * name name of the cookie - * [path] path of the cookie (must be same as path used to create cookie) - * [domain] domain of the cookie (must be same as domain used to create cookie) - */ - -function deleteCookie(name, path, domain) { - if (getCookie(name)) { - document.cookie = name + "=" + - ((path) ? "; path=" + path : "") + - ((domain) ? "; domain=" + domain : "") + - "; expires=Thu, 01-Jan-70 00:00:01 GMT"; - } -} - -function deleteAllCookies() { - cookies = document.cookie.split("; "); - for(i=0;i - - - - -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr/Makefile b/package/luci/applications/luci-app-olsr/Makefile deleted file mode 100644 index 93815a55e2..0000000000 --- a/package/luci/applications/luci-app-olsr/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=OLSR configuration and status module -LUCI_DEPENDS:=+olsrd +olsrd-mod-jsoninfo +luci-lib-luaneightbl +luci-lib-json - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-olsr/htdocs/cgi-bin-nodes.html b/package/luci/applications/luci-app-olsr/htdocs/cgi-bin-nodes.html deleted file mode 120000 index 80d235f15b..0000000000 --- a/package/luci/applications/luci-app-olsr/htdocs/cgi-bin-nodes.html +++ /dev/null @@ -1 +0,0 @@ -cgi-bin-status.html \ No newline at end of file diff --git a/package/luci/applications/luci-app-olsr/htdocs/cgi-bin-status.html b/package/luci/applications/luci-app-olsr/htdocs/cgi-bin-status.html deleted file mode 100644 index 0270f4a66b..0000000000 --- a/package/luci/applications/luci-app-olsr/htdocs/cgi-bin-status.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -LuCI - Lua Configuration Interface - - diff --git a/package/luci/applications/luci-app-olsr/luasrc/controller/olsr.lua b/package/luci/applications/luci-app-olsr/luasrc/controller/olsr.lua deleted file mode 100644 index 0564bd4ea7..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/controller/olsr.lua +++ /dev/null @@ -1,425 +0,0 @@ -module("luci.controller.olsr", package.seeall) - -local neigh_table = nil -local ifaddr_table = nil - -function index() - local ipv4,ipv6 - if nixio.fs.access("/etc/config/olsrd") then - ipv4 = 1 - end - if nixio.fs.access("/etc/config/olsrd6") then - ipv6 = 1 - end - if not ipv4 and not ipv6 then - return - end - - require("luci.model.uci") - local uci = luci.model.uci.cursor_state() - - uci:foreach("olsrd", "olsrd", function(s) - if s.SmartGateway and s.SmartGateway == "yes" then has_smartgw = true end - end) - - local page = node("admin", "status", "olsr") - page.target = template("status-olsr/overview") - page.title = _("OLSR") - page.subindex = true - - local page = node("admin", "status", "olsr", "json") - page.target = call("action_json") - page.title = nil - page.leaf = true - - local page = node("admin", "status", "olsr", "neighbors") - page.target = call("action_neigh") - page.title = _("Neighbours") - page.subindex = true - page.order = 5 - - local page = node("admin", "status", "olsr", "routes") - page.target = call("action_routes") - page.title = _("Routes") - page.order = 10 - - local page = node("admin", "status", "olsr", "topology") - page.target = call("action_topology") - page.title = _("Topology") - page.order = 20 - - local page = node("admin", "status", "olsr", "hna") - page.target = call("action_hna") - page.title = _("HNA") - page.order = 30 - - local page = node("admin", "status", "olsr", "mid") - page.target = call("action_mid") - page.title = _("MID") - page.order = 50 - - if has_smartgw then - local page = node("admin", "status", "olsr", "smartgw") - page.target = call("action_smartgw") - page.title = _("SmartGW") - page.order = 60 - end - - local page = node("admin", "status", "olsr", "interfaces") - page.target = call("action_interfaces") - page.title = _("Interfaces") - page.order = 70 - - odsp = entry( - {"admin", "services", "olsrd", "display"}, - cbi("olsr/olsrddisplay"), _("Display") - ) - -end - -function action_json() - local http = require "luci.http" - local utl = require "luci.util" - local uci = require "luci.model.uci".cursor() - local jsonreq4 - local jsonreq6 - - local v4_port = uci:get("olsrd", "olsrd_jsoninfo", "port") or 9090 - local v6_port = uci:get("olsrd6", "olsrd_jsoninfo", "port") or 9090 - - jsonreq4 = utl.exec("(echo /status | nc 127.0.0.1 " .. v4_port .. " | sed -n '/^[}{ ]/p') 2>/dev/null" ) - jsonreq6 = utl.exec("(echo /status | nc ::1 " .. v6_port .. " | sed -n '/^[}{ ]/p') 2>/dev/null") - http.prepare_content("application/json") - if not jsonreq4 or jsonreq4 == "" then - jsonreq4 = "{}" - end - if not jsonreq6 or jsonreq6 == "" then - jsonreq6 = "{}" - end - http.write('{"v4":' .. jsonreq4 .. ', "v6":' .. jsonreq6 .. '}') -end - - -local function local_mac_lookup(ipaddr) - local _, ifa, dev - - ipaddr = tostring(ipaddr) - - if not ifaddr_table then - ifaddr_table = nixio.getifaddrs() - end - - -- ipaddr -> ifname - for _, ifa in ipairs(ifaddr_table) do - if ifa.addr == ipaddr then - dev = ifa.name - break - end - end - - -- ifname -> macaddr - for _, ifa in ipairs(ifaddr_table) do - if ifa.name == dev and ifa.family == "packet" then - return ifa.addr - end - end -end - -local function remote_mac_lookup(ipaddr) - local _, n - - if not neigh_table then - neigh_table = luci.ip.neighbors() - end - - for _, n in ipairs(neigh_table) do - if n.mac and n.dest and n.dest:equal(ipaddr) then - return n.mac - end - end -end - -function action_neigh(json) - local data, has_v4, has_v6, error = fetch_jsoninfo('links') - - if error then - return - end - - local uci = require "luci.model.uci".cursor_state() - local resolve = uci:get("luci_olsr", "general", "resolve") - local ntm = require "luci.model.network".init() - local devices = ntm:get_wifidevs() - local sys = require "luci.sys" - local assoclist = {} - --local neightbl = require "neightbl" - local ntm = require "luci.model.network" - local ipc = require "luci.ip" - local nxo = require "nixio" - local defaultgw - - ipc.routes({ family = 4, type = 1, dest_exact = "0.0.0.0/0" }, - function(rt) defaultgw = rt.gw end) - - local function compare(a,b) - if a.proto == b.proto then - return a.linkCost < b.linkCost - else - return a.proto < b.proto - end - end - - for _, dev in ipairs(devices) do - for _, net in ipairs(dev:get_wifinets()) do - local radio = net:get_device() - assoclist[#assoclist+1] = {} - assoclist[#assoclist]['ifname'] = net:ifname() - assoclist[#assoclist]['network'] = net:network()[1] - assoclist[#assoclist]['device'] = radio and radio:name() or nil - assoclist[#assoclist]['list'] = net:assoclist() - end - end - - for k, v in ipairs(data) do - local snr = 0 - local signal = 0 - local noise = 0 - local mac = "" - local ip - local neihgt = {} - - if resolve == "1" then - hostname = nixio.getnameinfo(v.remoteIP, nil, 100) - if hostname then - v.hostname = hostname - end - end - - local interface = ntm:get_status_by_address(v.localIP) - local lmac = local_mac_lookup(v.localIP) - local rmac = remote_mac_lookup(v.remoteIP) - - for _, val in ipairs(assoclist) do - if val.network == interface and val.list then - for assocmac, assot in pairs(val.list) do - assocmac = string.lower(assocmac or "") - if rmac == assocmac then - signal = tonumber(assot.signal) - noise = tonumber(assot.noise) - snr = (noise*-1) - (signal*-1) - end - end - end - end - if interface then - v.interface = interface - end - v.snr = snr - v.signal = signal - v.noise = noise - if rmac then - v.remoteMAC = rmac - end - if lmac then - v.localMAC = lmac - end - - if defaultgw == v.remoteIP then - v.defaultgw = 1 - end - end - - table.sort(data, compare) - luci.template.render("status-olsr/neighbors", {links=data, has_v4=has_v4, has_v6=has_v6}) -end - -function action_routes() - local data, has_v4, has_v6, error = fetch_jsoninfo('routes') - if error then - return - end - - local uci = require "luci.model.uci".cursor_state() - local resolve = uci:get("luci_olsr", "general", "resolve") - - for k, v in ipairs(data) do - if resolve == "1" then - local hostname = nixio.getnameinfo(v.gateway, nil, 100) - if hostname then - v.hostname = hostname - end - end - end - - local function compare(a,b) - if a.proto == b.proto then - return a.rtpMetricCost < b.rtpMetricCost - else - return a.proto < b.proto - end - end - - table.sort(data, compare) - luci.template.render("status-olsr/routes", {routes=data, has_v4=has_v4, has_v6=has_v6}) -end - -function action_topology() - local data, has_v4, has_v6, error = fetch_jsoninfo('topology') - if error then - return - end - - local function compare(a,b) - if a.proto == b.proto then - return a.tcEdgeCost < b.tcEdgeCost - else - return a.proto < b.proto - end - end - - table.sort(data, compare) - luci.template.render("status-olsr/topology", {routes=data, has_v4=has_v4, has_v6=has_v6}) -end - -function action_hna() - local data, has_v4, has_v6, error = fetch_jsoninfo('hna') - if error then - return - end - - local uci = require "luci.model.uci".cursor_state() - local resolve = uci:get("luci_olsr", "general", "resolve") - - local function compare(a,b) - if a.proto == b.proto then - return a.genmask < b.genmask - else - return a.proto < b.proto - end - end - - for k, v in ipairs(data) do - if resolve == "1" then - hostname = nixio.getnameinfo(v.gateway, nil, 100) - if hostname then - v.hostname = hostname - end - end - if v.validityTime then - v.validityTime = tonumber(string.format("%.0f", v.validityTime / 1000)) - end - end - - table.sort(data, compare) - luci.template.render("status-olsr/hna", {hna=data, has_v4=has_v4, has_v6=has_v6}) -end - -function action_mid() - local data, has_v4, has_v6, error = fetch_jsoninfo('mid') - if error then - return - end - - local function compare(a,b) - if a.proto == b.proto then - return a.ipAddress < b.ipAddress - else - return a.proto < b.proto - end - end - - table.sort(data, compare) - luci.template.render("status-olsr/mid", {mids=data, has_v4=has_v4, has_v6=has_v6}) -end - -function action_smartgw() - local data, has_v4, has_v6, error = fetch_jsoninfo('gateways') - if error then - return - end - - local function compare(a,b) - if a.proto == b.proto then - return a.tcPathCost < b.tcPathCost - else - return a.proto < b.proto - end - end - - table.sort(data, compare) - luci.template.render("status-olsr/smartgw", {gws=data, has_v4=has_v4, has_v6=has_v6}) -end - -function action_interfaces() - local data, has_v4, has_v6, error = fetch_jsoninfo('interfaces') - if error then - return - end - - local function compare(a,b) - return a.proto < b.proto - end - - table.sort(data, compare) - luci.template.render("status-olsr/interfaces", {iface=data, has_v4=has_v4, has_v6=has_v6}) -end - --- Internal -function fetch_jsoninfo(otable) - local uci = require "luci.model.uci".cursor_state() - local utl = require "luci.util" - local json = require "luci.json" - local IpVersion = uci:get_first("olsrd", "olsrd","IpVersion") - local jsonreq4 = "" - local jsonreq6 = "" - local v4_port = uci:get("olsrd", "olsrd_jsoninfo", "port") or 9090 - local v6_port = uci:get("olsrd6", "olsrd_jsoninfo", "port") or 9090 - - jsonreq4 = utl.exec("(echo /" .. otable .. " | nc 127.0.0.1 " .. v4_port .. " | sed -n '/^[}{ ]/p') 2>/dev/null") - jsonreq6 = utl.exec("(echo /" .. otable .. " | nc ::1 " .. v6_port .. " | sed -n '/^[}{ ]/p') 2>/dev/null") - local jsondata4 = {} - local jsondata6 = {} - local data4 = {} - local data6 = {} - local has_v4 = False - local has_v6 = False - - if jsonreq4 == '' and jsonreq6 == '' then - luci.template.render("status-olsr/error_olsr") - return nil, 0, 0, true - end - - if jsonreq4 ~= "" then - has_v4 = 1 - jsondata4 = json.decode(jsonreq4) - if otable == 'status' then - data4 = jsondata4 or {} - else - data4 = jsondata4[otable] or {} - end - - for k, v in ipairs(data4) do - data4[k]['proto'] = '4' - end - - end - if jsonreq6 ~= "" then - has_v6 = 1 - jsondata6 = json.decode(jsonreq6) - if otable == 'status' then - data6 = jsondata6 or {} - else - data6 = jsondata6[otable] or {} - end - for k, v in ipairs(data6) do - data6[k]['proto'] = '6' - end - end - - for k, v in ipairs(data6) do - table.insert(data4, v) - end - - return data4, has_v4, has_v6, false -end - diff --git a/package/luci/applications/luci-app-olsr/luasrc/controller/olsr4.lua b/package/luci/applications/luci-app-olsr/luasrc/controller/olsr4.lua deleted file mode 100644 index 31a3101bc2..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/controller/olsr4.lua +++ /dev/null @@ -1,47 +0,0 @@ -module("luci.controller.olsr4", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/olsrd") then - return - end - - require("luci.model.uci") - local uci = luci.model.uci.cursor_state() - - local ol = entry( - {"admin", "services", "olsrd"}, - cbi("olsr/olsrd"), "OLSR IPv4" - ) - ol.subindex = true - - entry( - {"admin", "services", "olsrd", "iface"}, - cbi("olsr/olsrdiface") - ).leaf = true - - entry( - {"admin", "services", "olsrd", "hna"}, - cbi("olsr/olsrdhna"), _("HNA Announcements") - ) - - oplg = entry( - {"admin", "services", "olsrd", "plugins"}, - cbi("olsr/olsrdplugins"), _("Plugins") - ) - - oplg.leaf = true - oplg.subindex = true - - local uci = require("luci.model.uci").cursor() - uci:foreach("olsrd", "LoadPlugin", - function (section) - local lib = section.library - entry( - {"admin", "services", "olsrd", "plugins", lib }, - cbi("olsr/olsrdplugins"), - nil --'Plugin "%s"' % lib:gsub("^olsrd_",""):gsub("%.so.+$","") - ) - end - ) -end - diff --git a/package/luci/applications/luci-app-olsr/luasrc/controller/olsr6.lua b/package/luci/applications/luci-app-olsr/luasrc/controller/olsr6.lua deleted file mode 100644 index 9fbaa0427b..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/controller/olsr6.lua +++ /dev/null @@ -1,47 +0,0 @@ -module("luci.controller.olsr6", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/olsrd6") then - return - end - - require("luci.model.uci") - local uci = luci.model.uci.cursor_state() - - local ol = entry( - {"admin", "services", "olsrd6"}, - cbi("olsr/olsrd6"), "OLSR IPv6" - ) - ol.subindex = true - - entry( - {"admin", "services", "olsrd6", "iface"}, - cbi("olsr/olsrdiface6") - ).leaf = true - - entry( - {"admin", "services", "olsrd6", "hna"}, - cbi("olsr/olsrdhna6"), _("HNA6 Announcements") - ) - - oplg = entry( - {"admin", "services", "olsrd6", "plugins"}, - cbi("olsr/olsrdplugins6"), _("Plugins") - ) - - oplg.leaf = true - oplg.subindex = true - - local uci = require("luci.model.uci").cursor() - uci:foreach("olsrd6", "LoadPlugin", - function (section) - local lib = section.library - entry( - {"admin", "services", "olsrd6", "plugins", lib }, - cbi("olsr/olsrdplugins6"), - nil --'Plugin "%s"' % lib:gsub("^olsrd_",""):gsub("%.so.+$","") - ) - end - ) -end - diff --git a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd.lua b/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd.lua deleted file mode 100644 index a075bcf26d..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd.lua +++ /dev/null @@ -1,409 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require("luci.tools.webadmin") -local fs = require "nixio.fs" -local util = require "luci.util" -local ip = require "luci.ip" - -local has_ipip = fs.glob("/etc/modules.d/[0-9]*-ipip")() - -m = Map("olsrd", translate("OLSR Daemon"), - translate("The OLSR daemon is an implementation of the Optimized Link State Routing protocol. ".. - "As such it allows mesh routing for any network equipment. ".. - "It runs on any wifi card that supports ad-hoc mode and of course on any ethernet device. ".. - "Visit olsrd.org for help and documentation.")) - -function m.on_parse() - local has_defaults = false - - m.uci:foreach("olsrd", "InterfaceDefaults", - function(s) - has_defaults = true - return false - end) - - if not has_defaults then - m.uci:section("olsrd", "InterfaceDefaults") - end -end - -function write_float(self, section, value) - local n = tonumber(value) - if n ~= nil then - return Value.write(self, section, "%.1f" % n) - end -end - -s = m:section(TypedSection, "olsrd", translate("General settings")) -s.anonymous = true - -s:tab("general", translate("General Settings")) -s:tab("lquality", translate("Link Quality Settings")) -s:tab("smartgw", translate("SmartGW"), not has_ipip and translate("Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not work, please install it.")) -s:tab("advanced", translate("Advanced Settings")) - -ipv = s:taboption("general", ListValue, "IpVersion", translate("Internet protocol"), - translate("IP-version to use. If 6and4 is selected then one olsrd instance is started for each protocol.")) -ipv:value("4", "IPv4") -ipv:value("6and4", "6and4") - - -poll = s:taboption("advanced", Value, "Pollrate", translate("Pollrate"), - translate("Polling rate for OLSR sockets in seconds. Default is 0.05.")) -poll.optional = true -poll.datatype = "ufloat" -poll.placeholder = "0.05" - -nicc = s:taboption("advanced", Value, "NicChgsPollInt", translate("Nic changes poll interval"), - translate("Interval to poll network interfaces for configuration changes (in seconds). Default is \"2.5\".")) -nicc.optional = true -nicc.datatype = "ufloat" -nicc.placeholder = "2.5" - -tos = s:taboption("advanced", Value, "TosValue", translate("TOS value"), - translate("Type of service value for the IP header of control traffic. Default is \"16\".")) -tos.optional = true -tos.datatype = "uinteger" -tos.placeholder = "16" - -fib = s:taboption("general", ListValue, "FIBMetric", translate("FIB metric"), - translate ("FIBMetric controls the metric value of the host-routes OLSRd sets. ".. - "\"flat\" means that the metric value is always 2. This is the preferred value ".. - "because it helps the linux kernel routing to clean up older routes. ".. - "\"correct\" uses the hopcount as the metric value. ".. - "\"approx\" use the hopcount as the metric value too, but does only update the hopcount if the nexthop changes too. ".. - "Default is \"flat\".")) -fib:value("flat") -fib:value("correct") -fib:value("approx") - -lql = s:taboption("lquality", ListValue, "LinkQualityLevel", translate("LQ level"), - translate("Link quality level switch between hopcount and cost-based (mostly ETX) routing.
    ".. - "0 = do not use link quality
    ".. - "2 = use link quality for MPR selection and routing
    ".. - "Default is \"2\"")) -lql:value("2") -lql:value("0") - -lqage = s:taboption("lquality", Value, "LinkQualityAging", translate("LQ aging"), - translate("Link quality aging factor (only for lq level 2). Tuning parameter for etx_float and etx_fpm, smaller values ".. - "mean slower changes of ETX value. (allowed values are between 0.01 and 1.0)")) -lqage.optional = true -lqage:depends("LinkQualityLevel", "2") - -lqa = s:taboption("lquality", ListValue, "LinkQualityAlgorithm", translate("LQ algorithm"), - translate("Link quality algorithm (only for lq level 2).
    ".. - "etx_float: floating point ETX with exponential aging
    ".. - "etx_fpm : same as etx_float, but with integer arithmetic
    ".. - "etx_ff : ETX freifunk, an etx variant which use all OLSR traffic (instead of only hellos) for ETX calculation
    ".. - "etx_ffeth: incompatible variant of etx_ff that allows ethernet links with ETX 0.1.
    ".. - "Defaults to \"etx_ff\"")) -lqa.optional = true -lqa:value("etx_ff") -lqa:value("etx_fpm") -lqa:value("etx_float") -lqa:value("etx_ffeth") -lqa:depends("LinkQualityLevel", "2") -lqa.optional = true - -lqfish = s:taboption("lquality", Flag, "LinkQualityFishEye", translate("LQ fisheye"), - translate("Fisheye mechanism for TCs (checked means on). Default is \"on\"")) -lqfish.default = "1" -lqfish.optional = true - -hyst = s:taboption("lquality", Flag, "UseHysteresis", translate("Use hysteresis"), - translate("Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more robustness to the link sensing ".. - "but delays neighbor registration. Defaults is \"yes\"")) -hyst.default = "yes" -hyst.enabled = "yes" -hyst.disabled = "no" -hyst:depends("LinkQualityLevel", "0") -hyst.optional = true -hyst.rmempty = true - -port = s:taboption("general", Value, "OlsrPort", translate("Port"), - translate("The port OLSR uses. This should usually stay at the IANA assigned port 698. It can have a value between 1 and 65535.")) -port.optional = true -port.default = "698" -port.rmempty = true - -mainip = s:taboption("general", Value, "MainIp", translate("Main IP"), - translate("Sets the main IP (originator ip) of the router. This IP will NEVER change during the uptime of olsrd. ".. - "Default is 0.0.0.0, which triggers usage of the IP of the first interface.")) -mainip.optional = true -mainip.rmempty = true -mainip.datatype = "ipaddr" -mainip.placeholder = "0.0.0.0" - -sgw = s:taboption("smartgw", Flag, "SmartGateway", translate("Enable"), translate("Enable SmartGateway. If it is disabled, then " .. - "all other SmartGateway parameters are ignored. Default is \"no\".")) -sgw.default="no" -sgw.enabled="yes" -sgw.disabled="no" -sgw.rmempty = true - -sgwnat = s:taboption("smartgw", Flag, "SmartGatewayAllowNAT", translate("Allow gateways with NAT"), translate("Allow the selection of an outgoing ipv4 gateway with NAT")) -sgwnat:depends("SmartGateway", "yes") -sgwnat.default="yes" -sgwnat.enabled="yes" -sgwnat.disabled="no" -sgwnat.optional = true -sgwnat.rmempty = true - -sgwuplink = s:taboption("smartgw", ListValue, "SmartGatewayUplink", translate("Announce uplink"), translate("Which kind of uplink is exported to the other mesh nodes. " .. - "An uplink is detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. Default setting is \"both\".")) -sgwuplink:value("none") -sgwuplink:value("ipv4") -sgwuplink:value("ipv6") -sgwuplink:value("both") -sgwuplink:depends("SmartGateway", "yes") -sgwuplink.default="both" -sgwuplink.optional = true -sgwuplink.rmempty = true - -sgwulnat = s:taboption("smartgw", Flag, "SmartGatewayUplinkNAT", translate("Uplink uses NAT"), translate("If this Node uses NAT for connections to the internet. " .. - "Default is \"yes\".")) -sgwulnat:depends("SmartGatewayUplink", "ipv4") -sgwulnat:depends("SmartGatewayUplink", "both") -sgwulnat.default="yes" -sgwulnat.enabled="yes" -sgwulnat.disabled="no" -sgwnat.optional = true -sgwnat.rmempty = true - -sgwspeed = s:taboption("smartgw", Value, "SmartGatewaySpeed", translate("Speed of the uplink"), translate("Specifies the speed of ".. - "the uplink in kilobits/s. First parameter is upstream, second parameter is downstream. Default is \"128 1024\".")) -sgwspeed:depends("SmartGatewayUplink", "ipv4") -sgwspeed:depends("SmartGatewayUplink", "ipv6") -sgwspeed:depends("SmartGatewayUplink", "both") -sgwspeed.optional = true -sgwspeed.rmempty = true - -sgwprefix = s:taboption("smartgw", Value, "SmartGatewayPrefix", translate("IPv6-Prefix of the uplink"), translate("This can be used " .. - "to signal the external IPv6 prefix of the uplink to the clients. This might allow a client to change it's local IPv6 address to " .. - "use the IPv6 gateway without any kind of address translation. The maximum prefix length is 64 bits. " .. - "Default is \"::/0\" (no prefix).")) -sgwprefix:depends("SmartGatewayUplink", "ipv6") -sgwprefix:depends("SmartGatewayUplink", "both") -sgwprefix.optional = true -sgwprefix.rmempty = true - -willingness = s:taboption("advanced", ListValue, "Willingness", translate("Willingness"), - translate("The fixed willingness to use. If not set willingness will be calculated dynamically based on battery/power status. Default is \"3\".")) -for i=0,7 do - willingness:value(i) -end -willingness.optional = true -willingness.default = "3" - -natthr = s:taboption("advanced", Value, "NatThreshold", translate("NAT threshold"), - translate("If the route to the current gateway is to be changed, the ETX value of this gateway is ".. - "multiplied with this value before it is compared to the new one. ".. - "The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 if changed.
    ".. - "WARNING: This parameter should not be used together with the etx_ffeth metric!
    ".. - "Defaults to \"1.0\".")) -for i=1,0.1,-0.1 do - natthr:value(i) -end -natthr:depends("LinkQualityAlgorithm", "etx_ff") -natthr:depends("LinkQualityAlgorithm", "etx_float") -natthr:depends("LinkQualityAlgorithm", "etx_fpm") -natthr.default = "1.0" -natthr.optional = true -natthr.write = write_float - - -i = m:section(TypedSection, "InterfaceDefaults", translate("Interfaces Defaults")) -i.anonymous = true -i.addremove = false - -i:tab("general", translate("General Settings")) -i:tab("addrs", translate("IP Addresses")) -i:tab("timing", translate("Timing and Validity")) - -mode = i:taboption("general", ListValue, "Mode", translate("Mode"), - translate("Interface Mode is used to prevent unnecessary packet forwarding on switched ethernet interfaces. ".. - "valid Modes are \"mesh\" and \"ether\". Default is \"mesh\".")) -mode:value("mesh") -mode:value("ether") -mode.optional = true -mode.rmempty = true - - -weight = i:taboption("general", Value, "Weight", translate("Weight"), - translate("When multiple links exist between hosts the weight of interface is used to determine the link to use. ".. - "Normally the weight is automatically calculated by olsrd based on the characteristics of the interface, ".. - "but here you can specify a fixed value. Olsrd will choose links with the lowest value.
    ".. - "Note: Interface weight is used only when LinkQualityLevel is set to 0. ".. - "For any other value of LinkQualityLevel, the interface ETX value is used instead.")) -weight.optional = true -weight.datatype = "uinteger" -weight.placeholder = "0" - -lqmult = i:taboption("general", DynamicList, "LinkQualityMult", translate("LinkQuality Multiplicator"), - translate("Multiply routes with the factor given here. Allowed values are between 0.01 and 1.0. ".. - "It is only used when LQ-Level is greater than 0. Examples:
    ".. - "reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    ".. - "reduce LQ to all nodes on this interface by 20%: default 0.8")) -lqmult.optional = true -lqmult.rmempty = true -lqmult.cast = "table" -lqmult.placeholder = "default 1.0" - -function lqmult.validate(self, value) - for _, v in pairs(value) do - if v ~= "" then - local val = util.split(v, " ") - local host = val[1] - local mult = val[2] - if not host or not mult then - return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) seperated by space.") - end - if not (host == "default" or ip.IPv4(host) or ip.IPv6(host)) then - return nil, translate("Can only be a valid IPv4 or IPv6 address or 'default'") - end - if not tonumber(mult) or tonumber(mult) > 1 or tonumber(mult) < 0.01 then - return nil, translate("Invalid Value for LQMult-Value. Must be between 0.01 and 1.0.") - end - if not mult:match("[0-1]%.[0-9]+") then - return nil, translate("Invalid Value for LQMult-Value. You must use a decimal number between 0.01 and 1.0 here.") - end - end - end - return value -end - -ip4b = i:taboption("addrs", Value, "Ip4Broadcast", translate("IPv4 broadcast"), - translate("IPv4 broadcast address for outgoing OLSR packets. One useful example would be 255.255.255.255. ".. - "Default is \"0.0.0.0\", which triggers the usage of the interface broadcast IP.")) -ip4b.optional = true -ip4b.datatype = "ip4addr" -ip4b.placeholder = "0.0.0.0" - -ip6m = i:taboption("addrs", Value, "IPv6Multicast", translate("IPv6 multicast"), - translate("IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal multicast.")) -ip6m.optional = true -ip6m.datatype = "ip6addr" -ip6m.placeholder = "FF02::6D" - -ip4s = i:taboption("addrs", Value, "IPv4Src", translate("IPv4 source"), - translate("IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which triggers usage of the interface IP.")) -ip4s.optional = true -ip4s.datatype = "ip4addr" -ip4s.placeholder = "0.0.0.0" - -ip6s = i:taboption("addrs", Value, "IPv6Src", translate("IPv6 source"), - translate("IPv6 src prefix. OLSRd will choose one of the interface IPs which matches the prefix of this parameter. ".. - "Default is \"0::/0\", which triggers the usage of a not-linklocal interface IP.")) -ip6s.optional = true -ip6s.datatype = "ip6addr" -ip6s.placeholder = "0::/0" - - -hi = i:taboption("timing", Value, "HelloInterval", translate("Hello interval")) -hi.optional = true -hi.datatype = "ufloat" -hi.placeholder = "5.0" -hi.write = write_float - -hv = i:taboption("timing", Value, "HelloValidityTime", translate("Hello validity time")) -hv.optional = true -hv.datatype = "ufloat" -hv.placeholder = "40.0" -hv.write = write_float - -ti = i:taboption("timing", Value, "TcInterval", translate("TC interval")) -ti.optional = true -ti.datatype = "ufloat" -ti.placeholder = "2.0" -ti.write = write_float - -tv = i:taboption("timing", Value, "TcValidityTime", translate("TC validity time")) -tv.optional = true -tv.datatype = "ufloat" -tv.placeholder = "256.0" -tv.write = write_float - -mi = i:taboption("timing", Value, "MidInterval", translate("MID interval")) -mi.optional = true -mi.datatype = "ufloat" -mi.placeholder = "18.0" -mi.write = write_float - -mv = i:taboption("timing", Value, "MidValidityTime", translate("MID validity time")) -mv.optional = true -mv.datatype = "ufloat" -mv.placeholder = "324.0" -mv.write = write_float - -ai = i:taboption("timing", Value, "HnaInterval", translate("HNA interval")) -ai.optional = true -ai.datatype = "ufloat" -ai.placeholder = "18.0" -ai.write = write_float - -av = i:taboption("timing", Value, "HnaValidityTime", translate("HNA validity time")) -av.optional = true -av.datatype = "ufloat" -av.placeholder = "108.0" -av.write = write_float - - -ifs = m:section(TypedSection, "Interface", translate("Interfaces")) -ifs.addremove = true -ifs.anonymous = true -ifs.extedit = luci.dispatcher.build_url("admin/services/olsrd/iface/%s") -ifs.template = "cbi/tblsection" - -function ifs.create(...) - local sid = TypedSection.create(...) - luci.http.redirect(ifs.extedit % sid) -end - -ign = ifs:option(Flag, "ignore", translate("Enable")) -ign.enabled = "0" -ign.disabled = "1" -ign.rmempty = false -function ign.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" -end - -network = ifs:option(DummyValue, "interface", translate("Network")) -network.template = "cbi/network_netinfo" - -mode = ifs:option(DummyValue, "Mode", translate("Mode")) -function mode.cfgvalue(...) - return Value.cfgvalue(...) or m.uci:get_first("olsrd", "InterfaceDefaults", "Mode", "mesh") -end - -hello = ifs:option(DummyValue, "_hello", translate("Hello")) -function hello.cfgvalue(self, section) - local i = tonumber(m.uci:get("olsrd", section, "HelloInterval")) or tonumber(m.uci:get_first("olsrd", "InterfaceDefaults", "HelloInterval", 5)) - local v = tonumber(m.uci:get("olsrd", section, "HelloValidityTime")) or tonumber(m.uci:get_first("olsrd", "InterfaceDefaults", "HelloValidityTime", 40)) - return "%.01fs / %.01fs" %{ i, v } -end - -tc = ifs:option(DummyValue, "_tc", translate("TC")) -function tc.cfgvalue(self, section) - local i = tonumber(m.uci:get("olsrd", section, "TcInterval")) or tonumber(m.uci:get_first("olsrd", "InterfaceDefaults", "TcInterval", 2)) - local v = tonumber(m.uci:get("olsrd", section, "TcValidityTime")) or tonumber(m.uci:get_first("olsrd", "InterfaceDefaults", "TcValidityTime", 256)) - return "%.01fs / %.01fs" %{ i, v } -end - -mid = ifs:option(DummyValue, "_mid", translate("MID")) -function mid.cfgvalue(self, section) - local i = tonumber(m.uci:get("olsrd", section, "MidInterval")) or tonumber(m.uci:get_first("olsrd", "InterfaceDefaults", "MidInterval", 18)) - local v = tonumber(m.uci:get("olsrd", section, "MidValidityTime")) or tonumber(m.uci:get_first("olsrd", "InterfaceDefaults", "MidValidityTime", 324)) - return "%.01fs / %.01fs" %{ i, v } -end - -hna = ifs:option(DummyValue, "_hna", translate("HNA")) -function hna.cfgvalue(self, section) - local i = tonumber(m.uci:get("olsrd", section, "HnaInterval")) or tonumber(m.uci:get_first("olsrd", "InterfaceDefaults", "HnaInterval", 18)) - local v = tonumber(m.uci:get("olsrd", section, "HnaValidityTime")) or tonumber(m.uci:get_first("olsrd", "InterfaceDefaults", "HnaValidityTime", 108)) - return "%.01fs / %.01fs" %{ i, v } -end - -return m diff --git a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd6.lua b/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd6.lua deleted file mode 100644 index 0007e673e2..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrd6.lua +++ /dev/null @@ -1,390 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require("luci.tools.webadmin") -local fs = require "nixio.fs" -local util = require "luci.util" -local ip = require "luci.ip" - -local has_ipip = fs.glob("/etc/modules.d/[0-9]*-ipip")() - -m = Map("olsrd6", translate("OLSR Daemon"), - translate("The OLSR daemon is an implementation of the Optimized Link State Routing protocol. ".. - "As such it allows mesh routing for any network equipment. ".. - "It runs on any wifi card that supports ad-hoc mode and of course on any ethernet device. ".. - "Visit olsrd.org for help and documentation.")) - -function m.on_parse() - local has_defaults = false - - m.uci:foreach("olsrd6", "InterfaceDefaults", - function(s) - has_defaults = true - return false - end) - - if not has_defaults then - m.uci:section("olsrd6", "InterfaceDefaults") - end -end - -function write_float(self, section, value) - local n = tonumber(value) - if n ~= nil then - return Value.write(self, section, "%.1f" % n) - end -end - -s = m:section(TypedSection, "olsrd6", translate("General settings")) -s.anonymous = true - -s:tab("general", translate("General Settings")) -s:tab("lquality", translate("Link Quality Settings")) -s:tab("smartgw", translate("SmartGW"), not has_ipip and translate("Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not work, please install it.")) -s:tab("advanced", translate("Advanced Settings")) - -poll = s:taboption("advanced", Value, "Pollrate", translate("Pollrate"), - translate("Polling rate for OLSR sockets in seconds. Default is 0.05.")) -poll.optional = true -poll.datatype = "ufloat" -poll.placeholder = "0.05" - -nicc = s:taboption("advanced", Value, "NicChgsPollInt", translate("Nic changes poll interval"), - translate("Interval to poll network interfaces for configuration changes (in seconds). Default is \"2.5\".")) -nicc.optional = true -nicc.datatype = "ufloat" -nicc.placeholder = "2.5" - -tos = s:taboption("advanced", Value, "TosValue", translate("TOS value"), - translate("Type of service value for the IP header of control traffic. Default is \"16\".")) -tos.optional = true -tos.datatype = "uinteger" -tos.placeholder = "16" - -fib = s:taboption("general", ListValue, "FIBMetric", translate("FIB metric"), - translate ("FIBMetric controls the metric value of the host-routes OLSRd sets. ".. - "\"flat\" means that the metric value is always 2. This is the preferred value ".. - "because it helps the linux kernel routing to clean up older routes. ".. - "\"correct\" uses the hopcount as the metric value. ".. - "\"approx\" use the hopcount as the metric value too, but does only update the hopcount if the nexthop changes too. ".. - "Default is \"flat\".")) -fib:value("flat") -fib:value("correct") -fib:value("approx") - -lql = s:taboption("lquality", ListValue, "LinkQualityLevel", translate("LQ level"), - translate("Link quality level switch between hopcount and cost-based (mostly ETX) routing.
    ".. - "0 = do not use link quality
    ".. - "2 = use link quality for MPR selection and routing
    ".. - "Default is \"2\"")) -lql:value("2") -lql:value("0") - -lqage = s:taboption("lquality", Value, "LinkQualityAging", translate("LQ aging"), - translate("Link quality aging factor (only for lq level 2). Tuning parameter for etx_float and etx_fpm, smaller values ".. - "mean slower changes of ETX value. (allowed values are between 0.01 and 1.0)")) -lqage.optional = true -lqage:depends("LinkQualityLevel", "2") - -lqa = s:taboption("lquality", ListValue, "LinkQualityAlgorithm", translate("LQ algorithm"), - translate("Link quality algorithm (only for lq level 2).
    ".. - "etx_float: floating point ETX with exponential aging
    ".. - "etx_fpm : same as etx_float, but with integer arithmetic
    ".. - "etx_ff : ETX freifunk, an etx variant which use all OLSR traffic (instead of only hellos) for ETX calculation
    ".. - "etx_ffeth: incompatible variant of etx_ff that allows ethernet links with ETX 0.1.
    ".. - "Defaults to \"etx_ff\"")) -lqa.optional = true -lqa:value("etx_ff") -lqa:value("etx_fpm") -lqa:value("etx_float") -lqa:value("etx_ffeth") -lqa:depends("LinkQualityLevel", "2") -lqa.optional = true - -lqfish = s:taboption("lquality", Flag, "LinkQualityFishEye", translate("LQ fisheye"), - translate("Fisheye mechanism for TCs (checked means on). Default is \"on\"")) -lqfish.default = "1" -lqfish.optional = true - -hyst = s:taboption("lquality", Flag, "UseHysteresis", translate("Use hysteresis"), - translate("Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more robustness to the link sensing ".. - "but delays neighbor registration. Defaults is \"yes\"")) -hyst.default = "yes" -hyst.enabled = "yes" -hyst.disabled = "no" -hyst:depends("LinkQualityLevel", "0") -hyst.optional = true -hyst.rmempty = true - -port = s:taboption("general", Value, "OlsrPort", translate("Port"), - translate("The port OLSR uses. This should usually stay at the IANA assigned port 698. It can have a value between 1 and 65535.")) -port.optional = true -port.default = "698" -port.rmempty = true - -mainip = s:taboption("general", Value, "MainIp", translate("Main IP"), - translate("Sets the main IP (originator ip) of the router. This IP will NEVER change during the uptime of olsrd. ".. - "Default is ::, which triggers usage of the IP of the first interface.")) -mainip.optional = true -mainip.rmempty = true -mainip.datatype = "ipaddr" -mainip.placeholder = "::" - -sgw = s:taboption("smartgw", Flag, "SmartGateway", translate("Enable"), translate("Enable SmartGateway. If it is disabled, then " .. - "all other SmartGateway parameters are ignored. Default is \"no\".")) -sgw.default="no" -sgw.enabled="yes" -sgw.disabled="no" -sgw.rmempty = true - -sgwnat = s:taboption("smartgw", Flag, "SmartGatewayAllowNAT", translate("Allow gateways with NAT"), translate("Allow the selection of an outgoing ipv4 gateway with NAT")) -sgwnat:depends("SmartGateway", "yes") -sgwnat.default="yes" -sgwnat.enabled="yes" -sgwnat.disabled="no" -sgwnat.optional = true -sgwnat.rmempty = true - -sgwuplink = s:taboption("smartgw", ListValue, "SmartGatewayUplink", translate("Announce uplink"), translate("Which kind of uplink is exported to the other mesh nodes. " .. - "An uplink is detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default setting is \"both\".")) -sgwuplink:value("none") -sgwuplink:value("ipv4") -sgwuplink:value("ipv6") -sgwuplink:value("both") -sgwuplink:depends("SmartGateway", "yes") -sgwuplink.default="both" -sgwuplink.optional = true -sgwuplink.rmempty = true - -sgwulnat = s:taboption("smartgw", Flag, "SmartGatewayUplinkNAT", translate("Uplink uses NAT"), translate("If this Node uses NAT for connections to the internet. " .. - "Default is \"yes\".")) -sgwulnat:depends("SmartGatewayUplink", "ipv4") -sgwulnat:depends("SmartGatewayUplink", "both") -sgwulnat.default="yes" -sgwulnat.enabled="yes" -sgwulnat.disabled="no" -sgwnat.optional = true -sgwnat.rmempty = true - -sgwspeed = s:taboption("smartgw", Value, "SmartGatewaySpeed", translate("Speed of the uplink"), translate("Specifies the speed of ".. - "the uplink in kilobits/s. First parameter is upstream, second parameter is downstream. Default is \"128 1024\".")) -sgwspeed:depends("SmartGatewayUplink", "ipv4") -sgwspeed:depends("SmartGatewayUplink", "ipv6") -sgwspeed:depends("SmartGatewayUplink", "both") -sgwspeed.optional = true -sgwspeed.rmempty = true - -sgwprefix = s:taboption("smartgw", Value, "SmartGatewayPrefix", translate("IPv6-Prefix of the uplink"), translate("This can be used " .. - "to signal the external IPv6 prefix of the uplink to the clients. This might allow a client to change it's local IPv6 address to " .. - "use the IPv6 gateway without any kind of address translation. The maximum prefix length is 64 bits. " .. - "Default is \"::/0\" (no prefix).")) -sgwprefix:depends("SmartGatewayUplink", "ipv6") -sgwprefix:depends("SmartGatewayUplink", "both") -sgwprefix.optional = true -sgwprefix.rmempty = true - -willingness = s:taboption("advanced", ListValue, "Willingness", translate("Willingness"), - translate("The fixed willingness to use. If not set willingness will be calculated dynamically based on battery/power status. Default is \"3\".")) -for i=0,7 do - willingness:value(i) -end -willingness.optional = true -willingness.default = "3" - -natthr = s:taboption("advanced", Value, "NatThreshold", translate("NAT threshold"), - translate("If the route to the current gateway is to be changed, the ETX value of this gateway is ".. - "multiplied with this value before it is compared to the new one. ".. - "The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 if changed.
    ".. - "WARNING: This parameter should not be used together with the etx_ffeth metric!
    ".. - "Defaults to \"1.0\".")) -for i=1,0.1,-0.1 do - natthr:value(i) -end -natthr:depends("LinkQualityAlgorithm", "etx_ff") -natthr:depends("LinkQualityAlgorithm", "etx_float") -natthr:depends("LinkQualityAlgorithm", "etx_fpm") -natthr.default = "1.0" -natthr.optional = true -natthr.write = write_float - - -i = m:section(TypedSection, "InterfaceDefaults", translate("Interfaces Defaults")) -i.anonymous = true -i.addremove = false - -i:tab("general", translate("General Settings")) -i:tab("addrs", translate("IP Addresses")) -i:tab("timing", translate("Timing and Validity")) - -mode = i:taboption("general", ListValue, "Mode", translate("Mode"), - translate("Interface Mode is used to prevent unnecessary packet forwarding on switched ethernet interfaces. ".. - "valid Modes are \"mesh\" and \"ether\". Default is \"mesh\".")) -mode:value("mesh") -mode:value("ether") -mode.optional = true -mode.rmempty = true - - -weight = i:taboption("general", Value, "Weight", translate("Weight"), - translate("When multiple links exist between hosts the weight of interface is used to determine the link to use. ".. - "Normally the weight is automatically calculated by olsrd based on the characteristics of the interface, ".. - "but here you can specify a fixed value. Olsrd will choose links with the lowest value.
    ".. - "Note: Interface weight is used only when LinkQualityLevel is set to 0. ".. - "For any other value of LinkQualityLevel, the interface ETX value is used instead.")) -weight.optional = true -weight.datatype = "uinteger" -weight.placeholder = "0" - -lqmult = i:taboption("general", DynamicList, "LinkQualityMult", translate("LinkQuality Multiplicator"), - translate("Multiply routes with the factor given here. Allowed values are between 0.01 and 1.0. ".. - "It is only used when LQ-Level is greater than 0. Examples:
    ".. - "reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    ".. - "reduce LQ to all nodes on this interface by 20%: default 0.8")) -lqmult.optional = true -lqmult.rmempty = true -lqmult.cast = "table" -lqmult.placeholder = "default 1.0" - -function lqmult.validate(self, value) - for _, v in pairs(value) do - if v ~= "" then - local val = util.split(v, " ") - local host = val[1] - local mult = val[2] - if not host or not mult then - return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) seperated by space.") - end - if not (host == "default" or ip.IPv6(host)) then - return nil, translate("Can only be a valid IPv6 address or 'default'") - end - if not tonumber(mult) or tonumber(mult) > 1 or tonumber(mult) < 0.01 then - return nil, translate("Invalid Value for LQMult-Value. Must be between 0.01 and 1.0.") - end - if not mult:match("[0-1]%.[0-9]+") then - return nil, translate("Invalid Value for LQMult-Value. You must use a decimal number between 0.01 and 1.0 here.") - end - end - end - return value -end - -ip6m = i:taboption("addrs", Value, "IPv6Multicast", translate("IPv6 multicast"), - translate("IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal multicast.")) -ip6m.optional = true -ip6m.datatype = "ip6addr" -ip6m.placeholder = "FF02::6D" - -ip6s = i:taboption("addrs", Value, "IPv6Src", translate("IPv6 source"), - translate("IPv6 src prefix. OLSRd will choose one of the interface IPs which matches the prefix of this parameter. ".. - "Default is \"0::/0\", which triggers the usage of a not-linklocal interface IP.")) -ip6s.optional = true -ip6s.datatype = "ip6addr" -ip6s.placeholder = "0::/0" - - -hi = i:taboption("timing", Value, "HelloInterval", translate("Hello interval")) -hi.optional = true -hi.datatype = "ufloat" -hi.placeholder = "5.0" -hi.write = write_float - -hv = i:taboption("timing", Value, "HelloValidityTime", translate("Hello validity time")) -hv.optional = true -hv.datatype = "ufloat" -hv.placeholder = "40.0" -hv.write = write_float - -ti = i:taboption("timing", Value, "TcInterval", translate("TC interval")) -ti.optional = true -ti.datatype = "ufloat" -ti.placeholder = "2.0" -ti.write = write_float - -tv = i:taboption("timing", Value, "TcValidityTime", translate("TC validity time")) -tv.optional = true -tv.datatype = "ufloat" -tv.placeholder = "256.0" -tv.write = write_float - -mi = i:taboption("timing", Value, "MidInterval", translate("MID interval")) -mi.optional = true -mi.datatype = "ufloat" -mi.placeholder = "18.0" -mi.write = write_float - -mv = i:taboption("timing", Value, "MidValidityTime", translate("MID validity time")) -mv.optional = true -mv.datatype = "ufloat" -mv.placeholder = "324.0" -mv.write = write_float - -ai = i:taboption("timing", Value, "HnaInterval", translate("HNA interval")) -ai.optional = true -ai.datatype = "ufloat" -ai.placeholder = "18.0" -ai.write = write_float - -av = i:taboption("timing", Value, "HnaValidityTime", translate("HNA validity time")) -av.optional = true -av.datatype = "ufloat" -av.placeholder = "108.0" -av.write = write_float - - -ifs = m:section(TypedSection, "Interface", translate("Interfaces")) -ifs.addremove = true -ifs.anonymous = true -ifs.extedit = luci.dispatcher.build_url("admin/services/olsrd6/iface/%s") -ifs.template = "cbi/tblsection" - -function ifs.create(...) - local sid = TypedSection.create(...) - luci.http.redirect(ifs.extedit % sid) -end - -ign = ifs:option(Flag, "ignore", translate("Enable")) -ign.enabled = "0" -ign.disabled = "1" -ign.rmempty = false -function ign.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" -end - -network = ifs:option(DummyValue, "interface", translate("Network")) -network.template = "cbi/network_netinfo" - -mode = ifs:option(DummyValue, "Mode", translate("Mode")) -function mode.cfgvalue(...) - return Value.cfgvalue(...) or m.uci:get_first("olsrd6", "InterfaceDefaults", "Mode", "mesh") -end - -hello = ifs:option(DummyValue, "_hello", translate("Hello")) -function hello.cfgvalue(self, section) - local i = tonumber(m.uci:get("olsrd6", section, "HelloInterval")) or tonumber(m.uci:get_first("olsrd6", "InterfaceDefaults", "HelloInterval", 5)) - local v = tonumber(m.uci:get("olsrd6", section, "HelloValidityTime")) or tonumber(m.uci:get_first("olsrd6", "InterfaceDefaults", "HelloValidityTime", 40)) - return "%.01fs / %.01fs" %{ i, v } -end - -tc = ifs:option(DummyValue, "_tc", translate("TC")) -function tc.cfgvalue(self, section) - local i = tonumber(m.uci:get("olsrd6", section, "TcInterval")) or tonumber(m.uci:get_first("olsrd6", "InterfaceDefaults", "TcInterval", 2)) - local v = tonumber(m.uci:get("olsrd6", section, "TcValidityTime")) or tonumber(m.uci:get_first("olsrd6", "InterfaceDefaults", "TcValidityTime", 256)) - return "%.01fs / %.01fs" %{ i, v } -end - -mid = ifs:option(DummyValue, "_mid", translate("MID")) -function mid.cfgvalue(self, section) - local i = tonumber(m.uci:get("olsrd6", section, "MidInterval")) or tonumber(m.uci:get_first("olsrd6", "InterfaceDefaults", "MidInterval", 18)) - local v = tonumber(m.uci:get("olsrd6", section, "MidValidityTime")) or tonumber(m.uci:get_first("olsrd6", "InterfaceDefaults", "MidValidityTime", 324)) - return "%.01fs / %.01fs" %{ i, v } -end - -hna = ifs:option(DummyValue, "_hna", translate("HNA")) -function hna.cfgvalue(self, section) - local i = tonumber(m.uci:get("olsrd6", section, "HnaInterval")) or tonumber(m.uci:get_first("olsrd6", "InterfaceDefaults", "HnaInterval", 18)) - local v = tonumber(m.uci:get("olsrd6", section, "HnaValidityTime")) or tonumber(m.uci:get_first("olsrd6", "InterfaceDefaults", "HnaValidityTime", 108)) - return "%.01fs / %.01fs" %{ i, v } -end - -return m diff --git a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrddisplay.lua b/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrddisplay.lua deleted file mode 100644 index aadb44f377..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrddisplay.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_olsr", translate("OLSR - Display Options")) - -s = m:section(TypedSection, "olsr") -s.anonymous = true - -res = s:option(Flag, "resolve", translate("Resolve"), - translate("Resolve hostnames on status pages. It is generally safe to allow this, but if you use public IPs and have unstable DNS-Setup then those pages will load really slow. In this case disable it here.")) -res.default = "0" -res.optional = true - -return m diff --git a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdhna.lua b/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdhna.lua deleted file mode 100644 index e4b093aa13..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdhna.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local uci = require "luci.model.uci".cursor() -local ipv = uci:get_first("olsrd", "olsrd", "IpVersion", "4") - -mh = Map("olsrd", translate("OLSR - HNA-Announcements"), translate("Hosts in a OLSR routed network can announce connecitivity " .. - "to external networks using HNA messages.")) - -if ipv == "6and4" or ipv == "4" then - hna4 = mh:section(TypedSection, "Hna4", translate("Hna4"), translate("Both values must use the dotted decimal notation.")) - hna4.addremove = true - hna4.anonymous = true - hna4.template = "cbi/tblsection" - - net4 = hna4:option(Value, "netaddr", translate("Network address")) - net4.datatype = "ip4addr" - net4.placeholder = "10.11.12.13" - net4.default = "10.11.12.13" - msk4 = hna4:option(Value, "netmask", translate("Netmask")) - msk4.datatype = "ip4addr" - msk4.placeholder = "255.255.255.255" - msk4.default = "255.255.255.255" -end - -if ipv == "6and4" or ipv == "6" then - hna6 = mh:section(TypedSection, "Hna6", translate("Hna6"), translate("IPv6 network must be given in full notation, " .. - "prefix must be in CIDR notation.")) - hna6.addremove = true - hna6.anonymous = true - hna6.template = "cbi/tblsection" - - net6 = hna6:option(Value, "netaddr", translate("Network address")) - net6.datatype = "ip6addr" - net6.placeholder = "fec0:2200:106:0:0:0:0:0" - net6.default = "fec0:2200:106:0:0:0:0:0" - msk6 = hna6:option(Value, "prefix", translate("Prefix")) - msk6.datatype = "range(0,128)" - msk6.placeholder = "128" - msk6.default = "128" -end - -return mh - diff --git a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdhna6.lua b/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdhna6.lua deleted file mode 100644 index 682421ff7a..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdhna6.lua +++ /dev/null @@ -1,25 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local uci = require "luci.model.uci".cursor() - -mh = Map("olsrd6", translate("OLSR - HNA6-Announcements"), translate("Hosts in a OLSR routed network can announce connecitivity " .. - "to external networks using HNA6 messages.")) - - hna6 = mh:section(TypedSection, "Hna6", translate("Hna6"), translate("IPv6 network must be given in full notation, " .. - "prefix must be in CIDR notation.")) - hna6.addremove = true - hna6.anonymous = true - hna6.template = "cbi/tblsection" - - net6 = hna6:option(Value, "netaddr", translate("Network address")) - net6.datatype = "ip6addr" - net6.placeholder = "fec0:2200:106:0:0:0:0:0" - net6.default = "fec0:2200:106:0:0:0:0:0" - msk6 = hna6:option(Value, "prefix", translate("Prefix")) - msk6.datatype = "range(0,128)" - msk6.placeholder = "128" - msk6.default = "128" -return mh - diff --git a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface.lua b/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface.lua deleted file mode 100644 index d6b7cd16a6..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface.lua +++ /dev/null @@ -1,177 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -local ip = require "luci.ip" - -function write_float(self, section, value) - local n = tonumber(value) - if n ~= nil then - return Value.write(self, section, "%.1f" % n) - end -end - -m = Map("olsrd", translate("OLSR Daemon - Interface"), - translate("The OLSR daemon is an implementation of the Optimized Link State Routing protocol. ".. - "As such it allows mesh routing for any network equipment. ".. - "It runs on any wifi card that supports ad-hoc mode and of course on any ethernet device. ".. - "Visit olsrd.org for help and documentation.")) - -m.redirect = luci.dispatcher.build_url("admin/services/olsrd") - -if not arg[1] or m.uci:get("olsrd", arg[1]) ~= "Interface" then - luci.http.redirect(m.redirect) - return -end - -i = m:section(NamedSection, arg[1], "Interface", translate("Interface")) -i.anonymous = true -i.addremove = false - -i:tab("general", translate("General Settings")) -i:tab("addrs", translate("IP Addresses")) -i:tab("timing", translate("Timing and Validity")) - -ign = i:taboption("general", Flag, "ignore", translate("Enable"), - translate("Enable this interface.")) -ign.enabled = "0" -ign.disabled = "1" -ign.rmempty = false -function ign.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" -end - -network = i:taboption("general", Value, "interface", translate("Network"), - translate("The interface OLSRd should serve.")) - -network.template = "cbi/network_netlist" -network.widget = "radio" -network.nocreate = true - -mode = i:taboption("general", ListValue, "Mode", translate("Mode"), - translate("Interface Mode is used to prevent unnecessary packet forwarding on switched ethernet interfaces. ".. - "valid Modes are \"mesh\" and \"ether\". Default is \"mesh\".")) -mode:value("mesh") -mode:value("ether") -mode.optional = true -mode.rmempty = true - - -weight = i:taboption("general", Value, "Weight", translate("Weight"), - translate("When multiple links exist between hosts the weight of interface is used to determine the link to use. ".. - "Normally the weight is automatically calculated by olsrd based on the characteristics of the interface, ".. - "but here you can specify a fixed value. Olsrd will choose links with the lowest value.
    ".. - "Note: Interface weight is used only when LinkQualityLevel is set to 0. ".. - "For any other value of LinkQualityLevel, the interface ETX value is used instead.")) -weight.optional = true -weight.datatype = "uinteger" -weight.placeholder = "0" - -lqmult = i:taboption("general", DynamicList, "LinkQualityMult", translate("LinkQuality Multiplicator"), - translate("Multiply routes with the factor given here. Allowed values are between 0.01 and 1.0. ".. - "It is only used when LQ-Level is greater than 0. Examples:
    ".. - "reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    ".. - "reduce LQ to all nodes on this interface by 20%: default 0.8")) -lqmult.optional = true -lqmult.rmempty = true -lqmult.cast = "table" -lqmult.placeholder = "default 1.0" - -function lqmult.validate(self, value) - for _, v in pairs(value) do - if v ~= "" then - local val = util.split(v, " ") - local host = val[1] - local mult = val[2] - if not host or not mult then - return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) seperated by space.") - end - if not (host == "default" or ip.IPv4(host) or ip.IPv6(host)) then - return nil, translate("Can only be a valid IPv4 or IPv6 address or 'default'") - end - if not tonumber(mult) or tonumber(mult) > 1 or tonumber(mult) < 0.01 then - return nil, translate("Invalid Value for LQMult-Value. Must be between 0.01 and 1.0.") - end - if not mult:match("[0-1]%.[0-9]+") then - return nil, translate("Invalid Value for LQMult-Value. You must use a decimal number between 0.01 and 1.0 here.") - end - end - end - return value -end - -ip4b = i:taboption("addrs", Value, "Ip4Broadcast", translate("IPv4 broadcast"), - translate("IPv4 broadcast address for outgoing OLSR packets. One useful example would be 255.255.255.255. ".. - "Default is \"0.0.0.0\", which triggers the usage of the interface broadcast IP.")) -ip4b.optional = true -ip4b.datatype = "ip4addr" -ip4b.placeholder = "0.0.0.0" - -ip6m = i:taboption("addrs", Value, "IPv6Multicast", translate("IPv6 multicast"), - translate("IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal multicast.")) -ip6m.optional = true -ip6m.datatype = "ip6addr" -ip6m.placeholder = "FF02::6D" - -ip4s = i:taboption("addrs", Value, "IPv4Src", translate("IPv4 source"), - translate("IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which triggers usage of the interface IP.")) -ip4s.optional = true -ip4s.datatype = "ip4addr" -ip4s.placeholder = "0.0.0.0" - -ip6s = i:taboption("addrs", Value, "IPv6Src", translate("IPv6 source"), - translate("IPv6 src prefix. OLSRd will choose one of the interface IPs which matches the prefix of this parameter. ".. - "Default is \"0::/0\", which triggers the usage of a not-linklocal interface IP.")) -ip6s.optional = true -ip6s.datatype = "ip6addr" -ip6s.placeholder = "0::/0" - -hi = i:taboption("timing", Value, "HelloInterval", translate("Hello interval")) -hi.optional = true -hi.datatype = "ufloat" -hi.placeholder = "5.0" -hi.write = write_float - -hv = i:taboption("timing", Value, "HelloValidityTime", translate("Hello validity time")) -hv.optional = true -hv.datatype = "ufloat" -hv.placeholder = "40.0" -hv.write = write_float - -ti = i:taboption("timing", Value, "TcInterval", translate("TC interval")) -ti.optional = true -ti.datatype = "ufloat" -ti.placeholder = "2.0" -ti.write = write_float - -tv = i:taboption("timing", Value, "TcValidityTime", translate("TC validity time")) -tv.optional = true -tv.datatype = "ufloat" -tv.placeholder = "256.0" -tv.write = write_float - -mi = i:taboption("timing", Value, "MidInterval", translate("MID interval")) -mi.optional = true -mi.datatype = "ufloat" -mi.placeholder = "18.0" -mi.write = write_float - -mv = i:taboption("timing", Value, "MidValidityTime", translate("MID validity time")) -mv.optional = true -mv.datatype = "ufloat" -mv.placeholder = "324.0" -mv.write = write_float - -ai = i:taboption("timing", Value, "HnaInterval", translate("HNA interval")) -ai.optional = true -ai.datatype = "ufloat" -ai.placeholder = "18.0" -ai.write = write_float - -av = i:taboption("timing", Value, "HnaValidityTime", translate("HNA validity time")) -av.optional = true -av.datatype = "ufloat" -av.placeholder = "108.0" -av.write = write_float - -return m diff --git a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface6.lua b/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface6.lua deleted file mode 100644 index 2f0fa6c38d..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdiface6.lua +++ /dev/null @@ -1,164 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -local ip = require "luci.ip" - -function write_float(self, section, value) - local n = tonumber(value) - if n ~= nil then - return Value.write(self, section, "%.1f" % n) - end -end - -m = Map("olsrd6", translate("OLSR Daemon - Interface"), - translate("The OLSR daemon is an implementation of the Optimized Link State Routing protocol. ".. - "As such it allows mesh routing for any network equipment. ".. - "It runs on any wifi card that supports ad-hoc mode and of course on any ethernet device. ".. - "Visit olsrd.org for help and documentation.")) - -m.redirect = luci.dispatcher.build_url("admin/services/olsrd6") - -if not arg[1] or m.uci:get("olsrd6", arg[1]) ~= "Interface" then - luci.http.redirect(m.redirect) - return -end - -i = m:section(NamedSection, arg[1], "Interface", translate("Interface")) -i.anonymous = true -i.addremove = false - -i:tab("general", translate("General Settings")) -i:tab("addrs", translate("IP Addresses")) -i:tab("timing", translate("Timing and Validity")) - -ign = i:taboption("general", Flag, "ignore", translate("Enable"), - translate("Enable this interface.")) -ign.enabled = "0" -ign.disabled = "1" -ign.rmempty = false -function ign.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" -end - -network = i:taboption("general", Value, "interface", translate("Network"), - translate("The interface OLSRd should serve.")) - -network.template = "cbi/network_netlist" -network.widget = "radio" -network.nocreate = true - -mode = i:taboption("general", ListValue, "Mode", translate("Mode"), - translate("Interface Mode is used to prevent unnecessary packet forwarding on switched ethernet interfaces. ".. - "valid Modes are \"mesh\" and \"ether\". Default is \"mesh\".")) -mode:value("mesh") -mode:value("ether") -mode.optional = true -mode.rmempty = true - - -weight = i:taboption("general", Value, "Weight", translate("Weight"), - translate("When multiple links exist between hosts the weight of interface is used to determine the link to use. ".. - "Normally the weight is automatically calculated by olsrd based on the characteristics of the interface, ".. - "but here you can specify a fixed value. Olsrd will choose links with the lowest value.
    ".. - "Note: Interface weight is used only when LinkQualityLevel is set to 0. ".. - "For any other value of LinkQualityLevel, the interface ETX value is used instead.")) -weight.optional = true -weight.datatype = "uinteger" -weight.placeholder = "0" - -lqmult = i:taboption("general", DynamicList, "LinkQualityMult", translate("LinkQuality Multiplicator"), - translate("Multiply routes with the factor given here. Allowed values are between 0.01 and 1.0. ".. - "It is only used when LQ-Level is greater than 0. Examples:
    ".. - "reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    ".. - "reduce LQ to all nodes on this interface by 20%: default 0.8")) -lqmult.optional = true -lqmult.rmempty = true -lqmult.cast = "table" -lqmult.placeholder = "default 1.0" - -function lqmult.validate(self, value) - for _, v in pairs(value) do - if v ~= "" then - local val = util.split(v, " ") - local host = val[1] - local mult = val[2] - if not host or not mult then - return nil, translate("LQMult requires two values (IP address or 'default' and multiplicator) seperated by space.") - end - if not (host == "default" or ip.IPv6(host)) then - return nil, translate("Can only be a valid IPv6 address or 'default'") - end - if not tonumber(mult) or tonumber(mult) > 1 or tonumber(mult) < 0.01 then - return nil, translate("Invalid Value for LQMult-Value. Must be between 0.01 and 1.0.") - end - if not mult:match("[0-1]%.[0-9]+") then - return nil, translate("Invalid Value for LQMult-Value. You must use a decimal number between 0.01 and 1.0 here.") - end - end - end - return value -end - -ip6m = i:taboption("addrs", Value, "IPv6Multicast", translate("IPv6 multicast"), - translate("IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal multicast.")) -ip6m.optional = true -ip6m.datatype = "ip6addr" -ip6m.placeholder = "FF02::6D" - -ip6s = i:taboption("addrs", Value, "IPv6Src", translate("IPv6 source"), - translate("IPv6 src prefix. OLSRd will choose one of the interface IPs which matches the prefix of this parameter. ".. - "Default is \"0::/0\", which triggers the usage of a not-linklocal interface IP.")) -ip6s.optional = true -ip6s.datatype = "ip6addr" -ip6s.placeholder = "0::/0" - -hi = i:taboption("timing", Value, "HelloInterval", translate("Hello interval")) -hi.optional = true -hi.datatype = "ufloat" -hi.placeholder = "5.0" -hi.write = write_float - -hv = i:taboption("timing", Value, "HelloValidityTime", translate("Hello validity time")) -hv.optional = true -hv.datatype = "ufloat" -hv.placeholder = "40.0" -hv.write = write_float - -ti = i:taboption("timing", Value, "TcInterval", translate("TC interval")) -ti.optional = true -ti.datatype = "ufloat" -ti.placeholder = "2.0" -ti.write = write_float - -tv = i:taboption("timing", Value, "TcValidityTime", translate("TC validity time")) -tv.optional = true -tv.datatype = "ufloat" -tv.placeholder = "256.0" -tv.write = write_float - -mi = i:taboption("timing", Value, "MidInterval", translate("MID interval")) -mi.optional = true -mi.datatype = "ufloat" -mi.placeholder = "18.0" -mi.write = write_float - -mv = i:taboption("timing", Value, "MidValidityTime", translate("MID validity time")) -mv.optional = true -mv.datatype = "ufloat" -mv.placeholder = "324.0" -mv.write = write_float - -ai = i:taboption("timing", Value, "HnaInterval", translate("HNA interval")) -ai.optional = true -ai.datatype = "ufloat" -ai.placeholder = "18.0" -ai.write = write_float - -av = i:taboption("timing", Value, "HnaValidityTime", translate("HNA validity time")) -av.optional = true -av.datatype = "ufloat" -av.placeholder = "108.0" -av.write = write_float - -return m diff --git a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins.lua b/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins.lua deleted file mode 100644 index 43d6a08ad1..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins.lua +++ /dev/null @@ -1,259 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ip = require "luci.ip" -local fs = require "nixio.fs" - -if arg[1] then - mp = Map("olsrd", translate("OLSR - Plugins")) - - p = mp:section(TypedSection, "LoadPlugin", translate("Plugin configuration")) - p:depends("library", arg[1]) - p.anonymous = true - - ign = p:option(Flag, "ignore", translate("Enable")) - ign.enabled = "0" - ign.disabled = "1" - ign.rmempty = false - function ign.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" - end - - lib = p:option(DummyValue, "library", translate("Library")) - lib.default = arg[1] - - local function Range(x,y) - local t = {} - for i = x, y do t[#t+1] = i end - return t - end - - local function Cidr2IpMask(val) - if val then - for i = 1, #val do - local cidr = ip.IPv4(val[i]) or ip.IPv6(val[i]) - if cidr then - val[i] = cidr:network():string() .. " " .. cidr:mask():string() - end - end - return val - end - end - - local function IpMask2Cidr(val) - if val then - for i = 1, #val do - local ip, mask = val[i]:gmatch("([^%s]+)%s+([^%s]+)")() - local cidr - if ip and mask and ip:match(":") then - cidr = ip.IPv6(ip, mask) - elseif ip and mask then - cidr = ip.IPv4(ip, mask) - end - - if cidr then - val[i] = cidr:string() - end - end - return val - end - end - - - local knownPlParams = { - ["olsrd_bmf.so.1.5.3"] = { - { Value, "BmfInterface", "bmf0" }, - { Value, "BmfInterfaceIp", "10.10.10.234/24" }, - { Flag, "DoLocalBroadcast", "no" }, - { Flag, "CapturePacketsOnOlsrInterfaces", "yes" }, - { ListValue, "BmfMechanism", { "UnicastPromiscuous", "Broadcast" } }, - { Value, "BroadcastRetransmitCount", "2" }, - { Value, "FanOutLimit", "4" }, - { DynamicList, "NonOlsrIf", "br-lan" } - }, - - ["olsrd_dyn_gw.so.0.4"] = { - { Value, "Interval", "40" }, - { DynamicList, "Ping", "141.1.1.1" }, - { DynamicList, "HNA", "192.168.80.0/24", IpMask2Cidr, Cidr2IpMask } - }, - - ["olsrd_httpinfo.so.0.1"] = { - { Value, "port", "80" }, - { DynamicList, "Host", "163.24.87.3" }, - { DynamicList, "Net", "0.0.0.0/0", Cidr2IpMask } - }, - - ["olsrd_nameservice.so.0.3"] = { - { DynamicList, "name", "my-name.mesh" }, - { DynamicList, "hosts", "1.2.3.4 name-for-other-interface.mesh" }, - { Value, "suffix", ".olsr" }, - { Value, "hosts_file", "/path/to/hosts_file" }, - { Value, "add_hosts", "/path/to/file" }, - { Value, "dns_server", "141.1.1.1" }, - { Value, "resolv_file", "/path/to/resolv.conf" }, - { Value, "interval", "120" }, - { Value, "timeout", "240" }, - { Value, "lat", "12.123" }, - { Value, "lon", "12.123" }, - { Value, "latlon_file", "/var/run/latlon.js" }, - { Value, "latlon_infile", "/var/run/gps.txt" }, - { Value, "sighup_pid_file", "/var/run/dnsmasq.pid" }, - { Value, "name_change_script", "/usr/local/bin/announce_new_hosts.sh" }, - { DynamicList, "service", "http://me.olsr:80|tcp|my little homepage" }, - { Value, "services_file", "/var/run/services_olsr" }, - { Value, "services_change_script", "/usr/local/bin/announce_new_services.sh" }, - { DynamicList, "mac", "xx:xx:xx:xx:xx:xx[,0-255]" }, - { Value, "macs_file", "/path/to/macs_file" }, - { Value, "macs_change_script", "/path/to/script" } - }, - - ["olsrd_quagga.so.0.2.2"] = { - { StaticList, "redistribute", { - "system", "kernel", "connect", "static", "rip", "ripng", "ospf", - "ospf6", "isis", "bgp", "hsls" - } }, - { ListValue, "ExportRoutes", { "only", "both" } }, - { Flag, "LocalPref", "true" }, - { Value, "Distance", Range(0,255) } - }, - - ["olsrd_secure.so.0.5"] = { - { Value, "Keyfile", "/etc/private-olsr.key" } - }, - - ["olsrd_txtinfo.so.0.1"] = { - { Value, "accept", "127.0.0.1" } - }, - - ["olsrd_jsoninfo.so.0.0"] = { - { Value, "accept", "127.0.0.1" }, - { Value, "port", "9090" }, - { Value, "UUIDFile", "/etc/olsrd/olsrd.uuid" }, - - }, - - ["olsrd_watchdog.so.0.1"] = { - { Value, "file", "/var/run/olsrd.watchdog" }, - { Value, "interval", "30" } - }, - - ["olsrd_mdns.so.1.0.0"] = { - { DynamicList, "NonOlsrIf", "lan" } - }, - - ["olsrd_p2pd.so.0.1.0"] = { - { DynamicList, "NonOlsrIf", "lan" }, - { Value, "P2pdTtl", "10" } - }, - - ["olsrd_arprefresh.so.0.1"] = {}, - ["olsrd_dot_draw.so.0.3"] = {}, - ["olsrd_dyn_gw_plain.so.0.4"] = {}, - ["olsrd_pgraph.so.1.1"] = {}, - ["olsrd_tas.so.0.1"] = {} - } - - - -- build plugin options with dependencies - if knownPlParams[arg[1]] then - for _, option in ipairs(knownPlParams[arg[1]]) do - local otype, name, default, uci2cbi, cbi2uci = unpack(option) - local values - - if type(default) == "table" then - values = default - default = default[1] - end - - if otype == Flag then - local bool = p:option( Flag, name, name ) - if default == "yes" or default == "no" then - bool.enabled = "yes" - bool.disabled = "no" - elseif default == "on" or default == "off" then - bool.enabled = "on" - bool.disabled = "off" - elseif default == "1" or default == "0" then - bool.enabled = "1" - bool.disabled = "0" - else - bool.enabled = "true" - bool.disabled = "false" - end - bool.optional = true - bool.default = default - bool:depends({ library = plugin }) - else - local field = p:option( otype, name, name ) - if values then - for _, value in ipairs(values) do - field:value( value ) - end - end - if type(uci2cbi) == "function" then - function field.cfgvalue(self, section) - return uci2cbi(otype.cfgvalue(self, section)) - end - end - if type(cbi2uci) == "function" then - function field.formvalue(self, section) - return cbi2uci(otype.formvalue(self, section)) - end - end - field.optional = true - field.default = default - --field:depends({ library = arg[1] }) - end - end - end - - return mp - -else - - mpi = Map("olsrd", translate("OLSR - Plugins")) - - local plugins = {} - mpi.uci:foreach("olsrd", "LoadPlugin", - function(section) - if section.library and not plugins[section.library] then - plugins[section.library] = true - end - end - ) - - -- create a loadplugin section for each found plugin - for v in fs.dir("/usr/lib") do - if v:sub(1, 6) == "olsrd_" then - if not plugins[v] then - mpi.uci:section( - "olsrd", "LoadPlugin", nil, - { library = v, ignore = 1 } - ) - end - end - end - - t = mpi:section( TypedSection, "LoadPlugin", translate("Plugins") ) - t.anonymous = true - t.template = "cbi/tblsection" - t.override_scheme = true - function t.extedit(self, section) - local lib = self.map:get(section, "library") or "" - return luci.dispatcher.build_url("admin", "services", "olsrd", "plugins") .. "/" .. lib - end - - ign = t:option( Flag, "ignore", translate("Enabled") ) - ign.enabled = "0" - ign.disabled = "1" - ign.rmempty = false - function ign.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" - end - - t:option( DummyValue, "library", translate("Library") ) - - return mpi -end diff --git a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins6.lua b/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins6.lua deleted file mode 100644 index d1c68be24b..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/model/cbi/olsr/olsrdplugins6.lua +++ /dev/null @@ -1,259 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ip = require "luci.ip" -local fs = require "nixio.fs" - -if arg[1] then - mp = Map("olsrd6", translate("OLSR - Plugins")) - - p = mp:section(TypedSection, "LoadPlugin", translate("Plugin configuration")) - p:depends("library", arg[1]) - p.anonymous = true - - ign = p:option(Flag, "ignore", translate("Enable")) - ign.enabled = "0" - ign.disabled = "1" - ign.rmempty = false - function ign.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" - end - - lib = p:option(DummyValue, "library", translate("Library")) - lib.default = arg[1] - - local function Range(x,y) - local t = {} - for i = x, y do t[#t+1] = i end - return t - end - - local function Cidr2IpMask(val) - if val then - for i = 1, #val do - local cidr = ip.IPv4(val[i]) or ip.IPv6(val[i]) - if cidr then - val[i] = cidr:network():string() .. " " .. cidr:mask():string() - end - end - return val - end - end - - local function IpMask2Cidr(val) - if val then - for i = 1, #val do - local ip, mask = val[i]:gmatch("([^%s]+)%s+([^%s]+)")() - local cidr - if ip and mask and ip:match(":") then - cidr = ip.IPv6(ip, mask) - elseif ip and mask then - cidr = ip.IPv4(ip, mask) - end - - if cidr then - val[i] = cidr:string() - end - end - return val - end - end - - - local knownPlParams = { - ["olsrd_bmf.so.1.5.3"] = { - { Value, "BmfInterface", "bmf0" }, - { Value, "BmfInterfaceIp", "10.10.10.234/24" }, - { Flag, "DoLocalBroadcast", "no" }, - { Flag, "CapturePacketsOnOlsrInterfaces", "yes" }, - { ListValue, "BmfMechanism", { "UnicastPromiscuous", "Broadcast" } }, - { Value, "BroadcastRetransmitCount", "2" }, - { Value, "FanOutLimit", "4" }, - { DynamicList, "NonOlsrIf", "br-lan" } - }, - - ["olsrd_dyn_gw.so.0.4"] = { - { Value, "Interval", "40" }, - { DynamicList, "Ping", "141.1.1.1" }, - { DynamicList, "HNA", "192.168.80.0/24", IpMask2Cidr, Cidr2IpMask } - }, - - ["olsrd_httpinfo.so.0.1"] = { - { Value, "port", "80" }, - { DynamicList, "Host", "163.24.87.3" }, - { DynamicList, "Net", "0.0.0.0/0", Cidr2IpMask } - }, - - ["olsrd_nameservice.so.0.3"] = { - { DynamicList, "name", "my-name.mesh" }, - { DynamicList, "hosts", "1.2.3.4 name-for-other-interface.mesh" }, - { Value, "suffix", ".olsr" }, - { Value, "hosts_file", "/path/to/hosts_file" }, - { Value, "add_hosts", "/path/to/file" }, - { Value, "dns_server", "141.1.1.1" }, - { Value, "resolv_file", "/path/to/resolv.conf" }, - { Value, "interval", "120" }, - { Value, "timeout", "240" }, - { Value, "lat", "12.123" }, - { Value, "lon", "12.123" }, - { Value, "latlon_file", "/var/run/latlon.js.ipv6" }, - { Value, "latlon_infile", "/var/run/gps.txt" }, - { Value, "sighup_pid_file", "/var/run/dnsmasq.pid" }, - { Value, "name_change_script", "/usr/local/bin/announce_new_hosts.sh" }, - { DynamicList, "service", "http://me.olsr:80|tcp|my little homepage" }, - { Value, "services_file", "/var/run/services_olsr" }, - { Value, "services_change_script", "/usr/local/bin/announce_new_services.sh" }, - { DynamicList, "mac", "xx:xx:xx:xx:xx:xx[,0-255]" }, - { Value, "macs_file", "/path/to/macs_file" }, - { Value, "macs_change_script", "/path/to/script" } - }, - - ["olsrd_quagga.so.0.2.2"] = { - { StaticList, "redistribute", { - "system", "kernel", "connect", "static", "rip", "ripng", "ospf", - "ospf6", "isis", "bgp", "hsls" - } }, - { ListValue, "ExportRoutes", { "only", "both" } }, - { Flag, "LocalPref", "true" }, - { Value, "Distance", Range(0,255) } - }, - - ["olsrd_secure.so.0.5"] = { - { Value, "Keyfile", "/etc/private-olsr.key" } - }, - - ["olsrd_txtinfo.so.0.1"] = { - { Value, "accept", "::1/128" } - }, - - ["olsrd_jsoninfo.so.0.0"] = { - { Value, "accept", "::1/128" }, - { Value, "port", "9090" }, - { Value, "UUIDFile", "/etc/olsrd/olsrd.uuid.ipv6" }, - - }, - - ["olsrd_watchdog.so.0.1"] = { - { Value, "file", "/var/run/olsrd.watchdog.ipv6" }, - { Value, "interval", "30" } - }, - - ["olsrd_mdns.so.1.0.0"] = { - { DynamicList, "NonOlsrIf", "lan" } - }, - - ["olsrd_p2pd.so.0.1.0"] = { - { DynamicList, "NonOlsrIf", "lan" }, - { Value, "P2pdTtl", "10" } - }, - - ["olsrd_arprefresh.so.0.1"] = {}, - ["olsrd_dot_draw.so.0.3"] = {}, - ["olsrd_dyn_gw_plain.so.0.4"] = {}, - ["olsrd_pgraph.so.1.1"] = {}, - ["olsrd_tas.so.0.1"] = {} - } - - - -- build plugin options with dependencies - if knownPlParams[arg[1]] then - for _, option in ipairs(knownPlParams[arg[1]]) do - local otype, name, default, uci2cbi, cbi2uci = unpack(option) - local values - - if type(default) == "table" then - values = default - default = default[1] - end - - if otype == Flag then - local bool = p:option( Flag, name, name ) - if default == "yes" or default == "no" then - bool.enabled = "yes" - bool.disabled = "no" - elseif default == "on" or default == "off" then - bool.enabled = "on" - bool.disabled = "off" - elseif default == "1" or default == "0" then - bool.enabled = "1" - bool.disabled = "0" - else - bool.enabled = "true" - bool.disabled = "false" - end - bool.optional = true - bool.default = default - bool:depends({ library = plugin }) - else - local field = p:option( otype, name, name ) - if values then - for _, value in ipairs(values) do - field:value( value ) - end - end - if type(uci2cbi) == "function" then - function field.cfgvalue(self, section) - return uci2cbi(otype.cfgvalue(self, section)) - end - end - if type(cbi2uci) == "function" then - function field.formvalue(self, section) - return cbi2uci(otype.formvalue(self, section)) - end - end - field.optional = true - field.default = default - --field:depends({ library = arg[1] }) - end - end - end - - return mp - -else - - mpi = Map("olsrd6", translate("OLSR - Plugins")) - - local plugins = {} - mpi.uci:foreach("olsrd6", "LoadPlugin", - function(section) - if section.library and not plugins[section.library] then - plugins[section.library] = true - end - end - ) - - -- create a loadplugin section for each found plugin - for v in fs.dir("/usr/lib") do - if v:sub(1, 6) == "olsrd_" then - if not plugins[v] then - mpi.uci:section( - "olsrd6", "LoadPlugin", nil, - { library = v, ignore = 1 } - ) - end - end - end - - t = mpi:section( TypedSection, "LoadPlugin", translate("Plugins") ) - t.anonymous = true - t.template = "cbi/tblsection" - t.override_scheme = true - function t.extedit(self, section) - local lib = self.map:get(section, "library") or "" - return luci.dispatcher.build_url("admin", "services", "olsrd6", "plugins") .. "/" .. lib - end - - ign = t:option( Flag, "ignore", translate("Enabled") ) - ign.enabled = "0" - ign.disabled = "1" - ign.rmempty = false - function ign.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" - end - - t:option( DummyValue, "library", translate("Library") ) - - return mpi -end diff --git a/package/luci/applications/luci-app-olsr/luasrc/tools/olsr.lua b/package/luci/applications/luci-app-olsr/luasrc/tools/olsr.lua deleted file mode 100644 index 781b2658d2..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/tools/olsr.lua +++ /dev/null @@ -1,33 +0,0 @@ --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -module("luci.tools.olsr", package.seeall) - -function etx_color(etx) - local color = "#bb3333" - if etx == 0 then - color = "#bb3333" - elseif etx < 2 then - color = "#00cc00" - elseif etx < 4 then - color = "#ffcb05" - elseif etx < 10 then - color = "#ff6600" - end - return color -end - -function snr_color(snr) - local color = "#bb3333" - if snr == 0 then - color = "#bb3333" - elseif snr > 30 then - color = "#00cc00" - elseif snr > 20 then - color = "#ffcb05" - elseif snr > 5 then - color = "#ff6600" - end - return color -end - diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/common_js.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/common_js.htm deleted file mode 100644 index 1ee763e119..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/common_js.htm +++ /dev/null @@ -1,35 +0,0 @@ -<% if has_v4 and has_v6 then %> - -<%end %> diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/error_olsr.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/error_olsr.htm deleted file mode 100644 index eb41219c7e..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/error_olsr.htm +++ /dev/null @@ -1,11 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:OLSR Daemon%>

    -

    <%:Unable to connect to the OLSR daemon!%>

    -

    <%:Make sure that OLSRd is running, the "jsoninfo" plugin is loaded, configured on port 9090 and accepts connections from "127.0.0.1".%>

    -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm deleted file mode 100644 index 5ea7b74e4d..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/hna.htm +++ /dev/null @@ -1,122 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% -local i = 1 - -if luci.http.formvalue("status") == "1" then - local rv = {} - for k, hna in ipairs(hna) do - rv[#rv+1] = { - proto = hna["proto"], - destination = hna["destination"], - genmask = hna["genmask"], - gateway = hna["gateway"], - hostname = hna["hostname"], - validityTime = hna["validityTime"] - } - end - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return -end -%> - -<%+header%> - - - - -

    <%:Active host net announcements%>

    - -
    -
    - - <%:Overview of currently active OLSR host net announcements%> - - - - - - - - - - - <% for k, route in ipairs(hna) do %> - - - - - <% if hna[k].validityTime then - validity = hna[k].validityTime .. 's' - else - validity = '-' - end %> - - - - - <% i = ((i % 2) + 1) - end %> - -
    <%:Announced network%><%:OLSR gateway%><%:Validity Time%>
    <%=hna[k].destination%>/<%=hna[k].genmask%> - <% if hna[k].proto == '6' then %> - <%=hna[k].gateway%> - <% else %> - <%=hna[k].gateway%> - <% end %> - <% if hna[k].hostname then %> - / <%=hna[k].hostname%> - <% end %> - <%=validity%>
    -
    - -<%+status-olsr/common_js%> -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm deleted file mode 100644 index 81d0a3dd31..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/interfaces.htm +++ /dev/null @@ -1,50 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% -local i = 1 -%> - -<%+header%> - -

    <%:Interfaces%>

    - -
    - -
    - <%:Overview of interfaces where OLSR is running%> - - - - - - - - - - - - - <% for k, iface in ipairs(iface) do %> - - - - - - - - - - - <% i = ((i % 2) + 1) - end %> -
    <%:Interface%><%:State%><%:MTU%><%:WLAN%><%:Source address%><%:Netmask%><%:Broadcast address%>
    <%=iface.name%><%=iface.state%><%=iface.olsrMTU%><%=iface.wireless and luci.i18n.translate('yes') or luci.i18n.translate('no')%><%=iface.ipv4Address or iface.ipv6Address%><%=iface.netmask%><%=iface.broadcast or iface.multicast%>
    -
    -<%+status-olsr/common_js%> -<%+footer%> - - diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/legend.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/legend.htm deleted file mode 100644 index 2f598489dc..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/legend.htm +++ /dev/null @@ -1,24 +0,0 @@ -

    <%:Legend%>:

    -
      -
    • LQ: <%:Success rate of packages received from the neighbour%>
    • -
    • NLQ: <%:Success rate of packages sent to the neighbour%>
    • -
    • ETX: <%:Expected retransmission count%>
    • -
    • -
        -
      • <%:Green%>:<%:Very good (ETX < 2)%>
      • -
      • <%:Yellow%>:<%:Good (2 < ETX < 4)%>
      • -
      • <%:Orange%>:<%:Still usable (4 < ETX < 10)%>
      • -
      • <%:Red%>:<%:Bad (ETX > 10)%>
      • -
      -
    • -
    • SNR: <%:Signal Noise Ratio in dB%>
    • -
    • -
        -
      • <%:Green%>:<%:Very good (SNR > 30)%>
      • -
      • <%:Yellow%>:<%:Good (30 > SNR > 20)%>
      • -
      • <%:Orange%>:<%:Still usable (20 > SNR > 5)%>
      • -
      • <%:Red%>:<%:Bad (SNR < 5)%>
      • -
      -
    • -
    - diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm deleted file mode 100644 index f658288fc1..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/mid.htm +++ /dev/null @@ -1,50 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% -local i = 1 -%> - -<%+header%> -

    <%:Active MID announcements%>

    - -
    -
    - <%:Overview of known multiple interface announcements%> - - - - - - - <% for k, mid in ipairs(mids) do - local aliases = '' - for k,v in ipairs(mid.aliases) do - if aliases == '' then - sep = '' - else - sep = ', ' - end - aliases = v.ipAddress .. sep .. aliases - end - local host = mid.ipAddress - if mid.proto == '6' then - host = '[' .. mid.ipAddress .. ']' - end - %> - - - - - - - <% i = ((i % 2) + 1) - end %> -
    <%:OLSR node%><%:Secondary OLSR interfaces%>
    <%=mid.ipAddress%><%=aliases%>
    -
    -<%+status-olsr/common_js%> -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm deleted file mode 100644 index c077c20486..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/neighbors.htm +++ /dev/null @@ -1,174 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% -local olsrtools = require "luci.tools.olsr" -local i = 1 - -if luci.http.formvalue("status") == "1" then - local rv = {} - for k, link in ipairs(links) do - link.linkCost = tonumber(link.linkCost) or 0 - if link.linkCost == 4194304 then - link.linkCost = 0 - end - local color = olsrtools.etx_color(link.linkCost) - local snr_color = olsrtools.snr_color(link.snr) - defaultgw_color = "" - if link.defaultgw == 1 then - defaultgw_color = "#ffff99" - end - - rv[#rv+1] = { - rip = link.remoteIP, - hn = link.hostname, - lip = link.localIP, - ifn = link.interface, - lq = string.format("%.3f", link.linkQuality), - nlq = string.format("%.3f",link.neighborLinkQuality), - cost = string.format("%.3f", link.linkCost), - snr = link.snr, - signal = link.signal, - noise = link.noise, - color = color, - snr_color = snr_color, - dfgcolor = defaultgw_color, - proto = link.proto - } - end - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return -end -%> - -<%+header%> - - - - - -

    <%:OLSR connections%>

    - -
    - -
    - <%:Overview of currently established OLSR connections%> - - - - - - - - - - - - - - - - - <% local i = 1 - for k, link in ipairs(links) do - link.linkCost = tonumber(link.linkCost) or 0 - if link.linkCost == 4194304 then - link.linkCost = 0 - end - - color = olsrtools.etx_color(link.linkCost) - snr_color = olsrtools.snr_color(link.snr) - - if link.snr == 0 then - link.snr = '?' - end - - defaultgw_color = "" - if link.defaultgw == 1 then - defaultgw_color = "#ffff99" - end - %> - - - <% if link.proto == "6" then %> - - <% else %> - - <% end %> - - - - - - - - - <% - i = ((i % 2) + 1) - end %> - -
    <%:Neighbour IP%><%:Hostname%><%:Interface%><%:Local interface IP%>LQNLQETXSNR
    <%=link.remoteIP%><%=link.remoteIP%><%=link.hostname%><%=link.interface%><%=link.localIP%><%=string.format("%.3f", link.linkQuality)%><%=string.format("%.3f", link.neighborLinkQuality)%><%=string.format("%.3f", link.linkCost)%><%=link.snr%>
    -
    - -<%+status-olsr/legend%> -
    -<%+status-olsr/common_js%> -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm deleted file mode 100644 index 61e17b3b2d..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm +++ /dev/null @@ -1,221 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% - -has_ipv4_conf = luci.model.uci.cursor():get_first("olsrd", "olsrd", "IpVersion") -has_ipv6_conf = luci.model.uci.cursor():get_first("olsrd6", "olsrd", "IpVersion") - -function write_conf(conf, file) - local fs = require "nixio.fs" - if fs.access(conf) then - luci.http.header("Content-Disposition", "attachment; filename="..file) - luci.http.prepare_content("text/plain") - luci.http.write(fs.readfile(conf)) - end -end - -conf = luci.http.formvalue() - -if conf.openwrt_v4 then - write_conf("/etc/config/olsrd", "olsrd") - return false -end - -if conf.openwrt_v6 then - write_conf("/etc/config/olsrd6", "olsrd6") - return false -end - -if conf.conf_v4 then - write_conf("/var/etc/olsrd.conf", "olsrd.conf") - return false -end - -if conf.conf_v6 then - write_conf("/var/etc/olsrd6.conf", "olsrd6.conf") - return false -end - -%> - -<%+header%> - - - - - -
    - -

    OLSR <%:Overview%>

    - -
    - <%:Network%> - - - - - - - - - - -
    <%:Interfaces%> - - - - -
    <%:Neighbors%> - - - - -
    <%:Nodes%> - - - - -
    <%:HNA%> - - - - -
    <%:Links total%> - - - - -
    <%:Links per node (average)%> - - -
    -
    - - -
    - OLSR <%:Configuration%> - - - -
    <%:Version%> - - -
    <%:Download Config%> - <% if has_ipv4_conf then %> - OpenWrt (IPv4), - <% end %> - <% if has_ipv6_conf then %> - OpenWrt (IPv6), - <% end %> - <% if has_ipv4_conf then %> - OLSRD (IPv4), - <% end %> - <% if has_ipv6_conf then %> - OLSRD (IPv6) - <% end %> -
    -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm deleted file mode 100644 index 8e46daa022..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/routes.htm +++ /dev/null @@ -1,142 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% - -local olsrtools = require "luci.tools.olsr" -local i = 1 - -if luci.http.formvalue("status") == "1" then - local rv = {} - for k, route in ipairs(routes) do - local ETX = string.format("%.3f", tonumber(route.rtpMetricCost)/1024 or 0) - rv[#rv+1] = { - hostname = route.hostname, - dest = route.destination, - genmask = route.genmask, - gw = route.gateway, - interface = route.networkInterface, - metric = route.metric, - etx = ETX, - color = olsrtools.etx_color(tonumber(ETX)) - } - end - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return -end - -%> - -<%+header%> - - - - - - -

    <%:Known OLSR routes%>

    - -
    - -
    -<%:Overview of currently known routes to other OLSR nodes%> - - - - - - - - - - - - - - - <% for k, route in ipairs(routes) do - ETX = tonumber(route.rtpMetricCost)/1024 or '0' - color = olsrtools.etx_color(ETX) - %> - - - - - - - - - <% - i = ((i % 2) + 1) - end %> - -
    <%:Announced network%><%:OLSR gateway%><%:Interface%><%:Metric%>ETX
    <%=route.destination%>/<%=route.genmask%> - <% if route.proto == '6' then %> - <%=route.gateway%> - <% else %> - <%=route.gateway%> - <% end %> - <% if route.hostname then %> - / <%=route.hostname%> - <% end %> - <%=route.networkInterface%><%=route.metric%><%=string.format("%.3f", ETX)%>
    - -<%+status-olsr/legend%> -
    -<%+status-olsr/common_js%> -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm deleted file mode 100644 index 6aa7a75461..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/smartgw.htm +++ /dev/null @@ -1,152 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% -local i = 1 -require("luci.model.uci") -local uci = luci.model.uci.cursor_state() - -uci:foreach("olsrd", "olsrd", function(s) - if s.SmartGateway and s.SmartGateway == "yes" then has_smartgw = true end -end) - - -if luci.http.formvalue("status") == "1" then - local rv = {} - for k, gw in ipairs(gws) do - gw.tcPathCost = tonumber(gw.tcPathCost)/1024 or 0 - if gw.tcPathCost == 4096 then - gw.tcPathCost = 0 - end - - rv[#rv+1] = { - proto = gw.proto, - ipAddress = gw.ipAddress, - status = gw.ipv4Status or gw.ipv6Status, - tcPathCost = string.format("%.3f", gw.tcPathCost), - hopCount = gw.hopCount, - uplinkSpeed = gw.uplinkSpeed, - downlinkSpeed = gw.downlinkSpeed, - v4 = gw.ipv4 and luci.i18n.translate('yes') or luci.i18n.translate('no'), - v6 = gw.ipv6 and luci.i18n.translate('yes') or luci.i18n.translate('no'), - externalPrefix = gw.externalPrefix - } - end - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return -end -%> - -<%+header%> - - - - - -<%+header%> - -

    <%:SmartGW announcements%>

    - -
    - -<% if has_smartgw then %> - -
    - <%:Overview of smart gateways in this network%> - - - - - - - - - - - - - - - - - - <% for k, gw in ipairs(gws) do - - gw.tcPathCost = tonumber(gw.tcPathCost)/1024 or 0 - if gw.tcPathCost == 4096 then - gw.tcPathCost = 0 - end - %> - - - <% if gw.proto == '6' then %> - - <% else %> - - <% end %> - - - - - - - - - - - - <% i = ((i % 2) + 1) - end %> - -
    <%:Gateway%><%:Status%><%:ETX%><%:Hops%><%:Uplink%><%:Downlink%><%:IPv4%><%:IPv6%><%:Prefix%>
    <%=gw.ipAddress%><%=gw.ipAddress%><%=gw.ipv4Status or gw.ipv6Status or '-' %><%=string.format("%.3f", gw.tcPathCost)%><%=gw.hopCount%><%=gw.uplinkSpeed%><%=gw.downlinkSpeed%><%=gw.ipv4 and luci.i18n.translate('yes') or luci.i18n.translate('no')%><%=gw.ipv6 and luci.i18n.translate('yes') or luci.i18n.translate('no')%><%=gw.externalPrefix%>
    -
    - -<% else %> - - <%:SmartGateway is not configured on this system.%> - -<% end %> - -<%+status-olsr/common_js%> -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm b/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm deleted file mode 100644 index b3abeaecbe..0000000000 --- a/package/luci/applications/luci-app-olsr/luasrc/view/status-olsr/topology.htm +++ /dev/null @@ -1,62 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% -local i = 1 -local olsrtools = require "luci.tools.olsr" -%> - -<%+header%> -

    <%:Active OLSR nodes%>

    - -
    - -
    - <%:Overview of currently known OLSR nodes%> - - - - - - - - - - <% for k, route in ipairs(routes) do - local cost = string.format("%.3f", tonumber(route.tcEdgeCost/1024) or 0) - local color = olsrtools.etx_color(tonumber(cost)) - local lq = string.format("%.3f", tonumber(route.linkQuality) or 0) - local nlq = string.format("%.3f", tonumber(route.neighborLinkQuality) or 0) - %> - - - - <% if route.proto == "6" then %> - - - - - <% else %> - - - - - <%end%> - - - - - - - <% i = ((i % 2) + 1) - end %> -
    <%:OLSR node%><%:Last hop%><%:LQ%><%:NLQ%><%:ETX%>
    <%=route.destinationIP%><%=route.lastHopIP%><%=route.destinationIP%><%=route.lastHopIP%><%=lq%><%=nlq%><%=cost%>
    -<%+status-olsr/legend%> -
    - -<%+status-olsr/common_js%> -<%+footer%> diff --git a/package/luci/applications/luci-app-olsr/po/ca/olsr.po b/package/luci/applications/luci-app-olsr/po/ca/olsr.po deleted file mode 100644 index db4bce1b19..0000000000 --- a/package/luci/applications/luci-app-olsr/po/ca/olsr.po +++ /dev/null @@ -1,707 +0,0 @@ -# olsr.pot -# generated from ./applications/luci-olsr/luasrc/i18n/olsr.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-06-06 11:22+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Active MID announcements" -msgstr "Anuncis MID actius" - -msgid "Active OLSR nodes" -msgstr "Nodes OLSR actius" - -msgid "Active host net announcements" -msgstr "Anuncis de xarxa de màquines actives" - -msgid "Advanced Settings" -msgstr "Ajusts avançats" - -msgid "Allow gateways with NAT" -msgstr "Permet els passarel·les amb NAT " - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "Xarxa anunciada" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "Adreça de difusió" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "Configuració" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Habilita" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "Habilita aquesta interfície." - -msgid "Enabled" -msgstr "Habilitat" - -msgid "Expected retransmission count" -msgstr "Compte de retransmissió previst" - -msgid "FIB metric" -msgstr "Mètrica FIB" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "Passarel·la" - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "General settings" -msgstr "Ajusts generals" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "Anuncis HNA" - -msgid "HNA interval" -msgstr "Interval HNA" - -msgid "HNA validity time" -msgstr "Temps de validesa HNA" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "Anuncis HNA" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "Interval Hello" - -msgid "Hello validity time" -msgstr "Temps de validesa Hello" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "Adreces IP" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "Difusió IPv4" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "Difusió selectiva IPv6" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "Interfície" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "Interfícies" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "Protocol d'Internet" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "Rutes OLSR conegudes" - -msgid "LQ" -msgstr "LQ" - -msgid "LQ aging" -msgstr "Envelliment LQ" - -msgid "LQ algorithm" -msgstr "Algoritme LQ" - -msgid "LQ fisheye" -msgstr "LQ fisheye" - -msgid "LQ level" -msgstr "Nivell LQ" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "Últim salt" - -msgid "Legend" -msgstr "Llegenda" - -msgid "Library" -msgstr "Biblioteca" - -msgid "Link Quality Settings" -msgstr "Ajusts de qualitat d'enllaç" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "Multiplicador de qualitat d'enllaç" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "IP d'interfície local" - -msgid "MID" -msgstr "MID" - -msgid "MID interval" -msgstr "Interval MID" - -msgid "MID validity time" -msgstr "Temps de validesa MID" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "IP principal" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "Mètric" - -msgid "Mode" -msgstr "Mode" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "Llindar NAT" - -msgid "NLQ" -msgstr "NLQ" - -msgid "Neighbors" -msgstr "Veïns" - -msgid "Neighbour IP" -msgstr "IP del veí" - -msgid "Neighbours" -msgstr "Veïns" - -msgid "Netmask" -msgstr "Màscara de xarxa" - -msgid "Network" -msgstr "Xarxa" - -msgid "Network address" -msgstr "Adreça de xarxa" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "OLSR - Opcions de mostra" - -msgid "OLSR - HNA-Announcements" -msgstr "Anuncis OLSR - HNA" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "Anuncis OLSR - HNA" - -msgid "OLSR - Plugins" -msgstr "OLSR - Connectors" - -msgid "OLSR Daemon" -msgstr "Dimoni OLSR" - -msgid "OLSR Daemon - Interface" -msgstr "Dimoni OLSR - Interfície" - -msgid "OLSR connections" -msgstr "Connexions OLSR" - -msgid "OLSR gateway" -msgstr "Passarel·la OLSR" - -msgid "OLSR node" -msgstr "Node OLSR" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "Visió de conjunt" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "Visió de conjunt d'anuncis de xarxa de màquines OLSR actives" - -msgid "Overview of currently established OLSR connections" -msgstr "Visió de conjunt de les connexions OLSR establertes actualment" - -msgid "Overview of currently known OLSR nodes" -msgstr "Visió de conjunt dels nodes OLSR coneguts actualment" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "Visió de conjunt de rutes conegudes actualment a altres nodes OLSR" - -msgid "Overview of interfaces where OLSR is running" -msgstr "Visió de conjunt de interfícies on està funcionant OLSR" - -msgid "Overview of known multiple interface announcements" -msgstr "Visió de conjunt d'anuncis d'interfície múltiple coneguts" - -msgid "Overview of smart gateways in this network" -msgstr "Visió de conjunt de les passarel·les intel·ligents en aquesta xarxa" - -msgid "Plugin configuration" -msgstr "Configuració de connector" - -msgid "Plugins" -msgstr "Connectors" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "Taxa de sondeig" - -msgid "Port" -msgstr "Port" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "Interfícies OSLR secundàries" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "SmartGW" - -msgid "SmartGW announcements" -msgstr "Anuncis de SmartGW" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "Estat" - -msgid "Status" -msgstr "Estat" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "TC" - -msgid "TC interval" -msgstr "Interval TC" - -msgid "TC validity time" -msgstr "Temps de validesa TC" - -msgid "TOS value" -msgstr "Valor TOS" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "Sincronització i validitat" - -msgid "Topology" -msgstr "Topologia" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "No s'ha pogut connectar al dimoni OLSR" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "Utilitza histèresi" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "Versió" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "Pes" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "Voluntat" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "Dispositiu" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "Assegura't que l'OLSRd està corrent, que el connector \"txtinfo\" està " -#~ "carregat, configurat al port 2006, i que accepta connexions de " -#~ "\"127.0.0.1\"." diff --git a/package/luci/applications/luci-app-olsr/po/cs/olsr.po b/package/luci/applications/luci-app-olsr/po/cs/olsr.po deleted file mode 100644 index 31669072d8..0000000000 --- a/package/luci/applications/luci-app-olsr/po/cs/olsr.po +++ /dev/null @@ -1,693 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-21 14:56+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "Pokročilé nastavení" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "Špatné (ETX > 10)" - -msgid "Bad (SNR < 5)" -msgstr "Špatné (SNR < 5)" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "Konfigurace" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Povolit" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "Povolit toto rozhraní." - -msgid "Enabled" -msgstr "Povoleno" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "Gateway" - -msgid "General Settings" -msgstr "Obecné nastavení" - -msgid "General settings" -msgstr "Obecné nastavení" - -msgid "Good (2 < ETX < 4)" -msgstr "Dobré (2 < ETX < 4)" - -msgid "Good (30 > SNR > 20)" -msgstr "Dobré (30 > SNR > 20)" - -msgid "Green" -msgstr "Zelený" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "HNA interval" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "Skrýt IPv4" - -msgid "Hide IPv6" -msgstr "Skrýt IPv6" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "Hostname" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "IP adresy" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "IPv4 broadcast" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "IPv6 multicast" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "Rozhraní" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "Rozhraní" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "Internet protokol" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "LQ" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "LQ algoritmus" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "Poslední skok (hop)" - -msgid "Legend" -msgstr "Legenda" - -msgid "Library" -msgstr "Knihovna" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "IP lokálního rozhraní" - -msgid "MID" -msgstr "MID" - -msgid "MID interval" -msgstr "MID interval" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "Hlavní IP" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "NLQ" - -msgid "Neighbors" -msgstr "Sousedé" - -msgid "Neighbour IP" -msgstr "IP souseda" - -msgid "Neighbours" -msgstr "Sousedé" - -msgid "Netmask" -msgstr "Maska sítě" - -msgid "Network" -msgstr "Síť" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "OLSR - pluginy" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "Oranžový" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "Konfigurace pluginu" - -msgid "Plugins" -msgstr "Pluginy" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Red" -msgstr "Červený" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "Zobrazit IPv4" - -msgid "Show IPv6" -msgstr "Zobrazit IPv6" - -msgid "Signal Noise Ratio in dB" -msgstr "Úroveň šumu v dB" - -msgid "SmartGW" -msgstr "SmartGW" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "Stále použitelné (4 < ETX < 10)" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Stále použitelné (4 < ETX < 10)" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "TC" - -msgid "TC interval" -msgstr "TC interval" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "TOS hodnota" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "Topologie" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "Uplink" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "Verze" - -msgid "Very good (ETX < 2)" -msgstr "Velmi dobré (ETX < 2)" - -msgid "Very good (SNR > 30)" -msgstr "Velmi dobré (SNR > 30)" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "Váha" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "Žlutý" - -msgid "no" -msgstr "ne" - -msgid "yes" -msgstr "ano" - -#~ msgid "Device" -#~ msgstr "Zařízení" diff --git a/package/luci/applications/luci-app-olsr/po/de/olsr.po b/package/luci/applications/luci-app-olsr/po/de/olsr.po deleted file mode 100644 index a23a20d58c..0000000000 --- a/package/luci/applications/luci-app-olsr/po/de/olsr.po +++ /dev/null @@ -1,814 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2012-11-21 20:54+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Active MID announcements" -msgstr "Aktive MID-Ankündigungen" - -msgid "Active OLSR nodes" -msgstr "Aktive OLSR-Knoten" - -msgid "Active host net announcements" -msgstr "Aktive HNA-Ankündigungen" - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Allow gateways with NAT" -msgstr "Gateways mit NAT erlauben" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "Auswahl von IPv4-Gateways erlauben, die zum Internet hin NAT verwenden" - -msgid "Announce uplink" -msgstr "Uplink ankündigen" - -msgid "Announced network" -msgstr "Angekündigtes Netzwerk" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" -"Beide Werte müssen in der 'dotted decimal' Schreibweise angegeben werden." - -msgid "Broadcast address" -msgstr "Broadcast-Adresse" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "Anzeige" - -msgid "Downlink" -msgstr "Download-Bandbreite" - -msgid "Download Config" -msgstr "Konfiguration herunterladen" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"SmartGateway aktivieren. Ist diese Option deaktiviert, dann werden alle " -"folgenden SmartGateway Einstellungen ignoriert. Der Defaultwert ist \"no\"." - -msgid "Enable this interface." -msgstr "Dieses Interface benutzen." - -msgid "Enabled" -msgstr "Aktiviert" - -msgid "Expected retransmission count" -msgstr "Zu erwartende Sendeversuche pro Paket" - -msgid "FIB metric" -msgstr "FIB-Metrik" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" -"FIBMetric bestimmt die Metrik für Hostrouten die olsrd setzt. \"flat\" setzt " -"die Metrik immer auf 2. Dies ist der bevorzugte Wert, da er dem Kernel dabei " -"hilft, veraltete Routen zu löschen. \"correct\" verwendet den Hopcount als " -"Metrik. \"approx\" benutzt ebenfalls den Hopcount als Metrik, updated diese " -"aber nur, wenn sich auch der Nexthop verändert hat. Der Defaultwert ist " -"\"flat\"." - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" -"Fisheye Mechanismus für TC-Nachrichten (ausgewählt entspricht ein). Der " -"Defaultwert ist \"ein\"" - -msgid "Gateway" -msgstr "Gateway" - -msgid "General Settings" -msgstr "Allgemeine Einstellungen" - -msgid "General settings" -msgstr "Allgemeine Einstellungen" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "HNA-Ankündigungen" - -msgid "HNA interval" -msgstr "HNA-Intervall" - -msgid "HNA validity time" -msgstr "HNA-Gültigkeit" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "HNA-Ankündigungen" - -msgid "Hello" -msgstr "Hello" - -msgid "Hello interval" -msgstr "Hello-Intervall" - -msgid "Hello validity time" -msgstr "Hello-Gültigkeit" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "Sprünge" - -msgid "Hostname" -msgstr "Hostname" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" -"Rechner in einem OLSR-geroutetem Netzwerk können Konnektivität zu externen " -"Netzwerken mittels HNA-Nachrichten ankündigen." - -#, fuzzy -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" -"Rechner in einem OLSR-geroutetem Netzwerk können Konnektivität zu externen " -"Netzwerken mittels HNA-Nachrichten ankündigen." - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" -"Verwende Hysterese zur Berechnung von Links (nur verfügbar für Hopcount " -"Metric). Hysterese erhöht die Stabilität von berechneten Routen, verzögert " -"aber das Registrieren von Nachbarknoten. Der Defaultwert ist \"eingeschaltet" -"\"." - -msgid "IP Addresses" -msgstr "IP-Adressen" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" -"Die zu verwendende IP-Version. Wird 6and4 gewählt dann wird ein OLSRd-" -"Prozess für jedes Protokoll gestartet." - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "IPv4 Broadcast" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" -"IPv4 Broadcastadresse für ausgehende OLSR-Pakete. Ein häufig verwendetes " -"Beispiel ist 255.255.255.255. Der Defaultwert ist \"0.0.0.0\". Dies " -"verwendet die Broadcastadresse des Interfaces." - -msgid "IPv4 source" -msgstr "IPv4 Quell-IP" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" -"IPv4 Quell-IP für ausgehende OLSR-Nachrichten. Der Defaultwert ist " -"\"0.0.0.0\", dann wird die IP des Interfaces verwendet." - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "IPv6 Multicast" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" -"IPv6 Multicast-Adresse. Der Defaultwert ist \"FF02::6D\", die linklocal " -"Multicastadresse für MANETs." - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" -"IPv6 Netzwerk muss in 'full notation', der Prefix in CIDR Schreibweise " -"eingegeben werden." - -msgid "IPv6 source" -msgstr "IPv6 Quell-IP" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" -"IPv6 Quell-Prefix. OLSRd wählt eine IP als Quell-IP die innerhalb des " -"angegebenen Prefix liegt. Der Defaultwert ist \"0::/0\", damit wird eine " -"IPv6-Adresse des Interfaces verwendet die nicht linklocal ist." - -msgid "IPv6-Prefix of the uplink" -msgstr "IPv6-Präfix des Uplinks" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" -"Wenn sich die Route zum aktuellen Gateway ändert, dann wird sein ETX-Wert " -"zunächst mit diesem Wert multipliziert bevor er mit dem neuen ETX-Wert " -"verglichen wird. Damit kann \"flapping\" von Routen reduziert werden. Der " -"Wert kann zwischen 0.1 und 1.0 liegen, sollte aber nahe bei 1.0 sein.
    ACHTUNG: Diese Einstellung darf nicht zusammen mit der etx_ffeth " -"Metrik verwendet werden!
    Der Defaultwert ist \"1.0\"." - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" -"Benutzt dieser Knoten NAT für die Verbindung zum Internet? Der Defaultwert " -"ist \"yes\"." - -msgid "Interface" -msgstr "Schnittstelle" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" -"Mit dieser Einstellung kann unnötiges Forwarden von Paketen auf geswitchten " -"Ethernetschnittstellen unterbunden werden. Gültige Werte sind \"mesh\" und " -"\"ether\". Der Defaultwert ist \"mesh\"." - -msgid "Interfaces" -msgstr "Schnittstellen" - -msgid "Interfaces Defaults" -msgstr "Schnittstellen-Standards" - -msgid "Internet protocol" -msgstr "Internet Protokoll" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" -"Intervall mit dem Netzwerkschnittstellen auf Änderungen in ihrer " -"Konfiguration überprüft werden (in Sekunden). Der Defaultwert ist \"2.5\"." - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "Bekannte OLSR-Routen" - -msgid "LQ" -msgstr "LQ" - -msgid "LQ aging" -msgstr "LQ-Alterung" - -msgid "LQ algorithm" -msgstr "LQ-Algorithmus" - -msgid "LQ fisheye" -msgstr "LQ-Fisheye" - -msgid "LQ level" -msgstr "LQ-Level" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "letzter Hop" - -msgid "Legend" -msgstr "Legende" - -msgid "Library" -msgstr "Bibliothek" - -msgid "Link Quality Settings" -msgstr "Linkqualitätseinstellungen" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" -"Der Linkqualitäts-Alterungsfaktor kann nur zusammen mit Linkqualitylevel 2 " -"verwendet werden. Kleinere Werte bedeuten, dass ETX-Werte sich langsamer " -"verändern. Erlaubte Werte sind 0.01 bis 1.0." - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" -"Link Quality Algorithmus (nur für lq level 2).
    etx_float: " -"floating point ETX mit exponentieller Alterung
    etx_fpm: Dasselbe " -"wie etx_float, Berechnung jedoch mit Ganzzahlen
    etx_ff: ETX " -"freifunk, eine ETX Variante die allen OLSR Traffic zur ETX Berechnung nutzt " -"(und nicht nur Hello-Nachrichten)
    etx_ffeth: Inkompatible " -"Variante von etx_ff die Ethernetlinks mit ETX 0.1 erlaubt
    Der Default " -"ist \"etx_ff\"" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" -"Mit dieser Option kann der Linkquality-Algorithmus gewählt werden.
    0 = Linkquality nicht benutzen
    2 = Linkquality für die " -"Wahl von MPRs und fürs Routing benutzen.
    Der Defaultwert ist \"2\"." - -msgid "LinkQuality Multiplicator" -msgstr "LQ-Multiplikator" - -msgid "Links per node (average)" -msgstr "Verbindungen pro Node (Durchschnitt)" - -msgid "Links total" -msgstr "Verbindungen insgesamt" - -msgid "Local interface IP" -msgstr "Lokale Interface-IP" - -msgid "MID" -msgstr "MID" - -msgid "MID interval" -msgstr "MID-Intervall" - -msgid "MID validity time" -msgstr "MID-Gültigkeit" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "Haupt-IP" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "Metrik" - -msgid "Mode" -msgstr "Modus" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -#, fuzzy -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" -"Multipliziere die Linkquality (LQ) für Routen mit dem hier angegebenen " -"Faktor, der zwischen 0.01 und 1 liegen kann. Beispiele:
    halbiere die LQ " -"zu 192.168.0.1: 192.168.0.1 0.5
    reduziere die LQ für alle Nodes die mit " -"diesem Interface kommunizieren um 20%: default 0.8" - -msgid "NAT threshold" -msgstr "NAT-Schwellenwert" - -msgid "NLQ" -msgstr "NLQ" - -msgid "Neighbors" -msgstr "Nachbarn" - -msgid "Neighbour IP" -msgstr "Nachbar-IP" - -msgid "Neighbours" -msgstr "Nachbarn" - -msgid "Netmask" -msgstr "Netzmaske" - -msgid "Network" -msgstr "Netzwerk" - -msgid "Network address" -msgstr "Netzwerk-Adresse" - -msgid "Nic changes poll interval" -msgstr "Abfrageintervall für Schnittstellenänderungen" - -msgid "Nodes" -msgstr "Knoten" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "OLSR - Anzeigeoptionen" - -msgid "OLSR - HNA-Announcements" -msgstr "OLSR - HNA-Ankündigungen" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "OLSR - HNA-Ankündigungen" - -msgid "OLSR - Plugins" -msgstr "OLSR - Plugins" - -msgid "OLSR Daemon" -msgstr "OLSR Daemon" - -msgid "OLSR Daemon - Interface" -msgstr "OLSR Daemon - Schnittstelle" - -msgid "OLSR connections" -msgstr "OLSR-Verbindungen" - -msgid "OLSR gateway" -msgstr "OLSR-Gateway" - -msgid "OLSR node" -msgstr "OLSR-Knoten" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "Übersicht" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "Übersicht über zur Zeit aktive OLSR-Netzwerk-Ankündigungen" - -msgid "Overview of currently established OLSR connections" -msgstr "Übersicht über aktuell bestehende OLSR-Verbindungen" - -msgid "Overview of currently known OLSR nodes" -msgstr "Übersicht über zur Zeit bekannte andere OLSR-Knoten" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "Übersicht über zur Zeit bekannte Routen zu anderen OLSR-Knoten" - -msgid "Overview of interfaces where OLSR is running" -msgstr "Übersicht über Interfaces auf denen OLSRd läuft." - -msgid "Overview of known multiple interface announcements" -msgstr "Übersicht über bekannte Mehrfachschnittstellenmeldungen" - -msgid "Overview of smart gateways in this network" -msgstr "Übersicht über Smart Gateways in diesem Netzwerk." - -msgid "Plugin configuration" -msgstr "Pluginkonfiguration" - -msgid "Plugins" -msgstr "Plugins" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "Abfragerate für OLSRd-Sockets in Sekunden. Der Defaultwert ist 0.05." - -msgid "Pollrate" -msgstr "Abfragerate" - -msgid "Port" -msgstr "Port" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "DNS auflösen" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" -"Hostnamen auf den Statusseiten auflösen. Dies ist in der Regel kein Problem, " -"wenn aber öffentliche IPs benutzt werden und das DNS-Setup nicht stabil ist, " -"dann werden die OLSR-Statusseiten nur sehr langsam laden. In diesem Fall " -"sollte man diese Option deaktivieren." - -msgid "Routes" -msgstr "Routen" - -msgid "Secondary OLSR interfaces" -msgstr "Sekundäre OLSR Schnittstellen" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" -"Setzt die Haupt-IP (originator ip) für diesen Router. Diese IP wird sich " -"NIEMALS während der Laufzeit von OLSRD verändern. Der Defaultwert ist " -"0.0.0.0. Damit wird die IP des ersten Interfaces verwendet." - -#, fuzzy -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" -"Setzt die Haupt-IP (originator ip) für diesen Router. Diese IP wird sich " -"NIEMALS während der Laufzeit von OLSRD verändern. Der Defaultwert ist " -"0.0.0.0. Damit wird die IP des ersten Interfaces verwendet." - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "Smart Gateway" - -msgid "SmartGW announcements" -msgstr "Smart Gateway Ankündigungen" - -msgid "SmartGateway is not configured on this system." -msgstr "Smart Gateway ist auf diesem System nicht konfiguriert." - -msgid "Source address" -msgstr "Quell-IP" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" -"Hiermit kann man die Geschwindigkeit des Uplinks dieses Knotens ankündigen. " -"Der erste Wert ist die Upload-, der zweite Wert die Downloadgeschwindigkeit. " -"Der Defaultwert ist \"128 1024\"." - -msgid "Speed of the uplink" -msgstr "Geschwindigkeit des Uplinks" - -msgid "State" -msgstr "Status" - -msgid "Status" -msgstr "Status" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "Erfolgsquote vom Nachbarn empfangener Pakete" - -msgid "Success rate of packages sent to the neighbour" -msgstr "Erfolgsquote zum Nachbarn gesendeter Pakete" - -msgid "TC" -msgstr "TC" - -msgid "TC interval" -msgstr "TC-Intervall" - -msgid "TC validity time" -msgstr "TC-Gültigkeit" - -msgid "TOS value" -msgstr "TOS-Wert" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" -"OLSR ist eine Implementation des Optimized Link State Routing Protokolls und " -"erlaubt damit Mesh-Routing für jegliche Netzwerkgeräte. Besuche olsrd.org für Hilfe und Dokumentation." - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" -"Hier kann ein Bereitschaftswert angegeben werden. Bleibt dieses Feld leer, " -"dann wird der Bereitschaftswert automatisch anhand von Akkukapazität und " -"Stromversorgung berechnet" - -msgid "The interface OLSRd should serve." -msgstr "Interface das OLSRd verwenden soll." - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" -"Port, den OLSRd benutzt. Dieser sollte in der Regel auf dem Defaultwert 698 " -"bleiben, was dem von IANA zugewiesenen Port für OLSRd entspricht." - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" -"Hiermit kann der externe IPv6-Präfix an Clients signalisiert werden. Dadurch " -"können Clients ihre lokale IP-Adresse ändern, um diesen IPv6-Gateway ohne " -"Übersetzung der IPv6-Adresse zu benutzen. Die maximale erlaubte Länge des " -"Präfix ist 64 bit. Der Defaultwert ist \"::/0\" (kein Präfix)." - -msgid "Timing and Validity" -msgstr "Taktung und Validität" - -msgid "Topology" -msgstr "Topologie" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" -"TOS-Wert für den IP-Header von OLSR-Nachrichten. Der Defaultwert ist \"16\"." - -msgid "Unable to connect to the OLSR daemon!" -msgstr "Es konnte keine Verbindung zum OLSR-Daemon hergestellt werden!" - -msgid "Uplink" -msgstr "Upload-Bandbreite" - -msgid "Uplink uses NAT" -msgstr "Der Uplink benutzt NAT." - -msgid "Use hysteresis" -msgstr "Hysterese aktivieren" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "Version" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" -"WARNUNG: kmod-ipip ist nicht installiert. Ohne kmod-ipip wird SmartGateway " -"nicht funktionieren!" - -msgid "Weight" -msgstr "Gewichtung" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" -"Gibt es mehrere Links zwischen einzelnen Nodes dann wird ein Gewichtungswert " -"verwendet um zu bestimmen, welches Interface bevorzugt wird. Dieses Gewicht " -"wird in der Regel automatisch berechnet, kann hier jedoch mit einem festen " -"Wert überschrieben werden. OLSRd wählt den Link mit dem niedrigsten Wert. " -"
    Hinweis: Diese Gewichtung ist nur möglich wenn " -"LinkQualityLevel= 0 ist. Für alle anderen Werte von LinkQualityLevel wird " -"stattdessen der ETX-Wert verwendet." - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" -"Welche Art von Uplink im Mesh angekündigt wird. Ein Uplink wird automatisch " -"anhand der lokal angekündigten HNA erkannt (0.0.0.0/0, ::ffff:0:0/96 oder " -"2000::/3). Der Defaultwert ist \"both\" (sowohl IPv4 als auch IPv6 Uplink " -"ankündigen sofern verfügbar)." - -#, fuzzy -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" -"Welche Art von Uplink im Mesh angekündigt wird. Ein Uplink wird automatisch " -"anhand der lokal angekündigten HNA erkannt (0.0.0.0/0, ::ffff:0:0/96 oder " -"2000::/3). Der Defaultwert ist \"both\" (sowohl IPv4 als auch IPv6 Uplink " -"ankündigen sofern verfügbar)." - -msgid "Willingness" -msgstr "Bereitschaft" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "Schnittstelle" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "Stellen Sie sicher das OLSRd läuft und das \"txtinfo\" Plugin auf Port " -#~ "2006 geladen und \"127.0.0.1\" als Accept-Host gesetzt ist." diff --git a/package/luci/applications/luci-app-olsr/po/el/olsr.po b/package/luci/applications/luci-app-olsr/po/el/olsr.po deleted file mode 100644 index a3cf0d2ae1..0000000000 --- a/package/luci/applications/luci-app-olsr/po/el/olsr.po +++ /dev/null @@ -1,695 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: 2012-03-31 15:41+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "Ενεργοί κόμβοι OLSR" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "Προχωρημένες Ρυθμίσεις" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Ενεργοποίηση" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "Ενεργοποίηση αυτής της διεπαφής." - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "Πύλη" - -msgid "General Settings" -msgstr "Γενικές Ρυθμίσεις" - -msgid "General settings" -msgstr "Γενικές ρυθμίσεις" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "Διευθύνσεις IP" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "Διεπαφή" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "Διεπαφές" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "Συνδέσεις σύνολο" - -msgid "Local interface IP" -msgstr "IP τοπικής διεπαφής" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "Δίκτυο" - -msgid "Network address" -msgstr "Διεύθυνση δικτύου" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "OLSR Δαίμονας" - -msgid "OLSR Daemon - Interface" -msgstr "OLSR Δαίμονας - Διεπαφή" - -msgid "OLSR connections" -msgstr "OLSR συνδέσεις" - -msgid "OLSR gateway" -msgstr "OLSR πύλη" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "Πόρτα" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "Διαδρομές" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "SmartGW" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "Τοπολογία" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "Έκδοση" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "Συσκευή" diff --git a/package/luci/applications/luci-app-olsr/po/en/olsr.po b/package/luci/applications/luci-app-olsr/po/en/olsr.po deleted file mode 100644 index 131005e1ee..0000000000 --- a/package/luci/applications/luci-app-olsr/po/en/olsr.po +++ /dev/null @@ -1,701 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "Active MID announcements" -msgstr "Active MID announcements" - -msgid "Active OLSR nodes" -msgstr "Active OLSR nodes" - -msgid "Active host net announcements" -msgstr "Active host net announcements" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "Announced network" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "Expected retransmission count" - -msgid "FIB metric" -msgstr "FIB metric" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "General settings" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "HNA interval" - -msgid "HNA validity time" -msgstr "HNA validity time" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "OLSR - HNA-Announcements" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "Hello interval" - -msgid "Hello validity time" -msgstr "Hello validity time" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4 broadcast" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "Internet protocol" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "Known OLSR routes" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "LQ aging" - -msgid "LQ algorithm" -msgstr "LQ algorithm" - -msgid "LQ fisheye" -msgstr "LQ fisheye" - -msgid "LQ level" -msgstr "LQ level" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "Last hop" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "Library" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "Local interface IP" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "MID interval" - -msgid "MID validity time" -msgstr "MID validity time" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "Neighbour IP" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "Netmask" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "OLSR - HNA-Announcements" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "OLSR - HNA-Announcements" - -msgid "OLSR - Plugins" -msgstr "OLSR - Plugins" - -msgid "OLSR Daemon" -msgstr "OLSR Daemon" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "OLSR connections" - -msgid "OLSR gateway" -msgstr "OLSR gateway" - -msgid "OLSR node" -msgstr "OLSR node" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "Overview of currently active OLSR host net announcements" - -msgid "Overview of currently established OLSR connections" -msgstr "Overview of currently established OLSR connections" - -msgid "Overview of currently known OLSR nodes" -msgstr "Overview of currently known OLSR nodes" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "Overview of currently known routes to other OLSR nodes" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "Overview of known multiple interface announcements" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "Plugin configuration" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "Pollrate" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "Secondary OLSR interfaces" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "TC interval" - -msgid "TC validity time" -msgstr "TC validity time" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "Unable to connect to the OLSR daemon!" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "Use hysteresis" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "Willingness" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." diff --git a/package/luci/applications/luci-app-olsr/po/es/olsr.po b/package/luci/applications/luci-app-olsr/po/es/olsr.po deleted file mode 100644 index 0e161bda43..0000000000 --- a/package/luci/applications/luci-app-olsr/po/es/olsr.po +++ /dev/null @@ -1,830 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2014-06-15 13:17+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Active MID announcements" -msgstr "Declaraciones MID activas" - -msgid "Active OLSR nodes" -msgstr "Nodos OLSR activos" - -msgid "Active host net announcements" -msgstr "Declaraciones activas de máquinas en la red" - -msgid "Advanced Settings" -msgstr "Configuración avanzada" - -msgid "Allow gateways with NAT" -msgstr "Permitir pasarelas con NAT" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "Permitir seleccionar una pasarela IPv4 con NAT" - -msgid "Announce uplink" -msgstr "Declarar enlace de subida" - -msgid "Announced network" -msgstr "Red declarada" - -msgid "Bad (ETX > 10)" -msgstr "Mal (ETX > 10)" - -msgid "Bad (SNR < 5)" -msgstr "Mal (SNR < 5)" - -msgid "Both values must use the dotted decimal notation." -msgstr "Ambos valores en notación decimal con punto." - -msgid "Broadcast address" -msgstr "Dirección de propagación" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "Sólo puede ser una dirección IPv4 o IPv6 válidas o \"por defecto\"" - -#, fuzzy -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "Sólo puede ser una dirección IPv4 o IPv6 válidas o \"por defecto\"" - -msgid "Configuration" -msgstr "Configuración" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" -"No pude obtener datos. Asegúrese de que el plugin jsoninfo está instalado y " -"permite conexiones desde localhost." - -msgid "Display" -msgstr "Mostrar" - -msgid "Downlink" -msgstr "Enlace de bajada" - -msgid "Download Config" -msgstr "Configuración de descarga" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Activar" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"Activar SmartGateway. Si se desactiva el resto de parámetros de SmartGateway " -"se ignoran. \"No\" por defecto." - -msgid "Enable this interface." -msgstr "Activar esta interfaz." - -msgid "Enabled" -msgstr "Activado" - -msgid "Expected retransmission count" -msgstr "Contador de retransmisión esperado" - -msgid "FIB metric" -msgstr "Métrica FIB" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" -"FIBMetric controla el valor métrico de los conjuntos OLSRd. \"Plano\" " -"significa que la métrica es siempre 2. Este es el valor preferido porque " -"ayuda al enrutador del kernel de linux a limpiar valores antiguos. \"Correct" -"\" usa como métrica el número de saltos. \"Approx\" usa la cuenta de saltos " -"también, pero solo la actualiza si cambia el siguiente salto también. Por " -"defecto \"flat\"." - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "Mecanismo Fisheye para TCs (marcado = activado). Activado por defecto" - -msgid "Gateway" -msgstr "Pasarela" - -msgid "General Settings" -msgstr "Configuración general" - -msgid "General settings" -msgstr "Configuración general" - -msgid "Good (2 < ETX < 4)" -msgstr "Bien (2 < ETX < 4)" - -msgid "Good (30 > SNR > 20)" -msgstr "Bien (30 > SNR > 20)" - -msgid "Green" -msgstr "Verde" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "Declaraciones HNA" - -msgid "HNA interval" -msgstr "Intervalo HNA" - -msgid "HNA validity time" -msgstr "Tiempo de validez de HNA" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "Declaraciones HNA" - -msgid "Hello" -msgstr "Saludo" - -msgid "Hello interval" -msgstr "Intervalo de saludo" - -msgid "Hello validity time" -msgstr "Tiempo de validez del saludo" - -msgid "Hide IPv4" -msgstr "Ocultar IPv4" - -msgid "Hide IPv6" -msgstr "Ocultar IPv6" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "Saltos" - -msgid "Hostname" -msgstr "Nombre de máquina" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" -"Las máquinas de una red OLSR pueden declarar conectividad con redes externas " -"usando mensajes HNA." - -#, fuzzy -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" -"Las máquinas de una red OLSR pueden declarar conectividad con redes externas " -"usando mensajes HNA." - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" -"Histéresis para la sensibilidad del enlace (sólo para métrica de saltos). La " -"histéresis da más robustez a la sensibilidad de enlace pero retrasa el " -"registro de vecinos. \"Sí\" por defecto" - -msgid "IP Addresses" -msgstr "Direcciones IP" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" -"Versión IP a usar. Si se selecciona 6and4 se arrancarán una instancia de " -"oslrd para cada protocolo." - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "Propagar IPv4" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" -"Dirección de propagación IPv4 para paquetes salientes OLSR. Por ejemplo " -"\"255.255.255.255\". Por defecto es \"0.0.0.0\" que hace que se use la " -"interfaz de propagación IP." - -msgid "IPv4 source" -msgstr "IPv4 origen" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" -"Dirección origen IPv4 para paquetes OLSR. Por defecto es \"0.0.0.0\" que " -"hace que se use la interfaz de propagación IP." - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "Multidifusión IPv6" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" -"Dirección IPv6 de multidifusión. Por defecto es \"FF02::6D\", la dirección " -"de multidifusión local en routers MANET." - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" -"La red IPv6 debe escribirse en notación completa y el prefijo debe estar en " -"notación CIDR." - -msgid "IPv6 source" -msgstr "IPv6 origen" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" -"Prefijo origen IPv6. OLSRd elegirá un interfaz IP que encaje con el prefijo " -"de este parámetro. Por defecto es \"0::/0\" que provoca el uso de un " -"interfaz IP no local." - -msgid "IPv6-Prefix of the uplink" -msgstr "Prefijo IPv6 para el enlace de subida" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" -"Si la ruta a la pasarela actual cambia su ETX de se multiplica por este " -"valor antes de compararse con el nuevo. El parámetro debe estar entre 0.1 y " -"1.0, pero debería aproximarse a 1.0 si se cambia.
    AVISO: No debe " -"usarse junto con la métrica etx_ffeth!
    Por defecto es 1.0." - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "Este nodo usa NAT para conectar a internet. \"Sí\" por defecto." - -msgid "Interface" -msgstr "Interfaz" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" -"El modo de interfaz se usar para evitar traspaso innecesario de paquetes en " -"interfaces de red conmutados. Los modos válidos son \"mesh\" y \"ether\". " -"Por defecto es \"mesh\"." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interfaces Defaults" -msgstr "Valores por defecto de los interfaces" - -msgid "Internet protocol" -msgstr "Protocolo de Internet" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" -"Intervalo de sondeo de cambios de configuración a interfaces de red (en " -"segundos). Por defecto es \"2.5\"." - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "Valor no válido para LQMult-Value. Debe ser entre 0,01 y 1,0." - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" -"Valor no válido para LQMult-Value. Debe usar un número decimal entre 0,01 y " -"1,0." - -msgid "Known OLSR routes" -msgstr "Rutas OLSR conocidas" - -msgid "LQ" -msgstr "LQ" - -msgid "LQ aging" -msgstr "LQ - Envejecimiento" - -msgid "LQ algorithm" -msgstr "LQ - Algoritmo" - -msgid "LQ fisheye" -msgstr "LQ - Ojo de pez" - -msgid "LQ level" -msgstr "LQ - Nivel" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" -"LQMult precisa dos valores (dirección IP o \"por defecto\" y multiplicador) " -"separados por un espacio." - -msgid "Last hop" -msgstr "Último salto" - -msgid "Legend" -msgstr "Leyenda" - -msgid "Library" -msgstr "Biblioteca" - -msgid "Link Quality Settings" -msgstr "Configuración de calidad de enlace" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" -"Factor de envejecimiento de la calidad del enlace (sólo para CE nivel 2). " -"Parámetro de ajuste para etx_float y etx_fpm, valores menores implican " -"cambios más lentos en el valor ETX. (los valores permitidos están entre 0.01 " -"y 1.0)" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" -"Algoritmo de calidad de enlace (solo para CE nivel 2).
    etx_float: ETX en punto flotante con envejecimiento exponencial
    etx_fpm : igual que etx_float, pero con aritmética entera
    etx_ff : " -"ETX freifunk, variante etx que usar todo el tráfico OLSR (en vez de sólo " -"\"hellos\") para los cálculos ETX
    etx_ffeth: variante " -"incompatible de etx_ff que permite enlaces ethernet con ETX 0.1.
    Por " -"defecto \"etx_ff\"" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" -"Intercambio del nivel de calidad del enlace entre \"cuenta de saltos\" y " -"enrutado \"basado en coste\" (principalmente ETX).
    0 = no usar " -"calidad del enlace
    2 = use calidad del enlace para selección de " -"MPR y enrutado
    Por defecto es 2" - -msgid "LinkQuality Multiplicator" -msgstr "Multilplicador de calidad de enlace" - -msgid "Links per node (average)" -msgstr "Media de enlaces por nodo" - -msgid "Links total" -msgstr "Enlaces totales" - -msgid "Local interface IP" -msgstr "IP de la interfaz local" - -msgid "MID" -msgstr "MID" - -msgid "MID interval" -msgstr "Intervalo de MID" - -msgid "MID validity time" -msgstr "Tiempo de validez de MID" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "IP principal" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" -"Asegúrese de que OLSRd funciona y de que el plugin \"jsoninfo\" está " -"cargado, configurado en el puerto 9090 y que acepta conexiones desde " -"127.0.0.1." - -msgid "Metric" -msgstr "Métrica" - -msgid "Mode" -msgstr "Modo" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" -"Multiplicar las rutas con el factor dado aquí. Los valores permitidos está " -"entre 0,01 y 1,0. Se usa sólo cuando el nivel LQ es mayor que 0. Ejemplos:" -"
    reducir LQ a 192.168.0.1 por la mitad: 192.168.0.1 0,5
    reducir LQ " -"a todos los nodos de esta interfaz el 20%: default 0,8" - -#, fuzzy -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" -"Multiplicar las rutas con el factor dado aquí. Los valores permitidos está " -"entre 0,01 y 1,0. Se usa sólo cuando el nivel LQ es mayor que 0. Ejemplos:" -"
    reducir LQ a 192.168.0.1 por la mitad: 192.168.0.1 0,5
    reducir LQ " -"a todos los nodos de esta interfaz el 20%: default 0,8" - -msgid "NAT threshold" -msgstr "Umbral NAT" - -msgid "NLQ" -msgstr "NLQ" - -msgid "Neighbors" -msgstr "Vecinos" - -msgid "Neighbour IP" -msgstr "IP vecina" - -msgid "Neighbours" -msgstr "Vecinos" - -msgid "Netmask" -msgstr "Máscara de red" - -msgid "Network" -msgstr "Red" - -msgid "Network address" -msgstr "Dirección de red" - -msgid "Nic changes poll interval" -msgstr "Intervalo de muestreo de cambios de nic" - -msgid "Nodes" -msgstr "Nodos" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "OLSR - Mostrar opciones" - -msgid "OLSR - HNA-Announcements" -msgstr "OLSR - Declaraciones HNA" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "OLSR - Declaraciones HNA" - -msgid "OLSR - Plugins" -msgstr "OLSR - Plugins" - -msgid "OLSR Daemon" -msgstr "Demonio OLSR" - -msgid "OLSR Daemon - Interface" -msgstr "Demonio OLSR - Interfaz" - -msgid "OLSR connections" -msgstr "Conexiones OLSR" - -msgid "OLSR gateway" -msgstr "Puerta de enlace OLSR" - -msgid "OLSR node" -msgstr "Nodo OLSR" - -msgid "Orange" -msgstr "Naranja" - -msgid "Overview" -msgstr "Resumen" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "Resumen de declaraciones OLSR de máquinas activas" - -msgid "Overview of currently established OLSR connections" -msgstr "Resumen de conexiones de OLSR vivas" - -msgid "Overview of currently known OLSR nodes" -msgstr "Nodos conocidos OLSR" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "Rutas conocidas a otros nodos OLSR" - -msgid "Overview of interfaces where OLSR is running" -msgstr "Resumen de interfaces con OLSR en ejecución" - -msgid "Overview of known multiple interface announcements" -msgstr "Declaraciones de múltiples interfaces conocidas" - -msgid "Overview of smart gateways in this network" -msgstr "Pasarelas inteligentes en esta red" - -msgid "Plugin configuration" -msgstr "Configuración del plugin" - -msgid "Plugins" -msgstr "Plugins" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "Ratio de muestreo de paquetes OLSR en segundos. Por defecto es 0.05." - -msgid "Pollrate" -msgstr "Tasa de muestreo" - -msgid "Port" -msgstr "Puerto" - -msgid "Prefix" -msgstr "Prefijo" - -msgid "Red" -msgstr "Rojo" - -msgid "Resolve" -msgstr "Calcular" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" -"Calcula los nombres de máquina en las páginas de estado. Suele ser seguro, " -"pero las páginas se cargarán lentamente si usa IPs públicas y tiene una " -"configuración inestable de DNS." - -msgid "Routes" -msgstr "Rutas" - -msgid "Secondary OLSR interfaces" -msgstr "Interfaces OLSR secundarias" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" -"Configura la dirección IP principal (IP originadora) del router. NUNCA debe " -"cambiar mientras OLSRd esté activa. Por defecto es \"0.0.0.0\" que provoca " -"el uso de la IP del primer interfaz." - -#, fuzzy -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" -"Configura la dirección IP principal (IP originadora) del router. NUNCA debe " -"cambiar mientras OLSRd esté activa. Por defecto es \"0.0.0.0\" que provoca " -"el uso de la IP del primer interfaz." - -msgid "Show IPv4" -msgstr "Mostrar IPv4" - -msgid "Show IPv6" -msgstr "Mostrar IPv6" - -msgid "Signal Noise Ratio in dB" -msgstr "Ratio señal / ruido en dB" - -msgid "SmartGW" -msgstr "SmartGW" - -msgid "SmartGW announcements" -msgstr "Declaraciones SmartGW" - -msgid "SmartGateway is not configured on this system." -msgstr "SmartGateway no está configurado." - -msgid "Source address" -msgstr "Dirección origen" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" -"Especifica la velocidad del enlace en kilobits/s. El primer parámetro es la " -"subida y el segundo la bajada. Por defecto es \"128 1024\"." - -msgid "Speed of the uplink" -msgstr "Velocidad de subida" - -msgid "State" -msgstr "Estado" - -msgid "Status" -msgstr "Estado" - -msgid "Still usable (20 > SNR > 5)" -msgstr "Aún usable (20 > SNR > 5)" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Aún usable (4 < ETX < 10)" - -msgid "Success rate of packages received from the neighbour" -msgstr "Ratio de éxito de paquetes recibidos de la vecindad" - -msgid "Success rate of packages sent to the neighbour" -msgstr "Ratio de éxito de paquetes enviados a la vecindad" - -msgid "TC" -msgstr "TC" - -msgid "TC interval" -msgstr "Intervalo TC" - -msgid "TC validity time" -msgstr "Validez de TC" - -msgid "TOS value" -msgstr "TOS" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" -"El demonio OLSR es una implementación del protocolo Optimized Link State " -"Routing. Permite enrutado mesh para cualquier equipo en red. Funciona sobre " -"cualquier tarjeta wi.fi que soporte el modo ad-hoc y cualquier dispositivo " -"ethernet. Puede visitar olsrd.org para " -"ayuda y documentación." - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" -"Willingness fija a usar. Si no se establece se calculará dinámicamente " -"basándose en el estado de la batería y la corriente. Por defecto es 3." - -msgid "The interface OLSRd should serve." -msgstr "Interfaz a usar por OLSRD." - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" -"Puerto a usar por OLSR. Debería ser 698 tal y como asigna IANA. Puede tener " -"un valor entre 1 y 65535." - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" -"Prefijo IPv6 a mostrar a clientes del enlace. Puede hacer que un cliente " -"cambio su dirección IPv6 para usar la pasarela sin ningún tipo de traducción " -"de dirección. La longitud máxima del prefijo es 64 bits. Por defecto es " -"\"::/0\" (sin prefijo)." - -msgid "Timing and Validity" -msgstr "Tiempo y validez" - -msgid "Topology" -msgstr "Topología" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" -"Tipo de servicio para la cabecera de control de tráfico de IP. Por defecto " -"es 16." - -msgid "Unable to connect to the OLSR daemon!" -msgstr "¡No puedo conectar con el demonio OLSR!" - -msgid "Uplink" -msgstr "Enlace saliente" - -msgid "Uplink uses NAT" -msgstr "El enlace saliente usa NAT" - -msgid "Use hysteresis" -msgstr "Usar histéresis" - -msgid "Validity Time" -msgstr "Tiempo de validez" - -msgid "Version" -msgstr "Versión" - -msgid "Very good (ETX < 2)" -msgstr "Muy bien (ETX < 2)" - -msgid "Very good (SNR > 30)" -msgstr "Muy bien (SNR > 30)" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" -"Aviso: kmod-ipip no está instalado. Sin kmod-ipip SmartGateway no funcionará." - -msgid "Weight" -msgstr "Peso" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" -"Cuando hayan múltiples enlaces entre máquinas el peso del interfaz se usar " -"para determinar qué enlace usar. Normalmente se calcula automáticamente " -"basándose en las características de la interfaz, pero puede indicar un valor " -"fijo. OLSRd elegirá enlaces con el valor menor.
    Nota: El peso " -"del interfaz se usao sólo cuando LinkQualityLevel está en 0. Para otros " -"valores se usará el valor del interfaz EXT." - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" -"Tipo de enlace exportado a otros nodos del mesh. Un enlace se detecta " -"buscando una HNA local de 0.0.0.0/0, ::ffff:0:0/96 o 2000::/3. Por defecto " -"\"both\"." - -#, fuzzy -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" -"Tipo de enlace exportado a otros nodos del mesh. Un enlace se detecta " -"buscando una HNA local de 0.0.0.0/0, ::ffff:0:0/96 o 2000::/3. Por defecto " -"\"both\"." - -msgid "Willingness" -msgstr "Willingness" - -msgid "Yellow" -msgstr "Amarillo" - -msgid "no" -msgstr "no" - -msgid "yes" -msgstr "sí" - -#~ msgid "Device" -#~ msgstr "Dispositivo" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "Asegúrese de que OLSRd se está ejecutando, que el plugin \"txtinfo\" esté " -#~ "cargado, configurado en el puerto 2006 y que acepta conexiones desde " -#~ "127.0.0.1." - -#~ msgid "" -#~ "Multiply routes with the factor given here. Allowed values are between " -#~ "0.01 and 1. It is only used when LQ-Level is greater than 0. Examples:" -#~ "
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to " -#~ "all nodes on this interface by 20%: default 0.8" -#~ msgstr "" -#~ "Multiplicar rutas por este factor. Valores entre 0,01 y 1. Sólo se usa si " -#~ "el nivel de CA es mayor que 0. Ejemplos:
    reducir CE a la mitad a " -#~ "192.168.0.1: \"192.168.0.1 0.5\"
    reducir CE a todos los nodos en " -#~ "esta interfaz el 20%: \"default 0.8\"" diff --git a/package/luci/applications/luci-app-olsr/po/fr/olsr.po b/package/luci/applications/luci-app-olsr/po/fr/olsr.po deleted file mode 100644 index e93a6bd20f..0000000000 --- a/package/luci/applications/luci-app-olsr/po/fr/olsr.po +++ /dev/null @@ -1,692 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-01-15 05:35+0200\n" -"Last-Translator: desillu \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "IPv6 multidiffusion" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-olsr/po/he/olsr.po b/package/luci/applications/luci-app-olsr/po/he/olsr.po deleted file mode 100644 index 38aa43bffb..0000000000 --- a/package/luci/applications/luci-app-olsr/po/he/olsr.po +++ /dev/null @@ -1,687 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-olsr/po/hu/olsr.po b/package/luci/applications/luci-app-olsr/po/hu/olsr.po deleted file mode 100644 index 38aa43bffb..0000000000 --- a/package/luci/applications/luci-app-olsr/po/hu/olsr.po +++ /dev/null @@ -1,687 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-olsr/po/it/olsr.po b/package/luci/applications/luci-app-olsr/po/it/olsr.po deleted file mode 100644 index a88d2970ce..0000000000 --- a/package/luci/applications/luci-app-olsr/po/it/olsr.po +++ /dev/null @@ -1,733 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-02-10 15:13+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Active MID announcements" -msgstr "Annunci MID attivi" - -msgid "Active OLSR nodes" -msgstr "Nodi OLSR attivi" - -msgid "Active host net announcements" -msgstr "Annunci rete host attiva" - -msgid "Advanced Settings" -msgstr "Opzioni avanzate" - -msgid "Allow gateways with NAT" -msgstr "Permetti gateway con NAT" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "Permetti l'uso di gateway in uscita con NAT" - -msgid "Announce uplink" -msgstr "Annuncia uplink" - -msgid "Announced network" -msgstr "Rete da annnunciare" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "Entrambi i valori devono essere nella notazione decimale puntata" - -msgid "Broadcast address" -msgstr "Indirizzo di broadcast" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "Configurazione" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "Display" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Download Config" -msgstr "Configurazione Download" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Attiva" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"Abitita SmartGateway. Se è disattivata, tutti gli altri parametri " -"SmartGateway verrano ignorati. Predefinito è \"no\"." - -msgid "Enable this interface." -msgstr "Attiva questa interfaccia." - -msgid "Enabled" -msgstr "Attivato" - -msgid "Expected retransmission count" -msgstr "Expected retransmission count" - -msgid "FIB metric" -msgstr "Metrica FIB" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "Gateway" - -msgid "General Settings" -msgstr "Impostazioni Generali" - -msgid "General settings" -msgstr "Impostazioni Generali" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "Annuncio di HNA" - -msgid "HNA interval" -msgstr "Intervallo HNA" - -msgid "HNA validity time" -msgstr "Durata di validità HNA" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "Annuncio di HNA" - -msgid "Hello" -msgstr "Ciao" - -msgid "Hello interval" -msgstr "Intervallo Saluto" - -msgid "Hello validity time" -msgstr "Durata validità Saluto" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "Hops" - -msgid "Hostname" -msgstr "Nome Host" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" -"Isteresi del link (solo per la metrica hopocount). L'isteresi aggiunge " -"robustezza alla sensibilità del link ma rallenta la registrazione dei " -"vicini. Default è \"si\"" - -msgid "IP Addresses" -msgstr "Indirizzi IP" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" -"Versione IP da usare. Se entrambe sono selezionate una istanza di olsrd è " -"avviata per ogni versione." - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" -"Indirizzo di broadcast per i pacchetti OLSR. Per esempio potresti avere " -"255.255.255.255. Default is 0.0.0.0, il che abilita l'uso dell'ip di " -"broadcast di default." - -msgid "IPv4 source" -msgstr "IPv4 source" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" -"IPv4 source per i pacchetti uscenti da OLSR. Predefinito \"0.0.0.0\", il che " -"abilita l'uso dell'IP dell'interfaccia di uscita." - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "IPv6 multicast" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" -"IPv6 network deve essere specificata in full notation, il prefisso deve " -"essere in CIDR notation." - -msgid "IPv6 source" -msgstr "IPv6 source" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" -"IPv6 src prefix. OLSRd sceglierà uno degli IP dell'interfaccia che matchano " -"questo parametro. Predefinito è \"0::/0\", il che abilita l'uso di un IP non-" -"linklocal." - -msgid "IPv6-Prefix of the uplink" -msgstr "IPv6-Prefix dell' uplink" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" -"Se la rotta del gateway attuale viene modificata, il valore di ETX del " -"gateway è moltiplicata per questo valore prima che sia comparato con nuovo " -"valore.Il parametro può essere compreso tra 0.1 e 1.0, ma si consiglia un " -"valore vicino a 1.0.
    ATTENZIONE: Questo valore non deve essere " -"utilizzato insieme con la metrica etx_ffeth!
    Defaults a \"1.0\"." - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" -"Se questo nodo usa un NAT per connettersi a Internet. Predefinito è \"si\"." - -msgid "Interface" -msgstr "Interfaccia" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "Annuncio di HNA" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "Impossibile connetersi al demone OLSR!" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "L'uplink usa il NAT" - -msgid "Use hysteresis" -msgstr "Usa l'isteresi" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "Versione" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "Peso" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" -"Quando link multipli esisto tra gli hosts il peso dell'interfaccia viene " -"usato. Normalmente il peso è automaticamente calcolato dal demone olsrd in " -"base alle caratteristiche del link, ma qui puoi specificare un valore di " -"contrappeso. OLSRd sceglierà il link con il più basso valore.
    Nota:Il peso dell'interfaccia è uso quando LinkQualityLevel è 0. Per ogni altro " -"valore di LinkQualityLevel, il valore di ETX è usato." - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" -"Quale tipo di uplink è mostrato agli altri nodi. Un uplink è individuato " -"cercando un HNA del tipo 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." - -#, fuzzy -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" -"Quale tipo di uplink è mostrato agli altri nodi. Un uplink è individuato " -"cercando un HNA del tipo 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "Periferica" diff --git a/package/luci/applications/luci-app-olsr/po/ja/olsr.po b/package/luci/applications/luci-app-olsr/po/ja/olsr.po deleted file mode 100644 index b3f0109345..0000000000 --- a/package/luci/applications/luci-app-olsr/po/ja/olsr.po +++ /dev/null @@ -1,800 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-11-14 14:40+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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" - -msgid "Active MID announcements" -msgstr "アクティブなMID(Multi Interface Declaration) 通知" - -msgid "Active OLSR nodes" -msgstr "アクティブなOLSRノード" - -msgid "Active host net announcements" -msgstr "アクティブなホストネットワーク通知" - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Allow gateways with NAT" -msgstr "NATを使用するゲートウェイを選択可能にする" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "NATを介してパケットを送信するIPv4 ゲートウェイを選択可能にします" - -msgid "Announce uplink" -msgstr "通知するアップリンク" - -msgid "Announced network" -msgstr "通知ネットワーク" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "どちらの値もドット付き十進数の形式で入力してください。" - -msgid "Broadcast address" -msgstr "ブロードキャストアドレス" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "設定" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "ディスプレイ" - -msgid "Downlink" -msgstr "ダウンリンク" - -msgid "Download Config" -msgstr "設定ダウンロード" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "有効" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"スマートゲートウェイを有効にします。無効の場合、その他全てのスマートゲート" -"ウェイの設定値は無視されます。標準設定は\"無効\"です。" - -msgid "Enable this interface." -msgstr "このインターフェースを有効にします。" - -msgid "Enabled" -msgstr "有効" - -msgid "Expected retransmission count" -msgstr "再送数の期待値" - -msgid "FIB metric" -msgstr "FIB メトリック" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" -"FIB メトリックは、OLSRdが設定するホスト経路のメトリック値をコントロールしま" -"す。\"flat\"を選択した場合、メトリック値は常に\"2\"となります。この設定は、" -"Linuxカーネルが古い経路を消去するのに有効なため、好ましい設定です。\"correct" -"\"はホップ数をメトリック値として使用します。\"approx\"も同様にホップ数をメト" -"リック値として使用しますが、次ホップが変更した場合のみ更新を行います。標準設" -"定は\"flat\"です。" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "TCsのfisheyeメカニズムを使用します。標準設定は\"有効\"です。" - -msgid "Gateway" -msgstr "ゲートウェイ" - -msgid "General Settings" -msgstr "一般設定" - -msgid "General settings" -msgstr "一般設定" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "HNA 通知" - -msgid "HNA interval" -msgstr "HNA 送信間隔" - -msgid "HNA validity time" -msgstr "HNA 有効時間" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "HNA 通知" - -msgid "Hello" -msgstr "Hello" - -msgid "Hello interval" -msgstr "Hello 送信間隔" - -msgid "Hello validity time" -msgstr "Hello 有効時間" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "ホップ" - -msgid "Hostname" -msgstr "ホスト名" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" -"リンク検出に対するヒステリシスを設定します (ホップ数メトリックの場合のみ有" -"効)。ヒステリシスはリンク検出に対するロバスト性を向上させますが、隣接ノードの" -"登録が遅くなります。標準設定は\"有効\"です。" - -msgid "IP Addresses" -msgstr "IPアドレス" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" -"使用するIPプロトコルバージョンを指定します。6and4が選択された場合、各プロトコ" -"ルに対して1つづつOLSRdインスタンスが起動します。" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "IPv4 ブロードキャスト" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" -"送信するOLSRパケットのIPv4ブロードキャストアドレスです。便利な一例として、" -"255.255.255.255が挙げられます。標準設定は\"0.0.0.0\"であり、インターフェース" -"のブロードキャストIPを使用します。" - -msgid "IPv4 source" -msgstr "IPv4 送信元" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" -"送信するOLSRパケットのIPv4送信元アドレスです。標準設定は\"0.0.0.0\"であり、イ" -"ンターフェースのIPを使用します。" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "IPv6 マルチキャスト" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" -"IPv6 マルチキャストアドレスを設定します。標準はMANETルーターが使用するリンク" -"ローカル・マルチキャストである\"FF02::6D\"です。" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" -"IPv6 ネットワークアドレスは省略せずに入力してください。プレフィクスはCIDR形式" -"で入力してください。" - -msgid "IPv6 source" -msgstr "IPv6 送信元" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" -"IPv6送信元プレフィクスを設定します。OLSRdはインターフェースの中から、このプレ" -"フィクス値に一致するものを選択します。標準設定は\"0::/0\"であり、リンクローカ" -"ルIPでないインターフェースIPを使用します。" - -msgid "IPv6-Prefix of the uplink" -msgstr "アップリンクIPv6 プレフィクス" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" -"現在のゲートウェイへの経路が変わる場合、このゲートウェイのETX値は新しい値と比" -"較される前に、このパラメータの値と乗算されます。パラメータは0.1から1.0の間で" -"設定可能です。ただし、変更する場合、1.0に近い値を設定する事をお薦めします。" -"
    警告:このパラメータはetx_ffeth メトリックと同時に使用しないでく" -"ださい!
    標準設定は\"1.0\"です。" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" -"このノードがNATを使用してインターネットに接続する場合、有効にしてください。標" -"準設定は\"有効\"です。" - -msgid "Interface" -msgstr "インターフェース" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" -"インターフェースモードは、スイッチ上のイーサネットインターフェースに不必要な" -"パケットの送信を抑制するために使用します。有効なモードは\"mesh\"及び\"ether" -"\"です。標準設定は\"mesh\"です。" - -msgid "Interfaces" -msgstr "インターフェース" - -msgid "Interfaces Defaults" -msgstr "インターフェース デフォルト設定" - -msgid "Internet protocol" -msgstr "インターネットプロトコル" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" -"ネットワーク・インターフェースの設定が変更されたかをチェックするポーリング間" -"隔を秒単位で設定します。標準設定は\"2.5\"です。" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "OLSR ルーティング" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "LQ エイジング" - -msgid "LQ algorithm" -msgstr "LQ アルゴリズム" - -msgid "LQ fisheye" -msgstr "LQ fisheye" - -msgid "LQ level" -msgstr "LQ レベル" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "最終ホップ" - -msgid "Legend" -msgstr "凡例" - -msgid "Library" -msgstr "ライブラリ" - -msgid "Link Quality Settings" -msgstr "リンク品質 (LQ) 設定" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" -"リンク品質 (LQ) のエイジング要素の設定を行います (LQ レベルが2の場合のみ有" -"効)。etx_float及びetx_fpmの値の調整を行います。値が小さくなると、ETX値の変化" -"が遅くなります。設定可能な値は0.01-1.0です。" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" -"リンク品質 (LQ) アルゴリズムを設定します (LQ レベルが2の場合のみ有効)。
    etx_float: 浮動小数点演算+指数関数エイジング
    etx_fpm : " -"etx_floatと同様、ただし整数値演算を行います
    etx_ff : ETX " -"freifunk, ETXの変形版であり、ETX算出のためにHelloパケットだけでなく全てのOLSR" -"トラフィックを使用します
    etx_ffeth: etx_ffと互換性のない変形版で" -"す。イーサネットのリンクにETX 0.1を設定することができます
    標準設定は" -"\"etx_ff\"です。" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" -"リンク品質(LQ) レベルの設定では、ホップ数ベースまたはコストベース(ETX) のどち" -"らかにルーティング方法を切り替えます。
    0 = リンク品質を加味しない" -"
    2 = MPR集合及びルーティングにリンク品質を加味する
    標準設定" -"は\"2\"です。" - -msgid "LinkQuality Multiplicator" -msgstr "リンク品質 (LQ) マルチプリケーター" - -msgid "Links per node (average)" -msgstr "ノードあたりのリンク数 (平均)" - -msgid "Links total" -msgstr "リンク数の合計" - -msgid "Local interface IP" -msgstr "ローカルインターフェース IP" - -msgid "MID" -msgstr "MID" - -msgid "MID interval" -msgstr "MID 送信間隔" - -msgid "MID validity time" -msgstr "MID 有効時間" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "メインIP" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "メトリック" - -msgid "Mode" -msgstr "モード" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -#, fuzzy -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" -"経路のLQと設定値の乗算を行います。設定可能な値は0.01-1です。この設定はLQ レベ" -"ルが0以上の場合のみ設定可能です。
    例:192.168.0.1へのLQを半分にする場合: " -"192.168.0.1 0.5
    このインターフェースから全てのノードへ対して20%減らす場" -"合: default 0.8" - -msgid "NAT threshold" -msgstr "NAT しきい値" - -msgid "NLQ" -msgstr "NLQ" - -msgid "Neighbors" -msgstr "隣接ノード" - -msgid "Neighbour IP" -msgstr "隣接ノード IP" - -msgid "Neighbours" -msgstr "隣接ノード" - -msgid "Netmask" -msgstr "ネットマスク" - -msgid "Network" -msgstr "ネットワーク" - -msgid "Network address" -msgstr "ネットワークアドレス" - -msgid "Nic changes poll interval" -msgstr "NIC変更ポーリング間隔" - -msgid "Nodes" -msgstr "ノード" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "OLSR - 表示オプション" - -msgid "OLSR - HNA-Announcements" -msgstr "OLSR - HNA (Host and Network Association) 通知" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "OLSR - HNA (Host and Network Association) 通知" - -msgid "OLSR - Plugins" -msgstr "OLSR - プラグイン" - -msgid "OLSR Daemon" -msgstr "OLSR デーモン" - -msgid "OLSR Daemon - Interface" -msgstr "OLSR デーモン - インターフェース" - -msgid "OLSR connections" -msgstr "OLSR コネクション" - -msgid "OLSR gateway" -msgstr "OLSR ゲートウェイ" - -msgid "OLSR node" -msgstr "OLSR ノード" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "概要" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "現在アクティブなOLSR HNA 一覧" - -msgid "Overview of currently established OLSR connections" -msgstr "現在確立済のOLSR接続一覧" - -msgid "Overview of currently known OLSR nodes" -msgstr "現在既知のOLSRノードの一覧" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "現在のその他のOLSRノードへの経路一覧" - -msgid "Overview of interfaces where OLSR is running" -msgstr "OLSR稼働中のインターフェース一覧" - -msgid "Overview of known multiple interface announcements" -msgstr "通知されているマルチ・インターフェースの一覧" - -msgid "Overview of smart gateways in this network" -msgstr "ネットワーク内のスマート・ゲートウェイ一覧" - -msgid "Plugin configuration" -msgstr "プラグイン設定" - -msgid "Plugins" -msgstr "プラグイン" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "OLSRソケットのポーリング間隔を秒単位で設定します。標準は0.05です。" - -msgid "Pollrate" -msgstr "ポーリング間隔" - -msgid "Port" -msgstr "ポート" - -msgid "Prefix" -msgstr "プレフィックス" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "名前解決" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" -"ステータス・ページでホスト名の名前解決を行います。一般的には本機能を使用して" -"も問題が起こることはありませんが、もしあなたがパブリックIPや不安定なDNS設定を" -"使用している場合、ページの読み込み速度が極端に遅くなります。その場合はこの機" -"能を無効にしてください。" - -msgid "Routes" -msgstr "経路" - -msgid "Secondary OLSR interfaces" -msgstr "セカンダリOLSR インターフェース" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" -"ルーターのメインIP (発信元IP)を設定してください。このIPは、OLSRdの稼働中は決" -"して変更しません。標準設定は0.0.0.0であり、プライマリ・インターフェースのIPを" -"自動的に使用します。" - -#, fuzzy -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" -"ルーターのメインIP (発信元IP)を設定してください。このIPは、OLSRdの稼働中は決" -"して変更しません。標準設定は0.0.0.0であり、プライマリ・インターフェースのIPを" -"自動的に使用します。" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "SmartGW" - -msgid "SmartGW announcements" -msgstr "SmartGW 通知" - -msgid "SmartGateway is not configured on this system." -msgstr "スマート・ゲートウェイ(SmartGW)は設定されていません。" - -msgid "Source address" -msgstr "送信元アドレス" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" -"アップリンク速度をキロビット/秒で設定してください。1つ目のパラメータは上り、2" -"つ目のパラメータは下りのストリームです。標準は\"128 1024\"です。" - -msgid "Speed of the uplink" -msgstr "アップリンク速度" - -msgid "State" -msgstr "状態" - -msgid "Status" -msgstr "ステータス" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "隣接ノードから受信したパケットの受信成功率" - -msgid "Success rate of packages sent to the neighbour" -msgstr "隣接ノードへ送信したパケットの送信成功率" - -msgid "TC" -msgstr "TC" - -msgid "TC interval" -msgstr "TC 送信間隔" - -msgid "TC validity time" -msgstr "TC 有効時間" - -msgid "TOS value" -msgstr "TOS値" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" -"OLSRデーモンは、Optimized Link State Routingプロコトルを実装したサービスで" -"す。OLSRはどのようなネットワーク環境でもメッシュルーティングを実現します。" -"OLSRはアドホック・モードをサポートした全ての無線LANカードをサポートし、もちろ" -"ん全てのイーサネットデバイスでも使用可能です。olsrd.orgにアクセスして、ヘルプ及びドキュメントを参照してください。" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" -"willingnessを固定する場合に使用します。willingnessが設定されていない場合、" -"バッテリや電源のステータスによって動的に計算されます。標準は\"3\"です。" - -msgid "The interface OLSRd should serve." -msgstr "OLSRdが使用するインターフェースです。" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" -"OLSRが使用するポート番号です。通常、このポート番号はIANAがアサインした698番で" -"あるべきです。1-65535の間で設定可能です。" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "送信間隔及び有効時間" - -msgid "Topology" -msgstr "トポロジー" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" -"OLSRコントロールパケットにおける、IPヘッダのTOS (Type Of Service) 値を設定し" -"ます。標準設定は\"16\"です。" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "OLSRデーモンに接続できません!" - -msgid "Uplink" -msgstr "アップリンク" - -msgid "Uplink uses NAT" -msgstr "NATを使用して上位ネットワークに接続する" - -msgid "Use hysteresis" -msgstr "ヒステリシスを使用する" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "バージョン" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" -"警告: kmod-ipipがインストールされていません。スマートゲートウェイはkmod-ipip" -"なしでは動作しません。まず初めにインストールを行なってください。" - -msgid "Weight" -msgstr "Weight" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" -"ホスト間において複数の経路が存在する場合に、どちらのリンクを使用するかの決定" -"を行うために、インターフェースの重み付けを行います。通常、weightはインター" -"フェースの特性を基に、OLSRdが自動的に計算を行いますが、固定値を設定することも" -"可能です。OLSRdは最も低い値のリンクを選択します。
    注意:インター" -"フェースの重み付けは、LQ レベルが0の場合のみ、設定可能です。LQ レベルが0以外" -"の値の場合、インターフェース ETX値が代わりに使用されます。" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" -"どのアップリンクを他のメッシュノードへ通知するかを設定します。アップリンクは" -"ローカルのHNAである0.0.0.0/0、::ffff:0:0/96、2000::/3を探索することで検出しま" -"す。標準設定は、\"both\"です。" - -#, fuzzy -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" -"どのアップリンクを他のメッシュノードへ通知するかを設定します。アップリンクは" -"ローカルのHNAである0.0.0.0/0、::ffff:0:0/96、2000::/3を探索することで検出しま" -"す。標準設定は、\"both\"です。" - -msgid "Willingness" -msgstr "Willingness" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "デバイス" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "OLSRdが稼働中であること、\"txinfo\"プラグインがロードされていること、ポー" -#~ "ト2006番が設定されていること、\"127.0.0.1\"からの接続が許可されていること" -#~ "を確認してください。" diff --git a/package/luci/applications/luci-app-olsr/po/ms/olsr.po b/package/luci/applications/luci-app-olsr/po/ms/olsr.po deleted file mode 100644 index c0edce15c1..0000000000 --- a/package/luci/applications/luci-app-olsr/po/ms/olsr.po +++ /dev/null @@ -1,686 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-olsr/po/no/olsr.po b/package/luci/applications/luci-app-olsr/po/no/olsr.po deleted file mode 100644 index 38aa43bffb..0000000000 --- a/package/luci/applications/luci-app-olsr/po/no/olsr.po +++ /dev/null @@ -1,687 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-olsr/po/pl/olsr.po b/package/luci/applications/luci-app-olsr/po/pl/olsr.po deleted file mode 100644 index 64a99f6069..0000000000 --- a/package/luci/applications/luci-app-olsr/po/pl/olsr.po +++ /dev/null @@ -1,749 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-05 03:22+0200\n" -"Last-Translator: piosl \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Active MID announcements" -msgstr "Aktywne ogłoszenia MID" - -msgid "Active OLSR nodes" -msgstr "Aktywne węzły OLSR" - -msgid "Active host net announcements" -msgstr "Aktywne ogłoszenia hostnet" - -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -msgid "Allow gateways with NAT" -msgstr "Zezwól na bramy z NAT" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "Zezwól na wybieranie wychodzącej bramy IPv4 przez NAT" - -msgid "Announce uplink" -msgstr "Ogłaszaj uplink" - -msgid "Announced network" -msgstr "Ogłaszana sieć" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" -"Obie wartości muszą używać zapisu dziesiętnego z kropką przed częścią " -"dziesiętną." - -msgid "Broadcast address" -msgstr "Adres rozgłoszeniowy (broadcast)" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "Konfiguracja" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "Wyświetl" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Download Config" -msgstr "Ustawienia pobierania" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Włącz" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"Włącz SmartGateway. Jeśli wyłączone, wszystkie inne parametry SmartGateway " -"są ignorowane. Domyślnie jest wyłączone." - -msgid "Enable this interface." -msgstr "Włącz ten interfejs." - -msgid "Enabled" -msgstr "Włączone" - -msgid "Expected retransmission count" -msgstr "Oczekiwana wartość retransmisji" - -msgid "FIB metric" -msgstr "Metryka FIB" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -# skorzystałem z niemieckiego tłumaczenia -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" -"Mechanizm Fisheye dla TCs (zaznaczone oznacza \"włączone\"). Domyślnie jest " -"\"włączone\"" - -msgid "Gateway" -msgstr "Brama" - -msgid "General Settings" -msgstr "Ustawienia ogólne" - -msgid "General settings" -msgstr "Ustawienia ogólne" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "Ogłoszenia HNA" - -msgid "HNA interval" -msgstr "Interwał HNA" - -msgid "HNA validity time" -msgstr "Czas poprawności HNA" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "Ogłoszenia HNA" - -msgid "Hello" -msgstr "Hello" - -msgid "Hello interval" -msgstr "Interwał Hello" - -msgid "Hello validity time" -msgstr "Czas poprawności Hello" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "Skoki (hops)" - -msgid "Hostname" -msgstr "Nazwa hosta" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" -"Hosty w sieci OLSR mogą ogłaszać połączenia z zewnętrznymi sieciami poprzez " -"wiadomości HNA." - -#, fuzzy -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" -"Hosty w sieci OLSR mogą ogłaszać połączenia z zewnętrznymi sieciami poprzez " -"wiadomości HNA." - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "Adresy IP" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" -"Wersja protokołu IP. Jeśli jest wybrana 6and4 wtedy instancja olsrd jest " -"uruchomiona dla każdego protokołu." - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "Rozgłaszanie IPv4" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" -"Adres rozgłoszeniowy (broadcast) IPv4 dla wychodzących pakietów OLSR. " -"Przydatnym przykładem byłoby 255.255.255.255. Domyślna wartość to " -"\"0.0.0.0\" - jest wtedy używany adres rozgłoszeniowy interfejsu." - -msgid "IPv4 source" -msgstr "Źródło IPv4" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" -"Adres źródłowy IPv4 dla wychodzących pakietów. Domyślna wartość to " -"\"0.0.0.0\" - jest wtedy używany adres IP interfejsu." - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "Multicast IPv6" - -# Nie mam pojęcia, jak to lepiej przetłumaczyć, ale w moich tłumaczeniach kieruję się zasadą "release early, release often". -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" -"Adres multicast IPv6. Domyślna wartość to \"FF02::6D\", multicast lokalnego " -"routera." - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" -"Sieć IPv6 musi być podana w pełnej notacji, prefiks musi być w notacji CIDR." - -msgid "IPv6 source" -msgstr "Źródło IPv6" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" -"Prefiks źródła IPv6. OLSRd wybierze jeden z adresów IP interfejsów, który " -"będzie pasował do tego prefiksu. Domyślna wartość to \"0::/0\" - jest wtedy " -"używany adres IP interfejsu." - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "Czy węzeł korzysta z NAT do połączenia z Internetem. Domyślnie \"Tak\"" - -msgid "Interface" -msgstr "Interfejs" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" -"Tryb interfejsu jest używany, aby zapobiec niepotrzebnemu przekazywaniu " -"pakietów. Prawidłowe tryby to \"mesh\" i \"ether\". Domyślna wartość to " -"\"mesh\"." - -msgid "Interfaces" -msgstr "Interfejsy" - -# by Google :D po części -msgid "Interfaces Defaults" -msgstr "Standardy interfejsów" - -msgid "Internet protocol" -msgstr "Protokół internetowy" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "Znane ścieżki OLSR" - -msgid "LQ" -msgstr "LQ" - -msgid "LQ aging" -msgstr "Starzenie się LQ" - -msgid "LQ algorithm" -msgstr "Algorytm LQ" - -msgid "LQ fisheye" -msgstr "LQ-Fisheye" - -msgid "LQ level" -msgstr "Poziom LQ" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "Ostatni skok (hop)" - -msgid "Legend" -msgstr "Legenda" - -msgid "Library" -msgstr "Biblioteka" - -#, fuzzy -msgid "Link Quality Settings" -msgstr "Ustawienia jakości linków" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "Mnożnik LinkQuality" - -msgid "Links per node (average)" -msgstr "Linków na węzeł (średnio)" - -msgid "Links total" -msgstr "Linków w sumie" - -msgid "Local interface IP" -msgstr "IP lokalnego interfejsu" - -msgid "MID" -msgstr "MID" - -msgid "MID interval" -msgstr "Interwał MID" - -msgid "MID validity time" -msgstr "Czas poprawności MID" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "Główny IP" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -#, fuzzy -msgid "Metric" -msgstr "Miara" - -msgid "Mode" -msgstr "Tryb" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "Próg NAT" - -msgid "NLQ" -msgstr "NLQ" - -msgid "Neighbors" -msgstr "Sąsiedzi" - -msgid "Neighbour IP" -msgstr "IP sąsiadów" - -msgid "Neighbours" -msgstr "Sąsiedzi" - -msgid "Netmask" -msgstr "Maska sieciowa" - -msgid "Network" -msgstr "Sieć" - -msgid "Network address" -msgstr "Adres sieci" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "Węzły" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "OLSR - ogłoszenia HNA" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "OLSR - ogłoszenia HNA" - -msgid "OLSR - Plugins" -msgstr "OLSR - pluginy" - -msgid "OLSR Daemon" -msgstr "Demon OLSR" - -msgid "OLSR Daemon - Interface" -msgstr "Demon OLSR - interfejs" - -msgid "OLSR connections" -msgstr "Połączenia OLSR" - -msgid "OLSR gateway" -msgstr "Brama OLSR" - -msgid "OLSR node" -msgstr "Węzeł OLSR" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "Przegląd" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "Przegląd aktywnych ogłoszeń hostnet OLSR" - -msgid "Overview of currently established OLSR connections" -msgstr "Przegląd nawiązanych połączeń OLSR" - -msgid "Overview of currently known OLSR nodes" -msgstr "Przegląd znanych węzłów OLSR" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "Przegląd znanych tras do innych węzłów OLSR" - -msgid "Overview of interfaces where OLSR is running" -msgstr "Przegląd interfejsów z włączonym OLSR" - -msgid "Overview of known multiple interface announcements" -msgstr "Przegląd znanych wielointerfejsowych ogłoszeń" - -msgid "Overview of smart gateways in this network" -msgstr "Przegląd bram SmartGateway w tej sieci" - -msgid "Plugin configuration" -msgstr "Ustawienia pluginu" - -msgid "Plugins" -msgstr "Pluginy" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Prefix" -msgstr "Prefiks" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "Rozwiąż" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "Trasy (routes)" - -msgid "Secondary OLSR interfaces" -msgstr "Zapasowy interfejs OLSR" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "SmartGW" - -msgid "SmartGW announcements" -msgstr "Ogłoszenia SmartGW" - -msgid "SmartGateway is not configured on this system." -msgstr "SmartGateway jest nieskonfigurowane." - -msgid "Source address" -msgstr "Adres źródłowy" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "Stan" - -msgid "Status" -msgstr "Status" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -#, fuzzy -msgid "Success rate of packages received from the neighbour" -msgstr "Wartość poprawnie otrzymanych od sąsiada pakietów" - -#, fuzzy -msgid "Success rate of packages sent to the neighbour" -msgstr "Wartość poprawnie wysłanych pakietów do sąsiada" - -msgid "TC" -msgstr "TC" - -msgid "TC interval" -msgstr "Interwał TC" - -msgid "TC validity time" -msgstr "Czas poprawności TC" - -msgid "TOS value" -msgstr "Wartość TOS" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "Interfejs, który powinien oferować OLSRd." - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" -"Port używany przez OLSR. Zwykle powinien pozostać na przydzielonym przez " -"IANA porcie 698. Może mieć wartość pomiędzy 1 a 65535." - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "Topologia" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "Połączenie z demonem OLSR nieudane!" - -msgid "Uplink" -msgstr "Uplink" - -msgid "Uplink uses NAT" -msgstr "Uplink używa NAT" - -msgid "Use hysteresis" -msgstr "Używaj histerezy" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "Wersja" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" -"Uwaga: kmod-ipip nie jest zainstalowany. Bez kmod-ipip bramy SmartGateway " -"nie będą działać. Proszę go zainstalować." - -msgid "Weight" -msgstr "Waga" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" -"Kiedy istnieje wiele połączeń między hostami, waga interfejsów określa, " -"którego z nich użyć. Zwykle jest liczona automatycznie przez olsrd opartym " -"na charakterystyce interfejsu, ale tu możesz podać stałą wartość. Olsrd " -"wybierze połączenie z najniższą wartością.
    Uwaga: Waga " -"interfejsu jest używana tylko kiedy LinkQualityLevel jest ustawione na 0. " -"Dla dowolnej innej wartości LinkQualityLevel, zamiast tego jest używana " -"wartość ETX." - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "Gotowość" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "Urządzenie" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "Upewnij się że OLSRd jest uruchomione, \"txtinfo\" plugin jest " -#~ "załadowany, skonfigurowany na porcie 2006 i akceptuje połączenia z " -#~ "127.0.0.1 (localhost)" diff --git a/package/luci/applications/luci-app-olsr/po/pt-br/olsr.po b/package/luci/applications/luci-app-olsr/po/pt-br/olsr.po deleted file mode 100644 index 499176c16b..0000000000 --- a/package/luci/applications/luci-app-olsr/po/pt-br/olsr.po +++ /dev/null @@ -1,899 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2017-02-20 18:01-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "Active MID announcements" -msgstr "" -"Anúncios MID ativos" - -msgid "Active OLSR nodes" -msgstr "Nós OLSR ativos" - -msgid "Active host net announcements" -msgstr "Anúncios ativos de equipamentos" - -msgid "Advanced Settings" -msgstr "Configurações Avançadas" - -msgid "Allow gateways with NAT" -msgstr "Permitir rotadores com NAT" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "Permitir a seleção de rotador de saída IPv4 com NAT" - -msgid "Announce uplink" -msgstr "Anunciar enlace superior (uplink)" - -msgid "Announced network" -msgstr "Rede anunciada" - -# 20140621: edersg: tradução -msgid "Bad (ETX > 10)" -msgstr "Ruim (ETX > 10)" - -# 20140621: edersg: tradução -msgid "Bad (SNR < 5)" -msgstr "Ruim (SNR < 5)" - -msgid "Both values must use the dotted decimal notation." -msgstr "Ambos os valores devem usar a notação decimal com pontos." - -msgid "Broadcast address" -msgstr "Endereço de broadcast" - -# 20140621: edersg: tradução -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" -"Somente pode ser um endereço IPv4 ou IPv6 válidos ou um endereço 'padrão'" - -# 20140621: edersg: tradução -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" -"Somente pode ser um endereço IPv4 ou IPv6 válidos ou um endereço 'padrão'" - -msgid "Configuration" -msgstr "Configuração" - -# 20140621: edersg: tradução -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" -"Não foi possível obter nenhuma informação. Certifique-se que a extensão " -"jsoninfo está instalada e permite conexões a partir da sua máquina local " -"(localhost)." - -msgid "Display" -msgstr "Visão" - -msgid "Downlink" -msgstr "Enlace inferior (downlink)" - -# I didn't find in GUI this one -msgid "Download Config" -msgstr "Configuração do Recebimento de Dados " - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Habilitar" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"Habilita o SmartGateway. Se isto está desabilitado, então todos os demais " -"parâmetros do SmartGateway são ignorados. Padrão é \"não\"." - -msgid "Enable this interface." -msgstr "Habilita esta interface." - -msgid "Enabled" -msgstr "Habilitado" - -msgid "Expected retransmission count" -msgstr "Contagem esperada de retransmissões" - -msgid "FIB metric" -msgstr "Métrica FIB" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" -"A métrica FIB controla o valor da métrica dos conjuntos de equipamentos-" -"roteadores. \"flat\" significa que o valor da métrica é sempre 2. Este é o " -"valor preferido porque ele ajuda o roteamento do kernel do Linux limpar as " -"rotas antigas. \"correct\" usa a contagem de saltos como valor da métrica. " -"\"approx\" também usa a contagem de saltos como métrica, mas somente " -"atualiza a contagem de saltos se o próximo salto também mudar. O padrão é " -"\"flat\"." - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" -"Mecanismo Fisheye para TCs (marcado significa ligado). O padrão é \"ligado\"" - -msgid "Gateway" -msgstr "Roteador" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "General settings" -msgstr "Configurações gerais" - -# 20140621: edersg: tradução -msgid "Good (2 < ETX < 4)" -msgstr "Bom (2 < ETX < 4)" - -# 20140621: edersg: tradução -msgid "Good (30 > SNR > 20)" -msgstr "Bom (30 > SNR > 20)" - -# 20140621: edersg: tradução -msgid "Green" -msgstr "Verde" - -msgid "HNA" -msgstr "" -"HNA" - -msgid "HNA Announcements" -msgstr "" -"Anúncios do HNA" - -msgid "HNA interval" -msgstr "" -"Intervalo entre HNA" - -msgid "HNA validity time" -msgstr "" -"Validade do HNA" - -msgid "HNA6 Announcements" -msgstr "" -"Anúncios do HNA" - -msgid "Hello" -msgstr "Saudação (Hello)" - -msgid "Hello interval" -msgstr "Intervalo entre Saudações (Hello)" - -msgid "Hello validity time" -msgstr "Validade da Saudação (Hello)" - -# 20140621: edersg: tradução -msgid "Hide IPv4" -msgstr "Ocultar IPv4" - -# 20140621: edersg: tradução -msgid "Hide IPv6" -msgstr "Ocultar IPv6" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "Saltos" - -msgid "Hostname" -msgstr "Nome do equipamento" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" -"Equipamentos em uma rede roteada por OLSR podem anunciar conectividade para " -"redes externas usando mensagens HNA." - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" -"Equipamentos em uma rede roteada por OLSR podem anunciar conectividade para " -"redes externas usando mensagens HNA." - -# Hysteresis é Histerese que significa "retardo" -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" -"Retardo para a sensibilidade do enlace (somente para a métrica de contagem " -"de saltos), Retardo incrementa a robustez da sensibilidade do enlace mas " -"atrasa o registro dos vizinhos. O padrão é \"sim\"" - -msgid "IP Addresses" -msgstr "Endereços IP" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" -"Versão do IP para usar. Se 6and4 for selecionado, então uma instância é " -"disparada para cada protocolo." - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "Endereço IPv4 de Broadcast" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" -"Endereço IPv5 de broadcast para a saída de pacotes OLSR. Um exemplo útil " -"seria 255.255.255.255. O padrão é \"0.0.0.0\", que indica o uso do endereço " -"IP de broadcast da interface." - -msgid "IPv4 source" -msgstr "Origem IPv4" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" -"Endereço IPv4 de origem para a saída de pacotes OLSR. Um exemplo útil seria " -"255.255.255.255. O padrão é \"0.0.0.0\", que indica o uso do endereço IP da " -"interface." - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "Multicast IPv6" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" -"Endereço de multicast IPv6. O padrão é \"FF02::6D\", o multicast do enlace " -"local do roteador MANET." - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" -"A rede IPv6 deve ser informada em notação completa. O prefixo deve ser em " -"notação CIDR." - -msgid "IPv6 source" -msgstr "Origem IPv6" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" -"Prefixo de origem IPv6. O OLSRd escolherá um dos IPs da interface que casam " -"com o prefixo do parâmetro. O padrão é \"0::/0\", que faz com que seja usado " -"um endereço IP não local da interface." - -msgid "IPv6-Prefix of the uplink" -msgstr "Prefixo IPv6 do enlace superior (uplink)" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" -"Se a rota para o roteador está para ser alterada, o valor ETX deste roteador " -"é multiplicado com o este valor antes que ele seja comparado com o novo " -"valor. O parâmetro pode ser um valor entre 0.1 e 1.0, mas deve ser próximo a " -"1.0 se alterado..
    CUIDADO: Este parâmetro não deve ser usado em " -"conjunto com a métrica etx_ffeth!
    O padrão é \"1.0\"." - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "Se este Nó usa NAT para conexões com a internet. Padrão é \"sim\"." - -msgid "Interface" -msgstr "Interface" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" -"Modo da Interface é usado para evitar o encaminhamento desnecessário de " -"pacotes na interface ethernet em ponte. Os modos válidos são \"mesh\" e " -"\"ether\". O padrão é \"mesh\"." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interfaces Defaults" -msgstr "Padrões da Interface" - -msgid "Internet protocol" -msgstr "Protocolo internet" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" -"Intervalo para consultar as interfaces de rede por mudanças nas " -"configurações (em segundos). O padrão é \"2.5\"." - -# 20140621: edersg: tradução -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "Valor inválido para LQMult-Value. Deve estar entre 0.01 e 1.0." - -# 20140621: edersg: tradução -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" -"Valor inválido para LQMult-Value. Você deve utilizar aqui um número decimal " -"entre 0.01 e 1.0." - -msgid "Known OLSR routes" -msgstr "Rotas OLSR conhecidas" - -msgid "LQ" -msgstr "LQ" - -msgid "LQ aging" -msgstr "" -"Envelhecimento do LQ" - -msgid "LQ algorithm" -msgstr "Algoritmo LQ" - -msgid "LQ fisheye" -msgstr "Fisheye LQ" - -msgid "LQ level" -msgstr "Nível LQ" - -# 20140621: edersg: tradução -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" -"LQMult exige dois valores (endereço IP ou 'padrão' e multiplicador) " -"separados por espaços." - -msgid "Last hop" -msgstr "Último salto" - -msgid "Legend" -msgstr "Legenda" - -msgid "Library" -msgstr "Biblioteca" - -msgid "Link Quality Settings" -msgstr "Configurações da Qualidade do Enlace" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" -"O fator de envelhecimento da qualidade do enlace (somente para LQ nível 2). Parâmtro de ajuste " -"para etx_float e etx_fpm, Valores menores significam mudanças mais lentas do " -"valor ETX. (permitido valores entre 0.01 e 1.0)" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" -"Algoritmo de qualidade do enlace (somente para LQ nível 2).
    etx_float: ETX ponto " -"flutuante com o envelhecimento exponencial
    etx_fpm : o mesmo que " -"etx_float, mas com aritmética inteira
    etx_ff : ETX freifunk, uma " -"variante do etx que usa todo tráfego OLSE (ao invés de somente as saudações) " -"para o cálculo do ETX
    etx_ffeth: variação incompatível do etx_ff " -"que permite enlaces ethernet com ETX 0.1.
    O padrão é \"etx_ff\"" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" -"O nível de qualidade do enlace escolhe entre o roteamento por contagem de " -"saltos e o roteamento baseado em custos (na sua maioria, ETX).
    0 = não use a qualidade do enlace
    2 = use a qualidade do enlace " -"para a seleção do MPR e roteamento
    O padrão é \"2\"" - -msgid "LinkQuality Multiplicator" -msgstr "Multiplicador da Qualidade do Enlace" - -msgid "Links per node (average)" -msgstr "Enlaces por nó (média)" - -msgid "Links total" -msgstr "Total de enlaces" - -msgid "Local interface IP" -msgstr "Endereço IP da interface local" - -msgid "MID" -msgstr "" -"MID" - -msgid "MID interval" -msgstr "" -"Intervalo do MID" - -msgid "MID validity time" -msgstr "" -"Validade do MID" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "IP Principal" - -# 20140621: edersg: tradução -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" -"Certifique-se de que a extensão \"jsoninfo\" esteja carregada e o serviço " -"OLSRd esteja rodando e configurado na porta 9090 aceitando conexões a partir " -"de \"127.0.0.1\"." - -msgid "Metric" -msgstr "Métrica" - -msgid "Mode" -msgstr "Modo" - -# 20140621: edersg: tradução -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" -"Múltiplas rotas com o fator configurado aqui. Os valores permitidos estão " -"entre 0.01 e 1.0. Ele somente é utilizado quando o nível-LQ é maior que 0. " -"Exemplos:
    reduzir LQ para 192.168.0.1 pela metade: 192.168.0.1 0.5
    reduzir LQ para todos os nós nesta interface em 20%: padrão 0.8" - -# 20140621: edersg: tradução -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" -"Múltiplas rotas com o fator configurado aqui. Os valores permitidos estão " -"entre 0.01 e 1.0. Ele somente é utilizado quando o nível-LQ é maior que 0. " -"Exemplos:
    reduzir LQ para 192.168.0.1 pela metade: 192.168.0.1 0.5
    reduzir LQ para todos os nós nesta interface em 20%: padrão 0.8" - -msgid "NAT threshold" -msgstr "Limiar do NAT" - -msgid "NLQ" -msgstr "" -"NLQ" - -msgid "Neighbors" -msgstr "Vizinhos" - -msgid "Neighbour IP" -msgstr "Endereço IP do Vizinho" - -msgid "Neighbours" -msgstr "Vizinhos" - -msgid "Netmask" -msgstr "Máscara de rede" - -msgid "Network" -msgstr "Rede" - -msgid "Network address" -msgstr "Endereço de rede" - -msgid "Nic changes poll interval" -msgstr "Intervalo de consulta de mudanças na placa de rede" - -msgid "Nodes" -msgstr "Nós" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "OLSR - Opções de Visão" - -msgid "OLSR - HNA-Announcements" -msgstr "" -"OLSR - Anúncios HNA" - -msgid "OLSR - HNA6-Announcements" -msgstr "" -"OLSR - Anúncios HNA" - -msgid "OLSR - Plugins" -msgstr "OLSR - Plugins" - -msgid "OLSR Daemon" -msgstr "Servidor OLSR" - -msgid "OLSR Daemon - Interface" -msgstr "Servidor OLSR - Interface" - -msgid "OLSR connections" -msgstr "Conexões do OLSR" - -msgid "OLSR gateway" -msgstr "Roteador OLSR" - -msgid "OLSR node" -msgstr "Nó OLSR" - -# 20140621: edersg: tradução -msgid "Orange" -msgstr "Laranja" - -msgid "Overview" -msgstr "Visão Geral" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "Visão geral os anúncios de rede de equipamentos OLSR atualmente ativos" - -msgid "Overview of currently established OLSR connections" -msgstr "Visão geral das conexões OLSR atualmente estabelecidas" - -msgid "Overview of currently known OLSR nodes" -msgstr "Visão geral dos nós OLSR conhecidos atualmente" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "Visão geral das rotas conhecidas atualmente para outros nós OLSR" - -msgid "Overview of interfaces where OLSR is running" -msgstr "Visão geral das interfaces onde o OLSR está rodando" - -msgid "Overview of known multiple interface announcements" -msgstr "Visão geral de anúncios de nós com múltiplas interfaces conhecidas" - -msgid "Overview of smart gateways in this network" -msgstr "Visão geral dos SmartGateways na rede" - -msgid "Plugin configuration" -msgstr "Configuração do Plugin" - -msgid "Plugins" -msgstr "Plugins" - -# Que socket? -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "Taxa de consulta por conexões OLSR, em segundos. Padrão é 0.05." - -msgid "Pollrate" -msgstr "Taxa de consulta" - -msgid "Port" -msgstr "Porta" - -msgid "Prefix" -msgstr "Prefixo" - -# 20140621: edersg: tradução -msgid "Red" -msgstr "Vermelho" - -msgid "Resolve" -msgstr "Resolver" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" -"Resolve os nomes dos equipamentos na página de estado. É geralmente seguro " -"permitir isto, mas se você usa IPs públicos e tem uma configuração DNS " -"instável, então estas páginas podem carregar de forma extremamente lenta. " -"Neste caso, desabilite isto aqui." - -msgid "Routes" -msgstr "Rotas" - -msgid "Secondary OLSR interfaces" -msgstr "Interfaces OLSR secundárias" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" -"Define o IP principal (ip originador) do seu roteador. Este IP nunca muda " -"durante o funcionamento do olsrd. O padrão é 0.0.0.0, que faz com que o " -"endereço da primeira interface seja usado." - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" -"Define o IP principal (ip originador) do seu roteador. Este IP nunca muda " -"durante o funcionamento do olsrd. O padrão é 0.0.0.0, que faz com que o " -"endereço da primeira interface seja usado." - -# 20140621: edersg: tradução -msgid "Show IPv4" -msgstr "Exibir IPv4" - -# 20140621: edersg: tradução -msgid "Show IPv6" -msgstr "Exibir IPv6" - -# 20140621: edersg: tradução -msgid "Signal Noise Ratio in dB" -msgstr "Relação do ruído do sinal em dB" - -msgid "SmartGW" -msgstr "SmartGW" - -msgid "SmartGW announcements" -msgstr "Anúncios do SmartGW" - -msgid "SmartGateway is not configured on this system." -msgstr "SmartGateway não está configurado no seu sistema." - -msgid "Source address" -msgstr "Endereço de origem" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" -"Especifica a velocidade do enlace superior (uplink) em kilobits/s. O " -"primeiro parâmetro é a taxa de envio (upstream) e o segundo parâmetro é a " -"taxa de recebimento (downstream). O padrão é \"128 1024\"." - -msgid "Speed of the uplink" -msgstr "Velocidade do enlace superior" - -msgid "State" -msgstr "Estado" - -msgid "Status" -msgstr "Estado" - -# 20140621: edersg: tradução -msgid "Still usable (20 > SNR > 5)" -msgstr "Ainda utilizável (20 > SNR > 5)" - -# 20140621: edersg: tradução -msgid "Still usable (4 < ETX < 10)" -msgstr "Ainda utilizável (4 > ETX > 10)" - -msgid "Success rate of packages received from the neighbour" -msgstr "Taxa de sucesso de pacotes recebidos de vizinhos" - -msgid "Success rate of packages sent to the neighbour" -msgstr "Taxa de sucesso de pacotes enviados a vizinhos" - -msgid "TC" -msgstr "TC" - -msgid "TC interval" -msgstr "" -"Intervalo do TC" - -msgid "TC validity time" -msgstr "" -"Validade do TC" - -msgid "TOS value" -msgstr "Valor do TOS" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" -"O servidor OLSR é uma implementação do protoloco de Roteamento de Estado de " -"Enlace Otimizado. Como tal, ele permite o roteamento em malha para qualquer " -"equipamento de rede. Ele roda sobre qualquer placa de rede sem fio que " -"suporte o modo ad-hoc e, é claro, em qualquer dispositivo ethernet. Visite " -"olsrd.org para ajuda e documentação." - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" -"A disponibilidade fixa para ser usada. Se a disponibilidade não for " -"definida, ela será dinamicamente calculada baseada no estado da energia/" -"bateria, O padrão é \"3\"." - -msgid "The interface OLSRd should serve." -msgstr "A interface onde o OLSRd deve servir." - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" -"A porta que o OLSR usa. Isto geralmente deve ficar na porta 698, designada " -"pela IANA. Pode ter qualquer valor entre 1 e 65535." - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" -"Isto pode ser usado para sinalizar o prefixo IPv6 externo do enlace superior " -"(uplink) para os clientes. Isto pode permitir que um cliente mude o endereço " -"IPv6 local para usar o roteador IPv6 sem qualquer tradução de endereços. O " -"tamanho máximo do prefixo é 64 bits. O padrão é \"::/0\" (nenhum prefixo)." - -msgid "Timing and Validity" -msgstr "Temporização e Validade" - -msgid "Topology" -msgstr "Topologia" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" -"Valor do tipo de serviço para o cabeçalho IP para controle de tráfego. O " -"padrao é \"16\"." - -msgid "Unable to connect to the OLSR daemon!" -msgstr "Não foi possível conectar ao servidor OLSR!" - -msgid "Uplink" -msgstr "Enlace superior (uplink)" - -msgid "Uplink uses NAT" -msgstr "Enlace superior (uplink) usa NAT" - -msgid "Use hysteresis" -msgstr "Usar retardo" - -# 20140621: edersg: tradução -msgid "Validity Time" -msgstr "Tempo de validade" - -msgid "Version" -msgstr "Versão" - -# 20140621: edersg: tradução -msgid "Very good (ETX < 2)" -msgstr "Muito bom (ETX < 2)" - -# 20140621: edersg: tradução -msgid "Very good (SNR > 30)" -msgstr "Muito bom (SNR > 30)" - -msgid "WLAN" -msgstr "Rede sem fio (WLAN)" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" -"Atenção: o kmod-ipip não está instalado. Sem o kmod-ipip, o SmartGateway não " -"irá funcionar. Por favor, instale-o." - -msgid "Weight" -msgstr "Peso" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" -"Quando múltiplos enlaces existirem entre dois equipamentos, o peso da " -"interface é usado para determinar o enlace usado. Normalmente, o peso é " -"automaticamente calculado pelo olsrd baseado nas características da " -"interface, mas aqui você pode especificar um valor fixo. Olsrd escolherá " -"enlaces com o valor mais baixo.
    Nota: O peso da interface é " -"usado somente quando o nível de qualidade do enlace está definido como 0. " -"Para qualquer outro valor do nível de qualidade do enlace, o valor ETX da " -"interface é usado." - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" -"Que tipo de enlace superior (uplink) é exportado para outros nós da rede em " -"malha. Um enlace superior é detectado buscando por uma HNA " -"local de 0.0.0.0/0, ::ffff:0:0/96 ou 2000::/3. O padrão é \"ambos\"." - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" -"Que tipo de enlace superior (uplink) é exportado para outros nós da rede em " -"malha. Um enlace superior é detectado buscando por uma HNA " -"local de 0.0.0.0/0, ::ffff:0:0/96 ou 2000::/3. O padrão é \"ambos\"." - -msgid "Willingness" -msgstr "Disponibilidade" - -msgid "Yellow" -msgstr "Amarelo" - -msgid "no" -msgstr "Não" - -msgid "yes" -msgstr "Sim" - -#~ msgid "Device" -#~ msgstr "Dispositivo" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "Certifique-se que o processo OLSRd está em execução, que o plugin " -#~ "\"txtinfo\" está carregado e configurado para a porta 2006 e que aceita " -#~ "conexões a partir de \"127.0.0.1\"." - -#~ msgid "" -#~ "Multiply routes with the factor given here. Allowed values are between " -#~ "0.01 and 1. It is only used when LQ-Level is greater than 0. Examples:" -#~ "
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to " -#~ "all nodes on this interface by 20%: default 0.8" -#~ msgstr "" -#~ "Multiplica rotas com o fator informado. Os valores válidos são entre 0.01 " -#~ "e 1. Somente é usado quando o nível LQ é maior que 0. Exemplos:
    reduzir o LQ para 192.168.0.1 pela " -#~ "metade: 192.168.0.1 0.5
    reduzir o LQ de todos os nós desta interface para 20%: " -#~ "Padrão 0.8" diff --git a/package/luci/applications/luci-app-olsr/po/pt/olsr.po b/package/luci/applications/luci-app-olsr/po/pt/olsr.po deleted file mode 100644 index 4e04248f5b..0000000000 --- a/package/luci/applications/luci-app-olsr/po/pt/olsr.po +++ /dev/null @@ -1,715 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-06-03 16:17+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Active MID announcements" -msgstr "Anuncios MID ativos" - -msgid "Active OLSR nodes" -msgstr "Nós OLSR ativos" - -#, fuzzy -msgid "Active host net announcements" -msgstr "Anuncios activos de hosts" - -msgid "Advanced Settings" -msgstr "Definições Avançadas" - -msgid "Allow gateways with NAT" -msgstr "Permitir gateways com NAT" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "Permitir a selecção de uma gateway IPv4 para saída com NAT" - -msgid "Announce uplink" -msgstr "Anunciar uplink" - -msgid "Announced network" -msgstr "Rede anunciada" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "Os valores tem de usar a dotação decimal." - -msgid "Broadcast address" -msgstr "Endereço de broadcast" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "Configuração" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "Mostrar" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "Descarregar Configuração" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Ativar" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"Ativar SmartGateway. Se estiver desativado, então todos os outros parâmetros " -"SmartGateway são ignorados. Por defeito é \"não\"" - -msgid "Enable this interface." -msgstr "Ativar esta interface." - -msgid "Enabled" -msgstr "Ativado" - -msgid "Expected retransmission count" -msgstr "Contagem de retransmissões esperada" - -msgid "FIB metric" -msgstr "métrica FIB" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "Definições gerais" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "Intervalo entre HNA" - -msgid "HNA validity time" -msgstr "Validade de HNA" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "OLSR - Anuncios HNA4" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "Intervalo entre Hello" - -msgid "Hello validity time" -msgstr "Validade de Hello" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "Endereços IP" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "Endereço IPv4 de Broadcast" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "Multicast IPv6" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" -"A rede IPv6 deve ser fornecido em dotação completa, o prefixo deve estar na " -"notação CIDR." - -msgid "IPv6 source" -msgstr "Origem IPv6" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "Interface" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" -"O Modo de Interface é usado para para prevenir encaminhamentos " -"desnecessários de pacotes em interfaces switched ethernet. Os Modos válidos " -"são \"mesh\" e \"ether\". Por defeito é \"mesh\"." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interfaces Defaults" -msgstr "Predefinições das Interfaces" - -msgid "Internet protocol" -msgstr "Protocolo de Internet" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "Rotas OLSR conhecidas" - -msgid "LQ" -msgstr "LQ" - -msgid "LQ aging" -msgstr "Envelhecimento LQ" - -msgid "LQ algorithm" -msgstr "Algoritmo LQ" - -#, fuzzy -msgid "LQ fisheye" -msgstr "LQ Fisheye" - -msgid "LQ level" -msgstr "Nível LQ" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "Ultimo salto" - -msgid "Legend" -msgstr "Legenda" - -msgid "Library" -msgstr "Biblioteca" - -msgid "Link Quality Settings" -msgstr "Definições de Qualidade do Link" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "Endereço IP do interface local" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "Intervalo de MID" - -msgid "MID validity time" -msgstr "Validade de MID" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "IP Principal" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "Métrica" - -msgid "Mode" -msgstr "Modo" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "Vizinhos" - -msgid "Neighbour IP" -msgstr "Endereço IP do Vizinho" - -msgid "Neighbours" -msgstr "Vizinhos" - -msgid "Netmask" -msgstr "Máscara de rede" - -msgid "Network" -msgstr "Rede" - -msgid "Network address" -msgstr "Endereço de rede" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "Nós" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "OLSR - Anuncios HNA4" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "OLSR - Anuncios HNA4" - -msgid "OLSR - Plugins" -msgstr "OLSR - Plugins" - -msgid "OLSR Daemon" -msgstr "Servidor OLSR" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "OLSR - Ligações" - -msgid "OLSR gateway" -msgstr "Gateway OLSR" - -msgid "OLSR node" -msgstr "Nó OLSR" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -#, fuzzy -msgid "Overview of currently active OLSR host net announcements" -msgstr "Resumo de anuncios activos de hosts" - -msgid "Overview of currently established OLSR connections" -msgstr "Resumo das ligações OLSR actualmente estabelecidas" - -msgid "Overview of currently known OLSR nodes" -msgstr "Resumo dos nós OLSR conhecidos" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "Resumo das rotas conhecidas para outros nós OLSR" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "Resumo de anuncios de nós com multiplos interfaces activos" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "Configuração de Plugin" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "Pollrate" - -msgid "Port" -msgstr "Porta" - -msgid "Prefix" -msgstr "Prefixo" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "Rotas" - -msgid "Secondary OLSR interfaces" -msgstr "Interfaces OLSR secundários" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "Endereço de origem" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "Velocidade do uplink" - -msgid "State" -msgstr "Estado" - -msgid "Status" -msgstr "Estado" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "Intervalo de TC" - -msgid "TC validity time" -msgstr "Validade de TC" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "Topologia" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "Não foi possivel ligar ao servidor OLSR!" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "O uplink usa NAT" - -msgid "Use hysteresis" -msgstr "Usar histerese" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "Versão" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "Disponibilidade" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "Dispositivo" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "Certifique-se que o processo olsrd está em execução, que o plugin " -#~ "\"txtinfo\" está carregado e configurado para a porta 2006 e que aceita " -#~ "ligações a partir de \"127.0.0.1\"." diff --git a/package/luci/applications/luci-app-olsr/po/ro/olsr.po b/package/luci/applications/luci-app-olsr/po/ro/olsr.po deleted file mode 100644 index 257fab3733..0000000000 --- a/package/luci/applications/luci-app-olsr/po/ro/olsr.po +++ /dev/null @@ -1,691 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-28 19:40+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "Setări avansate" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "Configuraţie" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "Activare" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "Activează această interfaţă" - -msgid "Enabled" -msgstr "Activat" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "Setări generale" - -msgid "General settings" -msgstr "Setări generale" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "Verde" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "Ascunde IPv4" - -msgid "Hide IPv6" -msgstr "Ascunde IPv6" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "Nume domeniu" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "Adrese IP" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "Interfaţă" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "Interfeţe" - -msgid "Interfaces Defaults" -msgstr "Interfeţe implicite" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "Algoritm LQ" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "Nivel LQ" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "Legendă" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "Vecini" - -msgid "Neighbour IP" -msgstr "IP vecin" - -msgid "Neighbours" -msgstr "Vecini" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "Pluginuri" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "Arată IPv4" - -msgid "Show IPv6" -msgstr "Arată IPv6" - -msgid "Signal Noise Ratio in dB" -msgstr "Raport zgomot semnal în dB" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "Stare" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "Versiune" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "Greutate" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "Galben" - -msgid "no" -msgstr "nu" - -msgid "yes" -msgstr "da" diff --git a/package/luci/applications/luci-app-olsr/po/ru/olsr.po b/package/luci/applications/luci-app-olsr/po/ru/olsr.po deleted file mode 100644 index 51267e084c..0000000000 --- a/package/luci/applications/luci-app-olsr/po/ru/olsr.po +++ /dev/null @@ -1,812 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: olsr\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-09-06 09:58+0200\n" -"Last-Translator: datasheet \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Active MID announcements" -msgstr "Активные объявления MID" - -msgid "Active OLSR nodes" -msgstr "Активные OLSR-узлы" - -msgid "Active host net announcements" -msgstr "Активные объявления хост-сети (HNA)" - -msgid "Advanced Settings" -msgstr "Расширенные настройки" - -msgid "Allow gateways with NAT" -msgstr "Разрешить шлюзы с NAT" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "Разрешить выбор исходящего IPv4-шлюза с NAT" - -msgid "Announce uplink" -msgstr "Объявлять восходящий канал" - -msgid "Announced network" -msgstr "Объявленная сеть" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" -"Оба значения должны быть в десятичном представлении с разделительными " -"точками." - -msgid "Broadcast address" -msgstr "Широковещательный адрес" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "Конфигурация" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "Показать" - -msgid "Downlink" -msgstr "Нисходящий канал" - -msgid "Download Config" -msgstr "Загрузить конфигурацию" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Включить" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"Включить SmartGateway. Если выключено, все остальные параметры SmartGateway " -"игнорируются. По умолчанию \"нет\"." - -msgid "Enable this interface." -msgstr "Использовать этот интерфейс." - -msgid "Enabled" -msgstr "Включено" - -msgid "Expected retransmission count" -msgstr "Ожидаемое количество повторных передач" - -msgid "FIB metric" -msgstr "Метрика FIB" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" -"Метрика FIB управляет значением метрики хост-маршрутов, которые " -"устанавливает OLSRd. При \"flat\" значение метрики всегда равно 2. Это " -"предпочтительное значение, помогающее ядру Linux очищать устаревшие " -"маршруты. При \"correct\" используется счётчик прыжков в качестве значения " -"метрики. \"approx\" также испозьзует счётчик прыжков, но его обновление " -"происходит только при изменении следующего прыжка. По умолчанию используется " -"\"flat\"." - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "Механизм рыбьего глаза для TC. По умолчанию \"включено\"" - -msgid "Gateway" -msgstr "Шлюз" - -msgid "General Settings" -msgstr "Общие настройки" - -msgid "General settings" -msgstr "Общие настройки" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "Объявления HNA" - -msgid "HNA interval" -msgstr "HNA интервал" - -msgid "HNA validity time" -msgstr "Время действия HNA" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "Объявления HNA" - -msgid "Hello" -msgstr "Приветственное сообщение" - -msgid "Hello interval" -msgstr "Интервал приветственных сообщений" - -msgid "Hello validity time" -msgstr "Время действия приветственного сообщения" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "Прыжки" - -msgid "Hostname" -msgstr "Имя хоста" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" -"Хосты в маршрутизируемой сети OLSR могут извещать о подключении к внешним " -"сетям с помощью сообщений HNA." - -#, fuzzy -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" -"Хосты в маршрутизируемой сети OLSR могут извещать о подключении к внешним " -"сетям с помощью сообщений HNA." - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" -"Гистерезис для автоопределения канала (только для метрики кол-ва прыжков). " -"Гистерезис увеличивает надёжность канала, но вносит задержку в регистрацию " -"соседних устройств. По умолчанию \"да\"" - -msgid "IP Addresses" -msgstr "IP-адреса" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" -"Версия IP, которая будет использована. Если выбрано 6and4, olsrd будет " -"запущен для каждой версии." - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "Широковещательный IPv4" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" -"Широковещательный IPv4-адрес для исходящих OLSR-пакетов, например, " -"255.255.255.255. Адрес по умолчанию \"0.0.0.0\" ведёт к использованию " -"широковещательного IP-адреса интерфейса." - -msgid "IPv4 source" -msgstr "IPv4-источник" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" -"IPv4-адрес отправителя для исходящих OLSR-пакетов. Адрес по умолчанию " -"\"0.0.0.0\" включает использование IP-адреса интерфейса." - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "Групповой IPv6" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "Групповой IPv6-адрес. По умолчанию \"FF02::6D\"." - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" -"IPv6-сеть должна быть указана в полной нотации, префикс должен быть в " -"нотации CIDR." - -msgid "IPv6 source" -msgstr "IPv6-источник" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" -"Префикс источника IPv6. OLSRd выберет один из IP-адресов интерфейса, " -"соответствующий данному префиксу. По умолчанию \"0::/0\" включает " -"использование нелокального IP-адреса интерфейса." - -msgid "IPv6-Prefix of the uplink" -msgstr "IPv6-префикс восходящего канала" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" -"Если маршрут к текущему шлюзу должен быть изменён, значение ETX данного " -"шлюза умножается на указанное число перед сравнением с новым значением. " -"Значение данного параметра может быть в пределах от 0.1 до 1.0, но при " -"изменении должно быть ближе к 1.0.
    ВНИМАНИЕ:Не используйте " -"данный параметр вместе с метрикой etx_ffeth!
    По умолчанию \"1.0\"." - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" -"Использует ли данный узел NAT для подключения к интернету. По умолчанию \"да" -"\"." - -msgid "Interface" -msgstr "Интерфейс" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" -"Режим интерфейса используется для предотвращения ненужных перенаправлений на " -"коммутируемых Ethernet-интерфейсах. Возможные значения режима: \"mesh\" и " -"\"ether\". По умолчанию \"mesh\"." - -msgid "Interfaces" -msgstr "Интерфейсы" - -msgid "Interfaces Defaults" -msgstr "Значения по умолчанию для интерфейсов" - -msgid "Internet protocol" -msgstr "Интернет-протокол" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" -"Интервал опроса сетвых интерфейсов на наличие изменений в конфигурации " -"(сек.). По умолчанию, \"2.5\"." - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "Известные OLSR-маршруты" - -msgid "LQ" -msgstr "LQ" - -msgid "LQ aging" -msgstr "Старение LQ" - -msgid "LQ algorithm" -msgstr "Алгоритм LQ" - -#, fuzzy -msgid "LQ fisheye" -msgstr "Рыбий глаз LQ" - -msgid "LQ level" -msgstr "Уровень LQ" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "Последний прыжок" - -msgid "Legend" -msgstr "Легенда" - -msgid "Library" -msgstr "Библиотека" - -msgid "Link Quality Settings" -msgstr "Настройки качества соединения (LQ)" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" -"Коэффициент старения LQ (только для уровня LQ, равного 2). Параметр " -"подстройки для etx_float и etx_fpm. Чем меньше значение, тем меньше " -"изменения значения ETX. Диапазон допустимых значений от 0.01 до 1.0." - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" -"Алгоритм LQ (только для уровня LQ, равного 2).
    etx_float: ETX с " -"плавающей точкой и экспоненциальным старением
    etx_fpm : тоже что " -"и etx_float, но с целочисленной арифметикой
    etx_ff : ETX " -"freifunk, использует весь трафик OLSR для расчета ETX
    etx_ffeth: " -"несовместимый вариант etx_ff, разрешающий Ethernet-соединения с ETX 0.1.
    По умолчанию \"etx_ff\"" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" -"Переключатель уровня LQ между маршрутизацией по кол-во прыжков и ETX.
    0 = не использовать LQ
    2 = использовать LQ для выбора " -"MPR и маршрутизации
    По умолчанию \"2\"" - -msgid "LinkQuality Multiplicator" -msgstr "Множитель LQ" - -msgid "Links per node (average)" -msgstr "Кол-во соединений на узел (среднее)" - -msgid "Links total" -msgstr "Общее кол-во соединений" - -msgid "Local interface IP" -msgstr "IP-адрес локального интерфейса" - -msgid "MID" -msgstr "MID" - -msgid "MID interval" -msgstr "Интервал MID" - -msgid "MID validity time" -msgstr "Время действия MID" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "Основной IP-адрес" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "Метрика" - -msgid "Mode" -msgstr "Режим" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -#, fuzzy -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" -"Умножить маршруты на указанный коэффициент в пределах от 0.01 до 1. Данный " -"коэффициент используется только в случае, если LQ уровень > 0. Примеры:
    уменьшить LQ для 192.168.0.1 на половину: 192.168.0.1 0.5
    уменьшить LQ " -"для всех узлов на данном интерфейсе на 20%: default 0.8" - -msgid "NAT threshold" -msgstr "Порог NAT" - -msgid "NLQ" -msgstr "NLQ" - -msgid "Neighbors" -msgstr "Соседние узлы" - -msgid "Neighbour IP" -msgstr "Соседние IP-адреса" - -msgid "Neighbours" -msgstr "Соседние узлы" - -msgid "Netmask" -msgstr "Маска сети" - -msgid "Network" -msgstr "Сеть" - -msgid "Network address" -msgstr "Сетевой адрес" - -msgid "Nic changes poll interval" -msgstr "Интервал опроса изменений NIC" - -msgid "Nodes" -msgstr "Узлы" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "OLSR - Настройки отображения" - -msgid "OLSR - HNA-Announcements" -msgstr "OLSR - HNA-объявления" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "OLSR - HNA-объявления" - -msgid "OLSR - Plugins" -msgstr "OLSR - Модули" - -msgid "OLSR Daemon" -msgstr "Сервис OLSR" - -msgid "OLSR Daemon - Interface" -msgstr "Сервис OLSR - Интерфейс" - -msgid "OLSR connections" -msgstr "OLSR-соединения" - -msgid "OLSR gateway" -msgstr "OLSR-шлюз" - -msgid "OLSR node" -msgstr "OLSR-узел" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "Обзор" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "Обзор текущих активных OLSR-объявлений HNA" - -msgid "Overview of currently established OLSR connections" -msgstr "Обзор установленных OLSR-соединений" - -msgid "Overview of currently known OLSR nodes" -msgstr "Обзор текущих известных OLSR-узлов" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "Обзор известных маршрутов к OLSR-узлам" - -msgid "Overview of interfaces where OLSR is running" -msgstr "Обзор интерфейсов с запущенным OLSR" - -msgid "Overview of known multiple interface announcements" -msgstr "Обзор известных мульти-интерфейсных извещений" - -# Может таки "умные" шлюзы? Или вообще SmartGW... -#, fuzzy -msgid "Overview of smart gateways in this network" -msgstr "Обзор смарт-шлюзов в сети" - -msgid "Plugin configuration" -msgstr "Настройки модулей" - -msgid "Plugins" -msgstr "Модули" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "Периодичность опроса OLSR-сокетов в секундах. 0.05 по умолчанию." - -msgid "Pollrate" -msgstr "Частота опроса" - -msgid "Port" -msgstr "Порт" - -msgid "Prefix" -msgstr "Префикс" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "Разрешать имена" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" -"Разрешать имена хостов на страницах состояния. Не используйте данную " -"функцию, если у вас публичный IP-адрес и нестабильный DNS. В противном " -"случае загрузка страниц состояния может происходить очень медленно." - -msgid "Routes" -msgstr "Маршруты" - -msgid "Secondary OLSR interfaces" -msgstr "Вторичные OLSR-интерфейсы" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" -"Устанавливает основной IP-адрес маршрутизатора. Данный адрес НИКОГДА не " -"будет изменяться во время работы olsrd. По умолчанию 0.0.0.0 (используется " -"IP-адрес первого сетевого интерфейса)." - -#, fuzzy -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" -"Устанавливает основной IP-адрес маршрутизатора. Данный адрес НИКОГДА не " -"будет изменяться во время работы olsrd. По умолчанию 0.0.0.0 (используется " -"IP-адрес первого сетевого интерфейса)." - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "SmartGW" - -msgid "SmartGW announcements" -msgstr "Объявления SmartGW" - -msgid "SmartGateway is not configured on this system." -msgstr "SmartGW не сконфигурирован на этой системе." - -msgid "Source address" -msgstr "Адрес источника" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" -"Устанавливает скорость восходящего канала (кбит/с). Первый параметр " -"указывает на прямое, а второй на обратное направление. По умолчанию \"128 " -"1024\"." - -msgid "Speed of the uplink" -msgstr "Скорость восходящего канала" - -msgid "State" -msgstr "Состояние" - -msgid "Status" -msgstr "Статус" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "Достигнутая скорость приема посылок от соседних узлов" - -msgid "Success rate of packages sent to the neighbour" -msgstr "Достигнутая скорость передачи посылок к соседним узлам" - -msgid "TC" -msgstr "TC" - -msgid "TC interval" -msgstr "Интервал TC" - -msgid "TC validity time" -msgstr "Время действия TC" - -msgid "TOS value" -msgstr "Значение ToS" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" -"Сервис OLSRd реализует поддержку протокола OLSR (Optimized Link State " -"Routing) и тем самым обеспечивает ячеистую маршрутизацию для любого сетевого " -"оборудования. OLSRd может работать на любом Wi-Fi-адаптере или устройстве " -"Ethernet с поддержкой режима ad-hoc. Более подробную информацию можно найти " -"на olsr.org." - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" -"Фиксированное значение готовности. Если не задано, то будет рассчитываться " -"динамически на основе состояния батареи/питания. По умолчанию \"3\"." - -msgid "The interface OLSRd should serve." -msgstr "Интерфейс, обслуживаемый OLSRd." - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" -"Порт, используемый для OLSR. Рекомендуется использовать присвоенный IANA " -"порт 698. Допустимо любое значение в диапазоне от 1 до 65535." - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" -"Может быть использовано для оповещения клиентов об IPv6-префиксе восходящего " -"канала. Это может позволить клиентам изменять свой локальный IPv6-адрес для " -"использования IPv6-шлюза без какой-либо трансляции адресов. Максимальная " -"длина префикса - 64 бита. По умолчанию \"::/0\" (без префикса)." - -msgid "Timing and Validity" -msgstr "Время и сроки действия" - -msgid "Topology" -msgstr "Топология" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" -"Значение поля ToS IP -аголовка управляющего трафика. По умолчанию \"16\"." - -msgid "Unable to connect to the OLSR daemon!" -msgstr "Не удалось подключиться к сервису OLSR!" - -msgid "Uplink" -msgstr "Восходящий канал" - -msgid "Uplink uses NAT" -msgstr "Восходящий канал использует NAT" - -msgid "Use hysteresis" -msgstr "Использовать гистерезис" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "Версия" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" -"Внимание: kmod-ipip не установлен. Без kmod-ipip SmartGateway не будет " -"работать, пожалуйста, установите этот пакет." - -msgid "Weight" -msgstr "Вес" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" -"При использовании нескольких соединений между хостами, вес служит для выбора " -"используемого интерфейса. Обычно, вес рассчитывается автоматически olsrd на " -"основе характеристик интерфейса, но данное поле позволяет установить вес " -"вручную. Olsrd выберет соединения с наименьшим значением веса.
    Замечание: вес интерфейса используется только в случае установки поля " -"\"Уровень LQ\" в 0. Для любых других значений поля \"Уровень LQ\", " -"используется значение поля ETX." - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" -"Какой вид восходящего канала экпортируется другим узлам ячеистой сети. " -"Определение восходящего канала происходит при наличии в локальном HNA " -"0.0.0.0/0, ::ffff:0:0/96 или 2000::/3. Значение по умолчанию: \"оба\"." - -#, fuzzy -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" -"Какой вид восходящего канала экпортируется другим узлам ячеистой сети. " -"Определение восходящего канала происходит при наличии в локальном HNA " -"0.0.0.0/0, ::ffff:0:0/96 или 2000::/3. Значение по умолчанию: \"оба\"." - -msgid "Willingness" -msgstr "Готовность" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "Устройство" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "Удостоверьтесь, что OLSRd работает, модуль \"txtinfo\" загружен, настроен " -#~ "на порт 2006 и принимает соединения от \"127.0.0.1\"." diff --git a/package/luci/applications/luci-app-olsr/po/sk/olsr.po b/package/luci/applications/luci-app-olsr/po/sk/olsr.po deleted file mode 100644 index fdd37e3aff..0000000000 --- a/package/luci/applications/luci-app-olsr/po/sk/olsr.po +++ /dev/null @@ -1,687 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-olsr/po/sv/olsr.po b/package/luci/applications/luci-app-olsr/po/sv/olsr.po deleted file mode 100644 index adf690c3ac..0000000000 --- a/package/luci/applications/luci-app-olsr/po/sv/olsr.po +++ /dev/null @@ -1,692 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "Aktiva OLSR-noder" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "Avancerade inställningar" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "Tillkännage upplänk" - -msgid "Announced network" -msgstr "Tillkännagivet nätverk" - -msgid "Bad (ETX > 10)" -msgstr "Dålig (ETX > 10)" - -msgid "Bad (SNR < 5)" -msgstr "Dålig (SNR < 5)" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "Sändningsadress" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "Kan endast vara en giltig IPv4 eller IPv6-adress eller 'standard'" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "Kan endast vara en giltig IPv6-adress eller 'standard'" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" -"Kunde inte ta emot någon data. Försäkra dig om att insticksprogrammet " -"jsoninfo är installerat och tillåter anslutningar från localhost" - -msgid "Display" -msgstr "Visa" - -msgid "Downlink" -msgstr "Nerlänk" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "Aktivera" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "Aktivera det här gränssnittet." - -msgid "Enabled" -msgstr "Aktivera" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "Gateway" - -msgid "General Settings" -msgstr "Generella inställningar" - -msgid "General settings" -msgstr "Generella inställningar" - -msgid "Good (2 < ETX < 4)" -msgstr "Bra (2 < ETX < 4)" - -msgid "Good (30 > SNR > 20)" -msgstr "Bra (30 > SNR > 20)" - -msgid "Green" -msgstr "Grön" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "Giltighetstid för HNA" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "Hallå" - -msgid "Hello interval" -msgstr "Hallå-intervall" - -msgid "Hello validity time" -msgstr "Giltighetstid för Hallå" - -msgid "Hide IPv4" -msgstr "Göm IPv4" - -msgid "Hide IPv6" -msgstr "Göm IPv6" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "Värdnamn" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "IP-adresser" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "IPv4-källa" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "IPv6-källa" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "Gränssnitt" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "Gränssnitten" - -msgid "Interfaces Defaults" -msgstr "Standard-gränssnitten" - -msgid "Internet protocol" -msgstr "Internet-protokoll" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "Kända OLSR-rutter" - -msgid "LQ" -msgstr "LQ" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "LQ-algoritm" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "LQ-nivå" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "Senaste hopp" - -msgid "Legend" -msgstr "Legend" - -msgid "Library" -msgstr "Bibliotek" - -msgid "Link Quality Settings" -msgstr "Inställningar för länkkvalité" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "Länker per nod (vanlig)" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "IP-adress för lokalt gränssnitt" - -msgid "MID" -msgstr "MID" - -msgid "MID interval" -msgstr "MID-intervall" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "MTU" - -msgid "Main IP" -msgstr "Huvudsaklig IP-adress" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "Metrisk" - -msgid "Mode" -msgstr "Läge" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "NLQ" - -msgid "Neighbors" -msgstr "Grannar" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "Grannar" - -msgid "Netmask" -msgstr "Nätmask" - -msgid "Network" -msgstr "Nätverk" - -msgid "Network address" -msgstr "Nätverksadress" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "Noder" - -msgid "OLSR" -msgstr "OLSR" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "OLSR - Insticksprogram" - -msgid "OLSR Daemon" -msgstr "OLSR-demon" - -msgid "OLSR Daemon - Interface" -msgstr "OLSR-demon - Gränssnitt" - -msgid "OLSR connections" -msgstr "OLSR-anslutningar" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "OLSR-nod" - -msgid "Orange" -msgstr "Orange" - -msgid "Overview" -msgstr "Överblick" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "Konfiguration av insticksprogram" - -msgid "Plugins" -msgstr "Insticksprogram" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Red" -msgstr "Röd" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "Rutter" - -msgid "Secondary OLSR interfaces" -msgstr "Andra OLSR-gränssnitt" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "Visa IPv4" - -msgid "Show IPv6" -msgstr "Visa IPv6" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "Adress för källkod" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "Skick" - -msgid "Status" -msgstr "Status" - -msgid "Still usable (20 > SNR > 5)" -msgstr "Fortfarande användbar (20 > SNR > 5)" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Fortfarande användbar (4 < ETX < 10)" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "TC" - -msgid "TC interval" -msgstr "TC-intervall" - -msgid "TC validity time" -msgstr "Giltighetstid för TC" - -msgid "TOS value" -msgstr "TOS-värde" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "Topologi" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "Kunde inte ansluta till OLSR-demonen!" - -msgid "Uplink" -msgstr "Upplänk" - -msgid "Uplink uses NAT" -msgstr "Upplänken använder NAT" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "Giltighetstid" - -msgid "Version" -msgstr "Version" - -msgid "Very good (ETX < 2)" -msgstr "Jättebra (ETX < 2)" - -msgid "Very good (SNR > 30)" -msgstr "Jättebra (SNR > 30)" - -msgid "WLAN" -msgstr "WLAN" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" -"Varning: kmod-ipip är inte installerat. SmartGateway kommer inte att " -"fungerautan kmod-ipip, vänligen installera det." - -msgid "Weight" -msgstr "Vikt" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "Frivillighet" - -msgid "Yellow" -msgstr "Gul" - -msgid "no" -msgstr "nej" - -msgid "yes" -msgstr "ja" diff --git a/package/luci/applications/luci-app-olsr/po/templates/olsr.pot b/package/luci/applications/luci-app-olsr/po/templates/olsr.pot deleted file mode 100644 index 6bd63c2a2a..0000000000 --- a/package/luci/applications/luci-app-olsr/po/templates/olsr.pot +++ /dev/null @@ -1,680 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-olsr/po/tr/olsr.po b/package/luci/applications/luci-app-olsr/po/tr/olsr.po deleted file mode 100644 index 18641896de..0000000000 --- a/package/luci/applications/luci-app-olsr/po/tr/olsr.po +++ /dev/null @@ -1,687 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-olsr/po/uk/olsr.po b/package/luci/applications/luci-app-olsr/po/uk/olsr.po deleted file mode 100644 index d35fe31737..0000000000 --- a/package/luci/applications/luci-app-olsr/po/uk/olsr.po +++ /dev/null @@ -1,688 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "" - -msgid "FIB metric" -msgstr "" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -msgid "HNA6 Announcements" -msgstr "" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-olsr/po/vi/olsr.po b/package/luci/applications/luci-app-olsr/po/vi/olsr.po deleted file mode 100644 index 698e5288e2..0000000000 --- a/package/luci/applications/luci-app-olsr/po/vi/olsr.po +++ /dev/null @@ -1,703 +0,0 @@ -# olsr.pot -# generated from ./applications/luci-olsr/luasrc/i18n/olsr.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:58+0200\n" -"PO-Revision-Date: 2009-08-16 12:39+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "Active MID announcements" -msgstr "Thông báo của các MID đang hoạt động" - -msgid "Active OLSR nodes" -msgstr "Những OLSR nodes đang hoạt động" - -msgid "Active host net announcements" -msgstr "Thông báo của mạng host đang hoạt động" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow gateways with NAT" -msgstr "" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "" - -msgid "Announce uplink" -msgstr "" - -msgid "Announced network" -msgstr "Mạng lưới thông báo" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "" - -msgid "Broadcast address" -msgstr "" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Download Config" -msgstr "" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" - -msgid "Enable this interface." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Expected retransmission count" -msgstr "Expected retransmission count" - -msgid "FIB metric" -msgstr "FIB metric" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General settings" -msgstr "Cài đặt tổng quát" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "Khoảng HNA" - -msgid "HNA validity time" -msgstr "Thời gian hợp lệ hóa HNA " - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "OLSR - HNA - Thông báo" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "Vùng xin chào" - -msgid "Hello validity time" -msgstr "Thời gian hợp lệ hóa lời chào" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4 broadcast" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "Internet protocol" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "Tuyến OLRS đã biết" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "LQ aging" - -msgid "LQ algorithm" -msgstr "LQ algorithm" - -msgid "LQ fisheye" -msgstr "LQ fisheye" - -msgid "LQ level" -msgstr "LQ level" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "Hop cuối " - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "Thư viện " - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "Giao diện địa phương IP" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "Khoảng MID" - -msgid "MID validity time" -msgstr "Thời gian hợp lệ hóa MID" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "Lận cận IP" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "Netmask" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "OLSR - HNA - Thông báo" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "OLSR - HNA - Thông báo" - -msgid "OLSR - Plugins" -msgstr "OLSR - Plugins" - -msgid "OLSR Daemon" -msgstr "OLSR Daemon" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "Kết nối OLSR" - -msgid "OLSR gateway" -msgstr "Cổng OLSR" - -msgid "OLSR node" -msgstr "OLSR node" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "Tổng quát về các thông báo của mạng host đang hoạt động" - -msgid "Overview of currently established OLSR connections" -msgstr "Tổng quát về kết nối OLSR hiện tại " - -msgid "Overview of currently known OLSR nodes" -msgstr "Tổng quát của các OLSR nodes đã biết hiện tại" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "Tổng quát của các tuyến đã biết hiện tại tới những OLSR nodes khác" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "Tổng quát về thông báo của nhiều giao diện đã biết" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "Cấu hình Plugin" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "Pollrate" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "Tiền tố" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "Giao diện OLSR thứ nhì" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "Khoảng TC" - -msgid "TC validity time" -msgstr "Thời gian hợp lệ hóa TC" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "Không thể kết nối với OLSR daemon!" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "Dùng hysteresis" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "Sẵn sàng" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "" -#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, " -#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"." -#~ msgstr "" -#~ "Bảo đảm là OLSRd đang vận hành, the &quot;txtinfo&quot; plugin " -#~ "được tải, định cấu hình trên cổng 2006 và chấp nhận kết nối từ &" -#~ "quot;127.0.0.1&quot;." diff --git a/package/luci/applications/luci-app-olsr/po/zh-cn/olsr.po b/package/luci/applications/luci-app-olsr/po/zh-cn/olsr.po deleted file mode 100644 index 37264f584a..0000000000 --- a/package/luci/applications/luci-app-olsr/po/zh-cn/olsr.po +++ /dev/null @@ -1,696 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-10 20:26+0200\n" -"Last-Translator: Tanyingyu \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" - -msgid "Active MID announcements" -msgstr "" - -msgid "Active OLSR nodes" -msgstr "" - -msgid "Active host net announcements" -msgstr "" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Allow gateways with NAT" -msgstr "允许网关使用NAT" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "允许选定的IPv4通过网关NAT" - -msgid "Announce uplink" -msgstr "广告上行" - -msgid "Announced network" -msgstr "广告网络" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "两个值必须使用点分十进制表示法。" - -msgid "Broadcast address" -msgstr "广播地址" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "配置" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "显示" - -msgid "Downlink" -msgstr "断线" - -msgid "Download Config" -msgstr "下载配置" - -msgid "ETX" -msgstr "ETX" - -msgid "Enable" -msgstr "允许" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"启用SmartGateway。如果禁用,则SmartGateway其他所有参数将忽略。缺省值:“禁用”" - -msgid "Enable this interface." -msgstr "启用这个端口" - -msgid "Enabled" -msgstr "启用" - -msgid "Expected retransmission count" -msgstr "预期重发数" - -msgid "FIB metric" -msgstr "FIB度量" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "网关" - -msgid "General Settings" -msgstr "通用设置" - -msgid "General settings" -msgstr "通用设置" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "HNA" - -msgid "HNA Announcements" -msgstr "HNA公告" - -msgid "HNA interval" -msgstr "HNA间隙" - -msgid "HNA validity time" -msgstr "HNA有效时长" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "HNA公告" - -msgid "Hello" -msgstr "Hello" - -msgid "Hello interval" -msgstr "Hello间隙" - -msgid "Hello validity time" -msgstr "Hello有效时长" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "Hna4" - -msgid "Hna6" -msgstr "Hna6" - -msgid "Hops" -msgstr "跳" - -msgid "Hostname" -msgstr "主机名" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "IP地址" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 broadcast" -msgstr "IPv4广播地址" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -#, fuzzy -msgid "OLSR - HNA6-Announcements" -msgstr "HNA公告" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "设备" diff --git a/package/luci/applications/luci-app-olsr/po/zh-tw/olsr.po b/package/luci/applications/luci-app-olsr/po/zh-tw/olsr.po deleted file mode 100644 index 797874d8f1..0000000000 --- a/package/luci/applications/luci-app-olsr/po/zh-tw/olsr.po +++ /dev/null @@ -1,700 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-15 07:15+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Active MID announcements" -msgstr "啟用Mesh網狀網路ID公告" - -msgid "Active OLSR nodes" -msgstr "啟用OLSR路由協議節點" - -msgid "Active host net announcements" -msgstr "啟用主機網路公告" - -msgid "Advanced Settings" -msgstr "進階設定" - -msgid "Allow gateways with NAT" -msgstr "允許帶NAT的匝道器" - -msgid "Allow the selection of an outgoing ipv4 gateway with NAT" -msgstr "允許帶NAT的匝道器選擇輸出ipv4封包" - -msgid "Announce uplink" -msgstr "公告上傳" - -msgid "Announced network" -msgstr "公告網路" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Bad (SNR < 5)" -msgstr "" - -msgid "Both values must use the dotted decimal notation." -msgstr "這兩個值都必須採用點分十進位制格式" - -msgid "Broadcast address" -msgstr "廣播位址" - -msgid "Can only be a valid IPv4 or IPv6 address or 'default'" -msgstr "" - -msgid "Can only be a valid IPv6 address or 'default'" -msgstr "" - -msgid "Configuration" -msgstr "設定" - -msgid "" -"Could not get any data. Make sure the jsoninfo plugin is installed and " -"allows connections from localhost." -msgstr "" - -msgid "Display" -msgstr "顯示" - -msgid "Downlink" -msgstr "下行" - -msgid "Download Config" -msgstr "下載設置" - -msgid "ETX" -msgstr "" - -msgid "Enable" -msgstr "啟用" - -msgid "" -"Enable SmartGateway. If it is disabled, then all other SmartGateway " -"parameters are ignored. Default is \"no\"." -msgstr "" -"啟用機動式匝道器. 假如它失效, 其它所有機動式匝道器參數將被忽視. 預設值是\"no" -"\"" - -msgid "Enable this interface." -msgstr "啟用這個介面" - -msgid "Enabled" -msgstr "啟用" - -msgid "Expected retransmission count" -msgstr "預計重傳次數" - -msgid "FIB metric" -msgstr "FIB指標" - -msgid "" -"FIBMetric controls the metric value of the host-routes OLSRd sets. \"flat\" " -"means that the metric value is always 2. This is the preferred value because " -"it helps the linux kernel routing to clean up older routes. \"correct\" uses " -"the hopcount as the metric value. \"approx\" use the hopcount as the metric " -"value too, but does only update the hopcount if the nexthop changes too. " -"Default is \"flat\"." -msgstr "" -"FIBMetric控制OLSR主機路由的公用路由計量設定. \"flat\" 代表是公用計量數永遠是" -"2. 這是較受歡迎的數值, 因為它會協助linux核心路由清除舊的路由表. \"correct\"使" -"用跳躍數當作公用路由計量. \"approx\"也使用跳躍數當作公用路由計量, 但只作用在" -"跳躍數也更新時. 預設值是\"flat\"." - -msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\"" -msgstr "" - -msgid "Gateway" -msgstr "匝道器" - -msgid "General Settings" -msgstr "一般設定" - -msgid "General settings" -msgstr "一般設定" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Good (30 > SNR > 20)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "HNA" -msgstr "" - -msgid "HNA Announcements" -msgstr "" - -msgid "HNA interval" -msgstr "" - -msgid "HNA validity time" -msgstr "" - -#, fuzzy -msgid "HNA6 Announcements" -msgstr "啟用Mesh網狀網路ID公告" - -msgid "Hello" -msgstr "" - -msgid "Hello interval" -msgstr "" - -msgid "Hello validity time" -msgstr "" - -msgid "Hide IPv4" -msgstr "" - -msgid "Hide IPv6" -msgstr "" - -msgid "Hna4" -msgstr "" - -msgid "Hna6" -msgstr "" - -msgid "Hops" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA messages." -msgstr "" - -msgid "" -"Hosts in a OLSR routed network can announce connecitivity to external " -"networks using HNA6 messages." -msgstr "" - -msgid "" -"Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more " -"robustness to the link sensing but delays neighbor registration. Defaults is " -"\"yes\"" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "" -"IP-version to use. If 6and4 is selected then one olsrd instance is started " -"for each protocol." -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "" -"IPv4 broadcast address for outgoing OLSR packets. One useful example would " -"be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the " -"interface broadcast IP." -msgstr "" - -msgid "IPv4 source" -msgstr "" - -msgid "" -"IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which " -"triggers usage of the interface IP." -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 multicast" -msgstr "" - -msgid "" -"IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal " -"multicast." -msgstr "" - -msgid "" -"IPv6 network must be given in full notation, prefix must be in CIDR notation." -msgstr "" - -msgid "IPv6 source" -msgstr "" - -msgid "" -"IPv6 src prefix. OLSRd will choose one of the interface IPs which matches " -"the prefix of this parameter. Default is \"0::/0\", which triggers the usage " -"of a not-linklocal interface IP." -msgstr "" - -msgid "IPv6-Prefix of the uplink" -msgstr "" - -msgid "" -"If the route to the current gateway is to be changed, the ETX value of this " -"gateway is multiplied with this value before it is compared to the new one. " -"The parameter can be a value between 0.1 and 1.0, but should be close to 1.0 " -"if changed.
    WARNING: This parameter should not be used together " -"with the etx_ffeth metric!
    Defaults to \"1.0\"." -msgstr "" - -msgid "" -"If this Node uses NAT for connections to the internet. Default is \"yes\"." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Interface Mode is used to prevent unnecessary packet forwarding on switched " -"ethernet interfaces. valid Modes are \"mesh\" and \"ether\". Default is " -"\"mesh\"." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces Defaults" -msgstr "" - -msgid "Internet protocol" -msgstr "" - -msgid "" -"Interval to poll network interfaces for configuration changes (in seconds). " -"Default is \"2.5\"." -msgstr "" - -msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0." -msgstr "" - -msgid "" -"Invalid Value for LQMult-Value. You must use a decimal number between 0.01 " -"and 1.0 here." -msgstr "" - -msgid "Known OLSR routes" -msgstr "" - -msgid "LQ" -msgstr "" - -msgid "LQ aging" -msgstr "" - -msgid "LQ algorithm" -msgstr "" - -msgid "LQ fisheye" -msgstr "" - -msgid "LQ level" -msgstr "" - -msgid "" -"LQMult requires two values (IP address or 'default' and multiplicator) " -"seperated by space." -msgstr "" - -msgid "Last hop" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Library" -msgstr "" - -msgid "Link Quality Settings" -msgstr "" - -msgid "" -"Link quality aging factor (only for lq level 2). Tuning parameter for " -"etx_float and etx_fpm, smaller values mean slower changes of ETX value. " -"(allowed values are between 0.01 and 1.0)" -msgstr "" - -msgid "" -"Link quality algorithm (only for lq level 2).
    etx_float: " -"floating point ETX with exponential aging
    etx_fpm : same as " -"etx_float, but with integer arithmetic
    etx_ff : ETX freifunk, an " -"etx variant which use all OLSR traffic (instead of only hellos) for ETX " -"calculation
    etx_ffeth: incompatible variant of etx_ff that " -"allows ethernet links with ETX 0.1.
    Defaults to \"etx_ff\"" -msgstr "" - -msgid "" -"Link quality level switch between hopcount and cost-based (mostly ETX) " -"routing.
    0 = do not use link quality
    2 = use link " -"quality for MPR selection and routing
    Default is \"2\"" -msgstr "" - -msgid "LinkQuality Multiplicator" -msgstr "" - -msgid "Links per node (average)" -msgstr "" - -msgid "Links total" -msgstr "" - -msgid "Local interface IP" -msgstr "" - -msgid "MID" -msgstr "" - -msgid "MID interval" -msgstr "" - -msgid "MID validity time" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "Main IP" -msgstr "" - -msgid "" -"Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, " -"configured on port 9090 and accepts connections from \"127.0.0.1\"." -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5
    reduce LQ to all " -"nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "" -"Multiply routes with the factor given here. Allowed values are between 0.01 " -"and 1.0. It is only used when LQ-Level is greater than 0. Examples:
    reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5
    reduce " -"LQ to all nodes on this interface by 20%: default 0.8" -msgstr "" - -msgid "NAT threshold" -msgstr "" - -msgid "NLQ" -msgstr "" - -msgid "Neighbors" -msgstr "" - -msgid "Neighbour IP" -msgstr "" - -msgid "Neighbours" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network address" -msgstr "" - -msgid "Nic changes poll interval" -msgstr "" - -msgid "Nodes" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "OLSR - Display Options" -msgstr "" - -msgid "OLSR - HNA-Announcements" -msgstr "" - -msgid "OLSR - HNA6-Announcements" -msgstr "" - -msgid "OLSR - Plugins" -msgstr "" - -msgid "OLSR Daemon" -msgstr "" - -msgid "OLSR Daemon - Interface" -msgstr "" - -msgid "OLSR connections" -msgstr "" - -msgid "OLSR gateway" -msgstr "" - -msgid "OLSR node" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Overview of currently active OLSR host net announcements" -msgstr "" - -msgid "Overview of currently established OLSR connections" -msgstr "" - -msgid "Overview of currently known OLSR nodes" -msgstr "" - -msgid "Overview of currently known routes to other OLSR nodes" -msgstr "" - -msgid "Overview of interfaces where OLSR is running" -msgstr "" - -msgid "Overview of known multiple interface announcements" -msgstr "" - -msgid "Overview of smart gateways in this network" -msgstr "" - -msgid "Plugin configuration" -msgstr "" - -msgid "Plugins" -msgstr "" - -msgid "Polling rate for OLSR sockets in seconds. Default is 0.05." -msgstr "" - -msgid "Pollrate" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "Resolve" -msgstr "" - -msgid "" -"Resolve hostnames on status pages. It is generally safe to allow this, but " -"if you use public IPs and have unstable DNS-Setup then those pages will load " -"really slow. In this case disable it here." -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Secondary OLSR interfaces" -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the " -"IP of the first interface." -msgstr "" - -msgid "" -"Sets the main IP (originator ip) of the router. This IP will NEVER change " -"during the uptime of olsrd. Default is ::, which triggers usage of the IP of " -"the first interface." -msgstr "" - -msgid "Show IPv4" -msgstr "" - -msgid "Show IPv6" -msgstr "" - -msgid "Signal Noise Ratio in dB" -msgstr "" - -msgid "SmartGW" -msgstr "" - -msgid "SmartGW announcements" -msgstr "" - -msgid "SmartGateway is not configured on this system." -msgstr "" - -msgid "Source address" -msgstr "" - -msgid "" -"Specifies the speed of the uplink in kilobits/s. First parameter is " -"upstream, second parameter is downstream. Default is \"128 1024\"." -msgstr "" - -msgid "Speed of the uplink" -msgstr "" - -msgid "State" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (20 > SNR > 5)" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "Success rate of packages received from the neighbour" -msgstr "" - -msgid "Success rate of packages sent to the neighbour" -msgstr "" - -msgid "TC" -msgstr "" - -msgid "TC interval" -msgstr "" - -msgid "TC validity time" -msgstr "" - -msgid "TOS value" -msgstr "" - -msgid "" -"The OLSR daemon is an implementation of the Optimized Link State Routing " -"protocol. As such it allows mesh routing for any network equipment. It runs " -"on any wifi card that supports ad-hoc mode and of course on any ethernet " -"device. Visit olsrd.org for help and " -"documentation." -msgstr "" - -msgid "" -"The fixed willingness to use. If not set willingness will be calculated " -"dynamically based on battery/power status. Default is \"3\"." -msgstr "" - -msgid "The interface OLSRd should serve." -msgstr "" - -msgid "" -"The port OLSR uses. This should usually stay at the IANA assigned port 698. " -"It can have a value between 1 and 65535." -msgstr "" - -msgid "" -"This can be used to signal the external IPv6 prefix of the uplink to the " -"clients. This might allow a client to change it's local IPv6 address to use " -"the IPv6 gateway without any kind of address translation. The maximum prefix " -"length is 64 bits. Default is \"::/0\" (no prefix)." -msgstr "" - -msgid "Timing and Validity" -msgstr "" - -msgid "Topology" -msgstr "" - -msgid "" -"Type of service value for the IP header of control traffic. Default is " -"\"16\"." -msgstr "" - -msgid "Unable to connect to the OLSR daemon!" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Uplink uses NAT" -msgstr "" - -msgid "Use hysteresis" -msgstr "" - -msgid "Validity Time" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "Very good (SNR > 30)" -msgstr "" - -msgid "WLAN" -msgstr "" - -msgid "" -"Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not " -"work, please install it." -msgstr "" - -msgid "Weight" -msgstr "" - -msgid "" -"When multiple links exist between hosts the weight of interface is used to " -"determine the link to use. Normally the weight is automatically calculated " -"by olsrd based on the characteristics of the interface, but here you can " -"specify a fixed value. Olsrd will choose links with the lowest value.
    Note: Interface weight is used only when LinkQualityLevel is set to " -"0. For any other value of LinkQualityLevel, the interface ETX value is used " -"instead." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. " -"Default setting is \"both\"." -msgstr "" - -msgid "" -"Which kind of uplink is exported to the other mesh nodes. An uplink is " -"detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default " -"setting is \"both\"." -msgstr "" - -msgid "Willingness" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" - -#~ msgid "Device" -#~ msgstr "設備" diff --git a/package/luci/applications/luci-app-olsr/root/etc/config/luci_olsr b/package/luci/applications/luci-app-olsr/root/etc/config/luci_olsr deleted file mode 100644 index 2dd4ffac1a..0000000000 --- a/package/luci/applications/luci-app-olsr/root/etc/config/luci_olsr +++ /dev/null @@ -1,2 +0,0 @@ -config 'olsr' 'general' - option 'resolve' '1' diff --git a/package/luci/applications/luci-app-olsr/root/etc/uci-defaults/40_luci-olsr b/package/luci/applications/luci-app-olsr/root/etc/uci-defaults/40_luci-olsr deleted file mode 100755 index 63c01e4a2c..0000000000 --- a/package/luci/applications/luci-app-olsr/root/etc/uci-defaults/40_luci-olsr +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@olsrd[-1] - add ucitrack olsrd - set ucitrack.@olsrd[-1].init=olsrd - delete ucitrack.@olsrd6[-1] - add ucitrack olsrd6 - set ucitrack.@olsrd6[-1].init=olsrd6 - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-openvpn/Makefile b/package/luci/applications/luci-app-openvpn/Makefile deleted file mode 100644 index a8070fd3fe..0000000000 --- a/package/luci/applications/luci-app-openvpn/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for OpenVPN -LUCI_DEPENDS:= - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-openvpn/luasrc/controller/openvpn.lua b/package/luci/applications/luci-app-openvpn/luasrc/controller/openvpn.lua deleted file mode 100644 index 2e48a469a1..0000000000 --- a/package/luci/applications/luci-app-openvpn/luasrc/controller/openvpn.lua +++ /dev/null @@ -1,11 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.openvpn", package.seeall) - -function index() - entry( {"admin", "services", "openvpn"}, cbi("openvpn"), _("OpenVPN") ) - entry( {"admin", "services", "openvpn", "basic"}, cbi("openvpn-basic"), nil ).leaf = true - entry( {"admin", "services", "openvpn", "advanced"}, cbi("openvpn-advanced"), nil ).leaf = true -end diff --git a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua deleted file mode 100644 index dc7718217c..0000000000 --- a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua +++ /dev/null @@ -1,798 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -require("luci.ip") -require("luci.model.uci") - - -local knownParams = { - -- - --Widget - -- Name - -- Default(s) - -- Description - -- Option(s) - - { "Service", { - -- initialisation and daemon options - { ListValue, - "verb", - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }, - translate("Set output verbosity") }, - { Flag, - "mlock", - 0, - translate("Disable Paging") }, - { Flag, - "disable_occ", - 0, - translate("Disable options consistency check") }, - -- { Value, - -- "user", - -- "root", - -- translate("Set UID to user") }, - -- { Value, - -- "group", - -- "root", - -- translate("Set GID to group") }, - { Value, - "cd", - "/etc/openvpn", - translate("Change to directory before initialization") }, - { Value, - "chroot", - "/var/run", - translate("Chroot to directory after initialization") }, - -- { Value, - -- "daemon", - -- "Instance-Name", - -- translate("Daemonize after initialization") }, - -- { Value, - -- "syslog", - -- "Instance-Name", - -- translate("Output to syslog and do not daemonize") }, - { Flag, - "passtos", - 0, - translate("TOS passthrough (applies to IPv4 only)") }, - -- { Value, - -- "inetd", - -- "nowait Instance-Name", - -- translate("Run as an inetd or xinetd server") }, - { Value, - "log", - "/var/log/openvpn.log", - translate("Write log to file") }, - { Value, - "log_append", - "/var/log/openvpn.log", - translate("Append log to file") }, - { Flag, - "suppress_timestamps", - 0, - translate("Don't log timestamps") }, - -- { Value, - -- "writepid", - -- "/var/run/openvpn.pid", - -- translate("Write process ID to file") }, - { Value, - "nice", - 0, - translate("Change process priority") }, - { Flag, - "fast_io", - 0, - translate("Optimize TUN/TAP/UDP writes") }, - { Value, - "echo", - "some params echoed to log", - translate("Echo parameters to log") }, - { ListValue, - "remap_usr1", - { "SIGHUP", "SIGTERM" }, - translate("Remap SIGUSR1 signals") }, - { Value, - "status", - "/var/run/openvpn.status 5", - translate("Write status to file every n seconds") }, - { Value, - "status_version", - { 1, 2 }, - translate("Status file format version") }, -- status - { Value, - "mute", - 5, - translate("Limit repeated log messages") }, - { Value, - "up", - "/usr/bin/ovpn-up", - translate("Shell cmd to execute after tun device open") }, - { Value, - "up_delay", - 5, - translate("Delay tun/tap open and up script execution") }, - { Value, - "down", - "/usr/bin/ovpn-down", - translate("Shell cmd to run after tun device close") }, - { Flag, - "down_pre", - 0, - translate("Call down cmd/script before TUN/TAP close") }, - { Flag, - "up_restart", - 0, - translate("Run up/down scripts for all restarts") }, - { Value, - "route_up", - "/usr/bin/ovpn-routeup", - translate("Execute shell cmd after routes are added") }, - { Value, - "ipchange", - "/usr/bin/ovpn-ipchange", - translate("Execute shell command on remote ip change"), - { mode="p2p" } }, - { DynamicList, - "setenv", - { "VAR1 value1", "VAR2 value2" }, - translate("Pass environment variables to script") }, - { Value, - "tls_verify", - "/usr/bin/ovpn-tlsverify", - translate("Shell command to verify X509 name") }, - { Value, - "client_connect", - "/usr/bin/ovpn-clientconnect", - translate("Run script cmd on client connection") }, - { Flag, - "client_disconnect", - 0, - translate("Run script cmd on client disconnection") }, - { Value, - "learn_address", - "/usr/bin/ovpn-learnaddress", - translate("Executed in server mode whenever an IPv4 address/route or MAC address is added to OpenVPN's internal routing table") }, - { Value, - "auth_user_pass_verify", - "/usr/bin/ovpn-userpass via-env", - translate("Executed in server mode on new client connections, when the client is still untrusted") }, - { ListValue, - "script_security", - { 0, 1, 2, 3 }, - translate("Policy level over usage of external programs and scripts") }, - } }, - - { "Networking", { - -- socket config - { ListValue, - "mode", - { "p2p", "server" }, - translate("Major mode") }, - { Value, - "local", - "0.0.0.0", - translate("Local host name or ip address") }, - { Value, - "port", - 1194, - translate("TCP/UDP port # for both local and remote") }, - { Value, - "lport", - 1194, - translate("TCP/UDP port # for local (default=1194)") }, - { Value, - "rport", - 1194, - translate("TCP/UDP port # for remote (default=1194)") }, - { Flag, - "float", - 0, - translate("Allow remote to change its IP or port") }, - { Flag, - "nobind", - 0, - translate("Do not bind to local address and port") }, - { Value, - "dev", - "tun0", - translate("tun/tap device") }, - { ListValue, - "dev_type", - { "tun", "tap" }, - translate("Type of used device") }, - { Value, - "dev_node", - "/dev/net/tun", - translate("Use tun/tap device node") }, - { Flag, - "tun_ipv6", - 0, - translate("Make tun device IPv6 capable") }, - { Value, - "ifconfig", - "10.200.200.3 10.200.200.1", - translate("Set tun/tap adapter parameters") }, - { Flag, - "ifconfig_noexec", - 0, - translate("Don't actually execute ifconfig") }, - { Flag, - "ifconfig_nowarn", - 0, - translate("Don't warn on ifconfig inconsistencies") }, - { DynamicList, - "route", - "10.123.0.0 255.255.0.0", - translate("Add route after establishing connection") }, - { Value, - "route_gateway", - "10.234.1.1", - translate("Specify a default gateway for routes") }, - { Value, - "route_delay", - 0, - translate("Delay n seconds after connection") }, - { Flag, - "route_noexec", - 0, - translate("Don't add routes automatically") }, - { Flag, - "route_nopull", - 0, - translate("Don't pull routes automatically") }, - { ListValue, - "mtu_disc", - { "yes", "maybe", "no" }, - translate("Enable Path MTU discovery") }, - { Flag, - "mtu_test", - 0, - translate("Empirically measure MTU") }, - { ListValue, - "comp_lzo", - { "yes", "no", "adaptive" }, - translate("Use fast LZO compression") }, - { Flag, - "comp_noadapt", - 0, - translate("Don't use adaptive lzo compression"), - { comp_lzo=1 } }, - { Value, - "link_mtu", - 1500, - translate("Set TCP/UDP MTU") }, - { Value, - "tun_mtu", - 1500, - translate("Set tun/tap device MTU") }, - { Value, - "tun_mtu_extra", - 1500, - translate("Set tun/tap device overhead") }, - { Value, - "fragment", - 1500, - translate("Enable internal datagram fragmentation"), - { proto="udp" } }, - { Value, - "mssfix", - 1500, - translate("Set upper bound on TCP MSS"), - { proto="udp" } }, - { Value, - "sndbuf", - 65536, - translate("Set the TCP/UDP send buffer size") }, - { Value, - "rcvbuf", - 65536, - translate("Set the TCP/UDP receive buffer size") }, - { Value, - "txqueuelen", - 100, - translate("Set tun/tap TX queue length") }, - { Value, - "shaper", - 10240, - translate("Shaping for peer bandwidth") }, - { Value, - "inactive", - 240, - translate("tun/tap inactivity timeout") }, - { Value, - "keepalive", - "10 60", - translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") }, - { Value, - "ping", - 30, - translate("Ping remote every n seconds over TCP/UDP port") }, - { Value, - "ping_exit", - 120, - translate("Remote ping timeout") }, - { Value, - "ping_restart", - 60, - translate("Restart after remote ping timeout") }, - { Flag, - "ping_timer_rem", - 0, - translate("Only process ping timeouts if routes exist") }, - { Flag, - "persist_tun", - 0, - translate("Keep tun/tap device open on restart") }, - { Flag, - "persist_key", - 0, - translate("Don't re-read key on restart") }, - { Flag, - "persist_local_ip", - 0, - translate("Keep local IP address on restart") }, - { Flag, - "persist_remote_ip", - 0, - translate("Keep remote IP address on restart") }, - -- management channel - { Value, - "management", - "127.0.0.1 31194 /etc/openvpn/mngmt-pwds", - translate("Enable management interface on IP port") }, - -- management - { Flag, - "management_query_passwords", - 0, - translate("Query management channel for private key") }, - -- management - { Flag, - "management_hold", - 0, - translate("Start OpenVPN in a hibernating state") }, - -- management - { Value, - "management_log_cache", - 100, - translate("Number of lines for log file history") }, - { ListValue, - "topology", - { "net30", "p2p", "subnet" }, - translate("'net30', 'p2p', or 'subnet'"), - {dev_type="tun" } }, - } }, - - { "VPN", { - { Value, - "server", - "10.200.200.0 255.255.255.0", - translate("Configure server mode"), - { client="0" }, { client="" } }, - { Value, - "server_bridge", - "10.200.200.1 255.255.255.0 10.200.200.200 10.200.200.250", - translate("Configure server bridge"), - { client="0" }, { client="" } }, - { DynamicList, - "push", - { "redirect-gateway", "comp-lzo" }, - translate("Push options to peer"), - { client="0" }, { client="" } }, - { Flag, - "push_reset", - 0, - translate("Don't inherit global push options"), - { client="0" }, { client="" } }, - { Flag, - "disable", - 0, - translate("Client is disabled"), - { client="0" }, { client="" } }, - { Value, - "ifconfig_pool", - "10.200.200.100 10.200.200.150 255.255.255.0", - translate("Set aside a pool of subnets"), - { client="0" }, { client="" } }, - { Value, - "ifconfig_pool_persist", - "/etc/openvpn/ipp.txt 600", - translate("Persist/unpersist ifconfig-pool"), - { client="0" }, { client="" } }, - -- deprecated and replaced by --topology p2p - -- { Flag, - -- "ifconfig_pool_linear", - -- 0, - -- translate("Use individual addresses rather than /30 subnets"), - -- { client="0" }, { client="" } }, - { Value, - "ifconfig_push", - "10.200.200.1 255.255.255.255", - translate("Push an ifconfig option to remote"), - { client="0" }, { client="" } }, - { Value, - "iroute", - "10.200.200.0 255.255.255.0", - translate("Route subnet to client"), - { client="0" }, { client="" } }, - { Flag, - "client_to_client", - 0, - translate("Allow client-to-client traffic"), - { client="0" }, { client="" } }, - { Flag, - "duplicate_cn", - 0, - translate("Allow multiple clients with same certificate"), - { client="0" }, { client="" } }, - { Value, - "client_config_dir", - "/etc/openvpn/ccd", - translate("Directory for custom client config files"), - { client="0" }, { client="" } }, - { Flag, - "ccd_exclusive", - 0, - translate("Refuse connection if no custom client config"), - { client="0" }, { client="" } }, - { Value, - "tmp_dir", - "/var/run/openvpn", - translate("Temporary directory for client-connect return file"), - { client="0" }, { client="" } }, - { Value, - "hash_size", - "256 256", - translate("Set size of real and virtual address hash tables"), - { client="0" }, { client="" } }, - { Value, - "bcast_buffers", - 256, - translate("Number of allocated broadcast buffers"), - { client="0" }, { client="" } }, - { Value, - "tcp_queue_limit", - 64, - translate("Maximum number of queued TCP output packets"), - { client="0" }, { client="" } }, - { Value, - "max_clients", - 10, - translate("Allowed maximum of connected clients"), - { client="0" }, { client="" } }, - { Value, - "max_routes_per_client", - 256, - translate("Allowed maximum of internal"), - { client="0" }, { client="" } }, - { Value, - "connect_freq", - "3 10", - translate("Allowed maximum of new connections"), - { client="0" }, { client="" } }, - { Flag, - "client_cert_not_required", - 0, - translate("Don't require client certificate"), - { client="0" }, { client="" } }, - { Flag, - "username_as_common_name", - 0, - translate("Use username as common name"), - { client="0" }, { client="" } }, - { Flag, - "client", - 0, - translate("Configure client mode") }, - { Flag, - "pull", - 0, - translate("Accept options pushed from server"), - { client="1" } }, - { Value, - "auth_user_pass", - "/etc/openvpn/userpass.txt", - translate("Authenticate using username/password"), - { client="1" } }, - { ListValue, - "auth_retry", - { "none", "nointeract", "interact" }, - translate("Handling of authentication failures"), - { client="1" } }, - { Value, - "explicit_exit_notify", - 1, - translate("Send notification to peer on disconnect"), - { client="1" } }, - { DynamicList, - "remote", - "1.2.3.4", - translate("Remote host name or ip address"), - { client="1" } }, - { Flag, - "remote_random", - 0, - translate("Randomly choose remote server"), - { client="1" } }, - { ListValue, - "proto", - { "udp", "tcp-client", "tcp-server" }, - translate("Use protocol"), - { client="1" } }, - { Value, - "connect_retry", - 5, - translate("Connection retry interval"), - { proto="tcp-client" }, { client="1" } }, - { Value, - "http_proxy", - "192.168.1.100 8080", - translate("Connect to remote host through an HTTP proxy"), - { client="1" } }, - { Flag, - "http_proxy_retry", - 0, - translate("Retry indefinitely on HTTP proxy errors"), - { client="1" } }, - { Value, - "http_proxy_timeout", - 5, - translate("Proxy timeout in seconds"), - { client="1" } }, - { DynamicList, - "http_proxy_option", - { "VERSION 1.0", "AGENT OpenVPN/2.0.9" }, - translate("Set extended HTTP proxy options"), - { client="1" } }, - { Value, - "socks_proxy", - "192.168.1.200 1080", - translate("Connect through Socks5 proxy"), - { client="1" } }, - -- client && socks_proxy - { Value, - "socks_proxy_retry", - 5, - translate("Retry indefinitely on Socks proxy errors"), - { client="1" } }, - { Value, - "resolv_retry", - "infinite", - translate("If hostname resolve fails, retry"), - { client="1" } }, - { ListValue, - "redirect_gateway", - { "", "local", "def1", "local def1" }, - translate("Automatically redirect default route"), - { client="1" } }, - } }, - - { "Cryptography", { - { FileUpload, - "secret", - "/etc/openvpn/secret.key", - translate("Enable Static Key encryption mode (non-TLS)") }, - -- parse - { Value, - "auth", - "SHA1", - translate("HMAC authentication for packets") }, - -- parse - { Value, - "cipher", - "BF-CBC", - translate("Encryption cipher for packets") }, - -- parse - { Value, - "keysize", - 1024, - translate("Size of cipher key") }, - -- parse - { Value, - "engine", - "dynamic", - translate("Enable OpenSSL hardware crypto engines") }, - { Flag, - "no_replay", - 0, - translate("Disable replay protection") }, - { Value, - "replay_window", - "64 15", - translate("Replay protection sliding window size") }, - { Flag, - "mute_replay_warnings", - 0, - translate("Silence the output of replay warnings") }, - { Value, - "replay_persist", - "/var/run/openvpn-replay-state", - translate("Persist replay-protection state") }, - { Flag, - "no_iv", - 0, - translate("Disable cipher initialisation vector") }, - { Flag, - "tls_server", - 0, - translate("Enable TLS and assume server role"), - { tls_client="" }, { tls_client="0" } }, - { Flag, - "tls_client", - 0, - translate("Enable TLS and assume client role"), - { tls_server="" }, { tls_server="0" } }, - { FileUpload, - "ca", - "/etc/easy-rsa/keys/ca.crt", - translate("Certificate authority") }, - { FileUpload, - "dh", - "/etc/easy-rsa/keys/dh1024.pem", - translate("Diffie Hellman parameters") }, - { FileUpload, - "cert", - "/etc/easy-rsa/keys/some-client.crt", - translate("Local certificate") }, - { FileUpload, - "key", - "/etc/easy-rsa/keys/some-client.key", - translate("Local private key") }, - { FileUpload, - "pkcs12", - "/etc/easy-rsa/keys/some-client.pk12", - translate("PKCS#12 file containing keys") }, - { ListValue, - "key_method", - { 1, 2 }, - translate("Enable TLS and assume client role") }, - { Value, - "tls_cipher", - "DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:RC4-SHA:RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5", - translate("TLS cipher") }, - { Value, - "tls_timeout", - 2, - translate("Retransmit timeout on TLS control channel") }, - { Value, - "reneg_bytes", - 1024, - translate("Renegotiate data chan. key after bytes") }, - { Value, - "reneg_pkts", - 100, - translate("Renegotiate data chan. key after packets") }, - { Value, - "reneg_sec", - 3600, - translate("Renegotiate data chan. key after seconds") }, - { Value, - "hand_window", - 60, - translate("Timeframe for key exchange") }, - { Value, - "tran_window", - 3600, - translate("Key transition window") }, - { Flag, - "single_session", - 0, - translate("Allow only one session") }, - { Flag, - "tls_exit", - 0, - translate("Exit on TLS negotiation failure") }, - { Value, - "tls_auth", - "/etc/openvpn/tlsauth.key", - translate("Additional authentication over TLS") }, - { Value, - "tls_crypt", - "/etc/openvpn/tlscrypt.key", - translate("Encrypt and authenticate all control channel packets with the key") }, - -- { Value, - -- "askpass", - -- "[file]", - -- translate("Get PEM password from controlling tty before we daemonize") }, - { Flag, - "auth_nocache", - 0, - translate("Don't cache --askpass or --auth-user-pass passwords") }, - { Value, - "tls_remote", - "remote_x509_name", - translate("Only accept connections from given X509 name") }, - { ListValue, - "ns_cert_type", - { "client", "server" }, - translate("Require explicit designation on certificate") }, - { ListValue, - "remote_cert_tls", - { "client", "server" }, - translate("Require explicit key usage on certificate") }, - { Value, - "crl_verify", - "/etc/easy-rsa/keys/crl.pem", - translate("Check peer certificate against a CRL") }, - { Value, - "tls_version_min", - "1.0", - translate("The lowest supported TLS version") }, - { Value, - "tls_version_max", - "1.2", - translate("The highest supported TLS version") }, - { Value, - "key_direction", - "1", - translate("The key direction for 'tls-auth' and 'secret' options") }, - } } -} - - -local cts = { } -local params = { } - -local m = Map("openvpn") -local p = m:section( SimpleSection ) - -p.template = "openvpn/pageswitch" -p.mode = "advanced" -p.instance = arg[1] -p.category = arg[2] or "Service" - -for _, c in ipairs(knownParams) do - cts[#cts+1] = c[1] - if c[1] == p.category then params = c[2] end -end - -p.categories = cts - - -local s = m:section( - NamedSection, arg[1], "openvpn", - translate("%s" % arg[2]) -) - -s.title = translate("%s" % arg[2]) -s.addremove = false -s.anonymous = true - - -for _, option in ipairs(params) do - local o = s:option( - option[1], option[2], - option[2], option[4] - ) - - if option[1] == DummyValue then - o.value = option[3] - else - if option[1] == DynamicList then - function o.cfgvalue(...) - local val = AbstractValue.cfgvalue(...) - return ( val and type(val) ~= "table" ) and { val } or val - end - end - - o.optional = true - - if type(option[3]) == "table" then - if o.optional then o:value("", "-- remove --") end - for _, v in ipairs(option[3]) do - v = tostring(v) - o:value(v) - end - o.default = tostring(option[3][1]) - else - o.default = tostring(option[3]) - end - end - - for i=5,#option do - if type(option[i]) == "table" then - o:depends(option[i]) - end - end -end - -return m diff --git a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua deleted file mode 100644 index 3f651c0ada..0000000000 --- a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua +++ /dev/null @@ -1,91 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -require("luci.ip") -require("luci.model.uci") - - -local basicParams = { - -- - -- Widget, Name, Default(s), Description - -- - - { ListValue, "verb", { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }, translate("Set output verbosity") }, - { Value, "nice",0, translate("Change process priority") }, - { Value,"port",1194, translate("TCP/UDP port # for both local and remote") }, - { ListValue,"dev_type",{ "tun", "tap" }, translate("Type of used device") }, - { Flag,"tun_ipv6",0, translate("Make tun device IPv6 capable") }, - - { Value,"ifconfig","10.200.200.3 10.200.200.1", translate("Set tun/tap adapter parameters") }, - { Value,"server","10.200.200.0 255.255.255.0", translate("Configure server mode") }, - { Value,"server_bridge","192.168.1.1 255.255.255.0 192.168.1.128 192.168.1.254", translate("Configure server bridge") }, - { Flag,"nobind",0, translate("Do not bind to local address and port") }, - - { ListValue,"comp_lzo",{"yes","no","adaptive"}, translate("Use fast LZO compression") }, - { Value,"keepalive","10 60", translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") }, - - { ListValue,"proto",{ "udp", "tcp-client", "tcp-server" }, translate("Use protocol") }, - - { Flag,"client",0, translate("Configure client mode") }, - { Flag,"client_to_client",0, translate("Allow client-to-client traffic") }, - { DynamicList,"remote","vpnserver.example.org", translate("Remote host name or ip address") }, - - { FileUpload,"secret","/etc/openvpn/secret.key", translate("Enable Static Key encryption mode (non-TLS)") }, - { Value,"key_direction","1", translate("The key direction for 'tls-auth' and 'secret' options") }, - { FileUpload,"pkcs12","/etc/easy-rsa/keys/some-client.pk12", translate("PKCS#12 file containing keys") }, - { FileUpload,"ca","/etc/easy-rsa/keys/ca.crt", translate("Certificate authority") }, - { FileUpload,"dh","/etc/easy-rsa/keys/dh1024.pem", translate("Diffie Hellman parameters") }, - { FileUpload,"cert","/etc/easy-rsa/keys/some-client.crt", translate("Local certificate") }, - { FileUpload,"key","/etc/easy-rsa/keys/some-client.key", translate("Local private key") }, -} - - -local m = Map("openvpn") -local p = m:section( SimpleSection ) - -p.template = "openvpn/pageswitch" -p.mode = "basic" -p.instance = arg[1] - - -local s = m:section( NamedSection, arg[1], "openvpn" ) - -for _, option in ipairs(basicParams) do - local o = s:option( - option[1], option[2], - option[2], option[4] - ) - - o.optional = true - - if option[1] == DummyValue then - o.value = option[3] - else - if option[1] == DynamicList then - function o.cfgvalue(...) - local val = AbstractValue.cfgvalue(...) - return ( val and type(val) ~= "table" ) and { val } or val - end - end - - if type(option[3]) == "table" then - if o.optional then o:value("", "-- remove --") end - for _, v in ipairs(option[3]) do - v = tostring(v) - o:value(v) - end - o.default = tostring(option[3][1]) - else - o.default = tostring(option[3]) - end - end - - for i=5,#option do - if type(option[i]) == "table" then - o:depends(option[i]) - end - end -end - -return m - diff --git a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua deleted file mode 100644 index 719145b887..0000000000 --- a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua +++ /dev/null @@ -1,130 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local sys = require "luci.sys" -local uci = require "luci.model.uci".cursor() -local testfullps = luci.sys.exec("ps --help 2>&1 | grep BusyBox") --check which ps do we have -local psstring = (string.len(testfullps)>0) and "ps w" or "ps axfw" --set command we use to get pid - -local m = Map("openvpn", translate("OpenVPN")) -local s = m:section( TypedSection, "openvpn", translate("OpenVPN instances"), translate("Below is a list of configured OpenVPN instances and their current state") ) -s.template = "cbi/tblsection" -s.template_addremove = "openvpn/cbi-select-input-add" -s.addremove = true -s.add_select_options = { } -s.extedit = luci.dispatcher.build_url( - "admin", "services", "openvpn", "basic", "%s" -) - -uci:load("openvpn_recipes") -uci:foreach( "openvpn_recipes", "openvpn_recipe", - function(section) - s.add_select_options[section['.name']] = - section['_description'] or section['.name'] - end -) - -function s.getPID(section) -- Universal function which returns valid pid # or nil - local pid = sys.exec("%s | grep -w %s | grep openvpn | grep -v grep | awk '{print $1}'" % { psstring,section} ) - if pid and #pid > 0 and tonumber(pid) ~= nil then - return tonumber(pid) - else - return nil - end -end - -function s.parse(self, section) - local recipe = luci.http.formvalue( - luci.cbi.CREATE_PREFIX .. self.config .. "." .. - self.sectiontype .. ".select" - ) - - if recipe and not s.add_select_options[recipe] then - self.invalid_cts = true - else - TypedSection.parse( self, section ) - end -end - -function s.create(self, name) - local recipe = luci.http.formvalue( - luci.cbi.CREATE_PREFIX .. self.config .. "." .. - self.sectiontype .. ".select" - ) - name = luci.http.formvalue( - luci.cbi.CREATE_PREFIX .. self.config .. "." .. - self.sectiontype .. ".text" - ) - if string.len(name)>3 and not name:match("[^a-zA-Z0-9_]") then - uci:section( - "openvpn", "openvpn", name, - uci:get_all( "openvpn_recipes", recipe ) - ) - - uci:delete("openvpn", name, "_role") - uci:delete("openvpn", name, "_description") - uci:save("openvpn") - - luci.http.redirect( self.extedit:format(name) ) - else - self.invalid_cts = true - end -end - - -s:option( Flag, "enabled", translate("Enabled") ) - -local active = s:option( DummyValue, "_active", translate("Started") ) -function active.cfgvalue(self, section) - local pid = s.getPID(section) - if pid ~= nil then - return (sys.process.signal(pid, 0)) - and translatef("yes (%i)", pid) - or translate("no") - end - return translate("no") -end - -local updown = s:option( Button, "_updown", translate("Start/Stop") ) -updown._state = false -updown.redirect = luci.dispatcher.build_url( - "admin", "services", "openvpn" -) -function updown.cbid(self, section) - local pid = s.getPID(section) - self._state = pid ~= nil and sys.process.signal(pid, 0) - self.option = self._state and "stop" or "start" - return AbstractValue.cbid(self, section) -end -function updown.cfgvalue(self, section) - self.title = self._state and "stop" or "start" - self.inputstyle = self._state and "reset" or "reload" -end -function updown.write(self, section, value) - if self.option == "stop" then - local pid = s.getPID(section) - if pid ~= nil then - sys.process.signal(pid,15) - end - else - luci.sys.call("/etc/init.d/openvpn start %s" % section) - end - luci.http.redirect( self.redirect ) -end - - -local port = s:option( DummyValue, "port", translate("Port") ) -function port.cfgvalue(self, section) - local val = AbstractValue.cfgvalue(self, section) - return val or "1194" -end - -local proto = s:option( DummyValue, "proto", translate("Protocol") ) -function proto.cfgvalue(self, section) - local val = AbstractValue.cfgvalue(self, section) - return val or "udp" -end - - -return m diff --git a/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm b/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm deleted file mode 100644 index 0166de778e..0000000000 --- a/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/cbi-select-input-add.htm +++ /dev/null @@ -1,11 +0,0 @@ -
    - <% if self.invalid_cts then -%>
    <% end %> - - - - <% if self.invalid_cts then %>
    <%:Invalid%>
    <% end %> -
    diff --git a/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm b/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm deleted file mode 100644 index f22cb68c7b..0000000000 --- a/package/luci/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm +++ /dev/null @@ -1,30 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -
    - - <%:Overview%> » - <%=luci.i18n.translatef("Instance \"%s\"", self.instance)%> - - - <% if self.mode == "basic" then %> - "><%:Switch to advanced configuration »%> - <% else %> - <%:« Switch to basic configuration%> -
    - <%:Configuration category%>: - <% for i, c in ipairs(self.categories) do %> - <% if c == self.category then %> - <%=translate(c)%> - <% else %> - "><%=translate(c)%> - <% end %> - <% if next(self.categories, i) then %>|<% end %> - <% end %> - <% end %> -
    diff --git a/package/luci/applications/luci-app-openvpn/po/ca/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ca/openvpn.po deleted file mode 100644 index d756469078..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/ca/openvpn.po +++ /dev/null @@ -1,561 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-08-07 20:41+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', o 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Accepta opcions rebudes del servidor" - -msgid "Add" -msgstr "Afegeix" - -msgid "Add route after establishing connection" -msgstr "Afegeix ruta després d'establir connexió" - -msgid "Additional authentication over TLS" -msgstr "Autenticació addicional sobre TLS" - -msgid "Allow client-to-client traffic" -msgstr "Permet tràfic client a client" - -msgid "Allow multiple clients with same certificate" -msgstr "Permet múltiples clients amb el mateix certificat" - -msgid "Allow only one session" -msgstr "Permet només una sessió" - -msgid "Allow remote to change its IP or port" -msgstr "Permet al remot canviar la seva IP o port" - -msgid "Allowed maximum of connected clients" -msgstr "Màxim de clients connectats pemès" - -msgid "Allowed maximum of internal" -msgstr "Màxim permès d'interns" - -msgid "Allowed maximum of new connections" -msgstr "Màxim de noves connexions permesès" - -msgid "Append log to file" -msgstr "Afegeix el registre al fitxer" - -msgid "Authenticate using username/password" -msgstr "Autentica utilitzant nom d'usuari/contrasenya" - -msgid "Automatically redirect default route" -msgstr "Readreça automàticament la ruta per defecte" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" -"A sota hi ha una llista d'instàncies OpenVPN configurades i el seu estat " -"actual" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" -"Crida l'script/comanda de desactivació abans de tancar el dispositiu TUN/TAP" - -msgid "Certificate authority" -msgstr "Autoritat de certificat" - -msgid "Change process priority" -msgstr "Canvia la prioritat del procés" - -msgid "Change to directory before initialization" -msgstr "Canvia el directori abans de la inicialització" - -msgid "Check peer certificate against a CRL" -msgstr "Comprova el certificat de peer contra un CRL" - -msgid "Chroot to directory after initialization" -msgstr "Chroot al directori després de la inicialització" - -msgid "Client is disabled" -msgstr "El client està inhabilitat" - -msgid "Configuration category" -msgstr "Categoria de configuració" - -msgid "Configure client mode" -msgstr "Configura el mode client" - -msgid "Configure server bridge" -msgstr "Configura el pont de servidor" - -msgid "Configure server mode" -msgstr "Configura el mode servidor" - -msgid "Connect through Socks5 proxy" -msgstr "Connecta't a través un proxy Socks5" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Connecta al host remot a través d'un intermediari HTTP" - -msgid "Connection retry interval" -msgstr "Interval de reintent de connexió" - -msgid "Daemonize after initialization" -msgstr "Dimonitza després d'inicialitzar" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "Retarda l'obertura tun/tap i l'execució d'script d'activació" - -msgid "Diffie Hellman parameters" -msgstr "Paràmetres Diffie-Hellman" - -msgid "Directory for custom client config files" -msgstr "Directori per fitxers de configuració de client personalitzats" - -msgid "Disable Paging" -msgstr "Desactiva Paging" - -msgid "Disable cipher initialisation vector" -msgstr "Desactiva xifratge de vector d'inicialització" - -msgid "Disable options consistency check" -msgstr "Desactiva la comprovació de consistència d'opcions" - -msgid "Disable replay protection" -msgstr "Desactiva la protecció de reproducció" - -msgid "Do not bind to local address and port" -msgstr "No vinculis a adreça i port locals" - -msgid "Don't actually execute ifconfig" -msgstr "No executis ifconfig" - -msgid "Don't add routes automatically" -msgstr "No afegeixis rutes automàticament" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "No desis a la memòria cau contrasenyes --askpass o --auth-user-pass" - -msgid "Don't inherit global push options" -msgstr "No heretis les opcions globals enviades pel servidor" - -msgid "Don't log timestamps" -msgstr "No registris les marques horàries" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "No rellegeixis la clau al reiniciar" - -msgid "Don't require client certificate" -msgstr "No requereixis el certificat de client" - -msgid "Don't use adaptive lzo compression" -msgstr "No utilitzis compressió adaptativa LZO" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "No alertis d'inconsistències ifconfig" - -msgid "Echo parameters to log" -msgstr "Escriu els paràmetres al registre" - -msgid "Empirically measure MTU" -msgstr "Mesura empíricament l'MTU" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Habilita els motors criptogràfics de maquinari del OpenSSL" - -msgid "Enable Path MTU discovery" -msgstr "Habilita el descobriment de ruta MTU" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Activa el mode d'encriptació de Clau Estàtica (no-TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Activa el TLS i assumeix el rol de client" - -msgid "Enable TLS and assume server role" -msgstr "Activa el TLS i assumeix el rol de servidor" - -msgid "Enable internal datagram fragmentation" -msgstr "Activa la fragmentació de datagrames interna" - -msgid "Enable management interface on IP port" -msgstr "Activa la interfície de gestió a IP port" - -msgid "Enabled" -msgstr "Activat" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "Xifra d'encriptació per paquets" - -msgid "Execute shell cmd after routes are added" -msgstr "Executa comanda després d'afegir les rutes" - -msgid "Execute shell command on remote ip change" -msgstr "Executa una ordre de consola quan hi hagi un canvi d'IP remot" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "Surt en fallar la negociació TLS" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "Aconsegueix contrasenya PEM de controlar tty abans de dimonitzar" - -msgid "HMAC authentication for packets" -msgstr "Autenticació HMAC per paquets" - -msgid "Handling of authentication failures" -msgstr "Gestió de fallades d'autenticació" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "Si la resolució del nom de màquina falla, reintenta-ho" - -msgid "Instance \"%s\"" -msgstr "Instància \"%s\"" - -msgid "Invalid" -msgstr "Invàlid" - -msgid "Keep local IP address on restart" -msgstr "Mantingues l'adreça IP local al reiniciar" - -msgid "Keep remote IP address on restart" -msgstr "Mantingues l'adreça IP remota al reiniciar" - -msgid "Keep tun/tap device open on restart" -msgstr "Mantingues el dispositiu tun/tap obert al reiniciar" - -msgid "Key transition window" -msgstr "Finestra de transició de clau" - -msgid "Limit repeated log messages" -msgstr "Limita els missatges de registre repetits" - -msgid "Local certificate" -msgstr "Certificat local" - -msgid "Local host name or ip address" -msgstr "Nom de màquina local o adreça IP" - -msgid "Local private key" -msgstr "Clau privada local" - -msgid "Major mode" -msgstr "Mode major" - -msgid "Make tun device IPv6 capable" -msgstr "Fes que el dispositiu tun sigui apte per IPv6" - -msgid "Maximum number of queued TCP output packets" -msgstr "Número màxim de paquets TCP encuats a la sortida" - -msgid "Number of allocated broadcast buffers" -msgstr "Número de memòries intermèdies de difusió assignades" - -msgid "Number of lines for log file history" -msgstr "Número de línies per historial de fitxer de registre" - -msgid "Only accept connections from given X509 name" -msgstr "Accepta connexions només d'un cert nom X509" - -msgid "Only process ping timeouts if routes exist" -msgstr "Processa l'excés de temps d'espera de pings remots si la ruta existeix" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "Instàncies OpenVPN" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Optimitza les escriptures TUN/TAP/UDP" - -msgid "Output to syslog and do not daemonize" -msgstr "Sortida al syslog i no dimonitzis" - -msgid "Overview" -msgstr "Visió de conjunt" - -msgid "PKCS#12 file containing keys" -msgstr "Fitxer PKCS#12 contenidor de claus" - -msgid "Pass environment variables to script" -msgstr "Passa les variables d'ambient a l'script" - -msgid "Persist replay-protection state" -msgstr "Persisteix l'estat de protecció de reproducció" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "Persisteix/deixa de persistir ifconfig-pool" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "Ping remot cada n segons sobre port TCP/UDP" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Proxy timeout in seconds" -msgstr "Temps d'espera màxim de proxy en segons" - -msgid "Push an ifconfig option to remote" -msgstr "Envia una opció ifconfig al remot" - -msgid "Push options to peer" -msgstr "Envia opcions al peer" - -msgid "Query management channel for private key" -msgstr "Consulta el canal de gestió per una clau privada" - -msgid "Randomly choose remote server" -msgstr "Tria aleatòriament el servidor remot" - -msgid "Refuse connection if no custom client config" -msgstr "Refusa la connexió si no hi ha configuració de client personalitzada" - -msgid "Remap SIGUSR1 signals" -msgstr "Remapeja senyals SIGUSR1" - -msgid "Remote host name or ip address" -msgstr "Nom de màquina remot o adreça IP" - -msgid "Remote ping timeout" -msgstr "Temps d'espera màxim de ping remot" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Renegocia clau de canal de dades després de bytes" - -msgid "Renegotiate data chan. key after packets" -msgstr "Renegocia clau de canal de dades després de paquets" - -msgid "Renegotiate data chan. key after seconds" -msgstr "Renegocia clau de canal de dades després de segons" - -msgid "Replay protection sliding window size" -msgstr "Mida de la finestra lliscant de protecció de reproducció" - -msgid "Require explicit designation on certificate" -msgstr "Requereix una designació explícita al certificat" - -msgid "Require explicit key usage on certificate" -msgstr "Requereix ús de clau explícit al certificat" - -msgid "Restart after remote ping timeout" -msgstr "Reinicia després d'excedir el temps d'espera de ping remot" - -msgid "Retransmit timeout on TLS control channel" -msgstr "Temps d'espera de retransmissió en canal de control TLS" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Reintenta indefinidament en errors de proxy HTTP" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Reintenta indefinidament en errors de proxy Socks" - -msgid "Route subnet to client" -msgstr "Enruta subxarxa al client" - -msgid "Run as an inetd or xinetd server" -msgstr "Executa com un servidor inetd o xinetd" - -msgid "Run script cmd on client connection" -msgstr "Executa l'script en connectar-se el client" - -msgid "Run script cmd on client disconnection" -msgstr "Executa l'script en desconnectar-te el client" - -msgid "Run up/down scripts for all restarts" -msgstr "Executa els scripts d'activació/desactivació per tots els reinicis." - -msgid "Send notification to peer on disconnect" -msgstr "Envia notificació al peer en desconnectar-se" - -msgid "Set GID to group" -msgstr "Estableix el GID al grup" - -msgid "Set TCP/UDP MTU" -msgstr "Estableix la MTU de TCP/UDP" - -msgid "Set UID to user" -msgstr "Estableix l'UID per l'usuari" - -msgid "Set aside a pool of subnets" -msgstr "Deixa de banda un conjunt de subxarxes" - -msgid "Set extended HTTP proxy options" -msgstr "Estableix les opcions de proxy HTTP exteses" - -msgid "Set output verbosity" -msgstr "Estableix el detall de sortida" - -msgid "Set size of real and virtual address hash tables" -msgstr "" -"Estableix la mida de les taules de dispersió d'adreces reals i virtuals" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "Estableix la mida de memòria intermèdia de recepció TCP/UDP" - -msgid "Set the TCP/UDP send buffer size" -msgstr "Estableix la mida de memòria intermèdia d'enviament TCP/UDP" - -msgid "Set tun/tap TX queue length" -msgstr "Estableix la mida de cua TX de tun/tap" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "Estableix la MTU del dispositiu tun/tap" - -msgid "Set tun/tap device overhead" -msgstr "Estableix la càrrega (overhead) del dispositiu tun/tap" - -msgid "Set upper bound on TCP MSS" -msgstr "Estableix el límit superior al TCP MSS" - -msgid "Shaping for peer bandwidth" -msgstr "Configuració d'ample de banda d'un peer" - -msgid "Shell cmd to execute after tun device open" -msgstr "Ordre a executar després que s'obri un dispositiu tun" - -msgid "Shell cmd to run after tun device close" -msgstr "Ordre a executar després que es tanqui un dispositiu tun" - -msgid "Shell command to verify X509 name" -msgstr "Ordre de comanda per verificar el nom X509" - -msgid "Silence the output of replay warnings" -msgstr "Silencia la sortida d'alertes de reproducció" - -msgid "Size of cipher key" -msgstr "Mida de la clau de xifratge" - -msgid "Specify a default gateway for routes" -msgstr "Especifica una passarel·la per defecte per rutes" - -msgid "Start OpenVPN in a hibernating state" -msgstr "Inicia l'OpenVPN en un estat d'hivernació" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "Iniciat" - -msgid "Status file format version" -msgstr "Versió de format de fitxer d'estat" - -msgid "Switch to advanced configuration »" -msgstr "Canvia a configuració avançada" - -msgid "TCP/UDP port # for both local and remote" -msgstr "Port TCP/UDP tan per local com per remot" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "Port TCP/UDP per local (defecte=1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "Port TCP/UDP per remot (defecte=1194)" - -msgid "TLS cipher" -msgstr "Xifrador TLS" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "Pas TOS (aplica només a IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "Directori temporal pel fitxer de retorn per la connexió de client" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "Calendari per intercanvi de claus" - -msgid "Type of used device" -msgstr "Tipus de dispositiu utilitzat" - -msgid "Use fast LZO compression" -msgstr "Utilitza compressió ràpida LZO" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Utilitza adreces individuals en comptes de subxarxes /30" - -msgid "Use protocol" -msgstr "Utilitza protocol" - -msgid "Use tun/tap device node" -msgstr "Utilitza un node de dispositiu tun/tap" - -msgid "Use username as common name" -msgstr "Utilitza el nom d'usuari com a nom comú" - -msgid "Write log to file" -msgstr "Escriu registre al fitxer" - -msgid "Write process ID to file" -msgstr "Escriu l'ID del procés al fitxer" - -msgid "Write status to file every n seconds" -msgstr "Escriu l'estat al fitxer cada n segons" - -msgid "no" -msgstr "no" - -msgid "tun/tap device" -msgstr "dispositiu tun/tap" - -msgid "tun/tap inactivity timeout" -msgstr "temps d'espera màxim d'inactivitat tun/tap" - -msgid "yes (%i)" -msgstr "sí (%i)" - -msgid "« Switch to basic configuration" -msgstr "Canvia a configuració bàsica" - -#~ msgid "Cryptography" -#~ msgstr "Criptografia" diff --git a/package/luci/applications/luci-app-openvpn/po/cs/openvpn.po b/package/luci/applications/luci-app-openvpn/po/cs/openvpn.po deleted file mode 100644 index 4fba010530..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/cs/openvpn.po +++ /dev/null @@ -1,561 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-12 19:47+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', nebo 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Přijmout nastavení, přijatá ze serveru" - -msgid "Add" -msgstr "Přidat" - -msgid "Add route after establishing connection" -msgstr "Přidat trasu po navázání spojení" - -msgid "Additional authentication over TLS" -msgstr "Dodatečné ověření přes TLS" - -msgid "Allow client-to-client traffic" -msgstr "Povolit provoz typu klient-klient" - -msgid "Allow multiple clients with same certificate" -msgstr "Povolit více klientů se stejným certifikátem" - -msgid "Allow only one session" -msgstr "Povolit pouze jedno sezení" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "Maximální povolené množství připojených klientů" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "Maximální povolené množství nových připojení" - -msgid "Append log to file" -msgstr "Připojit log do souboru" - -msgid "Authenticate using username/password" -msgstr "Ověřit prostřednictvím uživatelského jména / hesla" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "Certifikační autorita" - -msgid "Change process priority" -msgstr "Změnit prioritu procesu" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "Klient je zakázáný" - -msgid "Configuration category" -msgstr "Konfigurace kategorie" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "Parametry Diffie Hellman" - -msgid "Directory for custom client config files" -msgstr "Adresář s uživatelskými konfiguračními soubory" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Povolit hardwarovou akceleraci OpenSSL" - -msgid "Enable Path MTU discovery" -msgstr "Povolit Path MTU discovery (PMTUD)" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "Povolit TLS a převzít roli klienta" - -msgid "Enable TLS and assume server role" -msgstr "Povolit TLS a převzít roli serveru" - -msgid "Enable internal datagram fragmentation" -msgstr "Povolit interní fragmentaci datagramů" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "Povoleno" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "Instance \"%s\"" - -msgid "Invalid" -msgstr "Neplatné" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "Lokální certifikát" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "Lokální soukromý klíč" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "OpenVPN instance" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "Přehled" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Protocol" -msgstr "Protokol" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "Spustit skript cmd pro připojení klienta" - -msgid "Run script cmd on client disconnection" -msgstr "Spustit skript cmd pro odpojení klienta" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "Velikost šifrovacího klíče" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "Start/Stop" - -msgid "Started" -msgstr "Spuštěno" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "Přepnout na pokročilou konfiguraci »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "TLS šifra" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "ne" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "ano (%i)" - -msgid "« Switch to basic configuration" -msgstr "« Přepnout na základní konfiguraci" - -#~ msgid "Cryptography" -#~ msgstr "Šifrování" - -#~ msgid "Service" -#~ msgstr "Služba" - -#~ msgid "VPN" -#~ msgstr "VPN" diff --git a/package/luci/applications/luci-app-openvpn/po/de/openvpn.po b/package/luci/applications/luci-app-openvpn/po/de/openvpn.po deleted file mode 100644 index a203c92e79..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/de/openvpn.po +++ /dev/null @@ -1,575 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2013-01-28 22:15+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "Topologietyp" - -msgid "Accept options pushed from server" -msgstr "Vom Server übertragene Optionen lokal akzeptieren" - -msgid "Add" -msgstr "Hinzufügen" - -msgid "Add route after establishing connection" -msgstr "Netzwerkrouten nach Verbindungsaufbau einrichten" - -msgid "Additional authentication over TLS" -msgstr "Erweiterte Authentifikation über TLS" - -msgid "Allow client-to-client traffic" -msgstr "Netzwerkverkehr zwischen Teilnehmern zulassen" - -msgid "Allow multiple clients with same certificate" -msgstr "Mehrere Teilnehmer mit selbem Zertifikat erlauben" - -msgid "Allow only one session" -msgstr "Nur eine einzige Verbindung zulassen" - -msgid "Allow remote to change its IP or port" -msgstr "Address- und Port-Änderungen der Gegenstelle zulassen" - -msgid "Allowed maximum of connected clients" -msgstr "Betriebsmodus" - -msgid "Allowed maximum of internal" -msgstr "Maximal erlaubte Anzahl an Netzwerkrouten pro Teilnehmer" - -msgid "Allowed maximum of new connections" -msgstr "Wiederholrate für Verbindungversuche" - -msgid "Append log to file" -msgstr "An Protokolldatei anfügen" - -msgid "Authenticate using username/password" -msgstr "Authentifikation mittels Benutzername und Passwort" - -msgid "Automatically redirect default route" -msgstr "Automatisch die Standard-Route umleiten" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "Liste der konfigurierten OpenVPN Instanzen und ihr momentaner Status" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" -"Shell-Kommando vor Deaktivierung der TUN/TAP Schnittstelle ausführen" - -msgid "Certificate authority" -msgstr "Zertifikat der Zertifizierungsstelle" - -msgid "Change process priority" -msgstr "Prozess-Priorität anpassen" - -msgid "Change to directory before initialization" -msgstr "Vor der Initialisierung in Verzeichnis wechseln" - -msgid "Check peer certificate against a CRL" -msgstr "Teilnehmerzertifikat mit Sperrliste abgleichen" - -msgid "Chroot to directory after initialization" -msgstr "Nach der Initialisierung in Verzeichnis wechseln" - -msgid "Client is disabled" -msgstr "Teilnehmer-Konto deaktivieren" - -msgid "Configuration category" -msgstr "Kategorie" - -msgid "Configure client mode" -msgstr "Clientmodus" - -msgid "Configure server bridge" -msgstr "Server-zu-Server Netzwerkbrücke" - -msgid "Configure server mode" -msgstr "Server-Modus" - -msgid "Connect through Socks5 proxy" -msgstr "Verbindung über einen Socks 5 - Proxy" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Verbindung zum entfernten Rechner über HTTP-Proxy aufbauen" - -msgid "Connection retry interval" -msgstr "Wiederholrate für Verbindungversuche" - -msgid "Daemonize after initialization" -msgstr "Nach der Initialisierung als Hintergrundprozess ausführen" - -msgid "Delay n seconds after connection" -msgstr "Nach dem Verbindungsaufbau um n Sekunden verzögern" - -msgid "Delay tun/tap open and up script execution" -msgstr "Shell-Kommando nach Schnittstelleneinrichtung verzögern" - -msgid "Diffie Hellman parameters" -msgstr "Diffie-Hellman-Parameter" - -msgid "Directory for custom client config files" -msgstr "Verzeichnis für eigene Konfigurationsdateien" - -msgid "Disable Paging" -msgstr "Benutzten Arbeitsspeicher sperren" - -msgid "Disable cipher initialisation vector" -msgstr "Initialisierungsvektor für Verschlüsselung deaktivieren" - -msgid "Disable options consistency check" -msgstr "Konsistenzprüfungen für Optionen durchführen" - -msgid "Disable replay protection" -msgstr "\"Replay\"-Schutz deaktivieren" - -msgid "Do not bind to local address and port" -msgstr "An keine spezielle Adresse binden" - -msgid "Don't actually execute ifconfig" -msgstr "Schnittstellenkonfiguration nicht durchführen" - -msgid "Don't add routes automatically" -msgstr "Netzwerkrouten nicht automatisch einrichten" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "Authentifikationsdaten nicht zwischenspeichern" - -msgid "Don't inherit global push options" -msgstr "Nur teilnehmerspezifische Optionen übertragen" - -msgid "Don't log timestamps" -msgstr "Keine Zeitangaben protokollieren" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "Schlüssel bei Neustarts beibehalten" - -msgid "Don't require client certificate" -msgstr "Verbindung ohne Teilnehmerzertifikat erlauben" - -msgid "Don't use adaptive lzo compression" -msgstr "Adaptive LZO-Kompression deaktivieren" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "Keine Warnung bei inkonsistenter Schnittstellenkonfiguration" - -msgid "Echo parameters to log" -msgstr "Parameter in Protokolldatei speichern" - -msgid "Empirically measure MTU" -msgstr "MTU regelmäßig testen" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "OpenSSL-Unterstützung für Kryptographie-Hardware benutzen" - -msgid "Enable Path MTU discovery" -msgstr "MTU-Erkennung aktivieren" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Verschlüsselung mittels statischer Schlüssel (kein TLS)" - -msgid "Enable TLS and assume client role" -msgstr "TLS im Client-Betriebsmodus aktivieren" - -msgid "Enable TLS and assume server role" -msgstr "TLS im Server-Betriebsmodus aktivieren" - -msgid "Enable internal datagram fragmentation" -msgstr "Datenpakete bei Bedarf fragmentieren" - -msgid "Enable management interface on IP port" -msgstr "Administratorschnittstelle aktivieren" - -msgid "Enabled" -msgstr "Einschalten" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "Verschlüsselungsalgorithmus für Pakete" - -msgid "Execute shell cmd after routes are added" -msgstr "Shell-Befehl nach Routen-Einrichtung ausführen" - -msgid "Execute shell command on remote ip change" -msgstr "Programm bei Adressänderung der Gegenstelle aufrufen" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" -"Wird bei neuen Client-Verbindungen im Servermodus ausgeführt, wenn dem " -"Clienten noch nicht vertraut wird" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" -"Wird im Servermodus ausgeführt, wann immer eine IPv4-Adresse/Route oder MAC-" -"Adresse zur internen Routingtabelle von OpenVPN hinzugefügt wird" - -msgid "Exit on TLS negotiation failure" -msgstr "Terminieren nach fehlgeschlagenem Schlüsselaustausch" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "PEM-Passwort von Konsole abfragen" - -msgid "HMAC authentication for packets" -msgstr "HMAC-Authentifizierung für Pakete" - -msgid "Handling of authentication failures" -msgstr "Behandlung von Authentifikationsfehlern" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" -"Helfer-Direktive, um den Ausdruck von --ping und --ping-restart in " -"Servermodus-Konfigurationen zu vereinfachen" - -msgid "If hostname resolve fails, retry" -msgstr "Neuer Verbindungsversuch wenn Namensauflösung fehlschlägt" - -msgid "Instance \"%s\"" -msgstr "Instanz \"%s\"" - -msgid "Invalid" -msgstr "Ungültig" - -msgid "Keep local IP address on restart" -msgstr "Lokale IP-Adresse bei Neustarts beibehalten" - -msgid "Keep remote IP address on restart" -msgstr "IP-Adresse der Gegenstelle bei Neustarts beibehalten" - -msgid "Keep tun/tap device open on restart" -msgstr "TUN/TAP Schnittelle bei Neustarts offen halten" - -msgid "Key transition window" -msgstr "Maximaler Zeitraum für Schlüsselwechsel" - -msgid "Limit repeated log messages" -msgstr "Wiederholende Protokollmeldungen unterdrücken" - -msgid "Local certificate" -msgstr "Lokales Zertifikat" - -msgid "Local host name or ip address" -msgstr "Lokaler Rechnername oder IP Adresse" - -msgid "Local private key" -msgstr "Lokaler privater Schlüssel" - -msgid "Major mode" -msgstr "Betriebsmodus" - -msgid "Make tun device IPv6 capable" -msgstr "IPv6 auf TUN Schnittstellen aktivieren" - -msgid "Maximum number of queued TCP output packets" -msgstr "Maximale Anzahl an TCP-Paketen in der Warteschlange" - -msgid "Number of allocated broadcast buffers" -msgstr "Anzahl der benutzten Broadcast-Puffer" - -msgid "Number of lines for log file history" -msgstr "Anzahl der Zeilen im Protokoll-Zwischenspeicher" - -msgid "Only accept connections from given X509 name" -msgstr "Nur Verbindungen vom angegebenem X.509 Name zulassen" - -msgid "Only process ping timeouts if routes exist" -msgstr "Ping-Timeouts nur bei vorhandenen Routen auslösen" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "OpenVPN Instanzen" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "TUN-, TAP- und UDP-Schreibvorgänge optimieren" - -msgid "Output to syslog and do not daemonize" -msgstr "Ausgaben ins Systemprotokoll umleiten und im Vordergrund ausführen" - -msgid "Overview" -msgstr "Übersicht" - -msgid "PKCS#12 file containing keys" -msgstr "PKCS#12 Schlüsselarchiv" - -msgid "Pass environment variables to script" -msgstr "Umgebungsvariablen für Shell-Befehle" - -msgid "Persist replay-protection state" -msgstr "Persistenter Status für \"Replay\"-Schutz" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "Persistenten IP-Adressbereich nutzen" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "Ping-Intervall für Gegenstellen" - -msgid "Policy level over usage of external programs and scripts" -msgstr "Policy-Ebene über Nutzung von externen Programmen und Skripten" - -msgid "Port" -msgstr "Netzwerkport" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Proxy timeout in seconds" -msgstr "Maximaler Timeout für Proxy-Verbindungen" - -msgid "Push an ifconfig option to remote" -msgstr "IP-Adresskonfiguration an Teilnehmer übertragen" - -msgid "Push options to peer" -msgstr "Optionen an Teilnehmer übertragen" - -msgid "Query management channel for private key" -msgstr "Privaten Schlüssel über Management-Kanal abfragen" - -msgid "Randomly choose remote server" -msgstr "Entfernten Server zufällig wählen" - -msgid "Refuse connection if no custom client config" -msgstr "Teilnehmer-Verbindung verweigern wenn Teilnehmer-Konfiguration fehlt" - -msgid "Remap SIGUSR1 signals" -msgstr "\"USR1\" Systemsignal umleiten" - -msgid "Remote host name or ip address" -msgstr "Entfernter Rechnername oder IP-Adresse" - -msgid "Remote ping timeout" -msgstr "Ping-Timeout für Gegenstellen" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Schlüssel nach maximale Verkehrsmenge neu aushandeln" - -msgid "Renegotiate data chan. key after packets" -msgstr "Schlüssel nach maximaler Anzahl von Paketen neu aushandeln" - -msgid "Renegotiate data chan. key after seconds" -msgstr "Schlüssel nach maximaler Verbindungsdauer neu aushandeln" - -msgid "Replay protection sliding window size" -msgstr "Fenstergröße für \"Replay\"-Schutz" - -msgid "Require explicit designation on certificate" -msgstr "Verwendungszweck von Zertifikaten überprüfen" - -msgid "Require explicit key usage on certificate" -msgstr "Zertifikat explizit auf einfachen Verwendungszweck prüfen" - -msgid "Restart after remote ping timeout" -msgstr "Neu Starten nach Ping-Timeout an Gegenstellen" - -msgid "Retransmit timeout on TLS control channel" -msgstr "TLS Timeout" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Neue Verbindung bei Proxy-Fehlern aufbauen" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Neue Verbindung bei Proxy-Fehlern aufbauen" - -msgid "Route subnet to client" -msgstr "Subnetz an Teilnehmer routen" - -msgid "Run as an inetd or xinetd server" -msgstr "Als inetd oder xinetd Server laufen" - -msgid "Run script cmd on client connection" -msgstr "Shell-Kommando bei neuer Teilnehmer-Verbindung ausführen" - -msgid "Run script cmd on client disconnection" -msgstr "Shell-Kommando beim Trennen von Teilnehmer-Verbindungen ausführen" - -msgid "Run up/down scripts for all restarts" -msgstr "Shell-Kommandos bei jedem Neustart ausführen" - -msgid "Send notification to peer on disconnect" -msgstr "Teilnehmer über Verbindungstrennung informieren" - -msgid "Set GID to group" -msgstr "Dienst mit Benutzergruppe laufen lassen" - -msgid "Set TCP/UDP MTU" -msgstr "MTU für TCP/UDP Protokoll festlegen" - -msgid "Set UID to user" -msgstr "Dienst als Benutzer laufen lassen" - -msgid "Set aside a pool of subnets" -msgstr "IP-Adressbereich für zu vergebende Subnetze" - -msgid "Set extended HTTP proxy options" -msgstr "Erweiterte HTTP-Proxy Einstellungen vornehmen" - -msgid "Set output verbosity" -msgstr "Detailstufe für Protokolle" - -msgid "Set size of real and virtual address hash tables" -msgstr "Größe für interne Adresstabellen" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "Größe des TCP/UDP Empfangs-Puffers" - -msgid "Set the TCP/UDP send buffer size" -msgstr "Größe des TCP/UDP Sende-Puffers" - -msgid "Set tun/tap TX queue length" -msgstr "Größe der Sende-Warteschlange" - -msgid "Set tun/tap adapter parameters" -msgstr "Tun/Tap parameter einstellen" - -msgid "Set tun/tap device MTU" -msgstr "MTU für TUN/TAP Schnittstelle festlegen" - -msgid "Set tun/tap device overhead" -msgstr "Overhead für TUN/TAP Schnittstelle festlegen" - -msgid "Set upper bound on TCP MSS" -msgstr "Maximale TCP-MSS erzwingen" - -msgid "Shaping for peer bandwidth" -msgstr "Verbindungsrate von Gegenstellen limitieren" - -msgid "Shell cmd to execute after tun device open" -msgstr "Shell-Kommando nach Einrichtung von TUN/TAP Schnittstelle ausführen" - -msgid "Shell cmd to run after tun device close" -msgstr "" -"Shell-Kommando nach Deaktivierung der TUN/TAP Schnittstelle " -"ausführen" - -msgid "Shell command to verify X509 name" -msgstr "Shell-Kommando zum Überprüfen das X.509 Namens" - -msgid "Silence the output of replay warnings" -msgstr "\"Replay\"-Warnungen unterdrücken" - -msgid "Size of cipher key" -msgstr "Größe des Schlüssels" - -msgid "Specify a default gateway for routes" -msgstr "Standard-Gateway für Netzwerkrouten" - -msgid "Start OpenVPN in a hibernating state" -msgstr "OpenVPN im Schlafmodus starten" - -msgid "Start/Stop" -msgstr "Start/Stopp" - -msgid "Started" -msgstr "Gestartet" - -msgid "Status file format version" -msgstr "Format für Status-Datei" - -msgid "Switch to advanced configuration »" -msgstr "Erweiterte Einstellungen" - -msgid "TCP/UDP port # for both local and remote" -msgstr "Benutzter TCP oder UDP Port" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "Lokaler TCP oder UDP Port" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "TCP oder UDP Port der Gegenstelle" - -msgid "TLS cipher" -msgstr "TLS Verschlüsselungsalgorithmus" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "\"TOS\" Durchleitung (nur für IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "Temporäres Verzeichnis für Teilnehmer-Verbindungen" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "Maximaler Zeitraum für Schlüsselaustausch" - -msgid "Type of used device" -msgstr "Schnittstellentyp" - -msgid "Use fast LZO compression" -msgstr "Schnelle LZO-Kompression benutzen" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Einzeladressen statt /30 Subnetze vergeben" - -msgid "Use protocol" -msgstr "Netzwerkprotokoll" - -msgid "Use tun/tap device node" -msgstr "TUN/TAP Gerätedatei" - -msgid "Use username as common name" -msgstr "Benutzernamen als Common-Name benutzen" - -msgid "Write log to file" -msgstr "In Protokolldatei schreiben" - -msgid "Write process ID to file" -msgstr "Prozess-Nummer in Datei schreiben" - -msgid "Write status to file every n seconds" -msgstr "Status-Datei schreiben" - -msgid "no" -msgstr "Nicht gestartet" - -msgid "tun/tap device" -msgstr "TUN/TAP Schnittstelle" - -msgid "tun/tap inactivity timeout" -msgstr "Inaktivitäts-Timeout für TUN/TAP Schnittstellen" - -msgid "yes (%i)" -msgstr "Gestartet (%s)" - -msgid "« Switch to basic configuration" -msgstr "« Zur vereinfachten Konfiguration wechseln" - -#~ msgid "Cryptography" -#~ msgstr "Kryptographie" - -#~ msgid "Networking" -#~ msgstr "Netzwerk" - -#~ msgid "Service" -#~ msgstr "Dienst" - -#~ msgid "VPN" -#~ msgstr "VPN" diff --git a/package/luci/applications/luci-app-openvpn/po/el/openvpn.po b/package/luci/applications/luci-app-openvpn/po/el/openvpn.po deleted file mode 100644 index 63dd8985a8..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/el/openvpn.po +++ /dev/null @@ -1,572 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: 2012-03-18 15:23+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "Προσθήκη" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "" - -msgid "Allow remote to change its IP or port" -msgstr "Επιτρέπουμε στον απομακρυσμένο να αλλάξει την IP ή τη θύρα" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" -"Παρακάτω είναι μία λίστα των ρυθμισμένων περιστατικών OpenVPN και της " -"τρέχουσας κατάστασής τους" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "Σύνδεση μέσω διαμεσολαβητή Socks5" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "Διάστημα επαναπροσπάθειας σύνδεσης" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "Μη συνδέσεις σε τοπική διεύθυνση και θύρα" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "Ενεργοποιημένο" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "Εκτέλεση της εντολής κελύφους στην αλλαγή IP του απομακρυσμένου" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" -"Αν αποτύχει η μετατροπή του ονόματος του μηχανήματος σε IP, ξαναπροσπάθησε" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "Όνομα τοπικού μηχανήματος ή διεύθυνση IP" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "Διεργασίες OpenVPN" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "Θύρα" - -msgid "Protocol" -msgstr "Πρωτόκολλο" - -msgid "Proxy timeout in seconds" -msgstr "Τέλος χρόνου μεσολαβητή σε δευτερόλεπτα" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "Τυχαία επιλογή απομακρυσμένου διακομιστή" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "Όνομα απομακρυσμένου μηχανήματος ή διεύθυνση IP" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Επαναπροσπάθεια για πάντα αν υπάρχουν λάθη HTTP στο μεσολαβητή" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Επαναπροσπάθεια για πάντα σε περίπτωση λαθών στο διαμεσολαβητή Socks5" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "Ορισμός εκτεταμένων ρυθμίσεων διαμεσολαβητή HTTP" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "Εκκίνηση/Τερματισμός" - -msgid "Started" -msgstr "Ξεκίνησε" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "Μετάβαση στις προχωρημένες ρυθμίσεις »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "TCP/UDP νούμερο θύρας για το τοπικό και το απομακρυσμένο" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "TCP/UDP αριθμός θύρας για το τοπικό (εξ'ορισμού=1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "TCP/UDP αριθμός θύρας για τον απομακρυσμένο (εξ'ορισμού=1194)" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "Είδος χρησιμοποιούμενης συσκευής" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "όχι" - -msgid "tun/tap device" -msgstr "Συσκευή tun/tap" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "ναι (%i)" - -msgid "« Switch to basic configuration" -msgstr "« Μετάβαση στις βασικές επιλογές" - -#~ msgid "Cryptography" -#~ msgstr "Κρυπτογραφία" - -#~ msgid "Service" -#~ msgstr "Υπηρεσία" - -#~ msgid "VPN" -#~ msgstr "VPN" - -#~ msgid "openvpn_%s" -#~ msgstr "openvpn_%s" - -#~ msgid "openvpn_%s_desc" -#~ msgstr "openvpn_%s_desc" diff --git a/package/luci/applications/luci-app-openvpn/po/en/openvpn.po b/package/luci/applications/luci-app-openvpn/po/en/openvpn.po deleted file mode 100644 index 51819f6b09..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/en/openvpn.po +++ /dev/null @@ -1,555 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: 2012-04-03 08:45+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', or 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Accept options pushed from server" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "Add route after establishing connection" - -msgid "Additional authentication over TLS" -msgstr "Additional authentication over TLS" - -msgid "Allow client-to-client traffic" -msgstr "Allow client-to-client traffic" - -msgid "Allow multiple clients with same certificate" -msgstr "Allow multiple clients with same certificate" - -msgid "Allow only one session" -msgstr "Allow only one session" - -msgid "Allow remote to change its IP or port" -msgstr "Allow remote to change its IP or port" - -msgid "Allowed maximum of connected clients" -msgstr "Allowed maximum of connected clients" - -msgid "Allowed maximum of internal" -msgstr "Allowed maximum of internal" - -msgid "Allowed maximum of new connections" -msgstr "Allowed maximum of new connections" - -msgid "Append log to file" -msgstr "Append log to file" - -msgid "Authenticate using username/password" -msgstr "Authenticate using username/password" - -msgid "Automatically redirect default route" -msgstr "Automatically redirect default route" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" -"Below is a list of configured OpenVPN instances and their current state" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "Call down cmd/script before TUN/TAP close" - -msgid "Certificate authority" -msgstr "Certificate authority" - -msgid "Change process priority" -msgstr "Change process priority" - -msgid "Change to directory before initialization" -msgstr "Change to directory before initialization" - -msgid "Check peer certificate against a CRL" -msgstr "Check peer certificate against a CRL" - -msgid "Chroot to directory after initialization" -msgstr "Chroot to directory after initialization" - -msgid "Client is disabled" -msgstr "Client is disabled" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "Configure client mode" - -msgid "Configure server bridge" -msgstr "Configure server bridge" - -msgid "Configure server mode" -msgstr "Configure server mode" - -msgid "Connect through Socks5 proxy" -msgstr "Connect through Socks5 proxy" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "Connection retry interval" - -msgid "Daemonize after initialization" -msgstr "Daemonize after initialization" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "Delay tun/tap open and up script execution" - -msgid "Diffie Hellman parameters" -msgstr "Diffie Hellman parameters" - -msgid "Directory for custom client config files" -msgstr "Directory for custom client config files" - -msgid "Disable Paging" -msgstr "Disable Paging" - -msgid "Disable cipher initialisation vector" -msgstr "Disable cipher initialisation vector" - -msgid "Disable options consistency check" -msgstr "Disable options consistency check" - -msgid "Disable replay protection" -msgstr "Disable replay protection" - -msgid "Do not bind to local address and port" -msgstr "Do not bind to local address and port" - -msgid "Don't actually execute ifconfig" -msgstr "Don't actually execute ifconfig" - -msgid "Don't add routes automatically" -msgstr "Don't add routes automatically" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "Don't cache --askpass or --auth-user-pass passwords" - -msgid "Don't inherit global push options" -msgstr "Don't inherit global push options" - -msgid "Don't log timestamps" -msgstr "Don't log timestamps" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "Don't re-read key on restart" - -msgid "Don't require client certificate" -msgstr "Don't require client certificate" - -msgid "Don't use adaptive lzo compression" -msgstr "Don't use adaptive lzo compression" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "Don't warn on ifconfig inconsistencies" - -msgid "Echo parameters to log" -msgstr "Echo parameters to log" - -msgid "Empirically measure MTU" -msgstr "Empirically measure MTU" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Enable OpenSSL hardware crypto engines" - -msgid "Enable Path MTU discovery" -msgstr "Enable Path MTU discovery" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Enable Static Key encryption mode (non-TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Enable TLS and assume client role" - -msgid "Enable TLS and assume server role" -msgstr "Enable TLS and assume server role" - -msgid "Enable internal datagram fragmentation" -msgstr "Enable internal datagram fragmentation" - -msgid "Enable management interface on IP port" -msgstr "Enable management interface on IP port" - -msgid "Enabled" -msgstr "Enabled" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "Encrypt and authenticate all control channel packets with the key" - -msgid "Encryption cipher for packets" -msgstr "Encryption cipher for packets" - -msgid "Execute shell cmd after routes are added" -msgstr "Execute shell cmd after routes are added" - -msgid "Execute shell command on remote ip change" -msgstr "Execute shell command on remote ip change" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "Exit on TLS negotiation failure" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "Get PEM password from controlling tty before we daemonize" - -msgid "HMAC authentication for packets" -msgstr "HMAC authentication for packets" - -msgid "Handling of authentication failures" -msgstr "Handling of authentication failures" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "If hostname resolve fails, retry" - -msgid "Instance \"%s\"" -msgstr "Instance \"%s\"" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "Keep local IP address on restart" - -msgid "Keep remote IP address on restart" -msgstr "Keep remote IP address on restart" - -msgid "Keep tun/tap device open on restart" -msgstr "Keep tun/tap device open on restart" - -msgid "Key transition window" -msgstr "Key transition window" - -msgid "Limit repeated log messages" -msgstr "Limit repeated log messages" - -msgid "Local certificate" -msgstr "Local certificate" - -msgid "Local host name or ip address" -msgstr "Local host name or ip address" - -msgid "Local private key" -msgstr "Local private key" - -msgid "Major mode" -msgstr "Major mode" - -msgid "Make tun device IPv6 capable" -msgstr "Make tun device IPv6 capable" - -msgid "Maximum number of queued TCP output packets" -msgstr "Maximum number of queued TCP output packets" - -msgid "Number of allocated broadcast buffers" -msgstr "Number of allocated broadcast buffers" - -msgid "Number of lines for log file history" -msgstr "Number of lines for log file history" - -msgid "Only accept connections from given X509 name" -msgstr "Only accept connections from given X509 name" - -msgid "Only process ping timeouts if routes exist" -msgstr "Only process ping timeouts if routes exist" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "OpenVPN instances" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Optimize TUN/TAP/UDP writes" - -msgid "Output to syslog and do not daemonize" -msgstr "Output to syslog and do not daemonize" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "PKCS#12 file containing keys" - -msgid "Pass environment variables to script" -msgstr "Pass environment variables to script" - -msgid "Persist replay-protection state" -msgstr "Persist replay-protection state" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "Persist/unpersist ifconfig-pool" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "Ping remote every n seconds over TCP/UDP port" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Proxy timeout in seconds" -msgstr "Proxy timeout in seconds" - -msgid "Push an ifconfig option to remote" -msgstr "Push an ifconfig option to remote" - -msgid "Push options to peer" -msgstr "Push options to peer" - -msgid "Query management channel for private key" -msgstr "Query management channel for private key" - -msgid "Randomly choose remote server" -msgstr "Randomly choose remote server" - -msgid "Refuse connection if no custom client config" -msgstr "Refuse connection if no custom client config" - -msgid "Remap SIGUSR1 signals" -msgstr "Remap SIGUSR1 signals" - -msgid "Remote host name or ip address" -msgstr "Remote host name or ip address" - -msgid "Remote ping timeout" -msgstr "Remote ping timeout" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Renegotiate data chan. key after bytes" - -msgid "Renegotiate data chan. key after packets" -msgstr "Renegotiate data chan. key after packets" - -msgid "Renegotiate data chan. key after seconds" -msgstr "Renegotiate data chan. key after seconds" - -msgid "Replay protection sliding window size" -msgstr "Replay protection sliding window size" - -msgid "Require explicit designation on certificate" -msgstr "Require explicit designation on certificate" - -msgid "Require explicit key usage on certificate" -msgstr "Require explicit key usage on certificate" - -msgid "Restart after remote ping timeout" -msgstr "Restart after remote ping timeout" - -msgid "Retransmit timeout on TLS control channel" -msgstr "Retransmit timeout on TLS control channel" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Retry indefinitely on HTTP proxy errors" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Retry indefinitely on Socks proxy errors" - -msgid "Route subnet to client" -msgstr "Route subnet to client" - -msgid "Run as an inetd or xinetd server" -msgstr "Run as an inetd or xinetd server" - -msgid "Run script cmd on client connection" -msgstr "Run script cmd on client connection" - -msgid "Run script cmd on client disconnection" -msgstr "Run script cmd on client disconnection" - -msgid "Run up/down scripts for all restarts" -msgstr "Run up/down scripts for all restarts" - -msgid "Send notification to peer on disconnect" -msgstr "Send notification to peer on disconnect" - -msgid "Set GID to group" -msgstr "Set GID to group" - -msgid "Set TCP/UDP MTU" -msgstr "Set TCP/UDP MTU" - -msgid "Set UID to user" -msgstr "Set UID to user" - -msgid "Set aside a pool of subnets" -msgstr "Set aside a pool of subnets" - -msgid "Set extended HTTP proxy options" -msgstr "Set extended HTTP proxy options" - -msgid "Set output verbosity" -msgstr "Set output verbosity" - -msgid "Set size of real and virtual address hash tables" -msgstr "Set size of real and virtual address hash tables" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "Set the TCP/UDP receive buffer size" - -msgid "Set the TCP/UDP send buffer size" -msgstr "Set the TCP/UDP send buffer size" - -msgid "Set tun/tap TX queue length" -msgstr "Set tun/tap TX queue length" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "Set tun/tap device MTU" - -msgid "Set tun/tap device overhead" -msgstr "Set tun/tap device overhead" - -msgid "Set upper bound on TCP MSS" -msgstr "Set upper bound on TCP MSS" - -msgid "Shaping for peer bandwidth" -msgstr "Shaping for peer bandwidth" - -msgid "Shell cmd to execute after tun device open" -msgstr "Shell cmd to execute after tun device open" - -msgid "Shell cmd to run after tun device close" -msgstr "Shell cmd to run after tun device close" - -msgid "Shell command to verify X509 name" -msgstr "Shell command to verify X509 name" - -msgid "Silence the output of replay warnings" -msgstr "Silence the output of replay warnings" - -msgid "Size of cipher key" -msgstr "Size of cipher key" - -msgid "Specify a default gateway for routes" -msgstr "Specify a default gateway for routes" - -msgid "Start OpenVPN in a hibernating state" -msgstr "Start OpenVPN in a hibernating state" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "Started" - -msgid "Status file format version" -msgstr "Status file format version" - -msgid "Switch to advanced configuration »" -msgstr "Switch to advanced configuration »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "TCP/UDP port # for both local and remote" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "TCP/UDP port # for local (default=1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "TCP/UDP port # for remote (default=1194)" - -msgid "TLS cipher" -msgstr "TLS cipher" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "TOS passthrough (applies to IPv4 only)" - -msgid "Temporary directory for client-connect return file" -msgstr "Temporary directory for client-connect return file" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "Timeframe for key exchange" - -msgid "Type of used device" -msgstr "Type of used device" - -msgid "Use fast LZO compression" -msgstr "Use fast LZO compression" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Use individual addresses rather than /30 subnets" - -msgid "Use protocol" -msgstr "Use protocol" - -msgid "Use tun/tap device node" -msgstr "Use tun/tap device node" - -msgid "Use username as common name" -msgstr "Use username as common name" - -msgid "Write log to file" -msgstr "Write log to file" - -msgid "Write process ID to file" -msgstr "Write process ID to file" - -msgid "Write status to file every n seconds" -msgstr "Write status to file every n seconds" - -msgid "no" -msgstr "no" - -msgid "tun/tap device" -msgstr "tun/tap device" - -msgid "tun/tap inactivity timeout" -msgstr "tun/tap inactivity timeout" - -msgid "yes (%i)" -msgstr "yes (%i)" - -msgid "« Switch to basic configuration" -msgstr "« Switch to basic configuration" diff --git a/package/luci/applications/luci-app-openvpn/po/es/openvpn.po b/package/luci/applications/luci-app-openvpn/po/es/openvpn.po deleted file mode 100644 index 819e7ee509..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/es/openvpn.po +++ /dev/null @@ -1,574 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2013-09-01 09:09+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', o 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Aceptar opciones envidadas desde el servidor" - -msgid "Add" -msgstr "Añadir" - -msgid "Add route after establishing connection" -msgstr "Añadir la ruta tras establecer la conexión" - -msgid "Additional authentication over TLS" -msgstr "Autentificación adicional con TLS" - -msgid "Allow client-to-client traffic" -msgstr "Permitir el tráfico cliente-a-cliente" - -msgid "Allow multiple clients with same certificate" -msgstr "Permitir múltiples clientes con el mismo certificado" - -msgid "Allow only one session" -msgstr "Permitir sólo una sesión" - -msgid "Allow remote to change its IP or port" -msgstr "Permitir al conectado cambiar su IP o puerto" - -msgid "Allowed maximum of connected clients" -msgstr "Máximo de clientes conectados" - -msgid "Allowed maximum of internal" -msgstr "Máximo de internos" - -msgid "Allowed maximum of new connections" -msgstr "Máximo de nuevas conexiones" - -msgid "Append log to file" -msgstr "Unir registro al archivo" - -msgid "Authenticate using username/password" -msgstr "Autentificar con nombre usuario y contraseña" - -msgid "Automatically redirect default route" -msgstr "Redirigir automáticamente la ruta por defecto" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "Instancias OpenVPN configuradas y estado actual" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "Comando/script a llamar al cerrar el dispositivo TUn/TAP" - -msgid "Certificate authority" -msgstr "Autoridad certificativa" - -msgid "Change process priority" -msgstr "Cambiar la prioridad del proceso" - -msgid "Change to directory before initialization" -msgstr "Cambiar a este directorio antes de inicializar" - -msgid "Check peer certificate against a CRL" -msgstr "Comprobar certificados contra un CRL" - -msgid "Chroot to directory after initialization" -msgstr "Restringir a este directorio tras inicializar" - -msgid "Client is disabled" -msgstr "Cliente desactivado" - -msgid "Configuration category" -msgstr "Categoría de configuración" - -msgid "Configure client mode" -msgstr "Configurar el modo cliente" - -msgid "Configure server bridge" -msgstr "Configurar el puente servidor" - -msgid "Configure server mode" -msgstr "Configurar el modo servidor" - -msgid "Connect through Socks5 proxy" -msgstr "Conectar por un proxy Socks5" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Conectar a la máquina remota usando un proxy HTTP" - -msgid "Connection retry interval" -msgstr "Intervalo de reconexión" - -msgid "Daemonize after initialization" -msgstr "Demonizar tras inicialización" - -msgid "Delay n seconds after connection" -msgstr "Espera tras conexión (segundos)" - -msgid "Delay tun/tap open and up script execution" -msgstr "Espera para la apertura TUN/TAP y ejecución del script de arranque" - -msgid "Diffie Hellman parameters" -msgstr "Parámetros Diffie-Hellman" - -msgid "Directory for custom client config files" -msgstr "Directorio de configuraciones personalizadas" - -msgid "Disable Paging" -msgstr "Desactivar paginación" - -msgid "Disable cipher initialisation vector" -msgstr "Desactivar vector de inicialización de cifrado" - -msgid "Disable options consistency check" -msgstr "Desactivar comprobación de consistencia de opciones" - -msgid "Disable replay protection" -msgstr "Desactivar la protección contra reproducción" - -msgid "Do not bind to local address and port" -msgstr "No asociar a un puerto y dirección locales" - -msgid "Don't actually execute ifconfig" -msgstr "No ejecutar ifconfig" - -msgid "Don't add routes automatically" -msgstr "No añadir rutas automáticamente" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "No guardar las contraseñas --askpass o --auth-user-pass" - -msgid "Don't inherit global push options" -msgstr "No heredar opciones push globales" - -msgid "Don't log timestamps" -msgstr "No guardar en registro horas" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "No releer la clave al rearrancar" - -msgid "Don't require client certificate" -msgstr "No es necesario certificado cliente" - -msgid "Don't use adaptive lzo compression" -msgstr "No usar compresión adaptativa LZO" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "No avisar de inconsistencias en ifconfig" - -msgid "Echo parameters to log" -msgstr "Guardar parámetros en el registro" - -msgid "Empirically measure MTU" -msgstr "Medir MTU empíricamente" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Motor criptográfico por hardware OpenSSL" - -msgid "Enable Path MTU discovery" -msgstr "Detección de MTU" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Modo de encriptado de clave estática (no-TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Activar TLS y asumir el papel de cliente" - -msgid "Enable TLS and assume server role" -msgstr "Activar TLS y asumir el papel de servidor" - -msgid "Enable internal datagram fragmentation" -msgstr "Fragmentación de datagramas interna" - -msgid "Enable management interface on IP port" -msgstr "Interfaz de gestión en IP puerto" - -msgid "Enabled" -msgstr "Activado" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "Cifra de encriptación de paquetes" - -msgid "Execute shell cmd after routes are added" -msgstr "Comandos a ejecutar tras añadir rutas" - -msgid "Execute shell command on remote ip change" -msgstr "Comando a ejecutar si se cambia la IP remota" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" -"Ejecutado en modo servidor en nuevas conexiones de clientes, cuando no se " -"confía aún en el cliente" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" -"Ejecutado en modo servidor cuando una ruta, dirección IPv4 o dirección MAC " -"se añade a la tabla de rutas interna de OpenVPN" - -msgid "Exit on TLS negotiation failure" -msgstr "Salir si falla la negociación" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "Obtener la clave PEM del tty de control antes de demonizar" - -msgid "HMAC authentication for packets" -msgstr "Autentificación HMAC de paquetes" - -msgid "Handling of authentication failures" -msgstr "Gestión de fallos de autentificación" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" -"Directriz para simplificar la expresión de --ping y --ping-restart en " -"configuraciones en modo servido" - -msgid "If hostname resolve fails, retry" -msgstr "Reintentar si falla la resolución de nombre de máquina" - -msgid "Instance \"%s\"" -msgstr "Instancia \"%s\"" - -msgid "Invalid" -msgstr "No válido" - -msgid "Keep local IP address on restart" -msgstr "Mantener la dirección IP local al rearrancar" - -msgid "Keep remote IP address on restart" -msgstr "Mantener la dirección IP remota al rearrancar" - -msgid "Keep tun/tap device open on restart" -msgstr "Mantener el dispositivo TUN/TAP abierto al rearrancar" - -msgid "Key transition window" -msgstr "Ventana de transición de clave" - -msgid "Limit repeated log messages" -msgstr "Limitar mensajes repetidos al registro" - -msgid "Local certificate" -msgstr "Certificado local" - -msgid "Local host name or ip address" -msgstr "Nombre de máquina local o dirección IP" - -msgid "Local private key" -msgstr "Clave privada local" - -msgid "Major mode" -msgstr "Modo principal" - -msgid "Make tun device IPv6 capable" -msgstr "Habilitar IPv6 en dispositivo TUN" - -msgid "Maximum number of queued TCP output packets" -msgstr "Paquetes máximos en la cola de salida TCP" - -msgid "Number of allocated broadcast buffers" -msgstr "Número de buffers de propagación" - -msgid "Number of lines for log file history" -msgstr "Líneas en el archivo de registro histórico" - -msgid "Only accept connections from given X509 name" -msgstr "Aceptar solo conexiones desde este nombre X509" - -msgid "Only process ping timeouts if routes exist" -msgstr "Procesa solo las esperas a ping si existe la ruta" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "Instancias OpenVPN" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Optimizar escrituras TUN/TAP/UDP" - -msgid "Output to syslog and do not daemonize" -msgstr "Escribir en SysLog y no demonizar" - -msgid "Overview" -msgstr "Resumen" - -msgid "PKCS#12 file containing keys" -msgstr "Archivo PKCS#12 de claves" - -msgid "Pass environment variables to script" -msgstr "Pasar variables de entorno al script" - -msgid "Persist replay-protection state" -msgstr "Estado continuo de protección antireproducción" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "Mantener/no mantener el listado de interfaces" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "Ping al remoto cada n segundos sobre un puerto TCP/UDP" - -msgid "Policy level over usage of external programs and scripts" -msgstr "Política sobre el uso de programas externos y scripts" - -msgid "Port" -msgstr "Puerto" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Proxy timeout in seconds" -msgstr "Espera del proxy en segundos" - -msgid "Push an ifconfig option to remote" -msgstr "Enviar un opción de ifconfig al puesto remoto" - -msgid "Push options to peer" -msgstr "Enviar opciones al otro" - -msgid "Query management channel for private key" -msgstr "Consulta el canal de gestión por la clave privada" - -msgid "Randomly choose remote server" -msgstr "Elegir aleatoriamente un servidor remoto" - -msgid "Refuse connection if no custom client config" -msgstr "" -"Rechazar conexión si no tiene una configuración de cliente personalizada" - -msgid "Remap SIGUSR1 signals" -msgstr "Redirigir señales SIGUSR1" - -msgid "Remote host name or ip address" -msgstr "Nombre de máquina remota o dirección IP" - -msgid "Remote ping timeout" -msgstr "Espera a ping remoto" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Bytes tras los que renegociar la clave del canal del datos" - -msgid "Renegotiate data chan. key after packets" -msgstr "Paquetes tras los que renegociar la clave del canal del datos" - -msgid "Renegotiate data chan. key after seconds" -msgstr "Segundos tras los que renegociar la clave del canal del datos" - -msgid "Replay protection sliding window size" -msgstr "Tamaño de la ventana deslizante de la protección de reproducción" - -msgid "Require explicit designation on certificate" -msgstr "Designación explícita de certificado" - -msgid "Require explicit key usage on certificate" -msgstr "Clave de uso explícita de certificado" - -msgid "Restart after remote ping timeout" -msgstr "Rearrancar tras espera del ping remoto" - -msgid "Retransmit timeout on TLS control channel" -msgstr "Espera de retransmisión en el canal de control TLS" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Reintentar indefinidamente en errores del proxy HTTP" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Reintentar indefinidamente en errores del proxy Socks" - -msgid "Route subnet to client" -msgstr "Enrutar subred a cliente" - -msgid "Run as an inetd or xinetd server" -msgstr "Ejecutar como servidor inetd o xinetd" - -msgid "Run script cmd on client connection" -msgstr "Script a ejecutar tras una conexión de cliente" - -msgid "Run script cmd on client disconnection" -msgstr "Script a ejecutar tras una desconexión de cliente" - -msgid "Run up/down scripts for all restarts" -msgstr "Ejecutar scripts de activación/desactivación en todos los rearranques" - -msgid "Send notification to peer on disconnect" -msgstr "Enviar notificación al otro en caso de desconexión" - -msgid "Set GID to group" -msgstr "GID del grupo" - -msgid "Set TCP/UDP MTU" -msgstr "MTU TCP/UDP" - -msgid "Set UID to user" -msgstr "UID del usuario" - -msgid "Set aside a pool of subnets" -msgstr "Reservar un bloque de subredes" - -msgid "Set extended HTTP proxy options" -msgstr "Opciones HTTP extendidas del proxy" - -msgid "Set output verbosity" -msgstr "Nivel de detalle de mensajes" - -msgid "Set size of real and virtual address hash tables" -msgstr "Tamaño de las tablas real y virtual de hashes" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "Tamaño del búfer de recepción TCP/UDP" - -msgid "Set the TCP/UDP send buffer size" -msgstr "Tamaño del búfer de envío TCP/UDP" - -msgid "Set tun/tap TX queue length" -msgstr "Longitud de la cola de transmisión TUN/TAP" - -msgid "Set tun/tap adapter parameters" -msgstr "Parámetros del adaptador TUN/TAP" - -msgid "Set tun/tap device MTU" -msgstr "MTU del dispositivo TUN/TAP" - -msgid "Set tun/tap device overhead" -msgstr "Sobrecarga del dispositivo TUN/TAP" - -msgid "Set upper bound on TCP MSS" -msgstr "Límite superior de MSS de TCP" - -msgid "Shaping for peer bandwidth" -msgstr "Adaptar ancho de banda de clientes" - -msgid "Shell cmd to execute after tun device open" -msgstr "Comando shell a ejecutar tras abrir el dispositivo TUN" - -msgid "Shell cmd to run after tun device close" -msgstr "Comando shell a ejecutar tras cerrar el dispositivo TUN" - -msgid "Shell command to verify X509 name" -msgstr "Comando shell a ejecutar para verificar un nombre X509" - -msgid "Silence the output of replay warnings" -msgstr "No mostrar avisos de reproducción" - -msgid "Size of cipher key" -msgstr "Tamaño de la clave de cifrado" - -msgid "Specify a default gateway for routes" -msgstr "Gateway por defecto" - -msgid "Start OpenVPN in a hibernating state" -msgstr "Arrancar OpenVPN en estado hibernado" - -msgid "Start/Stop" -msgstr "Arrancar/Parar" - -msgid "Started" -msgstr "Arrancado" - -msgid "Status file format version" -msgstr "Versión del formato del fichero de estado" - -msgid "Switch to advanced configuration »" -msgstr "Cambiar a configuración avanzada »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "Número de puerto TCP/UDP para local y remoto" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "Número de puerto TCP/UDP para local (default=1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "Número de puerto TCP/UDP para remoto (default=1194)" - -msgid "TLS cipher" -msgstr "Cifra TLS" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "Paso a través TOS (sólo para IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "" -"Directorio temporal para el fichero de retorno de la conexión del cliente" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "Tiempo de intercambio de clave" - -msgid "Type of used device" -msgstr "Tipo de dispositivo usado" - -msgid "Use fast LZO compression" -msgstr "Compresión rápida LZO" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Direcciones individuales en vez de subredes /30" - -msgid "Use protocol" -msgstr "Protocolo" - -msgid "Use tun/tap device node" -msgstr "Nodo de dispositivo TUN/TAP" - -msgid "Use username as common name" -msgstr "Nombre de usuario como nombre común" - -msgid "Write log to file" -msgstr "Escribir registro a fichero" - -msgid "Write process ID to file" -msgstr "Escribir ID del proceso a fichero" - -msgid "Write status to file every n seconds" -msgstr "Segundos tras los que escribir el fichero de estado" - -msgid "no" -msgstr "no" - -msgid "tun/tap device" -msgstr "dispositivo TUN/TAP" - -msgid "tun/tap inactivity timeout" -msgstr "Espera de inactividad tun/tap" - -msgid "yes (%i)" -msgstr "sí (%i)" - -msgid "« Switch to basic configuration" -msgstr "« Cambiar a configuración básica" - -#~ msgid "Cryptography" -#~ msgstr "Criptografía" - -#~ msgid "Networking" -#~ msgstr "Red" - -#~ msgid "Service" -#~ msgstr "Servicio" - -#~ msgid "VPN" -#~ msgstr "VPN" diff --git a/package/luci/applications/luci-app-openvpn/po/fr/openvpn.po b/package/luci/applications/luci-app-openvpn/po/fr/openvpn.po deleted file mode 100644 index 331d1931e8..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/fr/openvpn.po +++ /dev/null @@ -1,595 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2014-01-26 12:53+0200\n" -"Last-Translator: kyas \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p' ou 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Accepter les options envoyées par le serveur" - -msgid "Add" -msgstr "Ajouter" - -msgid "Add route after establishing connection" -msgstr "Ajouter un routage après l'établissement de la connexion" - -msgid "Additional authentication over TLS" -msgstr "Authentification supplémentaire par dessus TLS" - -msgid "Allow client-to-client traffic" -msgstr "Autoriser le trafic entre clients" - -msgid "Allow multiple clients with same certificate" -msgstr "Permettre à plusieurs clients d'utiliser le même certificat" - -msgid "Allow only one session" -msgstr "Autoriser seulement une session" - -msgid "Allow remote to change its IP or port" -msgstr "Autoriser l'hôte distant à changer d'adresse IP ou de port" - -msgid "Allowed maximum of connected clients" -msgstr "Maximum autorisé de clients connectés" - -msgid "Allowed maximum of internal" -msgstr "Admis au maximum interne" - -msgid "Allowed maximum of new connections" -msgstr "Maximum autorisé de nouvelles connexions" - -msgid "Append log to file" -msgstr "Ajouter les journaux en fin de ce fichier" - -msgid "Authenticate using username/password" -msgstr "S'authentifier par identifiant/mot-de-passe" - -msgid "Automatically redirect default route" -msgstr "Rediriger automatiquement la route par défaut" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" -"Voici ci-dessous la liste d'instances OpenVPN configurées et leur état " -"courant" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" -"Appelle une commande/script d'arrêt avant que le périphérique TUN/TAP soit " -"fermé" - -msgid "Certificate authority" -msgstr "Autorité des certificats" - -msgid "Change process priority" -msgstr "Modifier la priorité du processus" - -msgid "Change to directory before initialization" -msgstr "Aller dans ce répertorie avant l'initialisation" - -msgid "Check peer certificate against a CRL" -msgstr "" -"Confronter le certificat du distant à une liste des certificats révoqués " -"(CRL)" - -msgid "Chroot to directory after initialization" -msgstr "Faire un « chroot » dans ce répertoire après initialisation" - -msgid "Client is disabled" -msgstr "Client désactivé" - -msgid "Configuration category" -msgstr "Catégorie de configuration" - -msgid "Configure client mode" -msgstr "Configurer le mode client" - -msgid "Configure server bridge" -msgstr "Configurer le mode pont" - -msgid "Configure server mode" -msgstr "Configurer le mode serveur" - -msgid "Connect through Socks5 proxy" -msgstr "Se connecter via un proxy Socks5" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Se connecter à un hôte distant via un mandataire HTTP" - -msgid "Connection retry interval" -msgstr "Intervalle entre 2 tentatives de connexion" - -msgid "Daemonize after initialization" -msgstr "Transformer en démon après l'initialisation" - -msgid "Delay n seconds after connection" -msgstr "Attends n secondes après la connexion" - -msgid "Delay tun/tap open and up script execution" -msgstr "" -"Attends avant l'ouverture de tun/tap et l'exécution de scripts de mise en " -"marche" - -msgid "Diffie Hellman parameters" -msgstr "Paramètres Diffie Hellman" - -msgid "Directory for custom client config files" -msgstr "Répertoire contenant vos fichiers de config client spécifiques" - -msgid "Disable Paging" -msgstr "Désactiver la pagination" - -msgid "Disable cipher initialisation vector" -msgstr "Désactivé le vecteur d'initialisation cipher" - -msgid "Disable options consistency check" -msgstr "Désactiver la vérification de la cohérence des options" - -msgid "Disable replay protection" -msgstr "Désactiver la protection anti-rejeu" - -msgid "Do not bind to local address and port" -msgstr "Ne pas attacher à l'adresse et au port local" - -msgid "Don't actually execute ifconfig" -msgstr "Ne pas exécuter réellement ifconfig" - -msgid "Don't add routes automatically" -msgstr "Ne pas ajouter de routes automatiquement" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" -"Ne pas copier en cache les mots de passe des options --askpass ou --auth-" -"user-pass" - -msgid "Don't inherit global push options" -msgstr "Ne pas hériter des options d'envoi globales" - -msgid "Don't log timestamps" -msgstr "Ne pas journaliser les horodatages" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "Ne pas relire la clef au redémarrage" - -msgid "Don't require client certificate" -msgstr "Ne pas exiger un certificat client" - -msgid "Don't use adaptive lzo compression" -msgstr "Ne pas utiliser la compression adaptative LZO" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "Ne pas alerter en cas d'incohérence d'ifconfig" - -msgid "Echo parameters to log" -msgstr "Écrire les paramètres dans le journal" - -msgid "Empirically measure MTU" -msgstr "Mesurer le MTU empiriquement" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Activer les systèmes de cryptages OpenSSL matériels" - -msgid "Enable Path MTU discovery" -msgstr "Activer la découverte du MTU du chemin" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Activer le mode de cryptage à clef statique (non TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Activer le TLS et prendre le rôle du client" - -msgid "Enable TLS and assume server role" -msgstr "Activer le TLS et prendre le rôle du serveur" - -msgid "Enable internal datagram fragmentation" -msgstr "Autoriser la fragmentation des datagrammes en interne" - -msgid "Enable management interface on IP port" -msgstr "Activer l'interface de gestion sur IP port" - -msgid "Enabled" -msgstr "Activé" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "Méthode de chiffrement des paquets" - -msgid "Execute shell cmd after routes are added" -msgstr "Exécuter une commande shell après l'ajout des routes" - -msgid "Execute shell command on remote ip change" -msgstr "" -"Exécuter une commande Shell suite à un changement d'IP de l'hôte distant" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" -"Lancé en mode serveur pour les nouvelles connexions client, quand le client " -"n'est pas encore reconnu" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" -"Lancé en mode serveur à chaque fois qu'une adresse/route IPv4 ou une adresse " -"MAC est ajoutée à la table de routage interne d'OpenVPN" - -msgid "Exit on TLS negotiation failure" -msgstr "Arrêter suite à l'échec de la négociation TLS" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" -"Obtenir le mot de passe du certificat depuis le terminal avant de passer en " -"mode démon" - -msgid "HMAC authentication for packets" -msgstr "Authentification HMAC des paquets" - -msgid "Handling of authentication failures" -msgstr "Gestion des erreurs d'authentification" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" -"Aide pour simplifier l'expression des --ping et --ping-restart dans les " -"configurations en mode serveur" - -msgid "If hostname resolve fails, retry" -msgstr "Si la résolution du nom de l'hôte échoue, ré-essayer" - -msgid "Instance \"%s\"" -msgstr "Instance \"%s\"" - -msgid "Invalid" -msgstr "Invalide" - -msgid "Keep local IP address on restart" -msgstr "Conserver l'adresse IP locale lors du redémarrage" - -msgid "Keep remote IP address on restart" -msgstr "Conserver l'adresse IP distante lors du redémarrage" - -msgid "Keep tun/tap device open on restart" -msgstr "Conserver le périphérique tun/tap ouvert au redémarrage" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "Limiter les messages répétés dans les journaux" - -msgid "Local certificate" -msgstr "Certificat local" - -msgid "Local host name or ip address" -msgstr "Nom ou adresse IP de l'hôte local" - -msgid "Local private key" -msgstr "Clef privée locale" - -msgid "Major mode" -msgstr "Mode principal" - -msgid "Make tun device IPv6 capable" -msgstr "Rendre le périphérique tun compatible IPv6" - -msgid "Maximum number of queued TCP output packets" -msgstr "Nombre maximum de paquets TCP en attente d'émission" - -msgid "Number of allocated broadcast buffers" -msgstr "Nombre de tampons de diffusion alloués" - -msgid "Number of lines for log file history" -msgstr "Nombre de lignes de l'historique du fichier-journal" - -msgid "Only accept connections from given X509 name" -msgstr "Accepte seulement des connexions du nom X509 donné" - -msgid "Only process ping timeouts if routes exist" -msgstr "" -"Traiter l'expiration des délais des pings seulement si les routes existent" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "Instances OpenVPN" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Optimiser les écritures TUN/TAP/UDP" - -msgid "Output to syslog and do not daemonize" -msgstr "Envoyer à syslog et ne pas transformer en démon" - -msgid "Overview" -msgstr "Vue d'ensemble" - -msgid "PKCS#12 file containing keys" -msgstr "Fichier au format PKCS#12 contenant les clefs" - -msgid "Pass environment variables to script" -msgstr "Transmettre les variables d'environnement au script" - -msgid "Persist replay-protection state" -msgstr "Reconduire l'état de protection anti-rejeu" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "Reconduire ou non le lot d'ifconfig" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" -"Envoyer un ping à l'hôte distant toutes les n secondes sur le port TCP/UDP" - -msgid "Policy level over usage of external programs and scripts" -msgstr "Règle de sécurité appliqué à l'usage de programmes et scripts externes" - -msgid "Port" -msgstr "Port" - -msgid "Protocol" -msgstr "Protocole" - -msgid "Proxy timeout in seconds" -msgstr "Délai d'attente du mandataire, en secondes" - -msgid "Push an ifconfig option to remote" -msgstr "Envoyer une option ifconfig au distant" - -msgid "Push options to peer" -msgstr "Envoyer les options au client" - -msgid "Query management channel for private key" -msgstr "Canal de requête de gestion pour clef privée" - -msgid "Randomly choose remote server" -msgstr "Choisir au hasard un serveur distant" - -msgid "Refuse connection if no custom client config" -msgstr "Refuser la connexion en l'absence de config client spécifique" - -msgid "Remap SIGUSR1 signals" -msgstr "Rediriger les signaux SIGUSR1" - -msgid "Remote host name or ip address" -msgstr "Nom ou adresse IP de l'hôte distant" - -msgid "Remote ping timeout" -msgstr "Délai de ping du distant" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Renégocier la clé du canal de données après tant d'octets" - -msgid "Renegotiate data chan. key after packets" -msgstr "Renégocier la clé du canal de données après tant de paquets" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" -"Renégocier la clé du canal de données après tant de temps (en secondes)" - -msgid "Replay protection sliding window size" -msgstr "Taille de la fenêtre glissante pour la protection anti-rejeu" - -msgid "Require explicit designation on certificate" -msgstr "Exiger l'appellation explicite sur le certificat" - -msgid "Require explicit key usage on certificate" -msgstr "Exiger l'utilisation explicite de la clé sur le certificat" - -msgid "Restart after remote ping timeout" -msgstr "Redémarrer aprés le dépassement du délai de ping du distant" - -msgid "Retransmit timeout on TLS control channel" -msgstr "Renvoyer l'expiration du délai sur le canal de contrôle TLS" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Ré-essayer indéfiniment suite à des erreurs du proxy HTTP" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Ré-essayer indéfiniment suite à des erreurs du proxy Socks" - -msgid "Route subnet to client" -msgstr "Router le sous-réseau vers le client" - -msgid "Run as an inetd or xinetd server" -msgstr "Exécuter en tant que serveur inetd ou xinetd" - -msgid "Run script cmd on client connection" -msgstr "Exécuter une commande de script lors de la connexion d'un client" - -msgid "Run script cmd on client disconnection" -msgstr "Exécuter une commande de script lors de la déconnexion d'un client" - -msgid "Run up/down scripts for all restarts" -msgstr "Exécuter les scripts up/down à tous les redémarrages" - -msgid "Send notification to peer on disconnect" -msgstr "Envoyer une notification au distant à la déconnexion" - -msgid "Set GID to group" -msgstr "Utiliser le GID de ce groupe" - -msgid "Set TCP/UDP MTU" -msgstr "Définir le MTU TCP/UDP" - -msgid "Set UID to user" -msgstr "Utiliser l'UID de cet utilisateur" - -msgid "Set aside a pool of subnets" -msgstr "Mettre de coté un lot de sous-réseaux" - -msgid "Set extended HTTP proxy options" -msgstr "Définir les options de mandataire HTTP étendu" - -msgid "Set output verbosity" -msgstr "Définir la verbosité des écrits" - -msgid "Set size of real and virtual address hash tables" -msgstr "" -"Définir la taille des tables de haché des adresses réelles et virtuelles" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "Définir la taille de la pile de réception TCP/UDP" - -msgid "Set the TCP/UDP send buffer size" -msgstr "Définir la taille de la pile d'envoi TCP/UDP" - -msgid "Set tun/tap TX queue length" -msgstr "Définir la taille de la pile TX tun/tap" - -msgid "Set tun/tap adapter parameters" -msgstr "Définir les paramètres de l'adaptateur tun/tap" - -msgid "Set tun/tap device MTU" -msgstr "Définir le MTU du périphérique tun/tap" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "Définir la borne supérieure du MSS TCP" - -msgid "Shaping for peer bandwidth" -msgstr "Gère la bande-passante du distant" - -msgid "Shell cmd to execute after tun device open" -msgstr "Commande Shell à exécuter après l'ouverture du périphérique tun" - -msgid "Shell cmd to run after tun device close" -msgstr "Commande Shell à exécuter après la fermeture du périphérique tun" - -msgid "Shell command to verify X509 name" -msgstr "Commande shell de vérification du nom X509" - -msgid "Silence the output of replay warnings" -msgstr "Supprime les messages d'alertes anti-rejeu" - -msgid "Size of cipher key" -msgstr "Taille de la clé de cryptage" - -msgid "Specify a default gateway for routes" -msgstr "Définir la passerelle par défaut des routes" - -msgid "Start OpenVPN in a hibernating state" -msgstr "Démarrer OpenVPN dans un état d'hibernation" - -msgid "Start/Stop" -msgstr "Démarrer/Arrêter" - -msgid "Started" -msgstr "Démarré" - -msgid "Status file format version" -msgstr "Version du format du fichier de status" - -msgid "Switch to advanced configuration »" -msgstr "Afficher les paramètres de configuration avancés" - -msgid "TCP/UDP port # for both local and remote" -msgstr "Numéro de port TCP/UDP valable pour l'hôte local et l'hôte distant" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "Numéro de port TCP/UDP pour l'hôte local (par défaut 1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "Numéro de port TCP/UDP pour l'hôte distant (par défaut 1194)" - -msgid "TLS cipher" -msgstr "Méthode de chiffrement TLS" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "Répertoire pour le fichier temporaire lié à la connexion d'un client" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "Période d'un échange de clés" - -msgid "Type of used device" -msgstr "Type de périphérique utilisé" - -msgid "Use fast LZO compression" -msgstr "Utiliser la compression LZO rapide" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Utiliser des adresses individuelles plutôt que des sous-réseaux en /30" - -msgid "Use protocol" -msgstr "Utiliser le protocole" - -msgid "Use tun/tap device node" -msgstr "Utiliser le périphérique tun/tap" - -msgid "Use username as common name" -msgstr "Utiliser le nom d'utilisateur comme nom « commun » (du certificat)" - -msgid "Write log to file" -msgstr "Écrire le journal dans le fichier" - -msgid "Write process ID to file" -msgstr "Écrire le numéro de processus dans le fichier" - -msgid "Write status to file every n seconds" -msgstr "Écrire le status dans le fichier chaque n secondes" - -msgid "no" -msgstr "non" - -msgid "tun/tap device" -msgstr "Périphérique tun/tap" - -msgid "tun/tap inactivity timeout" -msgstr "Délai d'inactivité tun/tap" - -msgid "yes (%i)" -msgstr "oui (%i)" - -msgid "« Switch to basic configuration" -msgstr "Afficher les paramètres de configuration standards" - -#~ msgid "Cryptography" -#~ msgstr "Cryptage" - -#~ msgid "Networking" -#~ msgstr "Réseau" - -#~ msgid "Service" -#~ msgstr "Service" - -#~ msgid "VPN" -#~ msgstr "VPN" - -#~ msgid "openvpn_%s" -#~ msgstr "openvpn_%s" - -#~ msgid "openvpn_%s_desc" -#~ msgstr "openvpn_%s_desc" diff --git a/package/luci/applications/luci-app-openvpn/po/he/openvpn.po b/package/luci/applications/luci-app-openvpn/po/he/openvpn.po deleted file mode 100644 index 517da49080..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/he/openvpn.po +++ /dev/null @@ -1,550 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \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 "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN instances" -msgstr "" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "" - -msgid "« Switch to basic configuration" -msgstr "" diff --git a/package/luci/applications/luci-app-openvpn/po/hu/openvpn.po b/package/luci/applications/luci-app-openvpn/po/hu/openvpn.po deleted file mode 100644 index 67a8217b1a..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/hu/openvpn.po +++ /dev/null @@ -1,572 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-01-31 12:06+0200\n" -"Last-Translator: Gabor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p' vagy 'subnet'" - -msgid "Accept options pushed from server" -msgstr "A kiszolgáló által küldött opciók elfogadás" - -msgid "Add" -msgstr "Hozzáadás" - -msgid "Add route after establishing connection" -msgstr "Útvonal hozzáadása a kapcsolat létrejötte után" - -msgid "Additional authentication over TLS" -msgstr "További hitelesítés TLS-en keresztül" - -msgid "Allow client-to-client traffic" -msgstr "Ügyfél-ügyfél közötti kapcsolat engedélyezése" - -msgid "Allow multiple clients with same certificate" -msgstr "Több ügyfél engedélyezése ugyanazzal a tanúsítvánnyal" - -msgid "Allow only one session" -msgstr "Csak egy munkafolyamat engedélyezése" - -msgid "Allow remote to change its IP or port" -msgstr "A távoli gép IP címének vagy portjának megváltozatásának engedélyezése" - -msgid "Allowed maximum of connected clients" -msgstr "A csatlakozott ügyfelek maximális megengedett száma" - -msgid "Allowed maximum of internal" -msgstr "Belső kapcsolatok maximális száma" - -msgid "Allowed maximum of new connections" -msgstr "Az új kapcsolatok maximálisan megengedett száma" - -msgid "Append log to file" -msgstr "Napló hozzáfűzése fájlhoz" - -msgid "Authenticate using username/password" -msgstr "Azonosítás felhasználónév és jelszó használatával" - -msgid "Automatically redirect default route" -msgstr "Az alapértelmezett útvonal automatikus átirányítása" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" -"Az alábbi listában találhatóak a beállított OpenVPN példányok és azok " -"aktuális állapota" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "A TUN/TAP interfész lezárása előtt futtatandó shell script." - -msgid "Certificate authority" -msgstr "Hitelesítésszolgáltató" - -msgid "Change process priority" -msgstr "Folyamat prioritásának módosítása" - -msgid "Change to directory before initialization" -msgstr "Váltás a könyvtárra inicializáslás előtt" - -msgid "Check peer certificate against a CRL" -msgstr "Kliens tanúsítvány összevetése a tiltólistával." - -msgid "Chroot to directory after initialization" -msgstr "Gyökérkönyvtár váltás inicializáció után" - -msgid "Client is disabled" -msgstr "Ügyfél letiltva" - -msgid "Configuration category" -msgstr "Beállítások / Visszavonás" - -msgid "Configure client mode" -msgstr "Ügyfél mód beállítása" - -msgid "Configure server bridge" -msgstr "Kiszolgáló híd beállítása" - -msgid "Configure server mode" -msgstr "Kiszolgáló mód beállítása" - -msgid "Connect through Socks5 proxy" -msgstr "Kapcsolódás Sock5 proxy-n keresztül" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Kapcsolódás a távoli géphez HTTP proxyn keresztül" - -msgid "Connection retry interval" -msgstr "Kapcsolódás újrapróbálkozási időköz" - -msgid "Daemonize after initialization" -msgstr "Váltás démon módba inicializálás után" - -msgid "Delay n seconds after connection" -msgstr "Kapcsolat felépítés után 'n' másodperc késleltetés" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "Diffie Hellman paraméterek" - -msgid "Directory for custom client config files" -msgstr "Egyéni ügyfél konfigurációs fájlok könyvtára " - -msgid "Disable Paging" -msgstr "Lapozás letiltása" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "Újrajátszás védelem letiltása" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "Ne adjon hozzá útvonalakat automatikusan " - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "Időbélyegeket ne naplózza" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "Ne használjon adaptív LZO tömörítést" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "A paramétereket írja a naplóba" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "OpenSSL hardveres titkosítás engedélyezése" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "Engedélyezve" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "Érvénytelen" - -msgid "Keep local IP address on restart" -msgstr "Helyi IP cím megtartása újraindításkor" - -msgid "Keep remote IP address on restart" -msgstr "Távoli IP cím megtartása újraindításkor" - -msgid "Keep tun/tap device open on restart" -msgstr "tun/tap eszközök nyitva tartása újraindításkor" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "Helyi tanúsítvány" - -msgid "Local host name or ip address" -msgstr "Helyi gép név vagy IP cím" - -msgid "Local private key" -msgstr "Helyi privát kulcs" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "A sorbaállított kimenő TCP csomagok maximális száma" - -msgid "Number of allocated broadcast buffers" -msgstr "Lefoglalt broadcast pufferek száma" - -msgid "Number of lines for log file history" -msgstr "Naplófájl történet sorainak száma" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "OpenVPN példányok" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "Áttekintés" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Proxy timeout in seconds" -msgstr "Proxy várakozási idő (másodperc)" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "Kapcsolat megtagadás ha nincs egyéni ügyfél konfiguráció" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "Távoli gép név vagy IP cím" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "Indítás/Leállítás" - -msgid "Started" -msgstr "Elindítva" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "Váltás haladó beállításokra »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "TLS titkosító" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "A használt eszköz típusa" - -msgid "Use fast LZO compression" -msgstr "Gyors LZO tömörítés használata" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Egyedi címek használata /30 alhálózat helyett" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "Napló írása fájlba" - -msgid "Write process ID to file" -msgstr "Folyamat azonosító (PID) fájlba írása" - -msgid "Write status to file every n seconds" -msgstr "Állapot fájlba írása 'n' másodpercenként" - -msgid "no" -msgstr "nem" - -msgid "tun/tap device" -msgstr "tun/tap/ eszköz" - -msgid "tun/tap inactivity timeout" -msgstr "tun/tap tétlenségi idő" - -msgid "yes (%i)" -msgstr "igen (%i)" - -msgid "« Switch to basic configuration" -msgstr "« Váltás alap beállításokra" - -#~ msgid "Cryptography" -#~ msgstr "Titkosítás" - -#~ msgid "Networking" -#~ msgstr "Hálózatkezelés" - -#~ msgid "Service" -#~ msgstr "Szolgáltatás" - -#~ msgid "VPN" -#~ msgstr "VPN" - -#~ msgid "openvpn_%s" -#~ msgstr "openvpn_%s" - -#~ msgid "openvpn_%s_desc" -#~ msgstr "openvpn_%s_desc" diff --git a/package/luci/applications/luci-app-openvpn/po/it/openvpn.po b/package/luci/applications/luci-app-openvpn/po/it/openvpn.po deleted file mode 100644 index 2759ccc846..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/it/openvpn.po +++ /dev/null @@ -1,554 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-04-20 10:36+0200\n" -"Last-Translator: claudyus \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "Accetta opzioni inviate dal server" - -msgid "Add" -msgstr "Aggiungi" - -msgid "Add route after establishing connection" -msgstr "Aggiungi rotte dopo aver stabilito la connessione" - -msgid "Additional authentication over TLS" -msgstr "Autenticazione addizionale over TLS" - -msgid "Allow client-to-client traffic" -msgstr "Permetti traffico client-client" - -msgid "Allow multiple clients with same certificate" -msgstr "Permetti più client con lo stesso certificato" - -msgid "Allow only one session" -msgstr "Permetti solo una sessione" - -msgid "Allow remote to change its IP or port" -msgstr "Permetti ai remote di cambiare il proprio IP o porta" - -msgid "Allowed maximum of connected clients" -msgstr "Numero massimo di clienti connessi" - -msgid "Allowed maximum of internal" -msgstr "Numero massimo di interni" - -msgid "Allowed maximum of new connections" -msgstr "Numero massimo di nuove connessioni ammesse" - -msgid "Append log to file" -msgstr "Appendi il log al file" - -msgid "Authenticate using username/password" -msgstr "Autenticazione usando username/passoword" - -msgid "Automatically redirect default route" -msgstr "Modifica automaticamente la default route" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "Sotto c'è una lista di istanze OpenVPN configurate e il loro stato" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "Richiama un cmd/script prima della chiusura del TUN/TAP" - -msgid "Certificate authority" -msgstr "CA" - -msgid "Change process priority" -msgstr "Cambia priorità del processo" - -msgid "Change to directory before initialization" -msgstr "Cambia cartella prima dell'inizializzazione" - -msgid "Check peer certificate against a CRL" -msgstr "Verifica il certificato del nodo su una CRL" - -msgid "Chroot to directory after initialization" -msgstr "Fai chroot alla cartella dopo l'inizializzazione" - -msgid "Client is disabled" -msgstr "Client disabilitato" - -msgid "Configuration category" -msgstr "Categoria di configurazione" - -msgid "Configure client mode" -msgstr "Configura la modalità client" - -msgid "Configure server bridge" -msgstr "Configura un server bridge" - -msgid "Configure server mode" -msgstr "Configura la modalità server" - -msgid "Connect through Socks5 proxy" -msgstr "Connetti attraverso un proxy Socks5" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Connetti attraverso un proxy HTTP" - -msgid "Connection retry interval" -msgstr "Intervallo per riprovare la connessione" - -msgid "Daemonize after initialization" -msgstr "Usa come daemon dopo l'inizializzazione" - -msgid "Delay n seconds after connection" -msgstr "Ritarda n secondi dopo la connessione" - -msgid "Delay tun/tap open and up script execution" -msgstr "Ritarda lo script di apertura e avvio del tun/tap" - -msgid "Diffie Hellman parameters" -msgstr "Parametri Diffie Hellman" - -msgid "Directory for custom client config files" -msgstr "Cartella per file personalizzati di configuarazione client" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "Diasbilita il vettore di inizializzzazione cifratura" - -msgid "Disable options consistency check" -msgstr "Disabilita il controllo della consistenza delle opzioni" - -msgid "Disable replay protection" -msgstr "Disabilita la protezione replay" - -msgid "Do not bind to local address and port" -msgstr "Non effettuare il bind sull'indirizzo/porta locale" - -msgid "Don't actually execute ifconfig" -msgstr "Non eseguire realmente ifconfig" - -msgid "Don't add routes automatically" -msgstr "Non aggiungere rotte automaticamente" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "Non tenere in memoria le password di --askpass o di --auth-user-pass" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "Non loggare il timestamps" - -msgid "Don't pull routes automatically" -msgstr "Non spingere automaticamente le rotte" - -msgid "Don't re-read key on restart" -msgstr "Non rileggere le chiavi al riavvio" - -msgid "Don't require client certificate" -msgstr "Non richiedere certificati dei client" - -msgid "Don't use adaptive lzo compression" -msgstr "Non usare compressione lzo adattiva" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "Non avvisare inconsistenze a livello ifconfig" - -msgid "Echo parameters to log" -msgstr "Parametri Echo da loggare" - -msgid "Empirically measure MTU" -msgstr "Misura empericamente l'MTU" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Abilita il supporto criptografico hardware per OpenSSL" - -msgid "Enable Path MTU discovery" -msgstr "Abilita la ricerca Path MTU" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Abilita la modalità di criptazione chiave statica (non-TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Abilita TLS e usa il ruolo client" - -msgid "Enable TLS and assume server role" -msgstr "Abilita TLS e usa il ruolo server" - -msgid "Enable internal datagram fragmentation" -msgstr "Abilita frammentazione interna dei datagram" - -msgid "Enable management interface on IP port" -msgstr "Abilita l'interfaccia di controllo su IP port" - -msgid "Enabled" -msgstr "Abilitato" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "Crittografa e autentica tutti i pacchetti del canale di controllo con la chiave" - -msgid "Encryption cipher for packets" -msgstr "Cifratura di criptazione dei pacchetti" - -msgid "Execute shell cmd after routes are added" -msgstr "Esegui un comando shell dopo che le rotte sono aggiunte" - -msgid "Execute shell command on remote ip change" -msgstr "Esegui un comando shell al cambio di ip remoto" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "Autenticazione HMAC per i pacchetti" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "Istanza \"%s\"" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "Mantieni l'IP local al riavvio" - -msgid "Keep remote IP address on restart" -msgstr "Mantieni l'IP remoto al riavvio" - -msgid "Keep tun/tap device open on restart" -msgstr "Mantienti il device tun/tap aperto al riavvio" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "Limita le ripetizioni di messaggi nel log" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "Chiave privata local" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "Rendi il device tun ipv6 ready" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "OpenVPN istanze" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Ottimizza le scritture su TUN/TAP/UDP" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "Anteprima" - -msgid "PKCS#12 file containing keys" -msgstr "PKCS#12 file containing keys" - -msgid "Pass environment variables to script" -msgstr "Passa le variabili d'ambiente allo script" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "Porta" - -msgid "Protocol" -msgstr "Protocollo" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "Avviato" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "Passa alla configurazione avanzata »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "no" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "si (%i)" - -msgid "« Switch to basic configuration" -msgstr "« Passa alla configurazione base" diff --git a/package/luci/applications/luci-app-openvpn/po/ja/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ja/openvpn.po deleted file mode 100644 index 232ae27e1f..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/ja/openvpn.po +++ /dev/null @@ -1,566 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-04-09 08:12+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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.4\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', または 'subnet'" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "追加" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "クライアント間通信を許可する" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "1つのセッションのみを許可する" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "現在設定済のOpenVPNの設定とステータスを表示しています。" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "設定カテゴリ" - -msgid "Configure client mode" -msgstr "クライアントモードに設定" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "サーバーモードに設定" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "再接続間隔" - -msgid "Daemonize after initialization" -msgstr "初期化後にデーモン化する" - -msgid "Delay n seconds after connection" -msgstr "セッション接続後、n秒ディレイする" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "Diffie Hellman パラメータ" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "ページングを無効にする" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "時刻をログに書き込まない" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "再起動時にキーの再読み込みを行わない" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "OpenSSL暗号化のハードウェアサポートを有効にする" - -msgid "Enable Path MTU discovery" -msgstr "Path MTU discovery を有効にする" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "有効" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "設定 \"%s\"" - -msgid "Invalid" -msgstr "無効" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "tun デバイスでIPv6機能を有効にする" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "OpenVPN 設定" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "概要" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "ポート" - -msgid "Protocol" -msgstr "プロトコル" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "TCP/UDP のMTUを設定" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "ログ出力レベルの設定" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "TCP/UDP の受信バッファサイズ" - -msgid "Set the TCP/UDP send buffer size" -msgstr "TCP/UDP の送信バッファサイズ" - -msgid "Set tun/tap TX queue length" -msgstr "tun/tap デバイスの送信キューサイズ" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "tun/tap デバイスのMTU設定" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "開始 / 停止" - -msgid "Started" -msgstr "実行中" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "詳細設定へ移動 »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "TCP/UDP ポート (ローカル・リモート共用)" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "TCP/UDP ポート (ローカル, 標準設定=1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "TCP/UDP ポート (リモート, 標準設定=1194)" - -msgid "TLS cipher" -msgstr "TLS 暗号化方式" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "高速LZO圧縮機能を使用する" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "使用するプロトコル" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "いいえ" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "はい (%i)" - -msgid "« Switch to basic configuration" -msgstr "« 基本設定へ移動" - -#~ msgid "Cryptography" -#~ msgstr "暗号設定" - -#~ msgid "Networking" -#~ msgstr "ネットワーク" - -#~ msgid "Service" -#~ msgstr "サービス" - -#~ msgid "VPN" -#~ msgstr "VPN" diff --git a/package/luci/applications/luci-app-openvpn/po/ms/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ms/openvpn.po deleted file mode 100644 index 6c6e0d6046..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/ms/openvpn.po +++ /dev/null @@ -1,549 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN instances" -msgstr "" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "" - -msgid "« Switch to basic configuration" -msgstr "" diff --git a/package/luci/applications/luci-app-openvpn/po/no/openvpn.po b/package/luci/applications/luci-app-openvpn/po/no/openvpn.po deleted file mode 100644 index 517da49080..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/no/openvpn.po +++ /dev/null @@ -1,550 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \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 "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN instances" -msgstr "" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "" - -msgid "« Switch to basic configuration" -msgstr "" diff --git a/package/luci/applications/luci-app-openvpn/po/pl/openvpn.po b/package/luci/applications/luci-app-openvpn/po/pl/openvpn.po deleted file mode 100644 index bef5a13a1a..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/pl/openvpn.po +++ /dev/null @@ -1,581 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-05 03:41+0200\n" -"Last-Translator: piosl \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', lub 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Zaakceptuj opcje narzucone przez serwer" - -msgid "Add" -msgstr "Dodaj" - -msgid "Add route after establishing connection" -msgstr "Dodaj trasę po nawiązaniu połączenia" - -msgid "Additional authentication over TLS" -msgstr "Dodatkowe uwierzytelnianie poprzez TLS" - -msgid "Allow client-to-client traffic" -msgstr "Zezwól na łączność klient-klient" - -msgid "Allow multiple clients with same certificate" -msgstr "Zezwól na łączenie wielu klientów z tym samym certyfikatem." - -msgid "Allow only one session" -msgstr "Zezwól tylko na jedną sesję" - -msgid "Allow remote to change its IP or port" -msgstr "Zezwól na zmianę IP lub portu odległemu hostowi." - -msgid "Allowed maximum of connected clients" -msgstr "Maksymalna dozwolona liczba klientów" - -msgid "Allowed maximum of internal" -msgstr "Maksymalna dozwolona liczba wewnętrznych" - -msgid "Allowed maximum of new connections" -msgstr "Maksymalna dozwolona liczba nowych połączeń" - -msgid "Append log to file" -msgstr "Dopisz log do pliku" - -msgid "Authenticate using username/password" -msgstr "Autoryzacja z użyciem loginu oraz hasła" - -msgid "Automatically redirect default route" -msgstr "Automatycznie przekieruj domyślną trasę" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" -"Ponieżej znajduje się lista skonfigurowanych procesów OpenVPN wraz z ich " -"aktualnymi stanami." - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "Zatrzymaj skrypt przed wyłączeniem interfejsu TUN/TAP" - -msgid "Certificate authority" -msgstr "Urząd certyfikacji" - -msgid "Change process priority" -msgstr "Zmień priorytet procesu" - -msgid "Change to directory before initialization" -msgstr "Przejdź do katalogu przed inicjalizacją" - -msgid "Check peer certificate against a CRL" -msgstr "Sprawdź certyfikat peera na obecność w CRL" - -msgid "Chroot to directory after initialization" -msgstr "Zmień root (chroot) na katalog po inicjalizacji" - -msgid "Client is disabled" -msgstr "Klient jest wyłączony" - -msgid "Configuration category" -msgstr "Kategoria konfiguracji" - -msgid "Configure client mode" -msgstr "Konfiguruj tryb klienta" - -msgid "Configure server bridge" -msgstr "Konfiguruj serwer w trybie mostu" - -msgid "Configure server mode" -msgstr "Konfiguruj serwer" - -msgid "Connect through Socks5 proxy" -msgstr "Połącz poprzez SOCKS5 proxy" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Połącz ze zdalnym hostem poprzez HTTP proxy" - -msgid "Connection retry interval" -msgstr "Interwał powtarzania połączeń" - -msgid "Daemonize after initialization" -msgstr "Przejdź w tryb demona po inicjalizacji" - -msgid "Delay n seconds after connection" -msgstr "Opóźnienie n sekund po nawiązaniu połączenia" - -msgid "Delay tun/tap open and up script execution" -msgstr "Opóźnienie otwarcia interfejsu tun/tap i wykonania skryptu" - -msgid "Diffie Hellman parameters" -msgstr "Parametry Diffie Hellman" - -msgid "Directory for custom client config files" -msgstr "Katalog na pliki konfiguracyjne" - -msgid "Disable Paging" -msgstr "Wyłącz stronicowanie" - -msgid "Disable cipher initialisation vector" -msgstr "Wyłącz wektor inicjalizacji szyfru" - -msgid "Disable options consistency check" -msgstr "Wyłącz sprawdzanie poprawności ustawień" - -msgid "Disable replay protection" -msgstr "Wyłącz ochronę odpowiedzi" - -msgid "Do not bind to local address and port" -msgstr "Nie związuj z lokalnym adresem i portem" - -msgid "Don't actually execute ifconfig" -msgstr "Nie uruchamiaj obecnie ifconfig" - -msgid "Don't add routes automatically" -msgstr "Nie dodawaj tras (routes) automatycznie" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "Nie cacheuj haseł --askpass lub --auth-user-pass" - -msgid "Don't inherit global push options" -msgstr "Nie dziedzicz globalnej opcji push" - -msgid "Don't log timestamps" -msgstr "Nie zapisuj czasu w logu" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "Nie wczytuj ponownie klucza podczas restartu" - -msgid "Don't require client certificate" -msgstr "Nie wymagaj certyfikatu od klienta" - -msgid "Don't use adaptive lzo compression" -msgstr "Nie używaj adaptatywnej kompresji lzo" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "Nie ostrzegaj przed niespójnością w ifconfig" - -msgid "Echo parameters to log" -msgstr "Zapisuj parametry w logu" - -msgid "Empirically measure MTU" -msgstr "Mierz MTU empirycznie" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Włącz sprzętowe przyspieszenie OpenSSL" - -msgid "Enable Path MTU discovery" -msgstr "Włącz wykrywanie \"Path MTU\"" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Włącz tryb szyfrowania statycznym kluczem (non-TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Włącz TLS i przyjmij rolę klienta" - -msgid "Enable TLS and assume server role" -msgstr "Włącz TLS i przyjmij rolę serwera" - -msgid "Enable internal datagram fragmentation" -msgstr "Włącz wewnętrzną fragmentację datagramu" - -msgid "Enable management interface on IP port" -msgstr "Włącz interfejs zarządzalny na IP port" - -msgid "Enabled" -msgstr "Włączone" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "Szyfrowanie dla pakietów" - -msgid "Execute shell cmd after routes are added" -msgstr "Wykonaj komendę powłoki po dodaniu tras" - -msgid "Execute shell command on remote ip change" -msgstr "Wykonaj komendę powłoki po zmianie zdalnego IP" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" -"Wykonane w trybie serwera na nowych połączeniach klienta, gdy klient jest " -"nadal niezaufany" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" -"Wykonane w trybie serwera, gdy adres IPv4, trasa lub adres MAC są dodane do " -"wewnętrznej tablicy routingu w OpenVPN" - -msgid "Exit on TLS negotiation failure" -msgstr "Wyjdź przy niepowodzeniu negocjacji TLS" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "Uzyskaj hasło PEM z kontroli tty przed demonizacją" - -msgid "HMAC authentication for packets" -msgstr "Autoryzacja HMAC dla pakietów" - -msgid "Handling of authentication failures" -msgstr "Postępowanie z błędami uwierzytelniania" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" -"Dyrektywa Helper w celu uproszczenia wyrażenie --ping i --ping-restart w " -"konfiguracjach w trybie serwera" - -msgid "If hostname resolve fails, retry" -msgstr "Jeżeli ustanowienie nazwy hosta nie powiedzie się, spróbuj ponownie" - -msgid "Instance \"%s\"" -msgstr "Instancja \"%s\"" - -msgid "Invalid" -msgstr "Nieprawidłowe" - -msgid "Keep local IP address on restart" -msgstr "Zachowaj lokalny adres IP przy restarcie" - -msgid "Keep remote IP address on restart" -msgstr "Zachowaj zdalny adres IP przy restarcie" - -msgid "Keep tun/tap device open on restart" -msgstr "Utrzymaj urządzenie tun/tap po restarcie jako otwarte" - -msgid "Key transition window" -msgstr "Okno zmiany klucza" - -msgid "Limit repeated log messages" -msgstr "Limit powtarzających się wiadomości w logu" - -msgid "Local certificate" -msgstr "Certyfikat lokalny" - -msgid "Local host name or ip address" -msgstr "Lokalna nazwa hosta lub adres IP" - -msgid "Local private key" -msgstr "Lokalny klucz prywatny" - -msgid "Major mode" -msgstr "Tryb główny" - -msgid "Make tun device IPv6 capable" -msgstr "Urządzenie tun zgodne z IPv6" - -msgid "Maximum number of queued TCP output packets" -msgstr "Maksymalna liczba wychodzących pakietów TCP w kolejce" - -msgid "Number of allocated broadcast buffers" -msgstr "Liczba przydzielonych buforów nadawczych" - -msgid "Number of lines for log file history" -msgstr "Liczba linii w pliku dziennika historii" - -msgid "Only accept connections from given X509 name" -msgstr "Akceptuj tylko połączenia z podanej nazwy X509" - -msgid "Only process ping timeouts if routes exist" -msgstr "Wykonaj procedurę \"ping timeout\" tylko jeżeli trasy istnieją" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "Instancje OpenVPN" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Optymalizuj wpisy TUN/TAP/UDP" - -msgid "Output to syslog and do not daemonize" -msgstr "Wysyłaj do syslog'a i nie demonizuj" - -msgid "Overview" -msgstr "Przegląd" - -msgid "PKCS#12 file containing keys" -msgstr "Plik PKCS#12 zawierający klucze" - -msgid "Pass environment variables to script" -msgstr "Przekaż zmienne środowiskowe do skryptu" - -msgid "Persist replay-protection state" -msgstr "Utrzymaj status ochrony odpowiedzi" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "Utrzymuj/Nie utrzymuj ifconfig-pool" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "Pinguj zdalnego co n sekund przez port TCP/UDP" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" -"Poziom zasad odnoszących się do używania zewnętrznych programów i skryptów" - -msgid "Port" -msgstr "Port" - -msgid "Protocol" -msgstr "Protokół" - -msgid "Proxy timeout in seconds" -msgstr "Czas bezczynności proxy w sekundach" - -msgid "Push an ifconfig option to remote" -msgstr "Wyślij opcje ifconfig do zdalnego" - -msgid "Push options to peer" -msgstr "Wyślij opcje do peera" - -msgid "Query management channel for private key" -msgstr "Kanał zarządzania zapytaniami dla klucza prywatnego" - -msgid "Randomly choose remote server" -msgstr "Losowo wybierz serwer zdalny" - -msgid "Refuse connection if no custom client config" -msgstr "Odmów połączenie gdy nie standardowy klient konfiguracja" - -msgid "Remap SIGUSR1 signals" -msgstr "Przemapuj SIGUSR1" - -msgid "Remote host name or ip address" -msgstr "Nazwa lub IP zdalnego hosta" - -msgid "Remote ping timeout" -msgstr "Zdalny ping upłynął czas" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Renegocjacja danych charakteru klucza po bajtach" - -msgid "Renegotiate data chan. key after packets" -msgstr "Renegocjacja danych charakteru klucza po pakietach" - -msgid "Renegotiate data chan. key after seconds" -msgstr "Renegocjacja danych charakteru klucza po sekundach" - -msgid "Replay protection sliding window size" -msgstr "Powtórzenie osłony okna rozmiaru" - -msgid "Require explicit designation on certificate" -msgstr "Potrzebna Podpis na Certyfikacie" - -msgid "Require explicit key usage on certificate" -msgstr "Potrzebna klucza używanego w certyfikacie" - -msgid "Restart after remote ping timeout" -msgstr "restart po zdalnym ping upływie czasu" - -msgid "Retransmit timeout on TLS control channel" -msgstr "Retransmisja po upływie czasu TLS na kanale kontrolnym" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Ponownie spróbować na Http proxy Błędzie" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "Trasa podsieci do klienta" - -msgid "Run as an inetd or xinetd server" -msgstr "Uruchom jako serwer inetd lub xinetd" - -msgid "Run script cmd on client connection" -msgstr "Uruchom skrypt cmd po połączeniu klienta" - -msgid "Run script cmd on client disconnection" -msgstr "Uruchom skrypt cmd po rozłączeniu klienta" - -msgid "Run up/down scripts for all restarts" -msgstr "Uruchom skrypty up/down dla wszystkich restartów" - -#, fuzzy -msgid "Send notification to peer on disconnect" -msgstr "Wyślij zgłoszenie o rozłączeniu do peer" - -msgid "Set GID to group" -msgstr "Ustaw GID dla grupy" - -msgid "Set TCP/UDP MTU" -msgstr "Ustaw TCP/UDP MTU" - -msgid "Set UID to user" -msgstr "Ustaw UID dla użytkownika" - -#, fuzzy -msgid "Set aside a pool of subnets" -msgstr "Odłożyć na bok pulę podsieci" - -msgid "Set extended HTTP proxy options" -msgstr "Ustaw rozszerzone opcje proxy HTTP" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "Ustaw rozmiar rzeczywistych i wirtualnych adresów tablicy hash" - -#, fuzzy -msgid "Set the TCP/UDP receive buffer size" -msgstr "Ustaw rozmiar buforu wysyłania TCP/UDP" - -#, fuzzy -msgid "Set the TCP/UDP send buffer size" -msgstr "Ustaw rozmiar buforu wysyłania TCP/UDP" - -#, fuzzy -msgid "Set tun/tap TX queue length" -msgstr "Ustaw długość kolejki tun / tap TX " - -msgid "Set tun/tap adapter parameters" -msgstr "Ustaw parametr adaptera tun/tap" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "Ustaw górną granicę TCP MSS" - -msgid "Shaping for peer bandwidth" -msgstr "Formowanie wzajemnego pasma" - -#, fuzzy -msgid "Shell cmd to execute after tun device open" -msgstr "cmd Shell po uruchomieniu urzadzenie tun" - -#, fuzzy -msgid "Shell cmd to run after tun device close" -msgstr "cmd Shell po wyłączeniu urzadzenie tun" - -msgid "Shell command to verify X509 name" -msgstr "polecenie Shell aby sprawdzić nazwę X509" - -msgid "Silence the output of replay warnings" -msgstr "Wycisz powtórne pojawianie się ostrzeżeń" - -msgid "Size of cipher key" -msgstr "Rozmiar klucza szyfrowania" - -msgid "Specify a default gateway for routes" -msgstr "Określ domyślną bramę dla tras" - -msgid "Start OpenVPN in a hibernating state" -msgstr "Uruchom OpenVPN w stanie hibernacji" - -msgid "Start/Stop" -msgstr "Start/Stop" - -msgid "Started" -msgstr "Uruchomiono" - -msgid "Status file format version" -msgstr "Wersja formatu pliku statusu" - -msgid "Switch to advanced configuration »" -msgstr "Konfiguracja zaawansowana »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "Numer portu TCP/UDP zarówno dla lokalnego jak i zdalnego" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "Numer portu TCP/UDP dla lokalnego (domyślnie=1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "Numer portu TCP/UDP dla zdalnego (domyślnie=1194)" - -msgid "TLS cipher" -msgstr "Kodowanie TLS" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "Przepuszczanie TOS (dotyczy tylko IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "Katalog tymczasowy dla pliku zwrotnego połączenia klienta" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "Typ użytego urządzenia" - -msgid "Use fast LZO compression" -msgstr "Użyj szybkiej kompresji LZO" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Użyj indywidualnego adresu zamiast podsieci /30" - -msgid "Use protocol" -msgstr "Użyj protokołu" - -msgid "Use tun/tap device node" -msgstr "Użyj węzła urządzenia tun/tap" - -msgid "Use username as common name" -msgstr "Użyj nazwy użytkownika jako nazwy wspólnej" - -msgid "Write log to file" -msgstr "Zapisz log do pliku" - -msgid "Write process ID to file" -msgstr "Zapisz numer ID procesu do pliku" - -msgid "Write status to file every n seconds" -msgstr "Zapisz status do pliku co n sekund" - -msgid "no" -msgstr "nie" - -msgid "tun/tap device" -msgstr "urządzenie tun/tap" - -msgid "tun/tap inactivity timeout" -msgstr "czas bezczynności tun/tap" - -msgid "yes (%i)" -msgstr "tak (%i)" - -msgid "« Switch to basic configuration" -msgstr "« Konfiguracja podstawowa" - -#~ msgid "Cryptography" -#~ msgstr "Kryptografia" - -#~ msgid "Networking" -#~ msgstr "Ustawienia sieciowe" - -#~ msgid "Service" -#~ msgstr "Serwis" - -#~ msgid "VPN" -#~ msgstr "VPN" diff --git a/package/luci/applications/luci-app-openvpn/po/pt-br/openvpn.po b/package/luci/applications/luci-app-openvpn/po/pt-br/openvpn.po deleted file mode 100644 index 26642e2c46..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/pt-br/openvpn.po +++ /dev/null @@ -1,581 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2017-02-20 18:04-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', ou 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Aceitar opções enviadas pelo servidor" - -msgid "Add" -msgstr "Adicionar" - -msgid "Add route after establishing connection" -msgstr "Adicionar rota após estabelecimento da conexão" - -msgid "Additional authentication over TLS" -msgstr "Autenticação adicional por TLS" - -msgid "Allow client-to-client traffic" -msgstr "Permitir tráfego entre os clientes" - -msgid "Allow multiple clients with same certificate" -msgstr "Permitir múltiplos clientes com o mesmo certificado" - -msgid "Allow only one session" -msgstr "Permitir apenas uma sessão" - -msgid "Allow remote to change its IP or port" -msgstr "Permitir a um equipamento remoto altere o seu IP ou porta" - -msgid "Allowed maximum of connected clients" -msgstr "Máximo permitido de clientes conectados" - -msgid "Allowed maximum of internal" -msgstr "Máximo permitido internamente para rotas de clientes" - -msgid "Allowed maximum of new connections" -msgstr "Máximo permitido de novas conexões" - -msgid "Append log to file" -msgstr "Acrescentar registos ao arquivo" - -msgid "Authenticate using username/password" -msgstr "Autenticar com usuário/senha" - -msgid "Automatically redirect default route" -msgstr "Redirecionar automaticamente a rota padrão" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" -"Abaixo está uma lista de todas as instâncias OpenVPN configuradas e o seu " -"estado atual" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "Executar o comando/script antes do tun/tap fechar" - -msgid "Certificate authority" -msgstr "Autoridade certificadora" - -msgid "Change process priority" -msgstr "Alterar prioridade do processo" - -msgid "Change to directory before initialization" -msgstr "Mudar para o diretório antes da iniciação" - -msgid "Check peer certificate against a CRL" -msgstr "Verificar certificado do parceiro conta uma CRL" - -msgid "Chroot to directory after initialization" -msgstr "Chroot para o diretório após a iniciação" - -msgid "Client is disabled" -msgstr "Cliente desativado" - -msgid "Configuration category" -msgstr "Categoria da configuração" - -msgid "Configure client mode" -msgstr "Configurar modo cliente" - -msgid "Configure server bridge" -msgstr "Configurar ponte de servidor" - -msgid "Configure server mode" -msgstr "Configurar modo de servidor" - -msgid "Connect through Socks5 proxy" -msgstr "Conectar através de um proxy Socks5" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Conectar a equipamento remoto através de um proxy HTTP" - -msgid "Connection retry interval" -msgstr "Intervalo de reestabelecimento de conexão" - -msgid "Daemonize after initialization" -msgstr "Entre em segundo plano após a iniciação" - -msgid "Delay n seconds after connection" -msgstr "Atrase n segundos depois da conexão" - -msgid "Delay tun/tap open and up script execution" -msgstr "Retardar o script de abertura e ativação do tun/tap" - -msgid "Diffie Hellman parameters" -msgstr "Parâmetros Diffie-Hellman" - -msgid "Directory for custom client config files" -msgstr "Diretório para configurações personalizadas dos clientes" - -msgid "Disable Paging" -msgstr "Desativar paginação" - -msgid "Disable cipher initialisation vector" -msgstr "Desativar o vetor de iniciação da cifra" - -msgid "Disable options consistency check" -msgstr "Desativar opções de verificação de consistência" - -msgid "Disable replay protection" -msgstr "Desativar proteção contra replay" - -msgid "Do not bind to local address and port" -msgstr "Não ativar no endereço e porta locais" - -msgid "Don't actually execute ifconfig" -msgstr "Não executar ifconfig de verdade" - -msgid "Don't add routes automatically" -msgstr "Não adicionar rotas automaticamente" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "Não colocar em cache as senhas do --askpass ou --auth-user-pass " - -msgid "Don't inherit global push options" -msgstr "Não herdar as opções globais de envio (push)" - -msgid "Don't log timestamps" -msgstr "Não registar a data/hora" - -msgid "Don't pull routes automatically" -msgstr "Não puxe as rotas automaticamente" - -msgid "Don't re-read key on restart" -msgstr "Não reler a chave entre os reinícios" - -msgid "Don't require client certificate" -msgstr "Não solicitar certificado ao cliente" - -msgid "Don't use adaptive lzo compression" -msgstr "Não usar compressão LZO adaptiva" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "Não avisar quando existirem inconsistências no ifconfig" - -msgid "Echo parameters to log" -msgstr "Escrever parâmetros no registo" - -msgid "Empirically measure MTU" -msgstr "Medir empíricamente o MTU" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Ativar motor OpenSSL por hardware" - -msgid "Enable Path MTU discovery" -msgstr "Ativar a descoberta do MTU do caminho" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Ativar modo de encriptação por chave estática (não-TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Ativar TLS e assumir papel de cliente" - -msgid "Enable TLS and assume server role" -msgstr "Ativar TLS e assumir papel de servidor" - -msgid "Enable internal datagram fragmentation" -msgstr "Ativar a fragmentação interna de datagramas" - -msgid "Enable management interface on IP port" -msgstr "Ativar o interface de gestão em IP porta" - -msgid "Enabled" -msgstr "Ativado" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "Cifra de encriptação para pacotes" - -msgid "Execute shell cmd after routes are added" -msgstr "Executar o comando shell após as rotas serem adicionadas" - -msgid "Execute shell command on remote ip change" -msgstr "Executar o comando shell quando existir alteração do IP remoto" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" -"Executado em modo servidor na nova conexão de cliente, enquanto o cliente " -"ainda não é confiável" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" -"Executado em modo servidor quando um endereço/rota IPv4 é adicionao na " -"tabela de roteamento interna do OpenVPN" - -msgid "Exit on TLS negotiation failure" -msgstr "Fechar quando existir falha na negociacao TLS" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "Obter password PEM do terminal de controlo antes de passar a daemon" - -msgid "HMAC authentication for packets" -msgstr "Autenticação HMAC para pacotes" - -msgid "Handling of authentication failures" -msgstr "Gestão de falhas de autenticação" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" -"Diretiva de ajuda para simplificar a expressão --ping e --ping-restart nas " -"configurações de modo servidor" - -msgid "If hostname resolve fails, retry" -msgstr "Se a resolução de nomes falhar, tentar novamente" - -msgid "Instance \"%s\"" -msgstr "Instância \"%s\"" - -msgid "Invalid" -msgstr "Inválido" - -msgid "Keep local IP address on restart" -msgstr "Manter o endereço IP local entre os reinícios" - -msgid "Keep remote IP address on restart" -msgstr "Manter o endereço IP remoto entre os reinícios" - -msgid "Keep tun/tap device open on restart" -msgstr "Manter o dispositivo tun/tap aberto entre os reinícios" - -msgid "Key transition window" -msgstr "Janela para transição de chaves" - -msgid "Limit repeated log messages" -msgstr "Limitar entradas repetidas no registo" - -msgid "Local certificate" -msgstr "Certificado local" - -msgid "Local host name or ip address" -msgstr "Nome do equipamento ou endereço IP local" - -msgid "Local private key" -msgstr "Chave privada local" - -msgid "Major mode" -msgstr "Modo principal" - -msgid "Make tun device IPv6 capable" -msgstr "Tornar o dispositivo tun capaz de IPv6" - -msgid "Maximum number of queued TCP output packets" -msgstr "Número máximo de pacotes TCP na fila de saída" - -msgid "Number of allocated broadcast buffers" -msgstr "Número de buffers de broadcast alocados" - -msgid "Number of lines for log file history" -msgstr "Número de linhas para o histórico do registo" - -msgid "Only accept connections from given X509 name" -msgstr "Aceitar conexões apenas de um dado nome X509" - -msgid "Only process ping timeouts if routes exist" -msgstr "Só processe os estouros de tempo de pings se as rotas existirem" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "Instâncias OpenVPN" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Otimizar as escritas TUN/TAP/UDP" - -msgid "Output to syslog and do not daemonize" -msgstr "Enviar para o syslog os registos e não vá para segundo plano" - -msgid "Overview" -msgstr "Visão Geral" - -msgid "PKCS#12 file containing keys" -msgstr "Arquivo PKCS#12 com as chaves" - -msgid "Pass environment variables to script" -msgstr "Passar variáveis de ambiente ao script" - -msgid "Persist replay-protection state" -msgstr "Manter persistência da proteção replay" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "Manter ou não o conjunto de subredes" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "Pingar o remoto a cada n segundos sobre a porta TCP/UDP" - -msgid "Policy level over usage of external programs and scripts" -msgstr "Nível da política sobre o uso de programas e scripts externos" - -msgid "Port" -msgstr "Porta" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Proxy timeout in seconds" -msgstr "Tempo limite do proxy em segundos" - -msgid "Push an ifconfig option to remote" -msgstr "Enviar uma opção ifconfig ao remoto" - -msgid "Push options to peer" -msgstr "Enviar opções ao remoto" - -msgid "Query management channel for private key" -msgstr "Solicitar chave privada ao canal de gestão" - -msgid "Randomly choose remote server" -msgstr "Escolher o server remoto aleatoriamente" - -msgid "Refuse connection if no custom client config" -msgstr "Recusar conexões de clientes que não tenham configuração personalizada" - -msgid "Remap SIGUSR1 signals" -msgstr "Remapear os sinais SIGUSR1" - -msgid "Remote host name or ip address" -msgstr "Nome do equipamento ou endereço IP remoto" - -msgid "Remote ping timeout" -msgstr "Tempo limite do ping remoto" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Renegociar chave do canal de dados após n bytes" - -msgid "Renegotiate data chan. key after packets" -msgstr "Renegociar chave do canal de dados após n pacotes" - -msgid "Renegotiate data chan. key after seconds" -msgstr "Renegociar chave do canal de dados após n segundos" - -msgid "Replay protection sliding window size" -msgstr "Tamanho da janela de proteção conta replay" - -msgid "Require explicit designation on certificate" -msgstr "Requerer designação específica no certificado" - -msgid "Require explicit key usage on certificate" -msgstr "Requerer que o uso da chave seja explicitado no certificado" - -msgid "Restart after remote ping timeout" -msgstr "Reiniciar após estouro do tempo do ping remoto" - -msgid "Retransmit timeout on TLS control channel" -msgstr "Estouro de tempo de retransmissão no canal de controle TLS" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Tentar infinitamente a conexão quando existirem erros de proxy Socks" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Tentar infinitamente a conexão quando existirem erros de proxy Socks" - -msgid "Route subnet to client" -msgstr "Encaminhar rota da subrede para o cliente" - -msgid "Run as an inetd or xinetd server" -msgstr "Executar através do inetd ou xinetd" - -msgid "Run script cmd on client connection" -msgstr "Executar script quando o cliente conectar" - -msgid "Run script cmd on client disconnection" -msgstr "Executar script quando o cliente desconectar" - -msgid "Run up/down scripts for all restarts" -msgstr "Executar scripts de subida/descida para todos os reinícios" - -msgid "Send notification to peer on disconnect" -msgstr "Notificar parceiro remoto ao desconectar" - -msgid "Set GID to group" -msgstr "Usar o GID do grupo" - -msgid "Set TCP/UDP MTU" -msgstr "Definir o MTU TCP/UDP" - -msgid "Set UID to user" -msgstr "Usar o UID do usuário" - -msgid "Set aside a pool of subnets" -msgstr "Reservar um conjunto de subredes" - -msgid "Set extended HTTP proxy options" -msgstr "Definir opções extendidas para o proxy HTTP" - -msgid "Set output verbosity" -msgstr "Definir detalhamento do registo" - -msgid "Set size of real and virtual address hash tables" -msgstr "Definir tamanho das tabelas hash de endereços reais e virtuais" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "Definir o tamanho do buffer de recepção TCP/UDP" - -msgid "Set the TCP/UDP send buffer size" -msgstr "Definir o tamanho do buffer de envio TCP/UDP" - -msgid "Set tun/tap TX queue length" -msgstr "Definir o tamanho da fila de transmissão tun/tap" - -msgid "Set tun/tap adapter parameters" -msgstr "Definir parâmetros do adaptador TUN/TAP" - -msgid "Set tun/tap device MTU" -msgstr "Definir o MTU do dispositivo tun/tap" - -msgid "Set tun/tap device overhead" -msgstr "Definir o overhead do dispositivo tun/tap" - -msgid "Set upper bound on TCP MSS" -msgstr "Definir teto do MSS TCP" - -msgid "Shaping for peer bandwidth" -msgstr "Restringir a largura de banda ao parceiro" - -msgid "Shell cmd to execute after tun device open" -msgstr "Comando shell para executar após abertura do dispositivo tun" - -msgid "Shell cmd to run after tun device close" -msgstr "Comando shell para executar após o fechamento do dispositivo tun" - -msgid "Shell command to verify X509 name" -msgstr "Comando shell para verificar o nome do X509" - -msgid "Silence the output of replay warnings" -msgstr "Silenciar a saída dos avisos de replay" - -msgid "Size of cipher key" -msgstr "Tamanho da chave de cifragem" - -msgid "Specify a default gateway for routes" -msgstr "Especificar uma roteador padrão para as rotas" - -msgid "Start OpenVPN in a hibernating state" -msgstr "Iniciar o OpenVPN em estado de hibernação" - -msgid "Start/Stop" -msgstr "Iniciar/Parar" - -msgid "Started" -msgstr "Iniciado" - -msgid "Status file format version" -msgstr "Versão de formato do arquivo de estado" - -msgid "Switch to advanced configuration »" -msgstr "Mudar para configuração avançada »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "Porta TCP/UDP tanto para local e remoto" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "Porta TCP/UDP para local (padrão=1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "Porta TCP/UDP para remoto (padrão=1194)" - -msgid "TLS cipher" -msgstr "Cifra TLS" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "Encaminhe TOS (aplicável apenas a IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "Diretório temporário para arquivo de retorno de conexão-cliente" - -msgid "The highest supported TLS version" -msgstr "A mais alta versão suporta do TLS" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "A direção da chave para as opções 'tls-auth' e 'secret'" - -msgid "The lowest supported TLS version" -msgstr "A mais baixa versão suporta do TLS" - -msgid "Timeframe for key exchange" -msgstr "Janela temporal para troca de chaves" - -msgid "Type of used device" -msgstr "Tipo de dispositivo utilizado" - -msgid "Use fast LZO compression" -msgstr "Usar compressão LZO rápida" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Usar endereços individuais em vez de subredes /30" - -msgid "Use protocol" -msgstr "Usar protocolo" - -msgid "Use tun/tap device node" -msgstr "Utilizar dispositivo tun/tap" - -msgid "Use username as common name" -msgstr "Usar o nome do usuário como 'common name' (CN)" - -msgid "Write log to file" -msgstr "Escrever registo no arquivo" - -msgid "Write process ID to file" -msgstr "Escrever PID no arquivo" - -msgid "Write status to file every n seconds" -msgstr "Escrever estado para arquivo a cada n segundos" - -msgid "no" -msgstr "não" - -msgid "tun/tap device" -msgstr "Dispositivo tun/tap" - -msgid "tun/tap inactivity timeout" -msgstr "Tempo limite de inatividade tun/tap" - -msgid "yes (%i)" -msgstr "sim (%i)" - -msgid "« Switch to basic configuration" -msgstr "« Mudar para configuração básica" - -#~ msgid "Cryptography" -#~ msgstr "Criptografia" - -# Which context? -#~ msgid "Networking" -#~ msgstr "Rede" - -#~ msgid "Service" -#~ msgstr "Serviço" - -#~ msgid "VPN" -#~ msgstr "VPN" - -#~ msgid "openvpn_%s" -#~ msgstr "openvpn_%s" - -#~ msgid "openvpn_%s_desc" -#~ msgstr "openvpn_%s_desc" diff --git a/package/luci/applications/luci-app-openvpn/po/pt/openvpn.po b/package/luci/applications/luci-app-openvpn/po/pt/openvpn.po deleted file mode 100644 index d74b0a690d..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/pt/openvpn.po +++ /dev/null @@ -1,574 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-06-03 13:43+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', ou 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Aceitar opções enviadas pelo servidor" - -msgid "Add" -msgstr "Adicionar" - -msgid "Add route after establishing connection" -msgstr "Adicionar rota após estabelecimento da ligação" - -msgid "Additional authentication over TLS" -msgstr "Autenticação adicional por TLS" - -msgid "Allow client-to-client traffic" -msgstr "Permitir tráfego cliente-a-cliente" - -msgid "Allow multiple clients with same certificate" -msgstr "Permitir multiplos clientes com o mesmo certificado" - -msgid "Allow only one session" -msgstr "Permitir apenas uma sessão" - -msgid "Allow remote to change its IP or port" -msgstr "Permitir a um host remoto que altere o seu IP ou porta" - -msgid "Allowed maximum of connected clients" -msgstr "Máximo permitido de clientes ligados" - -msgid "Allowed maximum of internal" -msgstr "Máximo permitido internamente para rotas de clientes" - -msgid "Allowed maximum of new connections" -msgstr "Maximo permitido de novas ligações" - -msgid "Append log to file" -msgstr "Acrescentar registos ao ficheiro" - -msgid "Authenticate using username/password" -msgstr "Autenticar com username/password" - -msgid "Automatically redirect default route" -msgstr "Redireccionar automaticamente a rota pre-definida" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" -"Abaixo está uma lista de todas as instâncias OpenVPN configuradas e o seu " -"estado actual" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "Executar o comando/script antes do fecho tun/tap" - -msgid "Certificate authority" -msgstr "Autoridade certificadora" - -msgid "Change process priority" -msgstr "Alterar prioridade do processo" - -msgid "Change to directory before initialization" -msgstr "Mudar para o directório antes da inicialização" - -msgid "Check peer certificate against a CRL" -msgstr "Verificar certificado do remoto conta uma CRL" - -msgid "Chroot to directory after initialization" -msgstr "Chroot para o directorio apos a inicialização" - -msgid "Client is disabled" -msgstr "Cliente desativado" - -msgid "Configuration category" -msgstr "Categoria da configuração" - -msgid "Configure client mode" -msgstr "Configurar modo cliente" - -msgid "Configure server bridge" -msgstr "Configurar bridge de servidor" - -msgid "Configure server mode" -msgstr "Configurar modo de servidor" - -msgid "Connect through Socks5 proxy" -msgstr "Ligar através de um proxy Socks5" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Ligar ao host remoto através de um proxy HTTP" - -msgid "Connection retry interval" -msgstr "Intervalo de reestabelecimento de ligação" - -msgid "Daemonize after initialization" -msgstr "Passar a daemon após a inicialização" - -msgid "Delay n seconds after connection" -msgstr "Aguardar n segundos após a ligação" - -msgid "Delay tun/tap open and up script execution" -msgstr "Retardar o script de abertura/ativação tun/tap" - -msgid "Diffie Hellman parameters" -msgstr "Parametros Diffie-Hellman" - -msgid "Directory for custom client config files" -msgstr "Directório para configurações personalizadas dos clientes" - -msgid "Disable Paging" -msgstr "Desativar Paging" - -msgid "Disable cipher initialisation vector" -msgstr "Desativar o vector de inicialização da cifra" - -msgid "Disable options consistency check" -msgstr "Desativar opções de verificação de consistência" - -msgid "Disable replay protection" -msgstr "Desativar protecção contra replay" - -msgid "Do not bind to local address and port" -msgstr "Não vincular o endereço e porta locais" - -msgid "Don't actually execute ifconfig" -msgstr "Não executar ifconfig" - -msgid "Don't add routes automatically" -msgstr "Não adicionar rotas automaticamente" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "Não colocar em cache as passwords --askpass ou --auth-user-pass " - -msgid "Don't inherit global push options" -msgstr "Não herdar as opções globais de envio (push)" - -msgid "Don't log timestamps" -msgstr "Não registar timestamps" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "Não reler a chave entre reinicios" - -msgid "Don't require client certificate" -msgstr "Não solicitar certificado ao cliente" - -msgid "Don't use adaptive lzo compression" -msgstr "Não usar compressão LZO adaptiva" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "Não avisar quando existirem inconsistencias no ifconfig" - -msgid "Echo parameters to log" -msgstr "Escrever parametros no registo" - -msgid "Empirically measure MTU" -msgstr "Medição empírica de MTU" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Ativar motor OpenSSL por hardware" - -msgid "Enable Path MTU discovery" -msgstr "Ativar a descoberta do MTU do caminho" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Ativar modo de encriptação por chave estática (não-TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Activar TLS e assumir papel de cliente" - -msgid "Enable TLS and assume server role" -msgstr "Activar TLS e assumir papel de servidor" - -msgid "Enable internal datagram fragmentation" -msgstr "Activar a fragmentação interna de datagramas" - -msgid "Enable management interface on IP port" -msgstr "Activar o interface de gestão em IP porta" - -msgid "Enabled" -msgstr "Activado" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "Cifra de encriptação para pacotes" - -msgid "Execute shell cmd after routes are added" -msgstr "Executar o comando shell após as rotas serem adicionadas" - -msgid "Execute shell command on remote ip change" -msgstr "Executar o comando shell quando existir alteração do IP remoto" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" -"Executado em modo de servidor em novas ligações de cliente, quando o cliente " -"ainda não é de confiável" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" -"Executado em modo de servidor quando um endereço IPv4/rota ou endereço MAC é " -"adicionado à tabela interna de roteamento do OpernVPN." - -msgid "Exit on TLS negotiation failure" -msgstr "Fechar quando existir falha na negociação TLS" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "Obter password PEM do terminal de controlo antes de passar a daemon" - -msgid "HMAC authentication for packets" -msgstr "Autenticação HMAC para pacotes" - -msgid "Handling of authentication failures" -msgstr "Gestão de falhas de autenticação" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" -"Directiva auxiliar para simplificar a expressão de --ping e --ping-restart " -"nas configurações do modo servidor" - -msgid "If hostname resolve fails, retry" -msgstr "Se a resolução de nomes falhar, tentar novamente" - -msgid "Instance \"%s\"" -msgstr "Instância \"%s\"" - -msgid "Invalid" -msgstr "Inválido" - -msgid "Keep local IP address on restart" -msgstr "Manter o endereço IP local entre reinicios" - -msgid "Keep remote IP address on restart" -msgstr "Manter o endereço IP remoto entre reinicios" - -msgid "Keep tun/tap device open on restart" -msgstr "Manter o dispositivo tun/tap aberto entre reinicios" - -msgid "Key transition window" -msgstr "Janela para transição de chaves" - -msgid "Limit repeated log messages" -msgstr "Limitar repetição de entradas no registo" - -msgid "Local certificate" -msgstr "Certificado local" - -msgid "Local host name or ip address" -msgstr "Hostname ou endereço IP local" - -msgid "Local private key" -msgstr "Chave privada local" - -msgid "Major mode" -msgstr "Modo principal" - -msgid "Make tun device IPv6 capable" -msgstr "Tornar o dispositivo tun capaz de IPv6" - -msgid "Maximum number of queued TCP output packets" -msgstr "Maximo de pacotes TCP na queue de output" - -msgid "Number of allocated broadcast buffers" -msgstr "Numero de buffers de broadcast alocados" - -msgid "Number of lines for log file history" -msgstr "Numero de linhas para o historico do registo" - -msgid "Only accept connections from given X509 name" -msgstr "Aceitar ligações apenas de um dado nome X509" - -msgid "Only process ping timeouts if routes exist" -msgstr "Só processar timeouts de pings se existirem rotas" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "Instâncias OpenVPN" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Optimizar as escritas TUN/TAP/UDP" - -msgid "Output to syslog and do not daemonize" -msgstr "Registos para o syslog e não passar a daemon" - -msgid "Overview" -msgstr "Visão Geral" - -msgid "PKCS#12 file containing keys" -msgstr "Ficheiro PKCS#12 com chaves" - -msgid "Pass environment variables to script" -msgstr "Passar variaveis de ambiente ao script" - -msgid "Persist replay-protection state" -msgstr "Manter persistência da protecção replay" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "Manter ou não o conjunto de subredes" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "Pingar o remoto a cada n segundos sobre a porta TCP/UDP" - -msgid "Policy level over usage of external programs and scripts" -msgstr "Nível da política sobre o uso de programas externos e scripts" - -msgid "Port" -msgstr "Porta" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Proxy timeout in seconds" -msgstr "Timeout do proxy em segundos" - -msgid "Push an ifconfig option to remote" -msgstr "Enviar uma opção ifconfig ao remoto" - -msgid "Push options to peer" -msgstr "Enviar opções ao remoto" - -msgid "Query management channel for private key" -msgstr "Solicitar chave privada ao canal de gestão" - -msgid "Randomly choose remote server" -msgstr "Escolher o server remoto aleatoriamente" - -msgid "Refuse connection if no custom client config" -msgstr "Recusar ligações de clientes que não tenham configurações " - -msgid "Remap SIGUSR1 signals" -msgstr "Mapear os sinais SIGUSR1" - -msgid "Remote host name or ip address" -msgstr "Hostname endereço IP remoto" - -msgid "Remote ping timeout" -msgstr "Timeout do ping remoto" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Renegociar chave do canal de dados após n bytes " - -msgid "Renegotiate data chan. key after packets" -msgstr "Renegociar chave do canal de dados após n pacotes" - -msgid "Renegotiate data chan. key after seconds" -msgstr "Renegociar chave do canal de dados após n segundos" - -msgid "Replay protection sliding window size" -msgstr "Tamanho da janela de protecção conta replay" - -msgid "Require explicit designation on certificate" -msgstr "Requerer designação específica no certificado" - -msgid "Require explicit key usage on certificate" -msgstr "Requerer utilização explicita de utilização de chave no certificado" - -msgid "Restart after remote ping timeout" -msgstr "Reiniciar após timeout do ping remoto" - -msgid "Retransmit timeout on TLS control channel" -msgstr "Timeout de retransmissão no canal de controlo TLS" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Tentar infinitamente sempre que existam erros de proxy HTTP" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Tentar continuamente a ligação quando existirem erros de proxy Socks" - -msgid "Route subnet to client" -msgstr "Encaminhar rota da subrede para o cliente" - -msgid "Run as an inetd or xinetd server" -msgstr "Executar via inetd ou xinetd" - -msgid "Run script cmd on client connection" -msgstr "Executar script quando o cliente ligar" - -msgid "Run script cmd on client disconnection" -msgstr "Executar script quando o cliente desligar" - -msgid "Run up/down scripts for all restarts" -msgstr "Executar scripts de abertura/activação para todos os reinicios" - -msgid "Send notification to peer on disconnect" -msgstr "Notificar remoto ao desligar" - -msgid "Set GID to group" -msgstr "Assumir GID para o grupo" - -msgid "Set TCP/UDP MTU" -msgstr "Definir o MTU TCP/UDP" - -msgid "Set UID to user" -msgstr "Assumir UID para o utilizador" - -msgid "Set aside a pool of subnets" -msgstr "Reservar um conjunto de subredes" - -msgid "Set extended HTTP proxy options" -msgstr "Definir opções extra para o proxy HTTP" - -msgid "Set output verbosity" -msgstr "Definir verbosidade do registo" - -msgid "Set size of real and virtual address hash tables" -msgstr "Definir tamanho das tabelas hash de endereços reais e virtuais" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "Definir o buffer de recepção TCP/UDP" - -msgid "Set the TCP/UDP send buffer size" -msgstr "Definir o buffer de envio TCP/UDP" - -msgid "Set tun/tap TX queue length" -msgstr "Definir o tamanho da queue de transmissão tun/tap" - -msgid "Set tun/tap adapter parameters" -msgstr "Definir os parâmetros do adaptador tun/tap" - -msgid "Set tun/tap device MTU" -msgstr "Definir o MTU do dispositivo tun/tap" - -msgid "Set tun/tap device overhead" -msgstr "Definir o overhead do dispositivo tun/tap" - -msgid "Set upper bound on TCP MSS" -msgstr "Definir tecto do MSS TCP" - -msgid "Shaping for peer bandwidth" -msgstr "Restringir a largura de banda ao remoto" - -msgid "Shell cmd to execute after tun device open" -msgstr "Comando shell a executar após abertura do dispositivo tun" - -msgid "Shell cmd to run after tun device close" -msgstr "Comando shell a executar após fecho do dispositivo tun" - -msgid "Shell command to verify X509 name" -msgstr "Comando shell para verificar o nome X509" - -msgid "Silence the output of replay warnings" -msgstr "Silenciar o output dos avisos de replay" - -msgid "Size of cipher key" -msgstr "Tamanho da chave de cifra" - -msgid "Specify a default gateway for routes" -msgstr "Especificar uma gateway para as rotas" - -msgid "Start OpenVPN in a hibernating state" -msgstr "Iniciar o OpenVPN em estado de hibernação" - -msgid "Start/Stop" -msgstr "Iniciar/Parar" - -msgid "Started" -msgstr "Iniciado" - -msgid "Status file format version" -msgstr "Versão de formato do ficheiro de estado" - -msgid "Switch to advanced configuration »" -msgstr "Mudar para configuração avançada" - -msgid "TCP/UDP port # for both local and remote" -msgstr "Porta TCP/UDP para local e remoto" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "Porta TCP/UDP para local (predefinição=1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "Porta TCP/UDP para remoto (predefinição=1194)" - -msgid "TLS cipher" -msgstr "Cifra TLS" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "Passthrough TOS (aplicavel apenas a IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "Directório temporário para ficheiro de retorno de ligação-cliente" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "Janela temporal para troca de chaves" - -msgid "Type of used device" -msgstr "Tipo de dispositivo utilizado" - -msgid "Use fast LZO compression" -msgstr "Usar compressão LZO rápida" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Usar endereços individuais em vez de subredes /30" - -msgid "Use protocol" -msgstr "Usar protocolo" - -msgid "Use tun/tap device node" -msgstr "Utilizar dispositivo tun/tap" - -msgid "Use username as common name" -msgstr "Usar o username como nome comum" - -msgid "Write log to file" -msgstr "Escrever registo para o ficheiro" - -msgid "Write process ID to file" -msgstr "Escrever PID no ficheiro" - -msgid "Write status to file every n seconds" -msgstr "Escrever estado para ficheiro a cada n segundos" - -msgid "no" -msgstr "não" - -msgid "tun/tap device" -msgstr "Dispositivo tun/tap" - -msgid "tun/tap inactivity timeout" -msgstr "Timeout de inactividade tun/tap" - -msgid "yes (%i)" -msgstr "sim (%i)" - -msgid "« Switch to basic configuration" -msgstr "Mudar para configuração básica" - -#~ msgid "Cryptography" -#~ msgstr "Criptografia" - -#~ msgid "Networking" -#~ msgstr "Rede" - -#~ msgid "Service" -#~ msgstr "Serviço" - -#~ msgid "VPN" -#~ msgstr "VPN" diff --git a/package/luci/applications/luci-app-openvpn/po/ro/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ro/openvpn.po deleted file mode 100644 index ef5e7ce379..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/ro/openvpn.po +++ /dev/null @@ -1,551 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2;\n" - -msgid "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN instances" -msgstr "" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "" - -msgid "« Switch to basic configuration" -msgstr "" diff --git a/package/luci/applications/luci-app-openvpn/po/ru/openvpn.po b/package/luci/applications/luci-app-openvpn/po/ru/openvpn.po deleted file mode 100644 index 89cf1161cc..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/ru/openvpn.po +++ /dev/null @@ -1,590 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: openvpn\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-09-06 10:01+0200\n" -"Last-Translator: datasheet \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p' или 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Принимать опции, отправленные с сервера" - -msgid "Add" -msgstr "Добавить" - -msgid "Add route after establishing connection" -msgstr "Добавить маршрут после установки соединения" - -msgid "Additional authentication over TLS" -msgstr "Дополнительная аутентификация через TLS" - -msgid "Allow client-to-client traffic" -msgstr "Разрешить общение клиентов друг с другом" - -msgid "Allow multiple clients with same certificate" -msgstr "Разрешить несколько клиентов с одним сертификатом" - -msgid "Allow only one session" -msgstr "Разрешить только одну сессию" - -msgid "Allow remote to change its IP or port" -msgstr "Позволить удалённому хосту изменять IP-адрес или порт" - -msgid "Allowed maximum of connected clients" -msgstr "Разрешённое максимальное количество подключенных клиентов" - -msgid "Allowed maximum of internal" -msgstr "Разрешённое максимальное количество внутренних" - -msgid "Allowed maximum of new connections" -msgstr "Разрешённое максимальное количество новых соединений" - -msgid "Append log to file" -msgstr "Дописать журнал в файл" - -msgid "Authenticate using username/password" -msgstr "Аутентификация с использованием имени пользователя и пароля" - -msgid "Automatically redirect default route" -msgstr "Автоматически перенаправлять маршруты по умолчанию" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "Список настроенных процессов OpenVPN и их текущее состояние" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "Команда/скрипт, запускаем(ая/ый) перед закрытием TUN/TAP" - -msgid "Certificate authority" -msgstr "Центр сертификации" - -msgid "Change process priority" -msgstr "Изменить приоритет процесса" - -msgid "Change to directory before initialization" -msgstr "Перейти в указанную директорию перед инициализацией" - -msgid "Check peer certificate against a CRL" -msgstr "Проверить сертификат пира в CRL" - -msgid "Chroot to directory after initialization" -msgstr "Выполнить chroot на указанную директорию после инициализации" - -msgid "Client is disabled" -msgstr "Клиент выключен" - -msgid "Configuration category" -msgstr "Категория конфигурации" - -msgid "Configure client mode" -msgstr "Настроить режим клиента" - -msgid "Configure server bridge" -msgstr "Настроить мост" - -msgid "Configure server mode" -msgstr "Настроить режим сервера" - -msgid "Connect through Socks5 proxy" -msgstr "Соединяться используя Socks5-прокси" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "Подключиться к удалённому хосту через HTTP-прокси" - -msgid "Connection retry interval" -msgstr "Интервал между попытками подключения" - -msgid "Daemonize after initialization" -msgstr "Перейти в режим демона после инициализации" - -msgid "Delay n seconds after connection" -msgstr "Задержка n секунд после подключения" - -msgid "Delay tun/tap open and up script execution" -msgstr "" -"Использовать задержку перед открытием устройства tun и выполнением скрипта" - -msgid "Diffie Hellman parameters" -msgstr "Параметры алгоритма DH" - -msgid "Directory for custom client config files" -msgstr "Директория пользовательских файлов конфигурации клиентов" - -msgid "Disable Paging" -msgstr "Выключить пейджинг" - -msgid "Disable cipher initialisation vector" -msgstr "Выключить вектор инициализации шифра" - -msgid "Disable options consistency check" -msgstr "Выключить проверку целостности опций" - -msgid "Disable replay protection" -msgstr "Отключить проверку повторов" - -msgid "Do not bind to local address and port" -msgstr "Не выполнять привязку к локальному адресу и порту" - -msgid "Don't actually execute ifconfig" -msgstr "Не выполнять ifconfig" - -msgid "Don't add routes automatically" -msgstr "Не добавлять маршруты автоматически" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "Не кешировать пароли --askpass или --auth-user-pass" - -#, fuzzy -msgid "Don't inherit global push options" -msgstr "Не наследовать глобальные параметры push" - -msgid "Don't log timestamps" -msgstr "Не записывать отметки времени в журнал" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "Не считывать заново ключ при перезапуске" - -msgid "Don't require client certificate" -msgstr "Не требовать сертификат у клиента" - -msgid "Don't use adaptive lzo compression" -msgstr "Не использовать адаптивное сжатие LZO" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "Не извещать об ошибках ifconfig" - -msgid "Echo parameters to log" -msgstr "Выводить параметры в журнал" - -msgid "Empirically measure MTU" -msgstr "Эмпирически измерять MTU" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Включить поддержку аппаратного шифрования OpenSSL" - -msgid "Enable Path MTU discovery" -msgstr "Включить обнаружение пути MTU (PMTUD)" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Включить шифрование с постоянным ключом (не TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Включить TLS в режиме клиента" - -msgid "Enable TLS and assume server role" -msgstr "Включить TLS в режиме сервера" - -msgid "Enable internal datagram fragmentation" -msgstr "Включить внутреннюю фрагментацию дейтаграмм" - -msgid "Enable management interface on IP port" -msgstr "Включить интерфейс управления на IP порту" - -msgid "Enabled" -msgstr "Включено" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "Шифровать и аутентифициоровать ключом все пакеты канала управления" - -msgid "Encryption cipher for packets" -msgstr "Шифрование для пакетов" - -msgid "Execute shell cmd after routes are added" -msgstr "Выполнить shell-команду после добавления маршрутов" - -msgid "Execute shell command on remote ip change" -msgstr "Выполнить shell-команду при изменении IP-адреса удалённого хоста" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" -"Выполняется в режиме сервера при появлении новых клиентских соединений, если " -"к клиенту ещё нет доверия" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" -"Выполняется в режиме сервера, когда адрес/маршрут IPv4 или MAC-адрес " -"добавлен в таблицу маршрутизации OpenVPN" - -msgid "Exit on TLS negotiation failure" -msgstr "Выйти при ошибке согласования TLS" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "Получить пароль PEM от управляющей консоли перед уходом в фон" - -msgid "HMAC authentication for packets" -msgstr "HMAC-аутентификация для пакетов" - -msgid "Handling of authentication failures" -msgstr "Обработка ошибок аутентификации" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" -"Вспомогательная директива для упрощения выражений --ping и --ping-restart в " -"конфигурациях серверного режима" - -msgid "If hostname resolve fails, retry" -msgstr "Пытаться заново подключиться при ошибке определения имени хоста" - -msgid "Instance \"%s\"" -msgstr "Процесс \"%s\"" - -msgid "Invalid" -msgstr "Неверный" - -msgid "Keep local IP address on restart" -msgstr "Не изменять локальный IP-адрес при перезапуске" - -msgid "Keep remote IP address on restart" -msgstr "Не изменять удалённый IP-адрес при перезапуске" - -msgid "Keep tun/tap device open on restart" -msgstr "Не закрывать устройство tun/tap при перезапуске" - -# Может "Окно перехода ключей", надо смотреть контекст -#, fuzzy -msgid "Key transition window" -msgstr "Окно передачи ключей" - -msgid "Limit repeated log messages" -msgstr "Ограничить повторяющиеся сообщения журнала" - -msgid "Local certificate" -msgstr "Локальный сертификат" - -msgid "Local host name or ip address" -msgstr "Имя локального хоста или IP-адрес" - -msgid "Local private key" -msgstr "Локальный секретный ключ" - -msgid "Major mode" -msgstr "Основной режим" - -msgid "Make tun device IPv6 capable" -msgstr "Включить поддержку IPv6 для устройства tun" - -msgid "Maximum number of queued TCP output packets" -msgstr "Максимальное количество исходящих TCP-пакетов в очереди" - -msgid "Number of allocated broadcast buffers" -msgstr "Количество выделенных широковещательных буферов" - -msgid "Number of lines for log file history" -msgstr "Количество строк в файле журнала" - -msgid "Only accept connections from given X509 name" -msgstr "Принимать соединения только от данного имени X509" - -msgid "Only process ping timeouts if routes exist" -msgstr "" -"Обрабатывать таймаут ping-запросов только в случае, когда существует " -"необходимый маршрут" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "Процессы OpenVPN" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Оптимизировать запись TUN/TAP/UDP" - -msgid "Output to syslog and do not daemonize" -msgstr "Выводить сообщения в системный журнал и не переходить в фоновый режим" - -msgid "Overview" -msgstr "Обзор" - -msgid "PKCS#12 file containing keys" -msgstr "Файл с ключами PKCS#12" - -msgid "Pass environment variables to script" -msgstr "Передавать переменные окружения скрипту" - -msgid "Persist replay-protection state" -msgstr "Сохранять состояние защищённого ответа" - -#, fuzzy -msgid "Persist/unpersist ifconfig-pool" -msgstr "Сохранять/не сохранять пул ifconfig" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "Выполнять ping каждые n секунд, используя порт TCP/UDP" - -msgid "Policy level over usage of external programs and scripts" -msgstr "Уровень безопасности для внешних программ и скриптов" - -msgid "Port" -msgstr "Порт" - -msgid "Protocol" -msgstr "Протокол" - -msgid "Proxy timeout in seconds" -msgstr "Таймаут прокси (сек.)" - -msgid "Push an ifconfig option to remote" -msgstr "Передавать опцию ifconfig удалённой стороне" - -msgid "Push options to peer" -msgstr "Передавать опции пиру" - -msgid "Query management channel for private key" -msgstr "Запросить канал управления для закрытого ключа" - -msgid "Randomly choose remote server" -msgstr "Случайно выбирать удалённый сервер" - -msgid "Refuse connection if no custom client config" -msgstr "" -"Разорвать соединение, если пользовательская конфигурация клиента отсутствует" - -msgid "Remap SIGUSR1 signals" -msgstr "Обрабатывать сигнал SIGUSR1" - -msgid "Remote host name or ip address" -msgstr "Имя удалённого хоста или IP-адрес" - -msgid "Remote ping timeout" -msgstr "Таймаут удалённых ping-запросов" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Пересогласовать ключ канала данных после кол-ва байт" - -msgid "Renegotiate data chan. key after packets" -msgstr "Пересогласовать ключ канала данных после кол-ва пакетов" - -msgid "Renegotiate data chan. key after seconds" -msgstr "Пересогласовать ключ канала данных после кол-ва секунд" - -#, fuzzy -msgid "Replay protection sliding window size" -msgstr "Размер скользящего окна защиты от повторов" - -msgid "Require explicit designation on certificate" -msgstr "Требовать явного указания в сертификате" - -msgid "Require explicit key usage on certificate" -msgstr "Требовать явного использования ключа в сертификате" - -msgid "Restart after remote ping timeout" -msgstr "Начать заново после таймаута ping-запроса" - -msgid "Retransmit timeout on TLS control channel" -msgstr "Таймаут повторной отправки канала управления TLS" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Постоянно пытаться заново подключиться при ошибке HTTP-прокси" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Постоянно пытаться заново подключиться при ошибке Socks-прокси" - -msgid "Route subnet to client" -msgstr "Перенаправить подсеть клиенту" - -msgid "Run as an inetd or xinetd server" -msgstr "Запустить как inetd- или xinetd-сервер" - -msgid "Run script cmd on client connection" -msgstr "Выполнить скрипт при подключении клиента" - -msgid "Run script cmd on client disconnection" -msgstr "Выполнить скрипт при отключении клиента" - -msgid "Run up/down scripts for all restarts" -msgstr "Запускать up/down скрипты для всех перезапусков" - -msgid "Send notification to peer on disconnect" -msgstr "Послать уведомление пиру при разъединении" - -msgid "Set GID to group" -msgstr "Установить GID группе" - -msgid "Set TCP/UDP MTU" -msgstr "Установить TCP/UDP MTU" - -msgid "Set UID to user" -msgstr "Установить UID пользователю" - -#, fuzzy -msgid "Set aside a pool of subnets" -msgstr "Установить пул подсетей" - -msgid "Set extended HTTP proxy options" -msgstr "Установить расширенные настройки HTTP-прокси" - -msgid "Set output verbosity" -msgstr "Установить уровень вывода" - -msgid "Set size of real and virtual address hash tables" -msgstr "Установить размер реальной и виртуальной хеш-таблиц" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "Установить размер буфера приёма TCP/UDP" - -msgid "Set the TCP/UDP send buffer size" -msgstr "Установить размер буфера передачи TCP/UDP" - -msgid "Set tun/tap TX queue length" -msgstr "Установить размер очереди передачи tun/tap" - -msgid "Set tun/tap adapter parameters" -msgstr "Установить параметры адаптера tun/tap" - -msgid "Set tun/tap device MTU" -msgstr "Установить MTU для tun/tap устройства" - -msgid "Set tun/tap device overhead" -msgstr "Установить накладные расходы tun/tap устройства" - -msgid "Set upper bound on TCP MSS" -msgstr "Установить верхнюю границу для TCP MSS" - -msgid "Shaping for peer bandwidth" -msgstr "Шейпинг пропускной способности пира" - -msgid "Shell cmd to execute after tun device open" -msgstr "Выполнить shell-команду после открытия устройства tun" - -msgid "Shell cmd to run after tun device close" -msgstr "Выполнить shell-команду после закрытия устройства tun" - -msgid "Shell command to verify X509 name" -msgstr "Shell-команда для проверки имени X509" - -msgid "Silence the output of replay warnings" -msgstr "Заглушить вывод предупреждений повторов" - -msgid "Size of cipher key" -msgstr "Размер ключа шифрования" - -msgid "Specify a default gateway for routes" -msgstr "Установить шлюз по умолчанию для маршрутов" - -msgid "Start OpenVPN in a hibernating state" -msgstr "Запустить OpenVPN в спящем режиме" - -msgid "Start/Stop" -msgstr "Старт/Стоп" - -msgid "Started" -msgstr "Запущено" - -msgid "Status file format version" -msgstr "Версия формата статусного файла" - -msgid "Switch to advanced configuration »" -msgstr "Перейти к расширенным настройкам »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "Номер локального и удалённого TCP/UDP порта" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "Номер локального TCP/UDP порта (1194 по умолчанию)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "Номер удалённого TCP/UDP порта (1194 по умолчанию)" - -msgid "TLS cipher" -msgstr "Шифр TLS" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "Пропуск ToS (только для IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "Временная директория для файла возрата подключения клиента" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "Временное окно для обмена ключами" - -msgid "Type of used device" -msgstr "Тип используемого устройства" - -msgid "Use fast LZO compression" -msgstr "Использовать быстрое сжатие LZO" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Использовать адреса вместо подсетей /30" - -msgid "Use protocol" -msgstr "Использовать протокол" - -msgid "Use tun/tap device node" -msgstr "Использовать файл устройства tun/tap" - -msgid "Use username as common name" -msgstr "Использовать имя пользователя как общее имя" - -msgid "Write log to file" -msgstr "Записать журнал в файл" - -msgid "Write process ID to file" -msgstr "Записать ID процесса в файл" - -msgid "Write status to file every n seconds" -msgstr "Записывать статус в файл каждые n секунд" - -msgid "no" -msgstr "нет" - -msgid "tun/tap device" -msgstr "устройство tun/tap" - -msgid "tun/tap inactivity timeout" -msgstr "таймаут простоя tun/tap" - -msgid "yes (%i)" -msgstr "да (%i)" - -msgid "« Switch to basic configuration" -msgstr "« Перейти к основным настройкам" - -#~ msgid "Cryptography" -#~ msgstr "Криптография" - -#~ msgid "Networking" -#~ msgstr "Сеть" - -#~ msgid "Service" -#~ msgstr "Служба" - -#~ msgid "VPN" -#~ msgstr "VPN" - -#~ msgid "openvpn_%s" -#~ msgstr "openvpn_%s" - -#~ msgid "openvpn_%s_desc" -#~ msgstr "openvpn_%s_описание" diff --git a/package/luci/applications/luci-app-openvpn/po/sk/openvpn.po b/package/luci/applications/luci-app-openvpn/po/sk/openvpn.po deleted file mode 100644 index 9005529762..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/sk/openvpn.po +++ /dev/null @@ -1,549 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN instances" -msgstr "" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "" - -msgid "« Switch to basic configuration" -msgstr "" diff --git a/package/luci/applications/luci-app-openvpn/po/sv/openvpn.po b/package/luci/applications/luci-app-openvpn/po/sv/openvpn.po deleted file mode 100644 index 838f4650dd..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/sv/openvpn.po +++ /dev/null @@ -1,550 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Kristoffer Grundström \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', eller 'subnät'" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "Lägg till" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "Ytterligare autentisering via TLS" - -msgid "Allow client-to-client traffic" -msgstr "Tillåt klient-till-klienttraffik" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN instances" -msgstr "" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "" - -msgid "« Switch to basic configuration" -msgstr "" diff --git a/package/luci/applications/luci-app-openvpn/po/templates/openvpn.pot b/package/luci/applications/luci-app-openvpn/po/templates/openvpn.pot deleted file mode 100644 index 126cab076f..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/templates/openvpn.pot +++ /dev/null @@ -1,542 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN instances" -msgstr "" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "" - -msgid "« Switch to basic configuration" -msgstr "" diff --git a/package/luci/applications/luci-app-openvpn/po/tr/openvpn.po b/package/luci/applications/luci-app-openvpn/po/tr/openvpn.po deleted file mode 100644 index 917c36d561..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/tr/openvpn.po +++ /dev/null @@ -1,549 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "" - -msgid "Allow multiple clients with same certificate" -msgstr "" - -msgid "Allow only one session" -msgstr "" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN instances" -msgstr "" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "" - -msgid "« Switch to basic configuration" -msgstr "" diff --git a/package/luci/applications/luci-app-openvpn/po/uk/openvpn.po b/package/luci/applications/luci-app-openvpn/po/uk/openvpn.po deleted file mode 100644 index e98b52a8ae..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/uk/openvpn.po +++ /dev/null @@ -1,553 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-11-30 09:14+0200\n" -"Last-Translator: Pavel \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "" - -msgid "Accept options pushed from server" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "" - -msgid "Additional authentication over TLS" -msgstr "" - -msgid "Allow client-to-client traffic" -msgstr "Дозволити обмін трафіком між клієнтами" - -msgid "Allow multiple clients with same certificate" -msgstr "Дозволити декілька клієнтів з однаковим сертифікатом" - -msgid "Allow only one session" -msgstr "Дозволити лише одну сесію" - -msgid "Allow remote to change its IP or port" -msgstr "" - -msgid "Allowed maximum of connected clients" -msgstr "" - -msgid "Allowed maximum of internal" -msgstr "" - -msgid "Allowed maximum of new connections" -msgstr "" - -msgid "Append log to file" -msgstr "" - -msgid "Authenticate using username/password" -msgstr "" - -msgid "Automatically redirect default route" -msgstr "" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "" - -msgid "Certificate authority" -msgstr "" - -msgid "Change process priority" -msgstr "" - -msgid "Change to directory before initialization" -msgstr "" - -msgid "Check peer certificate against a CRL" -msgstr "" - -msgid "Chroot to directory after initialization" -msgstr "" - -msgid "Client is disabled" -msgstr "" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "" - -msgid "Configure server bridge" -msgstr "" - -msgid "Configure server mode" -msgstr "" - -msgid "Connect through Socks5 proxy" -msgstr "" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "" - -msgid "Daemonize after initialization" -msgstr "" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "" - -msgid "Diffie Hellman parameters" -msgstr "" - -msgid "Directory for custom client config files" -msgstr "" - -msgid "Disable Paging" -msgstr "" - -msgid "Disable cipher initialisation vector" -msgstr "" - -msgid "Disable options consistency check" -msgstr "" - -msgid "Disable replay protection" -msgstr "" - -msgid "Do not bind to local address and port" -msgstr "" - -msgid "Don't actually execute ifconfig" -msgstr "" - -msgid "Don't add routes automatically" -msgstr "" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "" - -msgid "Don't inherit global push options" -msgstr "" - -msgid "Don't log timestamps" -msgstr "" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "" - -msgid "Don't require client certificate" -msgstr "" - -msgid "Don't use adaptive lzo compression" -msgstr "" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "" - -msgid "Echo parameters to log" -msgstr "" - -msgid "Empirically measure MTU" -msgstr "" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "" - -msgid "Enable Path MTU discovery" -msgstr "" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "" - -msgid "Enable TLS and assume client role" -msgstr "" - -msgid "Enable TLS and assume server role" -msgstr "" - -msgid "Enable internal datagram fragmentation" -msgstr "" - -msgid "Enable management interface on IP port" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "" - -msgid "Execute shell cmd after routes are added" -msgstr "" - -msgid "Execute shell command on remote ip change" -msgstr "" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "" - -msgid "HMAC authentication for packets" -msgstr "" - -msgid "Handling of authentication failures" -msgstr "" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "" - -msgid "Keep remote IP address on restart" -msgstr "" - -msgid "Keep tun/tap device open on restart" -msgstr "" - -msgid "Key transition window" -msgstr "" - -msgid "Limit repeated log messages" -msgstr "" - -msgid "Local certificate" -msgstr "" - -msgid "Local host name or ip address" -msgstr "" - -msgid "Local private key" -msgstr "" - -msgid "Major mode" -msgstr "" - -msgid "Make tun device IPv6 capable" -msgstr "" - -msgid "Maximum number of queued TCP output packets" -msgstr "" - -msgid "Number of allocated broadcast buffers" -msgstr "" - -msgid "Number of lines for log file history" -msgstr "" - -msgid "Only accept connections from given X509 name" -msgstr "" - -msgid "Only process ping timeouts if routes exist" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN instances" -msgstr "" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "" - -msgid "Output to syslog and do not daemonize" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "" - -msgid "Pass environment variables to script" -msgstr "" - -msgid "Persist replay-protection state" -msgstr "" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Proxy timeout in seconds" -msgstr "" - -msgid "Push an ifconfig option to remote" -msgstr "" - -msgid "Push options to peer" -msgstr "" - -msgid "Query management channel for private key" -msgstr "" - -msgid "Randomly choose remote server" -msgstr "" - -msgid "Refuse connection if no custom client config" -msgstr "" - -msgid "Remap SIGUSR1 signals" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote ping timeout" -msgstr "" - -msgid "Renegotiate data chan. key after bytes" -msgstr "" - -msgid "Renegotiate data chan. key after packets" -msgstr "" - -msgid "Renegotiate data chan. key after seconds" -msgstr "" - -msgid "Replay protection sliding window size" -msgstr "" - -msgid "Require explicit designation on certificate" -msgstr "" - -msgid "Require explicit key usage on certificate" -msgstr "" - -msgid "Restart after remote ping timeout" -msgstr "" - -msgid "Retransmit timeout on TLS control channel" -msgstr "" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "" - -msgid "Route subnet to client" -msgstr "" - -msgid "Run as an inetd or xinetd server" -msgstr "" - -msgid "Run script cmd on client connection" -msgstr "" - -msgid "Run script cmd on client disconnection" -msgstr "" - -msgid "Run up/down scripts for all restarts" -msgstr "" - -msgid "Send notification to peer on disconnect" -msgstr "" - -msgid "Set GID to group" -msgstr "" - -msgid "Set TCP/UDP MTU" -msgstr "" - -msgid "Set UID to user" -msgstr "" - -msgid "Set aside a pool of subnets" -msgstr "" - -msgid "Set extended HTTP proxy options" -msgstr "" - -msgid "Set output verbosity" -msgstr "" - -msgid "Set size of real and virtual address hash tables" -msgstr "" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "" - -msgid "Set the TCP/UDP send buffer size" -msgstr "" - -msgid "Set tun/tap TX queue length" -msgstr "" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "" - -msgid "Set tun/tap device overhead" -msgstr "" - -msgid "Set upper bound on TCP MSS" -msgstr "" - -msgid "Shaping for peer bandwidth" -msgstr "" - -msgid "Shell cmd to execute after tun device open" -msgstr "" - -msgid "Shell cmd to run after tun device close" -msgstr "" - -msgid "Shell command to verify X509 name" -msgstr "" - -msgid "Silence the output of replay warnings" -msgstr "" - -msgid "Size of cipher key" -msgstr "" - -msgid "Specify a default gateway for routes" -msgstr "" - -msgid "Start OpenVPN in a hibernating state" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "Status file format version" -msgstr "" - -msgid "Switch to advanced configuration »" -msgstr "" - -msgid "TCP/UDP port # for both local and remote" -msgstr "" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "" - -msgid "TLS cipher" -msgstr "" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "" - -msgid "Temporary directory for client-connect return file" -msgstr "" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "" - -msgid "Type of used device" -msgstr "" - -msgid "Use fast LZO compression" -msgstr "" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "" - -msgid "Use protocol" -msgstr "" - -msgid "Use tun/tap device node" -msgstr "" - -msgid "Use username as common name" -msgstr "" - -msgid "Write log to file" -msgstr "" - -msgid "Write process ID to file" -msgstr "" - -msgid "Write status to file every n seconds" -msgstr "" - -msgid "no" -msgstr "" - -msgid "tun/tap device" -msgstr "" - -msgid "tun/tap inactivity timeout" -msgstr "" - -msgid "yes (%i)" -msgstr "" - -msgid "« Switch to basic configuration" -msgstr "" diff --git a/package/luci/applications/luci-app-openvpn/po/vi/openvpn.po b/package/luci/applications/luci-app-openvpn/po/vi/openvpn.po deleted file mode 100644 index f3873b068f..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/vi/openvpn.po +++ /dev/null @@ -1,555 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:58+0200\n" -"PO-Revision-Date: 2009-08-16 12:27+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "%s" -msgstr "" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "'net30', 'p2p', or 'subnet'" - -msgid "Accept options pushed from server" -msgstr "Chấp nhận tùy chọn được đảy từ server" - -msgid "Add" -msgstr "" - -msgid "Add route after establishing connection" -msgstr "Thêm tuyến sau khi kết nối thành lập" - -msgid "Additional authentication over TLS" -msgstr "Xác thực bổ xung trên TLS" - -msgid "Allow client-to-client traffic" -msgstr "Cho phép lưu thông đối tượng - đến - đối tượng" - -msgid "Allow multiple clients with same certificate" -msgstr "Cho phép nhiều đối tượng với cùng một chứng chỉ" - -msgid "Allow only one session" -msgstr "Chỉ cho phép một session" - -msgid "Allow remote to change its IP or port" -msgstr "Cho phép đối tượng ngoài vùng thay đổi IP hoặc cổng" - -msgid "Allowed maximum of connected clients" -msgstr "Cho phép tối đa đối tượng kết nối mới là" - -msgid "Allowed maximum of internal" -msgstr "Internal tối đa được cho phép" - -msgid "Allowed maximum of new connections" -msgstr "Cho phép tối đa kết nối mới là" - -msgid "Append log to file" -msgstr "Nối thêm log lên tập tin" - -msgid "Authenticate using username/password" -msgstr "Xác thực username/password đang sử dụng" - -msgid "Automatically redirect default route" -msgstr "Tự động chuyển hướng tuyến mặc định" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "" -"Dưới đây là một list của OpenVPN instances đã được cấu hình và tình trạng " -"hiện tại" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "Call down cmd/script trước khi TUN/TAP đóng" - -msgid "Certificate authority" -msgstr "Giấy chứng nhận ủy quyền" - -msgid "Change process priority" -msgstr "Thay đổi quy trình ưu tiên" - -msgid "Change to directory before initialization" -msgstr "Chuyển qua thư mục trước khi khởi tạo" - -msgid "Check peer certificate against a CRL" -msgstr "Kiểm tra chứng chỉ đối tác với một CRL" - -msgid "Chroot to directory after initialization" -msgstr "Chroot vào thư mục sau khi khởi tạo" - -msgid "Client is disabled" -msgstr "Đối tượng bị vô hiệu hóa" - -msgid "Configuration category" -msgstr "" - -msgid "Configure client mode" -msgstr "Định cấu hình chế độ đối tượng " - -msgid "Configure server bridge" -msgstr "Định cấu hình cầu nối server" - -msgid "Configure server mode" -msgstr "Định cấu hình chế độ server" - -msgid "Connect through Socks5 proxy" -msgstr "Kết nối qua Socks5 proxy" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "" - -msgid "Connection retry interval" -msgstr "Khoảng thử kết nối" - -msgid "Daemonize after initialization" -msgstr "Daemonize sau khi khởi tạo" - -msgid "Delay n seconds after connection" -msgstr "" - -msgid "Delay tun/tap open and up script execution" -msgstr "Trì hoãn tun/tap mở và up script execution" - -msgid "Diffie Hellman parameters" -msgstr "Tham số Diffie Hellman " - -msgid "Directory for custom client config files" -msgstr "Dạnh mục cho các tập tin config đối tương tùy chỉnh" - -msgid "Disable Paging" -msgstr "Vô hiệu hóa Paging" - -msgid "Disable cipher initialisation vector" -msgstr "Vô hiệu hóa cipher initialisation vector" - -msgid "Disable options consistency check" -msgstr "Vô hiệu hóa tùy chọn kiểm tra nhất quán" - -msgid "Disable replay protection" -msgstr "Vô hiệu hóa replay protection" - -msgid "Do not bind to local address and port" -msgstr "Đừng đóng kết địa chỉ địa phương và cổng" - -msgid "Don't actually execute ifconfig" -msgstr "Đừng thực sự thực hiện ifconfig" - -msgid "Don't add routes automatically" -msgstr "Đừng tự động thêm vào đường dẫn" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "Don't cache --askpass or --auth-user-pass passwords" - -msgid "Don't inherit global push options" -msgstr "Đừng thừa hưởng tùy chọn đẩy toàn cầu" - -msgid "Don't log timestamps" -msgstr "Đừng log timestamps" - -msgid "Don't pull routes automatically" -msgstr "" - -msgid "Don't re-read key on restart" -msgstr "Đừng đọc lại key ở chế độ khởi động " - -msgid "Don't require client certificate" -msgstr "Đừng yêu câu chứng chỉ đối tượng" - -msgid "Don't use adaptive lzo compression" -msgstr "Đừng dùng bộ nén lzo thích ứng" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "Đừng cảnh báo về sự không nhất quán của ifconfig" - -msgid "Echo parameters to log" -msgstr "Báo tham số lên log" - -msgid "Empirically measure MTU" -msgstr "Đo MTU" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "Kích hoạt OpenSSL hardware crypto engines" - -msgid "Enable Path MTU discovery" -msgstr "Kích hoạt khám phá đường dẫn MTU" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "Kích hoạt chế độ mã hóa khóa tĩnh (non-TLS)" - -msgid "Enable TLS and assume client role" -msgstr "Kích hoạt TLS và giả định vải trò của client" - -msgid "Enable TLS and assume server role" -msgstr "Kích hoạt TLS và giả định vải trò của server" - -msgid "Enable internal datagram fragmentation" -msgstr "Kích hoạt internal datagram fragmentation" - -msgid "Enable management interface on IP port" -msgstr "Kích hoạt giao diện điều hành trên IP cổng" - -msgid "Enabled" -msgstr "Kích hoạt " - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "" - -msgid "Encryption cipher for packets" -msgstr "Encryption cipher cho các gói" - -msgid "Execute shell cmd after routes are added" -msgstr "Thực hiện shell cmd sau khi tuyến đã thêm vào" - -msgid "Execute shell command on remote ip change" -msgstr "Thực hiện lệnh shell trên ip thay đổi từ xa" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" - -msgid "Exit on TLS negotiation failure" -msgstr "Exit trên TLS khi thương lượng thất bại" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "Lấy mật mã PEM từ điều khiển tty trước khi chúng ta daemonize" - -msgid "HMAC authentication for packets" -msgstr "Sự xác thực HMAC cho gói" - -msgid "Handling of authentication failures" -msgstr "Xử lý những sai soát khi xác thực " - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "" - -msgid "If hostname resolve fails, retry" -msgstr "Nếu hostname resolve thất bại, thử lại" - -msgid "Instance \"%s\"" -msgstr "Instance \"%s\"" - -msgid "Invalid" -msgstr "" - -msgid "Keep local IP address on restart" -msgstr "Giữ địa chỉ IP ở chế độ khởi động" - -msgid "Keep remote IP address on restart" -msgstr "Giữ remote địa chỉ IP ở chế độ khởi động" - -msgid "Keep tun/tap device open on restart" -msgstr "Giữ công cụ tun/tap mở khi khởi động lại " - -msgid "Key transition window" -msgstr "Key transition window" - -msgid "Limit repeated log messages" -msgstr "Giới hạn lập log tin nhắn" - -msgid "Local certificate" -msgstr "Chứng chỉ địa phương" - -msgid "Local host name or ip address" -msgstr "Tên host địa phương và địa chỉ IP" - -msgid "Local private key" -msgstr "Phím bảo mật địa phương" - -msgid "Major mode" -msgstr "Chế độ chính" - -msgid "Make tun device IPv6 capable" -msgstr "Làm cho tun công cụ IPv6 có khả năng" - -msgid "Maximum number of queued TCP output packets" -msgstr "Số lượng tối đa của queued TCP output packets" - -msgid "Number of allocated broadcast buffers" -msgstr "Số lượng phân bổ phát sóng buffers" - -msgid "Number of lines for log file history" -msgstr "Số dòng cho tập tin log history" - -msgid "Only accept connections from given X509 name" -msgstr "Chỉ chấp nhận kết nối từ những tên X509 cho sẵn" - -msgid "Only process ping timeouts if routes exist" -msgstr "Chỉ xử lý ping timouts nếu tuyến tồn tại" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "OpenVPN instances" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "Tối ưu hóa TUN/TAP/UDP writes" - -msgid "Output to syslog and do not daemonize" -msgstr "Output tới syslog và đừng daemonize" - -msgid "Overview" -msgstr "" - -msgid "PKCS#12 file containing keys" -msgstr "PKCS # 12 tập tin có chứa key" - -msgid "Pass environment variables to script" -msgstr "Bỏ qua yếu tố môi trường tới script" - -msgid "Persist replay-protection state" -msgstr "Tiếp tục tình trạng replay-protection" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "Persist/unpersist ifconfig-pool" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "Ping remote mỗi n giây trên cổng TCP/UDP" - -msgid "Policy level over usage of external programs and scripts" -msgstr "" - -msgid "Port" -msgstr "Cổng" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Proxy timeout in seconds" -msgstr "Proxy timeout in seconds" - -msgid "Push an ifconfig option to remote" -msgstr "Đảy một tùy chọn ifconfig tới remote" - -msgid "Push options to peer" -msgstr "Đẩy lựa chọn cho đối tác" - -msgid "Query management channel for private key" -msgstr "Tra vấn kênh điều hành cho phím bảo mật " - -msgid "Randomly choose remote server" -msgstr "Ngẫu nhiên chọn server ngoài vùng" - -msgid "Refuse connection if no custom client config" -msgstr "Từ chối kết nối nêu không có config đối tượng tùy chỉnh" - -msgid "Remap SIGUSR1 signals" -msgstr "Remap tín hiệu SIGUSR1" - -msgid "Remote host name or ip address" -msgstr "Tên host ngoài vùng và địa chỉ IP" - -msgid "Remote ping timeout" -msgstr "PING timeout từ xa" - -msgid "Renegotiate data chan. key after bytes" -msgstr "Thương lượng lại data chan. key sau bytes" - -msgid "Renegotiate data chan. key after packets" -msgstr "Thương lượng lại data chan. key sau packets" - -msgid "Renegotiate data chan. key after seconds" -msgstr "Thương lượng lại data chan. key sau seconds" - -msgid "Replay protection sliding window size" -msgstr "Replay chế độ bảo vệ kích thước window trượt" - -msgid "Require explicit designation on certificate" -msgstr "Yêu cầu rõ ràng về giấy chứng nhận " - -msgid "Require explicit key usage on certificate" -msgstr "Yêu cầu key dùng rõ rãng trên chứng nhận" - -msgid "Restart after remote ping timeout" -msgstr "Khởi động lại sau khi remote ping timeout" - -msgid "Retransmit timeout on TLS control channel" -msgstr "Retransmit timeout trên kênh kiểm soát TLS" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "Thử lại trên HTTP proxy lỗi" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "Thử lại trên Socks proxy lỗi" - -msgid "Route subnet to client" -msgstr "Tuyến subnet tới khách hàng" - -msgid "Run as an inetd or xinetd server" -msgstr "Chạy như inetd hoặc xinetd server" - -msgid "Run script cmd on client connection" -msgstr "Chạy script cmd trên đối tượng kết nối" - -msgid "Run script cmd on client disconnection" -msgstr "Chạy script cmd trên đối tượng không kết nối" - -msgid "Run up/down scripts for all restarts" -msgstr "Chạy up/down scripts cho tất cả khởi động" - -msgid "Send notification to peer on disconnect" -msgstr "Gửi thông báo cho bạn bè về ngắt kết nối" - -msgid "Set GID to group" -msgstr "Cài đặt GID tới nhóm" - -msgid "Set TCP/UDP MTU" -msgstr "Cài đặt TCP/UDP MTU" - -msgid "Set UID to user" -msgstr "Cài đặt UID tới người dùng" - -msgid "Set aside a pool of subnets" -msgstr "Để sang một bên một pool của subnets" - -msgid "Set extended HTTP proxy options" -msgstr "Thiết lập các tùy chọn mở rộng HTTP proxy" - -msgid "Set output verbosity" -msgstr "Đặt output verbosity" - -msgid "Set size of real and virtual address hash tables" -msgstr "Đặt dung lượng của bảng address hash thực và ảo" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "Đặt TCP/UDP nhận dung lượng buffer" - -msgid "Set the TCP/UDP send buffer size" -msgstr "Đặt TCP/UDP gửi dung lượng buffer" - -msgid "Set tun/tap TX queue length" -msgstr "Đặt tun/tap độ dài queue" - -msgid "Set tun/tap adapter parameters" -msgstr "" - -msgid "Set tun/tap device MTU" -msgstr "Đặt công cụ tun/tap MTU" - -msgid "Set tun/tap device overhead" -msgstr "Đặt thiết bị tun/tap overhead" - -msgid "Set upper bound on TCP MSS" -msgstr "Đặt upper bound trên TCP MSS" - -msgid "Shaping for peer bandwidth" -msgstr "Shaping cho peer bandwidth" - -msgid "Shell cmd to execute after tun device open" -msgstr "Shell cmd để thực thi sau khi thiết bị tun mở" - -msgid "Shell cmd to run after tun device close" -msgstr "Shell cmd để chạy sau khi thiết bị tun đóng" - -msgid "Shell command to verify X509 name" -msgstr "Shell command để hợp thức hóa tên X509 " - -msgid "Silence the output of replay warnings" -msgstr "Silence the output của các cảnh báo reply" - -msgid "Size of cipher key" -msgstr "Dung lượng của cipher key" - -msgid "Specify a default gateway for routes" -msgstr "Chỉ định một cổng mặc định cho tuyến" - -msgid "Start OpenVPN in a hibernating state" -msgstr "Bắt đầu OpenVPN trong một hibernating state" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "Bắt đầu" - -msgid "Status file format version" -msgstr "Tình trạng tập tin phiên bản format" - -msgid "Switch to advanced configuration »" -msgstr "Chuyển sang cấu hình cấp cao" - -msgid "TCP/UDP port # for both local and remote" -msgstr "Cổng TCP/UDP # cho cả địa phương và ngoài vùng" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "Cổng TCP/UDP # cho địa phương (default=1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "Cổng TCP/UDP # cho ngoài vùng (default=1194)" - -msgid "TLS cipher" -msgstr "TLS cipher" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "TOS passthrough (chỉ áp dụng cho IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "Danh mục tạm thời cho tập tin client-connect return" - -msgid "The highest supported TLS version" -msgstr "" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "" - -msgid "The lowest supported TLS version" -msgstr "" - -msgid "Timeframe for key exchange" -msgstr "Timeframe cho trao đổi key" - -msgid "Type of used device" -msgstr "Loại công cụ sử dụng" - -msgid "Use fast LZO compression" -msgstr "Dùng LZO nén nhanh" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "Nên dùng địa chỉ cá nhân hơn là /30 subnets" - -msgid "Use protocol" -msgstr "Dùng protocol" - -msgid "Use tun/tap device node" -msgstr "Dùng chế độ công cụ tun/tap" - -msgid "Use username as common name" -msgstr "Dùng tên đăng nhập như tên thông thường" - -msgid "Write log to file" -msgstr "Viết log lên tập tin" - -msgid "Write process ID to file" -msgstr "Viết xử lý ID lên tập tin" - -msgid "Write status to file every n seconds" -msgstr "Viết tình trạng tới tập tin mỗi n giây" - -msgid "no" -msgstr "không" - -msgid "tun/tap device" -msgstr "Công cụ tun/tap" - -msgid "tun/tap inactivity timeout" -msgstr "tun/tap timeout không có hành động" - -msgid "yes (%i)" -msgstr "Có (%i)" - -msgid "« Switch to basic configuration" -msgstr "Chuyển sang cấu hình căn bản" diff --git a/package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po b/package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po deleted file mode 100644 index 13182fcddd..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po +++ /dev/null @@ -1,570 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: 2017-10-29 14:37+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \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: Gtranslator 2.91.7\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "“net30”,“p2p”,或“subnet”" - -msgid "Accept options pushed from server" -msgstr "接受从服务器发送过来的选项" - -msgid "Add" -msgstr "添加" - -msgid "Add route after establishing connection" -msgstr "建立连接后添加路由" - -msgid "Additional authentication over TLS" -msgstr "TLS 以外的验证" - -msgid "Allow client-to-client traffic" -msgstr "允许客户端到客户端的通信" - -msgid "Allow multiple clients with same certificate" -msgstr "允许多用户共用同一证书" - -msgid "Allow only one session" -msgstr "只允许一个会话" - -msgid "Allow remote to change its IP or port" -msgstr "允许远端改变 IP 或端口" - -msgid "Allowed maximum of connected clients" -msgstr "允许最大已连接客户端数" - -msgid "Allowed maximum of internal" -msgstr "允许最大内部连接" - -msgid "Allowed maximum of new connections" -msgstr "允许最大新建连接数" - -msgid "Append log to file" -msgstr "添加日志至文件" - -msgid "Authenticate using username/password" -msgstr "以用户名/密码的方式进行验证" - -msgid "Automatically redirect default route" -msgstr "自动重定向至默认路由" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "以下是 OpenVPN 已配置实例及其当前状态的列表" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "TUN/TAP 关闭前的命令行及脚本" - -msgid "Certificate authority" -msgstr "认证授权" - -msgid "Change process priority" -msgstr "改变进程优先级" - -msgid "Change to directory before initialization" -msgstr "初始化前改变根目录" - -msgid "Check peer certificate against a CRL" -msgstr "验证客户端证书以确保其是否过期" - -msgid "Chroot to directory after initialization" -msgstr "初始化后改变根目录" - -msgid "Client is disabled" -msgstr "客户端已被禁止" - -msgid "Configuration category" -msgstr "配置分类" - -msgid "Configure client mode" -msgstr "配置客户端模式" - -msgid "Configure server bridge" -msgstr "配置服务器桥接" - -msgid "Configure server mode" -msgstr "配置服务器模式" - -msgid "Connect through Socks5 proxy" -msgstr "通过 Sock5 代理连接" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "通过 HTTP 代理连接到远程主机" - -msgid "Connection retry interval" -msgstr "连接重试时间间隔" - -msgid "Daemonize after initialization" -msgstr "初始化后进入后台运行" - -msgid "Delay n seconds after connection" -msgstr "连接后延迟时间(秒)" - -msgid "Delay tun/tap open and up script execution" -msgstr "延迟 tun/tap 的打开及 up 脚本的执行" - -msgid "Diffie Hellman parameters" -msgstr "Diffie–Hellman/DH 密钥交换参数" - -msgid "Directory for custom client config files" -msgstr "自定义客户端配置文件的目录" - -msgid "Disable Paging" -msgstr "禁止分页" - -msgid "Disable cipher initialisation vector" -msgstr "关闭加密的初始化向量" - -msgid "Disable options consistency check" -msgstr "禁止选项一致性检查" - -msgid "Disable replay protection" -msgstr "关闭重播保护" - -msgid "Do not bind to local address and port" -msgstr "不绑定本地地址和端口" - -msgid "Don't actually execute ifconfig" -msgstr "不实际执行 ifconfig 命令" - -msgid "Don't add routes automatically" -msgstr "不自动添加路由" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "不缓存 --askpass 或 --auth-user-pass passwords" - -msgid "Don't inherit global push options" -msgstr "不继承全局主动发送选项" - -msgid "Don't log timestamps" -msgstr "不记录时间戳" - -msgid "Don't pull routes automatically" -msgstr "不自动拉取路由" - -msgid "Don't re-read key on restart" -msgstr "服务重启时不重读密钥值" - -msgid "Don't require client certificate" -msgstr "不需要客户的证书" - -msgid "Don't use adaptive lzo compression" -msgstr "不用自适应 lzo 压缩" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "ifconfig 不一致时不警告" - -msgid "Echo parameters to log" -msgstr "把参数写入日志" - -msgid "Empirically measure MTU" -msgstr "以历史值估算 MTU 值" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "打开 OpenSSL 硬件加密引擎" - -msgid "Enable Path MTU discovery" -msgstr "启用路径 MTU 发现" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "允许静态密钥加密模式" - -msgid "Enable TLS and assume client role" -msgstr "允许 TLS 并伪装为客户端" - -msgid "Enable TLS and assume server role" -msgstr "允许 TLS 并伪装为服务器" - -msgid "Enable internal datagram fragmentation" -msgstr "允许内部数据报分片" - -msgid "Enable management interface on IP port" -msgstr "在 IP port 上启用可管理接口" - -msgid "Enabled" -msgstr "启用" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "使用密钥加密及认证所有的控制通道数据包" - -msgid "Encryption cipher for packets" -msgstr "加密数据包" - -msgid "Execute shell cmd after routes are added" -msgstr "添加路由后执行 shell 命令" - -msgid "Execute shell command on remote ip change" -msgstr "当远程 ip 改变时执行 shell 命令" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "在服务器模式下执行新的客户端连接,当客户端仍然是不可信" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" -"服务器模式下,将每个 IPv4 地址/路由或 MAC 地址添加到 OpenVPN 的内部路由表中。" - -msgid "Exit on TLS negotiation failure" -msgstr "TLS 验证失败后退出" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "后台运行前从控制的 tty 中获取 PEM 密码" - -msgid "HMAC authentication for packets" -msgstr "利用 HMAC 算法校验数据包" - -msgid "Handling of authentication failures" -msgstr "处理验证失败" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "在服务配置模式下简化 Helper 指令 --ping 和 --ping-restart 的表达式" - -msgid "If hostname resolve fails, retry" -msgstr "如果主机名解析错误,重试" - -msgid "Instance \"%s\"" -msgstr "实例 \"%s\"" - -msgid "Invalid" -msgstr "无效" - -msgid "Keep local IP address on restart" -msgstr "服务重启时保持本地 IP 地址" - -msgid "Keep remote IP address on restart" -msgstr "服务重启时保持远程 IP 地址" - -msgid "Keep tun/tap device open on restart" -msgstr "服务重启时自动打开 tun/tap 设备" - -msgid "Key transition window" -msgstr "密钥传输滑动窗口" - -msgid "Limit repeated log messages" -msgstr "限制重复的日志消息" - -msgid "Local certificate" -msgstr "本地证书" - -msgid "Local host name or ip address" -msgstr "本地主机名或 ip 地址" - -msgid "Local private key" -msgstr "本地私钥" - -msgid "Major mode" -msgstr "主要模式" - -msgid "Make tun device IPv6 capable" -msgstr "使 tun 设备兼容 IPv6" - -msgid "Maximum number of queued TCP output packets" -msgstr "TCP队列中输出包的最大数量" - -msgid "Number of allocated broadcast buffers" -msgstr "已分配的广播缓冲区数量" - -msgid "Number of lines for log file history" -msgstr "历史日志文件的行数" - -msgid "Only accept connections from given X509 name" -msgstr "只接收已给定的 X509 名称的连接" - -msgid "Only process ping timeouts if routes exist" -msgstr "仅当路由存在时处理 ping 超时" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "OpenVPN 实例" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "优化 TUN/TAP/UDP 写入" - -msgid "Output to syslog and do not daemonize" -msgstr "输出到 syslog,不运行守护进程" - -msgid "Overview" -msgstr "概览" - -msgid "PKCS#12 file containing keys" -msgstr "PKCS#12 文件包含的密钥" - -msgid "Pass environment variables to script" -msgstr "传递环境变量至脚本" - -msgid "Persist replay-protection state" -msgstr "保存重播保护的状态" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "持久/非持久 ifconfig 池" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "每 n 秒 ping 一次远程 TCP/UDP 端口" - -msgid "Policy level over usage of external programs and scripts" -msgstr "外部程序和脚本超出了策略允许的使用范围" - -msgid "Port" -msgstr "端口" - -msgid "Protocol" -msgstr "协议" - -msgid "Proxy timeout in seconds" -msgstr "代理超时,单位秒" - -msgid "Push an ifconfig option to remote" -msgstr "主动向远程发送 ifconfig 选项" - -msgid "Push options to peer" -msgstr "主动向端点发送选项" - -msgid "Query management channel for private key" -msgstr "为私钥查询管理通道" - -msgid "Randomly choose remote server" -msgstr "随机选择远程服务器" - -msgid "Refuse connection if no custom client config" -msgstr "拒接没有自定义客户端配置的连接" - -msgid "Remap SIGUSR1 signals" -msgstr "重映射 SIGUSR1 信号" - -msgid "Remote host name or ip address" -msgstr "远程主机名或 ip 地址" - -msgid "Remote ping timeout" -msgstr "远程 ping 超时" - -msgid "Renegotiate data chan. key after bytes" -msgstr "传输若干字节后重新验证数据通道密钥" - -msgid "Renegotiate data chan. key after packets" -msgstr "传输若干数据包后重新验证数据通道密钥" - -msgid "Renegotiate data chan. key after seconds" -msgstr "传输若干秒后重新验证数据通道密钥" - -msgid "Replay protection sliding window size" -msgstr "重播保护的滑动窗口大小" - -msgid "Require explicit designation on certificate" -msgstr "证书需要显式指定" - -msgid "Require explicit key usage on certificate" -msgstr "证书需要明确的密钥" - -msgid "Restart after remote ping timeout" -msgstr "远程 ping 超时后重启" - -msgid "Retransmit timeout on TLS control channel" -msgstr "TLS 控制通道超时后重新发送" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "无限重试直至代理正确" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "无限重试直至 Socks 代理正确" - -msgid "Route subnet to client" -msgstr "路由子网至客户端" - -msgid "Run as an inetd or xinetd server" -msgstr "以 inetd 或 xinetd 服务器的方式运行" - -msgid "Run script cmd on client connection" -msgstr "当客户端连接时在命令行下允许脚本" - -msgid "Run script cmd on client disconnection" -msgstr "当客户端断开时在命令行下允许脚本" - -msgid "Run up/down scripts for all restarts" -msgstr "每次重启都执行启动/关闭脚本" - -msgid "Send notification to peer on disconnect" -msgstr "断开连接时向客户端发送通知" - -msgid "Set GID to group" -msgstr "为群组设置 GID 值" - -msgid "Set TCP/UDP MTU" -msgstr "设置 TCP/UDP 的 MTU 值" - -msgid "Set UID to user" -msgstr "为用户设置 UID 值" - -msgid "Set aside a pool of subnets" -msgstr "设置子网池" - -msgid "Set extended HTTP proxy options" -msgstr "设置 HTTP 扩展代理选项" - -msgid "Set output verbosity" -msgstr "设置输出冗余级别" - -msgid "Set size of real and virtual address hash tables" -msgstr "设置实际和虚拟地址的哈希表大小" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "设置 TCP/UDP 接收缓冲区大小" - -msgid "Set the TCP/UDP send buffer size" -msgstr "设置 TCP/UDP 发送缓冲区大小" - -msgid "Set tun/tap TX queue length" -msgstr "设置 tun/tap 发送队列长度" - -msgid "Set tun/tap adapter parameters" -msgstr "设置 tun/tap 适配器参数" - -msgid "Set tun/tap device MTU" -msgstr "设置 tun/tap 设备的 MTU 值" - -msgid "Set tun/tap device overhead" -msgstr "设置 tun/tap 设备的开销" - -msgid "Set upper bound on TCP MSS" -msgstr "设置 TCP MSS 上限" - -msgid "Shaping for peer bandwidth" -msgstr "改变结点带宽" - -msgid "Shell cmd to execute after tun device open" -msgstr "tun 设备打开后运行的 shell 命令" - -msgid "Shell cmd to run after tun device close" -msgstr "tun 设备关闭后运行的 shell 命令" - -msgid "Shell command to verify X509 name" -msgstr "运行 shell 命令以验证 X509 名称" - -msgid "Silence the output of replay warnings" -msgstr "以静音的方式发出重播警告" - -msgid "Size of cipher key" -msgstr "密钥大小" - -msgid "Specify a default gateway for routes" -msgstr "指定路由默认网关" - -msgid "Start OpenVPN in a hibernating state" -msgstr "以休眠的状态打开 OpenVPN" - -msgid "Start/Stop" -msgstr "启动/停止" - -msgid "Started" -msgstr "已运行的" - -msgid "Status file format version" -msgstr "显式文件格式版本的状态" - -msgid "Switch to advanced configuration »" -msgstr "高级配置 »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "TCP/UDP 端口 # 同时针对本地和远程" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "TCP/UDP 端口 # 本地(默认 1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "TCP/UDP 端口 # 远程(默认 1194)" - -msgid "TLS cipher" -msgstr "TLS 加密" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "TOS 穿透(仅限 IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "客户端连接返回文件的临时目录" - -msgid "The highest supported TLS version" -msgstr "最高支持的 TLS 版本" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "“tls-auth”和“secret”选项的密钥类型" - -msgid "The lowest supported TLS version" -msgstr "最低支持的 TLS 版本" - -msgid "Timeframe for key exchange" -msgstr "密钥交换时间表" - -msgid "Type of used device" -msgstr "使用设备类型" - -msgid "Use fast LZO compression" -msgstr "使用快速 LZO 压缩" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "使用独立的地址代替 /30 子网" - -msgid "Use protocol" -msgstr "采用协议" - -msgid "Use tun/tap device node" -msgstr "使用 tun/tap 设备节点" - -msgid "Use username as common name" -msgstr "把用户名作为通用名称" - -msgid "Write log to file" -msgstr "保存日志至文件" - -msgid "Write process ID to file" -msgstr "记录进程 ID 至文件" - -msgid "Write status to file every n seconds" -msgstr "每 n 秒后写入状态至文件" - -msgid "no" -msgstr "否" - -msgid "tun/tap device" -msgstr "tun/tap 设备" - -msgid "tun/tap inactivity timeout" -msgstr "tun/tap 休眠超时" - -msgid "yes (%i)" -msgstr "是(%i)" - -msgid "« Switch to basic configuration" -msgstr "« 基本配置" - -#~ msgid "Cryptography" -#~ msgstr "加密" - -#~ msgid "Networking" -#~ msgstr "网络" - -#~ msgid "Service" -#~ msgstr "服务" - -#~ msgid "VPN" -#~ msgstr "VPN" diff --git a/package/luci/applications/luci-app-openvpn/po/zh-tw/openvpn.po b/package/luci/applications/luci-app-openvpn/po/zh-tw/openvpn.po deleted file mode 100644 index 38bb6fcd0e..0000000000 --- a/package/luci/applications/luci-app-openvpn/po/zh-tw/openvpn.po +++ /dev/null @@ -1,570 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: 2017-10-29 14:37+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" - -msgid "%s" -msgstr "%s" - -msgid "'net30', 'p2p', or 'subnet'" -msgstr "“net30”,“p2p”,或“subnet”" - -msgid "Accept options pushed from server" -msgstr "接受從伺服器傳送過來的選項" - -msgid "Add" -msgstr "新增" - -msgid "Add route after establishing connection" -msgstr "建立連線後新增路由" - -msgid "Additional authentication over TLS" -msgstr "TLS 以外的驗證" - -msgid "Allow client-to-client traffic" -msgstr "允許客戶端到客戶端的通訊" - -msgid "Allow multiple clients with same certificate" -msgstr "允許多使用者共用同一證書" - -msgid "Allow only one session" -msgstr "只允許一個會話" - -msgid "Allow remote to change its IP or port" -msgstr "允許遠端改變 IP 或埠" - -msgid "Allowed maximum of connected clients" -msgstr "允許最大已連線客戶端數" - -msgid "Allowed maximum of internal" -msgstr "允許最大內部連線" - -msgid "Allowed maximum of new connections" -msgstr "允許最大新建連線數" - -msgid "Append log to file" -msgstr "新增日誌至檔案" - -msgid "Authenticate using username/password" -msgstr "以使用者名稱/密碼的方式進行驗證" - -msgid "Automatically redirect default route" -msgstr "自動重定向至預設路由" - -msgid "Below is a list of configured OpenVPN instances and their current state" -msgstr "以下是 OpenVPN 已配置例項及其當前狀態的列表" - -msgid "Call down cmd/script before TUN/TAP close" -msgstr "TUN/TAP 關閉前的命令列及指令碼" - -msgid "Certificate authority" -msgstr "認證授權" - -msgid "Change process priority" -msgstr "改變程序優先順序" - -msgid "Change to directory before initialization" -msgstr "初始化前改變根目錄" - -msgid "Check peer certificate against a CRL" -msgstr "驗證客戶端證書以確保其是否過期" - -msgid "Chroot to directory after initialization" -msgstr "初始化後改變根目錄" - -msgid "Client is disabled" -msgstr "客戶端已被禁止" - -msgid "Configuration category" -msgstr "配置分類" - -msgid "Configure client mode" -msgstr "配置客戶端模式" - -msgid "Configure server bridge" -msgstr "配置伺服器橋接" - -msgid "Configure server mode" -msgstr "配置伺服器模式" - -msgid "Connect through Socks5 proxy" -msgstr "通過 Sock5 代理連線" - -msgid "Connect to remote host through an HTTP proxy" -msgstr "通過 HTTP 代理連線到遠端主機" - -msgid "Connection retry interval" -msgstr "連線重試時間間隔" - -msgid "Daemonize after initialization" -msgstr "初始化後進入後臺執行" - -msgid "Delay n seconds after connection" -msgstr "連線後延遲時間(秒)" - -msgid "Delay tun/tap open and up script execution" -msgstr "延遲 tun/tap 的開啟及 up 指令碼的執行" - -msgid "Diffie Hellman parameters" -msgstr "Diffie–Hellman/DH 金鑰交換引數" - -msgid "Directory for custom client config files" -msgstr "自定義客戶端配置檔案的目錄" - -msgid "Disable Paging" -msgstr "禁止分頁" - -msgid "Disable cipher initialisation vector" -msgstr "關閉加密的初始化向量" - -msgid "Disable options consistency check" -msgstr "禁止選項一致性檢查" - -msgid "Disable replay protection" -msgstr "關閉重播保護" - -msgid "Do not bind to local address and port" -msgstr "不繫結本地位址和埠" - -msgid "Don't actually execute ifconfig" -msgstr "不實際執行 ifconfig 命令" - -msgid "Don't add routes automatically" -msgstr "不自動新增路由" - -msgid "Don't cache --askpass or --auth-user-pass passwords" -msgstr "不快取 --askpass 或 --auth-user-pass passwords" - -msgid "Don't inherit global push options" -msgstr "不繼承全域性主動傳送選項" - -msgid "Don't log timestamps" -msgstr "不記錄時間戳" - -msgid "Don't pull routes automatically" -msgstr "不自動拉取路由" - -msgid "Don't re-read key on restart" -msgstr "服務重啟時不重讀金鑰值" - -msgid "Don't require client certificate" -msgstr "不需要客戶的證書" - -msgid "Don't use adaptive lzo compression" -msgstr "不用自適應 lzo 壓縮" - -msgid "Don't warn on ifconfig inconsistencies" -msgstr "ifconfig 不一致時不警告" - -msgid "Echo parameters to log" -msgstr "把引數寫入日誌" - -msgid "Empirically measure MTU" -msgstr "以歷史值估算 MTU 值" - -msgid "Enable OpenSSL hardware crypto engines" -msgstr "開啟 OpenSSL 硬體加密引擎" - -msgid "Enable Path MTU discovery" -msgstr "啟用路徑 MTU 發現" - -msgid "Enable Static Key encryption mode (non-TLS)" -msgstr "允許靜態金鑰加密模式" - -msgid "Enable TLS and assume client role" -msgstr "允許 TLS 並偽裝為客戶端" - -msgid "Enable TLS and assume server role" -msgstr "允許 TLS 並偽裝為伺服器" - -msgid "Enable internal datagram fragmentation" -msgstr "允許內部資料報分片" - -msgid "Enable management interface on IP port" -msgstr "在 IP port 上啟用可管理介面" - -msgid "Enabled" -msgstr "啟用" - -msgid "Encrypt and authenticate all control channel packets with the key" -msgstr "使用金鑰加密及認證所有的控制通道資料包" - -msgid "Encryption cipher for packets" -msgstr "加密資料包" - -msgid "Execute shell cmd after routes are added" -msgstr "新增路由後執行 shell 命令" - -msgid "Execute shell command on remote ip change" -msgstr "當遠端 ip 改變時執行 shell 命令" - -msgid "" -"Executed in server mode on new client connections, when the client is still " -"untrusted" -msgstr "在伺服器模式下執行新的客戶端連線,當客戶端仍然是不可信" - -msgid "" -"Executed in server mode whenever an IPv4 address/route or MAC address is " -"added to OpenVPN's internal routing table" -msgstr "" -"伺服器模式下,將每個 IPv4 位址/路由或 MAC 位址新增到 OpenVPN 的內部路由表中。" - -msgid "Exit on TLS negotiation failure" -msgstr "TLS 驗證失敗後退出" - -msgid "Get PEM password from controlling tty before we daemonize" -msgstr "後臺執行前從控制的 tty 中獲取 PEM 密碼" - -msgid "HMAC authentication for packets" -msgstr "利用 HMAC 演算法校驗資料包" - -msgid "Handling of authentication failures" -msgstr "處理驗證失敗" - -msgid "" -"Helper directive to simplify the expression of --ping and --ping-restart in " -"server mode configurations" -msgstr "在服務配置模式下簡化 Helper 指令 --ping 和 --ping-restart 的表示式" - -msgid "If hostname resolve fails, retry" -msgstr "如果主機名解析錯誤,重試" - -msgid "Instance \"%s\"" -msgstr "例項 \"%s\"" - -msgid "Invalid" -msgstr "無效" - -msgid "Keep local IP address on restart" -msgstr "服務重啟時保持本地 IP 位址" - -msgid "Keep remote IP address on restart" -msgstr "服務重啟時保持遠端 IP 位址" - -msgid "Keep tun/tap device open on restart" -msgstr "服務重啟時自動開啟 tun/tap 裝置" - -msgid "Key transition window" -msgstr "金鑰傳輸滑動視窗" - -msgid "Limit repeated log messages" -msgstr "限制重複的日誌訊息" - -msgid "Local certificate" -msgstr "本地證書" - -msgid "Local host name or ip address" -msgstr "本地主機名或 ip 位址" - -msgid "Local private key" -msgstr "本地私鑰" - -msgid "Major mode" -msgstr "主要模式" - -msgid "Make tun device IPv6 capable" -msgstr "使 tun 裝置相容 IPv6" - -msgid "Maximum number of queued TCP output packets" -msgstr "TCP佇列中輸出包的最大數量" - -msgid "Number of allocated broadcast buffers" -msgstr "已分配的廣播緩衝區數量" - -msgid "Number of lines for log file history" -msgstr "歷史日誌檔案的行數" - -msgid "Only accept connections from given X509 name" -msgstr "只接收已給定的 X509 名稱的連線" - -msgid "Only process ping timeouts if routes exist" -msgstr "僅當路由存在時處理 ping 超時" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN instances" -msgstr "OpenVPN 例項" - -msgid "Optimize TUN/TAP/UDP writes" -msgstr "優化 TUN/TAP/UDP 寫入" - -msgid "Output to syslog and do not daemonize" -msgstr "輸出到 syslog,不執行守護程序" - -msgid "Overview" -msgstr "概覽" - -msgid "PKCS#12 file containing keys" -msgstr "PKCS#12 檔案包含的金鑰" - -msgid "Pass environment variables to script" -msgstr "傳遞環境變數至指令碼" - -msgid "Persist replay-protection state" -msgstr "儲存重播保護的狀態" - -msgid "Persist/unpersist ifconfig-pool" -msgstr "持久/非持久 ifconfig 池" - -msgid "Ping remote every n seconds over TCP/UDP port" -msgstr "每 n 秒 ping 一次遠端 TCP/UDP 埠" - -msgid "Policy level over usage of external programs and scripts" -msgstr "外部程式和指令碼超出了策略允許的使用範圍" - -msgid "Port" -msgstr "埠" - -msgid "Protocol" -msgstr "協議" - -msgid "Proxy timeout in seconds" -msgstr "代理超時,單位秒" - -msgid "Push an ifconfig option to remote" -msgstr "主動向遠端傳送 ifconfig 選項" - -msgid "Push options to peer" -msgstr "主動向端點發送選項" - -msgid "Query management channel for private key" -msgstr "為私鑰查詢管理通道" - -msgid "Randomly choose remote server" -msgstr "隨機選擇遠端伺服器" - -msgid "Refuse connection if no custom client config" -msgstr "拒接沒有自定義客戶端配置的連線" - -msgid "Remap SIGUSR1 signals" -msgstr "重對映 SIGUSR1 訊號" - -msgid "Remote host name or ip address" -msgstr "遠端主機名或 ip 位址" - -msgid "Remote ping timeout" -msgstr "遠端 ping 超時" - -msgid "Renegotiate data chan. key after bytes" -msgstr "傳輸若干位元組後重新驗證資料通道金鑰" - -msgid "Renegotiate data chan. key after packets" -msgstr "傳輸若干資料包後重新驗證資料通道金鑰" - -msgid "Renegotiate data chan. key after seconds" -msgstr "傳輸若干秒後重新驗證資料通道金鑰" - -msgid "Replay protection sliding window size" -msgstr "重播保護的滑動視窗大小" - -msgid "Require explicit designation on certificate" -msgstr "證書需要顯式指定" - -msgid "Require explicit key usage on certificate" -msgstr "證書需要明確的金鑰" - -msgid "Restart after remote ping timeout" -msgstr "遠端 ping 超時後重啟" - -msgid "Retransmit timeout on TLS control channel" -msgstr "TLS 控制通道超時後重新發送" - -msgid "Retry indefinitely on HTTP proxy errors" -msgstr "無限重試直至代理正確" - -msgid "Retry indefinitely on Socks proxy errors" -msgstr "無限重試直至 Socks 代理正確" - -msgid "Route subnet to client" -msgstr "路由子網至客戶端" - -msgid "Run as an inetd or xinetd server" -msgstr "以 inetd 或 xinetd 伺服器的方式執行" - -msgid "Run script cmd on client connection" -msgstr "當客戶端連線時在命令列下允許指令碼" - -msgid "Run script cmd on client disconnection" -msgstr "當客戶端斷開時在命令列下允許指令碼" - -msgid "Run up/down scripts for all restarts" -msgstr "每次重啟都執行啟動/關閉指令碼" - -msgid "Send notification to peer on disconnect" -msgstr "斷開連線時向客戶端傳送通知" - -msgid "Set GID to group" -msgstr "為群組設定 GID 值" - -msgid "Set TCP/UDP MTU" -msgstr "設定 TCP/UDP 的 MTU 值" - -msgid "Set UID to user" -msgstr "為使用者設定 UID 值" - -msgid "Set aside a pool of subnets" -msgstr "設定子網池" - -msgid "Set extended HTTP proxy options" -msgstr "設定 HTTP 擴充套件代理選項" - -msgid "Set output verbosity" -msgstr "設定輸出冗餘級別" - -msgid "Set size of real and virtual address hash tables" -msgstr "設定實際和虛擬位址的雜湊表大小" - -msgid "Set the TCP/UDP receive buffer size" -msgstr "設定 TCP/UDP 接收緩衝區大小" - -msgid "Set the TCP/UDP send buffer size" -msgstr "設定 TCP/UDP 傳送緩衝區大小" - -msgid "Set tun/tap TX queue length" -msgstr "設定 tun/tap 傳送佇列長度" - -msgid "Set tun/tap adapter parameters" -msgstr "設定 tun/tap 介面卡引數" - -msgid "Set tun/tap device MTU" -msgstr "設定 tun/tap 裝置的 MTU 值" - -msgid "Set tun/tap device overhead" -msgstr "設定 tun/tap 裝置的開銷" - -msgid "Set upper bound on TCP MSS" -msgstr "設定 TCP MSS 上限" - -msgid "Shaping for peer bandwidth" -msgstr "改變結點頻寬" - -msgid "Shell cmd to execute after tun device open" -msgstr "tun 裝置開啟後執行的 shell 命令" - -msgid "Shell cmd to run after tun device close" -msgstr "tun 裝置關閉後執行的 shell 命令" - -msgid "Shell command to verify X509 name" -msgstr "執行 shell 命令以驗證 X509 名稱" - -msgid "Silence the output of replay warnings" -msgstr "以靜音的方式發出重播警告" - -msgid "Size of cipher key" -msgstr "金鑰大小" - -msgid "Specify a default gateway for routes" -msgstr "指定路由預設閘道器" - -msgid "Start OpenVPN in a hibernating state" -msgstr "以休眠的狀態開啟 OpenVPN" - -msgid "Start/Stop" -msgstr "啟動/停止" - -msgid "Started" -msgstr "已執行的" - -msgid "Status file format version" -msgstr "顯式檔案格式版本的狀態" - -msgid "Switch to advanced configuration »" -msgstr "高階配置 »" - -msgid "TCP/UDP port # for both local and remote" -msgstr "TCP/UDP 埠 # 同時針對本地和遠端" - -msgid "TCP/UDP port # for local (default=1194)" -msgstr "TCP/UDP 埠 # 本地(預設 1194)" - -msgid "TCP/UDP port # for remote (default=1194)" -msgstr "TCP/UDP 埠 # 遠端(預設 1194)" - -msgid "TLS cipher" -msgstr "TLS 加密" - -msgid "TOS passthrough (applies to IPv4 only)" -msgstr "TOS 穿透(僅限 IPv4)" - -msgid "Temporary directory for client-connect return file" -msgstr "客戶端連線返回檔案的臨時目錄" - -msgid "The highest supported TLS version" -msgstr "最高支援的 TLS 版本" - -msgid "The key direction for 'tls-auth' and 'secret' options" -msgstr "“tls-auth”和“secret”選項的金鑰型別" - -msgid "The lowest supported TLS version" -msgstr "最低支援的 TLS 版本" - -msgid "Timeframe for key exchange" -msgstr "金鑰交換時間表" - -msgid "Type of used device" -msgstr "使用裝置型別" - -msgid "Use fast LZO compression" -msgstr "使用快速 LZO 壓縮" - -msgid "Use individual addresses rather than /30 subnets" -msgstr "使用獨立的位址代替 /30 子網" - -msgid "Use protocol" -msgstr "採用協議" - -msgid "Use tun/tap device node" -msgstr "使用 tun/tap 裝置節點" - -msgid "Use username as common name" -msgstr "把使用者名稱作為通用名稱" - -msgid "Write log to file" -msgstr "儲存日誌至檔案" - -msgid "Write process ID to file" -msgstr "記錄程序 ID 至檔案" - -msgid "Write status to file every n seconds" -msgstr "每 n 秒後寫入狀態至檔案" - -msgid "no" -msgstr "否" - -msgid "tun/tap device" -msgstr "tun/tap 裝置" - -msgid "tun/tap inactivity timeout" -msgstr "tun/tap 休眠超時" - -msgid "yes (%i)" -msgstr "是(%i)" - -msgid "« Switch to basic configuration" -msgstr "« 基本配置" - -#~ msgid "Cryptography" -#~ msgstr "加密" - -#~ msgid "Networking" -#~ msgstr "網路" - -#~ msgid "Service" -#~ msgstr "服務" - -#~ msgid "VPN" -#~ msgstr "VPN" diff --git a/package/luci/applications/luci-app-openvpn/root/etc/config/openvpn_recipes b/package/luci/applications/luci-app-openvpn/root/etc/config/openvpn_recipes deleted file mode 100644 index 1b394dffbc..0000000000 --- a/package/luci/applications/luci-app-openvpn/root/etc/config/openvpn_recipes +++ /dev/null @@ -1,102 +0,0 @@ -# -# Routed point-to-point server -# -config openvpn_recipe server_tun_ptp - option _description "Simple server configuration for a routed point-to-point VPN" - option _role "server" - option dev "tun" - option ifconfig "10.0.0.1 10.0.0.2" - option secret "shared-secret.key" - option keepalive "10 60" - option comp_lzo "yes" - option verb "3" - option mssfix "1420" - -# -# Routed point-to-point client -# -config openvpn_recipe client_tun_ptp - option _description "Simple client configuration for a routed point-to-point VPN" - option _role "client" - option dev "tun" - list remote "vpnserver.example.org" - option ifconfig "10.0.0.2 10.0.0.1" - option secret "shared-secret.key" - option nobind "1" - option comp_lzo "yes" - option verb "3" - -# -# Routed multi-client server -# -config openvpn_recipe server_tun - option _description "Server configuration for a routed multi-client VPN" - option _role "server" - option dev "tun" - option server "10.0.100.0 255.255.255.0" - option ca "ca.crt" - option cert "server.crt" - option key "server.key" - option dh "dh1024.pem" - option keepalive "10 60" - option comp_lzo "yes" - option verb "3" - option mssfix "1420" - -# -# Routed client -# -config openvpn_recipe client_tun - option _description "Client configuration for a routed multi-client VPN" - option _role "client" - option client "1" - option dev "tun" - list remote "vpnserver.example.org" - option pkcs12 "my_client.p12" - option remote_cert_tls "server" - option comp_lzo "yes" - option nobind "1" - option persist_key "1" - option persist_tun "1" - option verb "3" - option reneg_sec "0" - option float "1" - -# -# Multi-client ethernet bridge server -# -config openvpn_recipe server_tap_bridge - option _description "Server configuration for an ethernet bridge VPN" - option _role "server" - option dev "tap" - option server_bridge "192.168.1.1 255.255.255.0 192.168.1.128 192.168.1.254" - option ca "ca.crt" - option cert "server.crt" - option key "server.key" - option dh "dh1024.pem" - option keepalive "10 60" - option comp_lzo "yes" - option verb "3" - option mssfix "1420" - -# -# Ethernet bridge client -# -config openvpn_recipe client_tap_bridge - option _description "Client configuration for an ethernet bridge VPN" - option _role "client" - option client "1" - option dev "tap" - list remote "vpnserver.example.org" - option ca "ca.crt" - option cert "my_client.crt" - option key "my_client.key" - option dh "dh1024.pem" - option remote_cert_tls "server" - option comp_lzo "yes" - option nobind "1" - option persist_key "1" - option verb "3" - option reneg_sec "0" - option float "1" - diff --git a/package/luci/applications/luci-app-p2pblock/Makefile b/package/luci/applications/luci-app-p2pblock/Makefile deleted file mode 100644 index 137849cd25..0000000000 --- a/package/luci/applications/luci-app-p2pblock/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for the Freifunk P2P-Block addon -LUCI_DEPENDS:=+luci-app-firewall +freifunk-p2pblock @BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-p2pblock/luasrc/controller/ff_p2pblock.lua b/package/luci/applications/luci-app-p2pblock/luasrc/controller/ff_p2pblock.lua deleted file mode 100644 index eaedda282a..0000000000 --- a/package/luci/applications/luci-app-p2pblock/luasrc/controller/ff_p2pblock.lua +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.ff_p2pblock", package.seeall) - -function index() - entry({"admin", "network", "firewall", "p2pblock"}, cbi("luci_fw/p2pblock"), - _("P2P-Block"), 40) -end diff --git a/package/luci/applications/luci-app-p2pblock/luasrc/model/cbi/luci_fw/p2pblock.lua b/package/luci/applications/luci-app-p2pblock/luasrc/model/cbi/luci_fw/p2pblock.lua deleted file mode 100644 index 1f21429c0d..0000000000 --- a/package/luci/applications/luci-app-p2pblock/luasrc/model/cbi/luci_fw/p2pblock.lua +++ /dev/null @@ -1,66 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sys = require "luci.sys" - -m = Map("freifunk_p2pblock", translate("P2P-Block"), - translate("P2P-Block is a greylisting mechanism to block various peer-to-peer protocols for non-whitelisted clients.")) - -s = m:section(NamedSection, "p2pblock", "settings", "Settings") -s.anonymous = true -s.addremove = false - -en = s:option(Flag, "_enabled", translate("Enable P2P-Block")) -en.rmempty = false - -function en.cfgvalue() - return ( sys.init.enabled("freifunk-p2pblock") and "1" or "0" ) -end - -function en.write(self, section, val) - if val == "1" then - sys.init.enable("freifunk-p2pblock") - else - sys.init.disable("freifunk-p2pblock") - end -end - -s:option(Value, "portrange", translate("Portrange")) - -s:option(Value, "blocktime", translate("Block Time"), - translate("seconds")) - -s:option(DynamicList, "whitelist", translate("Whitelisted IPs")) - -l7 = s:option(MultiValue, "layer7", translate("Layer7-Protocols")) -l7.widget = "checkbox" -l7:value("aim", "AIM Chat") -l7:value("bittorrent", "Bittorrent") -l7:value("edonkey", "eDonkey, eMule, Kademlia") -l7:value("fasttrack", "Fasttrack Protocol") -l7:value("ftp", "File Transfer Protocol") -l7:value("gnutella", "Gnutella") -l7:value("http", "Hypertext Transfer Protocol") -l7:value("ident", "Ident Protocol") -l7:value("irc", "Internet Relay Chat") -l7:value("jabber", "Jabber/XMPP") -l7:value("msnmessenger", "MSN Messenger") -l7:value("ntp", "Network Time Protocol") -l7:value("pop3", "POP3 Protocol") -l7:value("smtp", "SMTP Protocol") -l7:value("ssl", "SSL Protocol") -l7:value("vnc", "VNC Protocol") - -ipp2p = s:option(MultiValue, "ipp2p", translate("IP-P2P")) -ipp2p.widget = "checkbox" -ipp2p:value("edk", "eDonkey, eMule, Kademlia") -ipp2p:value("kazaa", "KaZaA, FastTrack") -ipp2p:value("gnu", "Gnutella") -ipp2p:value("dc", "Direct Connect") -ipp2p:value("bit", "BitTorrent, extended BT") -ipp2p:value("apple", "AppleJuice") -ipp2p:value("winmx", "WinMX") -ipp2p:value("soul", "SoulSeek") -ipp2p:value("ares", "AresLite") - -return m diff --git a/package/luci/applications/luci-app-p2pblock/po/ca/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/ca/p2pblock.po deleted file mode 100644 index fe99a772ef..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/ca/p2pblock.po +++ /dev/null @@ -1,46 +0,0 @@ -# default.pot -# generated from ./i18n/english/luasrc/i18n/default.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2011-02-14 17:43+0100\n" -"Last-Translator: Manuel Munz \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "Block Time" -msgstr "Temps de bloqueig" - -msgid "Enable P2P-Block" -msgstr "Habilita el Blocat P2P" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Protocols de capa 7" - -msgid "P2P-Block" -msgstr "Blocat P2P" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"El Blocat P2P és un mecanisme de llista grisa per blocar diversos protocols " -"peer-tp-peer per clients que no estiguin a la llista blanca." - -msgid "Portrange" -msgstr "Rang de ports" - -msgid "Whitelisted IPs" -msgstr "IPs a la llista blanca" - -msgid "seconds" -msgstr "segons" diff --git a/package/luci/applications/luci-app-p2pblock/po/cs/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/cs/p2pblock.po deleted file mode 100644 index 02eafef459..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/cs/p2pblock.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-08-04 22:44+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Block Time" -msgstr "Doba blokování" - -msgid "Enable P2P-Block" -msgstr "Povolit P2P-Block" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Layer7-Protokoly" - -msgid "P2P-Block" -msgstr "P2P-Block" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" - -msgid "Portrange" -msgstr "Rozsah portů" - -msgid "Whitelisted IPs" -msgstr "Povolené IP adresy" - -msgid "seconds" -msgstr "sekundy" diff --git a/package/luci/applications/luci-app-p2pblock/po/de/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/de/p2pblock.po deleted file mode 100644 index e3613d650a..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/de/p2pblock.po +++ /dev/null @@ -1,44 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2011-02-14 17:44+0100\n" -"Last-Translator: Manuel Munz \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "Block Time" -msgstr "Sperr-Zeitraum" - -msgid "Enable P2P-Block" -msgstr "P2P-Sperr-Mechanismus aktivieren" - -msgid "IP-P2P" -msgstr "IPP2P" - -msgid "Layer7-Protocols" -msgstr "Layer7-Protokolle" - -msgid "P2P-Block" -msgstr "P2P-Sperre" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"P2P-Block ist ein Mechanismus zum vorrübergehendem Sperren von Peer-to-Peer " -"Protokollen für nicht auf der Whitelist stehende Clients. " - -msgid "Portrange" -msgstr "Überwachter Port-Bereich" - -msgid "Whitelisted IPs" -msgstr "Freigeschaltete IP-Adressen" - -msgid "seconds" -msgstr "Angabe in Sekunden" diff --git a/package/luci/applications/luci-app-p2pblock/po/el/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/el/p2pblock.po deleted file mode 100644 index 9db357ac5d..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/el/p2pblock.po +++ /dev/null @@ -1,43 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-18 15:23+0200\n" -"PO-Revision-Date: 2012-03-18 15:23+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Block Time" -msgstr "" - -msgid "Enable P2P-Block" -msgstr "" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "" - -msgid "P2P-Block" -msgstr "" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" - -msgid "Portrange" -msgstr "" - -msgid "Whitelisted IPs" -msgstr "" - -msgid "seconds" -msgstr "δευτερόλεπτα" diff --git a/package/luci/applications/luci-app-p2pblock/po/en/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/en/p2pblock.po deleted file mode 100644 index 00cccc8e62..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/en/p2pblock.po +++ /dev/null @@ -1,28 +0,0 @@ -msgid "Block Time" -msgstr "" - -msgid "Enable P2P-Block" -msgstr "" - -msgid "IP-P2P" -msgstr "" - -msgid "Layer7-Protocols" -msgstr "" - -msgid "P2P-Block" -msgstr "" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" - -msgid "Portrange" -msgstr "" - -msgid "Whitelisted IPs" -msgstr "" - -msgid "seconds" -msgstr "" diff --git a/package/luci/applications/luci-app-p2pblock/po/es/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/es/p2pblock.po deleted file mode 100644 index 1edc53304f..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/es/p2pblock.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-19 16:56+0200\n" -"PO-Revision-Date: 2012-08-19 16:56+0200\n" -"Last-Translator: josevteg \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Block Time" -msgstr "Tiempo de bloqueo" - -msgid "Enable P2P-Block" -msgstr "Activar bloqueo P2P" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Protocolo Layer7" - -msgid "P2P-Block" -msgstr "Bloqueo de P2P" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"El bloqueo de P2P es un mecanismo de lista gris para bloquear varios " -"protocolos punto a punto a clientes que no están en lista blanca." - -msgid "Portrange" -msgstr "Rango de puertos" - -msgid "Whitelisted IPs" -msgstr "IPs en la lista blanca" - -msgid "seconds" -msgstr "segundos" diff --git a/package/luci/applications/luci-app-p2pblock/po/fr/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/fr/p2pblock.po deleted file mode 100644 index 524d3d0850..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/fr/p2pblock.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-13 21:39+0200\n" -"PO-Revision-Date: 2012-01-15 07:06+0200\n" -"Last-Translator: desillu \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Block Time" -msgstr "Temps de blocage" - -msgid "Enable P2P-Block" -msgstr "Activer le blocage P2P" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Protocoles de couche 7" - -msgid "P2P-Block" -msgstr "Blocage P2P" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"Le blocage P2P est un mécanisme de liste grise pour bloquer divers " -"protocoles de pair-à-pair de clients non autorisés." - -msgid "Portrange" -msgstr "Gamme de ports" - -msgid "Whitelisted IPs" -msgstr "Adresses IP autorisées" - -msgid "seconds" -msgstr "secondes" diff --git a/package/luci/applications/luci-app-p2pblock/po/he/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/he/p2pblock.po deleted file mode 100644 index 5b2679b4b9..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/he/p2pblock.po +++ /dev/null @@ -1,43 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-10 03:39+0200\n" -"Last-Translator: Snoof \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Block Time" -msgstr "זמן חסימה" - -msgid "Enable P2P-Block" -msgstr "אפשר חסימת P2P" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "פרוטוקולי Layer7" - -msgid "P2P-Block" -msgstr "חסימת P2P" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"חסימת P2P הינו מנגנון ליצירת 'רשימה אפורה', במטרה לחסום סוגים שונים של " -"פרוטוקולי P2P עבור לקוחות שאינם ב'רשימה הלבנה'." - -msgid "Portrange" -msgstr "טווח פורטים" - -msgid "Whitelisted IPs" -msgstr "כתובות IP ברשימה הלבנה" - -msgid "seconds" -msgstr "שניות" diff --git a/package/luci/applications/luci-app-p2pblock/po/hu/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/hu/p2pblock.po deleted file mode 100644 index 4f1dffa209..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/hu/p2pblock.po +++ /dev/null @@ -1,43 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-01 19:16+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Block Time" -msgstr "Blokkolási idő" - -msgid "Enable P2P-Block" -msgstr "P2P-Block engedélyezése" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Layer7 protokollok" - -msgid "P2P-Block" -msgstr "P2P-Block" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"A P2P-Block különféle peer-to-peer protokollok blokkolására szolgáló " -"mechanizmus, a fehérlistában nem szereplő ügyfelek részére." - -msgid "Portrange" -msgstr "Port tartomány" - -msgid "Whitelisted IPs" -msgstr "Fehérlistás IP címek" - -msgid "seconds" -msgstr "másodperc" diff --git a/package/luci/applications/luci-app-p2pblock/po/it/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/it/p2pblock.po deleted file mode 100644 index 3be501051b..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/it/p2pblock.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-04-20 10:18+0200\n" -"PO-Revision-Date: 2012-04-20 10:21+0200\n" -"Last-Translator: claudyus \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Block Time" -msgstr "Periodo di censura" - -msgid "Enable P2P-Block" -msgstr "Abilita la censura del P2P" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Protocolli di Layer7" - -msgid "P2P-Block" -msgstr "Censura P2P" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"La censura, block, del P2P è un meccanismo per bloccare diversi protocolli " -"peer-to-peer da parte di clienti non apparteneti alla whitelist." - -msgid "Portrange" -msgstr "Range delle porte" - -msgid "Whitelisted IPs" -msgstr "IP in whitelist" - -msgid "seconds" -msgstr "secondi" diff --git a/package/luci/applications/luci-app-p2pblock/po/ja/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/ja/p2pblock.po deleted file mode 100644 index 00cccc8e62..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/ja/p2pblock.po +++ /dev/null @@ -1,28 +0,0 @@ -msgid "Block Time" -msgstr "" - -msgid "Enable P2P-Block" -msgstr "" - -msgid "IP-P2P" -msgstr "" - -msgid "Layer7-Protocols" -msgstr "" - -msgid "P2P-Block" -msgstr "" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" - -msgid "Portrange" -msgstr "" - -msgid "Whitelisted IPs" -msgstr "" - -msgid "seconds" -msgstr "" diff --git a/package/luci/applications/luci-app-p2pblock/po/ms/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/ms/p2pblock.po deleted file mode 100644 index 00cccc8e62..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/ms/p2pblock.po +++ /dev/null @@ -1,28 +0,0 @@ -msgid "Block Time" -msgstr "" - -msgid "Enable P2P-Block" -msgstr "" - -msgid "IP-P2P" -msgstr "" - -msgid "Layer7-Protocols" -msgstr "" - -msgid "P2P-Block" -msgstr "" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" - -msgid "Portrange" -msgstr "" - -msgid "Whitelisted IPs" -msgstr "" - -msgid "seconds" -msgstr "" diff --git a/package/luci/applications/luci-app-p2pblock/po/no/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/no/p2pblock.po deleted file mode 100644 index af9c25ea34..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/no/p2pblock.po +++ /dev/null @@ -1,36 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Block Time" -msgstr "Blokkerings tid" - -msgid "Enable P2P-Block" -msgstr "Aktiver P2P-Blokkering" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Lag7-Protokoller" - -msgid "P2P-Block" -msgstr "P2P-Blokkering" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"P2P-blokkering er en mekanisme for å blokkere ulike peer-to-peer protokoller " -"for klienter som ikke er hvitelistede." - -msgid "Portrange" -msgstr "Portområde" - -msgid "Whitelisted IPs" -msgstr "Hvitelistede IP'er" - -msgid "seconds" -msgstr "sekunder" diff --git a/package/luci/applications/luci-app-p2pblock/po/pl/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/pl/p2pblock.po deleted file mode 100644 index 9222a0863f..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/pl/p2pblock.po +++ /dev/null @@ -1,46 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-29 10:53+0200\n" -"PO-Revision-Date: 2012-03-29 10:55+0200\n" -"Last-Translator: Anonymous Pootle User\n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Block Time" -msgstr "Czas blokowania" - -msgid "Enable P2P-Block" -msgstr "Włącz P2P-Block" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Protokoły Layer7" - -msgid "P2P-Block" -msgstr "P2P-Block" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"P2P-Block jest mechanizmem który blokuje rozmaite protokoły peer-to-peer dla " -"klientów spoza dozwolonej listy." - -msgid "Portrange" -msgstr "Zakres portów" - -msgid "Whitelisted IPs" -msgstr "Dozwolone adresy IP" - -msgid "seconds" -msgstr "sekund" diff --git a/package/luci/applications/luci-app-p2pblock/po/pt-br/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/pt-br/p2pblock.po deleted file mode 100644 index 8ebac375f2..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/pt-br/p2pblock.po +++ /dev/null @@ -1,34 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" - -msgid "Block Time" -msgstr "Tempo de bloqueio" - -msgid "Enable P2P-Block" -msgstr "Habilite o bloqueio P2P" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Protocolos da camada de aplicação" - -msgid "P2P-Block" -msgstr "P2P-Block" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"P2P-Block é um mecanismo de lista cinza para bloquear vários protocolos " -"peer-to-peer para clientes fora da lista branca." - -msgid "Portrange" -msgstr "Faixa de porta" - -msgid "Whitelisted IPs" -msgstr "IPs na lista branca" - -msgid "seconds" -msgstr "segundos" diff --git a/package/luci/applications/luci-app-p2pblock/po/pt/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/pt/p2pblock.po deleted file mode 100644 index 365f9f277e..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/pt/p2pblock.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-05-01 01:17+0200\n" -"PO-Revision-Date: 2013-05-01 01:30+0200\n" -"Last-Translator: pedromrgoncalves \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Block Time" -msgstr "Tempo a bloquear" - -msgid "Enable P2P-Block" -msgstr "Activar Bloqueio P2P" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Portocolos Layer7" - -msgid "P2P-Block" -msgstr "Bloqueio P2P" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"Bloqueio P2P é um mecanismo lista verde para bloquear vários protocolos " -"peer-to-peer para clientes que não se encontram na lista branca" - -msgid "Portrange" -msgstr "Intervalo de Portas" - -msgid "Whitelisted IPs" -msgstr "IPs na lista branca" - -msgid "seconds" -msgstr "segundos" diff --git a/package/luci/applications/luci-app-p2pblock/po/ro/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/ro/p2pblock.po deleted file mode 100644 index 2f7d74e7fd..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/ro/p2pblock.po +++ /dev/null @@ -1,44 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-07 17:09+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Block Time" -msgstr "Durata de blocare" - -msgid "Enable P2P-Block" -msgstr "Activeaza blocarea P2P" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Protocoale Layer7" - -msgid "P2P-Block" -msgstr "Blocare P2P" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"Blocarea P2P este un mecanism de blocare a diferitelor protocoale pentru " -"clienti necunoscuti." - -msgid "Portrange" -msgstr "Gama de porturi" - -msgid "Whitelisted IPs" -msgstr "Adrese IP de incredere" - -msgid "seconds" -msgstr "secunde" diff --git a/package/luci/applications/luci-app-p2pblock/po/ru/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/ru/p2pblock.po deleted file mode 100644 index f6a27401b0..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/ru/p2pblock.po +++ /dev/null @@ -1,48 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: p2pblock\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-01 12:02+0200\n" -"PO-Revision-Date: 2013-11-13 18:46+0200\n" -"Last-Translator: Роман \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Block Time" -msgstr "Время блокировки" - -msgid "Enable P2P-Block" -msgstr "Включить блокировку P2P" - -#, fuzzy -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Протоколы 7-го уровня" - -msgid "P2P-Block" -msgstr "Блокировка P2P" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"Блокировка P2P позволяет запретить P2P-протоколы для клиентов вне белого " -"списка." - -msgid "Portrange" -msgstr "Диапазон портов" - -msgid "Whitelisted IPs" -msgstr "Белый список IP" - -msgid "seconds" -msgstr "секунды" diff --git a/package/luci/applications/luci-app-p2pblock/po/sk/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/sk/p2pblock.po deleted file mode 100644 index 1881b3cebd..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/sk/p2pblock.po +++ /dev/null @@ -1,38 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Block Time" -msgstr "" - -msgid "Enable P2P-Block" -msgstr "" - -msgid "IP-P2P" -msgstr "" - -msgid "Layer7-Protocols" -msgstr "" - -msgid "P2P-Block" -msgstr "" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" - -msgid "Portrange" -msgstr "" - -msgid "Whitelisted IPs" -msgstr "" - -msgid "seconds" -msgstr "" diff --git a/package/luci/applications/luci-app-p2pblock/po/sv/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/sv/p2pblock.po deleted file mode 100644 index f98c6cc129..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/sv/p2pblock.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Block Time" -msgstr "Tid för blockering" - -msgid "Enable P2P-Block" -msgstr "Aktivera P2P-blockering" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Layer7-protokollen" - -msgid "P2P-Block" -msgstr "P2P-blockering" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"P2P-Block är en grålistande mekanism för att blockera vissa peer-to-peer-" -"protokoll för icke-vitlistade klienter." - -msgid "Portrange" -msgstr "Porträckvidd" - -msgid "Whitelisted IPs" -msgstr "Vitlistade IP-adresser" - -msgid "seconds" -msgstr "sekunder" diff --git a/package/luci/applications/luci-app-p2pblock/po/templates/p2pblock.pot b/package/luci/applications/luci-app-p2pblock/po/templates/p2pblock.pot deleted file mode 100644 index 6fa5da1100..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/templates/p2pblock.pot +++ /dev/null @@ -1,31 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Block Time" -msgstr "" - -msgid "Enable P2P-Block" -msgstr "" - -msgid "IP-P2P" -msgstr "" - -msgid "Layer7-Protocols" -msgstr "" - -msgid "P2P-Block" -msgstr "" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" - -msgid "Portrange" -msgstr "" - -msgid "Whitelisted IPs" -msgstr "" - -msgid "seconds" -msgstr "" diff --git a/package/luci/applications/luci-app-p2pblock/po/tr/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/tr/p2pblock.po deleted file mode 100644 index 7c670d8ecc..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/tr/p2pblock.po +++ /dev/null @@ -1,43 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-10-11 22:45+0200\n" -"Last-Translator: vincenzo \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Block Time" -msgstr "Engel Zamanı" - -msgid "Enable P2P-Block" -msgstr "P2P-Bloğu'nu Aç" - -msgid "IP-P2P" -msgstr "iP-P2P" - -msgid "Layer7-Protocols" -msgstr "Layer7 - Protokolleri" - -msgid "P2P-Block" -msgstr "P2P-Bloğu" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"P2P-Bloğu bir engel (greylist) mekanizmasıdır. izin verilenler listesinde " -"(Beyaz Liste) olmayan istemciler için p2p protokolünü engeller." - -msgid "Portrange" -msgstr "Portrange" - -msgid "Whitelisted IPs" -msgstr "Beyaz Liste iPleri" - -msgid "seconds" -msgstr "saniye" diff --git a/package/luci/applications/luci-app-p2pblock/po/uk/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/uk/p2pblock.po deleted file mode 100644 index 3e7dff9fa2..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/uk/p2pblock.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-13 16:04+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Block Time" -msgstr "Загальний час" - -msgid "Enable P2P-Block" -msgstr "Активувати блокування P2P" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Протокол Layer7" - -msgid "P2P-Block" -msgstr "P2P блоковано" - -#, fuzzy -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"P2P-блокування являє собою механізм сірих списків для блокування різних " -"рівний-однотипних протоколів для НЕ-білого списку клієнтів." - -msgid "Portrange" -msgstr "Діапазон портів" - -msgid "Whitelisted IPs" -msgstr "Білий список IP-адрес" - -msgid "seconds" -msgstr "секунд" diff --git a/package/luci/applications/luci-app-p2pblock/po/vi/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/vi/p2pblock.po deleted file mode 100644 index 4bad090461..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/vi/p2pblock.po +++ /dev/null @@ -1,42 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Manuel Munz \n" -"Language-Team: \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Block Time" -msgstr "Thời gian Block" - -msgid "Enable P2P-Block" -msgstr "Kích hoạt P2P-Block" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "Layer7-protocols" - -msgid "P2P-Block" -msgstr "P2P-Block" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "" -"P2P-Block là một cÆ¡ chế greylisting để chặn các peer-to-peer " -"protocols cho khách hàng không nằm trên whitelisted." - -msgid "Portrange" -msgstr "Portrange" - -msgid "Whitelisted IPs" -msgstr "Whitelisted IPs" - -msgid "seconds" -msgstr "giây" diff --git a/package/luci/applications/luci-app-p2pblock/po/zh-cn/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/zh-cn/p2pblock.po deleted file mode 100644 index 66725be6e1..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/zh-cn/p2pblock.po +++ /dev/null @@ -1,43 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 19:11+0200\n" -"PO-Revision-Date: 2013-10-08 15:22+0200\n" -"Last-Translator: Tanyingyu \n" -"Language-Team: LANGUAGE \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" - -msgid "Block Time" -msgstr "封锁时间" - -msgid "Enable P2P-Block" -msgstr "启动P2P封锁" - -msgid "IP-P2P" -msgstr "IP-P2P" - -msgid "Layer7-Protocols" -msgstr "第7层协议" - -msgid "P2P-Block" -msgstr "P2P封锁" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "P2P封锁使用灰名单机制,以阻止非白名单客户的各种P2P协议。" - -msgid "Portrange" -msgstr "端口范围" - -msgid "Whitelisted IPs" -msgstr "白名单IP地址" - -msgid "seconds" -msgstr "秒" diff --git a/package/luci/applications/luci-app-p2pblock/po/zh-tw/p2pblock.po b/package/luci/applications/luci-app-p2pblock/po/zh-tw/p2pblock.po deleted file mode 100644 index f542f7794b..0000000000 --- a/package/luci/applications/luci-app-p2pblock/po/zh-tw/p2pblock.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 11:09+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Block Time" -msgstr "阻斷時間" - -msgid "Enable P2P-Block" -msgstr "啓用P2P禁斷" - -msgid "IP-P2P" -msgstr "IP點對點協定" - -msgid "Layer7-Protocols" -msgstr "第七層協定" - -msgid "P2P-Block" -msgstr "P2P禁斷" - -msgid "" -"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols " -"for non-whitelisted clients." -msgstr "P2P-Block是一個灰名單機制, 針對不在白名單清單裡面的用戶, 阻斷各種類的P2P點對點協定." - -msgid "Portrange" -msgstr "範圍埠" - -msgid "Whitelisted IPs" -msgstr "白名單列表IP" - -msgid "seconds" -msgstr "秒數" diff --git a/package/luci/applications/luci-app-p2pblock/root/etc/uci-defaults/40_luci-p2pblock b/package/luci/applications/luci-app-p2pblock/root/etc/uci-defaults/40_luci-p2pblock deleted file mode 100755 index 030ebbed17..0000000000 --- a/package/luci/applications/luci-app-p2pblock/root/etc/uci-defaults/40_luci-p2pblock +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete citrack.@freifunk_p2pblock[-1] - add ucitrack freifunk_p2pblock - set ucitrack.@freifunk_p2pblock[-1].init=freifunk-p2pblock - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-p910nd/Makefile b/package/luci/applications/luci-app-p910nd/Makefile deleted file mode 100644 index adb35bd47f..0000000000 --- a/package/luci/applications/luci-app-p910nd/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=p910nd - Printer server module -LUCI_DEPENDS:=+p910nd - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-p910nd/luasrc/controller/p910nd.lua b/package/luci/applications/luci-app-p910nd/luasrc/controller/p910nd.lua deleted file mode 100644 index df47e9fd92..0000000000 --- a/package/luci/applications/luci-app-p910nd/luasrc/controller/p910nd.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2008 Yanira --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.p910nd", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/p910nd") then - return - end - - local page - - page = entry({"admin", "services", "p910nd"}, cbi("p910nd"), _("p910nd - Printer server"), 60) - page.dependent = true -end diff --git a/package/luci/applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua b/package/luci/applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua deleted file mode 100644 index 099013806d..0000000000 --- a/package/luci/applications/luci-app-p910nd/luasrc/model/cbi/p910nd.lua +++ /dev/null @@ -1,49 +0,0 @@ --- Copyright 2008 Yanira --- Copyright 2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local uci = luci.model.uci.cursor_state() -local net = require "luci.model.network" -local m, s, p, b - -m = Map("p910nd", translate("p910nd - Printer server"), - translatef("First you have to install the packages to get support for USB (kmod-usb-printer) or parallel port (kmod-lp).")) - -net = net.init(m.uci) - -s = m:section(TypedSection, "p910nd", translate("Settings")) -s.addremove = true -s.anonymous = true - -s:option(Flag, "enabled", translate("enable")) - -s:option(Value, "device", translate("Device")).rmempty = true - -b = s:option(Value, "bind", translate("Interface"), translate("Specifies the interface to listen on.")) -b.template = "cbi/network_netlist" -b.nocreate = true -b.unspecified = true - -function b.cfgvalue(...) - local v = Value.cfgvalue(...) - if v then - return (net:get_status_by_address(v)) - end -end - -function b.write(self, section, value) - local n = net:get_network(value) - if n and n:ipaddr() then - Value.write(self, section, n:ipaddr()) - end -end - -p = s:option(ListValue, "port", translate("Port"), translate("TCP listener port.")) -p.rmempty = true -for i=0,9 do - p:value(i, 9100+i) -end - -s:option(Flag, "bidirectional", translate("Bidirectional mode")) - -return m diff --git a/package/luci/applications/luci-app-p910nd/po/ca/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ca/p910nd.po deleted file mode 100644 index 6862df4692..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/ca/p910nd.po +++ /dev/null @@ -1,55 +0,0 @@ -# p910nd.pot -# generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-07-01 03:56+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Mode bidireccional" - -msgid "Device" -msgstr "Dispositiu" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Primer heu d'instal·lar els paquets de suport USB (kmod-usb-printer) o de " -"port paral·lel (kmod-lp)." - -msgid "Interface" -msgstr "Interfície" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Ajusts" - -msgid "Specifies the interface to listen on." -msgstr "Especifica la interfície en que escoltar." - -msgid "TCP listener port." -msgstr "Port d'escolta TCP." - -msgid "enable" -msgstr "habilita" - -msgid "p910nd - Printer server" -msgstr "p910nd - Servidor d'impressió" - -#~ msgid "port_help" -#~ msgstr "" -#~ "El p910nd escolta al port 910+N. Per exemple, 9100 per la primera " -#~ "impressora (la 0)." diff --git a/package/luci/applications/luci-app-p910nd/po/cs/p910nd.po b/package/luci/applications/luci-app-p910nd/po/cs/p910nd.po deleted file mode 100644 index e4f1c71e5c..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/cs/p910nd.po +++ /dev/null @@ -1,49 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-20 23:28+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Obousměrný režim" - -msgid "Device" -msgstr "Zařízení" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Nejprve je nutno nainstalovat balíčky přinášející podporu USB (kmod-usb-" -"printer) či paralelního portu (kmod-lp)." - -msgid "Interface" -msgstr "Rozhraní" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Nastavení" - -msgid "Specifies the interface to listen on." -msgstr "Specifikuje rozhraní pro naslouchání." - -msgid "TCP listener port." -msgstr "Naslouchající TCP port" - -msgid "enable" -msgstr "Povolit" - -msgid "p910nd - Printer server" -msgstr "p910nd - tiskový server" - -#~ msgid "port_help" -#~ msgstr "Nápověda pro výběr portu" diff --git a/package/luci/applications/luci-app-p910nd/po/de/p910nd.po b/package/luci/applications/luci-app-p910nd/po/de/p910nd.po deleted file mode 100644 index d72e85800d..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/de/p910nd.po +++ /dev/null @@ -1,51 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2012-09-12 14:00+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Bidirektionaler Modus" - -msgid "Device" -msgstr "Gerät" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Bevor p910nd verwendet werden kann muessen Pakete fuer USB (kmod-usb-" -"printer) und Parallelport (kmod-lp) Support installiert werden." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Einstellungen" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "TCP Port" - -msgid "enable" -msgstr "aktivieren" - -msgid "p910nd - Printer server" -msgstr "p910nd - Printserver" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "p910nd hoert auf Port 910+N. Z.B. 9100 fuer ersten Drucker" diff --git a/package/luci/applications/luci-app-p910nd/po/el/p910nd.po b/package/luci/applications/luci-app-p910nd/po/el/p910nd.po deleted file mode 100644 index 13b97c02ea..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/el/p910nd.po +++ /dev/null @@ -1,55 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: 2012-03-18 15:25+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Bidirectional mode" -msgstr "Αμφίδρομη μέθοδος" - -msgid "Device" -msgstr "Συσκευή" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Πρώτα πρέπει να εγκατασταθούν τα πακέτα για να υπάρξει υποστήριξη για USB " -"(kmod-usb-printer) ή παράλληλη θύρα (kmod-lp)." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "Θύρα" - -msgid "Settings" -msgstr "Ρυθμίσεις" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "Θύρα ακρόασης TCP" - -msgid "enable" -msgstr "ενεργοποίηση" - -msgid "p910nd - Printer server" -msgstr "p910nd - Εξυπηρετητής εκτυπώσεων" - -#~ msgid "port_help" -#~ msgstr "port_help" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "" -#~ "p910nd ανταποκρίνεται στην πόρτα 910+N. π.χ. 9100 για τον πρώτο εκτυπωτή" diff --git a/package/luci/applications/luci-app-p910nd/po/en/p910nd.po b/package/luci/applications/luci-app-p910nd/po/en/p910nd.po deleted file mode 100644 index 766673ac73..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/en/p910nd.po +++ /dev/null @@ -1,51 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "Bidirectional mode" -msgstr "Bidirectional mode" - -msgid "Device" -msgstr "" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "" - -msgid "enable" -msgstr "" - -msgid "p910nd - Printer server" -msgstr "p910nd - Printer server" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "p910nd listens on port 910+N. E.g. 9100 for the first printer." diff --git a/package/luci/applications/luci-app-p910nd/po/es/p910nd.po b/package/luci/applications/luci-app-p910nd/po/es/p910nd.po deleted file mode 100644 index f558c99488..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/es/p910nd.po +++ /dev/null @@ -1,51 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2014-06-15 09:10+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Modo bidireccional" - -msgid "Device" -msgstr "Dispositivo" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Debe instalar primero el soporte para puertos USB (kmod-usb-printer) o " -"paralelo (kmod-lp)." - -msgid "Interface" -msgstr "Interfaz" - -msgid "Port" -msgstr "Puerto" - -msgid "Settings" -msgstr "Configuración" - -msgid "Specifies the interface to listen on." -msgstr "Especifica el interfaz en el que se escucha." - -msgid "TCP listener port." -msgstr "Puerto de escucha TCP." - -msgid "enable" -msgstr "activar" - -msgid "p910nd - Printer server" -msgstr "Servidor de Impresión - p910nd" - -#~ msgid "port_help" -#~ msgstr "puerto_ayuda" diff --git a/package/luci/applications/luci-app-p910nd/po/fr/p910nd.po b/package/luci/applications/luci-app-p910nd/po/fr/p910nd.po deleted file mode 100644 index 5621e102df..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/fr/p910nd.po +++ /dev/null @@ -1,56 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-01-15 07:08+0200\n" -"Last-Translator: desillu \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Bidirectional mode" -msgstr "Mode bi-directionnel" - -msgid "Device" -msgstr "Périphérique" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Vous devez d'abord installer les paquets pour gérer des imprimantes USB " -"(kmod-usb-printer) ou sur port parallèle (kmod-lp)." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Paramètres" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "Port d'écoute TCP." - -msgid "enable" -msgstr "activer" - -msgid "p910nd - Printer server" -msgstr "p910nd - Serveur d'impression" - -#~ msgid "port_help" -#~ msgstr "aide_port" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "" -#~ "p910nd écoute sur le port 910+N, par exemple 9100 pour la première " -#~ "imprimante." diff --git a/package/luci/applications/luci-app-p910nd/po/he/p910nd.po b/package/luci/applications/luci-app-p910nd/po/he/p910nd.po deleted file mode 100644 index 3accdca6ad..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/he/p910nd.po +++ /dev/null @@ -1,53 +0,0 @@ -# p910nd.pot -# generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-10 03:43+0200\n" -"Last-Translator: Snoof \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "מצב דו-כיווני." - -msgid "Device" -msgstr "התקן" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"ראשית עליך להתקין את החבילות כדי לקבל תמיכה ב- USB (kmod-usb-printer) או " -"בחיבור מקבילי (kmod-lp)." - -msgid "Interface" -msgstr "" - -# "יציאה" או "יציאת התקן" ? -#, fuzzy -msgid "Port" -msgstr "יציאת התקן" - -msgid "Settings" -msgstr "הגדרות" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "יציאת האזנה ל- TCP" - -msgid "enable" -msgstr "לאפשר" - -msgid "p910nd - Printer server" -msgstr "p910nd - שרת מדפסות" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "p910nd מאזין לפורט 910+N (למשל 9100) עבור המדפסת הראשונה." diff --git a/package/luci/applications/luci-app-p910nd/po/hu/p910nd.po b/package/luci/applications/luci-app-p910nd/po/hu/p910nd.po deleted file mode 100644 index 717987190c..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/hu/p910nd.po +++ /dev/null @@ -1,49 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-28 16:41+0200\n" -"Last-Translator: Gábor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Bidirectional mode" -msgstr "Kétirányú mód" - -msgid "Device" -msgstr "Eszköz" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"A p910nd használata előtt szükséges az USB (kmod-usb-printer), vagy " -"párhuzamos (kmod-lp) portokat támogató csomagok telepítése." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Beállítások" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "TCP port" - -msgid "enable" -msgstr "Engedélyezés" - -msgid "p910nd - Printer server" -msgstr "p910nd - Nyomtató szerver" - -#~ msgid "port_help" -#~ msgstr "port_súgó" diff --git a/package/luci/applications/luci-app-p910nd/po/it/p910nd.po b/package/luci/applications/luci-app-p910nd/po/it/p910nd.po deleted file mode 100644 index 47bf687362..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/it/p910nd.po +++ /dev/null @@ -1,55 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2014-08-05 11:23+0200\n" -"Last-Translator: morganfw \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Modalità bidirezionale" - -msgid "Device" -msgstr "Dispositivo" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Devi prima aver installato i pacchetti per avere il supporto dell'USB (kmod-" -"usb-printer) o della porta parallela (kmod-lp)." - -msgid "Interface" -msgstr "Interfaccia" - -msgid "Port" -msgstr "Porta" - -msgid "Settings" -msgstr "Impostazioni" - -msgid "Specifies the interface to listen on." -msgstr "Specifica l'interfaccia per l'ascolto." - -msgid "TCP listener port." -msgstr "Porta d'ascolto TCP." - -msgid "enable" -msgstr "Attiva" - -msgid "p910nd - Printer server" -msgstr "p910nd - Server di stampa" - -#~ msgid "port_help" -#~ msgstr "Porta d'aiuto" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "" -#~ "p910nd è in ascolto sulla porta 910+N. Ad es. 9100 per la prima stampante." diff --git a/package/luci/applications/luci-app-p910nd/po/ja/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ja/p910nd.po deleted file mode 100644 index 28ffc38178..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/ja/p910nd.po +++ /dev/null @@ -1,51 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2016-12-22 01:08+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "Bidirectional mode" -msgstr "双方向モード" - -msgid "Device" -msgstr "デバイス" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"まず初めに、USB(kmod-usb-printer)または、パラレルポート(kmod-lp)をサポートす" -"るためのパッケージをインストールしてください。" - -msgid "Interface" -msgstr "インターフェース" - -msgid "Port" -msgstr "ポート番号" - -msgid "Settings" -msgstr "設定" - -msgid "Specifies the interface to listen on." -msgstr "待ち受けるインターフェースを指定します。" - -msgid "TCP listener port." -msgstr "TCP接続待ちポート" - -msgid "enable" -msgstr "有効" - -msgid "p910nd - Printer server" -msgstr "p910nd - プリンタサーバー" - -#~ msgid "port_help" -#~ msgstr "port_help" diff --git a/package/luci/applications/luci-app-p910nd/po/ms/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ms/p910nd.po deleted file mode 100644 index 254fc66c28..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/ms/p910nd.po +++ /dev/null @@ -1,43 +0,0 @@ -# p910nd.pot -# generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Bidirectional mode" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "" - -msgid "enable" -msgstr "" - -msgid "p910nd - Printer server" -msgstr "" diff --git a/package/luci/applications/luci-app-p910nd/po/no/p910nd.po b/package/luci/applications/luci-app-p910nd/po/no/p910nd.po deleted file mode 100644 index 3bf49c566f..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/no/p910nd.po +++ /dev/null @@ -1,47 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2013-03-21 23:05+0200\n" -"Last-Translator: protx \n" -"Language: no\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Toveis modus (bidirectional)" - -msgid "Device" -msgstr "Enhet" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Du må først installere pakkene som gir støtte for USB (kmod-usb-printer) " -"eller parallellport (kmod-lp) skriver." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Innstillinger" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "TCP lytte port." - -msgid "enable" -msgstr "Aktiver" - -msgid "p910nd - Printer server" -msgstr "p910nd - Skriverserver" - -#~ msgid "port_help" -#~ msgstr "" -#~ "p910nd lytter på port 910+N. (N=0 blir port 9100 for første skriver)" diff --git a/package/luci/applications/luci-app-p910nd/po/pl/p910nd.po b/package/luci/applications/luci-app-p910nd/po/pl/p910nd.po deleted file mode 100644 index c5f611ab73..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/pl/p910nd.po +++ /dev/null @@ -1,56 +0,0 @@ -# p910nd.pot -# generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-02 19:31+0200\n" -"Last-Translator: obsy \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Tryb dwukierunkowy" - -msgid "Device" -msgstr "Urządzenie" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Po pierwsze, musisz zainstalować pakiety obsługujące interfejs USB (kmod-" -"usb-printer) lub LPT (kmod-lp)." - -msgid "Interface" -msgstr "Interfejs" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Ustawienia" - -msgid "Specifies the interface to listen on." -msgstr "Określa interfejs do nasłuchu." - -msgid "TCP listener port." -msgstr "Port nasłuchu TCP" - -msgid "enable" -msgstr "Włączony" - -# W sambie usługa też się nazywa "network shares", więc nie ma specjalnie potrzeby używania nazwy własnej demona "p910nd". -msgid "p910nd - Printer server" -msgstr "Serwer wydruku" - -#~ msgid "port_help" -#~ msgstr "port_help" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "p910nd nasłuchuje na porcie 910X, np. 9100 dla pierwszej drukarki." diff --git a/package/luci/applications/luci-app-p910nd/po/pt-br/p910nd.po b/package/luci/applications/luci-app-p910nd/po/pt-br/p910nd.po deleted file mode 100644 index de7c42948a..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/pt-br/p910nd.po +++ /dev/null @@ -1,57 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2014-06-21 19:02+0200\n" -"Last-Translator: Éder \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Modo bidirecional" - -msgid "Device" -msgstr "Dispositivo" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Primeiro você deve instalar os pacotes para obter suporte USB (kmod-usb-" -"printer) ou porta paralela (kmod-lp)." - -# 20140621: edersg: tradução -msgid "Interface" -msgstr "Interface" - -msgid "Port" -msgstr "Porta" - -msgid "Settings" -msgstr "Configurações" - -# 20140621: edersg: tradução -msgid "Specifies the interface to listen on." -msgstr "Especifica a interface para escuta." - -msgid "TCP listener port." -msgstr "Porta TCP de escuta." - -msgid "enable" -msgstr "habilitado" - -msgid "p910nd - Printer server" -msgstr "p910nd - Servidor de impressão" - -#~ msgid "port_help" -#~ msgstr "" -#~ "p910nd escuta na porta 910x. Por exemplo, 9100 para a primeira impressora." - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "p910nd escuta na porta 910+N. Ex. 9100 para a primeira impressora." diff --git a/package/luci/applications/luci-app-p910nd/po/pt/p910nd.po b/package/luci/applications/luci-app-p910nd/po/pt/p910nd.po deleted file mode 100644 index 734967e8a5..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/pt/p910nd.po +++ /dev/null @@ -1,51 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-05-01 00:41+0200\n" -"Last-Translator: pedromrgoncalves \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Modo bidirecional" - -msgid "Device" -msgstr "Dispositivo" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Primeiro você deve instalar os pacotes para obter suporte USB (kmod-usb-" -"printer) ou porta paralela (kmod-lp)." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "Porta" - -msgid "Settings" -msgstr "Definições" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "Porta TCP ouvinte" - -msgid "enable" -msgstr "activar" - -msgid "p910nd - Printer server" -msgstr "P910nd - Servidor de impressão" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "p910nd escuta na porta 910+N. Ex. 9100 para a primeira impressora." diff --git a/package/luci/applications/luci-app-p910nd/po/ro/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ro/p910nd.po deleted file mode 100644 index 7cad5c0695..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/ro/p910nd.po +++ /dev/null @@ -1,47 +0,0 @@ -# p910nd.pot -# generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-29 20:02+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "" - -msgid "Device" -msgstr "Dispozitiv" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" - -msgid "Interface" -msgstr "Interfaţă" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Setări" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "" - -msgid "enable" -msgstr "activează" - -msgid "p910nd - Printer server" -msgstr "" diff --git a/package/luci/applications/luci-app-p910nd/po/ru/p910nd.po b/package/luci/applications/luci-app-p910nd/po/ru/p910nd.po deleted file mode 100644 index 923b22e00e..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/ru/p910nd.po +++ /dev/null @@ -1,57 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: p910nd\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-08-15 11:42+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Bidirectional mode" -msgstr "Двунаправленный режим" - -msgid "Device" -msgstr "Устройство" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Для начала вам необходимо установить пакеты для поддержки USB (kmod-usb-" -"printer) или параллельного порта (kmod-lp)." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "Порт" - -msgid "Settings" -msgstr "Настройки" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "Прослушиваемый TCP-порт." - -msgid "enable" -msgstr "включить" - -msgid "p910nd - Printer server" -msgstr "p910nd - сервер печати" - -#~ msgid "port_help" -#~ msgstr "Помощь по портам" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "" -#~ "p910nd прослушивает порт 910+N. То есть 9100 - номер первого принтера." diff --git a/package/luci/applications/luci-app-p910nd/po/sk/p910nd.po b/package/luci/applications/luci-app-p910nd/po/sk/p910nd.po deleted file mode 100644 index 5282dd724e..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/sk/p910nd.po +++ /dev/null @@ -1,41 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Bidirectional mode" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "" - -msgid "enable" -msgstr "" - -msgid "p910nd - Printer server" -msgstr "" diff --git a/package/luci/applications/luci-app-p910nd/po/sv/p910nd.po b/package/luci/applications/luci-app-p910nd/po/sv/p910nd.po deleted file mode 100644 index 82b0be4367..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/sv/p910nd.po +++ /dev/null @@ -1,44 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Bidirectional mode" -msgstr "" - -msgid "Device" -msgstr "Enhet" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Först behöver du installera paketen för att få stöd för USB (kmod-usb-" -"printer) eller paralell port (kmod-lp)." - -msgid "Interface" -msgstr "Gränssnitt" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Inställningar" - -msgid "Specifies the interface to listen on." -msgstr "Anger gränssnittet att lyssna på" - -msgid "TCP listener port." -msgstr "Port för TCP-lyssnare." - -msgid "enable" -msgstr "aktivera" - -msgid "p910nd - Printer server" -msgstr "p910nd- Skrivar-server" diff --git a/package/luci/applications/luci-app-p910nd/po/templates/p910nd.pot b/package/luci/applications/luci-app-p910nd/po/templates/p910nd.pot deleted file mode 100644 index 3674fdb249..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/templates/p910nd.pot +++ /dev/null @@ -1,34 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Bidirectional mode" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "" - -msgid "enable" -msgstr "" - -msgid "p910nd - Printer server" -msgstr "" diff --git a/package/luci/applications/luci-app-p910nd/po/tr/p910nd.po b/package/luci/applications/luci-app-p910nd/po/tr/p910nd.po deleted file mode 100644 index ed69a011bc..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/tr/p910nd.po +++ /dev/null @@ -1,46 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-10-11 23:24+0200\n" -"Last-Translator: vincenzo \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Çift Yönlü Mod" - -msgid "Device" -msgstr "Aygıt" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"USB (kmod-usb-yazıcı) veya paralel port (kmod-lp) kullanabilmek için destek " -"paketi yüklemeniz gerekebilir." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Settings" -msgstr "Ayarlar" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "Dinlemedeki TCP portları" - -msgid "enable" -msgstr "Etkinleştir" - -msgid "p910nd - Printer server" -msgstr "P910nd_Yazıcı Sunucusu" diff --git a/package/luci/applications/luci-app-p910nd/po/uk/p910nd.po b/package/luci/applications/luci-app-p910nd/po/uk/p910nd.po deleted file mode 100644 index 237054d2c5..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/uk/p910nd.po +++ /dev/null @@ -1,47 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-05-26 18:35+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Bidirectional mode" -msgstr "Двонаправлений режим" - -msgid "Device" -msgstr "Пристрій" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Спочатку вам слід інсталювати пакети для підтримки USB (kmod-usb-printer) " -"або паралельного порту (kmod-lp)." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "Порт" - -msgid "Settings" -msgstr "Параметри" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "Порт TCP, що прослуховується" - -msgid "enable" -msgstr "Увімкнути" - -msgid "p910nd - Printer server" -msgstr "p910nd - сервер друку" diff --git a/package/luci/applications/luci-app-p910nd/po/vi/p910nd.po b/package/luci/applications/luci-app-p910nd/po/vi/p910nd.po deleted file mode 100644 index 10035b8676..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/vi/p910nd.po +++ /dev/null @@ -1,52 +0,0 @@ -# p910nd.pot -# generated from ./applications/luci-p910nd/luasrc/i18n/p910nd.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:58+0200\n" -"PO-Revision-Date: 2009-08-13 04:03+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "Bidirectional mode" -msgstr "Chế độ 2 chiều" - -msgid "Device" -msgstr "" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"Trước tiên, bạn cần phải cài đặt các gói để hỗ trợ cho cổng USB (kmod-usb-" -"in), hoặc cổng song song (kmod-lp)." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "" - -msgid "enable" -msgstr "" - -msgid "p910nd - Printer server" -msgstr "p910nd - Máy in chủ" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "p910nd tiếp thu ở cổng 910+N. E.g. 9100 cho máy in đầu tiên." diff --git a/package/luci/applications/luci-app-p910nd/po/zh-cn/p910nd.po b/package/luci/applications/luci-app-p910nd/po/zh-cn/p910nd.po deleted file mode 100644 index c14e2e7cba..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/zh-cn/p910nd.po +++ /dev/null @@ -1,49 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: 2014-06-22 14:36+0200\n" -"Last-Translator: phantasm131 \n" -"Language-Team: QQ Group 75543259 \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" - -msgid "Bidirectional mode" -msgstr "双向模式" - -msgid "Device" -msgstr "设备" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "必须安装支持USB打印机的驱动(kmod-usb-printer)或者并口驱动(kmod-lp)" - -msgid "Interface" -msgstr "接口" - -msgid "Port" -msgstr "端口" - -msgid "Settings" -msgstr "设置" - -msgid "Specifies the interface to listen on." -msgstr "指定监听端口" - -msgid "TCP listener port." -msgstr "TCP监听端口" - -msgid "enable" -msgstr "启用" - -msgid "p910nd - Printer server" -msgstr "打印服务器" - -#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer." -#~ msgstr "p910nd 的监听端口是910+N,举例:9100用于监听第一台打印机" diff --git a/package/luci/applications/luci-app-p910nd/po/zh-tw/p910nd.po b/package/luci/applications/luci-app-p910nd/po/zh-tw/p910nd.po deleted file mode 100644 index e6f6313374..0000000000 --- a/package/luci/applications/luci-app-p910nd/po/zh-tw/p910nd.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-18 20:03+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Bidirectional mode" -msgstr "雙向模式" - -msgid "Device" -msgstr "設備" - -msgid "" -"First you have to install the packages to get support for USB (kmod-usb-" -"printer) or parallel port (kmod-lp)." -msgstr "" -"首先您必須安裝軟體包以便獲得USB (kmod-usb-printer)或串列埠(kmod-lp)的支援." - -msgid "Interface" -msgstr "" - -msgid "Port" -msgstr "埠" - -msgid "Settings" -msgstr "設定值" - -msgid "Specifies the interface to listen on." -msgstr "" - -msgid "TCP listener port." -msgstr "聆聽TCP埠" - -msgid "enable" -msgstr "啟用" - -msgid "p910nd - Printer server" -msgstr "p910nd - 印表機伺服器" diff --git a/package/luci/applications/luci-app-p910nd/root/etc/uci-defaults/40_luci-p910nd b/package/luci/applications/luci-app-p910nd/root/etc/uci-defaults/40_luci-p910nd deleted file mode 100755 index 80f6d62fa2..0000000000 --- a/package/luci/applications/luci-app-p910nd/root/etc/uci-defaults/40_luci-p910nd +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@p910nd[-1] - add ucitrack p910nd - set ucitrack.@p910nd[-1].init=p910nd - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-pbx-voicemail/COPYING b/package/luci/applications/luci-app-pbx-voicemail/COPYING deleted file mode 100644 index 94a9ed024d..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/COPYING +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/package/luci/applications/luci-app-pbx-voicemail/Makefile b/package/luci/applications/luci-app-pbx-voicemail/Makefile deleted file mode 100644 index eefe0fd249..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI PBX Administration Voicemail Support -LUCI_DEPENDS:=+luci-app-pbx +asterisk18 +msmtp +coreutils-base64 @BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-pbx-voicemail/luasrc/controller/pbx-voicemail.lua b/package/luci/applications/luci-app-pbx-voicemail/luasrc/controller/pbx-voicemail.lua deleted file mode 100644 index 6f3dfac05e..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/luasrc/controller/pbx-voicemail.lua +++ /dev/null @@ -1,24 +0,0 @@ ---[[ - Copyright 2011 Iordan Iordanov - - This file is part of luci-pbx-voicemail. - - luci-pbx-voicemail is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - luci-pbx-voicemail is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with luci-pbx-voicemail. If not, see . -]]-- - -module("luci.controller.pbx-voicemail", package.seeall) - -function index() - entry({"admin", "services", "pbx", "pbx-voicemail"}, cbi("pbx-voicemail"), "Voicemail", 5) -end diff --git a/package/luci/applications/luci-app-pbx-voicemail/luasrc/model/cbi/pbx-voicemail.lua b/package/luci/applications/luci-app-pbx-voicemail/luasrc/model/cbi/pbx-voicemail.lua deleted file mode 100644 index a6087e9aec..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/luasrc/model/cbi/pbx-voicemail.lua +++ /dev/null @@ -1,153 +0,0 @@ ---[[ - Copyright 2011 Iordan Iordanov - - This file is part of luci-pbx-voicemail. - - luci-pbx-voicemail is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - luci-pbx-voicemail is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with luci-pbx-voicemail. If not, see . -]]-- - -if nixio.fs.access("/etc/init.d/asterisk") then - server = "asterisk" -elseif nixio.fs.access("/etc/init.d/freeswitch") then - server = "freeswitch" -else - server = "" -end - -modulename = "pbx-voicemail" -vmlogfile = "/tmp/last_sent_voicemail.log" - -m = Map (modulename, translate("Voicemail Setup"), - translate("Here you can configure a global voicemail for this PBX. Since this system is \ - intended to run on embedded systems like routers, there is no local storage of voicemail - \ - it must be sent out by email. Therefore you need to configure an outgoing mail (SMTP) server \ - (for example your ISP's, Google's, or Yahoo's SMTP server), and provide a list of \ - addresses that receive recorded voicemail.")) - --- Recreate the config, and restart services after changes are commited to the configuration. -function m.on_after_commit(self) - luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null") - luci.sys.call("/etc/init.d/" .. server .. " restart 1\>/dev/null 2\>/dev/null") -end - - ----------------------------------------------------------------------------------------------------- -s = m:section(NamedSection, "global_voicemail", "voicemail", translate("Global Voicemail Setup"), - translate("When you enable voicemail, you will have the opportunity to specify \ - email addresses that receive recorded voicemail. You must also set up an SMTP server below.")) -s.anonymous = true - -enable = s:option(ListValue, "enabled", translate("Enable Voicemail")) -enable:value("yes", translate("Yes")) -enable:value("no", translate("No")) -enable.default = "no" - -emails = s:option(DynamicList, "global_email_addresses", - translate("Email Addresses that Receive Voicemail")) -emails:depends("enabled", "yes") - -savepath = s:option(Value, "global_save_path", translate("Local Storage Directory"), - translate("You can also retain copies of voicemail messages on the device running \ - your PBX. The path specified here will be created if it doesn't exist. \ - Beware of limited space on embedded devices like routers, and enable this \ - option only if you know what you are doing.")) -savepath.optional = true - -if nixio.fs.access("/etc/pbx-voicemail/recordings/greeting.gsm") then - m1 = s:option(DummyValue, "_m1") - m1:depends("enabled", "yes") - m1.default = "NOTE: Found a voicemail greeting. To check or change your voicemail greeting, dial *789 \ - and the system will play back your current greeting. After that, a long beep will sound and \ - you can press * in order to record a new message. Hang up to avoid recording a message. \ - If you press *, a second long beep will sound, and you can record a new greeting. \ - Hang up or press # to stop recording. When # is pressed the system will play back the \ - new greeting." -else - m1 = s:option(DummyValue, "_m1") - m1:depends("enabled", "yes") - m1.default = "WARNING: Could not find voicemail greeting. Callers will hear only a beep before \ - recording starts. To record a greeting, dial *789, and press * after the long beep. \ - If you press *, a second long beep will sound, and you can record a new greeting. \ - Hang up or press # to stop recording. When # is pressed the system will play back the \ - new greeting." -end - - ----------------------------------------------------------------------------------------------------- -s = m:section(NamedSection, "voicemail_smtp", "voicemail", translate("Outgoing mail (SMTP) Server"), - translate("In order for this PBX to send emails containing voicemail recordings, you need to \ - set up an SMTP server here. Your ISP usually provides an SMTP server for that purpose. \ - You can also set up a third party SMTP server such as the one provided by Google or Yahoo.")) -s.anonymous = true - -serv = s:option(Value, "smtp_server", translate("SMTP Server Hostname or IP Address")) -serv.datatype = "host(0)" - -port = s:option(Value, "smtp_port", translate("SMTP Port Number")) -port.datatype = "port" -port.default = "25" - -tls = s:option(ListValue, "smtp_tls", translate("Secure Connection Using TLS")) -tls:value("on", translate("Yes")) -tls:value("off", translate("No")) -tls.default = "on" - -auth = s:option(ListValue, "smtp_auth", translate("SMTP Server Authentication")) -auth:value("on", translate("Yes")) -auth:value("off", translate("No")) -auth.default = "off" - -user = s:option(Value, "smtp_user", translate("SMTP User Name")) -user:depends("smtp_auth", "on") - -pwd = s:option(Value, "smtp_password", translate("SMTP Password"), - translate("Your real SMTP password is not shown for your protection. It will be changed \ - only when you change the value in this box.")) -pwd.password = true -pwd:depends("smtp_auth", "on") - --- We skip reading off the saved value and return nothing. -function pwd.cfgvalue(self, section) - return "Password Not Displayed" -end - --- We check the entered value against the saved one, and only write if the entered value is --- something other than the empty string, and it differes from the saved value. -function pwd.write(self, section, value) - local orig_pwd = m:get(section, self.option) - if value == "Password Not Displayed" then value = "" end - if value and #value > 0 and orig_pwd ~= value then - Value.write(self, section, value) - end -end - ----------------------------------------------------------------------------------------------------- -s = m:section(NamedSection, "voicemail_log", "voicemail", translate("Last Sent Voicemail Log")) -s.anonymous = true - -s:option (DummyValue, "vmlog") - -sts = s:option(DummyValue, "_sts") -sts.template = "cbi/tvalue" -sts.rows = 5 - -function sts.cfgvalue(self, section) - log = nixio.fs.readfile(vmlogfile) - if log == nil or log == "" then - log = "No errors or messages reported." - end - return log -end - -return m diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/ca/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/ca/pbx-voicemail.po deleted file mode 100644 index c0119f7735..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/ca/pbx-voicemail.po +++ /dev/null @@ -1,100 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-01 05:47+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "Adreces de correu electrònic que reben correu de veu" - -msgid "Enable Voicemail" -msgstr "Habilita el correu de veu" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "Registre del últim correu de veu enviat" - -msgid "Local Storage Directory" -msgstr "Directori d'emmagatzematge local" - -msgid "No" -msgstr "No" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Servidor de correu sortint (SMTP)" - -msgid "SMTP Password" -msgstr "Contrasenya SMTP" - -msgid "SMTP Port Number" -msgstr "Nombre de port SMTP" - -msgid "SMTP Server Authentication" -msgstr "Autenticació del servidor SMTP" - -msgid "SMTP Server Hostname or IP Address" -msgstr "Adreça IP o nom de host del servidor SMTP" - -msgid "SMTP User Name" -msgstr "Nom d'usuari SMTP" - -msgid "Secure Connection Using TLS" -msgstr "Assegura la connexió mitjançant TLS" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"Quan habiliteu el correu de veu, tindreu l'oportunitat d'especificar adreces " -"de correu electrònic que reben correu de veu gravat. Heu d'establir també " -"un servidor SMTP a baix." - -msgid "Yes" -msgstr "Sí" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"Podeu també retenir còpies de missatges de veu en el dispositiu executant el " -"vostre PBX. La ruta especificat aquí es crearà si no existeix. Teniu compte " -"d'espai limitat en dispositius incrustats com els encaminadors, i habiliteu " -"aquesta opció només si coneixeu ho que feu." - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"La vostra contrasenya SMTP no es mostra per a la vostra protecció. Es " -"canviarà només quan canvieu el valor en aquesta caixa." diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/cs/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/cs/pbx-voicemail.po deleted file mode 100644 index 6d94b3522c..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/cs/pbx-voicemail.po +++ /dev/null @@ -1,91 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-05 19:16+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "Povolit Voicemail" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "Ne" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "SMTP heslo" - -msgid "SMTP Port Number" -msgstr "SMTP číslo portu" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "SMTP uživatelské jméno" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "Voicemail nastavení" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "Ano" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/de/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/de/pbx-voicemail.po deleted file mode 100644 index 224b5a929b..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/de/pbx-voicemail.po +++ /dev/null @@ -1,141 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-28 22:30+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "E-Mail Adressen die Sprachnachrichten empfangen" - -msgid "Enable Voicemail" -msgstr "Anrufbeantworter aktivieren" - -msgid "Global Voicemail Setup" -msgstr "Allgemeine Einstellungen für Voicemail" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" -"Es kann ein systemweiter Anrufbeantworter für diese Telefonanlage (PBX) konfiguriert werden. Da dieses " -"System für den Einsatz auf embedded Systemen wie Routern optimiert wurde, " -"gibt es keine Möglichkeit die Sprachnachrichten lokal zu speichern. Sie " -"müssen per E-Mail versendet werden. Daher muss ein ausgehender Mail-Server " -"(SMTP) konfiguriert " -"werden. Hier kann zum Beispiel der SMTP-Server des Providers, aber auch ein " -"Freemailer wie GMail eingetragen werden. Zusätzlich muss noch eine Liste von " -"Adressen angegeben werden, an die aufgezeichnete Sprachnachrichten geschickt " -"werden." - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" -"Damit diese Telefonanlage (PBX) " -"E-Mails mit Sprachaufnahmen senden kann, muss an dieser Stelle ein SMTP-" -"Server eingetragen werden. Ihr Internet-Dienstanbieter (ISP) stellt normalerweise einen " -"SMTP-Server für diesen Zweck zur Verfügung. Sie können auch einen SMTP-" -"Server eines Drittanbieters, wie z.B. Google oder Yahoo, hier einstellen." - -msgid "Last Sent Voicemail Log" -msgstr "Log der zuletzt gesendeten Voicemails" - -msgid "Local Storage Directory" -msgstr "Lokales Speicherverzeichnis" - -msgid "No" -msgstr "Nein" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Server für ausgehende Mails (SMTP)" - -msgid "SMTP Password" -msgstr "SMTP-Passwort" - -msgid "SMTP Port Number" -msgstr "SMTP-Portnummer" - -msgid "SMTP Server Authentication" -msgstr "SMTP-Server-Anmeldung" - -msgid "SMTP Server Hostname or IP Address" -msgstr "SMTP-Servername oder IP-Adresse" - -msgid "SMTP User Name" -msgstr "SMTP-Benutzername" - -msgid "Secure Connection Using TLS" -msgstr "Sichere Verbindung über TLS" - -msgid "Voicemail Setup" -msgstr "Voicemail-Einstellungen" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"Wenn Sie Voicemail aktivieren, können Sie E-Mail-Adressen angeben, die " -"aufgenommene Voicemails erhalten sollen. Sie müssen ebenfalls einen SMTP-" -"Server unten angeben." - -msgid "Yes" -msgstr "Ja" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"Sie können auch Kopien Ihrer Voicemail-Nachrichten auf dem Gerät speichern. " -"Der hier angegebene Pfad wird erstellt, falls er nicht existiert. Beachten " -"Sie, dass Geräte wie Router nur begrenzten Speicherplatz haben, und " -"aktivieren Sie diese Option nur, wenn Sie wissen, was Sie tun." - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"Ihr SMTP-Passwort wird zu Ihrem Schutz nicht angezeigt. Es wird nur " -"geändert, wenn Sie dein Eintrag in diesem Kästchen verändern." - -#~ msgid "Directory to save voicemail into" -#~ msgstr "Verzeichnis für eingehende Sprachnachrichten" - -#~ msgid "Enabled" -#~ msgstr "Aktiviert" - -#~ msgid "" -#~ "Here you can configure a global voicemail for this PBX. Since this system " -#~ "is intended to run on embedded systems like routers, there is no local " -#~ "storage of voicemail - it must be sent out by email. Therefore you need " -#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server " -#~ "your ISP provides, or GMail), and provide a list of addresses the " -#~ "voicemail will be sent to." -#~ msgstr "" -#~ "Es kann ein systemweiter Anrufbeantworter für diese Telefonanlage (PBX) konfiguriert werden. Da " -#~ "dieses System für den Einsatz auf embedded Systemen wie Routern optimiert " -#~ "wurde, gibt es keine Möglichkeit die Sprachnachrichten lokal zu " -#~ "speichern. Sie müssen per E-Mail versendet werden. Daher muss ein " -#~ "ausgehender Mail-Server (SMTP) konfiguriert werden. Hier kann zum Beispiel der SMTP-" -#~ "Server des Providers, aber auch ein Freemailer wie GMail verwendet " -#~ "werden. Zusätzlich muss noch eine Liste von Adressen angegeben werden, zu " -#~ "denen die Sprachnachrichten geschickt werden." diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/el/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/el/pbx-voicemail.po deleted file mode 100644 index fc0a2e351f..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/el/pbx-voicemail.po +++ /dev/null @@ -1,94 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-18 15:26+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: none\n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "Όχι" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" - -#~ msgid "Enabled" -#~ msgstr "Ενεργοποιημένο" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/en/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/en/pbx-voicemail.po deleted file mode 100644 index 79c8848bdb..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/en/pbx-voicemail.po +++ /dev/null @@ -1,169 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "Email Addresses that Receive Voicemail" - -msgid "Enable Voicemail" -msgstr "Enable Voicemail" - -msgid "Global Voicemail Setup" -msgstr "Global Voicemail Setup" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." - -msgid "Last Sent Voicemail Log" -msgstr "Last Sent Voicemail Log" - -msgid "Local Storage Directory" -msgstr "Local Storage Directory" - -msgid "No" -msgstr "No" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Outgoing mail (SMTP) Server" - -msgid "SMTP Password" -msgstr "SMTP Password" - -msgid "SMTP Port Number" -msgstr "SMTP Port Number" - -msgid "SMTP Server Authentication" -msgstr "SMTP Server Authentication" - -msgid "SMTP Server Hostname or IP Address" -msgstr "SMTP Server Hostname or IP Address" - -msgid "SMTP User Name" -msgstr "SMTP User Name" - -msgid "Secure Connection Using TLS" -msgstr "Secure Connection Using TLS" - -msgid "Voicemail Setup" -msgstr "Voicemail Setup" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." - -msgid "Yes" -msgstr "Yes" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." - -#~ msgid "Directory to save voicemail into" -#~ msgstr "Directory to save voicemail into" - -#~ msgid "Email addresses to forward to" -#~ msgstr "Email addresses to forward to" - -#~ msgid "Enabled" -#~ msgstr "Enabled" - -#~ msgid "" -#~ "Here you can configure a global voicemail for this PBX. Since this system " -#~ "is intended to run on embedded systems like routers, there is no local " -#~ "storage of voicemail - it must be sent out by email. Therefore you need " -#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server " -#~ "your ISP provides, or GMail), and provide a list of addresses the " -#~ "voicemail will be sent to." -#~ msgstr "" -#~ "Here you can configure a global voicemail for this PBX. Since this system " -#~ "is intended to run on embedded systems like routers, there is no local " -#~ "storage of voicemail - it must be sent out by email. Therefore you need " -#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server " -#~ "your ISP provides, or GMail), and provide a list of addresses the " -#~ "voicemail will be sent to." - -#~ msgid "" -#~ "In order for this PBX to send emails containing voicemail recordings, you " -#~ "need to set up an SMTP server here. Your ISP usually provides an SMTP " -#~ "server for that purpose. You can also set up a GMail, Yahoo, or other 3rd " -#~ "party SMTP server." -#~ msgstr "" -#~ "In order for this PBX to send emails containing voicemail recordings, you " -#~ "need to set up an SMTP server here. Your ISP usually provides an SMTP " -#~ "server for that purpose. You can also set up a GMail, Yahoo, or other 3rd " -#~ "party SMTP server." - -#~ msgid "SMTP port number" -#~ msgstr "SMTP port number" - -#~ msgid "SMTP server authentication" -#~ msgstr "SMTP server authentication" - -#~ msgid "SMTP server hostname or IP" -#~ msgstr "SMTP server hostname or IP" - -#~ msgid "SMTP user name" -#~ msgstr "SMTP user name" - -#~ msgid "Timeout before sending callers to voicemail" -#~ msgstr "Timeout before sending callers to voicemail" - -#~ msgid "Use TLS (secure connection)" -#~ msgstr "Use TLS (secure connection)" - -#~ msgid "" -#~ "When you enable voicemail, you will have the opportunity to specify email " -#~ "addresses which receive the message. You must also set up an SMTP server " -#~ "below." -#~ msgstr "" -#~ "When you enable voicemail, you will have the opportunity to specify email " -#~ "addresses which receive the message. You must also set up an SMTP server " -#~ "below." diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/es/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/es/pbx-voicemail.po deleted file mode 100644 index 384e169de1..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/es/pbx-voicemail.po +++ /dev/null @@ -1,106 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-23 22:44+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "Dirección de correo electrónica que recibe Voicemail" - -msgid "Enable Voicemail" -msgstr "Activar Voicemail" - -msgid "Global Voicemail Setup" -msgstr "Configuración global de Voicemail" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" -"Configure un correo de voz global para esta PBX. Como el sistema está " -"diseñado para sistemas integrados como routers, no tiene un almacenamiento " -"local y debe enviarse por correo. Por este motivo debe configurar un " -"servidor SMTP de correo saliente (como ISP, Google o el correo de Yahoo) y " -"establecer una lista de direcciones que recibirán el correo de voz grabado." - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" -"Para usar esta PBX para enviar correos con grabaciones de correos de voz " -"tiene que configurar un servidor SMTP. Su ISP es posible que tenga uno. " -"También puede usar otros como los de Google o Yahoo." - -msgid "Last Sent Voicemail Log" -msgstr "Último registro de Voicemail enviado" - -msgid "Local Storage Directory" -msgstr "Directorio local de almacenamiento" - -msgid "No" -msgstr "No" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Servidor de correo SMTP saliente" - -msgid "SMTP Password" -msgstr "Contraseña SMTP" - -msgid "SMTP Port Number" -msgstr "Número de puerto SMTP" - -msgid "SMTP Server Authentication" -msgstr "Autentificación de servidor SMTP" - -msgid "SMTP Server Hostname or IP Address" -msgstr "Nombre del servidor SMTP o dirección IP" - -msgid "SMTP User Name" -msgstr "Nombre de usuario SMTP" - -msgid "Secure Connection Using TLS" -msgstr "Asegurar la conexión con TLS" - -msgid "Voicemail Setup" -msgstr "Configuración de Voicemail" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"Cuando active Voicemail tendrá que especificar direcciones de correo que " -"recibirán los correos grabados así como un servidor SMTP." - -msgid "Yes" -msgstr "Sí" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"También puede guardar copias de los mensajes de Voicemail en el dispositivo. " -"El camino se creará si no existe. Tenga cuidado de no sobrepasar el espacio " -"disponible en dispositivos pequeños como routers." - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"Su contraseña SMTP real no se muestra. Se cambiará solo cuando cambie el " -"valor en esta caja." diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/fr/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/fr/pbx-voicemail.po deleted file mode 100644 index 0ccaa502e6..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/fr/pbx-voicemail.po +++ /dev/null @@ -1,88 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/he/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/he/pbx-voicemail.po deleted file mode 100644 index be25f0b591..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/he/pbx-voicemail.po +++ /dev/null @@ -1,88 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/hu/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/hu/pbx-voicemail.po deleted file mode 100644 index be25f0b591..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/hu/pbx-voicemail.po +++ /dev/null @@ -1,88 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/it/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/it/pbx-voicemail.po deleted file mode 100644 index fe8c4bf004..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/it/pbx-voicemail.po +++ /dev/null @@ -1,110 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-09 21:15+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "Indirizzi e-mail che ricevono Voicemail" - -msgid "Enable Voicemail" -msgstr "Attiva Voicemail" - -msgid "Global Voicemail Setup" -msgstr "Attiva Voicemail" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" -"Qui è possibile configurare un messaggio vocale globale per questo PBX. " -"Poiché questo sistema è destinato a girare su sistemi embedded come router, " -"non vi è alcuna memorizzazione locale di segreteria - deve essere inviato " -"via e-mail. Pertanto, è necessario configurare un server di posta in uscita " -"(SMTP) (ad esempio del vostro ISP, di Google, Server Yahoo SMTP), e di " -"fornire un elenco di indirizzi che ricevono posta vocale registrato." - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" -"Affinché questo PBX possa inviare messaggi di posta elettronica contenenti " -"le registrazioni vocali, è necessario impostare un server SMTP qui. Il tuo " -"ISP in genere fornisce un server SMTP per tale scopo. È inoltre possibile " -"impostare un terzo SMTP come quello fornito da Google o Yahoo." - -msgid "Last Sent Voicemail Log" -msgstr "Ultimo file di registro Voicemail inviato" - -msgid "Local Storage Directory" -msgstr "Cartella di memorizzazione Locale" - -msgid "No" -msgstr "No" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Server posta in uscita (SMTP)" - -msgid "SMTP Password" -msgstr "Password SMTP" - -msgid "SMTP Port Number" -msgstr "Numero Porta SMTP" - -msgid "SMTP Server Authentication" -msgstr "Autenticazione Server SMTP" - -msgid "SMTP Server Hostname or IP Address" -msgstr "Nome Host Server SMTP o Indirizzo IP" - -msgid "SMTP User Name" -msgstr "Nome Utente SMTP" - -msgid "Secure Connection Using TLS" -msgstr "Connessione Sicura utilizzando TLS" - -msgid "Voicemail Setup" -msgstr "Impostazione Voicemail" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"Quando si attiva la segreteria telefonica, si avrà la possibilità di " -"specificare gli indirizzi e-mail che ricevono i messaggi vocali registrati. " -"È inoltre necessario impostare un server SMTP di seguito." - -msgid "Yes" -msgstr "Sì" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"È inoltre possibile conservare copie dei messaggi vocali sul dispositivo che " -"esegue il PBX. Il percorso specificato in questo campo viene creato se non " -"esiste. Attenzione lo spazio è limitato sui dispositivi embedded come " -"router, e abilitare questa opzione solo se si sa cosa si sta facendo." - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"La tua password SMTP reale non viene visualizzata per la vostra protezione. " -"Verrà modificato solo quando si modifica il valore in questa casella." diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/ja/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/ja/pbx-voicemail.po deleted file mode 100644 index 19e26bffa8..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/ja/pbx-voicemail.po +++ /dev/null @@ -1,88 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/ms/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/ms/pbx-voicemail.po deleted file mode 100644 index bf633a6702..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/ms/pbx-voicemail.po +++ /dev/null @@ -1,87 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/no/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/no/pbx-voicemail.po deleted file mode 100644 index be25f0b591..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/no/pbx-voicemail.po +++ /dev/null @@ -1,88 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/pl/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/pl/pbx-voicemail.po deleted file mode 100644 index 3f07fe4ba4..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/pl/pbx-voicemail.po +++ /dev/null @@ -1,111 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-05 02:29+0200\n" -"Last-Translator: piosl \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "Adres e-mail do odbierania poczty głosowej" - -msgid "Enable Voicemail" -msgstr "Włącz pocztę głosową" - -msgid "Global Voicemail Setup" -msgstr "Ustawienia globalnej poczty głosowej" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" -"Tutaj można skonfigurować globalną pocztę głosową dla PBX. Ponieważ system " -"ten jest przeznaczony do pracy w systemach wbudowanych, takich jak routery, " -"nie ma możliwości lokalnego przechowywania poczty głosowej - wiadomości " -"muszą być wysłane e-mailem. Z tego powodu należy skonfigurować serwer poczty " -"wychodzącej (SMTP) i podać listę adresów, które będą otrzymywać nagrania z " -"poczty głosowej" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" -"W celu wysyłało e-maili zawierających nagrania poczty głosowej przez PBX, " -"należy skonfigurować serwer SMTP. Twój dostawca usług internetowych " -"zazwyczaj dostarcza serwer SMTP. Można również skonfigurować serwer SMTP " -"firm trzecich, takich jak Google lub Yahoo." - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "Lokalny katalog przechowywania" - -msgid "No" -msgstr "Nie" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Serwer poczty wychodzącej (SMTP)" - -msgid "SMTP Password" -msgstr "Hasło SMTP" - -msgid "SMTP Port Number" -msgstr "Numer portu SMTP" - -msgid "SMTP Server Authentication" -msgstr "Uwierzytelnianie serwera SMTP" - -msgid "SMTP Server Hostname or IP Address" -msgstr "Nazwa hosta serwera SMTP lub adres IP" - -msgid "SMTP User Name" -msgstr "Nazwa użytkownika SMTP" - -msgid "Secure Connection Using TLS" -msgstr "Bezpieczne połączenie za pomocą protokołu TLS" - -msgid "Voicemail Setup" -msgstr "Ustawienia Poczty głosowej" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"Po włączeniu poczty głosowej, będziesz miał szansę na podanie adresów " -"e-mail, które będą otrzymywać nagrane wiadomości głosowe. Musisz również " -"skonfigurować serwer SMTP." - -msgid "Yes" -msgstr "Tak" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"Możesz też zachować kopie nagrań poczty głosowej na urządzeniu, na którym " -"działa PBX. Ścieżka określona tutaj zostanie utworzona, jeśli nie istnieje. " -"Pamiętaj o ograniczonym miejscu na urządzeniach takich jak routery i włącz " -"tę opcję tylko jeśli wiesz co robisz." - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"Twoje prawdziwe hasło SMTP nie jest pokazane dla Twojej ochrony. Zostanie " -"zmienione tylko jeśli zmienisz wartość w tym polu." diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/pt-br/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/pt-br/pbx-voicemail.po deleted file mode 100644 index 2e3a51e7f9..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/pt-br/pbx-voicemail.po +++ /dev/null @@ -1,175 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-16 02:32+0200\n" -"Last-Translator: Julio Cezar \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "Endereços de correio eletrônicos que Recebem Correio de Voz" - -msgid "Enable Voicemail" -msgstr "Habilitar o Correio de Voz" - -msgid "Global Voicemail Setup" -msgstr "Configuração Global do Correio de Voz" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" -"Aqui você pode configurar um correio de voz global para este PBX. Uma vez " -"que este sistema é previsto para ser executado em ambientes embarcados como " -"roteadores, não existe armazenamento local do correio de voz - ele deve ser " -"enviado por correio eletrônico. Desta maneira, você deve configurar um " -"servidor (SMTP) de correio eletrônico (por exemplo, o servidor SMTP do seu " -"provedor de Internet, do Google ou do Yahool), e fornecer uma lista dos " -"endereços para os quais o correio de voz será enviado." - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" -"Para este PBX enviar mensagens eletrônicas contendo as gravações do correio " -"de voz, você precisa definir aqui um servidor SMTP. Seu provedor de Internet " -"geralmente fornece um servidor SMTP para este propósito. Você também pode " -"usar um servidor de terceiros como os fornecidos pelo GMail ou Yahoo." - -msgid "Last Sent Voicemail Log" -msgstr "Registro do Último Correio de Voz Enviado" - -msgid "Local Storage Directory" -msgstr "Diretório de Armazenamento Local" - -msgid "No" -msgstr "Não" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Servidor de correio eletrônico (SMTP) para envio" - -msgid "SMTP Password" -msgstr "Senha do SMTP" - -msgid "SMTP Port Number" -msgstr "Porta do SMTP" - -msgid "SMTP Server Authentication" -msgstr "Autenticação do Servidor SMTP" - -msgid "SMTP Server Hostname or IP Address" -msgstr "Nome do Equipamento ou Endereço IP do Servidor SMTP" - -msgid "SMTP User Name" -msgstr "Nome do Usuário do SMTP" - -msgid "Secure Connection Using TLS" -msgstr "Proteja a Conexão Usando TLS" - -msgid "Voicemail Setup" -msgstr "Configuração do Correio de Voz" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"Quando você habilita o correio de voz, você terá a oportunidade de " -"especificar endereços de correio eletrônio que recebem o correio de voz " -"gravado. Você precisa também configurar um servidor SMTP abaixo." - -msgid "Yes" -msgstr "Sim" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"Você pode também manter cópias das mensagens de correio de voz no " -"dispositivo executando o seu PBX. O caminho especificado aqui será criado se " -"ele não existe. Cuidado com espaço limitado em dispositivos embarcados, como " -"roteadores, e habilite esta opção apenas se você sabe o que você está " -"fazendo." - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"Sua senha real do SMTP não é mostrada para a sua proteção. Ela será alterada " -"apenas quando você modificar o valor neste campo." - -#~ msgid "Directory to save voicemail into" -#~ msgstr "Diretório para salvar o correio de voz" - -#~ msgid "Email addresses to forward to" -#~ msgstr "Endereços de correio eletrônicos para encaminhar" - -#~ msgid "Enabled" -#~ msgstr "Habilitado" - -#~ msgid "" -#~ "Here you can configure a global voicemail for this PBX. Since this system " -#~ "is intended to run on embedded systems like routers, there is no local " -#~ "storage of voicemail - it must be sent out by email. Therefore you need " -#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server " -#~ "your ISP provides, or GMail), and provide a list of addresses the " -#~ "voicemail will be sent to." -#~ msgstr "" -#~ "Aqui você pode configurar um correio de voz global para este PBX. Uma vez " -#~ "que este sistema é previsto para ser executado em ambientes embarcados " -#~ "como roteadores, não existe armazenamento local do correio de voz - ele " -#~ "deve ser enviado por correio eletrônico. Desta maneira, você deve " -#~ "configurar um servidor (SMTP) de correio eletrônico (por exemplo, o " -#~ "servidor SMTP do seu provedor de Internet, ou o do GMail), e fornecer uma " -#~ "lista dos endereços para os quais o correio de voz será enviado." - -#~ msgid "" -#~ "In order for this PBX to send emails containing voicemail recordings, you " -#~ "need to set up an SMTP server here. Your ISP usually provides an SMTP " -#~ "server for that purpose. You can also set up a GMail, Yahoo, or other 3rd " -#~ "party SMTP server." -#~ msgstr "" -#~ "Para este PBX enviar mensagens eletrônicas contendo as gravações do " -#~ "correio de voz, você precisa definir aqui um servidor SMTP. Seu provedor " -#~ "de Internet geralmente fornece um servidor SMTP para este propósito. Você " -#~ "também pode usar o servidor SMTP do GMail, Yahoo, ou outro de terceiros." - -#~ msgid "SMTP port number" -#~ msgstr "Número da porta do SMTP" - -#~ msgid "SMTP server authentication" -#~ msgstr "Autenticação do servidor SMTP" - -#~ msgid "SMTP server hostname or IP" -#~ msgstr "Nome do equipamento ou endereço IP do servidor SMTP" - -#~ msgid "SMTP user name" -#~ msgstr "Nome do usuário do SMTP" - -#~ msgid "Timeout before sending callers to voicemail" -#~ msgstr "Tempo de espera antes de enviar chamadas para correio de voz" - -#~ msgid "Use TLS (secure connection)" -#~ msgstr "Usar TLS (conexão segura)" - -#~ msgid "" -#~ "When you enable voicemail, you will have the opportunity to specify email " -#~ "addresses which receive the message. You must also set up an SMTP server " -#~ "below." -#~ msgstr "" -#~ "Quando você habilita o correio de voz, você terá a oportunidade de " -#~ "especificar endereços de correio eletrônio que recebem a mensagem. Você " -#~ "também deve configurar um servidor SMTP abaixo." diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/pt/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/pt/pbx-voicemail.po deleted file mode 100644 index f5cfd89e49..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/pt/pbx-voicemail.po +++ /dev/null @@ -1,91 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-06-03 18:28+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "Ativar Voicemail" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "Não" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Servidor de Envio de mail (SMTP)" - -msgid "SMTP Password" -msgstr "Password SMTP" - -msgid "SMTP Port Number" -msgstr "Porta SMTP" - -msgid "SMTP Server Authentication" -msgstr "Servidor de Autenticação SMTP" - -msgid "SMTP Server Hostname or IP Address" -msgstr "Nome ou Endereço IP do Servidor SMTP" - -msgid "SMTP User Name" -msgstr "Utilizador SMTP" - -msgid "Secure Connection Using TLS" -msgstr "Ligação Segura usando TLS" - -msgid "Voicemail Setup" -msgstr "Configuração do Voicemail" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "Sim" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/ro/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/ro/pbx-voicemail.po deleted file mode 100644 index 42b66f6238..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/ro/pbx-voicemail.po +++ /dev/null @@ -1,89 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2;\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/ru/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/ru/pbx-voicemail.po deleted file mode 100644 index ae49c6dd8f..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/ru/pbx-voicemail.po +++ /dev/null @@ -1,174 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: pbx-voicemail\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2012-08-15 17:42+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "Адрес эл. почты для получения голосовой почты" - -msgid "Enable Voicemail" -msgstr "Включить голосовую почту" - -msgid "Global Voicemail Setup" -msgstr "Глобальные настройки голосовой почты" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" -"Здесь Вы можете настроить голосовую почту АТС. Так как данная система " -"является встраиваемой и предназначена для таких устройств как, например, " -"маршрутизаторы, локальное хранилище голосовой почты отсутствует. Голосовая " -"почта пересылается через электронную почту. Следовательно, вам нужно указать " -"сервер исходящей почты (SMTP) и перечислить адреса, на которые будет " -"пересылаться голосовая почта." - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" -"Чтобы отсылать электронную почту с записями голосовой почты, вам необходимо " -"указать SMTP-сервер. Вы можете использовать SMTP-сервер вашего интернет-" -"провайдера или любой другой, например, SMTP-сервер Google или Yahoo." - -msgid "Last Sent Voicemail Log" -msgstr "Запись журнала последнего отправленного сообщения голосовой почты" - -msgid "Local Storage Directory" -msgstr "Локальная директория хранения" - -msgid "No" -msgstr "Нет" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Сервер исходящей почты (SMTP)" - -msgid "SMTP Password" -msgstr "Пароль SMTP" - -msgid "SMTP Port Number" -msgstr "Номер порта SMTP" - -msgid "SMTP Server Authentication" -msgstr "Аутентификация SMTP-сервера" - -msgid "SMTP Server Hostname or IP Address" -msgstr "Имя SMTP-сервера или IP-адрес" - -msgid "SMTP User Name" -msgstr "Имя пользователя SMTP" - -msgid "Secure Connection Using TLS" -msgstr "Защищенное соединение с использованием TLS" - -msgid "Voicemail Setup" -msgstr "Настройка голосовой почты" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"При включении голосовой почты, у вас будет возможность указать адреса " -"электронной почты, на которые будут отправляться записи голосовой почты. Вы " -"также должны указать SMTP-сервер ниже." - -msgid "Yes" -msgstr "Да" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"Вы также можете сохранять копии сообщений голосовой почты локально на " -"устройстве с запущенной АТС. Указанный здесь путь будет создан в случае его " -"отсутствия. Учитывайте, что пространство для хранения сообщений голосовой " -"почты может быть ограничено вашим устройством." - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"Ваш настоящий пароль SMTP здесь не показан. Он будет изменён только тогда, " -"когда вы измените значение в этом поле." - -#~ msgid "Directory to save voicemail into" -#~ msgstr "Директория для сохранения голосовой почты" - -#~ msgid "Email addresses to forward to" -#~ msgstr "Адрес эл. почты для перенаправления" - -#~ msgid "Enabled" -#~ msgstr "Включено" - -#~ msgid "" -#~ "Here you can configure a global voicemail for this PBX. Since this system " -#~ "is intended to run on embedded systems like routers, there is no local " -#~ "storage of voicemail - it must be sent out by email. Therefore you need " -#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server " -#~ "your ISP provides, or GMail), and provide a list of addresses the " -#~ "voicemail will be sent to." -#~ msgstr "" -#~ "Здесь Вы можете настроить голосовую почту АТС. Так как данная система " -#~ "является встраиваемой и предназначена для таких устройств как, например, " -#~ "маршрутизаторы, локальное хранилище голосовой почты отсутствует. " -#~ "Голосовая почта пересылается через электронную почту. Следовательно, Вам " -#~ "нужно указать сервер (SMTP) исходящей почты и перечислить адреса на " -#~ "которые будет пересылаться голосовая почта." - -#~ msgid "" -#~ "In order for this PBX to send emails containing voicemail recordings, you " -#~ "need to set up an SMTP server here. Your ISP usually provides an SMTP " -#~ "server for that purpose. You can also set up a GMail, Yahoo, or other 3rd " -#~ "party SMTP server." -#~ msgstr "" -#~ "Чтобы отсылать электронную почту с записями голосовой почты, Вам " -#~ "необходимо указать SMTP сервер. Вы можете использовать SMTP сервер вашего " -#~ "интернет провайдера или любой другой, например, SMTP сервер GMail или " -#~ "Yahoo." - -#~ msgid "SMTP port number" -#~ msgstr "Номер порта SMTP" - -#~ msgid "SMTP server authentication" -#~ msgstr "Аутентификация SMTP сервера" - -#~ msgid "SMTP server hostname or IP" -#~ msgstr "Имя SMTP сервера или IP адрес" - -#~ msgid "SMTP user name" -#~ msgstr "Имя пользователя SMTP" - -#~ msgid "Timeout before sending callers to voicemail" -#~ msgstr "Таймаут перед перенаправлением звонящих на голосовую почту" - -#~ msgid "Use TLS (secure connection)" -#~ msgstr "Использовать TLS (защищенное соединение)" - -#~ msgid "" -#~ "When you enable voicemail, you will have the opportunity to specify email " -#~ "addresses which receive the message. You must also set up an SMTP server " -#~ "below." -#~ msgstr "" -#~ "При включении голосовой почты, у Вас будет возможность указать адреса " -#~ "электронной почты на которые будут отправляться записи голосовой почты. " -#~ "Вы также должны указать SMTP сервер ниже." diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/sk/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/sk/pbx-voicemail.po deleted file mode 100644 index c3a5c5ff92..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/sk/pbx-voicemail.po +++ /dev/null @@ -1,88 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/sv/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/sv/pbx-voicemail.po deleted file mode 100644 index 4945538752..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/sv/pbx-voicemail.po +++ /dev/null @@ -1,89 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "E-postadresser som ska ta emot röstbrev" - -msgid "Enable Voicemail" -msgstr "Aktivera röstbrevlåda" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "Lokal lagringsmapp" - -msgid "No" -msgstr "Nej" - -msgid "Outgoing mail (SMTP) Server" -msgstr "Utgående mail (SMTP)-server" - -msgid "SMTP Password" -msgstr "SMTP-lösenord" - -msgid "SMTP Port Number" -msgstr "SMTP-portnummer" - -msgid "SMTP Server Authentication" -msgstr "Autentisering för SMTP-server" - -msgid "SMTP Server Hostname or IP Address" -msgstr "SMTP-servern värdnamn eller IP-adress" - -msgid "SMTP User Name" -msgstr "Användarnamn för SMTP" - -msgid "Secure Connection Using TLS" -msgstr "Säker anslutning med användning av TLS" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "Ja" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/templates/pbx-voicemail.pot b/package/luci/applications/luci-app-pbx-voicemail/po/templates/pbx-voicemail.pot deleted file mode 100644 index 35cdca33ac..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/templates/pbx-voicemail.pot +++ /dev/null @@ -1,81 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/tr/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/tr/pbx-voicemail.po deleted file mode 100644 index 19e26bffa8..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/tr/pbx-voicemail.po +++ /dev/null @@ -1,88 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/uk/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/uk/pbx-voicemail.po deleted file mode 100644 index 565418376a..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/uk/pbx-voicemail.po +++ /dev/null @@ -1,89 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/vi/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/vi/pbx-voicemail.po deleted file mode 100644 index 19e26bffa8..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/vi/pbx-voicemail.po +++ /dev/null @@ -1,88 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "" - -msgid "Enable Voicemail" -msgstr "" - -msgid "Global Voicemail Setup" -msgstr "" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" - -msgid "Last Sent Voicemail Log" -msgstr "" - -msgid "Local Storage Directory" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Outgoing mail (SMTP) Server" -msgstr "" - -msgid "SMTP Password" -msgstr "" - -msgid "SMTP Port Number" -msgstr "" - -msgid "SMTP Server Authentication" -msgstr "" - -msgid "SMTP Server Hostname or IP Address" -msgstr "" - -msgid "SMTP User Name" -msgstr "" - -msgid "Secure Connection Using TLS" -msgstr "" - -msgid "Voicemail Setup" -msgstr "" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/zh-cn/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/zh-cn/pbx-voicemail.po deleted file mode 100644 index 5545c05fc0..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/zh-cn/pbx-voicemail.po +++ /dev/null @@ -1,107 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2017-10-28 16:41+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \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: Gtranslator 2.91.7\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "接收语音邮箱的电子邮箱地址" - -msgid "Enable Voicemail" -msgstr "启用语音邮箱" - -msgid "Global Voicemail Setup" -msgstr "全局语音邮箱设置" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" -"在这里,您可以为 PBX 配置一个全球性的语音邮件。由于这个系统运行在嵌入式系统" -"中,如路由器,这里并无本地语言邮件的储存空间 - 它必须通过电子邮件发送出去。因" -"此,您需要配置一个外发邮件(SMTP)服务器(例如您的 ISP、谷歌或雅虎的 SMTP 服" -"务器),并提供接收记录语音信箱的地址的列表。" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" -"为了这个 PBX 发送包含语音信箱录音的电子邮件,您需要在这里设置一个 SMTP 服务" -"器。您的 ISP 通常会提供一个 SMTP 服务器。您也可以设立一个第三方的 SMTP 服务" -"器,如谷歌或雅虎那样。" - -msgid "Last Sent Voicemail Log" -msgstr "上一次发送语音信箱的日志" - -msgid "Local Storage Directory" -msgstr "本地存储目录" - -msgid "No" -msgstr "不" - -msgid "Outgoing mail (SMTP) Server" -msgstr "电子邮件发送服务器(SMTP)" - -msgid "SMTP Password" -msgstr "SMTP 登录密码" - -msgid "SMTP Port Number" -msgstr "SMTP 端口" - -msgid "SMTP Server Authentication" -msgstr "SMTP 服务器认证" - -msgid "SMTP Server Hostname or IP Address" -msgstr "SMTP 服务器主机名或 IP 地址" - -msgid "SMTP User Name" -msgstr "SMTP 用户名" - -msgid "Secure Connection Using TLS" -msgstr "使用 TLS 安全连接" - -msgid "Voicemail Setup" -msgstr "语音邮箱设置" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"当您启用了语音信箱,您将可以指定接收记录语音信箱的电子邮件地址。您也必须在下" -"面设置 SMTP 服务器。" - -msgid "Yes" -msgstr "是" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"您也可以在您运行 PBX 的设备上保留语音信箱留言的副本。此处指定的路径当不存在" -"时,将会创建。谨防嵌入式设备上有限的存取空间,如路由器,所以此选项只有当您确" -"定用途时才可使用。" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"为了保护您,真正的 SMTP 密码将不会显示。只有当您改变框中的数值时它才会变更。" diff --git a/package/luci/applications/luci-app-pbx-voicemail/po/zh-tw/pbx-voicemail.po b/package/luci/applications/luci-app-pbx-voicemail/po/zh-tw/pbx-voicemail.po deleted file mode 100644 index 8464289997..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/po/zh-tw/pbx-voicemail.po +++ /dev/null @@ -1,107 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2017-10-28 16:41+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" - -msgid "Email Addresses that Receive Voicemail" -msgstr "接收語音郵箱的電子郵箱位址" - -msgid "Enable Voicemail" -msgstr "啟用語音郵箱" - -msgid "Global Voicemail Setup" -msgstr "全域性語音郵箱設定" - -msgid "" -"Here you can configure a global voicemail for this PBX. Since this system is " -"intended to run on embedded systems like routers, there is no local storage " -"of voicemail - it must be sent out by email. Therefore you need to configure " -"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's " -"SMTP server), and provide a list of addresses that receive recorded " -"voicemail." -msgstr "" -"在這裡,您可以為 PBX 配置一個全球性的語音郵件。由於這個系統執行在嵌入式系統" -"中,如路由器,這裡並無本地語言郵件的儲存空間 - 它必須通過電子郵件傳送出去。因" -"此,您需要配置一個外發郵件(SMTP)伺服器(例如您的 ISP、谷歌或雅虎的 SMTP 服" -"務器),並提供接收記錄語音信箱的位址的列表。" - -msgid "" -"In order for this PBX to send emails containing voicemail recordings, you " -"need to set up an SMTP server here. Your ISP usually provides an SMTP server " -"for that purpose. You can also set up a third party SMTP server such as the " -"one provided by Google or Yahoo." -msgstr "" -"為了這個 PBX 傳送包含語音信箱錄音的電子郵件,您需要在這裡設定一個 SMTP 服務" -"器。您的 ISP 通常會提供一個 SMTP 伺服器。您也可以設立一個第三方的 SMTP 服務" -"器,如谷歌或雅虎那樣。" - -msgid "Last Sent Voicemail Log" -msgstr "上一次傳送語音信箱的日誌" - -msgid "Local Storage Directory" -msgstr "本地儲存目錄" - -msgid "No" -msgstr "不" - -msgid "Outgoing mail (SMTP) Server" -msgstr "電子郵件傳送伺服器(SMTP)" - -msgid "SMTP Password" -msgstr "SMTP 登入密碼" - -msgid "SMTP Port Number" -msgstr "SMTP 埠" - -msgid "SMTP Server Authentication" -msgstr "SMTP 伺服器認證" - -msgid "SMTP Server Hostname or IP Address" -msgstr "SMTP 伺服器主機名或 IP 位址" - -msgid "SMTP User Name" -msgstr "SMTP 使用者名稱" - -msgid "Secure Connection Using TLS" -msgstr "使用 TLS 安全連線" - -msgid "Voicemail Setup" -msgstr "語音郵箱設定" - -msgid "" -"When you enable voicemail, you will have the opportunity to specify email " -"addresses that receive recorded voicemail. You must also set up an SMTP " -"server below." -msgstr "" -"當您啟用了語音信箱,您將可以指定接收記錄語音信箱的電子郵件位址。您也必須在下" -"面設定 SMTP 伺服器。" - -msgid "Yes" -msgstr "是" - -msgid "" -"You can also retain copies of voicemail messages on the device running your " -"PBX. The path specified here will be created if it doesn't exist. Beware of " -"limited space on embedded devices like routers, and enable this option only " -"if you know what you are doing." -msgstr "" -"您也可以在您執行 PBX 的裝置上保留語音信箱留言的副本。此處指定的路徑當不存在" -"時,將會建立。謹防嵌入式裝置上有限的存取空間,如路由器,所以此選項只有當您確" -"定用途時才可使用。" - -msgid "" -"Your real SMTP password is not shown for your protection. It will be changed " -"only when you change the value in this box." -msgstr "" -"為了保護您,真正的 SMTP 密碼將不會顯示。只有當您改變框中的數值時它才會變更。" diff --git a/package/luci/applications/luci-app-pbx-voicemail/root/etc/config/pbx-voicemail b/package/luci/applications/luci-app-pbx-voicemail/root/etc/config/pbx-voicemail deleted file mode 100644 index 94e3e96ae8..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/root/etc/config/pbx-voicemail +++ /dev/null @@ -1,6 +0,0 @@ -config 'voicemail' 'global_voicemail' - -config 'voicemail' 'voicemail_smtp' - -config 'voicemail' 'voicemail_log' - diff --git a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-move-greeting b/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-move-greeting deleted file mode 100755 index 21fe69414b..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-move-greeting +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -if [ -f "/tmp/voicemail/greeting.gsm" ] -then - mv /tmp/voicemail/greeting.gsm /etc/pbx-voicemail/recordings/ -fi diff --git a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-auth.TEMPLATE b/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-auth.TEMPLATE deleted file mode 100644 index 6b2026c108..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-auth.TEMPLATE +++ /dev/null @@ -1,2 +0,0 @@ -user |USER| -password |PASSWORD| diff --git a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-default.TEMPLATE b/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-default.TEMPLATE deleted file mode 100644 index a001c64630..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-default.TEMPLATE +++ /dev/null @@ -1,2 +0,0 @@ -account default : defaultacct - diff --git a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account.TEMPLATE b/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account.TEMPLATE deleted file mode 100644 index fd1f47959b..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account.TEMPLATE +++ /dev/null @@ -1,5 +0,0 @@ -account defaultacct -host |HOST| -port |PORT| -from voicemail@pbx - diff --git a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-defaults.TEMPLATE b/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-defaults.TEMPLATE deleted file mode 100644 index a4456b8f87..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-defaults.TEMPLATE +++ /dev/null @@ -1,5 +0,0 @@ -defaults -auth |AUTH| -tls_certcheck off -tls |TLS| - diff --git a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-send-voicemail b/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-send-voicemail deleted file mode 100755 index ba639d01a9..0000000000 --- a/package/luci/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-send-voicemail +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/sh -# -# Copyright 2011 Iordan Iordanov -# -# This file is part of luci-pbx-voicemail. -# -# luci-pbx-voicemail is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# luci-pbx-voicemail is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with luci-pbx-voicemail. If not, see . -# -# -# Thanks to http://www.zedwood.com for providing an excellent example of how to -# properly assemble an email message with a base64 encoded attachment. -# - -LOGFILE=/tmp/voicemail/last_sent_voicemail.log - -# Redirect standard error and standard output to a log file. -rm -f "$LOGFILE" -exec 1>"$LOGFILE" -exec 2>&1 - -# Appends its second argument to a file named in the first argument. -append_to_file () -{ - echo "$2">>$1; -} - -# Grab the attachment name, which should be sent as the first argument, and -# exit with a warning if there is no voicemail to send. -ATTACHMENT="$1" -[ ! -f "$ATTACHMENT" ] && echo "WARNING: Found no voicemail recording to send." && exit - -# Grab the callerID which should have been sent as an argument. -CALLERID="$2" -[ -z "$CALLERID" ] && CALLERID="An unknown caller" - -# Determine addresses we would like to send the voicemail to and exit if none are found. -TO="`uci -q get pbx-voicemail.global_voicemail.global_email_addresses | tr ' ' ','`" -[ -z "$TO" ] && echo "WARNING: Found no addresses to send voicemail to." && exit - -# See whether we should retain a copy of the voicemail. -SAVEPATH="`uci -q get pbx-voicemail.global_voicemail.global_save_path`" - -DATE="`date +%Y-%m-%d`" -TIME="`date +%H:%M:%S`" -FROM="voicemail@pbx" -REPLY="do-not-reply@pbx" -SUBJECT="Voicemail from $CALLERID, $DATE, $TIME" -MSGBODY="$CALLERID has left voicemail for you on $DATE at $TIME." -MIMETYPE="audio/wav" -TMP1="/tmp/voicemail/tmpemail1.$$"; -TMP2="/tmp/voicemail/tmpemail2.$$"; -BOUNDARY="`date +%s | md5sum | awk '{print $1}'`" -FILENAME="voicemail-$DATE-$TIME.WAV" - -# Clean up just in case. -rm -f $TMP1 $TMP2 - -append_to_file $TMP1 "From: $FROM" -append_to_file $TMP1 "To: $TO" -append_to_file $TMP1 "Reply-To: $REPLY" -append_to_file $TMP1 "Subject: $SUBJECT" -append_to_file $TMP1 "Content-Type: multipart/mixed; boundary=\""$BOUNDARY"\"" -append_to_file $TMP1 "" -append_to_file $TMP1 "This is a MIME formatted message. If you see this text it means that your" -append_to_file $TMP1 "email software does not support MIME formatted messages." -append_to_file $TMP1 "" -append_to_file $TMP1 "--$BOUNDARY" -append_to_file $TMP1 "Content-Type: text/plain; charset=ISO-8859-1; format=flowed" -append_to_file $TMP1 "Content-Transfer-Encoding: 7bit" -append_to_file $TMP1 "Content-Disposition: inline" -append_to_file $TMP1 "" -append_to_file $TMP1 "$MSGBODY" -append_to_file $TMP1 "" -append_to_file $TMP1 "" -append_to_file $TMP1 "--$BOUNDARY" -append_to_file $TMP1 "Content-Type: $MIMETYPE; name=\"$FILENAME\"" -append_to_file $TMP1 "Content-Transfer-Encoding: base64" -append_to_file $TMP1 "Content-Disposition: attachment; filename=\"$FILENAME\";" -append_to_file $TMP1 "" - -append_to_file $TMP2 "" -append_to_file $TMP2 "" -append_to_file $TMP2 "--$BOUNDARY--" -append_to_file $TMP2 "" -append_to_file $TMP2 "" - -# Cat everything together and pass to msmtprc to send out. -( cat $TMP1 - cat "$ATTACHMENT" | base64 - cat $TMP2 ) | msmtp -t -C /etc/pbx-msmtprc - -# Clean up email temp files. -rm -f $TMP1 $TMP2 - -# Either delete or move the attachment based on the SAVEPATH variable. -if [ -z "$SAVEPATH" ] -then - rm -f "$ATTACHMENT" -else - mkdir -p "$SAVEPATH" - mv --backup=t "$ATTACHMENT" "$SAVEPATH/$FILENAME" -fi - diff --git a/package/luci/applications/luci-app-pbx/COPYING b/package/luci/applications/luci-app-pbx/COPYING deleted file mode 100644 index 94a9ed024d..0000000000 --- a/package/luci/applications/luci-app-pbx/COPYING +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/package/luci/applications/luci-app-pbx/CREDITS-SOUNDS b/package/luci/applications/luci-app-pbx/CREDITS-SOUNDS deleted file mode 100644 index 1fa64bc6cb..0000000000 --- a/package/luci/applications/luci-app-pbx/CREDITS-SOUNDS +++ /dev/null @@ -1,7 +0,0 @@ -This file pertains to the sounds files included in root/etc/pbx-asterisk/sounds - -Recorded by: -Allison Smith (http://www.theivrvoice.com) - -Financial Contributions by: -Digium, Inc. (http://www.digium.com) diff --git a/package/luci/applications/luci-app-pbx/LICENSE-SOUNDS b/package/luci/applications/luci-app-pbx/LICENSE-SOUNDS deleted file mode 100644 index fe9c8221a2..0000000000 --- a/package/luci/applications/luci-app-pbx/LICENSE-SOUNDS +++ /dev/null @@ -1,312 +0,0 @@ -This file pertains to the sounds files included in root/etc/pbx-asterisk/sounds - -LICENSE FOR VOICE PROMPT FILES ------------------------------- - -The voice prompt files distributed herewith are Copyright (C) 2003-2008 -Allison Smith, and provided under terms of the following License. For -more information, or to purchase custom voice prompt files, please -visit: - -http://www.digium.com/ivr or http://www.theasteriskvoice.com - -LICENSE -------- - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS -CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS -PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE -WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS -PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND -AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS -LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU -THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH -TERMS AND CONDITIONS. - -1. Definitions. - -a. "Collective Work" means a work, such as a periodical issue, -anthology or encyclopedia, in which the Work in its entirety in -unmodified form, along with one or more other contributions, -constituting separate and independent works in themselves, are -assembled into a collective whole. A work that constitutes a -Collective Work will not be considered a Derivative Work (as defined -below) for the purposes of this License. - -b. "Creative Commons Compatible License" means a license that is -listed at http://creativecommons.org/compatiblelicenses that has been -approved by Creative Commons as being essentially equivalent to this -License, including, at a minimum, because that license: (i) contains -terms that have the same purpose, meaning and effect as the License -Elements of this License; and, (ii) explicitly permits the relicensing -of derivatives of works made available under that license under this -License or either a Creative Commons unported license or a Creative -Commons jurisdiction license with the same License Elements as this -License. - -c. "Derivative Work" means a work based upon the Work or upon the Work -and other pre-existing works, such as a translation, musical -arrangement, dramatization, fictionalization, motion picture version, -sound recording, art reproduction, abridgment, condensation, or any -other form in which the Work may be recast, transformed, or adapted, -except that a work that constitutes a Collective Work will not be -considered a Derivative Work for the purpose of this License. For the -avoidance of doubt, where the Work is a musical composition or sound -recording, the synchronization of the Work in timed-relation with a -moving image ("synching") will be considered a Derivative Work for the -purpose of this License. - -d. "License Elements" means the following high-level license -attributes as selected by Licensor and indicated in the title of this -License: Attribution, ShareAlike. - -e. "Licensor" means the individual, individuals, entity or entities -that offers the Work under the terms of this License. - -f. "Original Author" means the individual, individuals, entity or -entities who created the Work. - -g. "Work" means the copyrighted voice prompt files recorded by Allison -Smith for Asterisk and distributed with this License. - -h. "You" means an individual or entity exercising rights under this -License who has not previously violated the terms of this License with -respect to the Work, or who has received express permission from the -Licensor to exercise rights under this License despite a previous -violation. - -2. Fair Use Rights. - -Nothing in this license is intended to reduce, limit, or restrict any -rights arising from fair use, first sale or other limitations on the -exclusive rights of the copyright owner under copyright law or other -applicable laws. - -3. License Grant. - -Subject to the terms and conditions of this License, Licensor hereby -grants You a worldwide, royalty-free, non-exclusive, perpetual (for -the duration of the applicable copyright) license to exercise the -rights in the Work as stated below: - -a. to reproduce the Work, to incorporate the Work into one or more -Collective Works, and to reproduce the Work as incorporated in the -Collective Works; - -b. to create and reproduce Derivative Works provided that any such -Derivative Work, including any translation in any medium, takes -reasonable steps to clearly label, demarcate or otherwise identify -that changes were made to the original Work. For example, a -translation could be marked "The original work was translated from -English to Spanish," or a modification could indicate "The original -work has been modified."; - -c. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio -transmission the Work including as incorporated in Collective Works; - -d. to distribute copies or phonorecords of, display publicly, perform -publicly, and perform publicly by means of a digital audio -transmission Derivative Works. - -e. For the avoidance of doubt, where the Work is a musical -composition: - - i. Performance Royalties Under Blanket Licenses. Licensor waives the - exclusive right to collect, whether individually or, in the event - that Licensor is a member of a performance rights society - (e.g. ASCAP, BMI, SESAC), via that society, royalties for the public - performance or public digital performance e.g. webcast) of the Work. - - ii.Mechanical Rights and Statutory Royalties. Licensor waives the - exclusive right to collect, whether individually or via a music - rights agency or designated agent (e.g. Harry Fox Agency), royalties - for any phonorecord You create from the Work ("cover version") and - distribute, subject to the compulsory license created by 17 USC - Section 115 of the US Copyright Act (or the equivalent in other - jurisdictions). - -f. Webcasting Rights and Statutory Royalties. For the avoidance of -doubt, where the Work is a sound recording, Licensor waives the -exclusive right to collect, whether individually or via a -performance-rights society (e.g. SoundExchange), royalties for the -public digital performance (e.g. webcast) of the Work, subject to the -compulsory license created by 17 USC Section 114 of the US Copyright -Act (or the equivalent in other jurisdictions). - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights -in other media and formats. All rights not expressly granted by -Licensor are hereby reserved. - -4. Restrictions. - -The license granted in Section 3 above is expressly made subject to -and limited by the following restrictions: - -a. You may distribute, publicly display, publicly perform, or publicly -digitally perform the Work only under the terms of this License, and -You must include a copy of, or the Uniform Resource Identifier for, -this License with every copy or phonorecord of the Work You -distribute, publicly display, publicly perform, or publicly digitally -perform. You may not offer or impose any terms on the Work that -restrict the terms of this License or the ability of a recipient of -the Work to exercise of the rights granted to that recipient under the -terms of the License. You may not sublicense the Work. You must keep -intact all notices that refer to this License and to the disclaimer of -warranties. When You distribute, publicly display, publicly perform, -or publicly digitally perform the Work, You may not impose any -technological measures on the Work that restrict the ability of a -recipient of the Work from You to exercise of the rights granted to -that recipient under the terms of the License. This Section 4(a) -applies to the Work as incorporated in a Collective Work, but this -does not require the Collective Work apart from the Work itself to be -made subject to the terms of this License. If You create a Collective -Work, upon notice from any Licensor You must, to the extent -practicable, remove from the Collective Work any credit as required by -Section 4(c), as requested. If You create a Derivative Work, upon -notice from any Licensor You must, to the extent practicable, remove -from the Derivative Work any credit as required by Section 4(c), as -requested. - -b. You may distribute, publicly display, publicly perform, or publicly -digitally perform a Derivative Work only under: (i) the terms of this -License; (ii) a later version of this License with the same License -Elements as this License; (iii) either the Creative Commons (Unported) -license or a Creative Commons jurisdiction license (either this or a -later license version) that contains the same License Elements as this -License (e.g. Attribution-ShareAlike 3.0 (Unported)); (iv) a Creative -Commons Compatible License. If you license the Derivative Work under -one of the licenses mentioned in (iv), you must comply with the terms -of that license. If you license the Derivative Work under the terms of -any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable -License"), you must comply with the terms of the Applicable License -generally and with the following provisions: (I) You must include a -copy of, or the Uniform Resource Identifier for, the Applicable -License with every copy or phonorecord of each Derivative Work You -distribute, publicly display, publicly perform, or publicly digitally -perform; (II) You may not offer or impose any terms on the Derivative -Works that restrict the terms of the Applicable License or the ability -of a recipient of the Work to exercise the rights granted to that -recipient under the terms of the Applicable License; (III) You must -keep intact all notices that refer to the Applicable License and to -the disclaimer of warranties; and, (IV) when You distribute, publicly -display, publicly perform, or publicly digitally perform the Work, You -may not impose any technological measures on the Derivative Work that -restrict the ability of a recipient of the Derivative Work from You to -exercise the rights granted to that recipient under the terms of the -Applicable License. This Section 4(b) applies to the Derivative Work -as incorporated in a Collective Work, but this does not require the -Collective Work apart from the Derivative Work itself to be made -subject to the terms of the Applicable License. - -c. If You distribute, publicly display, publicly perform, or publicly -digitally perform the Work (as defined in Section 1 above) or any -Derivative Works (as defined in Section 1 above) or Collective Works -(as defined in Section 1 above), You must, unless a request has been -made pursuant to Section 4(a), keep intact all copyright notices for -the Work and provide, reasonable to the medium or means You are -utilizing: (i) the name of the Original Author (or pseudonym, if -applicable) if supplied, and/or (ii) if the Original Author and/or -Licensor designate another party or parties (e.g. a sponsor institute, -publishing entity, journal) for attribution ("Attribution Parties") in -Licensor's copyright notice, terms of service or by other reasonable -means, the name of such party or parties; the title of the Work if -supplied; to the extent reasonably practicable, the Uniform Resource -Identifier, if any, that Licensor specifies to be associated with the -Work, unless such URI does not refer to the copyright notice or -licensing information for the Work; and, consistent with Section 3(b) -in the case of a Derivative Work, a credit identifying the use of the -Work in the Derivative Work (e.g., "French translation of the Work by -Original Author," or "Screenplay based on original Work by Original -Author"). The credit required by this Section 4(c) may be implemented -in any reasonable manner; provided, however, that in the case of a -Derivative Work or Collective Work, at a minimum such credit will -appear, if a credit for all contributing authors of the Derivative -Work or Collective Work appears, then as part of these credits and in -a manner at least as prominent as the credits for the other -contributing authors. For the avoidance of doubt, You may only use the -credit required by this Section for the purpose of attribution in the -manner set out above and, by exercising Your rights under this -License, You may not implicitly or explicitly assert or imply any -connection with, sponsorship or endorsement by the Original Author, -Licensor and/or Attribution Parties, as appropriate, of You or Your -use of the Work, without the separate, express prior written -permission of the Original Author, Licensor and/or Attribution -Parties. - -5. Representations, Warranties and Disclaimer. - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, -LICENSOR OFFERS THE WORK AS-IS AND ONLY TO THE EXTENT OF ANY RIGHTS -HELD IN THE LICENSED WORK BY THE LICENSOR. THE LICENSOR MAKES NO -REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, -EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT -LIMITATION, WARRANTIES OF TITLE, MARKETABILITY, MERCHANTIBILITY, -FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF -LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF -ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW -THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY -TO YOU. - -6. Limitation on Liability. - -EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL -LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, -INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT -OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN -ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination. - -a. This License and the rights granted hereunder will terminate -automatically upon any breach by You of the terms of this -License. Individuals or entities who have received Derivative Works or -Collective Works from You under this License, however, will not have -their licenses terminated provided such individuals or entities remain -in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 -will survive any termination of this License. - -b. Subject to the above terms and conditions, the license granted here -is perpetual (for the duration of the applicable copyright in the -Work). Notwithstanding the above, Licensor reserves the right to -release the Work under different license terms or to stop distributing -the Work at any time; provided, however that any such election will -not serve to withdraw this License (or any other license that has -been, or is required to be, granted under the terms of this License), -and this License will continue in full force and effect unless -terminated as stated above. - -8. Miscellaneous. - -a. Each time You distribute or publicly digitally perform the Work (as -defined in Section 1 above) or a Collective Work (as defined in -Section 1 above), the Licensor offers to the recipient a license to -the Work on the same terms and conditions as the license granted to -You under this License. - -b. Each time You distribute or publicly digitally perform a Derivative -Work, Licensor offers to the recipient a license to the original Work -on the same terms and conditions as the license granted to You under -this License. - -c. If any provision of this License is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of -the remainder of the terms of this License, and without further action -by the parties to this agreement, such provision shall be reformed to -the minimum extent necessary to make such provision valid and -enforceable. - -d. No term or provision of this License shall be deemed waived and no -breach consented to unless such waiver or consent shall be in writing -and signed by the party to be charged with such waiver or consent. - -e. This License constitutes the entire agreement between the parties -with respect to the Work licensed here. There are no understandings, -agreements or representations with respect to the Work not specified -here. Licensor shall not be bound by any additional provisions that -may appear in any communication from You. This License may not be -modified without the mutual written agreement of the Licensor and You. diff --git a/package/luci/applications/luci-app-pbx/Makefile b/package/luci/applications/luci-app-pbx/Makefile deleted file mode 100644 index 772713b444..0000000000 --- a/package/luci/applications/luci-app-pbx/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI PBX Administration -LUCI_DEPENDS:= @BROKEN \ - +asterisk18 +asterisk18-app-authenticate +asterisk18-app-disa \ - +asterisk18-app-setcallerid +asterisk18-app-system +asterisk18-chan-gtalk \ - +asterisk18-codec-a-mu +asterisk18-codec-alaw +asterisk18-func-cut \ - +asterisk18-res-clioriginate +asterisk18-func-channel +asterisk18-chan-local \ - +asterisk18-app-record +asterisk18-app-senddtmf +asterisk18-res-crypto - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-pbx/luasrc/controller/pbx.lua b/package/luci/applications/luci-app-pbx/luasrc/controller/pbx.lua deleted file mode 100644 index b77814b150..0000000000 --- a/package/luci/applications/luci-app-pbx/luasrc/controller/pbx.lua +++ /dev/null @@ -1,29 +0,0 @@ ---[[ - Copyright 2011 Iordan Iordanov - - This file is part of luci-pbx. - - luci-pbx is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - luci-pbx is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with luci-pbx. If not, see . -]]-- - -module("luci.controller.pbx", package.seeall) - -function index() - entry({"admin", "services", "pbx"}, cbi("pbx"), "PBX", 80) - entry({"admin", "services", "pbx", "pbx-google"}, cbi("pbx-google"), "Google Accounts", 1) - entry({"admin", "services", "pbx", "pbx-voip"}, cbi("pbx-voip"), "SIP Accounts", 2) - entry({"admin", "services", "pbx", "pbx-users"}, cbi("pbx-users"), "User Accounts", 3) - entry({"admin", "services", "pbx", "pbx-calls"}, cbi("pbx-calls"), "Call Routing", 4) - entry({"admin", "services", "pbx", "pbx-advanced"}, cbi("pbx-advanced"), "Advanced Settings", 6) -end diff --git a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-advanced.lua b/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-advanced.lua deleted file mode 100644 index 34288c6632..0000000000 --- a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-advanced.lua +++ /dev/null @@ -1,293 +0,0 @@ ---[[ - Copyright 2011 Iordan Iordanov - - This file is part of luci-pbx. - - luci-pbx is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - luci-pbx is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with luci-pbx. If not, see . -]]-- - -if nixio.fs.access("/etc/init.d/asterisk") then - server = "asterisk" -elseif nixio.fs.access("/etc/init.d/freeswitch") then - server = "freeswitch" -else - server = "" -end - -appname = "PBX" -modulename = "pbx-advanced" -defaultbindport = 5060 -defaultrtpstart = 19850 -defaultrtpend = 19900 - --- Returns all the network related settings, including a constructed RTP range -function get_network_info() - externhost = m.uci:get(modulename, "advanced", "externhost") - ipaddr = m.uci:get("network", "lan", "ipaddr") - bindport = m.uci:get(modulename, "advanced", "bindport") - rtpstart = m.uci:get(modulename, "advanced", "rtpstart") - rtpend = m.uci:get(modulename, "advanced", "rtpend") - - if bindport == nil then bindport = defaultbindport end - if rtpstart == nil then rtpstart = defaultrtpstart end - if rtpend == nil then rtpend = defaultrtpend end - - if rtpstart == nil or rtpend == nil then - rtprange = nil - else - rtprange = rtpstart .. "-" .. rtpend - end - - return bindport, rtprange, ipaddr, externhost -end - --- If not present, insert empty rules in the given config & section named PBX-SIP and PBX-RTP -function insert_empty_sip_rtp_rules(config, section) - - -- Add rules named PBX-SIP and PBX-RTP if not existing - found_sip_rule = false - found_rtp_rule = false - m.uci:foreach(config, section, - function(s1) - if s1._name == 'PBX-SIP' then - found_sip_rule = true - elseif s1._name == 'PBX-RTP' then - found_rtp_rule = true - end - end) - - if found_sip_rule ~= true then - newrule=m.uci:add(config, section) - m.uci:set(config, newrule, '_name', 'PBX-SIP') - end - if found_rtp_rule ~= true then - newrule=m.uci:add(config, section) - m.uci:set(config, newrule, '_name', 'PBX-RTP') - end -end - --- Delete rules in the given config & section named PBX-SIP and PBX-RTP -function delete_sip_rtp_rules(config, section) - - -- Remove rules named PBX-SIP and PBX-RTP - commit = false - m.uci:foreach(config, section, - function(s1) - if s1._name == 'PBX-SIP' or s1._name == 'PBX-RTP' then - m.uci:delete(config, s1['.name']) - commit = true - end - end) - - -- If something changed, then we commit the config. - if commit == true then m.uci:commit(config) end -end - --- Deletes QoS rules associated with this PBX. -function delete_qos_rules() - delete_sip_rtp_rules ("qos", "classify") -end - - -function insert_qos_rules() - -- Insert empty PBX-SIP and PBX-RTP rules if not present. - insert_empty_sip_rtp_rules ("qos", "classify") - - -- Get the network information - bindport, rtprange, ipaddr, externhost = get_network_info() - - -- Iterate through the QoS rules, and if there is no other rule with the same port - -- range at the priority service level, insert this rule. - commit = false - m.uci:foreach("qos", "classify", - function(s1) - if s1._name == 'PBX-SIP' then - if s1.ports ~= bindport or s1.target ~= "Priority" or s1.proto ~= "udp" then - m.uci:set("qos", s1['.name'], "ports", bindport) - m.uci:set("qos", s1['.name'], "proto", "udp") - m.uci:set("qos", s1['.name'], "target", "Priority") - commit = true - end - elseif s1._name == 'PBX-RTP' then - if s1.ports ~= rtprange or s1.target ~= "Priority" or s1.proto ~= "udp" then - m.uci:set("qos", s1['.name'], "ports", rtprange) - m.uci:set("qos", s1['.name'], "proto", "udp") - m.uci:set("qos", s1['.name'], "target", "Priority") - commit = true - end - end - end) - - -- If something changed, then we commit the qos config. - if commit == true then m.uci:commit("qos") end -end - --- This function is a (so far) unsuccessful attempt to manipulate the firewall rules from here --- Need to do more testing and eventually move to this mode. -function maintain_firewall_rules() - -- Get the network information - bindport, rtprange, ipaddr, externhost = get_network_info() - - commit = false - -- Only if externhost is set, do we control firewall rules. - if externhost ~= nil and bindport ~= nil and rtprange ~= nil then - -- Insert empty PBX-SIP and PBX-RTP rules if not present. - insert_empty_sip_rtp_rules ("firewall", "rule") - - -- Iterate through the firewall rules, and if the dest_port and dest_ip setting of the\ - -- SIP and RTP rule do not match what we want configured, set all the entries in the rule\ - -- appropriately. - m.uci:foreach("firewall", "rule", - function(s1) - if s1._name == 'PBX-SIP' then - if s1.dest_port ~= bindport then - m.uci:set("firewall", s1['.name'], "dest_port", bindport) - m.uci:set("firewall", s1['.name'], "src", "wan") - m.uci:set("firewall", s1['.name'], "proto", "udp") - m.uci:set("firewall", s1['.name'], "target", "ACCEPT") - commit = true - end - elseif s1._name == 'PBX-RTP' then - if s1.dest_port ~= rtprange then - m.uci:set("firewall", s1['.name'], "dest_port", rtprange) - m.uci:set("firewall", s1['.name'], "src", "wan") - m.uci:set("firewall", s1['.name'], "proto", "udp") - m.uci:set("firewall", s1['.name'], "target", "ACCEPT") - commit = true - end - end - end) - else - -- We delete the firewall rules if one or more of the necessary parameters are not set. - sip_rule_name=nil - rtp_rule_name=nil - - -- First discover the configuration names of the rules. - m.uci:foreach("firewall", "rule", - function(s1) - if s1._name == 'PBX-SIP' then - sip_rule_name = s1['.name'] - elseif s1._name == 'PBX-RTP' then - rtp_rule_name = s1['.name'] - end - end) - - -- Then, using the names, actually delete the rules. - if sip_rule_name ~= nil then - m.uci:delete("firewall", sip_rule_name) - commit = true - end - if rtp_rule_name ~= nil then - m.uci:delete("firewall", rtp_rule_name) - commit = true - end - end - - -- If something changed, then we commit the firewall config. - if commit == true then m.uci:commit("firewall") end -end - -m = Map (modulename, translate("Advanced Settings"), - translate("This section contains settings that do not need to be changed under \ - normal circumstances. In addition, here you can configure your system \ - for use with remote SIP devices, and resolve call quality issues by enabling \ - the insertion of QoS rules.")) - --- Recreate the voip server config, and restart necessary services after changes are commited --- to the advanced configuration. The firewall must restart because of "Remote Usage". -function m.on_after_commit(self) - - -- Make sure firewall rules are in place - maintain_firewall_rules() - - -- If insertion of QoS rules is enabled - if m.uci:get(modulename, "advanced", "qos_enabled") == "yes" then - insert_qos_rules() - else - delete_qos_rules() - end - - luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null") - luci.sys.call("/etc/init.d/" .. server .. " restart 1\>/dev/null 2\>/dev/null") - luci.sys.call("/etc/init.d/firewall restart 1\>/dev/null 2\>/dev/null") -end - ------------------------------------------------------------------------------ -s = m:section(NamedSection, "advanced", "settings", translate("Advanced Settings")) -s.anonymous = true - -s:tab("general", translate("General Settings")) -s:tab("remote_usage", translate("Remote Usage"), - translatef("You can use your SIP devices/softphones with this system from a remote location \ - as well, as long as your Internet Service Provider gives you a public IP. \ - You will be able to call other local users for free (e.g. other Analog Telephone Adapters (ATAs)) \ - and use your VoIP providers to make calls as if you were local to the PBX. \ - After configuring this tab, go back to where users are configured and see the new \ - Server and Port setting you need to configure the remote SIP devices with. Please note that if this \ - PBX is not running on your router/gateway, you will need to configure port forwarding (NAT) on your \ - router/gateway. Please forward the ports below (SIP port and RTP range) to the IP address of the \ - device running this PBX.")) - -s:tab("qos", translate("QoS Settings"), - translate("If you experience jittery or high latency audio during heavy downloads, you may want \ - to enable QoS. QoS prioritizes traffic to and from your network for specified ports and IP \ - addresses, resulting in better latency and throughput for sound in our case. If enabled below, \ - a QoS rule for this service will be configured by the PBX automatically, but you must visit the \ - QoS configuration page (Network->QoS) to configure other critical QoS settings like Download \ - and Upload speed.")) - -ringtime = s:taboption("general", Value, "ringtime", translate("Number of Seconds to Ring"), - translate("Set the number of seconds to ring users upon incoming calls before hanging up \ - or going to voicemail, if the voicemail is installed and enabled.")) -ringtime.datatype = "port" -ringtime.default = 30 - -ua = s:taboption("general", Value, "useragent", translate("User Agent String"), - translate("This is the name that the VoIP server will use to identify itself when \ - registering to VoIP (SIP) providers. Some providers require this to a specific \ - string matching a hardware SIP device.")) -ua.default = appname - -h = s:taboption("remote_usage", Value, "externhost", translate("Domain/IP Address/Dynamic Domain"), - translate("You can enter your domain name, external IP address, or dynamic domain name here. \ - The best thing to input is a static IP address. If your IP address is dynamic and it changes, \ - your configuration will become invalid. Hence, it's recommended to set up Dynamic DNS in this case. \ - and enter your Dynamic DNS hostname here. You can configure Dynamic DNS with the luci-app-ddns package.")) -h.datatype = "host(0)" - -p = s:taboption("remote_usage", Value, "bindport", translate("External SIP Port"), - translate("Pick a random port number between 6500 and 9500 for the service to listen on. \ - Do not pick the standard 5060, because it is often subject to brute-force attacks. \ - When finished, (1) click \"Save and Apply\", and (2) look in the \ - \"SIP Device/Softphone Accounts\" section for updated Server and Port settings \ - for your SIP Devices/Softphones.")) -p.datatype = "port" - -p = s:taboption("remote_usage", Value, "rtpstart", translate("RTP Port Range Start"), - translate("RTP traffic carries actual voice packets. This is the start of the port range \ - that will be used for setting up RTP communication. It's usually OK to leave this \ - at the default value.")) -p.datatype = "port" -p.default = defaultrtpstart - -p = s:taboption("remote_usage", Value, "rtpend", translate("RTP Port Range End")) -p.datatype = "port" -p.default = defaultrtpend - -p = s:taboption("qos", ListValue, "qos_enabled", translate("Insert QoS Rules")) -p:value("yes", translate("Yes")) -p:value("no", translate("No")) -p.default = "yes" - -return m diff --git a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-calls.lua b/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-calls.lua deleted file mode 100644 index ca373d63a3..0000000000 --- a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-calls.lua +++ /dev/null @@ -1,424 +0,0 @@ ---[[ - Copyright 2011 Iordan Iordanov - - This file is part of luci-pbx. - - luci-pbx is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - luci-pbx is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with luci-pbx. If not, see . -]]-- - -if nixio.fs.access("/etc/init.d/asterisk") then - server = "asterisk" -elseif nixio.fs.access("/etc/init.d/freeswitch") then - server = "freeswitch" -else - server = "" -end - -modulename = "pbx-calls" -voipmodulename = "pbx-voip" -googlemodulename = "pbx-google" -usersmodulename = "pbx-users" -allvalidaccounts = {} -nallvalidaccounts = 0 -validoutaccounts = {} -nvalidoutaccounts = 0 -validinaccounts = {} -nvalidinaccounts = 0 -allvalidusers = {} -nallvalidusers = 0 -validoutusers = {} -nvalidoutusers = 0 - - --- Checks whether the entered extension is valid syntactically. -function is_valid_extension(exten) - return (exten:match("[#*+0-9NXZ]+$") ~= nil) -end - - -m = Map (modulename, translate("Call Routing"), - translate("This is where you indicate which Google/SIP accounts are used to call what \ - country/area codes, which users can use what SIP/Google accounts, how incoming \ - calls are routed, what numbers can get into this PBX with a password, and what \ - numbers are blacklisted.")) - --- Recreate the config, and restart services after changes are commited to the configuration. -function m.on_after_commit(self) - luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null") - luci.sys.call("/etc/init.d/" .. server .. " restart 1\>/dev/null 2\>/dev/null") -end - --- Add Google accounts to all valid accounts, and accounts valid for incoming and outgoing calls. -m.uci:foreach(googlemodulename, "gtalk_jabber", - function(s1) - -- Add this provider to list of valid accounts. - if s1.username ~= nil and s1.name ~= nil then - allvalidaccounts[s1.name] = s1.username - nallvalidaccounts = nallvalidaccounts + 1 - - if s1.make_outgoing_calls == "yes" then - -- Add provider to the associative array of valid outgoing accounts. - validoutaccounts[s1.name] = s1.username - nvalidoutaccounts = nvalidoutaccounts + 1 - end - - if s1.register == "yes" then - -- Add provider to the associative array of valid outgoing accounts. - validinaccounts[s1.name] = s1.username - nvalidinaccounts = nvalidinaccounts + 1 - end - end - end) - --- Add SIP accounts to all valid accounts, and accounts valid for incoming and outgoing calls. -m.uci:foreach(voipmodulename, "voip_provider", - function(s1) - -- Add this provider to list of valid accounts. - if s1.defaultuser ~= nil and s1.host ~= nil and s1.name ~= nil then - allvalidaccounts[s1.name] = s1.defaultuser .. "@" .. s1.host - nallvalidaccounts = nallvalidaccounts + 1 - - if s1.make_outgoing_calls == "yes" then - -- Add provider to the associative array of valid outgoing accounts. - validoutaccounts[s1.name] = s1.defaultuser .. "@" .. s1.host - nvalidoutaccounts = nvalidoutaccounts + 1 - end - - if s1.register == "yes" then - -- Add provider to the associative array of valid outgoing accounts. - validinaccounts[s1.name] = s1.defaultuser .. "@" .. s1.host - nvalidinaccounts = nvalidinaccounts + 1 - end - end - end) - --- Add Local User accounts to all valid users, and users allowed to make outgoing calls. -m.uci:foreach(usersmodulename, "local_user", - function(s1) - -- Add user to list of all valid users. - if s1.defaultuser ~= nil then - allvalidusers[s1.defaultuser] = true - nallvalidusers = nallvalidusers + 1 - - if s1.can_call == "yes" then - validoutusers[s1.defaultuser] = true - nvalidoutusers = nvalidoutusers + 1 - end - end - end) - - ----------------------------------------------------------------------------------------------------- --- If there are no accounts configured, or no accounts enabled for outgoing calls, display a warning. --- Otherwise, display the usual help text within the section. -if nallvalidaccounts == 0 then - text = translate("NOTE: There are no Google or SIP provider accounts configured.") -elseif nvalidoutaccounts == 0 then - text = translate("NOTE: There are no Google or SIP provider accounts enabled for outgoing calls.") -else - text = translate("If you have more than one account that can make outgoing calls, you \ - should enter a list of phone numbers and/or prefixes in the following fields for each \ - provider listed. Invalid prefixes are removed silently, and only 0-9, X, Z, N, #, *, \ - and + are valid characters. The letter X matches 0-9, Z matches 1-9, and N matches 2-9. \ - For example to make calls to Germany through a provider, you can enter 49. To make calls \ - to North America, you can enter 1NXXNXXXXXX. If one of your providers can make \"local\" \ - calls to an area code like New York's 646, you can enter 646NXXXXXX for that \ - provider. You should leave one account with an empty list to make calls with \ - it by default, if no other provider's prefixes match. The system will automatically \ - replace an empty list with a message that the provider dials all numbers not matched by another \ - provider's prefixes. Be as specific as possible (i.e. 1NXXNXXXXXX is better than 1). Please note \ - all international dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a \ - space-separated list, and/or one per line by hitting enter after every one.") -end - - -s = m:section(NamedSection, "outgoing_calls", "call_routing", translate("Outgoing Calls"), text) -s.anonymous = true - -for k,v in pairs(validoutaccounts) do - patterns = s:option(DynamicList, k, v) - - -- If the saved field is empty, we return a string - -- telling the user that this provider would dial any exten. - function patterns.cfgvalue(self, section) - value = self.map:get(section, self.option) - - if value == nil then - return {translate("Dials numbers unmatched elsewhere")} - else - return value - end - end - - -- Write only valid extensions into the config file. - function patterns.write(self, section, value) - newvalue = {} - nindex = 1 - for index, field in ipairs(value) do - val = luci.util.trim(value[index]) - if is_valid_extension(val) == true then - newvalue[nindex] = val - nindex = nindex + 1 - end - end - DynamicList.write(self, section, newvalue) - end -end - ----------------------------------------------------------------------------------------------------- --- If there are no accounts configured, or no accounts enabled for incoming calls, display a warning. --- Otherwise, display the usual help text within the section. -if nallvalidaccounts == 0 then - text = translate("NOTE: There are no Google or SIP provider accounts configured.") -elseif nvalidinaccounts == 0 then - text = translate("NOTE: There are no Google or SIP provider accounts enabled for incoming calls.") -else - text = translate("For each provider enabled for incoming calls, here you can restrict which users to\ - ring on incoming calls. If the list is empty, the system will indicate that all users \ - enabled for incoming calls will ring. Invalid usernames will be rejected \ - silently. Also, entering a username here overrides the user's setting to not receive \ - incoming calls. This way, you can make certain users ring only for specific providers. \ - Entries can be made in a space-separated list, and/or one per line by hitting enter after \ - every one.") -end - - -s = m:section(NamedSection, "incoming_calls", "call_routing", translate("Incoming Calls"), text) -s.anonymous = true - -for k,v in pairs(validinaccounts) do - users = s:option(DynamicList, k, v) - - -- If the saved field is empty, we return a string telling the user that - -- this provider would ring all users configured for incoming calls. - function users.cfgvalue(self, section) - value = self.map:get(section, self.option) - - if value == nil then - return {translate("Rings users enabled for incoming calls")} - else - return value - end - end - - -- Write only valid user names. - function users.write(self, section, value) - newvalue = {} - nindex = 1 - for index, field in ipairs(value) do - trimuser = luci.util.trim(value[index]) - if allvalidusers[trimuser] == true then - newvalue[nindex] = trimuser - nindex = nindex + 1 - end - end - DynamicList.write(self, section, newvalue) - end -end - - ----------------------------------------------------------------------------------------------------- --- If there are no user accounts configured, no user accounts enabled for outgoing calls, --- display a warning. Otherwise, display the usual help text within the section. -if nallvalidusers == 0 then - text = translate("NOTE: There are no local user accounts configured.") -elseif nvalidoutusers == 0 then - text = translate("NOTE: There are no local user accounts enabled for outgoing calls.") -else - text = translate("For each user enabled for outgoing calls you can restrict what providers the user \ - can use for outgoing calls. By default all users can use all providers. To show up in the list \ - below the user should be allowed to make outgoing calls in the \"User Accounts\" page. Enter VoIP \ - providers in the format username@some.host.name, as listed in \"Outgoing Calls\" above. It's \ - easiest to copy and paste the providers from above. Invalid entries, including providers not \ - enabled for outgoing calls, will be rejected silently. Entries can be made in a space-separated \ - list, and/or one per line by hitting enter after every one.") -end - - -s = m:section(NamedSection, "providers_user_can_use", "call_routing", - translate("Providers Used for Outgoing Calls"), text) -s.anonymous = true - -for k,v in pairs(validoutusers) do - providers = s:option(DynamicList, k, k) - - -- If the saved field is empty, we return a string telling the user - -- that this user uses all providers enavled for outgoing calls. - function providers.cfgvalue(self, section) - value = self.map:get(section, self.option) - - if value == nil then - return {translate("Uses providers enabled for outgoing calls")} - else - newvalue = {} - -- Convert internal names to user@host values. - for i,v in ipairs(value) do - newvalue[i] = validoutaccounts[v] - end - return newvalue - end - end - - -- Cook the new values prior to entering them into the config file. - -- Also, enter them only if they are valid. - function providers.write(self, section, value) - cookedvalue = {} - cindex = 1 - for index, field in ipairs(value) do - cooked = string.gsub(luci.util.trim(value[index]), "%W", "_") - if validoutaccounts[cooked] ~= nil then - cookedvalue[cindex] = cooked - cindex = cindex + 1 - end - end - DynamicList.write(self, section, cookedvalue) - end -end - ----------------------------------------------------------------------------------------------------- -s = m:section(TypedSection, "callthrough_numbers", translate("Call-through Numbers"), - translate("Designate numbers that are allowed to call through this system and which user's \ - privileges they will have.")) -s.anonymous = true -s.addremove = true - -num = s:option(DynamicList, "callthrough_number_list", translate("Call-through Numbers"), - translate("Specify numbers individually here. Press enter to add more numbers. \ - You will have to experiment with what country and area codes you need to add \ - to the number.")) -num.datatype = "uinteger" - -p = s:option(ListValue, "enabled", translate("Enabled")) -p:value("yes", translate("Yes")) -p:value("no", translate("No")) -p.default = "yes" - -user = s:option(Value, "defaultuser", translate("User Name"), - translate("The number(s) specified above will be able to dial out with this user's providers. \ - Invalid usernames, including users not enabled for outgoing calls, are dropped silently. \ - Please verify that the entry was accepted.")) -function user.write(self, section, value) - trimuser = luci.util.trim(value) - if allvalidusers[trimuser] == true then - Value.write(self, section, trimuser) - end -end - -pwd = s:option(Value, "pin", translate("PIN"), - translate("Your PIN disappears when saved for your protection. It will be changed \ - only when you enter a value different from the saved one. Leaving the PIN \ - empty is possible, but please beware of the security implications.")) -pwd.password = true -pwd.rmempty = false - --- We skip reading off the saved value and return nothing. -function pwd.cfgvalue(self, section) - return "" -end - --- We check the entered value against the saved one, and only write if the entered value is --- something other than the empty string, and it differes from the saved value. -function pwd.write(self, section, value) - local orig_pwd = m:get(section, self.option) - if value and #value > 0 and orig_pwd ~= value then - Value.write(self, section, value) - end -end - ----------------------------------------------------------------------------------------------------- -s = m:section(TypedSection, "callback_numbers", translate("Call-back Numbers"), - translate("Designate numbers to whom the system will hang up and call back, which provider will \ - be used to call them, and which user's privileges will be granted to them.")) -s.anonymous = true -s.addremove = true - -num = s:option(DynamicList, "callback_number_list", translate("Call-back Numbers"), - translate("Specify numbers individually here. Press enter to add more numbers. \ - You will have to experiment with what country and area codes you need to add \ - to the number.")) -num.datatype = "uinteger" - -p = s:option(ListValue, "enabled", translate("Enabled")) -p:value("yes", translate("Yes")) -p:value("no", translate("No")) -p.default = "yes" - -delay = s:option(Value, "callback_hangup_delay", translate("Hang-up Delay"), - translate("How long to wait before hanging up. If the provider you use to dial automatically forwards \ - to voicemail, you can set this value to a delay that will allow you to hang up before your call gets \ - forwarded and you get billed for it.")) -delay.datatype = "uinteger" -delay.default = 0 - -user = s:option(Value, "defaultuser", translate("User Name"), - translate("The number(s) specified above will be able to dial out with this user's providers. \ - Invalid usernames, including users not enabled for outgoing calls, are dropped silently. \ - Please verify that the entry was accepted.")) -function user.write(self, section, value) - trimuser = luci.util.trim(value) - if allvalidusers[trimuser] == true then - Value.write(self, section, trimuser) - end -end - -pwd = s:option(Value, "pin", translate("PIN"), - translate("Your PIN disappears when saved for your protection. It will be changed \ - only when you enter a value different from the saved one. Leaving the PIN \ - empty is possible, but please beware of the security implications.")) -pwd.password = true -pwd.rmempty = false - --- We skip reading off the saved value and return nothing. -function pwd.cfgvalue(self, section) - return "" -end - --- We check the entered value against the saved one, and only write if the entered value is --- something other than the empty string, and it differes from the saved value. -function pwd.write(self, section, value) - local orig_pwd = m:get(section, self.option) - if value and #value > 0 and orig_pwd ~= value then - Value.write(self, section, value) - end -end - -provider = s:option(Value, "callback_provider", translate("Call-back Provider"), - translate("Enter a VoIP provider to use for call-back in the format username@some.host.name, as listed in \ - \"Outgoing Calls\" above. It's easiest to copy and paste the providers from above. Invalid entries, including \ - providers not enabled for outgoing calls, will be rejected silently.")) -function provider.write(self, section, value) - cooked = string.gsub(luci.util.trim(value), "%W", "_") - if validoutaccounts[cooked] ~= nil then - Value.write(self, section, value) - end -end - ----------------------------------------------------------------------------------------------------- -s = m:section(NamedSection, "blacklisting", "call_routing", translate("Blacklisted Numbers"), - translate("Enter phone numbers that you want to decline calls from automatically. \ - You should probably omit the country code and any leading zeroes, but please \ - experiment to make sure you are blocking numbers from your desired area successfully.")) -s.anonymous = true - -b = s:option(DynamicList, "blacklist1", translate("Dynamic List of Blacklisted Numbers"), - translate("Specify numbers individually here. Press enter to add more numbers.")) -b.cast = "string" -b.datatype = "uinteger" - -b = s:option(Value, "blacklist2", translate("Space-Separated List of Blacklisted Numbers"), - translate("Copy-paste large lists of numbers here.")) -b.template = "cbi/tvalue" -b.rows = 3 - -return m diff --git a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-google.lua b/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-google.lua deleted file mode 100644 index 3c36a168d9..0000000000 --- a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-google.lua +++ /dev/null @@ -1,122 +0,0 @@ ---[[ - Copyright 2011 Iordan Iordanov - - This file is part of luci-pbx. - - luci-pbx is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - luci-pbx is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with luci-pbx. If not, see . -]]-- - -if nixio.fs.access("/etc/init.d/asterisk") then - server = "asterisk" -elseif nixio.fs.access("/etc/init.d/freeswitch") then - server = "freeswitch" -else - server = "" -end - -modulename = "pbx-google" -googlemodulename = "pbx-google" -defaultstatus = "dnd" -defaultstatusmessage = "PBX online, may lose messages" - -m = Map (modulename, translate("Google Accounts"), - translate("This is where you set up your Google (Talk and Voice) Accounts, in order to start \ - using them for dialing and receiving calls (voice chat and real phone calls). Please \ - make at least one voice call using the Google Talk plugin installable through the \ - GMail interface, and then log out from your account everywhere. Click \"Add\" \ - to add as many accounts as you wish.")) - --- Recreate the config, and restart services after changes are commited to the configuration. -function m.on_after_commit(self) - -- Create a field "name" for each account that identifies the account in the backend. - commit = false - m.uci:foreach(modulename, "gtalk_jabber", - function(s1) - if s1.username ~= nil then - name=string.gsub(s1.username, "%W", "_") - if s1.name ~= name then - m.uci:set(modulename, s1['.name'], "name", name) - commit = true - end - end - end) - if commit == true then m.uci:commit(modulename) end - - luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null") - luci.sys.call("/etc/init.d/asterisk restart 1\>/dev/null 2\>/dev/null") -end - ------------------------------------------------------------------------------ -s = m:section(TypedSection, "gtalk_jabber", translate("Google Voice/Talk Accounts")) -s.anonymous = true -s.addremove = true - -s:option(Value, "username", translate("Email")) - -pwd = s:option(Value, "secret", translate("Password"), - translate("When your password is saved, it disappears from this field and is not displayed \ - for your protection. The previously saved password will be changed only when you \ - enter a value different from the saved one.")) -pwd.password = true -pwd.rmempty = false - --- We skip reading off the saved value and return nothing. -function pwd.cfgvalue(self, section) - return "" -end - --- We check the entered value against the saved one, and only write if the entered value is --- something other than the empty string, and it differes from the saved value. -function pwd.write(self, section, value) - local orig_pwd = m:get(section, self.option) - if value and #value > 0 and orig_pwd ~= value then - Value.write(self, section, value) - end -end - - -p = s:option(ListValue, "register", - translate("Enable Incoming Calls (set Status below)"), - translate("When somebody starts voice chat with your GTalk account or calls the GVoice, \ - number (if you have Google Voice), the call will be forwarded to any users \ - that are online (registered using a SIP device or softphone) and permitted to \ - receive the call. If you have Google Voice, you must go to your GVoice settings and \ - forward calls to Google chat in order to actually receive calls made to your \ - GVoice number. If you have trouble receiving calls from GVoice, experiment \ - with the Call Screening option in your GVoice Settings. Finally, make sure no other \ - client is online with this account (browser in gmail, mobile/desktop Google Talk \ - App) as it may interfere.")) -p:value("yes", translate("Yes")) -p:value("no", translate("No")) -p.default = "yes" - -p = s:option(ListValue, "make_outgoing_calls", translate("Enable Outgoing Calls"), - translate("Use this account to make outgoing calls as configured in the \"Call Routing\" section.")) -p:value("yes", translate("Yes")) -p:value("no", translate("No")) -p.default = "yes" - -st = s:option(ListValue, "status", translate("Google Talk Status")) -st:depends("register", "yes") -st:value("dnd", translate("Do Not Disturb")) -st:value("away", translate("Away")) -st:value("available", translate("Available")) -st.default = defaultstatus - -stm = s:option(Value, "statusmessage", translate("Google Talk Status Message"), - translate("Avoid using anything but alpha-numeric characters, space, comma, and period.")) -stm:depends("register", "yes") -stm.default = defaultstatusmessage - -return m diff --git a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-users.lua b/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-users.lua deleted file mode 100644 index c7c8b4d8bb..0000000000 --- a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-users.lua +++ /dev/null @@ -1,133 +0,0 @@ ---[[ - Copyright 2011 Iordan Iordanov - - This file is part of luci-pbx. - - luci-pbx is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - luci-pbx is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with luci-pbx. If not, see . -]]-- - -if nixio.fs.access("/etc/init.d/asterisk") then - server = "asterisk" -elseif nixio.fs.access("/etc/init.d/freeswitch") then - server = "freeswitch" -else - server = "" -end - -modulename = "pbx-users" -modulenamecalls = "pbx-calls" -modulenameadvanced = "pbx-advanced" - - -m = Map (modulename, translate("User Accounts"), - translate("Here you must configure at least one SIP account, that you \ - will use to register with this service. Use this account either in an Analog Telephony \ - Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid on your \ - smartphone, or Ekiga, Linphone, or X-Lite on your computer. By default, all SIP accounts \ - will ring simultaneously if a call is made to one of your VoIP provider accounts or GV \ - numbers.")) - --- Recreate the config, and restart services after changes are commited to the configuration. -function m.on_after_commit(self) - luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null") - luci.sys.call("/etc/init.d/" .. server .. " restart 1\>/dev/null 2\>/dev/null") -end - -externhost = m.uci:get(modulenameadvanced, "advanced", "externhost") -bindport = m.uci:get(modulenameadvanced, "advanced", "bindport") -ipaddr = m.uci:get("network", "lan", "ipaddr") - ------------------------------------------------------------------------------ -s = m:section(NamedSection, "server", "user", translate("Server Setting")) -s.anonymous = true - -if ipaddr == nil or ipaddr == "" then - ipaddr = "(IP address not static)" -end - -if bindport ~= nil then - just_ipaddr = ipaddr - ipaddr = ipaddr .. ":" .. bindport -end - -s:option(DummyValue, "ipaddr", translate("Server Setting for Local SIP Devices"), - translate("Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices you will \ - use ONLY locally and never from a remote location.")).default = ipaddr - -if externhost ~= nil then - if bindport ~= nil then - just_externhost = externhost - externhost = externhost .. ":" .. bindport - end - s:option(DummyValue, "externhost", translate("Server Setting for Remote SIP Devices"), - translate("Enter this hostname (or hostname:port) in the Server/Registrar setting of SIP \ - devices you will use from a remote location (they will work locally too).") - ).default = externhost -end - -if bindport ~= nil then - s:option(DummyValue, "bindport", translate("Port Setting for SIP Devices"), - translatef("If setting Server/Registrar to %s or %s does not work for you, try setting \ - it to %s or %s and entering this port number in a separate field that specifies the \ - Server/Registrar port number. Beware that some devices have a confusing \ - setting that sets the port where SIP requests originate from on the SIP \ - device itself (the bind port). The port specified on this page is NOT this bind port \ - but the port this service listens on.", - ipaddr, externhost, just_ipaddr, just_externhost)).default = bindport -end - ------------------------------------------------------------------------------ -s = m:section(TypedSection, "local_user", translate("SIP Device/Softphone Accounts")) -s.anonymous = true -s.addremove = true - -s:option(Value, "fullname", translate("Full Name"), - translate("You can specify a real name to show up in the Caller ID here.")) - -du = s:option(Value, "defaultuser", translate("User Name"), - translate("Use (four to five digit) numeric user name if you are connecting normal telephones \ - with ATAs to this system (so they can dial user names).")) -du.datatype = "uciname" - -pwd = s:option(Value, "secret", translate("Password"), - translate("Your password disappears when saved for your protection. It will be changed \ - only when you enter a value different from the saved one.")) -pwd.password = true -pwd.rmempty = false - --- We skip reading off the saved value and return nothing. -function pwd.cfgvalue(self, section) - return "" -end - --- We check the entered value against the saved one, and only write if the entered value is --- something other than the empty string, and it differes from the saved value. -function pwd.write(self, section, value) - local orig_pwd = m:get(section, self.option) - if value and #value > 0 and orig_pwd ~= value then - Value.write(self, section, value) - end -end - -p = s:option(ListValue, "ring", translate("Receives Incoming Calls")) -p:value("yes", translate("Yes")) -p:value("no", translate("No")) -p.default = "yes" - -p = s:option(ListValue, "can_call", translate("Makes Outgoing Calls")) -p:value("yes", translate("Yes")) -p:value("no", translate("No")) -p.default = "yes" - -return m diff --git a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-voip.lua b/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-voip.lua deleted file mode 100644 index 9b46202855..0000000000 --- a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx-voip.lua +++ /dev/null @@ -1,116 +0,0 @@ ---[[ - Copyright 2011 Iordan Iordanov - - This file is part of luci-pbx. - - luci-pbx is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - luci-pbx is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with luci-pbx. If not, see . -]]-- - -if nixio.fs.access("/etc/init.d/asterisk") then - server = "asterisk" -elseif nixio.fs.access("/etc/init.d/freeswitch") then - server = "freeswitch" -else - server = "" -end - -modulename = "pbx-voip" - -m = Map (modulename, translate("SIP Accounts"), - translate("This is where you set up your SIP (VoIP) accounts ts like Sipgate, SipSorcery, \ - the popular Betamax providers, and any other providers with SIP settings in order to start \ - using them for dialing and receiving calls (SIP uri and real phone calls). Click \"Add\" to \ - add as many accounts as you wish.")) - --- Recreate the config, and restart services after changes are commited to the configuration. -function m.on_after_commit(self) - commit = false - -- Create a field "name" for each account that identifies the account in the backend. - m.uci:foreach(modulename, "voip_provider", - function(s1) - if s1.defaultuser ~= nil and s1.host ~= nil then - name=string.gsub(s1.defaultuser.."_"..s1.host, "%W", "_") - if s1.name ~= name then - m.uci:set(modulename, s1['.name'], "name", name) - commit = true - end - end - end) - if commit == true then m.uci:commit(modulename) end - - luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null") - luci.sys.call("/etc/init.d/" .. server .. " restart 1\>/dev/null 2\>/dev/null") -end - ------------------------------------------------------------------------------ -s = m:section(TypedSection, "voip_provider", translate("SIP Provider Accounts")) -s.anonymous = true -s.addremove = true - -s:option(Value, "defaultuser", translate("User Name")) -pwd = s:option(Value, "secret", translate("Password"), - translate("When your password is saved, it disappears from this field and is not displayed \ - for your protection. The previously saved password will be changed only when you \ - enter a value different from the saved one.")) - - - -pwd.password = true -pwd.rmempty = false - --- We skip reading off the saved value and return nothing. -function pwd.cfgvalue(self, section) - return "" -end - --- We check the entered value against the saved one, and only write if the entered value is --- something other than the empty string, and it differes from the saved value. -function pwd.write(self, section, value) - local orig_pwd = m:get(section, self.option) - if value and #value > 0 and orig_pwd ~= value then - Value.write(self, section, value) - end -end - -h = s:option(Value, "host", translate("SIP Server/Registrar")) -h.datatype = "host(0)" - -p = s:option(ListValue, "register", translate("Enable Incoming Calls (Register via SIP)"), - translate("This option should be set to \"Yes\" if you have a DID \(real telephone number\) \ - associated with this SIP account or want to receive SIP uri calls through this \ - provider.")) -p:value("yes", translate("Yes")) -p:value("no", translate("No")) -p.default = "yes" - -p = s:option(ListValue, "make_outgoing_calls", translate("Enable Outgoing Calls"), - translate("Use this account to make outgoing calls.")) -p:value("yes", translate("Yes")) -p:value("no", translate("No")) -p.default = "yes" - -from = s:option(Value, "fromdomain", - translate("SIP Realm (needed by some providers)")) -from.optional = true -from.datatype = "host(0)" - -port = s:option(Value, "port", translate("SIP Server/Registrar Port")) -port.optional = true -port.datatype = "port" - -op = s:option(Value, "outboundproxy", translate("Outbound Proxy")) -op.optional = true -op.datatype = "host(0)" - -return m diff --git a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx.lua b/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx.lua deleted file mode 100644 index 4c5fcbdecd..0000000000 --- a/package/luci/applications/luci-app-pbx/luasrc/model/cbi/pbx.lua +++ /dev/null @@ -1,115 +0,0 @@ ---[[ - Copyright 2011 Iordan Iordanov - - This file is part of luci-pbx. - - luci-pbx is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - luci-pbx is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with luci-pbx. If not, see . -]]-- - -modulename = "pbx" - - -if nixio.fs.access("/etc/init.d/asterisk") then - server = "asterisk" -elseif nixio.fs.access("/etc/init.d/freeswitch") then - server = "freeswitch" -else - server = "" -end - - --- Returns formatted output of string containing only the words at the indices --- specified in the table "indices". -function format_indices(string, indices) - if indices == nil then - return "Error: No indices to format specified.\n" - end - - -- Split input into separate lines. - lines = luci.util.split(luci.util.trim(string), "\n") - - -- Split lines into separate words. - splitlines = {} - for lpos,line in ipairs(lines) do - splitlines[lpos] = luci.util.split(luci.util.trim(line), "%s+", nil, true) - end - - -- For each split line, if the word at all indices specified - -- to be formatted are not null, add the formatted line to the - -- gathered output. - output = "" - for lpos,splitline in ipairs(splitlines) do - loutput = "" - for ipos,index in ipairs(indices) do - if splitline[index] ~= nil then - loutput = loutput .. string.format("%-40s", splitline[index]) - else - loutput = nil - break - end - end - - if loutput ~= nil then - output = output .. loutput .. "\n" - end - end - return output -end - - -m = Map (modulename, translate("PBX Main Page"), - translate("This configuration page allows you to configure a phone system (PBX) service which \ - permits making phone calls through multiple Google and SIP (like Sipgate, \ - SipSorcery, and Betamax) accounts and sharing them among many SIP devices. \ - Note that Google accounts, SIP accounts, and local user accounts are configured in the \ - \"Google Accounts\", \"SIP Accounts\", and \"User Accounts\" sub-sections. \ - You must add at least one User Account to this PBX, and then configure a SIP device or \ - softphone to use the account, in order to make and receive calls with your Google/SIP \ - accounts. Configuring multiple users will allow you to make free calls between all users, \ - and share the configured Google and SIP accounts. If you have more than one Google and SIP \ - accounts set up, you should probably configure how calls to and from them are routed in \ - the \"Call Routing\" page. If you're interested in using your own PBX from anywhere in the \ - world, then visit the \"Remote Usage\" section in the \"Advanced Settings\" page.")) - ------------------------------------------------------------------------------------------ -s = m:section(NamedSection, "connection_status", "main", - translate("PBX Service Status")) -s.anonymous = true - -s:option (DummyValue, "status", translate("Service Status")) - -sts = s:option(DummyValue, "_sts") -sts.template = "cbi/tvalue" -sts.rows = 20 - -function sts.cfgvalue(self, section) - - if server == "asterisk" then - regs = luci.sys.exec("asterisk -rx 'sip show registry' | sed 's/peer-//'") - jabs = luci.sys.exec("asterisk -rx 'jabber show connections' | grep onnected") - usrs = luci.sys.exec("asterisk -rx 'sip show users'") - chan = luci.sys.exec("asterisk -rx 'core show channels'") - - return format_indices(regs, {1, 5}) .. - format_indices(jabs, {2, 4}) .. "\n" .. - format_indices(usrs, {1} ) .. "\n" .. chan - - elseif server == "freeswitch" then - return "Freeswitch is not supported yet.\n" - else - return "Neither Asterisk nor FreeSwitch discovered, please install Asterisk, as Freeswitch is not supported yet.\n" - end -end - -return m diff --git a/package/luci/applications/luci-app-pbx/po/ca/pbx.po b/package/luci/applications/luci-app-pbx/po/ca/pbx.po deleted file mode 100644 index c8a0a9967e..0000000000 --- a/package/luci/applications/luci-app-pbx/po/ca/pbx.po +++ /dev/null @@ -1,509 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-01 05:14+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Ajusts avançats" - -msgid "Available" -msgstr "Disponible" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" -"Eviteu utilitzar res excepte caràcters alfanumèrics, espai, coma, i punt." - -msgid "Away" -msgstr "Fora" - -msgid "Blacklisted Numbers" -msgstr "Nombres prohibits" - -msgid "Call Routing" -msgstr "Encaminament de trucades" - -msgid "Call-back Numbers" -msgstr "Nombres de trucada de tornada" - -msgid "Call-back Provider" -msgstr "Proveïdor de trucada de tornada" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "Copieu i enganxeu llistes grans de nombres aquí." - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" -"Designeu els nombres que es permeten trucar a través d'aquest sistema i els " -"privilegis de qual usuari tindran." - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" -"Designeu els nombres als quals el sistema penjarà i trucarà de tornada, qual " -"proveïdor s'emprarà per a trucar-los, i els privilegis de qual usuari se " -"lis concedirà." - -msgid "Dials numbers unmatched elsewhere" -msgstr "Truca els nombres que no coincideixen d'altra manera" - -msgid "Do Not Disturb" -msgstr "No molestis" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Habilita trucades entrants (registreu via SIP)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "Habilita trucades entrants (establiu l'Estat a baix)" - -msgid "Enable Outgoing Calls" -msgstr "Habilita trucades sortints" - -msgid "Enabled" -msgstr "Habilitat" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "Port SIP extern" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "Nom complet" - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "Google Accounts" -msgstr "Comptes de Google" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "Retard de penja" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" -"Quant temps per a esperar abans de penjar. Si el proveïdor que empreu per a " -"trucar automàticament redirigeix al correu de veu, podeu estableix aquest " -"valor a un retard que us permet penjar abans que la teva trucada es " -"redirigeixi i s'us cobri per ella." - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "Trucades entrants" - -msgid "Insert QoS Rules" -msgstr "Insereix regles QoS" - -msgid "Makes Outgoing Calls" -msgstr "Fa trucades sortints" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "NOTA: No hi ha cap compte configurat ni del Google ni de proveïdor SIP." - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" -"NOTA: No hi ha cap compte habilitat ni del Google ni de proveïdor SIP per " -"als trucades entrants." - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" -"NOTA: No hi ha cap compte habilitat ni del Google ni de proveïdor SIP per " -"als trucades sortints." - -msgid "NOTE: There are no local user accounts configured." -msgstr "NOTA: No hi ha cap compte d'usuari local configurat." - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" -"NOTA: No hi ha cap compte d'usuari local habilitat per als trucades " -"sortints." - -msgid "No" -msgstr "No" - -msgid "Number of Seconds to Ring" -msgstr "Nombre de segons a sonar" - -msgid "Outbound Proxy" -msgstr "Servidor intermediari de sortida" - -msgid "Outgoing Calls" -msgstr "Trucades sortints" - -msgid "PBX Main Page" -msgstr "Pàgina principal PBX" - -msgid "PBX Service Status" -msgstr "Estat del servei PBX" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "Contrasenya" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "Ajust de port per als dispositius SIP" - -msgid "Providers Used for Outgoing Calls" -msgstr "Proveïdors utilitzats per als trucades sortints" - -msgid "QoS Settings" -msgstr "Ajusts QoS" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "Rep trucades entrants" - -msgid "Remote Usage" -msgstr "Ús remot" - -msgid "Rings users enabled for incoming calls" -msgstr "Truca als usuaris habilitats per a rebre trucades" - -msgid "SIP Accounts" -msgstr "Comptes SIP" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "Comptes de proveïdor SIP" - -msgid "SIP Realm (needed by some providers)" -msgstr "Regne SIP (necessitat per alguns proveïdors)" - -msgid "SIP Server/Registrar" -msgstr "Servidor/Registrador SIP" - -msgid "SIP Server/Registrar Port" -msgstr "Port del Servidor/Registrador SIP" - -msgid "Server Setting" -msgstr "Ajust de servidor" - -msgid "Server Setting for Local SIP Devices" -msgstr "Ajust de servidor pels dispositius SIP locals" - -msgid "Server Setting for Remote SIP Devices" -msgstr "Ajust de servidor pels dispositius SIP remots" - -msgid "Service Status" -msgstr "Estat de servei" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" -"Estableix el nombre de segons per a sonar als usuaris abans de penjar o anar " -"al correu de veu, si el correu de veu està instal·lat i habilitat." - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "Llista de nombres prohibits separats per espai" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" -"Especifiqueu els nombres individualment aquí. Premeu Enter per afegir més " -"nombres." - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" -"Utilitza aquest compte per fer trucades sortints com configurat en la secció " -"\"Encaminament de trucades\"." - -msgid "Use this account to make outgoing calls." -msgstr "Utilitza aquest compte per fer trucades sortints." - -msgid "User Accounts" -msgstr "Comptes d'usuari" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "Nom d'usuari" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "Sí" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/cs/pbx.po b/package/luci/applications/luci-app-pbx/po/cs/pbx.po deleted file mode 100644 index 8b69ef15d8..0000000000 --- a/package/luci/applications/luci-app-pbx/po/cs/pbx.po +++ /dev/null @@ -1,487 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-12 20:19+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Pokročilé nastavení" - -msgid "Available" -msgstr "Dostupné" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "Pryč" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "Nevyrušovat" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "Email" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Povolit příchozí hovory (Registrace přes SIP)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "Povolit odchozí hovory" - -msgid "Enabled" -msgstr "Povoleno" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "Externí SIP port" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "Celé jméno (jméno a příjmení)" - -msgid "General Settings" -msgstr "Obecné nastavení" - -msgid "Google Accounts" -msgstr "Google účty" - -msgid "Google Talk Status" -msgstr "Stav Google Talk" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "Google Voice/Talk účty" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "Příchozí volání" - -msgid "Insert QoS Rules" -msgstr "Vložte QoS pravidla" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "Ne" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "Odchozí volání" - -msgid "PBX Main Page" -msgstr "Hlavní stránka PBX" - -msgid "PBX Service Status" -msgstr "Stav PBX služby" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "Heslo" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "Nastavení QoS" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "SIP účty" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "Stav služby" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "Uživatelské účty" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "Uživatelské jméno" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "Ano" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/de/pbx.po b/package/luci/applications/luci-app-pbx/po/de/pbx.po deleted file mode 100644 index 3bc4bd428e..0000000000 --- a/package/luci/applications/luci-app-pbx/po/de/pbx.po +++ /dev/null @@ -1,699 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-30 18:17+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Available" -msgstr "Verfügbar" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "Nur alphanumerische Zeichen, Komma, Punkt und Leerzeichen verwenden" - -msgid "Away" -msgstr "Abwesend" - -msgid "Blacklisted Numbers" -msgstr "Nicht erlaubte Nummern (Blacklist)" - -msgid "Call Routing" -msgstr "Anrufweiterleitung" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "Durchwahl Nummern" - -msgid "Copy-paste large lists of numbers here." -msgstr "Hier können per Copy & Paste größere Nummernlisten eingefügt werden." - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "Wählt Nummern an, für die es keine andere Übereinstimmung gibt" - -msgid "Do Not Disturb" -msgstr "Beschäftigt" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "Domäne/IP-Adresse/Dynamische Domäne" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "Dynamische Liste nicht erlaubter Nummern (Dynamische Blacklist)" - -msgid "Email" -msgstr "E-Mail" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Eingehende Anrufe akzeptieren (registrieren via SIP)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "Eingehende Anrufe akzeptieren (Status unten einstellen)" - -msgid "Enable Outgoing Calls" -msgstr "Ausgehende Anrufe aktivieren" - -msgid "Enabled" -msgstr "Aktiv" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" -"Geben Sie Telefonnummern ein, von denen Anrufe automatisch zurückgewiesen " -"werden sollen. Sie sollten die Ländervorwahl und alle führenden Nullen " -"weglassen, aber experimentieren Sie ruhig, damit Sie auch wirklich alle " -"Nummern blockieren, die blockiert werden sollen." - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" -"Geben SIe diese IP (oder IP:Port) in der Server-/Registrar-Einstellung der " -"SIP-Geräte an, die Sie NUR local und niemals von einem entfernten Ort " -"einsetzen werden." - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" -"Geben SIe diese IP (oder IP:Port) in der Server-/Registrar-Einstellung der " -"SIP-Geräte an, die Sie von einem entfernten Ort einsetzen werden (sie " -"funktionieren auch lokal)." - -msgid "External SIP Port" -msgstr "Externer SIP Port" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" -"Hier können Sie für jeden Dienstanbieter, der für eingehende Anrufe " -"eingerichtet ist, festlegen, welche Nutzer ein Klingelzeichen bei " -"eingehenden Anrufen erhalten. Ist die Liste leer, klingelt es bei allen " -"Nutzern, die eingehende Anrufe empfangen dürfen. Ungültige Benutzernamen " -"werden ohne Fehlermeldung zurückgewiesen. Außerdem überschreibt der Eintrag " -"eines Benutzernamens an dieser Stelle die evtl. vorhandene Einstellung für " -"diesen Benutzer, keine eingehenden Anrufe zu erhalten. Auf diese Weise kann " -"eingestellt werden, dass die Nutzer nur bei bestimmten Dienstanbietern ein " -"Klingelzeichen erhalten. Einträge in dieser Liste können entweder durch " -"Leerzeichen getrennt oder als ein Eintrag pro Zeile (Eingabetaste nach jedem " -"Eintrag) eingegeben werden." - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" -"Hier können Sie für jeden Benutzer, der für abgehende Anrufe eingerichtet " -"ist, festlegen, welche Dienstanbieter verwendet werden dürfen. In der " -"Voreinstellung dürfen alle Benutzer auch alle Dienstanbieter verwenden. Um " -"in der Liste unten aufzutauchen, sollte dem Benutzer auf der Seite " -"\"Benutzerkonten\" erlaubt werden, abgehende Anrufe machen zu dürfen. Geben " -"Sie VoIP-Dienstanbieter im Format Benutzername@Servername an, wie bereits " -"oben unter \"Abgehende Anrufe\". Am einfachsten kopieren Sie die " -"Dienstanbieter von dort und fügen sie hier wieder ein. Ungültige Einträge, " -"einschließlich nicht für abgehende Anrufe zugelassene Dienstanbieter, werden " -"ohne Fehlermeldung zurückgewiesen. Einträge in dieser Liste können entweder " -"durch Leerzeichen getrennt und/oder als ein Eintrag pro Zeile (Eingabetaste " -"nach jedem Eintrag) eingegeben werden." - -msgid "Full Name" -msgstr "Vollständiger Name" - -msgid "General Settings" -msgstr "Allgemeine Einstellungen" - -msgid "Google Accounts" -msgstr "Google-Konten" - -msgid "Google Talk Status" -msgstr "Status für Google Talk" - -msgid "Google Talk Status Message" -msgstr "Statusbenachrichtigung für Google Talk" - -msgid "Google Voice/Talk Accounts" -msgstr "Google Voice/Talk-Konten" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" -"Hier müssen Sie wenigstens ein SIP-Konto angeben, welches Sie zur Anmeldung " -"an diesen Dienst nutzen. Verwenden Sie dieses Konto entweder in einem " -"Adapter für analoges Telefonieren (ATA) oder einer SIP-Software wie " -"CSipSimple, Linphone, oder Sipdroid auf Ihrem Smartphone, oder Ekiga, " -"Linphone, oder X-Lite auf Ihrem Computer. In der Voreinstellung klingeln " -"alle SIP-Konten gleichzeitig, wenn ein Anruf auf eines Ihrer VoIP-Konten " -"oder Ihre GV-Nummern gemacht wird." - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" -"Wenn EInstellen des Servers/Registrars auf %s oder %s bei Ihnen nicht " -"funktioniert, versuchen Sie die Einstellung %s oder %s und geben Sie die " -"Portnummer in ein separates Feld für Server/Registrat-Portnummer ein. " -"Achtung: Einige Geräte haben eine verwirrende Einstellung, die den Port " -"setzt, von dem die SIP-Anfragen auf dem Gerät selbst herkommen (der Bindungs-" -"Port). Der Port auf dieser Seite meint NICHT diesen Bindungs-Port, sondern " -"den Port, an dem der Dienst lauscht." - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" -"Wenn Sie stotternden oder stark verzögerten Ton während großer Downloads " -"haben, sollten Sie QoS einschalten. QoS priorisiert Verkehr von und zu Ihrem " -"Netzwerk für bestimmte Ports und IP-Adressen mit dem Ergebnis einer besseren " -"Tonübertragung in unserem Fall. Wenn unten eingeschaltet, wird eine QoS-" -"Regel automatisch vom PBX eingerichtet, aber Sie müssen die QoS-" -"Konfigurationsseite (Netzwerk->QoS) aufrufen, um andere kritische QoS-" -"Einstellungen wie Upload-und Download-Geschwindigkeit vorzunehmen." - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" -"Wenn Sie mehr als ein Konto für abgehende Anrufe haben, sollten Sie eine " -"Liste von Telefonnummern/Vorwahlen in den folgenden Feldern für jeden " -"aufgeführten Dienstanbieter eintragen. Ungültige Vorwahlen werden ohne " -"Fehlermeldung entfernt, nur 0-9, X, Z, N, #, *, und + sind gültige Zeichen. " -"Der Buchstabe X entspricht 0-9, Z entrpricht 1-9, N entspricht 2-9. Zum " -"Beispiel können Sie 49 eingeben, um Anrufe nach Deutschland über einen " -"Dienstanbieter zu tätigen. Für Anrufe nach Nordamerika geben Sie 1NXXNXXXXXX " -"an. Unterstützt ein Dienstanbieter Ortsgespräche, wie im Gebiet 646 von New " -"York, geben Sie 646NXXXXXX für diesen Anbieter ein. Ein Konto sollte eine " -"leere Liste behalten, damit Sie darüber standardmäßig Anrufe tätigen können, " -"wenn keine der Vorwahlen für die anderen Anbieter übereinstimmt. Das System " -"ersetzt eine leere Liste automatisch mit dem Eintrag, dass dieser Anbieter " -"alle Vorwahlen unterstützt, die von den anderen Anbietern nicht unterstützt " -"werden. Seien Sie so spezifisch wie möglich (1NXXNXXXXXX ist besser als 1). " -"Bitte beachten Sie, dass alle internationalen Vorwahl-Codes (wie 00, 011, " -"010, 0011) verworfen werden. Einträge können durch Leezeichen getrennt und/" -"oder einzeln pro Zeile (Abschließen mit Eingabe-Taste) eingegeben werden." - -msgid "Incoming Calls" -msgstr "Eingehende Anrufe" - -msgid "Insert QoS Rules" -msgstr "QoS-Regeln einfügen" - -msgid "Makes Outgoing Calls" -msgstr "Macht ausgehende Anrufe" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" -"ACHTUNG: Es sind keine Konten für Google oder einen SIP-Dienstanbieter " -"eingerichtet." - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" -"ACHTUNG: Es sind keine Konten für Google oder einen SIP-Dienstanbieter für " -"eingehende Anrufe eingerichtet." - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" -"ACHTUNG: Es sind keine Konten für Google oder einen SIP-Dienstanbieter für " -"abgehende Anrufe eingerichtet." - -msgid "NOTE: There are no local user accounts configured." -msgstr "ACHTUNG: Es sind keine lokalen Benutzerkonten eingerichtet." - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" -"ACHTUNG: Es sind keine lokalen Benutzerkonten für abgehende Anrufe " -"eingerichtet." - -msgid "No" -msgstr "Nein" - -msgid "Number of Seconds to Ring" -msgstr "Dauer des Klingelns in Sekunden" - -msgid "Outbound Proxy" -msgstr "Proxy für ausgehende Verbindungen" - -msgid "Outgoing Calls" -msgstr "Abgehende Anrufe" - -msgid "PBX Main Page" -msgstr "PBX-Hauptseite" - -msgid "PBX Service Status" -msgstr "PBX-Dienststatus" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "Passwort" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "Port-Einstellung für SIP-Geräte" - -msgid "Providers Used for Outgoing Calls" -msgstr "Provider für abgehende Anrufe" - -msgid "QoS Settings" -msgstr "QoS Einstellungen" - -msgid "RTP Port Range End" -msgstr "Ende des RTP-Port-Bereichs" - -msgid "RTP Port Range Start" -msgstr "Anfang des RTP-Port-Bereichs" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" -"RTP-Verkehr überträgt die aktuellen Sprachpakete. Dies ist der Anfang des " -"Port-Bereichs, der für die Einrichtung der RTP-Verbindung verwendet wird. " -"Normalerweise kann hier die Voreinstellung belassen werden." - -msgid "Receives Incoming Calls" -msgstr "Empfängt eingehende Anrufe" - -msgid "Remote Usage" -msgstr "Benutzung aus der Ferne" - -msgid "Rings users enabled for incoming calls" -msgstr "Für eingehende Anrufe freigeschaltete Nutzer erhalten Klingelzeichen" - -msgid "SIP Accounts" -msgstr "SIP-Konten" - -msgid "SIP Device/Softphone Accounts" -msgstr "SIP-Geräte-/Softphone-Konten" - -msgid "SIP Provider Accounts" -msgstr "SIP-Dienstanbieter-Konten" - -msgid "SIP Realm (needed by some providers)" -msgstr "SIP-Bereich (von manchen Dienstanbietern benötigt)" - -msgid "SIP Server/Registrar" -msgstr "SIP-Server/Registrar" - -msgid "SIP Server/Registrar Port" -msgstr "SIP-Server/Registrar Port" - -msgid "Server Setting" -msgstr "Servereinstellung" - -msgid "Server Setting for Local SIP Devices" -msgstr "Servereinstellung für lokale SIP-Geräte" - -msgid "Server Setting for Remote SIP Devices" -msgstr "Servereinstellung für entfernte SIP-Geräte" - -msgid "Service Status" -msgstr "Dienst-Status" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" -"Stellen Sie ein (in Sekunden), wie lange es bei den Benutzern klingeln soll, " -"bevor aufgelegt oder zur Voicemail (falls installiert und aktiv) " -"übergegangen wird. " - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "Mit Leerzeichen unterteilte Liste gesperrter Nummern" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" -"Geben Sie die Nummern hier einzeln an. Drücken Sie Eingabe, um weitere " -"Nummern hinzuzufügen." - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" -"Die oben angegebene(n) Nummer(n) können für ausgehende Anrufe mit den " -"Dienstanbietern dieses Nutzers verwendet werden. Ungültige Benutzernamen, " -"einschließlich Nutzer, die nicht für ausgehende Anrufe freigeschaltet sind, " -"werden ohne Fehlermeldung verworfen. Bitte überprüfen Sie deshalb, ob der " -"Eintrag akzeptiert wurde." - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" -"Diese Konfigurationsseite erlaubt Ihnen die Einrichtung eines " -"Telefonsystemdienstes (PBX), der Anrufe über mehrere Google- und SIP-Konten " -"(wie Sipgate, SipSorcery und Betamax) erlaubt. Sie können diese Konten für " -"viele SIP-Geräte verwenden. Beachten Sie, dass Google-, SIP- und lokale " -"Benutzer-Konten in den Abschnitten \"Google-Konten\", \"SIP-Konten\" und " -"\"Benutzerkonten\" eingerichtet werden. Sie müssen mindestens ein " -"Benutzerkonto für diesen PBX vorsehen und dann ein SIP-Gerät oder Softphone " -"für die Benutzung dieses Kontos einrichten, damit Sie Anrufe mit Ihren " -"Google-/SIP-Konten tätigen oder empfangen können. Wenn Sie mehr als ein " -"Google- / SIP-Konto eingerichtet haben, sollten Sie auf der Seite " -"\"Anrufweiterleitung\" einrichten, wie diese Anrufe behandelt werden. Wenn " -"Sie Ihr PBX von irgendwo auf der Welt nutzen wollen, schauen Sie auf den " -"Abschnitt \"Benutzung aus der Ferne\" auf der Seite \"Erweiterte " -"Einstellungen\". " - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" -"Dies ist der Name, den der VoIP-Server verwenden wird, um sich selbst bei " -"der Registrierung beim VoIP-Dienstanbieter zu identifizieren. Einige " -"Anbieter verlangen, dass dies ein spezieller Begriff ist, der einem Hardware-" -"SIP-Gerät entspricht." - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" -"Hier geben Sie an, welche Google-/SIP-Konten für welche Ländervorwahlen " -"benutzt werden sollen, welche Nutzer welche Konten verwenden dürfen, wie " -"Anrufe weitergeleitet werden, welche Nummern mit Password in diesen PBX " -"kommen, und welche Nummern ausgeschlossen werden." - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" -"Hier stellen Sie Ihre Google (Talk und Voice) Konten ein, um sie für " -"abgehende und ankommende Anrufe nutzen zu können (Voice Chat und Telefon-" -"Anrufe). Bitte tätigen Sie wenigstens einen Sprach-Anruf mit dem Google-Talk-" -"Plugin, das über das GMail-Interface zu installieren ist, und melden Sie " -"sich dann überall aus Ihrem Konto ab. Klicken Sie auf \"Hinzufügen\" um so " -"viele Konten hinzuzufügen, wie Sie wollen." - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" -"Hier stellen Sie Ihre SIP (VoIP) Konten, wie Sipgate, SipSorcery, die " -"populären Betamax-Anbieter, und alle anderen Anbieter mit SIP-Einstellungen " -"ein, um sie für abgehende und ankommende Anrufe nutzen zu können (SIP uri " -"und Telefon-Anrufe). Klicken Sie auf \"Hinzufügen\" um so viele Konten " -"hinzuzufügen, wie Sie wollen." - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" -"Diese Option sollte auf \"Ja\" gesetzt werden, wenn Sie eine DID (reale " -"Telefonnummer) haben, die mit diesem SIP-Konto verknüpft ist, oder wenn Sie " -"SIP-Anrufe über diesen Anbieter empfangen wollen." - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" -"Dieser Abschnitt enthält Einstellungen, die unter normalen Umständen nicht " -"geändert werden müssen. Zusätzlich konnen Sie hier Ihr System für die " -"Verwendung mit entfernten SIP-Geräten einrichten und Probleme bei der " -"Tonqualität beheben, indem Sie die Festlegung von QoS-Regeln aktivieren." - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" -"Verwenden Sie eine vier- bis fünfstellige Nummer als Benutzernamen, wenn Sie " -"normale Telefone mit ATA an dieses System anschließen (damit diese Namen " -"über deren Zifferntastatur eingegeben werden können)." - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" -"Dieses Konto für abgehende Anrufe verwenden, wie im Abschnitt " -"\"Anrufweiterleitung\" eingestellt." - -msgid "Use this account to make outgoing calls." -msgstr "Dieses Konto für abgehende Anrufe verwenden." - -msgid "User Accounts" -msgstr "Benutzerkonten" - -msgid "User Agent String" -msgstr "Benutzeridentifikation (User Agent)" - -msgid "User Name" -msgstr "Benutzername" - -msgid "Uses providers enabled for outgoing calls" -msgstr "Verwendet für abgehende Anrufe eingerichtete Dienstanbieter" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" -"Wenn jemand einen Voice-Chat mit Ihrem GTalk-Konto oder die GVoice-Nummer " -"(falls Sie Google Voice haben) anruft, wird der Anruf an jeden Benutzer " -"weiter geleitet, der Online ist (mit SIP-Gerät oder Softphone) und den Anruf " -"empfangen darf. Wenn Sie Google Voice haben, müssen Sie in Ihre GVoice-" -"Einstellungen gehen und Anrufe zu Google Chat weiter leiten, damit Sie " -"Anrufe auf Ihre GVoice-Nummer empfangen können. Bei Problemen mit dem " -"Empfang von Anrufen über GVoice, experimentieren Sie mit der Option " -"\"Anrufprüfung\" in den GVoice-Einstellungen. Stellen Sie schließlich " -"sicher, dass kein anderer Client mit diesem Konto Online ist (z.B. Browser " -"in GMail, Google Talk App mobil oder auf PC), denn das könnte Einfluss haben." - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" -"Wenn Ihr Passwort gespeichert wird, verschwindet es aus diesem Feld und wird " -"zu Ihrem Schutz nicht angezeigt. Ein vorher gespeichertes Passwort wird nur " -"geändert, wenn Sie ein geändertes Passwort eingeben." - -msgid "Yes" -msgstr "Ja" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" -"Sie können hier einen Klarnamen angeben, der als Name des Anrufers erscheint." - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" -"Sie können Ihre SIP-Geräte/Softphones mit diesem System auch von einem " -"entfernten Ort aus benutzen, so lange Ihnen Ihr Internet-Dienstanbieter eine " -"öffentliche IP-Adresse zuweist. Sie können andere lokale Benutzer kostenlos " -"anrufen (z.B. andere Analog-Telefon-Adapter (ATA)) und Ihre VoIP-Anbieter " -"für Anrufe verwenden, als ob Sie am lokalen PBX angeschlossen wären. Nach " -"der Einrichtung dieses Tabs gehen Sie zu den Benutzereinstellungen zurück " -"und schauen Sie nach den neuen Einstellungen für Server und Port, die Sie an " -"den entfernten SIP-Geräten vornehmen müssen. Bitte beachten Sie, dass Sie " -"NAT/Portweiterleitung auf dem Router/Gateway einrichten müssen, falls dieser " -"PBX nicht auf Ihrem Router/Gateway läuft. Bitte leiten Sie die unten " -"angegebenen Ports (SIP-Port und RTP-Bereich) auf die IP-Adresse dieses PBX " -"weiter." - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" -"Ihre PIN verschwindet beim Speichern aus diesem Feld und wird zu Ihrem " -"Schutz nicht angezeigt. Eine vorher gespeicherte PIN wird nur geändert, wenn " -"Sie eine geänderte PIN eingeben. Sie können die PIN leer lassen, aber denken " -"Sie an die Konsequenzen für die Sicherheit." - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" -"Ihr Passwort verschwindet beim Speichern und wird zu Ihrem Schutz nicht " -"angezeigt. Es wird nur geändert, wenn Sie ein anderes Passwort eingeben." - -#~ msgid "" -#~ "Designate numbers that are allowed to call through this system and which " -#~ "user's privileges it will have." -#~ msgstr "" -#~ "Nummern auswählen, die durch dieses System anrufen können, und deren " -#~ "Benutzerrechte einstellen" - -#~ msgid "" -#~ "Pick a random port number between 6500 and 9500 for the service to listen " -#~ "on. Do not pick the standard 5060, because it is often subject to brute-" -#~ "force attacks. When finished, (1) click \"Save and Apply\", and (2) click " -#~ "the \"Restart VoIP Service\" button above. Finally, (3) look in the \"SIP " -#~ "Device/Softphone Accounts\" section for updated Server and Port settings " -#~ "for your SIP Devices/Softphones." -#~ msgstr "" -#~ "Wählen Sie eine zufällige Portnummer zwischen 6500 und 9000 für den Dienst " -#~ "aus. Nehmen Sie nicht die standardmäßige 5060, weil sie oft attackiert wird. " -#~ "Wenn fertig (1) klicken Sie auf \"Speichern und Anwenden\" und (2) auf \"VoIP-" -#~ "Dienst neu starten\" oben. Schließlich (3) sehen Sie im Abschnitt \"SIP-Geräte" -#~ "/Softphone-Konten\" nach aktualisierten Einstellungen für Ihre SIP-" -#~ "Geräte/Softphones." - -#~ msgid "" -#~ "You can enter your domain name, external IP address, or dynamic domain " -#~ "name here Please keep in mind that if your IP address is dynamic and it " -#~ "changes your configuration will become invalid. Hence, it's recommended " -#~ "to set up Dynamic DNS in this case." -#~ msgstr "" -#~ "Sie können Ihren Domänennamen, externe IP-Adresse, oder dynamischen " -#~ "Domänennamen hier angeben.Bitte beachten Sie, dass Ihre Konfiguration " -#~ "ungältig wird, wenn Sie eine dynamische IP-Adresse besitzen und sich diese " -#~ "ändert. Für diesen Fall wird deshalb die Einrichtung von dnamischem DNS " -#~ "empfohlen." - -#~ msgid "Account Status" -#~ msgstr "Konto-Status" - -#~ msgid "Account Status Message" -#~ msgstr "Konto-Status Meldung" - -#~ msgid "Domain Name/Dynamic Domain Name" -#~ msgstr "DNS Name (auch dynamisch möglich)" diff --git a/package/luci/applications/luci-app-pbx/po/el/pbx.po b/package/luci/applications/luci-app-pbx/po/el/pbx.po deleted file mode 100644 index 717e2563b4..0000000000 --- a/package/luci/applications/luci-app-pbx/po/el/pbx.po +++ /dev/null @@ -1,493 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-31 15:41+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: none\n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "Μην Ενοχλείτε" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "Ενεργοποιημένο" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "Πλήρες Όνομα" - -msgid "General Settings" -msgstr "Γενικές Ρυθμίσεις" - -msgid "Google Accounts" -msgstr "Λογαριασμοί Google" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "Λογαριασμοί Google Voice/Talk" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "Εισερχόμενες Κλήσεις" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "Όχι" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "Εξερχόμενες Κλήσεις" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "Κωδικός πρόσβασης" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "Λογαριασμοί SIP" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -#~ msgid "Account Status" -#~ msgstr "Κατάσταση Λογαριασμού" - -#~ msgid "Account Status Message" -#~ msgstr "Μήνυμα Κατάστασης Λογαριασμού" diff --git a/package/luci/applications/luci-app-pbx/po/en/pbx.po b/package/luci/applications/luci-app-pbx/po/en/pbx.po deleted file mode 100644 index 8b995e1a39..0000000000 --- a/package/luci/applications/luci-app-pbx/po/en/pbx.po +++ /dev/null @@ -1,502 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "Advanced Settings" - -msgid "Available" -msgstr "Available" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." - -msgid "Away" -msgstr "Away" - -msgid "Blacklisted Numbers" -msgstr "Blacklisted Numbers" - -msgid "Call Routing" -msgstr "Call Routing" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "Call-through Numbers" - -msgid "Copy-paste large lists of numbers here." -msgstr "Copy-paste large lists of numbers here." - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "Do Not Disturb" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "Dynamic List of Blacklisted Numbers" - -msgid "Email" -msgstr "Email" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Enable Incoming Calls (Register via SIP)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "Enable Outgoing Calls" - -msgid "Enabled" -msgstr "Enabled" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "External SIP Port" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "Full Name" - -msgid "General Settings" -msgstr "General Settings" - -msgid "Google Accounts" -msgstr "Google Accounts" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "Google Voice/Talk Accounts" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "Incoming Calls" - -msgid "Insert QoS Rules" -msgstr "Insert QoS Rules" - -msgid "Makes Outgoing Calls" -msgstr "Makes Outgoing Calls" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "No" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "Outbound Proxy" - -msgid "Outgoing Calls" -msgstr "Outgoing Calls" - -msgid "PBX Main Page" -msgstr "PBX Main Page" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "Password" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "Port Setting for SIP Devices" - -msgid "Providers Used for Outgoing Calls" -msgstr "Providers Used for Outgoing Calls" - -msgid "QoS Settings" -msgstr "QoS Settings" - -msgid "RTP Port Range End" -msgstr "RTP Port Range End" - -msgid "RTP Port Range Start" -msgstr "RTP Port Range Start" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "Receives Incoming Calls" - -msgid "Remote Usage" -msgstr "Remote Usage" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "SIP Accounts" - -msgid "SIP Device/Softphone Accounts" -msgstr "SIP Device/Softphone Accounts" - -msgid "SIP Provider Accounts" -msgstr "SIP Provider Accounts" - -msgid "SIP Realm (needed by some providers)" -msgstr "SIP Realm (needed by some providers)" - -msgid "SIP Server/Registrar" -msgstr "SIP Server/Registrar" - -msgid "SIP Server/Registrar Port" -msgstr "SIP Server/Registrar Port" - -msgid "Server Setting" -msgstr "Server Setting" - -msgid "Server Setting for Local SIP Devices" -msgstr "Server Setting for Local SIP Devices" - -msgid "Server Setting for Remote SIP Devices" -msgstr "Server Setting for Remote SIP Devices" - -msgid "Service Status" -msgstr "Service Status" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "Space-Separated List of Blacklisted Numbers" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "Specify numbers individually here. Press enter to add more numbers." - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." - -msgid "Use this account to make outgoing calls." -msgstr "Use this account to make outgoing calls." - -msgid "User Accounts" -msgstr "User Accounts" - -msgid "User Agent String" -msgstr "User Agent String" - -msgid "User Name" -msgstr "User Name" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "Yes" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "You can specify a real name to show up in the Caller ID here." - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -#~ msgid "Account Status" -#~ msgstr "Account Status" - -#~ msgid "Account Status Message" -#~ msgstr "Account Status Message" - -#~ msgid "Domain Name/Dynamic Domain Name" -#~ msgstr "Domain Name/Dynamic Domain Name" - -#~ msgid "Enable Incoming Calls (See Status, Message below)" -#~ msgstr "Enable Incoming Calls (See Status, Message below)" - -#~ msgid "Service Control and Connection Status" -#~ msgstr "Service Control and Connection Status" diff --git a/package/luci/applications/luci-app-pbx/po/es/pbx.po b/package/luci/applications/luci-app-pbx/po/es/pbx.po deleted file mode 100644 index 8071b61f08..0000000000 --- a/package/luci/applications/luci-app-pbx/po/es/pbx.po +++ /dev/null @@ -1,677 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-15 13:15+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Configuración avanzada" - -msgid "Available" -msgstr "Disponible" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "Usar sólo caracteres alfanuméricos, espacio, coma y punto." - -msgid "Away" -msgstr "No disponible" - -msgid "Blacklisted Numbers" -msgstr "Lista negra" - -msgid "Call Routing" -msgstr "Enrutado de llamadas" - -msgid "Call-back Numbers" -msgstr "Números de call-back" - -msgid "Call-back Provider" -msgstr "Proveedor de call-back" - -msgid "Call-through Numbers" -msgstr "Números call-through" - -msgid "Copy-paste large lists of numbers here." -msgstr "Pegue aquí grandes listas de números." - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" -"Listar los números a los que se permitirá llamar desde este sistema y qué " -"privilegios de usuario tendrán." - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" -"Listar los números a los que el sistema colgará y volverá a llamar, qué " -"proveedor se usará para llamarles y qué privilegios de usuario se les dará." - -msgid "Dials numbers unmatched elsewhere" -msgstr "Marca el resto de números en cualquier lugar" - -msgid "Do Not Disturb" -msgstr "No molestar" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "Dominio/Dirección IP/Dominio dinámico" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "Lista dinámica de números en lista negra" - -msgid "Email" -msgstr "e-mail" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Permitir llamadas entrantes (registrar vía SIP)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "Permitir llamadas entrantes (ver estado abajo)" - -msgid "Enable Outgoing Calls" -msgstr "Permitir llamadas salientes" - -msgid "Enabled" -msgstr "Activado" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" -"Proveedor VoIP para callbacks en formato nombredeusuario@algun.nombre.host, " -"tal y como se detalla arriba en \"Llamadas salientes\". Puede copiar y pegar " -"los proveedores desde ahí. Las entradas no válidas, incluyendo a proveedores " -"no habilitados para llamadas saliente, serán rechazadas sin mostrar aviso." - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" -"Números de teléfono de los que se reclina la llamada automáticamente. Es " -"posible que tenga que omitir el código de país y ceros precedentes, pero " -"experimente para asegurarse que bloquea los números correctamente." - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" -"Ponga esta IP (o IP:puerto) en el parámetro Servidor/Registrador de los " -"dispositivos SIP que usará SOLO localmente y nunca desde una posición remota." - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" -"Ponga este nombre de máquina en el parámetro Servidor/Registrador de los " -"dispositivos SIP que usará desde posiciones remotas (también vale " -"localmente)." - -msgid "External SIP Port" -msgstr "Puerto externo SIP" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" -"Para cada proveedor al que se habilita a hacer llamadas entrantes puede " -"restringir a qué usuarios llamar. Si se deja vacío el sistema indicará que " -"llamará a todos los usuarios que puedan recibir llamadas entrantes. Los " -"nombres de usuario no válidos se rechazarán sin aviso. Estos nombres de " -"usuario hacen ignorar la configuración de usuario de no recibir llamadas. De " -"esta manera puede hacer que a ciertos usuarios sólo les llamen ciertos " -"proveedores. Puede separar los nombres con espacios o poniéndolos en líneas " -"diferentes." - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" -"Para cada usuario habilitado a hacer llamadas salientes puede restringir qué " -"proveedores usar. Por defecto todos los usuarios pueden usar a todos los " -"proveedores. Para mostrarse en la lista el usuario debe poder hacer llamadas " -"salientes (ver página \"Cuentas de usuario\"). Ponga los proveedores en " -"formato username@some.host.name igual que se listan en \"Llamadas salientes" -"\" arriba. Los nombres no válidos se rechazarán sin aviso.Puede separar los " -"nombres con espacios o poniéndolos en líneas diferentes." - -msgid "Full Name" -msgstr "Nombre completo" - -msgid "General Settings" -msgstr "Configuración general" - -msgid "Google Accounts" -msgstr "Cuentas en google" - -msgid "Google Talk Status" -msgstr "Estado de Google Talk" - -msgid "Google Talk Status Message" -msgstr "Mensaje de estado de Google Talk" - -msgid "Google Voice/Talk Accounts" -msgstr "Cuentas Google Voice/Talk" - -msgid "Hang-up Delay" -msgstr "Retraso para descolgar" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" -"Configure una cuenta SIP que usará para conectar con este servicio. Úsela " -"tanpo en un adaptador de telefonía analógico (ATA) o en un programa SIP como " -"CSipSimple, Linphone, o Sipdroid para smartphones, o Ekiga, Linphone, o X-" -"Lite para ordenadores. Por defecto, todas las cuentas SIP sonarán a la vez " -"si se hace una llamada desde una de las cuentas de su proveedor de VoIP o " -"números GV." - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" -"Cuánto esperar antes de descolgar. Si el proveedor que usas para marcar " -"automáticamente desvía a un correo de voz puedes ajustar este valor con un " -"retraso que permitirá descolgar antes de que se desvíe la llamada y se " -"facture." - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" -"Si la configuración Servidor/Registrador en %s o %s no le funciona, prueba a " -"poner %s o %s e introduzca este número de puerto en un campo separado que " -"especifique el número de puerto del Servidor/Registrador. Algunos " -"dispositivos tienen una configuración extraña que muestra este puerto desde " -"el que el SIP origina peticiones en el mismo dispositivo SIP (el puerto " -"asociado). El puerto que está configurando aquí NO es este puerto asociado " -"sino el puerto en el que el servicio escucha." - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" -"Si nota saltos o retrasos en el audio mientras realiza descargas puede " -"querer activar QoS. QoS prioriza el tráfico a y desde su red para ciertos " -"puertos y direcciones IP mejorando la latencia y el rendimiento del sonido " -"en dicho caso. Al activarlo el PBX creará una regla QoS para este servicio, " -"pero deberá rellenar en la página de configuración de QoS (Red/QoS) otros " -"parámetros necesarios como la velocidad de subida y la de bajada." - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" -"Si tiene más de una cuenta para hacer llamadas salientes, debe introducir " -"una lista de números de teléfono y/o prefijos para cada proveedor. Los " -"prefijos no válidos se rechazarán sin aviso y solo son caracteres válidos " -"0-9, X, Z, N, #, *, y +. La letra X equivale a 0-9, Z a 1-9 y N a 2-9. Por " -"ejemplo para hacer llamadas a Alemania con su proveedor debe introducir 49. " -"Para hacer llamadas a Estados Unidos 1NXXNXXXXXX. Si uno de sus proveedores " -"puede hacer llamadas locales a un código de área como el 646 de Nueva York " -"debe introducir 646NXXXXXX para ese proveedor. Debería dehar una cuenta con " -"una lista vacía para que haga las llamadas por defecto en caso de que ningún " -"prefijo encaje. El sistema reemplazará automáticamente la lista vacía con el " -"mensaje de que el proveedor marca todos los números que no estén en los " -"prefijos de otros proveedores. Sea todo lo específico que pueda (ej. " -"1NXXNXXXXXX es mejor que 1). Todos los códigos internaciones de marcado se " -"descartan (ej. 00, 011, 010, 0011). Las entradas pueden ser una lista " -"separada por espacios y/o cambios de línea." - -msgid "Incoming Calls" -msgstr "Llamadas entrantes" - -msgid "Insert QoS Rules" -msgstr "Reglas QoS" - -msgid "Makes Outgoing Calls" -msgstr "Realizar llamadas salientes" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "NOTA: Sin cuentas configuradas de Google o porveedor SIP." - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" -"NOTA: Sin cuentas configuradas de Google o porveedor SIP para llamadas " -"entrantes." - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" -"NOTA: Sin cuentas configuradas de Google o porveedor SIP para llamadas " -"salientes." - -msgid "NOTE: There are no local user accounts configured." -msgstr "NOTA: Sin cuentas locales configuradas." - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "NOTA: Sin cuentas locales habilitadas para llamadas saientes." - -msgid "No" -msgstr "No" - -msgid "Number of Seconds to Ring" -msgstr "Número de segundos a sonar" - -msgid "Outbound Proxy" -msgstr "Proxy saliente" - -msgid "Outgoing Calls" -msgstr "Llamadas salientes" - -msgid "PBX Main Page" -msgstr "Página principal de PBX" - -msgid "PBX Service Status" -msgstr "Estado del servicio PBX" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "Contraseña" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" -"Escoge un número de puerto aleatorio entre 6500 y 9500 para el servicio. No " -"elijas el estándar 5060 ya que es objeto, a menudo, de ataques por fuerza " -"bruta. Cuando hayas terminado pulsa en \"Salvar y aplicar\" y busca en la " -"sección \"Cuentas SIP del dispositivo/softphone\" el puerto actual para tus " -"dispositivos/softphones SIP." - -msgid "Port Setting for SIP Devices" -msgstr "Configuración de puerto para dispositivos SIP" - -msgid "Providers Used for Outgoing Calls" -msgstr "Proveedores usados para llamadas salientess" - -msgid "QoS Settings" -msgstr "Configuración de QoS" - -msgid "RTP Port Range End" -msgstr "Fin del rango de puertos RTP" - -msgid "RTP Port Range Start" -msgstr "Inicio del rango de puertos RTP" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" -"El tráfico RTP es el que lleva los paquetes de voz. Este es el inicio del " -"rango de puertos que se usará para comunicaciones RTP. Suele ser correcto " -"dejar el valor por defecto." - -msgid "Receives Incoming Calls" -msgstr "Recibe llamadas entrantes" - -msgid "Remote Usage" -msgstr "Uso remoto" - -msgid "Rings users enabled for incoming calls" -msgstr "Llama a usuarios habilitados a recibir llamadas" - -msgid "SIP Accounts" -msgstr "Cuentas SIP" - -msgid "SIP Device/Softphone Accounts" -msgstr "Dispositivo SIP/Cuentas Softphone" - -msgid "SIP Provider Accounts" -msgstr "Cuentas del proveedor SIP" - -msgid "SIP Realm (needed by some providers)" -msgstr "Ámbito SIP (necesario para algunos proveedores)" - -msgid "SIP Server/Registrar" -msgstr "Servidor/Registrador del SIP" - -msgid "SIP Server/Registrar Port" -msgstr "Puerto del Servidor/Registrador del SIP" - -msgid "Server Setting" -msgstr "Configuración del servidor" - -msgid "Server Setting for Local SIP Devices" -msgstr "Dispositivos SIP locales" - -msgid "Server Setting for Remote SIP Devices" -msgstr "Dispositivos SIP remotos" - -msgid "Service Status" -msgstr "Estado del servicio" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" -"Segundos que se llamará a los usuarios antes de colgar o pasar a correo voz " -"(si el correo voz está instalado y habilitado)." - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "Lista negra (separar números con espacios)" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "Números individuales. Pulse enter para añadir más." - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" -"Especifica números individualmente. Pulsa enter para añadir más. Tendrás que " -"experimentar con qué códigos de país y área necesitas añadir al número." - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" -"Estos números podrán llamar con los proveedores de este usuario. Los nombres " -"de usuario no válidos se descartan sin aviso. Por favor, verifique que los " -"números se aceptan." - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" -"Aquí puede configurar un servicio de sistema telefónico (PBX) que le " -"permitirá hacer llamadas por múltiples cuentas Google y SIP (como Sipgate, " -"SipSorcery, and Betamax) y compartirlas entre muchos dispositivos SIP. Tenga " -"en cuenta que las cuentas Google, SIP y locales deben configurarse en " -"subsecciones diferentes. Debe añadir al menos una cuenta de usuarioa este " -"PBX y configurar un dispositivo SIP o softphone para usarla para recibir las " -"llamadas de sus cuentas Google/SIP. Configurar múltiples usuarios le " -"permitirá hacer llamadas gratuitas entre los usuarios y compartir las " -"cuentas Google/SIP configuradas. Si tiene más de una cuenta Google/SIP " -"configurada tendrá que configurar cómo se enrutan en la página \"Enrutado de " -"llamadas\". Si está interesado en usar su PBX desde cualquier sitio del " -"mundo puede visitar la sección \"Uso remoto\" en la página \"Configuración " -"avanzada\"." - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" -"Nombre del servidor VoIP que usará para identificarse cuando se registre en " -"proveedores de VoIP (SIP). Algunos requieres que sea una cadena específica a " -"una dispositivo hardware." - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" -"Indique las cuentas Google/SIP que usará para llamar a qué códigos de país/" -"zona, qué usuarios pueden usuarios pueden usar qué cuentas SIP/Google y cómo " -"se enrutan las llamadas entrantes, qué números pueden entrar en esta PBX con " -"una contraseña y qué números están en lista negra." - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" -"Configure sus cuentas Google (Talk y Voz) para empezar a usarlas para hacer " -"y recibir llamadas (chat de voz y teléfono real). Haga al menos una llamada " -"de voz con el plugin de Google Talk (instalable desde GMail) y desconéctese " -"de la cuenta en cualquier otro sitio." - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" -"Configure sus cuentas SIP (VoIP) como Sipgate, SipSorcery, los popular " -"proveedores Betamax y cualquier otro proveedor para empezar a usarlos para " -"hacer y recibir llamadas (uri SIP y teléfono real)." - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" -"Debería ser \"Sí\" si tiene un DID (teléfono real) asociado a esta cuenta " -"SIP o quiere recibir llamads uri SIP de este proveedor." - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" -"Algunos de estos parámetros no suele ser necesario cambiarlos. Además puede " -"configurar su sistema para usar con dispositivos SIP remotos y resolver " -"problemas de calidad de llamada habilitando algunas reglas QoS." - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" -"Use nombre de usuario númericos (cuatro o cinco dígitos) si conecta a " -"teléfonos normales con ATAs a este sistema (para que puedan marcar números " -"de usuario)." - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" -"Cuenta para llamadas salientes como se configura en la sección \"Enrutado de " -"llamadas\"." - -msgid "Use this account to make outgoing calls." -msgstr "Cuenta para llamadas salientes." - -msgid "User Accounts" -msgstr "Cuentas de usuario" - -msgid "User Agent String" -msgstr "Cadena \"User Agent\"" - -msgid "User Name" -msgstr "Nombre de usuario" - -msgid "Uses providers enabled for outgoing calls" -msgstr "Usar proveedores habilitados para llamadas salientes" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" -"Cuando alguien inicia un chat de voz con su cuenta de GTalk o llame al " -"número de GVoice (si tiene Google Voice) la llamada se transferirá a " -"cualquier usuario que esté conectado (registrado usando un dispositivo SIP o " -"softphone) y se le permitirá recibir la llamada. Si tiene Google Voice debe " -"ir a la configuración de GVoice y traspasar las llamadas a Google chat para " -"recibir las hechas a si número de GVoice. Si tiene problemas recibiendo " -"llamadas de GVoice pruebe con la opción \"Call Screening\" en la " -"configuración de GVoice. Asegúrese de que ningún otro cliente esté conectado " -"con esta cuenta (navegador en gmail, o una aplicación para móvil o " -"escritorio) ya que podría interferir." - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" -"Cuando se salve su contraseña desaparece de este campo y no se muestra para " -"su seguridad. La contraseña sólo se podrá cambiar si introduce un valor " -"diferente al salvado." - -msgid "Yes" -msgstr "Sí" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" -"Puedes introducir el nombre de dominio, dirección IP external o nombre " -"dinámino aquí. Lo mejor es introducir una dirección IP estática. Si la " -"dirección es dinámica la configuración sería inválida cuando cambiase. En " -"estos casos es recomendable configurar Dynamic DNS e introducir tu nombre de " -"host Dynamic DNS. Puedes instalar y configurar Dynamic DNS con el paquete " -"luci-app-ddns." - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "Nombre real a mostrar en el \"Caller ID\"." - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" -"Puede usar sus dispositivos SIP/softphones con este sistema desde una " -"ubicación remota mientras su proveedor de internet le dé una dirección IP " -"pública. Podrá llamar a usuarios locales gratis (ej. otros adaptadores de " -"teléfonos analógicos) y podrá usar sus proveedores de VoIP para hacer " -"llamadas como si estuviese en su PBX local. Tras configurar esta pestaña " -"vuelva a la configuración de usuarios y veo el nuevo servidor y puerto que " -"debe configurar en sus dispositivos SIP remotos. Tenga en cuenta que si este " -"PBX no funciona en su router/pasarela, tendrá que configurar el traspaso de " -"puertos (NAT) en su router/pasarela. Traspase los puertos indicados (Puerto " -"SIP y rango RTP) hacia la dirección IP del dispositivo en que corre esta PBX." - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" -"Su PIN desaparecerá cuando se salve para su protección. Se cambiará solo " -"cuando introduzca un valor diferente al salvado. No se puede dejar el PIN " -"vacío." - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" -"Su contraseña desaparecerá cuando se salve para su protección. Sólo se puede " -"cambiar si entra un valor diferente al salvado." - -#~ msgid "" -#~ "Designate numbers that are allowed to call through this system and which " -#~ "user's privileges it will have." -#~ msgstr "" -#~ "Números a los que se permite llamar por este sistema y privilegios de " -#~ "usuario." - -#~ msgid "" -#~ "Pick a random port number between 6500 and 9500 for the service to listen " -#~ "on. Do not pick the standard 5060, because it is often subject to brute-" -#~ "force attacks. When finished, (1) click \"Save and Apply\", and (2) click " -#~ "the \"Restart VoIP Service\" button above. Finally, (3) look in the \"SIP " -#~ "Device/Softphone Accounts\" section for updated Server and Port settings " -#~ "for your SIP Devices/Softphones." -#~ msgstr "" -#~ "Puerto aleatorio entre 6500 y 9500 en el que escuche el servicio. No elija " -#~ "el estándar 5060 porque es susceptible de ataques por fuerza bruta. Cuando " -#~ "termine (1) pulsa \"Salvar y aplicar\" y (2) pulse \"Rearrancar servicio VoIP\". " -#~ "Finalmente (3) busque en la sección \"Dispositivo SIP/Cuentas softphone\" la " -#~ "configuración del puerto." - -#~ msgid "" -#~ "You can enter your domain name, external IP address, or dynamic domain " -#~ "name here Please keep in mind that if your IP address is dynamic and it " -#~ "changes your configuration will become invalid. Hence, it's recommended " -#~ "to set up Dynamic DNS in this case." -#~ msgstr "" -#~ "Nombre de dominio, dirección IP externa o nombre de dominio dinámico. Si su " -#~ "dirección IP es dinámica y cambia su configuración podría resultar no " -#~ "válida. Se recomienda el uso de DNS dinámico en estos casos." diff --git a/package/luci/applications/luci-app-pbx/po/fr/pbx.po b/package/luci/applications/luci-app-pbx/po/fr/pbx.po deleted file mode 100644 index 971a696488..0000000000 --- a/package/luci/applications/luci-app-pbx/po/fr/pbx.po +++ /dev/null @@ -1,484 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/he/pbx.po b/package/luci/applications/luci-app-pbx/po/he/pbx.po deleted file mode 100644 index 2a458214df..0000000000 --- a/package/luci/applications/luci-app-pbx/po/he/pbx.po +++ /dev/null @@ -1,484 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/hu/pbx.po b/package/luci/applications/luci-app-pbx/po/hu/pbx.po deleted file mode 100644 index 2a458214df..0000000000 --- a/package/luci/applications/luci-app-pbx/po/hu/pbx.po +++ /dev/null @@ -1,484 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/it/pbx.po b/package/luci/applications/luci-app-pbx/po/it/pbx.po deleted file mode 100644 index 6da8e45d96..0000000000 --- a/package/luci/applications/luci-app-pbx/po/it/pbx.po +++ /dev/null @@ -1,487 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-12-15 19:31+0200\n" -"Last-Translator: claudyus \n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Opzioni avanzate" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/ja/pbx.po b/package/luci/applications/luci-app-pbx/po/ja/pbx.po deleted file mode 100644 index 76199f4191..0000000000 --- a/package/luci/applications/luci-app-pbx/po/ja/pbx.po +++ /dev/null @@ -1,493 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-21 07:57+0200\n" -"Last-Translator: Kentaro \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.4\n" - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "Eメール" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "外部SIPポート" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "基本設定" - -msgid "Google Accounts" -msgstr "Google アカウント" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "Google Voice/Talk アカウント" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "QoS ルール設定を有効にする" - -msgid "Makes Outgoing Calls" -msgstr "発信を許可する" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "いいえ" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "PBX メインページ" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "パスワード" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "QoS 設定" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "受信を許可する" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "SIP アカウント" - -msgid "SIP Device/Softphone Accounts" -msgstr "SIP デバイス/ソフトフォン アカウント" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "サーバー設定" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "ユーザーエージェント名" - -msgid "User Name" -msgstr "ユーザー名" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "はい" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -#~ msgid "Account Status" -#~ msgstr "アカウントのステータス" - -#~ msgid "Account Status Message" -#~ msgstr "アカウントステータス・メッセージ" diff --git a/package/luci/applications/luci-app-pbx/po/ms/pbx.po b/package/luci/applications/luci-app-pbx/po/ms/pbx.po deleted file mode 100644 index 23403f290f..0000000000 --- a/package/luci/applications/luci-app-pbx/po/ms/pbx.po +++ /dev/null @@ -1,483 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/no/pbx.po b/package/luci/applications/luci-app-pbx/po/no/pbx.po deleted file mode 100644 index 2a458214df..0000000000 --- a/package/luci/applications/luci-app-pbx/po/no/pbx.po +++ /dev/null @@ -1,484 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/pl/pbx.po b/package/luci/applications/luci-app-pbx/po/pl/pbx.po deleted file mode 100644 index 4e80a45815..0000000000 --- a/package/luci/applications/luci-app-pbx/po/pl/pbx.po +++ /dev/null @@ -1,508 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-05 04:37+0200\n" -"Last-Translator: piosl \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -msgid "Available" -msgstr "Dostępny" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "Unikaj znaków innych niż alfanumeryczne, spacja, przecinek i kropka." - -msgid "Away" -msgstr "Oddalony" - -msgid "Blacklisted Numbers" -msgstr "Numery na czarnej liście" - -msgid "Call Routing" -msgstr "Przekierowanie połączeń" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -# Chodzi tu o numery, przez które dzwoni się, aby obniżyć koszta połączeń zagranicznych. Jeśli ktoś ma pomysł na lepsze tłumaczenie, proszę zmienić. W sieci nie znalazłem. -msgid "Call-through Numbers" -msgstr "Numery pośredniczące" - -msgid "Copy-paste large lists of numbers here." -msgstr "Wklej tu wielkie listy numerów." - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "Nie przeszkadzać" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "Domena/adres IP/dynamiczna domena" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "Dynamiczna czarna lista numerów" - -msgid "Email" -msgstr "E-mail" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Włącz połączenia przychodzące (rejestruj przez SIP)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "Włącz połączenia przychodzące (zobacz status poniżej)" - -msgid "Enable Outgoing Calls" -msgstr "Włącz połączenia wychodzące" - -msgid "Enabled" -msgstr "Włączone" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" -"Podaj numery telefonów, które powinny być automatycznie odrzucane. " -"Prawdopodobnie powinieneś pominąć numer kierunkowy kraju i zera z przodu, " -"ale samemu to przetestuj, aby upewnić się, że blokowanie działa prawidłowo " -"dla Twojego położenia." - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" -"Podaj to IP (lub parę IP:port) w ustawieniach serwera/rejestratora urządzeń " -"SIP których będziesz używać WYŁĄCZNIE lokalnie i nigdy z zewnątrz." - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" -"Podaj tę nazwę hosta (lub parę nazwa hosta:port) w ustawieniach serwera/" -"rejestratora urządzeń SIP których będziesz używać z zewnątrz (będą też " -"działać lokalnie)." - -msgid "External SIP Port" -msgstr "Zewnętrzny port SIP" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" -"Dla każdego użytkownika z prawem wykonywania połączeń wychodzących możesz " -"ograniczyć których operatorów mogą używać do tych połączeń. Domyślnie każdy " -"użytkownik może używać dowolnego operatora. Użytkownik musi mieć prawo " -"wykonywania połączeń wychodzących ustawione na stronie \"Konta użytkowników" -"\", aby pojawić się na poniższej liście. Podaj operatorów VoIP w formacie " -"nazwa.użytkownika@jakaś.nazwa.hosta, tak jak są wypisani w \"Połączeniach " -"wychodzących\" powyżej. Łatwiej jest skopiować powyższych operatorów. " -"Nieprawidłowe wpisy, włącznie z operatorami bez prawa do połączeń " -"wychodzących, będą odrzucani bez komunikatów. Wpisy mogą być rozdzielone " -"spacjami albo podane po jednym w wierszu." - -msgid "Full Name" -msgstr "Pełne imię i nazwisko" - -msgid "General Settings" -msgstr "Ustawienia ogólne" - -msgid "Google Accounts" -msgstr "Konta Google" - -msgid "Google Talk Status" -msgstr "Status Google Talk" - -msgid "Google Talk Status Message" -msgstr "Opis Google Talk" - -msgid "Google Voice/Talk Accounts" -msgstr "Konta Google Voice/Talk" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "Połączenia przychodzące" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/pt-br/pbx.po b/package/luci/applications/luci-app-pbx/po/pt-br/pbx.po deleted file mode 100644 index fd93e4fffb..0000000000 --- a/package/luci/applications/luci-app-pbx/po/pt-br/pbx.po +++ /dev/null @@ -1,744 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-08-04 09:00+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Configurações Avançadas" - -msgid "Available" -msgstr "Disponível" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" -"Evite usar qualquer carácter que não seja um alfanumérico, espaço, vírgula " -"ou ponto." - -msgid "Away" -msgstr "Ausente" - -msgid "Blacklisted Numbers" -msgstr "Números na Lista Negra" - -msgid "Call Routing" -msgstr "Roteamento de Chamada" - -# 20140630: edersg: tradução -msgid "Call-back Numbers" -msgstr "Voltar a discar os números" - -# 20140630: edersg: tradução -msgid "Call-back Provider" -msgstr "Voltar a chamar o provedor" - -msgid "Call-through Numbers" -msgstr "Números de Ligação Direta" - -msgid "Copy-paste large lists of numbers here." -msgstr "Copie e cole aqui listas de números extensas." - -# 20140630: edersg: tradução -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" -"Designar os números que estão autorizados a chamar por este sistema e quais " -"privilégios do usuário eles terão." - -# 20140630: edersg: tradução -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" -"Designar números para os quais o sistema irá desligar e ligar de volta, qual " -"provedor será utilizado para chamá-los, e quais privilégios do usuário " -"serão concedidos a eles." - -msgid "Dials numbers unmatched elsewhere" -msgstr "Disca números que não casam em qualquer lugar." - -msgid "Do Not Disturb" -msgstr "Não Perturbe" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "Domínio/Endereço IP/Domínio Dinâmico" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "Lista Dinâmica dos Números da Lista Negra" - -msgid "Email" -msgstr "Email" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Habilitar Chamadas Recebidas (Registrar pelo SIP)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "Habilitar Chamadas Recebidas (defina o Estado abaixo)" - -msgid "Enable Outgoing Calls" -msgstr "Habilitar Chamadas para Fora" - -msgid "Enabled" -msgstr "Habilitado" - -# 20140630: edersg: tradução -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" -"Digite um provedor VoIP para utilizar para voltar a chamada no formato " -"username@some.host.name conforme listado acima em \"Chamadas Originadas\". É " -"mais fácil copiar e colar os provedores. As entradas inválidas, incluindo " -"provedores não habilitados para chamadas de saída, serão rejeitados em " -"silêncio." - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" -"Entre com os números de telefone que você deseja rejeitar automaticamente. " -"Você pode omitir o código do país e qualquer zeros no início, mas, por " -"favor, teste para ter certeza que você está bloqueando da área desejada com " -"sucesso." - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" -"Entre este endereço IP (ou IP:porta) na configuração de servidor/registrador " -"dos seus dispositivos SIP que você irá usar SOMENTE localmente e nunca de um " -"local remoto." - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" -"Entre com o nome do equipamento (ou equipamento:porta) na configuração de " -"servidor/Registrar do seus dispositivos SIP que você irá usar de um local " -"remoto (eles também funcionarão localmente)." - -msgid "External SIP Port" -msgstr "Porta SIP Externa" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" -"Para cada provedor habilitado para receber chamadas, aqui você pode " -"restringir quais usuários tocarão quando receber chamadas. Se a lista " -"estiver vazia, o sistema indicará que todos os usuários com recepção de " -"chamadas habilitada tocarão. Nome de usuários inválidos serão rejeitados " -"silenciosamente. Além disto, entrar com um nome de usuário aqui sobrescreve " -"a configuração do usuário para não receber chamadas. Desta forma, você pode " -"fazer com que alguns usuários toquem somente para alguns provedores " -"específicos. As entradas podem ser inseridas usando uma lista separada por " -"espaço ou um por nova linha." - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" -"Para cada usuário habilitado para realizar chamadas externas, você pode " -"restringir quais provedores o usuário poderá usar. Por padrão, todos os " -"usuários podem usar todos os provedores. Para aparecer na lista abaixo, o " -"usuário deve estar habilitado para realizar chamadas externas na página de " -"\"Contas de Usuários\". Entre com os provedores de VoIP no formato " -"usuário@algum.nome.de.equipamento, como listado em \"Chamadas Efetuadas\" " -"abaixo. É mais fácil copiar e colar os provedores da lista abaixo. Entradas " -"inválidas, includindo provedores não habilitados para chamadas externas, " -"serão rejeitadas silenciosamente. As entradas podem ser inseridas usando uma " -"lista separada por espaço ou um por nova linha." - -msgid "Full Name" -msgstr "Nome Completo" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "Google Accounts" -msgstr "Contas do Google" - -msgid "Google Talk Status" -msgstr "Estado do Google Talk" - -msgid "Google Talk Status Message" -msgstr "Mensagem de Estado do Google Talk" - -msgid "Google Voice/Talk Accounts" -msgstr "Contas do Google Voice/Talk" - -# 20140630: edersg: tradução -msgid "Hang-up Delay" -msgstr "Atraso de hang-up" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" -"Aqui você deve configurar pelo menos uma conta SIP, que você irá usar para " -"se cadastrar neste serviço. Use essa conta, seja em um adaptador de " -"telefonia analógica (ATA), ou em um softphone SIP como Linphone, CSipSimple, " -"ou Sipdroid em seu smartphone, ou o Ekiga, Linphone, ou X-Lite no seu " -"computador. Por padrão, ao receber uma chamada em uma das suas contas nos " -"provedores VoIP ou em números GV, todas as contas SIP tocarão " -"simultaneamente." - -# 20140630: edersg: tradução -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" -"Quanto tempo esperar antes de desligar. Se o provedor que você utiliza para " -"discar automaticamente encaminha para a caixa postal de voz, você pode " -"definir este valor para um atraso que irá permitir que você desligue sua " -"chamada antes de ser encaminhada e cobrado financeiramente por isso." - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" -"Se definir o servidor/registrador como %s ou %s não funcionar para você, " -"tente defini-lo como %s ou %s e entre com este número de porta em um campo " -"separado que especifica o número da porta do servidor/registrador. Fique " -"ciente que alguns dispositivos têm uma configuração confusa que define a " -"porta de origem das solicitações SIP no dispositivo SIP em si (a porta local " -"no dispositivo). A porta especificada nesta página não é essa porta de " -"ligação, mas a porta na qual o serviço escutará serviço." - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" -"Se você sentir falhas ou alta latência enquanto baixa conteúdos pesados​​, " -"você pode querer habilitar o QoS. O QoS prioriza o tráfego de e para a sua rede para endereços " -"IP e portas específicas, resultando em melhor latência e redimento de som. " -"Se ativado, será configurada automaticamente pelo PABX uma regra de QoS para este " -"serviço, mas você deve visitar a página de configuração de QoS (Rede -> QoS) para " -"configurar outras configurações críticas de QoS como as velocidades da sua " -"conexão." - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" -"Se você tiver mais de uma conta que pode fazer chamadas externas, você deve " -"informar uma lista de números de telefone e/ou prefixos nos seguintes campos " -"para cada provedor listados. Prefixos inválidos são removidos " -"silênciosamente, e some os caracteres 0-9, X, Z, N, # *,, e + são válidos. A " -"letra X corresponde a 0-9, Z corresponde a 1-9, e N corresponde a 2-9. Por " -"exemplo, para fazer chamadas para a Alemanha através de um provedor, você " -"pode digitar 49. Para fazer chamadas para a América do Norte, você pode " -"entrar 1NXXNXXXXXX. Se um de seus provedores pode fazer chamadas locais para " -"um código de área como Nova York (646), você pode entrar com 646NXXXXXX para " -"esse provedor. Você deve deixar uma conta com uma lista vazia para fazer " -"chamadas com ele por padrão para o caso do prefixo não casar com nenhum " -"outro fornecedor. O sistema irá substituir automaticamente uma lista vazia " -"com uma mensagem que os este provedor será utilizado caso nenhuma das regras " -"dos demais provedores casem. Seja tão específico quanto possível (isto é " -"1NXXNXXXXXX é melhor do que 1). Por favor, note que todos os códigos de " -"discagem internacionais são descartados (por exemplo 00, 011, 010, 0011). As " -"entradas podem ser feitas em uma lista separada por espaços ou por nova " -"linha." - -msgid "Incoming Calls" -msgstr "Chamadas Recebidas" - -msgid "Insert QoS Rules" -msgstr "Inserir Regras QoS" - -msgid "Makes Outgoing Calls" -msgstr "Realiza Chamadas para Fora" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "NOTA: Não existe uma conta Google ou provedor SIP configurado." - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" -"NOTA: Não existe uma conta Google ou provedor SIP habilitado para receber " -"chamadas." - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" -"NOTA: Não existe uma conta Google ou provedor SIP habilitado para efetuar " -"chamadas externas." - -msgid "NOTE: There are no local user accounts configured." -msgstr "NOTA: Não existe uma conta local configurada." - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" -"NOTA: Não existe uma conta local configurada para efetuar chamadas externas." - -msgid "No" -msgstr "Não" - -msgid "Number of Seconds to Ring" -msgstr "Número de Segundos para Tocar" - -msgid "Outbound Proxy" -msgstr "Proxy Externo" - -msgid "Outgoing Calls" -msgstr "Chamadas Efetuadas" - -msgid "PBX Main Page" -msgstr "Página Principal do PBX" - -msgid "PBX Service Status" -msgstr "Estado do Serviço PBX" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "Senha" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" -"Escolha uma porta aleatória entre 6500 e 9500 onde o serviço irá escutar. " -"Não escolha a porta padrão 5060 pois ela é frequentemente alvo de ataques de " -"força bruta. Quanto terminar, (1) clique em \"Salvar e Aplicar\", e (2) olhe " -"na seção \"Dispositivo SIP/Contas do Softphone\" para as configurações " -"atualizadas do servidor e porta para o seu Dispositivo SIP/Softphone." - -msgid "Port Setting for SIP Devices" -msgstr "Configuração da Porta para Dispositivos SIP" - -msgid "Providers Used for Outgoing Calls" -msgstr "Provedores Usados para as Chamadas para Fora" - -msgid "QoS Settings" -msgstr "Configurações de QoS" - -msgid "RTP Port Range End" -msgstr "Final da Faixa de Portas RTP" - -msgid "RTP Port Range Start" -msgstr "Inicio da Faixa de Portas RTP" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" -"O tráfego RTP transporta de fato os pacotes de voz. Este é o início do " -"intervalo de portas que será usado para a estabelecer uma comunicação RTP. " -"Geralmente não é um problema deixar esta configuração com o valor padrão." - -msgid "Receives Incoming Calls" -msgstr "Recebe Chamadas para Dentro" - -msgid "Remote Usage" -msgstr "Uso Remoto" - -msgid "Rings users enabled for incoming calls" -msgstr "Toca usuários habilitados para receber chamadas" - -msgid "SIP Accounts" -msgstr "Contas SIP" - -msgid "SIP Device/Softphone Accounts" -msgstr "Contas de Dispositivos SIP/Telefones em Software" - -msgid "SIP Provider Accounts" -msgstr "Contas dos Provedores SIP" - -msgid "SIP Realm (needed by some providers)" -msgstr "Domínio SIP (necessário para alguns provedores)" - -msgid "SIP Server/Registrar" -msgstr "Servidor SIP/Registrador" - -msgid "SIP Server/Registrar Port" -msgstr "Porta do Servidor SIP/Registrador" - -msgid "Server Setting" -msgstr "Configuração do Servidor" - -msgid "Server Setting for Local SIP Devices" -msgstr "Configuração do Servidor para Dispositivos SIP Locais" - -msgid "Server Setting for Remote SIP Devices" -msgstr "Configuração do Servidor para Dispositivos SIP Remotos" - -msgid "Service Status" -msgstr "Estado do Serviço" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" -"Define o número de segundos para tocar o telefone ao receber chamadas antes " -"de desligar ou ir para a caixa postal, se o correio de voz estiver instalado " -"e habilitado." - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "Números na Lista Negra separados por Espaço" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" -"Especifique os números individualmente aqui. Pressione o Enter para " -"adicionar mais números." - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" -"Especifique aqui os números individualmente. Pressione o \"Enter\" para " -"adicionar mais números. Você terá que experimentar com qual código de país " -"ou de área você precisa adicionar aos números." - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" -"O número(s) acima especificados serão capazes de discar com os provedores " -"deste usuário. Nomes inválidos, incluindo usuários não habilitados para " -"chamadas externas, serão descartados silenciosamente. Por favor, verifique " -"se a entrada foi aceita." - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" -"Esta página de configuração permite configurar um sistema de serviço de " -"telefone (PABX), que permite fazer chamadas telefônicas através do Google " -"múltipla e SIP (como Sipgate, SipSorcery e Betamax) contas e compartilhá-los " -"entre diversos dispositivos SIP. Note-se que as contas do Google, contas " -"SIP, e contas de usuários locais são configurados em \"Contas do Google\", " -"\"Contas SIP\" e \"Contas de Usuário\" sub-seções. Você deve adicionar pelo " -"menos uma conta de usuário para este PABX e configurar um dispositivo SIP ou " -"softphone para usar a conta, a fim de fazer e receber chamadas com o " -"Google / SIP contas. Configurando vários usuários permitem que você faça " -"chamadas gratuitas entre todos os usuários, e partilhar o Google configurado " -"e contas SIP. Se você tem mais de um Google e contas SIP configurado, você " -"provavelmente deve configurar como as chamadas de e para eles são " -"encaminhados para a \"Call Routing\" página. Se você está interessado em " -"usar o seu próprio PABX de qualquer lugar do mundo, então, visitar o " -"\"Remote Uso\" na seção \"Advanced Settings\" página." - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" -"Este é o nome que o servidor VoIP será usado para identificar-se quando se " -"registrar para VoIP (SIP) fornecedores. Alguns provedores exigem isso para " -"uma seqüência específica de correspondência de um dispositivo de hardware " -"SIP." - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" -"Este é o local onde você indica quais contas Google/SIP serão usadas para " -"chamar quais códigos de área/país, que usuários poderão usar quais contas " -"Google/SIP, como as chamadas recebidas serão roteadas, que números podem ser " -"recebidos por este PBX com uma senha e qual números estão banidos." - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" -"Este é o local onde você configura suas contas Google (Talk e Voice) para " -"poder usá-las para realizar ou receber chamadas (conversa por voz e chamadas " -"para telefones reais). Por favor, realize ao menos uma chamada de voz usando " -"o plugin do Google Talk, instalável na interface do GMail. Após esta " -"chamada, saia da sua conta em todos os serviços. Clique em \"Adicionar\" " -"para adicionar quantas contas você desejar." - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" -"Este é o local onde você configura suas contas SIP (VoIP) como Sipgate, " -"SipSorcery, os populares provedores Betamax, e qualquer outro provedor com " -"suporte a SIP para permitir o uso destas contas para efetuar e receber " -"chamadas (URI de SIP e chamads para números reais). Clique em \"Adicionar\" " -"para adicionar quantas contas você desejar." - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" -"Esta opção deve estar definida como \"Sim\" se você tem um DDR (Discagem " -"Direta a Ramal) associado com esta conta SIP or quer receber chamadas URI de " -"SIP através deste provedor." - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" -"Esta seção contém configurações que não precisam ser modificadas em " -"condições normais. Aqui você pode configurar seu sistema para usar com " -"dispositivos SIP remotos e resolver problemas com a qualidade das chamadas " -"através da inserção de regras de QoS." - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" -"Use o nome de usuário numérico (4 a 5 dígitos) se você estiver conectando " -"telefones normais com ATAs para este sistema (para que eles possam discar os " -"nomes de seus usuários)." - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" -"Use esta conta para realizar chamadas externas como configurado na seção de " -"\"Roteamento de Chamada\"." - -msgid "Use this account to make outgoing calls." -msgstr "Use esta conta para realizar chamadas externas." - -msgid "User Accounts" -msgstr "Contas de Usuários" - -msgid "User Agent String" -msgstr "Texto para o Agente do Usuário" - -msgid "User Name" -msgstr "Nome do Usuário" - -msgid "Uses providers enabled for outgoing calls" -msgstr "Usa provedores habilitados para chamadas externas" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" -"Quando alguém iniciar uma conversa por voz com sua conta do GTalk ou chamar " -"seu número GVoice (se você tiver uma conta Google Voice), a chamada será " -"encaminhada para qualquer usuários que estão conectados (registados " -"utilizando um dispositivo SIP ou softphone) e autorizados a receber a " -"chamada. Se você tiver uma conta Google Voice, você deve ir para as " -"configurações da sua conta GVoice e encaminhar as chamadas para o Google " -"Chat, a fim de realmente receber chamadas feitas para o seu número GVoice. " -"Se você tiver problemas para receber chamadas oriundas do GVoice, " -"experimente a opção \"Call Screening/Monitoramento de Chamadas\" na " -"configurações da sua conta GVoice. Finalmente, certifique-se de nenhum outro " -"cliente está online com essa conta (navegador contado no GMail, aplicativo " -"Google Talk no Desktop ou Celular), pois isto pode interferir." - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" -"Quando a sua senha for salva, ela desaparece deste campo e não será exibida " -"para sua proteção. A senha será alterada somente quando você informar uma " -"nova senha diferente da que foi salva anteriormente." - -msgid "Yes" -msgstr "Sim" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" -"Você pode informar aqui o nome do domínio, endereço IP externo, ou um nome " -"de domínio dinâmico. O melhor é informar um endereço IP estático. Se o seu " -"endereço IP é dinâmico e ele muda, sua configuração se tornará inválida. " -"Desta forma, é recomendado configurar um serviço de domínios dinâmicos e " -"utilizar este nome aqui. Você pode configurar o serviço de domínios " -"dinâmicos com o pacote luci-app-ddns." - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" -"Você pode especificar um nome real para aparecer no identificador de " -"chamadas." - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" -"Você pode usar seus dispositivos SIP/softphones com este sistema a partir de " -"um local remoto, desde que o seu provedor de Internet lhe forneça um " -"endereço IP público. Você poderá ligar para outros usuários locais sem custo " -"(por exemplo, outros adaptadores de telefone analógico (ATAs)) e usar seus " -"provedores de VoIP para fazer chamadas como se fossem originadas do local do " -"seu PBX. Depois de configurar esta aba, volte para onde os usuários são " -"configurados e veja as novas configurações de servidor e porta com as quais " -"você precisa configurar os seus dispositivos SIP remotos. Por favor, note " -"que se este PABX não está rodando no seu roteador, você terá que configurar " -"o redirecionamento de portas (NAT) no seu roteador. Por favor, encaminhe as " -"portas abaixo (porta SIP e intervalo de porta RTP) para o endereço IP do " -"dispositivo que executa este PBX." - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" -"Seu PIN desaparece deste campo quando for salvo e não será exibido para sua " -"proteção. Ele será alterada somente quando você informar um PIN diferente do " -"que foi salvo anteriormente. É possível deixá-lo em branco mas fique atento " -"quanto as implicações na segurança." - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" -"Sua senha desaparece deste campo quando for salva e não será exibida para " -"sua proteção. A senha será alterada somente quando você informar uma nova " -"senha diferente da que foi salva anteriormente." - -#~ msgid "" -#~ "Designate numbers that are allowed to call through this system and which " -#~ "user's privileges it will have." -#~ msgstr "" -#~ "Números definidos que poderão realizar chamadas através deste sistema e " -#~ "quais privilégios o usuário terá." - -#~ msgid "" -#~ "Pick a random port number between 6500 and 9500 for the service to listen " -#~ "on. Do not pick the standard 5060, because it is often subject to brute-" -#~ "force attacks. When finished, (1) click \"Save and Apply\", and (2) click " -#~ "the \"Restart VoIP Service\" button above. Finally, (3) look in the \"SIP " -#~ "Device/Softphone Accounts\" section for updated Server and Port settings " -#~ "for your SIP Devices/Softphones." -#~ msgstr "" -#~ "Escolha um número de porta aleatória entre 6500 e 9500 para o serviço " -#~ "escutar. Não escolher o padrão 5060, porque é frequentemente alvo de ataques " -#~ "de força bruta. Quando terminar, (1) clique em \"Salvar e Aplicar\", e (2) " -#~ "clique no \"Reiniciar o serviço VoIP\" acima. Finalmente, (3) olhe na seção " -#~ "\"Contas de Dispositivos SIP/Telefones em Software\" para atualizar o endereço " -#~ "e porta do servidor para seu Dispositivos SIP/Telefones em Software." - -#~ msgid "" -#~ "You can enter your domain name, external IP address, or dynamic domain " -#~ "name here Please keep in mind that if your IP address is dynamic and it " -#~ "changes your configuration will become invalid. Hence, it's recommended " -#~ "to set up Dynamic DNS in this case." -#~ msgstr "" -#~ "Você pode digitar aqui o seu nome de domínio, endereço IP externo, ou nome " -#~ "de domínio dinâmico. Tenha em mente que se o seu endereço IP é dinâmico e " -#~ "ele mudar, a sua configuração se tornará inválida. Por isso, é recomendado " -#~ "configurar um DNS dinâmico neste caso." - -#~ msgid "Account Status" -#~ msgstr "Estado da Conta" - -#~ msgid "Account Status Message" -#~ msgstr "Mensagem do Estado da Conta" - -#~ msgid "Domain Name/Dynamic Domain Name" -#~ msgstr "Nome do Domínio/Nome do Domínio Dinâmico" - -#~ msgid "Enable Incoming Calls (See Status, Message below)" -#~ msgstr "Habilitar Chamadas Recebidas (Veja o Estado, Mensagem abaixo)" - -#~ msgid "Service Control and Connection Status" -#~ msgstr "Controle do Serviço e Estado da Conexão" diff --git a/package/luci/applications/luci-app-pbx/po/pt/pbx.po b/package/luci/applications/luci-app-pbx/po/pt/pbx.po deleted file mode 100644 index 75b6c8cd1a..0000000000 --- a/package/luci/applications/luci-app-pbx/po/pt/pbx.po +++ /dev/null @@ -1,487 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-22 19:17+0200\n" -"Last-Translator: Low \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "Disponível" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "Ativado" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "Nome Completo" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "Não" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "Sim" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/ro/pbx.po b/package/luci/applications/luci-app-pbx/po/ro/pbx.po deleted file mode 100644 index 49e8daccf4..0000000000 --- a/package/luci/applications/luci-app-pbx/po/ro/pbx.po +++ /dev/null @@ -1,488 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-28 18:50+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Setări avansate" - -msgid "Available" -msgstr "Disponibil" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "Nu deranjaţi" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "Domeniu/Adresă IP/Domeniu dinamic" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "Activat" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "Nume complet" - -msgid "General Settings" -msgstr "Setări generale" - -msgid "Google Accounts" -msgstr "Conturi Google" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "Parolă" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "Setări QoS" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/ru/pbx.po b/package/luci/applications/luci-app-pbx/po/ru/pbx.po deleted file mode 100644 index e85c947e1a..0000000000 --- a/package/luci/applications/luci-app-pbx/po/ru/pbx.po +++ /dev/null @@ -1,525 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-06 10:28+0200\n" -"Last-Translator: datasheet \n" -"Language-Team: none\n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Расширенные установки" - -msgid "Available" -msgstr "Доступен" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" -"Старайтесь не использовать ничего, кроме алфавитно-цифровых символов, " -"пробелов, запятых и точек." - -msgid "Away" -msgstr "Отошел" - -msgid "Blacklisted Numbers" -msgstr "Номера в \"черном\" списке" - -msgid "Call Routing" -msgstr "Маршрутизация вызовов" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "Номера сквозных вызовов" - -msgid "Copy-paste large lists of numbers here." -msgstr "Вставьте большие списки номеров здесь" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "Не беспокоить" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "Динамический список запрещенных номеров" - -msgid "Email" -msgstr "Эл. почта" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Разрешить входящие вызовы (регистрация через SIP)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "Разрешить входящие звонки (см. ниже Статус)" - -msgid "Enable Outgoing Calls" -msgstr "Разрешить исходящие вызовы" - -msgid "Enabled" -msgstr "Включено" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" -"Введите телефонные номера, звонки с которых вы хотите автоматически " -"отклонять. Вы, вероятно, не должны вводить код страны и ведущие нули, но, " -"чтобы удостовериться в этом, пожалуйста проверьте, что звонки из " -"нежелательной зоны успешно блокируются." - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" -"Введите этот IP (или IP порт) в установках Сервера/Регистратора SIP " -"устройств, который вы будете использовать ТОЛЬКО локально и никогда удаленно." - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" -"Введите это имя_хоста (или имя_хоста:порт) в установках Сервера/Регистратора " -"тех SIP-устройств, которые вы будете использовать удаленно (локально они " -"также будут работать)." - -msgid "External SIP Port" -msgstr "Внешний порт SIP" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "Полное имя" - -msgid "General Settings" -msgstr "Общие установки" - -msgid "Google Accounts" -msgstr "Учетные записи Google" - -msgid "Google Talk Status" -msgstr "Статус Google Talk" - -msgid "Google Talk Status Message" -msgstr "Сообщение статуса Google Talk" - -msgid "Google Voice/Talk Accounts" -msgstr "Учетные записи Google Voice/Talk" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "Входящие вызовы" - -msgid "Insert QoS Rules" -msgstr "Вставить правила QoS" - -msgid "Makes Outgoing Calls" -msgstr "Совершает исходящие вызовы" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "Нет" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "Outbound прокси сервер" - -msgid "Outgoing Calls" -msgstr "Исходящие вызовы" - -msgid "PBX Main Page" -msgstr "Главная страница АТС" - -#, fuzzy -msgid "PBX Service Status" -msgstr "Состояние службы АТС" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "Пароль" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "Настройки порта устройств SIP" - -msgid "Providers Used for Outgoing Calls" -msgstr "Провайдеры исходящих вызовов" - -msgid "QoS Settings" -msgstr "Установки QoS" - -msgid "RTP Port Range End" -msgstr "Конец диапазона портов RTP" - -msgid "RTP Port Range Start" -msgstr "Начало диапазоно портов RTP" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "Принимает входящие вызовы" - -msgid "Remote Usage" -msgstr "Удаленное использование" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "Учетные записи SIP" - -msgid "SIP Device/Softphone Accounts" -msgstr "Учетные записи SIP устройства/программного телефона" - -msgid "SIP Provider Accounts" -msgstr "Учетные записи SIP провайдера" - -msgid "SIP Realm (needed by some providers)" -msgstr "SIP Realm (нужен для некоторых провайдеров)" - -msgid "SIP Server/Registrar" -msgstr "SIP Сервер/Регистратор" - -msgid "SIP Server/Registrar Port" -msgstr "Порт SIP Сервера/Регистратора" - -msgid "Server Setting" -msgstr "Настройки сервера" - -msgid "Server Setting for Local SIP Devices" -msgstr "Установки сервера для локальных SIP устройств" - -msgid "Server Setting for Remote SIP Devices" -msgstr "Настройки сервера для удаленных SIP устройств" - -msgid "Service Status" -msgstr "Состояние сервиса" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "Черный список номеров (пробел между номерами для разделения)" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" -"Укажите отдельные номера. Нажмите enter, чтобы добавить больше номеров." - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" -"Использовать эту учетную запись для исходящих вызовов в соответстии с " -"наcтройками секции \"Маршрутизация вызовов\"." - -msgid "Use this account to make outgoing calls." -msgstr "Использовать эту учетную запись для исходящих вызовов" - -msgid "User Accounts" -msgstr "Учетные записи пользователя" - -msgid "User Agent String" -msgstr "Строка агента пользователя" - -msgid "User Name" -msgstr "Имя пользователя" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "Да" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "Здесь Вы можете указать имя для отображения вместо ID звонящего." - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -#~ msgid "" -#~ "Designate numbers that are allowed to call through this system and which " -#~ "user's privileges it will have." -#~ msgstr "" -#~ "Указать телефонные номера, которым разрешено осуществлять звонки через эту " -#~ "систему, а также какими они будут обладать пользовательскими привилегиями." - -#~ msgid "Account Status" -#~ msgstr "Статус учетной записи" - -#~ msgid "Account Status Message" -#~ msgstr "Статус сообщение учетной записи" - -#~ msgid "Domain Name/Dynamic Domain Name" -#~ msgstr "Имя домена/Динамическое имя домена" - -#~ msgid "Enable Incoming Calls (See Status, Message below)" -#~ msgstr "Разрешить входящие вызовы (см. статус, сообщение ниже)" - -#~ msgid "Service Control and Connection Status" -#~ msgstr "Управление сервисом и статус соединения" diff --git a/package/luci/applications/luci-app-pbx/po/sk/pbx.po b/package/luci/applications/luci-app-pbx/po/sk/pbx.po deleted file mode 100644 index 7b6d4a5c64..0000000000 --- a/package/luci/applications/luci-app-pbx/po/sk/pbx.po +++ /dev/null @@ -1,484 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/sv/pbx.po b/package/luci/applications/luci-app-pbx/po/sv/pbx.po deleted file mode 100644 index 400289b6bb..0000000000 --- a/package/luci/applications/luci-app-pbx/po/sv/pbx.po +++ /dev/null @@ -1,506 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-28 06:11+0200\n" -"Last-Translator: Umeaboy \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Avancerade inställningar" - -msgid "Available" -msgstr "Tillgänglig" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" -"Undvik att använda allt förutom alfa-numeriska karaktärer, mellanslag, komma-" -"tecken och punkt." - -msgid "Away" -msgstr "Borta" - -msgid "Blacklisted Numbers" -msgstr "Svartlistade nummer" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "Kopiera och klistra in ett stort antal nummer här." - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "Ringer upp nummer som inte passar någon annanstans" - -msgid "Do Not Disturb" -msgstr "Stör ej" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "Domän/IP-adress/Dynamisk domän" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "Dynamisk lista över svartlistade nummer" - -msgid "Email" -msgstr "E-post" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Aktivera inkommande samtal (Registrera via SIP)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "Aktivera inkommande samtal (se status nedanför)" - -msgid "Enable Outgoing Calls" -msgstr "Aktivera utgående samtal" - -msgid "Enabled" -msgstr "Aktiverat" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" -"Ange telefonnummer som du vill neka samtal från automatiskt. Du borde " -"förmodligen utesluta landskoden och eventuella inledande nollor, men " -"experimentera gärna för att vara säker på att du lyckas blockera nummer från " -"ditt önskade område." - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" -"Ange den här IP:n (eller IP:port) i Server/Registrar-inställningarna för SIP-" -"enheter som du endast kommer att använda LOKALT och aldrig från en " -"fjärrstyrd anslutning." - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" -"Ange det här värdnamnet (eller värdnamn:port) under Server/Registrar " -"inställningen för SIP-enheten som du kommer att använda från en fjärrstyrd " -"plats (de kommer att fungera lokalt också)." - -msgid "External SIP Port" -msgstr "Extern SIP-port" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "Fullständigt namn" - -msgid "General Settings" -msgstr "Allmänna inställningar" - -msgid "Google Accounts" -msgstr "Google-konton" - -msgid "Google Talk Status" -msgstr "Status för Google Talk" - -msgid "Google Talk Status Message" -msgstr "Statusmeddelande för Google Talk" - -msgid "Google Voice/Talk Accounts" -msgstr "Google Voice/Talk-konton" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "Inkommande samtal" - -msgid "Insert QoS Rules" -msgstr "För in QoS-regler" - -msgid "Makes Outgoing Calls" -msgstr "Gör utgående samtal" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "NOTERA: Det finns inga lokala användarkonton konfigurerade." - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" -"NOTERA: Det finns inga lokala användar-konton aktiverade för utgående samtal." - -msgid "No" -msgstr "Nej" - -msgid "Number of Seconds to Ring" -msgstr "Antal sekunder att ringa" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "Utgående samtal" - -msgid "PBX Main Page" -msgstr "Huvudsida för PBX" - -msgid "PBX Service Status" -msgstr "Status för PBX-tjänsten" - -msgid "PIN" -msgstr "PIN-kod" - -msgid "Password" -msgstr "Lösenord" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "Port-inställning för SIP-enheter" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "QoS-inställningar" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "Tar emot inkommande samtal" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "Ringer användare som är aktiverade för inkommande samtal" - -msgid "SIP Accounts" -msgstr "SIP-konton" - -msgid "SIP Device/Softphone Accounts" -msgstr "SIP-enhet/Softphone-konton" - -msgid "SIP Provider Accounts" -msgstr "SIP-operatörskonton" - -msgid "SIP Realm (needed by some providers)" -msgstr "SIP-sfär (behövs av vissa operatörer)" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "Server-inställning" - -msgid "Server Setting for Local SIP Devices" -msgstr "Server-inställning för lokala SIP-enheter" - -msgid "Server Setting for Remote SIP Devices" -msgstr "Server-inställning för fjärrstyrda SIP-enheter" - -msgid "Service Status" -msgstr "Status för tjänst" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" -"Specificera nummer individuellt här. Tryck på enter-knappen för att lägga " -"till fler nummer." - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" -"Det här valet borde vara inställt på \"Ja\" om du har ett DID (riktigt " -"telefonnummer) associerat med det här SIP-kontot eller om du vill ta emot " -"SIP uri-samtal via den här operatören." - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "Använd det här kontot för att göra utgående samtal." - -msgid "User Accounts" -msgstr "Användar-konton" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "Användarnamn" - -msgid "Uses providers enabled for outgoing calls" -msgstr "Använder operatörer för utgående samtal" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "Ja" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" -"Du kan specifiera ett riktigt namn som visas i samband med nummret här." - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/templates/pbx.pot b/package/luci/applications/luci-app-pbx/po/templates/pbx.pot deleted file mode 100644 index 86dd2eb72d..0000000000 --- a/package/luci/applications/luci-app-pbx/po/templates/pbx.pot +++ /dev/null @@ -1,477 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/tr/pbx.po b/package/luci/applications/luci-app-pbx/po/tr/pbx.po deleted file mode 100644 index 59af3e878d..0000000000 --- a/package/luci/applications/luci-app-pbx/po/tr/pbx.po +++ /dev/null @@ -1,484 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/uk/pbx.po b/package/luci/applications/luci-app-pbx/po/uk/pbx.po deleted file mode 100644 index d65a784435..0000000000 --- a/package/luci/applications/luci-app-pbx/po/uk/pbx.po +++ /dev/null @@ -1,501 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-13 15:47+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Розширені налаштування" - -msgid "Available" -msgstr "Доступний" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" -"Намагайтеся не використовувати нічого, крім алфавітно-цифрових символів, " -"пропусків, ком і крапок." - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "Маршрутизація Викликів" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "Виклик через номери" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -#, fuzzy -msgid "Do Not Disturb" -msgstr "Не турбувати" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -#, fuzzy -msgid "Dynamic List of Blacklisted Numbers" -msgstr "Динамічний список небажаних дзвінків" - -msgid "Email" -msgstr "Електронна скринька" - -#, fuzzy -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "Активувати вхідні дзвінки (зареєструватися через SIP)" - -#, fuzzy -msgid "Enable Incoming Calls (set Status below)" -msgstr "Активувати вхідні дзвінки (Встановити низький статус)" - -msgid "Enable Outgoing Calls" -msgstr "Активувати вихідні виклики" - -msgid "Enabled" -msgstr "Активувати" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -#, fuzzy -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" -"Введіть цей IP (або IP:порт) Сервера/Реєстратор налаштування SIP пристрою ви " -"будете використовувати тільки локально й ніколи з віддаленого місця." - -#, fuzzy -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" -"Введіть це хост ім'я (або ім'я хоста:порт) сервер/Реєстратор налаштування " -"SIP пристрою ви будете використовувати з віддаленого місця розташування " -"(воно також буде працювати локально)." - -msgid "External SIP Port" -msgstr "Зовнішній порт SIP" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "Повне Ім'я" - -msgid "General Settings" -msgstr "Загальні Налаштування" - -msgid "Google Accounts" -msgstr "Облікові записи Google" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "Ні" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "Облікові записи користувачів" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "Ім'я користувача" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "Так" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/vi/pbx.po b/package/luci/applications/luci-app-pbx/po/vi/pbx.po deleted file mode 100644 index 59af3e878d..0000000000 --- a/package/luci/applications/luci-app-pbx/po/vi/pbx.po +++ /dev/null @@ -1,484 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "" - -msgid "Away" -msgstr "" - -msgid "Blacklisted Numbers" -msgstr "" - -msgid "Call Routing" -msgstr "" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "" - -msgid "Copy-paste large lists of numbers here." -msgstr "" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "" - -msgid "Do Not Disturb" -msgstr "" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "" - -msgid "Enable Outgoing Calls" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Google Accounts" -msgstr "" - -msgid "Google Talk Status" -msgstr "" - -msgid "Google Talk Status Message" -msgstr "" - -msgid "Google Voice/Talk Accounts" -msgstr "" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "" - -msgid "Insert QoS Rules" -msgstr "" - -msgid "Makes Outgoing Calls" -msgstr "" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "" - -msgid "NOTE: There are no local user accounts configured." -msgstr "" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "" - -msgid "No" -msgstr "" - -msgid "Number of Seconds to Ring" -msgstr "" - -msgid "Outbound Proxy" -msgstr "" - -msgid "Outgoing Calls" -msgstr "" - -msgid "PBX Main Page" -msgstr "" - -msgid "PBX Service Status" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "" - -msgid "Providers Used for Outgoing Calls" -msgstr "" - -msgid "QoS Settings" -msgstr "" - -msgid "RTP Port Range End" -msgstr "" - -msgid "RTP Port Range Start" -msgstr "" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "" - -msgid "Remote Usage" -msgstr "" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "" - -msgid "SIP Device/Softphone Accounts" -msgstr "" - -msgid "SIP Provider Accounts" -msgstr "" - -msgid "SIP Realm (needed by some providers)" -msgstr "" - -msgid "SIP Server/Registrar" -msgstr "" - -msgid "SIP Server/Registrar Port" -msgstr "" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" diff --git a/package/luci/applications/luci-app-pbx/po/zh-cn/pbx.po b/package/luci/applications/luci-app-pbx/po/zh-cn/pbx.po deleted file mode 100644 index 45325b99c1..0000000000 --- a/package/luci/applications/luci-app-pbx/po/zh-cn/pbx.po +++ /dev/null @@ -1,495 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-15 16:11+0200\n" -"Last-Translator: Tanyingyu \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" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Available" -msgstr "可用" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "避免使用除字母,数字,空格,逗号和句号外的其他字符。" - -msgid "Away" -msgstr "外" - -msgid "Blacklisted Numbers" -msgstr "黑名单" - -msgid "Call Routing" -msgstr "呼叫路由" - -msgid "Call-back Numbers" -msgstr "回调数" - -msgid "Call-back Provider" -msgstr "回呼提供者" - -msgid "Call-through Numbers" -msgstr "通过数字呼叫" - -msgid "Copy-paste large lists of numbers here." -msgstr "复制粘贴数字大名单。" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "其他地方无法匹配拨号号码" - -msgid "Do Not Disturb" -msgstr "请勿打扰" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "域名/ IP地址/动态域名" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "动态黑名单号码列表" - -msgid "Email" -msgstr "电子邮件" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "允许电话呼入(SIP注册者)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "允许电话呼入(下面设置状态)" - -msgid "Enable Outgoing Calls" -msgstr "允许电话外呼" - -msgid "Enabled" -msgstr "允许" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" -"输入您想自动屏蔽的电话号码。您应该忽略国家代码和任何前导零,但请测试来确保您成" -"功屏蔽了想要屏蔽的号码。" - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" -"在SIP设备注册服务器中输入IP(或IP:端口),仅在本地使用,不可以在远程使用。" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" - -msgid "External SIP Port" -msgstr "外部SIP端口" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "全名" - -msgid "General Settings" -msgstr "通用设置" - -msgid "Google Accounts" -msgstr "google账号" - -msgid "Google Talk Status" -msgstr "google Talk状态" - -msgid "Google Talk Status Message" -msgstr "google Talk状态消息" - -msgid "Google Voice/Talk Accounts" -msgstr "Google Voice/Talk账号" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "呼入电话" - -msgid "Insert QoS Rules" -msgstr "插入QoS规则" - -msgid "Makes Outgoing Calls" -msgstr "安排外呼列表" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "注意:没有google或SIP提供者账户配置。" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "注意:没有google或SIP提供者账户允许呼入电话。" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "注意:没有google或SIP提供者账户允许外呼电话。" - -msgid "NOTE: There are no local user accounts configured." -msgstr "注意:没有本地用户设置。" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "注意:没有本地用户允许外呼电话。" - -msgid "No" -msgstr "不" - -msgid "Number of Seconds to Ring" -msgstr "多少秒振铃" - -msgid "Outbound Proxy" -msgstr "外呼代理" - -msgid "Outgoing Calls" -msgstr "外呼电话" - -msgid "PBX Main Page" -msgstr "PBX主页" - -msgid "PBX Service Status" -msgstr "PBX服务状态" - -msgid "PIN" -msgstr "PIN" - -msgid "Password" -msgstr "密码" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "SIP设备端口设置" - -msgid "Providers Used for Outgoing Calls" -msgstr "用于外呼电话的提供者" - -msgid "QoS Settings" -msgstr "QoS设置" - -msgid "RTP Port Range End" -msgstr "RTP结束端口" - -msgid "RTP Port Range Start" -msgstr "RTP起始端口" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "收到呼入电话" - -msgid "Remote Usage" -msgstr "远程使用" - -msgid "Rings users enabled for incoming calls" -msgstr "" - -msgid "SIP Accounts" -msgstr "SIP账号" - -msgid "SIP Device/Softphone Accounts" -msgstr "SIP 设备/软电话账号" - -msgid "SIP Provider Accounts" -msgstr "SIP提供者账户" - -msgid "SIP Realm (needed by some providers)" -msgstr "SIP Realm(一些供应商需要)" - -msgid "SIP Server/Registrar" -msgstr "SIP注册服务器" - -msgid "SIP Server/Registrar Port" -msgstr "SIP注册服务器端口" - -msgid "Server Setting" -msgstr "" - -msgid "Server Setting for Local SIP Devices" -msgstr "" - -msgid "Server Setting for Remote SIP Devices" -msgstr "" - -msgid "Service Status" -msgstr "" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "" - -msgid "User Accounts" -msgstr "" - -msgid "User Agent String" -msgstr "" - -msgid "User Name" -msgstr "" - -msgid "Uses providers enabled for outgoing calls" -msgstr "" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -#~ msgid "" -#~ "Designate numbers that are allowed to call through this system and which " -#~ "user's privileges it will have." -#~ msgstr "设定号码作为用户拥有使用交换机呼叫的权限。" diff --git a/package/luci/applications/luci-app-pbx/po/zh-tw/pbx.po b/package/luci/applications/luci-app-pbx/po/zh-tw/pbx.po deleted file mode 100644 index 603b9df585..0000000000 --- a/package/luci/applications/luci-app-pbx/po/zh-tw/pbx.po +++ /dev/null @@ -1,507 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-16 13:59+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Advanced Settings" -msgstr "進階設定" - -msgid "Available" -msgstr "可運用" - -msgid "" -"Avoid using anything but alpha-numeric characters, space, comma, and period." -msgstr "除了字母數字字符,空格,逗號和句號其它一概不用." - -msgid "Away" -msgstr "離線" - -msgid "Blacklisted Numbers" -msgstr "列入黑名單號碼" - -msgid "Call Routing" -msgstr "路由呼叫" - -msgid "Call-back Numbers" -msgstr "" - -msgid "Call-back Provider" -msgstr "" - -msgid "Call-through Numbers" -msgstr "通話接通號碼" - -msgid "Copy-paste large lists of numbers here." -msgstr "號碼大型清單複製貼上此地" - -msgid "" -"Designate numbers that are allowed to call through this system and which " -"user's privileges they will have." -msgstr "" - -msgid "" -"Designate numbers to whom the system will hang up and call back, which " -"provider will be used to call them, and which user's privileges will be " -"granted to them." -msgstr "" - -msgid "Dials numbers unmatched elsewhere" -msgstr "撥號它處號碼不符" - -msgid "Do Not Disturb" -msgstr "勿擾中" - -msgid "Domain/IP Address/Dynamic Domain" -msgstr "網域/IP位址/動態網域" - -msgid "Dynamic List of Blacklisted Numbers" -msgstr "黑名單動態列表" - -msgid "Email" -msgstr "郵件信箱" - -msgid "Enable Incoming Calls (Register via SIP)" -msgstr "啟用來話呼叫(透過SIP註冊)" - -msgid "Enable Incoming Calls (set Status below)" -msgstr "啟用來話呼叫(在下面設定狀態)" - -msgid "Enable Outgoing Calls" -msgstr "啟用外撥" - -msgid "Enabled" -msgstr "已啟用" - -msgid "" -"Enter a VoIP provider to use for call-back in the format username@some.host." -"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste " -"the providers from above. Invalid entries, including providers not enabled " -"for outgoing calls, will be rejected silently." -msgstr "" - -msgid "" -"Enter phone numbers that you want to decline calls from automatically. You " -"should probably omit the country code and any leading zeroes, but please " -"experiment to make sure you are blocking numbers from your desired area " -"successfully." -msgstr "" -"打入您允許自動通話的號碼. 您或許可以忽略國碼和0字開頭, 但僅供實驗以確保期望區" -"的號碼被阻斷成功." - -msgid "" -"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices " -"you will use ONLY locally and never from a remote location." -msgstr "" -"要設定SIP設備在Server/Registrar內打入IP(或IP:埠號)您僅能本地端使用絕不要打入" -"遠端位置" - -msgid "" -"Enter this hostname (or hostname:port) in the Server/Registrar setting of " -"SIP devices you will use from a remote location (they will work locally too)." -msgstr "" -"要設定SIP設備從遠端使用(在本地端也一樣能執行),在Server/Registrar內打入主機名" -"稱(或主機名稱:埠號)" - -msgid "External SIP Port" -msgstr "外部SIP埠號" - -msgid "" -"For each provider enabled for incoming calls, here you can restrict which " -"users to ring on incoming calls. If the list is empty, the system will " -"indicate that all users enabled for incoming calls will ring. Invalid " -"usernames will be rejected silently. Also, entering a username here " -"overrides the user's setting to not receive incoming calls. This way, you " -"can make certain users ring only for specific providers. Entries can be made " -"in a space-separated list, and/or one per line by hitting enter after every " -"one." -msgstr "" - -msgid "" -"For each user enabled for outgoing calls you can restrict what providers the " -"user can use for outgoing calls. By default all users can use all providers. " -"To show up in the list below the user should be allowed to make outgoing " -"calls in the \"User Accounts\" page. Enter VoIP providers in the format " -"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest " -"to copy and paste the providers from above. Invalid entries, including " -"providers not enabled for outgoing calls, will be rejected silently. Entries " -"can be made in a space-separated list, and/or one per line by hitting enter " -"after every one." -msgstr "" - -msgid "Full Name" -msgstr "全名" - -msgid "General Settings" -msgstr "一般設定" - -msgid "Google Accounts" -msgstr "Google帳戶" - -msgid "Google Talk Status" -msgstr "Google Talk狀態" - -msgid "Google Talk Status Message" -msgstr "Google Talk訊息狀態" - -msgid "Google Voice/Talk Accounts" -msgstr "Google 語音/簡訊帳戶" - -msgid "Hang-up Delay" -msgstr "" - -msgid "" -"Here you must configure at least one SIP account, that you will use to " -"register with this service. Use this account either in an Analog Telephony " -"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid " -"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By " -"default, all SIP accounts will ring simultaneously if a call is made to one " -"of your VoIP provider accounts or GV numbers." -msgstr "" - -msgid "" -"How long to wait before hanging up. If the provider you use to dial " -"automatically forwards to voicemail, you can set this value to a delay that " -"will allow you to hang up before your call gets forwarded and you get billed " -"for it." -msgstr "" - -msgid "" -"If setting Server/Registrar to %s or %s does not work for you, try setting " -"it to %s or %s and entering this port number in a separate field that " -"specifies the Server/Registrar port number. Beware that some devices have a " -"confusing setting that sets the port where SIP requests originate from on " -"the SIP device itself (the bind port). The port specified on this page is " -"NOT this bind port but the port this service listens on." -msgstr "" - -msgid "" -"If you experience jittery or high latency audio during heavy downloads, you " -"may want to enable QoS. QoS prioritizes traffic to and from your network for " -"specified ports and IP addresses, resulting in better latency and throughput " -"for sound in our case. If enabled below, a QoS rule for this service will be " -"configured by the PBX automatically, but you must visit the QoS " -"configuration page (Network->QoS) to configure other critical QoS settings " -"like Download and Upload speed." -msgstr "" - -msgid "" -"If you have more than one account that can make outgoing calls, you should " -"enter a list of phone numbers and/or prefixes in the following fields for " -"each provider listed. Invalid prefixes are removed silently, and only 0-9, " -"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z " -"matches 1-9, and N matches 2-9. For example to make calls to Germany through " -"a provider, you can enter 49. To make calls to North America, you can enter " -"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area " -"code like New York's 646, you can enter 646NXXXXXX for that provider. You " -"should leave one account with an empty list to make calls with it by " -"default, if no other provider's prefixes match. The system will " -"automatically replace an empty list with a message that the provider dials " -"all numbers not matched by another provider's prefixes. Be as specific as " -"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international " -"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a " -"space-separated list, and/or one per line by hitting enter after every one." -msgstr "" - -msgid "Incoming Calls" -msgstr "來電呼叫" - -msgid "Insert QoS Rules" -msgstr "插入QoS規則" - -msgid "Makes Outgoing Calls" -msgstr "開啟外撥" - -msgid "NOTE: There are no Google or SIP provider accounts configured." -msgstr "注意:尚缺Google或者SIP提供者帳戶被設置" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for incoming " -"calls." -msgstr "注意:尚缺Google或者SIP供應商帳戶被啟用才能接收來電呼叫" - -msgid "" -"NOTE: There are no Google or SIP provider accounts enabled for outgoing " -"calls." -msgstr "注意:尚缺Google或者SIP供應商帳戶被啟用才能外撥." - -msgid "NOTE: There are no local user accounts configured." -msgstr "注意:尚未設置本地端帳戶" - -msgid "NOTE: There are no local user accounts enabled for outgoing calls." -msgstr "注意:啟用本地端帳戶才能外撥" - -msgid "No" -msgstr "不" - -msgid "Number of Seconds to Ring" -msgstr "響鈴秒數" - -msgid "Outbound Proxy" -msgstr "外連代理" - -msgid "Outgoing Calls" -msgstr "去電外撥" - -msgid "PBX Main Page" -msgstr "PBX總機主頁" - -msgid "PBX Service Status" -msgstr "PBX服務狀態" - -msgid "PIN" -msgstr "PIN碼" - -msgid "Password" -msgstr "密碼" - -msgid "" -"Pick a random port number between 6500 and 9500 for the service to listen " -"on. Do not pick the standard 5060, because it is often subject to brute-" -"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in " -"the \"SIP Device/Softphone Accounts\" section for updated Server and Port " -"settings for your SIP Devices/Softphones." -msgstr "" - -msgid "Port Setting for SIP Devices" -msgstr "SIP設備的埠號設置" - -msgid "Providers Used for Outgoing Calls" -msgstr "已採用的外撥供應商" - -msgid "QoS Settings" -msgstr "QoS語音品質設置" - -msgid "RTP Port Range End" -msgstr "RTP協定埠域結束" - -msgid "RTP Port Range Start" -msgstr "RTP協定埠域啟始" - -msgid "" -"RTP traffic carries actual voice packets. This is the start of the port " -"range that will be used for setting up RTP communication. It's usually OK to " -"leave this at the default value." -msgstr "" - -msgid "Receives Incoming Calls" -msgstr "接受來電呼叫" - -msgid "Remote Usage" -msgstr "遠端啟用" - -msgid "Rings users enabled for incoming calls" -msgstr "來電呼叫時震鈴通知使用者" - -msgid "SIP Accounts" -msgstr "SIP帳戶" - -msgid "SIP Device/Softphone Accounts" -msgstr "SIP設備/軟體式手機帳戶" - -msgid "SIP Provider Accounts" -msgstr "SIP供應商帳戶" - -msgid "SIP Realm (needed by some providers)" -msgstr "SIP領域(某些供應商需用到)" - -msgid "SIP Server/Registrar" -msgstr "SIP伺服器/登記處" - -msgid "SIP Server/Registrar Port" -msgstr "SIP伺服器/登記埠" - -msgid "Server Setting" -msgstr "伺服器設置" - -msgid "Server Setting for Local SIP Devices" -msgstr "本地SIP設備的伺服器設置" - -msgid "Server Setting for Remote SIP Devices" -msgstr "遠端SIP設備的伺服器設置" - -msgid "Service Status" -msgstr "服務狀態" - -msgid "" -"Set the number of seconds to ring users upon incoming calls before hanging " -"up or going to voicemail, if the voicemail is installed and enabled." -msgstr "" - -msgid "Space-Separated List of Blacklisted Numbers" -msgstr "以空格分隔的黑名單號碼列表" - -msgid "Specify numbers individually here. Press enter to add more numbers." -msgstr "在此指定獨立號碼. 按enter 可新增更多號碼" - -msgid "" -"Specify numbers individually here. Press enter to add more numbers. You will " -"have to experiment with what country and area codes you need to add to the " -"number." -msgstr "" - -msgid "" -"The number(s) specified above will be able to dial out with this user's " -"providers. Invalid usernames, including users not enabled for outgoing " -"calls, are dropped silently. Please verify that the entry was accepted." -msgstr "" - -msgid "" -"This configuration page allows you to configure a phone system (PBX) service " -"which permits making phone calls through multiple Google and SIP (like " -"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP " -"devices. Note that Google accounts, SIP accounts, and local user accounts " -"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User " -"Accounts\" sub-sections. You must add at least one User Account to this PBX, " -"and then configure a SIP device or softphone to use the account, in order to " -"make and receive calls with your Google/SIP accounts. Configuring multiple " -"users will allow you to make free calls between all users, and share the " -"configured Google and SIP accounts. If you have more than one Google and SIP " -"accounts set up, you should probably configure how calls to and from them " -"are routed in the \"Call Routing\" page. If you're interested in using your " -"own PBX from anywhere in the world, then visit the \"Remote Usage\" section " -"in the \"Advanced Settings\" page." -msgstr "" - -msgid "" -"This is the name that the VoIP server will use to identify itself when " -"registering to VoIP (SIP) providers. Some providers require this to a " -"specific string matching a hardware SIP device." -msgstr "" - -msgid "" -"This is where you indicate which Google/SIP accounts are used to call what " -"country/area codes, which users can use what SIP/Google accounts, how " -"incoming calls are routed, what numbers can get into this PBX with a " -"password, and what numbers are blacklisted." -msgstr "" - -msgid "" -"This is where you set up your Google (Talk and Voice) Accounts, in order to " -"start using them for dialing and receiving calls (voice chat and real phone " -"calls). Please make at least one voice call using the Google Talk plugin " -"installable through the GMail interface, and then log out from your account " -"everywhere. Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This is where you set up your SIP (VoIP) accounts ts like Sipgate, " -"SipSorcery, the popular Betamax providers, and any other providers with SIP " -"settings in order to start using them for dialing and receiving calls (SIP " -"uri and real phone calls). Click \"Add\" to add as many accounts as you wish." -msgstr "" - -msgid "" -"This option should be set to \"Yes\" if you have a DID (real telephone " -"number) associated with this SIP account or want to receive SIP uri calls " -"through this provider." -msgstr "" - -msgid "" -"This section contains settings that do not need to be changed under normal " -"circumstances. In addition, here you can configure your system for use with " -"remote SIP devices, and resolve call quality issues by enabling the " -"insertion of QoS rules." -msgstr "" - -msgid "" -"Use (four to five digit) numeric user name if you are connecting normal " -"telephones with ATAs to this system (so they can dial user names)." -msgstr "" - -msgid "" -"Use this account to make outgoing calls as configured in the \"Call Routing" -"\" section." -msgstr "" - -msgid "Use this account to make outgoing calls." -msgstr "使用這個帳號外撥." - -msgid "User Accounts" -msgstr "使用者帳號" - -msgid "User Agent String" -msgstr "用戶代理字串" - -msgid "User Name" -msgstr "用戶名稱" - -msgid "Uses providers enabled for outgoing calls" -msgstr "採用供應商啟用以便外撥" - -msgid "" -"When somebody starts voice chat with your GTalk account or calls the GVoice, " -"number (if you have Google Voice), the call will be forwarded to any users " -"that are online (registered using a SIP device or softphone) and permitted " -"to receive the call. If you have Google Voice, you must go to your GVoice " -"settings and forward calls to Google chat in order to actually receive calls " -"made to your GVoice number. If you have trouble receiving calls from GVoice, " -"experiment with the Call Screening option in your GVoice Settings. Finally, " -"make sure no other client is online with this account (browser in gmail, " -"mobile/desktop Google Talk App) as it may interfere." -msgstr "" - -msgid "" -"When your password is saved, it disappears from this field and is not " -"displayed for your protection. The previously saved password will be changed " -"only when you enter a value different from the saved one." -msgstr "" - -msgid "Yes" -msgstr "是" - -msgid "" -"You can enter your domain name, external IP address, or dynamic domain name " -"here. The best thing to input is a static IP address. If your IP address is " -"dynamic and it changes, your configuration will become invalid. Hence, it's " -"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS " -"hostname here. You can configure Dynamic DNS with the luci-app-ddns package." -msgstr "" - -msgid "You can specify a real name to show up in the Caller ID here." -msgstr "您可以在此指定一個真實名稱以便顯示在來電ID" - -msgid "" -"You can use your SIP devices/softphones with this system from a remote " -"location as well, as long as your Internet Service Provider gives you a " -"public IP. You will be able to call other local users for free (e.g. other " -"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls " -"as if you were local to the PBX. After configuring this tab, go back to " -"where users are configured and see the new Server and Port setting you need " -"to configure the remote SIP devices with. Please note that if this PBX is " -"not running on your router/gateway, you will need to configure port " -"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP " -"port and RTP range) to the IP address of the device running this PBX." -msgstr "" -"不管多遠,只要能取得ISP提供的公眾合法IP,依然可以使用這個系統的SIP設備/PC電話表" -"現一樣的好.您將能夠免費呼叫其他本地端用戶(e.g 其它類比電話機(ATAs)和使用您的" -"VoIP供應商講電話就像您在使用本地的PBX總機電話一樣.在設定這個標籤後, 需回到用" -"戶設定並且查看新的伺服器和埠設定以便能設定遠端SIP設備.請注意假如PBX總機若不在" -"您的路由器/GW上執行,您將必須在您的路由器/GW上設定埠轉發(NAT).在PBX主機上請轉" -"發下列(SIP埠+RTP所採用的範圍埠)埠號址定到跑PBX服務設備上的IP位址." - -msgid "" -"Your PIN disappears when saved for your protection. It will be changed only " -"when you enter a value different from the saved one. Leaving the PIN empty " -"is possible, but please beware of the security implications." -msgstr "" -"當存檔時為保護起見您的PIN碼將不會顯示. 除非您打入不同於原始存檔的值它才會變" -"更. 也可以把PIN碼保留空白, 但要提防會有安全的隱憂." - -msgid "" -"Your password disappears when saved for your protection. It will be changed " -"only when you enter a value different from the saved one." -msgstr "" -"當存檔時為保護起見您的密碼將不會顯示. 除非您打入不同於原始存檔的值它才會變更." - -#~ msgid "" -#~ "Designate numbers that are allowed to call through this system and which " -#~ "user's privileges it will have." -#~ msgstr "依據系統和戶用的權限允許通話的指定號碼" diff --git a/package/luci/applications/luci-app-pbx/root/etc/config/pbx b/package/luci/applications/luci-app-pbx/root/etc/config/pbx deleted file mode 100644 index ca7c1669d0..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/config/pbx +++ /dev/null @@ -1 +0,0 @@ -config 'main' 'connection_status' diff --git a/package/luci/applications/luci-app-pbx/root/etc/config/pbx-advanced b/package/luci/applications/luci-app-pbx/root/etc/config/pbx-advanced deleted file mode 100644 index 39da6f880c..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/config/pbx-advanced +++ /dev/null @@ -1,5 +0,0 @@ -config 'settings' 'advanced' - option 'useragent' 'PBX' - option 'ringtime' '30' - option 'rtpstart' '19850' - option 'rtpend' '19900' diff --git a/package/luci/applications/luci-app-pbx/root/etc/config/pbx-calls b/package/luci/applications/luci-app-pbx/root/etc/config/pbx-calls deleted file mode 100644 index 822bd4a1be..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/config/pbx-calls +++ /dev/null @@ -1,7 +0,0 @@ -config 'call_routing' 'outgoing_calls' - -config 'call_routing' 'incoming_calls' - -config 'call_routing' 'providers_user_can_use' - -config 'call_routing' 'blacklisting' diff --git a/package/luci/applications/luci-app-pbx/root/etc/config/pbx-google b/package/luci/applications/luci-app-pbx/root/etc/config/pbx-google deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/package/luci/applications/luci-app-pbx/root/etc/config/pbx-users b/package/luci/applications/luci-app-pbx/root/etc/config/pbx-users deleted file mode 100644 index a4277b1bfe..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/config/pbx-users +++ /dev/null @@ -1 +0,0 @@ -config 'user' 'server' diff --git a/package/luci/applications/luci-app-pbx/root/etc/config/pbx-voip b/package/luci/applications/luci-app-pbx/root/etc/config/pbx-voip deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/package/luci/applications/luci-app-pbx/root/etc/init.d/pbx-asterisk b/package/luci/applications/luci-app-pbx/root/etc/init.d/pbx-asterisk deleted file mode 100755 index e05ae11cd6..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/init.d/pbx-asterisk +++ /dev/null @@ -1,837 +0,0 @@ -#!/bin/sh /etc/rc.common -# -# Copyright 2011 Iordan Iordanov -# -# This file is part of luci-pbx. -# -# luci-pbx is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# luci-pbx is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with luci-pbx. If not, see . - -. /lib/functions.sh - -START=60 - -# Some global variables -MODULENAME=pbx -USERAGENT="PBX" -HANGUPCNTXT=hangup-call-context -GTALKUNVL=unavailable - -ASTUSER=nobody -ASTGROUP=nogroup -ASTDIRSRECURSIVE="/var/run/asterisk /var/log/asterisk /var/spool/asterisk" -ASTDIRS="/usr/lib/asterisk" -ASTSOUNDSDIR="/usr/lib/asterisk/sounds" - -TEMPLATEDIR=/etc/${MODULENAME}-asterisk -PBXSOUNDSDIR=$TEMPLATEDIR/sounds -VMTEMPLATEDIR=/etc/${MODULENAME}-voicemail -VMSOUNDSDIR=$VMTEMPLATEDIR/sounds -ASTERISKDIR=/etc/asterisk -WORKDIR=/tmp/$MODULENAME.$$ -MD5SUMSFILE=/tmp/$MODULENAME-sums.$$ - -TMPL_ASTERISK=$TEMPLATEDIR/asterisk.conf.TEMPLATE -TMPL_GTALK=$TEMPLATEDIR/gtalk.conf.TEMPLATE -TMPL_INDICATIONS=$TEMPLATEDIR/indications.conf.TEMPLATE -TMPL_LOGGER=$TEMPLATEDIR/logger.conf.TEMPLATE -TMPL_MANAGER=$TEMPLATEDIR/manager.conf.TEMPLATE -TMPL_MODULES=$TEMPLATEDIR/modules.conf.TEMPLATE -TMPL_RTP=$TEMPLATEDIR/rtp.conf.TEMPLATE - -TMPL_EXTCTHRUCHECKHDR=$TEMPLATEDIR/extensions_disa-check_header.conf.TEMPLATE -TMPL_EXTCTHRUCHECK=$TEMPLATEDIR/extensions_disa-check.conf.TEMPLATE -TMPL_EXTCTHRUCHECKFTR=$TEMPLATEDIR/extensions_disa-check_footer.conf.TEMPLATE -TMPL_EXTCTHRUHDR=$TEMPLATEDIR/extensions_disa_header.conf.TEMPLATE -TMPL_EXTCTHRU=$TEMPLATEDIR/extensions_disa.conf.TEMPLATE -TMPL_EXTCTHRUNOPIN=$TEMPLATEDIR/extensions_disa-nopin.conf.TEMPLATE - -TMPL_EXTCBACKCHECKHDR=$TEMPLATEDIR/extensions_callback-check_header.conf.TEMPLATE -TMPL_EXTCBACKCHECK=$TEMPLATEDIR/extensions_callback-check.conf.TEMPLATE -TMPL_EXTCBACKCHECKFTR=$TEMPLATEDIR/extensions_callback-check_footer.conf.TEMPLATE -TMPL_EXTCBACKHDR=$TEMPLATEDIR/extensions_callback_header.conf.TEMPLATE -TMPL_EXTCBACKSIP=$TEMPLATEDIR/extensions_callback_sip.conf.TEMPLATE -TMPL_EXTCBACKGTALK=$TEMPLATEDIR/extensions_callback_gtalk.conf.TEMPLATE - -TMPL_EXTENSIONS=$TEMPLATEDIR/extensions.conf.TEMPLATE - -TMPL_EXTVMDISABLED=$TEMPLATEDIR/extensions_voicemail_disabled.conf.TEMPLATE -TMPL_EXTVMENABLED=$TEMPLATEDIR/extensions_voicemail_enabled.conf.TEMPLATE - -TMPL_EXTBLKLIST=$TEMPLATEDIR/extensions_blacklist.conf.TEMPLATE -TMPL_EXTBLKLISTFTR=$TEMPLATEDIR/extensions_blacklist_footer.conf.TEMPLATE -TMPL_EXTBLKLISTHDR=$TEMPLATEDIR/extensions_blacklist_header.conf.TEMPLATE - -TMPL_EXTDEFAULT=$TEMPLATEDIR/extensions_default.conf.TEMPLATE -TMPL_EXTDEFAULTUSER=$TEMPLATEDIR/extensions_default_user.conf.TEMPLATE - -TMPL_EXTINCNTXTSIP=$TEMPLATEDIR/extensions_incoming_context_sip.conf.TEMPLATE -TMPL_EXTINCNTXTGTALKHDR=$TEMPLATEDIR/extensions_incoming_context_gtalk_header.conf.TEMPLATE -TMPL_EXTINCNTXTGTALK=$TEMPLATEDIR/extensions_incoming_context_gtalk.conf.TEMPLATE - -TMPL_EXTUSERCNTXT=$TEMPLATEDIR/extensions_user_context.conf.TEMPLATE -TMPL_EXTUSERCNTXTFTR=$TEMPLATEDIR/extensions_user_context_footer.conf.TEMPLATE -TMPL_EXTUSERCNTXTHDR=$TEMPLATEDIR/extensions_user_context_header.conf.TEMPLATE - -TMPL_EXTOUTHDR=$TEMPLATEDIR/extensions_default_outgoing_header.conf.TEMPLATE -TMPL_EXTOUTGTALK=$TEMPLATEDIR/extensions_outgoing_gtalk.conf.TEMPLATE -TMPL_EXTOUTLOCAL=$TEMPLATEDIR/extensions_outgoing_dial_local_user.conf.TEMPLATE -TMPL_EXTOUTSIP=$TEMPLATEDIR/extensions_outgoing_sip.conf.TEMPLATE - -TMPL_JABBER=$TEMPLATEDIR/jabber.conf.TEMPLATE -TMPL_JABBERUSER=$TEMPLATEDIR/jabber_users.conf.TEMPLATE -TMPL_SIP=$TEMPLATEDIR/sip.conf.TEMPLATE -TMPL_SIPPEER=$TEMPLATEDIR/sip_peer.TEMPLATE -TMPL_SIPREG=$TEMPLATEDIR/sip_registration.TEMPLATE -TMPL_SIPUSR=$TEMPLATEDIR/sip_user.TEMPLATE - -TMPL_MSMTPDEFAULT=$VMTEMPLATEDIR/pbx-msmtprc-defaults.TEMPLATE -TMPL_MSMTPACCOUNT=$VMTEMPLATEDIR/pbx-msmtprc-account.TEMPLATE -TMPL_MSMTPAUTH=$VMTEMPLATEDIR/pbx-msmtprc-account-auth.TEMPLATE -TMPL_MSMTPACCTDFLT=$VMTEMPLATEDIR/pbx-msmtprc-account-default.TEMPLATE - - -INCLUDED_FILES="$WORKDIR/extensions_blacklist.conf $WORKDIR/extensions_callthrough.conf\ - $WORKDIR/extensions_incoming.conf $WORKDIR/extensions_incoming_gtalk.conf\ - $WORKDIR/extensions_user.conf $WORKDIR/jabber_users.conf\ - $WORKDIR/sip_peers.conf $WORKDIR/sip_registrations.conf\ - $WORKDIR/sip_users.conf $WORKDIR/extensions_voicemail.conf\ - $WORKDIR/extensions_default.conf" - - -# In this string, we concatenate all local users enabled to receive calls -# readily formatted for the Dial command. -localusers_to_ring="" - -# In this string, we keep a list of all users that are enabled for outgoing -# calls. It is used at the end to create the user contexts. -localusers_can_dial="" - -# In this string, we put together a space-separated list of provider names -# (alphanumeric, with all non-alpha characters replaced with underscores), -# which will be used to dial out by default (whose outgoing contexts will -# be included in users' contexts by default. -outbound_providers="" -sip_outbound_providers="" -gtalk_outbound_providers="" - -# Function which escapes non-alpha-numeric characters in a string -escape_non_alpha() { - echo $@ | sed 's/\([^a-zA-Z0-9]\)/\\\1/g' -} - -# Function which replaces non-alpha-numeric characters with an underscore -sub_underscore_for_non_alpha() { - echo $@ | sed 's/[^a-zA-Z0-9]/_/g' -} - -# Copies the template files which we don't edit. -copy_unedited_templates_over() -{ - cp $TMPL_ASTERISK $WORKDIR/asterisk.conf - cp $TMPL_GTALK $WORKDIR/gtalk.conf - cp $TMPL_INDICATIONS $WORKDIR/indications.conf - cp $TMPL_LOGGER $WORKDIR/logger.conf - cp $TMPL_MANAGER $WORKDIR/manager.conf - cp $TMPL_MODULES $WORKDIR/modules.conf - # If this file isn't present at this stage, voicemail is disabled. - [ ! -f $WORKDIR/extensions_voicemail.conf ] && \ - cp $TMPL_EXTVMDISABLED $WORKDIR/extensions_voicemail.conf -} - -# Touches all the included files, to prevent asterisk from refusing to -# start if a config item is missing and an included config file isn't created. -create_included_files() -{ - touch $INCLUDED_FILES -} - -# Puts together all the extensions.conf related configuration. -pbx_create_extensions_config() -{ - local ringtime - config_get ringtime advanced ringtime - - sed "s/|RINGTIME|/$ringtime/" $TMPL_EXTENSIONS > $WORKDIR/extensions.conf - mv $WORKDIR/inext.TMP $WORKDIR/extensions_incoming.conf - cp $TMPL_EXTINCNTXTGTALKHDR $WORKDIR/extensions_incoming_gtalk.conf - cat $WORKDIR/outextgtalk.TMP >> $WORKDIR/extensions_incoming_gtalk.conf 2>/dev/null - rm -f $WORKDIR/outextgtalk.TMP - mv $WORKDIR/blacklist.TMP $WORKDIR/extensions_blacklist.conf - mv $WORKDIR/userext.TMP $WORKDIR/extensions_user.conf - - cp $TMPL_EXTCTHRUHDR $WORKDIR/extensions_callthrough.conf - cat $WORKDIR/callthrough.TMP >> $WORKDIR/extensions_callthrough.conf 2>/dev/null - rm -f $WORKDIR/callthrough.TMP - cat $TMPL_EXTCTHRUCHECKHDR >> $WORKDIR/extensions_callthrough.conf 2>/dev/null - cat $WORKDIR/callthroughcheck.TMP >> $WORKDIR/extensions_callthrough.conf 2>/dev/null - rm -f $WORKDIR/callthroughcheck.TMP - cat $TMPL_EXTCTHRUCHECKFTR >> $WORKDIR/extensions_callthrough.conf 2>/dev/null - - cp $TMPL_EXTCBACKHDR $WORKDIR/extensions_callback.conf - cat $WORKDIR/callback.TMP >> $WORKDIR/extensions_callback.conf 2>/dev/null - rm -f $WORKDIR/callback.TMP - cat $TMPL_EXTCBACKCHECKHDR >> $WORKDIR/extensions_callback.conf 2>/dev/null - cat $WORKDIR/callbackcheck.TMP >> $WORKDIR/extensions_callback.conf 2>/dev/null - rm -f $WORKDIR/callbackcheck.TMP - cat $TMPL_EXTCBACKCHECKFTR >> $WORKDIR/extensions_callback.conf 2>/dev/null - - rm -f $WORKDIR/outext-*.TMP - rm -f $WORKDIR/localext.TMP - sed "s/|LOCALUSERS|/$localusers_to_ring/g" $TMPL_EXTDEFAULT \ - > $WORKDIR/extensions_default.conf - cat $WORKDIR/inextuser.TMP >> $WORKDIR/extensions_default.conf - rm -f $WORKDIR/inextuser.TMP -} - -# Puts together all the sip.conf related configuration. -pbx_create_sip_config() -{ - mv $WORKDIR/sip_regs.TMP $WORKDIR/sip_registrations.conf - mv $WORKDIR/sip_peers.TMP $WORKDIR/sip_peers.conf - mv $WORKDIR/sip_users.TMP $WORKDIR/sip_users.conf -} - -# Creates the jabber.conf related config -pbx_create_jabber_config() -{ - cp $TMPL_JABBER $WORKDIR/jabber.conf - mv $WORKDIR/jabber.TMP $WORKDIR/jabber_users.conf -} - -# Gets rid of any config files from $ASTERISKDIR not found in $WORKDIR. -clean_up_asterisk_config_dir() -{ - for f in $ASTERISKDIR/* ; do - basef="`basename $f`" - if [ ! -e "$WORKDIR/$basef" ] ; then - rm -rf "$f" - fi - done -} - -# Compares md5sums of the config files in $WORKDIR to those -# in $ASTERISKDIR, and copies only changed files over to reduce -# wear on flash in embedded devices. -compare_configs_and_copy_changed() -{ - # First, compute md5sums of the config files in $WORKDIR. - cd $WORKDIR/ - md5sum * > $MD5SUMSFILE - - # Now, check the files in $ASTERISKDIR against the md5sums. - cd $ASTERISKDIR/ - changed_files="`md5sum -c $MD5SUMSFILE 2>/dev/null | fgrep ": FAILED" | awk -F: '{print $1}'`" - - rm -f $MD5SUMSFILE - - [ -z "$changed_files" ] && return - - # Now copy over the changed files. - for f in $changed_files ; do - cp "$WORKDIR/$f" "$ASTERISKDIR/$f" - done -} - -# Calls the functions that create the final config files -# Calls the function which compares which files have changed -# Puts the final touches on $ASTERISKDIR -# Gets rid of $WORKDIR -pbx_assemble_and_copy_config() -{ - mkdir -p $ASTERISKDIR - - copy_unedited_templates_over - create_included_files - pbx_create_extensions_config - pbx_create_sip_config - pbx_create_jabber_config - - touch $WORKDIR/features.conf - - # At this point, $WORKDIR should contain a complete, working config. - clean_up_asterisk_config_dir - - compare_configs_and_copy_changed - - [ ! -d $ASTERISKDIR/manager.d ] && mkdir -p $ASTERISKDIR/manager.d/ - - # Get rid of the working directory - rm -rf $WORKDIR/ -} - -# Creates configuration for a user and adds it to the temporary file that holds -# all users configured so far. -pbx_add_user() -{ - local fullname - local defaultuser - local rawdefaultuser - local secret - local ring - local can_call - - config_get fullname $1 fullname - fullname=`escape_non_alpha $fullname` - config_get rawdefaultuser $1 defaultuser - defaultuser=`escape_non_alpha $rawdefaultuser` - config_get secret $1 secret - secret=`escape_non_alpha $secret` - config_get ring $1 ring - config_get can_call $1 can_call - - [ -z "$defaultuser" -o -z "$secret" ] && return - [ -z "$fullname" ] && fullname="$defaultuser" - - sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_SIPUSR > $WORKDIR/sip_user.tmp - - if [ "$can_call" = "yes" ] ; then - # Add user to list of all users that are allowed to make calls. - localusers_can_dial="$localusers_can_dial $rawdefaultuser" - sed -i "s/|CONTEXTNAME|/$defaultuser/g" $WORKDIR/sip_user.tmp - else - sed -i "s/|CONTEXTNAME|/$HANGUPCNTXT/g" $WORKDIR/sip_user.tmp - fi - - # Add this user's configuration to the temp file containing all user configs. - sed "s/|FULLNAME|/$fullname/" $WORKDIR/sip_user.tmp |\ - sed "s/|SECRET|/$secret/g" >> $WORKDIR/sip_users.TMP - - if [ "$ring" = "yes" ] ; then - if [ -z "$localusers_to_ring" ] ; then - localusers_to_ring="SIP\/$defaultuser" - else - localusers_to_ring="$localusers_to_ring\&SIP\/$defaultuser" - fi - fi - - # Add configuration which allows local users to call each other. - sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_EXTOUTLOCAL >> $WORKDIR/localext.TMP - - # Add configuration which puts calls to users through the default - # context, so that blacklists and voicemail take effect for this user. - sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_EXTDEFAULTUSER >> $WORKDIR/inextuser.TMP - - rm -f $WORKDIR/sip_user.tmp -} - -# Creates configuration for a Google account, and adds it to the temporary file that holds -# all accounts configured so far. -# Also creates the outgoing extensions which are used in users' outgoing contexts. -pbx_add_jabber() -{ - local username - local secret - local numprefix - local register - local make_outgoing_calls - local name - local users_to_ring - local status - local statusmessage - - config_get username $1 username - username=`escape_non_alpha $username` - config_get secret $1 secret - secret=`escape_non_alpha $secret` - #TODO: Is this really necessary here? Numprefix is retrieved below. - config_get numprefix $1 numprefix - config_get register $1 register - config_get make_outgoing_calls $1 make_outgoing_calls - config_get name $1 name - config_get status $1 status - status=`escape_non_alpha $status` - config_get statusmessage $1 statusmessage - statusmessage=`escape_non_alpha $statusmessage` - - [ -z "$username" -o -z "$secret" ] && return - - # Construct a jabber entry for this provider. - sed "s/|USERNAME|/$username/g" $TMPL_JABBERUSER |\ - sed "s/|NAME|/$name/g" > $WORKDIR/jabber.tmp - - if [ "$register" = yes ] ; then - # If this provider is enabled for incoming calls, we need to set the - # status of the user to something other than unavailable in order to receive calls. - sed -i "s/|STATUS|/$status/g" $WORKDIR/jabber.tmp - sed -i "s/|STATUSMESSAGE|/\"$statusmessage\"/g" $WORKDIR/jabber.tmp - - users_to_ring="`uci -q get ${MODULENAME}-calls.incoming_calls.$name`" - # If no users have been specified to ring, we ring all users enabled for incoming calls. - if [ -z "$users_to_ring" ] ; then - users_to_ring=$localusers_to_ring - else - # Else, we cook up a string formatted for the Dial command - # with the specified users (SIP/user1&SIP/user2&...). We do it - # with set, shift and a loop in order to be more tolerant of ugly whitespace - # messes entered by users. - set $users_to_ring - users_to_ring="SIP\/$1" && shift - for u in $@ ; do u=`escape_non_alpha $u` ; users_to_ring=$users_to_ring\\\&SIP\\\/$u ; done - fi - - # Now, we add this account to the gtalk incoming context. - sed "s/|USERNAME|/$username/g" $TMPL_EXTINCNTXTGTALK |\ - sed "s/|LOCALUSERS|/$users_to_ring/g" >> $WORKDIR/outextgtalk.TMP - else - sed -i "s/|STATUS|/$GTALKUNVL/g" $WORKDIR/jabber.tmp - sed -i "s/|STATUSMESSAGE|/\"\"/g" $WORKDIR/jabber.tmp - fi - - # Add this account's configuration to the temp file containing all account configs. - sed "s/|SECRET|/$secret/g" $WORKDIR/jabber.tmp >> $WORKDIR/jabber.TMP - - # If this provider is enabled for outgoing calls. - if [ "$make_outgoing_calls" = "yes" ] ; then - - numprefix="`uci -q get ${MODULENAME}-calls.outgoing_calls.$name`" - - # If no prefixes are specified, then we use "X" which matches any prefix. - [ -z "$numprefix" ] && numprefix="X" - - for p in $numprefix ; do - p=`escape_non_alpha $p` - sed "s/|NUMPREFIX|/$p/g" $TMPL_EXTOUTGTALK |\ - sed "s/|NAME|/$name/g" >> $WORKDIR/outext-$name.TMP - done - - # Add this provider to the list of enabled outbound providers. - if [ -z "$outbound_providers" ] ; then - outbound_providers="$name" - else - outbound_providers="$outbound_providers $name" - fi - - # Add this provider to the list of enabled gtalk outbound providers. - if [ -z "$gtalk_outbound_providers" ] ; then - gtalk_outbound_providers="$name" - else - gtalk_outbound_providers="$gtalk_outbound_providers $name" - fi - fi - - rm -f $WORKDIR/jabber.tmp -} - -# Creates configuration for a SIP provider account, and adds it to the temporary file that holds -# all accounts configured so far. -# Also creates the outgoing extensions which are used in users' outgoing contexts. -pbx_add_peer() -{ - local defaultuser - local secret - local host - local fromdomain - local register - local numprefix - local make_outgoing_calls - local name - local users_to_ring - local port - local outboundproxy - - config_get defaultuser $1 defaultuser - defaultuser=`escape_non_alpha $defaultuser` - config_get secret $1 secret - secret=`escape_non_alpha $secret` - config_get host $1 host - host=`escape_non_alpha $host` - config_get port $1 port - config_get outbountproxy $1 outboundproxy - outbountproxy=`escape_non_alpha $outbountproxy` - config_get fromdomain $1 fromdomain - fromdomain=`escape_non_alpha $fromdomain` - config_get register $1 register - config_get numprefix $1 numprefix - config_get make_outgoing_calls $1 make_outgoing_calls - config_get name $1 name - - [ -z "$defaultuser" -o -z "$secret" -o -z "$host" ] && return - [ -z "$fromdomain" ] && fromdomain=$host - [ -n "$port" ] && port="port=$port" - [ -n "$outboundproxy" ] && outboundproxy="outboundproxy=$outboundproxy" - - # Construct a sip peer entry for this provider. - sed "s/|DEFAULTUSER|/$defaultuser/" $TMPL_SIPPEER > $WORKDIR/sip_peer.tmp - sed -i "s/|NAME|/$name/" $WORKDIR/sip_peer.tmp - sed -i "s/|FROMUSER|/$defaultuser/" $WORKDIR/sip_peer.tmp - sed -i "s/|SECRET|/$secret/" $WORKDIR/sip_peer.tmp - sed -i "s/|HOST|/$host/" $WORKDIR/sip_peer.tmp - sed -i "s/|PORT|/$port/" $WORKDIR/sip_peer.tmp - sed -i "s/|OUTBOUNDPROXY|/$outboundproxy/" $WORKDIR/sip_peer.tmp - # Add this account's configuration to the temp file containing all account configs. - sed "s/|FROMDOMAIN|/$host/" $WORKDIR/sip_peer.tmp >> $WORKDIR/sip_peers.TMP - - # If this provider is enabled for incoming calls. - if [ "$register" = "yes" ] ; then - # Then we create a registration string for this provider. - sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_SIPREG > $WORKDIR/sip_reg.tmp - sed -i "s/|SECRET|/$secret/g" $WORKDIR/sip_reg.tmp - sed "s/|NAME|/$name/g" $WORKDIR/sip_reg.tmp >> $WORKDIR/sip_regs.TMP - - users_to_ring="`uci -q get ${MODULENAME}-calls.incoming_calls.$name`" - # If no users have been specified to ring, we ring all users enabled for incoming calls. - if [ -z "$users_to_ring" ] ; then - users_to_ring=$localusers_to_ring - else - # Else, we cook up a string formatted for the Dial command - # with the specified users (SIP/user1&SIP/user2&...). We do it - # with set, shift and a loop in order to be more tolerant of ugly whitespace - # messes entered by users. - set $users_to_ring - users_to_ring="SIP\/$1" && shift - for u in $@ ; do users_to_ring=$users_to_ring\\\&SIP\\\/$u ; done - fi - - # And we create an incoming calls context for this provider. - sed "s/|NAME|/$name/g" $TMPL_EXTINCNTXTSIP |\ - sed "s/|LOCALUSERS|/$users_to_ring/g" >> $WORKDIR/inext.TMP - fi - - # If this provider is enabled for outgoing calls. - if [ "$make_outgoing_calls" = "yes" ] ; then - - numprefix="`uci -q get ${MODULENAME}-calls.outgoing_calls.$name`" - # If no prefixes are specified, then we use "X" which matches any prefix. - [ -z "$numprefix" ] && numprefix="X" - for p in $numprefix ; do - p=`escape_non_alpha $p` - sed "s/|NUMPREFIX|/$p/g" $TMPL_EXTOUTSIP |\ - sed "s/|NAME|/$name/g" >> $WORKDIR/outext-$name.TMP - done - - # Add this provider to the list of enabled outbound providers. - if [ -z "$outbound_providers" ] ; then - outbound_providers="$name" - else - outbound_providers="$outbound_providers $name" - fi - - # Add this provider to the list of enabled sip outbound providers. - if [ -z "$sip_outbound_providers" ] ; then - sip_outbound_providers="$name" - else - sip_outbound_providers="$sip_outbound_providers $name" - fi - fi - - rm -f $WORKDIR/sip_peer.tmp - rm -f $WORKDIR/sip_reg.tmp -} - -# For all local users enabled for outbound calls, creates a context -# containing the extensions for Google and SIP accounts this user is -# allowed to use. -pbx_create_user_contexts() -{ - local providers - - for u in $localusers_can_dial ; do - u=`escape_non_alpha $u` - sed "s/|DEFAULTUSER|/$u/g" $TMPL_EXTUSERCNTXTHDR >> $WORKDIR/userext.TMP - cat $WORKDIR/localext.TMP >> $WORKDIR/userext.TMP - providers="`uci -q get ${MODULENAME}-calls.providers_user_can_use.$u`" - [ -z "$providers" ] && providers="$outbound_providers" - - # For each provider, cat the contents of outext-$name.TMP into the user's outgoing calls extension - for p in $providers ; do - [ -f $WORKDIR/outext-$p.TMP ] && cat $WORKDIR/outext-$p.TMP >> $WORKDIR/userext.TMP - done - cat $TMPL_EXTUSERCNTXTFTR >> $WORKDIR/userext.TMP - done -} - -# Creates the blacklist context which hangs up on blacklisted numbers. -pbx_add_blacklist() -{ - local blacklist1 - local blacklist2 - - config_get blacklist1 blacklisting blacklist1 - config_get blacklist2 blacklisting blacklist2 - - # We create the blacklist context no matter whether the blacklist - # actually contains entries or not, since the PBX will send calls - # to the context for a check against the list anyway. - cp $TMPL_EXTBLKLISTHDR $WORKDIR/blacklist.TMP - for n in $blacklist1 $blacklist2 ; do - n=`escape_non_alpha $n` - sed "s/|BLACKLISTITEM|/$n/g" $TMPL_EXTBLKLIST >> $WORKDIR/blacklist.TMP - done - cat $TMPL_EXTBLKLISTFTR >> $WORKDIR/blacklist.TMP -} - -# Creates the callthrough context which allows specified numbers to get -# into the PBX and dial out as the configured user. -pbx_add_callthrough() -{ - local callthrough_number_list - local defaultuser - local pin - local enabled - local F - - config_get callthrough_number_list $1 callthrough_number_list - config_get defaultuser $1 defaultuser - defaultuser=`escape_non_alpha $defaultuser` - config_get pin $1 pin - pin=`escape_non_alpha $pin` - config_get enabled $1 enabled - - [ "$enabled" = "no" ] && return - [ "$defaultuser" = "" ] && return - - for callthrough_number in $callthrough_number_list ; do - sed "s/|NUMBER|/$callthrough_number/g" $TMPL_EXTCTHRUCHECK >> $WORKDIR/callthroughcheck.TMP - - if [ -n "$pin" ] ; then F=$TMPL_EXTCTHRU ; else F=$TMPL_EXTCTHRUNOPIN ; fi - sed "s/|NUMBER|/$callthrough_number/g" $F |\ - sed "s/|DEFAULTUSER|/$defaultuser/" |\ - sed "s/|PIN|/$pin/" >> $WORKDIR/callthrough.TMP - done -} - - -# Creates the callback context which allows specified numbers to get -# a callback into the PBX and dial out as the configured user. -pbx_add_callback() -{ - local callback_number_list - local defaultuser - local pin - local enabled - local callback_provider - local callback_hangup_delay - local FB - local FT - - config_get callback_number_list $1 callback_number_list - config_get defaultuser $1 defaultuser - defaultuser=`escape_non_alpha $defaultuser` - config_get pin $1 pin - pin=`escape_non_alpha $pin` - config_get enabled $1 enabled - config_get callback_provider $1 callback_provider - callback_provider=`sub_underscore_for_non_alpha $callback_provider` - config_get callback_hangup_delay $1 callback_hangup_delay - - [ "$enabled" = "no" ] && return - [ "$defaultuser" = "" ] && return - - # If the provider is a SIP provider, set the file to use to $TMPL_EXTCBACKSIP - # otherwise, set it to $TMPL_EXTCBACKGTALK - if echo $sip_outbound_providers | grep -q $callback_provider 2>/dev/null - then - FB=$TMPL_EXTCBACKSIP - else - FB=$TMPL_EXTCBACKGTALK - fi - - for callback_number in $callback_number_list ; do - sed "s/|NUMBER|/$callback_number/g" $TMPL_EXTCBACKCHECK >> $WORKDIR/callbackcheck.TMP - - sed "s/|NUMBER|/$callback_number/g" $FB |\ - sed "s/|CALLBACKPROVIDER|/$callback_provider/" |\ - sed "s/|CALLBACKHUPDELAY|/$callback_hangup_delay/" >> $WORKDIR/callback.TMP - - # Perhaps a bit confusingly, we create "callthrough" configuration for callback - # numbers, because we use the same DISA construct as for callthrough. - if [ -n "$pin" ] ; then FT=$TMPL_EXTCTHRU ; else FT=$TMPL_EXTCTHRUNOPIN ; fi - sed "s/|NUMBER|/$callback_number/g" $FT |\ - sed "s/|DEFAULTUSER|/$defaultuser/" |\ - sed "s/|PIN|/$pin/" >> $WORKDIR/callthrough.TMP - done -} - - -# Creates sip.conf from its template. -pbx_cook_sip_template() -{ - local useragent - local externhost - local bindport - - config_get useragent advanced useragent - useragent=`escape_non_alpha $useragent` - config_get externhost advanced externhost - config_get bindport advanced bindport - - [ -z "$useragent" ] && useragent="$USERAGENT" - - sed "s/|USERAGENT|/$useragent/g" $TMPL_SIP > $WORKDIR/sip.conf - - if [ -z "$externhost" ] ; then - sed -i "s/externhost=|EXTERNHOST|//g" $WORKDIR/sip.conf - else - sed -i "s/|EXTERNHOST|/$externhost/g" $WORKDIR/sip.conf - fi - - if [ -z "$bindport" ] ; then - sed -i "s/bindport=|BINDPORT|//g" $WORKDIR/sip.conf - else - sed -i "s/|BINDPORT|/$bindport/g" $WORKDIR/sip.conf - fi - - -} - -# Creates rtp.conf from its template. -pbx_cook_rtp_template() -{ - local rtpstart - local rtpend - - config_get rtpstart advanced rtpstart - config_get rtpend advanced rtpend - - sed "s/|RTPSTART|/$rtpstart/" $TMPL_RTP |\ - sed "s/|RTPEND|/$rtpend/" > $WORKDIR/rtp.conf -} - -# Links any sound files found in $PBXSOUNDSDIR and $VMSOUNDSDIR -# into $ASTSOUNDSDIR for use by Asterisk. Does not overwrite files. -pbx_link_sounds() -{ - mkdir -p $ASTSOUNDSDIR - - for dir in $PBXSOUNDSDIR $VMSOUNDSDIR ; do - if [ -d $dir ] ; then - for f in $dir/* ; do - ln -s $f $ASTSOUNDSDIR 2>/dev/null - done - fi - done -} - - -# Makes sure the ownership of specified directories is proper. -pbx_fix_ownership() -{ - chown $ASTUSER:$ASTGROUP $ASTDIRS - chown $ASTUSER:$ASTGROUP -R $ASTDIRSRECURSIVE -} - - -# Creates voicemail config if installed and enabled. -pbx_configure_voicemail() -{ - local enabled - local global_timeout - local global_email_addresses - - local smtp_tls - local smtp_server - local smtp_port - local smtp_auth - local smtp_user - local smtp_password - - config_get enabled global_voicemail enabled - - # First check if voicemail is enabled. - [ "$enabled" != "yes" ] && return - - config_get global_timeout global_voicemail global_timeout - #config_get global_email_addresses global_voicemail global_email_addresses - config_get smtp_auth voicemail_smtp smtp_auth - config_get smtp_tls voicemail_smtp smtp_tls - config_get smtp_server voicemail_smtp smtp_server - config_get smtp_port voicemail_smtp smtp_port - config_get smtp_user voicemail_smtp smtp_user - smtp_user=`escape_non_alpha $smtp_user` - config_get smtp_password voicemail_smtp smtp_password - smtp_password=`escape_non_alpha $smtp_password` - - sed "s/|AUTH|/$smtp_auth/" $TMPL_MSMTPDEFAULT |\ - sed "s/|TLS|/$smtp_tls/" > $WORKDIR/pbx-msmtprc - - sed "s/|HOST|/$smtp_server/" $TMPL_MSMTPACCOUNT |\ - sed "s/|PORT|/$smtp_port/" >> $WORKDIR/pbx-msmtprc - - if [ "$smtp_auth" = "on" ] ; then - sed "s/|USER|/$smtp_user/" $TMPL_MSMTPAUTH |\ - sed "s/|PASSWORD|/$smtp_password/" >> $WORKDIR/pbx-msmtprc - fi - - cat $TMPL_MSMTPACCTDFLT >> $WORKDIR/pbx-msmtprc - - [ ! -f /etc/pbx-msmtprc ] && cp $WORKDIR/pbx-msmtprc /etc/pbx-msmtprc - cmp -s $WORKDIR/pbx-msmtprc /etc/pbx-msmtprc 1>/dev/null \ - || mv $WORKDIR/pbx-msmtprc /etc/pbx-msmtprc - chmod 600 /etc/pbx-msmtprc - chown nobody /etc/pbx-msmtprc - - # Copy over the extensions file which has voicemail enabled. - cp $TMPL_EXTVMENABLED $WORKDIR/extensions_voicemail.conf - - # Create the voicemail directory in /tmp - mkdir -p /tmp/voicemail - chown nobody /tmp/voicemail - - # Create the recordings directory - mkdir -p /etc/pbx-voicemail/recordings - chown nobody /etc/pbx-voicemail/recordings - - # Working around a bug in OpenWRT 12.09-rc1 - # TODO: REMOVE AS SOON AS POSSIBLE - chmod ugo+w /tmp -} - - -start() { - mkdir -p $WORKDIR - - # Create the users. - config_load ${MODULENAME}-users - config_foreach pbx_add_user local_user - - # Create configuration for each google account. - config_unset - config_load ${MODULENAME}-google - config_foreach pbx_add_jabber gtalk_jabber - - # Create configuration for each voip provider. - config_unset - config_load ${MODULENAME}-voip - config_foreach pbx_add_peer voip_provider - - # Create the user contexts, callthroug/back, and phone blacklist. - config_unset - config_load ${MODULENAME}-calls - pbx_create_user_contexts - pbx_add_blacklist - config_foreach pbx_add_callthrough callthrough_numbers - config_foreach pbx_add_callback callback_numbers - - # Prepare sip.conf using settings from the "advanced" section. - config_unset - config_load ${MODULENAME}-advanced - pbx_cook_sip_template - pbx_cook_rtp_template - - # Prepare voicemail config. - config_unset - config_load ${MODULENAME}-voicemail - pbx_configure_voicemail - - # Assemble the configuration, and copy changed files over. - config_unset - config_load ${MODULENAME}-advanced - pbx_assemble_and_copy_config - - # Link sound files - pbx_link_sounds - - # Enforce ownership of specified files and directories. - pbx_fix_ownership -} diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/asterisk.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/asterisk.conf.TEMPLATE deleted file mode 100644 index ac5439615b..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/asterisk.conf.TEMPLATE +++ /dev/null @@ -1,17 +0,0 @@ -[directories] -astetcdir => /etc/asterisk -astmoddir => /usr/lib/asterisk/modules -astvarlibdir => /usr/lib/asterisk -astdbdir => /usr/lib/asterisk -astkeydir => /usr/lib/asterisk -astdatadir => /usr/lib/asterisk -astagidir => /usr/lib/asterisk/agi-bin -astspooldir => /var/spool/asterisk -astrundir => /var/run/asterisk -astlogdir => /var/log/asterisk - -[options] -languageprefix = yes -dumpcore = no -runuser = nobody -rungroup = nogroup diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/delayedcallback b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/delayedcallback deleted file mode 100755 index 903efe9ad9..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/delayedcallback +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -# Check if there are more than one instance of this command -# with the same command line running at the same time for some -# reason, then quit. We are checking for the same -# commandline in order to permit two different callback -# attempts simultaneously. - -if ! grep -q "$@" /dev/shm/delayedcallback.[0-9]* 2>/dev/null -then - echo "$@" > /dev/shm/delayedcallback.$$ - sleep 25 - asterisk -r -x "$1 $2 \"$3\" $4 $5 $6" - rm /dev/shm/delayedcallback.$$ -# echo "`date` $@": >> /dev/shm/delayedcallback.log -#else -# echo "`date` ERROR: There appears to be a callback attempt in progress to: $@" >> /dev/shm/delayedcallback.err -fi diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions.conf.TEMPLATE deleted file mode 100644 index c8966edd87..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions.conf.TEMPLATE +++ /dev/null @@ -1,25 +0,0 @@ -[general] -static = yes -writeprotect = yes -clearglobalvars = no - -[globals] -RINGTIME => |RINGTIME| - -[default] - -[context-user-hangup-call-context] -exten => s,1,Hangup() -exten => _X.,1,Hangup() - -[context-catch-all] -exten => _[!-~].,1,Dial(SIP/${EXTEN},60,r) - -#include extensions_default.conf -#include extensions_voicemail.conf -#include extensions_incoming.conf -#include extensions_incoming_gtalk.conf -#include extensions_blacklist.conf -#include extensions_callthrough.conf -#include extensions_callback.conf -#include extensions_user.conf diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist.conf.TEMPLATE deleted file mode 100644 index 54ee989b0f..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -exten => s,n,Gotoif($[ "${CALLERID(NUM)}" = "|BLACKLISTITEM|" ]?context-user-hangup,s,1) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_footer.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_footer.conf.TEMPLATE deleted file mode 100644 index da964f2388..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_footer.conf.TEMPLATE +++ /dev/null @@ -1,2 +0,0 @@ -exten => s,n,Goto(${SOURCECONTEXT},${SOURCEEXTEN},doneblacklist) - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_header.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_header.conf.TEMPLATE deleted file mode 100644 index de0e984652..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_header.conf.TEMPLATE +++ /dev/null @@ -1,3 +0,0 @@ - -[blacklist-call-context] -exten => s,1,Noop() diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check.conf.TEMPLATE deleted file mode 100644 index 06b1a4b6b9..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -exten => s,n,Gotoif($[ "${CALLERID(NUM)}" =~ ".*|NUMBER|" ]?context-user-callback,|NUMBER|,1) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_footer.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_footer.conf.TEMPLATE deleted file mode 100644 index 282fe9e8ff..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_footer.conf.TEMPLATE +++ /dev/null @@ -1,2 +0,0 @@ -exten => s,n,Goto(${SOURCECONTEXT},${SOURCEEXTEN},donecallback) - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_header.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_header.conf.TEMPLATE deleted file mode 100644 index be289c4d33..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_header.conf.TEMPLATE +++ /dev/null @@ -1,3 +0,0 @@ - -[callback-check-call-context] -exten => s,1,Noop() diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_gtalk.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_gtalk.conf.TEMPLATE deleted file mode 100644 index 43eec788f3..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_gtalk.conf.TEMPLATE +++ /dev/null @@ -1,4 +0,0 @@ -exten => |NUMBER|,1,System(/etc/pbx-asterisk/delayedcallback "channel originate Gtalk/gtalk-|CALLBACKPROVIDER|/|NUMBER|@voice.google.com extension |NUMBER|@disa-call-context" &) -exten => |NUMBER|,n,Wait(|CALLBACKHUPDELAY|) -exten => |NUMBER|,n,Hangup() - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_header.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_header.conf.TEMPLATE deleted file mode 100644 index 0b8fb4c23f..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_header.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -[context-user-callback] diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_sip.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_sip.conf.TEMPLATE deleted file mode 100644 index 300e9fa0e8..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_sip.conf.TEMPLATE +++ /dev/null @@ -1,4 +0,0 @@ -exten => |NUMBER|,1,System(/etc/pbx-asterisk/delayedcallback "channel originate SIP/|NUMBER|@peer-|CALLBACKPROVIDER| extension |NUMBER|@disa-call-context" &) -exten => |NUMBER|,n,Wait(|CALLBACKHUPDELAY|) -exten => |NUMBER|,n,Hangup() - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default.conf.TEMPLATE deleted file mode 100644 index 35836e290a..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default.conf.TEMPLATE +++ /dev/null @@ -1,11 +0,0 @@ -[default-incoming-call-context] -exten => s,1,NoOp(${CALLERID}) -exten => s,n,Set(SOURCECONTEXT=default-incoming-call-context) -exten => s,n,Set(SOURCEEXTEN=s) -exten => s,n,Goto(blacklist-call-context,s,1) -exten => s,n(doneblacklist),NoOp() -exten => s,n,Goto(callback-check-call-context,s,1) -exten => s,n(donecallback),NoOp() -exten => s,n,Goto(disa-check-call-context,s,1) -exten => s,n(donedisacheck),Dial(|LOCALUSERS|,${RINGTIME},r) -exten => s,n,Goto(context-voicemail,s,1) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default_user.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default_user.conf.TEMPLATE deleted file mode 100644 index 1910ff4d96..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default_user.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -exten => |DEFAULTUSER|,1,Goto(default-incoming-call-context,s,1) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check.conf.TEMPLATE deleted file mode 100644 index ba2379b738..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -exten => s,n,Gotoif($[ "${CALLERID(NUM)}" =~ ".*|NUMBER|" ]?disa-call-context,|NUMBER|,1) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_footer.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_footer.conf.TEMPLATE deleted file mode 100644 index 74056fa01d..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_footer.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -exten => s,n,Goto(${SOURCECONTEXT},${SOURCEEXTEN},donedisacheck) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_header.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_header.conf.TEMPLATE deleted file mode 100644 index e0d67b8025..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_header.conf.TEMPLATE +++ /dev/null @@ -1,2 +0,0 @@ -[disa-check-call-context] -exten => s,1,Noop() diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-nopin.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-nopin.conf.TEMPLATE deleted file mode 100644 index 74e48de8c1..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-nopin.conf.TEMPLATE +++ /dev/null @@ -1,5 +0,0 @@ -exten => |NUMBER|,1,Noop() -exten => |NUMBER|,n,Set(TIMEOUT(digit)=15) -exten => |NUMBER|,n,Set(TIMEOUT(response)=40) -exten => |NUMBER|,n,DISA(no-password,context-user-|DEFAULTUSER|) - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa.conf.TEMPLATE deleted file mode 100644 index 3dd8fa35c9..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa.conf.TEMPLATE +++ /dev/null @@ -1,6 +0,0 @@ -exten => |NUMBER|,1,Noop() -exten => |NUMBER|,n,Set(TIMEOUT(digit)=7) -exten => |NUMBER|,n,Set(TIMEOUT(response)=21) -exten => |NUMBER|,n,Authenticate(|PIN|) -exten => |NUMBER|,n,DISA(no-password,context-user-|DEFAULTUSER|) - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa_header.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa_header.conf.TEMPLATE deleted file mode 100644 index a742271146..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa_header.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -[disa-call-context] diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk.conf.TEMPLATE deleted file mode 100644 index 3f9cf4c7d9..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk.conf.TEMPLATE +++ /dev/null @@ -1,15 +0,0 @@ -exten => |USERNAME|,1,NoOp(${CALLERID}) -same => n,Set(CALLERID(name)=${CUT(CALLERID(name),@,1)}) -same => n,GotoIf($["${CALLERID(name):0:2}" != "+1"]?notrim) -same => n,Set(CALLERID(name)=${CALLERID(name):2}) -same => n(notrim),Set(CALLERID(number)=${CALLERID(name)}) -same => n,Set(SOURCECONTEXT=context-incoming-gtalk) -same => n,Set(SOURCEEXTEN=|USERNAME|) -same => n,Goto(blacklist-call-context,s,1) -same => n(doneblacklist),NoOp() -same => n,Goto(callback-check-call-context,s,1) -same => n(donecallback),NoOp() -same => n,Goto(disa-check-call-context,s,1) -same => n(donedisacheck),Dial(|LOCALUSERS|,${RINGTIME},D(:w11111111)) -same => n,Goto(context-voicemail,s,1) - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk_header.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk_header.conf.TEMPLATE deleted file mode 100644 index f6e44a5bf0..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk_header.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -[context-incoming-gtalk] diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_sip.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_sip.conf.TEMPLATE deleted file mode 100644 index b2c3716bf4..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_sip.conf.TEMPLATE +++ /dev/null @@ -1,12 +0,0 @@ - -[context-incoming-|NAME|] -exten => s,1,NoOp(${CALLERID}) -exten => s,n,Set(SOURCECONTEXT=context-incoming-|NAME|) -exten => s,n,Set(SOURCEEXTEN=s) -exten => s,n,Goto(blacklist-call-context,s,1) -exten => s,n(doneblacklist),NoOp() -exten => s,n,Goto(callback-check-call-context,s,1) -exten => s,n(donecallback),NoOp() -exten => s,n,Goto(disa-check-call-context,s,1) -exten => s,n(donedisacheck),Dial(|LOCALUSERS|,${RINGTIME},r) -exten => s,n,Goto(context-voicemail,s,1) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_dial_local_user.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_dial_local_user.conf.TEMPLATE deleted file mode 100644 index 45e8758846..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_dial_local_user.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -exten => |DEFAULTUSER|,1,Dial(SIP/|DEFAULTUSER|,${RINGTIME},r) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_gtalk.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_gtalk.conf.TEMPLATE deleted file mode 100644 index 259c2ceaa1..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_gtalk.conf.TEMPLATE +++ /dev/null @@ -1,9 +0,0 @@ -exten => _|NUMPREFIX|,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN}@voice.google.com,60) -exten => _+|NUMPREFIX|,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:1}@voice.google.com,60) -exten => _|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN}@voice.google.com,60) -exten => _+|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:1}@voice.google.com,60) -exten => _00|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:2}@voice.google.com,60) -exten => _011|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:3}@voice.google.com,60) -exten => _010|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:3}@voice.google.com,60) -exten => _0011|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:4}@voice.google.com,60) - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_gtalk.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_gtalk.conf.TEMPLATE deleted file mode 100644 index 1fa7713e23..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_gtalk.conf.TEMPLATE +++ /dev/null @@ -1,2 +0,0 @@ -exten => |PATTERN|,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN|SYMBOLSTOREMOVE|}@voice.google.com,60) - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_sip.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_sip.conf.TEMPLATE deleted file mode 100644 index 178b6deaa6..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_sip.conf.TEMPLATE +++ /dev/null @@ -1 +0,0 @@ -exten => |PATTERN|,1,Dial(SIP/${EXTEN|SYMBOLSTOREMOVE|}@peer-|NAME|,60,r) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_sip.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_sip.conf.TEMPLATE deleted file mode 100644 index 9b1d9addc9..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_sip.conf.TEMPLATE +++ /dev/null @@ -1,8 +0,0 @@ -exten => _|NUMPREFIX|,1,Dial(SIP/${EXTEN}@peer-|NAME|,60,r) -exten => _+|NUMPREFIX|,1,Dial(SIP/${EXTEN}@peer-|NAME|,60,r) -exten => _|NUMPREFIX|.,1,Dial(SIP/${EXTEN}@peer-|NAME|,60,r) -exten => _+|NUMPREFIX|.,1,Dial(SIP/${EXTEN:1}@peer-|NAME|,60,r) -exten => _00|NUMPREFIX|.,1,Dial(SIP/${EXTEN:2}@peer-|NAME|,60,r) -exten => _011|NUMPREFIX|.,1,Dial(SIP/${EXTEN:3}@peer-|NAME|,60,r) -exten => _010|NUMPREFIX|.,1,Dial(SIP/${EXTEN:3}@peer-|NAME|,60,r) -exten => _0011|NUMPREFIX|.,1,Dial(SIP/${EXTEN:4}@peer-|NAME|,60,r) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_footer.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_footer.conf.TEMPLATE deleted file mode 100644 index a2ba28c055..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_footer.conf.TEMPLATE +++ /dev/null @@ -1,2 +0,0 @@ -include => context-voicemail-record-greeting -include => context-catch-all diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_header.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_header.conf.TEMPLATE deleted file mode 100644 index 5931eaf28b..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_header.conf.TEMPLATE +++ /dev/null @@ -1,3 +0,0 @@ - -[context-user-|DEFAULTUSER|] - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_disabled.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_disabled.conf.TEMPLATE deleted file mode 100644 index be23c294df..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_disabled.conf.TEMPLATE +++ /dev/null @@ -1,4 +0,0 @@ -[context-voicemail-record-greeting] - -[context-voicemail] -exten => s,1,Hangup() diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_enabled.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_enabled.conf.TEMPLATE deleted file mode 100644 index 4edd9cb426..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_enabled.conf.TEMPLATE +++ /dev/null @@ -1,27 +0,0 @@ -[context-voicemail-record-greeting] -exten => *789,1,Wait(1) -exten => *789,n,Playback(/etc/pbx-voicemail/recordings/greeting) -exten => *789,n,Wait(1) -exten => *789,n,Playback(beep) -exten => *789,n,Playback(beep) -exten => *789,n,WaitExten(30) - -exten => t,1,Playback(vm-goodbye) -exten => t,n,Wait(2) -exten => t,n,Hangup() - -exten => *,1,Playback(beep) -exten => *,n,Playback(beep) -exten => *,n,Record(/tmp/voicemail/greeting:gsm,20,120,k) -exten => *,n,Wait(1) -exten => *,n,Playback(/tmp/voicemail/greeting) - -exten => h,1,System(/etc/pbx-voicemail/pbx-move-greeting &) - -[context-voicemail] -exten => s,1,Wait(2) -exten => s,2,Playback(/etc/pbx-voicemail/recordings/greeting) -exten => s,3,Wait(2) -exten => s,n,Record(/tmp/voicemail/voicemail%d:WAV,20,180,k) - -exten => h,1,System(/etc/pbx-voicemail/pbx-send-voicemail '${RECORDED_FILE}.WAV' '${CALLERID(all)}' &) diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/gtalk.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/gtalk.conf.TEMPLATE deleted file mode 100644 index 4f07a71660..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/gtalk.conf.TEMPLATE +++ /dev/null @@ -1,10 +0,0 @@ -[general] -context=context-incoming-gtalk -allowguest=yes -allowguests=yes -bindaddr=0.0.0.0 - -[guest] -disallow=all -allow=ulaw -context=context-incoming-gtalk diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/indications.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/indications.conf.TEMPLATE deleted file mode 100644 index d7088db7c4..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/indications.conf.TEMPLATE +++ /dev/null @@ -1,733 +0,0 @@ -; indications.conf -; Configuration file for location specific tone indications -; used by the pbx_indications module. -; -; NOTE: -; When adding countries to this file, please keep them in alphabetical -; order according to the 2-character country codes! -; -; The [general] category is for certain global variables. -; All other categories are interpreted as location specific indications -; -; -[general] -country=us ; default location - - -; [example] -; description = string -; The full name of your country, in English. -; alias = iso[,iso]* -; List of other countries 2-letter iso codes, which have the same -; tone indications. -; ringcadence = num[,num]* -; List of durations the physical bell rings. -; dial = tonelist -; Set of tones to be played when one picks up the hook. -; busy = tonelist -; Set of tones played when the receiving end is busy. -; congestion = tonelist -; Set of tones played when there is some congestion (on the network?) -; callwaiting = tonelist -; Set of tones played when there is a call waiting in the background. -; dialrecall = tonelist -; Not well defined; many phone systems play a recall dial tone after hook -; flash. -; record = tonelist -; Set of tones played when call recording is in progress. -; info = tonelist -; Set of tones played with special information messages (e.g., "number is -; out of service") -; 'name' = tonelist -; Every other variable will be available as a shortcut for the "PlayList" command -; but will not be used automatically by Asterisk. -; -; -; The tonelist itself is defined by a comma-separated sequence of elements. -; Each element consist of a frequency (f) with an optional duration (in ms) -; attached to it (f/duration). The frequency component may be a mixture of two -; frequencies (f1+f2) or a frequency modulated by another frequency (f1*f2). -; The implicit modulation depth is fixed at 90%, though. -; If the list element starts with a !, that element is NOT repeated, -; therefore, only if all elements start with !, the tonelist is time-limited, -; all others will repeat indefinitely. -; -; concisely: -; element = [!]freq[+|*freq2][/duration] -; tonelist = element[,element]* -; -; Please note that SPACES ARE NOT ALLOWED in tone lists! -; - -[at] -description = Austria -ringcadence = 1000,5000 -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -dial = 420 -busy = 420/400,0/400 -ring = 420/1000,0/5000 -congestion = 420/200,0/200 -callwaiting = 420/40,0/1960 -dialrecall = 420 -; RECORDTONE - not specified -record = 1400/80,0/14920 -info = 950/330,1450/330,1850/330,0/1000 -stutter = 380+420 - -[au] -description = Australia -; Reference http://www.acif.org.au/__data/page/3303/S002_2001.pdf -; Normal Ring -ringcadence = 400,200,400,2000 -; Distinctive Ring 1 - Forwarded Calls -; 400,400,200,200,400,1400 -; Distinctive Ring 2 - Selective Ring 2 + Operator + Recall -; 400,400,200,2000 -; Distinctive Ring 3 - Multiple Subscriber Number 1 -; 200,200,400,2200 -; Distinctive Ring 4 - Selective Ring 1 + Centrex -; 400,2600 -; Distinctive Ring 5 - Selective Ring 3 -; 400,400,200,400,200,1400 -; Distinctive Ring 6 - Multiple Subscriber Number 2 -; 200,400,200,200,400,1600 -; Distinctive Ring 7 - Multiple Subscriber Number 3 + Data Privacy -; 200,400,200,400,200,1600 -; Tones -dial = 413+438 -busy = 425/375,0/375 -ring = 413+438/400,0/200,413+438/400,0/2000 -; XXX Congestion: Should reduce by 10 db every other cadence XXX -congestion = 425/375,0/375,420/375,0/375 -callwaiting = 425/200,0/200,425/200,0/4400 -dialrecall = 413+438 -; Record tone used for Call Intrusion/Recording or Conference -record = !425/1000,!0/15000,425/360,0/15000 -info = 425/2500,0/500 -; Other Australian Tones -; The STD "pips" indicate the call is not an untimed local call -std = !525/100,!0/100,!525/100,!0/100,!525/100,!0/100,!525/100,!0/100,!525/100 -; Facility confirmation tone (eg. Call Forward Activated) -facility = 425 -; Message Waiting "stutter" dialtone -stutter = 413+438/100,0/40 -; Ringtone for calls to Telstra mobiles -ringmobile = 400+450/400,0/200,400+450/400,0/2000 - -[bg] -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -description = Bulgaria -ringcadence = 1000,4000 -; -dial = 425 -busy = 425/500,0/500 -ring = 425/1000,0/4000 -congestion = 425/250,0/250 -callwaiting = 425/150,0/150,425/150,0/4000 -dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 -record = 1400/425,0/15000 -info = 950/330,1400/330,1800/330,0/1000 -stutter = 425/1500,0/100 - -[br] -description = Brazil -ringcadence = 1000,4000 -dial = 425 -busy = 425/250,0/250 -ring = 425/1000,0/4000 -congestion = 425/250,0/250,425/750,0/250 -callwaiting = 425/50,0/1000 -; Dialrecall not used in Brazil standard (using UK standard) -dialrecall = 350+440 -; Record tone is not used in Brazil, use busy tone -record = 425/250,0/250 -; Info not used in Brazil standard (using UK standard) -info = 950/330,1400/330,1800/330 -stutter = 350+440 - -[be] -description = Belgium -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1000,3000 -dial = 425 -busy = 425/500,0/500 -ring = 425/1000,0/3000 -congestion = 425/167,0/167 -callwaiting = 1400/175,0/175,1400/175,0/3500 -; DIALRECALL - not specified -dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440" -; RECORDTONE - not specified -record = 1400/500,0/15000 -info = 900/330,1400/330,1800/330,0/1000 -stutter = 425/1000,0/250 - -[ch] -description = Switzerland -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1000,4000 -dial = 425 -busy = 425/500,0/500 -ring = 425/1000,0/4000 -congestion = 425/200,0/200 -callwaiting = 425/200,0/200,425/200,0/4000 -; DIALRECALL - not specified -dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 -; RECORDTONE - not specified -record = 1400/80,0/15000 -info = 950/330,1400/330,1800/330,0/1000 -stutter = 425+340/1100,0/1100 - -[cl] -description = Chile -; According to specs from Telefonica CTC Chile -ringcadence = 1000,3000 -dial = 400 -busy = 400/500,0/500 -ring = 400/1000,0/3000 -congestion = 400/200,0/200 -callwaiting = 400/250,0/8750 -dialrecall = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400 -record = 1400/500,0/15000 -info = 950/333,1400/333,1800/333,0/1000 -stutter = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400 - -[cn] -description = China -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1000,4000 -dial = 450 -busy = 450/350,0/350 -ring = 450/1000,0/4000 -congestion = 450/700,0/700 -callwaiting = 450/400,0/4000 -dialrecall = 450 -record = 950/400,0/10000 -info = 450/100,0/100,450/100,0/100,450/100,0/100,450/400,0/400 -; STUTTER - not specified -stutter = 450+425 - -[cz] -description = Czech Republic -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1000,4000 -dial = 425/330,0/330,425/660,0/660 -busy = 425/330,0/330 -ring = 425/1000,0/4000 -congestion = 425/165,0/165 -callwaiting = 425/330,0/9000 -; DIALRECALL - not specified -dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425/330,0/330,425/660,0/660 -; RECORDTONE - not specified -record = 1400/500,0/14000 -info = 950/330,0/30,1400/330,0/30,1800/330,0/1000 -; STUTTER - not specified -stutter = 425/450,0/50 - -[de] -description = Germany -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1000,4000 -dial = 425 -busy = 425/480,0/480 -ring = 425/1000,0/4000 -congestion = 425/240,0/240 -callwaiting = !425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,0 -; DIALRECALL - not specified -dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 -; RECORDTONE - not specified -record = 1400/80,0/15000 -info = 950/330,1400/330,1800/330,0/1000 -stutter = 425+400 - -[dk] -description = Denmark -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1000,4000 -dial = 425 -busy = 425/500,0/500 -ring = 425/1000,0/4000 -congestion = 425/200,0/200 -callwaiting = !425/200,!0/600,!425/200,!0/3000,!425/200,!0/200,!425/200,0 -; DIALRECALL - not specified -dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 -; RECORDTONE - not specified -record = 1400/80,0/15000 -info = 950/330,1400/330,1800/330,0/1000 -; STUTTER - not specified -stutter = 425/450,0/50 - -[ee] -description = Estonia -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1000,4000 -dial = 425 -busy = 425/300,0/300 -ring = 425/1000,0/4000 -congestion = 425/200,0/200 -; CALLWAIT not in accordance to ITU -callwaiting = 950/650,0/325,950/325,0/30,1400/1300,0/2600 -; DIALRECALL - not specified -dialrecall = 425/650,0/25 -; RECORDTONE - not specified -record = 1400/500,0/15000 -; INFO not in accordance to ITU -info = 950/650,0/325,950/325,0/30,1400/1300,0/2600 -; STUTTER not specified -stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 - -[es] -description = Spain -ringcadence = 1500,3000 -dial = 425 -busy = 425/200,0/200 -ring = 425/1500,0/3000 -congestion = 425/200,0/200,425/200,0/200,425/200,0/600 -callwaiting = 425/175,0/175,425/175,0/3500 -dialrecall = !425/200,!0/200,!425/200,!0/200,!425/200,!0/200,425 -record = 1400/500,0/15000 -info = 950/330,0/1000 -dialout = 500 - - -[fi] -description = Finland -ringcadence = 1000,4000 -dial = 425 -busy = 425/300,0/300 -ring = 425/1000,0/4000 -congestion = 425/200,0/200 -callwaiting = 425/150,0/150,425/150,0/8000 -dialrecall = 425/650,0/25 -record = 1400/500,0/15000 -info = 950/650,0/325,950/325,0/30,1400/1300,0/2600 -stutter = 425/650,0/25 - -[fr] -description = France -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1500,3500 -; Dialtone can also be 440+330 -dial = 440 -busy = 440/500,0/500 -ring = 440/1500,0/3500 -; CONGESTION - not specified -congestion = 440/250,0/250 -callwait = 440/300,0/10000 -; DIALRECALL - not specified -dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 -; RECORDTONE - not specified -record = 1400/500,0/15000 -info = !950/330,!1400/330,!1800/330 -stutter = !440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,440 - -[gr] -description = Greece -ringcadence = 1000,4000 -dial = 425/200,0/300,425/700,0/800 -busy = 425/300,0/300 -ring = 425/1000,0/4000 -congestion = 425/200,0/200 -callwaiting = 425/150,0/150,425/150,0/8000 -dialrecall = 425/650,0/25 -record = 1400/400,0/15000 -info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0 -stutter = 425/650,0/25 - -[hu] -description = Hungary -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1250,3750 -dial = 425 -busy = 425/300,0/300 -ring = 425/1250,0/3750 -congestion = 425/300,0/300 -callwaiting = 425/40,0/1960 -dialrecall = 425+450 -; RECORDTONE - not specified -record = 1400/400,0/15000 -info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0 -stutter = 350+375+400 - -[il] -description = Israel -ringcadence = 1000,3000 -dial = 414 -busy = 414/500,0/500 -ring = 414/1000,0/3000 -congestion = 414/250,0/250 -callwaiting = 414/100,0/100,414/100,0/100,414/600,0/3000 -dialrecall = !414/100,!0/100,!414/100,!0/100,!414/100,!0/100,414 -record = 1400/500,0/15000 -info = 1000/330,1400/330,1800/330,0/1000 -stutter = !414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,414 - - -[in] -description = India -ringcadence = 400,200,400,2000 -dial = 400*25 -busy = 400/750,0/750 -ring = 400*25/400,0/200,400*25/400,0/2000 -congestion = 400/250,0/250 -callwaiting = 400/200,0/100,400/200,0/7500 -dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 -record = 1400/500,0/15000 -info = !950/330,!1400/330,!1800/330,0/1000 -stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 - -[it] -description = Italy -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1000,4000 -dial = 425/200,0/200,425/600,0/1000 -busy = 425/500,0/500 -ring = 425/1000,0/4000 -congestion = 425/200,0/200 -callwaiting = 425/400,0/100,425/250,0/100,425/150,0/14000 -dialrecall = 470/400,425/400 -record = 1400/400,0/15000 -info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0 -stutter = 470/400,425/400 - -[lt] -description = Lithuania -ringcadence = 1000,4000 -dial = 425 -busy = 425/350,0/350 -ring = 425/1000,0/4000 -congestion = 425/200,0/200 -callwaiting = 425/150,0/150,425/150,0/4000 -; DIALRECALL - not specified -dialrecall = 425/500,0/50 -; RECORDTONE - not specified -record = 1400/500,0/15000 -info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0 -; STUTTER - not specified -stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 - -[jp] -description = Japan -ringcadence = 1000,2000 -dial = 400 -busy = 400/500,0/500 -ring = 400+15/1000,0/2000 -congestion = 400/500,0/500 -callwaiting = 400+16/500,0/8000 -dialrecall = !400/200,!0/200,!400/200,!0/200,!400/200,!0/200,400 -record = 1400/500,0/15000 -info = !950/330,!1400/330,!1800/330,0 -stutter = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400 - -[mx] -description = Mexico -ringcadence = 2000,4000 -dial = 425 -busy = 425/250,0/250 -ring = 425/1000,0/4000 -congestion = 425/250,0/250 -callwaiting = 425/200,0/600,425/200,0/10000 -dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 -record = 1400/500,0/15000 -info = 950/330,0/30,1400/330,0/30,1800/330,0/1000 -stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 - -[my] -description = Malaysia -ringcadence = 2000,4000 -dial = 425 -busy = 425/500,0/500 -ring = 425/400,0/200 -congestion = 425/500,0/500 - -[nl] -description = Netherlands -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -ringcadence = 1000,4000 -; Most of these 425's can also be 450's -dial = 425 -busy = 425/500,0/500 -ring = 425/1000,0/4000 -congestion = 425/250,0/250 -callwaiting = 425/500,0/9500 -; DIALRECALL - not specified -dialrecall = 425/500,0/50 -; RECORDTONE - not specified -record = 1400/500,0/15000 -info = 950/330,1400/330,1800/330,0/1000 -stutter = 425/500,0/50 - -[no] -description = Norway -ringcadence = 1000,4000 -dial = 425 -busy = 425/500,0/500 -ring = 425/1000,0/4000 -congestion = 425/200,0/200 -callwaiting = 425/200,0/600,425/200,0/10000 -dialrecall = 470/400,425/400 -record = 1400/400,0/15000 -info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0 -stutter = 470/400,425/400 - -[nz] -description = New Zealand -;NOTE - the ITU has different tonesets for NZ, but according to some residents there, -; this is, indeed, the correct way to do it. -ringcadence = 400,200,400,2000 -dial = 400 -busy = 400/250,0/250 -ring = 400+450/400,0/200,400+450/400,0/2000 -congestion = 400/375,0/375 -callwaiting = !400/200,!0/3000,!400/200,!0/3000,!400/200,!0/3000,!400/200 -dialrecall = !400/100!0/100,!400/100,!0/100,!400/100,!0/100,400 -record = 1400/425,0/15000 -info = 400/750,0/100,400/750,0/100,400/750,0/100,400/750,0/400 -stutter = !400/100!0/100,!400/100,!0/100,!400/100,!0/100,!400/100!0/100,!400/100,!0/100,!400/100,!0/100,400 -unobtainable = 400/75,0/100,400/75,0/100,400/75,0/100,400/75,0/400 - -[ph] - -; reference http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf - -description = Philippines -ringcadence = 1000,4000 -dial = 425 -busy = 480+620/500,0/500 -ring = 425+480/1000,0/4000 -congestion = 480+620/250,0/250 -callwaiting = 440/300,0/10000 -; DIALRECALL - not specified -dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 -; RECORDTONE - not specified -record = 1400/500,0/15000 -; INFO - not specified -info = !950/330,!1400/330,!1800/330,0 -; STUTTER - not specified -stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 - - -[pl] -description = Poland -ringcadence = 1000,4000 -dial = 425 -busy = 425/500,0/500 -ring = 425/1000,0/4000 -congestion = 425/500,0/500 -callwaiting = 425/150,0/150,425/150,0/4000 -; DIALRECALL - not specified -dialrecall = 425/500,0/50 -; RECORDTONE - not specified -record = 1400/500,0/15000 -; 950/1400/1800 3x0.33 on 1.0 off repeated 3 times -info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000 -; STUTTER - not specified -stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 - -[pt] -description = Portugal -ringcadence = 1000,5000 -dial = 425 -busy = 425/500,0/500 -ring = 425/1000,0/5000 -congestion = 425/200,0/200 -callwaiting = 440/300,0/10000 -dialrecall = 425/1000,0/200 -record = 1400/500,0/15000 -info = 950/330,1400/330,1800/330,0/1000 -stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 - -[ru] -; References: -; http://www.minsvyaz.ru/site.shtml?id=1806 -; http://www.aboutphone.info/lib/gost/45-223-2001.html -description = Russian Federation / ex Soviet Union -ringcadence = 1000,4000 -dial = 425 -busy = 425/350,0/350 -ring = 425/1000,0/4000 -congestion = 425/175,0/175 -callwaiting = 425/200,0/5000 -record = 1400/400,0/15000 -info = 950/330,1400/330,1800/330,0/1000 -dialrecall = 425/400,0/40 -stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 - -[se] -description = Sweden -ringcadence = 1000,5000 -dial = 425 -busy = 425/250,0/250 -ring = 425/1000,0/5000 -congestion = 425/250,0/750 -callwaiting = 425/200,0/500,425/200,0/9100 -dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 -record = 1400/500,0/15000 -info = !950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,0 -stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425 -; stutter = 425/320,0/20 ; Real swedish standard, not used for now - -[sg] -description = Singapore -; Singapore -; Reference: http://www.ida.gov.sg/idaweb/doc/download/I397/ida_ts_pstn1_i4r2.pdf -; Frequency specs are: 425 Hz +/- 20Hz; 24 Hz +/- 2Hz; modulation depth 100%; SIT +/- 50Hz -ringcadence = 400,200,400,2000 -dial = 425 -ring = 425*24/400,0/200,425*24/400,0/2000 ; modulation should be 100%, not 90% -busy = 425/750,0/750 -congestion = 425/250,0/250 -callwaiting = 425*24/300,0/200,425*24/300,0/3200 -stutter = !425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,425 -info = 950/330,1400/330,1800/330,0/1000 ; not currently in use acc. to reference -dialrecall = 425*24/500,0/500,425/500,0/2500 ; unspecified in IDA reference, use repeating Holding Tone A,B -record = 1400/500,0/15000 ; unspecified in IDA reference, use 0.5s tone every 15s -; additionally defined in reference -nutone = 425/2500,0/500 -intrusion = 425/250,0/2000 -warning = 425/624,0/4376 ; end of period tone, warning -acceptance = 425/125,0/125 -holdinga = !425*24/500,!0/500 ; followed by holdingb -holdingb = !425/500,!0/2500 - -[th] -description = Thailand -ringcadence = 1000,4000 -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -dial = 400*50 -busy = 400/500,0/500 -ring = 420/1000,0/5000 -congestion = 400/300,0/300 -callwaiting = 1000/400,10000/400,1000/400 -; DIALRECALL - not specified - use special dial tone instead. -dialrecall = 400*50/400,0/100,400*50/400,0/100 -; RECORDTONE - not specified -record = 1400/500,0/15000 -; INFO - specified as an announcement - use special information tones instead -info = 950/330,1400/330,1800/330 -; STUTTER - not specified -stutter = !400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,400 - -[uk] -description = United Kingdom -ringcadence = 400,200,400,2000 -; These are the official tones taken from BT SIN350. The actual tones -; used by BT include some volume differences so sound slightly different -; from Asterisk-generated ones. -dial = 350+440 -; Special dial is the intermittent dial tone heard when, for example, -; you have a divert active on the line -specialdial = 350+440/750,440/750 -; Busy is also called "Engaged" -busy = 400/375,0/375 -; "Congestion" is the Beep-bip engaged tone -congestion = 400/400,0/350,400/225,0/525 -; "Special Congestion" is not used by BT very often if at all -specialcongestion = 400/200,1004/300 -unobtainable = 400 -ring = 400+450/400,0/200,400+450/400,0/2000 -callwaiting = 400/100,0/4000 -; BT seem to use "Special Call Waiting" rather than just "Call Waiting" tones -specialcallwaiting = 400/250,0/250,400/250,0/250,400/250,0/5000 -; "Pips" used by BT on payphones. (Sounds wrong, but this is what BT claim it -; is and I've not used a payphone for years) -creditexpired = 400/125,0/125 -; These two are used to confirm/reject service requests on exchanges that -; don't do voice announcements. -confirm = 1400 -switching = 400/200,0/400,400/2000,0/400 -; This is the three rising tones Doo-dah-dee "Special Information Tone", -; usually followed by the BT woman saying an appropriate message. -info = 950/330,0/15,1400/330,0/15,1800/330,0/1000 -; Not listed in SIN350 -record = 1400/500,0/60000 -stutter = 350+440/750,440/750 - -[us] -description = United States / North America -ringcadence = 2000,4000 -dial = 350+440 -busy = 480+620/500,0/500 -ring = 440+480/2000,0/4000 -congestion = 480+620/250,0/250 -callwaiting = 440/300,0/10000 -dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 -record = 1400/500,0/15000 -info = !950/330,!1400/330,!1800/330,0 -stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 - -[us-old] -description = United States Circa 1950/ North America -ringcadence = 2000,4000 -dial = 600*120 -busy = 500*100/500,0/500 -ring = 420*40/2000,0/4000 -congestion = 500*100/250,0/250 -callwaiting = 440/300,0/10000 -dialrecall = !600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120 -record = 1400/500,0/15000 -info = !950/330,!1400/330,!1800/330,0 -stutter = !600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120 - -[tw] -description = Taiwan -; http://nemesis.lonestar.org/reference/telecom/signaling/dialtone.html -; http://nemesis.lonestar.org/reference/telecom/signaling/busy.html -; http://www.iproducts.com.tw/ee/kylink/06ky-1000a.htm -; http://www.pbx-manufacturer.com/ky120dx.htm -; http://www.nettwerked.net/tones.txt -; http://www.cisco.com/univercd/cc/td/doc/product/tel_pswt/vco_prod/taiw_sup/taiw2.htm -; -; busy tone 480+620Hz 0.5 sec. on ,0.5 sec. off -; reorder tone 480+620Hz 0.25 sec. on,0.25 sec. off -; ringing tone 440+480Hz 1 sec. on ,2 sec. off -; -ringcadence = 1000,4000 -dial = 350+440 -busy = 480+620/500,0/500 -ring = 440+480/1000,0/2000 -congestion = 480+620/250,0/250 -callwaiting = 350+440/250,0/250,350+440/250,0/3250 -dialrecall = 300/1500,0/500 -record = 1400/500,0/15000 -info = !950/330,!1400/330,!1800/330,0 -stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440 - -[ve] -; Tone definition source for ve found on -; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf -description = Venezuela / South America -ringcadence = 1000,4000 -dial = 425 -busy = 425/500,0/500 -ring = 425/1000,0/4000 -congestion = 425/250,0/250 -callwaiting = 400+450/300,0/6000 -dialrecall = 425 -record = 1400/500,0/15000 -info = !950/330,!1440/330,!1800/330,0/1000 - - -[za] -description = South Africa -; http://www.cisco.com/univercd/cc/td/doc/product/tel_pswt/vco_prod/safr_sup/saf02.htm -; (definitions for other countries can also be found there) -; Note, though, that South Africa uses two switch types in their network -- -; Alcatel switches -- mainly in the Western Cape, and Siemens elsewhere. -; The former use 383+417 in dial, ringback etc. The latter use 400*33 -; I've provided both, uncomment the ones you prefer -ringcadence = 400,200,400,2000 -; dial/ring/callwaiting for the Siemens switches: -dial = 400*33 -ring = 400*33/400,0/200,400*33/400,0/2000 -callwaiting = 400*33/250,0/250,400*33/250,0/250,400*33/250,0/250,400*33/250,0/250 -; dial/ring/callwaiting for the Alcatel switches: -; dial = 383+417 -; ring = 383+417/400,0/200,383+417/400,0/2000 -; callwaiting = 383+417/250,0/250,383+417/250,0/250,383+417/250,0/250,383+417/250,0/250 -congestion = 400/250,0/250 -busy = 400/500,0/500 -dialrecall = 350+440 -; XXX Not sure about the RECORDTONE -record = 1400/500,0/10000 -info = 950/330,1400/330,1800/330,0/330 -stutter = !400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,400*33 diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber.conf.TEMPLATE deleted file mode 100644 index cf71e1f8f4..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber.conf.TEMPLATE +++ /dev/null @@ -1,4 +0,0 @@ -[general] -autoregister=yes - -#include jabber_users.conf diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber_users.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber_users.conf.TEMPLATE deleted file mode 100644 index 3ee2463ed2..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber_users.conf.TEMPLATE +++ /dev/null @@ -1,8 +0,0 @@ -[gtalk-|NAME|] -type=client -serverhost=talk.google.com -username=|USERNAME|/Talk -secret=|SECRET| -timeout=150 -status=|STATUS| -statusmessage=|STATUSMESSAGE| diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/logger.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/logger.conf.TEMPLATE deleted file mode 100644 index e57325013a..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/logger.conf.TEMPLATE +++ /dev/null @@ -1,7 +0,0 @@ -[general] -queue_log = no -event_log = no - -[logfiles] -console => notice,warning,error -messages => error diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/manager.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/manager.conf.TEMPLATE deleted file mode 100644 index 2ac2f0033f..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/manager.conf.TEMPLATE +++ /dev/null @@ -1,7 +0,0 @@ -[general] -enabled = no - -port = 5038 -bindaddr = 0.0.0.0 - - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/modules.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/modules.conf.TEMPLATE deleted file mode 100644 index 93c74336d1..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/modules.conf.TEMPLATE +++ /dev/null @@ -1,34 +0,0 @@ -[modules] -autoload=no -load => res_jabber.so ; Used for Gtalk -load => res_clioriginate.so ; originate calls from commandline -load => res_rtp_asterisk.so ; rtp "engine" is now a loadable module in asterisk 1.8 -load => pbx_config.so ; Text Extension Configuration Requires N/A -load => func_callerid.so ; Gets or sets Caller*ID data on the channel. - Requires ? -load => func_channel.so -load => func_logic.so ; Logic functions (if, etc.) -load => func_strings.so ; string manipulation functions -load => cdr_manager.so ; Asterisk Call Manager CDR Backend - Requires N/A -load => chan_local.so ; Show status of local channels- Requires N/A -load => chan_gtalk.so ; Use gtalk -load => chan_sip.so ; Session Initiation Protocol (SIP) - Requires res_features.so -load => codec_alaw.so ; A-law Coder/Decoder - Requires N/A -load => codec_a_mu.so ; A-law and Mulaw direct Coder/Decoder - Requires N/A -load => codec_gsm.so ; GSM/PCM16 (signed linear) Codec Translat - Requires N/A -load => codec_ulaw.so ; Mu-law Coder/Decoder - Requires N/A -load => format_gsm.so ; Raw GSM data - Requires N/A -load => format_pcm.so ; Raw uLaw 8khz Audio support (PCM) - Requires N/A -load => format_wav_gsm.so -load => app_dial.so ; Dialing Application - Requires res_features.so, res_musiconhold.so -load => app_parkandannounce.so ; Call Parking and Announce Application - Requires res_features.so -load => app_playback.so ; Sound File Playback Application - Requires N/A -load => app_record.so ; Sound File Record Application - Requires N/A -load => app_system.so ; Execute a system command - Requires N/A -load => app_disa.so ; Direct Inward System Access -load => app_authenticate.so ; Authenticate via pin -load => app_senddtmf.so ; Ability to send DTMF tones on the line. -load => func_cut.so ; To manipulate strings -load => func_timeout.so ; Used for DISA timeouts - -[global] -chan_modem.so=no diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/rtp.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/rtp.conf.TEMPLATE deleted file mode 100644 index 10d577d3a2..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/rtp.conf.TEMPLATE +++ /dev/null @@ -1,6 +0,0 @@ -[general] -rtpstart=|RTPSTART| -rtpend=|RTPEND| -rtpchecksums=no -dtmftimeout=3000 -rtcpinterval = 2000 diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip.conf.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip.conf.TEMPLATE deleted file mode 100644 index 8f3b112ff6..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip.conf.TEMPLATE +++ /dev/null @@ -1,39 +0,0 @@ -[general] -transport=udp -context=default-incoming-call-context -allowoverlap=yes -allowtransfer=yes -realm=asterisk -bindaddr=0.0.0.0 -srvlookup=yes -maxexpiry=600 -minexpiry=60 -defaultexpiry=300 -qualifyfreq=55 -disallow=all -allow=ulaw -allow=alaw -dtmfmode = inband -alwaysauthreject = yes -t1min=100 -timert1=500 -timerb=16000 -rtptimeout=600 -rtpkeepalive=30 -useragent=|USERAGENT| -localnet=192.168.0.0/16 -localnet=10.0.0.0/8 -localnet=172.16.0.0/12 -nat=yes -directmedia=no -sipdebug=no -bindport=|BINDPORT| -externhost=|EXTERNHOST| -externrefresh=60 - -#include sip_registrations.conf - -[authentication] - -#include sip_peers.conf -#include sip_users.conf diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_peer.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_peer.TEMPLATE deleted file mode 100644 index 30abaadd58..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_peer.TEMPLATE +++ /dev/null @@ -1,13 +0,0 @@ - -[peer-|NAME|] -type = peer -defaultuser = |DEFAULTUSER| -fromuser = |FROMUSER| -secret = |SECRET| -host = |HOST| -fromdomain = |FROMDOMAIN| -context = context-incoming-|NAME| -insecure = port,invite -qualify = 2000 -|PORT| -|OUTBOUNDPROXY| diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_registration.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_registration.TEMPLATE deleted file mode 100644 index e139d43f03..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_registration.TEMPLATE +++ /dev/null @@ -1,2 +0,0 @@ -register => |DEFAULTUSER|:|SECRET|@peer-|NAME| - diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_user.TEMPLATE b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_user.TEMPLATE deleted file mode 100644 index 61a8b0b86b..0000000000 --- a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_user.TEMPLATE +++ /dev/null @@ -1,11 +0,0 @@ - -[|DEFAULTUSER|] -fullname = |FULLNAME| -defaultuser = |DEFAULTUSER| -secret = |SECRET| -hassip = yes -hasvoicemail = no -host = dynamic -type = friend -context = context-user-|CONTEXTNAME| -qualify = no \ No newline at end of file diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-alreadyon.gsm b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-alreadyon.gsm deleted file mode 100644 index 83fe27ecfa4dd332504f40dcbd43ddbb812d3d38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8943 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 diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-incorrect.gsm b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-incorrect.gsm deleted file mode 100644 index 27d934beb0b082969f9a55e9b4d6cb55cc4cfebb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8085 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 ONHJ3Nf1n`$&wl`yp0Q&9 diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-incorrect.gsm b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-incorrect.gsm deleted file mode 100644 index 12fec25d56cf39e92b04ae899eed85d34d994931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7458 zcmXwdc~sH~)OJ(0Z&PYbf|CjE+SH`Dw2Y-9V4Aoqk|Jt?g1NR>O}Ui|mZ&YFserg3 zmK%z;xS)b-!jDZzO~75VWtyp(-tX)E% z9QpP4j&6HM3Wt8Na#BoQ#%5Lm8(%AaxiSP(CVCx|eWI1(aR9J>i>^)H_2s|omExfS z*zYY)MBtd}IzRiCydiJDZa~vAdb{FZ-=ycjSWHs>o9uy_FpH^HQ*FF^hCDv@NnYWe zTq{gjZvOa-Tk6c>$v5REi3gVC%@;iA?gykxp>r;8o`3v+Za+E1i5|K<^vQ;$IStPY`3-+0}sQtJ8_Zm*WQ~as*%A^H{DFa(2JNws@ zz0I?d6+eZN?cTr1@YQ5O?SV@Q*AF$dQ zK)s)$ZYm<{icjoOZUq?zNUY=Ro>W;2l!U)QlDT=`C}nL0(i}itos^jV{<^NX4~R)3 z9wKepLvXrmHmTix^8UWsDWMSR)udTty6Qe0|5+Ll8Zfe+wL>Ej40ST%N*|vFb!tvM zva%O0F$Bg=G+&u%nshj>4>?Jo-B9rXh_6t0L5-ZELs-f5t-F)sH_I(E4-{9XZz@ZP z;4d(+U`t`9bhesv*{A7g`oGTA%O(n&R*~PIu6BCO4c;{-VTW-JOWrK_ur|f6w+^OG zxEdl)c=<#bDj*!Vzu}aRK%sNZ(K=CkukZMB+)}OkuMLo$06um~S2Y*^8L>SopTXO8 z?bAc~R(oAa$Fw(dNG}KRT5Mjn5Ab1F?;^n7GwDtqIqipQXB&1A5v)a1Qg}%RNYqe_ z()v}OQNv8Y92eyIK-h71b>~UPlRkdc@cEiU#$wCNyCILg#@z)( zPSMAx=b;0Q4nR~CwG+z}?`SOkled|-4`tqqwYUIAyMw#32S*!gB@#1Nu~Qhr7rJT> z!o}3+KB|G>)W2|iQjP&;t|4x3-b-R^d{wwDU+9HA5H7ub_o%yZ50nS~VoK{Vh0Qkp zLzBc9Vq$Tc0aZeqSla*dtef~KZnk}2iT`sPy^~)@fJg~?5uaZVNM}E^K*RWqW0<-l zVf3Zk+>fWjG(+VaX05blS6D+>=2dK}ergy$JyOaI4T~IGtwTayo3h>$=kQXd9*xoC zI=KIzKHdx~i~4}WdgJz&L2YaFP^9ob0UsrU?wVFk_H}-#xV{xvT^B++*A>)1pqE^% zCJa0?g1y)!Rf8|R70xRI1s%&_F{ZMIozyN<&s(46PF=b56yCj%AUUO3x zwX?>uV@{spYCGL!l3Yt2P=WOLR-!Hy8 zcOnGWmeyRQ$sh8{+Br^%0__Gm7yPz=eSLyf~;19NR5GeVnr+l_HcZ;)vw zbr4C+DH+)Bf$$`WrF=XzIJ*cdr&+t9KghKUBS-rw19K9hD>bRy{Mn`yyTj$ke|#xi z4Go!0%j#HJw6O#II1j)w)cAz9UwGGMef`N!1V9oxJh2#Hdbx|9Z0}em+l$3Eakv|E z_3Z`)XOuMP7FzM^(FLKsUg1Bqr6HKAAXOycdq2whkrOX&UlbY zK&Kxpe%#0wb3Apee3>X3`7#mRs|6(_kE5BEvsC;0XboSL8|omnJbk|ieRo*T%S(=~ zu`l*&1kkku?7~Ks@4aYsf!9`=Jw|D9FlnjJCV}IAJ0~na|uQ6mdaNEM<$&0NVDIuzn-!5>g6MoBRw{Zu>%8c7< z9h6xgXc$sEi0G!4)ZJXmY&*|Yk+`zXx}I|>Tnu&r2Z}d+7dCe?cr>6!QkSxp`LYhC zIWSp;JMSPa_#1@J-uaMva_`uAmM+y+4J?-|_C+D56a=|=cpK*7jE;7c;Hsrwp1c&( zj>+km2NtU7n~1g9$U%edgsD+xX;BBShHw#z;Eve@i& zMzs?|j9{_L9YQA%Zbwp)v(oAF>WoUkaVVk=I}Vqd5<5rU%%NYrfr(Wn0JzA5A;J1F zewp34(eUiy3kw@BX^%VT&7HL}_&)h5vS$bNd4pDLoMnhyGZI!ITY&{zmuz zZwtBASG#Lh;6kXJ+ke2bi;Y-tLV~W2-cwN#K&eh_&~F~w_{$gAM!Xc+3Mx>~8*&qZ zdkfHzks^up|tN7u-8%7-Z%f!|-#_qk>M0Eb_)ZWsA+sD*F!4-Bed1C}# zFS6GZO0u$k;G6@#ccxslp~i~Pb#lPD4MeL!Nj0&={5LbLb5yR9T6vI&7%m-h_TV-` z-%T2suO>QZB-*q#xyA^gL<&K3w*w=5Ji#}d%|Z)DAtT*Tt;kd(q30z8$90=7CCo#5 zH`wC~hty@2_9lt$J5z5vTKhPNB}dXYil;_MC>gG7c80GMN+omQj`${)D!bCdfErLH ziO5|QE`&R%r~}GIX9sP88#wzmd?klx)jNY=lI^V|VSTHIGL2xX93J@g275yeSEDhq zkEPUsOP$?8g+h?z9i#c@bR!2%&jDm<5vWB*KknHFx5fhT?tqI_}GXujt~+LDw(E{e-3emX@5L>8Y2e{6$ud; znQ96Jsv8>|ls~x34!79I$0~nd;Hn~w5b8vC$lMP^RC~w+=O2UM8X1<|R9XCkMd2Xy z-UdfdAy?DwjL=YckVGTck1nPBeg3|Yr$$aHG7@sp*>5@35p-u<2u?o!Cq6+RPiY6_ zV3*0KWQ+BcZ(RPsV#Nv1{cUfo*}r8KtDmmQmXI~NfMI3@WNvIwO=8g=FQnx(xmHXK zr4@2ujZcWJWrg-m;-}@bkRtx6$P%-=N|O(|`Km9nZ3oIIgX=OljGnjv1#mab!1vwT ze(iiyBolO|-mLd46zq;X8X0pxR-x+y`zljI<41FLto{OX`RnfXDlqzgD(|BF%0BiE zWo>PK`8_>IuGYOY+P`yeip@Yt2C=oVE>+oQ$&SS`%l<@2U&Jxh62<9f=WkjPwFC<_ z&m^Ai0fe=i1!WR=ao5b{DoUFM2o5}<+oZEwH~s3xB)HtL(A`hdmpX7&7F_2dzHgTo z3WNlvg-k;e8jg>Y$7xuDxdTd)$pSOsl~|$^h*^DND5k}KG9YY9q1~3o(TvZPTr>|H zJ@@kbZ;z{=^zmrqzzk8<(=X!TJ_mUXY8VgQ4fR5)2m6YF#+v8&s8lF= zjuVI$2NvNTkH?Dl^cz1Rq*w*vA!n?ghggdt*cQDg$N=d;`xb)B-iV~*Dq?TbWCm9v z?cJ5^v+c9o^rX*QO(vq)MG>;XryNDsGhUvPhc6PcpQ~R;_h>WaE3s6a_1;v&-*{X3(mhi)FiN>Qsk8|(G+EJE18gyi9fciQ!G}=vmYphmKRP^y@ zK(}R`!U7~v@ zwrQo1cjWGcFKRNZK~n3VaDEtNT~&MEDrdVEpc$aT6U>{z79Bx;lP?Wz6T%2`!hb&Ytb~wwNaEL7J%8KqTq5Ne% zXi^mS#PRH1*SXe`>}7d{&Tk{as9_U=xm;L%llVXoHe4N~BJ?li&}HU>0T1P~JJ}(l z{RsL8eo-E?y=`J6kT-|K`ygT_vaUT&ZB@ycy3Z7ptwdJ>uTiZ1^=v&S{QeF*5UMQCNWA)?{vH=Yyzv3Py2>wlJkfqQ(N_F$-2O%iOI#BFOrH#+OKnII=P8Zj zCWZWdisx6*gQAK&lmrX?>v+yl3FfAQO8OidT{3!9F7q*677kB9&lw&VJc? z@AG6y$e@LtVl^lzYd9u}3bU42N4+Z&Zu^y9%LdUtMyW^>I9K2&{G>*3!#S$N21xx8FQ|mbT{d^GeF4$vLLO zoDFY9TvxU)(vRL7igNqcFC#!jLcH|Na3~}9KJyoFnWXxEMXT)KWPf)9Flp!(`Vy*` z(qF+q)B=U@c^}q2>ebq}V&V-+m%sZx@e@bg8rH|sSq<3|RE^ zPzP$=7t(o_!T78*!AQL(Hv#0UI|Q?(R(+vgPeMF3zSPE?NG4g=V>OpYbGoQlq(DV> zoes&Wm6x#OlDgA-6S4FQUdM;Zv3z?8@`VaJ+ZLs3vlp8Vwi=@8O3e*@o3R9#iu6Ur zV;=1bvAZ0i<-bKnRAMzf22_MrYOa4U4cm8wI>-0y>g|}ZdLigi^ZX1u#a(=9Uh`qB zq#9b$7S`L$?BnfwQ+tk`i2;Rey<+SG#lLh-(cbQOEYU)B8(zD;QiE(8!gV(1bP8j~ z@Y0=@m|If3nZfqWq=}e(PSwSp>F*?c1MY_9gS7oEBRIG=Pu}~cduX}HK2FMt&DBZm zMH(1Ei!p2=^dTC5F)w_jNeH_#CwK6CwSAQhRd4e>gx`a<{+9!<`^znev=k@I9 zs8k}$Y3$c7hiJ#({zF#Bn1wuR)tvW4O@le&|s;kKpMk^h7{ z)kJ3tA~J&K5-nb)_CF`F`y2BP6}8%ZSh1{W}*3^wzY6?pD1GnTg~13dy6TnCQQG2w)e4H7lO3HS^{I zN$yd#_)C&WZ<0BTzUClK5bRMlxsZ$oN*4}A6|70I>%Vz1O$f*C*Un%&V$?%c;MoyDW(+f`XlTEt&G zwBo2}SM*vZ@JJ`Wd18S1Bx>+_4(t1Hq`eNNC0%^Q&ZKxa%1q61U4G0M5?@53$Bk9c zVoBLVI`R>rrc|7IYE>MYZuy{4991=I7hXOHi9c5nN^(i9!}Dop5R>B6NaI5(S{G$b z$Ni>-A58v$r15KvUvy}A+K!IG;a>sUNb>NV^PL*9`_^H^w!W0M|0pP?hIAhVV#6gwtWm3$EjrR!5Oan>|1q5%i!!)%! zVPg72DcpJ0mW_oRX^v>I_3#jO>lD+=9>g9}6I|wH8@XiE@n3-wH(^6N5`3fbRUcVl zBRAUZXKYgR!g&!)=}=E~J1RSbAlYK#R_ttdYiN{RYiQLp-c#uNNc+Pwwm(?)tji@u z;U^(x>e5IjV9Ih>nU4tecCj5?alvPH4F&iP`N!^iktAW4fyx5+BA7`vI|El7V*-h# zf%Q&-mJo2D;NrArS(Jpx#7F{d+N=t>FQ1WItSGJD{FZC=Dg59-!8i5+k6jYWOfx=b zXm3EYyHy}crJINZbF3Wuh=CCHPDBmINd>U-rbpN)?juS&hz%d0H%FK>@E`3FFYIX4 zB0eE6gaG(7wYs@_pqf(p0>kbC=fb`PH+0f+1T}tw&6NC3zF3>d_6Xb-ems#?>O0?% zU-WR^m#;NW$eZ;=eWsJSOTfE)8J}U{r9uU?&}+SxE!>kjTtiM!`YmTRG8zBR-dJQ& zJoiBU6IHi#nZrGzqYgoq(9a&HlN@b)ZcEi(tP7&Lxagk-dX7p8Y(ssGES3~we%{^f zjKs;1_3j!Xc?FQOX&yxxN7^Cz?7uKBa8=VrEv6m`rXIcP`}6jiO;`_^nt0bBJQlIP z2(j2pYvLaQg3B#>+8`*G2sbW`y2MFN?V?$m#6EF#W-CJX<;Q9BESi5L12uzFbTMOU#nBu1k&Q{u3f--Z}Np z=4_2u@@p&9E})fBL_5q>4J>9xZ=&tCoThMO>Y_Xxx~w18CZ#n8d??LET~WXDm+pb30zG@)|0^F zTwaC6b%4my0MGnLxfR+;ZGu!#vE^z#sYCrf+6_dK1y#AiD|1?W0CJ+`z7Kr{9dp%4 zw9aQd{NZX?-H4_OW)u1^ z0MqQDQgqKF*TqW*(a{#WNIbKuOK{*vIXa?mcT8KnIE-OxK(F2+=QyaCnZ7YpQzDab zGrYj)gs%=+?d3`rS!EfHp>_U%Qf-yqy*O+tlu>2eqkoOBS*IuYV~;UK)+M;&ssf6j7Im*SK-dgj8NxARwX8r@6Ud=)L-t>Xjy`-lNywYfXx#jLZ?ZN|ExJzq)m!pt z>m2=7v~|SbN!@D*n4$vpu!w;$^QmJy@l3`bq(}#xnS1G&v;H`7Ue&z8P!i-nSLD5T z^=&DfO5fHGxz#$k9%E-U#iiB3BULT_n*dDe;v~AyAQFEe!Pm3~%ogsfa?1lJ$@8n2 zgODq%C`oYOqPSwSy~nsfS+Ut%oWvEQUHkQJA%H3=qh}iTC=zTTVAedp((H1e$rVtdsS1#X zEtWO?^z~ZQl5fj7!Am=2M7zu2p$~Ei&bYWJNk|vV|I|iw&vvGJ#Xbw@^NxA4{PFRsSX)g?NkU2*Z>5xL6!>m8hsB z_Lx>>IXcOHIefHO)`P1z{d+&@hzEVzwqAMm(Tu1qjR0=lu~0t9jLzW0RHv);Z}n)Hc87M#f;N*exn~E-*L760&b|M6 zttRHr)MNHK(r?U+tWcsyqz4TZ%3GCrP#+oo!R>)ybcaS$Dfslb4)fr)S=^)cW#Eb5 z+sU;Jwh<3(NRt~vmUDz5w<{fusazU)CO};{Z1BTGeLK5e85HRygk1mOXh{ZCwMLF6 z1&HO5+wRZ=q&4t1muxw;0j8!5LT_z=mr>n8>)nBngmx&)*+E5iget1L>K?B+yMq&v TQ11;$C>059_}}38f7$;B(8DRC diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-thankyou.gsm b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-thankyou.gsm deleted file mode 100644 index 93f936d1a0c49ac8c8b6d4d0efa285d1e276b978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1353 zcmV-P1-AOwUy)%VP(U`@ayHy{068RXHsg>0M%!)2Bjf-!+m1He*XM-ZYPtY79Fex% z*q}KhZMO@8pywk|$s=+ANZU?FB-kl@>V?K2O4O1j-0(n3+iA%i$LvWHog*e>iDH=6 z)TGnst{uyjk~H^`1FcX^ko=AnY_cr2OzpTN-b}XOkGT-krk-I{UF^Q(ZL1t#3t-oF z#GhYj+8~z97+;6-ba5`6)TfozR*$A*IaO68zi8H!&0G~>q!}GBKVtDnr81EuywxRj z-G;-aVmq=jd}F3u8d=Ebl}D(4O~fz9C^q66=JC}beda^Q3#luuCcDWgC>?!NTbYI~ zQcCFV%Lh>8>rm6xV0Izjq7I#))A)ZU&Y!_P$B zLLRx2&t{I^rNd^?Bl3+hT9cn+_4!PzD%DtSW=o$U3XWA((rZJuCCXJ&)`NasQBPIe ziE4*prZz8zkN4n#0 zLn8E%)K90u+l4H?;&DOLPqH}((e1pcn{z_;dC3%_XQ^ZFc9F3Pa8;>D`n zZZ1-g$1d`cG=$o$dzsXR$9^MKmsW7-8l}yNZIFeS>e2{*;;1^DhFfpd*&VjzlS?)U zll>85C^wPvv?PQmDI(A);>_o+BNEmj*d7eF(~qh8qHZ?rkBa#cDc5Y*>N69O_acwv z-=hQTNY~vZw^EVjrmA<`X_Lql^LJT-l_(b<)+URWNXEU4#N^jpE<4Maq^cW-@noCm zNeg}`-Rr7XigT$OQAo+%RT!PtoIW?qQ%Kj;aVXoPCD^@jg(6de%!OwL{8fZXu3^Kh z)!sd~)KvsaTIn{Wt0b9W&`7VVIrOaH4MFzbGG`Eg5V!cQx!$bt+xJ=w+#=8=Y z%ztGggkx1G>(ZmW7uaOwKU8K$>dJ)26TP&R%_5o1jeAqZqcLMVS54Att7GBOLeWcf z$s=mSHus4)8`y-XQ83J5n~(=%LEoS$Ux7!7|}js}|^?FKHzpCsVDHGNg4^cCFUZdE!IrXcVV+4Th=SKBWw#}CfuQZN%uRP8w%fe5jOxKx(p@I0)3909+IqraU6VTEV1XpBG7)ol z!AU4pH0*rgNZOC6>eTUb5!&X!rh?IEVv69oba~i~oPZ#%kH)FspuFA1*rU~HgN@o= zU`p$7#-`YyNo#I`#p*!I95XoEQlK`Qba(z$;yjMvRsKTO5)p LC77TlosKBmtj@qs diff --git a/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/beep.gsm b/package/luci/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/beep.gsm deleted file mode 100644 index d38eda9cc55c8de7b488dbd7993b545210be692f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 726 zcmXBQdrT4m9Ki9;=GJEGkIcDg8i$&pvgQl{tu}nSmMJ3w0!ssDs5t@IbhULhHDcN5 zAwJ5ubC)8avqCuaAJmDVfr)ciq@DswJ{rxow*JYT|9|%VJzR88U2k!MjojJF7fj^r zC*|(+K#{DK$*YbmNqm)yaTTLTMBqUpUjfZIBp&Snpdh}o zWA65`Fc=V4*|~QFxITN>pjNRsdxIFJpG;+ zAwTjW1fAy+FFqxVGzJ9-N7RTDT!9SPyuf!izpRII`7X zzAJ+6(=OQ~T?{V;k-=KAvQ^WAOE0F{(!6lE>~-u1VN=EpbjC*jjHQ*l?9LTJ)pOH% zwFg|PiS7`Aw|!4|RAL7?Xjv4YvobhvqS;N|1p2B3VS;&lag?2XfdCk&LO54=LhJtC zJ#HEdd`?LZEB9J?^h)oa!vYXu!crM>(s)9kT&ruMlN)I|2VAkz@_Us4x(P~05bKfy z_6W_=7ae4hUPenCuqUR4dkB14Ot7B$T>zyV4=79DhU9EBzorWDiSc~S&%*+em?ScU zJ8-e$nz#|Mj_E$x)XuUz#Uo3Q0FNP4bquO=f?GBEsUaa0n#m2V!$4*Ab#^TQ%-|_x zgl2cLBxj{lsF`ew)0jzeuyPx97ZI;^vM}BOP=B*g{RvJgfHxeG#N?&`NhFQ7+~fdA+il4t*PDtR8p;4R+j2=8 zfB-h+l1Cf7AV(x^w&d<$M;vlVBiSUfnPH>=Hso?h+-@K^6}07%@D zM>|mPXOhF|^%Su%Q(%l1P-S;T3*S z#T!_`Lamlo+*Kf!nyr0=(DAe#8Cs!6iqW~DwIR6Lezh#<;i%wF$n08x`3gx~+tD=B zpqX6&xma$z)3TsnWCF^|uE1I24QCsypl4leRFu%NyWv^5pjjolBUfVp5_X-#v20){ zTUKoxu)ye=ZMNjlZMAh#Y`{%jO;qK!z+!c>yA#^LM_$Y<+^*nE(PrCQ*YT#(f(ym&u&S6@18Z9C$fdI*t0y)1+jPVDSVYF6K0^s4*hDA&0w1pZc97S=96kEX+V`C zE>lNqAnbH)GTUl_SlpLJBi6vDT}In>(J8CqDQ>{FnQBW5+<`e{hD9OZpw{w^TN~h@ zwp5YG-O#PYCK~F%=TmL9T;#w-6;;P#+|S z)a<-t3|mXT8j41;w@jCMim4l03#8$`Mw++hX7&oo#nkbPs#IMoy6KHx<6R0TBB~cV zw@5~!ZPP`!h5fo{(Pq^1d}f+kNbcKF)l;=;E7FHJ;j<~$*KR1=vr4#|>a`u!G*xO; zvF0{o9_pf3=f#zXMI)^$H(gQcktamd?KrM28`w`0|ERiaa+Nv~UN z#~Y()KICb~BBKd6+=;l`p{KE>im2Pwv0Y*lQRI43Zb)8H#ZOtSQSr%eQqgP0_+g~`tS8F!gXV)9m zW^L`mS;g5icZ^%LNFAH5IpJSuLgaNbcU{FsC3U3c)n9Gy0$T_jAu3lPn4}ehUesBK?gOaeYT{}p zXR4yFWMwxKQvvstYNVV~Vae2sG@#YkMzTwzV%M>)x=>KU_v&^gn581^D07(7p&|(M zRy2mxm`1V;?!rl(k|r*iq4-+LMs?_+OdF3T`<&q8nrkSc(wv3jTjU{WGHo{$+Cb?d zN=0JUz{?zr=NgEBKTN45Wz!*y-RgRvRPkL4CRm_Y%rMC=Sl~3%vb$7T&=d{ynsgIl19|BfHx#|M4MPZS!1o%qts=rq?%BG dHzaW>BTxWIB$7!aPyk6Jl1U^`07)d0NhDIuL#_Y- diff --git a/package/luci/applications/luci-app-polipo/Makefile b/package/luci/applications/luci-app-polipo/Makefile deleted file mode 100644 index 1fbafe7ed6..0000000000 --- a/package/luci/applications/luci-app-polipo/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for the Polipo Proxy -LUCI_DEPENDS:=+polipo - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-polipo/luasrc/controller/polipo.lua b/package/luci/applications/luci-app-polipo/luasrc/controller/polipo.lua deleted file mode 100644 index b3ae389801..0000000000 --- a/package/luci/applications/luci-app-polipo/luasrc/controller/polipo.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2008 Aleksandar Krsteski --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.polipo", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/polipo") then - return - end - - entry({"admin", "services", "polipo"}, alias("admin", "services", "polipo", "config"), _("Polipo")) - entry({"admin", "services", "polipo", "status"}, template("polipo_status"), _("Status")) - entry({"admin", "services", "polipo", "config"}, cbi("polipo"), _("Configuration")) -end - diff --git a/package/luci/applications/luci-app-polipo/luasrc/model/cbi/polipo.lua b/package/luci/applications/luci-app-polipo/luasrc/model/cbi/polipo.lua deleted file mode 100644 index 6031c84236..0000000000 --- a/package/luci/applications/luci-app-polipo/luasrc/model/cbi/polipo.lua +++ /dev/null @@ -1,177 +0,0 @@ --- Copyright 2008 Aleksandar Krsteski --- Licensed to the public under the Apache License 2.0. - -m = Map("polipo", translate("Polipo"), - translate("Polipo is a small and fast caching web proxy.")) - --- General section -s = m:section(NamedSection, "general", "polipo", translate("Proxy")) - -s:tab("general", translate("General Settings")) -s:tab("dns", translate("DNS and Query Settings")) -s:tab("proxy", translate("Parent Proxy")) -s:tab("logging", translate("Logging and RAM")) - --- General settings -s:taboption("general", Flag, "enabled", translate("enable")) - -o = s:taboption("general", Value, "proxyAddress", translate("Listen address"), - translate("The interface on which Polipo will listen. To listen on all " .. - "interfaces use 0.0.0.0 or :: (IPv6).")) - -o.placeholder = "0.0.0.0" -o.datatype = "ipaddr" - - -o = s:taboption("general", Value, "proxyPort", translate("Listen port"), - translate("Port on which Polipo will listen")) - -o.optional = true -o.placeholder = "8123" -o.datatype = "port" - - -o = s:taboption("general", DynamicList, "allowedClients", - translate("Allowed clients"), - translate("When listen address is set to 0.0.0.0 or :: (IPv6), you must " .. - "list clients that are allowed to connect. The format is IP address " .. - "or network address (192.168.1.123, 192.168.1.0/24, " .. - "2001:660:116::/48 (IPv6))")) - -o.datatype = "ipaddr" -o.placeholder = "0.0.0.0/0" - - --- DNS settings -dns = s:taboption("dns", Value, "dnsNameServer", translate("DNS server address"), - translate("Set the DNS server address to use, if you want Polipo to use " .. - "different DNS server than the host system.")) - -dns.optional = true -dns.datatype = "ipaddr" - -l = s:taboption("dns", ListValue, "dnsQueryIPv6", - translate("Query DNS for IPv6")) - -l.default = "happily" -l:value("true", translate("Query only IPv6")) -l:value("happily", translate("Query IPv4 and IPv6, prefer IPv6")) -l:value("reluctantly", translate("Query IPv4 and IPv6, prefer IPv4")) -l:value("false", translate("Do not query IPv6")) - - -l = s:taboption("dns", ListValue, "dnsUseGethostbyname", - translate("Query DNS by hostname")) - -l.default = "reluctantly" -l:value("true", translate("Always use system DNS resolver")) -l:value("happily", - translate("Query DNS directly, for unknown hosts fall back " .. - "to system resolver")) -l:value("reluctantly", - translate("Query DNS directly, fallback to system resolver")) -l:value("false", translate("Never use system DNS resolver")) - - --- Proxy settings -o = s:taboption("proxy", Value, "parentProxy", - translate("Parent proxy address"), - translate("Parent proxy address (in host:port format), to which Polipo " .. - "will forward the requests.")) - -o.optional = true -o.datatype = "hostport" - - -o = s:taboption("proxy", Value, "parentAuthCredentials", - translate("Parent proxy authentication"), - translate("Basic HTTP authentication supported. Provide username and " .. - "password in username:password format.")) - -o.optional = true -o.placeholder = "username:password" - - --- Logging -s:taboption("logging", Flag, "logSyslog", translate("Log to syslog")) - -s:taboption("logging", Value, "logFacility", - translate("Syslog facility")):depends("logSyslog", "1") - - -v = s:taboption("logging", Value, "logFile", - translate("Log file location"), - translate("Use of external storage device is recommended, because the " .. - "log file is written frequently and can grow considerably.")) - -v:depends("logSyslog", "") -v.rmempty = true - - -o = s:taboption("logging", Value, "chunkHighMark", - translate("In RAM cache size (in bytes)"), - translate("How much RAM should Polipo use for its cache.")) - -o.datatype = "uinteger" - - --- Disk cache section -s = m:section(NamedSection, "cache", "polipo", translate("On-Disk Cache")) -s:tab("general", translate("General Settings")) -s:tab("advanced", translate("Advanced Settings")) - - --- Disk cache settings -s:taboption("general", Value, "diskCacheRoot", translate("Disk cache location"), - translate("Location where polipo will cache files permanently. Use of " .. - "external storage devices is recommended, because the cache can " .. - "grow considerably. Leave it empty to disable on-disk " .. - "cache.")).rmempty = true - - -s:taboption("general", Flag, "cacheIsShared", translate("Shared cache"), - translate("Enable if cache (proxy) is shared by multiple users.")) - - -o = s:taboption("advanced", Value, "diskCacheTruncateSize", - translate("Truncate cache files size (in bytes)"), - translate("Size to which cached files should be truncated")) - -o.optional = true -o.placeholder = "1048576" -o.datatype = "uinteger" - - -o = s:taboption("advanced", Value, "diskCacheTruncateTime", - translate("Truncate cache files time"), - translate("Time after which cached files will be truncated")) - -o.optional = true -o.placeholder = "4d12h" - - -o = s:taboption("advanced", Value, "diskCacheUnlinkTime", - translate("Delete cache files time"), - translate("Time after which cached files will be deleted")) - -o.optional = true -o.placeholder = "32d" - - --- Poor man's multiplexing section -s = m:section(NamedSection, "pmm", "polipo", - translate("Poor Man's Multiplexing"), - translate("Poor Man's Multiplexing (PMM) is a technique that simulates " .. - "multiplexing by requesting an instance in multiple segments. It " .. - "tries to lower the latency caused by the weakness of HTTP " .. - "protocol. NOTE: some sites may not work with PMM enabled.")) - -s:option(Value, "pmmSize", translate("PMM segments size (in bytes)"), - translate("To enable PMM, PMM segment size must be set to some " .. - "positive value.")).rmempty = true - -s:option(Value, "pmmFirstSize", translate("First PMM segment size (in bytes)"), - translate("Size of the first PMM segment. If not defined, it defaults " .. - "to twice the PMM segment size.")).rmempty = true - -return m diff --git a/package/luci/applications/luci-app-polipo/luasrc/view/polipo_status.htm b/package/luci/applications/luci-app-polipo/luasrc/view/polipo_status.htm deleted file mode 100644 index 007d2d5e4e..0000000000 --- a/package/luci/applications/luci-app-polipo/luasrc/view/polipo_status.htm +++ /dev/null @@ -1,18 +0,0 @@ -<% - -local uci = require "luci.model.uci".cursor() -local addr = "127.0.0.1" -local port = uci:get("polipo", "general", "proxyPort") or "8123" - --%> - -<%+header%> - -
    -

    <%:Polipo Status%>

    -
    - -
    -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-polipo/po/ca/polipo.po b/package/luci/applications/luci-app-polipo/po/ca/polipo.po deleted file mode 100644 index 76a7093f48..0000000000 --- a/package/luci/applications/luci-app-polipo/po/ca/polipo.po +++ /dev/null @@ -1,299 +0,0 @@ -# polipo.pot -# generated from ./applications/luci-polipo/luasrc/i18n/polipo.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-06-02 05:16+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Ajusts avançats" - -msgid "Allowed clients" -msgstr "Clients permesos" - -msgid "Always use system DNS resolver" -msgstr "Sempre utilitza el resolutor DNS del sistema" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"Se suporta autenticació HTTP bàsica. Entra el nom d'usuari i contrasenya en " -"format usuari:contrasenya." - -msgid "Configuration" -msgstr "Configuració" - -msgid "DNS and Query Settings" -msgstr "Ajusts de DNS i petició" - -msgid "DNS server address" -msgstr "Adreça de servidor DNS" - -msgid "Delete cache files time" -msgstr "Hora d'esborrat de fitxers de memòria cau" - -msgid "Disk cache location" -msgstr "Localització de la memòria cau del disc" - -msgid "Do not query IPv6" -msgstr "No consultis IPv6" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "Activa si la memòria cau (proxy) és compartida per múltiples usuaris." - -msgid "First PMM segment size (in bytes)" -msgstr "Mida de segment del primer PMM (en bytes)" - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Quanta RAM hauria de fer servir Polipo per la seva memòria cau" - -msgid "In RAM cache size (in bytes)" -msgstr "Mida de memòria cau a la RAM (en bytes)" - -msgid "Listen address" -msgstr "Adreça que rep connexions" - -msgid "Listen port" -msgstr "Port que rep connexions" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Localització on polipo desarà els fitxers de memòria cau permanentment. Es " -"recomana l'ús de dispositius d'emmagatzematge extern, perquè la memòria cau " -"pot créixer considerablement. Deixa-ho buit per desactivar la memòria cau en " -"disc." - -msgid "Log file location" -msgstr "Localització de fitxer registre" - -msgid "Log to syslog" -msgstr "Registra al syslog" - -msgid "Logging and RAM" -msgstr "Registre i RAM" - -msgid "Never use system DNS resolver" -msgstr "Mai utilitzis el resolutor DNS del sistema" - -msgid "On-Disk Cache" -msgstr "Memòria cau en disc" - -msgid "PMM segments size (in bytes)" -msgstr "Mida de segments MMS (en bytes)" - -msgid "Parent Proxy" -msgstr "Proxy pare" - -msgid "Parent proxy address" -msgstr "Adreça de proxy pare" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Adreça de proxy pare (en format host:port), al que Polipo readreçarà les " -"sol·licituds." - -msgid "Parent proxy authentication" -msgstr "Autenticació de proxy pare" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Estat del Polipo" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo és un proxy caché web petit i ràpid." - -msgid "Poor Man's Multiplexing" -msgstr "Multiplexació Poor Man's" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"Multiplexació Poor Man's (PMM) és una tècnica que multiplexa sol·licitant " -"una instància en segments múltiples. Intenta reduir la latència causada per " -"la feblesa del protocol HTTP. NOTA: algunes pàgines poden no funcionar amb " -"la PMM activada." - -msgid "Port on which Polipo will listen" -msgstr "Port en que el Polipo escolta" - -msgid "Proxy" -msgstr "Proxy" - -msgid "Query DNS by hostname" -msgstr "Consulta DNS per nom de màquina" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "Consulta DNS per IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "Consulta IPv4 i IPv6, prefereix IPv4" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "Consulta IPv4 i IPv6, prefereix IPv6" - -msgid "Query only IPv6" -msgstr "Consulta només IPv6" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Estableix l'adreça de servidor DNS a utilitzar, si vols que Polipo faci " -"servir un servidor DNS diferent al del sistema." - -msgid "Shared cache" -msgstr "Memòria cau compartida" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Mida del primer segment PMM. Si no es defineix, per defecte és el doble de " -"la mida de segment MMS." - -msgid "Size to which cached files should be truncated" -msgstr "Mida a que els fitxers en memòria cau es deuen truncar" - -msgid "Status" -msgstr "Estat" - -msgid "Syslog facility" -msgstr "Instal·lació syslog" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"La interfície a la que Polipo rebrà les connexions. Per rebre-les a a totes " -"les interfícies, utilitza 0.0.0.0 o :: (IPv6)." - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "Mida de truncatge de fitxer de memòria cau (en bytes)" - -msgid "Truncate cache files time" -msgstr "Hora de truncatge de fitxers de memòria cau" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"Es recomana l'ǘs de dispositius d'emmagatzematge externs, ja que el fitxer " -"de registre és escrit freqüentment i pot créixer considerablement." - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "habilita" - -#~ msgid "" -#~ "To enable polipo on-disk cache cleaning (highly recommended), you should " -#~ "add a cron job in Scheduled Tasks services that will execute /usr/sbin/" -#~ "polipo_purge script. For example to perform disk cache cleanup every day " -#~ "at 6:00 in the morning you should add the following line in Scheduled " -#~ "Tasks \"0 6 * * *\\t/usr/sbin/polipo_purge\" (without quotes)." -#~ msgstr "" -#~ "Per activar la neteja memòria cau en disc de polipo (altament recomenat), " -#~ "hauries d'afegir una tasca de cron al servei de Tasques Programades que " -#~ "executaran l'script /usr/sbin/polipo_purge. Per exemple, per executar la " -#~ "neteja de memòria cau del disc cada dia a les 6:00 del matí, hauries " -#~ "d'afegir la següent línia a les Tasques Programades: \"0 6 * * * /usr/" -#~ "sbin/polipo_purge\" (sense cometes)." - -#~ msgid "" -#~ "Size to which cached files should be truncated. (default value: 1048576)" -#~ msgstr "" -#~ "Mida a la qual els fitxers de memòria cau s'haurien de truncar (valor per " -#~ "defecte: 1048576)" - -#~ msgid "" -#~ "Time after which cached files will be truncated. (default value: 4d12h)" -#~ msgstr "" -#~ "Hora després de la qual els fitxers de memòria cau es truncaran (valor " -#~ "per defecte: 4d12h)." - -#~ msgid "Time after which cached files will be deleted. (default value: 32d)" -#~ msgstr "" -#~ "Hora després de la qual els fitxers de memòria s'esborraran (valor per " -#~ "defecte: 32d)." - -#~ msgid "General" -#~ msgstr "General" - -#~ msgid "" -#~ "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -#~ "that are allowed to connect. The format is IP address or network address " -#~ "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))." -#~ msgstr "" -#~ "Quan l'adreça d'escolta s'estableix a 0.0.0.0 o :: (IPv6), has de llistar " -#~ "els clients que es permeten per connectar. El format és adreça IP o " -#~ "adreça de xarxa (192.168.1.123, 192.168.1.0/24, 2001:660:116::/47 (IPv6))." - -#~ msgid "" -#~ "false = Do not query IPv6; reluctantly = Query both, prefer IPv4; happily " -#~ "= Query both, prefer IPv6; true = Query only IPv6" -#~ msgstr "" -#~ "fals = No consultis IPv6; a contracor = Consulta els dos, prefereix IPv4; " -#~ "feliçment = Consulta els dos, prefereix IPv6; cert = Consulta només IPv6" - -#~ msgid "" -#~ "false = Never use system DNS resolver; reluctantly = Query DNS directly, " -#~ "if DNS server is unavailable fail to system DNS resolver; happily = Query " -#~ "DNS directly, if host could not be found fallback to system DNS resolver; " -#~ "true = Always use system DNS resolver" -#~ msgstr "" -#~ "fals = mai utilitzis resoledor DNS; a contracor = Consulta DNS " -#~ "directament, si el servidor DNS està indisponible no utilitzis el sistema " -#~ "resoledor de DNS; feliçment = Consulta DNS directament, si la màquina no " -#~ "es pot trobar, vés al sistema resoledor de DNS; cert = Utilitza sistema " -#~ "resoledor DNS sempre" - -#~ msgid "Port on which Polipo will listen. (default value: 8123)" -#~ msgstr "Port al que Polipo rebrà les connexions (valor per defecte: 8123)." - -#~ msgid "polipo_pmm_pmmsize_desc" -#~ msgstr "" -#~ "Per habilitar el PMM, la mida dels segments PMM s'ha d'establir a algun " -#~ "valor positiu." diff --git a/package/luci/applications/luci-app-polipo/po/cs/polipo.po b/package/luci/applications/luci-app-polipo/po/cs/polipo.po deleted file mode 100644 index 9fa249d597..0000000000 --- a/package/luci/applications/luci-app-polipo/po/cs/polipo.po +++ /dev/null @@ -1,205 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-11 19:47+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Pokročilé nastavení" - -msgid "Allowed clients" -msgstr "Povolení klienti" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "Konfigurace" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "Velikost prvního PMM segmentu (v bajtech)" - -msgid "General Settings" -msgstr "Obecné nastavení" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "Velikost PMM segmentů (v bajtech)" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Stav Polipo" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "Proxy" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "Stav" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "povolit" diff --git a/package/luci/applications/luci-app-polipo/po/de/polipo.po b/package/luci/applications/luci-app-polipo/po/de/polipo.po deleted file mode 100644 index 50f7819ed3..0000000000 --- a/package/luci/applications/luci-app-polipo/po/de/polipo.po +++ /dev/null @@ -1,272 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2013-01-29 20:21+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Allowed clients" -msgstr "Zugelassene Clients" - -msgid "Always use system DNS resolver" -msgstr "Immer DNS-Auflösung des Systems benutzen" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"HTTP-Basis-Anmeldung wird unterstützt. Geben Sie Benutzernamen und Passwort " -"im Format benutzername:passwort an." - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "DNS and Query Settings" -msgstr "Einstellungen für DNS und Abfragen" - -msgid "DNS server address" -msgstr "Adresse des DNS-Servers" - -msgid "Delete cache files time" -msgstr "Zeit zur Lösching der Cache-Dateien" - -msgid "Disk cache location" -msgstr "Cache-Verzeichnis" - -msgid "Do not query IPv6" -msgstr "IPv6 nicht abfragen" - -# Klingt komisch -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "Aktivieren, falls Cache (Proxy) von mehreren Benutzern verwendet wird." - -msgid "First PMM segment size (in bytes)" -msgstr "Größe des ersten PMM - Segment in bytes" - -msgid "General Settings" -msgstr "Allgemeine Einstellungen" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Wie viel Arbeitsspeicher soll Polipo für den Cache verwenden." - -msgid "In RAM cache size (in bytes)" -msgstr "Größe des Caches im Arbeitsspeicher (Bytes)" - -msgid "Listen address" -msgstr "Aktive Adresse" - -msgid "Listen port" -msgstr "Aktiver Port" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Speicherort für permanent gespeicherte Dateien. Es wird die Benutzung von " -"externen Datenträgern empfohlen, da der Cache sehr groß werden kann. Lassen " -"Sie diese Option leer um den Cache zu deaktivieren." - -msgid "Log file location" -msgstr "Ort der Log-Datei" - -msgid "Log to syslog" -msgstr "Ereignisse im Systemprotokoll (syslog) speichern" - -msgid "Logging and RAM" -msgstr "Protokollierung und Speicher" - -msgid "Never use system DNS resolver" -msgstr "DNS-Auflösung des Systems niemals verwenden" - -msgid "On-Disk Cache" -msgstr "Festplatten-Cache" - -msgid "PMM segments size (in bytes)" -msgstr "Größe des normalen PMM - Segment in bytes" - -msgid "Parent Proxy" -msgstr "Übergeordneter Proxy" - -msgid "Parent proxy address" -msgstr "Adresse des übergeordneten Proxy-Servers" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Adresse des Übergeordneten Proxyservers (im Format host:port), an den Polipo " -"die Anfragen weiterleiten soll." - -msgid "Parent proxy authentication" -msgstr "Authentifizierung für übergeordneten Proxyserver" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Polipo-Status" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo ist ein kleiner und schneller Webproxy." - -msgid "Poor Man's Multiplexing" -msgstr "PMM" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"Poor Man's Multiplexing (PMM) ist eine Technik, welche Multiplexing " -"simuliert, indem eine Instanz in mehreren Teilen angefordert wird. Damit " -"wird versucht, die durch Schwächen im HTTP-Protokoll verursachten Latenzen " -"auszugleichen. ACHTUNG: Einige Webseiten könnten bei aktivem PMM nicht " -"funktionieren." - -msgid "Port on which Polipo will listen" -msgstr "Port, an dem Polipo lauscht" - -msgid "Proxy" -msgstr "Proxy" - -msgid "Query DNS by hostname" -msgstr "DNS-Abfrage über Hostname" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "direkte DNS-Abfrage, Rückgriff auf System-Auflösung" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" -"direkte DNS-Abfrage, Rückgriff auf System-Auflösung für unbekannte Hosts" - -msgid "Query DNS for IPv6" -msgstr "DNS-Abfrage für IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "DNS-Abfrage für IPv4 und IPv6, bevorzuge IPv4" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "DNS-Abfrage für IPv4 und IPv6, bevorzuge IPv6" - -msgid "Query only IPv6" -msgstr "Nur IPv6 abfragen" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Geben Sie einen DNS-Server an, wenn Polipo diesen Server statt des " -"systemeigenen DNS-Servers verwenden soll." - -# Verteilt? Gemeinsam? -msgid "Shared cache" -msgstr "Gemeinsamer Cache" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Größe des ersten Segments. Wenn diese Option leer ist, wird hierfür die " -"Doppelte Größe des PMM-Segments angenommen" - -msgid "Size to which cached files should be truncated" -msgstr "Größe, auf die zwischengespeicherte Dateien beschnitten werden sollen" - -msgid "Status" -msgstr "Status" - -msgid "Syslog facility" -msgstr "System-Protokollierungsfunktion" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"Aktive Schnittstelle für Polipo. Um Polipo auf allen Schnittstellen zu " -"aktivieren, bitte 0.0.0.0 bzw. :: (IPv6) angeben." - -msgid "Time after which cached files will be deleted" -msgstr "Zeit, nach der zwischengespeicherte Dateien gelöscht werden" - -msgid "Time after which cached files will be truncated" -msgstr "Zeit, nach der zwischengespeicherte Dateien beschnitten werden" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "Um PMM zu aktivieren muss hier ein Wert eingetragen werden" - -msgid "Truncate cache files size (in bytes)" -msgstr "Zwischengespeicherte Dateien auf (Bytes) beschneiden" - -msgid "Truncate cache files time" -msgstr "Zwischengespeicherte Dateien nach (Zeit) beschneiden" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"Es sollte ein externes Speichermedium verwendet werden, da häufig in die " -"Protokolldatei geschrieben wird; sie kann dadurch sehr groß werden." - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"Ist die aktive Adresse auf 0.0.0.0 oder or :: (IPv6) gesetzt, müssen " -"Clients, die sich verbinden dürfen, angegeben werden. Das Format ist " -"entweder IP- oder Netzwerk-Adresse (192.168.1.123, 192.168.1.0/24, " -"2001:660:116::/48 (IPv6))" - -msgid "enable" -msgstr "aktivieren" - -#, fuzzy -#~ msgid "Time after which cached files will be deleted. (default value: 32d)" -#~ msgstr "" -#~ "Speicherort für permanent gespeicherte Dateien. Es wird die Benutzung von " -#~ "externen Datenträgern empfohlen, da der Cache sehr groß werden kann. " -#~ "Lassen Sie diese Option leer um den Cache zu deaktivieren." - -#~ msgid "General" -#~ msgstr "Allgemein" - -#, fuzzy -#~ msgid "" -#~ "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -#~ "that are allowed to connect. The format is IP address or network address " -#~ "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))." -#~ msgstr "" -#~ "Wenn der Server auf alle Anfragen (0.0.0.0 bzw. ::) hört, dann müssen die " -#~ "zugelassenen Gegenpunkte, die berechtig sind eine Verbindung aufzubauen, " -#~ "hier eingetragen werden. Als Format hier bitte die IP-Adresse oder " -#~ "Nerzwerkmaske auswählen (192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 " -#~ "(IPv6))" - -#, fuzzy -#~ msgid "" -#~ "false = Do not query IPv6; reluctantly = Query both, prefer IPv4; happily " -#~ "= Query both, prefer IPv6; true = Query only IPv6" -#~ msgstr "" -#~ "false = Beachtet IPv6 nicht, nur IPv4 möglich; reluctantly = Beachtet " -#~ "sowohl IPv4 als auch IPv6, IPv4 wird bevorzugt; happily = Beachtet sowohl " -#~ "IPv4 als auch IPv6, IPv6 wird bevorzugt; true = Beachtet IPv4 nicht, nur " -#~ "IPv6 möglich" - -#, fuzzy -#~ msgid "Port on which Polipo will listen. (default value: 8123)" -#~ msgstr "" -#~ "Beschreibt, welcher Port von Polipo genutzt werden soll. " -#~ "Grundeinstellung: Port 8123" diff --git a/package/luci/applications/luci-app-polipo/po/el/polipo.po b/package/luci/applications/luci-app-polipo/po/el/polipo.po deleted file mode 100644 index e7a62dd446..0000000000 --- a/package/luci/applications/luci-app-polipo/po/el/polipo.po +++ /dev/null @@ -1,207 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: 2012-03-18 15:29+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "Γενικές Ρυθμίσεις" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/en/polipo.po b/package/luci/applications/luci-app-polipo/po/en/polipo.po deleted file mode 100644 index 1bdb0c1d8a..0000000000 --- a/package/luci/applications/luci-app-polipo/po/en/polipo.po +++ /dev/null @@ -1,284 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "Allowed clients" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "DNS server address" - -msgid "Delete cache files time" -msgstr "Delete cache files time" - -msgid "Disk cache location" -msgstr "Disk cache location" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "Enable if cache (proxy) is shared by multiple users." - -msgid "First PMM segment size (in bytes)" -msgstr "First PMM segment size (in bytes)" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "How much RAM should Polipo use for its cache." - -msgid "In RAM cache size (in bytes)" -msgstr "In RAM cache size (in bytes)" - -msgid "Listen address" -msgstr "Listen address" - -msgid "Listen port" -msgstr "Listen port" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." - -msgid "Log file location" -msgstr "Log file location" - -msgid "Log to syslog" -msgstr "Log to syslog" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "On-Disk Cache" - -msgid "PMM segments size (in bytes)" -msgstr "PMM segments size (in bytes)" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "Parent proxy address" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." - -msgid "Parent proxy authentication" -msgstr "Parent proxy authentication" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo is a small and fast caching web proxy." - -msgid "Poor Man's Multiplexing" -msgstr "Poor Man's Multiplexing" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing " -"by requesting an instance in multiple segments. It tries to lower the " -"latency caused by the weakness of HTTP protocol. NOTE: some sites may not " -"work with PMM enabled." - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "Query DNS by hostname" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "Query DNS for IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." - -msgid "Shared cache" -msgstr "Shared cache" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "Syslog facility" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "To enable PMM, PMM segment size must be set to some positive value." - -msgid "Truncate cache files size (in bytes)" -msgstr "Truncate cache files size (in bytes)" - -msgid "Truncate cache files time" -msgstr "Truncate cache files time" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" - -#~ msgid "" -#~ "To enable polipo on-disk cache cleaning (highly recommended), you should " -#~ "add a cron job in Scheduled Tasks services that will execute /usr/sbin/" -#~ "polipo_purge script. For example to perform disk cache cleanup every day " -#~ "at 6:00 in the morning you should add the following line in Scheduled " -#~ "Tasks \"0 6 * * *\\t/usr/sbin/polipo_purge\" (without quotes)." -#~ msgstr "" -#~ "To enable polipo on-disk cache cleaning (highly recommended), you should " -#~ "add a cron job in Scheduled Tasks services that will execute /usr/sbin/" -#~ "polipo_purge script. For example to perform disk cache cleanup every day " -#~ "at 6:00 in the morning you should add the following line in Scheduled " -#~ "Tasks \"0 6 * * *\t/usr/sbin/polipo_purge\" (without quotes)." - -#~ msgid "" -#~ "Size to which cached files should be truncated. (default value: 1048576)" -#~ msgstr "" -#~ "Size to which cached files should be truncated. (default value: 1048576)" - -#~ msgid "" -#~ "Time after which cached files will be truncated. (default value: 4d12h)" -#~ msgstr "" -#~ "Time after which cached files will be truncated. (default value: 4d12h)" - -#~ msgid "Time after which cached files will be deleted. (default value: 32d)" -#~ msgstr "Time after which cached files will be deleted. (default value: 32d)" - -#~ msgid "General" -#~ msgstr "General" - -#~ msgid "" -#~ "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -#~ "that are allowed to connect. The format is IP address or network address " -#~ "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))." -#~ msgstr "" -#~ "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -#~ "that are allowed to connect. The format is IP address or network address " -#~ "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))." - -#~ msgid "" -#~ "false = Do not query IPv6; reluctantly = Query both, prefer IPv4; happily " -#~ "= Query both, prefer IPv6; true = Query only IPv6" -#~ msgstr "" -#~ "false = Do not query IPv6; reluctantly = Query both, prefer IPv4; happily " -#~ "= Query both, prefer IPv6; true = Query only IPv6" - -#~ msgid "" -#~ "false = Never use system DNS resolver; reluctantly = Query DNS directly, " -#~ "if DNS server is unavailable fail to system DNS resolver; happily = Query " -#~ "DNS directly, if host could not be found fallback to system DNS resolver; " -#~ "true = Always use system DNS resolver" -#~ msgstr "" -#~ "false = Never use system DNS resolver; reluctantly = Query DNS directly, " -#~ "if DNS server is unavailable fail to system DNS resolver; happily = Query " -#~ "DNS directly, if host could not be found fallback to system DNS resolver; " -#~ "true = Always use system DNS resolver" - -#~ msgid "Port on which Polipo will listen. (default value: 8123)" -#~ msgstr "Port on which Polipo will listen. (default value: 8123)" diff --git a/package/luci/applications/luci-app-polipo/po/es/polipo.po b/package/luci/applications/luci-app-polipo/po/es/polipo.po deleted file mode 100644 index 84ba24ec9b..0000000000 --- a/package/luci/applications/luci-app-polipo/po/es/polipo.po +++ /dev/null @@ -1,307 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-09-02 08:33+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Configuración Avanzada" - -msgid "Allowed clients" -msgstr "Clientes permitos" - -msgid "Always use system DNS resolver" -msgstr "Usar siempre el DNS del sistema" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"Autenticación soportada: Basic HTTP. Provee del nombre de usuario y " -"contraseña in el formato username:password." - -msgid "Configuration" -msgstr "Configuración" - -msgid "DNS and Query Settings" -msgstr "Configuración de DNS y consultas" - -msgid "DNS server address" -msgstr "Dirección del servidor DNS" - -msgid "Delete cache files time" -msgstr "Tiempo para eliminar archivos de cache" - -msgid "Disk cache location" -msgstr "Ubicación de la caché de disco" - -msgid "Do not query IPv6" -msgstr "No consultar IPv6" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "Activar si la cache (proxy) es compartida por múltiples usuarios." - -msgid "First PMM segment size (in bytes)" -msgstr "Tamaño del primer segmento PMM (en bytes)" - -msgid "General Settings" -msgstr "Configuración general" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Cuánta RAM debe usar Polipo como caché." - -msgid "In RAM cache size (in bytes)" -msgstr "Tamaño (en bytes) de la cache en RAM" - -msgid "Listen address" -msgstr "Dirección de escucha" - -msgid "Listen port" -msgstr "Puerto de escucha" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Ubicación en la que Polipo creará archivos permanentemente. Se recomienda el " -"uso de dispositivos de almacenamiento externo, ya que la caché puede " -"aumentar considerablemente. Deje en blanco para desactivar la caché en disco." - -msgid "Log file location" -msgstr "Ubicación del archivo de registro" - -msgid "Log to syslog" -msgstr "Registrar en syslog" - -msgid "Logging and RAM" -msgstr "Registro y RAM" - -msgid "Never use system DNS resolver" -msgstr "Nunca usar el DNS del sistema" - -msgid "On-Disk Cache" -msgstr "Cache en disco" - -msgid "PMM segments size (in bytes)" -msgstr "Tamaño de segmentos PMM (en bytes)" - -msgid "Parent Proxy" -msgstr "Proxy padre" - -msgid "Parent proxy address" -msgstr "Dirección del proxy padre" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Dirección del proxy padre (en formato máquina:puerto), al cual Polipo " -"traspasará las peticiones." - -msgid "Parent proxy authentication" -msgstr "Autentificación con el proxy padre" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Estado de Polipo" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo es un servidor proxy web pequeño y rápido." - -msgid "Poor Man's Multiplexing" -msgstr "Multiplexación Poor Man's" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"La Multiplexación Poor Man's (PMM) simula multiplexación solicitando una " -"instancia en múltiples segmentos. Intenta reducir la latencia provocada por " -"la debilidad del protocolo HTTP. NOTA: algunos sitios pueden no funcionar " -"con PMM habilitado." - -msgid "Port on which Polipo will listen" -msgstr "Puerto de escucha de Polipo" - -msgid "Proxy" -msgstr "Proxy" - -msgid "Query DNS by hostname" -msgstr "Consultar DNS por nombre de máquina" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "Consultar DNS directamente y si falla probar con el del sistema" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" -"Consultar DNS directamente y para máquinas desconocidas probar con el del " -"sistema" - -msgid "Query DNS for IPv6" -msgstr "Consulta DNS para IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "Consultar IPv4 e IPv6, pero mejor IPv4" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "Consultar IPv4 e IPv6, pero mejor IPv6" - -msgid "Query only IPv6" -msgstr "Consultar solo IPv6" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Indique la dirección del servidor DNS a utilizar, si prefiere que Polipo " -"utilice una dirección para el servidor DNS distinta al utilizado en el " -"sistema." - -msgid "Shared cache" -msgstr "Cache compartida" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Tamaño del primer segmento PMM. Si no se encuentra definido, su valor por " -"defecto es el doble del tamaño del segmento PMM." - -msgid "Size to which cached files should be truncated" -msgstr "Tamaño máximo de los ficheros caché" - -msgid "Status" -msgstr "Estado" - -msgid "Syslog facility" -msgstr "Utilidad Syslog" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"Interfaz de escucha de Polipo. Para hacerlo en todas utilice 0.0.0.0 o :: " -"(IPv6)." - -msgid "Time after which cached files will be deleted" -msgstr "Tiempo tras el que se borrarán los ficheros en caché" - -msgid "Time after which cached files will be truncated" -msgstr "Tiempo tras el que se truncarán los ficheros en caché" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" -"Para activar PMM, el tamaño de segmento PMM debe tener un valor positivo." - -msgid "Truncate cache files size (in bytes)" -msgstr "Truncar el tamaño del archivo de la cache (en bytes)" - -msgid "Truncate cache files time" -msgstr "Truncar tiempos en el archivo de cache" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"El uso de un dispositivo externo de almacenamiento es recomendado, debido a " -"que el archivo log es escrito con mucha frecuencia y el mismo puede " -"incrementar su tamaño de forma considerable." - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"Si la dirección de escucha es 0.0.0.0 o :: (IPv6), debe listar a los " -"clientes a los que se permitirá conectar. El formato es dirección IP o " -"dirección de red (192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" - -msgid "enable" -msgstr "activar" - -#~ msgid "" -#~ "To enable polipo on-disk cache cleaning (highly recommended), you should " -#~ "add a cron job in Scheduled Tasks services that will execute /usr/sbin/" -#~ "polipo_purge script. For example to perform disk cache cleanup every day " -#~ "at 6:00 in the morning you should add the following line in Scheduled " -#~ "Tasks \"0 6 * * *\\t/usr/sbin/polipo_purge\" (without quotes)." -#~ msgstr "" -#~ "Para activar la limpieza de la cache en disco polipo (recomendada), se " -#~ "recomienda agregar un trabajo al cron in los Servicios de Tareas " -#~ "Programadas el cual ejecutará el script /usr/sbin/polipo_purge. Por " -#~ "ejemplo para ejecutar una limpieza de la cache de disco todos los días a " -#~ "las 6:00 a.m. deberá agregar la siguiente línea en el Servicio de Tareas " -#~ "Programadas.-&quot;0 6 * * * /usr/sbin/polipo_purge&quot; (sin " -#~ "las comillas)." - -#~ msgid "" -#~ "Size to which cached files should be truncated. (default value: 1048576)" -#~ msgstr "" -#~ "Tamaño del archivo sobre el cual la cache deberá ser truncada. (valor por " -#~ "defecto: 1048576)" - -#~ msgid "" -#~ "Time after which cached files will be truncated. (default value: 4d12h)" -#~ msgstr "" -#~ "Tiempo transcurrido necesario antes de truncar los archivos cacheado. " -#~ "(valor por defecto: 4d12h)" - -#~ msgid "Time after which cached files will be deleted. (default value: 32d)" -#~ msgstr "" -#~ "Tiempo transcurrido necesario antes de eliminar los archivos en la cache. " -#~ "(valor por defecto: 32d)" - -#~ msgid "General" -#~ msgstr "General" - -#~ msgid "" -#~ "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -#~ "that are allowed to connect. The format is IP address or network address " -#~ "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))." -#~ msgstr "" -#~ "Cuando la dirección a escuchar es establecida en 0.0.0.0 or :: (en caso " -#~ "de utilizar IPv6), deberá listar los clientes que se encuentran permitos " -#~ "a conectarse. El formato a utilizar deberá indicarse con la dirección IP " -#~ "o bien la dirección de Red.Por ejemplo: (192.168.1.123, 192.168.1.0/24, " -#~ "2001:660:116::/48 (IPv6))." - -#~ msgid "" -#~ "false = Do not query IPv6; reluctantly = Query both, prefer IPv4; happily " -#~ "= Query both, prefer IPv6; true = Query only IPv6" -#~ msgstr "" -#~ "false = No consulta IPv6, reluctantly = Consulta ambos, preferencia IPv4; " -#~ "happily = Consulta ambos, preferencia IPv6; true = Consulta sólamente IPv6" - -#~ msgid "" -#~ "false = Never use system DNS resolver; reluctantly = Query DNS directly, " -#~ "if DNS server is unavailable fail to system DNS resolver; happily = Query " -#~ "DNS directly, if host could not be found fallback to system DNS resolver; " -#~ "true = Always use system DNS resolver" -#~ msgstr "" -#~ "false = Nunca use el sistema de resolución de DNS, reluctantly = " -#~ "Consultar DNS directamente, si el servidor DNS no está disponible al " -#~ "utilizar el sistema de resolución de DNS, hapilly = Consultar DNS " -#~ "directamente, si el host no se pudo encontrar volver al sistema de " -#~ "resolución de DNS; true = Siempre use el sistema de resolución de DNS" - -#~ msgid "Port on which Polipo will listen. (default value: 8123)" -#~ msgstr "Puerto de escucha que Polipo utilizará. (valor por defecto: 8123)" - -#~ msgid "polipo_pmm_pmmsize_desc" -#~ msgstr "" -#~ "Para activar PMM, el tamaño del segmento PMM debe ser establecido a un " -#~ "valor mayor a 0 (valor positivo)." diff --git a/package/luci/applications/luci-app-polipo/po/fr/polipo.po b/package/luci/applications/luci-app-polipo/po/fr/polipo.po deleted file mode 100644 index f4e49aea56..0000000000 --- a/package/luci/applications/luci-app-polipo/po/fr/polipo.po +++ /dev/null @@ -1,206 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/he/polipo.po b/package/luci/applications/luci-app-polipo/po/he/polipo.po deleted file mode 100644 index 931228e5bb..0000000000 --- a/package/luci/applications/luci-app-polipo/po/he/polipo.po +++ /dev/null @@ -1,202 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/hu/polipo.po b/package/luci/applications/luci-app-polipo/po/hu/polipo.po deleted file mode 100644 index 931228e5bb..0000000000 --- a/package/luci/applications/luci-app-polipo/po/hu/polipo.po +++ /dev/null @@ -1,202 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/it/polipo.po b/package/luci/applications/luci-app-polipo/po/it/polipo.po deleted file mode 100644 index 6bc06690db..0000000000 --- a/package/luci/applications/luci-app-polipo/po/it/polipo.po +++ /dev/null @@ -1,219 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-02-09 19:56+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Impostazioni avanzate" - -msgid "Allowed clients" -msgstr "Clients permessi" - -# che è sto DNS RESOLVER? -msgid "Always use system DNS resolver" -msgstr "Usa sempre DNS resolver" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"Autenticazione base HTTP supportata. Fornire username e password in formato " -"username:password." - -msgid "Configuration" -msgstr "Configurazione" - -msgid "DNS and Query Settings" -msgstr "Settaggi DNS e Query" - -msgid "DNS server address" -msgstr "Indirizzo del server DNS" - -msgid "Delete cache files time" -msgstr "Svuota la cache file dopo" - -msgid "Disk cache location" -msgstr "Percorso della cache del disco" - -msgid "Do not query IPv6" -msgstr "Non ignorare query IPv6" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "Abilita se la cache (del proxy) e' condivisa tra gli utenti." - -msgid "First PMM segment size (in bytes)" -msgstr "Dimensione del primo segmento PMM (in bytes)" - -msgid "General Settings" -msgstr "Impostazioni genarali" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Quanta RAM dovrebbe Polipo usa come sua cache." - -msgid "In RAM cache size (in bytes)" -msgstr "In RAM cache size (in bytes)" - -msgid "Listen address" -msgstr "Indirizzi ip da \"ascoltare\"" - -msgid "Listen port" -msgstr "Porta" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Percorso dove polipo memorizzerà i files di cache permanentemente. L'uso di " -"un dispositivo di memorizzazione esterno è raccomandato. Lasciare vuoto per " -"disabilitare la cache sul disco." - -msgid "Log file location" -msgstr "Percorso del file di log" - -msgid "Log to syslog" -msgstr "Pubblica il log nel syslog" - -msgid "Logging and RAM" -msgstr "Registra in RAM" - -msgid "Never use system DNS resolver" -msgstr "Non usare mai DNS RESOLVER" - -msgid "On-Disk Cache" -msgstr "On-Disk Cache" - -msgid "PMM segments size (in bytes)" -msgstr "DImensione segmenti PMM (in bytes)" - -msgid "Parent Proxy" -msgstr "Parent Proxy" - -msgid "Parent proxy address" -msgstr "Indirizzo parent proxy" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Indirizzi del parent proxy (nel formato ip:porta), al quale Polipo dovrà " -"inoltrare le richieste." - -msgid "Parent proxy authentication" -msgstr "Autentificazione Parent proxy" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Stato Polipo" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo è un piccolo e veloce webcache proxy." - -msgid "Poor Man's Multiplexing" -msgstr "Poor Man's Multiplexing" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"Poor Man's Multiplexing (PMM) è una tecnica che simula il multiplexing " -"richiedendo una nuova istanza del segmento. Questo server per abbassare la " -"latenza causata dalla debolezza del protocollo HTTP. NOTA: alcuni siti " -"potrebbero non funzionare con PMM abilitato." - -msgid "Port on which Polipo will listen" -msgstr "Porta sulla quale Polipo deve rimanere in ascolto" - -msgid "Proxy" -msgstr "Proxy" - -msgid "Query DNS by hostname" -msgstr "Richiesta DNS da parte dell'host" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "Abilita" diff --git a/package/luci/applications/luci-app-polipo/po/ja/polipo.po b/package/luci/applications/luci-app-polipo/po/ja/polipo.po deleted file mode 100644 index 81ce9a7836..0000000000 --- a/package/luci/applications/luci-app-polipo/po/ja/polipo.po +++ /dev/null @@ -1,229 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-10-06 17:01+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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" - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Allowed clients" -msgstr "アクセスを許可するクライアント" - -msgid "Always use system DNS resolver" -msgstr "常にシステムのDNS名前解決を使用する" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"Basic認証をサポートしています。\"ユーザー名:パスワード\"の形式で入力してくだ" -"さい。" - -msgid "Configuration" -msgstr "設定" - -msgid "DNS and Query Settings" -msgstr "DNSおよびクエリ設定" - -msgid "DNS server address" -msgstr "DNSサーバーアドレス" - -msgid "Delete cache files time" -msgstr "キャッシュファイルを保持する時間" - -msgid "Disk cache location" -msgstr "ディスクキャッシュの保存場所" - -msgid "Do not query IPv6" -msgstr "IPv6の問い合わせを行わない" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "複数ユーザーでキャッシュを共有する場合、有効にしてください。" - -msgid "First PMM segment size (in bytes)" -msgstr "ファーストPMM セグメントサイズ (単位:バイト)" - -msgid "General Settings" -msgstr "基本設定" - -msgid "How much RAM should Polipo use for its cache." -msgstr "PolipoがRAM上で使用するキャッシュサイズを設定してください。" - -msgid "In RAM cache size (in bytes)" -msgstr "RAM キャッシュサイズ (単位:バイト)" - -msgid "Listen address" -msgstr "待ち受けアドレス" - -msgid "Listen port" -msgstr "待ち受けポート" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Polipoが使用するキャッシュファイルの保存場所を設定します。キャッシュは頻繁に" -"更新されるため、外部デバイスに保存することを推奨します。空欄に設定した場合、" -"ディスクキャッシュは無効化されます。" - -msgid "Log file location" -msgstr "ログファイルの保存場所" - -msgid "Log to syslog" -msgstr "syslogにログを記録する" - -msgid "Logging and RAM" -msgstr "ログとRAM設定" - -msgid "Never use system DNS resolver" -msgstr "システムのDNS名前解決を使用しない" - -msgid "On-Disk Cache" -msgstr "ディスクキャッシュ" - -msgid "PMM segments size (in bytes)" -msgstr "PMM セグメントサイズ (単位:バイト)" - -msgid "Parent Proxy" -msgstr "親プロキシ" - -msgid "Parent proxy address" -msgstr "親プロキシ・アドレス" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Polipoがリクエストを転送する、親プロキシサーバーのアドレスを\"ホスト:ポート番" -"号\"の形式で設定してください。" - -msgid "Parent proxy authentication" -msgstr "親プロキシの認証" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Polipo ステータス" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipoは、軽量で高速なWEBプロキシキャッシュサーバーです。" - -msgid "Poor Man's Multiplexing" -msgstr "Poor Man's Multiplexing" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"Poor Man's Multiplexing (PMM) は、複数のセグメントに渡ってインスタンスをリク" -"エストすることで、多重化をシュミレートする技術であり、HTTPプロトコルの弱点に" -"よるレイテンシを低減する試みを行います。注意:PMMを有効にしていると、いくつか" -"のサイトではつながらなくなる可能性があります。" - -msgid "Port on which Polipo will listen" -msgstr "Polipoが待ち受けを行うポート番号です。" - -msgid "Proxy" -msgstr "プロキシ" - -msgid "Query DNS by hostname" -msgstr "ホスト名のDNS問い合わせ" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "IPv6 DNS問い合わせ" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "IPv4とIPv6の問い合わせを行う (IPv4を優先)" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "IPv4とIPv6の問い合わせを行う (IPv6を優先)" - -msgid "Query only IPv6" -msgstr "IPv6のみ問い合わせを行う" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Polipoがシステムとは別のDNSサーバーを使用する場合、DNSサーバーのアドレスを設" -"定してください。" - -msgid "Shared cache" -msgstr "共有キャッシュ" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"最初のPMM セグメントのサイズを設定します。設定されなかった場合、PMM セグメン" -"トサイズの倍のサイズをデフォルト値として設定します。" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "ステータス" - -msgid "Syslog facility" -msgstr "Syslog ファシリティ" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"Polipoが待ち受けを行うインターフェースです。0.0.0.0 または :: (IPv6) を設定し" -"た場合、全てのインターフェースで待ち受けを行います。" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "PMM を有効にする場合、PMM セグメントサイズには正の値を設定してください。" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"ログファイルは頻繁に更新されるため、外部デバイスに保存することを推奨します。" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"待ち受けアドレスを0.0.0.0 または :: (IPv6) に設定した場合、アクセスを許可する" -"クライアントアドレスを設定してください。設定フォーマットはIPアドレスかネット" -"ワークアドレスです。(例:192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 " -"(IPv6))" - -msgid "enable" -msgstr "サービスを有効にする" diff --git a/package/luci/applications/luci-app-polipo/po/ms/polipo.po b/package/luci/applications/luci-app-polipo/po/ms/polipo.po deleted file mode 100644 index 7517dccfac..0000000000 --- a/package/luci/applications/luci-app-polipo/po/ms/polipo.po +++ /dev/null @@ -1,201 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/no/polipo.po b/package/luci/applications/luci-app-polipo/po/no/polipo.po deleted file mode 100644 index 931228e5bb..0000000000 --- a/package/luci/applications/luci-app-polipo/po/no/polipo.po +++ /dev/null @@ -1,202 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/pl/polipo.po b/package/luci/applications/luci-app-polipo/po/pl/polipo.po deleted file mode 100644 index 698edc98c5..0000000000 --- a/package/luci/applications/luci-app-polipo/po/pl/polipo.po +++ /dev/null @@ -1,231 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-06 22:57+0200\n" -"Last-Translator: obsy \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -msgid "Allowed clients" -msgstr "Dozwolone klienty" - -msgid "Always use system DNS resolver" -msgstr "Zawsze używaj systemowej obsługi DNS" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"Obsługiwana podstawowa autoryzacja HTTP. Podaj nazwę użytkownika i hasło w " -"formie username:hasło." - -msgid "Configuration" -msgstr "Konfiguracja" - -msgid "DNS and Query Settings" -msgstr "Ustawienia DNS i zapytań" - -msgid "DNS server address" -msgstr "Adres serwera DNS" - -msgid "Delete cache files time" -msgstr "Czas usuwania plików cache" - -msgid "Disk cache location" -msgstr "Położenie cache na dysku" - -msgid "Do not query IPv6" -msgstr "Nie wykonuj zapytań IPv6" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "Włącz, aby cache (proxy) był współdzielony przez wielu użytkowników." - -msgid "First PMM segment size (in bytes)" -msgstr "Rozmiar pierwszego segmentu PMM (w bajtach)" - -msgid "General Settings" -msgstr "Ustawienia ogólne" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Ile pamięci RAM powinien używać Polipo jako cache." - -msgid "In RAM cache size (in bytes)" -msgstr "Rozmiar cache w RAM (w bajtach)" - -msgid "Listen address" -msgstr "Nasłuchuj adres" - -msgid "Listen port" -msgstr "Nasłuchuj port" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Miejsce, w którym Polipo będzie przechowywać pliki cache na stałe. Użycie " -"zewnętrznego magazynu jest zalecane. Cache może się poważnie zwiększyć. " -"Pozostaw puste, aby wyłączyć cache na dysku." - -msgid "Log file location" -msgstr "Katalog logów" - -msgid "Log to syslog" -msgstr "Loguj do logu systemowego (syslog)" - -msgid "Logging and RAM" -msgstr "Dziennik i RAM" - -msgid "Never use system DNS resolver" -msgstr "Nigdy nie używaj systemowej obsługi DNS" - -msgid "On-Disk Cache" -msgstr "Cache na dysku" - -msgid "PMM segments size (in bytes)" -msgstr "Rozmiar segmentu PMM (w bajtach)" - -msgid "Parent Proxy" -msgstr "Nadrzędne proxy" - -msgid "Parent proxy address" -msgstr "Adres nadrzędnego proxy" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Adres nadrzędnego proxy (podany jako host:port), do którego Polipo będzie " -"przekierowywać żądania." - -msgid "Parent proxy authentication" -msgstr "Autoryzacja nadrzędnego proxy" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Status Polipo" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo jest małym i szybkim web proxy z obsługą cache." - -# "Multipleksowanie Biedaka" brzmi fajniej, ale nie chcę mieć usuniętego konta. -msgid "Poor Man's Multiplexing" -msgstr "Poor Man's Multiplexing" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"Poor Man's Multiplexing (PMM) to technika symulująca multipleksowanie " -"poprzez żądanie instancji w wielu segmentach. Próbuje obniżyć opóźnienia " -"spowodowane wadami protokołu HTTP. UWAGA: niektóre strony mogą nie działać " -"przy włączonym PMM!" - -msgid "Port on which Polipo will listen" -msgstr "Port, na którym Polipo będzie nasłuchiwać." - -msgid "Proxy" -msgstr "Proxy" - -msgid "Query DNS by hostname" -msgstr "Zapytanie DNS po nazwie hosta" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "Odpytuj DNS bezpośrednio, powracając do resolvera systemu" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" -"Odpytuj DNS bezpośrednio, dla nieznanych hostów powróć do resolvera systemu" - -msgid "Query DNS for IPv6" -msgstr "Zapytanie DNS dla IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "Zapytanie DNS dla IPv4 i IPv6, preferowane IPv4" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "Zapytanie DNS dla IPv4 i IPv6, preferowane IPv6" - -msgid "Query only IPv6" -msgstr "Zapytanie tylko IPv6" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Ustaw adres serwera DNS do użycia, jeśli chcesz aby Polipo używał innego " -"DNS`a niż system hosta." - -msgid "Shared cache" -msgstr "Cache udostępniany" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Rozmiar PIERWSZEGO segmentu PMM. Jeśli nie zdefiniowano, jego domyślny " -"rozmiar to dwu-krotność rozmiaru segmentu PMM." - -msgid "Size to which cached files should be truncated" -msgstr "Rozmiar do którego pliki cache`owane mają być przycięte" - -msgid "Status" -msgstr "Status" - -msgid "Syslog facility" -msgstr "Funkcja (facility) loga systemowego" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"Interfejs na którym słucha proxy Polipo. Aby słuchać na wszystkich " -"interfejsach użyj 0.0.0.0 lub :: dla IPv6" - -msgid "Time after which cached files will be deleted" -msgstr "Czas po którym pliki cache będą skasowane" - -msgid "Time after which cached files will be truncated" -msgstr "Czas po którym pliki cache będą przycięte" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" -"Aby włączyć PMM, rozmiar segmentu PMM musi mieć ustawioną wartość dodatnią." - -msgid "Truncate cache files size (in bytes)" -msgstr "Rozmiar przycinanych plików w cache(w bajtach)" - -msgid "Truncate cache files time" -msgstr "Czas przycinanych plików w cache" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"Użycie zewnętrznego nośnika danych wysoce zalecane, plik loga jest " -"zapisywany okresowo i może urosnąć znacząco." - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"Jeśli adres nasłuchu ustawiony jest na 0.0.0.0 lub ::(IPv6), musisz " -"wyszczególnić klientów mających pozwolenie na połączenie. Format to adres IP " -"lub adres sieci (192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" - -msgid "enable" -msgstr "włączone" diff --git a/package/luci/applications/luci-app-polipo/po/pt-br/polipo.po b/package/luci/applications/luci-app-polipo/po/pt-br/polipo.po deleted file mode 100644 index 881d5c0791..0000000000 --- a/package/luci/applications/luci-app-polipo/po/pt-br/polipo.po +++ /dev/null @@ -1,306 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-09-16 02:36+0200\n" -"Last-Translator: Julio Cezar \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Opções Avançadas" - -msgid "Allowed clients" -msgstr "Clientes permitidos" - -msgid "Always use system DNS resolver" -msgstr "Sempre use o resolvedor de DNS do sistema" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"A autenticação básica HTTP é suportada. Indique o usuário e senha no formato " -"usuário:senha." - -msgid "Configuration" -msgstr "Configuração" - -msgid "DNS and Query Settings" -msgstr "Configurações de DNS e Consulta" - -msgid "DNS server address" -msgstr "Endereço do servidor DNS" - -msgid "Delete cache files time" -msgstr "Tempo para remoção dos arquivos de cache" - -msgid "Disk cache location" -msgstr "Localização da cache em disco" - -msgid "Do not query IPv6" -msgstr "Não consulte IPv6" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "Ativar se a cache (proxy) for compartilhada por múltiplos usuários." - -msgid "First PMM segment size (in bytes)" -msgstr "Tamanho do primeiro segmento PMM (em bytes)" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Quanta memória RAM deverá ser usada pelo Polipo para a sua cache." - -msgid "In RAM cache size (in bytes)" -msgstr "Tamanho da cache na RAM (bytes)" - -msgid "Listen address" -msgstr "Endereço de escuta" - -msgid "Listen port" -msgstr "Porta de escuta" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Local onde o polipo guardará permanentemente os arquivos de cache. É " -"recomendada a utilização de dispositivos de armazenamento externo uma vez " -"que o cache pode crescer consideravelmente. Deixe em branco para desativar a " -"cache em disco." - -msgid "Log file location" -msgstr "Localização do arquivo de registo" - -msgid "Log to syslog" -msgstr "Registar para o syslog" - -msgid "Logging and RAM" -msgstr "Registro e RAM" - -msgid "Never use system DNS resolver" -msgstr "Nunca use o resolvedor de DNS do sistema" - -msgid "On-Disk Cache" -msgstr "Cache em Disco" - -msgid "PMM segments size (in bytes)" -msgstr "Tamanho do segmento PMM (em bytes)" - -msgid "Parent Proxy" -msgstr "Porxy Superior" - -msgid "Parent proxy address" -msgstr "Endereço do proxy superior" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Endereço do proxy superior (no formato host:porta), ao qual o Polipo irá " -"encaminhar os seus pedidos." - -msgid "Parent proxy authentication" -msgstr "Autenticação no proxy superior" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Estado do Polipo" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "O polipo é um proxy web pequeno e rápido." - -msgid "Poor Man's Multiplexing" -msgstr "Multiplexagem simples" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"A multiplexagem simples (PMM) consiste na simulação de multiplexagem através " -"da requisição de um pedido em múltiplos segmentos. O método tenta baixar a " -"latência causada pela fraqueza do protocolo HTTP. Nota: alguns sites web não " -"funcionam com a ativação de PMM." - -msgid "Port on which Polipo will listen" -msgstr "Porta na qual o Polipo irá escutar" - -msgid "Proxy" -msgstr "Proxy" - -msgid "Query DNS by hostname" -msgstr "Consultar DNS pelo nome do equipamento" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" -"Consulte o DNS diretamente. Alternativamente, use o resolvedor do sistema" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" -"Consulte o DNS diretamente. Para nomes desconhecidos, use o resolvedor do " -"sistema" - -msgid "Query DNS for IPv6" -msgstr "Consultar DNS para IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "Consulta IPv4 e IPv6, prefere IPv4" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "Consulta IPv4 e IPv6, prefere IPv6" - -msgid "Query only IPv6" -msgstr "Consulta somente IPv6" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Define o endereço do servidor de DNS, caso pretenda que o polipo utilize um " -"servidor DNS diferente do utilizado pelo sistema." - -msgid "Shared cache" -msgstr "Cache compartilhada" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Tamanho do primeiro segmento PMM. Se não estiver definido, reverte para o " -"dobro do tamanho do segmento PMM." - -msgid "Size to which cached files should be truncated" -msgstr "Tamanho que os arquivos de cache serão truncados" - -msgid "Status" -msgstr "Estado" - -msgid "Syslog facility" -msgstr "Categoria dos eventos Polipo no registo do sistema (syslog)" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"A interface na qual o Polipo será ativado. Para ativar em todas as " -"interfaces, use 0.0.0.0 ou :: (IPv6)." - -msgid "Time after which cached files will be deleted" -msgstr "Tempo máximo antes que um arquivo de cache seja apagado" - -msgid "Time after which cached files will be truncated" -msgstr "Tempo máximo antes que um arquivo de cache seja truncado" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" -"Para habilitar o PMM, o tamanho do segmento PMM deve ser definido para algum " -"valor positivo." - -msgid "Truncate cache files size (in bytes)" -msgstr "Tamanho de truncagem dos arquivos de cache (em bytes)" - -msgid "Truncate cache files time" -msgstr "Tempo de truncagem dos arquivos de cache" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"É recomendado o uso de armazenamento de externos pois o arquivo de registro " -"é escrito frequentemente e pode crescer consideravelmente." - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"Quando o endereço de escuta for definido como 0.0.0.0 ou :: (IPv6), é " -"necessário listar quais clientes são permitidos. O formato é o endereço IP " -"ou o endereço derede (192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 " -"(IPv6))" - -msgid "enable" -msgstr "habilitado" - -#~ msgid "" -#~ "To enable polipo on-disk cache cleaning (highly recommended), you should " -#~ "add a cron job in Scheduled Tasks services that will execute /usr/sbin/" -#~ "polipo_purge script. For example to perform disk cache cleanup every day " -#~ "at 6:00 in the morning you should add the following line in Scheduled " -#~ "Tasks \"0 6 * * *\\t/usr/sbin/polipo_purge\" (without quotes)." -#~ msgstr "" -#~ "Para activar a limpeza de cache em disco (altamente recomendado), deve " -#~ "acrescentar uma tarefa cron (\"Serviços\") que execute o script /usr/sbin/" -#~ "polipo_purge. Como exemplo, para executar uma limpeza da cache " -#~ "diariamente pelas 06H00 deve acrescentar a seguinte linha: \"0 6 * * * /" -#~ "usr/sbin/polipo_purge\" (sem as aspas)." - -#~ msgid "" -#~ "Size to which cached files should be truncated. (default value: 1048576)" -#~ msgstr "" -#~ "Tamanho com o qual devem ser trancados os ficheiros da cache. (valor pre-" -#~ "definido: 1048576)" - -#~ msgid "" -#~ "Time after which cached files will be truncated. (default value: 4d12h)" -#~ msgstr "" -#~ "Tempo após o qual os ficheiros de cache serão trancados. (valor pre-" -#~ "definido: 4d12h)" - -#~ msgid "Time after which cached files will be deleted. (default value: 32d)" -#~ msgstr "" -#~ "Tempo apos o qual os ficheiros de cache serão removidos. (valor pré-" -#~ "definido: 32d)" - -#~ msgid "General" -#~ msgstr "Geral" - -#~ msgid "" -#~ "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -#~ "that are allowed to connect. The format is IP address or network address " -#~ "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))." -#~ msgstr "" -#~ "Quando o endereço de listen fôr 0.0.0.0 (IPv4) ou :: (IPv6), deve listar " -#~ "os clientes que tiverem permissão para ligação. O formato é endereço de " -#~ "host ou endereço de rede (192.168.1.123, 192.168.1.0/24, " -#~ "2001:660:116::/48 (IPv6))." - -#~ msgid "" -#~ "false = Do not query IPv6; reluctantly = Query both, prefer IPv4; happily " -#~ "= Query both, prefer IPv6; true = Query only IPv6" -#~ msgstr "" -#~ "false = Não pedir IPv6; reluctantly=Pedir ambos e preferir IPv4; " -#~ "happily=Pedir ambos, preferir IPv6; true=Pedir apenas IPv6" - -#~ msgid "" -#~ "false = Never use system DNS resolver; reluctantly = Query DNS directly, " -#~ "if DNS server is unavailable fail to system DNS resolver; happily = Query " -#~ "DNS directly, if host could not be found fallback to system DNS resolver; " -#~ "true = Always use system DNS resolver" -#~ msgstr "" -#~ "false=nunca usar o resolver do sistema; reluctantly=pedir DNS " -#~ "directamente, se o servidor DNS estiver indisponivel recorrer do resolver " -#~ "DNS do sistema; happily=pedir DNS directamente, se o host nao for " -#~ "encontrado, recorrer ao resolver DNS do sistema; true=Usar sempre o " -#~ "resolver DNS do sistema" - -#~ msgid "Port on which Polipo will listen. (default value: 8123)" -#~ msgstr "Porta local na qual o polipo será activado. (pre-definido: 8123)" - -#~ msgid "polipo_pmm_pmmsize_desc" -#~ msgstr "" -#~ "Para activar PMM, o tamanho do segmento PMM deve ser definido para um " -#~ "qualquer valor positivo." diff --git a/package/luci/applications/luci-app-polipo/po/pt/polipo.po b/package/luci/applications/luci-app-polipo/po/pt/polipo.po deleted file mode 100644 index cdce586d9c..0000000000 --- a/package/luci/applications/luci-app-polipo/po/pt/polipo.po +++ /dev/null @@ -1,305 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-06-02 19:10+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Definições avançadas" - -msgid "Allowed clients" -msgstr "Clientes permitidos" - -msgid "Always use system DNS resolver" -msgstr "Usar sempre o resolvedor DNS de Sistema" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"É suportada a autenticação basica HTTP. Indique username e password no " -"formato username:password." - -msgid "Configuration" -msgstr "Configuração" - -msgid "DNS and Query Settings" -msgstr "Definições de DNS e de Consulta" - -msgid "DNS server address" -msgstr "Endereço do servidor DNS" - -msgid "Delete cache files time" -msgstr "Tempo para remoção dos ficheiros de cache" - -msgid "Disk cache location" -msgstr "Localização da cache em disco" - -msgid "Do not query IPv6" -msgstr "Não consulta o IPv6" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "Activar se a cache (proxy) for partilhada por multiplos utilizadores." - -msgid "First PMM segment size (in bytes)" -msgstr "Tamanho do primeiro segmento PMM (em bytes)" - -msgid "General Settings" -msgstr "Definições Gerais" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Quanta memória RAM deverá ser usada pelo polipo para cache." - -msgid "In RAM cache size (in bytes)" -msgstr "Tamanho da cache em RAM (bytes)" - -msgid "Listen address" -msgstr "Endereço de escuta" - -msgid "Listen port" -msgstr "Porta de escuta" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Local onde o polipo guardará permanentemente os ficheiros de cache. É " -"recomendada a utilização de dispositivos de armazenamento remoto devido ao " -"grande crescimento da cache. Deixe em branco para desactivar a cache em " -"disco." - -msgid "Log file location" -msgstr "Localização do ficheiro de registo" - -msgid "Log to syslog" -msgstr "Registar para o syslog" - -msgid "Logging and RAM" -msgstr "RAM e Logging" - -msgid "Never use system DNS resolver" -msgstr "Nunca usar o DNS de sistema" - -msgid "On-Disk Cache" -msgstr "Cache em disco" - -msgid "PMM segments size (in bytes)" -msgstr "Tamanho do segmento PMM (em bytes)" - -msgid "Parent Proxy" -msgstr "Proxy Superior" - -msgid "Parent proxy address" -msgstr "Endereço do proxy de hierarquia superior." - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Endereço do proxy de hierarquia superior (no formato host:porta), ao qual o " -"polipo irá encaminhar os seus pedidos." - -msgid "Parent proxy authentication" -msgstr "Autenticação em cache de hierarquia superior" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Estado do Polipo" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "O polipo é um proxy web ligeiro e rápido." - -msgid "Poor Man's Multiplexing" -msgstr "Multiplexagem simples" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"A multiplexagem simples (PMM) consiste na simulação de multiplexagem através " -"da requesição de um pedido em multiplos segmentos. O método tenta baixar a " -"latencia causada pela debilidade do protocolo HTTP. Nota: alguns sites web " -"não funcionam com a activação de PMM." - -msgid "Port on which Polipo will listen" -msgstr "Porta na qual o Polipo irá escutar" - -msgid "Proxy" -msgstr "Proxy" - -msgid "Query DNS by hostname" -msgstr "Pedidos ao DNS através de hostname" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "Consultar o DNS diretamente, voltar à resolução de nomes do sistema" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" -"Consultar o DNS diretamente, para hosts desconhecidos voltar à resolução de " -"nomes de sistema" - -msgid "Query DNS for IPv6" -msgstr "Consultar DNS para o IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "Consultar IPv4 e IPv6, preferência por IPv4" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "Consultar IPv4 e IPv6, preferência por IPv6" - -msgid "Query only IPv6" -msgstr "Consultar apenas IPv6" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Define o endereço do servidor de DNS a usar, caso pretenda que o polipo " -"utilize um servidor alternativo ao do sistema." - -msgid "Shared cache" -msgstr "Cache partilhada" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Tamanho do primeiro segmento PMM. Se não estiver definido, reverte para o " -"dobro do tamanho do segmento PMM." - -msgid "Size to which cached files should be truncated" -msgstr "Tamanho a partir do qual os ficheiro em cache devem ser truncados" - -msgid "Status" -msgstr "Estado" - -msgid "Syslog facility" -msgstr "Categoria dos eventos polipo no registo do sistema" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"O interface no qual o polipo será activado. Para activar em todos os " -"endereços, use 0.0.0.0 ou :: (IPv6)." - -msgid "Time after which cached files will be deleted" -msgstr "Tempo após o qual os ficheiro em cache devem ser eliminados" - -msgid "Time after which cached files will be truncated" -msgstr "Tempo após o qual os ficheiro em cache devem ser truncados" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" -"Para ativar PMM, o tamanho do segmento PMM tem de ser definido para um valor " -"positivo." - -msgid "Truncate cache files size (in bytes)" -msgstr "Tamanho de trancagem dos ficheiros de cache (bytes)" - -msgid "Truncate cache files time" -msgstr "Tempo de trancagem dos ficheiros de cache" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"É recomendado o recurso a sistemas de armazenamento de ficheiros externos, " -"devido ao rápido crescimento do ficheiro de registo." - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"Quando o endereço de escuta está definido como 0.0.0.0 ou :: (IPv6), tem de " -"listar os clientes que estão autorizados a ligar. O formato do endereço IP " -"ou o endereço de rede (192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 " -"(IPv6))" - -msgid "enable" -msgstr "ativar" - -#~ msgid "" -#~ "To enable polipo on-disk cache cleaning (highly recommended), you should " -#~ "add a cron job in Scheduled Tasks services that will execute /usr/sbin/" -#~ "polipo_purge script. For example to perform disk cache cleanup every day " -#~ "at 6:00 in the morning you should add the following line in Scheduled " -#~ "Tasks \"0 6 * * *\\t/usr/sbin/polipo_purge\" (without quotes)." -#~ msgstr "" -#~ "Para activar a limpeza de cache em disco (altamente recomendado), deve " -#~ "acrescentar uma tarefa cron (\"Serviços\") que execute o script /usr/sbin/" -#~ "polipo_purge. Como exemplo, para executar uma limpeza da cache " -#~ "diariamente pelas 06H00 deve acrescentar a seguinte linha: \"0 6 * * * /" -#~ "usr/sbin/polipo_purge\" (sem as aspas)." - -#~ msgid "" -#~ "Size to which cached files should be truncated. (default value: 1048576)" -#~ msgstr "" -#~ "Tamanho com o qual devem ser trancados os ficheiros da cache. (valor pre-" -#~ "definido: 1048576)" - -#~ msgid "" -#~ "Time after which cached files will be truncated. (default value: 4d12h)" -#~ msgstr "" -#~ "Tempo após o qual os ficheiros de cache serão trancados. (valor pre-" -#~ "definido: 4d12h)" - -#~ msgid "Time after which cached files will be deleted. (default value: 32d)" -#~ msgstr "" -#~ "Tempo apos o qual os ficheiros de cache serão removidos. (valor pré-" -#~ "definido: 32d)" - -#~ msgid "General" -#~ msgstr "Geral" - -#~ msgid "" -#~ "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -#~ "that are allowed to connect. The format is IP address or network address " -#~ "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))." -#~ msgstr "" -#~ "Quando o endereço de listen fôr 0.0.0.0 (IPv4) ou :: (IPv6), deve listar " -#~ "os clientes que tiverem permissão para ligação. O formato é endereço de " -#~ "host ou endereço de rede (192.168.1.123, 192.168.1.0/24, " -#~ "2001:660:116::/48 (IPv6))." - -#~ msgid "" -#~ "false = Do not query IPv6; reluctantly = Query both, prefer IPv4; happily " -#~ "= Query both, prefer IPv6; true = Query only IPv6" -#~ msgstr "" -#~ "false = Não pedir IPv6; reluctantly=Pedir ambos e preferir IPv4; " -#~ "happily=Pedir ambos, preferir IPv6; true=Pedir apenas IPv6" - -#~ msgid "" -#~ "false = Never use system DNS resolver; reluctantly = Query DNS directly, " -#~ "if DNS server is unavailable fail to system DNS resolver; happily = Query " -#~ "DNS directly, if host could not be found fallback to system DNS resolver; " -#~ "true = Always use system DNS resolver" -#~ msgstr "" -#~ "false=nunca usar o resolver do sistema; reluctantly=pedir DNS " -#~ "directamente, se o servidor DNS estiver indisponivel recorrer do resolver " -#~ "DNS do sistema; happily=pedir DNS directamente, se o host nao for " -#~ "encontrado, recorrer ao resolver DNS do sistema; true=Usar sempre o " -#~ "resolver DNS do sistema" - -#~ msgid "Port on which Polipo will listen. (default value: 8123)" -#~ msgstr "Porta local na qual o polipo será activado. (pre-definido: 8123)" - -#~ msgid "polipo_pmm_pmmsize_desc" -#~ msgstr "" -#~ "Para activar PMM, o tamanho do segmento PMM deve ser definido para um " -#~ "qualquer valor positivo." diff --git a/package/luci/applications/luci-app-polipo/po/ro/polipo.po b/package/luci/applications/luci-app-polipo/po/ro/polipo.po deleted file mode 100644 index 2c2710a143..0000000000 --- a/package/luci/applications/luci-app-polipo/po/ro/polipo.po +++ /dev/null @@ -1,206 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-28 18:42+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Setări avansate" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/ru/polipo.po b/package/luci/applications/luci-app-polipo/po/ru/polipo.po deleted file mode 100644 index f1d49688a6..0000000000 --- a/package/luci/applications/luci-app-polipo/po/ru/polipo.po +++ /dev/null @@ -1,237 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: polipo\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-08-15 17:51+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Advanced Settings" -msgstr "Расширенные настройки" - -msgid "Allowed clients" -msgstr "Разрешённые клиенты" - -msgid "Always use system DNS resolver" -msgstr "Всегда использовать системный DNS-клиент" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"Поддерживается базовая HTTP-аутентификация. Введите имя пользователя и " -"пароль в формате имя:пароль." - -msgid "Configuration" -msgstr "Конфигурация" - -msgid "DNS and Query Settings" -msgstr "Настройки DNS" - -msgid "DNS server address" -msgstr "Адрес DNS-сервера" - -msgid "Delete cache files time" -msgstr "Время удаления кэш-файлов" - -msgid "Disk cache location" -msgstr "Местоположение кэша" - -msgid "Do not query IPv6" -msgstr "Не запрашивать IPv6" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" -"Включите, если вы хотите, чтобы кэш (прокси) был общим для нескольких " -"пользователей." - -msgid "First PMM segment size (in bytes)" -msgstr "Размер первого PMM-сегмента (в байтах)" - -msgid "General Settings" -msgstr "Общие настройки" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Количество RAM, отведенное для кеша." - -msgid "In RAM cache size (in bytes)" -msgstr "Размер кэша в RAM (в байтах)" - -msgid "Listen address" -msgstr "Адрес для входящих соединений" - -msgid "Listen port" -msgstr "Порт для входящих соединений" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Директория, где Polipo хранит кэш-файлы. Рекомендуется использовать внешнее " -"хранилище, так как размер кэша может увеличиваться. Оставьте пустым, чтобы " -"отключить хранение кэша на диске." - -msgid "Log file location" -msgstr "Местоположение файла журнала" - -msgid "Log to syslog" -msgstr "Записывать сообщения в системный журнал" - -msgid "Logging and RAM" -msgstr "Журналирование и RAM" - -msgid "Never use system DNS resolver" -msgstr "Не использовать системный DNS-клиент" - -msgid "On-Disk Cache" -msgstr "Кэширование на диске" - -msgid "PMM segments size (in bytes)" -msgstr "Размер PMM-сегментов (в байтах)" - -msgid "Parent Proxy" -msgstr "Родительский прокси" - -msgid "Parent proxy address" -msgstr "Адрес родительского прокси" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Адрес родительского прокси (в формате хост:порт), на который Polipo будет " -"перенаправлять запросы." - -msgid "Parent proxy authentication" -msgstr "Аутентификация родительского прокси" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Состояние Polipo" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo - небольшой веб-прокси, использующий кэширование." - -msgid "Poor Man's Multiplexing" -msgstr "Poor Man's Multiplexing" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"Poor Man's Multiplexing (PMM) - это техника, которая позволяет запрашивать " -"данные из нескольких источников. Таким образом, время отклика по HTTP-" -"протоколу сокращается. ПРИМЕЧАНИЕ: некоторые сайты могут не работать с " -"включенным PMM." - -msgid "Port on which Polipo will listen" -msgstr "Порт, на котором Polipo будет ожидать входящие соединения" - -msgid "Proxy" -msgstr "Прокси" - -msgid "Query DNS by hostname" -msgstr "Запрашивать DNS, используя имя хоста" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" -"Запрашивать DNS напрямую, использовать системный клиент в случае ошибки" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" -"Запрашивать DNS напрямую, использовать системный клиент для неизвестных " -"хостов" - -msgid "Query DNS for IPv6" -msgstr "Запрашивать DNS для IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "Запрашивать IPv4 и IPv6, предпочитать IPv4" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "Запрашивать IPv4 и IPv6, предпочитать IPv6" - -msgid "Query only IPv6" -msgstr "Запрашивать только IPv6" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Установите адрес DNS-сервера для Polipo в случае, если он отличается от " -"системного." - -msgid "Shared cache" -msgstr "Общий кэш" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Размер первого PMM сегмента. Если не указано, то размер первого сегмента " -"будет равен двум обычным." - -msgid "Size to which cached files should be truncated" -msgstr "Размер, до которого будут сокращены файлы кэша" - -msgid "Status" -msgstr "Состояние" - -msgid "Syslog facility" -msgstr "Системный журнал" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"Интерфейс, на котором Polipo будет ожидать входящие соединения. Чтобы " -"ожидать на всех интерфейсах, используйте 0.0.0.0 или :: (IPv6)." - -msgid "Time after which cached files will be deleted" -msgstr "Интервал, после которого файлы кэша будут удалены" - -msgid "Time after which cached files will be truncated" -msgstr "Интервал, после которого файлы кэша будут сокращены" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "Чтобы включить PMM, размер PMM сегмента должен быть установлен." - -msgid "Truncate cache files size (in bytes)" -msgstr "Сократить размер файлов кэша (в байтах)" - -msgid "Truncate cache files time" -msgstr "Время сокращения файлов кэша" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"Рекомендуется использовать внешнее хранилище, так как журнал часто " -"обновляется и может значительно увеличиваться в размере." - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"Если адрес для входящих соединений установлен в 0.0.0.0 или :: (IPv6), вам " -"необходимо перечислить клиентов, которым разрешено подключаться. В таком " -"случае формат - это IP-адрес или адрес подсети (192.168.1.123, " -"192.168.1.0/24, 2001:660:116::/48 (IPv6))" - -msgid "enable" -msgstr "включить" diff --git a/package/luci/applications/luci-app-polipo/po/sk/polipo.po b/package/luci/applications/luci-app-polipo/po/sk/polipo.po deleted file mode 100644 index e003c175a9..0000000000 --- a/package/luci/applications/luci-app-polipo/po/sk/polipo.po +++ /dev/null @@ -1,202 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/sv/polipo.po b/package/luci/applications/luci-app-polipo/po/sv/polipo.po deleted file mode 100644 index 531e881beb..0000000000 --- a/package/luci/applications/luci-app-polipo/po/sv/polipo.po +++ /dev/null @@ -1,216 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Advanced Settings" -msgstr "Avancerade inställningar" - -msgid "Allowed clients" -msgstr "Tillåtna klienter" - -msgid "Always use system DNS resolver" -msgstr "Använd alltid systemets DNS-resolver" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "DNS and Query Settings" -msgstr "Inställningar för DNS och Förfrågningar" - -msgid "DNS server address" -msgstr "DNS-serverns adress" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "Första PMM-segmentets storlek (i bytes)" - -msgid "General Settings" -msgstr "Generella inställningar" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Hur mycket RAM borde Polipo använda för dess cache." - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "Lyssningsadress" - -msgid "Listen port" -msgstr "Lyssningsport" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "Plats för loggfil" - -msgid "Log to syslog" -msgstr "Logga till syslog" - -msgid "Logging and RAM" -msgstr "Loggning och RAM" - -msgid "Never use system DNS resolver" -msgstr "Använd aldrig systemets DNS-resolver" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "PMM-segmentets storlek (i bytes)" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Status för Polipo" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "Vilken port som Polipo ska lyssna på" - -msgid "Proxy" -msgstr "Proxy" - -msgid "Query DNS by hostname" -msgstr "Fråga efter DNS via värdnamn" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "Fråga efter DNS för IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Ange DNS-serverns adress som ska användas om du vill att Polipo ska använda " -"en annan DNS-serverän värdsystemet." - -msgid "Shared cache" -msgstr "Delad cache" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Storleken av det första PMM-segmentet. Om det inte definieras så " -"standardiseras det till den dubbla storleken av PMM-segmentet" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"Gränssnittet som Polipo ska lyssna i. För att lyssna på alla gränssnitt, " -"använd 0.0.0.0 eller :: (IPv6)." - -msgid "Time after which cached files will be deleted" -msgstr "Tiden efter vilket cachade filer kommer att bli raderade" - -msgid "Time after which cached files will be truncated" -msgstr "Tiden efter vilket cachade filer kommer att bli trunkerade" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" -"För att aktivera PMM så måste PMM-segmentet vara inställt till ett positivt " -"värde." - -msgid "Truncate cache files size (in bytes)" -msgstr "Storlek på cache-filer att trunkera (i bytes)" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"Användning av en extern lagringsenhet rekommenderas eftersom att loggfilen " -"är frekvent skriven och kan växa avsevärt." - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"När lyssningsadress är inställd till 0.0.0.0 eller :: (IPv6) så måste du " -"lista klienter som tillåts att ansluta. Formatet är IP-adressen eller " -"nätverksadressen (192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" - -msgid "enable" -msgstr "aktivera" diff --git a/package/luci/applications/luci-app-polipo/po/templates/polipo.pot b/package/luci/applications/luci-app-polipo/po/templates/polipo.pot deleted file mode 100644 index beb0bdb774..0000000000 --- a/package/luci/applications/luci-app-polipo/po/templates/polipo.pot +++ /dev/null @@ -1,195 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/tr/polipo.po b/package/luci/applications/luci-app-polipo/po/tr/polipo.po deleted file mode 100644 index 25982ec16b..0000000000 --- a/package/luci/applications/luci-app-polipo/po/tr/polipo.po +++ /dev/null @@ -1,202 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/uk/polipo.po b/package/luci/applications/luci-app-polipo/po/uk/polipo.po deleted file mode 100644 index 9b1b637b84..0000000000 --- a/package/luci/applications/luci-app-polipo/po/uk/polipo.po +++ /dev/null @@ -1,206 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-21 15:36+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Advanced Settings" -msgstr "Додаткові налаштування" - -msgid "Allowed clients" -msgstr "" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" - -msgid "Configuration" -msgstr "Конфігурація" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "" - -msgid "Delete cache files time" -msgstr "" - -msgid "Disk cache location" -msgstr "" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "" - -msgid "First PMM segment size (in bytes)" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "" - -msgid "In RAM cache size (in bytes)" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" - -msgid "Log file location" -msgstr "" - -msgid "Log to syslog" -msgstr "" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "" - -msgid "PMM segments size (in bytes)" -msgstr "" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" - -msgid "Parent proxy authentication" -msgstr "" - -msgid "Polipo" -msgstr "" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "" - -msgid "Poor Man's Multiplexing" -msgstr "" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" - -msgid "Shared cache" -msgstr "" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "" - -msgid "Truncate cache files time" -msgstr "" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" diff --git a/package/luci/applications/luci-app-polipo/po/vi/polipo.po b/package/luci/applications/luci-app-polipo/po/vi/polipo.po deleted file mode 100644 index 0765db325c..0000000000 --- a/package/luci/applications/luci-app-polipo/po/vi/polipo.po +++ /dev/null @@ -1,290 +0,0 @@ -# polipo.pot -# generated from ./applications/luci-polipo/luasrc/i18n/polipo.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:58+0200\n" -"PO-Revision-Date: 2009-08-13 07:49+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allowed clients" -msgstr "Đối tượng cho phép" - -msgid "Always use system DNS resolver" -msgstr "" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "" -"Sự chứng thực HTTP Cơ bản được hỗ trợ. Cung cấp tên người dùng và mật khẩu " -"trong tên người dùng: mật khẩu định dạng" - -msgid "Configuration" -msgstr "" - -msgid "DNS and Query Settings" -msgstr "" - -msgid "DNS server address" -msgstr "Địa chỉ tên miền máy chủ" - -msgid "Delete cache files time" -msgstr "Xóa tập tin cạc khi" - -msgid "Disk cache location" -msgstr "Vị trí cạc đĩa" - -msgid "Do not query IPv6" -msgstr "" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "Kích hoạt nếu cạc được chia rẻ bởi nhiều người dùng." - -msgid "First PMM segment size (in bytes)" -msgstr "Dung lượng phân đoạn PMM đầu tiên (in bytes)" - -msgid "General Settings" -msgstr "" - -msgid "How much RAM should Polipo use for its cache." -msgstr "Bao nhiêu RAM Polipo nên dùng cho cạc." - -msgid "In RAM cache size (in bytes)" -msgstr "Trong RAM dung lượng cạc (tính theo bytes)" - -msgid "Listen address" -msgstr "Địa chỉ nge" - -msgid "Listen port" -msgstr "Cổng nghe" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Vị trị mà polipo sẽ định các tập tin thường xuyên. Sử dụng thiết bị nhớ " -"ngoài được khuyến khích, bởi vì cạc có thể lớn lên đáng kể. Để lại nó trống " -"để vô hiệu hóa Trên cạc trên đĩa." - -msgid "Log file location" -msgstr "Vị trí tập tin sổ ghi" - -msgid "Log to syslog" -msgstr "Log to syslog" - -msgid "Logging and RAM" -msgstr "" - -msgid "Never use system DNS resolver" -msgstr "" - -msgid "On-Disk Cache" -msgstr "Cạc trên ổ đĩa" - -msgid "PMM segments size (in bytes)" -msgstr "Dung lượng phân đoạn PMM (in bytes)" - -msgid "Parent Proxy" -msgstr "" - -msgid "Parent proxy address" -msgstr "Địa chỉ parent proxy " - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "" -"Địa chỉ parent proxy (in host:port format), cái mà Polipo sẽ chuyển yêu cầu " -"tới." - -msgid "Parent proxy authentication" -msgstr "Xác thực parent proxy " - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo là một web proxy nhỏ và nhanh caching." - -msgid "Poor Man's Multiplexing" -msgstr "Poor Man&#39;s Multiplexing" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"Poor Man&#39;s Multiplexing (PMM) là một kỹ thuật kích thích " -"multiplexing bằng cách yêu cầu trường hợp trong nhiều phân đoạn. Nó cố gắng " -"hạ thấp sự trễ nãi do các điểm yếu HTTP protocol gây ra. Chú ý: một số trang " -"web có thể không hoạt động với PMM bật." - -msgid "Port on which Polipo will listen" -msgstr "" - -msgid "Proxy" -msgstr "" - -msgid "Query DNS by hostname" -msgstr "Tra vấn DNS bằng hostname" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "" - -msgid "Query DNS for IPv6" -msgstr "Tra vấn DNS cho IPv6" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "" - -msgid "Query only IPv6" -msgstr "" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"Cài đặt địa chỉ tên miền máy chủ để sử dụng, nếu bạn muốn Polipo dùng tên " -"miền khác với hệ thông chính. " - -msgid "Shared cache" -msgstr "Cạc trên ổ đĩa" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "" -"Dung lượng của phân đoạn PMM đầu tiên. Nếu không định nghĩa sẽ mặc định dung " -"lượng của phân đoạn PMM gấp 2 lần" - -msgid "Size to which cached files should be truncated" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Syslog facility" -msgstr "Syslog facility" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "" -"Giao diện mà Polipo sẽ nghe. Để nghe trên tất cả các giao diện dùng 0.0.0.0 " -"hoặc :: (IPv6)" - -msgid "Time after which cached files will be deleted" -msgstr "" - -msgid "Time after which cached files will be truncated" -msgstr "" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "" - -msgid "Truncate cache files size (in bytes)" -msgstr "Bỏ bớt những tập tin cạc với dung lượng (bytes)" - -msgid "Truncate cache files time" -msgstr "Cắt bỏ tập tin cạc khi" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "" -"Nên dùng bộ nhớ ngoài bởi vì tập tin sổ ghi được viết rất nhiều lần và có " -"thể phát tán rất mạnh. " - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" - -msgid "enable" -msgstr "" - -#~ msgid "" -#~ "To enable polipo on-disk cache cleaning (highly recommended), you should " -#~ "add a cron job in Scheduled Tasks services that will execute /usr/sbin/" -#~ "polipo_purge script. For example to perform disk cache cleanup every day " -#~ "at 6:00 in the morning you should add the following line in Scheduled " -#~ "Tasks \"0 6 * * *\\t/usr/sbin/polipo_purge\" (without quotes)." -#~ msgstr "" -#~ "Để kích hoạt tính năng làm sạch trên cạc đĩa polipo (rất khuyến khích), " -#~ "bạn nên thêm vào một công việc cron trong những công tác đã schedule, nó " -#~ "sẽ thực hiện / usr / sbin / polipo_purge script. Ví dụ: để thực hiện các " -#~ "đĩa bộ nhớ cache mỗi ngày vào lúc 6:00 sáng, bạn nên thêm dòng sau trong " -#~ "Scheduled công việc &quot;0 6 * * * /usr/sbin/polipo_purge&quot; " -#~ "(không có dấu ngoặc kép)." - -#~ msgid "" -#~ "Size to which cached files should be truncated. (default value: 1048576)" -#~ msgstr "Dung lượng mà những tập tin cạc bị cắt bỏ. (Giá trị: 1048576)" - -#~ msgid "" -#~ "Time after which cached files will be truncated. (default value: 4d12h)" -#~ msgstr "Thời gian khi tập tin cạc sẽ bị cắt bỏ (Giá trị: 4d12h)" - -#~ msgid "Time after which cached files will be deleted. (default value: 32d)" -#~ msgstr "Thời gian khi tập tin cạc sẽ bị xóa. (Giá trị: 32d)" - -#~ msgid "General" -#~ msgstr "Tổng quát" - -#~ msgid "" -#~ "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -#~ "that are allowed to connect. The format is IP address or network address " -#~ "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))." -#~ msgstr "" -#~ "Khi nghe địa chỉ được đặt ở 0.0.0.0 hoặc :: (IPv6), bạn phải liệt kê " -#~ "những đối tượng được phép kết nối. Định dạng là địa chỉ IP hoặc địa chỉ " -#~ "mạng (192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))." - -#~ msgid "" -#~ "false = Do not query IPv6; reluctantly = Query both, prefer IPv4; happily " -#~ "= Query both, prefer IPv6; true = Query only IPv6" -#~ msgstr "" -#~ "False = Đừng truy vấn IPv6; reluctantly = Truy vấn cả hai, IPv4 được " -#~ "chuộng hơn; happily = truy vấn cả hai, IPv6 chuộng hơn; true = chỉ truy " -#~ "vấn IPv6" - -#~ msgid "" -#~ "false = Never use system DNS resolver; reluctantly = Query DNS directly, " -#~ "if DNS server is unavailable fail to system DNS resolver; happily = Query " -#~ "DNS directly, if host could not be found fallback to system DNS resolver; " -#~ "true = Always use system DNS resolver" -#~ msgstr "" -#~ "false = Đừng bao giờ dùng bộ phân tích hệ thống DNS; reluctantly = Truy " -#~ "vấn DNS trực tiếp, nếu DNS server không có sẵn trong bộ phân tích hệ " -#~ "thống DNS; happily = truy vấn DNS trực tiếp, nếu host bị đẩy lùi so với " -#~ "bộ phân tích hệ thống DNS; true = Luân luân dùng bộ phân tích hệ thống DNS" - -#~ msgid "Port on which Polipo will listen. (default value: 8123)" -#~ msgstr "Cổng mà Polipo sẽ nghe. (giá trị: 8123)" - -#~ msgid "polipo_pmm_pmmsize_desc" -#~ msgstr "" -#~ "Để kích hoạt PMM, dung lượng phân đoạn PMM phải được đặt những giá trị " -#~ "dương." diff --git a/package/luci/applications/luci-app-polipo/po/zh-cn/polipo.po b/package/luci/applications/luci-app-polipo/po/zh-cn/polipo.po deleted file mode 100644 index 0b3a1dc1a1..0000000000 --- a/package/luci/applications/luci-app-polipo/po/zh-cn/polipo.po +++ /dev/null @@ -1,216 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2017-10-29 14:56+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \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: Gtranslator 2.91.7\n" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Allowed clients" -msgstr "允许的客户端" - -msgid "Always use system DNS resolver" -msgstr "始终使用系统 DNS 解析" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "支持 HTTP 基本身份验证。提供用户名和密码格式为:用户名:密码。" - -msgid "Configuration" -msgstr "配置" - -msgid "DNS and Query Settings" -msgstr "DNS 及查询设置" - -msgid "DNS server address" -msgstr "DNS 服务器地址" - -msgid "Delete cache files time" -msgstr "清除缓存文件周期" - -msgid "Disk cache location" -msgstr "磁盘缓存位置" - -msgid "Do not query IPv6" -msgstr "不能查询 IPv6" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "允许多用户共享缓存(代理)。" - -msgid "First PMM segment size (in bytes)" -msgstr "第一 PMM 段大小(以字节表示)" - -msgid "General Settings" -msgstr "通用设置" - -msgid "How much RAM should Polipo use for its cache." -msgstr "允许 Polipo 做缓存的 RAM 使用量" - -msgid "In RAM cache size (in bytes)" -msgstr "RAM 缓存大小(以字节表示)" - -msgid "Listen address" -msgstr "监听地址" - -msgid "Listen port" -msgstr "监听端口" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Polipo 持久缓存文件位置。建议使用外部存储设备,因为缓存会一直增长。留空表示禁" -"用磁盘缓存。" - -msgid "Log file location" -msgstr "日志存放位置" - -msgid "Log to syslog" -msgstr "记录日志到 syslog" - -msgid "Logging and RAM" -msgstr "记录和 RAM" - -msgid "Never use system DNS resolver" -msgstr "从不使用系统 DNS 解析" - -msgid "On-Disk Cache" -msgstr "磁盘缓存" - -msgid "PMM segments size (in bytes)" -msgstr "PMM 段大小(以字节表示)" - -msgid "Parent Proxy" -msgstr "上层代理" - -msgid "Parent proxy address" -msgstr "上层代理地址" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "Polipo 应该转发请求所到的上层代理(以 主机:端口号 格式表示)。" - -msgid "Parent proxy authentication" -msgstr "上层代理地址验证" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Polipo 状态" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo 是一个小型且快速的网页缓存代理。" - -msgid "Poor Man's Multiplexing" -msgstr "穷人的多工复用器" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"穷人的多工复用器(PMM)是通过在多个区段中请求单个实例来模拟复用的技术。它尝试" -"降低由 HTTP 协议的弱点引起的延迟。注意:某些站点可能无法启用 PMM。" - -msgid "Port on which Polipo will listen" -msgstr "Polipo 监听的端口号" - -msgid "Proxy" -msgstr "代理服务器" - -msgid "Query DNS by hostname" -msgstr "以主机名称查询 DNS" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "直接查询 DNS,失败时退回系统解析" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "直接查询 DNS,对未知的主机退回系统解析" - -msgid "Query DNS for IPv6" -msgstr "为 IPv6 查询 DNS" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "查询 IPv4 和 IPv6,IPv4 优先" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "查询 IPv4 和 IPv6,IPv6 优先" - -msgid "Query only IPv6" -msgstr "只查询 IPv6" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"设置 DNS 服务器地址以便使用,假如您要让 Polipo 使用不同的 DNS 服务器,而非主" -"机系统的。" - -msgid "Shared cache" -msgstr "共享的缓存" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "第一个 PMM 段的大小,若未定义,默认为两倍 PMM 段的大小。" - -msgid "Size to which cached files should be truncated" -msgstr "缓存文件应截断为的大小" - -msgid "Status" -msgstr "状态" - -msgid "Syslog facility" -msgstr "日志设施" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "Polipo 将会监听的接口。要监听所有接口,请使用 0.0.0.0 或 ::(IPv6)。" - -msgid "Time after which cached files will be deleted" -msgstr "缓存删除前的留存时间" - -msgid "Time after which cached files will be truncated" -msgstr "缓存截断前的留存时间" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "要启用 PMM,PMM 段大小必须为正。" - -msgid "Truncate cache files size (in bytes)" -msgstr "缓存文件截断大小(以字节为单位)" - -msgid "Truncate cache files time" -msgstr "缓存文件截断时间" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "推荐使用外部存储设备,因为日志文件经常写入,将会迅速增长。" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"当监听地址设置为 0.0.0.0 或 ::(IPv6)时,必须列出允许连接的客户端。格式为 " -"IP 地址或网络地址(192.168.1.123,192.168.1.0/24,2001:660:116::/48(IPv6))" - -msgid "enable" -msgstr "启用" diff --git a/package/luci/applications/luci-app-polipo/po/zh-tw/polipo.po b/package/luci/applications/luci-app-polipo/po/zh-tw/polipo.po deleted file mode 100644 index cf3c943704..0000000000 --- a/package/luci/applications/luci-app-polipo/po/zh-tw/polipo.po +++ /dev/null @@ -1,216 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2017-10-29 14:56+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" - -msgid "Advanced Settings" -msgstr "高階設定" - -msgid "Allowed clients" -msgstr "允許的客戶端" - -msgid "Always use system DNS resolver" -msgstr "始終使用系統 DNS 解析" - -msgid "" -"Basic HTTP authentication supported. Provide username and password in " -"username:password format." -msgstr "支援 HTTP 基本身份驗證。提供使用者名稱和密碼格式為:使用者名稱:密碼。" - -msgid "Configuration" -msgstr "配置" - -msgid "DNS and Query Settings" -msgstr "DNS 及查詢設定" - -msgid "DNS server address" -msgstr "DNS 伺服器位址" - -msgid "Delete cache files time" -msgstr "清除快取檔案週期" - -msgid "Disk cache location" -msgstr "磁碟快取位置" - -msgid "Do not query IPv6" -msgstr "不能查詢 IPv6" - -msgid "Enable if cache (proxy) is shared by multiple users." -msgstr "允許多使用者共享快取(代理)。" - -msgid "First PMM segment size (in bytes)" -msgstr "第一 PMM 段大小(以位元組表示)" - -msgid "General Settings" -msgstr "通用設定" - -msgid "How much RAM should Polipo use for its cache." -msgstr "允許 Polipo 做快取的 RAM 使用量" - -msgid "In RAM cache size (in bytes)" -msgstr "RAM 快取大小(以位元組表示)" - -msgid "Listen address" -msgstr "監聽位址" - -msgid "Listen port" -msgstr "監聽埠" - -msgid "" -"Location where polipo will cache files permanently. Use of external storage " -"devices is recommended, because the cache can grow considerably. Leave it " -"empty to disable on-disk cache." -msgstr "" -"Polipo 持久快取檔案位置。建議使用外部儲存裝置,因為快取會一直增長。留空表示禁" -"用磁碟快取。" - -msgid "Log file location" -msgstr "日誌存放位置" - -msgid "Log to syslog" -msgstr "記錄日誌到 syslog" - -msgid "Logging and RAM" -msgstr "記錄和 RAM" - -msgid "Never use system DNS resolver" -msgstr "從不使用系統 DNS 解析" - -msgid "On-Disk Cache" -msgstr "磁碟快取" - -msgid "PMM segments size (in bytes)" -msgstr "PMM 段大小(以位元組表示)" - -msgid "Parent Proxy" -msgstr "上層代理" - -msgid "Parent proxy address" -msgstr "上層代理位址" - -msgid "" -"Parent proxy address (in host:port format), to which Polipo will forward the " -"requests." -msgstr "Polipo 應該轉發請求所到的上層代理(以 主機:埠號 格式表示)。" - -msgid "Parent proxy authentication" -msgstr "上層代理位址驗證" - -msgid "Polipo" -msgstr "Polipo" - -msgid "Polipo Status" -msgstr "Polipo 狀態" - -msgid "Polipo is a small and fast caching web proxy." -msgstr "Polipo 是一個小型且快速的網頁快取代理。" - -msgid "Poor Man's Multiplexing" -msgstr "窮人的多工複用器" - -msgid "" -"Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by " -"requesting an instance in multiple segments. It tries to lower the latency " -"caused by the weakness of HTTP protocol. NOTE: some sites may not work with " -"PMM enabled." -msgstr "" -"窮人的多工複用器(PMM)是通過在多個區段中請求單個例項來模擬複用的技術。它嘗試" -"降低由 HTTP 協議的弱點引起的延遲。注意:某些站點可能無法啟用 PMM。" - -msgid "Port on which Polipo will listen" -msgstr "Polipo 監聽的埠號" - -msgid "Proxy" -msgstr "代理伺服器" - -msgid "Query DNS by hostname" -msgstr "以主機名稱查詢 DNS" - -msgid "Query DNS directly, fallback to system resolver" -msgstr "直接查詢 DNS,失敗時退回系統解析" - -msgid "Query DNS directly, for unknown hosts fall back to system resolver" -msgstr "直接查詢 DNS,對未知的主機退回系統解析" - -msgid "Query DNS for IPv6" -msgstr "為 IPv6 查詢 DNS" - -msgid "Query IPv4 and IPv6, prefer IPv4" -msgstr "查詢 IPv4 和 IPv6,IPv4 優先" - -msgid "Query IPv4 and IPv6, prefer IPv6" -msgstr "查詢 IPv4 和 IPv6,IPv6 優先" - -msgid "Query only IPv6" -msgstr "只查詢 IPv6" - -msgid "" -"Set the DNS server address to use, if you want Polipo to use different DNS " -"server than the host system." -msgstr "" -"設定 DNS 伺服器位址以便使用,假如您要讓 Polipo 使用不同的 DNS 伺服器,而非主" -"機系統的。" - -msgid "Shared cache" -msgstr "共享的快取" - -msgid "" -"Size of the first PMM segment. If not defined, it defaults to twice the PMM " -"segment size." -msgstr "第一個 PMM 段的大小,若未定義,預設為兩倍 PMM 段的大小。" - -msgid "Size to which cached files should be truncated" -msgstr "快取檔案應截斷為的大小" - -msgid "Status" -msgstr "狀態" - -msgid "Syslog facility" -msgstr "日誌設施" - -msgid "" -"The interface on which Polipo will listen. To listen on all interfaces use " -"0.0.0.0 or :: (IPv6)." -msgstr "Polipo 將會監聽的介面。要監聽所有介面,請使用 0.0.0.0 或 ::(IPv6)。" - -msgid "Time after which cached files will be deleted" -msgstr "快取刪除前的留存時間" - -msgid "Time after which cached files will be truncated" -msgstr "快取截斷前的留存時間" - -msgid "To enable PMM, PMM segment size must be set to some positive value." -msgstr "要啟用 PMM,PMM 段大小必須為正。" - -msgid "Truncate cache files size (in bytes)" -msgstr "快取檔案截斷大小(以位元組為單位)" - -msgid "Truncate cache files time" -msgstr "快取檔案截斷時間" - -msgid "" -"Use of external storage device is recommended, because the log file is " -"written frequently and can grow considerably." -msgstr "推薦使用外部儲存裝置,因為日誌檔案經常寫入,將會迅速增長。" - -msgid "" -"When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients " -"that are allowed to connect. The format is IP address or network address " -"(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))" -msgstr "" -"當監聽位址設定為 0.0.0.0 或 ::(IPv6)時,必須列出允許連線的客戶端。格式為 " -"IP 位址或網路位址(192.168.1.123,192.168.1.0/24,2001:660:116::/48(IPv6))" - -msgid "enable" -msgstr "啟用" diff --git a/package/luci/applications/luci-app-polipo/root/etc/uci-defaults/40_luci-polipo b/package/luci/applications/luci-app-polipo/root/etc/uci-defaults/40_luci-polipo deleted file mode 100755 index 0c570630da..0000000000 --- a/package/luci/applications/luci-app-polipo/root/etc/uci-defaults/40_luci-polipo +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@polipo[-1] - add ucitrack polipo - set ucitrack.@polipo[-1].init=polipo - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-polipo/root/usr/sbin/polipo_purge b/package/luci/applications/luci-app-polipo/root/usr/sbin/polipo_purge deleted file mode 100755 index 23ba571927..0000000000 --- a/package/luci/applications/luci-app-polipo/root/usr/sbin/polipo_purge +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -DAEMON=/usr/sbin/polipo -PIDFILE=`uci get polipo.daemon.pidFile` -CFGFILE=/var/etc/polipo.conf - -[ -e "$PIDFILE" ] && { - PID=`cat $PIDFILE` - - # send Polipo USR1 signal to write its in-memory cache to disk - kill -USR1 $PID - sleep 2 - # start polipo with -x flag to purge the on-disk cache - polipo -c $CFGFILE -x - # send Polipo USR2 signal to discard its in-memory cache - kill -USR2 $PID -} - diff --git a/package/luci/applications/luci-app-privoxy/Makefile b/package/luci/applications/luci-app-privoxy/Makefile deleted file mode 100644 index 486cf0ee74..0000000000 --- a/package/luci/applications/luci-app-privoxy/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -# -# Copyright (C) 2008-2017 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=luci-app-privoxy - -# Version == major.minor.patch -# increase "minor" on new functionality and "patch" on patches/optimization -PKG_VERSION:=1.0.6 - -# Release == build -# increase on changes of translation files -PKG_RELEASE:=2 - -PKG_LICENSE:=Apache-2.0 -PKG_MAINTAINER:= - -# LuCI specific settings -LUCI_TITLE:=LuCI Support for Privoxy WEB proxy -LUCI_DEPENDS:=+luci-mod-admin-full +privoxy -LUCI_PKGARCH:=all - -define Package/$(PKG_NAME)/config -# shown in make menuconfig -help - $(LUCI_TITLE) - . - Version: $(PKG_VERSION)-$(PKG_RELEASE) -endef - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-privoxy/luasrc/controller/privoxy.lua b/package/luci/applications/luci-app-privoxy/luasrc/controller/privoxy.lua deleted file mode 100644 index 6439a30c3f..0000000000 --- a/package/luci/applications/luci-app-privoxy/luasrc/controller/privoxy.lua +++ /dev/null @@ -1,241 +0,0 @@ --- Copyright 2014-2016 Christian Schoenebeck --- Licensed under the Apache License, Version 2.0 - -module("luci.controller.privoxy", package.seeall) - -local NX = require "nixio" -local NXFS = require "nixio.fs" -local DISP = require "luci.dispatcher" -local HTTP = require "luci.http" -local I18N = require "luci.i18n" -- not globally avalible here -local IPKG = require "luci.model.ipkg" -local UCI = require "luci.model.uci" -local UTIL = require "luci.util" -local SYS = require "luci.sys" - -local srv_name = "privoxy" -local srv_ver_min = "3.0.23" -- minimum version of service required -local srv_ver_cmd = [[/usr/sbin/privoxy --version | awk {'print $3'}]] -local app_name = "luci-app-privoxy" -local app_title = "Privoxy WEB proxy" -local app_version = "1.0.6-1" - -function index() - entry( {"admin", "services", "privoxy"}, cbi("privoxy"), _("Privoxy WEB proxy"), 59) - entry( {"admin", "services", "privoxy", "logview"}, call("logread") ).leaf = true - entry( {"admin", "services", "privoxy", "startstop"}, post("startstop") ).leaf = true - entry( {"admin", "services", "privoxy", "status"}, call("get_pid") ).leaf = true -end - --- Application specific information functions -function app_description() - return I18N.translate("Privoxy is a non-caching web proxy with advanced filtering " - .. "capabilities for enhancing privacy, modifying web page data and HTTP headers, " - .. "controlling access, and removing ads and other obnoxious Internet junk.") - .. [[
    ]] - .. I18N.translate("For help use link at the relevant option") - .. [[]] -end - --- Standardized application/service functions -function app_title_main() - return [[]] - .. I18N.translate(app_title) - .. [[]] -end -function service_version() - local ver = nil - 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() - return IPKG.compare_versions((service_version() or "0"), ">=", srv_ver_min) -end -function service_update() - local url = DISP.build_url("admin", "system", "packages") - if not service_version() then - return [[


        ]] - .. I18N.translate("Software package '%s' is not installed." % srv_name) - .. [[

        ]] - .. I18N.translate("required") .. [[: ]] .. srv_name .. [[ ]] .. srv_ver_min .. " " .. I18N.translate("or higher") - .. [[

        ]] - .. [[]] - .. I18N.translate("Please install current version !") - .. [[
     

    ]] - else - return [[



        ]] - .. I18N.translate("Software package '%s' is outdated." % srv_name) - .. [[

        ]] - .. I18N.translate("installed") .. ": " .. service_version() - .. [[

        ]] - .. I18N.translate("required") .. ": " .. srv_ver_min .. " " .. I18N.translate("or higher") - .. [[

        ]] - .. [[]] - .. I18N.translate("Please update to the current version!") - .. [[

     

    ]] - end -end - --- called by XHR.get from detail_logview.htm -function logread() - -- read application settings - local uci = UCI.cursor() - local logdir = uci:get("privoxy", "privoxy", "logdir") or "/var/log" - local logfile = uci:get("privoxy", "privoxy", "logfile") or "privoxy.log" - uci:unload("privoxy") - - local ldata=NXFS.readfile(logdir .. "/" .. logfile) - if not ldata or #ldata == 0 then - ldata="_nodata_" - end - HTTP.write(ldata) -end - --- called by XHR.get from detail_startstop.htm -function startstop() - local pid = get_pid(true) - if pid > 0 then - SYS.call("/etc/init.d/privoxy stop") - NX.nanosleep(1) -- sleep a second - if NX.kill(pid, 0) then -- still running - NX.kill(pid, 9) -- send SIGKILL - end - pid = 0 - else - SYS.call("/etc/init.d/privoxy start") - NX.nanosleep(1) -- sleep a second - pid = tonumber(NXFS.readfile("/var/run/privoxy.pid") or 0 ) - if pid > 0 and not NX.kill(pid, 0) then - pid = 0 -- process did not start - end - end - HTTP.write(tostring(pid)) -- HTTP needs string not number -end - --- called by XHR.poll from detail_startstop.htm --- and from lua (with parameter "true") -function get_pid(from_lua) - local pid = tonumber(NXFS.readfile("/var/run/privoxy.pid") or 0 ) - if pid > 0 and not NX.kill(pid, 0) then - pid = 0 - end - if from_lua then - return pid - else - HTTP.write(tostring(pid)) -- HTTP needs string not number - end -end - --- replacement of build-in parse of UCI option --- modified AbstractValue.parse(self, section, novld) from cbi.lua --- validate is called if rmempty/optional true or false --- write is called if rmempty/optional true or false -function value_parse(self, section, novld) - local fvalue = self:formvalue(section) - local fexist = ( fvalue and (#fvalue > 0) ) -- not "nil" and "not empty" - local cvalue = self:cfgvalue(section) - local rm_opt = ( self.rmempty or self.optional ) - local eq_cfg -- flag: equal cfgvalue - - -- If favlue and cvalue are both tables and have the same content - -- make them identical - if type(fvalue) == "table" and type(cvalue) == "table" then - eq_cfg = (#fvalue == #cvalue) - if eq_cfg then - for i=1, #fvalue do - if cvalue[i] ~= fvalue[i] then - eq_cfg = false - end - end - end - if eq_cfg then - fvalue = cvalue - end - end - - -- removed parameter "section" from function call because used/accepted nowhere - -- also removed call to function "transfer" - local vvalue, errtxt = self:validate(fvalue) - - -- error handling; validate return "nil" - if not vvalue then - if novld then -- and "novld" set - return -- then exit without raising an error - end - - if fexist then -- and there is a formvalue - self:add_error(section, "invalid", errtxt or self.title .. ": invalid") - return -- so data are invalid - elseif not rm_opt then -- and empty formvalue but NOT (rmempty or optional) set - self:add_error(section, "missing", errtxt or self.title .. ": missing") - return -- so data is missing - elseif errtxt then - self:add_error(section, "invalid", errtxt) - return - end --- error ("\n option: " .. self.option .. --- "\n fvalue: " .. tostring(fvalue) .. --- "\n fexist: " .. tostring(fexist) .. --- "\n cvalue: " .. tostring(cvalue) .. --- "\n vvalue: " .. tostring(vvalue) .. --- "\n vexist: " .. tostring(vexist) .. --- "\n rm_opt: " .. tostring(rm_opt) .. --- "\n eq_cfg: " .. tostring(eq_cfg) .. --- "\n eq_def: " .. tostring(eq_def) .. --- "\n novld : " .. tostring(novld) .. --- "\n errtxt: " .. tostring(errtxt) ) - end - - -- lets continue with value returned from validate - eq_cfg = ( vvalue == cvalue ) -- update equal_config flag - local vexist = ( vvalue and (#vvalue > 0) ) and true or false -- not "nil" and "not empty" - local eq_def = ( vvalue == self.default ) -- equal_default flag - - -- (rmempty or optional) and (no data or equal_default) - if rm_opt and (not vexist or eq_def) then - if self:remove(section) then -- remove data from UCI - self.section.changed = true -- and push events - end - return - end - - -- not forcewrite and no changes, so nothing to write - if not self.forcewrite and eq_cfg then - return - end - - -- we should have a valid value here - assert (vvalue, "\n option: " .. self.option .. - "\n fvalue: " .. tostring(fvalue) .. - "\n fexist: " .. tostring(fexist) .. - "\n cvalue: " .. tostring(cvalue) .. - "\n vvalue: " .. tostring(vvalue) .. - "\n vexist: " .. tostring(vexist) .. - "\n rm_opt: " .. tostring(rm_opt) .. - "\n eq_cfg: " .. tostring(eq_cfg) .. - "\n eq_def: " .. tostring(eq_def) .. - "\n errtxt: " .. tostring(errtxt) ) - - -- write data to UCI; raise event only on changes - if self:write(section, vvalue) and not eq_cfg then - self.section.changed = true - end -end diff --git a/package/luci/applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua b/package/luci/applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua deleted file mode 100644 index 90754c2bc1..0000000000 --- a/package/luci/applications/luci-app-privoxy/luasrc/model/cbi/privoxy.lua +++ /dev/null @@ -1,918 +0,0 @@ --- Copyright 2014-2015 Christian Schoenebeck --- Licensed under the Apache License, Version 2.0 - -local NXFS = require "nixio.fs" -local SYS = require "luci.sys" -local UTIL = require "luci.util" -local DISP = require "luci.dispatcher" -local DTYP = require "luci.cbi.datatypes" -local CTRL = require "luci.controller.privoxy" -- this application's controller - -local HELP = [[%s]] - --- Error handling if wrong privoxy version installed -- ######################## -if not CTRL.service_ok() then - local f = SimpleForm("_sf") - f.title = CTRL.app_title_main() - f.description = CTRL.app_description() - f.embedded = true - f.submit = false - f.reset = false - - local s = f:section(SimpleSection) - local v = s:option(DummyValue, "_dv") - v.titleref = DISP.build_url("admin", "system", "packages") - v.rawhtml = true - v.value = CTRL.service_update() - return f -end - --- ################################################################################################# --- Error handling if no config, create an empty one -- ######################### -if not NXFS.access("/etc/config/privoxy") then - NXFS.writefile("/etc/config/privoxy", "") -end - --- cbi-map -- ################################################################## -local m = Map("privoxy") -m.title = CTRL.app_title_main() -m.description = CTRL.app_description() -function m.commit_handler(self) - if self.changed then -- changes ? - os.execute("/etc/init.d/privoxy reload &") -- reload configuration - end -end - --- cbi-section -- ############################################################## -local ns = m:section( NamedSection, "privoxy", "privoxy") -function ns.cfgvalue(self, section) - if not self.map:get("system") then -- section might not exist - self.map:set("system", nil, "system") - end - if not self.map:get(section) then -- section might not exist - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - -ns:tab("sys", - translate("System"), - nil ) -local function err_tab_sys(title, msg) - return string.format(translate("System") .. " - %s: %s", title, msg ) -end - -ns:tab("doc", - translate("Documentation"), - translate("If you intend to operate Privoxy for more users than just yourself, " - .. "it might be a good idea to let them know how to reach you, what you block " - .. "and why you do that, your policies, etc.") ) -local function err_tab_doc(title, msg) - return string.format(translate("Documentation") .. " - %s: %s", title, msg ) -end - -ns:tab("filter", - translate("Files and Directories"), - translate("Privoxy can (and normally does) use a number of other files " - .. "for additional configuration, help and logging. This section of " - .. "the configuration file tells Privoxy where to find those other files.") ) -local function err_tab_filter(title, msg) - return string.format(translate("Files and Directories") .. " - %s: %s", title, msg ) -end - -ns:tab("access", - translate("Access Control"), - translate("This tab controls the security-relevant aspects of Privoxy's configuration.") ) -local function err_tab_access(title, msg) - return string.format(translate("Access Control") .. " - %s: %s", title, msg ) -end - -ns:tab("forward", - translate("Forwarding"), - translate("Configure here the routing of HTTP requests through a chain of multiple proxies. " - .. "Note that parent proxies can severely decrease your privacy level. " - .. "Also specified here are SOCKS proxies.") ) - -ns:tab("misc", - translate("Miscellaneous"), - nil) -local function err_tab_misc(self, msg) - return string.format(translate("Miscellaneous") .. " - %s: %s", self.title_base, msg ) -end - -ns:tab("debug", - translate("Logging"), - nil ) - -ns:tab("logview", - translate("Log File Viewer"), - nil ) - --- tab: local -- ############################################################### - --- start/stop button ----------------------------------------------------------- -local btn = ns:taboption("sys", Button, "_startstop") -btn.title = translate("Start / Stop") -btn.description = translate("Start/Stop Privoxy WEB Proxy") -btn.template = "privoxy/detail_startstop" -function btn.cfgvalue(self, section) - local pid = CTRL.get_pid(true) - if pid > 0 then - btn.inputtitle = "PID: " .. pid - btn.inputstyle = "reset" - btn.disabled = false - else - btn.inputtitle = translate("Start") - btn.inputstyle = "apply" - btn.disabled = false - end - return true -end - --- enabled --------------------------------------------------------------------- -local ena = ns:taboption("sys", Flag, "_enabled") -ena.title = translate("Enabled") -ena.description = translate("Enable/Disable autostart of Privoxy on system startup and interface events") -ena.orientation = "horizontal" -- put description under the checkbox -ena.rmempty = false -function ena.cfgvalue(self, section) - return (SYS.init.enabled("privoxy")) and "1" or "0" -end -function ena.write(self, section, value) - if value == "1" then - return SYS.init.enable("privoxy") - else - return SYS.init.disable("privoxy") - end -end - --- boot_delay ------------------------------------------------------------------ -local bd = ns:taboption("sys", Value, "boot_delay") -bd.title = translate("Boot delay") -bd.description = translate("Delay (in seconds) during system boot before Privoxy start") - .. [[
    ]] - .. translate("During delay ifup-events are not monitored !") -bd.default = "10" -bd.rmempty = false --- value is in a separate section so we need to do by hand -function bd.cfgvalue(self, section) - local value = tonumber(self.map:get("system", "boot_delay") ) - if not value then return nil end - return tostring(value) -end -function bd.validate(self, value) - local val = tonumber(value) - if not val then - return nil, err_tab_sys(self.title, translate("Value is not a number") ) - elseif val < 0 or val > 300 then - return nil, err_tab_sys(self.title, translate("Value not between 0 and 300") ) - end - return value -end -function bd.write(self, section, value) - local fvalue = self:formvalue(section) - local cvalue = self:cfgvalue(section) - if (fvalue ~= cvalue) then - self.map:set("system", "boot_delay", value) - end -end - --- hostname -------------------------------------------------------------------- -local hn = ns:taboption("doc", Value, "hostname") -hn.title = string.format(HELP, "HOSTNAME", "Hostname" ) -hn.description = translate("The hostname shown on the CGI pages.") -hn.placeholder = SYS.hostname() -hn.optional = true -hn.rmempty = true -function hn.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- user-manual ----------------------------------------------------------------- -local um = ns:taboption("doc", Value, "user_manual") -um.title = string.format(HELP, "USER-MANUAL", "User Manual" ) -um.description = translate("Location of the Privoxy User Manual.") -um.placeholder = "http://www.privoxy.org/user-manual/" -um.optional = true -um.rmempty = true -function um.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- admin-address --------------------------------------------------------------- -local aa = ns:taboption("doc", Value, "admin_address") -aa.title_base = "Admin Email" -aa.title = string.format(HELP, "ADMIN-ADDRESS", aa.title_base ) -aa.description = translate("An email address to reach the Privoxy administrator.") -aa.placeholder = "privoxy.admin@example.com" -aa.optional = true -aa.rmempty = true -function aa.validate(self, value) - if not value or #value == 0 then - return "" - end - if not (value:match("[A-Za-z0-9%.%%%+%-]+@[A-Za-z0-9%.%%%+%-]+%.%w%w%w?%w?")) then - return nil, err_tab_doc(self.title_base, translate("Invalid email address") ) - end - return value -end -function aa.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- proxy-info-url -------------------------------------------------------------- -local piu = ns:taboption("doc", Value, "proxy_info_url") -piu.title = string.format(HELP, "PROXY-INFO-URL", "Proxy Info URL" ) -piu.description = translate("A URL to documentation about the local Privoxy setup, configuration or policies.") -piu.optional = true -piu.rmempty = true -function piu.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- trust-info-url -------------------------------------------------------------- -local tiu = ns:taboption("doc", Value, "trust_info_url") -tiu.title = string.format(HELP, "TRUST-INFO-URL", "Trust Info URLs" ) -tiu.description = translate("A URL to be displayed in the error page that users will see if access to an untrusted page is denied.") - .. [[
    ]] - .. translate("The value of this option only matters if the experimental trust mechanism has been activated.") - .. [[]] -tiu.optional = true -tiu.rmepty = true -function tiu.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- tab: filter -- ############################################################## - --- logdir ---------------------------------------------------------------------- -local ld = ns:taboption("filter", Value, "logdir") -ld.title_base = "Log Directory" -ld.title = string.format(HELP, "LOGDIR", ld.title_base ) -ld.description = translate("The directory where all logging takes place (i.e. where the logfile is located).") - .. [[
    ]] - .. translate("No trailing '/', please.") -ld.default = "/var/log" -ld.rmempty = false -function ld.validate(self, value) - if not value or #value == 0 then - return nil, err_tab_filter(self.title_base, translate("Mandatory Input: No Directory given!") ) - elseif not NXFS.access(value) then - return nil, err_tab_filter(self.title_base, translate("Directory does not exist!") ) - else - return value - end -end -function ld.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- logfile --------------------------------------------------------------------- -local lf = ns:taboption("filter", Value, "logfile") -lf.title_base = "Log File" -lf.title = string.format(HELP, "LOGFILE", lf.title_base ) -lf.description = translate("The log file to use. File name, relative to log directory.") -lf.default = "privoxy.log" -lf.rmempty = false -function lf.validate(self, value) - if not value or #value == 0 then - return nil, err_tab_filter(self.title_base, translate("Mandatory Input: No File given!") ) - else - return value - end -end - --- confdir --------------------------------------------------------------------- -local cd = ns:taboption("filter", Value, "confdir") -cd.title_base = "Configuration Directory" -cd.title = string.format(HELP, "CONFDIR", cd.title_base ) -cd.description = translate("The directory where the other configuration files are located.") - .. [[
    ]] - .. translate("No trailing '/', please.") -cd.default = "/etc/privoxy" -cd.rmempty = false -function cd.validate(self, value) - if not value or #value == 0 then - return nil, err_tab_filter(self.title_base, translate("Mandatory Input: No Directory given!") ) - elseif not NXFS.access(value) then - return nil, err_tab_filter(self.title_base, translate("Directory does not exist!") ) - else - return value - end -end - --- templdir -------------------------------------------------------------------- -local tld = ns:taboption("filter", Value, "templdir") -tld.title_base = "Template Directory" -tld.title = string.format(HELP, "TEMPLDIR", tld.title_base ) -tld.description = translate("An alternative directory where the templates are loaded from.") - .. [[
    ]] - .. translate("No trailing '/', please.") -tld.placeholder = "/etc/privoxy/templates" -tld.rmempty = true -function tld.validate(self, value) - if not NXFS.access(value) then - return nil, err_tab_filter(self.title_base, translate("Directory does not exist!") ) - else - return value - end -end - --- temporary-directory --------------------------------------------------------- -local td = ns:taboption("filter", Value, "temporary_directory") -td.title_base = "Temporary Directory" -td.title = string.format(HELP, "TEMPORARY-DIRECTORY", td.title_base ) -td.description = translate("A directory where Privoxy can create temporary files.") - .. [[
    ]] - .. translate("Only when using 'external filters', Privoxy has to create temporary files.") - .. [[]] -td.rmempty = true - --- actionsfile ----------------------------------------------------------------- -local af = ns:taboption("filter", DynamicList, "actionsfile") -af.title_base = "Action Files" -af.title = string.format(HELP, "ACTIONSFILE", af.title_base) -af.description = translate("The actions file(s) to use. Multiple actionsfile lines are permitted, and are in fact recommended!") - .. [[
    match-all.action := ]] - .. translate("Actions that are applied to all sites and maybe overruled later on.") - .. [[
    default.action := ]] - .. translate("Main actions file") - .. [[
    user.action := ]] - .. translate("User customizations") -af.rmempty = false -function af.validate(self, value) - if not value or #value == 0 then - return nil, err_tab_access(self.title_base, translate("Mandatory Input: No files given!") ) - end - local confdir = cd:formvalue(ns.section) - local err = false - local file = "" - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not NXFS.access(confdir .."/".. x) then - err = true - file = x - break -- break/leave for on error - end - end - end - else - if not NXFS.access(confdir .."/".. value) then - err = true - file = value - end - end - if err then - return nil, string.format(err_tab_filter(self.title_base, translate("File '%s' not found inside Configuration Directory") ), file) - end - return value -end - --- filterfile ------------------------------------------------------------------ -local ff = ns:taboption("filter", DynamicList, "filterfile") -ff.title_base = "Filter files" -ff.title = string.format(HELP, "FILTERFILE", ff.title_base ) -ff.description = translate("The filter files contain content modification rules that use regular expressions.") -ff.rmempty = false -function ff.validate(self, value) - if not value or #value == 0 then - return nil, err_tab_access(self.title_base, translate("Mandatory Input: No files given!") ) - end - local confdir = cd:formvalue(ns.section) - local err = false - local file = "" - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not NXFS.access(confdir .."/".. x) then - err = true - file = x - break -- break/leave for on error - end - end - end - else - if not NXFS.access(confdir .."/".. value) then - err = true - file = value - end - end - if err then - return nil, string.format(err_tab_filter(self.title_base, translate("File '%s' not found inside Configuration Directory") ), file ) - end - return value -end - --- trustfile ------------------------------------------------------------------- -local tf = ns:taboption("filter", Value, "trustfile") -tf.title_base = "Trust file" -tf.title = string.format(HELP, "TRUSTFILE", tf.title_base ) -tf.description = translate("The trust mechanism is an experimental feature for building white-lists " - .."and should be used with care.") - .. [[
    ]] - .. translate("It is NOT recommended for the casual user.") - .. [[]] -tf.placeholder = "user.trust" -tf.rmempty = true -function tf.validate(self, value) - local confdir = cd:formvalue(ns.section) - local err = false - local file = "" - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - if not NCFS.access(confdir .."/".. x) then - err = true - file = x - break -- break/leave for on error - end - end - end - else - if not NXFS.access(confdir .."/".. value) then - err = true - file = value - end - end - if err then - return nil, string.format(err_tab_filter(self.title_base, translate("File '%s' not found inside Configuration Directory") ), file ) - end - return value -end - --- tab: access -- ############################################################## - --- listen-address -------------------------------------------------------------- -local la = ns:taboption("access", DynamicList, "listen_address") -la.title_base = "Listen addresses" -la.title = string.format(HELP, "LISTEN-ADDRESS", la.title_base ) -la.description = translate("The address and TCP port on which Privoxy will listen for client requests.") - .. [[
    ]] - .. translate("Syntax: ") - .. "IPv4:Port / [IPv6]:Port / Host:Port" -la.default = "127.0.0.1:8118" -la.rmempty = false -function la.validate(self, value) - if not value or #value == 0 then - return nil, err_tab_access(self.title_base, translate("Mandatory Input: No Data given!") ) - end - - local function check_value(v) - local _ret = UTIL.split(v, "]:") - local _ip - if _ret[2] then -- ip6 with port - _ip = string.gsub(_ret[1], "%[", "") -- remove "[" at beginning - if not DTYP.ip6addr(_ip) then - return translate("Mandatory Input: No valid IPv6 address given!") - elseif not DTYP.port(_ret[2]) then - return translate("Mandatory Input: No valid Port given!") - else - return nil - end - end - _ret = UTIL.split(v, ":") - if not _ret[2] then - return translate("Mandatory Input: No Port given!") - end - if #_ret[1] > 0 and not DTYP.host(_ret[1]) then -- :8118 is valid address - return translate("Mandatory Input: No valid IPv4 address or host given!") - elseif not DTYP.port(_ret[2]) then - return translate("Mandatory Input: No valid Port given!") - else - return nil - end - end - - local err = "" - local entry = "" - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - err = check_value(x) - if err then - entry = x - break - end - end - end - else - err = check_value(value) - entry = value - end - if err then - return nil, string.format(err_tab_access(self.title_base, err .. " - %s"), entry ) - end - return value -end - --- permit-access --------------------------------------------------------------- -local pa = ns:taboption("access", DynamicList, "permit_access") -pa.title = string.format(HELP, "ACLS", "Permit access" ) -pa.description = translate("Who can access what.") - .. [[
    ]] - .. translate("Please read Privoxy manual for details!") - .. [[]] -pa.rmempty = true - --- deny-access ----------------------------------------------------------------- -local da = ns:taboption("access", DynamicList, "deny_access") -da.title = string.format(HELP, "ACLS", "Deny Access" ) -da.description = translate("Who can access what.") - .. [[
    ]] - .. translate("Please read Privoxy manual for details!") - .. [[]] -da.rmempty = true - --- buffer-limit ---------------------------------------------------------------- -local bl = ns:taboption("access", Value, "buffer_limit") -bl.title_base = "Buffer Limit" -bl.title = string.format(HELP, "BUFFER-LIMIT", bl.title_base ) -bl.description = translate("Maximum size (in KB) of the buffer for content filtering.") - .. [[
    ]] - .. translate("Value range 1 to 4096, no entry defaults to 4096") -bl.default = 4096 -bl.rmempty = true -function bl.validate(self, value) - local v = tonumber(value) - if not v then - return nil, err_tab_access(self.title_base, translate("Value is not a number") ) - elseif v < 1 or v > 4096 then - return nil, err_tab_access(self.title_base, translate("Value not between 1 and 4096") ) - elseif v == self.default then - return "" -- dont need to save default - end - return value -end - --- toggle ---------------------------------------------------------------------- -local tgl = ns:taboption("access", Flag, "toggle") -tgl.title = string.format(HELP, "TOGGLE", "Toggle Status" ) -tgl.description = translate("Enable/Disable filtering when Privoxy starts.") - .. [[
    ]] - .. translate("Disabled == Transparent Proxy Mode") -tgl.orientation = "horizontal" -tgl.default = "1" -tgl.rmempty = false - --- enable-remote-toggle -------------------------------------------------------- -local ert = ns:taboption("access", Flag, "enable_remote_toggle") -ert.title = string.format(HELP, "ENABLE-REMOTE-TOGGLE", "Enable remote toggle" ) -ert.description = translate("Whether or not the web-based toggle feature may be used.") -ert.orientation = "horizontal" -ert.rmempty = true - --- enable-remote-http-toggle --------------------------------------------------- -local eht = ns:taboption("access", Flag, "enable_remote_http_toggle") -eht.title = string.format(HELP, "ENABLE-REMOTE-HTTP-TOGGLE", "Enable remote toggle via HTTP" ) -eht.description = translate("Whether or not Privoxy recognizes special HTTP headers to change toggle state.") - .. [[
    ]] - .. translate("This option will be removed in future releases as it has been obsoleted by the more general header taggers.") - .. [[]] -eht.orientation = "horizontal" -eht.rmempty = true - --- enable-edit-actions --------------------------------------------------------- -local eea = ns:taboption("access", Flag, "enable_edit_actions") -eea.title = string.format(HELP, "ENABLE-EDIT-ACTIONS", "Enable action file editor" ) -eea.description = translate("Whether or not the web-based actions file editor may be used.") -eea.orientation = "horizontal" -eea.rmempty = true - --- enforce-blocks -------------------------------------------------------------- -local eb = ns:taboption("access", Flag, "enforce_blocks") -eb.title = string.format(HELP, "ENFORCE-BLOCKS", "Enforce page blocking" ) -eb.description = translate("If enabled, Privoxy hides the 'go there anyway' link. " - .. "The user obviously should not be able to bypass any blocks.") -eb.orientation = "horizontal" -eb.rmempty = true - --- tab: forward -- ############################################################# - --- enable-proxy-authentication-forwarding -------------------------------------- -local paf = ns:taboption("forward", Flag, "enable_proxy_authentication_forwarding") -paf.title = string.format(HELP, "ENABLE-PROXY-AUTHENTICATION-FORWARDING", - translate("Enable proxy authentication forwarding") ) -paf.description = translate("Whether or not proxy authentication through Privoxy should work.") - .. [[
    ]] - .. translate("Enabling this option is NOT recommended if there is no parent proxy that requires authentication!") - .. [[]] ---paf.orientation = "horizontal" -paf.rmempty = true - --- forward --------------------------------------------------------------------- -local fwd = ns:taboption("forward", DynamicList, "forward") -fwd.title = string.format(HELP, "FORWARD", "Forward HTTP" ) -fwd.description = translate("To which parent HTTP proxy specific requests should be routed.") - .. [[
    ]] - .. translate("Syntax: target_pattern http_parent[:port]") -fwd.rmempty = true - --- forward-socks4 -------------------------------------------------------------- -local fs4 = ns:taboption("forward", DynamicList, "forward_socks4") -fs4.title = string.format(HELP, "SOCKS", "Forward SOCKS 4" ) -fs4.description = translate("Through which SOCKS proxy (and optionally to which parent HTTP proxy) specific requests should be routed.") - .. [[
    ]] - .. translate("Syntax: target_pattern socks_proxy[:port] http_parent[:port]") -fs4.rmempty = true - --- forward-socks4a ------------------------------------------------------------- -local f4a = ns:taboption("forward", DynamicList, "forward_socks4a") -f4a.title = string.format(HELP, "SOCKS", "Forward SOCKS 4A" ) -f4a.description = fs4.description -f4a.rmempty = true - --- forward-socks5 -------------------------------------------------------------- -local fs5 = ns:taboption("forward", DynamicList, "forward_socks5") -fs5.title = string.format(HELP, "SOCKS", "Forward SOCKS 5" ) -fs5.description = fs4.description -fs5.rmempty = true - --- forward-socks5t ------------------------------------------------------------- -local f5t = ns:taboption("forward", DynamicList, "forward_socks5t") -f5t.title = string.format(HELP, "SOCKS", "Forward SOCKS 5t" ) -f5t.description = fs4.description -f5t.rmempty = true - --- tab: misc -- ################################################################ - --- accept-intercepted-requests ------------------------------------------------- -local air = ns:taboption("misc", Flag, "accept_intercepted_requests") -air.title = string.format(HELP, "ACCEPT-INTERCEPTED-REQUESTS", "Accept intercepted requests" ) -air.description = translate("Whether intercepted requests should be treated as valid.") -air.orientation = "horizontal" -air.rmempty = true - --- allow-cgi-request-crunching ------------------------------------------------- -local crc = ns:taboption("misc", Flag, "allow_cgi_request_crunching") -crc.title = string.format(HELP, "ALLOW-CGI-REQUEST-CRUNCHING", "Allow CGI request crunching" ) -crc.description = translate("Whether requests to Privoxy's CGI pages can be blocked or redirected.") -crc.orientation = "horizontal" -crc.rmempty = true - --- split-large-forms ----------------------------------------------------------- -local slf = ns:taboption("misc", Flag, "split_large_forms") -slf.title = string.format(HELP, "SPLIT-LARGE-FORMS", "Split large forms" ) -slf.description = translate("Whether the CGI interface should stay compatible with broken HTTP clients.") -slf.orientation = "horizontal" -slf.rmempty = true - --- keep-alive-timeout ---------------------------------------------------------- -local kat = ns:taboption("misc", Value, "keep_alive_timeout") -kat.title_base = "Keep-alive timeout" -kat.title = string.format(HELP, "KEEP-ALIVE-TIMEOUT", kat.title_base) -kat.description = translate("Number of seconds after which an open connection will no longer be reused.") -kat.rmempty = true -function kat.validate(self, value) - local v = tonumber(value) - if not v then - return nil, err_tab_misc(self.title_base, translate("Value is not a number") ) - elseif v < 1 then - return nil, err_tab_misc(self.title_base, translate("Value not greater 0 or empty") ) - end - return value -end - --- tolerate-pipelining --------------------------------------------------------- -local tp = ns:taboption("misc", Flag, "tolerate_pipelining") -tp.title = string.format(HELP, "TOLERATE-PIPELINING", "Tolerate pipelining" ) -tp.description = translate("Whether or not pipelined requests should be served.") -tp.orientation = "horizontal" -tp.rmempty = true - --- default-server-timeout ------------------------------------------------------ -local dst = ns:taboption("misc", Value, "default_server_timeout") -dst.title_base = "Default server timeout" -dst.title = string.format(HELP, "DEFAULT-SERVER-TIMEOUT", dst.title_base) -dst.description = translate("Assumed server-side keep-alive timeout (in seconds) if not specified by the server.") -dst.rmempty = true -function dst.validate(self, value) - local v = tonumber(value) - if not v then - return nil, err_tab_misc(self.title_base, translate("Value is not a number") ) - elseif v < 1 then - return nil, err_tab_misc(self.title_base, translate("Value not greater 0 or empty") ) - end - return value -end - --- connection-sharing ---------------------------------------------------------- -local cs = ns:taboption("misc", Flag, "connection_sharing") -cs.title = string.format(HELP, "CONNECTION-SHARING", "Connection sharing" ) -cs.description = translate("Whether or not outgoing connections that have been kept alive should be shared between different incoming connections.") -cs.orientation = "horizontal" -cs.rmempty = true - --- socket-timeout -------------------------------------------------------------- -local st = ns:taboption("misc", Value, "socket_timeout") -st.title_base = "Socket timeout" -st.title = string.format(HELP, "SOCKET-TIMEOUT", st.title_base ) -st.description = translate("Number of seconds after which a socket times out if no data is received.") -st.default = 300 -st.rmempty = true -function st.validate(self, value) - local v = tonumber(value) - if not v then - return nil, err_tab_misc(self.title_base, translate("Value is not a number") ) - elseif v < 1 then - return nil, err_tab_misc(self.title_base, translate("Value not greater 0 or empty") ) - elseif v == self.default then - return "" -- dont need to save default - end - return value -end - --- max-client-connections ------------------------------------------------------ -local mcc = ns:taboption("misc", Value, "max_client_connections") -mcc.title_base = "Max. client connections" -mcc.title = string.format(HELP, "MAX-CLIENT-CONNECTIONS", mcc.title_base ) -mcc.description = translate("Maximum number of client connections that will be served.") -mcc.default = 128 -mcc.rmempty = true -function mcc.validate(self, value) - local v = tonumber(value) - if not v then - return nil, err_tab_misc(self.title_base, translate("Value is not a number") ) - elseif v < 1 then - return nil, err_tab_misc(self.title_base, translate("Value not greater 0 or empty") ) - elseif v == self.default then - return "" -- dont need to save default - end - return value -end - --- handle-as-empty-doc-returns-ok ---------------------------------------------- -local her = ns:taboption("misc", Flag, "handle_as_empty_doc_returns_ok") -her.title = string.format(HELP, "HANDLE-AS-EMPTY-DOC-RETURNS-OK", "Handle as empty doc returns ok" ) -her.description = translate("The status code Privoxy returns for pages blocked with +handle-as-empty-document.") -her.orientation = "horizontal" -her.rmempty = true - --- enable-compression ---------------------------------------------------------- -local ec = ns:taboption("misc", Flag, "enable_compression") -ec.title = string.format(HELP, "ENABLE-COMPRESSION", "Enable compression" ) -ec.description = translate("Whether or not buffered content is compressed before delivery.") -ec.orientation = "horizontal" -ec.rmempty = true - --- compression-level ----------------------------------------------------------- -local cl = ns:taboption("misc", Value, "compression_level") -cl.title_base = "Compression level" -cl.title = string.format(HELP, "COMPRESSION-LEVEL", cl.title_base ) -cl.description = translate("The compression level that is passed to the zlib library when compressing buffered content.") -cl.default = 1 -cl.rmempty = true -function cl.validate(self, value) - local v = tonumber(value) - if not v then - return nil, err_tab_misc(self.title_base, translate("Value is not a number") ) - elseif v < 0 or v > 9 then - return nil, err_tab_misc(self.title_base, translate("Value not between 0 and 9") ) - elseif v == self.default then - return "" -- don't need to save default - end - return value -end - --- client-header-order --------------------------------------------------------- -local cho = ns:taboption("misc", Value, "client_header_order") -cho.title = string.format(HELP, "CLIENT-HEADER-ORDER", "Client header order" ) -cho.description = translate("The order in which client headers are sorted before forwarding them.") - .. [[
    ]] - .. translate("Syntax: Client header names delimited by spaces.") -cho.rmempty = true - --- "debug"-tab definition -- ################################################### - --- single-threaded ------------------------------------------------------------- -local st = ns:taboption("debug", Flag, "single_threaded") -st.title = string.format(HELP, "SINGLE-THREADED", "Single Threaded" ) -st.description = translate("Whether to run only one server thread.") - .. [[
    ]] - .. translate("This option is only there for debugging purposes. It will drastically reduce performance.") - .. [[]] -st.rmempty = true - --- debug 1 --------------------------------------------------------------------- -local d0 = ns:taboption("debug", Flag, "debug_1") -d0.title = string.format(HELP, "DEBUG", "Debug 1" ) -d0.description = translate("Log the destination for each request Privoxy let through. See also 'Debug 1024'.") -d0.rmempty = true - --- debug 2 --------------------------------------------------------------------- -local d1 = ns:taboption("debug", Flag, "debug_2") -d1.title = string.format(HELP, "DEBUG", "Debug 2" ) -d1.description = translate("Show each connection status") -d1.rmempty = true - --- debug 4 --------------------------------------------------------------------- -local d2 = ns:taboption("debug", Flag, "debug_4") -d2.title = string.format(HELP, "DEBUG", "Debug 4" ) -d2.description = translate("Show I/O status") -d2.rmempty = true - --- debug 8 --------------------------------------------------------------------- -local d3 = ns:taboption("debug", Flag, "debug_8") -d3.title = string.format(HELP, "DEBUG", "Debug 8" ) -d3.description = translate("Show header parsing") -d3.rmempty = true - --- debug 16 -------------------------------------------------------------------- -local d4 = ns:taboption("debug", Flag, "debug_16") -d4.title = string.format(HELP, "DEBUG", "Debug 16" ) -d4.description = translate("Log all data written to the network") -d4.rmempty = true - --- debug 32 -------------------------------------------------------------------- -local d5 = ns:taboption("debug", Flag, "debug_32") -d5.title = string.format(HELP, "DEBUG", "Debug 32" ) -d5.description = translate("Debug force feature") -d5.rmempty = true - --- debug 64 -------------------------------------------------------------------- -local d6 = ns:taboption("debug", Flag, "debug_64") -d6.title = string.format(HELP, "DEBUG", "Debug 64" ) -d6.description = translate("Debug regular expression filters") -d6.rmempty = true - --- debug 128 ------------------------------------------------------------------- -local d7 = ns:taboption("debug", Flag, "debug_128") -d7.title = string.format(HELP, "DEBUG", "Debug 128" ) -d7.description = translate("Debug redirects") -d7.rmempty = true - --- debug 256 ------------------------------------------------------------------- -local d8 = ns:taboption("debug", Flag, "debug_256") -d8.title = string.format(HELP, "DEBUG", "Debug 256" ) -d8.description = translate("Debug GIF de-animation") -d8.rmempty = true - --- debug 512 ------------------------------------------------------------------- -local d9 = ns:taboption("debug", Flag, "debug_512") -d9.title = string.format(HELP, "DEBUG", "Debug 512" ) -d9.description = translate("Common Log Format") -d9.rmempty = true - --- debug 1024 ------------------------------------------------------------------ -local d10 = ns:taboption("debug", Flag, "debug_1024") -d10.title = string.format(HELP, "DEBUG", "Debug 1024" ) -d10.description = translate("Log the destination for requests Privoxy didn't let through, and the reason why.") -d10.rmempty = true - --- debug 2048 ------------------------------------------------------------------ -local d11 = ns:taboption("debug", Flag, "debug_2048") -d11.title = string.format(HELP, "DEBUG", "Debug 2048" ) -d11.description = translate("CGI user interface") -d11.rmempty = true - --- debug 4096 ------------------------------------------------------------------ -local d12 = ns:taboption("debug", Flag, "debug_4096") -d12.title = string.format(HELP, "DEBUG", "Debug 4096" ) -d12.description = translate("Startup banner and warnings.") -d12.rmempty = true - --- debug 8192 ------------------------------------------------------------------ -local d13 = ns:taboption("debug", Flag, "debug_8192") -d13.title = string.format(HELP, "DEBUG", "Debug 8192" ) -d13.description = translate("Non-fatal errors - *we highly recommended enabling this*") -d13.rmempty = true - --- debug 16384 ----------------------------------------------------------------- ---[[ TODO ??? -local d14 = ns:taboption("debug", Flag, "debug_16384") -d14.title = string.format(HELP, "DEBUG", "Debug 16384" ) -d14.description = translate("") -d14.rmempty = true -]]-- - --- debug 32768 ----------------------------------------------------------------- -local d15 = ns:taboption("debug", Flag, "debug_32768") -d15.title = string.format(HELP, "DEBUG", "Debug 32768" ) -d15.description = translate("Log all data read from the network") -d15.rmempty = true - --- debug 65536 ----------------------------------------------------------------- -local d16 = ns:taboption("debug", Flag, "debug_65536") -d16.title = string.format(HELP, "DEBUG", "Debug 65536" ) -d16.description = translate("Log the applying actions") -d16.rmempty = true - --- tab: logview -- ############################################################# - -local lv = ns:taboption("logview", DummyValue, "_logview") -lv.template = "privoxy/detail_logview" -lv.inputtitle = translate("Read / Reread log file") -lv.rows = 50 -function lv.cfgvalue(self, section) - local lfile=self.map:get(ns.section, "logdir") .. "/" .. self.map:get(ns.section, "logfile") - if NXFS.access(lfile) then - return lfile .. "\n" .. translate("Please press [Read] button") - end - return lfile .. "\n" .. translate("File not found or empty") -end - -return m diff --git a/package/luci/applications/luci-app-privoxy/luasrc/view/privoxy/detail_logview.htm b/package/luci/applications/luci-app-privoxy/luasrc/view/privoxy/detail_logview.htm deleted file mode 100644 index ab0019bdd4..0000000000 --- a/package/luci/applications/luci-app-privoxy/luasrc/view/privoxy/detail_logview.htm +++ /dev/null @@ -1,56 +0,0 @@ - - - - -<%+cbi/valueheader%> - -
    - -<% --- one button on top, one at the buttom -%> - /> - -

    - -<% --- set a readable style taken from openwrt theme for textarea#syslog --- in openwrt theme there are problems with a width of 100 so we check for theme and set to lower value -%> - -

    - -<% --- one button on top, one at the buttom -%> - /> - -<%+cbi/valuefooter%> - diff --git a/package/luci/applications/luci-app-privoxy/luasrc/view/privoxy/detail_startstop.htm b/package/luci/applications/luci-app-privoxy/luasrc/view/privoxy/detail_startstop.htm deleted file mode 100644 index 85975ac7d1..0000000000 --- a/package/luci/applications/luci-app-privoxy/luasrc/view/privoxy/detail_startstop.htm +++ /dev/null @@ -1,49 +0,0 @@ - - - - -<%+cbi/valueheader%> - -<% if self:cfgvalue(section) ~= false then --- We need to garantie that function cfgvalue run first to set missing parameters -%> - - - " style="font-size: 100%;" type="button" onclick="onclick_startstop(this.id)" - <%= - attr("name", section) .. attr("id", cbid) .. attr("value", self.inputtitle) .. ifattr(self.disabled, "disabled") - %> /> -<% end %> - -<%+cbi/valuefooter%> - diff --git a/package/luci/applications/luci-app-privoxy/po/de/privoxy.po b/package/luci/applications/luci-app-privoxy/po/de/privoxy.po deleted file mode 100644 index 9e2a29eb63..0000000000 --- a/package/luci/applications/luci-app-privoxy/po/de/privoxy.po +++ /dev/null @@ -1,533 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-privoxy\n" -"POT-Creation-Date: 2015-01-18 21:48+0100\n" -"PO-Revision-Date: 2015-01-18 21:51+0100\n" -"Last-Translator: Christian Schoenebeck \n" -"Language-Team: \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "" -"A URL to be displayed in the error page that users will see if access to an " -"untrusted page is denied." -msgstr "" -"Ein Link auf der Fehlerseite, der Benutzern angezeigt wird, wenn der Zugang " -"zu einer nicht vertrauenswürdigen Seite verweigert wird." - -msgid "" -"A URL to documentation about the local Privoxy setup, configuration or " -"policies." -msgstr "" -"Ein Link zur Dokumentation über die lokale Privoxy Konfiguration und die " -"Sicherheitseinstellungen." - -msgid "A directory where Privoxy can create temporary files." -msgstr "" - -msgid "Access Control" -msgstr "Zugriffskontrolle" - -msgid "Actions that are applied to all sites and maybe overruled later on." -msgstr "" -"Aktionen, die für alle Websites angewendet werden, und vielleicht später " -"überschrieben werden." - -msgid "An alternative directory where the templates are loaded from." -msgstr "Eine alternatives Verzeichnis, aus dem die Vorlagen geladen werden." - -msgid "An email address to reach the Privoxy administrator." -msgstr "Eine E-Mail-Adresse, um die Privoxy-Administrator zu erreichen." - -msgid "" -"Assumed server-side keep-alive timeout (in seconds) if not specified by the " -"server." -msgstr "" -"Angenommenes serverseitiges Keep-Alive-Timeout (in Sekunden), falls nicht " -"vom Server festgelegt." - -msgid "Boot delay" -msgstr "" - -msgid "CGI user interface" -msgstr "Protokolliert die CGI Benutzer Schnittstelle" - -msgid "Common Log Format" -msgstr "Gemeinsames Protokollformat" - -msgid "" -"Configure here the routing of HTTP requests through a chain of multiple " -"proxies. Note that parent proxies can severely decrease your privacy level. " -"Also specified here are SOCKS proxies." -msgstr "" -"Konfigurieren Sie hier das Weiterleiten von HTTP-Anforderungen durch eine " -"Kette von mehreren Proxies. Beachten Sie, dass übergeordnete Proxies Ihre " -"Privatsphäre stark verringern können. Auch hier angegeben werden SOCKS-" -"Proxies." - -msgid "Debug GIF de-animation" -msgstr "Protokolliert die GIF de-animation" - -msgid "Debug force feature" -msgstr "Protokolliert die 'Force' Eigenschaft" - -msgid "Debug redirects" -msgstr "Protokolliert Weiterleitungen" - -msgid "Debug regular expression filters" -msgstr "Protokolliert Filter für reguläre Ausdrücke" - -msgid "Delay (in seconds) during system boot before Privoxy start" -msgstr "" - -msgid "Directory does not exist!" -msgstr "Verzeichnis existiert nicht!" - -msgid "Disabled == Transparent Proxy Mode" -msgstr "Deaktiviert == Transparent Proxy Betrieb" - -msgid "Documentation" -msgstr "" - -msgid "During delay ifup-events are not monitored !" -msgstr "" - -msgid "Enable proxy authentication forwarding" -msgstr "Aktivieren die Weiterleitung von Proxy-Authentifizierungen" - -msgid "" -"Enable/Disable autostart of Privoxy on system startup and interface events" -msgstr "" -"Aktivieren / Deaktivieren des Autostart von Privoxy beim Systemstart und " -"Schnittstellenereignissen." - -msgid "Enable/Disable filtering when Privoxy starts." -msgstr "Aktivieren / Deaktivieren der Filterung, wenn Privoxy startet." - -msgid "Enabled" -msgstr "Aktiviert" - -msgid "" -"Enabling this option is NOT recommended if there is no parent proxy that " -"requires authentication!" -msgstr "" -"Die Aktivierung dieser Option wird NICHT empfohlen, wenn es keinen " -"übergeordneten Proxy gibt, der eine Authentifizierung erfordert!" - -msgid "File '%s' not found inside Configuration Directory" -msgstr "Datei '%s' nicht im Konfigurationsverzeichnis gefunden!" - -msgid "File not found or empty" -msgstr "Datei nicht gefunden oder leer" - -msgid "Files and Directories" -msgstr "Dateien und Verzeichnisse" - -msgid "For help use link at the relevant option" -msgstr "" -"Für Hilfe zur Verwendung, benutzen Sie die Verknüpfung der betreffenden " -"Option." - -msgid "Forwarding" -msgstr "Weiterleitung" - -msgid "" -"If enabled, Privoxy hides the 'go there anyway' link. The user obviously " -"should not be able to bypass any blocks." -msgstr "" -"Wenn aktiviert, verbirgt Privoxy den Link 'go there anyway'. Normalerweise " -"sollten Benutzer nicht in der Lage sein, Blockierungen zu umgehen." - -msgid "" -"If you intend to operate Privoxy for more users than just yourself, it might " -"be a good idea to let them know how to reach you, what you block and why you " -"do that, your policies, etc." -msgstr "" -"Wenn Sie beabsichtigen, Privoxy für mehr Nutzer als nur sich selbst zu " -"betreiben, ist es eine gute Idee, sie wissen zu lassen, wie sie Sie " -"erreichen können, was Sie blockieren und warum Sie das tun, etc." - -msgid "Invalid email address" -msgstr "Ungültige Email Adresse" - -msgid "It is NOT recommended for the casual user." -msgstr "Es wird NICHT für den gelegentlichen Anwender empfohlen." - -msgid "Location of the Privoxy User Manual." -msgstr "Ort des Privoxy Benutzer Handbuches" - -msgid "Log File Viewer" -msgstr "Protokolldatei" - -msgid "Log all data read from the network" -msgstr "Protokolliert alle Daten, die vom Netzwerk gelesen werden." - -msgid "Log all data written to the network" -msgstr "Protokolliert alle Daten, die auf das Netzwerk geschrieben werden." - -msgid "Log the applying actions" -msgstr "Protokiolliert angewendete Aktionen" - -msgid "" -"Log the destination for each request Privoxy let through. See also 'Debug " -"1024'." -msgstr "" -"Protokolliert das Ziel für jede Anforderung die Privoxy durchlässt. Siehe " -"auch 'Debug 1024'." - -msgid "" -"Log the destination for requests Privoxy didn't let through, and the reason " -"why." -msgstr "" -"Protokolliert das Ziel für Anfragen die Privoxy nicht durchgelassen hat, und " -"den Grund dafür." - -msgid "Logging" -msgstr "Protokollierung" - -msgid "Main actions file" -msgstr "Wichtige Aktionen-Datei" - -msgid "Mandatory Input: No Data given!" -msgstr "Pflichtfeld: Keine Daten angegeben!" - -msgid "Mandatory Input: No Directory given!" -msgstr "Pflichtfeld: Kein Verzeichnis angegeben!" - -msgid "Mandatory Input: No File given!" -msgstr "Pflichtfeld: Keine Datei angegeben!" - -msgid "Mandatory Input: No Port given!" -msgstr "Pflichtfeld: Kein Port angegeben!" - -msgid "Mandatory Input: No files given!" -msgstr "Pflichtfeld: Keine Dateien angegeben!" - -msgid "Mandatory Input: No valid IPv4 address or host given!" -msgstr "" -"Pflichtfeld: Keine gültige IPv4 Adresse oder gültiger Hostname angegeben!" - -msgid "Mandatory Input: No valid IPv6 address given!" -msgstr "Pflichtfeld: Keine gültige IPv6 Adresse angegeben!" - -msgid "Mandatory Input: No valid Port given!" -msgstr "Pflichtfeld: Keine gültige Port Nummer angegeben!" - -msgid "Maximum number of client connections that will be served." -msgstr "Maximale Anzahl von Client-Verbindungen." - -msgid "Maximum size (in KB) of the buffer for content filtering." -msgstr "Maximale Größe (in KB) des Puffers für die Inhaltsfilterung." - -msgid "Miscellaneous" -msgstr "Verschiedenes" - -msgid "NOT installed" -msgstr "" - -msgid "No trailing '/', please." -msgstr "Bitte kein '/' am Ende." - -msgid "Non-fatal errors - *we highly recommended enabling this*" -msgstr "" -"Protokolliert nicht schwerwiegende Fehler - * Es wird dringend empfohlen, " -"dieses zu aktivieren *" - -msgid "" -"Number of seconds after which a socket times out if no data is received." -msgstr "" -"Anzahl der Sekunden, nach der eine Socket Timeout erfolgt, wenn keine Daten " -"empfangen werden." - -msgid "" -"Number of seconds after which an open connection will no longer be reused." -msgstr "" -"Anzahl von Sekunden, nach der eine offene Verbindung nicht mehr " -"wiederverwendet wird." - -msgid "" -"Only when using 'external filters', Privoxy has to create temporary files." -msgstr "" - -msgid "Please install current version !" -msgstr "" - -msgid "Please press [Read] button" -msgstr "Bitte Protokolldatei einlesen" - -msgid "Please read Privoxy manual for details!" -msgstr "Bitte lesen Sie das Privoxy Handbuch für Details!" - -msgid "Please update to the current version!" -msgstr "Aktualisieren Sie bitte auf die aktuelle Version!" - -msgid "Privoxy WEB proxy" -msgstr "Privoxy WEB proxy" - -msgid "" -"Privoxy can (and normally does) use a number of other files for additional " -"configuration, help and logging. This section of the configuration file " -"tells Privoxy where to find those other files." -msgstr "" -"Privoxy verwendet (was in der Regel der Fall ist), eine Reihe von anderen " -"Dateien für eine zusätzliche Konfiguration, Hilfe und Protokollierung. " -"Dieser Abschnitt der Konfigurationsdatei definiert, wo diese Dateien zu " -"finden sind." - -msgid "" -"Privoxy is a non-caching web proxy with advanced filtering capabilities for " -"enhancing privacy, modifying web page data and HTTP headers, controlling " -"access, and removing ads and other obnoxious Internet junk." -msgstr "" -"Privoxy ist ein non-caching Web-Proxy mit erweiterten Filterfunktion zur " -"Verbesserung der Privatsphäre. Er modifiziert Webseitendaten und HTTP-" -"Header, kontrolliert den Zugang und das Entfernen von Anzeigen und anderem " -"abscheulichen Internet Schrott." - -msgid "Read / Reread log file" -msgstr "Protokolldatei (neu) lesen" - -msgid "Show I/O status" -msgstr "Protokolliert den I/O Status" - -msgid "Show each connection status" -msgstr "Protokolliert jeden Verbindungsstatus" - -msgid "Show header parsing" -msgstr "Protokolliert das 'Header parsing'" - -msgid "Software package '%s' is not installed." -msgstr "" - -msgid "Software package '%s' is outdated." -msgstr "" - -msgid "Start" -msgstr "Start" - -msgid "Start / Stop" -msgstr "Start / Stopp" - -msgid "Start/Stop Privoxy WEB Proxy" -msgstr "Start/Stopp Privoxy WEB Proxy" - -msgid "Startup banner and warnings." -msgstr "Protokolliert Start-Meldungen und Warnungen" - -msgid "Syntax:" -msgstr "Syntax:" - -msgid "Syntax: Client header names delimited by spaces." -msgstr "Syntax: Client header Namen getrennt durch Leerzeichen." - -msgid "Syntax: target_pattern http_parent[:port]" -msgstr "Syntax: target_pattern http_parent[:port]" - -msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]" -msgstr "Syntax: target_pattern socks_proxy[:port] http_parent[:port]" - -msgid "System" -msgstr "" - -msgid "" -"The actions file(s) to use. Multiple actionsfile lines are permitted, and " -"are in fact recommended!" -msgstr "" -"Die zu verwendenden Aktion-Datei(en). Mehrere Dateien sind gestattet und " -"empfohlen!" - -msgid "" -"The address and TCP port on which Privoxy will listen for client requests." -msgstr "" -"Die Adresse und das TCP-Port, auf dem Privoxy auf Client-Anforderungen " -"wartet." - -msgid "" -"The compression level that is passed to the zlib library when compressing " -"buffered content." -msgstr "" -"Die Komprimierungsstufe (0-9), die der zlib-Bibliothek beim Komprimieren " -"gepufferten Inhaltes übergeben wird." - -msgid "" -"The directory where all logging takes place (i.e. where the logfile is " -"located)." -msgstr "Das Verzeichnis in dem die Protokolldatei gespeichert wird." - -msgid "The directory where the other configuration files are located." -msgstr "Das Verzeichnis in dem weitere Konfigurationsdateien gespeichert sind." - -msgid "" -"The filter files contain content modification rules that use regular " -"expressions." -msgstr "" -"Die Filterdateien enthalten Änderung des Inhalts, die reguläre Ausdrücke " -"als Regeln verwenden." - -msgid "The hostname shown on the CGI pages." -msgstr "Der Hostname der auf CGI-Seiten angezeigt wird." - -msgid "The log file to use. File name, relative to log directory." -msgstr "" -"Zu verwendende Protokolldatei. Dateiname relativ zum Protokoll-Verzeichnis." - -msgid "The order in which client headers are sorted before forwarding them." -msgstr "" -"Die Reihenfolge, in der Client-Header sortiert werden, bevor sie " -"weitergeleitet werden." - -msgid "" -"The status code Privoxy returns for pages blocked with +handle-as-empty-" -"document." -msgstr "" -"Ob Statuscode 200(OK) oder 403(forbidden) für Seiten gemeldet wird, die " -"durch den Filter 'handle-as-empty-document' blockiert werden." - -msgid "" -"The trust mechanism is an experimental feature for building white-lists and " -"should be used with care." -msgstr "" -"Der Trust-Mechanismus ist eine experimentelle Funktion für den Aufbau von " -"White-Listen und sollte mit Vorsicht verwendet werden." - -msgid "" -"The value of this option only matters if the experimental trust mechanism " -"has been activated." -msgstr "" -"Der Wert dieser Option ist nur wirksam, wenn der experimentelle Trust-" -"Mechanismus aktiviert wurde." - -msgid "" -"This option is only there for debugging purposes. It will drastically reduce " -"performance." -msgstr "" -"Diese Option ist ausschließlich zur Fehlersuche. Es wird drastisch die " -"Leistung beeinträchtigt." - -msgid "" -"This option will be removed in future releases as it has been obsoleted by " -"the more general header taggers." -msgstr "Diese Option wird in zukünftigen Versionen entfernt werden." - -msgid "" -"This tab controls the security-relevant aspects of Privoxy's configuration." -msgstr "" -"Diese Registerkarte steuert die sicherheitsrelevanten Aspekte der Privoxy " -"Konfiguration." - -msgid "" -"Through which SOCKS proxy (and optionally to which parent HTTP proxy) " -"specific requests should be routed." -msgstr "" -"An welchen SOCKS-Proxy (und gegebenenfalls an welchen übergeordneten HTTP-" -"Proxy) spezifischen Anforderungen weitergeleitet werden." - -msgid "To which parent HTTP proxy specific requests should be routed." -msgstr "" -"An welchen übergeordneten HTTP-Proxy spezifischen Anforderungen " -"weitergeleitet werden." - -msgid "User customizations" -msgstr "Benutzerdefinierte Anpassungen" - -msgid "Value is not a number" -msgstr "Eingabe ist keine Zahl" - -msgid "Value not between 0 and 300" -msgstr "" - -msgid "Value not between 0 and 9" -msgstr "Wert nicht zwischen 0 und 9" - -msgid "Value not between 1 and 4096" -msgstr "Wert nicht zwischen 1 und 4096" - -msgid "Value not greater 0 or empty" -msgstr "Wert nicht größer 0 oder leer" - -msgid "Value range 1 to 4096, no entry defaults to 4096" -msgstr "Wertebereich: 1 bis 4096; Keine Angabe setzt 4096." - -msgid "Version" -msgstr "Version" - -msgid "Version Information" -msgstr "Versionsinformation" - -msgid "Whether intercepted requests should be treated as valid." -msgstr "Ob abgefangen Anfragen als gültig behandelt werden." - -msgid "" -"Whether or not Privoxy recognizes special HTTP headers to change toggle " -"state." -msgstr "" -"Ob Privoxy erkannte spezielle HTTP-Header zur Änderung des Toggle-Status " -"verwendet.." - -msgid "Whether or not buffered content is compressed before delivery." -msgstr "" -"Ob gepufferte Inhalte vor der Weiterleitung komprimiert werden oder nicht." - -msgid "" -"Whether or not outgoing connections that have been kept alive should be " -"shared between different incoming connections." -msgstr "" -"Ob ausgehende Verbindungen, die am Leben gehalten werden, für verschiedenen " -"eingehenden Verbindungen gemeinsam genutzt werden oder nicht." - -msgid "Whether or not pipelined requests should be served." -msgstr "Ob Pipeline-Anfragen bedient werden oder nicht." - -msgid "Whether or not proxy authentication through Privoxy should work." -msgstr "" -"Ob Proxy-Authentifizierungen durch Privoxy weitergeleitet werden oder nicht." - -msgid "Whether or not the web-based actions file editor may be used." -msgstr "De-/Aktiviert den webbasierte Action-Datei Editor." - -msgid "Whether or not the web-based toggle feature may be used." -msgstr "De-Aktiviert die webbasierte Umschaltfunktion." - -msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected." -msgstr "" -"Ob Anfragen an Privoxy CGI-Seiten gesperrt oder umgeleitet werden können " -"oder nicht." - -msgid "" -"Whether the CGI interface should stay compatible with broken HTTP clients." -msgstr "" -"Ob die CGI-Schnittstelle mit broken HTTP-Clients kompatibel bleibt oder " -"nicht." - -msgid "Whether to run only one server thread." -msgstr "Ob nur ein Server-Thread ausgeführt wird." - -msgid "Who can access what." -msgstr "Wer kann auf Was zugreifen." - -msgid "installed" -msgstr "installiert" - -msgid "or higher" -msgstr "oder höher" - -msgid "required" -msgstr "benötigt" - -#~ msgid "Local Set-up" -#~ msgstr "Lokale Einstellungen" - -#~ msgid "Software update required" -#~ msgstr "Softwareaktualisierung nötig" - -#~ msgid "" -#~ "The currently installed 'privoxy' package is not supported by LuCI " -#~ "application." -#~ msgstr "" -#~ "Das aktuell installierte 'privoxy' Paket wird von dieser LuCI Anwendung " -#~ "NICHT unterstützt." diff --git a/package/luci/applications/luci-app-privoxy/po/pt-br/privoxy.po b/package/luci/applications/luci-app-privoxy/po/pt-br/privoxy.po deleted file mode 100644 index 8d3eee20d5..0000000000 --- a/package/luci/applications/luci-app-privoxy/po/pt-br/privoxy.po +++ /dev/null @@ -1,516 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "" -"A URL to be displayed in the error page that users will see if access to an " -"untrusted page is denied." -msgstr "" -"A URL a ser exibida na página de erro que os usuários verão se o acesso a " -"uma página não confiável é negado." - -msgid "" -"A URL to documentation about the local Privoxy setup, configuration or " -"policies." -msgstr "" -"A URL para a documentação sobre o Privoxy local, configuração ou políticas." - -msgid "A directory where Privoxy can create temporary files." -msgstr "Um diretório onde Privoxy pode criar arquivos temporários." - -msgid "Access Control" -msgstr "Controle de Acesso" - -msgid "Actions that are applied to all sites and maybe overruled later on." -msgstr "" -"Ações que são aplicadas a todos as páginas e talvez descartado mais tarde." - -msgid "An alternative directory where the templates are loaded from." -msgstr "Um diretório alternativo de onde os modelos são carregados." - -msgid "An email address to reach the Privoxy administrator." -msgstr "Um endereço de e-mail para alcançar o administrador do Privoxy." - -msgid "" -"Assumed server-side keep-alive timeout (in seconds) if not specified by the " -"server." -msgstr "" -"Tempo limite, em segundos, da manutenção da conexão (keep-alive) do servidor " -"se não for especificado." - -msgid "Boot delay" -msgstr "Atraso de iniciação" - -msgid "CGI user interface" -msgstr "Interface de usuário CGI" - -msgid "Common Log Format" -msgstr "Formato de registros (log) comum" - -msgid "" -"Configure here the routing of HTTP requests through a chain of multiple " -"proxies. Note that parent proxies can severely decrease your privacy level. " -"Also specified here are SOCKS proxies." -msgstr "" -"Configure aqui o encaminhamento de pedidos HTTP através de uma cadeia de " -"múltiplos proxies. Note-se que proxies pai pode diminuir muito o nível de " -"privacidade. Também serão aceitos proxies SOCKS." - -msgid "Debug GIF de-animation" -msgstr "Depurar de-animação GIF" - -msgid "Debug force feature" -msgstr "Recurso de depuração forçado" - -msgid "Debug redirects" -msgstr "Redirecionamentos de depuração" - -msgid "Debug regular expression filters" -msgstr "Depuração de filtros de expressão regular" - -msgid "Delay (in seconds) during system boot before Privoxy start" -msgstr "" -"Atraso (em segundos) durante a inicialização do sistema antes do Privoxy " -"iniciar" - -msgid "Directory does not exist!" -msgstr "O diretório não existe!" - -msgid "Disabled == Transparent Proxy Mode" -msgstr "Desativado == Modo Proxy Transparente" - -msgid "Documentation" -msgstr "Documentação" - -msgid "During delay ifup-events are not monitored !" -msgstr "Durante a espera, eventos ifup não serão monitorados!" - -msgid "Enable proxy authentication forwarding" -msgstr "Habilitar o encaminhamento de autenticação de proxy" - -msgid "" -"Enable/Disable autostart of Privoxy on system startup and interface events" -msgstr "" -"Ativar/Desativar a iniciação automática do Privoxy junto com a iniciação do " -"sistema ou eventos de interface" - -msgid "Enable/Disable filtering when Privoxy starts." -msgstr "Ativar / Desativar filtragem quando Privoxy iniciar." - -msgid "Enabled" -msgstr "Habilitado" - -msgid "" -"Enabling this option is NOT recommended if there is no parent proxy that " -"requires authentication!" -msgstr "" -"A ativação dessa opção não é recomendado se não houver nenhum proxy pai que " -"requer autenticação!" - -msgid "File '%s' not found inside Configuration Directory" -msgstr "O arquivo '%s' não foi encontrado dentro do Diretório de Configuração" - -msgid "File not found or empty" -msgstr "Arquivo não encontrado ou vazio" - -msgid "Files and Directories" -msgstr "Arquivos e diretórios" - -msgid "For help use link at the relevant option" -msgstr "Para ajuda, use o link na respectiva opção" - -msgid "Forwarding" -msgstr "Encaminhando" - -msgid "" -"If enabled, Privoxy hides the 'go there anyway' link. The user obviously " -"should not be able to bypass any blocks." -msgstr "" -"Se ativado, Privoxy esconde o link \"ir lá de qualquer maneira\". O usuário, " -"obviamente, não deve ser capaz de contornar qualquer bloqueio." - -msgid "" -"If you intend to operate Privoxy for more users than just yourself, it might " -"be a good idea to let them know how to reach you, what you block and why you " -"do that, your policies, etc." -msgstr "" -"Se você pretende operar Privoxy para mais usuários do que apenas a si mesmo, " -"pode ser uma boa ideia para que eles saibam como falar com você, o que você " -"bloquear e por que você faz isso, as suas políticas, etc." - -msgid "Invalid email address" -msgstr "Endereço de e-mail inválido" - -msgid "It is NOT recommended for the casual user." -msgstr "Não é recomendado para o usuário casual." - -msgid "Location of the Privoxy User Manual." -msgstr "Localização do Manual do Usuário do Privoxy." - -msgid "Log File Viewer" -msgstr "Visualizador de arquivo de registros (log)" - -msgid "Log all data read from the network" -msgstr "Registrar todos os dados lidos da rede" - -msgid "Log all data written to the network" -msgstr "Registrar todos os dados gravados na rede" - -msgid "Log the applying actions" -msgstr "Registrar as ações aplicadas" - -msgid "" -"Log the destination for each request Privoxy let through. See also 'Debug " -"1024'." -msgstr "" -"Registrar o destino para cada pedido que o Privoxy deixou passar. Consulte " -"também 'Debug 1024'." - -msgid "" -"Log the destination for requests Privoxy didn't let through, and the reason " -"why." -msgstr "" -"Registrar o destino para os pedidos que o Privoxy não deixou passar, e a " -"razão pela qual." - -msgid "Logging" -msgstr "Registrando (logging)" - -msgid "Main actions file" -msgstr "Arquivo principal de ações" - -msgid "Mandatory Input: No Data given!" -msgstr "Entrada obrigatória: Dados não foram informados!" - -msgid "Mandatory Input: No Directory given!" -msgstr "Entrada obrigatória: Nenhum Diretório foi informado!" - -msgid "Mandatory Input: No File given!" -msgstr "Entrada obrigatória: Nenhum Arquivo foi informado!" - -msgid "Mandatory Input: No Port given!" -msgstr "Entrada obrigatória: Nenhuma Porta foi informado!" - -msgid "Mandatory Input: No files given!" -msgstr "Entrada obrigatória: Nenhum Arquivo foi informado!" - -msgid "Mandatory Input: No valid IPv4 address or host given!" -msgstr "" -"Entrada obrigatória: Nenhum endereço IPv4 ou nome de equipamento válido foi " -"fornecido!" - -msgid "Mandatory Input: No valid IPv6 address given!" -msgstr "Entrada obrigatória: Nenhum endereço IPv6 válido foi informado!" - -msgid "Mandatory Input: No valid Port given!" -msgstr "Entrada obrigatória: Nenhuma porta válida foi informada!" - -msgid "Maximum number of client connections that will be served." -msgstr "O número máximo de conexões de cliente que será aceito." - -msgid "Maximum size (in KB) of the buffer for content filtering." -msgstr "Tamanho máximo (em KB) do buffer para filtragem de conteúdo." - -msgid "Miscellaneous" -msgstr "Diversos" - -msgid "NOT installed" -msgstr "NÃO instalado" - -msgid "No trailing '/', please." -msgstr "Sem '/' final, por favor." - -msgid "Non-fatal errors - *we highly recommended enabling this*" -msgstr "Erros não fatais - *é altamente recomendado ativar isto*" - -msgid "" -"Number of seconds after which a socket times out if no data is received." -msgstr "" -"Número de segundos após o qual uma conexão expira se nenhum dado for " -"recebido." - -msgid "" -"Number of seconds after which an open connection will no longer be reused." -msgstr "" -"Número de segundos após o qual uma conexão aberta deixará de ser reutilizada." - -msgid "" -"Only when using 'external filters', Privoxy has to create temporary files." -msgstr "" -"Somente quando for usado os \"filtros externos\". O Privoxy tem que criar " -"arquivos temporários." - -msgid "Please install current version !" -msgstr "Por favor, instale a versão atual!" - -msgid "Please press [Read] button" -msgstr "Por favor, pressione o botão [Ler]" - -msgid "Please read Privoxy manual for details!" -msgstr "Por favor, leia o manual do Privoxy para mais detalhes!" - -msgid "Please update to the current version!" -msgstr "Por favor, atualize para a versão atual!" - -msgid "Privoxy WEB proxy" -msgstr "Privoxy Web Proxy" - -msgid "" -"Privoxy can (and normally does) use a number of other files for additional " -"configuration, help and logging. This section of the configuration file " -"tells Privoxy where to find those other files." -msgstr "" -"Privoxy pode (e normalmente o faz) utilizar uma série de outros arquivos de " -"configuração, ajuda e de registros. Esta seção do arquivo de configuração " -"informa o Privoxy onde encontrar os outros arquivos." - -msgid "" -"Privoxy is a non-caching web proxy with advanced filtering capabilities for " -"enhancing privacy, modifying web page data and HTTP headers, controlling " -"access, and removing ads and other obnoxious Internet junk." -msgstr "" -"Privoxy é um proxy web sem cache com capacidades avançadas de filtragem para " -"aumentar a privacidade, modificar dados de páginas web e cabeçalhos HTTP, " -"controlar o acesso e remover anúncios e outras porcarias detestável da " -"Internet." - -msgid "Read / Reread log file" -msgstr "Ler / Ler novamente o arquivo de registros (log)" - -msgid "Show I/O status" -msgstr "Mostrar status de Entrada/Saída" - -msgid "Show each connection status" -msgstr "Mostrar cada estado de conexão" - -msgid "Show header parsing" -msgstr "Mostrar análise do cabeçalho" - -msgid "Software package '%s' is not installed." -msgstr "O pacote de software '%s' não está instalado." - -msgid "Software package '%s' is outdated." -msgstr "O pacote '%' está desatualizado." - -msgid "Start" -msgstr "Iniciar" - -msgid "Start / Stop" -msgstr "Iniciar / Parar" - -msgid "Start/Stop Privoxy WEB Proxy" -msgstr "Inicia / Para o Privoxy Web Proxy" - -msgid "Startup banner and warnings." -msgstr "Mensagens e avisos iniciais." - -msgid "Syntax:" -msgstr "Sintaxe:" - -msgid "Syntax: Client header names delimited by spaces." -msgstr "Sintaxe: nomes de cabeçalho do cliente delimitados por espaços." - -msgid "Syntax: target_pattern http_parent[:port]" -msgstr "Sintaxe: padrão_alvo http_superior[:porta]" - -msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]" -msgstr "Sintaxe: padrão_alvo proxy_socks[:porta] http_superior[:porta]" - -msgid "System" -msgstr "Sistema" - -msgid "" -"The actions file(s) to use. Multiple actionsfile lines are permitted, and " -"are in fact recommended!" -msgstr "" -"O(s) arquivo(s) ações a ser usado. Várias linhas no arquivo são permitidas, " -"e são, de fato, recomendadas!" - -msgid "" -"The address and TCP port on which Privoxy will listen for client requests." -msgstr "" -"O endereço e porta TCP em que Privoxy vai esperar por pedidos dos clientes." - -msgid "" -"The compression level that is passed to the zlib library when compressing " -"buffered content." -msgstr "" -"O nível de compressão que é passada para a biblioteca zlib ao comprimir o " -"conteúdo em buffer." - -msgid "" -"The directory where all logging takes place (i.e. where the logfile is " -"located)." -msgstr "" -"O diretório onde todos os registros ocorrem (ex: onde o arquivo de log está " -"localizado)." - -msgid "The directory where the other configuration files are located." -msgstr "O diretório onde os outros arquivos de configuração estão localizados." - -msgid "" -"The filter files contain content modification rules that use regular " -"expressions." -msgstr "" -"Os arquivos de filtro contêm regras de modificação de conteúdo que usam " -"expressões regulares." - -msgid "The hostname shown on the CGI pages." -msgstr "O nome da máquina mostrado nas páginas de CGI." - -msgid "The log file to use. File name, relative to log directory." -msgstr "" -"O arquivo de registros a ser usado. O nome do arquivo, relativo ao diretório " -"de log." - -msgid "The order in which client headers are sorted before forwarding them." -msgstr "" -"A ordem em que os cabeçalhos dos clientes são classificados antes de " -"encaminhá-los." - -msgid "" -"The status code Privoxy returns for pages blocked with +handle-as-empty-" -"document." -msgstr "" -"O código de status Privoxy retorna para páginas bloqueadas com +handle-as-" -"empty-document." - -msgid "" -"The trust mechanism is an experimental feature for building white-lists and " -"should be used with care." -msgstr "" -"O mecanismo de confiança é um recurso experimental para a construção de " -"listas de destinos confiáveis e deve ser usado com cuidado." - -msgid "" -"The value of this option only matters if the experimental trust mechanism " -"has been activated." -msgstr "" -"O valor desta opção só importa se o mecanismo de confiança experimental foi " -"ativado." - -msgid "" -"This option is only there for debugging purposes. It will drastically reduce " -"performance." -msgstr "" -"Esta opção só está lá para fins de depuração. Ele irá reduzir drasticamente " -"o desempenho." - -msgid "" -"This option will be removed in future releases as it has been obsoleted by " -"the more general header taggers." -msgstr "" -"Esta opção será removida em versões futuras, uma vez que ficou obsoleta " -"pelos marcadores de cabeçalho mais genéricos." - -msgid "" -"This tab controls the security-relevant aspects of Privoxy's configuration." -msgstr "" -"Esta guia controla os aspectos da configuração do Privoxy relevantes para a " -"segurança." - -msgid "" -"Through which SOCKS proxy (and optionally to which parent HTTP proxy) " -"specific requests should be routed." -msgstr "" -"Através de qual Proxy SOCKS (e, opcionalmente, para o qual proxy HTTP " -"superior) pedidos específicos devem ser encaminhados." - -msgid "To which parent HTTP proxy specific requests should be routed." -msgstr "" -"Para qual proxy HTTP superior os pedidos específicos devem ser encaminhados." - -msgid "User customizations" -msgstr "Personalizações do usuário" - -msgid "Value is not a number" -msgstr "O valor não é um número" - -msgid "Value not between 0 and 300" -msgstr "Valor não está entre 0 e 300" - -msgid "Value not between 0 and 9" -msgstr "Valor não está entre 0 e 9" - -msgid "Value not between 1 and 4096" -msgstr "Valor não entre 1 e 4096" - -msgid "Value not greater 0 or empty" -msgstr "Valor não é maior que 0 ou vazio" - -msgid "Value range 1 to 4096, no entry defaults to 4096" -msgstr "Faixa do valor de 1 até 4096. Se vazio, será 4096" - -msgid "Version" -msgstr "Versão" - -msgid "Version Information" -msgstr "Informação da Versão" - -msgid "Whether intercepted requests should be treated as valid." -msgstr "Se as solicitações interceptados deve ser tratadas como válidas." - -msgid "" -"Whether or not Privoxy recognizes special HTTP headers to change toggle " -"state." -msgstr "" -"Se o Privoxy deve reconhecer cabeçalhos HTTP especiais para mudar de " -"alternância do estado." - -msgid "Whether or not buffered content is compressed before delivery." -msgstr "Se o conteúdo em buffer é comprimido antes da entrega." - -msgid "" -"Whether or not outgoing connections that have been kept alive should be " -"shared between different incoming connections." -msgstr "" -"Se as conexões de saída que foram mantidas vivas devem ser compartilhadas " -"entre diferentes conexões de entrada." - -msgid "Whether or not pipelined requests should be served." -msgstr "Se os pedidos de pipeline deve ser aceitos." - -msgid "Whether or not proxy authentication through Privoxy should work." -msgstr "Se a autenticação de proxy através do Privoxy deve funcionar." - -msgid "Whether or not the web-based actions file editor may be used." -msgstr "Se o editor de arquivos de ações baseadas na web deve ser utilizado." - -msgid "Whether or not the web-based toggle feature may be used." -msgstr "Se deve ser usado o recurso de alternância baseado na web." - -msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected." -msgstr "" -"Se as solicitações para páginas CGI do Privoxy podem ser bloqueadas ou " -"redirecionadas." - -msgid "" -"Whether the CGI interface should stay compatible with broken HTTP clients." -msgstr "" -"Se a interface CGI deve se manter compatível com clientes HTTP mal " -"implementados." - -msgid "Whether to run only one server thread." -msgstr "Se deseja executar o servidor como apenas uma thread." - -msgid "Who can access what." -msgstr "Quem pode acessar o quê." - -msgid "installed" -msgstr "instalado" - -msgid "or higher" -msgstr "ou maior" - -msgid "required" -msgstr "necessário" diff --git a/package/luci/applications/luci-app-privoxy/po/sv/privoxy.po b/package/luci/applications/luci-app-privoxy/po/sv/privoxy.po deleted file mode 100644 index 14e47e190f..0000000000 --- a/package/luci/applications/luci-app-privoxy/po/sv/privoxy.po +++ /dev/null @@ -1,442 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "" -"A URL to be displayed in the error page that users will see if access to an " -"untrusted page is denied." -msgstr "" -"En URL som ska visas på felsidan som användare kommer se om tillgång till en " -"ej pålitlig sida nekas." - -msgid "" -"A URL to documentation about the local Privoxy setup, configuration or " -"policies." -msgstr "" - -msgid "A directory where Privoxy can create temporary files." -msgstr "En mapp där Privoxy kan skapa tillfälliga filer." - -msgid "Access Control" -msgstr "Åkomstkontroll" - -msgid "Actions that are applied to all sites and maybe overruled later on." -msgstr "" - -msgid "An alternative directory where the templates are loaded from." -msgstr "En alternativ mapp som mallar laddas från." - -msgid "An email address to reach the Privoxy administrator." -msgstr "En e-postadress för att nå Privoxy-administratören." - -msgid "" -"Assumed server-side keep-alive timeout (in seconds) if not specified by the " -"server." -msgstr "" - -msgid "Boot delay" -msgstr "" - -msgid "CGI user interface" -msgstr "CGI-användargränssnitt" - -msgid "Common Log Format" -msgstr "Vanliga loggformat" - -msgid "" -"Configure here the routing of HTTP requests through a chain of multiple " -"proxies. Note that parent proxies can severely decrease your privacy level. " -"Also specified here are SOCKS proxies." -msgstr "" - -msgid "Debug GIF de-animation" -msgstr "" - -msgid "Debug force feature" -msgstr "" - -msgid "Debug redirects" -msgstr "Felsök omdirigeringar" - -msgid "Debug regular expression filters" -msgstr "" - -msgid "Delay (in seconds) during system boot before Privoxy start" -msgstr "" - -msgid "Directory does not exist!" -msgstr "Mappen finns inte!" - -msgid "Disabled == Transparent Proxy Mode" -msgstr "Inaktiverad == " - -msgid "Documentation" -msgstr "" - -msgid "During delay ifup-events are not monitored !" -msgstr "" - -msgid "Enable proxy authentication forwarding" -msgstr "" - -msgid "" -"Enable/Disable autostart of Privoxy on system startup and interface events" -msgstr "" - -msgid "Enable/Disable filtering when Privoxy starts." -msgstr "Aktivera/Inaktivera filtrering när Privoxy startar." - -msgid "Enabled" -msgstr "Aktiverat" - -msgid "" -"Enabling this option is NOT recommended if there is no parent proxy that " -"requires authentication!" -msgstr "" -"Att aktivera det här alternativet är INTE rekommenderat om det inte finns " -"någon uppnbar proxy som kräver autentisering!" - -msgid "File '%s' not found inside Configuration Directory" -msgstr "Filen '%s' hittades inte inuti konfigurationsmappen" - -msgid "File not found or empty" -msgstr "Filen hittades inte eller så är den tom" - -msgid "Files and Directories" -msgstr "Filer och Mappar" - -msgid "For help use link at the relevant option" -msgstr "För hjälp använd länk vid relevant alternativ" - -msgid "Forwarding" -msgstr "Vidarebefordring" - -msgid "" -"If enabled, Privoxy hides the 'go there anyway' link. The user obviously " -"should not be able to bypass any blocks." -msgstr "" - -msgid "" -"If you intend to operate Privoxy for more users than just yourself, it might " -"be a good idea to let them know how to reach you, what you block and why you " -"do that, your policies, etc." -msgstr "" - -msgid "Invalid email address" -msgstr "Ogiltig e-postadress" - -msgid "It is NOT recommended for the casual user." -msgstr "Det är INTE rekommenderat för den vanliga användaren." - -msgid "Location of the Privoxy User Manual." -msgstr "Plats för Privoxy's användarmanual." - -msgid "Log File Viewer" -msgstr "Visare av loggfil" - -msgid "Log all data read from the network" -msgstr "Logga all läst data från nätverket" - -msgid "Log all data written to the network" -msgstr "Logga all data som skrivits till nätverket" - -msgid "Log the applying actions" -msgstr "Logga de verkställande handlingarna" - -msgid "" -"Log the destination for each request Privoxy let through. See also 'Debug " -"1024'." -msgstr "" - -msgid "" -"Log the destination for requests Privoxy didn't let through, and the reason " -"why." -msgstr "" - -msgid "Logging" -msgstr "Loggning" - -msgid "Main actions file" -msgstr "" - -msgid "Mandatory Input: No Data given!" -msgstr "Obligatorisk inmatning: Ingen data angavs!" - -msgid "Mandatory Input: No Directory given!" -msgstr "Obligatorisk inmatning: Ingen mapp angavs!" - -msgid "Mandatory Input: No File given!" -msgstr "Obligatorisk inmatning: Ingen fil angavs!" - -msgid "Mandatory Input: No Port given!" -msgstr "Obligatorisk inmatning: Ingen port angavs!" - -msgid "Mandatory Input: No files given!" -msgstr "Obligatorisk inmatning: Inga filer angavs" - -msgid "Mandatory Input: No valid IPv4 address or host given!" -msgstr "Obligatorisk inmatning: Ingen giltig IPv4-adress eller värd angavs!" - -msgid "Mandatory Input: No valid IPv6 address given!" -msgstr "Obligatorisk inmatning: Ingen giltig IPv6-adress angavs!" - -msgid "Mandatory Input: No valid Port given!" -msgstr "Obligatorisk inmatning: Ingen giltig port angavs!" - -msgid "Maximum number of client connections that will be served." -msgstr "Maximalt antal klientanslutningar som blir betjänade." - -msgid "Maximum size (in KB) of the buffer for content filtering." -msgstr "" - -msgid "Miscellaneous" -msgstr "Diverse" - -msgid "NOT installed" -msgstr "" - -msgid "No trailing '/', please." -msgstr "Vänligen, inget eftersläpande '/'" - -msgid "Non-fatal errors - *we highly recommended enabling this*" -msgstr "" -"Icke-dödliga fel - *vi rekommenderar verkligen att man aktiverar det här*" - -msgid "" -"Number of seconds after which a socket times out if no data is received." -msgstr "" - -msgid "" -"Number of seconds after which an open connection will no longer be reused." -msgstr "" - -msgid "" -"Only when using 'external filters', Privoxy has to create temporary files." -msgstr "" - -msgid "Please install current version !" -msgstr "" - -msgid "Please press [Read] button" -msgstr "Vänligen tryck på [Läs]-knappen" - -msgid "Please read Privoxy manual for details!" -msgstr "Vänligen läs Privoxy-manualen för detaljer!" - -msgid "Please update to the current version!" -msgstr "Vänligen uppdatera till den nuvarande versionen!" - -msgid "Privoxy WEB proxy" -msgstr "WEB-proxyn Privoxy" - -msgid "" -"Privoxy can (and normally does) use a number of other files for additional " -"configuration, help and logging. This section of the configuration file " -"tells Privoxy where to find those other files." -msgstr "" - -msgid "" -"Privoxy is a non-caching web proxy with advanced filtering capabilities for " -"enhancing privacy, modifying web page data and HTTP headers, controlling " -"access, and removing ads and other obnoxious Internet junk." -msgstr "" - -msgid "Read / Reread log file" -msgstr "Läs / Läs om loggfil" - -msgid "Show I/O status" -msgstr "Visa I/O-status" - -msgid "Show each connection status" -msgstr "Visa varje anslutnings status" - -msgid "Show header parsing" -msgstr "" - -msgid "Software package '%s' is not installed." -msgstr "" - -msgid "Software package '%s' is outdated." -msgstr "" - -msgid "Start" -msgstr "Starta" - -msgid "Start / Stop" -msgstr "Starta / Stoppa" - -msgid "Start/Stop Privoxy WEB Proxy" -msgstr "Starta/Stoppa Privoxy WEB-proxy" - -msgid "Startup banner and warnings." -msgstr "" - -msgid "Syntax:" -msgstr "Syntax:" - -msgid "Syntax: Client header names delimited by spaces." -msgstr "" - -msgid "Syntax: target_pattern http_parent[:port]" -msgstr "" - -msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]" -msgstr "" - -msgid "System" -msgstr "" - -msgid "" -"The actions file(s) to use. Multiple actionsfile lines are permitted, and " -"are in fact recommended!" -msgstr "" - -msgid "" -"The address and TCP port on which Privoxy will listen for client requests." -msgstr "" - -msgid "" -"The compression level that is passed to the zlib library when compressing " -"buffered content." -msgstr "" - -msgid "" -"The directory where all logging takes place (i.e. where the logfile is " -"located)." -msgstr "" - -msgid "The directory where the other configuration files are located." -msgstr "" - -msgid "" -"The filter files contain content modification rules that use regular " -"expressions." -msgstr "" - -msgid "The hostname shown on the CGI pages." -msgstr "Värdnamnet som visas på CGI-sidor." - -msgid "The log file to use. File name, relative to log directory." -msgstr "Loggfilen att använda. Filnamn, relativt till logg-mappen." - -msgid "The order in which client headers are sorted before forwarding them." -msgstr "" - -msgid "" -"The status code Privoxy returns for pages blocked with +handle-as-empty-" -"document." -msgstr "" - -msgid "" -"The trust mechanism is an experimental feature for building white-lists and " -"should be used with care." -msgstr "" - -msgid "" -"The value of this option only matters if the experimental trust mechanism " -"has been activated." -msgstr "" - -msgid "" -"This option is only there for debugging purposes. It will drastically reduce " -"performance." -msgstr "" - -msgid "" -"This option will be removed in future releases as it has been obsoleted by " -"the more general header taggers." -msgstr "" - -msgid "" -"This tab controls the security-relevant aspects of Privoxy's configuration." -msgstr "" - -msgid "" -"Through which SOCKS proxy (and optionally to which parent HTTP proxy) " -"specific requests should be routed." -msgstr "" - -msgid "To which parent HTTP proxy specific requests should be routed." -msgstr "" - -msgid "User customizations" -msgstr "Anpassningar för användare" - -msgid "Value is not a number" -msgstr "Värdet är inte ett nummer" - -msgid "Value not between 0 and 300" -msgstr "" - -msgid "Value not between 0 and 9" -msgstr "Värdet är inte mellan 0 och 9" - -msgid "Value not between 1 and 4096" -msgstr "Värdet är inte mellan 1 och 4096" - -msgid "Value not greater 0 or empty" -msgstr "Värdet är inte större än 0 eller tomt" - -msgid "Value range 1 to 4096, no entry defaults to 4096" -msgstr "" - -msgid "Version" -msgstr "Version" - -msgid "Version Information" -msgstr "Information om versionen" - -msgid "Whether intercepted requests should be treated as valid." -msgstr "" - -msgid "" -"Whether or not Privoxy recognizes special HTTP headers to change toggle " -"state." -msgstr "" - -msgid "Whether or not buffered content is compressed before delivery." -msgstr "" - -msgid "" -"Whether or not outgoing connections that have been kept alive should be " -"shared between different incoming connections." -msgstr "" - -msgid "Whether or not pipelined requests should be served." -msgstr "" - -msgid "Whether or not proxy authentication through Privoxy should work." -msgstr "" - -msgid "Whether or not the web-based actions file editor may be used." -msgstr "" - -msgid "Whether or not the web-based toggle feature may be used." -msgstr "" - -msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected." -msgstr "" - -msgid "" -"Whether the CGI interface should stay compatible with broken HTTP clients." -msgstr "" - -msgid "Whether to run only one server thread." -msgstr "Om det endast ska köras en server-tråd." - -msgid "Who can access what." -msgstr "Vem som kan komma åt vad." - -msgid "installed" -msgstr "installerad" - -msgid "or higher" -msgstr "eller högre" - -msgid "required" -msgstr "krävs" - -#~ msgid "Local Set-up" -#~ msgstr "Lokal installation" - -#~ msgid "Software update required" -#~ msgstr "Uppdatering av mjukvara krävs" diff --git a/package/luci/applications/luci-app-privoxy/po/templates/privoxy.pot b/package/luci/applications/luci-app-privoxy/po/templates/privoxy.pot deleted file mode 100644 index 2e44ea8b7c..0000000000 --- a/package/luci/applications/luci-app-privoxy/po/templates/privoxy.pot +++ /dev/null @@ -1,431 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "" -"A URL to be displayed in the error page that users will see if access to an " -"untrusted page is denied." -msgstr "" - -msgid "" -"A URL to documentation about the local Privoxy setup, configuration or " -"policies." -msgstr "" - -msgid "A directory where Privoxy can create temporary files." -msgstr "" - -msgid "Access Control" -msgstr "" - -msgid "Actions that are applied to all sites and maybe overruled later on." -msgstr "" - -msgid "An alternative directory where the templates are loaded from." -msgstr "" - -msgid "An email address to reach the Privoxy administrator." -msgstr "" - -msgid "" -"Assumed server-side keep-alive timeout (in seconds) if not specified by the " -"server." -msgstr "" - -msgid "Boot delay" -msgstr "" - -msgid "CGI user interface" -msgstr "" - -msgid "Common Log Format" -msgstr "" - -msgid "" -"Configure here the routing of HTTP requests through a chain of multiple " -"proxies. Note that parent proxies can severely decrease your privacy level. " -"Also specified here are SOCKS proxies." -msgstr "" - -msgid "Debug GIF de-animation" -msgstr "" - -msgid "Debug force feature" -msgstr "" - -msgid "Debug redirects" -msgstr "" - -msgid "Debug regular expression filters" -msgstr "" - -msgid "Delay (in seconds) during system boot before Privoxy start" -msgstr "" - -msgid "Directory does not exist!" -msgstr "" - -msgid "Disabled == Transparent Proxy Mode" -msgstr "" - -msgid "Documentation" -msgstr "" - -msgid "During delay ifup-events are not monitored !" -msgstr "" - -msgid "Enable proxy authentication forwarding" -msgstr "" - -msgid "" -"Enable/Disable autostart of Privoxy on system startup and interface events" -msgstr "" - -msgid "Enable/Disable filtering when Privoxy starts." -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enabling this option is NOT recommended if there is no parent proxy that " -"requires authentication!" -msgstr "" - -msgid "File '%s' not found inside Configuration Directory" -msgstr "" - -msgid "File not found or empty" -msgstr "" - -msgid "Files and Directories" -msgstr "" - -msgid "For help use link at the relevant option" -msgstr "" - -msgid "Forwarding" -msgstr "" - -msgid "" -"If enabled, Privoxy hides the 'go there anyway' link. The user obviously " -"should not be able to bypass any blocks." -msgstr "" - -msgid "" -"If you intend to operate Privoxy for more users than just yourself, it might " -"be a good idea to let them know how to reach you, what you block and why you " -"do that, your policies, etc." -msgstr "" - -msgid "Invalid email address" -msgstr "" - -msgid "It is NOT recommended for the casual user." -msgstr "" - -msgid "Location of the Privoxy User Manual." -msgstr "" - -msgid "Log File Viewer" -msgstr "" - -msgid "Log all data read from the network" -msgstr "" - -msgid "Log all data written to the network" -msgstr "" - -msgid "Log the applying actions" -msgstr "" - -msgid "" -"Log the destination for each request Privoxy let through. See also 'Debug " -"1024'." -msgstr "" - -msgid "" -"Log the destination for requests Privoxy didn't let through, and the reason " -"why." -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Main actions file" -msgstr "" - -msgid "Mandatory Input: No Data given!" -msgstr "" - -msgid "Mandatory Input: No Directory given!" -msgstr "" - -msgid "Mandatory Input: No File given!" -msgstr "" - -msgid "Mandatory Input: No Port given!" -msgstr "" - -msgid "Mandatory Input: No files given!" -msgstr "" - -msgid "Mandatory Input: No valid IPv4 address or host given!" -msgstr "" - -msgid "Mandatory Input: No valid IPv6 address given!" -msgstr "" - -msgid "Mandatory Input: No valid Port given!" -msgstr "" - -msgid "Maximum number of client connections that will be served." -msgstr "" - -msgid "Maximum size (in KB) of the buffer for content filtering." -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "No trailing '/', please." -msgstr "" - -msgid "Non-fatal errors - *we highly recommended enabling this*" -msgstr "" - -msgid "" -"Number of seconds after which a socket times out if no data is received." -msgstr "" - -msgid "" -"Number of seconds after which an open connection will no longer be reused." -msgstr "" - -msgid "" -"Only when using 'external filters', Privoxy has to create temporary files." -msgstr "" - -msgid "Please install current version !" -msgstr "" - -msgid "Please press [Read] button" -msgstr "" - -msgid "Please read Privoxy manual for details!" -msgstr "" - -msgid "Please update to the current version!" -msgstr "" - -msgid "Privoxy WEB proxy" -msgstr "" - -msgid "" -"Privoxy can (and normally does) use a number of other files for additional " -"configuration, help and logging. This section of the configuration file " -"tells Privoxy where to find those other files." -msgstr "" - -msgid "" -"Privoxy is a non-caching web proxy with advanced filtering capabilities for " -"enhancing privacy, modifying web page data and HTTP headers, controlling " -"access, and removing ads and other obnoxious Internet junk." -msgstr "" - -msgid "Read / Reread log file" -msgstr "" - -msgid "Show I/O status" -msgstr "" - -msgid "Show each connection status" -msgstr "" - -msgid "Show header parsing" -msgstr "" - -msgid "Software package '%s' is not installed." -msgstr "" - -msgid "Software package '%s' is outdated." -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Start/Stop Privoxy WEB Proxy" -msgstr "" - -msgid "Startup banner and warnings." -msgstr "" - -msgid "Syntax:" -msgstr "" - -msgid "Syntax: Client header names delimited by spaces." -msgstr "" - -msgid "Syntax: target_pattern http_parent[:port]" -msgstr "" - -msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]" -msgstr "" - -msgid "System" -msgstr "" - -msgid "" -"The actions file(s) to use. Multiple actionsfile lines are permitted, and " -"are in fact recommended!" -msgstr "" - -msgid "" -"The address and TCP port on which Privoxy will listen for client requests." -msgstr "" - -msgid "" -"The compression level that is passed to the zlib library when compressing " -"buffered content." -msgstr "" - -msgid "" -"The directory where all logging takes place (i.e. where the logfile is " -"located)." -msgstr "" - -msgid "The directory where the other configuration files are located." -msgstr "" - -msgid "" -"The filter files contain content modification rules that use regular " -"expressions." -msgstr "" - -msgid "The hostname shown on the CGI pages." -msgstr "" - -msgid "The log file to use. File name, relative to log directory." -msgstr "" - -msgid "The order in which client headers are sorted before forwarding them." -msgstr "" - -msgid "" -"The status code Privoxy returns for pages blocked with +handle-as-empty-" -"document." -msgstr "" - -msgid "" -"The trust mechanism is an experimental feature for building white-lists and " -"should be used with care." -msgstr "" - -msgid "" -"The value of this option only matters if the experimental trust mechanism " -"has been activated." -msgstr "" - -msgid "" -"This option is only there for debugging purposes. It will drastically reduce " -"performance." -msgstr "" - -msgid "" -"This option will be removed in future releases as it has been obsoleted by " -"the more general header taggers." -msgstr "" - -msgid "" -"This tab controls the security-relevant aspects of Privoxy's configuration." -msgstr "" - -msgid "" -"Through which SOCKS proxy (and optionally to which parent HTTP proxy) " -"specific requests should be routed." -msgstr "" - -msgid "To which parent HTTP proxy specific requests should be routed." -msgstr "" - -msgid "User customizations" -msgstr "" - -msgid "Value is not a number" -msgstr "" - -msgid "Value not between 0 and 300" -msgstr "" - -msgid "Value not between 0 and 9" -msgstr "" - -msgid "Value not between 1 and 4096" -msgstr "" - -msgid "Value not greater 0 or empty" -msgstr "" - -msgid "Value range 1 to 4096, no entry defaults to 4096" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "Whether intercepted requests should be treated as valid." -msgstr "" - -msgid "" -"Whether or not Privoxy recognizes special HTTP headers to change toggle " -"state." -msgstr "" - -msgid "Whether or not buffered content is compressed before delivery." -msgstr "" - -msgid "" -"Whether or not outgoing connections that have been kept alive should be " -"shared between different incoming connections." -msgstr "" - -msgid "Whether or not pipelined requests should be served." -msgstr "" - -msgid "Whether or not proxy authentication through Privoxy should work." -msgstr "" - -msgid "Whether or not the web-based actions file editor may be used." -msgstr "" - -msgid "Whether or not the web-based toggle feature may be used." -msgstr "" - -msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected." -msgstr "" - -msgid "" -"Whether the CGI interface should stay compatible with broken HTTP clients." -msgstr "" - -msgid "Whether to run only one server thread." -msgstr "" - -msgid "Who can access what." -msgstr "" - -msgid "installed" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "required" -msgstr "" diff --git a/package/luci/applications/luci-app-privoxy/po/zh-cn/privoxy.po b/package/luci/applications/luci-app-privoxy/po/zh-cn/privoxy.po deleted file mode 100644 index efbad08a56..0000000000 --- a/package/luci/applications/luci-app-privoxy/po/zh-cn/privoxy.po +++ /dev/null @@ -1,465 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-privoxy\n" -"POT-Creation-Date: 2015-06-10 20:16+0100\n" -"PO-Revision-Date: 2017-01-05 18:01+0800\n" -"Last-Translator: maz-1 \n" -"Language-Team: \n" -"Language: zh_CN\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.11\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "" -"A URL to be displayed in the error page that users will see if access to an " -"untrusted page is denied." -msgstr "当用户试图访问不受信任的页面时,错误页面所显示的URL。" - -msgid "" -"A URL to documentation about the local Privoxy setup, configuration or " -"policies." -msgstr "指向 Privoxy 安装、设置和规则说明文档的 URL" - -msgid "A directory where Privoxy can create temporary files." -msgstr "Privoxy 存放临时文件的目录。" - -msgid "Access Control" -msgstr "访问控制" - -msgid "Actions that are applied to all sites and maybe overruled later on." -msgstr "作用在所有站点上的规则,可能被后面的规则覆盖。" - -msgid "An alternative directory where the templates are loaded from." -msgstr "可选的目录,放在里面的模板会被加载。" - -msgid "An email address to reach the Privoxy administrator." -msgstr "用于联系 Privoxy 管理员的邮箱地址。" - -msgid "" -"Assumed server-side keep-alive timeout (in seconds) if not specified by the " -"server." -msgstr "当服务端没有指定超时时间时假定的超时时间(单位:秒)。" - -msgid "Boot delay" -msgstr "启动延时" - -msgid "CGI user interface" -msgstr "CGI 用户界面" - -msgid "Common Log Format" -msgstr "通用日志格式" - -msgid "" -"Configure here the routing of HTTP requests through a chain of multiple " -"proxies. Note that parent proxies can severely decrease your privacy level. " -"Also specified here are SOCKS proxies." -msgstr "" -"在这里设置 HTTP 请求所经过的多重代理链。注意:父级代理可能严重降低您的隐私安" -"全度。在这里还可以设置 SOCKS 代理。" - -msgid "Debug GIF de-animation" -msgstr "GIF动画日志" - -msgid "Debug force feature" -msgstr "Force feature 日志" - -msgid "Debug redirects" -msgstr "重定向日志" - -msgid "Debug regular expression filters" -msgstr "正则表达式日志" - -msgid "Delay (in seconds) during system boot before Privoxy start" -msgstr "Privoxy 自启动延迟时间(单位:秒)" - -msgid "Directory does not exist!" -msgstr "目录不存在!" - -msgid "Disabled == Transparent Proxy Mode" -msgstr "禁用 == 透明代理模式" - -msgid "Documentation" -msgstr "记录信息" - -msgid "During delay ifup-events are not monitored !" -msgstr "在延迟期间无法检测到 ifup 事件!" - -msgid "Enable proxy authentication forwarding" -msgstr "允许转发代理认证" - -msgid "" -"Enable/Disable autostart of Privoxy on system startup and interface events" -msgstr "开启/关闭 Privoxy 在系统启动或接口事件时自动启动。" - -msgid "Enable/Disable filtering when Privoxy starts." -msgstr "Privoxy 启动时开启/关闭过滤。" - -msgid "Enabled" -msgstr "已开启" - -msgid "" -"Enabling this option is NOT recommended if there is no parent proxy that " -"requires authentication!" -msgstr "如果没有需要认证的父级代理时,不推荐开启这个选项!" - -msgid "File '%s' not found inside Configuration Directory" -msgstr "在设置目录中未找到文件 '%S'!" - -msgid "File not found or empty" -msgstr "文件不存在或为空" - -msgid "Files and Directories" -msgstr "文件和目录" - -msgid "For help use link at the relevant option" -msgstr "点击相应选项的连接可获取帮助。" - -msgid "Forwarding" -msgstr "转发" - -msgid "" -"If enabled, Privoxy hides the 'go there anyway' link. The user obviously " -"should not be able to bypass any blocks." -msgstr "如果启用,Privoxy 会隐藏 'go there anyway' 链接,用户就不能绕过屏蔽。" - -msgid "" -"If you intend to operate Privoxy for more users than just yourself, it might " -"be a good idea to let them know how to reach you, what you block and why you " -"do that, your policies, etc." -msgstr "" -"如果除了您还有其他用户使用 Privoxy 连接,最好让他们知道如何联系您,您屏蔽什" -"么,您为什么这样做,您的政策等等。" - -msgid "Invalid email address" -msgstr "邮箱地址无效" - -msgid "It is NOT recommended for the casual user." -msgstr "不推荐新手使用。" - -msgid "Location of the Privoxy User Manual." -msgstr "Privoxy 用户手册位置" - -msgid "Log File Viewer" -msgstr "日志查看器" - -msgid "Log all data read from the network" -msgstr "记录所有接收的网络数据" - -msgid "Log all data written to the network" -msgstr "记录所有发送的网络数据" - -msgid "Log the applying actions" -msgstr "记录配置保存动作" - -msgid "" -"Log the destination for each request Privoxy let through. See also 'Debug " -"1024'." -msgstr "记录 Privoxy 允许的所有请求。另请参考 'Debug 1024'。" - -msgid "" -"Log the destination for requests Privoxy didn't let through, and the reason " -"why." -msgstr "记录 Privoxy 拒绝的请求目标以及拒绝原因。" - -msgid "Logging" -msgstr "日志" - -msgid "Main actions file" -msgstr "主要规则文件" - -msgid "Mandatory Input: No Data given!" -msgstr "必需选项: 没有设置数据!" - -msgid "Mandatory Input: No Directory given!" -msgstr "必需选项: 没有设置目录!" - -msgid "Mandatory Input: No File given!" -msgstr "必需选项: 没有设置文件!" - -msgid "Mandatory Input: No Port given!" -msgstr "必需选项: 没有设置端口!" - -msgid "Mandatory Input: No files given!" -msgstr "必需选项: 没有设置文件!" - -msgid "Mandatory Input: No valid IPv4 address or host given!" -msgstr "必需选项: 没有设置有效的IPV4地址或者主机!" - -msgid "Mandatory Input: No valid IPv6 address given!" -msgstr "必需选项: 没有设置有效的IPV6地址!" - -msgid "Mandatory Input: No valid Port given!" -msgstr "必需选项: 没有设置有效的端口!" - -msgid "Maximum number of client connections that will be served." -msgstr "客户端数量上限。" - -msgid "Maximum size (in KB) of the buffer for content filtering." -msgstr "内容过滤的最大缓冲(单位:KB)。" - -msgid "Miscellaneous" -msgstr "杂项" - -msgid "NOT installed" -msgstr "未安装" - -msgid "No trailing '/', please." -msgstr "路径结尾不要加 '/' 。" - -msgid "Non-fatal errors - *we highly recommended enabling this*" -msgstr "非致命性错误 - * 强烈建议开启 *" - -msgid "" -"Number of seconds after which a socket times out if no data is received." -msgstr "Socket 连接未收到数据的超时时间。" - -msgid "" -"Number of seconds after which an open connection will no longer be reused." -msgstr "开放的连接不再重复使用的超时时间。" - -msgid "" -"Only when using 'external filters', Privoxy has to create temporary files." -msgstr "只有使用外置规则时,Privoxy 才需要创建临时文件。" - -msgid "Please install current version !" -msgstr "请安装当前版本!" - -msgid "Please press [Read] button" -msgstr "请点击 [读取] 按钮" - -msgid "Please read Privoxy manual for details!" -msgstr "请阅读 Privoxy 手册以了解详情!" - -msgid "Please update to the current version!" -msgstr "请升级到当前版本!" - -msgid "Privoxy WEB proxy" -msgstr "Privoxy 网络代理" - -msgid "" -"Privoxy can (and normally does) use a number of other files for additional " -"configuration, help and logging. This section of the configuration file " -"tells Privoxy where to find those other files." -msgstr "" -"Privoxy 可以使用其他一些文件用于附加设置,帮助和日志。这个区域用来告诉 " -"Privoxy 从哪里找到这些文件。" - -msgid "" -"Privoxy is a non-caching web proxy with advanced filtering capabilities for " -"enhancing privacy, modifying web page data and HTTP headers, controlling " -"access, and removing ads and other obnoxious Internet junk." -msgstr "" -"Privoxy 是一个无缓存的网络代理,具有高级过滤功能,能够修改网页数据和 HTTP 请" -"求头,控制访问,移除广告等。" - -msgid "Read / Reread log file" -msgstr "读取/刷新日志文件" - -msgid "Show I/O status" -msgstr "显示 I/O 状态" - -msgid "Show each connection status" -msgstr "显示每个连接的状态" - -msgid "Show header parsing" -msgstr "显示请求头 解析" - -msgid "Software package '%s' is not installed." -msgstr "软件包 '%s' 未安装" - -msgid "Software package '%s' is outdated." -msgstr "软件包 '%s' 已过时" - -msgid "Start" -msgstr "启动" - -msgid "Start / Stop" -msgstr "启动 / 停止" - -msgid "Start/Stop Privoxy WEB Proxy" -msgstr "启动/停止 Privoxy 网络代理" - -msgid "Startup banner and warnings." -msgstr "启动标语和警告。" - -msgid "Syntax:" -msgstr "格式:" - -msgid "Syntax: Client header names delimited by spaces." -msgstr "格式: 由空格分隔的客户端请求头名称。" - -msgid "Syntax: target_pattern http_parent[:port]" -msgstr "格式: target_pattern http_parent[:port]" - -msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]" -msgstr "格式: target_pattern socks_proxy[:port] http_parent[:port]" - -msgid "System" -msgstr "系统" - -msgid "" -"The actions file(s) to use. Multiple actionsfile lines are permitted, and " -"are in fact recommended!" -msgstr "所使用的规则文件。允许并且推荐使用多个规则文件。" - -msgid "" -"The address and TCP port on which Privoxy will listen for client requests." -msgstr "Privoxy 接收客户端请求时监听的地址和 TCP 端口。" - -msgid "" -"The compression level that is passed to the zlib library when compressing " -"buffered content." -msgstr "使用 zlib 压缩缓冲内容时的压缩级别。" - -msgid "" -"The directory where all logging takes place (i.e. where the logfile is " -"located)." -msgstr "所有日志所在的目录。" - -msgid "The directory where the other configuration files are located." -msgstr "其他设置文件所在的目录。" - -msgid "" -"The filter files contain content modification rules that use regular " -"expressions." -msgstr "过滤文件包含了使用正则表达式编写的内容修改规则" - -msgid "The hostname shown on the CGI pages." -msgstr "CGI页面显示的主机名。" - -msgid "The log file to use. File name, relative to log directory." -msgstr "日志文件名称,与日志路径相对。" - -msgid "The order in which client headers are sorted before forwarding them." -msgstr "转发数据前,客户端请求头的排序。" - -msgid "" -"The status code Privoxy returns for pages blocked with +handle-as-empty-" -"document." -msgstr "" -"当页面因为 handle-as-empty-document 规则被阻止时返回的状态码(选上为 200 OK," -"不选上为 403 Forbidden)" - -msgid "" -"The trust mechanism is an experimental feature for building white-lists and " -"should be used with care." -msgstr "信任机制是一个实验性的白名单特性,使用时应小心。" - -msgid "" -"The value of this option only matters if the experimental trust mechanism " -"has been activated." -msgstr "只有开启了信任机制时这个选项的值才有效" - -msgid "" -"This option is only there for debugging purposes. It will drastically reduce " -"performance." -msgstr "这个选项仅用于调试,开启后会极大地降低性能。" - -msgid "" -"This option will be removed in future releases as it has been obsoleted by " -"the more general header taggers." -msgstr "这个选项在以后的版本中将被移除,因为它被 header taggers 所取代了。" - -msgid "" -"This tab controls the security-relevant aspects of Privoxy's configuration." -msgstr "这个标签用于设置与安全相关的 Privoxy 选项。" - -msgid "" -"Through which SOCKS proxy (and optionally to which parent HTTP proxy) " -"specific requests should be routed." -msgstr "" -"指定的请求应该通过哪一个 SOCKS 代理(并且通过哪一个 HTTP 父代理,可选)" - -msgid "To which parent HTTP proxy specific requests should be routed." -msgstr "请求应转发至哪一个父级 HTTP 代理。" - -msgid "User customizations" -msgstr "用户自定义" - -msgid "Value is not a number" -msgstr "输入值不是数字" - -msgid "Value not between 0 and 300" -msgstr "输入值不在0和300之间" - -msgid "Value not between 0 and 9" -msgstr "输入值不在0和9之间" - -msgid "Value not between 1 and 4096" -msgstr "输入值不在1和4096之间" - -msgid "Value not greater 0 or empty" -msgstr "输入值为空或者不是大于零。" - -msgid "Value range 1 to 4096, no entry defaults to 4096" -msgstr "输入值为1到4096,默认为4096" - -msgid "Version" -msgstr "版本" - -msgid "Version Information" -msgstr "版本信息" - -msgid "Whether intercepted requests should be treated as valid." -msgstr "被拦截的请求是否应被当作有效的。" - -msgid "" -"Whether or not Privoxy recognizes special HTTP headers to change toggle " -"state." -msgstr "Privoxy 是否识别特殊的 HTTP 请求头以切换状态。" - -msgid "Whether or not buffered content is compressed before delivery." -msgstr "缓冲内容在传递之前是否压缩。" - -msgid "" -"Whether or not outgoing connections that have been kept alive should be " -"shared between different incoming connections." -msgstr "持久出站连接是否应在不同的入站连接之间共享。" - -msgid "Whether or not pipelined requests should be served." -msgstr "是否处理管道化的请求。" - -msgid "Whether or not proxy authentication through Privoxy should work." -msgstr "是否可以通过 Privoxy 进行代理验证。" - -msgid "Whether or not the web-based actions file editor may be used." -msgstr "是否使用基于网页的规则编辑器。" - -msgid "Whether or not the web-based toggle feature may be used." -msgstr "是否启用基于网页的切换功能。" - -msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected." -msgstr "访问 Privoxy CGI 页面的请求是否可以被拦截或重定向。" - -msgid "" -"Whether the CGI interface should stay compatible with broken HTTP clients." -msgstr "CGI 界面是否应兼容过时的HTTP客户端。" - -msgid "Whether to run only one server thread." -msgstr "是否只运行一个服务线程。" - -msgid "Who can access what." -msgstr "谁可以访问什么。" - -msgid "installed" -msgstr "已安装" - -msgid "or higher" -msgstr "或更高" - -msgid "required" -msgstr "需要" - -#~ msgid "Local Set-up" -#~ msgstr "本地设置" - -#~ msgid "Software update required" -#~ msgstr "需要升级软件" - -#~ msgid "" -#~ "The currently installed 'privoxy' package is not supported by LuCI " -#~ "application." -#~ msgstr "目前安装的privoxy版本不被luci支持。" diff --git a/package/luci/applications/luci-app-privoxy/root/etc/uci-defaults/40_luci-privoxy b/package/luci/applications/luci-app-privoxy/root/etc/uci-defaults/40_luci-privoxy deleted file mode 100755 index 3405479b54..0000000000 --- a/package/luci/applications/luci-app-privoxy/root/etc/uci-defaults/40_luci-privoxy +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# no longer needed for "Save and Apply" to restart privoxy -# luci-app-privoxy calls /etc/init.d/privoxy reload -uci -q batch <<-EOF >/dev/null - delete ucitrack.@privoxy[-1] - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache - -exit 0 diff --git a/package/luci/applications/luci-app-qos/Makefile b/package/luci/applications/luci-app-qos/Makefile deleted file mode 100644 index fd12557453..0000000000 --- a/package/luci/applications/luci-app-qos/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Quality of Service configuration module -LUCI_DEPENDS:=+qos-scripts - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-qos/luasrc/controller/qos.lua b/package/luci/applications/luci-app-qos/luasrc/controller/qos.lua deleted file mode 100644 index 250a0392f7..0000000000 --- a/package/luci/applications/luci-app-qos/luasrc/controller/qos.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.qos", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/qos") then - return - end - - local page - - page = entry({"admin", "network", "qos"}, cbi("qos/qos"), _("QoS")) - page.dependent = true -end diff --git a/package/luci/applications/luci-app-qos/luasrc/model/cbi/qos/qos.lua b/package/luci/applications/luci-app-qos/luasrc/model/cbi/qos/qos.lua deleted file mode 100644 index 177b17b07e..0000000000 --- a/package/luci/applications/luci-app-qos/luasrc/model/cbi/qos/qos.lua +++ /dev/null @@ -1,81 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local wa = require "luci.tools.webadmin" -local fs = require "nixio.fs" - -m = Map("qos", translate("Quality of Service"), - translate("With QoS you " .. - "can prioritize network traffic selected by addresses, " .. - "ports or services.")) - -s = m:section(TypedSection, "interface", translate("Interfaces")) -s.addremove = true -s.anonymous = false - -e = s:option(Flag, "enabled", translate("Enable")) -e.rmempty = false - -c = s:option(ListValue, "classgroup", translate("Classification group")) -c:value("Default", translate("default")) -c.default = "Default" - -s:option(Flag, "overhead", translate("Calculate overhead")) - -s:option(Flag, "halfduplex", translate("Half-duplex")) - -dl = s:option(Value, "download", translate("Download speed (kbit/s)")) -dl.datatype = "and(uinteger,min(1))" - -ul = s:option(Value, "upload", translate("Upload speed (kbit/s)")) -ul.datatype = "and(uinteger,min(1))" - -s = m:section(TypedSection, "classify", translate("Classification Rules")) -s.template = "cbi/tblsection" -s.anonymous = true -s.addremove = true -s.sortable = true - -t = s:option(ListValue, "target", translate("Target")) -t:value("Priority", translate("priority")) -t:value("Express", translate("express")) -t:value("Normal", translate("normal")) -t:value("Bulk", translate("low")) - -local uci = require "luci.model.uci" -uci.cursor():foreach("qos", "class", - function (section) - local n = section[".name"] - if string.sub(n,-string.len("_down"))~="_down" then - t:value(n) - end - end) - -t.default = "Normal" - -srch = s:option(Value, "srchost", translate("Source host")) -srch.rmempty = true -srch:value("", translate("all")) -wa.cbi_add_knownips(srch) - -dsth = s:option(Value, "dsthost", translate("Destination host")) -dsth.rmempty = true -dsth:value("", translate("all")) -wa.cbi_add_knownips(dsth) - -p = s:option(Value, "proto", translate("Protocol")) -p:value("", translate("all")) -p:value("tcp", "TCP") -p:value("udp", "UDP") -p:value("icmp", "ICMP") -p.rmempty = true - -ports = s:option(Value, "ports", translate("Ports")) -ports.rmempty = true -ports:value("", translate("all")) - -bytes = s:option(Value, "connbytes", translate("Number of bytes")) - -comment = s:option(Value, "comment", translate("Comment")) - -return m diff --git a/package/luci/applications/luci-app-qos/po/ca/qos.po b/package/luci/applications/luci-app-qos/po/ca/qos.po deleted file mode 100644 index e1430f1ad3..0000000000 --- a/package/luci/applications/luci-app-qos/po/ca/qos.po +++ /dev/null @@ -1,122 +0,0 @@ -# qos.pot -# generated from ./applications/luci-qos/luasrc/i18n/qos.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2014-07-17 23:39+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -#, fuzzy -msgid "Calculate overhead" -msgstr "Calcula càrrega (overhead)" - -msgid "Classification Rules" -msgstr "Regles de classificació" - -msgid "Classification group" -msgstr "Grup de classificació" - -msgid "Comment" -msgstr "Comentari" - -msgid "Destination host" -msgstr "Host de destí" - -msgid "Download speed (kbit/s)" -msgstr "Velocitat de baixada (kbit/s)" - -msgid "Enable" -msgstr "Habilita" - -#, fuzzy -msgid "Half-duplex" -msgstr "Half-duplex" - -msgid "Interfaces" -msgstr "Interfícies" - -msgid "Number of bytes" -msgstr "Nombre de bytes" - -msgid "Ports" -msgstr "Ports" - -msgid "Protocol" -msgstr "Protocol" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Qualitat de Servei" - -msgid "Source host" -msgstr "Host d'origen" - -msgid "Target" -msgstr "Host de destí" - -msgid "Upload speed (kbit/s)" -msgstr "Velocitat de pujada (kbit/s)" - -#, fuzzy -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Amb QoS pots prioritzar el tràfic de xarxa seleccionat per adreces, ports o " -"serveis." - -msgid "all" -msgstr "tots" - -msgid "default" -msgstr "per defecte" - -msgid "express" -msgstr "exprés" - -msgid "low" -msgstr "baix" - -msgid "normal" -msgstr "normal" - -msgid "priority" -msgstr "prioritat" - -#~ msgid "Service" -#~ msgstr "Servei" - -#~ msgid "Downlink" -#~ msgstr "Enllaç de baixada" - -#~ msgid "Internet Connection" -#~ msgstr "Connexió a Internet" - -#~ msgid "Uplink" -#~ msgstr "Enllaç de pujada" - -#~ msgid "Prioritization" -#~ msgstr "Priorització" - -#~ msgid "source network / source host" -#~ msgstr "xarxa d'origen / màquina d'origen" - -#~ msgid "target network / target host" -#~ msgstr "xarxa de destí / màquina de destí" - -#~ msgid "portrange" -#~ msgstr "rang de ports" - -#~ msgid "Bytes sent" -#~ msgstr "Bytes enviats" diff --git a/package/luci/applications/luci-app-qos/po/cs/qos.po b/package/luci/applications/luci-app-qos/po/cs/qos.po deleted file mode 100644 index 884310f665..0000000000 --- a/package/luci/applications/luci-app-qos/po/cs/qos.po +++ /dev/null @@ -1,114 +0,0 @@ -# Generated from applications/luci-qos/luasrc/model/cbi/qos/qos.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2014-06-20 23:36+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "" -"Snažit se zabránit zahlcení linky snížením jejího maximálního povoleného " -"zatížení síťovým provozem" - -msgid "Classification Rules" -msgstr "Klasifikační pravidla" - -msgid "Classification group" -msgstr "Klasifikační skupina" - -msgid "Comment" -msgstr "Komentář" - -msgid "Destination host" -msgstr "Cílová adresa" - -msgid "Download speed (kbit/s)" -msgstr "Rychlost stahování dat (kbit/s)" - -msgid "Enable" -msgstr "Povolit" - -msgid "Half-duplex" -msgstr "Poloviční duplex" - -msgid "Interfaces" -msgstr "Síťová rozhraní" - -msgid "Number of bytes" -msgstr "Počet bajtů" - -msgid "Ports" -msgstr "Porty" - -msgid "Protocol" -msgstr "Protokol" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Quality of Service" - -msgid "Source host" -msgstr "Zdrojová adresa" - -msgid "Target" -msgstr "Cílová třída priority" - -msgid "Upload speed (kbit/s)" -msgstr "Rychlost odesílání dat (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Pomocí služby \"QoS\" můžete " -"nastavit prioritu síťového provozu na základě specifikace adres, portů či " -"služeb." - -msgid "all" -msgstr "vše" - -msgid "default" -msgstr "výchozí" - -msgid "express" -msgstr "nejvyšší priorita (velké rámce)" - -msgid "low" -msgstr "nízká priorita" - -msgid "normal" -msgstr "normální priorita" - -msgid "priority" -msgstr "nejvyšší priorita (malé rámce)" - -#~ msgid "Service" -#~ msgstr "Služba" - -#~ msgid "Downlink" -#~ msgstr "Stahování" - -#~ msgid "Internet Connection" -#~ msgstr "Připojení k internetu" - -#~ msgid "Uplink" -#~ msgstr "Odesílání" - -#, fuzzy -#~ msgid "allf" -#~ msgstr "allf" - -#~ msgid "qos_connbytes" -#~ msgstr "qos_connbytes" diff --git a/package/luci/applications/luci-app-qos/po/de/qos.po b/package/luci/applications/luci-app-qos/po/de/qos.po deleted file mode 100644 index 46060de216..0000000000 --- a/package/luci/applications/luci-app-qos/po/de/qos.po +++ /dev/null @@ -1,122 +0,0 @@ -# qos.po -# generated from ./applications/luci-qos/luasrc/i18n/qos.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2013-01-28 22:18+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Overheadberechnung" - -msgid "Classification Rules" -msgstr "Klassifizierungsregeln" - -msgid "Classification group" -msgstr "Klassifizierungsgruppe" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "Zieladresse" - -msgid "Download speed (kbit/s)" -msgstr "Downloadgeschwindigkeit (kbit/s)" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "Half-duplex" -msgstr "Halb-Duplex" - -msgid "Interfaces" -msgstr "Schnittstellen" - -msgid "Number of bytes" -msgstr "Byteanzahl" - -msgid "Ports" -msgstr "Ports" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Quality of Service" - -msgid "Source host" -msgstr "Quelladresse" - -msgid "Target" -msgstr "Zieladresse" - -msgid "Upload speed (kbit/s)" -msgstr "Uploadgeschwindigkeit (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Mit Hilfe von QoS kann " -"Netzwerkverkehr anhand von Adressen, Ports oder Diensten priorisiert werden." - -msgid "all" -msgstr "alle" - -msgid "default" -msgstr "Standardeinstellung" - -msgid "express" -msgstr "express" - -msgid "low" -msgstr "niedrig" - -msgid "normal" -msgstr "normal" - -msgid "priority" -msgstr "Priorität" - -#~ msgid "Service" -#~ msgstr "Dienst" - -#~ msgid "Downlink" -#~ msgstr "Downlink" - -#~ msgid "Internet Connection" -#~ msgstr "Internetverbindung" - -#~ msgid "Uplink" -#~ msgstr "Uplink" - -#~ msgid "allf" -#~ msgstr "alle f" - -#~ msgid "qos_connbytes" -#~ msgstr "Bytes gesendet" - -#~ msgid "Prioritization" -#~ msgstr "Priorisierung" - -#~ msgid "source network / source host" -#~ msgstr "Quellnetz / Quellhost" - -#~ msgid "target network / target host" -#~ msgstr "Zielnetz / Zielhost" - -#~ msgid "portrange" -#~ msgstr "Portbereich" diff --git a/package/luci/applications/luci-app-qos/po/el/qos.po b/package/luci/applications/luci-app-qos/po/el/qos.po deleted file mode 100644 index 9c8a9851ad..0000000000 --- a/package/luci/applications/luci-app-qos/po/el/qos.po +++ /dev/null @@ -1,124 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2012-03-18 15:29+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#, fuzzy -msgid "Calculate overhead" -msgstr "Υπολογισμός Overhead" - -#, fuzzy -msgid "Classification Rules" -msgstr "Κατηγοριοποίηση" - -#, fuzzy -msgid "Classification group" -msgstr "Κατηγοριοποίηση" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "" - -msgid "Download speed (kbit/s)" -msgstr "" - -msgid "Enable" -msgstr "Ενεργοποίηση" - -#, fuzzy -msgid "Half-duplex" -msgstr "Μη-ταυτόχρονη αμφίδρομη επικοινωνία" - -msgid "Interfaces" -msgstr "Διεπαφές" - -msgid "Number of bytes" -msgstr "" - -#, fuzzy -msgid "Ports" -msgstr "Προτεραιότητα" - -msgid "Protocol" -msgstr "Πρωτόκολλο" - -msgid "QoS" -msgstr "" - -msgid "Quality of Service" -msgstr "Ποιότητα Υπηρεσίας" - -#, fuzzy -msgid "Source host" -msgstr "Διεύθυνση πηγής" - -#, fuzzy -msgid "Target" -msgstr "Διεύθυνση στόχου" - -msgid "Upload speed (kbit/s)" -msgstr "" - -#, fuzzy -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Με το QoS μπορείτε να ορίσετε προτεραιότητες στην κίνηση του δικτύου με βάση " -"διευθύνσεις, θύρες ή υπηρεσίες." - -msgid "all" -msgstr "" - -msgid "default" -msgstr "προεπιλογή" - -msgid "express" -msgstr "εξπρές" - -msgid "low" -msgstr "χαμηλή" - -msgid "normal" -msgstr "κανονική" - -msgid "priority" -msgstr "προτεραιότητα" - -#~ msgid "Service" -#~ msgstr "Υπηρεσία" - -#, fuzzy -#~ msgid "Downlink" -#~ msgstr "Ταχύτητα κατεβάσματος" - -#, fuzzy -#~ msgid "Uplink" -#~ msgstr "Ταχύτητα ανεβάσματος" - -#~ msgid "Prioritization" -#~ msgstr "Προτεραιότητες" - -#~ msgid "source network / source host" -#~ msgstr "πηγαίο δίκτυο / πηγαίος υπολογιστής" - -#~ msgid "target network / target host" -#~ msgstr "δίκτυο στόχος / υπολογιστής στόχος" - -#~ msgid "portrange" -#~ msgstr "εύρος θυρών" - -#~ msgid "Bytes sent" -#~ msgstr "Απεσταλμένα byte" diff --git a/package/luci/applications/luci-app-qos/po/en/qos.po b/package/luci/applications/luci-app-qos/po/en/qos.po deleted file mode 100644 index b20180f0d8..0000000000 --- a/package/luci/applications/luci-app-qos/po/en/qos.po +++ /dev/null @@ -1,91 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2010-03-25 22:10+0100\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Calculate overhead" -msgstr "Calculate overhead" - -msgid "Classification Rules" -msgstr "Classification Rules" - -msgid "Classification group" -msgstr "Classification group" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "Destination host" - -msgid "Download speed (kbit/s)" -msgstr "Download speed (kbit/s)" - -msgid "Enable" -msgstr "Enable" - -msgid "Half-duplex" -msgstr "Half-duplex" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Number of bytes" -msgstr "Number of bytes" - -msgid "Ports" -msgstr "Ports" - -msgid "Protocol" -msgstr "Protocol" - -msgid "QoS" -msgstr "" - -msgid "Quality of Service" -msgstr "Quality of Service" - -msgid "Source host" -msgstr "Source host" - -msgid "Target" -msgstr "Target" - -msgid "Upload speed (kbit/s)" -msgstr "Upload speed (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." - -msgid "all" -msgstr "all" - -msgid "default" -msgstr "default" - -msgid "express" -msgstr "express" - -msgid "low" -msgstr "low" - -msgid "normal" -msgstr "normal" - -msgid "priority" -msgstr "priority" - -#~ msgid "Service" -#~ msgstr "Service" diff --git a/package/luci/applications/luci-app-qos/po/es/qos.po b/package/luci/applications/luci-app-qos/po/es/qos.po deleted file mode 100644 index 83ace8d1f8..0000000000 --- a/package/luci/applications/luci-app-qos/po/es/qos.po +++ /dev/null @@ -1,123 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2014-06-15 09:13+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Calcular sobrecarga" - -msgid "Classification Rules" -msgstr "Reglas de clasificación" - -msgid "Classification group" -msgstr "Grupo de clasificación" - -msgid "Comment" -msgstr "Comentario" - -msgid "Destination host" -msgstr "Máquina de destino" - -msgid "Download speed (kbit/s)" -msgstr "Velocidad de descarga (Kbit/s)" - -msgid "Enable" -msgstr "Activar" - -msgid "Half-duplex" -msgstr "Semi dúplex" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Number of bytes" -msgstr "Número de bytes" - -msgid "Ports" -msgstr "Puertos" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Calidad de Servicio" - -msgid "Source host" -msgstr "Máquina origen" - -msgid "Target" -msgstr "Objetivo" - -msgid "Upload speed (kbit/s)" -msgstr "Velocidad de subida (Kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Con QoS puede priorizar el tráfico de la red seleccionando por direcciones, " -"puertos o servicios." - -msgid "all" -msgstr "todos" - -msgid "default" -msgstr "por defecto" - -msgid "express" -msgstr "exprés" - -msgid "low" -msgstr "bajo" - -msgid "normal" -msgstr "normal" - -msgid "priority" -msgstr "prioritario" - -#~ msgid "Service" -#~ msgstr "Servicio" - -#~ msgid "Downlink" -#~ msgstr "Enlace de bajada" - -#~ msgid "Internet Connection" -#~ msgstr "Conexión a Internet" - -#~ msgid "Uplink" -#~ msgstr "Enlace de subida" - -#~ msgid "allf" -#~ msgstr "-- ¿allf? --" - -#~ msgid "qos_connbytes" -#~ msgstr "-- ¿qos_connbytes? --" - -#~ msgid "Prioritization" -#~ msgstr "Priorización" - -#~ msgid "source network / source host" -#~ msgstr "red de origen / host de origen" - -#~ msgid "target network / target host" -#~ msgstr "red de destino / host de destino" - -#~ msgid "portrange" -#~ msgstr "rango de puerto" - -#~ msgid "Bytes sent" -#~ msgstr "Bytes enviados" diff --git a/package/luci/applications/luci-app-qos/po/fr/qos.po b/package/luci/applications/luci-app-qos/po/fr/qos.po deleted file mode 100644 index 38e9ce8633..0000000000 --- a/package/luci/applications/luci-app-qos/po/fr/qos.po +++ /dev/null @@ -1,97 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2012-11-06 16:08+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Calculer la surcharge" - -msgid "Classification Rules" -msgstr "Règles de classification" - -msgid "Classification group" -msgstr "Groupe de classification" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "Hôte destinataire" - -msgid "Download speed (kbit/s)" -msgstr "Vitesse de téléchargement (kbit/s)" - -msgid "Enable" -msgstr "Activer" - -msgid "Half-duplex" -msgstr "Demi-duplex" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Number of bytes" -msgstr "Nombre d'octets" - -msgid "Ports" -msgstr "Ports" - -msgid "Protocol" -msgstr "Protocole" - -msgid "QoS" -msgstr "" - -msgid "Quality of Service" -msgstr "Qualité de service" - -msgid "Source host" -msgstr "Hôte source" - -msgid "Target" -msgstr "Cible" - -msgid "Upload speed (kbit/s)" -msgstr "Vitesse de téléversement (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Avec la QoS, vous pouvez donner " -"des priorités au trafic réseau en fonction des adresses, des ports ou des " -"services concernés." - -msgid "all" -msgstr "tous" - -msgid "default" -msgstr "par défaut" - -msgid "express" -msgstr "express" - -msgid "low" -msgstr "lent" - -msgid "normal" -msgstr "normal" - -msgid "priority" -msgstr "prioritaire" - -#~ msgid "Service" -#~ msgstr "Service" - -#~ msgid "qos_connbytes" -#~ msgstr "qos_connbytes" diff --git a/package/luci/applications/luci-app-qos/po/he/qos.po b/package/luci/applications/luci-app-qos/po/he/qos.po deleted file mode 100644 index e2d42ef014..0000000000 --- a/package/luci/applications/luci-app-qos/po/he/qos.po +++ /dev/null @@ -1,88 +0,0 @@ -# Generated from applications/luci-qos/luasrc/model/cbi/qos/qos.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2010-03-25 22:10+0100\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Calculate overhead" -msgstr "" - -msgid "Classification Rules" -msgstr "" - -msgid "Classification group" -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "" - -msgid "Download speed (kbit/s)" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Half-duplex" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Number of bytes" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "QoS" -msgstr "" - -msgid "Quality of Service" -msgstr "" - -msgid "Source host" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Upload speed (kbit/s)" -msgstr "" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" - -msgid "all" -msgstr "" - -msgid "default" -msgstr "" - -msgid "express" -msgstr "" - -msgid "low" -msgstr "" - -msgid "normal" -msgstr "" - -msgid "priority" -msgstr "" diff --git a/package/luci/applications/luci-app-qos/po/hu/qos.po b/package/luci/applications/luci-app-qos/po/hu/qos.po deleted file mode 100644 index c77ac3cd7c..0000000000 --- a/package/luci/applications/luci-app-qos/po/hu/qos.po +++ /dev/null @@ -1,111 +0,0 @@ -# Generated from applications/luci-qos/luasrc/model/cbi/qos/qos.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2012-12-30 19:18+0200\n" -"Last-Translator: romboyco \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Többletforgalom számítása" - -msgid "Classification Rules" -msgstr "Besorolási szabályok" - -msgid "Classification group" -msgstr "Besorolási csoport" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "Cél gép" - -msgid "Download speed (kbit/s)" -msgstr "Letöltési sebesség (kbit/s)" - -msgid "Enable" -msgstr "Engedélyezés" - -msgid "Half-duplex" -msgstr "Fél-duplex" - -msgid "Interfaces" -msgstr "Interfészek" - -msgid "Number of bytes" -msgstr "Bájtok száma" - -msgid "Ports" -msgstr "Portok" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Quality of Service" - -msgid "Source host" -msgstr "Forrás gép" - -msgid "Target" -msgstr "Cél" - -msgid "Upload speed (kbit/s)" -msgstr "Feltöltési sebesség (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"A QoS segítségével beállítható " -"cím, portok vagy szolgáltatások alapján kiválasztott hálózati forgalom " -"prioritása." - -msgid "all" -msgstr "összes" - -msgid "default" -msgstr "alapértelmezett" - -msgid "express" -msgstr "sürgős" - -msgid "low" -msgstr "alacsony" - -msgid "normal" -msgstr "normál" - -msgid "priority" -msgstr "prioritás" - -#~ msgid "Service" -#~ msgstr "Szolgáltatás" - -#~ msgid "Downlink" -#~ msgstr "Downlink" - -#~ msgid "Internet Connection" -#~ msgstr "Internet kapcsolat" - -#~ msgid "Uplink" -#~ msgstr "Uplink" - -#~ msgid "allf" -#~ msgstr "allf" - -#~ msgid "qos_connbytes" -#~ msgstr "qos_connbytes" diff --git a/package/luci/applications/luci-app-qos/po/it/qos.po b/package/luci/applications/luci-app-qos/po/it/qos.po deleted file mode 100644 index 686c74519a..0000000000 --- a/package/luci/applications/luci-app-qos/po/it/qos.po +++ /dev/null @@ -1,108 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2014-07-19 16:26+0200\n" -"Last-Translator: clagir \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Calcola l'overhead" - -msgid "Classification Rules" -msgstr "Regole di classificazione" - -msgid "Classification group" -msgstr "Gruppo di Priorità" - -msgid "Comment" -msgstr "Commento" - -msgid "Destination host" -msgstr "Host di destinazione" - -msgid "Download speed (kbit/s)" -msgstr "Velocità di download (kbit/s)" - -msgid "Enable" -msgstr "Abilita" - -msgid "Half-duplex" -msgstr "Half-duplex" - -msgid "Interfaces" -msgstr "Interfacce" - -msgid "Number of bytes" -msgstr "Numeri di bytes" - -msgid "Ports" -msgstr "Porte" - -msgid "Protocol" -msgstr "Protocollo" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Qualità del Servizio" - -msgid "Source host" -msgstr "Host sorgente" - -msgid "Target" -msgstr "Target" - -msgid "Upload speed (kbit/s)" -msgstr "Velocità di upload (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Con QoS puoi dare priorità al " -"traffico di rete in base ad un ip, una porta o dei servizi." - -msgid "all" -msgstr "tutti" - -msgid "default" -msgstr "default" - -msgid "express" -msgstr "express" - -msgid "low" -msgstr "basso" - -msgid "normal" -msgstr "normale" - -msgid "priority" -msgstr "priorità" - -#~ msgid "Service" -#~ msgstr "Servizi" - -#~ msgid "Downlink" -#~ msgstr "Collegamento discendente" - -#~ msgid "Internet Connection" -#~ msgstr "Connessione Internet" - -#~ msgid "Uplink" -#~ msgstr "Collegamento ascendente" - -#~ msgid "allf" -#~ msgstr "allf" - -#~ msgid "qos_connbytes" -#~ msgstr "qos_connbytes" diff --git a/package/luci/applications/luci-app-qos/po/ja/qos.po b/package/luci/applications/luci-app-qos/po/ja/qos.po deleted file mode 100644 index a81a6e1ade..0000000000 --- a/package/luci/applications/luci-app-qos/po/ja/qos.po +++ /dev/null @@ -1,93 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2016-12-22 01:54+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "Calculate overhead" -msgstr "オーバーヘッドを考慮する" - -msgid "Classification Rules" -msgstr "区分ルール" - -msgid "Classification group" -msgstr "区分グループ" - -msgid "Comment" -msgstr "コメント" - -msgid "Destination host" -msgstr "宛先ホスト" - -msgid "Download speed (kbit/s)" -msgstr "ダウンロード速度 (kbit/s)" - -msgid "Enable" -msgstr "有効" - -msgid "Half-duplex" -msgstr "半二重" - -msgid "Interfaces" -msgstr "インターフェース" - -msgid "Number of bytes" -msgstr "バイト数" - -msgid "Ports" -msgstr "ポート" - -msgid "Protocol" -msgstr "プロトコル" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Quality of Service" - -msgid "Source host" -msgstr "送信元ホスト" - -msgid "Target" -msgstr "対象" - -msgid "Upload speed (kbit/s)" -msgstr "アップロード速度 (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"QoSはアドレス、ポート、サービスで区" -"別して、ネットワークトラフィックに優先度を付与することが可能です。" - -msgid "all" -msgstr "全て" - -msgid "default" -msgstr "標準" - -msgid "express" -msgstr "高速" - -msgid "low" -msgstr "低速" - -msgid "normal" -msgstr "標準" - -msgid "priority" -msgstr "最優先" - -#~ msgid "Service" -#~ msgstr "サービス" diff --git a/package/luci/applications/luci-app-qos/po/ms/qos.po b/package/luci/applications/luci-app-qos/po/ms/qos.po deleted file mode 100644 index f8d4ab3d25..0000000000 --- a/package/luci/applications/luci-app-qos/po/ms/qos.po +++ /dev/null @@ -1,87 +0,0 @@ -# Generated from applications/luci-qos/luasrc/model/cbi/qos/qos.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2010-03-25 22:10+0100\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Calculate overhead" -msgstr "" - -msgid "Classification Rules" -msgstr "" - -msgid "Classification group" -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "" - -msgid "Download speed (kbit/s)" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Half-duplex" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Number of bytes" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "QoS" -msgstr "" - -msgid "Quality of Service" -msgstr "" - -msgid "Source host" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Upload speed (kbit/s)" -msgstr "" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" - -msgid "all" -msgstr "" - -msgid "default" -msgstr "" - -msgid "express" -msgstr "" - -msgid "low" -msgstr "" - -msgid "normal" -msgstr "" - -msgid "priority" -msgstr "" diff --git a/package/luci/applications/luci-app-qos/po/no/qos.po b/package/luci/applications/luci-app-qos/po/no/qos.po deleted file mode 100644 index 6b390a1d6c..0000000000 --- a/package/luci/applications/luci-app-qos/po/no/qos.po +++ /dev/null @@ -1,106 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2013-03-21 23:04+0200\n" -"Last-Translator: protx \n" -"Language: no\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Beregn overhead" - -msgid "Classification Rules" -msgstr "Klassifisering Regler" - -msgid "Classification group" -msgstr "Klassifisering gruppe" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "Destinasjon vert" - -msgid "Download speed (kbit/s)" -msgstr "Nedlasting hastighet (kbit/s)" - -msgid "Enable" -msgstr "Aktiver" - -msgid "Half-duplex" -msgstr "Halv dupleks" - -msgid "Interfaces" -msgstr "Grensesnitt" - -msgid "Number of bytes" -msgstr "Antall bytes" - -msgid "Ports" -msgstr "Porter" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Quality of Service" - -msgid "Source host" -msgstr "Kilde vert" - -msgid "Target" -msgstr "Mål" - -msgid "Upload speed (kbit/s)" -msgstr "Opplasting hastighet (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Med QoS kan du prioritere " -"nettverkstrafikk valgt av adresser, porter eller tjenester." - -msgid "all" -msgstr "alle" - -msgid "default" -msgstr "standard" - -msgid "express" -msgstr "ekspress" - -msgid "low" -msgstr "lav" - -msgid "normal" -msgstr "normal" - -msgid "priority" -msgstr "prioritet" - -#~ msgid "Service" -#~ msgstr "Service" - -#~ msgid "Downlink" -#~ msgstr "Nedlinje" - -#~ msgid "Internet Connection" -#~ msgstr "Internett Tilkobling" - -#~ msgid "Uplink" -#~ msgstr "Opplinje" - -#~ msgid "allf" -#~ msgstr "alle" - -#~ msgid "qos_connbytes" -#~ msgstr "Bytes sendt" - -#~ msgid "Half-Duplex" -#~ msgstr "Halvdupleks" diff --git a/package/luci/applications/luci-app-qos/po/pl/qos.po b/package/luci/applications/luci-app-qos/po/pl/qos.po deleted file mode 100644 index 3c6a28ccca..0000000000 --- a/package/luci/applications/luci-app-qos/po/pl/qos.po +++ /dev/null @@ -1,111 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2012-08-31 18:14+0200\n" -"Last-Translator: obsy \n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Oblicz narzut" - -msgid "Classification Rules" -msgstr "Reguły klasyfikacji" - -msgid "Classification group" -msgstr "Grupa klasyfikacji" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "Host docelowy" - -msgid "Download speed (kbit/s)" -msgstr "Prędkość pobierania (kbit/s)" - -msgid "Enable" -msgstr "Włącz" - -msgid "Half-duplex" -msgstr "Półdupleks" - -msgid "Interfaces" -msgstr "Interfejsy" - -msgid "Number of bytes" -msgstr "Ilość bajtów" - -msgid "Ports" -msgstr "Porty" - -msgid "Protocol" -msgstr "Protokół" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Jakość usługi (ang. Quality of Service)" - -msgid "Source host" -msgstr "Host źródłowy" - -msgid "Target" -msgstr "Cel" - -msgid "Upload speed (kbit/s)" -msgstr "Prędkość wysyłania (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Z QoS można ustalać priorytet " -"ruchu sieciowego na podstawie adresów, portów lub usług." - -msgid "all" -msgstr "wszystko" - -msgid "default" -msgstr "domyślna" - -msgid "express" -msgstr "ekspresowy" - -msgid "low" -msgstr "niski" - -msgid "normal" -msgstr "normalny" - -msgid "priority" -msgstr "priorytetowy" - -#~ msgid "Service" -#~ msgstr "Usługa" - -#~ msgid "Downlink" -#~ msgstr "Ruch przychodzący" - -#~ msgid "Internet Connection" -#~ msgstr "Połączenie Internetowe" - -#~ msgid "Uplink" -#~ msgstr "Ruch wychodzący" - -# Jeśli w ogóle jest to gdzieś używane, to i w angielskiej wersji jest błąd. W takiej sytuacji należy udawać idiotę. -#~ msgid "allf" -#~ msgstr "allf" - -# Patrz - allf. -#~ msgid "qos_connbytes" -#~ msgstr "qos_connbytes" diff --git a/package/luci/applications/luci-app-qos/po/pt-br/qos.po b/package/luci/applications/luci-app-qos/po/pt-br/qos.po deleted file mode 100644 index 43cd6e2a66..0000000000 --- a/package/luci/applications/luci-app-qos/po/pt-br/qos.po +++ /dev/null @@ -1,127 +0,0 @@ -# qos.po -# generated from ./applications/luci-qos/luasrc/i18n/qos.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2014-06-21 19:00+0200\n" -"Last-Translator: Éder \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Calcular overhead" - -msgid "Classification Rules" -msgstr "Classificação" - -msgid "Classification group" -msgstr "Classificação" - -# 20140621: edersg: tradução -msgid "Comment" -msgstr "Comentário" - -msgid "Destination host" -msgstr "Endereço de destino" - -msgid "Download speed (kbit/s)" -msgstr "Velocidade de recebimento (kbit/s)" - -msgid "Enable" -msgstr "Habilitado" - -msgid "Half-duplex" -msgstr "Half-duplex" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Number of bytes" -msgstr "Número de bytes" - -msgid "Ports" -msgstr "Portas" - -msgid "Protocol" -msgstr "Prococolo" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Qualidade de Serviço" - -msgid "Source host" -msgstr "Endereço de origem" - -msgid "Target" -msgstr "Alvo" - -msgid "Upload speed (kbit/s)" -msgstr "Velocidade de envio (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Com QoS, " -"você pode priorizar o tráfego da rede selecionada por endereços, portas ou " -"serviços." - -msgid "all" -msgstr "todos" - -msgid "default" -msgstr "padrão" - -msgid "express" -msgstr "expressa" - -msgid "low" -msgstr "baixa" - -msgid "normal" -msgstr "normal" - -msgid "priority" -msgstr "prioritário" - -#~ msgid "Service" -#~ msgstr "Serviço" - -#~ msgid "Downlink" -#~ msgstr "Link para download" - -#~ msgid "Internet Connection" -#~ msgstr "Conexão com a Internet" - -#~ msgid "Uplink" -#~ msgstr "Link para upload" - -#~ msgid "allf" -#~ msgstr "allf" - -#~ msgid "qos_connbytes" -#~ msgstr "qos_connbytes" - -#~ msgid "Prioritization" -#~ msgstr "Priorização" - -#~ msgid "source network / source host" -#~ msgstr "rede de origem / host de origem" - -#~ msgid "target network / target host" -#~ msgstr "rede de destino / host de destino" - -#~ msgid "portrange" -#~ msgstr "faixa de portas" - -#~ msgid "Bytes sent" -#~ msgstr "Bytes enviados" diff --git a/package/luci/applications/luci-app-qos/po/pt/qos.po b/package/luci/applications/luci-app-qos/po/pt/qos.po deleted file mode 100644 index 449ddce4c9..0000000000 --- a/package/luci/applications/luci-app-qos/po/pt/qos.po +++ /dev/null @@ -1,122 +0,0 @@ -# qos.po -# generated from ./applications/luci-qos/luasrc/i18n/qos.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2013-05-31 23:49+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Calcular Overhead" - -msgid "Classification Rules" -msgstr "Regras de Classificação" - -msgid "Classification group" -msgstr "Grupo de Classificação" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "Host de destino" - -msgid "Download speed (kbit/s)" -msgstr "Velocidade de Download (kbit/s)" - -msgid "Enable" -msgstr "Ativar" - -msgid "Half-duplex" -msgstr "Half-duplex" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Number of bytes" -msgstr "Número de bytes" - -msgid "Ports" -msgstr "Portas" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Qualidade de Serviço" - -msgid "Source host" -msgstr "Host de origem" - -msgid "Target" -msgstr "Host de destino" - -msgid "Upload speed (kbit/s)" -msgstr "Velocidade de Upload (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Com o QoS pode dar prioridade ao " -"tráfego na rede por endereço, portas ou serviço." - -msgid "all" -msgstr "todos" - -msgid "default" -msgstr "Por defeito" - -msgid "express" -msgstr "expressa" - -msgid "low" -msgstr "baixa" - -msgid "normal" -msgstr "normal" - -msgid "priority" -msgstr "prioridade" - -#~ msgid "Service" -#~ msgstr "Serviço" - -#~ msgid "Downlink" -#~ msgstr "Link para download" - -#~ msgid "Internet Connection" -#~ msgstr "Ligação à Internet" - -#~ msgid "Uplink" -#~ msgstr "Link para upload" - -#~ msgid "qos_connbytes" -#~ msgstr "qos_connbytes" - -#~ msgid "Prioritization" -#~ msgstr "Priorização" - -#~ msgid "source network / source host" -#~ msgstr "rede de origem / host de origem" - -#~ msgid "target network / target host" -#~ msgstr "rede de destino / host de destino" - -#~ msgid "portrange" -#~ msgstr "faixa de portas" - -#~ msgid "Bytes sent" -#~ msgstr "Bytes enviados" diff --git a/package/luci/applications/luci-app-qos/po/ro/qos.po b/package/luci/applications/luci-app-qos/po/ro/qos.po deleted file mode 100644 index 9c88f7c2c9..0000000000 --- a/package/luci/applications/luci-app-qos/po/ro/qos.po +++ /dev/null @@ -1,97 +0,0 @@ -# Generated from applications/luci-qos/luasrc/model/cbi/qos/qos.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2013-09-25 19:25+0200\n" -"Last-Translator: Mihai \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "" - -msgid "Classification Rules" -msgstr "" - -msgid "Classification group" -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "" - -msgid "Download speed (kbit/s)" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Half-duplex" -msgstr "" - -msgid "Interfaces" -msgstr "Interfete" - -msgid "Number of bytes" -msgstr "Numarul de bytes" - -msgid "Ports" -msgstr "Porturi" - -msgid "Protocol" -msgstr "Protocol" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Quality of Service" - -msgid "Source host" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Upload speed (kbit/s)" -msgstr "" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" - -msgid "all" -msgstr "toate" - -msgid "default" -msgstr "" - -msgid "express" -msgstr "expres" - -msgid "low" -msgstr "scazuta" - -msgid "normal" -msgstr "normala" - -msgid "priority" -msgstr "ridicata" - -#~ msgid "Service" -#~ msgstr "Serviciu" - -#~ msgid "Internet Connection" -#~ msgstr "Conexiune internet" diff --git a/package/luci/applications/luci-app-qos/po/ru/qos.po b/package/luci/applications/luci-app-qos/po/ru/qos.po deleted file mode 100644 index 811cbf1e01..0000000000 --- a/package/luci/applications/luci-app-qos/po/ru/qos.po +++ /dev/null @@ -1,104 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: qos\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2012-08-15 12:02+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Calculate overhead" -msgstr "Подсчитывать накладные расходы" - -msgid "Classification Rules" -msgstr "Правила классификации" - -msgid "Classification group" -msgstr "Классификация" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "Хост назначения" - -msgid "Download speed (kbit/s)" -msgstr "Скорость загрузки (кбит/с)" - -msgid "Enable" -msgstr "Включить" - -msgid "Half-duplex" -msgstr "Полудуплекс" - -msgid "Interfaces" -msgstr "Интерфейсы" - -msgid "Number of bytes" -msgstr "Количество байт" - -msgid "Ports" -msgstr "Порты" - -msgid "Protocol" -msgstr "Протокол" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Качество обслуживания (QoS)" - -msgid "Source host" -msgstr "Хост источника" - -msgid "Target" -msgstr "Цель" - -msgid "Upload speed (kbit/s)" -msgstr "Скорость отдачи (кбит/с)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Используя QoS, вы можете " -"приоритезаровать сетевой трафик по адресам, портам и сервисам." - -msgid "all" -msgstr "все" - -msgid "default" -msgstr "по умолчанию" - -msgid "express" -msgstr "экспресс" - -msgid "low" -msgstr "низкий" - -msgid "normal" -msgstr "обычный" - -msgid "priority" -msgstr "приоритетный" - -#~ msgid "Service" -#~ msgstr "Служба" - -#~ msgid "Downlink" -#~ msgstr "Нисходящий канал" - -#~ msgid "Internet Connection" -#~ msgstr "Интернет-соединение" - -#~ msgid "Uplink" -#~ msgstr "Восходящий канал" diff --git a/package/luci/applications/luci-app-qos/po/sk/qos.po b/package/luci/applications/luci-app-qos/po/sk/qos.po deleted file mode 100644 index b4d10ab317..0000000000 --- a/package/luci/applications/luci-app-qos/po/sk/qos.po +++ /dev/null @@ -1,83 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Calculate overhead" -msgstr "" - -msgid "Classification Rules" -msgstr "" - -msgid "Classification group" -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "" - -msgid "Download speed (kbit/s)" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Half-duplex" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Number of bytes" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "QoS" -msgstr "" - -msgid "Quality of Service" -msgstr "" - -msgid "Source host" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Upload speed (kbit/s)" -msgstr "" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" - -msgid "all" -msgstr "" - -msgid "default" -msgstr "" - -msgid "express" -msgstr "" - -msgid "low" -msgstr "" - -msgid "normal" -msgstr "" - -msgid "priority" -msgstr "" diff --git a/package/luci/applications/luci-app-qos/po/sv/qos.po b/package/luci/applications/luci-app-qos/po/sv/qos.po deleted file mode 100644 index 323b75a7fd..0000000000 --- a/package/luci/applications/luci-app-qos/po/sv/qos.po +++ /dev/null @@ -1,86 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Calculate overhead" -msgstr "" - -msgid "Classification Rules" -msgstr "Klassificeringsregler" - -msgid "Classification group" -msgstr "Klassificeringsgrupp" - -msgid "Comment" -msgstr "Kommentera" - -msgid "Destination host" -msgstr "Värd för destination" - -msgid "Download speed (kbit/s)" -msgstr "Nerladdningshastighet (kbit/s)" - -msgid "Enable" -msgstr "Aktivera" - -msgid "Half-duplex" -msgstr "Halv-duplex" - -msgid "Interfaces" -msgstr "Gränssnitt" - -msgid "Number of bytes" -msgstr "Antalet bytes" - -msgid "Ports" -msgstr "Portar" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "" - -msgid "Source host" -msgstr "" - -msgid "Target" -msgstr "Mål" - -msgid "Upload speed (kbit/s)" -msgstr "Uppladdningshastighet (kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Med QoS så kan du prioritera " -"nätverkstrafiken som valts av adresser, portar eller tjänster." - -msgid "all" -msgstr "alla" - -msgid "default" -msgstr "standard" - -msgid "express" -msgstr "express" - -msgid "low" -msgstr "låg" - -msgid "normal" -msgstr "normal" - -msgid "priority" -msgstr "prioritet" diff --git a/package/luci/applications/luci-app-qos/po/templates/qos.pot b/package/luci/applications/luci-app-qos/po/templates/qos.pot deleted file mode 100644 index 48333e4565..0000000000 --- a/package/luci/applications/luci-app-qos/po/templates/qos.pot +++ /dev/null @@ -1,76 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Calculate overhead" -msgstr "" - -msgid "Classification Rules" -msgstr "" - -msgid "Classification group" -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "" - -msgid "Download speed (kbit/s)" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Half-duplex" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Number of bytes" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "QoS" -msgstr "" - -msgid "Quality of Service" -msgstr "" - -msgid "Source host" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Upload speed (kbit/s)" -msgstr "" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" - -msgid "all" -msgstr "" - -msgid "default" -msgstr "" - -msgid "express" -msgstr "" - -msgid "low" -msgstr "" - -msgid "normal" -msgstr "" - -msgid "priority" -msgstr "" diff --git a/package/luci/applications/luci-app-qos/po/tr/qos.po b/package/luci/applications/luci-app-qos/po/tr/qos.po deleted file mode 100644 index d2f3611cf3..0000000000 --- a/package/luci/applications/luci-app-qos/po/tr/qos.po +++ /dev/null @@ -1,88 +0,0 @@ -# Generated from applications/luci-qos/luasrc/model/cbi/qos/qos.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2010-03-25 22:10+0100\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Calculate overhead" -msgstr "" - -msgid "Classification Rules" -msgstr "" - -msgid "Classification group" -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "" - -msgid "Download speed (kbit/s)" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Half-duplex" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Number of bytes" -msgstr "" - -msgid "Ports" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "QoS" -msgstr "" - -msgid "Quality of Service" -msgstr "" - -msgid "Source host" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Upload speed (kbit/s)" -msgstr "" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" - -msgid "all" -msgstr "" - -msgid "default" -msgstr "" - -msgid "express" -msgstr "" - -msgid "low" -msgstr "" - -msgid "normal" -msgstr "" - -msgid "priority" -msgstr "" diff --git a/package/luci/applications/luci-app-qos/po/uk/qos.po b/package/luci/applications/luci-app-qos/po/uk/qos.po deleted file mode 100644 index 5ec9f37264..0000000000 --- a/package/luci/applications/luci-app-qos/po/uk/qos.po +++ /dev/null @@ -1,110 +0,0 @@ -# Generated from applications/luci-qos/luasrc/model/cbi/qos/qos.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2013-08-13 15:27+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Calculate overhead" -msgstr "Розраховувати додаткові витрати" - -msgid "Classification Rules" -msgstr "Правила класифікації" - -msgid "Classification group" -msgstr "Класифікаційна група" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "Вузол призначення" - -msgid "Download speed (kbit/s)" -msgstr "Швидкість завантаження (Кбіт/с)" - -msgid "Enable" -msgstr "Увімкнути" - -msgid "Half-duplex" -msgstr "Напівдуплекс" - -msgid "Interfaces" -msgstr "Інтерфейси" - -msgid "Number of bytes" -msgstr "Кількість байт" - -msgid "Ports" -msgstr "Порти" - -msgid "Protocol" -msgstr "Протокол" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "Якість обслуговування (QoS)" - -msgid "Source host" -msgstr "Вихідний вузол" - -msgid "Target" -msgstr "Мета" - -msgid "Upload speed (kbit/s)" -msgstr "Швидкість відвантаження (Кбіт/с)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Використовуючи фунцію QoS можна визначити пріоритети мережевого трафіку " -"для певних адрес, портів або сервісів." - -msgid "all" -msgstr "усі" - -msgid "default" -msgstr "типова" - -msgid "express" -msgstr "експрес" - -msgid "low" -msgstr "низький" - -msgid "normal" -msgstr "звичайний" - -msgid "priority" -msgstr "пріоритетний" - -#~ msgid "Service" -#~ msgstr "Сервіс" - -#~ msgid "Downlink" -#~ msgstr "Низхідний канал" - -#~ msgid "Internet Connection" -#~ msgstr "З'єднання з інтернетом" - -#~ msgid "Uplink" -#~ msgstr "Висхідний канал" - -#, fuzzy -#~ msgid "allf" -#~ msgstr "додаткова функція" diff --git a/package/luci/applications/luci-app-qos/po/vi/qos.po b/package/luci/applications/luci-app-qos/po/vi/qos.po deleted file mode 100644 index 32e7ed17ab..0000000000 --- a/package/luci/applications/luci-app-qos/po/vi/qos.po +++ /dev/null @@ -1,119 +0,0 @@ -# qos.pot -# generated from ./applications/luci-qos/luasrc/i18n/qos.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2009-08-13 03:56+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -#, fuzzy -msgid "Calculate overhead" -msgstr "Tính toán tổng quát" - -#, fuzzy -msgid "Classification Rules" -msgstr "Phân loại" - -#, fuzzy -msgid "Classification group" -msgstr "Phân loại" - -msgid "Comment" -msgstr "" - -msgid "Destination host" -msgstr "" - -msgid "Download speed (kbit/s)" -msgstr "" - -msgid "Enable" -msgstr "" - -#, fuzzy -msgid "Half-duplex" -msgstr "Half-Duplex" - -msgid "Interfaces" -msgstr "" - -msgid "Number of bytes" -msgstr "" - -#, fuzzy -msgid "Ports" -msgstr "Ưu tiên" - -msgid "Protocol" -msgstr "" - -msgid "QoS" -msgstr "" - -msgid "Quality of Service" -msgstr "Chất lượng dịch vụ " - -#, fuzzy -msgid "Source host" -msgstr "Địa chỉ nguồn" - -#, fuzzy -msgid "Target" -msgstr "Địa chỉ mục tiêu" - -msgid "Upload speed (kbit/s)" -msgstr "" - -#, fuzzy -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"Với QoS, bạn có thể ưu tiên cho mạng lưới giao thông được chọn bởi địa chỉ, " -"cổng hay dịch vụ." - -msgid "all" -msgstr "" - -msgid "default" -msgstr "" - -msgid "express" -msgstr "cấp tốc" - -msgid "low" -msgstr "thấp" - -msgid "normal" -msgstr "bình thường" - -msgid "priority" -msgstr "ưu tiên" - -#~ msgid "Downlink" -#~ msgstr "Downlink" - -#~ msgid "Uplink" -#~ msgstr "Uplink" - -#~ msgid "Prioritization" -#~ msgstr "Quá trình ưu tiên" - -#~ msgid "source network / source host" -#~ msgstr "nguồn mạng/ nguồn host" - -#~ msgid "target network / target host" -#~ msgstr "Mục tiêu mạng/ mục tiêu host" - -#~ msgid "portrange" -#~ msgstr "portrange" - -#~ msgid "Bytes sent" -#~ msgstr "Bytes đã gửi" diff --git a/package/luci/applications/luci-app-qos/po/zh-cn/qos.po b/package/luci/applications/luci-app-qos/po/zh-cn/qos.po deleted file mode 100644 index db13826dc7..0000000000 --- a/package/luci/applications/luci-app-qos/po/zh-cn/qos.po +++ /dev/null @@ -1,111 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: LuCi Chinese Translation\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2017-10-29 14:58+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \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: Gtranslator 2.91.7\n" - -msgid "Calculate overhead" -msgstr "计算开销" - -msgid "Classification Rules" -msgstr "分类规则" - -msgid "Classification group" -msgstr "分类组" - -msgid "Comment" -msgstr "注解" - -msgid "Destination host" -msgstr "目的主机" - -msgid "Download speed (kbit/s)" -msgstr "下载速度(kbit/s)" - -msgid "Enable" -msgstr "开启" - -msgid "Half-duplex" -msgstr "半双工" - -msgid "Interfaces" -msgstr "接口" - -msgid "Number of bytes" -msgstr "字节数" - -msgid "Ports" -msgstr "端口" - -msgid "Protocol" -msgstr "协议" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "服务质量(QoS)" - -msgid "Source host" -msgstr "源主机" - -msgid "Target" -msgstr "目标" - -msgid "Upload speed (kbit/s)" -msgstr "上传速度(kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"使用 QoS,根据网络地址、端口或服" -"务,为流量数据包排序。" - -msgid "all" -msgstr "全部" - -msgid "default" -msgstr "默认" - -msgid "express" -msgstr "高" - -msgid "low" -msgstr "低" - -msgid "normal" -msgstr "普通" - -msgid "priority" -msgstr "最高" - -#~ msgid "Service" -#~ msgstr "服务" - -#~ msgid "Downlink" -#~ msgstr "下行" - -#~ msgid "Internet Connection" -#~ msgstr "Internet连接" - -#~ msgid "Uplink" -#~ msgstr "上行" - -#~ msgid "allf" -#~ msgstr "全部" - -#~ msgid "qos_connbytes" -#~ msgstr "Qos连接字节数" diff --git a/package/luci/applications/luci-app-qos/po/zh-tw/qos.po b/package/luci/applications/luci-app-qos/po/zh-tw/qos.po deleted file mode 100644 index 1197e8a7d5..0000000000 --- a/package/luci/applications/luci-app-qos/po/zh-tw/qos.po +++ /dev/null @@ -1,111 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: LuCi Chinese Translation\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-25 22:10+0100\n" -"PO-Revision-Date: 2017-10-29 15:00+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" - -msgid "Calculate overhead" -msgstr "計算開銷" - -msgid "Classification Rules" -msgstr "分類規則" - -msgid "Classification group" -msgstr "分類組" - -msgid "Comment" -msgstr "註解" - -msgid "Destination host" -msgstr "目的主機" - -msgid "Download speed (kbit/s)" -msgstr "下載速度(kbit/s)" - -msgid "Enable" -msgstr "開啟" - -msgid "Half-duplex" -msgstr "半雙工" - -msgid "Interfaces" -msgstr "介面" - -msgid "Number of bytes" -msgstr "位元組數" - -msgid "Ports" -msgstr "埠" - -msgid "Protocol" -msgstr "協議" - -msgid "QoS" -msgstr "QoS" - -msgid "Quality of Service" -msgstr "服務品質(QoS)" - -msgid "Source host" -msgstr "源主機" - -msgid "Target" -msgstr "目標" - -msgid "Upload speed (kbit/s)" -msgstr "上傳速度(kbit/s)" - -msgid "" -"With QoS you can prioritize " -"network traffic selected by addresses, ports or services." -msgstr "" -"使用 QoS,根據網路位址、埠或服務," -"為流量資料包排序。" - -msgid "all" -msgstr "全部" - -msgid "default" -msgstr "預設" - -msgid "express" -msgstr "高" - -msgid "low" -msgstr "低" - -msgid "normal" -msgstr "普通" - -msgid "priority" -msgstr "最高" - -#~ msgid "Service" -#~ msgstr "服務" - -#~ msgid "Downlink" -#~ msgstr "下行" - -#~ msgid "Internet Connection" -#~ msgstr "Internet連線" - -#~ msgid "Uplink" -#~ msgstr "上行" - -#~ msgid "allf" -#~ msgstr "全部" - -#~ msgid "qos_connbytes" -#~ msgstr "Qos連線位元組數" diff --git a/package/luci/applications/luci-app-radicale/Makefile b/package/luci/applications/luci-app-radicale/Makefile deleted file mode 100644 index 2b969ace50..0000000000 --- a/package/luci/applications/luci-app-radicale/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# Copyright (C) 2008-2016 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=luci-app-radicale - -# Version == major.minor.patch -# increase "minor" on new functionality and "patch" on patches/optimization -PKG_VERSION:=1.1.0 - -# Release == build -# increase on changes of translation files -PKG_RELEASE:=1 - -PKG_LICENSE:=Apache-2.0 -PKG_MAINTAINER:=Christian Schoenebeck - -# LuCI specific settings -LUCI_TITLE:=LuCI Support for Radicale CardDAV/CalDAV -LUCI_DEPENDS:=+luci-mod-admin-full -LUCI_PKGARCH:=all - -define Package/$(PKG_NAME)/config -# shown in make menuconfig -help - $(LUCI_TITLE) - . - !!! Package "radicale-py2" or "radicale-py3" needs to be !!! - !!! installed sepearatly. There is no buildin dependency set !!! - . - Version: $(PKG_VERSION)-$(PKG_RELEASE) - $(PKG_MAINTAINER) -endef - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-radicale/luasrc/controller/radicale.lua b/package/luci/applications/luci-app-radicale/luasrc/controller/radicale.lua deleted file mode 100644 index 0be433a48d..0000000000 --- a/package/luci/applications/luci-app-radicale/luasrc/controller/radicale.lua +++ /dev/null @@ -1,239 +0,0 @@ --- Copyright 2014-2016 Christian Schoenebeck --- Licensed under the Apache License, Version 2.0 - -module("luci.controller.radicale", package.seeall) - -local NX = require("nixio") -local NXFS = require("nixio.fs") -local DISP = require("luci.dispatcher") -local HTTP = require("luci.http") -local I18N = require("luci.i18n") -- not globally avalible here -local IPKG = require("luci.model.ipkg") -local UTIL = require("luci.util") -local SYS = require("luci.sys") - -local srv_name = "radicale" -local srv_ver_min = "1.1" -- minimum version of service required -local srv_ver_cmd = [[/usr/bin/radicale --version]] -local app_name = "luci-app-radicale" -local app_title = I18N.translate("Radicale CalDAV/CardDAV Server") -local app_version = "1.1.0-1" - -function index() - entry( {"admin", "services", "radicale"}, alias("admin", "services", "radicale", "edit"), _("CalDAV/CardDAV"), 58) - entry( {"admin", "services", "radicale", "edit"}, cbi("radicale") ).leaf = true - entry( {"admin", "services", "radicale", "logview"}, call("_logread") ).leaf = true - entry( {"admin", "services", "radicale", "startstop"}, post("_startstop") ).leaf = true - entry( {"admin", "services", "radicale", "status"}, call("_status") ).leaf = true -end - --- Application / Service specific information functions -function app_description() - return I18N.translate("The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) server solution.") .. [[
    ]] - .. I18N.translate("Calendars and address books are available for both local and remote access, possibly limited through authentication policies.") .. [[
    ]] - .. I18N.translate("They can be viewed and edited by calendar and contact clients on mobile phones or computers.") -end -function app_title_main() - return [[]] - .. I18N.translate(app_title) - .. [[]] -end -function app_title_back() - return [[]] - .. I18N.translate(app_title) - .. [[]] -end -function app_err_value() - if not service_version() then - return [[


        ]] - .. I18N.translate("Software package '%s' is not installed." % srv_name) - .. [[

          ]] - .. I18N.translate("required") .. [[: ]] .. srv_name .. [[ ]] .. srv_ver_min - .. [[

        ]] - .. [[]] - .. I18N.translate("Please install current version !") - .. [[
     

    ]] - else - return [[


        ]] - .. I18N.translate("Software package '%s' is outdated." % srv_name) - .. [[

          ]] - .. I18N.translate("installed") .. [[: ]] .. srv_name .. [[ ]] .. service_version() - .. [[
          ]] - .. I18N.translate("required") .. [[: ]] .. srv_name .. [[ ]] .. srv_ver_min - .. [[

        ]] - .. [[]] - .. I18N.translate("Please update to current version !") - .. [[
     

    ]] - end -end - -function service_version() - local ver = nil - 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() - return IPKG.compare_versions((service_version() or "0"), ">=", srv_ver_min) -end - --- called by XHR.get from detail_logview.htm -function _logread() - -- read application settings - local uci = UCI.cursor() - local logfile = uci:get("radicale", "radicale", "logfile") or "/var/log/radicale" - uci:unload("radicale") - - local ldata=NXFS.readfile(logfile) - if not ldata or #ldata == 0 then - ldata="_nodata_" - end - HTTP.write(ldata) -end - --- called by XHR.get from detail_startstop.htm -function _startstop() - local pid = get_pid() - if pid > 0 then - SYS.call("/etc/init.d/radicale stop") - NX.nanosleep(1) -- sleep a second - if NX.kill(pid, 0) then -- still running - NX.kill(pid, 9) -- send SIGKILL - end - pid = 0 - else - SYS.call("/etc/init.d/radicale start") - NX.nanosleep(1) -- sleep a second - pid = get_pid() - if pid > 0 and not NX.kill(pid, 0) then - pid = 0 -- process did not start - end - end - HTTP.write(tostring(pid)) -- HTTP needs string not number -end - --- called by XHR.poll from detail_startstop.htm -function _status() - local pid = get_pid() - HTTP.write(tostring(pid)) -- HTTP needs string not number -end - ---return pid of running process -function get_pid() - return tonumber(SYS.exec([[ps | grep "[p]ython.*[r]adicale" 2>/dev/null | awk '{print $1}']])) or 0 -end - --- replacement of build-in parse of "Value" --- modified AbstractValue.parse(self, section, novld) from cbi.lua --- validate is called if rmempty/optional true or false --- before write check if forcewrite, value eq default, and more -function value_parse(self, section, novld) - local fvalue = self:formvalue(section) - local fexist = ( fvalue and (#fvalue > 0) ) -- not "nil" and "not empty" - local cvalue = self:cfgvalue(section) - local rm_opt = ( self.rmempty or self.optional ) - local eq_cfg -- flag: equal cfgvalue - - -- If favlue and cvalue are both tables and have the same content - -- make them identical - if type(fvalue) == "table" and type(cvalue) == "table" then - eq_cfg = (#fvalue == #cvalue) - if eq_cfg then - for i=1, #fvalue do - if cvalue[i] ~= fvalue[i] then - eq_cfg = false - end - end - end - if eq_cfg then - fvalue = cvalue - end - end - - -- removed parameter "section" from function call because used/accepted nowhere - -- also removed call to function "transfer" - local vvalue, errtxt = self:validate(fvalue) - - -- error handling; validate return "nil" - if not vvalue then - if novld then -- and "novld" set - return -- then exit without raising an error - end - - if fexist then -- and there is a formvalue - self:add_error(section, "invalid", errtxt) - return -- so data are invalid - elseif not rm_opt then -- and empty formvalue but NOT (rmempty or optional) set - self:add_error(section, "missing", errtxt) - return -- so data is missing - elseif errtxt then - self:add_error(section, "invalid", errtxt) - return - end --- error ("\n option: " .. self.option .. --- "\n fvalue: " .. tostring(fvalue) .. --- "\n fexist: " .. tostring(fexist) .. --- "\n cvalue: " .. tostring(cvalue) .. --- "\n vvalue: " .. tostring(vvalue) .. --- "\n vexist: " .. tostring(vexist) .. --- "\n rm_opt: " .. tostring(rm_opt) .. --- "\n eq_cfg: " .. tostring(eq_cfg) .. --- "\n eq_def: " .. tostring(eq_def) .. --- "\n novld : " .. tostring(novld) .. --- "\n errtxt: " .. tostring(errtxt) ) - end - - -- lets continue with value returned from validate - eq_cfg = ( vvalue == cvalue ) -- update equal_config flag - local vexist = ( vvalue and (#vvalue > 0) ) and true or false -- not "nil" and "not empty" - local eq_def = ( vvalue == self.default ) -- equal_default flag - - -- (rmempty or optional) and (no data or equal_default) - if rm_opt and (not vexist or eq_def) then - if self:remove(section) then -- remove data from UCI - self.section.changed = true -- and push events - end - return - end - - -- not forcewrite and no changes, so nothing to write - if not self.forcewrite and eq_cfg then - return - end - - -- we should have a valid value here - assert (vvalue, "\n option: " .. self.option .. - "\n fvalue: " .. tostring(fvalue) .. - "\n fexist: " .. tostring(fexist) .. - "\n cvalue: " .. tostring(cvalue) .. - "\n vvalue: " .. tostring(vvalue) .. - "\n vexist: " .. tostring(vexist) .. - "\n rm_opt: " .. tostring(rm_opt) .. - "\n eq_cfg: " .. tostring(eq_cfg) .. - "\n eq_def: " .. tostring(eq_def) .. - "\n errtxt: " .. tostring(errtxt) ) - - -- write data to UCI; raise event only on changes - if self:write(section, vvalue) and not eq_cfg then - self.section.changed = true - end -end diff --git a/package/luci/applications/luci-app-radicale/luasrc/model/cbi/radicale.lua b/package/luci/applications/luci-app-radicale/luasrc/model/cbi/radicale.lua deleted file mode 100644 index c610478bcb..0000000000 --- a/package/luci/applications/luci-app-radicale/luasrc/model/cbi/radicale.lua +++ /dev/null @@ -1,748 +0,0 @@ --- Copyright 2015-2016 Christian Schoenebeck --- Licensed under the Apache License, Version 2.0 - -local NXFS = require("nixio.fs") -local DISP = require("luci.dispatcher") -local DTYP = require("luci.cbi.datatypes") -local HTTP = require("luci.http") -local UTIL = require("luci.util") -local UCI = require("luci.model.uci") -local SYS = require("luci.sys") -local WADM = require("luci.tools.webadmin") -local CTRL = require("luci.controller.radicale") -- this application's controller and multiused functions - --- ################################################################################################# --- Error handling if not installed or wrong version -- ######################### -if not CTRL.service_ok() then - local f = SimpleForm("__sf") - f.title = CTRL.app_title_main() - f.description = CTRL.app_description() - f.embedded = true - f.submit = false - f.reset = false - - local s = f:section(SimpleSection) - s.title = [[]] .. [[]] - .. translate("Software update required") - .. [[]] .. [[]] - - local v = s:option(DummyValue, "_dv") - v.rawhtml = true - v.value = CTRL.app_err_value - - return f -end - --- ################################################################################################# --- Error handling if no config, create an empty one -- ######################### -if not NXFS.access("/etc/config/radicale") then - NXFS.writefile("/etc/config/radicale", "") -end - --- ################################################################################################# --- takeover arguments if any -- ################################################ --- then show/edit selected file -if arg[1] then - local argument = arg[1] - local filename = "" - - -- SimpleForm ------------------------------------------------ - local ft = SimpleForm("_text") - ft.title = CTRL.app_title_back() - ft.description = CTRL.app_description() - ft.redirect = DISP.build_url("admin", "services", "radicale") .. "#cbi-radicale-" .. argument - if argument == "logger" then - ft.reset = false - ft.submit = translate("Reload") - local uci = UCI.cursor() - filename = uci:get("radicale", "logger", "file_path") or "/var/log/radicale" - uci:unload("radicale") - filename = filename .. "/radicale" - elseif argument == "auth" then - ft.submit = translate("Save") - filename = "/etc/radicale/users" - elseif argument == "rights" then - ft.submit = translate("Save") - filename = "/etc/radicale/rights" - else - error("Invalid argument given as section") - end - if argument ~= "logger" and not NXFS.access(filename) then - NXFS.writefile(filename, "") - end - - -- SimpleSection --------------------------------------------- - local fs = ft:section(SimpleSection) - if argument == "logger" then - fs.title = translate("Log-file Viewer") - fs.description = translate("Please press [Reload] button below to reread the file.") - elseif argument == "auth" then - fs.title = translate("Authentication") - fs.description = translate("Place here the 'user:password' pairs for your users which should have access to Radicale.") - .. [[
    ]] - .. translate("Keep in mind to use the correct hashing algorithm !") - .. [[]] - else -- rights - fs.title = translate("Rights") - fs.description = translate("Authentication login is matched against the 'user' key, " - .. "and collection's path is matched against the 'collection' key.") .. " " - .. translate("You can use Python's ConfigParser interpolation values %(login)s and %(path)s.") .. " " - .. translate("You can also get groups from the user regex in the collection with {0}, {1}, etc.") - .. [[
    ]] - .. translate("For example, for the 'user' key, '.+' means 'authenticated user'" .. " " - .. "and '.*' means 'anybody' (including anonymous users).") - .. [[
    ]] - .. translate("Section names are only used for naming the rule.") - .. [[
    ]] - .. translate("Leading or ending slashes are trimmed from collection's path.") - end - - -- TextValue ------------------------------------------------- - local tt = fs:option(TextValue, "_textvalue") - tt.rmempty = true - if argument == "logger" then - tt.readonly = true - tt.rows = 30 - function tt.write() - HTTP.redirect(DISP.build_url("admin", "services", "radicale", "edit", argument)) - end - else - tt.rows = 15 - function tt.write(self, section, value) - if not value then value = "" end - NXFS.writefile(filename, value:gsub("\r\n", "\n")) - return true --HTTP.redirect(DISP.build_url("admin", "services", "radicale", "edit") .. "#cbi-radicale-" .. argument) - end - end - - function tt.cfgvalue() - return NXFS.readfile(filename) or - string.format(translate("File '%s' not found !"), filename) - end - - return ft - -end - --- cbi-map -- ################################################################## -local m = Map("radicale") -m.title = CTRL.app_title_main() -m.description = CTRL.app_description() -m.template = "radicale/tabmap_nsections" -m.tabbed = true -function m.commit_handler(self) - if self.changed then -- changes ? - os.execute("/etc/init.d/radicale reload &") -- reload configuration - end -end - --- cbi-section "System" -- ##################################################### -local sys = m:section( NamedSection, "system", "system" ) -sys.title = translate("System") -sys.description = nil -function sys.cfgvalue(self, section) - if not self.map:get(section) then -- section might not exist - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - --- start/stop button ----------------------------------------------------------- -local btn = sys:option(DummyValue, "_startstop") -btn.template = "radicale/btn_startstop" -btn.inputstyle = nil -btn.rmempty = true -btn.title = translate("Start / Stop") -btn.description = translate("Start/Stop Radicale server") -function btn.cfgvalue(self, section) - local pid = CTRL.get_pid(true) - if pid > 0 then - btn.inputtitle = "PID: " .. pid - btn.inputstyle = "reset" - btn.disabled = false - else - btn.inputtitle = translate("Start") - btn.inputstyle = "apply" - btn.disabled = false - end - return true -end - --- enabled --------------------------------------------------------------------- -local ena = sys:option(Flag, "_enabled") -ena.title = translate("Auto-start") -ena.description = translate("Enable/Disable auto-start of Radicale on system start-up and interface events") -ena.orientation = "horizontal" -- put description under the checkbox -ena.rmempty = false -- force write() function -function ena.cfgvalue(self, section) - return (SYS.init.enabled("radicale")) and self.enabled or self.disabled -end -function ena.write(self, section, value) - if value == self.enabled then - return SYS.init.enable("radicale") - else - return SYS.init.disable("radicale") - end -end - --- boot_delay ------------------------------------------------------------------ -local bd = sys:option(Value, "boot_delay") -bd.title = translate("Boot delay") -bd.description = translate("Delay (in seconds) during system boot before Radicale start") - .. [[
    ]] - .. translate("During delay ifup-events are not monitored !") -bd.default = "10" -function bd.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function bd.validate(self, value) - local val = tonumber(value) - if not val then - return nil, self.title .. ": " .. translate("Value is not a number") - elseif val < 0 or val > 300 then - return nil, self.title .. ": " .. translate("Value not between 0 and 300") - end - return value -end - - --- cbi-section "Server" -- ##################################################### -local srv = m:section( NamedSection, "server", "setting" ) -srv.title = translate("Server") -srv.description = nil -function srv.cfgvalue(self, section) - if not self.map:get(section) then -- section might not exist - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - --- hosts ----------------------------------------------------------------------- -local sh = srv:option( DynamicList, "hosts" ) -sh.title = translate("Address:Port") -sh.description = translate("'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on") - .. [[
    ]] - .. translate("Port numbers below 1024 (Privileged ports) are not supported") - .. [[]] -sh.placeholder = "0.0.0.0:5232" -sh.rmempty = true -function sh.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- realm ----------------------------------------------------------------------- -local alm = srv:option( Value, "realm" ) -alm.title = translate("Logon message") -alm.description = translate("Message displayed in the client when a password is needed.") -alm.default = "Radicale - Password Required" -function alm.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function alm.validate(self, value) - if value then - return value - else - return self.default - end -end - --- ssl ------------------------------------------------------------------------- -local ssl = srv:option( Flag, "ssl" ) -ssl.title = translate("Enable HTTPS") -ssl.description = nil -function ssl.write(self, section, value) - if value == "0" then -- delete all if not https enabled - self.map:del(section, "protocol") -- protocol - self.map:del(section, "certificate") -- certificate - self.map:del(section, "key") -- private key - self.map:del(section, "ciphers") -- ciphers - return self.map:del(section, self.option) - else - return self.map:set(section, self.option, value) - end -end - --- protocol -------------------------------------------------------------------- -local prt = srv:option( ListValue, "protocol" ) -prt.title = translate("SSL Protocol") -prt.description = translate("'AUTO' selects the highest protocol version that client and server support.") -prt.widget = "select" -prt.default = "PROTOCOL_SSLv23" -prt:depends ("ssl", "1") -prt:value ("PROTOCOL_SSLv23", translate("AUTO")) -prt:value ("PROTOCOL_SSLv2", "SSL v2") -prt:value ("PROTOCOL_SSLv3", "SSL v3") -prt:value ("PROTOCOL_TLSv1", "TLS v1") -prt:value ("PROTOCOL_TLSv1_1", "TLS v1.1") -prt:value ("PROTOCOL_TLSv1_2", "TLS v1.2") -function prt.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- certificate ----------------------------------------------------------------- -local crt = srv:option( Value, "certificate" ) -crt.title = translate("Certificate file") -crt.description = translate("Full path and file name of certificate") -crt.placeholder = "/etc/radicale/ssl/server.crt" -crt:depends ("ssl", "1") -function crt.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function crt.validate(self, value) - local _ssl = ssl:formvalue(srv.section) or "0" - if _ssl == "0" then - return "" -- ignore if not https enabled - end - if value then -- otherwise errors in datatype check - if DTYP.file(value) then - return value - else - return nil, self.title .. ": " .. translate("File not found !") - end - else - return nil, self.title .. ": " .. translate("Path/File required !") - end -end - --- key ------------------------------------------------------------------------- -local key = srv:option( Value, "key" ) -key.title = translate("Private key file") -key.description = translate("Full path and file name of private key") -key.placeholder = "/etc/radicale/ssl/server.key" -key:depends ("ssl", "1") -function key.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function key.validate(self, value) - local _ssl = ssl:formvalue(srv.section) or "0" - if _ssl == "0" then - return "" -- ignore if not https enabled - end - if value then -- otherwise errors in datatype check - if DTYP.file(value) then - return value - else - return nil, self.title .. ": " .. translate("File not found !") - end - else - return nil, self.title .. ": " .. translate("Path/File required !") - end -end - --- ciphers --------------------------------------------------------------------- ---local cip = srv:option( Value, "ciphers" ) ---cip.title = translate("Ciphers") ---cip.description = translate("OPTIONAL: See python's ssl module for available ciphers") ---cip.rmempty = true ---cip:depends ("ssl", "1") - --- cbi-section "Authentication" -- ############################################# -local aut = m:section( NamedSection, "auth", "setting" ) -aut.title = translate("Authentication") -aut.description = translate("Authentication method to allow access to Radicale server.") -function aut.cfgvalue(self, section) - if not self.map:get(section) then -- section might not exist - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - --- type ----------------------------------------------------------------------- -local aty = aut:option( ListValue, "type" ) -aty.title = translate("Authentication method") -aty.description = nil -aty.widget = "select" -aty.default = "None" -aty:value ("None", translate("None")) -aty:value ("htpasswd", translate("htpasswd file")) ---aty:value ("IMAP", "IMAP") -- The IMAP authentication module relies on the imaplib module. ---aty:value ("LDAP", "LDAP") -- The LDAP authentication module relies on the python-ldap module. ---aty:value ("PAM", "PAM") -- The PAM authentication module relies on the python-pam module. ---aty:value ("courier", "courier") ---aty:value ("HTTP", "HTTP") -- The HTTP authentication module relies on the requests module ---aty:value ("remote_user", "remote_user") ---aty:value ("custom", translate("custom")) -function aty.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function aty.write(self, section, value) - if value ~= "htpasswd" then - self.map:del(section, "htpasswd_encryption") - elseif value ~= "IMAP" then - self.map:del(section, "imap_hostname") - self.map:del(section, "imap_port") - self.map:del(section, "imap_ssl") - end - if value ~= self.default then - return self.map:set(section, self.option, value) - else - return self.map:del(section, self.option) - end -end - --- htpasswd_encryption --------------------------------------------------------- -local hte = aut:option( ListValue, "htpasswd_encryption" ) -hte.title = translate("Encryption method") -hte.description = nil -hte.widget = "select" -hte.default = "crypt" -hte:depends ("type", "htpasswd") -hte:value ("crypt", translate("crypt")) -hte:value ("plain", translate("plain")) -hte:value ("sha1", translate("SHA-1")) -hte:value ("ssha", translate("salted SHA-1")) -function hte.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- htpasswd_file (dummy) ------------------------------------------------------- -local htf = aut:option( Value, "_htf" ) -htf.title = translate("htpasswd file") -htf.description = [[]] - .. translate("Read only!") - .. [[ ]] - .. translate("Radicale uses '/etc/radicale/users' as htpasswd file.") - .. [[
    ]] - .. translate("To edit the file follow this link!") - .. [[]] -htf.readonly = true -htf:depends ("type", "htpasswd") -function htf.cfgvalue() - return "/etc/radicale/users" -end - --- cbi-section "Rights" -- ##################################################### -local rig = m:section( NamedSection, "rights", "setting" ) -rig.title = translate("Rights") -rig.description = translate("Control the access to data collections.") -function rig.cfgvalue(self, section) - if not self.map:get(section) then -- section might not exist - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - --- type ----------------------------------------------------------------------- -local rty = rig:option( ListValue, "type" ) -rty.title = translate("Rights backend") -rty.description = nil -rty.widget = "select" -rty.default = "None" -rty:value ("None", translate("Full access for everybody (including anonymous)")) -rty:value ("authenticated", translate("Full access for authenticated Users") ) -rty:value ("owner_only", translate("Full access for Owner only") ) -rty:value ("owner_write", translate("Owner allow write, authenticated users allow read") ) -rty:value ("from_file", translate("Rights are based on a regexp-based file") ) ---rty:value ("custom", "Custom handler") -function rty.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function rty.write(self, section, value) - if value ~= "custom" then - self.map:del(section, "custom_handler") - end - if value ~= self.default then - return self.map:set(section, self.option, value) - else - return self.map:del(section, self.option) - end -end - --- from_file (dummy) ----------------------------------------------------------- -local rtf = rig:option( Value, "_rtf" ) -rtf.title = translate("RegExp file") -rtf.description = [[]] - .. translate("Read only!") - .. [[ ]] - .. translate("Radicale uses '/etc/radicale/rights' as regexp-based file.") - .. [[
    ]] - .. translate("To edit the file follow this link!") - .. [[]] -rtf.readonly = true -rtf:depends ("type", "from_file") -function rtf.cfgvalue() - return "/etc/radicale/rights" -end - --- cbi-section "Storage" -- #################################################### -local sto = m:section( NamedSection, "storage", "setting" ) -sto.title = translate("Storage") -sto.description = nil -function sto.cfgvalue(self, section) - if not self.map:get(section) then -- section might not exist - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - --- type ----------------------------------------------------------------------- -local sty = sto:option( ListValue, "type" ) -sty.title = translate("Storage backend") -sty.description = translate("WARNING: Only 'File-system' is documented and tested by Radicale development") -sty.widget = "select" -sty.default = "filesystem" -sty:value ("filesystem", translate("File-system")) ---sty:value ("multifilesystem", translate("") ) ---sty:value ("database", translate("Database") ) ---sty:value ("custom", translate("Custom") ) -function sty.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function sty.write(self, section, value) - if value ~= "filesystem" then - self.map:del(section, "filesystem_folder") - end - if value ~= self.default then - return self.map:set(section, self.option, value) - else - return self.map:del(section, self.option) - end -end - ---filesystem_folder ------------------------------------------------------------ -local sfi = sto:option( Value, "filesystem_folder" ) -sfi.title = translate("Directory") -sfi.description = nil -sfi.placeholder = "/srv/radicale" -sfi:depends ("type", "filesystem") -function sfi.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function sfi.validate(self, value) - local _typ = sty:formvalue(sto.section) or "" - if _typ ~= "filesystem" then - return "" -- ignore if not htpasswd - end - if value then -- otherwise errors in datatype check - if DTYP.directory(value) then - return value - else - return nil, self.title .. ": " .. translate("Directory not exists/found !") - end - else - return nil, self.title .. ": " .. translate("Directory required !") - end -end - --- cbi-section "Logging" -- #################################################### -local log = m:section( NamedSection, "logger", "logging" ) -log.title = translate("Logging") -log.description = nil -function log.cfgvalue(self, section) - if not self.map:get(section) then -- section might not exist - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - --- console_level --------------------------------------------------------------- -local lco = log:option( ListValue, "console_level" ) -lco.title = translate("Console Log level") -lco.description = nil -lco.widget = "select" -lco.default = "ERROR" -lco:value ("DEBUG", translate("Debug")) -lco:value ("INFO", translate("Info") ) -lco:value ("WARNING", translate("Warning") ) -lco:value ("ERROR", translate("Error") ) -lco:value ("CRITICAL", translate("Critical") ) -function lco.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function lco.write(self, section, value) - if value ~= self.default then - return self.map:set(section, self.option, value) - else - return self.map:del(section, self.option) - end -end - --- syslog_level ---------------------------------------------------------------- -local lsl = log:option( ListValue, "syslog_level" ) -lsl.title = translate("Syslog Log level") -lsl.description = nil -lsl.widget = "select" -lsl.default = "WARNING" -lsl:value ("DEBUG", translate("Debug")) -lsl:value ("INFO", translate("Info") ) -lsl:value ("WARNING", translate("Warning") ) -lsl:value ("ERROR", translate("Error") ) -lsl:value ("CRITICAL", translate("Critical") ) -function lsl.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function lsl.write(self, section, value) - if value ~= self.default then - return self.map:set(section, self.option, value) - else - return self.map:del(section, self.option) - end -end - --- file_level ------------------------------------------------------------------ -local lfi = log:option( ListValue, "file_level" ) -lfi.title = translate("File Log level") -lfi.description = nil -lfi.widget = "select" -lfi.default = "INFO" -lfi:value ("DEBUG", translate("Debug")) -lfi:value ("INFO", translate("Info") ) -lfi:value ("WARNING", translate("Warning") ) -lfi:value ("ERROR", translate("Error") ) -lfi:value ("CRITICAL", translate("Critical") ) -function lfi.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function lfi.write(self, section, value) - if value ~= self.default then - return self.map:set(section, self.option, value) - else - return self.map:del(section, self.option) - end -end - --- file_path ------------------------------------------------------------------- -local lfp = log:option( Value, "file_path" ) -lfp.title = translate("Log-file directory") -lfp.description = translate("Directory where the rotating log-files are stored") - .. [[
    ]] - .. translate("To view latest log file follow this link!") - .. [[]] -lfp.default = "/var/log/radicale" -function lfp.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function lfp.validate(self, value) - if not value or (#value < 1) or (value:find("/") ~= 1) then - return nil, self.title .. ": " .. translate("no valid path given!") - end - return value -end - --- file_maxbytes --------------------------------------------------------------- -local lmb = log:option( Value, "file_maxbytes" ) -lmb.title = translate("Log-file size") -lmb.description = translate("Maximum size of each rotation log-file.") - .. [[
    ]] - .. translate("Setting this parameter to '0' will disable rotation of log-file.") - .. [[]] -lmb.default = "8196" -function lmb.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function lmb.validate(self, value) - if value then -- otherwise errors in datatype check - if DTYP.uinteger(value) then - return value - else - return nil, self.title .. ": " .. translate("Value is not an Integer >= 0 !") - end - else - return nil, self.title .. ": " .. translate("Value required ! Integer >= 0 !") - end -end - --- file_backupcount ------------------------------------------------------------ -local lbc = log:option( Value, "file_backupcount" ) -lbc.title = translate("Log-backup Count") -lbc.description = translate("Number of backup files of log to create.") - .. [[
    ]] - .. translate("Setting this parameter to '0' will disable rotation of log-file.") - .. [[]] -lbc.default = "1" -function lbc.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end -function lbc.validate(self, value) - if value then -- otherwise errors in datatype check - if DTYP.uinteger(value) then - return value - else - return nil, self.title .. ": " .. translate("Value is not an Integer >= 0 !") - end - else - return nil, self.title .. ": " .. translate("Value required ! Integer >= 0 !") - end -end - --- cbi-section "Encoding" -- ################################################### -local enc = m:section( NamedSection, "encoding", "setting" ) -enc.title = translate("Encoding") -enc.description = translate("Change here the encoding Radicale will use instead of 'UTF-8' " - .. "for responses to the client and/or to store data inside collections.") -function enc.cfgvalue(self, section) - if not self.map:get(section) then -- section might not exist - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - --- request --------------------------------------------------------------------- -local enr = enc:option( Value, "request" ) -enr.title = translate("Response Encoding") -enr.description = translate("Encoding for responding requests.") -enr.default = "utf-8" -function enr.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- stock ----------------------------------------------------------------------- -local ens = enc:option( Value, "stock" ) -ens.title = translate("Storage Encoding") -ens.description = translate("Encoding for storing local collections.") -ens.default = "utf-8" -function ens.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- cbi-section "Headers" -- #################################################### -local hea = m:section( NamedSection, "headers", "setting" ) -hea.title = translate("Additional HTTP headers") -hea.description = translate("Cross-origin resource sharing (CORS) is a mechanism that allows restricted resources (e.g. fonts, JavaScript, etc.) " - .. "on a web page to be requested from another domain outside the domain from which the resource originated.") -function hea.cfgvalue(self, section) - if not self.map:get(section) then -- section might not exist - self.map:set(section, nil, self.sectiontype) - end - return self.map:get(section) -end - --- Access_Control_Allow_Origin ------------------------------------------------- -local heo = hea:option( DynamicList, "Access_Control_Allow_Origin" ) -heo.title = translate("Access-Control-Allow-Origin") -heo.description = nil -function heo.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- Access_Control_Allow_Methods ------------------------------------------------ -local hem = hea:option( DynamicList, "Access_Control_Allow_Methods" ) -hem.title = translate("Access-Control-Allow-Methods") -hem.description = nil -function hem.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- Access_Control_Allow_Headers ------------------------------------------------ -local heh = hea:option( DynamicList, "Access_Control_Allow_Headers" ) -heh.title = translate("Access-Control-Allow-Headers") -heh.description = nil -function heh.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - --- Access_Control_Expose_Headers ----------------------------------------------- -local hee = hea:option( DynamicList, "Access_Control_Expose_Headers" ) -hee.title = translate("Access-Control-Expose-Headers") -hee.description = nil -function hee.parse(self, section, novld) - CTRL.value_parse(self, section, novld) -end - -return m diff --git a/package/luci/applications/luci-app-radicale/luasrc/view/radicale/btn_startstop.htm b/package/luci/applications/luci-app-radicale/luasrc/view/radicale/btn_startstop.htm deleted file mode 100644 index d9ef82214f..0000000000 --- a/package/luci/applications/luci-app-radicale/luasrc/view/radicale/btn_startstop.htm +++ /dev/null @@ -1,49 +0,0 @@ - - - - -<%+cbi/valueheader%> - -<% if self:cfgvalue(section) ~= false then --- We need to garantie that function cfgvalue run first to set missing parameters -%> - - - " style="font-size: 100%;" type="button" onclick="onclick_startstop(this.id)" - <%= - attr("name", section) .. attr("id", cbid) .. attr("value", self.inputtitle) .. ifattr(self.disabled, "disabled") - %> /> -<% end %> - -<%+cbi/valuefooter%> - diff --git a/package/luci/applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm b/package/luci/applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm deleted file mode 100644 index 45fe60cc80..0000000000 --- a/package/luci/applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm +++ /dev/null @@ -1,49 +0,0 @@ -<%- if firstmap and messages then local msg; for _, msg in ipairs(messages) do -%> -
    <%=pcdata(msg)%>
    -<%- end end -%> - -<%-+cbi/apply_xhr-%> - -
    - <% if self.title and #self.title > 0 then %>

    <%=self.title%>

    <% end %> - <% if self.description and #self.description > 0 then %>
    <%=self.description%>
    <% end %> - <%- if firstmap and applymap then cbi_apply_xhr(self.config, parsechain, redirect) end -%> - - <% if self.tabbed then %> -
      - <%- self.selected_tab = luci.http.formvalue("tab.m-" .. self.config) %> - <% for i, section in ipairs(self.children) do %> - <%- if not self.selected_tab then self.selected_tab = section.sectiontype end %> -
    • - <%=section.title or section.section or section.sectiontype %> - <% if section.sectiontype == self.selected_tab then %><% end %> -
    • - <% end %> -
    -
    - <% for i, section in ipairs(self.children) do %> -
    style="display:none"<% end %>> - <% section:render() %> -
    - - <% end %> - - <% else %> - <%- self:render_children() %> - <% end %> - - <% if not self.save then -%> -
    - <% for _, section in ipairs(self.children) do %> - <% if section.error and section.error[section.section] then -%> -
    • - <%:One or more missing/invalid fields on tab%>: <%=section.title or section.section or section.sectiontype%> -
    - <%- end %> - <% end %> -
    - <%- end %> - -
    - -
    diff --git a/package/luci/applications/luci-app-radicale/po/de/radicale.po b/package/luci/applications/luci-app-radicale/po/de/radicale.po deleted file mode 100644 index fda4245335..0000000000 --- a/package/luci/applications/luci-app-radicale/po/de/radicale.po +++ /dev/null @@ -1,459 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-radicale 1.1.0-1\n" -"POT-Creation-Date: 2016-01-30 20:34+0100\n" -"PO-Revision-Date: 2016-01-31 20:49+0100\n" -"Last-Translator: Christian Schönebeck \n" -"Language-Team: \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.4\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "" -"'AUTO' selects the highest protocol version that client and server support." -msgstr "" -"'AUTO' wählt die höchste Protokollversion, die Client und Server " -"unterstützen." - -msgid "" -"'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on" -msgstr "" -"'Hostname:Port' oder 'IPv4:Port' oder '[IPv6]:Port' die Radicale überwachen " -"soll." - -msgid "AUTO" -msgstr "AUTO" - -msgid "Access-Control-Allow-Headers" -msgstr "Access-Control-Allow-Headers" - -msgid "Access-Control-Allow-Methods" -msgstr "Access-Control-Allow-Methods" - -msgid "Access-Control-Allow-Origin" -msgstr "Access-Control-Allow-Origin" - -msgid "Access-Control-Expose-Headers" -msgstr "Access-Control-Expose-Headers" - -msgid "Additional HTTP headers" -msgstr "Zusätzliche HTTP headers" - -msgid "Address:Port" -msgstr "Adresse:Port" - -msgid "Authentication" -msgstr "Authentifizierung" - -msgid "" -"Authentication login is matched against the 'user' key, and collection's " -"path is matched against the 'collection' key." -msgstr "" -"Der Login wird gegen die 'user' Schlüssel und die Pfadsammlung gegen die " -"'collection' Schlüssel abgestimmt." - -msgid "Authentication method" -msgstr "Authentifizierungsmethode" - -msgid "Authentication method to allow access to Radicale server." -msgstr "" -"Authentifizierungsmethode um den Zugang zum Radicale Server zu kontrollieren." - -msgid "Auto-start" -msgstr "Autostart" - -msgid "Boot delay" -msgstr "Systemstart-Verzögerung" - -msgid "CalDAV/CardDAV" -msgstr "CalDAV/CardDAV" - -msgid "" -"Calendars and address books are available for both local and remote access, " -"possibly limited through authentication policies." -msgstr "" -"Auf Kalender und Adressbücher kann sowohl Lokal als auch Remote zugegriffen " -"werden, soweit nicht durch Authentifizierungsrichtlinien begrenzt." - -msgid "Certificate file" -msgstr "Zertifikat Datei" - -msgid "" -"Change here the encoding Radicale will use instead of 'UTF-8' for responses " -"to the client and/or to store data inside collections." -msgstr "" -"Ändern Sie hier die Zeichenkodierung die Radicale anstelle von \"UTF-8\" für " -"Antworten an den Client und/oder zum Speichern von Daten in einer Sammlung " -"verwendet." - -msgid "Ciphers" -msgstr "Chiffren" - -msgid "Console Log level" -msgstr "Konsole Protokoll Level" - -msgid "Control the access to data collections." -msgstr "Kontrolliert den Zugriff auf die Daten Sammlungen." - -msgid "Critical" -msgstr "Kritisch" - -msgid "" -"Cross-origin resource sharing (CORS) is a mechanism that allows restricted " -"resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from " -"another domain outside the domain from which the resource originated." -msgstr "" -"Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, um Webbrowsern " -"oder auch anderen Webclients Cross-Origin-Requests zu ermöglichen." - -msgid "Custom" -msgstr "Benutzerdefiniert" - -msgid "Database" -msgstr "Datenbank" - -msgid "Debug" -msgstr "Debug" - -msgid "Delay (in seconds) during system boot before Radicale start" -msgstr "" -"Verzögerung (in Sekunden) während des Systemstarts, bevor Radicale startet" - -msgid "Directory" -msgstr "Verzeichnis" - -msgid "Directory not exists/found !" -msgstr "Verzeichnis nicht gefunden / existiert nicht !" - -msgid "Directory required !" -msgstr "Verzeichnis benötigt !" - -msgid "Directory where the rotating log-files are stored" -msgstr "" -"Verzeichnis in dem die rollierenden Protokolldateien gespeichert werden" - -msgid "During delay ifup-events are not monitored !" -msgstr "Während der Verzögerung werden 'ifup'-Ereignisse nicht überwacht!" - -msgid "Enable HTTPS" -msgstr "Verwende HTTPS" - -msgid "" -"Enable/Disable auto-start of Radicale on system start-up and interface events" -msgstr "" -"Aktiviert/Deaktiviert den Autostart von Radicale beim Systemstart und bei " -"Schnittstellenereignissen." - -msgid "Encoding" -msgstr "Zeichenkodierung" - -msgid "Encoding for responding requests." -msgstr "Zeichenkodierung für die Beantwortung von Anfragen." - -msgid "Encoding for storing local collections." -msgstr "Zeichenkodierung für die Speicherung von lokalen Sammlungen." - -msgid "Encryption method" -msgstr "Verschlüsselungsmethode" - -msgid "Error" -msgstr "Fehler" - -msgid "File '%s' not found !" -msgstr "Datei '%s' wurde nicht gefunden!" - -msgid "File Log level" -msgstr "Datei Protokoll Level" - -msgid "File not found !" -msgstr "Datei nicht gefunden !" - -msgid "File-system" -msgstr "Dateisystem" - -msgid "" -"For example, for the 'user' key, '.+' means 'authenticated user' and '.*' " -"means 'anybody' (including anonymous users)." -msgstr "" -"Beispiel für den 'user' Schlüssel: '. +' bedeutet 'authentifizierten " -"Benutzer' und '. *' bedeutet 'jeder' (einschließlich anonyme Benutzer)." - -msgid "Full access for Owner only" -msgstr "Voller Zugriff nur für den Besitzer" - -msgid "Full access for authenticated Users" -msgstr "Voller Zugriff für authentifizierte Benutzer" - -msgid "Full access for everybody (including anonymous)" -msgstr "Vollzugriff für jedermann (auch anonyme)" - -msgid "Full path and file name of certificate" -msgstr "Vollständiger Pfad und Dateiname der Zertifikat Datei" - -msgid "Full path and file name of private key" -msgstr "Vollständiger Pfad und Dateiname der Privaten Schlüsseldatei" - -msgid "Info" -msgstr "Informationen" - -msgid "Keep in mind to use the correct hashing algorithm !" -msgstr "Denken Sie daran, den korrekten Hash-Algorithmus zu verwenden!" - -msgid "Leading or ending slashes are trimmed from collection's path." -msgstr "" -"Schrägstriche ('/') am Anfang und Ende der Pfadangabe der Sammlung werden " -"von der Pfadangabe abgeschnitten." - -msgid "Log-backup Count" -msgstr "Protokoll Backup Zähler" - -msgid "Log-file Viewer" -msgstr "Protokolldatei Betrachter" - -msgid "Log-file directory" -msgstr "Protokoll-Datei Verzeichnis" - -msgid "Log-file size" -msgstr "Protokoll Dateigröße" - -msgid "Logging" -msgstr "Protokollierung" - -msgid "Logon message" -msgstr "Anmelde-Hinweis" - -msgid "Maximum size of each rotation log-file." -msgstr "Maximale Größe jeder rollierenden Protokoll-Datei." - -msgid "Message displayed in the client when a password is needed." -msgstr "Meldung im Client, wenn ein Kennwort erforderlich ist." - -msgid "NOT installed" -msgstr "nicht installiert" - -msgid "None" -msgstr "Keine" - -msgid "Number of backup files of log to create." -msgstr "Anzahl der Protokoll Backup Dateien, die angelegt werden." - -msgid "OPTIONAL: See python's ssl module for available ciphers" -msgstr "OPTIONAL: Siehe Python SSL-Modul Dokumentation" - -msgid "One or more missing/invalid fields on tab" -msgstr "Ein oder mehrere fehlende/ungültige Felder auf der Registerkarte" - -msgid "Owner allow write, authenticated users allow read" -msgstr "" -"Besitzer haben Schreibrechte, Authentifizierten Benutzer dürfen nur lesen." - -msgid "Path/File required !" -msgstr "Pfad/Datei erforderlich!" - -msgid "" -"Place here the 'user:password' pairs for your users which should have access " -"to Radicale." -msgstr "" -"Speichern Sie hier die 'user: password' Paare für die Benutzer, die Zugriff " -"auf Radicale haben sollte." - -msgid "Please install current version !" -msgstr "Installieren Sie bitte die aktuelle Version!" - -msgid "Please press [Reload] button below to reread the file." -msgstr "" -"Bitte drücken Sie die [Neu laden]-Schaltfläche unten, um die Datei neu " -"einzulesen." - -msgid "Please update to current version !" -msgstr "Aktualisieren Sie bitte auf die aktuelle Version!" - -msgid "Port numbers below 1024 (Privileged ports) are not supported" -msgstr "Port Nummern unter 1024 (Privileged Ports) werden nicht unterstützt." - -msgid "Private key file" -msgstr "Private Schlüssel Datei" - -msgid "Radicale CalDAV/CardDAV Server" -msgstr "Radicale CalDAV/CardDAV Dienst" - -msgid "Radicale uses '/etc/radicale/rights' as regexp-based file." -msgstr "Radicale verwendet '/etc/radicale/rights' als RegExp-basierte Datei." - -msgid "Radicale uses '/etc/radicale/users' as htpasswd file." -msgstr "Radicale verwendet 'etc/radicale/users' als htpasswd Datei." - -msgid "Read only!" -msgstr "Nur lesbar!" - -msgid "RegExp file" -msgstr "RegExp Datei" - -msgid "Reload" -msgstr "Neu laden" - -msgid "Response Encoding" -msgstr "Antwort Zeichenkodierung" - -msgid "Rights" -msgstr "Zugriffsrechte" - -msgid "Rights are based on a regexp-based file" -msgstr "Zugriff basiert auf RegExp-basierter Datei." - -msgid "Rights backend" -msgstr "Zugagsverwaltung" - -msgid "SHA-1" -msgstr "SHA-1" - -msgid "SSL Protocol" -msgstr "SSL Protokol" - -msgid "Save" -msgstr "Speichern" - -msgid "Section names are only used for naming the rule." -msgstr "Abschnittsnamen werden nur für die Benennung der Regel verwendet." - -msgid "Server" -msgstr "Server" - -msgid "Setting this parameter to '0' will disable rotation of log-file." -msgstr "" -"Wenn dieser Parameter auf '0' gesetzt wird, wird die Protokolldatei nicht " -"mehr rolliert!" - -msgid "Software package '%s' is not installed." -msgstr "Software Paket '%s' ist nicht installiert." - -msgid "Software package '%s' is outdated." -msgstr "Software Paket '%s' ist nicht aktuell." - -msgid "Software update required" -msgstr "Software-Update erforderlich" - -msgid "Start" -msgstr "Start" - -msgid "Start / Stop" -msgstr "Start / Stopp" - -msgid "Start/Stop Radicale server" -msgstr "Start / Stopp Radicale Dienst" - -msgid "Storage" -msgstr "Datenspeicher" - -msgid "Storage Encoding" -msgstr "Datenspeicher Kodierung" - -msgid "Storage backend" -msgstr "Datenspeicher Verwaltung" - -msgid "Syslog Log level" -msgstr "Systemlog Level" - -msgid "System" -msgstr "System" - -msgid "" -"The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) " -"server solution." -msgstr "" -"Das Raidcale Projekt bietet eine vollständige CalDAV (Kalender) und CardDAV " -"(Adressbuch) Server Lösung." - -msgid "" -"They can be viewed and edited by calendar and contact clients on mobile " -"phones or computers." -msgstr "" -"Diese können von Kalender- und Adressbuch-Anwendungen auf mobilen Endgeräten " -"und Computern angezeigt und bearbeitet werden." - -msgid "To edit the file follow this link!" -msgstr "Um die Datei zu bearbeiten, folgend Sie dieser Verknüpfung!" - -msgid "To view latest log file follow this link!" -msgstr "" -"Zur Anzeige der letzten Protokolldatei, folgen Sie dieser Verknüpfung !" - -msgid "Value is not a number" -msgstr "Wert ist keine Zahl" - -msgid "Value is not an Integer >= 0 !" -msgstr "Eingabe ist keine Ganzzahl >= 0 !" - -msgid "Value not between 0 and 300" -msgstr "Wert nicht zwischen 0 und 300" - -msgid "Value required ! Integer >= 0 !" -msgstr "Eingabe erforderlich ! Ganzzahl >= 0 !" - -msgid "Version" -msgstr "Version" - -msgid "Version Information" -msgstr "Versionsinformationen" - -msgid "" -"WARNING: Only 'File-system' is documented and tested by Radicale development" -msgstr "" -"WARNUNG: Nur 'File-system' ist vom Radicale Entwicklerteam derzeit " -"dokumentiert und getestet." - -msgid "Warning" -msgstr "Warnung" - -msgid "" -"You can also get groups from the user regex in the collection with {0}, {1}, " -"etc." -msgstr "" -"Sie können auch Gruppen aus der Benutzer regex in der Sammlung mit {0}, {1} " -"usw. bekommen." - -msgid "" -"You can use Python's ConfigParser interpolation values %(login)s and " -"%(path)s." -msgstr "" -"Sie können Python ConfigParser Werte '%(login)s' und '%(path)s' verwenden." - -msgid "crypt" -msgstr "crypt" - -msgid "custom" -msgstr "benutzerdefiniert" - -msgid "htpasswd file" -msgstr "htpasswd Datei" - -msgid "installed" -msgstr "installiert" - -msgid "no valid path given!" -msgstr "Keine gültige Pfadangabe!" - -msgid "or higher" -msgstr "oder höher" - -msgid "plain" -msgstr "unverschlüsselt" - -msgid "required" -msgstr "erforderlich" - -msgid "salted SHA-1" -msgstr "Salted SHA-1" - -#~ msgid "-- Please choose --" -#~ msgstr "-- Bitte auswählen --" - -#~ msgid "-- custom --" -#~ msgstr "-- benutzerdefiniert --" - -#~ msgid "Reveal/hide password" -#~ msgstr "Passwort zeigen/verstecken" diff --git a/package/luci/applications/luci-app-radicale/po/pt-br/radicale.po b/package/luci/applications/luci-app-radicale/po/pt-br/radicale.po deleted file mode 100644 index 17417fa499..0000000000 --- a/package/luci/applications/luci-app-radicale/po/pt-br/radicale.po +++ /dev/null @@ -1,469 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "" -"'AUTO' selects the highest protocol version that client and server support." -msgstr "" -"'AUTO' seleciona a versão mais alto protocolo que o cliente e o servidor " -"suportar." - -msgid "" -"'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on" -msgstr "" -"'NomeDoEquipamento:porta' ou 'IPv4:Porta' ou '[IPv6]:Porta' em que o " -"Radicale deve escutar" - -msgid "AUTO" -msgstr "AUTO" - -msgid "Access-Control-Allow-Headers" -msgstr "Access-Control-Allow-Headers" - -msgid "Access-Control-Allow-Methods" -msgstr "Access-Control-Allow-Methods" - -msgid "Access-Control-Allow-Origin" -msgstr "Access-Control-Allow-Origin" - -msgid "Access-Control-Expose-Headers" -msgstr "Access-Control-Expose-Headers" - -msgid "Additional HTTP headers" -msgstr "Additional HTTP headers" - -msgid "Address:Port" -msgstr "Endereço: Porta" - -#, fuzzy -msgid "Authentication" -msgstr "Autenticação" - -msgid "" -"Authentication login is matched against the 'user' key, and collection's " -"path is matched against the 'collection' key." -msgstr "" -"O nome do usuário na autenticação é comparado com a chave do 'user', e o " -"caminho da coleção é comparado com a chave 'coleção'." - -msgid "Authentication method" -msgstr "Método de autenticação" - -msgid "Authentication method to allow access to Radicale server." -msgstr "Método de autenticação para permitir o acesso ao servidor Radicale." - -msgid "Auto-start" -msgstr "Iniciar automaticamente" - -msgid "Boot delay" -msgstr "Atraso na iniciação" - -msgid "CalDAV/CardDAV" -msgstr "CalDAV/CardDAV" - -msgid "" -"Calendars and address books are available for both local and remote access, " -"possibly limited through authentication policies." -msgstr "" -"Agendas e contados estão disponíveis tanto para acesso local como remoto, " -"possivelmente limitado através das políticas de autenticação." - -msgid "Certificate file" -msgstr "Arquivo do certificado" - -msgid "" -"Change here the encoding Radicale will use instead of 'UTF-8' for responses " -"to the client and/or to store data inside collections." -msgstr "" -"Mude aqui a codificação que o Radicale usará em vez de 'UTF-8' para " -"respostas a clientes ou para armazenar dados dentro das coleções." - -msgid "Ciphers" -msgstr "Cifras" - -msgid "Console Log level" -msgstr "Nível de detalhamento dos registros (log)" - -msgid "Control the access to data collections." -msgstr "Controlar o acesso às coleções de dados." - -#, fuzzy -msgid "Critical" -msgstr "Crítico" - -msgid "" -"Cross-origin resource sharing (CORS) is a mechanism that allows restricted " -"resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from " -"another domain outside the domain from which the resource originated." -msgstr "" -"O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo que " -"permite que os recursos de acesso restrito (por exemplo, fontes, JavaScript, " -"etc.) em uma página web ser solicitado de outro domínio fora do domínio a " -"partir do qual o recurso foi originado." - -msgid "Custom" -msgstr "Personalizadas" - -msgid "Database" -msgstr "Banco de Dados" - -#, fuzzy -msgid "Debug" -msgstr "Depuração" - -msgid "Delay (in seconds) during system boot before Radicale start" -msgstr "" -"Atraso (em segundos) durante a inicialização do sistema antes do Radicale " -"iniciar" - -#, fuzzy -msgid "Directory" -msgstr "Diretório" - -msgid "Directory not exists/found !" -msgstr "O diretório não foi encontrado!" - -msgid "Directory required !" -msgstr "O diretório é necessário!" - -msgid "Directory where the rotating log-files are stored" -msgstr "O diretório onde os registros(log) rotativos são armazenados" - -msgid "During delay ifup-events are not monitored !" -msgstr "Durante a espera, eventos ifup não serão monitorados!" - -msgid "Enable HTTPS" -msgstr "Ativar HTTPS" - -msgid "" -"Enable/Disable auto-start of Radicale on system start-up and interface events" -msgstr "" -"Ativar/Desativar iniciação automática do Radicale na iniciação do sistema e " -"em eventos de interface" - -msgid "Encoding" -msgstr "Codificação" - -msgid "Encoding for responding requests." -msgstr "Codificação para responder pedidos." - -msgid "Encoding for storing local collections." -msgstr "Codificação para armazenar coleções locais." - -msgid "Encryption method" -msgstr "Método de criptografia" - -#, fuzzy -msgid "Error" -msgstr "Erro" - -msgid "File '%s' not found !" -msgstr "Arquivo '%s' não encontrado!" - -msgid "File Log level" -msgstr "Nível de detalhamento dos registos(log) em arquivos" - -msgid "File not found !" -msgstr "Arquivo não encontrado!" - -msgid "File-system" -msgstr "Sistema de arquivos" - -msgid "" -"For example, for the 'user' key, '.+' means 'authenticated user' and '.*' " -"means 'anybody' (including anonymous users)." -msgstr "" -"Por exemplo, para a chave 'user', '.+' Significa 'usuário autenticado' e '." -"*' Significa 'qualquer um' (incluindo usuários anônimos)." - -msgid "Full access for Owner only" -msgstr "Acesso completo somente para o proprietário" - -msgid "Full access for authenticated Users" -msgstr "Acesso completo para usuários autenticados" - -msgid "Full access for everybody (including anonymous)" -msgstr "Acesso completo para todos (incluindo anônimo)" - -msgid "Full path and file name of certificate" -msgstr "Caminho completo e nome do arquivo do certificado" - -msgid "Full path and file name of private key" -msgstr "Caminho e arquivo nome completo da chave privada" - -#, fuzzy -msgid "Info" -msgstr "Informações" - -msgid "Keep in mind to use the correct hashing algorithm !" -msgstr "Fique atento para usar o algoritmo de resumo digital(hash) correto!" - -msgid "Leading or ending slashes are trimmed from collection's path." -msgstr "Barras inicias e finais serão removidas do caminho da coleção." - -msgid "Log-backup Count" -msgstr "Contagem Registro(log) de Backup" - -msgid "Log-file Viewer" -msgstr "Visualizador de Arquivo de Registros(log)" - -msgid "Log-file directory" -msgstr "Diretório do arquivo de registros(log)" - -msgid "Log-file size" -msgstr "Tamanho do arquivo de registros(log)" - -#, fuzzy -msgid "Logging" -msgstr "Registrando os eventos" - -msgid "Logon message" -msgstr "Mensagem de entrada" - -msgid "Maximum size of each rotation log-file." -msgstr "Tamanho máximo para a rotação do arquivo de registros(log)" - -msgid "Message displayed in the client when a password is needed." -msgstr "Mensagem exibida para o cliente quando uma senha é necessária." - -#, fuzzy -msgid "NOT installed" -msgstr "NÃO instalado" - -#, fuzzy -msgid "None" -msgstr "Nada" - -msgid "Number of backup files of log to create." -msgstr "Número de backups dos arquivos de registros(log) a serem criados." - -msgid "OPTIONAL: See python's ssl module for available ciphers" -msgstr "" -"Opcional: veja o módulo SSL do python para conhecer as cifras disponíveis" - -msgid "One or more missing/invalid fields on tab" -msgstr "Um ou campos inválidos/ausentes na aba" - -msgid "Owner allow write, authenticated users allow read" -msgstr "O proprietário pode escrever, os usuários autenticados podem ler" - -msgid "Path/File required !" -msgstr "O caminho/arquivo é necessário!" - -msgid "" -"Place here the 'user:password' pairs for your users which should have access " -"to Radicale." -msgstr "" -"Coloque aqui os pares 'usuário:senha' para os seus usuários que devem ter " -"acesso a Radicale." - -msgid "Please install current version !" -msgstr "Por favor, instale a versão atual!" - -msgid "Please press [Reload] button below to reread the file." -msgstr "Por favor, pressione o botão [Recarregar] abaixo para reler o arquivo." - -msgid "Please update to current version !" -msgstr "Por favor, atualize para a versão atual!" - -msgid "Port numbers below 1024 (Privileged ports) are not supported" -msgstr "Os porta abaixo de 1024 (portas privilegiadas) não são suportadas" - -msgid "Private key file" -msgstr "Arquivo da chave privada" - -msgid "Radicale CalDAV/CardDAV Server" -msgstr "Radicale Servidor CalDAV/CardDAV" - -msgid "Radicale uses '/etc/radicale/rights' as regexp-based file." -msgstr "" -"Radicale usa o '/etc/radicale/rights' como arquivo baseado em expressão " -"regular." - -msgid "Radicale uses '/etc/radicale/users' as htpasswd file." -msgstr "Radicale usa o '/etc/radicale/users' como o arquivo htpasswd." - -msgid "Read only!" -msgstr "Somente leitura!" - -msgid "RegExp file" -msgstr "Arquivo de expressões regulares" - -msgid "Reload" -msgstr "Recarregar" - -msgid "Response Encoding" -msgstr "Codificação da Resposta" - -msgid "Rights" -msgstr "Direitos" - -msgid "Rights are based on a regexp-based file" -msgstr "Os direitos são baseados em um arquivo baseado em expressões regulares" - -msgid "Rights backend" -msgstr "Serviço de Direitos" - -msgid "SHA-1" -msgstr "SHA-1" - -msgid "SSL Protocol" -msgstr "Protocolo SSL" - -#, fuzzy -msgid "Save" -msgstr "Salvar" - -msgid "Section names are only used for naming the rule." -msgstr "Os nomes das seção são usados ​​apenas para nomear a regra." - -#, fuzzy -msgid "Server" -msgstr "Servidor" - -msgid "Setting this parameter to '0' will disable rotation of log-file." -msgstr "" -"Definindo este parâmetro para '0' irá desativar a rotação dos arquivos de " -"registros(log)." - -msgid "Software package '%s' is not installed." -msgstr "O pacote de software '%s' não está instalado." - -msgid "Software package '%s' is outdated." -msgstr "O pacote '%' está desatualizado." - -#, fuzzy -msgid "Software update required" -msgstr "A atualização do software é necessária" - -#, fuzzy -msgid "Start" -msgstr "Iniciar" - -#, fuzzy -msgid "Start / Stop" -msgstr "Iniciar / Parar" - -msgid "Start/Stop Radicale server" -msgstr "Iniciar/Parar o servidor Radicale" - -msgid "Storage" -msgstr "Armazenamento" - -msgid "Storage Encoding" -msgstr "Codificação do Armazenamento" - -msgid "Storage backend" -msgstr "Serviço de armazenamento" - -msgid "Syslog Log level" -msgstr "Nível de detalhamento do serviço de registro (syslog)" - -#, fuzzy -msgid "System" -msgstr "Sistema" - -msgid "" -"The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) " -"server solution." -msgstr "" -"O Projeto Radicale é uma solução completa de CalDAV (agenda) e CardDAV " -"(contatos)." - -msgid "" -"They can be viewed and edited by calendar and contact clients on mobile " -"phones or computers." -msgstr "" -"Eles podem ser visualizados e editados pelos clientes de agenda e de " -"contatos em telefones celulares ou computadores." - -msgid "To edit the file follow this link!" -msgstr "Para editar o arquivo, siga este link!" - -msgid "To view latest log file follow this link!" -msgstr "" -"Para visualizar mais recente arquivo de registros(log), siga este link!" - -msgid "Value is not a number" -msgstr "O valor não é um número" - -msgid "Value is not an Integer >= 0 !" -msgstr "O valor não é um número natural (>=0)!" - -msgid "Value not between 0 and 300" -msgstr "Valor não está entre 0 e 300" - -msgid "Value required ! Integer >= 0 !" -msgstr "O valor é necessário! Número natural (>=0)!" - -#, fuzzy -msgid "Version" -msgstr "Versão" - -#, fuzzy -msgid "Version Information" -msgstr "Informação da Versão" - -msgid "" -"WARNING: Only 'File-system' is documented and tested by Radicale development" -msgstr "" -"AVISO: Apenas 'Sistema de Arquivos está documentado e testado pelo " -"desenvolvimento do Radicale" - -#, fuzzy -msgid "Warning" -msgstr "Alerta" - -msgid "" -"You can also get groups from the user regex in the collection with {0}, {1}, " -"etc." -msgstr "" -"Você também pode obter grupos a partir da expressão regular do usuário na " -"coleção com {0}, {1} , etc." - -msgid "" -"You can use Python's ConfigParser interpolation values %(login)s and " -"%(path)s." -msgstr "" -"Você pode usar a interpolação de valores %(login)s e %(path)s do " -"ConfigParser do Python." - -msgid "crypt" -msgstr "cifrar" - -msgid "custom" -msgstr "personalizado" - -msgid "htpasswd file" -msgstr "arquivo htpasswd" - -#, fuzzy -msgid "installed" -msgstr "instalado" - -msgid "no valid path given!" -msgstr "Nenhum caminho válido foi informado!" - -#, fuzzy -msgid "or higher" -msgstr "ou maior" - -msgid "plain" -msgstr "plano" - -#, fuzzy -msgid "required" -msgstr "necessário" - -msgid "salted SHA-1" -msgstr "SHA-1 com salto" diff --git a/package/luci/applications/luci-app-radicale/po/sv/radicale.po b/package/luci/applications/luci-app-radicale/po/sv/radicale.po deleted file mode 100644 index 18adf26006..0000000000 --- a/package/luci/applications/luci-app-radicale/po/sv/radicale.po +++ /dev/null @@ -1,425 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: luci-app-radicale 1.1.0-1\n" -"POT-Creation-Date: 2016-01-30 20:34+0100\n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.4\n" - -msgid "" -"'AUTO' selects the highest protocol version that client and server support." -msgstr "" - -msgid "" -"'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on" -msgstr "" - -msgid "AUTO" -msgstr "AUTO" - -msgid "Access-Control-Allow-Headers" -msgstr "" - -msgid "Access-Control-Allow-Methods" -msgstr "" - -msgid "Access-Control-Allow-Origin" -msgstr "" - -msgid "Access-Control-Expose-Headers" -msgstr "" - -msgid "Additional HTTP headers" -msgstr "" - -msgid "Address:Port" -msgstr "Adress:Port" - -msgid "Authentication" -msgstr "Autentisering" - -msgid "" -"Authentication login is matched against the 'user' key, and collection's " -"path is matched against the 'collection' key." -msgstr "" - -msgid "Authentication method" -msgstr "Autentiseringsmetod" - -msgid "Authentication method to allow access to Radicale server." -msgstr "Autentiseringsmetod för att tillåta åtkomst till Radicale-servern." - -msgid "Auto-start" -msgstr "Starta automatiskt" - -msgid "Boot delay" -msgstr "" - -msgid "CalDAV/CardDAV" -msgstr "CalDAV/CardDAV" - -msgid "" -"Calendars and address books are available for both local and remote access, " -"possibly limited through authentication policies." -msgstr "" -"Kalendrar och adressböcker är tillgängliga för både lokal och fjärrstyrd " -"åtkomst, möjligtvis begränsad av villkoren för autentisering." - -msgid "Certificate file" -msgstr "Certifikat-fil" - -msgid "" -"Change here the encoding Radicale will use instead of 'UTF-8' for responses " -"to the client and/or to store data inside collections." -msgstr "" - -msgid "Ciphers" -msgstr "Chiffer" - -msgid "Console Log level" -msgstr "Loggnivå för konsoll" - -msgid "Control the access to data collections." -msgstr "Kontrollera åtkomst till insamlingen av data." - -msgid "Critical" -msgstr "Kritisk" - -msgid "" -"Cross-origin resource sharing (CORS) is a mechanism that allows restricted " -"resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from " -"another domain outside the domain from which the resource originated." -msgstr "" - -msgid "Custom" -msgstr "Anpassad" - -msgid "Database" -msgstr "Databas" - -msgid "Debug" -msgstr "Felsök" - -msgid "Delay (in seconds) during system boot before Radicale start" -msgstr "" - -msgid "Directory" -msgstr "Mapp" - -msgid "Directory not exists/found !" -msgstr "Mappen finns inte/hittades inte !" - -msgid "Directory required !" -msgstr "Mapp krävs !" - -msgid "Directory where the rotating log-files are stored" -msgstr "Mappen där de roterade logg-filerna lagras" - -msgid "During delay ifup-events are not monitored !" -msgstr "" - -msgid "Enable HTTPS" -msgstr "Aktivera HTTPS" - -msgid "" -"Enable/Disable auto-start of Radicale on system start-up and interface events" -msgstr "" - -msgid "Encoding" -msgstr "" - -msgid "Encoding for responding requests." -msgstr "" - -msgid "Encoding for storing local collections." -msgstr "" - -msgid "Encryption method" -msgstr "Krypteringsmetod" - -msgid "Error" -msgstr "Fel" - -msgid "File '%s' not found !" -msgstr "Filen '%s' kunde inte hittas !" - -msgid "File Log level" -msgstr "Loggnivå för fil" - -msgid "File not found !" -msgstr "Filen kunde inte hittas !" - -msgid "File-system" -msgstr "Filsystem" - -msgid "" -"For example, for the 'user' key, '.+' means 'authenticated user' and '.*' " -"means 'anybody' (including anonymous users)." -msgstr "" - -msgid "Full access for Owner only" -msgstr "" - -msgid "Full access for authenticated Users" -msgstr "" - -msgid "Full access for everybody (including anonymous)" -msgstr "" - -msgid "Full path and file name of certificate" -msgstr "" - -msgid "Full path and file name of private key" -msgstr "" - -msgid "Info" -msgstr "Info" - -msgid "Keep in mind to use the correct hashing algorithm !" -msgstr "" - -msgid "Leading or ending slashes are trimmed from collection's path." -msgstr "" - -msgid "Log-backup Count" -msgstr "" - -msgid "Log-file Viewer" -msgstr "Visare för loggfil" - -msgid "Log-file directory" -msgstr "Mapp för loggfil" - -msgid "Log-file size" -msgstr "Storlek på loggfil" - -msgid "Logging" -msgstr "Loggning" - -msgid "Logon message" -msgstr "Inloggningsmeddelande" - -msgid "Maximum size of each rotation log-file." -msgstr "" - -msgid "Message displayed in the client when a password is needed." -msgstr "Meddelandet som visas i klienten när ett lösenord behövs." - -msgid "NOT installed" -msgstr "INTE installerad" - -msgid "None" -msgstr "Inget" - -msgid "Number of backup files of log to create." -msgstr "" - -msgid "OPTIONAL: See python's ssl module for available ciphers" -msgstr "VALFRITT: Kolla in python's ssl-modul för tillgängliga chiffer" - -msgid "One or more missing/invalid fields on tab" -msgstr "" - -msgid "Owner allow write, authenticated users allow read" -msgstr "" - -msgid "Path/File required !" -msgstr "Genväg/Fil krävs !" - -msgid "" -"Place here the 'user:password' pairs for your users which should have access " -"to Radicale." -msgstr "" - -msgid "Please install current version !" -msgstr "Vänligen installera den nuvarande versionen !" - -msgid "Please press [Reload] button below to reread the file." -msgstr "" -"Vänligen tryck på [Omstart]-knappen nedan för att läsa om filen på nytt." - -msgid "Please update to current version !" -msgstr "Vänligen uppdatera till den nuvarande versionen !" - -msgid "Port numbers below 1024 (Privileged ports) are not supported" -msgstr "Portnummer under 1024 (Priviligerade portar) stöds inte" - -msgid "Private key file" -msgstr "Privat nyckel-fil" - -msgid "Radicale CalDAV/CardDAV Server" -msgstr "Radicale CalDAV/CardDAV-server" - -msgid "Radicale uses '/etc/radicale/rights' as regexp-based file." -msgstr "Radicale använder '/etc/radicale/rights som en regexp-baserad fil." - -msgid "Radicale uses '/etc/radicale/users' as htpasswd file." -msgstr "Radicale använder '/etc/radicale/users' som en htpasswd-fil." - -msgid "Read only!" -msgstr "Endast läsbar!" - -msgid "RegExp file" -msgstr "RegExp-fil" - -msgid "Reload" -msgstr "Ladda om" - -msgid "Response Encoding" -msgstr "" - -msgid "Rights" -msgstr "Rättigheter" - -msgid "Rights are based on a regexp-based file" -msgstr "Rättigheter baseras på en regexp-baserad fil" - -msgid "Rights backend" -msgstr "" - -msgid "SHA-1" -msgstr "SHA-1" - -msgid "SSL Protocol" -msgstr "SSL-protokoll" - -msgid "Save" -msgstr "Spara" - -msgid "Section names are only used for naming the rule." -msgstr "" - -msgid "Server" -msgstr "Server" - -msgid "Setting this parameter to '0' will disable rotation of log-file." -msgstr "" -"Genom att ställa in den här parametern till '0' så kommer du att stänga av " -"rotering av logg-fil." - -msgid "Software package '%s' is not installed." -msgstr "" - -msgid "Software package '%s' is outdated." -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Start" -msgstr "Starta" - -msgid "Start / Stop" -msgstr "Starta / Stoppa" - -msgid "Start/Stop Radicale server" -msgstr "Starta/Stoppa Radicale-servern" - -msgid "Storage" -msgstr "Lagring" - -msgid "Storage Encoding" -msgstr "" - -msgid "Storage backend" -msgstr "" - -msgid "Syslog Log level" -msgstr "Loggnivå för systemloggen" - -msgid "System" -msgstr "System" - -msgid "" -"The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) " -"server solution." -msgstr "" - -msgid "" -"They can be viewed and edited by calendar and contact clients on mobile " -"phones or computers." -msgstr "" - -msgid "To edit the file follow this link!" -msgstr "Följ den här länken för att redigera den här filen!" - -msgid "To view latest log file follow this link!" -msgstr "Följ den här länken för att visa den senaste logg-filen" - -msgid "Value is not a number" -msgstr "" - -msgid "Value is not an Integer >= 0 !" -msgstr "Värdet är inte ett heltal >= 0 !" - -msgid "Value not between 0 and 300" -msgstr "" - -msgid "Value required ! Integer >= 0 !" -msgstr "Värde krävs ! Heltal >= 0 !" - -msgid "Version" -msgstr "Version" - -msgid "Version Information" -msgstr "Information om versionen" - -msgid "" -"WARNING: Only 'File-system' is documented and tested by Radicale development" -msgstr "" -"VARNING: Endast 'Filsystemet' är dokumenterat och testat av Radicale-" -"utvecklingen" - -msgid "Warning" -msgstr "Varning" - -msgid "" -"You can also get groups from the user regex in the collection with {0}, {1}, " -"etc." -msgstr "" - -msgid "" -"You can use Python's ConfigParser interpolation values %(login)s and " -"%(path)s." -msgstr "" - -msgid "crypt" -msgstr "crypt" - -msgid "custom" -msgstr "anpassad" - -msgid "htpasswd file" -msgstr "htpasswd-fil" - -msgid "installed" -msgstr "installerad" - -msgid "no valid path given!" -msgstr "" - -msgid "or higher" -msgstr "eller högre" - -msgid "plain" -msgstr "enkel" - -msgid "required" -msgstr "krävs" - -msgid "salted SHA-1" -msgstr "saltad SHA-1" - -#~ msgid "-- Please choose --" -#~ msgstr "-- Vänligen välj --" - -#~ msgid "-- custom --" -#~ msgstr "-- anpassad --" - -#~ msgid "Reveal/hide password" -#~ msgstr "Visa/göm lösenordet" diff --git a/package/luci/applications/luci-app-radicale/po/templates/radicale.pot b/package/luci/applications/luci-app-radicale/po/templates/radicale.pot deleted file mode 100644 index 181c4f3c98..0000000000 --- a/package/luci/applications/luci-app-radicale/po/templates/radicale.pot +++ /dev/null @@ -1,399 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "" -"'AUTO' selects the highest protocol version that client and server support." -msgstr "" - -msgid "" -"'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on" -msgstr "" - -msgid "AUTO" -msgstr "" - -msgid "Access-Control-Allow-Headers" -msgstr "" - -msgid "Access-Control-Allow-Methods" -msgstr "" - -msgid "Access-Control-Allow-Origin" -msgstr "" - -msgid "Access-Control-Expose-Headers" -msgstr "" - -msgid "Additional HTTP headers" -msgstr "" - -msgid "Address:Port" -msgstr "" - -msgid "Authentication" -msgstr "" - -msgid "" -"Authentication login is matched against the 'user' key, and collection's " -"path is matched against the 'collection' key." -msgstr "" - -msgid "Authentication method" -msgstr "" - -msgid "Authentication method to allow access to Radicale server." -msgstr "" - -msgid "Auto-start" -msgstr "" - -msgid "Boot delay" -msgstr "" - -msgid "CalDAV/CardDAV" -msgstr "" - -msgid "" -"Calendars and address books are available for both local and remote access, " -"possibly limited through authentication policies." -msgstr "" - -msgid "Certificate file" -msgstr "" - -msgid "" -"Change here the encoding Radicale will use instead of 'UTF-8' for responses " -"to the client and/or to store data inside collections." -msgstr "" - -msgid "Ciphers" -msgstr "" - -msgid "Console Log level" -msgstr "" - -msgid "Control the access to data collections." -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "" -"Cross-origin resource sharing (CORS) is a mechanism that allows restricted " -"resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from " -"another domain outside the domain from which the resource originated." -msgstr "" - -msgid "Custom" -msgstr "" - -msgid "Database" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Delay (in seconds) during system boot before Radicale start" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Directory not exists/found !" -msgstr "" - -msgid "Directory required !" -msgstr "" - -msgid "Directory where the rotating log-files are stored" -msgstr "" - -msgid "During delay ifup-events are not monitored !" -msgstr "" - -msgid "Enable HTTPS" -msgstr "" - -msgid "" -"Enable/Disable auto-start of Radicale on system start-up and interface events" -msgstr "" - -msgid "Encoding" -msgstr "" - -msgid "Encoding for responding requests." -msgstr "" - -msgid "Encoding for storing local collections." -msgstr "" - -msgid "Encryption method" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "File '%s' not found !" -msgstr "" - -msgid "File Log level" -msgstr "" - -msgid "File not found !" -msgstr "" - -msgid "File-system" -msgstr "" - -msgid "" -"For example, for the 'user' key, '.+' means 'authenticated user' and '.*' " -"means 'anybody' (including anonymous users)." -msgstr "" - -msgid "Full access for Owner only" -msgstr "" - -msgid "Full access for authenticated Users" -msgstr "" - -msgid "Full access for everybody (including anonymous)" -msgstr "" - -msgid "Full path and file name of certificate" -msgstr "" - -msgid "Full path and file name of private key" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Keep in mind to use the correct hashing algorithm !" -msgstr "" - -msgid "Leading or ending slashes are trimmed from collection's path." -msgstr "" - -msgid "Log-backup Count" -msgstr "" - -msgid "Log-file Viewer" -msgstr "" - -msgid "Log-file directory" -msgstr "" - -msgid "Log-file size" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Logon message" -msgstr "" - -msgid "Maximum size of each rotation log-file." -msgstr "" - -msgid "Message displayed in the client when a password is needed." -msgstr "" - -msgid "NOT installed" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Number of backup files of log to create." -msgstr "" - -msgid "OPTIONAL: See python's ssl module for available ciphers" -msgstr "" - -msgid "One or more missing/invalid fields on tab" -msgstr "" - -msgid "Owner allow write, authenticated users allow read" -msgstr "" - -msgid "Path/File required !" -msgstr "" - -msgid "" -"Place here the 'user:password' pairs for your users which should have access " -"to Radicale." -msgstr "" - -msgid "Please install current version !" -msgstr "" - -msgid "Please press [Reload] button below to reread the file." -msgstr "" - -msgid "Please update to current version !" -msgstr "" - -msgid "Port numbers below 1024 (Privileged ports) are not supported" -msgstr "" - -msgid "Private key file" -msgstr "" - -msgid "Radicale CalDAV/CardDAV Server" -msgstr "" - -msgid "Radicale uses '/etc/radicale/rights' as regexp-based file." -msgstr "" - -msgid "Radicale uses '/etc/radicale/users' as htpasswd file." -msgstr "" - -msgid "Read only!" -msgstr "" - -msgid "RegExp file" -msgstr "" - -msgid "Reload" -msgstr "" - -msgid "Response Encoding" -msgstr "" - -msgid "Rights" -msgstr "" - -msgid "Rights are based on a regexp-based file" -msgstr "" - -msgid "Rights backend" -msgstr "" - -msgid "SHA-1" -msgstr "" - -msgid "SSL Protocol" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Section names are only used for naming the rule." -msgstr "" - -msgid "Server" -msgstr "" - -msgid "Setting this parameter to '0' will disable rotation of log-file." -msgstr "" - -msgid "Software package '%s' is not installed." -msgstr "" - -msgid "Software package '%s' is outdated." -msgstr "" - -msgid "Software update required" -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start / Stop" -msgstr "" - -msgid "Start/Stop Radicale server" -msgstr "" - -msgid "Storage" -msgstr "" - -msgid "Storage Encoding" -msgstr "" - -msgid "Storage backend" -msgstr "" - -msgid "Syslog Log level" -msgstr "" - -msgid "System" -msgstr "" - -msgid "" -"The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) " -"server solution." -msgstr "" - -msgid "" -"They can be viewed and edited by calendar and contact clients on mobile " -"phones or computers." -msgstr "" - -msgid "To edit the file follow this link!" -msgstr "" - -msgid "To view latest log file follow this link!" -msgstr "" - -msgid "Value is not a number" -msgstr "" - -msgid "Value is not an Integer >= 0 !" -msgstr "" - -msgid "Value not between 0 and 300" -msgstr "" - -msgid "Value required ! Integer >= 0 !" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Version Information" -msgstr "" - -msgid "" -"WARNING: Only 'File-system' is documented and tested by Radicale development" -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "" -"You can also get groups from the user regex in the collection with {0}, {1}, " -"etc." -msgstr "" - -msgid "" -"You can use Python's ConfigParser interpolation values %(login)s and " -"%(path)s." -msgstr "" - -msgid "crypt" -msgstr "" - -msgid "custom" -msgstr "" - -msgid "htpasswd file" -msgstr "" - -msgid "installed" -msgstr "" - -msgid "no valid path given!" -msgstr "" - -msgid "or higher" -msgstr "" - -msgid "plain" -msgstr "" - -msgid "required" -msgstr "" - -msgid "salted SHA-1" -msgstr "" diff --git a/package/luci/applications/luci-app-radicale/root/etc/uci-defaults/40_luci-radicale b/package/luci/applications/luci-app-radicale/root/etc/uci-defaults/40_luci-radicale deleted file mode 100755 index 333ca65f45..0000000000 --- a/package/luci/applications/luci-app-radicale/root/etc/uci-defaults/40_luci-radicale +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# no longer needed for "Save and Apply" to restart radicale -# luci-app-radicale calls /etc/init.d/radicale reload -uci -q batch <<-EOF >/dev/null - delete ucitrack.@radicale[-1] - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache - -exit 0 diff --git a/package/luci/applications/luci-app-radvd/Makefile b/package/luci/applications/luci-app-radvd/Makefile deleted file mode 100644 index 214205683a..0000000000 --- a/package/luci/applications/luci-app-radvd/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2016 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Radvd -LUCI_DEPENDS:=+radvd @BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-radvd/luasrc/controller/radvd.lua b/package/luci/applications/luci-app-radvd/luasrc/controller/radvd.lua deleted file mode 100644 index 9c08f4c3f5..0000000000 --- a/package/luci/applications/luci-app-radvd/luasrc/controller/radvd.lua +++ /dev/null @@ -1,17 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.radvd", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/radvd") then - return - end - - entry({"admin", "network", "radvd"}, cbi("radvd"), _("Radvd"), 61) - entry({"admin", "network", "radvd", "interface"}, cbi("radvd/interface"), nil).leaf = true - entry({"admin", "network", "radvd", "prefix"}, cbi("radvd/prefix"), nil).leaf = true - entry({"admin", "network", "radvd", "route"}, cbi("radvd/route"), nil).leaf = true - entry({"admin", "network", "radvd", "rdnss"}, cbi("radvd/rdnss"), nil).leaf = true - entry({"admin", "network", "radvd", "dnssl"}, cbi("radvd/dnssl"), nil).leaf = true -end diff --git a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd.lua b/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd.lua deleted file mode 100644 index 755dcb47c3..0000000000 --- a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd.lua +++ /dev/null @@ -1,324 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("radvd", translate("Radvd"), - translate("Radvd is a router advertisement daemon for IPv6. " .. - "It listens to router solicitations and sends router advertisements " .. - "as described in RFC 4861.")) - -local nm = require "luci.model.network".init(m.uci) -local ut = require "luci.util" - - --- --- Interfaces --- - -s = m:section(TypedSection, "interface", translate("Interfaces")) -s.template = "cbi/tblsection" -s.extedit = luci.dispatcher.build_url("admin/network/radvd/interface/%s") -s.anonymous = true -s.addremove = true - -function s.create(...) - local id = TypedSection.create(...) - luci.http.redirect(s.extedit % id) -end - -function s.remove(self, section) - if m.uci:get("radvd", section) == "interface" then - local iface = m.uci:get("radvd", section, "interface") - if iface then - m.uci:delete_all("radvd", "prefix", - function(s) return s.interface == iface end) - - m.uci:delete_all("radvd", "route", - function(s) return s.interface == iface end) - - m.uci:delete_all("radvd", "rdnss", - function(s) return s.interface == iface end) - end - end - - return TypedSection.remove(self, section) -end - -o = s:option(Flag, "ignore", translate("Enable")) -o.rmempty = false -o.width = "30px" -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - -o = s:option(DummyValue, "interface", translate("Interface")) -o.template = "cbi/network_netinfo" -o.width = "10%" - -o = s:option(DummyValue, "UnicastOnly", translate("Multicast")) -function o.cfgvalue(self, section) - local v = Value.cfgvalue(self, section) - local v2 = m.uci:get("radvd", section, "client") - return (v == "1" or (v2 and #v2 > 0)) and translate("no") or translate("yes") -end - -o = s:option(DummyValue, "AdvSendAdvert", translate("Advertising")) -function o.cfgvalue(...) - local v = Value.cfgvalue(...) - return v == "1" and translate("yes") or translate("no") -end - -o = s:option(DummyValue, "MaxRtrAdvInterval", translate("Max. interval")) -function o.cfgvalue(...) - local v = Value.cfgvalue(...) or "600" - return v .. "s" -end - -o = s:option(DummyValue, "AdvHomeAgentFlag", translate("Mobile IPv6")) -function o.cfgvalue(...) - local v = Value.cfgvalue(...) - return v == "1" and translate("yes") or translate("no") -end - -o = s:option(DummyValue, "AdvDefaultPreference", translate("Preference")) -function o.cfgvalue(...) - local v = Value.cfgvalue(...) or "medium" - return translate(v) -end - - --- --- Prefixes --- - -s2 = m:section(TypedSection, "prefix", translate("Prefixes")) -s2.template = "cbi/tblsection" -s2.extedit = luci.dispatcher.build_url("admin/network/radvd/prefix/%s") -s2.addremove = true -s2.anonymous = true - -function s2.create(...) - local id = TypedSection.create(...) - luci.http.redirect(s2.extedit % id) -end - - -o = s2:option(Flag, "ignore", translate("Enable")) -o.rmempty = false -o.width = "30px" -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - -o = s2:option(DummyValue, "interface", translate("Interface")) -o.template = "cbi/network_netinfo" -o.width = "10%" - -pfx = s2:option(DummyValue, "prefix", translate("Prefix")) -pfx.width = "60%" -function pfx.cfgvalue(self, section) - local v = m.uci:get_list("radvd", section, self.option) - local l = { } - - if not v or #v == 0 or (#v == 1 and #v[1] == 0) then - local net = nm:get_network(m.uci:get("radvd", section, "interface")) - if net then - local ifc = nm:get_interface(net:ifname()) - if ifc then - local adr - for _, adr in ipairs(ifc:ip6addrs()) do - if not adr:is6linklocal() then - v = adr:string() - break - end - end - end - end - end - - for v in ut.imatch(v) do - v = luci.ip.IPv6(v) - if v then - l[#l+1] = v:string() - end - end - - if #l == 0 then - l[1] = "?" - end - - return table.concat(l, ", ") -end - -o = s2:option(DummyValue, "AdvAutonomous", translate("Autonomous")) -function o.cfgvalue(...) - local v = Value.cfgvalue(...) - return v == "1" and translate("yes") or translate("no") -end - -o = s2:option(DummyValue, "AdvOnLink", translate("On-link")) -function o.cfgvalue(...) - local v = Value.cfgvalue(...) - return v == "1" and translate("yes") or translate("no") -end - -o = s2:option(DummyValue, "AdvValidLifetime", translate("Validity time")) -function o.cfgvalue(...) - local v = Value.cfgvalue(...) or "86400" - return translate(v) -end - - --- --- Routes --- - -s3 = m:section(TypedSection, "route", translate("Routes")) -s3.template = "cbi/tblsection" -s3.extedit = luci.dispatcher.build_url("admin/network/radvd/route/%s") -s3.addremove = true -s3.anonymous = true - -function s3.create(...) - local id = TypedSection.create(...) - luci.http.redirect(s3.extedit % id) -end - - -o = s3:option(Flag, "ignore", translate("Enable")) -o.rmempty = false -o.width = "30px" -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - -o = s3:option(DummyValue, "interface", translate("Interface")) -o.template = "cbi/network_netinfo" -o.width = "10%" - -o = s3:option(DummyValue, "prefix", translate("Prefix")) -o.width = "60%" -o.cfgvalue = pfx.cfgvalue - -o = s3:option(DummyValue, "AdvRouteLifetime", translate("Lifetime")) -function o.cfgvalue(self, section) - local v = Value.cfgvalue(self, section) or "1800" - return translate(v) -end - -o = s3:option(DummyValue, "AdvRoutePreference", translate("Preference")) -function o.cfgvalue(self, section) - local v = Value.cfgvalue(self, section) or "medium" - return translate(v) -end - - --- --- RDNSS --- - -s4 = m:section(TypedSection, "rdnss", translate("RDNSS")) -s4.template = "cbi/tblsection" -s4.extedit = luci.dispatcher.build_url("admin/network/radvd/rdnss/%s") -s4.addremove = true -s4.anonymous = true - -function s4.create(...) - local id = TypedSection.create(...) - luci.http.redirect(s4.extedit % id) -end - - -o = s4:option(Flag, "ignore", translate("Enable")) -o.rmempty = false -o.width = "30px" -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - -o = s4:option(DummyValue, "interface", translate("Interface")) -o.template = "cbi/network_netinfo" -o.width = "10%" - -o = s4:option(DummyValue, "addr", translate("Address")) -o.width = "60%" -o.cfgvalue = pfx.cfgvalue - -o = s4:option(DummyValue, "AdvRDNSSLifetime", translate("Lifetime")) -function o.cfgvalue(self, section) - local v = Value.cfgvalue(self, section) or "1200" - return translate(v) -end - - --- --- DNSSL --- - -s5 = m:section(TypedSection, "dnssl", translate("DNSSL")) -s5.template = "cbi/tblsection" -s5.extedit = luci.dispatcher.build_url("admin/network/radvd/dnssl/%s") -s5.addremove = true -s5.anonymous = true - -function s5.create(...) - local id = TypedSection.create(...) - luci.http.redirect(s5.extedit % id) -end - - -o = s5:option(Flag, "ignore", translate("Enable")) -o.rmempty = false -o.width = "30px" -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - -o = s5:option(DummyValue, "interface", translate("Interface")) -o.template = "cbi/network_netinfo" -o.width = "10%" - -o = s5:option(DummyValue, "suffix", translate("Suffix")) -o.width = "60%" -function o.cfgvalue(self, section) - local v = m.uci:get_list("radvd", section, "suffix") - local l = { } - - for v in ut.imatch(v) do - l[#l+1] = v - end - - if #l == 0 then - l[1] = "?" - end - - return table.concat(l, ", ") -end - -o = s5:option(DummyValue, "AdvDNSSLLifetime", translate("Lifetime")) -function o.cfgvalue(self, section) - local v = Value.cfgvalue(self, section) or "1200" - return translate(v) -end - - -return m diff --git a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/dnssl.lua b/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/dnssl.lua deleted file mode 100644 index d331c25d66..0000000000 --- a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/dnssl.lua +++ /dev/null @@ -1,88 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sid = arg[1] -local utl = require "luci.util" - -m = Map("radvd", translatef("Radvd - DNSSL"), - translate("Radvd is a router advertisement daemon for IPv6. " .. - "It listens to router solicitations and sends router advertisements " .. - "as described in RFC 4861.")) - -m.redirect = luci.dispatcher.build_url("admin/network/radvd") - -if m.uci:get("radvd", sid) ~= "dnssl" then - luci.http.redirect(m.redirect) - return -end - - -s = m:section(NamedSection, sid, "interface", translate("DNSSL Configuration")) -s.addremove = false - - --- --- General --- - -o = s:option(Flag, "ignore", translate("Enable")) -o.rmempty = false - -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end - -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - - -o = s:option(Value, "interface", translate("Interface"), - translate("Specifies the logical interface name this section belongs to")) - -o.template = "cbi/network_netlist" -o.nocreate = true -o.optional = false - -function o.formvalue(...) - return Value.formvalue(...) or "-" -end - -function o.validate(self, value) - if value == "-" then - return nil, translate("Interface required") - end - return value -end - -function o.write(self, section, value) - m.uci:set("radvd", section, "ignore", 0) - m.uci:set("radvd", section, "interface", value) -end - - -o = s:option(DynamicList, "suffix", translate("Suffix"), - translate("Advertised Domain Suffixes")) - -o.optional = false -o.rmempty = false -o.datatype = "hostname" -function o.cfgvalue(self, section) - local l = { } - local v = m.uci:get_list("radvd", section, "suffix") - for v in utl.imatch(v) do - l[#l+1] = v - end - return l -end - - -o = s:option(Value, "AdvDNSSLLifetime", translate("Lifetime"), - translate("Specifies the maximum duration how long the DNSSL entries are used for name resolution.")) - -o.datatype = 'or(uinteger,"infinity")' -o.placeholder = 1200 - - -return m diff --git a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/interface.lua b/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/interface.lua deleted file mode 100644 index e5d03228d9..0000000000 --- a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/interface.lua +++ /dev/null @@ -1,265 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sid = arg[1] -local utl = require "luci.util" - -m = Map("radvd", translatef("Radvd - Interface %q", "?"), - translate("Radvd is a router advertisement daemon for IPv6. " .. - "It listens to router solicitations and sends router advertisements " .. - "as described in RFC 4861.")) - -m.redirect = luci.dispatcher.build_url("admin/network/radvd") - -if m.uci:get("radvd", sid) ~= "interface" then - luci.http.redirect(m.redirect) - return -end - -m.uci:foreach("radvd", "interface", - function(s) - if s['.name'] == sid and s.interface then - m.title = translatef("Radvd - Interface %q", s.interface) - return false - end - end) - - -s = m:section(NamedSection, sid, "interface", translate("Interface Configuration")) -s.addremove = false - -s:tab("general", translate("General")) -s:tab("timing", translate("Timing")) -s:tab("mobile", translate("Mobile IPv6")) - - --- --- General --- - -o = s:taboption("general", Flag, "ignore", translate("Enable")) -o.rmempty = false - -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end - -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - - -o = s:taboption("general", Value, "interface", translate("Interface"), - translate("Specifies the logical interface name this section belongs to")) - -o.template = "cbi/network_netlist" -o.nocreate = true -o.optional = false - -function o.formvalue(...) - return Value.formvalue(...) or "-" -end - -function o.validate(self, value) - if value == "-" then - return nil, translate("Interface required") - end - return value -end - -function o.write(self, section, value) - m.uci:set("radvd", section, "ignore", 0) - m.uci:set("radvd", section, "interface", value) -end - - -o = s:taboption("general", DynamicList, "client", translate("Clients"), - translate("Restrict communication to specified clients, leave empty to use multicast")) - -o.rmempty = true -o.datatype = "ip6addr" -o.placeholder = "any" -function o.cfgvalue(...) - local v = Value.cfgvalue(...) - local l = { } - for v in utl.imatch(v) do - l[#l+1] = v - end - return l -end - - -o = s:taboption("general", Flag, "AdvSendAdvert", translate("Enable advertisements"), - translate("Enables router advertisements and solicitations")) - -o.rmempty = false -function o.write(self, section, value) - if value == "1" then - m.uci:set("radvd", section, "ignore", 0) - m.uci:set("radvd", section, "IgnoreIfMissing", 1) - end - - m.uci:set("radvd", section, "AdvSendAdvert", value) -end - - -o = s:taboption("general", Flag, "UnicastOnly", translate("Unicast only"), - translate("Indicates that the underlying link is not broadcast capable, prevents unsolicited advertisements from being sent")) - -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("general", Flag, "AdvManagedFlag", translate("Managed flag"), - translate("Enables the additional stateful administered autoconfiguration protocol (RFC2462)")) - -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("general", Flag, "AdvOtherConfigFlag", translate("Configuration flag"), - translate("Enables the autoconfiguration of additional, non address information (RFC2462)")) - -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("general", Flag, "AdvSourceLLAddress", translate("Source link-layer address"), - translate("Includes the link-layer address of the outgoing interface in the RA")) - -o.rmempty = false -o.default = "1" -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("general", Value, "AdvLinkMTU", translate("Link MTU"), - translate("Advertises the given link MTU in the RA if specified. 0 disables MTU advertisements")) - -o.datatype = "uinteger" -o.placeholder = 0 -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("general", Value, "AdvCurHopLimit", translate("Current hop limit"), - translate("Advertises the default Hop Count value for outgoing unicast packets in the RA. 0 disables hopcount advertisements")) - -o.datatype = "uinteger" -o.optional = false -o.placeholder = 64 -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("general", ListValue, "AdvDefaultPreference", translate("Default preference"), - translate("Advertises the default router preference")) - -o.optional = false -o.default = "medium" -o:value("low", translate("low")) -o:value("medium", translate("medium")) -o:value("high", translate("high")) -o:depends("AdvSendAdvert", "1") - - --- --- Timing --- - -o = s:taboption("timing", Value, "MinRtrAdvInterval", translate("Minimum advertisement interval"), - translate("The minimum time allowed between sending unsolicited multicast router advertisements from the interface, in seconds")) - -o.datatype = "uinteger" -o.optional = false -o.placeholder = 198 -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("timing", Value, "MaxRtrAdvInterval", translate("Maximum advertisement interval"), - translate("The maximum time allowed between sending unsolicited multicast router advertisements from the interface, in seconds")) - -o.datatype = "uinteger" -o.optional = false -o.placeholder = 600 -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("timing", Value, "MinDelayBetweenRAs", translate("Minimum advertisement delay"), - translate("The minimum time allowed between sending multicast router advertisements from the interface, in seconds")) - -o.datatype = "uinteger" -o.optional = false -o.placeholder = 3 -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("timing", Value, "AdvReachableTime", translate("Reachable time"), - translate("Advertises assumed reachability time in milliseconds of neighbours in the RA if specified. 0 disables reachability advertisements")) - -o.datatype = "uinteger" -o.optional = false -o.placeholder = 0 -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("timing", Value, "AdvRetransTimer", translate("Retransmit timer"), - translate("Advertises wait time in milliseconds between Neighbor Solicitation messages in the RA if specified. 0 disables retransmit advertisements")) - -o.datatype = "uinteger" -o.optional = false -o.placeholder = 0 -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("timing", Value, "AdvDefaultLifetime", translate("Default lifetime"), - translate("Advertises the lifetime of the default router in seconds. 0 indicates that the node is no default router")) - -o.datatype = "uinteger" -o.optional = false -o.placeholder = 1800 -o:depends("AdvSendAdvert", "1") - - --- --- Mobile --- - -o = s:taboption("mobile", Flag, "AdvHomeAgentFlag", translate("Advertise Home Agent flag"), - translate("Advertises Mobile IPv6 Home Agent capability (RFC3775)")) - -o:depends("AdvSendAdvert", "1") - - -o = s:taboption("mobile", Flag, "AdvIntervalOpt", translate("Mobile IPv6 interval option"), - translate("Include Mobile IPv6 Advertisement Interval option to RA")) - -o:depends({AdvHomeAgentFlag = "1", AdvSendAdvert = "1"}) - - -o = s:taboption("mobile", Flag, "AdvHomeAgentInfo", translate("Home Agent information"), - translate("Include Home Agent Information in the RA")) - -o:depends({AdvHomeAgentFlag = "1", AdvSendAdvert = "1"}) - - -o = s:taboption("mobile", Flag, "AdvMobRtrSupportFlag", translate("Mobile IPv6 router registration"), - translate("Advertises Mobile Router registration capability (NEMO Basic)")) - -o:depends({AdvHomeAgentInfo = "1", AdvSendAdvert = "1"}) - - -o = s:taboption("mobile", Value, "HomeAgentLifetime", translate("Home Agent lifetime"), - translate("Advertises the time in seconds the router is offering Mobile IPv6 Home Agent services")) - -o.datatype = "uinteger" -o.optional = false -o.placeholder = 1800 -o:depends({AdvHomeAgentInfo = "1", AdvSendAdvert = "1"}) - - -o = s:taboption("mobile", Value, "HomeAgentPreference", translate("Home Agent preference"), - translate("The preference for the Home Agent sending this RA")) - -o.datatype = "uinteger" -o.optional = false -o.placeholder = 0 -o:depends({AdvHomeAgentInfo = "1", AdvSendAdvert = "1"}) - - -return m diff --git a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/prefix.lua b/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/prefix.lua deleted file mode 100644 index a2b4285857..0000000000 --- a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/prefix.lua +++ /dev/null @@ -1,128 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sid = arg[1] -local utl = require "luci.util" - -m = Map("radvd", translatef("Radvd - Prefix"), - translate("Radvd is a router advertisement daemon for IPv6. " .. - "It listens to router solicitations and sends router advertisements " .. - "as described in RFC 4861.")) - -m.redirect = luci.dispatcher.build_url("admin/network/radvd") - -if m.uci:get("radvd", sid) ~= "prefix" then - luci.http.redirect(m.redirect) - return -end - - -s = m:section(NamedSection, sid, "interface", translate("Prefix Configuration")) -s.addremove = false - -s:tab("general", translate("General")) -s:tab("advanced", translate("Advanced")) - - --- --- General --- - -o = s:taboption("general", Flag, "ignore", translate("Enable")) -o.rmempty = false - -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end - -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - - -o = s:taboption("general", Value, "interface", translate("Interface"), - translate("Specifies the logical interface name this section belongs to")) - -o.template = "cbi/network_netlist" -o.nocreate = true -o.optional = false - -function o.formvalue(...) - return Value.formvalue(...) or "-" -end - -function o.validate(self, value) - if value == "-" then - return nil, translate("Interface required") - end - return value -end - -function o.write(self, section, value) - m.uci:set("radvd", section, "ignore", 0) - m.uci:set("radvd", section, "interface", value) -end - - -o = s:taboption("general", DynamicList, "prefix", translate("Prefixes"), - translate("Advertised IPv6 prefixes. If empty, the current interface prefix is used")) - -o.optional = true -o.datatype = "ip6addr" -o.placeholder = translate("default") -function o.cfgvalue(self, section) - local l = { } - local v = m.uci:get_list("radvd", section, "prefix") - for v in utl.imatch(v) do - l[#l+1] = v - end - return l -end - - -o = s:taboption("general", Flag, "AdvOnLink", translate("On-link determination"), - translate("Indicates that this prefix can be used for on-link determination (RFC4861)")) - -o.rmempty = false -o.default = "1" - - -o = s:taboption("general", Flag, "AdvAutonomous", translate("Autonomous"), - translate("Indicates that this prefix can be used for autonomous address configuration (RFC4862)")) - -o.rmempty = false -o.default = "1" - - --- --- Advanced --- - -o = s:taboption("advanced", Flag, "AdvRouterAddr", translate("Advertise router address"), - translate("Indicates that the address of interface is sent instead of network prefix, as is required by Mobile IPv6")) - - -o = s:taboption("advanced", Value, "AdvValidLifetime", translate("Valid lifetime"), - translate("Advertises the length of time in seconds that the prefix is valid for the purpose of on-link determination.")) - -o.datatype = 'or(uinteger,"infinity")' -o.placeholder = 86400 - - -o = s:taboption("advanced", Value, "AdvPreferredLifetime", translate("Preferred lifetime"), - translate("Advertises the length of time in seconds that addresses generated from the prefix via stateless address autoconfiguration remain preferred.")) - -o.datatype = 'or(uinteger,"infinity")' -o.placeholder = 14400 - - -o = s:taboption("advanced", Value, "Base6to4Interface", translate("6to4 interface"), - translate("Specifies a logical interface name to derive a 6to4 prefix from. The interfaces public IPv4 address is combined with 2002::/3 and the value of the prefix option")) - -o.template = "cbi/network_netlist" -o.nocreate = true -o.unspecified = true - - -return m diff --git a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/rdnss.lua b/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/rdnss.lua deleted file mode 100644 index d6588ac7af..0000000000 --- a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/rdnss.lua +++ /dev/null @@ -1,89 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sid = arg[1] -local utl = require "luci.util" - -m = Map("radvd", translatef("Radvd - RDNSS"), - translate("Radvd is a router advertisement daemon for IPv6. " .. - "It listens to router solicitations and sends router advertisements " .. - "as described in RFC 4861.")) - -m.redirect = luci.dispatcher.build_url("admin/network/radvd") - -if m.uci:get("radvd", sid) ~= "rdnss" then - luci.http.redirect(m.redirect) - return -end - - -s = m:section(NamedSection, sid, "interface", translate("RDNSS Configuration")) -s.addremove = false - - --- --- General --- - -o = s:option(Flag, "ignore", translate("Enable")) -o.rmempty = false - -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end - -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - - -o = s:option(Value, "interface", translate("Interface"), - translate("Specifies the logical interface name this section belongs to")) - -o.template = "cbi/network_netlist" -o.nocreate = true -o.optional = false - -function o.formvalue(...) - return Value.formvalue(...) or "-" -end - -function o.validate(self, value) - if value == "-" then - return nil, translate("Interface required") - end - return value -end - -function o.write(self, section, value) - m.uci:set("radvd", section, "ignore", 0) - m.uci:set("radvd", section, "interface", value) -end - - -o = s:option(DynamicList, "addr", translate("Addresses"), - translate("Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface is used")) - -o.optional = false -o.rmempty = true -o.datatype = "ip6addr" -o.placeholder = translate("default") -function o.cfgvalue(self, section) - local l = { } - local v = m.uci:get_list("radvd", section, "addr") - for v in utl.imatch(v) do - l[#l+1] = v - end - return l -end - - -o = s:option(Value, "AdvRDNSSLifetime", translate("Lifetime"), - translate("Specifies the maximum duration how long the RDNSS entries are used for name resolution.")) - -o.datatype = 'or(uinteger,"infinity")' -o.placeholder = 1200 - - -return m diff --git a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/route.lua b/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/route.lua deleted file mode 100644 index 1aac27a63f..0000000000 --- a/package/luci/applications/luci-app-radvd/luasrc/model/cbi/radvd/route.lua +++ /dev/null @@ -1,97 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sid = arg[1] -local utl = require "luci.util" - -m = Map("radvd", translatef("Radvd - Route"), - translate("Radvd is a router advertisement daemon for IPv6. " .. - "It listens to router solicitations and sends router advertisements " .. - "as described in RFC 4861.")) - -m.redirect = luci.dispatcher.build_url("admin/network/radvd") - -if m.uci:get("radvd", sid) ~= "route" then - luci.http.redirect(m.redirect) - return -end - - -s = m:section(NamedSection, sid, "interface", translate("Route Configuration")) -s.addremove = false - - --- --- General --- - -o = s:option(Flag, "ignore", translate("Enable")) -o.rmempty = false - -function o.cfgvalue(...) - local v = Flag.cfgvalue(...) - return v == "1" and "0" or "1" -end - -function o.write(self, section, value) - Flag.write(self, section, value == "1" and "0" or "1") -end - - -o = s:option(Value, "interface", translate("Interface"), - translate("Specifies the logical interface name this section belongs to")) - -o.template = "cbi/network_netlist" -o.nocreate = true -o.optional = false - -function o.formvalue(...) - return Value.formvalue(...) or "-" -end - -function o.validate(self, value) - if value == "-" then - return nil, translate("Interface required") - end - return value -end - -function o.write(self, section, value) - m.uci:set("radvd", section, "ignore", 0) - m.uci:set("radvd", section, "interface", value) -end - - -o = s:option(DynamicList, "prefix", translate("Prefixes"), - translate("Advertised IPv6 prefixes")) - -o.rmempty = false -o.datatype = "ip6addr" -o.placeholder = translate("default") -function o.cfgvalue(self, section) - local l = { } - local v = m.uci:get_list("radvd", section, "prefix") - for v in utl.imatch(v) do - l[#l+1] = v - end - return l -end - - -o = s:option(Value, "AdvRouteLifetime", translate("Lifetime"), - translate("Specifies the lifetime associated with the route in seconds.")) - -o.datatype = 'or(uinteger,"infinity")' -o.placeholder = 1800 - - -o = s:option(ListValue, "AdvRoutePreference", translate("Preference"), - translate("Specifies the preference associated with the default router")) - -o.default = "medium" -o:value("low", translate("low")) -o:value("medium", translate("medium")) -o:value("high", translate("high")) - - -return m diff --git a/package/luci/applications/luci-app-radvd/po/ca/radvd.po b/package/luci/applications/luci-app-radvd/po/ca/radvd.po deleted file mode 100644 index a9a317d4dd..0000000000 --- a/package/luci/applications/luci-app-radvd/po/ca/radvd.po +++ /dev/null @@ -1,382 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-02 21:41+0200\n" -"Last-Translator: Alex \n" -"Language-Team: German\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "6to4 interface" -msgstr "Interfície 6to4" - -msgid "Address" -msgstr "Adreça" - -msgid "Addresses" -msgstr "Adreces" - -msgid "Advanced" -msgstr "Avançat" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "Sufixos de domini publicats" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "Prefixos IPv6 publicats" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "Publicació" - -msgid "Autonomous" -msgstr "Autònom" - -msgid "Clients" -msgstr "Clients" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "Configuració DNSSL" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "Preferència per defecte" - -msgid "Enable" -msgstr "Habilita" - -msgid "Enable advertisements" -msgstr "Habilita la publicitat" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "General" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" -"Indica que la enllaç subjacent no és capaç de la difusió, prevén que les " -"publicitats no sol·licitats es enviïn" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "Interfície" - -msgid "Interface Configuration" -msgstr "Configuració d'interfície" - -msgid "Interface required" -msgstr "Interfície requerida" - -msgid "Interfaces" -msgstr "Interfícies" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "IPv6 mòbil" - -msgid "Mobile IPv6 interval option" -msgstr "Opció d'interval d'IPv6 mòbil" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "Difusió selectiva" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Prefix Configuration" -msgstr "Configuració de prefix" - -msgid "Prefixes" -msgstr "Prefixos" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "Configuració RDNSS" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - Interfície %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - Prefix" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Ruta" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"El Radvd és un dimoni de publicitat d'encaminador per IPv6. Escolta per " -"sol·licituds i envia publicitats d'encaminador com descrit en RFC 4861." - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" -"Restringeix la comunicació a clients especificats, deixeu en blanc per " -"utilitzar la difusió selectiva" - -msgid "Retransmit timer" -msgstr "Temporitzador de retransmissió" - -msgid "Route Configuration" -msgstr "Configuració de ruta" - -msgid "Routes" -msgstr "Rutes" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "Sufix" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"El temps màxim permès entre enviar publicitats d'encaminador de difusió " -"selectiva no sol·licitats des de la interfície, en segons" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" -"El temps mínim permès entre enviar publicitats d'encaminador de difusió " -"selectiva des de la interfície, en segons" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"El temps mínim permès entre enviar publicitats d'encaminador de difusió " -"selectiva no sol·licitats des de la interfície, en segons" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "Sincronització" - -msgid "Unicast only" -msgstr "Només unidifusió" - -msgid "Valid lifetime" -msgstr "Durada de vida vàlida" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "per defecte" - -msgid "high" -msgstr "alt" - -msgid "low" -msgstr "baix" - -msgid "medium" -msgstr "mitjà" - -msgid "no" -msgstr "no" - -msgid "yes" -msgstr "sí" diff --git a/package/luci/applications/luci-app-radvd/po/cs/radvd.po b/package/luci/applications/luci-app-radvd/po/cs/radvd.po deleted file mode 100644 index ab4e4af5aa..0000000000 --- a/package/luci/applications/luci-app-radvd/po/cs/radvd.po +++ /dev/null @@ -1,389 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-08-04 19:04+0200\n" -"Last-Translator: KubaCZ \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "6to4 interface" -msgstr "6to4 rozhraní" - -msgid "Address" -msgstr "Adresa" - -msgid "Addresses" -msgstr "Adresy" - -msgid "Advanced" -msgstr "Pokročilé" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "Oznamovat adresu routeru" - -msgid "Advertised Domain Suffixes" -msgstr "Oznamované doménové přípony" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"Oznamované IPv6 RDNSS. Pokud prázdné, bude použita stávající IPv6 adresa " -"rozhraní." - -msgid "Advertised IPv6 prefixes" -msgstr "Oznamované IPv6 prefixy" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Oznamované IPv6 prefixy. Pokud prázdné, bude použit stávající prefix na " -"rozhraní." - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" -"Oznamovaná doba za kterou by sousední stroje měly být dosažitelné. 0 znamená " -"neoznamovat." - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" -"Oznamovaný výchozí počet hopů pro odchozí unicast pakety. 0 vypne oznamování " -"počtu hopů." - -msgid "Advertises the default router preference" -msgstr "Oznamovaný preferovaný router." - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "Oznamovat MTU linky. 0 vypne oznamování MTU." - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" -"Oznamovaný počet sekund po kterých adresa generovaná z prefixu bezestavové " -"konfigurace zůstává preferovaná." - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" -"Oznamovaný počet sekund po kterou je prefix validní pro potřeby zjištění " -"stavu on-link/off-link." - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" -"Oznamovaný počet sekund k vypršení platnosti preference routeru. 0 zančí že " -"není žádný router preferován." - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" -"Oznamovaný počet sekund k vypršení nabízení služeb Mobile IPv6 Home Agenta" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" -"Oznamovaný počet milisekund mezi Neighbor Solicitation zprávamy. 0 vypne " -"oznamování." - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "Autonomní" - -msgid "Clients" -msgstr "Klienti" - -msgid "Configuration flag" -msgstr "Konfigurační volba" - -msgid "Current hop limit" -msgstr "Aktuální limit počtu hopů" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "Konfigurace DNSSL" - -msgid "Default lifetime" -msgstr "Výchozí časový limit" - -msgid "Default preference" -msgstr "Výchozí preference" - -msgid "Enable" -msgstr "Povolit" - -msgid "Enable advertisements" -msgstr "Povolit oznamování" - -msgid "Enables router advertisements and solicitations" -msgstr "Povolí oznamování routeru a hledání sousedů" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" -"Povolí přídavný stavový administrovaný autokonfigurační protokol (RFC2462)" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "Povolí autokonfiguraci přídavného, neadresních informací (RFC2462)" - -msgid "General" -msgstr "Obecné" - -msgid "Home Agent information" -msgstr "Informace Home Agenta" - -msgid "Home Agent lifetime" -msgstr "Časový limit Home Agenta" - -msgid "Home Agent preference" -msgstr "Preferovaný Home Agent" - -msgid "Include Home Agent Information in the RA" -msgstr "Zahrnout informace o Home Agentovi v oznámeních" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "Rozhraní" - -msgid "Interface Configuration" -msgstr "Konfigurace rozhraní" - -msgid "Interface required" -msgstr "Rozhraní vyžadováno" - -msgid "Interfaces" -msgstr "Rozhraní" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "Max. interval" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "Multicast" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Prefix Configuration" -msgstr "Nastavení prefixu" - -msgid "Prefixes" -msgstr "Prefixy" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "Konfigurace RDNSS" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - rozhraní %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - Prefix" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Route" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "Dostupný čas" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "Trasy" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "Suffix" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "Načasování" - -msgid "Unicast only" -msgstr "Pouze unicast" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "Doba platnosti" - -msgid "default" -msgstr "výchozí" - -msgid "high" -msgstr "vysoká" - -msgid "low" -msgstr "nízká" - -msgid "medium" -msgstr "střední" - -msgid "no" -msgstr "ne" - -# ano -msgid "yes" -msgstr "ano" diff --git a/package/luci/applications/luci-app-radvd/po/de/radvd.po b/package/luci/applications/luci-app-radvd/po/de/radvd.po deleted file mode 100644 index a294619055..0000000000 --- a/package/luci/applications/luci-app-radvd/po/de/radvd.po +++ /dev/null @@ -1,483 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-15 16:46+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: German\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "6to4 interface" -msgstr "6to4-Schnittstelle" - -msgid "Address" -msgstr "Adresse" - -msgid "Addresses" -msgstr "Adressen" - -msgid "Advanced" -msgstr "Erweitert" - -msgid "Advertise Home Agent flag" -msgstr "Home-Agent Funktionalität ankündigen" - -msgid "Advertise router address" -msgstr "Router-Adresse ankündigen" - -msgid "Advertised Domain Suffixes" -msgstr "Angekündigte Domain-Suffixes" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"Angekündigte rekursive IPv6 DNS Server. Wenn leer wird die aktuelle IPv6-" -"Adresse der Schnittstelle verwendet" - -msgid "Advertised IPv6 prefixes" -msgstr "Angekündigte IPv6-Prefixe" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Angekündigte IPv6-Subnetze in CIDR-Notation. Wenn leer wird das aktuelle " -"IPv6-Prefix der Schnittstelle verwendet" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "Kündigt \"Mobile IPv6 Home Agent\"-Fähigkeit an (RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "Kündigt \"Mobile Router Registration\"-Fähigkeit an (NEMO Basic)" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" -"Kündigt die angenommene Erreichbarkeit von Nachbarn als Zeitspanne in " -"Millisekunden an, sofern gegeben. Der Wert \"0\" deaktiviert " -"Erreichbarkeitsankündigungen" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" -"Kündigt den Standard Hop-Count-Wert für ausgehende Unicast-Pakete an. Der " -"Wert \"0\" deaktiviert Hop-Count-Ankündigungen" - -msgid "Advertises the default router preference" -msgstr "Kündigt das Vorhandensein des Default-Routers an" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" -"Kündigt die gegebene Verbindungs-MTU an wenn gegeben. Der Wert \"0\" " -"deaktiviert MTU-Ankündigungen" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" -"Kündigt den Zeitraum an, in dem die vom angekündigtem Prefix generierte " -"Adresse bevorzugt bleibt, als Zeitspanne in Sekunden." - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" -"Kündigt den Zeitraum in Sekunden an, in dem der Prefix für On-Link-" -"Ermittlung gültig ist." - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" -"Kündigt die Gültigskeitsdauer des Defaultrouters in Sekunden an. Der Wert \"0" -"\" impliziert dass dieser Knoten kein Default-Router ist" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" -"Kündigt die Zeitspanne in Sekunden an, in der der Router \"Mobile IPv6 Home " -"Agent\"-Dienste anbietet" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" -"Kündigt die vorgegebene Wartezeit zwischen wiederholt versendeten Neighbor-" -"Solicitation-Nachrichten als Zeitspanne in Millisekunden an, wenn gegeben. " -"Der Wert \"0\" deaktiviert die Ankündigung der Wartezeit" - -msgid "Advertising" -msgstr "Ankündigend" - -msgid "Autonomous" -msgstr "Autonom" - -msgid "Clients" -msgstr "Clienten" - -msgid "Configuration flag" -msgstr "Konfigurations-Bit" - -msgid "Current hop limit" -msgstr "Aktuelles Hop-Limit" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "DNSSL-Konfiguration" - -msgid "Default lifetime" -msgstr "Standard-Gültigkeitszeitraum" - -msgid "Default preference" -msgstr "Standard-Priorität" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "Enable advertisements" -msgstr "Ankündigungen aktivieren" - -msgid "Enables router advertisements and solicitations" -msgstr "Aktiviert Router-Ankündigungen und Solicitations" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" -"Aktiviert das zusätzliche \"Stateful Administered Autoconfiguration Protocol" -"\" (RFC2462)" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" -"Aktiviert die Auto-Konfiguration von zusätzlichen, Nicht-Adress-" -"Eigenschaften (RFC2462)" - -msgid "General" -msgstr "Allgemein" - -msgid "Home Agent information" -msgstr "Home-Agent-Information" - -msgid "Home Agent lifetime" -msgstr "Home-Agent-Gültigkeitsdauer" - -msgid "Home Agent preference" -msgstr "Home-Agent-Priorität" - -msgid "Include Home Agent Information in the RA" -msgstr "Home-Agent-Informationen in die RA-Nachricht einfügen" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "Mobile-IPv6-Ankündigungsintervall in die RA-Nachricht einfügen" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" -"Link-Layer-Adresse der ausgehenden Schnittstelle in die RA-Nachricht einfügen" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" -"Zeigt an, dass die Adresse der Schnittstelle statt einem Netzwerk-Prefix " -"gesendet wird - benötigt für Mobile IPv6" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" -"Zeigt an, dass die zugrundeliegende Verbindung keinen Broadcast-Verkehr " -"beherrscht, verhindert das Senden unaufgeforderter Ankündigungsnachrichten" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" -"Zeigt an, dass das angekündigte Prefix für autonome Adress-Konfiguration " -"genutzt werden kann (RFC4862)" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" -"Zeigt an, dass das Prefix für On-Link-Ermittlungen genutzt werden kann " -"(RFC4861)" - -msgid "Interface" -msgstr "Schnittstelle" - -msgid "Interface Configuration" -msgstr "Schnittstellenkonfiguration" - -msgid "Interface required" -msgstr "Schnittstelle benötigt" - -msgid "Interfaces" -msgstr "Schnittstellen" - -msgid "Lifetime" -msgstr "Gültigkeitsdauer" - -msgid "Link MTU" -msgstr "Verbindungs-MTU" - -msgid "Managed flag" -msgstr "Managed-Bit" - -msgid "Max. interval" -msgstr "Max. Intervall" - -msgid "Maximum advertisement interval" -msgstr "Maximales Ankündigungsintervall" - -msgid "Minimum advertisement delay" -msgstr "Minimale Ankündigungsverzögerung" - -msgid "Minimum advertisement interval" -msgstr "Minimales Ankündigungsintervall" - -msgid "Mobile IPv6" -msgstr "Mobile IPv6" - -msgid "Mobile IPv6 interval option" -msgstr "Mobile-IPv6-Intervall-Option" - -msgid "Mobile IPv6 router registration" -msgstr "Mobile-IPv6-Router-Registrierung" - -msgid "Multicast" -msgstr "Multicast" - -msgid "On-link" -msgstr "On-Link" - -msgid "On-link determination" -msgstr "On-Link-Ermittlung" - -msgid "Preference" -msgstr "Priorität" - -msgid "Preferred lifetime" -msgstr "Bevorzugte Gültigkeitsdauer" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Prefix Configuration" -msgstr "Prefix-Konfiguration" - -msgid "Prefixes" -msgstr "Prefixes" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "RDNSS-Konfiguration" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - Schnittstelle %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - Prefix" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Route" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"Radvd ist ein Router-Advertisement-Dienst für IPv6. Er hört auf Router-" -"Solicitations und sendet Ankündigungen wie in RFC 4861 spezifiziert." - -msgid "Reachable time" -msgstr "Erreichbarkeitsdauer" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" -"Kommunikation auf angegebene Clients beschränken, leer lassen um Multicast " -"zu nutzen" - -msgid "Retransmit timer" -msgstr "Taktung von Neu-Übertragungen" - -msgid "Route Configuration" -msgstr "Routen-Konfiguration" - -msgid "Routes" -msgstr "Routen" - -msgid "Source link-layer address" -msgstr "Quell-Link-Layer-Adresse" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" -"Spezifiziert eine Schnittstelle, von welcher das 6to4-Prefix abgeleitet " -"wird. Die öffentliche IPv4-Adresse der Schnittstelle wird dazu mit dem " -"Subnetz 2002::/3 und dem Wert der Prefix-Option kombiniert" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "Bestimmt die Gültigkeitsdauer dieser Route." - -msgid "Specifies the logical interface name this section belongs to" -msgstr "Bestimmt die Schnittstelle, zu welcher diese Sektion gehört" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" -"Bestimmt die maximale Dauer, für welche die DNSSL-Einträge gültig zur " -"Namensauflösung sind." - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" -"Bestimmt die maximale Dauer, für welche die RDNSS-Einträge gültig zur " -"Namensauflösung sind." - -msgid "Specifies the preference associated with the default router" -msgstr "Bestimmt die mit diesem Router assoziierte Priorität" - -msgid "Suffix" -msgstr "Suffix" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Die maximal erlaubte Wartezeit zwischen dem Versand aufeinanderfolgender, " -"unaufgeforderter Mutlicast-Router-Ankündigungen auf dieser Schnittstelle als " -"Zeitspanne in Sekunden" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" -"Die minimal erlaubte Wartezeit zwischen dem Versand aufeinanderfolgender " -"Router-Ankündigungen auf dieser Schnittstelle als Zeitspanne in Sekunden" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Die minimal erlaubte Wartezeit zwischen dem Versand aufeinanderfolgender, " -"unaufgeforderter Mutlicast-Router-Ankündigungen auf dieser Schnittstelle als " -"Zeitspanne in Sekunden" - -msgid "The preference for the Home Agent sending this RA" -msgstr "Die Priorität des ankündigendem \"IPv6 Home Agent\"" - -msgid "Timing" -msgstr "Taktung" - -msgid "Unicast only" -msgstr "Nur Unicast" - -msgid "Valid lifetime" -msgstr "Gültigkeitsdauer" - -msgid "Validity time" -msgstr "Gültigkeitsdauer" - -msgid "default" -msgstr "Standard" - -msgid "high" -msgstr "hoch" - -msgid "low" -msgstr "niedrig" - -msgid "medium" -msgstr "mittel" - -msgid "no" -msgstr "nein" - -msgid "yes" -msgstr "ja" - -#~ msgid "Advertised IPv6 prefix" -#~ msgstr "Angekündigtes IPv6-Prefix" - -#~ msgid "" -#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used" -#~ msgstr "" -#~ "Angekündigtes IPv6-Subnetz in CIDR-Notation. Wenn leer wird das aktuelle " -#~ "IPv6-Prefix der Schnittstelle verwendet" - -#~ msgid "" -#~ "Advertises the length of time in seconds that addresses generated from " -#~ "the prefix via stateless address autoconfiguration remain preferred. Use " -#~ "0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Kündigt den Zeitraum an, in dem die vom angekündigtem Prefix generierte " -#~ "Adresse bevorzugt bleibt, als Zeitspanne in Sekunden. Der Wert \"0\" " -#~ "spezifiziert eine unbegrenzte Gültigkeitsspanne" - -#~ msgid "" -#~ "Advertises the length of time in seconds that the prefix is valid for the " -#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Kündigt den Zeitraum in Sekunden an, in dem der Prefix für On-Link-" -#~ "Ermittlung gültig ist. Der Wert \"0\" spezifiziert eine unbegrenzte " -#~ "Gültigkeitsspanne" - -#~ msgid "" -#~ "Indicates whether that RDNSS continues to be available to hosts even if " -#~ "they moved to a different subnet" -#~ msgstr "" -#~ "Zeigt an, ob dieser rekursive DNS Server von anderen Subnetzen aus " -#~ "verfügbar bleibt" - -#~ msgid "Open" -#~ msgstr "Offen" - -#~ msgid "" -#~ "Specifies the lifetime associated with the route in seconds. Use 0 to " -#~ "specify an infinite lifetime" -#~ msgstr "" -#~ "Bestimmt die Gültigkeitsdauer dieser Route. Der Wert \"0\" spezifiziert " -#~ "einen unbegrenzten Zeitraum" - -#~ msgid "" -#~ "Specifies the maximum duration how long the DNSSL entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Bestimmt die maximale Dauer, für welche die DNSSL-Einträge gültig zur " -#~ "Namensauflösung sind. Der Wert \"0\" spezifiziert einen unbegrenzten " -#~ "Zeitraum" - -#~ msgid "" -#~ "Specifies the maximum duration how long the RDNSS entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Bestimmt die maximale Dauer, für welche die RDNSS-Einträge gültig zur " -#~ "Namensauflösung sind. Der Wert \"0\" spezifiziert einen unbegrenzten " -#~ "Zeitraum" diff --git a/package/luci/applications/luci-app-radvd/po/el/radvd.po b/package/luci/applications/luci-app-radvd/po/el/radvd.po deleted file mode 100644 index 00763c9231..0000000000 --- a/package/luci/applications/luci-app-radvd/po/el/radvd.po +++ /dev/null @@ -1,370 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-18 15:31+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: German\n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "6to4 interface" -msgstr "Διεπαφή 6to4" - -msgid "Address" -msgstr "Διεύθυνση" - -msgid "Addresses" -msgstr "Διευθύνσεις" - -msgid "Advanced" -msgstr "" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "Πελάτες" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "Ενεργοποίηση" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "Διεπαφή" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "Διεπαφές" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - Διεπαφή %q" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Διαδρομή" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "Διαδρομές" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "όχι" - -msgid "yes" -msgstr "ναι" diff --git a/package/luci/applications/luci-app-radvd/po/en/radvd.po b/package/luci/applications/luci-app-radvd/po/en/radvd.po deleted file mode 100644 index 63f8fa0d5c..0000000000 --- a/package/luci/applications/luci-app-radvd/po/en/radvd.po +++ /dev/null @@ -1,368 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2010-11-21 04:06+0100\n" -"Last-Translator: \n" -"Language-Team: German\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 "6to4 interface" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Addresses" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/es/radvd.po b/package/luci/applications/luci-app-radvd/po/es/radvd.po deleted file mode 100644 index 86561920bf..0000000000 --- a/package/luci/applications/luci-app-radvd/po/es/radvd.po +++ /dev/null @@ -1,412 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-26 17:12+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: German\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "6to4 interface" -msgstr "Interfaz 6a4" - -msgid "Address" -msgstr "Dirección" - -msgid "Addresses" -msgstr "Direcciones" - -msgid "Advanced" -msgstr "Avanzado" - -msgid "Advertise Home Agent flag" -msgstr "Publicar marca de agente personal" - -msgid "Advertise router address" -msgstr "Publicar dirección del router" - -msgid "Advertised Domain Suffixes" -msgstr "Publicar sufijos de dominio" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"RDNSS IPv6 publicado. Dejar en blanco para usar la dirección IPv6 de la " -"interfaz" - -msgid "Advertised IPv6 prefixes" -msgstr "Prefijo IPv6 publicado" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Prefijos IPv6 publicados. Dejar en blanco para usar el propio del interfaz" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "Publica aptitudes móviles IPv6 del Home Agent (RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "Publica las aptitudes de registro del router móvil" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" -"Publica el alcance asumido en milisegundos de los vecinos en la RA si se " -"especifica. 0 para desactivar" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" -"Publica la cuenta de saltos para paquetes salientes en el RA. Desactivar con " -"0" - -msgid "Advertises the default router preference" -msgstr "Publica la preferencia de router por defecto" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "Publica el MTU del enlace en la RA si se especifica. Desactivar con 0" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" -"Publica el tiempo de vida en segundos que se prefieren las direcciones " -"generadas desde el prefijo vía una dirección de autoconfiguración sin estado." - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" -"Publica el tiempo en segundos que el prefijo es válido para determinar que " -"el enlace está activo." - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" -"Publica tiempo de vida del router por defecto en segundos. 0 si el router no " -"lo es" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" -"Publica tiempo en segundos que router ofrece servicios de Home Agent para " -"IPv6 móvil" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" -"Publicar el tiempo de espera en milisegundos entre mensajes de solicitud de " -"vecinos en la RA. Desactivar con 0" - -msgid "Advertising" -msgstr "Publicación" - -msgid "Autonomous" -msgstr "Autónomo" - -msgid "Clients" -msgstr "Clientes" - -msgid "Configuration flag" -msgstr "Marca de configuración" - -msgid "Current hop limit" -msgstr "Límite de saltos actual" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "Configuración DNSSL" - -msgid "Default lifetime" -msgstr "Vida por defecto" - -msgid "Default preference" -msgstr "Preferencia por defecto" - -msgid "Enable" -msgstr "Activar" - -msgid "Enable advertisements" -msgstr "Activar publicaciones" - -msgid "Enables router advertisements and solicitations" -msgstr "Activar publicaciones y solicitudes de router" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "Activa el protocolo adicional de autoconfiguración de estado (RFC2462)" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" -"Activa la configuración de información adicional que no sea de dirección " -"(RFC2462)" - -msgid "General" -msgstr "General" - -msgid "Home Agent information" -msgstr "Información del \"Home Agent\"" - -msgid "Home Agent lifetime" -msgstr "Vida del \"Home Agent\"" - -msgid "Home Agent preference" -msgstr "Preferencia del \"Home Agent\"" - -msgid "Include Home Agent Information in the RA" -msgstr "Incluir información del \"Home Agent\" en el RA" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "Incluir la opción de publicación móvil IPv6 a RA" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" -"Incluye la dirección de capa de enlace para el interfaz saliente en la RA" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" -"Se enviará la dirección del interfaz en vez del prefijo de red tal y como se " -"requiere par IPv6 móvil" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" -"El enlace inferior no puede hacer redifusión, no se pueden enviar " -"publicaciones no solicitadas" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" -"Este prefijo se puede usar como una dirección autónoma de configuración " -"(RFC4862)" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" -"Este prefijo se puede usar para determinación de enlace activado (RFC4861)" - -msgid "Interface" -msgstr "Interfaz" - -msgid "Interface Configuration" -msgstr "Configuración de la interfaz" - -msgid "Interface required" -msgstr "Se necesita una interfaz" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Lifetime" -msgstr "Vida" - -msgid "Link MTU" -msgstr "MTU del enlace" - -msgid "Managed flag" -msgstr "Marca de gestionado" - -msgid "Max. interval" -msgstr "Intervalo máximo" - -msgid "Maximum advertisement interval" -msgstr "Intervalo máximo de publicación" - -msgid "Minimum advertisement delay" -msgstr "Retraso mínimo de publicación" - -msgid "Minimum advertisement interval" -msgstr "Intervalo mínimo de publicación" - -msgid "Mobile IPv6" -msgstr "IPv6 móvil" - -msgid "Mobile IPv6 interval option" -msgstr "Opción de intervalo móvil IPv6" - -msgid "Mobile IPv6 router registration" -msgstr "Registro de router móvil IPv6" - -msgid "Multicast" -msgstr "Multidifusión" - -msgid "On-link" -msgstr "Enlace activado (On-link)" - -msgid "On-link determination" -msgstr "Determinar enlace activado" - -msgid "Preference" -msgstr "Preferencia" - -msgid "Preferred lifetime" -msgstr "Duración de vida preferida" - -msgid "Prefix" -msgstr "Prefijo" - -msgid "Prefix Configuration" -msgstr "Configuración del prefijo" - -msgid "Prefixes" -msgstr "Prefijos" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "Configuración RDNSS" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - Interfaz %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - Prefijo" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Ruta" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"Radvd es un demonio de publicación de enrutado de para IPv6. Atiende " -"solicitudes de ruta y envía anuncios de ruta como se describe en RFC4861." - -msgid "Reachable time" -msgstr "Tiempo alcanzable" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" -"Restringir comunicaciones a estos clientes, dejar en blanco para " -"multidifusión" - -msgid "Retransmit timer" -msgstr "Retraso de retransmisión" - -msgid "Route Configuration" -msgstr "Configuración de rutas" - -msgid "Routes" -msgstr "Rutas" - -msgid "Source link-layer address" -msgstr "Dirección origen de enlace de red" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" -"Nombre lógicos del interfaz del que derivar un prefijo 6to4. La dirección " -"IPv4 pública del interfaz se combina con 2002::/3 y el valor de la opción " -"\"prefijo\"" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "Tiempo de vida asociado a la ruta en segundos." - -msgid "Specifies the logical interface name this section belongs to" -msgstr "Nombre del interfaz lógico al que pertenece esta sección" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" -"Máximo tiempo que las entradas DNSSL se usan para resolución de nombres." - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" -"Máximo tiempo que las entradas RDNSS se usan para resolución de nombres." - -msgid "Specifies the preference associated with the default router" -msgstr "Preferencia asociada con el router por defecto" - -msgid "Suffix" -msgstr "Sufijo" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Máximo tiempo en segundos entre envíos de publicaciones multidifusión desde " -"el interfaz" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" -"Mínimo tiempo en segundos entre envíos de publicaciones multidifusión desde " -"el interfaz" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Mínimo tiempo en segundos entre envíos de publicaciones multidifusión no " -"solicitadas desde el interfaz" - -msgid "The preference for the Home Agent sending this RA" -msgstr "Preferencia que el Home Agent enviará a esta RA" - -msgid "Timing" -msgstr "Temporización" - -msgid "Unicast only" -msgstr "Solo unidifusión" - -msgid "Valid lifetime" -msgstr "Tiempo de vida válido" - -msgid "Validity time" -msgstr "Tiempo de validez" - -msgid "default" -msgstr "por defecto" - -msgid "high" -msgstr "alto" - -msgid "low" -msgstr "bajo" - -msgid "medium" -msgstr "medio" - -msgid "no" -msgstr "no" - -msgid "yes" -msgstr "sí" diff --git a/package/luci/applications/luci-app-radvd/po/fr/radvd.po b/package/luci/applications/luci-app-radvd/po/fr/radvd.po deleted file mode 100644 index b26e6e060b..0000000000 --- a/package/luci/applications/luci-app-radvd/po/fr/radvd.po +++ /dev/null @@ -1,472 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-11-23 22:32+0200\n" -"Last-Translator: fredb \n" -"Language-Team: German\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "6to4 interface" -msgstr "Interface 6to4" - -msgid "Address" -msgstr "Adresse" - -msgid "Addresses" -msgstr "Adresses" - -msgid "Advanced" -msgstr "Avancé" - -msgid "Advertise Home Agent flag" -msgstr "Drapeau de publication de l'agent Personnel (Home Agent)" - -msgid "Advertise router address" -msgstr "Publier l'adresse du routeur" - -msgid "Advertised Domain Suffixes" -msgstr "Suffixes de domaines publiés" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"IPv6 RDNSS publié. S'il est vide, l'adresse IPv6 courante de l'interface est " -"utilisée" - -msgid "Advertised IPv6 prefixes" -msgstr "Préfixes IPv6 publiés" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Préfixes IPv6 publiés. Si c'est vide, le préfixe actuel de l'interface est " -"utilisé" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "Publie la capacité Home Agent d'IPv6 Mobile (RFC 3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "Publie la capacité d'enregistrement d'un Routeur Mobile (NEMO basique)" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" -"Publie le temps d'accès présumé en milli-secondes des voisins dans le RA " -"s'il est spécifié. 0 désactive les publications d'accessibilité" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" -"Publie le nombre de sauts par défaut pour les paquets unicast sortants dans " -"le RA. 0 désactive les publications de nombre de sauts" - -msgid "Advertises the default router preference" -msgstr "Publie la préférence du routeur par défaut" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" -"Publie la valeur donnée de MTU dans les messages RA. 0 désactive la " -"publication du MTU" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" -"Publie la durée du routeur par défaut, en secondes. 0 indique que le nœud " -"n'est pas un routeur par défaut" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" -"Publie la durée en secondes pendant laquelle le routeur offre les services " -"IPv6 Mobile d'agent personnel (Home Agent)" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" -"Publie le temps d'attente en millisecondes entre deux messages de " -"sollicitation de voisinage dans le RA. 0 indique de ne pas retransmettre les " -"publications" - -msgid "Advertising" -msgstr "Publication" - -msgid "Autonomous" -msgstr "Autonome" - -msgid "Clients" -msgstr "Clients" - -msgid "Configuration flag" -msgstr "Drapeau de configuration" - -msgid "Current hop limit" -msgstr "Limite de sauts actuelle" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "Configuration DNSSL" - -msgid "Default lifetime" -msgstr "Durée de vie par défaut" - -msgid "Default preference" -msgstr "Préférence par défaut" - -msgid "Enable" -msgstr "Activer" - -msgid "Enable advertisements" -msgstr "Activer les publications" - -msgid "Enables router advertisements and solicitations" -msgstr "Activer les publications et sollicitations du routeur" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" -"Active le protocole d'auto-configuration administrée à états supplémentaire " -"(RFC 2462)" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" -"Active l'auto-configuration d'informations autres que l'adresse " -"supplémentaires (RFC 2462)" - -msgid "General" -msgstr "Général" - -msgid "Home Agent information" -msgstr "Informations de l'agent personnel (Home Agent)" - -msgid "Home Agent lifetime" -msgstr "Durée de vie de l'agent personnel (Home Agent)" - -msgid "Home Agent preference" -msgstr "Préférence de l'agent personnel (Home Agent)" - -msgid "Include Home Agent Information in the RA" -msgstr "Inclure les informations de l'agent personnel (Home Agent) dans le RA" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" -"Inclure l'option de l'intervalle de publication de Mobile IPv6 dans le RA" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "Inclure l'adresse de niveau lien de l'interface sortante dans le RA" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" -"Indique que l'adresse de l'interface est envoyée à la place du préfixe " -"réseau, comme demandé par la norme IPv6 Mobile" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" -"Indique que le lien sous-jacent ne peut faire de publication « broadcast », " -"pour éviter l'envoi de publications non sollicitées" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" -"Indique que ce préfixe peut être utilisé pour la configuration autonome des " -"adresses (RFC 4862)" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" -"Indique que ce préfixe peut être utilisé pour la détermination des adresses " -"liées-au-support (On-Link, RFC 4861)" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface Configuration" -msgstr "Configuration de l'interface" - -msgid "Interface required" -msgstr "Interface nécessaire" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Lifetime" -msgstr "Durée de vie" - -msgid "Link MTU" -msgstr "MTU du lien" - -msgid "Managed flag" -msgstr "Indicateur de gestion" - -msgid "Max. interval" -msgstr "Intervalle Max" - -msgid "Maximum advertisement interval" -msgstr "Intervalle maximum de publication" - -msgid "Minimum advertisement delay" -msgstr "Délai de publication minimum" - -msgid "Minimum advertisement interval" -msgstr "Intervalle minimum de publication" - -msgid "Mobile IPv6" -msgstr "IPv6 Mobile" - -msgid "Mobile IPv6 interval option" -msgstr "Option d'intervalle pour l'IPv6 Mobile" - -msgid "Mobile IPv6 router registration" -msgstr "Enregistrement du routeur pour IPv6 Mobile" - -msgid "Multicast" -msgstr "Multicast" - -msgid "On-link" -msgstr "lié-au-support (On-link)" - -msgid "On-link determination" -msgstr "Détermination de la liaison-au-support (On-link)" - -msgid "Preference" -msgstr "Préférence" - -msgid "Preferred lifetime" -msgstr "Durée de vie préférée" - -msgid "Prefix" -msgstr "Préfixe" - -msgid "Prefix Configuration" -msgstr "Configuration du préfixe" - -msgid "Prefixes" -msgstr "Préfixes" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "Configuration RDNSS" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - Interface %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - Préfixe" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Routage" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"Radvd est un démon de publication de routage pour IPv6. Il écoute des " -"sollicitations de routage (Router Sollicitation) et envoie des publications " -"de routage (Router Advertisement) comme décrit dans la RFC 4861." - -msgid "Reachable time" -msgstr "temps d'accès" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" -"Restreint la communication aux clients spécifiés, laissez vide pour utiliser " -"le multicast" - -msgid "Retransmit timer" -msgstr "Délai de retransmission" - -msgid "Route Configuration" -msgstr "Configuration du routage" - -msgid "Routes" -msgstr "Routes" - -msgid "Source link-layer address" -msgstr "Adresse-source de niveau lien" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" -"Décrit le nom d'une interface logique de laquelle le préfixe 6to4 sera " -"déduit. Les adresses IPv4 des interfaces publiques sont combinées avec " -"2002::/3 et la valeur de l'option de préfixe" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" -"Indique le nom de l'interface logique auquelle cette section est rattachée" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "Indique la préférence associée au routeur par défaut" - -msgid "Suffix" -msgstr "Suffixe" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Temps maximum autorisé entre deux émissions de publications multicast non " -"sollicitées du routeur depuis cette interface, en secondes" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" -"Temps minimum autorisé entre deux émissions de publications multicast du " -"routeur depuis cette interface, en secondes" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Temps minimum autorisé entre deux émissions de publications multicast non " -"sollicitées du routeur depuis cette interface, en secondes" - -msgid "The preference for the Home Agent sending this RA" -msgstr "Préférence pour l'agent personnel (Home Agent) envoyant ce RA" - -msgid "Timing" -msgstr "Délai" - -msgid "Unicast only" -msgstr "Unicast seulement" - -msgid "Valid lifetime" -msgstr "Durée de la validité" - -msgid "Validity time" -msgstr "Durée de validité" - -msgid "default" -msgstr "Défaut" - -msgid "high" -msgstr "haut" - -msgid "low" -msgstr "bas" - -msgid "medium" -msgstr "moyen" - -msgid "no" -msgstr "non" - -msgid "yes" -msgstr "oui" - -#~ msgid "Advertised IPv6 prefix" -#~ msgstr "Préfixe IPv6 publié" - -#~ msgid "" -#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used" -#~ msgstr "" -#~ "Préfixe IPv6 publié. S'il est vide, le préfixe actuel de l'interface est " -#~ "utilisé" - -#~ msgid "" -#~ "Advertises the length of time in seconds that addresses generated from " -#~ "the prefix via stateless address autoconfiguration remain preferred. Use " -#~ "0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Publie la durée en secondes pendant laquelle les adresses générées depuis " -#~ "le préfixe via l'auto-configuration sans état restent préférées. 0 " -#~ "indique une durée infinie" - -#~ msgid "" -#~ "Advertises the length of time in seconds that the prefix is valid for the " -#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Publie la durée en secondes pendant laquelle le préfixe est valable pour " -#~ "le choix des adresses liées-au-support (on-link). 0 indique une durée " -#~ "infinie" - -#~ msgid "" -#~ "Indicates whether that RDNSS continues to be available to hosts even if " -#~ "they moved to a different subnet" -#~ msgstr "" -#~ "Indique si le RDNSS contine d'être disponible aux hôtes même s'ils ont " -#~ "migré sur un sous-réseau différent" - -#~ msgid "Open" -#~ msgstr "Ouvert" - -#~ msgid "" -#~ "Specifies the lifetime associated with the route in seconds. Use 0 to " -#~ "specify an infinite lifetime" -#~ msgstr "" -#~ "Précise la durée de vie d'une route, en secondes. Utiliser 0 pour une " -#~ "durée de vie infinie" - -#~ msgid "" -#~ "Specifies the maximum duration how long the DNSSL entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Indique la durée maximum d'utilisation des entrées DNSSL pour la " -#~ "résolution de nom. Utiliser 0 pour une durée infinie" - -#~ msgid "" -#~ "Specifies the maximum duration how long the RDNSS entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Indique la durée maximum d'utilisation des entrées RDNSS pour la " -#~ "résolution de nom. Utiliser 0 pour une durée infinie" diff --git a/package/luci/applications/luci-app-radvd/po/he/radvd.po b/package/luci/applications/luci-app-radvd/po/he/radvd.po deleted file mode 100644 index 63ec16816b..0000000000 --- a/package/luci/applications/luci-app-radvd/po/he/radvd.po +++ /dev/null @@ -1,367 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "6to4 interface" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Addresses" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/hu/radvd.po b/package/luci/applications/luci-app-radvd/po/hu/radvd.po deleted file mode 100644 index 90aa4bafaf..0000000000 --- a/package/luci/applications/luci-app-radvd/po/hu/radvd.po +++ /dev/null @@ -1,372 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-01-31 12:14+0200\n" -"Last-Translator: Gabor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "6to4 interface" -msgstr "6to4 interfész" - -msgid "Address" -msgstr "Cím" - -msgid "Addresses" -msgstr "Címek" - -msgid "Advanced" -msgstr "Fejlett" - -msgid "Advertise Home Agent flag" -msgstr "Otthoni Ügynök jelző közzététele" - -msgid "Advertise router address" -msgstr "Útválasztó cím közzététele" - -msgid "Advertised Domain Suffixes" -msgstr "Közzétett domain utótagok" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "Közzétett IPv6 előtagok" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Közzétett IPv6 előtagok. Ha üres, a jelenlegi interfész előtag lesz " -"használva." - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "DNSSL konfiguráció" - -msgid "Default lifetime" -msgstr "Alapértelemezett élettartam" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "Interfészek" - -msgid "Lifetime" -msgstr "Élettartam" - -msgid "Link MTU" -msgstr "Kapcsolat MTU" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "RDNSS beállítások" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - %q interfész" - -msgid "Radvd - Prefix" -msgstr "Radvd - Előtag" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Útvonal" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "Útvonal beállítás" - -msgid "Routes" -msgstr "Útvonalak" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "Időzítés" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "alípértelmezett" - -msgid "high" -msgstr "magas" - -msgid "low" -msgstr "alacsony" - -msgid "medium" -msgstr "közepes" - -msgid "no" -msgstr "nem" - -msgid "yes" -msgstr "igen" diff --git a/package/luci/applications/luci-app-radvd/po/it/radvd.po b/package/luci/applications/luci-app-radvd/po/it/radvd.po deleted file mode 100644 index cda09b7098..0000000000 --- a/package/luci/applications/luci-app-radvd/po/it/radvd.po +++ /dev/null @@ -1,374 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-10 19:21+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: German\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "6to4 interface" -msgstr "Interfaccia 6to4" - -msgid "Address" -msgstr "Indirizzo" - -msgid "Addresses" -msgstr "Indirizzi" - -msgid "Advanced" -msgstr "Avanzato" - -msgid "Advertise Home Agent flag" -msgstr "Advertise Home Agent flag" - -msgid "Advertise router address" -msgstr "Annuncia indirizzo router" - -msgid "Advertised Domain Suffixes" -msgstr "Annuncia Suffissi Dominio" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"Annuncia RDNSS IPv6. Se vuoto, l'indirizzo IPv6 attuale dell'interfaccia " -"verrà usato" - -msgid "Advertised IPv6 prefixes" -msgstr "Prefissi IPv6 Annunciati" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Prefissi IPv6 Annunciati. Se vuoto, il prefisso dell'interfaccia attuale " -"verrà usato" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "Annuncia la capacità dell'Agente Home IPv6 Mobile (RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "Abilita" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/ja/radvd.po b/package/luci/applications/luci-app-radvd/po/ja/radvd.po deleted file mode 100644 index 35cde34f4a..0000000000 --- a/package/luci/applications/luci-app-radvd/po/ja/radvd.po +++ /dev/null @@ -1,378 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-16 09:35+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: German\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.4\n" - -msgid "6to4 interface" -msgstr "6to4 インターフェース" - -msgid "Address" -msgstr "アドレス" - -msgid "Addresses" -msgstr "アドレス" - -msgid "Advanced" -msgstr "詳細設定" - -msgid "Advertise Home Agent flag" -msgstr "ホームエージェントフラグの広告" - -msgid "Advertise router address" -msgstr "ルーターアドレスの広告" - -msgid "Advertised Domain Suffixes" -msgstr "広告するドメインサフィックスを設定します。" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"広告するIPv6 RDNSSを設定します。未設定の場合、現在のインターフェースのIPv6 ア" -"ドレスに設定します。" - -msgid "Advertised IPv6 prefixes" -msgstr "広告するIPv6 プレフィクスを設定します" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"広告するIPv6 プレフィクスを設定します。未設定の場合、現在のインターフェースの" -"プレフィクスに設定します。" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "モバイルIPv6 ホームエージェント機能の広告を行います。 (RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "広告" - -msgid "Autonomous" -msgstr "Autonomous" - -msgid "Clients" -msgstr "クライアント" - -msgid "Configuration flag" -msgstr "Configuration フラグ" - -msgid "Current hop limit" -msgstr "現在のホップ数制限" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "DNSSL 設定" - -msgid "Default lifetime" -msgstr "標準有効時間" - -msgid "Default preference" -msgstr "標準優先度設定" - -msgid "Enable" -msgstr "有効" - -msgid "Enable advertisements" -msgstr "広告を有効にする" - -msgid "Enables router advertisements and solicitations" -msgstr "ルータ広告および要請を有効にする" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "基本設定" - -msgid "Home Agent information" -msgstr "ホームエージェント 情報" - -msgid "Home Agent lifetime" -msgstr "ホームエージェント 有効時間" - -msgid "Home Agent preference" -msgstr "ホームエージェント 優先度" - -msgid "Include Home Agent Information in the RA" -msgstr "ルータ広告 (RA) にホームエージェント情報を含める" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "インターフェース" - -msgid "Interface Configuration" -msgstr "インターフェース設定" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "インターフェース" - -msgid "Lifetime" -msgstr "有効時間" - -msgid "Link MTU" -msgstr "リンクMTU" - -msgid "Managed flag" -msgstr "Managed フラグ" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "ルータ要請最大送信間隔" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "ルータ要請最低送信間隔" - -msgid "Mobile IPv6" -msgstr "モバイル IPv6" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "モバイル IPv6 ルータ登録" - -msgid "Multicast" -msgstr "マルチキャスト" - -msgid "On-link" -msgstr "On-link" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "優先度" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "プレフィクス" - -msgid "Prefix Configuration" -msgstr "プレフィクス設定" - -msgid "Prefixes" -msgstr "プレフィクス" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "RDNSS 設定" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - インターフェース %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - プレフィクス" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - 経路" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"Radvdは、IPv6用のルータ広告デーモンです。RadvdはRFC 4861に規定されている、" -"ルータ要請の受信と、ルータ広告の送信を行います。" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" -"設定されたクライアントに対してのみ通信を行います。設定しない場合、マルチキャ" -"ストを行います。" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "経路設定" - -msgid "Routes" -msgstr "経路" - -msgid "Source link-layer address" -msgstr "送信元リンク層アドレス" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "このセクションで使用する論理インターフェース名を設定してください。" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "サフィックス" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "タイミング設定" - -msgid "Unicast only" -msgstr "ユニキャストのみ" - -msgid "Valid lifetime" -msgstr "有効時間の設定" - -msgid "Validity time" -msgstr "有効時間" - -msgid "default" -msgstr "default" - -msgid "high" -msgstr "高" - -msgid "low" -msgstr "低" - -msgid "medium" -msgstr "中" - -msgid "no" -msgstr "いいえ" - -msgid "yes" -msgstr "はい" diff --git a/package/luci/applications/luci-app-radvd/po/ms/radvd.po b/package/luci/applications/luci-app-radvd/po/ms/radvd.po deleted file mode 100644 index 63f8fa0d5c..0000000000 --- a/package/luci/applications/luci-app-radvd/po/ms/radvd.po +++ /dev/null @@ -1,368 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2010-11-21 04:06+0100\n" -"Last-Translator: \n" -"Language-Team: German\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 "6to4 interface" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Addresses" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/no/radvd.po b/package/luci/applications/luci-app-radvd/po/no/radvd.po deleted file mode 100644 index 1c43442e5d..0000000000 --- a/package/luci/applications/luci-app-radvd/po/no/radvd.po +++ /dev/null @@ -1,435 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "6to4 interface" -msgstr "6til4 grensesnitt" - -msgid "Address" -msgstr "Adresse" - -msgid "Addresses" -msgstr "Adresser" - -msgid "Advanced" -msgstr "Avansert" - -msgid "Advertise Home Agent flag" -msgstr "Annonser Home Agent flagg" - -msgid "Advertise router address" -msgstr "Annonser ruteradressen" - -msgid "Advertised Domain Suffixes" -msgstr "Annonserte Domenesuffikser" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"Annonsert IPv6 RDNSS. Hvis tom, brukes den gjeldende IPv6-adressen til " -"grensesnittet" - -msgid "Advertised IPv6 prefixes" -msgstr "Annonserte IPv6 prefikser" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Annonserte IPv6 prefikser. Hvis tom, brukes gjeldende grensesnitt prefiks" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "Annonserer Mobile IPv6 Home Agent muligheter (RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "Annonserer Mobile Router registration muligheter (NEMO Basic)" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" -"Annonserer antatt tilgjengelighet i millisekunder for naboer i RA. 0 " -"deaktiverer annonsenering av tilgjengelighet" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" -"Annonserer standard Hop Count verdien for utgående unicast pakker i RA. 0 " -"deaktierer annonsering av hopcount" - -msgid "Advertises the default router preference" -msgstr "Annonserer standard ruter preferanse" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "Annonserer angitt link MTU i RA. 0 deaktiverer annonsereing av MTU" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" -"Annonserer levetiden for standard ruter i sekunder. 0 indikerer at noden " -"ikke er standard ruter" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" -"Annonserer tiden i sekunder der ruteren tilbyr Mobile IPv6 Home Agent " -"tjenester" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" -"Annonserer ventetiden i millisekunder mellom Neighbor Solicitation meldinger " -"i RA. 0 deaktiverer omsendte annonseringer" - -msgid "Advertising" -msgstr "Annonsering" - -msgid "Autonomous" -msgstr "Selvstendig" - -msgid "Clients" -msgstr "Klienter" - -msgid "Configuration flag" -msgstr "Konfigurasjon flagg" - -msgid "Current hop limit" -msgstr "Nåværende hop grense" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "DNSSL Konfigurasjon" - -msgid "Default lifetime" -msgstr "Standard levetid" - -msgid "Default preference" -msgstr "Standard prepreferanse" - -msgid "Enable" -msgstr "Aktiver" - -msgid "Enable advertisements" -msgstr "Aktiver annonsering" - -msgid "Enables router advertisements and solicitations" -msgstr "Aktiverer ruter annonsering og anmodning" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" -"Aktiverer den ekstra 'stateful' administrerte autokonfigurasjon protokoll " -"(RFC2462)" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" -"Aktiverer autokonfigurasjon for annen ikke adresse informasjon (RFC2462)" - -msgid "General" -msgstr "Generell" - -msgid "Home Agent information" -msgstr "Home Agen informasjon" - -msgid "Home Agent lifetime" -msgstr "Home Agent levetid" - -msgid "Home Agent preference" -msgstr "Home Agent preferanse" - -msgid "Include Home Agent Information in the RA" -msgstr "Inkluder Home Agent informasjon i RA" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "Inkluder Mobile IPv6 annonserings intervall alternativer til RA" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "Inkluder utgående grensesnitts link-layer adresse til RA" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" -"Indikerer at grensesnittets adresse er sendt istedet for nettverks " -"prefikset, noe som er nødvendig for Mobile IPv6" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" -"Indikerer at underliggende link ikke er broadcast kapabel, dette forhindrer " -"spontane annonsering" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" -"Indikerer at dette prefikset kan bli brukt for autonom adresse konfigurasjon " -"(RFC4862)" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" -"Indikerer at dette prefikset kan bli brukt for on-link bestemmelse (RFC4861)" - -msgid "Interface" -msgstr "Grensesnitt" - -msgid "Interface Configuration" -msgstr "Grensesnitt Konfigurasjon" - -msgid "Interface required" -msgstr "Grenesnitt er nødvendig" - -msgid "Interfaces" -msgstr "Grensesnitt" - -msgid "Lifetime" -msgstr "Levetid" - -msgid "Link MTU" -msgstr "Link MTU" - -msgid "Managed flag" -msgstr "Managed flagg" - -msgid "Max. interval" -msgstr "Maks. intervall" - -msgid "Maximum advertisement interval" -msgstr "Maksimum annonsering intervall" - -msgid "Minimum advertisement delay" -msgstr "Minimum annonsering forsinkelse" - -msgid "Minimum advertisement interval" -msgstr "Minimum annonsering intervall" - -msgid "Mobile IPv6" -msgstr "Mobile IPv6" - -msgid "Mobile IPv6 interval option" -msgstr "Mobile IPv6 intervall alternativer" - -msgid "Mobile IPv6 router registration" -msgstr "Mobile IPv6 ruter registrering" - -msgid "Multicast" -msgstr "Multicast" - -msgid "On-link" -msgstr "On-link" - -msgid "On-link determination" -msgstr "On-link bestemmelse" - -msgid "Preference" -msgstr "Preferanse" - -msgid "Preferred lifetime" -msgstr "Foretrukket levetid" - -msgid "Prefix" -msgstr "Prefiks" - -msgid "Prefix Configuration" -msgstr "Prefiks Konfigurasjon" - -msgid "Prefixes" -msgstr "Prefikser" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "RDNSS Konfigurasjon" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - Grensesnitt %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - Prefiks" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Rute" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"Radvd er en ruter annonserings tjeneste for IPv6. Den lytter etter ruter " -"anmodninger og sender ruter annonsering som beskrevet i RFC 4861" - -msgid "Reachable time" -msgstr "Tilgjengelighet tid" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" -"Begrens kommunikasjonen til klienter spesifisert her, la stå tomt for å " -"bruke multicast" - -msgid "Retransmit timer" -msgstr "Omsendelse tidsmåler" - -msgid "Route Configuration" -msgstr "Rute Konfigurasjon" - -msgid "Routes" -msgstr "Ruter" - -msgid "Source link-layer address" -msgstr "Kilde link-lag adresse" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" -"Angir et logisk grensenittsnavn å hente 6til4 prefiks fra. Grensesnittets " -"offentlige IPv4 adresse er kombinert med 2002::/3 og verdien av prefiks " -"alternativet" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "Angir det logiske grensesnittsnavnet som denne seksjonen tilhører" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "Angir preferanse knyttet til standard ruteren" - -msgid "Suffix" -msgstr "Suffiks" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Maksimal tillatt tid mellom sending av spontane multicast annonseringer fra " -"grensesnittet, i sekunder" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" -"Minimum tillatt tid mellom sending av multicast annonseringer fra " -"grensesnittet, i sekunder" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Minimum tillatt tid mellom sending av spontane multicast annonseringer fra " -"grensesnittet, i sekunder" - -msgid "The preference for the Home Agent sending this RA" -msgstr "Referansen til Home Agenten som sender denne RA" - -msgid "Timing" -msgstr "Timing" - -msgid "Unicast only" -msgstr "Kun Unikast" - -msgid "Valid lifetime" -msgstr "Gyldig levetid" - -msgid "Validity time" -msgstr "Gyldighetsperiode" - -msgid "default" -msgstr "standard" - -msgid "high" -msgstr "høy" - -msgid "low" -msgstr "lav" - -msgid "medium" -msgstr "medium" - -msgid "no" -msgstr "nei" - -msgid "yes" -msgstr "ja" - -#~ msgid "" -#~ "Advertises the length of time in seconds that addresses generated from " -#~ "the prefix via stateless address autoconfiguration remain preferred. Use " -#~ "0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Annonserer tiden i sekunder hvor adresser generert ut fra prefikset via " -#~ "tilstandsløs autokonfigurasjon er foretrukket. Bruk 0 for ubegrenset " -#~ "levetid" - -#~ msgid "" -#~ "Advertises the length of time in seconds that the prefix is valid for the " -#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Annonserer tiden i sekunder hvor prefikset er gyldig, hvor formålet er on-" -#~ "link fastsettelse. Bruk 0 for ubegrenset levetid." - -#~ msgid "" -#~ "Specifies the lifetime associated with the route in seconds. Use 0 to " -#~ "specify an infinite lifetime" -#~ msgstr "" -#~ "Angir levetiden tilknyttet ruten i sekunder. Bruk 0 for ubegrenset levetid" - -#~ msgid "" -#~ "Specifies the maximum duration how long the DNSSL entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Angir den maksimale varighet av DNSSL navne oppslag. Bruk 0 for " -#~ "ubegrenset levetid" - -#~ msgid "" -#~ "Specifies the maximum duration how long the RDNSS entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Angir den maksimale varighet av RDNSS navne oppslag. Bruk 0 for " -#~ "ubegrenset levetid" diff --git a/package/luci/applications/luci-app-radvd/po/pl/radvd.po b/package/luci/applications/luci-app-radvd/po/pl/radvd.po deleted file mode 100644 index a080c97823..0000000000 --- a/package/luci/applications/luci-app-radvd/po/pl/radvd.po +++ /dev/null @@ -1,377 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-05 04:35+0200\n" -"Last-Translator: piosl \n" -"Language-Team: German\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -# Na polskiej Wikipedii jest artykuł "6to4", więc chyba ok. -msgid "6to4 interface" -msgstr "Interfejs 6to4" - -msgid "Address" -msgstr "Adres" - -msgid "Addresses" -msgstr "Adresy" - -msgid "Advanced" -msgstr "Zaawansowane" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "Rozgłaszaj adres routera" - -msgid "Advertised Domain Suffixes" -msgstr "Rozgłaszana Domena Rozszerzenia" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"Rozgłaszane IPv6 RDNSS. Jeżeli jest puste, używany jest aktualny adres IPv6 " -"interfejsu" - -msgid "Advertised IPv6 prefixes" -msgstr "Rozgłaszany prefixy IPv6 " - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Rozgłaszany prefixy IPv6. Jeżeli jest puste, używany jest aktualny prefix " -"interfejsu" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "Rozgłaszanie" - -msgid "Autonomous" -msgstr "Autonomiczny" - -msgid "Clients" -msgstr "Klienci" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "Konfiguracja DNSSL" - -msgid "Default lifetime" -msgstr "Domyślna żywotność" - -msgid "Default preference" -msgstr "preferencje domyślne" - -msgid "Enable" -msgstr "umożliwiać" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "Ogólny" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "Interfejs" - -msgid "Interface Configuration" -msgstr "Konfiguracja interfejsu" - -msgid "Interface required" -msgstr "wymagany interfejs" - -msgid "Interfaces" -msgstr "Interfejs" - -msgid "Lifetime" -msgstr "Dożywotni" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "Max. Przedział" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "preferencje" - -msgid "Preferred lifetime" -msgstr "preferowana żywotność" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "Konfiguracja RDNSS" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - interfejs %q" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -#, fuzzy -msgid "Timing" -msgstr "Timing" - -msgid "Unicast only" -msgstr "Tylko unicast" - -msgid "Valid lifetime" -msgstr "ważne dożywotnio" - -msgid "Validity time" -msgstr "czas ważności" - -msgid "default" -msgstr "domyślne" - -msgid "high" -msgstr "wysoki" - -msgid "low" -msgstr "niski" - -msgid "medium" -msgstr "średni" - -msgid "no" -msgstr "nie" - -msgid "yes" -msgstr "tak" diff --git a/package/luci/applications/luci-app-radvd/po/pt-br/radvd.po b/package/luci/applications/luci-app-radvd/po/pt-br/radvd.po deleted file mode 100644 index 62c63bb19a..0000000000 --- a/package/luci/applications/luci-app-radvd/po/pt-br/radvd.po +++ /dev/null @@ -1,469 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-17 23:13+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: German\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "6to4 interface" -msgstr "Interface 6to4" - -msgid "Address" -msgstr "Endereço" - -msgid "Addresses" -msgstr "Endereços" - -msgid "Advanced" -msgstr "Avançado" - -msgid "Advertise Home Agent flag" -msgstr "Anuncie a opção de Agente Local" - -msgid "Advertise router address" -msgstr "Anuncie o endereço do roteador" - -msgid "Advertised Domain Suffixes" -msgstr "Anuncie o Sufixo do Domínio" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"Anuncia IPv6 RDNSS. Se vazio, o endereço IPv6 atual da interface será usado" - -msgid "Advertised IPv6 prefixes" -msgstr "Anuncie os prefixos IPv6" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Anuncie os prefixos IPv6. Se vazio, o prefixo da interface atual será usado" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "Anuncia a capacidade de Agente Local para IPv6 Móvel (RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "Anuncia a capacidade de registro de Roteador Móvel (NEMO Básico)" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" -"Se especificado, anuncia no RA o tempo assumido de alcance dos vizinhos, em " -"milissegundos. Especifique 0 para desabilita este anuncio" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" -"Anuncia no RA o valor padrão para a contagem de saltos nos pacotes unicast " -"saindo da rede. Especifique 0 para desabilita este anuncio" - -msgid "Advertises the default router preference" -msgstr "Anuncia a preferência do roteador padrão" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" -"Anuncia no RA o MTU da conexão. Especifique 0 para desabilita este anuncio" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" -"Divulga a duração do tempo em segundos que endereços gerados a partir do " -"prefixo através apátridas endereço autoconfiguração permanecem preferido." - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" -"Divulga a duração do tempo em segundos que o prefixo é válido para o " -"propósito de sobre-link determinado." - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" -"Anuncia o período de tempo, em segundos, da validade do roteador padrão. " -"Especifique 0 para período infinito" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" -"Anuncia o período de tempo, em segundos, que o roteador está oferecendo o " -"serviço de Agente Local para IPv6 Móvel" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" -"Anuncia o tempo de espera, em milissegundos, entre mensagens de Solicitação " -"de Vizinhos no RA. Especifique 0 para desabilitar a retransmissão do anúncio" - -msgid "Advertising" -msgstr "Anúncio" - -msgid "Autonomous" -msgstr "Autônomo" - -msgid "Clients" -msgstr "Clientes" - -msgid "Configuration flag" -msgstr "Marcação de configuração" - -msgid "Current hop limit" -msgstr "Limite de saltos atual" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "Configuração DNSSL" - -msgid "Default lifetime" -msgstr "Validade padrão" - -msgid "Default preference" -msgstr "Preferências padrão" - -msgid "Enable" -msgstr "Habilita" - -msgid "Enable advertisements" -msgstr "Habilita anúncios" - -msgid "Enables router advertisements and solicitations" -msgstr "Habilita as solicitações e os anúncios do roteador" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" -"Habilita o protoloco de autoconfiguração administrada com estado (RFC2462)" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" -"Habilita a autoconfiguração de informação adicional, não endereço (RFC2462)" - -msgid "General" -msgstr "Geral" - -msgid "Home Agent information" -msgstr "Informação do Agente Local" - -msgid "Home Agent lifetime" -msgstr "Validade do Agente Local" - -msgid "Home Agent preference" -msgstr "Preferências do Agente Local" - -msgid "Include Home Agent Information in the RA" -msgstr "Inclui Informação do Agente Local no RA" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "Inclui a opção de Intervalo de Anúncio de IPv6 Móvel no RA" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "Inclui o endereço da camada de rede da interface de saída no RA" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" -"Indica que o endereço da interface é enviado ao invés do prefixo de rede, " -"como é necessário para IPv6 Móvel" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" -"Indica que a conexão abaixo não é capaz de utilizar broadcast. Isto inibe o " -"envio de anúncios não solicitados" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" -"Indica que este prefixo pode ser usado para configuração autônoma de " -"endereços (RFC4862)" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" -"Indica que este prefixo pode ser usado para a determinação da presença no " -"enlace local (RFC4861)" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface Configuration" -msgstr "Configuração da Interface" - -msgid "Interface required" -msgstr "Requer uma interface" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Lifetime" -msgstr "Validade" - -msgid "Link MTU" -msgstr "MTU da conexão" - -msgid "Managed flag" -msgstr "Marcação de gerenciado" - -msgid "Max. interval" -msgstr "Intervalo Máximo" - -msgid "Maximum advertisement interval" -msgstr "Intervalo máximo de anúncio" - -msgid "Minimum advertisement delay" -msgstr "Atraso mínimo de anúncio" - -msgid "Minimum advertisement interval" -msgstr "Intervalo mínimo de anúncio" - -msgid "Mobile IPv6" -msgstr "IPv6 Móvel" - -msgid "Mobile IPv6 interval option" -msgstr "Opçao de intervalo de IPv6 móvel" - -msgid "Mobile IPv6 router registration" -msgstr "Registro de roteador IPv6 móvel" - -msgid "Multicast" -msgstr "Multicast" - -msgid "On-link" -msgstr "Presença no enlace local" - -msgid "On-link determination" -msgstr "Determinação da presença no enlace local" - -msgid "Preference" -msgstr "Preferência" - -msgid "Preferred lifetime" -msgstr "Validade preferida" - -msgid "Prefix" -msgstr "Prefixo" - -msgid "Prefix Configuration" -msgstr "Configuração do Prefixo" - -msgid "Prefixes" -msgstr "Prefixos" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "Configuração do RDNSS" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - Interface %q" - -msgid "Radvd - Prefix" -msgstr "advd - Prefixo" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Rota" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"Radvd é um programa de anúncio de rotas para IPv6. Ele escuta por " -"solicitações de rota e envia anúncios de roteador (RA) como descrito em RFC " -"4861." - -msgid "Reachable time" -msgstr "Tempo de alcance" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" -"Restringe a comnuicação para clientes específicos. Deixe vazio para usar " -"multicast" - -msgid "Retransmit timer" -msgstr "Cronômetro de retransmissão" - -msgid "Route Configuration" -msgstr "Configuração da Rota" - -msgid "Routes" -msgstr "Rotas" - -msgid "Source link-layer address" -msgstr "Endereço de origem da camada de enlace" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" -"Especifica o nome da interface lógica da qual será derivada o prefixo 6to4. " -"O endereço IPv4 público da interface é combinado com 2002::/3 e o valor da " -"opção de prefixo" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "Especifica o tempo de vida associado com o trajecto em segundos." - -msgid "Specifies the logical interface name this section belongs to" -msgstr "Especifica o nome da interface lógica que esta seção pertence" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" -"Especifica a duração máxima de quanto tempo as entradas DNSSL são usados ​​" -"para resolução de nomes." - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" -"Especifica a duração máxima de quanto tempo as entradas RDNSS são usados ​​" -"para resolução de nomes." - -msgid "Specifies the preference associated with the default router" -msgstr "Especifica as preferências associadas com o roteador padrão" - -msgid "Suffix" -msgstr "Sufixo" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"O tempo máximo, em segundos, permitido entre o envio de RAs não solicitados " -"a partir desta interface" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" -"O tempo mínimo, em segundos, permitido entre o envio de RAs a partir desta " -"interface" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"O tempo mínimo, em segundos, permitido entre o envio de RAs não solicitados " -"a partir desta interface" - -msgid "The preference for the Home Agent sending this RA" -msgstr "As preferencias para o Agente Local enviando este RA" - -msgid "Timing" -msgstr "Cronometragem" - -msgid "Unicast only" -msgstr "Somente Unicast" - -msgid "Valid lifetime" -msgstr "Duração da validade" - -msgid "Validity time" -msgstr "Tempo de validade" - -msgid "default" -msgstr "padrão" - -msgid "high" -msgstr "alto" - -msgid "low" -msgstr "baixo" - -msgid "medium" -msgstr "médio" - -msgid "no" -msgstr "não" - -msgid "yes" -msgstr "sim" - -#~ msgid "Advertised IPv6 prefix" -#~ msgstr "Anuncie o prefixo IPv6" - -#~ msgid "" -#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used" -#~ msgstr "" -#~ "Anuncie o prefixo IPv6. Se vazio, o prefixo da interface atual será usado" - -#~ msgid "" -#~ "Advertises the length of time in seconds that addresses generated from " -#~ "the prefix via stateless address autoconfiguration remain preferred. Use " -#~ "0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Anuncia o período de tempo, em segundos, que endereços gerados a partir " -#~ "do prefixo através da autoconfiguração de endereço sem estado terão " -#~ "preferência. Especifique 0 para período infinito" - -#~ msgid "" -#~ "Advertises the length of time in seconds that the prefix is valid for the " -#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Anuncia o período de tempo, em segundos, que o prefixo é valido para o " -#~ "propósito de determinação da presença no enlace local. Especifique 0 para " -#~ "período infinito" - -#~ msgid "" -#~ "Indicates whether that RDNSS continues to be available to hosts even if " -#~ "they moved to a different subnet" -#~ msgstr "" -#~ "Indica se o RDNSS continuará a estar disponível mesmo se o cliente for " -#~ "movido para uma subrede diferente" - -#~ msgid "Open" -#~ msgstr "Abrir" - -#~ msgid "" -#~ "Specifies the lifetime associated with the route in seconds. Use 0 to " -#~ "specify an infinite lifetime" -#~ msgstr "Especifica a validade da rota em segundos. Utilize 0 para infinita" - -#~ msgid "" -#~ "Specifies the maximum duration how long the DNSSL entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Especifica a validade da entrada DNSSL para a resolução de nomes. Utilize " -#~ "0 para duração infinita" - -#~ msgid "" -#~ "Specifies the maximum duration how long the RDNSS entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Especifica a validade da entrada RDNS para a resolução de nomes. Utilize " -#~ "0 para duração infinita" diff --git a/package/luci/applications/luci-app-radvd/po/pt/radvd.po b/package/luci/applications/luci-app-radvd/po/pt/radvd.po deleted file mode 100644 index 63f8fa0d5c..0000000000 --- a/package/luci/applications/luci-app-radvd/po/pt/radvd.po +++ /dev/null @@ -1,368 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2010-11-21 04:06+0100\n" -"Last-Translator: \n" -"Language-Team: German\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 "6to4 interface" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Addresses" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/ro/radvd.po b/package/luci/applications/luci-app-radvd/po/ro/radvd.po deleted file mode 100644 index 77e3d9ee20..0000000000 --- a/package/luci/applications/luci-app-radvd/po/ro/radvd.po +++ /dev/null @@ -1,384 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-07 16:12+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "6to4 interface" -msgstr "Interfata 6la4" - -msgid "Address" -msgstr "Adresa" - -msgid "Addresses" -msgstr "Adrese" - -msgid "Advanced" -msgstr "Avansat" - -msgid "Advertise Home Agent flag" -msgstr "Anunta semaforul \"Home Agent\"" - -msgid "Advertise router address" -msgstr "Anunta adresa routerului" - -msgid "Advertised Domain Suffixes" -msgstr "Sufixe anuntate de domeniu" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"Server RDNSS IPv6 anuntat. Daca e lasat gol, atunci adresa IPv6 a interfetei " -"este folosita" - -msgid "Advertised IPv6 prefixes" -msgstr "Prefixe IPv6 anuntate" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Prefixe IPv6 anuntate. Daca e neconfigurat atunci prefixul de pe interfata " -"curenta este folosit" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "Anunta capabilitatea de \"Home Agent\" IPv6 mobil (RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "Anunta capacitatea de inregistrare \"Mobile Router\"" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "Anunta preferinta routerului implicit" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "Anunta" - -msgid "Autonomous" -msgstr "Autonom" - -msgid "Clients" -msgstr "Clienti" - -msgid "Configuration flag" -msgstr "Semafor de configurare" - -msgid "Current hop limit" -msgstr "Limita hop-ului curent" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "Configurarea DNSSL" - -msgid "Default lifetime" -msgstr "Durata implicita" - -msgid "Default preference" -msgstr "Preferinta implicita" - -msgid "Enable" -msgstr "Activeaza" - -msgid "Enable advertisements" -msgstr "Activeaza anunturile" - -msgid "Enables router advertisements and solicitations" -msgstr "Activeaza anunturile si solicitarile routerului" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "Informatia despre \"Home Agent\"" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "Preferinta \"Home Agent\"" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "Interfata" - -msgid "Interface Configuration" -msgstr "Configurarea interfetei" - -msgid "Interface required" -msgstr "Interfata necesara" - -msgid "Interfaces" -msgstr "Interfete" - -msgid "Lifetime" -msgstr "Durata de viata" - -msgid "Link MTU" -msgstr "MTU pe legatura" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "Interval maxim" - -msgid "Maximum advertisement interval" -msgstr "Intervalul maxim de anuntare" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "IPv6 mobil" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "Multicast" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "Preferinta" - -msgid "Preferred lifetime" -msgstr "Durata de viata preferata" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Prefix Configuration" -msgstr "Configurarea prefixului" - -msgid "Prefixes" -msgstr "Prefixe" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "Configurarea rutelor" - -msgid "Routes" -msgstr "Rute" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "Sufix" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "Doar unicast" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "nu" - -msgid "yes" -msgstr "da" - -#~ msgid "Advertised IPv6 prefix" -#~ msgstr "Prefixul IPv6 anuntat" - -#~ msgid "" -#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used" -#~ msgstr "" -#~ "Prefixul IPv6 anuntat. Daca e lasat gol atunci prefixul de pe interfata " -#~ "curenta este folosit" diff --git a/package/luci/applications/luci-app-radvd/po/ru/radvd.po b/package/luci/applications/luci-app-radvd/po/ru/radvd.po deleted file mode 100644 index 37cc9428dd..0000000000 --- a/package/luci/applications/luci-app-radvd/po/ru/radvd.po +++ /dev/null @@ -1,473 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: radvd\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2012-08-16 11:37+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "6to4 interface" -msgstr "Интерфейс 6to4" - -msgid "Address" -msgstr "Адрес" - -msgid "Addresses" -msgstr "Адреса" - -msgid "Advanced" -msgstr "Расширенные" - -msgid "Advertise Home Agent flag" -msgstr "Извещать индикатор домашнего агента" - -msgid "Advertise router address" -msgstr "Извещать адрес маршрутизатора" - -msgid "Advertised Domain Suffixes" -msgstr "Извещаемые суффиксы домена" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"Извещаемый IPv6 RDNSS. Если значение не задано, то будет использован текущий " -"IPv6-адрес интерфейса." - -msgid "Advertised IPv6 prefixes" -msgstr "Извещаемые IPv6-префиксы" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Извещаемые IPv6-префиксы. Если значение не задано, то будет использован " -"текущий префикс интерфейса." - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "Извещает возможности домашнего агента мобильного IPv6 (RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" -"Извещает возможности регистрации мобильного маршрутизатора (NEMO Basic)" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" -"Извещает предполагаемое время доступа к соседним узлам (мс). При значении 0 " -"извещение не происходит." - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" -"Извещает значение числа переходов по умолчанию для исходящих одноадресных " -"пакетов. При значении 0 извещение не происходит." - -msgid "Advertises the default router preference" -msgstr "Извещает параметры предпочтения маршрутизатора по умолчанию" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" -"Извещает указанный максимальный размер пакета (MTU) в сообщении RA. 0 " -"выключает данную функцию" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" -"Извещает период (сек.), в течение которого адреса, созданные из префикса с " -"помощью SLAAC, остаются предпочтительными." - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" -"Извещает период (сек.), в течение которого префикс является действительным " -"для определения включения соединения." - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" -"Извещает период действия (сек.) маршрутизатора по умолчанию. 0 указывает на " -"то, что узел не является маршрутизатором по умолчанию." - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" -"Извещает период (сек.) предоставления служб домашнего агента мобильного IPv6" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" -"Извещает время ожидания (мс) между сообщениями Neighbor Solicitation, если " -"RA включен. 0 отключает передачу извещений" - -msgid "Advertising" -msgstr "Извещение" - -msgid "Autonomous" -msgstr "Автономный" - -msgid "Clients" -msgstr "Клиенты" - -msgid "Configuration flag" -msgstr "Конфигурационный флаг" - -msgid "Current hop limit" -msgstr "Текущее ограничение кол-ва прыжков" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "Конфигурация DNSSL" - -msgid "Default lifetime" -msgstr "Срок действия по умолчанию" - -msgid "Default preference" -msgstr "Приоритет по умолчанию" - -msgid "Enable" -msgstr "Включить" - -msgid "Enable advertisements" -msgstr "Включить извещения" - -msgid "Enables router advertisements and solicitations" -msgstr "Включает извещения и запросы маршрутизатора" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "Включает дополнительный протокол автоконфигурации (RFC2462)" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "Включает автоконфигурацию дополнительной информации (RFC2462)" - -msgid "General" -msgstr "Общие" - -msgid "Home Agent information" -msgstr "Информация о домашнем агенте" - -msgid "Home Agent lifetime" -msgstr "Срок действия домашнего агента" - -msgid "Home Agent preference" -msgstr "Приоритет домашнего агента" - -msgid "Include Home Agent Information in the RA" -msgstr "Включить информацию о домашнем агенте в сообщения RA" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "Включить интервал извещения мобильного IPv6 в сообщения RA" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "Включает адрес канального уровня исходящего интерфейса в сообщения RA" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" -"Указывает, что адрес интерфейса отправляется вместо префикса сети, как это " -"требуется в мобильном IPv6" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" -"Указывает, что соединение не является широковещательным, и блокирует отсылку " -"незапрошенных извещений" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" -"Указывае, что данный префикс может быть использован для автономной настройки " -"адреса (RFC4862)" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" -"Указывает, что данный префикс может быть использован для определения " -"включения соединения (RFC4861)" - -msgid "Interface" -msgstr "Интерфейс" - -msgid "Interface Configuration" -msgstr "Конфигурация интерфейса" - -msgid "Interface required" -msgstr "Требуется интерфейс" - -msgid "Interfaces" -msgstr "Интерфейсы" - -msgid "Lifetime" -msgstr "Срок действия" - -msgid "Link MTU" -msgstr "Максимальный размер пакета (MTU)" - -msgid "Managed flag" -msgstr "Управляемый флаг" - -msgid "Max. interval" -msgstr "Макс. интервал" - -msgid "Maximum advertisement interval" -msgstr "Максимальный интервал извещения" - -msgid "Minimum advertisement delay" -msgstr "Минимальная задержка извещения" - -msgid "Minimum advertisement interval" -msgstr "Минимальный интервал извещения" - -msgid "Mobile IPv6" -msgstr "Мобильный IPv6" - -msgid "Mobile IPv6 interval option" -msgstr "Параметры интервала мобильного IPv6" - -msgid "Mobile IPv6 router registration" -msgstr "Регистрация мобильного IPv6 маршрутизатора" - -msgid "Multicast" -msgstr "Групповая рассылка" - -#, fuzzy -msgid "On-link" -msgstr "Соединение" - -msgid "On-link determination" -msgstr "Определение включения соединения" - -msgid "Preference" -msgstr "Приоритет" - -msgid "Preferred lifetime" -msgstr "Предпочитаемый срок действия" - -msgid "Prefix" -msgstr "Префикс" - -msgid "Prefix Configuration" -msgstr "Конфигурация префикса" - -msgid "Prefixes" -msgstr "Префиксы" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "Конфигурация RDNSS" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - Интерфейс %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - Префикс" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Маршрут" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"Radvd - это служба извещений маршрутизатора для IPv6. Она слушает запросы " -"(Router Solicitations) и отсылает извещения (Router Advertisements), как " -"описано в RFC 4861." - -msgid "Reachable time" -msgstr "Период доступности" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" -"Связываться только с указанными клиентами. Оставьте пустым, чтобы " -"использовать групповую рассылку" - -msgid "Retransmit timer" -msgstr "Таймер ретрансляции" - -msgid "Route Configuration" -msgstr "Настройка маршрута" - -msgid "Routes" -msgstr "Маршруты" - -msgid "Source link-layer address" -msgstr "Адрес источника (канальный уровень)" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" -"Устанавливает имя логического интерфейса для получения префикса 6to4. " -"Публичный IPv4-адрес интерфейса комбинитуется с 2002::/3 и значением префикса" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "Указывает период жизни, связанный с маршрутом (сек.)" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" -"Устанавливает имя логического интерфейса, которому принадлежит данная секция" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" -"Указывает максимальную длительность использования записей DNSSL для " -"разрешения имён." - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" -"Указывает максимальную длительность использования записей RDNSS для " -"разрешения имён." - -msgid "Specifies the preference associated with the default router" -msgstr "Указывает приоритет, связанный с маршрутизатором по умолчанию" - -msgid "Suffix" -msgstr "Суффикс" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Максимальный интервал времени между отсылкой групповых незапрашиваемых " -"извещений маршрутизатора (сек.)" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" -"Минимальный интервал времени между отсылкой групповых извещений " -"маршрутизатора с интерфейса (сек.)" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" -"Минимальный интервал времени между отсылкой групповых незапрашиваемых " -"извещений маршрутизатора (сек.)" - -msgid "The preference for the Home Agent sending this RA" -msgstr "Предпочтение домашнего агента, отсылающего данное извещение RA" - -msgid "Timing" -msgstr "Интервалы" - -msgid "Unicast only" -msgstr "Только одноадресная передача" - -msgid "Valid lifetime" -msgstr "Срок действия" - -msgid "Validity time" -msgstr "Период действия" - -msgid "default" -msgstr "по умолчанию" - -msgid "high" -msgstr "высокий" - -msgid "low" -msgstr "низкий" - -msgid "medium" -msgstr "средний" - -msgid "no" -msgstr "нет" - -msgid "yes" -msgstr "да" - -#~ msgid "Advertised IPv6 prefix" -#~ msgstr "Извещаемый IPv6 префикс" - -#~ msgid "" -#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used" -#~ msgstr "" -#~ "Извещаемый IPv6 префикс. Если значение не задано, то будет использован " -#~ "текущий префикс интерфейса." - -#~ msgid "" -#~ "Advertises the length of time in seconds that addresses generated from " -#~ "the prefix via stateless address autoconfiguration remain preferred. Use " -#~ "0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Извещает время в секундах, в течение которого адреса сгенерированные " -#~ "автоматически из префикса остаются предпочтительными. 0 устанавливает " -#~ "неограниченное время." - -#~ msgid "" -#~ "Advertises the length of time in seconds that the prefix is valid for the " -#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Извещает время в секундах, в течение которого используется префикс для " -#~ "определения включения соединения. 0 устанавливает неограниченное время." - -#~ msgid "" -#~ "Indicates whether that RDNSS continues to be available to hosts even if " -#~ "they moved to a different subnet" -#~ msgstr "" -#~ "Указывает остается ли RDNSS доступным для хостов даже в случае их " -#~ "перемещения в другую подсеть" - -#~ msgid "" -#~ "Specifies the lifetime associated with the route in seconds. Use 0 to " -#~ "specify an infinite lifetime" -#~ msgstr "" -#~ "Устанавливает срок действия, связанный с маршрутом (секунды). Используйте " -#~ "0 для установки бесконечного срока действия." - -#~ msgid "" -#~ "Specifies the maximum duration how long the DNSSL entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Устанавливает максимальный срок действия DNSSL элементов для разрешения " -#~ "имен.Используйте 0 для установки бесконечного срока действия" - -#~ msgid "" -#~ "Specifies the maximum duration how long the RDNSS entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "" -#~ "Устанавливает максимальный срок действия DNSSL элементов для разрешения " -#~ "имен.Используйте 0 для установки бесконечного срока действия" diff --git a/package/luci/applications/luci-app-radvd/po/sk/radvd.po b/package/luci/applications/luci-app-radvd/po/sk/radvd.po deleted file mode 100644 index 9bd26fa345..0000000000 --- a/package/luci/applications/luci-app-radvd/po/sk/radvd.po +++ /dev/null @@ -1,367 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "6to4 interface" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Addresses" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/sv/radvd.po b/package/luci/applications/luci-app-radvd/po/sv/radvd.po deleted file mode 100644 index b2a88999f7..0000000000 --- a/package/luci/applications/luci-app-radvd/po/sv/radvd.po +++ /dev/null @@ -1,370 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "6to4 interface" -msgstr "" - -msgid "Address" -msgstr "Adress" - -msgid "Addresses" -msgstr "Adresser" - -msgid "Advanced" -msgstr "Avancerat" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "Annonsera router-adress" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "Annonsering" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "Klienter" - -msgid "Configuration flag" -msgstr "Konfigurationsflagga" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "Konfiguration av DNSSL" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "Aktivera" - -msgid "Enable advertisements" -msgstr "Aktivera annonser" - -msgid "Enables router advertisements and solicitations" -msgstr "Aktivera router-annonser och hemställande" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "Generella" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "Gränssnitt" - -msgid "Interface Configuration" -msgstr "Konfiguration av gränssnitt" - -msgid "Interface required" -msgstr "Gränssnitt krävs" - -msgid "Interfaces" -msgstr "Gränsnitt" - -msgid "Lifetime" -msgstr "Livstid" - -msgid "Link MTU" -msgstr "Länka MTU" - -msgid "Managed flag" -msgstr "Hanterad flagga" - -msgid "Max. interval" -msgstr "Maximalt intervall" - -msgid "Maximum advertisement interval" -msgstr "Maximalt intervall för annonsering" - -msgid "Minimum advertisement delay" -msgstr "Minsta fördröjning av annonsering" - -msgid "Minimum advertisement interval" -msgstr "Minsta intervall för annonsering" - -msgid "Mobile IPv6" -msgstr "Mobilt IPv6" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "Prefix" - -msgid "Prefix Configuration" -msgstr "Konfiguration av prefix" - -msgid "Prefixes" -msgstr "Prefix" - -msgid "RDNSS" -msgstr "RDNSS" - -msgid "RDNSS Configuration" -msgstr "Konfiguration av RDNSS" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - Gränssnitt %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - Prefix" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - Route" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" -"Begränsa kommunikation till specificerade klienter, lämna tom för att " -"använda multicast" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "Konfiguration för rutt" - -msgid "Routes" -msgstr "Rutter" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "Tillägg" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "Endast Unicast" - -msgid "Valid lifetime" -msgstr "Giltig livstid" - -msgid "Validity time" -msgstr "Tid för giltighet" - -msgid "default" -msgstr "standard" - -msgid "high" -msgstr "hög" - -msgid "low" -msgstr "låg" - -msgid "medium" -msgstr "mellan" - -msgid "no" -msgstr "nej" - -msgid "yes" -msgstr "ja" diff --git a/package/luci/applications/luci-app-radvd/po/templates/radvd.pot b/package/luci/applications/luci-app-radvd/po/templates/radvd.pot deleted file mode 100644 index ff9eb547ad..0000000000 --- a/package/luci/applications/luci-app-radvd/po/templates/radvd.pot +++ /dev/null @@ -1,360 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "6to4 interface" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Addresses" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/tr/radvd.po b/package/luci/applications/luci-app-radvd/po/tr/radvd.po deleted file mode 100644 index 8b8ed8f811..0000000000 --- a/package/luci/applications/luci-app-radvd/po/tr/radvd.po +++ /dev/null @@ -1,367 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "6to4 interface" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Addresses" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/uk/radvd.po b/package/luci/applications/luci-app-radvd/po/uk/radvd.po deleted file mode 100644 index 648035db6c..0000000000 --- a/package/luci/applications/luci-app-radvd/po/uk/radvd.po +++ /dev/null @@ -1,381 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-05-26 19:17+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "6to4 interface" -msgstr "Інтерфейс 6to4" - -msgid "Address" -msgstr "Адреса" - -msgid "Addresses" -msgstr "Адреси" - -msgid "Advanced" -msgstr "Додатково" - -msgid "Advertise Home Agent flag" -msgstr "Оголошувати позначку Home Agent" - -msgid "Advertise router address" -msgstr "Оголошувати адресу роутера" - -msgid "Advertised Domain Suffixes" -msgstr "Оголошувані суфікси домену" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" -"Оголошуваний IPv6 RDNSS. Якщо не задано, використовується поточна " -"IPv6-адреса інтерфейсу." - -msgid "Advertised IPv6 prefixes" -msgstr "Оголошувані IPv6-префікси" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" -"Оголошувані IPv6-префікси. Якщо не задано, використовується поточний префікс " -"інтерфейсу" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "Оголошує можливості Home Agent мобільного IPv6 (RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "Оголошує можливості реєстрації мобільного маршрутизатора (NEMO Basic)" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" -"Оголошує передбачуваний час досяжності (у мілісекундах) сусідніх вузлів. " -"Значення 0 відключає оголошення." - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" -"Оголошує типове значення лічильника HOP-ів для вихідних unicast-пакетів. " -"Значення 0 відключає оголошення." - -msgid "Advertises the default router preference" -msgstr "Оголошує типові настройки маршрутизатора" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" -"Оголошує певний максимальний розмір пакета (якщо він вказаний). Значення 0 " -"відключає оголошення." - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "Оголошення" - -msgid "Autonomous" -msgstr "Автономний" - -msgid "Clients" -msgstr "Клієнти" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/vi/radvd.po b/package/luci/applications/luci-app-radvd/po/vi/radvd.po deleted file mode 100644 index 63f8fa0d5c..0000000000 --- a/package/luci/applications/luci-app-radvd/po/vi/radvd.po +++ /dev/null @@ -1,368 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2010-11-21 04:06+0100\n" -"Last-Translator: \n" -"Language-Team: German\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 "6to4 interface" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Addresses" -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Advertise Home Agent flag" -msgstr "" - -msgid "Advertise router address" -msgstr "" - -msgid "Advertised Domain Suffixes" -msgstr "" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "" - -msgid "Advertised IPv6 prefixes" -msgstr "" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "" - -msgid "Advertises the default router preference" -msgstr "" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "" - -msgid "Advertising" -msgstr "" - -msgid "Autonomous" -msgstr "" - -msgid "Clients" -msgstr "" - -msgid "Configuration flag" -msgstr "" - -msgid "Current hop limit" -msgstr "" - -msgid "DNSSL" -msgstr "" - -msgid "DNSSL Configuration" -msgstr "" - -msgid "Default lifetime" -msgstr "" - -msgid "Default preference" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable advertisements" -msgstr "" - -msgid "Enables router advertisements and solicitations" -msgstr "" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Home Agent information" -msgstr "" - -msgid "Home Agent lifetime" -msgstr "" - -msgid "Home Agent preference" -msgstr "" - -msgid "Include Home Agent Information in the RA" -msgstr "" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface required" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Lifetime" -msgstr "" - -msgid "Link MTU" -msgstr "" - -msgid "Managed flag" -msgstr "" - -msgid "Max. interval" -msgstr "" - -msgid "Maximum advertisement interval" -msgstr "" - -msgid "Minimum advertisement delay" -msgstr "" - -msgid "Minimum advertisement interval" -msgstr "" - -msgid "Mobile IPv6" -msgstr "" - -msgid "Mobile IPv6 interval option" -msgstr "" - -msgid "Mobile IPv6 router registration" -msgstr "" - -msgid "Multicast" -msgstr "" - -msgid "On-link" -msgstr "" - -msgid "On-link determination" -msgstr "" - -msgid "Preference" -msgstr "" - -msgid "Preferred lifetime" -msgstr "" - -msgid "Prefix" -msgstr "" - -msgid "Prefix Configuration" -msgstr "" - -msgid "Prefixes" -msgstr "" - -msgid "RDNSS" -msgstr "" - -msgid "RDNSS Configuration" -msgstr "" - -msgid "Radvd" -msgstr "" - -msgid "Radvd - DNSSL" -msgstr "" - -msgid "Radvd - Interface %q" -msgstr "" - -msgid "Radvd - Prefix" -msgstr "" - -msgid "Radvd - RDNSS" -msgstr "" - -msgid "Radvd - Route" -msgstr "" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" - -msgid "Reachable time" -msgstr "" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "" - -msgid "Retransmit timer" -msgstr "" - -msgid "Route Configuration" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "Source link-layer address" -msgstr "" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "" - -msgid "Specifies the preference associated with the default router" -msgstr "" - -msgid "Suffix" -msgstr "" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "" - -msgid "The preference for the Home Agent sending this RA" -msgstr "" - -msgid "Timing" -msgstr "" - -msgid "Unicast only" -msgstr "" - -msgid "Valid lifetime" -msgstr "" - -msgid "Validity time" -msgstr "" - -msgid "default" -msgstr "" - -msgid "high" -msgstr "" - -msgid "low" -msgstr "" - -msgid "medium" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes" -msgstr "" diff --git a/package/luci/applications/luci-app-radvd/po/zh-cn/radvd.po b/package/luci/applications/luci-app-radvd/po/zh-cn/radvd.po deleted file mode 100644 index 9cb3a31b94..0000000000 --- a/package/luci/applications/luci-app-radvd/po/zh-cn/radvd.po +++ /dev/null @@ -1,399 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-10-29 15:24+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \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: Gtranslator 2.91.7\n" - -msgid "6to4 interface" -msgstr "6to4 接口" - -msgid "Address" -msgstr "地址" - -msgid "Addresses" -msgstr "地址" - -msgid "Advanced" -msgstr "进阶选项" - -msgid "Advertise Home Agent flag" -msgstr "宣告本地代理标识" - -msgid "Advertise router address" -msgstr "宣告路由地址" - -msgid "Advertised Domain Suffixes" -msgstr "宣告的域后缀" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "宣告的 IPv6 RDNSS 地址。若为空,则为当前 IPv6 地址" - -msgid "Advertised IPv6 prefixes" -msgstr "宣告的 IPv6 前缀群" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "宣告的 IPv6 前缀群。若为空,将使用当前接口的前缀" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "宣告移动 IPv6 本地代理功能(RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "宣告移动路由器注册功能(NEMO 基本)" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "在 RA 中宣告估算的邻居可达时间(毫秒)。0 禁用可达性宣告" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "在 RA 中宣告外发单播数据包的默认跳数值。0 禁用跳数宣告" - -msgid "Advertises the default router preference" -msgstr "宣告默认路由设置" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "在 RA 中宣告给定的链路 MTU。0 禁用 MTU 宣告" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" -"宣告时间长度(秒),对通过无状态地址自动配置从前缀生成的地址,维持为首选地" -"址。" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "宣告前缀对 on-link 决定有效的时间长度(秒)。" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "宣告默认路由器的生存时间(秒)。0 代表结点没有默认路由" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "宣告路由器提供移动 IPv6 本地代理服务的时间(秒)" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "宣告 RA 中邻居请求消息间的等待时间(毫秒)。0 禁用宣告重传" - -msgid "Advertising" -msgstr "宣告" - -msgid "Autonomous" -msgstr "自治的" - -msgid "Clients" -msgstr "客户端" - -msgid "Configuration flag" -msgstr "设置标识" - -msgid "Current hop limit" -msgstr "当前跳数限制" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "DNSSL 设置" - -msgid "Default lifetime" -msgstr "默认生存时限" - -msgid "Default preference" -msgstr "默认优先级" - -msgid "Enable" -msgstr "启用" - -msgid "Enable advertisements" -msgstr "启用宣告" - -msgid "Enables router advertisements and solicitations" -msgstr "激活路由宣告和请求" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "使能附加的基于状态管理的自动配置协议(RFC2462)" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "启用自动配置,不包括地址信息(RFC2462)" - -msgid "General" -msgstr "概况" - -msgid "Home Agent information" -msgstr "本地代理信息" - -msgid "Home Agent lifetime" -msgstr "本地代理有效期" - -msgid "Home Agent preference" -msgstr "本地代理优先权" - -msgid "Include Home Agent Information in the RA" -msgstr "路由器公告报文中包含本地代理信息" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "路由器公告报文中包含移动 IPv6 宣告间隔设置" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "路由器公告报文中包含出接口的链路层地址" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "表明使用接口的地址发送而非网络前缀,移动 IPv6 需要" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "表明潜在的链路并不具有宣告能力,避免主动触发的宣告报文发出" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "表明此前缀能够用于匿名地址配置(RFC4862)" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "表明此前缀能够用于 on-link 决定(RFC481)" - -msgid "Interface" -msgstr "接口" - -msgid "Interface Configuration" -msgstr "接口设置" - -msgid "Interface required" -msgstr "接口必要项" - -msgid "Interfaces" -msgstr "接口" - -msgid "Lifetime" -msgstr "有效期" - -msgid "Link MTU" -msgstr "连接 MTU" - -msgid "Managed flag" -msgstr "M 标识" - -msgid "Max. interval" -msgstr "最大间隔" - -msgid "Maximum advertisement interval" -msgstr "最大宣告间隔" - -msgid "Minimum advertisement delay" -msgstr "最小宣告延时" - -msgid "Minimum advertisement interval" -msgstr "最小宣告间隔" - -msgid "Mobile IPv6" -msgstr "移动 IPv6" - -msgid "Mobile IPv6 interval option" -msgstr "移动 IPv6 间隔选项" - -msgid "Mobile IPv6 router registration" -msgstr "移动 IPv6 路由注册" - -msgid "Multicast" -msgstr "组播传输" - -msgid "On-link" -msgstr "已连接的" - -msgid "On-link determination" -msgstr "已连接的目标" - -msgid "Preference" -msgstr "首选项" - -msgid "Preferred lifetime" -msgstr "期望的生存时间" - -msgid "Prefix" -msgstr "前缀" - -msgid "Prefix Configuration" -msgstr "前缀设置" - -msgid "Prefixes" -msgstr "前缀群" - -msgid "RDNSS" -msgstr "邻居发现服务器" - -msgid "RDNSS Configuration" -msgstr "邻居发现服务器设置" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - 接口 %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - 前缀" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - 路由" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"Radvd 是一个 IPv6 路由公告软件,按照 RFC4861 监听路由请求和发送路由公告。" - -msgid "Reachable time" -msgstr "可达延时" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "限制特定会话,留空则使用组播" - -msgid "Retransmit timer" -msgstr "中继转发计时器" - -msgid "Route Configuration" -msgstr "路由设置" - -msgid "Routes" -msgstr "路由" - -msgid "Source link-layer address" -msgstr "源链路层地址" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" -"指定从其导出 6to4 前缀的逻辑接口名称。接口的公共 IPv4 地址将与 2002::/3 及前" -"缀选项的值相结合" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "设定路由关联的生存时间(秒)" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "说明这个物理接口连接到哪个网络" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "设定 DNSSL 表项名称解析的最长时间间隔" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "设定 RDNSS 表项名称解析的最长时间间隔" - -msgid "Specifies the preference associated with the default router" -msgstr "设定关联的默认路由的配置" - -msgid "Suffix" -msgstr "后缀" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "允许接口发送组播路由宣告报文的最大时间间隔(秒)" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "允许接口发送组播路由宣告报文的最小时间间隔(秒)" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "允许接口发送主动触发组播路由宣告报文的最小时间间隔(秒)" - -msgid "The preference for the Home Agent sending this RA" -msgstr "发送此 RA 的本地代理的首选项" - -msgid "Timing" -msgstr "计时" - -msgid "Unicast only" -msgstr "单播" - -msgid "Valid lifetime" -msgstr "有效的生存时间" - -msgid "Validity time" -msgstr "有效期" - -msgid "default" -msgstr "默认" - -msgid "high" -msgstr "高" - -msgid "low" -msgstr "低" - -msgid "medium" -msgstr "中" - -msgid "no" -msgstr "否" - -msgid "yes" -msgstr "是" - -#~ msgid "Advertised IPv6 prefix" -#~ msgstr "IPV6广播前缀" - -#~ msgid "" -#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used" -#~ msgstr "IPV6广播前缀。若为空,则当前接口前缀已被使用。" - -#~ msgid "Open" -#~ msgstr "打开" - -#~ msgid "" -#~ "Specifies the maximum duration how long the DNSSL entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "指定DNSSL解析域名的最长时间,0则为无限长" - -#~ msgid "" -#~ "Specifies the maximum duration how long the RDNSS entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "指定RDNSS解析域名的最长时间,0则为无限长" diff --git a/package/luci/applications/luci-app-radvd/po/zh-tw/radvd.po b/package/luci/applications/luci-app-radvd/po/zh-tw/radvd.po deleted file mode 100644 index 6de830979e..0000000000 --- a/package/luci/applications/luci-app-radvd/po/zh-tw/radvd.po +++ /dev/null @@ -1,399 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-10-29 15:24+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" - -msgid "6to4 interface" -msgstr "6to4 介面" - -msgid "Address" -msgstr "位址" - -msgid "Addresses" -msgstr "位址" - -msgid "Advanced" -msgstr "進階選項" - -msgid "Advertise Home Agent flag" -msgstr "宣告本地代理標識" - -msgid "Advertise router address" -msgstr "宣告路由位址" - -msgid "Advertised Domain Suffixes" -msgstr "宣告的域字尾" - -msgid "" -"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface " -"is used" -msgstr "宣告的 IPv6 RDNSS 位址。若為空,則為當前 IPv6 位址" - -msgid "Advertised IPv6 prefixes" -msgstr "宣告的 IPv6 字首群" - -msgid "" -"Advertised IPv6 prefixes. If empty, the current interface prefix is used" -msgstr "宣告的 IPv6 字首群。若為空,將使用當前介面的字首" - -msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)" -msgstr "宣告移動 IPv6 本地代理功能(RFC3775)" - -msgid "Advertises Mobile Router registration capability (NEMO Basic)" -msgstr "宣告移動路由器註冊功能(NEMO 基本)" - -msgid "" -"Advertises assumed reachability time in milliseconds of neighbours in the RA " -"if specified. 0 disables reachability advertisements" -msgstr "在 RA 中宣告估算的鄰居可達時間(毫秒)。0 禁用可達性宣告" - -msgid "" -"Advertises the default Hop Count value for outgoing unicast packets in the " -"RA. 0 disables hopcount advertisements" -msgstr "在 RA 中宣告外發單播資料包的預設跳數值。0 禁用跳數宣告" - -msgid "Advertises the default router preference" -msgstr "宣告預設路由設定" - -msgid "" -"Advertises the given link MTU in the RA if specified. 0 disables MTU " -"advertisements" -msgstr "在 RA 中宣告給定的鏈路 MTU。0 禁用 MTU 宣告" - -msgid "" -"Advertises the length of time in seconds that addresses generated from the " -"prefix via stateless address autoconfiguration remain preferred." -msgstr "" -"宣告時間長度(秒),對通過無狀態位址自動配置從字首生成的位址,維持為首選地" -"址。" - -msgid "" -"Advertises the length of time in seconds that the prefix is valid for the " -"purpose of on-link determination." -msgstr "宣告字首對 on-link 決定有效的時間長度(秒)。" - -msgid "" -"Advertises the lifetime of the default router in seconds. 0 indicates that " -"the node is no default router" -msgstr "宣告預設路由器的生存時間(秒)。0 代表結點沒有預設路由" - -msgid "" -"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent " -"services" -msgstr "宣告路由器提供移動 IPv6 本地代理服務的時間(秒)" - -msgid "" -"Advertises wait time in milliseconds between Neighbor Solicitation messages " -"in the RA if specified. 0 disables retransmit advertisements" -msgstr "宣告 RA 中鄰居請求訊息間的等待時間(毫秒)。0 禁用宣告重傳" - -msgid "Advertising" -msgstr "宣告" - -msgid "Autonomous" -msgstr "自治的" - -msgid "Clients" -msgstr "客戶端" - -msgid "Configuration flag" -msgstr "設定標識" - -msgid "Current hop limit" -msgstr "當前跳數限制" - -msgid "DNSSL" -msgstr "DNSSL" - -msgid "DNSSL Configuration" -msgstr "DNSSL 設定" - -msgid "Default lifetime" -msgstr "預設生存時限" - -msgid "Default preference" -msgstr "預設優先順序" - -msgid "Enable" -msgstr "啟用" - -msgid "Enable advertisements" -msgstr "啟用宣告" - -msgid "Enables router advertisements and solicitations" -msgstr "啟用路由宣告和請求" - -msgid "" -"Enables the additional stateful administered autoconfiguration protocol " -"(RFC2462)" -msgstr "使能附加的基於狀態管理的自動配置協議(RFC2462)" - -msgid "" -"Enables the autoconfiguration of additional, non address information " -"(RFC2462)" -msgstr "啟用自動配置,不包括位址資訊(RFC2462)" - -msgid "General" -msgstr "概況" - -msgid "Home Agent information" -msgstr "本地代理資訊" - -msgid "Home Agent lifetime" -msgstr "本地代理有效期" - -msgid "Home Agent preference" -msgstr "本地代理優先權" - -msgid "Include Home Agent Information in the RA" -msgstr "路由器公告報文中包含本地代理資訊" - -msgid "Include Mobile IPv6 Advertisement Interval option to RA" -msgstr "路由器公告報文中包含移動 IPv6 宣告間隔設定" - -msgid "Includes the link-layer address of the outgoing interface in the RA" -msgstr "路由器公告報文中包含出介面的鏈路層位址" - -msgid "" -"Indicates that the address of interface is sent instead of network prefix, " -"as is required by Mobile IPv6" -msgstr "表明使用介面的位址傳送而非網路字首,移動 IPv6 需要" - -msgid "" -"Indicates that the underlying link is not broadcast capable, prevents " -"unsolicited advertisements from being sent" -msgstr "表明潛在的鏈路並不具有宣告能力,避免主動觸發的宣告報文發出" - -msgid "" -"Indicates that this prefix can be used for autonomous address configuration " -"(RFC4862)" -msgstr "表明此字首能夠用於匿名位址配置(RFC4862)" - -msgid "" -"Indicates that this prefix can be used for on-link determination (RFC4861)" -msgstr "表明此字首能夠用於 on-link 決定(RFC481)" - -msgid "Interface" -msgstr "介面" - -msgid "Interface Configuration" -msgstr "介面設定" - -msgid "Interface required" -msgstr "介面必要項" - -msgid "Interfaces" -msgstr "介面" - -msgid "Lifetime" -msgstr "有效期" - -msgid "Link MTU" -msgstr "連線 MTU" - -msgid "Managed flag" -msgstr "M 標識" - -msgid "Max. interval" -msgstr "最大間隔" - -msgid "Maximum advertisement interval" -msgstr "最大宣告間隔" - -msgid "Minimum advertisement delay" -msgstr "最小宣告延時" - -msgid "Minimum advertisement interval" -msgstr "最小宣告間隔" - -msgid "Mobile IPv6" -msgstr "移動 IPv6" - -msgid "Mobile IPv6 interval option" -msgstr "移動 IPv6 間隔選項" - -msgid "Mobile IPv6 router registration" -msgstr "移動 IPv6 路由註冊" - -msgid "Multicast" -msgstr "組播傳輸" - -msgid "On-link" -msgstr "已連線的" - -msgid "On-link determination" -msgstr "已連線的目標" - -msgid "Preference" -msgstr "首選項" - -msgid "Preferred lifetime" -msgstr "期望的生存時間" - -msgid "Prefix" -msgstr "字首" - -msgid "Prefix Configuration" -msgstr "字首設定" - -msgid "Prefixes" -msgstr "字首群" - -msgid "RDNSS" -msgstr "鄰居發現伺服器" - -msgid "RDNSS Configuration" -msgstr "鄰居發現伺服器設定" - -msgid "Radvd" -msgstr "Radvd" - -msgid "Radvd - DNSSL" -msgstr "Radvd - DNSSL" - -msgid "Radvd - Interface %q" -msgstr "Radvd - 介面 %q" - -msgid "Radvd - Prefix" -msgstr "Radvd - 字首" - -msgid "Radvd - RDNSS" -msgstr "Radvd - RDNSS" - -msgid "Radvd - Route" -msgstr "Radvd - 路由" - -msgid "" -"Radvd is a router advertisement daemon for IPv6. It listens to router " -"solicitations and sends router advertisements as described in RFC 4861." -msgstr "" -"Radvd 是一個 IPv6 路由公告軟體,按照 RFC4861 監聽路由請求和傳送路由公告。" - -msgid "Reachable time" -msgstr "可達延時" - -msgid "" -"Restrict communication to specified clients, leave empty to use multicast" -msgstr "限制特定會話,留空則使用組播" - -msgid "Retransmit timer" -msgstr "中繼轉發計時器" - -msgid "Route Configuration" -msgstr "路由設定" - -msgid "Routes" -msgstr "路由" - -msgid "Source link-layer address" -msgstr "源鏈路層位址" - -msgid "" -"Specifies a logical interface name to derive a 6to4 prefix from. The " -"interfaces public IPv4 address is combined with 2002::/3 and the value of " -"the prefix option" -msgstr "" -"指定從其匯出 6to4 字首的邏輯介面名稱。介面的公共 IPv4 位址將與 2002::/3 及前" -"綴選項的值相結合" - -msgid "Specifies the lifetime associated with the route in seconds." -msgstr "設定路由關聯的生存時間(秒)" - -msgid "Specifies the logical interface name this section belongs to" -msgstr "說明這個物理介面連線到哪個網路" - -msgid "" -"Specifies the maximum duration how long the DNSSL entries are used for name " -"resolution." -msgstr "設定 DNSSL 表項名稱解析的最長時間間隔" - -msgid "" -"Specifies the maximum duration how long the RDNSS entries are used for name " -"resolution." -msgstr "設定 RDNSS 表項名稱解析的最長時間間隔" - -msgid "Specifies the preference associated with the default router" -msgstr "設定關聯的預設路由的配置" - -msgid "Suffix" -msgstr "字尾" - -msgid "" -"The maximum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "允許介面傳送組播路由宣告報文的最大時間間隔(秒)" - -msgid "" -"The minimum time allowed between sending multicast router advertisements " -"from the interface, in seconds" -msgstr "允許介面傳送組播路由宣告報文的最小時間間隔(秒)" - -msgid "" -"The minimum time allowed between sending unsolicited multicast router " -"advertisements from the interface, in seconds" -msgstr "允許介面傳送主動觸發組播路由宣告報文的最小時間間隔(秒)" - -msgid "The preference for the Home Agent sending this RA" -msgstr "傳送此 RA 的本地代理的首選項" - -msgid "Timing" -msgstr "計時" - -msgid "Unicast only" -msgstr "單播" - -msgid "Valid lifetime" -msgstr "有效的生存時間" - -msgid "Validity time" -msgstr "有效期" - -msgid "default" -msgstr "預設" - -msgid "high" -msgstr "高" - -msgid "low" -msgstr "低" - -msgid "medium" -msgstr "中" - -msgid "no" -msgstr "否" - -msgid "yes" -msgstr "是" - -#~ msgid "Advertised IPv6 prefix" -#~ msgstr "IPV6廣播字首" - -#~ msgid "" -#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used" -#~ msgstr "IPV6廣播字首。若為空,則當前介面字首已被使用。" - -#~ msgid "Open" -#~ msgstr "開啟" - -#~ msgid "" -#~ "Specifies the maximum duration how long the DNSSL entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "指定DNSSL解析域名的最長時間,0則為無限長" - -#~ msgid "" -#~ "Specifies the maximum duration how long the RDNSS entries are used for " -#~ "name resolution. Use 0 to specify an infinite lifetime" -#~ msgstr "指定RDNSS解析域名的最長時間,0則為無限長" diff --git a/package/luci/applications/luci-app-radvd/root/etc/uci-defaults/40_luci-radvd b/package/luci/applications/luci-app-radvd/root/etc/uci-defaults/40_luci-radvd deleted file mode 100755 index c1f3b7546d..0000000000 --- a/package/luci/applications/luci-app-radvd/root/etc/uci-defaults/40_luci-radvd +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@radvd[-1] - add ucitrack radvd - set ucitrack.@radvd[-1].init=radvd - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-rp-pppoe-server/Makefile b/package/luci/applications/luci-app-rp-pppoe-server/Makefile deleted file mode 100644 index 6cf4595cea..0000000000 --- a/package/luci/applications/luci-app-rp-pppoe-server/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# -# Copyright (C) 2015 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Roaring Penguing PPPoE Server -LUCI_DEPENDS:=+rp-pppoe-server - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua b/package/luci/applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua deleted file mode 100644 index 105a80e28d..0000000000 --- a/package/luci/applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua +++ /dev/null @@ -1,13 +0,0 @@ --- Copyright 2015 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.rp-pppoe-server", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/pppoe") then - return - end - - entry({"admin", "services", "rp-pppoe-server"}, cbi("rp-pppoe-server"), _("RP PPPoE Server")) -end - diff --git a/package/luci/applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua b/package/luci/applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua deleted file mode 100644 index ef15ed6127..0000000000 --- a/package/luci/applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua +++ /dev/null @@ -1,72 +0,0 @@ --- Copyright 2015 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -local m, s, o - -local nixio = require "nixio" - -m = Map("pppoe", translate("Roaring Penguin PPPoE Server"), - translate("PPPoE Server Configuration")) - -s = m:section(TypedSection, "pppoe_server", translate("Server Configuration")) -s.addremove = false -s.anonymous = true - -o = s:option(Value, "interface", translate("Interface"), translate("Interface on which to listen.")) -o.template = "cbi/network_ifacelist" -o.nocreate = true - -o = s:option(Value, "ac_name", translate("Access Concentrator Name")) -o.optional = true - -o = s:option(DynamicList, "service_name", translate("Service Name")) -o.optional = true - -o = s:option(Value, "maxsessionsperpeer", translate("Maximum sessions per peer")) -o.optional = true -o.datatype = "uinteger" - -o = s:option(Value, "localip", translate("IP of listening side")) -o.datetype = "ipaddr" - -o = s:option(Value, "firstremoteip", translate("First remote IP")) -o.datatype = "ipaddr" - -o = s:option(Value, "maxsessions", translate("Maximum sessions")) -o.datatype = "uinteger" -o.default = 64 -o.optional = true - -o = s:option(Value, "optionsfile", translate("Options file")) -o.default = "/etc/ppp/pppoe-server-options" -o.optional = true - -o = s:option(Flag, "randomsessions", translate("Random session selection"), translate("Instead of starting at beginning and going to end, randomize session number")) -o.optional = true - -o = s:option(Value, "unit", translate("Unit"), translate("PPP unit number")) -o.optional = true -o.datatype = "uinteger" -o.default = 0 - -o = s:option(Value, "offset", translate("Offset"), translate("PPP offset")) -o.optional = true -o.datatype = "uinteger" -o.default = 0 - -o = s:option(Value, "timeout", translate("Timeout")) -o.optional = true -o.datatype = "uinteger" -o.default = 60 - -o = s:option(Value, "mss", translate("MSS")) -o.optional = true -o.datatype = "uinteger" -o.default = 1468 - - -o = s:option(Flag, "sync", translate("Sync")) -o.optional = true -o.default = false - -return m diff --git a/package/luci/applications/luci-app-samba/Makefile b/package/luci/applications/luci-app-samba/Makefile deleted file mode 100644 index ba599b30c3..0000000000 --- a/package/luci/applications/luci-app-samba/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Network Shares - Samba SMB/CIFS module -LUCI_DEPENDS:=+samba36-server - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-samba/luasrc/controller/samba.lua b/package/luci/applications/luci-app-samba/luasrc/controller/samba.lua deleted file mode 100644 index 397af6a823..0000000000 --- a/package/luci/applications/luci-app-samba/luasrc/controller/samba.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.samba", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/samba") then - return - end - - local page - - page = entry({"admin", "services", "samba"}, cbi("samba"), _("Network Shares")) - page.dependent = true -end diff --git a/package/luci/applications/luci-app-samba/luasrc/model/cbi/samba.lua b/package/luci/applications/luci-app-samba/luasrc/model/cbi/samba.lua deleted file mode 100644 index 2e533c3f57..0000000000 --- a/package/luci/applications/luci-app-samba/luasrc/model/cbi/samba.lua +++ /dev/null @@ -1,80 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("samba", translate("Network Shares")) - -s = m:section(TypedSection, "samba", "Samba") -s.anonymous = true - -s:tab("general", translate("General Settings")) -s:tab("template", translate("Edit Template")) - -s:taboption("general", Value, "name", translate("Hostname")) -s:taboption("general", Value, "description", translate("Description")) -s:taboption("general", Value, "workgroup", translate("Workgroup")) -h = s:taboption("general", Flag, "homes", translate("Share home-directories"), - translate("Allow system users to reach their home directories via " .. - "network shares")) -h.rmempty = false - -tmpl = s:taboption("template", Value, "_tmpl", - translate("Edit the template that is used for generating the samba configuration."), - translate("This is the content of the file '/etc/samba/smb.conf.template' from which your samba configuration will be generated. " .. - "Values enclosed by pipe symbols ('|') should not be changed. They get their values from the 'General Settings' tab.")) - -tmpl.template = "cbi/tvalue" -tmpl.rows = 20 - -function tmpl.cfgvalue(self, section) - return nixio.fs.readfile("/etc/samba/smb.conf.template") -end - -function tmpl.write(self, section, value) - value = value:gsub("\r\n?", "\n") - nixio.fs.writefile("//etc/samba/smb.conf.template", value) -end - - -s = m:section(TypedSection, "sambashare", translate("Shared Directories") - , translate("Please add directories to share. Each directory refers to a folder on a mounted device.")) -s.anonymous = true -s.addremove = true -s.template = "cbi/tblsection" - -s:option(Value, "name", translate("Name")) -pth = s:option(Value, "path", translate("Path")) -if nixio.fs.access("/etc/config/fstab") then - pth.titleref = luci.dispatcher.build_url("admin", "system", "fstab") -end - -s:option(Value, "users", translate("Allowed users")).rmempty = true - -ro = s:option(Flag, "read_only", translate("Read-only")) -ro.rmempty = false -ro.enabled = "yes" -ro.disabled = "no" - -br = s:option(Flag, "browseable", translate("Browseable")) -br.rmempty = false -br.default = "yes" -br.enabled = "yes" -br.disabled = "no" - -go = s:option(Flag, "guest_ok", translate("Allow guests")) -go.rmempty = false -go.enabled = "yes" -go.disabled = "no" - -cm = s:option(Value, "create_mask", translate("Create mask"), - translate("Mask for new files")) -cm.rmempty = true -cm.size = 4 - -dm = s:option(Value, "dir_mask", translate("Directory mask"), - translate("Mask for new directories")) -dm.rmempty = true -dm.size = 4 - - -return m diff --git a/package/luci/applications/luci-app-samba/po/ca/samba.po b/package/luci/applications/luci-app-samba/po/ca/samba.po deleted file mode 100644 index eb6be15cd0..0000000000 --- a/package/luci/applications/luci-app-samba/po/ca/samba.po +++ /dev/null @@ -1,103 +0,0 @@ -# samba.pot -# generated from ./applications/luci-samba/luasrc/i18n/samba.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-07-01 05:47+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Allow guests" -msgstr "Permet convidats" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Permet que els usuaris del sistema pugin arribar als seus directoris d'inici " -"via comparticions de xarxa" - -msgid "Allowed users" -msgstr "Usuaris permesos" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Crea màscara" - -msgid "Description" -msgstr "Descripció" - -msgid "Directory mask" -msgstr "Màscara de directori" - -msgid "Edit Template" -msgstr "Edita plantilla" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Edita la plantilla que s'usa per generar la configuració de samba." - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "Hostname" -msgstr "Nom de màquina" - -msgid "Mask for new directories" -msgstr "Màscara per directoris nous" - -msgid "Mask for new files" -msgstr "Màscara per fitxers nous" - -msgid "Name" -msgstr "Nom" - -msgid "Network Shares" -msgstr "Comparticions de xarxa" - -msgid "Path" -msgstr "Ruta" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Només lectura" - -msgid "Share home-directories" -msgstr "Comparteix directoris d'inici" - -msgid "Shared Directories" -msgstr "Directoris compartits" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Això és el contingut del fitxer '/etc/samba/smb.conf.template' del qual la " -"vostra configuració de samba es generarà. Valors encerclats per símbols de " -"barra ('|') no es deuen canviar. Reben els seus valors de la pestanya " -"'Ajusts generals'." - -msgid "Workgroup" -msgstr "Grup de treball" - -#~ msgid "Shared Directory" -#~ msgstr "Directori compartit" - -#~ msgid "Physical Path" -#~ msgstr "Ruta física" - -#~ msgid "optional" -#~ msgstr "opcional" diff --git a/package/luci/applications/luci-app-samba/po/cs/samba.po b/package/luci/applications/luci-app-samba/po/cs/samba.po deleted file mode 100644 index d66d87674d..0000000000 --- a/package/luci/applications/luci-app-samba/po/cs/samba.po +++ /dev/null @@ -1,91 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-31 13:56+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Allow guests" -msgstr "Povolení hosté" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Povoluje systémovým uživatelům přístup do jejich domácích adresářů skrze " -"sdílení přes síť." - -msgid "Allowed users" -msgstr "Povolení uživatelé" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Vytvořit masku" - -msgid "Description" -msgstr "Popis" - -msgid "Directory mask" -msgstr "Maska adresáře" - -msgid "Edit Template" -msgstr "Editovat šablonu" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" -"Editovat šablonu, která je použita pro generování konfiguračního souboru pro " -"sambu." - -msgid "General Settings" -msgstr "Obecné nastavení" - -msgid "Hostname" -msgstr "Název počítače." - -msgid "Mask for new directories" -msgstr "Maska pro nové adresáře" - -msgid "Mask for new files" -msgstr "Maska pro nové soubory" - -msgid "Name" -msgstr "Jméno" - -msgid "Network Shares" -msgstr "Síťová sdílení" - -msgid "Path" -msgstr "Cesta" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Pouze pro čtení" - -msgid "Share home-directories" -msgstr "Sdílet domácí adresáře" - -msgid "Shared Directories" -msgstr "Sdílené adresáře" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Toto je obsah souboru \"/etc/samba/smb.conf.template\", ze kterého je " -"konfigurace samby generována. Hodnoty uzavřené rourou (\"|\"), by se neměly " -"měnit. Tyto hodnoty jsou brány ze záložky \"Obecná nastavení\"." - -msgid "Workgroup" -msgstr "Skupina" diff --git a/package/luci/applications/luci-app-samba/po/de/samba.po b/package/luci/applications/luci-app-samba/po/de/samba.po deleted file mode 100644 index 4e8da53b5a..0000000000 --- a/package/luci/applications/luci-app-samba/po/de/samba.po +++ /dev/null @@ -1,95 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2011-10-18 13:13+0200\n" -"Last-Translator: Manuel \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Allow guests" -msgstr "Gastzugang" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Systembenutzer dürfen ihre Heimatverzeichnis über Netzwerkfreigaben " -"erreichen." - -msgid "Allowed users" -msgstr "Legitimierte Benutzer" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Berechtigungsmaske für neue Dateien" - -msgid "Description" -msgstr "Beschreibung" - -msgid "Directory mask" -msgstr "Verzeichnismaske" - -msgid "Edit Template" -msgstr "Template bearbeiten" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" -"Hier kann das Template bearbeitet werden, das zur Erstellung der Samba-" -"Konfigurationsdateien verwendet wird." - -msgid "General Settings" -msgstr "Allgemeine Einstellungen" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Mask for new directories" -msgstr "Maske für neue Verzeichnisse" - -msgid "Mask for new files" -msgstr "Maske für neue Dateien" - -msgid "Name" -msgstr "Name" - -msgid "Network Shares" -msgstr "Netzwerkfreigaben" - -msgid "Path" -msgstr "Pfad" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Nur Lesen" - -msgid "Share home-directories" -msgstr "Heimatverzeichnisse freigeben" - -msgid "Shared Directories" -msgstr "Freigegebene Verzeichnisse" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Dieses Fenster zeigt den Inhalt der Datei '/etc/samba/smb.conf.template', " -"die als Template zum Erstellen der Samba-Konfiguration verwendet wird. Werte " -"die von Pipe Symbolen (|) eingeschlossen sind sollten nicht verändert " -"werden, da diese beim Erstellen der Konfiguration mit den Werten aus dem Tab " -"'Allgemeine Einstellungen' ersetzt werden." - -msgid "Workgroup" -msgstr "Arbeitsgruppe" diff --git a/package/luci/applications/luci-app-samba/po/el/samba.po b/package/luci/applications/luci-app-samba/po/el/samba.po deleted file mode 100644 index 878416a638..0000000000 --- a/package/luci/applications/luci-app-samba/po/el/samba.po +++ /dev/null @@ -1,86 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: 2012-03-18 15:31+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Allow guests" -msgstr "" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" - -msgid "Allowed users" -msgstr "" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Directory mask" -msgstr "" - -msgid "Edit Template" -msgstr "" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Mask for new directories" -msgstr "" - -msgid "Mask for new files" -msgstr "" - -msgid "Name" -msgstr "Όνομα" - -msgid "Network Shares" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "" - -msgid "Share home-directories" -msgstr "" - -msgid "Shared Directories" -msgstr "" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" - -msgid "Workgroup" -msgstr "" diff --git a/package/luci/applications/luci-app-samba/po/en/samba.po b/package/luci/applications/luci-app-samba/po/en/samba.po deleted file mode 100644 index 642580e9de..0000000000 --- a/package/luci/applications/luci-app-samba/po/en/samba.po +++ /dev/null @@ -1,90 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-22 15:23+0100\n" -"PO-Revision-Date: 2011-10-25 21:26+0200\n" -"Last-Translator: awm1 \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Allow guests" -msgstr "Allow guests" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "Allow system users to reach their home directories via network shares" - -msgid "Allowed users" -msgstr "Allowed users" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Create mask" - -msgid "Description" -msgstr "Description" - -msgid "Directory mask" -msgstr "Directory mask" - -msgid "Edit Template" -msgstr "Edit template" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Edit the template that is used for generating the Samba configuration." - -msgid "General Settings" -msgstr "General settings" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Mask for new directories" -msgstr "Mask for new directories" - -msgid "Mask for new files" -msgstr "Mask for new files" - -msgid "Name" -msgstr "Name" - -msgid "Network Shares" -msgstr "Network Shares" - -msgid "Path" -msgstr "Path" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Read-only" - -msgid "Share home-directories" -msgstr "Share home-directories" - -msgid "Shared Directories" -msgstr "Shared Directories" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your Samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"settings' tab." - -msgid "Workgroup" -msgstr "Workgroup" diff --git a/package/luci/applications/luci-app-samba/po/es/samba.po b/package/luci/applications/luci-app-samba/po/es/samba.po deleted file mode 100644 index 57c4b862d6..0000000000 --- a/package/luci/applications/luci-app-samba/po/es/samba.po +++ /dev/null @@ -1,100 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-08-22 17:45+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Allow guests" -msgstr "Permitir invitados" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Permitir a los usuarios acceder a sus directorios de inicio vía " -"comparticiones de red" - -msgid "Allowed users" -msgstr "Usuarios permitidos" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Crear máscara" - -msgid "Description" -msgstr "Descripción" - -msgid "Directory mask" -msgstr "Máscara de directorio" - -msgid "Edit Template" -msgstr "Editar plantilla" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Editar la plantilla usada para generar la configuración de samba." - -msgid "General Settings" -msgstr "Configuración general" - -msgid "Hostname" -msgstr "Nombre de máquina" - -msgid "Mask for new directories" -msgstr "Máscara para directorios nuevos" - -msgid "Mask for new files" -msgstr "Máscara para archivos nuevos" - -msgid "Name" -msgstr "Nombre" - -msgid "Network Shares" -msgstr "Comparticiones de red" - -msgid "Path" -msgstr "Dirección" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Solo lectura" - -msgid "Share home-directories" -msgstr "Compartir directorios personales" - -msgid "Shared Directories" -msgstr "Directorios compartidos" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Contenido del fichero '/etc/samba/smb.conf.template' desde el que se " -"generará la configuración de samba. Los valores entre tuberías ('|') no " -"deben cambiarse. Su valor se toma desde la pestaña 'Configuración General'." - -msgid "Workgroup" -msgstr "Grupo de trabajo" - -#~ msgid "Shared Directory" -#~ msgstr "Directorio compatido" - -#~ msgid "Physical Path" -#~ msgstr "Ruta Física" - -#~ msgid "optional" -#~ msgstr "opcional" diff --git a/package/luci/applications/luci-app-samba/po/fr/samba.po b/package/luci/applications/luci-app-samba/po/fr/samba.po deleted file mode 100644 index 63960fca17..0000000000 --- a/package/luci/applications/luci-app-samba/po/fr/samba.po +++ /dev/null @@ -1,92 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2011-11-23 22:36+0200\n" -"Last-Translator: fredb \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Allow guests" -msgstr "Invités autorisés" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Autoriser les utilisateurs système à atteindre leurs dossiers personnels via " -"les partages réseau" - -msgid "Allowed users" -msgstr "Utilisateurs autorisés" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Maque de création" - -msgid "Description" -msgstr "Description" - -msgid "Directory mask" -msgstr "Masque des dossiers" - -msgid "Edit Template" -msgstr "Éditer le modèle" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Éditer le modèle utilisé pour générer la configuration Samba." - -msgid "General Settings" -msgstr "Paramètres généraux" - -msgid "Hostname" -msgstr "Nom d'hôte" - -msgid "Mask for new directories" -msgstr "Masque pour les nouveaux dossiers" - -msgid "Mask for new files" -msgstr "Masque pour les nouveaux fichiers" - -msgid "Name" -msgstr "Nom" - -msgid "Network Shares" -msgstr "Partages réseau" - -msgid "Path" -msgstr "Chemin" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Lecture seule" - -msgid "Share home-directories" -msgstr "Partager les dossiers personnels" - -msgid "Shared Directories" -msgstr "Dossiers partagés" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Voici le contenu du fichier '/etc/samba/smb.conf.template' d'où sera généré " -"votre configuration Samba. Les valeurs entre les symboles barre-verticale " -" (« | ») ne doivent pas être modifiées, elles proviennent de l'onglet " -"« Paramètres généraux »." - -msgid "Workgroup" -msgstr "Groupe de travail" diff --git a/package/luci/applications/luci-app-samba/po/he/samba.po b/package/luci/applications/luci-app-samba/po/he/samba.po deleted file mode 100644 index 010d2b2480..0000000000 --- a/package/luci/applications/luci-app-samba/po/he/samba.po +++ /dev/null @@ -1,81 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Allow guests" -msgstr "" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" - -msgid "Allowed users" -msgstr "" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Directory mask" -msgstr "" - -msgid "Edit Template" -msgstr "" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Mask for new directories" -msgstr "" - -msgid "Mask for new files" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Shares" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "" - -msgid "Share home-directories" -msgstr "" - -msgid "Shared Directories" -msgstr "" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" - -msgid "Workgroup" -msgstr "" diff --git a/package/luci/applications/luci-app-samba/po/hu/samba.po b/package/luci/applications/luci-app-samba/po/hu/samba.po deleted file mode 100644 index 0263edb6c1..0000000000 --- a/package/luci/applications/luci-app-samba/po/hu/samba.po +++ /dev/null @@ -1,92 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-06 10:56+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Allow guests" -msgstr "Vendég hozzáférés" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"A rendszerfelhasználók hálózati megosztáson keresztül hozzáférhetnek a home " -"könyvtárukhoz." - -msgid "Allowed users" -msgstr "Engedélyezett felhasználók" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Létrehozási maszk" - -msgid "Description" -msgstr "Leírás" - -msgid "Directory mask" -msgstr "Könyvtár maszk" - -msgid "Edit Template" -msgstr "Sablon szerkesztése" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" -"Itt szerkesztheti a sablont, ami a végleges samba konfiguráció " -"elkészítéséhez kerül felhasználásra." - -msgid "General Settings" -msgstr "Általános beállítások" - -msgid "Hostname" -msgstr "Gépnév" - -msgid "Mask for new directories" -msgstr "Új könyvtárak maszkja" - -msgid "Mask for new files" -msgstr "Új fájlok maszkja" - -msgid "Name" -msgstr "Név" - -msgid "Network Shares" -msgstr "Hálózati megosztások" - -msgid "Path" -msgstr "Elérési út" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Csak olvasható" - -msgid "Share home-directories" -msgstr "Home könyvtárak megosztása" - -msgid "Shared Directories" -msgstr "Megosztott könyvtárak" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Itt látható a /etc/samba/smb.conf.template file tartalma, ami a samba " -"konfiguráció előállításához kerül felhasználásra. A pipe szimbólumok ('|') " -"közé zárt értékek módosítása nem szükséges, az értéküket az általános " -"beállítások fülről kapják." - -msgid "Workgroup" -msgstr "Munkacsoport" diff --git a/package/luci/applications/luci-app-samba/po/it/samba.po b/package/luci/applications/luci-app-samba/po/it/samba.po deleted file mode 100644 index 8725902031..0000000000 --- a/package/luci/applications/luci-app-samba/po/it/samba.po +++ /dev/null @@ -1,95 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2017-09-06 01:28+0200\n" -"Last-Translator: bubu83 \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Allow guests" -msgstr "Permetti ospiti" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Autorizza gli utenti del sistema a raggiungere la loro cartella home " -"attraverso le condivisioni di rete" - -msgid "Allowed users" -msgstr "Utenti ammessi" - -msgid "Browseable" -msgstr "Sfogliabile" - -msgid "Create mask" -msgstr "Crea maschera" - -msgid "Description" -msgstr "Descrizione" - -msgid "Directory mask" -msgstr "Maschera della cartella" - -msgid "Edit Template" -msgstr "Modifica Template" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" -"Modifica il template utilizzato per generare la configurazione di samba." - -msgid "General Settings" -msgstr "Opzioni Generali" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Mask for new directories" -msgstr "Maschera per le nuove cartelle" - -msgid "Mask for new files" -msgstr "Maschera per i nuovi files" - -msgid "Name" -msgstr "Nome" - -msgid "Network Shares" -msgstr "Condivisioni di rete" - -msgid "Path" -msgstr "Percorso" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" -"Per favore aggiungi le directory da condividere. Ogni directory si riferisce a una " -"cartella su un dispositivo montato." - -msgid "Read-only" -msgstr "Solo lettura" - -msgid "Share home-directories" -msgstr "Condividi cartelle home" - -msgid "Shared Directories" -msgstr "Cartelle Condivise" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Questo è il contenuto del file '/etc/samba/smb.conf.template' dal quale sarà " -"generata la tua configurazione di samba. I valori racchiusi tra il simbolo " -"('|') non dovrebbero essere toccati. Essi vengono generati dalla schermata " -"'Opzioni Generali'." - -msgid "Workgroup" -msgstr "Gruppo di lavoro" diff --git a/package/luci/applications/luci-app-samba/po/ja/samba.po b/package/luci/applications/luci-app-samba/po/ja/samba.po deleted file mode 100644 index eca10efcc0..0000000000 --- a/package/luci/applications/luci-app-samba/po/ja/samba.po +++ /dev/null @@ -1,91 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2017-08-16 00:41+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 2.0.3\n" -"Language-Team: \n" - -msgid "Allow guests" -msgstr "ゲストアクセスを許可" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "sambaを介してユーザーのホームディレクトリへのアクセスを許可します" - -msgid "Allowed users" -msgstr "許可されたユーザー" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "マスクの作成" - -msgid "Description" -msgstr "説明" - -msgid "Directory mask" -msgstr "ディレクトリのマスク" - -msgid "Edit Template" -msgstr "テンプレートの編集" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "samba設定を生成するテンプレートを編集します。" - -msgid "General Settings" -msgstr "一般設定" - -msgid "Hostname" -msgstr "ホスト名" - -msgid "Mask for new directories" -msgstr "新規ディレクトリのマスク" - -msgid "Mask for new files" -msgstr "新規ファイルのマスク" - -msgid "Name" -msgstr "名前" - -msgid "Network Shares" -msgstr "ネットワーク共有" - -msgid "Path" -msgstr "パス" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" -"共有するディレクトリを追加してください。マウントされたデバイス等のディレクト" -"リを設定し、公開することができます。" - -msgid "Read-only" -msgstr "読み込みのみ" - -msgid "Share home-directories" -msgstr "ホームディレクトリの共有" - -msgid "Shared Directories" -msgstr "共有ディレクトリ" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"これは、samba設定を生成するための'/etc/samba/smb.conf.template' ファイルの内" -"容です。パイプ('|')で閉じられた値は変更しないでください。これらの値は'一般設" -"定'タブ内の値によって置き換えられます。" - -msgid "Workgroup" -msgstr "ワークグループ" diff --git a/package/luci/applications/luci-app-samba/po/ms/samba.po b/package/luci/applications/luci-app-samba/po/ms/samba.po deleted file mode 100644 index d5f1ce15e7..0000000000 --- a/package/luci/applications/luci-app-samba/po/ms/samba.po +++ /dev/null @@ -1,80 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Allow guests" -msgstr "" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" - -msgid "Allowed users" -msgstr "" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Directory mask" -msgstr "" - -msgid "Edit Template" -msgstr "" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Mask for new directories" -msgstr "" - -msgid "Mask for new files" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Shares" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "" - -msgid "Share home-directories" -msgstr "" - -msgid "Shared Directories" -msgstr "" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" - -msgid "Workgroup" -msgstr "" diff --git a/package/luci/applications/luci-app-samba/po/no/samba.po b/package/luci/applications/luci-app-samba/po/no/samba.po deleted file mode 100644 index 349f6b9def..0000000000 --- a/package/luci/applications/luci-app-samba/po/no/samba.po +++ /dev/null @@ -1,80 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Allow guests" -msgstr "Tillat gjester" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "Tillat systembrukere å nå sine hjemmekataloger via nettverks mapper." - -msgid "Allowed users" -msgstr "Tillatte brukere" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Opprett Maske" - -msgid "Description" -msgstr "Beskrivelse" - -msgid "Directory mask" -msgstr "Katalog maske" - -msgid "Edit Template" -msgstr "Rediger Mal" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Rediger malen som brukes til å generere samba konfigurasjonen." - -msgid "General Settings" -msgstr "Generelle Innstillinger" - -msgid "Hostname" -msgstr "Vertsnavn" - -msgid "Mask for new directories" -msgstr "Maske for nye kataloger" - -msgid "Mask for new files" -msgstr "Maske for nye filer" - -msgid "Name" -msgstr "Navn" - -msgid "Network Shares" -msgstr "Nettverks Mapper" - -msgid "Path" -msgstr "Fysisk bane" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Skrivebeskyttet" - -msgid "Share home-directories" -msgstr "Del Hjemmekataloger" - -msgid "Shared Directories" -msgstr "Delte Kataloger" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Dette er innholdet av filen '/etc/samba/smb.conf.template' som din samba " -"konfigurasjon vil bli generert fra. Verdier omsluttet av ('|') bør ikke " -"endres. De får sine verdier fra 'Generelle Innstillinger' fanen." - -msgid "Workgroup" -msgstr "Arbeidsgruppe" diff --git a/package/luci/applications/luci-app-samba/po/pl/samba.po b/package/luci/applications/luci-app-samba/po/pl/samba.po deleted file mode 100644 index d997268cda..0000000000 --- a/package/luci/applications/luci-app-samba/po/pl/samba.po +++ /dev/null @@ -1,91 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-08-26 09:51+0200\n" -"Last-Translator: Staszek \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Allow guests" -msgstr "Zezwalaj Gościom" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Użytkownicy systemu mogą dostać się do swoich katalogów domowych za " -"pośrednictwem udziałów sieciowych." - -msgid "Allowed users" -msgstr "Użytkownicy z prawem dostępu" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Utwórz maskę" - -msgid "Description" -msgstr "Opis" - -msgid "Directory mask" -msgstr "Maska katalogu" - -msgid "Edit Template" -msgstr "Edytuj szablon" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Edytuj szablon, który jest używany do generowania konfiguracji samby." - -msgid "General Settings" -msgstr "Ustawienia ogólne" - -msgid "Hostname" -msgstr "Nazwa hosta" - -msgid "Mask for new directories" -msgstr "Maska dla nowych katalogów" - -msgid "Mask for new files" -msgstr "Maska dla nowych plików" - -msgid "Name" -msgstr "Nazwa" - -msgid "Network Shares" -msgstr "Udziały sieciowe" - -msgid "Path" -msgstr "Ścieżka" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Tylko do odczytu" - -msgid "Share home-directories" -msgstr "Udostępniaj katalogi domowe" - -msgid "Shared Directories" -msgstr "Udostępniane katalogi" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"To jest zawartość pliku '/etc/samba/smb.conf.template\", na podstawie " -"którego zostanie wygenerowana konfiguracja samby. Wartości otoczone symbolem " -"kreski pionowej ('|') nie powinny być zmieniane. Wartości ich zostaną " -"pobrane z zakładki \"Ustawienia ogólne\"." - -msgid "Workgroup" -msgstr "Grupa robocza" diff --git a/package/luci/applications/luci-app-samba/po/pt-br/samba.po b/package/luci/applications/luci-app-samba/po/pt-br/samba.po deleted file mode 100644 index a2e6e220c0..0000000000 --- a/package/luci/applications/luci-app-samba/po/pt-br/samba.po +++ /dev/null @@ -1,101 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2013-04-06 22:54+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Allow guests" -msgstr "Permitir convidados" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Usuários do sistema poderão acessar seu diretório home através dos " -"compartilhamentos de rede" - -msgid "Allowed users" -msgstr "Usuários permitidos" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Máscara de criação" - -msgid "Description" -msgstr "Descrição" - -msgid "Directory mask" -msgstr "Máscara do diretório" - -msgid "Edit Template" -msgstr "Editar modelo" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Edita o modelo que é usado para gerar a configuração do samba." - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "Hostname" -msgstr "Nome do equipamento" - -msgid "Mask for new directories" -msgstr "Máscara para novos diretórios" - -msgid "Mask for new files" -msgstr "Máscara para novos arquivos" - -msgid "Name" -msgstr "Nome" - -msgid "Network Shares" -msgstr "Compartilhamentos de Rede" - -msgid "Path" -msgstr "Caminho" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Somente leitura" - -msgid "Share home-directories" -msgstr "Compartilhar diretórios home" - -msgid "Shared Directories" -msgstr "Diretórios Compartilhados" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Este é o conteúdo do arquivo '/etc/samba/smb.conf.template' a partir do qual " -"sua configuração do samba será gerada. Valores entre simbolos de pipe ('|') " -"não devem ser alterados. Estes valores serão obtidos a partir da aba " -"'Configurações Gerais'." - -msgid "Workgroup" -msgstr "Grupo de trabalho" - -#~ msgid "Shared Directory" -#~ msgstr "Diretório Compartilhado" - -#~ msgid "Physical Path" -#~ msgstr "Caminho Físico" - -#~ msgid "optional" -#~ msgstr "opcional" diff --git a/package/luci/applications/luci-app-samba/po/pt/samba.po b/package/luci/applications/luci-app-samba/po/pt/samba.po deleted file mode 100644 index f58b58818e..0000000000 --- a/package/luci/applications/luci-app-samba/po/pt/samba.po +++ /dev/null @@ -1,101 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-05-01 01:13+0200\n" -"Last-Translator: pedromrgoncalves \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Allow guests" -msgstr "Permitir Convidados" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Utilizadores do sistema poderão aceder ao seu directório home através das " -"partilhas de rede." - -msgid "Allowed users" -msgstr "Utilizadores Permitidos" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Criar Máscara" - -msgid "Description" -msgstr "Descrição" - -msgid "Directory mask" -msgstr "Máscara do Directório" - -msgid "Edit Template" -msgstr "Editar Template" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Editar a template que é utilizada para gerar a configuração samba" - -msgid "General Settings" -msgstr "Definições Gerais" - -msgid "Hostname" -msgstr "Nome do host" - -msgid "Mask for new directories" -msgstr "Máscara para novos directórios" - -msgid "Mask for new files" -msgstr "Máscara para novos ficheiros" - -msgid "Name" -msgstr "Nome" - -msgid "Network Shares" -msgstr "Partilhas da Rede" - -msgid "Path" -msgstr "Caminho" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Apenas Leitura" - -msgid "Share home-directories" -msgstr "Partilha de directórios home" - -msgid "Shared Directories" -msgstr "Directórios Partilhados" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Isto é o conteúdo do ficheiro 'etc/samba/smb.conf.template' a partir do qual " -"será gerado o ficheiro de configuração do samba. Os valores entre o símbolo " -"| não devem ser alterados. Eles recebem os valores do separador 'Definições " -"Gerais'." - -msgid "Workgroup" -msgstr "Grupo de trabalho" - -#~ msgid "Shared Directory" -#~ msgstr "Diretório Compartilhado" - -#~ msgid "Physical Path" -#~ msgstr "Caminho Físico" - -#~ msgid "optional" -#~ msgstr "opcional" diff --git a/package/luci/applications/luci-app-samba/po/ro/samba.po b/package/luci/applications/luci-app-samba/po/ro/samba.po deleted file mode 100644 index 7cfcda7d11..0000000000 --- a/package/luci/applications/luci-app-samba/po/ro/samba.po +++ /dev/null @@ -1,90 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-07 17:16+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Allow guests" -msgstr "Permite oaspeti" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Permite utilizatorii de sistem sa acceseze directoarele lor peste " -"partajarile de retea" - -msgid "Allowed users" -msgstr "Utilizatori acceptati" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Creaza masca" - -msgid "Description" -msgstr "Descriere" - -msgid "Directory mask" -msgstr "Masca director" - -msgid "Edit Template" -msgstr "Editeaza sablon" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Editeaza sablonul care e folosit pentru generarea configuratiei samba." - -msgid "General Settings" -msgstr "Setari generale" - -msgid "Hostname" -msgstr "Numele de host" - -msgid "Mask for new directories" -msgstr "Masca pentru directoarele noi" - -msgid "Mask for new files" -msgstr "Masca pentru fisierele noi" - -msgid "Name" -msgstr "Nume" - -msgid "Network Shares" -msgstr "Partajari pe retea" - -msgid "Path" -msgstr "Cale" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Doar citire" - -msgid "Share home-directories" -msgstr "Partajeaza directoarele proprii" - -msgid "Shared Directories" -msgstr "Directoare partajate" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Acesta este continutul fisierului '/etc/samba/smb.conf.template' din care se " -"genereaza configuratia samba. Valorile dintre liniuta verticala ('|') n-ar " -"trebui schimbate, ele iau valorile direct din tab-ul de \"Setari generale\"." - -msgid "Workgroup" -msgstr "Workgroup" diff --git a/package/luci/applications/luci-app-samba/po/ru/samba.po b/package/luci/applications/luci-app-samba/po/ru/samba.po deleted file mode 100644 index 534770f5f1..0000000000 --- a/package/luci/applications/luci-app-samba/po/ru/samba.po +++ /dev/null @@ -1,93 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: samba\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-08-15 13:48+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Allow guests" -msgstr "Разрешить гостевой вход" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Разрешить пользователям получать доступ к их домашним директориям через сеть" - -msgid "Allowed users" -msgstr "Разрешённые пользователи" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Создать маску" - -msgid "Description" -msgstr "Описание" - -msgid "Directory mask" -msgstr "Маска директории" - -msgid "Edit Template" -msgstr "Редактировать шаблон" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "Редактировать шаблон, используемый для генерации конфигурации samba." - -msgid "General Settings" -msgstr "Общие настройки" - -msgid "Hostname" -msgstr "Имя хоста" - -msgid "Mask for new directories" -msgstr "Маска для новых директорий" - -msgid "Mask for new files" -msgstr "Маска для новых файлов" - -msgid "Name" -msgstr "Имя" - -msgid "Network Shares" -msgstr "Сетевые ресурсы" - -msgid "Path" -msgstr "Путь" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Только для чтения" - -msgid "Share home-directories" -msgstr "Совместно использовать домашние директории" - -msgid "Shared Directories" -msgstr "Совместно используемые директории" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Это содержимое файла '/etc/samba/smb.conf.template', из которого " -"генерируется конфигурация samba. Значения, заключённые в символы \"|\", не " -"должны быть изменены. Они будут автоматически заменены на значения из " -"вкладки 'Общие настройки'." - -msgid "Workgroup" -msgstr "Рабочая группа" diff --git a/package/luci/applications/luci-app-samba/po/sk/samba.po b/package/luci/applications/luci-app-samba/po/sk/samba.po deleted file mode 100644 index 21f102d325..0000000000 --- a/package/luci/applications/luci-app-samba/po/sk/samba.po +++ /dev/null @@ -1,81 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Allow guests" -msgstr "" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" - -msgid "Allowed users" -msgstr "" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Directory mask" -msgstr "" - -msgid "Edit Template" -msgstr "" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Mask for new directories" -msgstr "" - -msgid "Mask for new files" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Shares" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "" - -msgid "Share home-directories" -msgstr "" - -msgid "Shared Directories" -msgstr "" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" - -msgid "Workgroup" -msgstr "" diff --git a/package/luci/applications/luci-app-samba/po/sv/samba.po b/package/luci/applications/luci-app-samba/po/sv/samba.po deleted file mode 100644 index f58f8b87d7..0000000000 --- a/package/luci/applications/luci-app-samba/po/sv/samba.po +++ /dev/null @@ -1,83 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Allow guests" -msgstr "Tillåt gäster" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "Tillåt systemanvändare att nå deras hem-mappar via nätverksdelningar" - -msgid "Allowed users" -msgstr "Tillåtna användare" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Skapa mask" - -msgid "Description" -msgstr "Beskrivning" - -msgid "Directory mask" -msgstr "Mask för mapp" - -msgid "Edit Template" -msgstr "Redigera mall" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" -"Redigera mallen som används för att generera konfigurationen för samba." - -msgid "General Settings" -msgstr "Generella inställningar" - -msgid "Hostname" -msgstr "Värdnamn" - -msgid "Mask for new directories" -msgstr "Mask för nya mappar" - -msgid "Mask for new files" -msgstr "Mask för nya filer" - -msgid "Name" -msgstr "Namn" - -msgid "Network Shares" -msgstr "Nätverksdelningar" - -msgid "Path" -msgstr "Genväg" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Endast läsbar" - -msgid "Share home-directories" -msgstr "Dela hem-mappar" - -msgid "Shared Directories" -msgstr "Delade mappar" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" - -msgid "Workgroup" -msgstr "Arbetsgrupp" diff --git a/package/luci/applications/luci-app-samba/po/templates/samba.pot b/package/luci/applications/luci-app-samba/po/templates/samba.pot deleted file mode 100644 index 674ed331ca..0000000000 --- a/package/luci/applications/luci-app-samba/po/templates/samba.pot +++ /dev/null @@ -1,74 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Allow guests" -msgstr "" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" - -msgid "Allowed users" -msgstr "" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Directory mask" -msgstr "" - -msgid "Edit Template" -msgstr "" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Mask for new directories" -msgstr "" - -msgid "Mask for new files" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Shares" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "" - -msgid "Share home-directories" -msgstr "" - -msgid "Shared Directories" -msgstr "" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" - -msgid "Workgroup" -msgstr "" diff --git a/package/luci/applications/luci-app-samba/po/tr/samba.po b/package/luci/applications/luci-app-samba/po/tr/samba.po deleted file mode 100644 index 98d47beecf..0000000000 --- a/package/luci/applications/luci-app-samba/po/tr/samba.po +++ /dev/null @@ -1,81 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Allow guests" -msgstr "" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" - -msgid "Allowed users" -msgstr "" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Directory mask" -msgstr "" - -msgid "Edit Template" -msgstr "" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Mask for new directories" -msgstr "" - -msgid "Mask for new files" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Network Shares" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "" - -msgid "Share home-directories" -msgstr "" - -msgid "Shared Directories" -msgstr "" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" - -msgid "Workgroup" -msgstr "" diff --git a/package/luci/applications/luci-app-samba/po/uk/samba.po b/package/luci/applications/luci-app-samba/po/uk/samba.po deleted file mode 100644 index a4469f961e..0000000000 --- a/package/luci/applications/luci-app-samba/po/uk/samba.po +++ /dev/null @@ -1,92 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-18 20:35+0200\n" -"Last-Translator: YuriPet \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Allow guests" -msgstr "Дозволити гостьовий вхід" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Дозволити користувачам системи досягати своїх домашніх каталогів через " -"загальні мережеві ресурси" - -msgid "Allowed users" -msgstr "Дозволені користувачі" - -msgid "Browseable" -msgstr "" - -msgid "Create mask" -msgstr "Створити маску" - -msgid "Description" -msgstr "Опис" - -msgid "Directory mask" -msgstr "Маска каталогу" - -msgid "Edit Template" -msgstr "Редагувати шаблон" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" -"Редагувати шаблон, який використовується для створення конфігурації samba." - -msgid "General Settings" -msgstr "Загальні настройки" - -msgid "Hostname" -msgstr "Назва (ім'я) вузла" - -msgid "Mask for new directories" -msgstr "Маска для нових каталогів" - -msgid "Mask for new files" -msgstr "Маска для нових файлів" - -msgid "Name" -msgstr "Ім'я" - -msgid "Network Shares" -msgstr "Загальні мережеві ресурси" - -msgid "Path" -msgstr "Шлях" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -msgid "Read-only" -msgstr "Тільки читання" - -msgid "Share home-directories" -msgstr "Спільно використовувати домашні каталоги" - -msgid "Shared Directories" -msgstr "Загальні каталоги" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"Це вміст файлу '/etc/samba/smb.conf.template', з якого буде генеруватися " -"ваша конфігурація samba. Значення, укладені в символи \"вертикальна риска" -"\" (\"|\") не повинні змінюватися. Вони отримують свої значення з вкладки " -"\"Загальні налаштування\"." - -msgid "Workgroup" -msgstr "Робоча група" diff --git a/package/luci/applications/luci-app-samba/po/vi/samba.po b/package/luci/applications/luci-app-samba/po/vi/samba.po deleted file mode 100644 index 7c088cebe3..0000000000 --- a/package/luci/applications/luci-app-samba/po/vi/samba.po +++ /dev/null @@ -1,104 +0,0 @@ -# samba.pot -# generated from ./applications/luci-samba/luasrc/i18n/samba.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:59+0200\n" -"PO-Revision-Date: 2009-08-13 03:54+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -#, fuzzy -msgid "Allow guests" -msgstr "Cho phép khách" - -#, fuzzy -msgid "Allow system users to reach their home directories via network shares" -msgstr "" -"Những người sử dụng hệ thống có thể tiếp cận những thư mục tại nhà thông qua " -"mạng lưới chia sẻ trực tuyến." - -#, fuzzy -msgid "Allowed users" -msgstr "Người sử dụng được cho phép" - -msgid "Browseable" -msgstr "" - -#, fuzzy -msgid "Create mask" -msgstr "Tạo Mask" - -msgid "Description" -msgstr "Mô tả" - -#, fuzzy -msgid "Directory mask" -msgstr "Thư mục Mask" - -msgid "Edit Template" -msgstr "" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Hostname" -msgstr "tên máy chủ" - -msgid "Mask for new directories" -msgstr "Mask cho thư mục mới" - -msgid "Mask for new files" -msgstr "Mask cho tập tin mới" - -msgid "Name" -msgstr "" - -msgid "Network Shares" -msgstr "Mạng chia sẻ" - -msgid "Path" -msgstr "" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "" - -#, fuzzy -msgid "Read-only" -msgstr "Chỉ đọc " - -msgid "Share home-directories" -msgstr "Chia sẻ danh bạ chính" - -msgid "Shared Directories" -msgstr "Thư mục chia sẻ" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" - -msgid "Workgroup" -msgstr "Nhóm làm việc " - -#~ msgid "Shared Directory" -#~ msgstr "Đã chia sẻ thư mục" - -#~ msgid "Physical Path" -#~ msgstr "Đường dẫn vật lý" - -#~ msgid "optional" -#~ msgstr "Tùy thích" diff --git a/package/luci/applications/luci-app-samba/po/zh-cn/samba.po b/package/luci/applications/luci-app-samba/po/zh-cn/samba.po deleted file mode 100644 index ea9d0489fd..0000000000 --- a/package/luci/applications/luci-app-samba/po/zh-cn/samba.po +++ /dev/null @@ -1,94 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2017-10-29 15:36+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \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: Gtranslator 2.91.7\n" - -msgid "Allow guests" -msgstr "允许匿名用户" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "允许系统用户通过网络共享访问他们的家目录" - -msgid "Allowed users" -msgstr "允许用户" - -msgid "Browseable" -msgstr "可浏览" - -msgid "Create mask" -msgstr "创建权限掩码" - -msgid "Description" -msgstr "描述" - -msgid "Directory mask" -msgstr "目录权限掩码" - -msgid "Edit Template" -msgstr "编辑模板" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "编辑用来生成 samba 设置的模板" - -msgid "General Settings" -msgstr "基本设置" - -msgid "Hostname" -msgstr "主机名" - -msgid "Mask for new directories" -msgstr "新目录权限掩码" - -msgid "Mask for new files" -msgstr "新文件权限掩码" - -msgid "Name" -msgstr "共享名" - -msgid "Network Shares" -msgstr "网络共享" - -msgid "Path" -msgstr "目录" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "请添加要共享的目录。每个目录指到已挂载设备上的文件夹。" - -msgid "Read-only" -msgstr "只读" - -msgid "Share home-directories" -msgstr "共享家目录" - -msgid "Shared Directories" -msgstr "共享目录" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"这是将从其上生成 samba 配置的文件“/etc/samba/smb.conf.template”的内容。由管道" -"符(“|”)包围的值不应更改。它们将从“常规设置”标签中获取其值。" - -msgid "Workgroup" -msgstr "工作组" - -#~ msgid "Physical Path" -#~ msgstr "物理路径" diff --git a/package/luci/applications/luci-app-samba/po/zh-tw/samba.po b/package/luci/applications/luci-app-samba/po/zh-tw/samba.po deleted file mode 100644 index 8461a60774..0000000000 --- a/package/luci/applications/luci-app-samba/po/zh-tw/samba.po +++ /dev/null @@ -1,94 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2017-10-29 15:36+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" - -msgid "Allow guests" -msgstr "允許匿名使用者" - -msgid "Allow system users to reach their home directories via network shares" -msgstr "允許系統使用者通過網路共享訪問他們的家目錄" - -msgid "Allowed users" -msgstr "允許使用者" - -msgid "Browseable" -msgstr "可瀏覽" - -msgid "Create mask" -msgstr "建立權限掩碼" - -msgid "Description" -msgstr "描述" - -msgid "Directory mask" -msgstr "目錄權限掩碼" - -msgid "Edit Template" -msgstr "編輯模板" - -msgid "Edit the template that is used for generating the samba configuration." -msgstr "編輯用來生成 samba 設定的模板" - -msgid "General Settings" -msgstr "基本設定" - -msgid "Hostname" -msgstr "主機名" - -msgid "Mask for new directories" -msgstr "新目錄權限掩碼" - -msgid "Mask for new files" -msgstr "新檔案權限掩碼" - -msgid "Name" -msgstr "共享名" - -msgid "Network Shares" -msgstr "網路共享" - -msgid "Path" -msgstr "目錄" - -msgid "" -"Please add directories to share. Each directory refers to a folder on a " -"mounted device." -msgstr "請新增要共享的目錄。每個目錄指到已掛載裝置上的資料夾。" - -msgid "Read-only" -msgstr "只讀" - -msgid "Share home-directories" -msgstr "共享家目錄" - -msgid "Shared Directories" -msgstr "共享目錄" - -msgid "" -"This is the content of the file '/etc/samba/smb.conf.template' from which " -"your samba configuration will be generated. Values enclosed by pipe symbols " -"('|') should not be changed. They get their values from the 'General " -"Settings' tab." -msgstr "" -"這是將從其上生成 samba 配置的檔案“/etc/samba/smb.conf.template”的內容。由管道" -"符(“|”)包圍的值不應更改。它們將從“常規設定”標籤中獲取其值。" - -msgid "Workgroup" -msgstr "工作組" - -#~ msgid "Physical Path" -#~ msgstr "物理路徑" diff --git a/package/luci/applications/luci-app-shadowsocks-libev/Makefile b/package/luci/applications/luci-app-shadowsocks-libev/Makefile deleted file mode 100644 index d0923e07a4..0000000000 --- a/package/luci/applications/luci-app-shadowsocks-libev/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2017 Yousong Zhou -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for shadowsocks-libev -LUCI_DEPENDS:= - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua deleted file mode 100644 index 05d12e38b2..0000000000 --- a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua +++ /dev/null @@ -1,33 +0,0 @@ --- Copyright 2017 Yousong Zhou --- Licensed to the public under the Apache License 2.0. --- -module("luci.controller.shadowsocks-libev", package.seeall) - -function index() - entry({"admin", "services", "shadowsocks-libev"}, - alias("admin", "services", "shadowsocks-libev", "instances"), - _("Shadowsocks-libev"), 59) - - entry({"admin", "services", "shadowsocks-libev", "instances"}, - arcombine(cbi("shadowsocks-libev/instances"), cbi("shadowsocks-libev/instance-details")), - _("Local Instances"), 10).leaf = true - - entry({"admin", "services", "shadowsocks-libev", "servers"}, - cbi("shadowsocks-libev/servers"), - _("Remote Servers"), 20).leaf = true - - entry({"admin", "services", "shadowsocks-libev", "rules"}, - cbi("shadowsocks-libev/rules"), - _("Redir Rules"), 30).leaf = true - - entry({"admin", "services", "shadowsocks-libev", "status"}, call("ss_status"), nil).leaf = true - -end - -function ss_status() - local ut = require "luci.util" - local rv = ut.ubus("service", "list", {name = "shadowsocks-libev"})["shadowsocks-libev"] or {_=0} - - luci.http.prepare_content("application/json") - luci.http.write_json(rv) -end diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua deleted file mode 100644 index 22f3106d03..0000000000 --- a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua +++ /dev/null @@ -1,53 +0,0 @@ --- Copyright 2017 Yousong Zhou --- Licensed to the public under the Apache License 2.0. - -local ds = require "luci.dispatcher" -local ss = require "luci.model.shadowsocks-libev" - -local sname = arg[1] -local redirect_url = ds.build_url("admin/services/shadowsocks-libev/instances") -local s, o - -local m = Map("shadowsocks-libev") -local sdata = m:get(sname) -if not sdata then - luci.http.redirect(redirect_url) - return -end -local stype = sdata[".type"] -m.redirect = redirect_url -m.title = "shadowsocks-libev - %s - %s" % {stype, sname} - - -s = m:section(NamedSection, sname, stype) -s:tab("general", translate("General Settings")) -s:tab("advanced", translate("Advanced Settings")) -s:taboption("general", Flag, "disabled", translate("Disable")) -ss.option_install_package(s, "general") -ss.options_common(s, "advanced") - -if stype == "ss_server" then - ss.options_server(s, "general") - o = s:taboption("general", Value, "bind_address", - translate("Bind address"), - translate("The address ss-server will initiate connection from")) - o.datatype = "ipaddr" - o.placeholder = "0.0.0.0" - ss.values_ipaddr(o) - o = s:taboption("general", Value, "manager_address", translate("Manager address")) - o.datatype = "hostport" -else - ss.options_client(s, "general") - if stype == "ss_tunnel" then - o = s:taboption("general", Value, "tunnel_address", - translate("Tunnel address"), - translate("The address ss-tunnel will forward traffic to")) - o.datatype = "hostport" - elseif stype == "ss_redir" then - o = s:taboption("advanced", Flag, "disable_sni", - translate("Disable SNI"), - translate("Disable parsing HTTP/HTTPS payload to find then resolve hostname at remote server")) - end -end - -return m diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua deleted file mode 100644 index 62a90fb416..0000000000 --- a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua +++ /dev/null @@ -1,104 +0,0 @@ --- Copyright 2017 Yousong Zhou --- Licensed to the public under the Apache License 2.0. - -local ds = require "luci.dispatcher" -local ss = require "luci.model.shadowsocks-libev" -local ut = require "luci.util" -local m, s, o - -m = Map("shadowsocks-libev", - translate("Local Instances"), - translate("Instances of shadowsocks-libev components, e.g. ss-local, \ - ss-redir, ss-tunnel, ss-server, etc. To enable an instance it \ - is required to enable both the instance itself and the remote \ - server it refers to.")) - -local instances = {} -local cfgtypes = { "ss_local", "ss_redir", "ss_server", "ss_tunnel" } - -for sname, sdata in pairs(m:get()) do - local key, value = ss.cfgvalue_overview(sdata) - if key ~= nil then - instances[key] = value - end -end - -s = m:section(Table, instances) -s.addremove = true -s.template_addremove = "shadowsocks-libev/add_instance" -s.extedit = function(self, section) - local value = instances[section] - if type(value) == "table" then - return ds.build_url(unpack(ds.context.requestpath), - "services/shadowsocks-libev/instances", - value[".name"]) - end -end -s.parse = function(self, ...) - Table.parse(self, ...) - - local crval = REMOVE_PREFIX .. self.config - local name = self.map:formvaluetable(crval) - for k,v in pairs(name) do - local value = instances[k] - local sname = value[".name"] - if type(value) == "table" then - m:del(sname) - instances[k] = nil - for _, oname in ipairs({"redir_tcp", "redir_udp"}) do - local ovalue = m:get("ss_rules", oname) - if ovalue == sname then - m:del("ss_rules", oname) - end - end - end - end - - local stype = m:formvalue("_newinst.type") - local sname = m:formvalue("_newinst.name") - if ut.contains(cfgtypes, stype) then - local created - if sname and #sname > 0 then - created = m:set(sname, nil, stype) - else - created = m:add(stype) - sname = created - end - if created then - m.uci:save("shadowsocks-libev") - luci.http.redirect(ds.build_url( - "admin/services/shadowsocks-libev/instances", sname - )) - end - end -end - -o = s:option(DummyValue, "name", translate("Name")) -o.rawhtml = true -o = s:option(DummyValue, "overview", translate("Overview")) -o.rawhtml = true - -s:option(DummyValue, "running", translate("Running")) - -o = s:option(Button, "disabled", translate("Enable/Disable")) -o.render = function(self, section, scope) - if instances[section].disabled then - self.title = translate("Disabled") - self.inputstyle = "reset" - else - self.title = translate("Enabled") - self.inputstyle = "save" - end - Button.render(self, section, scope) -end -o.write = function(self, section) - local sdata = instances[section] - if type(sdata) == "table" then - local sname = sdata[".name"] - local disabled = not sdata["disabled"] - sdata["disabled"] = disabled - m:set(sname, "disabled", tostring(disabled)) - end -end - -return m diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua deleted file mode 100644 index 4a01bed247..0000000000 --- a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua +++ /dev/null @@ -1,109 +0,0 @@ --- Copyright 2017 Yousong Zhou --- Licensed to the public under the Apache License 2.0. - -local ss = require("luci.model.shadowsocks-libev") - -local m, s, o - -m = Map("shadowsocks-libev", - translate("Redir Rules"), - translate("On this page you can configure how traffics are to be \ - forwarded to ss-redir instances. \ - If enabled, packets will first have their src ip addresses checked \ - against Src ip/net bypass, Src ip/net forward, \ - Src ip/net checkdst and if none matches Src default \ - will give the default action to be taken. \ - If the prior check results in action checkdst, packets will continue \ - to have their dst addresses checked.")) - -local sdata = m:get('ss_rules') -if not sdata then - m:set('ss_rules', nil, 'ss_rules') - m:set('ss_rules', 'disabled', "1") -end - -function src_dst_option(s, ...) - local o = s:taboption(...) - o.datatype = "or(ip4addr,cidr4)" -end - -s = m:section(NamedSection, "ss_rules", "ss_rules") -s:tab("general", translate("General Settings")) -s:tab("src", translate("Source Settings")) -s:tab("dst", translate("Destination Settings")) - -s:taboption('general', Flag, "disabled", translate("Disable")) -ss.option_install_package(s, 'general') - -o = s:taboption('general', ListValue, "redir_tcp", - translate("ss-redir for TCP")) -ss.values_redir(o, 'tcp') -o = s:taboption('general', ListValue, "redir_udp", - translate("ss-redir for UDP")) -ss.values_redir(o, 'udp') - -o = s:taboption('general', ListValue, "local_default", - translate("Local-out default"), - translate("Default action for locally generated TCP packets")) -ss.values_actions(o) -o = s:taboption('general', DynamicList, "ifnames", - translate("Ingress interfaces"), - translate("Only apply rules on packets from these network interfaces")) -ss.values_ifnames(o) -s:taboption('general', Value, "ipt_args", - translate("Extra arguments"), - translate("Passes additional arguments to iptables. Use with care!")) - -src_dst_option(s, 'src', DynamicList, "src_ips_bypass", - translate("Src ip/net bypass"), - translate("Bypass ss-redir for packets with src address in this list")) -src_dst_option(s, 'src', DynamicList, "src_ips_forward", - translate("Src ip/net forward"), - translate("Forward through ss-redir for packets with src address in this list")) -src_dst_option(s, 'src', DynamicList, "src_ips_checkdst", - translate("Src ip/net checkdst"), - translate("Continue to have dst address checked for packets with src address in this list")) -o = s:taboption('src', ListValue, "src_default", - translate("Src default"), - translate("Default action for packets whose src address do not match any of the src ip/net list")) -ss.values_actions(o) - -src_dst_option(s, 'dst', DynamicList, "dst_ips_bypass", - translate("Dst ip/net bypass"), - translate("Bypass ss-redir for packets with dst address in this list")) -src_dst_option(s, 'dst', DynamicList, "dst_ips_forward", - translate("Dst ip/net forward"), - translate("Forward through ss-redir for packets with dst address in this list")) - -o = s:taboption('dst', FileBrowser, "dst_ips_bypass_file", - translate("Dst ip/net bypass file"), - translate("File containing ip/net for the purposes as with Dst ip/net bypass")) -o.datatype = "file" -s:taboption('dst', FileBrowser, "dst_ips_forward_file", - translate("Dst ip/net forward file"), - translate("File containing ip/net for the purposes as with Dst ip/net forward")) -o.datatype = "file" -o = s:taboption('dst', ListValue, "dst_default", - translate("Dst default"), - translate("Default action for packets whose dst address do not match any of the dst ip list")) -ss.values_actions(o) - -local installed = os.execute("iptables -m recent -h &>/dev/null") == 0 -if installed then - o = s:taboption('dst', Flag, "dst_forward_recentrst") -else - m:set('ss_rules', 'dst_forward_recentrst', "0") - o = s:taboption("dst", Button, "_install") - o.inputtitle = translate("Install package iptables-mod-conntrack-extra") - o.inputstyle = "apply" - o.write = function() - return luci.http.redirect( - luci.dispatcher.build_url("admin/system/packages") .. - "?submit=1&install=iptables-mod-conntrack-extra" - ) - end -end -o.title = translate("Forward recentrst") -o.description = translate("Forward those packets whose dst have recently sent to us multiple tcp-rst") - -return m diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua deleted file mode 100644 index 71c66562e1..0000000000 --- a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua +++ /dev/null @@ -1,31 +0,0 @@ --- Copyright 2017 Yousong Zhou --- Licensed to the public under the Apache License 2.0. - -local ds = require "luci.dispatcher" -local ss = require("luci.model.shadowsocks-libev") - -local m, s - -m = Map("shadowsocks-libev", - translate("Remote Servers"), - translate("Definition of remote shadowsocks servers. \ - Disable any of them will also disable instances refering to it.")) - -local sname = arg[1] -if sname then - if not m:get(sname) then - luci.http.redirect(ds.build_url("admin/services/shadowsocks-libev/servers")) - return - end - s = m:section(NamedSection, sname, "server") - m.title = m.title .. ' - ' .. sname -else - s = m:section(TypedSection, "server") - s.template = 'cbi/tblsection' - s.addremove = true -end - -s:option(Flag, "disabled", translate("Disable")) -ss.options_server(s) - -return m diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua deleted file mode 100644 index 7ba6b40c53..0000000000 --- a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua +++ /dev/null @@ -1,264 +0,0 @@ --- Copyright 2017 Yousong Zhou --- Licensed to the public under the Apache License 2.0. - -local _up = getfenv(3) -local ut = require("luci.util") -local sys = require("luci.sys") -local ds = require("luci.dispatcher") -local nw = require("luci.model.network") -nw.init() -module("luci.model.shadowsocks-libev", function(m) - setmetatable(m, {__index=function (self, k) - local tb = _up - return rawget(self, k) or _up[k] - end}) -end) - -function values_actions(o) - o:value("bypass") - o:value("forward") - if o.option ~= "dst_default" then - o:value("checkdst") - end -end - -function values_redir(o, xmode) - o.map.uci.foreach("shadowsocks-libev", "ss_redir", function(sdata) - local disabled = ucival_to_bool(sdata["disabled"]) - local sname = sdata[".name"] - local mode = sdata["mode"] or "tcp_only" - if not disabled and mode:find(xmode) then - local desc = "%s - %s" % {sname, mode} - o:value(sname, desc) - end - end) - o:value("", "") - o.default = "" -end - -function values_serverlist(o) - o.map.uci.foreach("shadowsocks-libev", "server", function(sdata) - local sname = sdata[".name"] - local server = sdata["server"] - local server_port = sdata["server_port"] - if server and server_port then - local desc = "%s - %s:%s" % {sname, sdata["server"], sdata["server_port"]} - o:value(sname, desc) - end - end) -end - -function values_ipaddr(o) - for _, v in ipairs(nw:get_interfaces()) do - for _, a in ipairs(v:ipaddrs()) do - o:value(a:host():string(), '%s (%s)' %{ a:host(), v:shortname() }) - end - end -end - -function values_ifnames(o) - for _, v in ipairs(sys.net.devices()) do - o:value(v) - end -end - -function options_client(s, tab) - local o - - o = s:taboption(tab, ListValue, "server", translate("Remote server")) - values_serverlist(o) - o = s:taboption(tab, Value, "local_address", translate("Local address")) - o.datatype = "ipaddr" - o.placeholder = "0.0.0.0" - values_ipaddr(o) - o = s:taboption(tab, Value, "local_port", translate("Local port")) - o.datatype = "port" -end - -function options_server(s, tab) - local o - local optfunc - - if tab == nil then - optfunc = function(...) return s:option(...) end - else - optfunc = function(...) return s:taboption(tab, ...) end - end - - o = optfunc(Value, "server", translate("Server")) - o.datatype = "host" - o.size = 16 - o = optfunc(Value, "server_port", translate("Server port")) - o.datatype = "port" - o.size = 5 - o = optfunc(ListValue, "method", translate("Method")) - for _, m in ipairs(methods) do - o:value(m) - end - o = optfunc(Value, "key", translate("Key (base64 encoding)")) - o.datatype = "base64" - o.password = true - o.size = 12 - o = optfunc(Value, "password", translate("Password")) - o.password = true - o.size = 12 -end - -function options_common(s, tab) - local o - - o = s:taboption(tab, ListValue, "mode", translate("Mode of operation")) - for _, m in ipairs(modes) do - o:value(m) - end - o.default = "tcp_and_udp" - o = s:taboption(tab, Value, "mtu", translate("MTU")) - o.datatype = "uinteger" - o = s:taboption(tab, Value, "timeout", translate("Timeout (sec)")) - o.datatype = "uinteger" - s:taboption(tab, Value, "user", translate("Run as")) - - s:taboption(tab, Flag, "verbose", translate("Verbose")) - s:taboption(tab, Flag, "ipv6_first", translate("IPv6 First"), translate("Prefer IPv6 addresses when resolving names")) - s:taboption(tab, Flag, "fast_open", translate("Enable TCP Fast Open")) - s:taboption(tab, Flag, "reuse_port", translate("Enable SO_REUSEPORT")) -end - -function ucival_to_bool(val) - return val == "true" or val == "1" or val == "yes" or val == "on" -end - -function cfgvalue_overview(sdata) - local stype = sdata[".type"] - local lines = {} - - if stype == "ss_server" then - cfgvalue_overview_(sdata, lines, names_options_server) - cfgvalue_overview_(sdata, lines, names_options_common) - cfgvalue_overview_(sdata, lines, { - "bind_address", - "manager_address", - }) - elseif stype == "ss_local" or stype == "ss_redir" or stype == "ss_tunnel" then - cfgvalue_overview_(sdata, lines, names_options_client) - if stype == "ss_tunnel" then - cfgvalue_overview_(sdata, lines, {"tunnel_address"}) - elseif stype == "ss_redir" then - cfgvalue_overview_(sdata, lines, {"disable_sni"}) - end - cfgvalue_overview_(sdata, lines, names_options_common) - else - return nil, nil - end - local sname = sdata[".name"] - local key = "%s.%s" % {stype, sname} - local value = { - [".name"] = sname, - name = '%s.%s' % {stype, sname}, - overview = table.concat(lines, "
    "), - disabled = ucival_to_bool(sdata["disabled"]), - } - return key, value -end - -function cfgvalue_overview_(sdata, lines, names) - local line - - for _, n in ipairs(names) do - local v = sdata[n] - if v ~= nil then - if n == "key" or n == "password" then - v = translate("") - end - local fv = "%s" % ut.pcdata(v) - if sdata[".type"] ~= "ss_server" and n == "server" then - fv = '%s' % { - ds.build_url("admin/services/shadowsocks-libev/servers", v), fv} - end - line = n .. ": " .. fv - table.insert(lines, line) - end - end -end - -function option_install_package(s, tab) - local bin = s.sectiontype:gsub("_", "-", 1) - local installed = nixio.fs.access("/usr/bin/" .. bin) - if installed then - return - end - local opkg_package = "shadowsocks-libev-" .. bin - local p_install - if tab then - p_install = s:taboption(tab, Button, "_install") - else - p_install = s:option(Button, "_install") - end - p_install.title = translate("Package is not installed") - p_install.inputtitle = translate("Install package %q" % opkg_package) - p_install.inputstyle = "apply" - - function p_install.write() - return luci.http.redirect( - luci.dispatcher.build_url("admin/system/packages") .. - "?submit=1&install=%s" % opkg_package - ) - end -end - -names_options_server = { - "server", - "server_port", - "method", - "key", - "password", -} - -names_options_client = { - "server", - "local_address", - "local_port", -} - -names_options_common = { - "verbose", - "ipv6_first", - "fast_open", - "reuse_port", - "mode", - "mtu", - "timeout", - "user", -} - -modes = { - "tcp_only", - "tcp_and_udp", - "udp_only", -} - -methods = { - -- aead - "aes-128-gcm", - "aes-192-gcm", - "aes-256-gcm", - "chacha20-ietf-poly1305", - "xchacha20-ietf-poly1305", - -- stream - "table", - "rc4", - "rc4-md5", - "aes-128-cfb", - "aes-192-cfb", - "aes-256-cfb", - "aes-128-ctr", - "aes-192-ctr", - "aes-256-ctr", - "bf-cfb", - "camellia-128-cfb", - "camellia-192-cfb", - "camellia-256-cfb", - "salsa20", - "chacha20", - "chacha20-ietf", -} diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm deleted file mode 100644 index 219d89b074..0000000000 --- a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm +++ /dev/null @@ -1,45 +0,0 @@ -
    -
    - - - - - - -
    - - - - - -
    -
    - diff --git a/package/luci/applications/luci-app-shadowsocks-libev/root/etc/uci-defaults/40_luci-shadowsocks-libev b/package/luci/applications/luci-app-shadowsocks-libev/root/etc/uci-defaults/40_luci-shadowsocks-libev deleted file mode 100644 index 6f30fa77b7..0000000000 --- a/package/luci/applications/luci-app-shadowsocks-libev/root/etc/uci-defaults/40_luci-shadowsocks-libev +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@shadowsocks-libev[-1] - add ucitrack shadowsocks-libev - set ucitrack.@shadowsocks-libev[-1].init=shadowsocks-libev - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-shairplay/Makefile b/package/luci/applications/luci-app-shairplay/Makefile deleted file mode 100644 index dcc0611785..0000000000 --- a/package/luci/applications/luci-app-shairplay/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Shairplay -LUCI_DEPENDS:=+shairplay - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-shairplay/luasrc/controller/shairplay.lua b/package/luci/applications/luci-app-shairplay/luasrc/controller/shairplay.lua deleted file mode 100644 index d3223016af..0000000000 --- a/package/luci/applications/luci-app-shairplay/luasrc/controller/shairplay.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright 2014 Álvaro Fernández Rojas --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.shairplay", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/shairplay") then - return - end - - local page = entry({"admin", "services", "shairplay"}, cbi("shairplay"), _("Shairplay")) - page.dependent = true - -end diff --git a/package/luci/applications/luci-app-shairplay/luasrc/model/cbi/shairplay.lua b/package/luci/applications/luci-app-shairplay/luasrc/model/cbi/shairplay.lua deleted file mode 100644 index 4e078d7e53..0000000000 --- a/package/luci/applications/luci-app-shairplay/luasrc/model/cbi/shairplay.lua +++ /dev/null @@ -1,65 +0,0 @@ --- Copyright 2014 Álvaro Fernández Rojas --- Licensed to the public under the Apache License 2.0. - -m = Map("shairplay", "Shairplay", translate("Shairplay is a simple AirPlay server implementation, here you can configure the settings.")) - -s = m:section(TypedSection, "shairplay", "") -s.addremove = true -s.anonymous = false - -enable=s:option(Flag, "disabled", translate("Enabled")) -enable.enabled="0" -enable.disabled="1" -enable.default = "1" -enable.rmempty = false -respawn=s:option(Flag, "respawn", translate("Respawn")) -respawn.default = false - -apname = s:option(Value, "apname", translate("Airport Name")) -apname.rmempty = true - -port=s:option(Value, "port", translate("Port")) -port.rmempty = true -port.datatype = "port" - -pw = s:option(Value, "password", translate("Password")) -pw.rmempty = true -pw.password = true - -hwaddr=s:option(Value, "hwaddr", translate("HW Address")) -hwaddr.rmempty = true -hwaddr.datatype = "macaddr" - -ao_driver=s:option(ListValue, "ao_driver", translate("AO Driver")) -ao_driver:value("", translate("Default")) -ao_driver:value("alsa") ---ao_driver:value("alsa05") ---ao_driver:value("arts") ---ao_driver:value("esd") ---ao_driver:value("irix") ---ao_driver:value("nas") -ao_driver:value("oss") ---ao_driver:value("sun") - -ao_devicename=s:option(Value, "ao_devicename", translate("AO Device Name")) -ao_devicename.rmempty = true - -ao_deviceid = s:option(ListValue, "ao_deviceid", translate("AO Device ID")) -ao_deviceid.rmempty = true -ao_deviceid:value("", translate("Default")) -local pats = io.popen("find /proc/asound/ -type d -name 'card*' | sort") -if pats then - local l - while true do - l = pats:read("*l") - if not l then break end - - l = string.gsub(l, "/proc/asound/card", "") - if l then - ao_deviceid:value(l) - end - end - pats:close() -end - -return m diff --git a/package/luci/applications/luci-app-shairplay/po/ja/shairplay.po b/package/luci/applications/luci-app-shairplay/po/ja/shairplay.po deleted file mode 100644 index 07fa7be6ec..0000000000 --- a/package/luci/applications/luci-app-shairplay/po/ja/shairplay.po +++ /dev/null @@ -1,54 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-01-03 15:06+0900\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Language-Team: \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.11\n" -"X-Poedit-Basepath: .\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "AO Device ID" -msgstr "オーディオ出力 デバイスID" - -msgid "AO Device Name" -msgstr "オーディオ出力 デバイス名" - -msgid "AO Driver" -msgstr "オーディオ出力 デバイスドライバー" - -msgid "Airport Name" -msgstr "Airport名" - -msgid "Default" -msgstr "デフォルト" - -msgid "Enabled" -msgstr "有効" - -msgid "HW Address" -msgstr "ハードウェア アドレス" - -msgid "Password" -msgstr "パスワード" - -msgid "Port" -msgstr "ポート" - -msgid "Respawn" -msgstr "リスポーン" - -msgid "Shairplay" -msgstr "" - -msgid "" -"Shairplay is a simple AirPlay server implementation, here you can configure " -"the settings." -msgstr "" -"Shairplayは、シンプルなAirPlay サーバー実装です。ここでは、設定を行うことがで" -"きます。" diff --git a/package/luci/applications/luci-app-shairplay/po/pt-br/shairplay.po b/package/luci/applications/luci-app-shairplay/po/pt-br/shairplay.po deleted file mode 100644 index c7d0ab18a3..0000000000 --- a/package/luci/applications/luci-app-shairplay/po/pt-br/shairplay.po +++ /dev/null @@ -1,54 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" -"X-Poedit-Bookmarks: -1,5,-1,-1,-1,-1,-1,-1,-1,-1\n" - -msgid "AO Device ID" -msgstr "Identificador do dispositivo AO" - -msgid "AO Device Name" -msgstr "Nome do dispositivo AO" - -msgid "AO Driver" -msgstr "Driver do AO" - -msgid "Airport Name" -msgstr "Nome do Airport" - -msgid "Default" -msgstr "Padrão" - -msgid "Enabled" -msgstr "Habilitado" - -msgid "HW Address" -msgstr "Endereço de Hardware" - -msgid "Password" -msgstr "Senha" - -msgid "Port" -msgstr "Porta" - -msgid "Respawn" -msgstr "Redisparar" - -msgid "Shairplay" -msgstr "Shairplay" - -msgid "" -"Shairplay is a simple AirPlay server implementation, here you can configure " -"the settings." -msgstr "" -"Shairplay é uma implementação simples de um servidor AirPlay. Aqui você pode " -"configurá-lo." diff --git a/package/luci/applications/luci-app-shairplay/po/templates/shairplay.pot b/package/luci/applications/luci-app-shairplay/po/templates/shairplay.pot deleted file mode 100644 index b3da99e0b3..0000000000 --- a/package/luci/applications/luci-app-shairplay/po/templates/shairplay.pot +++ /dev/null @@ -1,40 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "AO Device ID" -msgstr "" - -msgid "AO Device Name" -msgstr "" - -msgid "AO Driver" -msgstr "" - -msgid "Airport Name" -msgstr "" - -msgid "Default" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "HW Address" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Respawn" -msgstr "" - -msgid "Shairplay" -msgstr "" - -msgid "" -"Shairplay is a simple AirPlay server implementation, here you can configure " -"the settings." -msgstr "" diff --git a/package/luci/applications/luci-app-shairplay/root/etc/uci-defaults/40_luci-shairplay b/package/luci/applications/luci-app-shairplay/root/etc/uci-defaults/40_luci-shairplay deleted file mode 100644 index efc8a89bb0..0000000000 --- a/package/luci/applications/luci-app-shairplay/root/etc/uci-defaults/40_luci-shairplay +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# needed for "Save and Apply" to restart shairplay -uci -q batch <<-EOF >/dev/null - delete ucitrack.@shairplay[-1] - add ucitrack shairplay - set ucitrack.@shairplay[-1].init="shairplay" - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-shairport/Makefile b/package/luci/applications/luci-app-shairport/Makefile deleted file mode 100644 index f174ef4687..0000000000 --- a/package/luci/applications/luci-app-shairport/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Shairport -LUCI_DEPENDS:=+shairport - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-shairport/luasrc/controller/shairport.lua b/package/luci/applications/luci-app-shairport/luasrc/controller/shairport.lua deleted file mode 100644 index b31b64e3ca..0000000000 --- a/package/luci/applications/luci-app-shairport/luasrc/controller/shairport.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright 2014 Álvaro Fernández Rojas --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.shairport", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/shairport") then - return - end - - local page = entry({"admin", "services", "shairport"}, cbi("shairport"), _("Shairport")) - page.dependent = true - -end diff --git a/package/luci/applications/luci-app-shairport/luasrc/model/cbi/shairport.lua b/package/luci/applications/luci-app-shairport/luasrc/model/cbi/shairport.lua deleted file mode 100644 index d3c2a25db0..0000000000 --- a/package/luci/applications/luci-app-shairport/luasrc/model/cbi/shairport.lua +++ /dev/null @@ -1,161 +0,0 @@ --- Copyright 2014 Álvaro Fernández Rojas --- Licensed to the public under the Apache License 2.0. - -m = Map("shairport", "Shairport", translate("Shairport is a simple AirPlay server implementation, here you can configure the settings.")) - -s = m:section(TypedSection, "shairport", "") -s.addremove = true -s.anonymous = false - -enable=s:option(Flag, "disabled", translate("Enabled")) -enable.enabled="0" -enable.disabled="1" -enable.default = "1" -enable.rmempty = false -respawn=s:option(Flag, "respawn", translate("Respawn")) -respawn.default = false - -bname = s:option(Value, "bname", translate("Airport Name")) -bname.rmempty = true - -pw = s:option(Value, "password", translate("Password")) -pw.rmempty = true -pw.password = true - -port=s:option(Value, "port", translate("Port")) -port.rmempty = true -port.datatype = "port" - -buffer=s:option(Value, "buffer", translate("Buffer fill")) -buffer.rmempty = true -buffer.datatype = "uinteger" - -log_file=s:option(Value, "log_file", translate("Log file")) -log_file.rmempty = true ---log_file.datatype = "file" - -err_file=s:option(Value, "err_file", translate("Error file")) -err_file.rmempty = true ---err_file.datatype = "file" - -meta_dir=s:option(Value, "meta_dir", translate("Metadata directory")) -meta_dir.rmempty = true -meta_dir.datatype = "directory" - -cmd_start=s:option(Value, "cmd_start", translate("Command when playback begins")) -cmd_start.rmempty = true - -cmd_stop=s:option(Value, "cmd_stop", translate("Command when playback ends")) -cmd_stop.rmempty = true - -cmd_wait=s:option(Flag, "cmd_wait", translate("Block while the commands run")) -cmd_wait.default = false - -mdns=s:option(ListValue, "mdns", translate("mDNS")) -mdns.rmempty = true -mdns:value("", translate("Default")) -mdns:value("avahi") -mdns:value("dns_sd") -mdns:value("external_avahi") -mdns:value("external_dns_sd") -mdns:value("tinysvcmdns") - -audio_output=s:option(ListValue, "audio_output", translate("Audio output")) -audio_output.rmempty = true -audio_output:value("", translate("Default")) -audio_output:value("alsa") -audio_output:value("ao") -audio_output:value("dummy") -audio_output:value("pulse") -audio_output:value("pipe") - --- alsa output -- -output_dev=s:option(Value, "output_dev", translate("Output device")) -output_dev.rmempty = true -output_dev:depends("audio_output", "alsa") - -mixer_dev=s:option(Value, "mixer_dev", translate("Mixer device")) -mixer_dev.rmempty = true -mixer_dev:depends("audio_output", "alsa") - -mixer_type=s:option(ListValue, "mixer_type", translate("Mixer type")) -mixer_type.rmempty = true -mixer_type:value("", translate("Default")) -mixer_type:value("software") -mixer_type:value("hardware") -mixer_type:depends("audio_output", "alsa") - -mixer_control=s:option(Value, "mixer_control", translate("Mixer control")) -mixer_control.rmempty = true -mixer_control:depends("audio_output", "alsa") - -mixer_index = s:option(ListValue, "mixer_index", translate("Mixer index")) -mixer_index.rmempty = true -mixer_index:depends("audio_output", "alsa") -mixer_index:value("", translate("Default")) -local pats = io.popen("find /proc/asound/ -type d -name 'card*' | sort") -if pats then - local l - while true do - l = pats:read("*l") - if not l then break end - - l = string.gsub(l, "/proc/asound/card", "") - if l then - mixer_index:value(l) - end - end - pats:close() -end - --- ao output -- -ao_driver=s:option(Value, "ao_driver", translate("AO driver")) -ao_driver.rmempty = true -ao_driver:depends("audio_output", "ao") - -ao_name=s:option(Value, "ao_name", translate("AO name")) -ao_name.rmempty = true -ao_name:depends("audio_output", "ao") - -ao_id = s:option(ListValue, "ao_id", translate("AO id")) -ao_id.rmempty = true -ao_id:depends("audio_output", "ao") -ao_id:value("", translate("Default")) -local pats = io.popen("find /proc/asound/ -type d -name 'card*' | sort") -if pats then - local l - while true do - l = pats:read("*l") - if not l then break end - - l = string.gsub(l, "/proc/asound/card", "") - if l then - ao_id:value(l) - end - end - pats:close() -end - -ao_options=s:option(Value, "ao_options", translate("AO options")) -ao_options.rmempty = true -ao_options:depends("audio_output", "ao") - --- pipe output -- -output_fifo=s:option(Value, "output_fifo", translate("Output FIFO")) -output_fifo.rmempty = true -output_fifo:depends("audio_output", "pipe") - --- pulse output -- -pulse_server=s:option(Value, "pulse_server", translate("Pulse server")) -pulse_server.rmempty = true -pulse_server:depends("audio_output", "pulse") - -pulse_sink=s:option(Value, "pulse_sink", translate("Pulse sink")) -pulse_sink.rmempty = true -pulse_sink:depends("audio_output", "pulse") - -pulse_appname=s:option(Value, "pulse_appname", translate("Pulse application name")) -pulse_appname.rmempty = true -pulse_appname:depends("audio_output", "pulse") - -return m diff --git a/package/luci/applications/luci-app-shairport/root/etc/uci-defaults/40_luci-shairport b/package/luci/applications/luci-app-shairport/root/etc/uci-defaults/40_luci-shairport deleted file mode 100644 index be9412bac8..0000000000 --- a/package/luci/applications/luci-app-shairport/root/etc/uci-defaults/40_luci-shairport +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# needed for "Save and Apply" to restart shairport -uci -q batch <<-EOF >/dev/null - delete ucitrack.@shairport[-1] - add ucitrack shairport - set ucitrack.@shairport[-1].init="shairport" - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-shellinabox/Makefile b/package/luci/applications/luci-app-shellinabox/Makefile deleted file mode 100644 index 7de7407175..0000000000 --- a/package/luci/applications/luci-app-shellinabox/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# -# Copyright (C) 2017 Robert Call -# -# You may redistribute this program and/or modify it under the terms of -# the GNU General Public License as published by the Free Software Foundation, -# either version 3 of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=luci-app-shellinabox -PKG_VERSION:=0.1 -PKG_RELEASE:=4 - -PKG_LICENSE:=GPL-3.0 - -include $(INCLUDE_DIR)/package.mk - -define Package/luci-app-shellinabox - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=3. Applications - TITLE:=Shell in a box integration - URL:= - MAINTAINER:=Robert Call - DEPENDS:=+shellinabox -endef - -define Package/luci-app-shellinabox/description - This package adds terminal integration into luci to make - router maintanance easier for those new to GNU/Linux or - don't have access to a GNU/Linux box. - -endef - -define Build/Compile -endef - -define Package/luci-app-shellinabox/install - $(INSTALL_DIR) $(1)/usr/lib/lua/luci - $(INSTALL_DIR) $(1)/www/static - $(CP) ./luasrc/* $(1)/usr/lib/lua/luci - $(CP) ./files/terminal.png $(1)/www/static/terminal.png -endef - -$(eval $(call BuildPackage,luci-app-shellinabox)) diff --git a/package/luci/applications/luci-app-shellinabox/files/terminal.png b/package/luci/applications/luci-app-shellinabox/files/terminal.png deleted file mode 100644 index db5a4ff295db9819d5e1879a2e7f16c4054f9268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13573 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 Co}f7Z diff --git a/package/luci/applications/luci-app-shellinabox/luasrc/controller/shellinabox.lua b/package/luci/applications/luci-app-shellinabox/luasrc/controller/shellinabox.lua deleted file mode 100644 index 9e3a4a0dd7..0000000000 --- a/package/luci/applications/luci-app-shellinabox/luasrc/controller/shellinabox.lua +++ /dev/null @@ -1,4 +0,0 @@ -module("luci.controller.shellinabox", package.seeall) --notice that new_tab is the name of the file new_tab.lua - function index() - entry({"admin", "system", "tab_from_view"}, template("shellinabox/view_tab"), "Terminal", 2) --this adds the second sub-tab that is located in /luci-myapplication/view/myapp-mymodule and the file is called view_tab.htm, also set to the second position -end diff --git a/package/luci/applications/luci-app-shellinabox/luasrc/model/cbi/shellinabox/cbi_tab.lua b/package/luci/applications/luci-app-shellinabox/luasrc/model/cbi/shellinabox/cbi_tab.lua deleted file mode 100644 index a8d9649fd0..0000000000 --- a/package/luci/applications/luci-app-shellinabox/luasrc/model/cbi/shellinabox/cbi_tab.lua +++ /dev/null @@ -1,4 +0,0 @@ -m = Map("cbi_file", translate("First Tab Form"), translate("Please fill out the form below")) -- cbi_file is the config file in /etc/config -d = m:section(TypedSection, "info", "Part A of the form") -- info is the section called info in cbi_file -a = d:option(Value, "name", "Name"); a.optional=false; a.rmempty = false; -- name is the option in the cbi_file -return m diff --git a/package/luci/applications/luci-app-shellinabox/luasrc/view/shellinabox/view_tab.htm b/package/luci/applications/luci-app-shellinabox/luasrc/view/shellinabox/view_tab.htm deleted file mode 100644 index 2f4d26cf31..0000000000 --- a/package/luci/applications/luci-app-shellinabox/luasrc/view/shellinabox/view_tab.htm +++ /dev/null @@ -1,3 +0,0 @@ -<%+header%> - -<%+footer%> diff --git a/package/luci/applications/luci-app-siitwizard/Makefile b/package/luci/applications/luci-app-siitwizard/Makefile deleted file mode 100644 index e8a8e555e4..0000000000 --- a/package/luci/applications/luci-app-siitwizard/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=SIIT IPv4-over-IPv6 configuration wizard -LUCI_DEPENDS:=+kmod-siit - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-siitwizard/luasrc/controller/siitwizard.lua b/package/luci/applications/luci-app-siitwizard/luasrc/controller/siitwizard.lua deleted file mode 100644 index 4d1c140b03..0000000000 --- a/package/luci/applications/luci-app-siitwizard/luasrc/controller/siitwizard.lua +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module "luci.controller.siitwizard" - -function index() - entry({"admin", "network", "siitwizard"}, form("siitwizard"), "SIIT 4over6 assistent", 99) -end diff --git a/package/luci/applications/luci-app-siitwizard/luasrc/model/cbi/siitwizard.lua b/package/luci/applications/luci-app-siitwizard/luasrc/model/cbi/siitwizard.lua deleted file mode 100644 index 0d738326a0..0000000000 --- a/package/luci/applications/luci-app-siitwizard/luasrc/model/cbi/siitwizard.lua +++ /dev/null @@ -1,373 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local uci = require "luci.model.uci".cursor() -local bit = require "nixio".bit -local ip = require "luci.ip" - --------------------- Init -------------------- - --- --- Find link-local address --- -function find_ll() - local _, r - for _, r in ipairs(ip.routes({ family = 6, dest = "fe80::/64" })) do - if r.dest:higher("fe80:0:0:0:ff:fe00:0:0") then - return (r.dest - "fe80::") - end - end - return ip.IPv6("::") -end - --- --- Determine defaults --- -local ula_prefix = uci:get("siit", "ipv6", "ula_prefix") or "fd00::" -local ula_global = uci:get("siit", "ipv6", "ula_global") or "00ca:ffee:babe::" -- = Freifunk -local ula_subnet = uci:get("siit", "ipv6", "ula_subnet") or "0000:0000:0000:4223::" -- = Berlin -local siit_prefix = uci:get("siit", "ipv6", "siit_prefix") or "::ffff:0000:0000" -local ipv4_pool = uci:get("siit", "ipv4", "pool") or "172.16.0.0/12" -local ipv4_netsz = uci:get("siit", "ipv4", "netsize") or "24" - --- --- Find IPv4 allocation pool --- -local gv4_net = ip.IPv4(ipv4_pool) - --- --- Generate ULA --- -local ula = ip.IPv6("::/64") - -for _, prefix in ipairs({ ula_prefix, ula_global, ula_subnet }) do - ula = ula:add(ip.IPv6(prefix)) -end - -ula = ula:add(find_ll()) - - --------------------- View -------------------- -f = SimpleForm("siitwizward", "SIIT-Wizzard", - "This wizzard helps to setup SIIT (IPv4-over-IPv6) translation according to RFC2765.") - -f:field(DummyValue, "info_ula", "Mesh ULA address").value = ula:string() - -f:field(DummyValue, "ipv4_pool", "IPv4 allocation pool").value = - "%s (%i hosts)" %{ gv4_net:string(), 2 ^ ( 32 - gv4_net:prefix() ) - 2 } - -f:field(DummyValue, "ipv4_size", "IPv4 LAN network prefix").value = - "%i bit (%i hosts)" %{ ipv4_netsz, 2 ^ ( 32 - ipv4_netsz ) - 2 } - -mode = f:field(ListValue, "mode", "Operation mode") -mode:value("client", "Client") -mode:value("gateway", "Gateway") - -dev = f:field(ListValue, "device", "Wireless device") -uci:foreach("wireless", "wifi-device", - function(section) - dev:value(section[".name"]) - end) - -lanip = f:field(Value, "ipaddr", "LAN IPv4 subnet") -function lanip.formvalue(self, section) - local val = self.map:formvalue(self:cbid(section)) - local net = ip.IPv4("%s/%i" %{ val, ipv4_netsz }) - - if net then - if gv4_net:contains(net) then - if not net:minhost():equal(net:host()) then - self.error = { [section] = true } - f.errmessage = "IPv4 address is not the first host of " .. - "subnet, expected " .. net:minhost():string() - end - else - self.error = { [section] = true } - f.errmessage = "IPv4 address is not within the allocation pool" - end - else - self.error = { [section] = true } - f.errmessage = "Invalid IPv4 address given" - end - - return val -end - -dns = f:field(Value, "dns", "DNS server for LAN clients") -dns.value = "141.1.1.1" - --------------------- Control -------------------- -function f.handle(self, state, data) - if state == FORM_VALID then - luci.http.redirect(luci.dispatcher.build_url("admin", "uci", "changes")) - return false - end - return true -end - -function mode.write(self, section, value) - - -- - -- Find LAN IPv4 range - -- - local lan_net = ip.IPv4( - ( lanip:formvalue(section) or "172.16.0.1" ) .. "/" .. ipv4_netsz - ) - - if not lan_net then return end - - -- - -- Find wifi interface, dns server and hostname - -- - local device = dev:formvalue(section) - local dns_server = dns:formvalue(section) or "141.1.1.1" - local hostname = "siit-" .. lan_net:host():string():gsub("%.","-") - - -- - -- Configure wifi device - -- - local wifi_device = dev:formvalue(section) - local wifi_essid = uci:get("siit", "wifi", "essid") or "6mesh.freifunk.net" - local wifi_bssid = uci:get("siit", "wifi", "bssid") or "02:ca:ff:ee:ba:be" - local wifi_channel = uci:get("siit", "wifi", "channel") or "1" - - -- nuke old device definition - uci:delete_all("wireless", "wifi-iface", - function(s) return s.device == wifi_device end ) - - uci:delete_all("network", "interface", - function(s) return s['.name'] == wifi_device end ) - - -- create wifi device definition - uci:tset("wireless", wifi_device, { - disabled = 0, - channel = wifi_channel, --- txantenna = 1, --- rxantenna = 1, --- diversity = 0 - }) - - uci:section("wireless", "wifi-iface", nil, { - encryption = "none", - mode = "adhoc", - txpower = 10, - sw_merge = 1, - network = wifi_device, - device = wifi_device, - ssid = wifi_essid, - bssid = wifi_bssid, - }) - - -- - -- Gateway mode - -- - -- * wan port is dhcp, lan port is 172.23.1.1/24 - -- * siit0 gets a dummy address: 169.254.42.42 - -- * wl0 gets an ipv6 address, in this case the fdca:ffee:babe::1:1/64 - -- * we do a ::ffff:ffff:0/96 route into siit0, so everything from 6mesh goes into translation. - -- * an HNA6 of ::ffff:ffff:0:0/96 announces the mapped 0.0.0.0/0 ipv4 space. - -- * MTU on WAN, LAN down to 1400, ipv6 headers are slighly larger. - - if value == "gateway" then - - -- wan mtu - uci:set("network", "wan", "mtu", 1240) - - -- lan settings - uci:tset("network", "lan", { - mtu = 1240, - ipaddr = lan_net:host():string(), - netmask = lan_net:mask():string(), - proto = "static" - }) - - -- use full siit subnet - siit_route = ip.IPv6(siit_prefix .. "/96") - - -- v4 <-> siit route - uci:delete_all("network", "route", - function(s) return s.interface == "siit0" end) - - uci:section("network", "route", nil, { - interface = "siit0", - target = gv4_net:network():string(), - netmask = gv4_net:mask():string() - }) - - -- - -- Client mode - -- - -- * 172.23.2.1/24 on its lan, fdca:ffee:babe::1:2 on wl0 and the usual dummy address on siit0. - -- * we do a ::ffff:ffff:172.13.2.0/120 to siit0, because in this case, only traffic directed to clients needs to go into translation. - -- * same route as HNA6 announcement to catch the traffic out of the mesh. - -- * Also, MTU on LAN reduced to 1400. - - else - - -- lan settings - uci:tset("network", "lan", { - mtu = 1240, - ipaddr = lan_net:host():string(), - netmask = lan_net:mask():string() - }) - - -- derive siit subnet from lan config - siit_route = ip.IPv6( - siit_prefix .. "/" .. (96 + lan_net:prefix()) - ):add(lan_net[2]) - - -- ipv4 <-> siit route - uci:delete_all("network", "route", - function(s) return s.interface == "siit0" end) - - -- XXX: kind of a catch all, gv4_net would be better - -- but does not cover non-local v4 space - uci:section("network", "route", nil, { - interface = "siit0", - target = "0.0.0.0", - netmask = "0.0.0.0" - }) - end - - -- setup the firewall - uci:delete_all("firewall", "zone", - function(s) return ( - s['.name'] == "siit0" or s.name == "siit0" or - s.network == "siit0" or s['.name'] == wifi_device or - s.name == wifi_device or s.network == wifi_device - ) end) - - uci:delete_all("firewall", "forwarding", - function(s) return ( - s.src == wifi_device and s.dest == "siit0" or - s.dest == wifi_device and s.src == "siit0" or - s.src == "lan" and s.dest == "siit0" or - s.dest == "lan" and s.src == "siit0" - ) end) - - uci:section("firewall", "zone", "siit0", { - name = "siit0", - network = "siit0", - input = "ACCEPT", - output = "ACCEPT", - forward = "ACCEPT" - }) - - uci:section("firewall", "zone", wifi_device, { - name = wifi_device, - network = wifi_device, - input = "ACCEPT", - output = "ACCEPT", - forward = "ACCEPT" - }) - - uci:section("firewall", "forwarding", nil, { - src = wifi_device, - dest = "siit0" - }) - - uci:section("firewall", "forwarding", nil, { - src = "siit0", - dest = wifi_device - }) - - uci:section("firewall", "forwarding", nil, { - src = "lan", - dest = "siit0" - }) - - uci:section("firewall", "forwarding", nil, { - src = "siit0", - dest = "lan" - }) - - -- firewall include - uci:delete_all("firewall", "include", - function(s) return s.path == "/etc/firewall.user" end) - - uci:section("firewall", "include", nil, { - path = "/etc/firewall.user" - }) - - - -- siit0 interface - uci:delete_all("network", "interface", - function(s) return ( s.ifname == "siit0" ) end) - - uci:section("network", "interface", "siit0", { - ifname = "siit0", - proto = "none" - }) - - -- siit0 route - uci:delete_all("network", "route6", - function(s) return siit_route:contains(ip.IPv6(s.target)) end) - - uci:section("network", "route6", nil, { - interface = "siit0", - target = siit_route:string() - }) - - -- create wifi network interface - uci:section("network", "interface", wifi_device, { - proto = "static", - mtu = 1400, - ip6addr = ula:string() - }) - - -- nuke old olsrd interfaces - uci:delete_all("olsrd", "Interface", - function(s) return s.interface == wifi_device end) - - -- configure olsrd interface - uci:foreach("olsrd", "olsrd", - function(s) uci:set("olsrd", s['.name'], "IpVersion", 6) end) - - uci:section("olsrd", "Interface", nil, { - ignore = 0, - interface = wifi_device, - Ip6AddrType = "unique-local" - }) - - -- hna6 - uci:delete_all("olsrd", "Hna6", - function(s) return true end) - - uci:section("olsrd", "Hna6", nil, { - netaddr = siit_route:host():string(), - prefix = siit_route:prefix() - }) - - -- txtinfo v6 & olsrd nameservice - uci:foreach("olsrd", "LoadPlugin", - function(s) - if s.library == "olsrd_txtinfo.so.0.1" then - uci:set("olsrd", s['.name'], "accept", "::1") - elseif s.library == "olsrd_nameservice.so.0.3" then - uci:set("olsrd", s['.name'], "name", hostname) - end - end) - - -- lan dns - uci:tset("dhcp", "lan", { - dhcp_option = "6," .. dns_server, - start = bit.band(lan_net:minhost():add(1)[2][2], 0xFF), - limit = ( 2 ^ ( 32 - lan_net:prefix() ) ) - 3 - }) - - -- hostname - uci:foreach("system", "system", - function(s) - uci:set("system", s['.name'], "hostname", hostname) - end) - - uci:save("wireless") - uci:save("firewall") - uci:save("network") - uci:save("system") - uci:save("olsrd") - uci:save("dhcp") -end - -return f diff --git a/package/luci/applications/luci-app-siitwizard/root/etc/config/siit b/package/luci/applications/luci-app-siitwizard/root/etc/config/siit deleted file mode 100644 index c594547d93..0000000000 --- a/package/luci/applications/luci-app-siitwizard/root/etc/config/siit +++ /dev/null @@ -1,14 +0,0 @@ -config siit ipv4 - option pool "77.87.52.0/22" - option netsize "29" - -config siit ipv6 - option ula_prefix "fd00::" - option ula_global "00ca:ffee:babe::" - option ula_subnet "0000:0000:0000:dada::" - option siit_prefix "::ffff:0000:0000" - -config siit wifi - option essid "6mesh.freifunk.net" - option bssid "02:25:c3:ca:ff:ee" - option channel "1" diff --git a/package/luci/applications/luci-app-simple-adblock/Makefile b/package/luci/applications/luci-app-simple-adblock/Makefile deleted file mode 100644 index d7be6850ba..0000000000 --- a/package/luci/applications/luci-app-simple-adblock/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2017 Stan Grishin (stangri@melmac.net) -# This is free software, licensed under the GNU General Public License v3. - -include $(TOPDIR)/rules.mk - -PKG_LICENSE:=GPL-3.0+ -PKG_MAINTAINER:=Stan Grishin - -LUCI_TITLE:=Simple Adblock Web UI -LUCI_DEPENDS:=+simple-adblock -LUCI_PKGARCH:=all -PKG_RELEASE:=2 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua b/package/luci/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua deleted file mode 100644 index 46125b3098..0000000000 --- a/package/luci/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua +++ /dev/null @@ -1,7 +0,0 @@ -module("luci.controller.simpleadblock", package.seeall) -function index() - if not nixio.fs.access("/etc/config/simple-adblock") then - return - end - entry({"admin", "services", "simpleadblock"}, cbi("simpleadblock"), _("Simple AdBlock")) -end diff --git a/package/luci/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua b/package/luci/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua deleted file mode 100644 index 214f298292..0000000000 --- a/package/luci/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua +++ /dev/null @@ -1,79 +0,0 @@ -m = Map("simple-adblock", translate("Simple AdBlock Settings")) -s = m:section(NamedSection, "config", "simple-adblock") - --- General options -e = s:option(Flag, "enabled", translate("Enable/start service")) -e.rmempty = false - -function e.cfgvalue(self, section) - return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("simple-adblock") and self.enabled or self.disabled -end - -function e.write(self, section, value) - if value == "1" then - luci.sys.call("/etc/init.d/simple-adblock enable >/dev/null") - luci.sys.call("/etc/init.d/simple-adblock start >/dev/null") - else - luci.sys.call("/etc/init.d/simple-adblock stop >/dev/null") - end - return Flag.write(self, section, value) -end - -o2 = s:option(ListValue, "verbosity", translate("Output Verbosity Setting"),translate("Controls system log and console output verbosity")) -o2:value("0", translate("Suppress output")) -o2:value("1", translate("Some output")) -o2:value("2", translate("Verbose output")) -o2.rmempty = false -o2.default = 2 - -o3 = s:option(ListValue, "force_dns", translate("Force Router DNS"), translate("Forces Router DNS use on local devices, also known as DNS Hijacking")) -o3:value("0", translate("Let local devices use their own DNS servers if set")) -o3:value("1", translate("Force Router DNS server to all local devices")) -o3.rmempty = false -o3.default = 1 - - -local sysfs_path = "/sys/class/leds/" -local leds = {} -if nixio.fs.access(sysfs_path) then - leds = nixio.util.consume((nixio.fs.dir(sysfs_path))) -end -if #leds ~= 0 then - o3 = s:option(Value, "led", translate("LED to indicate status"), translate("Pick the LED not already used in ") - .. [[]] - .. translate("System LED Configuration") .. [[]]) - o3.rmempty = true - o3:value("", translate("none")) - for k, v in ipairs(leds) do - o3:value(v) - end -end - - -s2 = m:section(NamedSection, "config", "simple-adblock") --- Whitelisted Domains -d1 = s2:option(DynamicList, "whitelist_domain", translate("Whitelisted Domains"), translate("Individual domains to be whitelisted")) -d1.addremove = false -d1.optional = false - --- Blacklisted Domains -d3 = s2:option(DynamicList, "blacklist_domain", translate("Blacklisted Domains"), translate("Individual domains to be blacklisted")) -d3.addremove = false -d3.optional = false - --- Whitelisted Domains URLs -d2 = s2:option(DynamicList, "whitelist_domains_url", translate("Whitelisted Domain URLs"), translate("URLs to lists of domains to be whitelisted")) -d2.addremove = false -d2.optional = false - --- Blacklisted Domains URLs -d4 = s2:option(DynamicList, "blacklist_domains_url", translate("Blacklisted Domain URLs"), translate("URLs to lists of domains to be blacklisted")) -d4.addremove = false -d4.optional = false - --- Blacklisted Hosts URLs -d5 = s2:option(DynamicList, "blacklist_hosts_url", translate("Blacklisted Hosts URLs"), translate("URLs to lists of hosts to be blacklisted")) -d5.addremove = false -d5.optional = false - -return m diff --git a/package/luci/applications/luci-app-simple-adblock/po/ja/simple-adblock.po b/package/luci/applications/luci-app-simple-adblock/po/ja/simple-adblock.po deleted file mode 100644 index 7926595b6e..0000000000 --- a/package/luci/applications/luci-app-simple-adblock/po/ja/simple-adblock.po +++ /dev/null @@ -1,93 +0,0 @@ -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.12\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: ja\n" - -msgid "Blacklisted Domain URLs" -msgstr "ドメイン ブラックリストのURL" - -msgid "Blacklisted Domains" -msgstr "ブラックリスト ドメイン" - -msgid "Blacklisted Hosts URLs" -msgstr "hosts ブラックリストのURL" - -msgid "Controls system log and console output verbosity" -msgstr "システム ログとコンソール出力の冗長性を設定します。" - -msgid "Enable/start service" -msgstr "サービスの有効化/開始" - -msgid "Force Router DNS" -msgstr "ルーターDNSの強制" - -msgid "Force Router DNS server to all local devices" -msgstr "全ローカル デバイスにルーター DNSサーバーの使用を強制" - -msgid "Forces Router DNS use on local devices, also known as DNS Hijacking" -msgstr "" -"ローカル デバイスに対し、ルーター上のDNSサーバーの使用を強制します。これは、" -"DNS ハイジャックとしても知られています。" - -msgid "Individual domains to be blacklisted" -msgstr "ブラックリストに登録する、個々のドメインです。" - -msgid "Individual domains to be whitelisted" -msgstr "ホワイトリストに登録する、個々のドメインです。" - -msgid "LED to indicate status" -msgstr "ステータスを表示するLED" - -msgid "Let local devices use their own DNS servers if set" -msgstr "DNSサーバーの使用を強制しない" - -msgid "Output Verbosity Setting" -msgstr "出力詳細度の設定" - -msgid "Pick the LED not already used in" -msgstr "右の設定で既に使用されていないLEDを選択します:" - -msgid "Simple AdBlock" -msgstr "Simple AdBlock" - -msgid "Simple AdBlock Settings" -msgstr "Simple AdBlock 設定" - -msgid "Some output" -msgstr "軽量出力" - -msgid "Suppress output" -msgstr "出力の抑制" - -msgid "System LED Configuration" -msgstr "LED 設定" - -msgid "URLs to lists of domains to be blacklisted" -msgstr "ブラックリストに登録するドメインのリストのURLです。" - -msgid "URLs to lists of domains to be whitelisted" -msgstr "ホワイトリストに登録するドメインのリストのURLです。" - -msgid "URLs to lists of hosts to be blacklisted" -msgstr "ブラックリストに登録するドメインが列挙された、hostsファイルのURLです。" - -msgid "Verbose output" -msgstr "詳細出力" - -msgid "Whitelisted Domain URLs" -msgstr "ドメイン ホワイトリストのURL" - -msgid "Whitelisted Domains" -msgstr "ホワイトリスト ドメイン" - -msgid "none" -msgstr "なし" diff --git a/package/luci/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po b/package/luci/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po deleted file mode 100644 index 6dbbf8b844..0000000000 --- a/package/luci/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po +++ /dev/null @@ -1,86 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Blacklisted Domain URLs" -msgstr "Endereço com lista de Domínio para a Lista Negra" - -msgid "Blacklisted Domains" -msgstr "Domínios para a Lista Negra" - -msgid "Blacklisted Hosts URLs" -msgstr "Endereços de Hosts para a Lista Negra" - -msgid "Controls system log and console output verbosity" -msgstr "" -"Controla o sistema de registro e o detalhamento das mensagens de saída do " -"console" - -msgid "Enable/start service" -msgstr "Habilitar/Iniciar o serviço" - -msgid "Force Router DNS" -msgstr "Forçar o DNS do Roteador" - -msgid "Force Router DNS server to all local devices" -msgstr "Forçar o servidor de DNS do Roteador para todos os dispositivos locais" - -msgid "Forces Router DNS use on local devices, also known as DNS Hijacking" -msgstr "" -"Forçar o uso do DNS do Roteador nos dispositivos locais, também conhecido " -"como redirecionamento de DNS" - -msgid "Individual domains to be blacklisted" -msgstr "Domínios individuais para serem incluídos na Lista Negra" - -msgid "Individual domains to be whitelisted" -msgstr "Domínios individuais para serem incluídos na Lista Branca" - -msgid "LED to indicate status" -msgstr "LED para indicar o estado" - -msgid "Let local devices use their own DNS servers if set" -msgstr "" -"Deixe que os dispositivos locais usem seus próprios servidores de DNS, se " -"definidos" - -msgid "Output Verbosity Setting" -msgstr "Definição do detalhamento do registro" - -msgid "Pick the LED not already used in" -msgstr "Escolha um LED não usando em" - -msgid "Simple AdBlock" -msgstr "Simple AdBlock" - -msgid "Simple AdBlock Settings" -msgstr "Configuração do Simple AdBlock" - -msgid "Some output" -msgstr "Pouco detalhado" - -msgid "Suppress output" -msgstr "Suprimir" - -msgid "System LED Configuration" -msgstr "Configuração do LED" - -msgid "URLs to lists of domains to be blacklisted" -msgstr "Endereço da lista dos domínios para a Lista Negra" - -msgid "URLs to lists of domains to be whitelisted" -msgstr "Endereço da lista dos domínios para a Lista Branca" - -msgid "URLs to lists of hosts to be blacklisted" -msgstr "Endereço da lista dos hosts para a Lista Negra" - -msgid "Verbose output" -msgstr "Detalhado" - -msgid "Whitelisted Domain URLs" -msgstr "Endereço com lista de domínio para a Lista Branca" - -msgid "Whitelisted Domains" -msgstr "Domínios para a Lista Branca" - -msgid "none" -msgstr "Nenhum" diff --git a/package/luci/applications/luci-app-simple-adblock/po/pt/simple-adblock.po b/package/luci/applications/luci-app-simple-adblock/po/pt/simple-adblock.po deleted file mode 100644 index 6dbbf8b844..0000000000 --- a/package/luci/applications/luci-app-simple-adblock/po/pt/simple-adblock.po +++ /dev/null @@ -1,86 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Blacklisted Domain URLs" -msgstr "Endereço com lista de Domínio para a Lista Negra" - -msgid "Blacklisted Domains" -msgstr "Domínios para a Lista Negra" - -msgid "Blacklisted Hosts URLs" -msgstr "Endereços de Hosts para a Lista Negra" - -msgid "Controls system log and console output verbosity" -msgstr "" -"Controla o sistema de registro e o detalhamento das mensagens de saída do " -"console" - -msgid "Enable/start service" -msgstr "Habilitar/Iniciar o serviço" - -msgid "Force Router DNS" -msgstr "Forçar o DNS do Roteador" - -msgid "Force Router DNS server to all local devices" -msgstr "Forçar o servidor de DNS do Roteador para todos os dispositivos locais" - -msgid "Forces Router DNS use on local devices, also known as DNS Hijacking" -msgstr "" -"Forçar o uso do DNS do Roteador nos dispositivos locais, também conhecido " -"como redirecionamento de DNS" - -msgid "Individual domains to be blacklisted" -msgstr "Domínios individuais para serem incluídos na Lista Negra" - -msgid "Individual domains to be whitelisted" -msgstr "Domínios individuais para serem incluídos na Lista Branca" - -msgid "LED to indicate status" -msgstr "LED para indicar o estado" - -msgid "Let local devices use their own DNS servers if set" -msgstr "" -"Deixe que os dispositivos locais usem seus próprios servidores de DNS, se " -"definidos" - -msgid "Output Verbosity Setting" -msgstr "Definição do detalhamento do registro" - -msgid "Pick the LED not already used in" -msgstr "Escolha um LED não usando em" - -msgid "Simple AdBlock" -msgstr "Simple AdBlock" - -msgid "Simple AdBlock Settings" -msgstr "Configuração do Simple AdBlock" - -msgid "Some output" -msgstr "Pouco detalhado" - -msgid "Suppress output" -msgstr "Suprimir" - -msgid "System LED Configuration" -msgstr "Configuração do LED" - -msgid "URLs to lists of domains to be blacklisted" -msgstr "Endereço da lista dos domínios para a Lista Negra" - -msgid "URLs to lists of domains to be whitelisted" -msgstr "Endereço da lista dos domínios para a Lista Branca" - -msgid "URLs to lists of hosts to be blacklisted" -msgstr "Endereço da lista dos hosts para a Lista Negra" - -msgid "Verbose output" -msgstr "Detalhado" - -msgid "Whitelisted Domain URLs" -msgstr "Endereço com lista de domínio para a Lista Branca" - -msgid "Whitelisted Domains" -msgstr "Domínios para a Lista Branca" - -msgid "none" -msgstr "Nenhum" diff --git a/package/luci/applications/luci-app-simple-adblock/po/sv/simple-adblock.po b/package/luci/applications/luci-app-simple-adblock/po/sv/simple-adblock.po deleted file mode 100644 index e95f95f02b..0000000000 --- a/package/luci/applications/luci-app-simple-adblock/po/sv/simple-adblock.po +++ /dev/null @@ -1,80 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Blacklisted Domain URLs" -msgstr "Svartlistade domänadresser" - -msgid "Blacklisted Domains" -msgstr "Svartlistade domäner" - -msgid "Blacklisted Hosts URLs" -msgstr "Svartlistade värdadresser" - -msgid "Controls system log and console output verbosity" -msgstr "Kontrollerar systemloggar och detaljnivån för konsoll-utmatningen" - -msgid "Enable/start service" -msgstr "Aktivera/starta tjänsten" - -msgid "Force Router DNS" -msgstr "" - -msgid "Force Router DNS server to all local devices" -msgstr "" - -msgid "Forces Router DNS use on local devices, also known as DNS Hijacking" -msgstr "" - -msgid "Individual domains to be blacklisted" -msgstr "Individuella domäner som ska svartlistas" - -msgid "Individual domains to be whitelisted" -msgstr "Individulla domäner som ska svartlistas" - -msgid "LED to indicate status" -msgstr "LED för att indikera status" - -msgid "Let local devices use their own DNS servers if set" -msgstr "" - -msgid "Output Verbosity Setting" -msgstr "" - -msgid "Pick the LED not already used in" -msgstr "" - -msgid "Simple AdBlock" -msgstr "Simple AdBlock" - -msgid "Simple AdBlock Settings" -msgstr "Inställningar för Simple AdBlock" - -msgid "Some output" -msgstr "Viss utmatning" - -msgid "Suppress output" -msgstr "Förträng utmatning" - -msgid "System LED Configuration" -msgstr "" - -msgid "URLs to lists of domains to be blacklisted" -msgstr "" - -msgid "URLs to lists of domains to be whitelisted" -msgstr "" - -msgid "URLs to lists of hosts to be blacklisted" -msgstr "" - -msgid "Verbose output" -msgstr "Utförlig utmatning" - -msgid "Whitelisted Domain URLs" -msgstr "Vitlistade domänadresser" - -msgid "Whitelisted Domains" -msgstr "Vitlistade domäner" - -msgid "none" -msgstr "ingen" diff --git a/package/luci/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot b/package/luci/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot deleted file mode 100644 index 4cfff964a3..0000000000 --- a/package/luci/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot +++ /dev/null @@ -1,80 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Blacklisted Domain URLs" -msgstr "" - -msgid "Blacklisted Domains" -msgstr "" - -msgid "Blacklisted Hosts URLs" -msgstr "" - -msgid "Controls system log and console output verbosity" -msgstr "" - -msgid "Enable/start service" -msgstr "" - -msgid "Force Router DNS" -msgstr "" - -msgid "Force Router DNS server to all local devices" -msgstr "" - -msgid "Forces Router DNS use on local devices, also known as DNS Hijacking" -msgstr "" - -msgid "Individual domains to be blacklisted" -msgstr "" - -msgid "Individual domains to be whitelisted" -msgstr "" - -msgid "LED to indicate status" -msgstr "" - -msgid "Let local devices use their own DNS servers if set" -msgstr "" - -msgid "Output Verbosity Setting" -msgstr "" - -msgid "Pick the LED not already used in" -msgstr "" - -msgid "Simple AdBlock" -msgstr "" - -msgid "Simple AdBlock Settings" -msgstr "" - -msgid "Some output" -msgstr "" - -msgid "Suppress output" -msgstr "" - -msgid "System LED Configuration" -msgstr "" - -msgid "URLs to lists of domains to be blacklisted" -msgstr "" - -msgid "URLs to lists of domains to be whitelisted" -msgstr "" - -msgid "URLs to lists of hosts to be blacklisted" -msgstr "" - -msgid "Verbose output" -msgstr "" - -msgid "Whitelisted Domain URLs" -msgstr "" - -msgid "Whitelisted Domains" -msgstr "" - -msgid "none" -msgstr "" diff --git a/package/luci/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock b/package/luci/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock deleted file mode 100644 index 3b7137e026..0000000000 --- a/package/luci/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -uci -q batch <<-EOF >/dev/null - delete ucitrack.@simple-adblock[-1] - add ucitrack simple-adblock - set ucitrack.@simple-adblock[-1].init=simple-adblock - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-splash/Makefile b/package/luci/applications/luci-app-splash/Makefile deleted file mode 100644 index 5740aa5f7c..0000000000 --- a/package/luci/applications/luci-app-splash/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Freifunk DHCP-Splash application -LUCI_DEPENDS:=+luci-lib-nixio +tc +kmod-sched +iptables-mod-nat-extra +iptables-mod-ipopt - -define Package/luci-app-splash/conffiles -/etc/config/luci_splash -/usr/lib/luci-splash/splashtext.html -/usr/lib/luci-splash/splashtextinclude.html -endef - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-splash/README b/package/luci/applications/luci-app-splash/README deleted file mode 100644 index 5a7af14c24..0000000000 --- a/package/luci/applications/luci-app-splash/README +++ /dev/null @@ -1,5 +0,0 @@ - -* IPv6 support is only partial: - - will only work when used together with IPv4 (Dual stack) - - No bandwidth limiting - diff --git a/package/luci/applications/luci-app-splash/htdocs/cgi-bin/splash/splash.sh b/package/luci/applications/luci-app-splash/htdocs/cgi-bin/splash/splash.sh deleted file mode 100755 index da8370dafa..0000000000 --- a/package/luci/applications/luci-app-splash/htdocs/cgi-bin/splash/splash.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/sh - -$(uci -q get luci_splash.general.redirect_url) || { - touch /var/state/luci_splash_locations - touch /etc/config/luci_splash_locations - MAC=$(grep "$REMOTE_HOST" /proc/net/arp | awk '{print $4}') - uci -P /var/state set luci_splash_locations.${MAC//:/}=redirect - uci -P /var/state set luci_splash_locations.${MAC//:/}.location="http://${HTTP_HOST}${REQUEST_URI}" -} - -echo -en "Cache-Control: no-cache, max-age=0, no-store, must-revalidate\r\n" -echo -en "Pragma: no-cache\r\n" -echo -en "Expires: -1\r\n" -echo -en "Status: 307 Temporary Redirect\r\n" -echo -en "Location: http://$SERVER_ADDR/cgi-bin/luci/splash\r\n" -echo -en "\r\n" - -cat < - - - 100 - 0 - 1.0 - 12 - $SERVER_ADDR - http://$SERVER_ADDR/cgi-bin/luci/splash?wispr=1 - http://$SERVER_ADDR/ - - -EOT - - diff --git a/package/luci/applications/luci-app-splash/htdocs/luci/splash/index.html b/package/luci/applications/luci-app-splash/htdocs/luci/splash/index.html deleted file mode 100644 index 486409a2ef..0000000000 --- a/package/luci/applications/luci-app-splash/htdocs/luci/splash/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -LuCI - Lua Configuration Interface - - diff --git a/package/luci/applications/luci-app-splash/luasrc/controller/splash/splash.lua b/package/luci/applications/luci-app-splash/luasrc/controller/splash/splash.lua deleted file mode 100644 index 13b8edce6d..0000000000 --- a/package/luci/applications/luci-app-splash/luasrc/controller/splash/splash.lua +++ /dev/null @@ -1,163 +0,0 @@ -module("luci.controller.splash.splash", package.seeall) - -local uci = luci.model.uci.cursor() -local util = require "luci.util" - -function index() - entry({"admin", "services", "splash"}, cbi("splash/splash"), _("Client-Splash"), 90) - entry({"admin", "services", "splash", "splashtext" }, form("splash/splashtext"), _("Splashtext"), 10) - - local e - - e = node("splash") - e.target = call("action_dispatch") - - node("splash", "activate").target = call("action_activate") - node("splash", "splash").target = template("splash_splash/splash") - node("splash", "blocked").target = template("splash/blocked") - - entry({"admin", "status", "splash"}, post("action_status_admin"), _("Client-Splash")) - - local page = node("splash", "publicstatus") - page.target = call("action_status_public") - page.leaf = true -end - -function ip_to_mac(ip) - local ipc = require "luci.ip" - local i, n - - for i, n in ipairs(ipc.neighbors()) do - if n.mac and n.dest and n.dest:equal(ip) then - return n.mac - end - end -end - -function action_dispatch() - local uci = luci.model.uci.cursor_state() - local mac = ip_to_mac(luci.http.getenv("REMOTE_ADDR")) or "" - local access = false - - uci:foreach("luci_splash", "lease", function(s) - if s.mac and s.mac:lower() == mac then access = true end - end) - - uci:foreach("luci_splash", "whitelist", function(s) - if s.mac and s.mac:lower() == mac then access = true end - end) - - if #mac > 0 and access then - luci.http.redirect(luci.dispatcher.build_url()) - else - luci.http.redirect(luci.dispatcher.build_url("splash", "splash")) - end -end - -function blacklist() - leased_macs = { } - uci:foreach("luci_splash", "blacklist", - function(s) leased_macs[s.mac:lower()] = true - end) - return leased_macs -end - -function action_activate() - local ipc = require "luci.ip" - local mac = ip_to_mac(luci.http.getenv("REMOTE_ADDR") or "127.0.0.1") or "" - local uci_state = require "luci.model.uci".cursor_state() - local blacklisted = false - if mac and luci.http.formvalue("accept") then - uci:foreach("luci_splash", "blacklist", - function(s) if s.mac and s.mac:lower() == mac then blacklisted = true end - end) - if blacklisted then - luci.http.redirect(luci.dispatcher.build_url("splash" ,"blocked")) - else - local redirect_url = uci:get("luci_splash", "general", "redirect_url") - if not redirect_url then - redirect_url = uci_state:get("luci_splash_locations", mac:gsub(':', ''):lower(), "location") - end - if not redirect_url then - redirect_url = luci.model.uci.cursor():get("freifunk", "community", "homepage") or 'http://www.freifunk.net' - end - remove_redirect(mac:gsub(':', ''):lower()) - os.execute("luci-splash lease "..mac.." >/dev/null 2>&1") - luci.http.redirect(redirect_url) - end - else - luci.http.redirect(luci.dispatcher.build_url()) - end -end - -function action_status_admin() - local uci = luci.model.uci.cursor_state() - local macs = luci.http.formvaluetable("save") - - local changes = { - whitelist = { }, - blacklist = { }, - lease = { }, - remove = { } - } - - for key, _ in pairs(macs) do - local policy = luci.http.formvalue("policy.%s" % key) - local mac = luci.http.protocol.urldecode(key) - - if policy == "whitelist" or policy == "blacklist" then - changes[policy][#changes[policy]+1] = mac - elseif policy == "normal" then - changes["lease"][#changes["lease"]+1] = mac - elseif policy == "kicked" then - changes["remove"][#changes["remove"]+1] = mac - end - end - - if #changes.whitelist > 0 then - os.execute("luci-splash whitelist %s >/dev/null" - % table.concat(changes.whitelist)) - end - - if #changes.blacklist > 0 then - os.execute("luci-splash blacklist %s >/dev/null" - % table.concat(changes.blacklist)) - end - - if #changes.lease > 0 then - os.execute("luci-splash lease %s >/dev/null" - % table.concat(changes.lease)) - end - - if #changes.remove > 0 then - os.execute("luci-splash remove %s >/dev/null" - % table.concat(changes.remove)) - end - - luci.template.render("admin_status/splash", { is_admin = true }) -end - -function action_status_public() - luci.template.render("admin_status/splash", { is_admin = false }) -end - -function remove_redirect(mac) - local mac = mac:lower() - mac = mac:gsub(":", "") - local uci = require "luci.model.uci".cursor_state() - local redirects = uci:get_all("luci_splash_locations") - --uci:load("luci_splash_locations") - uci:revert("luci_splash_locations") - -- For all redirects - for k, v in pairs(redirects) do - if v[".type"] == "redirect" then - if v[".name"] ~= mac then - -- Rewrite state - uci:section("luci_splash_locations", "redirect", v[".name"], { - location = v.location - }) - end - end - end - uci:save("luci_splash_redirects") -end diff --git a/package/luci/applications/luci-app-splash/luasrc/model/cbi/splash/splash.lua b/package/luci/applications/luci-app-splash/luasrc/model/cbi/splash/splash.lua deleted file mode 100644 index c09d2e0f78..0000000000 --- a/package/luci/applications/luci-app-splash/luasrc/model/cbi/splash/splash.lua +++ /dev/null @@ -1,79 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -require("luci.model.uci") - -m = Map("luci_splash", translate("Client-Splash"), translate("Client-Splash is a hotspot authentification system for wireless mesh networks.")) - -s = m:section(NamedSection, "general", "core", translate("General")) -s.addremove = false - -s:option(Value, "leasetime", translate("Clearance time"), translate("Clients that have accepted the splash are allowed to use the network for that many hours.")) -local redir = s:option(Value, "redirect_url", translate("Redirect target"), translate("Clients are redirected to this page after they have accepted the splash. If this is left empty they are redirected to the page they had requested.")) -redir.rmempty = true - -s:option(Value, "limit_up", translate("Upload limit"), translate("Clients upload speed is limited to this value (kbyte/s)")) -s:option(Value, "limit_down", translate("Download limit"), translate("Clients download speed is limited to this value (kbyte/s)")) - -s:option(DummyValue, "_tmp", "", - translate("Bandwidth limit for clients is only activated when both up- and download limit are set. " .. - "Use a value of 0 here to completely disable this limitation. Whitelisted clients are not limited.")) - -s = m:section(TypedSection, "iface", translate("Interfaces"), translate("Interfaces that are used for Splash.")) - -s.template = "cbi/tblsection" -s.addremove = true -s.anonymous = true - -local uci = luci.model.uci.cursor() - -zone = s:option(ListValue, "zone", translate("Firewall zone"), - translate("Splash rules are integrated in this firewall zone")) - -uci:foreach("firewall", "zone", - function (section) - zone:value(section.name) - end) - -iface = s:option(ListValue, "network", translate("Network"), - translate("Intercept client traffic on this Interface")) - -uci:foreach("network", "interface", - function (section) - if section[".name"] ~= "loopback" then - iface:value(section[".name"]) - end - end) - -uci:foreach("network", "alias", - function (section) - iface:value(section[".name"]) - end) - - -s = m:section(TypedSection, "whitelist", translate("Whitelist"), - translate("MAC addresses of whitelisted clients. These do not need to accept the splash and are not bandwidth limited.")) - -s.template = "cbi/tblsection" -s.addremove = true -s.anonymous = true -s:option(Value, "mac", translate ("MAC Address")) - - -s = m:section(TypedSection, "blacklist", translate("Blacklist"), - translate("MAC addresses in this list are blocked.")) - -s.template = "cbi/tblsection" -s.addremove = true -s.anonymous = true -s:option(Value, "mac", translate ("MAC Address")) - -s = m:section(TypedSection, "subnet", translate("Allowed hosts/subnets"), - translate("Destination hosts and networks that are excluded from splashing, i.e. they are always allowed.")) - -s.template = "cbi/tblsection" -s.addremove = true -s.anonymous = true -s:option(Value, "ipaddr", translate("IP Address")) -s:option(Value, "netmask", translate("Netmask"), translate("optional when using host addresses")).rmempty = true - -return m diff --git a/package/luci/applications/luci-app-splash/luasrc/model/cbi/splash/splashtext.lua b/package/luci/applications/luci-app-splash/luasrc/model/cbi/splash/splashtext.lua deleted file mode 100644 index 8ceffc8183..0000000000 --- a/package/luci/applications/luci-app-splash/luasrc/model/cbi/splash/splashtext.lua +++ /dev/null @@ -1,57 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Copyright 2010 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" - -local splashtextfile = "/usr/lib/luci-splash/splashtext.html" -local splashtextinclude = "/usr/lib/luci-splash/splashtextinclude.html" - - -f = SimpleForm("splashtext", translate("Edit the complete splash text"), - translate("You can enter your own text that is displayed to clients here.
    " .. - "It is possible to use the following markers: " .. - "###COMMUNITY###, ###COMMUNITY_URL###, ###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###.")) - -t = f:field(TextValue, "text") -t.rmempty = true -t.rows = 30 -function t.cfgvalue() - return fs.readfile(splashtextfile) or "" -end - -function f.handle(self, state, data) - if state == FORM_VALID then - if data.text then - fs.writefile(splashtextfile, data.text:gsub("\r\n", "\n")) - else - fs.unlink(splashtextfile) - end - end - return true -end - -g = SimpleForm("splashtextinclude", translate("Include your own text in the default splash"), - translate("As an alternative to editing the complete splash text you can also just include some custom text in the default splash page by entering it here.")) - -t = g:field(TextValue, "text") -t.rmempty = true -t.rows = 30 -function t.cfgvalue() - return fs.readfile(splashtextinclude) or "" -end - -function g.handle(self, state, data) - if state == FORM_VALID then - if data.text then - fs.writefile(splashtextinclude, data.text:gsub("\r\n", "\n")) - else - fs.unlink(splashtextinclude) - end - end - return true -end - - -return f, g diff --git a/package/luci/applications/luci-app-splash/luasrc/view/admin_status/splash.htm b/package/luci/applications/luci-app-splash/luasrc/view/admin_status/splash.htm deleted file mode 100644 index 3415c205d5..0000000000 --- a/package/luci/applications/luci-app-splash/luasrc/view/admin_status/splash.htm +++ /dev/null @@ -1,288 +0,0 @@ -<%# - Copyright 2009 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - -local utl = require "luci.util" -local ipt = require "luci.sys.iptparser".IptParser() -local uci = require "luci.model.uci".cursor_state() -local wat = require "luci.tools.webadmin" -local ipc = require "luci.ip" -local fs = require "nixio.fs" - -local clients = { } -local leasetime = tonumber(uci:get("luci_splash", "general", "leasetime") or 1) * 60 * 60 -local leasefile = "/tmp/dhcp.leases" - -uci:foreach("dhcp", "dnsmasq", - function(s) - if s.leasefile then leasefile = s.leasefile end - end) - - -uci:foreach("luci_splash_leases", "lease", - function(s) - if s.start and s.mac then - clients[s.mac:lower()] = { - start = tonumber(s.start), - limit = ( tonumber(s.start) + leasetime ), - mac = s.mac:upper(), - ipaddr = s.ipaddr, - policy = "normal", - packets = 0, - bytes = 0, - } - end - end) - -for _, r in ipairs(ipt:find({table="nat", chain="luci_splash_leases"})) do - if r.options and #r.options >= 2 and r.options[1] == "MAC" then - if not clients[r.options[2]:lower()] then - clients[r.options[2]:lower()] = { - start = 0, - limit = 0, - mac = r.options[2]:upper(), - policy = ( r.target == "RETURN" ) and "whitelist" or "blacklist", - packets = 0, - bytes = 0 - } - end - end -end - -for mac, client in pairs(clients) do - client.bytes_in = 0 - client.bytes_out = 0 - client.packets_in = 0 - client.packets_out = 0 - - if client.ipaddr then - local rin = ipt:find({table="mangle", chain="luci_splash_mark_in", destination=client.ipaddr}) - local rout = ipt:find({table="mangle", chain="luci_splash_mark_out", options={"MAC", client.mac:upper()}}) - - if rin and #rin > 0 then - client.bytes_in = rin[1].bytes - client.packets_in = rin[1].packets - end - - if rout and #rout > 0 then - client.bytes_out = rout[1].bytes - client.packets_out = rout[1].packets - end - end -end - -uci:foreach("luci_splash", "whitelist", - function(s) - if s.mac and clients[s.mac:lower()] then - clients[s.mac:lower()].policy="whitelist" - end - end) - -uci:foreach("luci_splash", "blacklist", - function(s) - if s.mac and clients[s.mac:lower()] then - clients[s.mac:lower()].policy=(s.kicked and "kicked" or "blacklist") - end - end) - -if fs.access(leasefile) then - for l in io.lines(leasefile) do - local time, mac, ip, name = l:match("^(%d+) (%S+) (%S+) (%S+)") - if time and mac and ip then - local c = clients[mac:lower()] - if c then - c.ip = ip - c.hostname = ( name ~= "*" ) and name or nil - end - end - end -end - -for i, n in ipairs(ipc.neighbors({ family = 4 })) do - if n.mac and n.dest then - local c = clients[n.mac] - if c and not c.ip then - c.ip = n.dest:string() - end - end -end - -local function showmac(mac) - if not is_admin then - mac = mac:gsub("(%S%S:%S%S):%S%S:%S%S:(%S%S:%S%S)", "%1:XX:XX:%2") - end - return mac -end - -if luci.http.formvalue("status") == "1" then - local rv = {} - for _, c in utl.spairs(clients, - function(a,b) if clients[a].policy == clients[b].policy then - return (clients[a].start > clients[b].start) - else - return (clients[a].policy > clients[b].policy) - end - end) - do - if c.ip then - rv[#rv+1] = { - hostname = c.hostname or "?", - ip = c.ip or "?", - mac = showmac(c.mac) or "?", - timeleft = (c.limit >= os.time()) and wat.date_format(c.limit-os.time()) or (c.policy ~= "normal") and "-" or "expired", - trafficin = wat.byte_format(c.bytes_in) or "?", - trafficout = wat.byte_format(c.bytes_out) or "?", - policy = c.policy or "?" - } - end - end - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return -end --%> - - - -<%+header%> - - - - - -
    -

    <%:Client-Splash%>

    -
    - <%:Active Clients%> -
    - <% if is_admin then %>
    <% end %> - - - - - - - - - - - - - - <%- - local count = 0 - for _, c in utl.spairs(clients, - function(a,b) - if clients[a].policy == clients[b].policy then - return (clients[a].start > clients[b].start) - else - return (clients[a].policy > clients[b].policy) - end - end) - do - if c.ip then - count = count + 1 - -%> - - - - - - - - - <%- - end - end - if count == 0 then - -%> - - - - <%- end -%> - -
    <%:Hostname%><%:IP Address%><%:MAC Address%><%:Time remaining%><%:Traffic in/out%><%:Policy%>
    <%=c.hostname or "" .. translate("unknown") .. ""%><%=c.ip or "" .. translate("unknown") .. ""%><%=showmac(c.mac)%><%= - (c.limit >= os.time()) and wat.date_format(c.limit-os.time()) or - (c.policy ~= "normal") and "-" or "" .. translate("expired") .. "" - %><%=wat.byte_format(c.bytes_in)%> / <%=wat.byte_format(c.bytes_out)%> - <% if is_admin then %> - - - <% else %> - <%=c.policy%> - <% end %> -
    -
    <%:No clients connected%>
    -
    - <% if is_admin then %>
    <% end %> -
    -
    -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-splash/luasrc/view/splash/blocked.htm b/package/luci/applications/luci-app-splash/luasrc/view/splash/blocked.htm deleted file mode 100644 index c27e2fab6e..0000000000 --- a/package/luci/applications/luci-app-splash/luasrc/view/splash/blocked.htm +++ /dev/null @@ -1,20 +0,0 @@ -<%# - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% -local contacturl = luci.dispatcher.build_url("freifunk", "contact") -%> - -<%+header%> - -

    <%:Blocked%>

    - -

    <%:Your access to this network has been blocked, most likely because you did something that our rules explicitly forbid.%>

    -

    <%:To ask for the reason why you have been blocked or ask for access again you can try to contact the owner of this access point:%> <%:Contact%>

    - -<%+footer%> - - - diff --git a/package/luci/applications/luci-app-splash/luasrc/view/splash/splash.htm b/package/luci/applications/luci-app-splash/luasrc/view/splash/splash.htm deleted file mode 100644 index 8d84463ef7..0000000000 --- a/package/luci/applications/luci-app-splash/luasrc/view/splash/splash.htm +++ /dev/null @@ -1,134 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<% -local fs = require "nixio.fs" -local has_custom_splash = fs.access("/usr/lib/luci-splash/splashtext.html") -local has_custom_splashinclude = fs.access("/usr/lib/luci-splash/splashtextinclude.html") - -function expand (e, R) - return (string.gsub(e, "###([A-Z_]+)###", R)) -end - -local community, homepage, leasetime, limit_up, limit_down - -local contacturl = luci.dispatcher.build_url("freifunk", "contact") - -local c = luci.model.uci.cursor():get_all("freifunk", "community") -if c and c.name then - name = luci.model.uci.cursor():get('profile_' .. c.name, 'profile', 'name') - if name then - community = name - else - community = c.name - end -else - community = "Freifunk" -end - -if c and c.homepage then - homepage = c.homepage -else - homepage = "http://freifunk.net" -end - -local s = luci.model.uci.cursor():get_all("luci_splash", "general") -if s then - leasetime = s.leasetime or "" - limit_up = s.limit_up or nil - limit_down = s.limit_down or nil -end - -local limit_text = "" -if limit_up and limit_down then - limit_text = "

    " .. translate("Your bandwidth is limited to") .. " " .. limit_down .. "/" .. limit_up .. - " " .. translate("KB/s (Download/Upload). You may be able to remove this limit by actively contributing " .. - "to this project.") .. "

    " -end - -local contact = translate('Get in %s with the operator of this access point.') -contact = contact % ('' .. translatef('Contact') .. '') - -local accepttext = translate('By accepting these rules you can use this network for %s hour(s). After this time you need to accept these rules again.') -accepttext = accepttext % leasetime - - -if has_custom_splash then - local R = { - COMMUNITY = community, - COMMUNITY_URL = homepage, - LEASETIME = leasetime, - ACCEPT = tostring(translate("Accept")), - LIMIT = limit_text, - CONTACTURL = contacturl - } - local splashtext = expand(fs.readfile("/usr/lib/luci-splash/splashtext.html"), R) - %> - <%=splashtext%> - -<% else %> - -

    <%:Welcome%>

    - -

    <%:You are now connected to the free wireless mesh network%> <%=community%>. - <%:Please note that we are not an internet service provider but an experimental community network.%>

    -

    <%:Access to the internet might be possible nevertheless, because some activists of this project share their - private internet connections. These few connections are shared between all users. That means available bandwidth - is limited and because of this we ask you not to do any of the following:%>

    -
      -
    • <%:use filesharing applications on this network%>
    • -
    • <%:waste bandwidth with unneccesary downloads or streams%>
    • -
    • <%:perform any kind of illegal activities%>
    • -
    -
    - - <% if limit_up and limit_down then %> - <%=limit_text%> - <% end %> - -

    <%:If you use this network on a regular basis we ask for your support:%>

    - - - <% - if has_custom_splashinclude then - local splashtextinclude = fs.readfile("/usr/lib/luci-splash/splashtextinclude.html") - %> - <%=splashtextinclude%> - <% end %> - -

    <%:Usage Agreement%>

    -

    - <%:The open and free wireless network of volunteers ("Operators") provides the necessary equipment and Internet connections ("Infrastructure") at their own expense.%> - <%:These Terms of Use govern the use of the network by its participants' computer, PDA, or similar device ("Devices") within the network.%> - <%:Access to the network is not guaranteed. It can be interrupted at any time without notice for any reason, for certain devices, and/or may be blocked for certain users.%> -

    - -

    <%:Legally Prohibited Activities%>

    -

    <%:The participant agrees to not perform any action and refrain from acts which may violate the law or infringe upon the rights of third parties.%>

    - -

    <%:Legally Prohibited content%>

    -

    <%:The participant agrees to not transfer content over the network which violates the law.%>

    - -

    <%:Fair Use Policy%>

    -

    <%:The participant agrees to not use the network in any way which will harm the infrastructure, the network itself, its operators or other participants.%>

    - -

    <%:Safety%>

    -

    <%:The network, like the Internet, is unencrypted and open. Each participant is responsible for the safety of their own connections and devices.%>

    - -

    Disclaimer

    -

    <%:The operator claims no liability for loss of data, unauthorized access/damage to devices, or financial losses that participants may suffer from the use of the network.%>

    - -

    <%=accepttext%>

    -<% end %> - - - diff --git a/package/luci/applications/luci-app-splash/luasrc/view/splash_splash/index.htm b/package/luci/applications/luci-app-splash/luasrc/view/splash_splash/index.htm deleted file mode 100644 index cbf37d5804..0000000000 --- a/package/luci/applications/luci-app-splash/luasrc/view/splash_splash/index.htm +++ /dev/null @@ -1,8 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -<%+footer%> \ No newline at end of file diff --git a/package/luci/applications/luci-app-splash/luasrc/view/splash_splash/splash.htm b/package/luci/applications/luci-app-splash/luasrc/view/splash_splash/splash.htm deleted file mode 100644 index c63ad0f184..0000000000 --- a/package/luci/applications/luci-app-splash/luasrc/view/splash_splash/splash.htm +++ /dev/null @@ -1,17 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -<%+splash/splash%> - -
    -

    - - -

    -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-splash/po/ca/splash.po b/package/luci/applications/luci-app-splash/po/ca/splash.po deleted file mode 100644 index 3afef1a7b3..0000000000 --- a/package/luci/applications/luci-app-splash/po/ca/splash.po +++ /dev/null @@ -1,330 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-01 23:10+0200\n" -"PO-Revision-Date: 2014-07-02 21:20+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Accept" -msgstr "Accepta" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" -"Accés a la xarxa no està garantit. Pot ser interromput en qualsevol moment " -"sense notificació per qualsevol motiu, en certs dispositius, i pot ser " -"bloquejat a certs usuaris." - -msgid "Active Clients" -msgstr "Clients actius" - -msgid "Allowed hosts/subnets" -msgstr "Hosts/subxarxes permets" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "Llista negra" - -msgid "Blocked" -msgstr "Bloquejat" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "Declina" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "Dona una mica de diners per a ajudar-nos a mantenir aquest project viu." - -msgid "Download limit" -msgstr "Límit de baixada" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "Política d'ús just" - -msgid "Firewall zone" -msgstr "Zona de tallafocs" - -msgid "General" -msgstr "General" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "Nom de host" - -msgid "IP Address" -msgstr "Adreça IP" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" -"Si opereu el vostre propi equip WiFi, utilitzeu canals distints dels " -"nostres." - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "Si utilitzeu aquesta xarxa regularment, us demanem el vostre suport:" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "Intercepta trànsit de clients en aquesta interfície" - -msgid "Interfaces" -msgstr "Interfícies" - -msgid "Interfaces that are used for Splash." -msgstr "interfícies que s'utilitzen pel Splash." - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "Activitats legalment prohibits" - -msgid "Legally Prohibited content" -msgstr "Contingut legalment prohibit" - -msgid "MAC Address" -msgstr "Adreça MAC" - -msgid "MAC addresses in this list are blocked." -msgstr "Les adreces MAC en aquesta llista estan bloquejades." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "Màscara de xarxa" - -msgid "Network" -msgstr "Xarxa" - -msgid "No clients connected" -msgstr "Cap client connectat" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" -"Si us plau, noteu que no som proveïdor de servei de Internet sinó una xarxa " -"comunitària experimental." - -msgid "Policy" -msgstr "Política" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "Seguretat" - -msgid "Save" -msgstr "Desa" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" -"La xarxa, com a la Internet, no és xifrada i és oberta. Cada partícip és " -"responsable de la seguretat dels seus propis connexions i dispositius." - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" -"El partícip consent a no transferir contingut sobre la xarxa que violi la " -"llei." - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" -"El partícip consent a no utilitzar la xarxa de qualsevol manera que danyi la " -"infraestructura, la xarxa en si, els seus operadors o altres partícips." - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" -"Aquestes condicions d'ús governen l'ús de la xarxa pels ordinadors, " -"organitzadors personals o dispositius similars (\"Dispositius\") dels seus " -"partícips dins de la xarxa." - -msgid "Time remaining" -msgstr "Temps restant" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" -"Per demanar el motiu perquè s'us ha bloquejat o per demanar l'accés de nou, " -"podeu intentar contactar al propietari d'aquest punt d'accés:" - -msgid "Traffic in/out" -msgstr "Trànsit entrant/sortint" - -msgid "Upload limit" -msgstr "Límit de pujada" - -msgid "Usage Agreement" -msgstr "Acord d'ús" - -msgid "Welcome" -msgstr "Benvingut" - -msgid "Whitelist" -msgstr "Llista blanca" - -msgid "You are now connected to the free wireless mesh network" -msgstr "Ja esteu connectat a la xarxa en malla sense fil gratis" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" -"Podeu introduir aquí el vostre propi text que es mostra als clients.
    Es " -"pot utilitzar els següents marcadors: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME### ###LIMIT### i ###ACCEPT###." - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" -"S'us ha bloquejat el accés a aquesta xarxa, probablement perquè heu fet " -"alguna cosa que les nostres regles explícitament prohibeixen." - -msgid "Your bandwidth is limited to" -msgstr "La vostra amplada de banda està limitat a" - -msgid "blacklisted" -msgstr "prohibit" - -msgid "expired" -msgstr "caducat" - -msgid "optional when using host addresses" -msgstr "opcional quan s'utilitza adreces de host" - -msgid "perform any kind of illegal activities" -msgstr "realitza qualsevol tipus d'activitat il·legal" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "bloquejat temporalment" - -msgid "unknown" -msgstr "desconegut" - -msgid "use filesharing applications on this network" -msgstr "utilitza aplicacions de compartició de fitxers en aquesta xarxa" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "malgasta l'amplada de banda amb baixades o corrents innecessaris" - -msgid "whitelisted" -msgstr "en llista blanca" diff --git a/package/luci/applications/luci-app-splash/po/cs/splash.po b/package/luci/applications/luci-app-splash/po/cs/splash.po deleted file mode 100644 index 671afd79e2..0000000000 --- a/package/luci/applications/luci-app-splash/po/cs/splash.po +++ /dev/null @@ -1,340 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-08-04 19:05+0200\n" -"Last-Translator: KubaCZ \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Accept" -msgstr "Přijmout" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" -"Přístup k Internetu může být možný, nicméně pouze proto, že někteří " -"aktivisté tohoto projektu sdílí jejich soukromé Internetové připojení. " -"Těchto několik spojení je sdíleno mezi všemi uživateli. Z toho plyne, že " -"dostupná šířka pásma je omezená a z tohoto důvodu vás žádáme, abyste " -"nedělali žádné z následujících věcí:" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "Aktivní klienti" - -msgid "Allowed hosts/subnets" -msgstr "Povolení hostitelé/podsítě" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" -"Kromě možnosti vytvořit celý vlastní text místo textu výše také můžete jen " -"jako doplněk připojit svůj text jeho napsáním sem." - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" -"Limit šířky pásma pro klienty je aktivován pouze v případě, že oba limity " -"(upload a download) jsou nastaveny. Hodnotou 0 úplně vypnete toto omezení. " -"Klienti na whitelistu nejsou omezeni." - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" -"Staňte se aktivním členem této komunity a přispějte provozováním vlastního " -"uzlu" - -msgid "Blacklist" -msgstr "Blacklist" - -msgid "Blocked" -msgstr "Zablokovaný" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -#, fuzzy -msgid "Client-Splash" -msgstr "Client-Splash" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "Rychlost stahování je pro klienty omezena na tuto hodnotu (kbyte/s)" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "Rychlost nahrávání je pro klienty omezena na tuto hodnotu (kbyte/s)" - -msgid "Contact" -msgstr "Kontakt" - -msgid "Decline" -msgstr "Odmítnout" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "Darováním peněz nám pomůžete udržet tento projekt naživu" - -msgid "Download limit" -msgstr "Limit stahování" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "Fair Use Policy" - -msgid "Firewall zone" -msgstr "Zóna firewallu" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IP Address" -msgstr "IP adresa" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "Rozhraní" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" -"KB/s (Stahování/Nahrávání). Aktivním přispíváním tomuto projektu můžete moci " -"odebrat tento limit." - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "MAC adresa" - -msgid "MAC addresses in this list are blocked." -msgstr "MAC adresy v tomto seznamu jsou blokovány" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" -"Mac adresy klientů na whitelistu. Tito nemusí přijímat splash a nejsou " -"omezeni šířkou pásma." - -msgid "Netmask" -msgstr "Síťová maska" - -msgid "Network" -msgstr "Síť" - -msgid "No clients connected" -msgstr "Žádní klienti nejsou připojeni" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" -"Vezměte prosím na vědomí, že nejsme žádní ISP, ale experimentální komunitní " -"síť." - -msgid "Policy" -msgstr "Politika" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "Bezpečnost" - -msgid "Save" -msgstr "Uložit" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "Zbývající čas" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" -"Pokud se chcete zeptat, proč jste byli zablokováni nebo jak získat zpět " -"přístup, můžete se pokusit kontaktovat vlastníka tohoto přístupového bodu:" - -msgid "Traffic in/out" -msgstr "Provoz dovnitř/ven" - -msgid "Upload limit" -msgstr "Limit nahrávání" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "Vítejte" - -msgid "Whitelist" -msgstr "Whitelist" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" -"Sem můžete vložit text, který se zobrazí klientům.
    Můžete použít tyto " -"značky: ###COMMUNITY###, ###COMMUNITY_URL###, ###CONTACTURL###, " -"###LEASETIME###, ###LIMIT### and ###ACCEPT###." - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" -"Váš přístup do této sítě byl zablokován, nejspíše jste udělal něco, co naše " -"pravidla výslovně zakazují." - -msgid "Your bandwidth is limited to" -msgstr "Vaše šířka pásma je omezena na" - -msgid "blacklisted" -msgstr "na černé listině" - -msgid "expired" -msgstr "prošlý" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "provádět nějaký z druhů nelegálních činností" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "dočasně zablokován" - -msgid "unknown" -msgstr "neznámý" - -msgid "use filesharing applications on this network" -msgstr "používat aplikace na sdílení souborů v této síti" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "plýtvat šířkou pásma nepotřebným stahováním nebo streamy" - -msgid "whitelisted" -msgstr "na bílé listině" - -#~ msgid "By accepting these rules you can use this network for" -#~ msgstr "Přijmutím těchto pravidel můžete začít používat tuto síť pro" - -#~ msgid "hour(s). After this time you need to accept these rules again." -#~ msgstr "hodin. Po uplynutí této doby musíte přijmout pravidla znovu." - -#~ msgid "the owner of this access point." -#~ msgstr "vlastník tohoto přístupového bodu." diff --git a/package/luci/applications/luci-app-splash/po/de/splash.po b/package/luci/applications/luci-app-splash/po/de/splash.po deleted file mode 100644 index 8b1cd9a5ec..0000000000 --- a/package/luci/applications/luci-app-splash/po/de/splash.po +++ /dev/null @@ -1,383 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2013-08-19 13:53+0200\n" -"Last-Translator: Manuel \n" -"Language-Team: \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Accept" -msgstr "Akzeptieren" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" -"Zugang zum Internet ist unter Umständen dennoch möglich, da einige " -"Teilnehmer dieses Netzes ihren eigenen Internetzugang teilen. Da alle Nutzer " -"sich diese wenigen Zugänge teilen müssen bitten wir darum, folgende " -"Aktivitäten zu unterlassen:" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" -"Der Zugang zum Netzwerk wird nicht garantiert. Er kann jederzeit und ohne " -"Angabe von Gründen unterbrochen oder für bestimmte Endgeräte und Teilnehmer " -"gesperrt werden." - -msgid "Active Clients" -msgstr "verbundene Clients" - -msgid "Allowed hosts/subnets" -msgstr "Erlaubte Rechner/Netzwerke" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" -"Als Alternative zum Bearbeiten des kompletten Splash-Textes (oben) kann auch " -"nur eigener Text in die Default-Splashseite eingebunden werden. Dazu im " -"folgenden Feld den eigenen Text eingeben." - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" -"Die Bandbreitenlimitierung für Clients wird nur aktiviert, wenn sowohl für " -"Up- als auch für Download Limits eingegeben wurden. Ein Wert von 0 " -"deaktiviert die Bandbreitenbeschränkung komplett. Rechner/Netze aus der " -"Whitelist werden nicht limitiert." - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" -"Werde ein aktives Mitglied unserer Community und hilf, indem du selber einen " -"Access Point betreibst." - -msgid "Blacklist" -msgstr "Blacklist " - -msgid "Blocked" -msgstr "Gesperrt" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" -"Durch das Akzeptieren dieser Regeln kannst du unser Netzwerk für %s Stunde" -"(n) benutzen. Danach wirst du aufgefordert diese Bedingungen erneut zu " -"akzeptieren." - -msgid "Clearance time" -msgstr "Freigabezeit" - -msgid "Client-Splash" -msgstr "Client-Splash" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" -"Client-Splash ist ein Hotspot-Authentifizierungssystem für Freifunk und " -"andere Meshnetzwerke." - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" -"Wird hier eine URL angegeben dann werden Clients zu dieser Seite " -"weitergeleitet nachdem sie die Nutzungsbedingungen akzeptiert haben. Wird " -"keine URL angegeben dann werden Clients zu der ursprünglich angeforderten " -"Seite weitergeleitet." - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" -"Downloadgeschwindigkeit von Clients auf diesen Wert limitieren (kbyte/s) " - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" -"Clients die den Splash akzeptiert haben dürfen das Netzwerk für so viele " -"Stunden benutzen." - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" -"Uploadgeschwindigkeit von Clients auf diesen Wert limitieren (kbyte/s) " - -msgid "Contact" -msgstr "Kontakt" - -msgid "Decline" -msgstr "Ablehnen" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" -"Ziel-Rechner und Ziel-Netzwerke die hier aufgeführt sind werden vom " -"Splashvorgang ausgenommen, d.h. sie können von Clients immer und ohne " -"Authentifizierung erreicht werden." - -msgid "Donate some money to help us keep this project alive." -msgstr "" -"Hilf durch eine Spende dieses Projekt aufrechzuerhalten oder weiter " -"auszubauen." - -msgid "Download limit" -msgstr "Downloadbegrenzung" - -msgid "Edit the complete splash text" -msgstr "Bearbeiten des kompletten Splash-Textes." - -msgid "Fair Use Policy" -msgstr "Fair Use Policy" - -msgid "Firewall zone" -msgstr "Firewallzone" - -msgid "General" -msgstr "Allgemein" - -msgid "Get in %s with the operator of this access point." -msgstr "Nimm %s mit dem Betreiber dieses Access Points auf." - -msgid "Hostname" -msgstr "Rechnername" - -msgid "IP Address" -msgstr "IP-Adresse" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "Betreibe deine eigenen WLAN-Geräte auf anderen Kanälen als wir." - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "Wenn du unser Netzwerk regelmässig benutzt dann hilf uns bitte, z.B.:" - -msgid "Include your own text in the default splash" -msgstr "Einbinden von eigenem Text in die Default-Splashseite" - -msgid "Intercept client traffic on this Interface" -msgstr "Clientverkehr auf dieser Schnittstelle abfangen" - -msgid "Interfaces" -msgstr "Schnittstellen" - -msgid "Interfaces that are used for Splash." -msgstr "Schnittstellen die für Splash benutzt werden." - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" -"KB/s (Download/Upload). Durch die aktive Teilnahme an unserem Netzwerks " -"kannst du dieses Bandbreitenlimit deaktivieren." - -msgid "Legally Prohibited Activities" -msgstr "Verbotene Handlungen" - -msgid "Legally Prohibited content" -msgstr "Verbotene Inhalte" - -msgid "MAC Address" -msgstr "MAC-Adresse" - -msgid "MAC addresses in this list are blocked." -msgstr "MAC-Adressen in dieser Liste werden geblockt." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" -"MAC-Adressen von Clients in der Whitelist. Diese müssen den Splash nicht " -"akzeptieren und unterliegen keinen Bandbreitenbegrenzungen." - -msgid "Netmask" -msgstr "Netzmaske" - -msgid "Network" -msgstr "Netzwerk" - -msgid "No clients connected" -msgstr "Keine Clients verbunden." - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" -"Bitte sei dir darüber bewusst, dass wir kein Internetanbieter sondern ein " -"experimentelles Gemeinschaftsnetzwerk sind." - -msgid "Policy" -msgstr "Richtlinie" - -msgid "Redirect target" -msgstr "Ziel für Weiterleitung" - -msgid "Safety" -msgstr "Sicherheit" - -msgid "Save" -msgstr "Speichern" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "Splashregeln werden in diese Firewallzone eingegliedert" - -msgid "Splashtext" -msgstr "Splash-Text" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" -"Das Netzwerk ist, wie das Internet auch, unverschlüsselt und offen. Jeder " -"Teilnehmer ist selbst für die Sicherheit seiner Verbindungen und seiner " -"Endgeräte verantwortlich." - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" -"Das offene und freie drahtlose Netzwerk wird von Freiwilligen betrieben " -"(\"Betreiber\"), die die nötigen Geräte und Internet-Anschlüsse " -"(\"Infrastruktur\") auf eigene Kosten zur Verfügung stellen." - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" -"Die Betreiber lehnen jede Haftung für Datenverlust, unbefugten Zugriff auf " -"Endgeräte, Schäden an Endgeräten oder finanzielle Verluste, die ein " -"Teilnehmer durch die Nutzung des Netzwerks erleidet ab." - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" -"Der Teilnehmer verpflichtet sich, keine Handlungen vorzunehmen bzw. " -"Handlungen zu unterlassen, welche gesetzliche Bestimmungen oder die Rechte " -"Dritter verletzen." - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" -"Der Teilnehmer verpflichtet sich, keine Inhalte über das Netzwerk zu " -"übertragen, welche gegen geltendes Recht verstoßen." - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" -"Der Teilnehmer verpflichtet sich, das Netzwerk nicht in einer Weise zu " -"beanspruchen, welche die Infrastruktur, das Netzwerk selbst, dessen " -"Betreiber oder andere Teilnehmer beeinträchtigt." - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" -"Diese Nutzungsbestimmungen regeln die Inanspruchnahme des Netzwerks durch " -"die Teilnehmer, welche sich mittels Computer, Handheld o.ä (\"Endgerät\") " -"mit dem Netzwerk verbinden." - -msgid "Time remaining" -msgstr "Verbleibende Zeit" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" -"Um nach dem Grund der Sperrung zu fragen oder um deren Aufhebung zu bitten " -"wende dich an den Administrator dieses Access Points:" - -msgid "Traffic in/out" -msgstr "Ein-/Ausgehender Verkehr" - -msgid "Upload limit" -msgstr "Upload-Begrenzung" - -msgid "Usage Agreement" -msgstr "Nutzungsbestimmungen" - -msgid "Welcome" -msgstr "Willkommen" - -msgid "Whitelist" -msgstr "Whitelist" - -msgid "You are now connected to the free wireless mesh network" -msgstr "Du bist jetzt verbunden mit dem freien Funknetzwerk" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" -"Hier kann ein eigener Text eingegeben werden, der Clients angezeigt wird." -"
    Folgende Marker können dabei verwendet werden: ###COMMUNITY###, " -"###COMMUNITY_URL###, ###CONTACTURL###, ###LEASETIME###, ###LIMIT### und " -"###ACCEPT###." - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" -"Der Zugang zu diesem Netzwerk wurde vom Administrator blockiert. Das kann " -"verschiedene Gründe haben, sehr wahrscheinlich hast du jedoch die Regeln " -"dieses Netzwerks nicht beachtet und dadurch Probleme verursacht." - -msgid "Your bandwidth is limited to" -msgstr "Deine Bandbreite ist limitiert auf" - -msgid "blacklisted" -msgstr "gesperrt" - -msgid "expired" -msgstr "abgelaufen" - -msgid "optional when using host addresses" -msgstr "Die Angabe ist optional wenn nur einzelne Rechner/IPs verwendet werden" - -msgid "perform any kind of illegal activities" -msgstr "Illegale Aktivitäten" - -msgid "splashed" -msgstr "gesplasht" - -msgid "temporarily blocked" -msgstr "Vorübergehend geblockt" - -msgid "unknown" -msgstr "Unbekannt" - -msgid "use filesharing applications on this network" -msgstr "Filesharing betreiben" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "Bandbreite durch unnötige Downloads oder Streams zu verschwenden." - -msgid "whitelisted" -msgstr "erlaubt" - -#~ msgid "" -#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. " -#~ "they are always allowed." -#~ msgstr "" -#~ "Rechner und Netzwerke die hier aufgeführt sind werden vom Splashvorgang " -#~ "ausgenommen, d.h. sie dürfen das Netzwerk immer und ohne Authentifizierung " -#~ "benutzen." diff --git a/package/luci/applications/luci-app-splash/po/el/splash.po b/package/luci/applications/luci-app-splash/po/el/splash.po deleted file mode 100644 index df90478f71..0000000000 --- a/package/luci/applications/luci-app-splash/po/el/splash.po +++ /dev/null @@ -1,307 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-18 15:31+0200\n" -"PO-Revision-Date: 2012-03-18 15:31+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "Διεύθυνση IP" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "Διεπαφές" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "Διεύθυνση MAC" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "Δίκτυο" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "Αποθήκευση" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/en/splash.po b/package/luci/applications/luci-app-splash/po/en/splash.po deleted file mode 100644 index 615be16b23..0000000000 --- a/package/luci/applications/luci-app-splash/po/en/splash.po +++ /dev/null @@ -1,292 +0,0 @@ -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/es/splash.po b/package/luci/applications/luci-app-splash/po/es/splash.po deleted file mode 100644 index 836352ea9b..0000000000 --- a/package/luci/applications/luci-app-splash/po/es/splash.po +++ /dev/null @@ -1,376 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-24 18:30+0200\n" -"PO-Revision-Date: 2014-06-15 13:17+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Accept" -msgstr "Aceptar" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" -"El acceso a internet puede ser posible, sin embargo, porque otros miembros " -"del proyecto comparten sus conexiones a internet privadas y estas pocas " -"conexiones se comparten entre todos los usuarios. Por este motivo el ancho " -"de banda está limitado y le pedimos que no haga:" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" -"No se puede garantizar el acceso a la red. Podría interrumpirse en cualquier " -"momento, sin aviso y por cualquier motivo, para ciertos dispositivos y/o es " -"posible bloquearlo para ciertos usuarios." - -msgid "Active Clients" -msgstr "Clientes activos" - -msgid "Allowed hosts/subnets" -msgstr "Máquinas y subredes permitidas" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" -"En vez de editar el splash entero puede introducir aquí un texto que se " -"mostrará en el splash por defecto." - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" -"La limitación de ancho de banda sólo se activa cuando se establecen tanto el " -"límite de subida como el de bajada. Ponga 0 para desactivarla. A los " -"clientes en lista blanca no se les limita." - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" -"Conviértase en un miembro activo de esta comunidad y ayude gestionando su " -"propio nodo" - -msgid "Blacklist" -msgstr "Lista negra" - -msgid "Blocked" -msgstr "Bloqueado" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" -"Aceptar estas reglas le permite usar esta red durante %s hora(s). Tras este " -"tiempo tendrá que aceptarlas de nuevo." - -msgid "Clearance time" -msgstr "Tiempo de autorización" - -msgid "Client-Splash" -msgstr "Cliente-Splash" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "Cliente-Splash es un sistema de autentificación para redes mesh." - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" -"Se redirigirá a los clientes a esta página tras haber aceptado el splash. Si " -"se deja vacío se les redirigirá a la página que habían pedido." - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "La velocidad de descarga de los clientes está limitada a (Kbytes/s)" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" -"Horas a las que se permitirá usar la red a los clientes que acepten la " -"presentación." - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "La velocidad de subida de los clientes está limitada a (Kbytes/s)" - -msgid "Contact" -msgstr "Contacto" - -msgid "Decline" -msgstr "Rechazar" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" -"Redes y hosts destino excluidos de splash, es decir, que siempre son " -"admitidos." - -msgid "Donate some money to help us keep this project alive." -msgstr "Haga una aportación para ayudarnos a mantener este proyecto vivo." - -msgid "Download limit" -msgstr "Límite de descarga" - -msgid "Edit the complete splash text" -msgstr "Editar el texto completo del splash" - -msgid "Fair Use Policy" -msgstr "Política de uso adecuado" - -msgid "Firewall zone" -msgstr "Zona del cortafuegos" - -msgid "General" -msgstr "General" - -msgid "Get in %s with the operator of this access point." -msgstr "Conecte %s con el operador de este punto de acceso." - -msgid "Hostname" -msgstr "Nombre de máquina" - -msgid "IP Address" -msgstr "Dirección IP" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "Si maneja su propio wi-fi use canales diferentes de los nuestros." - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "Si es usuario habitual de esta red le pedimos apoyo:" - -msgid "Include your own text in the default splash" -msgstr "Incluir su propio texto en el splash por defecto" - -msgid "Intercept client traffic on this Interface" -msgstr "Interceptar el tráfico cliente en esta interfaz" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interfaces that are used for Splash." -msgstr "Interfaces usados para Splash." - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" -"KB/s (Descarga/Subida). Puede evitar este límite contribuyendo activamente a " -"este proyecto." - -msgid "Legally Prohibited Activities" -msgstr "Actividades prohibidas por ley" - -msgid "Legally Prohibited content" -msgstr "Contenido prohibido por ley" - -msgid "MAC Address" -msgstr "Dirección MAC" - -msgid "MAC addresses in this list are blocked." -msgstr "Direcciones MAC bloqueadas." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" -"Direcciones MAC de clientes en lista blanca. Estos no tendrán que aceptar la " -"presentación ni tendrán limitado el ancho de banda." - -msgid "Netmask" -msgstr "Máscara de red" - -msgid "Network" -msgstr "Red" - -msgid "No clients connected" -msgstr "Sin clientes conectados" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" -"Tenga presente que no somos un proveedor de acceso a internet sino una red " -"comunitaria experimental." - -msgid "Policy" -msgstr "Politica" - -msgid "Redirect target" -msgstr "Redirige objetivo" - -msgid "Safety" -msgstr "Seguridad" - -msgid "Save" -msgstr "Guardar" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "Zona del cortafuegos en la que está integradas las reglas del Splash" - -msgid "Splashtext" -msgstr "Mensaje de presentación" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" -"La red, como internet, no está encriptada y es abierta. Cada participante es " -"responsable de la seguridad de sus propias conexiones y dispositivos." - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" -"La red abierta y libre de voluntarios (\"operadores\") proporciona el equipo " -"necesario y conexiones a internet (\"infraestructura\") de su propio " -"bolsillo." - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" -"El operador no será responsable por la pérdida de datos, acceso/daño no " -"autorizado a dispositivos o pérdidas financieras que los participantes " -"pudiesen incurrir por el uso de la red." - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" -"El participante acepta no llevar a cabo ninguna acción y evitará acciones " -"que pudiese violar las leyes o infringir los derechos de terceros." - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" -"El participante acepta no transferir contenido que viole la ley por la red." - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" -"El participante acepta no usar la red de ninguna manera que dañe la " -"infraestructura, la propia red, sus operadores u otros participantes." - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" -"Estos términos cubren el uso de la red por los ordenadores de sus " -"participantes, PDAs o dispositivos similares." - -msgid "Time remaining" -msgstr "Tiempo restante" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" -"Para preguntar porqué se le ha bloqueado o pedir acceso de nuevo intente " -"contactar con el propietario de este punto de acceso:" - -msgid "Traffic in/out" -msgstr "Tráfico entrante/saliente" - -msgid "Upload limit" -msgstr "Límite de subida" - -msgid "Usage Agreement" -msgstr "Acuerdo de uso" - -msgid "Welcome" -msgstr "Bienvenido" - -msgid "Whitelist" -msgstr "Lista blanca" - -msgid "You are now connected to the free wireless mesh network" -msgstr "Se ha conectado a la red libre mesh inalámbrica" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" -"Introduzca aquí el texto que se mostrará a los clientes.
    Es posible " -"usar las siguientes etiquetas: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### y ###ACCEPT###." - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" -"Se le ha bloqueado el acceso a esta red, probablemente porque hizo algo " -"prohibido explícitamente en sus reglas." - -msgid "Your bandwidth is limited to" -msgstr "Su ancho de banda está limitado a" - -msgid "blacklisted" -msgstr "en lista negra" - -msgid "expired" -msgstr "caducado" - -msgid "optional when using host addresses" -msgstr "opcional si usa direcciones de máquina" - -msgid "perform any kind of illegal activities" -msgstr "llevar a cabo cualquier tipo de actividades ilegales" - -msgid "splashed" -msgstr "Recibido" - -msgid "temporarily blocked" -msgstr "bloqueado temporalmente" - -msgid "unknown" -msgstr "desconocido" - -msgid "use filesharing applications on this network" -msgstr "usar aplicaciones de compartición de ficheros en esta red" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "malgastar ancho de banda con descargas innecesarias o multimedia" - -msgid "whitelisted" -msgstr "en lista blanca" - -#~ msgid "" -#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. " -#~ "they are always allowed." -#~ msgstr "" -#~ "A estas máquinas y redes no se les mostrará la presentación y siempre serán " -#~ "bienvenidas." - -#~ msgid "By accepting these rules you can use this network for" -#~ msgstr "Si acepta estas reglas pordrá usar esta red para" - -#~ msgid "Edit Splash text" -#~ msgstr "Editar la página de bienvenida" - -#~ msgid "hour(s). After this time you need to accept these rules again." -#~ msgstr "hora/horas. Tras este tiempo deberá aceptar las reglas de nuevo." - -#~ msgid "the owner of this access point." -#~ msgstr "el propietario de este punto de acceso." diff --git a/package/luci/applications/luci-app-splash/po/fr/splash.po b/package/luci/applications/luci-app-splash/po/fr/splash.po deleted file mode 100644 index e525ab316c..0000000000 --- a/package/luci/applications/luci-app-splash/po/fr/splash.po +++ /dev/null @@ -1,337 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Manuel Munz \n" -"Language-Team: \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Accept" -msgstr "Accepter" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "Clients actifs" - -msgid "Allowed hosts/subnets" -msgstr "Hôtes/sous-réseaux autorisés" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" -"La limitation de bande-passante des clients est activée seulement quand les " -"limites montante et descendante sont données. Utilisez ici une valeur de 0 " -"pour complètement désactiver cette limitation. Les clients autorisés (liste-" -"blanche) ne sont pas limités." - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "interdire (liste-noire)" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "Durée d'autorisation" - -msgid "Client-Splash" -msgstr "Client-Splash" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" -"Client-Splash est un système d'authentification de HotSpot pour des réseaux " -"sans-fil maillés." - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" -"La vitesse de téléchargement des clients est limitée à cette valeur (en ko/s)" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" -"Les clients qui auront passé la page d'accueil seront autorisés à utiliser " -"le réseau pendant ce nombre d'heures donné." - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "La vitesse montante des clients sera limitée à cette valeur (en ko/s)" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "Refuser" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "Limite en télé-chargement" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "Zone du pare-feu" - -msgid "General" -msgstr "Général" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "Hôte" - -msgid "IP Address" -msgstr "Adresse IP" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "Intercepter le trafic-client sur cette interface" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interfaces that are used for Splash." -msgstr "Interfaces utilisés pour l'accueil." - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "Adresse MAC" - -msgid "MAC addresses in this list are blocked." -msgstr "Les adresses MAC de cette liste sont bloquées." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" -"Adresses MAC des clients autorisés d'office. Ils n'ont pas à accepter la " -"page d'accueil et ne sont pas limités en bande-passante." - -msgid "Netmask" -msgstr "Masque" - -msgid "Network" -msgstr "Réseau" - -msgid "No clients connected" -msgstr "Aucun client connecté" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "Politique" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "Sauvegarder" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "Les règles du HotSpot sont intégrés dans cette zone du pare-feu" - -msgid "Splashtext" -msgstr "Texte de la page d'accueil" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "Temps restant" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "Trafic entrant/sortant" - -msgid "Upload limit" -msgstr "Limite du trafic montant" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "Liste-blanche" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "interdit (par liste-noire)" - -msgid "expired" -msgstr "terminé" - -msgid "optional when using host addresses" -msgstr "optionnel quand on utilise des adresses d'hôtes" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "À l'accueil" - -msgid "temporarily blocked" -msgstr "bloqué(s) temporairement" - -msgid "unknown" -msgstr "inconnu" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "autorisés par liste blanche" - -#~ msgid "" -#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. " -#~ "they are always allowed." -#~ msgstr "" -#~ "Les hôtes et réseaux listés ici sont exclus de l'accueil du HotSpot, ils ne " -#~ "seront jamais autorisés." - -#~ msgid "Edit Splash text" -#~ msgstr "Modifier le texte de la page d'accueil" - -#~ msgid "" -#~ "You can change the text that is displayed to clients here.
    It is " -#~ "possible to use the following markers: ###COMMUNITY###, " -#~ "###COMMUNITY_URL###, ###LEASETIME### and ###ACCEPT###.
    Click here to " -#~ "test the splash page after you saved it." -#~ msgstr "" -#~ "Vous pouvez changer ici le texte qui sera présenté aux clients.
    Il " -#~ "est possible d'y inclure les marqueurs suivants : ###COMMUNITY###, " -#~ "###COMMUNITY_URL###, ###LEASETIME### et ###ACCEPT###.
    Cliquez ici tester la page d'accueil une fois celle-ci " -#~ "sauvegardée." diff --git a/package/luci/applications/luci-app-splash/po/he/splash.po b/package/luci/applications/luci-app-splash/po/he/splash.po deleted file mode 100644 index bf7e2f0745..0000000000 --- a/package/luci/applications/luci-app-splash/po/he/splash.po +++ /dev/null @@ -1,325 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-09-10 04:38+0200\n" -"PO-Revision-Date: 2012-09-10 04:58+0200\n" -"Last-Translator: Snoof \n" -"Language-Team: LANGUAGE \n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" -"החיבור לאינטרנט יכול להתאפשר בגלל שכמה פעילים של הפרוייקט משתפים את חיבור " -"האינטרנט האישי שלהם. אותם חיבורים מעטים משותפים בין כל המשתמשים. משמע רוחב " -"הפס הזמין מוגבל ולכן אנו מבקשים מכם לא לעשות את הדברים הבאים:" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "הפוך לחבר פעיל של הקהילה ועזור ע\"י תפעול נקודה של עצמך" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "חסומים" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "דחה" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "תרום כסף על מנת שנוכל לשמור על הפרוייקט הזה חי." - -msgid "Download limit" -msgstr "הגבלת הורדה" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "כללי" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "כתובת IP" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "אם הנך מפעיל מכשירי wifi של עצמך השתמש בערוצים שונים משלנו." - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "אם הנך משתמש ברשת זו על בסיס קבוע אנו מבקשים את תמיכתך:" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "ממשקים" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" -"KB/s (הורדה/העלאה). הנך יכול להוריד מגבלה זו ע\"י תרומה פעילה לפרוייקט זה." - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "כתובת MAC" - -msgid "MAC addresses in this list are blocked." -msgstr "כתובות MAC ברשימה זו הינם חסומים." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "רשת" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "שים לב שאנו לא ספק אינטרנט אלא רשת חברתית נסיונית." - -msgid "Policy" -msgstr "מדיניות" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "שמור" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "זמן שנותר" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" -"על מנת לשאול לסיבה שבגגלה נחסמת או לבקש גישה מחדש הנך יכול לנסות ליצור קשר " -"עם הבעלים של נקודת גישה זו:" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "הגבלת העלאה" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "ברוכים הבאים" - -msgid "Whitelist" -msgstr "" - -#, fuzzy -msgid "You are now connected to the free wireless mesh network" -msgstr "הנך מחובר כעת לרשת האלחוטית החינמית" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" -"הגישה שלך לרשת זו נחסמה, ככל הנראה בגלל שעשית משהו שהחוקים שלנו אוסרים " -"במפורש." - -msgid "Your bandwidth is limited to" -msgstr "רוחב הפס שלך מוגבל ל" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "פג תוקף" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "בצע פעילות בלתי חוקית מכל סוג שהוא" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "חסום זמנית" - -msgid "unknown" -msgstr "לא ידוע" - -msgid "use filesharing applications on this network" -msgstr "השתמש בתוכנות לשיתוף קבצים ברשת זו." - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "לבזבז רוחב פס עם הורדות או שידורים מיותרים" - -msgid "whitelisted" -msgstr "" - -#~ msgid "By accepting these rules you can use this network for" -#~ msgstr "ע\"י הסכמתך לחוקים האלו הנך יכול להשתמש ברשת זו בשביל" - -#~ msgid "hour(s). After this time you need to accept these rules again." -#~ msgstr "שעה(ות). לאחר זמן זה תצטרך לקבל את החוקים האלו שוב." - -#~ msgid "the owner of this access point." -#~ msgstr "הבעלים של נקודת גישה זו." diff --git a/package/luci/applications/luci-app-splash/po/hu/splash.po b/package/luci/applications/luci-app-splash/po/hu/splash.po deleted file mode 100644 index f2c7da14ab..0000000000 --- a/package/luci/applications/luci-app-splash/po/hu/splash.po +++ /dev/null @@ -1,303 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \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 "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/it/splash.po b/package/luci/applications/luci-app-splash/po/it/splash.po deleted file mode 100644 index 8964b6c3fb..0000000000 --- a/package/luci/applications/luci-app-splash/po/it/splash.po +++ /dev/null @@ -1,361 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-10 18:43+0200\n" -"PO-Revision-Date: 2013-02-10 19:08+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Accept" -msgstr "Accetta" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" -"L'accesso a Internet potrebbe essere possibile, perché alcuni attivisti di " -"questo progetto condividono le loro connessioni internet private​​. Queste " -"poche connessioni sono condivise tra tutti gli utenti. Ciò significa che la " -"larghezza di banda a disposizione è limitato e per questo vi chiediamo di " -"non fare una delle seguenti operazioni:" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "Attiva Clienti" - -msgid "Allowed hosts/subnets" -msgstr "Hosts/Sottoreti Consentite" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" -"Il limite della larghezza di banda per i clienti viene attivato solo quando " -"entrambi i limiti di upload e download sono impostati. Utilizzare un valore " -"pari a 0 qui per disattivare completamente questa limitazione. I client " -"inseriti nell'elenco dei consentiti non sono limitati." - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" -"Diventare un membro attivo di questa comunità e aiutaci nell'utilizzo del " -"proprio nodo" - -msgid "Blacklist" -msgstr "Lista Nera" - -msgid "Blocked" -msgstr "Bloccato" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "Spazio tempo" - -msgid "Client-Splash" -msgstr "Client-Splash" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" -"Client-Splash è un sistema di autenticazione hotspot per le reti mesh " -"wireless." - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "La velocità di download dei clienti è limitata a tale valore (kbyte/s)" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" -"I clienti che hanno accettato lo splash sono autorizzati ad utilizzare la " -"rete anche per molte ore." - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "La velocità di upload dei clienti è limitata a questo valore (kbyte/s)" - -msgid "Contact" -msgstr "Contatto" - -msgid "Decline" -msgstr "Rifiuta" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" -"Effettua una donazione per aiutare a mantenere in attività questo progetto." - -msgid "Download limit" -msgstr "Limite di download" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "Zona Firewall" - -msgid "General" -msgstr "Generale" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "Nome Host" - -msgid "IP Address" -msgstr "Indirizzo IP" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" -"Se si utilizza una propria apparecchiatura wifi utilizzare canali differenti " -"dalle nostre." - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" -"Se si utilizza questa rete su base regolare vi chiediamo il vostro sostegno:" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "Intercettare il traffico cliente su questa interfaccia" - -msgid "Interfaces" -msgstr "Interfacce" - -msgid "Interfaces that are used for Splash." -msgstr "Interfacce usate per lo Splash." - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" -"KB/s (Download/Upload). Si può essere in grado di rimuovere questo limite, " -"contribuendo attivamente a questo progetto." - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "Indirizzo MAC" - -msgid "MAC addresses in this list are blocked." -msgstr "gli indirizzi MAC in questo elenco sono bloccati." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" -"Gli indirizzi MAC dei clienti dell'elenco consentito. Questi non hanno " -"bisogno di accettare lo splash e non hanno la larghezza di banda limitata." - -msgid "Netmask" -msgstr "Maschera Rete" - -msgid "Network" -msgstr "Rete" - -msgid "No clients connected" -msgstr "Nessun cliente connesso" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" -"Si prega di notare che non siamo un provider di servizi internet, ma una " -"rete di comunità sperimentale." - -msgid "Policy" -msgstr "Politica" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "Salva" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "Le regole Splash sono integrate in questa zona firewall" - -msgid "Splashtext" -msgstr "Splashtext" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "Tempo restante" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" -"Per richiedere il motivo per cui sono state bloccate o chiedere l'accesso di " -"nuovo si può provare a contattare il proprietario di questo punto di accesso:" - -msgid "Traffic in/out" -msgstr "Traffico ingresso/uscita" - -msgid "Upload limit" -msgstr "Limite di upload" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "Benvenuti" - -msgid "Whitelist" -msgstr "Elenco Consentiti" - -msgid "You are now connected to the free wireless mesh network" -msgstr "Ora si è connessi alla rete mesh wireless gratuita" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" -"È possibile inserire il proprio testo che viene visualizzato ai clienti qui " -"
    È possibile utilizzare i seguenti marcatori.: ###COMMUNITY###, " -"###COMMUNITY_URL###, ###CONTACTURL###, ###LEASETIME###, ###LIMIT### and " -"###ACCEPT###." - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" -"L'accesso a questa rete è stata bloccata, molto probabilmente perché hai " -"fatto qualcosa che le nostre regole vietano espressamente." - -msgid "Your bandwidth is limited to" -msgstr "La tua larghezza di banda è limitata a" - -msgid "blacklisted" -msgstr "Lista Nera" - -msgid "expired" -msgstr "scaduto" - -msgid "optional when using host addresses" -msgstr "opzionale quando si utilizza indirizzi host" - -msgid "perform any kind of illegal activities" -msgstr "eseguire qualsiasi tipo di attività illegali" - -msgid "splashed" -msgstr "splashed" - -msgid "temporarily blocked" -msgstr "temporaneamente bloccato" - -msgid "unknown" -msgstr "sconosciuto" - -msgid "use filesharing applications on this network" -msgstr "utilizzare le applicazioni di filesharing su questa rete" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "sprecate banda con download o flussi inutili" - -msgid "whitelisted" -msgstr "Elenco contensiti" - -#~ msgid "" -#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. " -#~ "they are always allowed." -#~ msgstr "" -#~ "Le reti e gli host che sono elencate qui sono esclusi dallo splashing, cio* " -#~ "sono sempre ammessi." - -#~ msgid "By accepting these rules you can use this network for" -#~ msgstr "Accettando queste regole è possibile utilizzare questa rete per" - -#~ msgid "Edit Splash text" -#~ msgstr "Modifica il testo Splash" - -#~ msgid "hour(s). After this time you need to accept these rules again." -#~ msgstr "" -#~ "ora(e). Trascorso questo tempo è necessario accettare queste regole di " -#~ "nuovo." - -#~ msgid "the owner of this access point." -#~ msgstr "il proprietario di questo punto di accesso." diff --git a/package/luci/applications/luci-app-splash/po/ja/splash.po b/package/luci/applications/luci-app-splash/po/ja/splash.po deleted file mode 100644 index 615be16b23..0000000000 --- a/package/luci/applications/luci-app-splash/po/ja/splash.po +++ /dev/null @@ -1,292 +0,0 @@ -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/ms/splash.po b/package/luci/applications/luci-app-splash/po/ms/splash.po deleted file mode 100644 index 615be16b23..0000000000 --- a/package/luci/applications/luci-app-splash/po/ms/splash.po +++ /dev/null @@ -1,292 +0,0 @@ -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/no/splash.po b/package/luci/applications/luci-app-splash/po/no/splash.po deleted file mode 100644 index 615be16b23..0000000000 --- a/package/luci/applications/luci-app-splash/po/no/splash.po +++ /dev/null @@ -1,292 +0,0 @@ -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/pl/splash.po b/package/luci/applications/luci-app-splash/po/pl/splash.po deleted file mode 100644 index 68568848f0..0000000000 --- a/package/luci/applications/luci-app-splash/po/pl/splash.po +++ /dev/null @@ -1,385 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-24 06:17+0200\n" -"PO-Revision-Date: 2014-05-05 04:17+0200\n" -"Last-Translator: piosl \n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Accept" -msgstr "Akceptuj" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" -"Dostęp do internetu może być mimo wszystko możliwy, ponieważ niektórzy " -"aktywiści tego projektu dzielą się swoimi prywatnymi łączami. Te kilka łącz " -"jest rozdzielanych między wszystkich użytkowników. Oznacza to, że transfer " -"jest ograniczony. Z tego powodu prosimy, abyś nie:" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" -"Dostęp do sieci nie jest gwarantowany. Może być przerwany w każdej chwili i " -"bez podawania jakiegokolwiek powodu, dla niektórych urządzeń i/lub " -"niektórych użytkowników." - -msgid "Active Clients" -msgstr "Aktywni klienci" - -msgid "Allowed hosts/subnets" -msgstr "Dozwolone hosty/podsieci" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" -"Jako alternatywę do edycji pełnego tekstu powitalnego możesz po prostu " -"zawrzeć własny tekst wpisując go tutaj." - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" -"Limit transferu dla klientów jest aktywny tylko jeśli aktywne są oba limity " -"- pobierania i wysyłania. Ustaw 0, aby całkowicie wyłączyć to ograniczenie. " -"Nie dotyczy ono klientów z białej listy." - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" -"Zostań aktywnym członkiem tej społeczności i pomóż, zakładając własny węzeł" - -msgid "Blacklist" -msgstr "Czarna lista" - -msgid "Blocked" -msgstr "Zablokowane" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" -"Akceptując te zasady można korzystać z tej sieci na %s godzin(y). Po tym " -"czasie należy zaakceptować te zasady ponownie." - -# z niemieckiego tłumaczenia -#, fuzzy -msgid "Clearance time" -msgstr "Czas wyzwalacza" - -msgid "Client-Splash" -msgstr "Splash kliencki" - -# nie ma słowa "autentykacja" - to brzydka kalka z angielskiego. -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" -"Klient Splash - sposób uwierzytelniania użytkowników dla sieci WiFi oparty o " -"wyświetlanie komunikatów." - -#, fuzzy -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" -"Klienci są przekierowywani do tej strony po tym, jak zaakceptują powitanie. " -"Jeśli to miejsce jest puste zostaną przekierowani do strony którą wybrali." - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "Prędkość pobierania dla klienta jest ograniczona do wartości (kb/s)" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "Klienci, którzy zaakceptowali okienko mogą korzystać z sieci przez." - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "Prędkość pobierania dla klienta jest ograniczona do wartości (kb/s)" - -msgid "Contact" -msgstr "Kontakt" - -msgid "Decline" -msgstr "Odrzuć" - -#, fuzzy -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" -"Hosty przeznaczenia i sieci, które są wykluczone z powitania, tzn. są zawsze " -"dozwolone." - -msgid "Donate some money to help us keep this project alive." -msgstr "Możesz zasposorować ten projekt aby utrzymać go przy życiu" - -msgid "Download limit" -msgstr "Limit ściągania" - -msgid "Edit the complete splash text" -msgstr "Edit the complete splash text" - -msgid "Fair Use Policy" -msgstr "Zasady dozwolonego użytku" - -msgid "Firewall zone" -msgstr "Strefa firewall" - -msgid "General" -msgstr "Ogólne" - -msgid "Get in %s with the operator of this access point." -msgstr "Uzyskaj %s z operatorem tego punktu dostępu." - -msgid "Hostname" -msgstr "Nazwa hosta" - -msgid "IP Address" -msgstr "Adres IP" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" -"Jeśli używasz własnych urządzeń WiFi korzystaj z innych kanałów niż nasze." - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "Jeśli korzystasz z tej sieci regularnie prosimy cię o wsparcie." - -msgid "Include your own text in the default splash" -msgstr "Zamieść własny tekst w miejscu domyślnego powitania" - -msgid "Intercept client traffic on this Interface" -msgstr "Przechwytuj ruchu klienta w tym interfejsie" - -msgid "Interfaces" -msgstr "Interfejs" - -msgid "Interfaces that are used for Splash." -msgstr "Interfejsy wykorzystywane przez komunikat (Splash)" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" -"KB/s (Download/Upload). Będziesz w stanie usunąć ten limit jeśli aktywnie " -"przyłączysz się do tego projektu." - -msgid "Legally Prohibited Activities" -msgstr "Działania zabronione prawnie" - -msgid "Legally Prohibited content" -msgstr "Treści zabronione prawnie" - -msgid "MAC Address" -msgstr "Adres MAC" - -msgid "MAC addresses in this list are blocked." -msgstr "Adresy MAC z tej listy są zablokowane." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" -"Biała lista adresów MAC, wszyscy z tej listy nie muszą akceptować komunikatu " -"(Splash) i nie mają ograniczanego połączenia" - -msgid "Netmask" -msgstr "Maska sieci" - -msgid "Network" -msgstr "Sieć" - -msgid "No clients connected" -msgstr "Nie ma podłączonych klientów" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" -"Zwróć uwagę na to że nie jesteśmy providerem internetowym ale " -"eksperymentalną siecią" - -msgid "Policy" -msgstr "Zasady" - -msgid "Redirect target" -msgstr "przekierować cel" - -msgid "Safety" -msgstr "Bezpieczeństwo" - -msgid "Save" -msgstr "Zachowaj" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" -"Reguły komunikatu (Splash) są integrowane z ustawieniami firewalla tej strefy" - -msgid "Splashtext" -msgstr "Tekst komunikatu (Splash)" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" -"Sieci, takie jak Internet, są otwarte i nieszyfrowane. Każdy uczestnik jest " -"odpowiedzialny za bezpieczeństwo swoich połączeń i urządzeń." - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" -"Właściciel sieci nie ponosi odpowiedzialności za utratę danych, " -"nieautoryzowanego dostępu / uszkodzenia urządzeń lub strat finansowych, " -"które uczestnicy mogą ponieść podczas korzystania z sieci." - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" -"Uczestnik zobowiązuje się nie wykonywać żadnych działań, i powstrzymać się " -"od działań, które naruszają prawo lub naruszające prawa osób trzecich." - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" -"Uczestnik zobowiązuje się do nie przesyłania w sieci treści, które naruszają " -"prawo." - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" -"Uczestnik zobowiązuje się nie korzystać z sieci w sposób, który zagraża " -"infrastrukturze, samej sieci, jej podmiotom lub innym uczestnikom." - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" -"Niniejszy Regulamin reguluje wykorzystanie komputera w sieci przez swoich " -"uczestników, PDA, lub podobnego urządzenia (\"Urządzeń\") w ramach sieci." - -msgid "Time remaining" -msgstr "Pozostały czas" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" -"Aby poznać z jakiego powodu zostałeś zablokowany lub prosić o ponowne " -"odblokowanie możesz spróbować skontaktować się z właścicielem tego Access " -"Point'a:" - -msgid "Traffic in/out" -msgstr "Ruch do/od" - -msgid "Upload limit" -msgstr "Limit wysyłania" - -msgid "Usage Agreement" -msgstr "Umowa użytkowania" - -msgid "Welcome" -msgstr "Witamy" - -msgid "Whitelist" -msgstr "Biała lista" - -msgid "You are now connected to the free wireless mesh network" -msgstr "Jesteś teraz podłączony do darmowej sieci" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" -"Możesz umieścić tutaj własny tekst wyświetlany dla klientów.
    " -"Dopuszczalne jest używanie następujących znaków: ###COMMUNITY###, " -"###COMMUNITY_URL###, ###CONTACTURL###, ###LEASETIME###, ###LIMIT### and " -"###ACCEPT###." - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" -"Twój dostęp do sieci został zablokowany, najprawdopodobniej dlatego że " -"wykonałeś jedną z akcji zabronionych przez nasze reguły." - -msgid "Your bandwidth is limited to" -msgstr "Twój transfer jest ograniczony do" - -msgid "blacklisted" -msgstr "czarna lista" - -msgid "expired" -msgstr "wygasło" - -msgid "optional when using host addresses" -msgstr "opcjonalne w przypadku używania adresów hostów" - -msgid "perform any kind of illegal activities" -msgstr "wykonywał którąkolwiek z zakazanych akcji" - -msgid "splashed" -msgstr "Powitanie" - -msgid "temporarily blocked" -msgstr "tymczasowo zablokowane" - -msgid "unknown" -msgstr "nieznane" - -# Zgaduję, że to jest wyświetlane tuż po komunikacie nr 2, więc tak powinno pasować. -msgid "use filesharing applications on this network" -msgstr "używał programów do dzielenia się plikami w tej sieci" - -# j.w. -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "marnował transfer na niepotrzebne pobieranie plików i strumieni" - -msgid "whitelisted" -msgstr "biała lista" - -#~ msgid "" -#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. " -#~ "they are always allowed." -#~ msgstr "" -#~ "Hosty i sieci wylistowane tutaj są wyłączone z konieczności klikania " -#~ "komunikatu, zawsze mogą połączyć się do sieci." - -#~ msgid "By accepting these rules you can use this network for" -#~ msgstr "Akceptując te reguły możesz używać sieci do:" - -#~ msgid "Edit Splash text" -#~ msgstr "Edytuj tekst Komunikatu (Splash)" - -#~ msgid "hour(s). After this time you need to accept these rules again." -#~ msgstr "Czas po jakim musisz zaakceptować te reguły (w godzinach)" - -#~ msgid "the owner of this access point." -#~ msgstr "Właściciel tego Access Point'a" diff --git a/package/luci/applications/luci-app-splash/po/pt-br/splash.po b/package/luci/applications/luci-app-splash/po/pt-br/splash.po deleted file mode 100644 index cbdc8016c1..0000000000 --- a/package/luci/applications/luci-app-splash/po/pt-br/splash.po +++ /dev/null @@ -1,402 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-11-02 05:36+0200\n" -"PO-Revision-Date: 2014-06-21 19:10+0200\n" -"Last-Translator: Éder \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Accept" -msgstr "Aceitar" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" -"O acesso à internet, no entanto, pode ser possível porque alguns ativistas " -"deste projeto compartilham duas conexões privadas com a internet. Estas " -"poucas conexões são compartilhadas entre todos os usuários. Isto significa " -"que a banda disponível é limitada e, por este motivo, pedimos que você não " -"faça qualquer uma destas coisas:" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" -"O acesso à rede não é garantido. Ele pode ser interrompido a qualquer " -"momento sem aviso e por qualquer motivo, para alguns equipamentos e/ou pode " -"bloquear alguns usuários." - -msgid "Active Clients" -msgstr "Clientes Ativos" - -msgid "Allowed hosts/subnets" -msgstr "Subredes/equipamentos permitidos" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" -"Como uma alternativa a edição completa do texto do termo de uso, você pode " -"também entrar aqui algum texto personalizado para incluir na página padrão." - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" -"O limite da taxa de transferência somente é ativado quando ambos os limites, " -"para subir e baixar, estão definidos. Use o valor 0 para desabilitar " -"completamente esta limitação. Clientes na lista branca não são limitados." - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" -"Torne-se um membro ativo desta comunidade e ajude operando seu próprio nó." - -msgid "Blacklist" -msgstr "Lista negra" - -msgid "Blocked" -msgstr "Bloqueado" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" -"Aceitando estas regras, você pode usar esta rede por %s hora(s). Depois " -"deste prazo, você terá que aceitar estas regras novamente." - -msgid "Clearance time" -msgstr "Tempo de eliminação" - -msgid "Client-Splash" -msgstr "Client-Splash" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" -"Client-Splash é um sistema de autenticação de ponto de acesso para redes sem " -"fio em malha." - -# 20140621: edersg: tradução -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" -"Os clientes são redirecionados para esta página depois de terem aceitado a " -"*splash* Se esta for deixada em branco, eles são redirecionados para a " -"página que haviam solicitado." - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" -"A velocidade para baixar dos clientes é limitada por este valor (kbytes/s)" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" -"Os clientes que aceitarem o termo de uso estarão autorizados a usar a rede " -"por esta quantidade de horas." - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" -"A velocidade para subir dos clientes é limitada por este valor (kbytes/s)" - -msgid "Contact" -msgstr "Contato" - -msgid "Decline" -msgstr "Rejeitar" - -# 20140621: edersg: tradução -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" -"As redes e as máquinas de destino que são excluídas a partir da *splashing*, " -" são sempre permitidas." - -msgid "Donate some money to help us keep this project alive." -msgstr "Doar algum dinheiro para ajudar a manter este projeto vivo." - -msgid "Download limit" -msgstr "Limite para baixar" - -msgid "Edit the complete splash text" -msgstr "Edite todo o termo de uso" - -msgid "Fair Use Policy" -msgstr "Política de uso adequado" - -msgid "Firewall zone" -msgstr "Zona do Firewall" - -msgid "General" -msgstr "Geral" - -# Very strange text... Used at http://luci.subsignal.org/trac/browser/luci/trunk/applications/luci-splash/luasrc/view/splash/splash.htm:58 -msgid "Get in %s with the operator of this access point." -msgstr "Entre em %s com o operador deste ponto de acesso." - -msgid "Hostname" -msgstr "Nome do Equipamento" - -msgid "IP Address" -msgstr "Endereço IP" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" -"Se você opera seu próprio equipamento WiFi, use canais diferentes dos nossos." - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "Se você usa esta rede regularmente, nós pedimos a sua ajuda:" - -msgid "Include your own text in the default splash" -msgstr "Inclua seu próprio texto no termo de uso padrão" - -msgid "Intercept client traffic on this Interface" -msgstr "Interceptar o tráfego do cliente nesta interface" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interfaces that are used for Splash." -msgstr "Interfaces usadas pelo Splash." - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" -"KB/s (Baixando/Subindo). Você pode remover esta limitação contribuindo " -"ativamente para este projeto." - -msgid "Legally Prohibited Activities" -msgstr "Atividades Proibidas por Lei" - -msgid "Legally Prohibited content" -msgstr "Conteúdo Proibido por Lei" - -msgid "MAC Address" -msgstr "Endereço MAC" - -msgid "MAC addresses in this list are blocked." -msgstr "Os endereços MAC nesta lista serão bloqueados." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" -"Endereços MAC dos clientes na lista branca. Estes não precisam aceitar o " -"termo de uso e não possuem limitação na sua taxa de transferência." - -msgid "Netmask" -msgstr "Máscara de Rede" - -msgid "Network" -msgstr "Rede" - -msgid "No clients connected" -msgstr "Nenhum cliente conectado" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" -"Observe que nós não somos um provedor de internet mas uma rede comunitária " -"experimental." - -msgid "Policy" -msgstr "Política" - -# 20140621: edersg: tradução -msgid "Redirect target" -msgstr "Redirecionar alvo" - -msgid "Safety" -msgstr "Segurança" - -msgid "Save" -msgstr "Salvar" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "As regras do Slapsh estão integradas a esta zona do firewall" - -msgid "Splashtext" -msgstr "Texto do termo de uso" - -# 20140621: edersg: tradução -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" -"Uma rede como a Internet não é criptografada e aberta. Cada usuário é " -"responsável pela segurança de suas próprias conexões e dispositivos." - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" -"A rede sem fio aberta e livre dos voluntários (\"Operadores\") provê o " -"equipamento necessário e conexão com a Internet (\"Infraestrutura\") do seu " -"próprio bolso." - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" -"O operador não se responsabiliza por perda de dados, acesso não autorizado " -"ou dano aos dispositivos, ou perdas financeiras que os participantes possam " -"sofrer pelo o uso da rede." - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" -"O participante concorda que não realizará nenhuma atividade e se absterá de " -"atos que possam violar a lei ou infringir os direitos de terceiros." - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" -"O participante concorda em não transferir conteúdo pela rede que viole a lei." - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" -"O participante concorda em não usar a rede de qualquer maneira que possa " -"prejudicar a infraestrutura, a própria rede, seus operadores ou outros " -"participantes." - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" -"Estes \"Termos de Uso\" regem o uso da rede por equipamentos dos " -"participantes em uso desta rede." - -msgid "Time remaining" -msgstr "Tempo restante" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" -"Para perguntar por qual razão você foi bloqueado ou para solicitar novamente " -"seu acesso, você pode tentar contatar o dono deste ponto de acesso:" - -msgid "Traffic in/out" -msgstr "Tráfego de entrada/saída" - -msgid "Upload limit" -msgstr "Limite de subida" - -msgid "Usage Agreement" -msgstr "Acordo de Uso" - -msgid "Welcome" -msgstr "Bem-vindo" - -msgid "Whitelist" -msgstr "Lista branca" - -msgid "You are now connected to the free wireless mesh network" -msgstr "Você está agora conectado à rede livre em malha sem fio" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" -"Vocẽ pode entrar aqui com seu próprio texto que será mostrado para os " -"clientes.
    É possível usar os seguintes marcadores: ###COMMUNITY###, " -"###COMMUNITY_URL###, ###CONTACTURL###, ###LEASETIME###, ###LIMIT### and " -"###ACCEPT###." - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" -"Seu acesso para esta rede foi bloqueado, provavelmente porque você fez algo " -"que as regras explicitamente proibiam." - -msgid "Your bandwidth is limited to" -msgstr "Sua banda está limitada à" - -msgid "blacklisted" -msgstr "na lista negra" - -msgid "expired" -msgstr "expirado" - -msgid "optional when using host addresses" -msgstr "opcional quando é usado o endereço do equipamento" - -msgid "perform any kind of illegal activities" -msgstr "realizar qualquer tipo de atividades ilegais" - -msgid "splashed" -msgstr "termo mostrado" - -msgid "temporarily blocked" -msgstr "bloqueado temporariamente" - -msgid "unknown" -msgstr "desconhecido" - -msgid "use filesharing applications on this network" -msgstr "usar aplicativos de compartilhamento de arquivos nesta rede" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "usar banda com fluxos ou arquivos baixados não necessários" - -msgid "whitelisted" -msgstr "na lista branca" - -#~ msgid "" -#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. " -#~ "they are always allowed." -#~ msgstr "" -#~ "Equipamentos ou Redes listadas aqui estarão excluídas do termo de uso. Eles " -#~ "estarão sempre autorizados." - -#~ msgid "By accepting these rules you can use this network for" -#~ msgstr "Aceitando estas regras, você pode usar esta rede para" - -#~ msgid "Edit Splash text" -#~ msgstr "Editar texto do termo de uso" - -#~ msgid "hour(s). After this time you need to accept these rules again." -#~ msgstr "" -#~ "horas(s). Depois deste tempo, você terá que aceitar as regras novamente." - -#~ msgid "the owner of this access point." -#~ msgstr "o dono deste ponto de acesso." - -#~ msgid "" -#~ "You can change the text that is displayed to clients here.
    It is " -#~ "possible to use the following markers: ###COMMUNITY###, " -#~ "###COMMUNITY_URL###, ###LEASETIME### and ###ACCEPT###.
    Click here to " -#~ "test the splash page after you saved it." -#~ msgstr "" -#~ "Aqui você pode mudar o texto do termo de uso que é mostrado aos clientes." -#~ "
    É possível usar as seguintes marcações: ###COMMUNITY###, " -#~ "###COMMUNITY_URL###, ###LEASETIME### e ###ACCEPT###.
    Clique aqui " -#~ "para testar a página de termo de uso depois " -#~ "que você salvá-la." diff --git a/package/luci/applications/luci-app-splash/po/pt/splash.po b/package/luci/applications/luci-app-splash/po/pt/splash.po deleted file mode 100644 index 05bee4f323..0000000000 --- a/package/luci/applications/luci-app-splash/po/pt/splash.po +++ /dev/null @@ -1,309 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-05-31 22:29+0200\n" -"PO-Revision-Date: 2013-06-03 12:17+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Accept" -msgstr "Aceitar" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "Clientes Activos" - -msgid "Allowed hosts/subnets" -msgstr "Hosts/Subnets permitidos" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "Bloqueado" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "Aceitando estas regras só pode usar esta regra para" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "A velocidade de upload está limitado a (kbyte/s)" - -msgid "Contact" -msgstr "Contacto" - -msgid "Decline" -msgstr "Declinar" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "Doe algum dinheiro para nos ajudar a manter este projeto vivo." - -msgid "Download limit" -msgstr "Limite de Download" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "Zona de Firewall" - -msgid "General" -msgstr "Geral" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "Nome de Host" - -msgid "IP Address" -msgstr "Endereço IP" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" -"Se tem o seu próprio equipamento de rede wireless, use canais diferentes dos " -"nossos." - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "Endereço MAC" - -msgid "MAC addresses in this list are blocked." -msgstr "Endereços MAC nesta lista estão bloqueados." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "Mascara de Rede" - -msgid "Network" -msgstr "Rede" - -msgid "No clients connected" -msgstr "Não há clientes ligados" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "Gravar" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "Limite de Upload" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "Bem-vindo" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "A largura de banda está limitada a" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "desconhecido" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/ro/splash.po b/package/luci/applications/luci-app-splash/po/ro/splash.po deleted file mode 100644 index 615be16b23..0000000000 --- a/package/luci/applications/luci-app-splash/po/ro/splash.po +++ /dev/null @@ -1,292 +0,0 @@ -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/ru/splash.po b/package/luci/applications/luci-app-splash/po/ru/splash.po deleted file mode 100644 index 3f470dba0d..0000000000 --- a/package/luci/applications/luci-app-splash/po/ru/splash.po +++ /dev/null @@ -1,362 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: splash\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-01-26 15:10+0200\n" -"PO-Revision-Date: 2013-11-13 18:52+0200\n" -"Last-Translator: Роман \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Accept" -msgstr "Принять" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" -"Доступ к интернету возможен благодаря некоторым активистам данного проекта, " -"которые делают общедоступным своё личное подключение к интернету. Эти " -"немногие подключения разделяются среди всех пользователей. Это означает, что " -"доступная пропускная способность ограничена и поэтому мы просим вас не " -"делать следующего:" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "Активные клиенты" - -msgid "Allowed hosts/subnets" -msgstr "Разрешённые хосты/подсети" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" -"Ограничение полосы для клиентов активируется только при указанных лимитах " -"нисходящего и восходящего каналов. Значение 0 полностью отключает " -"ограничение. Клиенты из \"белого\" списка не имеют ограничений." - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" -"Станьте активным участником данного сообщества и окажите содействие, " -"запустив свой узел сети" - -msgid "Blacklist" -msgstr "Чёрный список" - -msgid "Blocked" -msgstr "Заблокирован" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "Разрешённое время" - -msgid "Client-Splash" -msgstr "Client-Splash" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" -"Client-Splash - это система аутентификации точек доступа для беспроводных " -"ячеистых сетей." - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" -"Скорость нисходящего канала для клиентов ограничена этим значением (КБ/c)" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" -"Клиенты, принявшие приглашение splash-экрана, могут использовать сеть данное " -"количество часов." - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" -"Скорость восходящего канала для клиентов ограничена этим значением (КБ/c)" - -msgid "Contact" -msgstr "Связаться" - -msgid "Decline" -msgstr "Отклонить" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "Пожертвовать деньги на поддержку этого проекта." - -msgid "Download limit" -msgstr "Лимит загрузки" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "Политика добровольного использования" - -msgid "Firewall zone" -msgstr "Зона межсетевого экрана" - -msgid "General" -msgstr "Общие" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "Имя хоста" - -msgid "IP Address" -msgstr "IP-адрес" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" -"Если вы используете собственное оборудование Wi-Fi, используйте каналы, " -"отличающиеся от наших." - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "Если вы используете эту сеть регулярно, мы просим вашей поддержки:" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "Перехватывать клиентский трафик на этом интерфейсе" - -msgid "Interfaces" -msgstr "Интерфейсы" - -msgid "Interfaces that are used for Splash." -msgstr "Интерфейсы, используемые для Splash." - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" -"КБ/с (загрузка/отдача). Данное ограничение может быть снято при активном " -"участии в этом проекте." - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "Юридически запрещенный контент" - -msgid "MAC Address" -msgstr "MAC-адрес" - -msgid "MAC addresses in this list are blocked." -msgstr "MAC-адреса из этого списка заблокированы." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" -"MAC-адреса клиентов из \"белого\" списка. Данные клиенты не имеют " -"ограничений пропускной способности." - -msgid "Netmask" -msgstr "Маска сети" - -msgid "Network" -msgstr "Сеть" - -msgid "No clients connected" -msgstr "Клиенты не подключены" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" -"Пожалуйста, обратите внимание, что мы не интернет-провайдер, а " -"экспериментальная сеть сообщества." - -msgid "Policy" -msgstr "Политика" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "Безопасный" - -msgid "Save" -msgstr "Сохранить" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "Правила Splash интегрированы в зону этого межсетевого экрана" - -msgid "Splashtext" -msgstr "Текст splash-экрана" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "Оставшееся время" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" -"Чтобы узнать причину, по которой вас заблокировали, или снова получить " -"доступ, свяжитесь с владельцем данной точки доступа:" - -msgid "Traffic in/out" -msgstr "Трафик вх/исх" - -msgid "Upload limit" -msgstr "Лимит отдачи" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "Добро пожаловать" - -msgid "Whitelist" -msgstr "\"Белый\" список" - -msgid "You are now connected to the free wireless mesh network" -msgstr "Теперь вы подключены к бесплатной беспроводной ячеистой сети" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" -"Здесь вы можете указать свой текст, который будет отображаться клиентам.
    Возможно использовать следующие маркеры: ###COMMUNITY###, " -"###COMMUNITY_URL###, ###CONTACTURL###, ###LEASETIME###, ###LIMIT### and " -"###ACCEPT###." - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" -"Доступ к этой сети был заблокирован, скорее всего, потому, что вы сделали " -"что-то, что наши правила явно запрещают." - -msgid "Your bandwidth is limited to" -msgstr "Ваша полоса пропускания ограничена значением" - -msgid "blacklisted" -msgstr "в \"чёрном\" списке" - -msgid "expired" -msgstr "истёк" - -msgid "optional when using host addresses" -msgstr "опционально при использовании хост-адресов" - -msgid "perform any kind of illegal activities" -msgstr "выполнять любые незаконные действия" - -msgid "splashed" -msgstr "уже в splash" - -msgid "temporarily blocked" -msgstr "временно заблокирован" - -msgid "unknown" -msgstr "неизвестный" - -msgid "use filesharing applications on this network" -msgstr "использование файлообменных приложений в этой сети" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "тратить пропускную способность на ненужные загрузки или потоки" - -msgid "whitelisted" -msgstr "в \"белом\" списке" - -#~ msgid "" -#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. " -#~ "they are always allowed." -#~ msgstr "" -#~ "Перечисленные хосты и сети не получают приглашения splash-экрана, т.е. они " -#~ "всегда разрешены." - -#~ msgid "By accepting these rules you can use this network for" -#~ msgstr "Принимая эти правила, вы можете использовать данную сеть для" - -#~ msgid "Edit Splash text" -#~ msgstr "Редактировать текст splash-экрана" - -#~ msgid "hour(s). After this time you need to accept these rules again." -#~ msgstr "" -#~ "час(ы). После указанного времени Вы должны вновь принять эти правила." - -# Здесь наверняка нужно склонить в другом падеже, надо смотреть по контексту -#~ msgid "the owner of this access point." -#~ msgstr "с владельцем этой точки доступа." diff --git a/package/luci/applications/luci-app-splash/po/sk/splash.po b/package/luci/applications/luci-app-splash/po/sk/splash.po deleted file mode 100644 index e9dd448ec5..0000000000 --- a/package/luci/applications/luci-app-splash/po/sk/splash.po +++ /dev/null @@ -1,303 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/sv/splash.po b/package/luci/applications/luci-app-splash/po/sv/splash.po deleted file mode 100644 index a5ebcb7efe..0000000000 --- a/package/luci/applications/luci-app-splash/po/sv/splash.po +++ /dev/null @@ -1,320 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Kristoffer Grundström \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Accept" -msgstr "Acceptera" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "Aktiva klienter" - -msgid "Allowed hosts/subnets" -msgstr "Tillåtna värdar/subnät" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" -"Bli en aktiv medlem av det här sällskapet och hjälp till genom att " -"tillhandahålla en egen nod" - -msgid "Blacklist" -msgstr "Svartlista" - -msgid "Blocked" -msgstr "Blockerad" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" -"Klienternas nerladdningshastighet är begränsad till det här värdet (kbyte/s)" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" -"Klienternas uppladdningshastighet är begränsad till det här värdet (kbyte/s)" - -msgid "Contact" -msgstr "Kontakt" - -msgid "Decline" -msgstr "Neka" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" -"Donera lite pengar för att hjälpa oss att hålla det här projektet vid liv." - -msgid "Download limit" -msgstr "Begränsning av nerladdning" - -msgid "Edit the complete splash text" -msgstr "Redigera den slutgiltiga splash-texten" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "Brandväggszon" - -msgid "General" -msgstr "Generell" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "Värdnamn" - -msgid "IP Address" -msgstr "IP-adress" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" -"Om du använder det här nätverket med jämna mellanrum så ber vi dig om hjälp:" - -msgid "Include your own text in the default splash" -msgstr "Inkludera din egna text i standard-splash" - -msgid "Intercept client traffic on this Interface" -msgstr "Fånga upp klientens trafik i det här Gränssnittet" - -msgid "Interfaces" -msgstr "Gränssnitt" - -msgid "Interfaces that are used for Splash." -msgstr "Gränssnitten som används för Splash." - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" -"KB/s (Nerladdning/Uppladdning). Du kan ha möjlighet att ta bort den här " -"begränsningen genom att aktivt bidra till det här projektet." - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "MAC-adress" - -msgid "MAC addresses in this list are blocked." -msgstr "MAC-adresser i den här listan blir blockerade." - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" -"MAC-adresser till vitlistade klienter. De här behöver inte acceptera splash " -"och har ingen bandbreddsbegränsning." - -msgid "Netmask" -msgstr "Nätmask" - -msgid "Network" -msgstr "Nätverk" - -msgid "No clients connected" -msgstr "Inga klienter anslutna" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" -"Vänligen lägg märke till att vi är inte en internet-leverantör utan ett " -"experimentiellt nätverk för gemenskap" - -msgid "Policy" -msgstr "Villkor" - -msgid "Redirect target" -msgstr "Omdirigera mål" - -msgid "Safety" -msgstr "Säkerhet" - -msgid "Save" -msgstr "Spara" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "Splash-regler är integrerade i den här brandväggszonen" - -msgid "Splashtext" -msgstr "Splash-text" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" -"Precis som internet så är det här nätverket utan kryptering och öppet. Varje " -"deltagare är ansvarig för säkerheten i deras egna anslutningar och enheter." - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "Återstående tid" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "In/ut-trafik" - -msgid "Upload limit" -msgstr "Gräns för uppladdningar" - -msgid "Usage Agreement" -msgstr "Användningsavtal" - -msgid "Welcome" -msgstr "Välkommen" - -msgid "Whitelist" -msgstr "Vitlista" - -msgid "You are now connected to the free wireless mesh network" -msgstr "Du är nu ansluten till det fria trådlösa mesh-nätverket" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" -"Du kan fylla i din egen text som visas här för klienterna.
    />Det är " -"möjligt att använda följande markörer: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### och ###ACCEPT###." - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "Din bandbredd är begränsas till" - -msgid "blacklisted" -msgstr "svartlistad" - -msgid "expired" -msgstr "slutade gälla" - -msgid "optional when using host addresses" -msgstr "valfritt vid användning av värdadresser" - -msgid "perform any kind of illegal activities" -msgstr "utför några slags olagliga aktiviteter" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "tillfälligt blockerad" - -msgid "unknown" -msgstr "okänd" - -msgid "use filesharing applications on this network" -msgstr "använd fildelningsapplikationer i det här nätverket" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "slösa bandbredd med onödiga nerladdningar eller strömmar" - -msgid "whitelisted" -msgstr "vitlistad" diff --git a/package/luci/applications/luci-app-splash/po/templates/splash.pot b/package/luci/applications/luci-app-splash/po/templates/splash.pot deleted file mode 100644 index f29b736915..0000000000 --- a/package/luci/applications/luci-app-splash/po/templates/splash.pot +++ /dev/null @@ -1,295 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/tr/splash.po b/package/luci/applications/luci-app-splash/po/tr/splash.po deleted file mode 100644 index 03fa7b3b74..0000000000 --- a/package/luci/applications/luci-app-splash/po/tr/splash.po +++ /dev/null @@ -1,303 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/uk/splash.po b/package/luci/applications/luci-app-splash/po/uk/splash.po deleted file mode 100644 index 2364c63d41..0000000000 --- a/package/luci/applications/luci-app-splash/po/uk/splash.po +++ /dev/null @@ -1,304 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/vi/splash.po b/package/luci/applications/luci-app-splash/po/vi/splash.po deleted file mode 100644 index 615be16b23..0000000000 --- a/package/luci/applications/luci-app-splash/po/vi/splash.po +++ /dev/null @@ -1,292 +0,0 @@ -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/po/zh-cn/splash.po b/package/luci/applications/luci-app-splash/po/zh-cn/splash.po deleted file mode 100644 index 4ad7404701..0000000000 --- a/package/luci/applications/luci-app-splash/po/zh-cn/splash.po +++ /dev/null @@ -1,321 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-28 08:58+0200\n" -"PO-Revision-Date: 2014-07-23 02:07+0200\n" -"Last-Translator: Tanyingyu \n" -"Language-Team: LANGUAGE \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" - -msgid "Accept" -msgstr "接收" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "活动的客户端" - -msgid "Allowed hosts/subnets" -msgstr "允许的 主机/掩码" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" -"只有当 上传和下载的限制都设置的时候对客户端的带宽限制才会生效。在这里使用0 可" -"以完全禁用此限制。白名单客户端不受限制。" - -# Something wwrong? -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "成为这个社区的一个活跃成员并且运营您自己的节点以帮助别人。" - -msgid "Blacklist" -msgstr "黑名单" - -msgid "Blocked" -msgstr "锁定" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "清理时间" - -msgid "Client-Splash" -msgstr "客户端弹窗" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "Client-Splash是无线MESH网络的一个热点认证系统" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "客户端下载速度限制为此值(kbyte/s)" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "已接受Splash的客户端允许使用这个网络N小时" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "客户端上传速度限制为此值(kbyte/s)" - -msgid "Contact" -msgstr "联系" - -msgid "Decline" -msgstr "下降" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "捐助我们一些钱以帮助我们维护这个项目。" - -msgid "Download limit" -msgstr "下载限制" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "防火墙区域" - -msgid "General" -msgstr "概述" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "主机名" - -msgid "IP Address" -msgstr "IP地址" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "如果您操作您自有的wifi设备,使用与我们不同的频道" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "如果您经常使用这个网络,我们需要您的支持" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "在这个接口上拦截客户端通信流量" - -msgid "Interfaces" -msgstr "接口" - -msgid "Interfaces that are used for Splash." -msgstr "Splash使用的接口" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "法律禁止行为" - -msgid "Legally Prohibited content" -msgstr "法律禁止内容" - -msgid "MAC Address" -msgstr "MAC地址" - -msgid "MAC addresses in this list are blocked." -msgstr "在本列表中的MAC地址将被阻挡" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "白名单中的MAC地址,可不用接受splash,同时没有带宽限制。" - -msgid "Netmask" -msgstr "网络掩码" - -msgid "Network" -msgstr "网络" - -msgid "No clients connected" -msgstr "无客户端连接" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "我们不是ISP(互联网运行商),仅仅只是一个实验性的社区网络。" - -msgid "Policy" -msgstr "策略" - -msgid "Redirect target" -msgstr "重定向目标" - -msgid "Safety" -msgstr "安全" - -msgid "Save" -msgstr "保存" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "流量 入/出" - -msgid "Upload limit" -msgstr "上传限制" - -msgid "Usage Agreement" -msgstr "使用协议" - -msgid "Welcome" -msgstr "欢迎" - -msgid "Whitelist" -msgstr "白名单" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "您的带宽限制为" - -msgid "blacklisted" -msgstr "黑名单" - -msgid "expired" -msgstr "过期" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" - -#~ msgid "" -#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. " -#~ "they are always allowed." -#~ msgstr "列在这里的主机和网络都排除在Splashing之外,例如:一直被允许访问。" - -#~ msgid "By accepting these rules you can use this network for" -#~ msgstr "接受这些条款以便使用这个网络" - -#~ msgid "Edit Splash text" -#~ msgstr "编辑Splash文本" diff --git a/package/luci/applications/luci-app-splash/po/zh-tw/splash.po b/package/luci/applications/luci-app-splash/po/zh-tw/splash.po deleted file mode 100644 index 1125abfeda..0000000000 --- a/package/luci/applications/luci-app-splash/po/zh-tw/splash.po +++ /dev/null @@ -1,302 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Accept" -msgstr "" - -msgid "" -"Access to the internet might be possible nevertheless, because some " -"activists of this project share their private internet connections. These " -"few connections are shared between all users. That means available bandwidth " -"is limited and because of this we ask you not to do any of the following:" -msgstr "" - -msgid "" -"Access to the network is not guaranteed. It can be interrupted at any time " -"without notice for any reason, for certain devices, and/or may be blocked " -"for certain users." -msgstr "" - -msgid "Active Clients" -msgstr "" - -msgid "Allowed hosts/subnets" -msgstr "" - -msgid "" -"As an alternative to editing the complete splash text you can also just " -"include some custom text in the default splash page by entering it here." -msgstr "" - -msgid "" -"Bandwidth limit for clients is only activated when both up- and download " -"limit are set. Use a value of 0 here to completely disable this limitation. " -"Whitelisted clients are not limited." -msgstr "" - -msgid "" -"Become an active member of this community and help by operating your own node" -msgstr "" - -msgid "Blacklist" -msgstr "" - -msgid "Blocked" -msgstr "" - -msgid "" -"By accepting these rules you can use this network for %s hour(s). After this " -"time you need to accept these rules again." -msgstr "" - -msgid "Clearance time" -msgstr "" - -msgid "Client-Splash" -msgstr "" - -msgid "" -"Client-Splash is a hotspot authentification system for wireless mesh " -"networks." -msgstr "" - -msgid "" -"Clients are redirected to this page after they have accepted the splash. If " -"this is left empty they are redirected to the page they had requested." -msgstr "" - -msgid "Clients download speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "" -"Clients that have accepted the splash are allowed to use the network for " -"that many hours." -msgstr "" - -msgid "Clients upload speed is limited to this value (kbyte/s)" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Decline" -msgstr "" - -msgid "" -"Destination hosts and networks that are excluded from splashing, i.e. they " -"are always allowed." -msgstr "" - -msgid "Donate some money to help us keep this project alive." -msgstr "" - -msgid "Download limit" -msgstr "" - -msgid "Edit the complete splash text" -msgstr "" - -msgid "Fair Use Policy" -msgstr "" - -msgid "Firewall zone" -msgstr "" - -msgid "General" -msgstr "" - -msgid "Get in %s with the operator of this access point." -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP Address" -msgstr "" - -msgid "" -"If you operate your own wifi equipment use channels different from ours." -msgstr "" - -msgid "If you use this network on a regular basis we ask for your support:" -msgstr "" - -msgid "Include your own text in the default splash" -msgstr "" - -msgid "Intercept client traffic on this Interface" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interfaces that are used for Splash." -msgstr "" - -msgid "" -"KB/s (Download/Upload). You may be able to remove this limit by actively " -"contributing to this project." -msgstr "" - -msgid "Legally Prohibited Activities" -msgstr "" - -msgid "Legally Prohibited content" -msgstr "" - -msgid "MAC Address" -msgstr "" - -msgid "MAC addresses in this list are blocked." -msgstr "" - -msgid "" -"MAC addresses of whitelisted clients. These do not need to accept the splash " -"and are not bandwidth limited." -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "No clients connected" -msgstr "" - -msgid "" -"Please note that we are not an internet service provider but an experimental " -"community network." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Redirect target" -msgstr "" - -msgid "Safety" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Splash rules are integrated in this firewall zone" -msgstr "" - -msgid "Splashtext" -msgstr "" - -msgid "" -"The network, like the Internet, is unencrypted and open. Each participant is " -"responsible for the safety of their own connections and devices." -msgstr "" - -msgid "" -"The open and free wireless network of volunteers (\"Operators\") provides " -"the necessary equipment and Internet connections (\"Infrastructure\") at " -"their own expense." -msgstr "" - -msgid "" -"The operator claims no liability for loss of data, unauthorized access/" -"damage to devices, or financial losses that participants may suffer from the " -"use of the network." -msgstr "" - -msgid "" -"The participant agrees to not perform any action and refrain from acts which " -"may violate the law or infringe upon the rights of third parties." -msgstr "" - -msgid "" -"The participant agrees to not transfer content over the network which " -"violates the law." -msgstr "" - -msgid "" -"The participant agrees to not use the network in any way which will harm the " -"infrastructure, the network itself, its operators or other participants." -msgstr "" - -msgid "" -"These Terms of Use govern the use of the network by its participants' " -"computer, PDA, or similar device (\"Devices\") within the network." -msgstr "" - -msgid "Time remaining" -msgstr "" - -msgid "" -"To ask for the reason why you have been blocked or ask for access again you " -"can try to contact the owner of this access point:" -msgstr "" - -msgid "Traffic in/out" -msgstr "" - -msgid "Upload limit" -msgstr "" - -msgid "Usage Agreement" -msgstr "" - -msgid "Welcome" -msgstr "" - -msgid "Whitelist" -msgstr "" - -msgid "You are now connected to the free wireless mesh network" -msgstr "" - -msgid "" -"You can enter your own text that is displayed to clients here.
    It is " -"possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, " -"###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###." -msgstr "" - -msgid "" -"Your access to this network has been blocked, most likely because you did " -"something that our rules explicitly forbid." -msgstr "" - -msgid "Your bandwidth is limited to" -msgstr "" - -msgid "blacklisted" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "optional when using host addresses" -msgstr "" - -msgid "perform any kind of illegal activities" -msgstr "" - -msgid "splashed" -msgstr "" - -msgid "temporarily blocked" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "use filesharing applications on this network" -msgstr "" - -msgid "waste bandwidth with unneccesary downloads or streams" -msgstr "" - -msgid "whitelisted" -msgstr "" diff --git a/package/luci/applications/luci-app-splash/root/etc/config/luci_splash b/package/luci/applications/luci-app-splash/root/etc/config/luci_splash deleted file mode 100644 index c4cfef5dd9..0000000000 --- a/package/luci/applications/luci-app-splash/root/etc/config/luci_splash +++ /dev/null @@ -1,2 +0,0 @@ -config core general - option leasetime 1 \ No newline at end of file diff --git a/package/luci/applications/luci-app-splash/root/etc/config/luci_splash_leases b/package/luci/applications/luci-app-splash/root/etc/config/luci_splash_leases deleted file mode 100644 index 6afdd90ede..0000000000 --- a/package/luci/applications/luci-app-splash/root/etc/config/luci_splash_leases +++ /dev/null @@ -1 +0,0 @@ -# This file should always stay empty and is just needed to be able to use this config in /var/state! diff --git a/package/luci/applications/luci-app-splash/root/etc/hotplug.d/iface/25-splash b/package/luci/applications/luci-app-splash/root/etc/hotplug.d/iface/25-splash deleted file mode 100644 index 045e908c72..0000000000 --- a/package/luci/applications/luci-app-splash/root/etc/hotplug.d/iface/25-splash +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -[ "$ACTION" = ifup ] || exit 0 - -/etc/init.d/firewall enabled || exit 0 - -if [ -x /etc/init.d/luci_splash ]; then - restart_splash() { - local net="$1" - if [ "$INTERFACE" = "$net" ]; then - logger -t splash "Reloading splash firewall rules due to ifup of $INTERFACE ($DEVICE)" - /etc/init.d/luci_splash restart - fi - } - config_load luci_splash - config_foreach restart_splash iface -fi diff --git a/package/luci/applications/luci-app-splash/root/etc/init.d/luci_splash b/package/luci/applications/luci-app-splash/root/etc/init.d/luci_splash deleted file mode 100755 index feefabd81a..0000000000 --- a/package/luci/applications/luci-app-splash/root/etc/init.d/luci_splash +++ /dev/null @@ -1,362 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=70 -EXTRA_COMMANDS=clear_leases -LIMIT_DOWN=0 -LIMIT_DOWN_BURST=0 -LIMIT_UP=0 -TC=/usr/sbin/tc -IPT=/usr/sbin/iptables -IPT6=/usr/sbin/ip6tables - -IPT_REPLAY=/var/run/luci_splash.iptlog -LOCK=/var/run/luci_splash.lock -[ -x $IPT6 ] && [ -f /proc/net/ipv6_route ] && HAS_IPV6=1 - -silent() { - "$@" 2>/dev/null -} - -ipt_log() { - $IPT -I "$@" - echo $IPT -D "$@" >> $IPT_REPLAY -} - -ipt6_log() { - [ "$HAS_IPV6" = 1 ] || return - $IPT6 -I "$@" - echo $IPT6 -D "$@" >> $IPT_REPLAY -} - - -iface_add() { - local cfg="$1" - - config_get zone "$cfg" zone - [ -n "$zone" ] || return 0 - - config_get net "$cfg" network - [ -n "$net" ] || return 0 - - config_get ifname "$net" ifname - [ -n "$ifname" ] || return 0 - - config_get ipaddr "$net" ipaddr - [ -n "$ipaddr" ] || return 0 - - config_get netmask "$net" netmask - [ -n "$netmask" ] || return 0 - - config_get ip6addr "$net" ip6addr - - config_get type "$net" type - - parentiface="$(uci -q get network.${net}.ifname)" - - [ -n "$parentiface" ] && [ ! "$type" = "bridge" ] && { - parentiface=${parentiface#@} - config_get parentproto "$parentiface" proto - config_get parentipaddr "$parentiface" ipaddr - config_get parentnetmask "$parentiface" netmask - } - - eval "$(ipcalc.sh $ipaddr $netmask)" - - logger -s -p info -t splash "Add $NETWORK/$PREFIX ($ifname) to splashed networks." - - ### Add interface specific chain entry rules - ipt_log "prerouting_${zone}_rule" -i "${ifname%:*}" -s "$NETWORK/$PREFIX" -j luci_splash_prerouting -t nat - ipt_log "forwarding_${zone}_rule" -i "${ifname%:*}" -s "$NETWORK/$PREFIX" -j luci_splash_forwarding -t filter - - if [ "$HAS_IPV6" = 1 ] && [ -n "$ip6addr" ]; then - ipt6_log "forwarding_${zone}_rule" -i "${ifname%:*}" -s "$ip6addr" -j luci_splash_forwarding -t filter - fi - - ### Allow traffic to the same subnet - $IPT -t nat -I luci_splash_prerouting -d "$ipaddr/${netmask:-32}" -j RETURN - $IPT -t filter -I luci_splash_forwarding -d "$ipaddr/${netmask:-32}" -j RETURN - - ### Allow traffic to the mesh subnet - [ "$parentproto" = "static" -a -n "$parentipaddr" ] && { - $IPT -t nat -I luci_splash_prerouting -d "$parentipaddr/${parentnetmask:-32}" -j RETURN - $IPT -t filter -I luci_splash_forwarding -d "$parentipaddr/${parentnetmask:-32}" -j RETURN - } - - qos_iface_add "$ifname" "$NETWORK" "$PREFIX" -} - -iface_del() { - config_get zone "$1" zone - [ -n "$zone" ] || return 0 - - config_get net "$1" network - [ -n "$net" ] || return 0 - - config_get ifname "$net" ifname - [ -n "$ifname" ] || return 0 - - # Clear interface specific rules - [ -s $IPT_REPLAY ] && { - logger -s -p info -t splash "Remove $ifname from splashed networks." - grep -- "-i ${ifname%:*}" $IPT_REPLAY | while read ln; do silent $ln; done - sed -ie "/-i ${ifname%:*}/d" $IPT_REPLAY - } - - qos_iface_del "$ifname" -} - -mac_add() { - config_get mac "$1" mac - append MACS "$mac" -} - -whitelist_add() { - config_get mac "$1" mac - iface=$2 - $TC filter add dev "$iface" parent ffff: protocol ip prio 1 u32 match ether src $mac police pass - $TC filter add dev "$iface" parent 1:0 protocol ip prio 1 u32 match ether dst $mac classid 1:1 -} - - -subnet_add() { - local cfg="$1" - - config_get ipaddr "$cfg" ipaddr - config_get netmask "$cfg" netmask - - [ -n "$ipaddr" ] && { - $IPT -t nat -I luci_splash_prerouting -d "$ipaddr/${netmask:-32}" -j RETURN - $IPT -t filter -I luci_splash_forwarding -d "$ipaddr/${netmask:-32}" -j RETURN - } -} - -qos_iface_add() { - local iface="$1" - local network="$2" - local prefix="$3" - - # 77 -> download root qdisc - # ffff -> upload root qdisc - - silent $TC qdisc del dev "$iface" root handle 1: - silent $TC class del dev "$iface" parent 1: classid 1:ffff - silent $TC class del dev "$iface" parent 1: classid 1:1 - silent $TC filter del dev "$iface" parent ffff: protocol ip prio 1 u32 - silent $TC filter del dev "$iface" parent ffff: protocol ip prio 2 u32 - silent $TC filter del dev "$iface" parent ffff: protocol ip prio 3 u32 - - if [ "$LIMIT_UP" -gt 0 -a "$LIMIT_DOWN" -gt 0 ]; then - # Setup qdiscs - $TC qdisc add dev "$iface" root handle 1: htb default 1 - silent $TC qdisc add dev "$iface" ingress - - # Default class - all clients which are not otherwise handled are put in that class - # and share that bandwidth. - $TC class add dev "$iface" parent 1: classid 1:ffff htb rate ${LIMIT_DOWN}kbit - - # default class and class for whitelisted clients = unlimited - $TC class add dev "$iface" parent 1: classid 1:1 htb rate 100mbit - - # All traffic to the dhcp subnet is put into the limited class - $TC filter add dev "$iface" parent 1:0 protocol ip prio 3 u32 match ip dst $network/$prefix classid 1:ffff - $TC qdisc add dev "$iface" parent 1:ffff sfq perturb 10 - $TC filter add dev "$iface" parent ffff: protocol ip prio 3 u32 match ip src $network/$prefix police rate ${LIMIT_UP}kbit mtu 6k burst 6k drop - - # classify packets by their iptables MARK set in luci_splash_mark_in (mangle table) - # every client gets his own class and so his own bandwidth limit - $TC filter add dev "$iface" parent 1:0 protocol ip prio 2 fw - - config_foreach whitelist_add whitelist $iface - fi -} - -qos_iface_del() { - local iface="$1" - silent $TC qdisc del dev "$iface" root handle 77: -} - -boot() { - ### Setup splash-relay - uci get uhttpd.splash 2>/dev/null || { -uci batch < $IPT_REPLAY - - ### Add interface independant prerouting rules - $IPT -t nat -A luci_splash_prerouting -j luci_splash_leases - $IPT -t nat -A luci_splash_leases -p udp --dport 53 -j REDIRECT --to-ports 53 - $IPT -t nat -A luci_splash_leases -p tcp --dport 80 -j REDIRECT --to-ports 8082 - - ### Add interface independant forwarding rules - $IPT -t filter -A luci_splash_forwarding -j luci_splash_filter - $IPT -t filter -A luci_splash_filter -p tcp -j REJECT --reject-with tcp-reset - $IPT -t filter -A luci_splash_filter -j REJECT --reject-with icmp-net-prohibited - - if [ "$HAS_IPV6" = 1 ]; then - $IPT6 -t filter -A luci_splash_forwarding -j luci_splash_filter - $IPT6 -t filter -A luci_splash_filter -p tcp -j REJECT --reject-with tcp-reset - $IPT6 -t filter -A luci_splash_filter -j REJECT --reject-with adm-prohibited - fi - - ### Add QoS chain - $IPT -t mangle -N luci_splash_mark_out - $IPT -t mangle -N luci_splash_mark_in - $IPT -t mangle -I PREROUTING -j luci_splash_mark_out - $IPT -t mangle -I POSTROUTING -j luci_splash_mark_in - - if [ "$HAS_IPV6" = 1 ]; then - $IPT6 -t mangle -N luci_splash_mark_out - $IPT6 -t mangle -N luci_splash_mark_in - $IPT6 -t mangle -I PREROUTING -j luci_splash_mark_out - $IPT6 -t mangle -I POSTROUTING -j luci_splash_mark_in - fi - - ### Build the main and portal rule - config_foreach iface_add iface - config_foreach subnet_add subnet - - ### Add the community homepage to the list of allowed destination subnets - hp=$(uci -q get freifunk.community.homepage) && { - chp=${hp#http*://} - chp=${chp%%/*} - $IPT -t nat -I luci_splash_prerouting -d "${chp}/32" -j RETURN - $IPT -t filter -I luci_splash_forwarding -d "${chp}/32" -j RETURN - } - - ### Find active mac addresses - MACS="" - - - config_foreach mac_add blacklist - config_foreach mac_add whitelist - - config_load luci_splash_leases - config_foreach mac_add lease - - ### Add crontab entry - test -f /etc/crontabs/root || touch /etc/crontabs/root - grep -q luci-splash /etc/crontabs/root || { - echo '*/5 * * * * /usr/sbin/luci-splash sync' >> /etc/crontabs/root - } - - lock -u $LOCK - - ### Populate iptables - [ -n "$MACS" ] && luci-splash add-rules $MACS -} - -stop() { - lock $LOCK - - include /lib/network - scan_interfaces - config_load luci_splash - - ### Clear interface rules - config_foreach iface_del iface - - silent $IPT -t mangle -D PREROUTING -j luci_splash_mark_out - silent $IPT -t mangle -D POSTROUTING -j luci_splash_mark_in - - if [ "$HAS_IPV6" = 1 ]; then - silent $IPT6 -t mangle -D PREROUTING -j luci_splash_mark_out - silent $IPT6 -t mangle -D POSTROUTING -j luci_splash_mark_in - fi - - ### Clear subchains - silent $IPT -t nat -F luci_splash_prerouting - silent $IPT -t nat -F luci_splash_leases - silent $IPT -t filter -F luci_splash_forwarding - silent $IPT -t filter -F luci_splash_filter - silent $IPT -t mangle -F luci_splash_mark_out - silent $IPT -t mangle -F luci_splash_mark_in - - if [ "$HAS_IPV6" = 1 ]; then - $IPT6 -t filter -F luci_splash_forwarding - $IPT6 -t filter -F luci_splash_filter - $IPT6 -t mangle -F luci_splash_mark_out - $IPT6 -t mangle -F luci_splash_mark_in - fi - - ### Delete subchains - silent $IPT -t nat -X luci_splash_prerouting - silent $IPT -t nat -X luci_splash_leases - silent $IPT -t filter -X luci_splash_forwarding - silent $IPT -t filter -X luci_splash_filter - silent $IPT -t mangle -X luci_splash_mark_out - silent $IPT -t mangle -X luci_splash_mark_in - if [ "$HAS_IPV6" = 1 ]; then - $IPT6 -t filter -X luci_splash_forwarding - $IPT6 -t filter -X luci_splash_filter - $IPT6 -t mangle -X luci_splash_mark_out - $IPT6 -t mangle -X luci_splash_mark_in - fi - sed -ie '/\/usr\/sbin\/luci-splash sync/d' /var/spool/cron/crontabs/root - - lock -u $LOCK -} - -clear_leases() { - ### Find active mac addresses - MACS="" - config_foreach mac_add lease - - ### Clear leases - [ -n "$MACS" ] && luci-splash remove $MACS -} - diff --git a/package/luci/applications/luci-app-splash/root/usr/sbin/luci-splash b/package/luci/applications/luci-app-splash/root/usr/sbin/luci-splash deleted file mode 100755 index 2870dbe6aa..0000000000 --- a/package/luci/applications/luci-app-splash/root/usr/sbin/luci-splash +++ /dev/null @@ -1,753 +0,0 @@ -#!/usr/bin/lua - -utl = require "luci.util" -sys = require "luci.sys" -ipc = require "luci.ip" - - --- Init state session -local uci = require "luci.model.uci".cursor_state() -local ipt = require "luci.sys.iptparser".IptParser() -local fs = require "nixio.fs" -local ip = require "luci.ip" - -local debug = false - -local has_ipv6 = fs.access("/proc/net/ipv6_route") and fs.access("/usr/sbin/ip6tables") - -function exec(cmd) - -- executes a cmd and gets its output - if debug then - local ret = sys.exec(cmd) - print('+ ' .. cmd) - if ret and ret ~= "" then - print(ret) - end - else - local ret = sys.exec(cmd .. " &> /dev/null") - end -end - -function call(cmd) - -- just calls a command - if debug then - print('+ ' .. cmd) - end - os.execute(cmd) -end - - -function lock() - call("lock /var/run/luci_splash.lock") -end - -function unlock() - call("lock -u /var/run/luci_splash.lock") -end - -function get_id(ip) - local o3, o4 = ip:match("[0-9]+%.[0-9]+%.([0-9]+)%.([0-9]+)") - if o3 and 04 then - return string.format("%02X%s", tonumber(o3), "") .. string.format("%02X%s", tonumber(o4), "") - else - return false - end -end - -function update_stats(leased, whitelisted, whitelisttotal, blacklisted, blacklisttotal) - local leases = uci:get_all("luci_splash_leases", "stats") - uci:delete("luci_splash_leases", "stats") - uci:section("luci_splash_leases", "stats", "stats", { - leases = leased or (leases and leases.leases) or 0, - whitelisttotal = whitelisttotal or (leased and leases.whitelisttotal) or 0, - whitelistonline = whitelisted or (leases and leases.whitelistonline) or 0, - blacklisttotal = blacklisttotal or (leases and leases.blacklisttotal) or 0, - blacklistonline = blacklisted or (leases and leases.blacklistonline) or 0, - }) - uci:save("luci_splash_leases") -end - - -function get_device_for_ip(ipaddr) - local dev - uci:foreach("network", "interface", function(s) - if s.ipaddr and s.netmask then - local network = ip.IPv4(s.ipaddr, s.netmask) - if network:contains(ip.IPv4(ipaddr)) then - -- this should be rewritten to luci functions if possible - dev = utl.trim(sys.exec(". /lib/functions/network.sh; network_get_device IFNAME '" .. s['.name'] .. "'; echo $IFNAME")) - end - end - end) - return dev -end - -function get_physdev(interface) - local dev - dev = utl.trim(sys.exec(". /lib/functions/network.sh; network_get_device IFNAME '" .. interface .. "'; echo $IFNAME")) - return dev -end - - - -function get_filter_handle(parent, direction, device, mac) - local input = utl.split(sys.exec('/usr/sbin/tc filter show dev ' .. device .. ' parent ' .. parent) or {}) - local tbl = {} - local handle - for k, v in pairs(input) do - handle = v:match('filter protocol ip pref %d+ u32 fh (%d*:%d*:%d*) order') or v:match('filter protocol all pref %d+ u32 fh (%d*:%d*:%d*) order') - if handle then - local mac, mac1, mac2, mac3, mac4, mac5, mac6 - if direction == 'src' then - mac1, mac2, mac3, mac4 = input[k+1]:match('match ([%a%d][%a%d])([%a%d][%a%d])([%a%d][%a%d])([%a%d][%a%d])/ffffffff') - mac5, mac6 = input[k+2]:match('match ([%a%d][%a%d])([%a%d][%a%d])0000/ffff0000') - else - mac1, mac2 = input[k+1]:match('match 0000([%a%d][%a%d])([%a%d][%a%d])/0000ffff') - mac3, mac4, mac5, mac6 = input[k+2]:match('match ([%a%d][%a%d])([%a%d][%a%d])([%a%d][%a%d])([%a%d][%a%d])/ffffffff') - end - if mac1 and mac2 and mac3 and mac4 and mac5 and mac6 then - mac = "%s:%s:%s:%s:%s:%s" % { mac1, mac2, mac3, mac4, mac5, mac6 } - tbl[mac] = handle - end - end - end - if tbl[mac] then - handle = tbl[mac] - end - return handle -end - -function macvalid(mac) - if mac and mac:match( - "^[a-fA-F0-9][a-fA-F0-9]:[a-fA-F0-9][a-fA-F0-9]:" .. - "[a-fA-F0-9][a-fA-F0-9]:[a-fA-F0-9][a-fA-F0-9]:" .. - "[a-fA-F0-9][a-fA-F0-9]:[a-fA-F0-9][a-fA-F0-9]$" - ) then - return true - end - - return false -end - -function ipvalid(ipaddr) - if ipaddr then - return ip.IPv4(ipaddr) and true or false - end - - return false -end - -function mac_to_ip(mac) - local ipaddr = nil - ipc.neighbors({ family = 4 }, function(n) - if n.mac == mac and n.dest then - ipaddr = n.dest:string() - end - end) - return ipaddr -end - -function mac_to_dev(mac) - local dev = nil - ipc.neighbors({ family = 4 }, function(n) - if n.mac == mac and n.dev then - dev = n.dev - end - end) - return dev -end - -function ip_to_mac(ip) - local mac = nil - ipc.neighbors({ family = 4 }, function(n) - if n.mac and n.dest and n.dest:equal(ip) then - mac = n.mac - end - end) - return mac -end - -function main(argv) - local cmd = table.remove(argv, 1) - local arg = argv[1] - - limit_up = (tonumber(uci:get("luci_splash", "general", "limit_up")) or 0) * 8 - limit_down = (tonumber(uci:get("luci_splash", "general", "limit_down")) or 0) * 8 - - if ( cmd == "lease" or cmd == "add-rules" or cmd == "remove" or - cmd == "whitelist" or cmd == "blacklist" or cmd == "status" ) and #argv > 0 - then - if not (macvalid(arg) or ipvalid(arg)) then - print("Invalid argument. The second argument must " .. - "be a valid IPv4 or Mac Address.") - os.exit(1) - end - - lock() - - local leased_macs = get_known_macs("lease") - local blacklist_macs = get_known_macs("blacklist") - local whitelist_macs = get_known_macs("whitelist") - - for i, adr in ipairs(argv) do - local mac = nil - if adr:find(":") then - mac = adr:lower() - else - mac = ip_to_mac(adr) - end - - if mac and cmd == "add-rules" then - if leased_macs[mac] then - add_lease(mac, true) - elseif blacklist_macs[mac] then - add_blacklist_rule(mac) - elseif whitelist_macs[mac] then - add_whitelist_rule(mac) - end - elseif mac and cmd == "status" then - print(leased_macs[mac] and "lease" - or whitelist_macs[mac] and "whitelist" - or blacklist_macs[mac] and "blacklist" - or "new") - elseif mac and ( cmd == "whitelist" or cmd == "blacklist" or cmd == "lease" ) then - if cmd ~= "lease" and leased_macs[mac] then - print("Removing %s from leases" % mac) - remove_lease(mac) - leased_macs[mac] = nil - end - - if cmd ~= "whitelist" and whitelist_macs[mac] then - if cmd == "lease" then - print('%s is whitelisted. Remove it before you can lease it.' % mac) - else - print("Removing %s from whitelist" % mac) - remove_whitelist(mac) - whitelist_macs[mac] = nil - end - end - - if cmd == "whitelist" and leased_macs[mac] then - print("Removing %s from leases" % mac) - remove_lease(mac) - leased_macs[mac] = nil - end - - if cmd ~= "blacklist" and blacklist_macs[mac] then - print("Removing %s from blacklist" % mac) - remove_blacklist(mac) - blacklist_macs[mac] = nil - end - - if cmd == "lease" and not leased_macs[mac] then - if not whitelist_macs[mac] then - print("Adding %s to leases" % mac) - add_lease(mac) - leased_macs[mac] = true - end - elseif cmd == "whitelist" and not whitelist_macs[mac] then - print("Adding %s to whitelist" % mac) - add_whitelist(mac) - whitelist_macs[mac] = true - elseif cmd == "blacklist" and not blacklist_macs[mac] then - print("Adding %s to blacklist" % mac) - add_blacklist(mac) - blacklist_macs[mac] = true - else - print("The mac %s is already %sed" %{ mac, cmd }) - end - elseif mac and cmd == "remove" then - if leased_macs[mac] then - print("Removing %s from leases" % mac) - remove_lease(mac) - leased_macs[mac] = nil - elseif whitelist_macs[mac] then - print("Removing %s from whitelist" % mac) - remove_whitelist(mac) - whitelist_macs[mac] = nil - elseif blacklist_macs[mac] then - print("Removing %s from blacklist" % mac) - remove_blacklist(mac) - blacklist_macs[mac] = nil - else - print("The mac %s is not known" % mac) - end - - else - print("Can not find mac for ip %s" % argv[i]) - end - end - unlock() - os.exit(0) - elseif cmd == "sync" then - sync() - os.exit(0) - elseif cmd == "list" then - list() - os.exit(0) - else - print("Usage:") - print("\n luci-splash list\n List connected, black- and whitelisted clients") - print("\n luci-splash sync\n Synchronize firewall rules and clear expired leases") - print("\n luci-splash lease \n Create a lease for the given address") - print("\n luci-splash blacklist \n Add given address to blacklist") - print("\n luci-splash whitelist \n Add given address to whitelist") - print("\n luci-splash remove \n Remove given address from the lease-, black- or whitelist") - print("") - - os.exit(1) - end -end - --- Get a list of known mac addresses -function get_known_macs(list) - local leased_macs = { } - - if not list or list == "lease" then - uci:foreach("luci_splash_leases", "lease", function(s) - if s.mac then - leased_macs[s.mac:lower()] = true - end - end) - end - - if not list or list == "whitelist" then - uci:foreach("luci_splash", "whitelist", function(s) - if s.mac then - leased_macs[s.mac:lower()] = true - end - end) - end - - if not list or list == "blacklist" then - uci:foreach("luci_splash", "blacklist", function(s) - if s.mac then - leased_macs[s.mac:lower()] = true - end - end) - end - return leased_macs -end - - --- Helper to delete iptables rules -function ipt_delete_all(args, comp, off) - off = off or { } - for i, r in ipairs(ipt:find(args)) do - if comp == nil or comp(r) then - off[r.table] = off[r.table] or { } - off[r.table][r.chain] = off[r.table][r.chain] or 0 - - exec("iptables -t %q -D %q %d 2>/dev/null" - %{ r.table, r.chain, r.index - off[r.table][r.chain] }) - - off[r.table][r.chain] = off[r.table][r.chain] + 1 - end - end -end - -function ipt6_delete_all(args, comp, off) - off = off or { } - for i, r in ipairs(ipt:find(args)) do - if comp == nil or comp(r) then - off[r.table] = off[r.table] or { } - off[r.table][r.chain] = off[r.table][r.chain] or 0 - - exec("ip6tables -t %q -D %q %d 2>/dev/null" - %{ r.table, r.chain, r.index - off[r.table][r.chain] }) - - off[r.table][r.chain] = off[r.table][r.chain] + 1 - end - end -end - - --- Convert mac to uci-compatible section name -function convert_mac_to_secname(mac) - return string.gsub(mac, ":", "") -end - --- Add a lease to state and invoke add_rule -function add_lease(mac, no_uci) - mac = mac:lower() - - -- Get current ip address - local ipaddr = mac_to_ip(mac) - - -- Add lease if there is an ip addr - if ipaddr then - local device = get_device_for_ip(ipaddr) - if not no_uci then - local leased = uci:get("luci_splash_leases", "stats", "leases") - if type(tonumber(leased)) == "number" then - update_stats(leased + 1, nil, nil, nil, nil) - end - - uci:section("luci_splash_leases", "lease", convert_mac_to_secname(mac), { - mac = mac, - ipaddr = ipaddr, - device = device, - limit_up = limit_up, - limit_down = limit_down, - start = os.time() - }) - uci:save("luci_splash_leases") - end - add_lease_rule(mac, ipaddr, device) - else - print("Found no active IP for %s, lease not added" % mac) - end -end - - --- Remove a lease from state and invoke remove_rule -function remove_lease(mac) - mac = mac:lower() - - uci:delete_all("luci_splash_leases", "lease", - function(s) - if s.mac:lower() == mac then - - local leased = uci:get("luci_splash_leases", "stats", "leases") - if type(tonumber(leased)) == "number" and tonumber(leased) > 0 then - update_stats(leased - 1, nil, nil, nil, nil) - end - remove_lease_rule(mac, s.ipaddr, s.device, tonumber(s.limit_up), tonumber(s.limit_down)) - return true - end - return false - end) - - uci:save("luci_splash_leases") -end - - --- Add a whitelist entry -function add_whitelist(mac) - uci:section("luci_splash", "whitelist", convert_mac_to_secname(mac), { mac = mac }) - uci:save("luci_splash") - uci:commit("luci_splash") - add_whitelist_rule(mac) -end - - --- Add a blacklist entry -function add_blacklist(mac) - uci:section("luci_splash", "blacklist", convert_mac_to_secname(mac), { mac = mac }) - uci:save("luci_splash") - uci:commit("luci_splash") - add_blacklist_rule(mac) -end - - --- Remove a whitelist entry -function remove_whitelist(mac) - mac = mac:lower() - uci:delete_all("luci_splash", "whitelist", - function(s) return not s.mac or s.mac:lower() == mac end) - uci:save("luci_splash") - uci:commit("luci_splash") - remove_lease_rule(mac) - remove_whitelist_tc(mac) -end - -function remove_whitelist_tc(mac) - uci:foreach("luci_splash", "iface", function(s) - local device = get_physdev(s['.name']) - if device and device ~= "" then - if debug then - print("Removing whitelist filters for %s interface %s." % {mac, device}) - end - local handle = get_filter_handle('ffff:', 'src', device, mac) - if handle then - exec('tc filter del dev "%s" parent ffff: protocol ip prio 1 handle %s u32' % { device, handle }) - else - print('Warning! Could not get a handle for %s parent :ffff on interface %s' % { mac, device }) - end - local handle = get_filter_handle('1:', 'dest', device, mac) - if handle then - exec('tc filter del dev "%s" parent 1:0 protocol ip prio 1 handle %s u32' % { device, handle }) - else - print('Warning! Could not get a handle for %s parent 1:0 on interface %s' % { mac, device }) - end - end - end) -end - --- Remove a blacklist entry -function remove_blacklist(mac) - mac = mac:lower() - uci:delete_all("luci_splash", "blacklist", - function(s) return not s.mac or s.mac:lower() == mac end) - uci:save("luci_splash") - uci:commit("luci_splash") - remove_lease_rule(mac) -end - - --- Add an iptables rule -function add_lease_rule(mac, ipaddr, device) - local id - if ipaddr then - id = get_id(ipaddr) - end - - exec("iptables -t mangle -I luci_splash_mark_out -m mac --mac-source %q -j RETURN" % mac) - - -- Mark incoming packets to a splashed host - -- for ipv4 - by iptables and destination - if id and device then - exec("iptables -t mangle -I luci_splash_mark_in -d %q -j MARK --set-mark 0x1%s -m comment --comment %s" % {ipaddr, id, mac:upper()}) - end - - --for ipv6: need to use the mac here - - if has_ipv6 then - exec("ip6tables -t mangle -I luci_splash_mark_out -m mac --mac-source %q -j MARK --set-mark 79" % mac) - if id and device and tonumber(limit_down) then - exec("tc filter add dev %s parent 1:0 protocol ipv6 prio 1 u32 match ether dst %s classid 1:%s" % {device, mac:lower(), id}) - end - end - - - if device and tonumber(limit_up) > 0 then - exec('tc filter add dev "%s" parent ffff: protocol all prio 2 u32 match ether src %s police rate %skbit mtu 6k burst 6k drop' % {device, mac, limit_up}) - end - - if id and device and tonumber(limit_down) > 0 then - exec("tc class add dev %s parent 1: classid 1:0x%s htb rate %skbit" % { device, id, limit_down }) - exec("tc qdisc add dev %s parent 1:%s sfq perturb 10" % { device, id }) - end - - exec("iptables -t filter -I luci_splash_filter -m mac --mac-source %q -j RETURN" % mac) - exec("iptables -t nat -I luci_splash_leases -m mac --mac-source %q -j RETURN" % mac) - if has_ipv6 then - exec("ip6tables -t filter -I luci_splash_filter -m mac --mac-source %q -j RETURN" % mac) - end -end - - --- Remove lease, black- or whitelist rules -function remove_lease_rule(mac, ipaddr, device, limit_up, limit_down) - - local id - if ipaddr then - id = get_id(ipaddr) - end - - ipt:resync() - ipt_delete_all({table="mangle", chain="luci_splash_mark_in", options={"/*", mac:upper()}}) - ipt_delete_all({table="mangle", chain="luci_splash_mark_out", options={"MAC", mac:upper()}}) - ipt_delete_all({table="filter", chain="luci_splash_filter", options={"MAC", mac:upper()}}) - ipt_delete_all({table="nat", chain="luci_splash_leases", options={"MAC", mac:upper()}}) - if has_ipv6 then - ipt6_delete_all({table="mangle", chain="luci_splash_mark_out", options={"MAC", mac:upper()}}) - ipt6_delete_all({table="filter", chain="luci_splash_filter", options={"MAC", mac:upper()}}) - end - - if device and tonumber(limit_up) > 0 then - local handle = get_filter_handle('ffff:', 'src', device, mac) - if handle then - exec('tc filter del dev "%s" parent ffff: protocol all prio 2 handle %s u32 police rate %skbit mtu 6k burst 6k drop' % {device, handle, limit_up}) - else - print('Warning! Could not get a handle for %s parent :ffff on interface %s' % { mac, device }) - end - end - -- remove clients class - if device and id then - exec('tc class del dev "%s" classid 1:%s' % {device, id}) - exec('tc filter del dev "%s" parent 1:0 prio 1' % device) -- ipv6 rule - --exec('tc qdisc del dev "%s" parent 1:%s sfq perturb 10' % { device, id }) - end -end - - --- Add whitelist rules -function add_whitelist_rule(mac) - exec("iptables -t filter -I luci_splash_filter -m mac --mac-source %q -j RETURN" % mac) - exec("iptables -t nat -I luci_splash_leases -m mac --mac-source %q -j RETURN" % mac) - if has_ipv6 then - exec("ip6tables -t filter -I luci_splash_filter -m mac --mac-source %q -j RETURN" % mac) - end - uci:foreach("luci_splash", "iface", function(s) - local device = get_physdev(s['.name']) - if device and device ~= "" then - exec('tc filter add dev "%s" parent ffff: protocol ip prio 1 u32 match ether src %s police pass' % { device, mac }) - exec('tc filter add dev "%s" parent 1:0 protocol ip prio 1 u32 match ether dst %s classid 1:1' % { device, mac }) - end - end) -end - - --- Add blacklist rules -function add_blacklist_rule(mac) - exec("iptables -t filter -I luci_splash_filter -m mac --mac-source %q -j DROP" % mac) - if has_ipv6 then - exec("ip6tables -t filter -I luci_splash_filter -m mac --mac-source %q -j DROP" % mac) - end -end - - --- Synchronise leases, remove abandoned rules -function sync() - lock() - - local time = os.time() - - -- Current leases in state files - local leases = uci:get_all("luci_splash_leases") - - -- Convert leasetime to seconds - local leasetime = tonumber(uci:get("luci_splash", "general", "leasetime")) * 3600 - - -- Clean state file - uci:load("luci_splash_leases") - uci:revert("luci_splash_leases") - - - local blackwhitelist = uci:get_all("luci_splash") - local whitelist_total = 0 - local whitelist_online = 0 - local blacklist_total = 0 - local blacklist_online = 0 - local leasecount = 0 - local leases_online = 0 - - -- For all leases - for k, v in pairs(leases) do - if v[".type"] == "lease" then - if os.difftime(time, tonumber(v.start)) > leasetime then - -- Remove expired - remove_lease_rule(v.mac, v.ipaddr, v.device, tonumber(v.limit_up), tonumber(v.limit_down)) - else - leasecount = leasecount + 1 - - -- only count leases_online for connected clients - if mac_to_ip(v.mac) then - leases_online = leases_online + 1 - end - - -- Rewrite state - uci:section("luci_splash_leases", "lease", convert_mac_to_secname(v.mac), { - mac = v.mac, - ipaddr = v.ipaddr, - device = v.device, - limit_up = limit_up, - limit_down = limit_down, - start = v.start - }) - end - end - end - - -- Whitelist, Blacklist - for _, s in utl.spairs(blackwhitelist, - function(a,b) return blackwhitelist[a][".type"] > blackwhitelist[b][".type"] end - ) do - if (s[".type"] == "whitelist") then - whitelist_total = whitelist_total + 1 - if s.mac then - local mac = s.mac:lower() - if mac_to_ip(mac) then - whitelist_online = whitelist_online + 1 - end - end - end - if (s[".type"] == "blacklist") then - blacklist_total = blacklist_total + 1 - if s.mac then - local mac = s.mac:lower() - if mac_to_ip(mac) then - blacklist_online = blacklist_online + 1 - end - end - end - end - - -- ToDo: - -- include a new field "leases_online" in stats to differ between active clients and leases: - -- update_stats(leasecount, leases_online, whitelist_online, whitelist_total, blacklist_online, blacklist_total) later: - update_stats(leases_online, whitelist_online, whitelist_total, blacklist_online, blacklist_total) - - uci:save("luci_splash_leases") - - -- Get the mac addresses of current leases - local macs = get_known_macs() - - ipt:resync() - - ipt_delete_all({table="filter", chain="luci_splash_filter", options={"MAC"}}, - function(r) return not macs[r.options[2]:lower()] end) - ipt_delete_all({table="nat", chain="luci_splash_leases", options={"MAC"}}, - function(r) return not macs[r.options[2]:lower()] end) - ipt_delete_all({table="mangle", chain="luci_splash_mark_out", options={"MAC", "MARK", "set"}}, - function(r) return not macs[r.options[2]:lower()] end) - ipt_delete_all({table="mangle", chain="luci_splash_mark_in", options={"/*", "MARK", "set"}}, - function(r) return not macs[r.options[2]:lower()] end) - - - if has_ipv6 then - ipt6_delete_all({table="filter", chain="luci_splash_filter", options={"MAC"}}, - function(r) return not macs[r.options[2]:lower()] end) - ipt6_delete_all({table="mangle", chain="luci_splash_mark_out", options={"MAC", "MARK", "set"}}, - function(r) return not macs[r.options[2]:lower()] end) - end - - unlock() -end - --- Show client info -function list() - -- Find traffic usage - local function traffic(lease) - local traffic_in = 0 - local traffic_out = 0 - - local rin = ipt:find({table="mangle", chain="luci_splash_mark_in", destination=lease.ipaddr}) - local rout = ipt:find({table="mangle", chain="luci_splash_mark_out", options={"MAC", lease.mac:upper()}}) - - if rin and #rin > 0 then traffic_in = math.floor( rin[1].bytes / 1024) end - if rout and #rout > 0 then traffic_out = math.floor(rout[1].bytes / 1024) end - - return traffic_in, traffic_out - end - - -- Print listings - local leases = uci:get_all("luci_splash_leases") - local blackwhitelist = uci:get_all("luci_splash") - - print(string.format( - "%-17s %-15s %-9s %-4s %-7s %20s", - "MAC", "IP", "State", "Dur.", "Intf.", "Traffic down/up" - )) - - -- Leases - for _, s in pairs(leases) do - if s[".type"] == "lease" and s.mac then - local ti, to = traffic(s) - local mac = s.mac:lower() - print(string.format( - "%-17s %-15s %-9s %3dm %-7s %7dKB %7dKB", - mac, s.ipaddr, "leased", - math.floor(( os.time() - tonumber(s.start) ) / 60), - mac_to_dev(mac) or "?", ti, to - )) - end - end - - -- Whitelist, Blacklist - for _, s in utl.spairs(blackwhitelist, - function(a,b) return blackwhitelist[a][".type"] > blackwhitelist[b][".type"] end - ) do - if (s[".type"] == "whitelist" or s[".type"] == "blacklist") and s.mac then - local mac = s.mac:lower() - print(string.format( - "%-17s %-15s %-9s %4s %-7s %9s %9s", - mac, mac_to_ip(mac) or "?", s[".type"], - "- ", mac_to_dev(mac) or "?", "-", "-" - )) - end - end -end - -main(arg) diff --git a/package/luci/applications/luci-app-squid/Makefile b/package/luci/applications/luci-app-squid/Makefile deleted file mode 100644 index 82802c0e5a..0000000000 --- a/package/luci/applications/luci-app-squid/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2015 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Squid LuCI Interface -LUCI_DEPENDS:=+luci-mod-admin-full +squid - -PKG_MAINTAINER:=Marko Ratkaj -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-squid/luasrc/controller/squid.lua b/package/luci/applications/luci-app-squid/luasrc/controller/squid.lua deleted file mode 100644 index 09946a1511..0000000000 --- a/package/luci/applications/luci-app-squid/luasrc/controller/squid.lua +++ /dev/null @@ -1,21 +0,0 @@ ---[[ - -LuCI Squid module - -Copyright (C) 2015, OpenWrt.org - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Author: Marko Ratkaj - -]]-- - -module("luci.controller.squid", package.seeall) - -function index() - entry({"admin", "services", "squid"}, cbi("squid"), _("Squid")) -end diff --git a/package/luci/applications/luci-app-squid/luasrc/model/cbi/squid.lua b/package/luci/applications/luci-app-squid/luasrc/model/cbi/squid.lua deleted file mode 100644 index 0ac554a3ee..0000000000 --- a/package/luci/applications/luci-app-squid/luasrc/model/cbi/squid.lua +++ /dev/null @@ -1,67 +0,0 @@ ---[[ - -LuCI Squid module - -Copyright (C) 2015, OpenWrt.org - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Author: Marko Ratkaj - -]]-- - -local fs = require "nixio.fs" -local sys = require "luci.sys" -require "ubus" - -m = Map("squid", translate("Squid")) -m.on_after_commit = function() luci.sys.call("/etc/init.d/squid restart") end - -s = m:section(TypedSection, "squid") -s.anonymous = true -s.addremove = false - -s:tab("general", translate("General Settings")) - -http_port = s:taboption("general", Value, "http_port", translate("Port")) -http_port.datatype = "portrange" -http_port.placeholder = "0-65535" - -visible_hostname = s:taboption("general", Value, "visible_hostname", translate("Visible Hostname")) -visible_hostname.datatype="string" -visible_hostname.placeholder = "OpenWrt" - -coredump_dir = s:taboption("general", Value, "coredump_dir", translate("Coredump files directory")) -coredump_dir.datatype="string" -coredump_dir.placeholder = "/tmp/squid" - -s:tab("advanced", translate("Advanced Settings")) - -squid_config_file = s:taboption("advanced", TextValue, "_data", "") -squid_config_file.wrap = "off" -squid_config_file.rows = 25 -squid_config_file.rmempty = false - -function squid_config_file.cfgvalue() - local uci = require "luci.model.uci".cursor_state() - local file = uci:get("squid", "squid", "config_file") - if file then - return fs.readfile(file) or "" - else - return "" - end -end - -function squid_config_file.write(self, section, value) - if value then - local uci = require "luci.model.uci".cursor_state() - local file = uci:get("squid", "squid", "config_file") - fs.writefile(file, value:gsub("\r\n", "\n")) - end -end - -return m diff --git a/package/luci/applications/luci-app-statistics/Makefile b/package/luci/applications/luci-app-statistics/Makefile deleted file mode 100644 index 008792a5d0..0000000000 --- a/package/luci/applications/luci-app-statistics/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Statistics Application -LUCI_DEPENDS:= \ - +collectd +rrdtool1 +collectd-mod-rrdtool +collectd-mod-iwinfo \ - +collectd-mod-cpu +collectd-mod-memory \ - +collectd-mod-interface +collectd-mod-load +collectd-mod-network - -define Package/luci-app-statistics/conffiles -/etc/config/luci_statistics -endef - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/package/luci/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua deleted file mode 100644 index ec26f02d0d..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua +++ /dev/null @@ -1,209 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Copyright 2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.luci_statistics.luci_statistics", package.seeall) - -function index() - - require("nixio.fs") - require("luci.util") - require("luci.statistics.datatree") - - -- override entry(): check for existance .so where is derived from the called path - function _entry( path, ... ) - local file = path[5] or path[4] - if nixio.fs.access( "/usr/lib/collectd/" .. file .. ".so" ) then - entry( path, ... ) - end - end - - local labels = { - s_output = _("Output plugins"), - s_general = _("General plugins"), - s_network = _("Network plugins"), - - apcups = _("APC UPS"), - conntrack = _("Conntrack"), - contextswitch = _("Context Switches"), - cpu = _("Processor"), - cpufreq = _("CPU Frequency"), - csv = _("CSV Output"), - df = _("Disk Space Usage"), - disk = _("Disk Usage"), - dns = _("DNS"), - email = _("Email"), - entropy = _("Entropy"), - exec = _("Exec"), - interface = _("Interfaces"), - iptables = _("Firewall"), - irq = _("Interrupts"), - iwinfo = _("Wireless"), - load = _("System Load"), - memory = _("Memory"), - netlink = _("Netlink"), - network = _("Network"), - nut = _("UPS"), - olsrd = _("OLSRd"), - openvpn = _("OpenVPN"), - ping = _("Ping"), - processes = _("Processes"), - rrdtool = _("RRDTool"), - sensors = _("Sensors"), - splash_leases = _("Splash Leases"), - tcpconns = _("TCP Connections"), - thermal = _("Thermal"), - unixsock = _("UnixSock"), - uptime = _("Uptime") - } - - -- our collectd menu - local collectd_menu = { - output = { "csv", "network", "rrdtool", "unixsock" }, - general = { "apcups", "contextswitch", "cpu", "cpufreq", "df", - "disk", "email", "entropy", "exec", "irq", "load", "memory", - "nut", "processes", "sensors", "thermal", "uptime" }, - network = { "conntrack", "dns", "interface", "iptables", - "netlink", "olsrd", "openvpn", "ping", - "splash_leases", "tcpconns", "iwinfo" } - } - - -- create toplevel menu nodes - local st = entry({"admin", "statistics"}, template("admin_statistics/index"), _("Statistics"), 80) - st.index = true - - entry({"admin", "statistics", "collectd"}, cbi("luci_statistics/collectd"), _("Setup"), 20).subindex = true - - - -- populate collectd plugin menu - local index = 1 - for section, plugins in luci.util.kspairs( collectd_menu ) do - local e = entry( - { "admin", "statistics", "collectd", section }, - firstchild(), labels["s_"..section], index * 10 - ) - - e.index = true - - for j, plugin in luci.util.vspairs( plugins ) do - _entry( - { "admin", "statistics", "collectd", section, plugin }, - cbi("luci_statistics/" .. plugin ), - labels[plugin] or plugin, j * 10 - ) - end - - index = index + 1 - end - - -- output views - local page = entry( { "admin", "statistics", "graph" }, template("admin_statistics/index"), _("Graphs"), 10) - page.setuser = "nobody" - page.setgroup = "nogroup" - - local vars = luci.http.formvalue(nil, true) - local span = vars.timespan or nil - local host = vars.host or nil - - -- get rrd data tree - local tree = luci.statistics.datatree.Instance(host) - - local _, plugin, idx - for _, plugin, idx in luci.util.vspairs( tree:plugins() ) do - - -- get plugin instances - local instances = tree:plugin_instances( plugin ) - - -- plugin menu entry - entry( - { "admin", "statistics", "graph", plugin }, - call("statistics_render"), labels[plugin], idx - ).query = { timespan = span , host = host } - - -- if more then one instance is found then generate submenu - if #instances > 1 then - local _, inst, idx2 - for _, inst, idx2 in luci.util.vspairs(instances) do - -- instance menu entry - entry( - { "admin", "statistics", "graph", plugin, inst }, - call("statistics_render"), inst, idx2 - ).query = { timespan = span , host = host } - end - end - end -end - -function statistics_render() - - require("luci.statistics.rrdtool") - require("luci.template") - require("luci.model.uci") - - local vars = luci.http.formvalue() - local req = luci.dispatcher.context.request - local path = luci.dispatcher.context.path - local uci = luci.model.uci.cursor() - local spans = luci.util.split( uci:get( "luci_statistics", "collectd_rrdtool", "RRATimespans" ), "%s+", nil, true ) - local span = vars.timespan or uci:get( "luci_statistics", "rrdtool", "default_timespan" ) or spans[1] - local host = vars.host or uci:get( "luci_statistics", "collectd", "Hostname" ) or luci.sys.hostname() - local opts = { host = vars.host } - local graph = luci.statistics.rrdtool.Graph( luci.util.parse_units( span ), opts ) - local hosts = graph.tree:host_instances() - - local is_index = false - local i, p, inst, idx - - -- deliver image - if vars.img then - local l12 = require "luci.ltn12" - local png = io.open(graph.opts.imgpath .. "/" .. vars.img:gsub("%.+", "."), "r") - if png then - luci.http.prepare_content("image/png") - l12.pump.all(l12.source.file(png), luci.http.write) - end - return - end - - local plugin, instances - local images = { } - - -- find requested plugin and instance - for i, p in ipairs( luci.dispatcher.context.path ) do - if luci.dispatcher.context.path[i] == "graph" then - plugin = luci.dispatcher.context.path[i+1] - instances = { luci.dispatcher.context.path[i+2] } - end - end - - -- no instance requested, find all instances - if #instances == 0 then - --instances = { graph.tree:plugin_instances( plugin )[1] } - instances = graph.tree:plugin_instances( plugin ) - is_index = (#instances > 1) - - -- index instance requested - elseif instances[1] == "-" then - instances[1] = "" - is_index = true - end - - - -- render graphs - for i, inst in luci.util.vspairs( instances ) do - for i, img in luci.util.vspairs( graph:render( plugin, inst, is_index ) ) do - table.insert( images, graph:strippngpath( img ) ) - images[images[#images]] = inst - end - end - - luci.template.render( "public_statistics/graph", { - images = images, - plugin = plugin, - timespans = spans, - current_timespan = span, - hosts = hosts, - current_host = host, - is_index = is_index - } ) -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua deleted file mode 100644 index 49e28c7cfd..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua +++ /dev/null @@ -1,28 +0,0 @@ --- Copyright 2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("APCUPS Plugin Configuration"), - translate( - "The APCUPS plugin collects statistics about the APC UPS." - )) - --- collectd_apcups config section -s = m:section( NamedSection, "collectd_apcups", "luci_statistics" ) - --- collectd_apcups.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_apcups.host (Host) -host = s:option( Value, "Host", translate("Monitor host"), translate ("Add multiple hosts separated by space.")) -host.default = "localhost" -host:depends( "enable", 1 ) - --- collectd_apcups.port (Port) -port = s:option( Value, "Port", translate("Port for apcupsd communication") ) -port.isinteger = true -port.default = 3551 -port:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/collectd.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/collectd.lua deleted file mode 100644 index 663a3f12d4..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/collectd.lua +++ /dev/null @@ -1,62 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require("luci.sys") - - -m = Map("luci_statistics", - translate("Collectd Settings"), - translate( - "Collectd is a small daemon for collecting data from " .. - "various sources through different plugins. On this page " .. - "you can change general settings for the collectd daemon." - )) - --- general config section -s = m:section( NamedSection, "collectd", "luci_statistics" ) - --- general.hostname (Hostname) -hostname = s:option( Value, "Hostname", translate("Hostname") ) -hostname.default = luci.sys.hostname() -hostname.optional = true - --- general.basedir (BaseDir) -basedir = s:option( Value, "BaseDir", translate("Base Directory") ) -basedir.default = "/var/run/collectd" - --- general.include (Include) -include = s:option( Value, "Include", translate("Directory for sub-configurations") ) -include.default = "/etc/collectd/conf.d/*.conf" - --- general.plugindir (PluginDir) -plugindir = s:option( Value, "PluginDir", translate("Directory for collectd plugins") ) -plugindir.default = "/usr/lib/collectd/" - --- general.pidfile (PIDFile) -pidfile = s:option( Value, "PIDFile", translate("Used PID file") ) -pidfile.default = "/var/run/collectd.pid" - --- general.typesdb (TypesDB) -typesdb = s:option( Value, "TypesDB", translate("Datasets definition file") ) -typesdb.default = "/etc/collectd/types.db" - --- general.interval (Interval) -interval = s:option( Value, "Interval", translate("Data collection interval"), translate("Seconds") ) -interval.default = 60 -interval.isnumber = true - --- general.readthreads (ReadThreads) -readthreads = s:option( Value, "ReadThreads", translate("Number of threads for data collection") ) -readthreads.default = 5 -readthreads.isnumber = true - --- general.fqdnlookup (FQDNLookup) -fqdnlookup = s:option( Flag, "FQDNLookup", translate("Try to lookup fully qualified hostname") ) -fqdnlookup.enabled = "true" -fqdnlookup.disabled = "false" -fqdnlookup.default = "false" -fqdnlookup.optional = true -fqdnlookup:depends( "Hostname", "" ) - - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/conntrack.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/conntrack.lua deleted file mode 100644 index f89cdb1fb8..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/conntrack.lua +++ /dev/null @@ -1,21 +0,0 @@ ---[[ - -Copyright 2011 Jo-Philipp Wich - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -]]-- - -m = Map("luci_statistics", - translate("Conntrack Plugin Configuration"), - translate("The conntrack plugin collects statistics about the number of tracked connections.")) - -s = m:section( NamedSection, "collectd_conntrack", "luci_statistics" ) - -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua deleted file mode 100644 index 7ae6b24ba1..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("CPU Context Switches Plugin Configuration"), - translate("This plugin collects statistics about the processor context switches.")) - --- collectd_contextswitch config section -s = m:section( NamedSection, "collectd_contextswitch", "luci_statistics" ) - --- collectd_contextswitch.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpu.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpu.lua deleted file mode 100644 index ee3fd254fb..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpu.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("CPU Plugin Configuration"), - translate("The cpu plugin collects basic statistics about the processor usage.")) - --- collectd_cpu config section -s = m:section( NamedSection, "collectd_cpu", "luci_statistics" ) - --- collectd_cpu.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua deleted file mode 100644 index d1116630b4..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("CPU Frequency Plugin Configuration"), - translate("This plugin collects statistics about the processor frequency scaling.")) - --- collectd_cpufreq config section -s = m:section( NamedSection, "collectd_cpufreq", "luci_statistics" ) - --- collectd_cpufreq.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/csv.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/csv.lua deleted file mode 100644 index ec45a677bf..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/csv.lua +++ /dev/null @@ -1,29 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("CSV Plugin Configuration"), - translate( - "The csv plugin stores collected data in csv file format " .. - "for further processing by external programs." - )) - --- collectd_csv config section -s = m:section( NamedSection, "collectd_csv", "luci_statistics" ) - --- collectd_csv.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_csv.datadir (DataDir) -datadir = s:option( Value, "DataDir", translate("Storage directory for the csv files") ) -datadir.default = "127.0.0.1" -datadir:depends( "enable", 1 ) - --- collectd_csv.storerates (StoreRates) -storerates = s:option( Flag, "StoreRates", translate("Store data values as rates instead of absolute values") ) -storerates.default = 0 -storerates:depends( "enable", 1 ) - -return m - diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/df.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/df.lua deleted file mode 100644 index c6031fdc59..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/df.lua +++ /dev/null @@ -1,41 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("DF Plugin Configuration"), - translate( - "The df plugin collects statistics about the disk space " .. - "usage on different devices, mount points or filesystem types." - )) - --- collectd_df config section -s = m:section( NamedSection, "collectd_df", "luci_statistics" ) - --- collectd_df.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_df.devices (Device) -devices = s:option( Value, "Devices", translate("Monitor devices") ) -devices.default = "/dev/mtdblock/4" -devices.optional = true -devices:depends( "enable", 1 ) - --- collectd_df.mountpoints (MountPoint) -mountpoints = s:option( Value, "MountPoints", translate("Monitor mount points") ) -mountpoints.default = "/overlay" -mountpoints.optional = true -mountpoints:depends( "enable", 1 ) - --- collectd_df.fstypes (FSType) -fstypes = s:option( Value, "FSTypes", translate("Monitor filesystem types") ) -fstypes.default = "tmpfs" -fstypes.optional = true -fstypes:depends( "enable", 1 ) - --- collectd_df.ignoreselected (IgnoreSelected) -ignoreselected = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") ) -ignoreselected.default = 0 -ignoreselected:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/disk.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/disk.lua deleted file mode 100644 index dc3d3fb2be..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/disk.lua +++ /dev/null @@ -1,29 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Disk Plugin Configuration"), - translate( - "The disk plugin collects detailled usage statistics " .. - "for selected partitions or whole disks." - )) - --- collectd_disk config section -s = m:section( NamedSection, "collectd_disk", "luci_statistics" ) - --- collectd_disk.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_disk.disks (Disk) -devices = s:option( Value, "Disks", translate("Monitor disks and partitions") ) -devices.default = "hda1 hdb" -devices.rmempty = true -devices:depends( "enable", 1 ) - --- collectd_disk.ignoreselected (IgnoreSelected) -ignoreselected = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") ) -ignoreselected.default = 0 -ignoreselected:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/dns.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/dns.lua deleted file mode 100644 index 29b998b877..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/dns.lua +++ /dev/null @@ -1,36 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require("luci.sys") - - -m = Map("luci_statistics", - translate("DNS Plugin Configuration"), - translate( - "The dns plugin collects detailled statistics about dns " .. - "related traffic on selected interfaces." - )) - --- collectd_dns config section -s = m:section( NamedSection, "collectd_dns", "luci_statistics" ) - --- collectd_dns.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_dns.interfaces (Interface) -interfaces = s:option( MultiValue, "Interfaces", translate("Monitor interfaces") ) -interfaces.widget = "select" -interfaces.size = 5 -interfaces:depends( "enable", 1 ) -interfaces:value("any") -for k, v in pairs(luci.sys.net.devices()) do - interfaces:value(v) -end - --- collectd_dns.ignoresources (IgnoreSource) -ignoresources = s:option( Value, "IgnoreSources", translate("Ignore source addresses") ) -ignoresources.default = "127.0.0.1" -ignoresources:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/email.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/email.lua deleted file mode 100644 index e6ed4392f1..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/email.lua +++ /dev/null @@ -1,48 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("E-Mail Plugin Configuration"), - translate( - "The email plugin creates a unix socket which can be used " .. - "to transmit email-statistics to a running collectd daemon. " .. - "This plugin is primarily intended to be used in conjunction " .. - "with Mail::SpamAssasin::Plugin::Collectd but can be used in " .. - "other ways as well." - )) - --- collectd_email config section -s = m:section( NamedSection, "collectd_email", "luci_statistics" ) - --- collectd_email.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_email.socketfile (SocketFile) -socketfile = s:option( Value, "SocketFile", translate("Socket file") ) -socketfile.default = "/var/run/collect-email.sock" -socketfile:depends( "enable", 1 ) - --- collectd_email.socketgroup (SocketGroup) -socketgroup = s:option( Value, "SocketGroup", translate("Socket group") ) -socketgroup.default = "nobody" -socketgroup.rmempty = true -socketgroup.optional = true -socketgroup:depends( "enable", 1 ) - --- collectd_email.socketperms (SocketPerms) -socketperms = s:option( Value, "SocketPerms", translate("Socket permissions") ) -socketperms.default = "0770" -socketperms.rmempty = true -socketperms.optional = true -socketperms:depends( "enable", 1 ) - --- collectd_email.maxconns (MaxConns) -maxconns = s:option( Value, "MaxConns", translate("Maximum allowed connections") ) -maxconns.default = 5 -maxconns.isinteger = true -maxconns.rmempty = true -maxconns.optional = true -maxconns:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/entropy.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/entropy.lua deleted file mode 100644 index d18bf910f9..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/entropy.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright 2015 Hannu Nyman --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Entropy Plugin Configuration"), - translate("The entropy plugin collects statistics about the available entropy.")) - -s = m:section( NamedSection, "collectd_entropy", "luci_statistics" ) - -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - -return m - diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/exec.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/exec.lua deleted file mode 100644 index 48e0ec2d7a..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/exec.lua +++ /dev/null @@ -1,77 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Exec Plugin Configuration"), - translate( - "The exec plugin starts external commands to read values " .. - "from or to notify external processes when certain threshold " .. - "values have been reached." - )) - --- collectd_exec config section -s = m:section( NamedSection, "collectd_exec", "luci_statistics" ) - --- collectd_exec.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - - --- collectd_exec_input config section (Exec directives) -exec = m:section( TypedSection, "collectd_exec_input", - translate("Add command for reading values"), - translate( - "Here you can define external commands which will be " .. - "started by collectd in order to read certain values. " .. - "The values will be read from stdout." - )) -exec.addremove = true -exec.anonymous = true - --- collectd_exec_input.cmdline -exec_cmdline = exec:option( Value, "cmdline", translate("Script") ) -exec_cmdline.default = "/usr/bin/stat-dhcpusers" - --- collectd_exec_input.cmdline -exec_cmduser = exec:option( Value, "cmduser", translate("User") ) -exec_cmduser.default = "nobody" -exec_cmduser.rmempty = true -exec_cmduser.optional = true - --- collectd_exec_input.cmdline -exec_cmdgroup = exec:option( Value, "cmdgroup", translate("Group") ) -exec_cmdgroup.default = "nogroup" -exec_cmdgroup.rmempty = true -exec_cmdgroup.optional = true - - --- collectd_exec_notify config section (NotifyExec directives) -notify = m:section( TypedSection, "collectd_exec_notify", - translate("Add notification command"), - translate( - "Here you can define external commands which will be " .. - "started by collectd when certain threshold values have " .. - "been reached. The values leading to invokation will be " .. - "feeded to the the called programs stdin." - )) -notify.addremove = true -notify.anonymous = true - --- collectd_notify_input.cmdline -notify_cmdline = notify:option( Value, "cmdline", translate("Script") ) -notify_cmdline.default = "/usr/bin/stat-dhcpusers" - --- collectd_notify_input.cmdline -notify_cmduser = notify:option( Value, "cmduser", translate("User") ) -notify_cmduser.default = "nobody" -notify_cmduser.rmempty = true -notify_cmduser.optional = true - --- collectd_notify_input.cmdline -notify_cmdgroup = notify:option( Value, "cmdgroup", translate("Group") ) -notify_cmdgroup.default = "nogroup" -notify_cmdgroup.rmempty = true -notify_cmdgroup.optional = true - - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/interface.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/interface.lua deleted file mode 100644 index 752212f4d4..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/interface.lua +++ /dev/null @@ -1,35 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require("luci.sys") - - -m = Map("luci_statistics", - translate("Interface Plugin Configuration"), - translate( - "The interface plugin collects traffic statistics on " .. - "selected interfaces." - )) - --- collectd_interface config section -s = m:section( NamedSection, "collectd_interface", "luci_statistics" ) - --- collectd_interface.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_interface.interfaces (Interface) -interfaces = s:option( MultiValue, "Interfaces", translate("Monitor interfaces") ) -interfaces.widget = "select" -interfaces.size = 5 -interfaces:depends( "enable", 1 ) -for k, v in pairs(luci.sys.net.devices()) do - interfaces:value(v) -end - --- collectd_interface.ignoreselected (IgnoreSelected) -ignoreselected = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") ) -ignoreselected.default = 0 -ignoreselected:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/iptables.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/iptables.lua deleted file mode 100644 index aa469843ec..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/iptables.lua +++ /dev/null @@ -1,120 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require("luci.sys.iptparser") - -ip = luci.sys.iptparser.IptParser() -chains = { } -targets = { } - -for i, rule in ipairs( ip:find() ) do - if rule.chain and rule.target then - chains[rule.chain] = true - targets[rule.target] = true - end -end - - -m = Map("luci_statistics", - translate("Iptables Plugin Configuration"), - translate( - "The iptables plugin will monitor selected firewall rules and " .. - "collect informations about processed bytes and packets per rule." - )) - --- collectd_iptables config section -s = m:section( NamedSection, "collectd_iptables", "luci_statistics" ) - --- collectd_iptables.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - - --- collectd_iptables_match config section (Chain directives) -rule = m:section( TypedSection, "collectd_iptables_match", - translate("Add matching rule"), - translate( - "Here you can define various criteria by which the monitored " .. - "iptables rules are selected." - )) -rule.addremove = true -rule.anonymous = true - - --- collectd_iptables_match.name -rule_table = rule:option( Value, "name", - translate("Name of the rule"), translate("max. 16 chars") ) - --- collectd_iptables_match.table -rule_table = rule:option( ListValue, "table", translate("Table") ) -rule_table.default = "filter" -rule_table.rmempty = true -rule_table.optional = true -rule_table:value("") -rule_table:value("filter") -rule_table:value("nat") -rule_table:value("mangle") - - --- collectd_iptables_match.chain -rule_chain = rule:option( ListValue, "chain", translate("Chain") ) -rule_chain.rmempty = true -rule_chain.optional = true -rule_chain:value("") - -for chain, void in pairs( chains ) do - rule_chain:value( chain ) -end - - --- collectd_iptables_match.target -rule_target = rule:option( ListValue, "target", translate("Action (target)") ) -rule_target.rmempty = true -rule_target.optional = true -rule_target:value("") - -for target, void in pairs( targets ) do - rule_target:value( target ) -end - - --- collectd_iptables_match.protocol -rule_protocol = rule:option( ListValue, "protocol", translate("Network protocol") ) -rule_protocol.rmempty = true -rule_protocol.optional = true -rule_protocol:value("") -rule_protocol:value("tcp") -rule_protocol:value("udp") -rule_protocol:value("icmp") - --- collectd_iptables_match.source -rule_source = rule:option( Value, "source", translate("Source ip range") ) -rule_source.default = "0.0.0.0/0" -rule_source.rmempty = true -rule_source.optional = true - --- collectd_iptables_match.destination -rule_destination = rule:option( Value, "destination", translate("Destination ip range") ) -rule_destination.default = "0.0.0.0/0" -rule_destination.rmempty = true -rule_destination.optional = true - --- collectd_iptables_match.inputif -rule_inputif = rule:option( Value, "inputif", - translate("Incoming interface"), translate("e.g. br-lan") ) -rule_inputif.rmempty = true -rule_inputif.optional = true - --- collectd_iptables_match.outputif -rule_outputif = rule:option( Value, "outputif", - translate("Outgoing interface"), translate("e.g. br-ff") ) -rule_outputif.rmempty = true -rule_outputif.optional = true - --- collectd_iptables_match.options -rule_options = rule:option( Value, "options", - translate("Options"), translate("e.g. reject-with tcp-reset") ) -rule_options.rmempty = true -rule_options.optional = true - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/irq.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/irq.lua deleted file mode 100644 index 6a8c22761a..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/irq.lua +++ /dev/null @@ -1,30 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("IRQ Plugin Configuration"), - translate( - "The irq plugin will monitor the rate of issues per second for " .. - "each selected interrupt. If no interrupt is selected then all " .. - "interrupts are monitored." - )) - --- collectd_irq config section -s = m:section( NamedSection, "collectd_irq", "luci_statistics" ) - --- collectd_irq.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_irq.irqs (Irq) -irqs = s:option( Value, "Irqs", translate("Monitor interrupts") ) -irqs.optional = true -irqs:depends( "enable", 1 ) - --- collectd_irq.ignoreselected (IgnoreSelected) -ignoreselected = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") ) -ignoreselected.default = 0 -ignoreselected.optional = "true" -ignoreselected:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/iwinfo.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/iwinfo.lua deleted file mode 100644 index 20d9509df8..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/iwinfo.lua +++ /dev/null @@ -1,26 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local m, s, o - -m = Map("luci_statistics", - translate("Wireless iwinfo Plugin Configuration"), - translate("The iwinfo plugin collects statistics about wireless signal strength, noise and quality.")) - -s = m:section(NamedSection, "collectd_iwinfo", "luci_statistics") - -o = s:option(Flag, "enable", translate("Enable this plugin")) -o.default = 0 - -o = s:option(Value, "Interfaces", translate("Monitor interfaces"), - translate("Leave unselected to automatically determine interfaces to monitor.")) -o.template = "cbi/network_ifacelist" -o.widget = "checkbox" -o.nocreate = true -o:depends("enable", 1) - -o = s:option(Flag, "IgnoreSelected", translate("Monitor all except specified")) -o.default = 0 -o:depends("enable", 1) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/load.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/load.lua deleted file mode 100644 index 6578291d8f..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/load.lua +++ /dev/null @@ -1,17 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Load Plugin Configuration"), - translate( - "The load plugin collects statistics about the general system load." - )) - --- collectd_wireless config section -s = m:section( NamedSection, "collectd_load", "luci_statistics" ) - --- collectd_wireless.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/memory.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/memory.lua deleted file mode 100644 index 5510a5a8e8..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/memory.lua +++ /dev/null @@ -1,21 +0,0 @@ ---[[ - -Copyright 2011 Manuel Munz - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -]]-- - -m = Map("luci_statistics", - translate("Memory Plugin Configuration"), - translate("The memory plugin collects statistics about the memory usage.")) - -s = m:section( NamedSection, "collectd_memory", "luci_statistics" ) - -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/netlink.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/netlink.lua deleted file mode 100644 index 917abd0c43..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/netlink.lua +++ /dev/null @@ -1,83 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require("luci.sys") - -local devices = luci.sys.net.devices() - - -m = Map("luci_statistics", - translate("Netlink Plugin Configuration"), - translate( - "The netlink plugin collects extended informations like " .. - "qdisc-, class- and filter-statistics for selected interfaces." - )) - --- collectd_netlink config section -s = m:section( NamedSection, "collectd_netlink", "luci_statistics" ) - --- collectd_netlink.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_netlink.interfaces (Interface) -interfaces = s:option( MultiValue, "Interfaces", translate("Basic monitoring") ) -interfaces.widget = "select" -interfaces.optional = true -interfaces.size = #devices + 1 -interfaces:depends( "enable", 1 ) -interfaces:value("") -for i, v in ipairs(devices) do - interfaces:value(v) -end - --- collectd_netlink.verboseinterfaces (VerboseInterface) -verboseinterfaces = s:option( MultiValue, "VerboseInterfaces", translate("Verbose monitoring") ) -verboseinterfaces.widget = "select" -verboseinterfaces.optional = true -verboseinterfaces.size = #devices + 1 -verboseinterfaces:depends( "enable", 1 ) -verboseinterfaces:value("") -for i, v in ipairs(devices) do - verboseinterfaces:value(v) -end - --- collectd_netlink.qdiscs (QDisc) -qdiscs = s:option( MultiValue, "QDiscs", translate("Qdisc monitoring") ) -qdiscs.widget = "select" -qdiscs.optional = true -qdiscs.size = #devices + 1 -qdiscs:depends( "enable", 1 ) -qdiscs:value("") -for i, v in ipairs(devices) do - qdiscs:value(v) -end - --- collectd_netlink.classes (Class) -classes = s:option( MultiValue, "Classes", translate("Shaping class monitoring") ) -classes.widget = "select" -classes.optional = true -classes.size = #devices + 1 -classes:depends( "enable", 1 ) -classes:value("") -for i, v in ipairs(devices) do - classes:value(v) -end - --- collectd_netlink.filters (Filter) -filters = s:option( MultiValue, "Filters", translate("Filter class monitoring") ) -filters.widget = "select" -filters.optional = true -filters.size = #devices + 1 -filters:depends( "enable", 1 ) -filters:value("") -for i, v in ipairs(devices) do - filters:value(v) -end - --- collectd_netlink.ignoreselected (IgnoreSelected) -ignoreselected = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") ) -ignoreselected.default = 0 -ignoreselected:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/network.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/network.lua deleted file mode 100644 index 547badf568..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/network.lua +++ /dev/null @@ -1,85 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Network Plugin Configuration"), - translate( - "The network plugin provides network based communication between " .. - "different collectd instances. Collectd can operate both in client " .. - "and server mode. In client mode locally collected data is " .. - "transferred to a collectd server instance, in server mode the " .. - "local instance receives data from other hosts." - )) - --- collectd_network config section -s = m:section( NamedSection, "collectd_network", "luci_statistics" ) - --- collectd_network.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - - --- collectd_network_listen config section (Listen) -listen = m:section( TypedSection, "collectd_network_listen", - translate("Listener interfaces"), - translate( - "This section defines on which interfaces collectd will wait " .. - "for incoming connections." - )) -listen.addremove = true -listen.anonymous = true - --- collectd_network_listen.host -listen_host = listen:option( Value, "host", translate("Listen host") ) -listen_host.default = "0.0.0.0" - --- collectd_network_listen.port -listen_port = listen:option( Value, "port", translate("Listen port") ) -listen_port.default = 25826 -listen_port.isinteger = true -listen_port.optional = true - - --- collectd_network_server config section (Server) -server = m:section( TypedSection, "collectd_network_server", - translate("server interfaces"), - translate( - "This section defines to which servers the locally collected " .. - "data is sent to." - )) -server.addremove = true -server.anonymous = true - --- collectd_network_server.host -server_host = server:option( Value, "host", translate("Server host") ) -server_host.default = "0.0.0.0" - --- collectd_network_server.port -server_port = server:option( Value, "port", translate("Server port") ) -server_port.default = 25826 -server_port.isinteger = true -server_port.optional = true - --- collectd_network.timetolive (TimeToLive) -ttl = s:option( Value, "TimeToLive", translate("TTL for network packets") ) -ttl.default = 128 -ttl.isinteger = true -ttl.optional = true -ttl:depends( "enable", 1 ) - --- collectd_network.forward (Forward) -forward = s:option( Flag, "Forward", translate("Forwarding between listen and server addresses") ) -forward.default = 0 -forward.optional = true -forward:depends( "enable", 1 ) - --- collectd_network.cacheflush (CacheFlush) -cacheflush = s:option( Value, "CacheFlush", - translate("Cache flush interval"), translate("Seconds") ) -cacheflush.default = 86400 -cacheflush.isinteger = true -cacheflush.optional = true -cacheflush:depends( "enable", 1 ) - - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/nut.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/nut.lua deleted file mode 100644 index 03ec29e13e..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/nut.lua +++ /dev/null @@ -1,17 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("UPS Plugin Configuration"), - translate("The NUT plugin reads information about Uninterruptible Power Supplies.")) - -s = m:section(NamedSection, "collectd_nut", "luci_statistics" ) - -enable = s:option(Flag, "enable", translate("Enable this plugin")) -enable.default = 0 - -host = s:option(Value, "UPS", translate("UPS"), translate("UPS name in NUT ups@host format")) -host.placeholder = "myupsname" -host.datatype = "string" -host.rmempty = true - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/olsrd.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/olsrd.lua deleted file mode 100644 index 950d7a7971..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/olsrd.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("OLSRd Plugin Configuration"), - translate("The OLSRd plugin reads information about meshed networks from the txtinfo plugin of OLSRd.")) - -s = m:section(NamedSection, "collectd_olsrd", "luci_statistics" ) - -enable = s:option(Flag, "enable", translate("Enable this plugin")) -enable.default = 0 - -host = s:option(Value, "Host", translate("Host"), translate("IP or hostname where to get the txtinfo output from")) -host.placeholder = "127.0.0.1" -host.datatype = "host(1)" -host.rmempty = true - -port = s:option(Value, "Port", translate("Port")) -port.placeholder = "2006" -port.datatype = "range(0,65535)" -port.rmempty = true -port.cast = "string" - -cl = s:option(ListValue, "CollectLinks", translate("CollectLinks"), - translate("Specifies what information to collect about links.")) -cl:value("No") -cl:value("Summary") -cl:value("Detail") -cl.default = "Detail" - -cr = s:option(ListValue, "CollectRoutes", translate("CollectRoutes"), - translate("Specifies what information to collect about routes.")) -cr:value("No") -cr:value("Summary") -cr:value("Detail") -cr.default = "Summary" - -ct = s:option(ListValue, "CollectTopology", translate("CollectTopology"), - translate("Specifies what information to collect about the global topology.")) -ct:value("No") -ct:value("Summary") -ct:value("Detail") -ct.default = "Summary" - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/openvpn.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/openvpn.lua deleted file mode 100644 index 193f0448ae..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/openvpn.lua +++ /dev/null @@ -1,56 +0,0 @@ --- Copyright 2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require "luci.sys" - -local m, s, o - - -m = Map("luci_statistics", - translate("OpenVPN Plugin Configuration"), - translate("The OpenVPN plugin gathers information about the current vpn connection status.")) - -s = m:section( NamedSection, "collectd_openvpn", "luci_statistics" ) - - -o = s:option( Flag, "enable", translate("Enable this plugin") ) -o.default = "0" - - -o = s:option(Flag, "CollectIndividualUsers", translate("Generate a separate graph for each logged user")) -o.default = "0" -o.rmempty = true -o:depends("enable", 1) - - -o = s:option(Flag, "CollectUserCount", translate("Aggregate number of connected users")) -o.default = "0" -o.rmempty = true -o:depends("enable", 1) - - -o = s:option(Flag, "CollectCompression", translate("Gather compression statistics")) -o.default = "0" -o.rmempty = true -o:depends("enable", 1) - - -o = s:option(Flag, "ImprovedNamingSchema", translate("Use improved naming schema")) -o.default = "0" -o.rmempty = true -o:depends("enable", 1) - - -o = s:option(DynamicList, "StatusFile", translate("OpenVPN status files")) -o.rmempty = true -o:depends("enable", 1) - -local status_files = nixio.fs.glob("/var/run/openvpn.*.status") -if status_files then - local status_file - for status_file in status_files do - o:value(status_file) - end -end - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/ping.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/ping.lua deleted file mode 100644 index 3179da63b5..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/ping.lua +++ /dev/null @@ -1,35 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Ping Plugin Configuration"), - translate( - "The ping plugin will send icmp echo replies to selected " .. - "hosts and measure the roundtrip time for each host." - )) - --- collectd_ping config section -s = m:section( NamedSection, "collectd_ping", "luci_statistics" ) - --- collectd_ping.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_ping.hosts (Host) -hosts = s:option( Value, "Hosts", translate("Monitor hosts"), translate ("Add multiple hosts separated by space.")) -hosts.default = "127.0.0.1" -hosts:depends( "enable", 1 ) - --- collectd_ping.ttl (TTL) -ttl = s:option( Value, "TTL", translate("TTL for ping packets") ) -ttl.isinteger = true -ttl.default = 128 -ttl:depends( "enable", 1 ) - --- collectd_ping.interval (Interval) -interval = s:option( Value, "Interval", translate("Interval for pings"), translate ("Seconds") ) -interval.isinteger = true -interval.default = 30 -interval:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/processes.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/processes.lua deleted file mode 100644 index 4171a886b9..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/processes.lua +++ /dev/null @@ -1,24 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Processes Plugin Configuration"), - translate( - "The processes plugin collects informations like cpu time, " .. - "page faults and memory usage of selected processes." - )) - --- collectd_processes config section -s = m:section( NamedSection, "collectd_processes", "luci_statistics" ) - --- collectd_processes.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_processes.processes (Process) -processes = s:option( Value, "Processes", translate("Monitor processes"), - translate("Processes to monitor separated by space") ) -processes:depends( "enable", 1 ) -processes.default = "uhttpd dropbear dnsmasq" - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/rrdtool.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/rrdtool.lua deleted file mode 100644 index fa00bbbf5e..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/rrdtool.lua +++ /dev/null @@ -1,107 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("RRDTool Plugin Configuration"), - translate( - "The rrdtool plugin stores the collected data in rrd database " .. - "files, the foundation of the diagrams.

    " .. - "Warning: Setting the wrong values will result in a very " .. - "high memory consumption in the temporary directory. " .. - "This can render the device unusable!" - )) - --- collectd_rrdtool config section -s = m:section( NamedSection, "collectd_rrdtool", "luci_statistics" ) - --- collectd_rrdtool.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 1 - --- collectd_rrdtool.datadir (DataDir) -datadir = s:option( Value, "DataDir", - translate("Storage directory"), - translate("Note: as pages are rendered by user 'nobody', the *.rrd files, " .. - "the storage directory and all its parent directories need " .. - "to be world readable." - )) -datadir.default = "/tmp" -datadir.rmempty = true -datadir.optional = true -datadir:depends( "enable", 1 ) - --- collectd_rrdtool.stepsize (StepSize) -stepsize = s:option( Value, "StepSize", - translate("RRD step interval"), translate("Seconds") ) -stepsize.default = 30 -stepsize.isinteger = true -stepsize.rmempty = true -stepsize.optional = true -stepsize:depends( "enable", 1 ) - --- collectd_rrdtool.heartbeat (HeartBeat) -heartbeat = s:option( Value, "HeartBeat", - translate("RRD heart beat interval"), translate("Seconds") ) -heartbeat.default = 60 -heartbeat.isinteger = true -heartbeat.rmempty = true -heartbeat.optional = true -heartbeat:depends( "enable", 1 ) - --- collectd_rrdtool.rrasingle (RRASingle) -rrasingle = s:option( Flag, "RRASingle", - translate("Only create average RRAs"), translate("reduces rrd size") ) -rrasingle.default = true -rrasingle:depends( "enable", 1 ) - --- collectd_rrdtool.rramax (RRAMax) -rramax = s:option( Flag, "RRAMax", - translate("Show max values instead of averages"), - translate("Max values for a period can be used instead of averages when not using 'only average RRAs'") ) -rramax.default = false -rramax.rmempty = true -rramax:depends( "RRASingle", 0 ) - --- collectd_rrdtool.rratimespans (RRATimespan) -rratimespans = s:option( Value, "RRATimespans", - translate("Stored timespans"), translate("seconds; multiple separated by space") ) -rratimespans.default = "600 86400 604800 2678400 31622400" -rratimespans.rmempty = true -rratimespans.optional = true -rratimespans:depends( "enable", 1 ) - --- collectd_rrdtool.rrarows (RRARows) -rrarows = s:option( Value, "RRARows", translate("Rows per RRA") ) -rrarows.isinteger = true -rrarows.default = 100 -rrarows.rmempty = true -rrarows.optional = true -rrarows:depends( "enable", 1 ) - --- collectd_rrdtool.xff (XFF) -xff = s:option( Value, "XFF", translate("RRD XFiles Factor") ) -xff.default = 0.1 -xff.isnumber = true -xff.rmempty = true -xff.optional = true -xff:depends( "enable", 1 ) - --- collectd_rrdtool.cachetimeout (CacheTimeout) -cachetimeout = s:option( Value, "CacheTimeout", - translate("Cache collected data for"), translate("Seconds") ) -cachetimeout.isinteger = true -cachetimeout.default = 100 -cachetimeout.rmempty = true -cachetimeout.optional = true -cachetimeout:depends( "enable", 1 ) - --- collectd_rrdtool.cacheflush (CacheFlush) -cacheflush = s:option( Value, "CacheFlush", - translate("Flush cache after"), translate("Seconds") ) -cacheflush.isinteger = true -cacheflush.default = 100 -cacheflush.rmempty = true -cacheflush.optional = true -cacheflush:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua deleted file mode 100644 index 77e36bfaff..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/sensors.lua +++ /dev/null @@ -1,125 +0,0 @@ --- Copyright 2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require "luci.sys" - -local m, s, o -local sensor_types = { - ["12v"] = "voltage", - ["2.0v"] = "voltage", - ["2.5v"] = "voltage", - ["3.3v"] = "voltage", - ["5.0v"] = "voltage", - ["5v"] = "voltage", - ["ain1"] = "voltage", - ["ain2"] = "voltage", - ["cpu_temp"] = "temperature", - ["fan1"] = "fanspeed", - ["fan2"] = "fanspeed", - ["fan3"] = "fanspeed", - ["fan4"] = "fanspeed", - ["fan5"] = "fanspeed", - ["fan6"] = "fanspeed", - ["fan7"] = "fanspeed", - ["in0"] = "voltage", - ["in10"] = "voltage", - ["in2"] = "voltage", - ["in3"] = "voltage", - ["in4"] = "voltage", - ["in5"] = "voltage", - ["in6"] = "voltage", - ["in7"] = "voltage", - ["in8"] = "voltage", - ["in9"] = "voltage", - ["power1"] = "power", - ["remote_temp"] = "temperature", - ["temp1"] = "temperature", - ["temp2"] = "temperature", - ["temp3"] = "temperature", - ["temp4"] = "temperature", - ["temp5"] = "temperature", - ["temp6"] = "temperature", - ["temp7"] = "temperature", - ["temp"] = "temperature", - ["vccp1"] = "voltage", - ["vccp2"] = "voltage", - ["vdd"] = "voltage", - ["vid1"] = "voltage", - ["vid2"] = "voltage", - ["vid3"] = "voltage", - ["vid4"] = "voltage", - ["vid5"] = "voltage", - ["vid"] = "voltage", - ["vin1"] = "voltage", - ["vin2"] = "voltage", - ["vin3"] = "voltage", - ["vin4"] = "voltage", - ["volt12"] = "voltage", - ["volt5"] = "voltage", - ["voltbatt"] = "voltage", - ["vrm"] = "voltage" - -} - - -m = Map("luci_statistics", - translate("Sensors Plugin Configuration"), - translate("The sensors plugin uses the Linux Sensors framework to gather environmental statistics.")) - -s = m:section( NamedSection, "collectd_sensors", "luci_statistics" ) - - -o = s:option( Flag, "enable", translate("Enable this plugin") ) -o.default = 0 - - -o = s:option(Flag, "__all", translate("Monitor all sensors")) -o:depends("enable", 1) -o.default = 1 -o.write = function() end -o.cfgvalue = function(self, sid) - local v = self.map:get(sid, "Sensor") - if v == nil or (type(v) == "table" and #v == 0) or (type(v) == "string" and #v == 0) then - return "1" - end -end - - -o = s:option(MultiValue, "Sensor", translate("Sensor list"), translate("Hold Ctrl to select multiple items or to deselect entries.")) -o:depends({enable = 1, __all = "" }) -o.widget = "select" -o.rmempty = true -o.size = 0 - -local sensorcli = io.popen("/usr/sbin/sensors -u -A") -if sensorcli then - local bus, sensor - - while true do - local ln = sensorcli:read("*ln") - if not ln then - break - elseif ln:match("^[%w-]+$") then - bus = ln - elseif ln:match("^[%w-]+:$") then - sensor = ln:sub(0, -2):lower() - if bus and sensor_types[sensor] then - o:value("%s/%s-%s" %{ bus, sensor_types[sensor], sensor }) - o.size = o.size + 1 - end - elseif ln == "" then - bus = nil - sensor = nil - end - end - - sensorcli:close() -end - - -o = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") ) -o.default = 0 -o.rmempty = true -o:depends({ enable = 1, __all = "" }) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/splash_leases.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/splash_leases.lua deleted file mode 100644 index 4ddfacc118..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/splash_leases.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright 2013 Freifunk Augsburg / Michael Wendland --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Splash Leases Plugin Configuration"), - translate("The splash leases plugin uses libuci to collect statistics about splash leases.")) - -s = m:section( NamedSection, "collectd_splash_leases", "luci_statistics" ) - -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 1 - -return m - diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/tcpconns.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/tcpconns.lua deleted file mode 100644 index 3c650180aa..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/tcpconns.lua +++ /dev/null @@ -1,33 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("TCPConns Plugin Configuration"), - translate( - "The tcpconns plugin collects informations about open tcp " .. - "connections on selected ports." - )) - --- collectd_tcpconns config section -s = m:section( NamedSection, "collectd_tcpconns", "luci_statistics" ) - --- collectd_tcpconns.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_tcpconns.listeningports (ListeningPorts) -listeningports = s:option( Flag, "ListeningPorts", translate("Monitor all local listen ports") ) -listeningports.default = 1 -listeningports:depends( "enable", 1 ) - --- collectd_tcpconns.localports (LocalPort) -localports = s:option( Value, "LocalPorts", translate("Monitor local ports") ) -localports.optional = true -localports:depends( "enable", 1 ) - --- collectd_tcpconns.remoteports (RemotePort) -remoteports = s:option( Value, "RemotePorts", translate("Monitor remote ports") ) -remoteports.optional = true -remoteports:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua deleted file mode 100644 index bdf41b79bc..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua +++ /dev/null @@ -1,29 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Thermal Plugin Configuration"), - translate("The thermal plugin will monitor temperature of the system. " .. - "Data is typically read from /sys/class/thermal/*/temp " .. - "( '*' denotes the thermal device to be read, e.g. thermal_zone1 )") - ) - --- collectd_thermal config section -s = m:section( NamedSection, "collectd_thermal", "luci_statistics" ) - --- collectd_thermal.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_thermal.tz (Device) -tz = s:option( Value, "Device", translate("Monitor device(s) / thermal zone(s)"), - translate("Empty value = monitor all") ) -tz.optional = true -tz:depends( "enable", 1 ) - --- collectd_thermal.ignoreselected (IgnoreSelected) -ignoreselected = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") ) -ignoreselected.default = 0 -ignoreselected.optional = true -ignoreselected:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/unixsock.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/unixsock.lua deleted file mode 100644 index be79543b22..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/unixsock.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("luci_statistics", - translate("Unixsock Plugin Configuration"), - translate( - "The unixsock plugin creates a unix socket which can be used " .. - "to read collected data from a running collectd instance." - )) - --- collectd_unixsock config section -s = m:section( NamedSection, "collectd_unixsock", "luci_statistics" ) - --- collectd_unixsock.enable -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - --- collectd_unixsock.socketfile (SocketFile) -socketfile = s:option( Value, "SocketFile" ) -socketfile.default = "/var/run/collect-query.socket" -socketfile:depends( "enable", 1 ) - --- collectd_unixsock.socketgroup (SocketGroup) -socketgroup = s:option( Value, "SocketGroup" ) -socketgroup.default = "nobody" -socketgroup.rmempty = true -socketgroup.optional = true -socketgroup:depends( "enable", 1 ) - --- collectd_unixsock.socketperms (SocketPerms) -socketperms = s:option( Value, "SocketPerms" ) -socketperms.default = "0770" -socketperms.rmempty = true -socketperms.optional = true -socketperms:depends( "enable", 1 ) - -return m diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/uptime.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/uptime.lua deleted file mode 100644 index 3a6c4644e3..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/uptime.lua +++ /dev/null @@ -1,22 +0,0 @@ ---[[ - -Copyright 2013 Thomas Endt - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -]]-- - -m = Map("luci_statistics", - translate("Uptime Plugin Configuration"), - translate("The uptime plugin collects statistics about the uptime of the system.")) - -s = m:section( NamedSection, "collectd_uptime", "luci_statistics" ) - -enable = s:option( Flag, "enable", translate("Enable this plugin") ) -enable.default = 0 - -return m - diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/datatree.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/datatree.lua deleted file mode 100644 index 5176a19a22..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/datatree.lua +++ /dev/null @@ -1,205 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.datatree", package.seeall) - -local util = require("luci.util") -local sys = require("luci.sys") -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local sections = uci:get_all("luci_statistics") - - -Instance = util.class() - -function Instance.__init__( self, host ) - self._host = host or sys.hostname() - self._libdir = "/usr/lib/collectd" - self._rrddir = "/tmp/rrd" - - if sections and sections.collectd then - self._host = host or sections.collectd.Hostname or sys.hostname() - self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd" - end - if sections and sections.collectd_rrdtool then - self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd" - end - - self._libdir = self._libdir:gsub("/$","") - self._rrddir = self._rrddir:gsub("/$","") - self._plugins = { } - - self:_scan() -end - -function Instance._mkpath( self, plugin, pinstance ) - local dir = self._rrddir .. "/" .. self._host - - if type(plugin) == "string" and plugin:len() > 0 then - dir = dir .. "/" .. plugin - - if type(pinstance) == "string" and pinstance:len() > 0 then - dir = dir .. "-" .. pinstance - end - end - - return dir -end - -function Instance._ls( self, ... ) - local ditr = fs.dir(self:_mkpath(...)) - if ditr then - local dirs = { } - while true do - local d = ditr() - if not d then break end - dirs[#dirs+1] = d - end - return dirs - end -end - -function Instance._notzero( self, table ) - for k in pairs(table) do - return true - end - - return false -end - -function Instance._scan( self ) - local dirs = self:_ls() - if not dirs then - return - end - --- for i, plugin in ipairs( dirs ) do --- if plugin:match("%w+.so") then --- self._plugins[ plugin:gsub("%.so$", "") ] = { } --- end --- end - - for _, dir in ipairs(dirs) do - if dir ~= "." and dir ~= ".." and - fs.stat(self:_mkpath(dir)).type == "dir" - then - local plugin = dir:gsub("%-.+$", "") - if not self._plugins[plugin] then - self._plugins[plugin] = { } - end - end - end - - for plugin, instances in pairs( self._plugins ) do - - local dirs = self:_ls() - - if type(dirs) == "table" then - for i, dir in ipairs(dirs) do - if dir:find( plugin .. "%-" ) or dir == plugin then - local instance = "" - - if dir ~= plugin then - instance = dir:gsub( plugin .. "%-", "", 1 ) - end - - instances[instance] = { } - end - end - end - - for instance, data_instances in pairs( instances ) do - - dirs = self:_ls(plugin, instance) - - if type(dirs) == "table" then - for i, file in ipairs(dirs) do - if file:find("%.rrd") then - file = file:gsub("%.rrd","") - - local data_type - local data_instance - - if file:find("%-") then - data_type = file:gsub( "%-.+","" ) - data_instance = file:gsub( "[^%-]-%-", "", 1 ) - else - data_type = file - data_instance = "" - end - - if not data_instances[data_type] then - data_instances[data_type] = { data_instance } - else - table.insert( data_instances[data_type], data_instance ) - end - end - end - end - end - end -end - - -function Instance.plugins( self ) - local rv = { } - - for plugin, val in pairs( self._plugins ) do - if self:_notzero( val ) then - table.insert( rv, plugin ) - end - end - - return rv -end - -function Instance.plugin_instances( self, plugin ) - local rv = { } - - for instance, val in pairs( self._plugins[plugin] ) do - table.insert( rv, instance ) - end - - return rv -end - -function Instance.data_types( self, plugin, instance ) - local rv = { } - local p = self._plugins[plugin] - - if type(p) == "table" and type(p[instance]) == "table" then - for type, val in pairs(p[instance]) do - table.insert( rv, type ) - end - end - - return rv -end - -function Instance.data_instances( self, plugin, instance, dtype ) - local rv = { } - local p = self._plugins[plugin] - - if type(p) == "table" and type(p[instance]) == "table" and type(p[instance][dtype]) == "table" then - for i, instance in ipairs(p[instance][dtype]) do - table.insert( rv, instance ) - end - end - - return rv -end - -function Instance.host_instances( self ) - local hosts_path = fs.glob(self._rrddir..'/*') - local hosts = { } - - if hosts_path then - local path - for path in hosts_path do - hosts[#hosts+1] = fs.basename(path) - end - end - - return hosts -end - diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/i18n.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/i18n.lua deleted file mode 100644 index 7877e61ab3..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/i18n.lua +++ /dev/null @@ -1,80 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.i18n", package.seeall) - -require("luci.util") -require("luci.i18n") - - -Instance = luci.util.class() - - -function Instance.__init__( self, graph ) - self.i18n = luci.i18n - self.graph = graph -end - -function Instance._subst( self, str, val ) - str = str:gsub( "%%H", self.graph.opts.host or "" ) - str = str:gsub( "%%pn", val.plugin or "" ) - str = str:gsub( "%%pi", val.pinst or "" ) - str = str:gsub( "%%dt", val.dtype or "" ) - str = str:gsub( "%%di", val.dinst or "" ) - str = str:gsub( "%%ds", val.dsrc or "" ) - - return str -end - -function Instance.title( self, plugin, pinst, dtype, dinst, user_title ) - - local title = user_title or - "p=%s/pi=%s/dt=%s/di=%s" % { - plugin, - (pinst and #pinst > 0) and pinst or "(nil)", - (dtype and #dtype > 0) and dtype or "(nil)", - (dinst and #dinst > 0) and dinst or "(nil)" - } - - return self:_subst( title, { - plugin = plugin, - pinst = pinst, - dtype = dtype, - dinst = dinst - } ) - -end - -function Instance.label( self, plugin, pinst, dtype, dinst, user_label ) - - local label = user_label or - "dt=%s/di=%s" % { - (dtype and #dtype > 0) and dtype or "(nil)", - (dinst and #dinst > 0) and dinst or "(nil)" - } - - return self:_subst( label, { - plugin = plugin, - pinst = pinst, - dtype = dtype, - dinst = dinst - } ) - -end - -function Instance.ds( self, source ) - - local label = source.title or - "dt=%s/di=%s/ds=%s" % { - (source.type and #source.type > 0) and source.type or "(nil)", - (source.instance and #source.instance > 0) and source.instance or "(nil)", - (source.ds and #source.ds > 0) and source.ds or "(nil)" - } - - return self:_subst( label, { - dtype = source.type, - dinst = source.instance, - dsrc = source.ds - } ):gsub(":", "\\:") - -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua deleted file mode 100644 index e29a2e17d9..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua +++ /dev/null @@ -1,576 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool", package.seeall) - -require("luci.statistics.datatree") -require("luci.statistics.rrdtool.colors") -require("luci.statistics.i18n") -require("luci.model.uci") -require("luci.util") -require("luci.sys") - -local fs = require "nixio.fs" - - -Graph = luci.util.class() - -function Graph.__init__( self, timespan, opts ) - - opts = opts or { } - - local uci = luci.model.uci.cursor() - local sections = uci:get_all( "luci_statistics" ) - - -- options - opts.timespan = timespan or sections.rrdtool.default_timespan or 900 - opts.rrasingle = opts.rrasingle or ( sections.collectd_rrdtool.RRASingle == "1" ) - opts.rramax = opts.rramax or ( sections.collectd_rrdtool.RRAMax == "1" ) - opts.host = opts.host or sections.collectd.Hostname or luci.sys.hostname() - opts.width = opts.width or sections.rrdtool.image_width or 400 - opts.rrdpath = opts.rrdpath or sections.collectd_rrdtool.DataDir or "/tmp/rrd" - opts.imgpath = opts.imgpath or sections.rrdtool.image_path or "/tmp/rrdimg" - opts.rrdpath = opts.rrdpath:gsub("/$","") - opts.imgpath = opts.imgpath:gsub("/$","") - - -- helper classes - self.colors = luci.statistics.rrdtool.colors.Instance() - self.tree = luci.statistics.datatree.Instance(opts.host) - self.i18n = luci.statistics.i18n.Instance( self ) - - -- rrdtool default args - self.args = { - "-a", "PNG", - "-s", "NOW-" .. opts.timespan, - "-w", opts.width - } - - -- store options - self.opts = opts -end - -function Graph._mkpath( self, plugin, plugin_instance, dtype, dtype_instance ) - local t = self.opts.host .. "/" .. plugin - if type(plugin_instance) == "string" and plugin_instance:len() > 0 then - t = t .. "-" .. plugin_instance - end - t = t .. "/" .. dtype - if type(dtype_instance) == "string" and dtype_instance:len() > 0 then - t = t .. "-" .. dtype_instance - end - return t -end - -function Graph.mkrrdpath( self, ... ) - return string.format( "%s/%s.rrd", self.opts.rrdpath, self:_mkpath( ... ) ) -end - -function Graph.mkpngpath( self, ... ) - return string.format( "%s/%s.%i.png", self.opts.imgpath, self:_mkpath( ... ), self.opts.timespan ) -end - -function Graph.strippngpath( self, path ) - return path:sub( self.opts.imgpath:len() + 2 ) -end - -function Graph._forcelol( self, list ) - if type(list[1]) ~= "table" then - return( { list } ) - end - return( list ) -end - -function Graph._rrdtool( self, def, rrd ) - - -- prepare directory - local dir = def[1]:gsub("/[^/]+$","") - fs.mkdirr( dir ) - - -- construct commandline - local cmdline = "rrdtool graph" - - -- copy default arguments to def stack - for i, opt in ipairs(self.args) do - table.insert( def, 1 + i, opt ) - end - - -- construct commandline from def stack - for i, opt in ipairs(def) do - opt = opt .. "" -- force string - - if rrd then - opt = opt:gsub( "{file}", rrd ) - end - - if opt:match("[^%w]") then - cmdline = cmdline .. " '" .. opt .. "'" - else - cmdline = cmdline .. " " .. opt - end - end - - -- execute rrdtool - local rrdtool = io.popen( cmdline ) - rrdtool:close() -end - -function Graph._generic( self, opts, plugin, plugin_instance, dtype, index ) - - -- generated graph defs - local defs = { } - - -- internal state variables - local _args = { } - local _sources = { } - local _stack_neg = { } - local _stack_pos = { } - local _longest_name = 0 - local _has_totals = false - - -- some convenient aliases - local _ti = table.insert - local _sf = string.format - - -- local helper: append a string.format() formatted string to given table - function _tif( list, fmt, ... ) - table.insert( list, string.format( fmt, ... ) ) - end - - -- local helper: create definitions for min, max, avg and create *_nnl (not null) variable from avg - function __def(source) - - local inst = source.sname - local rrd = source.rrd - local ds = source.ds - - if not ds or ds:len() == 0 then ds = "value" end - - _tif( _args, "DEF:%s_avg_raw=%s:%s:AVERAGE", inst, rrd, ds ) - _tif( _args, "CDEF:%s_avg=%s_avg_raw,%s", inst, inst, source.transform_rpn ) - - if not self.opts.rrasingle then - _tif( _args, "DEF:%s_min_raw=%s:%s:MIN", inst, rrd, ds ) - _tif( _args, "CDEF:%s_min=%s_min_raw,%s", inst, inst, source.transform_rpn ) - _tif( _args, "DEF:%s_max_raw=%s:%s:MAX", inst, rrd, ds ) - _tif( _args, "CDEF:%s_max=%s_max_raw,%s", inst, inst, source.transform_rpn ) - end - - _tif( _args, "CDEF:%s_nnl=%s_avg,UN,0,%s_avg,IF", inst, inst, inst ) - end - - -- local helper: create cdefs depending on source options like flip and overlay - function __cdef(source) - - local prev - - -- find previous source, choose stack depending on flip state - if source.flip then - prev = _stack_neg[#_stack_neg] - else - prev = _stack_pos[#_stack_pos] - end - - -- is first source in stack or overlay source: source_stk = source_nnl - if not prev or source.overlay then - if self.opts.rrasingle or not self.opts.rramax then - -- create cdef statement for cumulative stack (no NaNs) and also - -- for display (preserving NaN where no points should be displayed) - _tif( _args, "CDEF:%s_stk=%s_nnl", source.sname, source.sname ) - _tif( _args, "CDEF:%s_plot=%s_avg", source.sname, source.sname ) - else - -- create cdef statement for cumulative stack (no NaNs) and also - -- for display (preserving NaN where no points should be displayed) - _tif( _args, "CDEF:%s_stk=%s_nnl", source.sname, source.sname ) - _tif( _args, "CDEF:%s_plot=%s_max", source.sname, source.sname ) - end - - -- is subsequent source without overlay: source_stk = source_nnl + previous_stk - else - if self.opts.rrasingle or not self.opts.rramax then - -- create cdef statement - _tif( _args, "CDEF:%s_stk=%s_nnl,%s_stk,+", source.sname, source.sname, prev ) - _tif( _args, "CDEF:%s_plot=%s_avg,%s_stk,+", source.sname, source.sname, prev ) - else - -- create cdef statement - _tif( _args, "CDEF:%s_stk=%s_nnl,%s_stk,+", source.sname, source.sname, prev ) - _tif( _args, "CDEF:%s_plot=%s_max,%s_stk,+", source.sname, source.sname, prev ) - end - end - - -- create multiply by minus one cdef if flip is enabled - if source.flip then - - -- create cdef statement: source_stk = source_stk * -1 - _tif( _args, "CDEF:%s_neg=%s_plot,-1,*", source.sname, source.sname ) - - -- push to negative stack if overlay is disabled - if not source.overlay then - _ti( _stack_neg, source.sname ) - end - - -- no flipping, push to positive stack if overlay is disabled - elseif not source.overlay then - - -- push to positive stack - _ti( _stack_pos, source.sname ) - end - - -- calculate total amount of data if requested - if source.total then - _tif( _args, - "CDEF:%s_avg_sample=%s_avg,UN,0,%s_avg,IF,sample_len,*", - source.sname, source.sname, source.sname - ) - - _tif( _args, - "CDEF:%s_avg_sum=PREV,UN,0,PREV,IF,%s_avg_sample,+", - source.sname, source.sname, source.sname - ) - end - end - - -- local helper: create cdefs required for calculating total values - function __cdef_totals() - if _has_totals then - _tif( _args, "CDEF:mytime=%s_avg,TIME,TIME,IF", _sources[1].sname ) - _ti( _args, "CDEF:sample_len_raw=mytime,PREV(mytime),-" ) - _ti( _args, "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF" ) - end - end - - -- local helper: create line and area statements - function __line(source) - - local line_color - local area_color - local legend - local var - - -- find colors: try source, then opts.colors; fall back to random color - if type(source.color) == "string" then - line_color = source.color - area_color = self.colors:from_string( line_color ) - elseif type(opts.colors[source.name:gsub("[^%w]","_")]) == "string" then - line_color = opts.colors[source.name:gsub("[^%w]","_")] - area_color = self.colors:from_string( line_color ) - else - area_color = self.colors:random() - line_color = self.colors:to_string( area_color ) - end - - -- derive area background color from line color - area_color = self.colors:to_string( self.colors:faded( area_color ) ) - - -- choose source_plot or source_neg variable depending on flip state - if source.flip then - var = "neg" - else - var = "plot" - end - - -- create legend - legend = _sf( "%-" .. _longest_name .. "s", source.title ) - - -- create area if not disabled - if not source.noarea then - _tif( _args, "AREA:%s_%s#%s", source.sname, var, area_color ) - end - - -- create line1 statement - _tif( _args, "LINE%d:%s_%s#%s:%s", - source.width or (source.noarea and 2 or 1), - source.sname, var, line_color, legend ) - end - - -- local helper: create gprint statements - function __gprint(source) - - local numfmt = opts.number_format or "%6.1lf" - local totfmt = opts.totals_format or "%5.1lf%s" - - -- don't include MIN if rrasingle is enabled - if not self.opts.rrasingle then - _tif( _args, "GPRINT:%s_min:MIN:\tMin\\: %s", source.sname, numfmt ) - end - - -- always include AVERAGE - _tif( _args, "GPRINT:%s_avg:AVERAGE:\tAvg\\: %s", source.sname, numfmt ) - - -- don't include MAX if rrasingle is enabled - if not self.opts.rrasingle then - _tif( _args, "GPRINT:%s_max:MAX:\tMax\\: %s", source.sname, numfmt ) - end - - -- include total count if requested else include LAST - if source.total then - _tif( _args, "GPRINT:%s_avg_sum:LAST:(ca. %s Total)\\l", source.sname, totfmt ) - else - _tif( _args, "GPRINT:%s_avg:LAST:\tLast\\: %s\\l", source.sname, numfmt ) - end - end - - - -- - -- find all data sources - -- - - -- find data types - local data_types - - if dtype then - data_types = { dtype } - else - data_types = opts.data.types or { } - end - - if not ( dtype or opts.data.types ) then - if opts.data.instances then - for k, v in pairs(opts.data.instances) do - _ti( data_types, k ) - end - elseif opts.data.sources then - for k, v in pairs(opts.data.sources) do - _ti( data_types, k ) - end - end - end - - - -- iterate over data types - for i, dtype in ipairs(data_types) do - - -- find instances - - local data_instances - - if not opts.per_instance then - if type(opts.data.instances) == "table" and type(opts.data.instances[dtype]) == "table" then - data_instances = opts.data.instances[dtype] - else - data_instances = self.tree:data_instances( plugin, plugin_instance, dtype ) - end - end - - if type(data_instances) ~= "table" or #data_instances == 0 then data_instances = { "" } end - - - -- iterate over data instances - for i, dinst in ipairs(data_instances) do - - -- construct combined data type / instance name - local dname = dtype - - if dinst:len() > 0 then - dname = dname .. "_" .. dinst - end - - - -- find sources - local data_sources = { "value" } - - if type(opts.data.sources) == "table" then - if type(opts.data.sources[dname]) == "table" then - data_sources = opts.data.sources[dname] - elseif type(opts.data.sources[dtype]) == "table" then - data_sources = opts.data.sources[dtype] - end - end - - - -- iterate over data sources - for i, dsource in ipairs(data_sources) do - - local dsname = dtype .. "_" .. dinst:gsub("[^%w]","_") .. "_" .. dsource - local altname = dtype .. "__" .. dsource - - --assert(dtype ~= "ping", dsname .. " or " .. altname) - - -- find datasource options - local dopts = { } - - if type(opts.data.options) == "table" then - if type(opts.data.options[dsname]) == "table" then - dopts = opts.data.options[dsname] - elseif type(opts.data.options[altname]) == "table" then - dopts = opts.data.options[altname] - elseif type(opts.data.options[dname]) == "table" then - dopts = opts.data.options[dname] - elseif type(opts.data.options[dtype]) == "table" then - dopts = opts.data.options[dtype] - end - end - - - -- store values - _ti( _sources, { - rrd = dopts.rrd or self:mkrrdpath( plugin, plugin_instance, dtype, dinst ), - color = dopts.color or self.colors:to_string( self.colors:random() ), - flip = dopts.flip or false, - total = dopts.total or false, - overlay = dopts.overlay or false, - transform_rpn = dopts.transform_rpn or "0,+", - noarea = dopts.noarea or false, - title = dopts.title or nil, - weight = dopts.weight or nil, - ds = dsource, - type = dtype, - instance = dinst, - index = #_sources + 1, - sname = ( #_sources + 1 ) .. dtype - } ) - - - -- generate datasource title - _sources[#_sources].title = self.i18n:ds( _sources[#_sources] ) - - - -- find longest name ... - if _sources[#_sources].title:len() > _longest_name then - _longest_name = _sources[#_sources].title:len() - end - - - -- has totals? - if _sources[#_sources].total then - _has_totals = true - end - end - end - end - - - -- - -- construct diagrams - -- - - -- if per_instance is enabled then find all instances from the first datasource in diagram - -- if per_instance is disabled then use an empty pseudo instance and use model provided values - local instances = { "" } - - if opts.per_instance then - instances = self.tree:data_instances( plugin, plugin_instance, _sources[1].type ) - end - - - -- iterate over instances - for i, instance in ipairs(instances) do - - -- store title and vlabel - _ti( _args, "-t" ) - _ti( _args, self.i18n:title( plugin, plugin_instance, _sources[1].type, instance, opts.title ) ) - _ti( _args, "-v" ) - _ti( _args, self.i18n:label( plugin, plugin_instance, _sources[1].type, instance, opts.vlabel ) ) - if opts.y_max then - _ti ( _args, "-u" ) - _ti ( _args, opts.y_max ) - end - if opts.y_min then - _ti ( _args, "-l" ) - _ti ( _args, opts.y_min ) - end - if opts.units_exponent then - _ti ( _args, "-X" ) - _ti ( _args, opts.units_exponent ) - end - if opts.alt_autoscale then - _ti ( _args, "-A" ) - end - if opts.alt_autoscale_max then - _ti ( _args, "-M" ) - end - - -- store additional rrd options - if opts.rrdopts then - for i, o in ipairs(opts.rrdopts) do _ti( _args, o ) end - end - - -- sort sources - table.sort(_sources, function(a, b) - local x = a.weight or a.index or 0 - local y = b.weight or b.index or 0 - return x < y - end) - - -- create DEF statements for each instance - for i, source in ipairs(_sources) do - -- fixup properties for per instance mode... - if opts.per_instance then - source.instance = instance - source.rrd = self:mkrrdpath( plugin, plugin_instance, source.type, instance ) - end - - __def( source ) - end - - -- create CDEF required for calculating totals - __cdef_totals() - - -- create CDEF statements for each instance in reversed order - for i, source in ipairs(_sources) do - __cdef( _sources[1 + #_sources - i] ) - end - - -- create LINE1, AREA and GPRINT statements for each instance - for i, source in ipairs(_sources) do - __line( source ) - __gprint( source ) - end - - -- prepend image path to arg stack - _ti( _args, 1, self:mkpngpath( plugin, plugin_instance, index .. instance ) ) - - -- push arg stack to definition list - _ti( defs, _args ) - - -- reset stacks - _args = { } - _stack_pos = { } - _stack_neg = { } - end - - return defs -end - -function Graph.render( self, plugin, plugin_instance, is_index ) - - dtype_instances = dtype_instances or { "" } - local pngs = { } - - -- check for a whole graph handler - local plugin_def = "luci.statistics.rrdtool.definitions." .. plugin - local stat, def = pcall( require, plugin_def ) - - if stat and def and type(def.rrdargs) == "function" then - - -- temporary image matrix - local _images = { } - - -- get diagram definitions - for i, opts in ipairs( self:_forcelol( def.rrdargs( self, plugin, plugin_instance, nil, is_index ) ) ) do - if not is_index or not opts.detail then - _images[i] = { } - - -- get diagram definition instances - local diagrams = self:_generic( opts, plugin, plugin_instance, nil, i ) - - -- render all diagrams - for j, def in ipairs( diagrams ) do - -- remember image - _images[i][j] = def[1] - - -- exec - self:_rrdtool( def ) - end - end - end - - -- remember images - XXX: fixme (will cause probs with asymmetric data) - for y = 1, #_images[1] do - for x = 1, #_images do - table.insert( pngs, _images[x][y] ) - end - end - end - - return pngs -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/colors.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/colors.lua deleted file mode 100644 index 5b35dff67c..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/colors.lua +++ /dev/null @@ -1,61 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.colors", package.seeall) - -require("luci.util") - - -Instance = luci.util.class() - -function Instance.from_string( self, s ) - return { - tonumber(s:sub(1,2), 16), - tonumber(s:sub(3,4), 16), - tonumber(s:sub(5,6), 16) - } -end - -function Instance.to_string( self, c ) - return string.format( - "%02x%02x%02x", - math.floor(c[1]), - math.floor(c[2]), - math.floor(c[3]) - ) -end - -function Instance.random( self ) - local r = math.random(255) - local g = math.random(255) - local min = 0 - local max = 255 - - if ( r + g ) < 255 then - min = 255 - r - g - else - max = 511 - r - g - end - - local b = min + math.floor( math.random() * ( max - min ) ) - - return { r, g, b } -end - -function Instance.faded( self, fg, opts ) - opts = opts or {} - opts.background = opts.background or { 255, 255, 255 } - opts.alpha = opts.alpha or 0.25 - - if type(opts.background) == "string" then - opts.background = _string_to_color(opts.background) - end - - local bg = opts.background - - return { - ( opts.alpha * fg[1] ) + ( ( 1.0 - opts.alpha ) * bg[1] ), - ( opts.alpha * fg[2] ) + ( ( 1.0 - opts.alpha ) * bg[2] ), - ( opts.alpha * fg[3] ) + ( ( 1.0 - opts.alpha ) * bg[3] ) - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua deleted file mode 100644 index 2a8aceec08..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua +++ /dev/null @@ -1,117 +0,0 @@ --- Copyright 2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.apcups",package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - local voltagesdc = { - title = "%H: Voltages on APC UPS - Battery", - vlabel = "Volts DC", - alt_autoscale = true, - number_format = "%5.1lfV", - data = { - instances = { - voltage = { "battery" } - }, - - options = { - voltage = { title = "Battery voltage", noarea=true } - } - } - } - - local voltages = { - title = "%H: Voltages on APC UPS - AC", - vlabel = "Volts AC", - alt_autoscale = true, - number_format = "%5.1lfV", - data = { - instances = { - voltage = { "input", "output" } - }, - - options = { - voltage_output = { color = "00e000", title = "Output voltage", noarea=true, overlay=true }, - voltage_input = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true } - } - } - } - - local percentload = { - title = "%H: Load on APC UPS ", - vlabel = "Percent", - y_min = "0", - y_max = "100", - number_format = "%5.1lf%%", - data = { - sources = { - percent_load = { "value" } - }, - instances = { - percent = "load" - }, - options = { - percent_load = { color = "00ff00", title = "Load level" } - } - } - } - - local charge_percent = { - title = "%H: Battery charge on APC UPS ", - vlabel = "Percent", - y_min = "0", - y_max = "100", - number_format = "%5.1lf%%", - data = { - types = { "charge" }, - options = { - charge = { color = "00ff0b", title = "Charge level" } - } - } - } - - local temperature = { - title = "%H: Battery temperature on APC UPS ", - vlabel = "\176C", - number_format = "%5.1lf\176C", - data = { - types = { "temperature" }, - options = { - temperature = { color = "ffb000", title = "Battery temperature" } } - } - } - - local timeleft = { - title = "%H: Time left on APC UPS ", - vlabel = "Minutes", - number_format = "%.1lfm", - data = { - sources = { - timeleft = { "value" } - }, - options = { - timeleft = { color = "0000ff", title = "Time left" } - } - } - } - - local frequency = { - title = "%H: Incoming line frequency on APC UPS ", - vlabel = "Hz", - number_format = "%5.0lfhz", - data = { - sources = { - frequency_input = { "value" } - }, - instances = { - frequency = "frequency" - }, - options = { - frequency_frequency = { color = "000fff", title = "Line frequency" } - } - } - } - - return { voltages, voltagesdc, percentload, charge_percent, temperature, timeleft, frequency } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/conntrack.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/conntrack.lua deleted file mode 100644 index fbc47731ef..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/conntrack.lua +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.conntrack",package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - return { - title = "%H: Conntrack entries", - vlabel = "Count", - number_format = "%5.0lf", - data = { - -- collectd 5.5+: specify "" to exclude "max" instance - instances = { - conntrack = { "" } - }, - sources = { - conntrack = { "value" } - }, - options = { - conntrack = { - color = "0000ff", - title = "Tracked connections" - } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua deleted file mode 100644 index 6826e12adb..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua +++ /dev/null @@ -1,23 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.contextswitch",package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Context switches", - alt_autoscale = true, - vlabel = "Switches/s", - number_format = "%5.0lf", - data = { - types = { "contextswitch" }, - sources = { - contextswitch = { "value" } - }, - options = { - contextswitch = { color = "0000ff", title = "Context switches", noarea=true, overlay=true } - } - } - } -end - diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua deleted file mode 100644 index ae0c0ce778..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua +++ /dev/null @@ -1,31 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.cpu",package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Processor usage on core #%pi", - y_min = "0", - alt_autoscale_max = true, - vlabel = "Percent", - number_format = "%5.1lf%%", - data = { - instances = { - cpu = { "user", "nice", "system", "softirq", "interrupt" } - }, - - options = { - cpu_idle = { color = "ffffff", title = "Idle" }, - cpu_nice = { color = "00e000", title = "Nice" }, - cpu_user = { color = "0000ff", title = "User" }, - cpu_wait = { color = "ffb000", title = "Wait" }, - cpu_system = { color = "ff0000", title = "System" }, - cpu_softirq = { color = "ff00ff", title = "Softirq" }, - cpu_interrupt = { color = "a000a0", title = "Interrupt" }, - cpu_steal = { color = "000000", title = "Steal" } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua deleted file mode 100644 index 25a72d2285..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua +++ /dev/null @@ -1,25 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.cpufreq",package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Processor frequency", - alt_autoscale = true, - vlabel = "Frequency (Hz)", - number_format = "%3.2lf%s", - data = { - sources = { - cpufreq = { "" } - }, - options = { - cpufreq_0 = { color = "ff0000", title = "Core 0", noarea=true, overlay=true }, - cpufreq_1 = { color = "0000ff", title = "Core 1", noarea=true, overlay=true }, - cpufreq_2 = { color = "00ff00", title = "Core 2", noarea=true, overlay=true }, - cpufreq_3 = { color = "00ffff", title = "Core 3", noarea=true, overlay=true } - } - } - } -end - diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/df.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/df.lua deleted file mode 100644 index b5633c15ff..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/df.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.df", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Disk space usage on %pi", - vlabel = "Bytes", - number_format = "%5.1lf%sB", - - data = { - instances = { - df_complex = { "free", "used", "reserved" } - }, - - options = { - df_complex_free = { - color = "00ff00", - overlay = false, - title = "free" - }, - - df_complex_used = { - color = "ff0000", - overlay = false, - title = "used" - }, - - df_complex_reserved = { - color = "0000ff", - overlay = false, - title = "reserved" - } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/disk.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/disk.lua deleted file mode 100644 index 8aabb7f64e..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/disk.lua +++ /dev/null @@ -1,62 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.disk", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - return { - { - title = "%H: Disk I/O operations on %pi", - vlabel = "Operations/s", - number_format = "%5.1lf%sOp/s", - - data = { - types = { "disk_ops" }, - sources = { - disk_ops = { "read", "write" }, - }, - - options = { - disk_ops__read = { - title = "Reads", - color = "00ff00", - flip = false - }, - - disk_ops__write = { - title = "Writes", - color = "ff0000", - flip = true - } - } - } - }, - - { - title = "%H: Disk I/O bandwidth on %pi", - vlabel = "Bytes/s", - number_format = "%5.1lf%sB/s", - - detail = true, - - data = { - types = { "disk_octets" }, - sources = { - disk_octets = { "read", "write" } - }, - options = { - disk_octets__read = { - title = "Read", - color = "00ff00", - flip = false - }, - disk_octets__write = { - title = "Write", - color = "ff0000", - flip = true - } - } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/dns.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/dns.lua deleted file mode 100644 index cf96d8fbe1..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/dns.lua +++ /dev/null @@ -1,71 +0,0 @@ --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.dns", package.seeall) - -function rrdargs( graph, plugin, plugin_instance ) - - local traffic = { - title = "%H: DNS traffic", vlabel = "Bit/s", - - data = { - sources = { - dns_octets = { "queries", "responses" } - }, - - options = { - dns_octets__responses = { - total = true, - color = "00ff00", - title = "Responses" - }, - - dns_octets__queries = { - total = true, - color = "0000ff", - title = "Queries" - } - } - } - } - - local opcode_query = { - title = "%H: DNS Opcode Query", vlabel = "Queries/s", - data = { - instances = { dns_opcode = { "Query" } }, - options = { - dns_opcode_Query_value = { - total = true, - color = "0000ff", - title = "Queries/s" - }, - } - } - } - - local qtype = { - title = "%H: DNS QType", vlabel = "Queries/s", - data = { - sources = { dns_qtype = { "" } }, - options = { - dns_qtype_AAAA_ = { title = "AAAA", noarea = true, total = true }, - dns_qtype_A_ = { title = "A", noarea = true, total = true }, - dns_qtype_A6_ = { title = "A6", noarea = true, total = true }, - dns_qtype_TXT_ = { title = "TXT", noarea = true, total = true }, - dns_qtype_MX_ = { title = "MX", noarea = true, total = true }, - dns_qtype_NS_ = { title = "NS", noarea = true, total = true }, - dns_qtype_ANY_ = { title = "ANY", noarea = true, total = true }, - dns_qtype_CNAME_= { title = "CNAME", noarea = true, total = true }, - dns_qtype_SOA_ = { title = "SOA", noarea = true, total = true }, - dns_qtype_SRV_ = { title = "SRV", noarea = true, total = true }, - dns_qtype_PTR_ = { title = "PTR", noarea = true, total = true }, - dns_qtype_RP_ = { title = "RP", noarea = true, total = true }, - dns_qtype_MAILB_= { title = "MAILB", noarea = true, total = true }, - dns_qtype_IXFR_ = { title = "IXFR", noarea = true, total = true }, - dns_qtype_HINFO_= { title = "HINFO", noarea = true, total = true }, - }, - } - } - - return { traffic, opcode_query, qtype } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/entropy.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/entropy.lua deleted file mode 100644 index 3d30a70afb..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/entropy.lua +++ /dev/null @@ -1,19 +0,0 @@ --- Copyright 2015 Hannu Nyman --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.entropy", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Available entropy", - vlabel = "bits", - number_format = "%4.0lf", - data = { - types = { "entropy" }, - options = { entropy = { title = "Entropy %di" } } - } - } - -end - diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua deleted file mode 100644 index 6f687d218d..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/interface.lua +++ /dev/null @@ -1,109 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.interface", package.seeall) - -function rrdargs( graph, plugin, plugin_instance ) - - -- - -- traffic diagram - -- - local traffic = { - - -- draw this diagram for each plugin instance - per_instance = true, - title = "%H: Transfer on %pi", - vlabel = "Bytes/s", - - -- diagram data description - data = { - -- defined sources for data types, if ommitted assume a single DS named "value" (optional) - sources = { - if_octets = { "tx", "rx" } - }, - - -- special options for single data lines - options = { - if_octets__tx = { - total = true, -- report total amount of bytes - color = "00ff00", -- tx is green - title = "Bytes (TX)" - }, - - if_octets__rx = { - flip = true, -- flip rx line - total = true, -- report total amount of bytes - color = "0000ff", -- rx is blue - title = "Bytes (RX)" - } - } - } - } - - - -- - -- packet diagram - -- - local packets = { - - -- draw this diagram for each plugin instance - per_instance = true, - title = "%H: Packets on %pi", - vlabel = "Packets/s", - - -- diagram data description - data = { - -- data type order - types = { "if_packets", "if_errors" }, - - -- defined sources for data types - sources = { - if_packets = { "tx", "rx" }, - if_errors = { "tx", "rx" } - }, - - -- special options for single data lines - options = { - -- processed packets (tx DS) - if_packets__tx = { - weight = 1, - overlay = true, -- don't summarize - total = true, -- report total amount of bytes - color = "00ff00", -- processed tx is green - title = "Processed (TX)" - }, - - -- processed packets (rx DS) - if_packets__rx = { - weight = 2, - overlay = true, -- don't summarize - flip = true, -- flip rx line - total = true, -- report total amount of bytes - color = "0000ff", -- processed rx is blue - title = "Processed (RX)" - }, - - -- packet errors (tx DS) - if_errors__tx = { - weight = 0, - overlay = true, -- don't summarize - total = true, -- report total amount of packets - color = "ff5500", -- tx errors are orange - title = "Errors (TX)" - }, - - -- packet errors (rx DS) - if_errors__rx = { - weight = 3, - overlay = true, -- don't summarize - flip = true, -- flip rx line - total = true, -- report total amount of packets - color = "ff0000", -- rx errors are red - title = "Errors (RX)" - } - } - } - } - - return { traffic, packets } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/iptables.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/iptables.lua deleted file mode 100644 index 9790e0e3d2..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/iptables.lua +++ /dev/null @@ -1,41 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.iptables", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - { - title = "%H: Firewall: Processed bytes in %pi", - vlabel = "Bytes/s", - number_format = "%5.0lf%sB/s", - totals_format = "%5.0lf%sB", - data = { - types = { "ipt_bytes" }, - options = { - ipt_bytes = { - total = true, - title = "%di" - } - } - } - }, - - { - title = "%H: Firewall: Processed packets in %pi", - vlabel = "Packets/s", - number_format = "%5.1lf P/s", - totals_format = "%5.0lf%s", - data = { - types = { "ipt_packets" }, - options = { - ipt_packets = { - total = true, - title = "%di" - } - } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/irq.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/irq.lua deleted file mode 100644 index f61d0da646..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/irq.lua +++ /dev/null @@ -1,18 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.irq", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Interrupts", vlabel = "Issues/s", - number_format = "%5.0lf", data = { - types = { "irq" }, - options = { - irq = { title = "IRQ %di", noarea = true } - } - } - } - -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/iwinfo.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/iwinfo.lua deleted file mode 100644 index 194afd6fc0..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/iwinfo.lua +++ /dev/null @@ -1,92 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.iwinfo", package.seeall) - -function rrdargs( graph, plugin, plugin_instance ) - - -- - -- signal/noise diagram - -- - local snr = { - title = "%H: Signal and noise on %pi", - vlabel = "dBm", - number_format = "%5.1lf dBm", - data = { - types = { "signal_noise", "signal_power" }, - options = { - signal_power = { - title = "Signal", - overlay = true, - color = "0000ff" - }, - signal_noise = { - title = "Noise", - overlay = true, - color = "ff0000" - } - } - } - } - - - -- - -- signal quality diagram - -- - local quality = { - title = "%H: Signal quality on %pi", - vlabel = "Quality", - number_format = "%3.0lf", - data = { - types = { "signal_quality" }, - options = { - signal_quality = { - title = "Quality", - noarea = true, - color = "0000ff" - } - } - } - } - - - -- - -- phy rate diagram - -- - local bitrate = { - title = "%H: Average phy rate on %pi", - vlabel = "MBit/s", - number_format = "%5.1lf%sBit/s", - data = { - types = { "bitrate" }, - options = { - bitrate = { - title = "Rate", - color = "00ff00" - } - } - } - } - - -- - -- associated stations - -- - local stations = { - title = "%H: Associated stations on %pi", - vlabel = "Stations", - y_min = "0", - alt_autoscale_max = true, - number_format = "%3.0lf", - data = { - types = { "stations" }, - options = { - stations = { - title = "Stations", - color = "0000ff" - } - } - } - } - - return { snr, quality, bitrate, stations } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/load.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/load.lua deleted file mode 100644 index ce762dab46..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/load.lua +++ /dev/null @@ -1,24 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.load", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Load", vlabel = "Load", - y_min = "0", - units_exponent = "0", - number_format = "%5.2lf", data = { - sources = { - load = { "shortterm", "midterm", "longterm" } - }, - - options = { - load__shortterm = { color = "ff0000", title = "1 minute", noarea = true }, - load__midterm = { color = "ff6600", title = "5 minutes", noarea = true }, - load__longterm = { color = "ffaa00", title = "15 minutes", noarea = true } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/memory.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/memory.lua deleted file mode 100644 index 53d559c599..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/memory.lua +++ /dev/null @@ -1,35 +0,0 @@ ---[[ - -(c) 2011 Manuel Munz - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -]]-- - -module("luci.statistics.rrdtool.definitions.memory",package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Memory usage", - vlabel = "MB", - number_format = "%5.1lf%s", - y_min = "0", - alt_autoscale_max = true, - data = { - instances = { - memory = { "free", "buffered", "cached", "used" } - }, - - options = { - memory_buffered = { color = "0000ff", title = "Buffered" }, - memory_cached = { color = "ff00ff", title = "Cached" }, - memory_used = { color = "ff0000", title = "Used" }, - memory_free = { color = "00ff00", title = "Free" } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua deleted file mode 100644 index 7b6acf3663..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua +++ /dev/null @@ -1,211 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.netlink", package.seeall) - -function rrdargs( graph, plugin, plugin_instance ) - - -- - -- traffic diagram - -- - local traffic = { - title = "%H: Netlink - Transfer on %pi", - vlabel = "Bytes/s", - - -- diagram data description - data = { - -- defined sources for data types, if ommitted assume a single DS named "value" (optional) - sources = { - if_octets = { "tx", "rx" } - }, - - -- special options for single data lines - options = { - if_octets__tx = { - title = "Bytes (TX)", - total = true, -- report total amount of bytes - color = "00ff00" -- tx is green - }, - - if_octets__rx = { - title = "Bytes (RX)", - flip = true, -- flip rx line - total = true, -- report total amount of bytes - color = "0000ff" -- rx is blue - } - } - } - } - - - -- - -- packet diagram - -- - local packets = { - title = "%H: Netlink - Packets on %pi", - vlabel = "Packets/s", detail = true, - - -- diagram data description - data = { - -- data type order - types = { "if_packets", "if_dropped", "if_errors" }, - - -- defined sources for data types - sources = { - if_packets = { "tx", "rx" }, - if_dropped = { "tx", "rx" }, - if_errors = { "tx", "rx" } - }, - - -- special options for single data lines - options = { - -- processed packets (tx DS) - if_packets__tx = { - weight = 2, - title = "Total (TX)", - overlay = true, -- don't summarize - total = true, -- report total amount of bytes - color = "00ff00" -- processed tx is green - }, - - -- processed packets (rx DS) - if_packets__rx = { - weight = 3, - title = "Total (RX)", - overlay = true, -- don't summarize - flip = true, -- flip rx line - total = true, -- report total amount of bytes - color = "0000ff" -- processed rx is blue - }, - - -- dropped packets (tx DS) - if_dropped__tx = { - weight = 1, - title = "Dropped (TX)", - overlay = true, -- don't summarize - total = true, -- report total amount of bytes - color = "660055" -- dropped tx is ... dunno ;) - }, - - -- dropped packets (rx DS) - if_dropped__rx = { - weight = 4, - title = "Dropped (RX)", - overlay = true, -- don't summarize - flip = true, -- flip rx line - total = true, -- report total amount of bytes - color = "ff00ff" -- dropped rx is violett - }, - - -- packet errors (tx DS) - if_errors__tx = { - weight = 0, - title = "Errors (TX)", - overlay = true, -- don't summarize - total = true, -- report total amount of packets - color = "ff5500" -- tx errors are orange - }, - - -- packet errors (rx DS) - if_errors__rx = { - weight = 5, - title = "Errors (RX)", - overlay = true, -- don't summarize - flip = true, -- flip rx line - total = true, -- report total amount of packets - color = "ff0000" -- rx errors are red - } - } - } - } - - - -- - -- multicast diagram - -- - local multicast = { - title = "%H: Netlink - Multicast on %pi", - vlabel = "Packets/s", detail = true, - - -- diagram data description - data = { - -- data type order - types = { "if_multicast" }, - - -- special options for single data lines - options = { - -- multicast packets - if_multicast = { - title = "Packets", - total = true, -- report total amount of packets - color = "0000ff" -- multicast is blue - } - } - } - } - - - -- - -- collision diagram - -- - local collisions = { - title = "%H: Netlink - Collisions on %pi", - vlabel = "Collisions/s", detail = true, - - -- diagram data description - data = { - -- data type order - types = { "if_collisions" }, - - -- special options for single data lines - options = { - -- collision rate - if_collisions = { - title = "Collisions", - total = true, -- report total amount of packets - color = "ff0000" -- collsions are red - } - } - } - } - - - -- - -- error diagram - -- - local errors = { - title = "%H: Netlink - Errors on %pi", - vlabel = "Errors/s", detail = true, - - -- diagram data description - data = { - -- data type order - types = { "if_tx_errors", "if_rx_errors" }, - - -- data type instances - instances = { - if_tx_errors = { "aborted", "carrier", "fifo", "heartbeat", "window" }, - if_rx_errors = { "length", "missed", "over", "crc", "fifo", "frame" } - }, - - -- special options for single data lines - options = { - if_tx_errors_aborted_value = { total = true, color = "ffff00", title = "Aborted (TX)" }, - if_tx_errors_carrier_value = { total = true, color = "ffcc00", title = "Carrier (TX)" }, - if_tx_errors_fifo_value = { total = true, color = "ff9900", title = "Fifo (TX)" }, - if_tx_errors_heartbeat_value = { total = true, color = "ff6600", title = "Heartbeat (TX)" }, - if_tx_errors_window_value = { total = true, color = "ff3300", title = "Window (TX)" }, - - if_rx_errors_length_value = { flip = true, total = true, color = "ff0000", title = "Length (RX)" }, - if_rx_errors_missed_value = { flip = true, total = true, color = "ff0033", title = "Missed (RX)" }, - if_rx_errors_over_value = { flip = true, total = true, color = "ff0066", title = "Over (RX)" }, - if_rx_errors_crc_value = { flip = true, total = true, color = "ff0099", title = "CRC (RX)" }, - if_rx_errors_fifo_value = { flip = true, total = true, color = "ff00cc", title = "Fifo (RX)" }, - if_rx_errors_frame_value = { flip = true, total = true, color = "ff00ff", title = "Frame (RX)" } - } - } - } - - - return { traffic, packets, multicast, collisions, errors } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua deleted file mode 100644 index dd93196902..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua +++ /dev/null @@ -1,117 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.nut",package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - local voltages = { - title = "%H: Voltages on UPS \"%pi\"", - vlabel = "V", - number_format = "%5.1lfV", - data = { - instances = { - voltage = { "battery", "input", "output" } - }, - - options = { - voltage_output = { color = "00e000", title = "Output voltage", noarea=true, overlay=true }, - voltage_battery = { color = "0000ff", title = "Battery voltage", noarea=true, overlay=true }, - voltage_input = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true } - } - } - } - - local currents = { - title = "%H: Current on UPS \"%pi\"", - vlabel = "A", - number_format = "%5.3lfA", - data = { - instances = { - current = { "battery", "output" } - }, - - options = { - current_output = { color = "00e000", title = "Output current", noarea=true, overlay=true }, - current_battery = { color = "0000ff", title = "Battery current", noarea=true, overlay=true } - } - } - } - - local percentage = { - title = "%H: Battery charge/load on UPS \"%pi\"", - vlabel = "Percent", - y_min = "0", - y_max = "100", - number_format = "%5.1lf%%", - data = { - instances = { - percent = { "charge", "load" } - }, - options = { - percent_charge = { color = "00ff00", title = "Charge level" }, - percent_load = { color = "ff0000", title = "Load" } - } - } - } - - -- Note: This is in ISO8859-1 for rrdtool. Welcome to the 20th century. - local temperature = { - title = "%H: Battery temperature on UPS \"%pi\"", - vlabel = "\176C", - number_format = "%5.1lf\176C", - data = { - instances = { - temperature = "battery" - }, - - options = { - temperature_battery = { color = "ffb000", title = "Battery temperature" } - } - } - } - - local timeleft = { - title = "%H: Time left on UPS \"%pi\"", - vlabel = "Minutes", - number_format = "%.1lfm", - data = { - instances = { - timeleft = { "battery" } - }, - options = { - timeleft_battery = { color = "0000ff", title = "Time left", transform_rpn = "60,/", noarea=true } - } - } - } - - local power = { - title = "%H: Power on UPS \"%pi\"", - vlabel = "Power", - number_format = "%5.1lf%%", - data = { - instances = { - power = { "ups" } - }, - options = { - power_ups = { color = "00ff00", title = "Power level" } - } - } - } - - local frequencies = { - title = "%H: Frequencies on UPS \"%pi\"", - vlabel = "Hz", - number_format = "%5.1lfHz", - data = { - instances = { - frequency = { "input", "output" } - }, - - options = { - frequency_output = { color = "00e000", title = "Output frequency", noarea=true, overlay=true }, - frequency_input = { color = "ffb000", title = "Input frequency", noarea=true, overlay=true } - } - } - } - return { voltages, currents, percentage, temperature, timeleft, power, frequencies } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/olsrd.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/olsrd.lua deleted file mode 100644 index a69469568e..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/olsrd.lua +++ /dev/null @@ -1,136 +0,0 @@ --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.olsrd", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - local g = { } - - if plugin_instance == "routes" then - - g[#g+1] = { - -- diagram data description - title = "%H: Total amount of OLSR routes", vlabel = "n", - number_format = "%5.0lf", data = { - types = { "routes" }, - options = { - routes = { - color = "ff0000", - title = "Total number of routes" - } - } - } - } - - g[#g+1] = { - title = "%H: Average route ETX", vlabel = "ETX", detail = true, - number_format = "%5.1lf",data = { - instances = { "average" }, -- falls es irgendwann mal welche pro ip gibt, wie bei links, dann werden die hier excludiert - types = { "route_etx" }, - options = { - route_etx = { - title = "Average route ETX" - } - } - } - } - - g[#g+1] = { - title = "%H: Average route metric", vlabel = "metric", detail = true, - number_format = "%5.1lf", data = { - instances = { "average" }, -- falls es irgendwann mal welche pro ip gibt, wie bei links, dann werden die hier excludiert - types = { "route_metric" }, - options = { - route_metric = { - title = "Average route metric" - } - } - } - } - - elseif plugin_instance == "links" then - - g[#g+1] = { - -- diagram data description - title = "%H: Total amount of OLSR neighbours", vlabel = "n", - number_format = "%5.0lf", data = { - instances = { "" }, - types = { "links" }, - options = { - links = { - color = "00ff00", - title = "Number of neighbours" - } - } - } - } - - local instances = graph.tree:data_instances(plugin, plugin_instance, "signal_quality") - table.sort(instances) - - -- define one diagram per host, containing the rx and lq values - local i - for i = 1, #instances, 2 do - local dsn1 = "signal_quality_%s_value" % instances[i]:gsub("[^%w]+", "_") - local dsn2 = "signal_quality_%s_value" % instances[i+1]:gsub("[^%w]+", "_") - local host = instances[i]:match("^[^%-]+%-([^%-]+)%-.+") - - g[#g+1] = { - title = "%H: Signal Quality" .. " (" .. (host or "avg") ..")", vlabel = "ETX", - number_format = "%5.2lf", detail = true, - data = { - types = { "signal_quality" }, - - instances = { - signal_quality = { instances[i], instances[i+1] }, - }, - - options = { - [dsn1] = { - color = "00ff00", - title = "LQ (%s)" % (host or "avg"), - }, - [dsn2] = { - color = "0000ff", - title = "NLQ (%s)" % (host or "avg"), - flip = true - } - } - } - } - end - - elseif plugin_instance == "topology" then - - g[#g+1] = { - title= "%H: Total amount of OLSR links", vlabel = "n", - number_format = "%5.0lf", data = { - instances = { "" }, - types = { "links" }, - options = { - links = { - color = "0000ff", - title = "Total number of links" - } - } - } - } - - g[#g+1] = { - title= "%H: Average signal quality", vlabel = "n", - number_format = "%5.2lf", detail = true, - data = { - instances = { "average" }, -- exclude possible per-ip stuff - types = { "signal_quality" }, - options = { - signal_quality = { - color = "0000ff", - title = "Average signal quality" - } - } - } - } - end - - return g -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/openvpn.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/openvpn.lua deleted file mode 100644 index 876e871d1d..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/openvpn.lua +++ /dev/null @@ -1,48 +0,0 @@ --- Copyright 2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.openvpn", package.seeall) - -function rrdargs( graph, plugin, plugin_instance ) - local inst = plugin_instance:gsub("^openvpn%.(.+)%.status$", "%1") - - return { - { - title = "%%H: OpenVPN \"%s\" - Traffic" % inst, - vlabel = "Bytes/s", - data = { - instances = { - if_octets = { "traffic", "overhead" } - }, - sources = { - if_octets = { "tx", "rx" } - }, - options = { - if_octets_traffic_tx = { weight = 0, title = "Bytes (TX)", total = true, color = "00ff00" }, - if_octets_overhead_tx = { weight = 1, title = "Overhead (TX)", total = true, color = "ff9900" }, - if_octets_overhead_rx = { weight = 2, title = "Overhead (RX)", total = true, flip = true, color = "ff00ff" }, - if_octets_traffic_rx = { weight = 3, title = "Bytes (RX)", total = true, flip = true, color = "0000ff" } - } - } - }, - - { - title = "%%H: OpenVPN \"%s\" - Compression" % inst, - vlabel = "Bytes/s", - data = { - instances = { - compression = { "data_out", "data_in" } - }, - sources = { - compression = { "uncompressed", "compressed" } - }, - options = { - compression_data_out_uncompressed = { weight = 0, title = "Uncompressed (TX)", total = true, color = "00ff00" }, - compression_data_out_compressed = { weight = 1, title = "Compressed (TX)", total = true, color = "008800" }, - compression_data_in_compressed = { weight = 2, title = "Compressed (RX)", total = true, flip = true, color = "000088" }, - compression_data_in_uncompressed = { weight = 3, title = "Uncompressed (RX)", total = true, flip = true, color = "0000ff" } - } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/ping.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/ping.lua deleted file mode 100644 index 6ecdb5c8ad..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/ping.lua +++ /dev/null @@ -1,28 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.ping", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - return { - -- Ping roundtrip time - { title = "%H: ICMP Round Trip Time", - vlabel = "ms", - number_format = "%5.1lf ms", - data = { - sources = { ping = { "value" } }, - options = { ping__value = { - noarea = true, overlay = true, title = "%di" } } - } }, - - -- Ping droprate - { title = "%H: ICMP Drop Rate", - vlabel = "%", - number_format = "%5.2lf %%", - data = { - types = { "ping_droprate" }, - options = { ping_droprate = { - noarea = true, overlay = true, title = "%di" } } - } } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua deleted file mode 100644 index 62d0545973..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua +++ /dev/null @@ -1,117 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.processes", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - if plugin_instance == "" then - return { - title = "%H: Processes", - vlabel = "Processes/s", - data = { - instances = { - ps_state = { - "sleeping", "running", "paging", - "blocked", "stopped", "zombies" - } - }, - - options = { - ps_state_sleeping = { color = "0000ff", title = "Sleeping" }, - ps_state_running = { color = "008000", title = "Running" }, - ps_state_paging = { color = "ffff00", title = "Paging" }, - ps_state_blocked = { color = "ff5000", title = "Blocked" }, - ps_state_stopped = { color = "555555", title = "Stopped" }, - ps_state_zombies = { color = "ff0000", title = "Zombies" } - } - } - } - else - return { - { - title = "%H: CPU time used by %pi", - vlabel = "Jiffies", - data = { - sources = { - ps_cputime = { "syst", "user" } - }, - - options = { - ps_cputime__user = { - color = "0000ff", - title = "User", - overlay = true - }, - - ps_cputime__syst = { - color = "ff0000", - title = "System", - overlay = true - } - } - } - }, - - { - title = "%H: Threads and processes belonging to %pi", - vlabel = "Count", - detail = true, - data = { - sources = { - ps_count = { "threads", "processes" } - }, - - options = { - ps_count__threads = { color = "00ff00", title = "Threads" }, - ps_count__processes = { color = "0000bb", title = "Processes" } - } - } - }, - - { - title = "%H: Page faults in %pi", - vlabel = "Page faults", - detail = true, - data = { - sources = { - ps_pagefaults = { "minflt", "majflt" } - }, - - options = { - ps_pagefaults__minflt = { color = "0000ff", title = "Minor" }, - ps_pagefaults__majflt = { color = "ff0000", title = "Major" } - } - } - }, - - { - title = "%H: Resident segment size (RSS) of %pi", - vlabel = "Bytes", - detail = true, - number_format = "%5.1lf%sB", - data = { - types = { "ps_rss" }, - - options = { - ps_rss = { color = "0000ff", title = "Resident segment" } - } - } - }, - - { - title = "%H: Virtual memory size (VSZ) of %pi", - vlabel = "Bytes", - detail = true, - number_format = "%5.1lf%sB", - data = { - types = { "ps_vm" }, - - options = { - ps_vm = { color = "0000ff", title = "Virtual memory" } - } - } - } - } - end -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua deleted file mode 100644 index f8bddb96e3..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/sensors.lua +++ /dev/null @@ -1,24 +0,0 @@ --- Copyright 2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.sensors", package.seeall) - -function rrdargs( graph, plugin, plugin_instance ) - return { - { - per_instance = true, - title = "%H: %pi - %di", - vlabel = "\176C", - number_format = "%4.1lf\176C", - data = { - types = { "temperature" }, - options = { - temperature__value = { - color = "ff0000", - title = "Temperature" - } - } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/splash_leases.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/splash_leases.lua deleted file mode 100644 index 65fba5299d..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/splash_leases.lua +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright 2013 Freifunk Augsburg / Michael Wendland --- Licensed to the public under the Apache License 2.0. - - -module("luci.statistics.rrdtool.definitions.splash_leases", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Splash Leases", - vlabel = "Active Clients", - y_min = "0", - number_format = "%5.1lf", - data = { - sources = { - splash_leases = { "leased", "whitelisted", "blacklisted" } - }, - - options = { - splash_leases__leased = { color = "00CC00", title = "Leased", overlay = false }, - splash_leases__whitelisted = { color = "0000FF", title = "Whitelisted", overlay = false }, - splash_leases__blacklisted = { color = "FF0000", title = "Blacklisted", overlay = false } - } - } - } - -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/tcpconns.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/tcpconns.lua deleted file mode 100644 index 50a9470de5..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/tcpconns.lua +++ /dev/null @@ -1,25 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.tcpconns", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - return { - title = "%H: TCP connections to port %pi", - vlabel = "Connections/s", - number_format = "%5.0lf", - data = { - types = { "tcp_connections" }, - instances = { - tcp_connections = { - "SYN_SENT", "SYN_RECV", "LISTEN", "ESTABLISHED", - "LAST_ACK", "TIME_WAIT", "CLOSING", "CLOSE_WAIT", - "CLOSED", "FIN_WAIT1", "FIN_WAIT2" - }, - options = { - load__ESTABLISHED = { title = "%di", noarea = true } - } - } - } - } -end diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua deleted file mode 100644 index 532246465e..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua +++ /dev/null @@ -1,20 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module("luci.statistics.rrdtool.definitions.thermal",package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Temperature of %pi", - alt_autoscale = true, - vlabel = "Celsius", - number_format = "%3.1lf%s", - data = { - types = { "temperature" }, - options = { - temperature = { color = "ff0000", title = "Temperature", noarea=true }, - } - } - } -end - diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/uptime.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/uptime.lua deleted file mode 100644 index 077ec57e83..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/uptime.lua +++ /dev/null @@ -1,27 +0,0 @@ ---[[ - -Copyright 2013 Thomas Endt - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -]]-- - -module("luci.statistics.rrdtool.definitions.uptime", package.seeall) - -function rrdargs( graph, plugin, plugin_instance, dtype ) - - return { - title = "%H: Uptime", vlabel = "seconds", - number_format = "%5.0lf%s", data = { - types = { "uptime" }, - options = { - uptime = { title = "Uptime %di", noarea = true } - } - } - } - -end - diff --git a/package/luci/applications/luci-app-statistics/luasrc/view/admin_statistics/index.htm b/package/luci/applications/luci-app-statistics/luasrc/view/admin_statistics/index.htm deleted file mode 100644 index 38271995ed..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/view/admin_statistics/index.htm +++ /dev/null @@ -1,17 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Statistics%>

    - -

    <%_The statistics package uses Collectd -to gather data and RRDtool to -render diagram images.%>

    - -

    <%_You can install additional collectd-mod-* plugins to enable more statistics.%>

    - -<%+footer%> diff --git a/package/luci/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm b/package/luci/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm deleted file mode 100644 index 85a20d993a..0000000000 --- a/package/luci/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm +++ /dev/null @@ -1,38 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Statistics%>

    - -
    - - - - -
    - -
    -
    -
    - -
    - <% for i, img in ipairs(images) do %> - -
    - <% end %> -
    - -<%+footer%> - diff --git a/package/luci/applications/luci-app-statistics/po/ca/rrdtool.po b/package/luci/applications/luci-app-statistics/po/ca/rrdtool.po deleted file mode 100644 index 7c03aad9a3..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ca/rrdtool.po +++ /dev/null @@ -1,359 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 16:39+0200\n" -"PO-Revision-Date: 2009-05-27 01:49+0200\n" -"Last-Translator: Eduard Duran \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Wireless - Relació Senyal Soroll" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Nivell de soroll" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Potència de senyal" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Wireless - Qualitat de senyal" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Qualitat de senyal" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: Temps ICMP d'anada i tornada" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Tallafocs - Paquets processats" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "Paquets/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Cadena \"%di\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Enllaç de xarxa - Transferència en %pi" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "Bytes/s" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Bytes (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Enllaç de xarxa - Paquets en %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "Paquets/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Processats (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Descartats (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Errors (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Enllaç de xarxa - Multicast en %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "Paquets/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Paquets" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Enllaç de xarxa - Col·lisions en %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "Col·lisions/s" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Col·lisions" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Enllaç de xarxa - Errors on %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "Errors/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Processos" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Processos/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Procés %pi - temps de cpu usat" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "sistema" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "usuari" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Procés %pi - threads i processos" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "Compte" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Procés %pi - errors de pàgina" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Errors de pàgina" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "errors de pàgina" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Procés %pi - mida de memòria virtual" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bytes" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "memòria virtual" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Ús al Processador #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Transferència a %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "Bytes/s" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Paquets a %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "Paquets/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: Connexions TCP a Port %pi" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "Connexions/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Ús de l'espai de disc a %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Bytes" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: Interrupcions" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "Temes/s" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: Càrrega de Sistema" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Càrrega" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 min" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 min" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 min" diff --git a/package/luci/applications/luci-app-statistics/po/ca/statistics.po b/package/luci/applications/luci-app-statistics/po/ca/statistics.po deleted file mode 100644 index 738af5510f..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ca/statistics.po +++ /dev/null @@ -1,830 +0,0 @@ -# statistics.pot -# generated from ./applications/luci-statistics/luasrc/i18n/statistics.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-08-07 20:11+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Acció (objectiu)" - -msgid "Add command for reading values" -msgstr "Afegeix ordre per llegir valors" - -msgid "Add matching rule" -msgstr "Afegeix regla coincident" - -msgid "Add multiple hosts separated by space." -msgstr "Afegeix múltiples hosts separats per espai." - -msgid "Add notification command" -msgstr "Afegeix ordre de notificació" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Directori base" - -msgid "Basic monitoring" -msgstr "Monitoreig bàsic" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "Configuració del connector de CPU" - -msgid "CSV Output" -msgstr "Sortida CSV" - -msgid "CSV Plugin Configuration" -msgstr "Configuració del connector CSV" - -msgid "Cache collected data for" -msgstr "Emmagatzema en memòria cau les dades recollides de" - -msgid "Cache flush interval" -msgstr "Interval de neteja de memòria cau" - -msgid "Chain" -msgstr "Cadena" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Configuració Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd és un petit dimoni per recollir dades de diverses fonts a través " -"dels connectors. En aquesta pàgina podeu canviar la configuració general del " -"dimoni Collectd." - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "Configuració del connector Conntrack" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Configuració del connector DF" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Configuració del connector DNS" - -msgid "Data collection interval" -msgstr "Interval de recol·lecció de dades" - -msgid "Datasets definition file" -msgstr "Fitxer de definició de dades" - -msgid "Destination ip range" -msgstr "Rang d'IP destí" - -msgid "Directory for collectd plugins" -msgstr "Directori pels connectors connectd" - -msgid "Directory for sub-configurations" -msgstr "Directori per sub-configuracions" - -msgid "Disk Plugin Configuration" -msgstr "Configuració del connector de disc" - -msgid "Disk Space Usage" -msgstr "Ús d'espai en disc" - -msgid "Disk Usage" -msgstr "Ús de disc" - -msgid "Display Host »" -msgstr "Mostra el host »" - -msgid "Display timespan »" -msgstr "Mostra l'hora" - -msgid "E-Mail Plugin Configuration" -msgstr "Configuració del connector d'adreça electrònica" - -msgid "Email" -msgstr "Adreça electrònica" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Activa aquest connector" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Configuració del connector exec" - -msgid "Filter class monitoring" -msgstr "Monitoreig de classe filter" - -msgid "Firewall" -msgstr "Tallafocs" - -msgid "Flush cache after" -msgstr "Neteja la memòria cau després de" - -msgid "Forwarding between listen and server addresses" -msgstr "Readreçant entre adreces que reben connexions i adreces de servidors" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Gràfics" - -msgid "Group" -msgstr "Grup" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Ací pots definir ordres externes que s'iniciaran pel collectd per llegir " -"certs valors. Els valors es llegiran des del stdout" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Ací pots definir ordres externes que s'iniciaran pel collectd quan s'aribi a " -"uns certs valors llindars. Els valors que condueixin a la invocació, " -"alimentaran als programes stdin" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Ací pots definir diversos criteris pels que es seleccionaran les regles " -"iptables monitoritzades ." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "Host" - -msgid "Hostname" -msgstr "Nom de host" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "Configuració de connector IRQ" - -msgid "Ignore source addresses" -msgstr "Ignora adreces origen" - -msgid "Incoming interface" -msgstr "Interfície entrant" - -msgid "Interface Plugin Configuration" -msgstr "Configuració de connector d'interfície" - -msgid "Interfaces" -msgstr "Interfícies" - -msgid "Interrupts" -msgstr "Interrupcions" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "Configuració del connector iptables" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "Màquina que rep connexions" - -msgid "Listen port" -msgstr "Port que rep connexions" - -msgid "Listener interfaces" -msgstr "Interfícies que reben connexions" - -msgid "Load Plugin Configuration" -msgstr "Configuració de connector de càrrega" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Connexions màximes permeses" - -msgid "Memory" -msgstr "Memòria" - -msgid "Memory Plugin Configuration" -msgstr "Configuració del connector de memòria" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "Monitoritza tots els ports locals que reben connexions" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Monitoritza dispositius" - -msgid "Monitor disks and partitions" -msgstr "Monitoritza els discs i les particions" - -msgid "Monitor filesystem types" -msgstr "Monitoritza els tipus de sistema de fitxers" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Monitoritza màquines" - -msgid "Monitor interfaces" -msgstr "Monitoritza hosts" - -msgid "Monitor interrupts" -msgstr "Monitoritza interrupcions" - -msgid "Monitor local ports" -msgstr "Monitoritza els ports locals" - -msgid "Monitor mount points" -msgstr "Monitoritza punts de muntatge" - -msgid "Monitor processes" -msgstr "Monitoritza processos" - -msgid "Monitor remote ports" -msgstr "Monitoritza els ports remots" - -msgid "Name of the rule" -msgstr "Nom de la regla" - -msgid "Netlink" -msgstr "Enllaç de xarxa" - -msgid "Netlink Plugin Configuration" -msgstr "Configuració del connector d'enllaç de xarxa" - -msgid "Network" -msgstr "Xarxa" - -msgid "Network Plugin Configuration" -msgstr "Configuració del connector de xarxa" - -msgid "Network plugins" -msgstr "Connectors de xarxa" - -msgid "Network protocol" -msgstr "Protocol de xarxa" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Número de fils de recol·lecció de dades" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "Configuració del connector OLSRd" - -msgid "Only create average RRAs" -msgstr "Crea només RRAs mitjans" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Opcions" - -msgid "Outgoing interface" -msgstr "Interfície sortint" - -msgid "Output plugins" -msgstr "Connectors de sortida" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Configuració del connector ping" - -msgid "Port" -msgstr "Port" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Processos" - -msgid "Processes Plugin Configuration" -msgstr "Configuració del connector de processos" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "Processador" - -msgid "Qdisc monitoring" -msgstr "Monitoreig Qdisc" - -msgid "RRD XFiles Factor" -msgstr "Factor RRD XFiles" - -msgid "RRD heart beat interval" -msgstr "Interval de batec de cor RRD" - -msgid "RRD step interval" -msgstr "Interval de pas RRD" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "Configuració del connector RRDTool" - -msgid "Rows per RRA" -msgstr "Files per RRA" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "Segons" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Màquina servidor" - -msgid "Server port" -msgstr "Port del servidor" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Monitoreig de classe shaping" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "Fitxer d'endoll" - -msgid "Socket group" -msgstr "Grup d'endoll" - -msgid "Socket permissions" -msgstr "Permisos d'endoll" - -msgid "Source ip range" -msgstr "Rang d'IP origen" - -msgid "Specifies what information to collect about links." -msgstr "Especifica què informació es recull sobre enllaços." - -msgid "Specifies what information to collect about routes." -msgstr "Especifica què informació es recull sobre rutes." - -msgid "Specifies what information to collect about the global topology." -msgstr "Especifica què informació es recull sobre la topologia global." - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Estadístiques" - -msgid "Storage directory" -msgstr "Directori d'emmagatzematge" - -msgid "Storage directory for the csv files" -msgstr "Directori d'emmagatzematge dels fitxers CSV" - -msgid "Store data values as rates instead of absolute values" -msgstr "" -"Emmagatzema els valors de dades com a relacions en comptes de com a valors " -"absoluts" - -msgid "Stored timespans" -msgstr "Marques de temps emmagatzemades" - -msgid "System Load" -msgstr "Càrrega de sistema" - -msgid "TCP Connections" -msgstr "Connexions TCP" - -msgid "TCPConns Plugin Configuration" -msgstr "Configuració de connector TCPConns" - -msgid "TTL for network packets" -msgstr "TTL pels paquets de xarxa" - -msgid "TTL for ping packets" -msgstr "TTL per paquets ping" - -msgid "Table" -msgstr "Taula" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" -"El connector de cpu recull estadístiques bàsiques sobre l'ús del processador." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"El connector CSV desa les dades recollides en format CSV per ser processades " -"posteriorment per programes externs." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"El connector DF recull dades sobre l'ús d'espai en disc de diferents " -"dispositius, punts de muntatge i tipus de sistema de fitxers." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"El connector de disc recull estadístiques d'ús detallades per les particions " -"seleccionades o per tot el disc." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"El connector DNS recull estadístiques detallades sobre el tràfic DNS a les " -"interfícies seleccionades." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"El connector d'adreça electrònica crea un socket unix que es pot utilitzar " -"per transmetre estadístiques d'email a un dimoni collectd. Aquest connector " -"es fa servir en conjunció amb Mail::SpamAssassin::Plugin. Plugin::Collectd " -"també es pot utilitzar d'altres maneres." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"El connector exec inicia ordres externes per llegir valors des de o a " -"processos externs quan s'arriba a certs valors de llindar." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"El connector d'interfície recull estadístiques de tràfic a les interfícies " -"seleccionades." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"El connector iptables monitoritzarà les regles de tallafocs seleccionades i " -"recollirà informacions sobre els bytes i paquests processats per regla." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"El connector IRQ monitoritzarà la taxa de qüestions per segon per cada " -"interrupció seleccionada. Si no se selecciona cap interrupció, es " -"monitoritzen totes les interrupcions." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" -"El connector iwinfo recull estadístiques sobre la força de senyal, soroll i " -"qualitat sense fil." - -msgid "The load plugin collects statistics about the general system load." -msgstr "" -"El connector de càrrega recull estadístiques sobre la càrrega de sistema " -"general." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "El connector de memòria recull estadístiques sobre l'ús de memòria." - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"El connector d'enllaç de xarxa recull informació extensa com estadístiques " -"de qdisc-, class- i filter- per les interfícies seleccionades." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"El connector de xarxa proporciona comunicacions basades en xarxa entre " -"diferents instàncies de collectd. El collectd pot operar tan en mode " -"servidor com client. En el client mode les dades recollides localment es " -"transferiran a la instància del servidor de collectd, en el mode servidor la " -"instància rep dades de les altres màquines." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"El connector de ping enviarà ICMP Echo Replies a les màquines seleccionades " -"i mesurarà el temps d'anada i tornada en cada màquina." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"El connector de processor recollirà informacions com el temps de cpu, errors " -"de pàgina i ús de memòria dels processos seleccionats." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"El connector RRDTool desa les dades recollides als fitxers de base de dades " -"RRD, la base dels diagrames.

    Alerta: Establir els valors " -"incorrectes comportarà un consum molt alt de memòria al directori temporal. " -"Això pot inutilitzar el dispositiu!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"El connector TCPConns recull informació sobre les connexions TCP obertes en " -"els ports seleccionats." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"El connector unixsock crea un socket Unix que es pot fer servir per llegir " -"dades recollides d'una instància collectd." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Aquesta secció defineix en quines interfícies el collectd rebrà connexions " -"entrants." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"Aquesta secció defineix a quins servidors s'enviaran les dades recollides " -"localment." - -msgid "Try to lookup fully qualified hostname" -msgstr "Intenta resoldre el nom de màquina (fqdn)" - -msgid "UPS" -msgstr "UPS" - -msgid "UPS Plugin Configuration" -msgstr "Configuració del connector UPS" - -msgid "UPS name in NUT ups@host format" -msgstr "Nom UPS en format NUT ups@host" - -msgid "UnixSock" -msgstr "Sock Unix" - -msgid "Unixsock Plugin Configuration" -msgstr "Configuració de connector Unixsock" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Fitxer PID usat" - -msgid "User" -msgstr "Usuari" - -msgid "Verbose monitoring" -msgstr "Monitoreig detallat" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "p.e. br-ff" - -msgid "e.g. br-lan" -msgstr "p.e. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "p.e. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "màx. 16 caràcters" - -msgid "reduces rrd size" -msgstr "redueix mida RRD" - -msgid "seconds; multiple separated by space" -msgstr "segons; múltiples separats per espais" - -msgid "server interfaces" -msgstr "interfícies de servidor" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Connectors de sistema" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "El paquet d'estadísitiques està basat en Collectd i utilitza l'eina RRD per renderitzar imatges de diagrama de les dades " -#~ "recoliildes." - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "El connector Wireless recull estadístiques sobre la potència del senyal " -#~ "sense fils, el soroll i la qualitat." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Configuració del connector Wireless" diff --git a/package/luci/applications/luci-app-statistics/po/cs/rrdtool.po b/package/luci/applications/luci-app-statistics/po/cs/rrdtool.po deleted file mode 100644 index e6149ecaa3..0000000000 --- a/package/luci/applications/luci-app-statistics/po/cs/rrdtool.po +++ /dev/null @@ -1,359 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-12 20:35+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "Bezdrátová síť - Úroveň šumu" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Úroveň šumu" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Síla signálu" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Wireless - kvalita signálu" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Kvalita signálu" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: ICMP časy odezvy" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Firewall - zpracované pakety" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "Pakety/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Řetěz \\\"%di\\\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - přenos na %pi" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "Bajty/s" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Bajty (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - pakety na %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "Pakety/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Zpracováno (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Zahozeno (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Chyby (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - multicast na %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "Pakety/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Pakety" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - kolize na %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "Kolize/s" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Kolize" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - chyby na %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "Chyby/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Procesy" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Procesy/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Proces %pi - čas využití CPU" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "systém" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "uživatel" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Proces %pi - vlákna a procesy" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "Počet" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Process %pi - chyby stránkování" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Chyby stránkování" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "chyby stránkování" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Proces %pi - velikost virtuální paměti" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bajty" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "virtuální paměť" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Vytížení procesoru #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Přenos na %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "Bajty/s" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Pakety na %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "Pakety/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: TCP-spojení na portu %pi" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "Spojení/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Využití diskového prostoru na %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Bajty" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: Přerušení" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "Problémy/s" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H Zatížení systému" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Zatížení" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 min" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 min" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 min" diff --git a/package/luci/applications/luci-app-statistics/po/cs/statistics.po b/package/luci/applications/luci-app-statistics/po/cs/statistics.po deleted file mode 100644 index fc3f513c5c..0000000000 --- a/package/luci/applications/luci-app-statistics/po/cs/statistics.po +++ /dev/null @@ -1,844 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-21 17:44+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Akce (cíl)" - -msgid "Add command for reading values" -msgstr "Přidat příkaz pro čtení hodnot" - -msgid "Add matching rule" -msgstr "Přidat pravidlo pro výběr" - -msgid "Add multiple hosts separated by space." -msgstr "Přidat více hostů, oddělených mezerou" - -msgid "Add notification command" -msgstr "Přidat příkaz pro upozornění" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Základní adresář" - -msgid "Basic monitoring" -msgstr "Základní sledování" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "Nastavení CPU pluginu" - -msgid "CSV Output" -msgstr "CSV výstup" - -msgid "CSV Plugin Configuration" -msgstr "Nastavení CSV pluginu" - -msgid "Cache collected data for" -msgstr "Mezipamět pro ukládání dat" - -msgid "Cache flush interval" -msgstr "Interval vyprazdňování mezipaměti" - -msgid "Chain" -msgstr "Řetěz" - -msgid "CollectLinks" -msgstr "CollectLinks" - -msgid "CollectRoutes" -msgstr "CollectRoutes" - -msgid "CollectTopology" -msgstr "CollectTopology" - -msgid "Collectd Settings" -msgstr "Nastavení Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd je malý daemon pro shromažďování dat z nejrůznějších zdrojů zkrz " -"rozdílné pluginy. Na této stránce můžete změnit obecná nastavení daemonu " -"collectd." - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "Nastavení pluginu Conntrack" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Nastavení pluginu DF" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Nastavení DNS pluginu" - -msgid "Data collection interval" -msgstr "Interval sběru dat" - -msgid "Datasets definition file" -msgstr "" - -msgid "Destination ip range" -msgstr "Rozsah cílových IP adres" - -msgid "Directory for collectd plugins" -msgstr "Adresář s pluginy pro collectd" - -msgid "Directory for sub-configurations" -msgstr "Adresář pro pod-nastavení" - -msgid "Disk Plugin Configuration" -msgstr "Nastavení Disk pluginu" - -msgid "Disk Space Usage" -msgstr "Využití místa na disku" - -msgid "Disk Usage" -msgstr "Využití disku" - -msgid "Display Host »" -msgstr "Zobrazit hostitele »" - -msgid "Display timespan »" -msgstr "Zobrazit časové rozpětí »" - -msgid "E-Mail Plugin Configuration" -msgstr "Nastavení E-Mail pluginu" - -msgid "Email" -msgstr "Email" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Povolit tento plugin" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Nastavení pluginu Exec" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "Vyprázdnit cache po" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Grafy" - -msgid "Group" -msgstr "Skupina" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Zde můžete nastavit externí příkazy, které budou spuštěny v tomto pořadí " -"daemonem collectd. Ze standardního výstupu příkazů vezme collectd potřebné " -"hodnoty." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Zde můžete definovat různá kritéria, podle kterých budou vybrána sledovaná " -"pravidla iptables." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "Hostitel" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "IP nebo hostname, odkud získat txtinfo výstup" - -msgid "IRQ Plugin Configuration" -msgstr "Nastavení IRQ pluginu" - -msgid "Ignore source addresses" -msgstr "Ignorovat zdrojové adresy" - -msgid "Incoming interface" -msgstr "Příchozí rozhraní" - -msgid "Interface Plugin Configuration" -msgstr "Nastavení Interface pluginu" - -msgid "Interfaces" -msgstr "Rozhraní" - -msgid "Interrupts" -msgstr "Přerušení" - -msgid "Interval for pings" -msgstr "Interval pro ping" - -msgid "Iptables Plugin Configuration" -msgstr "Nastavení Iptables pluginu" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" -"Pokud nic nevyberete, rozhraní pro monitoring budou určena automaticky." - -msgid "Listen host" -msgstr "Naslouchající hostitel" - -msgid "Listen port" -msgstr "Naslouchající port" - -msgid "Listener interfaces" -msgstr "Rozhraní naslouchajícího" - -msgid "Load Plugin Configuration" -msgstr "Načíst nastavení pluginů" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Maximální množství povolených spojení" - -msgid "Memory" -msgstr "Paměť" - -msgid "Memory Plugin Configuration" -msgstr "Nastavení pluginu Memory (Paměť)" - -msgid "Monitor all except specified" -msgstr "Sledovat vše kromě vybraných" - -msgid "Monitor all local listen ports" -msgstr "Monitorovat všechny naslouchající porty" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Sledovat zařízení" - -msgid "Monitor disks and partitions" -msgstr "Sledovat disky a oddíly" - -msgid "Monitor filesystem types" -msgstr "Sledovat typy souborových systémů" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Sledovat hostitele" - -msgid "Monitor interfaces" -msgstr "Sledovat rozhraní" - -msgid "Monitor interrupts" -msgstr "Sledovat přerušení" - -msgid "Monitor local ports" -msgstr "Sledovat místní porty" - -msgid "Monitor mount points" -msgstr "Sledovat přípojné body" - -msgid "Monitor processes" -msgstr "Sledovat procesy" - -msgid "Monitor remote ports" -msgstr "Sledovat vzdálené porty" - -msgid "Name of the rule" -msgstr "Název pravidla" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Nastavení pluginu Netlink" - -msgid "Network" -msgstr "Síť" - -msgid "Network Plugin Configuration" -msgstr "Nastavení pluginu Síť" - -msgid "Network plugins" -msgstr "Síťové pluginy" - -msgid "Network protocol" -msgstr "Síťový protokol" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Počet vláken pro sběr dat" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "Nastavení pluginu OLSRd" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Možnosti" - -msgid "Outgoing interface" -msgstr "Odchozí rozhraní" - -msgid "Output plugins" -msgstr "Výstupní pluginy" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Nastavení pluginu Ping" - -msgid "Port" -msgstr "Port" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Procesy" - -msgid "Processes Plugin Configuration" -msgstr "Nastavení pluginu Procesy" - -msgid "Processes to monitor separated by space" -msgstr "Sledované procesy (oddělte mezerou)" - -msgid "Processor" -msgstr "Procesor" - -msgid "Qdisc monitoring" -msgstr "Sledování Qdisc" - -#, fuzzy -msgid "RRD XFiles Factor" -msgstr "RRD XFiles Factor" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "Nastavení pluginu RRDTool" - -msgid "Rows per RRA" -msgstr "Řádky na jeden RRA" - -msgid "Script" -msgstr "Skript" - -msgid "Seconds" -msgstr "Sekundy" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Hostitel serveru" - -msgid "Server port" -msgstr "Port serveru" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "Soubor socketu" - -msgid "Socket group" -msgstr "Skupina socketů" - -msgid "Socket permissions" -msgstr "Oprávnění socketu" - -msgid "Source ip range" -msgstr "Rozsah zdrojových IP" - -msgid "Specifies what information to collect about links." -msgstr "Určuje, jaké informace sbírat o odkazech." - -msgid "Specifies what information to collect about routes." -msgstr "Určuje, jaké informace sbírat o cestách" - -msgid "Specifies what information to collect about the global topology." -msgstr "Určuje, jaké informace sbírat o globální topologii" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Statistiky" - -msgid "Storage directory" -msgstr "Úložný adresář" - -msgid "Storage directory for the csv files" -msgstr "Úložný adresář pro soubory CSV" - -msgid "Store data values as rates instead of absolute values" -msgstr "Ukládat data jako poměrné hodnoty místo absolutních" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "Zatížení systému" - -msgid "TCP Connections" -msgstr "TCP spojení" - -msgid "TCPConns Plugin Configuration" -msgstr "Nastavení pluginu TCPConns" - -msgid "TTL for network packets" -msgstr "TTL pro síťové pakety" - -msgid "TTL for ping packets" -msgstr "TTL pro pakety pingu" - -msgid "Table" -msgstr "" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "Plugin Conntrack shromažďuje statistiky o počtu sledovaných spojení." - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "Plugin CPU shromažďuje základní statistiky o vytížení procesoru." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"Plugin CSV ukládá shromážděná data ve formátu CSV. Data mohou být později " -"zpracována externími programy." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"Plugin DF shromažďuje statistiky o využití diskového prostoru na různých " -"zařízeních, přípojných bodech nebo typech souborových systémů." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"Plugin Disk shromažďuje podrobné statistiky o využívání vybraného oddílu " -"nebo celého disku." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"Plugin DNS shromažďuje podrobné statistky o provozu, vztahující se k DNS, na " -"vybraných rozhraních." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"Plugin Email vytváří unixový socket, které může být využit pro odeslání " -"statistik o emailu běžícímu daemonu collectd. Plugin je primárně určen pro " -"použití ve spojení s Mail::SpamAssasin::Plugin::Collectd, ale stejně dobře " -"může být využit jinak." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"Plugin Interface shromažďuje statistiky o provozu na vybraných rozhraních." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"Plugin Iptables monitoruje vybraná pravidla firewallu a shromažďuje " -"informace o zpracovaných bajtech a paketech pro každé pravidlo." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"Plugin IRQ monitoruje množství požadavků na přerušení pro každé vybrané " -"přerušení. Pokud není vybráno žádné přerušení, jsou monitorována všechna." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" -"Plugin Iwinfo shromažďuje statistiky o síle, šumu a kvalitě bezdrátového " -"signálu." - -msgid "The load plugin collects statistics about the general system load." -msgstr "Plugin Load shromažďuje statistiky o obecné zátěži systému." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "Plugin Memory shromažďuje statistiky o využití paměti." - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"Plugin Netlink shromažďuje rozšířené informace jako statistiky qdisk, class " -"a filtru pro vybraná rozhraní." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"Plugin Network poskytuje síťovou komunikaci mezi různými instancemi daemonu " -"collectd. Collectd může pracovat v režimu klienta i serveru. V režimu " -"klienta jsou lokálně shromažďovaná data odeslána instanci serveru, jako " -"server naopak collectd přijímá data z ostatních hostitelů." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"Plugin Ping bude odesílat ICMP echo odpovědi vybraným hostům a měřit " -"zpáteční čas pro každého hosta." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"Plugin Processes shromažďuje informace o procesorovém času, výpadcích " -"stránky a využití paměti vybranými programy." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"Plugin Rrdtool ukládá shromažďená data v souborech databáze RRD.

    Varování: Nastavení špatných hodnot bude mít za následek velkou " -"spotřebu paměti v dočasném adresáří. Zařízení ze tak může stát nepoužitelným!" -"" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"Plugin Tcpconns shromažďuje informace o otevřených TCP spojeních na " -"vybraných portech." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"Plugin Unixsock vytváří unixový socket, které může být využit pro čtení dat " -"z běžící instance collectd." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Tato sekce určuje, na kterých rozhraních bude collectd čekat na příchozí " -"spojení." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "Tato sekce určuje, na které servery budou odeslána shromážděná data." - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "UPS" - -msgid "UPS Plugin Configuration" -msgstr "Konfigurace pluginu UPS" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Konfigurace pluginu Unixsock" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Použitý soubor PID (identifikátoru procesu)" - -msgid "User" -msgstr "Uživatel" - -msgid "Verbose monitoring" -msgstr "Podrobný monitoring" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "Nastavení pluginu Wireless Iwinfo" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "např. br-ff" - -msgid "e.g. br-lan" -msgstr "např. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "např. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "max. 16 znaků" - -msgid "reduces rrd size" -msgstr "redukovaná velikost rrd" - -msgid "seconds; multiple separated by space" -msgstr "sekundy, více hodnot oddělených mezerou" - -msgid "server interfaces" -msgstr "rozhraní serveru" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Systémové pluginy" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "Balíček Statistiky je založen na Collectd a využívá RRD " -#~ "Tool pro kreslení diagramů z collectd." - -#~ msgid "Installed network plugins:" -#~ msgstr "Instalované síťové pluginy:" - -#~ msgid "Installed output plugins:" -#~ msgstr "Instalované výstupní pluginy:" - -#~ msgid "" -#~ "Network plugins are used to collect information about open tcp " -#~ "connections, interface traffic, iptables rules etc." -#~ msgstr "" -#~ "Síťové pluginy jsou používány pro shromažďování informací o otevřených " -#~ "tcp spojeních, provozu na rozhraní, pravidel iptables atd." - -#~ msgid "" -#~ "Output plugins provide different possibilities to store collected data. " -#~ "It is possible to enable multiple plugin at one, for example to store " -#~ "collected data in rrd databases and to transmit the data over the network " -#~ "to other collectd instances." -#~ msgstr "" -#~ "Výstupní pluginy poskytují různé možnosti ukládání sesbíraných dat. " -#~ "Plugin je možné v jeden okamžik povolit vícekrát , například pro ukládání " -#~ "dat do rrd databází a předávání dat po síti jiným instancím daemonu " -#~ "collectd." - -#~ msgid "" -#~ "System plugins collecting values about system state and ressource usage " -#~ "on the device.:" -#~ msgstr "" -#~ "Systémové pluginy, shromažďující hodnoty o systémovém stavu a zdrojích, " -#~ "používaných zařízením:" - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "Plugin Wireless shromažďuje statistiky o síle, šumu a kvalitě " -#~ "bezdrátového signálu." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Nastavení pluginu Wireless" diff --git a/package/luci/applications/luci-app-statistics/po/de/rrdtool.po b/package/luci/applications/luci-app-statistics/po/de/rrdtool.po deleted file mode 100644 index 390fd2e6c6..0000000000 --- a/package/luci/applications/luci-app-statistics/po/de/rrdtool.po +++ /dev/null @@ -1,357 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2009-05-19 00:33+0200\n" -"Last-Translator: Stefan Keks \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Drahtlos - Signal-Noise-Verhältnis" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Noise-Level" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Signalstärke" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Drahtlos - Signalqualität" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Signalqualität" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: ICMP Antwortzeiten" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Firewall - Verarbeitete Pakete" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "Pakete/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Kette \"%di\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - Transfer auf %pi" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "Bytes/s" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Bytes (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - Pakete auf %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "Pakete/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Verarbeitet (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Verworfen (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Fehler (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - Multicast auf %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "Pakete/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Pakete" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - Kollisionen auf %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "Kollisionen/s" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Kollisionen" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - Fehler auf %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "Fehler/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Prozesse" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Prozesse/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Prozess %pi - Verbrauchte CPU Zeit" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "System" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "User" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Prozess %pi - Threads und Prozesse" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "Anzahl" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Prozess %pi - Speicherzugriffsfehler" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Zugriffsfehler" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "Zugriffsfehler" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Process %pi - Virtueller Speicher" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bytes" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "virtueller Speicher" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Auslastung auf Prozessor #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Transfer auf %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "Bytes/s" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Pakete auf %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "Pakete/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: TCP-Verbindungen auf Port %pi" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "Verbindungen/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Speicherverbrauch auf %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Bytes" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "verfügbar" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "belegt " - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: Interrupts" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "Aufrufe/s" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: Systemlast" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Last" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 Minute" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 Minuten" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 Minuten" diff --git a/package/luci/applications/luci-app-statistics/po/de/statistics.po b/package/luci/applications/luci-app-statistics/po/de/statistics.po deleted file mode 100644 index 45ba020ada..0000000000 --- a/package/luci/applications/luci-app-statistics/po/de/statistics.po +++ /dev/null @@ -1,866 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2013-01-28 22:20+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Aktion (Ziel)" - -msgid "Add command for reading values" -msgstr "Kommando zum Werte einlesen hinzufügen" - -msgid "Add matching rule" -msgstr "Auswahlregel hinzufügen" - -msgid "Add multiple hosts separated by space." -msgstr "Mehrere Hosts durch Leerzeichen getrennt hinzufuegen" - -msgid "Add notification command" -msgstr "Benachrichtigungskommando hinzufügen" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Basisverzeichnis" - -msgid "Basic monitoring" -msgstr "Schnittstellen einfach überwachen" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "CPU Plugin Konfiguration" - -msgid "CSV Output" -msgstr "CSV Ausgabe" - -msgid "CSV Plugin Configuration" -msgstr "CSV Plugin Konfiguration" - -msgid "Cache collected data for" -msgstr "Zwischenspeicherzeit für gesammelte Daten" - -msgid "Cache flush interval" -msgstr "Cache-Leerungsintervall" - -msgid "Chain" -msgstr "Kette (Chain)" - -msgid "CollectLinks" -msgstr "Informationen über Links sammeln (CollectdLinks)" - -msgid "CollectRoutes" -msgstr "Informationen über Routen sammeln (CollectRoutes)" - -msgid "CollectTopology" -msgstr "Informationen über die Netzwerktopologie sammeln (CollectTopology)" - -msgid "Collectd Settings" -msgstr "Collectd Einstellungen" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd ist ein schlankes Dienstprogramm zum Sammeln von Systemdaten aus " -"verschiedenen Quellen mittels diverser Plugins. Auf dieser Seite können " -"generelle Einstellungen für den Collectd-Daemon vorgenommen werden." - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "Conntrack Plugin Einstellungen" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "DF Plugin Konfiguration" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "DNS Plugin Konfiguration" - -msgid "Data collection interval" -msgstr "Daten-Sammelintervall" - -msgid "Datasets definition file" -msgstr "Dataset-Definitionen" - -msgid "Destination ip range" -msgstr "Ziel-IP-Bereich" - -msgid "Directory for collectd plugins" -msgstr "Verzeichnis für Collectd-Plugins" - -msgid "Directory for sub-configurations" -msgstr "Verzeichnis für Unterkonfigurationen" - -msgid "Disk Plugin Configuration" -msgstr "Disk Plugin Konfiguration" - -msgid "Disk Space Usage" -msgstr "Plattenspeicher" - -msgid "Disk Usage" -msgstr "Plattenauslastung" - -msgid "Display Host »" -msgstr "Anzeigeserver" - -msgid "Display timespan »" -msgstr "Zeitspanne zeigen »" - -msgid "E-Mail Plugin Configuration" -msgstr "E-Mail Plugin Konfiguration" - -msgid "Email" -msgstr "Email" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Plugin aktivieren" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Exec Plugin Konfiguration" - -msgid "Filter class monitoring" -msgstr "Filterklassen überwachen" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "Leerungsintervall für Zwischenspeicher" - -msgid "Forwarding between listen and server addresses" -msgstr "Weiterleitung zwischen Listen- und Server-Adressen" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Diagramme" - -msgid "Group" -msgstr "Gruppe" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Hier können externe Kommandos definiert werden, welche durch Collectd " -"gestartet werden um Statistik-Werte einzulesen. Die Werte werden dabei vom " -"STDOUT des aufgerufenen Programmes gelesen." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Hier können externe Kommandos definiert werden, welche durch Collectd " -"gestartet werden sobald konfigurierte Grenzwerte erreicht werden. Die Werte " -"welche die Benachrichtigung ausgelöst haben werden dabei an den STDIN des " -"aufgerufenen Programmes übergeben." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Hier werden die Kriterien festgelegt nach welchen die zu überwachenden " -"Firewall-Regeln ausgewählt werden." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "Host" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "IP-Adresse oder Hostname zum Abfragen der Txtinfo-Ausagabe" - -msgid "IRQ Plugin Configuration" -msgstr "IRQ Plugin Konfiguration" - -msgid "Ignore source addresses" -msgstr "Quelladressen ignorieren" - -msgid "Incoming interface" -msgstr "eingehende Schnittstelle" - -msgid "Interface Plugin Configuration" -msgstr "Interface Plugin Konfiguration" - -msgid "Interfaces" -msgstr "Schnittstellen" - -msgid "Interrupts" -msgstr "Interrupts" - -msgid "Interval for pings" -msgstr "Intervall zwischen den Pings" - -msgid "Iptables Plugin Configuration" -msgstr "Iptables Plugin Konfiguration" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" -"Nichts auswählen um die zu überwachende Schnittstelle automatisch zu " -"bestimmen" - -msgid "Listen host" -msgstr "Listen-Host" - -msgid "Listen port" -msgstr "Listen-Port" - -msgid "Listener interfaces" -msgstr "Listen-Schnittstelle" - -msgid "Load Plugin Configuration" -msgstr "Load Plugin Konfiguration" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Maximale Anzahl erlaubter Verbindungen" - -msgid "Memory" -msgstr "Memory" - -msgid "Memory Plugin Configuration" -msgstr "Memory-Plugin-Konfiguration" - -msgid "Monitor all except specified" -msgstr "Alle bis auf Angegebene überwachen" - -msgid "Monitor all local listen ports" -msgstr "Alle durch lokale Dienste genutzten Ports überwachen" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Geräte überwachen" - -msgid "Monitor disks and partitions" -msgstr "Geräte und Partitionen überwachen" - -msgid "Monitor filesystem types" -msgstr "Datesystemtypen überwachen" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Hosts überwachen" - -msgid "Monitor interfaces" -msgstr "Schnittstellen überwachen" - -msgid "Monitor interrupts" -msgstr "Interrups überwachen" - -msgid "Monitor local ports" -msgstr "lokale Ports überwachen" - -msgid "Monitor mount points" -msgstr "Mount-Punkte überwachen" - -msgid "Monitor processes" -msgstr "Überwachte Prozesse" - -msgid "Monitor remote ports" -msgstr "entfernte Ports überwachen" - -msgid "Name of the rule" -msgstr "Name der Regel" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Netlink Plugin Konfiguration" - -msgid "Network" -msgstr "Netzwerk" - -msgid "Network Plugin Configuration" -msgstr "Network Plugin Konfiguration" - -msgid "Network plugins" -msgstr "Netzwerkplugins" - -msgid "Network protocol" -msgstr "Netzwerkprotokoll" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Anzahl paralleler Sammelprozesse" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "OLSRd-Plugin-Konfiguration" - -msgid "Only create average RRAs" -msgstr "Nur 'average' RRAs erzeugen" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Optionen" - -msgid "Outgoing interface" -msgstr "ausgehende Schnittstelle" - -msgid "Output plugins" -msgstr "Ausgabeplugins" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Ping Plugin Konfiguration" - -msgid "Port" -msgstr "Port" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Prozesse" - -msgid "Processes Plugin Configuration" -msgstr "Prozess Plugin Konfiguration" - -msgid "Processes to monitor separated by space" -msgstr "Zu überwachende Prozesse (getrennt durch Leerzeichen)" - -msgid "Processor" -msgstr "Prozessor" - -msgid "Qdisc monitoring" -msgstr "Queue Discipline überwachen" - -msgid "RRD XFiles Factor" -msgstr "RRD XFiles Faktor" - -msgid "RRD heart beat interval" -msgstr "RRD Heartbeatintervall" - -msgid "RRD step interval" -msgstr "RRD Schrittintervall" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "RRDTool Plugin Konfiguration" - -msgid "Rows per RRA" -msgstr "Spalten pro RRA" - -msgid "Script" -msgstr "Skript" - -msgid "Seconds" -msgstr "Sekunden" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Server-Host" - -msgid "Server port" -msgstr "Server-Port" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Shapingklassen überwachen" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "Socket-Datei" - -msgid "Socket group" -msgstr "Socket-Nutzergruppe" - -msgid "Socket permissions" -msgstr "Socket-Berechtigungen" - -msgid "Source ip range" -msgstr "Quell-IP-Bereich" - -msgid "Specifies what information to collect about links." -msgstr "Bestimmt die zu sammelnden Per-Link-Informationen." - -msgid "Specifies what information to collect about routes." -msgstr "Bestimmt die zu sammelnden Per-Route-Informationen." - -msgid "Specifies what information to collect about the global topology." -msgstr "Bestimmt die zu sammelnden Informationen der globalen Topologie." - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Statistiken" - -msgid "Storage directory" -msgstr "Speicherverzeichnis" - -msgid "Storage directory for the csv files" -msgstr "Speicherverzeichnis für die CSV-Dateien" - -msgid "Store data values as rates instead of absolute values" -msgstr "Werte nicht absolut sondern als Raten speichern" - -msgid "Stored timespans" -msgstr "gespeicherte Zeitspannen" - -msgid "System Load" -msgstr "Systemlast" - -msgid "TCP Connections" -msgstr "TCP-Verbindungen" - -msgid "TCPConns Plugin Configuration" -msgstr "TCPConns Plugin Konfiguration" - -msgid "TTL for network packets" -msgstr "TTL für Netzwerkpakete" - -msgid "TTL for ping packets" -msgstr "TTL für Ping Pakete" - -msgid "Table" -msgstr "Tabelle" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" -"Das NUT-Plugin liest Informationen über Unterbrechungsfreie Stromversorgungen" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" -"Das OLSRd-Plugin liest Informationen über Meshnetzwerke aus der OLSR-Txtinfo-" -"Erweiterung." - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" -"Das Conntrack-Plugin sammelt Daten über die Anzahl der verfolgten " -"Verbindungen." - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" -"Das CPU-Plugin sammelt grundlegende Statistiken über die Prozessorauslastung." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"Das CSV-Plugin speichert die gesammelten Daten im CSV-Format, geeignet für " -"die Weiterverarbeitung durch externe Programme." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"Das DF-Plugin sammelt Statistiken über den Speicherverbrauch auf " -"verschiedenen Geräten, Mount-Punkten oder Dateisystemtypen." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"Das Disk-Plugin sammelt detaillierte Statistiken über die Auslastung auf " -"ausgewählten Festplatten und Partitionen." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"Das DNS-Plugin sammelt detaillierte Statistiken über DNS-bezogenen Verkehr " -"auf ausgewählten Schnittstellen." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"Das E-Mail Plugin erstellt einen Unix-Socket welcher benutzt werden kann um " -"E-Mail-Statistiken an den laufenden Collectd-Daemon zu übermitteln. Dieses " -"Plugin ist primär für die Verwendung zusammen mit Mail::SpamAssasin::Plugin::" -"Collectd gedacht, kann aber auch anderweitig verwendet werden." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"Das Exec-Plugin startet externe Kommandos um Werte einzulesen oder um " -"Benachrichtigungen auszulösen falls bestimmte Grenzwerte erreicht werden." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"Das Interface-Plugin sammelt allgemeine Verkehrsstatistiken auf ausgewählten " -"Schnittstellen." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"Das Iptables-Plugin überwacht ausgewählte Firewall-Regeln und sammelt Werte " -"über die Anzahl der verarbeiteten Pakete und Bytes." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"Das IRQ-Plugin überwacht die Anzahl der Aufrufe pro Sekunde für jeden " -"ausgewählten Interrupt. Wird kein Interrupt ausgewählt überwacht das Plugin " -"alle im System vorhandenen Interrupts." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" -"Das iwinfo-Plugin sammelt Statistiken über die WLAN-Signalstärke, den " -"Rauschpegel und die Signalqualität." - -msgid "The load plugin collects statistics about the general system load." -msgstr "Das Load-Plugin sammelt Informationen über die allgemeine Systemlast." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" -"Das memory-Plugin sammelt Statistiken über die RAM-Auslastung des Systems." - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"Das Netlink-Plugin sammelt erweiterte QoS-Informationen wie QDisc-, Class- " -"und Filter-Statistiken auf ausgewählten Schnittstellen." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"Das Network-Plugin ermöglicht die netzwerkgestützte Kommunikation zwischen " -"verschiedenen Collectd-Instanzen. Collectd kann gleichzeitig im Server- und " -"Client-Modus betrieben werden. Im Client-Modus werden lokal gesammelte Daten " -"an einen Collectd-Server übermittelt, im Server-Modus empfängt die lokale " -"Instanz Daten von anderen Installationen." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"Das Ping-Plugin sendet ICMP-Echo-Requests an ausgewählte Hosts und misst die " -"Antwortzeiten für jede Adresse." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"Das Prozess-Plugin sammelt Statistiken über Prozess-Zeit, Speicher-Fehler " -"und Speicher-Verbrauch ausgewählter Prozesse" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"Das RRDTool-Plugin speichert die gesammelten Daten in sogenannten RRD-" -"Datenbanken, der Grundlage für die Diagramm-Bilder.

    Warnung: Falsche Werte resultieren in einem sehr hohen " -"Speicherverbrauch im temporären Verzeichnis. Das kann das Gerät unbrauchbar " -"machen, da Systemspeicher für den regulären Betrieb fehlt!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"Das TCPConns-Plugin sammelt Informationen über offene TCP-Verbindungen auf " -"ausgewählten Ports." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"Das Unixsock-Plugin erstellt einen Unix-Socket über welchen gesammelte Werte " -"aus der laufenden Collectd-Instanz ausgelesen werden können." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Diese Sektion legt fest auf welchen Schnittstellen Collectd auf eingehende " -"Verbindungen wartet." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"Diese Sektion legt fest zu welchen Collectd-Servern die lokal gesammelten " -"Daten gesendet werden." - -msgid "Try to lookup fully qualified hostname" -msgstr "automatisch vollen Hostnamen herausfinden" - -msgid "UPS" -msgstr "USV" - -msgid "UPS Plugin Configuration" -msgstr "Einstellungen des USV-Plugins" - -msgid "UPS name in NUT ups@host format" -msgstr "Name der USV in NUT im Format usv@host " - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Unixsock Plugin Konfiguration" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Pfad zu PID-Datei" - -msgid "User" -msgstr "Nutzer" - -msgid "Verbose monitoring" -msgstr "Schnittstellen detailliert überwachen" - -msgid "Wireless" -msgstr "Drahtlos" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "Wireless-iwinfo Plugin Konfiguration" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "z.B. br-ff" - -msgid "e.g. br-lan" -msgstr "z.B. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "z.B. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "max. 16 Buchstaben" - -msgid "reduces rrd size" -msgstr "reduziert die RRD Größe" - -msgid "seconds; multiple separated by space" -msgstr "mehrere mit Leerzeichen trennen" - -msgid "server interfaces" -msgstr "Server-Schnittstellen" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Systemplugins" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "Das Statistik-Paket basiert auf Collectd und nutzt RRD " -#~ "Tool um die gesammelten Daten in Diagramme zu rendern." - -#~ msgid "Installed network plugins:" -#~ msgstr "Installierte Netzwerk-Plugins:" - -#~ msgid "Installed output plugins:" -#~ msgstr "Installierte Ausgabe-Plugins:" - -#~ msgid "" -#~ "Network plugins are used to collect information about open tcp " -#~ "connections, interface traffic, iptables rules etc." -#~ msgstr "" -#~ "Netzwerkplugins werden benutzt um Informationen über offene TCP-" -#~ "Verbindungen, Datenverkehr/Volumen, Iptables/Firewall Regeln etc. zu " -#~ "sammeln" - -#~ msgid "" -#~ "Output plugins provide different possibilities to store collected data. " -#~ "It is possible to enable multiple plugin at one, for example to store " -#~ "collected data in rrd databases and to transmit the data over the network " -#~ "to other collectd instances." -#~ msgstr "" -#~ "Ausgabeplugins ermöglichen es gesammelte Daten zu speichern. Mehrere " -#~ "Plugins können gleichzeitig aktiviert werden, z.B. um Daten in RRD-" -#~ "Datenbanken zu speichern und gleichzeitig über das Netzwerk an andere " -#~ "Collectd-Instanzen zu versenden." - -#~ msgid "" -#~ "System plugins collecting values about system state and ressource usage " -#~ "on the device.:" -#~ msgstr "" -#~ "Systemplugins sammeln Daten zum Systemzustand und den Ressoursenbedarf " -#~ "des Gerätes" - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "Das Wireless-Plugin sammelt Statistiken über die drahtlose Signalstärke, " -#~ "den Störpegel und die Signalqualität." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Wireless Plugin Konfiguration" diff --git a/package/luci/applications/luci-app-statistics/po/el/rrdtool.po b/package/luci/applications/luci-app-statistics/po/el/rrdtool.po deleted file mode 100644 index 1d81166ecf..0000000000 --- a/package/luci/applications/luci-app-statistics/po/el/rrdtool.po +++ /dev/null @@ -1,358 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/el/statistics.po b/package/luci/applications/luci-app-statistics/po/el/statistics.po deleted file mode 100644 index 4062868446..0000000000 --- a/package/luci/applications/luci-app-statistics/po/el/statistics.po +++ /dev/null @@ -1,762 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-03-18 15:32+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "" - -msgid "Add command for reading values" -msgstr "" - -msgid "Add matching rule" -msgstr "" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "" - -msgid "Aggregate number of connected users" -msgstr "" - -#, fuzzy -msgid "Base Directory" -msgstr "Κατάλογος βάσης" - -msgid "Basic monitoring" -msgstr "" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "" - -msgid "CSV Output" -msgstr "Έξοδος CSV" - -msgid "CSV Plugin Configuration" -msgstr "" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Ρυθμίσεις Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Το Collectd είναι ένας μικρός δαίμονας για τη συλλογή δεδομένων από διάφορες " -"πηγές μέσω διάφορων προσθέτων. Σε αυτή τη σελίδα μπορείτε να αλλάξετε τις " -"γενικές ρυθμίσεις του δαίμονα collectd." - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "" - -msgid "Data collection interval" -msgstr "Περίοδος συλλογής δεδομένων" - -msgid "Datasets definition file" -msgstr "Αρχείο ορισμού συνόλων δεδομένων" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "Κατάλογος για πρόσθετα collectd" - -#, fuzzy -msgid "Directory for sub-configurations" -msgstr "Κατάλογος υπο-ρυθμίσεων" - -msgid "Disk Plugin Configuration" -msgstr "" - -msgid "Disk Space Usage" -msgstr "Χρήση Χώρου στον δίσκο" - -msgid "Disk Usage" -msgstr "Χρήση Δίσκου" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "Εμφάνιση χρονικού εύρους »" - -msgid "E-Mail Plugin Configuration" -msgstr "" - -msgid "Email" -msgstr "Ηλ. Ταχυδρομείο" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "Τείχος προστασίας" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Γραφήματα" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "Όνομα υπολογιστή" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "" - -msgid "Ignore source addresses" -msgstr "" - -msgid "Incoming interface" -msgstr "" - -msgid "Interface Plugin Configuration" -msgstr "" - -msgid "Interfaces" -msgstr "Διεπαφές" - -msgid "Interrupts" -msgstr "Διακοπές" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "" - -msgid "Memory" -msgstr "Μνήμη" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "" - -msgid "Monitor disks and partitions" -msgstr "" - -msgid "Monitor filesystem types" -msgstr "" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "" - -msgid "Monitor local ports" -msgstr "" - -msgid "Monitor mount points" -msgstr "" - -msgid "Monitor processes" -msgstr "" - -msgid "Monitor remote ports" -msgstr "" - -msgid "Name of the rule" -msgstr "Όνομα κανόνα" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "Δίκτυο" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "Πρόσθετα δικτύου" - -msgid "Network protocol" -msgstr "" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Αριθμός νημάτων για τη συλλογή δεδομένων" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Outgoing interface" -msgstr "" - -msgid "Output plugins" -msgstr "Πρόσθετα εξόδου" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Διεργασίες" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "Επεξεργαστής" - -msgid "Qdisc monitoring" -msgstr "" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "Δευτερόλεπτα" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "" - -msgid "Server port" -msgstr "" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Στατιστικά" - -msgid "Storage directory" -msgstr "" - -msgid "Storage directory for the csv files" -msgstr "" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "Φόρτος Συστήματος" - -msgid "TCP Connections" -msgstr "Συνδέσεις TCP" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "" - -msgid "TTL for ping packets" -msgstr "" - -msgid "Table" -msgstr "Πίνακας" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Αρχείο PID σε χρήση" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "Ασύρματο" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "π.χ. br-ff" - -msgid "e.g. br-lan" -msgstr "π.χ. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "" - -msgid "max. 16 chars" -msgstr "" - -msgid "reduces rrd size" -msgstr "" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Πρόσθετα συστήματος" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "Το πακέτο στατιστικών βασίζεται στο Collectd και χρησιμοποιεί το RRD Tool για να σχεδιάσει διαγράμματα από τα συλλεγόμενα " -#~ "δεδομένα." diff --git a/package/luci/applications/luci-app-statistics/po/en/rrdtool.po b/package/luci/applications/luci-app-statistics/po/en/rrdtool.po deleted file mode 100644 index d780144537..0000000000 --- a/package/luci/applications/luci-app-statistics/po/en/rrdtool.po +++ /dev/null @@ -1,358 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Wireless - Signal Noise Ratio" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Noise Level" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Signal Strength" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Wireless - Signal Quality" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Signal Quality" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: ICMP Roundtrip Times" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Firewall - Processed Packets" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "Packets/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Chain \"%di\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - Transfer on %pi" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "Bytes/s" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Bytes (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - Packets on %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "Packets/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Processed (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Dropped (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Errors (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - Multicast on %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "Packets/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Packets" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - Collisions on %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "Collisions/s" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Collisions" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - Errors on %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "Errors/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Processes" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Processes/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Process %pi - used cpu time" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "system" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "user" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Process %pi - threads and processes" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "Count" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Process %pi - page faults" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Pagefaults" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "page faults" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Process %pi - virtual memory size" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bytes" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "virtual memory" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Usage on Processor #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Transfer on %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "Bytes/s" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Packets on %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "Packets/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: TCP-Connections to Port %pi" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "Connections/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Disk Space Usage on %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Bytes" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: Interrupts" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "Issues/s" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: System Load" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Load" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 min" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 min" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 min" diff --git a/package/luci/applications/luci-app-statistics/po/en/statistics.po b/package/luci/applications/luci-app-statistics/po/en/statistics.po deleted file mode 100644 index f7ebfe0c2b..0000000000 --- a/package/luci/applications/luci-app-statistics/po/en/statistics.po +++ /dev/null @@ -1,816 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Action (target)" - -msgid "Add command for reading values" -msgstr "Add command for reading values" - -msgid "Add matching rule" -msgstr "Add matching rule" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "Add notification command" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Base Directory" - -msgid "Basic monitoring" -msgstr "Basic monitoring" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "CPU Plugin Configuration" - -msgid "CSV Output" -msgstr "CSV Output" - -msgid "CSV Plugin Configuration" -msgstr "CSV Plugin Configuration" - -msgid "Cache collected data for" -msgstr "Cache collected data for" - -msgid "Cache flush interval" -msgstr "Cache flush interval" - -msgid "Chain" -msgstr "Chain" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Collectd Settings" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "DF Plugin Configuration" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "DNS Plugin Configuration" - -msgid "Data collection interval" -msgstr "Data collection interval" - -msgid "Datasets definition file" -msgstr "Datasets definition file" - -msgid "Destination ip range" -msgstr "Destination ip range" - -msgid "Directory for collectd plugins" -msgstr "Directory for collectd plugins" - -msgid "Directory for sub-configurations" -msgstr "Directory for sub-configurations" - -msgid "Disk Plugin Configuration" -msgstr "Disk Plugin Configuration" - -msgid "Disk Space Usage" -msgstr "Disk Space Usage" - -msgid "Disk Usage" -msgstr "Disk Usage" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "Display timespan »" - -msgid "E-Mail Plugin Configuration" -msgstr "E-Mail Plugin Configuration" - -msgid "Email" -msgstr "Email" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Enable this plugin" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Exec Plugin Configuration" - -msgid "Filter class monitoring" -msgstr "Filter class monitoring" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "Flush cache after" - -msgid "Forwarding between listen and server addresses" -msgstr "Forwarding between listen and server addresses" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Graphs" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "IRQ Plugin Configuration" - -msgid "Ignore source addresses" -msgstr "Ignore source addresses" - -msgid "Incoming interface" -msgstr "Incoming interface" - -msgid "Interface Plugin Configuration" -msgstr "Interface Plugin Configuration" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interrupts" -msgstr "Interrupts" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "Iptables Plugin Configuration" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "Listen host" - -msgid "Listen port" -msgstr "Listen port" - -msgid "Listener interfaces" -msgstr "Listener interfaces" - -msgid "Load Plugin Configuration" -msgstr "Load Plugin Configuration" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Maximum allowed connections" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "Monitor all local listen ports" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Monitor devices" - -msgid "Monitor disks and partitions" -msgstr "Monitor disks and partitions" - -msgid "Monitor filesystem types" -msgstr "Monitor filesystem types" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Monitor hosts" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "Monitor interrupts" - -msgid "Monitor local ports" -msgstr "Monitor local ports" - -msgid "Monitor mount points" -msgstr "Monitor mount points" - -msgid "Monitor processes" -msgstr "Monitor processes" - -msgid "Monitor remote ports" -msgstr "Monitor remote ports" - -msgid "Name of the rule" -msgstr "Name of the rule" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Netlink Plugin Configuration" - -msgid "Network" -msgstr "Network" - -msgid "Network Plugin Configuration" -msgstr "Network Plugin Configuration" - -msgid "Network plugins" -msgstr "Network plugins" - -msgid "Network protocol" -msgstr "Network protocol" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Number of threads for data collection" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "Only create average RRAs" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Options" - -msgid "Outgoing interface" -msgstr "Outgoing interface" - -msgid "Output plugins" -msgstr "Output plugins" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Ping Plugin Configuration" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Processes" - -msgid "Processes Plugin Configuration" -msgstr "Processes Plugin Configuration" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "Processor" - -msgid "Qdisc monitoring" -msgstr "Qdisc monitoring" - -msgid "RRD XFiles Factor" -msgstr "RRD XFiles Factor" - -msgid "RRD heart beat interval" -msgstr "RRD heart beat interval" - -msgid "RRD step interval" -msgstr "RRD step interval" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "RRDTool Plugin Configuration" - -msgid "Rows per RRA" -msgstr "Rows per RRA" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "Seconds" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Server host" - -msgid "Server port" -msgstr "Server port" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Shaping class monitoring" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "Source ip range" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "Storage directory" - -msgid "Storage directory for the csv files" -msgstr "Storage directory for the csv files" - -msgid "Store data values as rates instead of absolute values" -msgstr "Store data values as rates instead of absolute values" - -msgid "Stored timespans" -msgstr "Stored timespans" - -msgid "System Load" -msgstr "System Load" - -msgid "TCP Connections" -msgstr "TCP Connections" - -msgid "TCPConns Plugin Configuration" -msgstr "TCPConns Plugin Configuration" - -msgid "TTL for network packets" -msgstr "TTL for network packets" - -msgid "TTL for ping packets" -msgstr "TTL for ping packets" - -msgid "Table" -msgstr "Table" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "The cpu plugin collects basic statistics about the processor usage." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"The interface plugin collects traffic statistics on selected interfaces." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "The load plugin collects statistics about the general system load." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"This section defines to which servers the locally collected data is sent to." - -msgid "Try to lookup fully qualified hostname" -msgstr "Try to lookup fully qualified hostname" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Unixsock Plugin Configuration" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Used PID file" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "Verbose monitoring" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "e.g. br-ff" - -msgid "e.g. br-lan" -msgstr "e.g. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "e.g. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "max. 16 chars" - -msgid "reduces rrd size" -msgstr "reduces rrd size" - -msgid "seconds; multiple separated by space" -msgstr "seconds; multiple separated by space" - -msgid "server interfaces" -msgstr "server interfaces" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "System plugins" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Wireless Plugin Configuration" diff --git a/package/luci/applications/luci-app-statistics/po/es/rrdtool.po b/package/luci/applications/luci-app-statistics/po/es/rrdtool.po deleted file mode 100644 index 3cf27a28b1..0000000000 --- a/package/luci/applications/luci-app-statistics/po/es/rrdtool.po +++ /dev/null @@ -1,360 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-04-16 01:53+0200\n" -"Last-Translator: Jose \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Wireless - Relación señal/ruido" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Nivel de Ruido" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Fuerza de la señal" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Wireless - Calidad de la señal" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Calidad de señal" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: Tiempo de respuesta ICMP" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Firewall - Paquetes Procesados" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "Paquetes/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Cadena \\\"%di\\\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - Traslado en %pi" - -# Bytes/s -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "Bytes/s" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Bytes (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - Paquetes en %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "Paquetes/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Procesado (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Descartados (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Errores (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - Multicast en %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "Paquetes/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Paquetes" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - Colisiones en %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "Colisiones/s" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Colisiones" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - Errores en %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "Errores/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Procesos" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Procesos/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Proceso %pi -tiempo de cpu utilizado" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "sistema" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "usuario" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Procesos %pi - Hilos y procesos" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "contar" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Procesos %pi - página de errores" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Pagina de errores" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "Página de errores" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Proceso %pi - tamaño de la memoria virtual" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bytes" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "Memoria Virtual" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Uso en el procesador #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Transferencia en %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "Bytes/s" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Paquetes en %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "Paquetes/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: Conexiones TCP en el Puerto %pi" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "Conexiones/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Uso de espacio de disco en %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Bytes" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: Interrupciones" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "cuestiones/s" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: Carga de sistema" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Carga" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 minuto" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 minutos" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 minutos" diff --git a/package/luci/applications/luci-app-statistics/po/es/statistics.po b/package/luci/applications/luci-app-statistics/po/es/statistics.po deleted file mode 100644 index 3c811ffeff..0000000000 --- a/package/luci/applications/luci-app-statistics/po/es/statistics.po +++ /dev/null @@ -1,876 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-12-12 20:19+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Acción (objetivo)" - -msgid "Add command for reading values" -msgstr "Añadir comando para leer valores" - -msgid "Add matching rule" -msgstr "Añadir regla" - -msgid "Add multiple hosts separated by space." -msgstr "Añadir múltiples máquinas separadas por espacio." - -msgid "Add notification command" -msgstr "Añadir comando de notificación" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Directorio Base" - -msgid "Basic monitoring" -msgstr "Monitorización básica" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "Configuración del plugin de CPU" - -msgid "CSV Output" -msgstr "Salida CSV" - -msgid "CSV Plugin Configuration" -msgstr "Configuración del plugin de CSV" - -msgid "Cache collected data for" -msgstr "Almacenar datos recogidos para" - -msgid "Cache flush interval" -msgstr "Intervalo de limpieza del caché" - -msgid "Chain" -msgstr "Cadena" - -msgid "CollectLinks" -msgstr "Enlaces" - -msgid "CollectRoutes" -msgstr "Rutas" - -msgid "CollectTopology" -msgstr "Topología" - -msgid "Collectd Settings" -msgstr "Configuración de Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd is un demonio para la recolección de datos desde varias fuentes a " -"través de la utilización de diferentes plugins. Aquí puede cambiar la " -"configuración general del demonio que maneja collectd." - -msgid "Conntrack" -msgstr "Seguimiento" - -msgid "Conntrack Plugin Configuration" -msgstr "Configuración del seguimiento" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Configuración del plugin DF" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Configuración del plugin DNS" - -msgid "Data collection interval" -msgstr "Intervalo de recolección de datos" - -msgid "Datasets definition file" -msgstr "Archivo de definición de conjunto de datos" - -msgid "Destination ip range" -msgstr "Rango IP de destino" - -msgid "Directory for collectd plugins" -msgstr "Directorio para los plugins de collectd" - -msgid "Directory for sub-configurations" -msgstr "Directorio para las sub-configuraciones" - -msgid "Disk Plugin Configuration" -msgstr "Configuración del plugin Disco" - -msgid "Disk Space Usage" -msgstr "Espacio en disco ocupado" - -msgid "Disk Usage" -msgstr "Disco ocupado" - -msgid "Display Host »" -msgstr "Mostrar máquina »" - -msgid "Display timespan »" -msgstr "Mostrar lapso de tiempo »" - -msgid "E-Mail Plugin Configuration" -msgstr "Configuración del plugin email" - -msgid "Email" -msgstr "Correo electrónico" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Activar este plugin" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Configuración del plugin Exec" - -msgid "Filter class monitoring" -msgstr "Monitorización del filtro de clases" - -msgid "Firewall" -msgstr "Cortafuegos" - -msgid "Flush cache after" -msgstr "Vaciar caché tras" - -msgid "Forwarding between listen and server addresses" -msgstr "Retransmitir entre las direcciones de escucha y servidor" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Gráficas" - -msgid "Group" -msgstr "Grupo" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Aquí puede definir los comandos externos que iniciará collectd para leer " -"ciertos valores. Los valores se leen desde la salida estándar (stdout)." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Aquí puede definir los comandos externos que iniciará collectd cuando se " -"alcancen ciertos valores umbral." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Aquí puede definir varios criterios de selección de reglas de iptables " -"monitorizadas." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "Máquina" - -msgid "Hostname" -msgstr "Nombre de máquina" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "IP o nombre de máquina desde la que obtener la salida de txtinfo" - -msgid "IRQ Plugin Configuration" -msgstr "Configuración del plugin IRQ" - -msgid "Ignore source addresses" -msgstr "Ignorar direcciones de origen" - -msgid "Incoming interface" -msgstr "Interfaz de entrada" - -msgid "Interface Plugin Configuration" -msgstr "Configuración del interfaz de plugins" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interrupts" -msgstr "Interrupciones" - -msgid "Interval for pings" -msgstr "Intervalo entre pings" - -msgid "Iptables Plugin Configuration" -msgstr "Configuración del plugin Iptables" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "No marcar para determinar automáticamente que interfaces monitorizar." - -msgid "Listen host" -msgstr "Máquina de escucha" - -msgid "Listen port" -msgstr "Puerto de escucha" - -msgid "Listener interfaces" -msgstr "Interfaces para escuchar" - -msgid "Load Plugin Configuration" -msgstr "Configuración del plugin de carga" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Máximo número de conexiones" - -msgid "Memory" -msgstr "Memoria" - -msgid "Memory Plugin Configuration" -msgstr "Configuración del plugin Memoria" - -msgid "Monitor all except specified" -msgstr "Monitorizar todos menos los especificados" - -msgid "Monitor all local listen ports" -msgstr "Monitorizar todos los puertos de escucha locales" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Dispositivos a monitonizar" - -msgid "Monitor disks and partitions" -msgstr "Monitorizar discos y particiones" - -msgid "Monitor filesystem types" -msgstr "Monitorizar tipos de sistema de archivos" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Monitorizar máquinas" - -msgid "Monitor interfaces" -msgstr "Monitorizar interfaces" - -msgid "Monitor interrupts" -msgstr "Monitorizar interrupciones" - -msgid "Monitor local ports" -msgstr "Monitorizar puertos locales" - -msgid "Monitor mount points" -msgstr "Monitorizar puntos de montaje" - -msgid "Monitor processes" -msgstr "Monitorizar procesos" - -msgid "Monitor remote ports" -msgstr "Monitorizar puertos remotos" - -msgid "Name of the rule" -msgstr "Nombre de la regla" - -msgid "Netlink" -msgstr "Enlace de red" - -msgid "Netlink Plugin Configuration" -msgstr "Configuración del plugin \"enlace de red\"" - -msgid "Network" -msgstr "Red" - -msgid "Network Plugin Configuration" -msgstr "Configuración del plugin \"Red\"" - -msgid "Network plugins" -msgstr "Plugins de red" - -msgid "Network protocol" -msgstr "Protocolo de red" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Número de hilos para recolección de datos" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "Configuración del plugin \"OLSRd\"" - -msgid "Only create average RRAs" -msgstr "Crear sólo RRAs medias" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Opciones" - -msgid "Outgoing interface" -msgstr "Interfaz de salida" - -msgid "Output plugins" -msgstr "Plugins de salida" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Configuración del plugin \"Ping\"" - -msgid "Port" -msgstr "Puerto" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Procesos" - -msgid "Processes Plugin Configuration" -msgstr "Configuración del plugin \"Procesos\"" - -msgid "Processes to monitor separated by space" -msgstr "Procesos a monitorizar (separados por espacios)" - -msgid "Processor" -msgstr "Procesador" - -msgid "Qdisc monitoring" -msgstr "Monitorización Qdisc" - -msgid "RRD XFiles Factor" -msgstr "Factor XFiles RRD" - -msgid "RRD heart beat interval" -msgstr "Intervalo de pulso RRD" - -msgid "RRD step interval" -msgstr "Intervalo de paso RRD" - -msgid "RRDTool" -msgstr "Herramienta RRD" - -msgid "RRDTool Plugin Configuration" -msgstr "Configuración del plugin \"Herramienta RRD\"" - -msgid "Rows per RRA" -msgstr "Filas por RRA" - -msgid "Script" -msgstr "Guión" - -msgid "Seconds" -msgstr "Segundos" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Máquina servidor" - -msgid "Server port" -msgstr "Puerto servidor" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Monitorización de la clase shaping" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "Fichero de sockets" - -msgid "Socket group" -msgstr "Grupo socket" - -msgid "Socket permissions" -msgstr "Permisos para socket" - -msgid "Source ip range" -msgstr "Rango de direcciones IP origen" - -msgid "Specifies what information to collect about links." -msgstr "Especifica qué información recolectar sobre enlaces." - -msgid "Specifies what information to collect about routes." -msgstr "Especifica qué información recolectar sobre rutas." - -msgid "Specifies what information to collect about the global topology." -msgstr "Especifica qué información recolectar sobre la topología global." - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Estadísticas" - -msgid "Storage directory" -msgstr "Directorio de guardado" - -msgid "Storage directory for the csv files" -msgstr "Directorio para guardar archivos csv" - -msgid "Store data values as rates instead of absolute values" -msgstr "Guardar datos como ratios en vez de valores absolutos" - -msgid "Stored timespans" -msgstr "Intervalos almacenados" - -msgid "System Load" -msgstr "Carga del sistema" - -msgid "TCP Connections" -msgstr "Conexiones TCP" - -msgid "TCPConns Plugin Configuration" -msgstr "Configuración del plugin \"Conexiones TCP\"" - -msgid "TTL for network packets" -msgstr "TTL para paquetes de red" - -msgid "TTL for ping packets" -msgstr "TTL para paquetes de ping" - -msgid "Table" -msgstr "Tabla" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" -"El plugin NUT obtiene información sobre Sistemas de Alimentación " -"Ininterrumpida." - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" -"El plugin OLSRd lee información sobre redes distribuidas desde el plugin " -"txtinfo de OLSRd." - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" -"El plugin \"Seguimiento\" recoge estadísticas sobre el número de conexiones " -"analizadas." - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" -"El plugin \"CPU\" recolecta estadísticas básicas acerca del uso del " -"procesador." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"El plugin \"CSV\" almacena los datos recolectados en un archivo con formato " -"csv para su procesado posterior con programas de terceros." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"El plugin \"DF\" recolecta estadísticas acerca del uso del espacio en disco " -"en diferentes dispositivos, puntos de montaje y tipos de sistema de archivos." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"El plugin \"Disco\" recolecta estadísticas detallada acerca de su " -"utilización para las particiones seleccionadas o bien el disco completo." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"El plugin \"DNS\" recolecta estadísticas detalladas acerca del trafico DNS " -"en las interfaces seleccionadas." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"El plugin \"eMail\" crea un socket de unix (unix-socket) que puede " -"utilizarse para transmitir estadísticas de email a un demonio collectd en " -"ejecución. Este plugin fue desarrollado, en primer instancia, para ser " -"utilizado en conjunto con Mail::SpamAssasin::Plugin::Collectd pero puede " -"utilizarse de diferentes formas." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"El plugin \"Exec\" inicia comandos externos para leer valores o notificar a " -"procesos externos cuando determinados valores se alcanzan." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"El plugin \"Interface\" recoge estadísticas de tráfico en las interfaces " -"seleccionadas." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"El plugin \"Iptables\" monitoriza las reglas seleccionadas del cortafuegos y " -"recoge información de bytes y paquetes procesados por cada regla." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"El plugin IRQ monitorizará las activaciones por segundo de cada interrupción " -"elegida. Si no se selecciona ninguna se monitorizarán todas." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" -"El plugin \"iwinfo\" recolecta estadísticas sobre la potencia de la señal " -"inalámbrica, ruido y calidad." - -msgid "The load plugin collects statistics about the general system load." -msgstr "" -"El plugin \"carga\" recoge estadísticas sobre la carga general del sistema." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "El plugin \"memoria\" recoge estadísticas sobre el uso de memoria." - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"El plugin \"netlink\" recoge informaciones extendidas como estadísticas " -"qdisc-, clase- y filtro- para las interfaces seleccionadas." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"El plugin \"red\" proporciona comunicación entre diferentes instancias de " -"collectd. Collectd puede operar tanto en modo cliente como en modo servidor. " -"En modo cliente la información recogida se envía a una instancia que se " -"encuentre en modo servidor. En modo servidor la instancia recibe datos de " -"otras máquinas." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"El plugin \"ping\" enviará ecos ICMP a las máquinas elegifas para medir el " -"tiempo de viaje para cada host." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"El plugin \"procesos\" recoge información como tiempo de CPU, fallos de " -"página y uso de memoria de los procesos elegidos." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"El plugin \"rrdtool\" almacena datos en ficheros de bb.dd. RRD que son la " -"base para los diagramas.

    ¡Ojo: Configurar valores " -"incorrectos puede hacer que se use mucho espacio en el directorio temporal y " -"puede hacer que el dispositivo funcione mal!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"El plugin \"tcpconns\" recoge información de conexiones TCP abiertas en los " -"puertos seleccionados." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"El plugin \"unixsock\" crea un socket UNIX que se puede usar para leer los " -"datos recogidos por una instancia collectd." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Esta sección define sobre qué interfaces collectd esperará conexiones " -"entrantes." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"Esta sección define a qué servidores se envían los datos recolectados " -"localmente." - -msgid "Try to lookup fully qualified hostname" -msgstr "Intenta resolver el nombre de máquina cualificado" - -msgid "UPS" -msgstr "SAI" - -msgid "UPS Plugin Configuration" -msgstr "Configuración del plugin SAI" - -msgid "UPS name in NUT ups@host format" -msgstr "Nombre del SAI en el formato de NUT sai@máquina" - -msgid "UnixSock" -msgstr "Socket UNIX" - -msgid "Unixsock Plugin Configuration" -msgstr "Configuración del plugin \"UnixSock\"" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Archivo PID utilizado" - -msgid "User" -msgstr "Usuario" - -msgid "Verbose monitoring" -msgstr "Monitorización detallada" - -msgid "Wireless" -msgstr "Red inalámbrica" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "Configuración plugin \"Wireless iwinfo\"" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "p.e. br-ff" - -msgid "e.g. br-lan" -msgstr "p.e. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "p.e. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "16 caracteres máximo" - -msgid "reduces rrd size" -msgstr "reduce el tamaño RRD" - -msgid "seconds; multiple separated by space" -msgstr "segundos (varios separados por espacio)" - -msgid "server interfaces" -msgstr "interfaces servidores" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Plugins del sistema" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "El paquete \"estadísticas\" está basado en Collectd y utiliza RRD Tool para dibujar gráficos con los datos recogidos." - -#~ msgid "Installed network plugins:" -#~ msgstr "Plugins de red instalados:" - -#~ msgid "Installed output plugins:" -#~ msgstr "Plugins de salida instalados:" - -#~ msgid "" -#~ "Network plugins are used to collect information about open tcp " -#~ "connections, interface traffic, iptables rules etc." -#~ msgstr "" -#~ "Los plugins de red se usan para recolectar información sobre conexiones " -#~ "TCP, tráfico en los interfaces, reglas de iptables, etc." - -#~ msgid "" -#~ "Output plugins provide different possibilities to store collected data. " -#~ "It is possible to enable multiple plugin at one, for example to store " -#~ "collected data in rrd databases and to transmit the data over the network " -#~ "to other collectd instances." -#~ msgstr "" -#~ "Los plugins de salida ofrecen varias posibilidades para almacenar los " -#~ "datos. Es posible activar varios plugins a la vez, por ejemplo para " -#~ "almacenar datos recolectados en bases de datos RRD y para transmitir los " -#~ "datos sobre la red a otras instancias de collectd." - -#~ msgid "" -#~ "System plugins collecting values about system state and ressource usage " -#~ "on the device.:" -#~ msgstr "" -#~ "Los plugins del sistema recolectan valores sobre el estado y el uso de " -#~ "recursos del dispositivo.:" - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "El plugin \"inalámbrico\" recoge estadísticas sobre fuerza de la señal, " -#~ "ruido y calidad." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Configuración del plugin \"Wireless\"" - -#~ msgid "Filepath of the unix socket" -#~ msgstr "Ruta de archivo para el socket de unix" - -#~ msgid "Group ownership of the unix socket" -#~ msgstr "Grupo (dueño) del socket de unix " - -#~ msgid "group name" -#~ msgstr "nombre del grupo" - -#~ msgid "File permissions of the unix socket" -#~ msgstr "Permisos de archivos del socket de unix" - -#~ msgid "octal" -#~ msgstr "octal" diff --git a/package/luci/applications/luci-app-statistics/po/fr/rrdtool.po b/package/luci/applications/luci-app-statistics/po/fr/rrdtool.po deleted file mode 100644 index 95545db6d1..0000000000 --- a/package/luci/applications/luci-app-statistics/po/fr/rrdtool.po +++ /dev/null @@ -1,358 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/fr/statistics.po b/package/luci/applications/luci-app-statistics/po/fr/statistics.po deleted file mode 100644 index bc156dd42a..0000000000 --- a/package/luci/applications/luci-app-statistics/po/fr/statistics.po +++ /dev/null @@ -1,824 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2011-11-23 22:32+0200\n" -"Last-Translator: fredb \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Action (cible)" - -msgid "Add command for reading values" -msgstr "Ajoute une commande pour lire des valeurs" - -msgid "Add matching rule" -msgstr "Ajouter une règle à surveiller" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "Ajoute une commande de notification" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Répertoire de base" - -msgid "Basic monitoring" -msgstr "Surveillance de base" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "Configuration du greffon sur le CPU" - -msgid "CSV Output" -msgstr "Sortie au format CSV" - -msgid "CSV Plugin Configuration" -msgstr "Configuration du greffon CSV" - -msgid "Cache collected data for" -msgstr "Mettre en cache les données collectées pendant" - -msgid "Cache flush interval" -msgstr "Intervalle de vidange du cache" - -msgid "Chain" -msgstr "Chaîne" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Paramètres Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd est un petit démon collectant des données de sources variées à " -"travers différents greffons. Sur ce page, vous pouvez modifier les " -"paramètres généraux de ce démon collectd." - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Configuration du greffon DF" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Configuration du greffon DNS" - -msgid "Data collection interval" -msgstr "Période de récupération des données" - -msgid "Datasets definition file" -msgstr "Fichier de définition des lots de données" - -msgid "Destination ip range" -msgstr "plage réseau de destination" - -msgid "Directory for collectd plugins" -msgstr "Répertoire pour les greffons Collectd" - -msgid "Directory for sub-configurations" -msgstr "Répertoire pour les sous-configurations" - -msgid "Disk Plugin Configuration" -msgstr "Configuration du greffon Disque" - -msgid "Disk Space Usage" -msgstr "Utilisation de l'espace-disque" - -msgid "Disk Usage" -msgstr "Espace-disque" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "Période affichée »" - -msgid "E-Mail Plugin Configuration" -msgstr "Configuration du greffon des courriels" - -msgid "Email" -msgstr "Courriel" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Activer ce greffon" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Configuration du greffon Exec" - -msgid "Filter class monitoring" -msgstr "Surveillance des filtres" - -msgid "Firewall" -msgstr "Pare-feu" - -msgid "Flush cache after" -msgstr "Vidanger le cache après" - -msgid "Forwarding between listen and server addresses" -msgstr "Transfert entre les adresses en écoute et du serveur" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Graphiques" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Vous pouvez définir ici des commandes externes qui seront démarrées par " -"collectd pour lire certaines valeurs. Ces valeurs seront lisibles depuis " -"stdout." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Vous pouvez définir ici des commandes externes qui seront démarrées par " -"collectd quand certaines valeurs-seuil seront atteintes. Les valeurs " -"induisant ces démarrages seront fournies aux commandes externes via stdin." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Vous pouvez définir ici les critères variés pour sélectionner les règles " -"iptables à surveiller." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "Nom de l'hôte" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "Configuration du greffon IRQ" - -msgid "Ignore source addresses" -msgstr "Ignorer les adresses-source" - -msgid "Incoming interface" -msgstr "Interface entrante" - -msgid "Interface Plugin Configuration" -msgstr "Configuration du greffon des Interfaces" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interrupts" -msgstr "Interruptions" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "Configuration du greffon IPtables" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "Hôte en écoute" - -msgid "Listen port" -msgstr "Port en écoute" - -msgid "Listener interfaces" -msgstr "Interfaces en écoute" - -msgid "Load Plugin Configuration" -msgstr "Configuration du greffon de charge-système" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Nb de Connexions autorisées au maximum" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "Surveiller tous les ports en écoute locaux" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Périphériques à surveiller" - -msgid "Monitor disks and partitions" -msgstr "Disques et partitions à surveiller" - -msgid "Monitor filesystem types" -msgstr "types de systèmes de fichier à surveiller" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Hôtes à surveiller" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "Surveiller les interruptions" - -msgid "Monitor local ports" -msgstr "Surveiller les ports locaux" - -msgid "Monitor mount points" -msgstr "Points de montage à surveiller" - -msgid "Monitor processes" -msgstr "Processus à surveiller" - -msgid "Monitor remote ports" -msgstr "Surveiller les ports destinataires" - -msgid "Name of the rule" -msgstr "Nom de la règle" - -msgid "Netlink" -msgstr "" - -msgid "Netlink Plugin Configuration" -msgstr "Configuration du greffon du lien-réseau" - -msgid "Network" -msgstr "Réseau" - -msgid "Network Plugin Configuration" -msgstr "Configuration du greffon réseau" - -msgid "Network plugins" -msgstr "Greffons liés au réseau" - -msgid "Network protocol" -msgstr "Protocole réseau" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Nombre de fils pour la récupération des données" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "Créer seulement des RRAs moyens" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Options" - -msgid "Outgoing interface" -msgstr "Interface sortante" - -msgid "Output plugins" -msgstr "Greffons liés aux résultats" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Configuration du greffon Ping" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Processus" - -msgid "Processes Plugin Configuration" -msgstr "Configuration du greffon des processus" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "Processeur" - -msgid "Qdisc monitoring" -msgstr "Surveillance Qdisc" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "Intervalle de la pulsation RRD" - -msgid "RRD step interval" -msgstr "Intervalle d'avancement RRD" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "Configuration du greffon RRDTool" - -msgid "Rows per RRA" -msgstr "Lignes par RRA" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "Secondes" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Hôte du serveur" - -msgid "Server port" -msgstr "Port du serveur" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Surveillance liées à la priorité" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "plage réseau source" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "Répertoire de stockage" - -msgid "Storage directory for the csv files" -msgstr "Répertoire de stockage pour les fichiers CSV" - -msgid "Store data values as rates instead of absolute values" -msgstr "Stocke les données sous forme de taux plutôt que de valeurs absolues" - -msgid "Stored timespans" -msgstr "Durée de la période enregistrée" - -msgid "System Load" -msgstr "Charge-système" - -msgid "TCP Connections" -msgstr "Connexions TCP" - -msgid "TCPConns Plugin Configuration" -msgstr "Configuration du plugin des connexions TCP" - -msgid "TTL for network packets" -msgstr "TTL des paquets-réseau" - -msgid "TTL for ping packets" -msgstr "TTL des paquets ping" - -msgid "Table" -msgstr "Table" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "Le greffon sur le CPU récupère des données sur l'usage du processeur." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"Le greffon CSV stocke les données collectées dans des fichiers au format CSV " -"pour être traités ultérieurement par des programmes externes." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"Le plugin DF récupère des données sur l'utilisation de l'espace-disque sur " -"différents périphériques, points de montage ou types de systèmes de fichiers." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"Le greffon Disque récupère des informations détaillées sur des disques ou " -"partitions sélectionnées." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"Le greffon DNS récupère des données détaillées à propos du trafic lié au DNS " -"sur des interfaces sélectionnées." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"Le greffon des courriels crée une socket UNIX qui peut être utilisée pour " -"transmettre des données sur les courriels à un démon collectd en fonction. " -"Ce greffon est d'abord destiné à être utilisé avec Mail::SpamAssasin::" -"Plugin::Collectd mais peut être utilisé d'autres manières également." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"Le greffon Exec lance des commandes externes pour lire des valeurs ou " -"notifie des processus externes quand certains seuils ont été atteints." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"Ce greffon des interfaces collecte des statistiques de trafic sur les " -"interfaces sélectionnées." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"Le greffon IPtables surveillera des règles de pare-feu sélectionnées et " -"collectera des informations sur les octets et paquets IP traités par chaque " -"règle." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"Le greffon IRG surveillera le taux d'apparitions par seconde de chaque " -"interruption sélectionnée. Si aucune interruption n'est sélectionnée, toutes " -"sont surveillées." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" -"Le greffon de charge-système collecte des données sur la charge générale du " -"système." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"Le greffon de lien-réseau récupère sur les interfaces sélectionnées des " -"informations avancées liées à la QOS, aux classes et au filtrage." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"Le greffon réseau fournit des communications-réseau entre différentes " -"instances collectd : ce programme peut fonctionner à la fois comme client et " -"serveur. En mode client, les données collectées localement sont transférées " -"à un serveur, en mode serveur, l'instance collectd locale reçoit des " -"informations d'autres hôtes." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"Le greffon ping envoie des paquets ICMP « echo reply » aux hôtes définis et " -"mesure le temps d'aller-retour avec chacun." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"Le greffon des processus récupère des informations comme le temps CPU, les " -"défauts de page et l'utilisation mémoire des processus définis." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"Le greffon RRDTool stocke les informations récupérées dans des fichiers de " -"base de données RRD, sur lesquels s'appuient la génération de graphes.

    Attention : Un mauvais paramètrage peut entraîner une très " -"grande consommation mémoire dans le répertoire temporaire, qui peut rendre " -"le matériel inutilisable !" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"Le greffon des connexions TCP récupère des informations sur les ouvertures " -"de connexions TCP sur les ports spécifiés." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Cette section définit sur quelles interfaces collectd écoutera des " -"connexions entrantes." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"Cette section définit à quels serveurs sont envoyées les données collectées " -"localement." - -msgid "Try to lookup fully qualified hostname" -msgstr "Tente de récupérer des noms d'hôtes complètement qualifiés" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "Socket Unix" - -msgid "Unixsock Plugin Configuration" -msgstr "Configuration du greffon de socket Unix" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Fichier PID utilisé" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "Surveillance verbeuse" - -msgid "Wireless" -msgstr "Sans-fil" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "p.ex. br-ff" - -msgid "e.g. br-lan" -msgstr "p.ex. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "p.ex. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "Max. 16 caractères" - -msgid "reduces rrd size" -msgstr "Diminuer la taille RRD" - -msgid "seconds; multiple separated by space" -msgstr "En secondes ; séparer différentes valeurs par des espaces" - -msgid "server interfaces" -msgstr "Interfaces du serveur" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Greffons liés au système" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "Ce paquet d'outils statistiques s'appuie sur le logiciel Collectd et utilise RRD Tool pour calculer les graphes issus des " -#~ "données collectées." - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "Le greffon sans-fil récupère des informations sur la puissance du signal " -#~ "wifi, sa qualité et sur le bruit." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Configuration du greffon sans-fil" diff --git a/package/luci/applications/luci-app-statistics/po/he/rrdtool.po b/package/luci/applications/luci-app-statistics/po/he/rrdtool.po deleted file mode 100644 index 32b74f7598..0000000000 --- a/package/luci/applications/luci-app-statistics/po/he/rrdtool.po +++ /dev/null @@ -1,356 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/he/statistics.po b/package/luci/applications/luci-app-statistics/po/he/statistics.po deleted file mode 100644 index 35f978ed20..0000000000 --- a/package/luci/applications/luci-app-statistics/po/he/statistics.po +++ /dev/null @@ -1,741 +0,0 @@ -# statistics.pot -# generated from ./applications/luci-statistics/luasrc/i18n/statistics.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-10 04:59+0200\n" -"Last-Translator: Snoof \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "" - -msgid "Add command for reading values" -msgstr "הוסף פקודה לקריאת נתונים" - -msgid "Add matching rule" -msgstr "" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "" - -msgid "Basic monitoring" -msgstr "" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "" - -msgid "CSV Output" -msgstr "" - -msgid "CSV Plugin Configuration" -msgstr "" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS Plugin Configuration" -msgstr "" - -msgid "Data collection interval" -msgstr "" - -msgid "Datasets definition file" -msgstr "" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "" - -msgid "Directory for sub-configurations" -msgstr "" - -msgid "Disk Plugin Configuration" -msgstr "" - -msgid "Disk Space Usage" -msgstr "" - -msgid "Disk Usage" -msgstr "" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "" - -msgid "E-Mail Plugin Configuration" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "" - -msgid "Exec Plugin Configuration" -msgstr "" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "" - -msgid "Ignore source addresses" -msgstr "" - -msgid "Incoming interface" -msgstr "" - -msgid "Interface Plugin Configuration" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interrupts" -msgstr "" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "" - -msgid "Monitor disks and partitions" -msgstr "" - -msgid "Monitor filesystem types" -msgstr "" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "" - -msgid "Monitor local ports" -msgstr "" - -msgid "Monitor mount points" -msgstr "" - -msgid "Monitor processes" -msgstr "" - -msgid "Monitor remote ports" -msgstr "" - -msgid "Name of the rule" -msgstr "" - -msgid "Netlink" -msgstr "" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "" - -msgid "Network protocol" -msgstr "" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Outgoing interface" -msgstr "" - -msgid "Output plugins" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Qdisc monitoring" -msgstr "" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "" - -msgid "Server port" -msgstr "" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "" - -msgid "Storage directory for the csv files" -msgstr "" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "" - -msgid "TCP Connections" -msgstr "" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "" - -msgid "TTL for ping packets" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "" - -msgid "Unixsock Plugin Configuration" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "" - -msgid "e.g. br-lan" -msgstr "" - -msgid "e.g. reject-with tcp-reset" -msgstr "" - -msgid "max. 16 chars" -msgstr "" - -msgid "reduces rrd size" -msgstr "" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/hu/rrdtool.po b/package/luci/applications/luci-app-statistics/po/hu/rrdtool.po deleted file mode 100644 index 582c939eb6..0000000000 --- a/package/luci/applications/luci-app-statistics/po/hu/rrdtool.po +++ /dev/null @@ -1,359 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-01 10:38+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Vezetéknélküli - Jel-zaj arány" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Zajszint" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Jelerősség" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Vezetéknélküli - Jel minőség" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Jelminőség" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: ICMP oda-vissza idő" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Tűzfal - feldolgozott csomagok" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "csomag/másodperc" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Lánc \\\"%di\\\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - %pi forgalma" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "bájt/másodperc" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "bájtok (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - %pi csomagjai" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "csomag/másodperc" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "feldolgozva (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "eldobva (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "hibák (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - multicast %pi-n" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "csomag/másodperc" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "csomagok" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - ütközések %pi-n" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "ütközés/másodperc" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Ütközések" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - hibák %pi-n" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "hiba/másodperc" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Folyamatok" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "folyamat/másodperc" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Folyamat %pi - processzor idő" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "jiffie-k" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "rendszer" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "felhasználó" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Folyamat %pi - szálak és folyamatok" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "darab" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Folyamat %pi - laphibák" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Laphibák" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "laphibák" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Folymat %pi - virtuális memória mérete" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bájtok" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "virtuális memória" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: %pi processzor kihasználtsága" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: %di forgalma" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "bájt/másodperc" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: %di csomagjai" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "csomag/másodperc" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: TCP kapcsolatok a %pi portra" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "kapcsolat/másodperc" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: lemezterület felhasználás %di-n" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "bájt" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: megszakítások" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "darab/másodperc" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: Rendszer terhelés" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Terhelés" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 perc" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 perc" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 perc" diff --git a/package/luci/applications/luci-app-statistics/po/hu/statistics.po b/package/luci/applications/luci-app-statistics/po/hu/statistics.po deleted file mode 100644 index e5c4e601cb..0000000000 --- a/package/luci/applications/luci-app-statistics/po/hu/statistics.po +++ /dev/null @@ -1,848 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-01-31 18:58+0200\n" -"Last-Translator: Sixtus \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Tevékenység (cél)" - -msgid "Add command for reading values" -msgstr "Érték olvasására szolgáló parancs hozzáadása" - -msgid "Add matching rule" -msgstr "Szabály hozzáadása" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "Értesítési parancs hozzáadása" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Alapkönyvtár" - -msgid "Basic monitoring" -msgstr "Általános figyelés" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "CPU bővítmény beállítása" - -msgid "CSV Output" -msgstr "CSV kimenet" - -msgid "CSV Plugin Configuration" -msgstr "CSV bővítmény konfigurálása" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "Gyorsítótár ürítési időköz" - -msgid "Chain" -msgstr "Lánc" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Collectd beállítások" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"A collectd változatos forrásokból különféle bővítményeken keresztül történő " -"adatgyűjtésre szolgáló kisméretű démon. Ezen az oldalon módosíthatja a " -"collectd démon általános beállításait." - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "Conntrack bővítmény beállítása" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "DF bővítmény beállítása" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "DNS bővítmény beállítása" - -msgid "Data collection interval" -msgstr "Adatgyűjtési időszak" - -msgid "Datasets definition file" -msgstr "Adatkészlet leíró fálj" - -msgid "Destination ip range" -msgstr "Cél IP tartomány" - -msgid "Directory for collectd plugins" -msgstr "Öszegyűjtött plug-in-ek könyvtára" - -msgid "Directory for sub-configurations" -msgstr "Al-beállítások könyvtára" - -msgid "Disk Plugin Configuration" -msgstr "Lemez bővítmény beállítása" - -msgid "Disk Space Usage" -msgstr "Felhasznált lemezterület" - -msgid "Disk Usage" -msgstr "Lemezhasználat" - -msgid "Display Host »" -msgstr "Host mutatása »" - -msgid "Display timespan »" -msgstr "Időszak megjelenítése »" - -msgid "E-Mail Plugin Configuration" -msgstr "E-Mail bővítmény beállítása" - -msgid "Email" -msgstr "E-mail" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Bővítmény engedélyezése" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Exec bővítmény beállítása" - -msgid "Filter class monitoring" -msgstr "Szűrő osztály figyelése" - -msgid "Firewall" -msgstr "Tűzfal" - -msgid "Flush cache after" -msgstr "Gyorsítótár ürítése ezután:" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Grafikonok" - -msgid "Group" -msgstr "Csoport" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Itt megadhatók külső parancsok amelyek a collectd által lesznek futtatva " -"bizonyos értékeke beolvasására. Az értékek a szabványos kimenetről lesznek " -"beolvasva." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Itt megadhatók külső parancsok amelyek a collectd által lesznek futtatva " -"amikor bizonyos küszbértékek elérésre kerülnek. A hívást kiváltó értékek a " -"meghívott programok szabványos bemenetére lesznek küldve." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Itt addhatók meg különböző feltételek, amelyek alapján a megfigyelt iptables " -"szabályok kiválasztásra kerülnek." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "Gép" - -msgid "Hostname" -msgstr "Gépnév" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" -"Annak a gépnek a neve vagy IP címe ahonnan a txtinfo kimenete származik" - -msgid "IRQ Plugin Configuration" -msgstr "IRQ bővítmény beállítása" - -msgid "Ignore source addresses" -msgstr "Forrás címek figyelmen kívül hagyása" - -msgid "Incoming interface" -msgstr "Bejövő interfész" - -msgid "Interface Plugin Configuration" -msgstr "Interfész bővítmény beállítása" - -msgid "Interfaces" -msgstr "Interfészek" - -msgid "Interrupts" -msgstr "Megszakítások" - -msgid "Interval for pings" -msgstr "Ping-ek közötti idő" - -msgid "Iptables Plugin Configuration" -msgstr "Iptables bővítmény beállítása" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" -"Bejelölés nélkül a figyelendő iterfészek automatikusan kerülnek " -"kiválasztásra." - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "Terhelés bővítmény beállítása" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Megengedett kapcsolatok maximális száma" - -msgid "Memory" -msgstr "Memória" - -msgid "Memory Plugin Configuration" -msgstr "Memória bővítmény beállítása" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Eszközök figyelése" - -msgid "Monitor disks and partitions" -msgstr "Lemezek és partíciók figyelése" - -msgid "Monitor filesystem types" -msgstr "Fájlrendszer típusok figyelése" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Gépek figyelése" - -msgid "Monitor interfaces" -msgstr "Interfészek figyelése" - -msgid "Monitor interrupts" -msgstr "Megszakítások figyelése" - -msgid "Monitor local ports" -msgstr "Helyi portok figyelése" - -msgid "Monitor mount points" -msgstr "Csatolási pontok figyelése" - -msgid "Monitor processes" -msgstr "Folyamatok figyelése" - -msgid "Monitor remote ports" -msgstr "Távoli portok figyelése" - -msgid "Name of the rule" -msgstr "A szabály neve" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Netlink bővítmény beállítása" - -msgid "Network" -msgstr "Hálózat" - -msgid "Network Plugin Configuration" -msgstr "Hálózat bővítmény beállítása" - -msgid "Network plugins" -msgstr "Hálózati bővítmények" - -msgid "Network protocol" -msgstr "Hálózati protokoll" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Az adatgyűjtő szálak száma" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "OLSRd bővítmény beállítása" - -msgid "Only create average RRAs" -msgstr "Csak átlag RRA-k létrehozása" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Lehetőségek" - -msgid "Outgoing interface" -msgstr "Kimenő interfész" - -msgid "Output plugins" -msgstr "Kimeneti bővítmények" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Ping bővítmény beállítása" - -msgid "Port" -msgstr "Port" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Folyamatok" - -msgid "Processes Plugin Configuration" -msgstr "Folyamatok bővítmény beállítása" - -msgid "Processes to monitor separated by space" -msgstr "Figyelendő folyamatok szóközzel elválasztva" - -msgid "Processor" -msgstr "Processzor" - -msgid "Qdisc monitoring" -msgstr "Qdisc figyelés" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "RRDTool bővítmény beállítása" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "Parancsfájl" - -msgid "Seconds" -msgstr "másodperc" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Kiszolgáló gép" - -msgid "Server port" -msgstr "Kiszolgáló port" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "Socket fájlok" - -msgid "Socket group" -msgstr "Socket csoport" - -msgid "Socket permissions" -msgstr "Socket jogosultságok" - -msgid "Source ip range" -msgstr "Forrás IP tartomány" - -msgid "Specifies what information to collect about links." -msgstr "" -"Azt határozza meg, hogy az kapcsolatokról milyen információkat kell gyűjteni." - -msgid "Specifies what information to collect about routes." -msgstr "" -"Azt határozza meg, hogy az útvonalakról milyen információkat kell gyűjteni." - -msgid "Specifies what information to collect about the global topology." -msgstr "" -"Azt határozza meg, hogy a globális topológiáról milyen információkat kell " -"gyűjteni." - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Statisztikák" - -msgid "Storage directory" -msgstr "Tárolási könyvtár" - -msgid "Storage directory for the csv files" -msgstr "A csv fájlok tárolási könyvtára" - -msgid "Store data values as rates instead of absolute values" -msgstr "Az adatok arányként történő tárolása abszolút értékek helyett" - -msgid "Stored timespans" -msgstr "Tárolt időszakok" - -msgid "System Load" -msgstr "Rendszerterhelés" - -msgid "TCP Connections" -msgstr "TCP kapcsolatok" - -msgid "TCPConns Plugin Configuration" -msgstr "TCPConns bővítény beállítása" - -msgid "TTL for network packets" -msgstr "TTL a hálózati csomagokhoz" - -msgid "TTL for ping packets" -msgstr "TTL a ping csomagokhoz" - -msgid "Table" -msgstr "Táblázat" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "A NUT bővítmény a szünetmentes tápokról ad információkat." - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" -"Az OLSRd bővítmény a összekapcsolt hálózatokról olvas információkat az OLSRd " -"txttinfo bővítményén keresztül." - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" -"A conntrack bővítmény a nyomon követett kapcsolatok számáról gyűjt " -"statisztikákat." - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" -"A processzor bővítmény a processzorhasználatról gyűjt alapvető " -"statisztikákat." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"A csv bővítmény segítségével az összegyűjtött adatok csv formátumú fájlba " -"menthetők külső programmal történő további feldolgozás céljára." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"A df bővítmény a lemezterület használatáról gyűjt statisztikákat különböző " -"eszközökön, csatolási pontokon vagy fájlrendszereken." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"A lemez bővítmény részletes használati statisztikákat készít a kiválasztott " -"paticiókhoz vagy teljes lemezekhez." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"A DNS bővítmény részletes adatokat gyűjt a kiválasztott interfészek DNS-hez " -"tartozó forgalmáról." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"Az email bővítmény egy unix socket-et hoz létre amely lehetővé teszi email-" -"statisztikáknak a továbbítását egy futó collect démonhoz. A bővítmény " -"elsősorban a Mail::SpamAssasin::Plugin::Collectd bővítménnyel együtt történő " -"használatra szolgál, de egyéb módokon is használható." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"Az exec bővítmény külső parancsokat indít értékek olvasására vagy külső " -"folyamatok értesítésére bizonyos küszöbértékek elérése esetén." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"Az interface bővítmény forgalmi statisztikákat gyűjt a kiválasztott " -"interfészekről." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"Az iptables bővítmény kiválasztott tűzfal szabályok alapján információt " -"gyűjt a szabályonként feldolgozott bájtokról és csomagokról." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" -"A load bővítmény az általános rendszzer terhelésről gyűjt statisztikákat." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "A memória bővítmény a memórahasználatról gyűjt információkat." - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"A ping bővítmény ICMP echo kéréseket küld a kiválasztott gépekre és méri az " -"oda-vissza eltelt időt minden gép esetében." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"A tcpconns bővítmény a kiválasztott portokon lévő TCP kapcsolatokról gyűjt " -"információkat." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"A unixsock bővítmény létrehoz egy unix socket-et melyen keresztül " -"kiolvashatók az összegyűjtött adatok egy futó collectd-ből. " - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"Ez a szakasz határozza meg, hogy a helyileg összegyűjtött adatokat melyik " -"kiszolgálókra kell továbbítani." - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "UnixSock bővítmény beállítása" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Használt PID fájl" - -msgid "User" -msgstr "Felhasználó" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "Vezeték nélküli" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "iwinfo vezeték nélküli bővítmény beállítása" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "pl. br-ff" - -msgid "e.g. br-lan" -msgstr "pl. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "pl. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "max. 16 karakter" - -msgid "reduces rrd size" -msgstr "csökkenti az rrd adatbázis méretét" - -msgid "seconds; multiple separated by space" -msgstr "másodpercek; több szóközzel elválasztott érték is megadható" - -msgid "server interfaces" -msgstr "kiszolgáló interfész" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Rendszer bővítmények" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "A statisztikai csomag a collectd segédprogramon alapul és az RRD Tool segédprogramot használja a grafikonok " -#~ "elkészítésére az összegyűjtött adatokból." - -#~ msgid "Installed network plugins:" -#~ msgstr "Telepített hálózati bővítmények:" - -#~ msgid "Installed output plugins:" -#~ msgstr "Telepített kimeneti bővítmények:" - -#~ msgid "" -#~ "Network plugins are used to collect information about open tcp " -#~ "connections, interface traffic, iptables rules etc." -#~ msgstr "" -#~ "A hálózati bővítmények nyitott TCP kapcsolatok, interfész forgalom, " -#~ "iptables szabályok és ehhez hasonló információk gyűjtésére használhatók." - -#~ msgid "" -#~ "Output plugins provide different possibilities to store collected data. " -#~ "It is possible to enable multiple plugin at one, for example to store " -#~ "collected data in rrd databases and to transmit the data over the network " -#~ "to other collectd instances." -#~ msgstr "" -#~ "A kimeneti bővítmények különféle lehetőségeket biztosítanak az " -#~ "összegyűjtött adatok tárolásához. Lehetőség van többféle bővítmény " -#~ "egyidejű engedélyezésére, például az összegyűjtött adatok RRD " -#~ "adatbázisban történő tárolására és egyidejűleg hálózaton keresztül másik " -#~ "collectd példányhoz való továbbítására." - -#~ msgid "" -#~ "System plugins collecting values about system state and ressource usage " -#~ "on the device.:" -#~ msgstr "" -#~ "A rendszer bővítmények a rendszer állapotáról és az erőforrások " -#~ "használatáról gyűjtenek adatokat az eszközön." - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "A vezetéknélküli bővítmény vezetéknélküli jelerősségről, zajról és " -#~ "minőségről gyűjt információkat." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Vezetéknélküli bővítmény beállítása" diff --git a/package/luci/applications/luci-app-statistics/po/it/rrdtool.po b/package/luci/applications/luci-app-statistics/po/it/rrdtool.po deleted file mode 100644 index 8ae44722f8..0000000000 --- a/package/luci/applications/luci-app-statistics/po/it/rrdtool.po +++ /dev/null @@ -1,359 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-02-03 14:50+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "stat_dg_title_wireless__signal_noise" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "stat_dg_label_wireless__signal_noise" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "stat_ds_signal_noise" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "stat_ds_signal_power" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "stat_dg_title_wireless__signal_quality" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "stat_dg_label_wireless__signal_quality" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "stat_ds_signal_quality" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "stat_dg_title_ping" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "stat_dg_label_ping" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "stat_ds_ping" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "stat_dg_title_iptables__ipt_packets" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "stat_dg_label_iptables__ipt_packets" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "stat_ds_ipt_packets" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "stat_dg_title_netlink__if_octets" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "stat_dg_label_netlink__if_octets" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "stat_ds_if_octets" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "stat_dg_title_netlink__if_packets" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "stat_dg_label_netlink__if_packets" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "stat_ds_if_packets" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "stat_ds_if_dropped" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "stat_ds_if_errors" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "stat_dg_title_netlink__if_multicast" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "stat_dg_label_netlink__if_multicast" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "stat_ds_if_multicast" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "stat_dg_title_netlink__if_collisions" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "stat_dg_label_netlink__if_collisions" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "stat_ds_if_collisions" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "stat_dg_title_netlink__if_tx_errors" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "stat_dg_label_netlink__if_tx_errors" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "stat_ds_if_tx_errors" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "stat_ds_if_rx_errors" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "stat_dg_title_processes" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "stat_dg_label_processes" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "stat_ds_ps_state" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "stat_dg_title_processes__ps_cputime" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "stat_dg_label_processes__ps_cputime" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "stat_ds_ps_cputime__syst" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "stat_ds_ps_cputime__user" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "stat_dg_title_processes__ps_count" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "stat_dg_label_processes__ps_count" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "stat_ds_ps_count" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "stat_dg_title_processes__ps_pagefaults" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "stat_dg_label_processes__ps_pagefaults" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "stat_ds_ps_pagefaults" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "stat_dg_title_processes__ps_rss" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "stat_dg_label_processes__ps_rss" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "stat_ds_ps_rss" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "stat_dg_title_cpu" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "stat_dg_label_cpu" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "stat_ds_cpu" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "stat_dg_title_interface__if_octets" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "stat_dg_label_interface__if_octets" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "stat_dg_title_interface__if_packets" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "stat_dg_label_interface__if_packets" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "stat_dg_title_tcpconns" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "stat_dg_label_tcpconns" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "stat_ds_tcp_connections" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "stat_dg_title_df" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "stat_dg_label_df" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "stat_ds_df__free" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "stat_ds_df__used" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "stat_dg_title_irq" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "stat_dg_label_irq" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "stat_ds_irq" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "stat_dg_title_load" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "stat_dg_label_load" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "stat_ds_load__shortterm" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "stat_ds_load__midterm" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "stat_ds_load__longterm" diff --git a/package/luci/applications/luci-app-statistics/po/it/statistics.po b/package/luci/applications/luci-app-statistics/po/it/statistics.po deleted file mode 100644 index 2451503f23..0000000000 --- a/package/luci/applications/luci-app-statistics/po/it/statistics.po +++ /dev/null @@ -1,751 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2014-08-05 11:41+0200\n" -"Last-Translator: morganfw \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Azione (destinazione)" - -msgid "Add command for reading values" -msgstr "" - -msgid "Add matching rule" -msgstr "" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "" - -msgid "Basic monitoring" -msgstr "" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "" - -msgid "CSV Output" -msgstr "" - -msgid "CSV Plugin Configuration" -msgstr "" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd è un piccolo demone usato per raccogliere dati da varie fonti " -"grazie a diversi plugin. Su questa pagina puoi cambiare le opzioni generali " -"del demone collectd." - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS Plugin Configuration" -msgstr "" - -msgid "Data collection interval" -msgstr "" - -msgid "Datasets definition file" -msgstr "" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "" - -msgid "Directory for sub-configurations" -msgstr "" - -msgid "Disk Plugin Configuration" -msgstr "" - -msgid "Disk Space Usage" -msgstr "" - -msgid "Disk Usage" -msgstr "" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "" - -msgid "E-Mail Plugin Configuration" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Abilita questo plugin" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "" - -msgid "Exec Plugin Configuration" -msgstr "" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Group" -msgstr "Gruppo" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Qui puoi definire un comando che sarà avviato da collectd per leggere dei " -"valori. Il valore sarà letto dallo stdout." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Qui puoi definire un comando che sarà avviato da collectd quando un certo " -"valore soglia sia raggiunto. Il valore in questione sarà passato al comando " -"incovato come stdin." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "" - -msgid "Ignore source addresses" -msgstr "" - -msgid "Incoming interface" -msgstr "" - -msgid "Interface Plugin Configuration" -msgstr "" - -msgid "Interfaces" -msgstr "Interfacce" - -msgid "Interrupts" -msgstr "" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" -"Lasciare deselezionato per determinare automaticamente l'interfaccia da " -"monitorare." - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "" - -msgid "Monitor disks and partitions" -msgstr "" - -msgid "Monitor filesystem types" -msgstr "" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "" - -msgid "Monitor local ports" -msgstr "" - -msgid "Monitor mount points" -msgstr "" - -msgid "Monitor processes" -msgstr "" - -msgid "Monitor remote ports" -msgstr "" - -msgid "Name of the rule" -msgstr "" - -msgid "Netlink" -msgstr "" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "" - -msgid "Network protocol" -msgstr "" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Outgoing interface" -msgstr "" - -msgid "Output plugins" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Qdisc monitoring" -msgstr "" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "" - -msgid "Server port" -msgstr "" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "" - -msgid "Storage directory for the csv files" -msgstr "" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "" - -msgid "TCP Connections" -msgstr "" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "" - -msgid "TTL for ping packets" -msgstr "" - -msgid "Table" -msgstr "Tabella" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "" - -msgid "Unixsock Plugin Configuration" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "" - -msgid "e.g. br-lan" -msgstr "" - -msgid "e.g. reject-with tcp-reset" -msgstr "" - -msgid "max. 16 chars" -msgstr "" - -msgid "reduces rrd size" -msgstr "" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/ja/rrdtool.po b/package/luci/applications/luci-app-statistics/po/ja/rrdtool.po deleted file mode 100644 index 95545db6d1..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ja/rrdtool.po +++ /dev/null @@ -1,358 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/ja/statistics.po b/package/luci/applications/luci-app-statistics/po/ja/statistics.po deleted file mode 100644 index 53941cf0f8..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ja/statistics.po +++ /dev/null @@ -1,816 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2017-01-24 15:08+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "アクション(対象)" - -msgid "Add command for reading values" -msgstr "値読み取りコマンドの追加" - -msgid "Add matching rule" -msgstr "マッチング規則の追加" - -msgid "Add multiple hosts separated by space." -msgstr "スペースで区切られた複数のホストを追加します。" - -msgid "Add notification command" -msgstr "通知コマンドの追加" - -msgid "Aggregate number of connected users" -msgstr "接続ユーザー数の総計" - -msgid "Base Directory" -msgstr "ベース・ディレクトリ" - -msgid "Basic monitoring" -msgstr "基本モニタリング" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "CPU 周波数" - -msgid "CPU Frequency Plugin Configuration" -msgstr "CPU 周波数プラグイン設定" - -msgid "CPU Plugin Configuration" -msgstr "CPU プラグイン設定" - -msgid "CSV Output" -msgstr "CSV 出力" - -msgid "CSV Plugin Configuration" -msgstr "CSV プラグイン設定" - -msgid "Cache collected data for" -msgstr "収集されたデータをキャッシュする" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "チェイン" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Collectd 設定" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd は、様々なソースから別々のプラグインを通してデータを収集する軽量デー" -"モンです。" - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "Conntrack プラグイン設定" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "DF プラグイン設定" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "DNS プラグイン設定" - -msgid "Data collection interval" -msgstr "データの収集間隔" - -msgid "Datasets definition file" -msgstr "データベース定義ファイル" - -msgid "Destination ip range" -msgstr "対象IPの範囲" - -msgid "Directory for collectd plugins" -msgstr "collectd プラグインディレクトリ" - -msgid "Directory for sub-configurations" -msgstr "サブ設定ディレクトリ" - -msgid "Disk Plugin Configuration" -msgstr "ディスクプラグイン設定" - -msgid "Disk Space Usage" -msgstr "ディスクスペース使用量" - -msgid "Disk Usage" -msgstr "ディスクの使用" - -msgid "Display Host »" -msgstr "ホストを表示 »" - -msgid "Display timespan »" -msgstr "時間帯表示 »" - -msgid "E-Mail Plugin Configuration" -msgstr "E-メールプラグイン設定" - -msgid "Email" -msgstr "Eメール" - -msgid "Empty value = monitor all" -msgstr "空の値 = 全てをモニターする" - -msgid "Enable this plugin" -msgstr "プラグイン設定を有効にする" - -msgid "Entropy" -msgstr "エントロピー" - -msgid "Entropy Plugin Configuration" -msgstr "エントロピー プラグイン設定" - -msgid "Exec" -msgstr "" - -msgid "Exec Plugin Configuration" -msgstr "Exec プラグイン設定" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "ファイアウォール" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "一般プラグイン" - -msgid "Generate a separate graph for each logged user" -msgstr "ログインユーザーごとの分離されたグラフを生成します。" - -msgid "Graphs" -msgstr "グラフ" - -msgid "Group" -msgstr "グループ" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"ここでは、特定の値を読み込むためにcollectによって順番に開始される外部コマンド" -"を設定することができます。値は標準出力から読み込まれます。" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"ここでは、特定の閾値に到達したときにcollectによって開始される外部コマンドを設" -"定することができます。呼び出しにつながる値は、呼び出されたプログラムの標準入" -"力に送られます。" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"ここでは、モニターするiptable規則が選択される様々な基準を設定することができま" -"す。" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "複数の項目を選択または解除するには、Ctrlキーを押したままにします。" - -msgid "Host" -msgstr "ホスト" - -msgid "Hostname" -msgstr "ホスト名" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "IRQ プラグイン設定" - -msgid "Ignore source addresses" -msgstr "無視するアクセス元アドレス" - -msgid "Incoming interface" -msgstr "着信インターフェース" - -msgid "Interface Plugin Configuration" -msgstr "インターフェース プラグイン設定" - -msgid "Interfaces" -msgstr "インターフェース" - -msgid "Interrupts" -msgstr "割込み" - -msgid "Interval for pings" -msgstr "ping間隔" - -msgid "Iptables Plugin Configuration" -msgstr "Iptables プラグイン設定" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" -"モニターするインターフェースを自動的に決定するには、未選択のままにします。" - -msgid "Listen host" -msgstr "待ち受けホスト" - -msgid "Listen port" -msgstr "待ち受けポート" - -msgid "Listener interfaces" -msgstr "待ち受けインターフェース" - -msgid "Load Plugin Configuration" -msgstr "負荷プラグイン設定" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" -"'RRAの平均のみ' を使用しないとき、平均値の代わりに一定期間の最大値を使用でき" -"ます。" - -msgid "Maximum allowed connections" -msgstr "許可された最大接続数" - -msgid "Memory" -msgstr "メモリー" - -msgid "Memory Plugin Configuration" -msgstr "メモリー プラグイン設定" - -msgid "Monitor all except specified" -msgstr "設定値以外の全てのインターフェースをモニターする" - -msgid "Monitor all local listen ports" -msgstr "ローカルの全待ち受けポートをモニターする" - -msgid "Monitor all sensors" -msgstr "全てのセンサーをモニターする" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "デバイスをモニターする" - -msgid "Monitor disks and partitions" -msgstr "ディスクとパーティションをモニターする" - -msgid "Monitor filesystem types" -msgstr "ファイルシステム タイプをモニターする" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "ホストをモニターする" - -msgid "Monitor interfaces" -msgstr "モニターするインターフェースの設定" - -msgid "Monitor interrupts" -msgstr "割込みをモニターする" - -msgid "Monitor local ports" -msgstr "ローカルのポートをモニターする" - -msgid "Monitor mount points" -msgstr "マウントポイントをモニターする" - -msgid "Monitor processes" -msgstr "プロセスをモニターする" - -msgid "Monitor remote ports" -msgstr "リモートのポートをモニターする" - -msgid "Name of the rule" -msgstr "ルール名" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Netlink プラグイン設定" - -msgid "Network" -msgstr "ネットワーク" - -msgid "Network Plugin Configuration" -msgstr "ネットワークプラグイン設定" - -msgid "Network plugins" -msgstr "ネットワークプラグイン" - -msgid "Network protocol" -msgstr "ネットワークプロトコル" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" -"注意: ページは 'nobody' ユーザーとしてレンダリングされます。*.rrd ファイルと" -"保存先ディレクトリ、およびそのペアレントディレクトリは、worldアクセス権が " -"\"読み取り可能\" に設定されている必要があります。" - -msgid "Number of threads for data collection" -msgstr "データ収集用スレッド数" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "OLSRd プラグイン設定" - -msgid "Only create average RRAs" -msgstr "平均値のRRAsのみ作成する" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN Plugin Configuration" -msgstr "OpenVPN プラグイン設定" - -msgid "OpenVPN status files" -msgstr "OpenVPN ステータスファイル" - -msgid "Options" -msgstr "オプション" - -msgid "Outgoing interface" -msgstr "送信インターフェース" - -msgid "Output plugins" -msgstr "出力プラグイン" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Ping プラグイン設定" - -msgid "Port" -msgstr "ポート" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "プロセス" - -msgid "Processes Plugin Configuration" -msgstr "プロセス プラグイン設定" - -msgid "Processes to monitor separated by space" -msgstr "スペースで区切られた、モニターするプロセスです。" - -msgid "Processor" -msgstr "プロセッサー" - -msgid "Qdisc monitoring" -msgstr "Qdisc モニタリング" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "RRD ハートビート間隔" - -msgid "RRD step interval" -msgstr "RRD stepインターバル" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "RRDTool プラグイン設定" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "スクリプト" - -msgid "Seconds" -msgstr "秒" - -msgid "Sensor list" -msgstr "センサー一覧" - -msgid "Sensors" -msgstr "センサー" - -msgid "Sensors Plugin Configuration" -msgstr "センサー プラグイン設定" - -msgid "Server host" -msgstr "サーバー ホスト" - -msgid "Server port" -msgstr "サーバー ポート" - -msgid "Setup" -msgstr "設定" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "平均値の代わりに最大値を表示する" - -msgid "Socket file" -msgstr "ソケット ファイル" - -msgid "Socket group" -msgstr "ソケット グループ" - -msgid "Socket permissions" -msgstr "ソケット パーミッション" - -msgid "Source ip range" -msgstr "ソースIPの範囲" - -msgid "Specifies what information to collect about links." -msgstr "リンクについて、どのような情報を収集するか設定します。" - -msgid "Specifies what information to collect about routes." -msgstr "ルートについて、どのような情報を収集するか設定します。" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "統計" - -msgid "Storage directory" -msgstr "保存先ディレクトリ" - -msgid "Storage directory for the csv files" -msgstr "CSVファイルの保存先ディレクトリ" - -msgid "Store data values as rates instead of absolute values" -msgstr "データ値を絶対値の代わりにレートとして保存します。" - -msgid "Stored timespans" -msgstr "保存する期間の範囲" - -msgid "System Load" -msgstr "システム負荷" - -msgid "TCP Connections" -msgstr "TCP 接続" - -msgid "TCPConns Plugin Configuration" -msgstr "TCP接続プラグイン設定" - -msgid "TTL for network packets" -msgstr "ネットワークパケットのTTL" - -msgid "TTL for ping packets" -msgstr "pingパケットのTTL" - -msgid "Table" -msgstr "テーブル" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "NUT プラグインは、無停電電源装置についての情報を読み取ります。" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" -"OpenVPN プラグインは、現在のVPN接続ステータスについての情報を収集します。" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "Conntrack プラグインは、追跡された接続の数についての統計を収集します。" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "CPU プラグインは、プロセッサー使用についての基本的な統計を収集します。" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"CSV プラグインは、外部プログラムがさらに利用するために、収集されたデータをCSV" -"ファイル形式で保存します。" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"df プラグインは、個別のデバイスまたはマウントポイント、ファイルシステム形式の" -"ディスク使用量についての統計を収集します。" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"ディスク プラグインは、選択されたパーティションまたはディスク全体の詳細な使用" -"統計を収集します。" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"DNS プラグインは、選択されたインターフェースでのDNSに関連したトラフィックにつ" -"いての詳細な統計を収集します。" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"Eメール プラグインは、実行中のcollectd デーモンへの電子メール統計の送信に利用" -"可能なUNIX ソケットを作成するプラグインです。このプラグインは、メール、" -"SpamAssasin、プラグイン、Collectdを一緒に使うことを主に意図していますが、ほか" -"の方法にも同様に使用することができます。" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" -"エントロピー プラグインは、利用可能なエントロピーについての統計を収集します。" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"Exec プラグインは、特定の閾値に到達したときに外部プロセスから値の読み込み、も" -"しくは外部プロセスへ通知する外部コマンドを開始します。" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"インターフェースプラグインは、選択したインターフェースのトラフィックの統計情" -"報を収集します。" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"iptables プラグインは、選択されたファイアウォール規をモニターし、規則ごとの処" -"理されたバイト数とパケット数についての情報を収集します。" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"IRQ プラグインは、選択された割り込みごとに1秒当たりの発行レートをモニターしま" -"す。選択された割り込みが無い場合、すべての割り込みがモニターされます。" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" -"iwinfo プラグインは、無線信号強度、ノイズ、クオリティ情報を収集します。" - -msgid "The load plugin collects statistics about the general system load." -msgstr "負荷プラグインは、システム負荷の統計情報を収集します。" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "メモリー プラグインは、メモリー使用についての統計を収集します。" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"Netlink プラグインは、選択されたインターフェースの qdisc- や class- 、filter-" -"statistics のような拡張的な情報を収集します。" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"ネットワークプラグインは、異なるcollectd間のネットワークベースの通信を提供し" -"ます。collectdは、クライアントモードとサーバーモードの両方で動作することがで" -"きます。クライアントモードでは、ローカルの収集データはcollectdサーバーに転送" -"され、サーバーモードではローカルのインスタンスは他のホストからデータを受信し" -"ます。" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"ping プラグインは、ICMP Echo Replyを選択されたホストに送信し、各ホストとの往" -"復時間を計測します。" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"プロセス プラグインは、選択されたプロセスのCPU時間やページフォルト、メモリー" -"使用率などの情報を収集します。" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"rrdtool プラグインは、収集したデータをrrd データベースファイルに保存します。" -"これが統計図の基礎です。

    警告: 間違った値を設定すると、一" -"時的なディレクトリによってメモリー消費量が非常に高くなります。これはデバイス" -"を使用不能にする可能性があります!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" -"センサー プラグインは、環境統計の収集に Linux センサーフレームワークを使用し" -"ます。" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" -"statistics パッケージは、データの収集にCollectdを、統計図のレンダリングにRRDtoolを使用します。" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"TCP接続プラグインは、選択されたポートにおいてオープンなTCP接続についての情報" -"を収集します。" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "サーマル プラグインは、システムの温度をモニターします。" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"unixsock プラグインは、実行中のcollectd インスタンスから収集データの読み取り" -"に使用可能なUNIX ソケットを作成します。" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "稼働時間 プラグインは、システムの稼働時間についての統計を収集します。" - -msgid "Thermal" -msgstr "サーマル" - -msgid "Thermal Plugin Configuration" -msgstr "サーマル プラグイン設定" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" -"このプラグインは、プロセッサー周波数スケーリングについての統計を収集します。" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"このセクションでは、collectdが着信接続を待ち受けるインターフェースを設定しま" -"す。" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"このセクションでは、ローカルに収集されたデータを送信するサーバーを設定しま" -"す。" - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "UPS" - -msgid "UPS Plugin Configuration" -msgstr "UPS プラグイン設定" - -msgid "UPS name in NUT ups@host format" -msgstr "ups@host 形式のNUT内のUPS名" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Unixsock プラグイン設定" - -msgid "Uptime" -msgstr "稼働時間" - -msgid "Uptime Plugin Configuration" -msgstr "稼働時間プラグイン設定" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "使用するPIDファイルの保存場所" - -msgid "User" -msgstr "ユーザー" - -msgid "Verbose monitoring" -msgstr "詳細モニタリング" - -msgid "Wireless" -msgstr "無線" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "無線LAN iwinfo プラグイン設定" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" -"追加の collectd-mod-* プラグインをインストールすることで、より多くの統計を有" -"効にできます。" - -msgid "e.g. br-ff" -msgstr "例: br-ff" - -msgid "e.g. br-lan" -msgstr "例: br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "例: reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "最大16文字" - -msgid "reduces rrd size" -msgstr "rrdファイルのサイズを小さくします。" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "サーバー インターフェース" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "システムプラグイン" diff --git a/package/luci/applications/luci-app-statistics/po/ms/rrdtool.po b/package/luci/applications/luci-app-statistics/po/ms/rrdtool.po deleted file mode 100644 index 1f81fc669a..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ms/rrdtool.po +++ /dev/null @@ -1,355 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/ms/statistics.po b/package/luci/applications/luci-app-statistics/po/ms/statistics.po deleted file mode 100644 index c02556fc86..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ms/statistics.po +++ /dev/null @@ -1,738 +0,0 @@ -# statistics.pot -# generated from ./applications/luci-statistics/luasrc/i18n/statistics.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "" - -msgid "Add command for reading values" -msgstr "" - -msgid "Add matching rule" -msgstr "" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "" - -msgid "Basic monitoring" -msgstr "" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "" - -msgid "CSV Output" -msgstr "" - -msgid "CSV Plugin Configuration" -msgstr "" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS Plugin Configuration" -msgstr "" - -msgid "Data collection interval" -msgstr "" - -msgid "Datasets definition file" -msgstr "" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "" - -msgid "Directory for sub-configurations" -msgstr "" - -msgid "Disk Plugin Configuration" -msgstr "" - -msgid "Disk Space Usage" -msgstr "" - -msgid "Disk Usage" -msgstr "" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "" - -msgid "E-Mail Plugin Configuration" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "" - -msgid "Exec Plugin Configuration" -msgstr "" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "" - -msgid "Ignore source addresses" -msgstr "" - -msgid "Incoming interface" -msgstr "" - -msgid "Interface Plugin Configuration" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interrupts" -msgstr "" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "" - -msgid "Monitor disks and partitions" -msgstr "" - -msgid "Monitor filesystem types" -msgstr "" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "" - -msgid "Monitor local ports" -msgstr "" - -msgid "Monitor mount points" -msgstr "" - -msgid "Monitor processes" -msgstr "" - -msgid "Monitor remote ports" -msgstr "" - -msgid "Name of the rule" -msgstr "" - -msgid "Netlink" -msgstr "" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "" - -msgid "Network protocol" -msgstr "" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Outgoing interface" -msgstr "" - -msgid "Output plugins" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Qdisc monitoring" -msgstr "" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "" - -msgid "Server port" -msgstr "" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "" - -msgid "Storage directory for the csv files" -msgstr "" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "" - -msgid "TCP Connections" -msgstr "" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "" - -msgid "TTL for ping packets" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "" - -msgid "Unixsock Plugin Configuration" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "" - -msgid "e.g. br-lan" -msgstr "" - -msgid "e.g. reject-with tcp-reset" -msgstr "" - -msgid "max. 16 chars" -msgstr "" - -msgid "reduces rrd size" -msgstr "" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/no/rrdtool.po b/package/luci/applications/luci-app-statistics/po/no/rrdtool.po deleted file mode 100644 index d336ec3dad..0000000000 --- a/package/luci/applications/luci-app-statistics/po/no/rrdtool.po +++ /dev/null @@ -1,354 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2013-03-25 14:24+0200\n" -"Last-Translator: protx \n" -"Language: no\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Trådløs - Signal Støy Forhold" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Støy Nivå" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Signal Styrke" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Trådløs - Signal Kvalitet" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Signal Kvalitet" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: ICMP Rundtur Antall" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Brannmur - Pakker Behandlet" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "Pakker/Sek" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Lenke \\\"%di\\\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - Overført på %pi" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "Bytes/Sek" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Bytes (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - Pakker på %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "Pakker/Sek" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Behandlet (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Droppet (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Feil (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - Multicast på %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "Pakker/Sek" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Pakker" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - Kollisjoner på %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "Kollisjoner/Sek" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Kollisjoner" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - Feil på %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "Feil/Sek" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Prosesser" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Prosesser/Sek" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Prosesser %pi - brukt cpu tid" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffier" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "system" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "bruker" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Prosess %pi - tråder og prosesser" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "Telle" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Prosess %pi - sidefeil" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Sidefeil" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "side feil" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Prosess %pi - virtuelt minne størrelse" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bytes" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "virtuelt minne" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Bruk av prosessor #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Overført på %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "Bytes/Sek" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Pakker på %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "Pakker/Sek" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: TCP-tilkoblinger på port %pi" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "Tilkoblinger/Sek" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Disk forbruk på %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Bytes" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: Avbrudd" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "Problemer/Sek" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: System Belastning" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Belastning" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 min" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 min" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 min" diff --git a/package/luci/applications/luci-app-statistics/po/no/statistics.po b/package/luci/applications/luci-app-statistics/po/no/statistics.po deleted file mode 100644 index 4de2ee6b55..0000000000 --- a/package/luci/applications/luci-app-statistics/po/no/statistics.po +++ /dev/null @@ -1,835 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Handling (mål)" - -msgid "Add command for reading values" -msgstr "Legg til kommando for lesing av verdier" - -msgid "Add matching rule" -msgstr "Legg til matchende regel" - -msgid "Add multiple hosts separated by space." -msgstr "Legg til flere verter adskilt med mellomrom." - -msgid "Add notification command" -msgstr "Legg til varsling kommando" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Hoved Katalog" - -msgid "Basic monitoring" -msgstr "Enkel overvåking" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "CPU plugin konfigurasjon" - -msgid "CSV Output" -msgstr "CSV Utdata" - -msgid "CSV Plugin Configuration" -msgstr "CSV plugin konfigurasjon" - -msgid "Cache collected data for" -msgstr "Hurtigbufre innsamlede data for" - -msgid "Cache flush interval" -msgstr "Intervall for tømming av hurtigbuffer" - -msgid "Chain" -msgstr "Lenke" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Collectd Innstillinger" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd er en liten daemon for innsamling av data fra ulike kilder gjennom " -"ulike plugins. På denne siden kan du endre generelle innstillinger for " -"collectd daemon." - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "DF plugin konfigurasjon" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "DNS plugin konfigurasjon" - -msgid "Data collection interval" -msgstr "Datainnsamling intervall" - -msgid "Datasets definition file" -msgstr "Datasett definisjonsfil" - -msgid "Destination ip range" -msgstr "Destinasjon ip område" - -msgid "Directory for collectd plugins" -msgstr "Katalog for collectd plugins" - -msgid "Directory for sub-configurations" -msgstr "Katalog for sub-konfigurasjoner" - -msgid "Disk Plugin Configuration" -msgstr "Disk plugin konfigurasjon" - -msgid "Disk Space Usage" -msgstr "Disk Forbruk" - -msgid "Disk Usage" -msgstr "Disk Anvendelse" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "Vis tidsperiode »" - -msgid "E-Mail Plugin Configuration" -msgstr "E-Post plugin konfigurasjon" - -msgid "Email" -msgstr "Epost" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Aktiver denne plugin" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Program" - -msgid "Exec Plugin Configuration" -msgstr "Program plugin konfigurasjon" - -msgid "Filter class monitoring" -msgstr "Filter class overvåking" - -msgid "Firewall" -msgstr "Brannmur" - -msgid "Flush cache after" -msgstr "Tømme hurtigbufferen etter" - -msgid "Forwarding between listen and server addresses" -msgstr "Videresending mellom lyttende og server adresser" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Grafer" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Her kan du definere eksterne kommandoer som blir startet av collectd for å " -"lese enkelte verdier. Verdiene skal leses fra stdout." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Her kan du definere eksterne kommandoer som blir startet av collectd når " -"visse grenseverdier er blitt nådd. Verdiene som fører til aktivering vil bli " -"overført til det påkallede programs stdin." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "Her kan du definere kriterier for reglene som overvåker iptables." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "Vertsnavn" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "IRQ plugin konfigurasjon" - -msgid "Ignore source addresses" -msgstr "Ignorer kilde adresser" - -msgid "Incoming interface" -msgstr "Innkommende grensesnitt" - -msgid "Interface Plugin Configuration" -msgstr "Grensesnitt plugin konfigurasjon" - -msgid "Interfaces" -msgstr "Grensesnitt" - -msgid "Interrupts" -msgstr "Avbrudd" - -msgid "Interval for pings" -msgstr "Intervall ping" - -msgid "Iptables Plugin Configuration" -msgstr "Iptable plugin konfigurasjon" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "Lyttende vert" - -msgid "Listen port" -msgstr "Lyttende port" - -msgid "Listener interfaces" -msgstr "Lyttende grensesnitt" - -msgid "Load Plugin Configuration" -msgstr "Belastning plugin konfigurasjon" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Maksimum tillatte tilkoblinger" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "Overvåk alle lokale lyttende porter" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Overvåk enheter" - -msgid "Monitor disks and partitions" -msgstr "Overvåk disker og partisjoner" - -msgid "Monitor filesystem types" -msgstr "Overvåk filsystem typer" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Overvåk verter" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "Overvåk avbrudd" - -msgid "Monitor local ports" -msgstr "Overvåk lokale porter" - -msgid "Monitor mount points" -msgstr "Overvåk monterings punkter" - -msgid "Monitor processes" -msgstr "Overvåk prosesser" - -msgid "Monitor remote ports" -msgstr "Overvåk eksterne porter" - -msgid "Name of the rule" -msgstr "Navnet på regelen" - -msgid "Netlink" -msgstr "Nettlink" - -msgid "Netlink Plugin Configuration" -msgstr "Netlink plugin konfigurasjon" - -msgid "Network" -msgstr "Nettverk" - -msgid "Network Plugin Configuration" -msgstr "Nettverks plugin konfigurasjon" - -msgid "Network plugins" -msgstr "Nettverks plugin" - -msgid "Network protocol" -msgstr "Nettverks protokoll" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Antall tråder for datainnsamling" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "Lag kun gjennomsnittlige RRAs" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Alternativer" - -msgid "Outgoing interface" -msgstr "Utgående grensesnitt" - -msgid "Output plugins" -msgstr "Utdata Plugin" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Ping plugin konfigurasjon" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Prosesser" - -msgid "Processes Plugin Configuration" -msgstr "Prosess plugin konfigurasjon" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "Prosessor" - -msgid "Qdisc monitoring" -msgstr "Qdisc overvåking" - -msgid "RRD XFiles Factor" -msgstr "RRD XFiles Faktor" - -msgid "RRD heart beat interval" -msgstr "RRD \"heartbeat\" intervall" - -msgid "RRD step interval" -msgstr "RRD steg intervall" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "RRDTool plugin konfigursjon" - -msgid "Rows per RRA" -msgstr "Rader per RRA" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "Sekunder" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Server vert" - -msgid "Server port" -msgstr "Server port" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Shaping class overvåking" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "Kilde ip område" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Statistikk" - -msgid "Storage directory" -msgstr "Lagrings katalog" - -msgid "Storage directory for the csv files" -msgstr "Katalog for lagring av CSV filer" - -msgid "Store data values as rates instead of absolute values" -msgstr "Lagre dataverdier som rater i stedet for absolutte verdier" - -msgid "Stored timespans" -msgstr "Lagrede tidsperioder" - -msgid "System Load" -msgstr "System Belastning" - -msgid "TCP Connections" -msgstr "TCP Forbindelser" - -msgid "TCPConns Plugin Configuration" -msgstr "TCPConns plugin konfigurasjon" - -msgid "TTL for network packets" -msgstr "TTL for nettverkspakker" - -msgid "TTL for ping packets" -msgstr "TTL for ping pakker" - -msgid "Table" -msgstr "Tabell" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "CPU plugin samler grunnleggende statistikk om prosessor bruk." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"CSV plugin lagrer de innsamlede dataene i CSV format for videre bearbeiding " -"av eksterne programmer." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"DF plugin samler statistikk om disker på forskjellige enheter, monterings " -"punkter eller filsystem typer." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"Disk plugin samler detaljert brukerstatistikk for utvalgte partisjoner og " -"hele disker." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"DNS pluging samler detaljert statistikk om DNS relatert trafikk på utvalgte " -"grensesnitt." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"E-Post plugin skaper en unix socket som kan brukes til å sende e-post " -"statistikk til en kjørende collectd daemon. Denne plugin er primært ment å " -"bli brukt i forbindelse med Mail::SpamAssasin::Plugin::Collectd men kan også " -"brukes på andre måter." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"Program plugin starter eksterne kommandoer for å lese verdier fra de, eller " -"for å varsle eksterne prosesser når visse grenseverdier er blitt nådd." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "Grensesnitt plugin samler trafikk statistikk på utvalgte grensesnitt." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"Iptables plugin vil overvåke utvalgte brannmurregler og samle informasjon om " -"bearbeidet data per regel." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"IRQ plugin vil overvåke hastigheten på forespørsler per sekund for hver " -"valgte avbrudd. Hvis ingen avbrudd er valgt vil alle avbrudd bli overvåket." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "Belastning plugin samler statistikk systemets belastning." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"Netlink plugin samler utvidet informasjon som qdisc-, klasse- og filter-" -"statistikk for utvalgte grensesnitt." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"Nettverk plugin gir nettverk basert kommunikasjon mellom ulike collectd " -"forekomster. Collectd kan operere i både klient og server modus. I " -"klientmodus blir lokalt innsamlede data overført til en collectd server. I " -"server modus mottar enheten data fra andre klienter." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"Ping plugin sender icmp echo svar til utvalgte verter og måle tiden en " -"rundtur tar for hver vert." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"Prosess plugin samler informasjon som f.eks. CPU tid, sidefeil og minnebruk " -"for utvalgte prosesser." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"RRDTool plugin lagrer innsamlede data i rrd databasefiler som er grunnlaget " -"for diagrammene.

    Advarsel: Innsetting av feile verdier " -"vil kunne resultere i et svært høyt minneforbruk i den midlertidige " -"katalogen (temp). Dette kan gjøre enheten ubrukelig!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"Tcpconns plugin samler informasjon om åpne TCP tilkoblinger på utvalgte " -"porter." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"Unixsock plugin skaper en unix socket som kan brukes til å lese innsamlet " -"data fra collectd prosess." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Denne seksjonen definerer hvilke grensesnitt collectd vil lytte på for " -"innkommende tilkoblinger." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"Denne seksjonen definerer hvilke servere de lokalt innsamlede data blir " -"sendt til." - -msgid "Try to lookup fully qualified hostname" -msgstr "Prøv å søk etter fullstendig vertsnavn" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Unixsock plugin konfigurasjon" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Brukt PID fil" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "Detaljert overvåking" - -msgid "Wireless" -msgstr "Trådløs" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "f.eks. br-ff" - -msgid "e.g. br-lan" -msgstr "f.eks. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "f.eks. forkast med tcp-reset" - -msgid "max. 16 chars" -msgstr "maks. 16 tegn" - -msgid "reduces rrd size" -msgstr "reduserer RRD størrelse" - -msgid "seconds; multiple separated by space" -msgstr "sekunder; flere adskilt med mellomrom" - -msgid "server interfaces" -msgstr "Server grensesnitt" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "System plugins" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "Statistikk pakken er basert på Collectd og bruker RRD " -#~ "Tool for å tegne diagram bilder fra innsamlede data." - -#~ msgid "Installed network plugins:" -#~ msgstr "Installerte nettverks plugin:" - -#~ msgid "Installed output plugins:" -#~ msgstr "Installerte utdata plugin:" - -#~ msgid "" -#~ "Network plugins are used to collect information about open tcp " -#~ "connections, interface traffic, iptables rules etc." -#~ msgstr "" -#~ "Nettverks plugin er brukt til å samle inn informasjon om åpne tcp " -#~ "koblinger, trafikk over grensesnitt, iptables regler osv." - -#~ msgid "" -#~ "Output plugins provide different possibilities to store collected data. " -#~ "It is possible to enable multiple plugin at one, for example to store " -#~ "collected data in rrd databases and to transmit the data over the network " -#~ "to other collectd instances." -#~ msgstr "" -#~ "Utdata plugins gir ulike muligheter til å lagre innsamlede data. Det er " -#~ "mulig å aktivere flere pluginer på en, for eksempel for å lagre " -#~ "innsamlede data i RRD databaser og å overføre data over nettverket til " -#~ "andre collectd forekomster." - -#~ msgid "" -#~ "System plugins collecting values about system state and ressource usage " -#~ "on the device.:" -#~ msgstr "" -#~ "System plugins samler verdier om systemets tilstand og ressurs-bruk.:" - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "Trådløs plugin samler statistikk om trådløs signalstyrke, støy og " -#~ "kvalitet." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Trådløs plugin konfigurasjon" diff --git a/package/luci/applications/luci-app-statistics/po/pl/rrdtool.po b/package/luci/applications/luci-app-statistics/po/pl/rrdtool.po deleted file mode 100644 index bf451ecc76..0000000000 --- a/package/luci/applications/luci-app-statistics/po/pl/rrdtool.po +++ /dev/null @@ -1,360 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-31 11:06+0200\n" -"Last-Translator: Staszek \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Sieć bezprzewodowa - Poziom Szumów" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Poziom szumów" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Moc sygnału" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Sieć bezprzewodowa - Jakość sygnału" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Jakość sygnału" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: ICMP - Czasy odpowiedzi" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Firewall - Przetworzone pakiety" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "Pakiety/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Łańcuch \"%di\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - Transfer przez %pi" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "Bajty/s" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Bajtów (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - Pakiety na %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "Pakiety/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Przetworzone (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Odrzucone (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Błędy (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - Multicasty na %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "Pakiety/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Pakiety" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - Kolizje na %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "Kolizje/s" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Kolizje" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - Błędy na %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "Błędy/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Procesy" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Procesy/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Proces %pi - użyty czas Procesora" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "system" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "użytkownik" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Proces %pi - wątki i procesy" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "Liczba" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Proces %pi - błędy stronnicowania" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Błędy stronnicowania" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "błędy stronnicowania" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Proces %pi - rozmiar pamięci wirtualnej" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bajtów" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "pamięć wirtualna" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Użycie Procesora #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Transfer na %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "Bajtów/s" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Pakietów na %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "Pakietów/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: TCP-połączeń na port %pi" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "Połączeń/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Użycie przestrzeni dyskowej na %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Bajtów" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: Przerwania" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "Problem(y)" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: Obciążenie Systemu" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Obciążenie" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 min" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 min" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 min" diff --git a/package/luci/applications/luci-app-statistics/po/pl/statistics.po b/package/luci/applications/luci-app-statistics/po/pl/statistics.po deleted file mode 100644 index 6e34ce0725..0000000000 --- a/package/luci/applications/luci-app-statistics/po/pl/statistics.po +++ /dev/null @@ -1,854 +0,0 @@ -# statistics.pot -# generated from ./applications/luci-statistics/luasrc/i18n/statistics.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-02 19:52+0200\n" -"Last-Translator: obsy \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Akcja (cel)" - -msgid "Add command for reading values" -msgstr "Dodaj polecenie do odczytywania wartości" - -msgid "Add matching rule" -msgstr "Dodaj pasującą regułę" - -msgid "Add multiple hosts separated by space." -msgstr "Dodaj wiele hostów rozdzielonych spacjami." - -msgid "Add notification command" -msgstr "Dodaj komendę powiadamiającą" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Główny katalog" - -msgid "Basic monitoring" -msgstr "Podstawowy monitoring" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "Konfiguracja CPU" - -msgid "CSV Output" -msgstr "Wyjście CSV" - -msgid "CSV Plugin Configuration" -msgstr "Konfiguracja CSV" - -msgid "Cache collected data for" -msgstr "Ciasteczka zbierane dla" - -msgid "Cache flush interval" -msgstr "Odstępy czyszczenia cache" - -msgid "Chain" -msgstr "Łańcuch" - -msgid "CollectLinks" -msgstr "CollectLinks" - -msgid "CollectRoutes" -msgstr "CollectRoutes" - -msgid "CollectTopology" -msgstr "CollectTopology" - -msgid "Collectd Settings" -msgstr "Ustawienia Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd to mały deomon do zbieranie danych z różnych źródeł za pomocą " -"różnych wtyczek. Na tej stronie można zmienić ogólne ustawienia demona " -"collectd." - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "Konfiguracja wtyczki Conntrack" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Konfiguracja wtyczki DF" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Konfiguracja wtyczki DNS" - -msgid "Data collection interval" -msgstr "Odstępy zbierania danych" - -msgid "Datasets definition file" -msgstr "Zdefiniowany plik ustawień" - -msgid "Destination ip range" -msgstr "Zakres docelowych adresów IP" - -msgid "Directory for collectd plugins" -msgstr "Katalog wtyczek collectd" - -msgid "Directory for sub-configurations" -msgstr "Katalog podkonfiguracji" - -msgid "Disk Plugin Configuration" -msgstr "Konfiguracja wtyczki dysk" - -msgid "Disk Space Usage" -msgstr "Zużycie przestrzeni dyskowej" - -msgid "Disk Usage" -msgstr "Użycie dysku" - -msgid "Display Host »" -msgstr "Wyświetl Host >" - -msgid "Display timespan »" -msgstr "Przedział czasu wyświetlania »" - -msgid "E-Mail Plugin Configuration" -msgstr "Konfiguracja wtyczki E-mail" - -msgid "Email" -msgstr "E-mail" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Włącz tę wtyczkę" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Konfiguracja wtyczki Exec" - -msgid "Filter class monitoring" -msgstr "Monitorowanie filtra klas" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "Opróżnić cache po" - -msgid "Forwarding between listen and server addresses" -msgstr "Przekazać przez słuchacza na adres serwera" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Wykresy" - -msgid "Group" -msgstr "Grupa" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Tutaj można zdefiniować zewnętrzne komendy, które będą włączane przez " -"collectd, by odczytać konkretne wartości. Będą one odczytywane z stdout." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Tutaj można zdefiniować zewnętrzne komendy, które będą włączane przez " -"collectd, kiedy zostaną osiągnięte konkretne wartości progowe. Wartości " -"powodujące włączenie będą wysyłane do programów przez stdin." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Tutaj można zdefiniować różne kryteria według których wybierane są " -"monitorowane reguły iptables." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "Host" - -msgid "Hostname" -msgstr "Nazwa hosta" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "Numer IP lub nazwa hosta jako wyjście txtinfo" - -msgid "IRQ Plugin Configuration" -msgstr "Konfiguracja wtyczki IRQ" - -msgid "Ignore source addresses" -msgstr "Ignoruj adresy źródłowe" - -msgid "Incoming interface" -msgstr "Interfejs przychodzący" - -msgid "Interface Plugin Configuration" -msgstr "Konfiguracja wtyczki Interfejs" - -msgid "Interfaces" -msgstr "Interfejsy" - -msgid "Interrupts" -msgstr "Przerwania" - -msgid "Interval for pings" -msgstr "Odstępy dla pingów" - -msgid "Iptables Plugin Configuration" -msgstr "Konfiguracja wtyczki iptables" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" -"Pozostaw niezaznaczone do automatycznego określenia interfejsu do " -"monitorowania." - -msgid "Listen host" -msgstr "Nasłuchuj host" - -msgid "Listen port" -msgstr "Nasłuchuj port" - -msgid "Listener interfaces" -msgstr "Interfejsy nasłuchującego" - -msgid "Load Plugin Configuration" -msgstr "Konfiguracja wtyczki Obciążenie" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Maksymalna ilość połączeń" - -msgid "Memory" -msgstr "Pamięć" - -msgid "Memory Plugin Configuration" -msgstr "Konfiguracja wtyczki Pamięć" - -msgid "Monitor all except specified" -msgstr "Monitoruj wszystko oprócz podanych" - -msgid "Monitor all local listen ports" -msgstr "Monitoruj wszystkie lokalne otwarte porty" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Monitoruj urządzenia" - -msgid "Monitor disks and partitions" -msgstr "Monitoruj dyski i partycje" - -msgid "Monitor filesystem types" -msgstr "Monitoruj system plików" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Monitoruj hosty" - -msgid "Monitor interfaces" -msgstr "Monitoruj interfejsy" - -msgid "Monitor interrupts" -msgstr "Monitoruj przerwania" - -msgid "Monitor local ports" -msgstr "Monitoruj porty lokalne" - -msgid "Monitor mount points" -msgstr "Monitoruj punkty zamontowania" - -msgid "Monitor processes" -msgstr "Monitoruj procesy" - -msgid "Monitor remote ports" -msgstr "Monitoruj porty zdalne" - -msgid "Name of the rule" -msgstr "Nazwa tej reguły" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Konfiguracja wtyczki Netlink" - -msgid "Network" -msgstr "Sieć" - -msgid "Network Plugin Configuration" -msgstr "Konfiguracja wtyczki Sieć" - -msgid "Network plugins" -msgstr "Wtyczki sieciowe" - -msgid "Network protocol" -msgstr "Protokoły sieciowe" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Liczba wątków do zbierania danych" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "Konfiguracja wtyczki OLSRd" - -msgid "Only create average RRAs" -msgstr "Twórz tylko średnie archiwa RRA" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Opcje" - -msgid "Outgoing interface" -msgstr "Interfejs wychodzący" - -msgid "Output plugins" -msgstr "Pluginy wyjścia" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Konfiguracja wtyczki Ping" - -msgid "Port" -msgstr "Port" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Procesy" - -msgid "Processes Plugin Configuration" -msgstr "Konfiguracja wtyczki Procesy" - -msgid "Processes to monitor separated by space" -msgstr "Monitorowane procesy oddzielone spacją" - -msgid "Processor" -msgstr "Procesor" - -msgid "Qdisc monitoring" -msgstr "Monitorowanie Qdisc" - -msgid "RRD XFiles Factor" -msgstr "RRD XFiles Factor" - -msgid "RRD heart beat interval" -msgstr "RRD heart beat interval" - -msgid "RRD step interval" -msgstr "RRD Krok interval" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "Konfiguracja wtyczki RRDTool" - -msgid "Rows per RRA" -msgstr "Wierszy w archiwum RRA" - -msgid "Script" -msgstr "Skrypt" - -msgid "Seconds" -msgstr "Sekundy" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Host serwer" - -msgid "Server port" -msgstr "Port serwera" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Shaping Klasa Monitoring" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "Plik Gniazdo" - -msgid "Socket group" -msgstr "Gniazdo Grupy" - -msgid "Socket permissions" -msgstr "Uprawnienia Gniazda" - -msgid "Source ip range" -msgstr "Zakres źródłowych adresów ip" - -msgid "Specifies what information to collect about links." -msgstr "Określa jakie informacje zbierać o linkach." - -msgid "Specifies what information to collect about routes." -msgstr "Określa jakie informacje zbierać o trasach." - -msgid "Specifies what information to collect about the global topology." -msgstr "Określa jakie informacje zbierać o globalnej topologii." - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Statystyki" - -msgid "Storage directory" -msgstr "Katalog przechowywania" - -msgid "Storage directory for the csv files" -msgstr "Katalog przechowywania plików csv" - -msgid "Store data values as rates instead of absolute values" -msgstr "" -"Przechowuj wartości danych jako wskaźniki zamiast wartości bezwzględnych" - -msgid "Stored timespans" -msgstr "Przechowywane okresy czasu" - -msgid "System Load" -msgstr "Obciążenie systemu" - -msgid "TCP Connections" -msgstr "Połączenia TCP" - -msgid "TCPConns Plugin Configuration" -msgstr "Konfiguracja wtyczki Połączenia TCP" - -msgid "TTL for network packets" -msgstr "TTL dla pakietów sieciowych" - -msgid "TTL for ping packets" -msgstr "TTL dla pakietów ping" - -msgid "Table" -msgstr "Tabela" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "Wtyczka Nut Informuje o Nie przerywalnym Zasilaniu" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" -"Wtyczka OLSRd odczytuje informacje o sieciach mesh z wtyczki txtinfo dla " -"OLSRd." - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "Wtyczka Conntrack zbiera statystyki o liczbie śledzonych połączeń." - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "Wtyczka CPU zbiera podstawowe statystyki o użyciu procesora" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"Wtyczka CSV gromadzi zebrane dane w formacie plików csv do dalszej obróbki " -"przez zewnętrzne programy." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"Wtyczka \"df\" zbiera statystyki dotyczące wykorzystania miejsca na różnych " -"urządzenia, dyskach i systemach plików." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"Wtyczka \"disk\" zbiera szczegółowe informacje z poszczególnych partycji lub " -"całych dysków." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"Wtyczka \"dns\" zbiera statystyki odnośnie ruchu DNS dla wybranych " -"interfejsów." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"Wtyczka Email Tworzy gniazdo w unix do transmisji statystyki-poczty do " -"demona collectd. This plugin is primarily intended to be used in conjunction " -"with Mail::SpamAssasin::Plugin::Collectd but can be used in other ways as " -"well." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"Wtyczka Exec startuje zewnętzną komendę do czytnika values z lub do procesu " -"zewnętrznego powiadomienia gdy wartość została zmieniona" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "Wtyczka \"interface\" zbiera statystyki z wybranych interfejsów." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"Wtyczka \"iptables\" monitoruje wybrane reguły firewalla i zbiera statystyki " -"o procesach, bajtach i pakietach przypadających na daną regułę." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"Wtyczka \"irq\" monitoruje liczbę przerwań na sekundę dla każdego wybranego " -"przerwania. Jeśli nie wybrano żadnego przerwania, monitoruje wszystkie." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" -"Wtyczka \"iwinfo\" zbiera statystyki o sygnale, zakłóceniach i jakości sieci " -"WiFi." - -msgid "The load plugin collects statistics about the general system load." -msgstr "Wtyczka \"load\" zbiera statystyki o ogólnych obciążeniu systemu." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "Wtyczka \"memory\" zbiera statystyki dotyczące wykorzystania pamięci." - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"Wtyczki netlink zbiera rozszerzone informacje statystyk z qdisc-, klasa- i " -"filter- dla wybranych interfejsów." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"Wtyczka zapewnia podstawową komunikacje między różnymi instancjami collectd. " -"Collectd może pracować zarówno w trybie klienta i serwera. W trybie klienta " -"lokalnie zebrane dane przenosi się do instancji serwera collectd, w trybie " -"serwera lokalnego instancja odbiera dane z innych komputerów." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"Wtyczka \"ping\" wysyła komunikaty icmp i nasłuchuje odpowiedzi z wybranych " -"hostów oraz mierzy czasy odpowiedzi zwrotnych dla każdego z nich." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"Wtyczki processes zbiera informacje o czasie procesora, błędach strony i " -"pamięci wybranych procesów." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"Wtyczki rrdtool przechowuje zebrane dane w plikach RRD, które są " -"wykorzystywane do tworzenia diagramów.

    Ostrzeżenie:. " -"Ustawianie błędnej wartości może spowodować bardzo wysokie zużycie pamięci w " -"katalogu tymczasowym. Może to sprawić, że urządzenie nie będzie nadawało się " -"do użytku! " - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"Wtyczka \"tcpconns\" zbiera informacje o otwartych połączeniach tcp dla " -"wybranych portów." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"Wtyczka unixsock tworzy socket unix, który może być używany do odczytu " -"danych zebranych z bieżącej instancji collectd." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Sekcja ta definiuje interfejsy na którym collectd będzie czekać na " -"połączenia przychodzące." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "Ta sekcja określa do jakich serwerów zebrane dane zostaną wysłane." - -msgid "Try to lookup fully qualified hostname" -msgstr "Spróbuj znaleźć pełną nazwę hosta" - -msgid "UPS" -msgstr "UPS" - -msgid "UPS Plugin Configuration" -msgstr "Plugin Konfiguracji UPS" - -msgid "UPS name in NUT ups@host format" -msgstr "Format nazwa UPS w NUT ups@host" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Konfiguracja wtyczki UnixSock" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Używany plik PID" - -msgid "User" -msgstr "Użytkownik" - -msgid "Verbose monitoring" -msgstr "Pełny monitoring" - -msgid "Wireless" -msgstr "WiFi" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "Konfiguracja bezprzewodowego pluginu iwinfo" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "np. br-ff" - -msgid "e.g. br-lan" -msgstr "np. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "np. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "max. 16 znaków" - -msgid "reduces rrd size" -msgstr "zmniejsza rozmiar RRD" - -msgid "seconds; multiple separated by space" -msgstr "sekundy; wielokrotnie oddzielone spacją" - -msgid "server interfaces" -msgstr "interfejsy serwera" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Wtyczki systemowe" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "Statystyki bazuja na Collectd oraz wykorzystują RRD Tool do generowania diagramów i wykresów z zebranych danych." - -#~ msgid "Installed network plugins:" -#~ msgstr "Zainstalowane wtyczki sieciowe:" - -#~ msgid "Installed output plugins:" -#~ msgstr "Zainstalowane wtyczki wyjścia:" - -#~ msgid "" -#~ "Network plugins are used to collect information about open tcp " -#~ "connections, interface traffic, iptables rules etc." -#~ msgstr "" -#~ "Wtyczki sieciowe służą do zbierania informacji o otwartych połączeniach " -#~ "TCP, ruchu sieciowym na danym interfejsie, regułach iptables itp." - -#~ msgid "" -#~ "Output plugins provide different possibilities to store collected data. " -#~ "It is possible to enable multiple plugin at one, for example to store " -#~ "collected data in rrd databases and to transmit the data over the network " -#~ "to other collectd instances." -#~ msgstr "" -#~ "Pluginy wyjścia dostarczają różnych możliwości przechowywania " -#~ "zgromadzonych danych. Można włączyć wiele pluginów naraz, na przykład " -#~ "przechowywać dane w bazach danych RRD i wysyłać je do innych instancji " -#~ "collectd w sieci." - -#~ msgid "" -#~ "System plugins collecting values about system state and ressource usage " -#~ "on the device.:" -#~ msgstr "" -#~ "Wtyczki systemowe zbierają wartości o stanie systemu i użyciu zasobów " -#~ "urządzenia.:" - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "Wtyczka \"wireless\" zbiera dane o sile sygnału, zakłóceniach i jakości " -#~ "WiFi." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "konfiguracja wtyczki WiFi" diff --git a/package/luci/applications/luci-app-statistics/po/pt-br/rrdtool.po b/package/luci/applications/luci-app-statistics/po/pt-br/rrdtool.po deleted file mode 100644 index 510b4a8f87..0000000000 --- a/package/luci/applications/luci-app-statistics/po/pt-br/rrdtool.po +++ /dev/null @@ -1,359 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2011-10-11 21:17+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Wireless - Relação Sinal/Ruido" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Nivel de Ruído" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Força do Sinal" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Wireless - Qualidade do Sinal" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Qualidade do Sinal" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: Tempo de resposta ICMP" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Firewall - Pacotes Processados" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "Pacote/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Cadeia \"%di\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - Transferência na %pi" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "Bytes/s" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Bytes (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - Pacotes na %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "Packets/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Processado (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Descartados (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Erros (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - Multicast na %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "Pacote/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Pacotes" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - Colisões na %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "Colisão(es)" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Colisões" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - Erros na %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "Erro/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Processos" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Processo/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Processo %pi - tempo usado da cpu" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "sistema" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "usuário" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Processo %pi - threads e processos" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "Contagem" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Processo %pi - pagina de erros" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Pagina de erros" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "pagina de erros" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Processo %pi - tamanho da memória virtual" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bytes" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "memória virtual" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Usado no Processado #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Transferência na %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "Bytes/s" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Pacotes na %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "Pacote/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: Ligações TCP na Porta %pi" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "Ligação(ões)" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Utilização de Espaço em Disco em %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Bytes" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: Interrupções" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "Erro/s" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: Carga do Sistema" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Carga" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 min" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 min" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 min" diff --git a/package/luci/applications/luci-app-statistics/po/pt-br/statistics.po b/package/luci/applications/luci-app-statistics/po/pt-br/statistics.po deleted file mode 100644 index c5d6899332..0000000000 --- a/package/luci/applications/luci-app-statistics/po/pt-br/statistics.po +++ /dev/null @@ -1,885 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2017-02-22 18:27-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Ação (destino)" - -msgid "Add command for reading values" -msgstr "Adicionar comando para leitura de valores" - -msgid "Add matching rule" -msgstr "Adicionar regra" - -msgid "Add multiple hosts separated by space." -msgstr "Adicione múltiplos equipamentos separados por espaço." - -msgid "Add notification command" -msgstr "Adicionar o comando de notificação" - -msgid "Aggregate number of connected users" -msgstr "Numero agregado de usuários conectados" - -msgid "Base Directory" -msgstr "Diretório Base" - -msgid "Basic monitoring" -msgstr "Monitoramento básico" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "Frequência da CPU" - -msgid "CPU Frequency Plugin Configuration" -msgstr "Configuração do Plugin da Frequência da CPU" - -msgid "CPU Plugin Configuration" -msgstr "Configuração do plugin CPU" - -msgid "CSV Output" -msgstr "Saida CSV" - -msgid "CSV Plugin Configuration" -msgstr "Configuração do plugin CSV" - -msgid "Cache collected data for" -msgstr "Cache dos dados coletados" - -msgid "Cache flush interval" -msgstr "Intervalo de limpeza do cache" - -msgid "Chain" -msgstr "Cadeia" - -msgid "CollectLinks" -msgstr "Coleção de Links" - -msgid "CollectRoutes" -msgstr "Coleção de Rotas" - -msgid "CollectTopology" -msgstr "Coleção de Topologias" - -msgid "Collectd Settings" -msgstr "Configurações do Coletadas" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd é um pequeno daemon que coleta dados de várias fontes através de " -"diferentes plugins. Nesta página você pode alterar as configurações gerais " -"do daemon collectd." - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "Configuração do Plugin do Conntrack" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Configuração do plugin DF" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Configuração do plugin DNS" - -msgid "Data collection interval" -msgstr "Intervalo da coleta de dados" - -msgid "Datasets definition file" -msgstr "Arquivo com a definição de dados" - -msgid "Destination ip range" -msgstr "Faixa IP de destino" - -msgid "Directory for collectd plugins" -msgstr "Diretório para os plugins do collectd" - -msgid "Directory for sub-configurations" -msgstr "Diretório para sub-configurações" - -msgid "Disk Plugin Configuration" -msgstr "Configuração do plugin Disco" - -msgid "Disk Space Usage" -msgstr "Utilização de espaço em disco" - -msgid "Disk Usage" -msgstr "Utilização do Disco" - -msgid "Display Host »" -msgstr "Mostrar Host" - -msgid "Display timespan »" -msgstr "Mostrar intervalo »" - -msgid "E-Mail Plugin Configuration" -msgstr "Configuração do plugin E-Mail" - -msgid "Email" -msgstr "Email" - -msgid "Empty value = monitor all" -msgstr "Valor vazio = monitore todos" - -msgid "Enable this plugin" -msgstr "Habilitar este plugin" - -msgid "Entropy" -msgstr "Entropia" - -msgid "Entropy Plugin Configuration" -msgstr "Configuração do Plugin de Entropia" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Configuração do plugin Exec" - -msgid "Filter class monitoring" -msgstr "Monitoramento das Classes de Filtros" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "Limpar cache após" - -msgid "Forwarding between listen and server addresses" -msgstr "" -"Encaminhamento entre o endereço de escuta e os endereços dos servidores" - -msgid "Gather compression statistics" -msgstr "Obter estatísticas sobre a compressão" - -msgid "General plugins" -msgstr "Plugins Gerais" - -msgid "Generate a separate graph for each logged user" -msgstr "Gerar um gráfico separado para cada usuário conectado" - -msgid "Graphs" -msgstr "Gráficos" - -msgid "Group" -msgstr "Grupo" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Aqui você pode definir comandos externos que serão iniciados pelo collectd a " -"fim de ler determinados valores. Os valores serão lidos a partir do stdout." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Aqui você pode definir os comandos externos que serão iniciados pelo " -"collectd quando determinados valores limite forem atingidos. Os valores " -"passados ao comando serão enviados para o stdin." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Aqui você pode definir diversos critérios para as regras iptables " -"selecionadas serem monitoradas." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" -"Segure o Ctrl para selecionar múltiplos itens ou para retirar entradas. " - -msgid "Host" -msgstr "Equipamento" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "Endereço IP ou nome do equipamento de onde obter a saída do txtinfo" - -msgid "IRQ Plugin Configuration" -msgstr "Configuração do plugin IRQ" - -msgid "Ignore source addresses" -msgstr "Ignorar endereços de origem" - -msgid "Incoming interface" -msgstr "Interface de entrada" - -msgid "Interface Plugin Configuration" -msgstr "Configuração do plugin Interface" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interrupts" -msgstr "Interrupções" - -msgid "Interval for pings" -msgstr "Intervalo para pings" - -msgid "Iptables Plugin Configuration" -msgstr "Configuração do plugin Iptables" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" -"Deixe não selecionado para determinar automaticamente a interface a ser " -"monitorada" - -msgid "Listen host" -msgstr "Endereço de escuta do Host" - -msgid "Listen port" -msgstr "Porta de escuta" - -msgid "Listener interfaces" -msgstr "Escutar na(s) interface(s)" - -msgid "Load Plugin Configuration" -msgstr "Configuração do plugin carga" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" -"Valores máximos para um período podem ser usados em vez de médias quando não " -"estiver usando 'somente RRAs de médias'" - -msgid "Maximum allowed connections" -msgstr "Máximo de conexões permitidas" - -msgid "Memory" -msgstr "Memória" - -msgid "Memory Plugin Configuration" -msgstr "Configuração do Plugin da Memória" - -msgid "Monitor all except specified" -msgstr "Monitore tudo exceto se especificado" - -msgid "Monitor all local listen ports" -msgstr "Monitorar todas as portas locais" - -msgid "Monitor all sensors" -msgstr "Monitorar todas os sensores" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "Dispositivo(s) de monitoramento / zona(s) térmica(s)" - -msgid "Monitor devices" -msgstr "Monitorar dispositivos" - -msgid "Monitor disks and partitions" -msgstr "Monitoras discos e partições" - -msgid "Monitor filesystem types" -msgstr "Monitorar tipos de sistemas de arquivos" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Monitorar os equipamentos" - -msgid "Monitor interfaces" -msgstr "Monitorar interfaces" - -msgid "Monitor interrupts" -msgstr "Monitorar interrupções" - -msgid "Monitor local ports" -msgstr "Monitorar as portas locais" - -msgid "Monitor mount points" -msgstr "Monitorar pontos de montagem" - -msgid "Monitor processes" -msgstr "Monitorar processos" - -msgid "Monitor remote ports" -msgstr "Monitorar portas remotas" - -msgid "Name of the rule" -msgstr "Nome da regra" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Configuração do plugin Netlink" - -msgid "Network" -msgstr "Rede" - -msgid "Network Plugin Configuration" -msgstr "Configuração do plugin Rede" - -msgid "Network plugins" -msgstr "Plugins de rede" - -msgid "Network protocol" -msgstr "Protocolo de rede" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" -"Nota: como as páginas são renderizadas pelo usuário 'nobody', os arquivos * ." -"rrd, o diretório de armazenamento e todos os seus diretórios superiores " -"precisam ser legíveis a todos." - -msgid "Number of threads for data collection" -msgstr "Número de threads para o coletor de dados" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "Configuração do Plugin OLSRd" - -msgid "Only create average RRAs" -msgstr "Somente criar RRAs de média" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN Plugin Configuration" -msgstr "Configuração do Plugin do OpenVPN" - -msgid "OpenVPN status files" -msgstr "Arquivos de estado do OpenVPN" - -msgid "Options" -msgstr "Opções" - -msgid "Outgoing interface" -msgstr "Interface de saída" - -msgid "Output plugins" -msgstr "Plugins de saída" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Configuração do plugin Ping" - -msgid "Port" -msgstr "Porta" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Processos" - -msgid "Processes Plugin Configuration" -msgstr "Configuração do plugin Processos" - -msgid "Processes to monitor separated by space" -msgstr "Processos para monitorar, separado por espaços" - -msgid "Processor" -msgstr "Processador" - -msgid "Qdisc monitoring" -msgstr "Monitoramento do Qdisc" - -msgid "RRD XFiles Factor" -msgstr "Fator RRD XFiles" - -msgid "RRD heart beat interval" -msgstr "Intervalo entre duas atualizações" - -msgid "RRD step interval" -msgstr "Intervalo de atualização" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "Configuração do plugin RRDTool" - -msgid "Rows per RRA" -msgstr "Linhas por RRA" - -msgid "Script" -msgstr "Script" - -msgid "Seconds" -msgstr "Segundos" - -msgid "Sensor list" -msgstr "Lista de sensores" - -msgid "Sensors" -msgstr "Sensores" - -msgid "Sensors Plugin Configuration" -msgstr "Configuração do Plugin de Sensores" - -msgid "Server host" -msgstr "Endereço do servidor" - -msgid "Server port" -msgstr "Porta do servidor" - -msgid "Setup" -msgstr "Configuração" - -msgid "Shaping class monitoring" -msgstr "Monitoramento das Classes de Shaping" - -msgid "Show max values instead of averages" -msgstr "Mostrar valores máximos em vez de médias" - -msgid "Socket file" -msgstr "Arquivo do socket" - -msgid "Socket group" -msgstr "Grupo do socket" - -msgid "Socket permissions" -msgstr "Permissões do socket" - -msgid "Source ip range" -msgstr "Faixa de IP de origem" - -msgid "Specifies what information to collect about links." -msgstr "Especifica quais informações serão coletadas sobre os enlaces." - -msgid "Specifies what information to collect about routes." -msgstr "Especifica quais informações serão coletadas sobre as rotas." - -msgid "Specifies what information to collect about the global topology." -msgstr "Especifica quais informações serão coletadas sobre a topologia global." - -msgid "Splash Leases" -msgstr "Concessões do Splash" - -msgid "Splash Leases Plugin Configuration" -msgstr "Configuração do Plugin das Concessões do Splash" - -msgid "Statistics" -msgstr "Estatística" - -msgid "Storage directory" -msgstr "Diretório de armazenamento" - -msgid "Storage directory for the csv files" -msgstr "Diretório para armazenamento dos arquivos csv" - -msgid "Store data values as rates instead of absolute values" -msgstr "Armazenar os valores dos dados como taxas em vez de valores absolutos" - -msgid "Stored timespans" -msgstr "Intervalos armazenados" - -msgid "System Load" -msgstr "Carga do Sistema" - -msgid "TCP Connections" -msgstr "Conexões TCP" - -msgid "TCPConns Plugin Configuration" -msgstr "Configuração do plugin TCPConns" - -msgid "TTL for network packets" -msgstr "TTL para os pacotes de rede" - -msgid "TTL for ping packets" -msgstr "TTL para os pacotes do ping" - -msgid "Table" -msgstr "Tabela" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "O plugin NUT lê informações sobre Fontes de alimentação ininterruptas." - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" -"O plugin OLSRd lê informações sobre redes em malha (mesh) a partir do plugin " -"txtinfo do OLSRd." - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" -"O plugin OpenVPN reúne informações sobre o status atual da conexão VPN." - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" -"O plugin do conntrack coleta estatísticas sobre o número de conexões " -"rastreadas." - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" -"O plugin cpu coleta as estatísticas básicas sobre o uso do processador." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"O plugin csv armazena os dados coletados em um arquivo no formato csv para " -"um futuro processamento por outros programas." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"O plugin df coleta estatísticas sobre a utilização de espaço em disco em " -"diferentes dispositivos, pontos de montagem ou tipos de sistemas de arquivos." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"O plugin disco coleta estatísticas de uso detalhadas das partições " -"selecionadas ou discos inteiros." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"O plugin dns coleta estatísticas detalhadas sobre o tráfego do dns nas " -"interfaces selecionadas." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"O plugin de email cria um socket unix que pode ser usado para transmitir " -"estatísticas de email para o collectd. Este plugin é essencialmente " -"destinado a ser utilizado em conjunto com o plugin Mail::SpamAssasin::" -"Plugin::Collectd mas pode ser utilizado de outras maneiras também." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "O plugin de entropia coleta estatísticas sobre a entropia disponível." - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"O plugin exec inicia comandos externos para leitura de valores ou notificar " -"processos externos quando um determinado valor limite for atingido." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"O plugin interface plugin coleta estatísticas sobre o tráfego das interfaces " -"selecionadas." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"O plugin iptables irá monitorar as regras de firewall selecionadas e coletar " -"informações sobre pacotes e bytes processados pela regra." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"O plugin irq irá monitorar a taxa de ocorrências por segundo de cada " -"interrupção selecionada. Se nenhuma interrupção for selecionada então todas " -"as interrupções serão monitoradas." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" -"O plugin iwinfo coleta estatísticas sobre a força, ruído e qualidade do " -"sinal da rede sem fio." - -msgid "The load plugin collects statistics about the general system load." -msgstr "O plugin de carga coleta estatísticas gerais sobre a carga do sistema." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "O plugin de memória coleta estatísticas sobre o uso da memória." - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"O plugin Netlink coleta informações detalhadas como qdisc-, classe- e " -"estatísticas de filtro das interfaces selecionadas." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"O plugin rede fornece informações de rede baseadas na comunicação entre as " -"diferentes instâncias do collectd. O Collectd pode operar tanto no modo " -"cliente quanto no modo servidor. No modo cliente os dados coletados " -"localmente são transferidos para um servidor collectd. No modo de servidor, " -"o servidor local recebe os dados de outros servidores." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"O plugin ping irá enviar pacotes ICMP to tipo echo aos equipamentos " -"selecionados e medir o tempo de resposta para cada equipamento." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"O plugin de processos coleta informações como o tempo da cpu, falha de " -"página e uso de memória dos processos selecionados." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"O plugin rrdtool armazena os dados coletados no arquivo de banco de dados " -"rrd.

    Aviso: A má configuração desses valores, resultará " -"em um valor muito elevado no consumo de memória no diretório temporário. " -"Isso pode tornar o equipamento inutilizável!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" -"O plugin de sensores usa a estrutura de sensores do Linux para coletar " -"estatísticas ambientais." - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" -"O plug-in de concessões splash usa o libuci para coletar estatísticas sobre " -"concessões de splash." - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" -"O pacote de estatísticas usa Collectd para coletar dados e RRDtool para desenhar os gráficos." - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"O plugin tcpconns coleta informações sobre as conexões TCP abertas das " -"portas selecionadas." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" -"O plugin térmico monitorará a temperatura do sistema. Os dados são " -"tipicamente lidos de /sys/class/thermal/*/temp ('*' indica o dispositivo " -"térmico a ser lido, ex:, thermal_zone1)" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"O plugin unixsock cria um socket unix, que pode ser usado para ler os dados " -"coletados a partir de uma collectd em execução." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" -"O plugin de tempo de atividade coleta estatísticas sobre o tempo de " -"atividade do sistema." - -msgid "Thermal" -msgstr "Térmico" - -msgid "Thermal Plugin Configuration" -msgstr "Configuração do Plugin Térmico" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" -"Este plugin coleta as estatísticas sobre o escalonamento da frequência do " -"processador." - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Esta seção define em quais interfaces o collectd irá aguardar para receber " -"conexões." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"Esta seção define para qual servidor os dados coletados localmente serão " -"enviados." - -msgid "Try to lookup fully qualified hostname" -msgstr "Tentar encontrar o nome completo do equipamento (FQDN)" - -msgid "UPS" -msgstr "UPS (no-breaks)" - -msgid "UPS Plugin Configuration" -msgstr "Plugin de configuração UPS" - -msgid "UPS name in NUT ups@host format" -msgstr "Nome do UPS no NUT em formato ups@equipamento" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Configuração do plugin Unixsock" - -msgid "Uptime" -msgstr "Tempo de atividade" - -msgid "Uptime Plugin Configuration" -msgstr "Configuração do Plugin de Tempo de Atividade" - -msgid "Use improved naming schema" -msgstr "Use um esquema de nomeação melhorado" - -msgid "Used PID file" -msgstr "Arquivo PID usado" - -msgid "User" -msgstr "usuário" - -msgid "Verbose monitoring" -msgstr "Monitoramento no modo detalhado" - -msgid "Wireless" -msgstr "Rede Sem Fio (Wireless)" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "Configuração do Plugin iwinfo da Rede Sem Fio (Wireless)" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" -"Você pode instalar plugins adicionais (collectd-mod-*) para habilitar mais " -"estatísticas." - -msgid "e.g. br-ff" -msgstr "ex: br-ff" - -msgid "e.g. br-lan" -msgstr "ex: br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "ex: rejeitar-com tcp-reset" - -msgid "max. 16 chars" -msgstr "máx. 16 caracteres" - -msgid "reduces rrd size" -msgstr "reduzir o tamanho do rrd" - -msgid "seconds; multiple separated by space" -msgstr "segundos; vários valores, separar com espaço" - -msgid "server interfaces" -msgstr "interfaces do servidor" - -#~ msgid "Collectd" -#~ msgstr "Coletar" - -#~ msgid "System plugins" -#~ msgstr "Plugins de sistema" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "As estatísticas são baseadas no Collectd e é utilizado o RRD Tool para renderização das imagens a partir dos dados " -#~ "coletados." - -#~ msgid "Installed network plugins:" -#~ msgstr "Plugins de rede instalados:" - -#~ msgid "Installed output plugins:" -#~ msgstr "Plugins de saída instalados:" - -#~ msgid "" -#~ "Network plugins are used to collect information about open tcp " -#~ "connections, interface traffic, iptables rules etc." -#~ msgstr "" -#~ "Os plugins de rede são utilizados para coletar informações sobre conexões " -#~ "tcp abertas, tráfego da interface, regras do iptables, etc." - -#~ msgid "" -#~ "Output plugins provide different possibilities to store collected data. " -#~ "It is possible to enable multiple plugin at one, for example to store " -#~ "collected data in rrd databases and to transmit the data over the network " -#~ "to other collectd instances." -#~ msgstr "" -#~ "Os plugins de saída proveem diferentes possibilidades para armazenar os " -#~ "dados coletados. É possível habilitar diversos plugin para, por exemplo, " -#~ "coletar dados em bancos de dados rrd e transmitir os dados através da " -#~ "rede para outro serviço collectd." - -#~ msgid "" -#~ "System plugins collecting values about system state and ressource usage " -#~ "on the device.:" -#~ msgstr "" -#~ "Plugins do sistema coletando valores sobre o estado do sistema e uso dos " -#~ "recursos neste dispositivo.:" - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "O plugin wireless coleta estatísticas sobre o nível de sinal wireless, o " -#~ "ruído e qualidade." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Configuração do Plugin da Rede Sem Fio (Wireless)" diff --git a/package/luci/applications/luci-app-statistics/po/pt/rrdtool.po b/package/luci/applications/luci-app-statistics/po/pt/rrdtool.po deleted file mode 100644 index 6abbaf7cdd..0000000000 --- a/package/luci/applications/luci-app-statistics/po/pt/rrdtool.po +++ /dev/null @@ -1,359 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-06-02 21:10+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Wireless - Relação Sinal/Ruido" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "dBm" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Nivel de Ruido" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Forca do Sinal" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Wireless - Qualidade do Sinal" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Qualidade do Sinal" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: Tempo de resposta ICMP" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "ms" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Firewall - Pacotes Processados" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "Pacote/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "Cadeia \"%di\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - Transferencia na %pi" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "Bytes/s" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Bytes (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - Pacotes na %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "Packets/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Processado (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Dropado (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Erros (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - Multicast na %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "Pacote/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Pacotes" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - Colisoes na %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "Colisao(es)" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Colisoes" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - Erros na %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "Erro/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Processos" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Processo/s" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Processo %pi - tempo usado da cpu" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "sistema" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "utilizador" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Processo %pi - threads e processos" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "Contagem" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Prcesso %pi - pagina de erros" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Pagina de erros" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "pagina de erros" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Processo %pi - tamanho da memoria virtual" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Bytes" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "memoria virtual" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Usado no Processado #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Transferencia na %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "Bytes/s" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Pacotes na %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "Pacote/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: Ligações TCP na Porta %pi" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "Ligação(ões)" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Utilizacao de Espaco em Disco em %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Bytes" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: Interrupcoes" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "Erro/s" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: Carga do Sistema" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Carga" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 min" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 min" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 min" diff --git a/package/luci/applications/luci-app-statistics/po/pt/statistics.po b/package/luci/applications/luci-app-statistics/po/pt/statistics.po deleted file mode 100644 index 245e6e9bf9..0000000000 --- a/package/luci/applications/luci-app-statistics/po/pt/statistics.po +++ /dev/null @@ -1,824 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-06-01 00:10+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Ação (destino)" - -msgid "Add command for reading values" -msgstr "Adicionar comando para leitura de valores" - -msgid "Add matching rule" -msgstr "Adicionar regra" - -msgid "Add multiple hosts separated by space." -msgstr "Adicionar hosts múltiplos separados por espaço." - -msgid "Add notification command" -msgstr "Adicionar o comando de notificação" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Diretório Base" - -msgid "Basic monitoring" -msgstr "Monitoramento básico" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "Configuração do plugin CPU" - -msgid "CSV Output" -msgstr "Formato CSV" - -msgid "CSV Plugin Configuration" -msgstr "Configuração do plugin CSV" - -msgid "Cache collected data for" -msgstr "Cache dos dados coletados" - -msgid "Cache flush interval" -msgstr "Intervalo de limpeza do cache" - -msgid "Chain" -msgstr "Cadeia" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Configurações do Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd é um pequeno daemon que coleta dados de várias fontes através de " -"diferentes plugins. Nesta página você pode alterar as configurações gerais " -"do daemon collectd." - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Configuração do plugin DF" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Configuração do plugin DNS" - -msgid "Data collection interval" -msgstr "Intervalo da coleta de dados" - -msgid "Datasets definition file" -msgstr "Arquivo com a definição de dados" - -msgid "Destination ip range" -msgstr "IP de destino" - -msgid "Directory for collectd plugins" -msgstr "Diretório para os plugins do collectd" - -msgid "Directory for sub-configurations" -msgstr "Diretório para sub-configurações" - -msgid "Disk Plugin Configuration" -msgstr "Configuração do plugin Disco" - -msgid "Disk Space Usage" -msgstr "Utilização de espaço em disco" - -msgid "Disk Usage" -msgstr "Utilização do Disco" - -msgid "Display Host »" -msgstr "Mostrar Host »" - -msgid "Display timespan »" -msgstr "Mostrar intervalo »" - -msgid "E-Mail Plugin Configuration" -msgstr "Configuração do plugin E-Mail" - -msgid "Email" -msgstr "Email" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Habilitar este plugin" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Configuração do plugin Exec" - -msgid "Filter class monitoring" -msgstr "Monitoramento das Classes de Filtros" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "Limpar cache após" - -msgid "Forwarding between listen and server addresses" -msgstr "Transmissão entre o endereço de escuta e dos servidores" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Gráficos" - -msgid "Group" -msgstr "grupo" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Aqui pode definir comandos externos que serão iniciados pelo collectd a fim " -"de ler determinados valores. Os valores serão lidos a partir do stdout." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Aqui pode definir os comandos externos que serão iniciados pelo collectd " -"quando determinados valores limite forem atingidos. Os valores passados ao " -"comando serão enviados para o stdin." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Aqui você pode definir diversos critérios para as regras iptables " -"selecionadas serem monitoradas." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "Configuração do plugin IRQ" - -msgid "Ignore source addresses" -msgstr "Ignorar endereços de origem" - -msgid "Incoming interface" -msgstr "Interface de entrada" - -msgid "Interface Plugin Configuration" -msgstr "Configuração do plugin Interface" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interrupts" -msgstr "Interrupções" - -msgid "Interval for pings" -msgstr "Intervalo dos pings" - -msgid "Iptables Plugin Configuration" -msgstr "Configuração do plugin Iptables" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" -"Deixar desmarcada para determinar automaticamente as interfaces a " -"monitorizar." - -msgid "Listen host" -msgstr "Endereço de escuta do Host" - -msgid "Listen port" -msgstr "Porta de escuta" - -msgid "Listener interfaces" -msgstr "Escutar na(s) interface(s)" - -msgid "Load Plugin Configuration" -msgstr "Configuração do plugin carga" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Máximo de conexões permitidas" - -msgid "Memory" -msgstr "Memória" - -msgid "Memory Plugin Configuration" -msgstr "Configuração do Plugin de Memória" - -msgid "Monitor all except specified" -msgstr "Monitorizar tudo excepto os especificados" - -msgid "Monitor all local listen ports" -msgstr "Monitorar todas as portas locais" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Monitorar dispositivos" - -msgid "Monitor disks and partitions" -msgstr "Monitoras discos e partições" - -msgid "Monitor filesystem types" -msgstr "Monitorar tipos de sistemas de arquivos" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Monitorar os hosts" - -msgid "Monitor interfaces" -msgstr "Monitorizar interfaces" - -msgid "Monitor interrupts" -msgstr "Monitorar interrupções" - -msgid "Monitor local ports" -msgstr "Monitorar as portas locais" - -msgid "Monitor mount points" -msgstr "Monitorar pontos de montagem" - -msgid "Monitor processes" -msgstr "Monitorar processos" - -msgid "Monitor remote ports" -msgstr "Monitorar portas remotas" - -msgid "Name of the rule" -msgstr "Nome da regra" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Configuração do plugin Netlink" - -msgid "Network" -msgstr "Rede" - -msgid "Network Plugin Configuration" -msgstr "Configuração do plugin Rede" - -msgid "Network plugins" -msgstr "Plugins de rede" - -msgid "Network protocol" -msgstr "Protocolo de rede" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Número de threads para o coletor de dados" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "Somente criar RRAs de média" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Opções" - -msgid "Outgoing interface" -msgstr "Interface de saída" - -msgid "Output plugins" -msgstr "Plugins de saída" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Configuração do plugin Ping" - -msgid "Port" -msgstr "Porta" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Processos" - -msgid "Processes Plugin Configuration" -msgstr "Configuração do plugin Processos" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "Processador" - -msgid "Qdisc monitoring" -msgstr "Monitoramento do Qdisc" - -msgid "RRD XFiles Factor" -msgstr "Arquivos RRD XFiles Factor" - -msgid "RRD heart beat interval" -msgstr "Intervalo entre duas atualizações" - -msgid "RRD step interval" -msgstr "Intervalo de atualização" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "Configuração do plugin RRDTool" - -msgid "Rows per RRA" -msgstr "Linhas por RRA" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "Segundos" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "IP/Hostname do servidor" - -msgid "Server port" -msgstr "Porta do servidor" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Monitoramento das Classes de Shaping" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "IP de origem" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "Diretório de armazenamento" - -msgid "Storage directory for the csv files" -msgstr "Diretório para armazenamento dos arquivos csv" - -msgid "Store data values as rates instead of absolute values" -msgstr "Armazenar os valores dos dados como taxas em vez de valores absolutos" - -msgid "Stored timespans" -msgstr "Intervalos armazenados" - -msgid "System Load" -msgstr "Carga do Sistema" - -msgid "TCP Connections" -msgstr "Conexões TCP" - -msgid "TCPConns Plugin Configuration" -msgstr "Configuração do plugin TCPConns" - -msgid "TTL for network packets" -msgstr "TTL para os pacotes de rede" - -msgid "TTL for ping packets" -msgstr "TTL para os pacotes do ping" - -msgid "Table" -msgstr "Tabela" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" -"O plugin cpu coleta as estatísticas básicas sobre o uso do processador." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"O plugin csv armazena os dados coletados em um arquivo no formato csv para " -"um futuro processamento por outros programas." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"O plugin df coleta estatísticas sobre a utilização de espaço em disco em " -"diferentes dispositivos, pontos de montagem ou tipos de sistemas de arquivos." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"O plugin disco coleta estatísticas de uso detalhadas das partições " -"selecionadas ou discos inteiros." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"O plugin dns coleta estatísticas detalhadas sobre o tráfego do dns nas " -"interfaces selecionadas." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"O plugin de email cria um socket unix que pode ser usado para transmitir " -"estatísticas de email o daemon collectd. Este plugin é essencialmente " -"destinado a ser utilizado em conjunto com o plugin Mail::SpamAssasin::" -"Plugin::Collectd mas pode ser utilizado de outras maneiras também." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"O plugin exec inicia comandos externos para leitura de valores ou notificar " -"processos externos quando um determinado valor limite for atingido." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"O plugin interface plugin coleta estatísticas sobre o tráfego das interfaces " -"selecionadas." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"O plugin iptables irá monitorar as regras de firewall selecionadas e coletar " -"informações sobre pacotes e bytes processados pela regra." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"O plugin irq irá monitorar a taxa de erros por segundo de cada interrupção " -"selecionada. Se nenhuma interrupção for selecionada então todas as " -"interrupções serão monitoradas." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "O plugin carga coleta estatísticas gerais sobre a carga do sistema." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"O plugin Netlink coleta informações detalhadas como qdisc-, classe- e filtro " -"de estatísticas das interfaces selecionadas." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"O plugin rede fornece informações de rede baseadas na comunicação entre as " -"diferentes instâncias do collectd. O Collectd pode operar tanto no modo " -"cliente quanto no modo servidor. No modo cliente os dados coletados " -"localmente são transferidos para um servidor collectd, no modo de servidor a " -"instância local recebe dados de outros hosts." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"O plugin ping irá enviar pacotes ICMP to tipo echo aos hosts selecionados e " -"medir o tempo de resposta para cada host." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"O plugin processo coleta informações como o tempo da cpu, página falhas e " -"uso de memória dos processos selecionados." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"O plugin rrdtool armazena os dados coletados no arquivo de banco de dados " -"rrd.

    Aviso: A má configuração desses valores, resultará " -"em um valor muito elevado no consumo de memória no diretório temporário. " -"Isso pode tornar o equipamento inutilizável!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"O plugin tcpconns coleta informações sobre as conexões TCP abertas das " -"portas selecionadas." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"O plugin unixsock cria um socket unix, que pode ser usado para ler os dados " -"coletados a partir de uma instância do collectd." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Esta seção define em quais interfaces o collectd irá aguardar para receber " -"conexões." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"Esta seção define para qual servidor os dados coletados localmente serão " -"enviados." - -msgid "Try to lookup fully qualified hostname" -msgstr "Tentar encontrar o nome do host completo (FQDN)" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Configuração do plugin Unixsock" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Arquivo PID usado" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "Monitoramento no modo verbose" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "ex. br-ff" - -msgid "e.g. br-lan" -msgstr "ex. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "ex. rejeitar-com tcp-reset" - -msgid "max. 16 chars" -msgstr "max. 16 caract." - -msgid "reduces rrd size" -msgstr "reduzir o tamanho do rrd" - -msgid "seconds; multiple separated by space" -msgstr "segundos; vários valores, separar com espaço" - -msgid "server interfaces" -msgstr "Interfaces do servidor" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Plugis de Sistema" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "As estatísticas são baseadas no Collectd e é utilizado o RRD Tool para renderização das imagens à partir dos dados " -#~ "coletados." - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "O plugin wireless coleta estatísticas sobre o nível de sinal wireless, o " -#~ "ruído e qualidade." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Configuração do plugin Wireless" diff --git a/package/luci/applications/luci-app-statistics/po/ro/rrdtool.po b/package/luci/applications/luci-app-statistics/po/ro/rrdtool.po deleted file mode 100644 index 98787591fe..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ro/rrdtool.po +++ /dev/null @@ -1,360 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-29 17:25+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Nivel zgomot" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Wireless - Calitate semnal" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Calitate semnal" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/ro/statistics.po b/package/luci/applications/luci-app-statistics/po/ro/statistics.po deleted file mode 100644 index a326fec799..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ro/statistics.po +++ /dev/null @@ -1,753 +0,0 @@ -# statistics.pot -# generated from ./applications/luci-statistics/luasrc/i18n/statistics.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-07 17:27+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "" - -msgid "Add command for reading values" -msgstr "" - -msgid "Add matching rule" -msgstr "" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Directorul de baza" - -msgid "Basic monitoring" -msgstr "" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "Configurarea pluginului CPU" - -msgid "CSV Output" -msgstr "Afisarea CSV" - -msgid "CSV Plugin Configuration" -msgstr "Configurarea pluginului CVS" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Setarile Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd e un serviciu mic pentru colectarea de date din diferite surse prin " -"diferite pluginuri. In aceasta pagina poti schimba setarile generale pentru " -"Collectd." - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "" - -msgid "Data collection interval" -msgstr "Intervalul de colectare date" - -msgid "Datasets definition file" -msgstr "Fisierul de definitii dataseturi" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "Directorul pentru pluginurile collectd" - -msgid "Directory for sub-configurations" -msgstr "Directorul pentru sub-configuratii" - -msgid "Disk Plugin Configuration" -msgstr "" - -msgid "Disk Space Usage" -msgstr "Utilizarea spatiului pe disc" - -msgid "Disk Usage" -msgstr "Utilizarea discului" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "" - -msgid "E-Mail Plugin Configuration" -msgstr "" - -msgid "Email" -msgstr "Email" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Grafice" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "Numele de host" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "" - -msgid "Ignore source addresses" -msgstr "" - -msgid "Incoming interface" -msgstr "" - -msgid "Interface Plugin Configuration" -msgstr "" - -msgid "Interfaces" -msgstr "Interfete" - -msgid "Interrupts" -msgstr "Intreruperi" - -msgid "Interval for pings" -msgstr "Interval pentru ping" - -msgid "Iptables Plugin Configuration" -msgstr "" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "" - -msgid "Monitor disks and partitions" -msgstr "" - -msgid "Monitor filesystem types" -msgstr "" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "" - -msgid "Monitor local ports" -msgstr "" - -msgid "Monitor mount points" -msgstr "" - -msgid "Monitor processes" -msgstr "" - -msgid "Monitor remote ports" -msgstr "" - -msgid "Name of the rule" -msgstr "" - -msgid "Netlink" -msgstr "Legatura de retea" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "Retea" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "Pluginuri de retea" - -msgid "Network protocol" -msgstr "" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Numarul de threaduri pentru colectarea datelor" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Outgoing interface" -msgstr "" - -msgid "Output plugins" -msgstr "Pluginuri de iesire" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Procese" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "Procesor" - -msgid "Qdisc monitoring" -msgstr "" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "Secunde" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "" - -msgid "Server port" -msgstr "" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "" - -msgid "Storage directory for the csv files" -msgstr "" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "Incarcarea de sistem" - -msgid "TCP Connections" -msgstr "Conexiuni TCP" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "" - -msgid "TTL for ping packets" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" -"Pluginul pentru CPU colecteaza statistici de baza despre utilizarea " -"procesorului." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "Incearca sa rezolvi numele de domeniu complet" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Fisierul pentru PID folosit" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "" - -msgid "e.g. br-lan" -msgstr "" - -msgid "e.g. reject-with tcp-reset" -msgstr "" - -msgid "max. 16 chars" -msgstr "" - -msgid "reduces rrd size" -msgstr "" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Pluginuri de sistem" diff --git a/package/luci/applications/luci-app-statistics/po/ru/rrdtool.po b/package/luci/applications/luci-app-statistics/po/ru/rrdtool.po deleted file mode 100644 index a63a850806..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ru/rrdtool.po +++ /dev/null @@ -1,360 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-03-26 15:36+0200\n" -"Last-Translator: Anonymous Pootle User\n" -"Language-Team: LANGUAGE \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "%H: Беспроводная связь - отношение сигнал/шум" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "дБм" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "Уровень шума" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "Мощность сигнала" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H: Беспроводная связь - качество сигнала" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "Качество сигнала" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H: Сквозное время ICMP" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "мс" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H: Межсетевой экран - обработанные пакеты" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "пакет/c" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "\"%di\"" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H: Netlink - передача на %pi" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "байт/c" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "Байт (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H: Netlink - пакеты на %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "пакет/c" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "Обработано (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "Исключено (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "Ошибок (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H: Netlink - групповые пакеты на %pi" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "пакет/с" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "Пакеты" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H: Netlink - коллизии на %pi" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "коллиз/сек" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "Коллизии" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H: Netlink - Ошибки на %pi" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "ошибок/c" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H: Процессы" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "Процессов/с" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H: Процесс %pi - время ЦП" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "система" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "пользователь" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H: Процесс %pi - потоков и процессов" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "Количество" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H: Процесс %pi - ошибки страниц" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "Ошибки страниц" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "ошибки страниц" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H: Процесс %pi - размер виртуальной памяти" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "Байт" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "виртуальная память" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H: Использование ЦП #%pi" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H: Передача на %di" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "байт/c" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H: Пакетов на %di" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "пакетов/c" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H: TCP соединений на порт %pi " - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "соединений/с" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H: Использование дискового пространства на %di" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "Байт" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H: прерывания" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "запросов/с" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H: Загрузка системы" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "Загрузка" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 мин." - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 мин." - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 мин." diff --git a/package/luci/applications/luci-app-statistics/po/ru/statistics.po b/package/luci/applications/luci-app-statistics/po/ru/statistics.po deleted file mode 100644 index 9d0ff9fdf2..0000000000 --- a/package/luci/applications/luci-app-statistics/po/ru/statistics.po +++ /dev/null @@ -1,853 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: statistics\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-12-05 17:11+0200\n" -"Last-Translator: Dmitri <4glitch@gmail.com>\n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Действие (цель)" - -msgid "Add command for reading values" -msgstr "Добавить команду для чтения значений" - -msgid "Add matching rule" -msgstr "Добавить правило выборки" - -msgid "Add multiple hosts separated by space." -msgstr "Добавить несколько хостов, разделённых пробелом" - -msgid "Add notification command" -msgstr "Добавить команду уведомления" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Базовая директория" - -msgid "Basic monitoring" -msgstr "Базовая статистика" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "Конфигурация модуля CPU" - -msgid "CSV Output" -msgstr "Вывод в CSV" - -msgid "CSV Plugin Configuration" -msgstr "Конфигурация модуля CSV" - -msgid "Cache collected data for" -msgstr "Кэшировать собранную статистику в течение" - -msgid "Cache flush interval" -msgstr "Интервал сброса кэша" - -msgid "Chain" -msgstr "Цепочка" - -msgid "CollectLinks" -msgstr "Сбор информации о соединениях (CollectLinks)" - -msgid "CollectRoutes" -msgstr "Сбор информации о маршрутах (CollectRoutes)" - -msgid "CollectTopology" -msgstr "Сбор информации о топологии (CollectTopology)" - -msgid "Collectd Settings" -msgstr "Настройки Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd - это сервис для сбора данных с разных модулей. На этой странице вы " -"можете изменить настройки Сollectd." - -msgid "Conntrack" -msgstr "Отслеживание подключения (Conntrack)" - -msgid "Conntrack Plugin Configuration" -msgstr "Настройка плагина Conntrack" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Конфигурация модуля DF" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Конфигурация модуля DNS" - -msgid "Data collection interval" -msgstr "Интервал сбора данных" - -msgid "Datasets definition file" -msgstr "Файл с определением набора данных" - -msgid "Destination ip range" -msgstr "Диапазон IP-адресов назначения" - -msgid "Directory for collectd plugins" -msgstr "Директория с модулями collectd" - -msgid "Directory for sub-configurations" -msgstr "Директория конфигураций" - -msgid "Disk Plugin Configuration" -msgstr "Конфигурация модуля Disk" - -msgid "Disk Space Usage" -msgstr "Использование диска" - -msgid "Disk Usage" -msgstr "Использование диска" - -msgid "Display Host »" -msgstr "Показать узел »" - -msgid "Display timespan »" -msgstr "Показать за промежуток »" - -msgid "E-Mail Plugin Configuration" -msgstr "Конфигурация модуля E-Mail" - -msgid "Email" -msgstr "E-mail" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Включить этот модуль" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Конфигурация модуля Exec" - -#, fuzzy -msgid "Filter class monitoring" -msgstr "Мониторинг классов фильтров" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "Сбросить кэш после" - -msgid "Forwarding between listen and server addresses" -msgstr "Перенаправление между локальным адресом и адресом сервера" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Графики" - -msgid "Group" -msgstr "Группа" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Здесь вы можете определить внешние команды, которые будут выполнены для " -"чтения определённых значений. Значения будут считаны со стандартного вывода." - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Здесь вы можете определить внешние команды, которые будут выполнены, когда " -"значения достигнут определённого порога. Значения будут переданы на " -"стандартный ввод вызванным программам." - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Здесь вы можете указать различные критерии, по которым будут выбраны правила " -"для сбора статистики." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "Хост" - -msgid "Hostname" -msgstr "Имя хоста" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "IP-адрес или имя хоста, с которых получать текстовый вывод" - -msgid "IRQ Plugin Configuration" -msgstr "Конфигурация модуля IRQ" - -msgid "Ignore source addresses" -msgstr "Игнорировать адреса-источники" - -msgid "Incoming interface" -msgstr "Входящий интерфейс" - -msgid "Interface Plugin Configuration" -msgstr "Конфигурация модуля Interface" - -msgid "Interfaces" -msgstr "Интерфейсы" - -msgid "Interrupts" -msgstr "Прерывания" - -msgid "Interval for pings" -msgstr "Интервал для ping-запросов" - -msgid "Iptables Plugin Configuration" -msgstr "Конфигурация модуля Iptables" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" -"Оставьте невыбранным для автоматического определения интерфейсов для " -"мониторинга." - -msgid "Listen host" -msgstr "Хост" - -msgid "Listen port" -msgstr "Порт" - -msgid "Listener interfaces" -msgstr "Использовать интерфейсы" - -msgid "Load Plugin Configuration" -msgstr "Конфигурация модуля Load" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Максимальное число соединений" - -msgid "Memory" -msgstr "Память" - -msgid "Memory Plugin Configuration" -msgstr "Конфигурация модуля Memory" - -msgid "Monitor all except specified" -msgstr "Собирать статистику со всех, кроме указанных" - -msgid "Monitor all local listen ports" -msgstr "Собирать статистику со всех портов, ожидающих соединения" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Собирать статистику с устройств" - -msgid "Monitor disks and partitions" -msgstr "Собирать статистику с дисков и разделов" - -msgid "Monitor filesystem types" -msgstr "Собирать статистику с файловых систем" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Собирать статистику с хостов" - -msgid "Monitor interfaces" -msgstr "Собирать статистику с интерфейсов" - -msgid "Monitor interrupts" -msgstr "Собирать статистику по прерываниям" - -msgid "Monitor local ports" -msgstr "Собирать статистику с локальных портов" - -msgid "Monitor mount points" -msgstr "Собирать статистику с точек монтирования" - -msgid "Monitor processes" -msgstr "Собирать статистику с процессов" - -msgid "Monitor remote ports" -msgstr "Собирать статистику с удалённых портов" - -msgid "Name of the rule" -msgstr "Название правила" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Конфигурация модуля Netlink" - -msgid "Network" -msgstr "Network" - -msgid "Network Plugin Configuration" -msgstr "Конфигурация модуля Network" - -msgid "Network plugins" -msgstr "Сетевые модули" - -msgid "Network protocol" -msgstr "Сетевой протокол" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Количество потоков сбора данных" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "Настройка плагина OLSRd" - -msgid "Only create average RRAs" -msgstr "Создавать только средние RRA" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Опции" - -msgid "Outgoing interface" -msgstr "Исходящий интерфейс" - -msgid "Output plugins" -msgstr "Модули вывода" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Конфигурация модуля Ping" - -msgid "Port" -msgstr "Порт" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Процессы" - -msgid "Processes Plugin Configuration" -msgstr "Конфигурация модуля Processes" - -msgid "Processes to monitor separated by space" -msgstr "Процессы для мониторинга (разделённые пробелом)" - -msgid "Processor" -msgstr "Processor" - -msgid "Qdisc monitoring" -msgstr "Мониторинг Qdisc" - -#, fuzzy -msgid "RRD XFiles Factor" -msgstr "Фактор XFiles RRD" - -#, fuzzy -msgid "RRD heart beat interval" -msgstr "Интервал heartbeat RRD" - -msgid "RRD step interval" -msgstr "Интервал шага RRD" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "Конфигурация модуля RRDTool" - -msgid "Rows per RRA" -msgstr "Количество строк в RRA" - -msgid "Script" -msgstr "Скрипт" - -msgid "Seconds" -msgstr "Секунды" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Хост сервера" - -msgid "Server port" -msgstr "Порт сервера" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Мониторинг классов шейпинга" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "Файл сокета" - -msgid "Socket group" -msgstr "Группа сокета" - -msgid "Socket permissions" -msgstr "Права доступа сокета" - -msgid "Source ip range" -msgstr "Диапазон IP-адресов источника" - -msgid "Specifies what information to collect about links." -msgstr "Указывает, какую информацию собирать о соединениях." - -msgid "Specifies what information to collect about routes." -msgstr "Указывает, какую информацию собирать о маршрутах." - -msgid "Specifies what information to collect about the global topology." -msgstr "Указывает, какую информацию собирать о глобальной топологии." - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Статистика" - -msgid "Storage directory" -msgstr "Директория с данными" - -msgid "Storage directory for the csv files" -msgstr "Директория для CSV-файлов" - -msgid "Store data values as rates instead of absolute values" -msgstr "Хранить данные в виде коэффициентов вместо абсолютных значений" - -msgid "Stored timespans" -msgstr "Сохранённые промежутки времени" - -msgid "System Load" -msgstr "Загрузка системы" - -msgid "TCP Connections" -msgstr "TCPConns" - -msgid "TCPConns Plugin Configuration" -msgstr "Конфигурация модуля TCPConns" - -msgid "TTL for network packets" -msgstr "TTL для сетевых пакетов" - -msgid "TTL for ping packets" -msgstr "TTL для ping-пакетов" - -msgid "Table" -msgstr "Таблица" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" -"Модуль OLSRd считывает информацию о узловых сетях с модуля txtinfo OLSRd." - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" -"Модуль Conntrack собирает статистику о количестве отслеживаемых соединений." - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "Модуль CPU собирает статистику по использованию процессора." - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"Модуль CSV позволяет сохранить статистику в формате CSV для последующей " -"обработки." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"Модуль DF собирает статистику о доступном пространстве на различных " -"устройствах, точках монтирования или файловых системах." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"Модуль Disk собирает подробную статистику для выбранных разделов или дисков." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -"Модуль DNS собирает подробную статистику о DNS-трафике на выбранных " -"интерфейсах." - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"Модуль E-mail создает Unix-сокет, который может быть использован для " -"передачи статистики эл. почты работающему сервису collectd. В основном, этот " -"модуль предназначен для использования вместе с Mail::SpamAssasin::Plugin::" -"Collectd." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"Модуль Exec выполняет внешнюю команду в случае, когда определённые значения " -"достигают заданного порога." - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "Модуль Interface собирает статистику на выбранных сетевых интерфейсах." - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"Модуль Iptables собирает статистику с определённых правил межсетевого экрана." - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"Модуль IRQ собирает статистику по выбранным прерываниям. Если ни одно " -"прерывание не выбрано, сбор статистики будет проводиться по всем прерываниям." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" -"Модуль Iwinfo собирает статистику о беспроводном сигнале, шуме и качестве." - -msgid "The load plugin collects statistics about the general system load." -msgstr "Модуль Load собирает статистику о загрузке системы." - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "Модуль Memory собирает статистику об использовании памяти." - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"Модуль Netlink собирает расширенную статистику с выбранных интерфейсов." - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"Модуль Network предоставляет возможность сетевого обмена данными между " -"разными сервисами collectd. Collectd может работать в режиме сервера или " -"клиента. В режиме клиента, локальная статистика передается collectd-серверу, " -"в режиме сервера collectd собирает статистику с удалённых хостов." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"Модуль Ping посылает ICMP-запросы выбранным хостам и измеряет время отклика." - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"Модуль Processes собирает статистику для выбранных процессов об " -"использовании ЦП, ошибках обращения к страницам памяти, использовании памяти." - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"Модуль Rrdtool сохраняет статистику в формате rrd для последующего " -"построения диаграмм.

    Внимание: установка неверных " -"параметров может привезти к высокому потреблению памяти во временной " -"директории. Это, в свою очередь, может привести к отказу устройства!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"Модуль TCPConns собирает информацию об открытых TCP-соединениях на выбранных " -"портах." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"Модуль UnixSock создает Unix-сокет, который может быть использован для " -"получения статистики от работающего сервиса collectd." - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Эта секция определяет интерфейсы, на которых collectd будет обрабатывать " -"входящие соединения." - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" -"Эта секция определяет серверы, на которые будет передаваться локальная " -"статистика." - -msgid "Try to lookup fully qualified hostname" -msgstr "Пытаться определять имя хоста" - -msgid "UPS" -msgstr "ИБП" - -msgid "UPS Plugin Configuration" -msgstr "Настройка плагина ИБП" - -#, fuzzy -msgid "UPS name in NUT ups@host format" -msgstr "Имя ИБП в ups@host NUT-формате" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Конфигурация модуля UnixSock" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Используемый PID-файл" - -msgid "User" -msgstr "Пользователь" - -msgid "Verbose monitoring" -msgstr "Расширенная статистика" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "Конфигурация модуля Iwinfo" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "напр. br-ff" - -msgid "e.g. br-lan" -msgstr "напр. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "напр. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "не более 16 символов" - -msgid "reduces rrd size" -msgstr "уменьшает размер rrd" - -#, fuzzy -msgid "seconds; multiple separated by space" -msgstr "секунды; разделяются пробелом" - -msgid "server interfaces" -msgstr "интерфейсы сервера" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "Системные модули" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "Данная статистика основана на программе Collectd и использует RRD Tool для построения диаграмм." - -#~ msgid "Installed network plugins:" -#~ msgstr "Установленные сетевые модули:" - -#~ msgid "Installed output plugins:" -#~ msgstr "Установленные модули вывода:" - -#~ msgid "" -#~ "Network plugins are used to collect information about open tcp " -#~ "connections, interface traffic, iptables rules etc." -#~ msgstr "" -#~ "Сетевые модули используются для сбора информации об открытых TCP-" -#~ "соединениях, трафике, правилах iptables и т.п." - -#~ msgid "" -#~ "Output plugins provide different possibilities to store collected data. " -#~ "It is possible to enable multiple plugin at one, for example to store " -#~ "collected data in rrd databases and to transmit the data over the network " -#~ "to other collectd instances." -#~ msgstr "" -#~ "Модули вывода обеспечивают различные варианты сохранения собранных " -#~ "данных. Можно включить несколько модулей, например, чтобы сохранить " -#~ "собранные данные в базе данных RRD и передать их по сети другим " -#~ "инстанциям collectd." - -#~ msgid "" -#~ "System plugins collecting values about system state and ressource usage " -#~ "on the device.:" -#~ msgstr "" -#~ "Системные модули, собирающие данные о состоянии системы и использовании " -#~ "ресурсов устройства:" - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "Модуль Wireless собирает статистику о силе, шуме и качестве сигнала." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Конфигурация модуля Wireless" diff --git a/package/luci/applications/luci-app-statistics/po/sk/rrdtool.po b/package/luci/applications/luci-app-statistics/po/sk/rrdtool.po deleted file mode 100644 index fd3781f5f3..0000000000 --- a/package/luci/applications/luci-app-statistics/po/sk/rrdtool.po +++ /dev/null @@ -1,356 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Content-Type: text/plain; charset=ASCII\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/sk/statistics.po b/package/luci/applications/luci-app-statistics/po/sk/statistics.po deleted file mode 100644 index 53858ca540..0000000000 --- a/package/luci/applications/luci-app-statistics/po/sk/statistics.po +++ /dev/null @@ -1,736 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "" - -msgid "Add command for reading values" -msgstr "" - -msgid "Add matching rule" -msgstr "" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "" - -msgid "Basic monitoring" -msgstr "" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "" - -msgid "CSV Output" -msgstr "" - -msgid "CSV Plugin Configuration" -msgstr "" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS Plugin Configuration" -msgstr "" - -msgid "Data collection interval" -msgstr "" - -msgid "Datasets definition file" -msgstr "" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "" - -msgid "Directory for sub-configurations" -msgstr "" - -msgid "Disk Plugin Configuration" -msgstr "" - -msgid "Disk Space Usage" -msgstr "" - -msgid "Disk Usage" -msgstr "" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "" - -msgid "E-Mail Plugin Configuration" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "" - -msgid "Exec Plugin Configuration" -msgstr "" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "" - -msgid "Ignore source addresses" -msgstr "" - -msgid "Incoming interface" -msgstr "" - -msgid "Interface Plugin Configuration" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interrupts" -msgstr "" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "" - -msgid "Monitor disks and partitions" -msgstr "" - -msgid "Monitor filesystem types" -msgstr "" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "" - -msgid "Monitor local ports" -msgstr "" - -msgid "Monitor mount points" -msgstr "" - -msgid "Monitor processes" -msgstr "" - -msgid "Monitor remote ports" -msgstr "" - -msgid "Name of the rule" -msgstr "" - -msgid "Netlink" -msgstr "" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "" - -msgid "Network protocol" -msgstr "" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Outgoing interface" -msgstr "" - -msgid "Output plugins" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Qdisc monitoring" -msgstr "" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "" - -msgid "Server port" -msgstr "" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "" - -msgid "Storage directory for the csv files" -msgstr "" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "" - -msgid "TCP Connections" -msgstr "" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "" - -msgid "TTL for ping packets" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "" - -msgid "Unixsock Plugin Configuration" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "" - -msgid "e.g. br-lan" -msgstr "" - -msgid "e.g. reject-with tcp-reset" -msgstr "" - -msgid "max. 16 chars" -msgstr "" - -msgid "reduces rrd size" -msgstr "" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/sv/rrdtool.po b/package/luci/applications/luci-app-statistics/po/sv/rrdtool.po deleted file mode 100644 index 580c9f35c8..0000000000 --- a/package/luci/applications/luci-app-statistics/po/sv/rrdtool.po +++ /dev/null @@ -1,357 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Content-Type: text/plain; charset=ASCII\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/sv/statistics.po b/package/luci/applications/luci-app-statistics/po/sv/statistics.po deleted file mode 100644 index 9d738f2f33..0000000000 --- a/package/luci/applications/luci-app-statistics/po/sv/statistics.po +++ /dev/null @@ -1,743 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "" - -msgid "Add command for reading values" -msgstr "Lägg till kommando för läsning av värden" - -msgid "Add matching rule" -msgstr "Lägg till en matchande regel" - -msgid "Add multiple hosts separated by space." -msgstr "Lägg till flertalet värdar separerade av mellanslag." - -msgid "Add notification command" -msgstr "Lägg till aviseringskommando" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Basmapp" - -msgid "Basic monitoring" -msgstr "Standardövervakning" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "" - -msgid "CSV Output" -msgstr "CSV-utmatning" - -msgid "CSV Plugin Configuration" -msgstr "" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "Kedja" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Inställningar för Collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd är en liten demon för insamling av data från olika källor via olika " -"insticksprogam. På den här sidan så kan du ändra generella inställningar för " -"collectd-demonen." - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet DF" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet DNS" - -msgid "Data collection interval" -msgstr "Intervall för insamling av data" - -msgid "Datasets definition file" -msgstr "" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "Mapp för collectd's insticksprogram" - -msgid "Directory for sub-configurations" -msgstr "Mapp för under-konfigurationer" - -msgid "Disk Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet Disk" - -msgid "Disk Space Usage" -msgstr "Användning av diskutrymme" - -msgid "Disk Usage" -msgstr "Användning av disk" - -msgid "Display Host »" -msgstr "Visa värd »" - -msgid "Display timespan »" -msgstr "Visa tidsspann »" - -msgid "E-Mail Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet E-post" - -msgid "Email" -msgstr "E-post" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Aktivera det här insticksprogrammet" - -msgid "Entropy" -msgstr "Entropi" - -msgid "Entropy Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet Entropi" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet Exec" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "Brandvägg" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "Vidarebefordring mellan lyssning och server-adressen" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "Generall insticksprogram" - -msgid "Generate a separate graph for each logged user" -msgstr "Generera en separat graf för varje loggade användare" - -msgid "Graphs" -msgstr "Grafer" - -msgid "Group" -msgstr "Grupp" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" -"Håll ner Ctrl för att välja flera poster eller för att inte välja poster." - -msgid "Host" -msgstr "Värd" - -msgid "Hostname" -msgstr "Värdnamn" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet IRQ" - -msgid "Ignore source addresses" -msgstr "Ignorera källadresser" - -msgid "Incoming interface" -msgstr "Inkommande gränssnitt" - -msgid "Interface Plugin Configuration" -msgstr "Konfiguration av insticksprogrammets gränssnitt" - -msgid "Interfaces" -msgstr "Gränssnitt" - -msgid "Interrupts" -msgstr "Avbrott" - -msgid "Interval for pings" -msgstr "Intervaller för pingningar" - -msgid "Iptables Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet Iptabels" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "Värd för lyssning" - -msgid "Listen port" -msgstr "Lyssningsport" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet Load" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Maximalt tillåtna anslutningar" - -msgid "Memory" -msgstr "Minne" - -msgid "Memory Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet Memory" - -msgid "Monitor all except specified" -msgstr "Övervaka alla förutom specificerat" - -msgid "Monitor all local listen ports" -msgstr "Övervaka alla lokala lyssningsportar" - -msgid "Monitor all sensors" -msgstr "Övervaka alla sensorer" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Övervaka enheter" - -msgid "Monitor disks and partitions" -msgstr "Övervaka hårddiskar och partitioner" - -msgid "Monitor filesystem types" -msgstr "Övervaka filsystemtyper" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Övervaka värdar" - -msgid "Monitor interfaces" -msgstr "Övervaka gränssnitt" - -msgid "Monitor interrupts" -msgstr "Övervaka avbrott" - -msgid "Monitor local ports" -msgstr "Övervaka lokala portar" - -msgid "Monitor mount points" -msgstr "Övervaka monteringspunkter" - -msgid "Monitor processes" -msgstr "Övervaka processer" - -msgid "Monitor remote ports" -msgstr "Övervaka fjärrportar" - -msgid "Name of the rule" -msgstr "Regelns namn" - -msgid "Netlink" -msgstr "Nätlänk" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "Nätverk" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "Insticksprogram för nätverket" - -msgid "Network protocol" -msgstr "Nätverksprotokoll" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Antalet trådar för insamling av data" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "Statusfiler för OpenVPN" - -msgid "Options" -msgstr "Alternativ" - -msgid "Outgoing interface" -msgstr "Utgående gränssnitt" - -msgid "Output plugins" -msgstr "Insticksprogram för utmatning" - -msgid "Ping" -msgstr "Pinga" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Processer" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "Processor" - -msgid "Qdisc monitoring" -msgstr "Övervakning av Qdisc" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "Rader per RRA" - -msgid "Script" -msgstr "Skript" - -msgid "Seconds" -msgstr "Sekunder" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "Sensorer" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Värd-server" - -msgid "Server port" -msgstr "Server-port" - -msgid "Setup" -msgstr "Installera" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "Socketfil" - -msgid "Socket group" -msgstr "Socketgrupp" - -msgid "Socket permissions" -msgstr "Tillstånd för socket" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "Anger vilken information som ska samlas in om länkar." - -msgid "Specifies what information to collect about routes." -msgstr "Anger vilken information som ska samlas in om rutter" - -msgid "Specifies what information to collect about the global topology." -msgstr "Anger vilken information som ska samlas in om den globala topologin." - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "Statistik" - -msgid "Storage directory" -msgstr "Lagringsmapp" - -msgid "Storage directory for the csv files" -msgstr "Lagringsmapp för csv-filerna" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "Lagrade tidsspann" - -msgid "System Load" -msgstr "Belastning av systemet" - -msgid "TCP Connections" -msgstr "TCP-anslutningar" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "TTL för nätverkspaket" - -msgid "TTL for ping packets" -msgstr "TTL för ping-paket" - -msgid "Table" -msgstr "Tabell" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "Försök att kolla upp fullständigt kvalificerade värdnamn" - -msgid "UPS" -msgstr "UPS" - -msgid "UPS Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet UPS" - -msgid "UPS name in NUT ups@host format" -msgstr "UPS-namnet i NUT ups@värd-format" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet UnixSock" - -msgid "Uptime" -msgstr "Upptid" - -msgid "Uptime Plugin Configuration" -msgstr "Konfiguration av insticksprogrammet Upptid" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Använd PID-fil" - -msgid "User" -msgstr "Användare" - -msgid "Verbose monitoring" -msgstr "Detaljerad övervakning" - -msgid "Wireless" -msgstr "Trådlöst" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" -"Du kan installera ytterligare collectd-mod* insticksprogram för att aktivera " -"mer statistik." - -msgid "e.g. br-ff" -msgstr "t.ex br-ff" - -msgid "e.g. br-lan" -msgstr "t.ex br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "t.ex reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "maxmialt 16 tecken" - -msgid "reduces rrd size" -msgstr "reducerar storlek på rrd" - -msgid "seconds; multiple separated by space" -msgstr "sekunder; flertalet åtskillda med mellanrum" - -msgid "server interfaces" -msgstr "gränssnitt för servern" diff --git a/package/luci/applications/luci-app-statistics/po/templates/rrdtool.pot b/package/luci/applications/luci-app-statistics/po/templates/rrdtool.pot deleted file mode 100644 index 0a105ecd4c..0000000000 --- a/package/luci/applications/luci-app-statistics/po/templates/rrdtool.pot +++ /dev/null @@ -1,349 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "Content-Type: text/plain; charset=ISO-8859-1" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/templates/statistics.pot b/package/luci/applications/luci-app-statistics/po/templates/statistics.pot deleted file mode 100644 index ec630b6962..0000000000 --- a/package/luci/applications/luci-app-statistics/po/templates/statistics.pot +++ /dev/null @@ -1,729 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "" - -msgid "Add command for reading values" -msgstr "" - -msgid "Add matching rule" -msgstr "" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "" - -msgid "Basic monitoring" -msgstr "" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "" - -msgid "CSV Output" -msgstr "" - -msgid "CSV Plugin Configuration" -msgstr "" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS Plugin Configuration" -msgstr "" - -msgid "Data collection interval" -msgstr "" - -msgid "Datasets definition file" -msgstr "" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "" - -msgid "Directory for sub-configurations" -msgstr "" - -msgid "Disk Plugin Configuration" -msgstr "" - -msgid "Disk Space Usage" -msgstr "" - -msgid "Disk Usage" -msgstr "" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "" - -msgid "E-Mail Plugin Configuration" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "" - -msgid "Exec Plugin Configuration" -msgstr "" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "" - -msgid "Ignore source addresses" -msgstr "" - -msgid "Incoming interface" -msgstr "" - -msgid "Interface Plugin Configuration" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interrupts" -msgstr "" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "" - -msgid "Monitor disks and partitions" -msgstr "" - -msgid "Monitor filesystem types" -msgstr "" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "" - -msgid "Monitor local ports" -msgstr "" - -msgid "Monitor mount points" -msgstr "" - -msgid "Monitor processes" -msgstr "" - -msgid "Monitor remote ports" -msgstr "" - -msgid "Name of the rule" -msgstr "" - -msgid "Netlink" -msgstr "" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "" - -msgid "Network protocol" -msgstr "" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Outgoing interface" -msgstr "" - -msgid "Output plugins" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Qdisc monitoring" -msgstr "" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "" - -msgid "Server port" -msgstr "" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "" - -msgid "Storage directory for the csv files" -msgstr "" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "" - -msgid "TCP Connections" -msgstr "" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "" - -msgid "TTL for ping packets" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "" - -msgid "Unixsock Plugin Configuration" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "" - -msgid "e.g. br-lan" -msgstr "" - -msgid "e.g. reject-with tcp-reset" -msgstr "" - -msgid "max. 16 chars" -msgstr "" - -msgid "reduces rrd size" -msgstr "" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/tr/rrdtool.po b/package/luci/applications/luci-app-statistics/po/tr/rrdtool.po deleted file mode 100644 index cb2187b4bb..0000000000 --- a/package/luci/applications/luci-app-statistics/po/tr/rrdtool.po +++ /dev/null @@ -1,356 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ASCII\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/tr/statistics.po b/package/luci/applications/luci-app-statistics/po/tr/statistics.po deleted file mode 100644 index 860ff95e88..0000000000 --- a/package/luci/applications/luci-app-statistics/po/tr/statistics.po +++ /dev/null @@ -1,737 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "" - -msgid "Add command for reading values" -msgstr "" - -msgid "Add matching rule" -msgstr "" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "" - -msgid "Basic monitoring" -msgstr "" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "" - -msgid "CSV Output" -msgstr "" - -msgid "CSV Plugin Configuration" -msgstr "" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS Plugin Configuration" -msgstr "" - -msgid "Data collection interval" -msgstr "" - -msgid "Datasets definition file" -msgstr "" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "" - -msgid "Directory for sub-configurations" -msgstr "" - -msgid "Disk Plugin Configuration" -msgstr "" - -msgid "Disk Space Usage" -msgstr "" - -msgid "Disk Usage" -msgstr "" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "" - -msgid "E-Mail Plugin Configuration" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "" - -msgid "Exec Plugin Configuration" -msgstr "" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "" - -msgid "Ignore source addresses" -msgstr "" - -msgid "Incoming interface" -msgstr "" - -msgid "Interface Plugin Configuration" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Interrupts" -msgstr "" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "" - -msgid "Monitor disks and partitions" -msgstr "" - -msgid "Monitor filesystem types" -msgstr "" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "" - -msgid "Monitor local ports" -msgstr "" - -msgid "Monitor mount points" -msgstr "" - -msgid "Monitor processes" -msgstr "" - -msgid "Monitor remote ports" -msgstr "" - -msgid "Name of the rule" -msgstr "" - -msgid "Netlink" -msgstr "" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "" - -msgid "Network protocol" -msgstr "" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Outgoing interface" -msgstr "" - -msgid "Output plugins" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Qdisc monitoring" -msgstr "" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "" - -msgid "Server port" -msgstr "" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "" - -msgid "Storage directory for the csv files" -msgstr "" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "" - -msgid "TCP Connections" -msgstr "" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "" - -msgid "TTL for ping packets" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "" - -msgid "Unixsock Plugin Configuration" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "" - -msgid "e.g. br-lan" -msgstr "" - -msgid "e.g. reject-with tcp-reset" -msgstr "" - -msgid "max. 16 chars" -msgstr "" - -msgid "reduces rrd size" -msgstr "" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/uk/rrdtool.po b/package/luci/applications/luci-app-statistics/po/uk/rrdtool.po deleted file mode 100644 index 5a535f19bb..0000000000 --- a/package/luci/applications/luci-app-statistics/po/uk/rrdtool.po +++ /dev/null @@ -1,357 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/uk/statistics.po b/package/luci/applications/luci-app-statistics/po/uk/statistics.po deleted file mode 100644 index ac9ae50940..0000000000 --- a/package/luci/applications/luci-app-statistics/po/uk/statistics.po +++ /dev/null @@ -1,742 +0,0 @@ -# statistics.pot -# generated from ./applications/luci-statistics/luasrc/i18n/statistics.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-03-12 23:50+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "" - -msgid "Add command for reading values" -msgstr "" - -msgid "Add matching rule" -msgstr "" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "" - -msgid "Basic monitoring" -msgstr "" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "" - -msgid "CSV Output" -msgstr "" - -msgid "CSV Plugin Configuration" -msgstr "" - -msgid "Cache collected data for" -msgstr "" - -msgid "Cache flush interval" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "" - -msgid "Data collection interval" -msgstr "" - -msgid "Datasets definition file" -msgstr "" - -msgid "Destination ip range" -msgstr "" - -msgid "Directory for collectd plugins" -msgstr "" - -msgid "Directory for sub-configurations" -msgstr "" - -msgid "Disk Plugin Configuration" -msgstr "" - -msgid "Disk Space Usage" -msgstr "" - -msgid "Disk Usage" -msgstr "" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "" - -msgid "E-Mail Plugin Configuration" -msgstr "" - -msgid "Email" -msgstr "" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "" - -msgid "Exec Plugin Configuration" -msgstr "" - -msgid "Filter class monitoring" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Flush cache after" -msgstr "" - -msgid "Forwarding between listen and server addresses" -msgstr "" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "" - -msgid "Ignore source addresses" -msgstr "" - -msgid "Incoming interface" -msgstr "" - -msgid "Interface Plugin Configuration" -msgstr "" - -msgid "Interfaces" -msgstr "Інтерфейси" - -msgid "Interrupts" -msgstr "" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Listener interfaces" -msgstr "" - -msgid "Load Plugin Configuration" -msgstr "" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "" - -msgid "Monitor disks and partitions" -msgstr "" - -msgid "Monitor filesystem types" -msgstr "" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "" - -msgid "Monitor local ports" -msgstr "" - -msgid "Monitor mount points" -msgstr "" - -msgid "Monitor processes" -msgstr "" - -msgid "Monitor remote ports" -msgstr "" - -msgid "Name of the rule" -msgstr "" - -msgid "Netlink" -msgstr "" - -msgid "Netlink Plugin Configuration" -msgstr "" - -msgid "Network" -msgstr "Мережа" - -msgid "Network Plugin Configuration" -msgstr "" - -msgid "Network plugins" -msgstr "" - -msgid "Network protocol" -msgstr "Мережевий протокол" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Outgoing interface" -msgstr "" - -msgid "Output plugins" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Ping Plugin Configuration" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Processes Plugin Configuration" -msgstr "" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Qdisc monitoring" -msgstr "" - -msgid "RRD XFiles Factor" -msgstr "" - -msgid "RRD heart beat interval" -msgstr "" - -msgid "RRD step interval" -msgstr "" - -msgid "RRDTool" -msgstr "" - -msgid "RRDTool Plugin Configuration" -msgstr "" - -msgid "Rows per RRA" -msgstr "" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "" - -msgid "Server port" -msgstr "" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "" - -msgid "Storage directory for the csv files" -msgstr "" - -msgid "Store data values as rates instead of absolute values" -msgstr "" - -msgid "Stored timespans" -msgstr "" - -msgid "System Load" -msgstr "" - -msgid "TCP Connections" -msgstr "" - -msgid "TCPConns Plugin Configuration" -msgstr "" - -msgid "TTL for network packets" -msgstr "" - -msgid "TTL for ping packets" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "" - -msgid "Try to lookup fully qualified hostname" -msgstr "" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "" - -msgid "Unixsock Plugin Configuration" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "" - -msgid "User" -msgstr "Користувач" - -msgid "Verbose monitoring" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "" - -msgid "e.g. br-lan" -msgstr "" - -msgid "e.g. reject-with tcp-reset" -msgstr "" - -msgid "max. 16 chars" -msgstr "" - -msgid "reduces rrd size" -msgstr "" - -msgid "seconds; multiple separated by space" -msgstr "" - -msgid "server interfaces" -msgstr "" diff --git a/package/luci/applications/luci-app-statistics/po/vi/rrdtool.po b/package/luci/applications/luci-app-statistics/po/vi/rrdtool.po deleted file mode 100644 index ca94cf8d0c..0000000000 --- a/package/luci/applications/luci-app-statistics/po/vi/rrdtool.po +++ /dev/null @@ -1,524 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:59+0200\n" -"PO-Revision-Date: 2009-08-13 14:45+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "" - -#~ msgid "%H: Wireless - Signal Noise Ratio" -#~ msgstr "%H: Wireless - Signal Noise Ratio" - -#~ msgid "dBm" -#~ msgstr "dBm" - -#~ msgid "Noise Level" -#~ msgstr "Noise Level" - -#~ msgid "Signal Strength" -#~ msgstr "Độ mạnh của tín hiệu" - -#~ msgid "%H: Wireless - Signal Quality" -#~ msgstr "%H: Wireless -Chất lượng tín hiệu" - -#~ msgid "n" -#~ msgstr "n" - -#~ msgid "Signal Quality" -#~ msgstr "Chất lượng tín hiệu " - -#~ msgid "%H: ICMP Roundtrip Times" -#~ msgstr "%H: ICMP thời gian đi một vòng" - -#~ msgid "ms" -#~ msgstr "ms" - -#~ msgid "%H: Firewall - Processed Packets" -#~ msgstr "%H: Firewall - Gói đã xử lý" - -#~ msgid "Chain \"%di\"" -#~ msgstr "Chuỗi \"%di\"" - -#~ msgid "%H: Netlink - Transfer on %pi" -#~ msgstr "%H: Netlink - chuyển về %pi" - -#~ msgid "Bytes (%ds)" -#~ msgstr "Bytes (%ds)" - -#~ msgid "%H: Netlink - Packets on %pi" -#~ msgstr "%H: Netlink - Đóng gói trên %pi" - -#~ msgid "Processed (%ds)" -#~ msgstr "Đã xử lý (%ds)" - -#~ msgid "Dropped (%ds)" -#~ msgstr "" -#~ "Dropped \n" -#~ " \n" -#~ " \n" -#~ "(%ds)" - -#~ msgid "Errors (%ds)" -#~ msgstr "" -#~ "Lỗi \n" -#~ " \n" -#~ " \n" -#~ " \n" -#~ "(%ds)" - -#~ msgid "%H: Netlink - Multicast on %pi" -#~ msgstr "%H: Netlink - Multicast on %pi" - -#~ msgid "Packets" -#~ msgstr "Gói" - -#~ msgid "%H: Netlink - Collisions on %pi" -#~ msgstr "%H: Netlink - Collisions on %pi" - -#~ msgid "Collisions/s" -#~ msgstr "Collisions/s" - -#~ msgid "Collisions" -#~ msgstr "Collisions" - -#~ msgid "%H: Netlink - Errors on %pi" -#~ msgstr "%H: Netlink - lỗi trên %pi" - -#~ msgid "Errors/s" -#~ msgstr "Lỗi" - -#~ msgid "%H: Processes" -#~ msgstr "%H: Quá trình" - -#~ msgid "Processes/s" -#~ msgstr "Quy trình" - -#~ msgid "%H: Process %pi - used cpu time" -#~ msgstr "%H: Quá trình %pi - thời gian cpu đã sử dụng" - -#~ msgid "Jiffies" -#~ msgstr "Jiffies" - -#~ msgid "System" -#~ msgstr "Hệ thống" - -#~ msgid "user" -#~ msgstr "Người dùng" - -#~ msgid "%H: Process %pi - threads and processes" -#~ msgstr "%H: quá trình %pi - các luồng và quá trình" - -#~ msgid "Count" -#~ msgstr "Đếm" - -#~ msgid "%H: Process %pi - page faults" -#~ msgstr "%H: quá trình %pi - lỗi trang" - -#~ msgid "Pagefaults" -#~ msgstr "Pagefaults" - -#~ msgid "page faults" -#~ msgstr "page faults" - -#~ msgid "%H: Process %pi - virtual memory size" -#~ msgstr "%H: quá trình %pi - dung lượng bộ nhớ ảo " - -#~ msgid "virtual memory" -#~ msgstr "Bộ nhớ ảo" - -#~ msgid "%H: Usage on Processor #%pi" -#~ msgstr "%H: sử dụng trên bộ xử lý #%pi" - -#~ msgid "%" -#~ msgstr "%" - -#~ msgid "%H: Transfer on %di" -#~ msgstr "%H: Chuyển tải trên %di" - -#~ msgid "%H: Packets on %di" -#~ msgstr "%H: Gói trên %di" - -#~ msgid "%H: TCP-Connections to Port %pi" -#~ msgstr "%H: TCP-kết nối tới cổng %pi" - -#~ msgid "Connections/s" -#~ msgstr "Kết nối" - -#~ msgid "%H: Disk Space Usage on %di" -#~ msgstr "%H: sử dụng không gian trên đĩa ở %di" - -#~ msgid "%H: Interrupts" -#~ msgstr "%H: Cắt ngang" - -#~ msgid "Issues/s" -#~ msgstr "Vấn đề" - -#~ msgid "IRQ %di" -#~ msgstr "IRQ %di" - -#~ msgid "%H: System Load" -#~ msgstr "%H: Tải hệ thống" - -#~ msgid "Load" -#~ msgstr "Tải" - -#~ msgid "1 min" -#~ msgstr "1 phút" - -#~ msgid "5 min" -#~ msgstr "5 phút" - -#~ msgid "15 min" -#~ msgstr "15 phút" diff --git a/package/luci/applications/luci-app-statistics/po/vi/statistics.po b/package/luci/applications/luci-app-statistics/po/vi/statistics.po deleted file mode 100644 index f5798a2651..0000000000 --- a/package/luci/applications/luci-app-statistics/po/vi/statistics.po +++ /dev/null @@ -1,820 +0,0 @@ -# statistics.pot -# generated from ./applications/luci-statistics/luasrc/i18n/statistics.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:58+0200\n" -"PO-Revision-Date: 2009-08-16 05:50+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "APC UPS" -msgstr "" - -msgid "APCUPS Plugin Configuration" -msgstr "" - -msgid "Action (target)" -msgstr "Action (target)" - -msgid "Add command for reading values" -msgstr "Thêm lệnh cho giá trị đang đọc" - -msgid "Add matching rule" -msgstr "Thêm matching rule" - -msgid "Add multiple hosts separated by space." -msgstr "" - -msgid "Add notification command" -msgstr "Thêm lệnh thông báo" - -msgid "Aggregate number of connected users" -msgstr "" - -msgid "Base Directory" -msgstr "Thư mục Cơ sở" - -msgid "Basic monitoring" -msgstr "Monitoring căn bản" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "" - -msgid "CPU Frequency" -msgstr "" - -msgid "CPU Frequency Plugin Configuration" -msgstr "" - -msgid "CPU Plugin Configuration" -msgstr "Cấu hình Plugin CPU" - -msgid "CSV Output" -msgstr "CSV Output" - -msgid "CSV Plugin Configuration" -msgstr "Cấu hình CSV plugin" - -msgid "Cache collected data for" -msgstr "Cache collected data cho" - -msgid "Cache flush interval" -msgstr "Cache flush interval" - -msgid "Chain" -msgstr "Chain" - -msgid "CollectLinks" -msgstr "" - -msgid "CollectRoutes" -msgstr "" - -msgid "CollectTopology" -msgstr "" - -msgid "Collectd Settings" -msgstr "Những cài đặt collectd" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd là một daemon nhỏ để thu thập dữ liệu từ nhiều nguồn thông qua các " -"plugins khác nhau. Trên trang này, bạn có thể thay đổi cài đặt tổng quát cho " -"cai collectd daemon. " - -msgid "Conntrack" -msgstr "" - -msgid "Conntrack Plugin Configuration" -msgstr "" - -msgid "Context Switches" -msgstr "" - -msgid "DF Plugin Configuration" -msgstr "Cấu hình DF plugin" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "Cấu hình DNS plugin" - -msgid "Data collection interval" -msgstr "Khoảng thu thập dữ liệu" - -msgid "Datasets definition file" -msgstr "Tập tin định nghĩa cơ sở dữ liệu" - -msgid "Destination ip range" -msgstr "Điểm đến ip range" - -msgid "Directory for collectd plugins" -msgstr "Danh mục cho collectd plugins" - -msgid "Directory for sub-configurations" -msgstr "Danh mục cho sub-configurations" - -msgid "Disk Plugin Configuration" -msgstr "Cấu hình disk plugin" - -msgid "Disk Space Usage" -msgstr "Khoảng trống trên đĩa" - -msgid "Disk Usage" -msgstr "Disk Usage" - -msgid "Display Host »" -msgstr "" - -msgid "Display timespan »" -msgstr "Display timespan" - -msgid "E-Mail Plugin Configuration" -msgstr "Cấu hình e-mail plugin" - -msgid "Email" -msgstr "Email" - -msgid "Empty value = monitor all" -msgstr "" - -msgid "Enable this plugin" -msgstr "Kích hoạt plugin này" - -msgid "Entropy" -msgstr "" - -msgid "Entropy Plugin Configuration" -msgstr "" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Cấu hình Exec Plugin" - -msgid "Filter class monitoring" -msgstr "Filter class monitoring" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Flush cache after" -msgstr "Flush cache sau khi" - -msgid "Forwarding between listen and server addresses" -msgstr "chuyển tiếp giữa listen và địa chỉ server" - -msgid "Gather compression statistics" -msgstr "" - -msgid "General plugins" -msgstr "" - -msgid "Generate a separate graph for each logged user" -msgstr "" - -msgid "Graphs" -msgstr "Graphs" - -msgid "Group" -msgstr "" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"Ở đây bạn có thể định nghĩa các lệnh bên ngoài mà sẽ khởi động bằng collectd " -"để đọc những giá trị nhất định. Những giá trị sẽ được đọc từ stdout" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"Ở đây bạn có thể định nghĩa các lệnh bên ngoài cái mà bắt đầu bằng collectd " -"khi những giá trị threshold nhất định được tiếp cận. Những giá trị dẫn tới " -"invokation sẽ được feed tới một chương trình gọi là stdin" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "" -"Ở đây bạn có thể định nghĩa những tiêu chuẩn khác nhau để monitor iptables " -"rules được chọn." - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Hostname" -msgstr "Tên host" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "" - -msgid "IRQ Plugin Configuration" -msgstr "Cấu hình IRQ Plugin " - -msgid "Ignore source addresses" -msgstr "Lờ đi những địa chỉ nguồn" - -msgid "Incoming interface" -msgstr "Giao diện đang tới" - -msgid "Interface Plugin Configuration" -msgstr "Cấu hình giao diện plugin" - -msgid "Interfaces" -msgstr "Giao diện" - -msgid "Interrupts" -msgstr "Cắt ngang" - -msgid "Interval for pings" -msgstr "" - -msgid "Iptables Plugin Configuration" -msgstr "cấu hình Iptables Plugin " - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "" - -msgid "Listen host" -msgstr "Listen host" - -msgid "Listen port" -msgstr "Listen port" - -msgid "Listener interfaces" -msgstr "Giao diện listener" - -msgid "Load Plugin Configuration" -msgstr "Tải cấu hình plugin" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "" - -msgid "Maximum allowed connections" -msgstr "Tối đã kết nối cho phép" - -msgid "Memory" -msgstr "" - -msgid "Memory Plugin Configuration" -msgstr "" - -msgid "Monitor all except specified" -msgstr "" - -msgid "Monitor all local listen ports" -msgstr "Monitor tất cả local listen port" - -msgid "Monitor all sensors" -msgstr "" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "" - -msgid "Monitor devices" -msgstr "Monitor devices" - -msgid "Monitor disks and partitions" -msgstr "Kiểm soát đĩa và phân vùng" - -msgid "Monitor filesystem types" -msgstr "Kiểm soát loại filesystem" - -msgid "Monitor host" -msgstr "" - -msgid "Monitor hosts" -msgstr "Monitor hosts" - -msgid "Monitor interfaces" -msgstr "" - -msgid "Monitor interrupts" -msgstr "Monitor interrupts" - -msgid "Monitor local ports" -msgstr "Monitor cổng địa phương" - -msgid "Monitor mount points" -msgstr "Monitor mount points" - -msgid "Monitor processes" -msgstr "Monitor processes" - -msgid "Monitor remote ports" -msgstr "Monitor remote ports" - -msgid "Name of the rule" -msgstr "Tên của rule" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Cấu hình Netlink Plugin " - -msgid "Network" -msgstr "Network" - -msgid "Network Plugin Configuration" -msgstr "Cấu hình network plugin" - -msgid "Network plugins" -msgstr "Network plugins" - -msgid "Network protocol" -msgstr "Network protocol" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" - -msgid "Number of threads for data collection" -msgstr "Số lượng các chủ đề để thu thập dữ liệu" - -msgid "OLSRd" -msgstr "" - -msgid "OLSRd Plugin Configuration" -msgstr "" - -msgid "Only create average RRAs" -msgstr "Chỉ tạo trung bình RRAs" - -msgid "OpenVPN" -msgstr "" - -msgid "OpenVPN Plugin Configuration" -msgstr "" - -msgid "OpenVPN status files" -msgstr "" - -msgid "Options" -msgstr "Tùy chọn" - -msgid "Outgoing interface" -msgstr "Giao diện ra ngoài" - -msgid "Output plugins" -msgstr "Output plugins" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Cấu hình Ping plugin" - -msgid "Port" -msgstr "" - -msgid "Port for apcupsd communication" -msgstr "" - -msgid "Processes" -msgstr "Quá trình xử lý" - -msgid "Processes Plugin Configuration" -msgstr "Cấu hình processes plugin" - -msgid "Processes to monitor separated by space" -msgstr "" - -msgid "Processor" -msgstr "Bộ xử lý" - -msgid "Qdisc monitoring" -msgstr "Qdisc monitoring" - -msgid "RRD XFiles Factor" -msgstr "Yếu tố RRD XFiles" - -msgid "RRD heart beat interval" -msgstr "RRD heart beat interval" - -msgid "RRD step interval" -msgstr "RRD step interval" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "Cấu hình RRDTool Plugin " - -msgid "Rows per RRA" -msgstr "Rows per RRA" - -msgid "Script" -msgstr "" - -msgid "Seconds" -msgstr "Giây" - -msgid "Sensor list" -msgstr "" - -msgid "Sensors" -msgstr "" - -msgid "Sensors Plugin Configuration" -msgstr "" - -msgid "Server host" -msgstr "Server host" - -msgid "Server port" -msgstr "Server port" - -msgid "Setup" -msgstr "" - -msgid "Shaping class monitoring" -msgstr "Shaping class monitoring" - -msgid "Show max values instead of averages" -msgstr "" - -msgid "Socket file" -msgstr "" - -msgid "Socket group" -msgstr "" - -msgid "Socket permissions" -msgstr "" - -msgid "Source ip range" -msgstr "Nguồn ip range" - -msgid "Specifies what information to collect about links." -msgstr "" - -msgid "Specifies what information to collect about routes." -msgstr "" - -msgid "Specifies what information to collect about the global topology." -msgstr "" - -msgid "Splash Leases" -msgstr "" - -msgid "Splash Leases Plugin Configuration" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Storage directory" -msgstr "Thư mục lưu trữ" - -msgid "Storage directory for the csv files" -msgstr "Thư mục lưu trữ cho nhưng tập tin csv" - -msgid "Store data values as rates instead of absolute values" -msgstr "Những giá trị dữ liệu lưu trữ như một tỉ lệ thay vì giá trị tuyệt đối" - -msgid "Stored timespans" -msgstr "Lưu timspans" - -msgid "System Load" -msgstr "System Load" - -msgid "TCP Connections" -msgstr "Kết nối TCP" - -msgid "TCPConns Plugin Configuration" -msgstr "Cấu hình TCPConns Plugin " - -msgid "TTL for network packets" -msgstr "TTL cho gói mạng" - -msgid "TTL for ping packets" -msgstr "TTl cho gói ping" - -msgid "Table" -msgstr "Table" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "CPU plugin thu thập số liệu thống kê cơ bản về sử dụng bộ việc xử lý" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "" -"CSV plugin stores thu thập dữ liệu trong tập tin định dạng csv để tiến hành " -"xử lý bằng các chương trình bên ngoài." - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "" -"df plugin thu thập số liệu thông kế về khoảng trống trên đĩa trên những " -"thiết bị khác, mount points hoặc những loại filesystem." - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "" -"Disk plugin thu thập số liệu thống kê chi tiết về cách sử dụng cho những " -"phân vùng lựa chọn hoặc toàn bộ đĩa." - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "" -" dns plugin thu thập những thông kê chi tiết về dns liên quan đến lưu thông " -"trên những giao diện được chọn. " - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"Email plugin tạo ra một unix socket mà có thể dùng để truyền thông kê e-mail " -"tới một collectd daemon đang chạy. Cái plugin này chủ yếu được dùng với " -"Mail::SpamAssasin::Plugin::Collectd nhưng cũng có thể dùng trong những cách " -"khác." - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"Exec plugin bắt đầu những lệnh bên ngoài để đọc những giá trị từ hoặc tới " -"những quá trình xử lý thông báo bên ngoài khi giá trị của một threshold nhất " -"định được tiếp cận " - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "" -"Giao diện plugin thu thập những thống kê lưu thông trên những giao diện được " -"chọn" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "" -"iptables plugin sẽ monitor những cái firewall rules được chọn và thu thập " -"thông tin về bytes xử lý và gói trên rule. " - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"irq plugin sẽ monitor tỉ lệ vấn đề trên giây cho những interrupt được chọn. " -"Nếu không có interrupt được chọn thi tất cả các interrupt sẽ được monitor. " -"for each selected interrupt. If no interrupt is selected then all interrupts " -"are monitored." - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "" - -msgid "The load plugin collects statistics about the general system load." -msgstr "Plugin tải thu thập thông kê về tổng quát system load" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "" -"Netlink plugin thu thập những thông tin mở rộng như qdisc-, class- and " -"filter-statistics cho những giao diện được chọn" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"Network plugin cung cấp network dựa trên giao tiếp giữa những collectd " -"instances khác nhau. Collectd có thể vận hành trên cả 2 chế độ client và " -"server. Trong kiểu chế độ client tập hợp ngày tháng địa phương được chuyển " -"tới một collectd server instance, trong chế độ server, instance địa phương " -"nhận dữ liệu từ những host khác." - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "" -"ping plugin sẽ gửi icmp echo trả lời tới những host được chọn và đo thời " -"gian vận hành qua lại cho từng host" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "" -"Processes plugin thu thập thông tin như cpu time, page faults và memory " -"usage của từng processes được chọn. " - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"The rrdtool plugin lưu những dữ liệu thu thập trong rrd database files, cơ " -"sở của biểu đồ.

    Cảnh báo: Đặt sai giá trị sẽ tiêu hao bộ " -"nhớ rất nhiều trong một thư mục tạm thời. Điều này có thể làm thiết bị không " -"sử dụng được" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "" -"Tcpconns plugin thu thập thông tin về open tcp kết nối trên những cổng được " -"chọn." - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "" -"Unixsock plugin tạo một unix socket mà có thể dùng để đọc dữ liệu thu thập " -"từ một collectd instance đang vận hành. " - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "" - -msgid "Thermal" -msgstr "" - -msgid "Thermal Plugin Configuration" -msgstr "" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "" -"Section này định nghĩa trên giao diện collectd sẽ đợi những kết nối đang tới" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "Section này định nghĩa servers thu thập dữ liệu địa phương để gửi đi" - -msgid "Try to lookup fully qualified hostname" -msgstr "Thử tra cứu những tên host đủ điều kiện" - -msgid "UPS" -msgstr "" - -msgid "UPS Plugin Configuration" -msgstr "" - -msgid "UPS name in NUT ups@host format" -msgstr "" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Cấu hình Unixsock Plugin " - -msgid "Uptime" -msgstr "" - -msgid "Uptime Plugin Configuration" -msgstr "" - -msgid "Use improved naming schema" -msgstr "" - -msgid "Used PID file" -msgstr "Tập tin PID đã sử dụng" - -msgid "User" -msgstr "" - -msgid "Verbose monitoring" -msgstr "Verbose monitoring" - -msgid "Wireless" -msgstr "Mạng không dây" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "" - -msgid "e.g. br-ff" -msgstr "e.g. br-ff" - -msgid "e.g. br-lan" -msgstr "e.g. br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "e.g. reject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "max. 16 chars" - -msgid "reduces rrd size" -msgstr "Giảm rrd size" - -msgid "seconds; multiple separated by space" -msgstr "giây; nhiều phân tách bởi khoảng trống" - -msgid "server interfaces" -msgstr "giao diện server" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "System plugins" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "Gói thống kê dựa trên Collectd and uses RRD " -#~ "Tool vẽ lại sơ đồ hình ảnh từ dữ liệu thu thập ." - -#~ msgid "" -#~ "The wireless plugin collects statistics about wireless signal strength, " -#~ "noise and quality." -#~ msgstr "" -#~ "Cấu hình wireless plugin thu thập thống kê về độ mạnh của tín hiệu " -#~ "wireless, noise và chất lượng." - -#~ msgid "Wireless Plugin Configuration" -#~ msgstr "Cấu hình Wireless Plugin " diff --git a/package/luci/applications/luci-app-statistics/po/zh-cn/rrdtool.po b/package/luci/applications/luci-app-statistics/po/zh-cn/rrdtool.po deleted file mode 100644 index eef7ba6122..0000000000 --- a/package/luci/applications/luci-app-statistics/po/zh-cn/rrdtool.po +++ /dev/null @@ -1,362 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"PO-Revision-Date: 2017-10-29 15:39+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \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: Gtranslator 2.91.7\n" -"POT-Creation-Date: \n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "无线信号噪音" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "信噪比" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "信号噪音" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "信号强度" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H:无线 - 信号质量" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "信号质量" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H:ICMP 往返时间" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "响应" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H:防火墙 - 已处理的数据包" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "包/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "链“%di”" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H:Netlink - %pi 上的数据传输" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "字节/秒" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "字节 (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H:Netlink - %pi 的数据包" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "包/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "已处理 (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "丢弃 (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "错误 (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H:Netlink - %pi 上的多播" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "包/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "数据包" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H:Netlink - %pi 上的 Collisions" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "碰撞/s" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "碰撞" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H:Netlink - %pi 上发生的错误" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "错误/秒" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H:进程" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "进程/秒" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H:进程 %s - 占用的 CPU 时间" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "系统" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "用户" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H:进程 %pi - 进程与线程" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "个" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H:进程 %pi - 分页错误" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "分页错误" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "分页错误" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H:进程 %pi - 虚拟内存大小" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "字节" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "虚拟内存" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H:对处理器 #%pi 的占用" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H:%di 上的数据传输情况" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "字节/秒" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H:%di 上的数据包" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "包/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H:到端口 %pi 的 TCP 连接" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "连接/秒" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H:%di 上的磁盘占用情况" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "字节" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H:中断" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "中断/s" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H:系统负载" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "负载" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 分钟" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 分钟" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 分钟" diff --git a/package/luci/applications/luci-app-statistics/po/zh-cn/statistics.po b/package/luci/applications/luci-app-statistics/po/zh-cn/statistics.po deleted file mode 100644 index fe631b5e8f..0000000000 --- a/package/luci/applications/luci-app-statistics/po/zh-cn/statistics.po +++ /dev/null @@ -1,787 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2017-10-29 15:50+0800\n" -"Last-Translator: Yangfl \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: Gtranslator 2.91.7\n" -"Language-Team: \n" - -msgid "APC UPS" -msgstr "APC UPS" - -msgid "APCUPS Plugin Configuration" -msgstr "APCUPS 插件配置" - -msgid "Action (target)" -msgstr "动作(目标)" - -msgid "Add command for reading values" -msgstr "添加命令读取数据" - -msgid "Add matching rule" -msgstr "新增匹配规则" - -msgid "Add multiple hosts separated by space." -msgstr "使用空格分隔多个主机" - -msgid "Add notification command" -msgstr "新增通知命令" - -msgid "Aggregate number of connected users" -msgstr "连接用户总数" - -msgid "Base Directory" -msgstr "基本目录" - -msgid "Basic monitoring" -msgstr "基本监控" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "CPU Context Switches 插件配置" - -msgid "CPU Frequency" -msgstr "CPU 频率" - -msgid "CPU Frequency Plugin Configuration" -msgstr "CPU 频率插件配置" - -msgid "CPU Plugin Configuration" -msgstr "CPU 插件配置" - -msgid "CSV Output" -msgstr "CSV 输出" - -msgid "CSV Plugin Configuration" -msgstr "CSV 插件配置" - -msgid "Cache collected data for" -msgstr "收集缓存数据" - -msgid "Cache flush interval" -msgstr "缓存清空间隙" - -msgid "Chain" -msgstr "链" - -msgid "CollectLinks" -msgstr "收集链接" - -msgid "CollectRoutes" -msgstr "收集路由" - -msgid "CollectTopology" -msgstr "收集拓扑" - -msgid "Collectd Settings" -msgstr "Collectd 设置" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd 是一个通过不同插件用于收集各种源数据的小型守护程序。在此页面中,您可" -"以更改 Collectd 守护进程常规设置。" - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "Conntrack 插件配置" - -msgid "Context Switches" -msgstr "上下文切换" - -msgid "DF Plugin Configuration" -msgstr "DF 插件配置" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "DNS 插件配置" - -msgid "Data collection interval" -msgstr "数据收集间隙" - -msgid "Datasets definition file" -msgstr "数据集定义文件" - -msgid "Destination ip range" -msgstr "目标 IP 区间" - -msgid "Directory for collectd plugins" -msgstr "Collectd 插件目录" - -msgid "Directory for sub-configurations" -msgstr "子配置目录" - -msgid "Disk Plugin Configuration" -msgstr "Disk 插件配置" - -msgid "Disk Space Usage" -msgstr "磁盘空间使用情况" - -msgid "Disk Usage" -msgstr "磁盘使用情况" - -msgid "Display Host »" -msgstr "显示主机" - -msgid "Display timespan »" -msgstr "显示时间段" - -msgid "E-Mail Plugin Configuration" -msgstr "E-Mail 插件配置" - -msgid "Email" -msgstr "电子邮件" - -msgid "Empty value = monitor all" -msgstr "留空 = 监控所有" - -msgid "Enable this plugin" -msgstr "启用该插件" - -msgid "Entropy" -msgstr "熵" - -msgid "Entropy Plugin Configuration" -msgstr "熵值插件配置" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Exec 插件配置" - -msgid "Filter class monitoring" -msgstr "Filter 类监测" - -msgid "Firewall" -msgstr "防火墙" - -msgid "Flush cache after" -msgstr "清空缓存后" - -msgid "Forwarding between listen and server addresses" -msgstr "转发监听服务器和应用服务器之间数据" - -msgid "Gather compression statistics" -msgstr "收集压缩统计信息" - -msgid "General plugins" -msgstr "通用插件" - -msgid "Generate a separate graph for each logged user" -msgstr "为每个记录的用户生成一个单独的图表" - -msgid "Graphs" -msgstr "图表" - -msgid "Group" -msgstr "组" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"在这里,您可以定义外部命令,Collectd 将启动命令来获取某些值,将获取的值从标准" -"输出端口输出。" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"在这里,您可以定义外部命令,当 Collectd 达到一定阈值时,将启动命令。阀值将会" -"作为命令的标准输入。" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "在这里,您可以定义各种监控 iptables 规则临界值。" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "按住 Ctrl 键来选择或取消选择多个项目。" - -msgid "Host" -msgstr "主机" - -msgid "Hostname" -msgstr "主机名" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "获取 txtinfo 输出的 IP 地址或主机名" - -msgid "IRQ Plugin Configuration" -msgstr "IRQ 插件配置" - -msgid "Ignore source addresses" -msgstr "忽略源地址" - -msgid "Incoming interface" -msgstr "入接口" - -msgid "Interface Plugin Configuration" -msgstr "Interface 插件配置" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interrupts" -msgstr "中断" - -msgid "Interval for pings" -msgstr "ping 间隙" - -msgid "Iptables Plugin Configuration" -msgstr "Iptables 插件配置" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "自动保留对未选中接口的监控。" - -msgid "Listen host" -msgstr "监听主机" - -msgid "Listen port" -msgstr "监听端口" - -msgid "Listener interfaces" -msgstr "监听接口" - -msgid "Load Plugin Configuration" -msgstr "Load 插件配置" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "在不使用“仅平均 RRA”的情况下,可以使用一段时间的最大值而不是平均值" - -msgid "Maximum allowed connections" -msgstr "最大允许连接数" - -msgid "Memory" -msgstr "内存" - -msgid "Memory Plugin Configuration" -msgstr "内存插件配置" - -msgid "Monitor all except specified" -msgstr "监测所有(除特别注明外)" - -msgid "Monitor all local listen ports" -msgstr "监测所有本地监听端口" - -msgid "Monitor all sensors" -msgstr "监控所有传感器" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "监控设备/温感区域" - -msgid "Monitor devices" -msgstr "监测设备" - -msgid "Monitor disks and partitions" -msgstr "监测磁盘和分区" - -msgid "Monitor filesystem types" -msgstr "监测文件系统类型" - -msgid "Monitor host" -msgstr "监测主机" - -msgid "Monitor hosts" -msgstr "监测主机" - -msgid "Monitor interfaces" -msgstr "监测接口" - -msgid "Monitor interrupts" -msgstr "监测中断" - -msgid "Monitor local ports" -msgstr "监测本地端口" - -msgid "Monitor mount points" -msgstr "监测挂载点" - -msgid "Monitor processes" -msgstr "监测进程" - -msgid "Monitor remote ports" -msgstr "监测远程端口" - -msgid "Name of the rule" -msgstr "规则名" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Netlink 插件配置" - -msgid "Network" -msgstr "Network" - -msgid "Network Plugin Configuration" -msgstr "Network 插件配置" - -msgid "Network plugins" -msgstr "Network 插件" - -msgid "Network protocol" -msgstr "Network 协议" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" -"注意:由于页面是以 'nobody' 身份生成的,因此 *.rrd 文件以及包含此文件的所有父" -"目录必须全局可读。" - -msgid "Number of threads for data collection" -msgstr "收集程序使用线程数" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "OLSRd 插件配置" - -msgid "Only create average RRAs" -msgstr "仅创建平均 RRAs" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN Plugin Configuration" -msgstr "OpenVPN 插件配置" - -msgid "OpenVPN status files" -msgstr "OpenVPN 状态文件" - -msgid "Options" -msgstr "选项" - -msgid "Outgoing interface" -msgstr "出接口" - -msgid "Output plugins" -msgstr "Output 插件" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Ping 插件配置" - -msgid "Port" -msgstr "端口" - -msgid "Port for apcupsd communication" -msgstr "apcupsd 通信端口" - -msgid "Processes" -msgstr "进程" - -msgid "Processes Plugin Configuration" -msgstr "进程插件配置" - -msgid "Processes to monitor separated by space" -msgstr "过程监控,用空格隔开" - -msgid "Processor" -msgstr "处理器" - -msgid "Qdisc monitoring" -msgstr "Qdisc 监测" - -msgid "RRD XFiles Factor" -msgstr "RRD XFiles 因子" - -msgid "RRD heart beat interval" -msgstr "RRD 心跳间隙" - -msgid "RRD step interval" -msgstr "RRD 区间间隙" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "RRDTool 插件配置" - -msgid "Rows per RRA" -msgstr "行/RRA" - -msgid "Script" -msgstr "脚本" - -msgid "Seconds" -msgstr "秒" - -msgid "Sensor list" -msgstr "传感器列表" - -msgid "Sensors" -msgstr "传感器" - -msgid "Sensors Plugin Configuration" -msgstr "Sensors 插件配置" - -msgid "Server host" -msgstr "服务器主机" - -msgid "Server port" -msgstr "服务器端口" - -msgid "Setup" -msgstr "设置" - -msgid "Shaping class monitoring" -msgstr "整形类监控" - -msgid "Show max values instead of averages" -msgstr "显示最大值而不是平均值" - -msgid "Socket file" -msgstr "套接字文件" - -msgid "Socket group" -msgstr "套接字组" - -msgid "Socket permissions" -msgstr "套接字权限" - -msgid "Source ip range" -msgstr "源 IP 区间" - -msgid "Specifies what information to collect about links." -msgstr "收集指定链接相关信息。" - -msgid "Specifies what information to collect about routes." -msgstr "收集指定路由相关信息。" - -msgid "Specifies what information to collect about the global topology." -msgstr "收集指定拓扑相关信息。" - -msgid "Splash Leases" -msgstr "Splash Leases" - -msgid "Splash Leases Plugin Configuration" -msgstr "Splash Leases 插件配置" - -msgid "Statistics" -msgstr "统计" - -msgid "Storage directory" -msgstr "存储目录" - -msgid "Storage directory for the csv files" -msgstr "csv 存储目录" - -msgid "Store data values as rates instead of absolute values" -msgstr "存储数据值变化量而不是绝对值" - -msgid "Stored timespans" -msgstr "存储时间跨度" - -msgid "System Load" -msgstr "系统加载" - -msgid "TCP Connections" -msgstr "TCP 连接数" - -msgid "TCPConns Plugin Configuration" -msgstr "TCPConns 插件配置" - -msgid "TTL for network packets" -msgstr "网络包 TTL" - -msgid "TTL for ping packets" -msgstr "ping 包 TTL" - -msgid "Table" -msgstr "表" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "APCUPS 插件收集 APC UPS 的统计信息。" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "NUT 插件读取 UPS 信息。" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "OLSRd 插件通过 txtinfo 获取 meshed 网络信息。" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "OpenVPN 插件可以获取 VPN 连接当前状态" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "conntrack 插件获取连接数信息。" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "cpu 插件获取处理器相关信息。" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "csv插件用于存储数据,以方便其他程序处理数据。" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "df 插件收集磁盘空间使用情况、挂载点及文件系统相关信息。" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "disk 插件收集磁盘分区使用情况及相关信息。" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "dns 插件收集 dns 数据流相关信息。" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"邮件插件创建一个 unix 套接字用于为 Collectd 守护进程发送统计信息到电子邮件系" -"统。这个插件主要目的是结合使用 Mail::SpamAssasin::Pulgin::Collectd,但可以用" -"在其他方面。" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "entropy 插件收集可用熵的统计信息。" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"exec 插件用于当某些监控值已到达阈值时,启动外部命令读值或通知外部程序。" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "Interface 插件用于收集选定接口的数据包的统计信息。" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "iptables 插件将监测选定防火墙规则和收集关于每个规则处理的数据包信息。" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"irq 插件用于监控选定中断的每秒钟产生的中断数。如果没有中断被选中,则表示对所" -"有中断进行监测。" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "iwinfo 插件收集无线信号强度、噪声和质量的统计信息。" - -msgid "The load plugin collects statistics about the general system load." -msgstr "load 插件收集常规系统加载统计信息。" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "memory 插件收集关于内存使用情况的统计信息。" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "netlink 插件收集为选定接口 qdisc-、class- 和 filter- 的扩展数据。" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"network 插件提供了基于网络的不同 Collectd 实例。Collectd 可以工作在客户端和服" -"务器两个模式。在客户端模式下收集本地信息,然后转移到一个 Collectd 服务器实例" -"中,在服务器模式将从其他主机收集信息。" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "ping 插件将发送 icmp echo replies 到选定主机来测量每台主机的响应时间。" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "processes 插件收集选定进程的 cpu 时间、页面错误和内存使用信息。" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"rrdtool 插件将收集数据以图表的形式储存在 RRD 数据库文件中。

    警告:错误的参数设置,将导致非常高的临时内存消耗。这可能会使设备无法" -"使用!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "sensors 插件使用 Linux Sensors 框架来收集环境统计信息。" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "splash leases 插件使用 libuci 来收集 splash leases 的统计信息。" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" -"Statistics 软件包使用 Collectd 来收集数" -"据,并用 RRDtool 生成统计图" -"表。" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "tcpconns 插件收集选定端口 TCP 连接信息。" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" -"thermal 插件将会监控系统温度。数据主要取自 /sys/class/thermal/*/temp ('*' 表" -"示温感设备的名字,比如 thermal_zone1) 。" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "unixsock 插件创建一个 unix 套接字可用于读取 Collectd 实例的收集信息。" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "uptime 插件收集系统启动时间的统计信息。" - -msgid "Thermal" -msgstr "温感" - -msgid "Thermal Plugin Configuration" -msgstr "温感插件配置" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "此插件收集处理器上下文切换的统计信息。" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "此插件收集处理器频率调整的统计信息。" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "定义 Collectd 将监听哪个接口来传入连接收集数据。" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "定义本地收集数据被发送到哪台 Collected 服务器。" - -msgid "Try to lookup fully qualified hostname" -msgstr "尝试解析主机全域名" - -msgid "UPS" -msgstr "UPS" - -msgid "UPS Plugin Configuration" -msgstr "UPS 插件配置" - -msgid "UPS name in NUT ups@host format" -msgstr "UPS 名使用 NUT(Network UPS Tools)格式:ups@host" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Unixsock 插件配置" - -msgid "Uptime" -msgstr "运行时间" - -msgid "Uptime Plugin Configuration" -msgstr "运行时间插件配置" - -msgid "Use improved naming schema" -msgstr "使用更高级的命名规则" - -msgid "Used PID file" -msgstr "正在使用的 PID 文件" - -msgid "User" -msgstr "用户" - -msgid "Verbose monitoring" -msgstr "详细监测" - -msgid "Wireless" -msgstr "无线" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "无线 iwinfo 插件配置" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "您可以安装更多的 collectd-mod-* 插件以获得更多的统计数据。" - -msgid "e.g. br-ff" -msgstr "例如:br-ff" - -msgid "e.g. br-lan" -msgstr "例如:br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "例如:eject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "最长 16 个字符" - -msgid "reduces rrd size" -msgstr "减少 rrd 大小" - -msgid "seconds; multiple separated by space" -msgstr "秒数;多个使用空格分隔" - -msgid "server interfaces" -msgstr "服务器接口" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "系统插件" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "统计软件包是基于Collectd," -#~ "并使用RRD工具来渲染图表,用" -#~ "于收集数据。" - -#~ msgid "group name" -#~ msgstr "群名称" diff --git a/package/luci/applications/luci-app-statistics/po/zh-tw/rrdtool.po b/package/luci/applications/luci-app-statistics/po/zh-tw/rrdtool.po deleted file mode 100644 index ad5eb5b584..0000000000 --- a/package/luci/applications/luci-app-statistics/po/zh-tw/rrdtool.po +++ /dev/null @@ -1,362 +0,0 @@ -# rrdtool.pot -# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"PO-Revision-Date: 2017-10-29 15:39+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" -"POT-Creation-Date: \n" - -#. %H: Wireless - Signal Noise Ratio -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1 -msgid "stat_dg_title_wireless__signal_noise" -msgstr "無線訊號噪音" - -#. dBm -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2 -msgid "stat_dg_label_wireless__signal_noise" -msgstr "信噪比" - -#. Noise Level -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3 -msgid "stat_ds_signal_noise" -msgstr "訊號噪音" - -#. Signal Strength -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4 -msgid "stat_ds_signal_power" -msgstr "訊號強度" - -#. %H: Wireless - Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5 -msgid "stat_dg_title_wireless__signal_quality" -msgstr "%H:無線 - 訊號質量" - -#. n -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6 -msgid "stat_dg_label_wireless__signal_quality" -msgstr "n" - -#. Signal Quality -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7 -msgid "stat_ds_signal_quality" -msgstr "訊號質量" - -#. %H: ICMP Roundtrip Times -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8 -msgid "stat_dg_title_ping" -msgstr "%H:ICMP 往返時間" - -#. ms -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9 -msgid "stat_dg_label_ping" -msgstr "響應" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10 -msgid "stat_ds_ping" -msgstr "%di" - -#. %H: Firewall - Processed Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11 -msgid "stat_dg_title_iptables__ipt_packets" -msgstr "%H:防火牆 - 已處理的資料包" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12 -msgid "stat_dg_label_iptables__ipt_packets" -msgstr "包/s" - -#. Chain \"%di\" -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13 -msgid "stat_ds_ipt_packets" -msgstr "鏈“%di”" - -#. %H: Netlink - Transfer on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14 -msgid "stat_dg_title_netlink__if_octets" -msgstr "%H:Netlink - %pi 上的資料傳輸" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15 -msgid "stat_dg_label_netlink__if_octets" -msgstr "位元組/秒" - -#. Bytes (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16 -msgid "stat_ds_if_octets" -msgstr "位元組 (%ds)" - -#. %H: Netlink - Packets on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17 -msgid "stat_dg_title_netlink__if_packets" -msgstr "%H:Netlink - %pi 的資料包" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18 -msgid "stat_dg_label_netlink__if_packets" -msgstr "包/s" - -#. Processed (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19 -msgid "stat_ds_if_packets" -msgstr "已處理 (%ds)" - -#. Dropped (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20 -msgid "stat_ds_if_dropped" -msgstr "丟棄 (%ds)" - -#. Errors (%ds) -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21 -msgid "stat_ds_if_errors" -msgstr "錯誤 (%ds)" - -#. %H: Netlink - Multicast on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22 -msgid "stat_dg_title_netlink__if_multicast" -msgstr "%H:Netlink - %pi 上的多播" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23 -msgid "stat_dg_label_netlink__if_multicast" -msgstr "包/s" - -#. Packets -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24 -msgid "stat_ds_if_multicast" -msgstr "資料包" - -#. %H: Netlink - Collisions on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25 -msgid "stat_dg_title_netlink__if_collisions" -msgstr "%H:Netlink - %pi 上的 Collisions" - -#. Collisions/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26 -msgid "stat_dg_label_netlink__if_collisions" -msgstr "碰撞/s" - -#. Collisions -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27 -msgid "stat_ds_if_collisions" -msgstr "碰撞" - -#. %H: Netlink - Errors on %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28 -msgid "stat_dg_title_netlink__if_tx_errors" -msgstr "%H:Netlink - %pi 上發生的錯誤" - -#. Errors/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29 -msgid "stat_dg_label_netlink__if_tx_errors" -msgstr "錯誤/秒" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30 -msgid "stat_ds_if_tx_errors" -msgstr "%di" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31 -msgid "stat_ds_if_rx_errors" -msgstr "%di" - -#. %H: Processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32 -msgid "stat_dg_title_processes" -msgstr "%H:程序" - -#. Processes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33 -msgid "stat_dg_label_processes" -msgstr "程序/秒" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34 -msgid "stat_ds_ps_state" -msgstr "%di" - -#. %H: Process %pi - used cpu time -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35 -msgid "stat_dg_title_processes__ps_cputime" -msgstr "%H:程序 %s - 佔用的 CPU 時間" - -#. Jiffies -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36 -msgid "stat_dg_label_processes__ps_cputime" -msgstr "Jiffies" - -#. system -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37 -msgid "stat_ds_ps_cputime__syst" -msgstr "系統" - -#. user -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38 -msgid "stat_ds_ps_cputime__user" -msgstr "使用者" - -#. %H: Process %pi - threads and processes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39 -msgid "stat_dg_title_processes__ps_count" -msgstr "%H:程序 %pi - 程序與執行緒" - -#. Count -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40 -msgid "stat_dg_label_processes__ps_count" -msgstr "個" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41 -msgid "stat_ds_ps_count" -msgstr "%ds" - -#. %H: Process %pi - page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42 -msgid "stat_dg_title_processes__ps_pagefaults" -msgstr "%H:程序 %pi - 分頁錯誤" - -#. Pagefaults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43 -msgid "stat_dg_label_processes__ps_pagefaults" -msgstr "分頁錯誤" - -#. page faults -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44 -msgid "stat_ds_ps_pagefaults" -msgstr "分頁錯誤" - -#. %H: Process %pi - virtual memory size -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45 -msgid "stat_dg_title_processes__ps_rss" -msgstr "%H:程序 %pi - 虛擬記憶體大小" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46 -msgid "stat_dg_label_processes__ps_rss" -msgstr "位元組" - -#. virtual memory -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47 -msgid "stat_ds_ps_rss" -msgstr "虛擬記憶體" - -#. %H: Usage on Processor #%pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48 -msgid "stat_dg_title_cpu" -msgstr "%H:對處理器 #%pi 的佔用" - -#. % -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49 -msgid "stat_dg_label_cpu" -msgstr "%" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50 -msgid "stat_ds_cpu" -msgstr "%di" - -#. %H: Transfer on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51 -msgid "stat_dg_title_interface__if_octets" -msgstr "%H:%di 上的資料傳輸情況" - -#. Bytes/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52 -msgid "stat_dg_label_interface__if_octets" -msgstr "位元組/秒" - -#. %H: Packets on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53 -msgid "stat_dg_title_interface__if_packets" -msgstr "%H:%di 上的資料包" - -#. Packets/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54 -msgid "stat_dg_label_interface__if_packets" -msgstr "包/s" - -#. %H: TCP-Connections to Port %pi -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55 -msgid "stat_dg_title_tcpconns" -msgstr "%H:到埠 %pi 的 TCP 連線" - -#. Connections/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56 -msgid "stat_dg_label_tcpconns" -msgstr "連線/秒" - -#. %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57 -msgid "stat_ds_tcp_connections" -msgstr "%di" - -#. %H: Disk Space Usage on %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58 -msgid "stat_dg_title_df" -msgstr "%H:%di 上的磁碟佔用情況" - -#. Bytes -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59 -msgid "stat_dg_label_df" -msgstr "位元組" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60 -msgid "stat_ds_df__free" -msgstr "%ds" - -#. %ds -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61 -msgid "stat_ds_df__used" -msgstr "%ds" - -#. %H: Interrupts -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62 -msgid "stat_dg_title_irq" -msgstr "%H:中斷" - -#. Issues/s -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63 -msgid "stat_dg_label_irq" -msgstr "中斷/s" - -#. IRQ %di -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64 -msgid "stat_ds_irq" -msgstr "IRQ %di" - -#. %H: System Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65 -msgid "stat_dg_title_load" -msgstr "%H:系統負載" - -#. Load -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66 -msgid "stat_dg_label_load" -msgstr "負載" - -#. 1 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67 -msgid "stat_ds_load__shortterm" -msgstr "1 分鐘" - -#. 5 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68 -msgid "stat_ds_load__midterm" -msgstr "5 分鐘" - -#. 15 min -#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69 -msgid "stat_ds_load__longterm" -msgstr "15 分鐘" diff --git a/package/luci/applications/luci-app-statistics/po/zh-tw/statistics.po b/package/luci/applications/luci-app-statistics/po/zh-tw/statistics.po deleted file mode 100644 index 64f141dd44..0000000000 --- a/package/luci/applications/luci-app-statistics/po/zh-tw/statistics.po +++ /dev/null @@ -1,787 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2017-10-29 15:50+0800\n" -"Last-Translator: Yangfl \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" -"Language-Team: \n" - -msgid "APC UPS" -msgstr "APC UPS" - -msgid "APCUPS Plugin Configuration" -msgstr "APCUPS 外掛配置" - -msgid "Action (target)" -msgstr "動作(目標)" - -msgid "Add command for reading values" -msgstr "新增命令讀取資料" - -msgid "Add matching rule" -msgstr "新增匹配規則" - -msgid "Add multiple hosts separated by space." -msgstr "使用空格分隔多個主機" - -msgid "Add notification command" -msgstr "新增通知命令" - -msgid "Aggregate number of connected users" -msgstr "連線使用者總數" - -msgid "Base Directory" -msgstr "基本目錄" - -msgid "Basic monitoring" -msgstr "基本監控" - -msgid "CPU Context Switches Plugin Configuration" -msgstr "CPU Context Switches 外掛配置" - -msgid "CPU Frequency" -msgstr "CPU 頻率" - -msgid "CPU Frequency Plugin Configuration" -msgstr "CPU 頻率外掛配置" - -msgid "CPU Plugin Configuration" -msgstr "CPU 外掛配置" - -msgid "CSV Output" -msgstr "CSV 輸出" - -msgid "CSV Plugin Configuration" -msgstr "CSV 外掛配置" - -msgid "Cache collected data for" -msgstr "收集快取資料" - -msgid "Cache flush interval" -msgstr "快取清空間隙" - -msgid "Chain" -msgstr "鏈" - -msgid "CollectLinks" -msgstr "收集連結" - -msgid "CollectRoutes" -msgstr "收集路由" - -msgid "CollectTopology" -msgstr "收集拓撲" - -msgid "Collectd Settings" -msgstr "Collectd 設定" - -msgid "" -"Collectd is a small daemon for collecting data from various sources through " -"different plugins. On this page you can change general settings for the " -"collectd daemon." -msgstr "" -"Collectd 是一個通過不同外掛用於收集各種源資料的小型守護程式。在此頁面中,您可" -"以更改 Collectd 守護程序常規設定。" - -msgid "Conntrack" -msgstr "Conntrack" - -msgid "Conntrack Plugin Configuration" -msgstr "Conntrack 外掛配置" - -msgid "Context Switches" -msgstr "上下文切換" - -msgid "DF Plugin Configuration" -msgstr "DF 外掛配置" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS Plugin Configuration" -msgstr "DNS 外掛配置" - -msgid "Data collection interval" -msgstr "資料收集間隙" - -msgid "Datasets definition file" -msgstr "資料集定義檔案" - -msgid "Destination ip range" -msgstr "目標 IP 區間" - -msgid "Directory for collectd plugins" -msgstr "Collectd 外掛目錄" - -msgid "Directory for sub-configurations" -msgstr "子配置目錄" - -msgid "Disk Plugin Configuration" -msgstr "Disk 外掛配置" - -msgid "Disk Space Usage" -msgstr "磁碟空間使用情況" - -msgid "Disk Usage" -msgstr "磁碟使用情況" - -msgid "Display Host »" -msgstr "顯示主機" - -msgid "Display timespan »" -msgstr "顯示時間段" - -msgid "E-Mail Plugin Configuration" -msgstr "E-Mail 外掛配置" - -msgid "Email" -msgstr "電子郵件" - -msgid "Empty value = monitor all" -msgstr "留空 = 監控所有" - -msgid "Enable this plugin" -msgstr "啟用該外掛" - -msgid "Entropy" -msgstr "熵" - -msgid "Entropy Plugin Configuration" -msgstr "熵值外掛配置" - -msgid "Exec" -msgstr "Exec" - -msgid "Exec Plugin Configuration" -msgstr "Exec 外掛配置" - -msgid "Filter class monitoring" -msgstr "Filter 類監測" - -msgid "Firewall" -msgstr "防火牆" - -msgid "Flush cache after" -msgstr "清空快取後" - -msgid "Forwarding between listen and server addresses" -msgstr "轉發監聽伺服器和應用伺服器之間資料" - -msgid "Gather compression statistics" -msgstr "收集壓縮統計資訊" - -msgid "General plugins" -msgstr "通用外掛" - -msgid "Generate a separate graph for each logged user" -msgstr "為每個記錄的使用者生成一個單獨的圖表" - -msgid "Graphs" -msgstr "圖表" - -msgid "Group" -msgstr "組" - -msgid "" -"Here you can define external commands which will be started by collectd in " -"order to read certain values. The values will be read from stdout." -msgstr "" -"在這裡,您可以定義外部命令,Collectd 將啟動命令來獲取某些值,將獲取的值從標準" -"輸出埠輸出。" - -msgid "" -"Here you can define external commands which will be started by collectd when " -"certain threshold values have been reached. The values leading to invokation " -"will be feeded to the the called programs stdin." -msgstr "" -"在這裡,您可以定義外部命令,當 Collectd 達到一定閾值時,將啟動命令。閥值將會" -"作為命令的標準輸入。" - -msgid "" -"Here you can define various criteria by which the monitored iptables rules " -"are selected." -msgstr "在這裡,您可以定義各種監控 iptables 規則臨界值。" - -msgid "Hold Ctrl to select multiple items or to deselect entries." -msgstr "按住 Ctrl 鍵來選擇或取消選擇多個專案。" - -msgid "Host" -msgstr "主機" - -msgid "Hostname" -msgstr "主機名" - -msgid "IP or hostname where to get the txtinfo output from" -msgstr "獲取 txtinfo 輸出的 IP 位址或主機名" - -msgid "IRQ Plugin Configuration" -msgstr "IRQ 外掛配置" - -msgid "Ignore source addresses" -msgstr "忽略源位址" - -msgid "Incoming interface" -msgstr "入介面" - -msgid "Interface Plugin Configuration" -msgstr "Interface 外掛配置" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Interrupts" -msgstr "中斷" - -msgid "Interval for pings" -msgstr "ping 間隙" - -msgid "Iptables Plugin Configuration" -msgstr "Iptables 外掛配置" - -msgid "Leave unselected to automatically determine interfaces to monitor." -msgstr "自動保留對未選中介面的監控。" - -msgid "Listen host" -msgstr "監聽主機" - -msgid "Listen port" -msgstr "監聽埠" - -msgid "Listener interfaces" -msgstr "監聽介面" - -msgid "Load Plugin Configuration" -msgstr "Load 外掛配置" - -msgid "" -"Max values for a period can be used instead of averages when not using 'only " -"average RRAs'" -msgstr "在不使用“僅平均 RRA”的情況下,可以使用一段時間的最大值而不是平均值" - -msgid "Maximum allowed connections" -msgstr "最大允許連線數" - -msgid "Memory" -msgstr "記憶體" - -msgid "Memory Plugin Configuration" -msgstr "記憶體外掛配置" - -msgid "Monitor all except specified" -msgstr "監測所有(除特別註明外)" - -msgid "Monitor all local listen ports" -msgstr "監測所有本地監聽埠" - -msgid "Monitor all sensors" -msgstr "監控所有感測器" - -msgid "Monitor device(s) / thermal zone(s)" -msgstr "監控裝置/溫感區域" - -msgid "Monitor devices" -msgstr "監測裝置" - -msgid "Monitor disks and partitions" -msgstr "監測磁碟和分割槽" - -msgid "Monitor filesystem types" -msgstr "監測檔案系統型別" - -msgid "Monitor host" -msgstr "監測主機" - -msgid "Monitor hosts" -msgstr "監測主機" - -msgid "Monitor interfaces" -msgstr "監測介面" - -msgid "Monitor interrupts" -msgstr "監測中斷" - -msgid "Monitor local ports" -msgstr "監測本地埠" - -msgid "Monitor mount points" -msgstr "監測掛載點" - -msgid "Monitor processes" -msgstr "監測程序" - -msgid "Monitor remote ports" -msgstr "監測遠端埠" - -msgid "Name of the rule" -msgstr "規則名" - -msgid "Netlink" -msgstr "Netlink" - -msgid "Netlink Plugin Configuration" -msgstr "Netlink 外掛配置" - -msgid "Network" -msgstr "Network" - -msgid "Network Plugin Configuration" -msgstr "Network 外掛配置" - -msgid "Network plugins" -msgstr "Network 外掛" - -msgid "Network protocol" -msgstr "Network 協議" - -msgid "" -"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage " -"directory and all its parent directories need to be world readable." -msgstr "" -"注意:由於頁面是以 'nobody' 身份生成的,因此 *.rrd 檔案以及包含此檔案的所有父" -"目錄必須全域性可讀。" - -msgid "Number of threads for data collection" -msgstr "收集程式使用執行緒數" - -msgid "OLSRd" -msgstr "OLSRd" - -msgid "OLSRd Plugin Configuration" -msgstr "OLSRd 外掛配置" - -msgid "Only create average RRAs" -msgstr "僅建立平均 RRAs" - -msgid "OpenVPN" -msgstr "OpenVPN" - -msgid "OpenVPN Plugin Configuration" -msgstr "OpenVPN 外掛配置" - -msgid "OpenVPN status files" -msgstr "OpenVPN 狀態檔案" - -msgid "Options" -msgstr "選項" - -msgid "Outgoing interface" -msgstr "出介面" - -msgid "Output plugins" -msgstr "Output 外掛" - -msgid "Ping" -msgstr "Ping" - -msgid "Ping Plugin Configuration" -msgstr "Ping 外掛配置" - -msgid "Port" -msgstr "埠" - -msgid "Port for apcupsd communication" -msgstr "apcupsd 通訊埠" - -msgid "Processes" -msgstr "程序" - -msgid "Processes Plugin Configuration" -msgstr "程序外掛配置" - -msgid "Processes to monitor separated by space" -msgstr "過程監控,用空格隔開" - -msgid "Processor" -msgstr "處理器" - -msgid "Qdisc monitoring" -msgstr "Qdisc 監測" - -msgid "RRD XFiles Factor" -msgstr "RRD XFiles 因子" - -msgid "RRD heart beat interval" -msgstr "RRD 心跳間隙" - -msgid "RRD step interval" -msgstr "RRD 區間間隙" - -msgid "RRDTool" -msgstr "RRDTool" - -msgid "RRDTool Plugin Configuration" -msgstr "RRDTool 外掛配置" - -msgid "Rows per RRA" -msgstr "行/RRA" - -msgid "Script" -msgstr "指令碼" - -msgid "Seconds" -msgstr "秒" - -msgid "Sensor list" -msgstr "感測器列表" - -msgid "Sensors" -msgstr "感測器" - -msgid "Sensors Plugin Configuration" -msgstr "Sensors 外掛配置" - -msgid "Server host" -msgstr "伺服器主機" - -msgid "Server port" -msgstr "伺服器埠" - -msgid "Setup" -msgstr "設定" - -msgid "Shaping class monitoring" -msgstr "整形類監控" - -msgid "Show max values instead of averages" -msgstr "顯示最大值而不是平均值" - -msgid "Socket file" -msgstr "套接字檔案" - -msgid "Socket group" -msgstr "套接字組" - -msgid "Socket permissions" -msgstr "套接字許可權" - -msgid "Source ip range" -msgstr "源 IP 區間" - -msgid "Specifies what information to collect about links." -msgstr "收集指定連結相關資訊。" - -msgid "Specifies what information to collect about routes." -msgstr "收集指定路由相關資訊。" - -msgid "Specifies what information to collect about the global topology." -msgstr "收集指定拓撲相關資訊。" - -msgid "Splash Leases" -msgstr "Splash Leases" - -msgid "Splash Leases Plugin Configuration" -msgstr "Splash Leases 外掛配置" - -msgid "Statistics" -msgstr "統計" - -msgid "Storage directory" -msgstr "儲存目錄" - -msgid "Storage directory for the csv files" -msgstr "csv 儲存目錄" - -msgid "Store data values as rates instead of absolute values" -msgstr "儲存資料值變化量而不是絕對值" - -msgid "Stored timespans" -msgstr "儲存時間跨度" - -msgid "System Load" -msgstr "系統載入" - -msgid "TCP Connections" -msgstr "TCP 連線數" - -msgid "TCPConns Plugin Configuration" -msgstr "TCPConns 外掛配置" - -msgid "TTL for network packets" -msgstr "網路包 TTL" - -msgid "TTL for ping packets" -msgstr "ping 包 TTL" - -msgid "Table" -msgstr "表" - -msgid "The APCUPS plugin collects statistics about the APC UPS." -msgstr "APCUPS 外掛收集 APC UPS 的統計資訊。" - -msgid "The NUT plugin reads information about Uninterruptible Power Supplies." -msgstr "NUT 外掛讀取 UPS 資訊。" - -msgid "" -"The OLSRd plugin reads information about meshed networks from the txtinfo " -"plugin of OLSRd." -msgstr "OLSRd 外掛通過 txtinfo 獲取 meshed 網路資訊。" - -msgid "" -"The OpenVPN plugin gathers information about the current vpn connection " -"status." -msgstr "OpenVPN 外掛可以獲取 VPN 連線當前狀態" - -msgid "" -"The conntrack plugin collects statistics about the number of tracked " -"connections." -msgstr "conntrack 外掛獲取連線數資訊。" - -msgid "The cpu plugin collects basic statistics about the processor usage." -msgstr "cpu 外掛獲取處理器相關資訊。" - -msgid "" -"The csv plugin stores collected data in csv file format for further " -"processing by external programs." -msgstr "csv外掛用於儲存資料,以方便其他程式處理資料。" - -msgid "" -"The df plugin collects statistics about the disk space usage on different " -"devices, mount points or filesystem types." -msgstr "df 外掛收集磁碟空間使用情況、掛載點及檔案系統相關資訊。" - -msgid "" -"The disk plugin collects detailled usage statistics for selected partitions " -"or whole disks." -msgstr "disk 外掛收集磁碟分割槽使用情況及相關資訊。" - -msgid "" -"The dns plugin collects detailled statistics about dns related traffic on " -"selected interfaces." -msgstr "dns 外掛收集 dns 資料流相關資訊。" - -msgid "" -"The email plugin creates a unix socket which can be used to transmit email-" -"statistics to a running collectd daemon. This plugin is primarily intended " -"to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can " -"be used in other ways as well." -msgstr "" -"郵件外掛建立一個 unix 套接字用於為 Collectd 守護程序傳送統計資訊到電子郵件系" -"統。這個外掛主要目的是結合使用 Mail::SpamAssasin::Pulgin::Collectd,但可以用" -"在其他方面。" - -msgid "The entropy plugin collects statistics about the available entropy." -msgstr "entropy 外掛收集可用熵的統計資訊。" - -msgid "" -"The exec plugin starts external commands to read values from or to notify " -"external processes when certain threshold values have been reached." -msgstr "" -"exec 外掛用於當某些監控值已到達閾值時,啟動外部命令讀值或通知外部程式。" - -msgid "" -"The interface plugin collects traffic statistics on selected interfaces." -msgstr "Interface 外掛用於收集選定介面的資料包的統計資訊。" - -msgid "" -"The iptables plugin will monitor selected firewall rules and collect " -"informations about processed bytes and packets per rule." -msgstr "iptables 外掛將監測選定防火牆規則和收集關於每個規則處理的資料包資訊。" - -msgid "" -"The irq plugin will monitor the rate of issues per second for each selected " -"interrupt. If no interrupt is selected then all interrupts are monitored." -msgstr "" -"irq 外掛用於監控選定中斷的每秒鐘產生的中斷數。如果沒有中斷被選中,則表示對所" -"有中斷進行監測。" - -msgid "" -"The iwinfo plugin collects statistics about wireless signal strength, noise " -"and quality." -msgstr "iwinfo 外掛收集無線訊號強度、噪聲和質量的統計資訊。" - -msgid "The load plugin collects statistics about the general system load." -msgstr "load 外掛收集常規系統載入統計資訊。" - -msgid "The memory plugin collects statistics about the memory usage." -msgstr "memory 外掛收集關於記憶體使用情況的統計資訊。" - -msgid "" -"The netlink plugin collects extended informations like qdisc-, class- and " -"filter-statistics for selected interfaces." -msgstr "netlink 外掛收集為選定介面 qdisc-、class- 和 filter- 的擴充套件資料。" - -msgid "" -"The network plugin provides network based communication between different " -"collectd instances. Collectd can operate both in client and server mode. In " -"client mode locally collected data is transferred to a collectd server " -"instance, in server mode the local instance receives data from other hosts." -msgstr "" -"network 外掛提供了基於網路的不同 Collectd 例項。Collectd 可以工作在客戶端和服" -"務器兩個模式。在客戶端模式下收集本地資訊,然後轉移到一個 Collectd 伺服器例項" -"中,在伺服器模式將從其他主機收集資訊。" - -msgid "" -"The ping plugin will send icmp echo replies to selected hosts and measure " -"the roundtrip time for each host." -msgstr "ping 外掛將傳送 icmp echo replies 到選定主機來測量每臺主機的響應時間。" - -msgid "" -"The processes plugin collects informations like cpu time, page faults and " -"memory usage of selected processes." -msgstr "processes 外掛收集選定程序的 cpu 時間、頁面錯誤和記憶體使用資訊。" - -msgid "" -"The rrdtool plugin stores the collected data in rrd database files, the " -"foundation of the diagrams.

    Warning: Setting the wrong " -"values will result in a very high memory consumption in the temporary " -"directory. This can render the device unusable!" -msgstr "" -"rrdtool 外掛將收集資料以圖表的形式儲存在 RRD 資料庫檔案中。

    警告:錯誤的引數設定,將導致非常高的臨時記憶體消耗。這可能會使裝置無" -"法使用!" - -msgid "" -"The sensors plugin uses the Linux Sensors framework to gather environmental " -"statistics." -msgstr "sensors 外掛使用 Linux Sensors 框架來收集環境統計資訊。" - -msgid "" -"The splash leases plugin uses libuci to collect statistics about splash " -"leases." -msgstr "splash leases 外掛使用 libuci 來收集 splash leases 的統計資訊。" - -msgid "" -"The statistics package uses Collectd " -"to gather data and RRDtool to " -"render diagram images." -msgstr "" -"Statistics 軟體包使用 Collectd 來收集數" -"據,並用 RRDtool 生成統計圖" -"表。" - -msgid "" -"The tcpconns plugin collects informations about open tcp connections on " -"selected ports." -msgstr "tcpconns 外掛收集選定埠 TCP 連線資訊。" - -msgid "" -"The thermal plugin will monitor temperature of the system. Data is typically " -"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " -"read, e.g. thermal_zone1 )" -msgstr "" -"thermal 外掛將會監控系統溫度。資料主要取自 /sys/class/thermal/*/temp ('*' 表" -"示溫感裝置的名字,比如 thermal_zone1) 。" - -msgid "" -"The unixsock plugin creates a unix socket which can be used to read " -"collected data from a running collectd instance." -msgstr "unixsock 外掛建立一個 unix 套接字可用於讀取 Collectd 例項的收集資訊。" - -msgid "The uptime plugin collects statistics about the uptime of the system." -msgstr "uptime 外掛收集系統啟動時間的統計資訊。" - -msgid "Thermal" -msgstr "溫感" - -msgid "Thermal Plugin Configuration" -msgstr "溫感外掛配置" - -msgid "This plugin collects statistics about the processor context switches." -msgstr "此外掛收集處理器上下文切換的統計資訊。" - -msgid "This plugin collects statistics about the processor frequency scaling." -msgstr "此外掛收集處理器頻率調整的統計資訊。" - -msgid "" -"This section defines on which interfaces collectd will wait for incoming " -"connections." -msgstr "定義 Collectd 將監聽哪個介面來傳入連線收集資料。" - -msgid "" -"This section defines to which servers the locally collected data is sent to." -msgstr "定義本地收集資料被髮送到哪臺 Collected 伺服器。" - -msgid "Try to lookup fully qualified hostname" -msgstr "嘗試解析主機全域名" - -msgid "UPS" -msgstr "UPS" - -msgid "UPS Plugin Configuration" -msgstr "UPS 外掛配置" - -msgid "UPS name in NUT ups@host format" -msgstr "UPS 名使用 NUT(Network UPS Tools)格式:ups@host" - -msgid "UnixSock" -msgstr "UnixSock" - -msgid "Unixsock Plugin Configuration" -msgstr "Unixsock 外掛配置" - -msgid "Uptime" -msgstr "執行時間" - -msgid "Uptime Plugin Configuration" -msgstr "執行時間外掛配置" - -msgid "Use improved naming schema" -msgstr "使用更高階的命名規則" - -msgid "Used PID file" -msgstr "正在使用的 PID 檔案" - -msgid "User" -msgstr "使用者" - -msgid "Verbose monitoring" -msgstr "詳細監測" - -msgid "Wireless" -msgstr "無線" - -msgid "Wireless iwinfo Plugin Configuration" -msgstr "無線 iwinfo 外掛配置" - -msgid "" -"You can install additional collectd-mod-* plugins to enable more statistics." -msgstr "您可以安裝更多的 collectd-mod-* 外掛以獲得更多的統計資料。" - -msgid "e.g. br-ff" -msgstr "例如:br-ff" - -msgid "e.g. br-lan" -msgstr "例如:br-lan" - -msgid "e.g. reject-with tcp-reset" -msgstr "例如:eject-with tcp-reset" - -msgid "max. 16 chars" -msgstr "最長 16 個字元" - -msgid "reduces rrd size" -msgstr "減少 rrd 大小" - -msgid "seconds; multiple separated by space" -msgstr "秒數;多個使用空格分隔" - -msgid "server interfaces" -msgstr "伺服器介面" - -#~ msgid "Collectd" -#~ msgstr "Collectd" - -#~ msgid "System plugins" -#~ msgstr "系統外掛" - -#~ msgid "" -#~ "The statistics package is based on Collectd and uses RRD Tool to render diagram images from collected data." -#~ msgstr "" -#~ "統計軟體包是基於Collectd," -#~ "並使用RRD工具來渲染圖表,用" -#~ "於收集資料。" - -#~ msgid "group name" -#~ msgstr "群名稱" diff --git a/package/luci/applications/luci-app-statistics/root/etc/config/luci_statistics b/package/luci/applications/luci-app-statistics/root/etc/config/luci_statistics deleted file mode 100644 index 8cc918e3db..0000000000 --- a/package/luci/applications/luci-app-statistics/root/etc/config/luci_statistics +++ /dev/null @@ -1,172 +0,0 @@ -# general settings - -config statistics 'collectd' - option BaseDir '/var/run/collectd' - option Include '/etc/collectd/conf.d' - option PIDFile '/var/run/collectd.pid' - option PluginDir '/usr/lib/collectd' - option TypesDB '/usr/share/collectd/types.db' - option Interval '30' - option ReadThreads '2' - -config statistics 'rrdtool' - option default_timespan '1hour' - option image_width '600' - option image_path '/tmp/rrdimg' - -# output plugins - -config statistics 'collectd_rrdtool' - option enable '1' - option DataDir '/tmp/rrd' - option RRARows '100' - option RRASingle '1' - option RRATimespans '1hour 1day 1week 1month 1year' - -config statistics 'collectd_csv' - option enable '0' - option StoreRates '0' - option DataDir '/tmp' - -config statistics 'collectd_email' - option enable '0' - option SocketFile '/var/run/collectd/email.sock' - option SocketGroup 'nogroup' - -config statistics 'collectd_logfile' - option enable '0' - option LogLevel 'notice' - option File '/var/log/collectd.log' - option Timestamp '1' - -config statistics 'collectd_network' - option enable '0' - -config statistics 'collectd_unixsock' - option enable '0' - option SocketFile '/var/run/collectd/query.sock' - option SocketGroup 'nogroup' - -# input plugins - -config statistics 'collectd_apcups' - option enable '0' - option Host 'localhost' - option Port '3551' - -config statistics 'collectd_conntrack' - option enable '0' - -config statistics 'collectd_contextswitch' - option enable '0' - -config statistics 'collectd_cpu' - option enable '1' - -config statistics 'collectd_cpufreq' - option enable '0' - -config statistics 'collectd_df' - option enable '0' - option Devices '/dev/mtdblock/4' - option MountPoints '/jffs' - option FSTypes 'tmpfs' - option IgnoreSelected '0' - -config statistics 'collectd_disk' - option enable '0' - option Disks 'hda1 hdb' - option IgnoreSelected '0' - -config statistics 'collectd_dns' - option enable '0' - option Interfaces 'br-lan' - option IgnoreSources '127.0.0.1' - -config statistics 'collectd_entropy' - option enable '0' - -config statistics 'collectd_exec' - option enable '0' - -config statistics 'collectd_interface' - option enable '1' - option Interfaces 'br-lan' - option IgnoreSelected '0' - -config statistics 'collectd_iptables' - option enable '0' - -config collectd_iptables_match - option table 'nat' - option chain 'luci_fw_postrouting' - option target 'MASQUERADE' - option source '192.168.1.0/24' - option outputif 'br-ff' - option name 'LAN-Clients traffic' - -config collectd_iptables_match - option chain 'luci_fw_postrouting' - option table 'nat' - option target 'MASQUERADE' - option source '10.61.230.0/24' - option outputif 'br-ff' - option name 'WLAN-Clients traffic' - -config statistics 'collectd_irq' - option enable '0' - option Irqs '2 3 4 7' - -config statistics 'collectd_iwinfo' - option enable '1' - -config statistics 'collectd_load' - option enable '1' - -config statistics 'collectd_memory' - option enable '1' - -config statistics 'collectd_netlink' - option enable '0' - option IgnoreSelected '0' - option VerboseInterfaces 'br-lan' - option QDiscs 'br-lan' - -config statistics 'collectd_nut' - option enable '0' - option UPS 'myupsname' - -config statistics 'collectd_olsrd' - option enable '0' - option Port '2006' - option Host '127.0.0.1' - -config statistics 'collectd_ping' - option enable '0' - option TTL '127' - option Interval '30' - option Hosts '127.0.0.1' - -config statistics 'collectd_processes' - option enable '0' - option Processes 'uhttpd dnsmasq dropbear' - -config statistics 'collectd_sensors' - option enable '0' - -config statistics 'collectd_splash_leases' - option enable '0' - -config statistics 'collectd_tcpconns' - option enable '0' - option ListeningPorts '0' - option LocalPorts '22 80' - -config statistics 'collectd_thermal' - option enable '0' - option IgnoreSelected '0' - option Device '' - -config statistics 'collectd_uptime' - option enable '0' - diff --git a/package/luci/applications/luci-app-statistics/root/etc/init.d/luci_statistics b/package/luci/applications/luci-app-statistics/root/etc/init.d/luci_statistics deleted file mode 100755 index ab75b69df0..0000000000 --- a/package/luci/applications/luci-app-statistics/root/etc/init.d/luci_statistics +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh /etc/rc.common -START=79 - -start() { - ### replace shipped config with symlink - mkdir -p /var/etc - if [ ! -L /etc/collectd.conf ]; then - test -f /etc/collectd.conf && mv /etc/collectd.conf /etc/collectd.conf.bak - ln -s /var/etc/collectd.conf /etc/collectd.conf - fi - - ### create config - /usr/bin/stat-genconfig > /var/etc/collectd.conf - - ### workaround broken permissions on /tmp - chmod 1777 /tmp -} - -restart() { - ### regenerate config / prepare environment - start - - ### restart collectd - /etc/init.d/collectd restart -} diff --git a/package/luci/applications/luci-app-statistics/root/etc/uci-defaults/40_luci-statistics b/package/luci/applications/luci-app-statistics/root/etc/uci-defaults/40_luci-statistics deleted file mode 100755 index 28e35298a2..0000000000 --- a/package/luci/applications/luci-app-statistics/root/etc/uci-defaults/40_luci-statistics +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -# register commit handler -uci -q batch <<-EOF >/dev/null - delete ucitrack.@luci_statistics[-1] - add ucitrack luci_statistics - set ucitrack.@luci_statistics[-1].init=luci_statistics - commit ucitrack -EOF - -# symlink for busybox httpd -[ -x /usr/sbin/httpd ] && [ ! -h /www/rrdimg ] && \ - ln -s /tmp/rrdimg /www/rrdimg - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/package/luci/applications/luci-app-statistics/root/usr/bin/stat-genconfig deleted file mode 100755 index 2bf63c1fe6..0000000000 --- a/package/luci/applications/luci-app-statistics/root/usr/bin/stat-genconfig +++ /dev/null @@ -1,476 +0,0 @@ -#!/usr/bin/lua - ---[[ - -Luci statistics - collectd configuration generator -(c) 2008 Freifunk Leipzig / Jo-Philipp Wich - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ - -]]-- - - -require("luci.model.uci") -require("luci.sys.iptparser") -require("luci.util") - -local ipt = luci.sys.iptparser.IptParser() -local uci = luci.model.uci.cursor() -local sections = uci:get_all( "luci_statistics" ) - - -function print(...) - nixio.stdout:write(...) - nixio.stdout:write("\n") -end - -function section( plugin ) - - local config = sections[ "collectd_" .. plugin ] or sections["collectd"] - - if type(config) == "table" and ( plugin == "collectd" or config.enable == "1" ) then - - local params = "" - - if type( plugins[plugin] ) == "function" then - params = plugins[plugin]( config ) - else - params = config_generic( config, plugins[plugin][1], plugins[plugin][2], plugins[plugin][3], plugin == "collectd" ) - end - - - if plugin ~= "collectd" then - print( "LoadPlugin " .. plugin ) - - if params:len() > 0 then - print( "\n" .. params .. "\n" ) - else - print( "" ) - end - else - print( params .. "\n" ) - end - end -end - -function config_generic( c, singles, bools, lists, nopad ) - local str = "" - - if type(c) == "table" then - - if type(singles) == "table" then - for i, key in ipairs( singles ) do - if preprocess[key] then - c[key] = preprocess[key](c[key]) - end - - str = str .. _string( c[key], key, nopad ) - end - end - - if type(bools) == "table" then - for i, key in ipairs( bools ) do - if preprocess[key] then - c[key] = preprocess[key](c[key]) - end - - str = str .. _bool( c[key], key, nopad ) - end - end - - if type(lists) == "table" then - str = str .. _list_expand( c, lists, nopad ) - end - end - - return str -end - -function config_exec( c ) - local str = "" - - for s in pairs(sections) do - for key, type in pairs({ Exec="collectd_exec_input", NotificationExec="collectd_exec_notify" }) do - if sections[s][".type"] == type then - - cmd = sections[s].cmdline - - if cmd then - cmd = cmd:gsub("^%s+", ""):gsub("%s+$", "") - user = sections[s].cmduser or "nobody" - group = sections[s].cmdgroup - - str = str .. "\t" .. key .. ' "' .. - user .. ( group and ":" .. group or "" ) .. '" "' .. - cmd:gsub('%s+', '" "') .. '"\n' - end - end - end - end - - return str -end - -function config_iptables( c ) - local str = "" - - for s in pairs(sections) do - if sections[s][".type"] == "collectd_iptables_match" then - - search = { } - - for i, k in ipairs( { - "table", "chain", "target", "protocol", "source", "destination", - "inputif", "outputif", "options" - } ) do - v = sections[s][k] - - if type(v) == "string" then - if k == "options" then v = luci.util.split( v, "%s+", nil, true ) end - search[k] = v - end - end - - for i, rule in ipairs( ipt:find( search ) ) do - - name = sections[s].name:gsub( "%s+", "_" ) - if i > 1 then name = name .. "_(" .. i .. ")" end - - str = str .. "\tChain " .. rule.table .. " " .. rule.chain .. " " .. rule.index .. ' "' .. name .. "\"\n" - end - end - end - - return str -end - -function config_network( c ) - local str = "" - - for s in pairs(sections) do - for key, type in pairs({ Listen="collectd_network_listen", Server="collectd_network_server" }) do - if sections[s][".type"] == type then - - host = sections[s].host - port = sections[s].port - - if host then - if port then - str = str .. "\t" .. key .. " \"" .. host .. "\" \"" .. port .. "\"\n" - else - str = str .. "\t" .. key .. " \"" .. host .. "\"\n" - end - end - end - end - end - - return str .. _string( c["TimeToLive"], "TimeToLive" ) - .. _string( c["CacheFlush"], "CacheFlush" ) - .. _bool( c["Forward"], "Forward" ) -end - - -function _list_expand( c, l, nopad ) - local str = "" - - for i, n in ipairs(l) do - if c[n] then - if preprocess[n] then - c[n] = preprocess[n](c[n]) - end - - if n:find("(%w+)ses") then - k = n:gsub("(%w+)ses$", "%1s") - else - k = n:gsub("(%w+)s$", "%1") - end - - str = str .. _expand( c[n], k, nopad ) - end - end - - return str -end - -function _expand( s, n, nopad ) - local str = "" - - if type(s) == "string" then - for i, v in ipairs( luci.util.split( s, "%s+", nil, true ) ) do - str = str .. _string( v, n, nopad ) - end - elseif type(s) == "table" then - for i, v in ipairs(s) do - str = str .. _string( v, n, nopad ) - end - end - - return str -end - -function _bool( s, n, nopad ) - - local str = "" - local pad = "" - if not nopad then pad = "\t" end - - if s and s == "1" then - str = pad .. n .. " true" - else - str = pad .. n .. " false" - end - - return str .. "\n" -end - -function _string( s, n, nopad ) - - local str = "" - local pad = "" - if not nopad then pad = "\t" end - - if s then - if s:find("[^%d]") or n == "Port" then - if not s:find("[^%w]") and n ~= "Port" then - str = pad .. n .. " " .. luci.util.trim(s) - else - str = pad .. n .. ' "' .. luci.util.trim(s) .. '"' - end - else - str = pad .. n .. " " .. luci.util.trim(s) - end - - str = str .. "\n" - end - - return str -end - - -plugins = { - apcups = { - { "Host", "Port" }, - { }, - { } - }, - - collectd = { - { "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads", "Hostname" }, - { }, - { } - }, - - conntrack = { - { }, - { }, - { } - }, - - cpu = { - { }, - { }, - { } - }, - - cpufreq = { - { }, - { }, - { } - }, - - contextswitch = { - { }, - { }, - { } - }, - - csv = { - { "DataDir" }, - { "StoreRates" }, - { } - }, - - df = { - { }, - { "IgnoreSelected" }, - { "Devices", "MountPoints", "FSTypes" } - }, - - disk = { - { }, - { "IgnoreSelected" }, - { "Disks" } - }, - - dns = { - { }, - { }, - { "Interfaces", "IgnoreSources" } - }, - - email = { - { "SocketFile", "SocketGroup", "SocketPerms", "MaxConns" }, - { }, - { } - }, - - entropy = { - { }, - { }, - { } - }, - - exec = config_exec, - - interface = { - { }, - { "IgnoreSelected" }, - { "Interfaces" } - }, - - iptables = config_iptables, - - irq = { - { }, - { "IgnoreSelected" }, - { "Irqs" } - }, - - iwinfo = { - { }, - { "IgnoreSelected" }, - { "Interfaces" } - }, - - load = { - { }, - { }, - { } - }, - - logfile = { - { "LogLevel", "File" }, - { "Timestamp" }, - { } - }, - - memory = { - { }, - { }, - { } - }, - - netlink = { - { }, - { "IgnoreSelected" }, - { "Interfaces", "VerboseInterfaces", "QDiscs", "Classes", "Filters" } - }, - - network = config_network, - - nut = { - { "UPS" }, - { }, - { } - }, - - olsrd = { - { "Host", "Port", "CollectLinks","CollectRoutes","CollectTopology"}, - { }, - { } - }, - - openvpn = { - { }, - { "CollectIndividualUsers", "CollectUserCount", "CollectCompression", "ImprovedNamingSchema" }, - { "StatusFile" } - }, - - ping = { - { "TTL", "Interval" }, - { }, - { "Hosts" } - }, - - processes = { - { }, - { }, - { "Processes" } - }, - - rrdtool = { - { "DataDir", "StepSize", "HeartBeat", "RRARows", "XFF", "CacheFlush", "CacheTimeout" }, - { "RRASingle" }, - { "RRATimespans" } - }, - - sensors = { - { }, - { "IgnoreSelected" }, - { "Sensor" } - }, - - splash_leases = { - { }, - { }, - { } - }, - - tcpconns = { - { }, - { "ListeningPorts" }, - { "LocalPorts", "RemotePorts" } - }, - - thermal = { - { }, - { "IgnoreSelected" }, - { "Device" } - }, - - unixsock = { - { "SocketFile", "SocketGroup", "SocketPerms" }, - { }, - { } - }, - - uptime = { - { }, - { }, - { } - }, - - wireless = { - { }, - { }, - { } - }, -} - -preprocess = { - RRATimespans = function(val) - local rv = { } - for time in val:gmatch("[^%s]+") do - table.insert( rv, luci.util.parse_units(time) ) - end - return table.concat(rv, " ") - end -} - - -section("collectd") - -section("logfile") - -for plugin in pairs(plugins) do - if (plugin ~= "collectd") and (plugin ~= "logfile") then - section( plugin ) - end -end diff --git a/package/luci/applications/luci-app-tinyproxy/Makefile b/package/luci/applications/luci-app-tinyproxy/Makefile deleted file mode 100644 index 02751b849d..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Tinyproxy - HTTP(S)-Proxy configuration -LUCI_DEPENDS:=+tinyproxy - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-tinyproxy/luasrc/controller/tinyproxy.lua b/package/luci/applications/luci-app-tinyproxy/luasrc/controller/tinyproxy.lua deleted file mode 100644 index cf7e974d6c..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/luasrc/controller/tinyproxy.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.tinyproxy", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/tinyproxy") then - return - end - - entry({"admin", "services", "tinyproxy"}, alias("admin", "services", "tinyproxy", "config"), _("Tinyproxy")) - entry({"admin", "services", "tinyproxy", "status"}, template("tinyproxy_status"), _("Status")) - entry({"admin", "services", "tinyproxy", "config"}, cbi("tinyproxy"), _("Configuration")) -end diff --git a/package/luci/applications/luci-app-tinyproxy/luasrc/model/cbi/tinyproxy.lua b/package/luci/applications/luci-app-tinyproxy/luasrc/model/cbi/tinyproxy.lua deleted file mode 100644 index 11f34fbad4..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/luasrc/model/cbi/tinyproxy.lua +++ /dev/null @@ -1,240 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("tinyproxy", translate("Tinyproxy"), - translate("Tinyproxy is a small and fast non-caching HTTP(S)-Proxy")) - -s = m:section(TypedSection, "tinyproxy", translate("Server Settings")) -s.anonymous = true - -s:tab("general", translate("General settings")) -s:tab("privacy", translate("Privacy settings")) -s:tab("filter", translate("Filtering and ACLs")) -s:tab("limits", translate("Server limits")) - - -o = s:taboption("general", Flag, "enabled", translate("Enable Tinyproxy server")) -o.rmempty = false - -function o.write(self, section, value) - if value == "1" then - luci.sys.init.enable("tinyproxy") - else - luci.sys.init.disable("tinyproxy") - end - - return Flag.write(self, section, value) -end - - -o = s:taboption("general", Value, "Port", translate("Listen port"), - translate("Specifies the HTTP port Tinyproxy is listening on for requests")) - -o.optional = true -o.datatype = "port" -o.placeholder = 8888 - - -o = s:taboption("general", Value, "Listen", translate("Listen address"), - translate("Specifies the addresses Tinyproxy is listening on for requests")) - -o.optional = true -o.datatype = "ipaddr" -o.placeholder = "0.0.0.0" - - -o = s:taboption("general", Value, "Bind", translate("Bind address"), - translate("Specifies the address Tinyproxy binds to for outbound forwarded requests")) - -o.optional = true -o.datatype = "ipaddr" -o.placeholder = "0.0.0.0" - - -o = s:taboption("general", Value, "DefaultErrorFile", translate("Error page"), - translate("HTML template file to serve when HTTP errors occur")) - -o.optional = true -o.default = "/usr/share/tinyproxy/default.html" - - -o = s:taboption("general", Value, "StatFile", translate("Statistics page"), - translate("HTML template file to serve for stat host requests")) - -o.optional = true -o.default = "/usr/share/tinyproxy/stats.html" - - -o = s:taboption("general", Flag, "Syslog", translate("Use syslog"), - translate("Writes log messages to syslog instead of a log file")) - - -o = s:taboption("general", Value, "LogFile", translate("Log file"), - translate("Log file to use for dumping messages")) - -o.default = "/var/log/tinyproxy.log" -o:depends("Syslog", "") - - -o = s:taboption("general", ListValue, "LogLevel", translate("Log level"), - translate("Logging verbosity of the Tinyproxy process")) - -o:value("Critical") -o:value("Error") -o:value("Warning") -o:value("Notice") -o:value("Connect") -o:value("Info") - - -o = s:taboption("general", Value, "User", translate("User"), - translate("Specifies the user name the Tinyproxy process is running as")) - -o.default = "nobody" - - -o = s:taboption("general", Value, "Group", translate("Group"), - translate("Specifies the group name the Tinyproxy process is running as")) - -o.default = "nogroup" - - --- --- Privacy --- - -o = s:taboption("privacy", Flag, "XTinyproxy", translate("X-Tinyproxy header"), - translate("Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded requests")) - - -o = s:taboption("privacy", Value, "ViaProxyName", translate("Via hostname"), - translate("Specifies the Tinyproxy hostname to use in the Via HTTP header")) - -o.placeholder = "tinyproxy" -o.datatype = "hostname" - - -s:taboption("privacy", DynamicList, "Anonymous", translate("Header whitelist"), - translate("Specifies HTTP header names which are allowed to pass-through, all others are discarded. Leave empty to disable header filtering")) - - --- --- Filter --- - -o = s:taboption("filter", DynamicList, "Allow", translate("Allowed clients"), - translate("List of IP addresses or ranges which are allowed to use the proxy server")) - -o.placeholder = "0.0.0.0" -o.datatype = "ipaddr" - - -o = s:taboption("filter", DynamicList, "ConnectPort", translate("Allowed connect ports"), - translate("List of allowed ports for the CONNECT method. A single value \"0\" allows all ports")) - -o.placeholder = 0 -o.datatype = "port" - - -s:taboption("filter", FileUpload, "Filter", translate("Filter file"), - translate("Plaintext file with URLs or domains to filter. One entry per line")) - - -s:taboption("filter", Flag, "FilterURLs", translate("Filter by URLs"), - translate("By default, filtering is done based on domain names. Enable this to match against URLs instead")) - - -s:taboption("filter", Flag, "FilterExtended", translate("Filter by RegExp"), - translate("By default, basic POSIX expressions are used for filtering. Enable this to activate extended regular expressions")) - - - s:taboption("filter", Flag, "FilterCaseSensitive", translate("Filter case-sensitive"), - translate("By default, filter strings are treated as case-insensitive. Enable this to make the matching case-sensitive")) - - -s:taboption("filter", Flag, "FilterDefaultDeny", translate("Default deny"), - translate("By default, the filter rules act as blacklist. Enable this option to only allow matched URLs or domain names")) - - --- --- Limits --- - -o = s:taboption("limits", Value, "Timeout", translate("Connection timeout"), - translate("Maximum number of seconds an inactive connection is held open")) - -o.optional = true -o.datatype = "uinteger" -o.default = 600 - - -o = s:taboption("limits", Value, "MaxClients", translate("Max. clients"), - translate("Maximum allowed number of concurrently connected clients")) - -o.datatype = "uinteger" -o.default = 10 - - -o = s:taboption("limits", Value, "MinSpareServers", translate("Min. spare servers"), - translate("Minimum number of prepared idle processes")) - -o.datatype = "uinteger" -o.default = 5 - - -o = s:taboption("limits", Value, "MaxSpareServers", translate("Max. spare servers"), - translate("Maximum number of prepared idle processes")) - -o.datatype = "uinteger" -o.default = 10 - - -o = s:taboption("limits", Value, "StartServers", translate("Start spare servers"), - translate("Number of idle processes to start when launching Tinyproxy")) - -o.datatype = "uinteger" -o.default = 5 - - -o = s:taboption("limits", Value, "MaxRequestsPerChild", translate("Max. requests per server"), - translate("Maximum allowed number of requests per process. If it is exeeded, the process is restarted. Zero means unlimited.")) - -o.datatype = "uinteger" -o.default = 0 - - --- --- Upstream --- - -s = m:section(TypedSection, "upstream", translate("Upstream Proxies"), - translate("Upstream proxy rules define proxy servers to use when accessing certain IP addresses or domains.")) - -s.anonymous = true -s.addremove = true - - -t = s:option(ListValue, "type", translate("Policy"), - translate("Via proxy routes requests to the given target via the specifed upstream proxy, Reject access disables any upstream proxy for the target")) - -t:value("proxy", translate("Via proxy")) -t:value("reject", translate("Reject access")) - - -ta = s:option(Value, "target", translate("Target host"), - translate("Can be either an IP address or range, a domain name or \".\" for any host without domain")) - -ta.rmempty = true -ta.placeholder = "0.0.0.0/0" -ta.datatype = "host(1)" - - -v = s:option(Value, "via", translate("Via proxy"), - translate("Specifies the upstream proxy to use for accessing the target host. Format is address:port")) - -v:depends({type="proxy"}) -v.placeholder = "10.0.0.1:8080" -v.datatype = "ip4addrport" - -return m diff --git a/package/luci/applications/luci-app-tinyproxy/luasrc/view/tinyproxy_status.htm b/package/luci/applications/luci-app-tinyproxy/luasrc/view/tinyproxy_status.htm deleted file mode 100644 index d43a887b07..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/luasrc/view/tinyproxy_status.htm +++ /dev/null @@ -1,50 +0,0 @@ -<% - -if luci.http.formvalue("frame") == "1" then - local uci = require "luci.model.uci".cursor() - local addr = "127.0.0.1" - local port = "8888" - - uci:foreach("tinyproxy", "tinyproxy", - function(s) - addr = s.StatHost or addr - port = s.Port or port - return false - end) - - local data = false - local wget = io.popen("wget -qO- http://%s:%s" % { addr, port }) - if wget then - while true do - local l = wget:read("*l") - if not l then - break - end - - luci.http.write(l) - data = true - end - - wget:close() - end - - if not data then - luci.http.write(translate("Failed to retrieve statistics from url:")) - luci.http.write(" http://%s:%s" % { addr, port }) - end - - return -end - --%> - -<%+header%> - -
    -

    <%:Tinyproxy Status%>

    -
    - -
    -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-tinyproxy/po/ca/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/ca/tinyproxy.po deleted file mode 100644 index 69cd99e5b9..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/ca/tinyproxy.po +++ /dev/null @@ -1,339 +0,0 @@ -# tinyproxy.pot -# generated from ./applications/luci-tinyproxy/luasrc/i18n/tinyproxy.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-07-18 00:04+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "Clients permesos" - -msgid "Allowed connect ports" -msgstr "Ports de connexió permesos" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "Configuració" - -msgid "Connection timeout" -msgstr "Temps d'espera de connexió" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "Habilita el servidor Tinyproxy" - -msgid "Error page" -msgstr "Pàgina d'error" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "Filtra per expressió regular" - -msgid "Filter by URLs" -msgstr "Filtra per adreça" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "Fitxer de filtració" - -msgid "Filtering and ACLs" -msgstr "Filtració i ACLs" - -msgid "General settings" -msgstr "Ajusts generals" - -msgid "Group" -msgstr "Grup" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "Llista blanca de capçaleres" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" -"Llista d'adreces IP o rangs dels quals es permeten utilitzar el servidor " -"intermediari" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" -"Llista de ports permesos per al mètode CONNECT. El valor solter \"0\" permet " -"tots els ports" - -msgid "Listen address" -msgstr "Adreça d'escolta" - -msgid "Listen port" -msgstr "Port d'escolta" - -msgid "Log file" -msgstr "Fitxer de registre" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "Nivell de registre" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "Màx servidors spare" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "Mín servidors spare" - -msgid "Minimum number of prepared idle processes" -msgstr "Nombre mínim de processos ociosos preparats" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "Nombre de processos ociosos que iniciar al iniciar el Tinyproxy" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "Política" - -msgid "Privacy settings" -msgstr "Ajusts de privacitat" - -msgid "Reject access" -msgstr "Rebutja accés" - -msgid "Server Settings" -msgstr "Ajusts de servidor" - -msgid "Server limits" -msgstr "Límits de servidor" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "Pàgina d'estadístiques" - -msgid "Status" -msgstr "Estat" - -msgid "Target host" -msgstr "Màquina destí" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Estat de Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy és un proxy HTTP no caché petit i ràpid" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "Utilitza el syslog" - -msgid "User" -msgstr "Usuari" - -msgid "Via hostname" -msgstr "Via nom de host" - -msgid "Via proxy" -msgstr "Via proxy" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" -"Escriu els missatges de registre al syslog en lloc d'un fitxer de registre" - -msgid "X-Tinyproxy header" -msgstr "Capçalera X-Tinyproxy" - -#~ msgid "Allow access from" -#~ msgstr "Permet l'accés des de" - -#~ msgid "Allowed headers for anonymous proxy" -#~ msgstr "Capçaleres permeses pel proxy anònim" - -#~ msgid "Bind outgoing traffic to address" -#~ msgstr "Vincula el tràfic sortint a l'adreça" - -#~ msgid "Ports allowed for CONNECT method" -#~ msgstr "Ports permesos pel mètode CONNECT" - -#~ msgid "0 = disabled, empty = all" -#~ msgstr "0 = desactivats, buit = tots" - -#~ msgid "Error document" -#~ msgstr "Document d'error" - -#~ msgid "Filter list" -#~ msgstr "Llista de filtre" - -#~ msgid "Case sensitive filters" -#~ msgstr "Filtres distingint majúscules i minúscules" - -#~ msgid "Filter list is a whitelist" -#~ msgstr "La llista de filtre és una llista blanca" - -#~ msgid "Extended regular expression filters" -#~ msgstr "Filtres d'expressions regulars exteses" - -#~ msgid "Filter URLs instead of domains" -#~ msgstr "Filtra URLs en comptes de dominis" - -#~ msgid "Listen on address" -#~ msgstr "Escolta a l'adreça" - -#~ msgid "Logfile" -#~ msgstr "Fitxer de registre" - -#~ msgid "Maximum number of clients" -#~ msgstr "Màxim número de clients" - -#~ msgid "Maximum requests per thread" -#~ msgstr "Màximes peticions per fil" - -#~ msgid "Spare servers to start with" -#~ msgstr "Servidors spare amb els que començar" - -#~ msgid "Statistic document" -#~ msgstr "Document estadístic" - -#~ msgid "Write to syslog" -#~ msgstr "Escriu al syslog" - -#~ msgid "Connection Timeout" -#~ msgstr "Temps d'espera excedit" - -#~ msgid "Value of Via-Header" -#~ msgstr "Valor de Via-Header" - -#~ msgid "Include client IP" -#~ msgstr "Inclou client IP" - -#~ msgid "Upstream Control" -#~ msgstr "Control de pujada" - -#~ msgid "Type" -#~ msgstr "Tipus" - -#~ msgid "Upstream Proxy" -#~ msgstr "Proxy de pujada" diff --git a/package/luci/applications/luci-app-tinyproxy/po/cs/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/cs/tinyproxy.po deleted file mode 100644 index 2a2cbdc84a..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/cs/tinyproxy.po +++ /dev/null @@ -1,258 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-12 20:14+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "Konfigurace" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "Povolit server Tinyproxy" - -msgid "Error page" -msgstr "Chybová stránka" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "Filtrovat podle RegExp" - -msgid "Filter by URLs" -msgstr "Filtrovat podle URL adres" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "Obecné nastavení" - -msgid "Group" -msgstr "Skupina" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "Max. klientů" - -msgid "Max. requests per server" -msgstr "Max. žádostí na server" - -msgid "Max. spare servers" -msgstr "Max. záložních serverů" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "Min. záložních serverů" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "Politika" - -msgid "Privacy settings" -msgstr "Nastavení soukromí" - -msgid "Reject access" -msgstr "Odepřít přístup" - -msgid "Server Settings" -msgstr "Nastavení serveru" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "Stránka statistik" - -msgid "Status" -msgstr "Stav" - -msgid "Target host" -msgstr "Cílový hostitel" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Stav Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy je malý a rychlý necachující HTTP(S)-Proxy server" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "Použít syslog" - -msgid "User" -msgstr "Uživatel" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "X-Tinyproxy hlavička" diff --git a/package/luci/applications/luci-app-tinyproxy/po/de/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/de/tinyproxy.po deleted file mode 100644 index d444872437..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/de/tinyproxy.po +++ /dev/null @@ -1,373 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2012-11-28 10:52+0200\n" -"Last-Translator: dunkelschunkel \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" -"Via Proxy leitet Anfragen an das gegebene Ziel über den angegebenen " -"Upstream-Proxy, Zugriff verweigern deaktiviert jegliche Proxies für " -"das Ziel" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"Fügt eine \"X-Tinyproxy\" HTTP-Headerzeile mit der Client Adresse in " -"weitergeleitete Anfragen ein" - -msgid "Allowed clients" -msgstr "Erlaubte Clients" - -msgid "Allowed connect ports" -msgstr "Erlaubte Verbindungsports" - -msgid "Bind address" -msgstr "Serveradresse" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"Standardmäßig werden einfache POSIX Ausdrücke für die Filterung genutzt, " -"diese Option aktiviert erweiterte reguläre Ausdrücke" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" -"Standardmäßig spielt die Groß- und Kleinschreibung bei der Filterung keine " -"Rolle, diese Option aktiviert die Unterscheidung von Groß- und " -"Kleinschreibung" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" -"Standardmäßig basiert die Filterung auf Domainnamen, diese Option aktiviert " -"das Filtern gegen die volle URL" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"Standardmäßig fungieren die Filterregeln als Blacklist, diese Option kehrt " -"diese in eine Whitelist um und lässt nur treffende URLs oder Domains zu" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" -"Kann entweder eine IP-Adresse, ein Domain-Name oder \".\" für jegliche Hosts " -"sein" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Connection timeout" -msgstr "Verbindungstimeout" - -msgid "Default deny" -msgstr "Standardmäßig verbieten" - -msgid "Enable Tinyproxy server" -msgstr "Tinyproxy Server aktivieren" - -msgid "Error page" -msgstr "Fehlerseite" - -msgid "Failed to retrieve statistics from url:" -msgstr "Empfangen der Statiken von URL fehlgeschlagen" - -msgid "Filter by RegExp" -msgstr "Filtern nach RegExp" - -msgid "Filter by URLs" -msgstr "Filtern nach URLs" - -msgid "Filter case-sensitive" -msgstr "Filtern nach Groß-/Kleinschreibung" - -msgid "Filter file" -msgstr "Filterdatei" - -msgid "Filtering and ACLs" -msgstr "Filterung und Zugriffsregeln" - -msgid "General settings" -msgstr "Allgemeine Einstellungen" - -msgid "Group" -msgstr "Gruppe" - -msgid "HTML template file to serve for stat host requests" -msgstr "HTML-Vorlage für Statistikseiten" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "HTML-Vorlage für Fehlerseiten" - -msgid "Header whitelist" -msgstr "Headerzeilen-Whitelist" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" -"Liste von IP-Adressen oder Netzbereichen welche diesen Server nutzen dürfen" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" -"Liste erlaubter Ports für \"CONNECT\" Anfragen. Ein einzelner Wert \"0\" " -"erlaubt alle Ports" - -msgid "Listen address" -msgstr "Serveradresse" - -msgid "Listen port" -msgstr "Serverport" - -msgid "Log file" -msgstr "Protokolldatei" - -msgid "Log file to use for dumping messages" -msgstr "Gibt die Datei an, in welche Protokollausgaben geschrieben werden" - -msgid "Log level" -msgstr "Protokolllevel" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "Umfang der Tinyproxy Protokollmeldungen" - -msgid "Max. clients" -msgstr "Max. Clients" - -msgid "Max. requests per server" -msgstr "Max. Anfragen pro Server" - -msgid "Max. spare servers" -msgstr "Max. Prozesszahl" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "Maximal erlaubte Anzahl gleichzeitig verbundener Clients" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" -"Maximal erlaubte Anzahl an Anfragen pro Prozess. Wenn diese erreicht wird, " -"startet der Prozess neu. Null bedeutet unlimitiert." - -msgid "Maximum number of prepared idle processes" -msgstr "Maximale Anzahl an vorgehaltenen Leerlaufprozessen" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" -"Maximale Anzahl an Sekunden, die eine etablierte, inaktive Verbindung offen " -"gehalten wird" - -msgid "Min. spare servers" -msgstr "Min. Prozesszahl" - -msgid "Minimum number of prepared idle processes" -msgstr "Minimale Anzahl an vorgehaltenen Leerlaufprozessen" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "Anzahl zu erzeugender Leerlaufprozesse beim Start von Tinyproxy" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" -"Klartextdatei mit zu filternden URLs oder Domains. Ein Eintrag pro Zeile." - -msgid "Policy" -msgstr "Verfahrensweise" - -msgid "Privacy settings" -msgstr "Privatsphäre" - -msgid "Reject access" -msgstr "Verbiete Zugriff" - -msgid "Server Settings" -msgstr "Servereinstellungen" - -msgid "Server limits" -msgstr "Serverlimits" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" -"Spezifiziert Headerzeilen welche durch den Proxyserver durchgereicht werden " -"dürfen, alle anderen werden entfernt. Leer lassen um den Filter zu " -"deaktivieren" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "Konfiguriert den Port an welchem Tinyproxy auf Anfragen wartet" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" -"Konfiguriert den Hostname, welchen Tinyproxy in die \"Via\" Headerzeile " -"schreibt" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" -"Konfiguriert die lokale IP-Adresse welche Tinyproxy für ausgehende, " -"weitergeleitete Anfragen benutzt" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" -"Konfiguriert die IP-Adressen auf welchen Tinyproxy Anfragen entgegen nimmt" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" -"Spezifiziert den UNIX-Gruppennamen mit welchem der Tinyproxy Prozess läuft" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" -"Spezifiziert den Upstream-Proxy über welchen auf den Zielhost zugegriffen " -"wird. Das Format ist IP-Adresse:Port" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" -"Spezifiziert den UNIX-Nutzernamen mit welchem der Tinyproxy Prozess läuft" - -msgid "Start spare servers" -msgstr "Starte Leerlaufserver" - -msgid "Statistics page" -msgstr "Statistikseite" - -msgid "Status" -msgstr "Status" - -msgid "Target host" -msgstr "Zielhost" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Status Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" -"Tinyproxy ist ein schlanker HTTP(S)-Proxy ohne eigenen Zwischenspeicher" - -msgid "Upstream Proxies" -msgstr "Upstream-Proxies" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" -"Upstream-Proxy-Regeln definieren Proxy-Server welche immer dann genutzt " -"werden wenn bestimmte IP-Adressen oder Domains angefragt werden." - -msgid "Use syslog" -msgstr "Nutze den Systemprotokolldienst" - -msgid "User" -msgstr "Benutzername" - -msgid "Via hostname" -msgstr "\"Via\" Hostname" - -msgid "Via proxy" -msgstr "Zwischenproxy" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" -"Schreibt Protokolleinträge an den Protokolldienst statt in eine separate " -"Protokolldatei." - -msgid "X-Tinyproxy header" -msgstr "X-Tinyproxy Headerzeile" - -#~ msgid "Allow access from" -#~ msgstr "Proxyzugang erlauben von" - -#~ msgid "Allowed headers for anonymous proxy" -#~ msgstr "Erlaube Header für anonymen Proxy" - -#~ msgid "Bind outgoing traffic to address" -#~ msgstr "Ausgehendenden Verkehr an Adresse binden" - -#~ msgid "Ports allowed for CONNECT method" -#~ msgstr "Ports für CONNECT-Methode" - -#~ msgid "0 = disabled, empty = all" -#~ msgstr "0 = deaktiviert, leer = alle" - -#~ msgid "Error document" -#~ msgstr "Fehlerseite" - -#~ msgid "Filter list" -#~ msgstr "Filterliste" - -#~ msgid "Case sensitive filters" -#~ msgstr "Filter unterscheiden Groß-/Kleinschreibung" - -#~ msgid "Filter list is a whitelist" -#~ msgstr "Filterliste ist eine Whitelist" - -#~ msgid "Extended regular expression filters" -#~ msgstr "Erweiterte reguläre Ausdrücke für Filter" - -#~ msgid "Filter URLs instead of domains" -#~ msgstr "Filtere URLs statt Domains" - -#~ msgid "Listen on address" -#~ msgstr "An Adresse binden" - -#~ msgid "Logfile" -#~ msgstr "Protokolldatei" - -#~ msgid "Maximum number of clients" -#~ msgstr "Maximale Anzahl an Clients" - -#~ msgid "Maximum requests per thread" -#~ msgstr "Maximale Anfragen pro Prozess" - -#~ msgid "Spare servers to start with" -#~ msgstr "Anfängliche Prozesszahl" - -#~ msgid "Statistic document" -#~ msgstr "Statistikseite" - -#~ msgid "Write to syslog" -#~ msgstr "In Systemprotokoll schreiben" - -#~ msgid "Connection Timeout" -#~ msgstr "Verbindungstimeout" - -#~ msgid "Value of Via-Header" -#~ msgstr "Wert des Via-Headers" - -#~ msgid "Include client IP" -#~ msgstr "Client-IP übertragen" - -#~ msgid "Upstream Control" -#~ msgstr "Zugangskontrolle" - -#~ msgid "Type" -#~ msgstr "Methode" - -#~ msgid "Upstream Proxy" -#~ msgstr "Zugangsproxy" diff --git a/package/luci/applications/luci-app-tinyproxy/po/el/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/el/tinyproxy.po deleted file mode 100644 index 718424e0ce..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/el/tinyproxy.po +++ /dev/null @@ -1,283 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: 2012-03-18 16:25+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" -"Το μέσω proxy δρομολογεί αιτήσεις προς τον συγκεκριμένο προορισμό " -"μέσω του καθοριζόμενου διαμεσολαβητή ανωτέρου επιπέδου, Το απόρριψη " -"πρόσβασης απενεργοποιεί τη χρήση διαμεσολαβητή ανωτέρου επιπέδου για το " -"συγκεκριμένο προορισμό" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"Προσθέτει μια κεφαλίδα HTTP \"X-Tinyproxy\" με τη διεύθυνση IP του πελάτη " -"στις προωθούμενες αιτήσεις" - -msgid "Allowed clients" -msgstr "Επιτρεπόμενοι πελάτες" - -msgid "Allowed connect ports" -msgstr "Επιτρεπόμενες θύρες σύνδεσης" - -#, fuzzy -msgid "Bind address" -msgstr "Διεύθυνση στην οποία ακούει η υπηρεσία" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"Προεπιλεγμένα, χρησιμοποιούνται απλές κανονικές εκφράσεις POSIX για το " -"φιλτράρισμα. Ενεργοποιήστε αυτή την επιλογή για να χρησιμοποιούνται " -"εκτεταμένες κανονικές εκφράσεις" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" -"Προεπιλεγμένα, το φιλτράρισμα με συμβολοσειρές γίνεται χωρίς διάκριση πεζών " -"κεφαλαίων. Ενεργοποιήστε αυτή την επιλογή για να γίνεται διάκριση πεζών " -"κεφαλαίων" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" -"Προεπιλεγμένα, το φιλτράρισμα γίνεται βάσει του ονόματος τομέα. " -"Ενεργοποιήστε αυτή την επιλογή για να γίνεται βάσει URL" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"Προεπιλεγμένα, οι κανόνες φιλτραρίσματος λειτουργούν ως μαύρη λίστα. " -"Ενεργοποιήστε αυτή την επιλογή ώστε να επιτρέπονται μόνο τα ονόματα τομέα ή " -"URLs που ταιριάζουν" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" -"Μπορεί να είναι μια IP διεύθυνση ή εύρος, ένα όνομα τομέα ή \".\" για " -"οποιοδήποτε σύστημα χωρίς όνομα τομέα" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "Χρονικό όριο σύνδεσης" - -msgid "Default deny" -msgstr "Άρνηση προεπιλεγμένα" - -msgid "Enable Tinyproxy server" -msgstr "Ενεργοποίηση διαμεσολαβητή Tinyproxy" - -msgid "Error page" -msgstr "Σελίδα σφάλματος" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "Φιλτράρισμα με Κανονικές Εκφράσεις" - -msgid "Filter by URLs" -msgstr "Φιλτράρισμα με URL" - -msgid "Filter case-sensitive" -msgstr "Φιλτράρισμα με διάκριση πεζών/κεφαλαίων" - -msgid "Filter file" -msgstr "Αρχείο φίλτρων" - -msgid "Filtering and ACLs" -msgstr "Φιλτράρισμα και λίστες ελέγχου πρόσβασης" - -msgid "General settings" -msgstr "Γενικές ρυθμίσεις" - -msgid "Group" -msgstr "Ομάδα" - -msgid "HTML template file to serve for stat host requests" -msgstr "" -"Αρχείο προτύπου HTML που στέλνεται σε αιτήσεις για στατιστικά του συστήματος" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "Αρχείο προτύπου HTML που στέλνεται όταν προκύπτουν σφάλματα HTML" - -msgid "Header whitelist" -msgstr "Λευκή λίστα κεφαλίδων" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" -"Λίστα διευθύνσεων IP ή εύρη αυτών στις οποίες επιτρέπεται η χρήση του " -"διαμεσολαβητή" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/en/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/en/tinyproxy.po deleted file mode 100644 index 4650f3e1fc..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/en/tinyproxy.po +++ /dev/null @@ -1,331 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:35+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "Log level" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "Max. spare servers" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "Min. spare servers" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "Reject access" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "Target host" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "Via proxy" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" - -#~ msgid "Allow access from" -#~ msgstr "Allow access from" - -#~ msgid "Allowed headers for anonymous proxy" -#~ msgstr "Allowed headers for anonymous proxy" - -#~ msgid "Bind outgoing traffic to address" -#~ msgstr "Bind outgoing traffic to address" - -#~ msgid "Ports allowed for CONNECT method" -#~ msgstr "Ports allowed for CONNECT method" - -#~ msgid "0 = disabled, empty = all" -#~ msgstr "0 = disabled, empty = all" - -#~ msgid "Error document" -#~ msgstr "Error document" - -#~ msgid "Filter list" -#~ msgstr "Filter list" - -#~ msgid "Case sensitive filters" -#~ msgstr "Case sensitive filters" - -#~ msgid "Filter list is a whitelist" -#~ msgstr "Filter list is a whitelist" - -#~ msgid "Extended regular expression filters" -#~ msgstr "Extended regular expression filters" - -#~ msgid "Filter URLs instead of domains" -#~ msgstr "Filter URLs instead of domains" - -#~ msgid "Listen on address" -#~ msgstr "Listen on address" - -#~ msgid "Logfile" -#~ msgstr "Logfile" - -#~ msgid "Maximum number of clients" -#~ msgstr "Maximum number of clients" - -#~ msgid "Maximum requests per thread" -#~ msgstr "Maximum requests per thread" - -#~ msgid "Spare servers to start with" -#~ msgstr "Spare servers to start with" - -#~ msgid "Statistic document" -#~ msgstr "Statistic document" - -#~ msgid "Write to syslog" -#~ msgstr "Write to syslog" - -#~ msgid "Connection Timeout" -#~ msgstr "Connection Timeout" - -#~ msgid "Value of Via-Header" -#~ msgstr "Value of Via-Header" - -#~ msgid "Include client IP" -#~ msgstr "Include client IP" - -#~ msgid "Upstream Control" -#~ msgstr "Upstream Control" - -#~ msgid "Type" -#~ msgstr "Type" - -#~ msgid "Upstream Proxy" -#~ msgstr "Upstream Proxy" diff --git a/package/luci/applications/luci-app-tinyproxy/po/es/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/es/tinyproxy.po deleted file mode 100644 index c9faff194a..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/es/tinyproxy.po +++ /dev/null @@ -1,354 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-10-07 15:08+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" -"Vía proxy enruta las peticiones al destino vía el proxy superior " -"especificado, Rechazar acceso desactiva cualquier proxy superior al " -"destino" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"Añade una cabecera HTTP con \"X-Tinyproxy\" con la dirección IP del cliente " -"a las peticiones retransmitidas" - -msgid "Allowed clients" -msgstr "Clientes permitidos" - -msgid "Allowed connect ports" -msgstr "Puertos permitidos" - -msgid "Bind address" -msgstr "Dirección de asociación" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"Expresiones regulares extendidas. Por defecto se filtra con expresiones " -"regulares POSIX básicas" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "Distinguir mayúsculas y minúsculas" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "Comparar con URLs. Por defecto el filtro se basa en nombres de dominio" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"Tratar el fichero de filtro como una lista de máquinas a permitir. Por " -"defecto actúa como una lista negra" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" -"Puede ser un rango de IPs, un nombre de dominio o \".\" para cualquier " -"máquina sin dominio" - -msgid "Configuration" -msgstr "Configuración" - -msgid "Connection timeout" -msgstr "Espera de conexión" - -msgid "Default deny" -msgstr "Denegar por defecto" - -msgid "Enable Tinyproxy server" -msgstr "Activar el servidor Tinyproxy" - -msgid "Error page" -msgstr "Página de error" - -msgid "Failed to retrieve statistics from url:" -msgstr "No se han podido obtener estadísticas de:" - -msgid "Filter by RegExp" -msgstr "Filtrar por RegExp" - -msgid "Filter by URLs" -msgstr "Filtrar por URLs" - -msgid "Filter case-sensitive" -msgstr "Distinguir entre mayúsculas y minúsculas" - -msgid "Filter file" -msgstr "Fichero de filtro" - -msgid "Filtering and ACLs" -msgstr "Filtrado y ACLs" - -msgid "General settings" -msgstr "Configuración general" - -msgid "Group" -msgstr "Grupo" - -msgid "HTML template file to serve for stat host requests" -msgstr "" -"FIchero con la plantilla HTML a usar para las peticiones de estadísticas" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "Fichero con la plantilla HTTP a usar cuando ocurra algún error" - -msgid "Header whitelist" -msgstr "Cabeceras autorizadas" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "Direcciones IP o rangos a los que se permite usar el servidor proxy" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" -"Lista de puertos permitidos al método CONNECT. Use 0 para todos los puertos" - -msgid "Listen address" -msgstr "Dirección de escucha" - -msgid "Listen port" -msgstr "Puerto de escucha" - -msgid "Log file" -msgstr "Registro" - -msgid "Log file to use for dumping messages" -msgstr "Fichero de volcado de mensajes" - -msgid "Log level" -msgstr "Nivel de registro" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "Nivel de registro del proceso Tinyproxy" - -msgid "Max. clients" -msgstr "Clientes máximos" - -msgid "Max. requests per server" -msgstr "Peticiones máximas por servidor" - -msgid "Max. spare servers" -msgstr "Procesos servidores máximos" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "Máximo de clientes conectados simultáneamente" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" -"Peticiones máximas por proceso. Si se supera el proceso es arrancado de " -"nuevo. Para ilimitados indique 0." - -msgid "Maximum number of prepared idle processes" -msgstr "Máximo de procesos inactivos" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "Segundos máximos que se tiene una conexión inactiva abierta" - -msgid "Min. spare servers" -msgstr "Procesos servidores mínimos" - -msgid "Minimum number of prepared idle processes" -msgstr "Mínimo de procesos inactivos" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "Procesos inactivos a arrancar cuando se lanza Tinyproxy" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "Fichero plano con URLs o dominios a filtrar. Uno por línea" - -msgid "Policy" -msgstr "Política" - -msgid "Privacy settings" -msgstr "Configuración de privacidad" - -msgid "Reject access" -msgstr "Rechazar acceso" - -msgid "Server Settings" -msgstr "Configuración del servidor" - -msgid "Server limits" -msgstr "Límites del servidor" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" -"Nombres de cabeceras HTTP que se dejan pasar. el resto se descartan. Deje en " -"blanco para desactivar el filtrado de cabeceras" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "Puerto de escucha de peticiones" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "Nombre de máquina a usar en la cabecera HTTP \"Via\"" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" -"Dirección a la que se asocia Tinyproxy para peticiones de traspaso salientes" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "Direcciones de escucha de peticiones" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "Nombre de grupo en el que se ejecuta el proceso Tinyproxy" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" -"Proxy superior a usar para llegar a la máquina destino. El formato es " -"dirección_puerto" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "Nombre de usuario con en el que se ejecuta el proceso Tinyproxy" - -msgid "Start spare servers" -msgstr "Arrancar servidores libres" - -msgid "Statistics page" -msgstr "Estadísticas" - -msgid "Status" -msgstr "Estado" - -msgid "Target host" -msgstr "Máquina destino" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Estado de Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy es un proxy sin cache HTTP/HTTPS pequeño y rápido" - -msgid "Upstream Proxies" -msgstr "Proxies superiores" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" -"Las reglas de proxy superior definen qué servidores usar cuando se accede a " -"ciertas direcciones IP o dominios." - -msgid "Use syslog" -msgstr "Usar SysLog" - -msgid "User" -msgstr "Usuario" - -msgid "Via hostname" -msgstr "Nombre de máquina en \"Via\"" - -msgid "Via proxy" -msgstr "Via proxy" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "Escribe los mensajes de registro en SysLog en vez de en un fichero" - -msgid "X-Tinyproxy header" -msgstr "Cabecera X-Tinyproxy" - -#~ msgid "Allow access from" -#~ msgstr "Permitir acceso desde" - -#~ msgid "Allowed headers for anonymous proxy" -#~ msgstr "Encabezados permitidos de proxies anónimos" - -#~ msgid "Bind outgoing traffic to address" -#~ msgstr "Ligar tráfico de salida a la dirección" - -#~ msgid "Ports allowed for CONNECT method" -#~ msgstr "Puertos permitidos para el método CONNECT" - -#~ msgid "0 = disabled, empty = all" -#~ msgstr "0 = Deshabilitado, vacío = todos" - -#~ msgid "Error document" -#~ msgstr "Error en documento" - -#~ msgid "Filter list" -#~ msgstr "Lista de filtros" - -#~ msgid "Case sensitive filters" -#~ msgstr "Filtros de mayúsculas y minúsculas " - -#~ msgid "Filter list is a whitelist" -#~ msgstr "La Lista de Filtros es una lista blanca" - -#~ msgid "Extended regular expression filters" -#~ msgstr "Filtros extendido para expresiones regulares" - -#~ msgid "Filter URLs instead of domains" -#~ msgstr "Filtrar URLs en vez de dominios" - -#~ msgid "Listen on address" -#~ msgstr "Escuchar en dirección" - -#~ msgid "Logfile" -#~ msgstr "Logfile" - -#~ msgid "Maximum number of clients" -#~ msgstr "Número máximo de clientes" - -#~ msgid "Maximum requests per thread" -#~ msgstr "Máximas peticiones por hilo" - -#~ msgid "Spare servers to start with" -#~ msgstr "Spare servers to start with" - -#~ msgid "Statistic document" -#~ msgstr "Documento de estadística" - -#~ msgid "Write to syslog" -#~ msgstr "Escribir al syslog" - -#~ msgid "Connection Timeout" -#~ msgstr "Tiempo agotado para la conexión" - -#~ msgid "Value of Via-Header" -#~ msgstr "Valor para Via-Header" - -#~ msgid "Include client IP" -#~ msgstr "Incluir IP del cliente" - -#~ msgid "Upstream Control" -#~ msgstr "Control de subida (upstream)" - -#~ msgid "Type" -#~ msgstr "Tipo" - -#~ msgid "Upstream Proxy" -#~ msgstr "Proxy de subida (upstream)" diff --git a/package/luci/applications/luci-app-tinyproxy/po/fr/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/fr/tinyproxy.po deleted file mode 100644 index d359442a20..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/fr/tinyproxy.po +++ /dev/null @@ -1,372 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-01-26 12:52+0200\n" -"Last-Translator: kyas \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" -"Via proxy route les requêtes vers la cible donnée via le mandataire " -"amont donné, Reject access interdit tout mandataire amont comme " -"cible" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"Ajoute un en-tête HTTP \"X-Tinyproxy\" avec l'adresse IP du client aux " -"requêtes retransmises" - -msgid "Allowed clients" -msgstr "Clients autorisés" - -msgid "Allowed connect ports" -msgstr "Ports de connexion autorisés" - -msgid "Bind address" -msgstr "Adresse en écoute" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"Par défaut, le filtrage utilise des expressions POSIX basiques. Activez-ceci " -"pour permettre l'utilisation d'expressions régulières étendues" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" -"Par défaut, les chaînes de caractères des filtres sont utilisées sans faire " -"attention à leurs casses. Activez-ceci pour les rendre sensible à la casse " -"des caractères" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" -"Par défaut, le filtrage s'effectue sur les noms de domaines. Activez-ceci " -"pour l'appliquer plutôt aux URLs" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"Par défaut, les règles de filtrages décrivent ce qui doit être interdit. " -"Activez cette option pour n'autoriser que les noms de domaines ou URLs qui " -"correspondent aux règles" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" -"Ce peut être soit une adresse ou une gamme d'adresses IP, un nom de domaine, " -"ou \".\" pour n'importe quel nom d'hôte sans domaine" - -msgid "Configuration" -msgstr "Configuration" - -msgid "Connection timeout" -msgstr "Délai de connexion" - -msgid "Default deny" -msgstr "Interdit par défaut" - -msgid "Enable Tinyproxy server" -msgstr "Activer le serveur Tinyproxy" - -msgid "Error page" -msgstr "Page d'erreur" - -msgid "Failed to retrieve statistics from url:" -msgstr "Impossible de récupérer les statistiques de l'URL:" - -msgid "Filter by RegExp" -msgstr "Filtrage par RegExp" - -msgid "Filter by URLs" -msgstr "Filtrage par URLs" - -msgid "Filter case-sensitive" -msgstr "Filtrage sensible à la casse" - -msgid "Filter file" -msgstr "Fichier des filtres" - -msgid "Filtering and ACLs" -msgstr "Filtrage et ACLs" - -msgid "General settings" -msgstr "Paramètres généraux" - -msgid "Group" -msgstr "Groupe" - -msgid "HTML template file to serve for stat host requests" -msgstr "" -"Modèle de fichier HTML à utiliser pour les requêtes de statistiques des hôtes" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "Modèle de fichier HTML à utiliser quand une erreur HTTP survient" - -msgid "Header whitelist" -msgstr "Liste des en-têtes autorisés" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" -"Liste des adresses IP ou gammes d'adresses IP autorisées à utiliser le " -"serveur mandataire" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" -"Liste des ports autorisés pour la méthode CONNECT. Une valeur \"0\" unique " -"autorises tous les ports" - -msgid "Listen address" -msgstr "Adresse en écoute" - -msgid "Listen port" -msgstr "Port en écoute" - -msgid "Log file" -msgstr "Fichier journal" - -msgid "Log file to use for dumping messages" -msgstr "Fichier-journal utilisé pour y copier les messages" - -msgid "Log level" -msgstr "Niveau de log" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "Verbosité du journal du processus Tinyproxy" - -msgid "Max. clients" -msgstr "Nombre max. de clients" - -msgid "Max. requests per server" -msgstr "Nombre max. de requêtes par serveur" - -msgid "Max. spare servers" -msgstr "Nombre Maximum de processus serveur" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "Nombre max autorisé de clients connectés en même temps" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" -"Nombre maximum autorisé de requêtes par processus. S'il est dépassé, le " -"processus est relancé. Un zéro désactive cette limite." - -msgid "Maximum number of prepared idle processes" -msgstr "Nombre maximum de processus lancés, prêts à traiter des requêtes" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" -"Une connexion inactive est maintenue ouverte pendant cette durée maximum (en " -"secondes)" - -msgid "Min. spare servers" -msgstr "Nombre Minimum de processus serveur" - -msgid "Minimum number of prepared idle processes" -msgstr "Nombre minimum de processus lancés, prêts à traiter des requêtes" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" -"Nombre de processus lancés en sus, prêts à traiter des requêtes, au " -"démarrage de Tinyproxy" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" -"Fichier-texte contenant les URLs ou noms de domaines à filtrer, un par ligne" - -msgid "Policy" -msgstr "Action" - -msgid "Privacy settings" -msgstr "Paramètres de confidentialité" - -msgid "Reject access" -msgstr "Refuser l'accès" - -msgid "Server Settings" -msgstr "Paramètres du serveur" - -msgid "Server limits" -msgstr "Limites du serveur" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" -"Indique les noms des entêtes HTTP qui sont autorisées à transiter, tous les " -"autres seront retirés. Laisser vide pour désactiver le filtrage des entêtes" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "Indique le port HTTP où Tinyproxy est en écoute de requêtes" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" -"Indique le nom d'hôte que Tinyproxy utilisera dans l'entête HTTP « Via »" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" -"Décrit l'adresse que Tinyproxy utilisera pour les requêtes retransmises à " -"l'extérieur" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "Indique les adresses où Tinyproxy est en écoute de requêtes" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" -"Indique le nom de groupe sous lequel les processus Tinyproxy fonctionnent" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" -"Indique un mandataire amont à utiliser pour atteindre l'hôte cible. Le " -"format est adresse:port" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" -"Indique le nom d'utilisateur sous lequel les processus Tinyproxy fonctionnent" - -msgid "Start spare servers" -msgstr "Serveurs en surplus au démarrage" - -msgid "Statistics page" -msgstr "Page de statistiques" - -msgid "Status" -msgstr "Statut" - -msgid "Target host" -msgstr "Hôte de destination" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Statut Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" - -msgid "Upstream Proxies" -msgstr "Mandataires amont" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" -"Les règles de mandataires amont définissent les serveurs mandataire à " -"utiliser pour l'accès à certaines adresses IP ou domaines." - -msgid "Use syslog" -msgstr "Utiliser syslog" - -msgid "User" -msgstr "Utilisateur" - -msgid "Via hostname" -msgstr "nom d'hôte « Via »" - -msgid "Via proxy" -msgstr "Via proxy" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "Envoyer les messages à syslog plutôt que dans un fichier-journal" - -msgid "X-Tinyproxy header" -msgstr "Entête X-Tinyproxy" - -#~ msgid "Allow access from" -#~ msgstr "Allow access from" - -#~ msgid "Allowed headers for anonymous proxy" -#~ msgstr "Allowed headers for anonymous proxy" - -#~ msgid "Bind outgoing traffic to address" -#~ msgstr "Lier le trafic sortant à l'adresse ip" - -#~ msgid "Ports allowed for CONNECT method" -#~ msgstr "Ports allowed for CONNECT method" - -#~ msgid "0 = disabled, empty = all" -#~ msgstr "0 = disabled, empty = all" - -#~ msgid "Error document" -#~ msgstr "Fichier d'erreur" - -#~ msgid "Filter list" -#~ msgstr "Liste de filtres" - -#~ msgid "Case sensitive filters" -#~ msgstr "Case sensitive filters" - -#~ msgid "Filter list is a whitelist" -#~ msgstr "Filter list is a whitelist" - -#~ msgid "Extended regular expression filters" -#~ msgstr "Extended regular expression filters" - -#~ msgid "Filter URLs instead of domains" -#~ msgstr "Filter URLs instead of domains" - -#~ msgid "Listen on address" -#~ msgstr "Listen on address" - -#~ msgid "Logfile" -#~ msgstr "Chemin du fichier de log" - -#~ msgid "Maximum number of clients" -#~ msgstr "Nombre maximum de clients" - -#~ msgid "Maximum requests per thread" -#~ msgstr "Maximum de connexion par processus" - -#~ msgid "Spare servers to start with" -#~ msgstr "Nombre de processus serveur lancés au demarrage" - -#~ msgid "Statistic document" -#~ msgstr "Fichier de statistiques" - -#~ msgid "Write to syslog" -#~ msgstr "Écrire dans le journal système (Syslog)" - -#~ msgid "Connection Timeout" -#~ msgstr "Délai de connexion" - -#~ msgid "Value of Via-Header" -#~ msgstr "Valeur de l'entête \"VIA\" utilisée comme nom d'hôte" - -#~ msgid "Include client IP" -#~ msgstr "Inclure l'ip du client" - -#~ msgid "Upstream Control" -#~ msgstr "Upstream Control" - -#~ msgid "Type" -#~ msgstr "Type" - -#~ msgid "Upstream Proxy" -#~ msgstr "Proxy" diff --git a/package/luci/applications/luci-app-tinyproxy/po/he/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/he/tinyproxy.po deleted file mode 100644 index 5c4ddddb09..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/he/tinyproxy.po +++ /dev/null @@ -1,255 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/hu/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/hu/tinyproxy.po deleted file mode 100644 index 5c4ddddb09..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/hu/tinyproxy.po +++ /dev/null @@ -1,255 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/it/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/it/tinyproxy.po deleted file mode 100644 index 34528c1139..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/it/tinyproxy.po +++ /dev/null @@ -1,265 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-12-15 19:29+0200\n" -"Last-Translator: claudyus \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"Aggiungi una intestazione http \"X-Tinyproxy\" contenente l'IP del client a " -"cui forwardare la richiesta" - -msgid "Allowed clients" -msgstr "Client permessi" - -msgid "Allowed connect ports" -msgstr "Porte di connessione permesse" - -msgid "Bind address" -msgstr "Bind Address" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" -"Di default, il filto è basato sul nome di dominio. Abilita questa opzione " -"per effettuare il match con URL" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "Configurazione" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "Abilita il server Tinyproxy" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "Impossibile recuperare le statistiche dall'url:" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" -"Lista di indirizzi IP o range di indirizzi a cui è permesso l'uso del proxy" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "Numero massimo di client simultanei permessi" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/ja/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/ja/tinyproxy.po deleted file mode 100644 index 03ea890fee..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/ja/tinyproxy.po +++ /dev/null @@ -1,280 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2011-10-05 17:53+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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.4\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"転送するリクエストのHTTPヘッダに\"X-Tinyproxy\"及びクライアントIPアドレスを追" -"加します。" - -msgid "Allowed clients" -msgstr "接続を許可するクライアント" - -msgid "Allowed connect ports" -msgstr "接続を許可するポート番号" - -msgid "Bind address" -msgstr "バインドするIPアドレス" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"標準では、基本的なPOSIX正規表現がフィルタリングに使用されますが、このオプショ" -"ンが有効に設定されている場合、拡張版のPOSIX正規表現が用いられます。" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" -"標準では、フィルターの文字列は大文字小文字を区別しませんが、このオプションが" -"有効に設定されている場合、区別してフィルタリングを行います。" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" -"標準では、ドメイン名を使用してフィルタリングを行いますが、このオプションが有" -"効に設定されている場合、代わりにURLに対してフィルタリングを行います。" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"標準では、フィルタリング・ルールはブラックリストとして動作しますが、このオプ" -"ションが有効に設定されている場合、URLまたはドメイン名が一致した場合のみ、接続" -"が許可されます。" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "接続タイムアウト" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "Tinyproxy サーバーを有効にする" - -msgid "Error page" -msgstr "エラーページ" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "正規表現フィルタリング" - -msgid "Filter by URLs" -msgstr "URL フィルタリング" - -msgid "Filter case-sensitive" -msgstr "大文字小文字を区別してフィルタリング" - -msgid "Filter file" -msgstr "フィルタファイル" - -msgid "Filtering and ACLs" -msgstr "フィルタリングとアクセス制御" - -msgid "General settings" -msgstr "基本設定" - -msgid "Group" -msgstr "グループ" - -msgid "HTML template file to serve for stat host requests" -msgstr "リクエスト数を表示するHTMLテンプレートファイル" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "HTTPエラー時に表示するHTMLテンプレートファイル" - -msgid "Header whitelist" -msgstr "ヘッダー・ホワイトリスト" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "プロキシサーバーの使用を許可するIPアドレスリストです。" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" -"プロキシサーバーから接続可能なポートリストです。\"0\"を設定した場合、すべての" -"ポートを許可します。" - -msgid "Listen address" -msgstr "待受アドレス" - -msgid "Listen port" -msgstr "待受ポート" - -msgid "Log file" -msgstr "ログファイル" - -msgid "Log file to use for dumping messages" -msgstr "メッセージを書き込むログファイルを指定します。" - -msgid "Log level" -msgstr "ログレベル" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "Tinyproxyプロセスのログの詳細度を設定" - -msgid "Max. clients" -msgstr "最大クライアント数" - -msgid "Max. requests per server" -msgstr "サーバー毎の最大リクエスト数" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" -"プロセス毎の許可される最大リクエスト数を設定します。設定値を超えた場合、プロ" -"セスを再起動します。0を入力すると、無制限に設定されます。" - -msgid "Maximum number of prepared idle processes" -msgstr "アイドル状態で準備するプロセスの最大数" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "アイドル状態で準備するプロセスの最小数" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "ポリシー" - -msgid "Privacy settings" -msgstr "プライバシー設定" - -msgid "Reject access" -msgstr "アクセス拒否" - -msgid "Server Settings" -msgstr "サーバー設定" - -msgid "Server limits" -msgstr "サーバー制限設定" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "リクエストに対して、Tinyproxyが待ち受けるHTTPポートを設定します" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "リクエストに対して、Tinyproxyが待ち受けるアドレスを設定します。" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "Tinyproxyを実行するグループを設定します" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" -"特定のホストにアクセスする際に使用する、上位のプロキシサーバーを設定します。" -"書式は アドレス:ポート です。" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "Tinyproxyを実行するユーザーを設定します" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "宛先ホスト" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" -"Tinyproxyは、軽量で高速なキャッシュを行わないHTTP(S)-プロキシサーバーです。" - -msgid "Upstream Proxies" -msgstr "上位のプロキシサーバー" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" -"特定のIPアドレスやドメインに接続する場合に、上位のプロキシサーバーを使用する" -"ように設定することができます。" - -msgid "Use syslog" -msgstr "Syslogを使用する" - -msgid "User" -msgstr "ユーザー" - -msgid "Via hostname" -msgstr "経由するホスト名" - -msgid "Via proxy" -msgstr "経由するプロキシ" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "ログファイルの代わりにsyslogへメッセージを記録します" - -msgid "X-Tinyproxy header" -msgstr "X-Tinyproxy ヘッダー" diff --git a/package/luci/applications/luci-app-tinyproxy/po/ms/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/ms/tinyproxy.po deleted file mode 100644 index 08ed7dc47a..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/ms/tinyproxy.po +++ /dev/null @@ -1,254 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/no/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/no/tinyproxy.po deleted file mode 100644 index 5c4ddddb09..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/no/tinyproxy.po +++ /dev/null @@ -1,255 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/pl/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/pl/tinyproxy.po deleted file mode 100644 index 8e3bfc7f75..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/pl/tinyproxy.po +++ /dev/null @@ -1,292 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-04 11:50+0200\n" -"Last-Translator: Staszek \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" -"Przez proxy kieruje żądania do danego celu przez określone " -"\"upstream proxy\", Odrzuć dostęp wyłącza jakiekolwiek \"upstream " -"proxy\" dla danego celu." - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"Dodaje nagłówek http \"X-Tinyproxy\" z adresem IP klienta do przekazywanych " -"żądań" - -msgid "Allowed clients" -msgstr "Akceptowane klienty" - -msgid "Allowed connect ports" -msgstr "Akceptowane porty połączenia" - -msgid "Bind address" -msgstr "zwiąż adres" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"Domyślnie do filtrowania używane są podstawowe wyrażenia POSIX. Włącz tę " -"opcję, aby aktywować rozszerzone wyrażenia regularne." - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" -"Domyślnie ciągi filtrowania traktowane są jako wrażliwe na wielkość liter. " -"Włącz tę opcję, aby dopasowania były wrażliwe na wielkości liter." - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" -"Domyślnie filtrowanie jest wykonywane w oparciu o nazwy domen. Włącz tę " -"opcję, aby zamiast tego używać URL-i." - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"Domyślnie, reguły filtra działają jako czarna lista. Zaznacz tę opcję, aby " -"zezwalać wyłącznie na pasujące URL-e lub nazwy domen." - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" -"Może być adresem lub zakresem adresów IP, nazwą domeny lub \".\" dla " -"dowolnego hosta bez domeny." - -msgid "Configuration" -msgstr "Konfiguracja" - -msgid "Connection timeout" -msgstr "Limit czasu połączenia" - -msgid "Default deny" -msgstr "Domyślnie blokuj" - -msgid "Enable Tinyproxy server" -msgstr "Włącz serwer Tinyproxy" - -msgid "Error page" -msgstr "Strona błędu" - -msgid "Failed to retrieve statistics from url:" -msgstr "Nieudane pobieranie statystyk z URL-a:" - -msgid "Filter by RegExp" -msgstr "Filtruj z użyciem rozszerzonych wyrażeń regularnych" - -msgid "Filter by URLs" -msgstr "Filtruj po adresach URL" - -msgid "Filter case-sensitive" -msgstr "Filtr wrażliwy na wielkość liter" - -msgid "Filter file" -msgstr "Plik z filtrami" - -msgid "Filtering and ACLs" -msgstr "Filtrowanie i Listy kontroli dostępu" - -msgid "General settings" -msgstr "Ustawienia ogólne" - -msgid "Group" -msgstr "Grupa" - -msgid "HTML template file to serve for stat host requests" -msgstr "Plik szablonu HTML używany do prezentacji statystyk" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "Plik szablonu HTML używany do prezentacji komunikatów błędu" - -# Zgaduję, że to ma coś wspólnego z nagłówkami zapytań - stąd takie tłumaczenie. -msgid "Header whitelist" -msgstr "Biała lista nagłówków" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" -"Lista adresów IP lub zakresów, które są dopuszczone do korzystania z serwera " -"proxy" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" -"Lista dozwolonych portów dla metody CONNECT. Pojedyncza wartość \"0\" " -"pozwala użyć wszystkich portów" - -msgid "Listen address" -msgstr "Nasłuchiwany adres" - -msgid "Listen port" -msgstr "Nasłuchiwany port" - -msgid "Log file" -msgstr "Plik logowania" - -msgid "Log file to use for dumping messages" -msgstr "Plik logowania zrzucanych wiadomości" - -msgid "Log level" -msgstr "Poziom logowania" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "Szczegółowość logowania procesów Tinyproxy" - -msgid "Max. clients" -msgstr "Maks. klientów" - -msgid "Max. requests per server" -msgstr "Maks. żądań na serwer" - -msgid "Max. spare servers" -msgstr "Maks. uruchomionych serwerów" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "Maksymalna dopuszczalna liczba jednocześnie podłączonych klientów" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" -"Maksymalna dopuszczalna liczba żądań na proces. Jeśli zostanie przekroczona, " -"proces zostanie ponownie uruchomiony. Zero oznacza bez limitu." - -msgid "Maximum number of prepared idle processes" -msgstr "Maksymalna liczba przygotowanych bezczynnych procesów" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" -"Maksymalna liczba sekund dla podtrzymywania otwartego nieaktywnego połączenie" - -msgid "Min. spare servers" -msgstr "Min. liczba zapasowych serwerów" - -msgid "Minimum number of prepared idle processes" -msgstr "Minimalna liczba przygotowanych bezczynnych procesów" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" -"Liczba bezczynnych procesów do włączenia podczas uruchamiania Tinyproxy" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" -"Plik tekstowy z URL-ami lub domenami do filtowania. Jeden wpis na linię." - -msgid "Policy" -msgstr "Polityka" - -msgid "Privacy settings" -msgstr "Ustawienia prywatności" - -msgid "Reject access" -msgstr "Odmów dostępu" - -msgid "Server Settings" -msgstr "Ustawienia serwera" - -msgid "Server limits" -msgstr "Limity serwera" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" -"Określa nazwy nagłówków HTTP, które mogą zostać przesłane dalej. Pozostałe " -"będą odrzucone. Pozostaw puste, aby wyłączyć filtrowanie nagłówków." - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "Określa port, na którym Tinyproxy będzie oczekiwać żądań HTTP." - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "Określa nazwę hosta używaną przez Tinyproxy w nagłówku HTTP \"Via\"." - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" -"Określ adres, z którym zostanie powiązane Tinyproxy dla wychodzących " -"przekazywanych żądań" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "Określa adresy, z których Tinyproxy oczekuje żądań." - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "Określ nazwę grupy, pod jaką będzie pracował proces Tinyproxy" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" -"Określ serwer proxy typu upstream, który ma zostać użyty w przypadku dostępu " -"do hosta docelowego. Format to adres:port" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "Określ nazwę użytkownika, pod jaką będzie pracował proces Tinyproxy" - -msgid "Start spare servers" -msgstr "Uruchamiane serwery zapasowe" - -msgid "Statistics page" -msgstr "Strona statystyk" - -msgid "Status" -msgstr "Status" - -msgid "Target host" -msgstr "Host docelowy" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Status serwera Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy to mały i szybki niecacheujący serwer proxy HTTP(S)" - -msgid "Upstream Proxies" -msgstr "Serwery proxy typu upstream" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" -"Reguły serwerów proxy typu upstream definiują serwery proxy, które mają " -"zostać użyte w przypadku dostępu do określonych adresów IP lub domen." - -msgid "Use syslog" -msgstr "Użyj sysloga" - -msgid "User" -msgstr "Użytkownik" - -msgid "Via hostname" -msgstr "Nazwa hosta via" - -msgid "Via proxy" -msgstr "Proxy via" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "Zapisuje komunikaty do sysloga zamiast pliku dziennika" - -msgid "X-Tinyproxy header" -msgstr "Nagłówek X-Tinyproxy" diff --git a/package/luci/applications/luci-app-tinyproxy/po/pt-br/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/pt-br/tinyproxy.po deleted file mode 100644 index ef7ffdad87..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/pt-br/tinyproxy.po +++ /dev/null @@ -1,367 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-09-16 02:38+0200\n" -"Last-Translator: Julio Cezar \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" -"Via proxy encaminha as requisições para um dado destino através do " -"proxy superior especificado, Rejeitar acesso desabilita qualquer " -"proxy superior para o alvo" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"Adiciona no cabeçalho do HTTP o campo \"X-Tinyproxy\" com o endereço IP do " -"cliente para encaminhar a requisição" - -msgid "Allowed clients" -msgstr "Clientes permitidos" - -msgid "Allowed connect ports" -msgstr "Portas de conexão permitidas" - -msgid "Bind address" -msgstr "Endereço de saída" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"Por padrão, os filtros usam expressões POSIX básicas. Habilite esta opção " -"para usar expressões regulares extendidas" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" -"Por padrão, as regras são tratadas como insensíveis a caixa. Habilite esta " -"opção para diferenciar maiúsculas e minúsculas" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" -"Por padrão, a filtragem é feita baseada nos domínios. Habilite esta opção " -"para, ao invés disto, casar com URLs" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"Por padrão, as regras de filtragem atuam como uma lista negra. Habilite esta " -"opção para somente permitir URLs ou domínios que casem" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" -"Pode ser tanto um como uma faixa de endereços IP, um nome de dompínio ou \"." -"\" para qualquer computador sem domínio" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Connection timeout" -msgstr "Tempo limite de conexão" - -msgid "Default deny" -msgstr "Nege por padrão" - -msgid "Enable Tinyproxy server" -msgstr "Habilitar o servidor Tinyproxy" - -msgid "Error page" -msgstr "Página de erro" - -msgid "Failed to retrieve statistics from url:" -msgstr "Falhou ao tentar obter estatísticas da URL:" - -msgid "Filter by RegExp" -msgstr "Filtrar por Expressão Regular" - -msgid "Filter by URLs" -msgstr "Filtrar por URLs" - -msgid "Filter case-sensitive" -msgstr "Diferenciar maiúsculo/minúsculo no filtro" - -msgid "Filter file" -msgstr "Arquivo de filtro" - -msgid "Filtering and ACLs" -msgstr "Filtragem e ACLs" - -msgid "General settings" -msgstr "Configurações gerais" - -msgid "Group" -msgstr "Grupo" - -msgid "HTML template file to serve for stat host requests" -msgstr "" -"Modelo de arquivo HTML para servir para requisições de estado do computador" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "Modelo de arquivo HTML para servir quando ocorrer error HTTP" - -msgid "Header whitelist" -msgstr "Lista branca do cabeçalho" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" -"Lista ou faixa de endereços IP a quem é permitido o uso do servidor proxy" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" -"List as portas que podem utilizar o método CONNECT. Um valor \"0\" único " -"permitirá todas as portas" - -msgid "Listen address" -msgstr "Endereço de escuta" - -msgid "Listen port" -msgstr "Porta de escuta" - -msgid "Log file" -msgstr "Arquivo de registro" - -msgid "Log file to use for dumping messages" -msgstr "Arquivo de registro usado para despejar as mensagens" - -msgid "Log level" -msgstr "Nível do registro" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "Detalhamento dos registors do Tinyproxy" - -msgid "Max. clients" -msgstr "Número máximo de clientes" - -msgid "Max. requests per server" -msgstr "Numero máximo de requisições por servidor" - -msgid "Max. spare servers" -msgstr "Max. servidores sobressalentes" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "Numero máximo permitido de cliente conectados concorrentemente" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" -"Numero máximo de requisições permitidas por processo. Se este limite é " -"excedido, o processo é redisparado. Zero significa ilimitado." - -msgid "Maximum number of prepared idle processes" -msgstr "Número máximo de processos em espera preparados" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "Número máximo de segundos que uma conexão inativa é mantida aberta" - -msgid "Min. spare servers" -msgstr "Número mínimo de servidores sobressalentes" - -msgid "Minimum number of prepared idle processes" -msgstr "Número mínimo de processos em espera preparados" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "Número de processos em espera iniciado quando o Tinyproxy é disparado" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" -"Arquivo de texto simples com as URLs ou os domínios para filtrar. Uma " -"entrada por linha" - -msgid "Policy" -msgstr "Política" - -msgid "Privacy settings" -msgstr "Configurações de privacidade" - -msgid "Reject access" -msgstr "Rejeitar acesso" - -msgid "Server Settings" -msgstr "Configurações do Servidor" - -msgid "Server limits" -msgstr "Limites do servidor" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" -"Especifica os nomes dos cabeçalhos HTTP que serão permitidos. Todos os " -"demais serão descartados. Deixe em branco para desabilitar a filtragem de " -"cabeçalho" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "Especifica a porta na qual o Tinyproxy escutará pelas requisições" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" -"Especifica o nome do computador que o Tinyproxy usará no cabeçalho HTTP" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" -"Especifica o endereço que o Tinyproxy utilizará para encaminhar as " -"requisições" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "Especifica o endereço no qual o Tinyproxy escutará pelas requisições" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "Especifica o nome do grupo com o qual o processo do Tinyproxy rodará" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" -"Especifica o proxy superior para usar quando acessar o alvo. Formato é " -"address:port" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "Especifica o nome do usuário com o qual o processo do Tinyproxy rodará" - -msgid "Start spare servers" -msgstr "Dispare servidores de espera" - -msgid "Statistics page" -msgstr "Página de estatística" - -msgid "Status" -msgstr "Estado" - -msgid "Target host" -msgstr "Host de destino" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Estado do Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy é um pequeno e rápido Proxy-HTTP(S) sem suporte a cache" - -msgid "Upstream Proxies" -msgstr "Proxies superiores" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" -"As regras do proxy superior define os servidores de proxy para uso quando " -"certos endereços IP ou domínios forem acessados." - -msgid "Use syslog" -msgstr "Use o syslog" - -msgid "User" -msgstr "Usuário" - -msgid "Via hostname" -msgstr "Via nome do computador" - -msgid "Via proxy" -msgstr "Via proxy" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" -"Escreve as mensagens de registros para o syslog ao invéz do arquivo de " -"registro" - -msgid "X-Tinyproxy header" -msgstr "Cabeçalho do X-Tinyproxy" - -#~ msgid "Allow access from" -#~ msgstr "Permitir acesso de" - -#~ msgid "Allowed headers for anonymous proxy" -#~ msgstr "Cabeçalhos permitidos para proxy anônimo" - -#~ msgid "Bind outgoing traffic to address" -#~ msgstr "Associar o tráfego de saída ao endereço" - -#~ msgid "Ports allowed for CONNECT method" -#~ msgstr "Portas permitidas para o método CONNECT " - -#~ msgid "0 = disabled, empty = all" -#~ msgstr "0 = desativado, vazio = todas" - -#~ msgid "Error document" -#~ msgstr "Documento de erro" - -#~ msgid "Filter list" -#~ msgstr "Lista de filtros" - -#~ msgid "Case sensitive filters" -#~ msgstr "Filtros \"case sensitive\"" - -#~ msgid "Filter list is a whitelist" -#~ msgstr "A lista de filtros é uma lista branca" - -#~ msgid "Extended regular expression filters" -#~ msgstr "Filtros com suporte à expressões regulares" - -#~ msgid "Filter URLs instead of domains" -#~ msgstr "Filtrar URLs em vez de domínios" - -#~ msgid "Listen on address" -#~ msgstr "Escutar no endereço" - -#~ msgid "Logfile" -#~ msgstr "Arquivo de log" - -#~ msgid "Maximum number of clients" -#~ msgstr "Número máximo de clientes" - -#~ msgid "Maximum requests per thread" -#~ msgstr "Máximo de solicitações por thread" - -#~ msgid "Spare servers to start with" -#~ msgstr "Servidores sobressalentes iniciar com" - -#~ msgid "Statistic document" -#~ msgstr "Documento de estatísticas" - -#~ msgid "Write to syslog" -#~ msgstr "Escrever para syslog" - -#~ msgid "Connection Timeout" -#~ msgstr "Timeout de conexão" - -#~ msgid "Value of Via-Header" -#~ msgstr "Valor do cabeçalho \"Via-Header\"" - -#~ msgid "Include client IP" -#~ msgstr "Incluir o IP do cliente" - -#~ msgid "Upstream Control" -#~ msgstr "Controle de Upstream" - -#~ msgid "Type" -#~ msgstr "Tipo" - -#~ msgid "Upstream Proxy" -#~ msgstr "Proxy para Upstream" diff --git a/package/luci/applications/luci-app-tinyproxy/po/pt/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/pt/tinyproxy.po deleted file mode 100644 index 833a7fa621..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/pt/tinyproxy.po +++ /dev/null @@ -1,334 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-05-31 23:38+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "Clientes permitidos" - -msgid "Allowed connect ports" -msgstr "Portas onde é permitido ligar" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "Ativar servidor Tinyproxy" - -msgid "Error page" -msgstr "Página de erro" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "Definições globais" - -msgid "Group" -msgstr "Grupo" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "Endereço de escuta" - -msgid "Listen port" -msgstr "Porta de escuta" - -msgid "Log file" -msgstr "Ficheiro de log" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "Nível do log" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "Max. servidores sobressalentes" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "Min. servidores sobressalentes" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "Política" - -msgid "Privacy settings" -msgstr "Definições de Privacidade" - -msgid "Reject access" -msgstr "Rejeitar o acesso" - -msgid "Server Settings" -msgstr "Definições do Servidor" - -msgid "Server limits" -msgstr "Limites do servidor" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" -"Especifica o nome do grupo que através do qual o processo do Tinyproxy é " -"executado" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "Iniciar servidores suplentes" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "Estado" - -msgid "Target host" -msgstr "Host de destino" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Estado do Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy é um pequeno e rápido Proxy-HTTP(S) sem suporte à cache" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "Usar o syslog" - -msgid "User" -msgstr "Utilizador" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "Via proxy" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "Escreve as mensagens para o syslog ao invés do ficheiro de log" - -msgid "X-Tinyproxy header" -msgstr "" - -#~ msgid "Allow access from" -#~ msgstr "Permitir acesso de" - -#~ msgid "Allowed headers for anonymous proxy" -#~ msgstr "Cabeçalhos permitidos para proxy anônimo" - -#~ msgid "Bind outgoing traffic to address" -#~ msgstr "Associar o tráfego de saída ao endereço" - -#~ msgid "Ports allowed for CONNECT method" -#~ msgstr "Portas permitidas para o método CONNECT " - -#~ msgid "0 = disabled, empty = all" -#~ msgstr "0 = desativado, vazio = todas" - -#~ msgid "Error document" -#~ msgstr "Documento de erro" - -#~ msgid "Filter list" -#~ msgstr "Lista de filtros" - -#~ msgid "Case sensitive filters" -#~ msgstr "Filtros \"case sensitive\"" - -#~ msgid "Filter list is a whitelist" -#~ msgstr "A lista de filtros é uma lista branca" - -#~ msgid "Extended regular expression filters" -#~ msgstr "Filtros com suporte à expressões regulares" - -#~ msgid "Filter URLs instead of domains" -#~ msgstr "Filtrar URLs em vez de domínios" - -#~ msgid "Listen on address" -#~ msgstr "Escutar no endereço" - -#~ msgid "Logfile" -#~ msgstr "Arquivo de log" - -#~ msgid "Maximum number of clients" -#~ msgstr "Número máximo de clientes" - -#~ msgid "Maximum requests per thread" -#~ msgstr "Máximo de solicitações por thread" - -#~ msgid "Spare servers to start with" -#~ msgstr "Servidores sobressalentes iniciar com" - -#~ msgid "Statistic document" -#~ msgstr "Documento de estatísticas" - -#~ msgid "Write to syslog" -#~ msgstr "Escrever para syslog" - -#~ msgid "Connection Timeout" -#~ msgstr "Timeout de conexão" - -#~ msgid "Value of Via-Header" -#~ msgstr "Valor do cabeçalho \"Via-Header\"" - -#~ msgid "Include client IP" -#~ msgstr "Incluir o IP do cliente" - -#~ msgid "Upstream Control" -#~ msgstr "Controle de Upstream" - -#~ msgid "Type" -#~ msgstr "Tipo" - -#~ msgid "Upstream Proxy" -#~ msgstr "Proxy para Upstream" diff --git a/package/luci/applications/luci-app-tinyproxy/po/ro/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/ro/tinyproxy.po deleted file mode 100644 index 799fecbc9f..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/ro/tinyproxy.po +++ /dev/null @@ -1,256 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2;\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/ru/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/ru/tinyproxy.po deleted file mode 100644 index f9a3c23d16..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/ru/tinyproxy.po +++ /dev/null @@ -1,294 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: tinyproxy\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-08-15 20:24+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" -"Через прокси перенаправляет запросы на заданные узлы через " -"указанный прокси, Отклонять доступ отключает использование прокси " -"для всех узлов" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"Добавляет HTTP-заголовок \"X-Tinyproxy\" с IP-адресом клиента ко всем " -"перенаправленным запросам" - -msgid "Allowed clients" -msgstr "Разрешённые клиенты" - -msgid "Allowed connect ports" -msgstr "Разрешённые порты подключения" - -msgid "Bind address" -msgstr "Адрес привязки" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"Разрешить использование расширенных регулярных выражений для фильтрации. По " -"умолчанию, используются базовые POSIX-выражения" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" -"По умолчанию, строки фильтрации регистро-независимы. Включите эту опцию, " -"чтобы сделать сравнение регистро-зависимым" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" -"По умолчанию, фильтрация выполняется на основе имени домена. Включите эту " -"опцию, чтобы фильтровать при помощи URL" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"По умолчанию, фильтрация работает в режиме чёрного списка. Включите эту " -"опцию, чтобы разрешить только опредёленные URL или доменные имена" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" -"Может быть IP-адресом, диапазоном, именем домена или \".\" для любого хоста " -"без домена" - -msgid "Configuration" -msgstr "Конфигурация" - -msgid "Connection timeout" -msgstr "Таймаут соединения" - -msgid "Default deny" -msgstr "Запретить по умолчанию" - -msgid "Enable Tinyproxy server" -msgstr "Включить сервер Tinyproxy" - -msgid "Error page" -msgstr "Страница ошибки" - -msgid "Failed to retrieve statistics from url:" -msgstr "Ошибка получения статистики по URL:" - -msgid "Filter by RegExp" -msgstr "Фильтровать при помощи регулярных выражений" - -msgid "Filter by URLs" -msgstr "Фильтровать по URL" - -msgid "Filter case-sensitive" -msgstr "Фильтровать с учётом регистра" - -msgid "Filter file" -msgstr "Файл фильтрации" - -msgid "Filtering and ACLs" -msgstr "Фильтрация и ACL" - -msgid "General settings" -msgstr "Общие настройки" - -msgid "Group" -msgstr "Группа" - -msgid "HTML template file to serve for stat host requests" -msgstr "HTML-шаблон для статистики хостов" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "HTML-шаблон для вывода ошибок HTTP" - -msgid "Header whitelist" -msgstr "Белый список заголовков" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" -"Список или диапазон IP-адресов, которым разрешено использовать прокси-сервер" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" -"Список разрешённых портов для метода CONNECT. Значение \"0\" разрешает все " -"порты" - -msgid "Listen address" -msgstr "Адрес" - -msgid "Listen port" -msgstr "Порт" - -msgid "Log file" -msgstr "Файл журналирования" - -msgid "Log file to use for dumping messages" -msgstr "Файл для записи сообщений" - -msgid "Log level" -msgstr "Уровень журналирования" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "Уровень подробности журналирования процесса Tinyproxy" - -msgid "Max. clients" -msgstr "Макс. кол-во клиентов" - -msgid "Max. requests per server" -msgstr "Макс. кол-во запросов на сервер" - -msgid "Max. spare servers" -msgstr "Макс. кол-во серверов ожидания" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "Максимально допустимое количество одновременно подключенных клиентов" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" -"Максимально допустимое количество запросов на процесс. Если превышено, " -"процесс будет перезапущен. Ноль отключает данное ограничение." - -msgid "Maximum number of prepared idle processes" -msgstr "Максимальное количество готовых к обработке процессов" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" -"Максимальное количество секунд, в течение которых неактивное соединение " -"остаётся открытым" - -msgid "Min. spare servers" -msgstr "Мин. кол-во серверов ожидания" - -msgid "Minimum number of prepared idle processes" -msgstr "Минимальное количество готовых к обработке процессов" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "Количество готовых к обработке процессов при старте Tinyproxy" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "Файл с URL или доменами для фильтрации. Одна запись на строку" - -msgid "Policy" -msgstr "Политика" - -msgid "Privacy settings" -msgstr "Настройки конфиденциальности" - -msgid "Reject access" -msgstr "Отклонять доступ" - -msgid "Server Settings" -msgstr "Настройки сервера" - -msgid "Server limits" -msgstr "Ограничения сервера" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" -"Определяет HTTP-заголовки, которым разрешено проходить через прокси. " -"Оставьте пустым, чтобы не фильтровать заголовки" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "Определяет порт HTTP, на котором Tinyproxy ожидает запросы" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" -"Определяет имя хоста Tinyproxy, которое будет использовано в HTTP-заголовке " -"Via" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" -"Определяет адрес, к которому привязывается Tinyproxy для отправки исходящих " -"запросов" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "Определяет адрес, на котором Tinyproxy ожидает запросы" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "Определяет имя группы, в которой работает Tinyproxy" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" -"Определяет прокси восходящего канала для доступа к хосту в формате " -"адрес:порт" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "Определяет пользователя, от имени которого работает Tinyproxy" - -msgid "Start spare servers" -msgstr "Запустить указанное количество готовых к обработке процессов" - -msgid "Statistics page" -msgstr "Страница статистики" - -msgid "Status" -msgstr "Состояние" - -msgid "Target host" -msgstr "Хост назначения" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Состояние Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy - быстрый HTTP(S)-прокси, не использующий кэш" - -msgid "Upstream Proxies" -msgstr "Прокси для исходящего трафика" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" -"Прокси для исходящего трафика при обращении к определённым IP-адресам или " -"доменам." - -msgid "Use syslog" -msgstr "Использовать системный журнал" - -msgid "User" -msgstr "Пользователь" - -msgid "Via hostname" -msgstr "Имя хоста Via" - -msgid "Via proxy" -msgstr "Через прокси" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "Записывать сообщения журнала в системный журнал вместо файла" - -msgid "X-Tinyproxy header" -msgstr "Заголовок X-Tinyproxy" diff --git a/package/luci/applications/luci-app-tinyproxy/po/sk/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/sk/tinyproxy.po deleted file mode 100644 index 128c71d4f2..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/sk/tinyproxy.po +++ /dev/null @@ -1,255 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/sv/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/sv/tinyproxy.po deleted file mode 100644 index d49df605e7..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/sv/tinyproxy.po +++ /dev/null @@ -1,275 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" -"Via proxy-rutternas förfrÃ¥gningar till det givna mÃ¥let via den " -"angivna uppströmsproxyn, Neka Ã¥tkomst inaktiverar nÃ¥gon " -"uppströmsproxy för det mÃ¥let" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" -"Lägger till en \"X-Tinyproxy\" HTTP-header med klientens IP-adress till " -"vidarebefordrade förfrÃ¥gningar" - -msgid "Allowed clients" -msgstr "TillÃ¥tna klienter" - -msgid "Allowed connect ports" -msgstr "TillÃ¥tna portar för anslutning" - -msgid "Bind address" -msgstr "Bindningsadress" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"Huvudsakliga POSIX-uttryck används för filtrering. Aktivera det här för att " -"aktivera ordinarie förlängda uttryck" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" -"Filtrens strängar behandlas som skriftlägeskänsliga. Aktivera det här för " -"att göra matchningen skriftlägeskänslig" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" -"Filtrering görs baserat pÃ¥ domännamn som standard. Aktivera det här för att " -"matcha mot URL:er istället" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"Filterreglerna agerar som en svartlista som standard. Aktivera det här " -"alternativet för att endast tillÃ¥ta matchade URL:er eller domännamn" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" -"Kan antingen vara en IP-adress eller räckvidd, ett domännamn eller \".\" för " -"nÃ¥gon värd utan en domän" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Connection timeout" -msgstr "Tidsgräns för anslutning" - -msgid "Default deny" -msgstr "Neka som standard" - -msgid "Enable Tinyproxy server" -msgstr "Aktivera Tinyproxy-server" - -msgid "Error page" -msgstr "Fel-sida" - -msgid "Failed to retrieve statistics from url:" -msgstr "Misslyckades med att ta emot statistik frÃ¥n url:" - -msgid "Filter by RegExp" -msgstr "Filtrera efter RegExp" - -msgid "Filter by URLs" -msgstr "Filtrera efter URL:er" - -msgid "Filter case-sensitive" -msgstr "Filtrera skriftlägeskänslig" - -msgid "Filter file" -msgstr "Filtrera fil" - -msgid "Filtering and ACLs" -msgstr "Filtrering och ACL:er" - -msgid "General settings" -msgstr "Generella inställningar" - -msgid "Group" -msgstr "Grupp" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "Lyssningsadress" - -msgid "Listen port" -msgstr "Lyssningsport" - -msgid "Log file" -msgstr "Loggfil" - -msgid "Log file to use for dumping messages" -msgstr "Loggfil som ska användas för dumpningsmeddelanden" - -msgid "Log level" -msgstr "LoggnivÃ¥" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "Maximalt antalet klienter" - -msgid "Max. requests per server" -msgstr "Maximalt antalet förfrÃ¥gningar per server" - -msgid "Max. spare servers" -msgstr "Maximalt antalet reserv-servrar" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "Maximalt antal sekunder som en inaktiv anslutning hÃ¥lls öppen" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "Villkor" - -msgid "Privacy settings" -msgstr "Integritetsinställningar" - -msgid "Reject access" -msgstr "Neka Ã¥tkomst" - -msgid "Server Settings" -msgstr "Server-inställningar" - -msgid "Server limits" -msgstr "Gräns för server" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "Anger HTTP-porten som Tinyproxy lyssnar med efter förfrÃ¥gningar" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" -"Anger adressen som Tinyproxy binder till för utgÃ¥ende vidarebefordrade " -"förfrÃ¥gningar" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "Anger adresserna som Tinyproxy lyssnar pÃ¥ efter förfrÃ¥gningar" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "Anger gruppnamnet som Tinyproxy-processen körs som" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" -"Anger uppström-proxyn att använda för Ã¥tkomst till mÃ¥lvärden. Formatet är " -"adress:port" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "Anger användarnamnet som Tinyproxy-processen körs som" - -msgid "Start spare servers" -msgstr "Starta reserv-servrar" - -msgid "Statistics page" -msgstr "Sida för statistik" - -msgid "Status" -msgstr "Status" - -msgid "Target host" -msgstr "MÃ¥lvärd" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Status för Tinyproxy" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy är en liten och snabb icke-cachande HTTP(S)-proxy" - -msgid "Upstream Proxies" -msgstr "Proxy-servrar uppströms" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "Använd systemlogg" - -msgid "User" -msgstr "Användare" - -msgid "Via hostname" -msgstr "Via värdnamn" - -msgid "Via proxy" -msgstr "Via proxy-server" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "Skriver loggmeddelanden till systemloggen istället för en logg-fil" - -msgid "X-Tinyproxy header" -msgstr "Header för X-Tinyproxy" diff --git a/package/luci/applications/luci-app-tinyproxy/po/templates/tinyproxy.pot b/package/luci/applications/luci-app-tinyproxy/po/templates/tinyproxy.pot deleted file mode 100644 index 712fad92aa..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/templates/tinyproxy.pot +++ /dev/null @@ -1,248 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/tr/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/tr/tinyproxy.po deleted file mode 100644 index a7af49df2f..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/tr/tinyproxy.po +++ /dev/null @@ -1,255 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/uk/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/uk/tinyproxy.po deleted file mode 100644 index 2e268ba7fe..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/uk/tinyproxy.po +++ /dev/null @@ -1,256 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-tinyproxy/po/vi/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/vi/tinyproxy.po deleted file mode 100644 index 6c825f5368..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/vi/tinyproxy.po +++ /dev/null @@ -1,332 +0,0 @@ -# tinyproxy.pot -# generated from ./applications/luci-tinyproxy/luasrc/i18n/tinyproxy.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:58+0200\n" -"PO-Revision-Date: 2009-08-13 03:36+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "Log level" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "Tối đa spare servers" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "Tối thiểu spare servers" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "Từ chối truy cập " - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "Host mục tiêu" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy là một proxy nhỏ và nhanh không-cạc HTTP(S)" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "Via proxy" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" - -#~ msgid "Allow access from" -#~ msgstr "Cho phép truy cập từ" - -#~ msgid "Allowed headers for anonymous proxy" -#~ msgstr "Cho phép headers cho anonymous proxy" - -#~ msgid "Bind outgoing traffic to address" -#~ msgstr "Blind lÆ°u lượng truy cập ngoài vào địa chỉ" - -#~ msgid "Ports allowed for CONNECT method" -#~ msgstr "Cổng cho phép phÆ°Æ¡ng pháp CONNECT" - -#~ msgid "0 = disabled, empty = all" -#~ msgstr "0=vô hiệu hóa, rỗng = tất cả" - -#~ msgid "Error document" -#~ msgstr "Tài liệu lỗi" - -#~ msgid "Filter list" -#~ msgstr "Lọc list" - -#~ msgid "Case sensitive filters" -#~ msgstr "Lọc phím nhạy cảm" - -#~ msgid "Filter list is a whitelist" -#~ msgstr "Lọc list là một whitelist" - -#~ msgid "Extended regular expression filters" -#~ msgstr "Mở rộng các bộ lọc thường xuyên biểu" - -#~ msgid "Filter URLs instead of domains" -#~ msgstr "Lọc URLs thay domain" - -#~ msgid "Listen on address" -#~ msgstr "Nghe trên địa chỉ" - -#~ msgid "Logfile" -#~ msgstr "Logfile" - -#~ msgid "Maximum number of clients" -#~ msgstr "Tối đa số lượng khách hàng" - -#~ msgid "Maximum requests per thread" -#~ msgstr "Tối đa yêu cầu trên thread" - -#~ msgid "Spare servers to start with" -#~ msgstr "Spare servers bắt đầu với" - -#~ msgid "Statistic document" -#~ msgstr "Tài liệu thống kê" - -#~ msgid "Write to syslog" -#~ msgstr "viết tới syslog" - -#~ msgid "Connection Timeout" -#~ msgstr "Kết nối hết hiệu lá»±c" - -#~ msgid "Value of Via-Header" -#~ msgstr "Giá trị của Via-Header" - -#~ msgid "Include client IP" -#~ msgstr "Bao gồm IP của khách hàng" - -#~ msgid "Upstream Control" -#~ msgstr "Điều khiển Upstream " - -#~ msgid "Type" -#~ msgstr "Loại " - -#~ msgid "Upstream Proxy" -#~ msgstr "Upstream Proxy" diff --git a/package/luci/applications/luci-app-tinyproxy/po/zh-cn/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/zh-cn/tinyproxy.po deleted file mode 100644 index 828e952e09..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/zh-cn/tinyproxy.po +++ /dev/null @@ -1,262 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-10 19:43+0200\n" -"Last-Translator: Tanyingyu \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" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" -"通过代理允许给定的对象经过指定的上行代理的路由请求。拒绝代理 禁用对象的任何上行代理。" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "转发请求时增加了一个客户机IP地址和“X-Tinyproxy“HTTP头" - -msgid "Allowed clients" -msgstr "授权客户端" - -msgid "Allowed connect ports" -msgstr "允许的连接端口" - -msgid "Bind address" -msgstr "绑定地址" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" -"默认情况下,使用基本的POSIX表达式作为滤规则。启用这个以使用正规表达式代替之。" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "默认情况下,过滤规则是不区分大小写的。启用它则转为区分大小写。" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "默认情况下,过滤器只匹配域名。启用它以匹配URL。" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" -"默认情况下,过滤规则将以黑名单形式匹配。启用它将仅允许过滤规则里的URL或域名。" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "可以是IP地址或者范围,也可以是域名或者以\".\"代表任意主机" - -msgid "Configuration" -msgstr "配置" - -msgid "Connection timeout" -msgstr "连接超时时间" - -msgid "Default deny" -msgstr "默认拒绝" - -msgid "Enable Tinyproxy server" -msgstr "启用Tinyproxy" - -msgid "Error page" -msgstr "错误页面" - -msgid "Failed to retrieve statistics from url:" -msgstr "从url未能检索统计信息" - -msgid "Filter by RegExp" -msgstr "正则表达式过滤器" - -msgid "Filter by URLs" -msgstr "基于URL的过滤器" - -msgid "Filter case-sensitive" -msgstr "过滤器大小写敏感" - -msgid "Filter file" -msgstr "过滤器文件" - -msgid "Filtering and ACLs" -msgstr "过滤规则和访问控制列表" - -msgid "General settings" -msgstr "基本设置" - -msgid "Group" -msgstr "运行组" - -msgid "HTML template file to serve for stat host requests" -msgstr "为统计主机HTML模板文件" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "HTTP出错页面HTML模板" - -msgid "Header whitelist" -msgstr "头白名单" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "允许访问代理服务器的IP或IP段列表" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "允许CONNECT方法连接的端口列表,0代表所有端口。" - -msgid "Listen address" -msgstr "服务地址" - -msgid "Listen port" -msgstr "服务端口" - -msgid "Log file" -msgstr "日志文件" - -msgid "Log file to use for dumping messages" -msgstr "用于消息转储的日志文件" - -msgid "Log level" -msgstr "记录等级" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "冗长的Tinyproxy过程日志" - -msgid "Max. clients" -msgstr "最大客户端数" - -msgid "Max. requests per server" -msgstr "单进程最大请求数" - -msgid "Max. spare servers" -msgstr "最多备用服务器" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "允许同时连接的最大客户端数量" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "单个进程允许的最多请求数,超过这个值,进程将重启。0表示不限制。" - -msgid "Maximum number of prepared idle processes" -msgstr "备用进程数的最大值" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "活动连接保持打开的最长秒数" - -msgid "Min. spare servers" -msgstr "最少备用服务器" - -msgid "Minimum number of prepared idle processes" -msgstr "备用进程数的最小值" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "启动Tinyproxy时开启的进程数" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "用于过滤器的文本,包含URL或者域名,每行一条。" - -msgid "Policy" -msgstr "策略" - -msgid "Privacy settings" -msgstr "策略设置" - -msgid "Reject access" -msgstr "拒绝访问" - -msgid "Server Settings" -msgstr "服务器设置" - -msgid "Server limits" -msgstr "服务器限制" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "指定HTTP报头名称可直通的,其它将被丢弃。保留空,禁用头过滤" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "Tinyproxy正在侦听请求的指定HTTP端口" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "通过HTTP头使用指定Tinyproxy主机名" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "指定服务器向外转发请求时所使用的地址" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "指定服务器接收代理请求所使用的地址" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "指定Tinyproxy进程所属组" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "指定上级代理. 格式 IP地址:端口" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "指定Tinyproxy进程所属用户" - -msgid "Start spare servers" -msgstr "启动备用服务器" - -msgid "Statistics page" -msgstr "统计页面" - -msgid "Status" -msgstr "状态" - -msgid "Target host" -msgstr "目标主机" - -msgid "Tinyproxy" -msgstr "Tinyproxy" - -msgid "Tinyproxy Status" -msgstr "Tinyproxy状态" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "Tinyproxy是一个轻量级无缓存机制的高速HTTP(S)代理服务器" - -msgid "Upstream Proxies" -msgstr "上级代理" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "当访问特定IP地址或域名时,使用外出代理规则定义的代理服务器。" - -msgid "Use syslog" -msgstr "使用系统日志服务" - -msgid "User" -msgstr "运行用户" - -msgid "Via hostname" -msgstr "通过主机名" - -msgid "Via proxy" -msgstr "通过代理" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "将日志写入系统日志以代替指定的日志文件" - -msgid "X-Tinyproxy header" -msgstr "X-Tinyproxy头" diff --git a/package/luci/applications/luci-app-tinyproxy/po/zh-tw/tinyproxy.po b/package/luci/applications/luci-app-tinyproxy/po/zh-tw/tinyproxy.po deleted file mode 100644 index 849fcdeffb..0000000000 --- a/package/luci/applications/luci-app-tinyproxy/po/zh-tw/tinyproxy.po +++ /dev/null @@ -1,254 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "" -"Via proxy routes requests to the given target via the specifed " -"upstream proxy, Reject access disables any upstream proxy for the " -"target" -msgstr "" - -msgid "" -"Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded " -"requests" -msgstr "" - -msgid "Allowed clients" -msgstr "" - -msgid "Allowed connect ports" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "" -"By default, basic POSIX expressions are used for filtering. Enable this to " -"activate extended regular expressions" -msgstr "" - -msgid "" -"By default, filter strings are treated as case-insensitive. Enable this to " -"make the matching case-sensitive" -msgstr "" - -msgid "" -"By default, filtering is done based on domain names. Enable this to match " -"against URLs instead" -msgstr "" - -msgid "" -"By default, the filter rules act as blacklist. Enable this option to only " -"allow matched URLs or domain names" -msgstr "" - -msgid "" -"Can be either an IP address or range, a domain name or \".\" for any host " -"without domain" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Connection timeout" -msgstr "" - -msgid "Default deny" -msgstr "" - -msgid "Enable Tinyproxy server" -msgstr "" - -msgid "Error page" -msgstr "" - -msgid "Failed to retrieve statistics from url:" -msgstr "" - -msgid "Filter by RegExp" -msgstr "" - -msgid "Filter by URLs" -msgstr "" - -msgid "Filter case-sensitive" -msgstr "" - -msgid "Filter file" -msgstr "" - -msgid "Filtering and ACLs" -msgstr "" - -msgid "General settings" -msgstr "" - -msgid "Group" -msgstr "" - -msgid "HTML template file to serve for stat host requests" -msgstr "" - -msgid "HTML template file to serve when HTTP errors occur" -msgstr "" - -msgid "Header whitelist" -msgstr "" - -msgid "" -"List of IP addresses or ranges which are allowed to use the proxy server" -msgstr "" - -msgid "" -"List of allowed ports for the CONNECT method. A single value \"0\" allows " -"all ports" -msgstr "" - -msgid "Listen address" -msgstr "" - -msgid "Listen port" -msgstr "" - -msgid "Log file" -msgstr "" - -msgid "Log file to use for dumping messages" -msgstr "" - -msgid "Log level" -msgstr "" - -msgid "Logging verbosity of the Tinyproxy process" -msgstr "" - -msgid "Max. clients" -msgstr "" - -msgid "Max. requests per server" -msgstr "" - -msgid "Max. spare servers" -msgstr "" - -msgid "Maximum allowed number of concurrently connected clients" -msgstr "" - -msgid "" -"Maximum allowed number of requests per process. If it is exeeded, the " -"process is restarted. Zero means unlimited." -msgstr "" - -msgid "Maximum number of prepared idle processes" -msgstr "" - -msgid "Maximum number of seconds an inactive connection is held open" -msgstr "" - -msgid "Min. spare servers" -msgstr "" - -msgid "Minimum number of prepared idle processes" -msgstr "" - -msgid "Number of idle processes to start when launching Tinyproxy" -msgstr "" - -msgid "Plaintext file with URLs or domains to filter. One entry per line" -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Privacy settings" -msgstr "" - -msgid "Reject access" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server limits" -msgstr "" - -msgid "" -"Specifies HTTP header names which are allowed to pass-through, all others " -"are discarded. Leave empty to disable header filtering" -msgstr "" - -msgid "Specifies the HTTP port Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header" -msgstr "" - -msgid "" -"Specifies the address Tinyproxy binds to for outbound forwarded requests" -msgstr "" - -msgid "Specifies the addresses Tinyproxy is listening on for requests" -msgstr "" - -msgid "Specifies the group name the Tinyproxy process is running as" -msgstr "" - -msgid "" -"Specifies the upstream proxy to use for accessing the target host. Format is " -"address:port" -msgstr "" - -msgid "Specifies the user name the Tinyproxy process is running as" -msgstr "" - -msgid "Start spare servers" -msgstr "" - -msgid "Statistics page" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Target host" -msgstr "" - -msgid "Tinyproxy" -msgstr "" - -msgid "Tinyproxy Status" -msgstr "" - -msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy" -msgstr "" - -msgid "Upstream Proxies" -msgstr "" - -msgid "" -"Upstream proxy rules define proxy servers to use when accessing certain IP " -"addresses or domains." -msgstr "" - -msgid "Use syslog" -msgstr "" - -msgid "User" -msgstr "" - -msgid "Via hostname" -msgstr "" - -msgid "Via proxy" -msgstr "" - -msgid "Writes log messages to syslog instead of a log file" -msgstr "" - -msgid "X-Tinyproxy header" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/Makefile b/package/luci/applications/luci-app-transmission/Makefile deleted file mode 100644 index 668c73185b..0000000000 --- a/package/luci/applications/luci-app-transmission/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2016 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Transmission -LUCI_DEPENDS:= - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-transmission/luasrc/controller/transmission.lua b/package/luci/applications/luci-app-transmission/luasrc/controller/transmission.lua deleted file mode 100644 index b54b92b04b..0000000000 --- a/package/luci/applications/luci-app-transmission/luasrc/controller/transmission.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright 2012 Gabor Varga --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.transmission", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/transmission") then - return - end - - local page = entry({"admin", "services", "transmission"}, cbi("transmission"), _("Transmission")) - page.dependent = true - -end diff --git a/package/luci/applications/luci-app-transmission/luasrc/model/cbi/transmission.lua b/package/luci/applications/luci-app-transmission/luasrc/model/cbi/transmission.lua deleted file mode 100644 index ec19f477b2..0000000000 --- a/package/luci/applications/luci-app-transmission/luasrc/model/cbi/transmission.lua +++ /dev/null @@ -1,220 +0,0 @@ --- Copyright 2012 Gabor Varga --- Licensed to the public under the Apache License 2.0. - -require("luci.sys") -require("luci.util") -require("luci.model.ipkg") - -local uci = require "luci.model.uci".cursor() -local trport = uci:get_first("transmission", "transmission", "rpc_port") or 9091 -local running = (luci.sys.call("pidof transmission-daemon > /dev/null") == 0) -local webinstalled = luci.model.ipkg.installed("transmission-web") -local button = "" -if running and webinstalled then - button = "      " -end - -m = Map("transmission", "Transmission", translate("Transmission daemon is a simple bittorrent client, here you can configure the settings.") .. button) - -s=m:section(TypedSection, "transmission", translate("Global settings")) -s.addremove=false -s.anonymous=true - -enable=s:option(Flag, "enabled", translate("Enabled")) -enable.rmempty=false -config_dir=s:option(Value, "config_dir", translate("Config file directory")) -user=s:option(ListValue, "user", translate("Run daemon as user")) -local p_user -for _, p_user in luci.util.vspairs(luci.util.split(luci.sys.exec("cat /etc/passwd | cut -f 1 -d :"))) do - user:value(p_user) -end -cache_size_mb=s:option(Value, "cache_size_mb", translate("Cache size in MB")) - -bandwidth=m:section(TypedSection, "transmission", translate("Bandwidth settings")) -bandwidth.anonymous=true -alt_speed_enabled=bandwidth:option(Flag, "alt_speed_enabled", translate("Alternative speed enabled")) -alt_speed_enabled.enabled="true" -alt_speed_enabled.disabled="false" -alt_speed_down=bandwidth:option(Value, "alt_speed_down", translate("Alternative download speed"), "KB/s") -alt_speed_down:depends("alt_speed_enabled", "true") -alt_speed_up=bandwidth:option(Value, "alt_speed_up", translate("Alternative upload speed"), "KB/s") -alt_speed_up:depends("alt_speed_enabled", "true") -speed_limit_down_enabled=bandwidth:option(Flag, "speed_limit_down_enabled", translate("Speed limit down enabled")) -speed_limit_down_enabled.enabled="true" -speed_limit_down_enabled.disabled="false" -speed_limit_down=bandwidth:option(Value, "speed_limit_down", translate("Speed limit down"), "KB/s") -speed_limit_down:depends("speed_limit_down_enabled", "true") -speed_limit_up_enabled=bandwidth:option(Flag, "speed_limit_up_enabled", translate("Speed limit up enabled")) -speed_limit_up_enabled.enabled="true" -speed_limit_up_enabled.disabled="false" -speed_limit_up=bandwidth:option(Value, "speed_limit_up", translate("Speed limit up"), "KB/s") -speed_limit_up:depends("speed_limit_up_enabled", "true") -upload_slots_per_torrent=bandwidth:option(Value, "upload_slots_per_torrent", translate("Upload slots per torrent")) - -blocklists=m:section(TypedSection, "transmission", translate("Blocklists")) -blocklists.anonymous=true -blocklist_enabled=blocklists:option(Flag, "blocklist_enabled", translate("Block list enabled")) -blocklist_enabled.enabled="true" -blocklist_enabled.disabled="false" -blocklist_url=blocklists:option(Value, "blocklist_url", translate("Blocklist URL")) -blocklist_url:depends("blocklist_enabled", "true") - -fileslocations=m:section(TypedSection, "transmission", translate("Files and Locations")) -fileslocations.anonymous=true -download_dir=fileslocations:option(Value, "download_dir", translate("Download directory")) -incomplete_dir_enabled=fileslocations:option(Flag, "incomplete_dir_enabled", translate("Incomplete directory enabled")) -incomplete_dir_enabled.enabled="true" -incomplete_dir_enabled.disabled="false" -incomplete_dir=fileslocations:option(Value, "incomplete_dir", translate("Incomplete directory")) -incomplete_dir:depends("incomplete_dir_enabled", "true") -preallocation=fileslocations:option(ListValue, "preallocation", translate("preallocation")) -preallocation:value("0", translate("Off")) -preallocation:value("1", translate("Fast")) -preallocation:value("2", translate("Full")) -prefetch_enabled=fileslocations:option(Flag, "prefetch_enabled", translate("Prefetch enabled")) -rename_partial_files=fileslocations:option(Flag, "rename_partial_files", translate("Rename partial files")) -rename_partial_files.enableid="true" -rename_partial_files.disabled="false" -start_added_torrents=fileslocations:option(Flag, "start_added_torrents", translate("Automatically start added torrents")) -start_added_torrents.enabled="true" -start_added_torrents.disabled="false" -trash_original_torrent_files=fileslocations:option(Flag, "trash_original_torrent_files", translate("Trash original torrent files")) -trash_original_torrent_files.enabled="true" -trash_original_torrent_files.disabled="false" -umask=fileslocations:option(Value, "umask", "umask") -watch_dir_enabled=fileslocations:option(Flag, "watch_dir_enabled", translate("Enable watch directory")) -watch_dir_enabled.enabled="true" -watch_dir_enabled.disabled="false" -watch_dir=fileslocations:option(Value, "watch_dir", translate("Watch directory")) -watch_dir:depends("watch_dir_enabled", "true") - -misc=m:section(TypedSection, "transmission", translate("Miscellaneous")) -misc.anonymous=true -dht_enabled=misc:option(Flag, "dht_enabled", translate("DHT enabled")) -dht_enabled.enabled="true" -dht_enabled.disabled="false" -encryption=misc:option(ListValue, "encryption", translate("Encryption")) -encryption:value("0", translate("Off")) -encryption:value("1", translate("Preferred")) -encryption:value("2", translate("Forced")) -lazy_bitfield_enabled=misc:option(Flag, "lazy_bitfield_enabled", translate("Lazy bitfield enabled")) -lazy_bitfield_enabled.enabled="true" -lazy_bitfield_enabled.disabled="false" -lpd_enabled=misc:option(Flag, "lpd_enabled", translate("LPD enabled")) -lpd_enabled.enabled="true" -lpd_enabled.disabled="false" -message_level=misc:option(ListValue, "message_level", translate("Message level")) -message_level:value("0", translate("None")) -message_level:value("1", translate("Error")) -message_level:value("2", translate("Info")) -message_level:value("3", translate("Debug")) -pex_enabled=misc:option(Flag, "pex_enabled", translate("PEX enabled")) -pex_enabled.enabled="true" -pex_enabled.disabled="false" -script_torrent_done_enabled=misc:option(Flag, "script_torrent_done_enabled", translate("Script torrent done enabled")) -script_torrent_done_enabled.enabled="true" -script_torrent_done_enabled.disabled="false" -script_torrent_done_filename=misc:option(Value, "script_torrent_done_filename", translate("Script torrent done filename")) -script_torrent_done_filename:depends("script_torrent_done_enabled", "true") -idle_seeding_limit_enabled=misc:option(Flag, "idle_seeding_limit_enabled", translate("Idle seeding limit enabled")) -idle_seeding_limit_enabled.enabled="true" -idle_seeding_limit_enabled.disabled="false" -idle_seeding_limit=misc:option(Value, "idle_seeding_limit", translate("Idle seeding limit")) -idle_seeding_limit:depends("idle_seeding_limit_enabled", "true") -utp_enabled=misc:option(Flag, "utp_enabled", translate("uTP enabled")) -utp_enabled.enabled="true" -utp_enabled.disabled="false" - -peers=m:section(TypedSection, "transmission", translate("Peer settings")) -peers.anonymous=true -bind_address_ipv4=peers:option(Value, "bind_address_ipv4", translate("Binding address IPv4")) -bind_address_ipv4.default="0.0.0.0" -bind_address_ipv6=peers:option(Value, "bind_address_ipv6", translate("Binding address IPv6")) -bind_address_ipv6.default="::" -peer_congestion_algorithm=peers:option(Value, "peer_congestion_algorithm", translate("Peer congestion algorithm")) -peer_limit_global=peers:option(Value, "peer_limit_global", translate("Global peer limit")) -peer_limit_per_torrent=peers:option(Value, "peer_limit_per_torrent", translate("Peer limit per torrent")) -peer_socket_tos=peers:option(Value, "peer_socket_tos", translate("Peer socket tos")) - -peerport=m:section(TypedSection, "transmission", translate("Peer Port settings")) -peerport.anonymous=true -peer_port=peerport:option(Value, "peer_port", translate("Peer port")) -peer_port_random_on_start=peerport:option(Flag, "peer_port_random_on_start", translate("Peer port random on start")) -peer_port_random_on_start.enabled="true" -peer_port_random_on_start.disabled="false" -peer_port_random_high=peerport:option(Value, "peer_port_random_high", translate("Peer port random high")) -peer_port_random_high:depends("peer_port_random_on_start", "true") -peer_port_random_low=peerport:option(Value, "peer_port_random_low", translate("Peer port random low")) -peer_port_random_low:depends("peer_port_random_on_start", "true") -port_forwarding_enabled=peerport:option(Flag, "port_forwarding_enabled", translate("Port forwarding enabled")) -port_forwarding_enabled.enabled="true" -port_forwarding_enabled.disabled="false" - -rpc=m:section(TypedSection, "transmission", translate("RPC settings")) -rpc.anonymous=true -rpc_enabled=rpc:option(Flag, "rpc_enabled", translate("RPC enabled")) -rpc_enabled.enabled="true" -rpc_enabled.disabled="false" -rpc_port=rpc:option(Value, "rpc_port", translate("RPC port")) -rpc_port:depends("rpc_enabled", "true") -rpc_bind_address=rpc:option(Value, "rpc_bind_address", translate("RPC bind address")) -rpc_bind_address:depends("rpc_enabled", "true") -rpc_url=rpc:option(Value, "rpc_url", translate("RPC URL")) -rpc_url:depends("rpc_enabled", "true") -rpc_whitelist_enabled=rpc:option(Flag, "rpc_whitelist_enabled", translate("RPC whitelist enabled")) -rpc_whitelist_enabled.enabled="true" -rpc_whitelist_enabled.disabled="false" -rpc_whitelist_enabled:depends("rpc_enabled", "true") -rpc_whitelist=rpc:option(Value, "rpc_whitelist", translate("RPC whitelist")) -rpc_whitelist:depends("rpc_whitelist_enabled", "true") -rpc_authentication_required=rpc:option(Flag, "rpc_authentication_required", translate("RPC authentication required")) -rpc_authentication_required.enabled="true" -rpc_authentication_required.disabled="false" -rpc_authentication_required:depends("rpc_enabled", "true") -rpc_username=rpc:option(Value, "rpc_username", translate("RPC username")) -rpc_username:depends("rpc_authentication_required", "true") -rpc_password=rpc:option(Value, "rpc_password", translate("RPC password")) -rpc_password:depends("rpc_authentication_required", "true") -rpc_password.password = true - -scheduling=m:section(TypedSection, "transmission", translate("Scheduling")) -scheduling.anonymous=true -alt_speed_time_enabled=scheduling:option(Flag, "alt_speed_time_enabled", translate("Alternative speed timing enabled")) -alt_speed_time_enabled.enabled="true" -alt_speed_time_enabled.disabled="false" -alt_speed_time_enabled.default="false" -alt_speed_time_enabled:depends("alt_speed_enabled", "true") -alt_speed_time_day=scheduling:option(Value, "alt_speed_time_day", translate("Alternative speed time day"), translate("Number/bitfield. Start with 0, then for each day you want the scheduler enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - 8, Thursday - 16, Friday - 32, Saturday - 64")) -alt_speed_time_day:depends("alt_speed_time_enabled", "true") -alt_speed_time_begin=scheduling:option(Value, "alt_speed_time_begin", translate("Alternative speed time begin"), translate("in minutes from midnight")) -alt_speed_time_begin:depends("alt_speed_time_enabled", "true") -alt_speed_time_end=scheduling:option(Value, "alt_speed_time_end", translate("Alternative speed time end"), translate("in minutes from midnight")) -alt_speed_time_end:depends("alt_speed_time_enabled", "true") -ratio_limit_enabled=scheduling:option(Flag, "ratio_limit_enabled", translate("Ratio limit enabled")) -ratio_limit_enabled.enabled="true" -ratio_limit_enabled.disabled="false" -ratio_limit=scheduling:option(Value, "ratio_limit", translate("Ratio limit")) -ratio_limit:depends("ratio_limit_enabled", "true") - -queueing=m:section(TypedSection, "transmission", translate("Queueing")) -queueing.anonymous=true -download_queue_enabled=queueing:option(Flag, "download_queue_enabled", translate("Download queue enabled")) -download_queue_enabled.enabled="true" -download_queue_enabled.disabled="false" -download_queue_size=queueing:option(Value, "download_queue_size", translate("Download queue size")) -download_queue_size:depends("download_queue_enabled", "true") -queue_stalled_enabled=queueing:option(Flag, "queue_stalled_enabled", translate("Queue stalled enabled")) -queue_stalled_enabled.enabled="true" -queue_stalled_enabled.disabled="false" -queue_stalled_minutes=queueing:option(Value, "queue_stalled_minutes", translate("Queue stalled minutes")) -queue_stalled_minutes:depends("queue_stalled_enabled", "true") -seed_queue_enabled=queueing:option(Flag, "seed_queue_enabled", translate("Seed queue enabled")) -seed_queue_enabled.enabled="true" -seed_queue_enabled.disabled="false" -seed_queue_size=queueing:option(Value, "seed_queue_size", translate("Seed queue size")) -seed_queue_size:depends("seed_queue_enabled", "true") -scrape_paused_torrents_enabled=queueing:option(Flag, "scrape_paused_torrents_enabled", translate("Scrape paused torrents enabled")) -scrape_paused_torrents_enabled.enabled="true" -scrape_paused_torrents_enabled.disabled="false" - -return m diff --git a/package/luci/applications/luci-app-transmission/po/ca/transmission.po b/package/luci/applications/luci-app-transmission/po/ca/transmission.po deleted file mode 100644 index 2498393a9c..0000000000 --- a/package/luci/applications/luci-app-transmission/po/ca/transmission.po +++ /dev/null @@ -1,297 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-06-01 23:27+0200\n" -"PO-Revision-Date: 2014-07-17 23:50+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Velocitat de baixada alternativa" - -msgid "Alternative speed enabled" -msgstr "Velocitat alternativa habilitada" - -msgid "Alternative speed time begin" -msgstr "Hora inicial de velocitat alternativa" - -msgid "Alternative speed time day" -msgstr "Dia de velocitat alternativa" - -msgid "Alternative speed time end" -msgstr "Hora final de velocitat alternativa" - -msgid "Alternative speed timing enabled" -msgstr "Temporització de velocitat alternativa habilitada" - -msgid "Alternative upload speed" -msgstr "Velocitat de pujada alternativa" - -msgid "Automatically start added torrents" -msgstr "Comença automàticament els torrents afegits" - -msgid "Bandwidth settings" -msgstr "Ajusts d'amplada de banda" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "Llista de bloqueig habilitada" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "Llistes de bloqueig" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "Directori de fitxer de configuració" - -msgid "DHT enabled" -msgstr "DHT habilitat" - -msgid "Debug" -msgstr "Depuració" - -msgid "Download directory" -msgstr "Directori de baixada" - -msgid "Download queue enabled" -msgstr "Cua de baixada habilitada" - -msgid "Download queue size" -msgstr "Mida de cua de baixada" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "Habilitat" - -msgid "Encryption" -msgstr "Xifració" - -msgid "Error" -msgstr "Error" - -msgid "Fast" -msgstr "Ràpid" - -msgid "Files and Locations" -msgstr "Fitxers i ubicacions" - -msgid "Forced" -msgstr "Forçat" - -msgid "Full" -msgstr "Ple" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "Ajusts globals" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "Directori incomplet" - -msgid "Incomplete directory enabled" -msgstr "Directori incomplet habilitat" - -msgid "Info" -msgstr "Informació" - -msgid "LPD enabled" -msgstr "LPD habilitat" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "Miscel·lani" - -msgid "None" -msgstr "Cap" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "Desactivat" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "PEX habilitat" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "Preferit" - -msgid "Prefetch enabled" -msgstr "Precarrega habilitada" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "Autenticació RPC requerida" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "RPC habilitat" - -msgid "RPC password" -msgstr "Contrasenya RPC" - -msgid "RPC port" -msgstr "Port RPC" - -msgid "RPC settings" -msgstr "Ajusts RPC" - -msgid "RPC username" -msgstr "Nom d'usuari RPC" - -msgid "RPC whitelist" -msgstr "Llista blanca RPC" - -msgid "RPC whitelist enabled" -msgstr "Llista blanca RPC habilitada" - -msgid "Ratio limit" -msgstr "Límit de ràtio" - -msgid "Ratio limit enabled" -msgstr "Límit de ràtio habilitat" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "Executa el dimoni com l'usuari" - -msgid "Scheduling" -msgstr "Programació" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"El dimoni Transmission és un client de bittorrent senzill, aquí podeu " -"configurar els ajusts." - -msgid "Trash original torrent files" -msgstr "Suprimeix els fitxers de torrent originals" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "Directori que vigilar" - -msgid "in minutes from midnight" -msgstr "en minuts des de la mitjanit" - -msgid "preallocation" -msgstr "preassignació" - -msgid "uTP enabled" -msgstr "uTP habilitat" diff --git a/package/luci/applications/luci-app-transmission/po/cs/transmission.po b/package/luci/applications/luci-app-transmission/po/cs/transmission.po deleted file mode 100644 index b6166ec03c..0000000000 --- a/package/luci/applications/luci-app-transmission/po/cs/transmission.po +++ /dev/null @@ -1,295 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-06 17:54+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Alternativní rychlost download" - -msgid "Alternative speed enabled" -msgstr "Povolit alternativní rychlost" - -msgid "Alternative speed time begin" -msgstr "Začátek doby alternativní rychlosti" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "Konec doby alternativní rychlosti" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "Alternativní rychlost uploadu" - -msgid "Automatically start added torrents" -msgstr "Automaticky začít stahovat nové torrenty" - -msgid "Bandwidth settings" -msgstr "Nastavení přenosové rychlosti" - -msgid "Binding address IPv4" -msgstr "Svázání s IPv4 adresou" - -msgid "Binding address IPv6" -msgstr "Svázání s IPv6 adresou" - -msgid "Block list enabled" -msgstr "Povolit černou listinu" - -msgid "Blocklist URL" -msgstr "URL černé listiny" - -msgid "Blocklists" -msgstr "Černé listiny" - -msgid "Cache size in MB" -msgstr "Velikost mezipaměti v MB" - -msgid "Config file directory" -msgstr "Složka pro uložení konfiguračního souboru" - -msgid "DHT enabled" -msgstr "Povolit DHT" - -msgid "Debug" -msgstr "Debug" - -msgid "Download directory" -msgstr "Adresář pro stahované" - -msgid "Download queue enabled" -msgstr "Povolit stahovací frontu" - -msgid "Download queue size" -msgstr "Velikost stahovací fronty" - -msgid "Enable watch directory" -msgstr "Povolit sledování složky" - -msgid "Enabled" -msgstr "Povolit" - -msgid "Encryption" -msgstr "Å ifrování" - -msgid "Error" -msgstr "Chyba" - -msgid "Fast" -msgstr "Rychlá" - -msgid "Files and Locations" -msgstr "Soubory a umístění" - -msgid "Forced" -msgstr "Vynucené" - -msgid "Full" -msgstr "Plná" - -msgid "Global peer limit" -msgstr "Globální peer limit" - -msgid "Global settings" -msgstr "Globální nastavení" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "Složka pro nedokončená stahování" - -msgid "Incomplete directory enabled" -msgstr "Povolit složku pro nedokončená stahování" - -msgid "Info" -msgstr "Info" - -msgid "LPD enabled" -msgstr "Povolit LPD" - -msgid "Lazy bitfield enabled" -msgstr "Povolit lazy bitfield" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "Ostatní" - -msgid "None" -msgstr "Žádný" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "Vypnuta" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "Povolit PEX" - -msgid "Peer Port settings" -msgstr "Nastavení peer portu" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "Peer limit na torrent" - -msgid "Peer port" -msgstr "Peer port" - -msgid "Peer port random high" -msgstr "Peer port náhodný nejvyšší" - -msgid "Peer port random low" -msgstr "Peer port náhodný nejnižší" - -msgid "Peer port random on start" -msgstr "Náhodný peer port při startu" - -msgid "Peer settings" -msgstr "Nastavení peer" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "Povolit port forwarding" - -msgid "Preferred" -msgstr "Preferované" - -msgid "Prefetch enabled" -msgstr "Povolit přednačítání" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "RPC URL" - -msgid "RPC authentication required" -msgstr "RPC ověřování vyžadováno" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "Povolit RPC" - -msgid "RPC password" -msgstr "RPC heslo" - -msgid "RPC port" -msgstr "RPC port" - -msgid "RPC settings" -msgstr "Nastavení RPC" - -msgid "RPC username" -msgstr "Uživatelské jméno RPC" - -msgid "RPC whitelist" -msgstr "RPC whitelist" - -msgid "RPC whitelist enabled" -msgstr "Povolit RPC whitelist" - -msgid "Ratio limit" -msgstr "Ratio limit" - -msgid "Ratio limit enabled" -msgstr "Povolit ratio limit" - -msgid "Rename partial files" -msgstr "Přejmenovat dílčí soubory" - -msgid "Run daemon as user" -msgstr "Spustit daemona jako uživatel" - -msgid "Scheduling" -msgstr "Plánování" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "Povolit seed frontu" - -msgid "Seed queue size" -msgstr "Velikost seed fronty" - -msgid "Speed limit down" -msgstr "Rychlostní limit downloadu" - -msgid "Speed limit down enabled" -msgstr "Povolit rychlostní limit downloadu" - -msgid "Speed limit up" -msgstr "Rychlostní limit uploadu" - -msgid "Speed limit up enabled" -msgstr "Povolit rychlostní limit uploadu" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"Transmission daemon je jednoduchý BitTorrent klient, zde můžete provést jeho " -"nastavení." - -msgid "Trash original torrent files" -msgstr "Odstranit původní torrent soubory" - -msgid "Upload slots per torrent" -msgstr "Upload sloty na torrent" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "v minutách od půlnoci" - -msgid "preallocation" -msgstr "prealokace" - -msgid "uTP enabled" -msgstr "Povolit uTP" diff --git a/package/luci/applications/luci-app-transmission/po/de/transmission.po b/package/luci/applications/luci-app-transmission/po/de/transmission.po deleted file mode 100644 index 4b665ff656..0000000000 --- a/package/luci/applications/luci-app-transmission/po/de/transmission.po +++ /dev/null @@ -1,300 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-17 15:08+0200\n" -"PO-Revision-Date: 2013-01-28 23:03+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Alternative Download-Geschwindigkeit" - -msgid "Alternative speed enabled" -msgstr "Alternative Geschwindigkeit aktivieren" - -msgid "Alternative speed time begin" -msgstr "Zeit für Beginn der alternativen Geschwindigkeit" - -msgid "Alternative speed time day" -msgstr "Tag für alternative Geschwindigkeit" - -msgid "Alternative speed time end" -msgstr "Zeit für Ende der alternativen Geschwindigkeit" - -msgid "Alternative speed timing enabled" -msgstr "Zeiteinstellung für alternative Geschwindigkeit eingeschaltet" - -msgid "Alternative upload speed" -msgstr "Alternative Upload-Geschwindigkeit" - -msgid "Automatically start added torrents" -msgstr "Hinzugefügte Torrents automatisch starten" - -msgid "Bandwidth settings" -msgstr "Bandbreiten-Einstellungen" - -msgid "Binding address IPv4" -msgstr "IPv4-Adressbindung" - -msgid "Binding address IPv6" -msgstr "IPv6-Adressbindung" - -msgid "Block list enabled" -msgstr "Blockier-Liste eingeschaltet" - -msgid "Blocklist URL" -msgstr "URL für Blockier-Liste" - -msgid "Blocklists" -msgstr "Blockier-Listen" - -msgid "Cache size in MB" -msgstr "Cache-Größe in MB" - -msgid "Config file directory" -msgstr "Verzeichnis für Konfigurationsdatei" - -msgid "DHT enabled" -msgstr "DHT eingeschaltet" - -msgid "Debug" -msgstr "Debug" - -msgid "Download directory" -msgstr "Verzeichnis für Downloads" - -msgid "Download queue enabled" -msgstr "Download-Warteschlange eingeschaltet" - -msgid "Download queue size" -msgstr "Größe der Download-Warteschlange" - -msgid "Enable watch directory" -msgstr "Verzeichnisüberprüfung eingeschaltet" - -msgid "Enabled" -msgstr "Eingeschaltet" - -msgid "Encryption" -msgstr "Verschlüsselung" - -msgid "Error" -msgstr "Fehler" - -msgid "Fast" -msgstr "Schnell" - -msgid "Files and Locations" -msgstr "Dateien und Orte" - -msgid "Forced" -msgstr "Erzwungen" - -msgid "Full" -msgstr "Voll" - -msgid "Global peer limit" -msgstr "Allgemeines Peer-Limit" - -msgid "Global settings" -msgstr "Allgemeine Einstellungen" - -msgid "Idle seeding limit" -msgstr "Begrenzung für Seeding im Idle-Zustand" - -msgid "Idle seeding limit enabled" -msgstr "Begrenzung für Seeding im Idle-Zustand eingeschaltet" - -msgid "Incomplete directory" -msgstr "unvollständiges Verzeichnis" - -msgid "Incomplete directory enabled" -msgstr "unvollständiges Verzeichnis eingeschaltet" - -msgid "Info" -msgstr "Info" - -msgid "LPD enabled" -msgstr "LPD eingeschaltet" - -msgid "Lazy bitfield enabled" -msgstr "Lazy-Bitfield eingeschaltet" - -msgid "Message level" -msgstr "Nachrichten-Ebene" - -msgid "Miscellaneous" -msgstr "Verschiedenes" - -msgid "None" -msgstr "Keines" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" -"Zahl/Bitfeld. Starte mit 0, für jeden Tag, an dem die Zeitplanung aktiv sein " -"soll, füge einen Wert hinzu. Sonntag - 1, Montag - 2, Dienstag - 4, " -"Mittwoch - 8, Donnerstag - 16, Freitag - 32, Samstag - 64" - -msgid "Off" -msgstr "Aus" - -msgid "Open Web Interface" -msgstr "Offenes Web-Interface" - -msgid "PEX enabled" -msgstr "PEX aktiv" - -msgid "Peer Port settings" -msgstr "Einstellungen für Peer-Port" - -msgid "Peer congestion algorithm" -msgstr "Algorithmus für Peer-Überlastungen" - -msgid "Peer limit per torrent" -msgstr "Peer-Begrenzung pro Torrent" - -msgid "Peer port" -msgstr "Peer-Port" - -msgid "Peer port random high" -msgstr "Peer-Port: hohe Zufallszahl" - -msgid "Peer port random low" -msgstr "Peer-Port: niedrige Zufallszahl" - -msgid "Peer port random on start" -msgstr "Zufälliger Peer-Port beim Start" - -msgid "Peer settings" -msgstr "Peer-Einstellungen" - -msgid "Peer socket tos" -msgstr "Peer-Socket-TOS" - -msgid "Port forwarding enabled" -msgstr "Port-Weiterleitung aktiv" - -msgid "Preferred" -msgstr "Bevorzugt" - -msgid "Prefetch enabled" -msgstr "Prefetch aktiv" - -msgid "Queue stalled enabled" -msgstr "Warteschlangen-Halt aktiv" - -msgid "Queue stalled minutes" -msgstr "Warteschlangen-Halt in Minuten" - -msgid "Queueing" -msgstr "in Warteschlange stellen" - -msgid "RPC URL" -msgstr "RPC-URL" - -msgid "RPC authentication required" -msgstr "RPC-Anmeldung erforderlich" - -msgid "RPC bind address" -msgstr "RPC-Adressbindung" - -msgid "RPC enabled" -msgstr "RPC eingeschaltet" - -msgid "RPC password" -msgstr "RPC-Passwort" - -msgid "RPC port" -msgstr "RPC-Port" - -msgid "RPC settings" -msgstr "RPC-Einstellungen" - -msgid "RPC username" -msgstr "RPC-Benutzername" - -msgid "RPC whitelist" -msgstr "RPC-Einschlussliste" - -msgid "RPC whitelist enabled" -msgstr "RPC-Einschlussliste aktiv" - -msgid "Ratio limit" -msgstr "Ratio-Begrenzung" - -msgid "Ratio limit enabled" -msgstr "Ratio-Begrenzung aktiv" - -msgid "Rename partial files" -msgstr "Teildateien umbenennen" - -msgid "Run daemon as user" -msgstr "Den Daemon als Benutzer starten" - -msgid "Scheduling" -msgstr "Zeitplanung" - -msgid "Scrape paused torrents enabled" -msgstr "Pausierte Torrents beschneiden" - -msgid "Script torrent done enabled" -msgstr "Skript nach Abschluss eines Torrents aktiv" - -msgid "Script torrent done filename" -msgstr "Skript nach Abschluss eines Torrents: Dateiname" - -msgid "Seed queue enabled" -msgstr "Seed-Warteschlange aktiv" - -msgid "Seed queue size" -msgstr "Größe der Seed-Warteschlange" - -msgid "Speed limit down" -msgstr "Geschwindigkeitsbegrenzung Down" - -msgid "Speed limit down enabled" -msgstr "Geschwindigkeitsbegrenzung Down aktiv" - -msgid "Speed limit up" -msgstr "Geschwindigkeitsbegrenzung Up" - -msgid "Speed limit up enabled" -msgstr "Geschwindigkeitsbegrenzung Up aktiv" - -msgid "Transmission" -msgstr "Übertragung" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"Der Transmission-Daemon ist ein einfacher Bittorent-Client. Hier können Sie " -"ihn einstellen." - -msgid "Trash original torrent files" -msgstr "Originale Torrent-Dateien verwerfen" - -msgid "Upload slots per torrent" -msgstr "Upload-Plätze pro Torrent" - -msgid "Watch directory" -msgstr "Überwachtes Verzeichnis" - -msgid "in minutes from midnight" -msgstr "in Minuten ab Mitternacht" - -msgid "preallocation" -msgstr "Vorbelegung" - -msgid "uTP enabled" -msgstr "uTP eingeschaltet" diff --git a/package/luci/applications/luci-app-transmission/po/el/transmission.po b/package/luci/applications/luci-app-transmission/po/el/transmission.po deleted file mode 100644 index 3125fc2751..0000000000 --- a/package/luci/applications/luci-app-transmission/po/el/transmission.po +++ /dev/null @@ -1,280 +0,0 @@ -msgid "Alternative download speed" -msgstr "" - -msgid "Alternative speed enabled" -msgstr "" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/en/transmission.po b/package/luci/applications/luci-app-transmission/po/en/transmission.po deleted file mode 100644 index 3125fc2751..0000000000 --- a/package/luci/applications/luci-app-transmission/po/en/transmission.po +++ /dev/null @@ -1,280 +0,0 @@ -msgid "Alternative download speed" -msgstr "" - -msgid "Alternative speed enabled" -msgstr "" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/es/transmission.po b/package/luci/applications/luci-app-transmission/po/es/transmission.po deleted file mode 100644 index 9eeb2fb6bc..0000000000 --- a/package/luci/applications/luci-app-transmission/po/es/transmission.po +++ /dev/null @@ -1,299 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-21 22:06+0200\n" -"PO-Revision-Date: 2012-08-26 10:47+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Velocidad de descarga alternativa" - -msgid "Alternative speed enabled" -msgstr "Velocidad alternativa activada" - -msgid "Alternative speed time begin" -msgstr "Hora de inicio de la velocidad alternativa" - -msgid "Alternative speed time day" -msgstr "Día de la velocidad alternativa" - -msgid "Alternative speed time end" -msgstr "Hora de fin de la velocidad alternativa" - -msgid "Alternative speed timing enabled" -msgstr "Temporización alternativa de la velocidad activada" - -msgid "Alternative upload speed" -msgstr "Velocidad de subida alternativa" - -msgid "Automatically start added torrents" -msgstr "Arrancar automáticamente los torrents al añadirlos" - -msgid "Bandwidth settings" -msgstr "Configuración del ancho de banda" - -msgid "Binding address IPv4" -msgstr "Dirección IPv4 a asociar" - -msgid "Binding address IPv6" -msgstr "Dirección IPv6 a asociar" - -msgid "Block list enabled" -msgstr "Lista de bloques activada" - -msgid "Blocklist URL" -msgstr "URL de la lista de bloques" - -msgid "Blocklists" -msgstr "Listas de bloques" - -msgid "Cache size in MB" -msgstr "Tamaño de la caché en MB" - -msgid "Config file directory" -msgstr "Directorio del fichero de configuración" - -msgid "DHT enabled" -msgstr "DHT activado" - -msgid "Debug" -msgstr "Depurar" - -msgid "Download directory" -msgstr "Directorio de descargas" - -msgid "Download queue enabled" -msgstr "Cola de descargas activada" - -msgid "Download queue size" -msgstr "Tamaño de la cola de descargas" - -msgid "Enable watch directory" -msgstr "Activar directorio a observar" - -msgid "Enabled" -msgstr "Activado" - -msgid "Encryption" -msgstr "Encriptado" - -msgid "Error" -msgstr "Error" - -msgid "Fast" -msgstr "Rápido" - -msgid "Files and Locations" -msgstr "Ficheros y posiciones" - -msgid "Forced" -msgstr "Forzado" - -msgid "Full" -msgstr "Lleno" - -msgid "Global peer limit" -msgstr "Límite global de máquinas" - -msgid "Global settings" -msgstr "Configuración global" - -msgid "Idle seeding limit" -msgstr "Límite de sembrado en vacío" - -msgid "Idle seeding limit enabled" -msgstr "Límite de sembrado en vacío activado" - -msgid "Incomplete directory" -msgstr "Directorio incompleto" - -msgid "Incomplete directory enabled" -msgstr "Directorio incompleto activado" - -msgid "Info" -msgstr "Información" - -msgid "LPD enabled" -msgstr "LPD activado" - -msgid "Lazy bitfield enabled" -msgstr "Lazy bitfield activado" - -msgid "Message level" -msgstr "Nivel de mensajes" - -msgid "Miscellaneous" -msgstr "Varios" - -msgid "None" -msgstr "Ninguno" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" -"Número/en bits. Empiece con 0 y por cada día que quiera que se active el " -"programados sume: Para domingo - 1, lunes - 2, martes - 4, miércoles - 8, " -"jueves - 16, viernes - 32, sábado - 64" - -msgid "Off" -msgstr "Apagado" - -msgid "Open Web Interface" -msgstr "Interfaz de red abierta" - -msgid "PEX enabled" -msgstr "PEX activado" - -msgid "Peer Port settings" -msgstr "Configuración de puertos" - -msgid "Peer congestion algorithm" -msgstr "Algoritmo de congestión" - -msgid "Peer limit per torrent" -msgstr "Límite por torrent" - -msgid "Peer port" -msgstr "Puerto" - -msgid "Peer port random high" -msgstr "Puerto más alto" - -msgid "Peer port random low" -msgstr "Puerto más bajo" - -msgid "Peer port random on start" -msgstr "Puerto aleatorio al arrancar" - -msgid "Peer settings" -msgstr "Configuración de peer" - -msgid "Peer socket tos" -msgstr "Peer socket tos" - -msgid "Port forwarding enabled" -msgstr "Traspaso de puertos activado" - -msgid "Preferred" -msgstr "Preferente" - -msgid "Prefetch enabled" -msgstr "Activar prefetch" - -msgid "Queue stalled enabled" -msgstr "Activar bloqueo de cola" - -msgid "Queue stalled minutes" -msgstr "Minutos de bloqueo de cola" - -msgid "Queueing" -msgstr "Colas" - -msgid "RPC URL" -msgstr "URL RPC" - -msgid "RPC authentication required" -msgstr "Autentificación RPC obligatoria" - -msgid "RPC bind address" -msgstr "Dirección de asociación RPC" - -msgid "RPC enabled" -msgstr "RPC activado" - -msgid "RPC password" -msgstr "Contraseña RPC" - -msgid "RPC port" -msgstr "Puerto RPC" - -msgid "RPC settings" -msgstr "Configuración RPC" - -msgid "RPC username" -msgstr "Nombre de usuario RPC" - -msgid "RPC whitelist" -msgstr "Lista blanca RPC" - -msgid "RPC whitelist enabled" -msgstr "Activar listas blancas RPC" - -msgid "Ratio limit" -msgstr "Límite de ratio" - -msgid "Ratio limit enabled" -msgstr "Límite de ratio activado" - -msgid "Rename partial files" -msgstr "Renombrar ficheros parciales" - -msgid "Run daemon as user" -msgstr "Ejecutar demonio como usuario" - -msgid "Scheduling" -msgstr "Programación" - -msgid "Scrape paused torrents enabled" -msgstr "Activar scrape de torrents en pausa" - -msgid "Script torrent done enabled" -msgstr "Activar script de fin de torrent" - -msgid "Script torrent done filename" -msgstr "Nombre de fichero del script" - -msgid "Seed queue enabled" -msgstr "Cola de seed activada" - -msgid "Seed queue size" -msgstr "Tamaño máximo de la cola de seed" - -msgid "Speed limit down" -msgstr "Velocidad mínima" - -msgid "Speed limit down enabled" -msgstr "Velocidad mínima activada" - -msgid "Speed limit up" -msgstr "Velocidad máxima" - -msgid "Speed limit up enabled" -msgstr "Velocidad máxima activada" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"Configuración. El demonio Transmission es un cliente de bittorrent simple." - -msgid "Trash original torrent files" -msgstr "Eliminar los ficheros torrent originales" - -msgid "Upload slots per torrent" -msgstr "Ranuras de subida por torrent" - -msgid "Watch directory" -msgstr "Directorio a vigilar" - -msgid "in minutes from midnight" -msgstr "en minutos para la media noche" - -msgid "preallocation" -msgstr "precolocación" - -msgid "uTP enabled" -msgstr "uTP activado" diff --git a/package/luci/applications/luci-app-transmission/po/fr/transmission.po b/package/luci/applications/luci-app-transmission/po/fr/transmission.po deleted file mode 100644 index 3125fc2751..0000000000 --- a/package/luci/applications/luci-app-transmission/po/fr/transmission.po +++ /dev/null @@ -1,280 +0,0 @@ -msgid "Alternative download speed" -msgstr "" - -msgid "Alternative speed enabled" -msgstr "" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/he/transmission.po b/package/luci/applications/luci-app-transmission/po/he/transmission.po deleted file mode 100644 index 3125fc2751..0000000000 --- a/package/luci/applications/luci-app-transmission/po/he/transmission.po +++ /dev/null @@ -1,280 +0,0 @@ -msgid "Alternative download speed" -msgstr "" - -msgid "Alternative speed enabled" -msgstr "" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/hu/transmission.po b/package/luci/applications/luci-app-transmission/po/hu/transmission.po deleted file mode 100644 index 040f83802e..0000000000 --- a/package/luci/applications/luci-app-transmission/po/hu/transmission.po +++ /dev/null @@ -1,300 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-04-17 20:30+0200\n" -"PO-Revision-Date: 2012-04-26 14:30+0200\n" -"Last-Translator: Gyula \n" -"Language-Team: LANGUAGE \n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Alternative download speed" -msgstr "Alternatív letöltési sebesség" - -msgid "Alternative speed enabled" -msgstr "Alternatív sebesség engedélyezve" - -msgid "Alternative speed time begin" -msgstr "Alternatív sebesség kezdő időpont" - -msgid "Alternative speed time day" -msgstr "Alternatív sebesség napok" - -msgid "Alternative speed time end" -msgstr "Alternatív sebesség záró időpont" - -msgid "Alternative speed timing enabled" -msgstr "Alternatív sebesség időzítés engedélyezve" - -msgid "Alternative upload speed" -msgstr "Alternatív feltöltési sebesség" - -msgid "Automatically start added torrents" -msgstr "Hozzáadott torrentek automatikus indítása" - -msgid "Bandwidth settings" -msgstr "Sávszélesség beállítások" - -msgid "Binding address IPv4" -msgstr "Rögzített IPv4 cím" - -msgid "Binding address IPv6" -msgstr "Rögzített IPv6 cím" - -msgid "Block list enabled" -msgstr "Tiltólista engedélyezés" - -msgid "Blocklist URL" -msgstr "Tiltólista URL" - -msgid "Blocklists" -msgstr "Tiltólista" - -msgid "Cache size in MB" -msgstr "Puffer méret (MB)" - -msgid "Config file directory" -msgstr "Beállítási fájl könyvtára" - -msgid "DHT enabled" -msgstr "DHT engedélyezve" - -msgid "Debug" -msgstr "Nyomkövetés" - -msgid "Download directory" -msgstr "Letöltési könyvtár" - -msgid "Download queue enabled" -msgstr "Letöltési sor engedélyezve" - -msgid "Download queue size" -msgstr "Letöltési sor mérete" - -msgid "Enable watch directory" -msgstr "Figyelt könyvtár(aut. indítás)" - -msgid "Enabled" -msgstr "Engedélyezve" - -msgid "Encryption" -msgstr "Titkosítás" - -msgid "Error" -msgstr "Hiba" - -msgid "Fast" -msgstr "Gyors" - -msgid "Files and Locations" -msgstr "Fájlok és helyek" - -msgid "Forced" -msgstr "Erőltetve" - -msgid "Full" -msgstr "Teljes" - -msgid "Global peer limit" -msgstr "Globális partnerkorlát" - -msgid "Global settings" -msgstr "Globális beálllítások" - -msgid "Idle seeding limit" -msgstr "Üresjárati seedkorlát" - -msgid "Idle seeding limit enabled" -msgstr "Üresjárati seedkorlát engedélyezése" - -msgid "Incomplete directory" -msgstr "Befejezetlen fájlok mappája" - -msgid "Incomplete directory enabled" -msgstr "Befejezetlen fájlok mappájának engedélyezése" - -msgid "Info" -msgstr "Infó" - -msgid "LPD enabled" -msgstr "LPD engedélyezése" - -msgid "Lazy bitfield enabled" -msgstr "Lazy bitfield engedélyezése" - -msgid "Message level" -msgstr "Naplózási szint" - -msgid "Miscellaneous" -msgstr "Egyéb" - -msgid "None" -msgstr "Nincs" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" -"Szám/bitmező. Kezdj 0-val, és minden napnál, amikor az ütemezőt be akarod " -"kapcsolni, adj hozzá egy értéket. Vasárnap - 1, Hétfő - 2, Kedd - 4, Szerda " -"- 8, Csütörtök - 16, Péntek - 32, Szombat - 64" - -msgid "Off" -msgstr "Ki" - -msgid "Open Web Interface" -msgstr "Webes felület megnyitása" - -msgid "PEX enabled" -msgstr "PEX engedélyezése" - -msgid "Peer Port settings" -msgstr "Partner port beállítások" - -msgid "Peer congestion algorithm" -msgstr "Partner torlódási algoritmus" - -msgid "Peer limit per torrent" -msgstr "Torrentenkénti partnerkorlát" - -msgid "Peer port" -msgstr "Partner port" - -msgid "Peer port random high" -msgstr "Véletlenszerű magas partner port" - -msgid "Peer port random low" -msgstr "Véletlenszerű alacsony partner port" - -msgid "Peer port random on start" -msgstr "Véletlenszerű partner port induláskor" - -msgid "Peer settings" -msgstr "Partner beállítások" - -msgid "Peer socket tos" -msgstr "Partner szolgáltatás típus" - -msgid "Port forwarding enabled" -msgstr "Portátirányítás engedélyezése" - -msgid "Preferred" -msgstr "Előnyben részesített" - -msgid "Prefetch enabled" -msgstr "Előtöltés engedélyezése" - -msgid "Queue stalled enabled" -msgstr "Elakadt sor engedélyezése" - -msgid "Queue stalled minutes" -msgstr "Elakadás időtartama" - -msgid "Queueing" -msgstr "Sorbaállítás" - -msgid "RPC URL" -msgstr "RPC URL" - -msgid "RPC authentication required" -msgstr "RPC azonosítás megkövetelése" - -msgid "RPC bind address" -msgstr "RPC cím rögzítése" - -msgid "RPC enabled" -msgstr "RPC engedélyezése" - -msgid "RPC password" -msgstr "RPC jelszó" - -msgid "RPC port" -msgstr "RPC port" - -msgid "RPC settings" -msgstr "RPC beállítások" - -msgid "RPC username" -msgstr "RPC felhasználónév" - -msgid "RPC whitelist" -msgstr "RPC fehérlista" - -msgid "RPC whitelist enabled" -msgstr "RPC fehérlista engedélyezése" - -msgid "Ratio limit" -msgstr "Aránykorlát" - -msgid "Ratio limit enabled" -msgstr "Aránykorlát engedélyezése" - -msgid "Rename partial files" -msgstr "Félkész fájlok átnevezése" - -msgid "Run daemon as user" -msgstr "Daemon indítása, mint" - -msgid "Scheduling" -msgstr "Ütemezés" - -msgid "Scrape paused torrents enabled" -msgstr "Álló torrentek adatainak lekérdezése" - -msgid "Script torrent done enabled" -msgstr "Letöltés utáni script engedélyezése" - -msgid "Script torrent done filename" -msgstr "Letöltés utáni script fájlneve" - -msgid "Seed queue enabled" -msgstr "Feltöltési sor engedélyezése" - -msgid "Seed queue size" -msgstr "Feltöltési sor mérete" - -msgid "Speed limit down" -msgstr "Letöltési korlát" - -msgid "Speed limit down enabled" -msgstr "Letöltési korlát engedélyezése" - -msgid "Speed limit up" -msgstr "Feltöltési korlát" - -msgid "Speed limit up enabled" -msgstr "Feltöltési korlát engedélyezése" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"A Transmission daemon egy egyszerű bittorrent kliens, itt módosíthatod a " -"beállításait." - -msgid "Trash original torrent files" -msgstr "Eredeti torrent fájlok eldobása" - -msgid "Upload slots per torrent" -msgstr "Feltöltési szálak torrentenként" - -msgid "Watch directory" -msgstr "Figyelt könyvtár" - -msgid "in minutes from midnight" -msgstr "percek száma éjféltől" - -msgid "preallocation" -msgstr "előre lefoglalás" - -msgid "uTP enabled" -msgstr "uTP engedélyezése" diff --git a/package/luci/applications/luci-app-transmission/po/it/transmission.po b/package/luci/applications/luci-app-transmission/po/it/transmission.po deleted file mode 100644 index 1008fad277..0000000000 --- a/package/luci/applications/luci-app-transmission/po/it/transmission.po +++ /dev/null @@ -1,295 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-09 21:28+0200\n" -"PO-Revision-Date: 2013-02-09 21:30+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Velocità di download alternativo" - -msgid "Alternative speed enabled" -msgstr "Velocità alternativa attivata" - -msgid "Alternative speed time begin" -msgstr "Tempo di velocità alternativa inizio" - -msgid "Alternative speed time day" -msgstr "Tempo di velocità alternativa giorno" - -msgid "Alternative speed time end" -msgstr "Tempo di velocità alternativa fine" - -msgid "Alternative speed timing enabled" -msgstr "Periodo di velocità alternativa attiva" - -msgid "Alternative upload speed" -msgstr "Velocità alternativa di upload" - -msgid "Automatically start added torrents" -msgstr "Avvia automaticamente i torrent aggiunti" - -msgid "Bandwidth settings" -msgstr "Impostazioni larghezza della banda" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/ja/transmission.po b/package/luci/applications/luci-app-transmission/po/ja/transmission.po deleted file mode 100644 index dded65038a..0000000000 --- a/package/luci/applications/luci-app-transmission/po/ja/transmission.po +++ /dev/null @@ -1,295 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-04-18 11:15+0200\n" -"PO-Revision-Date: 2013-10-05 17:17+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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" - -msgid "Alternative download speed" -msgstr "一時的な下り速度制限" - -msgid "Alternative speed enabled" -msgstr "一時的な速度制限機能を有効にする" - -msgid "Alternative speed time begin" -msgstr "一時的な速度制限 開始時間" - -msgid "Alternative speed time day" -msgstr "一時的な速度制限 制限日" - -msgid "Alternative speed time end" -msgstr "一時的な速度制限 終了時間" - -msgid "Alternative speed timing enabled" -msgstr "一時的な速度制限のスケジューリング機能を有効にする" - -msgid "Alternative upload speed" -msgstr "一時的な上り速度制限" - -msgid "Automatically start added torrents" -msgstr "追加されたtorrent は自動的に開始する" - -msgid "Bandwidth settings" -msgstr "帯域設定" - -msgid "Binding address IPv4" -msgstr "バインドするIPv4 アドレス" - -msgid "Binding address IPv6" -msgstr "バインドするIPv6 アドレス" - -msgid "Block list enabled" -msgstr "ブロックリストを有効にする" - -msgid "Blocklist URL" -msgstr "ブロックリスト URL" - -msgid "Blocklists" -msgstr "ブロックリスト" - -msgid "Cache size in MB" -msgstr "キャッシュサイズ (MB)" - -msgid "Config file directory" -msgstr "コンフィグファイル・ディレクトリ" - -msgid "DHT enabled" -msgstr "DHTを有効にする" - -msgid "Debug" -msgstr "デバッグ情報" - -msgid "Download directory" -msgstr "ダウンロード先のディレクトリ" - -msgid "Download queue enabled" -msgstr "ダウンロード・キュー機能を有効にする" - -msgid "Download queue size" -msgstr "ダウンロード・キューのサイズ" - -msgid "Enable watch directory" -msgstr "ディレクトリ監視機能を有効にする" - -msgid "Enabled" -msgstr "サービスを有効にする" - -msgid "Encryption" -msgstr "暗号化" - -msgid "Error" -msgstr "エラー情報" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "ファイルおよびロケーション設定" - -msgid "Forced" -msgstr "強制する" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "全体の最大ピア数" - -msgid "Global settings" -msgstr "グローバル設定" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "情報" - -msgid "LPD enabled" -msgstr "LPD を有効にする" - -msgid "Lazy bitfield enabled" -msgstr "Lazy bitfield を有効にする" - -msgid "Message level" -msgstr "メッセージレベル" - -msgid "Miscellaneous" -msgstr "詳細設定" - -msgid "None" -msgstr "なし" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "使用しない" - -msgid "Open Web Interface" -msgstr "WEBブラウザで開く" - -msgid "PEX enabled" -msgstr "PEX を有効にする" - -msgid "Peer Port settings" -msgstr "ピアポート設定" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "torrent 毎の最大ピア数" - -msgid "Peer port" -msgstr "ピアポート" - -msgid "Peer port random high" -msgstr "ポートをランダムに選択する際の上限値" - -msgid "Peer port random low" -msgstr "ポートをランダムに選択する際の下限値" - -msgid "Peer port random on start" -msgstr "サービススタート時にポートをランダムに選択する" - -msgid "Peer settings" -msgstr "ピア設定" - -msgid "Peer socket tos" -msgstr "ピアソケットのTOS" - -msgid "Port forwarding enabled" -msgstr "ポート転送を有効にする" - -msgid "Preferred" -msgstr "優先する" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "キューイング設定" - -msgid "RPC URL" -msgstr "RPC URL" - -msgid "RPC authentication required" -msgstr "RPC 認証機能を有効にする" - -msgid "RPC bind address" -msgstr "RPC バインドアドレス" - -msgid "RPC enabled" -msgstr "RPC機能を有効にする" - -msgid "RPC password" -msgstr "RPC パスワード" - -msgid "RPC port" -msgstr "RPC ポート" - -msgid "RPC settings" -msgstr "RPC 設定" - -msgid "RPC username" -msgstr "RPC ユーザー名" - -msgid "RPC whitelist" -msgstr "RPC ホワイトリスト" - -msgid "RPC whitelist enabled" -msgstr "RPC ホワイトリスト機能を有効にする" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "デーモンのユーザー権限設定" - -msgid "Scheduling" -msgstr "スケジューラ設定" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "torrent 完了時にスクリプトを実行する" - -msgid "Script torrent done filename" -msgstr "torrent 完了時に実行するスクリプト・ファイルパス" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "下り速度制限" - -msgid "Speed limit down enabled" -msgstr "下り速度制限機能を有効にする" - -msgid "Speed limit up" -msgstr "上り速度制限" - -msgid "Speed limit up enabled" -msgstr "上り速度制限機能を有効にする" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "Transmissionは、シンプルなbittorrentクライアントです。" - -msgid "Trash original torrent files" -msgstr "オリジナルのtorrent ファイルをゴミ箱に移動する" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "監視するディレクトリ" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "uTP を有効にする" diff --git a/package/luci/applications/luci-app-transmission/po/ms/transmission.po b/package/luci/applications/luci-app-transmission/po/ms/transmission.po deleted file mode 100644 index 3125fc2751..0000000000 --- a/package/luci/applications/luci-app-transmission/po/ms/transmission.po +++ /dev/null @@ -1,280 +0,0 @@ -msgid "Alternative download speed" -msgstr "" - -msgid "Alternative speed enabled" -msgstr "" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/no/transmission.po b/package/luci/applications/luci-app-transmission/po/no/transmission.po deleted file mode 100644 index cb8684181c..0000000000 --- a/package/luci/applications/luci-app-transmission/po/no/transmission.po +++ /dev/null @@ -1,298 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-25 21:10+0200\n" -"PO-Revision-Date: 2013-04-05 09:10+0200\n" -"Last-Translator: protx \n" -"Language-Team: LANGUAGE \n" -"Language: no\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Alternativ nedlastingshastighet" - -msgid "Alternative speed enabled" -msgstr "Alternativ hastighet aktivert" - -msgid "Alternative speed time begin" -msgstr "Alternativ hastighet start tid" - -msgid "Alternative speed time day" -msgstr "Alternativ hastighet tid pÃ¥ dagen" - -msgid "Alternative speed time end" -msgstr "Alternativ hastighet tid nÃ¥r ferdig" - -msgid "Alternative speed timing enabled" -msgstr "Alternativ hastighet tidspunkt aktivert" - -msgid "Alternative upload speed" -msgstr "Alternativ opplastingshastighet" - -msgid "Automatically start added torrents" -msgstr "Start automatisk torrents som legges til" - -msgid "Bandwidth settings" -msgstr "BÃ¥ndbredde innstillinger" - -msgid "Binding address IPv4" -msgstr "Bindinger IPv4 adresse" - -msgid "Binding address IPv6" -msgstr "Bindinger IPv6 adresse" - -msgid "Block list enabled" -msgstr "Blokkeringsliste aktivert" - -msgid "Blocklist URL" -msgstr "Blokkeringsliste URL" - -msgid "Blocklists" -msgstr "Blokkeringsliste" - -msgid "Cache size in MB" -msgstr "Bufferstørrelse i MB" - -msgid "Config file directory" -msgstr "Mappe for konfigurasjonsfil" - -msgid "DHT enabled" -msgstr "DHT aktivert" - -msgid "Debug" -msgstr "Feilsøking" - -msgid "Download directory" -msgstr "Nedlastingsmappe" - -msgid "Download queue enabled" -msgstr "Nedlastingkø aktivert" - -msgid "Download queue size" -msgstr "Nedlastingkø størrelse" - -msgid "Enable watch directory" -msgstr "Aktiver overvÃ¥king av torrent mappe" - -msgid "Enabled" -msgstr "Aktivert" - -msgid "Encryption" -msgstr "Kryptering" - -msgid "Error" -msgstr "Feil" - -msgid "Fast" -msgstr "Rask" - -msgid "Files and Locations" -msgstr "Filer og plasseringer" - -msgid "Forced" -msgstr "Tvunget" - -msgid "Full" -msgstr "Full" - -msgid "Global peer limit" -msgstr "Global peer grense" - -msgid "Global settings" -msgstr "Globale innstillinger" - -msgid "Idle seeding limit" -msgstr "Inaktiv seeding grense" - -msgid "Idle seeding limit enabled" -msgstr "Inaktiv seeding grense aktivert" - -msgid "Incomplete directory" -msgstr "Ufullstendig mappe" - -msgid "Incomplete directory enabled" -msgstr "Ufullstendig mappe aktivert" - -msgid "Info" -msgstr "Info" - -msgid "LPD enabled" -msgstr "LPD aktivert" - -msgid "Lazy bitfield enabled" -msgstr "Lazy bitfield aktivert" - -msgid "Message level" -msgstr "NivÃ¥ for meldinger" - -msgid "Miscellaneous" -msgstr "Diverse" - -msgid "None" -msgstr "Ingen" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" -"Nummer/bitfield. Start med 0, og for hver dag en vil at planleggeren skal " -"være aktivert legger en til en verdi. For Søndag - 1, Mandag - 2, Tirsdag - " -"4, Onsdag - 8, Torsdag - 16, Fredag - 32, Lørdag - 64" - -msgid "Off" -msgstr "Av" - -msgid "Open Web Interface" -msgstr "Åpne webgrensesnitt" - -msgid "PEX enabled" -msgstr "PEX aktivert" - -msgid "Peer Port settings" -msgstr "Peer port innstillinger" - -msgid "Peer congestion algorithm" -msgstr "Peer congestion algoritme" - -msgid "Peer limit per torrent" -msgstr "Peer grense per torrent" - -msgid "Peer port" -msgstr "Peer port" - -msgid "Peer port random high" -msgstr "Peer port tilfeldig høy" - -msgid "Peer port random low" -msgstr "Peer port tilfeldig lav" - -msgid "Peer port random on start" -msgstr "Peer port tilfeldig ved start" - -msgid "Peer settings" -msgstr "Peer innstillinger" - -msgid "Peer socket tos" -msgstr "Peer tilslutning tos" - -msgid "Port forwarding enabled" -msgstr "Port videresending aktivert" - -msgid "Preferred" -msgstr "Prioritert" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/pl/transmission.po b/package/luci/applications/luci-app-transmission/po/pl/transmission.po deleted file mode 100644 index f010d56da8..0000000000 --- a/package/luci/applications/luci-app-transmission/po/pl/transmission.po +++ /dev/null @@ -1,302 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-04-19 21:20+0200\n" -"PO-Revision-Date: 2014-02-25 18:13+0200\n" -"Last-Translator: TheTranslator2238 \n" -"Language-Team: LANGUAGE \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Alternatywna prędkość pobierania" - -msgid "Alternative speed enabled" -msgstr "Prędkość alternatywna włączona" - -msgid "Alternative speed time begin" -msgstr "Godzina włączenia prędkości alternatywnej" - -msgid "Alternative speed time day" -msgstr "Dzień prędkości alternatywnej" - -msgid "Alternative speed time end" -msgstr "Godzina wyłączenia prędkości alternatywnej" - -msgid "Alternative speed timing enabled" -msgstr "Włączanie prędkości alternatywnej w podanym czasie" - -msgid "Alternative upload speed" -msgstr "Alternatywna prędkość wysyłania" - -msgid "Automatically start added torrents" -msgstr "Automatyczne rozpoczęcie pobierania nowych torrentów" - -msgid "Bandwidth settings" -msgstr "Ustawienia przepustowości" - -msgid "Binding address IPv4" -msgstr "Przypisanie adresu IPv4" - -msgid "Binding address IPv6" -msgstr "Przypisanie adresu IPv6" - -msgid "Block list enabled" -msgstr "Lista blokowania włączona" - -msgid "Blocklist URL" -msgstr "URL listy blokowania" - -msgid "Blocklists" -msgstr "Listy blokowania" - -msgid "Cache size in MB" -msgstr "Wielkość cache w MB" - -msgid "Config file directory" -msgstr "Katalog z plikiem konfiguracyjnym" - -msgid "DHT enabled" -msgstr "DHT włączone" - -msgid "Debug" -msgstr "Debug" - -msgid "Download directory" -msgstr "Katalog pobierania" - -msgid "Download queue enabled" -msgstr "Kolejka pobierania włączona" - -msgid "Download queue size" -msgstr "Rozmiar kolejki pobierania" - -msgid "Enable watch directory" -msgstr "Włącz folder obserwowany" - -msgid "Enabled" -msgstr "Włączone" - -msgid "Encryption" -msgstr "Szyfrowanie" - -msgid "Error" -msgstr "Błąd" - -msgid "Fast" -msgstr "Szybko" - -msgid "Files and Locations" -msgstr "Pliki i położenia" - -msgid "Forced" -msgstr "Wymuszone" - -msgid "Full" -msgstr "Pełne" - -msgid "Global peer limit" -msgstr "Globalny limit peerów" - -msgid "Global settings" -msgstr "Ustawienia globalne" - -msgid "Idle seeding limit" -msgstr "Limit przesyłu w bezczynności" - -msgid "Idle seeding limit enabled" -msgstr "Włączony limit transferu podczas bezczynności" - -msgid "Incomplete directory" -msgstr "Niekompletny katalog" - -msgid "Incomplete directory enabled" -msgstr "Opcja \"Niekompletny katalog\" włączona" - -msgid "Info" -msgstr "Info" - -msgid "LPD enabled" -msgstr "LPD włączone" - -msgid "Lazy bitfield enabled" -msgstr "Lazy bitfield włączone" - -msgid "Message level" -msgstr "Poziom komunikatów" - -msgid "Miscellaneous" -msgstr "Różności" - -msgid "None" -msgstr "Å»aden" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" -"Liczba/pole bitowe. Zaczyna się od 0, następnie dla każdego dnia dla jakiego " -"chcesz włączyć harmonogram dodaj odpowiednią wartość. Niedziela - 1, " -"Poniedziałek - 2, Wtorek - 4, Środa - 8, Czwartek - 16, Piątek - 32, sobota " -"- 64." - -msgid "Off" -msgstr "Wyłączone" - -msgid "Open Web Interface" -msgstr "Otwórz interfejs Web" - -msgid "PEX enabled" -msgstr "PEX włączony" - -msgid "Peer Port settings" -msgstr "Ustawienia portu peer" - -msgid "Peer congestion algorithm" -msgstr "Algorytm przeciążenia peer" - -msgid "Peer limit per torrent" -msgstr "Limit peer'a dla torrenta" - -msgid "Peer port" -msgstr "Port peer" - -msgid "Peer port random high" -msgstr "Maksymalny port peer`a" - -msgid "Peer port random low" -msgstr "Minimalny port peer`a" - -msgid "Peer port random on start" -msgstr "Losowy port peer`a przy starcie" - -msgid "Peer settings" -msgstr "Ustawienia peer" - -msgid "Peer socket tos" -msgstr "Typ gniazda TOS peer`a" - -msgid "Port forwarding enabled" -msgstr "Przekazywanie portów włączone" - -msgid "Preferred" -msgstr "Preferowany" - -msgid "Prefetch enabled" -msgstr "Pobieranie wstępne włączone" - -msgid "Queue stalled enabled" -msgstr "Blokada kolejki włączona" - -msgid "Queue stalled minutes" -msgstr "Blokada kolejki w min." - -msgid "Queueing" -msgstr "Kolejkowanie" - -msgid "RPC URL" -msgstr "Adres URL RPC" - -msgid "RPC authentication required" -msgstr "Wymagana autoryzacja RPC" - -msgid "RPC bind address" -msgstr "Adres węzła RPC" - -msgid "RPC enabled" -msgstr "RPC włączone" - -msgid "RPC password" -msgstr "Hasło RPC" - -msgid "RPC port" -msgstr "Port RPC" - -msgid "RPC settings" -msgstr "Ustawienia RPC" - -msgid "RPC username" -msgstr "Nazwa użytkownika RPC" - -msgid "RPC whitelist" -msgstr "Biała lista RPC" - -msgid "RPC whitelist enabled" -msgstr "Biała lista RPC włączona" - -msgid "Ratio limit" -msgstr "Dopuszczalna wartość" - -msgid "Ratio limit enabled" -msgstr "Dopuszczalna wartość włączona" - -msgid "Rename partial files" -msgstr "Zmień nazwy plików częściowych" - -msgid "Run daemon as user" -msgstr "Włączaj demona jako użytkownik" - -msgid "Scheduling" -msgstr "Harmonogramowanie" - -msgid "Scrape paused torrents enabled" -msgstr "Zdzieranie wstrzymanych torentów włączone" - -msgid "Script torrent done enabled" -msgstr "Włączenie wykonywania skryptu po zakończeniu pobierania" - -msgid "Script torrent done filename" -msgstr "Nazwa skryptu wykonywanego po zakończeniu pobierania" - -msgid "Seed queue enabled" -msgstr "Kolejkowanie Seed'ów włączone" - -msgid "Seed queue size" -msgstr "Rozmiar kolejki Seed'ów" - -msgid "Speed limit down" -msgstr "Limit prędkości pobierania" - -msgid "Speed limit down enabled" -msgstr "Limit prędkości pobierania włączony" - -msgid "Speed limit up" -msgstr "Limit prędkości wysyłania" - -msgid "Speed limit up enabled" -msgstr "Limit prędkości wysyłania włączony" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"Demon Transmission jest prostym klientem BitTorrent. Tutaj możesz zmienić " -"jego ustawienia." - -msgid "Trash original torrent files" -msgstr "Usuń oryginalne pliki torrent" - -msgid "Upload slots per torrent" -msgstr "Liczba połączeń na plik torrent - wysyłanie" - -msgid "Watch directory" -msgstr "Obserwowany folder" - -msgid "in minutes from midnight" -msgstr "w minutach od północy" - -msgid "preallocation" -msgstr "prealokacja" - -msgid "uTP enabled" -msgstr "uTP włączone" diff --git a/package/luci/applications/luci-app-transmission/po/pt-br/transmission.po b/package/luci/applications/luci-app-transmission/po/pt-br/transmission.po deleted file mode 100644 index 82ba6a46e4..0000000000 --- a/package/luci/applications/luci-app-transmission/po/pt-br/transmission.po +++ /dev/null @@ -1,300 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-06 16:27+0200\n" -"PO-Revision-Date: 2013-04-06 22:58+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Velocidade alternativa para baixar" - -msgid "Alternative speed enabled" -msgstr "Velocidade alternativa ativada" - -msgid "Alternative speed time begin" -msgstr "Hora de início da velocidade alternativa" - -msgid "Alternative speed time day" -msgstr "Dia da velocidade alternativa" - -msgid "Alternative speed time end" -msgstr "Hora final da velocidade alternativa" - -msgid "Alternative speed timing enabled" -msgstr "Temporização da velocidade alternativa habilitada" - -msgid "Alternative upload speed" -msgstr "Velocidade de subida alternativa" - -msgid "Automatically start added torrents" -msgstr "Iniciar automaticamente os torrents adicionados" - -msgid "Bandwidth settings" -msgstr "Configurações da velocidade do enlace" - -msgid "Binding address IPv4" -msgstr "Endereço de escuta IPv4" - -msgid "Binding address IPv6" -msgstr "Endereço de escuta IPv6" - -msgid "Block list enabled" -msgstr "Lista de Bloqueios habilitada" - -msgid "Blocklist URL" -msgstr "URL da lista de bloqueio" - -msgid "Blocklists" -msgstr "Lista de Bloqueio" - -msgid "Cache size in MB" -msgstr "Tamanho em MB do cache" - -msgid "Config file directory" -msgstr "Diretório dos arquivos de configuração" - -msgid "DHT enabled" -msgstr "DHT habilitado" - -msgid "Debug" -msgstr "Depuração" - -msgid "Download directory" -msgstr "Diretório de arquivos baixados" - -msgid "Download queue enabled" -msgstr "Fila para baixar habilitada" - -msgid "Download queue size" -msgstr "Tamanho da fila para baixar" - -msgid "Enable watch directory" -msgstr "Habilitar monitoramento de diretório" - -msgid "Enabled" -msgstr "Habilitar" - -msgid "Encryption" -msgstr "Cifragem" - -msgid "Error" -msgstr "Erro" - -msgid "Fast" -msgstr "Rápido" - -msgid "Files and Locations" -msgstr "Arquivos e Locais" - -msgid "Forced" -msgstr "Forçado" - -msgid "Full" -msgstr "Cheio" - -msgid "Global peer limit" -msgstr "Limite global de parceiros conectados" - -msgid "Global settings" -msgstr "Configurações Globais" - -msgid "Idle seeding limit" -msgstr "Limite para parar de semear se ocioso" - -msgid "Idle seeding limit enabled" -msgstr "Habilitar limite para parar de semear se ocioso" - -msgid "Incomplete directory" -msgstr "Diretório de incompletos" - -msgid "Incomplete directory enabled" -msgstr "Ativado diretório para arquivos incompletos" - -msgid "Info" -msgstr "Informação" - -msgid "LPD enabled" -msgstr "LPD habilitado" - -msgid "Lazy bitfield enabled" -msgstr "Envio de campo de bits incompletos habilitado" - -msgid "Message level" -msgstr "Nível de mensagens" - -msgid "Miscellaneous" -msgstr "Diversos" - -msgid "None" -msgstr "Nada" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" -"Número/Campo de bits. Comece com 0 e, então, para cada dia você quer o " -"agendador habilitado, adicione um valor. Para domingo - 1, segunda-feira - " -"2, terça-feira - 4, quarta-feira - 8, quinta-feira - 16, sexta-feira - 32, " -"Sábado - 64" - -msgid "Off" -msgstr "Desligado" - -msgid "Open Web Interface" -msgstr "Abrir interface Web" - -msgid "PEX enabled" -msgstr "PEX habilitado" - -msgid "Peer Port settings" -msgstr "Configuração de porta do parceiro" - -msgid "Peer congestion algorithm" -msgstr "Algoritmo de congestionamento dos parceiro" - -msgid "Peer limit per torrent" -msgstr "Limite de torrents por parceiro" - -msgid "Peer port" -msgstr "Porta do parceiro" - -msgid "Peer port random high" -msgstr "Limite superior da porta aleatória do parceiro" - -msgid "Peer port random low" -msgstr "Limite inferior da porta aleatória do parceiro" - -msgid "Peer port random on start" -msgstr "Porta aleatória inicial do parceiro" - -msgid "Peer settings" -msgstr "Configuração do parceiro" - -msgid "Peer socket tos" -msgstr "TOS da conexão do parceiro" - -msgid "Port forwarding enabled" -msgstr "Encaminhamento de porta ativado" - -msgid "Preferred" -msgstr "Preferencial" - -msgid "Prefetch enabled" -msgstr "Adiantamento de leitura de disco habilitado" - -msgid "Queue stalled enabled" -msgstr "Parada de fila habilitada" - -msgid "Queue stalled minutes" -msgstr "Parada de fila em minutos" - -msgid "Queueing" -msgstr "Filas" - -msgid "RPC URL" -msgstr "RPC URL" - -msgid "RPC authentication required" -msgstr "RPC requer autenticação" - -msgid "RPC bind address" -msgstr "Endereço de escuta do RPC" - -msgid "RPC enabled" -msgstr "RPC habilitado" - -msgid "RPC password" -msgstr "Senha do RPC" - -msgid "RPC port" -msgstr "Porta do RPC" - -msgid "RPC settings" -msgstr "Configuração do RPC" - -msgid "RPC username" -msgstr "Nome do usuario do RPC" - -msgid "RPC whitelist" -msgstr "Lista branca do RPC" - -msgid "RPC whitelist enabled" -msgstr "Lista branca do RPC habilitada" - -msgid "Ratio limit" -msgstr "Limite da relação" - -msgid "Ratio limit enabled" -msgstr "Limite da relação habilitado" - -msgid "Rename partial files" -msgstr "Renomear arquivos parciais" - -msgid "Run daemon as user" -msgstr "Executar serviço como usuário" - -msgid "Scheduling" -msgstr "Agendamento" - -msgid "Scrape paused torrents enabled" -msgstr "Busca de informações de torrents pausados ​​habilitada" - -msgid "Script torrent done enabled" -msgstr "Script de conclusão de torrent habilitado" - -msgid "Script torrent done filename" -msgstr "Nome do arquivo do script de conclusão de torrent" - -msgid "Seed queue enabled" -msgstr "Fila de semeadura habilitada" - -msgid "Seed queue size" -msgstr "Tamanho da fila de semeadura" - -msgid "Speed limit down" -msgstr "Limite inferior de velocidade" - -msgid "Speed limit down enabled" -msgstr "Limite inferior de velocidade habilitado" - -msgid "Speed limit up" -msgstr "Limite superior de velocidade" - -msgid "Speed limit up enabled" -msgstr "Limite superior de velocidade habilitado" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"O Transmission é um cliente BitTorrent simples, aqui você pode configurá-lo." - -msgid "Trash original torrent files" -msgstr "Apague os arquivos torrent originais" - -msgid "Upload slots per torrent" -msgstr "Vagas para conexão de envio por torrent" - -msgid "Watch directory" -msgstr "Monitorar diretório" - -msgid "in minutes from midnight" -msgstr "em minutos a partir da meia-noite" - -msgid "preallocation" -msgstr "pré-alocação" - -msgid "uTP enabled" -msgstr "uTP habilitado" diff --git a/package/luci/applications/luci-app-transmission/po/pt/transmission.po b/package/luci/applications/luci-app-transmission/po/pt/transmission.po deleted file mode 100644 index 512ca970dc..0000000000 --- a/package/luci/applications/luci-app-transmission/po/pt/transmission.po +++ /dev/null @@ -1,297 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-05-31 23:40+0200\n" -"PO-Revision-Date: 2013-05-31 23:47+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Velocidade de download alternativa" - -msgid "Alternative speed enabled" -msgstr "Velocidade alternativa activada" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "Definições de largura de banda" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "Directório do ficheiro de configuração" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "Depurar" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "Encriptação" - -msgid "Error" -msgstr "Erro" - -msgid "Fast" -msgstr "Rápido" - -msgid "Files and Locations" -msgstr "Ficheiros e Localizações" - -msgid "Forced" -msgstr "Forçado" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "Info" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "Nenhum" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "Desligado" - -msgid "Open Web Interface" -msgstr "Abrir Interface Web" - -msgid "PEX enabled" -msgstr "PEX ativado" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "URL RPC" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "RPC ativado" - -msgid "RPC password" -msgstr "Password RPC" - -msgid "RPC port" -msgstr "Porta RPC" - -msgid "RPC settings" -msgstr "Definições RPC" - -msgid "RPC username" -msgstr "Utilizador RPC" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "Executar serviço como" - -msgid "Scheduling" -msgstr "Agendamento" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"Transmission é um client simples de bittorrent, aqui pode configurar as " -"definições." - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/ro/transmission.po b/package/luci/applications/luci-app-transmission/po/ro/transmission.po deleted file mode 100644 index 8e0fc7dcce..0000000000 --- a/package/luci/applications/luci-app-transmission/po/ro/transmission.po +++ /dev/null @@ -1,296 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-09-25 19:17+0200\n" -"PO-Revision-Date: 2014-06-28 19:26+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: LANGUAGE \n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Viteză de download alternativă" - -msgid "Alternative speed enabled" -msgstr "Viteză alternativă activată" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "Viteza de upload alternativa" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "Setari latime de banda" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "Activat" - -msgid "Encryption" -msgstr "Criptare" - -msgid "Error" -msgstr "Eroare" - -msgid "Fast" -msgstr "Rapid" - -msgid "Files and Locations" -msgstr "Fişiere şi LocaÅ£ii" - -msgid "Forced" -msgstr "ForÅ£at" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "Setari globale" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "Informatii" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "Preferat" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/ru/transmission.po b/package/luci/applications/luci-app-transmission/po/ru/transmission.po deleted file mode 100644 index fac9510a59..0000000000 --- a/package/luci/applications/luci-app-transmission/po/ru/transmission.po +++ /dev/null @@ -1,306 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: transmission\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-08-15 17:35+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Alternative download speed" -msgstr "Альтернативная скорость загрузки" - -msgid "Alternative speed enabled" -msgstr "Альтернативная скорость включена" - -msgid "Alternative speed time begin" -msgstr "Время начала альтернативной скорости" - -msgid "Alternative speed time day" -msgstr "День альтернативной скорости" - -msgid "Alternative speed time end" -msgstr "Время окончания альтернативной скорости" - -msgid "Alternative speed timing enabled" -msgstr "Расписание альтернативной скорости включено" - -msgid "Alternative upload speed" -msgstr "Альтернативная скорость отдачи" - -msgid "Automatically start added torrents" -msgstr "Автоматически запускать добавленные торренты" - -msgid "Bandwidth settings" -msgstr "Настройки скорости" - -msgid "Binding address IPv4" -msgstr "Привязанный адрес IPv4" - -msgid "Binding address IPv6" -msgstr "Привязанный адрес IPv6" - -msgid "Block list enabled" -msgstr "Список блокировок включен" - -msgid "Blocklist URL" -msgstr "URL списка блокировок" - -msgid "Blocklists" -msgstr "Списки блокировок" - -msgid "Cache size in MB" -msgstr "Размер кэша (МБ)" - -msgid "Config file directory" -msgstr "Папка файла конфигурации" - -msgid "DHT enabled" -msgstr "DHT включен" - -msgid "Debug" -msgstr "Отладка" - -msgid "Download directory" -msgstr "Папка для загрузок" - -msgid "Download queue enabled" -msgstr "Очередь загрузок включена" - -msgid "Download queue size" -msgstr "Размер очереди загрузок" - -msgid "Enable watch directory" -msgstr "Включить папку поиска" - -msgid "Enabled" -msgstr "Включено" - -msgid "Encryption" -msgstr "Шифрование" - -msgid "Error" -msgstr "Ошибка" - -msgid "Fast" -msgstr "Быстрый" - -msgid "Files and Locations" -msgstr "Файлы и пути" - -msgid "Forced" -msgstr "Принудительно" - -msgid "Full" -msgstr "Полный" - -msgid "Global peer limit" -msgstr "Глобальный лимит пиров" - -msgid "Global settings" -msgstr "Общие настройки" - -msgid "Idle seeding limit" -msgstr "Ограничение времени сидирования" - -msgid "Idle seeding limit enabled" -msgstr "Ограничение времени сидирования включено" - -msgid "Incomplete directory" -msgstr "Папка для не полностью загруженых файлов" - -msgid "Incomplete directory enabled" -msgstr "Папка для не полностью загруженых файлов включена" - -msgid "Info" -msgstr "Информация" - -msgid "LPD enabled" -msgstr "LPD включено" - -#, fuzzy -msgid "Lazy bitfield enabled" -msgstr "Lazy bitfield включен" - -msgid "Message level" -msgstr "Уровень сообщений" - -msgid "Miscellaneous" -msgstr "Прочее" - -msgid "None" -msgstr "Отсутствует" - -#, fuzzy -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" -"Номер/битовое поле. Начните с 0, затем для каждого дня, в который вы хотите " -"включить планировщик, добавьте значение. Для воскресенья - 1, понедельника - " -"2, вторника - 4, среды - 8, четверга - 16, пятницы - 32, субботы - 64." - -msgid "Off" -msgstr "Выключено" - -msgid "Open Web Interface" -msgstr "Открыть веб-интерфейс" - -msgid "PEX enabled" -msgstr "PEX включен" - -msgid "Peer Port settings" -msgstr "Настройки порта пира" - -msgid "Peer congestion algorithm" -msgstr "Алгоритм перегрузки пиров" - -msgid "Peer limit per torrent" -msgstr "Ограничение пиров на торрент" - -msgid "Peer port" -msgstr "Порт пира" - -msgid "Peer port random high" -msgstr "Наибольший случайный порт пира" - -msgid "Peer port random low" -msgstr "Наименьший случайный порт пира" - -msgid "Peer port random on start" -msgstr "Случайный порт пира при запуске" - -msgid "Peer settings" -msgstr "Настройки пира" - -msgid "Peer socket tos" -msgstr "Значение ToS сокета пира" - -msgid "Port forwarding enabled" -msgstr "Перенаправление портов включено" - -msgid "Preferred" -msgstr "Предпочитаемо" - -msgid "Prefetch enabled" -msgstr "Предвыборка включена" - -#, fuzzy -msgid "Queue stalled enabled" -msgstr "Приостановка очереди включена" - -#, fuzzy -msgid "Queue stalled minutes" -msgstr "Приостановка очереди (мин.)" - -msgid "Queueing" -msgstr "Обслуживание" - -msgid "RPC URL" -msgstr "URL RPC" - -msgid "RPC authentication required" -msgstr "Аутентификация RPC" - -msgid "RPC bind address" -msgstr "RPC-адрес" - -msgid "RPC enabled" -msgstr "RPC включен" - -msgid "RPC password" -msgstr "Пароль RPC" - -msgid "RPC port" -msgstr "Порт RPC" - -msgid "RPC settings" -msgstr "Настройки RPC" - -msgid "RPC username" -msgstr "Имя пользователя RPC" - -msgid "RPC whitelist" -msgstr "\"Белый\" список RPC" - -msgid "RPC whitelist enabled" -msgstr "\"Белый\" список RPC включен" - -msgid "Ratio limit" -msgstr "Коэффициент отдачи" - -msgid "Ratio limit enabled" -msgstr "Коэффициент отдачи включен" - -msgid "Rename partial files" -msgstr "Переименовывать незавершённые файлы" - -msgid "Run daemon as user" -msgstr "Запустить демон от пользователя" - -msgid "Scheduling" -msgstr "Планирование" - -msgid "Scrape paused torrents enabled" -msgstr "Производить scrape-запросы у приостановленных торрентов" - -msgid "Script torrent done enabled" -msgstr "Запуск скрипта после загрузки торрента включён" - -msgid "Script torrent done filename" -msgstr "Скрипт завершения загрузки" - -msgid "Seed queue enabled" -msgstr "Очередь сидов включена" - -msgid "Seed queue size" -msgstr "Размер очереди сидирования" - -msgid "Speed limit down" -msgstr "Лимит скорости загрузки" - -msgid "Speed limit down enabled" -msgstr "Лимит скорости загрузки включен" - -msgid "Speed limit up" -msgstr "Лимит скорости отдачи" - -msgid "Speed limit up enabled" -msgstr "Лимит скорости отдачи включен" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"Transmission - простой bittorrent-клиент. Здесь Вы можете настроить " -"параметры." - -msgid "Trash original torrent files" -msgstr "Удалить торрент-файлы" - -msgid "Upload slots per torrent" -msgstr "Кол-во слотов отдачи на торрент" - -msgid "Watch directory" -msgstr "Папка поиска" - -msgid "in minutes from midnight" -msgstr "в минутах от полуночи" - -msgid "preallocation" -msgstr "предраспределение" - -msgid "uTP enabled" -msgstr "uTP включен" diff --git a/package/luci/applications/luci-app-transmission/po/sk/transmission.po b/package/luci/applications/luci-app-transmission/po/sk/transmission.po deleted file mode 100644 index 4b4c3afd9a..0000000000 --- a/package/luci/applications/luci-app-transmission/po/sk/transmission.po +++ /dev/null @@ -1,290 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Alternative download speed" -msgstr "" - -msgid "Alternative speed enabled" -msgstr "" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/sv/transmission.po b/package/luci/applications/luci-app-transmission/po/sv/transmission.po deleted file mode 100644 index 324bdab033..0000000000 --- a/package/luci/applications/luci-app-transmission/po/sv/transmission.po +++ /dev/null @@ -1,293 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Alternative download speed" -msgstr "Alternativ nerladdningshastighet" - -msgid "Alternative speed enabled" -msgstr "Alternativ hastighet aktiverat" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "Alternativ uppladdningshastighet" - -msgid "Automatically start added torrents" -msgstr "Starta tillagda torrents automatiskt" - -msgid "Bandwidth settings" -msgstr "Inställningar för bandbredd" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "Blockeringslista aktiverad" - -msgid "Blocklist URL" -msgstr "Blockeringslistans URL" - -msgid "Blocklists" -msgstr "Blockeringslistor" - -msgid "Cache size in MB" -msgstr "Storlek pÃ¥ cache i MB" - -msgid "Config file directory" -msgstr "Ställ in fil-mapp" - -msgid "DHT enabled" -msgstr "DHT aktiverat" - -msgid "Debug" -msgstr "Felsök" - -msgid "Download directory" -msgstr "Nerladdningsmapp" - -msgid "Download queue enabled" -msgstr "Nerladdnings-kö aktiverad" - -msgid "Download queue size" -msgstr "Storlek pÃ¥ nerladdningskön" - -msgid "Enable watch directory" -msgstr "Aktivera övervakningsmapp" - -msgid "Enabled" -msgstr "Aktiverad" - -msgid "Encryption" -msgstr "Kryptering" - -msgid "Error" -msgstr "Fel" - -msgid "Fast" -msgstr "Snabb" - -msgid "Files and Locations" -msgstr "Filer och Platser" - -msgid "Forced" -msgstr "Tvingad" - -msgid "Full" -msgstr "Fullständig" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "Globala inställningar" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "Ej komplett mapp" - -msgid "Incomplete directory enabled" -msgstr "Ej komplett mapp aktiverad" - -msgid "Info" -msgstr "Info" - -msgid "LPD enabled" -msgstr "LPD aktiverat" - -msgid "Lazy bitfield enabled" -msgstr "Lazy bitfield aktiverat" - -msgid "Message level" -msgstr "MeddelandenivÃ¥" - -msgid "Miscellaneous" -msgstr "Diverse" - -msgid "None" -msgstr "Ingen" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "Av" - -msgid "Open Web Interface" -msgstr "Öppna webbgränssnittet" - -msgid "PEX enabled" -msgstr "PEX aktiverat" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "Föredraget" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "Köar" - -msgid "RPC URL" -msgstr "URL för RPC" - -msgid "RPC authentication required" -msgstr "RPC-autentisering krävs" - -msgid "RPC bind address" -msgstr "Bindningsadress för RPC" - -msgid "RPC enabled" -msgstr "RPC aktiverat" - -msgid "RPC password" -msgstr "Lösenord för RPC" - -msgid "RPC port" -msgstr "Port för RPC" - -msgid "RPC settings" -msgstr "Inställningar för RPC" - -msgid "RPC username" -msgstr "Användarnamn för RPC" - -msgid "RPC whitelist" -msgstr "Vitlista för RPC" - -msgid "RPC whitelist enabled" -msgstr "Vitlistan för RPC aktiverad" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "Döp om icke fullständiga filer" - -msgid "Run daemon as user" -msgstr "Kör demonen som en användare" - -msgid "Scheduling" -msgstr "Schemaläggning" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" -"Transmission-demonen är en enkel bittorrent-klient och här kan du ställa in " -"inställningarna." - -msgid "Trash original torrent files" -msgstr "Släng de ordinarie torrent-filerna i papperskorgen" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "Övervaka mapp" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "uTP aktiverat" diff --git a/package/luci/applications/luci-app-transmission/po/templates/transmission.pot b/package/luci/applications/luci-app-transmission/po/templates/transmission.pot deleted file mode 100644 index 5892abcad1..0000000000 --- a/package/luci/applications/luci-app-transmission/po/templates/transmission.pot +++ /dev/null @@ -1,283 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Alternative download speed" -msgstr "" - -msgid "Alternative speed enabled" -msgstr "" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/tr/transmission.po b/package/luci/applications/luci-app-transmission/po/tr/transmission.po deleted file mode 100644 index 5a4df01496..0000000000 --- a/package/luci/applications/luci-app-transmission/po/tr/transmission.po +++ /dev/null @@ -1,290 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Alternative download speed" -msgstr "" - -msgid "Alternative speed enabled" -msgstr "" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/uk/transmission.po b/package/luci/applications/luci-app-transmission/po/uk/transmission.po deleted file mode 100644 index 1736934420..0000000000 --- a/package/luci/applications/luci-app-transmission/po/uk/transmission.po +++ /dev/null @@ -1,296 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-13 16:16+0200\n" -"PO-Revision-Date: 2013-08-13 16:17+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: LANGUAGE \n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Alternative download speed" -msgstr "Альтернативна швидкість завантаження" - -msgid "Alternative speed enabled" -msgstr "Альтернативна швидкість увімкнути" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/vi/transmission.po b/package/luci/applications/luci-app-transmission/po/vi/transmission.po deleted file mode 100644 index 3125fc2751..0000000000 --- a/package/luci/applications/luci-app-transmission/po/vi/transmission.po +++ /dev/null @@ -1,280 +0,0 @@ -msgid "Alternative download speed" -msgstr "" - -msgid "Alternative speed enabled" -msgstr "" - -msgid "Alternative speed time begin" -msgstr "" - -msgid "Alternative speed time day" -msgstr "" - -msgid "Alternative speed time end" -msgstr "" - -msgid "Alternative speed timing enabled" -msgstr "" - -msgid "Alternative upload speed" -msgstr "" - -msgid "Automatically start added torrents" -msgstr "" - -msgid "Bandwidth settings" -msgstr "" - -msgid "Binding address IPv4" -msgstr "" - -msgid "Binding address IPv6" -msgstr "" - -msgid "Block list enabled" -msgstr "" - -msgid "Blocklist URL" -msgstr "" - -msgid "Blocklists" -msgstr "" - -msgid "Cache size in MB" -msgstr "" - -msgid "Config file directory" -msgstr "" - -msgid "DHT enabled" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Download directory" -msgstr "" - -msgid "Download queue enabled" -msgstr "" - -msgid "Download queue size" -msgstr "" - -msgid "Enable watch directory" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Fast" -msgstr "" - -msgid "Files and Locations" -msgstr "" - -msgid "Forced" -msgstr "" - -msgid "Full" -msgstr "" - -msgid "Global peer limit" -msgstr "" - -msgid "Global settings" -msgstr "" - -msgid "Idle seeding limit" -msgstr "" - -msgid "Idle seeding limit enabled" -msgstr "" - -msgid "Incomplete directory" -msgstr "" - -msgid "Incomplete directory enabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "LPD enabled" -msgstr "" - -msgid "Lazy bitfield enabled" -msgstr "" - -msgid "Message level" -msgstr "" - -msgid "Miscellaneous" -msgstr "" - -msgid "None" -msgstr "" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" - -msgid "Off" -msgstr "" - -msgid "Open Web Interface" -msgstr "" - -msgid "PEX enabled" -msgstr "" - -msgid "Peer Port settings" -msgstr "" - -msgid "Peer congestion algorithm" -msgstr "" - -msgid "Peer limit per torrent" -msgstr "" - -msgid "Peer port" -msgstr "" - -msgid "Peer port random high" -msgstr "" - -msgid "Peer port random low" -msgstr "" - -msgid "Peer port random on start" -msgstr "" - -msgid "Peer settings" -msgstr "" - -msgid "Peer socket tos" -msgstr "" - -msgid "Port forwarding enabled" -msgstr "" - -msgid "Preferred" -msgstr "" - -msgid "Prefetch enabled" -msgstr "" - -msgid "Queue stalled enabled" -msgstr "" - -msgid "Queue stalled minutes" -msgstr "" - -msgid "Queueing" -msgstr "" - -msgid "RPC URL" -msgstr "" - -msgid "RPC authentication required" -msgstr "" - -msgid "RPC bind address" -msgstr "" - -msgid "RPC enabled" -msgstr "" - -msgid "RPC password" -msgstr "" - -msgid "RPC port" -msgstr "" - -msgid "RPC settings" -msgstr "" - -msgid "RPC username" -msgstr "" - -msgid "RPC whitelist" -msgstr "" - -msgid "RPC whitelist enabled" -msgstr "" - -msgid "Ratio limit" -msgstr "" - -msgid "Ratio limit enabled" -msgstr "" - -msgid "Rename partial files" -msgstr "" - -msgid "Run daemon as user" -msgstr "" - -msgid "Scheduling" -msgstr "" - -msgid "Scrape paused torrents enabled" -msgstr "" - -msgid "Script torrent done enabled" -msgstr "" - -msgid "Script torrent done filename" -msgstr "" - -msgid "Seed queue enabled" -msgstr "" - -msgid "Seed queue size" -msgstr "" - -msgid "Speed limit down" -msgstr "" - -msgid "Speed limit down enabled" -msgstr "" - -msgid "Speed limit up" -msgstr "" - -msgid "Speed limit up enabled" -msgstr "" - -msgid "Transmission" -msgstr "" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "" - -msgid "Trash original torrent files" -msgstr "" - -msgid "Upload slots per torrent" -msgstr "" - -msgid "Watch directory" -msgstr "" - -msgid "in minutes from midnight" -msgstr "" - -msgid "preallocation" -msgstr "" - -msgid "uTP enabled" -msgstr "" diff --git a/package/luci/applications/luci-app-transmission/po/zh-cn/transmission.po b/package/luci/applications/luci-app-transmission/po/zh-cn/transmission.po deleted file mode 100644 index f4dba62591..0000000000 --- a/package/luci/applications/luci-app-transmission/po/zh-cn/transmission.po +++ /dev/null @@ -1,300 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-08 14:06+0200\n" -"PO-Revision-Date: 2017-10-29 15:56+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \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: Gtranslator 2.91.7\n" - -msgid "Alternative download speed" -msgstr "临时下载限速" - -msgid "Alternative speed enabled" -msgstr "临时限速已启用" - -msgid "Alternative speed time begin" -msgstr "计划限速始于" - -msgid "Alternative speed time day" -msgstr "计划限速日期" - -msgid "Alternative speed time end" -msgstr "计划限速止于" - -msgid "Alternative speed timing enabled" -msgstr "计划限速已启用" - -msgid "Alternative upload speed" -msgstr "临时上传速度" - -msgid "Automatically start added torrents" -msgstr "种子自动下载" - -msgid "Bandwidth settings" -msgstr "带宽配置" - -msgid "Binding address IPv4" -msgstr "绑定 IPv4 地址" - -msgid "Binding address IPv6" -msgstr "绑定 IPv6 地址" - -msgid "Block list enabled" -msgstr "阻止列表已启用" - -msgid "Blocklist URL" -msgstr "URL阻止清单" - -msgid "Blocklists" -msgstr "阻止清单" - -msgid "Cache size in MB" -msgstr "缓存大小(MB)" - -msgid "Config file directory" -msgstr "配置文件的目录" - -msgid "DHT enabled" -msgstr "启用 DHT" - -msgid "Debug" -msgstr "调试" - -msgid "Download directory" -msgstr "下载目录" - -msgid "Download queue enabled" -msgstr "下载队列已启用" - -msgid "Download queue size" -msgstr "下载队列大小" - -msgid "Enable watch directory" -msgstr "启用种子轮询目录" - -msgid "Enabled" -msgstr "已启用" - -msgid "Encryption" -msgstr "加密" - -msgid "Error" -msgstr "错误" - -msgid "Fast" -msgstr "快速" - -msgid "Files and Locations" -msgstr "文件和位置" - -msgid "Forced" -msgstr "强制" - -msgid "Full" -msgstr "全分配" - -msgid "Global peer limit" -msgstr "全局 Peer 限制" - -msgid "Global settings" -msgstr "全局设置" - -msgid "Idle seeding limit" -msgstr "空闲做种限时" - -msgid "Idle seeding limit enabled" -msgstr "空闲做种时间已启用" - -msgid "Incomplete directory" -msgstr "未完成目录" - -msgid "Incomplete directory enabled" -msgstr "未完成目录已启用" - -msgid "Info" -msgstr "信息" - -msgid "LPD enabled" -msgstr "LPD 已启用" - -msgid "Lazy bitfield enabled" -msgstr "位段延迟已启用" - -msgid "Message level" -msgstr "消息级别" - -msgid "Miscellaneous" -msgstr "其他参数" - -msgid "None" -msgstr "空" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" -"生效日期是对应日期的算术加和值。对应关系:周日-1、周一-2、周二-4、周三-8、周" -"四-16、周五-32、周六-64。" - -msgid "Off" -msgstr "关闭" - -msgid "Open Web Interface" -msgstr "打开 Web 管理界面" - -msgid "PEX enabled" -msgstr "PEX 已启用" - -msgid "Peer Port settings" -msgstr "Peer 端口设置" - -msgid "Peer congestion algorithm" -msgstr "Peer 拥塞算法" - -msgid "Peer limit per torrent" -msgstr "每个种子 Peer 限制数" - -msgid "Peer port" -msgstr "Peer 端口" - -msgid "Peer port random high" -msgstr "Peer 随机端口最大值" - -msgid "Peer port random low" -msgstr "Peer 随机端口最小值" - -msgid "Peer port random on start" -msgstr "Peer 端口随机" - -msgid "Peer settings" -msgstr "Peer 设置" - -msgid "Peer socket tos" -msgstr "Peer 套接字 tos 值" - -msgid "Port forwarding enabled" -msgstr "端口转发已启用" - -msgid "Preferred" -msgstr "优先" - -msgid "Prefetch enabled" -msgstr "预取缓存已启用" - -msgid "Queue stalled enabled" -msgstr "队列暂停已启用" - -msgid "Queue stalled minutes" -msgstr "队列暂停分钟" - -msgid "Queueing" -msgstr "队列" - -msgid "RPC URL" -msgstr "RPC URL" - -msgid "RPC authentication required" -msgstr "RPC 授权验证" - -msgid "RPC bind address" -msgstr "RPC 绑定地址" - -msgid "RPC enabled" -msgstr "RPC 已启用" - -msgid "RPC password" -msgstr "RPC 密码" - -msgid "RPC port" -msgstr "RPC 端口" - -msgid "RPC settings" -msgstr "RPC 配置" - -msgid "RPC username" -msgstr "RPC 用户名" - -msgid "RPC whitelist" -msgstr "RPC 白名单" - -msgid "RPC whitelist enabled" -msgstr "RPC 白名单已启用" - -msgid "Ratio limit" -msgstr "分享率限值" - -msgid "Ratio limit enabled" -msgstr "分享率限制已启用" - -msgid "Rename partial files" -msgstr "重命名未完成文件" - -msgid "Run daemon as user" -msgstr "用户组" - -msgid "Scheduling" -msgstr "计划任务" - -msgid "Scrape paused torrents enabled" -msgstr "忽略暂停种子已启用" - -msgid "Script torrent done enabled" -msgstr "种子完成时运行脚本已启用" - -msgid "Script torrent done filename" -msgstr "脚本文件名" - -msgid "Seed queue enabled" -msgstr "做种队列已启用" - -msgid "Seed queue size" -msgstr "做种队列大小" - -msgid "Speed limit down" -msgstr "下载限速" - -msgid "Speed limit down enabled" -msgstr "下载限速已启用" - -msgid "Speed limit up" -msgstr "上传限速" - -msgid "Speed limit up enabled" -msgstr "上传限速已启用" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "Transmission 是一个简单的 bittorrent 客户端,在这里您可以配置其设置。" - -msgid "Trash original torrent files" -msgstr "删除种子源文件" - -msgid "Upload slots per torrent" -msgstr "每个种子上传连接数" - -msgid "Watch directory" -msgstr "轮询种子目录" - -msgid "in minutes from midnight" -msgstr "从晚上 00:00 起的分钟数,限速到临时速度" - -msgid "preallocation" -msgstr "磁盘预分配策略" - -msgid "uTP enabled" -msgstr "uTP 已启用" diff --git a/package/luci/applications/luci-app-transmission/po/zh-tw/transmission.po b/package/luci/applications/luci-app-transmission/po/zh-tw/transmission.po deleted file mode 100644 index 304bfdad1e..0000000000 --- a/package/luci/applications/luci-app-transmission/po/zh-tw/transmission.po +++ /dev/null @@ -1,300 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-08 14:06+0200\n" -"PO-Revision-Date: 2017-10-29 15:56+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" - -msgid "Alternative download speed" -msgstr "臨時下載限速" - -msgid "Alternative speed enabled" -msgstr "臨時限速已啟用" - -msgid "Alternative speed time begin" -msgstr "計劃限速始於" - -msgid "Alternative speed time day" -msgstr "計劃限速日期" - -msgid "Alternative speed time end" -msgstr "計劃限速止於" - -msgid "Alternative speed timing enabled" -msgstr "計劃限速已啟用" - -msgid "Alternative upload speed" -msgstr "臨時上傳速度" - -msgid "Automatically start added torrents" -msgstr "種子自動下載" - -msgid "Bandwidth settings" -msgstr "頻寬配置" - -msgid "Binding address IPv4" -msgstr "繫結 IPv4 位址" - -msgid "Binding address IPv6" -msgstr "繫結 IPv6 位址" - -msgid "Block list enabled" -msgstr "阻止列表已啟用" - -msgid "Blocklist URL" -msgstr "URL阻止清單" - -msgid "Blocklists" -msgstr "阻止清單" - -msgid "Cache size in MB" -msgstr "快取大小(MB)" - -msgid "Config file directory" -msgstr "配置檔案的目錄" - -msgid "DHT enabled" -msgstr "啟用 DHT" - -msgid "Debug" -msgstr "除錯" - -msgid "Download directory" -msgstr "下載目錄" - -msgid "Download queue enabled" -msgstr "下載佇列已啟用" - -msgid "Download queue size" -msgstr "下載佇列大小" - -msgid "Enable watch directory" -msgstr "啟用種子輪詢目錄" - -msgid "Enabled" -msgstr "已啟用" - -msgid "Encryption" -msgstr "加密" - -msgid "Error" -msgstr "錯誤" - -msgid "Fast" -msgstr "快速" - -msgid "Files and Locations" -msgstr "檔案和位置" - -msgid "Forced" -msgstr "強制" - -msgid "Full" -msgstr "全分配" - -msgid "Global peer limit" -msgstr "全域性 Peer 限制" - -msgid "Global settings" -msgstr "全域性設定" - -msgid "Idle seeding limit" -msgstr "空閒做種限時" - -msgid "Idle seeding limit enabled" -msgstr "空閒做種時間已啟用" - -msgid "Incomplete directory" -msgstr "未完成目錄" - -msgid "Incomplete directory enabled" -msgstr "未完成目錄已啟用" - -msgid "Info" -msgstr "資訊" - -msgid "LPD enabled" -msgstr "LPD 已啟用" - -msgid "Lazy bitfield enabled" -msgstr "位段延遲已啟用" - -msgid "Message level" -msgstr "訊息級別" - -msgid "Miscellaneous" -msgstr "其他引數" - -msgid "None" -msgstr "空" - -msgid "" -"Number/bitfield. Start with 0, then for each day you want the scheduler " -"enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - " -"8, Thursday - 16, Friday - 32, Saturday - 64" -msgstr "" -"生效日期是對應日期的算術加和值。對應關係:週日-1、週一-2、週二-4、週三-8、周" -"四-16、週五-32、週六-64。" - -msgid "Off" -msgstr "關閉" - -msgid "Open Web Interface" -msgstr "開啟 Web 管理介面" - -msgid "PEX enabled" -msgstr "PEX 已啟用" - -msgid "Peer Port settings" -msgstr "Peer 埠設定" - -msgid "Peer congestion algorithm" -msgstr "Peer 擁塞演算法" - -msgid "Peer limit per torrent" -msgstr "每個種子 Peer 限制數" - -msgid "Peer port" -msgstr "Peer 埠" - -msgid "Peer port random high" -msgstr "Peer 隨機埠最大值" - -msgid "Peer port random low" -msgstr "Peer 隨機埠最小值" - -msgid "Peer port random on start" -msgstr "Peer 埠隨機" - -msgid "Peer settings" -msgstr "Peer 設定" - -msgid "Peer socket tos" -msgstr "Peer 套接字 tos 值" - -msgid "Port forwarding enabled" -msgstr "埠轉發已啟用" - -msgid "Preferred" -msgstr "優先" - -msgid "Prefetch enabled" -msgstr "預取快取已啟用" - -msgid "Queue stalled enabled" -msgstr "佇列暫停已啟用" - -msgid "Queue stalled minutes" -msgstr "佇列暫停分鐘" - -msgid "Queueing" -msgstr "佇列" - -msgid "RPC URL" -msgstr "RPC URL" - -msgid "RPC authentication required" -msgstr "RPC 授權驗證" - -msgid "RPC bind address" -msgstr "RPC 繫結位址" - -msgid "RPC enabled" -msgstr "RPC 已啟用" - -msgid "RPC password" -msgstr "RPC 密碼" - -msgid "RPC port" -msgstr "RPC 埠" - -msgid "RPC settings" -msgstr "RPC 配置" - -msgid "RPC username" -msgstr "RPC 使用者名稱" - -msgid "RPC whitelist" -msgstr "RPC 白名單" - -msgid "RPC whitelist enabled" -msgstr "RPC 白名單已啟用" - -msgid "Ratio limit" -msgstr "分享率限值" - -msgid "Ratio limit enabled" -msgstr "分享率限制已啟用" - -msgid "Rename partial files" -msgstr "重新命名未完成檔案" - -msgid "Run daemon as user" -msgstr "使用者組" - -msgid "Scheduling" -msgstr "計劃任務" - -msgid "Scrape paused torrents enabled" -msgstr "忽略暫停種子已啟用" - -msgid "Script torrent done enabled" -msgstr "種子完成時執行指令碼已啟用" - -msgid "Script torrent done filename" -msgstr "指令碼檔名" - -msgid "Seed queue enabled" -msgstr "做種佇列已啟用" - -msgid "Seed queue size" -msgstr "做種佇列大小" - -msgid "Speed limit down" -msgstr "下載限速" - -msgid "Speed limit down enabled" -msgstr "下載限速已啟用" - -msgid "Speed limit up" -msgstr "上傳限速" - -msgid "Speed limit up enabled" -msgstr "上傳限速已啟用" - -msgid "Transmission" -msgstr "Transmission" - -msgid "" -"Transmission daemon is a simple bittorrent client, here you can configure " -"the settings." -msgstr "Transmission 是一個簡單的 bittorrent 客戶端,在這裡您可以配置其設定。" - -msgid "Trash original torrent files" -msgstr "刪除種子原始檔" - -msgid "Upload slots per torrent" -msgstr "每個種子上傳連線數" - -msgid "Watch directory" -msgstr "輪詢種子目錄" - -msgid "in minutes from midnight" -msgstr "從晚上 00:00 起的分鐘數,限速到臨時速度" - -msgid "preallocation" -msgstr "磁碟預分配策略" - -msgid "uTP enabled" -msgstr "uTP 已啟用" diff --git a/package/luci/applications/luci-app-transmission/root/etc/uci-defaults/40_luci-transmission b/package/luci/applications/luci-app-transmission/root/etc/uci-defaults/40_luci-transmission deleted file mode 100644 index 456e8b89ac..0000000000 --- a/package/luci/applications/luci-app-transmission/root/etc/uci-defaults/40_luci-transmission +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@tranmsmission[-1] - add ucitrack transmission - set ucitrack.@transmission[-1].init=transmission - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-travelmate/Makefile b/package/luci/applications/luci-app-travelmate/Makefile deleted file mode 100644 index 6170f9d4c3..0000000000 --- a/package/luci/applications/luci-app-travelmate/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright 2017 Dirk Brenken (dev@brenken.org) -# This is free software, licensed under the Apache License, Version 2.0 -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI support for Travelmate -LUCI_DEPENDS:=+travelmate +luci-lib-jsonc -LUCI_PKGARCH:=all - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-travelmate/luasrc/controller/travelmate.lua b/package/luci/applications/luci-app-travelmate/luasrc/controller/travelmate.lua deleted file mode 100644 index a418a8ec61..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/controller/travelmate.lua +++ /dev/null @@ -1,35 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -module("luci.controller.travelmate", package.seeall) - -local fs = require("nixio.fs") -local util = require("luci.util") -local i18n = require("luci.i18n") -local templ = require("luci.template") - -function index() - if not nixio.fs.access("/etc/config/travelmate") then - return - end - entry({"admin", "services", "travelmate"}, firstchild(), _("Travelmate"), 40).dependent = false - entry({"admin", "services", "travelmate", "tab_from_cbi"}, cbi("travelmate/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true - entry({"admin", "services", "travelmate", "stations"}, template("travelmate/stations"), _("Wireless Stations"), 20).leaf = true - entry({"admin", "services", "travelmate", "logfile"}, call("logread"), _("View Logfile"), 30).leaf = true - entry({"admin", "services", "travelmate", "advanced"}, firstchild(), _("Advanced"), 100) - entry({"admin", "services", "travelmate", "advanced", "configuration"}, cbi("travelmate/configuration_tab"), _("Edit Travelmate Configuration"), 110).leaf = true - entry({"admin", "services", "travelmate", "advanced", "cfg_wireless"}, cbi("travelmate/cfg_wireless_tab"), _("Edit Wireless Configuration"), 120).leaf = true - entry({"admin", "services", "travelmate", "advanced", "cfg_network"}, cbi("travelmate/cfg_network_tab"), _("Edit Network Configuration"), 130).leaf = true - entry({"admin", "services", "travelmate", "advanced", "cfg_firewall"}, cbi("travelmate/cfg_firewall_tab"), _("Edit Firewall Configuration"), 140).leaf = true - - entry({"admin", "services", "travelmate", "wifiscan"}, template("travelmate/wifi_scan")).leaf = true - entry({"admin", "services", "travelmate", "wifiadd"}, cbi("travelmate/wifi_add", {hideresetbtn=true, hidesavebtn=true})).leaf = true - entry({"admin", "services", "travelmate", "wifiedit"}, cbi("travelmate/wifi_edit", {hideresetbtn=true, hidesavebtn=true})).leaf = true - entry({"admin", "services", "travelmate", "wifidelete"}, cbi("travelmate/wifi_delete", {hideresetbtn=true, hidesavebtn=true})).leaf = true - entry({"admin", "services", "travelmate", "wifiorder"}, cbi("travelmate/wifi_order", {hideresetbtn=true, hidesavebtn=true})).leaf = true -end - -function logread() - local logfile = util.trim(util.exec("logread -e 'travelmate'")) - templ.render("travelmate/logread", {title = i18n.translate("Travelmate Logfile"), content = logfile}) -end diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua deleted file mode 100644 index e5a048fa88..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local trminput = "/etc/config/firewall" - -if not nixio.fs.access(trminput) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - return m -end - -m = SimpleForm("input", nil) -m:append(Template("travelmate/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main firewall configuration file (/etc/config/firewall).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nixio.fs.readfile(trminput) or "" -end - -function f.write(self, section, data) - return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua deleted file mode 100644 index 0096d6a8c2..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local trminput = "/etc/config/network" - -if not nixio.fs.access(trminput) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - return m -end - -m = SimpleForm("input", nil) -m:append(Template("travelmate/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main network configuration file (/etc/config/network).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nixio.fs.readfile(trminput) or "" -end - -function f.write(self, section, data) - return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua deleted file mode 100644 index 7ef9920a08..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local trminput = "/etc/config/wireless" - -if not nixio.fs.access(trminput) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - return m -end - -m = SimpleForm("input", nil) -m:append(Template("travelmate/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main wireless configuration file (/etc/config/wireless).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nixio.fs.readfile(trminput) or "" -end - -function f.write(self, section, data) - return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua deleted file mode 100644 index 8a20ab9cce..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local util = require("luci.util") -local trminput = "/etc/config/travelmate" - -if not nixio.fs.access(trminput) then - m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) - m.reset = false - m.submit = false - return m -end - -m = SimpleForm("input", nil) -m:append(Template("travelmate/config_css")) -m.submit = translate("Save") -m.reset = false - -s = m:section(SimpleSection, nil, - translate("This form allows you to modify the content of the main travelmate configuration file (/etc/config/travelmate).")) - -f = s:option(TextValue, "data") -f.rows = 20 -f.rmempty = true - -function f.cfgvalue() - return nixio.fs.readfile(trminput) or "" -end - -function f.write(self, section, data) - return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") -end - -function s.handle(self, state, data) - return true -end - -return m diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua deleted file mode 100644 index 27971dfdad..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua +++ /dev/null @@ -1,189 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local json = require("luci.jsonc") -local nw = require("luci.model.network").init() -local fw = require("luci.model.firewall").init() -local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan" -local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json" -local uplink = uci.get("network", trmiface) or "" -local parse = json.parse(fs.readfile(trminput) or "") - -m = Map("travelmate", translate("Travelmate"), - translate("Configuration of the travelmate package to to enable travel router functionality. ") - .. translatef("For further information " - .. "" - .. "see online documentation", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md")) - -function m.on_after_commit(self) - luci.sys.call("env -i /etc/init.d/travelmate restart >/dev/null 2>&1") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate")) -end - -s = m:section(NamedSection, "global", "travelmate") - --- Interface Wizard - -if uplink == "" then - dv = s:option(DummyValue, "", translate("Interface Wizard")) - dv.template = "cbi/nullsection" - - o = s:option(Value, "", translate("Uplink interface")) - o.datatype = "and(uciname,rangelength(3,15))" - o.default = trmiface - o.rmempty = false - - btn = s:option(Button, "trm_iface", translate("Create Uplink Interface"), - translate("Create a new wireless wan uplink interface, configure it to use dhcp and ") - .. translate("add it to the wan zone of the firewall. This step has only to be done once.")) - btn.inputtitle = translate("Add Interface") - btn.inputstyle = "apply" - btn.disabled = false - function btn.write(self, section, value) - local iface = o:formvalue(section) - if iface then - uci:set("travelmate", section, "trm_iface", iface) - uci:save("travelmate") - uci:commit("travelmate") - local net = nw:add_network(iface, { proto = "dhcp" }) - if net then - nw:save("network") - nw:commit("network") - local zone = fw:get_zone_by_network("wan") - if zone then - zone:add_network(iface) - fw:save("firewall") - fw:commit("firewall") - end - end - luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1") - end - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate")) - end - return m -end - --- Main travelmate options - -o1 = s:option(Flag, "trm_enabled", translate("Enable travelmate")) -o1.default = o1.disabled -o1.rmempty = false - -o2 = s:option(Flag, "trm_automatic", translate("Enable 'automatic' mode"), - translate("Keep travelmate in an active state. Check every n seconds the connection status, i.e. the uplink availability.")) -o2.default = o2.enabled -o2.rmempty = false - -btn = s:option(Button, "", translate("Manual Rescan")) -btn:depends("trm_automatic", "") -btn.inputtitle = translate("Rescan") -btn.inputstyle = "find" -btn.disabled = false -function btn.write() - luci.sys.call("env -i /etc/init.d/travelmate start >/dev/null 2>&1") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate")) -end - -o3 = s:option(Value, "trm_iface", translate("Uplink / Trigger interface"), - translate("Name of the uplink interface that triggers travelmate processing in 'manual' mode.")) -o3.datatype = "and(uciname,rangelength(3,15))" -o3.default = trmiface -o3.rmempty = false - -o4 = s:option(Value, "trm_triggerdelay", translate("Trigger delay"), - translate("Additional trigger delay in seconds before travelmate processing begins.")) -o4.default = 2 -o4.datatype = "range(1,90)" -o4.rmempty = false - -o5 = s:option(Flag, "trm_debug", translate("Enable verbose debug logging")) -o5.default = o5.disabled -o5.rmempty = false - --- Runtime information - -ds = s:option(DummyValue, "_dummy", translate("Runtime information")) -ds.template = "cbi/nullsection" - -dv1 = s:option(DummyValue, "status", translate("Online Status")) -dv1.template = "travelmate/runtime" -if parse == nil then - dv1.value = translate("n/a") -elseif parse.data.station_connection == "true" then - dv1.value = translate("connected") -else - dv1.value = translate("not connected") -end - -dv2 = s:option(DummyValue, "travelmate_version", translate("Travelmate version")) -dv2.template = "travelmate/runtime" -if parse ~= nil then - dv2.value = parse.data.travelmate_version or translate("n/a") -else - dv2.value = translate("n/a") -end - -dv3 = s:option(DummyValue, "station_ssid", translate("Station SSID")) -dv3.template = "travelmate/runtime" -if parse ~= nil then - dv3.value = parse.data.station_ssid or translate("n/a") -else - dv3.value = translate("n/a") -end - -dv4 = s:option(DummyValue, "station_interface", translate("Station Interface")) -dv4.template = "travelmate/runtime" -if parse ~= nil then - dv4.value = parse.data.station_interface or translate("n/a") -else - dv4.value = translate("n/a") -end - -dv5 = s:option(DummyValue, "station_radio", translate("Station Radio")) -dv5.template = "travelmate/runtime" -if parse ~= nil then - dv5.value = parse.data.station_radio or translate("n/a") -else - dv5.value = translate("n/a") -end - -dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate")) -dv6.template = "travelmate/runtime" -if parse ~= nil then - dv6.value = parse.data.last_rundate or translate("n/a") -else - dv6.value = translate("n/a") -end - --- Extra options - -e = m:section(NamedSection, "global", "travelmate", translate("Extra options"), -translate("Options for further tweaking in case the defaults are not suitable for you.")) - -e1 = e:option(Value, "trm_radio", translate("Radio selection"), - translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'.")) -e1.datatype = "and(uciname,rangelength(6,6))" -e1.rmempty = true - -e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"), - translate("How many times should travelmate try to connect to an Uplink. ") - .. translate("To disable this feature set it to '0' which means unlimited retries.")) -e2.default = 3 -e2.datatype = "range(0,30)" -e2.rmempty = false - -e3 = e:option(Value, "trm_maxwait", translate("Interface Timeout"), - translate("How long should travelmate wait for a successful wlan interface reload.")) -e3.default = 30 -e3.datatype = "range(5,60)" -e3.rmempty = false - -e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"), - translate("Timeout in seconds between retries in 'automatic' mode.")) -e4.default = 60 -e4.datatype = "range(60,300)" -e4.rmempty = false - -return m diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua deleted file mode 100644 index dcfa17c8b5..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua +++ /dev/null @@ -1,70 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local http = require("luci.http") -local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan" - -m = SimpleForm("add", translate("Add Wireless Uplink Configuration")) -m.submit = translate("Save") -m.cancel = translate("Back to overview") -m.reset = false - -function m.on_cancel() - http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) -end - -m.hidden = { - device = http.formvalue("device"), - ssid = http.formvalue("ssid"), - wep = http.formvalue("wep"), - wpa_suites = http.formvalue("wpa_suites"), - wpa_version = http.formvalue("wpa_version") -} - -if m.hidden.ssid ~= "" then - wssid = m:field(Value, "ssid", translate("SSID")) - wssid.default = m.hidden.ssid -else - wssid = m:field(Value, "ssid", translate("SSID (hidden)")) -end - -if (tonumber(m.hidden.wep) or 0) == 1 then - wkey = m:field(Value, "key", translate("WEP passphrase"), - translate("Specify the secret encryption key here.")) - wkey.password = true - wkey.datatype = "wepkey" -elseif (tonumber(m.hidden.wpa_version) or 0) > 0 and - (m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2") -then - wkey = m:field(Value, "key", translate("WPA passphrase"), - translate("Specify the secret encryption key here.")) - wkey.password = true - wkey.datatype = "wpakey" -end - -function wssid.write(self, section, value) - newsection = uci:section("wireless", "wifi-iface", nil, { - mode = "sta", - network = trmiface, - device = m.hidden.device, - ssid = wssid:formvalue(section), - disabled = "1" - }) - if (tonumber(m.hidden.wep) or 0) == 1 then - uci:set("wireless", newsection, "encryption", "wep-open") - uci:set("wireless", newsection, "key", "1") - uci:set("wireless", newsection, "key1", wkey:formvalue(section)) - elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then - uci:set("wireless", newsection, "encryption", "psk2") - uci:set("wireless", newsection, "key", wkey:formvalue(section)) - else - uci:set("wireless", newsection, "encryption", "none") - end - uci:save("wireless") - uci:commit("wireless") - http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) -end - -return m diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua deleted file mode 100644 index 0c3cc1865b..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua +++ /dev/null @@ -1,13 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local uci = require("luci.model.uci").cursor() -local http = require("luci.http") -local cfg = http.formvalue("cfg") - -if cfg ~= nil then - uci:delete("wireless", cfg) - uci:save("wireless") - uci:commit("wireless") -end -http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua deleted file mode 100644 index c60ff22c4d..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua +++ /dev/null @@ -1,56 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local fs = require("nixio.fs") -local uci = require("luci.model.uci").cursor() -local http = require("luci.http") - -m = SimpleForm("edit", translate("Edit Wireless Uplink Configuration")) -m.submit = translate("Save") -m.cancel = translate("Back to overview") -m.reset = false - -function m.on_cancel() - http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) -end - -m.hidden = { - cfg = http.formvalue("cfg") -} - -local s = uci:get_all("wireless", m.hidden.cfg) -if s ~= nil then - wssid = m:field(Value, "ssid", translate("SSID")) - wssid.default = s.ssid - wssid.datatype = "rangelength(1,32)" - if s.encryption and s.key then - wkey = m:field(Value, "key", translatef("Passphrase (%s)", s.encryption)) - elseif s.encryption and s.password then - wkey = m:field(Value, "password", translatef("Passphrase (%s)", s.encryption)) - end - if s.encryption and (s.key or s.password) then - wkey.password = true - wkey.default = s.key or s.password - if s.encryption == "wep" then - wkey.datatype = "wepkey" - else - wkey.datatype = "wpakey" - end - end -else - m.on_cancel() -end - -function wssid.write(self, section, value) - uci:set("wireless", m.hidden.cfg, "ssid", wssid:formvalue(section)) - if s.encryption and s.key then - uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section)) - elseif s.encryption and s.password then - uci:set("wireless", m.hidden.cfg, "password", wkey:formvalue(section)) - end - uci:save("wireless") - uci:commit("wireless") - m.on_cancel() -end - -return m diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua deleted file mode 100644 index 6eb4c72063..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua +++ /dev/null @@ -1,36 +0,0 @@ --- Copyright 2017 Dirk Brenken (dev@brenken.org) --- This is free software, licensed under the Apache License, Version 2.0 - -local http = require("luci.http") -local cfg = http.formvalue("cfg") -local dir = http.formvalue("dir") -local uci = require("luci.model.uci").cursor() -local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan" - -if cfg ~= nil then - local section = "" - local idx = "" - local idx_change = "" - local changed = "" - uci:foreach("wireless", "wifi-iface", function(s) - local iface = s.network or "" - if iface == trmiface then - section = s['.name'] - if cfg == section then - idx = s['.index'] - else - idx_change = s['.index'] - end - if (dir == "up" and idx ~= "" and idx_change ~= "" and idx_change < idx) or - (dir == "down" and idx ~= "" and idx_change ~= "" and idx_change > idx) then - changed = uci:reorder("wireless", cfg, idx_change) - idx = "" - end - end - end) - if changed ~= "" then - uci:save("wireless") - uci:commit("wireless") - end -end -http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm deleted file mode 100644 index 53493a18fb..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm deleted file mode 100644 index 7f6ff7776d..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm +++ /dev/null @@ -1,15 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+header%> - -
    -
    -
    <%:This form shows the syslog output, pre-filtered for travelmate related messages only.%>
    - -
    -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm deleted file mode 100644 index 2b9885567a..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%+cbi/valueheader%> - - - -<%+cbi/valuefooter%> diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm deleted file mode 100644 index 51db2861e5..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm +++ /dev/null @@ -1,77 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%- - local write = io.write - local uci = require("luci.model.uci").cursor() - local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan" --%> - -<%+header%> - -
    -

    <%:Wireless Stations%>

    -
    - <%=translatef("Provides an overview of all configured uplinks for the travelmate interface (%s). You can edit, delete or re-order existing uplinks or scan for a new one. The currently used uplink is emphasized in blue.", trmiface)%> -
    - -
    - - - - - - - -<% - uci:foreach("wireless", "wifi-iface", function(s) - local iface = s.network or "" - if iface == trmiface then - local section = s['.name'] or "" - local device = s.device or "" - local ssid = s.ssid or "" - local encryption = s.encryption or "" - local disabled = s.disabled or "" - local style = "color:#000000" - if disabled == "0" then - style = "color:#0069d6;font-weight:bold" - end -%> - - - - - - - -<% - end - end) -%> -
    <%:Device%><%:SSID%><%:Encryption%><%:Actions%>
    <%=device%><%=ssid%><%=encryption%> - - - - - -
    -
    -
    -<% - uci:foreach("wireless", "wifi-device", function(s) - local device = s[".name"] -%> -
    - - - -
    -<% - end) -%> -
    -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm deleted file mode 100644 index 053b4baca1..0000000000 --- a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm +++ /dev/null @@ -1,90 +0,0 @@ -<%# -Copyright 2017 Dirk Brenken (dev@brenken.org) -This is free software, licensed under the Apache License, Version 2.0 --%> - -<%- - local sys = require("luci.sys") - local utl = require("luci.util") - local dev = luci.http.formvalue("device") - local iw = luci.sys.wifi.getiwinfo(dev) - - if not iw then - luci.http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations")) - end - - function format_wifi_encryption(info) - if info.wep == true then - return translate("WEP") - elseif info.wpa > 0 then - return translate("WPA / WPA2") - elseif info.enabled then - return translate("Unknown") - else - return translate("Open") - end - end - - function percent_wifi_signal(info) - local qc = info.quality or 0 - local qm = info.quality_max or 0 - if info.ssid and qc > 0 and qm > 0 then - return math.floor((100 / qm) * qc) - else - return 0 - end - end --%> - -<%+header%> - -
    -

    <%:Wireless Scan%>

    -
    - - - - - - - <% for i, net in ipairs(iw.scanlist or { }) do %> - - - - - - - <% end %> -
    <%:Uplink SSID%><%:Encryption%><%:Signal strength%>
    - <%=net.ssid and utl.pcdata(net.ssid) or "%s" % translate("hidden")%> - - <%=format_wifi_encryption(net.encryption)%> - - <%=percent_wifi_signal(net)%> % - -
    - - - - - <% if net.encryption.wpa then %> - - <% for _, v in ipairs(net.encryption.auth_suites) do %> - <% end; end %> - -
    -
    -
    -
    -
    - - - -
    -
    - -
    -
    -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-travelmate/po/ja/travelmate.po b/package/luci/applications/luci-app-travelmate/po/ja/travelmate.po deleted file mode 100644 index febdbd5833..0000000000 --- a/package/luci/applications/luci-app-travelmate/po/ja/travelmate.po +++ /dev/null @@ -1,327 +0,0 @@ -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 2.0.3\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: ja\n" - -msgid "Actions" -msgstr "操作" - -msgid "Add Interface" -msgstr "インターフェースの追加" - -msgid "Add Uplink" -msgstr "アップリンクの追加" - -msgid "Add Wireless Uplink Configuration" -msgstr "無線アップリンク追加の設定" - -msgid "" -"Additional trigger delay in seconds before travelmate processing begins." -msgstr "Travelmate の処理が開始されるまでの、追加の遅延時間(秒)です。" - -msgid "Advanced" -msgstr "詳細設定" - -msgid "Back to overview" -msgstr "概要へ戻る" - -msgid "" -"Configuration of the travelmate package to to enable travel router " -"functionality." -msgstr "" -"トラベル ルーター機能を有効化するための、 Travelmate パッケージの設定です。" - -msgid "Connection Limit" -msgstr "接続制限" - -msgid "Create Uplink Interface" -msgstr "アップリンク インターフェースの作成" - -msgid "" -"Create a new wireless wan uplink interface, configure it to use dhcp and" -msgstr "" -"新規の無線 WAN アップリンク インターフェースを作成し、 DHCP を使用するよう構" -"成して" - -msgid "Delete" -msgstr "削除" - -msgid "Delete this Uplink" -msgstr "このアップリンクを削除" - -msgid "Device" -msgstr "デバイス" - -msgid "Edit" -msgstr "編集" - -msgid "Edit Firewall Configuration" -msgstr "ファイアウォール設定の編集" - -msgid "Edit Network Configuration" -msgstr "ネットワーク設定の編集" - -msgid "Edit Travelmate Configuration" -msgstr "Travelmate 設定の編集" - -msgid "Edit Wireless Configuration" -msgstr "無線設定の編集" - -msgid "Edit Wireless Uplink Configuration" -msgstr "無線アップリンク設定の編集" - -msgid "Edit this Uplink" -msgstr "このアップリンクを編集" - -msgid "Enable 'automatic' mode" -msgstr "'automatic' モードの有効化" - -msgid "Enable travelmate" -msgstr "Travelmate の有効化" - -msgid "Enable verbose debug logging" -msgstr "詳細なデバッグ ログの有効化" - -msgid "Encryption" -msgstr "暗号化" - -msgid "Extra options" -msgstr "拡張オプション" - -msgid "Find and join network on" -msgstr "ネットワークの検索と参加:" - -msgid "" -"For further information see online " -"documentation" -msgstr "" -"詳細な情報は オンライン ドキュメント を" -"確認してください。" - -msgid "How long should travelmate wait for a successful wlan interface reload." -msgstr "" -"無線LAN インターフェースのリロードが成功するまでの、Travelmate の待機時間で" -"す。" - -msgid "How many times should travelmate try to connect to an Uplink." -msgstr "Travelmate がアップリンクへの接続を試行する回数です。" - -msgid "Input file not found, please check your configuration." -msgstr "入力ファイルが見つかりません。設定を確認してください。" - -msgid "Interface Timeout" -msgstr "インターフェース タイムアウト" - -msgid "Interface Wizard" -msgstr "インターフェース ウィザード" - -msgid "" -"Keep travelmate in an active state. Check every n seconds the connection " -"status, i.e. the uplink availability." -msgstr "" -"Travelmate をアクティブ状態で維持します。\"実行間隔\" で設定された時間毎" -"(秒)に、アップリンクの可用性を確認するために接続状態をチェックします" - -msgid "Last rundate" -msgstr "最終実行日時" - -msgid "Manual Rescan" -msgstr "手動再スキャン" - -msgid "Move down" -msgstr "下へ" - -msgid "Move up" -msgstr "上へ" - -msgid "" -"Name of the uplink interface that triggers travelmate processing in 'manual' " -"mode." -msgstr "" -"'manual' モード時に Travelmate の処理のトリガーとなる、アップリンク インター" -"フェースの名前です。" - -msgid "Online Status" -msgstr "オンライン ステータス" - -msgid "Open" -msgstr "オープン" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "デフォルトの設定が適切でない場合、さらに設定するためのオプションです。" - -msgid "Overall Timeout" -msgstr "実行間隔" - -msgid "Overview" -msgstr "概要" - -msgid "Passphrase (%s)" -msgstr "暗号フレーズ (%s)" - -msgid "" -"Provides an overview of all configured uplinks for the travelmate interface " -"(%s). You can edit, delete or re-order existing uplinks or scan for a new " -"one. The currently used uplink is emphasized in blue." -msgstr "" -"Travelmate 用インターフェース(%s)に設定済みの全アップリンクの一覧です。既存" -"のアップリンクの編集や削除、並べ替えを行ったり、スキャンを行って新規アップリ" -"ンクを追加することができます。現在使用されているアップリンクは、青色で強調さ" -"れます。" - -msgid "Radio selection" -msgstr "無線の選択" - -msgid "Repeat scan" -msgstr "再スキャン" - -msgid "Rescan" -msgstr "再スキャン" - -msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'." -msgstr "Travelmate が指定された無線に接続するよう制御します。(例: 'radio0')" - -msgid "Runtime information" -msgstr "実行情報" - -msgid "SSID" -msgstr "SSID" - -msgid "SSID (hidden)" -msgstr "SSID(ステルス)" - -msgid "Save" -msgstr "保存" - -msgid "Scan" -msgstr "スキャン:" - -msgid "Signal strength" -msgstr "信号強度" - -msgid "Specify the secret encryption key here." -msgstr "暗号キーを設定します。" - -msgid "Station Interface" -msgstr "ステーション インターフェース" - -msgid "Station Radio" -msgstr "ステーション電波" - -msgid "Station SSID" -msgstr "ステーション SSID" - -msgid "" -"This form allows you to modify the content of the main firewall " -"configuration file (/etc/config/firewall)." -msgstr "" -"このフォームでは、ファイアウォール 設定ファイル (/etc/config/firewall) の内容" -"を変更することができます。" - -msgid "" -"This form allows you to modify the content of the main network configuration " -"file (/etc/config/network)." -msgstr "" -"このフォームでは、ネットワーク 設定ファイル (/etc/config/network) の内容を変" -"更することができます。" - -msgid "" -"This form allows you to modify the content of the main travelmate " -"configuration file (/etc/config/travelmate)." -msgstr "" -"このフォームでは、 Travelmate 設定ファイル (/etc/config/travelmate) の内容を" -"変更することができます。" - -msgid "" -"This form allows you to modify the content of the main wireless " -"configuration file (/etc/config/wireless)." -msgstr "" -"このフォームでは、無線 設定ファイル (/etc/config/wireless) の内容を変更するこ" -"とができます。" - -msgid "" -"This form shows the syslog output, pre-filtered for travelmate related " -"messages only." -msgstr "" -"このフォームには、システムログ内の Travelmate に関するメッセージのみが表示さ" -"れます。" - -msgid "Timeout in seconds between retries in 'automatic' mode." -msgstr "'automatic' モード時に接続を確認または再試行する間隔(秒)です。" - -msgid "To disable this feature set it to '0' which means unlimited retries." -msgstr "" -"この機能を無効にして接続の再試行を無制限にする場合、 '0' を設定します。" - -msgid "Travelmate" -msgstr "Travelmate" - -msgid "Travelmate Logfile" -msgstr "Travelmate ログファイル" - -msgid "Travelmate version" -msgstr "Travelmate バージョン" - -msgid "Trigger delay" -msgstr "トリガー遅延" - -msgid "Unknown" -msgstr "不明" - -msgid "Uplink / Trigger interface" -msgstr "アップリンク / トリガー インターフェース" - -msgid "Uplink SSID" -msgstr "アップリンク SSID" - -msgid "Uplink interface" -msgstr "アップリンク インターフェース" - -msgid "View Logfile" -msgstr "ログファイルの確認" - -msgid "WEP" -msgstr "WEP" - -msgid "WEP passphrase" -msgstr "WEP 暗号キー" - -msgid "WPA / WPA2" -msgstr "WPA / WPA2" - -msgid "WPA passphrase" -msgstr "WPA 暗号キー" - -msgid "Wireless Scan" -msgstr "無線スキャン" - -msgid "Wireless Stations" -msgstr "無線ステーション" - -msgid "" -"add it to the wan zone of the firewall. This step has only to be done once." -msgstr "" -"ファイアウォールの wan ゾーンに追加します。このステップは、一度だけ実行される" -"必要があります。" - -msgid "connected" -msgstr "接続済み" - -msgid "hidden" -msgstr "(不明)" - -msgid "n/a" -msgstr "利用不可" - -msgid "not connected" -msgstr "未接続" diff --git a/package/luci/applications/luci-app-travelmate/po/pt-br/travelmate.po b/package/luci/applications/luci-app-travelmate/po/pt-br/travelmate.po deleted file mode 100644 index 41fab70149..0000000000 --- a/package/luci/applications/luci-app-travelmate/po/pt-br/travelmate.po +++ /dev/null @@ -1,360 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "Actions" -msgstr "" - -msgid "Add Interface" -msgstr "" - -msgid "Add Uplink" -msgstr "" - -msgid "Add Wireless Uplink Configuration" -msgstr "" - -msgid "" -"Additional trigger delay in seconds before travelmate processing begins." -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Back to overview" -msgstr "" - -msgid "" -"Configuration of the travelmate package to to enable travel router " -"functionality." -msgstr "" - -msgid "Connection Limit" -msgstr "" - -msgid "Create Uplink Interface" -msgstr "" - -msgid "" -"Create a new wireless wan uplink interface, configure it to use dhcp and" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Delete this Uplink" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Edit Firewall Configuration" -msgstr "" - -msgid "Edit Network Configuration" -msgstr "" - -msgid "Edit Travelmate Configuration" -msgstr "" - -msgid "Edit Wireless Configuration" -msgstr "" - -msgid "Edit Wireless Uplink Configuration" -msgstr "" - -msgid "Edit this Uplink" -msgstr "" - -msgid "Enable 'automatic' mode" -msgstr "" - -msgid "Enable travelmate" -msgstr "" - -msgid "Enable verbose debug logging" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Extra options" -msgstr "Opções adicionais" - -msgid "Find and join network on" -msgstr "" - -msgid "" -"For further information see online " -"documentation" -msgstr "" - -msgid "How long should travelmate wait for a successful wlan interface reload." -msgstr "" - -msgid "How many times should travelmate try to connect to an Uplink." -msgstr "" - -msgid "Input file not found, please check your configuration." -msgstr "" - -msgid "Interface Timeout" -msgstr "" - -msgid "Interface Wizard" -msgstr "" - -msgid "" -"Keep travelmate in an active state. Check every n seconds the connection " -"status, i.e. the uplink availability." -msgstr "" - -msgid "Last rundate" -msgstr "" - -msgid "Manual Rescan" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "" -"Name of the uplink interface that triggers travelmate processing in 'manual' " -"mode." -msgstr "" - -msgid "Online Status" -msgstr "" - -msgid "Open" -msgstr "" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "" - -msgid "Overall Timeout" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Passphrase (%s)" -msgstr "" - -msgid "" -"Provides an overview of all configured uplinks for the travelmate interface " -"(%s). You can edit, delete or re-order existing uplinks or scan for a new " -"one. The currently used uplink is emphasized in blue." -msgstr "" - -msgid "Radio selection" -msgstr "" - -msgid "Repeat scan" -msgstr "" - -msgid "Rescan" -msgstr "" - -msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'." -msgstr "" - -msgid "Runtime information" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "SSID (hidden)" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Scan" -msgstr "" - -msgid "Signal strength" -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Station Interface" -msgstr "" - -msgid "Station Radio" -msgstr "" - -msgid "Station SSID" -msgstr "" - -msgid "" -"This form allows you to modify the content of the main firewall " -"configuration file (/etc/config/firewall)." -msgstr "" - -msgid "" -"This form allows you to modify the content of the main network configuration " -"file (/etc/config/network)." -msgstr "" - -msgid "" -"This form allows you to modify the content of the main travelmate " -"configuration file (/etc/config/travelmate)." -msgstr "" - -msgid "" -"This form allows you to modify the content of the main wireless " -"configuration file (/etc/config/wireless)." -msgstr "" - -msgid "" -"This form shows the syslog output, pre-filtered for travelmate related " -"messages only." -msgstr "" - -msgid "Timeout in seconds between retries in 'automatic' mode." -msgstr "" - -msgid "To disable this feature set it to '0' which means unlimited retries." -msgstr "" - -msgid "Travelmate" -msgstr "Travelmate" - -msgid "Travelmate Logfile" -msgstr "" - -msgid "Travelmate version" -msgstr "" - -msgid "Trigger delay" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Uplink / Trigger interface" -msgstr "" - -msgid "Uplink SSID" -msgstr "" - -msgid "Uplink interface" -msgstr "" - -msgid "View Logfile" -msgstr "" - -msgid "WEP" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WPA / WPA2" -msgstr "" - -msgid "WPA passphrase" -msgstr "" - -msgid "Wireless Scan" -msgstr "" - -msgid "Wireless Stations" -msgstr "" - -msgid "" -"add it to the wan zone of the firewall. This step has only to be done once." -msgstr "" - -msgid "connected" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "n/a" -msgstr "" - -msgid "not connected" -msgstr "" - -#~ msgid "" -#~ "Brief advice: Create a wwan interface, configure it to use dhcp and add " -#~ "it to the wan zone in firewall. Create the wifi interfaces to be used " -#~ "('client' mode, assigned to wwan network, left as disabled). Travelmate " -#~ "will try to connect to the known wifi client interfaces in the defined " -#~ "order." -#~ msgstr "" -#~ "Breve conselho: Crie uma interface wwan, configure-a para usar DHCP e " -#~ "adicione-a à zona wan no firewall. Crie as interfaces wifi a serem usadas " -#~ "(modo 'cliente', atribuído à rede wwan, deixado como desativado). O " -#~ "Travelmate tentará se conectar às interfaces de cliente wifi conhecidas " -#~ "na ordem definida." - -#~ msgid "" -#~ "Configuration of the Travelmate package to enable travel router " -#~ "functionality." -#~ msgstr "" -#~ "Configuração do pacote Travelmate para permitir a funcionalidade de " -#~ "roteador de viagem." - -#~ msgid "Debug logging" -#~ msgstr "Registros(log) para depuração" - -#~ msgid "Default 20, range 10-60" -#~ msgstr "Padrão 20, faixa 10-60" - -#~ msgid "Default 3, range 1-10" -#~ msgstr "Padrão 3, faixa 1-10" - -#~ msgid "Disable this if you want to use iwinfo instead of iw" -#~ msgstr "Desabilite isto se você quer usar o iwinfo ao invés do iw" - -#~ msgid "Enable Travelmate" -#~ msgstr "Habilitar o Travelmate" - -#~ msgid "Global options" -#~ msgstr "Opções Globais" - -#~ msgid "Link to detailed advice" -#~ msgstr "Endereço para conselhos detalhados" - -#~ msgid "Max. number of connection retries to an uplink" -#~ msgstr "Máximo número de tentativas de conexão para um enlace" - -#~ msgid "Max. timeout in seconds for wlan interface reload" -#~ msgstr "Tempo limite máximo em segundos para recarregar a interface wlan" - -#~ msgid "Restrict reload trigger to certain interface(s)" -#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)" - -#~ msgid "" -#~ "Space separated list of wwan interfaces that trigger reload action. To " -#~ "disable reload trigger set it to 'false'. Default: empty" -#~ msgstr "" -#~ "Lista separada por espaços de interfaces wwan que acionam a ação de " -#~ "recarga. Para desabilitar o gatilho de recarga, defina-o como 'false'. " -#~ "Padrão: vazio" - -#~ msgid "Use iw for scanning" -#~ msgstr "Use o iw para escaneamento" diff --git a/package/luci/applications/luci-app-travelmate/po/templates/travelmate.pot b/package/luci/applications/luci-app-travelmate/po/templates/travelmate.pot deleted file mode 100644 index a9ceafe237..0000000000 --- a/package/luci/applications/luci-app-travelmate/po/templates/travelmate.pot +++ /dev/null @@ -1,288 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Actions" -msgstr "" - -msgid "Add Interface" -msgstr "" - -msgid "Add Uplink" -msgstr "" - -msgid "Add Wireless Uplink Configuration" -msgstr "" - -msgid "" -"Additional trigger delay in seconds before travelmate processing begins." -msgstr "" - -msgid "Advanced" -msgstr "" - -msgid "Back to overview" -msgstr "" - -msgid "" -"Configuration of the travelmate package to to enable travel router " -"functionality." -msgstr "" - -msgid "Connection Limit" -msgstr "" - -msgid "Create Uplink Interface" -msgstr "" - -msgid "" -"Create a new wireless wan uplink interface, configure it to use dhcp and" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Delete this Uplink" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Edit Firewall Configuration" -msgstr "" - -msgid "Edit Network Configuration" -msgstr "" - -msgid "Edit Travelmate Configuration" -msgstr "" - -msgid "Edit Wireless Configuration" -msgstr "" - -msgid "Edit Wireless Uplink Configuration" -msgstr "" - -msgid "Edit this Uplink" -msgstr "" - -msgid "Enable 'automatic' mode" -msgstr "" - -msgid "Enable travelmate" -msgstr "" - -msgid "Enable verbose debug logging" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Extra options" -msgstr "" - -msgid "Find and join network on" -msgstr "" - -msgid "" -"For further information see online " -"documentation" -msgstr "" - -msgid "How long should travelmate wait for a successful wlan interface reload." -msgstr "" - -msgid "How many times should travelmate try to connect to an Uplink." -msgstr "" - -msgid "Input file not found, please check your configuration." -msgstr "" - -msgid "Interface Timeout" -msgstr "" - -msgid "Interface Wizard" -msgstr "" - -msgid "" -"Keep travelmate in an active state. Check every n seconds the connection " -"status, i.e. the uplink availability." -msgstr "" - -msgid "Last rundate" -msgstr "" - -msgid "Manual Rescan" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "" -"Name of the uplink interface that triggers travelmate processing in 'manual' " -"mode." -msgstr "" - -msgid "Online Status" -msgstr "" - -msgid "Open" -msgstr "" - -msgid "" -"Options for further tweaking in case the defaults are not suitable for you." -msgstr "" - -msgid "Overall Timeout" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Passphrase (%s)" -msgstr "" - -msgid "" -"Provides an overview of all configured uplinks for the travelmate interface " -"(%s). You can edit, delete or re-order existing uplinks or scan for a new " -"one. The currently used uplink is emphasized in blue." -msgstr "" - -msgid "Radio selection" -msgstr "" - -msgid "Repeat scan" -msgstr "" - -msgid "Rescan" -msgstr "" - -msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'." -msgstr "" - -msgid "Runtime information" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "SSID (hidden)" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Scan" -msgstr "" - -msgid "Signal strength" -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Station Interface" -msgstr "" - -msgid "Station Radio" -msgstr "" - -msgid "Station SSID" -msgstr "" - -msgid "" -"This form allows you to modify the content of the main firewall " -"configuration file (/etc/config/firewall)." -msgstr "" - -msgid "" -"This form allows you to modify the content of the main network configuration " -"file (/etc/config/network)." -msgstr "" - -msgid "" -"This form allows you to modify the content of the main travelmate " -"configuration file (/etc/config/travelmate)." -msgstr "" - -msgid "" -"This form allows you to modify the content of the main wireless " -"configuration file (/etc/config/wireless)." -msgstr "" - -msgid "" -"This form shows the syslog output, pre-filtered for travelmate related " -"messages only." -msgstr "" - -msgid "Timeout in seconds between retries in 'automatic' mode." -msgstr "" - -msgid "To disable this feature set it to '0' which means unlimited retries." -msgstr "" - -msgid "Travelmate" -msgstr "" - -msgid "Travelmate Logfile" -msgstr "" - -msgid "Travelmate version" -msgstr "" - -msgid "Trigger delay" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Uplink / Trigger interface" -msgstr "" - -msgid "Uplink SSID" -msgstr "" - -msgid "Uplink interface" -msgstr "" - -msgid "View Logfile" -msgstr "" - -msgid "WEP" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WPA / WPA2" -msgstr "" - -msgid "WPA passphrase" -msgstr "" - -msgid "Wireless Scan" -msgstr "" - -msgid "Wireless Stations" -msgstr "" - -msgid "" -"add it to the wan zone of the firewall. This step has only to be done once." -msgstr "" - -msgid "connected" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "n/a" -msgstr "" - -msgid "not connected" -msgstr "" diff --git a/package/luci/applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate b/package/luci/applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate deleted file mode 100755 index f7676774a1..0000000000 --- a/package/luci/applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@travelmate[-1] - add ucitrack travelmate - set ucitrack.@travelmate[-1].init=travelmate - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-udpxy/Makefile b/package/luci/applications/luci-app-udpxy/Makefile deleted file mode 100644 index cb8f179232..0000000000 --- a/package/luci/applications/luci-app-udpxy/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for udpxy -LUCI_DEPENDS:=+udpxy - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-udpxy/luasrc/controller/udpxy.lua b/package/luci/applications/luci-app-udpxy/luasrc/controller/udpxy.lua deleted file mode 100644 index 36a40ddfc7..0000000000 --- a/package/luci/applications/luci-app-udpxy/luasrc/controller/udpxy.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright 2014 Álvaro Fernández Rojas --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.udpxy", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/udpxy") then - return - end - - local page = entry({"admin", "services", "udpxy"}, cbi("udpxy"), _("udpxy")) - page.dependent = true - -end diff --git a/package/luci/applications/luci-app-udpxy/luasrc/model/cbi/udpxy.lua b/package/luci/applications/luci-app-udpxy/luasrc/model/cbi/udpxy.lua deleted file mode 100644 index d823da06f4..0000000000 --- a/package/luci/applications/luci-app-udpxy/luasrc/model/cbi/udpxy.lua +++ /dev/null @@ -1,63 +0,0 @@ --- Copyright 2014 Álvaro Fernández Rojas --- Licensed to the public under the Apache License 2.0. - -m = Map("udpxy", "udpxy", translate("udpxy is a UDP-to-HTTP multicast traffic relay daemon, here you can configure the settings.")) - -s = m:section(TypedSection, "udpxy", "") -s.addremove = true -s.anonymous = false - -enable=s:option(Flag, "disabled", translate("Enabled")) -enable.enabled="0" -enable.disabled="1" -enable.default = "1" -enable.rmempty = false -respawn=s:option(Flag, "respawn", translate("Respawn")) -respawn.default = false - -verbose=s:option(Flag, "verbose", translate("Verbose")) -verbose.default = false - -status=s:option(Flag, "status", translate("Status")) - -bind=s:option(Value, "bind", translate("Bind IP/Interface")) -bind.rmempty = true -bind.datatype = "or(ipaddr, network)" - -port=s:option(Value, "port", translate("Port")) -port.rmempty = true -port.datatype = "port" - -source=s:option(Value, "source", translate("Source IP/Interface")) -source.rmempty = true -source.datatype = "or(ipaddr, network)" - -max_clients=s:option(Value, "max_clients", translate("Max clients")) -max_clients.rmempty = true -max_clients.datatype = "range(1, 5000)" - -log_file=s:option(Value, "log_file", translate("Log file")) -log_file.rmempty = true ---log_file.datatype = "file" - -buffer_size=s:option(Value, "buffer_size", translate("Buffer size")) -buffer_size.rmempty = true -buffer_size.datatype = "range(4096,2097152)" - -buffer_messages=s:option(Value, "buffer_messages", translate("Buffer messages")) -buffer_messages.rmempty = true -buffer_messages.datatype = "or(-1, and(min(1), uinteger))" - -buffer_time=s:option(Value, "buffer_time", translate("Buffer time")) -buffer_time.rmempty = true -buffer_time.datatype = "or(-1, and(min(1), uinteger))" - -nice_increment=s:option(Value, "nice_increment", translate("Nice increment")) -nice_increment.rmempty = true -nice_increment.datatype = "or(and(max(-1), integer),and(min(1), integer))" - -mcsub_renew=s:option(Value, "mcsub_renew", translate("Multicast subscription renew")) -mcsub_renew.rmempty = true -mcsub_renew.datatype = "or(0, range(30, 64000))" - -return m diff --git a/package/luci/applications/luci-app-udpxy/root/etc/uci-defaults/40_luci-udpxy b/package/luci/applications/luci-app-udpxy/root/etc/uci-defaults/40_luci-udpxy deleted file mode 100644 index e93c078807..0000000000 --- a/package/luci/applications/luci-app-udpxy/root/etc/uci-defaults/40_luci-udpxy +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# needed for "Save and Apply" to restart udpxy -uci -q batch <<-EOF >/dev/null - delete ucitrack.@udpxy[-1] - add ucitrack udpxy - set ucitrack.@udpxy[-1].init="udpxy" - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-uhttpd/Makefile b/package/luci/applications/luci-app-uhttpd/Makefile deleted file mode 100644 index 3014770665..0000000000 --- a/package/luci/applications/luci-app-uhttpd/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# -# Copyright (C) 2015 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=uHTTPd Webserver Configuration -LUCI_DEPENDS:=+uhttpd -LUCI_PKGARCH:=all - -PKG_LICENSE:=Apache-2.0 -PKG_MAINTAINER:=Daniel Dickinson - -LUA_TARGET:=source - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua b/package/luci/applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua deleted file mode 100644 index 2e80dd63b4..0000000000 --- a/package/luci/applications/luci-app-uhttpd/luasrc/controller/uhttpd/uhttpd.lua +++ /dev/null @@ -1,17 +0,0 @@ --- Copyright 2015 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.uhttpd.uhttpd", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/uhttpd") then - return - end - - local page - - page = entry({"admin", "services", "uhttpd"}, cbi("uhttpd/uhttpd"), _("uHTTPd")) - page.leaf = true - -end - diff --git a/package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua b/package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua deleted file mode 100644 index 883e1bb631..0000000000 --- a/package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua +++ /dev/null @@ -1,230 +0,0 @@ --- Copyright 2015 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -local fs = require("nixio.fs") - -local m = Map("uhttpd", translate("uHTTPd"), - translate("A lightweight single-threaded HTTP(S) server")) - -local ucs = m:section(TypedSection, "uhttpd", "") -ucs.addremove = true -ucs.anonymous = false - -local lhttp = nil -local lhttps = nil -local cert_file = nil -local key_file = nil - -ucs:tab("general", translate("General Settings")) -ucs:tab("server", translate("Full Web Server Settings"), translate("For settings primarily geared to serving more than the web UI")) -ucs:tab("advanced", translate("Advanced Settings"), translate("Settings which are either rarely needed or which affect serving the WebUI")) - -lhttp = ucs:taboption("general", DynamicList, "listen_http", translate("HTTP listeners (address:port)"), translate("Bind to specific interface:port (by specifying interface address")) -lhttp.datatype = "list(ipaddrport(1))" - -function lhttp.validate(self, value, section) - local have_https_listener = false - local have_http_listener = false - if lhttp and lhttp:formvalue(section) and (#(lhttp:formvalue(section)) > 0) then - for k, v in pairs(lhttp:formvalue(section)) do - if v and (v ~= "") then - have_http_listener = true - break - end - end - end - if lhttps and lhttps:formvalue(section) and (#(lhttps:formvalue(section)) > 0) then - for k, v in pairs(lhttps:formvalue(section)) do - if v and (v ~= "") then - have_https_listener = true - break - end - end - end - if not (have_http_listener or have_https_listener) then - return nil, "must listen on at list one address:port" - end - return DynamicList.validate(self, value, section) -end - -lhttps = ucs:taboption("general", DynamicList, "listen_https", translate("HTTPS listener (address:port)"), translate("Bind to specific interface:port (by specifying interface address")) -lhttps.datatype = "list(ipaddrport(1))" -lhttps:depends("cert") -lhttps:depends("key") - -function lhttps.validate(self, value, section) - local have_https_listener = false - local have_http_listener = false - if lhttps and lhttps:formvalue(section) and (#(lhttps:formvalue(section)) > 0) then - for k, v in pairs(lhttps:formvalue(section)) do - if v and (v ~= "") then - have_https_listener = true - break - end - end - if have_https_listener and ((not cert_file) or (not cert_file:formvalue(section)) or (cert_file:formvalue(section) == "")) then - return nil, "must have certificate when using https" - end - if have_https_listener and ((not key_file) or (not key_file:formvalue(section)) or (key_file:formvalue(section) == "")) then - return nil, "must have key when using https" - end - end - if lhttp and (lhttp:formvalue(section)) and (#lhttp:formvalue(section) > 0) then - for k, v in pairs(lhttp:formvalue(section)) do - if v and (v ~= "") then - have_http_listener = true - break - end - end - end - if not (have_http_listener or have_https_listener) then - return nil, "must listen on at list one address:port" - end - return DynamicList.validate(self, value, section) -end - -o = ucs:taboption("general", Flag, "redirect_https", translate("Redirect all HTTP to HTTPS")) -o.default = o.enabled -o.rmempty = false - -o = ucs:taboption("general", Flag, "rfc1918_filter", translate("Ignore private IPs on public interface"), translate("Prevent access from private (RFC1918) IPs on an interface if it has an public IP address")) -o.default = o.enabled -o.rmempty = false - -cert_file = ucs:taboption("general", FileUpload, "cert", translate("HTTPS Certificate (DER Encoded)")) - -key_file = ucs:taboption("general", FileUpload, "key", translate("HTTPS Private Key (DER Encoded)")) - -o = ucs:taboption("general", Button, "remove_old", translate("Remove old certificate and key"), - translate("uHTTPd will generate a new self-signed certificate using the configuration shown below.")) -o.inputstyle = "remove" - -function o.write(self, section) - if cert_file:cfgvalue(section) and fs.access(cert_file:cfgvalue(section)) then fs.unlink(cert_file:cfgvalue(section)) end - if key_file:cfgvalue(section) and fs.access(key_file:cfgvalue(section)) then fs.unlink(key_file:cfgvalue(section)) end - luci.sys.call("/etc/init.d/uhttpd restart") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "uhttpd")) -end - -o = ucs:taboption("general", Button, "remove_conf", translate("Remove configuration for certificate and key"), - translate("This permanently deletes the cert, key, and configuration to use same.")) -o.inputstyle = "remove" - -function o.write(self, section) - if cert_file:cfgvalue(section) and fs.access(cert_file:cfgvalue(section)) then fs.unlink(cert_file:cfgvalue(section)) end - if key_file:cfgvalue(section) and fs.access(key_file:cfgvalue(section)) then fs.unlink(key_file:cfgvalue(section)) end - self.map:del(section, "cert") - self.map:del(section, "key") - self.map:del(section, "listen_https") - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "uhttpd")) -end - -o = ucs:taboption("server", DynamicList, "index_page", translate("Index page(s)"), translate("E.g specify with index.html and index.php when using PHP")) -o.optional = true -o.placeholder = "index.html" - -o = ucs:taboption("server", DynamicList, "interpreter", translate("CGI filetype handler"), translate("Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/usr/bin/php-cgi')")) -o.optional = true - -o = ucs:taboption("server", Flag, "no_symlinks", translate("Do not follow symlinks outside document root")) -o.optional = true - -o = ucs:taboption("server", Flag, "no_dirlists", translate("Do not generate directory listings.")) -o.default = o.disabled - -o = ucs:taboption("server", DynamicList, "alias", translate("Aliases"), translate("(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)")) -o.optional = true - -o = ucs:taboption("server", Value, "realm", translate("Realm for Basic Auth")) -o.optional = true -o.placeholder = luci.sys.hostname() or "OpenWrt" - -local httpconfig = ucs:taboption("server", Value, "config", translate("Config file (e.g. for credentials for Basic Auth)"), translate("Will not use HTTP authentication if not present")) -httpconfig.optional = true - -o = ucs:taboption("server", Value, "error_page", translate("404 Error"), translate("Virtual URL or CGI script to display on status '404 Not Found'. Must begin with '/'")) -o.optional = true - -o = ucs:taboption("advanced", Value, "home", translate("Document root"), - translate("Base directory for files to be served")) -o.default = "/www" -o.datatype = "directory" - -o = ucs:taboption("advanced", Value, "cgi_prefix", translate("Path prefix for CGI scripts"), translate("CGI is disabled if not present.")) -o.optional = true - -o = ucs:taboption("advanced", Value, "lua_prefix", translate("Virtual path prefix for Lua scripts")) -o.placeholder = "/lua" -o.optional = true - -o = ucs:taboption("advanced", Value, "lua_handler", translate("Full real path to handler for Lua scripts"), translate("Embedded Lua interpreter is disabled if not present.")) -o.optional = true - -o = ucs:taboption("advanced", Value, "ubus_prefix", translate("Virtual path prefix for ubus via JSON-RPC integration"), translate("ubus integration is disabled if not present")) -o.optional = true - -o = ucs:taboption("advanced", Value, "ubus_socket", translate("Override path for ubus socket")) -o.optional = true - -o = ucs:taboption("advanced", Flag, "ubus_cors", translate("Enable JSON-RPC Cross-Origin Resource Support")) -o.default = o.disabled -o.optional = true - -o = ucs:taboption("advanced", Flag, "no_ubusauth", translate("Disable JSON-RPC authorization via ubus session API")) -o.optional= true -o.default = o.disabled - -o = ucs:taboption("advanced", Value, "script_timeout", translate("Maximum wait time for Lua, CGI, or ubus execution")) -o.placeholder = 60 -o.datatype = "uinteger" -o.optional = true - -o = ucs:taboption("advanced", Value, "network_timeout", translate("Maximum wait time for network activity")) -o.placeholder = 30 -o.datatype = "uinteger" -o.optional = true - -o = ucs:taboption("advanced", Value, "http_keepalive", translate("Connection reuse")) -o.placeholder = 20 -o.datatype = "uinteger" -o.optional = true - -o = ucs:taboption("advanced", Value, "tcp_keepalive", translate("TCP Keepalive")) -o.optional = true -o.datatype = "uinteger" -o.default = 1 - -o = ucs:taboption("advanced", Value, "max_connections", translate("Maximum number of connections")) -o.optional = true -o.datatype = "uinteger" - -o = ucs:taboption("advanced", Value, "max_requests", translate("Maximum number of script requests")) -o.optional = true -o.datatype = "uinteger" - -local s = m:section(TypedSection, "cert", translate("uHTTPd Self-signed Certificate Parameters")) - -s.template = "cbi/tsection" -s.anonymous = true - -o = s:option(Value, "days", translate("Valid for # of Days")) -o.default = 730 -o.datatype = "uinteger" - -o = s:option(Value, "bits", translate("Length of key in bits")) -o.default = 2048 -o.datatype = "min(1024)" - -o = s:option(Value, "commonname", translate("Server Hostname"), translate("a.k.a CommonName")) -o.default = luci.sys.hostname() - -o = s:option(Value, "country", translate("Country")) -o.default = "ZZ" - -o = s:option(Value, "state", translate("State")) -o.default = "Unknown" - -o = s:option(Value, "location", translate("Location")) -o.default = "Unknown" - -return m diff --git a/package/luci/applications/luci-app-uhttpd/po/ja/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/ja/uhttpd.po deleted file mode 100644 index 5729034046..0000000000 --- a/package/luci/applications/luci-app-uhttpd/po/ja/uhttpd.po +++ /dev/null @@ -1,213 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-01-01 18:11+0900\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Language-Team: \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.11\n" -"X-Poedit-Basepath: .\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "" -"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)" -msgstr "" -"(/old/path=/new/path) または (just /old/path which becomes /cgi-prefix/old/" -"path)" - -msgid "404 Error" -msgstr "404 エラー" - -msgid "A lightweight single-threaded HTTP(S) server" -msgstr "軽量なシングル スレッド HTTP(S) サーバーです。" - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Aliases" -msgstr "エイリアス" - -msgid "Base directory for files to be served" -msgstr "サーバーがホストするファイルのベースディレクトリです。" - -msgid "Bind to specific interface:port (by specifying interface address" -msgstr "" -"インターフェースのアドレスを使用して、特定のインターフェースとポートに関連付" -"けます。" - -msgid "CGI filetype handler" -msgstr "CGIファイル形式 ハンドラー" - -msgid "CGI is disabled if not present." -msgstr "指定しない場合、CGIは無効になります。" - -msgid "Config file (e.g. for credentials for Basic Auth)" -msgstr "設定ファイル(例: 基本認証用の資格情報)" - -msgid "Connection reuse" -msgstr "接続の再使用" - -msgid "Country" -msgstr "国" - -msgid "Disable JSON-RPC authorization via ubus session API" -msgstr "ubus セッションAPI経由のJSON-RPC認証を無効にする" - -msgid "Do not follow symlinks outside document root" -msgstr "ドキュメント ルート外へのシンボリックリンクを追随しない" - -msgid "Do not generate directory listings." -msgstr "ディレクトリの待ち受けを生成しない" - -msgid "Document root" -msgstr "ドキュメント ルート" - -msgid "E.g specify with index.html and index.php when using PHP" -msgstr "index.html や、PHPを使用しているときは index.php を設定します。" - -msgid "Embedded Lua interpreter is disabled if not present." -msgstr "指定しない場合、組込みLua インタープリタは無効になります。" - -msgid "Enable JSON-RPC Cross-Origin Resource Support" -msgstr "" - -msgid "For settings primarily geared to serving more than the web UI" -msgstr "主に、Web UI以上のものを提供することを対象とした設定です。" - -msgid "Full Web Server Settings" -msgstr "完全なWebサーバー設定" - -msgid "Full real path to handler for Lua scripts" -msgstr "Lua スクリプトへの絶対パス" - -msgid "General Settings" -msgstr "一般設定" - -msgid "HTTP listeners (address:port)" -msgstr "HTTP 待ち受け(アドレス:ポート)" - -msgid "HTTPS Certificate (DER Encoded)" -msgstr "HTTPS 証明書(DER エンコード)" - -msgid "HTTPS Private Key (DER Encoded)" -msgstr "HTTPS 秘密鍵(DER エンコード)" - -msgid "HTTPS listener (address:port)" -msgstr "HTTPS 待ち受け(アドレス:ポート)" - -msgid "Ignore private IPs on public interface" -msgstr "公開側インターフェースでのプライベートIPを無視する" - -msgid "Index page(s)" -msgstr "インデックス ページ" - -msgid "" -"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/" -"usr/bin/php-cgi')" -msgstr "" -"ファイル拡張子に関連付けるインタープリタです。('suffix=handler'、例: '.php=/" -"usr/bin/php-cgi')" - -msgid "Length of key in bits" -msgstr "鍵のビット数" - -msgid "Location" -msgstr "場所" - -msgid "Maximum number of connections" -msgstr "最大接続数" - -msgid "Maximum number of script requests" -msgstr "スクリプトの最大リクエスト数" - -msgid "Maximum wait time for Lua, CGI, or ubus execution" -msgstr "LuaやCGI、ubus実行の最大待機時間" - -msgid "Maximum wait time for network activity" -msgstr "ネットワークアクティビティの最大待機時間" - -msgid "Override path for ubus socket" -msgstr "ubus ソケットのパスを上書きする" - -msgid "Path prefix for CGI scripts" -msgstr "CGI スクリプトのパスプレフィクス" - -msgid "" -"Prevent access from private (RFC1918) IPs on an interface if it has an " -"public IP address" -msgstr "" -"グローバル IPアドレスを持つインターフェースでは、プライベート IP (RFC1918) か" -"らのアクセスをブロックします。" - -msgid "Realm for Basic Auth" -msgstr "基本認証の領域名" - -msgid "Redirect all HTTP to HTTPS" -msgstr "全てのHTTPをHTTPSにリダイレクトする" - -msgid "Remove configuration for certificate and key" -msgstr "証明書と鍵の設定を削除する" - -msgid "Remove old certificate and key" -msgstr "古い証明書と鍵を削除する" - -msgid "Server Hostname" -msgstr "サーバー ホスト名" - -msgid "" -"Settings which are either rarely needed or which affect serving the WebUI" -msgstr "まれに必要とされる設定、またはWeb UIに影響する設定です。" - -msgid "State" -msgstr "ステータス" - -msgid "TCP Keepalive" -msgstr "TCP キープアライブ" - -msgid "This permanently deletes the cert, key, and configuration to use same." -msgstr "" - -msgid "Valid for # of Days" -msgstr "有効日数" - -msgid "" -"Virtual URL or CGI script to display on status '404 Not Found'. Must begin " -"with '/'" -msgstr "" - -msgid "Virtual path prefix for Lua scripts" -msgstr "Lua スクリプトへの仮想パスプレフィクス" - -msgid "Virtual path prefix for ubus via JSON-RPC integration" -msgstr "" - -msgid "Will not use HTTP authentication if not present" -msgstr "指定しない場合、HTTP 認証は使用されません。" - -msgid "a.k.a CommonName" -msgstr "共通名" - -msgid "uHTTPd" -msgstr "uHTTPd" - -msgid "uHTTPd Self-signed Certificate Parameters" -msgstr "uHTTPd 自己署名証明書 パラメーター" - -msgid "" -"uHTTPd will generate a new self-signed certificate using the configuration " -"shown below." -msgstr "uHTTPd は、以下に表示した設定で新しい自己署名証明書を生成します。" - -msgid "ubus integration is disabled if not present" -msgstr "" - -#~ msgid "" -#~ "Virtual URL or CGI script to display on status '404 Not Found'. Must " -#~ "begin with '/'" -#~ msgstr "" -#~ "'404 Not Found' ステータスを表示する、仮想URLまたはCGIスクリプトです。'/' " -#~ "から始まる必要があります。" diff --git a/package/luci/applications/luci-app-uhttpd/po/pt-br/uhttpd.po b/package/luci/applications/luci-app-uhttpd/po/pt-br/uhttpd.po deleted file mode 100644 index af68b9e140..0000000000 --- a/package/luci/applications/luci-app-uhttpd/po/pt-br/uhttpd.po +++ /dev/null @@ -1,208 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "" -"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)" -msgstr "" -"(/old/path=/new/path) ou (just /old/path que se torna /cgi-prefix/old/path)" - -msgid "404 Error" -msgstr "Erro 404" - -msgid "A lightweight single-threaded HTTP(S) server" -msgstr "Um servidor HTTP(S) leve de únida thread." - -msgid "Advanced Settings" -msgstr "Opções Avançadas" - -msgid "Aliases" -msgstr "Pseudônimos (Aliases)" - -msgid "Base directory for files to be served" -msgstr "Diretório Base para publicar arquivos" - -msgid "Bind to specific interface:port (by specifying interface address" -msgstr "" -"Escute em uma interface:porta específica (especificando o endereço da " -"interface" - -msgid "CGI filetype handler" -msgstr "Interpretador de tipo de arquivo CGI" - -msgid "CGI is disabled if not present." -msgstr "O CGI estará desabilitado se não presente." - -msgid "Config file (e.g. for credentials for Basic Auth)" -msgstr "Arquivo de configuração (ex: credenciais para autenticação básica)" - -msgid "Connection reuse" -msgstr "Reutilizar conexão" - -msgid "Country" -msgstr "País" - -msgid "Disable JSON-RPC authorization via ubus session API" -msgstr "Desabilita a autorização JSON-RPC através da API de sessão ubus" - -msgid "Do not follow symlinks outside document root" -msgstr "Não siga ligações simbólicas (symlinks) para fora do documento raiz" - -msgid "Do not generate directory listings." -msgstr "Não gere listagens de diretórios" - -msgid "Document root" -msgstr "Documento Raiz" - -msgid "E.g specify with index.html and index.php when using PHP" -msgstr "Ex: use index.html e index.php quando usar PHP" - -msgid "Embedded Lua interpreter is disabled if not present." -msgstr "O interpretador Lua embutido será desabilitado se não presente." - -msgid "Enable JSON-RPC Cross-Origin Resource Support" -msgstr "Habilite o suporte para recursos JSON-RPC de origem cruzada" - -msgid "For settings primarily geared to serving more than the web UI" -msgstr "Para ajustes envolvidos com mais do que prover a interface web" - -msgid "Full Web Server Settings" -msgstr "Configurações Completas do Servidor Web" - -msgid "Full real path to handler for Lua scripts" -msgstr "Caminho completo para o interpretador de scripts Lua" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "HTTP listeners (address:port)" -msgstr "Escutas do HTTP (endereço:porta)" - -msgid "HTTPS Certificate (DER Encoded)" -msgstr "Certificado do HTTPS (codificado em formato PEM)" - -msgid "HTTPS Private Key (DER Encoded)" -msgstr "Chave Privada do HTTPS (codificado como DER)" - -msgid "HTTPS listener (address:port)" -msgstr "Escuta do HTTPS (endereço:porta)" - -msgid "Ignore private IPs on public interface" -msgstr "Ignore endereços IP privados na interface pública" - -msgid "Index page(s)" -msgstr "Página(s) Índice(s)" - -msgid "" -"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/" -"usr/bin/php-cgi')" -msgstr "" -"Interpretador para associar com extensões de arquivos " -"('extensão=interpretador', ex: '.php=/usr/bin/php-cgi')" - -msgid "Length of key in bits" -msgstr "Comprimento da chave em bits" - -msgid "Location" -msgstr "Localização" - -msgid "Maximum number of connections" -msgstr "Número máximo de requisições para script" - -msgid "Maximum number of script requests" -msgstr "Número máximo de requisições para script" - -msgid "Maximum wait time for Lua, CGI, or ubus execution" -msgstr "Tempo máximo de espera para execuções de Lua, CGI ou ubus" - -msgid "Maximum wait time for network activity" -msgstr "Tempo máximo de espera para atividade na rede" - -msgid "Override path for ubus socket" -msgstr "Sobrescrever o caminho do socket ubus" - -msgid "Path prefix for CGI scripts" -msgstr "Prefixo do caminho para scripts CGI" - -msgid "" -"Prevent access from private (RFC1918) IPs on an interface if it has an " -"public IP address" -msgstr "" -"Evite acesso de endereços privados (RFC1918) na interface que tem um " -"endereço IP público" - -msgid "Realm for Basic Auth" -msgstr "Reino para Autenticação Simples" - -msgid "Redirect all HTTP to HTTPS" -msgstr "Redirecionar todo tráfego HTTP para HTTPS" - -msgid "Remove configuration for certificate and key" -msgstr "Remove a configuração para o certificado e chave" - -msgid "Remove old certificate and key" -msgstr "Remove os certificados e chaves antigas" - -msgid "Server Hostname" -msgstr "Nome do Servidor" - -msgid "" -"Settings which are either rarely needed or which affect serving the WebUI" -msgstr "Ajustes que são raramente usadas ou que afetam a interface web" - -msgid "State" -msgstr "Estado" - -msgid "TCP Keepalive" -msgstr "Manter conexões TCP abertas (Keepalive)" - -msgid "This permanently deletes the cert, key, and configuration to use same." -msgstr "Isto apaga permanentemente o certificado, a chave e a configuração." - -msgid "Valid for # of Days" -msgstr "Valido por # dias" - -msgid "" -"Virtual URL or CGI script to display on status '404 Not Found'. Must begin " -"with '/'" -msgstr "" -"URL virtual ou script CGI para mostrar quando ocorrer erro '404 Não " -"Encontrado'. Deve começar com '/'" - -msgid "Virtual path prefix for Lua scripts" -msgstr "Prefixo do caminho virtual para scripts Lua" - -msgid "Virtual path prefix for ubus via JSON-RPC integration" -msgstr "Prefixo do caminho virtual para o ubus através da integração JSON-RPC" - -msgid "Will not use HTTP authentication if not present" -msgstr "Não usar autenticação HTTP se não presente" - -msgid "a.k.a CommonName" -msgstr "também conhecido como Nome Comum" - -msgid "uHTTPd" -msgstr "uHTTPd" - -msgid "uHTTPd Self-signed Certificate Parameters" -msgstr "Parâmetros do Certificado Auto-assinado do uHTTPd" - -msgid "" -"uHTTPd will generate a new self-signed certificate using the configuration " -"shown below." -msgstr "" -"o uHTTPd gerará um certificado auto-assinado usando a configuração mostrada " -"abaixo." - -msgid "ubus integration is disabled if not present" -msgstr "A integração com o ubus será desativada se não presente" diff --git a/package/luci/applications/luci-app-uhttpd/po/templates/uhttpd.pot b/package/luci/applications/luci-app-uhttpd/po/templates/uhttpd.pot deleted file mode 100644 index 5503450e0a..0000000000 --- a/package/luci/applications/luci-app-uhttpd/po/templates/uhttpd.pot +++ /dev/null @@ -1,186 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "" -"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)" -msgstr "" - -msgid "404 Error" -msgstr "" - -msgid "A lightweight single-threaded HTTP(S) server" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Aliases" -msgstr "" - -msgid "Base directory for files to be served" -msgstr "" - -msgid "Bind to specific interface:port (by specifying interface address" -msgstr "" - -msgid "CGI filetype handler" -msgstr "" - -msgid "CGI is disabled if not present." -msgstr "" - -msgid "Config file (e.g. for credentials for Basic Auth)" -msgstr "" - -msgid "Connection reuse" -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Disable JSON-RPC authorization via ubus session API" -msgstr "" - -msgid "Do not follow symlinks outside document root" -msgstr "" - -msgid "Do not generate directory listings." -msgstr "" - -msgid "Document root" -msgstr "" - -msgid "E.g specify with index.html and index.php when using PHP" -msgstr "" - -msgid "Embedded Lua interpreter is disabled if not present." -msgstr "" - -msgid "Enable JSON-RPC Cross-Origin Resource Support" -msgstr "" - -msgid "For settings primarily geared to serving more than the web UI" -msgstr "" - -msgid "Full Web Server Settings" -msgstr "" - -msgid "Full real path to handler for Lua scripts" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "HTTP listeners (address:port)" -msgstr "" - -msgid "HTTPS Certificate (DER Encoded)" -msgstr "" - -msgid "HTTPS Private Key (DER Encoded)" -msgstr "" - -msgid "HTTPS listener (address:port)" -msgstr "" - -msgid "Ignore private IPs on public interface" -msgstr "" - -msgid "Index page(s)" -msgstr "" - -msgid "" -"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/" -"usr/bin/php-cgi')" -msgstr "" - -msgid "Length of key in bits" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Maximum number of connections" -msgstr "" - -msgid "Maximum number of script requests" -msgstr "" - -msgid "Maximum wait time for Lua, CGI, or ubus execution" -msgstr "" - -msgid "Maximum wait time for network activity" -msgstr "" - -msgid "Override path for ubus socket" -msgstr "" - -msgid "Path prefix for CGI scripts" -msgstr "" - -msgid "" -"Prevent access from private (RFC1918) IPs on an interface if it has an " -"public IP address" -msgstr "" - -msgid "Realm for Basic Auth" -msgstr "" - -msgid "Redirect all HTTP to HTTPS" -msgstr "" - -msgid "Remove configuration for certificate and key" -msgstr "" - -msgid "Remove old certificate and key" -msgstr "" - -msgid "Server Hostname" -msgstr "" - -msgid "" -"Settings which are either rarely needed or which affect serving the WebUI" -msgstr "" - -msgid "State" -msgstr "" - -msgid "TCP Keepalive" -msgstr "" - -msgid "This permanently deletes the cert, key, and configuration to use same." -msgstr "" - -msgid "Valid for # of Days" -msgstr "" - -msgid "" -"Virtual URL or CGI script to display on status '404 Not Found'. Must begin " -"with '/'" -msgstr "" - -msgid "Virtual path prefix for Lua scripts" -msgstr "" - -msgid "Virtual path prefix for ubus via JSON-RPC integration" -msgstr "" - -msgid "Will not use HTTP authentication if not present" -msgstr "" - -msgid "a.k.a CommonName" -msgstr "" - -msgid "uHTTPd" -msgstr "" - -msgid "uHTTPd Self-signed Certificate Parameters" -msgstr "" - -msgid "" -"uHTTPd will generate a new self-signed certificate using the configuration " -"shown below." -msgstr "" - -msgid "ubus integration is disabled if not present" -msgstr "" diff --git a/package/luci/applications/luci-app-unbound/Makefile b/package/luci/applications/luci-app-unbound/Makefile deleted file mode 100644 index 6d953e13b2..0000000000 --- a/package/luci/applications/luci-app-unbound/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Unbound Recursive DNS Resolver Configuration -LUCI_DEPENDS:=+unbound - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-unbound/luasrc/controller/unbound.lua b/package/luci/applications/luci-app-unbound/luasrc/controller/unbound.lua deleted file mode 100644 index b44bf038eb..0000000000 --- a/package/luci/applications/luci-app-unbound/luasrc/controller/unbound.lua +++ /dev/null @@ -1,151 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Copyright 2017 Eric Luehrsen --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.unbound", package.seeall) - - -function index() - local ucl = luci.model.uci.cursor() - local valexp = ucl:get_first("unbound", "unbound", "extended_luci") - local valman = ucl:get_first("unbound", "unbound", "manual_conf") - - - if not nixio.fs.access("/etc/config/unbound") then - return - end - - - if valexp == "1" then - -- Expanded View - entry({"admin", "services", "unbound"}, firstchild(), _("Recursive DNS")).dependent = false - - -- UCI Tab(s) - entry({"admin", "services", "unbound", "configure"}, cbi("unbound/configure"), _("Settings"), 10) - - -- Status Tab(s) - entry({"admin", "services", "unbound", "status"}, firstchild(), _("Status"), 20) - entry({"admin", "services", "unbound", "status", "syslog"}, call("QuerySysLog"), _("Log"), 50).leaf = true - - - if nixio.fs.access("/usr/sbin/unbound-control") then - -- Require unbound-control to execute - entry({"admin", "services", "unbound", "status", "statistics"}, call("QueryStatistics"), _("Statistics"), 10).leaf = true - entry({"admin", "services", "unbound", "status", "localdata"}, call("QueryLocalData"), _("Local Data"), 20).leaf = true - entry({"admin", "services", "unbound", "status", "localzone"}, call("QueryLocalZone"), _("Local Zones"), 30).leaf = true - - else - entry({"admin", "services", "unbound", "status", "statistics"}, call("ShowEmpty"), _("Statistics"), 10).leaf = true - end - - - -- Raw File Tab(s) - entry({"admin", "services", "unbound", "files"}, firstchild(), _("Files"), 30) - - - if valman ~= "1" then - entry({"admin", "services", "unbound", "files", "base"}, call("ShowUnboundConf"), _("UCI: Unbound"), 10).leaf = true - else - entry({"admin", "services", "unbound", "files", "base"}, cbi("unbound/manual"), _("Edit: Unbound"), 10).leaf = true - end - - - entry({"admin", "services", "unbound", "files", "server"}, cbi("unbound/server"), _("Edit: Server"), 20).leaf = true - entry({"admin", "services", "unbound", "files", "extended"}, cbi("unbound/extended"), _("Edit: Extended"), 30).leaf = true - - - if nixio.fs.access("/var/lib/unbound/unbound_dhcp.conf") then - entry({"admin", "services", "unbound", "files", "dhcp"}, call("ShowDHCPConf"), _("Include: DHCP"), 40).leaf = true - end - - - if nixio.fs.access("/var/lib/unbound/adb_list.overall") then - entry({"admin", "services", "unbound", "files", "adblock"}, call("ShowAdblock"), _("Include: Adblock"), 50).leaf = true - end - - else - -- Simple View to UCI only - entry({"admin", "services", "unbound"}, cbi("unbound/configure"), _("Recursive DNS")).dependent = false - end -end - - -function ShowEmpty() - local lclhead = "Unbound Control" - local lcldesc = luci.i18n.translate("This could display more statistics with the unbound-control package.") - luci.template.render("unbound/show-empty", {heading = lclhead, description = lcldesc}) -end - - -function QuerySysLog() - local lclhead = "System Log" - local lcldata = luci.util.exec("logread | grep -i unbound") - local lcldesc = luci.i18n.translate("This shows syslog filtered for events involving Unbound.") - luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata}) -end - - -function QueryStatistics() - local lclhead = "Unbound Control Stats" - local lcldata = luci.util.exec("unbound-control -c /var/lib/unbound/unbound.conf stats_noreset") - local lcldesc = luci.i18n.translate("This shows some performance statistics tracked by Unbound.") - luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata}) -end - - -function QueryLocalData() - local lclhead = "Unbound Control Local Data" - local lcldata = luci.util.exec("unbound-control -c /var/lib/unbound/unbound.conf list_local_data") - local lcldesc = luci.i18n.translate("This shows local host records that shortcut recursion.") - luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata}) -end - - -function QueryLocalZone() - local lclhead = "Unbound Control Local Zones" - local lcldata = luci.util.exec("unbound-control -c /var/lib/unbound/unbound.conf list_local_zones") - local lcldesc = luci.i18n.translate("This shows local zone definitions that affect recursion routing or processing. ") - luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata}) -end - - -function ShowUnboundConf() - local unboundfile = "/var/lib/unbound/unbound.conf" - local lclhead = "Unbound Conf" - local lcldata = nixio.fs.readfile(unboundfile) - local lcldesc = luci.i18n.translate("This shows configuration generated by UCI:") - lcldesc = lcldesc .. " (" .. unboundfile .. ")" - luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata}) -end - - -function ShowDHCPConf() - local dhcpfile = "/var/lib/unbound/unbound_dhcp.conf" - local lclhead = "DHCP Conf" - local lcldata = nixio.fs.readfile(dhcpfile) - local lcldesc = luci.i18n.translate("This shows LAN hosts added by DHCP hook scripts:") - lcldesc = lcldesc .. " (" .. dhcpfile .. ")" - luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata}) -end - - -function ShowAdblock() - local adblockfile = "/var/lib/unbound/adb_list.overall" - local lclhead = "Adblock Conf" - local lcldata, lcldesc - - - if nixio.fs.stat(adblockfile).size > 262144 then - lcldesc = luci.i18n.translate("Adblock domain list is too large for LuCI:") - lcldesc = lcldesc .. " (" .. adblockfile .. ")" - luci.template.render("unbound/show-empty", {heading = lclhead, description = lcldesc}) - - else - lcldata = nixio.fs.readfile(adblockfile) - lcldesc = luci.i18n.translate("This shows blocked domains provided by Adblock scripts:") - lcldesc = lcldesc .. " (" .. adblockfile .. ")" - luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata}) - end -end - diff --git a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua deleted file mode 100644 index cdf7757e3a..0000000000 --- a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua +++ /dev/null @@ -1,273 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2016 Eric Luehrsen --- Copyright 2016 Dan Luedtke --- Licensed to the public under the Apache License 2.0. - -local m1, s1 -local ena, mcf, lci, lsv, rlh, rpv, vld, nvd, eds, prt, tlm -local ctl, dlk, dom, dty, lfq, wfq, exa, dp6, d64, pfx, qry, qrs -local pro, tgr, rsc, rsn, ag2, stt -local ucl = luci.model.uci.cursor() -local valman = ucl:get_first("unbound", "unbound", "manual_conf") - -m1 = Map("unbound") - -s1 = m1:section(TypedSection, "unbound") -s1.addremove = false -s1.anonymous = true - ---LuCI, Unbound, or Not -s1:tab("basic", translate("Basic"), - translatef("

    Unbound Basic Settings

    \n" - .. "Unbound" - .. " is a validating, recursive, and caching DNS resolver. " - .. "UCI help can be found on " - .. "github.", - "https://www.unbound.net/", - "https://github.com/openwrt/packages/blob/master/net/unbound/files/README.md")) - -ena = s1:taboption("basic", Flag, "enabled", translate("Enable Unbound:"), - translate("Enable the initialization scripts for Unbound")) -ena.rmempty = false - -mcf = s1:taboption("basic", Flag, "manual_conf", translate("Manual Conf:"), - translate("Skip UCI and use /etc/unbound/unbound.conf")) -mcf.rmempty = false - -lci = s1:taboption("basic", Flag, "extended_luci", translate("Advanced LuCI:"), - translate("See detailed tabs for debug and advanced manual configuration")) -lci.rmempty = false - - -function ena.cfgvalue(self, section) - return luci.sys.init.enabled("unbound") and self.enabled or self.disabled -end - - -function ena.write(self, section, value) - if value == "1" then - luci.sys.init.enable("unbound") - luci.sys.call("/etc/init.d/unbound start >/dev/null") - else - luci.sys.call("/etc/init.d/unbound stop >/dev/null") - luci.sys.init.disable("unbound") - end - - return Flag.write(self, section, value) -end - - -if valman ~= "1" then - -- Not in manual configuration mode; show UCI - s1:tab("advanced", translate("Advanced"), - translatef("

    Unbound Advanced Settings

    \n" - .. "Advanced setttings and plugin modules for " - .. "Unbound" - .. " DNS resolver.", "https://www.unbound.net/")) - - s1:tab("resource", translate("Resource"), - translatef("

    Unbound Resource Settings

    \n" - .. "Memory and protocol setttings for " - .. "Unbound" - .. " DNS resolver.", "https://www.unbound.net/")) - - --Basic Tab - lsv = s1:taboption("basic", Flag, "localservice", translate("Local Service:"), - translate("Accept queries only from local subnets")) - lsv.rmempty = false - - rlh = s1:taboption("basic", Flag, "rebind_localhost", translate("Block Localhost Rebind:"), - translate("Prevent upstream response of 127.0.0.0/8")) - rlh.rmempty = false - - rpv = s1:taboption("basic", Flag, "rebind_protection", translate("Block Private Rebind:"), - translate("Prevent upstream response of RFC1918 ranges")) - rpv.rmempty = false - - vld = s1:taboption("basic", Flag, "validator", translate("Enable DNSSEC:"), - translate("Enable the DNSSEC validator module")) - vld.rmempty = false - - nvd = s1:taboption("basic", Flag, "validator_ntp", translate("DNSSEC NTP Fix:"), - translate("Break the loop where DNSSEC needs NTP and NTP needs DNS")) - nvd.rmempty = false - nvd:depends({ validator = true }) - - eds = s1:taboption("basic", Value, "edns_size", translate("EDNS Size:"), - translate("Limit extended DNS packet size")) - eds.datatype = "and(uinteger,min(512),max(4096))" - eds.rmempty = false - - prt = s1:taboption("basic", Value, "listen_port", translate("Listening Port:"), - translate("Choose Unbounds listening port")) - prt.datatype = "port" - prt.rmempty = false - - tlm = s1:taboption("basic", Value, "ttl_min", translate("TTL Minimum:"), - translate("Prevent excessively short cache periods")) - tlm.datatype = "and(uinteger,min(0),max(600))" - tlm.rmempty = false - - --Advanced Tab - ctl = s1:taboption("advanced", ListValue, "unbound_control", translate("Unbound Control App:"), - translate("Enable access for unbound-control")) - ctl.rmempty = false - ctl:value("0", translate("No Remote Control")) - ctl:value("1", translate("Local Host, No Encryption")) - ctl:value("2", translate("Local Host, Encrypted")) - ctl:value("3", translate("Local Subnet, Encrypted")) - ctl:value("4", translate("Local Subnet, Static Encryption")) - - dlk = s1:taboption("advanced", ListValue, "dhcp_link", translate("DHCP Link:"), - translate("Link to supported programs to load DHCP into DNS")) - dlk:value("none", translate("No Link")) - dlk:value("dnsmasq", "dnsmasq") - dlk:value("odhcpd", "odhcpd") - dlk.rmempty = false - - dom = s1:taboption("advanced", Value, "domain", translate("Local Domain:"), - translate("Domain suffix for this router and DHCP clients")) - dom.placeholder = "lan" - dom:depends({ dhcp_link = "none" }) - dom:depends({ dhcp_link = "odhcpd" }) - - dty = s1:taboption("advanced", ListValue, "domain_type", translate("Local Domain Type:"), - translate("How to treat queries of this local domain")) - dty:value("deny", translate("Ignored")) - dty:value("refuse", translate("Refused")) - dty:value("static", translate("Only Local")) - dty:value("transparent", translate("Also Forwarded")) - dty:depends({ dhcp_link = "none" }) - dty:depends({ dhcp_link = "odhcpd" }) - - lfq = s1:taboption("advanced", ListValue, "add_local_fqdn", translate("LAN DNS:"), - translate("How to enter the LAN or local network router in DNS")) - lfq:value("0", translate("No DNS")) - lfq:value("1", translate("Hostname, Primary Address")) - lfq:value("2", translate("Hostname, All Addresses")) - lfq:value("3", translate("Host FQDN, All Addresses")) - lfq:value("4", translate("Interface FQDN, All Addresses")) - lfq:depends({ dhcp_link = "none" }) - lfq:depends({ dhcp_link = "odhcpd" }) - - wfq = s1:taboption("advanced", ListValue, "add_wan_fqdn", translate("WAN DNS:"), - translate("Override the WAN side router entry in DNS")) - wfq:value("0", translate("Upstream")) - wfq:value("1", translate("Hostname, Primary Address")) - wfq:value("2", translate("Hostname, All Addresses")) - wfq:value("3", translate("Host FQDN, All Addresses")) - wfq:value("4", translate("Interface FQDN, All Addresses")) - wfq:depends({ dhcp_link = "none" }) - wfq:depends({ dhcp_link = "odhcpd" }) - - exa = s1:taboption("advanced", ListValue, "add_extra_dns", translate("Extra DNS:"), - translate("Use extra DNS entries found in /etc/config/dhcp")) - exa:value("0", translate("Ignore")) - exa:value("1", translate("Include Network/Hostnames")) - exa:value("2", translate("Advanced MX/SRV RR")) - exa:value("3", translate("Advanced CNAME RR")) - exa:depends({ dhcp_link = "none" }) - exa:depends({ dhcp_link = "odhcpd" }) - - dp6 = s1:taboption("advanced", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"), - translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)")) - dp6.rmempty = false - - d64 = s1:taboption("advanced", Flag, "dns64", translate("Enable DNS64:"), - translate("Enable the DNS64 module")) - d64.rmempty = false - - pfx = s1:taboption("advanced", Value, "dns64_prefix", translate("DNS64 Prefix:"), - translate("Prefix for generated DNS64 addresses")) - pfx.datatype = "ip6addr" - pfx.placeholder = "64:ff9b::/96" - pfx.optional = true - pfx:depends({ dns64 = true }) - - qry = s1:taboption("advanced", Flag, "query_minimize", translate("Query Minimize:"), - translate("Break down query components for limited added privacy")) - qry.rmempty = false - - qrs = s1:taboption("advanced", Flag, "query_min_strict", translate("Strict Minimize:"), - translate("Strict version of 'query minimize' but it can break DNS")) - qrs.rmempty = false - qrs:depends({ query_minimize = true }) - - --TODO: dnsmasq needs to not reference resolve-file and get off port 53. - - --Resource Tuning Tab - pro = s1:taboption("resource", ListValue, "protocol", translate("Recursion Protocol:"), - translate("Chose the protocol recursion queries leave on")) - pro:value("mixed", translate("IP4 and IP6")) - pro:value("ip6_prefer", translate("IP6 Preferred")) - pro:value("ip4_only", translate("IP4 Only")) - pro:value("ip6_only", translate("IP6 Only")) - pro.rmempty = false - - rsn = s1:taboption("resource", ListValue, "recursion", translate("Recursion Strength:"), - translate("Recursion activity affects memory growth and CPU load")) - rsn:value("aggressive", translate("Aggressive")) - rsn:value("default", translate("Default")) - rsn:value("passive", translate("Passive")) - rsn.rmempty = false - - rsc = s1:taboption("resource", ListValue, "resource", translate("Memory Resource:"), - translate("Use menu System/Processes to observe any memory growth")) - rsc:value("large", translate("Large")) - rsc:value("medium", translate("Medium")) - rsc:value("small", translate("Small")) - rsc:value("tiny", translate("Tiny")) - rsc.rmempty = false - - ag2 = s1:taboption("resource", Value, "root_age", translate("Root DSKEY Age:"), - translate("Limit days between RFC5011 to reduce flash writes")) - ag2.datatype = "and(uinteger,min(1),max(99))" - ag2:value("3", "3") - ag2:value("9", "9 ("..translate("default")..")") - ag2:value("12", "12") - ag2:value("24", "24") - ag2:value("99", "99 ("..translate("never")..")") - - stt = s1:taboption("resource", Flag, "extended_stats", translate("Extended Statistics:"), - translate("Extended statistics are printed from unbound-control")) - stt.rmempty = false - - tgr = s1:taboption("resource", Value, "trigger", translate("Trigger Networks:"), - translate("Networks that may trigger Unbound to reload (avoid wan6)")) - tgr.template = "cbi/network_netlist" - tgr.widget = "checkbox" - tgr.cast = "string" - -else - s1:tab("rfc5011", translate("RFC5011"), - translatef("

    Unbound RFC5011 Settings

    \n" - .. "RFC5011 copy scripts protect flash ROM even with UCI disabled.")) - - ag2 = s1:taboption("rfc5011", Value, "root_age", translate("Root DSKEY Age:"), - translate("Limit days to copy /var/->/etc/ to reduce flash writes")) - ag2.datatype = "and(uinteger,min(1),max(99))" - ag2:value("3", "3") - ag2:value("9", "9 ("..translate("default")..")") - ag2:value("12", "12") - ag2:value("24", "24") - ag2:value("99", "99 ("..translate("never")..")") -end - - -function m1.on_after_commit(self) - function ena.validate(self, value) - if value ~= "0" then - luci.sys.call("/etc/init.d/unbound restart >/dev/null 2>&1") - else - luci.sys.call("/etc/init.d/unbound stop >/dev/null 2>&1") - end - end - - - -- Restart Unbound with configuration and reload the page (some options hide) - luci.http.redirect(luci.dispatcher.build_url("admin", "services", "unbound")) -end - - -return m1 - diff --git a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua deleted file mode 100644 index 67d2ec6c6b..0000000000 --- a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua +++ /dev/null @@ -1,30 +0,0 @@ --- Copyright 2016 Eric Luehrsen --- Licensed to the public under the Apache License 2.0. - -local m4, s4, frm -local filename = "/etc/unbound/unbound_ext.conf" -local description = translatef("Here you may edit 'forward:' and 'remote-control:' in an extended 'include:'") -description = description .. " (" .. filename .. ")" - -m4 = SimpleForm("editing", nil) -m4:append(Template("unbound/css-editing")) -m4.submit = translate("Save") -m4.reset = false -s4 = m4:section(SimpleSection, "Unbound Extended Conf", description) -frm = s4:option(TextValue, "data") -frm.datatype = "string" -frm.rows = 20 - - -function frm.cfgvalue() - return nixio.fs.readfile(filename) or "" -end - - -function frm.write(self, section, data) - return nixio.fs.writefile(filename, luci.util.trim(data:gsub("\r\n", "\n"))) -end - - -return m4 - diff --git a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua deleted file mode 100644 index 5cfb9c32c1..0000000000 --- a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua +++ /dev/null @@ -1,30 +0,0 @@ --- Copyright 2016 Eric Luehrsen --- Licensed to the public under the Apache License 2.0. - -local m2, s2, frm -local filename = "/etc/unbound/unbound.conf" -local description = translatef("Here you may edit raw 'unbound.conf' when you don't use UCI:") -description = description .. " (" .. filename .. ")" - -m2 = SimpleForm("editing", nil) -m2:append(Template("unbound/css-editing")) -m2.submit = translate("Save") -m2.reset = false -s2 = m2:section(SimpleSection, "Unbound Conf", description) -frm = s2:option(TextValue, "data") -frm.datatype = "string" -frm.rows = 20 - - -function frm.cfgvalue() - return nixio.fs.readfile(filename) or "" -end - - -function frm.write(self, section, data) - return nixio.fs.writefile(filename, luci.util.trim(data:gsub("\r\n", "\n"))) -end - - -return m2 - diff --git a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua deleted file mode 100644 index d0ac407847..0000000000 --- a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua +++ /dev/null @@ -1,30 +0,0 @@ --- Copyright 2016 Eric Luehrsen --- Licensed to the public under the Apache License 2.0. - -local m3, s3, frm -local filename = "/etc/unbound/unbound_srv.conf" -local description = translatef("Here you may edit the 'server:' clause in an internal 'include:'") -description = description .. " (" .. filename .. ")" - -m3 = SimpleForm("editing", nil) -m3:append(Template("unbound/css-editing")) -m3.submit = translate("Save") -m3.reset = false -s3 = m3:section(SimpleSection, "Unbound Server Conf", description) -frm = s3:option(TextValue, "data") -frm.datatype = "string" -frm.rows = 20 - - -function frm.cfgvalue() - return nixio.fs.readfile(filename) or "" -end - - -function frm.write(self, section, data) - return nixio.fs.writefile(filename, luci.util.trim(data:gsub("\r\n", "\n"))) -end - - -return m3 - diff --git a/package/luci/applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm b/package/luci/applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm deleted file mode 100644 index 44d09378c3..0000000000 --- a/package/luci/applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm +++ /dev/null @@ -1,8 +0,0 @@ - - diff --git a/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm b/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm deleted file mode 100644 index 87d6cc68cb..0000000000 --- a/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm +++ /dev/null @@ -1,5 +0,0 @@ -<%+header%> -

    <%=heading:pcdata()%>

    -

    <%=description:pcdata()%>

    -<%+footer%> - diff --git a/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm b/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm deleted file mode 100644 index c0a7d133dc..0000000000 --- a/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm +++ /dev/null @@ -1,8 +0,0 @@ -<%+header%> -

    <%=heading:pcdata()%>

    -

    <%=description:pcdata()%>

    -
    - -
    -<%+footer%> - diff --git a/package/luci/applications/luci-app-unbound/root/etc/uci-defaults/60_luci-unbound b/package/luci/applications/luci-app-unbound/root/etc/uci-defaults/60_luci-unbound deleted file mode 100644 index c2ac8c93b6..0000000000 --- a/package/luci/applications/luci-app-unbound/root/etc/uci-defaults/60_luci-unbound +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@unbound[-1] - add ucitrack unbound - set ucitrack.@unbound[-1].init=unbound - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 - diff --git a/package/luci/applications/luci-app-upnp/Makefile b/package/luci/applications/luci-app-upnp/Makefile deleted file mode 100644 index 324e3e2aa4..0000000000 --- a/package/luci/applications/luci-app-upnp/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Universal Plug & Play configuration module -LUCI_DEPENDS:=+miniupnpd - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-upnp/luasrc/controller/upnp.lua b/package/luci/applications/luci-app-upnp/luasrc/controller/upnp.lua deleted file mode 100644 index e485708f0e..0000000000 --- a/package/luci/applications/luci-app-upnp/luasrc/controller/upnp.lua +++ /dev/null @@ -1,87 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.upnp", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/upnpd") then - return - end - - local page - - page = entry({"admin", "services", "upnp"}, cbi("upnp/upnp"), _("UPnP")) - page.dependent = true - - entry({"admin", "services", "upnp", "status"}, call("act_status")).leaf = true - entry({"admin", "services", "upnp", "delete"}, post("act_delete")).leaf = true -end - -function act_status() - local uci = luci.model.uci.cursor() - local lease_file = uci:get("upnpd", "config", "upnp_lease_file") - - local ipt = io.popen("iptables --line-numbers -t nat -xnvL MINIUPNPD 2>/dev/null") - if ipt then - local upnpf = lease_file and io.open(lease_file, "r") - local fwd = { } - while true do - local ln = ipt:read("*l") - if not ln then - break - elseif ln:match("^%d+") then - local num, proto, extport, intaddr, intport = - ln:match("^(%d+).-([a-z]+).-dpt:(%d+) to:(%S-):(%d+)") - local descr = "" - - if num and proto and extport and intaddr and intport then - num = tonumber(num) - extport = tonumber(extport) - intport = tonumber(intport) - - if upnpf then - local uln = upnpf:read("*l") - if uln then descr = uln:match(string.format("^%s:%d:%s:%d:%%d*:(.*)$", proto:upper(), extport, intaddr, intport)) end - if not descr then descr = "" end - end - - fwd[#fwd+1] = { - num = num, - proto = proto:upper(), - extport = extport, - intaddr = intaddr, - intport = intport, - descr = descr - } - end - end - end - - if upnpf then upnpf:close() end - ipt:close() - - luci.http.prepare_content("application/json") - luci.http.write_json(fwd) - end -end - -function act_delete(num) - local idx = tonumber(num) - local uci = luci.model.uci.cursor() - - if idx and idx > 0 then - luci.sys.call("iptables -t filter -D MINIUPNPD %d 2>/dev/null" % idx) - luci.sys.call("iptables -t nat -D MINIUPNPD %d 2>/dev/null" % idx) - - local lease_file = uci:get("upnpd", "config", "upnp_lease_file") - if lease_file and nixio.fs.access(lease_file) then - luci.sys.call("sed -i -e '%dd' %q" %{ idx, lease_file }) - end - - luci.http.status(200, "OK") - return - end - - luci.http.status(400, "Bad request") -end diff --git a/package/luci/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua b/package/luci/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua deleted file mode 100644 index 74b9d1d033..0000000000 --- a/package/luci/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua +++ /dev/null @@ -1,103 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("upnpd", luci.util.pcdata(translate("Universal Plug & Play")), - translate("UPnP allows clients in the local network to automatically configure the router.")) - -m:section(SimpleSection).template = "upnp_status" - -s = m:section(NamedSection, "config", "upnpd", translate("MiniUPnP settings")) -s.addremove = false -s:tab("general", translate("General Settings")) -s:tab("advanced", translate("Advanced Settings")) - -e = s:taboption("general", Flag, "enabled", translate("Start UPnP and NAT-PMP service")) -e.rmempty = false - ---function e.cfgvalue(self, section) --- return luci.sys.init.enabled("miniupnpd") and self.enabled or self.disabled ---end - -function e.write(self, section, value) - if value == "1" then - luci.sys.call("/etc/init.d/miniupnpd start >/dev/null") - else - luci.sys.call("/etc/init.d/miniupnpd stop >/dev/null") - end - - return Flag.write(self, section, value) -end - -s:taboption("general", Flag, "enable_upnp", translate("Enable UPnP functionality")).default = "1" -s:taboption("general", Flag, "enable_natpmp", translate("Enable NAT-PMP functionality")).default = "1" - -s:taboption("general", Flag, "secure_mode", translate("Enable secure mode"), - translate("Allow adding forwards only to requesting ip addresses")).default = "1" - -s:taboption("general", Flag, "log_output", translate("Enable additional logging"), - translate("Puts extra debugging information into the system log")) - -s:taboption("general", Value, "download", translate("Downlink"), - translate("Value in KByte/s, informational only")).rmempty = true - -s:taboption("general", Value, "upload", translate("Uplink"), - translate("Value in KByte/s, informational only")).rmempty = true - -port = s:taboption("general", Value, "port", translate("Port")) -port.datatype = "port" -port.default = 5000 - - -s:taboption("advanced", Flag, "system_uptime", translate("Report system instead of daemon uptime")).default = "1" - -s:taboption("advanced", Value, "uuid", translate("Device UUID")) -s:taboption("advanced", Value, "serial_number", translate("Announced serial number")) -s:taboption("advanced", Value, "model_number", translate("Announced model number")) - -ni = s:taboption("advanced", Value, "notify_interval", translate("Notify interval")) -ni.datatype = "uinteger" -ni.placeholder = 30 - -ct = s:taboption("advanced", Value, "clean_ruleset_threshold", translate("Clean rules threshold")) -ct.datatype = "uinteger" -ct.placeholder = 20 - -ci = s:taboption("advanced", Value, "clean_ruleset_interval", translate("Clean rules interval")) -ci.datatype = "uinteger" -ci.placeholder = 600 - -pu = s:taboption("advanced", Value, "presentation_url", translate("Presentation URL")) -pu.placeholder = "http://192.168.1.1/" - -lf = s:taboption("advanced", Value, "upnp_lease_file", translate("UPnP lease file")) -lf.placeholder = "/var/log/upnp.leases" - - -s2 = m:section(TypedSection, "perm_rule", translate("MiniUPnP ACLs"), - translate("ACLs specify which external ports may be redirected to which internal addresses and ports")) - -s2.template = "cbi/tblsection" -s2.sortable = true -s2.anonymous = true -s2.addremove = true - -s2:option(Value, "comment", translate("Comment")) - -ep = s2:option(Value, "ext_ports", translate("External ports")) -ep.datatype = "portrange" -ep.placeholder = "0-65535" - -ia = s2:option(Value, "int_addr", translate("Internal addresses")) -ia.datatype = "ip4addr" -ia.placeholder = "0.0.0.0/0" - -ip = s2:option(Value, "int_ports", translate("Internal ports")) -ip.datatype = "portrange" -ip.placeholder = "0-65535" - -ac = s2:option(ListValue, "action", translate("Action")) -ac:value("allow") -ac:value("deny") - -return m diff --git a/package/luci/applications/luci-app-upnp/luasrc/view/admin_status/index/upnp.htm b/package/luci/applications/luci-app-upnp/luasrc/view/admin_status/index/upnp.htm deleted file mode 100644 index d0c2e2ed50..0000000000 --- a/package/luci/applications/luci-app-upnp/luasrc/view/admin_status/index/upnp.htm +++ /dev/null @@ -1 +0,0 @@ -<%+upnp_status%> diff --git a/package/luci/applications/luci-app-upnp/luasrc/view/upnp_status.htm b/package/luci/applications/luci-app-upnp/luasrc/view/upnp_status.htm deleted file mode 100644 index 89fdb5e218..0000000000 --- a/package/luci/applications/luci-app-upnp/luasrc/view/upnp_status.htm +++ /dev/null @@ -1,69 +0,0 @@ - - -
    - <%:Active UPnP Redirects%> - - - - - - - - - - - - -
    <%:Protocol%><%:External Port%><%:Client Address%><%:Client Port%><%:Description%> 

    <%:Collecting data...%>
    -
    diff --git a/package/luci/applications/luci-app-upnp/po/ca/upnp.po b/package/luci/applications/luci-app-upnp/po/ca/upnp.po deleted file mode 100644 index 2767ade5b1..0000000000 --- a/package/luci/applications/luci-app-upnp/po/ca/upnp.po +++ /dev/null @@ -1,173 +0,0 @@ -# upnp.pot -# generated from ./applications/luci-upnp/luasrc/i18n/upnp.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-07-01 08:38+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"Els ACL especifiquen quins ports externs es poden redirigir a quines adreces " -"i ports interns" - -msgid "Action" -msgstr "Acció" - -msgid "Active UPnP Redirects" -msgstr "Redireccions UPnP actives" - -msgid "Advanced Settings" -msgstr "Ajusts avançats" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "Permet que s'afegeixin redireccions només a les adreces IP peticionant" - -msgid "Announced model number" -msgstr "Número de model anunciat" - -msgid "Announced serial number" -msgstr "Número de sèrie anunciat" - -msgid "Clean rules interval" -msgstr "Interval de neteja de regles" - -msgid "Clean rules threshold" -msgstr "Llindar de neteja de regles" - -msgid "Client Address" -msgstr "Adreça de client" - -msgid "Client Port" -msgstr "Port de client" - -msgid "Collecting data..." -msgstr "Recollint dades..." - -msgid "Comment" -msgstr "Comentari" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID de dispositiu" - -msgid "Downlink" -msgstr "Enllaç de baixada" - -msgid "Enable NAT-PMP functionality" -msgstr "Habilita la funcionalitat NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Habilita la funcionalitat UPnP" - -msgid "Enable additional logging" -msgstr "Habilita el registre addicional" - -msgid "Enable secure mode" -msgstr "Habilita mode segur" - -msgid "External Port" -msgstr "Port extern" - -msgid "External ports" -msgstr "Ports externs" - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "Internal addresses" -msgstr "Adreces internes" - -msgid "Internal ports" -msgstr "Ports interns" - -msgid "MiniUPnP ACLs" -msgstr "ACLs de MiniUPnP" - -msgid "MiniUPnP settings" -msgstr "Ajusts de MiniUPnP" - -msgid "Notify interval" -msgstr "Interval de notificació" - -msgid "Port" -msgstr "Port" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Puts extra debugging information into the system log" -msgstr "Posa informació extra de depuració en el registre de sistema" - -msgid "Report system instead of daemon uptime" -msgstr "Reporta el temps actiu del sistema en lloc del del dimoni" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Inicia el servei UPnP i NAP-PMP" - -msgid "There are no active redirects." -msgstr "No hi ha redireccions actives." - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP permet als clients de la xarxa local configurar automàticament el " -"router." - -msgid "UPnP lease file" -msgstr "Fitxer d'arrendament UPnP" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Enllaç de pujada" - -msgid "Value in KByte/s, informational only" -msgstr "Valor en KByte/s, només per informació" - -#~ msgid "Delete Redirect" -#~ msgstr "Suprimeix la redirecció" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP permet als clients de la xarxa local configurar automàticament el " -#~ "router." - -#~ msgid "enable" -#~ msgstr "habilita" - -#~ msgid "Log output" -#~ msgstr "Registra la sortida" - -#~ msgid "" -#~ "UPNP should only be enabled if absolutely necessary as it can result in " -#~ "high security risks for your network." -#~ msgstr "" -#~ "Només s'hauria d'activar l'UPnP si és absolutament necessari, ja que en " -#~ "poden resultar alts riscos de seguretat a la teva xarxa." diff --git a/package/luci/applications/luci-app-upnp/po/cs/upnp.po b/package/luci/applications/luci-app-upnp/po/cs/upnp.po deleted file mode 100644 index bfc97cca52..0000000000 --- a/package/luci/applications/luci-app-upnp/po/cs/upnp.po +++ /dev/null @@ -1,157 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-29 21:54+0200\n" -"Last-Translator: Astran \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"ACL stanovují, které vnější porty by měly být přesměrovány na které vnitřní " -"adresy a porty" - -msgid "Action" -msgstr "Akce" - -msgid "Active UPnP Redirects" -msgstr "Aktivní přesměrování UPnP" - -msgid "Advanced Settings" -msgstr "Pokročilé nastavení" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "Povolit přesměrování pouze na dotazující ip adresy" - -msgid "Announced model number" -msgstr "Oznámené číslo modelu" - -msgid "Announced serial number" -msgstr "Oznámené sériové číslo" - -msgid "Clean rules interval" -msgstr "Interval čištění pravidel" - -msgid "Clean rules threshold" -msgstr "Práh čištění pravidel" - -msgid "Client Address" -msgstr "Adresa klienta" - -msgid "Client Port" -msgstr "Port klienta" - -msgid "Collecting data..." -msgstr "Probíhá sběr dat.." - -msgid "Comment" -msgstr "Komentář" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID zařízení" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Enable NAT-PMP functionality" -msgstr "Povolit funkčnost NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Povolit funkčnost UPnP" - -msgid "Enable additional logging" -msgstr "Povolit přídavné logování" - -msgid "Enable secure mode" -msgstr "Povolit bezpečný režim" - -msgid "External Port" -msgstr "Vnější port" - -msgid "External ports" -msgstr "Vnější porty" - -msgid "General Settings" -msgstr "Obecné nastavení" - -msgid "Internal addresses" -msgstr "Vnitřní adresy" - -msgid "Internal ports" -msgstr "Vnitřní porty" - -msgid "MiniUPnP ACLs" -msgstr "MiniUPnP ACL listy" - -msgid "MiniUPnP settings" -msgstr "Nastavení MiniUPnP" - -msgid "Notify interval" -msgstr "Interval oznamování" - -msgid "Port" -msgstr "Port" - -msgid "Presentation URL" -msgstr "Prezentace URL" - -msgid "Protocol" -msgstr "Protokol" - -msgid "Puts extra debugging information into the system log" -msgstr "Vypisovat extra ladící informace do systémového záznamu" - -msgid "Report system instead of daemon uptime" -msgstr "Hlásit uptime systému namísto uptime daemonu" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Spustit službu UPnP a NAT-PMP" - -msgid "There are no active redirects." -msgstr "Nejsou zde žádná aktivní přesměrování" - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP umožňuje klientům v místní síti automaticky nakonfigurovat router." - -msgid "UPnP lease file" -msgstr "Soubor UPnP výpůjček" - -msgid "Universal Plug & Play" -msgstr "Univerzální Plug & Play" - -msgid "Uplink" -msgstr "Uplink" - -msgid "Value in KByte/s, informational only" -msgstr "Pouze informační hodnoty (v KByte/s)" - -#~ msgid "Delete Redirect" -#~ msgstr "Odstranit přesměrování" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP umožňuje klientům v místní síti automaticky nakonfigurovat router." - -#~ msgid "enable" -#~ msgstr "povolit" diff --git a/package/luci/applications/luci-app-upnp/po/de/upnp.po b/package/luci/applications/luci-app-upnp/po/de/upnp.po deleted file mode 100644 index 46aa42ffe3..0000000000 --- a/package/luci/applications/luci-app-upnp/po/de/upnp.po +++ /dev/null @@ -1,177 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2012-11-28 10:45+0200\n" -"Last-Translator: dunkelschunkel \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"ACLs definieren, welche externen Ports zu welchen internen Adressen und " -"Ports weitergeleitet werden dürfen" - -msgid "Action" -msgstr "Aktion" - -msgid "Active UPnP Redirects" -msgstr "Aktive UPnP-Weiterleitungen" - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "Nur Weiterleitungen zurück zum anfordernden Client zulassen" - -msgid "Announced model number" -msgstr "Angekündigte Modellnummer" - -msgid "Announced serial number" -msgstr "Angekündigte Seriennummer" - -msgid "Clean rules interval" -msgstr "Aufräumintervall für Weiterleitungen" - -msgid "Clean rules threshold" -msgstr "Aufräumschwellenwert für Weiterleitungen" - -msgid "Client Address" -msgstr "Clientadresse" - -msgid "Client Port" -msgstr "Clientport" - -msgid "Collecting data..." -msgstr "Sammle Daten..." - -msgid "Comment" -msgstr "Kommentar" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "Geräte-UUID" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Enable NAT-PMP functionality" -msgstr "NAT-PMP Funktionalität aktivieren" - -msgid "Enable UPnP functionality" -msgstr "UPnP Funktionalität aktivieren" - -msgid "Enable additional logging" -msgstr "Erweiterte Protokollierung aktivieren" - -msgid "Enable secure mode" -msgstr "Sicheren Modus aktivieren" - -msgid "External Port" -msgstr "Externer Port" - -msgid "External ports" -msgstr "Externe Ports" - -msgid "General Settings" -msgstr "Allgemeine Einstellungen" - -msgid "Internal addresses" -msgstr "Interne Adressen" - -msgid "Internal ports" -msgstr "Interne Ports" - -msgid "MiniUPnP ACLs" -msgstr "MiniUPnP ACLs" - -msgid "MiniUPnP settings" -msgstr "MiniUPnP-Einstellungen" - -msgid "Notify interval" -msgstr "Benachrichtigungsintervall" - -msgid "Port" -msgstr "Port" - -msgid "Presentation URL" -msgstr "Präsentations-URL" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Puts extra debugging information into the system log" -msgstr "Schreibt zusätzliche Debug-Informationen in das Systemprotokoll" - -msgid "Report system instead of daemon uptime" -msgstr "Systemlaufzeit statt Prozesslaufzeit melden" - -msgid "Start UPnP and NAT-PMP service" -msgstr "UPnP und NAT-PMP Dienst starten" - -msgid "There are no active redirects." -msgstr "Es gibt keine aktiven Weiterleitungen." - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP erlaubt es Clients im lokalen Netzwerk automatisch Port-Weiterleitungen " -"auf diesem Router einzurichten." - -msgid "UPnP lease file" -msgstr "UPnP Lease-Datei" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Uplink" - -msgid "Value in KByte/s, informational only" -msgstr "Wert in Kilobyte/s, nur informativ" - -#~ msgid "Delete Redirect" -#~ msgstr "Weiterleitung löschen" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP ermöglicht die automatische Konfiguration des Routers durch Clients " -#~ "im lokalen Netzwerk." - -#~ msgid "enable" -#~ msgstr "aktivieren" - -#~ msgid "Enable NAT-PMP" -#~ msgstr "NAT-PMP aktivieren" - -#~ msgid "Enable UPnP Service" -#~ msgstr "UPnP Service aktivieren" - -#~ msgid "Log output" -#~ msgstr "Ausgabe protokollieren" - -#~ msgid "" -#~ "UPNP should only be enabled if absolutely necessary as it can result in " -#~ "high security risks for your network." -#~ msgstr "" -#~ "UPNP sollte nur wenn unbedingt nötig aktiviert werden, da es ein " -#~ "Sicherheitsrisiko für das Netzwerk darstellen kann." diff --git a/package/luci/applications/luci-app-upnp/po/el/upnp.po b/package/luci/applications/luci-app-upnp/po/el/upnp.po deleted file mode 100644 index 79a02a487a..0000000000 --- a/package/luci/applications/luci-app-upnp/po/el/upnp.po +++ /dev/null @@ -1,143 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Active UPnP Redirects" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "" - -msgid "Announced serial number" -msgstr "" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "" - -msgid "Client Port" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Enable NAT-PMP functionality" -msgstr "" - -msgid "Enable UPnP functionality" -msgstr "" - -msgid "Enable additional logging" -msgstr "" - -msgid "Enable secure mode" -msgstr "" - -msgid "External Port" -msgstr "" - -msgid "External ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Internal addresses" -msgstr "" - -msgid "Internal ports" -msgstr "" - -msgid "MiniUPnP ACLs" -msgstr "" - -msgid "MiniUPnP settings" -msgstr "" - -msgid "Notify interval" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Puts extra debugging information into the system log" -msgstr "" - -msgid "Report system instead of daemon uptime" -msgstr "" - -msgid "Start UPnP and NAT-PMP service" -msgstr "" - -msgid "There are no active redirects." -msgstr "" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" - -msgid "UPnP lease file" -msgstr "" - -msgid "Universal Plug & Play" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Value in KByte/s, informational only" -msgstr "" diff --git a/package/luci/applications/luci-app-upnp/po/en/upnp.po b/package/luci/applications/luci-app-upnp/po/en/upnp.po deleted file mode 100644 index 450e62a7c9..0000000000 --- a/package/luci/applications/luci-app-upnp/po/en/upnp.po +++ /dev/null @@ -1,160 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Active UPnP Redirects" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "" - -msgid "Announced serial number" -msgstr "" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "" - -msgid "Client Port" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Enable NAT-PMP functionality" -msgstr "" - -msgid "Enable UPnP functionality" -msgstr "" - -msgid "Enable additional logging" -msgstr "" - -msgid "Enable secure mode" -msgstr "Enable secure mode" - -msgid "External Port" -msgstr "" - -msgid "External ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Internal addresses" -msgstr "" - -msgid "Internal ports" -msgstr "" - -msgid "MiniUPnP ACLs" -msgstr "" - -msgid "MiniUPnP settings" -msgstr "" - -msgid "Notify interval" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Puts extra debugging information into the system log" -msgstr "" - -msgid "Report system instead of daemon uptime" -msgstr "" - -msgid "Start UPnP and NAT-PMP service" -msgstr "" - -msgid "There are no active redirects." -msgstr "" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" - -msgid "UPnP lease file" -msgstr "" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Uplink" - -msgid "Value in KByte/s, informational only" -msgstr "" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." - -#~ msgid "Log output" -#~ msgstr "Log output" - -#~ msgid "" -#~ "UPNP should only be enabled if absolutely necessary as it can result in " -#~ "high security risks for your network." -#~ msgstr "" -#~ "UPNP should only be enabled if absolutely necessary as it can result in " -#~ "high security risks for your network." diff --git a/package/luci/applications/luci-app-upnp/po/es/upnp.po b/package/luci/applications/luci-app-upnp/po/es/upnp.po deleted file mode 100644 index 8c26b3cf5e..0000000000 --- a/package/luci/applications/luci-app-upnp/po/es/upnp.po +++ /dev/null @@ -1,171 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-10-07 16:11+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"Los ACL especifican qué puertos externos pueden ser redirigidos hacia qué " -"direcciones y puertos internas" - -msgid "Action" -msgstr "Acción" - -msgid "Active UPnP Redirects" -msgstr "Redirecciones UPnP activas" - -msgid "Advanced Settings" -msgstr "Configuración avanzada" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "Permitir añadir redirecciones sólo a IPs que lo soliciten" - -msgid "Announced model number" -msgstr "Número de modelo declarado" - -msgid "Announced serial number" -msgstr "Número de serie declarado" - -msgid "Clean rules interval" -msgstr "Intervalo de borrado de reglas" - -msgid "Clean rules threshold" -msgstr "Umbral de borrado de reglas" - -msgid "Client Address" -msgstr "Dirección del cliente" - -msgid "Client Port" -msgstr "Puerto del cliente" - -msgid "Collecting data..." -msgstr "Un momento..." - -msgid "Comment" -msgstr "Comentario" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID del dispositivo" - -msgid "Downlink" -msgstr "Enlace para bajada" - -msgid "Enable NAT-PMP functionality" -msgstr "Activar la funcionalidad NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Activar la funcionalidad UPnP" - -msgid "Enable additional logging" -msgstr "Activar registro adicional" - -msgid "Enable secure mode" -msgstr "Habilitar modo seguro" - -msgid "External Port" -msgstr "Puerto externo" - -msgid "External ports" -msgstr "Puertos externos" - -msgid "General Settings" -msgstr "Configuración general" - -msgid "Internal addresses" -msgstr "Direcciones internas" - -msgid "Internal ports" -msgstr "Puertos internos" - -msgid "MiniUPnP ACLs" -msgstr "ACLs MiniUPnP" - -msgid "MiniUPnP settings" -msgstr "Configuración MiniUPnP" - -msgid "Notify interval" -msgstr "Intervalo de notificación" - -msgid "Port" -msgstr "Puerto" - -msgid "Presentation URL" -msgstr "URL de presentación" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Puts extra debugging information into the system log" -msgstr "Escribir información de depuración extra en el registro del sistema" - -msgid "Report system instead of daemon uptime" -msgstr "Informar del tiempo activo del sistema en vez de el del demonio" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Arrancar servicio UPnP y NAT-PMP" - -msgid "There are no active redirects." -msgstr "Sin redirecciones activas." - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP permite que los puestos de la red local configuren automáticamente el " -"router." - -msgid "UPnP lease file" -msgstr "Tiempo de cesión UPnP" - -msgid "Universal Plug & Play" -msgstr "Plug & Play universal" - -msgid "Uplink" -msgstr "Enlace de subida" - -msgid "Value in KByte/s, informational only" -msgstr "Valor en KBytes/s (sólo informativo)" - -#~ msgid "Delete Redirect" -#~ msgstr "Borrar redirección" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP permite que los puestos de la red local configuren automáticamente " -#~ "el router." - -#~ msgid "enable" -#~ msgstr "activar" - -#~ msgid "Log output" -#~ msgstr "Loguear salida" - -#~ msgid "" -#~ "UPNP should only be enabled if absolutely necessary as it can result in " -#~ "high security risks for your network." -#~ msgstr "" -#~ "UPNP sólo deberia habilitarse si es abasolutamente necesario ya que puede " -#~ "comprometer la seguridad de su red." diff --git a/package/luci/applications/luci-app-upnp/po/fr/upnp.po b/package/luci/applications/luci-app-upnp/po/fr/upnp.po deleted file mode 100644 index 1f3f8635bd..0000000000 --- a/package/luci/applications/luci-app-upnp/po/fr/upnp.po +++ /dev/null @@ -1,164 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-11-06 16:09+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"Les ACLs définissent quels ports externes peuvent être redirigés, vers " -"quelles adresses et ports internes" - -msgid "Action" -msgstr "Action" - -msgid "Active UPnP Redirects" -msgstr "Redirections UPnP actives" - -msgid "Advanced Settings" -msgstr "Paramètres avancés" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" -"Permet d'ajouter des redirections seulement vers les adresses IP qui font " -"des demandes" - -msgid "Announced model number" -msgstr "Numéro de modèle déclaré" - -msgid "Announced serial number" -msgstr "Numéro de série déclaré" - -msgid "Clean rules interval" -msgstr "Intervalle des règles de nettoyage" - -msgid "Clean rules threshold" -msgstr "Niveau des règles de nettoyage" - -msgid "Client Address" -msgstr "Adresse du client" - -msgid "Client Port" -msgstr "Port du client" - -msgid "Collecting data..." -msgstr "Récupération des données…" - -msgid "Comment" -msgstr "Commentaire" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID du périphérique" - -msgid "Downlink" -msgstr "Lien descendant" - -msgid "Enable NAT-PMP functionality" -msgstr "Activer la fonctionnalité NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Activer la fonctionnalité UPnP" - -msgid "Enable additional logging" -msgstr "Activer la journalisation additionnelle" - -msgid "Enable secure mode" -msgstr "Activer le mode sécurisé" - -msgid "External Port" -msgstr "Port externe" - -msgid "External ports" -msgstr "Ports externes" - -msgid "General Settings" -msgstr "Paramètres généraux" - -msgid "Internal addresses" -msgstr "Adresses internes" - -msgid "Internal ports" -msgstr "Ports internes" - -msgid "MiniUPnP ACLs" -msgstr "ACLs MiniUPnP" - -msgid "MiniUPnP settings" -msgstr "Paramètres MiniUPnP" - -msgid "Notify interval" -msgstr "Intervalle de notification" - -msgid "Port" -msgstr "Port" - -msgid "Presentation URL" -msgstr "URL de présentation" - -msgid "Protocol" -msgstr "Protocole" - -msgid "Puts extra debugging information into the system log" -msgstr "Rajoute des informations de debug dans le journal-système" - -msgid "Report system instead of daemon uptime" -msgstr "" -"Indiquer la durée de fonctionnement du système plutôt que celle du démon UPnP" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Démarrer les services UPnP et NAT-PMP" - -msgid "There are no active redirects." -msgstr "Il n'y a pas de redirections actives." - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP permet à des clients du réseau local de configurer automatiquement le " -"routeur." - -msgid "UPnP lease file" -msgstr "Fichier des baux UPnP" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Lien remontant" - -msgid "Value in KByte/s, informational only" -msgstr "Valeur en Ko/s, pour information seulement" - -#~ msgid "Delete Redirect" -#~ msgstr "Détruire la redirection" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP permet à des clients du réseau local de configurer automatiquement " -#~ "le routeur." - -#~ msgid "enable" -#~ msgstr "activer" diff --git a/package/luci/applications/luci-app-upnp/po/he/upnp.po b/package/luci/applications/luci-app-upnp/po/he/upnp.po deleted file mode 100644 index 5b01f31b84..0000000000 --- a/package/luci/applications/luci-app-upnp/po/he/upnp.po +++ /dev/null @@ -1,139 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Active UPnP Redirects" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "" - -msgid "Announced serial number" -msgstr "" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "" - -msgid "Client Port" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Enable NAT-PMP functionality" -msgstr "" - -msgid "Enable UPnP functionality" -msgstr "" - -msgid "Enable additional logging" -msgstr "" - -msgid "Enable secure mode" -msgstr "" - -msgid "External Port" -msgstr "" - -msgid "External ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Internal addresses" -msgstr "" - -msgid "Internal ports" -msgstr "" - -msgid "MiniUPnP ACLs" -msgstr "" - -msgid "MiniUPnP settings" -msgstr "" - -msgid "Notify interval" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Puts extra debugging information into the system log" -msgstr "" - -msgid "Report system instead of daemon uptime" -msgstr "" - -msgid "Start UPnP and NAT-PMP service" -msgstr "" - -msgid "There are no active redirects." -msgstr "" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" - -msgid "UPnP lease file" -msgstr "" - -msgid "Universal Plug & Play" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Value in KByte/s, informational only" -msgstr "" diff --git a/package/luci/applications/luci-app-upnp/po/hu/upnp.po b/package/luci/applications/luci-app-upnp/po/hu/upnp.po deleted file mode 100644 index 9f64e5a18a..0000000000 --- a/package/luci/applications/luci-app-upnp/po/hu/upnp.po +++ /dev/null @@ -1,161 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-31 18:32+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"Az ACL-ek határozzák meg, hogy melyik külső portok melyik belső portokra és " -"címekre kerülhetnek továbbításra" - -msgid "Action" -msgstr "Művelet" - -msgid "Active UPnP Redirects" -msgstr "Aktív UPnP átirányítások" - -msgid "Advanced Settings" -msgstr "Haladó beállítások" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" -"Kizárólag a kérést küldő IP címre történő továbbítás hozzáadásának " -"engedélyezése" - -msgid "Announced model number" -msgstr "Közzétett modelszám" - -msgid "Announced serial number" -msgstr "Közzétett sorozatszám" - -msgid "Clean rules interval" -msgstr "Szabály törlési időköz" - -msgid "Clean rules threshold" -msgstr "Szabály törlési küszöbérték" - -msgid "Client Address" -msgstr "Ügyfél cím" - -msgid "Client Port" -msgstr "Ügyfél port" - -msgid "Collecting data..." -msgstr "Adatok összegyűjtése..." - -msgid "Comment" -msgstr "Megjegyzés" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "Eszköz UUID" - -msgid "Downlink" -msgstr "Letöltés" - -msgid "Enable NAT-PMP functionality" -msgstr "NAT-PMP funkció engedélyezése" - -msgid "Enable UPnP functionality" -msgstr "UPnP funkció engedélyezése" - -msgid "Enable additional logging" -msgstr "További naplózás engedélyezése" - -msgid "Enable secure mode" -msgstr "Biztonságos mód engedélyezése" - -msgid "External Port" -msgstr "Külső port" - -msgid "External ports" -msgstr "Külső portok" - -msgid "General Settings" -msgstr "Általános beállítások" - -msgid "Internal addresses" -msgstr "Belső címek" - -msgid "Internal ports" -msgstr "Belső portok" - -msgid "MiniUPnP ACLs" -msgstr "MiniUPnP ACL-ek" - -msgid "MiniUPnP settings" -msgstr "MiniUPnP beállítások" - -msgid "Notify interval" -msgstr "Értesítési időköz" - -msgid "Port" -msgstr "Port" - -msgid "Presentation URL" -msgstr "Bemutatkozó URL" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Puts extra debugging information into the system log" -msgstr "További nyomkövetési információk írása a rendszernaplóba." - -msgid "Report system instead of daemon uptime" -msgstr "A démon helyett a rendszer működési idejét jeleníti meg" - -msgid "Start UPnP and NAT-PMP service" -msgstr "UPnP és NAT-PMP szolgáltatás elindítása" - -msgid "There are no active redirects." -msgstr "Nincsenek aktív átírányítások." - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"Az UPnP lehetővé teszi a hálózatban lévő ügyfelek számára hogy automatikusan " -"beállítsák a routert." - -msgid "UPnP lease file" -msgstr "UPnP bérlet fájl" - -msgid "Universal Plug & Play" -msgstr "Univerzális Plug and Play" - -msgid "Uplink" -msgstr "Feltöltés" - -msgid "Value in KByte/s, informational only" -msgstr "Érték KByte/s-ban, csak tájékoztató jellegű" - -#~ msgid "Delete Redirect" -#~ msgstr "Átirányítás törlése" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "Az UPnP lehetővé teszi a hálózatban lévő ügyfelek számára hogy " -#~ "automatikusan beállítsák a routert." - -#~ msgid "enable" -#~ msgstr "engedélyezés" diff --git a/package/luci/applications/luci-app-upnp/po/it/upnp.po b/package/luci/applications/luci-app-upnp/po/it/upnp.po deleted file mode 100644 index 2eb4a44044..0000000000 --- a/package/luci/applications/luci-app-upnp/po/it/upnp.po +++ /dev/null @@ -1,161 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-02-03 13:52+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"Le ACL specificano quali porte esterne possono essere redirezionate agli " -"indirizzi interni e porte." - -msgid "Action" -msgstr "Azione" - -msgid "Active UPnP Redirects" -msgstr "Attiva reindirizzamento UPnP" - -msgid "Advanced Settings" -msgstr "Opzioni Avanzate" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "Permetti l'aggiunta della mappatura solo agli indirizzi IP richiedenti" - -msgid "Announced model number" -msgstr "Numero di modello annunciato" - -msgid "Announced serial number" -msgstr "Numero seriale annunciato" - -msgid "Clean rules interval" -msgstr "Cancella le regole" - -msgid "Clean rules threshold" -msgstr "Pulisci le regole degli eventi" - -msgid "Client Address" -msgstr "Indirizzo IP" - -msgid "Client Port" -msgstr "Porta" - -msgid "Collecting data..." -msgstr "Raccolgo i dati..." - -msgid "Comment" -msgstr "Descrizione" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID del dispositivo" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Enable NAT-PMP functionality" -msgstr "Abilita il protocollo NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Abilita il protocollo UPnP" - -msgid "Enable additional logging" -msgstr "Abilita log addizionale" - -msgid "Enable secure mode" -msgstr "Abilita la modalità sicura" - -msgid "External Port" -msgstr "Porta Esterna" - -msgid "External ports" -msgstr "Porte Esterne" - -msgid "General Settings" -msgstr "Opzioni Generali" - -msgid "Internal addresses" -msgstr "Indirizzi Interni" - -msgid "Internal ports" -msgstr "Porte Interne" - -msgid "MiniUPnP ACLs" -msgstr "MiniUPnP ACLs" - -msgid "MiniUPnP settings" -msgstr "Opzioni di MiniUPnP" - -msgid "Notify interval" -msgstr "Intervello di notifica" - -msgid "Port" -msgstr "Porta" - -msgid "Presentation URL" -msgstr "URL di presentazione" - -msgid "Protocol" -msgstr "Protocollo" - -msgid "Puts extra debugging information into the system log" -msgstr "Scrivi nel log di sistema le informazioni di extra debugging" - -msgid "Report system instead of daemon uptime" -msgstr "Mostra l'uptime del sistema invece del demone" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Avvia il servizo UPnP e NAT-PMP" - -msgid "There are no active redirects." -msgstr "Non ci sono mappature attive." - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP permette ai dispositivi nella rete locale di configurare " -"automaticamente il router." - -msgid "UPnP lease file" -msgstr "UPnP lease file" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Uplink" - -msgid "Value in KByte/s, informational only" -msgstr "Valori in KByte/s, (informativo)" - -#~ msgid "Delete Redirect" -#~ msgstr "Cancella Mappatura" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP permette ai dispositivi nella rete locale di configurare " -#~ "automaticamente il router." - -#~ msgid "enable" -#~ msgstr "abilita" diff --git a/package/luci/applications/luci-app-upnp/po/ja/upnp.po b/package/luci/applications/luci-app-upnp/po/ja/upnp.po deleted file mode 100644 index b9dae4f8d6..0000000000 --- a/package/luci/applications/luci-app-upnp/po/ja/upnp.po +++ /dev/null @@ -1,148 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2017-11-11 12:16+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 2.0.4\n" -"Language-Team: \n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"アクセス制御リスト(ACL) は、どの外部ポートからどの内部アドレス及びポートへ" -"リダイレクトするかを設定します。" - -msgid "Action" -msgstr "動作" - -msgid "Active UPnP Redirects" -msgstr "稼働中のUPnPリダイレクト" - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "要求元IPアドレスへの転送のみ、追加を許可します。" - -msgid "Announced model number" -msgstr "通知するモデル番号" - -msgid "Announced serial number" -msgstr "通知するシリアル番号" - -msgid "Clean rules interval" -msgstr "ルール消去間隔" - -msgid "Clean rules threshold" -msgstr "ルール消去しきい値" - -msgid "Client Address" -msgstr "クライアント・アドレス" - -msgid "Client Port" -msgstr "クライアント・ポート" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "Comment" -msgstr "コメント" - -msgid "Delete" -msgstr "削除" - -msgid "Description" -msgstr "説明" - -msgid "Device UUID" -msgstr "デバイス UUID" - -msgid "Downlink" -msgstr "ダウンリンク" - -msgid "Enable NAT-PMP functionality" -msgstr "NAT-PMP機能を有効にする" - -msgid "Enable UPnP functionality" -msgstr "UPnP機能を有効にする" - -msgid "Enable additional logging" -msgstr "ログ機能を有効にする" - -msgid "Enable secure mode" -msgstr "セキュアモードを有効にする" - -msgid "External Port" -msgstr "外部ポート" - -msgid "External ports" -msgstr "外部ポート" - -msgid "General Settings" -msgstr "一般設定" - -msgid "Internal addresses" -msgstr "内部アドレス" - -msgid "Internal ports" -msgstr "内部ポート" - -msgid "MiniUPnP ACLs" -msgstr "MiniUPnP アクセス制御リスト (ACL)" - -msgid "MiniUPnP settings" -msgstr "MiniUPnP 設定" - -msgid "Notify interval" -msgstr "通知間隔" - -msgid "Port" -msgstr "ポート" - -msgid "Presentation URL" -msgstr "プレゼンテーション URL" - -msgid "Protocol" -msgstr "プロトコル" - -msgid "Puts extra debugging information into the system log" -msgstr "追加のデバッグ情報をシステムログへ挿入する" - -msgid "Report system instead of daemon uptime" -msgstr "サービスの起動時間の代わりにシステムの起動時間を使用する" - -msgid "Start UPnP and NAT-PMP service" -msgstr "UPnP及びNAT-PMPサービスを開始する" - -msgid "There are no active redirects." -msgstr "有効なリダイレクトはありません。" - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータ" -"を構成することができます。" - -msgid "UPnP lease file" -msgstr "UPnP リースファイル" - -msgid "Universal Plug & Play" -msgstr "ユニバーサル プラグ & プレイ" - -msgid "Uplink" -msgstr "アップリンク" - -msgid "Value in KByte/s, informational only" -msgstr "クライアントへの情報提供のみに使用される、KByte/sの値です。" diff --git a/package/luci/applications/luci-app-upnp/po/ms/upnp.po b/package/luci/applications/luci-app-upnp/po/ms/upnp.po deleted file mode 100644 index 62d4d5aec4..0000000000 --- a/package/luci/applications/luci-app-upnp/po/ms/upnp.po +++ /dev/null @@ -1,138 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Active UPnP Redirects" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "" - -msgid "Announced serial number" -msgstr "" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "" - -msgid "Client Port" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Enable NAT-PMP functionality" -msgstr "" - -msgid "Enable UPnP functionality" -msgstr "" - -msgid "Enable additional logging" -msgstr "" - -msgid "Enable secure mode" -msgstr "" - -msgid "External Port" -msgstr "" - -msgid "External ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Internal addresses" -msgstr "" - -msgid "Internal ports" -msgstr "" - -msgid "MiniUPnP ACLs" -msgstr "" - -msgid "MiniUPnP settings" -msgstr "" - -msgid "Notify interval" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Puts extra debugging information into the system log" -msgstr "" - -msgid "Report system instead of daemon uptime" -msgstr "" - -msgid "Start UPnP and NAT-PMP service" -msgstr "" - -msgid "There are no active redirects." -msgstr "" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" - -msgid "UPnP lease file" -msgstr "" - -msgid "Universal Plug & Play" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Value in KByte/s, informational only" -msgstr "" diff --git a/package/luci/applications/luci-app-upnp/po/no/upnp.po b/package/luci/applications/luci-app-upnp/po/no/upnp.po deleted file mode 100644 index dc9daba1ba..0000000000 --- a/package/luci/applications/luci-app-upnp/po/no/upnp.po +++ /dev/null @@ -1,152 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"ACL angir hvilke eksterne porter som kan bli viderekoblet, og til hvilke " -"interne adresser og porter." - -msgid "Action" -msgstr "Handling" - -msgid "Active UPnP Redirects" -msgstr "Aktive UPnP Viderekoblinger" - -msgid "Advanced Settings" -msgstr "Avanserte Innstillinger" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "Tillat videkobling kun til IP adresser som ber om det" - -msgid "Announced model number" -msgstr "Annonsert modellnummer" - -msgid "Announced serial number" -msgstr "Annonsert serienummer" - -msgid "Clean rules interval" -msgstr "Nullstill UPnP Viderekoblinger intervall" - -msgid "Clean rules threshold" -msgstr "Nullstill UPnP terskel" - -msgid "Client Address" -msgstr "Klient adresse" - -msgid "Client Port" -msgstr "Klient port" - -msgid "Collecting data..." -msgstr "Henter data..." - -msgid "Comment" -msgstr "Kommentar" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "Enhet UUID" - -msgid "Downlink" -msgstr "Nedlinje" - -msgid "Enable NAT-PMP functionality" -msgstr "Aktiver NAT-PMP funksjonalitet" - -msgid "Enable UPnP functionality" -msgstr "Aktiver UPnP funksjonalitet" - -msgid "Enable additional logging" -msgstr "Aktiver tilleggs logging" - -msgid "Enable secure mode" -msgstr "Aktiver sikker modus" - -msgid "External Port" -msgstr "Ekstern port" - -msgid "External ports" -msgstr "Eksterne porter" - -msgid "General Settings" -msgstr "Generelle Innstillinger" - -msgid "Internal addresses" -msgstr "Interne adresser" - -msgid "Internal ports" -msgstr "Interne porter" - -msgid "MiniUPnP ACLs" -msgstr "MiniUPnP ACL'er" - -msgid "MiniUPnP settings" -msgstr "MiniUPnP Innstillinger" - -msgid "Notify interval" -msgstr "Informasjons intervall" - -msgid "Port" -msgstr "Port" - -msgid "Presentation URL" -msgstr "Presentasjon URL" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Puts extra debugging information into the system log" -msgstr "Setter ekstra debugging informasjon i systemloggen" - -msgid "Report system instead of daemon uptime" -msgstr "Rapporter systemets oppetid istedenfor daemon oppetid" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Start UPnP og NAT-PMP tjenesten" - -msgid "There are no active redirects." -msgstr "Det finnes ingen aktive viderekoblinger" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP gjør at klientene i det lokale nettverket automatisk kan konfigurere " -"ruteren." - -msgid "UPnP lease file" -msgstr "UPnP leie fil" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Opplinje" - -msgid "Value in KByte/s, informational only" -msgstr "Verdi i KByte/sek, kun for informasjon" - -#~ msgid "Delete Redirect" -#~ msgstr "Fjern Viderekobling" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP gjør at klientene i det lokale nettverket automatisk kan konfigurere " -#~ "ruteren." - -#~ msgid "enable" -#~ msgstr "Aktiver" diff --git a/package/luci/applications/luci-app-upnp/po/pl/upnp.po b/package/luci/applications/luci-app-upnp/po/pl/upnp.po deleted file mode 100644 index 0afabe326f..0000000000 --- a/package/luci/applications/luci-app-upnp/po/pl/upnp.po +++ /dev/null @@ -1,159 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-02 19:28+0200\n" -"Last-Translator: obsy \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"Listy kontroli dostępu (ang. ACL) określają jakie porty mogą być " -"przekierowane do jakich wewnętrznych adresów i portów" - -msgid "Action" -msgstr "Akcja" - -msgid "Active UPnP Redirects" -msgstr "Aktywne przekierowania UPnP" - -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "Zezwól na dodawanie przekierowań tylko do odpytujących adresów IP" - -msgid "Announced model number" -msgstr "Rozgłaszany nr modelu" - -msgid "Announced serial number" -msgstr "rozgłaszany nr seryjny" - -msgid "Clean rules interval" -msgstr "Interwał czyszczenia reguł" - -msgid "Clean rules threshold" -msgstr "Próg czyszczenia reguł" - -msgid "Client Address" -msgstr "Adres klienta" - -msgid "Client Port" -msgstr "Port klienta" - -msgid "Collecting data..." -msgstr "Zbieranie danych..." - -msgid "Comment" -msgstr "Komentarz" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID urządzenia" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Enable NAT-PMP functionality" -msgstr "Włącz funkcjonalność NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Włącz funkcjonalność UPnP" - -msgid "Enable additional logging" -msgstr "Włącz rozszerzone raportowanie" - -msgid "Enable secure mode" -msgstr "Włącz tryb bezpieczny" - -msgid "External Port" -msgstr "Port zewnętrzny" - -msgid "External ports" -msgstr "Porty zewnętrzne" - -msgid "General Settings" -msgstr "Ustawienia główne" - -msgid "Internal addresses" -msgstr "Adresy wewnętrzne" - -msgid "Internal ports" -msgstr "Porty wewnętrzne" - -msgid "MiniUPnP ACLs" -msgstr "Listy kontroli dostępu MiniUPnP" - -msgid "MiniUPnP settings" -msgstr "Ustawienia MiniUPnP" - -msgid "Notify interval" -msgstr "Interwał powiadamiania" - -msgid "Port" -msgstr "Port" - -msgid "Presentation URL" -msgstr "Przedstawiany URL" - -msgid "Protocol" -msgstr "Protokół" - -msgid "Puts extra debugging information into the system log" -msgstr "Dodaje dodatkowe informacje debugowania do loga systemowego" - -msgid "Report system instead of daemon uptime" -msgstr "Zgłaszaj czas pracy systemu zamiast czas pracy usługi" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Uruchom usługi UPnP i NAT-PMP" - -msgid "There are no active redirects." -msgstr "Nie ma aktywnych przekierowań" - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP umożliwia klientom w sieci lokalnej automatyczne konfigurowanie routera." - -msgid "UPnP lease file" -msgstr "Plik dzierżawy UPnP" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Uplink" - -msgid "Value in KByte/s, informational only" -msgstr "Wartość w KBajt/s, tylko informacyjnie" - -#~ msgid "Delete Redirect" -#~ msgstr "Usuń przekierowanie" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP umożliwia klientom w sieci lokalnej automatyczne konfigurowanie " -#~ "routera." - -#~ msgid "enable" -#~ msgstr "enable" diff --git a/package/luci/applications/luci-app-upnp/po/pt-br/upnp.po b/package/luci/applications/luci-app-upnp/po/pt-br/upnp.po deleted file mode 100644 index 72741d26c9..0000000000 --- a/package/luci/applications/luci-app-upnp/po/pt-br/upnp.po +++ /dev/null @@ -1,172 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2011-10-18 22:17+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"ACLs especificam quais portas externas podem ser redirecionadas para quais " -"endereços e portas internos" - -msgid "Action" -msgstr "Ação" - -msgid "Active UPnP Redirects" -msgstr "Redirecionamentos UPnP Ativos" - -msgid "Advanced Settings" -msgstr "Configurações Avançadas" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" -"Permite adicionar encaminhamento apenas para o endereço IP requisitante" - -msgid "Announced model number" -msgstr "Número do modelo anunciado" - -msgid "Announced serial number" -msgstr "Número serial anunciado" - -msgid "Clean rules interval" -msgstr "Intervalo de limpeza das regras" - -msgid "Clean rules threshold" -msgstr "Limiar de limpeza das regras" - -msgid "Client Address" -msgstr "Endereço do cliente" - -msgid "Client Port" -msgstr "Porta do Cliente" - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "Comment" -msgstr "Comentário" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID do Dispositivo" - -msgid "Downlink" -msgstr "Velocidade de recebimento do enlace (downlink)" - -msgid "Enable NAT-PMP functionality" -msgstr "Habilite a função NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Habilite a função UPnP" - -msgid "Enable additional logging" -msgstr "Habilite registros adicionais" - -msgid "Enable secure mode" -msgstr "Habilite modo seguro" - -msgid "External Port" -msgstr "Porta Externa" - -msgid "External ports" -msgstr "Portas Externas" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "Internal addresses" -msgstr "Endereços internos" - -msgid "Internal ports" -msgstr "Portas internas" - -msgid "MiniUPnP ACLs" -msgstr "ACLs do MiniUPnP" - -msgid "MiniUPnP settings" -msgstr "Configurações do MiniUPnP" - -msgid "Notify interval" -msgstr "Intervalo de notificação" - -msgid "Port" -msgstr "Porta" - -msgid "Presentation URL" -msgstr "URL de apresentação" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Puts extra debugging information into the system log" -msgstr "Envie informações extra de depuração ao registro do sistema" - -msgid "Report system instead of daemon uptime" -msgstr "Informe o tempo de vida do sistema ao invés do tempo do processo" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Dispare os serviços de UPnP e NAT-PMP" - -msgid "There are no active redirects." -msgstr "Não existe redirecionamentos ativos." - -msgid "UPnP" -msgstr "" -"UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP permite os clientes da rede local configurem automaticamente o roteador." - -msgid "UPnP lease file" -msgstr "Arquivo de concessão do UPnP" - -msgid "Universal Plug & Play" -msgstr "Plug & Play Universal" - -msgid "Uplink" -msgstr "Velocidade de envio do enlace (uplink)" - -msgid "Value in KByte/s, informational only" -msgstr "Valores em KByte/s, apenas informativas" - -#~ msgid "Delete Redirect" -#~ msgstr "Apague o Redirecionamento" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP permite os clientes da rede local configurem automaticamente o " -#~ "roteador." - -#~ msgid "enable" -#~ msgstr "habilitar" - -#~ msgid "Log output" -#~ msgstr "Log de saída" - -#~ msgid "" -#~ "UPNP should only be enabled if absolutely necessary as it can result in " -#~ "high security risks for your network." -#~ msgstr "" -#~ "O UPNP deve ser ativado apenas se for absolutamente necessário, pois ele " -#~ "pode resultar em elevados riscos de segurança para sua rede." diff --git a/package/luci/applications/luci-app-upnp/po/pt/upnp.po b/package/luci/applications/luci-app-upnp/po/pt/upnp.po deleted file mode 100644 index 415a72b082..0000000000 --- a/package/luci/applications/luci-app-upnp/po/pt/upnp.po +++ /dev/null @@ -1,160 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Active UPnP Redirects" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "" - -msgid "Announced serial number" -msgstr "" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "" - -msgid "Client Port" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "" - -msgid "Downlink" -msgstr "Link para download" - -msgid "Enable NAT-PMP functionality" -msgstr "" - -msgid "Enable UPnP functionality" -msgstr "" - -msgid "Enable additional logging" -msgstr "" - -msgid "Enable secure mode" -msgstr "Enable secure mode" - -msgid "External Port" -msgstr "" - -msgid "External ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Internal addresses" -msgstr "" - -msgid "Internal ports" -msgstr "" - -msgid "MiniUPnP ACLs" -msgstr "" - -msgid "MiniUPnP settings" -msgstr "" - -msgid "Notify interval" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Puts extra debugging information into the system log" -msgstr "" - -msgid "Report system instead of daemon uptime" -msgstr "" - -msgid "Start UPnP and NAT-PMP service" -msgstr "" - -msgid "There are no active redirects." -msgstr "" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" - -msgid "UPnP lease file" -msgstr "" - -msgid "Universal Plug & Play" -msgstr "Plug & Play Universal" - -msgid "Uplink" -msgstr "Link para Upload" - -msgid "Value in KByte/s, informational only" -msgstr "" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPNP permite os clientes da rede local automaticamente configurar o " -#~ "roteador." - -#~ msgid "Log output" -#~ msgstr "Log de saída" - -#~ msgid "" -#~ "UPNP should only be enabled if absolutely necessary as it can result in " -#~ "high security risks for your network." -#~ msgstr "" -#~ "O UPNP deve ser ativado apenas se for absolutamente necessário, pois ele " -#~ "pode resultar em elevados riscos de segurança para sua rede." diff --git a/package/luci/applications/luci-app-upnp/po/ro/upnp.po b/package/luci/applications/luci-app-upnp/po/ro/upnp.po deleted file mode 100644 index d5e5c79932..0000000000 --- a/package/luci/applications/luci-app-upnp/po/ro/upnp.po +++ /dev/null @@ -1,159 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-25 19:15+0200\n" -"Last-Translator: Mihai \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"ACL-urile specifica porturile externe care pot fi redirectate si spre ce " -"adrese si porturi interne" - -msgid "Action" -msgstr "Actiune" - -msgid "Active UPnP Redirects" -msgstr "Redirecturi active UPnP" - -msgid "Advanced Settings" -msgstr "Setari avansate" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "Permite adaugarea forward-urilor doar catre adresele ip solicitante" - -msgid "Announced model number" -msgstr "Numar de model anuntat" - -msgid "Announced serial number" -msgstr "Numar serial anuntat" - -msgid "Clean rules interval" -msgstr "Intervalul de curatare reguli" - -msgid "Clean rules threshold" -msgstr "Limita de curatare reguli" - -msgid "Client Address" -msgstr "Adresa client" - -msgid "Client Port" -msgstr "Port client" - -msgid "Collecting data..." -msgstr "Colecteaza date.." - -msgid "Comment" -msgstr "Comentariu" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID al dispozitivului" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Enable NAT-PMP functionality" -msgstr "Activeaza functionalitatea NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Activeaza functionalitatea UPnP" - -msgid "Enable additional logging" -msgstr "Activeaza log-area aditionala" - -msgid "Enable secure mode" -msgstr "Activeaza modul securizat" - -msgid "External Port" -msgstr "Port extern" - -msgid "External ports" -msgstr "Porturi externe" - -msgid "General Settings" -msgstr "Setari generale" - -msgid "Internal addresses" -msgstr "Adrese interne" - -msgid "Internal ports" -msgstr "Porturi interne" - -msgid "MiniUPnP ACLs" -msgstr "Liste de acces mini UPnP" - -msgid "MiniUPnP settings" -msgstr "Setari mini UPnP" - -msgid "Notify interval" -msgstr "Interval de notificare" - -msgid "Port" -msgstr "Port" - -msgid "Presentation URL" -msgstr "Adresa de prezentare" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Puts extra debugging information into the system log" -msgstr "Pune informatii utile suplimentare in log-ul de sistem" - -msgid "Report system instead of daemon uptime" -msgstr "Raporteaza timpul de functionare de sistem in loc de serviciu" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Porneste UPnP si serviciul NAT-PMP" - -msgid "There are no active redirects." -msgstr "Nu exista redirecturi active." - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPNP permite clientulor din reteaua locala sa configureze automat routerul." - -msgid "UPnP lease file" -msgstr "Fisierul de conexiuni UPnP" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Uplink" - -msgid "Value in KByte/s, informational only" -msgstr "Valorea in KOcteti/s , doar informational" - -#~ msgid "Delete Redirect" -#~ msgstr "Sterge redirect" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPNP permite clientulor din reteaua locala sa configureze automat " -#~ "routerul." - -#~ msgid "enable" -#~ msgstr "activeaza" diff --git a/package/luci/applications/luci-app-upnp/po/ru/upnp.po b/package/luci/applications/luci-app-upnp/po/ru/upnp.po deleted file mode 100644 index 0c195ad85b..0000000000 --- a/package/luci/applications/luci-app-upnp/po/ru/upnp.po +++ /dev/null @@ -1,164 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: upnp\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-08-15 15:20+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"Список доступа определяет, какие внешние порты могут быть перенаправлены на " -"внутренние адреса и порты" - -msgid "Action" -msgstr "Действие" - -msgid "Active UPnP Redirects" -msgstr "Активные UPnP-переадресации" - -msgid "Advanced Settings" -msgstr "Расширенные настройки" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "Разрешить перенаправление только для запрашивающих IP-адресов" - -msgid "Announced model number" -msgstr "Номер модели" - -msgid "Announced serial number" -msgstr "Серийный номер" - -msgid "Clean rules interval" -msgstr "Интервал очистки правил" - -msgid "Clean rules threshold" -msgstr "Порог очистки правил" - -msgid "Client Address" -msgstr "Адрес клиента" - -msgid "Client Port" -msgstr "Порт клиента" - -msgid "Collecting data..." -msgstr "Сбор данных..." - -msgid "Comment" -msgstr "Комментарий" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID устройства" - -msgid "Downlink" -msgstr "Нисходящий канал" - -msgid "Enable NAT-PMP functionality" -msgstr "Включить NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Включить UPnP" - -msgid "Enable additional logging" -msgstr "Включить дополнительное журналирование" - -msgid "Enable secure mode" -msgstr "Использовать защищённый режим" - -msgid "External Port" -msgstr "Внешний порт" - -msgid "External ports" -msgstr "Внешние порты" - -msgid "General Settings" -msgstr "Общие настройки" - -msgid "Internal addresses" -msgstr "Внутренние адреса" - -msgid "Internal ports" -msgstr "Внутренние порты" - -msgid "MiniUPnP ACLs" -msgstr "Список доступа MiniUPnP" - -msgid "MiniUPnP settings" -msgstr "Настройки MiniUPnP" - -msgid "Notify interval" -msgstr "Интервал уведомления" - -msgid "Port" -msgstr "Порт" - -msgid "Presentation URL" -msgstr "URL представления" - -msgid "Protocol" -msgstr "Протокол" - -msgid "Puts extra debugging information into the system log" -msgstr "Добавлять дополнительную отладочную информацию в системный журнал" - -msgid "Report system instead of daemon uptime" -msgstr "Сообщать время работы системы вместо сервиса" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Запустить службы UPnP и NAT-PMP" - -msgid "There are no active redirects." -msgstr "Активные переадресации отсутствуют." - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP позволяет клиентам в локальной сети автоматически настраивать " -"маршрутизатор." - -msgid "UPnP lease file" -msgstr "Файл аренды UPnP" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Восходящий канал" - -msgid "Value in KByte/s, informational only" -msgstr "Значение в КБ/с, только для информации" - -#~ msgid "Delete Redirect" -#~ msgstr "Удалить переадресацию" - -# Used in upnpmini.lua, which is marked broken, thus can be removed -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP позволяет клиентам в локальной сети автоматически настраивать " -#~ "маршрутизатор." - -#~ msgid "enable" -#~ msgstr "включить" diff --git a/package/luci/applications/luci-app-upnp/po/sk/upnp.po b/package/luci/applications/luci-app-upnp/po/sk/upnp.po deleted file mode 100644 index ccd256c715..0000000000 --- a/package/luci/applications/luci-app-upnp/po/sk/upnp.po +++ /dev/null @@ -1,139 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Active UPnP Redirects" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "" - -msgid "Announced serial number" -msgstr "" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "" - -msgid "Client Port" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Enable NAT-PMP functionality" -msgstr "" - -msgid "Enable UPnP functionality" -msgstr "" - -msgid "Enable additional logging" -msgstr "" - -msgid "Enable secure mode" -msgstr "" - -msgid "External Port" -msgstr "" - -msgid "External ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Internal addresses" -msgstr "" - -msgid "Internal ports" -msgstr "" - -msgid "MiniUPnP ACLs" -msgstr "" - -msgid "MiniUPnP settings" -msgstr "" - -msgid "Notify interval" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Puts extra debugging information into the system log" -msgstr "" - -msgid "Report system instead of daemon uptime" -msgstr "" - -msgid "Start UPnP and NAT-PMP service" -msgstr "" - -msgid "There are no active redirects." -msgstr "" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" - -msgid "UPnP lease file" -msgstr "" - -msgid "Universal Plug & Play" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Value in KByte/s, informational only" -msgstr "" diff --git a/package/luci/applications/luci-app-upnp/po/sv/upnp.po b/package/luci/applications/luci-app-upnp/po/sv/upnp.po deleted file mode 100644 index 10fef558ea..0000000000 --- a/package/luci/applications/luci-app-upnp/po/sv/upnp.po +++ /dev/null @@ -1,147 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"ACL:er anger vilka externa portar som ska omdirigeras till vilka interna " -"adresser och portar" - -msgid "Action" -msgstr "Handling" - -msgid "Active UPnP Redirects" -msgstr "Aktivera UPnP-omdirigeringar" - -msgid "Advanced Settings" -msgstr "Avancerade inställningar" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "Aviserat modellnummer" - -msgid "Announced serial number" -msgstr "Aviserat serienummer" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "Klient-adress" - -msgid "Client Port" -msgstr "Klient-port" - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "Comment" -msgstr "Kommentar" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "Enhetens UUID" - -msgid "Downlink" -msgstr "Nerlänk" - -msgid "Enable NAT-PMP functionality" -msgstr "Aktivera NAT-PMP-funktionalitet" - -msgid "Enable UPnP functionality" -msgstr "Aktivera UPnP-funktionalitet" - -msgid "Enable additional logging" -msgstr "Aktivera ytterligare loggning" - -msgid "Enable secure mode" -msgstr "Aktivera säkert läge" - -msgid "External Port" -msgstr "Extern port" - -msgid "External ports" -msgstr "Externa portar" - -msgid "General Settings" -msgstr "Generella inställningar" - -msgid "Internal addresses" -msgstr "Interna adresser" - -msgid "Internal ports" -msgstr "Interna portar" - -msgid "MiniUPnP ACLs" -msgstr "ACL:er för MiniUPnP" - -msgid "MiniUPnP settings" -msgstr "Inställningar för MiniUPnP" - -msgid "Notify interval" -msgstr "Intervall för avisering" - -msgid "Port" -msgstr "Port" - -msgid "Presentation URL" -msgstr "Presentationens URL" - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Puts extra debugging information into the system log" -msgstr "Lägger extra felsökningsinformation till system-loggen" - -msgid "Report system instead of daemon uptime" -msgstr "Rapportera systemet iställer för demonens upptid" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Starta UPnP och NAT-PMP-tjänsten" - -msgid "There are no active redirects." -msgstr "Det finns inga aktiva omdirigeringar" - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP tillåter klienter i det lokala nätverket att automatiskt ställa in " -"routern." - -msgid "UPnP lease file" -msgstr "Hyr-fil för UPnP" - -msgid "Universal Plug & Play" -msgstr "Universiell Plug & Play" - -msgid "Uplink" -msgstr "Upplänk" - -msgid "Value in KByte/s, informational only" -msgstr "Värde i KByte/s, endast informell" - -#~ msgid "Delete Redirect" -#~ msgstr "Ta bort omdirigering" diff --git a/package/luci/applications/luci-app-upnp/po/templates/upnp.pot b/package/luci/applications/luci-app-upnp/po/templates/upnp.pot deleted file mode 100644 index dda0e7ea3c..0000000000 --- a/package/luci/applications/luci-app-upnp/po/templates/upnp.pot +++ /dev/null @@ -1,132 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Active UPnP Redirects" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "" - -msgid "Announced serial number" -msgstr "" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "" - -msgid "Client Port" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Enable NAT-PMP functionality" -msgstr "" - -msgid "Enable UPnP functionality" -msgstr "" - -msgid "Enable additional logging" -msgstr "" - -msgid "Enable secure mode" -msgstr "" - -msgid "External Port" -msgstr "" - -msgid "External ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Internal addresses" -msgstr "" - -msgid "Internal ports" -msgstr "" - -msgid "MiniUPnP ACLs" -msgstr "" - -msgid "MiniUPnP settings" -msgstr "" - -msgid "Notify interval" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Puts extra debugging information into the system log" -msgstr "" - -msgid "Report system instead of daemon uptime" -msgstr "" - -msgid "Start UPnP and NAT-PMP service" -msgstr "" - -msgid "There are no active redirects." -msgstr "" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" - -msgid "UPnP lease file" -msgstr "" - -msgid "Universal Plug & Play" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Value in KByte/s, informational only" -msgstr "" diff --git a/package/luci/applications/luci-app-upnp/po/tr/upnp.po b/package/luci/applications/luci-app-upnp/po/tr/upnp.po deleted file mode 100644 index 1bcd2b73ab..0000000000 --- a/package/luci/applications/luci-app-upnp/po/tr/upnp.po +++ /dev/null @@ -1,139 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Active UPnP Redirects" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "" - -msgid "Announced serial number" -msgstr "" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "" - -msgid "Client Port" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "" - -msgid "Downlink" -msgstr "" - -msgid "Enable NAT-PMP functionality" -msgstr "" - -msgid "Enable UPnP functionality" -msgstr "" - -msgid "Enable additional logging" -msgstr "" - -msgid "Enable secure mode" -msgstr "" - -msgid "External Port" -msgstr "" - -msgid "External ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Internal addresses" -msgstr "" - -msgid "Internal ports" -msgstr "" - -msgid "MiniUPnP ACLs" -msgstr "" - -msgid "MiniUPnP settings" -msgstr "" - -msgid "Notify interval" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Puts extra debugging information into the system log" -msgstr "" - -msgid "Report system instead of daemon uptime" -msgstr "" - -msgid "Start UPnP and NAT-PMP service" -msgstr "" - -msgid "There are no active redirects." -msgstr "" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" - -msgid "UPnP lease file" -msgstr "" - -msgid "Universal Plug & Play" -msgstr "" - -msgid "Uplink" -msgstr "" - -msgid "Value in KByte/s, informational only" -msgstr "" diff --git a/package/luci/applications/luci-app-upnp/po/uk/upnp.po b/package/luci/applications/luci-app-upnp/po/uk/upnp.po deleted file mode 100644 index 746fd3e881..0000000000 --- a/package/luci/applications/luci-app-upnp/po/uk/upnp.po +++ /dev/null @@ -1,161 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-05-26 19:26+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" -"Список кнтролю доступу визначає, які зовнішні порти можуть бути " -"переспрямовані на які внутрішні адреси й порти" - -msgid "Action" -msgstr "Дія" - -msgid "Active UPnP Redirects" -msgstr "Активні переспрямування UPnP" - -msgid "Advanced Settings" -msgstr "Додаткові параметри" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" -"Дозволити додавання переспрямування тільки для IP-адрес, що надсилають запити" - -msgid "Announced model number" -msgstr "Оголошуваний номер моделі" - -msgid "Announced serial number" -msgstr "Оголошуваний серійний номер" - -msgid "Clean rules interval" -msgstr "Інтервал очищення правил" - -msgid "Clean rules threshold" -msgstr "Поріг очищення правил" - -msgid "Client Address" -msgstr "Адреса клієнта" - -msgid "Client Port" -msgstr "Порт клієнта" - -msgid "Collecting data..." -msgstr "Збирання даних..." - -msgid "Comment" -msgstr "Коментар" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "UUID пристрою" - -msgid "Downlink" -msgstr "Низхідний канал" - -msgid "Enable NAT-PMP functionality" -msgstr "Увімкнути функцію NAT-PMP" - -msgid "Enable UPnP functionality" -msgstr "Увімкнути функцію UPnP" - -msgid "Enable additional logging" -msgstr "Увімкнути додаткове журналювання" - -msgid "Enable secure mode" -msgstr "Увімкнути захищений режим" - -msgid "External Port" -msgstr "Зовнішній порт" - -msgid "External ports" -msgstr "Зовнішні порти" - -msgid "General Settings" -msgstr "Загальні настройки" - -msgid "Internal addresses" -msgstr "Внутрішні адреси" - -msgid "Internal ports" -msgstr "Внутрішні порти" - -msgid "MiniUPnP ACLs" -msgstr "Список контролю доступу MiniUPnP" - -msgid "MiniUPnP settings" -msgstr "Настройки MiniUPnP" - -msgid "Notify interval" -msgstr "Інтервал сповіщення" - -msgid "Port" -msgstr "Порт" - -msgid "Presentation URL" -msgstr "URL представляння" - -msgid "Protocol" -msgstr "Протокол" - -msgid "Puts extra debugging information into the system log" -msgstr "Включати додаткові відомості для налагодження до системного журналу" - -msgid "Report system instead of daemon uptime" -msgstr "Повідомляти час безвідмовної роботи системи, а не сервісу" - -msgid "Start UPnP and NAT-PMP service" -msgstr "Запускати служби UPnP та NAT-PMP" - -msgid "There are no active redirects." -msgstr "Немає активних переспрямувань" - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" -"UPnP надає клієнтам у локальній мережі змогу автоматично настроювати " -"маршрутизатор." - -msgid "UPnP lease file" -msgstr "Файл оренд UPnP" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Висхідний канал" - -msgid "Value in KByte/s, informational only" -msgstr "Значення (КБ/с) тільки для інформації" - -#~ msgid "Delete Redirect" -#~ msgstr "Видалити переспрямування" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP надає клієнтам у локальній мережі змогу автоматично настроювати " -#~ "маршрутизатор." - -#~ msgid "enable" -#~ msgstr "Увімкнути" diff --git a/package/luci/applications/luci-app-upnp/po/vi/upnp.po b/package/luci/applications/luci-app-upnp/po/vi/upnp.po deleted file mode 100644 index d27720d2af..0000000000 --- a/package/luci/applications/luci-app-upnp/po/vi/upnp.po +++ /dev/null @@ -1,161 +0,0 @@ -# upnp.pot -# generated from ./applications/luci-upnp/luasrc/i18n/upnp.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:59+0200\n" -"PO-Revision-Date: 2009-08-13 04:00+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Active UPnP Redirects" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "" - -msgid "Announced model number" -msgstr "" - -msgid "Announced serial number" -msgstr "" - -msgid "Clean rules interval" -msgstr "" - -msgid "Clean rules threshold" -msgstr "" - -msgid "Client Address" -msgstr "" - -msgid "Client Port" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "" - -msgid "Downlink" -msgstr "Downlink" - -msgid "Enable NAT-PMP functionality" -msgstr "" - -msgid "Enable UPnP functionality" -msgstr "" - -msgid "Enable additional logging" -msgstr "" - -msgid "Enable secure mode" -msgstr "Kích hoạt chế độ an toàn" - -msgid "External Port" -msgstr "" - -msgid "External ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "Internal addresses" -msgstr "" - -msgid "Internal ports" -msgstr "" - -msgid "MiniUPnP ACLs" -msgstr "" - -msgid "MiniUPnP settings" -msgstr "" - -msgid "Notify interval" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Presentation URL" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Puts extra debugging information into the system log" -msgstr "" - -msgid "Report system instead of daemon uptime" -msgstr "" - -msgid "Start UPnP and NAT-PMP service" -msgstr "" - -msgid "There are no active redirects." -msgstr "" - -msgid "UPnP" -msgstr "" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "" - -msgid "UPnP lease file" -msgstr "" - -msgid "Universal Plug & Play" -msgstr "Universal Plug & Play" - -msgid "Uplink" -msgstr "Uplink" - -msgid "Value in KByte/s, informational only" -msgstr "" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPNP cho phép đối tượng trong mạng địa phương tự động định dạng bộ định " -#~ "tuyến" - -#~ msgid "Log output" -#~ msgstr "Log output" - -#~ msgid "" -#~ "UPNP should only be enabled if absolutely necessary as it can result in " -#~ "high security risks for your network." -#~ msgstr "" -#~ "Chỉ nên kích hoạt UPNP khi thật cần thiết vì nó có thể gây nguy hiểm cho " -#~ "mạng lưới" diff --git a/package/luci/applications/luci-app-upnp/po/zh-cn/upnp.po b/package/luci/applications/luci-app-upnp/po/zh-cn/upnp.po deleted file mode 100644 index 6620d93c0d..0000000000 --- a/package/luci/applications/luci-app-upnp/po/zh-cn/upnp.po +++ /dev/null @@ -1,155 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-09-03 18:02+0200\n" -"Last-Translator: nKsyn \n" -"Language-Team: QQ Group 75543259 \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" - -msgid "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "指定外部端口的ACL可能会被重定向至某些内部地址及端口" - -msgid "Action" -msgstr "动作" - -msgid "Active UPnP Redirects" -msgstr "活动的UPnP重定向" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "允许添加只转发给请求的IP地址(当启用时,UPnP的客户可以只转发到其IP)" - -msgid "Announced model number" -msgstr "公布的型号" - -msgid "Announced serial number" -msgstr "公布的序列号" - -msgid "Clean rules interval" -msgstr "定时自动清除无效规则" - -msgid "Clean rules threshold" -msgstr "启动时清除端口转发" - -msgid "Client Address" -msgstr "客户端地址" - -msgid "Client Port" -msgstr "客户端端口" - -msgid "Collecting data..." -msgstr "正在收集数据" - -msgid "Comment" -msgstr "备注" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "设备UUID" - -msgid "Downlink" -msgstr "下行速率" - -msgid "Enable NAT-PMP functionality" -msgstr "启用NAT-PMP功能" - -msgid "Enable UPnP functionality" -msgstr "启用UPnP功能" - -msgid "Enable additional logging" -msgstr "启用额外的日志记录" - -msgid "Enable secure mode" -msgstr "启用安全模式" - -msgid "External Port" -msgstr "外部端口" - -msgid "External ports" -msgstr "外部端口" - -msgid "General Settings" -msgstr "基本设置" - -msgid "Internal addresses" -msgstr "内部地址" - -msgid "Internal ports" -msgstr "内部端口" - -msgid "MiniUPnP ACLs" -msgstr "MiniUPnP的ACL" - -msgid "MiniUPnP settings" -msgstr "MiniUPnP设置" - -msgid "Notify interval" -msgstr "警报间隔" - -msgid "Port" -msgstr "端口" - -msgid "Presentation URL" -msgstr "显示URL" - -msgid "Protocol" -msgstr "协议" - -msgid "Puts extra debugging information into the system log" -msgstr "提取额外的调试信息至系统日志" - -msgid "Report system instead of daemon uptime" -msgstr "用系统运行时间代替进程运行时间" - -msgid "Start UPnP and NAT-PMP service" -msgstr "启动UPnP与NAT-PMP服务" - -msgid "There are no active redirects." -msgstr "没有活动的重定向" - -msgid "UPnP" -msgstr "UPnP" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "UPnP允许局域网内客户端自动设置路由上的端口转发。" - -msgid "UPnP lease file" -msgstr "UPnP租约文件" - -msgid "Universal Plug & Play" -msgstr "通用即插即用(UPnP)" - -msgid "Uplink" -msgstr "上行速率" - -msgid "Value in KByte/s, informational only" -msgstr "值为KByte/s,仅供参考" - -#~ msgid "Delete Redirect" -#~ msgstr "删除转发规则" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "UPnP允许局域网内客户端自动设置路由上的端口转发。" - -#~ msgid "enable" -#~ msgstr "启用" diff --git a/package/luci/applications/luci-app-upnp/po/zh-tw/upnp.po b/package/luci/applications/luci-app-upnp/po/zh-tw/upnp.po deleted file mode 100644 index 338a6629e2..0000000000 --- a/package/luci/applications/luci-app-upnp/po/zh-tw/upnp.po +++ /dev/null @@ -1,153 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 11:40+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "" -"ACLs specify which external ports may be redirected to which internal " -"addresses and ports" -msgstr "ACL存取控制清單, 就是指定某些外部埠可以從導到內部位址和埠號" - -msgid "Action" -msgstr "啓用" - -msgid "Active UPnP Redirects" -msgstr "啓用UPnP從導" - -msgid "Advanced Settings" -msgstr "進階設定" - -msgid "Allow adding forwards only to requesting ip addresses" -msgstr "只允許請求的IP位址新增從導機制" - -msgid "Announced model number" -msgstr "已宣告模組號碼" - -msgid "Announced serial number" -msgstr "已宣告序號" - -msgid "Clean rules interval" -msgstr "清除規則間隔" - -msgid "Clean rules threshold" -msgstr "清除規則門檻" - -msgid "Client Address" -msgstr "用戶端位址" - -msgid "Client Port" -msgstr "用戶端埠號" - -msgid "Collecting data..." -msgstr "收集數據中..." - -msgid "Comment" -msgstr "評論" - -msgid "Delete" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Device UUID" -msgstr "設備UUID獨立識別碼" - -msgid "Downlink" -msgstr "下載" - -msgid "Enable NAT-PMP functionality" -msgstr "啓用蘋果NAT-PMP傳輸埠對應通訊協定功能" - -msgid "Enable UPnP functionality" -msgstr "啓用UPnP通用序列埠功能" - -msgid "Enable additional logging" -msgstr "啓用額外記錄" - -msgid "Enable secure mode" -msgstr "啓用安全模式" - -msgid "External Port" -msgstr "外部埠號" - -msgid "External ports" -msgstr "外部埠號範圍" - -msgid "General Settings" -msgstr "一般設定" - -msgid "Internal addresses" -msgstr "內部位址" - -msgid "Internal ports" -msgstr "內部埠號" - -msgid "MiniUPnP ACLs" -msgstr "小型UPnP存取控制清單" - -msgid "MiniUPnP settings" -msgstr "小型UPnP存取控制清單設定" - -msgid "Notify interval" -msgstr "提醒間隔" - -msgid "Port" -msgstr "埠號" - -msgid "Presentation URL" -msgstr "介紹URL連結" - -msgid "Protocol" -msgstr "協議" - -msgid "Puts extra debugging information into the system log" -msgstr "把額外的除錯資訊放入系統log計錄中" - -msgid "Report system instead of daemon uptime" -msgstr "報表系統取代常駐更新時間" - -msgid "Start UPnP and NAT-PMP service" -msgstr "啓用UPnP跟NAT-PMP服務" - -msgid "There are no active redirects." -msgstr "目前無作用中的從導" - -msgid "UPnP" -msgstr "UPNP通用序列埠協定" - -msgid "" -"UPnP allows clients in the local network to automatically configure the " -"router." -msgstr "開放本地用戶端自動設定路由器UPNP機制" - -msgid "UPnP lease file" -msgstr "UPnP租賃文件" - -msgid "Universal Plug & Play" -msgstr "通用序列埠隨插隨用" - -msgid "Uplink" -msgstr "上傳" - -msgid "Value in KByte/s, informational only" -msgstr "僅採用 KByte/s值單位表示" - -#~ msgid "Delete Redirect" -#~ msgstr "刪除從導" - -#~ msgid "" -#~ "UPNP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "開放本地用戶端自動設定路由器UPNP機制" - -#~ msgid "enable" -#~ msgstr "啓用" diff --git a/package/luci/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp b/package/luci/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp deleted file mode 100755 index e9636f9a28..0000000000 --- a/package/luci/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@upnpd[-1] - add ucitrack upnpd - set ucitrack.@upnpd[-1].init=miniupnpd - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-ushare/Makefile b/package/luci/applications/luci-app-ushare/Makefile deleted file mode 100644 index 5c0974c0de..0000000000 --- a/package/luci/applications/luci-app-ushare/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=uShare - UPnP A/V & DLNA Media Server -LUCI_DEPENDS:=+ushare @BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-ushare/luasrc/controller/ushare.lua b/package/luci/applications/luci-app-ushare/luasrc/controller/ushare.lua deleted file mode 100644 index c81177368e..0000000000 --- a/package/luci/applications/luci-app-ushare/luasrc/controller/ushare.lua +++ /dev/null @@ -1,15 +0,0 @@ --- Copyright 2008 Yanira --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.ushare", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/ushare") then - return - end - - local page - - page = entry({"admin", "services", "ushare"}, cbi("ushare"), _("uShare"), 60) - page.dependent = true -end diff --git a/package/luci/applications/luci-app-ushare/luasrc/model/cbi/ushare.lua b/package/luci/applications/luci-app-ushare/luasrc/model/cbi/ushare.lua deleted file mode 100644 index 0c2d1f0c0a..0000000000 --- a/package/luci/applications/luci-app-ushare/luasrc/model/cbi/ushare.lua +++ /dev/null @@ -1,30 +0,0 @@ --- Copyright 2008 Yanira --- Licensed to the public under the Apache License 2.0. - -m = Map("ushare", translate("uShare"), - luci.util.pcdata(translate("uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server component that provides UPnP media devices with information on available multimedia files."))) - -s = m:section(TypedSection, "ushare", translate("Settings")) -s.addremove = false -s.anonymous = true - -s:option(Flag, "enabled", translate("Enable")) - -s:option(Value, "username", translate("Username")) - -s:option(Value, "servername", translate("Servername")) - -dif = s:option( Value, "interface", translate("Interface")) -for _, nif in ipairs(luci.sys.net.devices()) do - if nif ~= "lo" then dif:value(nif) end -end - -s:option(DynamicList, "content_directories", translate("Content directories")) - -s:option(Flag, "disable_webif", translate("Disable webinterface")) - -s:option(Flag, "disable_telnet", translate("Disable telnet console")) - -s:option(Value, "options", translate("Options")) - -return m diff --git a/package/luci/applications/luci-app-ushare/po/ca/ushare.po b/package/luci/applications/luci-app-ushare/po/ca/ushare.po deleted file mode 100644 index 9d64596936..0000000000 --- a/package/luci/applications/luci-app-ushare/po/ca/ushare.po +++ /dev/null @@ -1,55 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-07-01 08:29+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Directoris de contingut" - -msgid "Disable telnet console" -msgstr "Inhabilita la consola telnet" - -msgid "Disable webinterface" -msgstr "Inhabilita la interfície web" - -msgid "Enable" -msgstr "Habilita" - -msgid "Interface" -msgstr "Interfície" - -msgid "Options" -msgstr "Opcions" - -msgid "Servername" -msgstr "Nom de servidor" - -msgid "Settings" -msgstr "Configuració" - -msgid "Username" -msgstr "Nom d'usuari" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"El uShare és un servidor de mitjans UPnP (TM) A/V i DLNA. Implementa el " -"component servidor que proveeix els dispositius de mitjans UPnP amb " -"informació sobre els fitxers de multimèdia disponibles." diff --git a/package/luci/applications/luci-app-ushare/po/cs/ushare.po b/package/luci/applications/luci-app-ushare/po/cs/ushare.po deleted file mode 100644 index d908e91e94..0000000000 --- a/package/luci/applications/luci-app-ushare/po/cs/ushare.po +++ /dev/null @@ -1,53 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-29 21:49+0200\n" -"Last-Translator: Astran \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Složky s obsahem" - -msgid "Disable telnet console" -msgstr "Zakázat telnet konzoli" - -msgid "Disable webinterface" -msgstr "Zakázat webové rozhraní" - -msgid "Enable" -msgstr "Povolit" - -msgid "Interface" -msgstr "Rozhraní" - -msgid "Options" -msgstr "Možnosti" - -msgid "Servername" -msgstr "Název serveru" - -msgid "Settings" -msgstr "Nastavení" - -msgid "Username" -msgstr "Uživatelské jméno" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShare je UPnP (TM) A/V & DLNA Media Server. Implementuje součást serveru, " -"který poskytuje UPnP mediální zařízení s informacemi o dostupných " -"multimediálních souborech." diff --git a/package/luci/applications/luci-app-ushare/po/de/ushare.po b/package/luci/applications/luci-app-ushare/po/de/ushare.po deleted file mode 100644 index d7d7e229be..0000000000 --- a/package/luci/applications/luci-app-ushare/po/de/ushare.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2013-01-28 22:32+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Freigabeverzeichnisse" - -msgid "Disable telnet console" -msgstr "Telnet-Konsole deaktivieren" - -msgid "Disable webinterface" -msgstr "Webinterface deaktivieren" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "Interface" -msgstr "Schnittstelle" - -msgid "Options" -msgstr "Optionen" - -msgid "Servername" -msgstr "Servername" - -msgid "Settings" -msgstr "Einstellungen" - -msgid "Username" -msgstr "Benutzername" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShare ist ein uPNP(TM) A/V & DLNA - basierender Medien-Server. Es " -"implementiert die Serverkomponente, welche uPNP-Geräten Informationen über " -"verfügbare Mediendateien bereitstellt." diff --git a/package/luci/applications/luci-app-ushare/po/el/ushare.po b/package/luci/applications/luci-app-ushare/po/el/ushare.po deleted file mode 100644 index 331c8a0d65..0000000000 --- a/package/luci/applications/luci-app-ushare/po/el/ushare.po +++ /dev/null @@ -1,48 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: 2010-06-30 17:26+0200\n" -"Last-Translator: Vasilis Tsiligiannis \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "Content directories" -msgstr "Φάκελοι περιεχομένου" - -msgid "Disable telnet console" -msgstr "Απενεργοποίηση τερματικού telnet" - -msgid "Disable webinterface" -msgstr "Απενεργοποίηση διεπαφής web" - -msgid "Enable" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Options" -msgstr "Επιλογές" - -msgid "Servername" -msgstr "Όνομα εξυπηρετητή" - -msgid "Settings" -msgstr "Ρυθμίσεις" - -msgid "Username" -msgstr "" - -msgid "uShare" -msgstr "" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/en/ushare.po b/package/luci/applications/luci-app-ushare/po/en/ushare.po deleted file mode 100644 index 5e5d65f9bd..0000000000 --- a/package/luci/applications/luci-app-ushare/po/en/ushare.po +++ /dev/null @@ -1,49 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "Content directories" -msgstr "Content directories" - -msgid "Disable telnet console" -msgstr "Disable telnet console" - -msgid "Disable webinterface" -msgstr "Disable webinterface" - -msgid "Enable" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Options" -msgstr "Options" - -msgid "Servername" -msgstr "Servername" - -msgid "Settings" -msgstr "Settings" - -msgid "Username" -msgstr "" - -msgid "uShare" -msgstr "" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/es/ushare.po b/package/luci/applications/luci-app-ushare/po/es/ushare.po deleted file mode 100644 index e8422b9545..0000000000 --- a/package/luci/applications/luci-app-ushare/po/es/ushare.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-08-25 09:23+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Directorios de contenido" - -msgid "Disable telnet console" -msgstr "Inhabilitar consola telnet" - -msgid "Disable webinterface" -msgstr "Inhabilitar interfaz web" - -msgid "Enable" -msgstr "Activar" - -msgid "Interface" -msgstr "Interfaz" - -msgid "Options" -msgstr "Opciones" - -msgid "Servername" -msgstr "Nombre para el servidor" - -msgid "Settings" -msgstr "Configuración" - -msgid "Username" -msgstr "Nombre de usuario" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShare es un servidor UPnP (TM) A/V y DLNA. Implementa el componente del " -"servidor que proporciona a los dispositivos UPnP la información disponible " -"en los ficheros multimedia." diff --git a/package/luci/applications/luci-app-ushare/po/fr/ushare.po b/package/luci/applications/luci-app-ushare/po/fr/ushare.po deleted file mode 100644 index e2e917d9a7..0000000000 --- a/package/luci/applications/luci-app-ushare/po/fr/ushare.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-08-06 13:57+0200\n" -"Last-Translator: st \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Répertoires de contenus" - -msgid "Disable telnet console" -msgstr "Désactiver la console Telnet" - -msgid "Disable webinterface" -msgstr "Désactiver l'interface web" - -msgid "Enable" -msgstr "Activer" - -msgid "Interface" -msgstr "Interface" - -msgid "Options" -msgstr "Options" - -msgid "Servername" -msgstr "Nom du serveur" - -msgid "Settings" -msgstr "Paramètres" - -msgid "Username" -msgstr "Nom d'utilisateur" - -msgid "uShare" -msgstr "" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/he/ushare.po b/package/luci/applications/luci-app-ushare/po/he/ushare.po deleted file mode 100644 index 4858a9a80c..0000000000 --- a/package/luci/applications/luci-app-ushare/po/he/ushare.po +++ /dev/null @@ -1,52 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-06-24 18:47+0200\n" -"Last-Translator: GiladL \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Content directories" -msgstr "ספריות תוכן" - -# האם לכתוב טלנט באנגלית (telenet) או בתעתיק עברי (טלנט)? -msgid "Disable telnet console" -msgstr "השבת קונסולת telnet" - -msgid "Disable webinterface" -msgstr "השבת מנשק רשת" - -msgid "Enable" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Options" -msgstr "אפשרויות" - -msgid "Servername" -msgstr "שם שרת" - -msgid "Settings" -msgstr "הגדרות" - -msgid "Username" -msgstr "" - -# זה שם של תוכנה ולא צריך לתרגם אותו -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/hu/ushare.po b/package/luci/applications/luci-app-ushare/po/hu/ushare.po deleted file mode 100644 index 6efa5211b6..0000000000 --- a/package/luci/applications/luci-app-ushare/po/hu/ushare.po +++ /dev/null @@ -1,53 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-13 18:29+0200\n" -"Last-Translator: Gábor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Megosztott könyvtárak" - -msgid "Disable telnet console" -msgstr "Telnet-konzol tiltása" - -msgid "Disable webinterface" -msgstr "Web felület tiltása" - -msgid "Enable" -msgstr "Engedélyezés" - -msgid "Interface" -msgstr "Interfész" - -msgid "Options" -msgstr "Opciók" - -msgid "Servername" -msgstr "Szerver név" - -msgid "Settings" -msgstr "Beállítások" - -msgid "Username" -msgstr "Felhasználónév" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"Az uShare egy UPnP (TM) A/V & DLNA média szerver. A szerver komponenst " -"valósítja meg, amely információt szolgáltat az elérhető multimédia fájlokról " -"az uPnP média eszközök számára." diff --git a/package/luci/applications/luci-app-ushare/po/it/ushare.po b/package/luci/applications/luci-app-ushare/po/it/ushare.po deleted file mode 100644 index 5837a11acd..0000000000 --- a/package/luci/applications/luci-app-ushare/po/it/ushare.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-02-03 14:03+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Percorso dei contenuti" - -msgid "Disable telnet console" -msgstr "Disabilita console telnet" - -msgid "Disable webinterface" -msgstr "Disabilita l'interfaccia web" - -msgid "Enable" -msgstr "Attiva" - -msgid "Interface" -msgstr "Interfaccia" - -msgid "Options" -msgstr "Opzioni" - -msgid "Servername" -msgstr "Nome del server" - -msgid "Settings" -msgstr "Impostazioni" - -msgid "Username" -msgstr "Nome Utente" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShare è un Server Multimediale UPnP (TM) A / V e DLNA. Implementa il " -"componente server che fornisce ai dispositivi multimediali UPnP, le " -"informazioni su file multimediali disponibili." diff --git a/package/luci/applications/luci-app-ushare/po/ja/ushare.po b/package/luci/applications/luci-app-ushare/po/ja/ushare.po deleted file mode 100644 index a217eceaa1..0000000000 --- a/package/luci/applications/luci-app-ushare/po/ja/ushare.po +++ /dev/null @@ -1,52 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-05-04 14:28+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: LANGUAGE \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" - -msgid "Content directories" -msgstr "コンテンツディレクトリ" - -msgid "Disable telnet console" -msgstr "telnelコンソールを無効にする" - -msgid "Disable webinterface" -msgstr "Webインターフェースを無効にする" - -msgid "Enable" -msgstr "サービスを有効にする" - -msgid "Interface" -msgstr "インターフェース" - -msgid "Options" -msgstr "オプション" - -msgid "Servername" -msgstr "サーバー名" - -msgid "Settings" -msgstr "設定" - -msgid "Username" -msgstr "ユーザー名" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShareはUPnP (TM) A/V および DLNA " -"メディアサーバーであり、UPnPメディアデバイスに対してマルチメディア・ファイル情報を提供するサーバー・コンポーネント機能を実装しています。" diff --git a/package/luci/applications/luci-app-ushare/po/ms/ushare.po b/package/luci/applications/luci-app-ushare/po/ms/ushare.po deleted file mode 100644 index 40b24f20f8..0000000000 --- a/package/luci/applications/luci-app-ushare/po/ms/ushare.po +++ /dev/null @@ -1,46 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Content directories" -msgstr "" - -msgid "Disable telnet console" -msgstr "" - -msgid "Disable webinterface" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Servername" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "uShare" -msgstr "" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/no/ushare.po b/package/luci/applications/luci-app-ushare/po/no/ushare.po deleted file mode 100644 index 321d29e3bc..0000000000 --- a/package/luci/applications/luci-app-ushare/po/no/ushare.po +++ /dev/null @@ -1,44 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Content directories" -msgstr "Innholdskataloger" - -msgid "Disable telnet console" -msgstr "Deaktiver telnet konsoll" - -msgid "Disable webinterface" -msgstr "Deaktiver webgrensesnitt" - -msgid "Enable" -msgstr "Aktiver" - -msgid "Interface" -msgstr "Grensesnitt" - -msgid "Options" -msgstr "Alternativer" - -msgid "Servername" -msgstr "Servernavn" - -msgid "Settings" -msgstr "Innstillinger" - -msgid "Username" -msgstr "Brukernavn" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" - -#~ msgid "ushare_desc" -#~ msgstr "UPnP A/V og DLNA Media Server for Linux." diff --git a/package/luci/applications/luci-app-ushare/po/pl/ushare.po b/package/luci/applications/luci-app-ushare/po/pl/ushare.po deleted file mode 100644 index 2a26404ade..0000000000 --- a/package/luci/applications/luci-app-ushare/po/pl/ushare.po +++ /dev/null @@ -1,54 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-08 13:18+0200\n" -"Last-Translator: Staszek \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Katalogi zawartości" - -msgid "Disable telnet console" -msgstr "Wyłącz konsolę telnet" - -msgid "Disable webinterface" -msgstr "Wyłącz interfejs web" - -msgid "Enable" -msgstr "Włącz" - -msgid "Interface" -msgstr "Interfejs" - -msgid "Options" -msgstr "Opcje" - -msgid "Servername" -msgstr "Nazwa serwera" - -msgid "Settings" -msgstr "Ustawienia" - -msgid "Username" -msgstr "Użytkownik" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShare jest serwerem mediów UPnP (TM) i DLNA. Implementuje serwer, który " -"udostępnia urządzenia medialne UPnP z informacjami na temat dostępnych " -"plików multimedialnych." diff --git a/package/luci/applications/luci-app-ushare/po/pt-br/ushare.po b/package/luci/applications/luci-app-ushare/po/pt-br/ushare.po deleted file mode 100644 index 5fc872e87c..0000000000 --- a/package/luci/applications/luci-app-ushare/po/pt-br/ushare.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2012-09-26 23:09+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Diretórios de conteúdo" - -msgid "Disable telnet console" -msgstr "Desativar console telnet" - -msgid "Disable webinterface" -msgstr "Desativar interface web" - -msgid "Enable" -msgstr "Habilitar" - -msgid "Interface" -msgstr "Interface" - -msgid "Options" -msgstr "Opções" - -msgid "Servername" -msgstr "Nome do servidor" - -msgid "Settings" -msgstr "Configurações" - -msgid "Username" -msgstr "Nome do usuário" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShare é um Servidor de Mídia DLNA & UPnP (TM) A/V. Implementa o componente " -"do servidor que provê aos dispositivos de mídia UPnP informações sobre os " -"arquivos multimídias disponíveis." diff --git a/package/luci/applications/luci-app-ushare/po/pt/ushare.po b/package/luci/applications/luci-app-ushare/po/pt/ushare.po deleted file mode 100644 index 795a963d18..0000000000 --- a/package/luci/applications/luci-app-ushare/po/pt/ushare.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-06-03 23:32+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Diretórios de conteúdo" - -msgid "Disable telnet console" -msgstr "Desativar console telnet" - -msgid "Disable webinterface" -msgstr "Desativar interface web" - -msgid "Enable" -msgstr "Ativar" - -msgid "Interface" -msgstr "Interface" - -msgid "Options" -msgstr "Opções" - -msgid "Servername" -msgstr "Nome do servidor" - -msgid "Settings" -msgstr "Configurações" - -msgid "Username" -msgstr "Nome Utilizador" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"O uShare é um Servidor Multimédia UPnP (TM) A/V & DLNA. Implementa o " -"componente de servidor que fornece aos dispositivos multimédia UPnP " -"informações sobre os ficheiros disponiveis." diff --git a/package/luci/applications/luci-app-ushare/po/ro/ushare.po b/package/luci/applications/luci-app-ushare/po/ro/ushare.po deleted file mode 100644 index 3c997545a2..0000000000 --- a/package/luci/applications/luci-app-ushare/po/ro/ushare.po +++ /dev/null @@ -1,51 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-29 20:03+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Conţinut directoare" - -msgid "Disable telnet console" -msgstr "Dezactiveaza consola telnet" - -msgid "Disable webinterface" -msgstr "Dezactiveaza interfata web" - -msgid "Enable" -msgstr "Activează" - -msgid "Interface" -msgstr "Interfaţă" - -msgid "Options" -msgstr "Optiuni" - -msgid "Servername" -msgstr "Numele serverului" - -msgid "Settings" -msgstr "Setari" - -msgid "Username" -msgstr "Utilizator" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/ru/ushare.po b/package/luci/applications/luci-app-ushare/po/ru/ushare.po deleted file mode 100644 index ac08e946d5..0000000000 --- a/package/luci/applications/luci-app-ushare/po/ru/ushare.po +++ /dev/null @@ -1,54 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: ushare\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-08-15 11:29+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Content directories" -msgstr "Директории с содержимым" - -msgid "Disable telnet console" -msgstr "Выключить telnet-консоль" - -msgid "Disable webinterface" -msgstr "Выключить веб-интерфейс" - -msgid "Enable" -msgstr "Включить" - -msgid "Interface" -msgstr "Интерфейс" - -msgid "Options" -msgstr "Опции" - -msgid "Servername" -msgstr "Имя сервера" - -msgid "Settings" -msgstr "Настройки" - -msgid "Username" -msgstr "Имя пользователя" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShare - это UPnP (TM) A/V DLNA медиа-сервер, который предоставляет " -"мультимедийным устройствам информацию о доступных медиа-файлах." diff --git a/package/luci/applications/luci-app-ushare/po/sk/ushare.po b/package/luci/applications/luci-app-ushare/po/sk/ushare.po deleted file mode 100644 index 4c9022b652..0000000000 --- a/package/luci/applications/luci-app-ushare/po/sk/ushare.po +++ /dev/null @@ -1,45 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Content directories" -msgstr "" - -msgid "Disable telnet console" -msgstr "" - -msgid "Disable webinterface" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Servername" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "uShare" -msgstr "" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/sv/ushare.po b/package/luci/applications/luci-app-ushare/po/sv/ushare.po deleted file mode 100644 index 75284844a7..0000000000 --- a/package/luci/applications/luci-app-ushare/po/sv/ushare.po +++ /dev/null @@ -1,168 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Content directories" -msgstr "" - -msgid "Disable telnet console" -msgstr "" - -msgid "Disable webinterface" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Servername" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "uShare" -msgstr "" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" - -#~ msgid "" -#~ "ACLs specify which external ports may be redirected to which internal " -#~ "addresses and ports" -#~ msgstr "" -#~ "ACL:er anger vilka externa portar som ska omdirigeras till vilka interna " -#~ "adresser och portar" - -#~ msgid "Action" -#~ msgstr "Handling" - -#~ msgid "Active UPnP Redirects" -#~ msgstr "Aktivera UPnP-omdirigeringar" - -#~ msgid "Advanced Settings" -#~ msgstr "Avancerade inställningar" - -#~ msgid "Announced model number" -#~ msgstr "Aviserat modellnummer" - -#~ msgid "Announced serial number" -#~ msgstr "Aviserat serienummer" - -#~ msgid "Client Address" -#~ msgstr "Klient-adress" - -#~ msgid "Client Port" -#~ msgstr "Klient-port" - -#~ msgid "Collecting data..." -#~ msgstr "Samlar in data..." - -#~ msgid "Comment" -#~ msgstr "Kommentar" - -#~ msgid "Delete Redirect" -#~ msgstr "Ta bort omdirigering" - -#~ msgid "Device UUID" -#~ msgstr "Enhetens UUID" - -#~ msgid "Downlink" -#~ msgstr "Nerlänk" - -#~ msgid "Enable NAT-PMP functionality" -#~ msgstr "Aktivera NAT-PMP-funktionalitet" - -#~ msgid "Enable UPnP functionality" -#~ msgstr "Aktivera UPnP-funktionalitet" - -#~ msgid "Enable additional logging" -#~ msgstr "Aktivera ytterligare loggning" - -#~ msgid "Enable secure mode" -#~ msgstr "Aktivera säkert läge" - -#~ msgid "External Port" -#~ msgstr "Extern port" - -#~ msgid "External ports" -#~ msgstr "Externa portar" - -#~ msgid "General Settings" -#~ msgstr "Generella inställningar" - -#~ msgid "Internal addresses" -#~ msgstr "Interna adresser" - -#~ msgid "Internal ports" -#~ msgstr "Interna portar" - -#~ msgid "MiniUPnP ACLs" -#~ msgstr "ACL:er för MiniUPnP" - -#~ msgid "MiniUPnP settings" -#~ msgstr "Inställningar för MiniUPnP" - -#~ msgid "Notify interval" -#~ msgstr "Intervall för avisering" - -#~ msgid "Port" -#~ msgstr "Port" - -#~ msgid "Presentation URL" -#~ msgstr "Presentationens URL" - -#~ msgid "Protocol" -#~ msgstr "Protokoll" - -#~ msgid "Puts extra debugging information into the system log" -#~ msgstr "Lägger extra felsökningsinformation till system-loggen" - -#~ msgid "Report system instead of daemon uptime" -#~ msgstr "Rapportera systemet iställer för demonens upptid" - -#~ msgid "Start UPnP and NAT-PMP service" -#~ msgstr "Starta UPnP och NAT-PMP-tjänsten" - -#~ msgid "There are no active redirects." -#~ msgstr "Det finns inga aktiva omdirigeringar" - -#~ msgid "UPnP" -#~ msgstr "UPnP" - -#~ msgid "" -#~ "UPnP allows clients in the local network to automatically configure the " -#~ "router." -#~ msgstr "" -#~ "UPnP tillåter klienter i det lokala nätverket att automatiskt ställa in " -#~ "routern." - -#~ msgid "UPnP lease file" -#~ msgstr "Hyr-fil för UPnP" - -#~ msgid "Universal Plug & Play" -#~ msgstr "Universiell Plug & Play" - -#~ msgid "Uplink" -#~ msgstr "Upplänk" - -#~ msgid "Value in KByte/s, informational only" -#~ msgstr "Värde i KByte/s, endast informell" diff --git a/package/luci/applications/luci-app-ushare/po/templates/ushare.pot b/package/luci/applications/luci-app-ushare/po/templates/ushare.pot deleted file mode 100644 index 7e4dbc1548..0000000000 --- a/package/luci/applications/luci-app-ushare/po/templates/ushare.pot +++ /dev/null @@ -1,38 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Content directories" -msgstr "" - -msgid "Disable telnet console" -msgstr "" - -msgid "Disable webinterface" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Servername" -msgstr "" - -msgid "Settings" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "uShare" -msgstr "" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/tr/ushare.po b/package/luci/applications/luci-app-ushare/po/tr/ushare.po deleted file mode 100644 index c905c57a5c..0000000000 --- a/package/luci/applications/luci-app-ushare/po/tr/ushare.po +++ /dev/null @@ -1,50 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-10-11 22:33+0200\n" -"Last-Translator: vincenzo \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "İçerik Dizinleri" - -msgid "Disable telnet console" -msgstr "Telnet Konsolunu Kapatma" - -msgid "Disable webinterface" -msgstr "Web Arayüzünü Kapatma" - -msgid "Enable" -msgstr "Aktif Hale Getir" - -msgid "Interface" -msgstr "Arayüz" - -msgid "Options" -msgstr "Seçenekler" - -msgid "Servername" -msgstr "Sunucuadı" - -msgid "Settings" -msgstr "Ayarlar" - -msgid "Username" -msgstr "Kullanıcıadı" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/uk/ushare.po b/package/luci/applications/luci-app-ushare/po/uk/ushare.po deleted file mode 100644 index d79f896703..0000000000 --- a/package/luci/applications/luci-app-ushare/po/uk/ushare.po +++ /dev/null @@ -1,53 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-05-26 18:43+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Content directories" -msgstr "Каталоги даних" - -msgid "Disable telnet console" -msgstr "Вимкнути консоль Telnet" - -msgid "Disable webinterface" -msgstr "Вимкнути веб-інтерфейс" - -msgid "Enable" -msgstr "Увімкнути" - -msgid "Interface" -msgstr "Інтерфейс" - -msgid "Options" -msgstr "Опції" - -msgid "Servername" -msgstr "Ім'я сервера" - -msgid "Settings" -msgstr "Настройки" - -msgid "Username" -msgstr "Ім'я користувача" - -msgid "uShare" -msgstr "uShare" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShare є UPnP (TM) A/V DLNA медіа-сервером, який надає UPnP медіа-пристроям " -"інформацію про наявні мультимедійні файли." diff --git a/package/luci/applications/luci-app-ushare/po/vi/ushare.po b/package/luci/applications/luci-app-ushare/po/vi/ushare.po deleted file mode 100644 index 20e5df7135..0000000000 --- a/package/luci/applications/luci-app-ushare/po/vi/ushare.po +++ /dev/null @@ -1,50 +0,0 @@ -# ushare.pot -# generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:59+0200\n" -"PO-Revision-Date: 2009-08-13 04:01+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "Content directories" -msgstr "Danh bạ nội dung " - -msgid "Disable telnet console" -msgstr "Vô hiệu hóa khiển telnet" - -msgid "Disable webinterface" -msgstr "Vô hiệu hóa giao diện web" - -msgid "Enable" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Options" -msgstr "Lựa chọn " - -msgid "Servername" -msgstr "tên máy chủ" - -msgid "Settings" -msgstr "Cài đặt" - -msgid "Username" -msgstr "" - -msgid "uShare" -msgstr "" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" diff --git a/package/luci/applications/luci-app-ushare/po/zh-cn/ushare.po b/package/luci/applications/luci-app-ushare/po/zh-cn/ushare.po deleted file mode 100644 index f426526e69..0000000000 --- a/package/luci/applications/luci-app-ushare/po/zh-cn/ushare.po +++ /dev/null @@ -1,52 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2012-09-18 16:26+0200\n" -"Last-Translator: nKsyn \n" -"Language-Team: QQ Group 75543259\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" - -msgid "Content directories" -msgstr "目录" - -msgid "Disable telnet console" -msgstr "关闭telnet管理" - -msgid "Disable webinterface" -msgstr "关闭界面管理" - -msgid "Enable" -msgstr "启用" - -msgid "Interface" -msgstr "网络接口" - -msgid "Options" -msgstr "选项" - -msgid "Servername" -msgstr "服务器名" - -msgid "Settings" -msgstr "设置" - -msgid "Username" -msgstr "用户名" - -msgid "uShare" -msgstr "UPNP流媒体服务" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "" -"uShare是一个UPnP(TM) A/V和DLNA媒体服务器。可以将多媒体文件共享到支持UPnP的设" -"备上。" diff --git a/package/luci/applications/luci-app-ushare/po/zh-tw/ushare.po b/package/luci/applications/luci-app-ushare/po/zh-tw/ushare.po deleted file mode 100644 index eba6677a5e..0000000000 --- a/package/luci/applications/luci-app-ushare/po/zh-tw/ushare.po +++ /dev/null @@ -1,48 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-10 12:32+0200\n" -"Last-Translator: mp607 \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Content directories" -msgstr "目錄" - -msgid "Disable telnet console" -msgstr "關閉telnet管理" - -msgid "Disable webinterface" -msgstr "關閉網路介面管理" - -msgid "Enable" -msgstr "啟用" - -msgid "Interface" -msgstr "網路介面" - -msgid "Options" -msgstr "選項" - -msgid "Servername" -msgstr "伺服器名稱" - -msgid "Settings" -msgstr "設定" - -msgid "Username" -msgstr "使用者名稱" - -msgid "uShare" -msgstr "UPnP多媒體服務" - -msgid "" -"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server " -"component that provides UPnP media devices with information on available " -"multimedia files." -msgstr "uShare是一個UPnP (TM) A/V & DLNA多媒體伺服器。可以將多媒體檔案共用分享到支援UPnP的裝置上" diff --git a/package/luci/applications/luci-app-ushare/root/etc/uci-defaults/40_luci-ushare b/package/luci/applications/luci-app-ushare/root/etc/uci-defaults/40_luci-ushare deleted file mode 100755 index 8bcb6e4118..0000000000 --- a/package/luci/applications/luci-app-ushare/root/etc/uci-defaults/40_luci-ushare +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@ushare[-1] - add ucitrack ushare - set ucitrack.@ushare[-1].init=ushare - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-vnstat/Makefile b/package/luci/applications/luci-app-vnstat/Makefile deleted file mode 100644 index 6d98610d6d..0000000000 --- a/package/luci/applications/luci-app-vnstat/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for VnStat -LUCI_DEPENDS:=+vnstat +vnstati - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-vnstat/luasrc/controller/vnstat.lua b/package/luci/applications/luci-app-vnstat/luasrc/controller/vnstat.lua deleted file mode 100644 index 3871fa254c..0000000000 --- a/package/luci/applications/luci-app-vnstat/luasrc/controller/vnstat.lua +++ /dev/null @@ -1,11 +0,0 @@ -module("luci.controller.vnstat", package.seeall) - -function index() - entry({"admin", "status", "vnstat"}, alias("admin", "status", "vnstat", "graphs"), _("VnStat Traffic Monitor"), 90) - entry({"admin", "status", "vnstat", "graphs"}, template("vnstat"), _("Graphs"), 1) - entry({"admin", "status", "vnstat", "config"}, cbi("vnstat"), _("Configuration"), 2) - - entry({"mini", "network", "vnstat"}, alias("mini", "network", "vnstat", "graphs"), _("VnStat Traffic Monitor"), 90) - entry({"mini", "network", "vnstat", "graphs"}, template("vnstat"), _("Graphs"), 1) - entry({"mini", "network", "vnstat", "config"}, cbi("vnstat"), _("Configuration"), 2) -end diff --git a/package/luci/applications/luci-app-vnstat/luasrc/model/cbi/vnstat.lua b/package/luci/applications/luci-app-vnstat/luasrc/model/cbi/vnstat.lua deleted file mode 100644 index c60c64950c..0000000000 --- a/package/luci/applications/luci-app-vnstat/luasrc/model/cbi/vnstat.lua +++ /dev/null @@ -1,82 +0,0 @@ --- Copyright 2010-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local utl = require "luci.util" -local sys = require "luci.sys" -local fs = require "nixio.fs" -local nw = require "luci.model.network" - -local dbdir, line - -for line in io.lines("/etc/vnstat.conf") do - dbdir = line:match("^%s*DatabaseDir%s+[\"'](%S-)[\"']") - if dbdir then break end -end - -dbdir = dbdir or "/var/lib/vnstat" - - -m = Map("vnstat", translate("VnStat"), - translate("VnStat is a network traffic monitor for Linux that keeps a log of network traffic for the selected interface(s).")) - -m.submit = translate("Restart VnStat") -m.reset = false - -nw.init(luci.model.uci.cursor_state()) - -local ifaces = { } -local enabled = { } -local iface - -if fs.access(dbdir) then - for iface in fs.dir(dbdir) do - if iface:sub(1,1) ~= '.' then - ifaces[iface] = iface - enabled[iface] = iface - end - end -end - -for _, iface in ipairs(sys.net.devices()) do - ifaces[iface] = iface -end - - -local s = m:section(TypedSection, "vnstat") -s.anonymous = true -s.addremove = false - -mon_ifaces = s:option(Value, "interface", translate("Monitor selected interfaces")) -mon_ifaces.template = "cbi/network_ifacelist" -mon_ifaces.widget = "checkbox" -mon_ifaces.cast = "table" -mon_ifaces.noinactive = true -mon_ifaces.nocreate = true - -function mon_ifaces.write(self, section, val) - local i - local s = { } - - if val then - for _, i in ipairs(type(val) == "table" and val or { val }) do - s[i] = true - end - end - - for i, _ in pairs(ifaces) do - if not s[i] then - fs.unlink(dbdir .. "/" .. i) - fs.unlink(dbdir .. "/." .. i) - end - end - - if next(s) then - m.uci:set_list("vnstat", section, "interface", utl.keys(s)) - else - m.uci:delete("vnstat", section, "interface") - end -end - -mon_ifaces.remove = mon_ifaces.write - -return m diff --git a/package/luci/applications/luci-app-vnstat/luasrc/view/vnstat.htm b/package/luci/applications/luci-app-vnstat/luasrc/view/vnstat.htm deleted file mode 100644 index 2b8d9ff9c9..0000000000 --- a/package/luci/applications/luci-app-vnstat/luasrc/view/vnstat.htm +++ /dev/null @@ -1,101 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - -local fs = require "nixio.fs" -local sys = require "luci.sys" -local utl = require "luci.util" - -local param = luci.http.formvalue - -local iface = param("iface") -local style = param("style") - -style = (style and #style > 0) and style or "s" - - --- --- render image --- -if iface then - style = style:gsub("[^%w]", "") - iface = iface:gsub("[^%w%.%-%_]", "") - - luci.http.prepare_content("image/png") - - local png = io.popen("vnstati -i '%s' '-%s' -o -" % { iface, style }) - luci.http.write(png:read("*a")) - png:close() - - return - --- --- update database --- -else - sys.call("vnstat -u >/dev/null 2>/dev/null") -end - - --- --- find databases --- -local dbdir, line - -for line in io.lines("/etc/vnstat.conf") do - dbdir = line:match("^%s*DatabaseDir%s+[\"'](%S-)[\"']") - if dbdir then break end -end - -dbdir = dbdir or "/var/lib/vnstat" - --%> - -<%+header%> - -

    <%:VnStat Graphs%>

    - -
    - - - - - -
    - -


    - -
    -<% - empty = true - ifdir = fs.dir(dbdir) - - if ifdir then - for iface in ifdir do - if iface:sub(1,1) ~= "." then - empty = false -%> - -

    -<% - end - end - end -%> - -<% if empty then %> -

    <%:No database has been set up yet. Go to the VnStat configuration and enable monitoring for one or more interfaces.%>

    -<% end %> - -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-vnstat/po/ca/vnstat.po b/package/luci/applications/luci-app-vnstat/po/ca/vnstat.po deleted file mode 100644 index 536228ee81..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/ca/vnstat.po +++ /dev/null @@ -1,65 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-09 07:13+0200\n" -"Last-Translator: Alex \n" -"Language-Team: German\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configuration" -msgstr "Configuració" - -msgid "Daily traffic" -msgstr "Trànsit diari" - -msgid "Graphs" -msgstr "Gràfics" - -msgid "Hourly traffic" -msgstr "Trànsit per hora" - -msgid "Monitor selected interfaces" -msgstr "Vigila les interfícies seleccionades" - -msgid "Monthly traffic" -msgstr "Trànsit mensual" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Encara no s'ha configurat cap base de dades. Aneu a la configuració del " -"VnStat i habilita la vigila de una o més interfícies." - -msgid "Restart VnStat" -msgstr "Reinicia el VnStat" - -msgid "Summary display" -msgstr "Mostra de resum" - -msgid "Top 10 display" -msgstr "Mostra dels 10 principals" - -msgid "Update »" -msgstr "Actualitza »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Gràfics de VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Monitor de trànsit VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"El VnStat és un monitor de trànsit de xarxa pel Linux que manté un registre " -"del trànsit de xarxa de les interfícies seleccionades." diff --git a/package/luci/applications/luci-app-vnstat/po/cs/vnstat.po b/package/luci/applications/luci-app-vnstat/po/cs/vnstat.po deleted file mode 100644 index 4818374199..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/cs/vnstat.po +++ /dev/null @@ -1,64 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Configuration" -msgstr "Konfigurace" - -msgid "Daily traffic" -msgstr "Denní přenos" - -msgid "Graphs" -msgstr "Grafy" - -msgid "Hourly traffic" -msgstr "Hodinový přenos" - -msgid "Monitor selected interfaces" -msgstr "Sledovat vybraná zařízení" - -msgid "Monthly traffic" -msgstr "Měsíční přenos" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Zatím nebyla nastavena žádná databáze. Přejděte na konfiguraci VnStatu a " -"povolnet sledování jednoho nebo více zařízení." - -msgid "Restart VnStat" -msgstr "Restartovat VnStat" - -msgid "Summary display" -msgstr "Souhrn" - -msgid "Top 10 display" -msgstr "Top 10" - -msgid "Update »" -msgstr "Aktualizovat »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Grafy VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Sledování přenosu VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat je nástroj pro sledování přenosů dat pro Linux, který ukládá " -"informace o síťovém provozu na vybraných zařízeních." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "Služba VnStat byla restartována" diff --git a/package/luci/applications/luci-app-vnstat/po/de/vnstat.po b/package/luci/applications/luci-app-vnstat/po/de/vnstat.po deleted file mode 100644 index aab7494a12..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/de/vnstat.po +++ /dev/null @@ -1,68 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2010-11-16 21:06+0100\n" -"Last-Translator: Jo-Philipp Wich \n" -"Language-Team: German\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 "Configuration" -msgstr "Konfiguration" - -msgid "Daily traffic" -msgstr "Täglicher Verkehr" - -msgid "Graphs" -msgstr "Diagramme" - -msgid "Hourly traffic" -msgstr "Stündlicher Verkehr" - -msgid "Monitor selected interfaces" -msgstr "Überwachte Schnittstellen" - -msgid "Monthly traffic" -msgstr "Monatlicher Verkehr" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Es ist noch keine Datenbank eingerichtet. Navigieren Sie zur VnStat " -"Konfiguration und aktivieren Sie die Überwachung einer oder mehrerer " -"Schnittstellen." - -msgid "Restart VnStat" -msgstr "VnStat neu starten" - -msgid "Summary display" -msgstr "Übersicht" - -msgid "Top 10 display" -msgstr "Top 10 Anzeige" - -msgid "Update »" -msgstr "Aktualisieren »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "VnStat Diagramme" - -msgid "VnStat Traffic Monitor" -msgstr "VnStat Trafficüberwachung" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat ist ein Überwachungsprogramm für Netwerkverkehr unter Linux. Das " -"Programm protokolliert das Verkehrsvolumen auf ausgewählten Schnittstellen." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "Der VnStat Dienst wurde neu gestartet." diff --git a/package/luci/applications/luci-app-vnstat/po/el/vnstat.po b/package/luci/applications/luci-app-vnstat/po/el/vnstat.po deleted file mode 100644 index 04590eadd4..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/el/vnstat.po +++ /dev/null @@ -1,59 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2010-11-16 20:54+0100\n" -"Last-Translator: \n" -"Language-Team: German\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 "Configuration" -msgstr "" - -msgid "Daily traffic" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Hourly traffic" -msgstr "" - -msgid "Monitor selected interfaces" -msgstr "" - -msgid "Monthly traffic" -msgstr "" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" - -msgid "Restart VnStat" -msgstr "" - -msgid "Summary display" -msgstr "" - -msgid "Top 10 display" -msgstr "" - -msgid "Update »" -msgstr "" - -msgid "VnStat" -msgstr "" - -msgid "VnStat Graphs" -msgstr "" - -msgid "VnStat Traffic Monitor" -msgstr "" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" diff --git a/package/luci/applications/luci-app-vnstat/po/en/vnstat.po b/package/luci/applications/luci-app-vnstat/po/en/vnstat.po deleted file mode 100644 index 04590eadd4..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/en/vnstat.po +++ /dev/null @@ -1,59 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2010-11-16 20:54+0100\n" -"Last-Translator: \n" -"Language-Team: German\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 "Configuration" -msgstr "" - -msgid "Daily traffic" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Hourly traffic" -msgstr "" - -msgid "Monitor selected interfaces" -msgstr "" - -msgid "Monthly traffic" -msgstr "" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" - -msgid "Restart VnStat" -msgstr "" - -msgid "Summary display" -msgstr "" - -msgid "Top 10 display" -msgstr "" - -msgid "Update »" -msgstr "" - -msgid "VnStat" -msgstr "" - -msgid "VnStat Graphs" -msgstr "" - -msgid "VnStat Traffic Monitor" -msgstr "" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" diff --git a/package/luci/applications/luci-app-vnstat/po/es/vnstat.po b/package/luci/applications/luci-app-vnstat/po/es/vnstat.po deleted file mode 100644 index b91e1bb5da..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/es/vnstat.po +++ /dev/null @@ -1,68 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-10-07 15:08+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: German\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configuration" -msgstr "Configuración" - -msgid "Daily traffic" -msgstr "Tráfico diario" - -msgid "Graphs" -msgstr "Gráficas" - -msgid "Hourly traffic" -msgstr "Tráfico por horas" - -msgid "Monitor selected interfaces" -msgstr "Monitorizar las interfaces seleccionadas" - -msgid "Monthly traffic" -msgstr "Tráfico mensual" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Todavía no se ha configurado ninguna base de datos. Vaya a la configuración " -"de VnStat y habilite la monitorización para una o más interfaces." - -msgid "Restart VnStat" -msgstr "Rearrancar VnStat" - -msgid "Summary display" -msgstr "Mostrar Resumen" - -msgid "Top 10 display" -msgstr "Mostrar Top 10" - -msgid "Update »" -msgstr "Actualizar »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Graficas de VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Monitor de trafico de VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat es un monitor de tráfico de red para Linux que mantiene un registro " -"del trafico de red de la interfaz o interfaces seleccionadas." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "El servicio VnStat ha sido reiniciado" diff --git a/package/luci/applications/luci-app-vnstat/po/fr/vnstat.po b/package/luci/applications/luci-app-vnstat/po/fr/vnstat.po deleted file mode 100644 index 23b644aca1..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/fr/vnstat.po +++ /dev/null @@ -1,68 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-11-23 22:33+0200\n" -"Last-Translator: fredb \n" -"Language-Team: German\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Configuration" -msgstr "Configuration" - -msgid "Daily traffic" -msgstr "Trafic quotidien" - -msgid "Graphs" -msgstr "Graphes" - -msgid "Hourly traffic" -msgstr "Trafic horaire" - -msgid "Monitor selected interfaces" -msgstr "Surveiller les interfaces sélectionnées" - -msgid "Monthly traffic" -msgstr "Trafic mensuel" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Aucun enregistrement n'a encore été configuré. Allez dans la configuration " -"de VnStat et activez la surveillance d'une ou plusieurs interface(s)." - -msgid "Restart VnStat" -msgstr "Redémarrer VnStat" - -msgid "Summary display" -msgstr "Résumé" - -msgid "Top 10 display" -msgstr "Top 10" - -msgid "Update »" -msgstr "Mise à jour »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Graphiques VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Surveillance du trafic VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat est un outil de surveillance du réseau pour Linux qui garde un " -"journal du trafic du ou des interface(s) sélectionnée(s)." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "Le service VnStat a été redémarré." diff --git a/package/luci/applications/luci-app-vnstat/po/he/vnstat.po b/package/luci/applications/luci-app-vnstat/po/he/vnstat.po deleted file mode 100644 index f0ef3a78ba..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/he/vnstat.po +++ /dev/null @@ -1,58 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Configuration" -msgstr "" - -msgid "Daily traffic" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Hourly traffic" -msgstr "" - -msgid "Monitor selected interfaces" -msgstr "" - -msgid "Monthly traffic" -msgstr "" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" - -msgid "Restart VnStat" -msgstr "" - -msgid "Summary display" -msgstr "" - -msgid "Top 10 display" -msgstr "" - -msgid "Update »" -msgstr "" - -msgid "VnStat" -msgstr "" - -msgid "VnStat Graphs" -msgstr "" - -msgid "VnStat Traffic Monitor" -msgstr "" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" diff --git a/package/luci/applications/luci-app-vnstat/po/hu/vnstat.po b/package/luci/applications/luci-app-vnstat/po/hu/vnstat.po deleted file mode 100644 index b198c5db28..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/hu/vnstat.po +++ /dev/null @@ -1,65 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Configuration" -msgstr "Beállítások" - -msgid "Daily traffic" -msgstr "Napi forgalom" - -msgid "Graphs" -msgstr "Grafikonok" - -msgid "Hourly traffic" -msgstr "Óránkénti forgalom" - -msgid "Monitor selected interfaces" -msgstr "Kiválasztott interfészek figyelése" - -msgid "Monthly traffic" -msgstr "Havi forgalom" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Adatbázis még nem lett beállítva. Engedélyezze egy vagy több interfész " -"figyelését a VnStat beállításoknál." - -msgid "Restart VnStat" -msgstr "VnStat újraíndítása" - -msgid "Summary display" -msgstr "Összefoglaló nézet" - -msgid "Top 10 display" -msgstr "Top 10 nézet" - -msgid "Update »" -msgstr "Frissítés »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "VnStat grafikonok" - -msgid "VnStat Traffic Monitor" -msgstr "VnStat Forgalom Figyelő" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat egy hálózati forgalom figyelő alkalmazás Linux alá ami naplózza a " -"kiválasztott interfész(ek) hálózati forgalmát." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "A VnStat szolgáltatás újra lett índítva." diff --git a/package/luci/applications/luci-app-vnstat/po/it/vnstat.po b/package/luci/applications/luci-app-vnstat/po/it/vnstat.po deleted file mode 100644 index 8cc6e5b393..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/it/vnstat.po +++ /dev/null @@ -1,68 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-05-17 22:00+0200\n" -"Last-Translator: coatto87 \n" -"Language-Team: German\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Configuration" -msgstr "Configurazione" - -msgid "Daily traffic" -msgstr "Traffico giornaliero" - -msgid "Graphs" -msgstr "Grafici" - -msgid "Hourly traffic" -msgstr "Traffico orario" - -msgid "Monitor selected interfaces" -msgstr "Monitora le interfacce selezionate" - -msgid "Monthly traffic" -msgstr "Traffico mensile" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Non è ancora stato configurato un database. Vai nella configurazione di " -"VnStat e abilita il monitoraggio per una o più interfacce." - -msgid "Restart VnStat" -msgstr "Riavvia VnStat" - -msgid "Summary display" -msgstr "Riassunto" - -msgid "Top 10 display" -msgstr "Top 10 display" - -msgid "Update »" -msgstr "Aggiorna" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Grafici VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Monitor del traffico VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat è un monitor del traffico di rete per Linux che scrive un log per le " -"interfacce selezionate." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "Il servizio VnStat è stato riavviato." diff --git a/package/luci/applications/luci-app-vnstat/po/ja/vnstat.po b/package/luci/applications/luci-app-vnstat/po/ja/vnstat.po deleted file mode 100644 index 8708c6fb00..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/ja/vnstat.po +++ /dev/null @@ -1,68 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-08-19 06:15+0200\n" -"Last-Translator: Kentaro \n" -"Language-Team: German\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.4\n" - -msgid "Configuration" -msgstr "設定" - -msgid "Daily traffic" -msgstr "1日周期のトラフィック" - -msgid "Graphs" -msgstr "グラフ" - -msgid "Hourly traffic" -msgstr "1時間周期のトラフィック" - -msgid "Monitor selected interfaces" -msgstr "モニターするインターフェースを選択" - -msgid "Monthly traffic" -msgstr "1月周期のトラフィック" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"データベースが設定されていません。VnStat設定ページへ移動し、1つ以上のイン" -"ターフェースのモニタリングを有効にしてください。" - -msgid "Restart VnStat" -msgstr "VnStatを再起動" - -msgid "Summary display" -msgstr "サマリーを表示" - -msgid "Top 10 display" -msgstr "トップ10を表示" - -msgid "Update »" -msgstr "更新 »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "VnStat グラフ" - -msgid "VnStat Traffic Monitor" -msgstr "VnStatトラフィックモニタ" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStatは選択したインタフェースのネットワークトラフィックをロギングするLinuxの" -"トラフィックモニターです。" - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "VnStatサービスは再起動しました。" diff --git a/package/luci/applications/luci-app-vnstat/po/ms/vnstat.po b/package/luci/applications/luci-app-vnstat/po/ms/vnstat.po deleted file mode 100644 index 04590eadd4..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/ms/vnstat.po +++ /dev/null @@ -1,59 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2010-11-16 20:54+0100\n" -"Last-Translator: \n" -"Language-Team: German\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 "Configuration" -msgstr "" - -msgid "Daily traffic" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Hourly traffic" -msgstr "" - -msgid "Monitor selected interfaces" -msgstr "" - -msgid "Monthly traffic" -msgstr "" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" - -msgid "Restart VnStat" -msgstr "" - -msgid "Summary display" -msgstr "" - -msgid "Top 10 display" -msgstr "" - -msgid "Update »" -msgstr "" - -msgid "VnStat" -msgstr "" - -msgid "VnStat Graphs" -msgstr "" - -msgid "VnStat Traffic Monitor" -msgstr "" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" diff --git a/package/luci/applications/luci-app-vnstat/po/no/vnstat.po b/package/luci/applications/luci-app-vnstat/po/no/vnstat.po deleted file mode 100644 index c1e94d29ee..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/no/vnstat.po +++ /dev/null @@ -1,58 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Configuration" -msgstr "Konfigurasjon" - -msgid "Daily traffic" -msgstr "Trafikk hver dag" - -msgid "Graphs" -msgstr "Grafer" - -msgid "Hourly traffic" -msgstr "Trafikk hver time" - -msgid "Monitor selected interfaces" -msgstr "Overvåk valgte grensesnitt" - -msgid "Monthly traffic" -msgstr "Trafikk hver måned" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Ingen database har blitt satt opp ennå. Gå til VnStat konfigurasjonen og " -"aktiver overvåking for ett eller flere grensesnitt." - -msgid "Restart VnStat" -msgstr "Omstart VnStat" - -msgid "Summary display" -msgstr "Visning av sammendrag" - -msgid "Top 10 display" -msgstr "Top 10 visning" - -msgid "Update »" -msgstr "Oppdater »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "VnStat Grafer" - -msgid "VnStat Traffic Monitor" -msgstr "VnStat Trafikk Monitor" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat er en nettverks trafikk monitor for Linux som loggfører " -"nettverks trafikk for de valgte grensesnitt." diff --git a/package/luci/applications/luci-app-vnstat/po/pl/vnstat.po b/package/luci/applications/luci-app-vnstat/po/pl/vnstat.po deleted file mode 100644 index 5b0d8b09e9..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/pl/vnstat.po +++ /dev/null @@ -1,69 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-09-20 12:21+0200\n" -"Last-Translator: Michał \n" -"Language-Team: German\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Configuration" -msgstr "Konfiguracja" - -msgid "Daily traffic" -msgstr "Obciążenie dzienne" - -msgid "Graphs" -msgstr "Wykresy" - -msgid "Hourly traffic" -msgstr "Obciążenie godzinowe" - -msgid "Monitor selected interfaces" -msgstr "Monitoruj wybrane interfejsy" - -msgid "Monthly traffic" -msgstr "Obciążenie miesięczne" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Nie ustawiono żadnej bazy danych. Idź do konfiguracji VnStat i włącz " -"monitorowanie dla jednego lub więcej interfejsów." - -msgid "Restart VnStat" -msgstr "Restartuj VnStat" - -msgid "Summary display" -msgstr "Podsumowanie" - -msgid "Top 10 display" -msgstr "TOP 10" - -msgid "Update »" -msgstr "Aktualizuj »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Wykresy VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Monitor obciążenia VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat to aplikacja monitorująca ruch sieciowy w Linuxie, który utrzymuje " -"loga ruchu sieciowego dla określonych interfejsów." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "Usługa VnStat została uruchomiona ponownie." diff --git a/package/luci/applications/luci-app-vnstat/po/pt-br/vnstat.po b/package/luci/applications/luci-app-vnstat/po/pt-br/vnstat.po deleted file mode 100644 index 47cf09aed9..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/pt-br/vnstat.po +++ /dev/null @@ -1,68 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-11 21:02+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: German\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Daily traffic" -msgstr "Tráfego diário" - -msgid "Graphs" -msgstr "Gráficos" - -msgid "Hourly traffic" -msgstr "Tráfego horário" - -msgid "Monitor selected interfaces" -msgstr "Monitore as interfaces selecionadas" - -msgid "Monthly traffic" -msgstr "Tráfego mensal" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Ainda nenhum banco de dados foi definido. Vá para a configuração do VnStat " -"ehabilite o monitoramento para um ou mais interfaces." - -msgid "Restart VnStat" -msgstr "Reiniciar VnStat" - -msgid "Summary display" -msgstr "Tela de resumo" - -msgid "Top 10 display" -msgstr "Tela dos 10 mais" - -msgid "Update »" -msgstr "Atualizar »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Gráficos VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Monitor de Tráfego VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat é um monitor de tráfego de rede para Linux que mantém um registro do " -"tráfego para a(s) interface(s) selecionada(s)." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "O serviço VnStat foi reiniciado." diff --git a/package/luci/applications/luci-app-vnstat/po/pt/vnstat.po b/package/luci/applications/luci-app-vnstat/po/pt/vnstat.po deleted file mode 100644 index 729789055e..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/pt/vnstat.po +++ /dev/null @@ -1,65 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-05-31 16:25+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: German\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Daily traffic" -msgstr "Tráfego Diário" - -msgid "Graphs" -msgstr "Gráficos" - -msgid "Hourly traffic" -msgstr "Tráfego por hora" - -msgid "Monitor selected interfaces" -msgstr "Monitorizar as interfaces selecionadas" - -msgid "Monthly traffic" -msgstr "Tráfego mensal" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Ainda não foi configurada uma base de dados. Vá até à configuração do VnStat " -"e ative a monitorização para uma ou mais interfaces." - -msgid "Restart VnStat" -msgstr "Reiniciar VnStat" - -msgid "Summary display" -msgstr "Mostrar resumo" - -msgid "Top 10 display" -msgstr "Mostrar Top 10" - -msgid "Update »" -msgstr "Atualizar »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Gráficos VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Monitor de Tráfego VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"O VnStat é um monitor de tráfego para Linux que mantêm um registo do tráfego " -"para as interface (s) selecionadas." diff --git a/package/luci/applications/luci-app-vnstat/po/ro/vnstat.po b/package/luci/applications/luci-app-vnstat/po/ro/vnstat.po deleted file mode 100644 index 093182bde6..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/ro/vnstat.po +++ /dev/null @@ -1,69 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-07 16:01+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Configuration" -msgstr "Configurare" - -msgid "Daily traffic" -msgstr "Trafic zilnic" - -msgid "Graphs" -msgstr "Grafice" - -msgid "Hourly traffic" -msgstr "Trafic la fiecare ora" - -msgid "Monitor selected interfaces" -msgstr "Monitorizeaza interfetele selectate" - -msgid "Monthly traffic" -msgstr "Trafic lunar" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Nu a fost setata nici o baza de date. La configurarea VnStat se poate activa " -"monitoriza pentru una sau mai multe interfete." - -msgid "Restart VnStat" -msgstr "Restarteaza VnStat" - -msgid "Summary display" -msgstr "Afiseaza sumarul" - -msgid "Top 10 display" -msgstr "Afiseaza top 10" - -msgid "Update »" -msgstr "Updateaza »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Graficele VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Monitorul de trafic VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"Vnstat este un monitor de retea ce pastreaza detalii legate de traficul pe " -"interfetele selectate." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "Serviciul VnStat a fost restartat." diff --git a/package/luci/applications/luci-app-vnstat/po/ru/vnstat.po b/package/luci/applications/luci-app-vnstat/po/ru/vnstat.po deleted file mode 100644 index 5254ca1ee1..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/ru/vnstat.po +++ /dev/null @@ -1,71 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: vnstat\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2012-08-15 11:48+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Configuration" -msgstr "Конфигурация" - -msgid "Daily traffic" -msgstr "Трафик за день" - -msgid "Graphs" -msgstr "Графики" - -msgid "Hourly traffic" -msgstr "Трафик за час" - -msgid "Monitor selected interfaces" -msgstr "Собирать статистику на выбранных интерфейсах" - -msgid "Monthly traffic" -msgstr "Трафик за месяц" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"База данных не настроена. Перейдите в конфигурацию и укажите интерфейсы для " -"сбора статистики." - -msgid "Restart VnStat" -msgstr "Перезапустить VnStat" - -msgid "Summary display" -msgstr "Сводная статистика" - -msgid "Top 10 display" -msgstr "Последние 10" - -msgid "Update »" -msgstr "Обновить »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Графики VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Монитор трафика VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat - монитор сетевого трафика для Linux, собирающий статистику по " -"выбранным интерфейсам." - -#~ msgid "The VnStat service has been restarted." -#~ msgstr "VnStat сервис перезапущен." diff --git a/package/luci/applications/luci-app-vnstat/po/sk/vnstat.po b/package/luci/applications/luci-app-vnstat/po/sk/vnstat.po deleted file mode 100644 index 5926ecfeb0..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/sk/vnstat.po +++ /dev/null @@ -1,58 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Configuration" -msgstr "" - -msgid "Daily traffic" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Hourly traffic" -msgstr "" - -msgid "Monitor selected interfaces" -msgstr "" - -msgid "Monthly traffic" -msgstr "" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" - -msgid "Restart VnStat" -msgstr "" - -msgid "Summary display" -msgstr "" - -msgid "Top 10 display" -msgstr "" - -msgid "Update »" -msgstr "" - -msgid "VnStat" -msgstr "" - -msgid "VnStat Graphs" -msgstr "" - -msgid "VnStat Traffic Monitor" -msgstr "" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" diff --git a/package/luci/applications/luci-app-vnstat/po/sv/vnstat.po b/package/luci/applications/luci-app-vnstat/po/sv/vnstat.po deleted file mode 100644 index 30f2cef2ec..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/sv/vnstat.po +++ /dev/null @@ -1,61 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Daily traffic" -msgstr "Daglig traffik" - -msgid "Graphs" -msgstr "Grafer" - -msgid "Hourly traffic" -msgstr "Trafik per timma" - -msgid "Monitor selected interfaces" -msgstr "Bevaka valda gränssnitt" - -msgid "Monthly traffic" -msgstr "Trafik per månad" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Det har inte ställts in någon databas ännu. Gå till VnStat-konfigurationen " -"och aktivera övervakning av en eller fler gränssnitt." - -msgid "Restart VnStat" -msgstr "Starta om VnStat" - -msgid "Summary display" -msgstr "" - -msgid "Top 10 display" -msgstr "" - -msgid "Update »" -msgstr "Uppdatera »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Grafer för VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Trafik-bevakare för VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" diff --git a/package/luci/applications/luci-app-vnstat/po/templates/vnstat.pot b/package/luci/applications/luci-app-vnstat/po/templates/vnstat.pot deleted file mode 100644 index 4dccf05c7c..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/templates/vnstat.pot +++ /dev/null @@ -1,51 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Configuration" -msgstr "" - -msgid "Daily traffic" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Hourly traffic" -msgstr "" - -msgid "Monitor selected interfaces" -msgstr "" - -msgid "Monthly traffic" -msgstr "" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" - -msgid "Restart VnStat" -msgstr "" - -msgid "Summary display" -msgstr "" - -msgid "Top 10 display" -msgstr "" - -msgid "Update »" -msgstr "" - -msgid "VnStat" -msgstr "" - -msgid "VnStat Graphs" -msgstr "" - -msgid "VnStat Traffic Monitor" -msgstr "" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" diff --git a/package/luci/applications/luci-app-vnstat/po/tr/vnstat.po b/package/luci/applications/luci-app-vnstat/po/tr/vnstat.po deleted file mode 100644 index 5e001c9326..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/tr/vnstat.po +++ /dev/null @@ -1,58 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Configuration" -msgstr "" - -msgid "Daily traffic" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Hourly traffic" -msgstr "" - -msgid "Monitor selected interfaces" -msgstr "" - -msgid "Monthly traffic" -msgstr "" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" - -msgid "Restart VnStat" -msgstr "" - -msgid "Summary display" -msgstr "" - -msgid "Top 10 display" -msgstr "" - -msgid "Update »" -msgstr "" - -msgid "VnStat" -msgstr "" - -msgid "VnStat Graphs" -msgstr "" - -msgid "VnStat Traffic Monitor" -msgstr "" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" diff --git a/package/luci/applications/luci-app-vnstat/po/uk/vnstat.po b/package/luci/applications/luci-app-vnstat/po/uk/vnstat.po deleted file mode 100644 index 5f9d25783a..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/uk/vnstat.po +++ /dev/null @@ -1,67 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-13 15:33+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Configuration" -msgstr "Конфігурація" - -msgid "Daily traffic" -msgstr "Список щоденного трафіку" - -msgid "Graphs" -msgstr "Графіки" - -msgid "Hourly traffic" -msgstr "Список погодинного трафіку" - -msgid "Monitor selected interfaces" -msgstr "Моніторинг обраних інтерфейсів" - -msgid "Monthly traffic" -msgstr "Список щомісячного трафіку" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" -"Не була створена база даних. Перейдіть до вкладки конфігурації VnStat та " -"увімкніть моніторинг для одного або декількох інтерфейсів." - -msgid "Restart VnStat" -msgstr "Перезапуск VnStat" - -#, fuzzy -msgid "Summary display" -msgstr "Загальна таблиця" - -msgid "Top 10 display" -msgstr "Список Топ-10" - -msgid "Update »" -msgstr "Оновлення »" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "Графіки VnStat" - -msgid "VnStat Traffic Monitor" -msgstr "Моніторінг трафіку VnStat" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" -"VnStat - монітор мережного трафіку для Linux, який веде журнал мережевого " -"трафіку для обраного інтерфейсу або декількох інтерфейсів." diff --git a/package/luci/applications/luci-app-vnstat/po/vi/vnstat.po b/package/luci/applications/luci-app-vnstat/po/vi/vnstat.po deleted file mode 100644 index 0303835f62..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/vi/vnstat.po +++ /dev/null @@ -1,59 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2010-11-16 20:55+0100\n" -"Last-Translator: \n" -"Language-Team: German\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 "Configuration" -msgstr "" - -msgid "Daily traffic" -msgstr "" - -msgid "Graphs" -msgstr "" - -msgid "Hourly traffic" -msgstr "" - -msgid "Monitor selected interfaces" -msgstr "" - -msgid "Monthly traffic" -msgstr "" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "" - -msgid "Restart VnStat" -msgstr "" - -msgid "Summary display" -msgstr "" - -msgid "Top 10 display" -msgstr "" - -msgid "Update »" -msgstr "" - -msgid "VnStat" -msgstr "" - -msgid "VnStat Graphs" -msgstr "" - -msgid "VnStat Traffic Monitor" -msgstr "" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "" diff --git a/package/luci/applications/luci-app-vnstat/po/zh-cn/vnstat.po b/package/luci/applications/luci-app-vnstat/po/zh-cn/vnstat.po deleted file mode 100644 index 68e4905f05..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/zh-cn/vnstat.po +++ /dev/null @@ -1,61 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-08 14:05+0200\n" -"Last-Translator: Tanyingyu \n" -"Language-Team: German\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" - -msgid "Configuration" -msgstr "配置" - -msgid "Daily traffic" -msgstr "流量日报" - -msgid "Graphs" -msgstr "图表" - -msgid "Hourly traffic" -msgstr "流量时报" - -msgid "Monitor selected interfaces" -msgstr "监控选择的接口" - -msgid "Monthly traffic" -msgstr "流量月报" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "没有创建统计数据。 去VnStat配置,并启动监控一个或多个接口。" - -msgid "Restart VnStat" -msgstr "重置VnStat" - -msgid "Summary display" -msgstr "摘要显示" - -msgid "Top 10 display" -msgstr "显示前10" - -msgid "Update »" -msgstr "更新" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "VnStat图表" - -msgid "VnStat Traffic Monitor" -msgstr "VNStat流量监控" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr "vnstat是一个网络流量监控器,用于Linux保留所选接口的网络流量日志。" diff --git a/package/luci/applications/luci-app-vnstat/po/zh-tw/vnstat.po b/package/luci/applications/luci-app-vnstat/po/zh-tw/vnstat.po deleted file mode 100644 index 261747aad2..0000000000 --- a/package/luci/applications/luci-app-vnstat/po/zh-tw/vnstat.po +++ /dev/null @@ -1,61 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 10:52+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Configuration" -msgstr "設定" - -msgid "Daily traffic" -msgstr "每日流量" - -msgid "Graphs" -msgstr "圖表" - -msgid "Hourly traffic" -msgstr "每小時流量" - -msgid "Monitor selected interfaces" -msgstr "監控選到的介面" - -msgid "Monthly traffic" -msgstr "每月流量" - -msgid "" -"No database has been set up yet. Go to the VnStat configuration and enable " -"monitoring for one or more interfaces." -msgstr "尚無任何資料庫被設定. 進入VnStat針對某一個或多個介面設定並啟用監視." - -msgid "Restart VnStat" -msgstr "從新啟動 VnStat" - -msgid "Summary display" -msgstr "顯示概要" - -msgid "Top 10 display" -msgstr "顯示前10名" - -msgid "Update »" -msgstr "更新" - -msgid "VnStat" -msgstr "VnStat" - -msgid "VnStat Graphs" -msgstr "VnStat圖表" - -msgid "VnStat Traffic Monitor" -msgstr "VnStat流量監視" - -msgid "" -"VnStat is a network traffic monitor for Linux that keeps a log of network " -"traffic for the selected interface(s)." -msgstr " VnStat是一個針對Linux上的網路流量監視可達到保存特定介面的流量紀錄" diff --git a/package/luci/applications/luci-app-vnstat/root/etc/uci-defaults/40_luci-vnstat b/package/luci/applications/luci-app-vnstat/root/etc/uci-defaults/40_luci-vnstat deleted file mode 100755 index fa204b3b48..0000000000 --- a/package/luci/applications/luci-app-vnstat/root/etc/uci-defaults/40_luci-vnstat +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@vnstat[-1] - add ucitrack vnstat - set ucitrack.@vnstat[-1].init=vnstat - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-voice-core/Makefile b/package/luci/applications/luci-app-voice-core/Makefile deleted file mode 100644 index 32c476ced7..0000000000 --- a/package/luci/applications/luci-app-voice-core/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Voice Software (Core) -LUCI_DEPENDS:=@BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-voice-core/luasrc/controller/luci_voice.lua b/package/luci/applications/luci-app-voice-core/luasrc/controller/luci_voice.lua deleted file mode 100644 index b37018de19..0000000000 --- a/package/luci/applications/luci-app-voice-core/luasrc/controller/luci_voice.lua +++ /dev/null @@ -1,21 +0,0 @@ --- Copyright 2009 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.luci_voice", package.seeall) - -function index() - local e - - e = entry({"admin", "voice"}, template("luci_voice/index") , _("Voice"), 90) - e.index = true - - e = entry({"mini", "voice"}, template("luci_voice/index"), _("Voice"), 90) - e.index = true - - e = entry({"mini", "voice", "phones"}, template("luci_voice/phone_index"), _("Phones"), 90) - e.index = true - - e = entry({"admin", "voice", "phones"}, template("luci_voice/phone_index"), _("Phones"), 90) - e.index = true - -end diff --git a/package/luci/applications/luci-app-voice-core/luasrc/view/luci_voice/index.htm b/package/luci/applications/luci-app-voice-core/luasrc/view/luci_voice/index.htm deleted file mode 100644 index e14862e7d1..0000000000 --- a/package/luci/applications/luci-app-voice-core/luasrc/view/luci_voice/index.htm +++ /dev/null @@ -1,16 +0,0 @@ -<%# - Copyright 2009 Daniel Dickinson - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    Voice

    -

    Here you can control OpenWRT voice-related settings and see - voice-related information from OpenWRT

    -

    In particular Asterisk configuration and information is displayed - here, as well as diagnostics that specifically apply to voice but are - not general networking diagnostics (e.g. includes SIP device scans, but not - ping tests). Includes PSTN phones as well as VoIP and possibly - non-telephony related options. -

    -<%+footer%> diff --git a/package/luci/applications/luci-app-voice-core/luasrc/view/luci_voice/phone_index.htm b/package/luci/applications/luci-app-voice-core/luasrc/view/luci_voice/phone_index.htm deleted file mode 100644 index c4466cbf06..0000000000 --- a/package/luci/applications/luci-app-voice-core/luasrc/view/luci_voice/phone_index.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%# - Copyright 2009 Daniel Dickinson - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    Phones

    -

    Here you can control phone configuration and information in OpenWRT

    -

    You can control the setup of phone clients and servers and see - information such as diagnostics related to phone devices from this menu. -

    -<%+footer%> diff --git a/package/luci/applications/luci-app-voice-core/po/ca/voice_core.po b/package/luci/applications/luci-app-voice-core/po/ca/voice_core.po deleted file mode 100644 index 068620965b..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/ca/voice_core.po +++ /dev/null @@ -1,18 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-29 01:58+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telèfons" - -msgid "Voice" -msgstr "Veu" diff --git a/package/luci/applications/luci-app-voice-core/po/cs/voice_core.po b/package/luci/applications/luci-app-voice-core/po/cs/voice_core.po deleted file mode 100644 index e4eae35ae5..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/cs/voice_core.po +++ /dev/null @@ -1,21 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-29 21:47+0200\n" -"Last-Translator: Astran \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telefony" - -msgid "Voice" -msgstr "Hlas" - -#~ msgid "l_v_adminphones" -#~ msgstr "Telefony" diff --git a/package/luci/applications/luci-app-voice-core/po/de/voice_core.po b/package/luci/applications/luci-app-voice-core/po/de/voice_core.po deleted file mode 100644 index 2a03b63412..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/de/voice_core.po +++ /dev/null @@ -1,18 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-28 22:20+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telefone" - -msgid "Voice" -msgstr "Sprache" diff --git a/package/luci/applications/luci-app-voice-core/po/el/voice_core.po b/package/luci/applications/luci-app-voice-core/po/el/voice_core.po deleted file mode 100644 index 01abb41393..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/el/voice_core.po +++ /dev/null @@ -1,18 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-02-16 19:15+0200\n" -"Last-Translator: Jinxcat \n" -"Language-Team: none\n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Phones" -msgstr "Τηλέφωνα" - -msgid "Voice" -msgstr "" diff --git a/package/luci/applications/luci-app-voice-core/po/en/voice_core.po b/package/luci/applications/luci-app-voice-core/po/en/voice_core.po deleted file mode 100644 index 297f873138..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/en/voice_core.po +++ /dev/null @@ -1,23 +0,0 @@ -# Voice Core. -# Copyright (C) 2009 Daniel Dickinson -# Daniel Dickinson , 2009. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2009-07-16 22:19-0400\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Phones" -msgstr "Phones" - -msgid "Voice" -msgstr "" - -#~ msgid "l_v_adminphones" -#~ msgstr "Phones" diff --git a/package/luci/applications/luci-app-voice-core/po/es/voice_core.po b/package/luci/applications/luci-app-voice-core/po/es/voice_core.po deleted file mode 100644 index 74e2c23cae..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/es/voice_core.po +++ /dev/null @@ -1,21 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-07-28 23:17+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Teléfonos" - -msgid "Voice" -msgstr "Voz" - -#~ msgid "l_v_adminphones" -#~ msgstr "l_v_adminphones" diff --git a/package/luci/applications/luci-app-voice-core/po/fr/voice_core.po b/package/luci/applications/luci-app-voice-core/po/fr/voice_core.po deleted file mode 100644 index 71ef06285a..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/fr/voice_core.po +++ /dev/null @@ -1,21 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-11-06 16:09+0200\n" -"Last-Translator: hogsim \n" -"Language-Team: none\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Téléphones" - -msgid "Voice" -msgstr "Voix" - -#~ msgid "l_v_adminphones" -#~ msgstr "Téléphones" diff --git a/package/luci/applications/luci-app-voice-core/po/he/voice_core.po b/package/luci/applications/luci-app-voice-core/po/he/voice_core.po deleted file mode 100644 index 74440e343d..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/he/voice_core.po +++ /dev/null @@ -1,22 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-10 03:44+0200\n" -"Last-Translator: Snoof \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "טלפונים" - -msgid "Voice" -msgstr "קול" - -# מה בדיוק מתרגמים כאן? אם זה phones אז התרגום הוא טלפונים. אם זה l_v_adminphones אז זה מונח טכני וצריך להשאיר אותו ללא שינוי -#~ msgid "l_v_adminphones" -#~ msgstr "טלפונים" diff --git a/package/luci/applications/luci-app-voice-core/po/hu/voice_core.po b/package/luci/applications/luci-app-voice-core/po/hu/voice_core.po deleted file mode 100644 index 07eaa14d70..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/hu/voice_core.po +++ /dev/null @@ -1,21 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-01 09:34+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Phones" -msgstr "Telefonok" - -msgid "Voice" -msgstr "Hang" - -#~ msgid "l_v_adminphones" -#~ msgstr "l_v_adminphones" diff --git a/package/luci/applications/luci-app-voice-core/po/it/voice_core.po b/package/luci/applications/luci-app-voice-core/po/it/voice_core.po deleted file mode 100644 index 4d22ff03b2..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/it/voice_core.po +++ /dev/null @@ -1,21 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-03 14:00+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telefoni" - -msgid "Voice" -msgstr "Voce" - -#~ msgid "l_v_adminphones" -#~ msgstr "l_v_adminphones" diff --git a/package/luci/applications/luci-app-voice-core/po/ja/voice_core.po b/package/luci/applications/luci-app-voice-core/po/ja/voice_core.po deleted file mode 100644 index c7e60e204f..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/ja/voice_core.po +++ /dev/null @@ -1,18 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Phones" -msgstr "電話" - -msgid "Voice" -msgstr "" - -#~ msgid "l_v_adminphones" -#~ msgstr "l_v_adminphones" diff --git a/package/luci/applications/luci-app-voice-core/po/ms/voice_core.po b/package/luci/applications/luci-app-voice-core/po/ms/voice_core.po deleted file mode 100644 index a866bec5d4..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/ms/voice_core.po +++ /dev/null @@ -1,14 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Phones" -msgstr "" - -msgid "Voice" -msgstr "" diff --git a/package/luci/applications/luci-app-voice-core/po/no/voice_core.po b/package/luci/applications/luci-app-voice-core/po/no/voice_core.po deleted file mode 100644 index a0149da4bb..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/no/voice_core.po +++ /dev/null @@ -1,14 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Phones" -msgstr "Telefoner" - -msgid "Voice" -msgstr "Voice" - -#~ msgid "l_v_adminphones" -#~ msgstr "Admin Telefoner" diff --git a/package/luci/applications/luci-app-voice-core/po/pl/voice_core.po b/package/luci/applications/luci-app-voice-core/po/pl/voice_core.po deleted file mode 100644 index 39950f85f9..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/pl/voice_core.po +++ /dev/null @@ -1,22 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-24 07:03+0200\n" -"Last-Translator: goodgod261 \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telefony" - -msgid "Voice" -msgstr "Głos" - -#~ msgid "l_v_adminphones" -#~ msgstr "l_v_adminphones" diff --git a/package/luci/applications/luci-app-voice-core/po/pt-br/voice_core.po b/package/luci/applications/luci-app-voice-core/po/pt-br/voice_core.po deleted file mode 100644 index 18cab7235b..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/pt-br/voice_core.po +++ /dev/null @@ -1,21 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-07-05 06:44+0200\n" -"Last-Translator: rafaelff1 \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telefones" - -msgid "Voice" -msgstr "Voz" - -#~ msgid "l_v_adminphones" -#~ msgstr "l_v_adminphones" diff --git a/package/luci/applications/luci-app-voice-core/po/pt/voice_core.po b/package/luci/applications/luci-app-voice-core/po/pt/voice_core.po deleted file mode 100644 index 07d6093f67..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/pt/voice_core.po +++ /dev/null @@ -1,18 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-05-01 00:34+0200\n" -"Last-Translator: pedromrgoncalves \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telefones" - -msgid "Voice" -msgstr "Voz" diff --git a/package/luci/applications/luci-app-voice-core/po/ro/voice_core.po b/package/luci/applications/luci-app-voice-core/po/ro/voice_core.po deleted file mode 100644 index 1776a51fe1..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/ro/voice_core.po +++ /dev/null @@ -1,22 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-09-25 19:14+0200\n" -"Last-Translator: Mihai \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telefoane" - -msgid "Voice" -msgstr "Voce" - -#~ msgid "l_v_adminphones" -#~ msgstr "l_v_adminphones" diff --git a/package/luci/applications/luci-app-voice-core/po/ru/voice_core.po b/package/luci/applications/luci-app-voice-core/po/ru/voice_core.po deleted file mode 100644 index b6631dfc05..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/ru/voice_core.po +++ /dev/null @@ -1,24 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: voice_core\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2012-08-15 11:23+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Phones" -msgstr "Телефоны" - -msgid "Voice" -msgstr "Голос" - -#~ msgid "l_v_adminphones" -#~ msgstr "l_v_adminphones" diff --git a/package/luci/applications/luci-app-voice-core/po/sk/voice_core.po b/package/luci/applications/luci-app-voice-core/po/sk/voice_core.po deleted file mode 100644 index 9c30581d14..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/sk/voice_core.po +++ /dev/null @@ -1,15 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Phones" -msgstr "" - -msgid "Voice" -msgstr "" diff --git a/package/luci/applications/luci-app-voice-core/po/sv/voice_core.po b/package/luci/applications/luci-app-voice-core/po/sv/voice_core.po deleted file mode 100644 index 803726a384..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/sv/voice_core.po +++ /dev/null @@ -1,18 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-28 06:14+0200\n" -"Last-Translator: Umeaboy \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telefoner" - -msgid "Voice" -msgstr "Röst" diff --git a/package/luci/applications/luci-app-voice-core/po/templates/voice_core.pot b/package/luci/applications/luci-app-voice-core/po/templates/voice_core.pot deleted file mode 100644 index 64c93ebac6..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/templates/voice_core.pot +++ /dev/null @@ -1,8 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Phones" -msgstr "" - -msgid "Voice" -msgstr "" diff --git a/package/luci/applications/luci-app-voice-core/po/tr/voice_core.po b/package/luci/applications/luci-app-voice-core/po/tr/voice_core.po deleted file mode 100644 index 642538e201..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/tr/voice_core.po +++ /dev/null @@ -1,18 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-10-11 22:25+0200\n" -"Last-Translator: vincenzo \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Telefonlar" - -msgid "Voice" -msgstr "Ses" diff --git a/package/luci/applications/luci-app-voice-core/po/uk/voice_core.po b/package/luci/applications/luci-app-voice-core/po/uk/voice_core.po deleted file mode 100644 index 4886d7298a..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/uk/voice_core.po +++ /dev/null @@ -1,22 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-12-29 12:56+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Phones" -msgstr "Телефони" - -msgid "Voice" -msgstr "Голос" - -#~ msgid "l_v_adminphones" -#~ msgstr "l_v_adminphones" diff --git a/package/luci/applications/luci-app-voice-core/po/vi/voice_core.po b/package/luci/applications/luci-app-voice-core/po/vi/voice_core.po deleted file mode 100644 index 3e45434c69..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/vi/voice_core.po +++ /dev/null @@ -1,15 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Phones" -msgstr "" - -msgid "Voice" -msgstr "" diff --git a/package/luci/applications/luci-app-voice-core/po/zh-cn/voice_core.po b/package/luci/applications/luci-app-voice-core/po/zh-cn/voice_core.po deleted file mode 100644 index 09788894ed..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/zh-cn/voice_core.po +++ /dev/null @@ -1,18 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-08 13:41+0200\n" -"Last-Translator: Tanyingyu \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" - -msgid "Phones" -msgstr "话机" - -msgid "Voice" -msgstr "语音" diff --git a/package/luci/applications/luci-app-voice-core/po/zh-tw/voice_core.po b/package/luci/applications/luci-app-voice-core/po/zh-tw/voice_core.po deleted file mode 100644 index e1bbf7a9d6..0000000000 --- a/package/luci/applications/luci-app-voice-core/po/zh-tw/voice_core.po +++ /dev/null @@ -1,18 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 10:41+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Phones" -msgstr "電話" - -msgid "Voice" -msgstr "語音" diff --git a/package/luci/applications/luci-app-voice-diag/Makefile b/package/luci/applications/luci-app-voice-diag/Makefile deleted file mode 100644 index 2d4791845a..0000000000 --- a/package/luci/applications/luci-app-voice-diag/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Voice Software (Diagnostics) -LUCI_DEPENDS:=+luci-app-diag-devinfo @BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-voice-diag/luasrc/controller/luci_voice/luci_voice_diag.lua b/package/luci/applications/luci-app-voice-diag/luasrc/controller/luci_voice/luci_voice_diag.lua deleted file mode 100644 index 16a79d9a35..0000000000 --- a/package/luci/applications/luci-app-voice-diag/luasrc/controller/luci_voice/luci_voice_diag.lua +++ /dev/null @@ -1,12 +0,0 @@ --- Copyright 2009 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.luci_voice.luci_voice_diag", package.seeall) - -function index() - local e - - e = entry({"admin", "voice", "diag"}, template("luci_voice/diag_index"), _("Diagnostics"), 90) - e.index = true - e.dependent = true -end diff --git a/package/luci/applications/luci-app-voice-diag/luasrc/view/luci_voice/diag_index.htm b/package/luci/applications/luci-app-voice-diag/luasrc/view/luci_voice/diag_index.htm deleted file mode 100644 index e324fabd41..0000000000 --- a/package/luci/applications/luci-app-voice-diag/luasrc/view/luci_voice/diag_index.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# - Copyright 2009 Daniel Dickinson - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:Diagnostics%>

    -

    <%:Under this menu are options that allow you to configure and perform tests on the voice operations of your system. These are known as diagnostics.%>

    -

    <%:The diagnostics available on your device depend on the modules that you have installed.%>

    -<%+footer%> diff --git a/package/luci/applications/luci-app-voice-diag/po/ca/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/ca/voice_diag.po deleted file mode 100644 index 0396100a3c..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/ca/voice_diag.po +++ /dev/null @@ -1,30 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-29 02:00+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Diagnostics" -msgstr "Diagnòstics" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Els diagnòstics disponibles en el vostre dispositiu depenen dels mòduls que " -"teniu instal·lats." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"En aquest menú estan opcions que us permeten configurar i realitzar proves " -"en les operacions de veu del vostre sistema. Aquestes es coneixen com " -"diagnòstics." diff --git a/package/luci/applications/luci-app-voice-diag/po/cs/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/cs/voice_diag.po deleted file mode 100644 index 4939d20888..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/cs/voice_diag.po +++ /dev/null @@ -1,29 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Diagnostics" -msgstr "Diagnostika" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Diagnostiky, dostupné na vašem zařízení, závisí na modulech, které máte " -"nainstalovány." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Pod tímto menu se nachází možnosti, které vám umožní nastavovat a provádět " -"testy hlasových operací vašeho systému. Tyto jsou známy pod názvem " -"diagnostika." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "Diagnostika" diff --git a/package/luci/applications/luci-app-voice-diag/po/de/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/de/voice_diag.po deleted file mode 100644 index f60dc08d01..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/de/voice_diag.po +++ /dev/null @@ -1,29 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-09-08 15:21+0200\n" -"Last-Translator: Manuel \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Diagnostics" -msgstr "Diagnose" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Welche Diagnosetools auf diesem System verfügbar sind hängt davon ab, welche " -"Module installiert sind." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Unter diesem Menüpunkt können Diagnosetools für sprachbezogene Dienste " -"konfiguriert und ausgeführt werden." diff --git a/package/luci/applications/luci-app-voice-diag/po/el/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/el/voice_diag.po deleted file mode 100644 index 4ff4f86605..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/el/voice_diag.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-03-18 17:15+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: none\n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Diagnostics" -msgstr "Διαγνωστικά" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Τα διαγνωστικά που είναι διαθέσιμα για την συσκευή σας, εξαρτώνται από τα " -"αρθρώματα που έχετε εγκατεστημένα." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Κάτω από αυτό το μενού βρίσκονται επιλογές που σας επιτρέπουν να " -"παραμετροποιήσετε και να πραγματοποιήσετε δοκιμές στις φωνητικές λειτουργίες " -"του συστήματός σας. Είναι γνωστές ως διαγνωστικά." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "l_v_d_admindiag" diff --git a/package/luci/applications/luci-app-voice-diag/po/en/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/en/voice_diag.po deleted file mode 100644 index 12bb4592d8..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/en/voice_diag.po +++ /dev/null @@ -1,34 +0,0 @@ -# Voice Diagnostics. -# Copyright (C) 2009 Daniel Dickinson -# Daniel Dickinson , 2009. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2009-07-16 22:26-0400\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Diagnostics" -msgstr "Diagnostics" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"The diagnostics available on your device depend on the modules that you have " -"installed." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "Diagnostics" diff --git a/package/luci/applications/luci-app-voice-diag/po/es/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/es/voice_diag.po deleted file mode 100644 index f2f4da27ae..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/es/voice_diag.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-16 00:58+0200\n" -"Last-Translator: Jose \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Diagnostics" -msgstr "Diagnósticos" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Los tipos de diagnósticos disponibles en el dispositivo dependen de los " -"módulos que ha instalado." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"En este menú hay opciones que permite realizar pruebas de configuración y " -"funcionamiento de las operaciones de voz en su sistema. Estas opciones se " -"conocen como diagósticos." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "l_v_d_admindiag" diff --git a/package/luci/applications/luci-app-voice-diag/po/fr/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/fr/voice_diag.po deleted file mode 100644 index c550f06295..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/fr/voice_diag.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-01-15 07:08+0200\n" -"Last-Translator: desillu \n" -"Language-Team: none\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Diagnostics" -msgstr "Diagnostics" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Les diagnostics disponibles pour votre périphérique dépendent des modules " -"que vous avez installé." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Ce menu contient des options vous permettant de configurer et lancer des " -"tests sur les fonctions vocales de votre système. Ils sont nommés " -"diagnostics." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "l_v_d_admindiag" diff --git a/package/luci/applications/luci-app-voice-diag/po/he/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/he/voice_diag.po deleted file mode 100644 index 3cd1c9f0e3..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/he/voice_diag.po +++ /dev/null @@ -1,22 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" diff --git a/package/luci/applications/luci-app-voice-diag/po/hu/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/hu/voice_diag.po deleted file mode 100644 index 79d237985b..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/hu/voice_diag.po +++ /dev/null @@ -1,30 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Diagnostics" -msgstr "Diagnosztika" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Az eszközön elérhető diagnosztikai lehetőségek a telepített összetevőktől " -"függenek." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Ez alatt a menüpont alatt olyan lehetőségek vannak, amelyek lehetővé teszik, " -"hogy beállítsa és tesztelje az eszköz hangrendszerének a működését. Ezek " -"diagnosztikaként ismertek." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "l_v_d_admindiag" diff --git a/package/luci/applications/luci-app-voice-diag/po/it/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/it/voice_diag.po deleted file mode 100644 index 620aedf561..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/it/voice_diag.po +++ /dev/null @@ -1,30 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-03 14:13+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Diagnostics" -msgstr "Diagnostiche" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Le funzioni di diagnostica disponibili sul dispositivo dipendono i moduli " -"che sono stati installati." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"In questo menu ci sono delle opzioni che consentono di configurare ed " -"eseguire test sulle operazioni vocali del sistema. Questi sono noti come " -"diagnostica." diff --git a/package/luci/applications/luci-app-voice-diag/po/ja/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/ja/voice_diag.po deleted file mode 100644 index 715f4118c6..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/ja/voice_diag.po +++ /dev/null @@ -1,22 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" diff --git a/package/luci/applications/luci-app-voice-diag/po/ms/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/ms/voice_diag.po deleted file mode 100644 index bf65c1459e..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/ms/voice_diag.po +++ /dev/null @@ -1,21 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" diff --git a/package/luci/applications/luci-app-voice-diag/po/no/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/no/voice_diag.po deleted file mode 100644 index de7aaf2f28..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/no/voice_diag.po +++ /dev/null @@ -1,25 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Diagnostics" -msgstr "Diagnostikk" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Diagnostikk tilgjengelig på denne enheten avhenger av hvilken moduler som er " -"installert." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Under denne meny finner du instillinger som gjør det mulig å konfigurere og " -"utføre 'Voice' operasjoner på systemet ditt. Dette er kjent som diagnostikk." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "Administrasjon Diagnostikk" diff --git a/package/luci/applications/luci-app-voice-diag/po/pl/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/pl/voice_diag.po deleted file mode 100644 index cb19e22c85..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/pl/voice_diag.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-09-20 12:16+0200\n" -"Last-Translator: Michał \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Diagnostics" -msgstr "Diagnostyka" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Diagnostyka dostępna na Twoim urządzeniu zależna jest od zainstalowanych " -"modułów." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"To menu zawiera opcje pozwalające na konfiguracje i testowanie operacji " -"głosowych w Twoim systemie. Opcje te nazwamy Diagnostyką." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "l_v_d_admindiag" diff --git a/package/luci/applications/luci-app-voice-diag/po/pt-br/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/pt-br/voice_diag.po deleted file mode 100644 index c5d426dfdf..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/pt-br/voice_diag.po +++ /dev/null @@ -1,32 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-11 20:31+0200\n" -"Last-Translator: Luiz Angelo \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Diagnostics" -msgstr "Diagnósticos" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Os diagnósticos disponíveis em seu dispositivo dependem dos módulos que você " -"instalou." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Neste menu existem opções que permite a configuração e execução de testes " -"nas operações de voz em seu sistema. Estas são conhecidas como diagósticos." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "l_v_d_admindiag" diff --git a/package/luci/applications/luci-app-voice-diag/po/pt/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/pt/voice_diag.po deleted file mode 100644 index 5162c84369..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/pt/voice_diag.po +++ /dev/null @@ -1,29 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-06-01 00:00+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Diagnostics" -msgstr "Diagnósticos" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Os diagnósticos disponiveis no dispositivo dependem dos módulos que tem " -"instalados." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Neste menu há opções que lhe permitem configurar e executar testes nas " -"operações de voz do seu sistema. Estes são conhecidos como diagnósticos." diff --git a/package/luci/applications/luci-app-voice-diag/po/ro/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/ro/voice_diag.po deleted file mode 100644 index e6ee682063..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/ro/voice_diag.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2011-10-07 16:50+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Diagnostics" -msgstr "Diagnosticuri" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Diagnosticurile disponibile pe dispozitivul tau depind de modulele instalate." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"In acest menu sunt optiuni care-ti permit sa configurezi si sa testezi " -"diferite operatiuni de voce pe sistemul tau. Acestea sunt denumite " -"diagnostice." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "l_v_d_admindiag" diff --git a/package/luci/applications/luci-app-voice-diag/po/ru/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/ru/voice_diag.po deleted file mode 100644 index 5c98de0157..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/ru/voice_diag.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: voice_diag\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2012-08-15 11:22+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Diagnostics" -msgstr "Диагностика" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "Доступные виды диагностики зависят от установленных модулей." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"В данном меню содержатся опции, которые позволяют вам протестировать " -"голосовые службы вашей системы. Это известно как \"диагностика\"." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "l_v_d_admindiag" diff --git a/package/luci/applications/luci-app-voice-diag/po/sk/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/sk/voice_diag.po deleted file mode 100644 index 874e11fc51..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/sk/voice_diag.po +++ /dev/null @@ -1,22 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" diff --git a/package/luci/applications/luci-app-voice-diag/po/sv/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/sv/voice_diag.po deleted file mode 100644 index 4f99757ce9..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/sv/voice_diag.po +++ /dev/null @@ -1,27 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Diagnostics" -msgstr "Diagnostik" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Den tillgängliga diagnostiken i din enhet är beroende av modulerna som du " -"har installerat." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Under den här menyn så finns det alternativ som gör att du kan ställa in och " -"utföra tester på röstverksamheten i ditt system. Dessa kallas diagnostik." diff --git a/package/luci/applications/luci-app-voice-diag/po/templates/voice_diag.pot b/package/luci/applications/luci-app-voice-diag/po/templates/voice_diag.pot deleted file mode 100644 index ba28b45307..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/templates/voice_diag.pot +++ /dev/null @@ -1,15 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" diff --git a/package/luci/applications/luci-app-voice-diag/po/tr/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/tr/voice_diag.po deleted file mode 100644 index 715f4118c6..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/tr/voice_diag.po +++ /dev/null @@ -1,22 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" diff --git a/package/luci/applications/luci-app-voice-diag/po/uk/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/uk/voice_diag.po deleted file mode 100644 index 60c55ba6ea..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/uk/voice_diag.po +++ /dev/null @@ -1,33 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-28 22:05+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Diagnostics" -msgstr "Діагностика" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" -"Доступність засобів діагностики визначається модулями, які ви встановили." - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" -"Це меню містить опції, які дають вам змогу сконфігурувати й виконати " -"тестування голосових функцій вашої системи. Інша їх назва - засоби " -"діагностики." - -#~ msgid "l_v_d_admindiag" -#~ msgstr "l_v_d_admindiag" diff --git a/package/luci/applications/luci-app-voice-diag/po/vi/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/vi/voice_diag.po deleted file mode 100644 index 715f4118c6..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/vi/voice_diag.po +++ /dev/null @@ -1,22 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Diagnostics" -msgstr "" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "" - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "" diff --git a/package/luci/applications/luci-app-voice-diag/po/zh-cn/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/zh-cn/voice_diag.po deleted file mode 100644 index 4bad894e37..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/zh-cn/voice_diag.po +++ /dev/null @@ -1,25 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-08 13:50+0200\n" -"Last-Translator: Tanyingyu \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" - -msgid "Diagnostics" -msgstr "检测" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "检测您已在设备上安装的模块。" - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "菜单下的选项,允许您配置和执行语音相关的测试。这些动作称为检测。" diff --git a/package/luci/applications/luci-app-voice-diag/po/zh-tw/voice_diag.po b/package/luci/applications/luci-app-voice-diag/po/zh-tw/voice_diag.po deleted file mode 100644 index 7926f797b6..0000000000 --- a/package/luci/applications/luci-app-voice-diag/po/zh-tw/voice_diag.po +++ /dev/null @@ -1,25 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 10:45+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Diagnostics" -msgstr "診斷" - -msgid "" -"The diagnostics available on your device depend on the modules that you have " -"installed." -msgstr "能否診斷您的設備端看您已安裝的模組" - -msgid "" -"Under this menu are options that allow you to configure and perform tests on " -"the voice operations of your system. These are known as diagnostics." -msgstr "選單下有選項讓您能夠設定並執行測試您系統上的語音操作. 這些都是已知的診斷方法" diff --git a/package/luci/applications/luci-app-vpnbypass/Makefile b/package/luci/applications/luci-app-vpnbypass/Makefile deleted file mode 100644 index 0ca74ae38a..0000000000 --- a/package/luci/applications/luci-app-vpnbypass/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2017 Stan Grishin (stangri@melmac.net) -# This is free software, licensed under the GNU General Public License v3. - -include $(TOPDIR)/rules.mk - -PKG_LICENSE:=GPL-3.0+ -PKG_MAINTAINER:=Stan Grishin - -LUCI_TITLE:=VPN Bypass Web UI -LUCI_DEPENDS:=+vpnbypass -LUCI_PKGARCH:=all -PKG_RELEASE:=1 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua b/package/luci/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua deleted file mode 100644 index ed6f4f4da4..0000000000 --- a/package/luci/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua +++ /dev/null @@ -1,7 +0,0 @@ -module("luci.controller.vpnbypass", package.seeall) -function index() - if not nixio.fs.access("/etc/config/vpnbypass") then - return - end - entry({"admin", "services", "vpnbypass"}, cbi("vpnbypass"), _("VPN Bypass")) -end diff --git a/package/luci/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua b/package/luci/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua deleted file mode 100644 index b35a8e4e02..0000000000 --- a/package/luci/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua +++ /dev/null @@ -1,61 +0,0 @@ -readmeURL = "https://github.com/openwrt/packages/blob/master/net/vpnbypass/files/README.md" - -m = Map("vpnbypass", translate("VPN Bypass Settings")) -s = m:section(NamedSection, "config", "vpnbypass") - --- General options -e = s:option(Flag, "enabled", translate("Enable/start service")) -e.rmempty = false - -function e.cfgvalue(self, section) - return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("vpnbypass") and self.enabled or self.disabled -end - -function e.write(self, section, value) - if value == "1" then - luci.sys.call("/etc/init.d/vpnbypass enable >/dev/null") - luci.sys.call("/etc/init.d/vpnbypass start >/dev/null") - else - luci.sys.call("/etc/init.d/vpnbypass stop >/dev/null") - end - return Flag.write(self, section, value) -end - --- Local Ports -p1 = s:option(DynamicList, "localport", translate("Local Ports to Bypass"), translate("Local ports to trigger VPN Bypass")) -p1.datatype = "portrange" --- p1.placeholder = "0-65535" -p1.addremove = false -p1.optional = false - --- Remote Ports -p2 = s:option(DynamicList, "remoteport", translate("Remote Ports to Bypass"), translate("Remote ports to trigger VPN Bypass")) -p2.datatype = "portrange" --- p2.placeholder = "0-65535" -p2.addremove = false -p2.optional = false - --- Local Subnets -r1 = s:option(DynamicList, "localsubnet", translate("Local IP Addresses to Bypass"), translate("Local IP addresses or subnets with direct internet access (outside of the VPN tunnel)")) -r1.datatype = "ip4addr" --- r1.placeholder = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr") .. "/" .. uci.cursor():get("network", "lan", "netmask")) -r1.addremove = false -r1.optional = false - --- Remote Subnets -r2 = s:option(DynamicList, "remotesubnet", translate("Remote IP Addresses to Bypass"), translate("Remote IP addresses or subnets which will be accessed directly (outside of the VPN tunnel)")) -r2.datatype = "ip4addr" --- r2.placeholder = "0.0.0.0/0" -r2.addremove = false -r2.optional = false - --- Domains -d = Map("dhcp") -s4 = d:section(TypedSection, "dnsmasq") -s4.anonymous = true -di = s4:option(DynamicList, "ipset", translate("Domains to Bypass"), - translate("Domains to be accessed directly (outside of the VPN tunnel), see ") - .. [[]] - .. translate("README") .. [[]] .. translate(" for syntax")) - -return m, d diff --git a/package/luci/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po b/package/luci/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po deleted file mode 100644 index 9f3fa2a679..0000000000 --- a/package/luci/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po +++ /dev/null @@ -1,90 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "Domains to Bypass" -msgstr "Domínios para evitar a VPN" - -msgid "Domains to be accessed directly (outside of the VPN tunnel), see" -msgstr "" - -msgid "Enable/start service" -msgstr "" - -msgid "Local IP Addresses to Bypass" -msgstr "" - -msgid "" -"Local IP addresses or subnets with direct internet access (outside of the " -"VPN tunnel)" -msgstr "" - -msgid "Local Ports to Bypass" -msgstr "Portas locais para evitar a VPN" - -msgid "Local ports to trigger VPN Bypass" -msgstr "Portas locais para disparar o VPN Bypass" - -msgid "README" -msgstr "" - -msgid "Remote IP Addresses to Bypass" -msgstr "" - -msgid "" -"Remote IP addresses or subnets which will be accessed directly (outside of " -"the VPN tunnel)" -msgstr "" - -msgid "Remote Ports to Bypass" -msgstr "Portas remotas para evitar a VPN" - -msgid "Remote ports to trigger VPN Bypass" -msgstr "Portas remotas para disparar o VPN Bypass" - -msgid "VPN Bypass" -msgstr "VPN Bypass" - -msgid "VPN Bypass Settings" -msgstr "Configurações do VPN Bypass" - -msgid "for syntax" -msgstr "" - -#~ msgid "Enable VPN Bypass" -#~ msgstr "Habilitar o VPN Bypass" - -#~ msgid "Configuration of VPN Bypass Settings" -#~ msgstr "Configurações do VPN Bypass" - -#~ msgid "Domains which will be accessed directly (outside of the VPN tunnel)" -#~ msgstr "Domínios que serão acessados diretamente (fora do túnel VPN)" - -#~ msgid "Local IP Subnets to Bypass" -#~ msgstr "Subredes IP locais para evitar a VPN" - -#~ msgid "" -#~ "Local IP ranges with direct internet access (outside of the VPN tunnel)" -#~ msgstr "" -#~ "Faixa de endereços IP locais que terão acesso internet direto (fora do " -#~ "túnel VPN)" - -#~ msgid "Remote IP Subnets to Bypass" -#~ msgstr "Subredes IP remotas para evitar a VPN" - -#~ msgid "" -#~ "Remote IP ranges which will be accessed directly (outside of the VPN " -#~ "tunnel)" -#~ msgstr "" -#~ "Faixa de endereços IP remotos que serão acessados diretamente (fora do " -#~ "túnel VPN)" diff --git a/package/luci/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot b/package/luci/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot deleted file mode 100644 index fd92b5e8a8..0000000000 --- a/package/luci/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot +++ /dev/null @@ -1,51 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Domains to Bypass" -msgstr "" - -msgid "Domains to be accessed directly (outside of the VPN tunnel), see" -msgstr "" - -msgid "Enable/start service" -msgstr "" - -msgid "Local IP Addresses to Bypass" -msgstr "" - -msgid "" -"Local IP addresses or subnets with direct internet access (outside of the " -"VPN tunnel)" -msgstr "" - -msgid "Local Ports to Bypass" -msgstr "" - -msgid "Local ports to trigger VPN Bypass" -msgstr "" - -msgid "README" -msgstr "" - -msgid "Remote IP Addresses to Bypass" -msgstr "" - -msgid "" -"Remote IP addresses or subnets which will be accessed directly (outside of " -"the VPN tunnel)" -msgstr "" - -msgid "Remote Ports to Bypass" -msgstr "" - -msgid "Remote ports to trigger VPN Bypass" -msgstr "" - -msgid "VPN Bypass" -msgstr "" - -msgid "VPN Bypass Settings" -msgstr "" - -msgid "for syntax" -msgstr "" diff --git a/package/luci/applications/luci-app-vpnbypass/po/zh-cn/vpnbypass.po b/package/luci/applications/luci-app-vpnbypass/po/zh-cn/vpnbypass.po deleted file mode 100644 index a1539171fc..0000000000 --- a/package/luci/applications/luci-app-vpnbypass/po/zh-cn/vpnbypass.po +++ /dev/null @@ -1,61 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2017-10-29 15:30+0800\n" -"X-Generator: Gtranslator 2.91.7\n" - -msgid "Domains to Bypass" -msgstr "要绕过的域" - -msgid "Domains to be accessed directly (outside of the VPN tunnel), see" -msgstr "要直接访问的域(不使用 VPN 隧道),请参见" - -msgid "Enable/start service" -msgstr "启用/启动服务" - -msgid "Local IP Addresses to Bypass" -msgstr "要绕过的本地 IP 地址" - -msgid "" -"Local IP addresses or subnets with direct internet access (outside of the " -"VPN tunnel)" -msgstr "直接访问的本地 IP 地址或子网(不使用 VPN 隧道)" - -msgid "Local Ports to Bypass" -msgstr "要绕过的本地端口" - -msgid "Local ports to trigger VPN Bypass" -msgstr "触发 VPN 绕过的本地端口" - -msgid "README" -msgstr "README" - -msgid "Remote IP Addresses to Bypass" -msgstr "要绕过的远程 IP 地址" - -msgid "" -"Remote IP addresses or subnets which will be accessed directly (outside of " -"the VPN tunnel)" -msgstr "将直接访问的远程 IP 地址或子网(不使用 VPN 隧道)" - -msgid "Remote Ports to Bypass" -msgstr "要绕过的远程端口" - -msgid "Remote ports to trigger VPN Bypass" -msgstr "触发 VPN 绕过的远程端口" - -msgid "VPN Bypass" -msgstr "VPN 绕过" - -msgid "VPN Bypass Settings" -msgstr "VPN 绕过设置" - -msgid "for syntax" -msgstr "对于语法" diff --git a/package/luci/applications/luci-app-vpnbypass/po/zh-tw/vpnbypass.po b/package/luci/applications/luci-app-vpnbypass/po/zh-tw/vpnbypass.po deleted file mode 100644 index 90ba85f7ce..0000000000 --- a/package/luci/applications/luci-app-vpnbypass/po/zh-tw/vpnbypass.po +++ /dev/null @@ -1,61 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"PO-Revision-Date: 2017-10-29 15:30+0800\n" -"X-Generator: Gtranslator 2.91.7\n" - -msgid "Domains to Bypass" -msgstr "要繞過的域" - -msgid "Domains to be accessed directly (outside of the VPN tunnel), see" -msgstr "要直接訪問的域(不使用 VPN 隧道),請參見" - -msgid "Enable/start service" -msgstr "啟用/啟動服務" - -msgid "Local IP Addresses to Bypass" -msgstr "要繞過的本地 IP 位址" - -msgid "" -"Local IP addresses or subnets with direct internet access (outside of the " -"VPN tunnel)" -msgstr "直接訪問的本地 IP 位址或子網(不使用 VPN 隧道)" - -msgid "Local Ports to Bypass" -msgstr "要繞過的本地埠" - -msgid "Local ports to trigger VPN Bypass" -msgstr "觸發 VPN 繞過的本地埠" - -msgid "README" -msgstr "README" - -msgid "Remote IP Addresses to Bypass" -msgstr "要繞過的遠端 IP 位址" - -msgid "" -"Remote IP addresses or subnets which will be accessed directly (outside of " -"the VPN tunnel)" -msgstr "將直接訪問的遠端 IP 位址或子網(不使用 VPN 隧道)" - -msgid "Remote Ports to Bypass" -msgstr "要繞過的遠端埠" - -msgid "Remote ports to trigger VPN Bypass" -msgstr "觸發 VPN 繞過的遠端埠" - -msgid "VPN Bypass" -msgstr "VPN 繞過" - -msgid "VPN Bypass Settings" -msgstr "VPN 繞過設定" - -msgid "for syntax" -msgstr "對於語法" diff --git a/package/luci/applications/luci-app-vpnbypass/root/etc/uci-defaults/40_luci-vpnbypass b/package/luci/applications/luci-app-vpnbypass/root/etc/uci-defaults/40_luci-vpnbypass deleted file mode 100644 index 9455701a09..0000000000 --- a/package/luci/applications/luci-app-vpnbypass/root/etc/uci-defaults/40_luci-vpnbypass +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -uci -q batch <<-EOF >/dev/null - delete ucitrack.@vpnbypass[-1] - add ucitrack vpnbypass - set ucitrack.@vpnbypass[-1].init=vpnbypass - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 - diff --git a/package/luci/applications/luci-app-watchcat/Makefile b/package/luci/applications/luci-app-watchcat/Makefile deleted file mode 100644 index 7ad86c84c0..0000000000 --- a/package/luci/applications/luci-app-watchcat/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Watchcat -LUCI_DEPENDS:=+watchcat - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-watchcat/luasrc/controller/watchcat.lua b/package/luci/applications/luci-app-watchcat/luasrc/controller/watchcat.lua deleted file mode 100644 index 27d5b74b20..0000000000 --- a/package/luci/applications/luci-app-watchcat/luasrc/controller/watchcat.lua +++ /dev/null @@ -1,11 +0,0 @@ --- Copyright 2012 Christian Gagneraud --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.watchcat", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/system") then - return - end - entry({"admin", "services", "watchcat"}, cbi("watchcat/watchcat"), _("Watchcat"), 90) -end diff --git a/package/luci/applications/luci-app-watchcat/luasrc/model/cbi/watchcat/watchcat.lua b/package/luci/applications/luci-app-watchcat/luasrc/model/cbi/watchcat/watchcat.lua deleted file mode 100644 index f64370bfe3..0000000000 --- a/package/luci/applications/luci-app-watchcat/luasrc/model/cbi/watchcat/watchcat.lua +++ /dev/null @@ -1,53 +0,0 @@ --- Copyright 2012 Christian Gagneraud --- Licensed to the public under the Apache License 2.0. - -m = Map("system", - translate("Watchcat"), - translate("Watchcat allows configuring a periodic reboot when the " .. - "Internet connection has been lost for a certain period of time." - )) - -s = m:section(TypedSection, "watchcat") -s.anonymous = true -s.addremove = true - -mode = s:option(ListValue, "mode", - translate("Operating mode")) -mode.default = "allways" -mode:value("ping", "Reboot on internet connection lost") -mode:value("allways", "Periodic reboot") - -forcedelay = s:option(Value, "forcedelay", - translate("Forced reboot delay"), - translate("When rebooting the system, the watchcat will trigger a soft reboot. " .. - "Entering a non zero value here will trigger a delayed hard reboot " .. - "if the soft reboot fails. Enter a number of seconds to enable, " .. - "use 0 to disable")) -forcedelay.datatype = "uinteger" -forcedelay.default = "0" - -period = s:option(Value, "period", - translate("Period"), - translate("In periodic mode, it defines the reboot period. " .. - "In internet mode, it defines the longest period of " .. - "time without internet access before a reboot is engaged." .. - "Default unit is seconds, you can use the " .. - "suffix 'm' for minutes, 'h' for hours or 'd' " .. - "for days")) - -pinghost = s:option(Value, "pinghosts", - translate("Ping host"), - translate("Host address to ping")) -pinghost.datatype = "host(1)" -pinghost.default = "8.8.8.8" -pinghost:depends({mode="ping"}) - -pingperiod = s:option(Value, "pingperiod", - translate("Ping period"), - translate("How often to check internet connection. " .. - "Default unit is seconds, you can you use the " .. - "suffix 'm' for minutes, 'h' for hours or 'd' " .. - "for days")) -pingperiod:depends({mode="ping"}) - -return m diff --git a/package/luci/applications/luci-app-watchcat/po/ca/watchcat.po b/package/luci/applications/luci-app-watchcat/po/ca/watchcat.po deleted file mode 100644 index 36e6405451..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/ca/watchcat.po +++ /dev/null @@ -1,71 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-07-01 05:59+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Forced reboot delay" -msgstr "Retard de reinici forçat" - -msgid "Host address to ping" -msgstr "Adreça de host per al ping" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Quan sovint que es comprova la connexió a Internet. La unitat per defecte es " -"el segon, podeu utilitzar el sufix 'm' per minuts, 'h' per hores o 'd' per " -"dies." - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"En mode periòdic, defineix el període de reinici. En mode de Internet, " -"defineix el període més llarg sense accés al Internet abans que un reinici " -"es comença. La unitat per defecte es el segon, podeu podeu utilitzar el " -"sufix 'm' per minuts, 'h' per hores o 'd' per dies." - -msgid "Operating mode" -msgstr "Mode d'operació" - -msgid "Period" -msgstr "Període" - -msgid "Ping host" -msgstr "Host de ping" - -msgid "Ping period" -msgstr "Període de ping" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"El Watchcat permet la configuració d'un reinici periòdic o un reinici quan " -"la connexió d'Internet ha estat perdut fa un cert període de temps." - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"Al reiniciar el sistema, el Watchcat causarà un reinici suau. Introduïu un " -"valor diferent de zero causarà un reinici dur retardat si el reinici suau " -"falla. Introduïu un nombre de segons per a habilitar, utilitzeu 0 per a " -"inhabilitar." diff --git a/package/luci/applications/luci-app-watchcat/po/cs/watchcat.po b/package/luci/applications/luci-app-watchcat/po/cs/watchcat.po deleted file mode 100644 index 1bfd435b7f..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/cs/watchcat.po +++ /dev/null @@ -1,72 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-24 15:54+0200\n" -"Last-Translator: awm1 \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Forced reboot delay" -msgstr "Prodleva nuceného restartu" - -msgid "Host address to ping" -msgstr "Adresa zařízení, vůči kterému bude testování připojení (ping)" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Perioda testování připojení; výchozí časovou jednotkou jsou sekundy, avšak " -"použitím přípony \"m\" lze určit minuty, pomocí \"h\" hodiny a \"d\" dny" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"Pokud je nastaven periodický režim práce, tak tato hodnota vyjadřuje " -"interval opakování restartu. V 'internetovém' režimu práce hodnota vyjadřuje " -"nejdelší možnou dobu, po kterou smí být zařízení bez připojení k internetu, " -"resp. nastavenému testovacímu zařízení - po jejím uplynutí je proveden " -"automaticky reset. Výchozí jednotkou jsou sekundy, pomocí přípony \"m\" lze " -"nastavit minuty, pomocí \"h\" hodiny a prostřednictvím \"d\" dny" - -msgid "Operating mode" -msgstr "Pracovní režim" - -msgid "Period" -msgstr "Perioda" - -msgid "Ping host" -msgstr "Cílové zařízení příkazu ping" - -msgid "Ping period" -msgstr "Interval opakování testu ping" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Nástroj Watchcat umožňuje nastavit periodický interval restartu zařízení a/" -"nebo provést restart i tehdy, když dojde ke ztrátě připojení k internetu/" -"danému zařízení po stanovenou dobu" - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"Pokud je nutno restartovat systém, provede Watchcat \"měkký\" restart " -"(hodnota 0); zadáním nenulové hodnoty nastavíte interval (v sekundách), za " -"který program provede \"tvrdý\" restart, pokud \"měkký\" selže." diff --git a/package/luci/applications/luci-app-watchcat/po/de/watchcat.po b/package/luci/applications/luci-app-watchcat/po/de/watchcat.po deleted file mode 100644 index 1bbc6d5263..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/de/watchcat.po +++ /dev/null @@ -1,72 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-28 22:40+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Forced reboot delay" -msgstr "Erzwungenen Neustart verzögern um" - -msgid "Host address to ping" -msgstr "Anzupingende Host-Adresse" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Wie oft soll die Internetverbindung überprüft werden. Standart-Einheit in " -"Sekunden, kann aber durch angehängtes 'm' in Minuten, 'h' in Stunden und 'd' " -"in Tage geändert werden." - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"Im periodischen Modus gibt er die Zeitdauer für einen Neustart an. Im " -"Internet-Modus gibt er die längste Zeitdauer ohne Internetzugang an, nach " -"der ein Neustart durchgeführt wird. Voreingestellte Einheit ist Sekunden, " -"Sie können aber die Endungen 'm' für Minuten, 'h' für Stunden und 'd' für " -"Tage benutzen." - -msgid "Operating mode" -msgstr "Betriebsart" - -msgid "Period" -msgstr "Periode" - -msgid "Ping host" -msgstr "Ping-Host" - -msgid "Ping period" -msgstr "Ping-Zeitdauer" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcat erlaubt die Einstellung eines automatischen Neustarts, wenn die " -"Internetverbindung eine bestimmte Zeitlang ausgefallen ist." - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"Bei einem Neustart des Systems wird Watchcat einen Warmstart auslösen, wird " -"hier ein Wert ungleich Null eingegeben, wird ein Kaltstart ausgelöst, sollte " -"der Warmstart fehlschlagen. Geben Sie eine Zahl in Sekunden zur Aktivierung " -"an, 0 schaltet diese Funktion aus." diff --git a/package/luci/applications/luci-app-watchcat/po/el/watchcat.po b/package/luci/applications/luci-app-watchcat/po/el/watchcat.po deleted file mode 100644 index 4aa0c6b639..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/el/watchcat.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/en/watchcat.po b/package/luci/applications/luci-app-watchcat/po/en/watchcat.po deleted file mode 100644 index 0f9099c5a2..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/en/watchcat.po +++ /dev/null @@ -1,66 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Forced reboot delay" -msgstr "Forced reboot delay" - -msgid "Host address to ping" -msgstr "Host address to ping" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" - -msgid "Operating mode" -msgstr "Operating mode" - -msgid "Period" -msgstr "Period" - -msgid "Ping host" -msgstr "Ping host" - -msgid "Ping period" -msgstr "Ping period" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcat allows to configure a periodic reboot and/or when internet " -"connection has been lost for a certain period of time." - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"When rebooting the system the watchcat will trigger a soft reboot, Entering " -"a non zero value here, will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" diff --git a/package/luci/applications/luci-app-watchcat/po/es/watchcat.po b/package/luci/applications/luci-app-watchcat/po/es/watchcat.po deleted file mode 100644 index c1f58fe3cb..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/es/watchcat.po +++ /dev/null @@ -1,68 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-08-23 23:07+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Forced reboot delay" -msgstr "Espera para forzar reinicio" - -msgid "Host address to ping" -msgstr "Dirección de máquina a la que hacer ping" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Cada cuánto comprobar la conexión a internet. Por defecto son segundos, pero " -"puede añadir 'm' para minutos, 'h' para horas o 'd' para días" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"En modo periódico define el período de rearranque. En modo internet define " -"el mayor período de tiempo sin acceso a internet antes de provocar un " -"reinicio. Por defecto son segundos, pero puede añadir 'm' para minutos, 'h' " -"para horas o 'd' para días" - -msgid "Operating mode" -msgstr "Modo de operar" - -msgid "Period" -msgstr "Período" - -msgid "Ping host" -msgstr "Máquina a la que hacer ping" - -msgid "Ping period" -msgstr "Período de ping" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcat permite configurar un reinicio periódico si la conexión a internet " -"si pierde durante un cierto tiempo." - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"Watchcat provocará por defecto un reinicio suave. Poniendo un valor mayor " -"que cero se provocará un reinicio completo si el anterior ha fallado" diff --git a/package/luci/applications/luci-app-watchcat/po/fr/watchcat.po b/package/luci/applications/luci-app-watchcat/po/fr/watchcat.po deleted file mode 100644 index 23af4693c8..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/fr/watchcat.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/he/watchcat.po b/package/luci/applications/luci-app-watchcat/po/he/watchcat.po deleted file mode 100644 index 4aa0c6b639..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/he/watchcat.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/hu/watchcat.po b/package/luci/applications/luci-app-watchcat/po/hu/watchcat.po deleted file mode 100644 index 253eb77d85..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/hu/watchcat.po +++ /dev/null @@ -1,64 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-01-31 18:09+0200\n" -"Last-Translator: Sixtus \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Forced reboot delay" -msgstr "Kényszerített újraindítás késleltetése" - -#, fuzzy -msgid "Host address to ping" -msgstr "Pingelendő szerver címe" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Internet kapcsolat ellenőrzésének gyakorisága. Alapértelmezett egység a " -"másodperc, percekhez használd az 'm', órákhoz a 'h', vagy napokhoz a 'd' " -"utótagot." - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"Periodikus üzemmódban ez határozza meg az újraindítás gyakoriságát. Internet " -"üzemmódban meghatározza a leghosszabb időt újraindításig, amikor nincs " -"internet kapcsolat. Alapértelmezett egység a másodperc, percekhez használd " -"az 'm', órákhoz a 'h', vagy napokhoz a 'd' utótagot." - -msgid "Operating mode" -msgstr "Üzemmód" - -msgid "Period" -msgstr "Periódus" - -msgid "Ping host" -msgstr "Ping címe" - -msgid "Ping period" -msgstr "Pingelések közti idő" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/it/watchcat.po b/package/luci/applications/luci-app-watchcat/po/it/watchcat.po deleted file mode 100644 index 0acdd180ef..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/it/watchcat.po +++ /dev/null @@ -1,72 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-03 14:12+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Forced reboot delay" -msgstr "Ritardo riavvio forzato" - -msgid "Host address to ping" -msgstr "Indirizzo dell'host da pingare" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Ogni quanto si vuole controllare la connessione. Di default espresso in " -"secondi, puoi usare il sufisso 'm' per i minuti, 'h' per le ore o 'd' per i " -"giorni" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"In modalità periodica, definisce il periodo di riavvio. In modalità " -"internet, definisce il più lungo periodo del tempo senza connessione " -"internet prima di un riavvio è pianificato. L'unità predefinita è in " -"secondi, si può usare il suffisso 'm' per i minuti, 'h' per le ore o 'd' per " -"i giorni." - -msgid "Operating mode" -msgstr "Modalità" - -msgid "Period" -msgstr "Periodo" - -msgid "Ping host" -msgstr "Ping host" - -msgid "Ping period" -msgstr "Periodo del Ping" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcat ti permette di configurare un riavvio periodico quando la " -"connessione a internet è stata persa per un certo periodo." - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"Quando watchcat vuole riavviare il sistema usa un soft reboot, immetendo un " -"valore diverso da 0 in questo campo il proverà un hard reboot se il soft " -"reboot fallisce. Inserire un numero espresso in secondi per abilitare, usa 0 " -"per disabilitare" diff --git a/package/luci/applications/luci-app-watchcat/po/ja/watchcat.po b/package/luci/applications/luci-app-watchcat/po/ja/watchcat.po deleted file mode 100644 index 1ae0eb4cc9..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/ja/watchcat.po +++ /dev/null @@ -1,70 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-10-06 17:09+0200\n" -"Last-Translator: Kentaro \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" - -msgid "Forced reboot delay" -msgstr "強制再起動ディレイ時間" - -msgid "Host address to ping" -msgstr "ping を実行する宛先を設定してください。" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"どの程度の間隔でインターネット接続をチェックするか設定します。標準の単位は秒" -"ですが、'm'を接尾に付けると分、'h'を付けると時、'd'を付けると日数に設定されま" -"す。" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"定期動作モードの場合、再起動する周期を設定します。インターネットモードの場" -"合、インターネット接続が切断状態にある許容する期間を設定します。標準の単位は" -"秒ですが、'm'を接尾に付けると分、'h'を付けると時、'd'を付けると日数に設定され" -"ます。" - -msgid "Operating mode" -msgstr "動作モード" - -msgid "Period" -msgstr "周期" - -msgid "Ping host" -msgstr "Ping 宛先ホスト" - -msgid "Ping period" -msgstr "Ping 間隔" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcatでは、定期的な再起動や、インターネット接続が一定期間切断された際の再" -"起動を行うような設定が可能です。" - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"再起動時にwatchcatはソフトウェアリセットを実行しますが、0以外の値を設定した場" -"合、ソフトウェアリセットが失敗した際に設定された秒数後にハードウェアリセット" -"を行います。0を設定した場合は無効になります。" diff --git a/package/luci/applications/luci-app-watchcat/po/ms/watchcat.po b/package/luci/applications/luci-app-watchcat/po/ms/watchcat.po deleted file mode 100644 index 0da283c79d..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/ms/watchcat.po +++ /dev/null @@ -1,52 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/no/watchcat.po b/package/luci/applications/luci-app-watchcat/po/no/watchcat.po deleted file mode 100644 index 4aa0c6b639..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/no/watchcat.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/pl/watchcat.po b/package/luci/applications/luci-app-watchcat/po/pl/watchcat.po deleted file mode 100644 index ebb67eeac4..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/pl/watchcat.po +++ /dev/null @@ -1,71 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-04-21 02:13+0200\n" -"Last-Translator: Tomecki \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Forced reboot delay" -msgstr "Wymuszone opóźnienie restartu" - -msgid "Host address to ping" -msgstr "Adres hosta do pingowania" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Jak często sprawdzać połączenie internetowe. Domyślną jednostką jest " -"sekunda, można także użyć 'm' dla minut, 'h' dla godzin lub 'd' dla dni" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"W trybie okresowym, określa to restart. W trybie internetowym, określa " -"najdłuższy okres czasu bez dostępu do internetu przed restartem. Domyślną " -"jednostką jest sekunda, można także użyć 'm' dla minut, 'h' dla godzin lub " -"'d' dla dni" - -msgid "Operating mode" -msgstr "Tryb pracy" - -msgid "Period" -msgstr "Okres" - -msgid "Ping host" -msgstr "Host do pingowania" - -msgid "Ping period" -msgstr "Czas pomiędzy wysyłaniem pingów" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcat pozwala na skonfigurowanie okresowych restartów, jeśli połączenie " -"internetowe zostanie utracone na określony czas." - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"Restart routera Watchcat wykonuje za pomocą tzw. \"miękkiego restartu\". " -"Wpisując tutaj wartość niezerową, wymusimy \"twardy restart\" jeśli \"miękki " -"restart\" się nie powiedzie. Podaj czas w sekundach lub wpisz 0 (zero) aby " -"wyłączyć restarty." diff --git a/package/luci/applications/luci-app-watchcat/po/pt-br/watchcat.po b/package/luci/applications/luci-app-watchcat/po/pt-br/watchcat.po deleted file mode 100644 index e37066c3d9..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/pt-br/watchcat.po +++ /dev/null @@ -1,70 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"PO-Revision-Date: 2017-02-20 18:10-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"POT-Creation-Date: \n" - -msgid "Forced reboot delay" -msgstr "Atraso para reinício forçado" - -msgid "Host address to ping" -msgstr "Endereço do equipamento para efetuar o PING" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Com qual frequência deve verificar a conexão com a Internet. A unidade " -"padrão é segundos, mas você pode usar o sufixo 'm' para minutos, 'h' para " -"horas ou 'd' para dias" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"No modo periódico, é definido o período para se reiniciar. No modo Internet, " -"é definido o maior período de tempo sem acesso à Internet até que uma " -"reiniciação é realizada. A unidade padrão é segundos, mas você pode usar o " -"sufixo 'm' para minutos, 'h' para horas ou 'd' para dias." - -msgid "Operating mode" -msgstr "Modo de Operação" - -msgid "Period" -msgstr "Período" - -msgid "Ping host" -msgstr "Pingar Máquina" - -msgid "Ping period" -msgstr "Período de ping" - -msgid "Watchcat" -msgstr "Watchcat" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcat permite a configuração de um período para reiniciar e/ou quando a " -"conexão com à Internet foi perdida por um ser período de tempo." - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"Ao se reiniciar o sistema, watchcat acionará uma reiniciação suave. Ao se " -"inserir um valor diferente de zero aqui, será acionado uma reiniciação " -"forçada se a reiniciação suave falhar. Insira um número de segundos para " -"habilitar, use 0 para desabilitar." diff --git a/package/luci/applications/luci-app-watchcat/po/pt/watchcat.po b/package/luci/applications/luci-app-watchcat/po/pt/watchcat.po deleted file mode 100644 index f939dc9c65..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/pt/watchcat.po +++ /dev/null @@ -1,56 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-06-01 00:02+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "Modo de operação" - -msgid "Period" -msgstr "Periodo" - -msgid "Ping host" -msgstr "Pingar host" - -msgid "Ping period" -msgstr "Periodo de ping" - -msgid "Watchcat" -msgstr "Watchcat" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/ro/watchcat.po b/package/luci/applications/luci-app-watchcat/po/ro/watchcat.po deleted file mode 100644 index cda0911bb4..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/ro/watchcat.po +++ /dev/null @@ -1,57 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-28 19:23+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "Perioadă" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/ru/watchcat.po b/package/luci/applications/luci-app-watchcat/po/ru/watchcat.po deleted file mode 100644 index 83b95e2015..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/ru/watchcat.po +++ /dev/null @@ -1,74 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: watchcat\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Forced reboot delay" -msgstr "Задержка принудительной перезагрузки" - -msgid "Host address to ping" -msgstr "Адрес хоста для опроса" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Как часто проверять интернет-соединение. По умолчанию значение в секундах, " -"вы можете использовать суффикс 'm' для указания минут, 'h' - часов, 'd' - " -"дней" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"В периодическом режиме, данная настройка определяет период перезагрузки. В " -"интернет-режиме, данная настройка определяет максимальный период времени без " -"доступа в интернет, после которого устройство перезагружается. По умолчанию " -"значение в секундах, вы можете использовать суффикс 'm' для указания минут, " -"'h' - часов, 'd' - дней" - -msgid "Operating mode" -msgstr "Режим работы" - -msgid "Period" -msgstr "Период" - -msgid "Ping host" -msgstr "Хост опроса" - -msgid "Ping period" -msgstr "Период опроса" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcat позволяет настроить периодическую перезагрузку устройства и/или " -"перезагрузку при потере интернет-соединения на определённое время." - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"При необходимости перезагрузке системы, watchcat вызовет программную " -"перезагрузку. При установке ненулевого значения, будет выполнена отложенная " -"аппаратная перезагрузка при неудачной программной. Установите количество " -"секунд для отложенной аппаратной перезагрузки или значение 0 для программной." diff --git a/package/luci/applications/luci-app-watchcat/po/sk/watchcat.po b/package/luci/applications/luci-app-watchcat/po/sk/watchcat.po deleted file mode 100644 index 2ff7de99a1..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/sk/watchcat.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/sv/watchcat.po b/package/luci/applications/luci-app-watchcat/po/sv/watchcat.po deleted file mode 100644 index 96c73e3111..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/sv/watchcat.po +++ /dev/null @@ -1,56 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Forced reboot delay" -msgstr "Fördröjning av påtvingad omstart" - -msgid "Host address to ping" -msgstr "Värdadress att pinga" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"Hur ofta internet-anslutningen ska kollas. Standardenheten är sekunder, du " -"kan använda tillägget 'm' för minutrar, 't' för timmar eller 'd' för dagar" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "Driftsläge" - -msgid "Period" -msgstr "Period" - -msgid "Ping host" -msgstr "Pinga värd" - -msgid "Ping period" -msgstr "Period för pingning" - -msgid "Watchcat" -msgstr "Watchcat" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/templates/watchcat.pot b/package/luci/applications/luci-app-watchcat/po/templates/watchcat.pot deleted file mode 100644 index 490ec5c5e3..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/templates/watchcat.pot +++ /dev/null @@ -1,46 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/tr/watchcat.po b/package/luci/applications/luci-app-watchcat/po/tr/watchcat.po deleted file mode 100644 index 633e7fb7df..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/tr/watchcat.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/uk/watchcat.po b/package/luci/applications/luci-app-watchcat/po/uk/watchcat.po deleted file mode 100644 index a7c2dd8c29..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/uk/watchcat.po +++ /dev/null @@ -1,61 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-08-13 16:53+0200\n" -"Last-Translator: zubr_139 \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -#, fuzzy -msgid "Forced reboot delay" -msgstr "Затримка примусового перезавантаження" - -msgid "Host address to ping" -msgstr "Адреса сервера для перевірки зв'язку" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "Режим роботи" - -msgid "Period" -msgstr "Період" - -msgid "Ping host" -msgstr "Пінг вузла" - -msgid "Ping period" -msgstr "Період пінгів" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcat дозволяє налаштувати періодичні перезавантаження і/або коли " -"підключення до інтернету було втрачено протягом певного періоду часу." - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/vi/watchcat.po b/package/luci/applications/luci-app-watchcat/po/vi/watchcat.po deleted file mode 100644 index 633e7fb7df..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/vi/watchcat.po +++ /dev/null @@ -1,53 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Forced reboot delay" -msgstr "" - -msgid "Host address to ping" -msgstr "" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" - -msgid "Operating mode" -msgstr "" - -msgid "Period" -msgstr "" - -msgid "Ping host" -msgstr "" - -msgid "Ping period" -msgstr "" - -msgid "Watchcat" -msgstr "" - -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" - -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" diff --git a/package/luci/applications/luci-app-watchcat/po/zh-cn/watchcat.po b/package/luci/applications/luci-app-watchcat/po/zh-cn/watchcat.po deleted file mode 100644 index fc9f7d6286..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/zh-cn/watchcat.po +++ /dev/null @@ -1,65 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2012-09-24 18:18+0200\n" -"Last-Translator: shanliren \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" - -msgid "Forced reboot delay" -msgstr "强制重启延时" - -msgid "Host address to ping" -msgstr "ping主机地址" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"检测网络连接的频率。默认单位为秒,您可以使用'm'作为后缀表示分钟,‘h’表示小" -"时‘d’表示天。" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"在周期模式,此处定义了重启的周期。在联网模式,这个表示没有网络连接情况下到执" -"行重启的最长时间间隔。默认单位为秒,您可以使用'm'作为后缀表示分钟,‘h’表示小" -"时‘d’表示天。" - -msgid "Operating mode" -msgstr "操作模式" - -msgid "Period" -msgstr "周期" - -msgid "Ping host" -msgstr "ping主机" - -msgid "Ping period" -msgstr "ping周期" - -msgid "Watchcat" -msgstr "WatchCat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "WatchCat允许设置周期性的重启 和/或者 当网络连接断开达规定时间。" - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"当重启系统的时候WatchCat将会触发一个软重启,在这里输入一个非0的值,如果软重启" -"失败将会触发一个延迟的硬重启。输入秒数启用,输入0禁止功能。" diff --git a/package/luci/applications/luci-app-watchcat/po/zh-tw/watchcat.po b/package/luci/applications/luci-app-watchcat/po/zh-tw/watchcat.po deleted file mode 100644 index b4e52bbf41..0000000000 --- a/package/luci/applications/luci-app-watchcat/po/zh-tw/watchcat.po +++ /dev/null @@ -1,66 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-14 12:00+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "Forced reboot delay" -msgstr "強制重啟延遲" - -msgid "Host address to ping" -msgstr "要Ping的主機位址" - -msgid "" -"How often to check internet connection. Default unit is seconds, you can you " -"use the suffix 'm' for minutes, 'h' for hours or 'd' for days" -msgstr "" -"多久檢查一次網際網路連線. 預設單位值是秒, 可以採用單位後綴表示, \"m\"表示分" -"鐘, \"h\"表示小時, \"d\"代表天數" - -msgid "" -"In periodic mode, it defines the reboot period. In internet mode, it defines " -"the longest period of time without internet access before a reboot is " -"engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' " -"for hours or 'd' for days" -msgstr "" -"Watchcat的定期模式,它將定義重開週期. 在網際網路模式,它將定義在重開被訂製若無" -"Internet存取時採用較長時間週期 .預設單位為秒數,可以採用單位後綴表示, \"m\"表" -"示分鐘, \"h\"表示小時, \"d\"代表天數" - -msgid "Operating mode" -msgstr "操作模式" - -msgid "Period" -msgstr "週期" - -msgid "Ping host" -msgstr "Ping主機" - -msgid "Ping period" -msgstr "Ping週期" - -msgid "Watchcat" -msgstr "Watchcat" - -#, fuzzy -msgid "" -"Watchcat allows configuring a periodic reboot when the Internet connection " -"has been lost for a certain period of time." -msgstr "" -"Watchcat允許定期重啓並且/或者當網際網路連線斷掉時經過某段時間週期後重啓" - -#, fuzzy -msgid "" -"When rebooting the system, the watchcat will trigger a soft reboot. Entering " -"a non zero value here will trigger a delayed hard reboot if the soft reboot " -"fails. Enter a number of seconds to enable, use 0 to disable" -msgstr "" -"重開系統時watchcat將會觸發軟重開, 如果軟重開失敗, 打入0以外的數字,將會觸發硬" -"重開延遲 . 打入秒數來啟用這功能,用0表示功能關閉" diff --git a/package/luci/applications/luci-app-watchcat/root/etc/uci-defaults/40_luci-watchcat b/package/luci/applications/luci-app-watchcat/root/etc/uci-defaults/40_luci-watchcat deleted file mode 100644 index 8cdb8c7b9f..0000000000 --- a/package/luci/applications/luci-app-watchcat/root/etc/uci-defaults/40_luci-watchcat +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - add ucitrack system - set ucitrack.@system[-1].init=watchcat - commit ucitrack -EOF - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/package/luci/applications/luci-app-wifischedule/Makefile b/package/luci/applications/luci-app-wifischedule/Makefile deleted file mode 100644 index 1708562a4e..0000000000 --- a/package/luci/applications/luci-app-wifischedule/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (c) 2016, prpl Foundation -# -# Permission to use, copy, modify, and/or distribute this software for any purpose with or without -# fee is hereby granted, provided that the above copyright notice and this permission notice appear -# in all copies. -# -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE -# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE -# FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# -# Author: Nils Koenig - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Turns WiFi on and off according to a schedule -LUCI_DEPENDS:=+wifischedule - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-wifischedule/README.md b/package/luci/applications/luci-app-wifischedule/README.md deleted file mode 100644 index 591abb1049..0000000000 --- a/package/luci/applications/luci-app-wifischedule/README.md +++ /dev/null @@ -1,86 +0,0 @@ -# wifischedule -Turns WiFi on and off according to a schedule on an openwrt router - -## Components -* wifischedule: Shell script that creates cron jobs based on configuration provided in UCI and does all the other logic of enabling and disabling wifi with the use of `/sbin/wifi` and `/usr/bin/iwinfo`. Can be used standalone. -* luci-app-wifischedule: LUCI frontend for creating the UCI configuration and triggering the actions. Depends on wifischedule. - - -## Use cases -You can create user-defined events when to enable or disable WiFi. -There are various use cases why you would like to do so: - -1. Reduce power consumption and therefore reduce CO2 emissions. -2. Reduce emitted electromagnatic radiation. -3. Force busincess hours when WiFi is available. - -Regarding 1: Please note, that you need to unload the wireless driver modules in order to get the most effect of saving power. -In my test scenario only disabling WiFi saves about ~0.4 Watt, unloading the modules removes another ~0.4 Watt. - -Regarding 2: Think of a wireless accesspoint e.g. in your bedrom, kids room where you want to remove the ammount of radiation emitted. - -Regarding 3: E.g. in a company, why would wireless need to be enabled weekends if no one is there working? -Or think of an accesspoint in your kids room when you want the youngsters to sleep after 10 pm instead of facebooking... - -## Configuration -You can create an arbitrary number of schedule events. Please note that there is on sanity check done wheather the start / stop times overlap or make sense. -If start and stop time are equal, this leads to disabling the WiFi at the given time. - -Logging if enabled is done to the file `/var/log/wifi_schedule.log` and can be reviewed through the "View Logfile" tab. -The cron jobs created can be reviewed through the "View Cron Jobs" tab. - -Please note that the "Unload Modules" function is currently considered as experimental. You can manually add / remove modules in the text field. -The button "Determine Modules Automatically" tries to make a best guess determining regarding the driver module and its dependencies. -When un-/loading the modules, there is a certain number of retries (`module_load`) performed. - -The option "Force disabling wifi even if stations associated" does what it says - when activated it simply shuts down WiFi. -When unchecked, its checked every `recheck_interval` minutes if there are still stations associated. Once the stations disconnect, WiFi is disabled. - -Please note, that the parameters `module_load` and `recheck_interval` are only accessible through uci. - -## UCI Configuration `wifi_schedule` -UCI configuration file: `/etc/config/wifi_schedule`: - -``` -config global - option logging '0' - option enabled '0' - option recheck_interval '10' - option modules_retries '10' - -config entry 'Businesshours' - option enabled '0' - option daysofweek 'Monday Tuesday Wednesday Thursday Friday' - option starttime '06:00' - option stoptime '22:00' - option forcewifidown '0' - -config entry 'Weekend' - option enabled '0' - option daysofweek 'Saturday Sunday' - option starttime '00:00' - option stoptime '00:00' - option forcewifidown '1' -``` - -## Script: `wifi_schedule.sh` -This is the script that does the work. Make your changes to the UCI config file: `/etc/config/wifi_schedule` - -Then call the script as follows in order to get the necessary cron jobs created: - -`wifi_schedule.sh cron` - -All commands: - -``` -wifi_schedule.sh cron|start|stop|forcestop|recheck|getmodules|savemodules|help - - cron: Create cronjob entries. - start: Start wifi. - stop: Stop wifi gracefully, i.e. check if there are stations associated and if so keep retrying. - forcestop: Stop wifi immediately. - recheck: Recheck if wifi can be disabled now. - getmodules: Returns a list of modules used by the wireless driver(s) - savemodules: Saves a list of automatic determined modules to UCI - help: This description. -``` diff --git a/package/luci/applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua b/package/luci/applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua deleted file mode 100644 index 261cf36d0f..0000000000 --- a/package/luci/applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua +++ /dev/null @@ -1,42 +0,0 @@ --- Copyright (c) 2016, prpl Foundation --- --- Permission to use, copy, modify, and/or distribute this software for any purpose with or without --- fee is hereby granted, provided that the above copyright notice and this permission notice appear --- in all copies. --- --- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE --- INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE --- FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM --- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, --- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --- --- Author: Nils Koenig - -module("luci.controller.wifischedule.wifi_schedule", package.seeall) - -local fs = require "nixio.fs" -local sys = require "luci.sys" -local template = require "luci.template" -local i18n = require "luci.i18n" - -function index() - if not nixio.fs.access("/etc/config/wifi_schedule") then - return - end - entry({"admin", "services", "wifi_schedule"}, firstchild(), _("Wifi Schedule"), 60).dependent=false - entry({"admin", "services", "wifi_schedule", "tab_from_cbi"}, cbi("wifischedule/wifi_schedule"), _("Schedule"), 1) - entry({"admin", "services", "wifi_schedule", "wifi_schedule"}, call("wifi_schedule_log"), _("View Logfile"), 2) - entry({"admin", "services", "wifi_schedule", "cronjob"}, call("view_crontab"), _("View Cron Jobs"), 3) -end - -function wifi_schedule_log() - local logfile = fs.readfile("/tmp/log/wifi_schedule.log") or "" - template.render("wifischedule/file_viewer", - {title = i18n.translate("Wifi Schedule Logfile"), content = logfile}) -end - -function view_crontab() - local crontab = fs.readfile("/etc/crontabs/root") or "" - template.render("wifischedule/file_viewer", - {title = i18n.translate("Cron Jobs"), content = crontab}) -end diff --git a/package/luci/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua b/package/luci/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua deleted file mode 100644 index 1d301219a8..0000000000 --- a/package/luci/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua +++ /dev/null @@ -1,249 +0,0 @@ --- Copyright (c) 2016, prpl Foundation --- --- Permission to use, copy, modify, and/or distribute this software for any purpose with or without --- fee is hereby granted, provided that the above copyright notice and this permission notice appear --- in all copies. --- --- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE --- INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE --- FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM --- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, --- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --- --- Author: Nils Koenig - -local fs = require "nixio.fs" -local sys = require "luci.sys" - -function time_validator(self, value, desc) - if value ~= nil then - h_str, m_str = string.match(value, "^(%d%d?):(%d%d?)$") - h = tonumber(h_str) - m = tonumber(m_str) - if ( h ~= nil and - h >= 0 and - h <= 23 and - m ~= nil and - m >= 0 and - m <= 59) then - return value - end - end - return nil, translatef("The value %s is invalid", desc) -end - --- ------------------------------------------------------------------------------------------------- - --- BEGIN Map -m = Map("wifi_schedule", translate("Wifi Schedule"), translate("Defines a schedule when to turn on and off wifi.")) -function m.on_commit(self) - sys.exec("/usr/bin/wifi_schedule.sh cron") -end --- END Map - --- BEGIN Global Section -global_section = m:section(TypedSection, "global", translate("Global Settings")) -global_section.optional = false -global_section.rmempty = false -global_section.anonymous = true --- END Section - --- BEGIN Global Enable Checkbox -global_enable = global_section:option(Flag, "enabled", translate("Enable Wifi Schedule")) -global_enable.optional = false -global_enable.rmempty = false - -function global_enable.validate(self, value, global_section) - if value == "1" then - if ( fs.access("/sbin/wifi") and - fs.access("/usr/bin/wifi_schedule.sh") )then - return value - else - return nil, translate("Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi") - end - else - return "0" - end -end --- END Global Enable Checkbox - --- BEGIN Global Logging Checkbox -global_logging = global_section:option(Flag, "logging", translate("Enable logging")) -global_logging.optional = false -global_logging.rmempty = false -global_logging.default = 0 --- END Global Enable Checkbox - --- BEGIN Global Activate WiFi Button -enable_wifi = global_section:option(Button, "enable_wifi", translate("Activate wifi")) -function enable_wifi.write() - sys.exec("/usr/bin/wifi_schedule.sh start manual") -end --- END Global Activate Wifi Button - --- BEGIN Global Disable WiFi Gracefully Button -disable_wifi_gracefully = global_section:option(Button, "disable_wifi_gracefully", translate("Disable wifi gracefully")) -function disable_wifi_gracefully.write() - sys.exec("/usr/bin/wifi_schedule.sh stop manual") -end --- END Global Disable Wifi Gracefully Button - --- BEGIN Disable WiFi Forced Button -disable_wifi_forced = global_section:option(Button, "disable_wifi_forced", translate("Disabled wifi forced")) -function disable_wifi_forced.write() - sys.exec("/usr/bin/wifi_schedule.sh forcestop manual") -end --- END Global Disable WiFi Forced Button - --- BEGIN Global Unload Modules Checkbox -global_unload_modules = global_section:option(Flag, "unload_modules", translate("Unload Modules (experimental; saves more power)")) -global_unload_modules.optional = false -global_unload_modules.rmempty = false -global_unload_modules.default = 0 --- END Global Unload Modules Checkbox - - --- BEGIN Modules -modules = global_section:option(TextValue, "modules", "") -modules:depends("unload_modules", global_unload_modules.enabled); -modules.wrap = "off" -modules.rows = 10 - -function modules.cfgvalue(self, section) - mod = uci.get("wifi_schedule", section, "modules") - if mod == nil then - mod = "" - end - return mod:gsub(" ", "\r\n") -end - -function modules.write(self, section, value) - if value then - value_list = value:gsub("\r\n", " ") - ListValue.write(self, section, value_list) - uci.set("wifi_schedule", section, "modules", value_list) - end -end --- END Modules - --- BEGIN Determine Modules -determine_modules = global_section:option(Button, "determine_modules", translate("Determine Modules Automatically")) -determine_modules:depends("unload_modules", global_unload_modules.enabled); -function determine_modules.write(self, section) - output = sys.exec("/usr/bin/wifi_schedule.sh getmodules") - modules:write(section, output) -end --- END Determine Modules - --- BEGIN Section -d = m:section(TypedSection, "entry", translate("Schedule events")) -d.addremove = true ---d.anonymous = true --- END Section - --- BEGIN Enable Checkbox -c = d:option(Flag, "enabled", translate("Enable")) -c.optional = false -c.rmempty = false --- END Enable Checkbox - --- BEGIN Day(s) of Week -dow = d:option(MultiValue, "daysofweek", translate("Day(s) of Week")) -dow.optional = false -dow.rmempty = false -dow:value("Monday", translate("Monday")) -dow:value("Tuesday", translate("Tuesday")) -dow:value("Wednesday", translate("Wednesday")) -dow:value("Thursday", translate("Thursday")) -dow:value("Friday", translate("Friday")) -dow:value("Saturday", translate("Saturday")) -dow:value("Sunday", translate("Sunday")) --- END Day(s) of Weel - --- BEGIN Start Wifi Dropdown -starttime = d:option(Value, "starttime", translate("Start WiFi")) -starttime.optional = false -starttime.rmempty = false -starttime:value("00:00") -starttime:value("01:00") -starttime:value("02:00") -starttime:value("03:00") -starttime:value("04:00") -starttime:value("05:00") -starttime:value("06:00") -starttime:value("07:00") -starttime:value("08:00") -starttime:value("09:00") -starttime:value("10:00") -starttime:value("11:00") -starttime:value("12:00") -starttime:value("13:00") -starttime:value("14:00") -starttime:value("15:00") -starttime:value("16:00") -starttime:value("17:00") -starttime:value("18:00") -starttime:value("19:00") -starttime:value("20:00") -starttime:value("21:00") -starttime:value("22:00") -starttime:value("23:00") - -function starttime.validate(self, value, d) - return time_validator(self, value, translate("Start Time")) -end --- END Start Wifi Dropdown - --- BEGIN Stop Wifi Dropdown -stoptime = d:option(Value, "stoptime", translate("Stop WiFi")) -stoptime.optional = false -stoptime.rmempty = false -stoptime:value("00:00") -stoptime:value("01:00") -stoptime:value("02:00") -stoptime:value("03:00") -stoptime:value("04:00") -stoptime:value("05:00") -stoptime:value("06:00") -stoptime:value("07:00") -stoptime:value("08:00") -stoptime:value("09:00") -stoptime:value("10:00") -stoptime:value("11:00") -stoptime:value("12:00") -stoptime:value("13:00") -stoptime:value("14:00") -stoptime:value("15:00") -stoptime:value("16:00") -stoptime:value("17:00") -stoptime:value("18:00") -stoptime:value("19:00") -stoptime:value("20:00") -stoptime:value("21:00") -stoptime:value("22:00") -stoptime:value("23:00") - -function stoptime.validate(self, value, d) - return time_validator(self, value, translate("Stop Time")) -end --- END Stop Wifi Dropdown - --- BEGIN Force Wifi Stop Checkbox -force_wifi = d:option(Flag, "forcewifidown", translate("Force disabling wifi even if stations associated")) -force_wifi.default = false -force_wifi.rmempty = false - -function force_wifi.validate(self, value, d) - if value == "0" then - if fs.access("/usr/bin/iwinfo") then - return value - else - return nil, translate("Could not find required programm /usr/bin/iwinfo") - end - else - return "1" - end -end --- END Force Wifi Checkbox - -return m diff --git a/package/luci/applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm b/package/luci/applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm deleted file mode 100644 index f67a2bea99..0000000000 --- a/package/luci/applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm +++ /dev/null @@ -1,22 +0,0 @@ -<%# -Copyright (c) 2016, prpl Foundation - -Permission to use, copy, modify, and/or distribute this software for any purpose with or without -fee is hereby granted, provided that the above copyright notice and this permission notice appear -in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE -FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -Author: Nils Koenig --%> - -<%+header%> -

    <%=title%>

    -
    - -
    -<%+footer%> diff --git a/package/luci/applications/luci-app-wifischedule/po/it/wifischedule.po b/package/luci/applications/luci-app-wifischedule/po/it/wifischedule.po deleted file mode 100644 index 18a9dce23a..0000000000 --- a/package/luci/applications/luci-app-wifischedule/po/it/wifischedule.po +++ /dev/null @@ -1,101 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Activate wifi" -msgstr "Attiva wifi" - -msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi" -msgstr "Impossibile trovare /usr/bin/wifi_schedule.sh o /sbin/wifi" - -msgid "Could not find required programm /usr/bin/iwinfo" -msgstr "Impossibile trovare il programma /usr/bin/iwinfo" - -msgid "Cron Jobs" -msgstr "Operazioni Programmate" - -msgid "Day(s) of Week" -msgstr "Giorno(i) della Settimana" - -msgid "Defines a schedule when to turn on and off wifi." -msgstr "Definisce un piano di accensione o spegnimento del wifi" - -msgid "Determine Modules Automatically" -msgstr "Determina i Moduli Automaticamente" - -msgid "Disable wifi gracefully" -msgstr "Disabilita wifi con grazia" - -msgid "Disabled wifi forced" -msgstr "Disabilita wifi con forza" - -msgid "Enable" -msgstr "Abilita" - -msgid "Enable Wifi Schedule" -msgstr "Abilita il Piano Wifi" - -msgid "Enable logging" -msgstr "Abilita il registro" - -msgid "Force disabling wifi even if stations associated" -msgstr "Forza disattivazione wifi anche con stazioni associate" - -msgid "Friday" -msgstr "Venerdì" - -msgid "Global Settings" -msgstr "Impostazioni Globali" - -msgid "Monday" -msgstr "Lunedì" - -msgid "Saturday" -msgstr "Sabato" - -msgid "Schedule" -msgstr "Piano" - -msgid "Schedule events" -msgstr "Piano eventi" - -msgid "Start Time" -msgstr "Orario di Inizio" - -msgid "Start WiFi" -msgstr "" - -msgid "Stop Time" -msgstr "Orario di Stop" - -msgid "Stop WiFi" -msgstr "" - -msgid "Sunday" -msgstr "Domenica" - -msgid "The value %s is invalid" -msgstr "Il valore %s è invalido" - -msgid "Thursday" -msgstr "Giovedì" - -msgid "Tuesday" -msgstr "Martedì" - -msgid "Unload Modules (experimental; saves more power)" -msgstr "Scarica Moduli (sperimentale; risparmia più energia)" - -msgid "View Cron Jobs" -msgstr "Vedi Operazioni Programmate" - -msgid "View Logfile" -msgstr "Vedi il Registro" - -msgid "Wednesday" -msgstr "Mercoledì" - -msgid "Wifi Schedule" -msgstr "Piano Wifi" - -msgid "Wifi Schedule Logfile" -msgstr "Registro Piano Wifi" diff --git a/package/luci/applications/luci-app-wifischedule/po/ja/wifischedule.po b/package/luci/applications/luci-app-wifischedule/po/ja/wifischedule.po deleted file mode 100644 index 3bc7864ad7..0000000000 --- a/package/luci/applications/luci-app-wifischedule/po/ja/wifischedule.po +++ /dev/null @@ -1,112 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: INAGAKI Hiroshi \n" -"Language-Team: \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.11\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Activate wifi" -msgstr "WiFiのアクティブ化" - -msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi" -msgstr "必須の /usr/bin/wifi_schedule.sh または /sbin/wifi が見つかりませんでした。" - -msgid "Could not find required programm /usr/bin/iwinfo" -msgstr "必須のプログラム /usr/bin/iwinfo が見つかりませんでした。" - -msgid "Cron Jobs" -msgstr "Cronジョブ" - -msgid "Day(s) of Week" -msgstr "曜日" - -msgid "Defines a schedule when to turn on and off wifi." -msgstr "WiFiのオンとオフを切り替えるスケジュールを設定します。" - -msgid "Determine Modules Automatically" -msgstr "モジュールを自動的に決定する" - -msgid "Disable wifi gracefully" -msgstr "WiFiの通常終了" - -msgid "Disabled wifi forced" -msgstr "WiFiの強制終了" - -msgid "Enable" -msgstr "有効" - -msgid "Enable Wifi Schedule" -msgstr "WiFi スケジュールの有効化" - -msgid "Enable logging" -msgstr "ログの有効化" - -msgid "Force disabling wifi even if stations associated" -msgstr "ステーションが関連付けられていてもWiFiを強制終了する" - -msgid "Friday" -msgstr "金曜日" - -msgid "Global Settings" -msgstr "全体設定" - -msgid "Monday" -msgstr "月曜日" - -msgid "Saturday" -msgstr "土曜日" - -msgid "Schedule" -msgstr "スケジュール" - -msgid "Schedule events" -msgstr "実行スケジュール" - -msgid "Start Time" -msgstr "開始時刻" - -msgid "Start WiFi" -msgstr "WiFiの開始" - -msgid "Stop Time" -msgstr "停止時刻" - -msgid "Stop WiFi" -msgstr "WiFiの停止" - -msgid "Sunday" -msgstr "日曜日" - -msgid "The value %s is invalid" -msgstr "%s の値が無効です" - -msgid "Thursday" -msgstr "木曜日" - -msgid "Tuesday" -msgstr "火曜日" - -msgid "Unload Modules (experimental; saves more power)" -msgstr "モジュールのアンロード(実験的、より省電力)" - -msgid "View Cron Jobs" -msgstr "Cronジョブの確認" - -msgid "View Logfile" -msgstr "ログファイルの確認" - -msgid "Wednesday" -msgstr "水曜日" - -msgid "Wifi Schedule" -msgstr "WiFi スケジュール" - -msgid "Wifi Schedule Logfile" -msgstr "WiFiスケジュール ログファイル" diff --git a/package/luci/applications/luci-app-wifischedule/po/pt-br/wifischedule.po b/package/luci/applications/luci-app-wifischedule/po/pt-br/wifischedule.po deleted file mode 100644 index 19e31b54ca..0000000000 --- a/package/luci/applications/luci-app-wifischedule/po/pt-br/wifischedule.po +++ /dev/null @@ -1,114 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "Activate wifi" -msgstr "Ativar a WiFi" - -msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi" -msgstr "" -"Não foi possível localizar os programas necessários '/usr/bin/wifi_schedule." -"sh' ou '/sbin/wifi'." - -msgid "Could not find required programm /usr/bin/iwinfo" -msgstr "Não foi possível localizar o programa necessário '/usr/bin/iwinfo'" - -msgid "Cron Jobs" -msgstr "Tarefas da Cron" - -msgid "Day(s) of Week" -msgstr "Dia(s) da semana" - -msgid "Defines a schedule when to turn on and off wifi." -msgstr "Define um agendamento para quando ligar ou desligar a WiFi." - -msgid "Determine Modules Automatically" -msgstr "Determinar os Módulos Automaticamente" - -msgid "Disable wifi gracefully" -msgstr "Desabilitar a WiFi amistosamente" - -msgid "Disabled wifi forced" -msgstr "WiFi foi desabilitada de forma forçada." - -msgid "Enable" -msgstr "Habilitar" - -msgid "Enable Wifi Schedule" -msgstr "Habilitar o agendamento da WiFi" - -msgid "Enable logging" -msgstr "Habilite os registros (log)" - -msgid "Force disabling wifi even if stations associated" -msgstr "Force a desativação da WiFi mesmo se existirem estações associadas " - -msgid "Friday" -msgstr "Sexta-feira" - -msgid "Global Settings" -msgstr "Configurações Globais" - -msgid "Monday" -msgstr "Segunda-Feira" - -msgid "Saturday" -msgstr "Sábado" - -msgid "Schedule" -msgstr "Agendamento" - -msgid "Schedule events" -msgstr "Eventos do agendamento" - -msgid "Start Time" -msgstr "Hora Inicial" - -msgid "Start WiFi" -msgstr "Iniciar WiFi" - -msgid "Stop Time" -msgstr "Hora Final" - -msgid "Stop WiFi" -msgstr "Parar WiFi" - -msgid "Sunday" -msgstr "Domingo" - -msgid "The value %s is invalid" -msgstr "O valor %s é inválido" - -msgid "Thursday" -msgstr "Quita-feira" - -msgid "Tuesday" -msgstr "Terça-feira" - -msgid "Unload Modules (experimental; saves more power)" -msgstr "Descarregar Módulos (experimental, poupa mais energia)" - -msgid "View Cron Jobs" -msgstr "Visualizar Tarefas da Cron" - -msgid "View Logfile" -msgstr "Visualizar o Arquivo de Registros (log)" - -msgid "Wednesday" -msgstr "Quarta-feira" - -msgid "Wifi Schedule" -msgstr "Agendamento da Wifi" - -msgid "Wifi Schedule Logfile" -msgstr "Arquivo de Registros (log) do Agendamento da Wifi" diff --git a/package/luci/applications/luci-app-wifischedule/po/sv/wifischedule.po b/package/luci/applications/luci-app-wifischedule/po/sv/wifischedule.po deleted file mode 100644 index 50953aa285..0000000000 --- a/package/luci/applications/luci-app-wifischedule/po/sv/wifischedule.po +++ /dev/null @@ -1,101 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Activate wifi" -msgstr "Aktivera wifi" - -msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi" -msgstr "" - -msgid "Could not find required programm /usr/bin/iwinfo" -msgstr "" - -msgid "Cron Jobs" -msgstr "Cron-jobb" - -msgid "Day(s) of Week" -msgstr "Dag(ar) i veckan" - -msgid "Defines a schedule when to turn on and off wifi." -msgstr "Anger ett schema när wifi ska startas och stängas ner." - -msgid "Determine Modules Automatically" -msgstr "Avgör moduler automatiskt" - -msgid "Disable wifi gracefully" -msgstr "Inaktivera wifi elegant" - -msgid "Disabled wifi forced" -msgstr "Inaktivering av wifi påtvingat" - -msgid "Enable" -msgstr "Aktivera" - -msgid "Enable Wifi Schedule" -msgstr "Aktivera Wifi-schema" - -msgid "Enable logging" -msgstr "Aktivera loggning" - -msgid "Force disabling wifi even if stations associated" -msgstr "" - -msgid "Friday" -msgstr "Fredag" - -msgid "Global Settings" -msgstr "Globala inställningar" - -msgid "Monday" -msgstr "Måndag" - -msgid "Saturday" -msgstr "Lördag" - -msgid "Schedule" -msgstr "Schema" - -msgid "Schedule events" -msgstr "Schemalägg händelser" - -msgid "Start Time" -msgstr "Starttid" - -msgid "Start WiFi" -msgstr "Starta WiFi" - -msgid "Stop Time" -msgstr "Stopptid" - -msgid "Stop WiFi" -msgstr "Stoppa WiFi" - -msgid "Sunday" -msgstr "Söndag" - -msgid "The value %s is invalid" -msgstr "Värdet %s är ogiltigt" - -msgid "Thursday" -msgstr "Torsdag" - -msgid "Tuesday" -msgstr "Tisdag" - -msgid "Unload Modules (experimental; saves more power)" -msgstr "Befria moduler (experimentiell; sparar mer ström)" - -msgid "View Cron Jobs" -msgstr "Se Cron-jobb" - -msgid "View Logfile" -msgstr "Se loggfilen" - -msgid "Wednesday" -msgstr "Onsdag" - -msgid "Wifi Schedule" -msgstr "Wifi-schema" - -msgid "Wifi Schedule Logfile" -msgstr "Loggfil för Wifi-schema" diff --git a/package/luci/applications/luci-app-wifischedule/po/templates/wifischedule.pot b/package/luci/applications/luci-app-wifischedule/po/templates/wifischedule.pot deleted file mode 100644 index 639c432e5e..0000000000 --- a/package/luci/applications/luci-app-wifischedule/po/templates/wifischedule.pot +++ /dev/null @@ -1,101 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Activate wifi" -msgstr "" - -msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi" -msgstr "" - -msgid "Could not find required programm /usr/bin/iwinfo" -msgstr "" - -msgid "Cron Jobs" -msgstr "" - -msgid "Day(s) of Week" -msgstr "" - -msgid "Defines a schedule when to turn on and off wifi." -msgstr "" - -msgid "Determine Modules Automatically" -msgstr "" - -msgid "Disable wifi gracefully" -msgstr "" - -msgid "Disabled wifi forced" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable Wifi Schedule" -msgstr "" - -msgid "Enable logging" -msgstr "" - -msgid "Force disabling wifi even if stations associated" -msgstr "" - -msgid "Friday" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Monday" -msgstr "" - -msgid "Saturday" -msgstr "" - -msgid "Schedule" -msgstr "" - -msgid "Schedule events" -msgstr "" - -msgid "Start Time" -msgstr "" - -msgid "Start WiFi" -msgstr "" - -msgid "Stop Time" -msgstr "" - -msgid "Stop WiFi" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "The value %s is invalid" -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Tuesday" -msgstr "" - -msgid "Unload Modules (experimental; saves more power)" -msgstr "" - -msgid "View Cron Jobs" -msgstr "" - -msgid "View Logfile" -msgstr "" - -msgid "Wednesday" -msgstr "" - -msgid "Wifi Schedule" -msgstr "" - -msgid "Wifi Schedule Logfile" -msgstr "" diff --git a/package/luci/applications/luci-app-wifischedule/po/zh-cn/wifischedule.po b/package/luci/applications/luci-app-wifischedule/po/zh-cn/wifischedule.po deleted file mode 100644 index ab3a8d0bf3..0000000000 --- a/package/luci/applications/luci-app-wifischedule/po/zh-cn/wifischedule.po +++ /dev/null @@ -1,101 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Activate wifi" -msgstr "激活 WiFi" - -msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi" -msgstr "无法找到必需的 /usr/bin/wifi_schedule.sh 或 /sbin/wifi" - -msgid "Could not find required programm /usr/bin/iwinfo" -msgstr "无法找到必需程序:/usr/bin/iwinfo" - -msgid "Cron Jobs" -msgstr "计划任务" - -msgid "Day(s) of Week" -msgstr "星期" - -msgid "Defines a schedule when to turn on and off wifi." -msgstr "定义自动打开和关闭 WiFi 的计划表" - -msgid "Determine Modules Automatically" -msgstr "自动确定模块" - -msgid "Disable wifi gracefully" -msgstr "正常关闭 WiFi" - -msgid "Disabled wifi forced" -msgstr "强制关闭 WiFi" - -msgid "Enable" -msgstr "启用" - -msgid "Enable Wifi Schedule" -msgstr "启用 WiFi 计划" - -msgid "Enable logging" -msgstr "启用日志" - -msgid "Force disabling wifi even if stations associated" -msgstr "即使有设备连接也强制关闭 WiFi" - -msgid "Friday" -msgstr "星期五" - -msgid "Global Settings" -msgstr "全局设置" - -msgid "Monday" -msgstr "星期一" - -msgid "Saturday" -msgstr "星期六" - -msgid "Schedule" -msgstr "计划表" - -msgid "Schedule events" -msgstr "计划事件" - -msgid "Start Time" -msgstr "启动时间" - -msgid "Start WiFi" -msgstr "启动 WiFi" - -msgid "Stop Time" -msgstr "关闭时间" - -msgid "Stop WiFi" -msgstr "关闭 WiFi" - -msgid "Sunday" -msgstr "星期日" - -msgid "The value %s is invalid" -msgstr "%s 的值无效" - -msgid "Thursday" -msgstr "星期四" - -msgid "Tuesday" -msgstr "星期二" - -msgid "Unload Modules (experimental; saves more power)" -msgstr "卸载模块(实验性的,节省更多电量)" - -msgid "View Cron Jobs" -msgstr "查看计划任务" - -msgid "View Logfile" -msgstr "查看日志文件" - -msgid "Wednesday" -msgstr "星期三" - -msgid "Wifi Schedule" -msgstr "WiFi 计划" - -msgid "Wifi Schedule Logfile" -msgstr "WiFi 计划日志文件" diff --git a/package/luci/applications/luci-app-wireguard/Makefile b/package/luci/applications/luci-app-wireguard/Makefile deleted file mode 100644 index 92cdcf2700..0000000000 --- a/package/luci/applications/luci-app-wireguard/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2016-2017 Dan Luedtke -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=WireGuard Status -LUCI_DEPENDS:=+wireguard-tools +kmod-wireguard -LUCI_PKGARCH:=all - -PKG_MAINTAINER:=Dan Luedtke - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua b/package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua deleted file mode 100644 index 68a82fe5cc..0000000000 --- a/package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua +++ /dev/null @@ -1,8 +0,0 @@ --- Copyright 2016-2017 Dan Luedtke --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.wireguard", package.seeall) - -function index() - entry({"admin", "status", "wireguard"}, template("wireguard"), _("WireGuard Status"), 92) -end diff --git a/package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm deleted file mode 100644 index 5af6232ae6..0000000000 --- a/package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm +++ /dev/null @@ -1,209 +0,0 @@ -<%# - Copyright 2016-2017 Dan Luedtke - Licensed to the public under the Apache License 2.0. --%> - -<% - local data = { } - local last_device = "" - - local wg_dump = io.popen("wg show all dump") - if wg_dump then - local line - for line in wg_dump:lines() do - local line = string.split(line, "\t") - if not (last_device == line[1]) then - last_device = line[1] - data[line[1]] = { - name = line[1], - public_key = line[3], - listen_port = line[4], - fwmark = line[5], - peers = { } - } - else - local peer = { - public_key = line[2], - endpoint = line[4], - allowed_ips = { }, - latest_handshake = line[6], - transfer_rx = line[7], - transfer_tx = line[8], - persistent_keepalive = line[9] - } - if not (line[4] == '(none)') then - for ipkey, ipvalue in pairs(string.split(line[5], ",")) do - if #ipvalue > 0 then - table.insert(peer['allowed_ips'], ipvalue) - end - end - end - table.insert(data[line[1]].peers, peer) - end - end - end - - if luci.http.formvalue("status") == "1" then - luci.http.prepare_content("application/json") - luci.http.write_json(data) - return - end --%> - -<%+header%> - - - - -

    WireGuard Status

    - -
    -<%- -for ikey, iface in pairs(data) do - -%> - <%:Interface%> <%=ikey%> - - - - - - <%- - for pkey, peer in pairs(iface.peers) do - -%> - - - - - <%- - end - -%> -
    <%:Configuration%> - - - - -
    -   - - <%:Collecting data...%> -
    -
    <%:Peer%> - - - - -
    -
    - ? -
    - <%:Collecting data...%> -
    -
    - <%- -end --%> -
    - -<%+footer%> diff --git a/package/luci/applications/luci-app-wireguard/po/ja/wireguard.po b/package/luci/applications/luci-app-wireguard/po/ja/wireguard.po deleted file mode 100644 index 5cd7a90037..0000000000 --- a/package/luci/applications/luci-app-wireguard/po/ja/wireguard.po +++ /dev/null @@ -1,74 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-02-28 00:31+0900\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Language-Team: \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.12\n" -"X-Poedit-Basepath: .\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Allowed IPs" -msgstr "許可されたIP" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "Configuration" -msgstr "設定" - -msgid "Data Received" -msgstr "受信済みデータ" - -msgid "Data Transmitted" -msgstr "送信済みデータ" - -msgid "Endpoint" -msgstr "エンドポイント" - -msgid "Firewall Mark" -msgstr "ファイアウォール マーク" - -msgid "Interface" -msgstr "インターフェース" - -msgid "Interface does not have a public key!" -msgstr "インターフェースに公開鍵がありません!" - -msgid "Latest Handshake" -msgstr "最新のハンドシェイク" - -msgid "Listen Port" -msgstr "待ち受けポート" - -msgid "Never" -msgstr "無し" - -msgid "Peer" -msgstr "ピア" - -msgid "Persistent Keepalive" -msgstr "永続的なキープアライブ" - -msgid "Public Key" -msgstr "公開鍵" - -msgid "WireGuard Status" -msgstr "WireGuard ステータス" - -msgid "h ago" -msgstr "時間前" - -msgid "m ago" -msgstr "分前" - -msgid "over a day ago" -msgstr "1日以上前" - -msgid "s ago" -msgstr "秒前" diff --git a/package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po b/package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po deleted file mode 100644 index d3b5059d5f..0000000000 --- a/package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po +++ /dev/null @@ -1,73 +0,0 @@ -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: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "Allowed IPs" -msgstr "Endereços IP autorizados" - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "Configuration" -msgstr "Configuração" - -msgid "Data Received" -msgstr "Dados Recebidos" - -msgid "Data Transmitted" -msgstr "Dados Enviados" - -msgid "Endpoint" -msgstr "Equipamento do ponto final" - -msgid "Firewall Mark" -msgstr "Marca do Firewall" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface does not have a public key!" -msgstr "A interface não tem uma chave pública!" - -msgid "Latest Handshake" -msgstr "Última Negociação" - -msgid "Listen Port" -msgstr "Porta de Escuta" - -msgid "Never" -msgstr "Nunca" - -msgid "Peer" -msgstr "Parceiro" - -msgid "Persistent Keepalive" -msgstr "Manter Conexões Abertas (Keepalive)" - -msgid "Public Key" -msgstr "Chave Pública" - -msgid "WireGuard Status" -msgstr "Estado do WireGuard" - -msgid "h ago" -msgstr "horas atrás" - -msgid "m ago" -msgstr "meses atrás" - -msgid "over a day ago" -msgstr "mais de um dia atrás" - -msgid "s ago" -msgstr "segundos atrás" diff --git a/package/luci/applications/luci-app-wireguard/po/sv/wireguard.po b/package/luci/applications/luci-app-wireguard/po/sv/wireguard.po deleted file mode 100644 index 3422ae91e9..0000000000 --- a/package/luci/applications/luci-app-wireguard/po/sv/wireguard.po +++ /dev/null @@ -1,62 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Allowed IPs" -msgstr "Tillåtna IP-adresser" - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Data Received" -msgstr "Mottagen data" - -msgid "Data Transmitted" -msgstr "Överförd data" - -msgid "Endpoint" -msgstr "Slutpunkt" - -msgid "Firewall Mark" -msgstr "Brandväggsmarkering" - -msgid "Interface" -msgstr "Gränssnitt" - -msgid "Interface does not have a public key!" -msgstr "Gränssnittet har inte en publik nyckel!" - -msgid "Latest Handshake" -msgstr "Senaste handskakning" - -msgid "Listen Port" -msgstr "Lyssningsport" - -msgid "Never" -msgstr "Aldrig" - -msgid "Peer" -msgstr "Jämlike" - -msgid "Persistent Keepalive" -msgstr "Hålla vid liv ständigt" - -msgid "Public Key" -msgstr "Publik nyckel" - -msgid "WireGuard Status" -msgstr "Status för WireGuard" - -msgid "h ago" -msgstr "t sedan" - -msgid "m ago" -msgstr "m sedan" - -msgid "over a day ago" -msgstr "över en dag sedan" - -msgid "s ago" -msgstr "s sedan" diff --git a/package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot b/package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot deleted file mode 100644 index 9ec5c60048..0000000000 --- a/package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot +++ /dev/null @@ -1,62 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Allowed IPs" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Data Received" -msgstr "" - -msgid "Data Transmitted" -msgstr "" - -msgid "Endpoint" -msgstr "" - -msgid "Firewall Mark" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface does not have a public key!" -msgstr "" - -msgid "Latest Handshake" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Peer" -msgstr "" - -msgid "Persistent Keepalive" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "WireGuard Status" -msgstr "" - -msgid "h ago" -msgstr "" - -msgid "m ago" -msgstr "" - -msgid "over a day ago" -msgstr "" - -msgid "s ago" -msgstr "" diff --git a/package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po b/package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po deleted file mode 100644 index e873a83891..0000000000 --- a/package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po +++ /dev/null @@ -1,73 +0,0 @@ -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 2.0.1\n" -"Last-Translator: liushuyu \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: zh_CN\n" - -msgid "Allowed IPs" -msgstr "允许的 IP" - -msgid "Collecting data..." -msgstr "正在收集数据..." - -msgid "Configuration" -msgstr "配置" - -msgid "Data Received" -msgstr "已接收" - -msgid "Data Transmitted" -msgstr "已发送" - -msgid "Endpoint" -msgstr "传输端点" - -msgid "Firewall Mark" -msgstr "防火墙标识" - -msgid "Interface" -msgstr "接口" - -msgid "Interface does not have a public key!" -msgstr "接口没有配置公钥!" - -msgid "Latest Handshake" -msgstr "上次握手" - -msgid "Listen Port" -msgstr "监听端口" - -msgid "Never" -msgstr "从不" - -msgid "Peer" -msgstr "对端" - -msgid "Persistent Keepalive" -msgstr "Keepalive 间隔(秒)" - -msgid "Public Key" -msgstr "公钥" - -msgid "WireGuard Status" -msgstr "WireGuard 状态" - -msgid "h ago" -msgstr "小时前" - -msgid "m ago" -msgstr "分钟前" - -msgid "over a day ago" -msgstr "超过一天前" - -msgid "s ago" -msgstr "秒前" diff --git a/package/luci/applications/luci-app-wol/Makefile b/package/luci/applications/luci-app-wol/Makefile deleted file mode 100644 index d935ee9030..0000000000 --- a/package/luci/applications/luci-app-wol/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Wake-on-LAN -LUCI_DEPENDS:=+etherwake - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/applications/luci-app-wol/luasrc/controller/wol.lua b/package/luci/applications/luci-app-wol/luasrc/controller/wol.lua deleted file mode 100644 index dbbfdde128..0000000000 --- a/package/luci/applications/luci-app-wol/luasrc/controller/wol.lua +++ /dev/null @@ -1,6 +0,0 @@ -module("luci.controller.wol", package.seeall) - -function index() - entry({"admin", "services", "wol"}, cbi("wol"), _("Wake on LAN"), 90) - entry({"mini", "services", "wol"}, cbi("wol"), _("Wake on LAN"), 90) -end diff --git a/package/luci/applications/luci-app-wol/luasrc/model/cbi/wol.lua b/package/luci/applications/luci-app-wol/luasrc/model/cbi/wol.lua deleted file mode 100644 index ec6a1be2a8..0000000000 --- a/package/luci/applications/luci-app-wol/luasrc/model/cbi/wol.lua +++ /dev/null @@ -1,103 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sys = require "luci.sys" -local fs = require "nixio.fs" - -m = SimpleForm("wol", translate("Wake on LAN"), - translate("Wake on LAN is a mechanism to remotely boot computers in the local network.")) - -m.submit = translate("Wake up host") -m.reset = false - - -local has_ewk = fs.access("/usr/bin/etherwake") -local has_wol = fs.access("/usr/bin/wol") - - -s = m:section(SimpleSection) - -if has_ewk and has_wol then - bin = s:option(ListValue, "binary", translate("WoL program"), - translate("Sometimes only one of the two tools works. If one fails, try the other one")) - - bin:value("/usr/bin/etherwake", "Etherwake") - bin:value("/usr/bin/wol", "WoL") -end - -if has_ewk then - iface = s:option(ListValue, "iface", translate("Network interface to use"), - translate("Specifies the interface the WoL packet is sent on")) - - if has_wol then - iface:depends("binary", "/usr/bin/etherwake") - end - - iface:value("", translate("Broadcast on all interfaces")) - - for _, e in ipairs(sys.net.devices()) do - if e ~= "lo" then iface:value(e) end - end -end - - -host = s:option(Value, "mac", translate("Host to wake up"), - translate("Choose the host to wake up or enter a custom MAC address to use")) - -sys.net.mac_hints(function(mac, name) - host:value(mac, "%s (%s)" %{ mac, name }) -end) - -if has_ewk then - broadcast = s:option(Flag, "broadcast", - translate("Send to broadcast address")) - if has_wol then - broadcast:depends("binary", "/usr/bin/etherwake") - end -end - -function host.write(self, s, val) - local host = luci.http.formvalue("cbid.wol.1.mac") - if host and #host > 0 and host:match("^[a-fA-F0-9:]+$") then - local cmd - local util = luci.http.formvalue("cbid.wol.1.binary") or ( - has_ewk and "/usr/bin/etherwake" or "/usr/bin/wol" - ) - - if util == "/usr/bin/etherwake" then - local iface = luci.http.formvalue("cbid.wol.1.iface") - local broadcast = luci.http.formvalue("cbid.wol.1.broadcast") - cmd = "%s -D%s %s %q" %{ - util, (iface ~= "" and " -i %q" % iface or ""), - (broadcast == "1" and " -b" or ""), host - } - else - cmd = "%s -v %q" %{ util, host } - end - - local msg = "

    %s

    %s

    " %{ - translate("Starting WoL utility:"), cmd - } - - local p = io.popen(cmd .. " 2>&1") - if p then - while true do - local l = p:read("*l") - if l then - if #l > 100 then l = l:sub(1, 100) .. "..." end - msg = msg .. l .. "
    " - else - break - end - end - p:close() - end - - msg = msg .. "

    " - - m.message = msg - end -end - - -return m diff --git a/package/luci/applications/luci-app-wol/po/ca/wol.po b/package/luci/applications/luci-app-wol/po/ca/wol.po deleted file mode 100644 index 387b4717c0..0000000000 --- a/package/luci/applications/luci-app-wol/po/ca/wol.po +++ /dev/null @@ -1,61 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2014-07-01 06:15+0200\n" -"Last-Translator: Alex \n" -"Language-Team: none\n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Broadcast on all interfaces" -msgstr "Difon en totes les interfícies" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" -"Trieu el host per a despertar o introduïu una adreça MAC personalitzada per " -"a utilitzar" - -msgid "Host to wake up" -msgstr "Host per a despertar" - -msgid "Network interface to use" -msgstr "Interfície de xarxa per a utilitzar" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"A vegades, només una de les dues eines funciona. Si un dels falla, prova la " -"altra." - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Especifica la interfície en que s'envia el paquet WoL" - -msgid "Starting WoL utility:" -msgstr "Iniciant la utilitat WoL:" - -msgid "Wake on LAN" -msgstr "Despert en LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Despert en LAN és un mecanisme per a iniciar remotament ordinadors en la " -"xarxa local." - -msgid "Wake up host" -msgstr "Desperta al host" - -msgid "WoL program" -msgstr "Programa WoL" diff --git a/package/luci/applications/luci-app-wol/po/cs/wol.po b/package/luci/applications/luci-app-wol/po/cs/wol.po deleted file mode 100644 index 49488125e8..0000000000 --- a/package/luci/applications/luci-app-wol/po/cs/wol.po +++ /dev/null @@ -1,58 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2014-05-12 11:17+0200\n" -"Last-Translator: sairon \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Broadcast on all interfaces" -msgstr "Vysílat broadcastem na všech rozhraních" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Vyberte zařízení, které má být probuzeno, nebo zadejte jeho MAC adresu" - -msgid "Host to wake up" -msgstr "Adresa zařízení, které má být probuzeno" - -msgid "Network interface to use" -msgstr "Použité síťové rozhraní" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Může se stát, že pro dané cílové zařízení bude fungovat pouze jeden z " -"programů. Pokud první selže, vyzkoušejte další." - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Zde se nastaví síťové rozhraní, přes které budou zasílány WoL packety." - -msgid "Starting WoL utility:" -msgstr "Spouštím nástroj WoL:" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Funkce \"Wake on LAN\" umožňuje vzdáleně spouštět počítače v místní síti." - -msgid "Wake up host" -msgstr "Probudit zařízení" - -msgid "WoL program" -msgstr "Program provádějící WoL" diff --git a/package/luci/applications/luci-app-wol/po/de/wol.po b/package/luci/applications/luci-app-wol/po/de/wol.po deleted file mode 100644 index efbd122d44..0000000000 --- a/package/luci/applications/luci-app-wol/po/de/wol.po +++ /dev/null @@ -1,61 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2011-06-11 01:37+0200\n" -"Last-Translator: Jo-Philipp \n" -"Language-Team: none\n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Broadcast on all interfaces" -msgstr "Auf allen Schnittstellen senden" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" -"Zu startenden Rechner selektieren oder benutzerdefinierte MAC-Adresse angeben" - -msgid "Host to wake up" -msgstr "Anzuschaltender Rechner" - -msgid "Network interface to use" -msgstr "Verwendete Schnittstelle" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Manchmal funktioniert nur eines der beiden Programme. Wenn eines " -"fehlschlägt, versuchen Sie das Andere." - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" -"Selektiert die Netzwerkschnittstelle auf der das WoL-Paket versendet wird" - -msgid "Starting WoL utility:" -msgstr "Starte WoL-Programm:" - -msgid "Wake on LAN" -msgstr "Wake-on-LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Wake-on-LAN ist ein Mechanismus um Geräte im lokalen Netzwerk ferngesteuert " -"anzuschalten." - -msgid "Wake up host" -msgstr "Rechner anschalten" - -msgid "WoL program" -msgstr "WoL-Programm" diff --git a/package/luci/applications/luci-app-wol/po/el/wol.po b/package/luci/applications/luci-app-wol/po/el/wol.po deleted file mode 100644 index 422a51b3d7..0000000000 --- a/package/luci/applications/luci-app-wol/po/el/wol.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2010-04-19 00:29+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Broadcast on all interfaces" -msgstr "" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" - -msgid "Host to wake up" -msgstr "" - -msgid "Network interface to use" -msgstr "" - -msgid "Send to broadcast address" -msgstr "" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" - -msgid "Starting WoL utility:" -msgstr "" - -msgid "Wake on LAN" -msgstr "" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" - -msgid "Wake up host" -msgstr "" - -msgid "WoL program" -msgstr "" diff --git a/package/luci/applications/luci-app-wol/po/en/wol.po b/package/luci/applications/luci-app-wol/po/en/wol.po deleted file mode 100644 index 877ba34faa..0000000000 --- a/package/luci/applications/luci-app-wol/po/en/wol.po +++ /dev/null @@ -1,53 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Broadcast on all interfaces" -msgstr "Broadcast on all interfaces" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Choose the host to wake up or enter a custom MAC address to use" - -msgid "Host to wake up" -msgstr "Host to wake up" - -msgid "Network interface to use" -msgstr "Network interface to use" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Sometimes only one of both tools work. If one of fails, try the other one" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Specifies the interface the WoL packet is sent on" - -msgid "Starting WoL utility:" -msgstr "Starting WoL utility:" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." - -msgid "Wake up host" -msgstr "Wake up host" - -msgid "WoL program" -msgstr "WoL program" diff --git a/package/luci/applications/luci-app-wol/po/es/wol.po b/package/luci/applications/luci-app-wol/po/es/wol.po deleted file mode 100644 index e54ffdc781..0000000000 --- a/package/luci/applications/luci-app-wol/po/es/wol.po +++ /dev/null @@ -1,60 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2012-08-22 21:41+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: none\n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Broadcast on all interfaces" -msgstr "Propagar en todas las interfaces" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Elija la máquina a despertar o introduzca su dirección MAC" - -msgid "Host to wake up" -msgstr "Máquina a despertar" - -msgid "Network interface to use" -msgstr "Interfaz de red a utilizar" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"A veces, sólo se inicia una de las dos herramientas. Si una falla, intente " -"con la otra" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Especifica la interfaz donde se envían los paquetes WoL" - -msgid "Starting WoL utility:" -msgstr "Iniciando utilidad WoL:" - -# Wake on LAN es un término habitualmente utilizado en el español para referirse a esa misma función de encendido remoto a través de la red -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Wake on LAN permite arrancar ordenadores conectados en una red local de " -"forma remota." - -msgid "Wake up host" -msgstr "Despertar máquina" - -msgid "WoL program" -msgstr "Programa WoL" diff --git a/package/luci/applications/luci-app-wol/po/fr/wol.po b/package/luci/applications/luci-app-wol/po/fr/wol.po deleted file mode 100644 index 848690568c..0000000000 --- a/package/luci/applications/luci-app-wol/po/fr/wol.po +++ /dev/null @@ -1,60 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2011-11-23 22:22+0200\n" -"Last-Translator: fredb \n" -"Language-Team: French\n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Broadcast on all interfaces" -msgstr "Émettre sur toutes les interfaces" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Choisir l'hôte à réveiller ou entrer une adresse MAC à utiliser" - -msgid "Host to wake up" -msgstr "Hôte à réveiller" - -msgid "Network interface to use" -msgstr "Interface réseau à utiliser" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Parfois seul un des deux outils fonctionne. Si l'un échoue, essayez l'autre" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" -"Spécifie l'interface sur laquelle le paquet WoL est envoyé" - -msgid "Starting WoL utility:" -msgstr "Démarrer l'utilitaire WoL :" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Wake on LAN est un mécanisme pour démarrer à distance les ordinateurs du " -"réseau local." - -msgid "Wake up host" -msgstr "Réveiller l'hôte" - -msgid "WoL program" -msgstr "Programme WoL" diff --git a/package/luci/applications/luci-app-wol/po/he/wol.po b/package/luci/applications/luci-app-wol/po/he/wol.po deleted file mode 100644 index 422a51b3d7..0000000000 --- a/package/luci/applications/luci-app-wol/po/he/wol.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2010-04-19 00:29+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Broadcast on all interfaces" -msgstr "" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" - -msgid "Host to wake up" -msgstr "" - -msgid "Network interface to use" -msgstr "" - -msgid "Send to broadcast address" -msgstr "" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" - -msgid "Starting WoL utility:" -msgstr "" - -msgid "Wake on LAN" -msgstr "" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" - -msgid "Wake up host" -msgstr "" - -msgid "WoL program" -msgstr "" diff --git a/package/luci/applications/luci-app-wol/po/hu/wol.po b/package/luci/applications/luci-app-wol/po/hu/wol.po deleted file mode 100644 index 3895e92e79..0000000000 --- a/package/luci/applications/luci-app-wol/po/hu/wol.po +++ /dev/null @@ -1,62 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2012-04-06 10:42+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Broadcast on all interfaces" -msgstr "Szórás az összes interfészen" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" -"Válassza ki a felélesztendő gépet, vagy adja meg a haszálandó egyedi MAC " -"címet" - -msgid "Host to wake up" -msgstr "Felélesztendő gép" - -msgid "Network interface to use" -msgstr "Használandó interfész" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Néha csak az egyik eszköz működik. Ha valamelyik nem működik, próbálja ki a " -"másikat." - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" -"Megadja azt az interfészt amelyiken keresztül a WoL csomag kiküldésre kerül" - -msgid "Starting WoL utility:" -msgstr "WoL segédprogram elindítása:" - -msgid "Wake on LAN" -msgstr "Felélesztés hálózaton keresztül" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"A felélesztés hálózaton keresztül a helyi hálózatban lévő számítógépek " -"távoli elindítására szolgáló módszer." - -msgid "Wake up host" -msgstr "Gép felélesztése" - -msgid "WoL program" -msgstr "WoL program" diff --git a/package/luci/applications/luci-app-wol/po/it/wol.po b/package/luci/applications/luci-app-wol/po/it/wol.po deleted file mode 100644 index d0c35f497b..0000000000 --- a/package/luci/applications/luci-app-wol/po/it/wol.po +++ /dev/null @@ -1,59 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2013-02-03 14:01+0200\n" -"Last-Translator: Francesco <3gasas@gmail.com>\n" -"Language-Team: none\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Broadcast on all interfaces" -msgstr "Broadcast su tutte le interfacce" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Scegli l'host da \"svegliare\" o inserisci il MAC address da usare" - -msgid "Host to wake up" -msgstr "Host da \"svegliare\"" - -msgid "Network interface to use" -msgstr "Interfaccia di rete da usare" - -msgid "Send to broadcast address" -msgstr "Manda a indirizzo di broadcast" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"A volte solo uno dei due tools funziona. Se uno fallisce, tenta di usare il " -"secondo" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Specifica l'interfaccia su cui il pacchetto \"magico\" WoL è inviato" - -msgid "Starting WoL utility:" -msgstr "Avvia l'utility WoL:" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Wake on LAN è un meccanismo che permette di avviare da remoto i computer " -"nella rete locale" - -msgid "Wake up host" -msgstr "Sveglia Host" - -msgid "WoL program" -msgstr "Programma WoL" diff --git a/package/luci/applications/luci-app-wol/po/ja/wol.po b/package/luci/applications/luci-app-wol/po/ja/wol.po deleted file mode 100644 index bedcbbfc4f..0000000000 --- a/package/luci/applications/luci-app-wol/po/ja/wol.po +++ /dev/null @@ -1,58 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2017-01-27 21:03+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 1.8.11\n" - -msgid "Broadcast on all interfaces" -msgstr "全てのインターフェースへブロードキャスト" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "起動するホストのMACアドレスを選択または入力してください" - -msgid "Host to wake up" -msgstr "起動するホストを指定" - -msgid "Network interface to use" -msgstr "使用するネットワークインターフェース" - -msgid "Send to broadcast address" -msgstr "ブロードキャスト アドレスに送信する" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"片方のツールのみが動作する場合があるため、片方が失敗する場合は別のツールを" -"試してみてください。" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "WoLパケットを送信するインタフェースを指定" - -msgid "Starting WoL utility:" -msgstr "WoLユーティリティを起動:" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Wake on LANはローカルネットワーク内のコンピュータを遠隔で起動させることがで" -"きる機能です。" - -msgid "Wake up host" -msgstr "ホストを起動" - -msgid "WoL program" -msgstr "WoLプログラム" diff --git a/package/luci/applications/luci-app-wol/po/ms/wol.po b/package/luci/applications/luci-app-wol/po/ms/wol.po deleted file mode 100644 index 47c335d2e9..0000000000 --- a/package/luci/applications/luci-app-wol/po/ms/wol.po +++ /dev/null @@ -1,51 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2010-04-19 00:29+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Broadcast on all interfaces" -msgstr "" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" - -msgid "Host to wake up" -msgstr "" - -msgid "Network interface to use" -msgstr "" - -msgid "Send to broadcast address" -msgstr "" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" - -msgid "Starting WoL utility:" -msgstr "" - -msgid "Wake on LAN" -msgstr "" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" - -msgid "Wake up host" -msgstr "" - -msgid "WoL program" -msgstr "" diff --git a/package/luci/applications/luci-app-wol/po/no/wol.po b/package/luci/applications/luci-app-wol/po/no/wol.po deleted file mode 100644 index 6dd0c0ea61..0000000000 --- a/package/luci/applications/luci-app-wol/po/no/wol.po +++ /dev/null @@ -1,50 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "Broadcast on all interfaces" -msgstr "Send på alle grensesnitt" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" -"Velg hvilken vert som skal startes opp, eller angi en MAC adresse som skal " -"brukes" - -msgid "Host to wake up" -msgstr "Vert som skal startes opp" - -msgid "Network interface to use" -msgstr "Nettverksgrensesnitt" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Noen ganger virker bare ett av disse verktøyene. Hvis ett av de ikke lykkes " -"med å starte opp verten kan du prøve det andre." - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Angir grensesnittet som WoL pakken blir sendt ut på" - -msgid "Starting WoL utility:" -msgstr "Starter WoL:" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Wake on LAN er en mekanisme for å starte opp datamaskiner i det lokale " -"nettverket." - -msgid "Wake up host" -msgstr "Start vert" - -msgid "WoL program" -msgstr "WoL programm" diff --git a/package/luci/applications/luci-app-wol/po/pl/wol.po b/package/luci/applications/luci-app-wol/po/pl/wol.po deleted file mode 100644 index 3533e45745..0000000000 --- a/package/luci/applications/luci-app-wol/po/pl/wol.po +++ /dev/null @@ -1,60 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2011-08-25 19:04+0200\n" -"Last-Translator: Staszek \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Broadcast on all interfaces" -msgstr "Rozgłaszaj na wszystkie interfejsy" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Wybierz hosta z listy lub podaj adres MAC maszyny do wybudzenia" - -msgid "Host to wake up" -msgstr "Host do wybudzenia" - -msgid "Network interface to use" -msgstr "Użyty interfejs sieciowy" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Czasem działa tylko jedno z narzędzi. Jeżeli jedno z nich nie zadziała, " -"proszę użyć drugiego." - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Definiuje interfejs, na który będzie wysłany pakiet WoL" - -msgid "Starting WoL utility:" -msgstr "Uruchamianie narzędzia WoL:" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"\"Wake on LAN\" to mechanizm służący do zdalnego włączania komputerów w " -"sieci lokalnej." - -msgid "Wake up host" -msgstr "Wybudź hosta" - -msgid "WoL program" -msgstr "Narzędzie WoL" diff --git a/package/luci/applications/luci-app-wol/po/pt-br/wol.po b/package/luci/applications/luci-app-wol/po/pt-br/wol.po deleted file mode 100644 index 783ec0bc0d..0000000000 --- a/package/luci/applications/luci-app-wol/po/pt-br/wol.po +++ /dev/null @@ -1,58 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2017-02-20 18:13-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language-Team: none\n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" - -msgid "Broadcast on all interfaces" -msgstr "Broadcast em todas as interfaces" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Escolha o computador para acordar ou entre com um endereço MAC" - -msgid "Host to wake up" -msgstr "Computador para acordar" - -msgid "Network interface to use" -msgstr "Interfaces de rede para usar" - -msgid "Send to broadcast address" -msgstr "Enviar para o endereço de broadcast" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Algumas vezes, somente uma das duas ferramentas funciona. Se uma delas " -"falhar, tente a outra" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Especifica a interface para onde os pacotes de WoL serão enviados" - -msgid "Starting WoL utility:" -msgstr "Iniciando utilitário WoL:" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Wake on LAN é um mecanismo para acordar/ligar remotamente computadores na " -"rede local." - -msgid "Wake up host" -msgstr "Acorda um computador" - -msgid "WoL program" -msgstr "Programa WoL" diff --git a/package/luci/applications/luci-app-wol/po/pt/wol.po b/package/luci/applications/luci-app-wol/po/pt/wol.po deleted file mode 100644 index 1cce43086e..0000000000 --- a/package/luci/applications/luci-app-wol/po/pt/wol.po +++ /dev/null @@ -1,57 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2013-05-30 22:54+0200\n" -"Last-Translator: joao.f.vieira \n" -"Language-Team: none\n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Broadcast on all interfaces" -msgstr "Broadcast em todas as interfaces" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Escolha ao host a acordar ou escreva um MAC personalizado a ser usado" - -msgid "Host to wake up" -msgstr "Host a acordar" - -msgid "Network interface to use" -msgstr "Interface de rede a usar" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "Às vezes só uma das ferramentas funciona. Se uma falhar, tente a outra" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Especifica a interface pela qual é enviado o pacota WoL" - -msgid "Starting WoL utility:" -msgstr "A iniciar a ferramenta WoL" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Wake on LAN é um mecanismo para remotamente iniciar computadores numa rede " -"local." - -msgid "Wake up host" -msgstr "Acordar host" - -msgid "WoL program" -msgstr "Programa de WoL" diff --git a/package/luci/applications/luci-app-wol/po/ro/wol.po b/package/luci/applications/luci-app-wol/po/ro/wol.po deleted file mode 100644 index 71a06975cc..0000000000 --- a/package/luci/applications/luci-app-wol/po/ro/wol.po +++ /dev/null @@ -1,60 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2011-10-07 16:47+0200\n" -"Last-Translator: Daniel \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "Broadcast on all interfaces" -msgstr "Broadcast pe toate interfetele" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Alege statie pentru \"trezire\" sau introdu o adresa MAC de folosit" - -msgid "Host to wake up" -msgstr "Statie pentru \"trezire\"" - -msgid "Network interface to use" -msgstr "Interfata de retea pentru utilizare" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Uneori doar una dintre metode functioneaza. Daca se intampla, incearc-o pe " -"cealalta" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Specifica interfata prin care pachetele WoL sunt trimise" - -msgid "Starting WoL utility:" -msgstr "Pornire utilitar WoL:" - -msgid "Wake on LAN" -msgstr "Activarea pe LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Activarea pe LAN e un mecanism pentru a porni de la distanta computere de pe " -"retea." - -msgid "Wake up host" -msgstr "Statie de \"trezire\"" - -msgid "WoL program" -msgstr "Program WoL" diff --git a/package/luci/applications/luci-app-wol/po/ru/wol.po b/package/luci/applications/luci-app-wol/po/ru/wol.po deleted file mode 100644 index 9d3e08d563..0000000000 --- a/package/luci/applications/luci-app-wol/po/ru/wol.po +++ /dev/null @@ -1,62 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: LuCI: wol\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2012-08-15 12:07+0300\n" -"Last-Translator: Roman A. aka BasicXP \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.4\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "Broadcast on all interfaces" -msgstr "Использовать широковещательную передачу на все интерфейсы" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "Выберите хост, который необходимо разбудить, или введите его MAC-адрес" - -msgid "Host to wake up" -msgstr "Хост, который необходимо разбудить" - -msgid "Network interface to use" -msgstr "Используемый сетевой интерфейс" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Иногда только одна из двух утилит работает. В случае ошибки, попробуйте " -"использовать другую" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Определяет интерфейс, по которому будут посланы пакеты WoL" - -msgid "Starting WoL utility:" -msgstr "Запуск WoL утилиты:" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Пробуждение по LAN (Wake on LAN, WoL) - технология, позволяющая удалённо " -"«разбудить» (включить) компьютер посредством отправки через локальную сеть " -"специальным образом сформированного пакета данных." - -msgid "Wake up host" -msgstr "Разбудить хост" - -msgid "WoL program" -msgstr "Программа WoL" diff --git a/package/luci/applications/luci-app-wol/po/sk/wol.po b/package/luci/applications/luci-app-wol/po/sk/wol.po deleted file mode 100644 index bdaf4e70c2..0000000000 --- a/package/luci/applications/luci-app-wol/po/sk/wol.po +++ /dev/null @@ -1,47 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "Broadcast on all interfaces" -msgstr "" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" - -msgid "Host to wake up" -msgstr "" - -msgid "Network interface to use" -msgstr "" - -msgid "Send to broadcast address" -msgstr "" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" - -msgid "Starting WoL utility:" -msgstr "" - -msgid "Wake on LAN" -msgstr "" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" - -msgid "Wake up host" -msgstr "" - -msgid "WoL program" -msgstr "" diff --git a/package/luci/applications/luci-app-wol/po/sv/wol.po b/package/luci/applications/luci-app-wol/po/sv/wol.po deleted file mode 100644 index 923d4fdbac..0000000000 --- a/package/luci/applications/luci-app-wol/po/sv/wol.po +++ /dev/null @@ -1,54 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "Broadcast on all interfaces" -msgstr "Sänd i alla gränssnitt" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" -"Välj värden som ska väckas upp eller fyll i en anpassad MAC-adress att " -"använda" - -msgid "Host to wake up" -msgstr "Värd att väcka upp" - -msgid "Network interface to use" -msgstr "Nätverksgränssnitt att använda" - -msgid "Send to broadcast address" -msgstr "Skicka till sändningsadress" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Ibland så fungerar bara en av de två verktygen. Prova med den andra om den " -"första misslyckades" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Anger gränssnittet som fjärrstartspaketet skickas med" - -msgid "Starting WoL utility:" -msgstr "Startar hjälpprogrammet för fjärrstyrning av uppstart:" - -msgid "Wake on LAN" -msgstr "Fjärrstyrning av uppstart" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Fjärrstyrning av uppstart är en mekanism för att starta upp datorer via " -"fjärrstyrning i det lokala nätverket." - -msgid "Wake up host" -msgstr "Väck upp värden" - -msgid "WoL program" -msgstr "Program för fjärrstart" diff --git a/package/luci/applications/luci-app-wol/po/templates/wol.pot b/package/luci/applications/luci-app-wol/po/templates/wol.pot deleted file mode 100644 index 9593dea650..0000000000 --- a/package/luci/applications/luci-app-wol/po/templates/wol.pot +++ /dev/null @@ -1,40 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Broadcast on all interfaces" -msgstr "" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" - -msgid "Host to wake up" -msgstr "" - -msgid "Network interface to use" -msgstr "" - -msgid "Send to broadcast address" -msgstr "" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" - -msgid "Starting WoL utility:" -msgstr "" - -msgid "Wake on LAN" -msgstr "" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" - -msgid "Wake up host" -msgstr "" - -msgid "WoL program" -msgstr "" diff --git a/package/luci/applications/luci-app-wol/po/tr/wol.po b/package/luci/applications/luci-app-wol/po/tr/wol.po deleted file mode 100644 index 684a9ae5f3..0000000000 --- a/package/luci/applications/luci-app-wol/po/tr/wol.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2010-04-19 00:29+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Broadcast on all interfaces" -msgstr "" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" - -msgid "Host to wake up" -msgstr "" - -msgid "Network interface to use" -msgstr "" - -msgid "Send to broadcast address" -msgstr "" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" - -msgid "Starting WoL utility:" -msgstr "" - -msgid "Wake on LAN" -msgstr "" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" - -msgid "Wake up host" -msgstr "" - -msgid "WoL program" -msgstr "" diff --git a/package/luci/applications/luci-app-wol/po/uk/wol.po b/package/luci/applications/luci-app-wol/po/uk/wol.po deleted file mode 100644 index 703cd370ff..0000000000 --- a/package/luci/applications/luci-app-wol/po/uk/wol.po +++ /dev/null @@ -1,62 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2013-05-26 19:00+0200\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "Broadcast on all interfaces" -msgstr "Широкомовна трансляція на всіх інтерфейсах" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" -"Виберіть комп'ютер, який необхідно розбудити або введіть користувацьку MAC-" -"адресу" - -msgid "Host to wake up" -msgstr "Комп'ютер, який необхідно розбудити" - -msgid "Network interface to use" -msgstr "Використовувати мережевий інтерфейс" - -msgid "Send to broadcast address" -msgstr "" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" -"Іноді працює тільки одна з цих двох утиліт. Якщо одна з них не працює, " -"спробуйте іншу." - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "Визначає інтерфейс, яким буде надіслано пакет WoL" - -msgid "Starting WoL utility:" -msgstr "Запуск утиліти WoL:" - -msgid "Wake on LAN" -msgstr "Wake on LAN" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" -"Пробудження через LAN (Wake on LAN) є технологією, що дає змогу віддалено " -"\"будити\" (вмикати) комп'ютери у локальній мережі." - -msgid "Wake up host" -msgstr "Розбудити комп'ютер" - -msgid "WoL program" -msgstr "Программа WoL" diff --git a/package/luci/applications/luci-app-wol/po/vi/wol.po b/package/luci/applications/luci-app-wol/po/vi/wol.po deleted file mode 100644 index 684a9ae5f3..0000000000 --- a/package/luci/applications/luci-app-wol/po/vi/wol.po +++ /dev/null @@ -1,52 +0,0 @@ -# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2010-04-19 00:29+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Broadcast on all interfaces" -msgstr "" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "" - -msgid "Host to wake up" -msgstr "" - -msgid "Network interface to use" -msgstr "" - -msgid "Send to broadcast address" -msgstr "" - -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "" - -msgid "Starting WoL utility:" -msgstr "" - -msgid "Wake on LAN" -msgstr "" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "" - -msgid "Wake up host" -msgstr "" - -msgid "WoL program" -msgstr "" diff --git a/package/luci/applications/luci-app-wol/po/zh-cn/wol.po b/package/luci/applications/luci-app-wol/po/zh-cn/wol.po deleted file mode 100644 index 3c66a16b0c..0000000000 --- a/package/luci/applications/luci-app-wol/po/zh-cn/wol.po +++ /dev/null @@ -1,56 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2017-10-28 16:44+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \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: Gtranslator 2.91.7\n" - -msgid "Broadcast on all interfaces" -msgstr "向所有接口广播" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "选择要唤醒的主机,或者输入自定义 MAC 地址" - -msgid "Host to wake up" -msgstr "选择要唤醒的主机" - -msgid "Network interface to use" -msgstr "选择使用的网络接口" - -msgid "Send to broadcast address" -msgstr "发送到广播地址" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "有时只有一个工具生效。如果其中一个失效,请尝试另一个" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "限定将发送网络唤醒数据包的接口" - -msgid "Starting WoL utility:" -msgstr "正在启动网络唤醒工具:" - -msgid "Wake on LAN" -msgstr "网络唤醒" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "网络唤醒是一个远程启动本地网络内计算机的机制。" - -msgid "Wake up host" -msgstr "唤醒主机" - -msgid "WoL program" -msgstr "网络唤醒程序" diff --git a/package/luci/applications/luci-app-wol/po/zh-tw/wol.po b/package/luci/applications/luci-app-wol/po/zh-tw/wol.po deleted file mode 100644 index 3ef8ea2e2c..0000000000 --- a/package/luci/applications/luci-app-wol/po/zh-tw/wol.po +++ /dev/null @@ -1,56 +0,0 @@ -# -# Yangfl , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-19 00:29+0200\n" -"PO-Revision-Date: 2017-10-28 16:44+0800\n" -"Last-Translator: Yangfl \n" -"Language-Team: \n" -"Language: zh_TW\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: Gtranslator 2.91.7\n" - -msgid "Broadcast on all interfaces" -msgstr "向所有介面廣播" - -msgid "Choose the host to wake up or enter a custom MAC address to use" -msgstr "選擇要喚醒的主機,或者輸入自定義 MAC 位址" - -msgid "Host to wake up" -msgstr "選擇要喚醒的主機" - -msgid "Network interface to use" -msgstr "選擇使用的網路介面" - -msgid "Send to broadcast address" -msgstr "傳送到廣播位址" - -#, fuzzy -msgid "" -"Sometimes only one of the two tools works. If one fails, try the other one" -msgstr "有時只有一個工具生效。如果其中一個失效,請嘗試另一個" - -msgid "Specifies the interface the WoL packet is sent on" -msgstr "限定將傳送網路喚醒資料包的介面" - -msgid "Starting WoL utility:" -msgstr "正在啟動網路喚醒工具:" - -msgid "Wake on LAN" -msgstr "網路喚醒" - -msgid "" -"Wake on LAN is a mechanism to remotely boot computers in the local network." -msgstr "網路喚醒是一個遠端啟動本地網路內計算機的機制。" - -msgid "Wake up host" -msgstr "喚醒主機" - -msgid "WoL program" -msgstr "網路喚醒程式" diff --git a/package/luci/build/i18n-init.sh b/package/luci/build/i18n-init.sh deleted file mode 100755 index b20fbc3347..0000000000 --- a/package/luci/build/i18n-init.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -PATTERN=$1 -SCM= - -[ -d .svn ] && SCM="svn" -git=$( which git 2>/dev/null ) -[ "$git" ] && "$git" status >/dev/null && SCM="git" - -[ -z "$SCM" ] && { - echo "Unsupported SCM tool" >&2 - exit 1 -} - -[ -z "$PATTERN" ] && PATTERN="*.pot" - -for lang in $(cd po; echo ?? ??_??); do - for file in $(cd po/templates; echo $PATTERN); do - if [ -f po/templates/$file -a ! -f "po/$lang/${file%.pot}.po" ]; then - msginit --no-translator -l "$lang" -i "po/templates/$file" -o "po/$lang/${file%.pot}.po" - $SCM add "po/$lang/${file%.pot}.po" - fi - done -done diff --git a/package/luci/build/i18n-po2lua.pl b/package/luci/build/i18n-po2lua.pl deleted file mode 100755 index 5129055ffb..0000000000 --- a/package/luci/build/i18n-po2lua.pl +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/perl - -@ARGV == 2 || die "Usage: $0 \n"; - -my $source_dir = shift @ARGV; -my $target_dir = shift @ARGV; - -if( ! -d $target_dir ) -{ - system('mkdir', '-p', $target_dir); -} - -if( open F, "find $source_dir -type f -name '*.po' |" ) -{ - while( chomp( my $file = readline F ) ) - { - my ( $lang, $basename ) = $file =~ m{.+/(\w+)/([^/]+)\.po$}; - $lang = lc $lang; - $lang =~ s/_/-/g; - - printf "Generating %-40s ", "$target_dir/$basename.$lang.lmo"; - system("./build/po2lmo", $file, "$target_dir/$basename.$lang.lmo"); - print ( -f "$target_dir/$basename.$lang.lmo" ? "done\n" : "empty\n" ); - } - - close F; -} diff --git a/package/luci/build/i18n-scan.pl b/package/luci/build/i18n-scan.pl deleted file mode 100755 index 899d90d22c..0000000000 --- a/package/luci/build/i18n-scan.pl +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; -use Text::Balanced qw(extract_bracketed extract_delimited extract_tagged); - -@ARGV >= 1 || die "Usage: $0 \n"; - - -my %stringtable; - -sub dec_lua_str -{ - my $s = shift; - $s =~ s/[\s\n]+/ /g; - $s =~ s/\\n/\n/g; - $s =~ s/\\t/\t/g; - $s =~ s/\\(.)/$1/g; - $s =~ s/^ //; - $s =~ s/ $//; - return $s; -} - -sub dec_tpl_str -{ - my $s = shift; - $s =~ s/-$//; - $s =~ s/[\s\n]+/ /g; - $s =~ s/^ //; - $s =~ s/ $//; - $s =~ s/\\/\\\\/g; - return $s; -} - - -if( open F, "find @ARGV -type f '(' -name '*.htm' -o -name '*.lua' ')' |" ) -{ - while( defined( my $file = readline F ) ) - { - chomp $file; - - if( open S, "< $file" ) - { - local $/ = undef; - my $raw = ; - close S; - - - my $text = $raw; - - while( $text =~ s/ ^ .*? (?:translate|translatef|i18n|_) [\n\s]* \( /(/sgx ) - { - ( my $code, $text ) = extract_bracketed($text, q{('")}); - - $code =~ s/\\\n/ /g; - $code =~ s/^\([\n\s]*//; - $code =~ s/[\n\s]*\)$//; - - my $res = ""; - my $sub = ""; - - if( $code =~ /^['"]/ ) - { - while( defined $sub ) - { - ( $sub, $code ) = extract_delimited($code, q{'"}, q{\s*(?:\.\.\s*)?}); - - if( defined $sub && length($sub) > 2 ) - { - $res .= substr $sub, 1, length($sub) - 2; - } - else - { - undef $sub; - } - } - } - elsif( $code =~ /^(\[=*\[)/ ) - { - my $stag = quotemeta $1; - my $etag = $stag; - $etag =~ s/\[/]/g; - - ( $res ) = extract_tagged($code, $stag, $etag); - - $res =~ s/^$stag//; - $res =~ s/$etag$//; - } - - $res = dec_lua_str($res); - $stringtable{$res}++ if $res; - } - - - $text = $raw; - - while( $text =~ s/ ^ .*? <% -? [:_] /<%/sgx ) - { - ( my $code, $text ) = extract_tagged($text, '<%', '%>'); - - if( defined $code ) - { - $code = dec_tpl_str(substr $code, 2, length($code) - 4); - $stringtable{$code}++; - } - } - } - } - - close F; -} - - -if( open C, "| msgcat -" ) -{ - printf C "msgid \"\"\nmsgstr \"Content-Type: text/plain; charset=UTF-8\"\n\n"; - - foreach my $key ( sort keys %stringtable ) - { - if( length $key ) - { - $key =~ s/"/\\"/g; - printf C "msgid \"%s\"\nmsgstr \"\"\n\n", $key; - } - } - - close C; -} diff --git a/package/luci/build/i18n-sync.sh b/package/luci/build/i18n-sync.sh deleted file mode 100755 index d4f9666585..0000000000 --- a/package/luci/build/i18n-sync.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -[ -d ./build ] || { - echo "Execute as ./build/i18n-sync.sh" >&2 - exit 1 -} - -./build/mkbasepot.sh - -find . -name '*.pot' -and -not -name base.pot -and -not -name rrdtool.pot | \ - while read path; do - dir="${path%/po/templates/*}" - echo -n "Updating ${path#./} ... " - ./build/i18n-scan.pl "$dir" > "$path" - echo "done" - done - -./build/i18n-update.pl diff --git a/package/luci/build/i18n-update.pl b/package/luci/build/i18n-update.pl deleted file mode 100755 index c82b4fe3dd..0000000000 --- a/package/luci/build/i18n-update.pl +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/perl - -@ARGV <= 2 || die "Usage: $0 [] []\n"; - -my $source = shift @ARGV; -my $pattern = shift @ARGV || '*.po'; - -sub read_header -{ - my $file = shift || return; - local $/; - - open P, "< $file" || die "open(): $!"; - my $data = readline P; - close P; - - $data =~ / - ^ ( - msgid \s "" \n - msgstr \s "" \n - (?: " [^\n]+ " \n )+ - \n ) - /mx; - - return $1; -} - -sub write_header -{ - my $file = shift || return; - my $head = shift || return; - local $/; - - open P, "< $file" || die "open(): $!"; - my $data = readline P; - close P; - - $data =~ s/ - ^ ( - msgid \s "" \n - msgstr \s "" \n - (?: " [^\n]+ " \n )+ - \n ) - /$head/mx; - - open P, "> $file" || die "open(): $!"; - print P $data; - close P; -} - -my @dirs; - -if( ! $source ) -{ - @dirs = glob("./*/*/po/"); -} -else -{ - @dirs = ( $source ); -} - -foreach my $dir (@dirs) -{ - if( open F, "find $dir -type f -name '$pattern' |" ) - { - while( chomp( my $file = readline F ) ) - { - my ( $basename ) = $file =~ m{.+/([^/]+)\.po$}; - - if( -f "$dir/templates/$basename.pot" ) - { - my $head = read_header($file); - - printf "Updating %-40s", $file; - system("msgmerge", "-U", "-N", $file, "$dir/templates/$basename.pot"); - - write_header($file, $head); - } - } - - close F; - } -} diff --git a/package/luci/build/luadoc/doc.lua b/package/luci/build/luadoc/doc.lua deleted file mode 100755 index 383dde29cd..0000000000 --- a/package/luci/build/luadoc/doc.lua +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env lua -------------------------------------------------------------------------------- --- LuaDoc launcher. --- @release $Id: luadoc.lua.in,v 1.1 2008/02/17 06:42:51 jasonsantos Exp $ -------------------------------------------------------------------------------- - ---local source = debug.getinfo(1).source or "" ---local mypath = source:match("@(.+)/[^/]+") - ---package.path = package.path .. ";" .. mypath .. "/?.lua;" .. mypath .. "/?/init.lua" - -require "luadoc.init" - -------------------------------------------------------------------------------- --- Print version number. - -local function print_version () - print (string.format("%s\n%s\n%s", - luadoc._VERSION, - luadoc._DESCRIPTION, - luadoc._COPYRIGHT)) -end - -------------------------------------------------------------------------------- --- Print usage message. - -local function print_help () - print ("Usage: "..arg[0]..[[ [options|files] -Generate documentation from files. Available options are: - -d path output directory path - -t path template directory path - -h, --help print this help and exit - --noindexpage do not generate global index page - --nofiles do not generate documentation for files - --nomodules do not generate documentation for modules - --doclet doclet_module doclet module to generate output - --taglet taglet_module taglet module to parse input code - -q, --quiet suppress all normal output - -v, --version print version information]]) -end - -local function off_messages (arg, i, options) - options.verbose = nil -end - -------------------------------------------------------------------------------- --- Process options. TODO: use getopts. --- @class table --- @name OPTIONS - -local OPTIONS = { - d = function (arg, i, options) - local dir = arg[i+1] - if string.sub (dir, -2) ~= "/" then - dir = dir..'/' - end - options.output_dir = dir - return 1 - end, - t = function (arg, i, options) - local dir = arg[i+1] - if string.sub (dir, -2) ~= "/" then - dir = dir..'/' - end - options.template_dir = dir - return 1 - end, - h = print_help, - help = print_help, - q = off_messages, - quiet = off_messages, - v = print_version, - version = print_version, - doclet = function (arg, i, options) - options.doclet = arg[i+1] - return 1 - end, - taglet = function (arg, i, options) - options.taglet = arg[i+1] - return 1 - end, -} - -------------------------------------------------------------------------------- - -local function process_options (arg) - local files = {} - local options = require "luadoc.config" - local i = 1 - while i <= #arg do - local argi = arg[i] - if string.sub (argi, 1, 1) ~= '-' then - table.insert (files, argi) - else - local opt = string.sub (argi, 2) - if string.sub (opt, 1, 1) == '-' then - opt = string.gsub (opt, "%-", "") - end - if OPTIONS[opt] then - if OPTIONS[opt] (arg, i, options) then - i = i + 1 - end - else - options[opt] = 1 - end - end - i = i+1 - end - return files, options -end - -------------------------------------------------------------------------------- --- Main function. Process command-line parameters and call luadoc processor. - -function main (arg) - -- Process options - local argc = #arg - if argc < 1 then - print_help () - return - end - local files, options = process_options (arg) - return luadoc.main(files, options) -end - -main(arg) diff --git a/package/luci/build/luadoc/luadoc/config.lua b/package/luci/build/luadoc/luadoc/config.lua deleted file mode 100644 index 9e4b9de3c5..0000000000 --- a/package/luci/build/luadoc/luadoc/config.lua +++ /dev/null @@ -1,34 +0,0 @@ -------------------------------------------------------------------------------- --- LuaDoc configuration file. This file contains the default options for --- luadoc operation. These options can be overriden by the command line tool --- @see luadoc.print_help --- @release $Id: config.lua,v 1.6 2007/04/18 14:28:39 tomas Exp $ -------------------------------------------------------------------------------- - -module "luadoc.config" - -------------------------------------------------------------------------------- --- Default options --- @class table --- @name default_options --- @field output_dir default output directory for generated documentation, used --- by several doclets --- @field taglet parser used to analyze source code input --- @field doclet documentation generator --- @field template_dir directory with documentation templates, used by the html --- doclet --- @field verbose command line tool configuration to output processing --- information - -local default_options = { - output_dir = "", - taglet = "luadoc.taglet.standard", - doclet = "luadoc.doclet.html", - -- TODO: find a way to define doclet specific options - template_dir = "luadoc/doclet/html/", - nomodules = false, - nofiles = false, - verbose = true, -} - -return default_options diff --git a/package/luci/build/luadoc/luadoc/doclet/debug.lua b/package/luci/build/luadoc/luadoc/doclet/debug.lua deleted file mode 100644 index 0b75f84cb9..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/debug.lua +++ /dev/null @@ -1,46 +0,0 @@ ------------------------------------------------------------------ --- LuaDoc debugging facilities. --- @release $Id: debug.lua,v 1.3 2007/04/18 14:28:39 tomas Exp $ ------------------------------------------------------------------ - -module "luadoc.doclet.debug" - -function printline() - print(string.rep('-', 79)) -end - ------------------------------------------------------------------ --- Print debug information about document --- @param doc Table with the structured documentation. - -function start (doc) - print("Files:") - for _, filepath in ipairs(doc.files) do - print('\t', filepath) - end - printline() - - print("Modules:") - for _, modulename in ipairs(doc.modules) do - print('\t', modulename) - end - printline() - - for i, v in pairs(doc.files) do - print('\t', i, v) - end - printline() - for i, v in pairs(doc.files[doc.files[1]]) do - print(i, v) - end - - printline() - for i, v in pairs(doc.files[doc.files[1]].doc[1]) do - print(i, v) - end - printline() - print("Params") - for i, v in pairs(doc.files[doc.files[1]].doc[1].param) do - print(i, v) - end -end diff --git a/package/luci/build/luadoc/luadoc/doclet/formatter.lua b/package/luci/build/luadoc/luadoc/doclet/formatter.lua deleted file mode 100644 index 2d725389c9..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/formatter.lua +++ /dev/null @@ -1,84 +0,0 @@ -------------------------------------------------------------------------------- --- Doclet to format source code according to LuaDoc standard tags. This doclet --- (re)write .lua files adding missing standard tags. Texts are formatted to --- 80 columns and function parameters are added based on code analysis. --- --- @release $Id: formatter.lua,v 1.5 2007/04/18 14:28:39 tomas Exp $ -------------------------------------------------------------------------------- - -local util = require "luadoc.util" -local assert, ipairs, pairs, type = assert, ipairs, pairs, type -local string = require"string" -local table = require"table" - -module "luadoc.doclet.formatter" - -options = { - output_dir = "./", -} - -------------------------------------------------------------------------------- --- Assembly the output filename for an input file. --- TODO: change the name of this function -function out_file (filename) - local h = filename - h = options.output_dir..h - return h -end - -------------------------------------------------------------------------------- --- Generate a new lua file for each input lua file. If the user does not --- specify a different output directory input files will be rewritten. --- @param doc documentation table - -function start (doc) - local todo = "" - - -- Process files - for i, file_doc in ipairs(doc.files) do - -- assembly the filename - local filename = out_file(file_doc.name) - luadoc.logger:info(string.format("generating file `%s'", filename)) - - -- TODO: confirm file overwrite - local f = posix.open(filename, "w") - assert(f, string.format("could not open `%s' for writing", filename)) - - for _, block in ipairs(file_doc.doc) do - - -- write reorganized comments - f:write(string.rep("-", 80).."\n") - - -- description - f:write(util.comment(util.wrap(block.description, 77))) - f:write("\n") - - if block.class == "function" then - -- parameters - table.foreachi(block.param, function (_, param_name) - f:write(util.comment(util.wrap(string.format("@param %s %s", param_name, block.param[param_name] or todo), 77))) - f:write("\n") - end) - - -- return - if type(block.ret) == "table" then - table.foreachi(block.ret, function (_, ret) - f:write(util.comment(util.wrap(string.format("@return %s", ret), 77)).."\n") - end) - else - f:write(util.comment(util.wrap(string.format("@return %s", block.ret or todo), 77)).."\n") - end - end - - -- TODO: usage - -- TODO: see - - -- write code - for _, line in ipairs(block.code) do - f:write(line.."\n") - end - end - - f:close() - end -end diff --git a/package/luci/build/luadoc/luadoc/doclet/html.lua b/package/luci/build/luadoc/luadoc/doclet/html.lua deleted file mode 100644 index e77fb74417..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/html.lua +++ /dev/null @@ -1,275 +0,0 @@ -------------------------------------------------------------------------------- --- Doclet that generates HTML output. This doclet generates a set of html files --- based on a group of templates. The main templates are: ---
      ---
    • index.lp: index of modules and files;
    • ---
    • file.lp: documentation for a lua file;
    • ---
    • module.lp: documentation for a lua module;
    • ---
    • function.lp: documentation for a lua function. This is a --- sub-template used by the others.
    • ---
    --- --- @release $Id: html.lua,v 1.29 2007/12/21 17:50:48 tomas Exp $ -------------------------------------------------------------------------------- - -local assert, getfenv, ipairs, loadstring, pairs, setfenv, tostring, tonumber, type = assert, getfenv, ipairs, loadstring, pairs, setfenv, tostring, tonumber, type -local io = require"io" -local posix = require "nixio.fs" -local lp = require "luadoc.lp" -local luadoc = require"luadoc" -local package = package -local string = require"string" -local table = require"table" - -module "luadoc.doclet.html" - -------------------------------------------------------------------------------- --- Looks for a file `name' in given path. Removed from compat-5.1 --- @param path String with the path. --- @param name String with the name to look for. --- @return String with the complete path of the file found --- or nil in case the file is not found. - -local function search (path, name) - for c in string.gfind(path, "[^;]+") do - c = string.gsub(c, "%?", name) - local f = io.open(c) - if f then -- file exist? - f:close() - return c - end - end - return nil -- file not found -end - -------------------------------------------------------------------------------- --- Include the result of a lp template into the current stream. - -function include (template, env) - -- template_dir is relative to package.path - local templatepath = options.template_dir .. template - - -- search using package.path (modified to search .lp instead of .lua - local search_path = string.gsub(package.path, "%.lua", "") - local templatepath = search(search_path, templatepath) - assert(templatepath, string.format("template `%s' not found", template)) - - env = env or {} - env.table = table - env.io = io - env.lp = lp - env.ipairs = ipairs - env.tonumber = tonumber - env.tostring = tostring - env.type = type - env.luadoc = luadoc - env.options = options - - return lp.include(templatepath, env) -end - -------------------------------------------------------------------------------- --- Returns a link to a html file, appending "../" to the link to make it right. --- @param html Name of the html file to link to --- @return link to the html file - -function link (html, from) - local h = html - from = from or "" - string.gsub(from, "/", function () h = "../" .. h end) - return h -end - -------------------------------------------------------------------------------- --- Returns the name of the html file to be generated from a module. --- Files with "lua" or "luadoc" extensions are replaced by "html" extension. --- @param modulename Name of the module to be processed, may be a .lua file or --- a .luadoc file. --- @return name of the generated html file for the module - -function module_link (modulename, doc, from) - -- TODO: replace "." by "/" to create directories? - -- TODO: how to deal with module names with "/"? - assert(modulename) - assert(doc) - from = from or "" - - if doc.modules[modulename] == nil then --- logger:error(string.format("unresolved reference to module `%s'", modulename)) - return - end - - local href = "modules/" .. modulename .. ".html" - string.gsub(from, "/", function () href = "../" .. href end) - return href -end - -------------------------------------------------------------------------------- --- Returns the name of the html file to be generated from a lua(doc) file. --- Files with "lua" or "luadoc" extensions are replaced by "html" extension. --- @param to Name of the file to be processed, may be a .lua file or --- a .luadoc file. --- @param from path of where am I, based on this we append ..'s to the --- beginning of path --- @return name of the generated html file - -function file_link (to, from) - assert(to) - from = from or "" - - local href = to - href = string.gsub(href, "lua$", "html") - href = string.gsub(href, "luadoc$", "html") - href = "files/" .. href - string.gsub(from, "/", function () href = "../" .. href end) - return href -end - -------------------------------------------------------------------------------- --- Returns a link to a function or to a table --- @param fname name of the function or table to link to. --- @param doc documentation table --- @param kind String specying the kinf of element to link ("functions" or "tables"). - -function link_to (fname, doc, module_doc, file_doc, from, kind) - assert(fname) - assert(doc) - from = from or "" - kind = kind or "functions" - - if file_doc then - for _, func_name in pairs(file_doc[kind]) do - if func_name == fname then - return file_link(file_doc.name, from) .. "#" .. fname - end - end - end - - if module_doc and module_doc[kind] then - for func_name, tbl in pairs(module_doc[kind]) do - if func_name == fname then - return "#" .. fname - end - end - end - - local _, _, modulename, fname = string.find(fname, "^(.-)[%.%:]?([^%.%:]*)$") - assert(fname) - - -- if fname does not specify a module, use the module_doc - if string.len(modulename) == 0 and module_doc then - modulename = module_doc.name - end - - local module_doc = doc.modules[modulename] - if not module_doc then --- logger:error(string.format("unresolved reference to function `%s': module `%s' not found", fname, modulename)) - return - end - - for _, func_name in pairs(module_doc[kind]) do - if func_name == fname then - return module_link(modulename, doc, from) .. "#" .. fname - end - end - --- logger:error(string.format("unresolved reference to function `%s' of module `%s'", fname, modulename)) -end - -------------------------------------------------------------------------------- --- Make a link to a file, module or function - -function symbol_link (symbol, doc, module_doc, file_doc, from) - assert(symbol) - assert(doc) - - local href = --- file_link(symbol, from) or - module_link(symbol, doc, from) or - link_to(symbol, doc, module_doc, file_doc, from, "functions") or - link_to(symbol, doc, module_doc, file_doc, from, "tables") - - if not href then - logger:error(string.format("unresolved reference to symbol `%s'", symbol)) - end - - return href or "" -end - -------------------------------------------------------------------------------- --- Assembly the output filename for an input file. --- TODO: change the name of this function -function out_file (filename) - local h = filename - h = string.gsub(h, "lua$", "html") - h = string.gsub(h, "luadoc$", "html") - h = "files/" .. h --- h = options.output_dir .. string.gsub (h, "^.-([%w_]+%.html)$", "%1") - h = options.output_dir .. h - return h -end - -------------------------------------------------------------------------------- --- Assembly the output filename for a module. --- TODO: change the name of this function -function out_module (modulename) - local h = modulename .. ".html" - h = "modules/" .. h - h = options.output_dir .. h - return h -end - ------------------------------------------------------------------ --- Generate the output. --- @param doc Table with the structured documentation. - -function start (doc) - -- Generate index file - if (#doc.files > 0 or #doc.modules > 0) and (not options.noindexpage) then - local filename = options.output_dir.."index.html" - logger:info(string.format("generating file `%s'", filename)) - local f = posix.open(filename, "w") - assert(f, string.format("could not open `%s' for writing", filename)) - io.output(f) - include("index.lp", { doc = doc }) - f:close() - end - - -- Process modules - if not options.nomodules then - for _, modulename in ipairs(doc.modules) do - local module_doc = doc.modules[modulename] - -- assembly the filename - local filename = out_module(modulename) - logger:info(string.format("generating file `%s'", filename)) - - local f = posix.open(filename, "w") - assert(f, string.format("could not open `%s' for writing", filename)) - io.output(f) - include("module.lp", { doc = doc, module_doc = module_doc }) - f:close() - end - end - - -- Process files - if not options.nofiles then - for _, filepath in ipairs(doc.files) do - local file_doc = doc.files[filepath] - -- assembly the filename - local filename = out_file(file_doc.name) - logger:info(string.format("generating file `%s'", filename)) - - local f = posix.open(filename, "w") - assert(f, string.format("could not open `%s' for writing", filename)) - io.output(f) - include("file.lp", { doc = doc, file_doc = file_doc} ) - f:close() - end - end - - -- copy extra files - local f = posix.open(options.output_dir.."luadoc.css", "w") - io.output(f) - include("luadoc.css") - f:close() -end diff --git a/package/luci/build/luadoc/luadoc/doclet/html/constant.lp b/package/luci/build/luadoc/luadoc/doclet/html/constant.lp deleted file mode 100644 index 2e35392ad6..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/html/constant.lp +++ /dev/null @@ -1,28 +0,0 @@ -<% -if module_doc then - from = "modules/"..module_doc.name -elseif file_doc then - from = "files/.."..file_doc.name -else - from = "" -end -%> - -
    <%=const.private and "local " or ""%><%=const.name:gsub(".+%.","")%>
    -
    -<%=const.description or ""%> - -<%if type(const.see) == "string" then %> -

    See also:

    - <%=const.see%> -<%elseif type(const.see) == "table" and #const.see > 0 then %> -

    See also:

    - -
    diff --git a/package/luci/build/luadoc/luadoc/doclet/html/file.lp b/package/luci/build/luadoc/luadoc/doclet/html/file.lp deleted file mode 100644 index 68f486404f..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/html/file.lp +++ /dev/null @@ -1,112 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    File <%=file_doc.name%>

    - -<%if file_doc.description then%> -

    <%=file_doc.description%>

    -<%end%> -<%if file_doc.author then%> -

    <%= #file_doc.author>1 and "Authors" or "Author" %>: - -<%for _, author in ipairs(file_doc.author) do%> - -<%end%> -
    <%= author %>
    -

    -<%end%> -<%if file_doc.copyright then%> -

    Copyright ©<%=file_doc.copyright%>

    -<%end%> -<%if file_doc.release then%> -

    Release: <%=file_doc.release%>

    -<%end%> - -<%if #file_doc.functions > 0 then%> -

    Functions

    - -<%for _, func_name in ipairs(file_doc.functions) do - local func_data = file_doc.functions[func_name]%> - - - - -<%end%> -
    <%=func_data.private and "local " or ""%><%=func_name%> (<%=table.concat(func_data.param or {}, ", ")%>)<%=func_data.summary%>
    -<%end%> - - -<%if #file_doc.tables > 0 then%> -

    Tables

    - -<%for _, tab_name in ipairs(file_doc.tables) do%> - - - - -<%end%> -
    <%=tab_name%><%=file_doc.tables[tab_name].summary%>
    -<%end%> - - -
    -
    - - - -<%if #file_doc.functions > 0 then%> -

    Functions

    -
    -<%for _, func_name in ipairs(file_doc.functions) do%> -<%=luadoc.doclet.html.include("function.lp", { doc=doc, file_doc=file_doc, func=file_doc.functions[func_name] })%> -<%end%> -
    -<%end%> - - -<%if #file_doc.tables > 0 then%> -

    Tables

    -
    -<%for _, tab_name in ipairs(file_doc.tables) do%> -<%=luadoc.doclet.html.include("table.lp", { doc=doc, file_doc=file_doc, tab=file_doc.tables[tab_name] })%> -<%end%> -
    -<%end%> - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/build/luadoc/luadoc/doclet/html/function.lp b/package/luci/build/luadoc/luadoc/doclet/html/function.lp deleted file mode 100644 index 29d403e00f..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/html/function.lp +++ /dev/null @@ -1,64 +0,0 @@ -<% -if module_doc then - from = "modules/"..module_doc.name -elseif file_doc then - from = "files/.."..file_doc.name -else - from = "" -end -%> - -
    <%=func.private and "local " or ""%><%=func.printname%> (<%=table.concat(func.param or {}, ", ")%>)
    -
    -<%=func.description or ""%> - -<%if type(func.param) == "table" and #func.param > 0 then%> -

    Parameters

    -
      - <%for p = 1, #func.param do%> -
    • - <%=func.param[p]%>: <%=func.param[func.param[p]] or ""%> -
    • - <%end%> -
    -<%end%> - - -<%if type(func.usage) == "string" then%> -

    Usage:

    -<%=func.usage%> -<%elseif type(func.usage) == "table" then%> -

    Usage

    -
      - <%for _, usage in ipairs(func.usage) do%> -
    • <%= usage %> - <%end%> -
    -<%end%> - -<%if type(func.ret) == "string" then%> -

    Return value:

    -<%=func.ret%> -<%elseif type(func.ret) == "table" then%> -

    Return values:

    -
      - <%for _, ret in ipairs(func.ret) do%> -
    1. <%= ret %> - <%end%> -
    -<%end%> - -<%if type(func.see) == "string" then %> -

    See also:

    - <%=func.see%> -<%elseif type(func.see) == "table" and #func.see > 0 then %> -

    See also:

    - -<%end%> -
    diff --git a/package/luci/build/luadoc/luadoc/doclet/html/index.lp b/package/luci/build/luadoc/luadoc/doclet/html/index.lp deleted file mode 100644 index b4b9f5c3b6..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/html/index.lp +++ /dev/null @@ -1,67 +0,0 @@ - - - - Reference - " type="text/css" /> - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - - -<%if not options.nomodules and #doc.modules > 0 then%> -

    Modules

    - - -<%for _, modulename in ipairs(doc.modules) do%> - - - - -<%end%> -
    <%=modulename%><%=doc.modules[modulename].summary%>
    -<%end%> - - - -<%if not options.nofiles and #doc.files > 0 then%> -

    Files

    - - -<%for _, filepath in ipairs(doc.files) do%> - - - - -<%end%> -
    <%=filepath%>
    -<%end%> - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/build/luadoc/luadoc/doclet/html/luadoc.css b/package/luci/build/luadoc/luadoc/doclet/html/luadoc.css deleted file mode 100644 index f9f9749519..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/html/luadoc.css +++ /dev/null @@ -1,285 +0,0 @@ -body { - margin-left: 1em; - margin-right: 1em; - font-family: arial, helvetica, geneva, sans-serif; - background-color:#ffffff; margin:0px; -} - -code { - font-family: "Andale Mono", monospace; -} - -tt { - font-family: "Andale Mono", monospace; -} - -body, td, th { font-size: 11pt; } - -h1, h2, h3, h4 { margin-left: 0em; } - -textarea, pre, tt { font-size:10pt; } -body, td, th { color:#000000; } -small { font-size:0.85em; } -h1 { font-size:1.5em; } -h2 { font-size:1.25em; } -h3 { font-size:1.15em; } -h4 { font-size:1.06em; } - -a:link { font-weight:bold; color: #004080; text-decoration: none; } -a:visited { font-weight:bold; color: #006699; text-decoration: none; } -a:link:hover { text-decoration:underline; } -hr { color:#cccccc } -img { border-width: 0px; } - - -h3 { padding: 1em 0 0.5em; } - -p { margin-left: 1em; } - -p.name { - font-family: "Andale Mono", monospace; - padding-top: 1em; - margin-left: 0em; -} - -blockquote { margin-left: 3em; } - -pre.example { - background-color: rgb(245, 245, 245); - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-style: solid; - border-right-style: solid; - border-bottom-style: solid; - border-left-style: solid; - border-top-color: silver; - border-right-color: silver; - border-bottom-color: silver; - border-left-color: silver; - padding: 1em; - margin-left: 1em; - margin-right: 1em; - font-family: "Andale Mono", monospace; - font-size: smaller; -} - - -hr { - margin-left: 0em; - background: #00007f; - border: 0px; - height: 1px; -} - -ul { list-style-type: disc; } - -table.index { border: 1px #00007f; } -table.index td { text-align: left; vertical-align: top; } -table.index ul { padding-top: 0em; margin-top: 0em; } - -table { - border: 1px solid black; - border-collapse: collapse; - margin: 1em auto; -} -th { - border: 1px solid black; - padding: 0.5em; -} -td { - border: 1px solid black; - padding: 0.5em; -} -div.header, div.footer { margin-left: 0em; } - -#container -{ - margin-left: 1em; - margin-right: 1em; - background-color: #f0f0f0; -} - -#product -{ - text-align: center; - border-bottom: 1px solid #cccccc; - background-color: #ffffff; -} - -#product big { - font-size: 2em; -} - -#product_logo -{ -} - -#product_name -{ -} - -#product_description -{ -} - -#main -{ - background-color: #f0f0f0; - border-left: 2px solid #cccccc; -} - -#navigation -{ - float: left; - width: 18em; - margin: 0; - vertical-align: top; - background-color: #f0f0f0; - overflow:visible; -} - -#navigation h1 { - background-color:#e7e7e7; - font-size:1.1em; - color:#000000; - text-align:left; - margin:0px; - padding:0.2em; - border-top:1px solid #dddddd; - border-bottom:1px solid #dddddd; -} - -#navigation ul -{ - font-size:1em; - list-style-type: none; - padding: 0; - margin: 1px; -} - -#navigation li -{ - text-indent: -1em; - margin: 0em 0em 0em 0.5em; - display: block; - padding: 3px 0px 0px 12px; -} - -#navigation li li a -{ - padding: 0px 3px 0px -1em; -} - -#content -{ - margin-left: 18em; - padding: 1em; - border-left: 2px solid #cccccc; - border-right: 2px solid #cccccc; - background-color: #ffffff; -} - -#about -{ - clear: both; - margin: 0; - padding: 5px; - border-top: 2px solid #cccccc; - background-color: #ffffff; -} - -@media print { - body { - font: 12pt "Times New Roman", "TimeNR", Times, serif; - } - a { font-weight:bold; color: #004080; text-decoration: underline; } - - #main { background-color: #ffffff; border-left: 0px; } - #container { margin-left: 2%; margin-right: 2%; background-color: #ffffff; } - - #content { margin-left: 0px; padding: 1em; border-left: 0px; border-right: 0px; background-color: #ffffff; } - - #navigation { display: none; - } - pre.example { - font-family: "Andale Mono", monospace; - font-size: 10pt; - page-break-inside: avoid; - } -} - -table.module_list td -{ - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.module_list td.name { background-color: #f0f0f0; } -table.module_list td.summary { width: 100%; } - -table.file_list -{ - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.file_list td -{ - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.file_list td.name { background-color: #f0f0f0; } -table.file_list td.summary { width: 100%; } - - -table.function_list -{ - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.function_list td -{ - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.function_list td.name { background-color: #f0f0f0; } -table.function_list td.summary { width: 100%; } - - -table.table_list -{ - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.table_list td -{ - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.table_list td.name { background-color: #f0f0f0; } -table.table_list td.summary { width: 100%; } - -dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;} -dl.function dd {padding: 0.5em 0;} -dl.function h3 {margin: 0; font-size: medium;} - -dl.table dt {border-top: 1px solid #ccc; padding-top: 1em;} -dl.table dd {padding-bottom: 1em;} -dl.table h3 {padding: 0; margin: 0; font-size: medium;} - -#TODO: make module_list, file_list, function_list, table_list inherit from a list - diff --git a/package/luci/build/luadoc/luadoc/doclet/html/menu.lp b/package/luci/build/luadoc/luadoc/doclet/html/menu.lp deleted file mode 100644 index 0fe365202e..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/html/menu.lp +++ /dev/null @@ -1,55 +0,0 @@ -<% -if module_doc then - from = "modules/"..module_doc.name -elseif file_doc then - from = "files/.."..file_doc.name -else - from = "" -end -%> - -

    LuaDoc

    -
      - <%if not module_doc and not file_doc then%> -
    • Index
    • - <%else%> -
    • ">Index
    • - <%end%> -
    - - - -<%if not options.nomodules and #doc.modules > 0 then%> -

    Modules

    -
      -<%for _, modulename in ipairs(doc.modules) do - if module_doc and module_doc.name == modulename then%> -
    • <%=modulename%>
    • - <%else%> -
    • - <%=modulename%> -
    • -<% end -end%> -
    -<%end%> - - - -<%if not options.nofiles and #doc.files > 0 then%> -

    Files

    -
      -<%for _, filepath in ipairs(doc.files) do - if file_doc and file_doc.name == filepath then%> -
    • <%=filepath%>
    • - <%else%> -
    • - <%=filepath%> -
    • -<% end -end%> -
    -<%end%> - - - diff --git a/package/luci/build/luadoc/luadoc/doclet/html/module.lp b/package/luci/build/luadoc/luadoc/doclet/html/module.lp deleted file mode 100644 index 0798c1be07..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/html/module.lp +++ /dev/null @@ -1,155 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    <%=( oop and "Object Instance" or "Class" )%> <%=module_doc.name%>

    - -

    <%=module_doc.description%>

    -<%if module_doc.author then%> -

    <%= #module_doc.author>1 and "Authors" or "Author" %>: - -<%for _, author in ipairs(module_doc.author) do%> - -<%end%> -
    <%= author %>
    -

    -<%end%> -<%if module_doc.copyright then%> -

    Copyright© <%=module_doc.copyright%>

    -<%end%> -<%if module_doc.release then%> -

    Release: <%=module_doc.release%>

    -<%end%> - -<%if #module_doc.constants > 0 then %> -

    Constants

    - -<%for _, const_name in ipairs(module_doc.constants) do - local const_data = module_doc.constants[const_name]%> - - - - -<%end%> -
    <%=const_data.private and "local " or ""%><%=(const_name:gsub(".+%.",""))%><%=const_data.summary%>
    -<%end%> - -<% local funcs = { }; if #module_doc.functions > 0 then %> -

    Functions

    - -<% -for _, func_name in ipairs(module_doc.functions) do - funcs[#funcs+1] = func_name -end - -table.sort(funcs, function(a, b) - local func_data_a = module_doc.functions[a] - local func_data_b = module_doc.functions[b] - local x = func_data_a.sort or a - local y = func_data_b.sort or b - return x < y -end) - -for _, func_name in ipairs(funcs) do - local func_data = module_doc.functions[func_name] - - func_data.printname = func_name:gsub("^%d+#", "") - if oop then - func_data.printname = func_data.printname:gsub("%.", ":") - else - func_data.printname = func_data.printname:gsub("^.+%.", "") - end -%> - - - - -<%end%> -
    <%=func_data.private and "local " or ""%><%=func_data.printname%> (<%=table.concat(module_doc.functions[func_name].param or {}, ", ")%>)<%=module_doc.functions[func_name].summary%>
    -<%end%> - - -<% local tabs = { }; if #module_doc.tables > 0 then%> -

    Tables

    - -<% -for _, tab_name in ipairs(module_doc.tables) do - tabs[#tabs+1] = tab_name -end - -table.sort(tabs, function(a, b) - local tab_data_a = module_doc.tables[a] - local tab_data_b = module_doc.tables[b] - local x = tab_data_a.sort or a - local y = tab_data_b.sort or b - return x < y -end) - -for _, tab_name in ipairs(tabs) do -%> - - - - -<%end%> -
    <%=tab_name%><%=module_doc.tables[tab_name].summary%>
    -<%end%> - - -
    -
    - -<%if #module_doc.functions > 0 then%> -

    Functions

    -
    -<%for _, func_name in ipairs(funcs) do%> -<%=luadoc.doclet.html.include("function.lp", { doc=doc, module_doc=module_doc, func=module_doc.functions[func_name], oop=oop })%> -<%end%> -
    -<%end%> - -<%if #module_doc.tables > 0 then%> -

    Tables

    -
    -<%for _, tab_name in ipairs(tabs) do%> -<%=luadoc.doclet.html.include("table.lp", { doc=doc, module_doc=module_doc, tab=module_doc.tables[tab_name] })%> -<%end%> -
    -<%end%> - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/build/luadoc/luadoc/doclet/html/table.lp b/package/luci/build/luadoc/luadoc/doclet/html/table.lp deleted file mode 100644 index 5cd023953a..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/html/table.lp +++ /dev/null @@ -1,15 +0,0 @@ -
    <%=tab.name%>
    -
    <%=tab.description%> - -<%if type(tab.field) == "table" and #tab.field > 0 then%> -Fields -
      - <%for p = 1, #tab.field do%> -
    • - <%=tab.field[p]%>: <%=tab.field[tab.field[p]] or ""%> -
    • - <%end%> -
    -<%end%> - -
    diff --git a/package/luci/build/luadoc/luadoc/doclet/raw.lua b/package/luci/build/luadoc/luadoc/doclet/raw.lua deleted file mode 100644 index 1e880b8830..0000000000 --- a/package/luci/build/luadoc/luadoc/doclet/raw.lua +++ /dev/null @@ -1,12 +0,0 @@ ------------------------------------------------------------------ --- @release $Id: raw.lua,v 1.5 2007/04/18 14:28:39 tomas Exp $ ------------------------------------------------------------------ - -module "luadoc.doclet.raw" - ------------------------------------------------------------------ --- Generate the output. --- @param doc Table with the structured documentation. - -function start (doc) -end diff --git a/package/luci/build/luadoc/luadoc/init.lua b/package/luci/build/luadoc/luadoc/init.lua deleted file mode 100644 index 649515de68..0000000000 --- a/package/luci/build/luadoc/luadoc/init.lua +++ /dev/null @@ -1,50 +0,0 @@ -------------------------------------------------------------------------------- --- LuaDoc main function. --- @release $Id: init.lua,v 1.4 2008/02/17 06:42:51 jasonsantos Exp $ -------------------------------------------------------------------------------- - -local require = require - -local util = require "luadoc.util" - -logger = {} - -module ("luadoc") - -------------------------------------------------------------------------------- --- LuaDoc version number. - -_COPYRIGHT = "Copyright (c) 2003-2007 The Kepler Project" -_DESCRIPTION = "Documentation Generator Tool for the Lua language" -_VERSION = "LuaDoc 3.0.1" - -------------------------------------------------------------------------------- --- Main function --- @see luadoc.doclet.html, luadoc.doclet.formatter, luadoc.doclet.raw --- @see luadoc.taglet.standard - -function main (files, options) - logger = util.loadlogengine(options) - - -- load config file - if options.config ~= nil then - -- load specified config file - dofile(options.config) - else - -- load default config file - require("luadoc.config") - end - - local taglet = require(options.taglet) - local doclet = require(options.doclet) - - -- analyze input - taglet.options = options - taglet.logger = logger - local doc = taglet.start(files) - - -- generate output - doclet.options = options - doclet.logger = logger - doclet.start(doc) -end diff --git a/package/luci/build/luadoc/luadoc/lp.lua b/package/luci/build/luadoc/luadoc/lp.lua deleted file mode 100644 index adf84f9f0e..0000000000 --- a/package/luci/build/luadoc/luadoc/lp.lua +++ /dev/null @@ -1,130 +0,0 @@ ----------------------------------------------------------------------------- --- Lua Pages Template Preprocessor. --- --- @release $Id: lp.lua,v 1.7 2007/04/18 14:28:39 tomas Exp $ ----------------------------------------------------------------------------- - -local assert, error, getfenv, loadstring, setfenv = assert, error, getfenv, loadstring, setfenv -local find, format, gsub, strsub = string.find, string.format, string.gsub, string.sub -local concat, tinsert = table.concat, table.insert -local open = io.open - -module (...) - ----------------------------------------------------------------------------- --- function to do output -local outfunc = "io.write" --- accepts the old expression field: `$| |$' -local compatmode = true - --- --- Builds a piece of Lua code which outputs the (part of the) given string. --- @param s String. --- @param i Number with the initial position in the string. --- @param f Number with the final position in the string (default == -1). --- @return String with the correspondent Lua code which outputs the part of the string. --- -local function out (s, i, f) - s = strsub(s, i, f or -1) - if s == "" then return s end - -- we could use `%q' here, but this way we have better control - s = gsub(s, "([\\\n\'])", "\\%1") - -- substitute '\r' by '\'+'r' and let `loadstring' reconstruct it - s = gsub(s, "\r", "\\r") - return format(" %s('%s'); ", outfunc, s) -end - - ----------------------------------------------------------------------------- --- Translate the template to Lua code. --- @param s String to translate. --- @return String with translated code. ----------------------------------------------------------------------------- -function translate (s) - if compatmode then - s = gsub(s, "$|(.-)|%$", "") - s = gsub(s, "", "") - end - s = gsub(s, "<%%(.-)%%>", "") - local res = {} - local start = 1 -- start of untranslated part in `s' - while true do - local ip, fp, target, exp, code = find(s, "<%?(%w*)[ \t]*(=?)(.-)%?>", start) - if not ip then break end - tinsert(res, out(s, start, ip-1)) - if target ~= "" and target ~= "lua" then - -- not for Lua; pass whole instruction to the output - tinsert(res, out(s, ip, fp)) - else - if exp == "=" then -- expression? - tinsert(res, format(" %s(%s);", outfunc, code)) - else -- command - tinsert(res, format(" %s ", code)) - end - end - start = fp + 1 - end - tinsert(res, out(s, start)) - return concat(res) -end - - ----------------------------------------------------------------------------- --- Defines the name of the output function. --- @param f String with the name of the function which produces output. - -function setoutfunc (f) - outfunc = f -end - ----------------------------------------------------------------------------- --- Turns on or off the compatibility with old CGILua 3.X behavior. --- @param c Boolean indicating if the compatibility mode should be used. - -function setcompatmode (c) - compatmode = c -end - ----------------------------------------------------------------------------- --- Internal compilation cache. - -local cache = {} - ----------------------------------------------------------------------------- --- Translates a template into a Lua function. --- Does NOT execute the resulting function. --- Uses a cache of templates. --- @param string String with the template to be translated. --- @param chunkname String with the name of the chunk, for debugging purposes. --- @return Function with the resulting translation. - -function compile (string, chunkname) - local f, err = cache[string] - if f then return f end - f, err = loadstring (translate (string), chunkname) - if not f then error (err, 3) end - cache[string] = f - return f -end - ----------------------------------------------------------------------------- --- Translates and executes a template in a given file. --- The translation creates a Lua function which will be executed in an --- optionally given environment. --- @param filename String with the name of the file containing the template. --- @param env Table with the environment to run the resulting function. - -function include (filename, env) - -- read the whole contents of the file - local fh = assert (open (filename)) - local src = fh:read("*a") - fh:close() - -- translates the file into a function - local prog = compile (src, '@'..filename) - local _env - if env then - _env = getfenv (prog) - setfenv (prog, env) - end - prog () -end diff --git a/package/luci/build/luadoc/luadoc/taglet/standard.lua b/package/luci/build/luadoc/luadoc/taglet/standard.lua deleted file mode 100644 index ef925f8c73..0000000000 --- a/package/luci/build/luadoc/luadoc/taglet/standard.lua +++ /dev/null @@ -1,567 +0,0 @@ -------------------------------------------------------------------------------- --- @release $Id: standard.lua,v 1.39 2007/12/21 17:50:48 tomas Exp $ -------------------------------------------------------------------------------- - -local assert, pairs, tostring, type = assert, pairs, tostring, type -local io = require "io" -local posix = require "nixio.fs" -local luadoc = require "luadoc" -local util = require "luadoc.util" -local tags = require "luadoc.taglet.standard.tags" -local string = require "string" -local table = require "table" - -module 'luadoc.taglet.standard' - -------------------------------------------------------------------------------- --- Creates an iterator for an array base on a class type. --- @param t array to iterate over --- @param class name of the class to iterate over - -function class_iterator (t, class) - return function () - local i = 1 - return function () - while t[i] and t[i].class ~= class do - i = i + 1 - end - local v = t[i] - i = i + 1 - return v - end - end -end - --- Patterns for function recognition -local identifiers_list_pattern = "%s*(.-)%s*" -local identifier_pattern = "[^%(%s]+" -local function_patterns = { - "^()%s*function%s*("..identifier_pattern..")%s*%("..identifiers_list_pattern.."%)", - "^%s*(local%s)%s*function%s*("..identifier_pattern..")%s*%("..identifiers_list_pattern.."%)", - "^()%s*("..identifier_pattern..")%s*%=%s*function%s*%("..identifiers_list_pattern.."%)", -} - -------------------------------------------------------------------------------- --- Checks if the line contains a function definition --- @param line string with line text --- @return function information or nil if no function definition found - -local function check_function (line) - line = util.trim(line) - - local info = table.foreachi(function_patterns, function (_, pattern) - local r, _, l, id, param = string.find(line, pattern) - if r ~= nil then - return { - name = id, - private = (l == "local"), - param = { } --util.split("%s*,%s*", param), - } - end - end) - - -- TODO: remove these assert's? - if info ~= nil then - assert(info.name, "function name undefined") - assert(info.param, string.format("undefined parameter list for function `%s'", info.name)) - end - - return info -end - -------------------------------------------------------------------------------- --- Checks if the line contains a module definition. --- @param line string with line text --- @param currentmodule module already found, if any --- @return the name of the defined module, or nil if there is no module --- definition - -local function check_module (line, currentmodule) - line = util.trim(line) - - -- module"x.y" - -- module'x.y' - -- module[[x.y]] - -- module("x.y") - -- module('x.y') - -- module([[x.y]]) - -- module(...) - - local r, _, modulename = string.find(line, "^module%s*[%s\"'(%[]+([^,\"')%]]+)") - if r then - -- found module definition - logger:debug(string.format("found module `%s'", modulename)) - return modulename - end - return currentmodule -end - --- Patterns for constant recognition -local constant_patterns = { - "^()%s*([A-Z][A-Z0-9_]*)%s*=", - "^%s*(local%s)%s*([A-Z][A-Z0-9_]*)%s*=", -} - -------------------------------------------------------------------------------- --- Checks if the line contains a constant definition --- @param line string with line text --- @return constant information or nil if no constant definition found - -local function check_constant (line) - line = util.trim(line) - - local info = table.foreachi(constant_patterns, function (_, pattern) - local r, _, l, id = string.find(line, pattern) - if r ~= nil then - return { - name = id, - private = (l == "local"), - } - end - end) - - -- TODO: remove these assert's? - if info ~= nil then - assert(info.name, "constant name undefined") - end - - return info -end - -------------------------------------------------------------------------------- --- Extracts summary information from a description. The first sentence of each --- doc comment should be a summary sentence, containing a concise but complete --- description of the item. It is important to write crisp and informative --- initial sentences that can stand on their own --- @param description text with item description --- @return summary string or nil if description is nil - -local function parse_summary (description) - -- summary is never nil... - description = description or "" - - -- append an " " at the end to make the pattern work in all cases - description = description.." " - - -- read until the first period followed by a space or tab - local summary = string.match(description, "(.-%.)[%s\t]") - - -- if pattern did not find the first sentence, summary is the whole description - summary = summary or description - - return summary -end - -------------------------------------------------------------------------------- --- @param f file handle --- @param line current line being parsed --- @param modulename module already found, if any --- @return current line --- @return code block --- @return modulename if found - -local function parse_code (f, line, modulename) - local code = {} - while line ~= nil do - if string.find(line, "^[\t ]*%-%-%-") then - -- reached another luadoc block, end this parsing - return line, code, modulename - else - -- look for a module definition - modulename = check_module(line, modulename) - - table.insert(code, line) - line = f:read() - end - end - -- reached end of file - return line, code, modulename -end - -------------------------------------------------------------------------------- --- Parses the information inside a block comment --- @param block block with comment field --- @return block parameter - -local function parse_comment (block, first_line, modulename) - - -- get the first non-empty line of code - local code = table.foreachi(block.code, function(_, line) - if not util.line_empty(line) then - -- `local' declarations are ignored in two cases: - -- when the `nolocals' option is turned on; and - -- when the first block of a file is parsed (this is - -- necessary to avoid confusion between the top - -- local declarations and the `module' definition. - if (options.nolocals or first_line) and line:find"^%s*local" then - return - end - return line - end - end) - - -- parse first line of code - if code ~= nil then - local func_info = check_function(code) - local module_name = check_module(code) - local const_info = check_constant(code) - if func_info then - block.class = "function" - block.name = func_info.name - block.param = func_info.param - block.private = func_info.private - elseif const_info then - block.class = "constant" - block.name = const_info.name - block.private = const_info.private - elseif module_name then - block.class = "module" - block.name = module_name - block.param = {} - else - block.param = {} - end - else - -- TODO: comment without any code. Does this means we are dealing - -- with a file comment? - end - - -- parse @ tags - local currenttag = "description" - local currenttext - - table.foreachi(block.comment, function (_, line) - line = util.trim_comment(line) - - local r, _, tag, text = string.find(line, "@([_%w%.]+)%s+(.*)") - if r ~= nil then - -- found new tag, add previous one, and start a new one - -- TODO: what to do with invalid tags? issue an error? or log a warning? - tags.handle(currenttag, block, currenttext) - - currenttag = tag - currenttext = text - else - currenttext = util.concat(currenttext, "\n" .. line) - assert(string.sub(currenttext, 1, 1) ~= " ", string.format("`%s', `%s'", currenttext, line)) - end - end) - tags.handle(currenttag, block, currenttext) - - -- extracts summary information from the description - block.summary = parse_summary(block.description) - assert(string.sub(block.description, 1, 1) ~= " ", string.format("`%s'", block.description)) - - if block.name and block.class == "module" then - modulename = block.name - end - - return block, modulename -end - -------------------------------------------------------------------------------- --- Parses a block of comment, started with ---. Read until the next block of --- comment. --- @param f file handle --- @param line being parsed --- @param modulename module already found, if any --- @return line --- @return block parsed --- @return modulename if found - -local function parse_block (f, line, modulename, first) - local multiline = not not (line and line:match("%[%[")) - local block = { - comment = {}, - code = {}, - } - - while line ~= nil do - if (multiline == true and string.find(line, "%]%]") ~= nil) or - (multiline == false and string.find(line, "^[\t ]*%-%-") == nil) then - -- reached end of comment, read the code below it - -- TODO: allow empty lines - line, block.code, modulename = parse_code(f, line, modulename) - - -- parse information in block comment - block, modulename = parse_comment(block, first, modulename) - - return line, block, modulename - else - table.insert(block.comment, line) - line = f:read() - end - end - -- reached end of file - - -- parse information in block comment - block, modulename = parse_comment(block, first, modulename) - - return line, block, modulename -end - -------------------------------------------------------------------------------- --- Parses a file documented following luadoc format. --- @param filepath full path of file to parse --- @param doc table with documentation --- @return table with documentation - -function parse_file (filepath, doc, handle, prev_line, prev_block, prev_modname) - local blocks = { prev_block } - local modulename = prev_modname - - -- read each line - local f = handle or io.open(filepath, "r") - local i = 1 - local line = prev_line or f:read() - local first = true - while line ~= nil do - - if string.find(line, "^[\t ]*%-%-%-") then - -- reached a luadoc block - local block, newmodname - line, block, newmodname = parse_block(f, line, modulename, first) - - if modulename and newmodname and newmodname ~= modulename then - doc = parse_file( nil, doc, f, line, block, newmodname ) - else - table.insert(blocks, block) - modulename = newmodname - end - else - -- look for a module definition - local newmodname = check_module(line, modulename) - - if modulename and newmodname and newmodname ~= modulename then - parse_file( nil, doc, f ) - else - modulename = newmodname - end - - -- TODO: keep beginning of file somewhere - - line = f:read() - end - first = false - i = i + 1 - end - - if not handle then - f:close() - end - - if filepath then - -- store blocks in file hierarchy - assert(doc.files[filepath] == nil, string.format("doc for file `%s' already defined", filepath)) - table.insert(doc.files, filepath) - doc.files[filepath] = { - type = "file", - name = filepath, - doc = blocks, - -- functions = class_iterator(blocks, "function"), - -- tables = class_iterator(blocks, "table"), - } - -- - local first = doc.files[filepath].doc[1] - if first and modulename then - doc.files[filepath].author = first.author - doc.files[filepath].copyright = first.copyright - doc.files[filepath].description = first.description - doc.files[filepath].release = first.release - doc.files[filepath].summary = first.summary - end - end - - -- if module definition is found, store in module hierarchy - if modulename ~= nil then - if modulename == "..." then - assert( filepath, "Can't determine name for virtual module from filepatch" ) - modulename = string.gsub (filepath, "%.lua$", "") - modulename = string.gsub (modulename, "/", ".") - end - if doc.modules[modulename] ~= nil then - -- module is already defined, just add the blocks - table.foreachi(blocks, function (_, v) - table.insert(doc.modules[modulename].doc, v) - end) - else - -- TODO: put this in a different module - table.insert(doc.modules, modulename) - doc.modules[modulename] = { - type = "module", - name = modulename, - doc = blocks, --- functions = class_iterator(blocks, "function"), --- tables = class_iterator(blocks, "table"), - author = first and first.author, - copyright = first and first.copyright, - description = "", - release = first and first.release, - summary = "", - } - - -- find module description - for m in class_iterator(blocks, "module")() do - doc.modules[modulename].description = util.concat( - doc.modules[modulename].description, - m.description) - doc.modules[modulename].summary = util.concat( - doc.modules[modulename].summary, - m.summary) - if m.author then - doc.modules[modulename].author = m.author - end - if m.copyright then - doc.modules[modulename].copyright = m.copyright - end - if m.release then - doc.modules[modulename].release = m.release - end - if m.name then - doc.modules[modulename].name = m.name - end - end - doc.modules[modulename].description = doc.modules[modulename].description or (first and first.description) or "" - doc.modules[modulename].summary = doc.modules[modulename].summary or (first and first.summary) or "" - end - - -- make functions table - doc.modules[modulename].functions = {} - for f in class_iterator(blocks, "function")() do - if f and f.name then - table.insert(doc.modules[modulename].functions, f.name) - doc.modules[modulename].functions[f.name] = f - end - end - - -- make tables table - doc.modules[modulename].tables = {} - for t in class_iterator(blocks, "table")() do - if t and t.name then - table.insert(doc.modules[modulename].tables, t.name) - doc.modules[modulename].tables[t.name] = t - end - end - - -- make constants table - doc.modules[modulename].constants = {} - for c in class_iterator(blocks, "constant")() do - if c and c.name then - table.insert(doc.modules[modulename].constants, c.name) - doc.modules[modulename].constants[c.name] = c - end - end - end - - if filepath then - -- make functions table - doc.files[filepath].functions = {} - for f in class_iterator(blocks, "function")() do - if f and f.name then - table.insert(doc.files[filepath].functions, f.name) - doc.files[filepath].functions[f.name] = f - end - end - - -- make tables table - doc.files[filepath].tables = {} - for t in class_iterator(blocks, "table")() do - if t and t.name then - table.insert(doc.files[filepath].tables, t.name) - doc.files[filepath].tables[t.name] = t - end - end - end - - return doc -end - -------------------------------------------------------------------------------- --- Checks if the file is terminated by ".lua" or ".luadoc" and calls the --- function that does the actual parsing --- @param filepath full path of the file to parse --- @param doc table with documentation --- @return table with documentation --- @see parse_file - -function file (filepath, doc) - local patterns = { "%.lua$", "%.luadoc$" } - local valid = table.foreachi(patterns, function (_, pattern) - if string.find(filepath, pattern) ~= nil then - return true - end - end) - - if valid then - logger:info(string.format("processing file `%s'", filepath)) - doc = parse_file(filepath, doc) - end - - return doc -end - -------------------------------------------------------------------------------- --- Recursively iterates through a directory, parsing each file --- @param path directory to search --- @param doc table with documentation --- @return table with documentation - -function directory (path, doc) - for f in posix.dir(path) do - local fullpath = path .. "/" .. f - local attr = posix.stat(fullpath) - assert(attr, string.format("error stating file `%s'", fullpath)) - - if attr.type == "reg" then - doc = file(fullpath, doc) - elseif attr.type == "dir" and f ~= "." and f ~= ".." then - doc = directory(fullpath, doc) - end - end - return doc -end - --- Recursively sorts the documentation table -local function recsort (tab) - table.sort (tab) - -- sort list of functions by name alphabetically - for f, doc in pairs(tab) do - if doc.functions then - table.sort(doc.functions) - end - if doc.tables then - table.sort(doc.tables) - end - end -end - -------------------------------------------------------------------------------- - -function start (files, doc) - assert(files, "file list not specified") - - -- Create an empty document, or use the given one - doc = doc or { - files = {}, - modules = {}, - } - assert(doc.files, "undefined `files' field") - assert(doc.modules, "undefined `modules' field") - - table.foreachi(files, function (_, path) - local attr = posix.stat(path) - assert(attr, string.format("error stating path `%s'", path)) - - if attr.type == "reg" then - doc = file(path, doc) - elseif attr.type == "dir" then - doc = directory(path, doc) - end - end) - - -- order arrays alphabetically - recsort(doc.files) - recsort(doc.modules) - - return doc -end diff --git a/package/luci/build/luadoc/luadoc/taglet/standard/tags.lua b/package/luci/build/luadoc/luadoc/taglet/standard/tags.lua deleted file mode 100644 index b46d685da4..0000000000 --- a/package/luci/build/luadoc/luadoc/taglet/standard/tags.lua +++ /dev/null @@ -1,191 +0,0 @@ -------------------------------------------------------------------------------- --- Handlers for several tags --- @release $Id: tags.lua,v 1.8 2007/09/05 12:39:09 tomas Exp $ -------------------------------------------------------------------------------- - -local luadoc = require "luadoc" -local util = require "luadoc.util" -local string = require "string" -local table = require "table" -local assert, type, tostring, tonumber = assert, type, tostring, tonumber - -module "luadoc.taglet.standard.tags" - -------------------------------------------------------------------------------- - -local function author (tag, block, text) - block[tag] = block[tag] or {} - if not text then - luadoc.logger:warn("author `name' not defined [["..text.."]]: skipping") - return - end - table.insert (block[tag], text) -end - -------------------------------------------------------------------------------- --- Set the class of a comment block. Classes can be "module", "function", --- "table". The first two classes are automatic, extracted from the source code - -local function class (tag, block, text) - block[tag] = text -end - -------------------------------------------------------------------------------- - -local function cstyle (tag, block, text) - block[tag] = text -end - -------------------------------------------------------------------------------- - -local function sort (tag, block, text) - block[tag] = tonumber(text) or 0 -end - -------------------------------------------------------------------------------- - -local function copyright (tag, block, text) - block[tag] = text -end - -------------------------------------------------------------------------------- - -local function description (tag, block, text) - block[tag] = text -end - -------------------------------------------------------------------------------- - -local function field (tag, block, text) - if block["class"] ~= "table" then - luadoc.logger:warn("documenting `field' for block that is not a `table'") - end - block[tag] = block[tag] or {} - - local _, _, name, desc = string.find(text, "^([_%w%.]+)%s+(.*)") - assert(name, "field name not defined") - - table.insert(block[tag], name) - block[tag][name] = desc -end - -------------------------------------------------------------------------------- --- Set the name of the comment block. If the block already has a name, issue --- an error and do not change the previous value - -local function name (tag, block, text) - if block[tag] and block[tag] ~= text then - luadoc.logger:error(string.format("block name conflict: `%s' -> `%s'", block[tag], text)) - end - - block[tag] = text -end - -------------------------------------------------------------------------------- --- Processes a parameter documentation. --- @param tag String with the name of the tag (it must be "param" always). --- @param block Table with previous information about the block. --- @param text String with the current line being processed. - -local function param (tag, block, text) - block[tag] = block[tag] or {} - -- TODO: make this pattern more flexible, accepting empty descriptions - local _, _, name, desc = string.find(text, "^([_%w%.]+)%s+(.*)") - if not name then - luadoc.logger:warn("parameter `name' not defined [["..text.."]]: skipping") - return - end - local i = table.foreachi(block[tag], function (i, v) - if v == name then - return i - end - end) - if i == nil then - luadoc.logger:warn(string.format("documenting undefined parameter `%s'", name)) - table.insert(block[tag], name) - end - block[tag][name] = desc -end - -------------------------------------------------------------------------------- - -local function release (tag, block, text) - block[tag] = text -end - -------------------------------------------------------------------------------- - -local function ret (tag, block, text) - tag = "ret" - if type(block[tag]) == "string" then - block[tag] = { block[tag], text } - elseif type(block[tag]) == "table" then - table.insert(block[tag], text) - else - block[tag] = text - end -end - -------------------------------------------------------------------------------- --- @see ret - -local function see (tag, block, text) - -- see is always an array - block[tag] = block[tag] or {} - - -- remove trailing "." - text = string.gsub(text, "(.*)%.$", "%1") - - local s = util.split("%s*,%s*", text) - - table.foreachi(s, function (_, v) - table.insert(block[tag], v) - end) -end - -------------------------------------------------------------------------------- --- @see ret - -local function usage (tag, block, text) - if type(block[tag]) == "string" then - block[tag] = { block[tag], text } - elseif type(block[tag]) == "table" then - table.insert(block[tag], text) - else - block[tag] = text - end -end - -------------------------------------------------------------------------------- - -local handlers = {} -handlers["author"] = author -handlers["class"] = class -handlers["cstyle"] = cstyle -handlers["copyright"] = copyright -handlers["description"] = description -handlers["field"] = field -handlers["name"] = name -handlers["param"] = param -handlers["release"] = release -handlers["return"] = ret -handlers["see"] = see -handlers["sort"] = sort -handlers["usage"] = usage - -------------------------------------------------------------------------------- - -function handle (tag, block, text) - if not handlers[tag] then - luadoc.logger:error(string.format("undefined handler for tag `%s'", tag)) - return - end - - if text then - text = text:gsub("`([^\n]-)`", "%1") - text = text:gsub("`(.-)`", "
    %1
    ") - end - --- assert(handlers[tag], string.format("undefined handler for tag `%s'", tag)) - return handlers[tag](tag, block, text) -end diff --git a/package/luci/build/luadoc/luadoc/util.lua b/package/luci/build/luadoc/luadoc/util.lua deleted file mode 100644 index 7e9cac6c80..0000000000 --- a/package/luci/build/luadoc/luadoc/util.lua +++ /dev/null @@ -1,201 +0,0 @@ -------------------------------------------------------------------------------- --- General utilities. --- @release $Id: util.lua,v 1.16 2008/02/17 06:42:51 jasonsantos Exp $ -------------------------------------------------------------------------------- - -local posix = require "nixio.fs" -local type, table, string, io, assert, tostring, setmetatable, pcall = type, table, string, io, assert, tostring, setmetatable, pcall - -------------------------------------------------------------------------------- --- Module with several utilities that could not fit in a specific module - -module "luadoc.util" - -------------------------------------------------------------------------------- --- Removes spaces from the beginning and end of a given string --- @param s string to be trimmed --- @return trimmed string - -function trim (s) - return (string.gsub(s, "^%s*(.-)%s*$", "%1")) -end - -------------------------------------------------------------------------------- --- Removes spaces from the beginning and end of a given string, considering the --- string is inside a lua comment. --- @param s string to be trimmed --- @return trimmed string --- @see trim --- @see string.gsub - -function trim_comment (s) - s = string.gsub(s, "^%s*%-%-+%[%[(.*)$", "%1") - s = string.gsub(s, "^%s*%-%-+(.*)$", "%1") - return s -end - -------------------------------------------------------------------------------- --- Checks if a given line is empty --- @param line string with a line --- @return true if line is empty, false otherwise - -function line_empty (line) - return (string.len(trim(line)) == 0) -end - -------------------------------------------------------------------------------- --- Appends two string, but if the first one is nil, use to second one --- @param str1 first string, can be nil --- @param str2 second string --- @return str1 .. " " .. str2, or str2 if str1 is nil - -function concat (str1, str2) - if str1 == nil or string.len(str1) == 0 then - return str2 - else - return str1 .. " " .. str2 - end -end - -------------------------------------------------------------------------------- --- Split text into a list consisting of the strings in text, --- separated by strings matching delim (which may be a pattern). --- @param delim if delim is "" then action is the same as %s+ except that --- field 1 may be preceded by leading whitespace --- @usage split(",%s*", "Anna, Bob, Charlie,Dolores") --- @usage split(""," x y") gives {"x","y"} --- @usage split("%s+"," x y") gives {"", "x","y"} --- @return array with strings --- @see table.concat - -function split(delim, text) - local list = {} - if string.len(text) > 0 then - delim = delim or "" - local pos = 1 - -- if delim matches empty string then it would give an endless loop - if string.find("", delim, 1) and delim ~= "" then - error("delim matches empty string!") - end - local first, last - while 1 do - if delim ~= "" then - first, last = string.find(text, delim, pos) - else - first, last = string.find(text, "%s+", pos) - if first == 1 then - pos = last+1 - first, last = string.find(text, "%s+", pos) - end - end - if first then -- found? - table.insert(list, string.sub(text, pos, first-1)) - pos = last+1 - else - table.insert(list, string.sub(text, pos)) - break - end - end - end - return list -end - -------------------------------------------------------------------------------- --- Comments a paragraph. --- @param text text to comment with "--", may contain several lines --- @return commented text - -function comment (text) - text = string.gsub(text, "\n", "\n-- ") - return "-- " .. text -end - -------------------------------------------------------------------------------- --- Wrap a string into a paragraph. --- @param s string to wrap --- @param w width to wrap to [80] --- @param i1 indent of first line [0] --- @param i2 indent of subsequent lines [0] --- @return wrapped paragraph - -function wrap(s, w, i1, i2) - w = w or 80 - i1 = i1 or 0 - i2 = i2 or 0 - assert(i1 < w and i2 < w, "the indents must be less than the line width") - s = string.rep(" ", i1) .. s - local lstart, len = 1, string.len(s) - while len - lstart > w do - local i = lstart + w - while i > lstart and string.sub(s, i, i) ~= " " do i = i - 1 end - local j = i - while j > lstart and string.sub(s, j, j) == " " do j = j - 1 end - s = string.sub(s, 1, j) .. "\n" .. string.rep(" ", i2) .. - string.sub(s, i + 1, -1) - local change = i2 + 1 - (i - j) - lstart = j + change - len = len + change - end - return s -end - -------------------------------------------------------------------------------- --- Opens a file, creating the directories if necessary --- @param filename full path of the file to open (or create) --- @param mode mode of opening --- @return file handle - -function posix.open (filename, mode) - local f = io.open(filename, mode) - if f == nil then - filename = string.gsub(filename, "\\", "/") - local dir = "" - for d in string.gfind(filename, ".-/") do - dir = dir .. d - posix.mkdir(dir) - end - f = io.open(filename, mode) - end - return f -end - - ----------------------------------------------------------------------------------- --- Creates a Logger with LuaLogging, if present. Otherwise, creates a mock logger. --- @param options a table with options for the logging mechanism --- @return logger object that will implement log methods - -function loadlogengine(options) - local logenabled = pcall(function() - require "logging" - require "logging.console" - end) - - local logging = logenabled and logging - - if logenabled then - if options.filelog then - logger = logging.file("luadoc.log") -- use this to get a file log - else - logger = logging.console("[%level] %message\n") - end - - if options.verbose then - logger:setLevel(logging.INFO) - else - logger:setLevel(logging.WARN) - end - - else - noop = {__index=function(...) - return function(...) - -- noop - end - end} - - logger = {} - setmetatable(logger, noop) - end - - return logger -end diff --git a/package/luci/build/makedocs.sh b/package/luci/build/makedocs.sh deleted file mode 100755 index 955c58cf0e..0000000000 --- a/package/luci/build/makedocs.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -topdir=$(pwd) - -[ -f "$topdir/build/makedocs.sh" -a -n "$1" ] || { - echo "Please execute as ./build/makedocs.sh [output directory]" >&2 - exit 1 -} - -outdir=$(readlink -f "$1") - -mkdir -p "$outdir" || { - echo "Unable to mkdir '$outdir'" >&2 - exit 1 -} - -( - cd "$topdir/build/luadoc/" - find "$topdir/libs/" "$topdir/modules/" -type f -name '*.lua' -or -name '*.luadoc' | \ - xargs grep -l '@return' | xargs ./doc.lua --no-files -d "$outdir" -) diff --git a/package/luci/build/mkbasepot.sh b/package/luci/build/mkbasepot.sh deleted file mode 100755 index 7f07514fca..0000000000 --- a/package/luci/build/mkbasepot.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -[ -d ./build ] || { - echo "Please execute as ./build/mkbasepot.sh" >&2 - exit 1 -} - -echo -n "Updating modules/luci-base/po/templates/base.pot ... " - -./build/i18n-scan.pl \ - modules/luci-base/ modules/luci-mod-admin-full/ \ - protocols/ themes/ \ -> modules/luci-base/po/templates/base.pot - -echo "done" diff --git a/package/luci/build/mkrevision.sh b/package/luci/build/mkrevision.sh deleted file mode 100755 index 02b7fa3710..0000000000 --- a/package/luci/build/mkrevision.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -TOPDIR="${0%mkrevision.sh}" - -[ -d "$TOPDIR/../build" ] || { - echo "Please execute as ./build/mkrevision.sh" >&2 - exit 1 -} - -( - cd "$TOPDIR" - if svn info >/dev/null 2>/dev/null; then - revision="svn-r$(LC_ALL=C svn info | sed -ne 's/^Revision: //p')" - elif git log -1 >/dev/null 2>/dev/null; then - revision="svn-r$(LC_ALL=C git log -1 | sed -ne 's/.*git-svn-id: .*@\([0-9]\+\) .*/\1/p')" - if [ "$revision" = "svn-r" ]; then - set -- $(git log -1 --format="%ct %h") - secs="$(($1 % 86400))" - yday="$(date --utc --date="@$1" "+%y.%j")" - revision="$(printf 'git-%s.%05d-%s' "$yday" "$secs" "$2")" - fi - else - revision="unknown" - fi - - echo "$revision" -) diff --git a/package/luci/build/zoneinfo2lua.pl b/package/luci/build/zoneinfo2lua.pl deleted file mode 100755 index 1a0bee1c68..0000000000 --- a/package/luci/build/zoneinfo2lua.pl +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/perl -# zoneinfo2lua.pl - Make Lua module from /usr/share/zoneinfo -# Execute from within root of Luci feed, usually feeds/luci -# $Id$ - -use strict; - -my %TZ; - -my $tzdin = $ARGV[0] || "/usr/share/zoneinfo"; -my $tzdout = $ARGV[1] || "./modules/luci-base/luasrc/sys/zoneinfo"; - -local $/ = "\012"; -open( ZTAB, "< $tzdin/zone.tab" ) || die "open($tzdin/zone.tab): $!"; - -while( ! eof ZTAB ) { - chomp( my $line = readline ZTAB ); - next if $line =~ /^#/ || $line =~ /^\s+$/; - - my ( undef, undef, $zone, @comment ) = split /\s+/, $line; - - printf STDERR "%-40s", $zone; - - if( open ZONE, "< $tzdin/$zone" ) { - seek ZONE, -2, 2; - - while( tell(ZONE) > 0 ) { - read ZONE, my $char, 1; - ( $char eq "\012" ) ? last : seek ZONE, -2, 1; - } - - chomp( my $tz = readline ZONE ); - print STDERR ( $tz || "(no tzinfo found)" ), "\n"; - close ZONE; - - if( $tz ) { - $zone =~ s/_/ /g; - $TZ{$zone} = $tz; - } - } - else - { - print STDERR "open($tzdin/$zone): $!\n"; - } -} - -close ZTAB; - -# Add Etc/GMT zones from manually as they are not in zone.tab -$TZ{"Etc/GMT"} = "GMT0"; -$TZ{"Etc/GMT-1"} = "<+01>-1"; -$TZ{"Etc/GMT-2"} = "<+02>-2"; -$TZ{"Etc/GMT-3"} = "<+03>-3"; -$TZ{"Etc/GMT-4"} = "<+04>-4"; -$TZ{"Etc/GMT-5"} = "<+05>-5"; -$TZ{"Etc/GMT-6"} = "<+06>-6"; -$TZ{"Etc/GMT-7"} = "<+07>-7"; -$TZ{"Etc/GMT-8"} = "<+08>-8"; -$TZ{"Etc/GMT-9"} = "<+09>-9"; -$TZ{"Etc/GMT-10"} = "<+10>-10"; -$TZ{"Etc/GMT-11"} = "<+11>-11"; -$TZ{"Etc/GMT-12"} = "<+12>-12"; -$TZ{"Etc/GMT-13"} = "<+13>-13"; -$TZ{"Etc/GMT-14"} = "<+14>-14"; -$TZ{"Etc/GMT+1"} = "<-01>1"; -$TZ{"Etc/GMT+2"} = "<-02>2"; -$TZ{"Etc/GMT+3"} = "<-03>3"; -$TZ{"Etc/GMT+4"} = "<-04>4"; -$TZ{"Etc/GMT+5"} = "<-05>5"; -$TZ{"Etc/GMT+6"} = "<-06>6"; -$TZ{"Etc/GMT+7"} = "<-07>7"; -$TZ{"Etc/GMT+8"} = "<-08>8"; -$TZ{"Etc/GMT+9"} = "<-09>9"; -$TZ{"Etc/GMT+10"} = "<-10>10"; -$TZ{"Etc/GMT+11"} = "<-11>11"; -$TZ{"Etc/GMT+12"} = "<-12>12"; - -open(O, "> $tzdout/tzdata.lua") || die "open($tzdout/tzdata.lua): $!\n"; - -print STDERR "Writing time zones to $tzdout/tzdata.lua ... "; -print O < $tzdout/tzoffset.lua") || die "open($tzdout/tzoffset.lua): $!\n"; - -print STDERR "Writing time offsets to $tzdout/tzoffset.lua ... "; -print O < -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TYPE:=col -LUCI_BASENAME:=light - -LUCI_TITLE:=Minimum package set using only admin mini and the standard theme -LUCI_DEPENDS:=+uhttpd +luci-mod-admin-mini +luci-theme-openwrt @BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/collections/luci-ssl-openssl/Makefile b/package/luci/collections/luci-ssl-openssl/Makefile deleted file mode 100644 index d1e752e8b8..0000000000 --- a/package/luci/collections/luci-ssl-openssl/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# -# Copyright (C) 2016 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TYPE:=col -LUCI_BASENAME:=ssl-openssl - -LUCI_TITLE:=LuCI with HTTPS support (OpenSSL as SSL backend) -LUCI_DESCRIPTION:=LuCI with OpenSSL as the SSL backend (libustream-openssl). \ - OpenSSL cmd tools (openssl-util) are used by uhttpd for SSL key generation \ - instead of the default px5g. (If px5g is installed, uhttpd will prefer that.) - -LUCI_DEPENDS:=+luci +libustream-openssl +openssl-util - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/collections/luci-ssl/Makefile b/package/luci/collections/luci-ssl/Makefile deleted file mode 100644 index 399c982d22..0000000000 --- a/package/luci/collections/luci-ssl/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2008-2016 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TYPE:=col -LUCI_BASENAME:=ssl - -LUCI_TITLE:=LuCI with HTTPS support (mbedTLS as SSL backend) -LUCI_DEPENDS:=+luci +libustream-mbedtls +px5g - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/collections/luci/Makefile b/package/luci/collections/luci/Makefile deleted file mode 100644 index 9b495c3187..0000000000 --- a/package/luci/collections/luci/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TYPE:=col -LUCI_BASENAME:=luci - -LUCI_TITLE:=Standard OpenWrt set including full admin with ppp support and the default Bootstrap theme -LUCI_DEPENDS:= \ - +uhttpd +uhttpd-mod-ubus +luci-mod-admin-full +luci-theme-bootstrap \ - +luci-app-firewall +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6 \ - +rpcd-mod-rrdns - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/contrib/package/Makefile b/package/luci/contrib/package/Makefile deleted file mode 100644 index f7fac7740e..0000000000 --- a/package/luci/contrib/package/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -include ../../build/config.mk -include ../../build/module.mk diff --git a/package/luci/contrib/package/community-profiles/Makefile b/package/luci/contrib/package/community-profiles/Makefile deleted file mode 100644 index 1992b7c3b9..0000000000 --- a/package/luci/contrib/package/community-profiles/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (C) 2011 Manuel Munz -# This is free software, licensed under the Apache 2.0 license. - -include $(TOPDIR)/rules.mk - -PKG_NAME:=community-profiles -PKG_RELEASE:=2 - -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/community-profiles - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=9. Freifunk - TITLE:=Community profiles - DEPENDS:=freifunk-common -endef - -define Package/community-profiles/description - These community profiles set defaults for various free network/freifunk communities and are used by wizards like ffwizard and meshwizard. -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/community-profiles/install - $(CP) ./files/* $(1)/ -endef - -$(eval $(call BuildPackage,community-profiles)) diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_Freifunk b/package/luci/contrib/package/community-profiles/files/etc/config/profile_Freifunk deleted file mode 100644 index b8f445a736..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_Freifunk +++ /dev/null @@ -1,10 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk' - option 'homepage' 'http://freifunk.net' - option 'ssid' 'www.freifunk.net' - option 'splash_network' '10.104.0.0/16' - option 'latitude' '52.000' - option 'longitude' '10.000' - option 'splash_prefix' '28' - option 'mesh_network' '10.0.0.0/8' - diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_altmark b/package/luci/contrib/package/community-profiles/files/etc/config/profile_altmark deleted file mode 100644 index 20d51b2fd2..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_altmark +++ /dev/null @@ -1,56 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Altmark' - option 'homepage' 'http://altmark.freifunk.net' - option 'ssid' 'altmark.freifunk.net' - option 'mesh_network' '10.59.0.0/16' - option 'latitude' '52.885' - option 'longitude' '11.15' - option 'suffix' 'olsr.altmark.freifunk.net' - option 'vap' '1' - option 'adhoc_dhcp_when_vap' '0' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '40' '02:40:CA:FF:EE:EE' - -config 'defaults' 'wifi_device' - option 'country' 'DE' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' - -config 'defaults' 'olsrd' - option 'LinkQualityAlgorithm' 'etx_ff' - - -config widget 'customindex' - option enabled '1' - option width '50%' - option paddingright '5%' - option template 'html' - -config widget 'rssffl' - option enabled '1' - option max '10' - option cache '3600' - option width '100%' - option title 'Freifunk Blog' - option template 'iframe' - option url 'http://freifunk.net' - -config widget 'rssbundesweit' - option cache '3600' - option width '50%' - option title 'bundesweiter Freifunk Blog' - option template 'rssfeed' - option enabled '1' - option max '10' - option url 'http://blog.freifunk.net/rss.xml' - -config widget 'clear1' - option template 'clear' - option enabled '1' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_arad b/package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_arad deleted file mode 100644 index 55d012fb99..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_arad +++ /dev/null @@ -1,22 +0,0 @@ -config 'community' 'profile' - option 'name' 'arig Arad' - option 'homepage' 'http://arig.org.il' - option 'ssid' 'arig.org.il' - option 'latitude' '31.26' - option 'longitude' '35.21' - option 'splash_prefix' '28' - option 'suffix' 'arig' - option 'mesh_network' '10.81.8.0/22' - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '13' '13:CA:FF:EE:BA:BE' - -config 'defaults' 'wifi_device' - option 'channel' '13' - option 'country' 'IL' - option 'beacon_int' '5000' - option 'distance' '1500' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_neot_semadar b/package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_neot_semadar deleted file mode 100644 index 062b18e202..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_neot_semadar +++ /dev/null @@ -1,22 +0,0 @@ -config 'community' 'profile' - option 'name' 'arig Neot Semadar' - option 'homepage' 'http://www.neot-semadar.com' - option 'ssid' 'arig.org.il' - option 'latitude' '30.05' - option 'longitude' '35.02' - option 'splash_prefix' '272' - option 'suffix' 'arig' - option 'mesh_network' '10.81.12.0/22' - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '13' '13:CA:FF:EE:BA:BE' - -config 'defaults' 'wifi_device' - option 'channel' '13' - option 'country' 'IL' - option 'beacon_int' '5000' - option 'distance' '1500' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_tel-aviv b/package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_tel-aviv deleted file mode 100644 index fe7df226db..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_arig_tel-aviv +++ /dev/null @@ -1,22 +0,0 @@ -config 'community' 'profile' - option 'name' 'arig Tel Aviv' - option 'homepage' 'http://arig.org.il' - option 'ssid' 'arig.org.il' - option 'latitude' '32.056' - option 'longitude' '34.772' - option 'splash_prefix' '28' - option 'suffix' 'arig' - option 'mesh_network' '10.81.0.0/21' - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '13' '13:CA:FF:EE:BA:BE' - -config 'defaults' 'wifi_device' - option 'channel' '13' - option 'country' 'IL' - option 'beacon_int' '5000' - option 'distance' '1500' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_augsburg b/package/luci/contrib/package/community-profiles/files/etc/config/profile_augsburg deleted file mode 100644 index 4ab82cf5da..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_augsburg +++ /dev/null @@ -1,64 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Augsburg' - option 'homepage' 'http://augsburg.freifunk.net' - option 'ssid' 'augsburg.freifunk.net' - option 'mesh_network' '10.11.0.0/18' - option 'splash_network' '10.104.0.0/16' - option 'latitude' '48.37071' - option 'longitude' '10.89475' - option 'suffix' 'ffa' - option 'splash_prefix' '27' - option 'vap' '1' - option adhoc_dhcp_when_vap '1' - option 'ipv6' '1' - option 'ipv6_config' 'auto-ipv6-fromv4' - option 'ipv6_prefix' 'fdca:ffee:ffa::/48' - #option 'extrapackages' '' - -config 'defaults' 'interface' - option 'netmask' '255.255.192.0' - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - -config 'defaults' 'luci_splash' - option 'limit_up' '40' - option 'limit_down' '120' - option 'leasetime' '8' - -config widget 'customindex' - option enabled '1' - option width '50%' - option paddingright '5%' - option template 'html' - -config widget 'rssffa' - option enabled '1' - option max '10' - option cache '3600' - option width '50%' - option title 'Freifunk Augsburg Blog' - option template 'rssfeed' - option url 'http://augsburg.freifunk.net/blog?type=100' - -config widget 'rssaugsburg' - option cache '3600' - option width '50%' - option title 'Augsburger Blogs' - option template 'rssfeed' - option enabled '1' - option max '10' - option url 'http://wgaugsburg.de/augsburg/rss20.xml' - -config widget 'search' - option template 'search' - option title 'Search' - option enabled '1' - option width '50%' - list engine 'Google|http://www.google.de/search?q=' - list engine 'Freifunk Augsburg|http://www.google.de/search?q=site:augsburg.freifunk.net+' - list engine 'Freifunk Wiki|http://wiki.freifunk.net/index.php?search=' - -config widget 'clear1' - option template 'clear' - option enabled '1' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_bayreuth b/package/luci/contrib/package/community-profiles/files/etc/config/profile_bayreuth deleted file mode 100644 index 90fccbd812..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_bayreuth +++ /dev/null @@ -1,20 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Bayreuth' - option 'homepage' 'http://bayreuth.freifunk.net' - option 'ssid' 'bayreuth.freifunk.net' - option 'mesh_network' '10.195.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'latitude' '49.945812' - option 'longitude' '11.575045' - option 'suffix' 'ffbt' - option 'splash_prefix' '28' - -config 'defaults' 'interface' - option 'netmask' '255.255.192.0' - -config 'defaults' 'wifi_device' - option 'channel' '4' - -config 'defaults' 'wifi_iface' - option 'bssid' '42:CA:FF:EE:BA:BE' - diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_bergischesland b/package/luci/contrib/package/community-profiles/files/etc/config/profile_bergischesland deleted file mode 100644 index 0de4543039..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_bergischesland +++ /dev/null @@ -1,15 +0,0 @@ -config 'community' 'profile' - option 'name' 'Piratenfreifunk Bergisches Land' - option 'homepage' 'http://www.piraten-bergisches-land.de' - option 'ssid' 'PiratenfunkBL' - option 'mesh_network' '10.3.0.0/16' - option 'splash_network' '192.168.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '51.26849' - option 'longitude' '7.19476' - -config 'defaults' 'wifi_device' - option 'channel' '11' - -config 'defaults' 'wifi_iface' - option 'bssid' '02:40:00:42:42:42' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_berlin b/package/luci/contrib/package/community-profiles/files/etc/config/profile_berlin deleted file mode 100644 index 1bfc8ed7d7..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_berlin +++ /dev/null @@ -1,39 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Berlin' - option 'homepage' 'http://berlin.freifunk.net' - option 'ssid' 'berlin.freifunk.net' - option 'ssid_scheme' 'addchannelbefore' - option 'mesh_network' '104.0.0.0/8' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '52.52075' - option 'longitude' '13.40948' - option 'owm_api' 'http://util.berlin.freifunk.net' - -config 'defaults' 'wifi_device' - option 'channel' '13' - -config 'defaults' 'wifi_device_5' - option 'channel' '36' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' - -config 'defaults' 'wifi_iface_5' - option 'mcast_rate' '12000' - -config 'defaults' 'bssidscheme' - option '10' '02:CA:FF:EE:BA:BE' - option '13' 'D2:CA:FF:EE:BA:BE' - option '36' '02:36:CA:FF:EE:EE' - -config 'defaults' 'ssidscheme' - option '13' 'intern-ch13.freifunk.net' - option '36' 'intern-ch36.freifunk.net' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168 2001:4ce8::53 2001:910:800::12' - -config 'dhcp' 'dhcp' - option leasetime '5m' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_carbodebit b/package/luci/contrib/package/community-profiles/files/etc/config/profile_carbodebit deleted file mode 100644 index 0b263f9c0e..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_carbodebit +++ /dev/null @@ -1,23 +0,0 @@ -config 'community' 'profile' - option 'name' 'carbodebit' - option 'homepage' 'http://carbodebit.net' - option 'ssid' 'VHDCARBES' - option 'mesh_network' '10.72.1.0/24' - option 'latitude' '43.633683' - option 'longitude' '2.160894' - -config 'defaults' 'wifi_iface' - option 'bssid' 'DE:78:70:E4:FA:B8' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.0' - option 'dns' '10.70.1.1 213.190.64.170 213.190.64.166' - -config 'defaults' 'wifi_device' - option 'channel' '11' - option 'country' 'FR' - option 'distance' '2000' - -config 'defaults' 'bssidscheme' - option 'all' 'DE:78:70:E4:FA:B8' - diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_cottbus b/package/luci/contrib/package/community-profiles/files/etc/config/profile_cottbus deleted file mode 100644 index 6f395a1332..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_cottbus +++ /dev/null @@ -1,37 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Cottbus' - option 'homepage' 'http://cottbus.freifunk.net' - option 'ssid' 'cottbus.freifunk.net' - option 'ssid_scheme' 'ssidonly' - option 'mesh_network' '10.35.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '51.757689' - option 'longitude' '13.40948' - -config 'defaults' 'wifi_device' - option 'channel' '13' - -config 'defaults' 'wifi_device_5' - option 'channel' '36' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' - -config 'defaults' 'wifi_iface_5' - option 'mcast_rate' '12000' - -config 'defaults' 'bssidscheme' - option '13' 'D2:CA:FF:EE:BA:BE' - option '36' '02:36:CA:FF:EE:EE' - -config 'defaults' 'ssidscheme' - option '13' 'intern-ch13.cottbus.freifunk.net' - option '36' 'intern-ch36.cottbus.freifunk.net' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168 2001:4ce8::53 2001:910:800::12' - -config 'dhcp' 'dhcp' - option 'leasetime' '5m' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_demo b/package/luci/contrib/package/community-profiles/files/etc/config/profile_demo deleted file mode 100644 index c11a74f269..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_demo +++ /dev/null @@ -1,21 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Demo' - option 'homepage' 'http://www.freifunk.net' - option 'ssid' 'demo.freifunk.net' - option 'mesh_network' '10.11.12.0/24' - option 'latitude' '51.163375' - option 'longitude' '10.447683' - option 'suffix' 'ff' - option 'vap' '1' - option adhoc_dhcp_when_vap '1' - option 'ipv6' '1' - option 'ipv6_config' 'auto-ipv6-fromv4' - option 'ipv6_prefix' 'fdca:ffff:ffff::/48' - #option 'extrapackages' '' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.0' - -config 'defaults' 'luci_splash' - option 'limit_up' '50' - option 'limit_down' '200' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_duesseldorf b/package/luci/contrib/package/community-profiles/files/etc/config/profile_duesseldorf deleted file mode 100644 index cb36aabf69..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_duesseldorf +++ /dev/null @@ -1,15 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Duesseldorf' - option 'homepage' 'http://freifunk-duesseldorf.de' - option 'ssid' 'duesseldorf.freifunk.net' - option 'mesh_network' '10.40.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '51.217812' - option 'longitude' '6.761564' - -config 'defaults' 'wifi_device' - option 'channel' '3' - -config 'defaults' 'wifi_iface' - option 'bssid' '02:CA:FF:EE:BA:BE' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_erfurt b/package/luci/contrib/package/community-profiles/files/etc/config/profile_erfurt deleted file mode 100644 index dba31a0b0c..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_erfurt +++ /dev/null @@ -1,48 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Erfurt' - option 'homepage' 'http://erfurt.freifunk.net' - option 'ssid' 'erfurt.freifunk.net' - option 'mesh_network' '10.99.0.0/16' - option 'latitude' '50.9768' - option 'longitude' '11.02367' - option 'suffix' 'olsr.erfurt.freifunk.net' - option 'vap' '1' - option 'adhoc_dhcp_when_vap' '0' - -config 'defaults' 'interface' - option 'netmask' '255.255.0.0' - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - -config 'defaults' 'olsrd' - option 'LinkQualityAlgorithm' 'etx_ff' - - -config widget 'customindex' - option enabled '1' - option width '50%' - option paddingright '5%' - option template 'html' - -config widget 'rssffl' - option enabled '1' - option max '10' - option cache '3600' - option width '100%' - option title 'Freifunk Blog' - option template 'iframe' - option url 'http://freifunk.net' - -config widget 'rssbundesweit' - option cache '3600' - option width '50%' - option title 'bundesweiter Freifunk Blog' - option template 'rssfeed' - option enabled '1' - option max '10' - option url 'http://blog.freifunk.net/rss.xml' - -config widget 'clear1' - option template 'clear' - option enabled '1' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_evernet b/package/luci/contrib/package/community-profiles/files/etc/config/profile_evernet deleted file mode 100644 index 05453608dc..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_evernet +++ /dev/null @@ -1,25 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Evernet eG' - option 'homepage' 'http://www.evernet-eg.de' - option 'ssid' 'evernet.freifunk.net' - option 'mesh_network' '10.0.0.0/8' - option 'latitude' '51.15692062509162' - option 'longitude' '10.716041922569275' - option 'suffix' 'evernet' - -config 'defaults' 'interface' - option 'netmask' '255.0.0.0' - -config 'defaults' 'bssidscheme' - option 'all' '02:CA:FF:EE:BA:BE' - -config 'defaults' 'wifi_device' - option 'channel' '13' - option 'country' 'DE' - option 'txpower' '19' - option 'beacon_int' '5000' - option 'distance' '1500' - option 'noscan' '0' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_freiburg b/package/luci/contrib/package/community-profiles/files/etc/config/profile_freiburg deleted file mode 100644 index eee3d6ad0d..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_freiburg +++ /dev/null @@ -1,45 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Freiburg' - option 'homepage' 'http://freiburg.freifunk.net' - option 'ssid' '02:CA:FF:EE:BA:BE' - option 'mesh_network' '10.60.0.0/16' - option 'latitude' '47.994841' - option 'longitude' '7.849772' - option 'suffix' 'olsr.freiburg.freifunk.net' - option 'vap' '1' - option 'adhoc_dhcp_when_vap' '0' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '40' '02:40:CA:FF:EE:EE' - -config 'defaults' 'wifi_device' - option 'country' 'DE' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' - -config 'defaults' 'olsrd' - option 'LinkQualityAlgorithm' 'etx_ff' - -config widget 'customindex' - option enabled '1' - option width '50%' - option paddingright '5%' - option template 'html' - -config widget 'rssbundesweit' - option cache '3600' - option width '50%' - option title 'bundesweiter Freifunk Blog' - option template 'rssfeed' - option enabled '1' - option max '10' - option url 'http://blog.freifunk.net/rss.xml' - -config widget 'clear1' - option template 'clear' - option enabled '1' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_gadow b/package/luci/contrib/package/community-profiles/files/etc/config/profile_gadow deleted file mode 100644 index bc4a2036cf..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_gadow +++ /dev/null @@ -1,23 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Gadow' - option 'homepage' 'http://gadow.freifunk.net' - option 'ssid' 'gadow.freifunk.net' - option 'mesh_network' '10.61.0.0/16' - option 'latitude' '53.11' - option 'longitude' '12.61' - option 'vap' '1' - option 'adhoc_dhcp_when_vap' '0' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '40' '02:40:CA:FF:EE:EE' - -config 'defaults' 'wifi_device' - option 'country' 'DE' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_guifibages b/package/luci/contrib/package/community-profiles/files/etc/config/profile_guifibages deleted file mode 100644 index a0fc4fc1e4..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_guifibages +++ /dev/null @@ -1,19 +0,0 @@ -config 'community' 'profile' - option 'name' 'Guifi Bages' - option 'homepage' 'http://guifi.net/PlaBages' - option 'ssid' 'guifibages' - option 'mesh_network' '10.224.3.0/16' - option 'splash_network' '10.104.0.0/16' - option 'theme' 'luci-theme-freifunk-generic' - option 'latitude' '41.718437' - option 'longitude' '1.826477' - option 'suffix' 'guifibages.cat' - option 'splash_prefix' '27' - option 'extrapackages' 'luci-app-olsr-viz luci-i18n-catalan' - -config 'defaults' 'interface' - option 'netmask' '255.255.0.0' - -config 'defaults' 'bssidscheme' - option 'all' '12:34:56:78:9a:bc' - diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_halle b/package/luci/contrib/package/community-profiles/files/etc/config/profile_halle deleted file mode 100644 index 30d0e8fa4f..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_halle +++ /dev/null @@ -1,71 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Halle' - option 'homepage' 'http://freifunk-halle.org' - option 'ssid' 'halle.freifunk.net' - option 'mesh_network' '10.62.0.0/16' - option 'splash_network' '6.0.0.0/8' - option 'splash_prefix' '27' - option 'latitude' '51.47911' - option 'longitude' '11.96901' - option 'adhoc_dhcp_when_vap' '0' - option 'suffix' 'ffhal' - option 'vap' '1' - option 'batman' '1' - -config 'defaults' 'wifi_device' - option 'channel' '13' - option 'country' 'DE' - -config 'defaults' 'bssidscheme' - option 'all' '02:CA:FF:EE:BA:BE' - -config 'defaults' 'luci_splash' - option 'redirect_url' 'http://freifunk-halle.org/willkommen.php' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' - -config 'defaults' 'dhcp' - option 'leasetime' '5m' - -config 'defaults' 'olsrd' - option 'AllowNoInt' 'yes' - option 'FIBMetric' 'flat' - option 'Pollrate' '0.025' - option 'TcRedundancy' '2' - option 'NatThreshold' '0.75' - option 'LinkQualityAlgorithm' 'etx_ff' - option 'LinkQualityFishEye' '1' - option 'Willingness' '3' - -config 'defaults' 'olsr_interface' - option 'Ip4Broadcast' '255.255.255.255' - option 'HelloInterval' '5.0' - option 'HelloValidityTime' '125.0' - option 'TcInterval' '3.0' - option 'TcValidityTime' '375.0' - option 'MidInterval' '25.0' - option 'MidValidityTime' '375.0' - option 'HnaInterval' '25.0' - option 'HnaValidityTime' '375.0' - -config widget 'rsshalle' - option cache '3600' - option width '50%' - option title 'neuste Foreneinträge in Halle' - option template 'rssfeed' - option enabled '1' - option max '5' - option url 'http://www.freifunk-halle.org/rss.php' - -config widget 'rssbundesweit' - option cache '3600' - option width '50%' - option title 'bundesweiter Freifunk Blog' - option template 'rssfeed' - option enabled '1' - option max '10' - option url 'http://blog.freifunk.net/rss.xml' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_hameln b/package/luci/contrib/package/community-profiles/files/etc/config/profile_hameln deleted file mode 100644 index f305b597a1..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_hameln +++ /dev/null @@ -1,15 +0,0 @@ -config 'community' 'profile' - option 'name' 'Hameln' - option 'homepage' 'http://freifunk-hameln.de' - option 'ssid' 'hameln.freifunk.net' - option 'suffix' 'ffhm' - option 'latitude' '52.1030706' - option 'longitude' '9.3514778' - option 'mesh_network' '10.31.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '27' - option 'vap' '1' - option adhoc_dhcp_when_vap '1' - -config 'defaults' 'interface' - option 'netmask' '255.255.0.0' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_hannover b/package/luci/contrib/package/community-profiles/files/etc/config/profile_hannover deleted file mode 100644 index 008b6c70e3..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_hannover +++ /dev/null @@ -1,12 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Hannover' - option 'homepage' 'http://hannover.freifunk.net' - option 'ssid' 'hannover.freifunk.net' - option 'mesh_network' '10.2.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '52.38427' - option 'longitude' '9.74359' - -config 'defaults' 'wifi_iface' - option 'bssid' 'CA:FF:EE:CA:FF:EE' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_hooge b/package/luci/contrib/package/community-profiles/files/etc/config/profile_hooge deleted file mode 100644 index 62f6fa9af6..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_hooge +++ /dev/null @@ -1,22 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Hooge' - option 'homepage' 'http://hooge.freifunk.net' - option 'ssid' 'hooge.freifunk.net' - option 'mesh_network' '10.11.128.0/24' - option 'splash_network' '10.104.0.0/16' - option 'latitude' '54.572161' - option 'longitude' '8.559551' - option 'suffix' 'hooge' - option 'splash_prefix' '27' - option 'vap' '1' - option 'extrapackages' '' - list 'owm_api' 'http://api.openwifimap.net' - list 'owm_api' 'http://owmapi.pberg.freifunk.net' - option 'mapserver' 'http://openwifimap.net/' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.0' - -config 'defaults' 'luci_splash' - option 'limit_up' '20' - option 'limit_down' '50' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_kiberpipa b/package/luci/contrib/package/community-profiles/files/etc/config/profile_kiberpipa deleted file mode 100644 index c2a96e47cc..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_kiberpipa +++ /dev/null @@ -1,15 +0,0 @@ -config 'community' 'profile' - option 'name' 'Kiberpipa.net' - option 'homepage' 'http://www.kiberpipa.net' - option 'ssid' 'open.kiberpipa.net' - option 'mesh_network' '10.14.0.0/16' - option 'splash_network' '10.14.128.0/17' - option 'splash_prefix' '27' - option 'latitude' '46.05063' - option 'longitude' '14.50402' - -config 'defaults' 'wifi_device' - option 'channel' '8' - -config 'defaults' 'interface' - option 'dns' '10.14.0.1 208.67.222.220 208.67.220.222' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_kyritz b/package/luci/contrib/package/community-profiles/files/etc/config/profile_kyritz deleted file mode 100644 index f97e79f9ce..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_kyritz +++ /dev/null @@ -1,57 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Kyritz' - option 'homepage' 'http://kyritz.freifunk.net' - option 'ssid' 'mesh.freifunk.net' - option 'mesh_network' '104.59.0.0/16' - option 'latitude' '52.94' - option 'longitude' '12.4' - option 'suffix' 'olsr.kyritz.freifunk.net' - option 'vap' '1' - option 'adhoc_dhcp_when_vap' '0' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '40' '02:40:CA:FF:EE:EE' - -config 'defaults' 'wifi_device' - option 'country' 'DE' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' - - -config 'defaults' 'olsrd' - option 'LinkQualityAlgorithm' 'etx_ff' - - -config widget 'customindex' - option enabled '1' - option width '50%' - option paddingright '5%' - option template 'html' - -config widget 'rssffl' - option enabled '1' - option max '10' - option cache '3600' - option width '100%' - option title 'Freifunk Blog' - option template 'iframe' - option url 'http://freifunk.net' - -config widget 'rssbundesweit' - option cache '3600' - option width '50%' - option title 'bundesweiter Freifunk Blog' - option template 'rssfeed' - option enabled '1' - option max '10' - option url 'http://blog.freifunk.net/rss.xml' - -config widget 'clear1' - option template 'clear' - option enabled '1' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_l59 b/package/luci/contrib/package/community-profiles/files/etc/config/profile_l59 deleted file mode 100644 index 5e6f472ba9..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_l59 +++ /dev/null @@ -1,25 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk L59' - option 'homepage' 'http://freifunk.net' - option 'ssid' 'freifunk.net' - option 'mesh_network' '10.59.0.0/16' - option 'splash_network' '6.59.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '52.26337' - option 'longitude' '10.52103' - option 'vap' '1' - option 'adhoc_dhcp_when_vap' '0' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '40' '02:40:CA:FF:EE:EE' - -config 'defaults' 'wifi_device' - option 'country' 'DE' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_leipzig b/package/luci/contrib/package/community-profiles/files/etc/config/profile_leipzig deleted file mode 100644 index 671f3e8536..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_leipzig +++ /dev/null @@ -1,55 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Leipzig' - option 'homepage' 'http://leipzig.freifunk.net' - option 'ssid' 'leipzig.freifunk.net' - option 'mesh_network' '10.61.0.0/16' - option 'latitude' '51.33348' - option 'longitude' '12.40297' - option 'suffix' 'olsr.leipzig.freifunk.net' - option 'vap' '1' - option 'adhoc_dhcp_when_vap' '0' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '40' '02:40:CA:FF:EE:EE' - -config 'defaults' 'wifi_device' - option 'country' 'DE' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' - -config 'defaults' 'olsrd' - option 'LinkQualityAlgorithm' 'etx_ff' - - -config widget 'customindex' - option enabled '1' - option width '50%' - option paddingright '5%' - option template 'html' - -config widget 'rssffl' - option enabled '1' - option max '10' - option cache '3600' - option width '100%' - option title 'Freifunk Leipzig Blog' - option template 'iframe' - option url 'http://leipzig.freifunk.net' - -config widget 'rssbundesweit' - option cache '3600' - option width '50%' - option title 'bundesweiter Freifunk Blog' - option template 'rssfeed' - option enabled '1' - option max '10' - option url 'http://blog.freifunk.net/rss.xml' - -config widget 'clear1' - option template 'clear' - option enabled '1' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_marburg b/package/luci/contrib/package/community-profiles/files/etc/config/profile_marburg deleted file mode 100644 index 18cff80e59..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_marburg +++ /dev/null @@ -1,12 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Marburg' - option 'homepage' ' http://marburg.freifunk.de' - option 'ssid' 'marburg.freifunk.net' - option 'mesh_network' '10.128.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '29' - option 'latitude' '49.63939' - option 'longitude' '8.633718' - -config 'defaults' 'interface' - option 'dns' '8.8.8.8 212.204.49.83' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_oldenburg b/package/luci/contrib/package/community-profiles/files/etc/config/profile_oldenburg deleted file mode 100644 index e967fdb439..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_oldenburg +++ /dev/null @@ -1,15 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Oldenburg' - option 'homepage' 'http://oldenburg.freifunk.net' - option 'ssid' 'oldenburg.freifunk.net' - option 'mesh_network' '10.18.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '53.14083' - option 'longitude' '8.21314' - -config 'defaults' 'wifi_device' - option 'channel' '6' - -config 'defaults' 'wifi_iface' - option 'bssid' '02:CA:FF:EE:BA:BE' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_openwireless_bern b/package/luci/contrib/package/community-profiles/files/etc/config/profile_openwireless_bern deleted file mode 100644 index 810ad8f1cc..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_openwireless_bern +++ /dev/null @@ -1,18 +0,0 @@ -config 'community' 'profile' - option 'name' 'Openwireless Bern' - option 'homepage' 'http://bern.openwireless.ch/' - option 'ssid' 'www.openwireless.ch' - option 'mesh_network' '10.247.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '50.814788' - option 'longitude' '8.769239' - -config 'defaults' 'interface' - option 'dns' '208.67.222.222 208.67.220.220' - -config 'defaults' 'wifi_device' - option 'channel' '10' - option 'country' '756' - - diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_piraten_dresden b/package/luci/contrib/package/community-profiles/files/etc/config/profile_piraten_dresden deleted file mode 100644 index 2af0e319db..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_piraten_dresden +++ /dev/null @@ -1,12 +0,0 @@ -config 'community' 'profile' - option 'name' 'Piratenfreifunk Dresden' - option 'homepage' 'http://www.piraten-sachsen.de/' - option 'ssid' 'dresden.freifunk.net' - option 'mesh_network' '10.12.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '51.05081' - option 'longitude' '13.73420' - -config 'defaults' 'wifi_device' - option 'channel' '1' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_potsdam b/package/luci/contrib/package/community-profiles/files/etc/config/profile_potsdam deleted file mode 100644 index 9bdb603239..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_potsdam +++ /dev/null @@ -1,35 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Potsdam' - option 'homepage' 'http://potsdam.freifunk.net' - option 'ssid' 'Freifunk-Potsdam-XXX-YYY' - option 'mesh_network' '10.22.0.0/16' - option 'splash_network' '192.168.22.0/24' - option 'splash_prefix' '24' - option 'latitude' '52.39349' - option 'longitude' '13.06489' - option 'ipv6' '0' - -config 'defaults' 'interface' - option 'netmask' '255.255.0.0' - option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168' - option 'delegate' '0' - -config 'defaults' 'wifi_device' - option 'channel' '5' - -config 'defaults' 'wifi_device_5' - option 'channel' '44' - -config 'defaults' 'bssidscheme' - option '5' '02:CA:FF:EE:BA:BE' - option '44' '02:CA:FF:EE:BA:BE' - -config 'defaults' 'ssidscheme' - option '5' 'Mesh23' - option '44' 'Mesh23' - -config 'defaults' 'dhcp' - option 'leasetime' '15m' - -config 'defaults' 'olsrd' - option 'LinkQualityAlgorithm' 'etx_ffeth' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_reihen b/package/luci/contrib/package/community-profiles/files/etc/config/profile_reihen deleted file mode 100644 index a05d6a2964..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_reihen +++ /dev/null @@ -1,25 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Reihen' - option 'homepage' 'http://freifunk.reihen.de' - option 'ssid' 'freifunk.reihen.de' - option 'mesh_network' '172.23.0.0/16' - option 'splash_network' '172.23.26.0/29' - option 'latitude' '49.21' - option 'longitude' '8.91' - option 'splash_prefix' '29' - -config 'defaults' 'interface' - option 'netmask' '255.255.0.0' - option 'dns' '172.23.25.204 172.23.31.237 141.1.1.1' - -config 'defaults' 'wifi_device' - option 'channel' '13' - option 'bssid' '02:07:04:08:08:09' - -config 'defaults' 'bssidscheme' - option '13' '02:07:04:08:08:09' - option '36' '02:36:CA:FF:EE:EE' - -config 'defaults' 'ssidscheme' - option '13' 'ch13.freifunk.net' - option '36' 'ch36.freifunk.net' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_rosbach b/package/luci/contrib/package/community-profiles/files/etc/config/profile_rosbach deleted file mode 100644 index 4444f70998..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_rosbach +++ /dev/null @@ -1,15 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Rosbach' - option 'homepage' 'freifunk-rosbach.de' - option 'ssid' 'rosbach.freifunk.net' - option 'mesh_network' '10.212.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '50.18' - option 'longitude' '8.42' - -config 'defaults' 'wifi_device' - option 'channel' '13' - -config 'defaults' 'wifi_iface' - option 'bssid' 'D2:CA:FF:EE:BA:BE' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_schwarzach b/package/luci/contrib/package/community-profiles/files/etc/config/profile_schwarzach deleted file mode 100644 index c973ca0a7b..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_schwarzach +++ /dev/null @@ -1,12 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Schwarzach' - option 'homepage' 'http://schwarzach.freifunk.net' - option 'ssid' 'schwarzach.freifunk.net' - option 'mesh_network' '10.81.0.0/20' - option 'splash_network' '10.104.0.0/16' - option 'latitude' '49.373' - option 'longitude' '8.983' - option 'splash_prefix' '27' - -config 'defaults' 'interface' - option 'netmask' '255.255.240.0' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_stuttgart b/package/luci/contrib/package/community-profiles/files/etc/config/profile_stuttgart deleted file mode 100644 index 28d60d8df4..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_stuttgart +++ /dev/null @@ -1,13 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Stuttgart' - option 'homepage' 'http://freifunk-stuttgart.de' - option 'ssid' 'Freifunk Stuttgart' - option 'mesh_network' '172.21.0.0/16' - option 'splash_network' '10.104.0.0/16' - option 'latitude' '48' - option 'longitude' '9' - option 'splash_prefix' '27' - -config 'defaults' 'wifi_device' - option 'channel' '5' - option 'bssid' '52:CA:FF:EE:BA:BE' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_tulumlibre b/package/luci/contrib/package/community-profiles/files/etc/config/profile_tulumlibre deleted file mode 100644 index ecc6f9bc43..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_tulumlibre +++ /dev/null @@ -1,10 +0,0 @@ -config 'community' 'profile' - option 'name' 'tulumlibre' - option 'ssid' 'tulumlibre' - option 'mesh_network' '10.39.128.0/18' - option 'latitude' '20.2106708' - option 'longitude' '-87.4629471' - option 'splash_prefix' '28' - -config 'defaults' 'interface' - option 'dns' '213.73.91.35 216.87.84.211' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_vogtland b/package/luci/contrib/package/community-profiles/files/etc/config/profile_vogtland deleted file mode 100644 index 8baeec6d12..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_vogtland +++ /dev/null @@ -1,23 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Vogtland' - option 'homepage' 'http://wiki.freifunk.net/Freifunk_Vogtland' - option 'ssid' 'vogtland.freifunk.net' - option 'mesh_network' '10.204.0.0/16' - option 'splash_network' '6.204.0.0/16' - option 'splash_prefix' '27' - option 'latitude' '53.11' - option 'longitude' '12.61' - -config 'defaults' 'interface' - option 'netmask' '255.255.255.255' - - -config 'defaults' 'bssidscheme' - option '1' '02:CA:FF:EE:BA:BE' - option '40' '02:40:CA:FF:EE:EE' - -config 'defaults' 'wifi_device' - option 'country' 'DE' - -config 'defaults' 'wifi_iface' - option 'mcast_rate' '6000' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_weil b/package/luci/contrib/package/community-profiles/files/etc/config/profile_weil deleted file mode 100644 index ddba1f3580..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_weil +++ /dev/null @@ -1,23 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Weil am Rhein' - option 'homepage' 'http://weil-am-rhein.freifunk.net' - option 'ssid' 'mesh.freifunk.net' - option 'mesh_network' '10.119.0.0/18' - option 'latitude' '47.6056' - option 'longitude' '7.6083' - option 'suffix' 'ffwr' - option 'vap' '1' - option 'adhoc_dhcp_when_vap' '0' - list 'owm_api' 'http://api.openwifimap.net' - list 'owm_api' 'http://owmapi.pberg.freifunk.net' - option 'mapserver' 'http://openwifimap.net/' - -config 'defaults' 'interface' - option 'netmask' '255.255.192.0' - -config 'defaults' 'wifi_device' - option 'country' 'DE' - option 'channel' '10' - -config 'defaults' 'luci_splash' - option 'leasetime' '24' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_weimar b/package/luci/contrib/package/community-profiles/files/etc/config/profile_weimar deleted file mode 100644 index 65938e744b..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_weimar +++ /dev/null @@ -1,10 +0,0 @@ -config 'community' 'profile' - option 'name' 'Weimarnetz e.V.' - option 'homepage' 'http://www.weimarnetz.de' - option 'ssid' 'weimarnetz' - option 'mesh_network' '10.63.0.0/16' - option 'latitude' '50.989530' - option 'longitude' '11.338675' - -config 'defaults' 'interface' - option 'dns' '217.11.48.200 217.11.49.200 8.8.8.8' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_weinstadt b/package/luci/contrib/package/community-profiles/files/etc/config/profile_weinstadt deleted file mode 100644 index 49a42fa63d..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_weinstadt +++ /dev/null @@ -1,19 +0,0 @@ -config 'community' 'profile' - option 'name' 'Freifunk Weinstadt' - option 'homepage' 'http://freifunk-weinstadt.de' - option 'ssid' 'freifunk-weinstadt' - option 'mesh_network' '172.21.0.0/16' - option 'splash_network' '172.21.85.0/30' - option 'latitude' '48.81' - option 'longitude' '9.39' - option 'splash_prefix' '30' - -config 'defaults' 'wifi_device' - option 'channel' '13' - option 'bssid' '02:07:01:03:08:04' - -config 'defaults' 'bssidscheme' - option '13' '02:07:01:03:08:04' - -config 'defaults' 'interface' - option 'dns' '172.21.77.4 172.21.84.235 141.1.1.1' diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_wlanljubljana b/package/luci/contrib/package/community-profiles/files/etc/config/profile_wlanljubljana deleted file mode 100644 index eeefbd22b6..0000000000 --- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_wlanljubljana +++ /dev/null @@ -1,15 +0,0 @@ -config 'community' 'profile' - option 'name' 'wlan ljubljana' - option 'homepage' 'http://wlan-lj.net' - option 'ssid' 'open.wlan-lj.net' - option 'mesh_network' '10.254.0.0/16' - option 'splash_network' '10.254.120.0/21' - option 'splash_prefix' '27' - option 'latitude' '46.05063' - option 'longitude' '14.50402' - -config 'defaults' 'wifi_device' - option 'channel' '8' - -config 'defaults' 'interface' - option 'dns' '10.254.0.1 10.254.0.2' diff --git a/package/luci/contrib/package/freifunk-common/Makefile b/package/luci/contrib/package/freifunk-common/Makefile deleted file mode 100644 index 2b9336fb06..0000000000 --- a/package/luci/contrib/package/freifunk-common/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright (C) 2011 Manuel Munz -# This is free software, licensed under the Apache 2.0 license. - -include $(TOPDIR)/rules.mk - -PKG_NAME:=freifunk-common -PKG_RELEASE:=3 - -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/freifunk-common - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=9. Freifunk - TITLE:=Freifunk common files -endef - -define Package/freifunk-common/description - Common files and scripts that are needed to run free wireless mesh networks. -endef - -define Package/luci-mod-freifunk/conffiles -/etc/config/freifunk -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/freifunk-common/install - $(CP) ./files/* $(1)/ -endef - -$(eval $(call BuildPackage,freifunk-common)) diff --git a/package/luci/contrib/package/freifunk-common/files/etc/config/freifunk b/package/luci/contrib/package/freifunk-common/files/etc/config/freifunk deleted file mode 100644 index b1a2e41e2a..0000000000 --- a/package/luci/contrib/package/freifunk-common/files/etc/config/freifunk +++ /dev/null @@ -1,120 +0,0 @@ -package 'freifunk' - -config 'public' 'contact' - option 'nickname' '' - option 'name' '' - option 'mail' '' - option 'phone' '' - option 'note' '' - -config 'public' 'community' - option 'name' 'Freifunk' - option 'homepage' 'http://freifunk.net' - -config 'fw_zone' 'zone_freifunk' - option 'name' 'freifunk' - option 'input' 'REJECT' - option 'forward' 'REJECT' - option 'output' 'ACCEPT' - -config 'fw_rule' 'fficmp' - option 'src' 'freifunk' - option 'target' 'ACCEPT' - option 'proto' 'icmp' - -config 'fw_rule' 'ffhttp' - option 'src' 'freifunk' - option 'target' 'ACCEPT' - option 'proto' 'tcp' - option 'dest_port' '80' - -config 'fw_rule' 'ffhttps' - option 'src' 'freifunk' - option 'target' 'ACCEPT' - option 'proto' 'tcp' - option 'dest_port' '443' - -config 'fw_rule' 'ffssh' - option 'src' 'freifunk' - option 'target' 'ACCEPT' - option 'proto' 'tcp' - option 'dest_port' '22' - -config 'fw_rule' 'ffolsr' - option 'src' 'freifunk' - option 'target' 'ACCEPT' - option 'proto' 'udp' - option 'dest_port' '698' - -config 'fw_rule' 'ffwprobe' - option 'src' 'freifunk' - option 'target' 'ACCEPT' - option 'proto' 'tcp' - option 'dest_port' '17990' - -config 'fw_rule' 'ffdns' - option 'dest_port' '53' - option 'src' 'freifunk' - option 'target' 'ACCEPT' - option 'proto' 'udp' - -config 'fw_rule' 'ffdhcp' - option 'src_port' '68' - option 'src' 'freifunk' - option 'target' 'ACCEPT' - option 'dest_port' '67' - option 'proto' 'udp' - option 'leasetime' '30m' - -config 'fw_rule' 'ffsplash' - option 'dest_port' '8082' - option 'src' 'freifunk' - option 'target' 'ACCEPT' - option 'proto' 'tcp' - -config 'fw_forwarding' 'lanfffwd' - option 'src' 'lan' - option 'dest' 'freifunk' - -config 'fw_forwarding' 'ffwanfwd' - option 'src' 'freifunk' - option 'dest' 'wan' - -config 'fw_forwarding' 'fffwd' - option 'src' 'freifunk' - option 'dest' 'freifunk' - -config 'include' 'freifunk' - option 'path' '/etc/firewall.freifunk' - -config 'defaults' 'system' - option 'zonename' 'Europe/Berlin' - option 'timezone' 'CET-1CEST,M3.5.0,M10.5.0/3' - -config 'defaults' 'wifi_device' - option 'channel' '1' - option 'diversity' '1' - option 'disabled' '0' - option 'country' 'DE' - option 'distance' '1000' - -config 'defaults' 'wifi_iface' - option 'mode' 'adhoc' - option 'encryption' 'none' - option 'bssid' '12:CA:FF:EE:BA:BE' - option 'mcast_rate' '6000' - -config 'defaults' 'interface' - option 'netmask' '255.255.0.0' - option 'dns' '8.8.8.8 212.204.49.83 141.1.1.1' - -config 'defaults' 'alias' - option 'netmask' '255.255.255.0' - -config 'defaults' 'dhcp' - option 'leasetime' '30m' - option 'start' '2' - option 'force' '1' - -config 'defaults' 'olsr_interfacedefaults' - option 'Ip4Broadcast' '255.255.255.255' diff --git a/package/luci/contrib/package/freifunk-common/files/etc/init.d/freifunk b/package/luci/contrib/package/freifunk-common/files/etc/init.d/freifunk deleted file mode 100755 index dbe648ae5d..0000000000 --- a/package/luci/contrib/package/freifunk-common/files/etc/init.d/freifunk +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh /etc/rc.common -# Freifunk Init -# $Id$ - -START=99 - -boot() { - test -f /etc/crontabs/root || touch /etc/crontabs/root - - grep -q 'killall -HUP dnsmasq' /etc/crontabs/root || { - echo "*/5 * * * * killall -HUP dnsmasq" >> /etc/crontabs/root - } - - grep -q '/usr/sbin/ff_olsr_watchdog' /etc/crontabs/root || { - echo "*/5 * * * * /usr/sbin/ff_olsr_watchdog" >> /etc/crontabs/root - } - - [ -d /etc/rc.local.d ] && { - for file in /etc/rc.local.d/*; do - test -f "$file" && . "$file" - done - } - - /etc/init.d/cron restart & -} diff --git a/package/luci/contrib/package/freifunk-common/files/etc/rc.local.d/01-config-migration b/package/luci/contrib/package/freifunk-common/files/etc/rc.local.d/01-config-migration deleted file mode 100644 index 11f1ad60bc..0000000000 --- a/package/luci/contrib/package/freifunk-common/files/etc/rc.local.d/01-config-migration +++ /dev/null @@ -1,51 +0,0 @@ -# Fixup various configurations to remove quirks -# from former versions. - -_log() { - logger -t "Config Migration" "$1" -} - -_uci() { - uci ${2:+-c $2} get "$1" 2>/dev/null -} - - -# Splash redirector had a wrong virtual url match -# which resulted in "No such handler" - -[ "$(_uci lucid.splashredir.virtual)" == "/" ] && { - _log "Fix splash redirector configuration" - uci set lucid.splashredir.virtual='' - uci commit lucid - /etc/init.d/lucid restart -} - - -# Newer OLSR versions have the MinTCVtime hack active, -# ensure proper timings or olsrd won't start - -FIX=0 -for i in 0 1 2 3 4; do - [ -z "$(_uci olsrd.@Interface[$i].TcInterval)" ] && \ - [ -z "$(_uci olsrd.@Interface[$i].TcValidityTime)" ] || { - uci delete olsrd.@Interface[$i].TcInterval - uci delete olsrd.@Interface[$i].TcValidityTime - FIX=1 - } -done - -[ "$FIX" == 1 ] && { - _log "Fix olsrd configuration for MinTCVTime hack" - uci commit olsrd - /etc/init.d/olsrd restart -} - - -# Ensure that the community definitions are in the -# new format - -[ -z "$(_uci freifunk.leipzig.mesh_network)" ] && \ -[ -n "$(_uci freifunk.leipzig.mesh_network /rom/etc/config)" ] && { - _log "Converting freifunk configuration to new format" - cp /rom/etc/config/freifunk /etc/config/freifunk -} diff --git a/package/luci/contrib/package/freifunk-common/files/etc/uci-defaults/freifunk b/package/luci/contrib/package/freifunk-common/files/etc/uci-defaults/freifunk deleted file mode 100644 index fe6586c224..0000000000 --- a/package/luci/contrib/package/freifunk-common/files/etc/uci-defaults/freifunk +++ /dev/null @@ -1,2 +0,0 @@ -uci set uhttpd.main.rfc1918_filter=0 -uci commit uhttpd diff --git a/package/luci/contrib/package/freifunk-common/files/usr/bin/ffdzero b/package/luci/contrib/package/freifunk-common/files/usr/bin/ffdzero deleted file mode 100755 index 24e8c2e181..0000000000 --- a/package/luci/contrib/package/freifunk-common/files/usr/bin/ffdzero +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -test "$1" = "-h" && echo -e "Usage:\n\t$0 -h\n\t$0 [ { ip | hostname } ]" >&2 && exit 1 - -host="${1:-leipzig.freifunk.net}" - -wget -O /dev/null http://$host/cgi-bin-dev-zero.bin -test "$?" = "1" && wget -O /dev/null http://$host/cgi-bin/dev-zero.bin -test "$?" = "1" && wget -O /dev/null http://$host/cgi-bin/luci/freifunk/status/zeroes -test "$?" = "1" && echo "$host: no zero download found..." && exit 1 diff --git a/package/luci/contrib/package/freifunk-common/files/usr/bin/neigh.sh b/package/luci/contrib/package/freifunk-common/files/usr/bin/neigh.sh deleted file mode 100755 index 468ed7a3e0..0000000000 --- a/package/luci/contrib/package/freifunk-common/files/usr/bin/neigh.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/sh - -. /usr/share/libubox/jshn.sh - -hostsfile_getname() -{ - local config="$1" - local i=0 - local value file - - while value="$( uci -q get $config.@LoadPlugin[$i].library )"; do { - case "$value" in - 'olsrd_nameservice.so.'*) - file="$( uci -q get $config.@LoadPlugin[$i].hosts_file )" - break - ;; - esac - - i=$(( i + 1 )) - } done - - echo "${file:-/var/run/hosts_olsr}" -} - -read_hostnames() -{ - local file_list=" $( hostsfile_getname 'olsrd' ) $(hostsfile_getname 'olsrd6' ) " - local line ip hostname file file_list_uniq - - for file in $file_list; do { - case " $file_list_uniq " in - *" $file "*) - ;; - *) - file_list_uniq="$file_list_uniq $file" - ;; - esac - } done - - for file in $file_list_uniq; do { - [ -e "$file" ] || continue - - while read -r line; do { - case "$line" in - [0-9]*) - # 2001:bf7:820:901::1 stuttgarter-core.olsr # myself - # 10.63.160.161 AlexLaterne # 10.63.160.161 - set -f - set +f -- $line - ip="$1" - hostname="$2" - - # global vars, e.g. - # IP_1_2_3_4='foo' or IP_2001_bf7_820_901__1='bar' - eval IP_${ip//[.:]/_}="$hostname" - ;; - esac - } done <"$file" - } done -} - -read_hostnames - -VARS='localIP:Local remoteIP:Remote validityTime:vTime linkQuality:LQ' -VARS="$VARS neighborLinkQuality:NLQ linkCost:Cost remoteHostname:Host" - -for HOST in '127.0.0.1' '::1';do - json_init - json_load "$( echo /links | nc $HOST 9090 | sed -n '/^[}{ ]/p' )" # remove header/non-json - - if json_is_a links array;then - json_select links - for v in ${VARS};do - eval _${v%:*}=0 - done - for j in 0 1;do - case ${j} in 1) - for v in ${VARS};do - eval printf \"%-\${_${v%:*}}s \" ${v#*:} - done - echo - ;;esac - i=1;while json_is_a ${i} object;do - json_select ${i} - json_get_vars $(for v in ${VARS};do echo ${v%:*};done) - case ${j} in 0) - for v in ${VARS};do - eval "test \${_${v%:*}} -lt \${#${v%:*}} && _${v%:*}=\${#${v%:*}}" - done - ;;*) - for v in ${VARS};do - eval printf \"%-\${_${v%:*}}s \" \$${v%:*} - eval remoteHostname="\$IP_${remoteIP//[.:]/_}" - done - echo - ;;esac - json_select .. - i=$(( i + 1 )) - done - done - fi - echo -done diff --git a/package/luci/contrib/package/freifunk-common/files/usr/bin/watch.sh b/package/luci/contrib/package/freifunk-common/files/usr/bin/watch.sh deleted file mode 100755 index 728526b9e1..0000000000 --- a/package/luci/contrib/package/freifunk-common/files/usr/bin/watch.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -command="$1" -interval="$2"; [ -z "$interval" ] && interval=1 - -if [ -z $command ]; then - echo 'Usage: watch.sh "command [options]" [interval], e.g. watch "ifconfig ath0" 2' - echo 'interval is optional and defaults to 1' - exit 1 -fi - -while true; do clear; $command; sleep $interval; done diff --git a/package/luci/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog b/package/luci/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog deleted file mode 100755 index 069f4c3217..0000000000 --- a/package/luci/contrib/package/freifunk-common/files/usr/sbin/ff_olsr_watchdog +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/lua - -require "os" -require "io" -require "uci" -local fs = require "nixio.fs" - -if fs.access("/var/run/olsrd.pid") or fs.access("/var/run/olsrd4.pid") then - local stamp, intv - local x = uci.cursor() - - x:foreach("olsrd", "LoadPlugin", - function(s) - if s.library == "olsrd_watchdog.so.0.1" then - intv = tonumber(s.interval) - stamp = s.file - end - end) - - if intv and fs.access(stamp) then - local systime = os.time() - local wdgtime = tonumber(io.lines(stamp)()) - - if not wdgtime or ( systime - wdgtime ) > ( intv * 2 ) then - os.execute("logger -t 'OLSR watchdog' 'Process died - restarting!'") - os.execute("/etc/init.d/olsrd restart") - end - end -end diff --git a/package/luci/contrib/package/freifunk-firewall/Makefile b/package/luci/contrib/package/freifunk-firewall/Makefile deleted file mode 100644 index b9d328c66e..0000000000 --- a/package/luci/contrib/package/freifunk-firewall/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -# -# Copyright (C) 2009 Jo-Philipp Wich -# -# This is free software, licensed under the Apache 2.0 license. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=freifunk-firewall -PKG_RELEASE:=3 - -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/freifunk-firewall - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=9. Freifunk - TITLE:=Freifunk Firewall Addon - DEPENDS:=+firewall -endef - -define Package/freifunk-firewall/description - Various firewall extensions for Freifunk. Includes NAT fixes and advanced settings. -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/freifunk-firewall/postinst -#!/bin/sh -[ -n "$${IPKG_INSTROOT}" ] || { - if ! grep -q /etc/firewall.freifunk /etc/config/firewall; then - uci add firewall include >/dev/null - uci set firewall.@include[-1].path=/etc/firewall.freifunk - uci commit firewall - fi -} -endef - -define Package/freifunk-firewall/install - $(CP) ./files/* $(1)/ -endef - -$(eval $(call BuildPackage,freifunk-firewall)) diff --git a/package/luci/contrib/package/freifunk-firewall/files/etc/firewall.freifunk b/package/luci/contrib/package/freifunk-firewall/files/etc/firewall.freifunk deleted file mode 100644 index d2805f668c..0000000000 --- a/package/luci/contrib/package/freifunk-firewall/files/etc/firewall.freifunk +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -# Freifunk Firewall addons - -. /lib/functions.sh - -# -# Apply advanced settings -# -apply_advanced() { - local tcp_ecn - local tcp_window_scaling - local accept_redirects - local accept_source_route - - config_get_bool tcp_ecn $1 tcp_ecn 1 - config_get_bool tcp_window_scaling $1 tcp_window_scaling 1 - config_get_bool accept_redirects $1 accept_redirects 0 - config_get_bool accept_source_route $1 accept_source_route 0 - - logger -t firewall.freifunk "tcp_ecn is $tcp_ecn" - logger -t firewall.freifunk "tcp_window_scaling is $tcp_window_scaling" - logger -t firewall.freifunk "accept_redirects is $accept_redirects" - logger -t firewall.freifunk "accept_source_route is $accept_source_route" - - sysctl -w net.ipv4.tcp_ecn=$tcp_ecn >/dev/null - sysctl -w net.ipv4.tcp_window_scaling=$tcp_window_scaling >/dev/null - - for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do - echo $accept_redirects > $f - done - - for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do - echo $accept_source_route > $f - done -} - -config_foreach apply_advanced advanced - -[ -x /etc/init.d/freifunk-p2pblock ] && /etc/init.d/freifunk-p2pblock enabled && \ - ( sleep 3; /etc/init.d/freifunk-p2pblock restart )& diff --git a/package/luci/contrib/package/freifunk-firewall/files/etc/hotplug.d/firewall/23-restricted-wan b/package/luci/contrib/package/freifunk-firewall/files/etc/hotplug.d/firewall/23-restricted-wan deleted file mode 100644 index e71c852dfd..0000000000 --- a/package/luci/contrib/package/freifunk-firewall/files/etc/hotplug.d/firewall/23-restricted-wan +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh - -clear_restricted_gw() -{ - local state="$1" - local iface - local ifname - local subnet - - config_get iface "$state" iface - - if [ "$iface" = "$INTERFACE" ]; then - config_get ifname "$state" ifname - config_get subnet "$state" subnet - - logger -t firewall.freifunk "removing local restriction to the network connected to $ifname ($iface)" - iptables -D forwarding_freifunk_rule -o $ifname -d $subnet -j REJECT --reject-with icmp-host-prohibited - uci_revert_state firewall "$state" - fi -} - -get_enabled() -{ - local name - config_get name "$1" name - - if [ "$name" = "$ZONE" ]; then - config_get_bool local_restrict "$1" local_restrict - fi -} - -if [ "$ACTION" = add ]; then - local enabled - local subnet - - . /lib/functions/network.sh - - network_find_wan wan - - [ "$INTERFACE" = "$wan" ] || return 0 - - network_get_subnet subnet $INTERFACE - - if [ -n "$subnet" ]; then - config_load firewall - - local_restrict=0 - config_foreach get_enabled zone - - if [ "$local_restrict" = 1 ]; then - logger -t firewall.freifunk "restricting local access to the network connected to $INTERFACE ($DEVICE)" - iptables -I forwarding_freifunk_rule -o $DEVICE -d $subnet -j REJECT --reject-with icmp-host-prohibited - local state="restricted_gw_${INTERFACE}" - uci_set_state firewall "$state" "" restricted_gw_state - uci_set_state firewall "$state" iface "$INTERFACE" - uci_set_state firewall "$state" ifname "$DEVICE" - uci_set_state firewall "$state" subnet "$subnet" - fi - fi - -elif [ "$ACTION" = remove ]; then - config_load firewall - config_foreach clear_restricted_gw restricted_gw_state -fi - diff --git a/package/luci/contrib/package/freifunk-gwcheck/Makefile b/package/luci/contrib/package/freifunk-gwcheck/Makefile deleted file mode 100644 index 6c2affe741..0000000000 --- a/package/luci/contrib/package/freifunk-gwcheck/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (C) 2011 Manuel Munz -# This is free software, licensed under the Apache 2.0 license. - -include $(TOPDIR)/rules.mk - -PKG_NAME:=freifunk-gwcheck -PKG_RELEASE:=4 - -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/freifunk-gwcheck - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=9. Freifunk - TITLE:=Freifunk gateway check script - DEPENDS:=firewall +ip +iptables-mod-ipopt +olsrd-mod-dyn-gw-plain -endef - -define Package/freifunk-gwcheck/description - This script periodically checks if internet is available via your own gateway. If it detects that it is broken, then the defaultroute is removed from the main table and temporarilly placed in table gw-check until your internet works again. Config file is /etc/config/freifunk-gwcheck. -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/freifunk-gwcheck/install - $(CP) ./files/* $(1)/ - $(CP) ./root/* $(1)/ -endef - -$(eval $(call BuildPackage,freifunk-gwcheck)) diff --git a/package/luci/contrib/package/freifunk-gwcheck/files/etc/config/freifunk-gwcheck b/package/luci/contrib/package/freifunk-gwcheck/files/etc/config/freifunk-gwcheck deleted file mode 100644 index b174dd6270..0000000000 --- a/package/luci/contrib/package/freifunk-gwcheck/files/etc/config/freifunk-gwcheck +++ /dev/null @@ -1,5 +0,0 @@ -config 'gwcheck' 'hosts' - list 'host' 'augsburg.freifunk.net' - list 'host' 'vpn4.leipzig.freifunk.net' - list 'host' 'luci.subsignal.org' - list 'host' 'bbb-vpn.berlin.freifunk.net' diff --git a/package/luci/contrib/package/freifunk-gwcheck/files/usr/sbin/ff_olsr_test_gw.sh b/package/luci/contrib/package/freifunk-gwcheck/files/usr/sbin/ff_olsr_test_gw.sh deleted file mode 100755 index b86b668736..0000000000 --- a/package/luci/contrib/package/freifunk-gwcheck/files/usr/sbin/ff_olsr_test_gw.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/sh -# Copyright 2013 Manuel Munz -# Licensed under the GNU General Public License (GPL) v3 -# This script monitors the local internet gateway - -. /lib/functions.sh -. /lib/functions/network.sh -. /usr/share/libubox/jshn.sh - -# exit if dyngw_plain is not enabled or RtTable is not (254 or unset) -config_load olsrd - -check_dyngw_plain() -{ - local cfg="$1" - config_get library "$cfg" library - if [ "${library#olsrd_dyn_gw_plain}" != "$library" ]; then - config_get ignore "$cfg" ignore - config_get RtTable "$cfg" RtTable - if [ "$ignore" != "1" ] && [ -z "$RtTable" -o "$RtTable" = "254" ]; then - exit=0 - fi - fi -} - -exit=1 -config_foreach check_dyngw_plain LoadPlugin -[ "$exit" = "1" ] && exit 1 - -#Exit if this script is already running -pid="$(pidof ff_olsr_test_gw.sh)" -if [ ${#pid} -gt 5 ]; then - logger -p debug -t gwcheck "Gateway check script is already running, exit now" - exit 1 -fi - -# exit if there is no defaultroute with metric=0 in main or gw-check table. -defroutemain="$(ip route show |grep default |grep -v metric)" -defroutegwcheck="$(ip route show table gw-check |grep default |grep -v metric)" -if [ -z "$defroutegwcheck" -a -z "$defroutemain" ]; then - exit 1 -fi - -# get and shuffle list of testservers -testserver="$(uci -q get freifunk-gwcheck.hosts.host)" -[ -z "$testserver" ] && echo "No testservers found, exit" && exit - -testserver="$(for t in $testserver; do echo $t; done | awk 'BEGIN { - srand(); -} -{ - l[NR] = $0; -} - -END { - for (i = 1; i <= NR; i++) { - n = int(rand() * (NR - i + 1)) + i; - print l[n]; - l[n] = l[i]; - } -}')" - -check_internet() { - for t in $testserver; do - local test - test=$(wget -q http://$t/conntest.html -O -| grep "Internet_works") - if [ "$test" == "Internet_works" ]; then - echo 0 - break - else - logger -p debug -t gw-check "Could not fetch http://$t/conntest.html" - fi - done -} - -resolve() { - echo "$(nslookup $1 2>/dev/null |grep 'Address' |grep -v '127.0.0.1' |awk '{ print $3 }')" -} - -get_dnsservers() { - # this gets all dns servers for the interface which has the default route - - dns="" - if [ ! -x /bin/ubus ]; then - # ubus not present (versions before Attitude): fallback to get these from /var/state/network. - # We always assume that wan is the default route interface here - dns="$(grep network.wan.resolv_dns /var/state/network | cut -d "=" -f 2)" - else - network_find_wan wan - network_get_dnsserver dns $wan - fi -} - -iw=$(check_internet) - -if [ "$iw" == 0 ]; then - # Internet available again, restore default route and remove ip rules - if [ -n "$defroutegwcheck" ]; then - ip route add $defroutegwcheck - ip route del $defroutegwcheck table gw-check - for host in $testserver; do - ips="$(resolve $host)" - for ip in $ips; do - [ -n "$(ip rule show | grep "to $ip lookup gw-check")" ] && ip rule del to $ip table gw-check - done - done - get_dnsservers - for d in $dns; do - [ -n "$(ip rule show | grep "to $d lookup gw-check")" ] && ip rule del to $d table gw-check - done - logger -p err -t gw-check "Internet is available again, default route restored ( $defroutegwcheck)" - fi - -else - # Check failed. Move default route to table gw-check and setup ip rules. - if [ -z "$(ip rule show | grep gw-check)" -a -n "$defroutemain" ]; then - ip route add $defroutemain table gw-check - ip route del $defroutemain - logger -p err -t gw-check "Internet is not available, default route deactivated ( $defroutemain)" - fi - for host in $testserver; do - ips="$(resolve $host)" - for ip in $ips; do - [ -z "$(ip rule show | grep "to $ip lookup gw-check")" ] && ip rule add to $ip table gw-check - done - done - get_dnsservers - for d in $dns; do - [ -z "$(ip rule show | grep "to $d lookup gw-check")" ] && ip rule add to $d table gw-check - done - logger -p err -t gw-check "Check your internet connection!" -fi diff --git a/package/luci/contrib/package/freifunk-gwcheck/root/etc/uci-defaults/50_freifunk-gwcheck b/package/luci/contrib/package/freifunk-gwcheck/root/etc/uci-defaults/50_freifunk-gwcheck deleted file mode 100644 index 33b1b99dfa..0000000000 --- a/package/luci/contrib/package/freifunk-gwcheck/root/etc/uci-defaults/50_freifunk-gwcheck +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -tables="/etc/iproute2/rt_tables" -test -d /etc/iproute2/ || mkdir -p /etc/iproute2/ -grep -q "gw-check" $tables || echo "200 gw-check" >> $tables -test -f /etc/crontabs/root || touch /etc/crontabs/root -grep -q "ff_olsr_test_gw.sh" /etc/crontabs/root || echo "* * * * * /usr/sbin/ff_olsr_test_gw.sh" >> /etc/crontabs/root -/etc/init.d/cron restart diff --git a/package/luci/contrib/package/freifunk-mapupdate/Makefile b/package/luci/contrib/package/freifunk-mapupdate/Makefile deleted file mode 100644 index a9281ca20a..0000000000 --- a/package/luci/contrib/package/freifunk-mapupdate/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (C) 2011 Manuel Munz -# This is free software, licensed under the Apache 2.0 license. - -include $(TOPDIR)/rules.mk - -PKG_NAME:=freifunk-mapupdate -PKG_RELEASE:=1 - -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/freifunk-mapupdate - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=9. Freifunk - TITLE:=Update script for freifunkmap - DEPENDS:=+olsrd-mod-nameservice -endef - -define Package/freifunk-mapupdate/description - This script updates the freifunkmap (also known as the global map, see http://map.berlin.freifunk.net) every hour. Config file is /etc/config/freifunk-mapupdate. -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/freifunk-mapupdate/install - $(CP) ./files/* $(1)/ -endef - -$(eval $(call BuildPackage,freifunk-mapupdate)) diff --git a/package/luci/contrib/package/freifunk-mapupdate/files/etc/config/freifunk-mapupdate b/package/luci/contrib/package/freifunk-mapupdate/files/etc/config/freifunk-mapupdate deleted file mode 100644 index 7e98f956d5..0000000000 --- a/package/luci/contrib/package/freifunk-mapupdate/files/etc/config/freifunk-mapupdate +++ /dev/null @@ -1,3 +0,0 @@ -config 'mapupdate' 'mapupdate' - option 'enabled' '1' - option 'mapserver' 'http://map.berlin.freifunk.net/freifunkmap.php' diff --git a/package/luci/contrib/package/freifunk-mapupdate/files/usr/sbin/ff_mapupdate.sh b/package/luci/contrib/package/freifunk-mapupdate/files/usr/sbin/ff_mapupdate.sh deleted file mode 100755 index 40a077f154..0000000000 --- a/package/luci/contrib/package/freifunk-mapupdate/files/usr/sbin/ff_mapupdate.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh - -if [ ! "$(uci -q get freifunk-mapupdate.mapupdate.enabled)" == 1 ]; then - exit 1 -fi - -MAPSERVER="$(uci -q get freifunk-mapupdate.mapupdate.mapserver)" -[ -z "$MAPSERVER" ] && logger -t "freifunk-mapupdate:" "No mapserver configured" && exit 1 - -#check if nameservice plugin is installed and enabled, else exit -nslib=`uci show olsrd |grep olsrd_nameservice.so |awk {' FS="."; print $1"."$2 '}` -if [ -n "$nslib" ]; then - LATLONFILE="$(uci -q get $nslib.latlon_file)" - if [ -z "$LATLONFILE" ]; then - LATLONFILE="/var/run/latlon.js" - fi - if [ ! -p "$LATLONFILE" ]; then - logger -t "freifunk-mapupdate:" "latlon_file not found."; exit 1 - fi -else - logger -t "freifunk-mapupdate:" "nameservice plugin not found in olsrd config." - exit 1 -fi - -HOSTNAME="$(uci show system |grep hostname |cut -d "=" -f 2)" -HF_INFO="" - -# Get info for myself -SELF=$(cat $LATLONFILE |grep ^Self | sed -e 's/Self(//' -e 's/);//' -e "s/'//g") -OLSR_IP="$(echo $SELF |awk '{ FS=",";print $1 }')" -LOCATION="$(uci show system |grep .location |cut -d "=" -f 2)" -[ -n "$LOCATION" ] && NOTE="$LOCATION
    " -FFNOTE="$(uci -q get freifunk.contact.note)" -[ -n "$FFNOTE" ] && NOTE="$NOTE $FFNOTE" -NOTE="

    $HOSTNAME

    $NOTE" -NOTE=`echo -e "$NOTE" | sed -e 's/\ /%20/g' -e 's/&/%26/g' -e 's/"/%22/g'` - -UPDATESTRING="$(echo $SELF |awk '{ FS=",";print $2 }'), $(echo $SELF |awk '{ FS=",";print $3 }')" - -# write our coordinates to mygooglemapscoords.txt to make Freifunk Firmware happy -echo "$UPDATESTRING" > /tmp/mygooglemapscoords.txt -[ ! -L /www/mygooglemapscoords.txt ] && ln -s /tmp/mygooglemapscoords.txt /www/mygooglemapscoords.txt - -# get neighbor Info (lat, lon, lq) -while read line; do - NEIGHUPD="$(echo $line |awk '{ FS=","; print $6 }'), $(echo $line |awk '{ FS=","; print $7 }'), $(echo $line |awk '{ FS=",";print $4 }')" - UPDATESTRING="${UPDATESTRING}, ${NEIGHUPD}" -done << EOF -`grep "PLink('$OLSR_IP" $LATLONFILE | sed -e 's/PLink(//' -e 's/);//' -e "s/'//g"` -EOF - -# Send UPDATESTRING -UPDATE=`echo -e "$UPDATESTRING" | sed s/\ /%20/g` -result="$(wget "$MAPSERVER?update=$UPDATE&updateiv=3600&olsrip=$OLSR_IP¬e=${NOTE}${HF_INFO}" -qO -)" - -if [ ! "$result" == "success update" ]; then - logger -t "freifunk-mapupdate:" "Update failed: $result" -fi - diff --git a/package/luci/contrib/package/freifunk-mapupdate/root/etc/uci-defaults/50_freifunk-mapupdate b/package/luci/contrib/package/freifunk-mapupdate/root/etc/uci-defaults/50_freifunk-mapupdate deleted file mode 100644 index dee7f1bb58..0000000000 --- a/package/luci/contrib/package/freifunk-mapupdate/root/etc/uci-defaults/50_freifunk-mapupdate +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -test -f /etc/crontabs/root || touch /etc/crontabs/root -SEED="$( dd if=/dev/urandom bs=2 count=1 2>&- | hexdump | if read line; then echo 0x${line#* }; fi )" -MIN="$(( $SEED % 59 ))" -grep -q "ff_mapupdate.sh" /etc/crontabs/root || echo "$MIN * * * * /usr/sbin/ff_mapupdate.sh" >> /etc/crontabs/root -/etc/init.d/cron restart diff --git a/package/luci/contrib/package/freifunk-p2pblock/Makefile b/package/luci/contrib/package/freifunk-p2pblock/Makefile deleted file mode 100644 index df7bd9b635..0000000000 --- a/package/luci/contrib/package/freifunk-p2pblock/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# -# Copyright (C) 2009 Andreas Seidler -# Copyright (C) 2012 Jo-Philipp Wich -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=freifunk-p2pblock -PKG_RELEASE:=3 - -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/freifunk-p2pblock - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=9. Freifunk - TITLE:=Freifunk p2pblock Addon - DEPENDS:=+iptables-mod-filter +iptables-mod-ipp2p +l7-protocols +iptables-mod-conntrack-extra @BROKEN -endef - -define Package/freifunk-p2pblock/description - Simple Addon for Freifunk which use iptables layer7-, ipp2p- and recent-modules - to block p2p/filesharing traffic -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/freifunk-p2pblock/install - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/freifunk-p2pblock.init $(1)/etc/init.d/freifunk-p2pblock - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_DATA) ./files/freifunk-p2pblock.config $(1)/etc/config/freifunk_p2pblock -endef - -$(eval $(call BuildPackage,freifunk-p2pblock)) diff --git a/package/luci/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.config b/package/luci/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.config deleted file mode 100644 index 291260e370..0000000000 --- a/package/luci/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.config +++ /dev/null @@ -1,6 +0,0 @@ -config 'settings' 'p2pblock' - option 'portrange' '1024:65535' - option 'layer7' 'edonkey bittorrent fasttrack' - option 'ipp2p' 'edk dc kazaa gnu bit ares soul winmx apple' - option 'blocktime' '60' - option 'whitelist' '' diff --git a/package/luci/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.init b/package/luci/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.init deleted file mode 100644 index 5ca60c8916..0000000000 --- a/package/luci/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.init +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=82 -ME="freifunk-p2pblock" -LOCK='/var/run/p2pblock.lock' - -# helper-scripts -ipt_add() { - logger -t "$ME" "set 'iptables -I $1'" - iptables -I $1 - echo "iptables -D $1" >> $LOCK -} - -start() { - /etc/init.d/freifunk-p2pblock enabled || return - - if [ ! -s "$LOCK" ]; then - logger -s -t "$ME" 'starting p2pblock...' - - config_load network - config_get wan wan ifname - - if [ -n "$wan" ]; then - config_load freifunk_p2pblock - config_get layer7 p2pblock layer7 - config_get ipp2p p2pblock ipp2p - config_get portrange p2pblock portrange - config_get blocktime p2pblock blocktime - config_get whitelist p2pblock whitelist - - # load modules - insmod ipt_ipp2p 2>&- - insmod ipt_layer7 2>&- - insmod ipt_recent ip_list_tot=400 ip_pkt_list_tot=3 2>&- - - # create new p2p-chain - iptables -N p2pblock - # pipe all incoming FORWARD with source-/destination-port 1024-65535 throu p2p-chain - ipt_add "FORWARD -i $wan -p tcp --sport $portrange --dport $portrange -j p2pblock" - ipt_add "FORWARD -i $wan -p udp --sport $portrange --dport $portrange -j p2pblock" - - # if p2p-traffic blocked 3 packages to a destination ip then block all traffic within the next 180 sec (port 1024-65535) - ipt_add "p2pblock -m recent --rdest --rcheck --name P2PBLOCK --seconds $blocktime --hitcount 3 -j DROP" - ipt_add "p2pblock -m recent --rdest --rcheck --name P2PBLOCK --seconds $blocktime --hitcount 3 -m limit --limit 1/minute -j LOG --log-prefix P2PBLOCK-DROP:" - - # create layer7-rules - for proto in $layer7; do - ipt_add "p2pblock -m layer7 --l7proto $proto -m recent --rdest --set --name P2PBLOCK" - ipt_add "p2pblock -m layer7 --l7proto $proto -m limit --limit 1/minute -j LOG --log-prefix P2PBLOCK-seen-$proto:" - done - - # create ipp2p-rules - for proto in $ipp2p; do - ipt_add "p2pblock -m ipp2p --$proto -m recent --rdest --set --name P2PBLOCK" - ipt_add "p2pblock -m ipp2p --$proto -m limit --limit 1/minute -j LOG --log-prefix P2PBLOCK-seen-$proto:" - done - - # insert whitelisted ips - for ip in $whitelist; do - ipt_add "p2pblock -d $ip -j RETURN" - done - - logger -s -t "$ME" 'Done.'; return 0 - else - logger -s -t "$ME" 'No wan interface present.'; return 0 - fi - else - logger -s -t "$ME" 'WARNING! already running - Aborting!'; return 2 - fi -} - -stop() { - if [ -s "$LOCK" ]; then - logger -s -t "$ME" 'stopping p2pblock...' - - # unset all rules in $LOCK-file - cat $LOCK | sed -ne '1!G;h;$p' | while read line; do - logger -t "$ME" "unset $line" - while eval $line 2>&-; do :; done - done; : > "$LOCK" - - # flush and delete the p2p-chain - iptables -F p2pblock - iptables -X p2pblock - logger -s -t "$ME" 'Done.'; return 0 - - else - logger -s -t "$ME" 'WARNING! not running - Aborting!'; return 2 - - fi -} - -restart() { - stop; sleep 1; start -} diff --git a/package/luci/contrib/package/freifunk-policyrouting/Makefile b/package/luci/contrib/package/freifunk-policyrouting/Makefile deleted file mode 100644 index a9301cef31..0000000000 --- a/package/luci/contrib/package/freifunk-policyrouting/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (C) 2011 Manuel Munz -# This is free software, licensed under the Apache 2.0 license. - -include $(TOPDIR)/rules.mk - -PKG_NAME:=freifunk-policyrouting -PKG_RELEASE:=6 - -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/freifunk-policyrouting - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=9. Freifunk - TITLE:=Freifunk policy routing addon - DEPENDS:=+ip -endef - -define Package/freifunk-policyrouting/description - Allows you to send your own traffic via your own default gateway while sending traffic received from the mesh to a gateway in the mesh. -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/freifunk-policyrouting/install - $(CP) ./files/* $(1)/ -endef - -define Package/freifunk-policyrouting/postinst -#!/bin/sh -[ -n "$${IPKG_INSTROOT}" ] || { - /etc/init.d/freifunk-policyrouting enabled || /etc/init.d/freifunk-policyrouting enable - exit 0 -} -endef - -$(eval $(call BuildPackage,freifunk-policyrouting)) diff --git a/package/luci/contrib/package/freifunk-policyrouting/files/etc/config/freifunk-policyrouting b/package/luci/contrib/package/freifunk-policyrouting/files/etc/config/freifunk-policyrouting deleted file mode 100644 index 3dd2998f9f..0000000000 --- a/package/luci/contrib/package/freifunk-policyrouting/files/etc/config/freifunk-policyrouting +++ /dev/null @@ -1,7 +0,0 @@ - -config 'settings' 'pr' - option 'enable' '0' - option 'strict' '1' - option 'fallback' '1' - option 'zones' '' - diff --git a/package/luci/contrib/package/freifunk-policyrouting/files/etc/hotplug.d/iface/30-policyrouting b/package/luci/contrib/package/freifunk-policyrouting/files/etc/hotplug.d/iface/30-policyrouting deleted file mode 100644 index 327e8793be..0000000000 --- a/package/luci/contrib/package/freifunk-policyrouting/files/etc/hotplug.d/iface/30-policyrouting +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/sh - -. /lib/functions.sh -. /lib/functions/network.sh - -proto="4" -[ -f /proc/net/ipv6_route ] && proto="4 6" - -config_load freifunk-policyrouting -config_get enable pr enable -config_get fallback pr fallback -config_get strict pr strict -config_get zones pr zones - -if [ "$ACTION" = "ifup" ] && [ "$enable" = "1" ]; then - network_get_subnet net $INTERFACE - network_get_subnet6 net6 $INTERFACE - network_get_physdev dev $INTERFACE - - if [ "$net" != "" -a -n "$dev" ]; then - eval $(/bin/ipcalc.sh $net) - if [ "$PREFIX" != "0" -a "$NETWORK" != "127.0.0.0" ]; then - if [ ! "$(ip r s t localnets |grep "$NETWORK/$PREFIX dev")" ]; then - cmd="ip r a $NETWORK/$PREFIX dev $dev table localnets" - $cmd - if [ "$?" = 0 ]; then - logger -s -t policyrouting "Add route: $cmd" - else - logger -s -t policyrouting "Error! Could not add route: $cmd" - fi - fi - - fi - - if [ -n "$net6" ]; then - cmd="ip -6 r a $net6 dev $dev table localnets" - $cmd 2>&1 > /dev/null - if [ "$?" = 0 ]; then - logger -s -t policyrouting "Add route: $cmd (IPv6)" - fi - - fi - - networks="" - for z in $zones; do - network_zone="$(uci -q get firewall.zone_${z}.network)" - if [ -z "$network_zone" ]; then - network_zone="$z" - fi - networks="$networks $network_zone" - done - for n in $networks; do - if [ "$INTERFACE" = "$n" ]; then - for p in $proto; do - if [ ! "$(ip -$p ru s | grep "from all iif $dev lookup olsr-default")" ]; then - ip -$p rule add dev "$dev" lookup olsr-default prio 20000 - if [ "$strict" != 0 ]; then - ip -$p rule add dev "$dev" unreachable prio 20001 - fi - if [ "$?" = 0 ]; then - logger -s -t policyrouting "Use mesh gateway for interface $dev (IPv$p)" - if [ -z "$(uci -P /var/state get freifunk-policyrouting.${INTERFACE})" ]; then - uci -P /var/state set freifunk-policyrouting.${INTERFACE}="state" - fi - uci -P /var/state set freifunk-policyrouting.${INTERFACE}.device="$dev" - else - logger -s -t policyrouting "Error: Could not add rule: dev "$dev" lookup olsr-default prio 20000 (IPv$p)" - fi - fi - done - fi - done - fi - -fi - -if [ "$ACTION" = "ifdown" ]; then - dev="$(uci -q -P /var/state get freifunk-policyrouting.${INTERFACE}.device)" - if [ -n "$dev" ]; then - networks="" - for z in $zones; do - network_zone="$(uci -q get firewall.zone_${z}.network)" - if [ -z "$network_zone" ]; then - network_zone="$z" - fi - networks="$networks $network_zone" - done - for n in $networks; do - if [ "$INTERFACE" = "$n" ]; then - for p in $proto; do - if [ "$(ip -$p ru s | grep "from all iif $dev lookup olsr-default")" ]; then - ip -$p rule del dev "$dev" lookup olsr-default prio 20000 - ip -$p rule del dev "$dev" unreachable prio 20001 - if [ "$?" = 0 ]; then - logger -s -t policyrouting "Remove rule: dev "$dev" lookup olsr-default prio 20000 (IPv$p)" - else - logger -s -t policyrouting "Error! Could not remove rule: dev "$dev" lookup olsr-default prio 20000 (IPv$p)" - fi - fi - done - fi - done - fi -fi diff --git a/package/luci/contrib/package/freifunk-policyrouting/files/etc/init.d/freifunk-policyrouting b/package/luci/contrib/package/freifunk-policyrouting/files/etc/init.d/freifunk-policyrouting deleted file mode 100755 index 4c9172427c..0000000000 --- a/package/luci/contrib/package/freifunk-policyrouting/files/etc/init.d/freifunk-policyrouting +++ /dev/null @@ -1,172 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=15 -. /lib/functions/network.sh -. /lib/functions.sh - -proto="4" -[ -f /proc/net/ipv6_route ] && proto="4 6" -[ -f /etc/config/olsrd ] && cfgs="olsrd" -[ -f /etc/config/olsrd6 ] && cfgs="$cfgs olsrd6" - -config_load freifunk-policyrouting -config_get enable pr enable -config_get fallback pr fallback -config_get zones pr zones - - -olsrd_rmtables() { - for cfg in $cfgs; do - # Remove custom routing tables from olsrd - if [ "`uci -q get $cfg.@olsrd[0].RtTable`" == "111" ] || [ "`uci -q get $cfg.@olsrd[0].RtTableDefault`" == "112" ]; then - uci delete $cfg.@olsrd[0].RtTable - uci delete $cfg.@olsrd[0].RtTableDefault - uci commit - fi - done -} - -olsrd_intalltables() { - for cfg in $cfgs; do - if [ ! "`uci -q get $cfg.@olsrd[0].RtTable`" == "111" ] || [ ! "`uci -q get $cfg.@olsrd[0].RtTableDefault`" == "112" ]; then - uci set $cfg.@olsrd[0].RtTable='111' - uci set $cfg.@olsrd[0].RtTableDefault='112' - uci commit $cfg - /etc/init.d/$cfg restart 2&> /dev/null - fi - done -} - -rt_tables() { - tables="/etc/iproute2/rt_tables" - if [ -z "`grep "110" $tables`" ]; then - echo "110 localnets" >> $tables - fi - if [ -z "`grep "111" $tables`" ]; then - echo "111 olsr" >> $tables - fi - if [ -z "`grep "112" $tables`" ]; then - echo "112 olsr-default" >> $tables - fi - -} - -handle_disable_dyngw() { - local cfg="$1" - local olsrd_cfg="$2" - config_get library "$cfg" library - case "$library" in - olsrd_dyn_gw_plain*) - config_get RtTable "$cfg" RtTable - if [ -z "$RtTable" ] || [ "$RtTable" = "254" ]; then - config_set "$cfg" ignore '1' - uci set $olsrd_cfg.$cfg.ignore="1" - uci commit $olsrd_cfg - logger -s -t policyrouting -p info "dyngw_plain plugin disabled." - fi - ;; - olsrd_dyn_gw.so*) - logger -s -t policyrouting -p info "$cfg" - uci set $olsrd_cfg.$cfg.ignore="1" - uci commit $olsrd_cfg - logger -s -t policyrouting -p info "dyngw plugin disabled." - ;; - esac -} - -disable_dyngw() { - for olsrd_cfg in $cfgs; do - config_load $olsrd_cfg - config_foreach handle_disable_dyngw LoadPlugin $olsrd_cfg - done -} - -restart_services() { - logger -s -t policyrouting -p info "Restarting services" - /etc/init.d/network restart 2&> /dev/null - for cfg in $cfgs; do - /etc/init.d/$cfg restart 2&> /dev/null - done -} - -boot() { - if [ "$enable" = "1" ]; then - [ -d /var/state ] || mkdir -p /var/state - touch /var/state/freifunk-policyrouting - start noservicerestart - else - olsrd_rmtables - fi -} - -add_lookup_rule() { - name=${1/-/_} - lookup=$2 - prio=$3 - - if [ -z "$name" -o -z "$lookup" -o -z "$prio" ]; then - logger -s -t policyrouting "Missing parameters for add_rule!" - else - for p in $proto; do - if [ "$p" = "6" ]; then - rule="rule6" - else - rule="rule" - fi - - uci batch <<- EOF - set network.${name}ipv${p}="$rule" - set network.${name}ipv${p}.lookup="$lookup" - set network.${name}ipv${p}.priority="$prio" - EOF - done - fi -} - -del_lookup_rule() { - name=${1/-/_} - for p in $proto; do - uci -q delete network.${name}ipv${p} - done -} - -start() { - if [ $enable = "1" ]; then - logger -s -t policyrouting "Starting policy routing." - rt_tables - olsrd_intalltables - disable_dyngw - - add_lookup_rule olsr olsr 1000 - add_lookup_rule localnets localnets 2000 - - if [ "$fallback" = 1 ]; then - add_lookup_rule olsr-default olsr-default 100000 - fi - fi - uci commit network - if [ ! "$1" = "noservicerestart" ]; then - restart_services - fi -} - -stop() { - logger -s -t policyrouting "Stopping policy routing" - olsrd_rmtables - del_lookup_rule olsr-default - del_lookup_rule olsr - del_lookup_rule localnets - uci commit network - restart_services - echo "Hint: To completely disable freifunk-policyrouting set enable=0 in /etc/config/freifunk-policyrouting." -} - -restart() { - logger -s -t policyrouting "Restarting policy routing" - olsrd_rmtables - del_lookup_rule olsr-default - del_lookup_rule olsr - del_lookup_rule localnets - uci commit network - start -} diff --git a/package/luci/contrib/package/freifunk-policyrouting/files/etc/uci-defaults/freifunk-policyrouting b/package/luci/contrib/package/freifunk-policyrouting/files/etc/uci-defaults/freifunk-policyrouting deleted file mode 100644 index a1e631015c..0000000000 --- a/package/luci/contrib/package/freifunk-policyrouting/files/etc/uci-defaults/freifunk-policyrouting +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -uci batch <<-EOF - add ucitrack freifunk-policyrouting - add_list ucitrack.@freifunk-policyrouting[-1].exec="/etc/init.d/freifunk-policyrouting restart" - commit ucitrack -EOF - diff --git a/package/luci/contrib/package/freifunk-watchdog/Makefile b/package/luci/contrib/package/freifunk-watchdog/Makefile deleted file mode 100644 index c720c251d1..0000000000 --- a/package/luci/contrib/package/freifunk-watchdog/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -# -# Copyright (C) 2009-2012 Jo-Philipp Wich -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=freifunk-watchdog -PKG_RELEASE:=8 - -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) -PKG_BUILD_DEPENDS := uci - -include $(INCLUDE_DIR)/package.mk - -define Package/freifunk-watchdog - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=9. Freifunk - TITLE:=Freifunk Ad-Hoc watchdog daemon - DEPENDS:=libuci -endef - -define Package/freifunk-watchdog/description - A watchdog daemon that monitors wireless interfaces to ensure the correct bssid and channel. - The process will initiate a wireless restart as soon as it detects a bssid or channel mismatch. -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) - $(CP) ./src/* $(PKG_BUILD_DIR)/ -endef - -define Build/Configure -endef - -define Build/Compile - $(MAKE) -C $(PKG_BUILD_DIR) \ - CC="$(TARGET_CC)" \ - CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \ - LDFLAGS="$(TARGET_LDFLAGS)" -endef - -define Package/freifunk-watchdog/install - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/freifunk-watchdog.init $(1)/etc/init.d/freifunk-watchdog - $(INSTALL_DIR) $(1)/etc/config - $(INSTALL_CONF) ./files/freifunk-watchdog.config $(1)/etc/config/freifunk-watchdog - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/ffwatchd $(1)/usr/sbin/ -endef - -$(eval $(call BuildPackage,freifunk-watchdog)) diff --git a/package/luci/contrib/package/freifunk-watchdog/files/freifunk-watchdog.config b/package/luci/contrib/package/freifunk-watchdog/files/freifunk-watchdog.config deleted file mode 100644 index b6e65433d0..0000000000 --- a/package/luci/contrib/package/freifunk-watchdog/files/freifunk-watchdog.config +++ /dev/null @@ -1,7 +0,0 @@ -config process - option process 'dropbear' - option initscript '/etc/init.d/dropbear' - -config process - option process 'crond' - option initscript '/etc/init.d/cron' diff --git a/package/luci/contrib/package/freifunk-watchdog/files/freifunk-watchdog.init b/package/luci/contrib/package/freifunk-watchdog/files/freifunk-watchdog.init deleted file mode 100755 index d6ede09b61..0000000000 --- a/package/luci/contrib/package/freifunk-watchdog/files/freifunk-watchdog.init +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=99 -PID=/var/run/ffwatchd.pid -BIN=/usr/sbin/ffwatchd - -boot() -{ - # If watchdog service is enabled, install cronjob, create device node and start daemon - if /etc/init.d/freifunk-watchdog enabled 2>/dev/null; then - if ! grep -q "$BIN" /etc/crontabs/root 2>/dev/null; then - echo "* * * * * $BIN running || /etc/init.d/freifunk-watchdog restart" >> /etc/crontabs/root - fi - - mknod /dev/watchdog c 10 130 - - start - - # If service is disabled, find and remove related cronjob - elif grep -q "$BIN" /etc/crontabs/root 2>/dev/null; then - sed -i -e "\\'$BIN'd" /etc/crontabs/root - fi -} - -start() -{ - start-stop-daemon -q -b -m -p $PID -x $BIN -S -} - -stop() -{ - start-stop-daemon -q -p $PID -x $BIN -K - - if ! /etc/init.d/freifunk-watchdog enabled; then - if grep -q "$BIN" /etc/crontabs/root 2>/dev/null; then - sed -i -e "\\'$BIN'd" /etc/crontabs/root - fi - fi -} diff --git a/package/luci/contrib/package/freifunk-watchdog/src/Makefile b/package/luci/contrib/package/freifunk-watchdog/src/Makefile deleted file mode 100644 index e049ebc852..0000000000 --- a/package/luci/contrib/package/freifunk-watchdog/src/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -WD_BINARY:=ffwatchd -WD_CFLAGS:=$(CFLAGS) -c -DBINARY=\"$(WD_BINARY)\" -WD_LDFLAGS:=$(LDFLAGS) -lm -luci - -watchdog: - $(CC) $(WD_CFLAGS) -o ucix.o ucix.c - $(CC) $(WD_CFLAGS) -o watchdog.o watchdog.c - $(CC) $(WD_LDFLAGS) -o $(WD_BINARY) watchdog.o ucix.o - -clean: - rm -f *~ $(WD_BINARY) *.o - diff --git a/package/luci/contrib/package/freifunk-watchdog/src/ucix.c b/package/luci/contrib/package/freifunk-watchdog/src/ucix.c deleted file mode 100644 index f2f69fc369..0000000000 --- a/package/luci/contrib/package/freifunk-watchdog/src/ucix.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - * - * Copyright (C) 2008 John Crispin - * - * Changed by Jo-Philipp Wich - */ - -#include -#include - -#include -#include -#include "ucix.h" - -static struct uci_ptr ptr; - -static inline int ucix_get_ptr(struct uci_context *ctx, const char *p, const char *s, const char *o, const char *t) -{ - memset(&ptr, 0, sizeof(ptr)); - ptr.package = p; - ptr.section = s; - ptr.option = o; - ptr.value = t; - return uci_lookup_ptr(ctx, &ptr, NULL, true); -} - -struct uci_context* ucix_init(const char *config_file) -{ - struct uci_context *ctx = uci_alloc_context(); -#ifdef uci_to_delta - uci_add_delta_path(ctx, "/var/state"); -#else - uci_add_history_path(ctx, "/var/state"); -#endif - if(uci_load(ctx, config_file, NULL) != UCI_OK) - { - return NULL; - } - return ctx; -} - -void ucix_cleanup(struct uci_context *ctx) -{ - uci_free_context(ctx); -} - -const char* ucix_get_option(struct uci_context *ctx, const char *p, const char *s, const char *o) -{ - struct uci_element *e = NULL; - const char *value = NULL; - if(ucix_get_ptr(ctx, p, s, o, NULL)) - return NULL; - if (!(ptr.flags & UCI_LOOKUP_COMPLETE)) - return NULL; - e = ptr.last; - switch (e->type) - { - case UCI_TYPE_SECTION: - value = uci_to_section(e)->type; - break; - case UCI_TYPE_OPTION: - switch(ptr.o->type) { - case UCI_TYPE_STRING: - value = ptr.o->v.string; - break; - default: - value = NULL; - break; - } - break; - default: - return 0; - } - - return value; -} - -void ucix_for_each_section_type(struct uci_context *ctx, - const char *p, const char *t, - void (*cb)(const char*, void*), void *priv) -{ - struct uci_element *e; - if(ucix_get_ptr(ctx, p, NULL, NULL, NULL)) - return; - uci_foreach_element(&ptr.p->sections, e) - if (!strcmp(t, uci_to_section(e)->type)) - cb(e->name, priv); -} - diff --git a/package/luci/contrib/package/freifunk-watchdog/src/ucix.h b/package/luci/contrib/package/freifunk-watchdog/src/ucix.h deleted file mode 100644 index b1f5ec3f60..0000000000 --- a/package/luci/contrib/package/freifunk-watchdog/src/ucix.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - * - * Copyright (C) 2008 John Crispin - */ - -#ifndef _UCI_H__ -#define _UCI_H__ -struct uci_context* ucix_init(const char *config_file); - -void ucix_for_each_section_type(struct uci_context *ctx, - const char *p, const char *t, - void (*cb)(const char*, void*), void *priv); - -const char* ucix_get_option(struct uci_context *ctx, - const char *p, const char *s, const char *o); -#endif diff --git a/package/luci/contrib/package/freifunk-watchdog/src/watchdog.c b/package/luci/contrib/package/freifunk-watchdog/src/watchdog.c deleted file mode 100644 index f546985c9c..0000000000 --- a/package/luci/contrib/package/freifunk-watchdog/src/watchdog.c +++ /dev/null @@ -1,527 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - * - * Copyright (C) 2009 Jo-Philipp Wich - */ - -#include "watchdog.h" - -/* Global watchdog fd, required by signal handler */ -int wdfd = -1; - -/* Handle finished childs */ -static void sigchld_handler(int sig) -{ - pid_t pid; - - while( (pid = waitpid(-1, NULL, WNOHANG)) > 0 ) - syslog(LOG_INFO, "Child returned (pid %d)", pid); -} - -/* Watchdog shutdown helper */ -static void shutdown_watchdog(int sig) -{ - static const char wshutdown = WATCH_SHUTDOWN; - - if( wdfd > -1 ) - { - syslog(LOG_INFO, "Stopping watchdog timer"); - write(wdfd, &wshutdown, 1); - close(wdfd); - wdfd = -1; - } - - exit(0); -} - -/* Get BSSID of given interface */ -static int iw_get_bssid(int iwfd, const char *ifname, char *bssid) -{ - struct iwreq iwrq; - - if( iw_ioctl(iwfd, ifname, SIOCGIWAP, &iwrq) >= 0 ) - { - unsigned char *addr = (unsigned char *)iwrq.u.ap_addr.sa_data; - - sprintf(bssid, "%02X:%02X:%02X:%02X:%02X:%02X", - addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]); - - return 0; - } - - return -1; -} - -/* Get channel of given interface */ -static int iw_get_channel(int iwfd, const char *ifname, int *channel) -{ - int i; - char buffer[sizeof(struct iw_range)]; - double cur_freq, cmp_freq; - struct iwreq iwrq; - struct iw_range *range; - - memset(buffer, 0, sizeof(buffer)); - - iwrq.u.data.pointer = (char *)buffer; - iwrq.u.data.length = sizeof(buffer); - iwrq.u.data.flags = 0; - - if( iw_ioctl(iwfd, ifname, SIOCGIWRANGE, &iwrq) < 0) - { - *channel = -1; - return -1; - } - - range = (struct iw_range *)buffer; - - if( iw_ioctl(iwfd, ifname, SIOCGIWFREQ, &iwrq) >= 0 ) - { - cur_freq = ((double)iwrq.u.freq.m) * pow(10, iwrq.u.freq.e); - if( cur_freq < 1000.00 ) - { - *channel = (int)cur_freq; - return 0; - } - - for(i = 0; i < range->num_frequency; i++) - { - cmp_freq = ((double)range->freq[i].m) * pow(10, range->freq[i].e); - if( cmp_freq == cur_freq ) - { - *channel = (int)range->freq[i].i; - return 0; - } - } - } - - *channel = -1; - return -1; -} - -/* Get the (first) pid of given process name */ -static int find_process(const char *name) -{ - int pid = -1; - int file; - char buffer[128]; - char cmpname[128]; - DIR *dir; - struct dirent *entry; - - if( (dir = opendir("/proc")) != NULL ) - { - snprintf(cmpname, sizeof(cmpname), "Name:\t%s\n", name); - - while( (entry = readdir(dir)) != NULL ) - { - if( !strcmp(entry->d_name, "..") || !isdigit(*entry->d_name) ) - continue; - - sprintf(buffer, "/proc/%s/status", entry->d_name); - if( (file = open(buffer, O_RDONLY)) > -1 ) - { - read(file, buffer, sizeof(buffer)); - close(file); - - if( strstr(buffer, cmpname) == buffer ) - { - pid = atoi(entry->d_name); - - /* Skip myself ... */ - if( pid == getpid() ) - pid = -1; - else - break; - } - } - } - - closedir(dir); - return pid; - } - - syslog(LOG_CRIT, "Unable to open /proc: %s", - strerror(errno)); - - return -1; -} - -/* Get the 5 minute load average */ -static double find_loadavg(void) -{ - int fd; - char buffer[10]; - double load = 0.00; - - if( (fd = open("/proc/loadavg", O_RDONLY)) > -1 ) - { - if( read(fd, buffer, sizeof(buffer)) == sizeof(buffer) ) - load = atof(&buffer[5]); - - close(fd); - } - - return load; -} - -/* Check if given uci file was updated */ -static int check_uci_update(const char *config, time_t *mtime) -{ - struct stat s; - char path[128]; - - snprintf(path, sizeof(path), "/var/state/%s", config); - if( stat(path, &s) > -1 ) - { - if( (*mtime == 0) || (s.st_mtime > *mtime) ) - { - *mtime = s.st_mtime; - return 1; - } - } - - return 0; -} - -/* Add tuple */ -static void load_wifi_uci_add_iface(const char *section, struct uci_wifi_iface_itr_ctx *itr) -{ - wifi_tuple_t *t; - const char *ucitmp; - int val = 0; - - ucitmp = ucix_get_option(itr->ctx, "wireless", section, "mode"); - if( ucitmp && !strncmp(ucitmp, "adhoc", 5) ) - { - if( (t = (wifi_tuple_t *)malloc(sizeof(wifi_tuple_t))) != NULL ) - { - ucitmp = ucix_get_option(itr->ctx, "wireless", section, "ifname"); - if(ucitmp) - { - strncpy(t->ifname, ucitmp, sizeof(t->ifname)); - val++; - } - - ucitmp = ucix_get_option(itr->ctx, "wireless", section, "bssid"); - if(ucitmp) - { - strncpy(t->bssid, ucitmp, sizeof(t->bssid)); - val++; - } - - ucitmp = ucix_get_option(itr->ctx, "wireless", section, "device"); - if(ucitmp) - { - ucitmp = ucix_get_option(itr->ctx, "wireless", ucitmp, "channel"); - if(ucitmp) - { - t->channel = atoi(ucitmp); - val++; - } - } - - if( val == 3 ) - { - syslog(LOG_INFO, "Monitoring %s: bssid=%s channel=%d", - t->ifname, t->bssid, t->channel); - - t->next = itr->list; - itr->list = t; - } - else - { - free(t); - } - } - } -} - -/* Load config */ -static wifi_tuple_t * load_wifi_uci(wifi_tuple_t *ifs, time_t *modtime) -{ - struct uci_context *ctx; - struct uci_wifi_iface_itr_ctx itr; - wifi_tuple_t *cur, *next; - - if( check_uci_update("wireless", modtime) ) - { - syslog(LOG_INFO, "Wireless config changed, reloading"); - - if( (ctx = ucix_init("wireless")) != NULL ) - { - if( ifs != NULL ) - { - for(cur = ifs; cur; cur = next) - { - next = cur->next; - free(cur); - } - } - - itr.list = NULL; - itr.ctx = ctx; - - ucix_for_each_section_type(ctx, "wireless", "wifi-iface", - (void *)load_wifi_uci_add_iface, &itr); - - return itr.list; - } - } - - return ifs; -} - -/* Add tuple */ -static void load_watchdog_uci_add_process(const char *section, struct uci_process_itr_ctx *itr) -{ - process_tuple_t *t; - const char *ucitmp; - int val = 0; - - if( (t = (process_tuple_t *)malloc(sizeof(process_tuple_t))) != NULL ) - { - t->restart = 0; - - ucitmp = ucix_get_option(itr->ctx, "freifunk-watchdog", section, "process"); - if(ucitmp) - { - strncpy(t->process, ucitmp, sizeof(t->process)); - val++; - } - - ucitmp = ucix_get_option(itr->ctx, "freifunk-watchdog", section, "initscript"); - if(ucitmp) - { - strncpy(t->initscript, ucitmp, sizeof(t->initscript)); - val++; - } - - if( val == 2 ) - { - syslog(LOG_INFO, "Monitoring %s: initscript=%s", - t->process, t->initscript); - - t->next = itr->list; - itr->list = t; - } - else - { - free(t); - } - } -} - -/* Load config */ -static process_tuple_t * load_watchdog_uci(process_tuple_t *procs) -{ - struct uci_context *ctx; - struct uci_process_itr_ctx itr; - process_tuple_t *cur, *next; - - syslog(LOG_INFO, "Loading watchdog config"); - - if( (ctx = ucix_init("freifunk-watchdog")) != NULL ) - { - if( procs != NULL ) - { - for(cur = procs; cur; cur = next) - { - next = cur->next; - free(cur); - } - } - - itr.list = NULL; - itr.ctx = ctx; - - ucix_for_each_section_type(ctx, "freifunk-watchdog", "process", - (void *)load_watchdog_uci_add_process, &itr); - - return itr.list; - } - - return procs; -} - -/* Daemon implementation */ -static int do_daemon(void) -{ - static int wdtrigger = 1; - static int wdtimeout = BASE_INTERVAL * 2; - static const char wdkeepalive = WATCH_KEEPALIVE; - - int iwfd; - int channel; - char bssid[18]; - struct sigaction sa; - - wifi_tuple_t *ifs = NULL, *curr_if; - process_tuple_t *procs = NULL, *curr_proc; - time_t wireless_modtime = 0; - - int action_intv = 0; - int restart_wifi = 0; - int loadavg_panic = 0; - - openlog(SYSLOG_IDENT, 0, LOG_DAEMON); - memset(&sa, 0, sizeof(sa)); - - if( (iwfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1 ) - { - syslog(LOG_ERR, "Can not open wireless control socket: %s", - strerror(errno)); - - return 1; - } - - if( (wdfd = open(WATCH_DEVICE, O_WRONLY)) > -1 ) - { - syslog(LOG_INFO, "Opened %s - polling every %i seconds", - WATCH_DEVICE, BASE_INTERVAL); - - /* Install signal handler to halt watchdog on shutdown */ - sa.sa_handler = shutdown_watchdog; - sa.sa_flags = SA_NOCLDWAIT | SA_RESTART; - sigaction(SIGHUP, &sa, NULL); - sigaction(SIGINT, &sa, NULL); - sigaction(SIGPIPE, &sa, NULL); - sigaction(SIGTERM, &sa, NULL); - sigaction(SIGUSR1, &sa, NULL); - sigaction(SIGUSR2, &sa, NULL); - - /* Set watchdog timeout to twice the interval */ - ioctl(wdfd, WDIOC_SETTIMEOUT, &wdtimeout); - } - - /* Install signal handler to reap childs */ - sa.sa_handler = sigchld_handler; - sa.sa_flags = 0; - sigaction(SIGCHLD, &sa, NULL); - - /* Load watchdog configuration only once */ - procs = load_watchdog_uci(procs); - - while( 1 ) - { - /* Check/increment action interval */ - if( ++action_intv >= ACTION_INTERVAL ) - { - /* Reset action interval */ - action_intv = 0; - - /* Check average load */ - if( find_loadavg() >= LOAD_TRESHOLD ) - loadavg_panic++; - else - loadavg_panic = 0; - - /* Check wireless interfaces */ - ifs = load_wifi_uci(ifs, &wireless_modtime); - for( curr_if = ifs; curr_if; curr_if = curr_if->next ) - { - /* Get current channel and bssid */ - if( (iw_get_bssid(iwfd, curr_if->ifname, bssid) == 0) && - (iw_get_channel(iwfd, curr_if->ifname, &channel) == 0) ) - { - /* Check BSSID */ - if( strcasecmp(bssid, curr_if->bssid) != 0 ) - { - syslog(LOG_WARNING, "BSSID mismatch on %s: current=%s wanted=%s", - curr_if->ifname, bssid, curr_if->bssid); - - restart_wifi++; - } - - /* Check channel */ - else if( channel != curr_if->channel ) - { - syslog(LOG_WARNING, "Channel mismatch on %s: current=%d wanted=%d", - curr_if->ifname, channel, curr_if->channel); - - restart_wifi++; - } - } - else - { - syslog(LOG_WARNING, "Requested interface %s not present", curr_if->ifname); - } - } - - /* Check processes */ - for( curr_proc = procs; curr_proc; curr_proc = curr_proc->next ) - { - if( find_process(curr_proc->process) < 0 ) - curr_proc->restart++; - else - curr_proc->restart = 0; - - /* Process restart required? */ - if( curr_proc->restart >= HYSTERESIS ) - { - curr_proc->restart = 0; - syslog(LOG_WARNING, "The %s process died, restarting", curr_proc->process); - EXEC(PROC_ACTION); - } - } - - - /* Wifi restart required? */ - if( restart_wifi >= HYSTERESIS ) - { - restart_wifi = 0; - syslog(LOG_WARNING, "Channel or BSSID mismatch on wireless interface, restarting"); - EXEC(WIFI_ACTION); - } - - /* Is there a load problem? */ - if( loadavg_panic >= HYSTERESIS ) - { - syslog(LOG_EMERG, "Critical system load level, triggering reset!"); - - /* Try watchdog, fall back to reboot */ - if( wdfd > -1 ) - ioctl(wdfd, WDIOC_SETTIMEOUT, &wdtrigger); - else - EXEC(LOAD_ACTION); - } - } - - - /* Reset watchdog timer */ - if( wdfd > -1 ) - write(wdfd, &wdkeepalive, 1); - - sleep(BASE_INTERVAL); - } - - shutdown_watchdog(0); - closelog(); - - return 0; -} - - -int main(int argc, char *argv[]) -{ - /* Check if watchdog is running ... */ - if( (argc > 1) && (strcmp(argv[1], "running") == 0) ) - { - return (find_process(BINARY) == -1); - } - - /* Start daemon */ - return do_daemon(); -} diff --git a/package/luci/contrib/package/freifunk-watchdog/src/watchdog.h b/package/luci/contrib/package/freifunk-watchdog/src/watchdog.h deleted file mode 100644 index 6f2382de38..0000000000 --- a/package/luci/contrib/package/freifunk-watchdog/src/watchdog.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - * - * Copyright (C) 2009 Jo-Philipp Wich - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "ucix.h" -#include "wireless.22.h" - - -/* Watchdog poll interval */ -#define BASE_INTERVAL 5 - -/* Action interval (N * BASE_INTERVAL) */ -#define ACTION_INTERVAL 6 - -/* Hysteresis */ -#define HYSTERESIS 3 - -/* How to call myself in the logs */ -#define SYSLOG_IDENT "Freifunk Watchdog" - -/* Process error action */ -#define PROC_ACTION curr_proc->initscript, curr_proc->initscript, "restart" - -/* Wifi error action */ -#define WIFI_ACTION "/sbin/wifi", "/sbin/wifi" - -/* Watchdog device */ -#define WATCH_DEVICE "/dev/watchdog" -#define WATCH_SHUTDOWN 'V' -#define WATCH_KEEPALIVE '\0' - -/* System load error action and treshold */ -#define LOAD_TRESHOLD 15.00 -#define LOAD_ACTION "/sbin/reboot", "/sbin/reboot" - -/* Fallback binary name (passed by makefile) */ -#ifndef BINARY -#define BINARY "ffwatchd" -#endif - - -/* ifname/bssid/channel tuples */ -struct wifi_tuple { - char ifname[16]; - char bssid[18]; - int channel; - struct wifi_tuple *next; -}; - -/* structure to hold tuple-list and uci context during iteration */ -struct uci_wifi_iface_itr_ctx { - struct wifi_tuple *list; - struct uci_context *ctx; -}; - -typedef struct wifi_tuple wifi_tuple_t; - - -/* process name/exec tuples */ -struct process_tuple { - char process[PATH_MAX + 1]; - char initscript[PATH_MAX + 1]; - int restart; - struct process_tuple *next; -}; - -/* structure to hold tuple-list and uci context during iteration */ -struct uci_process_itr_ctx { - struct process_tuple *list; - struct uci_context *ctx; -}; - -typedef struct process_tuple process_tuple_t; - - -/* ioctl() helper (stolen from iwlib) */ -static inline int -iw_ioctl(int skfd, /* Socket to the kernel */ - const char * ifname, /* Device name */ - int request, /* WE ID */ - struct iwreq * pwrq) /* Fixed part of the request */ -{ - /* Set device name */ - strncpy(pwrq->ifr_ifrn.ifrn_name, ifname, 16); - - /* Do the request */ - return(ioctl(skfd, request, pwrq)); -} - -/* fork() & execl() helper */ -#define EXEC(x) \ - do { \ - switch(fork()) \ - { \ - case -1: \ - syslog(LOG_CRIT, "Unable to fork child: %s", \ - strerror(errno)); \ - break; \ - \ - case 0: \ - execl(x, NULL); \ - syslog(LOG_CRIT, "Unable to execute action: %s", \ - strerror(errno)); \ - return 1; \ - } \ - } while(0) - diff --git a/package/luci/contrib/package/freifunk-watchdog/src/wireless.22.h b/package/luci/contrib/package/freifunk-watchdog/src/wireless.22.h deleted file mode 100644 index 1d19243f33..0000000000 --- a/package/luci/contrib/package/freifunk-watchdog/src/wireless.22.h +++ /dev/null @@ -1,1139 +0,0 @@ -/* - * This file define a set of standard wireless extensions - * - * Version : 22 16.3.07 - * - * Authors : Jean Tourrilhes - HPL - - * Copyright (c) 1997-2007 Jean Tourrilhes, All Rights Reserved. - */ - -#ifndef _LINUX_WIRELESS_H -#define _LINUX_WIRELESS_H - -/************************** DOCUMENTATION **************************/ -/* - * Initial APIs (1996 -> onward) : - * ----------------------------- - * Basically, the wireless extensions are for now a set of standard ioctl - * call + /proc/net/wireless - * - * The entry /proc/net/wireless give statistics and information on the - * driver. - * This is better than having each driver having its entry because - * its centralised and we may remove the driver module safely. - * - * Ioctl are used to configure the driver and issue commands. This is - * better than command line options of insmod because we may want to - * change dynamically (while the driver is running) some parameters. - * - * The ioctl mechanimsm are copied from standard devices ioctl. - * We have the list of command plus a structure descibing the - * data exchanged... - * Note that to add these ioctl, I was obliged to modify : - * # net/core/dev.c (two place + add include) - * # net/ipv4/af_inet.c (one place + add include) - * - * /proc/net/wireless is a copy of /proc/net/dev. - * We have a structure for data passed from the driver to /proc/net/wireless - * Too add this, I've modified : - * # net/core/dev.c (two other places) - * # include/linux/netdevice.h (one place) - * # include/linux/proc_fs.h (one place) - * - * New driver API (2002 -> onward) : - * ------------------------------- - * This file is only concerned with the user space API and common definitions. - * The new driver API is defined and documented in : - * # include/net/iw_handler.h - * - * Note as well that /proc/net/wireless implementation has now moved in : - * # net/core/wireless.c - * - * Wireless Events (2002 -> onward) : - * -------------------------------- - * Events are defined at the end of this file, and implemented in : - * # net/core/wireless.c - * - * Other comments : - * -------------- - * Do not add here things that are redundant with other mechanisms - * (drivers init, ifconfig, /proc/net/dev, ...) and with are not - * wireless specific. - * - * These wireless extensions are not magic : each driver has to provide - * support for them... - * - * IMPORTANT NOTE : As everything in the kernel, this is very much a - * work in progress. Contact me if you have ideas of improvements... - */ - -/***************************** INCLUDES *****************************/ - -/* This header is used in user-space, therefore need to be sanitised - * for that purpose. Those includes are usually not compatible with glibc. - * To know which includes to use in user-space, check iwlib.h. */ -#ifdef __KERNEL__ -#include /* for "caddr_t" et al */ -#include /* for "struct sockaddr" et al */ -#include /* for IFNAMSIZ and co... */ -#endif /* __KERNEL__ */ - -/***************************** VERSION *****************************/ -/* - * This constant is used to know the availability of the wireless - * extensions and to know which version of wireless extensions it is - * (there is some stuff that will be added in the future...) - * I just plan to increment with each new version. - */ -#define WIRELESS_EXT 22 - -/* - * Changes : - * - * V2 to V3 - * -------- - * Alan Cox start some incompatibles changes. I've integrated a bit more. - * - Encryption renamed to Encode to avoid US regulation problems - * - Frequency changed from float to struct to avoid problems on old 386 - * - * V3 to V4 - * -------- - * - Add sensitivity - * - * V4 to V5 - * -------- - * - Missing encoding definitions in range - * - Access points stuff - * - * V5 to V6 - * -------- - * - 802.11 support (ESSID ioctls) - * - * V6 to V7 - * -------- - * - define IW_ESSID_MAX_SIZE and IW_MAX_AP - * - * V7 to V8 - * -------- - * - Changed my e-mail address - * - More 802.11 support (nickname, rate, rts, frag) - * - List index in frequencies - * - * V8 to V9 - * -------- - * - Support for 'mode of operation' (ad-hoc, managed...) - * - Support for unicast and multicast power saving - * - Change encoding to support larger tokens (>64 bits) - * - Updated iw_params (disable, flags) and use it for NWID - * - Extracted iw_point from iwreq for clarity - * - * V9 to V10 - * --------- - * - Add PM capability to range structure - * - Add PM modifier : MAX/MIN/RELATIVE - * - Add encoding option : IW_ENCODE_NOKEY - * - Add TxPower ioctls (work like TxRate) - * - * V10 to V11 - * ---------- - * - Add WE version in range (help backward/forward compatibility) - * - Add retry ioctls (work like PM) - * - * V11 to V12 - * ---------- - * - Add SIOCSIWSTATS to get /proc/net/wireless programatically - * - Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space - * - Add new statistics (frag, retry, beacon) - * - Add average quality (for user space calibration) - * - * V12 to V13 - * ---------- - * - Document creation of new driver API. - * - Extract union iwreq_data from struct iwreq (for new driver API). - * - Rename SIOCSIWNAME as SIOCSIWCOMMIT - * - * V13 to V14 - * ---------- - * - Wireless Events support : define struct iw_event - * - Define additional specific event numbers - * - Add "addr" and "param" fields in union iwreq_data - * - AP scanning stuff (SIOCSIWSCAN and friends) - * - * V14 to V15 - * ---------- - * - Add IW_PRIV_TYPE_ADDR for struct sockaddr private arg - * - Make struct iw_freq signed (both m & e), add explicit padding - * - Add IWEVCUSTOM for driver specific event/scanning token - * - Add IW_MAX_GET_SPY for driver returning a lot of addresses - * - Add IW_TXPOW_RANGE for range of Tx Powers - * - Add IWEVREGISTERED & IWEVEXPIRED events for Access Points - * - Add IW_MODE_MONITOR for passive monitor - * - * V15 to V16 - * ---------- - * - Increase the number of bitrates in iw_range to 32 (for 802.11g) - * - Increase the number of frequencies in iw_range to 32 (for 802.11b+a) - * - Reshuffle struct iw_range for increases, add filler - * - Increase IW_MAX_AP to 64 for driver returning a lot of addresses - * - Remove IW_MAX_GET_SPY because conflict with enhanced spy support - * - Add SIOCSIWTHRSPY/SIOCGIWTHRSPY and "struct iw_thrspy" - * - Add IW_ENCODE_TEMP and iw_range->encoding_login_index - * - * V16 to V17 - * ---------- - * - Add flags to frequency -> auto/fixed - * - Document (struct iw_quality *)->updated, add new flags (INVALID) - * - Wireless Event capability in struct iw_range - * - Add support for relative TxPower (yick !) - * - * V17 to V18 (From Jouni Malinen ) - * ---------- - * - Add support for WPA/WPA2 - * - Add extended encoding configuration (SIOCSIWENCODEEXT and - * SIOCGIWENCODEEXT) - * - Add SIOCSIWGENIE/SIOCGIWGENIE - * - Add SIOCSIWMLME - * - Add SIOCSIWPMKSA - * - Add struct iw_range bit field for supported encoding capabilities - * - Add optional scan request parameters for SIOCSIWSCAN - * - Add SIOCSIWAUTH/SIOCGIWAUTH for setting authentication and WPA - * related parameters (extensible up to 4096 parameter values) - * - Add wireless events: IWEVGENIE, IWEVMICHAELMICFAILURE, - * IWEVASSOCREQIE, IWEVASSOCRESPIE, IWEVPMKIDCAND - * - * V18 to V19 - * ---------- - * - Remove (struct iw_point *)->pointer from events and streams - * - Remove header includes to help user space - * - Increase IW_ENCODING_TOKEN_MAX from 32 to 64 - * - Add IW_QUAL_ALL_UPDATED and IW_QUAL_ALL_INVALID macros - * - Add explicit flag to tell stats are in dBm : IW_QUAL_DBM - * - Add IW_IOCTL_IDX() and IW_EVENT_IDX() macros - * - * V19 to V20 - * ---------- - * - RtNetlink requests support (SET/GET) - * - * V20 to V21 - * ---------- - * - Remove (struct net_device *)->get_wireless_stats() - * - Change length in ESSID and NICK to strlen() instead of strlen()+1 - * - Add IW_RETRY_SHORT/IW_RETRY_LONG retry modifiers - * - Power/Retry relative values no longer * 100000 - * - Add explicit flag to tell stats are in 802.11k RCPI : IW_QUAL_RCPI - * - * V21 to V22 - * ---------- - * - Prevent leaking of kernel space in stream on 64 bits. - */ - -/**************************** CONSTANTS ****************************/ - -/* -------------------------- IOCTL LIST -------------------------- */ - -/* Wireless Identification */ -#define SIOCSIWCOMMIT 0x8B00 /* Commit pending changes to driver */ -#define SIOCGIWNAME 0x8B01 /* get name == wireless protocol */ -/* SIOCGIWNAME is used to verify the presence of Wireless Extensions. - * Common values : "IEEE 802.11-DS", "IEEE 802.11-FH", "IEEE 802.11b"... - * Don't put the name of your driver there, it's useless. */ - -/* Basic operations */ -#define SIOCSIWNWID 0x8B02 /* set network id (pre-802.11) */ -#define SIOCGIWNWID 0x8B03 /* get network id (the cell) */ -#define SIOCSIWFREQ 0x8B04 /* set channel/frequency (Hz) */ -#define SIOCGIWFREQ 0x8B05 /* get channel/frequency (Hz) */ -#define SIOCSIWMODE 0x8B06 /* set operation mode */ -#define SIOCGIWMODE 0x8B07 /* get operation mode */ -#define SIOCSIWSENS 0x8B08 /* set sensitivity (dBm) */ -#define SIOCGIWSENS 0x8B09 /* get sensitivity (dBm) */ - -/* Informative stuff */ -#define SIOCSIWRANGE 0x8B0A /* Unused */ -#define SIOCGIWRANGE 0x8B0B /* Get range of parameters */ -#define SIOCSIWPRIV 0x8B0C /* Unused */ -#define SIOCGIWPRIV 0x8B0D /* get private ioctl interface info */ -#define SIOCSIWSTATS 0x8B0E /* Unused */ -#define SIOCGIWSTATS 0x8B0F /* Get /proc/net/wireless stats */ -/* SIOCGIWSTATS is strictly used between user space and the kernel, and - * is never passed to the driver (i.e. the driver will never see it). */ - -/* Spy support (statistics per MAC address - used for Mobile IP support) */ -#define SIOCSIWSPY 0x8B10 /* set spy addresses */ -#define SIOCGIWSPY 0x8B11 /* get spy info (quality of link) */ -#define SIOCSIWTHRSPY 0x8B12 /* set spy threshold (spy event) */ -#define SIOCGIWTHRSPY 0x8B13 /* get spy threshold */ - -/* Access Point manipulation */ -#define SIOCSIWAP 0x8B14 /* set access point MAC addresses */ -#define SIOCGIWAP 0x8B15 /* get access point MAC addresses */ -#define SIOCGIWAPLIST 0x8B17 /* Deprecated in favor of scanning */ -#define SIOCSIWSCAN 0x8B18 /* trigger scanning (list cells) */ -#define SIOCGIWSCAN 0x8B19 /* get scanning results */ - -/* 802.11 specific support */ -#define SIOCSIWESSID 0x8B1A /* set ESSID (network name) */ -#define SIOCGIWESSID 0x8B1B /* get ESSID */ -#define SIOCSIWNICKN 0x8B1C /* set node name/nickname */ -#define SIOCGIWNICKN 0x8B1D /* get node name/nickname */ -/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit - * within the 'iwreq' structure, so we need to use the 'data' member to - * point to a string in user space, like it is done for RANGE... */ - -/* Other parameters useful in 802.11 and some other devices */ -#define SIOCSIWRATE 0x8B20 /* set default bit rate (bps) */ -#define SIOCGIWRATE 0x8B21 /* get default bit rate (bps) */ -#define SIOCSIWRTS 0x8B22 /* set RTS/CTS threshold (bytes) */ -#define SIOCGIWRTS 0x8B23 /* get RTS/CTS threshold (bytes) */ -#define SIOCSIWFRAG 0x8B24 /* set fragmentation thr (bytes) */ -#define SIOCGIWFRAG 0x8B25 /* get fragmentation thr (bytes) */ -#define SIOCSIWTXPOW 0x8B26 /* set transmit power (dBm) */ -#define SIOCGIWTXPOW 0x8B27 /* get transmit power (dBm) */ -#define SIOCSIWRETRY 0x8B28 /* set retry limits and lifetime */ -#define SIOCGIWRETRY 0x8B29 /* get retry limits and lifetime */ - -/* Encoding stuff (scrambling, hardware security, WEP...) */ -#define SIOCSIWENCODE 0x8B2A /* set encoding token & mode */ -#define SIOCGIWENCODE 0x8B2B /* get encoding token & mode */ -/* Power saving stuff (power management, unicast and multicast) */ -#define SIOCSIWPOWER 0x8B2C /* set Power Management settings */ -#define SIOCGIWPOWER 0x8B2D /* get Power Management settings */ -/* Modulation bitmask */ -#define SIOCSIWMODUL 0x8B2E /* set Modulations settings */ -#define SIOCGIWMODUL 0x8B2F /* get Modulations settings */ - -/* WPA : Generic IEEE 802.11 informatiom element (e.g., for WPA/RSN/WMM). - * This ioctl uses struct iw_point and data buffer that includes IE id and len - * fields. More than one IE may be included in the request. Setting the generic - * IE to empty buffer (len=0) removes the generic IE from the driver. Drivers - * are allowed to generate their own WPA/RSN IEs, but in these cases, drivers - * are required to report the used IE as a wireless event, e.g., when - * associating with an AP. */ -#define SIOCSIWGENIE 0x8B30 /* set generic IE */ -#define SIOCGIWGENIE 0x8B31 /* get generic IE */ - -/* WPA : IEEE 802.11 MLME requests */ -#define SIOCSIWMLME 0x8B16 /* request MLME operation; uses - * struct iw_mlme */ -/* WPA : Authentication mode parameters */ -#define SIOCSIWAUTH 0x8B32 /* set authentication mode params */ -#define SIOCGIWAUTH 0x8B33 /* get authentication mode params */ - -/* WPA : Extended version of encoding configuration */ -#define SIOCSIWENCODEEXT 0x8B34 /* set encoding token & mode */ -#define SIOCGIWENCODEEXT 0x8B35 /* get encoding token & mode */ - -/* WPA2 : PMKSA cache management */ -#define SIOCSIWPMKSA 0x8B36 /* PMKSA cache operation */ - -/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */ - -/* These 32 ioctl are wireless device private, for 16 commands. - * Each driver is free to use them for whatever purpose it chooses, - * however the driver *must* export the description of those ioctls - * with SIOCGIWPRIV and *must* use arguments as defined below. - * If you don't follow those rules, DaveM is going to hate you (reason : - * it make mixed 32/64bit operation impossible). - */ -#define SIOCIWFIRSTPRIV 0x8BE0 -#define SIOCIWLASTPRIV 0x8BFF -/* Previously, we were using SIOCDEVPRIVATE, but we now have our - * separate range because of collisions with other tools such as - * 'mii-tool'. - * We now have 32 commands, so a bit more space ;-). - * Also, all 'even' commands are only usable by root and don't return the - * content of ifr/iwr to user (but you are not obliged to use the set/get - * convention, just use every other two command). More details in iwpriv.c. - * And I repeat : you are not forced to use them with iwpriv, but you - * must be compliant with it. - */ - -/* ------------------------- IOCTL STUFF ------------------------- */ - -/* The first and the last (range) */ -#define SIOCIWFIRST 0x8B00 -#define SIOCIWLAST SIOCIWLASTPRIV /* 0x8BFF */ -#define IW_IOCTL_IDX(cmd) ((cmd) - SIOCIWFIRST) - -/* Odd : get (world access), even : set (root access) */ -#define IW_IS_SET(cmd) (!((cmd) & 0x1)) -#define IW_IS_GET(cmd) ((cmd) & 0x1) - -/* ----------------------- WIRELESS EVENTS ----------------------- */ -/* Those are *NOT* ioctls, do not issue request on them !!! */ -/* Most events use the same identifier as ioctl requests */ - -#define IWEVTXDROP 0x8C00 /* Packet dropped to excessive retry */ -#define IWEVQUAL 0x8C01 /* Quality part of statistics (scan) */ -#define IWEVCUSTOM 0x8C02 /* Driver specific ascii string */ -#define IWEVREGISTERED 0x8C03 /* Discovered a new node (AP mode) */ -#define IWEVEXPIRED 0x8C04 /* Expired a node (AP mode) */ -#define IWEVGENIE 0x8C05 /* Generic IE (WPA, RSN, WMM, ..) - * (scan results); This includes id and - * length fields. One IWEVGENIE may - * contain more than one IE. Scan - * results may contain one or more - * IWEVGENIE events. */ -#define IWEVMICHAELMICFAILURE 0x8C06 /* Michael MIC failure - * (struct iw_michaelmicfailure) - */ -#define IWEVASSOCREQIE 0x8C07 /* IEs used in (Re)Association Request. - * The data includes id and length - * fields and may contain more than one - * IE. This event is required in - * Managed mode if the driver - * generates its own WPA/RSN IE. This - * should be sent just before - * IWEVREGISTERED event for the - * association. */ -#define IWEVASSOCRESPIE 0x8C08 /* IEs used in (Re)Association - * Response. The data includes id and - * length fields and may contain more - * than one IE. This may be sent - * between IWEVASSOCREQIE and - * IWEVREGISTERED events for the - * association. */ -#define IWEVPMKIDCAND 0x8C09 /* PMKID candidate for RSN - * pre-authentication - * (struct iw_pmkid_cand) */ - -#define IWEVFIRST 0x8C00 -#define IW_EVENT_IDX(cmd) ((cmd) - IWEVFIRST) - -/* ------------------------- PRIVATE INFO ------------------------- */ -/* - * The following is used with SIOCGIWPRIV. It allow a driver to define - * the interface (name, type of data) for its private ioctl. - * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV - */ - -#define IW_PRIV_TYPE_MASK 0x7000 /* Type of arguments */ -#define IW_PRIV_TYPE_NONE 0x0000 -#define IW_PRIV_TYPE_BYTE 0x1000 /* Char as number */ -#define IW_PRIV_TYPE_CHAR 0x2000 /* Char as character */ -#define IW_PRIV_TYPE_INT 0x4000 /* 32 bits int */ -#define IW_PRIV_TYPE_FLOAT 0x5000 /* struct iw_freq */ -#define IW_PRIV_TYPE_ADDR 0x6000 /* struct sockaddr */ - -#define IW_PRIV_SIZE_FIXED 0x0800 /* Variable or fixed number of args */ - -#define IW_PRIV_SIZE_MASK 0x07FF /* Max number of those args */ - -/* - * Note : if the number of args is fixed and the size < 16 octets, - * instead of passing a pointer we will put args in the iwreq struct... - */ - -/* ----------------------- OTHER CONSTANTS ----------------------- */ - -/* Maximum frequencies in the range struct */ -#define IW_MAX_FREQUENCIES 32 -/* Note : if you have something like 80 frequencies, - * don't increase this constant and don't fill the frequency list. - * The user will be able to set by channel anyway... */ - -/* Maximum bit rates in the range struct */ -#define IW_MAX_BITRATES 32 - -/* Maximum tx powers in the range struct */ -#define IW_MAX_TXPOWER 8 -/* Note : if you more than 8 TXPowers, just set the max and min or - * a few of them in the struct iw_range. */ - -/* Maximum of address that you may set with SPY */ -#define IW_MAX_SPY 8 - -/* Maximum of address that you may get in the - list of access points in range */ -#define IW_MAX_AP 64 - -/* Maximum size of the ESSID and NICKN strings */ -#define IW_ESSID_MAX_SIZE 32 - -/* Modes of operation */ -#define IW_MODE_AUTO 0 /* Let the driver decides */ -#define IW_MODE_ADHOC 1 /* Single cell network */ -#define IW_MODE_INFRA 2 /* Multi cell network, roaming, ... */ -#define IW_MODE_MASTER 3 /* Synchronisation master or Access Point */ -#define IW_MODE_REPEAT 4 /* Wireless Repeater (forwarder) */ -#define IW_MODE_SECOND 5 /* Secondary master/repeater (backup) */ -#define IW_MODE_MONITOR 6 /* Passive monitor (listen only) */ - -/* Statistics flags (bitmask in updated) */ -#define IW_QUAL_QUAL_UPDATED 0x01 /* Value was updated since last read */ -#define IW_QUAL_LEVEL_UPDATED 0x02 -#define IW_QUAL_NOISE_UPDATED 0x04 -#define IW_QUAL_ALL_UPDATED 0x07 -#define IW_QUAL_DBM 0x08 /* Level + Noise are dBm */ -#define IW_QUAL_QUAL_INVALID 0x10 /* Driver doesn't provide value */ -#define IW_QUAL_LEVEL_INVALID 0x20 -#define IW_QUAL_NOISE_INVALID 0x40 -#define IW_QUAL_RCPI 0x80 /* Level + Noise are 802.11k RCPI */ -#define IW_QUAL_ALL_INVALID 0x70 - -/* Frequency flags */ -#define IW_FREQ_AUTO 0x00 /* Let the driver decides */ -#define IW_FREQ_FIXED 0x01 /* Force a specific value */ - -/* Maximum number of size of encoding token available - * they are listed in the range structure */ -#define IW_MAX_ENCODING_SIZES 8 - -/* Maximum size of the encoding token in bytes */ -#define IW_ENCODING_TOKEN_MAX 64 /* 512 bits (for now) */ - -/* Flags for encoding (along with the token) */ -#define IW_ENCODE_INDEX 0x00FF /* Token index (if needed) */ -#define IW_ENCODE_FLAGS 0xFF00 /* Flags defined below */ -#define IW_ENCODE_MODE 0xF000 /* Modes defined below */ -#define IW_ENCODE_DISABLED 0x8000 /* Encoding disabled */ -#define IW_ENCODE_ENABLED 0x0000 /* Encoding enabled */ -#define IW_ENCODE_RESTRICTED 0x4000 /* Refuse non-encoded packets */ -#define IW_ENCODE_OPEN 0x2000 /* Accept non-encoded packets */ -#define IW_ENCODE_NOKEY 0x0800 /* Key is write only, so not present */ -#define IW_ENCODE_TEMP 0x0400 /* Temporary key */ - -/* Power management flags available (along with the value, if any) */ -#define IW_POWER_ON 0x0000 /* No details... */ -#define IW_POWER_TYPE 0xF000 /* Type of parameter */ -#define IW_POWER_PERIOD 0x1000 /* Value is a period/duration of */ -#define IW_POWER_TIMEOUT 0x2000 /* Value is a timeout (to go asleep) */ -#define IW_POWER_SAVING 0x4000 /* Value is relative (how aggressive)*/ -#define IW_POWER_MODE 0x0F00 /* Power Management mode */ -#define IW_POWER_UNICAST_R 0x0100 /* Receive only unicast messages */ -#define IW_POWER_MULTICAST_R 0x0200 /* Receive only multicast messages */ -#define IW_POWER_ALL_R 0x0300 /* Receive all messages though PM */ -#define IW_POWER_FORCE_S 0x0400 /* Force PM procedure for sending unicast */ -#define IW_POWER_REPEATER 0x0800 /* Repeat broadcast messages in PM period */ -#define IW_POWER_MODIFIER 0x000F /* Modify a parameter */ -#define IW_POWER_MIN 0x0001 /* Value is a minimum */ -#define IW_POWER_MAX 0x0002 /* Value is a maximum */ -#define IW_POWER_RELATIVE 0x0004 /* Value is not in seconds/ms/us */ - -/* Transmit Power flags available */ -#define IW_TXPOW_TYPE 0x00FF /* Type of value */ -#define IW_TXPOW_DBM 0x0000 /* Value is in dBm */ -#define IW_TXPOW_MWATT 0x0001 /* Value is in mW */ -#define IW_TXPOW_RELATIVE 0x0002 /* Value is in arbitrary units */ -#define IW_TXPOW_RANGE 0x1000 /* Range of value between min/max */ - -/* Retry limits and lifetime flags available */ -#define IW_RETRY_ON 0x0000 /* No details... */ -#define IW_RETRY_TYPE 0xF000 /* Type of parameter */ -#define IW_RETRY_LIMIT 0x1000 /* Maximum number of retries*/ -#define IW_RETRY_LIFETIME 0x2000 /* Maximum duration of retries in us */ -#define IW_RETRY_MODIFIER 0x00FF /* Modify a parameter */ -#define IW_RETRY_MIN 0x0001 /* Value is a minimum */ -#define IW_RETRY_MAX 0x0002 /* Value is a maximum */ -#define IW_RETRY_RELATIVE 0x0004 /* Value is not in seconds/ms/us */ -#define IW_RETRY_SHORT 0x0010 /* Value is for short packets */ -#define IW_RETRY_LONG 0x0020 /* Value is for long packets */ - -/* Scanning request flags */ -#define IW_SCAN_DEFAULT 0x0000 /* Default scan of the driver */ -#define IW_SCAN_ALL_ESSID 0x0001 /* Scan all ESSIDs */ -#define IW_SCAN_THIS_ESSID 0x0002 /* Scan only this ESSID */ -#define IW_SCAN_ALL_FREQ 0x0004 /* Scan all Frequencies */ -#define IW_SCAN_THIS_FREQ 0x0008 /* Scan only this Frequency */ -#define IW_SCAN_ALL_MODE 0x0010 /* Scan all Modes */ -#define IW_SCAN_THIS_MODE 0x0020 /* Scan only this Mode */ -#define IW_SCAN_ALL_RATE 0x0040 /* Scan all Bit-Rates */ -#define IW_SCAN_THIS_RATE 0x0080 /* Scan only this Bit-Rate */ -/* struct iw_scan_req scan_type */ -#define IW_SCAN_TYPE_ACTIVE 0 -#define IW_SCAN_TYPE_PASSIVE 1 -/* Maximum size of returned data */ -#define IW_SCAN_MAX_DATA 4096 /* In bytes */ - -/* Max number of char in custom event - use multiple of them if needed */ -#define IW_CUSTOM_MAX 256 /* In bytes */ - -/* Generic information element */ -#define IW_GENERIC_IE_MAX 1024 - -/* MLME requests (SIOCSIWMLME / struct iw_mlme) */ -#define IW_MLME_DEAUTH 0 -#define IW_MLME_DISASSOC 1 -#define IW_MLME_AUTH 2 -#define IW_MLME_ASSOC 3 - -/* SIOCSIWAUTH/SIOCGIWAUTH struct iw_param flags */ -#define IW_AUTH_INDEX 0x0FFF -#define IW_AUTH_FLAGS 0xF000 -/* SIOCSIWAUTH/SIOCGIWAUTH parameters (0 .. 4095) - * (IW_AUTH_INDEX mask in struct iw_param flags; this is the index of the - * parameter that is being set/get to; value will be read/written to - * struct iw_param value field) */ -#define IW_AUTH_WPA_VERSION 0 -#define IW_AUTH_CIPHER_PAIRWISE 1 -#define IW_AUTH_CIPHER_GROUP 2 -#define IW_AUTH_KEY_MGMT 3 -#define IW_AUTH_TKIP_COUNTERMEASURES 4 -#define IW_AUTH_DROP_UNENCRYPTED 5 -#define IW_AUTH_80211_AUTH_ALG 6 -#define IW_AUTH_WPA_ENABLED 7 -#define IW_AUTH_RX_UNENCRYPTED_EAPOL 8 -#define IW_AUTH_ROAMING_CONTROL 9 -#define IW_AUTH_PRIVACY_INVOKED 10 - -/* IW_AUTH_WPA_VERSION values (bit field) */ -#define IW_AUTH_WPA_VERSION_DISABLED 0x00000001 -#define IW_AUTH_WPA_VERSION_WPA 0x00000002 -#define IW_AUTH_WPA_VERSION_WPA2 0x00000004 - -/* IW_AUTH_PAIRWISE_CIPHER and IW_AUTH_GROUP_CIPHER values (bit field) */ -#define IW_AUTH_CIPHER_NONE 0x00000001 -#define IW_AUTH_CIPHER_WEP40 0x00000002 -#define IW_AUTH_CIPHER_TKIP 0x00000004 -#define IW_AUTH_CIPHER_CCMP 0x00000008 -#define IW_AUTH_CIPHER_WEP104 0x00000010 - -/* IW_AUTH_KEY_MGMT values (bit field) */ -#define IW_AUTH_KEY_MGMT_802_1X 1 -#define IW_AUTH_KEY_MGMT_PSK 2 - -/* IW_AUTH_80211_AUTH_ALG values (bit field) */ -#define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001 -#define IW_AUTH_ALG_SHARED_KEY 0x00000002 -#define IW_AUTH_ALG_LEAP 0x00000004 - -/* IW_AUTH_ROAMING_CONTROL values */ -#define IW_AUTH_ROAMING_ENABLE 0 /* driver/firmware based roaming */ -#define IW_AUTH_ROAMING_DISABLE 1 /* user space program used for roaming - * control */ - -/* SIOCSIWENCODEEXT definitions */ -#define IW_ENCODE_SEQ_MAX_SIZE 8 -/* struct iw_encode_ext ->alg */ -#define IW_ENCODE_ALG_NONE 0 -#define IW_ENCODE_ALG_WEP 1 -#define IW_ENCODE_ALG_TKIP 2 -#define IW_ENCODE_ALG_CCMP 3 -/* struct iw_encode_ext ->ext_flags */ -#define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001 -#define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002 -#define IW_ENCODE_EXT_GROUP_KEY 0x00000004 -#define IW_ENCODE_EXT_SET_TX_KEY 0x00000008 - -/* IWEVMICHAELMICFAILURE : struct iw_michaelmicfailure ->flags */ -#define IW_MICFAILURE_KEY_ID 0x00000003 /* Key ID 0..3 */ -#define IW_MICFAILURE_GROUP 0x00000004 -#define IW_MICFAILURE_PAIRWISE 0x00000008 -#define IW_MICFAILURE_STAKEY 0x00000010 -#define IW_MICFAILURE_COUNT 0x00000060 /* 1 or 2 (0 = count not supported) - */ - -/* Bit field values for enc_capa in struct iw_range */ -#define IW_ENC_CAPA_WPA 0x00000001 -#define IW_ENC_CAPA_WPA2 0x00000002 -#define IW_ENC_CAPA_CIPHER_TKIP 0x00000004 -#define IW_ENC_CAPA_CIPHER_CCMP 0x00000008 - -/* Event capability macros - in (struct iw_range *)->event_capa - * Because we have more than 32 possible events, we use an array of - * 32 bit bitmasks. Note : 32 bits = 0x20 = 2^5. */ -#define IW_EVENT_CAPA_BASE(cmd) ((cmd >= SIOCIWFIRSTPRIV) ? \ - (cmd - SIOCIWFIRSTPRIV + 0x60) : \ - (cmd - SIOCSIWCOMMIT)) -#define IW_EVENT_CAPA_INDEX(cmd) (IW_EVENT_CAPA_BASE(cmd) >> 5) -#define IW_EVENT_CAPA_MASK(cmd) (1 << (IW_EVENT_CAPA_BASE(cmd) & 0x1F)) -/* Event capability constants - event autogenerated by the kernel - * This list is valid for most 802.11 devices, customise as needed... */ -#define IW_EVENT_CAPA_K_0 (IW_EVENT_CAPA_MASK(0x8B04) | \ - IW_EVENT_CAPA_MASK(0x8B06) | \ - IW_EVENT_CAPA_MASK(0x8B1A)) -#define IW_EVENT_CAPA_K_1 (IW_EVENT_CAPA_MASK(0x8B2A)) -/* "Easy" macro to set events in iw_range (less efficient) */ -#define IW_EVENT_CAPA_SET(event_capa, cmd) (event_capa[IW_EVENT_CAPA_INDEX(cmd)] |= IW_EVENT_CAPA_MASK(cmd)) -#define IW_EVENT_CAPA_SET_KERNEL(event_capa) {event_capa[0] |= IW_EVENT_CAPA_K_0; event_capa[1] |= IW_EVENT_CAPA_K_1; } - -/* Modulations bitmasks */ -#define IW_MODUL_ALL 0x00000000 /* Everything supported */ -#define IW_MODUL_FH 0x00000001 /* Frequency Hopping */ -#define IW_MODUL_DS 0x00000002 /* Original Direct Sequence */ -#define IW_MODUL_CCK 0x00000004 /* 802.11b : 5.5 + 11 Mb/s */ -#define IW_MODUL_11B (IW_MODUL_DS | IW_MODUL_CCK) -#define IW_MODUL_PBCC 0x00000008 /* TI : 5.5 + 11 + 22 Mb/s */ -#define IW_MODUL_OFDM_A 0x00000010 /* 802.11a : 54 Mb/s */ -#define IW_MODUL_11A (IW_MODUL_OFDM_A) -#define IW_MODUL_11AB (IW_MODUL_11B | IW_MODUL_11A) -#define IW_MODUL_OFDM_G 0x00000020 /* 802.11g : 54 Mb/s */ -#define IW_MODUL_11G (IW_MODUL_11B | IW_MODUL_OFDM_G) -#define IW_MODUL_11AG (IW_MODUL_11G | IW_MODUL_11A) -#define IW_MODUL_TURBO 0x00000040 /* ATH : bonding, 108 Mb/s */ -/* In here we should define MIMO stuff. Later... */ -#define IW_MODUL_CUSTOM 0x40000000 /* Driver specific */ - -/* Bitrate flags available */ -#define IW_BITRATE_TYPE 0x00FF /* Type of value */ -#define IW_BITRATE_UNICAST 0x0001 /* Maximum/Fixed unicast bitrate */ -#define IW_BITRATE_BROADCAST 0x0002 /* Fixed broadcast bitrate */ - -/****************************** TYPES ******************************/ - -/* --------------------------- SUBTYPES --------------------------- */ -/* - * Generic format for most parameters that fit in an int - */ -struct iw_param -{ - int32_t value; /* The value of the parameter itself */ - uint8_t fixed; /* Hardware should not use auto select */ - uint8_t disabled; /* Disable the feature */ - uint16_t flags; /* Various specifc flags (if any) */ -}; - -/* - * For all data larger than 16 octets, we need to use a - * pointer to memory allocated in user space. - */ -struct iw_point -{ - void *pointer; /* Pointer to the data (in user space) */ - uint16_t length; /* number of fields or size in bytes */ - uint16_t flags; /* Optional params */ -}; - -/* - * A frequency - * For numbers lower than 10^9, we encode the number in 'm' and - * set 'e' to 0 - * For number greater than 10^9, we divide it by the lowest power - * of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')... - * The power of 10 is in 'e', the result of the division is in 'm'. - */ -struct iw_freq -{ - int32_t m; /* Mantissa */ - int16_t e; /* Exponent */ - uint8_t i; /* List index (when in range struct) */ - uint8_t flags; /* Flags (fixed/auto) */ -}; - -/* - * Quality of the link - */ -struct iw_quality -{ - uint8_t qual; /* link quality (%retries, SNR, - %missed beacons or better...) */ - uint8_t level; /* signal level (dBm) */ - uint8_t noise; /* noise level (dBm) */ - uint8_t updated; /* Flags to know if updated */ -}; - -/* - * Packet discarded in the wireless adapter due to - * "wireless" specific problems... - * Note : the list of counter and statistics in net_device_stats - * is already pretty exhaustive, and you should use that first. - * This is only additional stats... - */ -struct iw_discarded -{ - uint32_t nwid; /* Rx : Wrong nwid/essid */ - uint32_t code; /* Rx : Unable to code/decode (WEP) */ - uint32_t fragment; /* Rx : Can't perform MAC reassembly */ - uint32_t retries; /* Tx : Max MAC retries num reached */ - uint32_t misc; /* Others cases */ -}; - -/* - * Packet/Time period missed in the wireless adapter due to - * "wireless" specific problems... - */ -struct iw_missed -{ - uint32_t beacon; /* Missed beacons/superframe */ -}; - -/* - * Quality range (for spy threshold) - */ -struct iw_thrspy -{ - struct sockaddr addr; /* Source address (hw/mac) */ - struct iw_quality qual; /* Quality of the link */ - struct iw_quality low; /* Low threshold */ - struct iw_quality high; /* High threshold */ -}; - -/* - * Optional data for scan request - * - * Note: these optional parameters are controlling parameters for the - * scanning behavior, these do not apply to getting scan results - * (SIOCGIWSCAN). Drivers are expected to keep a local BSS table and - * provide a merged results with all BSSes even if the previous scan - * request limited scanning to a subset, e.g., by specifying an SSID. - * Especially, scan results are required to include an entry for the - * current BSS if the driver is in Managed mode and associated with an AP. - */ -struct iw_scan_req -{ - uint8_t scan_type; /* IW_SCAN_TYPE_{ACTIVE,PASSIVE} */ - uint8_t essid_len; - uint8_t num_channels; /* num entries in channel_list; - * 0 = scan all allowed channels */ - uint8_t flags; /* reserved as padding; use zero, this may - * be used in the future for adding flags - * to request different scan behavior */ - struct sockaddr bssid; /* ff:ff:ff:ff:ff:ff for broadcast BSSID or - * individual address of a specific BSS */ - - /* - * Use this ESSID if IW_SCAN_THIS_ESSID flag is used instead of using - * the current ESSID. This allows scan requests for specific ESSID - * without having to change the current ESSID and potentially breaking - * the current association. - */ - uint8_t essid[IW_ESSID_MAX_SIZE]; - - /* - * Optional parameters for changing the default scanning behavior. - * These are based on the MLME-SCAN.request from IEEE Std 802.11. - * TU is 1.024 ms. If these are set to 0, driver is expected to use - * reasonable default values. min_channel_time defines the time that - * will be used to wait for the first reply on each channel. If no - * replies are received, next channel will be scanned after this. If - * replies are received, total time waited on the channel is defined by - * max_channel_time. - */ - uint32_t min_channel_time; /* in TU */ - uint32_t max_channel_time; /* in TU */ - - struct iw_freq channel_list[IW_MAX_FREQUENCIES]; -}; - -/* ------------------------- WPA SUPPORT ------------------------- */ - -/* - * Extended data structure for get/set encoding (this is used with - * SIOCSIWENCODEEXT/SIOCGIWENCODEEXT. struct iw_point and IW_ENCODE_* - * flags are used in the same way as with SIOCSIWENCODE/SIOCGIWENCODE and - * only the data contents changes (key data -> this structure, including - * key data). - * - * If the new key is the first group key, it will be set as the default - * TX key. Otherwise, default TX key index is only changed if - * IW_ENCODE_EXT_SET_TX_KEY flag is set. - * - * Key will be changed with SIOCSIWENCODEEXT in all cases except for - * special "change TX key index" operation which is indicated by setting - * key_len = 0 and ext_flags |= IW_ENCODE_EXT_SET_TX_KEY. - * - * tx_seq/rx_seq are only used when respective - * IW_ENCODE_EXT_{TX,RX}_SEQ_VALID flag is set in ext_flags. Normal - * TKIP/CCMP operation is to set RX seq with SIOCSIWENCODEEXT and start - * TX seq from zero whenever key is changed. SIOCGIWENCODEEXT is normally - * used only by an Authenticator (AP or an IBSS station) to get the - * current TX sequence number. Using TX_SEQ_VALID for SIOCSIWENCODEEXT and - * RX_SEQ_VALID for SIOCGIWENCODEEXT are optional, but can be useful for - * debugging/testing. - */ -struct iw_encode_ext -{ - uint32_t ext_flags; /* IW_ENCODE_EXT_* */ - uint8_t tx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ - uint8_t rx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ - struct sockaddr addr; /* ff:ff:ff:ff:ff:ff for broadcast/multicast - * (group) keys or unicast address for - * individual keys */ - uint16_t alg; /* IW_ENCODE_ALG_* */ - uint16_t key_len; - uint8_t key[0]; -}; - -/* SIOCSIWMLME data */ -struct iw_mlme -{ - uint16_t cmd; /* IW_MLME_* */ - uint16_t reason_code; - struct sockaddr addr; -}; - -/* SIOCSIWPMKSA data */ -#define IW_PMKSA_ADD 1 -#define IW_PMKSA_REMOVE 2 -#define IW_PMKSA_FLUSH 3 - -#define IW_PMKID_LEN 16 - -struct iw_pmksa -{ - uint32_t cmd; /* IW_PMKSA_* */ - struct sockaddr bssid; - uint8_t pmkid[IW_PMKID_LEN]; -}; - -/* IWEVMICHAELMICFAILURE data */ -struct iw_michaelmicfailure -{ - uint32_t flags; - struct sockaddr src_addr; - uint8_t tsc[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ -}; - -/* IWEVPMKIDCAND data */ -#define IW_PMKID_CAND_PREAUTH 0x00000001 /* RNS pre-authentication enabled */ -struct iw_pmkid_cand -{ - uint32_t flags; /* IW_PMKID_CAND_* */ - uint32_t index; /* the smaller the index, the higher the - * priority */ - struct sockaddr bssid; -}; - -/* ------------------------ WIRELESS STATS ------------------------ */ -/* - * Wireless statistics (used for /proc/net/wireless) - */ -struct iw_statistics -{ - uint16_t status; /* Status - * - device dependent for now */ - - struct iw_quality qual; /* Quality of the link - * (instant/mean/max) */ - struct iw_discarded discard; /* Packet discarded counts */ - struct iw_missed miss; /* Packet missed counts */ -}; - -/* ------------------------ IOCTL REQUEST ------------------------ */ -/* - * This structure defines the payload of an ioctl, and is used - * below. - * - * Note that this structure should fit on the memory footprint - * of iwreq (which is the same as ifreq), which mean a max size of - * 16 octets = 128 bits. Warning, pointers might be 64 bits wide... - * You should check this when increasing the structures defined - * above in this file... - */ -union iwreq_data -{ - /* Config - generic */ - char name[16]; - /* Name : used to verify the presence of wireless extensions. - * Name of the protocol/provider... */ - - struct iw_point essid; /* Extended network name */ - struct iw_param nwid; /* network id (or domain - the cell) */ - struct iw_freq freq; /* frequency or channel : - * 0-1000 = channel - * > 1000 = frequency in Hz */ - - struct iw_param sens; /* signal level threshold */ - struct iw_param bitrate; /* default bit rate */ - struct iw_param txpower; /* default transmit power */ - struct iw_param rts; /* RTS threshold threshold */ - struct iw_param frag; /* Fragmentation threshold */ - uint32_t mode; /* Operation mode */ - struct iw_param retry; /* Retry limits & lifetime */ - - struct iw_point encoding; /* Encoding stuff : tokens */ - struct iw_param power; /* PM duration/timeout */ - struct iw_quality qual; /* Quality part of statistics */ - - struct sockaddr ap_addr; /* Access point address */ - struct sockaddr addr; /* Destination address (hw/mac) */ - - struct iw_param param; /* Other small parameters */ - struct iw_point data; /* Other large parameters */ -}; - -/* - * The structure to exchange data for ioctl. - * This structure is the same as 'struct ifreq', but (re)defined for - * convenience... - * Do I need to remind you about structure size (32 octets) ? - */ -struct iwreq -{ - union - { - char ifrn_name[16]; /* if name, e.g. "eth0" */ - } ifr_ifrn; - - /* Data part (defined just above) */ - union iwreq_data u; -}; - -/* -------------------------- IOCTL DATA -------------------------- */ -/* - * For those ioctl which want to exchange mode data that what could - * fit in the above structure... - */ - -/* - * Range of parameters - */ - -struct iw_range -{ - /* Informative stuff (to choose between different interface) */ - uint32_t throughput; /* To give an idea... */ - /* In theory this value should be the maximum benchmarked - * TCP/IP throughput, because with most of these devices the - * bit rate is meaningless (overhead an co) to estimate how - * fast the connection will go and pick the fastest one. - * I suggest people to play with Netperf or any benchmark... - */ - - /* NWID (or domain id) */ - uint32_t min_nwid; /* Minimal NWID we are able to set */ - uint32_t max_nwid; /* Maximal NWID we are able to set */ - - /* Old Frequency (backward compat - moved lower ) */ - uint16_t old_num_channels; - uint8_t old_num_frequency; - - /* Wireless event capability bitmasks */ - uint32_t event_capa[6]; - - /* signal level threshold range */ - int32_t sensitivity; - - /* Quality of link & SNR stuff */ - /* Quality range (link, level, noise) - * If the quality is absolute, it will be in the range [0 ; max_qual], - * if the quality is dBm, it will be in the range [max_qual ; 0]. - * Don't forget that we use 8 bit arithmetics... */ - struct iw_quality max_qual; /* Quality of the link */ - /* This should contain the average/typical values of the quality - * indicator. This should be the threshold between a "good" and - * a "bad" link (example : monitor going from green to orange). - * Currently, user space apps like quality monitors don't have any - * way to calibrate the measurement. With this, they can split - * the range between 0 and max_qual in different quality level - * (using a geometric subdivision centered on the average). - * I expect that people doing the user space apps will feedback - * us on which value we need to put in each driver... */ - struct iw_quality avg_qual; /* Quality of the link */ - - /* Rates */ - uint8_t num_bitrates; /* Number of entries in the list */ - int32_t bitrate[IW_MAX_BITRATES]; /* list, in bps */ - - /* RTS threshold */ - int32_t min_rts; /* Minimal RTS threshold */ - int32_t max_rts; /* Maximal RTS threshold */ - - /* Frag threshold */ - int32_t min_frag; /* Minimal frag threshold */ - int32_t max_frag; /* Maximal frag threshold */ - - /* Power Management duration & timeout */ - int32_t min_pmp; /* Minimal PM period */ - int32_t max_pmp; /* Maximal PM period */ - int32_t min_pmt; /* Minimal PM timeout */ - int32_t max_pmt; /* Maximal PM timeout */ - uint16_t pmp_flags; /* How to decode max/min PM period */ - uint16_t pmt_flags; /* How to decode max/min PM timeout */ - uint16_t pm_capa; /* What PM options are supported */ - - /* Encoder stuff */ - uint16_t encoding_size[IW_MAX_ENCODING_SIZES]; /* Different token sizes */ - uint8_t num_encoding_sizes; /* Number of entry in the list */ - uint8_t max_encoding_tokens; /* Max number of tokens */ - /* For drivers that need a "login/passwd" form */ - uint8_t encoding_login_index; /* token index for login token */ - - /* Transmit power */ - uint16_t txpower_capa; /* What options are supported */ - uint8_t num_txpower; /* Number of entries in the list */ - int32_t txpower[IW_MAX_TXPOWER]; /* list, in bps */ - - /* Wireless Extension version info */ - uint8_t we_version_compiled; /* Must be WIRELESS_EXT */ - uint8_t we_version_source; /* Last update of source */ - - /* Retry limits and lifetime */ - uint16_t retry_capa; /* What retry options are supported */ - uint16_t retry_flags; /* How to decode max/min retry limit */ - uint16_t r_time_flags; /* How to decode max/min retry life */ - int32_t min_retry; /* Minimal number of retries */ - int32_t max_retry; /* Maximal number of retries */ - int32_t min_r_time; /* Minimal retry lifetime */ - int32_t max_r_time; /* Maximal retry lifetime */ - - /* Frequency */ - uint16_t num_channels; /* Number of channels [0; num - 1] */ - uint8_t num_frequency; /* Number of entry in the list */ - struct iw_freq freq[IW_MAX_FREQUENCIES]; /* list */ - /* Note : this frequency list doesn't need to fit channel numbers, - * because each entry contain its channel index */ - - uint32_t enc_capa; /* IW_ENC_CAPA_* bit field */ - - /* More power management stuff */ - int32_t min_pms; /* Minimal PM saving */ - int32_t max_pms; /* Maximal PM saving */ - uint16_t pms_flags; /* How to decode max/min PM saving */ - - /* All available modulations for driver (hw may support less) */ - int32_t modul_capa; /* IW_MODUL_* bit field */ - - /* More bitrate stuff */ - uint32_t bitrate_capa; /* Types of bitrates supported */ -}; - -/* - * Private ioctl interface information - */ - -struct iw_priv_args -{ - uint32_t cmd; /* Number of the ioctl to issue */ - uint16_t set_args; /* Type and number of args */ - uint16_t get_args; /* Type and number of args */ - char name[16]; /* Name of the extension */ -}; - -/* ----------------------- WIRELESS EVENTS ----------------------- */ -/* - * Wireless events are carried through the rtnetlink socket to user - * space. They are encapsulated in the IFLA_WIRELESS field of - * a RTM_NEWLINK message. - */ - -/* - * A Wireless Event. Contains basically the same data as the ioctl... - */ -struct iw_event -{ - uint16_t len; /* Real lenght of this stuff */ - uint16_t cmd; /* Wireless IOCTL */ - union iwreq_data u; /* IOCTL fixed payload */ -}; - -/* Size of the Event prefix (including padding and alignement junk) */ -#define IW_EV_LCP_LEN (sizeof(struct iw_event) - sizeof(union iwreq_data)) -/* Size of the various events */ -#define IW_EV_CHAR_LEN (IW_EV_LCP_LEN + IFNAMSIZ) -#define IW_EV_UINT_LEN (IW_EV_LCP_LEN + sizeof(uint32_t)) -#define IW_EV_FREQ_LEN (IW_EV_LCP_LEN + sizeof(struct iw_freq)) -#define IW_EV_PARAM_LEN (IW_EV_LCP_LEN + sizeof(struct iw_param)) -#define IW_EV_ADDR_LEN (IW_EV_LCP_LEN + sizeof(struct sockaddr)) -#define IW_EV_QUAL_LEN (IW_EV_LCP_LEN + sizeof(struct iw_quality)) - -/* iw_point events are special. First, the payload (extra data) come at - * the end of the event, so they are bigger than IW_EV_POINT_LEN. Second, - * we omit the pointer, so start at an offset. */ -#define IW_EV_POINT_OFF (((char *) &(((struct iw_point *) NULL)->length)) - \ - (char *) NULL) -#define IW_EV_POINT_LEN (IW_EV_LCP_LEN + sizeof(struct iw_point) - \ - IW_EV_POINT_OFF) - -/* Size of the Event prefix when packed in stream */ -#define IW_EV_LCP_PK_LEN (4) -/* Size of the various events when packed in stream */ -#define IW_EV_CHAR_PK_LEN (IW_EV_LCP_PK_LEN + IFNAMSIZ) -#define IW_EV_UINT_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(uint32_t)) -#define IW_EV_FREQ_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_freq)) -#define IW_EV_PARAM_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_param)) -#define IW_EV_ADDR_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct sockaddr)) -#define IW_EV_QUAL_PK_LEN (IW_EV_LCP_PK_LEN + sizeof(struct iw_quality)) -#define IW_EV_POINT_PK_LEN (IW_EV_LCP_LEN + 4) - -#endif /* _LINUX_WIRELESS_H */ diff --git a/package/luci/contrib/package/meshwizard/Makefile b/package/luci/contrib/package/meshwizard/Makefile deleted file mode 100644 index 62983465c1..0000000000 --- a/package/luci/contrib/package/meshwizard/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (C) 2011 Manuel Munz -# This is free software, licensed under the Apache 2.0 license. - -include $(TOPDIR)/rules.mk - -PKG_NAME:=meshwizard -PKG_RELEASE:=0.3.3 - -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/meshwizard - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=9. Freifunk - TITLE:=Shell script based wizard for Mesh networks - DEPENDS:=+firewall -endef - -define Package/meshwizard/description - A shellscript based wizard to simplify the setup of a typical mesh node (e.g. for Freifunk.net) -endef - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Configure -endef - -define Build/Compile -endef - -define Package/meshwizard/install - $(CP) ./files/* $(1)/ -endef - -$(eval $(call BuildPackage,meshwizard)) diff --git a/package/luci/contrib/package/meshwizard/files/etc/config/meshwizard b/package/luci/contrib/package/meshwizard/files/etc/config/meshwizard deleted file mode 100644 index a60b0cc44a..0000000000 --- a/package/luci/contrib/package/meshwizard/files/etc/config/meshwizard +++ /dev/null @@ -1,7 +0,0 @@ -config 'netconfig' 'netconfig' - -config 'general' 'general' - option 'sharenet' '0' - option 'local_restrict' '1' - option 'cleanup' '1' - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh deleted file mode 100644 index b0f6cb291e..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/functions.sh +++ /dev/null @@ -1,118 +0,0 @@ -uci_remove_list_element() { - local option="$1" - local value="$2" - local list="$(uci get $option)" - local elem - - uci delete $option - for elem in $list; do - if [ "$elem" != "$value" ]; then - uci add_list $option=$elem - fi - done -} - -# string_contains(string, substring) -# -# Returns 0 if the specified string contains the specified substring, -# otherwise returns 1. -string_contains() { - string="$1" - substring="$2" - if test "${string#*$substring}" != "$string" - then - return 0 # $substring is in $string - else - return 1 # $substring is not in $string - fi -} - -# Takes 2 arguments -# $1 = text to be displayed in the output for this section -# $2 = section (optional) -uci_commitverbose() { - echo "+ $1" - uci changes $2 | while read line; do - echo " $line" - done - uci commit $2 -} - -set_defaults() { - for def in $(env |grep "^$1" | sed 's/ /_/g'); do - option="${def/$1/}" - a="$(echo $option |cut -d '=' -f1)" - b="$(echo $option |cut -d '=' -f2-)" - b="${b//_/ }" - string_contains "$a" "_LENGTH" && continue - string_contains "$a" "_ITEM" && { - # special threatment for lists. use add_list and remove the - # item index (_ITEMx). - uci add_list $2.${a//_ITEM[0-9]*/}="$b" - } || { - uci set $2.$a="$b" - } - done -} - -# 3 arguments: 1=config name 2=oldname 3=newname -section_rename() { - uci -q rename $1.$2=$3 && msg_rename $1.$2 $1.$3 || msg_rename_error $1.$2 $1.$3 -} - -msg_missing_value() { - echo -e " \033[1mWarning:\033[0m Configuration option for $2 is missing in $1." -} - -msg_success() { - echo " Finished." -} - -msg_error() { - echo " \033[1mError: \033[0mThere was a problem." -} - -msg_rename() { - echo " Renamed unnamed section $1 to $2." -} - -msg_rename_error() { - echo " \033[1mWarning:\033[0m Could not rename $1 to $2." -} - - -restore_factory_defaults() { - echo "+ Restore default config as requested with cleanup=1" - cp -f /rom/etc/config/* /etc/config/ - rm /etc/config/wireless - wifi detect > /etc/config/wireless - rm /etc/config/network - if [ -f /etc/init.d/defconfig ]; then - # legacy (AA) - /etc/init.d/defconfig start - [ -f /rom/etc/uci-defaults/network ] && sh /rom/etc/uci-defaults/network - else - sh /rom/etc/uci-defaults/02_network - fi -} - -is_in_list() { - # checks if an item is in a list - local list="$1" - local item="$2" - for word in $list; do - [ $word = "$item" ] && return 0 - done - return 1 -} - -add_to_list() { - local list="$1" - local item="$2" - is_in_list "$list" "$item" && echo $list - if [ -z "$list" ]; then - echo "$item" - else - echo "$list $item" - fi -} diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/check-range-in-range.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/check-range-in-range.sh deleted file mode 100755 index c889c55ed0..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/check-range-in-range.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# Checks whether a netrange is inside another netrange, returns 1 if true -# Takes two arguments: $1: net from which we want to know if it is inside $2 -# nets need to be given in CIDR notation - -dir=$(dirname $0) - -awk -f $dir/common.awk -f - $* <= network2) { - if (network <= broadcast2) { - if (broadcast <= broadcast2) { - print "1" - } - } - } -} -EOF diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/common.awk b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/common.awk deleted file mode 100644 index 5b03d06bea..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/common.awk +++ /dev/null @@ -1,20 +0,0 @@ -function bitcount(c) { - c=and(rshift(c, 1),0x55555555)+and(c,0x55555555) - c=and(rshift(c, 2),0x33333333)+and(c,0x33333333) - c=and(rshift(c, 4),0x0f0f0f0f)+and(c,0x0f0f0f0f) - c=and(rshift(c, 8),0x00ff00ff)+and(c,0x00ff00ff) - c=and(rshift(c,16),0x0000ffff)+and(c,0x0000ffff) - return c -} - -function ip2int(ip) { - for (ret=0,n=split(ip,a,"\."),x=1;x<=n;x++) ret=or(lshift(ret,8),a[x]) - return ret -} - -function int2ip(ip,ret,x) { - ret=and(ip,255) - ip=rshift(ip,8) - for(;x<3;ret=and(ip,255)"."ret,ip=rshift(ip,8),x++); - return ret -} diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_auto-ipv6-dhcpv6-ip.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_auto-ipv6-dhcpv6-ip.sh deleted file mode 100755 index 9eca11b414..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_auto-ipv6-dhcpv6-ip.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -netrenamed=$1 - -PREFIX="$(echo $ipv6_prefix| cut -d "/" -f 1| sed 's/::/:/')" - -# Get the devices mac address -device="$(uci -p/var/state -q get network.$1.ifname)" -if [ -n "$device" ]; then - MAC="$(ifconfig $netrenamed |grep HWaddr | awk '{ print $5 '})" -else - MAC="$(cat /sys/class/net/$1/address)" - IPV6_UNIQ="$(echo $MAC | awk -F: '{ print $1$2":"$3$4":"$5$6 }')" -fi - -echo "${PREFIX}${IPV6_UNIQ}:1" - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_bssid.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_bssid.sh deleted file mode 100755 index efe101fad0..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_bssid.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# create essid from channel, takes two args: -# $1 = channel (integer) -# $2 = community (optional) -channel=$1 -community=$2 - -. /lib/functions.sh - - -# Try to get BSSID from profile first -config_load profile_$community -config_get bssid bssidscheme $channel -if [ -z "$bssid" ]; then - config_get bssid bssidscheme "all" -fi - -if [ -z "$bssid" ]; then - case $channel in - [1-9]) - bssid="$(printf "%X\n" $channel)2:CA:FF:EE:BA:BE" - ;; - 1[0-4]) - bssid="$(printf "%X\n" $channel)2:CA:FF:EE:BA:BE" - ;; - [3-9][0-9]) - bssid="02:$channel:CA:FF:EE:EE" - ;; - 1[0-9][0-9]) - bssid="${channel/1/12:}:CA:FF:EE:EE" - ;; - *) bssid="02:CA:FF:EE:BA:BE" - ;; - esac -fi -echo $bssid diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_dhcp_ip.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_dhcp_ip.sh deleted file mode 100755 index e559166f44..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/gen_dhcp_ip.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# generates a dhcp-ip and netrange from a given ip/subnet -# takes 2 arguments: -# $1: Ip Address (of the Interface for which we want to generate an ip) - -echo "$1" | awk 'BEGIN { FS = "." } ; { print "6."$3"."$4".1" }' diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/initial_config.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/initial_config.sh deleted file mode 100755 index c1e55224eb..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/initial_config.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh -# This is only run once (usually after flashing an image from the imagebuilder) -# It sets up the initial config for this node. - -. /lib/functions.sh -. $dir/functions.sh - -config_load system - -# Rename system config -handle_system() { - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename system $1 system - fi -} -config_foreach handle_system system - -if [ -n "$(uci -q get meshwizard.community)" ]; then - set_defaults "community_" freifunk.community - uci -q delete meshwizard.community -fi - -[ -n "$profile_homepage" ] && uci set freifunk.community.homepage="$profile_homepage" - -[ -n "$profile_mapserver" ] && { - uci -q delete freifunk.community.mapserver - for m in $profile_mapserver; do - uci add_list freifunk.community.mapserver="$m" - done -} - -uci_commitverbose "Setup community" freifunk - -if [ -n "$(uci -q get meshwizard.contact)" ]; then - set_defaults "contact_" freifunk.contact - uci -q delete meshwizard.contact && uci_commitverbose "Setup contact" freifunk -fi - -if [ "$has_luci" == TRUE ]; then - set_defaults "luci_main_" luci.main - uci -q delete meshwizard.luci_main && uci_commitverbose "Setup luci" luci -fi diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/ipcalc-cidr.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/ipcalc-cidr.sh deleted file mode 100755 index 6d7a1fb56b..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/ipcalc-cidr.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh -dir=$(dirname $0) -awk -f $dir/common.awk -f - $* <limit) end=limit - - print "IP="int2ip(ipaddr) - print "NETMASK="int2ip(netmask) - print "BROADCAST="int2ip(broadcast) - print "NETWORK="int2ip(network) - print "NEXTNET="int2ip(broadcast + 1) - print "PREFIX="32-bitcount(compl(netmask)) - - # range calculations: - # ipcalc - - if (ARGC > 3) { - print "START="int2ip(start) - print "END="int2ip(end) - } -} -EOF diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/read_defaults.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/read_defaults.sh deleted file mode 100755 index b6ffb62e4a..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/read_defaults.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh -# These functions read the settings we need for configuration of the router - -read_defaults() { - # read default values from the 3 relevant config files and export them - # into the environment. Later loaded configs overwrite earlier ones. The - # The ordering here is from most generic to most specific: - # freifunk (most generic defaults) - # profile_* (community defaults) - # nodes custom config from meshwizard config file - - local community="$1" - - config_cb() { - local type="$1" - local name="$2" - local allowed_section_types="widget" - local allowed_section_names=" - system - wifi_device - wifi_iface - interface - alias - dhcp - olsr_interface - olsr_interfacedefaults - profile - zone_freifunk - include - luci_splash - ipv6 - luci_main - contact - community - wan - lan - general - ipv6 - qos - " - - if [ "$type" = "widget" ]; then - widgets=$(add_to_list "$widgets" "$name") - fi - - if ([ -n "$name" ] && is_in_list "$allowed_section_names" $name) \ - || is_in_list "$allowed_section_types" $type ; then - option_cb() { - local option="$1" - local value="$2" - export "${CONFIG_SECTION}_${option}"="$value" - } - else - option_cb() { return; } - fi - } - config_load freifunk - config_load profile_${community} - config_load meshwizard - export widgets="$widgets" -} diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh deleted file mode 100755 index f2d10cc9e2..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh -# This script renames IB_wifi_ interface names into real interface names used on this system. -# E.g. wireless.IB_wifi0 would become wireless.radio0 on mac80211 - -. $dir/functions.sh - -posIB=-1 - -IBwifis="$(uci show meshwizard.netconfig | grep 'IB_' | sed 's/meshwizard.netconfig\.\(IB_wifi.*\)_.*/\1/' |uniq)" -[ -z "$(echo $IBwifis |grep IB_wifi)" ] && exit - -for w in $IBwifis; do - posIB=$(( $posIB + 1 )) - export IB_wifi$posIB="$w" -done - -pos=0 -syswifis="$(uci show wireless |grep wifi-device | sed 's/wireless\.\(.*\)=.*/\1/' |uniq)" - -for s in $syswifis; do - export syswifi$pos="$s" - pos=$(( $pos + 1 )) -done - -for i in `seq 0 $posIB`; do - IBwifi=$(eval echo \$IB_wifi$i) - syswifi=$(eval echo \$syswifi$i) - - if [ -n "$syswifi" ]; then - case $IBwifi in - IB_wifi* ) - # replace IB_wifi_* with actual wifi interface names, delete old ones first - uci show meshwizard.netconfig | grep $IBwifi | while read line; do - oldline=$(echo $line | cut -d "=" -f 1) - uci set $oldline="" - newline=$(echo $line |sed -e "s/$IBwifi/$syswifi/g" -e "s/'//g") - uci set $newline - done - ;; - esac - unset IBwifi - unset syswifi - fi -done - -uci_commitverbose "Renaming wifi-devices in /etc/config/meshwizard" meshwizard diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_auto-ipv6-interface.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_auto-ipv6-interface.sh deleted file mode 100755 index adf3429133..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_auto-ipv6-interface.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -net=$1 -. $dir/functions.sh - -ra="$(uci -q get meshwizard.netconfig.${net}_ipv6ra)" -uci set autoipv6.${netrenamed}="interface" -if [ -n "$ra" ]; then - uci set autoipv6.${netrenamed}.ra=1 -fi - -uci_commitverbose "Setup auto-ipv6 for interface $netrenamed" autoipv6 diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_auto-ipv6.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_auto-ipv6.sh deleted file mode 100755 index 8e3f015cde..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_auto-ipv6.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -. $dir/functions.sh - -if [ "$ipv6_config" = "auto-ipv6-fromv4" ]; then - mode="fromv4" -else - mode="random" -fi - -uci set autoipv6.olsr_node.enabled=1 -uci set autoipv6.olsr_node.mode="$mode" -uci_commitverbose "Setup auto-ipv6" autoipv6 - -uci set network.wan.accept_ra=0 -uci_commitverbose "Do not accept ra's on wan when using auto-ipv6" network - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_dhcp.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_dhcp.sh deleted file mode 100755 index 8cce8319a6..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_dhcp.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh -# Sets up the dhcp part of dnsmasq - -. /lib/functions.sh -. $dir/functions.sh - -net="$1" -vap="$(uci -q get meshwizard.netconfig.${net}_vap)" - -handle_dnsmasq() { - config_get interface "$1" interface - if [ "$interface" == "${netrenamed}dhcp" ]; then - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename dhcp $1 ${netrenamed}dhcp - fi - fi -} -config_load dhcp -config_foreach handle_dnsmasq dhcp - -[ "$net" == "lan" ] && uci -q delete dhcp.lan - -if [ "$supports_vap" = 1 -a "$vap" = 1 ]; then - uci batch <<- EOF - set dhcp.${netrenamed}dhcp="dhcp" - set dhcp.${netrenamed}dhcp.ignore="0" - set dhcp.${netrenamed}dhcp.interface="${netrenamed}dhcp" - EOF - set_defaults "dhcp_" dhcp.${netrenamed}dhcp -fi - -ahdhcp_when_vap="$(uci get profile_$community.profile.adhoc_dhcp_when_vap)" -if [ "$supports_vap" = 0 ] || \ - [ "$supports_vap" = 1 -a "$vap" = 1 -a "$ahdhcp_when_vap" = 1 ] || \ - [ "$lan_is_olsr" = "1" -a "$lan_dhcp" = 1 ]; then - uci batch <<- EOF - set dhcp.${netrenamed}ahdhcp="dhcp" - set dhcp.${netrenamed}ahdhcp.ignore="0" - set dhcp.${netrenamed}ahdhcp.interface="${netrenamed}ahdhcp" - EOF -fi -set_defaults "dhcp_" dhcp.${netrenamed}ahdhcp - -uci_commitverbose "Setup DHCP for $netrenamed" dhcp - - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_dnsmasq.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_dnsmasq.sh deleted file mode 100755 index 9297f9175e..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_dnsmasq.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -. /lib/functions.sh -. $dir/functions.sh - -# Set dnsmasq config -handle_dhcp() { - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename dhcp $1 dnsmasq - fi -} - -config_load dhcp -config_foreach handle_dhcp dnsmasq - -uci batch << EOF - set dhcp.dnsmasq.local="/$profile_suffix/" - set dhcp.dnsmasq.domain="$profile_suffix" -EOF - -config_get addnhosts dnsmasq addnhosts -if [ -z "${addnhosts/\var\/etc\/hosts.olsr/}" ]; then - uci add_list dhcp.dnsmasq.addnhosts="/var/etc/hosts.olsr" - if [ "$ipv6_enabled" = 1 ]; then - uci add_list dhcp.dnsmasq.addnhosts="/var/etc/hosts.olsr.ipv6" - fi -fi - -uci_commitverbose "Setup dnsmasq" dhcp diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall.sh deleted file mode 100755 index 154b2b6913..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall.sh +++ /dev/null @@ -1,145 +0,0 @@ -#!/bin/sh -# Add "freifunk" firewall zone -# If wan/lan is used for olsr then remove these networks from wan/lan zones -# Also setup rules defined in /etc/config/freifunk and /etc/config/profile_ - -. /lib/functions.sh -. $dir/functions.sh - -wan_is_olsr=$(uci -q get meshwizard.netconfig.wan_config) - -config_load firewall - -# Rename firewall zone for freifunk if unnamed -# If wan is used for olsr then set network for the firewall zone wan to ' ' to remove the wan interface from it, else add local restrict to it -# If lan is used for olsr then set network for the firewall zone lan to ' ' to remove the lan interface from it - -handle_fwzone() { - config_get name "$1" name - config_get network "$1" network - - if [ "$name" == "freifunk" ]; then - # rename section if unnamed - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename firewall $1 zone_freifunk - fi - fi - - if [ "$name" == "wan" ]; then - if [ "$wan_is_olsr" == 1 ]; then - uci set firewall.$1.network=' ' && uci_commitverbose "WAN is used for olsr, removed the wan interface from zone wan" firewall - else - uci set firewall.$1.local_restrict=1 && uci_commitverbose "Enable local_restrict for zone wan" firewall - fi - fi - - if [ "$name" == "lan" ] && [ "$lan_is_olsr" == "1" ]; then - uci set firewall.$1.network=' ' && uci_commitverbose "LAN is used for olsr, removed the lan interface from zone lan" firewall - fi -} - -config_foreach handle_fwzone zone - -uci batch << EOF - set firewall.zone_freifunk="zone" - set firewall.zone_freifunk.name="freifunk" - set firewall.zone_freifunk.input="$zone_freifunk_input" - set firewall.zone_freifunk.forward="$zone_freifunk_forward" - set firewall.zone_freifunk.output="$zone_freifunk_output" -EOF - -uci_commitverbose "Setup firewall zones" firewall - -# Usually we need to setup masquerading for lan, except lan is an olsr interface or has an olsr hna-entry - -handle_interface() { - config_get interface "$1" interface - if [ "$interface" == "lan" ]; then - no_masq_lan=1 - fi -} -config_load olsrd -config_foreach handle_interface Interface - -LANIP="$(uci -q get network.lan.ipaddr)" -if [ -n "$LANIP" ]; then - handle_hna() { - config_get netaddr "$1" netaddr - if [ "$LANIP" == "$netaddr" ]; then - no_masq_lan=1 - fi - } - config_foreach handle_hna Hna4 -fi - -currms=$(uci -q get firewall.zone_freifunk.masq_src) -if [ ! "$no_masq_lan" == "1" ] && [ ! "$(uci -q get meshwizard.netconfig.lan_config)" == 1 ]; then - uci set firewall.zone_freifunk.masq="1" - [ -z "$(echo $currms |grep lan)" ] && uci add_list firewall.zone_freifunk.masq_src="lan" -fi - - -# Rules, Forwardings, advanced config and includes from freifunk and -# profile_$community config files. - -add_fw_rules() { - config_cb() { - local type="$1" - local name="$2" - local allowed_section_types="advanced include fw_rule fw_forwarding" - if is_in_list "$allowed_section_types" $type ; then - uci set firewall.${name}="${type/fw_/}" - option_cb() { - local option="$1" - local value="$2" - uci set firewall.${CONFIG_SECTION}.${option}="$value" - } - else - option_cb() { return; } - fi - } - config_load freifunk - config_load profile_${community} -} -add_fw_rules - - -# If we use auto-ipv6-dhcp then allow 547/udp on the freifunk zone -if [ "$ipv6_config" = "auto-ipv6-dhcpv6" ]; then - uci batch <<- EOF - set firewall.dhcpv6=rule - set firewall.dhcpv6.src=freifunk - set firewall.dhcpv6.target=ACCEPT - set firewall.dhcpv6.dest_port=547 - set firewall.dhcpv6.proto=udp - EOF -fi - -# Firewall rules to allow incoming ssh and web if enabled - -if [ "$wan_allowssh" == 1 ]; then - uci batch <<- EOF - set firewall.wanssh=rule - set firewall.wanssh.src=wan - set firewall.wanssh.target=ACCEPT - set firewall.wanssh.proto=tcp - set firewall.wanssh.dest_port=22 - EOF -fi - -if [ "$wan_allowweb" == 1 ]; then - uci batch <<- EOF - set firewall.wanweb=rule - set firewall.wanweb.src=wan - set firewall.wanweb.target=ACCEPT - set firewall.wanweb.proto=tcp - set firewall.wanweb.dest_port=80 - set firewall.wanwebhttps=rule - set firewall.wanwebhttps.src=wan - set firewall.wanwebhttps.target=ACCEPT - set firewall.wanwebhttps.proto=tcp - set firewall.wanwebhttps.dest_port=443 - EOF -fi - -uci_commitverbose "Setup rules, forwardings, advanced config and includes." firewall diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall_interface.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall_interface.sh deleted file mode 100755 index 8ca5d3b77b..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall_interface.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/sh -# This will add $net to the zone firewall (and remove it from other zones where it is referenced) -# It will also setup rules defined in /etc/config/freifunk and /etc/config/profile_ -# Arg $1 = $net - -net=$1 -. /lib/functions.sh -. $dir/functions.sh -config_load firewall - -# Get some variables -type="$(uci -q get wireless.$net.type)" -vap="$(uci -q get meshwizard.netconfig.$net\_vap)" -wan_is_olsr=$(uci -q get meshwizard.netconfig.wan_config) - -# Delete old firewall zone for freifunk -handle_fwzone() { - config_get name "$1" name - config_get network "$1" network - - if [ "$2" == "zoneconf" ]; then - if [ "$name" == "freifunk" ]; then - # rename section if unnamed - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename firewall $1 zone_freifunk - fi - else - if [ ! "$name" == "freifunk" ] && [ -n "$netrenamed" -a -n "$(echo $network | grep $netrenamed)" ]; then - echo " Removed $netrenamed from firewall zone $name." - network_new=$(echo $network | sed -e 's/'$netrenamed'//' -e 's/^ //' -e 's/ / /' -e 's/ $//') - uci set firewall.$1.network="$network_new" - fi - fi - fi -} - -config_foreach handle_fwzone zone zoneconf - -# Add $netrenamed and if needed ${netrenamed}dhcp to the "freifunk" zone -config_get network zone_freifunk network - -# remove ${netrenamed}dhcp from networks list -[ -n "$network" -a -n "$net" ] && network="${network/${netrenamed}dhcp/}" -network=$(echo $network) # Removes leading and trailing whitespaces - -[ -n "$netrenamed" ] && [ -z "$(echo $network | grep $netrenamed)" ] && network="$network $netrenamed" - -if [ "$supports_vap" == "1" -a "$vap" == 1 ]; then - [ -n "$netrenamed" ] && [ "$network" == "${network/${netrenamed}dhcp/}" ] && network="$network ${netrenamed}dhcp" -fi - -uci set firewall.zone_freifunk.network="$network" - -uci_commitverbose "Add '$netrenamed' to freifunk firewall zone" firewall - -currms=$(uci -q get firewall.zone_freifunk.masq_src) - -# If interfaces are outside of the mesh network they should be natted - -if [ "$vap" == 1 ]; then - # Get dhcprange and meshnet for the dhcp interface - if_ip="$(uci -q get network.${netrenamed}dhcp.ipaddr)" - if_mask="$(uci -q get network.${netrenamed}dhcp.netmask)" - - [ -n "$if_ip" -a "$if_mask" ] && export $(ipcalc.sh $if_ip $if_mask) - [ -n "$NETWORK" -a "$PREFIX" ] && dhcprange="$NETWORK/$PREFIX" - - if [ -n "$dhcprange" ]; then - meshnet="$(uci get profile_$community.profile.mesh_network)" - # check if the dhcprange is inside meshnet - dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)" - if [ "$dhcpinmesh" == 1 ]; then - # needed or splash will not work - if [ "$has_luci_splash" == TRUE ]; then - uci set firewall.zone_freifunk.contrack="1" - fi - else - uci set firewall.zone_freifunk.masq=1 - [ -z "$(echo $currms |grep ${netrenamed}dhcp)" ] && uci add_list firewall.zone_freifunk.masq_src="${netrenamed}dhcp" - fi - fi -fi - -# Get dhcprange and meshnet for the adhoc dhcp interface -if_ip="$(uci -q get network.${netrenamed}ahdhcp.ipaddr)" -if_mask="$(uci -q get network.${netrenamed}ahdhcp.netmask)" - -[ -n "$if_ip" -a "$if_mask" ] && export $(ipcalc.sh $if_ip $if_mask) -[ -n "$NETWORK" -a "$PREFIX" ] && dhcprangeah="$NETWORK/$PREFIX" - -if [ -n "$dhcprangeah" ]; then - meshnet="$(uci get profile_$community.profile.mesh_network)" - # check if the dhcprange is inside meshnet - dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprangeah $meshnet)" - if [ "$dhcpinmesh" == 1 ]; then - # needed or splash will not work - if [ "$has_luci_splash" == TRUE ]; then - uci set firewall.zone_freifunk.contrack="1" - fi - else - uci set firewall.zone_freifunk.masq=1 - [ -z "$(echo $currms |grep ${netrenamed}ahdhcp)" ] && uci add_list firewall.zone_freifunk.masq_src="${netrenamed}ahdhcp" - fi -fi - - -for i in IP NETMASK BROADCAST NETWORK PREFIX; do - unset $i -done - -uci_commitverbose "Setup masquerading rules for '$netrenamed'" firewall diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_lan_ipv6.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_lan_ipv6.sh deleted file mode 100755 index 1b4f9b16fa..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_lan_ipv6.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -[ ! "$(uci -q get network.lan)" == "interface" ] && exit - -. /lib/functions.sh -. $dir/functions.sh - -# Setup IPv6 for the lan interface - -ip6addr="" -if [ "$ipv6_config" = "auto-ipv6-dhcpv6" ]; then - # get lan mac - device="$(uci -p/var/state -q get network.lan.ifname)" - if [ -n "device" ]; then - ip6addr="$($dir/helpers/gen_auto-ipv6-dhcpv6-ip.sh $device)" - fi - uci set network.lan.ip6addr="${ip6addr}/112" -fi - -uci_commitverbose "Setup ipv6 address for lan" network diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_lan_static.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_lan_static.sh deleted file mode 100755 index 172dcf138b..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_lan_static.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# Setup static interface settings for lan if lan is not an olsr interface - -[ ! "$(uci -q get network.lan)" == "interface" ] && exit - -. /lib/functions.sh -. $dir/functions.sh - -uci batch << EOF - set network.lan.proto='$lan_proto' - set network.lan.ipaddr='$lan_ip4addr' - set network.lan.netmask='$lan_netmask' -EOF - -uci_commitverbose "Setup static ip settings for lan" network - -uci delete meshwizard.lan && uci commit meshwizard diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_network.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_network.sh deleted file mode 100755 index 3ad977e265..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_network.sh +++ /dev/null @@ -1,142 +0,0 @@ -# setup entry in /etc/config/network for a interface -# Argument $1: network interface - -net="$1" -. /lib/functions.sh -. $dir/functions.sh - -# Setup a (new) interface section for $net - -ipaddr=$(uci -q get meshwizard.netconfig.$net\_ip4addr) -ip6addr=$(uci -q get meshwizard.netconfig.$net\_ip6addr) -[ -z "$ipaddr" ] && msg_missing_value meshwizard $net\_ip4addr - -netmask=$(uci -q get meshwizard.netconfig.$net\_netmask) -[ -z "$netmask" ] && netmask="$interface_netmask" -[ -z "$netmask" ] && netmask="255.255.0.0" - -uci set network.$netrenamed="interface" -set_defaults "interface_" network.$netrenamed - -uci batch << EOF - set network.$netrenamed.proto="static" - set network.$netrenamed.ipaddr="$ipaddr" - set network.$netrenamed.netmask="$netmask" -EOF - -if [ "$netrenamed" = "lan" ]; then - # remove the bridge if the interface is used for olsr - # since this script is only run in this case, no need - # to check for lan_proto = "olsr" currently. - uci -q delete network.lan.type -fi - -# Setup IPv6 for the interface -if [ "$ipv6_enabled" = 1 ]; then - if [ "$ipv6_config" = "auto-ipv6-dhcpv6" ]; then - ip6addr="$($dir/helpers/gen_auto-ipv6-dhcpv6-ip.sh $netrenamed)" - uci set network.$netrenamed.ip6addr="${ip6addr}/112" - fi - if [ "$ipv6_config" = "static" ] && [ -n "$ip6addr" ]; then - uci set network.$netrenamed.ip6addr="$ip6addr" - fi -fi - -uci_commitverbose "Setup interface $netrenamed" network - -# setup dhcp alias/interface - -net_dhcp=$(uci -q get meshwizard.netconfig.${net}_dhcp) -if [ "$net_dhcp" == 1 ]; then - - # Load meshwizard_settings - dhcprange="$(uci -q get meshwizard.netconfig.${net}_dhcprange)" - interface_ip="$(uci -q get meshwizard.netconfig.${net}_ip4addr)" - vap=$(uci -q get meshwizard.netconfig.${net}_vap) - - # Rename config - handle_dhcpalias() { - config_get interface "$1" interface - if [ "$interface" == "$netrenamed" ]; then - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename network $1 ${netrenamed}dhcp - fi - fi - } - config_load network - config_foreach handle_dhcpalias interface - - # Get IP/netmask and start-ip for $net dhcp - # If no dhcprange is given in /etc/config/meshwizard we autogenerate one - - if [ -z "$dhcprange" ]; then - dhcprange="$($dir/helpers/gen_dhcp_ip.sh $interface_ip)/24" - uci set meshwizard.netconfig.${net}_dhcprange="$dhcprange" - fi - - # If we use VAP and also offer dhcp on the adhoc interface then cut the dhcp - # range in two halves. one for the adhoc, one for the managed VAP interface - ahdhcp_when_vap="$(uci get profile_$community.profile.adhoc_dhcp_when_vap)" - - if [ "$supports_vap" = 1 -a "$vap" = 1 -a "$ahdhcp_when_vap" = 1 ]; then - # VAPs are enabled for this interface, supported and we want to - # also use DHCP on the adhoc interface - network=${dhcprange%%/*} - mask=${dhcprange##*/} - # Divide network size by adding 1 to the netmask - mask=$(($mask + 1)) - # Get first ip and netmask for the adhoc dhcp network - eval $(sh $dir/helpers/ipcalc-cidr.sh ${network}/${mask} 1 0) - STARTADHOC=$START - NETMASKADHOC=$NETMASK - # Get first ip and netmask for the managed dhcp network - eval $(sh $dir/helpers/ipcalc-cidr.sh ${NEXTNET}/${mask} 1 0) - STARTVAP=$START - NETMASKVAP=$NETMASK - # Add dhcp interface - uci batch <<- EOF - set network.${netrenamed}dhcp=interface - set network.${netrenamed}dhcp.proto=static - set network.${netrenamed}dhcp.ipaddr="$STARTVAP" - set network.${netrenamed}dhcp.netmask="$NETMASKVAP" - EOF - uci_commitverbose "Setup interface for ${netrenamed}dhcp" network - else - eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange 1 0) - STARTADHOC=$START - NETMASKADHOC=$NETMASK - fi - if [ "$supports_vap" = 1 -a "$vap" = 1 -a "$ahdhcp_when_vap" != 1 ]; then - # vaps are enabled and supported and we do not use DHCP on adhoc - # Add dhcp interface - uci batch <<- EOF - set network.${netrenamed}dhcp=interface - set network.${netrenamed}dhcp.proto=static - set network.${netrenamed}dhcp.ipaddr="$STARTADHOC" - set network.${netrenamed}dhcp.netmask="$NETMASKADHOC" - EOF - uci_commitverbose "Setup interface for ${netrenamed}dhcp" network - fi - - - # Setup alias for $net adhoc interface - if [ "$supports_vap" = 0 ] || \ - [ "$vap" = 0 ] || \ - [ "$supports_vap" = 1 -a "$vap" = 1 -a "$ahdhcp_when_vap" = 1 ] || \ - [ "$lan_is_olsr" = "1" ]; then - # setup an alias interface for the main interface to use as a network for clients - # when one of the following conditions is met - # * vaps are not supported - # * or not enabled - # * or they are supported and enabled but we also want to use DHCP on the adhoc interface - # * or this is the lan interface and it is used for olsrd (and dhcp is enabled) - uci batch <<- EOF - set network.${netrenamed}ahdhcp=interface - set network.${netrenamed}ahdhcp.ifname="@${netrenamed}" - set network.${netrenamed}ahdhcp.proto=static - set network.${netrenamed}ahdhcp.ipaddr="$STARTADHOC" - set network.${netrenamed}ahdhcp.netmask="$NETMASKADHOC" - EOF - uci_commitverbose "Setup interface for ${netrenamed}ahdhcp" network - fi -fi diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh deleted file mode 100755 index 9ebcb46b13..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh +++ /dev/null @@ -1,160 +0,0 @@ -#!/bin/sh -# Sets up olsrd - -. /lib/functions.sh -. $dir/functions.sh - -protocols="4" -if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then - protocols="4 6" -fi - -clean_config() { - # Clean the config, remove interface wlan - handle_interface() { - config_get interface "$1" interface - if [ "$interface" = "wlan" ]; then - uci delete $cfg.$1 - fi - } - config_foreach handle_interface Interface -} - -rename_olsrd() { - #Rename olsrd basic settings - handle_olsrd() { - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename $cfg $1 olsrd - fi - } - config_foreach handle_olsrd olsrd -} - -rename_interface_defaults() { - # Rename interface defaults - handle_interfacedefaults() { - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename $cfg $1 InterfaceDefaults - fi - } - config_foreach handle_interfacedefaults InterfaceDefaults -} - -cleanup_plugins() { - # Rename nameservice, dyngw and httpinfo plugins - handle_plugin() { - config_get library "$1" library - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - new="$(echo $library | cut -d '.' -f 1)" - section_rename $cfg "$1" "$new" - fi - } - config_foreach handle_plugin LoadPlugin - uci -q delete $cfg.olsrd_httpinfo - uci -q delete $cfg.olsrd_dyn_gw -} - -setup_nameservice() { - # Setup nameservice plugin - if [ -n "$profile_suffix" ]; then - suffix=".$profile_suffix" - else - suffix=".olsr" - fi - local llfile="/var/run/latlon.js" - local hosts="/var/etc/hosts.olsr" - local services="/var/run/services_olsr" - - if [ "$proto" = "6" ]; then - local llfile="/var/run/latlon.js.ipv6" - local hosts="/var/etc/hosts.olsr.ipv6" - local services="/var/run/services_olsr.ipv6" - fi - - uci batch <<- EOF - set $cfg.olsrd_nameservice=LoadPlugin - set $cfg.olsrd_nameservice.library="olsrd_nameservice.so.0.4" - set $cfg.olsrd_nameservice.latlon_file="$llfile" - set $cfg.olsrd_nameservice.hosts_file="$hosts" - set $cfg.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid" - set $cfg.olsrd_nameservice.services_file="$services" - set $cfg.olsrd_nameservice.suffix="$suffix" - EOF - - uci_commitverbose "Setup olsr nameservice plugin" $cfg -} - -setup_dyngw_plain() { - # Setup dyngw_plain - # If Sharing of Internet is enabled then enable dyngw_plain plugin - - if [ "$general_sharenet" == 1 ]; then - uci set $cfg.dyngw_plain=LoadPlugin - uci set $cfg.dyngw_plain.ignore=0 - uci set $cfg.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4" - uci_commitverbose "Setup olsrd_dyngw_plain plugin" $cfg - fi - -} - -setup_watchdog() { - # Setup watchdog - local watchdogfile="/var/run/olsrd.watchdog" - if [ "$proto" = "6" ]; then - watchdogfile="/var/run/olsrd.watchdog.ipv6" - fi - - uci batch <<- EOF - set $cfg.olsrd_watchdog=LoadPlugin - set $cfg.olsrd_watchdog.library="olsrd_watchdog.so.0.1" - set $cfg.olsrd_watchdog.file="$watchdogfile" - set $cfg.olsrd_watchdog.interval=30 - EOF - uci_commitverbose "Setup olsr watchdog plugin" $cfg - -} - -setup_jsoninfo() { - proto="$1" - uci batch <<- EOF - set $cfg.olsrd_jsoninfo=LoadPlugin - set $cfg.olsrd_jsoninfo.library="olsrd_jsoninfo.so.1.1" - EOF - if [ "$proto" = "6" ]; then - uci set $cfg.olsrd_jsoninfo.ipv6only='1' - fi - uci_commitverbose "Setup olsr jsoninfo plugin" $cfg -} - -setup_txtinfo() { - proto="$1" - uci batch <<- EOF - set $cfg.olsrd_txtinfo=LoadPlugin - set $cfg.olsrd_txtinfo.library="olsrd_txtinfo.so.1.1" - EOF - if [ "$proto" = "6" ]; then - uci set $cfg.olsrd_txtinfo.ipv6only='1' - fi - uci_commitverbose "Setup olsr txtinfo plugin" $cfg -} - - -for proto in $protocols; do - cfg="olsrd" - [ "$proto" == "6" ] && cfg="olsrd6" - config_load $cfg - clean_config - rename_olsrd - cleanup_plugins - - uci set $cfg.olsrd.IpVersion="$proto" - uci set $cfg.InterfaceDefaults=InterfaceDefaults - set_defaults "olsr_interfacedefaults_" $cfg.InterfaceDefaults - uci_commitverbose "Cleanup olsrd config" $cfg - - setup_nameservice - setup_dyngw_plain - setup_watchdog - setup_jsoninfo $proto - setup_txtinfo $proto -done diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd_interface.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd_interface.sh deleted file mode 100755 index 59f99bd0a1..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd_interface.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh -# Sets up olsrd interfaces -# arg $1 = net - -net=$1 - -. /lib/functions.sh -. $dir/functions.sh - -protocols="4" -if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then - protocols="4 6" -fi - -for proto in $protocols; do - - cfg="olsrd" - [ "$proto" == "6" ] && cfg="olsrd6" - - # Rename interface for $netrenamed - handle_interface() { - config_get interface "$1" Interface - if [ "$interface" == "$netrenamed" ]; then - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename $cfg $1 $netrenamed - fi - fi - } - - config_foreach handle_interface Interface - - # Setup new interface for $netrenamed - - uci set $cfg.$netrenamed=Interface - set_defaults "olsr_interface_" $cfg.$net - uci set $cfg.$netrenamed.interface="$netrenamed" - - uci_commitverbose "Setup olsr interface for $netrenamed." $cfg - - if [ "$proto" = "4" ]; then - # If dhcp-network is inside the mesh_network then add HNA for it - - dhcprange=$(uci -q get meshwizard.netconfig.$net\_dhcprange) - uci -q delete $cfg.${netrenamed}clients - - if [ -n "$dhcprange" ]; then - meshnet="$(uci get profile_$community.profile.mesh_network)" - dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)" - - if [ "$dhcpinmesh" == 1 ] && [ -n "$meshnet" ]; then - uci set $cfg.${netrenamed}clients="Hna4" - eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange) - uci set $cfg.${netrenamed}clients.netaddr="$NETWORK" - uci set $cfg.${netrenamed}clients.netmask="$NETMASK" - uci_commitverbose "Setup HNA for network $dhcprange" $cfg - fi - fi - fi - - if [ "$proto" = "6" ]; then - # Set Hna entry for ipv6 net for static ipv6 config - uci -q delete $cfg.${netrenamed}static - if [ "$ipv6_config" = "static" ]; then - v6range="$(uci -q get meshwizard.netconfig.$net\_ip6addr)" - v6net="$(echo $v6range | cut -d '/' -f 1)" - v6mask="$(echo $v6range | cut -d '/' -f 2)" - if [ -n "$v6net" ] && [ -n "$v6mask" ]; then - uci set $cfg.${netrenamed}static="Hna6" - uci set $cfg.${netrenamed}static.netaddr="$v6net" - uci set $cfg.${netrenamed}static.prefix="$v6mask" - uci_commitverbose "Setup HNA for network $v6range" $cfg - fi - fi - fi - -done \ No newline at end of file diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_policyrouting.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_policyrouting.sh deleted file mode 100755 index f898bd6842..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_policyrouting.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -. $dir/functions.sh - -uci batch << EOF - set freifunk-policyrouting.pr.enable=1 - set freifunk-policyrouting.pr.strict=1 - set freifunk-policyrouting.pr.zones="freifunk" -EOF - -uci_commitverbose "Setup policyrouting" freifunk-policyrouting diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_qos.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_qos.sh deleted file mode 100755 index 25884b30d5..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_qos.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# sets up qos-scripts for the wan interface - -. /lib/functions.sh -. $dir/functions.sh - -if [ ! -f /etc/config/qos ]; then - echo "NOT setting up QOS because /etc/config/qos-scripts was not found" -else - uci batch <<- EOF - set qos.wan.enabled=1 - set qos.wan.upload=$wan_up - set qos.wan.download=$wan_down - EOF - uci_commitverbose "Setup QOS on WAN interface." qos - -fi diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_splash.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_splash.sh deleted file mode 100755 index 3c3e6a32e2..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_splash.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# Setup_splash, takes 1 argument: 1=net - -. /lib/functions.sh -. $dir/functions.sh - -net=$1 -vap=$(uci -q get meshwizard.netconfig.${net}_vap) - -if [ ! "$has_luci_splash" == TRUE ]; then - echo " Luci Splash is not installed, skipping setup of it." - exit -fi - -set_defaults "luci_splash_" luci_splash.general -uci_commitverbose "Setup general splash settings" luci_splash - -dhcprange=$(uci -q get meshwizard.netconfig.$net\_dhcprange) - -splash_net_add() { - uci batch <<- EOF - set luci_splash.$1="iface" - set luci_splash.$1.network="$1" - set luci_splash.$1.zone="freifunk" - EOF -} - -if [ "$(uci -q get meshwizard.netconfig.$net\_dhcp)" = 1 ] && [ -n "$dhcprange" ]; then - handle_splash() { - config_get network "$1" network - if [ "$network" == "${netrenamed}dhcp" ]; then - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename luci_splash $1 ${netrenamed}dhcp - fi - fi - } - config_load luci_splash - config_foreach handle_splash iface - - if [ "$supports_vap" = 1 -a "$vap" = 1 ]; then - splash_net_add ${netrenamed}dhcp - uci_commitverbose "Setup dhcpsplash for ${netrenamed}dhcp" luci_splash - fi - - ahdhcp_when_vap="$(uci get profile_$community.profile.adhoc_dhcp_when_vap)" - if [ "$supports_vap" = 0 ] || \ - [ "$supports_vap" = 1 -a "$vap" = 1 -a "$ahdhcp_when_vap" = 1 ] || \ - [ "$lan_dhcp" = 1 ]; then - splash_net_add ${netrenamed}ahdhcp - uci_commitverbose "Setup dhcpsplash for ${netrenamed}ahdhcp" luci_splash - fi - /etc/init.d/luci_splash enable -fi - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_ssh.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_ssh.sh deleted file mode 100755 index 38b331e71b..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_ssh.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -# Setup ssh. At this point only used to store pubkeys. - -[ ! "$(uci -q get meshwizard.ssh)" == "system" ] && exit - -. /lib/functions.sh -. $dir/functions.sh -authorized="/etc/dropbear/authorized_keys" - - -config_load meshwizard - -i=0 -handle_pubkeys() { - local k="$1" - ( [ -f "$authorized" ] && grep -q "$k" $authorized) || { - echo "$k" >> $authorized - i=`expr $i + 1` - } -} - -config_list_foreach ssh pubkey handle_pubkeys - -uci delete meshwizard.ssh -uci_commitverbose "Added $i pubkeys to authorized_keys" meshwizard - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_system.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_system.sh deleted file mode 100755 index e9ce953f15..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_system.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -. $dir/functions.sh - -set_defaults "system_" system.system -uci -q delete meshwizard.system && uci commit meshwizard -uci_commitverbose "System config" system diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_uhttpd.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_uhttpd.sh deleted file mode 100755 index b25a1756ca..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_uhttpd.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -. $dir/functions.sh -if [ "$ipv6_enabled" = "1" ]; then - uci batch <<- EOF - set uhttpd.main.listen_http="80" - set uhttpd.main.listen_https="443" - EOF -fi - -uci_commitverbose "Setup uhttpd" uhttpd - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wan_dhcp.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wan_dhcp.sh deleted file mode 100755 index 91fc1d8dab..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wan_dhcp.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# Setup dhcp interface settings for wan. This is the OpenWrt default, -# so all we need to do here is to delete wan from meshwizard after setup. -# Also disallow ra on wan if ipv6 is enabled - -[ ! "$(uci -q get network.wan)" == "interface" ] && exit - -. /lib/functions.sh -. $dir/functions.sh - -if [ "$ipv6_enabled" = "1" ]; then - uci set network.wan.accept_ra='0' - uci_commitverbose "Do not accept ra on wan interface" network -fi - - -uci delete meshwizard.wan && uci commit meshwizard - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wan_static.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wan_static.sh deleted file mode 100755 index 570470aa77..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wan_static.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# Setup static interface settings for wan if wan is not an olsr interface - -[ ! "$(uci -q get network.wan)" == "interface" ] && exit - -. /lib/functions.sh -. $dir/functions.sh - -uci batch << EOF -set network.wan.proto='$wan_proto' -set network.wan.ipaddr='$wan_ip4addr' -set network.wan.netmask='$wan_netmask' -set network.wan.gateway='$wan_gateway' -set network.wan.dns='$wan_dns' -EOF - -uci_commitverbose "Setup static ip settings for wan" network - -uci delete meshwizard.wan && uci commit meshwizard - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_widgets.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_widgets.sh deleted file mode 100755 index 288252f37b..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_widgets.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -. /lib/functions.sh - . $dir/functions.sh - -if [ -n "$widgets" ]; then - [ ! -f "/etc/config/freifunk-widgets" ] && touch /etc/config/freifunk-widgets - for w in $widgets; do - uci set freifunk-widgets.${w}=widget - set_defaults "${w}_" freifunk-widgets.${w} - uci delete profile_$community.${w} - done - uci commit profile_$community - uci_commitverbose "Added widget config." freifunk-widgets -fi diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh deleted file mode 100755 index 707b7b72cd..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/sh -# sets up a wifi interface for meshing -# Arguments: $1 = network interface - -net="$1" -. /lib/functions.sh -. $dir/functions.sh - -##### wifi-device ##### - -# Get the type before we delete the wifi-device -config_load wireless -config_get type $net type - -# Rename wifi-device for $net - -handle_wifidevice() { - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename wireless $1 $net - fi -} -config_foreach handle_wifidevice wifi-device - -# create new wifi-device for $net -uci set wireless.${net}=wifi-device - -# get and set wifi-device defaults -set_defaults "wifi_device_" wireless.${net} - -channel="$(uci -q get meshwizard.netconfig.$net\_channel)" - -if [ -z "$channel" -o "$channel" == "default" ]; then - channel=$wifi_device_channel -fi - -uci batch << EOF - set wireless.${net}.type="$type" - set wireless.${net}.channel="$channel" -EOF - -uci_commitverbose "Setup wifi device for $netrenamed" wireless - -##### wifi iface - -# Rename wifi-iface for $net -handle_interface() { - config_get device "$1" device - if [ "$device" == "$net" ]; then - if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then - section_rename wireless $1 ${net}_iface - fi - fi -} -config_foreach handle_interface wifi-iface - -# create new wifi-device for $net -uci set wireless.$net\_iface=wifi-iface - -# create new wifi-iface for $net from defaults -set_defaults "wifi_iface_" wireless.$net\_iface - -# overwrite defaults -bssid="$($dir/helpers/gen_bssid.sh $channel $community)" - -ssid="$profile_ssid" -if [ "$profile_ssid_scheme" == "addchannel" ]; then - ssid="$ssid - ch$channel" -elif [ "$profile_ssid_scheme" == "addchannelbefore" ]; then - ssid="ch$channel.$ssid" -fi - -uci batch << EOF - set wireless.$net\_iface.device="${net}" - set wireless.$net\_iface.network="$netrenamed" - set wireless.$net\_iface.ssid="$ssid" - set wireless.$net\_iface.bssid="$bssid" -EOF - -uci_commitverbose "Setup wifi interface for $netrenamed" wireless - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi_vap.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi_vap.sh deleted file mode 100755 index df58ad76d3..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi_vap.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# sets up a wifi interface for meshing -# Arguments: $1 = network interface - -net="$1" -. /lib/functions.sh -. $dir/functions.sh - -## Setup a VAP interface in AP Mode -ip4addr="$(uci get meshwizard.netconfig.$net\_ip4addr)" -vap="$(uci -q get meshwizard.netconfig.$net\_vap)" - -if [ "$supports_vap" == 1 -a "$vap" == 1 ]; then - uci batch <<- EOF - set wireless.$net\_iface_dhcp="wifi-iface" - set wireless.$net\_iface_dhcp.device="$net" - set wireless.$net\_iface_dhcp.mode="ap" - set wireless.$net\_iface_dhcp.encryption="none" - set wireless.$net\_iface_dhcp.network="${netrenamed}dhcp" - set wireless.$net\_iface_dhcp.ssid="Freifunk-$ip4addr" - EOF - uci_commitverbose "Setup VAP interface for $netrenamed" wireless -fi diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh deleted file mode 100755 index 7fdff3c566..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# checks if a given device can be used for a VAP interface (1 adhoc + 1 ap) -dev="$1" -type="$2" - - -if [ -z "$dev" -o -z "$type" ]; then - exit 1 -fi - -if [ "$type" = "mac80211" ]; then - # not hostapd[-mini], no VAP - if [ ! -x /usr/sbin/hostapd ]; then - echo "WARNING: hostapd[-mini] is required to be able to use VAP with mac80211." - exit 1 - fi - # get driver in use - netindex="$(echo $dev |sed 's/[a-zA-z]*//')" - if [ -d /sys/class/net/wlan${netindex}/device/driver/module ]; then - driver="$(basename $(ls -l /sys/class/net/wlan${netindex}/device/driver/module | sed -ne 's/.* -> //p'))" - if [ "$driver" = "ath9k" -o "$driver" = "ath5k" ]; then - exit 0 - else - exit 1 - fi - else - exit 1 - fi -else - exit 1 -fi - diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/wizard.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/wizard.sh deleted file mode 100755 index 450473868e..0000000000 --- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/wizard.sh +++ /dev/null @@ -1,147 +0,0 @@ -#!/bin/sh - -# This collection of scripts will take settings from /etc/config/meshwizard, /etc/config/freifunk -# and /etc/config/profile_ and setup the router to participate in wireless mesh networks - -# Copyright 2011 Manuel Munz - -# Licensed under the Apache License, Version 2.0 (the "License") -# You may not use this file except in compliance with the License. -# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - -echo " -/* Meshwizard 0.3.1 */ -" - -# config -export dir="/usr/bin/meshwizard" - -. /lib/functions.sh -. $dir/functions.sh -. $dir/helpers/read_defaults.sh -[ -f /proc/net/ipv6_route ] && export has_ipv6=1 - -# Check which packages we have installed -export has_luci=FALSE -opkg list_installed |grep luci-mod-admin > /dev/null && export has_luci=TRUE -export has_luci_splash=FALSE -opkg list_installed |grep luci-app-splash > /dev/null && export has_luci_splash=TRUE - -# Check whether we want to cleanup/restore uci config before setting new options -cleanup=$(uci -q get meshwizard.general.cleanup) -[ "$cleanup" == 1 ] && restore_factory_defaults - -# Rename wifi interfaces -$dir/helpers/rename-wifi.sh - -export lan_is_olsr="$(uci -q get meshwizard.netconfig.lan_config)" - -# Get community -community="$(uci -q get meshwizard.community.name || uci -q get freifunk.community.name)" -[ -z "$community" ] && echo "Error: Community is not set in /etc/config/freifunk, aborting now." && exit 1 -export community="$community" - -# we need a list of widgets later on. It will be populated in read_defaults.sh -widgets="" - -# Get a list of networks we need to setup -networks=$(uci show meshwizard.netconfig | grep -v "netconfig=" | sed -e 's/meshwizard.netconfig\.\(.*\)\_.*/\1/' |sort|uniq) -export networks -[ -z "$networks" ] && echo "Error: No networks to setup could be found in /etc/config/meshwizard, aborting now." && exit 1 - -# Read defaults and node config -read_defaults $community - -# Do config -$dir/helpers/initial_config.sh -$dir/helpers/setup_dnsmasq.sh -$dir/helpers/setup_system.sh -$dir/helpers/setup_olsrd.sh -$dir/helpers/setup_firewall.sh -$dir/helpers/setup_ssh.sh -$dir/helpers/setup_uhttpd.sh -$dir/helpers/setup_widgets.sh - -if [ "$wan_proto" == "static" ] && [ -n "$wan_ip4addr" ] && [ -n "$wan_netmask" ]; then - $dir/helpers/setup_wan_static.sh -fi - -if [ "$wan_proto" == "dhcp" ]; then - $dir/helpers/setup_wan_dhcp.sh -fi - -if [ -n "$wan_down" -a -n "$wan_up" ]; then - $dir/helpers/setup_qos.sh -fi - -if [ "$lan_proto" == "static" ] && [ -n "$lan_ip4addr" ] && [ -n "$lan_netmask" ]; then - $dir/helpers/setup_lan_static.sh -fi - -if [ "$ipv6_enabled" == 1 ] && [ "$has_ipv6" = 1 ]; then - $dir/helpers/setup_lan_ipv6.sh - # Setup auto-ipv6 - if [ -n "$(echo "$ipv6_config" |grep auto-ipv6)" ]; then - $dir/helpers/setup_auto-ipv6.sh - fi -fi - -# Setup policyrouting if internet sharing is disabled and wan is not used for olsrd -# Always disable it first to make sure its disabled when the user decied to share his internet -uci set freifunk-policyrouting.pr.enable=0 -if [ ! "$general_sharenet" == 1 ] && [ ! "$(uci -q get meshwizard.netconfig.wan_proto)" == "olsr" ]; then - $dir/helpers/setup_policyrouting.sh -fi - -# Configure found networks -for net in $networks; do - # radioX devices need to be renamed - netrenamed="${net/radio/wireless}" - export netrenamed - - if [ ! "$net" == "wan" ] && [ ! "$net" == "lan" ]; then - $dir/helpers/setup_wifi.sh $net - # check if this net supports vap - /sbin/wifi # wifi needs to be up for the check - export supports_vap="0" - type="$(uci -q get wireless.$net.type)" - [ -n "$type" ] && $dir/helpers/supports_vap.sh $net $type && export supports_vap=1 - if [ "$supports_vap" = 1 ]; then - $dir/helpers/setup_wifi_vap.sh $net - fi - fi - - $dir/helpers/setup_network.sh $net - - $dir/helpers/setup_olsrd_interface.sh $net - - net_dhcp=$(uci -q get meshwizard.netconfig.${net}_dhcp) - export ${net}_dhcp=$net_dhcp - - if [ "$net" = "lan" ] && [ "$lan_is_olsr" = "1" ]; then - uci -q set dhcp.lan.ignore="1" - uci_commitverbose "Disable DHCP on LAN because it is an olsr interface." dhcp - fi - - if [ "$net_dhcp" == 1 ]; then - $dir/helpers/setup_dhcp.sh $net - fi - - $dir/helpers/setup_splash.sh $net - $dir/helpers/setup_firewall_interface.sh $net - - if [ -n "$(echo "$ipv6_config" |grep auto-ipv6)" ]; then - $dir/helpers/setup_auto-ipv6-interface.sh $net - fi -done - -##### postinstall script - -[ -f /etc/rc.local.meshkitpostinstall ] && /etc/rc.local.meshkitpostinstall - - -##### Reboot the router (because simply restarting services gave errors) - -echo "+ The wizard has finished and the router will reboot now." - -reboot diff --git a/package/luci/documentation/CBI.md b/package/luci/documentation/CBI.md deleted file mode 100644 index e937fe6048..0000000000 --- a/package/luci/documentation/CBI.md +++ /dev/null @@ -1,246 +0,0 @@ - -# CBI models -are Lua files describing the structure of an UCI config file and the resulting HTML form to be evaluated by the CBI parser.
    -All CBI model files must return an object of type **luci.cbi.Map**.
    -For a commented example of a CBI model, see the [Writing Modules tutorial](ModulesHowTo.md#cbimodels). - -The scope of a CBI model file is automatically extended by the contents of the module **luci.cbi** and the _translate_ function from **luci.i18n** - -This Reference covers **the basics** of the CBI system. - - -## class Map (_config, title, description_) -This is the root object of the model. - -* **config:** configuration filename to be mapped, see [UCI documentation](http://wiki.openwrt.org/doc/uci) and the files in /etc/config -* **title:** title shown in the UI -* **description:** description shown in the UI - -#### function :section (_sectionclass_, ...) -Creates a new section -* **sectionclass**: a class object of the section -* _additional parameters passed to the constructor of the section class_ - ----- - -## class NamedSection (_name, type, title, description_) -An object describing an UCI section selected by the name.
    -To instantiate use: `Map:section(NamedSection, "name", "type", "title", "description")` - -* **name:** UCI section name -* **type:** UCI section type -* **title:** The title shown in the UI -* **description:** description shown in the UI - -#### function :option(_optionclass_, ...) -Creates a new option -* **optionclass:** a class object of the section -* _additional parameters passed to the constructor of the option class_ - -#### property .addremove = false -Allows the user to remove and recreate the configuration section. - -#### property .dynamic = false -Marks this section as dynamic. Dynamic sections can contain an undefinded number of completely userdefined options. - -#### property .optional = true -Parse optional options - ----- - -## class TypedSection (_type, title, description_) -An object describing a group of UCI sections selected by their type.
    -To instantiate use: `Map:section(TypedSection, "type", "title", "description")` -* **type:** UCI section type -* **title:** The title shown in the UI -* **description:** description shown in the UI - -#### function :option(_optionclass_, ...) -Creates a new option - **optionclass:** a class object of the section - _additional parameters passed to the constructor of the option class_ - -#### function :depends(_key, value_) -Only select those sections where _key == value_
    -If you call this function several times the dependencies will be linked with **"or"** - -#### function .filter(_self, section_) -abstract- -You can override this function to filter certain sections that will not be parsed. -The filter function will be called for every section that should be parsed and returns **nil** for sections that should be filtered. For all other sections it should return the section name as given in the second parameter. - -#### property .addremove = false -Allows the user to remove and recreate the configuration section - -#### property .dynamic = false -Marks this section as dynamic. Dynamic sections can contain an undefinded number of completely userdefined options. - -#### property .optional = true -Parse optional options - -#### property .anonymous = false -Do not show UCI section names - ----- - -## class Value (_option, title, description_) -An object describing an option in a section of a UCI File. Creates a standard text field in the formular.
    -To instantiate use: `NamedSection:option(Value, "option", "title", "description")`
    - or `TypedSection:option(Value, "option", "title", "description")` -* **option:** UCI option name -* **title:** The title shown in the UI -* **description:** description shown in the UI - -#### function :depends(key, value) -Only show this option field if another option _key_ is set to _value_ in the same section.
    -If you call this function several times the dependencies will be linked with **"or"** - -#### function :value(key, value) -Convert this text field into a combobox if possible and add a selection option. - -#### property .default = nil -The default value - -#### property .maxlength = nil -The maximum inputlength (of chars) of the value - -#### property .optional = false -Marks this option as optional, implies .rmempty = true - -#### property .rmempty = true -Removes this option from the configuration file when the user enters an empty value - -#### property .size = nil -The maximum number of chars displayed by form field - ----- - -## class ListValue (_option, title, description_) -An object describing an option in a section of a UCI File.
    -Creates a list box or list of radio (for selecting one of many choices) in the formular.
    -To instantiate use: `NamedSection:option(ListValue, "option", "title", "description")`
    -or `TypedSection:option(ListValue, "option", "title", "description")` -* **option:** UCI option name -* **title:** The title shown in the UI -* **description:** description shown in the UI - -#### function :depends(key, value) -Only show this option field if another option _key_ is set to _value_ in the same section.
    -If you call this function several times the dependencies will be linked with **"or"** - -#### function :value(_key, value_) -Adds an entry to the selection list - -#### property .widget = "select" -**"select"** shows a selction list, **"radio"** shows a list of radio buttons inside form - -#### property .default = nil -The default value - -#### property .optional = false -Marks this option as optional, implies .rmempty = true - -#### property .rmempty = true -Removes this option from the configuration file when the user enters an empty value - -#### property .size = nil -The size of the form field - ----- - -## class Flag (_option, title, description_) -An object describing an option with two possible values in a section of a UCI File.
    -Creates a checkbox field in the formular.
    -To instantiate use: `NamedSection:option(Flag, "option", ""title", "description")`
    - or `TypedSection:option(Flag, "option", "title", "description")` -* **option:** UCI option name -* **title:** The title shown in the UI -* **description:** description shown in the UI - -#### function :depends (_key, value_) -Only show this option field if another option _key_ is set to _value_ in the same section.
    -If you call this function several times the dependencies will be linked with **"or"** - -#### property .default = nil -The default value - -#### property .disabled = 0 -the value that should be set if the checkbox is unchecked - -#### property .enabled = 1 -the value that should be set if the checkbox is checked - -#### property .optional = false -Marks this option as optional, implies .rmempty = true - -#### property .rmempty = true -Removes this option from the configuration file when the user enters an empty value - ----- - -## class MultiValue (_option'', ''title'', ''description_) -An object describing an option in a section of a UCI File.
    -Creates a list of checkboxed or a multiselectable list as form fields.
    -To instantiate use: `NamedSection:option(MultiValue, "option", ""title", "description")`
    - or `TypedSection:option(MultiValue, "option", "title", "description")` -* **option:** UCI option name -* **title:** The title shown in the UI -* **description:** description shown in the UI - -#### function :depends (_key, value_) -Only show this option field if another option _key_ is set to _value_ in the same section.
    -If you call this function several times the dependencies will be linked with **"or"** - -#### function :value(_key, value_) -Adds an entry to the list - -#### property .widget = "checkbox" -**"select"** shows a selction list, **"checkbox"** shows a list of checkboxes inside form - -#### property .delimiter = " " -The string which will be used to delimit the values inside stored option - -#### property .default = nil -The default value - -#### property .optional = false -Marks this option as optional, implies .rmempty = true - -#### property .rmempty = true -Removes this option from the configuration file when the user enters an empty value - -#### property .size = nil -The size of the form field (only used if property _.widget = "select"_) - ----- - -## class StaticList (_option, title, description_) -Similar to the MultiValue, but stores selected Values into a UCI list instead of a character-separated option. - ----- - -## class DynamicList (_option, title, description_) -A extensible list of user-defined values. Stores Values into a UCI list - ----- - -## class DummyValue (_option, title, description_) -Creates a readonly text in the form. !It writes no data to UCI!
    -To instantiate use: `NamedSection:option(DummyValue, "option", ""title", "description")`
    - or `TypedSection:option(DummyValue, "option", "title", "description")` -* **option:** UCI option name -* **title:** The title shown in the UI -* **description:** description shown in the UI - -#### property :depends (_key, value_) -Only show this option field if another option _key_ is set to _value_ in the same section.
    -If you call this function several times the dependencies will be linked with **"or"** - ----- - -## class TextValue (_option, title, description_) -An object describing a multi-line textbox in a section in a non-UCI form. - ----- - -## class Button (_option, title, description_) -An object describing a Button in a section in a non-UCI form. diff --git a/package/luci/documentation/JsonRpcHowTo.md b/package/luci/documentation/JsonRpcHowTo.md deleted file mode 100644 index 76d61f86e3..0000000000 --- a/package/luci/documentation/JsonRpcHowTo.md +++ /dev/null @@ -1,66 +0,0 @@ -LuCI provides some of its libraries to external applications through a JSON-RPC API. -This Howto shows how to use it and provides information about available functions. - - -# Basics -LuCI comes with an efficient JSON De-/Encoder together with a JSON-RPC-Server which implements the *JSON-RPC 1.0_' and 2.0 (partly) specifications. The LuCI JSON-RPC server offers several independent APIs. Therefore you have to use '_different URLs for every exported library*. -Assuming your LuCI-Installation can be reached through */cgi-bin/luci_' any exported library can be reached via '''/cgi-bin/luci/rpc/''LIBRARY_*. - - -# Authentication -Most exported libraries will require a valid authentication to be called with. If you get an *HTTP 403 Forbidden_' status code you are probably missing a valid authentication token. To get such a token you have to call the function '''login''' of the RPC-Library '''auth'''. Following our example from above this login function would be provided at '_/cgi-bin/luci/rpc/auth*. The function accepts 2 parameters: username and password (of a valid user account on the host system) and returns an authentication token. - -If you want to call any exported library which requires an authentication token you have to *append it as an URL parameter _auth''''' to the RPC-Server URL. So instead of calling '''/cgi-bin/luci/rpc/''LIBRARY''''' you have to call '''/cgi-bin/luci/rpc/''LIBRARY''?auth=''TOKEN_*. - -If your JSON-RPC client is Cookie-aware (like most browsers are) you will receive the authentication token also with a session cookie and probably don't have to append it to the RPC-Server URL. - - -# Exported Libraries -## uci -The UCI-Library */rpc/uci* offers functionality to interact with the Universal Configuration Interface. -*Exported Functions:* -* [(string) add(config, type)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.add) -* [(integer) apply(config)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.apply) -* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.changes (object) changes([config])] -* [(boolean) commit(config)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.commit) -* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.delete (boolean) delete(config, section[, option])] -* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.delete_all (boolean) delete_all(config[, type])] -* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.foreach (array) foreach(config[, type])] -* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.get (mixed) get(config, section[, option])] -* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.get_all (object) get_all(config[, section])] -* [http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.get (mixed) get_state(config, section[, option])] -* [(boolean) revert(config)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.revert) -* [(name) section(config, type, name, values)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.section) -* [(boolean) set(config, section, option, value)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.set) -* [(boolean) tset(config, section, values)](http://luci.subsignal.org/api/luci/modules/luci.model.uci.html#Cursor.tset) - -## uvl -The UVL-Library */rpc/uvl* offers functionality to validate UCI files and get schemes describing UCI files. -*Exported Functions:* -* [(array) get_scheme(scheme)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.get_scheme) -* [(array) validate(config, section, option)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.validate) -* [(array) validate_config(config)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.validate_config) -* [(array) validate_section(config, section)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.validate_section) -* [(array) validate(config, section, option)](http://luci.subsignal.org/api/luci/modules/luci.uvl.html#UVL.validate_option) - -## fs -The Filesystem library */rpc/fs* offers functionality to interact with the filesystem on the host machine. -*Exported Functions:* - -* [Complete luci.fs library](http://luci.subsignal.org/api/luci/modules/luci.fs.html) -*Note:* All functions are exported as they are except for _readfile'' which encodes its return value in base64 and ''writefile'' which only accepts base64 encoded data as second argument. Note that both functions will only be available when the ''luasocket_ packet is installed on the hostsystem. - -## sys -The System library */rpc/sys* offers functionality to interact with the operating system on the host machine. -*Exported Functions:* -* [Complete luci.sys library](http://luci.subsignal.org/api/luci/modules/luci.sys.html) -* [Complete luci.sys.group library](http://luci.subsignal.org/api/luci/modules/luci.sys.group.html) with prefix *group.* -* [Complete luci.sys.net library](http://luci.subsignal.org/api/luci/modules/luci.sys.net.html) with prefix *net.* -* [Complete luci.sys.process library](http://luci.subsignal.org/api/luci/modules/luci.sys.process.html) with prefix *process.* -* [Complete luci.sys.user library](http://luci.subsignal.org/api/luci/modules/luci.sys.user.html) with prefix *user.* -* [Complete luci.sys.wifi library](http://luci.subsignal.org/api/luci/modules/luci.sys.wifi.html) with prefix *wifi.* - -## ipkg -The IPKG library */rpc/ipkg* offers functionality to interact with the package manager (IPKG or OPKG) on the host machine. -*Exported Functions:* -* [Complete luci.model.ipkg library](http://luci.subsignal.org/api/luci/modules/luci.model.ipkg.html) diff --git a/package/luci/documentation/LAR.md b/package/luci/documentation/LAR.md deleted file mode 100644 index 457b076f9a..0000000000 --- a/package/luci/documentation/LAR.md +++ /dev/null @@ -1,87 +0,0 @@ -LAR is a simple archive format to pack multiple lua source files and arbitrary other resources into a single file. - - -# Format Specification - -A LAR archive file is divided into two parts: the payload and the index lookup table. -All segments of the archive are 4 Byte aligned to ease reading and processing of the format. -All integers are stored in network byte order, so an implementation has to use htonl() and htons() to properly read them. - -Schema: - - - - > - - - - > - - ... - - - - > - > - - - - - > - - - - - > - - ... - - - - - > - > - - - - - -# Processing - -In order to process an LAR archive, an implementation would have to do the following steps: - -## Read Index - -1. Locate and open the archive file -1. Seek to end of file - 4 bytes -1. Read 32bit index offset and swap from network to native byte order -1. Seek to index offset, calculate index length: filesize - index offset - 4 -1. Initialize a linked list for index table entries -1. Read each index entry until the index length is reached, read and byteswap 4 * 32bit int and 2 * 16bit int -1. Seek to begin of file - -## Read Member - -1. Read the archive index -1. Iterate through the linked index list, perform the following steps for each entry -1. Seek to the specified file path offset -1. Read as much bytes as specified in the file path length into a buffer -1. Compare the contents of the buffer against the path of the searched member -1. If buffer and searched path are equal, seek to the specified file data offset -1. Read data until the file data length is reached, return -1. Select the next index table entry and repeat from step 3, if there is no next entry then return - -# Reference implementation - -A reference implementation can be found here: -http://luci.subsignal.org/trac/browser/luci/trunk/contrib/lar - -The lar.pl script is a simple packer for LAR archives and cli.c provides a utility to list and dump packed LAR archives. diff --git a/package/luci/documentation/LMO.md b/package/luci/documentation/LMO.md deleted file mode 100644 index 961a45ba84..0000000000 --- a/package/luci/documentation/LMO.md +++ /dev/null @@ -1,144 +0,0 @@ -LMO is a simple binary format to pack language strings into a more efficient form. Although it's suitable to store any kind of key-value table, it's only used for the LuCI *.po based translation system at the moment. The abbreviation "LMO" stands for "Lua Machine Objects" in the style of the GNU gettext *.mo format. - - -# Format Specification - -A LMO file is divided into two parts: the payload and the index lookup table. -All segments of the file are 4 Byte aligned to ease reading and processing of the format. -Only unsigned 32bit integers are used and stored in network byte order, so an implementation has to use htonl() to properly read them. - -Schema: - - - - - - ... - - - > - - - - - - > - - - - - - > - - ... - - - - - - > - > - - - > - - - -# Processing - -In order to process a LMO file, an implementation would have to do the following steps: - -## Read Index - -1. Locate and open the archive file -1. Seek to end of file - 4 bytes (sizeof(uint32_t)) -1. Read 32bit index offset and swap from network to native byte order -1. Seek to index offset, calculate index length: filesize - index offset - 4 -1. Initialize a linked list for index table entries -1. Read each index entry until the index length is reached, read and byteswap 4 * uint32_t for each step -1. Seek to begin of file - -## Read Entry - -1. Calculate the unsigned 32bit hash of the entries key value (see "Hash Function" section below) -1. Obtain the archive index -1. Iterate through the linked index list, perform the following steps for each entry: - 1. Compare the entry hash value with the calculated hash from step 1 - 2. If the hash values are equal proceed with step 4 - 3. Select the next entry and repeat from step 3.1 -1. Seek to the file offset specified in the selected entry -1. Read as much bytes as specified in the entry length into a buffer -1. Return the buffer value - -# Hash Function - -The current LuCI-LMO implementation uses the "Super Fast Hash" function which was kindly put in the public domain by it's original author. See http://www.azillionmonkeys.com/qed/hash.html for details. Below is the C-Implementation of this function: - - - #if (defined(__GNUC__) && defined(__i386__)) - #define sfh_get16(d) (*((const uint16_t *) (d))) - #else - #define sfh_get16(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\ - +(uint32_t)(((const uint8_t *)(d))[0]) ) - #endif - - uint32_t sfh_hash(const char * data, int len) - { - uint32_t hash = len, tmp; - int rem; - - if (len <= NULL) return 0; - - rem = len & 3; - len >>= 2; - - /* Main loop */ - for (;len > 0; len--) { - hash += sfh_get16(data); - tmp = (sfh_get16(data+2) << 11) ^ hash; - hash = (hash << 16) ^ tmp; - data += 2*sizeof(uint16_t); - hash += hash >> 11; - } - - /* Handle end cases */ - switch (rem) { - case 3: hash += sfh_get16(data); - hash ^= hash << 16; - hash ^= data[sizeof(uint16_t)] << 18; - hash += hash >> 11; - break; - case 2: hash += sfh_get16(data); - hash ^= hash << 11; - hash += hash >> 17; - break; - case 1: hash += *data; - hash ^= hash << 10; - hash += hash >> 1; - } - - /* Force "avalanching" of final 127 bits */ - hash ^= hash << 3; - hash += hash >> 5; - hash ^= hash << 4; - hash += hash >> 17; - hash ^= hash << 25; - hash += hash >> 6; - - return hash; - } - - -# Reference Implementation - -A reference implementation can be found here: -http://luci.subsignal.org/trac/browser/luci/trunk/libs/lmo/src - -The lmo_po2lmo.c executable implements a *.po to *.lmo conversation utility and lmo_lookup.c is a simple *.lmo test utility. -Lua bindings for lmo are defined in lmo_lualib.c and associated headers. diff --git a/package/luci/documentation/LuCI-0.10.md b/package/luci/documentation/LuCI-0.10.md deleted file mode 100644 index 5db9895e58..0000000000 --- a/package/luci/documentation/LuCI-0.10.md +++ /dev/null @@ -1,202 +0,0 @@ -[[PageOutline(2-5, Table of Contents, floated)]] - - -This document describes new features and incompatibilities to LuCI 0.9.x. -It is targeted at module authors developing external addons to LuCI. - -# I18N Changes - -## API - -The call conventions for the i18n api changed, there is no dedicated translation -key anymore and the english text is used for lookup instead. This was done to -ease the maintenance of language files. - -Code that uses _translate()'' or ''i18n()_ must be changed as follows: - - - -- old style: - translate("some_text", "Some Text") - translatef("some_format_text", "Some formatted Text: %d", 123) - - -- new style: - translate("Some Text") - translatef("Some formatted Text: %d", 123) - - -Likewise for templates: - - - - <%:some_text Some Text%> - - - <%:Some Text%> - - -If code must support both LuCI 0.9.x and 0.10.x versions, it is suggested to write the calls as follows: - - translate("Some Text", "Some Text") - - -An alternative is wrapping translate() calls into a helper function: - - function tr(key, alt) - return translate(key) or translate(alt) or alt - end - - -... which is used as follows: - - tr("some_key", "Some Text") - - -## Translation File Format - -Translation catalogs are now maintained in *.po format files. During build those get translated -into [*.lmo archives](http://luci.subsignal.org/trac/wiki/Documentation/LMO). - -LuCI ships a [utility script](http://luci.subsignal.org/trac/browser/luci/branches/luci-0.10/build/i18n-lua2po.pl) -in the build/ directory to convert old Lua translation files to the *.po format. The generated *.po files should -be placed in the appropriate subdirectories within the top po/ file in the LuCI source tree. - -### Components built within the LuCI tree - -If components using translations are built along with the LuCI tree, the newly added *.po file are automatically -compiled into *.lmo archives during the build process. In order to bundle the appropriate *.lmo files into the -corresponding *.ipk packages, component Makefiles must include a "PO" variable specifying the files to include. - -Given a module _applications/example/'' which uses ''po/en/example.po'' and ''po/en/example-extra.po_, -the _applications/example/Makefile_ must be changed as follows: - - - PO = example example-extra - - include ../../build/config.mk - include ../../build/module.mk - - -### Standalone components - -Authors who externally package LuCI components must prepare required *.lmo archives themselves. -To convert existing Lua based message catalogs to the *.po format, the build/i18n-lua2po.pl helper script can be used. -In order to convert *.po files into *.lmo files, the standalone "po2lmo" utility must be compiled as follows: - - - $ svn co http://svn.luci.subsignal.org/luci/branches/luci-0.10/libs/lmo - $ cd lmo/ - $ make - $ ./src/po2lmo translations.po translations.lmo - - -Note that at the time of writing, the utility program needs Lua headers installed on the system in order to compile properly. - -# CBI - -## Datatypes - -The server side UVL validation has been dropped to reduce space requirements on the target. -Instead it is possible to define datatypes for CBI widgets now: - - - opt = section:option(Value, "optname", "Title Text") - opt.datatype = "ip4addr" - - -User provided data is validated once on the frontend via JavaScript and on the server side prior to saving it. -A list of possible datatypes can be found in the [luci.cbi.datatypes](http://luci.subsignal.org/trac/browser/luci/branches/luci-0.10/libs/web/luasrc/cbi/datatypes.lua#L26) class. - -## Validation - -Server-sided validator function can now return custom error messages to provide better feedback on invalid input. - - - opt = section:option(Value, "optname", "Title Text") - - function opt.validate(self, value, section) - if input_is_valid(value) then - return value - else - return nil, "The value is invalid because ..." - end - end - - -## Tabs - -It is now possible to break up CBI sections into multiple tabs to better organize longer forms. -The TypedSection and NamedSection classes gained two new functions to define tabs, _tab()'' and ''taboption()_. - - - sct = map:section(TypedSection, "name", "type", "Title Text") - - sct:tab("general", "General Tab Title", "General Tab Description") - sct:tab("advanced", "Advanced Tab Title", "Advanced Tab Description") - - opt = sct:taboption("general", Value, "optname", "Title Text") - ... - - -The _tab()_ function is declares a new tab and takes up to three arguments: - * Internal name of the tab, must be unique within the section - * Title text of the tab - * Optional description text for the tab - -The _taboption()'' function wraps ''option()_ and assigns the option object to the given tab. -It takes up to five arguments: - - * Name of the tab to assign the option to - * Option type, e.g. Value or DynamicList - * Option name - * Title text of the option - * Optional description text of the option - -If tabs are used within a particular section, the _option()_ function must not be used, -doing so results in undefined behaviour. - -## Hooks - -The CBI gained support for _hooks_ which can be used to trigger additional actions during the -life-cycle of a map: - - - map = Map("config", "Title Text") - - function map.on_commit(self) - -- do something if the UCI configuration got committed - end - - -The following hooks are defined: - -|| on_cancel || The user pressed cancel within a multi-step Delegator or a SimpleForm instance || -|| on_init || The CBI is about to render the Map object || -|| on_parse || The CBI is about to read received HTTP form values || -|| on_save, on_before_save || The CBI is about to save modified UCI configuration files || -|| on_after_save || Modified UCI configuration files just got saved -|| on_before_commit || The CBI is about to commit the changes || -|| on_commit, on_after_commit, on_before_apply || Modified configurations got committed and the CBI is about to restart associated services || -|| on_apply, on_after_apply || All changes where completely applied (only works on Map instances with the apply_on_parse attribute set) || - -## Sortable Tables - -TypedSection instances which use the "cbi/tblsection" template may now use a new attribute _sortable_ to allow the user to reorder table rows. - - - sct = map:section(TypedSection, "name", "type", "Title Text") - sct.template = "cbi/tblsection" - sct.sortable = true - - ... - - -# JavaScript - -The LuCI 0.10 branch introduced a new JavaScript file _xhr.js_ which provides support routines for XMLHttpRequest operations. -Each theme must include this file in the area of the document for forms to work correctly. - -It should be included like this: - - - - \ No newline at end of file diff --git a/package/luci/documentation/Modules.md b/package/luci/documentation/Modules.md deleted file mode 100644 index 2897df9488..0000000000 --- a/package/luci/documentation/Modules.md +++ /dev/null @@ -1,94 +0,0 @@ -# Categories - -The LuCI modules are divided into several category directories, namely: -* applications (Single applications or plugins for other modules or applications) -* i18n (Translation files) -* libs (Independent libraries) -* modules (Collections of applications) -* themes (Frontend themes) - -Each module goes into a subdirectory of any of this category-directories. - -# Module directory -The contents of a module directory are as follows: - -## Makefile -This is the module's makefile. If the module just contains Lua sourcecode or resources then the following Makefile should suffice. - - include ../../build/config.mk - include ../../build/module.mk - - -If you have C(++) code in your module your Makefile should at least contain the following things. - - include ../../build/config.mk - include ../../build/gccconfig.mk - include ../../build/module.mk - - compile: - # Commands to compile and link your C-code - # and to install them under the dist/ hierarchy - - clean: luaclean - # Commands to clean your compiled objects - - - -## src -The *src* directory is reserved for C sourcecode. - -## luasrc -*luasrc* contains all Lua sourcecode files. These will automatically be stripped or compiled depending on the Make target and are installed in the LuCI installation directory. - -## lua -*lua* is equivalent to _luasrc_ but containing Lua files will be installed in the Lua document root. - -## htdocs -All files under *htdocs* will be copied to the document root of the target webserver. - -## root -All directories and files under *root* will be copied to the installation target as they are. - -## dist -*dist* is reserved for the builder to create a working installation tree that will represent the filesystem on the target machine. -*DO NOT* put any files there as they will get deleted. - -## ipkg -*ipkg* contains IPKG package control files, like _preinst'', ''posinst'', ''prerm'', ''postrm''. ''conffiles_. -See IPKG documentation for details. - - -# OpenWRT feed integration -If you want to add your module to the LuCI OpenWRT feed you have to add several sections to the contrib/package/luci/Makefile. - -For a Web UI applications this is: - -A package description: - - define Package/luci-app-YOURMODULE - $(call Package/luci/webtemplate) - DEPENDS+=+some-package +some-other-package - TITLE:=SHORT DESCRIPTION OF YOURMODULE - endef - - - -A package installation target: - - define Package/luci-app-YOURMODULE/install - $(call Package/luci/install/template,$(1),applications/YOURMODULE) - endef - - -A module build instruction: - - ifneq ($(CONFIG_PACKAGE_luci-app-YOURMODULE),) - PKG_SELECTED_MODULES+=applications/YOURMODULE - endif - - - -A build package call: - - $(eval $(call BuildPackage,luci-app-YOURMODULE)) - diff --git a/package/luci/documentation/ModulesHowTo.md b/package/luci/documentation/ModulesHowTo.md deleted file mode 100644 index 7efed83d67..0000000000 --- a/package/luci/documentation/ModulesHowTo.md +++ /dev/null @@ -1,153 +0,0 @@ -*Note:* If you plan to integrate your module into LuCI, you should read the [wiki:Documentation/Modules Module Reference] before. - -This tutorial describes how to write your own modules for the LuCI WebUI. -For this tutorial we refer to your LuCI installation directory as *lucidir_' (/usr/lib/lua/luci if you are working with an installed version) and assume your LuCI installation is reachable through your webserver via '_/cgi-bin/luci*. - -If you are working with the development environment replace *lucidir_' with '''''/path/to/your/luci/checkout''/applications/myapplication/luasrc''' (this is a default empty module you can use for your experiments) and your LuCI installation can probably be reached via http://localhost:8080/luci/ after you ran '_make runhttpd*. - - - -# Show me the way (The dispatching process) -To write a module you need to understand the basics of the dispatching process in LuCI. -LuCI uses a dispatching tree that will be built by executing the index-Function of every available controller. -The CGI-environment variable *PATH_INFO* will be used as the path in this dispatching tree, e.g.: /cgi-bin/luci/foo/bar/baz -will be resolved to foo.bar.baz - -To register a function in the dispatching tree, you can use the *entry*-function of _luci.dispatcher_. entry takes 4 arguments (2 are optional): - - entry(path, target, title=nil, order=nil) - - -* *path* is a table that describes the position in the dispatching tree: For example a path of {"foo", "bar", "baz"} would insert your node in foo.bar.baz. -* *target* describes the action that will be taken when a user requests the node. There are several predefined ones of which the 3 most important (call, template, cbi) are described later on on this page -* *title* defines the title that will be visible to the user in the menu (optional) -* *order* is a number with which nodes on the same level will be sorted in the menu (optional) - -You can assign more attributes by manipulating the node table returned by the entry-function. A few example attributes: - -* *i18n* defines which translation file should be automatically loaded when the page gets requested -* *dependent* protects plugins to be called out of their context if a parent node is missing -* *leaf* stops parsing the request at this node and goes no further in the dispatching tree -* *sysauth* requires the user to authenticate with a given system user account - - -# It's all about names (Naming and the module file) -Now that you know the basics about dispatching, we can start writing modules. But before you have to choose the category and name of your new digital child. - -We assume you want to create a new application "myapp" with a module "mymodule". - -So you have to create a new subdirectory *_lucidir''/controller/myapp''' with a file '_mymodule.lua* with the following content: - - module("luci.controller.myapp.mymodule", package.seeall) - - function index() - - end - - -The first line is required for Lua to correctly identify the module and create its scope. -The index-Function will be used to register actions in the dispatching tree. - - - -# Teaching your new child (Actions) -So it is there and has a name but it has no actions. - -We assume you want to reuse your module myapp.mymodule that you begun in the last step. - - -## Actions -Reopen *_lucidir_/controller/myapp/mymodule.lua* and just add a function to it so that its content looks like this example: - - - module("luci.controller.myapp.mymodule", package.seeall) - - function index() - entry({"click", "here", "now"}, call("action_tryme"), "Click here", 10).dependent=false - end - - function action_tryme() - luci.http.prepare_content("text/plain") - luci.http.write("Haha, rebooting now...") - luci.sys.reboot() - end - - -And now type */cgi-bin/luci/click/here/now_' ('_[http://localhost:8080/luci/click/here/now]* if you are using the development environment) in your browser. - -You see these action functions simple have to be added to a dispatching entry. - -As you might or might not know: CGI specification requires you to send a Content-Type header before you can send your content. You will find several shortcuts (like the one used above) as well as redirecting functions in the module *luci.http* - -## Views -If you only want to show the user a text or some interesting familiy photos it may be enough to use a HTML-template. These templates can also include some Lua code but be aware that writing whole office suites by only using these templates might be called "dirty" by other developers. - -Now let's create a little template *_lucidir_/view/myapp-mymodule/helloworld.htm* with the content: - - - <%+header%> -

    <%:Hello World%>

    - <%+footer%> - - - -and add the following line to the index-Function of your module file. - - entry({"my", "new", "template"}, template("myapp-mymodule/helloworld"), "Hello world", 20).dependent=false - - -Now type */cgi-bin/luci/my/new/template_' ('_[http://localhost:8080/luci/my/new/template]* if you are using the development environment) in your browser. - -You may notice those fancy <% %>-Tags, these are [wiki:Documentation/Templates|template markups] used by the LuCI template processor. -It is always good to include header and footer at the beginning and end of a template as those create the default design and menu. - -## CBI models -The CBI is one of the uber coolest features of LuCI. It creates a formular based user interface and saves its contents to a specific UCI config file. You only have to describe the structure of the configuration file in a CBI model file and Luci does the rest of the work. This includes generating, parsing and validating a XHTML form and reading and writing the UCI file. - -So let's be serious at least for this paragraph and create a real pratical example *_lucidir_/model/cbi/myapp-mymodule/netifaces.lua* with the following contents: - - - m = Map("network", "Network") -- We want to edit the uci config file /etc/config/network - - s = m:section(TypedSection, "interface", "Interfaces") -- Especially the "interface"-sections - s.addremove = true -- Allow the user to create and remove the interfaces - function s:filter(value) - return value ~= "loopback" and value -- Don't touch loopback - end - s:depends("proto", "static") -- Only show those with "static" - s:depends("proto", "dhcp") -- or "dhcp" as protocol and leave PPPoE and PPTP alone - - p = s:option(ListValue, "proto", "Protocol") -- Creates an element list (select box) - p:value("static", "static") -- Key and value pairs - p:value("dhcp", "DHCP") - p.default = "static" - - s:option(Value, "ifname", "interface", "the physical interface to be used") -- This will give a simple textbox - - s:option(Value, "ipaddr", translate("ip", "IP Address")) -- Ja, das ist eine i18n-Funktion ;-) - - s:option(Value, "netmask", "Netmask"):depends("proto", "static") -- You may remember this "depends" function from above - - mtu = s:option(Value, "mtu", "MTU") - mtu.optional = true -- This one is very optional - - dns = s:option(Value, "dns", "DNS-Server") - dns:depends("proto", "static") - dns.optional = true - function dns:validate(value) -- Now, that's nifty, eh? - return value:match("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") -- Returns nil if it doesn't match otherwise returns match - end - - gw = s:option(Value, "gateway", "Gateway") - gw:depends("proto", "static") - gw.rmempty = true -- Remove entry if it is empty - - return m -- Returns the map - - -and of course don't forget to add something like this to your module's index-Function. - - entry({"admin", "network", "interfaces"}, cbi("myapp-mymodule/netifaces"), "Network interfaces", 30).dependent=false - - -There are many more features, see [wiki:Documentation/CBI the CBI reference] and the modules shipped with LuCI. diff --git a/package/luci/documentation/Templates.md b/package/luci/documentation/Templates.md deleted file mode 100644 index dc42c28ab7..0000000000 --- a/package/luci/documentation/Templates.md +++ /dev/null @@ -1,65 +0,0 @@ -LuCI has a simple regex based template processor which parses HTML-files to Lua functions and allows to store precompiled template files. -The simplest form of a template is just an ordinary HTML-file. It will be printed out to the user as is. - -In LuCI every template is an object with an own scope. It can therefore be instanciated and each instance can has a different scope. As every template processor. LuCI supports several special markups. Those are enclosed in `<% %>`-Tags. - -By adding `-` (dash) right after the opening `<%` every whitespace before the markup will be stripped. Adding a `-` right before the closing `%>` will equivalently strip every whitespace behind the markup. - - -# Builtin functions and markups -## Including Lua code -*Markup:* - - <% code %> - - - -## Writing variables and function values -*Syntax:* - - <% write (value) %> - - -*Short-Markup:* - - <%=value%> - - -## Including templates -*Syntax:* - - <% include (templatename) %> - - -*Short-Markup:* - - <%+templatename%> - - - -## Translating -*Syntax:* - - <%= translate("Text to translate") %> - - - -*Short-Markup:* - - <%:Text to translate%> - - - -## Commenting -*Markup:* - - <%# comment %> - - -# Builtin constants -| Name | Value | ----------|--------- -|`REQUEST_URI`|The current URL (without server part)| -|`controller`|Path to the Luci main dispatcher| -|`resource`|Path to the resource directory| -|`media`|Path to the active theme directory| diff --git a/package/luci/documentation/ThemesHowTo.md b/package/luci/documentation/ThemesHowTo.md deleted file mode 100644 index ae6f8e09cd..0000000000 --- a/package/luci/documentation/ThemesHowTo.md +++ /dev/null @@ -1,76 +0,0 @@ -# HowTo: Create Themes -*Note:* You should read the [Module Reference](Modules.md) and the [Template Reference](Templates.md) before. - -We assume you want to call your new theme _mytheme_. Make sure you replace this by your module name every time this is mentionend in this Howto. - - - -# Creating the structure -At first create a new theme directory *themes/_mytheme_*. - -Create a _Makefile_ inside your theme directory with the following content: - - include ../../build/config.mk - include ../../build/module.mk - - -Create the following directory structure inside your theme directory. -* ipkg -* htdocs - * luci-static - * _mytheme_ -* luasrc - * view - * themes - * _mytheme_ -* root - * etc - * uci-defaults - - - -# Designing -Create two LuCI HTML-Templates named _header.htm'' and ''footer.htm'' under *luasrc/view/themes/''mytheme_*. -The _header.htm'' will be included at the beginning of each rendered page and the ''footer.htm_ at the end. -So your _header.htm'' will probably contain a DOCTYPE description, headers, the menu and layout of the page and the ''footer.htm_ will close all remaining open tags and may add a footer bar but hey that's your choice you are the designer ;-). - -Just make sure your _header.htm_ *begins* with the following lines: - - <% - require("luci.http").prepare_content("text/html") - -%> - - -This makes sure your content will be sent to the client with the right content type. Of course you can adapt _text/html_ to your needs. - - -Put any stylesheets, Javascripts, images, ... into *htdocs/luci-static/_mytheme_*. -You should refer to this directory in your header and footer templates as: _<%=media%>''. That means for a stylesheet *htdocs/luci-static/''mytheme_/cascade.css* you would write: - - - - - - -# Making the theme selectable -If you are done with your work there are two last steps to do. -To make your theme OpenWRT-capable and selectable on the settings page you should now create a file *root/etc/uci-defaults/luci-theme-_mytheme_* with the following contents: - - #!/bin/sh - uci batch <<-EOF - set luci.themes.MyTheme=/luci-static/mytheme - commit luci - EOF - - -and another file *ipkg/postinst* with the following content: - - #!/bin/sh - [ -n "${IPKG_INSTROOT}" ] || { - ( . /etc/uci-defaults/luci-theme-mytheme ) && rm -f /etc/uci-defaults/luci-theme-mytheme - } - - -This is some OpenWRT magic to correctly register the template with LuCI when it gets installed. - -That's all. Now send your theme to the LuCI developers to get it into the development repository - if you like. diff --git a/package/luci/documentation/api/index.html b/package/luci/documentation/api/index.html deleted file mode 100644 index c762b9b0e3..0000000000 --- a/package/luci/documentation/api/index.html +++ /dev/null @@ -1,435 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - - - -

    Modules

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    luci.dispatcher
    luci.http
    luci.http.protocol
    luci.http.protocol.conditionals
    luci.http.protocol.date
    luci.http.protocol.mime
    luci.i18n
    luci.ip - LuCI IP calculation and netlink access library.
    luci.ip.cidr - IP CIDR Object.
    luci.json
    luci.jsonc - LuCI JSON parsing and serialization library.
    luci.jsonc.parser - LuCI JSON parser instance.
    luci.model.ipkg
    luci.model.uci
    luci.rpcc
    luci.rpcc.ruci
    luci.sys
    luci.sys.init - -LuCI system utilities / init related functions.
    luci.sys.iptparser
    luci.sys.net - -LuCI system utilities / network related functions.
    luci.sys.process - -LuCI system utilities / process related functions.
    luci.sys.user - -LuCI system utilities / user related functions.
    luci.sys.wifi - -LuCI system utilities / wifi related functions.
    luci.util
    nixio - General POSIX IO library.
    nixio.CHANGELOG - Changes and improvements.
    nixio.CryptoHash - Cryptographical Hash and HMAC object.
    nixio.File - Large File Object.
    nixio.README - General Information.
    nixio.Socket - Socket Object.
    nixio.TLSContext - Transport Layer Security Context Object.
    nixio.TLSSocket - TLS Socket Object.
    nixio.UnifiedIO - Unified high-level I/O utility API for Files, Sockets and TLS-Sockets.
    nixio.bin - Binary operations and conversion.
    nixio.bit - Bitfield operators and mainpulation functions.
    nixio.crypto - Cryptographical library.
    nixio.fs - Low-level and high-level filesystem manipulation library.
    - - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/luadoc.css b/package/luci/documentation/api/luadoc.css deleted file mode 100644 index f9f9749519..0000000000 --- a/package/luci/documentation/api/luadoc.css +++ /dev/null @@ -1,285 +0,0 @@ -body { - margin-left: 1em; - margin-right: 1em; - font-family: arial, helvetica, geneva, sans-serif; - background-color:#ffffff; margin:0px; -} - -code { - font-family: "Andale Mono", monospace; -} - -tt { - font-family: "Andale Mono", monospace; -} - -body, td, th { font-size: 11pt; } - -h1, h2, h3, h4 { margin-left: 0em; } - -textarea, pre, tt { font-size:10pt; } -body, td, th { color:#000000; } -small { font-size:0.85em; } -h1 { font-size:1.5em; } -h2 { font-size:1.25em; } -h3 { font-size:1.15em; } -h4 { font-size:1.06em; } - -a:link { font-weight:bold; color: #004080; text-decoration: none; } -a:visited { font-weight:bold; color: #006699; text-decoration: none; } -a:link:hover { text-decoration:underline; } -hr { color:#cccccc } -img { border-width: 0px; } - - -h3 { padding: 1em 0 0.5em; } - -p { margin-left: 1em; } - -p.name { - font-family: "Andale Mono", monospace; - padding-top: 1em; - margin-left: 0em; -} - -blockquote { margin-left: 3em; } - -pre.example { - background-color: rgb(245, 245, 245); - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-style: solid; - border-right-style: solid; - border-bottom-style: solid; - border-left-style: solid; - border-top-color: silver; - border-right-color: silver; - border-bottom-color: silver; - border-left-color: silver; - padding: 1em; - margin-left: 1em; - margin-right: 1em; - font-family: "Andale Mono", monospace; - font-size: smaller; -} - - -hr { - margin-left: 0em; - background: #00007f; - border: 0px; - height: 1px; -} - -ul { list-style-type: disc; } - -table.index { border: 1px #00007f; } -table.index td { text-align: left; vertical-align: top; } -table.index ul { padding-top: 0em; margin-top: 0em; } - -table { - border: 1px solid black; - border-collapse: collapse; - margin: 1em auto; -} -th { - border: 1px solid black; - padding: 0.5em; -} -td { - border: 1px solid black; - padding: 0.5em; -} -div.header, div.footer { margin-left: 0em; } - -#container -{ - margin-left: 1em; - margin-right: 1em; - background-color: #f0f0f0; -} - -#product -{ - text-align: center; - border-bottom: 1px solid #cccccc; - background-color: #ffffff; -} - -#product big { - font-size: 2em; -} - -#product_logo -{ -} - -#product_name -{ -} - -#product_description -{ -} - -#main -{ - background-color: #f0f0f0; - border-left: 2px solid #cccccc; -} - -#navigation -{ - float: left; - width: 18em; - margin: 0; - vertical-align: top; - background-color: #f0f0f0; - overflow:visible; -} - -#navigation h1 { - background-color:#e7e7e7; - font-size:1.1em; - color:#000000; - text-align:left; - margin:0px; - padding:0.2em; - border-top:1px solid #dddddd; - border-bottom:1px solid #dddddd; -} - -#navigation ul -{ - font-size:1em; - list-style-type: none; - padding: 0; - margin: 1px; -} - -#navigation li -{ - text-indent: -1em; - margin: 0em 0em 0em 0.5em; - display: block; - padding: 3px 0px 0px 12px; -} - -#navigation li li a -{ - padding: 0px 3px 0px -1em; -} - -#content -{ - margin-left: 18em; - padding: 1em; - border-left: 2px solid #cccccc; - border-right: 2px solid #cccccc; - background-color: #ffffff; -} - -#about -{ - clear: both; - margin: 0; - padding: 5px; - border-top: 2px solid #cccccc; - background-color: #ffffff; -} - -@media print { - body { - font: 12pt "Times New Roman", "TimeNR", Times, serif; - } - a { font-weight:bold; color: #004080; text-decoration: underline; } - - #main { background-color: #ffffff; border-left: 0px; } - #container { margin-left: 2%; margin-right: 2%; background-color: #ffffff; } - - #content { margin-left: 0px; padding: 1em; border-left: 0px; border-right: 0px; background-color: #ffffff; } - - #navigation { display: none; - } - pre.example { - font-family: "Andale Mono", monospace; - font-size: 10pt; - page-break-inside: avoid; - } -} - -table.module_list td -{ - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.module_list td.name { background-color: #f0f0f0; } -table.module_list td.summary { width: 100%; } - -table.file_list -{ - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.file_list td -{ - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.file_list td.name { background-color: #f0f0f0; } -table.file_list td.summary { width: 100%; } - - -table.function_list -{ - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.function_list td -{ - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.function_list td.name { background-color: #f0f0f0; } -table.function_list td.summary { width: 100%; } - - -table.table_list -{ - border-width: 1px; - border-style: solid; - border-color: #cccccc; - border-collapse: collapse; -} -table.table_list td -{ - border-width: 1px; - padding: 3px; - border-style: solid; - border-color: #cccccc; -} -table.table_list td.name { background-color: #f0f0f0; } -table.table_list td.summary { width: 100%; } - -dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;} -dl.function dd {padding: 0.5em 0;} -dl.function h3 {margin: 0; font-size: medium;} - -dl.table dt {border-top: 1px solid #ccc; padding-top: 1em;} -dl.table dd {padding-bottom: 1em;} -dl.table h3 {padding: 0; margin: 0; font-size: medium;} - -#TODO: make module_list, file_list, function_list, table_list inherit from a list - diff --git a/package/luci/documentation/api/modules/luci.dispatcher.html b/package/luci/documentation/api/modules/luci.dispatcher.html deleted file mode 100644 index 4ae88fe612..0000000000 --- a/package/luci/documentation/api/modules/luci.dispatcher.html +++ /dev/null @@ -1,1151 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.dispatcher

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _ () - -No-op function used to mark translation entries for menu labels.
    alias (...) - -Create a redirect to another dispatching node.
    arcombine (trg1, trg2) - -Create a combined dispatching target for non argv and argv requests.
    assign (path, clone, title, order) - -Clone a node of the dispatching tree to another position.
    build_url (...) - -Build the URL relative to the server webroot from given virtual path.
    call (name, ...) - -Create a function-call dispatching target.
    cbi (model) - -Create a CBI model dispatching target.
    createindex () - -Generate the dispatching index using the native file-cache based strategy.
    createtree () - -Create the dispatching tree from the index.
    dispatch (request) - -Dispatches a LuCI virtual path.
    entry (path, target, title, order) - -Create a new dispatching node and define common parameters.
    error404 (message) - -Send a 404 error code and render the "error404" template if available.
    error500 (message) - -Send a 500 error code and render the "error500" template if available.
    firstchild () - -Alias the first (lowest order) page automatically - -
    form (model) - -Create a CBI form model dispatching target.
    get (...) - -Fetch or create a dispatching node without setting the target module or - -enabling the node.
    httpdispatch (request) - -Dispatch an HTTP request.
    modifier (func, order) - -Register a tree modifier.
    node (...) - -Fetch or create a new dispatching node.
    node_childs (node) - -Return a sorted table of visible childs within a given node -
    node_visible (node) - -Check whether a dispatch node shall be visible -
    rewrite (n, ...) - -Rewrite the first x path values of the request.
    template (name) - -Create a template render dispatching target.
    translate (text) - -Access the luci.i18n translate() api.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    _ ()
    -
    - - -No-op function used to mark translation entries for menu labels. - -This function does not actually translate the given argument but -is used by build/i18n-scan.pl to find translatable entries. - - - - - - - - - - -
    - - - - -
    alias (...)
    -
    - - -Create a redirect to another dispatching node. - - - -

    Parameters

    -
      - -
    • - ...: Virtual path destination -
    • - -
    - - - - - - - - -
    - - - - -
    arcombine (trg1, trg2)
    -
    - - -Create a combined dispatching target for non argv and argv requests. - - - -

    Parameters

    -
      - -
    • - trg1: Overview Target -
    • - -
    • - trg2: Detail Target -
    • - -
    - - - - - - - - -
    - - - - -
    assign (path, clone, title, order)
    -
    - - -Clone a node of the dispatching tree to another position. - - - -

    Parameters

    -
      - -
    • - path: Virtual path destination -
    • - -
    • - clone: Virtual path source -
    • - -
    • - title: Destination node title (optional) -
    • - -
    • - order: Destination node order value (optional) -
    • - -
    - - - - - - -

    Return value:

    -Dispatching tree node - - - -
    - - - - -
    build_url (...)
    -
    - - -Build the URL relative to the server webroot from given virtual path. - - - -

    Parameters

    -
      - -
    • - ...: Virtual path -
    • - -
    - - - - - - -

    Return value:

    -Relative URL - - - -
    - - - - -
    call (name, ...)
    -
    - - -Create a function-call dispatching target. - - - -

    Parameters

    -
      - -
    • - name: Target function of local controller -
    • - -
    • - ...: Additional parameters passed to the function -
    • - -
    - - - - - - - - -
    - - - - -
    cbi (model)
    -
    - - -Create a CBI model dispatching target. - - - -

    Parameters

    -
      - -
    • - model: CBI model to be rendered -
    • - -
    - - - - - - - - -
    - - - - -
    createindex ()
    -
    - - -Generate the dispatching index using the native file-cache based strategy. - - - - - - - - - - - -
    - - - - -
    createtree ()
    -
    - - -Create the dispatching tree from the index. - -Build the index before if it does not exist yet. - - - - - - - - - - -
    - - - - -
    dispatch (request)
    -
    - - -Dispatches a LuCI virtual path. - - - -

    Parameters

    -
      - -
    • - request: Virtual path -
    • - -
    - - - - - - - - -
    - - - - -
    entry (path, target, title, order)
    -
    - - -Create a new dispatching node and define common parameters. - - - -

    Parameters

    -
      - -
    • - path: Virtual path -
    • - -
    • - target: Target function to call when dispatched. -
    • - -
    • - title: Destination node title -
    • - -
    • - order: Destination node order value (optional) -
    • - -
    - - - - - - -

    Return value:

    -Dispatching tree node - - - -
    - - - - -
    error404 (message)
    -
    - - -Send a 404 error code and render the "error404" template if available. - - - -

    Parameters

    -
      - -
    • - message: Custom error message (optional) -
    • - -
    - - - - - - -

    Return value:

    -false - - - -
    - - - - -
    error500 (message)
    -
    - - -Send a 500 error code and render the "error500" template if available. - - - -

    Parameters

    -
      - -
    • - message: Custom error message (optional)# -
    • - -
    - - - - - - -

    Return value:

    -false - - - -
    - - - - -
    firstchild ()
    -
    - - -Alias the first (lowest order) page automatically - - - - - - - - - - - -
    - - - - -
    form (model)
    -
    - - -Create a CBI form model dispatching target. - - - -

    Parameters

    -
      - -
    • - model: CBI form model tpo be rendered -
    • - -
    - - - - - - - - -
    - - - - -
    get (...)
    -
    - - -Fetch or create a dispatching node without setting the target module or - -enabling the node. - - -

    Parameters

    -
      - -
    • - ...: Virtual path -
    • - -
    - - - - - - -

    Return value:

    -Dispatching tree node - - - -
    - - - - -
    httpdispatch (request)
    -
    - - -Dispatch an HTTP request. - - - -

    Parameters

    -
      - -
    • - request: LuCI HTTP Request object -
    • - -
    - - - - - - - - -
    - - - - -
    modifier (func, order)
    -
    - - -Register a tree modifier. - - - -

    Parameters

    -
      - -
    • - func: Modifier function -
    • - -
    • - order: Modifier order value (optional) -
    • - -
    - - - - - - - - -
    - - - - -
    node (...)
    -
    - - -Fetch or create a new dispatching node. - - - -

    Parameters

    -
      - -
    • - ...: Virtual path -
    • - -
    - - - - - - -

    Return value:

    -Dispatching tree node - - - -
    - - - - -
    node_childs (node)
    -
    - - -Return a sorted table of visible childs within a given node - - - -

    Parameters

    -
      - -
    • - node: Dispatch node -
    • - -
    - - - - - - -

    Return value:

    -Ordered table of child node names - - - -
    - - - - -
    node_visible (node)
    -
    - - -Check whether a dispatch node shall be visible - - - -

    Parameters

    -
      - -
    • - node: Dispatch node -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating whether the node should be visible - - - -
    - - - - -
    rewrite (n, ...)
    -
    - - -Rewrite the first x path values of the request. - - - -

    Parameters

    -
      - -
    • - n: Number of path values to replace -
    • - -
    • - ...: Virtual path to replace removed path values with -
    • - -
    - - - - - - - - -
    - - - - -
    template (name)
    -
    - - -Create a template render dispatching target. - - - -

    Parameters

    -
      - -
    • - name: Template to be rendered -
    • - -
    - - - - - - - - -
    - - - - -
    translate (text)
    -
    - - -Access the luci.i18n translate() api. - - - -

    Parameters

    -
      - -
    • - text: Text to translate -
    • - -
    - - - - - - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.http.html b/package/luci/documentation/api/modules/luci.http.html deleted file mode 100644 index ea04fc236e..0000000000 --- a/package/luci/documentation/api/modules/luci.http.html +++ /dev/null @@ -1,854 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.http

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    build_querystring (table) - -Create a querystring out of a table of key - value pairs.
    close () - -Close the HTTP-Connection.
    content () - -Return the request content if the request was of unknown type.
    formvalue (name, noparse) - -Get a certain HTTP input value or a table of all input values.
    formvaluetable (prefix) - -Get a table of all HTTP input values with a certain prefix.
    getcookie (name) - -Get the value of a certain HTTP-Cookie.
    getenv (name) - -Get the value of a certain HTTP environment variable - -or the environment table itself.
    header (key, value) - -Send a HTTP-Header.
    prepare_content (mime) - -Set the mime type of following content data.
    redirect (url) - -Redirects the client to a new URL and closes the connection.
    setfilehandler (callback) - -Set a handler function for incoming user file uploads.
    source () - -Get the RAW HTTP input source -
    splice (fp, size) - -Splice data from a filedescriptor to the client.
    status (code, message) - -Set the HTTP status code and status message.
    write (content, src_err) - -Send a chunk of content data to the client.
    write_json (data) - -Send the given data as JSON encoded string.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    build_querystring (table)
    -
    - - -Create a querystring out of a table of key - value pairs. - - - -

    Parameters

    -
      - -
    • - table: Query string source table -
    • - -
    - - - - - - -

    Return value:

    -Encoded HTTP query string - - - -
    - - - - -
    close ()
    -
    - - -Close the HTTP-Connection. - - - - - - - - - - - -
    - - - - -
    content ()
    -
    - - -Return the request content if the request was of unknown type. - - - - - - - - -

    Return values:

    -
      - -
    1. HTTP request body - -
    2. HTTP request body length - -
    - - - -
    - - - - -
    formvalue (name, noparse)
    -
    - - -Get a certain HTTP input value or a table of all input values. - - - -

    Parameters

    -
      - -
    • - name: Name of the GET or POST variable to fetch -
    • - -
    • - noparse: Don't parse POST data before getting the value -
    • - -
    - - - - - - -

    Return value:

    -HTTP input value or table of all input value - - - -
    - - - - -
    formvaluetable (prefix)
    -
    - - -Get a table of all HTTP input values with a certain prefix. - - - -

    Parameters

    -
      - -
    • - prefix: Prefix -
    • - -
    - - - - - - -

    Return value:

    -Table of all HTTP input values with given prefix - - - -
    - - - - -
    getcookie (name)
    -
    - - -Get the value of a certain HTTP-Cookie. - - - -

    Parameters

    -
      - -
    • - name: Cookie Name -
    • - -
    - - - - - - -

    Return value:

    -String containing cookie data - - - -
    - - - - -
    getenv (name)
    -
    - - -Get the value of a certain HTTP environment variable - -or the environment table itself. - - -

    Parameters

    -
      - -
    • - name: Environment variable -
    • - -
    - - - - - - -

    Return value:

    -HTTP environment value or environment table - - - -
    - - - - -
    header (key, value)
    -
    - - -Send a HTTP-Header. - - - -

    Parameters

    -
      - -
    • - key: Header key -
    • - -
    • - value: Header value -
    • - -
    - - - - - - - - -
    - - - - -
    prepare_content (mime)
    -
    - - -Set the mime type of following content data. - - - -

    Parameters

    -
      - -
    • - mime: Mimetype of following content -
    • - -
    - - - - - - - - -
    - - - - -
    redirect (url)
    -
    - - -Redirects the client to a new URL and closes the connection. - - - -

    Parameters

    -
      - -
    • - url: Target URL -
    • - -
    - - - - - - - - -
    - - - - -
    setfilehandler (callback)
    -
    - - -Set a handler function for incoming user file uploads. - - - -

    Parameters

    -
      - -
    • - callback: Handler function -
    • - -
    - - - - - - - - -
    - - - - -
    source ()
    -
    - - -Get the RAW HTTP input source - - - - - - - - -

    Return value:

    -HTTP LTN12 source - - - -
    - - - - -
    splice (fp, size)
    -
    - - -Splice data from a filedescriptor to the client. - - - -

    Parameters

    -
      - -
    • - fp: File descriptor -
    • - -
    • - size: Bytes to splice (optional) -
    • - -
    - - - - - - - - -
    - - - - -
    status (code, message)
    -
    - - -Set the HTTP status code and status message. - - - -

    Parameters

    -
      - -
    • - code: Status code -
    • - -
    • - message: Status message -
    • - -
    - - - - - - - - -
    - - - - -
    write (content, src_err)
    -
    - - -Send a chunk of content data to the client. - -This function is as a valid LTN12 sink. -If the content chunk is nil this function will automatically invoke close. - - -

    Parameters

    -
      - -
    • - content: Content chunk -
    • - -
    • - src_err: Error object from source (optional) -
    • - -
    - - - - - - - - -

    See also:

    - - -
    - - - - -
    write_json (data)
    -
    - - -Send the given data as JSON encoded string. - - - -

    Parameters

    -
      - -
    • - data: Data to send -
    • - -
    - - - - - - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.http.protocol.conditionals.html b/package/luci/documentation/api/modules/luci.http.protocol.conditionals.html deleted file mode 100644 index 9728815402..0000000000 --- a/package/luci/documentation/api/modules/luci.http.protocol.conditionals.html +++ /dev/null @@ -1,556 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.http.protocol.conditionals

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    if_match (req, stat) - -14.24 / If-Match - -Test whether the given message object contains an "If-Match" header and -compare it against the given stat object.
    if_modified_since (req, stat) - -14.25 / If-Modified-Since - -Test whether the given message object contains an "If-Modified-Since" header -and compare it against the given stat object.
    if_none_match (req, stat) - -14.26 / If-None-Match - -Test whether the given message object contains an "If-None-Match" header and -compare it against the given stat object.
    if_range (req, stat) - -14.27 / If-Range - -The If-Range header is currently not implemented due to the lack of general -byte range stuff in luci.http.protocol .
    if_unmodified_since (req, stat) - -14.28 / If-Unmodified-Since - -Test whether the given message object contains an "If-Unmodified-Since" -header and compare it against the given stat object.
    mk_etag (stat) - -Implement 14.19 / ETag.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    if_match (req, stat)
    -
    - - -14.24 / If-Match - -Test whether the given message object contains an "If-Match" header and -compare it against the given stat object. - - -

    Parameters

    -
      - -
    • - req: HTTP request message object -
    • - -
    • - stat: A file.stat object -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating whether the precondition is ok - -
    2. Alternative status code if the precondition failed - -
    - - - -
    - - - - -
    if_modified_since (req, stat)
    -
    - - -14.25 / If-Modified-Since - -Test whether the given message object contains an "If-Modified-Since" header -and compare it against the given stat object. - - -

    Parameters

    -
      - -
    • - req: HTTP request message object -
    • - -
    • - stat: A file.stat object -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating whether the precondition is ok - -
    2. Alternative status code if the precondition failed - -
    3. Table containing extra HTTP headers if the precondition failed - -
    - - - -
    - - - - -
    if_none_match (req, stat)
    -
    - - -14.26 / If-None-Match - -Test whether the given message object contains an "If-None-Match" header and -compare it against the given stat object. - - -

    Parameters

    -
      - -
    • - req: HTTP request message object -
    • - -
    • - stat: A file.stat object -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating whether the precondition is ok - -
    2. Alternative status code if the precondition failed - -
    3. Table containing extra HTTP headers if the precondition failed - -
    - - - -
    - - - - -
    if_range (req, stat)
    -
    - - -14.27 / If-Range - -The If-Range header is currently not implemented due to the lack of general -byte range stuff in luci.http.protocol . This function will always return -false, 412 to indicate a failed precondition. - - -

    Parameters

    -
      - -
    • - req: HTTP request message object -
    • - -
    • - stat: A file.stat object -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating whether the precondition is ok - -
    2. Alternative status code if the precondition failed - -
    - - - -
    - - - - -
    if_unmodified_since (req, stat)
    -
    - - -14.28 / If-Unmodified-Since - -Test whether the given message object contains an "If-Unmodified-Since" -header and compare it against the given stat object. - - -

    Parameters

    -
      - -
    • - req: HTTP request message object -
    • - -
    • - stat: A file.stat object -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating whether the precondition is ok - -
    2. Alternative status code if the precondition failed - -
    - - - -
    - - - - -
    mk_etag (stat)
    -
    - - -Implement 14.19 / ETag. - - - -

    Parameters

    -
      - -
    • - stat: A file.stat structure -
    • - -
    - - - - - - -

    Return value:

    -String containing the generated tag suitable for ETag headers - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.http.protocol.date.html b/package/luci/documentation/api/modules/luci.http.protocol.date.html deleted file mode 100644 index d89a72302e..0000000000 --- a/package/luci/documentation/api/modules/luci.http.protocol.date.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.http.protocol.date

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - -
    compare (d1, d2) - -Compare two dates which can either be unix epoch times or HTTP date strings.
    to_http (time) - -Convert the given unix epoch time to valid HTTP date string.
    to_unix (data) - -Parse given HTTP date string and convert it to unix epoch time.
    tz_offset (tz) - -Return the time offset in seconds between the UTC and given time zone.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    compare (d1, d2)
    -
    - - -Compare two dates which can either be unix epoch times or HTTP date strings. - - - -

    Parameters

    -
      - -
    • - d1: The first date or epoch time to compare -
    • - -
    • - d2: The first date or epoch time to compare -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. -1 - if d1 is lower then d2 - -
    2. 0 - if both dates are equal - -
    3. 1 - if d1 is higher then d2 - -
    - - - -
    - - - - -
    to_http (time)
    -
    - - -Convert the given unix epoch time to valid HTTP date string. - - - -

    Parameters

    -
      - -
    • - time: Unix epoch time -
    • - -
    - - - - - - -

    Return value:

    -String containing the formatted date - - - -
    - - - - -
    to_unix (data)
    -
    - - -Parse given HTTP date string and convert it to unix epoch time. - - - -

    Parameters

    -
      - -
    • - data: String containing the date -
    • - -
    - - - - - - -

    Return value:

    -Unix epoch time - - - -
    - - - - -
    tz_offset (tz)
    -
    - - -Return the time offset in seconds between the UTC and given time zone. - - - -

    Parameters

    -
      - -
    • - tz: Symbolic or numeric timezone specifier -
    • - -
    - - - - - - -

    Return value:

    -Time offset to UTC in seconds - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.http.protocol.html b/package/luci/documentation/api/modules/luci.http.protocol.html deleted file mode 100644 index 57063bbcf9..0000000000 --- a/package/luci/documentation/api/modules/luci.http.protocol.html +++ /dev/null @@ -1,753 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.http.protocol

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    header_source (sock) - -Creates a ltn12 source from the given socket.
    mimedecode_message_body (src, msg, filecb) - -Decode a mime encoded http message body with multipart/form-data - -Content-Type.
    parse_message_body (src, msg, filecb) - -Try to extract and decode a http message body from the given ltn12 source.
    parse_message_header (src) - -Try to extract an http message header including information like protocol - -version, message headers and resulting CGI environment variables from the -given ltn12 source.
    urldecode (str, no_plus) - -Decode an urlencoded string - optionally without decoding - -the "+" sign to " " - and return the decoded string.
    urldecode_message_body (src, msg) - -Decode an urlencoded http message body with application/x-www-urlencoded - -Content-Type.
    urldecode_params (url, tbl) - -Extract and split urlencoded data pairs, separated bei either "&" or ";" - -from given url or string.
    urlencode (str) - -Encode given string to x-www-urlencoded format.
    urlencode_params (tbl) - -Encode each key-value-pair in given table to x-www-urlencoded format, - -separated by "&".
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    header_source (sock)
    -
    - - -Creates a ltn12 source from the given socket. The source will return it's - -data line by line with the trailing \r\n stripped of. - - -

    Parameters

    -
      - -
    • - sock: Readable network socket -
    • - -
    - - - - - - -

    Return value:

    -Ltn12 source function - - - -
    - - - - -
    mimedecode_message_body (src, msg, filecb)
    -
    - - -Decode a mime encoded http message body with multipart/form-data - -Content-Type. Stores all extracted data associated with its parameter name -in the params table within the given message object. Multiple parameter -values are stored as tables, ordinary ones as strings. -If an optional file callback function is given then it is feeded with the -file contents chunk by chunk and only the extracted file name is stored -within the params table. The callback function will be called subsequently -with three arguments: - o Table containing decoded (name, file) and raw (headers) mime header data - o String value containing a chunk of the file data - o Boolean which indicates wheather the current chunk is the last one (eof) - - -

    Parameters

    -
      - -
    • - src: Ltn12 source function -
    • - -
    • - msg: HTTP message object -
    • - -
    • - filecb: File callback function (optional) -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Value indicating successful operation (not nil means "ok") - -
    2. String containing the error if unsuccessful - -
    - - - -

    See also:

    - - -
    - - - - -
    parse_message_body (src, msg, filecb)
    -
    - - -Try to extract and decode a http message body from the given ltn12 source. - -This function will examine the Content-Type within the given message object -to select the appropriate content decoder. -Currently the application/x-www-urlencoded and application/form-data -mime types are supported. If the encountered content encoding can't be -handled then the whole message body will be stored unaltered as "content" -property within the given message object. - - -

    Parameters

    -
      - -
    • - src: Ltn12 source function -
    • - -
    • - msg: HTTP message object -
    • - -
    • - filecb: File data callback (optional, see mimedecode_message_body()) -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Value indicating successful operation (not nil means "ok") - -
    2. String containing the error if unsuccessful - -
    - - - -

    See also:

    - - -
    - - - - -
    parse_message_header (src)
    -
    - - -Try to extract an http message header including information like protocol - -version, message headers and resulting CGI environment variables from the -given ltn12 source. - - -

    Parameters

    -
      - -
    • - src: Ltn12 source function -
    • - -
    - - - - - - -

    Return value:

    -HTTP message object - - - -

    See also:

    - - -
    - - - - -
    urldecode (str, no_plus)
    -
    - - -Decode an urlencoded string - optionally without decoding - -the "+" sign to " " - and return the decoded string. - - -

    Parameters

    -
      - -
    • - str: Input string in x-www-urlencoded format -
    • - -
    • - no_plus: Don't decode "+" signs to spaces -
    • - -
    - - - - - - -

    Return value:

    -The decoded string - - - -

    See also:

    - - -
    - - - - -
    urldecode_message_body (src, msg)
    -
    - - -Decode an urlencoded http message body with application/x-www-urlencoded - -Content-Type. Stores all extracted data associated with its parameter name -in the params table within the given message object. Multiple parameter -values are stored as tables, ordinary ones as strings. - - -

    Parameters

    -
      - -
    • - src: Ltn12 source function -
    • - -
    • - msg: HTTP message object -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Value indicating successful operation (not nil means "ok") - -
    2. String containing the error if unsuccessful - -
    - - - -

    See also:

    - - -
    - - - - -
    urldecode_params (url, tbl)
    -
    - - -Extract and split urlencoded data pairs, separated bei either "&" or ";" - -from given url or string. Returns a table with urldecoded values. -Simple parameters are stored as string values associated with the parameter -name within the table. Parameters with multiple values are stored as array -containing the corresponding values. - - -

    Parameters

    -
      - -
    • - url: The url or string which contains x-www-urlencoded form data -
    • - -
    • - tbl: Use the given table for storing values (optional) -
    • - -
    - - - - - - -

    Return value:

    -Table containing the urldecoded parameters - - - -

    See also:

    - - -
    - - - - -
    urlencode (str)
    -
    - - -Encode given string to x-www-urlencoded format. - - - -

    Parameters

    -
      - -
    • - str: String to encode -
    • - -
    - - - - - - -

    Return value:

    -String containing the encoded data - - - -

    See also:

    - - -
    - - - - -
    urlencode_params (tbl)
    -
    - - -Encode each key-value-pair in given table to x-www-urlencoded format, - -separated by "&". Tables are encoded as parameters with multiple values by -repeating the parameter name with each value. - - -

    Parameters

    -
      - -
    • - tbl: Table with the values -
    • - -
    - - - - - - -

    Return value:

    -String containing encoded values - - - -

    See also:

    - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.http.protocol.mime.html b/package/luci/documentation/api/modules/luci.http.protocol.mime.html deleted file mode 100644 index 0b5ce0c0c5..0000000000 --- a/package/luci/documentation/api/modules/luci.http.protocol.mime.html +++ /dev/null @@ -1,326 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.http.protocol.mime

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - -
    to_ext (mimetype) - -Return corresponding extension for a given mime type or nil if the - -given mime-type is unknown.
    to_mime (filename) - -Extract extension from a filename and return corresponding mime-type or - -"application/octet-stream" if the extension is unknown.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    to_ext (mimetype)
    -
    - - -Return corresponding extension for a given mime type or nil if the - -given mime-type is unknown. - - -

    Parameters

    -
      - -
    • - mimetype: The mimetype to retrieve the extension from -
    • - -
    - - - - - - -

    Return value:

    -String with the extension or nil for unknown type - - - -
    - - - - -
    to_mime (filename)
    -
    - - -Extract extension from a filename and return corresponding mime-type or - -"application/octet-stream" if the extension is unknown. - - -

    Parameters

    -
      - -
    • - filename: The filename for which the mime type is guessed -
    • - -
    - - - - - - -

    Return value:

    -String containign the determined mime type - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.i18n.html b/package/luci/documentation/api/modules/luci.i18n.html deleted file mode 100644 index 0111cb200f..0000000000 --- a/package/luci/documentation/api/modules/luci.i18n.html +++ /dev/null @@ -1,564 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.i18n

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    clear () - -Clear the translation table.
    load (file, lang, force) - -Load a translation and copy its data into the translation table.
    loadc (file, force) - -Load a translation file using the default translation language.
    setlanguage (lang) - -Set the context default translation language.
    string (key) - -Return the translated value for a specific translation key - -and ensure that the returned value is a Lua string value.
    stringf (key, ...) - -Return the translated value for a specific translation key and use it as sprintf pattern.
    translate (key) - -Return the translated value for a specific translation key.
    translatef (key, ...) - -Return the translated value for a specific translation key and use it as sprintf pattern.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    clear ()
    -
    - - -Clear the translation table. - - - - - - - - - - - -
    - - - - -
    load (file, lang, force)
    -
    - - -Load a translation and copy its data into the translation table. - - - -

    Parameters

    -
      - -
    • - file: Language file -
    • - -
    • - lang: Two-letter language code -
    • - -
    • - force: Force reload even if already loaded (optional) -
    • - -
    - - - - - - -

    Return value:

    -Success status - - - -
    - - - - -
    loadc (file, force)
    -
    - - -Load a translation file using the default translation language. - -Alternatively load the translation of the fallback language. - - -

    Parameters

    -
      - -
    • - file: Language file -
    • - -
    • - force: Force reload even if already loaded (optional) -
    • - -
    - - - - - - - - -
    - - - - -
    setlanguage (lang)
    -
    - - -Set the context default translation language. - - - -

    Parameters

    -
      - -
    • - lang: Two-letter language code -
    • - -
    - - - - - - - - -
    - - - - -
    string (key)
    -
    - - -Return the translated value for a specific translation key - -and ensure that the returned value is a Lua string value. -This is the same as calling tostring(translate(...)) - - -

    Parameters

    -
      - -
    • - key: Default translation text -
    • - -
    - - - - - - -

    Return value:

    -Translated string - - - -
    - - - - -
    stringf (key, ...)
    -
    - - -Return the translated value for a specific translation key and use it as sprintf pattern. - -Ensure that the returned value is a Lua string value. -This is the same as calling tostring(translatef(...)) - - -

    Parameters

    -
      - -
    • - key: Default translation text -
    • - -
    • - ...: Format parameters -
    • - -
    - - - - - - -

    Return value:

    -Translated and formatted string - - - -
    - - - - -
    translate (key)
    -
    - - -Return the translated value for a specific translation key. - - - -

    Parameters

    -
      - -
    • - key: Default translation text -
    • - -
    - - - - - - -

    Return value:

    -Translated string - - - -
    - - - - -
    translatef (key, ...)
    -
    - - -Return the translated value for a specific translation key and use it as sprintf pattern. - - - -

    Parameters

    -
      - -
    • - key: Default translation text -
    • - -
    • - ...: Format parameters -
    • - -
    - - - - - - -

    Return value:

    -Translated and formatted string - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.ip.cidr.html b/package/luci/documentation/api/modules/luci.ip.cidr.html deleted file mode 100644 index ce8c567952..0000000000 --- a/package/luci/documentation/api/modules/luci.ip.cidr.html +++ /dev/null @@ -1,1269 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance luci.ip.cidr

    - -

    - IP CIDR Object. - Represents an IPv4 or IPv6 address range.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    cidr:is4 () - -Checks whether the CIDR instance is an IPv4 address range -
    cidr:is4rfc1918 () - -Checks whether the CIDR instance is within the private RFC1918 address space -
    cidr:is4linklocal () - -Checks whether the CIDR instance is an IPv4 link local (Zeroconf) address -
    cidr:is6 () - -Checks whether the CIDR instance is an IPv6 address range -
    cidr:is6linklocal () - -Checks whether the CIDR instance is an IPv6 link local address -
    cidr:is6mapped4 () - -Checks whether the CIDR instance is an IPv6 mapped IPv4 address -
    cidr:lower (addr) - -Checks whether this CIDR instance is lower than the given argument.
    cidr:higher (addr) - -Checks whether this CIDR instance is higher than the given argument.
    cidr:equal (addr) - -Checks whether this CIDR instance is equal to the given argument.
    cidr:prefix (mask) - -Get or set prefix size of CIDR instance.
    cidr:network (mask) - -Derive network address of CIDR instance.
    cidr:host () - -Derive host address of CIDR instance.
    cidr:mask (mask) - -Derive netmask of CIDR instance.
    cidr:broadcast (mask) - -Derive broadcast address of CIDR instance.
    cidr:mapped4 () - -Derive mapped IPv4 address of CIDR instance.
    cidr:contains (addr) - -Test whether CIDR contains given range.
    cidr:add (amount, inplace) - -Add given amount to CIDR instance.
    cidr:sub (amount, inplace) - -Subtract given amount from CIDR instance.
    cidr:minhost () - -Calculate the lowest possible host address within this CIDR instance.
    cidr:maxhost () - -Calculate the highest possible host address within this CIDR instance.
    cidr:string () - -Convert CIDR instance into string representation.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    cidr:is4 ()
    -
    - - -Checks whether the CIDR instance is an IPv4 address range - - - - - - - - -

    Return value:

    -true if the CIDR is an IPv4 range, else false - - - -

    See also:

    - - -
    - - - - -
    cidr:is4rfc1918 ()
    -
    - - -Checks whether the CIDR instance is within the private RFC1918 address space - - - - - - -

    Usage:

    -
    local addr = luci.ip.new("192.168.45.2/24") 
    -if addr:is4rfc1918() then 
    -	print("Is a private address") 
    -end
    - - - -

    Return value:

    -true if the entire range of this CIDR lies within one of - the ranges 10.0.0.0-10.255.255.255, - 172.16.0.0-172.31.0.0 or - 192.168.0.0-192.168.255.255, else false. - - - -
    - - - - -
    cidr:is4linklocal ()
    -
    - - -Checks whether the CIDR instance is an IPv4 link local (Zeroconf) address - - - - - - -

    Usage:

    -
    local addr = luci.ip.new("169.254.34.125") 
    -if addr:is4linklocal() then 
    -	print("Is a zeroconf address") 
    -end
    - - - -

    Return value:

    -true if the entire range of this CIDR lies within the range - the range 169.254.0.0-169.254.255.255, else false. - - - -
    - - - - -
    cidr:is6 ()
    -
    - - -Checks whether the CIDR instance is an IPv6 address range - - - - - - - - -

    Return value:

    -true if the CIDR is an IPv6 range, else false - - - -

    See also:

    - - -
    - - - - -
    cidr:is6linklocal ()
    -
    - - -Checks whether the CIDR instance is an IPv6 link local address - - - - - - -

    Usage:

    -
    local addr = luci.ip.new("fe92:53a:3216:af01:221:63ff:fe75:aa17/64") 
    -if addr:is6linklocal() then 
    -	print("Is a linklocal address") 
    -end
    - - - -

    Return value:

    -true if the entire range of this CIDR lies within the range - the fe80::/10 range, else false. - - - -
    - - - - -
    cidr:is6mapped4 ()
    -
    - - -Checks whether the CIDR instance is an IPv6 mapped IPv4 address - - - - - - -

    Usage:

    -
    local addr = luci.ip.new("::ffff:192.168.1.1") 
    -if addr:is6mapped4() then 
    -	print("Is a mapped IPv4 address") 
    -end
    - - - -

    Return value:

    -true if the address is an IPv6 mapped IPv4 address in the - form ::ffff:1.2.3.4. - - - -
    - - - - -
    cidr:lower (addr)
    -
    - - -Checks whether this CIDR instance is lower than the given argument. -The comparisation follows these rules: -
    • An IPv4 address is always lower than an IPv6 address
    • -
    • Prefix sizes are ignored
    - - - -

    Parameters

    -
      - -
    • - addr: A luci.ip.cidr instance or a string convertable by - luci.ip.new() to compare against. -
    • - -
    - - - - -

    Usage:

    -
    local addr = luci.ip.new("192.168.1.1") 
    -print(addr:lower(addr)) -- false 
    -print(addr:lower("10.10.10.10/24")) -- false 
    -print(addr:lower(luci.ip.new("::1"))) -- true 
    -print(addr:lower(luci.ip.new("192.168.200.1"))) -- true
    - - - -

    Return value:

    -true if this CIDR is lower than the given address, - else false. - - - -

    See also:

    - - -
    - - - - -
    cidr:higher (addr)
    -
    - - -Checks whether this CIDR instance is higher than the given argument. -The comparisation follows these rules: -
    • An IPv4 address is always lower than an IPv6 address
    • -
    • Prefix sizes are ignored
    - - - -

    Parameters

    -
      - -
    • - addr: A luci.ip.cidr instance or a string convertable by - luci.ip.new() to compare against. -
    • - -
    - - - - -

    Usage:

    -
    local addr = luci.ip.new("192.168.1.1") 
    -print(addr:higher(addr)) -- false 
    -print(addr:higher("10.10.10.10/24")) -- true 
    -print(addr:higher(luci.ip.new("::1"))) -- false 
    -print(addr:higher(luci.ip.new("192.168.200.1"))) -- false
    - - - -

    Return value:

    -true if this CIDR is higher than the given address, - else false. - - - -

    See also:

    - - -
    - - - - -
    cidr:equal (addr)
    -
    - - -Checks whether this CIDR instance is equal to the given argument. - - - -

    Parameters

    -
      - -
    • - addr: A luci.ip.cidr instance or a string convertable by - luci.ip.new() to compare against. -
    • - -
    - - - - -

    Usage:

    -
    local addr = luci.ip.new("192.168.1.1") 
    -print(addr:equal(addr)) -- true 
    -print(addr:equal("192.168.1.1")) -- true 
    -print(addr:equal(luci.ip.new("::1"))) -- false 
    - 
    -local addr6 = luci.ip.new("::1") 
    -print(addr6:equal("0:0:0:0:0:0:0:1/64")) -- true 
    -print(addr6:equal(luci.ip.new("fe80::221:63ff:fe75:aa17"))) -- false
    - - - -

    Return value:

    -true if this CIDR is equal to the given address, - else false. - - - -

    See also:

    - - -
    - - - - -
    cidr:prefix (mask)
    -
    - - -Get or set prefix size of CIDR instance. -If the optional mask parameter is given, the prefix size of this CIDR is altered -else the current prefix size is returned. - - - -

    Parameters

    -
      - -
    • - mask: Either a number containing the number of bits (0..32 - for IPv4, 0..128 for IPv6) or a string containing a valid - netmask (optional) -
    • - -
    - - - - -

    Usage:

    -
    local range = luci.ip.new("192.168.1.1/255.255.255.0") 
    -print(range:prefix()) -- 24 
    - 
    -range:prefix(16) 
    -print(range:prefix()) -- 16 
    - 
    -range:prefix("255.255.255.255") 
    -print(range:prefix()) -- 32
    - - - -

    Return value:

    -Bit count of the current prefix size - - - -
    - - - - -
    cidr:network (mask)
    -
    - - -Derive network address of CIDR instance. - -Returns a new CIDR instance representing the network address of this instance -with all host parts masked out. The used prefix size can be overridden by the -optional mask parameter. - - - -

    Parameters

    -
      - -
    • - mask: Either a number containing the number of bits (0..32 - for IPv4, 0..128 for IPv6) or a string containing a valid - netmask (optional) -
    • - -
    - - - - -

    Usage:

    -
    local range = luci.ip.new("192.168.62.243/255.255.0.0") 
    -print(range:network())                -- "192.168.0.0" 
    -print(range:network(24))              -- "192.168.62.0" 
    -print(range:network("255.255.255.0")) -- "192.168.62.0" 
    - 
    -local range6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64") 
    -print(range6:network())               -- "fd9b:62b3:9cc5::"
    - - - -

    Return value:

    -CIDR instance representing the network address - - - -
    - - - - -
    cidr:host ()
    -
    - - -Derive host address of CIDR instance. - -This function essentially constructs a copy of this CIDR with the prefix size -set to 32 for IPv4 and 128 for IPv6. - - - - - - -

    Usage:

    -
    local range = luci.ip.new("172.19.37.45/16") 
    -print(range)        -- "172.19.37.45/16" 
    -print(range:host()) -- "172.19.37.45"
    - - - -

    Return value:

    -CIDR instance representing the host address - - - -
    - - - - -
    cidr:mask (mask)
    -
    - - -Derive netmask of CIDR instance. - -Constructs a CIDR instance representing the netmask of this instance. The used -prefix size can be overridden by the optional mask parameter. - - - -

    Parameters

    -
      - -
    • - mask: Either a number containing the number of bits (0..32 - for IPv4, 0..128 for IPv6) or a string containing a valid - netmask (optional) -
    • - -
    - - - - -

    Usage:

    -
    local range = luci.ip.new("172.19.37.45/16") 
    -print(range:mask())            -- "255.255.0.0" 
    -print(range:mask(24))          -- "255.255.255.0" 
    -print(range:mask("255.0.0.0")) -- "255.0.0.0"
    - - - -

    Return value:

    -CIDR instance representing the netmask - - - -
    - - - - -
    cidr:broadcast (mask)
    -
    - - -Derive broadcast address of CIDR instance. - -Constructs a CIDR instance representing the broadcast address of this instance. -The used prefix size can be overridden by the optional mask parameter. - -This function has no effect on IPv6 instances, it will return nothing in this -case. - - - -

    Parameters

    -
      - -
    • - mask: Either a number containing the number of bits (0..32 - for IPv4, 0..128 for IPv6) or a string containing a valid - netmask (optional) -
    • - -
    - - - - -

    Usage:

    -
    local range = luci.ip.new("172.19.37.45/16") 
    -print(range:broadcast())            -- "172.19.255.255" 
    -print(range:broadcast(24))          -- "172.19.37.255" 
    -print(range:broadcast("255.0.0.0")) -- "172.255.255.255"
    - - - -

    Return value:

    -Return a new CIDR instance representing the broadcast address if this - instance is an IPv4 range, else return nothing. - - - -
    - - - - -
    cidr:mapped4 ()
    -
    - - -Derive mapped IPv4 address of CIDR instance. - -Constructs a CIDR instance representing the IPv4 address of the IPv6 mapped -IPv4 address in this instance. - -This function has no effect on IPv4 instances or IPv6 instances which are not a -mapped address, it will return nothing in this case. - - - - - - -

    Usage:

    -
    local addr = luci.ip.new("::ffff:172.16.19.1") 
    -print(addr:mapped4()) -- "172.16.19.1"
    - - - -

    Return value:

    -Return a new CIDR instance representing the IPv4 address if this - instance is an IPv6 mapped IPv4 address, else return nothing. - - - -
    - - - - -
    cidr:contains (addr)
    -
    - - -Test whether CIDR contains given range. - - - -

    Parameters

    -
      - -
    • - addr: A luci.ip.cidr instance or a string convertable by - luci.ip.new() to test. -
    • - -
    - - - - -

    Usage:

    -
    local range = luci.ip.new("10.24.0.0/255.255.0.0") 
    -print(range:contains("10.24.5.1"))  -- true 
    -print(range:contains("::1"))        -- false 
    -print(range:contains("10.0.0.0/8")) -- false 
    - 
    -local range6 = luci.ip.new("fe80::/10") 
    -print(range6:contains("fe80::221:63f:fe75:aa17/64"))         -- true 
    -print(range6:contains("fd9b:6b3:c5:0:221:63f:fe75:aa17/64")) -- false
    - - - -

    Return value:

    -true if this instance fully contains the given address else - false. - - - -
    - - - - -
    cidr:add (amount, inplace)
    -
    - - -Add given amount to CIDR instance. If the result would overflow the maximum -address space, the result is set to the highest possible address. - - - -

    Parameters

    -
      - -
    • - amount: A numeric value between 0 and 0xFFFFFFFF, a - luci.ip.cidr instance or a string convertable by - luci.ip.new(). -
    • - -
    • - inplace: If true, modify this instance instead of returning - a new derived CIDR instance. -
    • - -
    - - - - -

    Usage:

    -
    local addr = luci.ip.new("192.168.1.1/24") 
    -print(addr:add(250))         -- "192.168.1.251/24" 
    -print(addr:add("0.0.99.0"))  -- "192.168.100.1/24" 
    - 
    -addr:add(256, true)          -- true 
    -print(addr)                  -- "192.168.2.1/24 
    - 
    -addr:add("255.0.0.0", true)  -- false (overflow) 
    -print(addr)                  -- "255.255.255.255/24 
    - 
    -local addr6 = luci.ip.new("fe80::221:63f:fe75:aa17/64") 
    -print(addr6:add(256))        -- "fe80::221:63f:fe75:ab17/64" 
    -print(addr6:add("::ffff:0")) -- "fe80::221:640:fe74:aa17/64" 
    - 
    -addr:add(256, true)          -- true 
    -print(addr)                  -- "fe80::221:63f:fe75:ab17/64 
    - 
    -addr:add("ffff::", true)     -- false (overflow) 
    -print(addr)                  -- "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/64"
    - - - -

    Return value:

    -
      -
    • When adding inplace: Return true if the addition succeeded - or false when the addition overflowed.
    • -
    • When deriving new CIDR: Return new instance representing the value of - this instance plus the added amount or the highest possible address if - the addition overflowed the available address space.
    - - - -
    - - - - -
    cidr:sub (amount, inplace)
    -
    - - -Subtract given amount from CIDR instance. If the result would under, the lowest -possible address is returned. - - - -

    Parameters

    -
      - -
    • - amount: A numeric value between 0 and 0xFFFFFFFF, a - luci.ip.cidr instance or a string convertable by - luci.ip.new(). -
    • - -
    • - inplace: If true, modify this instance instead of returning - a new derived CIDR instance. -
    • - -
    - - - - -

    Usage:

    -
    local addr = luci.ip.new("192.168.1.1/24") 
    -print(addr:sub(256))         -- "192.168.0.1/24" 
    -print(addr:sub("0.168.0.0")) -- "192.0.1.1/24" 
    - 
    -addr:sub(256, true)          -- true 
    -print(addr)                  -- "192.168.0.1/24 
    - 
    -addr:sub("255.0.0.0", true)  -- false (underflow) 
    -print(addr)                  -- "0.0.0.0/24 
    - 
    -local addr6 = luci.ip.new("fe80::221:63f:fe75:aa17/64") 
    -print(addr6:sub(256))        -- "fe80::221:63f:fe75:a917/64" 
    -print(addr6:sub("::ffff:0")) -- "fe80::221:63e:fe76:aa17/64" 
    - 
    -addr:sub(256, true)          -- true 
    -print(addr)                  -- "fe80::221:63f:fe75:a917/64" 
    - 
    -addr:sub("ffff::", true)     -- false (underflow) 
    -print(addr)                  -- "::/64"
    - - - -

    Return value:

    -
      -
    • When subtracting inplace: Return true if the subtraction - succeeded or false when the subtraction underflowed.
    • -
    • When deriving new CIDR: Return new instance representing the value of - this instance minus the subtracted amount or the lowest address if - the subtraction underflowed.
    - - - -
    - - - - -
    cidr:minhost ()
    -
    - - -Calculate the lowest possible host address within this CIDR instance. - - - - - - -

    Usage:

    -
    local addr = luci.ip.new("192.168.123.56/24") 
    -print(addr:minhost())  -- "192.168.123.1" 
    - 
    -local addr6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64") 
    -print(addr6:minhost()) -- "fd9b:62b3:9cc5::1"
    - - - -

    Return value:

    -Returns a new CIDR instance representing the lowest host address - within this range. - - - -
    - - - - -
    cidr:maxhost ()
    -
    - - -Calculate the highest possible host address within this CIDR instance. - - - - - - -

    Usage:

    -
    local addr = luci.ip.new("192.168.123.56/24") 
    -print(addr:maxhost())  -- "192.168.123.254" (.255 is broadcast) 
    - 
    -local addr6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64") 
    -print(addr6:maxhost()) -- "fd9b:62b3:9cc5:0:ffff:ffff:ffff:ffff"
    - - - -

    Return value:

    -Returns a new CIDR instance representing the highest host address - within this range. - - - -
    - - - - -
    cidr:string ()
    -
    - - -Convert CIDR instance into string representation. - -If the prefix size of instance is less than 32 for IPv4 or 128 for IPv6, the -address is returned in the form "address/prefix" otherwise just "address". - -It is usually not required to call this function directly as CIDR objects -define it as __tostring function in the associated metatable. - - - - - - - - -

    Return value:

    -Returns a string representing the range or address of this CIDR instance - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.ip.html b/package/luci/documentation/api/modules/luci.ip.html deleted file mode 100644 index 549a55307e..0000000000 --- a/package/luci/documentation/api/modules/luci.ip.html +++ /dev/null @@ -1,934 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.ip

    - -

    - LuCI IP calculation and netlink access library.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    new (address, netmask) - -Construct a new luci.ip.cidr instance and autodetect the address family.
    IPv4 (address, netmask) - -Construct a new IPv4 luci.ip.cidr instance.
    IPv6 (address, netmask) - -Construct a new IPv6 luci.ip.cidr instance.
    route (address) - -Determine the route leading to the given destination.
    routes (filter, callback) - -Fetch all routes, optionally matching the given criteria.
    neighbors (filter, callback) - -Fetches entries from the IPv4 ARP and IPv6 neighbour kernel table
    link (device) - -Fetch basic device information
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    new (address, netmask)
    -
    - - -Construct a new luci.ip.cidr instance and autodetect the address family. -Throws an error if the given strings do not represent a valid address or -if the given optional netmask is of a different family. - - -

    Parameters

    -
      - -
    • - address: String containing a valid IPv4 or IPv6 address, optionally -with prefix size (CIDR notation) or netmask separated by slash. -
    • - -
    • - netmask: String containing a valid IPv4 or IPv6 netmask or number -containing a prefix size in bits (0..32 for IPv4, -0..128 for IPv6). Overrides mask embedded in the first argument -if specified. (optional) -
    • - -
    - - - - -

    Usage:

    -
    addr = luci.ip.new("10.24.0.1/24") 
    -addr = luci.ip.new("10.24.0.1/255.255.255.0") 
    -addr = luci.ip.new("10.24.0.1", "255.255.255.0")        -- separate netmask 
    -addr = luci.ip.new("10.24.0.1/24", 16)                  -- override netmask 
    - 
    -addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/64") 
    -addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/ffff:ffff:ffff:ffff::") 
    -addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17", "ffff:ffff:ffff:ffff::") 
    -addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/64", 128) -- override netmask
    - - - -

    Return value:

    -A luci.ip.cidr object representing the given -address/mask range. - - - -

    See also:

    - - -
    - - - - -
    IPv4 (address, netmask)
    -
    - - -Construct a new IPv4 luci.ip.cidr instance. -Throws an error if the given string does not represent a valid IPv4 address or -if the given optional netmask is of a different family. - - -

    Parameters

    -
      - -
    • - address: String containing a valid IPv4, optionally with prefix size -(CIDR notation) or netmask separated by slash. -
    • - -
    • - netmask: String containing a valid IPv4 netmask or number -containing a prefix size between 0 and 32 bit. -Overrides mask embedded in the first argument if specified. (optional) -
    • - -
    - - - - -

    Usage:

    -
    addr = luci.ip.IPv4("10.24.0.1/24") 
    -addr = luci.ip.IPv4("10.24.0.1/255.255.255.0") 
    -addr = luci.ip.IPv4("10.24.0.1", "255.255.255.0")        -- separate netmask 
    -addr = luci.ip.IPv4("10.24.0.1/24", 16)                  -- override netmask
    - - - -

    Return value:

    -A luci.ip.cidr object representing the given IPv4 range. - - - -

    See also:

    - - -
    - - - - -
    IPv6 (address, netmask)
    -
    - - -Construct a new IPv6 luci.ip.cidr instance. -Throws an error if the given string does not represent a valid IPv6 address or -if the given optional netmask is of a different family. - - -

    Parameters

    -
      - -
    • - address: String containing a valid IPv6, optionally with prefix size -(CIDR notation) or netmask separated by slash. -
    • - -
    • - netmask: String containing a valid IPv4 netmask or number -containing a prefix size between 0 and 128 bit. -Overrides mask embedded in the first argument if specified. (optional) -
    • - -
    - - - - -

    Usage:

    -
    addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/64") 
    -addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/ffff:ffff:ffff:ffff::") 
    -addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17", "ffff:ffff:ffff:ffff::") 
    -addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/64", 128) -- override netmask
    - - - -

    Return value:

    -A luci.ip.cidr object representing the given IPv6 range. - - - -

    See also:

    - - -
    - - - - -
    route (address)
    -
    - - -Determine the route leading to the given destination. - - -

    Parameters

    -
      - -
    • - address: A luci.ip.cidr instance or a string containing -a valid IPv4 or IPv6 range as specified by luci.ip.new(). -
    • - -
    - - - - -

    Usage:

    -
      -
    • Find default gateway by getting route to Google's public NS server -
      rt = luci.ip.route("8.8.8.8") 
      -if rt ~= nil then 
      -	print("gateway is", rt.gw) 
      -end
    • -
    • Determine IPv6 upstream interface
      rt = luci.ip.route("2001::/7") 
      -if rt ~= nil then 
      -	print("ipv6 upstream device is", rt.dev) 
      -end
    • -
    - - - -

    Return value:

    -

    Table containing the fields described below.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    type -

    Route type with one of the following numeric values:

    - - - - - - - - - - - - - - - - - - - - - -
    1RTN_UNICAST - Gateway or direct route
    2RTN_LOCAL - Accept locally
    3RTN_BROADCAST - - Accept locally as broadcast send as broadcast
    4RTN_ANYCAST - - Accept locally as broadcast but send as unicast
    5RTN_MULTICAST - Multicast route
    -
    familyNumber containing the route family, 4 for IPv4 or - 6 for IPv6
    destDestination luci.ip.cidr instance
    gwGateway luci.ip.cidr instance (optional)
    fromSource address luci.ip.cidr instance (optional)
    srcPreferred source luci.ip.cidr instance (optional)
    devString containing the name of the outgoing interface
    iifString containing the name of the incoming interface (optional)
    tableNumber of the associated routing table (0..65535)
    protoNumber of the associated routing protocol
    scopeNumber describing the scope of the route, most commonly - 0 for global or 253 for on-link
    metricNumber describing the route metric (optional)
    expiresNumber of seconds the prefix is valid (IPv6 only, optional)
    errorRoute destination error code (optional)
    - - - -

    See also:

    - - -
    - - - - -
    routes (filter, callback)
    -
    - - -Fetch all routes, optionally matching the given criteria. - - -

    Parameters

    -
      - -
    • - filter:

      Table containing one or more of the possible filter -critera described below (optional)

      - - - - - - - - - - - - - - -
      FieldDescription
      family - Number describing the address family to return - 4 selects - IPv4 routes, 6 IPv6 ones. Any other value selects both. -
      iif - String containing the incoming route interface to match. -
      oif - String containing the outgoing route interface to match. -
      type - Numeric type to match, e.g. 1 for unicast. -
      scope - Numeric scope to match, e.g. 253 for onlink. -
      proto - Numeric protocol to match, e.g. 2 for boot. -
      table - Numeric routing table to match (0..65535). -
      gw - String containing the gateway address to match. Can be in any notation - specified by luci.ip.new(). Prefix matching is performed when - comparing the routes, e.g. "192.168.1.0/24" would select routes with gateway - addresses 192.168.1.1 .. 192.168.1.255. -
      dest - String containing the destination to match. Prefix matching is performed. -
      from - String containing the source address to match. Prefix matching is performed. -
      src - String containing the preferred source address to match. - Prefix matching is performed. -
      dest_exact - String containing the destination to match. Exact matching is performed, - e.g. dest = "0.0.0.0/0" would match any IPv4 route - while dest_exact = "0.0.0.0/0" will only match the - default route. -
      from_exact - String containing the source address to match. Exact matching is performed. -
      -
    • - -
    • - callback:

      Callback function to invoke for each found route -instead of returning one table of route objects (optional)

      -
    • - -
    - - - - -

    Usage:

    -
      -
    • Find all IPv4 default routes: -
      luci.ip.routes({ dest_exact = "0.0.0.0/0" }, function(rt) 
      -	print(rt.type, rt.gw, rt.dev) 
      -end)
    • -
    • Find all global IPv6 prefixes on the current system: -
      luci.ip.routes({ from = "2001::/7" }, function(rt) 
      -	print(rt.from) 
      -end)
    • -
    • Fetch all IPv4 routes: -
      routes = luci.ip.routes({ family = 4 }) 
      -for _, rt in ipairs(routes) do 
      -	print(rt.dest, rt.gw, rt.dev) 
      -end
    • -
    - - - -

    Return value:

    -If no callback function is provided, a table of routes -as specified by luci.ip.route() -is returned. If a callback function is given, it is invoked for each route -and nothing is returned. - - - -

    See also:

    - - -
    - - - - -
    neighbors (filter, callback)
    -
    - - -Fetches entries from the IPv4 ARP and IPv6 neighbour kernel table - - -

    Parameters

    -
      - -
    • - filter:

      Table containing one or more of the possible filter -critera described below (optional)

      - - - - - -
      FieldDescription
      family - Number describing the address family to return - 4 selects - IPv4 ARP, 6 select IPv6 neighbour entries. Any other value - selects both. -
      dev - String containing the associated interface to match. -
      dest - String containing the associated address to match. Can be in any notation - specified by luci.ip.new(). Prefix matching is performed when - comparing the addresses, e.g. "192.168.1.0/24" would select ARP entries - for 192.168.1.1 .. 192.168.1.255. -
      mac - String containing MAC address to match. -
      -
    • - -
    • - callback:

      Callback function to invoke for each found neighbour -entry instead of returning one table of neighbour entries (optional)

      -
    • - -
    - - - - -

    Usage:

    -
      -
    • Find all ARP neighbours in the LAN: -
      luci.ip.neighbors({ dest = "192.168.0.0/16" }, function(n) 
      -	print(n.dest, n.mac) 
      -end)
    • -
    • Find all active IPv6 addresses of host with given MAC: -
      luci.ip.neighbors({ family = 6, mac = "00:21:63:75:aa:17" }, 
      -	function(n) 
      -		print(n.dest) 
      -	end)
    • -
    - - - -

    Return value:

    -If no callback function is provided, a table of neighbour entries -is returned. If a callback function is given, it is invoked for each entry -and nothing is returned. - -A neighbour entry is a table containing the following fields: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    familyNumber containing the neighbour entry family, 4 for IPv4 - ARP or 6 for IPv6 NDP
    devString containing the associated device of the neighbour entry
    destIP address luci.ip.cidr instance
    macString containing the associated MAC address
    routerBoolean "true" if the neighbour entry is a router (IPv6, optional)
    proxyBoolean "true" if this is a proxy entry (optional)
    incompleteBoolean "true" if the entry is in incomplete state (optional)
    reachableBoolean "true" if the entry is in reachable state (optional)
    staleBoolean "true" if the entry is stale (optional)
    delayBoolean "true" if the entry is delayed (optional)
    probeBoolean "true" if the entry is in probe state (optional)
    failedBoolean "true" if the entry is in failed state (optional)
    noarpBoolean "true" if the entry is not caused by NDP or - ARP (optional)
    permanentBoolean "true" if the entry was statically configured from - userspace (optional)
    - - - -
    - - - - -
    link (device)
    -
    - - -Fetch basic device information - - -

    Parameters

    -
      - -
    • - device: String containing the network device to query -
    • - -
    - - - - -

    Usage:

    -
      -
    • Test whether device br-lan exists: -
      print(luci.ip.link("br-lan").name ~= nil) 
      -
    • -
    • Query MAC address of eth0: -
      print(luci.ip.link("eth0").mac) 
      -
    • -
    - - - -

    Return value:

    -If the given interface is found, a table containing the fields -described below is returned, else an empty table. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    upBoolean indicating whether the device is in IFF_RUNNING state
    typeNumeric value indicating the type of the device, e.g. 1 - for ethernet.
    nameString containing the name of the device
    masterIf queried device is a bridge port, string containing the name of - parent bridge device (optional)
    mtuNumber containing the current MTU of the device
    qlenNumber containing the TX queue length of the device
    macString containing the link local address of the device in - dotted hex notation
    - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.json.html b/package/luci/documentation/api/modules/luci.json.html deleted file mode 100644 index 761bd6e7ea..0000000000 --- a/package/luci/documentation/api/modules/luci.json.html +++ /dev/null @@ -1,598 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance luci.json

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ActiveDecoder (customnull) - -Create a new Active JSON-Decoder.
    ActiveDecoder:get () - -Fetches one JSON-object from given source -
    Decoder (customnull) - -Create a new JSON-Decoder.
    Decoder:get () - -Get the decoded data packets after the rawdata has been sent to the sink.
    Decoder:sink () - -Create an LTN12 sink from the decoder object which accepts the JSON-Data.
    Encoder (data, buffersize, fastescape) - -Create a new JSON-Encoder.
    Encoder:source () - -Create an LTN12 source providing the encoded JSON-Data.
    decode (json) - -Directly decode a JSON string -
    encode (obj) - -Direcly encode a Lua object into a JSON string.
    null () - -Null replacement function -
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    ActiveDecoder (customnull)
    -
    - - -Create a new Active JSON-Decoder. - - - -

    Parameters

    -
      - -
    • - customnull: Use luci.json.null instead of nil for decoding null -
    • - -
    - - - - - - -

    Return value:

    -Active JSON-Decoder - - - -
    - - - - -
    ActiveDecoder:get ()
    -
    - - -Fetches one JSON-object from given source - - - - - - - - -

    Return value:

    -Decoded object - - - -
    - - - - -
    Decoder (customnull)
    -
    - - -Create a new JSON-Decoder. - - - -

    Parameters

    -
      - -
    • - customnull: Use luci.json.null instead of nil for decoding null -
    • - -
    - - - - - - -

    Return value:

    -JSON-Decoder - - - -
    - - - - -
    Decoder:get ()
    -
    - - -Get the decoded data packets after the rawdata has been sent to the sink. - - - - - - - - -

    Return value:

    -Decoded data - - - -
    - - - - -
    Decoder:sink ()
    -
    - - -Create an LTN12 sink from the decoder object which accepts the JSON-Data. - - - - - - - - -

    Return value:

    -LTN12 sink - - - -
    - - - - -
    Encoder (data, buffersize, fastescape)
    -
    - - -Create a new JSON-Encoder. - - - -

    Parameters

    -
      - -
    • - data: Lua-Object to be encoded. -
    • - -
    • - buffersize: Blocksize of returned data source. -
    • - -
    • - fastescape: Use non-standard escaping (don't escape control chars) -
    • - -
    - - - - - - -

    Return value:

    -JSON-Encoder - - - -
    - - - - -
    Encoder:source ()
    -
    - - -Create an LTN12 source providing the encoded JSON-Data. - - - - - - - - -

    Return value:

    -LTN12 source - - - -
    - - - - -
    decode (json)
    -
    - - -Directly decode a JSON string - - - -

    Parameters

    -
      - -
    • - json: JSON-String -
    • - -
    - - - - - - -

    Return value:

    -Lua object - - - -
    - - - - -
    encode (obj)
    -
    - - -Direcly encode a Lua object into a JSON string. - - - -

    Parameters

    -
      - -
    • - obj: Lua Object -
    • - -
    - - - - - - -

    Return value:

    -JSON string - - - -
    - - - - -
    null ()
    -
    - - -Null replacement function - - - - - - - - -

    Return value:

    -null - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.jsonc.html b/package/luci/documentation/api/modules/luci.jsonc.html deleted file mode 100644 index f82eb406c7..0000000000 --- a/package/luci/documentation/api/modules/luci.jsonc.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.jsonc

    - -

    - LuCI JSON parsing and serialization library. - The luci.jsonc class is a high level Lua binding to the JSON-C library to - allow reading and writing JSON data with minimal overhead.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - -
    new () - -Construct a new luci.jsonc.parser instance.
    parse (json) - -Parse a complete JSON string and convert it into a Lua data structure.
    stringify (data, pretty) - -Convert given Lua data into a JSON string.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    new ()
    -
    - - -Construct a new luci.jsonc.parser instance. - - - - - -

    Usage:

    -parser = luci.jsonc.new() - - - -

    Return value:

    -A luci.jsonc.parser object representing a JSON-C tokener. - - - -
    - - - - -
    parse (json)
    -
    - - -Parse a complete JSON string and convert it into a Lua data structure. - - -

    Parameters

    -
      - -
    • - json: A string containing the JSON data to parse, must be either a - JSON array or a JSON object. -
    • - -
    - - - - -

    Usage:

    -
    data = luci.jsonc.parse('{ "name": "John", "age": 34 }') 
    -print(data.name)  -- "John"
    - - - -

    Return value:

    -On success, a table containing the parsed JSON data is returned, on - failure the function returns nil and a string containing the reason of - the parse error. - - - -

    See also:

    - - -
    - - - - -
    stringify (data, pretty)
    -
    - - -Convert given Lua data into a JSON string. - -This function recursively converts the given Lua data into a JSON string, -ignoring any unsupported data. Lua tables are converted into JSON arrays if they -only contain integer keys, mixed tables are turned into JSON objects with any -existing numeric keys converted into strings. - -Lua functions, coroutines and userdata objects are ignored and Lua numbers are -converted to integers if they do not contain fractional values. - - - -

    Parameters

    -
      - -
    • - data: The Lua data to convert, can be a table, string, boolean or number. -
    • - -
    • - pretty: A boolean value indicating whether the resulting JSON should be - pretty printed. -
    • - -
    - - - - -

    Usage:

    -
    json = luci.jsonc.stringify({ item = true, values = { 1, 2, 3 } }) 
    -print(json)  -- '{"item":true,"values":[1,2,3]}'
    - - - -

    Return value:

    -Returns a string containing the JSON representation of the given Lua - data. - - - -

    See also:

    - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.jsonc.parser.html b/package/luci/documentation/api/modules/luci.jsonc.parser.html deleted file mode 100644 index e8e145f437..0000000000 --- a/package/luci/documentation/api/modules/luci.jsonc.parser.html +++ /dev/null @@ -1,495 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance luci.jsonc.parser

    - -

    - LuCI JSON parser instance. - A JSON parser instance is useful to parse JSON data chunk by chunk, without - the need to assemble all data in advance.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    parser:parse (json) - -Parses one chunk of JSON data.
    parser:get () - -Convert parsed JSON data into Lua table.
    parser:set (data) - -Put Lua data into the parser.
    parser:sink () - -Generate an ltn12-compatible sink.
    parser:stringify (pretty) - -Serialize current parser state as JSON.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    parser:parse (json)
    -
    - - -Parses one chunk of JSON data. - - - -

    Parameters

    -
      - -
    • - json: String containing the JSON fragment to parse -
    • - -
    - - - - -

    Usage:

    -
    parser = luci.jsonc.new() 
    - 
    -while true do 
    -	chunk = ...  -- fetch a cunk of data, e.g. from a socket 
    -	finish, errmsg = parser.parse(chunk) 
    - 
    -	if finish == nil then 
    -		error("Cannot parse JSON: " .. errmsg) 
    -	end 
    - 
    -	if finish == true then 
    -		break 
    -	end 
    -end
    - - - -

    Return value:

    -
      -
    • true if a complete JSON object has been parsed and no further input is - expected.
    • -
    • false if further input is required
    • -
    • nil if an error was encountered while parsing the current chunk. - In this case a string describing the parse error is returned as second - value.
    - - - -

    See also:

    - - -
    - - - - -
    parser:get ()
    -
    - - -Convert parsed JSON data into Lua table. - - - - - - -

    Usage:

    -
    parser = luci.jsonc.new() 
    -parser:parse('{ "example": "test" }') 
    - 
    -data = parser:get() 
    -print(data.example)  -- "test"
    - - - -

    Return value:

    -Parsed JSON object converted into a Lua table or nil if the parser - didn't finish or encountered an error. - - - -

    See also:

    - - -
    - - - - -
    parser:set (data)
    -
    - - -Put Lua data into the parser. - - - -

    Parameters

    -
      - -
    • - data: Lua data to put into the parser object. The data is converted to an - internal JSON representation that can be dumped with stringify(). - The conversion follows the rules described in luci.jsonc.stringify. -
    • - -
    - - - - -

    Usage:

    -
    parser = luci.jsonc.new() 
    -parser:set({ "some", "data" })
    - - - -

    Return value:

    -Nothing is returned. - - - -

    See also:

    - - -
    - - - - -
    parser:sink ()
    -
    - - -Generate an ltn12-compatible sink. - - - - - - -

    Usage:

    -
    parser = luci.jsonc.new() 
    -ltn12.pump.all(ltn12.source.file(io.input()), parser:sink()) 
    -print(parser:get())
    - - - -

    Return value:

    -Returns a function that can be used as an ltn12 sink. - - - -
    - - - - -
    parser:stringify (pretty)
    -
    - - -Serialize current parser state as JSON. - - - -

    Parameters

    -
      - -
    • - pretty: A boolean value indicating whether the resulting JSON should be pretty printed. -
    • - -
    - - - - -

    Usage:

    -
    parser = luci.jsonc.new() 
    -parser:parse('{ "example": "test" }') 
    -print(parser:serialize())  -- '{"example":"test"}'
    - - - -

    Return value:

    -Returns the serialized JSON data of this parser instance. - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.model.ipkg.html b/package/luci/documentation/api/modules/luci.model.ipkg.html deleted file mode 100644 index 921153c987..0000000000 --- a/package/luci/documentation/api/modules/luci.model.ipkg.html +++ /dev/null @@ -1,734 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.model.ipkg

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    compare_versions (ver1, ver2, comp) - -lua version of opkg compare-versions -
    find (pat, cb) - -Find packages that match the given pattern.
    info (pkg) - -Return information about installed and available packages.
    install (...) - -Install one or more packages.
    installed (pkg) - -Determine whether a given package is installed.
    list_all (pat, cb) - -List all packages known to opkg.
    list_installed (pat, cb) - -List installed packages.
    overlay_root () - -Determines the overlay root used by opkg.
    remove (...) - -Remove one or more packages.
    status (pkg) - -Return the package status of one or more packages.
    update () - -Update package lists.
    upgrade () - -Upgrades all installed packages.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    compare_versions (ver1, ver2, comp)
    -
    - - -lua version of opkg compare-versions - - - -

    Parameters

    -
      - -
    • - ver1: string version 1 -
    • - -
    • - ver2: string version 2 -
    • - -
    • - comp: string compare versions using - "<=" or "<" lower-equal - ">" or ">=" greater-equal - "=" equal - "<<" lower - ">>" greater - "~=" not equal -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating the status of the compare - - - -
    - - - - -
    find (pat, cb)
    -
    - - -Find packages that match the given pattern. - - - -

    Parameters

    -
      - -
    • - pat: Find packages whose names or descriptions match this pattern, nil results in zero results -
    • - -
    • - cb: Callback function invoked for each patckage, receives name, version and description as arguments -
    • - -
    - - - - - - -

    Return value:

    -nothing - - - -
    - - - - -
    info (pkg)
    -
    - - -Return information about installed and available packages. - - - -

    Parameters

    -
      - -
    • - pkg: Limit output to a (set of) packages -
    • - -
    - - - - - - -

    Return value:

    -Table containing package information - - - -
    - - - - -
    install (...)
    -
    - - -Install one or more packages. - - - -

    Parameters

    -
      - -
    • - ...: List of packages to install -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating the status of the action - -
    2. OPKG return code, STDOUT and STDERR - -
    - - - -
    - - - - -
    installed (pkg)
    -
    - - -Determine whether a given package is installed. - - - -

    Parameters

    -
      - -
    • - pkg: Package -
    • - -
    - - - - - - -

    Return value:

    -Boolean - - - -
    - - - - -
    list_all (pat, cb)
    -
    - - -List all packages known to opkg. - - - -

    Parameters

    -
      - -
    • - pat: Only find packages matching this pattern, nil lists all packages -
    • - -
    • - cb: Callback function invoked for each package, receives name, version and description as arguments -
    • - -
    - - - - - - -

    Return value:

    -nothing - - - -
    - - - - -
    list_installed (pat, cb)
    -
    - - -List installed packages. - - - -

    Parameters

    -
      - -
    • - pat: Only find packages matching this pattern, nil lists all packages -
    • - -
    • - cb: Callback function invoked for each package, receives name, version and description as arguments -
    • - -
    - - - - - - -

    Return value:

    -nothing - - - -
    - - - - -
    overlay_root ()
    -
    - - -Determines the overlay root used by opkg. - - - - - - - - -

    Return value:

    -String containing the directory path of the overlay root. - - - -
    - - - - -
    remove (...)
    -
    - - -Remove one or more packages. - - - -

    Parameters

    -
      - -
    • - ...: List of packages to install -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating the status of the action - -
    2. OPKG return code, STDOUT and STDERR - -
    - - - -
    - - - - -
    status (pkg)
    -
    - - -Return the package status of one or more packages. - - - -

    Parameters

    -
      - -
    • - pkg: Limit output to a (set of) packages -
    • - -
    - - - - - - -

    Return value:

    -Table containing package status information - - - -
    - - - - -
    update ()
    -
    - - -Update package lists. - - - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating the status of the action - -
    2. OPKG return code, STDOUT and STDERR - -
    - - - -
    - - - - -
    upgrade ()
    -
    - - -Upgrades all installed packages. - - - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating the status of the action - -
    2. OPKG return code, STDOUT and STDERR - -
    - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.model.uci.html b/package/luci/documentation/api/modules/luci.model.uci.html deleted file mode 100644 index c84d1eb0eb..0000000000 --- a/package/luci/documentation/api/modules/luci.model.uci.html +++ /dev/null @@ -1,1444 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance luci.model.uci

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Cursor:add (config, type) - -Add an anonymous section.
    Cursor:apply (configlist, command) - -Applies UCI configuration changes -
    Cursor:changes (config) - -Get a table of saved but uncommitted changes.
    Cursor:commit (config) - -Commit saved changes.
    Cursor:delete (config, section, option) - -Deletes a section or an option.
    Cursor:delete_all (config, type, comparator) - -Delete all sections of a given type that match certain criteria.
    Cursor:foreach (config, type, callback) - -Call a function for every section of a certain type.
    Cursor:get (config, section, option) - -Get a section type or an option -
    Cursor:get_all (config, section) - -Get all sections of a config or all values of a section.
    Cursor:get_bool (config, section, option) - -Get a boolean option and return it's value as true or false.
    Cursor:get_confdir () - -Get the configuration directory.
    Cursor:get_first (config, type, option, default) - -Get the given option from the first section with the given type.
    Cursor:get_list (config, section, option) - -Get an option or list and return values as table.
    Cursor:get_savedir () - -Get the directory for uncomitted changes.
    Cursor:load (config) - -Manually load a config.
    Cursor:revert (config) - -Revert saved but uncommitted changes.
    Cursor:save (config) - -Saves changes made to a config to make them committable.
    Cursor:section (config, type, name, values) - -Create a new section and initialize it with data.
    Cursor:set (config, section, option, value) - -Set a value or create a named section.
    Cursor:set_confdir (directory) - -Set the configuration directory.
    Cursor:set_list (config, section, option, value) - -Set given values as list.
    Cursor:set_savedir (directory) - -Set the directory for uncommited changes.
    Cursor:substate () - -Create a sub-state of this cursor.
    Cursor:tset (config, section, values) - -Updated the data of a section using data from a table.
    Cursor:unload (config) - -Discard changes made to a config.
    cursor () - -Create a new UCI-Cursor.
    cursor_state () - -Create a new Cursor initialized to the state directory.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    Cursor:add (config, type)
    -
    - - -Add an anonymous section. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - type: UCI section type -
    • - -
    - - - - - - -

    Return value:

    -Name of created section - - - -
    - - - - -
    Cursor:apply (configlist, command)
    -
    - - -Applies UCI configuration changes - - - -

    Parameters

    -
      - -
    • - configlist: List of UCI configurations -
    • - -
    • - command: Don't apply only return the command -
    • - -
    - - - - - - - - -
    - - - - -
    Cursor:changes (config)
    -
    - - -Get a table of saved but uncommitted changes. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    - - - - - - -

    Return value:

    -Table of changes - - - -

    See also:

    - - -
    - - - - -
    Cursor:commit (config)
    -
    - - -Commit saved changes. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -

    See also:

    - - -
    - - - - -
    Cursor:delete (config, section, option)
    -
    - - -Deletes a section or an option. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - section: UCI section name -
    • - -
    • - option: UCI option (optional) -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -
    - - - - -
    Cursor:delete_all (config, type, comparator)
    -
    - - -Delete all sections of a given type that match certain criteria. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - type: UCI section type -
    • - -
    • - comparator: Function that will be called for each section and -returns a boolean whether to delete the current section (optional) -
    • - -
    - - - - - - - - -
    - - - - -
    Cursor:foreach (config, type, callback)
    -
    - - -Call a function for every section of a certain type. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - type: UCI section type -
    • - -
    • - callback: Function to be called -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -
    - - - - -
    Cursor:get (config, section, option)
    -
    - - -Get a section type or an option - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - section: UCI section name -
    • - -
    • - option: UCI option (optional) -
    • - -
    - - - - - - -

    Return value:

    -UCI value - - - -
    - - - - -
    Cursor:get_all (config, section)
    -
    - - -Get all sections of a config or all values of a section. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - section: UCI section name (optional) -
    • - -
    - - - - - - -

    Return value:

    -Table of UCI sections or table of UCI values - - - -
    - - - - -
    Cursor:get_bool (config, section, option)
    -
    - - -Get a boolean option and return it's value as true or false. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - section: UCI section name -
    • - -
    • - option: UCI option -
    • - -
    - - - - - - -

    Return value:

    -Boolean - - - -
    - - - - -
    Cursor:get_confdir ()
    -
    - - -Get the configuration directory. - - - - - - - - -

    Return value:

    -Configuration directory - - - -
    - - - - -
    Cursor:get_first (config, type, option, default)
    -
    - - -Get the given option from the first section with the given type. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - type: UCI section type -
    • - -
    • - option: UCI option (optional) -
    • - -
    • - default: Default value (optional) -
    • - -
    - - - - - - -

    Return value:

    -UCI value - - - -
    - - - - -
    Cursor:get_list (config, section, option)
    -
    - - -Get an option or list and return values as table. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - section: UCI section name -
    • - -
    • - option: UCI option -
    • - -
    - - - - - - -

    Return value:

    -table. If the option was not found, you will simply get - an empty table. - - - -
    - - - - -
    Cursor:get_savedir ()
    -
    - - -Get the directory for uncomitted changes. - - - - - - - - -

    Return value:

    -Save directory - - - -
    - - - - -
    Cursor:load (config)
    -
    - - -Manually load a config. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -

    See also:

    - - -
    - - - - -
    Cursor:revert (config)
    -
    - - -Revert saved but uncommitted changes. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -

    See also:

    - - -
    - - - - -
    Cursor:save (config)
    -
    - - -Saves changes made to a config to make them committable. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -

    See also:

    - - -
    - - - - -
    Cursor:section (config, type, name, values)
    -
    - - -Create a new section and initialize it with data. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - type: UCI section type -
    • - -
    • - name: UCI section name (optional) -
    • - -
    • - values: Table of key - value pairs to initialize the section with -
    • - -
    - - - - - - -

    Return value:

    -Name of created section - - - -
    - - - - -
    Cursor:set (config, section, option, value)
    -
    - - -Set a value or create a named section. - -When invoked with three arguments config, sectionname, sectiontype, -then a named section of the given type is created. - -When invoked with four arguments config, sectionname, optionname and -optionvalue then the value of the specified option is set to the given value. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - section: UCI section name -
    • - -
    • - option: UCI option or UCI section type -
    • - -
    • - value: UCI value or nothing if you want to create a section -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -
    - - - - -
    Cursor:set_confdir (directory)
    -
    - - -Set the configuration directory. - - - -

    Parameters

    -
      - -
    • - directory: UCI configuration directory -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -
    - - - - -
    Cursor:set_list (config, section, option, value)
    -
    - - -Set given values as list. Setting a list option to an empty list -has the same effect as deleting the option. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - section: UCI section name -
    • - -
    • - option: UCI option -
    • - -
    • - value: value or table. Raw values will become a single item table. -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -
    - - - - -
    Cursor:set_savedir (directory)
    -
    - - -Set the directory for uncommited changes. - - - -

    Parameters

    -
      - -
    • - directory: UCI changes directory -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -
    - - - - -
    Cursor:substate ()
    -
    - - -Create a sub-state of this cursor. The sub-state is tied to the parent - -curser, means it the parent unloads or loads configs, the sub state will -do so as well. - - - - - - - -

    Return value:

    -UCI state cursor tied to the parent cursor - - - -
    - - - - -
    Cursor:tset (config, section, values)
    -
    - - -Updated the data of a section using data from a table. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    • - section: UCI section name (optional) -
    • - -
    • - values: Table of key - value pairs to update the section with -
    • - -
    - - - - - - - - -
    - - - - -
    Cursor:unload (config)
    -
    - - -Discard changes made to a config. - - - -

    Parameters

    -
      - -
    • - config: UCI config -
    • - -
    - - - - - - -

    Return value:

    -Boolean whether operation succeeded - - - -

    See also:

    - - -
    - - - - -
    cursor ()
    -
    - - -Create a new UCI-Cursor. - - - - - - - - -

    Return value:

    -UCI-Cursor - - - -
    - - - - -
    cursor_state ()
    -
    - - -Create a new Cursor initialized to the state directory. - - - - - - - - -

    Return value:

    -UCI cursor - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.rpcc.html b/package/luci/documentation/api/modules/luci.rpcc.html deleted file mode 100644 index f7cb020482..0000000000 --- a/package/luci/documentation/api/modules/luci.rpcc.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance luci.rpcc

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - -
    Client:proxy (prefix) - -Create a transparent RPC proxy.
    Client:request (method, params, notification) - -Request an RP call and get the response.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    Client:proxy (prefix)
    -
    - - -Create a transparent RPC proxy. - - - -

    Parameters

    -
      - -
    • - prefix: Method prefix -
    • - -
    - - - - - - -

    Return value:

    -RPC Proxy object - - - -
    - - - - -
    Client:request (method, params, notification)
    -
    - - -Request an RP call and get the response. - - - -

    Parameters

    -
      - -
    • - method: Remote method -
    • - -
    • - params: Parameters -
    • - -
    • - notification: Notification only? -
    • - -
    - - - - - - -

    Return value:

    -response - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.rpcc.ruci.html b/package/luci/documentation/api/modules/luci.rpcc.ruci.html deleted file mode 100644 index 203779ce7a..0000000000 --- a/package/luci/documentation/api/modules/luci.rpcc.ruci.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance luci.rpcc.ruci

    - -

    - - - - - - - -

    Functions

    - - - - - - - -
    factory (rpccl) - -Create a new UCI over RPC proxy.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    factory (rpccl)
    -
    - - -Create a new UCI over RPC proxy. - - - -

    Parameters

    -
      - -
    • - rpccl: RPC client -
    • - -
    - - - - - - -

    Return value:

    -Network transparent UCI module - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.sys.html b/package/luci/documentation/api/modules/luci.sys.html deleted file mode 100644 index 860c5fba26..0000000000 --- a/package/luci/documentation/api/modules/luci.sys.html +++ /dev/null @@ -1,645 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.sys

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    call (...) - -Execute a given shell command and return the error code -
    dmesg () - -Retrieves the output of the "dmesg" command.
    exec (command) - -Execute a given shell command and capture its standard output -
    getenv (var) - -Retrieve environment variables.
    hostname (String) - -Get or set the current hostname.
    httpget (url, stream, target) - -Returns the contents of a documented referred by an URL.
    mounts () - -Retrieve information about currently mounted file systems.
    reboot () - -Initiate a system reboot.
    syslog () - -Retrieves the output of the "logread" command.
    uniqueid (bytes) - -Generates a random id with specified length.
    uptime () - -Returns the current system uptime stats.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    call (...)
    -
    - - -Execute a given shell command and return the error code - - - -

    Parameters

    -
      - -
    • - ...: Command to call -
    • - -
    - - - - - - -

    Return value:

    -Error code of the command - - - -
    - - - - -
    dmesg ()
    -
    - - -Retrieves the output of the "dmesg" command. - - - - - - - - -

    Return value:

    -String containing the current log buffer - - - -
    - - - - -
    exec (command)
    -
    - - -Execute a given shell command and capture its standard output - - - -

    Parameters

    -
      - -
    • - command: Command to call -
    • - -
    - - - - - - -

    Return value:

    -String containg the return the output of the command - - - -
    - - - - -
    getenv (var)
    -
    - - -Retrieve environment variables. If no variable is given then a table - -containing the whole environment is returned otherwise this function returns -the corresponding string value for the given name or nil if no such variable -exists. - - -

    Parameters

    -
      - -
    • - var: Name of the environment variable to retrieve (optional) -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. String containg the value of the specified variable - -
    2. Table containing all variables if no variable name is given - -
    - - - -
    - - - - -
    hostname (String)
    -
    - - -Get or set the current hostname. - - - -

    Parameters

    -
      - -
    • - String: containing a new hostname to set (optional) -
    • - -
    - - - - - - -

    Return value:

    -String containing the system hostname - - - -
    - - - - -
    httpget (url, stream, target)
    -
    - - -Returns the contents of a documented referred by an URL. - - - -

    Parameters

    -
      - -
    • - url: The URL to retrieve -
    • - -
    • - stream: Return a stream instead of a buffer -
    • - -
    • - target: Directly write to target file name -
    • - -
    - - - - - - -

    Return value:

    -String containing the contents of given the URL - - - -
    - - - - -
    mounts ()
    -
    - - -Retrieve information about currently mounted file systems. - - - - - - - - -

    Return value:

    -Table containing mount information - - - -
    - - - - -
    reboot ()
    -
    - - -Initiate a system reboot. - - - - - - - - -

    Return value:

    -Return value of os.execute() - - - -
    - - - - -
    syslog ()
    -
    - - -Retrieves the output of the "logread" command. - - - - - - - - -

    Return value:

    -String containing the current log buffer - - - -
    - - - - -
    uniqueid (bytes)
    -
    - - -Generates a random id with specified length. - - - -

    Parameters

    -
      - -
    • - bytes: Number of bytes for the unique id -
    • - -
    - - - - - - -

    Return value:

    -String containing hex encoded id - - - -
    - - - - -
    uptime ()
    -
    - - -Returns the current system uptime stats. - - - - - - - - -

    Return value:

    -String containing total uptime in seconds - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.sys.init.html b/package/luci/documentation/api/modules/luci.sys.init.html deleted file mode 100644 index 596fb7cd1e..0000000000 --- a/package/luci/documentation/api/modules/luci.sys.init.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.sys.init

    - -

    - -LuCI system utilities / init related functions. -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    disable (name) - -Disable the given init script -
    enable (name) - -Enable the given init script -
    enabled (name) - -Test whether the given init script is enabled -
    index (name) - -Get the index of he given init script -
    names () - -Get the names of all installed init scripts -
    start (name) - -Start the given init script -
    stop (name) - -Stop the given init script -
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    disable (name)
    -
    - - -Disable the given init script - - - -

    Parameters

    -
      - -
    • - name: Name of the init script -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating success - - - -
    - - - - -
    enable (name)
    -
    - - -Enable the given init script - - - -

    Parameters

    -
      - -
    • - name: Name of the init script -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating success - - - -
    - - - - -
    enabled (name)
    -
    - - -Test whether the given init script is enabled - - - -

    Parameters

    -
      - -
    • - name: Name of the init script -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating whether init is enabled - - - -
    - - - - -
    index (name)
    -
    - - -Get the index of he given init script - - - -

    Parameters

    -
      - -
    • - name: Name of the init script -
    • - -
    - - - - - - -

    Return value:

    -Numeric index value - - - -
    - - - - -
    names ()
    -
    - - -Get the names of all installed init scripts - - - - - - - - -

    Return value:

    -Table containing the names of all inistalled init scripts - - - -
    - - - - -
    start (name)
    -
    - - -Start the given init script - - - -

    Parameters

    -
      - -
    • - name: Name of the init script -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating success - - - -
    - - - - -
    stop (name)
    -
    - - -Stop the given init script - - - -

    Parameters

    -
      - -
    • - name: Name of the init script -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating success - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.sys.iptparser.html b/package/luci/documentation/api/modules/luci.sys.iptparser.html deleted file mode 100644 index 122afcc2a9..0000000000 --- a/package/luci/documentation/api/modules/luci.sys.iptparser.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance luci.sys.iptparser

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IptParser (family) - -Create a new iptables parser object.
    IptParser:chain (table, chain) - -Return the given firewall chain within the given table name.
    IptParser:chains (table) - -Find the names of all chains within the given table name.
    IptParser:is_custom_target (target) - -Test whether the given target points to a custom chain.
    IptParser:resync () - -Rebuild the internal lookup table, for example when rules have changed - -through external commands.
    IptParser:tables () - -Find the names of all tables.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    IptParser (family)
    -
    - - -Create a new iptables parser object. - - - -

    Parameters

    -
      - -
    • - family: Number specifying the address family. 4 for IPv4, 6 for IPv6 -
    • - -
    - - - - - - -

    Return value:

    -IptParser instance - - - -
    - - - - -
    IptParser:chain (table, chain)
    -
    - - -Return the given firewall chain within the given table name. - - - -

    Parameters

    -
      - -
    • - table: String containing the table name -
    • - -
    • - chain: String containing the chain name -
    • - -
    - - - - - - -

    Return value:

    -Table containing the fields "policy", "packets", "bytes" - and "rules". The "rules" field is a table of rule tables. - - - -
    - - - - -
    IptParser:chains (table)
    -
    - - -Find the names of all chains within the given table name. - - - -

    Parameters

    -
      - -
    • - table: String containing the table name -
    • - -
    - - - - - - -

    Return value:

    -Table of chain names in the order they occur. - - - -
    - - - - -
    IptParser:is_custom_target (target)
    -
    - - -Test whether the given target points to a custom chain. - - - -

    Parameters

    -
      - -
    • - target: String containing the target action -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating whether target is a custom chain. - - - -
    - - - - -
    IptParser:resync ()
    -
    - - -Rebuild the internal lookup table, for example when rules have changed - -through external commands. - - - - - - - -

    Return value:

    -nothing - - - -
    - - - - -
    IptParser:tables ()
    -
    - - -Find the names of all tables. - - - - - - - - -

    Return value:

    -Table of table names. - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.sys.net.html b/package/luci/documentation/api/modules/luci.sys.net.html deleted file mode 100644 index 09cef175f9..0000000000 --- a/package/luci/documentation/api/modules/luci.sys.net.html +++ /dev/null @@ -1,601 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.sys.net

    - -

    - -LuCI system utilities / network related functions. -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    arptable () - -Returns the current arp-table entries as two-dimensional table.
    conntrack () - -Returns conntrack information -
    deviceinfo () - -Return information about available network interfaces.
    devices () - -Determine the names of available network interfaces.
    host_hints () - -Returns a two-dimensional table of host hints.
    ipv4_hints () - -Returns a two-dimensional table of IPv4 address hints.
    ipv6_hints () - -Returns a two-dimensional table of IPv6 address hints.
    mac_hints () - -Returns a two-dimensional table of mac address hints.
    pingtest (host) - -Tests whether the given host responds to ping probes.
    routes () - -Returns the current kernel routing table entries.
    routes6 () - -Returns the current ipv6 kernel routing table entries.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    arptable ()
    -
    - - -Returns the current arp-table entries as two-dimensional table. - - - - - - - - -

    Return value:

    -Table of table containing the current arp entries. - The following fields are defined for arp entry objects: - { "IP address", "HW address", "HW type", "Flags", "Mask", "Device" } - - - -
    - - - - -
    conntrack ()
    -
    - - -Returns conntrack information - - - - - - - - -

    Return value:

    -Table with the currently tracked IP connections - - - -
    - - - - -
    deviceinfo ()
    -
    - - -Return information about available network interfaces. - - - - - - - - -

    Return value:

    -Table containing all current interface names and their information - - - -
    - - - - -
    devices ()
    -
    - - -Determine the names of available network interfaces. - - - - - - - - -

    Return value:

    -Table containing all current interface names - - - -
    - - - - -
    host_hints ()
    -
    - - -Returns a two-dimensional table of host hints. - - - - - - - - -

    Return value:

    -Table of table containing known hosts from various sources, - indexed by mac address. Each subtable contains at least one - of the fields "name", "ipv4" or "ipv6". - - - -
    - - - - -
    ipv4_hints ()
    -
    - - -Returns a two-dimensional table of IPv4 address hints. - - - - - - - - -

    Return value:

    -Table of table containing known hosts from various sources. - Each entry contains the values in the following order: - [ "ip", "name" ] - - - -
    - - - - -
    ipv6_hints ()
    -
    - - -Returns a two-dimensional table of IPv6 address hints. - - - - - - - - -

    Return value:

    -Table of table containing known hosts from various sources. - Each entry contains the values in the following order: - [ "ip", "name" ] - - - -
    - - - - -
    mac_hints ()
    -
    - - -Returns a two-dimensional table of mac address hints. - - - - - - - - -

    Return value:

    -Table of table containing known hosts from various sources. - Each entry contains the values in the following order: - [ "mac", "name" ] - - - -
    - - - - -
    pingtest (host)
    -
    - - -Tests whether the given host responds to ping probes. - - - -

    Parameters

    -
      - -
    • - host: String containing a hostname or IPv4 address -
    • - -
    - - - - - - -

    Return value:

    -Number containing 0 on success and >= 1 on error - - - -
    - - - - -
    routes ()
    -
    - - -Returns the current kernel routing table entries. - - - - - - - - -

    Return value:

    -Table of tables with properties of the corresponding routes. - The following fields are defined for route entry tables: - { "dest", "gateway", "metric", "refcount", "usecount", "irtt", - "flags", "device" } - - - -
    - - - - -
    routes6 ()
    -
    - - -Returns the current ipv6 kernel routing table entries. - - - - - - - - -

    Return value:

    -Table of tables with properties of the corresponding routes. - The following fields are defined for route entry tables: - { "source", "dest", "nexthop", "metric", "refcount", "usecount", - "flags", "device" } - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.sys.process.html b/package/luci/documentation/api/modules/luci.sys.process.html deleted file mode 100644 index 9c4f0a5401..0000000000 --- a/package/luci/documentation/api/modules/luci.sys.process.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.sys.process

    - -

    - -LuCI system utilities / process related functions. -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    info () - -Get the current process id.
    list () - -Retrieve information about currently running processes.
    setgroup (gid) - -Set the gid of a process identified by given pid.
    setuser (uid) - -Set the uid of a process identified by given pid.
    signal (pid, sig) - -Send a signal to a process identified by given pid.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    info ()
    -
    - - -Get the current process id. - - - - - - - - -

    Return value:

    -Number containing the current pid - - - -
    - - - - -
    list ()
    -
    - - -Retrieve information about currently running processes. - - - - - - - - -

    Return value:

    -Table containing process information - - - -
    - - - - -
    setgroup (gid)
    -
    - - -Set the gid of a process identified by given pid. - - - -

    Parameters

    -
      - -
    • - gid: Number containing the Unix group id -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating successful operation - -
    2. String containing the error message if failed - -
    3. Number containing the error code if failed - -
    - - - -
    - - - - -
    setuser (uid)
    -
    - - -Set the uid of a process identified by given pid. - - - -

    Parameters

    -
      - -
    • - uid: Number containing the Unix user id -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating successful operation - -
    2. String containing the error message if failed - -
    3. Number containing the error code if failed - -
    - - - -
    - - - - -
    signal (pid, sig)
    -
    - - -Send a signal to a process identified by given pid. - - - -

    Parameters

    -
      - -
    • - pid: Number containing the process id -
    • - -
    • - sig: Signal to send (default: 15 [SIGTERM]) -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. Boolean indicating successful operation - -
    2. Number containing the error code if failed - -
    - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.sys.user.html b/package/luci/documentation/api/modules/luci.sys.user.html deleted file mode 100644 index 37126dd924..0000000000 --- a/package/luci/documentation/api/modules/luci.sys.user.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.sys.user

    - -

    - -LuCI system utilities / user related functions. -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - -
    getuser (uid) - -Retrieve user informations for given uid.
    checkpasswd (username, pass) - -Test whether given string matches the password of a given system user.
    getpasswd (username) - -Retrieve the current user password hash.
    setpasswd (username, password) - -Change the password of given user.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    getuser (uid)
    -
    - - -Retrieve user informations for given uid. - - - -

    Parameters

    -
      - -
    • - uid: Number containing the Unix user id -
    • - -
    - - - - - - -

    Return value:

    -Table containing the following fields: - { "uid", "gid", "name", "passwd", "dir", "shell", "gecos" } - - - -
    - - - - -
    checkpasswd (username, pass)
    -
    - - -Test whether given string matches the password of a given system user. - - - -

    Parameters

    -
      - -
    • - username: String containing the Unix user name -
    • - -
    • - pass: String containing the password to compare -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating wheather the passwords are equal - - - -
    - - - - -
    getpasswd (username)
    -
    - - -Retrieve the current user password hash. - - - -

    Parameters

    -
      - -
    • - username: String containing the username to retrieve the password for -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. String containing the hash or nil if no password is set. - -
    2. Password database entry - -
    - - - -
    - - - - -
    setpasswd (username, password)
    -
    - - -Change the password of given user. - - - -

    Parameters

    -
      - -
    • - username: String containing the Unix user name -
    • - -
    • - password: String containing the password to compare -
    • - -
    - - - - - - -

    Return value:

    -Number containing 0 on success and >= 1 on error - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.sys.wifi.html b/package/luci/documentation/api/modules/luci.sys.wifi.html deleted file mode 100644 index eb1f6b31d7..0000000000 --- a/package/luci/documentation/api/modules/luci.sys.wifi.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.sys.wifi

    - -

    - -LuCI system utilities / wifi related functions. -

    - - - - - - - -

    Functions

    - - - - - - - -
    getiwinfo (ifname) - -Get wireless information for given interface.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    getiwinfo (ifname)
    -
    - - -Get wireless information for given interface. - - - -

    Parameters

    -
      - -
    • - ifname: String containing the interface name -
    • - -
    - - - - - - -

    Return value:

    -A wrapped iwinfo object instance - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/luci.util.html b/package/luci/documentation/api/modules/luci.util.html deleted file mode 100644 index 847230bbbd..0000000000 --- a/package/luci/documentation/api/modules/luci.util.html +++ /dev/null @@ -1,1717 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class luci.util

    - -

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    append (src, ...) - -Appends numerically indexed tables or single objects to a given table.
    bigendian () - -Test whether the current system is operating in big endian mode.
    class (base) - -Create a Class object (Python-style object model).
    clone (object, deep) - -Clones the given object and return it's copy.
    cmatch (str, pattern) - -Count the occurrences of given substring in given string.
    combine (tbl1, tbl2, ...) - -Combines two or more numerically indexed tables and single objects into one table.
    contains (table, value) - -Checks whether the given table contains the given value.
    copcall (f, ...) - -This is a coroutine-safe drop-in replacement for Lua's "pcall"-function -
    coxpcall (f, err, ...) - -This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function -
    dtable () - -Create a dynamic table which automatically creates subtables.
    dumptable (t, maxdepth) - -Recursively dumps a table to stdout, useful for testing and debugging.
    exec (command) - -Execute given commandline and gather stdout.
    execi (command) - -Return a line-buffered iterator over the output of given command.
    get_bytecode (val) - -Return the current runtime bytecode of the given data.
    imatch (val) - -Return a matching iterator for the given value.
    instanceof (object, class) - -Test whether the given object is an instance of the given class.
    keys (t) - -Retrieve all keys of given associative table.
    kspairs (t) - -Return a key, value iterator for the given table.
    libpath () - -Returns the absolute path to LuCI base directory.
    parse_units (ustr) - -Parse certain units from the given string and return the canonical integer - -value or 0 if the unit is unknown.
    pcdata (value) - -Create valid XML PCDATA from given string.
    perror (obj) - -Write given object to stderr.
    restore_data (str) - -Restore data previously serialized with serialize_data().
    serialize_data (val) - -Recursively serialize given data to lua code, suitable for restoring - -with loadstring().
    serialize_json (data, writer) - -Convert data structure to JSON -
    spairs (t, f) - -Return a key, value iterator which returns the values sorted according to - -the provided callback function.
    split (str, pat, max, regex) - -Splits given string on a defined separator sequence and return a table - -containing the resulting substrings.
    strip_bytecode (code) - -Strips unnescessary lua bytecode from given string.
    striptags (value) - -Strip HTML tags from given string.
    threadlocal () - -Create a new or get an already existing thread local store associated with - -the current active coroutine.
    trim (str) - -Remove leading and trailing whitespace from given string value.
    ubus (object, method, values) - -Issue an ubus call.
    update (t, updates) - -Update values in given table with the values from the second given table.
    vspairs (t) - -Return a key, value iterator for the given table.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    append (src, ...)
    -
    - - -Appends numerically indexed tables or single objects to a given table. - - - -

    Parameters

    -
      - -
    • - src: Target table -
    • - -
    • - ...: Objects to insert -
    • - -
    - - - - - - -

    Return value:

    -Target table - - - -
    - - - - -
    bigendian ()
    -
    - - -Test whether the current system is operating in big endian mode. - - - - - - - - -

    Return value:

    -Boolean value indicating whether system is big endian - - - -
    - - - - -
    class (base)
    -
    - - -Create a Class object (Python-style object model). - -The class object can be instantiated by calling itself. -Any class functions or shared parameters can be attached to this object. -Attaching a table to the class object makes this table shared between -all instances of this class. For object parameters use the __init__ function. -Classes can inherit member functions and values from a base class. -Class can be instantiated by calling them. All parameters will be passed -to the __init__ function of this class - if such a function exists. -The __init__ function must be used to set any object parameters that are not shared -with other objects of this class. Any return values will be ignored. - - -

    Parameters

    -
      - -
    • - base: The base class to inherit from (optional) -
    • - -
    - - - - - - -

    Return value:

    -A class object - - - -

    See also:

    - - -
    - - - - -
    clone (object, deep)
    -
    - - -Clones the given object and return it's copy. - - - -

    Parameters

    -
      - -
    • - object: Table value to clone -
    • - -
    • - deep: Boolean indicating whether to do recursive cloning -
    • - -
    - - - - - - -

    Return value:

    -Cloned table value - - - -
    - - - - -
    cmatch (str, pattern)
    -
    - - -Count the occurrences of given substring in given string. - - - -

    Parameters

    -
      - -
    • - str: String to search in -
    • - -
    • - pattern: String containing pattern to find -
    • - -
    - - - - - - -

    Return value:

    -Number of found occurrences - - - -
    - - - - -
    combine (tbl1, tbl2, ...)
    -
    - - -Combines two or more numerically indexed tables and single objects into one table. - - - -

    Parameters

    -
      - -
    • - tbl1: Table value to combine -
    • - -
    • - tbl2: Table value to combine -
    • - -
    • - ...: More tables to combine -
    • - -
    - - - - - - -

    Return value:

    -Table value containing all values of given tables - - - -
    - - - - -
    contains (table, value)
    -
    - - -Checks whether the given table contains the given value. - - - -

    Parameters

    -
      - -
    • - table: Table value -
    • - -
    • - value: Value to search within the given table -
    • - -
    - - - - - - -

    Return value:

    -number indicating the first index at which the given value occurs - within table or false. - - - -
    - - - - -
    copcall (f, ...)
    -
    - - -This is a coroutine-safe drop-in replacement for Lua's "pcall"-function - - - -

    Parameters

    -
      - -
    • - f: Lua function to be called protected -
    • - -
    • - ...: Parameters passed to the function -
    • - -
    - - - - - - -

    Return value:

    -A boolean whether the function call succeeded and the returns - values of the function or the error object - - - -
    - - - - -
    coxpcall (f, err, ...)
    -
    - - -This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function - - - -

    Parameters

    -
      - -
    • - f: Lua function to be called protected -
    • - -
    • - err: Custom error handler -
    • - -
    • - ...: Parameters passed to the function -
    • - -
    - - - - - - -

    Return value:

    -A boolean whether the function call succeeded and the return - values of either the function or the error handler - - - -
    - - - - -
    dtable ()
    -
    - - -Create a dynamic table which automatically creates subtables. - - - - - - - - -

    Return value:

    -Dynamic Table - - - -
    - - - - -
    dumptable (t, maxdepth)
    -
    - - -Recursively dumps a table to stdout, useful for testing and debugging. - - - -

    Parameters

    -
      - -
    • - t: Table value to dump -
    • - -
    • - maxdepth: Maximum depth -
    • - -
    - - - - - - -

    Return value:

    -Always nil - - - -
    - - - - -
    exec (command)
    -
    - - -Execute given commandline and gather stdout. - - - -

    Parameters

    -
      - -
    • - command: String containing command to execute -
    • - -
    - - - - - - -

    Return value:

    -String containing the command's stdout - - - -
    - - - - -
    execi (command)
    -
    - - -Return a line-buffered iterator over the output of given command. - - - -

    Parameters

    -
      - -
    • - command: String containing the command to execute -
    • - -
    - - - - - - -

    Return value:

    -Iterator - - - -
    - - - - -
    get_bytecode (val)
    -
    - - -Return the current runtime bytecode of the given data. The byte code - -will be stripped before it is returned. - - -

    Parameters

    -
      - -
    • - val: Value to return as bytecode -
    • - -
    - - - - - - -

    Return value:

    -String value containing the bytecode of the given data - - - -
    - - - - -
    imatch (val)
    -
    - - -Return a matching iterator for the given value. The iterator will return - -one token per invocation, the tokens are separated by whitespace. If the -input value is a table, it is transformed into a string first. A nil value -will result in a valid interator which aborts with the first invocation. - - -

    Parameters

    -
      - -
    • - val: The value to scan (table, string or nil) -
    • - -
    - - - - - - -

    Return value:

    -Iterator which returns one token per call - - - -
    - - - - -
    instanceof (object, class)
    -
    - - -Test whether the given object is an instance of the given class. - - - -

    Parameters

    -
      - -
    • - object: Object instance -
    • - -
    • - class: Class object to test against -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating whether the object is an instance - - - -

    See also:

    - - -
    - - - - -
    keys (t)
    -
    - - -Retrieve all keys of given associative table. - - - -

    Parameters

    -
      - -
    • - t: Table to extract keys from -
    • - -
    - - - - - - -

    Return value:

    -Sorted table containing the keys - - - -
    - - - - -
    kspairs (t)
    -
    - - -Return a key, value iterator for the given table. - -The table pairs are sorted by key. - - -

    Parameters

    -
      - -
    • - t: The table to iterate -
    • - -
    - - - - - - -

    Return value:

    -Function value containing the corresponding iterator - - - -
    - - - - -
    libpath ()
    -
    - - -Returns the absolute path to LuCI base directory. - - - - - - - - -

    Return value:

    -String containing the directory path - - - -
    - - - - -
    parse_units (ustr)
    -
    - - -Parse certain units from the given string and return the canonical integer - -value or 0 if the unit is unknown. Upper- or lower case is irrelevant. -Recognized units are: - o "y" - one year (60*60*24*366) - o "m" - one month (60*60*24*31) - o "w" - one week (60*60*24*7) - o "d" - one day (60*60*24) - o "h" - one hour (60*60) - o "min" - one minute (60) - o "kb" - one kilobyte (1024) - o "mb" - one megabyte (1024*1024) - o "gb" - one gigabyte (1024*1024*1024) - o "kib" - one si kilobyte (1000) - o "mib" - one si megabyte (1000*1000) - o "gib" - one si gigabyte (1000*1000*1000) - - -

    Parameters

    -
      - -
    • - ustr: String containing a numerical value with trailing unit -
    • - -
    - - - - - - -

    Return value:

    -Number containing the canonical value - - - -
    - - - - -
    pcdata (value)
    -
    - - -Create valid XML PCDATA from given string. - - - -

    Parameters

    -
      - -
    • - value: String value containing the data to escape -
    • - -
    - - - - - - -

    Return value:

    -String value containing the escaped data - - - -
    - - - - -
    perror (obj)
    -
    - - -Write given object to stderr. - - - -

    Parameters

    -
      - -
    • - obj: Value to write to stderr -
    • - -
    - - - - - - -

    Return value:

    -Boolean indicating whether the write operation was successful - - - -
    - - - - -
    restore_data (str)
    -
    - - -Restore data previously serialized with serialize_data(). - - - -

    Parameters

    -
      - -
    • - str: String containing the data to restore -
    • - -
    - - - - - - -

    Return value:

    -Value containing the restored data structure - - - -

    See also:

    - - -
    - - - - -
    serialize_data (val)
    -
    - - -Recursively serialize given data to lua code, suitable for restoring - -with loadstring(). - - -

    Parameters

    -
      - -
    • - val: Value containing the data to serialize -
    • - -
    - - - - - - -

    Return value:

    -String value containing the serialized code - - - -

    See also:

    - - -
    - - - - -
    serialize_json (data, writer)
    -
    - - -Convert data structure to JSON - - - -

    Parameters

    -
      - -
    • - data: The data to serialize -
    • - -
    • - writer: A function to write a chunk of JSON data (optional) -
    • - -
    - - - - - - -

    Return value:

    -String containing the JSON if called without write callback - - - -
    - - - - -
    spairs (t, f)
    -
    - - -Return a key, value iterator which returns the values sorted according to - -the provided callback function. - - -

    Parameters

    -
      - -
    • - t: The table to iterate -
    • - -
    • - f: A callback function to decide the order of elements -
    • - -
    - - - - - - -

    Return value:

    -Function value containing the corresponding iterator - - - -
    - - - - -
    split (str, pat, max, regex)
    -
    - - -Splits given string on a defined separator sequence and return a table - -containing the resulting substrings. The optional max parameter specifies -the number of bytes to process, regardless of the actual length of the given -string. The optional last parameter, regex, specifies whether the separator -sequence is interpreted as regular expression. - - -

    Parameters

    -
      - -
    • - str: String value containing the data to split up -
    • - -
    • - pat: String with separator pattern (optional, defaults to "\n") -
    • - -
    • - max: Maximum times to split (optional) -
    • - -
    • - regex: Boolean indicating whether to interpret the separator - pattern as regular expression (optional, default is false) -
    • - -
    - - - - - - -

    Return value:

    -Table containing the resulting substrings - - - -
    - - - - -
    strip_bytecode (code)
    -
    - - -Strips unnescessary lua bytecode from given string. Information like line - -numbers and debugging numbers will be discarded. Original version by -Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html) - - -

    Parameters

    -
      - -
    • - code: String value containing the original lua byte code -
    • - -
    - - - - - - -

    Return value:

    -String value containing the stripped lua byte code - - - -
    - - - - -
    striptags (value)
    -
    - - -Strip HTML tags from given string. - - - -

    Parameters

    -
      - -
    • - value: String containing the HTML text -
    • - -
    - - - - - - -

    Return value:

    -String with HTML tags stripped of - - - -
    - - - - -
    threadlocal ()
    -
    - - -Create a new or get an already existing thread local store associated with - -the current active coroutine. A thread local store is private a table object -whose values can't be accessed from outside of the running coroutine. - - - - - - - -

    Return value:

    -Table value representing the corresponding thread local store - - - -
    - - - - -
    trim (str)
    -
    - - -Remove leading and trailing whitespace from given string value. - - - -

    Parameters

    -
      - -
    • - str: String value containing whitespace padded data -
    • - -
    - - - - - - -

    Return value:

    -String value with leading and trailing space removed - - - -
    - - - - -
    ubus (object, method, values)
    -
    - - -Issue an ubus call. - - - -

    Parameters

    -
      - -
    • - object: String containing the ubus object to call -
    • - -
    • - method: String containing the ubus method to call -
    • - -
    • - values: Table containing the values to pass -
    • - -
    - - - - - - -

    Return value:

    -Table containin the ubus result - - - -
    - - - - -
    update (t, updates)
    -
    - - -Update values in given table with the values from the second given table. - -Both table are - in fact - merged together. - - -

    Parameters

    -
      - -
    • - t: Table which should be updated -
    • - -
    • - updates: Table containing the values to update -
    • - -
    - - - - - - -

    Return value:

    -Always nil - - - -
    - - - - -
    vspairs (t)
    -
    - - -Return a key, value iterator for the given table. - -The table pairs are sorted by value. - - -

    Parameters

    -
      - -
    • - t: The table to iterate -
    • - -
    - - - - - - -

    Return value:

    -Function value containing the corresponding iterator - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.CHANGELOG.html b/package/luci/documentation/api/modules/nixio.CHANGELOG.html deleted file mode 100644 index 48bedc80af..0000000000 --- a/package/luci/documentation/api/modules/nixio.CHANGELOG.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class nixio.CHANGELOG

    - -

    - Changes and improvements.

    - - - - - - - - - - -

    Tables

    - - - - - - - - - - - - -
    0.2 - Initial Release.
    0.3 - Service Release.
    - - - -
    -
    - - - - -

    Tables

    -
    - -
    0.2
    -
    - Initial Release. -
      -
    • Initial Release
    • -
    - - - -
    - - -
    0.3
    -
    - Service Release. -
      -
    • Added getifaddrs() function.
    • -
    • Added getsockopt(), setsockopt(), getsockname() and getpeername() - directly to TLS-socket objects unifying the socket interface.
    • -
    • Added support for CyaSSL as cryptographical backend.
    • -
    • Added support for x509 certificates in DER format.
    • -
    • Added support for splice() in UnifiedIO.copyz().
    • -
    • Added interface to inject chunks into UnifiedIO.linesource() buffer.
    • -
    • Changed TLS behaviour to explicitely separate servers and clients.
    • -
    • Fixed usage of signed datatype breaking Base64 decoding.
    • -
    • Fixed namespace clashes for nixio.fs.
    • -
    • Fixed splice() support for some exotic C libraries.
    • -
    • Reconfigure axTLS cryptographical provider and mark it as obsolete.
    • -
    - - - -
    - - -
    - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.CryptoHash.html b/package/luci/documentation/api/modules/nixio.CryptoHash.html deleted file mode 100644 index 6158a77b60..0000000000 --- a/package/luci/documentation/api/modules/nixio.CryptoHash.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance nixio.CryptoHash

    - -

    - Cryptographical Hash and HMAC object.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - -
    CryptoHash:final () - Finalize the hash and return the digest.
    CryptoHash:update (chunk) - Add another chunk of data to be hashed.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    CryptoHash:final ()
    -
    - - Finalize the hash and return the digest. - - - - - -

    Usage:

    -You cannot call update on a hash object that was already finalized - you can however call final multiple times to get the digest. - - - -

    Return values:

    -
      - -
    1. hexdigest - -
    2. buffer containing binary digest - -
    - - - -
    - - - - -
    CryptoHash:update (chunk)
    -
    - - Add another chunk of data to be hashed. - - -

    Parameters

    -
      - -
    • - chunk: Chunk of data -
    • - -
    - - - - - - -

    Return value:

    -CryptoHash object (self) - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.File.html b/package/luci/documentation/api/modules/nixio.File.html deleted file mode 100644 index d9e67ea5b3..0000000000 --- a/package/luci/documentation/api/modules/nixio.File.html +++ /dev/null @@ -1,673 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance nixio.File

    - -

    - Large File Object. - Large file operations are supported up to 52 bits if the Lua number type is - double (default).

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    File:close () - Close the file descriptor.
    File:fileno () - Get the number of the filedescriptor.
    File:lock (command, length) - Apply or test a lock on the file.
    File:read (length) - Read from a file descriptor.
    File:seek (offset, whence) - Reposition read / write offset of the file descriptor.
    File:setblocking (blocking) - (POSIX) Set the blocking mode of the file descriptor.
    File:stat (field) - Get file status and attributes.
    File:sync (data_only) - Synchronizes the file with the storage device.
    File:tell () - Return the current read / write offset of the file descriptor.
    File:write (buffer, offset, length) - Write to the file descriptor.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    File:close ()
    -
    - - Close the file descriptor. - - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    File:fileno ()
    -
    - - Get the number of the filedescriptor. - - - - - - - -

    Return value:

    -file descriptor number - - - -
    - - - - -
    File:lock (command, length)
    -
    - - Apply or test a lock on the file. - - -

    Parameters

    -
      - -
    • - command: Locking Command ["lock", "tlock", "ulock", "test"] -
    • - -
    • - length: Amount of Bytes to lock from current offset (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function calls lockf() on POSIX and _locking() on Windows. - -
    • The "lock" command is blocking, "tlock" is non-blocking, - "ulock" unlocks and "test" only tests for the lock. - -
    • The "test" command is not available on Windows. - -
    • Locks are by default advisory on POSIX, but mandatory on Windows. - -
    - - - -

    Return value:

    -true - - - -
    - - - - -
    File:read (length)
    -
    - - Read from a file descriptor. - - -

    Parameters

    -
      - -
    • - length: Amount of data to read (in Bytes). -
    • - -
    - - - - -

    Usage

    -
      - -
    • Warning: It is not guaranteed that all requested data - is read at once especially when dealing with pipes. - You have to check the return value - the length of the buffer actually read - - or use the safe IO functions in the high-level IO utility module. - -
    • The length of the return buffer is limited by the (compile time) - nixio buffersize which is nixio.const.buffersize (8192 by default). - Any read request greater than that will be safely truncated to this value. - -
    - - - -

    Return value:

    -buffer containing data successfully read - - - -
    - - - - -
    File:seek (offset, whence)
    -
    - - Reposition read / write offset of the file descriptor. - The seek will be done either from the beginning of the file or relative - to the current position or relative to the end. - - -

    Parameters

    -
      - -
    • - offset: File Offset -
    • - -
    • - whence: Starting point ["set", "cur", "end"] -
    • - -
    - - - - -

    Usage:

    -This function calls lseek(). - - - -

    Return value:

    -new (absolute) offset position - - - -
    - - - - -
    File:setblocking (blocking)
    -
    - - (POSIX) Set the blocking mode of the file descriptor. - - -

    Parameters

    -
      - -
    • - blocking: (boolean) -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    File:stat (field)
    -
    - - Get file status and attributes. - - -

    Parameters

    -
      - -
    • - field: Only return a specific field, not the whole table (optional) -
    • - -
    - - - - -

    Usage:

    -This function calls fstat(). - - - -

    Return value:

    -Table containing:
      -
    • atime = Last access timestamp
    • -
    • blksize = Blocksize (POSIX only)
    • -
    • blocks = Blocks used (POSIX only)
    • -
    • ctime = Creation timestamp
    • -
    • dev = Device ID
    • -
    • gid = Group ID
    • -
    • ino = Inode
    • -
    • modedec = Mode converted into a decimal number
    • -
    • modestr = Mode as string as returned by ls -l
    • -
    • mtime = Last modification timestamp
    • -
    • nlink = Number of links
    • -
    • rdev = Device ID (if special file)
    • -
    • size = Size in bytes
    • -
    • type = ["reg", "dir", "chr", "blk", "fifo", "lnk", "sock"]
    • -
    • uid = User ID
    • -
    - - - -
    - - - - -
    File:sync (data_only)
    -
    - - Synchronizes the file with the storage device. - Returns when the file is successfully written to the disk. - - -

    Parameters

    -
      - -
    • - data_only: Do not synchronize the metadata. (optional, boolean) -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function calls fsync() when data_only equals false - otherwise fdatasync(), on Windows _commit() is used instead. - -
    • fdatasync() is only supported by Linux and Solaris. For other systems - the data_only parameter is ignored and fsync() is always called. - -
    - - - -

    Return value:

    -true - - - -
    - - - - -
    File:tell ()
    -
    - - Return the current read / write offset of the file descriptor. - - - - - -

    Usage:

    -This function calls lseek() with offset 0 from the current position. - - - -

    Return value:

    -offset position - - - -
    - - - - -
    File:write (buffer, offset, length)
    -
    - - Write to the file descriptor. - - -

    Parameters

    -
      - -
    • - buffer: Buffer holding the data to be written. -
    • - -
    • - offset: Offset to start reading the buffer from. (optional) -
    • - -
    • - length: Length of chunk to read from the buffer. (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • Warning: It is not guaranteed that all data - in the buffer is written at once especially when dealing with pipes. - You have to check the return value - the number of bytes actually written - - or use the safe IO functions in the high-level IO utility module. - -
    • Unlike standard Lua indexing the lowest offset and default is 0. - -
    - - - -

    Return value:

    -number of bytes written - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.README.html b/package/luci/documentation/api/modules/nixio.README.html deleted file mode 100644 index d8a17f78b4..0000000000 --- a/package/luci/documentation/api/modules/nixio.README.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class nixio.README

    - -

    - General Information.

    - - - - - - - - - - -

    Tables

    - - - - - - - - - - - - - - - - - - - - - - -
    Errorhandling - General error handling information.
    Functions - Function conventions.
    Platforms - Platform information.
    TLS-Crypto - Cryptography and TLS libraries.
    - - - -
    -
    - - - - -

    Tables

    -
    - -
    Errorhandling
    -
    - General error handling information. -
      -
    • Most of the functions available in this library may fail. If any error - occurs the function returns nil or false, an error code - (usually errno) and an additional error message text (if avaialable).
    • -
    • At the moment false is only returned when a non-blocking I/O function - fails with EAGAIN, EWOULDBLOCK or WSAEWOULDBLOCK for any others nil is - returned as first parameter. Therefore you can use false to write portable - non-blocking I/O applications.
    • -
    • Note that the function documentation does only mention the return values - in case of a successful operation.
    • -
    • You can find a table of common error numbers and other useful constants - like signal numbers in nixio.const e.g. nixio.const.EINVAL, - nixio.const.SIGTERM, etc. For portability there is a second error constant - table nixio.const_sock for socket error codes. This might - be important if you are dealing with Windows applications, on POSIX however - const_sock is just an alias for const.
    • -
    • With some exceptions - which are explicitely stated in the function - documentation - all blocking functions are signal-protected and will not fail - with EINTR.
    • -
    • On POSIX the SIGPIPE signal will be set to ignore upon initialization. - You should restore the default behaviour or set a custom signal handler - in your program after loading nixio if you need this behaviour.
    • -
    - - - -
    - - -
    Functions
    -
    - Function conventions. -
    In general all functions are namend and behave like their POSIX API - counterparts - where applicable - applying the following rules: -
      -
    • Functions should be named like the underlying POSIX API function omitting - prefixes or suffixes - especially when placed in an object-context ( - lockf -> File:lock, fsync -> File:sync, dup2 -> dup, ...)
    • -
    • If you are unclear about the behaviour of a function you should consult - your OS API documentation (e.g. the manpages).
    • -
    • If the name is significantly different from the POSIX-function, the - underlying function(s) are stated in the documentation.
    • -
    • Parameters should reflect those of the C-API, buffer length arguments and - by-reference parameters should be omitted for pratical purposes.
    • -
    • If a C function accepts a bitfield as parameter, it should be translated - into lower case string flags representing the flags if the bitfield is the - last parameter and also omitting prefixes or suffixes. (e.g. waitpid - (pid, &s, WNOHANG | WUNTRACED) -> waitpid(pid, "nohang", "untraced"), - getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) -> - Socket:getopt("socket", "reuseaddr"), etc.)
    • -
    • If it is not applicable to provide a string representation of the - bitfield a bitfield generator helper is provided. It is named FUNCTION_flags. - (open("/tmp/test", O_RDONLY | O_NONBLOCK) -> open("/tmp/test", open_flags( - "rdonly", "nonblock")))
    • -
    - - - -
    - - -
    Platforms
    -
    - Platform information. -
      -
    • The minimum platform requirements are a decent POSIX 2001 support. - Builds are more or less tested on Linux, Solaris and FreeBSD. Builds for - Windows XP SP1 and later can be compiled with MinGW either from Windows - itself or using the MinGW cross-compiler. Earlier versions of Windows are not - supported.
    • -
    • In general all functions which don't have any remarks - in their documentation are available on all platforms.
    • -
    • Functions with a (POSIX), (Linux) or similar prefix are only available - on these specific platforms. Same appplies to parameters of functions - with a similar suffix.
    • -
    • Some functions might have limitations on some platforms. This should - be stated in the documentation. Please also consult your OS API - documentation.
    • -
    - - - -
    - - -
    TLS-Crypto
    -
    - Cryptography and TLS libraries. -
      -
    • Currently 3 underlying cryptography libraries are supported: openssl, - cyassl and axTLS. The name of the library in use is written to - nixio.tls_provider
    • -
    • You should whenever possible use openssl or cyassl as axTLS has only - limited support. It does not provide support for non-blocking sockets and - is probably less audited than the other ones.
    • -
    • As the supported Windows versions are not suitable for embedded devices - axTLS is at the moment not supported on Windows.
    • -
    - - - -
    - - -
    - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.Socket.html b/package/luci/documentation/api/modules/nixio.Socket.html deleted file mode 100644 index 7d258fc195..0000000000 --- a/package/luci/documentation/api/modules/nixio.Socket.html +++ /dev/null @@ -1,1033 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance nixio.Socket

    - -

    - Socket Object. - Supports IPv4, IPv6 and UNIX (POSIX only) families.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Socket:accept () - Accept a connection on the socket.
    Socket:bind (host, port) - Bind the socket to a network address.
    Socket:close () - Close the socket.
    Socket:connect (host, port) - Connect the socket to a network address.
    Socket:fileno () - Get the number of the filedescriptor.
    Socket:getopt (level, option) - Get a socket option.
    Socket:getpeername () - Get the peer address of a socket.
    Socket:getsockname () - Get the local address of a socket.
    Socket:listen (backlog) - Listen for connections on the socket.
    Socket:read  (length) - Receive a message on the socket (This is an alias for recv).
    Socket:recv  (length) - Receive a message on the socket.
    Socket:recvfrom (length) - Receive a message on the socket including the senders source address.
    Socket:send (buffer, offset, length) - Send a message on the socket.
    Socket:sendto (buffer, host, port, offset, length) - Send a message on the socket specifying the destination.
    Socket:setblocking (blocking) - Set the blocking mode of the socket.
    Socket:setopt (level, option, value) - Set a socket option.
    Socket:shutdown (how) - Shut down part of a full-duplex connection.
    Socket:write (buffer, offset, length) - Send a message on the socket (This is an alias for send).
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    Socket:accept ()
    -
    - - Accept a connection on the socket. - - - - - - - -

    Return values:

    -
      - -
    1. Socket Object - -
    2. Peer IP-Address - -
    3. Peer Port - -
    - - - -
    - - - - -
    Socket:bind (host, port)
    -
    - - Bind the socket to a network address. - - -

    Parameters

    -
      - -
    • - host: Host (optional, default: all addresses) -
    • - -
    • - port: Port or service description -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function calls getaddrinfo() and bind() but NOT listen(). - -
    • If host is a domain name it will be looked up and bind() - tries the IP-Addresses in the order returned by the DNS resolver - until the bind succeeds. - -
    • UNIX sockets ignore the port, - and interpret host as a socket path. - -
    - - - -

    Return value:

    -true - - - -
    - - - - -
    Socket:close ()
    -
    - - Close the socket. - - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    Socket:connect (host, port)
    -
    - - Connect the socket to a network address. - - -

    Parameters

    -
      - -
    • - host: Hostname or IP-Address (optional, default: localhost) -
    • - -
    • - port: Port or service description -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function calls getaddrinfo() and connect(). - -
    • If host is a domain name it will be looked up and connect() - tries the IP-Addresses in the order returned by the DNS resolver - until the connect succeeds. - -
    • UNIX sockets ignore the port, - and interpret host as a socket path. - -
    - - - -

    Return value:

    -true - - - -
    - - - - -
    Socket:fileno ()
    -
    - - Get the number of the filedescriptor. - - - - - - - -

    Return value:

    -file descriptor number - - - -
    - - - - -
    Socket:getopt (level, option)
    -
    - - Get a socket option. - - -

    Parameters

    -
      - -
    • - level: Level ["socket", "tcp", "ip", "ipv6"] -
    • - -
    • - option: Option ["keepalive", "reuseaddr", "sndbuf", "rcvbuf", - "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute", - "bindtodevice", "error", "oobinline", "cork" (TCP), "nodelay" (TCP), - "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop" - (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops" - (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)] -
    • - -
    - - - - - - -

    Return value:

    -Value - - - -
    - - - - -
    Socket:getpeername ()
    -
    - - Get the peer address of a socket. - - - - - - - -

    Return values:

    -
      - -
    1. IP-Address - -
    2. Port - -
    - - - -
    - - - - -
    Socket:getsockname ()
    -
    - - Get the local address of a socket. - - - - - - - -

    Return values:

    -
      - -
    1. IP-Address - -
    2. Port - -
    - - - -
    - - - - -
    Socket:listen (backlog)
    -
    - - Listen for connections on the socket. - - -

    Parameters

    -
      - -
    • - backlog: Length of queue for pending connections -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    Socket:read  (length)
    -
    - - Receive a message on the socket (This is an alias for recv). - See the recvfrom description for more details. - - -

    Parameters

    -
      - -
    • - length: Amount of data to read (in Bytes). -
    • - -
    - - - - - - -

    Return value:

    -buffer containing data successfully read - - - -

    See also:

    - - -
    - - - - -
    Socket:recv  (length)
    -
    - - Receive a message on the socket. - This function is identical to recvfrom except that it does not return - the sender's source address. See the recvfrom description for more details. - - -

    Parameters

    -
      - -
    • - length: Amount of data to read (in Bytes). -
    • - -
    - - - - - - -

    Return value:

    -buffer containing data successfully read - - - -

    See also:

    - - -
    - - - - -
    Socket:recvfrom (length)
    -
    - - Receive a message on the socket including the senders source address. - - -

    Parameters

    -
      - -
    • - length: Amount of data to read (in Bytes). -
    • - -
    - - - - -

    Usage

    -
      - -
    • Warning: It is not guaranteed that all requested data - is read at once. - You have to check the return value - the length of the buffer actually read - - or use the safe IO functions in the high-level IO utility module. - -
    • The length of the return buffer is limited by the (compile time) - nixio buffersize which is nixio.const.buffersize (8192 by default). - Any read request greater than that will be safely truncated to this value. - -
    - - - -

    Return values:

    -
      - -
    1. buffer containing data successfully read - -
    2. host IP-Address of the sender - -
    3. port Port of the sender - -
    - - - -
    - - - - -
    Socket:send (buffer, offset, length)
    -
    - - Send a message on the socket. - This function is identical to sendto except for the missing destination - parameters. See the sendto description for a detailed description. - - -

    Parameters

    -
      - -
    • - buffer: Buffer holding the data to be written. -
    • - -
    • - offset: Offset to start reading the buffer from. (optional) -
    • - -
    • - length: Length of chunk to read from the buffer. (optional) -
    • - -
    - - - - - - -

    Return value:

    -number of bytes written - - - -

    See also:

    - - -
    - - - - -
    Socket:sendto (buffer, host, port, offset, length)
    -
    - - Send a message on the socket specifying the destination. - - -

    Parameters

    -
      - -
    • - buffer: Buffer holding the data to be written. -
    • - -
    • - host: Target IP-Address -
    • - -
    • - port: Target Port -
    • - -
    • - offset: Offset to start reading the buffer from. (optional) -
    • - -
    • - length: Length of chunk to read from the buffer. (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • Warning: It is not guaranteed that all data - in the buffer is written at once. - You have to check the return value - the number of bytes actually written - - or use the safe IO functions in the high-level IO utility module. - -
    • Unlike standard Lua indexing the lowest offset and default is 0. - -
    - - - -

    Return value:

    -number of bytes written - - - -
    - - - - -
    Socket:setblocking (blocking)
    -
    - - Set the blocking mode of the socket. - - -

    Parameters

    -
      - -
    • - blocking: (boolean) -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    Socket:setopt (level, option, value)
    -
    - - Set a socket option. - - -

    Parameters

    -
      - -
    • - level: Level ["socket", "tcp", "ip", "ipv6"] -
    • - -
    • - option: Option ["keepalive", "reuseaddr", "sndbuf", "rcvbuf", - "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute", - "bindtodevice", "error", "oobinline", "cork" (TCP), "nodelay" (TCP), - "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop" - (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops" - (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)] -
    • - -
    • - value: Value -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    Socket:shutdown (how)
    -
    - - Shut down part of a full-duplex connection. - - -

    Parameters

    -
      - -
    • - how: (optional, default: rdwr) ["rdwr", "rd", "wr"] -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    Socket:write (buffer, offset, length)
    -
    - - Send a message on the socket (This is an alias for send). - See the sendto description for a detailed description. - - -

    Parameters

    -
      - -
    • - buffer: Buffer holding the data to be written. -
    • - -
    • - offset: Offset to start reading the buffer from. (optional) -
    • - -
    • - length: Length of chunk to read from the buffer. (optional) -
    • - -
    - - - - - - -

    Return value:

    -number of bytes written - - - -

    See also:

    - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.TLSContext.html b/package/luci/documentation/api/modules/nixio.TLSContext.html deleted file mode 100644 index a91b1eec4d..0000000000 --- a/package/luci/documentation/api/modules/nixio.TLSContext.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance nixio.TLSContext

    - -

    - Transport Layer Security Context Object.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TLSContext:create (socket) - Create a TLS Socket from a socket descriptor.
    TLSContext:set_cert (path) - Assign a PEM certificate to this context.
    TLSContext:set_ciphers (cipherlist) - Set the available ciphers for this context.
    TLSContext:set_key (path) - Assign a PEM private key to this context.
    TLSContext:set_verify (flag1, ...) - Set the verification flags of this context.
    TLSContext:set_verify_depth (depth) - Set the verification depth of this context.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    TLSContext:create (socket)
    -
    - - Create a TLS Socket from a socket descriptor. - - -

    Parameters

    -
      - -
    • - socket: Socket Object -
    • - -
    - - - - - - -

    Return value:

    -TLSSocket Object - - - -
    - - - - -
    TLSContext:set_cert (path)
    -
    - - Assign a PEM certificate to this context. - - -

    Parameters

    -
      - -
    • - path: Certificate File path -
    • - -
    - - - - -

    Usage:

    -This function calls SSL_CTX_use_certificate_chain_file(). - - - -

    Return value:

    -true - - - -
    - - - - -
    TLSContext:set_ciphers (cipherlist)
    -
    - - Set the available ciphers for this context. - - -

    Parameters

    -
      - -
    • - cipherlist: String containing a list of ciphers -
    • - -
    - - - - -

    Usage:

    -This function calls SSL_CTX_set_cipher_list(). - - - -

    Return value:

    -true - - - -
    - - - - -
    TLSContext:set_key (path)
    -
    - - Assign a PEM private key to this context. - - -

    Parameters

    -
      - -
    • - path: Private Key File path -
    • - -
    - - - - -

    Usage:

    -This function calls SSL_CTX_use_PrivateKey_file(). - - - -

    Return value:

    -true - - - -
    - - - - -
    TLSContext:set_verify (flag1, ...)
    -
    - - Set the verification flags of this context. - - -

    Parameters

    -
      - -
    • - flag1: First Flag ["none", "peer", "verify_fail_if_no_peer_cert", - "client_once"] -
    • - -
    • - ...: More Flags [-"-] -
    • - -
    - - - - -

    Usage:

    -This function calls SSL_CTX_set_verify(). - - - -

    Return value:

    -true - - - -
    - - - - -
    TLSContext:set_verify_depth (depth)
    -
    - - Set the verification depth of this context. - - -

    Parameters

    -
      - -
    • - depth: Depth -
    • - -
    - - - - -

    Usage:

    -This function calls SSL_CTX_set_verify_depth(). - - - -

    Return value:

    -true - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.TLSSocket.html b/package/luci/documentation/api/modules/nixio.TLSSocket.html deleted file mode 100644 index 3d99a6482f..0000000000 --- a/package/luci/documentation/api/modules/nixio.TLSSocket.html +++ /dev/null @@ -1,575 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance nixio.TLSSocket

    - -

    - TLS Socket Object. - TLS Sockets contain the underlying socket and context in the fields - "socket" and "context".

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TLSSocket:accept () - Wait for a TLS handshake from a client.
    TLSSocket:connect () - Initiate the TLS handshake as client with the server.
    TLSSocket:read  (length) - Receive a message on the socket (This is an alias for recv).
    TLSSocket:recv (length) - Receive a message on the socket.
    TLSSocket:send (buffer, offset, length) - Send a message to the socket.
    TLSSocket:shutdown () - Shut down the TLS connection.
    TLSSocket:write (buffer, offset, length) - Send a message on the socket (This is an alias for send).
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    TLSSocket:accept ()
    -
    - - Wait for a TLS handshake from a client. - - - - - -

    Usage

    -
      - -
    • This function calls SSL_accept(). - -
    • You have to call either connect or accept before transmitting data. - -
    - - - -

    Return value:

    -true - - - -

    See also:

    - - -
    - - - - -
    TLSSocket:connect ()
    -
    - - Initiate the TLS handshake as client with the server. - - - - - -

    Usage

    -
      - -
    • This function calls SSL_connect(). - -
    • You have to call either connect or accept before transmitting data. - -
    - - - -

    Return value:

    -true - - - -

    See also:

    - - -
    - - - - -
    TLSSocket:read  (length)
    -
    - - Receive a message on the socket (This is an alias for recv). - See the recv description for more details. - - -

    Parameters

    -
      - -
    • - length: Amount of data to read (in Bytes). -
    • - -
    - - - - - - -

    Return value:

    -buffer containing data successfully read - - - -

    See also:

    - - -
    - - - - -
    TLSSocket:recv (length)
    -
    - - Receive a message on the socket. - - -

    Parameters

    -
      - -
    • - length: Amount of data to read (in Bytes). -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function calls SSL_read(). - -
    • Warning: It is not guaranteed that all requested data - is read at once. - You have to check the return value - the length of the buffer actually read - - or use the safe IO functions in the high-level IO utility module. - -
    • The length of the return buffer is limited by the (compile time) - nixio buffersize which is nixio.const.buffersize (8192 by default). - Any read request greater than that will be safely truncated to this value. - -
    - - - -

    Return value:

    -buffer containing data successfully read - - - -
    - - - - -
    TLSSocket:send (buffer, offset, length)
    -
    - - Send a message to the socket. - - -

    Parameters

    -
      - -
    • - buffer: Buffer holding the data to be written. -
    • - -
    • - offset: Offset to start reading the buffer from. (optional) -
    • - -
    • - length: Length of chunk to read from the buffer. (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function calls SSL_write(). - -
    • Warning: It is not guaranteed that all data - in the buffer is written at once. - You have to check the return value - the number of bytes actually written - - or use the safe IO functions in the high-level IO utility module. - -
    • Unlike standard Lua indexing the lowest offset and default is 0. - -
    - - - -

    Return value:

    -number of bytes written - - - -
    - - - - -
    TLSSocket:shutdown ()
    -
    - - Shut down the TLS connection. - - - - - -

    Usage:

    -This function calls SSL_shutdown(). - - - -

    Return value:

    -true - - - -
    - - - - -
    TLSSocket:write (buffer, offset, length)
    -
    - - Send a message on the socket (This is an alias for send). - See the send description for a detailed description. - - -

    Parameters

    -
      - -
    • - buffer: Buffer holding the data to be written. -
    • - -
    • - offset: Offset to start reading the buffer from. (optional) -
    • - -
    • - length: Length of chunk to read from the buffer. (optional) -
    • - -
    - - - - - - -

    Return value:

    -number of bytes written - - - -

    See also:

    - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.UnifiedIO.html b/package/luci/documentation/api/modules/nixio.UnifiedIO.html deleted file mode 100644 index 1717980841..0000000000 --- a/package/luci/documentation/api/modules/nixio.UnifiedIO.html +++ /dev/null @@ -1,767 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Object Instance nixio.UnifiedIO

    - -

    - Unified high-level I/O utility API for Files, Sockets and TLS-Sockets. - These functions are added to the object function tables by doing - require "nixio.util", can be used on all nixio IO Descriptors and - are based on the shared low-level read() and write() functions.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    UnifiedIO:blocksource (blocksize, limit) - Create a block-based iterator.
    UnifiedIO:close () - Close the descriptor.
    UnifiedIO:copy (fdout, size) - Copy data from the current descriptor to another one.
    UnifiedIO:copyz (fdout, size) - Copy data from the current descriptor to another one using kernel-space - copying if possible.
    UnifiedIO:is_file () - Test whether the I/O-Descriptor is a file.
    UnifiedIO:is_socket () - Test whether the I/O-Descriptor is a socket.
    UnifiedIO:is_tls_socket () - Test whether the I/O-Descriptor is a TLS socket.
    UnifiedIO:linesource (limit) - Create a line-based iterator.
    UnifiedIO:readall (length) - Read a block of data and wait until all data is available.
    UnifiedIO:sink (close_when_done) - Create a sink.
    UnifiedIO:writeall (block) - Write a block of data and wait until all data is written.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    UnifiedIO:blocksource (blocksize, limit)
    -
    - - Create a block-based iterator. - - -

    Parameters

    -
      - -
    • - blocksize: Advisory blocksize (optional) -
    • - -
    • - limit: Amount of data to consume (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function uses the low-level read function of the descriptor. - -
    • The blocksize given is only advisory and to be seen as an upper limit, - if an underlying read returns less bytes the chunk is nevertheless returned. - -
    • If the limit parameter is omitted, the iterator returns data - until an end-of-file, end-of-stream, connection shutdown or similar happens. - -
    • The iterator will not buffer so it is safe to mix with calls to read. - -
    • If the descriptor is non-blocking the iterator may fail with EAGAIN. - -
    • The iterator can be used as an LTN12 source. - -
    - - - -

    Return value:

    -Block-based Iterator - - - -
    - - - - -
    UnifiedIO:close ()
    -
    - - Close the descriptor. - - - - - -

    Usage:

    -If the descriptor is a TLS-socket the underlying descriptor is - closed without touching the TLS connection. - - - -

    Return value:

    -true - - - -
    - - - - -
    UnifiedIO:copy (fdout, size)
    -
    - - Copy data from the current descriptor to another one. - - -

    Parameters

    -
      - -
    • - fdout: Target Descriptor -
    • - -
    • - size: Bytes to copy (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function uses the blocksource function of the source descriptor - and the sink function of the target descriptor. - -
    • If the limit parameter is omitted, data is copied - until an end-of-file, end-of-stream, connection shutdown or similar happens. - -
    • If the descriptor is non-blocking the function may fail with EAGAIN. - -
    - - - -

    Return values:

    -
      - -
    1. bytes that were successfully written if no error occurred - -
    2. - reserved for error code - - -
    3. - reserved for error message - - -
    4. bytes that were successfully written even if an error occurred - -
    - - - -
    - - - - -
    UnifiedIO:copyz (fdout, size)
    -
    - - Copy data from the current descriptor to another one using kernel-space - copying if possible. - - -

    Parameters

    -
      - -
    • - fdout: Target Descriptor -
    • - -
    • - size: Bytes to copy (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function uses the sendfile() syscall to copy the data or the - blocksource function of the source descriptor and the sink function - of the target descriptor as a fallback mechanism. - -
    • If the limit parameter is omitted, data is copied - until an end-of-file, end-of-stream, connection shutdown or similar happens. - -
    • If the descriptor is non-blocking the function may fail with EAGAIN. - -
    - - - -

    Return values:

    -
      - -
    1. bytes that were successfully written if no error occurred - -
    2. - reserved for error code - - -
    3. - reserved for error message - - -
    4. bytes that were successfully written even if an error occurred - -
    - - - -
    - - - - -
    UnifiedIO:is_file ()
    -
    - - Test whether the I/O-Descriptor is a file. - - - - - - - -

    Return value:

    -boolean - - - -
    - - - - -
    UnifiedIO:is_socket ()
    -
    - - Test whether the I/O-Descriptor is a socket. - - - - - - - -

    Return value:

    -boolean - - - -
    - - - - -
    UnifiedIO:is_tls_socket ()
    -
    - - Test whether the I/O-Descriptor is a TLS socket. - - - - - - - -

    Return value:

    -boolean - - - -
    - - - - -
    UnifiedIO:linesource (limit)
    -
    - - Create a line-based iterator. - Lines may end with either \n or \r\n, these control chars are not included - in the return value. - - -

    Parameters

    -
      - -
    • - limit: Line limit -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function uses the low-level read function of the descriptor. - -
    • Note: This function uses an internal buffer to read - ahead. Do NOT mix calls to read(all) and the returned iterator. If you want - to stop reading line-based and want to use the read(all) functions instead - you can pass "true" to the iterator which will flush the buffer - and return the bufferd data. - -
    • If the limit parameter is omitted, this function uses the nixio - buffersize (8192B by default). - -
    • If the descriptor is non-blocking the iterator may fail with EAGAIN. - -
    • The iterator can be used as an LTN12 source. - -
    - - - -

    Return value:

    -Line-based Iterator - - - -
    - - - - -
    UnifiedIO:readall (length)
    -
    - - Read a block of data and wait until all data is available. - - -

    Parameters

    -
      - -
    • - length: Bytes to read (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function uses the low-level read function of the descriptor. - -
    • If the length parameter is omitted, this function returns all data - that can be read before an end-of-file, end-of-stream, connection shutdown - or similar happens. - -
    • If the descriptor is non-blocking this function may fail with EAGAIN. - -
    - - - -

    Return values:

    -
      - -
    1. data that was successfully read if no error occurred - -
    2. - reserved for error code - - -
    3. - reserved for error message - - -
    4. data that was successfully read even if an error occurred - -
    - - - -
    - - - - -
    UnifiedIO:sink (close_when_done)
    -
    - - Create a sink. - This sink will simply write all data that it receives and optionally - close the descriptor afterwards. - - -

    Parameters

    -
      - -
    • - close_when_done: (optional, boolean) -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function uses the writeall function of the descriptor. - -
    • If the descriptor is non-blocking the sink may fail with EAGAIN. - -
    • The iterator can be used as an LTN12 sink. - -
    - - - -

    Return value:

    -Sink - - - -
    - - - - -
    UnifiedIO:writeall (block)
    -
    - - Write a block of data and wait until all data is written. - - -

    Parameters

    -
      - -
    • - block: Bytes to write -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function uses the low-level write function of the descriptor. - -
    • If the descriptor is non-blocking this function may fail with EAGAIN. - -
    - - - -

    Return values:

    -
      - -
    1. bytes that were successfully written if no error occurred - -
    2. - reserved for error code - - -
    3. - reserved for error message - - -
    4. bytes that were successfully written even if an error occurred - -
    - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.bin.html b/package/luci/documentation/api/modules/nixio.bin.html deleted file mode 100644 index fd82879129..0000000000 --- a/package/luci/documentation/api/modules/nixio.bin.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class nixio.bin

    - -

    - Binary operations and conversion.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    b64decode (buffer) - Base64 decode a given buffer.
    b64encode (buffer) - Base64 encode a given buffer.
    crc32 (buffer, initial) - Calculate the CRC32 value of a buffer.
    hexlify (buffer) - Return a hexadecimal ASCII represantation of the content of a buffer.
    unhexlify (hexvalue) - Return a binary buffer from a hexadecimal ASCII representation.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    b64decode (buffer)
    -
    - - Base64 decode a given buffer. - - -

    Parameters

    -
      - -
    • - buffer: Base 64 Encoded data -
    • - -
    - - - - - - -

    Return value:

    -binary data - - - -
    - - - - -
    b64encode (buffer)
    -
    - - Base64 encode a given buffer. - - -

    Parameters

    -
      - -
    • - buffer: Buffer -
    • - -
    - - - - - - -

    Return value:

    -base64 encoded buffer - - - -
    - - - - -
    crc32 (buffer, initial)
    -
    - - Calculate the CRC32 value of a buffer. - - -

    Parameters

    -
      - -
    • - buffer: Buffer -
    • - -
    • - initial: Initial CRC32 value (optional) -
    • - -
    - - - - - - -

    Return value:

    -crc32 value - - - -
    - - - - -
    hexlify (buffer)
    -
    - - Return a hexadecimal ASCII represantation of the content of a buffer. - - -

    Parameters

    -
      - -
    • - buffer: Buffer -
    • - -
    - - - - - - -

    Return value:

    -representation using characters [0-9a-f] - - - -
    - - - - -
    unhexlify (hexvalue)
    -
    - - Return a binary buffer from a hexadecimal ASCII representation. - - -

    Parameters

    -
      - -
    • - hexvalue: representation using characters [0-9a-f] -
    • - -
    - - - - - - -

    Return value:

    -binary data - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.bit.html b/package/luci/documentation/api/modules/nixio.bit.html deleted file mode 100644 index b29c29d335..0000000000 --- a/package/luci/documentation/api/modules/nixio.bit.html +++ /dev/null @@ -1,744 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class nixio.bit

    - -

    - Bitfield operators and mainpulation functions. - Can be used as a drop-in replacement for bitlib.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    arshift (oper, shift) - Arithmetically right shift a number.
    band (oper1, oper2, ...) - Bitwise AND several numbers.
    bnot (oper) - Invert given number.
    bor (oper1, oper2, ...) - Bitwise OR several numbers.
    bxor (oper1, oper2, ...) - Bitwise XOR several numbers.
    cast (oper) - Cast a number to the bit-operating range.
    check (bitfield, flag1, ...) - Checks whether given flags are set in a bitfield.
    div (oper1, oper2, ...) - Integer division of 2 or more numbers.
    lshift (oper, shift) - Left shift a number.
    rshift (oper, shift) - Right shift a number.
    set (bitfield, flag1, ...) - Sets one or more flags of a bitfield.
    unset (bitfield, flag1, ...) - Unsets one or more flags of a bitfield.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    arshift (oper, shift)
    -
    - - Arithmetically right shift a number. - - -

    Parameters

    -
      - -
    • - oper: number -
    • - -
    • - shift: bits to shift -
    • - -
    - - - - - - -

    Return value:

    -number - - - -
    - - - - -
    band (oper1, oper2, ...)
    -
    - - Bitwise AND several numbers. - - -

    Parameters

    -
      - -
    • - oper1: First Operand -
    • - -
    • - oper2: Second Operand -
    • - -
    • - ...: More Operands -
    • - -
    - - - - - - -

    Return value:

    -number - - - -
    - - - - -
    bnot (oper)
    -
    - - Invert given number. - - -

    Parameters

    -
      - -
    • - oper: Operand -
    • - -
    - - - - - - -

    Return value:

    -number - - - -
    - - - - -
    bor (oper1, oper2, ...)
    -
    - - Bitwise OR several numbers. - - -

    Parameters

    -
      - -
    • - oper1: First Operand -
    • - -
    • - oper2: Second Operand -
    • - -
    • - ...: More Operands -
    • - -
    - - - - - - -

    Return value:

    -number - - - -
    - - - - -
    bxor (oper1, oper2, ...)
    -
    - - Bitwise XOR several numbers. - - -

    Parameters

    -
      - -
    • - oper1: First Operand -
    • - -
    • - oper2: Second Operand -
    • - -
    • - ...: More Operands -
    • - -
    - - - - - - -

    Return value:

    -number - - - -
    - - - - -
    cast (oper)
    -
    - - Cast a number to the bit-operating range. - - -

    Parameters

    -
      - -
    • - oper: number -
    • - -
    - - - - - - -

    Return value:

    -number - - - -
    - - - - -
    check (bitfield, flag1, ...)
    -
    - - Checks whether given flags are set in a bitfield. - - -

    Parameters

    -
      - -
    • - bitfield: Bitfield -
    • - -
    • - flag1: First Flag -
    • - -
    • - ...: More Flags -
    • - -
    - - - - - - -

    Return value:

    -true when all flags are set, otherwise false - - - -
    - - - - -
    div (oper1, oper2, ...)
    -
    - - Integer division of 2 or more numbers. - - -

    Parameters

    -
      - -
    • - oper1: Operand 1 -
    • - -
    • - oper2: Operand 2 -
    • - -
    • - ...: More Operands -
    • - -
    - - - - - - -

    Return value:

    -number - - - -
    - - - - -
    lshift (oper, shift)
    -
    - - Left shift a number. - - -

    Parameters

    -
      - -
    • - oper: number -
    • - -
    • - shift: bits to shift -
    • - -
    - - - - - - -

    Return value:

    -number - - - -
    - - - - -
    rshift (oper, shift)
    -
    - - Right shift a number. - - -

    Parameters

    -
      - -
    • - oper: number -
    • - -
    • - shift: bits to shift -
    • - -
    - - - - - - -

    Return value:

    -number - - - -
    - - - - -
    set (bitfield, flag1, ...)
    -
    - - Sets one or more flags of a bitfield. - - -

    Parameters

    -
      - -
    • - bitfield: Bitfield -
    • - -
    • - flag1: First Flag -
    • - -
    • - ...: More Flags -
    • - -
    - - - - - - -

    Return value:

    -altered bitfield - - - -
    - - - - -
    unset (bitfield, flag1, ...)
    -
    - - Unsets one or more flags of a bitfield. - - -

    Parameters

    -
      - -
    • - bitfield: Bitfield -
    • - -
    • - flag1: First Flag -
    • - -
    • - ...: More Flags -
    • - -
    - - - - - - -

    Return value:

    -altered bitfield - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.crypto.html b/package/luci/documentation/api/modules/nixio.crypto.html deleted file mode 100644 index 79a74584d4..0000000000 --- a/package/luci/documentation/api/modules/nixio.crypto.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class nixio.crypto

    - -

    - Cryptographical library.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - -
    hash (algo) - Create a hash object.
    hmac (algo, key) - Create a HMAC object.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    hash (algo)
    -
    - - Create a hash object. - - -

    Parameters

    -
      - -
    • - algo: Algorithm ["sha1", "md5"] -
    • - -
    - - - - - - -

    Return value:

    -CryptoHash Object - - - -
    - - - - -
    hmac (algo, key)
    -
    - - Create a HMAC object. - - -

    Parameters

    -
      - -
    • - algo: Algorithm ["sha1", "md5"] -
    • - -
    • - key: HMAC-Key -
    • - -
    - - - - - - -

    Return value:

    -CryptoHash Object - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.fs.html b/package/luci/documentation/api/modules/nixio.fs.html deleted file mode 100644 index 40d0a0636e..0000000000 --- a/package/luci/documentation/api/modules/nixio.fs.html +++ /dev/null @@ -1,1562 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class nixio.fs

    - -

    - Low-level and high-level filesystem manipulation library.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    access (path, mode1, ...) - Check user's permission on a file.
    basename (path) - Strip the directory part from a path.
    chmod (path, mode) - Change the file mode.
    chown (path, user, group) - (POSIX) Change owner and group of a file.
    copy (src, dest) - Copy a file, directory or symlink non-recursively preserving file mode, - timestamps, owner and group.
    copyr (src, dest) - Copy a file, directory or symlink recursively preserving file mode, - timestamps, owner and group.
    datacopy (src, dest, limit) - Copy data between files.
    dir (path) - Iterate over the entries of a directory.
    dirname (path) - Strip the base from a path.
    glob (pattern) - (POSIX) Find pathnames matching a pattern.
    lchown (path, user, group) - (POSIX) Change owner and group of a file and do not resolve - if target is a symlink.
    link (oldpath, newpath) - Create a hard link.
    lstat (path, field) - Get file status and attributes and do not resolve if target is a symlink.
    mkdir (path, mode) - Create a new directory.
    mkdirr (dest, mode) - Create a directory and all needed parent directories recursively.
    mkfifo (path, mode) - (POSIX) Create a FIFO (named pipe).
    move (src, dest) - Rename a file, directory or symlink non-recursively across filesystems.
    mover (src, dest) - Rename a file, directory or symlink recursively across filesystems.
    readfile (path, limit) - Read the contents of a file into a buffer.
    readlink (path) - (POSIX) Read the target of a symbolic link.
    realpath (path) - Return the cannonicalized absolute pathname.
    remove (path) - Remove a file or directory.
    rename (src, dest) - Renames a file or directory.
    rmdir (path) - Remove an empty directory.
    stat (path, field) - Get file status and attributes.
    statvfs (path) - (POSIX) Get filesystem statistics.
    symlink (oldpath, newpath) - (POSIX) Create a symbolic link.
    unlink (path) - Delete a name and - if no links are left - the associated file.
    utimes (path, actime, mtime) - Change file last access and last modification time.
    writefile (path, data) - Write a buffer into a file truncating the file first.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    access (path, mode1, ...)
    -
    - - Check user's permission on a file. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - mode1: First Mode to check ["f", "r", "w", "x"] -
    • - -
    • - ...: More Modes to check [-"-] -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    basename (path)
    -
    - - Strip the directory part from a path. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    - - - - -

    Usage:

    -This function cannot fail and will never return nil. - - - -

    Return value:

    -basename - - - -
    - - - - -
    chmod (path, mode)
    -
    - - Change the file mode. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - mode: File mode - [decimal mode number, "[-r][-w][-xsS][-r][-w][-xsS][-r][-w][-xtT]"] -
    • - -
    - - - - -

    Usage

    -
      - -
    • Windows only supports setting the write-protection through the - "Writable to others" bit. - -
    • Notice: The mode-flag for the functions - open, mkdir, mkfifo are affected by the umask. - -
    - - - -

    Return value:

    -true - - - -

    See also:

    - - -
    - - - - -
    chown (path, user, group)
    -
    - - (POSIX) Change owner and group of a file. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - user: User ID or Username (optional) -
    • - -
    • - group: Group ID or Groupname (optional) -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    copy (src, dest)
    -
    - - Copy a file, directory or symlink non-recursively preserving file mode, - timestamps, owner and group. - - -

    Parameters

    -
      - -
    • - src: Source path -
    • - -
    • - dest: Destination path -
    • - -
    - - - - -

    Usage:

    -The destination must always be a full destination path e.g. do not - omit the basename even if source and destination basename are equal. - - - -

    Return value:

    -true - - - -
    - - - - -
    copyr (src, dest)
    -
    - - Copy a file, directory or symlink recursively preserving file mode, - timestamps, owner and group. - - -

    Parameters

    -
      - -
    • - src: Source path -
    • - -
    • - dest: Destination path -
    • - -
    - - - - -

    Usage:

    -The destination must always be a full destination path e.g. do not - omit the basename even if source and destination basename are equal. - - - -

    Return value:

    -true - - - -
    - - - - -
    datacopy (src, dest, limit)
    -
    - - Copy data between files. - - -

    Parameters

    -
      - -
    • - src: Source file path -
    • - -
    • - dest: Destination file path -
    • - -
    • - limit: Maximum bytes to copy (optional) -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    dir (path)
    -
    - - Iterate over the entries of a directory. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    - - - - -

    Usage:

    -The special entries "." and ".." are omitted. - - - -

    Return value:

    -directory iterator returning one entry per call - - - -
    - - - - -
    dirname (path)
    -
    - - Strip the base from a path. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    - - - - -

    Usage:

    -This function cannot fail and will never return nil. - - - -

    Return value:

    -dirname - - - -
    - - - - -
    glob (pattern)
    -
    - - (POSIX) Find pathnames matching a pattern. - - -

    Parameters

    -
      - -
    • - pattern: Pattern -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. path iterator - -
    2. number of matches - -
    - - - -
    - - - - -
    lchown (path, user, group)
    -
    - - (POSIX) Change owner and group of a file and do not resolve - if target is a symlink. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - user: User ID or Username (optional) -
    • - -
    • - group: Group ID or Groupname (optional) -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    link (oldpath, newpath)
    -
    - - Create a hard link. - - -

    Parameters

    -
      - -
    • - oldpath: Path -
    • - -
    • - newpath: Path -
    • - -
    - - - - -

    Usage:

    -This function calls link() on POSIX and CreateHardLink() on Windows. - - - -

    Return value:

    -true - - - -
    - - - - -
    lstat (path, field)
    -
    - - Get file status and attributes and do not resolve if target is a symlink. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - field: Only return a specific field, not the whole table (optional) -
    • - -
    - - - - - - -

    Return value:

    -Table containing attributes (see stat for a detailed description) - - - -

    See also:

    - - -
    - - - - -
    mkdir (path, mode)
    -
    - - Create a new directory. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - mode: File mode (optional, see chmod and umask) -
    • - -
    - - - - - - -

    Return value:

    -true - - - -

    See also:

    - - -
    - - - - -
    mkdirr (dest, mode)
    -
    - - Create a directory and all needed parent directories recursively. - - -

    Parameters

    -
      - -
    • - dest: Destination path -
    • - -
    • - mode: File mode (optional, see chmod and umask) -
    • - -
    - - - - - - -

    Return value:

    -true - - - -

    See also:

    - - -
    - - - - -
    mkfifo (path, mode)
    -
    - - (POSIX) Create a FIFO (named pipe). - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - mode: File mode (optional, see chmod and umask) -
    • - -
    - - - - - - -

    Return value:

    -true - - - -

    See also:

    - - -
    - - - - -
    move (src, dest)
    -
    - - Rename a file, directory or symlink non-recursively across filesystems. - - -

    Parameters

    -
      - -
    • - src: Source path -
    • - -
    • - dest: Destination path -
    • - -
    - - - - -

    Usage:

    -The destination must always be a full destination path e.g. do not - omit the basename even if source and destination basename are equal. - - - -

    Return value:

    -true - - - -
    - - - - -
    mover (src, dest)
    -
    - - Rename a file, directory or symlink recursively across filesystems. - - -

    Parameters

    -
      - -
    • - src: Source path -
    • - -
    • - dest: Destination path -
    • - -
    - - - - -

    Usage:

    -The destination must always be a full destination path e.g. do not - omit the basename even if source and destination basename are equal. - - - -

    Return value:

    -true - - - -
    - - - - -
    readfile (path, limit)
    -
    - - Read the contents of a file into a buffer. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - limit: Maximum bytes to read (optional) -
    • - -
    - - - - - - -

    Return value:

    -file contents - - - -
    - - - - -
    readlink (path)
    -
    - - (POSIX) Read the target of a symbolic link. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    - - - - - - -

    Return value:

    -target path - - - -
    - - - - -
    realpath (path)
    -
    - - Return the cannonicalized absolute pathname. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    - - - - - - -

    Return value:

    -absolute path - - - -
    - - - - -
    remove (path)
    -
    - - Remove a file or directory. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    rename (src, dest)
    -
    - - Renames a file or directory. - - -

    Parameters

    -
      - -
    • - src: Source path -
    • - -
    • - dest: Destination path -
    • - -
    - - - - -

    Usage:

    -It is normally not possible to rename files across fileystems. - - - -

    Return value:

    -true - - - -
    - - - - -
    rmdir (path)
    -
    - - Remove an empty directory. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    stat (path, field)
    -
    - - Get file status and attributes. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - field: Only return a specific field, not the whole table (optional) -
    • - -
    - - - - - - -

    Return value:

    -Table containing:
      -
    • atime = Last access timestamp
    • -
    • blksize = Blocksize (POSIX only)
    • -
    • blocks = Blocks used (POSIX only)
    • -
    • ctime = Creation timestamp
    • -
    • dev = Device ID
    • -
    • gid = Group ID
    • -
    • ino = Inode
    • -
    • modedec = Mode converted into a decimal number
    • -
    • modestr = Mode as string as returned by ls -l
    • -
    • mtime = Last modification timestamp
    • -
    • nlink = Number of links
    • -
    • rdev = Device ID (if special file)
    • -
    • size = Size in bytes
    • -
    • type = ["reg", "dir", "chr", "blk", "fifo", "lnk", "sock"]
    • -
    • uid = User ID
    • -
    - - - -
    - - - - -
    statvfs (path)
    -
    - - (POSIX) Get filesystem statistics. - - -

    Parameters

    -
      - -
    • - path: Path to any file within the filesystem. -
    • - -
    - - - - - - -

    Return value:

    -Table containing:
      -
    • bavail = available blocks
    • -
    • bfree = free blocks
    • -
    • blocks = number of fragments
    • -
    • frsize = fragment size
    • -
    • favail = available inodes
    • -
    • ffree = free inodes
    • -
    • files = inodes
    • -
    • flag = flags
    • -
    • fsid = filesystem ID
    • -
    • namemax = maximum filename length
    • -
    - - - -
    - - - - -
    symlink (oldpath, newpath)
    -
    - - (POSIX) Create a symbolic link. - - -

    Parameters

    -
      - -
    • - oldpath: Path -
    • - -
    • - newpath: Path -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    unlink (path)
    -
    - - Delete a name and - if no links are left - the associated file. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    utimes (path, actime, mtime)
    -
    - - Change file last access and last modification time. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - actime: Last access timestamp (optional, default: current time) -
    • - -
    • - mtime: Last modification timestamp (optional, default: actime) -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    writefile (path, data)
    -
    - - Write a buffer into a file truncating the file first. - - -

    Parameters

    -
      - -
    • - path: Path -
    • - -
    • - data: Data to write -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/api/modules/nixio.html b/package/luci/documentation/api/modules/nixio.html deleted file mode 100644 index 8ee0f62dc7..0000000000 --- a/package/luci/documentation/api/modules/nixio.html +++ /dev/null @@ -1,2405 +0,0 @@ - - - - Reference - - - - - -
    - -
    - -
    -
    -
    - -
    - - - -
    - -

    Class nixio

    - -

    - General POSIX IO library.

    - - - - - - - -

    Functions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bind (host, port, family, socktype) - Create a new socket and bind it to a network address.
    chdir (path) - Change the working directory.
    closelog () - (POSIX) Close the connection to the system logger.
    connect (host, port, family, socktype) - Create a new socket and connect to a network address.
    crypt (key, salt) - (POSIX) Encrypt a user password.
    dup (oldfd, newfd) - Duplicate a file descriptor.
    errno () - Get the last system error code.
    exec (executable, ...) - Execute a file to replace the current process.
    exece (executable, arguments, environment) - Execute a file with a custom environment to replace the current process.
    execp (executable, ...) - Invoke the shell and execute a file to replace the current process.
    fork () - (POSIX) Clone the current process.
    getaddrinfo (host, family, service) - Look up a hostname and service via DNS.
    getcwd () - Get the current working directory.
    getenv (variable) - Get the current environment table or a specific environment variable.
    getgid () - (POSIX) Get the group id of the current process.
    getgr (group) - (POSIX) Get all or a specific user group.
    getifaddrs () - (Linux, BSD) Get a list of available network interfaces and their addresses.
    getnameinfo (ipaddr) - Reverse look up an IP-Address via DNS.
    getpid () - Get the ID of the current process.
    getppid () - (POSIX) Get the parent process id of the current process.
    getproto (proto) - Get all or a specifc proto entry.
    getprotobyname (name) - Get protocol entry by name.
    getprotobynumber (proto) - Get protocol entry by number.
    getpw (user) - (POSIX) Get all or a specific user account.
    getsp (user) - (Linux, Solaris) Get all or a specific shadow password entry.
    getuid () - (POSIX) Get the user id of the current process.
    kill (target, signal) - (POSIX) Send a signal to one or more processes.
    nanosleep (seconds, nanoseconds) - Sleep for a specified amount of time.
    nice (nice) - (POSIX) Change priority of current process.
    open (path, flags, mode) - Open a file.
    open_flags (flag1, ...) - Generate flags for a call to open().
    openlog (ident, flag1, ...) - (POSIX) Open a connection to the system logger.
    pipe () - Create a pipe.
    poll (fds, timeout) - Wait for some event on a file descriptor.
    poll_flags (mode1, ...) - Generate events-bitfield or parse revents-bitfield for poll.
    sendfile (socket, file, length) - (POSIX) Send data from a file to a socket in kernel-space.
    setenv (variable, value) - Set or unset a environment variable.
    setgid (gid) - (POSIX) Set the group id of the current process.
    setlogmask (priority) - (POSIX) Set the logmask of the system logger for current process.
    setsid () - (POSIX) Create a new session and set the process group ID.
    setuid (gid) - (POSIX) Set the user id of the current process.
    signal (signal, handler) - Ignore or use set the default handler for a signal.
    socket (domain, type) - Create a new socket.
    splice (fdin, fdout, length, flags) - (Linux) Send data from / to a pipe in kernel-space.
    splice_flags (flag1, ...) - (Linux) Generate a flag bitfield for a call to splice.
    strerror (errno) - Get the error message for the corresponding error code.
    sysinfo () - (Linux) Get overall system statistics.
    syslog (priority) - (POSIX) Write a message to the system logger.
    times () - (POSIX) Get process times.
    tls (mode) - Create a new TLS context.
    umask (mask) - Sets the file mode creation mask.
    uname () - (POSIX) Get information about current system and kernel.
    waitpid (pid, flag1, ...) - (POSIX) Wait for a process to change state.
    - - - - - - -
    -
    - - -

    Functions

    -
    - - - -
    bind (host, port, family, socktype)
    -
    - - Create a new socket and bind it to a network address. - This function is a shortcut for calling nixio.socket and then bind() - on the socket object. - - -

    Parameters

    -
      - -
    • - host: Hostname or IP-Address (optional, default: all addresses) -
    • - -
    • - port: Port or service description -
    • - -
    • - family: Address family ["any", "inet", "inet6"] -
    • - -
    • - socktype: Socket Type ["stream", "dgram"] -
    • - -
    - - - - -

    Usage

    -
      - -
    • This functions calls getaddrinfo(), socket(), - setsockopt() and bind() but NOT listen(). - -
    • The reuseaddr-option is automatically set before binding. - -
    - - - -

    Return value:

    -Socket Object - - - -
    - - - - -
    chdir (path)
    -
    - - Change the working directory. - - -

    Parameters

    -
      - -
    • - path: New working directory -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    closelog ()
    -
    - - (POSIX) Close the connection to the system logger. - - - - - - - - - -
    - - - - -
    connect (host, port, family, socktype)
    -
    - - Create a new socket and connect to a network address. - This function is a shortcut for calling nixio.socket and then connect() - on the socket object. - - -

    Parameters

    -
      - -
    • - host: Hostname or IP-Address (optional, default: localhost) -
    • - -
    • - port: Port or service description -
    • - -
    • - family: Address family ["any", "inet", "inet6"] -
    • - -
    • - socktype: Socket Type ["stream", "dgram"] -
    • - -
    - - - - -

    Usage:

    -This functions calls getaddrinfo(), socket() and connect(). - - - -

    Return value:

    -Socket Object - - - -
    - - - - -
    crypt (key, salt)
    -
    - - (POSIX) Encrypt a user password. - - -

    Parameters

    -
      - -
    • - key: Key -
    • - -
    • - salt: Salt -
    • - -
    - - - - - - -

    Return value:

    -password hash - - - -
    - - - - -
    dup (oldfd, newfd)
    -
    - - Duplicate a file descriptor. - - -

    Parameters

    -
      - -
    • - oldfd: Old descriptor [File Object, Socket Object (POSIX only)] -
    • - -
    • - newfd: New descriptor to serve as copy (optional) -
    • - -
    - - - - -

    Usage:

    -This funcation calls dup2() if newfd is set, otherwise dup(). - - - -

    Return value:

    -File Object of new descriptor - - - -
    - - - - -
    errno ()
    -
    - - Get the last system error code. - - - - - - - -

    Return value:

    -Error code - - - -
    - - - - -
    exec (executable, ...)
    -
    - - Execute a file to replace the current process. - - -

    Parameters

    -
      - -
    • - executable: Executable -
    • - -
    • - ...: Parameters -
    • - -
    - - - - -

    Usage

    -
      - -
    • The name of the executable is automatically passed as argv[0] - -
    • This function does not return on success. - -
    - - - - - -
    - - - - -
    exece (executable, arguments, environment)
    -
    - - Execute a file with a custom environment to replace the current process. - - -

    Parameters

    -
      - -
    • - executable: Executable -
    • - -
    • - arguments: Argument Table -
    • - -
    • - environment: Environment Table (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • The name of the executable is automatically passed as argv[0] - -
    • This function does not return on success. - -
    - - - - - -
    - - - - -
    execp (executable, ...)
    -
    - - Invoke the shell and execute a file to replace the current process. - - -

    Parameters

    -
      - -
    • - executable: Executable -
    • - -
    • - ...: Parameters -
    • - -
    - - - - -

    Usage

    -
      - -
    • The name of the executable is automatically passed as argv[0] - -
    • This function does not return on success. - -
    - - - - - -
    - - - - -
    fork ()
    -
    - - (POSIX) Clone the current process. - - - - - - - -

    Return value:

    -the child process id for the parent process, 0 for the child process - - - -
    - - - - -
    getaddrinfo (host, family, service)
    -
    - - Look up a hostname and service via DNS. - - -

    Parameters

    -
      - -
    • - host: hostname to lookup (optional) -
    • - -
    • - family: address family ["any", "inet", "inet6"] -
    • - -
    • - service: service name or port (optional) -
    • - -
    - - - - - - -

    Return value:

    -Table containing one or more tables containing:
      -
    • family = ["inet", "inet6"]
    • -
    • socktype = ["stream", "dgram", "raw"]
    • -
    • address = Resolved IP-Address
    • -
    • port = Resolved Port (if service was given)
    • -
    - - - -
    - - - - -
    getcwd ()
    -
    - - Get the current working directory. - - - - - - - -

    Return value:

    -workign directory - - - -
    - - - - -
    getenv (variable)
    -
    - - Get the current environment table or a specific environment variable. - - -

    Parameters

    -
      - -
    • - variable: Variable (optional) -
    • - -
    - - - - - - -

    Return value:

    -environment table or single environment variable - - - -
    - - - - -
    getgid ()
    -
    - - (POSIX) Get the group id of the current process. - - - - - - - -

    Return value:

    -process group id - - - -
    - - - - -
    getgr (group)
    -
    - - (POSIX) Get all or a specific user group. - - -

    Parameters

    -
      - -
    • - group: Group ID or groupname (optional) -
    • - -
    - - - - - - -

    Return value:

    -Table containing:
      -
    • name = Group Name
    • -
    • gid = Group ID
    • -
    • passwd = Password
    • -
    • mem = {Member #1, Member #2, ...}
    • -
    - - - -
    - - - - -
    getifaddrs ()
    -
    - - (Linux, BSD) Get a list of available network interfaces and their addresses. - - - - - - - -

    Return value:

    -Table containing one or more tables containing:
      -
    • name = Interface Name
    • -
    • family = ["inet", "inet6", "packet"]
    • -
    • addr = Interface Address (IPv4, IPv6, MAC, ...)
    • -
    • broadaddr = Broadcast Address
    • -
    • dstaddr = Destination Address (Point-to-Point)
    • -
    • netmask = Netmask (if available)
    • -
    • prefix = Prefix (if available)
    • -
    • flags = Table of interface flags (up, multicast, loopback, ...)
    • -
    • data = Statistics (Linux, "packet"-family)
    • -
    • hatype = Hardware Type Identifier (Linix, "packet"-family)
    • -
    • ifindex = Interface Index (Linux, "packet"-family)
    • -
    - - - -
    - - - - -
    getnameinfo (ipaddr)
    -
    - - Reverse look up an IP-Address via DNS. - - -

    Parameters

    -
      - -
    • - ipaddr: IPv4 or IPv6-Address -
    • - -
    - - - - - - -

    Return value:

    -FQDN - - - -
    - - - - -
    getpid ()
    -
    - - Get the ID of the current process. - - - - - - - -

    Return value:

    -process id - - - -
    - - - - -
    getppid ()
    -
    - - (POSIX) Get the parent process id of the current process. - - - - - - - -

    Return value:

    -parent process id - - - -
    - - - - -
    getproto (proto)
    -
    - - Get all or a specifc proto entry. - - -

    Parameters

    -
      - -
    • - proto: protocol number or name to lookup (optional) -
    • - -
    - - - - - - -

    Return value:

    -Table (or if no parameter is given, a table of tables) - containing the following fields:
      -
    • name = Protocol Name
    • -
    • proto = Protocol Number
    • -
    • aliases = Table of alias names
    • -
    - - - -
    - - - - -
    getprotobyname (name)
    -
    - - Get protocol entry by name. - - -

    Parameters

    -
      - -
    • - name: protocol name to lookup -
    • - -
    - - - - -

    Usage:

    -This function returns nil if the given protocol is unknown. - - - -

    Return value:

    -Table containing the following fields:
      -
    • name = Protocol Name
    • -
    • proto = Protocol Number
    • -
    • aliases = Table of alias names
    • -
    - - - -
    - - - - -
    getprotobynumber (proto)
    -
    - - Get protocol entry by number. - - -

    Parameters

    -
      - -
    • - proto: protocol number to lookup -
    • - -
    - - - - -

    Usage:

    -This function returns nil if the given protocol is unknown. - - - -

    Return value:

    -Table containing the following fields:
      -
    • name = Protocol Name
    • -
    • proto = Protocol Number
    • -
    • aliases = Table of alias names
    • -
    - - - -
    - - - - -
    getpw (user)
    -
    - - (POSIX) Get all or a specific user account. - - -

    Parameters

    -
      - -
    • - user: User ID or username (optional) -
    • - -
    - - - - - - -

    Return value:

    -Table containing:
      -
    • name = Name
    • -
    • uid = ID
    • -
    • gid = Group ID
    • -
    • passwd = Password
    • -
    • dir = Home directory
    • -
    • gecos = Information
    • -
    • shell = Shell
    • -
    - - - -
    - - - - -
    getsp (user)
    -
    - - (Linux, Solaris) Get all or a specific shadow password entry. - - -

    Parameters

    -
      - -
    • - user: username (optional) -
    • - -
    - - - - - - -

    Return value:

    -Table containing:
      -
    • namp = Name
    • -
    • expire = Expiration Date
    • -
    • flag = Flags
    • -
    • inact = Inactivity Date
    • -
    • lstchg = Last change
    • -
    • max = Maximum
    • -
    • min = Minimum
    • -
    • warn = Warning
    • -
    • pwdp = Password Hash
    • -
    - - - -
    - - - - -
    getuid ()
    -
    - - (POSIX) Get the user id of the current process. - - - - - - - -

    Return value:

    -process user id - - - -
    - - - - -
    kill (target, signal)
    -
    - - (POSIX) Send a signal to one or more processes. - - -

    Parameters

    -
      - -
    • - target: Target process of process group. -
    • - -
    • - signal: Signal to send -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    nanosleep (seconds, nanoseconds)
    -
    - - Sleep for a specified amount of time. - - -

    Parameters

    -
      - -
    • - seconds: Seconds to wait (optional) -
    • - -
    • - nanoseconds: Nanoseconds to wait (optional) -
    • - -
    - - - - -

    Usage

    -
      - -
    • Not all systems support nanosecond precision but you can expect - to have at least maillisecond precision. - -
    • This function is not signal-protected and may fail with EINTR. - -
    - - - -

    Return value:

    -true - - - -
    - - - - -
    nice (nice)
    -
    - - (POSIX) Change priority of current process. - - -

    Parameters

    -
      - -
    • - nice: Nice Value -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    open (path, flags, mode)
    -
    - - Open a file. - - -

    Parameters

    -
      - -
    • - path: Filesystem path to open -
    • - -
    • - flags: Flag string or number (see open_flags). - ["r", "r+", "w", "w+", "a", "a+"] -
    • - -
    • - mode: File mode for newly created files (see chmod, umask). -
    • - -
    - - - - -

    Usage:

    -Although this function also supports the traditional fopen() - file flags it does not create a file stream but uses the open() syscall. - - - -

    Return value:

    -File Object - - - -

    See also:

    - - -
    - - - - -
    open_flags (flag1, ...)
    -
    - - Generate flags for a call to open(). - - -

    Parameters

    -
      - -
    • - flag1: First Flag ["append", "creat", "excl", "nonblock", "ndelay", - "sync", "trunc", "rdonly", "wronly", "rdwr"] -
    • - -
    • - ...: More Flags [-"-] -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function cannot fail and will never return nil. - -
    • The "nonblock" and "ndelay" flags are aliases. - -
    • The "nonblock", "ndelay" and "sync" flags are no-ops on Windows. - -
    - - - -

    Return value:

    -flag to be used as second parameter to open - - - -
    - - - - -
    openlog (ident, flag1, ...)
    -
    - - (POSIX) Open a connection to the system logger. - - -

    Parameters

    -
      - -
    • - ident: Identifier -
    • - -
    • - flag1: Flag 1 ["cons", "nowait", "pid", "perror", "ndelay", "odelay"] -
    • - -
    • - ...: More flags [-"-] -
    • - -
    - - - - - - - - -
    - - - - -
    pipe ()
    -
    - - Create a pipe. - - - - - - - -

    Return values:

    -
      - -
    1. File Object of the read end - -
    2. File Object of the write end - -
    - - - -
    - - - - -
    poll (fds, timeout)
    -
    - - Wait for some event on a file descriptor. - poll() sets the revents-field of the tables provided by fds to a bitfield - indicating the events that occurred. - - -

    Parameters

    -
      - -
    • - fds: Table containing one or more tables containing
        -
      • fd = I/O Descriptor [Socket Object, File Object (POSIX)]
      • -
      • events = events to wait for (bitfield generated with poll_flags)
      • -
      -
    • - -
    • - timeout: Timeout in milliseconds -
    • - -
    - - - - -

    Usage

    -
      - -
    • This function works in-place on the provided table and only - writes the revents field, you can use other fields on your demand. - -
    • All metamethods on the tables provided as fds are ignored. - -
    • The revents-fields are not reset when the call times out. - You have to check the first return value to be 0 to handle this case. - -
    • If you want to wait on a TLS-Socket you have to use the underlying - socket instead. - -
    • On Windows poll is emulated through select(), can only be used - on socket descriptors and cannot take more than 64 descriptors per call. - -
    • This function is not signal-protected and may fail with EINTR. - -
    - - - -

    Return values:

    -
      - -
    1. number of ready IO descriptors - -
    2. the fds-table with revents-fields set - -
    - - - -

    See also:

    - - -
    - - - - -
    poll_flags (mode1, ...)
    -
    - - Generate events-bitfield or parse revents-bitfield for poll. - - -

    Parameters

    -
      - -
    • - mode1: revents-Flag bitfield returned from poll to parse OR - ["in", "out", "err", "pri" (POSIX), "hup" (POSIX), "nval" (POSIX)] -
    • - -
    • - ...: More mode strings for generating the flag [-"-] -
    • - -
    - - - - - - -

    Return value:

    -table with boolean fields reflecting the mode parameter - OR bitfield to use for the events-Flag field - - - -

    See also:

    - - -
    - - - - -
    sendfile (socket, file, length)
    -
    - - (POSIX) Send data from a file to a socket in kernel-space. - - -

    Parameters

    -
      - -
    • - socket: Socket Object -
    • - -
    • - file: File Object -
    • - -
    • - length: Amount of data to send (in Bytes). -
    • - -
    - - - - - - -

    Return value:

    -bytes sent - - - -
    - - - - -
    setenv (variable, value)
    -
    - - Set or unset a environment variable. - - -

    Parameters

    -
      - -
    • - variable: Variable -
    • - -
    • - value: Value (optional) -
    • - -
    - - - - -

    Usage:

    -The environment variable will be unset if value is omitted. - - - -

    Return value:

    -true - - - -
    - - - - -
    setgid (gid)
    -
    - - (POSIX) Set the group id of the current process. - - -

    Parameters

    -
      - -
    • - gid: New Group ID -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    setlogmask (priority)
    -
    - - (POSIX) Set the logmask of the system logger for current process. - - -

    Parameters

    -
      - -
    • - priority: Priority ["emerg", "alert", "crit", "err", "warning", - "notice", "info", "debug"] -
    • - -
    - - - - - - - - -
    - - - - -
    setsid ()
    -
    - - (POSIX) Create a new session and set the process group ID. - - - - - - - -

    Return value:

    -session id - - - -
    - - - - -
    setuid (gid)
    -
    - - (POSIX) Set the user id of the current process. - - -

    Parameters

    -
      - -
    • - gid: New User ID -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    signal (signal, handler)
    -
    - - Ignore or use set the default handler for a signal. - - -

    Parameters

    -
      - -
    • - signal: Signal -
    • - -
    • - handler: ["ign", "dfl"] -
    • - -
    - - - - - - -

    Return value:

    -true - - - -
    - - - - -
    socket (domain, type)
    -
    - - Create a new socket. - - -

    Parameters

    -
      - -
    • - domain: Domain ["inet", "inet6", "unix"] -
    • - -
    • - type: Type ["stream", "dgram", "raw"] -
    • - -
    - - - - - - -

    Return value:

    -Socket Object - - - -
    - - - - -
    splice (fdin, fdout, length, flags)
    -
    - - (Linux) Send data from / to a pipe in kernel-space. - - -

    Parameters

    -
      - -
    • - fdin: Input I/O descriptor -
    • - -
    • - fdout: Output I/O descriptor -
    • - -
    • - length: Amount of data to send (in Bytes). -
    • - -
    • - flags: (optional, bitfield generated by splice_flags) -
    • - -
    - - - - - - -

    Return value:

    -bytes sent - - - -

    See also:

    - - -
    - - - - -
    splice_flags (flag1, ...)
    -
    - - (Linux) Generate a flag bitfield for a call to splice. - - -

    Parameters

    -
      - -
    • - flag1: First Flag ["move", "nonblock", "more"] -
    • - -
    • - ...: More flags [-"-] -
    • - -
    - - - - - - -

    Return value:

    -Flag bitfield - - - -

    See also:

    - - -
    - - - - -
    strerror (errno)
    -
    - - Get the error message for the corresponding error code. - - -

    Parameters

    -
      - -
    • - errno: System error code -
    • - -
    - - - - - - -

    Return value:

    -Error message - - - -
    - - - - -
    sysinfo ()
    -
    - - (Linux) Get overall system statistics. - - - - - - - -

    Return value:

    -Table containing:
      -
    • uptime = system uptime in seconds
    • -
    • loads = {loadavg1, loadavg5, loadavg15}
    • -
    • totalram = total RAM
    • -
    • freeram = free RAM
    • -
    • sharedram = shared RAM
    • -
    • bufferram = buffered RAM
    • -
    • totalswap = total SWAP
    • -
    • freeswap = free SWAP
    • -
    • procs = number of running processes
    • -
    - - - -
    - - - - -
    syslog (priority)
    -
    - - (POSIX) Write a message to the system logger. - - -

    Parameters

    -
      - -
    • - priority: Priority ["emerg", "alert", "crit", "err", "warning", - "notice", "info", "debug"] -
    • - -
    - - - - - - - - -
    - - - - -
    times ()
    -
    - - (POSIX) Get process times. - - - - - - - -

    Return value:

    -Table containing:
      -
    • utime = user time
    • -
    • utime = system time
    • -
    • cutime = children user time
    • -
    • cstime = children system time
    • -
    - - - -
    - - - - -
    tls (mode)
    -
    - - Create a new TLS context. - - -

    Parameters

    -
      - -
    • - mode: TLS-Mode ["client", "server"] -
    • - -
    - - - - - - -

    Return value:

    -TLSContext Object - - - -
    - - - - -
    umask (mask)
    -
    - - Sets the file mode creation mask. - - -

    Parameters

    -
      - -
    • - mask: New creation mask (see chmod for format specifications) -
    • - -
    - - - - - - -

    Return values:

    -
      - -
    1. the old umask as decimal mode number - -
    2. the old umask as mode string - -
    - - - -
    - - - - -
    uname ()
    -
    - - (POSIX) Get information about current system and kernel. - - - - - - - -

    Return value:

    -Table containing:
      -
    • sysname = operating system
    • -
    • nodename = network name (usually hostname)
    • -
    • release = OS release
    • -
    • version = OS version
    • -
    • machine = hardware identifier
    • -
    - - - -
    - - - - -
    waitpid (pid, flag1, ...)
    -
    - - (POSIX) Wait for a process to change state. - - -

    Parameters

    -
      - -
    • - pid: Process ID (optional, default: any childprocess) -
    • - -
    • - flag1: Flag (optional) ["nohang", "untraced", "continued"] -
    • - -
    • - ...: More Flags [-"-] -
    • - -
    - - - - -

    Usage:

    -If the "nohang" is given this function becomes non-blocking. - - - -

    Return values:

    -
      - -
    1. process id of child or 0 if no child has changed state - -
    2. ["exited", "signaled", "stopped"] - -
    3. [exit code, terminate signal, stop signal] - -
    - - - -
    - - -
    - - - - - -
    - -
    - -
    -

    Valid XHTML 1.0!

    -
    - -
    - - diff --git a/package/luci/documentation/i18n.md b/package/luci/documentation/i18n.md deleted file mode 100644 index 226a406c2a..0000000000 --- a/package/luci/documentation/i18n.md +++ /dev/null @@ -1,19 +0,0 @@ -# General -Translations are saved in the folder po/ for each module and application. You find the reference in po/templates/.pot. The actual translation files can be found at po/[lang]/[package].po . - -In order to use the commands below you need to have the _gettext'' utilities (''msgcat'', ''msgfmt'', ''msgmerge_) installed on your system. - -# Rebuild po files -If you want to rebuild the translations after you made changes to a package this is an easy way: - - ./build/i18n-scan.pl applications/[application] > applications/[application]/po/templates/[application_basename].pot - ./build/i18n-update.pl applications/[application]/po - - Example: - ./build/i18n-scan.pl applications/luci-app-firewall > applications/luci-app-firewall/po/templates/firewall.pot - ./build/i18n-update.pl applications/luci-app-firewall/po - (note that the directory argument can be omitted for i18n-update.pl to update all apps) - -*Note:* Some packages share translation files, in this case you need to scan through all their folders. The first command from above should then be: - - ./build/i18n-scan.pl applications/[package-1] applications/[package-2] applications/[package-n] > [location of shared template]/[application].pot diff --git a/package/luci/libs/luci-lib-httpclient/Makefile b/package/luci/libs/luci-lib-httpclient/Makefile deleted file mode 100644 index 1e7fd1bc85..0000000000 --- a/package/luci/libs/luci-lib-httpclient/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=HTTP(S) client library -LUCI_DEPENDS:=+luci-base +luci-lib-nixio - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/libs/luci-lib-httpclient/luasrc/httpclient.lua b/package/luci/libs/luci-lib-httpclient/luasrc/httpclient.lua deleted file mode 100644 index c76cc542ed..0000000000 --- a/package/luci/libs/luci-lib-httpclient/luasrc/httpclient.lua +++ /dev/null @@ -1,368 +0,0 @@ --- Copyright 2009 Steven Barth --- Licensed to the public under the Apache License 2.0. - -require "nixio.util" -local nixio = require "nixio" - -local ltn12 = require "luci.ltn12" -local util = require "luci.util" -local table = require "table" -local http = require "luci.http.protocol" -local date = require "luci.http.protocol.date" - -local type, pairs, ipairs, tonumber = type, pairs, ipairs, tonumber -local unpack = unpack - -module "luci.httpclient" - -function chunksource(sock, buffer) - buffer = buffer or "" - return function() - local output - local _, endp, count = buffer:find("^([0-9a-fA-F]+);?.-\r\n") - while not count and #buffer <= 1024 do - local newblock, code = sock:recv(1024 - #buffer) - if not newblock then - return nil, code - end - buffer = buffer .. newblock - _, endp, count = buffer:find("^([0-9a-fA-F]+);?.-\r\n") - end - count = tonumber(count, 16) - if not count then - return nil, -1, "invalid encoding" - elseif count == 0 then - return nil - elseif count + 2 <= #buffer - endp then - output = buffer:sub(endp+1, endp+count) - buffer = buffer:sub(endp+count+3) - return output - else - output = buffer:sub(endp+1, endp+count) - buffer = "" - if count - #output > 0 then - local remain, code = sock:recvall(count-#output) - if not remain then - return nil, code - end - output = output .. remain - count, code = sock:recvall(2) - else - count, code = sock:recvall(count+2-#buffer+endp) - end - if not count then - return nil, code - end - return output - end - end -end - - -function request_to_buffer(uri, options) - local source, code, msg = request_to_source(uri, options) - local output = {} - - if not source then - return nil, code, msg - end - - source, code = ltn12.pump.all(source, (ltn12.sink.table(output))) - - if not source then - return nil, code - end - - return table.concat(output) -end - -function request_to_source(uri, options) - local status, response, buffer, sock = request_raw(uri, options) - if not status then - return status, response, buffer - elseif status ~= 200 and status ~= 206 then - return nil, status, buffer - end - - if response.headers["Transfer-Encoding"] == "chunked" then - return chunksource(sock, buffer) - else - return ltn12.source.cat(ltn12.source.string(buffer), sock:blocksource()) - end -end - --- --- GET HTTP-resource --- -function request_raw(uri, options) - options = options or {} - local pr, auth, host, port, path - - if options.params then - uri = uri .. '?' .. http.urlencode_params(options.params) - end - - if uri:find("%[") then - if uri:find("@") then - pr, auth, host, port, path = uri:match("(%w+)://(.+)@(%b[]):?([0-9]*)(.*)") - host = host:sub(2,-2) - else - pr, host, port, path = uri:match("(%w+)://(%b[]):?([0-9]*)(.*)") - host = host:sub(2,-2) - end - else - if uri:find("@") then - pr, auth, host, port, path = - uri:match("(%w+)://(.+)@([%w-.]+):?([0-9]*)(.*)") - else - pr, host, port, path = uri:match("(%w+)://([%w-.]+):?([0-9]*)(.*)") - end - end - - if not host then - return nil, -1, "unable to parse URI" - end - - if pr ~= "http" and pr ~= "https" then - return nil, -2, "protocol not supported" - end - - port = #port > 0 and port or (pr == "https" and 443 or 80) - path = #path > 0 and path or "/" - - options.depth = options.depth or 10 - local headers = options.headers or {} - local protocol = options.protocol or "HTTP/1.1" - headers["User-Agent"] = headers["User-Agent"] or "LuCI httpclient 0.1" - - if headers.Connection == nil then - headers.Connection = "close" - end - - if auth and not headers.Authorization then - headers.Authorization = "Basic " .. nixio.bin.b64encode(auth) - end - - local sock, code, msg = nixio.connect(host, port) - if not sock then - return nil, code, msg - end - - sock:setsockopt("socket", "sndtimeo", options.sndtimeo or 15) - sock:setsockopt("socket", "rcvtimeo", options.rcvtimeo or 15) - - if pr == "https" then - local tls = options.tls_context or nixio.tls() - sock = tls:create(sock) - local stat, code, error = sock:connect() - if not stat then - return stat, code, error - end - end - - -- Pre assemble fixes - if protocol == "HTTP/1.1" then - headers.Host = headers.Host or host - end - - if type(options.body) == "table" then - options.body = http.urlencode_params(options.body) - end - - if type(options.body) == "string" then - headers["Content-Length"] = headers["Content-Length"] or #options.body - headers["Content-Type"] = headers["Content-Type"] or - "application/x-www-form-urlencoded" - options.method = options.method or "POST" - end - - if type(options.body) == "function" then - options.method = options.method or "POST" - end - - if options.cookies then - local cookiedata = {} - for _, c in ipairs(options.cookies) do - local cdo = c.flags.domain - local cpa = c.flags.path - if (cdo == host or cdo == "."..host or host:sub(-#cdo) == cdo) - and (cpa == path or cpa == "/" or cpa .. "/" == path:sub(#cpa+1)) - and (not c.flags.secure or pr == "https") - then - cookiedata[#cookiedata+1] = c.key .. "=" .. c.value - end - end - if headers["Cookie"] then - headers["Cookie"] = headers["Cookie"] .. "; " .. table.concat(cookiedata, "; ") - else - headers["Cookie"] = table.concat(cookiedata, "; ") - end - end - - -- Assemble message - local message = {(options.method or "GET") .. " " .. path .. " " .. protocol} - - for k, v in pairs(headers) do - if type(v) == "string" or type(v) == "number" then - message[#message+1] = k .. ": " .. v - elseif type(v) == "table" then - for i, j in ipairs(v) do - message[#message+1] = k .. ": " .. j - end - end - end - - message[#message+1] = "" - message[#message+1] = "" - - -- Send request - sock:sendall(table.concat(message, "\r\n")) - - if type(options.body) == "string" then - sock:sendall(options.body) - elseif type(options.body) == "function" then - local res = {options.body(sock)} - if not res[1] then - sock:close() - return unpack(res) - end - end - - -- Create source and fetch response - local linesrc = sock:linesource() - local line, code, error = linesrc() - - if not line then - sock:close() - return nil, code, error - end - - local protocol, status, msg = line:match("^([%w./]+) ([0-9]+) (.*)") - - if not protocol then - sock:close() - return nil, -3, "invalid response magic: " .. line - end - - local response = { - status = line, headers = {}, code = 0, cookies = {}, uri = uri - } - - line = linesrc() - while line and line ~= "" do - local key, val = line:match("^([%w-]+)%s?:%s?(.*)") - if key and key ~= "Status" then - if type(response.headers[key]) == "string" then - response.headers[key] = {response.headers[key], val} - elseif type(response.headers[key]) == "table" then - response.headers[key][#response.headers[key]+1] = val - else - response.headers[key] = val - end - end - line = linesrc() - end - - if not line then - sock:close() - return nil, -4, "protocol error" - end - - -- Parse cookies - if response.headers["Set-Cookie"] then - local cookies = response.headers["Set-Cookie"] - for _, c in ipairs(type(cookies) == "table" and cookies or {cookies}) do - local cobj = cookie_parse(c) - cobj.flags.path = cobj.flags.path or path:match("(/.*)/?[^/]*") - if not cobj.flags.domain or cobj.flags.domain == "" then - cobj.flags.domain = host - response.cookies[#response.cookies+1] = cobj - else - local hprt, cprt = {}, {} - - -- Split hostnames and save them in reverse order - for part in host:gmatch("[^.]*") do - table.insert(hprt, 1, part) - end - for part in cobj.flags.domain:gmatch("[^.]*") do - table.insert(cprt, 1, part) - end - - local valid = true - for i, part in ipairs(cprt) do - -- If parts are different and no wildcard - if hprt[i] ~= part and #part ~= 0 then - valid = false - break - -- Wildcard on invalid position - elseif hprt[i] ~= part and #part == 0 then - if i ~= #cprt or (#hprt ~= i and #hprt+1 ~= i) then - valid = false - break - end - end - end - -- No TLD cookies - if valid and #cprt > 1 and #cprt[2] > 0 then - response.cookies[#response.cookies+1] = cobj - end - end - end - end - - -- Follow - response.code = tonumber(status) - if response.code and options.depth > 0 then - if (response.code == 301 or response.code == 302 or response.code == 307) - and response.headers.Location then - local nuri = response.headers.Location or response.headers.location - if not nuri then - return nil, -5, "invalid reference" - end - if not nuri:find("https?://") then - nuri = pr .. "://" .. host .. ":" .. port .. nuri - end - - options.depth = options.depth - 1 - if options.headers then - options.headers.Host = nil - end - sock:close() - - return request_raw(nuri, options) - end - end - - return response.code, response, linesrc(true)..sock:readall(), sock -end - -function cookie_parse(cookiestr) - local key, val, flags = cookiestr:match("%s?([^=;]+)=?([^;]*)(.*)") - if not key then - return nil - end - - local cookie = {key = key, value = val, flags = {}} - for fkey, fval in flags:gmatch(";%s?([^=;]+)=?([^;]*)") do - fkey = fkey:lower() - if fkey == "expires" then - fval = date.to_unix(fval:gsub("%-", " ")) - end - cookie.flags[fkey] = fval - end - - return cookie -end - -function cookie_create(cookie) - local cookiedata = {cookie.key .. "=" .. cookie.value} - - for k, v in pairs(cookie.flags) do - if k == "expires" then - v = date.to_http(v):gsub(", (%w+) (%w+) (%w+) ", ", %1-%2-%3 ") - end - cookiedata[#cookiedata+1] = k .. ((#v > 0) and ("=" .. v) or "") - end - - return table.concat(cookiedata, "; ") -end diff --git a/package/luci/libs/luci-lib-httpclient/luasrc/httpclient/receiver.lua b/package/luci/libs/luci-lib-httpclient/luasrc/httpclient/receiver.lua deleted file mode 100644 index b886e96062..0000000000 --- a/package/luci/libs/luci-lib-httpclient/luasrc/httpclient/receiver.lua +++ /dev/null @@ -1,284 +0,0 @@ --- Copyright 2009 Steven Barth --- Licensed to the public under the Apache License 2.0. - -require "nixio.util" -local nixio = require "nixio" -local httpc = require "luci.httpclient" -local ltn12 = require "luci.ltn12" - -local print, tonumber, require, unpack = print, tonumber, require, unpack - -module "luci.httpclient.receiver" - -local function prepare_fd(target) - -- Open fd for appending - local oflags = nixio.open_flags("wronly", "creat") - local file, code, msg = nixio.open(target, oflags) - if not file then - return file, code, msg - end - - -- Acquire lock - local stat, code, msg = file:lock("tlock") - if not stat then - return stat, code, msg - end - - file:seek(0, "end") - - return file -end - -local function splice_async(sock, pipeout, pipein, file, cb) - local ssize = 65536 - local smode = nixio.splice_flags("move", "more", "nonblock") - - -- Set pipe non-blocking otherwise we might end in a deadlock - local stat, code, msg = pipein:setblocking(false) - if stat then - stat, code, msg = pipeout:setblocking(false) - end - if not stat then - return stat, code, msg - end - - - local pollsock = { - {fd=sock, events=nixio.poll_flags("in")} - } - - local pollfile = { - {fd=file, events=nixio.poll_flags("out")} - } - - local done - local active -- Older splice implementations sometimes don't detect EOS - - repeat - active = false - - -- Socket -> Pipe - repeat - nixio.poll(pollsock, 15000) - - stat, code, msg = nixio.splice(sock, pipeout, ssize, smode) - if stat == nil then - return stat, code, msg - elseif stat == 0 then - done = true - break - elseif stat then - active = true - end - until stat == false - - -- Pipe -> File - repeat - nixio.poll(pollfile, 15000) - - stat, code, msg = nixio.splice(pipein, file, ssize, smode) - if stat == nil then - return stat, code, msg - elseif stat then - active = true - end - until stat == false - - if cb then - cb(file) - end - - if not active then - -- We did not splice any data, maybe EOS, fallback to default - return false - end - until done - - pipein:close() - pipeout:close() - sock:close() - file:close() - return true -end - -local function splice_sync(sock, pipeout, pipein, file, cb) - local os = require "os" - local ssize = 65536 - local smode = nixio.splice_flags("move", "more") - local stat - - -- This is probably the only forking http-client ;-) - local pid, code, msg = nixio.fork() - if not pid then - return pid, code, msg - elseif pid == 0 then - pipein:close() - file:close() - - repeat - stat, code = nixio.splice(sock, pipeout, ssize, smode) - until not stat or stat == 0 - - pipeout:close() - sock:close() - os.exit(stat or code) - else - pipeout:close() - sock:close() - - repeat - stat, code, msg = nixio.splice(pipein, file, ssize, smode) - if cb then - cb(file) - end - until not stat or stat == 0 - - pipein:close() - file:close() - - if not stat then - nixio.kill(pid, 15) - nixio.wait(pid) - return stat, code, msg - else - pid, msg, code = nixio.wait(pid) - if msg == "exited" then - if code == 0 then - return true - else - return nil, code, nixio.strerror(code) - end - else - return nil, -0x11, "broken pump" - end - end - end -end - -function request_to_file(uri, target, options, cbs) - options = options or {} - cbs = cbs or {} - options.headers = options.headers or {} - local hdr = options.headers - local file, code, msg - - if target then - file, code, msg = prepare_fd(target) - if not file then - return file, code, msg - end - - local off = file:tell() - - -- Set content range - if off > 0 then - hdr.Range = hdr.Range or ("bytes=" .. off .. "-") - end - end - - local code, resp, buffer, sock = httpc.request_raw(uri, options) - if not code then - -- No success - if file then - file:close() - end - return code, resp, buffer - elseif hdr.Range and code ~= 206 then - -- We wanted a part but we got the while file - sock:close() - if file then - file:close() - end - return nil, -4, code, resp - elseif not hdr.Range and code ~= 200 then - -- We encountered an error - sock:close() - if file then - file:close() - end - return nil, -4, code, resp - end - - if cbs.on_header then - local stat = {cbs.on_header(file, code, resp)} - if stat[1] == false then - if file then - file:close() - end - sock:close() - return unpack(stat) - elseif stat[2] then - file = file and stat[2] - end - end - - if not file then - return nil, -5, "no target given" - end - - local chunked = resp.headers["Transfer-Encoding"] == "chunked" - local stat - - -- Write the buffer to file - file:writeall(buffer) - - repeat - if not options.splice or not sock:is_socket() or chunked then - break - end - - -- This is a plain TCP socket and there is no encoding so we can splice - - local pipein, pipeout, msg = nixio.pipe() - if not pipein then - sock:close() - file:close() - return pipein, pipeout, msg - end - - - -- Adjust splice values - local ssize = 65536 - local smode = nixio.splice_flags("move", "more") - - -- Splicing 512 bytes should never block on a fresh pipe - local stat, code, msg = nixio.splice(sock, pipeout, 512, smode) - if stat == nil then - break - end - - -- Now do the real splicing - local cb = cbs.on_write - if options.splice == "asynchronous" then - stat, code, msg = splice_async(sock, pipeout, pipein, file, cb) - elseif options.splice == "synchronous" then - stat, code, msg = splice_sync(sock, pipeout, pipein, file, cb) - else - break - end - - if stat == false then - break - end - - return stat, code, msg - until true - - local src = chunked and httpc.chunksource(sock) or sock:blocksource() - local snk = file:sink() - - if cbs.on_write then - src = ltn12.source.chain(src, function(chunk) - cbs.on_write(file) - return chunk - end) - end - - -- Fallback to read/write - stat, code, msg = ltn12.pump.all(src, snk) - - file:close() - sock:close() - return stat and true, code, msg -end - diff --git a/package/luci/libs/luci-lib-ip/Makefile b/package/luci/libs/luci-lib-ip/Makefile deleted file mode 100644 index 15cb537cff..0000000000 --- a/package/luci/libs/luci-lib-ip/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2015 LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Lua library for IP calculation and routing information -LUCI_DEPENDS:=+liblua +libnl-tiny - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/libs/luci-lib-ip/src/Makefile b/package/luci/libs/luci-lib-ip/src/Makefile deleted file mode 100644 index 76abd27d2a..0000000000 --- a/package/luci/libs/luci-lib-ip/src/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -IP_CFLAGS = -std=gnu99 -I$(STAGING_DIR)/usr/include/libnl-tiny/ -IP_LDFLAGS = -llua -lm -lnl-tiny -IP_OBJ = ip.o -IP_LIB = ip.so - -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(LUA_CFLAGS) $(IP_CFLAGS) $(FPIC) -c -o $@ $< - -compile: $(IP_OBJ) - $(CC) $(LDFLAGS) -shared -o $(IP_LIB) $(IP_OBJ) $(IP_LDFLAGS) - -install: compile - mkdir -p $(DESTDIR)/usr/lib/lua/luci - cp $(IP_LIB) $(DESTDIR)/usr/lib/lua/luci/$(IP_LIB) - -clean: - rm -f *.o *.so diff --git a/package/luci/libs/luci-lib-ip/src/ip.c b/package/luci/libs/luci-lib-ip/src/ip.c deleted file mode 100644 index b91966c536..0000000000 --- a/package/luci/libs/luci-lib-ip/src/ip.c +++ /dev/null @@ -1,1392 +0,0 @@ -/* -Copyright 2015 Jo-Philipp Wich - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -#define _GNU_SOURCE - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#define LUCI_IP "luci.ip" -#define LUCI_IP_CIDR "luci.ip.cidr" - -#define RTA_INT(x) (*(int *)RTA_DATA(x)) -#define RTA_U32(x) (*(uint32_t *)RTA_DATA(x)) - -static int hz = 0; -static struct nl_sock *sock = NULL; - -typedef struct { - union { - struct in_addr v4; - struct in6_addr v6; - } addr; - int len; - int bits; - int family; - bool exact; -} cidr_t; - -struct dump_filter { - bool get; - int family; - int iif; - int oif; - int type; - int scope; - int proto; - int table; - cidr_t gw; - cidr_t from; - cidr_t src; - cidr_t dst; - struct ether_addr mac; -}; - -struct dump_state { - int index; - int pending; - int callback; - struct lua_State *L; - struct dump_filter *filter; -}; - - -static int _cidr_new(lua_State *L, int index, int family, bool mask); - -static cidr_t *L_checkcidr (lua_State *L, int index, cidr_t *p) -{ - if (lua_type(L, index) == LUA_TUSERDATA) - return luaL_checkudata(L, index, LUCI_IP_CIDR); - - if (_cidr_new(L, index, p ? p->family : 0, false)) - return lua_touserdata(L, -1); - - luaL_error(L, "Invalid operand"); - return NULL; -} - -static bool parse_mask(int family, const char *mask, int *bits) -{ - char *e; - struct in_addr m; - struct in6_addr m6; - - if (family == AF_INET && inet_pton(AF_INET, mask, &m)) - { - for (*bits = 0, m.s_addr = ntohl(m.s_addr); - *bits < 32 && (m.s_addr << *bits) & 0x80000000; - ++*bits); - } - else if (family == AF_INET6 && inet_pton(AF_INET6, mask, &m6)) - { - for (*bits = 0; - *bits < 128 && (m6.s6_addr[*bits / 8] << (*bits % 8)) & 128; - ++*bits); - } - else - { - *bits = strtoul(mask, &e, 10); - - if (e == mask || *e != 0 || *bits > ((family == AF_INET) ? 32 : 128)) - return false; - } - - return true; -} - -static bool parse_cidr(const char *dest, cidr_t *pp) -{ - char *p, buf[INET6_ADDRSTRLEN * 2 + 2]; - uint8_t bitlen = 0; - - strncpy(buf, dest, sizeof(buf) - 1); - - p = strchr(buf, '/'); - - if (p) - *p++ = 0; - - if (inet_pton(AF_INET, buf, &pp->addr.v4)) - { - bitlen = 32; - pp->family = AF_INET; - pp->len = sizeof(struct in_addr); - } - else if (inet_pton(AF_INET6, buf, &pp->addr.v6)) - { - bitlen = 128; - pp->family = AF_INET6; - pp->len = sizeof(struct in6_addr); - } - else - return false; - - if (p) - { - if (!parse_mask(pp->family, p, &pp->bits)) - return false; - } - else - { - pp->bits = bitlen; - } - - return true; -} - -static int L_getint(lua_State *L, int index, const char *name) -{ - int rv = 0; - - lua_getfield(L, index, name); - - if (lua_type(L, -1) == LUA_TNUMBER) - rv = lua_tonumber(L, -1); - - lua_pop(L, 1); - - return rv; -} - -static const char * L_getstr(lua_State *L, int index, const char *name) -{ - const char *rv = NULL; - - lua_getfield(L, index, name); - - if (lua_type(L, -1) == LUA_TSTRING) - rv = lua_tostring(L, -1); - - lua_pop(L, 1); - - return rv; -} - -static void L_setint(struct lua_State *L, const char *name, uint32_t n) -{ - lua_pushinteger(L, n); - lua_setfield(L, -2, name); -} - -static void L_setbool(struct lua_State *L, const char *name, bool val) -{ - lua_pushboolean(L, val); - lua_setfield(L, -2, name); -} - -static void L_setaddr(struct lua_State *L, const char *name, - int family, void *addr, int bits) -{ - cidr_t *p; - - if (!addr) - return; - - p = lua_newuserdata(L, sizeof(*p)); - - if (!p) - return; - - if (family == AF_INET) - { - p->family = AF_INET; - p->bits = (bits < 0) ? 32 : bits; - p->len = sizeof(p->addr.v4); - p->addr.v4 = *(struct in_addr *)addr; - } - else - { - p->family = AF_INET6; - p->bits = (bits < 0) ? 128 : bits; - p->len = sizeof(p->addr.v6); - p->addr.v6 = *(struct in6_addr *)addr; - } - - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - lua_setfield(L, -2, name); -} - -static void L_setstr(struct lua_State *L, const char *name, const char *val) -{ - lua_pushstring(L, val); - lua_setfield(L, -2, name); -} - -static void L_setdev(struct lua_State *L, const char *name, - struct nlattr *attr) -{ - char buf[32]; - - if (if_indextoname(RTA_INT(attr), buf)) - L_setstr(L, name, buf); -} - -static int L_checkbits(lua_State *L, int index, cidr_t *p) -{ - int bits; - - if (lua_gettop(L) < index || lua_isnil(L, index)) - { - bits = p->bits; - } - else if (lua_type(L, index) == LUA_TNUMBER) - { - bits = lua_tointeger(L, index); - - if (bits < 0 || bits > ((p->family == AF_INET) ? 32 : 128)) - return luaL_error(L, "Invalid prefix size"); - } - else if (lua_type(L, index) == LUA_TSTRING) - { - if (!parse_mask(p->family, lua_tostring(L, index), &bits)) - return luaL_error(L, "Invalid netmask format"); - } - else - { - return luaL_error(L, "Invalid data type"); - } - - return bits; -} - -static int _cidr_new(lua_State *L, int index, int family, bool mask) -{ - uint32_t n; - const char *addr; - cidr_t cidr = { }, *cidrp; - - if (lua_type(L, index) == LUA_TNUMBER) - { - n = htonl(lua_tointeger(L, index)); - - if (family == AF_INET6) - { - cidr.family = AF_INET6; - cidr.bits = 128; - cidr.len = sizeof(cidr.addr.v6); - cidr.addr.v6.s6_addr[12] = n; - cidr.addr.v6.s6_addr[13] = (n >> 8); - cidr.addr.v6.s6_addr[14] = (n >> 16); - cidr.addr.v6.s6_addr[15] = (n >> 24); - } - else - { - cidr.family = AF_INET; - cidr.bits = 32; - cidr.len = sizeof(cidr.addr.v4); - cidr.addr.v4.s_addr = n; - } - } - else - { - addr = luaL_checkstring(L, index); - - if (!parse_cidr(addr, &cidr)) - return 0; - - if (family && cidr.family != family) - return 0; - - if (mask) - cidr.bits = L_checkbits(L, index + 1, &cidr); - } - - if (!(cidrp = lua_newuserdata(L, sizeof(*cidrp)))) - return 0; - - *cidrp = cidr; - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - return 1; -} - -static int cidr_new(lua_State *L) -{ - return _cidr_new(L, 1, 0, true); -} - -static int cidr_ipv4(lua_State *L) -{ - return _cidr_new(L, 1, AF_INET, true); -} - -static int cidr_ipv6(lua_State *L) -{ - return _cidr_new(L, 1, AF_INET6, true); -} - -static int cidr_is4(lua_State *L) -{ - cidr_t *p = L_checkcidr(L, 1, NULL); - - lua_pushboolean(L, p->family == AF_INET); - return 1; -} - -static int cidr_is4rfc1918(lua_State *L) -{ - cidr_t *p = L_checkcidr(L, 1, NULL); - uint32_t a = htonl(p->addr.v4.s_addr); - - lua_pushboolean(L, (p->family == AF_INET && - ((a >= 0x0A000000 && a <= 0x0AFFFFFF) || - (a >= 0xAC100000 && a <= 0xAC1FFFFF) || - (a >= 0xC0A80000 && a <= 0xC0A8FFFF)))); - - return 1; -} - -static int cidr_is4linklocal(lua_State *L) -{ - cidr_t *p = L_checkcidr(L, 1, NULL); - uint32_t a = htonl(p->addr.v4.s_addr); - - lua_pushboolean(L, (p->family == AF_INET && - a >= 0xA9FE0000 && - a <= 0xA9FEFFFF)); - - return 1; -} - -static bool _is_mapped4(cidr_t *p) -{ - return (p->family == AF_INET6 && - p->addr.v6.s6_addr[0] == 0 && - p->addr.v6.s6_addr[1] == 0 && - p->addr.v6.s6_addr[2] == 0 && - p->addr.v6.s6_addr[3] == 0 && - p->addr.v6.s6_addr[4] == 0 && - p->addr.v6.s6_addr[5] == 0 && - p->addr.v6.s6_addr[6] == 0 && - p->addr.v6.s6_addr[7] == 0 && - p->addr.v6.s6_addr[8] == 0 && - p->addr.v6.s6_addr[9] == 0 && - p->addr.v6.s6_addr[10] == 0xFF && - p->addr.v6.s6_addr[11] == 0xFF); -} - -static int cidr_is6mapped4(lua_State *L) -{ - cidr_t *p = L_checkcidr(L, 1, NULL); - - lua_pushboolean(L, _is_mapped4(p)); - return 1; -} - -static int cidr_is6(lua_State *L) -{ - cidr_t *p = L_checkcidr(L, 1, NULL); - - lua_pushboolean(L, p->family == AF_INET6); - return 1; -} - -static int cidr_is6linklocal(lua_State *L) -{ - cidr_t *p = L_checkcidr(L, 1, NULL); - - lua_pushboolean(L, (p->family == AF_INET6 && - p->addr.v6.s6_addr[0] == 0xFE && - p->addr.v6.s6_addr[1] >= 0x80 && - p->addr.v6.s6_addr[1] <= 0xBF)); - - return 1; -} - -static int _cidr_cmp(lua_State *L) -{ - cidr_t *a = L_checkcidr(L, 1, NULL); - cidr_t *b = L_checkcidr(L, 2, NULL); - - if (a->family != b->family) - return (a->family - b->family); - - return memcmp(&a->addr.v6, &b->addr.v6, a->len); -} - -static int cidr_lower(lua_State *L) -{ - lua_pushboolean(L, _cidr_cmp(L) < 0); - return 1; -} - -static int cidr_higher(lua_State *L) -{ - lua_pushboolean(L, _cidr_cmp(L) > 0); - return 1; -} - -static int cidr_equal(lua_State *L) -{ - lua_pushboolean(L, _cidr_cmp(L) == 0); - return 1; -} - -static int cidr_lower_equal(lua_State *L) -{ - lua_pushboolean(L, _cidr_cmp(L) <= 0); - return 1; -} - -static int cidr_prefix(lua_State *L) -{ - cidr_t *p = L_checkcidr(L, 1, NULL); - int bits = L_checkbits(L, 2, p); - - p->bits = bits; - lua_pushinteger(L, p->bits); - return 1; -} - -static void _apply_mask(cidr_t *p, int bits, bool inv) -{ - uint8_t b, i; - - if (bits <= 0) - { - memset(&p->addr.v6, inv * 0xFF, p->len); - } - else if (p->family == AF_INET && bits <= 32) - { - if (inv) - p->addr.v4.s_addr |= ntohl((1 << (32 - bits)) - 1); - else - p->addr.v4.s_addr &= ntohl(~((1 << (32 - bits)) - 1)); - } - else if (p->family == AF_INET6 && bits <= 128) - { - for (i = 0; i < sizeof(p->addr.v6.s6_addr); i++) - { - b = (bits > 8) ? 8 : bits; - if (inv) - p->addr.v6.s6_addr[i] |= ~((uint8_t)(0xFF << (8 - b))); - else - p->addr.v6.s6_addr[i] &= (uint8_t)(0xFF << (8 - b)); - bits -= b; - } - } -} - -static int cidr_network(lua_State *L) -{ - cidr_t *p1 = L_checkcidr(L, 1, NULL), *p2; - int bits = L_checkbits(L, 2, p1); - - if (!(p2 = lua_newuserdata(L, sizeof(*p2)))) - return 0; - - *p2 = *p1; - p2->bits = (p1->family == AF_INET) ? 32 : 128; - _apply_mask(p2, bits, false); - - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - return 1; -} - -static int cidr_host(lua_State *L) -{ - cidr_t *p1 = L_checkcidr(L, 1, NULL); - cidr_t *p2 = lua_newuserdata(L, sizeof(*p2)); - - if (!p2) - return 0; - - *p2 = *p1; - p2->bits = (p1->family == AF_INET) ? 32 : 128; - - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - return 1; -} - -static int cidr_mask(lua_State *L) -{ - cidr_t *p1 = L_checkcidr(L, 1, NULL), *p2; - int bits = L_checkbits(L, 2, p1); - - if (!(p2 = lua_newuserdata(L, sizeof(*p2)))) - return 0; - - p2->bits = (p1->family == AF_INET) ? 32 : 128; - p2->family = p1->family; - - memset(&p2->addr.v6.s6_addr, 0xFF, sizeof(p2->addr.v6.s6_addr)); - _apply_mask(p2, bits, false); - - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - return 1; -} - -static int cidr_broadcast(lua_State *L) -{ - cidr_t *p1 = L_checkcidr(L, 1, NULL); - cidr_t *p2; - int bits = L_checkbits(L, 2, p1); - - if (p1->family == AF_INET6) - return 0; - - if (!(p2 = lua_newuserdata(L, sizeof(*p2)))) - return 0; - - *p2 = *p1; - p2->bits = (p1->family == AF_INET) ? 32 : 128; - _apply_mask(p2, bits, true); - - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - return 1; -} - -static int cidr_mapped4(lua_State *L) -{ - cidr_t *p1 = L_checkcidr(L, 1, NULL); - cidr_t *p2; - - if (!_is_mapped4(p1)) - return 0; - - if (!(p2 = lua_newuserdata(L, sizeof(*p2)))) - return 0; - - p2->family = AF_INET; - p2->bits = (p1->bits > 32) ? 32 : p1->bits; - memcpy(&p2->addr.v4, p1->addr.v6.s6_addr + 12, sizeof(p2->addr.v4)); - - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - return 1; -} - -static int cidr_contains(lua_State *L) -{ - cidr_t *p1 = L_checkcidr(L, 1, NULL); - cidr_t *p2 = L_checkcidr(L, 2, NULL); - cidr_t a = *p1, b = *p2; - bool rv = false; - - if (p1->family == p2->family && p1->bits <= p2->bits) - { - _apply_mask(&a, p1->bits, false); - _apply_mask(&b, p1->bits, false); - - rv = !memcmp(&a.addr.v6, &b.addr.v6, a.len); - } - - lua_pushboolean(L, rv); - return 1; -} - -#define S6_BYTE(a, i) \ - (a)->addr.v6.s6_addr[sizeof((a)->addr.v6.s6_addr) - (i) - 1] - -static int _cidr_add_sub(lua_State *L, bool add) -{ - cidr_t *p1 = L_checkcidr(L, 1, NULL); - cidr_t *p2 = L_checkcidr(L, 2, p1); - cidr_t r = *p1; - bool inplace = lua_isboolean(L, 3) ? lua_toboolean(L, 3) : false; - bool ok = true; - uint8_t i, carry; - uint32_t a, b; - - if (p1->family == p2->family) - { - if (p1->family == AF_INET6) - { - for (i = 0, carry = 0; i < sizeof(r.addr.v6.s6_addr); i++) - { - if (add) - { - S6_BYTE(&r, i) = S6_BYTE(p1, i) + S6_BYTE(p2, i) + carry; - carry = (S6_BYTE(p1, i) + S6_BYTE(p2, i) + carry) / 256; - } - else - { - S6_BYTE(&r, i) = (S6_BYTE(p1, i) - S6_BYTE(p2, i) - carry); - carry = (S6_BYTE(p1, i) < (S6_BYTE(p2, i) + carry)); - } - } - - /* would over/underflow */ - if (carry) - { - memset(&r.addr.v6, add * 0xFF, sizeof(r.addr.v6)); - ok = false; - } - } - else - { - a = ntohl(p1->addr.v4.s_addr); - b = ntohl(p2->addr.v4.s_addr); - - /* would over/underflow */ - if ((add && (UINT_MAX - a) < b) || (!add && a < b)) - { - r.addr.v4.s_addr = add * 0xFFFFFFFF; - ok = false; - } - else - { - r.addr.v4.s_addr = add ? htonl(a + b) : htonl(a - b); - } - } - } - else - { - ok = false; - } - - if (inplace) - { - *p1 = r; - lua_pushboolean(L, ok); - return 1; - } - - if (!(p1 = lua_newuserdata(L, sizeof(*p1)))) - return 0; - - *p1 = r; - - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - return 1; -} - -static int cidr_add(lua_State *L) -{ - return _cidr_add_sub(L, true); -} - -static int cidr_sub(lua_State *L) -{ - return _cidr_add_sub(L, false); -} - -static int cidr_minhost(lua_State *L) -{ - cidr_t *p = L_checkcidr(L, 1, NULL); - cidr_t r = *p; - uint8_t i, rest, carry; - - _apply_mask(&r, r.bits, false); - - if (r.family == AF_INET6 && r.bits < 128) - { - r.bits = 128; - - for (i = 0, carry = 1; i < sizeof(r.addr.v6.s6_addr); i++) - { - rest = (S6_BYTE(&r, i) + carry) > 255; - S6_BYTE(&r, i) += carry; - carry = rest; - } - } - else if (r.family == AF_INET && r.bits < 32) - { - r.bits = 32; - r.addr.v4.s_addr = htonl(ntohl(r.addr.v4.s_addr) + 1); - } - - if (!(p = lua_newuserdata(L, sizeof(*p)))) - return 0; - - *p = r; - - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - return 1; -} - -static int cidr_maxhost(lua_State *L) -{ - cidr_t *p = L_checkcidr(L, 1, NULL); - cidr_t r = *p; - - _apply_mask(&r, r.bits, true); - - if (r.family == AF_INET && r.bits < 32) - { - r.bits = 32; - r.addr.v4.s_addr = htonl(ntohl(r.addr.v4.s_addr) - 1); - } - else if (r.family == AF_INET6) - { - r.bits = 128; - } - - if (!(p = lua_newuserdata(L, sizeof(*p)))) - return 0; - - *p = r; - - luaL_getmetatable(L, LUCI_IP_CIDR); - lua_setmetatable(L, -2); - return 1; -} - -static int cidr_gc (lua_State *L) -{ - return 0; -} - -static int cidr_tostring (lua_State *L) -{ - char buf[INET6_ADDRSTRLEN]; - cidr_t *p = L_checkcidr(L, 1, NULL); - - if ((p->family == AF_INET && p->bits < 32) || - (p->family == AF_INET6 && p->bits < 128)) - { - lua_pushfstring(L, "%s/%d", - inet_ntop(p->family, &p->addr.v6, buf, sizeof(buf)), - p->bits); - } - else - { - lua_pushstring(L, inet_ntop(p->family, &p->addr.v6, buf, sizeof(buf))); - } - - return 1; -} - -/* - * route functions - */ - -static bool diff_prefix(int family, void *addr, int bits, cidr_t *p) -{ - uint8_t i, b, r; - uint32_t m; - - if (!p->family) - return false; - - if (!addr || p->family != family || p->bits > bits) - return true; - - if (family == AF_INET6) - { - for (i = 0, r = p->bits; i < sizeof(struct in6_addr); i++) - { - b = r ? (0xFF << (8 - ((r > 8) ? 8 : r))) : 0; - - if ((((struct in6_addr *)addr)->s6_addr[i] & b) != - (p->addr.v6.s6_addr[i] & b)) - return true; - - r -= ((r > 8) ? 8 : r); - } - } - else - { - m = p->bits ? htonl(~((1 << (32 - p->bits)) - 1)) : 0; - - if ((((struct in_addr *)addr)->s_addr & m) != (p->addr.v4.s_addr & m)) - return true; - } - - return (p->exact && p->bits != bits); -} - -static int cb_dump_route(struct nl_msg *msg, void *arg) -{ - struct dump_state *s = arg; - struct dump_filter *f = s->filter; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - struct rtmsg *rt = NLMSG_DATA(hdr); - struct nlattr *tb[RTA_MAX+1]; - struct in6_addr *src, *dst, *gw, *from, def = { }; - int iif, oif, bitlen; - uint32_t table; - - if (hdr->nlmsg_type != RTM_NEWROUTE || - (rt->rtm_family != AF_INET && rt->rtm_family != AF_INET6)) - return NL_SKIP; - - nlmsg_parse(hdr, sizeof(*rt), tb, RTA_MAX, NULL); - - iif = tb[RTA_IIF] ? RTA_INT(tb[RTA_IIF]) : 0; - oif = tb[RTA_OIF] ? RTA_INT(tb[RTA_OIF]) : 0; - table = tb[RTA_TABLE] ? RTA_U32(tb[RTA_TABLE]) : rt->rtm_table; - from = tb[RTA_SRC] ? RTA_DATA(tb[RTA_SRC]) : NULL; - src = tb[RTA_PREFSRC] ? RTA_DATA(tb[RTA_PREFSRC]) : NULL; - dst = tb[RTA_DST] ? RTA_DATA(tb[RTA_DST]) : &def; - gw = tb[RTA_GATEWAY] ? RTA_DATA(tb[RTA_GATEWAY]) : NULL; - - bitlen = (rt->rtm_family == AF_INET6) ? 128 : 32; - - if ((f->type && rt->rtm_type != f->type) || - (f->family && rt->rtm_family != f->family) || - (f->proto && rt->rtm_protocol != f->proto) || - (f->scope && rt->rtm_scope != f->scope) || - (f->iif && iif != f->iif) || - (f->oif && oif != f->oif) || - (f->table && table != f->table) || - diff_prefix(rt->rtm_family, from, rt->rtm_src_len, &f->from) || - diff_prefix(rt->rtm_family, dst, rt->rtm_dst_len, &f->dst) || - diff_prefix(rt->rtm_family, gw, bitlen, &f->gw) || - diff_prefix(rt->rtm_family, src, bitlen, &f->src)) - goto out; - - if (s->callback) - lua_pushvalue(s->L, 2); - - lua_newtable(s->L); - - L_setint(s->L, "type", rt->rtm_type); - L_setint(s->L, "family", (rt->rtm_family == AF_INET) ? 4 : 6); - - L_setaddr(s->L, "dest", rt->rtm_family, dst, rt->rtm_dst_len); - - if (gw) - L_setaddr(s->L, "gw", rt->rtm_family, gw, -1); - - if (from) - L_setaddr(s->L, "from", rt->rtm_family, from, rt->rtm_src_len); - - if (iif) - L_setdev(s->L, "iif", tb[RTA_IIF]); - - if (oif) - L_setdev(s->L, "dev", tb[RTA_OIF]); - - L_setint(s->L, "table", table); - L_setint(s->L, "proto", rt->rtm_protocol); - L_setint(s->L, "scope", rt->rtm_scope); - - if (src) - L_setaddr(s->L, "src", rt->rtm_family, src, -1); - - if (tb[RTA_PRIORITY]) - L_setint(s->L, "metric", RTA_U32(tb[RTA_PRIORITY])); - - if (rt->rtm_family == AF_INET6 && tb[RTA_CACHEINFO]) - { - struct rta_cacheinfo *ci = RTA_DATA(tb[RTA_CACHEINFO]); - - if (ci->rta_expires) - { - if (ci->rta_expires) - L_setint(s->L, "expires", ci->rta_expires / hz); - - if (ci->rta_error != 0) - L_setint(s->L, "error", ci->rta_error); - } - } - - s->index++; - - if (s->callback) - lua_call(s->L, 1, 0); - else if (hdr->nlmsg_flags & NLM_F_MULTI) - lua_rawseti(s->L, -2, s->index); - -out: - s->pending = !!(hdr->nlmsg_flags & NLM_F_MULTI); - return NL_SKIP; -} - -static int -cb_done(struct nl_msg *msg, void *arg) -{ - struct dump_state *s = arg; - s->pending = 0; - return NL_STOP; -} - -static int -cb_error(struct sockaddr_nl *nla, struct nlmsgerr *err, void *arg) -{ - struct dump_state *s = arg; - s->pending = 0; - return NL_STOP; -} - -static int _error(lua_State *L, int code, const char *msg) -{ - lua_pushnil(L); - lua_pushnumber(L, code ? code : errno); - lua_pushstring(L, msg ? msg : strerror(errno)); - - return 3; -} - -static int _route_dump(lua_State *L, struct dump_filter *filter) -{ - int flags = NLM_F_REQUEST; - struct dump_state s = { - .L = L, - .pending = 1, - .index = 0, - .callback = lua_isfunction(L, 2), - .filter = filter - }; - - if (!hz) - hz = sysconf(_SC_CLK_TCK); - - if (!sock) - { - sock = nl_socket_alloc(); - if (!sock) - return _error(L, -1, "Out of memory"); - - if (nl_connect(sock, NETLINK_ROUTE)) - return _error(L, 0, NULL); - } - - struct nl_msg *msg; - struct nl_cb *cb = nl_cb_alloc(NL_CB_DEFAULT); - struct rtmsg rtm = { - .rtm_family = filter->family, - .rtm_dst_len = filter->dst.bits, - .rtm_src_len = filter->src.bits - }; - - if (!filter->get) - flags |= NLM_F_DUMP; - - msg = nlmsg_alloc_simple(RTM_GETROUTE, flags); - if (!msg) - goto out; - - nlmsg_append(msg, &rtm, sizeof(rtm), 0); - - if (filter->get) - nla_put(msg, RTA_DST, filter->dst.len, &filter->dst.addr.v6); - - nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, cb_dump_route, &s); - nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, cb_done, &s); - nl_cb_err(cb, NL_CB_CUSTOM, cb_error, &s); - - nl_send_auto_complete(sock, msg); - - if (!filter->get && !s.callback) - lua_newtable(L); - - while (s.pending > 0) - nl_recvmsgs(sock, cb); - - nlmsg_free(msg); - -out: - nl_cb_put(cb); - return (s.callback == 0); -} - -static int route_get(lua_State *L) -{ - struct dump_filter filter = { .get = true }; - const char *dest = luaL_checkstring(L, 1); - - if (!parse_cidr(dest, &filter.dst)) - return _error(L, -1, "Invalid destination"); - - filter.family = filter.dst.family; - - return _route_dump(L, &filter); -} - -static int route_dump(lua_State *L) -{ - const char *s; - cidr_t p = { }; - struct dump_filter filter = { }; - - if (lua_type(L, 1) == LUA_TTABLE) - { - filter.family = L_getint(L, 1, "family"); - - if (filter.family == 4) - filter.family = AF_INET; - else if (filter.family == 6) - filter.family = AF_INET6; - else - filter.family = 0; - - if ((s = L_getstr(L, 1, "iif")) != NULL) - filter.iif = if_nametoindex(s); - - if ((s = L_getstr(L, 1, "oif")) != NULL) - filter.oif = if_nametoindex(s); - - filter.type = L_getint(L, 1, "type"); - filter.scope = L_getint(L, 1, "scope"); - filter.proto = L_getint(L, 1, "proto"); - filter.table = L_getint(L, 1, "table"); - - if ((s = L_getstr(L, 1, "gw")) != NULL && parse_cidr(s, &p)) - filter.gw = p; - - if ((s = L_getstr(L, 1, "from")) != NULL && parse_cidr(s, &p)) - filter.from = p; - - if ((s = L_getstr(L, 1, "src")) != NULL && parse_cidr(s, &p)) - filter.src = p; - - if ((s = L_getstr(L, 1, "dest")) != NULL && parse_cidr(s, &p)) - filter.dst = p; - - if ((s = L_getstr(L, 1, "from_exact")) != NULL && parse_cidr(s, &p)) - filter.from = p, filter.from.exact = true; - - if ((s = L_getstr(L, 1, "dest_exact")) != NULL && parse_cidr(s, &p)) - filter.dst = p, filter.dst.exact = true; - } - - return _route_dump(L, &filter); -} - - -static bool diff_macaddr(struct ether_addr *mac1, struct ether_addr *mac2) -{ - struct ether_addr empty = { }; - - if (!memcmp(mac2, &empty, sizeof(empty))) - return false; - - if (!mac1 || memcmp(mac1, mac2, sizeof(empty))) - return true; - - return false; -} - -static int cb_dump_neigh(struct nl_msg *msg, void *arg) -{ - char buf[32]; - struct ether_addr *mac; - struct in6_addr *dst; - struct dump_state *s = arg; - struct dump_filter *f = s->filter; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - struct ndmsg *nd = NLMSG_DATA(hdr); - struct nlattr *tb[NDA_MAX+1]; - int bitlen; - - if (hdr->nlmsg_type != RTM_NEWNEIGH || - (nd->ndm_family != AF_INET && nd->ndm_family != AF_INET6)) - return NL_SKIP; - - nlmsg_parse(hdr, sizeof(*nd), tb, NDA_MAX, NULL); - - mac = tb[NDA_LLADDR] ? RTA_DATA(tb[NDA_LLADDR]) : NULL; - dst = tb[NDA_DST] ? RTA_DATA(tb[NDA_DST]) : NULL; - - bitlen = (nd->ndm_family == AF_INET) ? 32 : 128; - - if ((f->family && nd->ndm_family != f->family) || - (f->iif && nd->ndm_ifindex != f->iif) || - (f->type && !(f->type & nd->ndm_state)) || - diff_prefix(nd->ndm_family, dst, bitlen, &f->dst) || - diff_macaddr(mac, &f->mac)) - goto out; - - if (s->callback) - lua_pushvalue(s->L, 2); - - lua_newtable(s->L); - - L_setint(s->L, "family", (nd->ndm_family == AF_INET) ? 4 : 6); - L_setstr(s->L, "dev", if_indextoname(nd->ndm_ifindex, buf)); - - L_setbool(s->L, "router", (nd->ndm_flags & NTF_ROUTER)); - L_setbool(s->L, "proxy", (nd->ndm_flags & NTF_PROXY)); - - L_setbool(s->L, "incomplete", (nd->ndm_state & NUD_INCOMPLETE)); - L_setbool(s->L, "reachable", (nd->ndm_state & NUD_REACHABLE)); - L_setbool(s->L, "stale", (nd->ndm_state & NUD_STALE)); - L_setbool(s->L, "delay", (nd->ndm_state & NUD_DELAY)); - L_setbool(s->L, "probe", (nd->ndm_state & NUD_PROBE)); - L_setbool(s->L, "failed", (nd->ndm_state & NUD_FAILED)); - L_setbool(s->L, "noarp", (nd->ndm_state & NUD_NOARP)); - L_setbool(s->L, "permanent", (nd->ndm_state & NUD_PERMANENT)); - - if (dst) - L_setaddr(s->L, "dest", nd->ndm_family, dst, -1); - - if (mac) - { - snprintf(buf, sizeof(buf), "%02x:%02x:%02x:%02x:%02x:%02x", - mac->ether_addr_octet[0], mac->ether_addr_octet[1], - mac->ether_addr_octet[2], mac->ether_addr_octet[3], - mac->ether_addr_octet[4], mac->ether_addr_octet[5]); - - lua_pushstring(s->L, buf); - lua_setfield(s->L, -2, "mac"); - } - - s->index++; - - if (s->callback) - lua_call(s->L, 1, 0); - else if (hdr->nlmsg_flags & NLM_F_MULTI) - lua_rawseti(s->L, -2, s->index); - -out: - s->pending = !!(hdr->nlmsg_flags & NLM_F_MULTI); - return NL_SKIP; -} - -static int neighbor_dump(lua_State *L) -{ - cidr_t p = { }; - const char *s; - struct ether_addr *mac; - struct dump_filter filter = { .type = 0xFF & ~NUD_NOARP }; - struct dump_state st = { - .callback = lua_isfunction(L, 2), - .pending = 1, - .filter = &filter, - .L = L - }; - - if (lua_type(L, 1) == LUA_TTABLE) - { - filter.family = L_getint(L, 1, "family"); - - if (filter.family == 4) - filter.family = AF_INET; - else if (filter.family == 6) - filter.family = AF_INET6; - else - filter.family = 0; - - if ((s = L_getstr(L, 1, "dev")) != NULL) - filter.iif = if_nametoindex(s); - - if ((s = L_getstr(L, 1, "dest")) != NULL && parse_cidr(s, &p)) - filter.dst = p; - - if ((s = L_getstr(L, 1, "mac")) != NULL && - (mac = ether_aton(s)) != NULL) - filter.mac = *mac; - } - - if (!sock) - { - sock = nl_socket_alloc(); - if (!sock) - return _error(L, -1, "Out of memory"); - - if (nl_connect(sock, NETLINK_ROUTE)) - return _error(L, 0, NULL); - } - - struct nl_msg *msg; - struct nl_cb *cb = nl_cb_alloc(NL_CB_DEFAULT); - struct ndmsg ndm = { - .ndm_family = filter.family - }; - - msg = nlmsg_alloc_simple(RTM_GETNEIGH, NLM_F_REQUEST | NLM_F_DUMP); - if (!msg) - goto out; - - nlmsg_append(msg, &ndm, sizeof(ndm), 0); - - nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, cb_dump_neigh, &st); - nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, cb_done, &st); - nl_cb_err(cb, NL_CB_CUSTOM, cb_error, &st); - - nl_send_auto_complete(sock, msg); - - if (!st.callback) - lua_newtable(L); - - while (st.pending > 0) - nl_recvmsgs(sock, cb); - - nlmsg_free(msg); - -out: - nl_cb_put(cb); - return (st.callback == 0); -} - - -static int cb_dump_link(struct nl_msg *msg, void *arg) -{ - char *p, *addr, buf[48]; - struct dump_state *s = arg; - struct nlmsghdr *hdr = nlmsg_hdr(msg); - struct ifinfomsg *ifm = NLMSG_DATA(hdr); - struct nlattr *tb[IFLA_MAX+1]; - int i, len; - - if (hdr->nlmsg_type != RTM_NEWLINK) - return NL_SKIP; - - nlmsg_parse(hdr, sizeof(*ifm), tb, IFLA_MAX, NULL); - - L_setbool(s->L, "up", (ifm->ifi_flags & IFF_RUNNING)); - L_setint(s->L, "type", ifm->ifi_type); - L_setstr(s->L, "name", if_indextoname(ifm->ifi_index, buf)); - - if (tb[IFLA_MTU]) - L_setint(s->L, "mtu", RTA_U32(tb[IFLA_MTU])); - - if (tb[IFLA_TXQLEN]) - L_setint(s->L, "qlen", RTA_U32(tb[IFLA_TXQLEN])); - - if (tb[IFLA_MASTER]) - L_setdev(s->L, "master", tb[IFLA_MASTER]); - - if (tb[IFLA_ADDRESS]) - { - len = nla_len(tb[IFLA_ADDRESS]); - addr = nla_get_string(tb[IFLA_ADDRESS]); - - if ((len * 3) <= sizeof(buf)) - { - for (p = buf, i = 0; i < len; i++) - p += sprintf(p, "%s%02x", (i ? ":" : ""), (uint8_t)*addr++); - - L_setstr(s->L, "mac", buf); - } - } - - s->pending = 0; - return NL_SKIP; -} - -static int link_get(lua_State *L) -{ - const char *dev = luaL_checkstring(L, 1); - struct dump_state st = { - .pending = 1, - .L = L - }; - - if (!sock) - { - sock = nl_socket_alloc(); - if (!sock) - return _error(L, -1, "Out of memory"); - - if (nl_connect(sock, NETLINK_ROUTE)) - return _error(L, 0, NULL); - } - - struct nl_msg *msg = nlmsg_alloc_simple(RTM_GETLINK, NLM_F_REQUEST); - struct nl_cb *cb = nl_cb_alloc(NL_CB_DEFAULT); - struct ifinfomsg ifm = { .ifi_index = if_nametoindex(dev) }; - - if (!msg || !cb) - return 0; - - nlmsg_append(msg, &ifm, sizeof(ifm), 0); - - nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, cb_dump_link, &st); - nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, cb_done, &st); - nl_cb_err(cb, NL_CB_CUSTOM, cb_error, &st); - - lua_newtable(L); - - nl_send_auto_complete(sock, msg); - - while (st.pending > 0) - nl_recvmsgs(sock, cb); - - nlmsg_free(msg); - nl_cb_put(cb); - - return 1; -} - - -static const luaL_reg ip_methods[] = { - { "new", cidr_new }, - { "IPv4", cidr_ipv4 }, - { "IPv6", cidr_ipv6 }, - - { "route", route_get }, - { "routes", route_dump }, - - { "neighbors", neighbor_dump }, - - { "link", link_get }, - - { } -}; - -static const luaL_reg ip_cidr_methods[] = { - { "is4", cidr_is4 }, - { "is4rfc1918", cidr_is4rfc1918 }, - { "is4linklocal", cidr_is4linklocal }, - { "is6", cidr_is6 }, - { "is6linklocal", cidr_is6linklocal }, - { "is6mapped4", cidr_is6mapped4 }, - { "lower", cidr_lower }, - { "higher", cidr_higher }, - { "equal", cidr_equal }, - { "prefix", cidr_prefix }, - { "network", cidr_network }, - { "host", cidr_host }, - { "mask", cidr_mask }, - { "broadcast", cidr_broadcast }, - { "mapped4", cidr_mapped4 }, - { "contains", cidr_contains }, - { "add", cidr_add }, - { "sub", cidr_sub }, - { "minhost", cidr_minhost }, - { "maxhost", cidr_maxhost }, - { "string", cidr_tostring }, - - { "__lt", cidr_lower }, - { "__le", cidr_lower_equal }, - { "__eq", cidr_equal }, - { "__add", cidr_add }, - { "__sub", cidr_sub }, - { "__gc", cidr_gc }, - { "__tostring", cidr_tostring }, - - { } -}; - -int luaopen_luci_ip(lua_State *L) -{ - luaL_register(L, LUCI_IP, ip_methods); - - luaL_newmetatable(L, LUCI_IP_CIDR); - luaL_register(L, NULL, ip_cidr_methods); - lua_pushvalue(L, -1); - lua_setfield(L, -2, "__index"); - lua_pop(L, 1); - - return 1; -} diff --git a/package/luci/libs/luci-lib-ip/src/ip.luadoc b/package/luci/libs/luci-lib-ip/src/ip.luadoc deleted file mode 100644 index e32ae72f40..0000000000 --- a/package/luci/libs/luci-lib-ip/src/ip.luadoc +++ /dev/null @@ -1,831 +0,0 @@ ---- LuCI IP calculation and netlink access library. -module "luci.ip" - ----[[ -Construct a new luci.ip.cidr instance and autodetect the address family. -Throws an error if the given strings do not represent a valid address or -if the given optional netmask is of a different family. -@class function -@sort 1 -@name new -@param address String containing a valid IPv4 or IPv6 address, optionally -with prefix size (CIDR notation) or netmask separated by slash. -@param netmask String containing a valid IPv4 or IPv6 netmask or number -containing a prefix size in bits (`0..32` for IPv4, -`0..128` for IPv6). Overrides mask embedded in the first argument -if specified. (optional) -@return A `luci.ip.cidr` object representing the given -address/mask range. -@usage `addr = luci.ip.new("10.24.0.1/24") -addr = luci.ip.new("10.24.0.1/255.255.255.0") -addr = luci.ip.new("10.24.0.1", "255.255.255.0") -- separate netmask -addr = luci.ip.new("10.24.0.1/24", 16) -- override netmask - -addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/64") -addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/ffff:ffff:ffff:ffff::") -addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17", "ffff:ffff:ffff:ffff::") -addr6 = luci.ip.new("fe80::221:63ff:fe75:aa17/64", 128) -- override netmask` -@see IPv4 -@see IPv6 -]] - ----[[ -Construct a new IPv4 luci.ip.cidr instance. -Throws an error if the given string does not represent a valid IPv4 address or -if the given optional netmask is of a different family. -@class function -@sort 2 -@name IPv4 -@param address String containing a valid IPv4, optionally with prefix size -(CIDR notation) or netmask separated by slash. -@param netmask String containing a valid IPv4 netmask or number -containing a prefix size between `0` and `32` bit. -Overrides mask embedded in the first argument if specified. (optional) -@return A `luci.ip.cidr` object representing the given IPv4 range. -@usage `addr = luci.ip.IPv4("10.24.0.1/24") -addr = luci.ip.IPv4("10.24.0.1/255.255.255.0") -addr = luci.ip.IPv4("10.24.0.1", "255.255.255.0") -- separate netmask -addr = luci.ip.IPv4("10.24.0.1/24", 16) -- override netmask` -@see IPv6 -]] - ----[[ -Construct a new IPv6 luci.ip.cidr instance. -Throws an error if the given string does not represent a valid IPv6 address or -if the given optional netmask is of a different family. -@class function -@sort 3 -@name IPv6 -@param address String containing a valid IPv6, optionally with prefix size -(CIDR notation) or netmask separated by slash. -@param netmask String containing a valid IPv4 netmask or number -containing a prefix size between `0` and `128` bit. -Overrides mask embedded in the first argument if specified. (optional) -@return A `luci.ip.cidr` object representing the given IPv6 range. -@usage `addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/64") -addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/ffff:ffff:ffff:ffff::") -addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17", "ffff:ffff:ffff:ffff::") -addr6 = luci.ip.IPv6("fe80::221:63ff:fe75:aa17/64", 128) -- override netmask` -@see IPv4 -]] - ----[[ -Determine the route leading to the given destination. -@class function -@sort 4 -@name route -@param address A `luci.ip.cidr` instance or a string containing -a valid IPv4 or IPv6 range as specified by `luci.ip.new()`. -@return

    Table containing the fields described below.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    `type` -

    Route type with one of the following numeric values:

    - - - - - - - - - - - - - - - - - - - - - -
    `1``RTN_UNICAST` - Gateway or direct route
    `2``RTN_LOCAL` - Accept locally
    `3``RTN_BROADCAST` - - Accept locally as broadcast send as broadcast
    `4``RTN_ANYCAST` - - Accept locally as broadcast but send as unicast
    `5``RTN_MULTICAST` - Multicast route
    -
    `family`Number containing the route family, `4` for IPv4 or - `6` for IPv6
    `dest`Destination `luci.ip.cidr` instance
    `gw`Gateway `luci.ip.cidr` instance (optional)
    `from`Source address `luci.ip.cidr` instance (optional)
    `src`Preferred source `luci.ip.cidr` instance (optional)
    `dev`String containing the name of the outgoing interface
    `iif`String containing the name of the incoming interface (optional)
    `table`Number of the associated routing table (`0..65535`)
    `proto`Number of the associated routing protocol
    `scope`Number describing the scope of the route, most commonly - `0` for global or `253` for on-link
    `metric`Number describing the route metric (optional)
    `expires`Number of seconds the prefix is valid (IPv6 only, optional)
    `error`Route destination error code (optional)
    -@usage
      -
    • Find default gateway by getting route to Google's public NS server -`rt = luci.ip.route("8.8.8.8") -if rt ~= nil then - print("gateway is", rt.gw) -end`
    • -
    • Determine IPv6 upstream interface `rt = luci.ip.route("2001::/7") -if rt ~= nil then - print("ipv6 upstream device is", rt.dev) -end`
    • -
    -@see routes -]] - ----[[ -Fetch all routes, optionally matching the given criteria. -@class function -@sort 5 -@name routes -@param filter

    Table containing one or more of the possible filter -critera described below (optional)

    - - - - - - - - - - - - - - -
    FieldDescription
    `family` - Number describing the address family to return - `4` selects - IPv4 routes, `6` IPv6 ones. Any other value selects both. -
    `iif` - String containing the incoming route interface to match. -
    `oif` - String containing the outgoing route interface to match. -
    `type` - Numeric type to match, e.g. `1` for unicast. -
    `scope` - Numeric scope to match, e.g. `253` for onlink. -
    `proto` - Numeric protocol to match, e.g. `2` for boot. -
    `table` - Numeric routing table to match (`0..65535`). -
    `gw` - String containing the gateway address to match. Can be in any notation - specified by `luci.ip.new()`. Prefix matching is performed when - comparing the routes, e.g. "192.168.1.0/24" would select routes with gateway - addresses `192.168.1.1 .. 192.168.1.255`. -
    `dest` - String containing the destination to match. Prefix matching is performed. -
    `from` - String containing the source address to match. Prefix matching is performed. -
    `src` - String containing the preferred source address to match. - Prefix matching is performed. -
    `dest_exact` - String containing the destination to match. Exact matching is performed, - e.g. `dest = "0.0.0.0/0"` would match any IPv4 route - while `dest_exact = "0.0.0.0/0"` will only match the - default route. -
    `from_exact` - String containing the source address to match. Exact matching is performed. -
    -@param callback

    Callback function to invoke for each found route -instead of returning one table of route objects (optional)

    -@return If no callback function is provided, a table of routes -as specified by `luci.ip.route()` -is returned. If a callback function is given, it is invoked for each route -and nothing is returned. -@see route -@usage
      -
    • Find all IPv4 default routes: -`luci.ip.routes({ dest_exact = "0.0.0.0/0" }, function(rt) - print(rt.type, rt.gw, rt.dev) -end)`
    • -
    • Find all global IPv6 prefixes on the current system: -`luci.ip.routes({ from = "2001::/7" }, function(rt) - print(rt.from) -end)`
    • -
    • Fetch all IPv4 routes: -`routes = luci.ip.routes({ family = 4 }) -for _, rt in ipairs(routes) do - print(rt.dest, rt.gw, rt.dev) -end`
    • -
    -]] - ----[[ -Fetches entries from the IPv4 ARP and IPv6 neighbour kernel table -@class function -@sort 6 -@name neighbors -@param filter

    Table containing one or more of the possible filter -critera described below (optional)

    - - - - - -
    FieldDescription
    `family` - Number describing the address family to return - `4` selects - IPv4 ARP, `6` select IPv6 neighbour entries. Any other value - selects both. -
    `dev` - String containing the associated interface to match. -
    `dest` - String containing the associated address to match. Can be in any notation - specified by `luci.ip.new()`. Prefix matching is performed when - comparing the addresses, e.g. "192.168.1.0/24" would select ARP entries - for `192.168.1.1 .. 192.168.1.255`. -
    `mac` - String containing MAC address to match. -
    -@param callback

    Callback function to invoke for each found neighbour -entry instead of returning one table of neighbour entries (optional)

    -@return If no callback function is provided, a table of neighbour entries -is returned. If a callback function is given, it is invoked for each entry -and nothing is returned. - -A neighbour entry is a table containing the following fields: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    `family`Number containing the neighbour entry family, `4` for IPv4 - ARP or `6` for IPv6 NDP
    `dev`String containing the associated device of the neighbour entry
    `dest`IP address `luci.ip.cidr` instance
    `mac`String containing the associated MAC address
    `router`Boolean "true" if the neighbour entry is a router (IPv6, optional)
    `proxy`Boolean "true" if this is a proxy entry (optional)
    `incomplete`Boolean "true" if the entry is in incomplete state (optional)
    `reachable`Boolean "true" if the entry is in reachable state (optional)
    `stale`Boolean "true" if the entry is stale (optional)
    `delay`Boolean "true" if the entry is delayed (optional)
    `probe`Boolean "true" if the entry is in probe state (optional)
    `failed`Boolean "true" if the entry is in failed state (optional)
    `noarp`Boolean "true" if the entry is not caused by NDP or - ARP (optional)
    `permanent`Boolean "true" if the entry was statically configured from - userspace (optional)
    -@usage
      -
    • Find all ARP neighbours in the LAN: -`luci.ip.neighbors({ dest = "192.168.0.0/16" }, function(n) - print(n.dest, n.mac) -end)`
    • -
    • Find all active IPv6 addresses of host with given MAC: -`luci.ip.neighbors({ family = 6, mac = "00:21:63:75:aa:17" }, - function(n) - print(n.dest) - end)`
    • -
    -]] - ----[[ -Fetch basic device information -@class function -@sort 7 -@name link -@param device String containing the network device to query -@return If the given interface is found, a table containing the fields -described below is returned, else an empty table. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldDescription
    `up`Boolean indicating whether the device is in IFF_RUNNING state
    `type`Numeric value indicating the type of the device, e.g. `1` - for ethernet.
    `name`String containing the name of the device
    `master`If queried device is a bridge port, string containing the name of - parent bridge device (optional)
    `mtu`Number containing the current MTU of the device
    `qlen`Number containing the TX queue length of the device
    `mac`String containing the link local address of the device in - dotted hex notation
    -@usage
      -
    • Test whether device br-lan exists: -`print(luci.ip.link("br-lan").name ~= nil) -`
    • -
    • Query MAC address of eth0: -`print(luci.ip.link("eth0").mac) -`
    • -
    -]] - - ---- IP CIDR Object. --- Represents an IPv4 or IPv6 address range. --- @cstyle instance -module "luci.ip.cidr" - ----[[ -Checks whether the CIDR instance is an IPv4 address range - -@class function -@sort 1 -@name cidr.is4 -@see cidr.is6 -@return `true` if the CIDR is an IPv4 range, else `false` -]] - ----[[ -Checks whether the CIDR instance is within the private RFC1918 address space - -@class function -@sort 2 -@name cidr.is4rfc1918 -@return `true` if the entire range of this CIDR lies within one of - the ranges `10.0.0.0-10.255.255.255`, - `172.16.0.0-172.31.0.0` or - `192.168.0.0-192.168.255.255`, else `false`. -@usage `local addr = luci.ip.new("192.168.45.2/24") -if addr:is4rfc1918() then - print("Is a private address") -end` -]] - ----[[ -Checks whether the CIDR instance is an IPv4 link local (Zeroconf) address - -@class function -@sort 3 -@name cidr.is4linklocal -@return `true` if the entire range of this CIDR lies within the range - the range `169.254.0.0-169.254.255.255`, else `false`. -@usage `local addr = luci.ip.new("169.254.34.125") -if addr:is4linklocal() then - print("Is a zeroconf address") -end` -]] - ----[[ -Checks whether the CIDR instance is an IPv6 address range - -@class function -@sort 4 -@name cidr.is6 -@see cidr.is4 -@return `true` if the CIDR is an IPv6 range, else `false` -]] - ----[[ -Checks whether the CIDR instance is an IPv6 link local address - -@class function -@sort 5 -@name cidr.is6linklocal -@return `true` if the entire range of this CIDR lies within the range - the `fe80::/10` range, else `false`. -@usage `local addr = luci.ip.new("fe92:53a:3216:af01:221:63ff:fe75:aa17/64") -if addr:is6linklocal() then - print("Is a linklocal address") -end` -]] - ----[[ -Checks whether the CIDR instance is an IPv6 mapped IPv4 address - -@class function -@sort 6 -@name cidr.is6mapped4 -@return `true` if the address is an IPv6 mapped IPv4 address in the - form `::ffff:1.2.3.4`. -@usage `local addr = luci.ip.new("::ffff:192.168.1.1") -if addr:is6mapped4() then - print("Is a mapped IPv4 address") -end` -]] - ----[[ -Checks whether this CIDR instance is lower than the given argument. -The comparisation follows these rules: -
    • An IPv4 address is always lower than an IPv6 address
    • -
    • Prefix sizes are ignored
    - -@class function -@sort 7 -@name cidr.lower -@param addr A `luci.ip.cidr` instance or a string convertable by - `luci.ip.new()` to compare against. -@return `true` if this CIDR is lower than the given address, - else `false`. -@usage `local addr = luci.ip.new("192.168.1.1") -print(addr:lower(addr)) -- false -print(addr:lower("10.10.10.10/24")) -- false -print(addr:lower(luci.ip.new("::1"))) -- true -print(addr:lower(luci.ip.new("192.168.200.1"))) -- true` -@see cidr.higher -@see cidr.equal -]] - ----[[ -Checks whether this CIDR instance is higher than the given argument. -The comparisation follows these rules: -
    • An IPv4 address is always lower than an IPv6 address
    • -
    • Prefix sizes are ignored
    - -@class function -@sort 8 -@name cidr.higher -@param addr A `luci.ip.cidr` instance or a string convertable by - `luci.ip.new()` to compare against. -@return `true` if this CIDR is higher than the given address, - else `false`. -@usage `local addr = luci.ip.new("192.168.1.1") -print(addr:higher(addr)) -- false -print(addr:higher("10.10.10.10/24")) -- true -print(addr:higher(luci.ip.new("::1"))) -- false -print(addr:higher(luci.ip.new("192.168.200.1"))) -- false` -@see cidr.lower -@see cidr.equal -]] - ----[[ -Checks whether this CIDR instance is equal to the given argument. - -@class function -@sort 9 -@name cidr.equal -@param addr A `luci.ip.cidr` instance or a string convertable by - `luci.ip.new()` to compare against. -@return `true` if this CIDR is equal to the given address, - else `false`. -@usage `local addr = luci.ip.new("192.168.1.1") -print(addr:equal(addr)) -- true -print(addr:equal("192.168.1.1")) -- true -print(addr:equal(luci.ip.new("::1"))) -- false - -local addr6 = luci.ip.new("::1") -print(addr6:equal("0:0:0:0:0:0:0:1/64")) -- true -print(addr6:equal(luci.ip.new("fe80::221:63ff:fe75:aa17"))) -- false` -@see cidr.lower -@see cidr.higher -]] - ----[[ -Get or set prefix size of CIDR instance. -If the optional mask parameter is given, the prefix size of this CIDR is altered -else the current prefix size is returned. - -@class function -@sort 10 -@name cidr.prefix -@param mask Either a number containing the number of bits (`0..32` - for IPv4, `0..128` for IPv6) or a string containing a valid - netmask (optional) -@return Bit count of the current prefix size -@usage `local range = luci.ip.new("192.168.1.1/255.255.255.0") -print(range:prefix()) -- 24 - -range:prefix(16) -print(range:prefix()) -- 16 - -range:prefix("255.255.255.255") -print(range:prefix()) -- 32` -]] - ----[[ -Derive network address of CIDR instance. - -Returns a new CIDR instance representing the network address of this instance -with all host parts masked out. The used prefix size can be overridden by the -optional mask parameter. - -@class function -@sort 11 -@name cidr.network -@param mask Either a number containing the number of bits (`0..32` - for IPv4, `0..128` for IPv6) or a string containing a valid - netmask (optional) -@return CIDR instance representing the network address -@usage `local range = luci.ip.new("192.168.62.243/255.255.0.0") -print(range:network()) -- "192.168.0.0" -print(range:network(24)) -- "192.168.62.0" -print(range:network("255.255.255.0")) -- "192.168.62.0" - -local range6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64") -print(range6:network()) -- "fd9b:62b3:9cc5::"` -]] - ----[[ -Derive host address of CIDR instance. - -This function essentially constructs a copy of this CIDR with the prefix size -set to `32` for IPv4 and `128` for IPv6. - -@class function -@sort 12 -@name cidr.host -@return CIDR instance representing the host address -@usage `local range = luci.ip.new("172.19.37.45/16") -print(range) -- "172.19.37.45/16" -print(range:host()) -- "172.19.37.45"` -]] - ----[[ -Derive netmask of CIDR instance. - -Constructs a CIDR instance representing the netmask of this instance. The used -prefix size can be overridden by the optional mask parameter. - -@class function -@sort 13 -@name cidr.mask -@param mask Either a number containing the number of bits (`0..32` - for IPv4, `0..128` for IPv6) or a string containing a valid - netmask (optional) -@return CIDR instance representing the netmask -@usage `local range = luci.ip.new("172.19.37.45/16") -print(range:mask()) -- "255.255.0.0" -print(range:mask(24)) -- "255.255.255.0" -print(range:mask("255.0.0.0")) -- "255.0.0.0"` -]] - ----[[ -Derive broadcast address of CIDR instance. - -Constructs a CIDR instance representing the broadcast address of this instance. -The used prefix size can be overridden by the optional mask parameter. - -This function has no effect on IPv6 instances, it will return nothing in this -case. - -@class function -@sort 14 -@name cidr.broadcast -@param mask Either a number containing the number of bits (`0..32` - for IPv4, `0..128` for IPv6) or a string containing a valid - netmask (optional) -@return Return a new CIDR instance representing the broadcast address if this - instance is an IPv4 range, else return nothing. -@usage `local range = luci.ip.new("172.19.37.45/16") -print(range:broadcast()) -- "172.19.255.255" -print(range:broadcast(24)) -- "172.19.37.255" -print(range:broadcast("255.0.0.0")) -- "172.255.255.255"` -]] - ----[[ -Derive mapped IPv4 address of CIDR instance. - -Constructs a CIDR instance representing the IPv4 address of the IPv6 mapped -IPv4 address in this instance. - -This function has no effect on IPv4 instances or IPv6 instances which are not a -mapped address, it will return nothing in this case. - -@class function -@sort 15 -@name cidr.mapped4 -@return Return a new CIDR instance representing the IPv4 address if this - instance is an IPv6 mapped IPv4 address, else return nothing. -@usage `local addr = luci.ip.new("::ffff:172.16.19.1") -print(addr:mapped4()) -- "172.16.19.1"` -]] - ----[[ -Test whether CIDR contains given range. - -@class function -@sort 16 -@name cidr.contains -@param addr A `luci.ip.cidr` instance or a string convertable by - `luci.ip.new()` to test. -@return `true` if this instance fully contains the given address else - `false`. -@usage `local range = luci.ip.new("10.24.0.0/255.255.0.0") -print(range:contains("10.24.5.1")) -- true -print(range:contains("::1")) -- false -print(range:contains("10.0.0.0/8")) -- false - -local range6 = luci.ip.new("fe80::/10") -print(range6:contains("fe80::221:63f:fe75:aa17/64")) -- true -print(range6:contains("fd9b:6b3:c5:0:221:63f:fe75:aa17/64")) -- false` -]] - ----[[ -Add given amount to CIDR instance. If the result would overflow the maximum -address space, the result is set to the highest possible address. - -@class function -@sort 17 -@name cidr.add -@param amount A numeric value between 0 and 0xFFFFFFFF, a - `luci.ip.cidr` instance or a string convertable by - `luci.ip.new()`. -@param inplace If `true`, modify this instance instead of returning - a new derived CIDR instance. -@return
      -
    • When adding inplace: Return `true` if the addition succeded - or `false` when the addition overflowed.
    • -
    • When deriving new CIDR: Return new instance representing the value of - this instance plus the added amount or the highest possible address if - the addition overflowed the available address space.
    -@usage `local addr = luci.ip.new("192.168.1.1/24") -print(addr:add(250)) -- "192.168.1.251/24" -print(addr:add("0.0.99.0")) -- "192.168.100.1/24" - -addr:add(256, true) -- true -print(addr) -- "192.168.2.1/24 - -addr:add("255.0.0.0", true) -- false (overflow) -print(addr) -- "255.255.255.255/24 - -local addr6 = luci.ip.new("fe80::221:63f:fe75:aa17/64") -print(addr6:add(256)) -- "fe80::221:63f:fe75:ab17/64" -print(addr6:add("::ffff:0")) -- "fe80::221:640:fe74:aa17/64" - -addr:add(256, true) -- true -print(addr) -- "fe80::221:63f:fe75:ab17/64 - -addr:add("ffff::", true) -- false (overflow) -print(addr) -- "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/64"` -]] - ----[[ -Substract given amount from CIDR instance. If the result would under, the lowest -possible address is returned. - -@class function -@sort 18 -@name cidr.sub -@param amount A numeric value between 0 and 0xFFFFFFFF, a - `luci.ip.cidr` instance or a string convertable by - `luci.ip.new()`. -@param inplace If `true`, modify this instance instead of returning - a new derived CIDR instance. -@return
      -
    • When substracting inplace: Return `true` if the substraction - succeded or `false` when the substraction underflowed.
    • -
    • When deriving new CIDR: Return new instance representing the value of - this instance minus the substracted amount or the lowest address if - the substraction underflowed.
    -@usage `local addr = luci.ip.new("192.168.1.1/24") -print(addr:sub(256)) -- "192.168.0.1/24" -print(addr:sub("0.168.0.0")) -- "192.0.1.1/24" - -addr:sub(256, true) -- true -print(addr) -- "192.168.0.1/24 - -addr:sub("255.0.0.0", true) -- false (underflow) -print(addr) -- "0.0.0.0/24 - -local addr6 = luci.ip.new("fe80::221:63f:fe75:aa17/64") -print(addr6:sub(256)) -- "fe80::221:63f:fe75:a917/64" -print(addr6:sub("::ffff:0")) -- "fe80::221:63e:fe76:aa17/64" - -addr:sub(256, true) -- true -print(addr) -- "fe80::221:63f:fe75:a917/64" - -addr:sub("ffff::", true) -- false (underflow) -print(addr) -- "::/64"` -]] - ----[[ -Calculate the lowest possible host address within this CIDR instance. - -@class function -@sort 19 -@name cidr.minhost -@return Returns a new CIDR instance representing the lowest host address - within this range. -@usage `local addr = luci.ip.new("192.168.123.56/24") -print(addr:minhost()) -- "192.168.123.1" - -local addr6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64") -print(addr6:minhost()) -- "fd9b:62b3:9cc5::1"` -]] - ----[[ -Calculate the highest possible host address within this CIDR instance. - -@class function -@sort 20 -@name cidr.maxhost -@return Returns a new CIDR instance representing the highest host address - within this range. -@usage `local addr = luci.ip.new("192.168.123.56/24") -print(addr:maxhost()) -- "192.168.123.254" (.255 is broadcast) - -local addr6 = luci.ip.new("fd9b:62b3:9cc5:0:221:63ff:fe75:aa17/64") -print(addr6:maxhost()) -- "fd9b:62b3:9cc5:0:ffff:ffff:ffff:ffff"` -]] - ----[[ -Convert CIDR instance into string representation. - -If the prefix size of instance is less than 32 for IPv4 or 128 for IPv6, the -address is returned in the form "address/prefix" otherwise just "address". - -It is usually not required to call this function directly as CIDR objects -define it as __tostring function in the associated metatable. - -@class function -@sort 21 -@name cidr.string -@return Returns a string representing the range or address of this CIDR instance -]] diff --git a/package/luci/libs/luci-lib-json/Makefile b/package/luci/libs/luci-lib-json/Makefile deleted file mode 100644 index ededc1f650..0000000000 --- a/package/luci/libs/luci-lib-json/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI JSON library -LUCI_DEPENDS:= - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/libs/luci-lib-json/luasrc/json.lua b/package/luci/libs/luci-lib-json/luasrc/json.lua deleted file mode 100644 index f7b57f916c..0000000000 --- a/package/luci/libs/luci-lib-json/luasrc/json.lua +++ /dev/null @@ -1,530 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local nixio = require "nixio" -local util = require "luci.util" -local table = require "table" -local string = require "string" -local coroutine = require "coroutine" - -local assert = assert -local tonumber = tonumber -local tostring = tostring -local error = error -local type = type -local pairs = pairs -local ipairs = ipairs -local next = next -local pcall = pcall - -local band = nixio.bit.band -local bor = nixio.bit.bor -local rshift = nixio.bit.rshift -local char = string.char - -local getmetatable = getmetatable - -module "luci.json" - - -function decode(json, ...) - local a = ActiveDecoder(function() return nil end, ...) - a.chunk = json - local s, obj = pcall(a.get, a) - return s and obj or nil -end - - -function encode(obj, ...) - local out = {} - local e = Encoder(obj, 1, ...):source() - local chnk, err - repeat - chnk, err = e() - out[#out+1] = chnk - until not chnk - return not err and table.concat(out) or nil -end - - -function null() - return null -end - -Encoder = util.class() - -function Encoder.__init__(self, data, buffersize, fastescape) - self.data = data - self.buffersize = buffersize or 512 - self.buffer = "" - self.fastescape = fastescape - - getmetatable(self).__call = Encoder.source -end - -function Encoder.source(self) - local source = coroutine.create(self.dispatch) - return function() - local res, data = coroutine.resume(source, self, self.data, true) - if res then - return data - else - return nil, data - end - end -end - -function Encoder.dispatch(self, data, start) - local parser = self.parsers[type(data)] - - parser(self, data) - - if start then - if #self.buffer > 0 then - coroutine.yield(self.buffer) - end - - coroutine.yield() - end -end - -function Encoder.put(self, chunk) - if self.buffersize < 2 then - coroutine.yield(chunk) - else - if #self.buffer + #chunk > self.buffersize then - local written = 0 - local fbuffer = self.buffersize - #self.buffer - - coroutine.yield(self.buffer .. chunk:sub(written + 1, fbuffer)) - written = fbuffer - - while #chunk - written > self.buffersize do - fbuffer = written + self.buffersize - coroutine.yield(chunk:sub(written + 1, fbuffer)) - written = fbuffer - end - - self.buffer = chunk:sub(written + 1) - else - self.buffer = self.buffer .. chunk - end - end -end - -function Encoder.parse_nil(self) - self:put("null") -end - -function Encoder.parse_bool(self, obj) - self:put(obj and "true" or "false") -end - -function Encoder.parse_number(self, obj) - self:put(tostring(obj)) -end - -function Encoder.parse_string(self, obj) - if self.fastescape then - self:put('"' .. obj:gsub('\\', '\\\\'):gsub('"', '\\"') .. '"') - else - self:put('"' .. - obj:gsub('[%c\\"]', - function(char) - return '\\u00%02x' % char:byte() - end - ) - .. '"') - end -end - -function Encoder.parse_iter(self, obj) - if obj == null then - return self:put("null") - end - - if type(obj) == "table" and (#obj == 0 and next(obj)) then - self:put("{") - local first = true - - for key, entry in pairs(obj) do - if key ~= null then - first = first or self:put(",") - first = first and false - self:parse_string(tostring(key)) - self:put(":") - self:dispatch(entry) - end - end - - self:put("}") - else - self:put("[") - local first = true - - if type(obj) == "table" then - for i=1, #obj do - first = first or self:put(",") - first = first and nil - self:dispatch(obj[i]) - end - else - for entry in obj do - first = first or self:put(",") - first = first and nil - self:dispatch(entry) - end - end - - self:put("]") - end -end - -Encoder.parsers = { - ['nil'] = Encoder.parse_nil, - ['table'] = Encoder.parse_iter, - ['number'] = Encoder.parse_number, - ['string'] = Encoder.parse_string, - ['boolean'] = Encoder.parse_bool, - ['function'] = Encoder.parse_iter -} - - -Decoder = util.class() - -function Decoder.__init__(self, customnull) - self.cnull = customnull - getmetatable(self).__call = Decoder.sink -end - -function Decoder.sink(self) - local sink = coroutine.create(self.dispatch) - return function(...) - return coroutine.resume(sink, self, ...) - end -end - - -function Decoder.get(self) - return self.data -end - -function Decoder.dispatch(self, chunk, src_err, strict) - local robject, object - local oset = false - - while chunk do - while chunk and #chunk < 1 do - chunk = self:fetch() - end - - assert(not strict or chunk, "Unexpected EOS") - if not chunk then break end - - local char = chunk:sub(1, 1) - local parser = self.parsers[char] - or (char:match("%s") and self.parse_space) - or (char:match("[0-9-]") and self.parse_number) - or error("Unexpected char '%s'" % char) - - chunk, robject = parser(self, chunk) - - if parser ~= self.parse_space then - assert(not oset, "Scope violation: Too many objects") - object = robject - oset = true - - if strict then - return chunk, object - end - end - end - - assert(not src_err, src_err) - assert(oset, "Unexpected EOS") - - self.data = object -end - - -function Decoder.fetch(self) - local tself, chunk, src_err = coroutine.yield() - assert(chunk or not src_err, src_err) - return chunk -end - - -function Decoder.fetch_atleast(self, chunk, bytes) - while #chunk < bytes do - local nchunk = self:fetch() - assert(nchunk, "Unexpected EOS") - chunk = chunk .. nchunk - end - - return chunk -end - - -function Decoder.fetch_until(self, chunk, pattern) - local start = chunk:find(pattern) - - while not start do - local nchunk = self:fetch() - assert(nchunk, "Unexpected EOS") - chunk = chunk .. nchunk - start = chunk:find(pattern) - end - - return chunk, start -end - - -function Decoder.parse_space(self, chunk) - local start = chunk:find("[^%s]") - - while not start do - chunk = self:fetch() - if not chunk then - return nil - end - start = chunk:find("[^%s]") - end - - return chunk:sub(start) -end - - -function Decoder.parse_literal(self, chunk, literal, value) - chunk = self:fetch_atleast(chunk, #literal) - assert(chunk:sub(1, #literal) == literal, "Invalid character sequence") - return chunk:sub(#literal + 1), value -end - - -function Decoder.parse_null(self, chunk) - return self:parse_literal(chunk, "null", self.cnull and null) -end - - -function Decoder.parse_true(self, chunk) - return self:parse_literal(chunk, "true", true) -end - - -function Decoder.parse_false(self, chunk) - return self:parse_literal(chunk, "false", false) -end - - -function Decoder.parse_number(self, chunk) - local chunk, start = self:fetch_until(chunk, "[^0-9eE.+-]") - local number = tonumber(chunk:sub(1, start - 1)) - assert(number, "Invalid number specification") - return chunk:sub(start), number -end - - -function Decoder.parse_string(self, chunk) - local str = "" - local object = nil - assert(chunk:sub(1, 1) == '"', 'Expected "') - chunk = chunk:sub(2) - - while true do - local spos = chunk:find('[\\"]') - if spos then - str = str .. chunk:sub(1, spos - 1) - - local char = chunk:sub(spos, spos) - if char == '"' then -- String end - chunk = chunk:sub(spos + 1) - break - elseif char == "\\" then -- Escape sequence - chunk, object = self:parse_escape(chunk:sub(spos)) - str = str .. object - end - else - str = str .. chunk - chunk = self:fetch() - assert(chunk, "Unexpected EOS while parsing a string") - end - end - - return chunk, str -end - - -function Decoder.utf8_encode(self, s1, s2) - local n = s1 * 256 + s2 - - if n >= 0 and n <= 0x7F then - return char(n) - elseif n >= 0 and n <= 0x7FF then - return char( - bor(band(rshift(n, 6), 0x1F), 0xC0), - bor(band(n, 0x3F), 0x80) - ) - elseif n >= 0 and n <= 0xFFFF then - return char( - bor(band(rshift(n, 12), 0x0F), 0xE0), - bor(band(rshift(n, 6), 0x3F), 0x80), - bor(band(n, 0x3F), 0x80) - ) - elseif n >= 0 and n <= 0x10FFFF then - return char( - bor(band(rshift(n, 18), 0x07), 0xF0), - bor(band(rshift(n, 12), 0x3F), 0x80), - bor(band(rshift(n, 6), 0x3F), 0x80), - bor(band(n, 0x3F), 0x80) - ) - else - return "?" - end -end - - -function Decoder.parse_escape(self, chunk) - local str = "" - chunk = self:fetch_atleast(chunk:sub(2), 1) - local char = chunk:sub(1, 1) - chunk = chunk:sub(2) - - if char == '"' then - return chunk, '"' - elseif char == "\\" then - return chunk, "\\" - elseif char == "u" then - chunk = self:fetch_atleast(chunk, 4) - local s1, s2 = chunk:sub(1, 2), chunk:sub(3, 4) - s1, s2 = tonumber(s1, 16), tonumber(s2, 16) - assert(s1 and s2, "Invalid Unicode character") - - return chunk:sub(5), self:utf8_encode(s1, s2) - elseif char == "/" then - return chunk, "/" - elseif char == "b" then - return chunk, "\b" - elseif char == "f" then - return chunk, "\f" - elseif char == "n" then - return chunk, "\n" - elseif char == "r" then - return chunk, "\r" - elseif char == "t" then - return chunk, "\t" - else - error("Unexpected escaping sequence '\\%s'" % char) - end -end - - -function Decoder.parse_array(self, chunk) - chunk = chunk:sub(2) - local array = {} - local nextp = 1 - - local chunk, object = self:parse_delimiter(chunk, "%]") - - if object then - return chunk, array - end - - repeat - chunk, object = self:dispatch(chunk, nil, true) - table.insert(array, nextp, object) - nextp = nextp + 1 - - chunk, object = self:parse_delimiter(chunk, ",%]") - assert(object, "Delimiter expected") - until object == "]" - - return chunk, array -end - - -function Decoder.parse_object(self, chunk) - chunk = chunk:sub(2) - local array = {} - local name - - local chunk, object = self:parse_delimiter(chunk, "}") - - if object then - return chunk, array - end - - repeat - chunk = self:parse_space(chunk) - assert(chunk, "Unexpected EOS") - - chunk, name = self:parse_string(chunk) - - chunk, object = self:parse_delimiter(chunk, ":") - assert(object, "Separator expected") - - chunk, object = self:dispatch(chunk, nil, true) - array[name] = object - - chunk, object = self:parse_delimiter(chunk, ",}") - assert(object, "Delimiter expected") - until object == "}" - - return chunk, array -end - - -function Decoder.parse_delimiter(self, chunk, delimiter) - while true do - chunk = self:fetch_atleast(chunk, 1) - local char = chunk:sub(1, 1) - if char:match("%s") then - chunk = self:parse_space(chunk) - assert(chunk, "Unexpected EOS") - elseif char:match("[%s]" % delimiter) then - return chunk:sub(2), char - else - return chunk, nil - end - end -end - - -Decoder.parsers = { - ['"'] = Decoder.parse_string, - ['t'] = Decoder.parse_true, - ['f'] = Decoder.parse_false, - ['n'] = Decoder.parse_null, - ['['] = Decoder.parse_array, - ['{'] = Decoder.parse_object -} - - -ActiveDecoder = util.class(Decoder) - -function ActiveDecoder.__init__(self, source, customnull) - Decoder.__init__(self, customnull) - self.source = source - self.chunk = nil - getmetatable(self).__call = self.get -end - - -function ActiveDecoder.get(self) - local chunk, src_err, object - if not self.chunk then - chunk, src_err = self.source() - else - chunk = self.chunk - end - - self.chunk, object = self:dispatch(chunk, src_err, true) - return object -end - - -function ActiveDecoder.fetch(self) - local chunk, src_err = self.source() - assert(chunk or not src_err, src_err) - return chunk -end diff --git a/package/luci/libs/luci-lib-json/luasrc/json.luadoc b/package/luci/libs/luci-lib-json/luasrc/json.luadoc deleted file mode 100644 index 37f97d25f2..0000000000 --- a/package/luci/libs/luci-lib-json/luasrc/json.luadoc +++ /dev/null @@ -1,94 +0,0 @@ ----[[ -LuCI JSON-Library - -@cstyle instance -]] -module "luci.json" - ----[[ -Directly decode a JSON string - -@class function -@name decode -@param json JSON-String -@return Lua object -]] - ----[[ -Direcly encode a Lua object into a JSON string. - -@class function -@name encode -@param obj Lua Object -@return JSON string -]] - ----[[ -Null replacement function - -@class function -@name null -@return null -]] - ----[[ -Create a new JSON-Encoder. - -@class function -@name Encoder -@param data Lua-Object to be encoded. -@param buffersize Blocksize of returned data source. -@param fastescape Use non-standard escaping (don't escape control chars) -@return JSON-Encoder -]] - ----[[ -Create an LTN12 source providing the encoded JSON-Data. - -@class function -@name Encoder.source -@return LTN12 source -]] - ----[[ -Create a new JSON-Decoder. - -@class function -@name Decoder -@param customnull Use luci.json.null instead of nil for decoding null -@return JSON-Decoder -]] - ----[[ -Create an LTN12 sink from the decoder object which accepts the JSON-Data. - -@class function -@name Decoder.sink -@return LTN12 sink -]] - ----[[ -Get the decoded data packets after the rawdata has been sent to the sink. - -@class function -@name Decoder.get -@return Decoded data -]] - ----[[ -Create a new Active JSON-Decoder. - -@class function -@name ActiveDecoder -@param customnull Use luci.json.null instead of nil for decoding null -@return Active JSON-Decoder -]] - ----[[ -Fetches one JSON-object from given source - -@class function -@name ActiveDecoder.get -@return Decoded object -]] - diff --git a/package/luci/libs/luci-lib-jsonc/Makefile b/package/luci/libs/luci-lib-jsonc/Makefile deleted file mode 100644 index 6a63dab5ef..0000000000 --- a/package/luci/libs/luci-lib-jsonc/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2015 LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Lua binding for JSON-C -LUCI_DEPENDS:=+liblua +libjson-c - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/libs/luci-lib-jsonc/src/Makefile b/package/luci/libs/luci-lib-jsonc/src/Makefile deleted file mode 100644 index e15fbac382..0000000000 --- a/package/luci/libs/luci-lib-jsonc/src/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -JSONC_CFLAGS = -std=gnu99 -I$(STAGING_DIR)/usr/include/json-c/ -JSONC_LDFLAGS = -llua -lm -ljson-c -JSONC_OBJ = jsonc.o -JSONC_LIB = jsonc.so - -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(LUA_CFLAGS) $(JSONC_CFLAGS) $(FPIC) -c -o $@ $< - -compile: $(JSONC_OBJ) - $(CC) $(LDFLAGS) -shared -o $(JSONC_LIB) $(JSONC_OBJ) $(JSONC_LDFLAGS) - -install: compile - mkdir -p $(DESTDIR)/usr/lib/lua/luci - cp $(JSONC_LIB) $(DESTDIR)/usr/lib/lua/luci/$(JSONC_LIB) - -clean: - rm -f *.o *.so diff --git a/package/luci/libs/luci-lib-jsonc/src/jsonc.c b/package/luci/libs/luci-lib-jsonc/src/jsonc.c deleted file mode 100644 index ef11101660..0000000000 --- a/package/luci/libs/luci-lib-jsonc/src/jsonc.c +++ /dev/null @@ -1,461 +0,0 @@ -/* -Copyright 2015 Jo-Philipp Wich - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -#define _GNU_SOURCE - -#include -#include -#include - -#include -#include -#include - -#define LUCI_JSONC "luci.jsonc" -#define LUCI_JSONC_PARSER "luci.jsonc.parser" - -struct json_state { - struct json_object *obj; - struct json_tokener *tok; - enum json_tokener_error err; -}; - -static void _json_to_lua(lua_State *L, struct json_object *obj); -static struct json_object * _lua_to_json(lua_State *L, int index); - -static int json_new(lua_State *L) -{ - struct json_state *s; - struct json_tokener *tok = json_tokener_new(); - - if (!tok) - return 0; - - s = lua_newuserdata(L, sizeof(*s)); - - if (!s) - { - json_tokener_free(tok); - return 0; - } - - s->tok = tok; - s->obj = NULL; - s->err = json_tokener_continue; - - luaL_getmetatable(L, LUCI_JSONC_PARSER); - lua_setmetatable(L, -2); - - return 1; -} - -static int json_parse(lua_State *L) -{ - size_t len; - const char *json = luaL_checklstring(L, 1, &len); - struct json_state s = { - .tok = json_tokener_new() - }; - - if (!s.tok) - return 0; - - s.obj = json_tokener_parse_ex(s.tok, json, len); - s.err = json_tokener_get_error(s.tok); - - if (s.obj) - { - _json_to_lua(L, s.obj); - json_object_put(s.obj); - } - else - { - lua_pushnil(L); - } - - if (s.err == json_tokener_continue) - s.err = json_tokener_error_parse_eof; - - if (s.err) - lua_pushstring(L, json_tokener_error_desc(s.err)); - - json_tokener_free(s.tok); - return (1 + !!s.err); -} - -static int json_stringify(lua_State *L) -{ - struct json_object *obj = _lua_to_json(L, 1); - bool pretty = lua_toboolean(L, 2); - int flags = 0; - - if (pretty) - flags |= JSON_C_TO_STRING_PRETTY | JSON_C_TO_STRING_SPACED; - - lua_pushstring(L, json_object_to_json_string_ext(obj, flags)); - json_object_put(obj); - return 1; -} - - -static int json_parse_chunk(lua_State *L) -{ - size_t len; - struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER); - const char *chunk = luaL_checklstring(L, 2, &len); - - s->obj = json_tokener_parse_ex(s->tok, chunk, len); - s->err = json_tokener_get_error(s->tok); - - if (!s->err) - { - lua_pushboolean(L, true); - return 1; - } - else if (s->err == json_tokener_continue) - { - lua_pushboolean(L, false); - return 1; - } - - lua_pushnil(L); - lua_pushstring(L, json_tokener_error_desc(s->err)); - return 2; -} - -static void _json_to_lua(lua_State *L, struct json_object *obj) -{ - int n; - - switch (json_object_get_type(obj)) - { - case json_type_object: - lua_newtable(L); - json_object_object_foreach(obj, key, val) - { - _json_to_lua(L, val); - lua_setfield(L, -2, key); - } - break; - - case json_type_array: - lua_newtable(L); - for (n = 0; n < json_object_array_length(obj); n++) - { - _json_to_lua(L, json_object_array_get_idx(obj, n)); - lua_rawseti(L, -2, n + 1); - } - break; - - case json_type_boolean: - lua_pushboolean(L, json_object_get_boolean(obj)); - break; - - case json_type_int: - lua_pushinteger(L, json_object_get_int(obj)); - break; - - case json_type_double: - lua_pushnumber(L, json_object_get_double(obj)); - break; - - case json_type_string: - lua_pushstring(L, json_object_get_string(obj)); - break; - - case json_type_null: - lua_pushnil(L); - break; - } -} - -static int json_parse_get(lua_State *L) -{ - struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER); - - if (!s->obj || s->err) - lua_pushnil(L); - else - _json_to_lua(L, s->obj); - - return 1; -} - -static int _lua_test_array(lua_State *L, int index) -{ - int max = 0; - lua_Number idx; - - lua_pushnil(L); - - /* check for non-integer keys */ - while (lua_next(L, index)) - { - if (lua_type(L, -2) != LUA_TNUMBER) - goto out; - - idx = lua_tonumber(L, -2); - - if (idx != (lua_Number)(lua_Integer)idx) - goto out; - - if (idx <= 0) - goto out; - - if (idx > max) - max = idx; - - lua_pop(L, 1); - continue; - -out: - lua_pop(L, 2); - return -1; - } - - /* check for holes */ - //for (i = 1; i <= max; i++) - //{ - // lua_rawgeti(L, index, i); - // - // if (lua_isnil(L, -1)) - // { - // lua_pop(L, 1); - // return 0; - // } - // - // lua_pop(L, 1); - //} - - return max; -} - -static struct json_object * _lua_to_json(lua_State *L, int index) -{ - lua_Number nd, ni; - struct json_object *obj; - const char *key; - int i, max; - - switch (lua_type(L, index)) - { - case LUA_TTABLE: - max = _lua_test_array(L, index); - - if (max >= 0) - { - obj = json_object_new_array(); - - if (!obj) - return NULL; - - for (i = 1; i <= max; i++) - { - lua_rawgeti(L, index, i); - - json_object_array_put_idx(obj, i - 1, - _lua_to_json(L, lua_gettop(L))); - - lua_pop(L, 1); - } - - return obj; - } - - obj = json_object_new_object(); - - if (!obj) - return NULL; - - lua_pushnil(L); - - while (lua_next(L, index)) - { - lua_pushvalue(L, -2); - key = lua_tostring(L, -1); - - if (key) - json_object_object_add(obj, key, - _lua_to_json(L, lua_gettop(L) - 1)); - - lua_pop(L, 2); - } - - return obj; - - case LUA_TNIL: - return NULL; - - case LUA_TBOOLEAN: - return json_object_new_boolean(lua_toboolean(L, index)); - - case LUA_TNUMBER: - nd = lua_tonumber(L, index); - ni = lua_tointeger(L, index); - - if (nd == ni) - return json_object_new_int(nd); - - return json_object_new_double(nd); - - case LUA_TSTRING: - return json_object_new_string(lua_tostring(L, index)); - } - - return NULL; -} - -static int json_parse_set(lua_State *L) -{ - struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER); - - s->err = 0; - s->obj = _lua_to_json(L, 2); - - return 0; -} - -static int json_parse_sink_closure(lua_State *L) -{ - bool finished = lua_toboolean(L, lua_upvalueindex(2)); - if (lua_isnil(L, 1)) - { - // no more data available - if (finished) - { - // we were finished parsing - lua_pushboolean(L, true); - return 1; - } - else - { - lua_pushnil(L); - lua_pushstring(L, "Incomplete JSON data"); - return 2; - } - } - else - { - if (finished) - { - lua_pushnil(L); - lua_pushstring(L, "Unexpected data after complete JSON object"); - return 2; - } - else - { - // luci.jsonc.parser.chunk() - lua_pushcfunction(L, json_parse_chunk); - // parser object from closure - lua_pushvalue(L, lua_upvalueindex(1)); - // chunk - lua_pushvalue(L, 1); - lua_call(L, 2, 2); - - if (lua_isnil(L, -2)) - { - // an error occurred, leave (nil, errmsg) on the stack and return it - return 2; - } - else if (lua_toboolean(L, -2)) - { - // finished reading, set finished=true and return nil to prevent further input - lua_pop(L, 2); - lua_pushboolean(L, true); - lua_replace(L, lua_upvalueindex(2)); - lua_pushnil(L); - return 1; - } - else - { - // not finished reading, return true - lua_pop(L, 2); - lua_pushboolean(L, true); - return 1; - } - } - } -} - -static int json_parse_sink(lua_State *L) -{ - luaL_checkudata(L, 1, LUCI_JSONC_PARSER); - lua_pushboolean(L, false); - lua_pushcclosure(L, json_parse_sink_closure, 2); - return 1; -} - -static int json_tostring(lua_State *L) -{ - struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER); - bool pretty = lua_toboolean(L, 2); - int flags = 0; - - if (pretty) - flags |= JSON_C_TO_STRING_PRETTY | JSON_C_TO_STRING_SPACED; - - lua_pushstring(L, json_object_to_json_string_ext(s->obj, flags)); - return 1; -} - -static int json_gc(lua_State *L) -{ - struct json_state *s = luaL_checkudata(L, 1, LUCI_JSONC_PARSER); - - if (s->obj) - json_object_put(s->obj); - - if (s->tok) - json_tokener_free(s->tok); - - return 0; -} - - -static const luaL_reg jsonc_methods[] = { - { "new", json_new }, - { "parse", json_parse }, - { "stringify", json_stringify }, - - { } -}; - -static const luaL_reg jsonc_parser_methods[] = { - { "parse", json_parse_chunk }, - { "get", json_parse_get }, - { "set", json_parse_set }, - { "sink", json_parse_sink }, - { "stringify", json_tostring }, - - { "__gc", json_gc }, - { "__tostring", json_tostring }, - - { } -}; - - -int luaopen_luci_jsonc(lua_State *L) -{ - luaL_register(L, LUCI_JSONC, jsonc_methods); - - luaL_newmetatable(L, LUCI_JSONC_PARSER); - luaL_register(L, NULL, jsonc_parser_methods); - lua_pushvalue(L, -1); - lua_setfield(L, -2, "__index"); - lua_pop(L, 1); - - return 1; -} diff --git a/package/luci/libs/luci-lib-jsonc/src/jsonc.luadoc b/package/luci/libs/luci-lib-jsonc/src/jsonc.luadoc deleted file mode 100644 index 720b17d1eb..0000000000 --- a/package/luci/libs/luci-lib-jsonc/src/jsonc.luadoc +++ /dev/null @@ -1,146 +0,0 @@ ---- LuCI JSON parsing and serialization library. --- The luci.jsonc class is a high level Lua binding to the JSON-C library to --- allow reading and writing JSON data with minimal overhead. -module "luci.jsonc" - ----[[ -Construct a new luci.jsonc.parser instance. -@class function -@sort 1 -@name new -@return A `luci.jsonc.parser` object representing a JSON-C tokener. -@usage `parser = luci.jsonc.new()` -]] - ----[[ -Parse a complete JSON string and convert it into a Lua data structure. -@class function -@sort 2 -@name parse -@param json A string containing the JSON data to parse, must be either a - JSON array or a JSON object. -@return On success, a table containing the parsed JSON data is returned, on - failure the function returns `nil` and a string containing the reason of - the parse error. -@usage `data = luci.jsonc.parse('{ "name": "John", "age": 34 }') -print(data.name) -- "John"` -@see stringify -]] - ----[[ -Convert given Lua data into a JSON string. - -This function recursively converts the given Lua data into a JSON string, -ignoring any unsupported data. Lua tables are converted into JSON arrays if they -only contain integer keys, mixed tables are turned into JSON objects with any -existing numeric keys converted into strings. - -Lua functions, coroutines and userdata objects are ignored and Lua numbers are -converted to integers if they do not contain fractional values. - -@class function -@sort 3 -@name stringify -@param data The Lua data to convert, can be a table, string, boolean or number. -@param pretty A boolean value indicating whether the resulting JSON should be - pretty printed. -@return Returns a string containing the JSON representation of the given Lua - data. -@usage `json = luci.jsonc.stringify({ item = true, values = { 1, 2, 3 } }) -print(json) -- '{"item":true,"values":[1,2,3]}'` -@see parse -]] - - ---- LuCI JSON parser instance. --- A JSON parser instance is useful to parse JSON data chunk by chunk, without --- the need to assemble all data in advance. --- @cstyle instance -module "luci.jsonc.parser" - ----[[ -Parses one chunk of JSON data. - -@class function -@sort 1 -@name parser.parse -@see parser.get -@param json String containing the JSON fragment to parse -@return
      -
    • `true` if a complete JSON object has been parsed and no further input is - expected.
    • -
    • `false` if further input is required
    • -
    • `nil` if an error was encountered while parsing the current chunk. - In this case a string describing the parse error is returned as second - value.
    -@usage `parser = luci.jsonc.new() - -while true do - chunk = ... -- fetch a cunk of data, e.g. from a socket - finish, errmsg = parser.parse(chunk) - - if finish == nil then - error("Cannot parse JSON: " .. errmsg) - end - - if finish == true then - break - end -end` -]] - ----[[ -Convert parsed JSON data into Lua table. - -@class function -@sort 2 -@name parser.get -@see parser.parse -@return Parsed JSON object converted into a Lua table or `nil` if the parser - didn't finish or encountered an error. -@usage `parser = luci.jsonc.new() -parser:parse('{ "example": "test" }') - -data = parser:get() -print(data.example) -- "test"` -]] - ----[[ -Put Lua data into the parser. - -@class function -@sort 3 -@name parser.set -@see parser.stringify -@param data Lua data to put into the parser object. The data is converted to an - internal JSON representation that can be dumped with `stringify()`. - The conversion follows the rules described in `luci.jsonc.stringify`. -@return Nothing is returned. -@usage `parser = luci.jsonc.new() -parser:set({ "some", "data" })` -]] - ----[[ -Generate an ltn12-compatible sink. - -@class function -@sort 4 -@name parser.sink -@return Returns a function that can be used as an ltn12 sink. -@usage `parser = luci.jsonc.new() -ltn12.pump.all(ltn12.source.file(io.input()), parser:sink()) -print(parser:get())` -]] - ----[[ -Serialize current parser state as JSON. - -@class function -@sort 5 -@name parser.stringify -@param pretty A boolean value indicating whether the resulting JSON should be pretty printed. -@return Returns the serialized JSON data of this parser instance. -@usage `parser = luci.jsonc.new() -parser:parse('{ "example": "test" }') -print(parser:serialize()) -- '{"example":"test"}'` -]] diff --git a/package/luci/libs/luci-lib-luaneightbl/Makefile b/package/luci/libs/luci-lib-luaneightbl/Makefile deleted file mode 100644 index f0185b86ad..0000000000 --- a/package/luci/libs/luci-lib-luaneightbl/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=neightbl - Lua lib for IPv6 neighbors -LUCI_DEPENDS:=+liblua - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/libs/luci-lib-luaneightbl/src/Makefile b/package/luci/libs/luci-lib-luaneightbl/src/Makefile deleted file mode 100644 index f856d2fa2f..0000000000 --- a/package/luci/libs/luci-lib-luaneightbl/src/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -NEIGHTBL_CFLAGS = -std=gnu99 -NEIGHTBL_LDFLAGS = -llua -lm -NEIGHTBL_OBJ = neightbl.o -NEIGHTBL_LIB = neightbl.so - -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(LUA_CFLAGS) $(NEIGHTBL_CFLAGS) $(FPIC) -c -o $@ $< - -compile: $(NEIGHTBL_OBJ) - $(CC) $(LDFLAGS) -shared -o $(NEIGHTBL_LIB) $(NEIGHTBL_OBJ) $(NEIGHTBL_LDFLAGS) - -install: compile - mkdir -p $(DESTDIR)/usr/lib/lua - cp $(NEIGHTBL_LIB) $(DESTDIR)/usr/lib/lua/$(NEIGHTBL_LIB) - -clean: - rm -f *.o *.so diff --git a/package/luci/libs/luci-lib-luaneightbl/src/neightbl.c b/package/luci/libs/luci-lib-luaneightbl/src/neightbl.c deleted file mode 100644 index 987ec5e32e..0000000000 --- a/package/luci/libs/luci-lib-luaneightbl/src/neightbl.c +++ /dev/null @@ -1,122 +0,0 @@ -/* -License: -Copyright 2013 Steven Barth - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -char *ether_ntoa_l (const struct ether_addr *addr, char *buf) -{ - sprintf (buf, "%02x:%02x:%02x:%02x:%02x:%02x", - addr->ether_addr_octet[0], addr->ether_addr_octet[1], - addr->ether_addr_octet[2], addr->ether_addr_octet[3], - addr->ether_addr_octet[4], addr->ether_addr_octet[5]); - return buf; -} - -static int neightbl_get(lua_State *L) { - int sock = socket(AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE); - struct sockaddr_nl kernel = {AF_NETLINK, 0, 0, 0}; - if (connect(sock, (struct sockaddr*)&kernel, sizeof(kernel))) - goto error; - - const char *ifname = luaL_checkstring(L, 1); - int ifindex = if_nametoindex(ifname); - if (ifindex <= 0) - goto error; - - struct { - struct nlmsghdr hdr; - struct ndmsg ndm; - } req = { - {sizeof(req), RTM_GETNEIGH, NLM_F_REQUEST | NLM_F_DUMP, 1, 0}, - {AF_INET6, 0, 0, ifindex, 0, 0, 0}, - }; - - if (send(sock, &req, sizeof(req), 0) != sizeof(req)) - goto error; - - lua_newtable(L); - - char buf[8192]; - struct nlmsghdr *nh = (struct nlmsghdr*)buf; - do { - ssize_t len = recv(sock, buf, sizeof(buf), 0); - if (len < 0) { - lua_pop(L, 1); - goto error; - } - - - for (;NLMSG_OK(nh, (size_t)len) && nh->nlmsg_type == RTM_NEWNEIGH; - nh = NLMSG_NEXT(nh, len)) { - struct ndmsg *ndm = NLMSG_DATA(nh); - if (NLMSG_PAYLOAD(nh, 0) < sizeof(*ndm) || ndm->ndm_ifindex != ifindex) - continue; - - ssize_t alen = NLMSG_PAYLOAD(nh, sizeof(*ndm)); - char buf[INET6_ADDRSTRLEN] = {0}, *mac = NULL, str_buf[ETH_ALEN]; - for (struct rtattr *rta = (struct rtattr*)&ndm[1]; RTA_OK(rta, alen); - rta = RTA_NEXT(rta, alen)) { - if (rta->rta_type == NDA_DST && RTA_PAYLOAD(rta) >= sizeof(struct in6_addr)) - inet_ntop(AF_INET6, RTA_DATA(rta), buf, sizeof(buf)); - else if (rta->rta_type == NDA_LLADDR && RTA_PAYLOAD(rta) >= 6) - mac = ether_ntoa_l(RTA_DATA(rta),str_buf); - } - - if (mac) - lua_pushstring(L, mac); - else - lua_pushboolean(L, false); - - lua_setfield(L, -2, buf); - } - } while (nh->nlmsg_type == RTM_NEWNEIGH); - - close(sock); - return 1; - -error: - close(sock); - lua_pushnil(L); - lua_pushinteger(L, errno); - lua_pushstring(L, strerror(errno)); - return 3; -} - - -static const luaL_reg R[] = { - {"get", neightbl_get}, - {NULL, NULL} -}; - - -int luaopen_neightbl(lua_State *l) -{ - luaL_register(l, "neightbl", R); - return 1; -} diff --git a/package/luci/libs/luci-lib-nixio/.gitignore b/package/luci/libs/luci-lib-nixio/.gitignore deleted file mode 100644 index a21f2a2d7a..0000000000 --- a/package/luci/libs/luci-lib-nixio/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -src/libaxtls.a -.depend -.config.* -_stage -conf -lex.zconf.c -lkc_defs.h -mconf -zconf.tab.h -zconf.tab.c -src/nixio.dll diff --git a/package/luci/libs/luci-lib-nixio/LICENSE b/package/luci/libs/luci-lib-nixio/LICENSE deleted file mode 100644 index f49a4e16e6..0000000000 --- a/package/luci/libs/luci-lib-nixio/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/Makefile b/package/luci/libs/luci-lib-nixio/Makefile deleted file mode 100644 index bec5f83cda..0000000000 --- a/package/luci/libs/luci-lib-nixio/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=NIXIO POSIX library -LUCI_DEPENDS:=+PACKAGE_luci-lib-nixio_openssl:libopenssl +PACKAGE_luci-lib-nixio_cyassl:libcyassl +liblua - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/libs/luci-lib-nixio/NOTICE b/package/luci/libs/luci-lib-nixio/NOTICE deleted file mode 100644 index 96d119282c..0000000000 --- a/package/luci/libs/luci-lib-nixio/NOTICE +++ /dev/null @@ -1,10 +0,0 @@ -nixio - Linux I/O library for lua -Copyright 2009 Steven Barth -Licensed under the Apache License, Version 2.0. - -Contains code from: -axTLS - Copyright 2008 Cameron Rich - -Thanks for testing, feedback and code snippets: -John Crispin -Jo-Philipp Wich \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/README b/package/luci/libs/luci-lib-nixio/README deleted file mode 100644 index ba9b36b30e..0000000000 --- a/package/luci/libs/luci-lib-nixio/README +++ /dev/null @@ -1,13 +0,0 @@ -Building: - Use GNU Make. - make or gmake depending on your system. - - Special make flags: - - OS Override Target OS [Linux|FreeBSD|SunOS|Windows] - NIXIO_TLS TLS-Library [*openssl|axtls] - NIXIO_CROSS_CC MinGW CC (Windows) `which i586-mingw32msvc-cc` - LUA_CFLAGS Lua CFLAGS `pkg-config --cflags lua5.1` - LUA_TARGET Lua compile target [*source|strip|compile] - LUA_MODULEDIR Install LUA_PATH "/usr/share/lua/5.1" - LUA_LIBRARYDIR Install LUA_CPATH "/usr/lib/lua/5.1" diff --git a/package/luci/libs/luci-lib-nixio/axTLS/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/Makefile deleted file mode 100644 index 02c33d2482..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/Makefile +++ /dev/null @@ -1,181 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - --include config/.config - -ifneq ($(strip $(HAVE_DOT_CONFIG)),y) -all: menuconfig -else -all: target -endif - -include config/makefile.conf - -target : $(STAGE) $(TARGET) - -# VERSION has to come from the command line -RELEASE=axTLS-$(VERSION) - -# standard version -target: - $(MAKE) -C crypto - $(MAKE) -C ssl -ifdef CONFIG_AXHTTPD - $(MAKE) -C httpd -endif -ifdef CONFIG_BINDINGS - $(MAKE) -C bindings -endif -ifdef CONFIG_SAMPLES - $(MAKE) -C samples -endif - -$(STAGE) : ssl/version.h - @mkdir -p $(STAGE) - -# create a version file with something in it. -ssl/version.h: - @echo "#define AXTLS_VERSION \"(no version)\"" > ssl/version.h - -$(PREFIX) : - @mkdir -p $(PREFIX)/lib - @mkdir -p $(PREFIX)/bin - -release: - $(MAKE) -C config/scripts/config clean - -$(MAKE) clean - -@rm config/*.msi config/*.back.aip config/config.h config/.config* - -@rm www/index.20* - -@rm -fr $(STAGE) - @echo "#define AXTLS_VERSION \"$(VERSION)\"" > ssl/version.h - cd ../; tar cvfz $(RELEASE).tar.gz --wildcards-match-slash --exclude .svn axTLS; cd -; - -docs: - $(MAKE) -C docsrc doco - -# build the Win32 demo release version -win32_demo: - @echo "#define AXTLS_VERSION \"$(VERSION)\"" > ssl/version.h - $(MAKE) win32releaseconf - -install: $(PREFIX) all - cp --no-dereference $(STAGE)/libax* $(PREFIX)/lib - chmod 755 $(PREFIX)/lib/libax* -ifdef CONFIG_SAMPLES - install -m 755 $(STAGE)/ax* $(PREFIX)/bin -endif -ifdef CONFIG_HTTP_HAS_AUTHORIZATION - install -m 755 $(STAGE)/htpasswd $(PREFIX)/bin -endif -ifdef CONFIG_PLATFORM_CYGWIN - install -m 755 $(STAGE)/cygaxtls.dll $(PREFIX)/bin -endif -ifdef CONFIG_PERL_BINDINGS - install -m 755 $(STAGE)/axtlsp.pm `perl -e 'use Config; print $$Config{installarchlib};'` -endif - @mkdir -p -m 755 $(PREFIX)/include/axTLS - install -m 644 crypto/*.h $(PREFIX)/include/axTLS - install -m 644 ssl/*.h $(PREFIX)/include/axTLS - -rm $(PREFIX)/include/axTLS/cert.h - -rm $(PREFIX)/include/axTLS/private_key.h - install -m 644 config/config.h $(PREFIX)/include/axTLS - -installclean: - -@rm $(PREFIX)/lib/libax* > /dev/null 2>&1 - -@rm $(PREFIX)/bin/ax* > /dev/null 2>&1 - -@rm $(PREFIX)/bin/axhttpd* > /dev/null 2>&1 - -@rm `perl -e 'use Config; print $$Config{installarchlib};'`/axtlsp.pm > /dev/null 2>&1 - -test: - cd $(STAGE); ssltest; ../ssl/test/test_axssl.sh; cd -; - -# tidy up things -clean:: - @cd crypto; $(MAKE) clean - @cd ssl; $(MAKE) clean - @cd httpd; $(MAKE) clean - @cd samples; $(MAKE) clean - @cd docsrc; $(MAKE) clean - @cd bindings; $(MAKE) clean - -# --------------------------------------------------------------------------- -# mconf stuff -# --------------------------------------------------------------------------- - -CONFIG_CONFIG_IN = config/Config.in -CONFIG_DEFCONFIG = config/defconfig - -config/scripts/config/conf: config/scripts/config/Makefile - $(MAKE) -C config/scripts/config conf - -@if [ ! -f config/.config ] ; then \ - cp $(CONFIG_DEFCONFIG) config/.config; \ - fi - -config/scripts/config/mconf: config/scripts/config/Makefile - $(MAKE) -C config/scripts/config ncurses conf mconf - -@if [ ! -f config/.config ] ; then \ - cp $(CONFIG_DEFCONFIG) .config; \ - fi - -cleanconf: - $(MAKE) -C config/scripts/config clean - @rm -f config/.config - -menuconfig: config/scripts/config/mconf - @./config/scripts/config/mconf $(CONFIG_CONFIG_IN) - -config: config/scripts/config/conf - @./config/scripts/config/conf $(CONFIG_CONFIG_IN) - -oldconfig: config/scripts/config/conf - @./config/scripts/config/conf -o $(CONFIG_CONFIG_IN) - -default: config/scripts/config/conf - @./config/scripts/config/conf -d $(CONFIG_CONFIG_IN) > /dev/null - $(MAKE) - -randconfig: config/scripts/config/conf - @./config/scripts/config/conf -r $(CONFIG_CONFIG_IN) - -allnoconfig: config/scripts/config/conf - @./config/scripts/config/conf -n $(CONFIG_CONFIG_IN) - -allyesconfig: config/scripts/config/conf - @./config/scripts/config/conf -y $(CONFIG_CONFIG_IN) - -# The special win32 release configuration -win32releaseconf: config/scripts/config/conf - @./config/scripts/config/conf -D config/win32config $(CONFIG_CONFIG_IN) > /dev/null - $(MAKE) - -# The special linux release configuration -linuxconf: config/scripts/config/conf - @./config/scripts/config/conf -D config/linuxconfig $(CONFIG_CONFIG_IN) > /dev/null - $(MAKE) diff --git a/package/luci/libs/luci-lib-nixio/axTLS/README b/package/luci/libs/luci-lib-nixio/axTLS/README deleted file mode 100644 index c8926d9bfc..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/README +++ /dev/null @@ -1,3 +0,0 @@ - -See www/index.html for the README, CHANGELOG, LICENSE and other notes. - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/bindings/Config.in deleted file mode 100644 index 12a696ba8b..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/Config.in +++ /dev/null @@ -1,105 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see scripts/config/Kconfig-language.txt -# -menu "Language Bindings" - -config CONFIG_BINDINGS - bool "Create language bindings" - default n - help - axTLS supports language bindings in C#, VB.NET, Java and Perl. - - Select Y here if you want to build the various language bindings. - -config CONFIG_CSHARP_BINDINGS - bool "Create C# bindings" - default n - depends on CONFIG_BINDINGS - help - Build C# bindings. - - This requires .NET to be installed on Win32 platforms and mono to be - installed on all other platforms. - -config CONFIG_VBNET_BINDINGS - bool "Create VB.NET bindings" - default n - depends on CONFIG_BINDINGS - help - Build VB.NET bindings. - - This requires the .NET to be installed and is only built under Win32 - platforms. - -menu ".Net Framework" -depends on CONFIG_CSHARP_BINDINGS || CONFIG_VBNET_BINDINGS -config CONFIG_DOT_NET_FRAMEWORK_BASE - string "Location of .NET Framework" - default "c:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727" -endmenu - -config CONFIG_JAVA_BINDINGS - bool "Create Java bindings" - default n - depends on CONFIG_BINDINGS - help - Build Java bindings. - - Current Issues (see README): - * Needs Java 1.4 or better. - * If building under Win32 it will use the Win32 JDK. - -menu "Java Home" -depends on CONFIG_JAVA_BINDINGS -config CONFIG_JAVA_HOME - string "Location of JDK" - default "c:\\Program Files\\Java\\jdk1.5.0_06" if CONFIG_PLATFORM_WIN32 || CONFIG_PLATFORM_CYGWIN - default "/usr/local/jdk142" if !CONFIG_PLATFORM_WIN32 && !CONFIG_PLATFORM_CYGWIN - depends on CONFIG_JAVA_BINDINGS - help - The location of Sun's JDK. -endmenu - -config CONFIG_PERL_BINDINGS - bool "Create Perl bindings" - default n - depends on CONFIG_BINDINGS - help - Build Perl bindings. - - Current Issues (see README): - * 64 bit versions don't work at present. - * libperl.so needs to be in the shared library path. - -menu "Perl Home" -depends on CONFIG_PERL_BINDINGS && CONFIG_PLATFORM_WIN32 -config CONFIG_PERL_CORE - string "Location of Perl CORE" - default "c:\\perl\\lib\\CORE" - help: - works with ActiveState - "http://www.activestate.com/Products/ActivePerl" - -config CONFIG_PERL_LIB - string "Name of Perl Library" - default "perl58.lib" -endmenu - -config CONFIG_LUA_BINDINGS - bool "Create Lua bindings" - default n - depends on CONFIG_BINDINGS && !CONFIG_PLATFORM_WIN32 - help - Build Lua bindings (see www.lua.org). - -menu "Lua Home" -depends on CONFIG_LUA_BINDINGS -config CONFIG_LUA_CORE - string "Location of Lua CORE" - default "/usr/local" - help: - If the Lua exists on another directory then this needs to be changed -endmenu - -endmenu diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/Makefile deleted file mode 100644 index 7654fbba57..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -all: - -include ../config/.config -include ../config/makefile.conf - -ifdef CONFIG_CSHARP_BINDINGS -all: csharp/axInterface.cs -endif - -ifdef CONFIG_VBNET_BINDINGS -all: vbnet/axInterface.vb -endif - -ifdef CONFIG_JAVA_BINDINGS -all: java/axtlsj.java -endif - -ifdef CONFIG_PERL_BINDINGS -all: perl/axTLSp_wrap.c -endif - -ifdef CONFIG_LUA_BINDINGS -all: lua/axTLSl_wrap.c -endif - -csharp/axInterface.cs: ../ssl/ssl.h - @perl ./generate_interface.pl -csharp - -vbnet/axInterface.vb: ../ssl/ssl.h - @perl ./generate_interface.pl -vbnet - -java/axTLSj.i: ../ssl/ssl.h - @perl ./generate_SWIG_interface.pl -java - -java/axtlsj.java: java/axTLSj.i $(wildcard java/SSL*.java) - @cd java; swig -java -package axTLSj axTLSj.i; $(MAKE) - -perl/axTLSp.i: ../ssl/ssl.h - @perl ./generate_SWIG_interface.pl -perl - -perl/axTLSp_wrap.c: perl/axTLSp.i - @cd perl; swig -perl5 axTLSp.i; $(MAKE) - -lua/axTLSl.i: ../ssl/ssl.h - @perl ./generate_SWIG_interface.pl -lua - -lua/axTLSl_wrap.c: lua/axTLSl.i - @cd lua; swig -lua axTLSl.i; $(MAKE) - -clean:: - $(MAKE) -C csharp clean - $(MAKE) -C vbnet clean - $(MAKE) -C java clean - $(MAKE) -C perl clean - $(MAKE) -C lua clean - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/README b/package/luci/libs/luci-lib-nixio/axTLS/bindings/README deleted file mode 100644 index 8bc3109c12..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/README +++ /dev/null @@ -1,43 +0,0 @@ -=============================================================================== -= Language Bindings = -=============================================================================== - -The tools to generate the various language bindings are done here. -SWIG 1.3.24 or better is required for creating the Java and Perl bindings. - -Perl scripts are used to parse ssl.h and automagically give the appropriate -bindings. - -At present, the four languages supported are: - -* C# -* VB.NET -* Java -* Perl - -To generate each binding run the following: - -C#: -> generate_interface.pl -csharp - -VB.NET: -> generate_interface.pl -vbnet - - -Java: -> generate_SWIG_interface.pl -java -> cd java; swig -java -package axTLSj -noextern axTLSj.i - -Perl: -> generate_SWIG_interface.pl -perl -> cd perl; swig -noextern -perl axTLSp.i - -Java and Perl both create a library each called libaxtlsj.so and libaxtlsp.so -(or axtlsj.dll and atlsp.dll on Win32 platforms). - -Note: the "-noextern" is deprecated in swig 1.3.27 and newer. The "-noextern" -option was required to get Win32 bindings to work (which is why is has probably -been deprecated). - -Each binding (except for Perl) has an extra helper interface to make life -easier. diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/Makefile deleted file mode 100644 index 3414f85621..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -include ../../config/.config -include ../../config/makefile.conf - -clean:: - @rm -f axssl* axInterface.cs diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/axTLS.cs b/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/axTLS.cs deleted file mode 100644 index cf64a256e7..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/csharp/axTLS.cs +++ /dev/null @@ -1,491 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * A wrapper around the unmanaged interface to give a semi-decent C# API - */ - -using System; -using System.Runtime.InteropServices; -using System.Net.Sockets; - -/** - * @defgroup csharp_api C# API. - * - * Ensure that the appropriate Dispose() methods are called when finished with - * various objects - otherwise memory leaks will result. - * @{ - */ -namespace axTLS -{ - /** - * @class SSL - * @ingroup csharp_api - * @brief A representation of an SSL connection. - */ - public class SSL - { - public IntPtr m_ssl; /**< A pointer to the real SSL type */ - - /** - * @brief Store the reference to an SSL context. - * @param ip [in] A reference to an SSL object. - */ - public SSL(IntPtr ip) - { - m_ssl = ip; - } - - /** - * @brief Free any used resources on this connection. - * - * A "Close Notify" message is sent on this connection (if possible). - * It is up to the application to close the socket. - */ - public void Dispose() - { - axtls.ssl_free(m_ssl); - } - - /** - * @brief Return the result of a handshake. - * @return SSL_OK if the handshake is complete and ok. - * @see ssl.h for the error code list. - */ - public int HandshakeStatus() - { - return axtls.ssl_handshake_status(m_ssl); - } - - /** - * @brief Return the SSL cipher id. - * @return The cipher id which is one of: - * - SSL_AES128_SHA (0x2f) - * - SSL_AES256_SHA (0x35) - * - SSL_RC4_128_SHA (0x05) - * - SSL_RC4_128_MD5 (0x04) - */ - public byte GetCipherId() - { - return axtls.ssl_get_cipher_id(m_ssl); - } - - /** - * @brief Get the session id for a handshake. - * - * This will be a 32 byte sequence and is available after the first - * handshaking messages are sent. - * @return The session id as a 32 byte sequence. - * @note A SSLv23 handshake may have only 16 valid bytes. - */ - public byte[] GetSessionId() - { - IntPtr ptr = axtls.ssl_get_session_id(m_ssl); - byte sess_id_size = axtls.ssl_get_session_id_size(m_ssl); - byte[] result = new byte[sess_id_size]; - Marshal.Copy(ptr, result, 0, sess_id_size); - return result; - } - - /** - * @brief Retrieve an X.509 distinguished name component. - * - * When a handshake is complete and a certificate has been exchanged, - * then the details of the remote certificate can be retrieved. - * - * This will usually be used by a client to check that the server's - * common name matches the URL. - * - * A full handshake needs to occur for this call to work. - * - * @param component [in] one of: - * - SSL_X509_CERT_COMMON_NAME - * - SSL_X509_CERT_ORGANIZATION - * - SSL_X509_CERT_ORGANIZATIONAL_NAME - * - SSL_X509_CA_CERT_COMMON_NAME - * - SSL_X509_CA_CERT_ORGANIZATION - * - SSL_X509_CA_CERT_ORGANIZATIONAL_NAME - * @return The appropriate string (or null if not defined) - */ - public string GetCertificateDN(int component) - { - return axtls.ssl_get_cert_dn(m_ssl, component); - } - } - - /** - * @class SSLUtil - * @ingroup csharp_api - * @brief Some global helper functions. - */ - public class SSLUtil - { - - /** - * @brief Return the build mode of the axTLS project. - * @return The build mode is one of: - * - SSL_BUILD_SERVER_ONLY - * - SSL_BUILD_ENABLE_VERIFICATION - * - SSL_BUILD_ENABLE_CLIENT - * - SSL_BUILD_FULL_MODE - */ - public static int BuildMode() - { - return axtls.ssl_get_config(axtls.SSL_BUILD_MODE); - } - - /** - * @brief Return the number of chained certificates that the - * client/server supports. - * @return The number of supported server certificates. - */ - public static int MaxCerts() - { - return axtls.ssl_get_config(axtls.SSL_MAX_CERT_CFG_OFFSET); - } - - /** - * @brief Return the number of CA certificates that the client/server - * supports. - * @return The number of supported CA certificates. - */ - public static int MaxCACerts() - { - return axtls.ssl_get_config(axtls.SSL_MAX_CA_CERT_CFG_OFFSET); - } - - /** - * @brief Indicate if PEM is supported. - * @return true if PEM supported. - */ - public static bool HasPEM() - { - return axtls.ssl_get_config(axtls.SSL_HAS_PEM) > 0 ? true : false; - } - - /** - * @brief Display the text string of the error. - * @param error_code [in] The integer error code. - */ - public static void DisplayError(int error_code) - { - axtls.ssl_display_error(error_code); - } - - /** - * @brief Return the version of the axTLS project. - */ - public static string Version() - { - return axtls.ssl_version(); - } - } - - /** - * @class SSLCTX - * @ingroup csharp_api - * @brief A base object for SSLServer/SSLClient. - */ - public class SSLCTX - { - /** - * @brief A reference to the real client/server context. - */ - protected IntPtr m_ctx; - - /** - * @brief Establish a new client/server context. - * - * This function is called before any client/server SSL connections are - * made. If multiple threads are used, then each thread will have its - * own SSLCTX context. Any number of connections may be made with a - * single context. - * - * Each new connection will use the this context's private key and - * certificate chain. If a different certificate chain is required, - * then a different context needs to be be used. - * - * @param options [in] Any particular options. At present the options - * supported are: - * - SSL_SERVER_VERIFY_LATER (client only): Don't stop a handshake if - * the server authentication fails. The certificate can be - * authenticated later with a call to VerifyCert(). - * - SSL_CLIENT_AUTHENTICATION (server only): Enforce client - * authentication i.e. each handshake will include a "certificate - * request" message from the server. - * - SSL_DISPLAY_BYTES (full mode build only): Display the byte - * sequences during the handshake. - * - SSL_DISPLAY_STATES (full mode build only): Display the state - * changes during the handshake. - * - SSL_DISPLAY_CERTS (full mode build only): Display the - * certificates that are passed during a handshake. - * - SSL_DISPLAY_RSA (full mode build only): Display the RSA key - * details that are passed during a handshake. - * @param num_sessions [in] The number of sessions to be used for - * session caching. If this value is 0, then there is no session - * caching. - * @return A client/server context. - */ - protected SSLCTX(uint options, int num_sessions) - { - m_ctx = axtls.ssl_ctx_new(options, num_sessions); - } - - /** - * @brief Remove a client/server context. - * - * Frees any used resources used by this context. Each connection will - * be sent a "Close Notify" alert (if possible). - */ - public void Dispose() - { - axtls.ssl_ctx_free(m_ctx); - } - - /** - * @brief Read the SSL data stream. - * @param ssl [in] An SSL object reference. - * @param in_data [out] After a successful read, the decrypted data - * will be here. It will be null otherwise. - * @return The number of decrypted bytes: - * - if > 0, then the handshaking is complete and we are returning the - * number of decrypted bytes. - * - SSL_OK if the handshaking stage is successful (but not yet - * complete). - * - < 0 if an error. - * @see ssl.h for the error code list. - * @note Use in_data before doing any successive ssl calls. - */ - public int Read(SSL ssl, out byte[] in_data) - { - IntPtr ptr = IntPtr.Zero; - int ret = axtls.ssl_read(ssl.m_ssl, ref ptr); - - if (ret > axtls.SSL_OK) - { - in_data = new byte[ret]; - Marshal.Copy(ptr, in_data, 0, ret); - } - else - { - in_data = null; - } - - return ret; - } - - /** - * @brief Write to the SSL data stream. - * @param ssl [in] An SSL obect reference. - * @param out_data [in] The data to be written - * @return The number of bytes sent, or if < 0 if an error. - * @see ssl.h for the error code list. - */ - public int Write(SSL ssl, byte[] out_data) - { - return axtls.ssl_write(ssl.m_ssl, out_data, out_data.Length); - } - - /** - * @brief Write to the SSL data stream. - * @param ssl [in] An SSL obect reference. - * @param out_data [in] The data to be written - * @param out_len [in] The number of bytes to be written - * @return The number of bytes sent, or if < 0 if an error. - * @see ssl.h for the error code list. - */ - public int Write(SSL ssl, byte[] out_data, int out_len) - { - return axtls.ssl_write(ssl.m_ssl, out_data, out_len); - } - - /** - * @brief Find an ssl object based on a Socket reference. - * - * Goes through the list of SSL objects maintained in a client/server - * context to look for a socket match. - * @param s [in] A reference to a Socket object. - * @return A reference to the SSL object. Returns null if the object - * could not be found. - */ - public SSL Find(Socket s) - { - int client_fd = s.Handle.ToInt32(); - return new SSL(axtls. ssl_find(m_ctx, client_fd)); - } - - /** - * @brief Authenticate a received certificate. - * - * This call is usually made by a client after a handshake is complete - * and the context is in SSL_SERVER_VERIFY_LATER mode. - * @param ssl [in] An SSL object reference. - * @return SSL_OK if the certificate is verified. - */ - public int VerifyCert(SSL ssl) - { - return axtls.ssl_verify_cert(ssl.m_ssl); - } - - /** - * @brief Force the client to perform its handshake again. - * - * For a client this involves sending another "client hello" message. - * For the server is means sending a "hello request" message. - * - * This is a blocking call on the client (until the handshake - * completes). - * @param ssl [in] An SSL object reference. - * @return SSL_OK if renegotiation instantiation was ok - */ - public int Renegotiate(SSL ssl) - { - return axtls.ssl_renegotiate(ssl.m_ssl); - } - - /** - * @brief Load a file into memory that is in binary DER or ASCII PEM - * format. - * - * These are temporary objects that are used to load private keys, - * certificates etc into memory. - * @param obj_type [in] The format of the file. Can be one of: - * - SSL_OBJ_X509_CERT (no password required) - * - SSL_OBJ_X509_CACERT (no password required) - * - SSL_OBJ_RSA_KEY (AES128/AES256 PEM encryption supported) - * - SSL_OBJ_P8 (RC4-128 encrypted data supported) - * - SSL_OBJ_P12 (RC4-128 encrypted data supported) - * - * PEM files are automatically detected (if supported). - * @param filename [in] The location of a file in DER/PEM format. - * @param password [in] The password used. Can be null if not required. - * @return SSL_OK if all ok - */ - public int ObjLoad(int obj_type, string filename, string password) - { - return axtls.ssl_obj_load(m_ctx, obj_type, filename, password); - } - - /** - * @brief Transfer binary data into the object loader. - * - * These are temporary objects that are used to load private keys, - * certificates etc into memory. - * @param obj_type [in] The format of the memory data. - * @param data [in] The binary data to be loaded. - * @param len [in] The amount of data to be loaded. - * @param password [in] The password used. Can be null if not required. - * @return SSL_OK if all ok - */ - public int ObjLoad(int obj_type, byte[] data, int len, string password) - { - return axtls.ssl_obj_memory_load(m_ctx, obj_type, - data, len, password); - } - } - - /** - * @class SSLServer - * @ingroup csharp_api - * @brief The server context. - * - * All server connections are started within a server context. - */ - public class SSLServer : SSLCTX - { - /** - * @brief Start a new server context. - * - * @see SSLCTX for details. - */ - public SSLServer(uint options, int num_sessions) : - base(options, num_sessions) {} - - /** - * @brief Establish a new SSL connection to an SSL client. - * - * It is up to the application to establish the initial socket - * connection. - * - * Call Dispose() when the connection is to be removed. - * @param s [in] A reference to a Socket object. - * @return An SSL object reference. - */ - public SSL Connect(Socket s) - { - int client_fd = s.Handle.ToInt32(); - return new SSL(axtls.ssl_server_new(m_ctx, client_fd)); - } - } - - /** - * @class SSLClient - * @ingroup csharp_api - * @brief The client context. - * - * All client connections are started within a client context. - */ - public class SSLClient : SSLCTX - { - /** - * @brief Start a new client context. - * - * @see SSLCTX for details. - */ - public SSLClient(uint options, int num_sessions) : - base(options, num_sessions) {} - - /** - * @brief Establish a new SSL connection to an SSL server. - * - * It is up to the application to establish the initial socket - * connection. - * - * This is a blocking call - it will finish when the handshake is - * complete (or has failed). - * - * Call Dispose() when the connection is to be removed. - * @param s [in] A reference to a Socket object. - * @param session_id [in] A 32 byte session id for session resumption. - * This can be null if no session resumption is not required. - * @return An SSL object reference. Use SSL.handshakeStatus() to check - * if a handshake succeeded. - */ - public SSL Connect(Socket s, byte[] session_id) - { - int client_fd = s.Handle.ToInt32(); - byte sess_id_size = (byte)(session_id != null ? - session_id.Length : 0); - return new SSL(axtls.ssl_client_new(m_ctx, client_fd, session_id, - sess_id_size)); - } - } -} -/** @} */ diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_SWIG_interface.pl b/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_SWIG_interface.pl deleted file mode 100755 index 4b2517988f..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_SWIG_interface.pl +++ /dev/null @@ -1,393 +0,0 @@ -#!/usr/bin/perl - -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -#=============================================================== -# Transforms function signature into SWIG format -sub transformSignature -{ - foreach $item (@_) - { - $line =~ s/STDCALL //g; - $line =~ s/EXP_FUNC/extern/g; - - # make API Java more 'byte' friendly - $line =~ s/uint32_t/int/g; - $line =~ s/const uint8_t \* /const unsigned char \* /g; - $line =~ s/\(void\)/()/g; - if ($ARGV[0] eq "-java") - { - $line =~ s/.*ssl_read.*//g; - $line =~ s/const uint8_t \*(\w+)/const signed char $1\[\]/g; - $line =~ s/uint8_t/signed char/g; - } - elsif ($ARGV[0] eq "-perl") - { - $line =~ s/const uint8_t \*(\w+)/const unsigned char $1\[\]/g; - $line =~ s/uint8_t/unsigned char/g; - } - else # lua - { - $line =~ s/const uint8_t \*session_id/const unsigned char session_id\[\]/g; - $line =~ s/const uint8_t \*\w+/unsigned char *INPUT/g; - $line =~ s/uint8_t/unsigned char/g; - } - } - - return $line; -} - -# Parse input file -sub parseFile -{ - foreach $line (@_) - { - next if $line =~ /ssl_x509_create/; # ignore for now - - # test for a #define - if (!$skip && $line =~ m/^#define/) - { - $splitDefine = 1 if $line =~ m/\\$/; - print DATA_OUT $line; - - # check line is not split - next if $splitDefine == 1; - } - - # pick up second line of #define statement - if ($splitDefine) - { - print DATA_OUT $line; - - # check line is not split - $splitDefine = ($line =~ m/\\$/); - next; - } - - # test for function declaration - if (!$skip && $line =~ /EXP_FUNC/ && $line !~/\/\*/) - { - $line = transformSignature($line); - $splitFunctionDeclaration = $line !~ /;/; - print DATA_OUT $line; - next; - } - - if ($splitFunctionDeclaration) - { - $line = transformSignature($line); - $splitFunctionDeclaration = $line !~ /;/; - print DATA_OUT $line; - next; - } - } -} - -#=============================================================== - -# Determine which module to build from cammand-line options -use strict; -use Getopt::Std; - -my $module; -my $interfaceFile; -my $data_file; -my $skip; -my $splitLine; -my @raw_data; - -if (not defined $ARGV[0]) -{ - goto ouch; -} - -if ($ARGV[0] eq "-java") -{ - print "Generating Java interface file\n"; - $module = "axtlsj"; - $interfaceFile = "java/axTLSj.i"; -} -elsif ($ARGV[0] eq "-perl") -{ - print "Generating Perl interface file\n"; - $module = "axtlsp"; - $interfaceFile = "perl/axTLSp.i"; -} -elsif ($ARGV[0] eq "-lua") -{ - print "Generating lua interface file\n"; - $module = "axtlsl"; - $interfaceFile = "lua/axTLSl.i"; -} -else -{ -ouch: - die "Usage: $0 [-java | -perl | -lua]\n"; -} - -# Input file required to generate SWIG interface file. -$data_file = "../ssl/ssl.h"; - -# Open input files -open(DATA_IN, $data_file) || die("Could not open file ($data_file)!"); -@raw_data = ; - -# Open output file -open(DATA_OUT, ">$interfaceFile") || die("Cannot Open File"); - -# -# I wish I could say it was easy to generate the Perl/Java/Lua bindings, -# but each had their own set of challenges... :-(. -# -print DATA_OUT << "END"; -%module $module\n - -/* include our own header */ -%inline %{ -#include "ssl.h" -%} - -%include "typemaps.i" -/* Some SWIG magic to make the API a bit more Java friendly */ -#ifdef SWIGJAVA - -%apply long { SSL * }; -%apply long { SSL_CTX * }; -%apply long { SSLObjLoader * }; - -/* allow "unsigned char []" to become "byte[]" */ -%include "arrays_java.i" - -/* convert these pointers to use long */ -%apply signed char[] {unsigned char *}; -%apply signed char[] {signed char *}; - -/* allow ssl_get_session_id() to return "byte[]" */ -%typemap(out) unsigned char * ssl_get_session_id \"if (result) jresult = SWIG_JavaArrayOutSchar(jenv, result, ssl_get_session_id_size((SSL const *)arg1));\" - -/* allow ssl_client_new() to have a null session_id input */ -%typemap(in) const signed char session_id[] (jbyte *jarr) { - if (jarg3 == NULL) - { - jresult = (jint)ssl_client_new(arg1,arg2,NULL,0); - return jresult; - } - - if (!SWIG_JavaArrayInSchar(jenv, &jarr, &arg3, jarg3)) return 0; -} - -/* Lot's of work required for an ssl_read() due to its various custom - * requirements. - */ -%native (ssl_read) int ssl_read(SSL *ssl, jobject in_data); -%{ -JNIEXPORT jint JNICALL Java_axTLSj_axtlsjJNI_ssl_1read(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2) { - jint jresult = 0 ; - SSL *arg1; - unsigned char *arg2; - jbyte *jarr; - int result; - JNIEnv e = *jenv; - jclass holder_class; - jfieldID fid; - - arg1 = (SSL *)jarg1; - result = (int)ssl_read(arg1, &arg2); - - /* find the "m_buf" entry in the SSLReadHolder class */ - if (!(holder_class = e->GetObjectClass(jenv,jarg2)) || - !(fid = e->GetFieldID(jenv,holder_class, "m_buf", "[B"))) - return SSL_NOT_OK; - - if (result > SSL_OK) - { - int i; - - /* create a new byte array to hold the read data */ - jbyteArray jarray = e->NewByteArray(jenv, result); - - /* copy the bytes across to the java byte array */ - jarr = e->GetByteArrayElements(jenv, jarray, 0); - for (i = 0; i < result; i++) - jarr[i] = (jbyte)arg2[i]; - - /* clean up and set the new m_buf object */ - e->ReleaseByteArrayElements(jenv, jarray, jarr, 0); - e->SetObjectField(jenv, jarg2, fid, jarray); - } - else /* set to null */ - e->SetObjectField(jenv, jarg2, fid, NULL); - - jresult = (jint)result; - return jresult; -} -%} - -/* Big hack to get hold of a socket's file descriptor */ -%typemap (jtype) long "Object" -%typemap (jstype) long "Object" -%native (getFd) int getFd(long sock); -%{ -JNIEXPORT jint JNICALL Java_axTLSj_axtlsjJNI_getFd(JNIEnv *env, jclass jcls, jobject sock) -{ - JNIEnv e = *env; - jfieldID fid; - jobject impl; - jobject fdesc; - - /* get the SocketImpl from the Socket */ - if (!(jcls = e->GetObjectClass(env,sock)) || - !(fid = e->GetFieldID(env,jcls,"impl","Ljava/net/SocketImpl;")) || - !(impl = e->GetObjectField(env,sock,fid))) return -1; - - /* get the FileDescriptor from the SocketImpl */ - if (!(jcls = e->GetObjectClass(env,impl)) || - !(fid = e->GetFieldID(env,jcls,"fd","Ljava/io/FileDescriptor;")) || - !(fdesc = e->GetObjectField(env,impl,fid))) return -1; - - /* get the fd from the FileDescriptor */ - if (!(jcls = e->GetObjectClass(env,fdesc)) || - !(fid = e->GetFieldID(env,jcls,"fd","I"))) return -1; - - /* return the descriptor */ - return e->GetIntField(env,fdesc,fid); -} -%} - -#endif - -/* Some SWIG magic to make the API a bit more Perl friendly */ -#ifdef SWIGPERL - -/* for ssl_session_id() */ -%typemap(out) const unsigned char * { - SV *svs = newSVpv((unsigned char *)\$1, ssl_get_session_id_size((SSL const *)arg1)); - \$result = newRV(svs); - sv_2mortal(\$result); - argvi++; -} - -/* for ssl_write() */ -%typemap(in) const unsigned char out_data[] { - SV* tempsv; - if (!SvROK(\$input)) - croak("Argument \$argnum is not a reference."); - tempsv = SvRV(\$input); - if (SvTYPE(tempsv) != SVt_PV) - croak("Argument \$argnum is not an string."); - \$1 = (unsigned char *)SvPV(tempsv, PL_na); -} - -/* for ssl_read() */ -%typemap(in) unsigned char **in_data (unsigned char *buf) { - \$1 = &buf; -} - -%typemap(argout) unsigned char **in_data { - if (result > SSL_OK) { - SV *svs = newSVpv(*\$1, result); - \$result = newRV(svs); - sv_2mortal(\$result); - argvi++; - } -} - -/* for ssl_client_new() */ -%typemap(in) const unsigned char session_id[] { - /* check for a reference */ - if (SvOK(\$input) && SvROK(\$input)) { - SV* tempsv = SvRV(\$input); - if (SvTYPE(tempsv) != SVt_PV) - croak("Argument \$argnum is not an string."); - \$1 = (unsigned char *)SvPV(tempsv, PL_na); - } - else - \$1 = NULL; -} - -#endif - -/* Some SWIG magic to make the API a bit more Lua friendly */ -#ifdef SWIGLUA -SWIG_NUMBER_TYPEMAP(unsigned char); -SWIG_TYPEMAP_NUM_ARR(uchar,unsigned char); - -/* for ssl_session_id() */ -%typemap(out) const unsigned char * { - int i; - lua_newtable(L); - for (i = 0; i < ssl_get_session_id_size((SSL const *)arg1); i++){ - lua_pushnumber(L,(lua_Number)result[i]); - lua_rawseti(L,-2,i+1); /* -1 is the number, -2 is the table */ - } - SWIG_arg++; -} - -/* for ssl_read() */ -%typemap(in) unsigned char **in_data (unsigned char *buf) { - \$1 = &buf; -} - -%typemap(argout) unsigned char **in_data { - if (result > SSL_OK) { - int i; - lua_newtable(L); - for (i = 0; i < result; i++){ - lua_pushnumber(L,(lua_Number)buf2[i]); - lua_rawseti(L,-2,i+1); /* -1 is the number, -2 is the table */ - } - SWIG_arg++; - } -} - -/* for ssl_client_new() */ -%typemap(in) const unsigned char session_id[] { - if (lua_isnil(L,\$input)) - \$1 = NULL; - else - \$1 = SWIG_get_uchar_num_array_fixed(L,\$input, ssl_get_session_id((SSL const *)\$1)); -} - -#endif - -END - -# Initialise loop variables -$skip = 1; -$splitLine = 0; - -parseFile(@raw_data); - -close(DATA_IN); -close(DATA_OUT); - -#=============================================================== - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_interface.pl b/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_interface.pl deleted file mode 100755 index c24bff9f40..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/generate_interface.pl +++ /dev/null @@ -1,322 +0,0 @@ -#!/usr/bin/perl -w - -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -#=============================================================== -# This application transforms ssl.h into interfaces that can be used by -# other language bindings. It is "SWIG"-like in nature in that various -# files are generated based on the axTLS API. -# -# The file produced is axInterface.? (depending on the file extension). -# -#=============================================================== - -use strict; - -my $CSHARP = 0; -my $VBNET = 1; - -my $binding; -my $skip = 0; -my $signature_ret_type; - -# Transforms function signature into an Interface format -sub transformSignature -{ - my $item; - my ($line) = @_; - - foreach $item ($line) - { - # our very basic preprocessor - if ($binding == $CSHARP) - { - $line =~ s/STDCALL //; - $line =~ s/EXP_FUNC/ [DllImport ("axtls")]\n public static extern/; - $line =~ s/uint32_t/uint/g; - $line =~ s/uint8_t \*\*/ref IntPtr /g; - $line =~ s/const uint8_t \* /IntPtr /g; - $line =~ s/const uint8_t \*/byte[] /g; # note: subtle diff - $line =~ s/uint8_t \* ?/byte[] /g; - $line =~ s/uint8_t ?/byte /g; - $line =~ s/const char \* ?/string /g; - $line =~ s/const SSL_CTX \* ?/IntPtr /g; - $line =~ s/SSL_CTX \* ?/IntPtr /g; - $line =~ s/SSLObjLoader \* ?/IntPtr /g; - $line =~ s/const SSL \* ?/IntPtr /g; - $line =~ s/SSL \* ?/IntPtr /g; - $line =~ s/\(void\)/()/g; - } - elsif ($binding == $VBNET) - { - if ($line =~ /EXP_FUNC/) - { - # Procedure or function? - my $invariant = $line =~ /void /; - - my $proc = $invariant ? "Sub" : "Function"; - ($signature_ret_type) = $line =~ /EXP_FUNC (.*) STDCALL/; - $line =~ s/EXP_FUNC .* STDCALL / Public Shared $proc _\n /; - - $signature_ret_type =~ s/const uint8_t \*/As IntPtr/; - $signature_ret_type =~ s/const char \*/As String/; - $signature_ret_type =~ s/SSL_CTX \*/As IntPtr/; - $signature_ret_type =~ s/SSLObjLoader \*/As IntPtr/; - $signature_ret_type =~ s/SSL \*/As IntPtr/; - $signature_ret_type =~ s/uint8_t/As Byte/; - $signature_ret_type =~ s/int/As Integer/; - $signature_ret_type =~ s/void//; - $signature_ret_type .= "\n End $proc\n\n"; - } - - $line =~ s/uint32_t (\w+)/ByVal $1 As Integer/g; - $line =~ s/int (\w+)/ByVal $1 As Integer/g; - $line =~ s/uint8_t \*\* ?(\w+)/ByRef $1 As IntPtr/g; - $line =~ s/const uint8_t \* ?(\w+)/ByVal $1() As Byte/g; - $line =~ s/uint8_t \* ?(\w+)/ByVal $1() As Byte/g; - $line =~ s/uint8_t ?(\w+)/ByVal $1 As Byte/g; - $line =~ s/const char \* ?(\w+)/ByVal $1 As String/g; - $line =~ s/const SSL_CTX \* ?(\w+)/ByVal $1 As IntPtr/g; - $line =~ s/SSL_CTX \* ?(\w+)/ByVal $1 As IntPtr/g; - $line =~ s/SSLObjLoader \* ?(\w+)/ByVal $1 As IntPtr/g; - $line =~ s/const SSL \* ?(\w+)/ByVal $1 As IntPtr/g; - $line =~ s/SSL \* ?(\w+)/ByVal $1 As IntPtr/g; - $line =~ s/void \* ?(\w+)/Byval $1 As IntPtr/g; - $line =~ s/\(void\)/()/g; - $line =~ s/void//g; - $line =~ s/;\n/ $signature_ret_type;/; - } - } - - return $line; -} - -# Parse input file -sub parseFile -{ - my (@file) = @_; - my $line; - my $splitDefine = 0; - my $splitFunctionDeclaration; - my $vb_hack = " "; - my $vb_line_hack = 0; - - $skip = 0; - - foreach $line (@file) - { - next if $line =~ /sl_x509_create/; # ignore for now - - # test for a #define - if (!$skip && $line =~ m/^#define/) - { - $splitDefine = 1 if $line =~ m/\\$/; - - if ($binding == $VBNET) - { - $line =~ s/\|/Or/g; - $line =~ s/ 0x/ &H/; - } - - my ($name, $value) = $line =~ /#define (\w+) +([^\\]*)[\\]?\n/; - - if (defined $name && defined $value) - { - # C# constant translation - if ($binding == $CSHARP) - { - $line = " public const int $name = $value"; - } - # VB.NET constant translation - elsif ($binding == $VBNET) - { - $line = " Public Const $name As Integer = $value"; - } - } - - next if $line =~ /#define/; # ignore any other defines - - print DATA_OUT $line; - - # check line is not split - next if $splitDefine == 1; - print DATA_OUT ";" if $binding == $CSHARP; - print DATA_OUT "\n"; - } - - # pick up second line of #define statement - if ($splitDefine) - { - if ($line !~ /\\$/) - { - $line =~ s/$/;/ if $binding == $CSHARP; # add the ";" - } - - $line =~ s/ ?\| ?/ Or /g - if ($binding == $VBNET); - - # check line is not split - $splitDefine = ($line =~ m/\\$/); - - # ignore trailing "\" - $line =~ s/\\$// if $binding == $CSHARP; - $line =~ s/\\$/_/ if $binding == $VBNET; - print DATA_OUT $line; - next; - } - - # test for function declaration - if (!$skip && $line =~ /EXP_FUNC/ && $line !~ /\/\*/) - { - $line = transformSignature($line); - $splitFunctionDeclaration = $line !~ /;/; - $line =~ s/;// if ($binding == $VBNET); - $line =~ s/\n$/ _\n/ if ($binding == $VBNET) && - $splitFunctionDeclaration; - print DATA_OUT $line; - next; - } - - if ($splitFunctionDeclaration) - { - $line = transformSignature($line); - $splitFunctionDeclaration = $line !~ /;/; - $line =~ s/;// if ($binding == $VBNET); - $line =~ s/\n/ _\n/ if ($binding == $VBNET) && - $splitFunctionDeclaration == 1; - print DATA_OUT $line; - next; - } - } -} - -#=============================================================== - -# Determine which module to build from command-line options -use strict; -use Getopt::Std; - -my $binding_prefix; -my $binding_suffix; -my $data_file; -my @raw_data; - -if (not defined $ARGV[0]) -{ - goto ouch; -} - -if ($ARGV[0] eq "-csharp") -{ - print "Generating C# interface file\n"; - $binding_prefix = "csharp"; - $binding_suffix = "cs"; - $binding = $CSHARP; -} -elsif ($ARGV[0] eq "-vbnet") -{ - print "Generating VB.NET interface file\n"; - $binding_prefix = "vbnet"; - $binding_suffix = "vb"; - $binding = $VBNET; -} -else -{ -ouch: - die "Usage: $0 [-csharp | -vbnet]\n"; -} - -my $interfaceFile = "$binding_prefix/axInterface.$binding_suffix"; - -# Input file required to generate interface file. -$data_file = "../ssl/ssl.h"; - -# Open input files -open(DATA_IN, $data_file) || die("Could not open file ($data_file)!"); -@raw_data = ; - - -# Open output file -if ($binding == $CSHARP || $binding == $VBNET) -{ - open(DATA_OUT, ">$interfaceFile") || die("Cannot Open File"); -} - -# SPEC interface file header -if ($binding == $CSHARP) -{ - # generate the C#/C interface file - print DATA_OUT << "END"; -// The C# to C interface definition file for the axTLS project -// Do not modify - this file is generated - -using System; -using System.Runtime.InteropServices; - -namespace axTLS -{ - public class axtls - { -END -} -elsif ($binding == $VBNET) -{ - # generate the VB.NET/C interface file - print DATA_OUT << "END"; -' The VB.NET to C interface definition file for the axTLS project -' Do not modify - this file is generated - -Imports System -Imports System.Runtime.InteropServices - -Namespace axTLSvb - Public Class axtls -END -} - -parseFile(@raw_data); - -# finish up -if ($binding == $CSHARP) -{ - print DATA_OUT " };\n"; - print DATA_OUT "};\n"; -} -elsif ($binding == $VBNET) -{ - print DATA_OUT " End Class\nEnd Namespace\n"; -} - -close(DATA_IN); -close(DATA_OUT); - -#=============================================================== - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/Makefile deleted file mode 100644 index 8df1d0aa83..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/Makefile +++ /dev/null @@ -1,94 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -AXTLS_HOME=../.. - -include $(AXTLS_HOME)/config/.config -include $(AXTLS_HOME)/config/makefile.conf -include $(AXTLS_HOME)/config/makefile.java.conf - -all: lib jar - -JAR=$(AXTLS_HOME)/$(STAGE)/axtls.jar - -ifdef CONFIG_PLATFORM_WIN32 -TARGET=$(AXTLS_HOME)/$(STAGE)/axtlsj.dll -else -TARGET=$(AXTLS_HOME)/$(STAGE)/libaxtlsj.so -endif - -lib: $(TARGET) -axTLSj_wrap.o : axTLSj_wrap.c - -JAVA_FILES= \ - axtlsjJNI.java \ - axtlsjConstants.java \ - axtlsj.java \ - SSLReadHolder.java \ - SSL.java \ - SSLUtil.java \ - SSLCTX.java \ - SSLServer.java \ - SSLClient.java - -OBJ=axTLSj_wrap.o - -JAVA_CLASSES:=$(JAVA_FILES:%.java=classes/axTLSj/%.class) - -ifdef CONFIG_PLATFORM_WIN32 -LDFLAGS += axtls.lib /libpath:"$(AXTLS_HOME)/$(STAGE)" - -include $(AXTLS_HOME)/config/makefile.post - -$(TARGET) : $(OBJ) - $(LD) $(LDFLAGS) $(LDSHARED) /out:$@ $(OBJ) -else # Not Win32 - -$(TARGET) : $(OBJ) - $(LD) $(LDFLAGS) -L $(AXTLS_HOME)/$(STAGE) $(LDSHARED) -o $@ $(OBJ) -laxtls -endif - -jar: $(OBJ) $(JAR) - -# if we are doing the samples then defer creating the jar until then -$(JAR): $(JAVA_CLASSES) -ifndef CONFIG_JAVA_SAMPLES - jar cvf $@ -C classes axTLSj -else - @if [ ! -f $(JAR) ]; then touch $(JAR); fi -endif - -classes/axTLSj/%.class : %.java - javac -d classes -classpath classes $^ - -clean:: - @rm -f $(JAR) $(TARGET) SWIG* axtls* *.i *.c - @rm -fr classes/* - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSL.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSL.java deleted file mode 100644 index b53a6da067..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSL.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * A wrapper around the unmanaged interface to give a semi-decent Java API - */ - -package axTLSj; - -import java.io.*; -import java.util.*; - -/** - * @defgroup java_api Java API. - * - * Ensure that the appropriate dispose() methods are called when finished with - * various objects - otherwise memory leaks will result. - */ - -/** - * @class SSL - * @ingroup java_api - * @brief A representation of an SSL connection. - * - */ -public class SSL -{ - public int m_ssl; /**< A pointer to the real SSL type */ - - /** - * @brief Store the reference to an SSL context. - * @param ip [in] A reference to an SSL object. - */ - public SSL(int ip) - { - m_ssl = ip; - } - - /** - * @brief Free any used resources on this connection. - * - * A "Close Notify" message is sent on this connection (if possible). It - * is up to the application to close the socket. - */ - public void dispose() - { - axtlsj.ssl_free(m_ssl); - } - - /** - * @brief Return the result of a handshake. - * @return SSL_OK if the handshake is complete and ok. - * @see ssl.h for the error code list. - */ - public int handshakeStatus() - { - return axtlsj.ssl_handshake_status(m_ssl); - } - - /** - * @brief Return the SSL cipher id. - * @return The cipher id which is one of: - * - SSL_AES128_SHA (0x2f) - * - SSL_AES256_SHA (0x35) - * - SSL_RC4_128_SHA (0x05) - * - SSL_RC4_128_MD5 (0x04) - */ - public byte getCipherId() - { - return axtlsj.ssl_get_cipher_id(m_ssl); - } - - /** - * @brief Get the session id for a handshake. - * - * This will be a 32 byte sequence and is available after the first - * handshaking messages are sent. - * @return The session id as a 32 byte sequence. - * @note A SSLv23 handshake may have only 16 valid bytes. - */ - public byte[] getSessionId() - { - return axtlsj.ssl_get_session_id(m_ssl); - } - - /** - * @brief Retrieve an X.509 distinguished name component. - * - * When a handshake is complete and a certificate has been exchanged, - * then the details of the remote certificate can be retrieved. - * - * This will usually be used by a client to check that the server's common - * name matches the URL. - * - * A full handshake needs to occur for this call to work. - * - * @param component [in] one of: - * - SSL_X509_CERT_COMMON_NAME - * - SSL_X509_CERT_ORGANIZATION - * - SSL_X509_CERT_ORGANIZATIONAL_NAME - * - SSL_X509_CA_CERT_COMMON_NAME - * - SSL_X509_CA_CERT_ORGANIZATION - * - SSL_X509_CA_CERT_ORGANIZATIONAL_NAME - * @return The appropriate string (or null if not defined) - */ - public String getCertificateDN(int component) - { - return axtlsj.ssl_get_cert_dn(m_ssl, component); - } -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLCTX.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLCTX.java deleted file mode 100644 index 1cd3e032f0..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLCTX.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * A wrapper around the unmanaged interface to give a semi-decent Java API - */ - -package axTLSj; - -import java.net.*; - -/** - * @class SSLCTX - * @ingroup java_api - * @brief A base object for SSLServer/SSLClient. - */ -public class SSLCTX -{ - /** - * A reference to the real client/server context. - */ - protected int m_ctx; - - /** - * @brief Establish a new client/server context. - * - * This function is called before any client/server SSL connections are - * made. If multiple threads are used, then each thread will have its - * own SSLCTX context. Any number of connections may be made with a single - * context. - * - * Each new connection will use the this context's private key and - * certificate chain. If a different certificate chain is required, then a - * different context needs to be be used. - * - * @param options [in] Any particular options. At present the options - * supported are: - * - SSL_SERVER_VERIFY_LATER (client only): Don't stop a handshake if the - * server authentication fails. The certificate can be authenticated later - * with a call to verifyCert(). - * - SSL_CLIENT_AUTHENTICATION (server only): Enforce client authentication - * i.e. each handshake will include a "certificate request" message from - * the server. - * - SSL_DISPLAY_BYTES (full mode build only): Display the byte sequences - * during the handshake. - * - SSL_DISPLAY_STATES (full mode build only): Display the state changes - * during the handshake. - * - SSL_DISPLAY_CERTS (full mode build only): Display the certificates that - * are passed during a handshake. - * - SSL_DISPLAY_RSA (full mode build only): Display the RSA key details - * that are passed during a handshake. - * - * @param num_sessions [in] The number of sessions to be used for session - * caching. If this value is 0, then there is no session caching. - * - * If this option is null, then the default internal private key/ - * certificate pair is used (if CONFIG_SSL_USE_DEFAULT_KEY is set). - * - * The resources used by this object are automatically freed. - * @return A client/server context. - */ - protected SSLCTX(int options, int num_sessions) - { - m_ctx = axtlsj.ssl_ctx_new(options, num_sessions); - } - - /** - * @brief Remove a client/server context. - * - * Frees any used resources used by this context. Each connection will be - * sent a "Close Notify" alert (if possible). - */ - public void dispose() - { - axtlsj.ssl_ctx_free(m_ctx); - } - - /** - * @brief Read the SSL data stream. - * @param ssl [in] An SSL object reference. - * @param rh [out] After a successful read, the decrypted data can be - * retrieved with rh.getData(). It will be null otherwise. - * @return The number of decrypted bytes: - * - if > 0, then the handshaking is complete and we are returning the - * number of decrypted bytes. - * - SSL_OK if the handshaking stage is successful (but not yet complete). - * - < 0 if an error. - * @see ssl.h for the error code list. - * @note Use rh before doing any successive ssl calls. - */ - public int read(SSL ssl, SSLReadHolder rh) - { - return axtlsj.ssl_read(ssl.m_ssl, rh); - } - - /** - * @brief Write to the SSL data stream. - * @param ssl [in] An SSL obect reference. - * @param out_data [in] The data to be written - * @return The number of bytes sent, or if < 0 if an error. - * @see ssl.h for the error code list. - */ - public int write(SSL ssl, byte[] out_data) - { - return axtlsj.ssl_write(ssl.m_ssl, out_data, out_data.length); - } - - /** - * @brief Write to the SSL data stream. - * @param ssl [in] An SSL obect reference. - * @param out_data [in] The data to be written - * @param out_len [in] The number of bytes to be written - * @return The number of bytes sent, or if < 0 if an error. - * @see ssl.h for the error code list. - */ - public int write(SSL ssl, byte[] out_data, int out_len) - { - return axtlsj.ssl_write(ssl.m_ssl, out_data, out_len); - } - - /** - * @brief Find an ssl object based on a Socket reference. - * - * Goes through the list of SSL objects maintained in a client/server - * context to look for a socket match. - * @param s [in] A reference to a Socket object. - * @return A reference to the SSL object. Returns null if the object - * could not be found. - */ - public SSL find(Socket s) - { - int client_fd = axtlsj.getFd(s); - return new SSL(axtlsj.ssl_find(m_ctx, client_fd)); - } - - /** - * @brief Authenticate a received certificate. - * - * This call is usually made by a client after a handshake is complete - * and the context is in SSL_SERVER_VERIFY_LATER mode. - * @param ssl [in] An SSL object reference. - * @return SSL_OK if the certificate is verified. - */ - public int verifyCert(SSL ssl) - { - return axtlsj.ssl_verify_cert(ssl.m_ssl); - } - - /** - * @brief Force the client to perform its handshake again. - * - * For a client this involves sending another "client hello" message. - * For the server is means sending a "hello request" message. - * - * This is a blocking call on the client (until the handshake completes). - * @param ssl [in] An SSL object reference. - * @return SSL_OK if renegotiation instantiation was ok - */ - public int renegotiate(SSL ssl) - { - return axtlsj.ssl_renegotiate(ssl.m_ssl); - } - - /** - * @brief Load a file into memory that is in binary DER or ASCII PEM format. - * - * These are temporary objects that are used to load private keys, - * certificates etc into memory. - * @param obj_type [in] The format of the file. Can be one of: - * - SSL_OBJ_X509_CERT (no password required) - * - SSL_OBJ_X509_CACERT (no password required) - * - SSL_OBJ_RSA_KEY (AES128/AES256 PEM encryption supported) - * - SSL_OBJ_P8 (RC4-128 encrypted data supported) - * - SSL_OBJ_P12 (RC4-128 encrypted data supported) - * - * PEM files are automatically detected (if supported). - * @param filename [in] The location of a file in DER/PEM format. - * @param password [in] The password used. Can be null if not required. - * @return SSL_OK if all ok - */ - public int objLoad(int obj_type, String filename, String password) - { - return axtlsj.ssl_obj_load(m_ctx, obj_type, filename, password); - } - - /** - * @brief Transfer binary data into the object loader. - * - * These are temporary objects that are used to load private keys, - * certificates etc into memory. - * @param obj_type [in] The format of the memory data. - * @param data [in] The binary data to be loaded. - * @param len [in] The amount of data to be loaded. - * @param password [in] The password used. Can be null if not required. - * @return SSL_OK if all ok - */ - - public int objLoad(int obj_type, byte[] data, int len, String password) - { - return axtlsj.ssl_obj_memory_load(m_ctx, obj_type, data, len, password); - } -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLClient.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLClient.java deleted file mode 100644 index f65fe9c53f..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLClient.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * A wrapper around the unmanaged interface to give a semi-decent Java API - */ - -package axTLSj; - -import java.net.*; - -/** - * @class SSLClient - * @ingroup java_api - * @brief The client context. - * - * All client connections are started within a client context. - */ -public class SSLClient extends SSLCTX -{ - /** - * @brief Start a new client context. - * - * @see SSLCTX for details. - */ - public SSLClient(int options, int num_sessions) - { - super(options, num_sessions); - } - - /** - * @brief Establish a new SSL connection to an SSL server. - * - * It is up to the application to establish the initial socket connection. - * - * This is a blocking call - it will finish when the handshake is - * complete (or has failed). - * - * Call dispose() when the connection is to be removed. - * @param s [in] A reference to a Socket object. - * @param session_id [in] A 32 byte session id for session resumption. This - * can be null if no session resumption is not required. - * @return An SSL object reference. Use SSL.handshakeStatus() to check - * if a handshake succeeded. - */ - public SSL connect(Socket s, byte[] session_id) - { - int client_fd = axtlsj.getFd(s); - byte sess_id_size = (byte)(session_id != null ? - session_id.length : 0); - return new SSL(axtlsj.ssl_client_new(m_ctx, client_fd, session_id, - sess_id_size)); - } -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLReadHolder.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLReadHolder.java deleted file mode 100644 index 91fd76b23f..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLReadHolder.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * A wrapper around the unmanaged interface to give a semi-decent Java API - */ - -package axTLSj; - -/** - * @class SSLReadHolder - * @ingroup java_api - * @brief A holder for data read in an SSL read. - */ -public class SSLReadHolder -{ - /** - * @brief Contruct a new read holder object. - */ - public SSLReadHolder() - { - m_buf = null; - } - - /** - * @brief Retrieve the reference to the read data. - */ - public byte[] getData() - { - return m_buf; - } - - private byte[] m_buf; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLServer.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLServer.java deleted file mode 100644 index 514ccb0342..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLServer.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * A wrapper around the unmanaged interface to give a semi-decent Java API - */ - -package axTLSj; - -import java.net.*; - -/** - * @class SSLServer - * @ingroup java_api - * @brief The server context. - * - * All server connections are started within a server context. - */ -public class SSLServer extends SSLCTX -{ - /** - * @brief Start a new server context. - * - * @see SSLCTX for details. - */ - public SSLServer(int options, int num_sessions) - { - super(options, num_sessions); - } - - /** - * @brief Establish a new SSL connection to an SSL client. - * - * It is up to the application to establish the initial socket connection. - * - * Call dispose() when the connection is to be removed. - * @param s [in] A reference to a Socket object. - * @return An SSL object reference. - */ - public SSL connect(Socket s) - { - int client_fd = axtlsj.getFd(s); - return new SSL(axtlsj.ssl_server_new(m_ctx, client_fd)); - } -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLUtil.java b/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLUtil.java deleted file mode 100644 index 3d53de51cb..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/java/SSLUtil.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * A wrapper around the unmanaged interface to give a semi-decent Java API - */ - -package axTLSj; - -import java.io.*; -import java.util.*; - -/** - * @class SSLUtil - * @ingroup java_api - * @brief Some global helper functions. - * - */ -public class SSLUtil -{ - /** - * @brief Load up the ddl/shared library - */ - static - { - System.loadLibrary("axtlsj"); - } - - /** - * @brief Return the build mode of the axTLS project. - * @return The build mode is one of: - * - SSL_BUILD_SERVER_ONLY - * - SSL_BUILD_ENABLE_VERIFICATION - * - SSL_BUILD_ENABLE_CLIENT - * - SSL_BUILD_FULL_MODE - */ - public static int buildMode() - { - return axtlsj.ssl_get_config(axtlsj.SSL_BUILD_MODE); - } - - /** - * @brief Return the number of chained certificates that the client/server - * supports. - * @return The number of supported client/server certificates. - */ - public static int maxCerts() - { - return axtlsj.ssl_get_config(axtlsj.SSL_MAX_CERT_CFG_OFFSET); - } - - /** - * @brief Return the number of CA certificates that the client/server - * supports. - * @return The number of supported CA certificates. - */ - public static int maxCACerts() - { - return axtlsj.ssl_get_config(axtlsj.SSL_MAX_CA_CERT_CFG_OFFSET); - } - - /** - * @brief Indicate if PEM is supported. - * @return true if PEM supported. - */ - public static boolean hasPEM() - { - return axtlsj.ssl_get_config(axtlsj.SSL_HAS_PEM) > 0 ? true : false; - } - - /** - * @brief Display the text string of the error. - * @param error_code [in] The integer error code. - * @see ssl.h for the error code list. - */ - public static void displayError(int error_code) - { - axtlsj.ssl_display_error(error_code); - } - - /** - * @brief Return the version of the axTLS project. - */ - public static String version() - { - return axtlsj.ssl_version(); - } -} - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/lua/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/lua/Makefile deleted file mode 100644 index daacf92150..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/lua/Makefile +++ /dev/null @@ -1,67 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -AXTLS_HOME=../.. - -include $(AXTLS_HOME)/config/.config -include $(AXTLS_HOME)/config/makefile.conf - -all: lib - - -ifdef CONFIG_PLATFORM_WIN32 -TARGET=$(AXTLS_HOME)/$(STAGE)/axtlsl.dll -else -TARGET=$(CONFIG_LUA_CORE)/lib/lua/5.1/axtlsl.so -endif - -ifneq ($(MAKECMDGOALS), clean) - -lib: $(TARGET) -OBJ:=axTLSl_wrap.o -include $(AXTLS_HOME)/config/makefile.post - -# there are a few static functions that aren't used -CFLAGS += -funit-at-a-time - -$(TARGET) : $(OBJ) - $(LD) $(LDFLAGS) $(LDSHARED) -o $@ $^ -L$(AXTLS_HOME)/$(STAGE) -L$(CONFIG_LUA_CORE)/lib -laxtls -llua - -CFLAGS += -I $(CONFIG_LUA_CORE)/include -else -CFLAGS += /I"`cygpath -w $(CONFIG_LUA_CORE)/include`" -LDFLAGS += axtls.lib /libpath:"$(AXTLS_HOME)/$(STAGE)" - -$(TARGET) : $(OBJ) - $(LD) $(LDFLAGS) $(LDSHARED) /out:$@ $(OBJ) -endif # WIN32 - -clean:: - @rm -f $(TARGET) *.i axTLSl* .depend diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/perl/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/perl/Makefile deleted file mode 100644 index 92fd3c50f7..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/perl/Makefile +++ /dev/null @@ -1,91 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -AXTLS_HOME=../.. - -include $(AXTLS_HOME)/config/.config -include $(AXTLS_HOME)/config/makefile.conf - -all: lib - -ifdef CONFIG_PLATFORM_WIN32 -TARGET=$(AXTLS_HOME)/$(STAGE)/axtlsp.dll -else -TARGET=$(AXTLS_HOME)/$(STAGE)/libaxtlsp.so -endif - -ifneq ($(MAKECMDGOALS), clean) - -ifdef CONFIG_PLATFORM_WIN32 -PERL5_CORE:=$(shell cygpath -w "$(CONFIG_PERL_CORE)") -else -PERL5_CORE= $(shell perl -e 'use Config; print $$Config{archlib};')/CORE -endif - -all: test_perl - -test_perl: - @if ! [ -d "$(PERL5_CORE)" ]; then \ - echo "*** Error: Perl not installed at $(CONFIG_PERL_CORE) - go to " \ - "http://www.cpan.org/authors/id/G/GR/GRAHAMC/SiePerl-5.8.0-bin-1.0-Win32.INSTALL.exe" && exit 1; \ - fi - -endif - -lib: $(TARGET) -OBJ:=axTLSp_wrap.o -include $(AXTLS_HOME)/config/makefile.post - -ifndef CONFIG_PLATFORM_WIN32 # Linux/Unix/Cygwin - -# -# Could have used libperl.a, but it increases the library to over 1MB, so just -# use libperl.so. But this needs to be in the shared library path for things to -# work. -# -$(TARGET) : $(OBJ) - $(LD) $(LDFLAGS) -L$(AXTLS_HOME)/$(STAGE) -L$(PERL5_CORE) $(LDSHARED) -o $@ $(OBJ) -laxtls -lperl -ifdef CONFIG_PLATFORM_CYGWIN - cd $(AXTLS_HOME)/$(STAGE); ln -sf $(notdir $@) axtlsp.dll -endif - @install axtlsp.pm $(AXTLS_HOME)/$(STAGE) - -CFLAGS += -D_GNU_SOURCE -I$(PERL5_CORE) -else -CFLAGS += /I"$(PERL5_CORE)" -LDFLAGS += $(CONFIG_PERL_LIB) /libpath:"$(PERL5_CORE)" axtls.lib /libpath:"$(AXTLS_HOME)/$(STAGE)" - -$(TARGET) : $(OBJ) - $(LD) $(LDFLAGS) $(LDSHARED) /out:$@ $(OBJ) - install axtlsp.pm $(AXTLS_HOME)/$(STAGE) -endif # WIN32 - -clean:: - @rm -f $(TARGET) axtls* *.i axTLSp* *.c .depend $(AXTLS_HOME)/$(STAGE)/axtlsp.pm diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/Makefile deleted file mode 100644 index 7da60d02ed..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -include ../../config/.config -include ../../config/makefile.conf - -clean:: - @rm -f axssl* axInterface.vb diff --git a/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/axTLSvb.vb b/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/axTLSvb.vb deleted file mode 100644 index 9388273ce8..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/bindings/vbnet/axTLSvb.vb +++ /dev/null @@ -1,200 +0,0 @@ -' -' Copyright (c) 2007, Cameron Rich -' -' All rights reserved. -' -' Redistribution and use in source and binary forms, with or without -' modification, are permitted provided that the following conditions are met: -' -' * Redistributions of source code must retain the above copyright notice, -' this list of conditions and the following disclaimer. -' * Redistributions in binary form must reproduce the above copyright -' notice, this list of conditions and the following disclaimer in the -' documentation and/or other materials provided with the distribution. -' * Neither the name of the axTLS project nor the names of its -' contributors may be used to endorse or promote products derived -' from this software without specific prior written permission. -' -' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -' "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -' LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -' A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -' CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -' TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -' DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -' OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -' NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -' THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -' - -' -' A wrapper around the unmanaged Integererface to give a semi-decent VB.NET API -' - -Imports System -Imports System.Runtime.InteropServices -Imports System.Net.Sockets -Imports axTLSvb - -Namespace axTLSvb - Public Class SSL - Public m_ssl As IntPtr - - Public Sub New(ByRef ip As IntPtr) - m_ssl = ip - End Sub - - Public Sub Dispose() - axtls.ssl_free(m_ssl) - End Sub - - Public Function HandshakeStatus() As Integer - Return axtls.ssl_handshake_status(m_ssl) - End Function - - Public Function GetCipherId() As Byte - Return axtls.ssl_get_cipher_id(m_ssl) - End Function - - Public Function GetSessionId() As Byte() - Dim ptr As IntPtr = axtls.ssl_get_session_id(m_ssl) - Dim sess_id_size As Integer = axtls.ssl_get_session_id_size(m_ssl) - Dim result(sess_id_size-1) As Byte - Marshal.Copy(ptr, result, 0, sess_id_size) - Return result - End Function - - Public Function GetCertificateDN(component As Integer) As String - Return axtls.ssl_get_cert_dn(m_ssl, component) - End Function - End Class - - Public Class SSLUtil - Private dummy As Integer ' need something here - - Public Shared Function BuildMode() As Integer - Return axtls.ssl_get_config(axtls.SSL_BUILD_MODE) - End Function - - Public Shared Function MaxCerts() As Integer - Return axtls.ssl_get_config(axtls.SSL_MAX_CERT_CFG_OFFSET) - End Function - - Public Shared Function MaxCACerts() As Integer - Return axtls.ssl_get_config(axtls.SSL_MAX_CA_CERT_CFG_OFFSET) - End Function - - Public Shared Function HasPEM() As Boolean - If axtls.ssl_get_config(axtls.SSL_HAS_PEM) > 0 Then - Return True - Else - Return False - End If - End Function - - Public Shared Sub DisplayError(ByVal error_code As Integer) - axtls.ssl_display_error(error_code) - End Sub - - Public Shared Function Version() As String - Return axtls.ssl_version() - End Function - End Class - - Public Class SSLCTX - Protected m_ctx As IntPtr - - Protected Sub New(ByVal options As Integer, _ - ByVal num_sessions As Integer) - m_ctx = axtls.ssl_ctx_new(options, num_sessions) - End Sub - - Public Sub Dispose() - axtls.ssl_ctx_free(m_ctx) - End Sub - - Public Function Read(ByVal ssl As SSL, ByRef in_data As Byte()) As Integer - Dim ptr As IntPtr = IntPtr.Zero - Dim ret as Integer = axtls.ssl_read(ssl.m_ssl, ptr) - - If ret > axtls.SSL_OK Then - ReDim in_data(ret) - Marshal.Copy(ptr, in_data, 0, ret) - Else - in_data = Nothing - End If - - Return ret - End Function - - Public Function Write(ByVal ssl As SSL, _ - ByVal data As Byte(), len As Integer) As Integer - Return axtls.ssl_write(ssl.m_ssl, data, len) - End Function - - Public Function Find(ByVal s As Socket) As SSL - Dim client_fd As Integer = s.Handle.ToInt32() - Return New SSL(axtls.ssl_find(m_ctx, client_fd)) - End Function - - Public Function VerifyCert(ByVal ssl As SSL) As Integer - Return axtls.ssl_verify_cert(ssl.m_ssl) - End Function - - Public Function Renegotiate(ByVal ssl As SSL) As Integer - Return axtls.ssl_renegotiate(ssl.m_ssl) - End Function - - Public Function ObjLoad(ByVal obj_type As Integer, _ - ByVal filename As String, _ - password As String) As Integer - Return axtls.ssl_obj_load(m_ctx, obj_type, filename, password) - End Function - - Public Function ObjLoad(ByVal obj_type As Integer, _ - ByVal data As Byte(), ByVal len As Integer, _ - password As String) As Integer - Return axtls.ssl_obj_memory_load( _ - m_ctx, obj_type, data, len, password) - End Function - End Class - - Public Class SSLServer - Inherits SSLCTX - - Public Sub New(ByVal options As Integer, _ - ByVal num_sessions As Integer) - MyBase.New(options, num_sessions) - End Sub - - Public Function Connect(ByVal s As Socket) As SSL - Dim client_fd As Integer = s.Handle.ToInt32() - Return New SSL(axtls.ssl_server_new(m_ctx, client_fd)) - End Function - End Class - - Public Class SSLClient - Inherits SSLCTX - - Public Sub New(ByVal options As Integer, _ - ByVal num_sessions As Integer) - MyBase.New(options, num_sessions) - End Sub - - Public Function Connect(ByVal s As Socket, _ - ByVal session_id As Byte()) As SSL - Dim client_fd As Integer = s.Handle.ToInt32() - Dim sess_id_size As Byte - If session_id is Nothing Then - sess_id_size = 0 - Else - sess_id_size = session_id.Length - End If - - Return New SSL(axtls.ssl_client_new(m_ctx, client_fd, session_id, _ - sess_id_size)) - End Function - - End Class -End Namespace diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/.config b/package/luci/libs/luci-lib-nixio/axTLS/config/.config deleted file mode 100644 index 46cd061b4d..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/.config +++ /dev/null @@ -1,112 +0,0 @@ -# -# Automatically generated make config: don't edit -# -HAVE_DOT_CONFIG=y -CONFIG_PLATFORM_LINUX=y -# CONFIG_PLATFORM_CYGWIN is not set -# CONFIG_PLATFORM_WIN32 is not set - -# -# General Configuration -# -PREFIX="/usr" -# CONFIG_DEBUG is not set -CONFIG_STRIP_UNWANTED_SECTIONS=y -# CONFIG_VISUAL_STUDIO_7_0 is not set -# CONFIG_VISUAL_STUDIO_8_0 is not set -CONFIG_VISUAL_STUDIO_7_0_BASE="" -CONFIG_VISUAL_STUDIO_8_0_BASE="" -CONFIG_EXTRA_CFLAGS_OPTIONS="-fpic" -CONFIG_EXTRA_LDFLAGS_OPTIONS="" - -# -# SSL Library -# -# CONFIG_SSL_SERVER_ONLY is not set -# CONFIG_SSL_CERT_VERIFICATION is not set -# CONFIG_SSL_ENABLE_CLIENT is not set -CONFIG_SSL_FULL_MODE=y -# CONFIG_SSL_SKELETON_MODE is not set -# CONFIG_SSL_PROT_LOW is not set -CONFIG_SSL_PROT_MEDIUM=y -# CONFIG_SSL_PROT_HIGH is not set -# CONFIG_SSL_USE_DEFAULT_KEY is not set -CONFIG_SSL_PRIVATE_KEY_LOCATION="/etc/nixio/rsa_main.der" -CONFIG_SSL_PRIVATE_KEY_PASSWORD="" -CONFIG_SSL_X509_CERT_LOCATION="" -# CONFIG_SSL_GENERATE_X509_CERT is not set -CONFIG_SSL_X509_COMMON_NAME="" -CONFIG_SSL_X509_ORGANIZATION_NAME="" -CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME="" -# CONFIG_SSL_ENABLE_V23_HANDSHAKE is not set -# CONFIG_SSL_HAS_PEM is not set -# CONFIG_SSL_USE_PKCS12 is not set -CONFIG_SSL_EXPIRY_TIME=24 -CONFIG_X509_MAX_CA_CERTS=4 -CONFIG_SSL_MAX_CERTS=2 -CONFIG_SSL_CTX_MUTEXING=y -CONFIG_USE_DEV_URANDOM=y -# CONFIG_WIN32_USE_CRYPTO_LIB is not set -# CONFIG_OPENSSL_COMPATIBLE is not set -# CONFIG_PERFORMANCE_TESTING is not set -# CONFIG_SSL_TEST is not set -# CONFIG_AXHTTPD is not set -# CONFIG_HTTP_STATIC_BUILD is not set -CONFIG_HTTP_PORT=0 -CONFIG_HTTP_HTTPS_PORT=0 -CONFIG_HTTP_SESSION_CACHE_SIZE=0 -CONFIG_HTTP_WEBROOT="" -CONFIG_HTTP_TIMEOUT=0 -# CONFIG_HTTP_HAS_CGI is not set -CONFIG_HTTP_CGI_EXTENSIONS="" -# CONFIG_HTTP_ENABLE_LUA is not set -CONFIG_HTTP_LUA_PREFIX="" -CONFIG_HTTP_LUA_CGI_LAUNCHER="" -# CONFIG_HTTP_BUILD_LUA is not set -# CONFIG_HTTP_DIRECTORIES is not set -# CONFIG_HTTP_HAS_AUTHORIZATION is not set -# CONFIG_HTTP_HAS_IPV6 is not set -# CONFIG_HTTP_ENABLE_DIFFERENT_USER is not set -CONFIG_HTTP_USER="" -# CONFIG_HTTP_VERBOSE is not set -# CONFIG_HTTP_IS_DAEMON is not set - -# -# Language Bindings -# -# CONFIG_BINDINGS is not set -# CONFIG_CSHARP_BINDINGS is not set -# CONFIG_VBNET_BINDINGS is not set -CONFIG_DOT_NET_FRAMEWORK_BASE="" -# CONFIG_JAVA_BINDINGS is not set -CONFIG_JAVA_HOME="" -# CONFIG_PERL_BINDINGS is not set -CONFIG_PERL_CORE="" -CONFIG_PERL_LIB="" -# CONFIG_LUA_BINDINGS is not set -CONFIG_LUA_CORE="" - -# -# Samples -# -# CONFIG_SAMPLES is not set -# CONFIG_C_SAMPLES is not set -# CONFIG_CSHARP_SAMPLES is not set -# CONFIG_VBNET_SAMPLES is not set -# CONFIG_JAVA_SAMPLES is not set -# CONFIG_PERL_SAMPLES is not set -# CONFIG_LUA_SAMPLES is not set - -# -# BigInt Options -# -# CONFIG_BIGINT_CLASSICAL is not set -# CONFIG_BIGINT_MONTGOMERY is not set -CONFIG_BIGINT_BARRETT=y -CONFIG_BIGINT_CRT=y -# CONFIG_BIGINT_KARATSUBA is not set -MUL_KARATSUBA_THRESH=0 -SQU_KARATSUBA_THRESH=0 -CONFIG_BIGINT_SLIDING_WINDOW=y -CONFIG_BIGINT_SQUARE=y -# CONFIG_BIGINT_CHECK_ON is not set diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/config/Config.in deleted file mode 100644 index dc40756465..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/Config.in +++ /dev/null @@ -1,114 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see scripts/config/Kconfig-language.txt -# - -mainmenu "axTLS Configuration" - -config HAVE_DOT_CONFIG - bool - default y - -choice - prompt "Platform" - default CONFIG_PLATFORM_LINUX - -config CONFIG_PLATFORM_LINUX - bool "Linux" - -config CONFIG_PLATFORM_CYGWIN - bool "Cygwin" - -config CONFIG_PLATFORM_WIN32 - bool "Win32" - -endchoice - -menu "General Configuration" - -config PREFIX - string "axTLS installation prefix" - depends on !CONFIG_PLATFORM_WIN32 - default "/usr/local" - help - Define your directory to install axTLS files/subdirs in. - -config CONFIG_DEBUG - bool "Build axTLS with Debugging symbols" - default n - help - Say Y here if you wish to compile axTLS with debugging symbols. - This will allow you to use a debugger to examine axTLS internals. - This increases the size of the binary considerably and should only be - used when doing development. - If you are doing development and want to debug axTLS, answer Y. - - Most people should answer N. - -config CONFIG_STRIP_UNWANTED_SECTIONS - depends on !CONFIG_PLATFORM_WIN32 && !CONFIG_DEBUG - bool "Strip unwanted sections from elf binaries" - default y - help - Strip unwanted sections from the resulting binaries - -menu "Microsoft Compiler Options" -depends on CONFIG_PLATFORM_WIN32 - -choice - prompt "Compiler" - depends on CONFIG_PLATFORM_WIN32 - default CONFIG_VISUAL_STUDIO_7_0 - -config CONFIG_VISUAL_STUDIO_7_0 - bool "Visual Studio 7.0 (2003)" - help - Use Microsoft's Visual Studio 2003 platform. - -config CONFIG_VISUAL_STUDIO_8_0 - bool "Visual Studio 8.0 (2005)" - help - Use Microsoft's Visual Studio 2005 platform. - -endchoice - -config CONFIG_VISUAL_STUDIO_7_0_BASE - string "Base" - depends on CONFIG_VISUAL_STUDIO_7_0 - default "c:\\Program Files\\Microsoft Visual Studio .NET 2003" - -config CONFIG_VISUAL_STUDIO_8_0_BASE - string "Base" - depends on CONFIG_VISUAL_STUDIO_8_0 - default "c:\\Program Files\\Microsoft Visual Studio 8" - -endmenu - -config CONFIG_EXTRA_CFLAGS_OPTIONS - string "Any extra CFLAGS options for the compiler?" - help - Do you want to pass any extra CFLAGS options to the compiler as - you build axTLS? If so, this is the option for you... For - example, if you want to add some simple compiler switches (like - -march=i686), or check for warnings using -Werror, just those - options here. - -config CONFIG_EXTRA_LDFLAGS_OPTIONS - string "Any extra LDFLAGS options for the compiler?" - help - Do you want to pass any extra LDFLAGS options to the compiler? - -endmenu - -source ssl/Config.in -config CONFIG_AXHTTPD - bool "Enable HTTP/HTTPS Web Server" - default y - help - Build the AXHTTPD web server - -source httpd/Config.in -source bindings/Config.in -source samples/Config.in -source ssl/BigIntConfig.in - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/JMeter.jmx b/package/luci/libs/luci-lib-nixio/axTLS/config/JMeter.jmx deleted file mode 100755 index f62c03f0ee..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/JMeter.jmx +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - true - false - - - - - 1152004173000 - - - 16 - false - - 10 - false - - 1152004173000 - stopthread - 0 - - - - /index.html - GET - true - - true - 80 - - - - - - false - 127.0.0.1 - - false - - - - - 1152004173000 - - - 16 - false - - 10 - false - - 1152004173000 - stopthread - 0 - - - - /index.html - GET - true - HTTPS - true - 443 - - - - - - false - 127.0.0.1 - - false - - - - - 1152004173000 - - - 16 - false - - 10 - false - - 1152004173000 - stopthread - 0 - - - - /index.html - GET - true - HTTPS - true - 2443 - - - - - - false - 127.0.0.1 - - false - - - - - 1152004173000 - - - 16 - false - - 10 - false - - 1152004173000 - stopthread - 0 - - - - /index.html - GET - true - HTTPS - true - 3443 - - - - - - false - 127.0.0.1 - - false - - - - - 1152004173000 - - - 16 - false - - 10 - false - - 1152004173000 - stopthread - 0 - - - - /index.html - GET - true - HTTPS - true - 1443 - - - - - - false - 127.0.0.1 - - false - - - - - - - - true - true - true - - true - true - true - true - false - true - true - false - false - false - false - false - false - false - false - 0 - - saveConfig - - - false - - - - - - - true - true - true - - true - true - true - true - false - true - true - false - false - false - false - false - false - false - false - 0 - - saveConfig - - - false - - - - - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/Rules.mak b/package/luci/libs/luci-lib-nixio/axTLS/config/Rules.mak deleted file mode 100644 index c0308da053..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/Rules.mak +++ /dev/null @@ -1,220 +0,0 @@ -# Rules.make for busybox -# -# Copyright (C) 1999-2005 by Erik Andersen -# -# Licensed under GPLv2, see the file LICENSE in this tarball for details. -# - -# Pull in the user's busybox configuration -ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),) --include $(top_builddir)/.config -endif - -#-------------------------------------------------------- -PROG := busybox -MAJOR_VERSION :=1 -MINOR_VERSION :=1 -SUBLEVEL_VERSION:=0 -EXTRAVERSION := -VERSION :=$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL_VERSION)$(EXTRAVERSION) -BUILDTIME := $(shell TZ=UTC date -u "+%Y.%m.%d-%H:%M%z") - - -#-------------------------------------------------------- -# With a modern GNU make(1) (highly recommended, that's what all the -# developers use), all of the following configuration values can be -# overridden at the command line. For example: -# make CROSS=powerpc-linux- top_srcdir="$HOME/busybox" PREFIX=/mnt/app -#-------------------------------------------------------- - -# If you are running a cross compiler, you will want to set 'CROSS' -# to something more interesting... Target architecture is determined -# by asking the CC compiler what arch it compiles things for, so unless -# your compiler is broken, you should not need to specify TARGET_ARCH -CROSS =$(subst ",, $(strip $(CROSS_COMPILER_PREFIX))) -CC = $(CROSS)gcc -AR = $(CROSS)ar -AS = $(CROSS)as -LD = $(CROSS)ld -NM = $(CROSS)nm -STRIP = $(CROSS)strip -CPP = $(CC) -E -# MAKEFILES = $(top_builddir)/.config -RM = rm -RM_F = $(RM) -f -LN = ln -LN_S = $(LN) -s -MKDIR = mkdir -MKDIR_P = $(MKDIR) -p -MV = mv -CP = cp - - -# What OS are you compiling busybox for? This allows you to include -# OS specific things, syscall overrides, etc. -TARGET_OS=linux - -# Select the compiler needed to build binaries for your development system -HOSTCC = gcc -HOSTCFLAGS= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer - -# Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc. -LC_ALL:= C - -# If you want to add some simple compiler switches (like -march=i686), -# especially from the command line, use this instead of CFLAGS directly. -# For optimization overrides, it's better still to set OPTIMIZATION. -CFLAGS_EXTRA=$(subst ",, $(strip $(EXTRA_CFLAGS_OPTIONS))) - -# To compile vs some other alternative libc, you may need to use/adjust -# the following lines to meet your needs... -# -# If you are using Red Hat 6.x with the compatible RPMs (for developing under -# Red Hat 5.x and glibc 2.0) uncomment the following. Be sure to read about -# using the compatible RPMs (compat-*) at http://www.redhat.com ! -#LIBCDIR:=/usr/i386-glibc20-linux -# -# For other libraries, you are on your own. But these may (or may not) help... -#LDFLAGS+=-nostdlib -#LIBRARIES:=$(LIBCDIR)/lib/libc.a -lgcc -#CROSS_CFLAGS+=-nostdinc -I$(LIBCDIR)/include -I$(GCCINCDIR) -funsigned-char -#GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp") - -WARNINGS=-Wall -Wstrict-prototypes -Wshadow -CFLAGS=-I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir) -ARFLAGS=cru - - -# gcc centric. Perhaps fiddle with findstring gcc,$(CC) for the rest -# get the CC MAJOR/MINOR version -CC_MAJOR:=$(shell printf "%02d" $(shell echo __GNUC__ | $(CC) -E -xc - | tail -n 1)) -CC_MINOR:=$(shell printf "%02d" $(shell echo __GNUC_MINOR__ | $(CC) -E -xc - | tail -n 1)) - -#-------------------------------------------------------- -export VERSION BUILDTIME HOSTCC HOSTCFLAGS CROSS CC AR AS LD NM STRIP CPP -ifeq ($(strip $(TARGET_ARCH)),) -TARGET_ARCH:=$(shell $(CC) -dumpmachine | sed -e s'/-.*//' \ - -e 's/i.86/i386/' \ - -e 's/sparc.*/sparc/' \ - -e 's/arm.*/arm/g' \ - -e 's/m68k.*/m68k/' \ - -e 's/ppc/powerpc/g' \ - -e 's/v850.*/v850/g' \ - -e 's/sh[234]/sh/' \ - -e 's/mips-.*/mips/' \ - -e 's/mipsel-.*/mipsel/' \ - -e 's/cris.*/cris/' \ - ) -endif - -# A nifty macro to make testing gcc features easier -check_gcc=$(shell \ - if [ "$(1)" != "" ]; then \ - if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \ - then echo "$(1)"; else echo "$(2)"; fi \ - fi) - -# Setup some shortcuts so that silent mode is silent like it should be -ifeq ($(subst s,,$(MAKEFLAGS)),$(MAKEFLAGS)) -export MAKE_IS_SILENT=n -SECHO=@echo -else -export MAKE_IS_SILENT=y -SECHO=-@false -endif - -CFLAGS+=$(call check_gcc,-funsigned-char,) - -#-------------------------------------------------------- -# Arch specific compiler optimization stuff should go here. -# Unless you want to override the defaults, do not set anything -# for OPTIMIZATION... - -# use '-Os' optimization if available, else use -O2 -OPTIMIZATION:=$(call check_gcc,-Os,-O2) - -# Some nice architecture specific optimizations -ifeq ($(strip $(TARGET_ARCH)),arm) - OPTIMIZATION+=-fstrict-aliasing -endif -ifeq ($(strip $(TARGET_ARCH)),i386) - OPTIMIZATION+=$(call check_gcc,-march=i386,) - OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,) - OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\ - -malign-functions=0 -malign-jumps=0 -malign-loops=0) -endif -OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer - -# -#-------------------------------------------------------- -# If you're going to do a lot of builds with a non-vanilla configuration, -# it makes sense to adjust parameters above, so you can type "make" -# by itself, instead of following it by the same half-dozen overrides -# every time. The stuff below, on the other hand, is probably less -# prone to casual user adjustment. -# - -ifeq ($(strip $(CONFIG_LFS)),y) - # For large file summit support - CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -endif -ifeq ($(strip $(CONFIG_DMALLOC)),y) - # For testing mem leaks with dmalloc - CFLAGS+=-DDMALLOC - LIBRARIES:=-ldmalloc -else - ifeq ($(strip $(CONFIG_EFENCE)),y) - LIBRARIES:=-lefence - endif -endif -ifeq ($(strip $(CONFIG_DEBUG)),y) - CFLAGS +=$(WARNINGS) -g -D_GNU_SOURCE - LDFLAGS +=-Wl,-warn-common - STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging -else - CFLAGS+=$(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE -DNDEBUG - LDFLAGS += -Wl,-warn-common - STRIPCMD:=$(STRIP) -s --remove-section=.note --remove-section=.comment -endif -ifeq ($(strip $(CONFIG_STATIC)),y) - LDFLAGS += --static -endif - -ifeq ($(strip $(CONFIG_SELINUX)),y) - LIBRARIES += -lselinux -endif - -ifeq ($(strip $(PREFIX)),) - PREFIX:=`pwd`/_install -endif - -# Additional complications due to support for pristine source dir. -# Include files in the build directory should take precedence over -# the copy in top_srcdir, both during the compilation phase and the -# shell script that finds the list of object files. -# Work in progress by . - - -OBJECTS:=$(APPLET_SOURCES:.c=.o) busybox.o usage.o applets.o -CFLAGS += $(CROSS_CFLAGS) -ifdef BB_INIT_SCRIPT - CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"' -endif - -# Put user-supplied flags at the end, where they -# have a chance of winning. -CFLAGS += $(CFLAGS_EXTRA) - -#------------------------------------------------------------ -# Installation options -ifeq ($(strip $(CONFIG_INSTALL_APPLET_HARDLINKS)),y) -INSTALL_OPTS=--hardlinks -endif -ifeq ($(strip $(CONFIG_INSTALL_APPLET_SYMLINKS)),y) -INSTALL_OPTS=--symlinks -endif -ifeq ($(strip $(CONFIG_INSTALL_APPLET_DONT)),y) -INSTALL_OPTS= -endif - -.PHONY: dummy diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/axhttpd.aip b/package/luci/libs/luci-lib-nixio/axTLS/config/axhttpd.aip deleted file mode 100755 index 412fe3b4d1..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/axhttpd.aip +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/axtls.RES b/package/luci/libs/luci-lib-nixio/axTLS/config/axtls.RES deleted file mode 100644 index 2929b3b679fddfb78bb58ebbccc5c0c4a9eb37d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22748 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 /dev/null 2>&1; then \ - echo "Mono not installed! - go " \ - "to http://www.mono-project.com/Main_Page" && exit 1; \ - fi - -endif # Linux - -endif # not 'clean' diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.java.conf b/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.java.conf deleted file mode 100644 index 9b22462908..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.java.conf +++ /dev/null @@ -1,58 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -ifneq ($(MAKECMDGOALS), clean) - -ifdef CONFIG_PLATFORM_CYGWIN -CFLAGS += -I"$(CONFIG_JAVA_HOME)/include" -CFLAGS += -I"$(CONFIG_JAVA_HOME)/include/win32" -JAVA_BIN:=$(CONFIG_JAVA_HOME)/bin -else - -ifdef CONFIG_PLATFORM_WIN32 -CFLAGS += /I"$(shell cygpath -w $(CONFIG_JAVA_HOME)/include)" -CFLAGS += /I"$(shell cygpath -w $(CONFIG_JAVA_HOME)/include/win32)" -JAVA_BIN:=$(shell cygpath -u $(CONFIG_JAVA_HOME)/bin) -else # Linux -CFLAGS += -I$(CONFIG_JAVA_HOME)/include - -ifdef CONFIG_PLATFORM_SOLARIS -CFLAGS += -I$(CONFIG_JAVA_HOME)/include/solaris -else -CFLAGS += -I$(CONFIG_JAVA_HOME)/include/linux -endif - -JAVA_BIN:=$(CONFIG_JAVA_HOME)/bin -endif -endif - -PATH:=$(JAVA_BIN):$(PATH) - -endif # not 'clean' diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.post b/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.post deleted file mode 100644 index 033981c4d1..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/makefile.post +++ /dev/null @@ -1,19 +0,0 @@ - -ifneq ($(MAKECMDGOALS), clean) -ifndef CONFIG_PLATFORM_WIN32 -ifndef CONFIG_PLATFORM_SOLARIS -# do dependencies --include .depend -all : .depend -.depend: $(wildcard *.c) - @$(CC) $(CFLAGS) -MM $^ > $@ -endif # 'not' solaris -endif # 'not' win32 - -ifdef CONFIG_PLATFORM_WIN32 -OBJ:=$(OBJ:.o=.obj) -%.obj : %.c - $(CC) $(CFLAGS) $< -endif # win32 - -endif # end of 'not' clean diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Kconfig-language.txt b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Kconfig-language.txt deleted file mode 100644 index 493749b32a..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Kconfig-language.txt +++ /dev/null @@ -1,255 +0,0 @@ -Introduction ------------- - -The configuration database is collection of configuration options -organized in a tree structure: - - +- Code maturity level options - | +- Prompt for development and/or incomplete code/drivers - +- General setup - | +- Networking support - | +- System V IPC - | +- BSD Process Accounting - | +- Sysctl support - +- Loadable module support - | +- Enable loadable module support - | +- Set version information on all module symbols - | +- Kernel module loader - +- ... - -Every entry has its own dependencies. These dependencies are used -to determine the visible of an entry. Any child entry is only -visible if its parent entry is also visible. - -Menu entries ------------- - -Most entries define a config option, all other entries help to organize -them. A single configuration option is defined like this: - -config MODVERSIONS - bool "Set version information on all module symbols" - depends MODULES - help - Usually, modules have to be recompiled whenever you switch to a new - kernel. ... - -Every line starts with a key word and can be followed by multiple -arguments. "config" starts a new config entry. The following lines -define attributes for this config option. Attributes can be the type of -the config option, input prompt, dependencies, help text and default -values. A config option can be defined multiple times with the same -name, but every definition can have only a single input prompt and the -type must not conflict. - -Menu attributes ---------------- - -A menu entry can have a number of attributes. Not all of them are -applicable everywhere (see syntax). - -- type definition: "bool"/"tristate"/"string"/"hex"/"integer" - Every config option must have a type. There are only two basic types: - tristate and string, the other types base on these two. The type - definition optionally accepts an input prompt, so these two examples - are equivalent: - - bool "Networking support" - and - bool - prompt "Networking support" - -- input prompt: "prompt" ["if" ] - Every menu entry can have at most one prompt, which is used to display - to the user. Optionally dependencies only for this prompt can be added - with "if". - -- default value: "default" ["if" ] - A config option can have any number of default values. If multiple - default values are visible, only the first defined one is active. - Default values are not limited to the menu entry, where they are - defined, this means the default can be defined somewhere else or be - overriden by an earlier definition. - The default value is only assigned to the config symbol if no other - value was set by the user (via the input prompt above). If an input - prompt is visible the default value is presented to the user and can - be overridden by him. - Optionally dependencies only for this default value can be added with - "if". - -- dependencies: "depends on"/"requires" - This defines a dependency for this menu entry. If multiple - dependencies are defined they are connected with '&&'. Dependencies - are applied to all other options within this menu entry (which also - accept "if" expression), so these two examples are equivalent: - - bool "foo" if BAR - default y if BAR - and - depends on BAR - bool "foo" - default y - -- help text: "help" - This defines a help text. The end of the help text is determined by - the level indentation, this means it ends at the first line which has - a smaller indentation than the first line of the help text. - - -Menu dependencies ------------------ - -Dependencies define the visibility of a menu entry and can also reduce -the input range of tristate symbols. The tristate logic used in the -expressions uses one more state than normal boolean logic to express the -module state. Dependency expressions have the following syntax: - - ::= (1) - '=' (2) - '!=' (3) - '(' ')' (4) - '!' (5) - '||' (6) - '&&' (7) - -Expressions are listed in decreasing order of precedence. - -(1) Convert the symbol into an expression. Boolean and tristate symbols - are simply converted into the respective expression values. All - other symbol types result in 'n'. -(2) If the values of both symbols are equal, it returns 'y', - otherwise 'n'. -(3) If the values of both symbols are equal, it returns 'n', - otherwise 'y'. -(4) Returns the value of the expression. Used to override precedence. -(5) Returns the result of (2-/expr/). -(6) Returns the result of min(/expr/, /expr/). -(7) Returns the result of max(/expr/, /expr/). - -An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2 -respectively for calculations). A menu entry becomes visible when it's -expression evaluates to 'm' or 'y'. - -There are two type of symbols: constant and nonconstant symbols. -Nonconstant symbols are the most common ones and are defined with the -'config' statement. Nonconstant symbols consist entirely of alphanumeric -characters or underscores. -Constant symbols are only part of expressions. Constant symbols are -always surrounded by single or double quotes. Within the quote any -other character is allowed and the quotes can be escaped using '\'. - -Menu structure --------------- - -The position of a menu entry in the tree is determined in two ways. First -it can be specified explicitely: - -menu "Network device support" - depends NET - -config NETDEVICES - ... - -endmenu - -All entries within the "menu" ... "endmenu" block become a submenu of -"Network device support". All subentries inherit the dependencies from -the menu entry, e.g. this means the dependency "NET" is added to the -dependency list of the config option NETDEVICES. - -The other way to generate the menu structure is done by analyzing the -dependencies. If a menu entry somehow depends on the previous entry, it -can be made a submenu of it. First the the previous (parent) symbol must -be part of the dependency list and then one of these two condititions -must be true: -- the child entry must become invisible, if the parent is set to 'n' -- the child entry must only be visible, if the parent is visible - -config MODULES - bool "Enable loadable module support" - -config MODVERSIONS - bool "Set version information on all module symbols" - depends MODULES - -comment "module support disabled" - depends !MODULES - -MODVERSIONS directly depends on MODULES, this means it's only visible if -MODULES is different from 'n'. The comment on the other hand is always -visible when MODULES it's visible (the (empty) dependency of MODULES is -also part of the comment dependencies). - - -Kconfig syntax --------------- - -The configuration file describes a series of menu entries, where every -line starts with a keyword (except help texts). The following keywords -end a menu entry: -- config -- choice/endchoice -- comment -- menu/endmenu -- if/endif -- source -The first four also start the definition of a menu entry. - -config: - - "config" - - -This defines a config symbol and accepts any of above -attributes as options. - -choices: - - "choice" - - - "endchoice" - -This defines a choice group and accepts any of above attributes as -options. A choice can only be of type bool or tristate, while a boolean -choice only allows a single config entry to be selected, a tristate -choice also allows any number of config entries to be set to 'm'. This -can be used if multiple drivers for a single hardware exists and only a -single driver can be compiled/loaded into the kernel, but all drivers -can be compiled as modules. -A choice accepts another option "optional", which allows to set the -choice to 'n' and no entry needs to be selected. - -comment: - - "comment" - - -This defines a comment which is displayed to the user during the -configuration process and is also echoed to the output files. The only -possible options are dependencies. - -menu: - - "menu" - - - "endmenu" - -This defines a menu block, see "Menu structure" above for more -information. The only possible options are dependencies. - -if: - - "if" - - "endif" - -This defines an if block. The dependency expression is appended -to all enclosed menu entries. - -source: - - "source" - -This reads the specified configuration file. This file is always parsed. diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Makefile deleted file mode 100644 index 739950163b..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/Makefile +++ /dev/null @@ -1,121 +0,0 @@ -# Makefile for axTLS -# -# Copyright (C) 2002 Erik Andersen - -top_srcdir=../.. -top_builddir=../.. -srcdir=$(top_srcdir)/scripts/config -include $(top_srcdir)/Rules.mak - -all: ncurses conf mconf - -ifeq ($(shell uname),SunOS) -LIBS = -lcurses -else -LIBS = -lncurses -endif -ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h)) - HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="" -else -ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h)) - HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="" -else -ifeq (/usr/local/include/ncurses/ncurses.h, $(wildcard /usr/local/include/ncurses/ncurses.h)) - HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="" -else -ifeq (/usr/local/include/ncurses/curses.h, $(wildcard /usr/local/include/ncurses/curses.h)) - HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="" -else -ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h)) - HOSTNCURSES += -DCURSES_LOC="" -else - HOSTNCURSES += -DCURSES_LOC="" -endif -endif -endif -endif -endif - -CONF_SRC = conf.c -MCONF_SRC = mconf.c -LXD_SRC = lxdialog/checklist.c lxdialog/menubox.c lxdialog/textbox.c \ - lxdialog/yesno.c lxdialog/inputbox.c lxdialog/util.c \ - lxdialog/msgbox.c - -SHARED_SRC = zconf.tab.c -SHARED_DEPS := $(srcdir)/lkc.h $(srcdir)/lkc_proto.h \ - lkc_defs.h $(srcdir)/expr.h zconf.tab.h -CONF_OBJS = $(patsubst %.c,%.o, $(CONF_SRC)) -MCONF_OBJS = $(patsubst %.c,%.o, $(MCONF_SRC) $(LXD_SRC)) -SHARED_OBJS = $(patsubst %.c,%.o, $(SHARED_SRC)) - -conf: $(CONF_OBJS) $(SHARED_OBJS) - $(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@ - -mconf: $(MCONF_OBJS) $(SHARED_OBJS) - $(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@ $(LIBS) - -$(CONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS) - $(HOSTCC) $(HOSTCFLAGS) -I. -c $< -o $@ - -$(MCONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS) - @[ -d $(@D) ] || mkdir -v $(@D) - $(HOSTCC) $(HOSTCFLAGS) $(HOSTNCURSES) -I. -c $< -o $@ - -lkc_defs.h: $(srcdir)/lkc_proto.h - @sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/' - -### -# The following requires flex/bison -# By default we use the _shipped versions, uncomment the -# following line if you are modifying the flex/bison src. -#LKC_GENPARSER := 1 - -ifdef LKC_GENPARSER - -%.tab.c %.tab.h: $(srcdir)/%.y - bison -t -d -v -b $* -p $(notdir $*) $< - -lex.%.c: $(srcdir)/%.l - flex -P$(notdir $*) -o$@ $< -else - -lex.zconf.o: lex.zconf.c $(SHARED_DEPS) - $(HOSTCC) $(HOSTCFLAGS) -I$(srcdir) -c $< -o $@ - -lex.zconf.c: $(srcdir)/lex.zconf.c_shipped - cp $< $@ - -zconf.tab.c: $(srcdir)/zconf.tab.c_shipped - cp $< $@ - -zconf.tab.h: $(srcdir)/zconf.tab.h_shipped - cp $< $@ -endif - -zconf.tab.o: zconf.tab.c lex.zconf.c $(srcdir)/confdata.c $(srcdir)/expr.c \ - $(srcdir)/symbol.c $(srcdir)/menu.c $(SHARED_DEPS) - $(HOSTCC) $(HOSTCFLAGS) -I$(srcdir) -I. -c $< -o $@ - -.PHONY: ncurses - -ncurses: - @echo "main() {}" > lxtemp.c - @if $(HOSTCC) lxtemp.c $(LIBS) ; then \ - rm -f lxtemp.c a.out; \ - else \ - rm -f lxtemp.c; \ - echo -e "\007" ;\ - echo ">> Unable to find the Ncurses libraries." ;\ - echo ">>" ;\ - echo ">> You must have Ncurses installed in order" ;\ - echo ">> to use 'make menuconfig'" ;\ - echo ;\ - exit 1 ;\ - fi - -clean: - rm -f *.o *~ ../../*~ core *.exe $(TARGETS) $(MCONF_OBJS) $(CONF_OBJS) - rm -f conf conf.exe mconf mconf.exe zconf.tab.c zconf.tab.h lex.zconf.c lkc_defs.h - rm -f ../..config.h - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/conf.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/conf.c deleted file mode 100644 index 15244678e8..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/conf.c +++ /dev/null @@ -1,583 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -static void conf(struct menu *menu); -static void check_conf(struct menu *menu); - -enum { - ask_all, - ask_new, - ask_silent, - set_default, - set_yes, - set_mod, - set_no, - set_random -} input_mode = ask_all; -char *defconfig_file; - -static int indent = 1; -static int valid_stdin = 1; -static int conf_cnt; -static char line[128]; -static struct menu *rootEntry; - -static char nohelp_text[] = "Sorry, no help available for this option yet.\n"; - -static void strip(char *str) -{ - char *p = str; - int l; - - while ((isspace(*p))) - p++; - l = strlen(p); - if (p != str) - memmove(str, p, l + 1); - if (!l) - return; - p = str + l - 1; - while ((isspace(*p))) - *p-- = 0; -} - -static void check_stdin(void) -{ - if (!valid_stdin && input_mode == ask_silent) { - printf("aborted!\n\n"); - printf("Console input/output is redirected. "); - printf("Run 'make oldconfig' to update configuration.\n\n"); - exit(1); - } -} - -static void conf_askvalue(struct symbol *sym, const char *def) -{ - enum symbol_type type = sym_get_type(sym); - tristate val; - - if (!sym_has_value(sym)) - printf("(NEW) "); - - line[0] = '\n'; - line[1] = 0; - - if (!sym_is_changable(sym)) { - printf("%s\n", def); - line[0] = '\n'; - line[1] = 0; - return; - } - - switch (input_mode) { - case ask_new: - case ask_silent: - if (sym_has_value(sym)) { - printf("%s\n", def); - return; - } - check_stdin(); - case ask_all: - fflush(stdout); - fgets(line, 128, stdin); - return; - case set_default: - printf("%s\n", def); - return; - default: - break; - } - - switch (type) { - case S_INT: - case S_HEX: - case S_STRING: - printf("%s\n", def); - return; - default: - ; - } - switch (input_mode) { - case set_yes: - if (sym_tristate_within_range(sym, yes)) { - line[0] = 'y'; - line[1] = '\n'; - line[2] = 0; - break; - } - case set_mod: - if (type == S_TRISTATE) { - if (sym_tristate_within_range(sym, mod)) { - line[0] = 'm'; - line[1] = '\n'; - line[2] = 0; - break; - } - } else { - if (sym_tristate_within_range(sym, yes)) { - line[0] = 'y'; - line[1] = '\n'; - line[2] = 0; - break; - } - } - case set_no: - if (sym_tristate_within_range(sym, no)) { - line[0] = 'n'; - line[1] = '\n'; - line[2] = 0; - break; - } - case set_random: - do { - val = (tristate)(random() % 3); - } while (!sym_tristate_within_range(sym, val)); - switch (val) { - case no: line[0] = 'n'; break; - case mod: line[0] = 'm'; break; - case yes: line[0] = 'y'; break; - } - line[1] = '\n'; - line[2] = 0; - break; - default: - break; - } - printf("%s", line); -} - -int conf_string(struct menu *menu) -{ - struct symbol *sym = menu->sym; - const char *def, *help; - - while (1) { - printf("%*s%s ", indent - 1, "", menu->prompt->text); - printf("(%s) ", sym->name); - def = sym_get_string_value(sym); - if (sym_get_string_value(sym)) - printf("[%s] ", def); - conf_askvalue(sym, def); - switch (line[0]) { - case '\n': - break; - case '?': - /* print help */ - if (line[1] == '\n') { - help = nohelp_text; - if (menu->sym->help) - help = menu->sym->help; - printf("\n%s\n", menu->sym->help); - def = NULL; - break; - } - default: - line[strlen(line)-1] = 0; - def = line; - } - if (def && sym_set_string_value(sym, def)) - return 0; - } -} - -static int conf_sym(struct menu *menu) -{ - struct symbol *sym = menu->sym; - int type; - tristate oldval, newval; - const char *help; - - while (1) { - printf("%*s%s ", indent - 1, "", menu->prompt->text); - if (sym->name) - printf("(%s) ", sym->name); - type = sym_get_type(sym); - putchar('['); - oldval = sym_get_tristate_value(sym); - switch (oldval) { - case no: - putchar('N'); - break; - case mod: - putchar('M'); - break; - case yes: - putchar('Y'); - break; - } - if (oldval != no && sym_tristate_within_range(sym, no)) - printf("/n"); - if (oldval != mod && sym_tristate_within_range(sym, mod)) - printf("/m"); - if (oldval != yes && sym_tristate_within_range(sym, yes)) - printf("/y"); - if (sym->help) - printf("/?"); - printf("] "); - conf_askvalue(sym, sym_get_string_value(sym)); - strip(line); - - switch (line[0]) { - case 'n': - case 'N': - newval = no; - if (!line[1] || !strcmp(&line[1], "o")) - break; - continue; - case 'm': - case 'M': - newval = mod; - if (!line[1]) - break; - continue; - case 'y': - case 'Y': - newval = yes; - if (!line[1] || !strcmp(&line[1], "es")) - break; - continue; - case 0: - newval = oldval; - break; - case '?': - goto help; - default: - continue; - } - if (sym_set_tristate_value(sym, newval)) - return 0; -help: - help = nohelp_text; - if (sym->help) - help = sym->help; - printf("\n%s\n", help); - } -} - -static int conf_choice(struct menu *menu) -{ - struct symbol *sym, *def_sym; - struct menu *child; - int type; - bool is_new; - - sym = menu->sym; - type = sym_get_type(sym); - is_new = !sym_has_value(sym); - if (sym_is_changable(sym)) { - conf_sym(menu); - sym_calc_value(sym); - switch (sym_get_tristate_value(sym)) { - case no: - return 1; - case mod: - return 0; - case yes: - break; - } - } else { - switch (sym_get_tristate_value(sym)) { - case no: - return 1; - case mod: - printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); - return 0; - case yes: - break; - } - } - - while (1) { - int cnt, def; - - printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); - def_sym = sym_get_choice_value(sym); - cnt = def = 0; - line[0] = '0'; - line[1] = 0; - for (child = menu->list; child; child = child->next) { - if (!menu_is_visible(child)) - continue; - if (!child->sym) { - printf("%*c %s\n", indent, '*', menu_get_prompt(child)); - continue; - } - cnt++; - if (child->sym == def_sym) { - def = cnt; - printf("%*c", indent, '>'); - } else - printf("%*c", indent, ' '); - printf(" %d. %s", cnt, menu_get_prompt(child)); - if (child->sym->name) - printf(" (%s)", child->sym->name); - if (!sym_has_value(child->sym)) - printf(" (NEW)"); - printf("\n"); - } - printf("%*schoice", indent - 1, ""); - if (cnt == 1) { - printf("[1]: 1\n"); - goto conf_childs; - } - printf("[1-%d", cnt); - if (sym->help) - printf("?"); - printf("]: "); - switch (input_mode) { - case ask_new: - case ask_silent: - if (!is_new) { - cnt = def; - printf("%d\n", cnt); - break; - } - check_stdin(); - case ask_all: - fflush(stdout); - fgets(line, 128, stdin); - strip(line); - if (line[0] == '?') { - printf("\n%s\n", menu->sym->help ? - menu->sym->help : nohelp_text); - continue; - } - if (!line[0]) - cnt = def; - else if (isdigit(line[0])) - cnt = atoi(line); - else - continue; - break; - case set_random: - def = (random() % cnt) + 1; - case set_default: - case set_yes: - case set_mod: - case set_no: - cnt = def; - printf("%d\n", cnt); - break; - } - - conf_childs: - for (child = menu->list; child; child = child->next) { - if (!child->sym || !menu_is_visible(child)) - continue; - if (!--cnt) - break; - } - if (!child) - continue; - if (line[strlen(line) - 1] == '?') { - printf("\n%s\n", child->sym->help ? - child->sym->help : nohelp_text); - continue; - } - sym_set_choice_value(sym, child->sym); - if (child->list) { - indent += 2; - conf(child->list); - indent -= 2; - } - return 1; - } -} - -static void conf(struct menu *menu) -{ - struct symbol *sym; - struct property *prop; - struct menu *child; - - if (!menu_is_visible(menu)) - return; - - sym = menu->sym; - prop = menu->prompt; - if (prop) { - const char *prompt; - - switch (prop->type) { - case P_MENU: - if (input_mode == ask_silent && rootEntry != menu) { - check_conf(menu); - return; - } - case P_COMMENT: - prompt = menu_get_prompt(menu); - if (prompt) - printf("%*c\n%*c %s\n%*c\n", - indent, '*', - indent, '*', prompt, - indent, '*'); - default: - ; - } - } - - if (!sym) - goto conf_childs; - - if (sym_is_choice(sym)) { - conf_choice(menu); - if (sym->curr.tri != mod) - return; - goto conf_childs; - } - - switch (sym->type) { - case S_INT: - case S_HEX: - case S_STRING: - conf_string(menu); - break; - default: - conf_sym(menu); - break; - } - -conf_childs: - if (sym) - indent += 2; - for (child = menu->list; child; child = child->next) - conf(child); - if (sym) - indent -= 2; -} - -static void check_conf(struct menu *menu) -{ - struct symbol *sym; - struct menu *child; - - if (!menu_is_visible(menu)) - return; - - sym = menu->sym; - if (sym) { - if (sym_is_changable(sym) && !sym_has_value(sym)) { - if (!conf_cnt++) - printf("*\n* Restart config...\n*\n"); - rootEntry = menu_get_parent_menu(menu); - conf(rootEntry); - } - if (sym_is_choice(sym) && sym_get_tristate_value(sym) != mod) - return; - } - - for (child = menu->list; child; child = child->next) - check_conf(child); -} - -int main(int ac, char **av) -{ - int i = 1; - const char *name; - struct stat tmpstat; - - if (ac > i && av[i][0] == '-') { - switch (av[i++][1]) { - case 'o': - input_mode = ask_new; - break; - case 's': - input_mode = ask_silent; - valid_stdin = isatty(0) && isatty(1) && isatty(2); - break; - case 'd': - input_mode = set_default; - break; - case 'D': - input_mode = set_default; - defconfig_file = av[i++]; - if (!defconfig_file) { - printf("%s: No default config file specified\n", - av[0]); - exit(1); - } - break; - case 'n': - input_mode = set_no; - break; - case 'm': - input_mode = set_mod; - break; - case 'y': - input_mode = set_yes; - break; - case 'r': - input_mode = set_random; - srandom(time(NULL)); - break; - case 'h': - case '?': - printf("%s [-o|-s] config\n", av[0]); - exit(0); - } - } - name = av[i]; - if (!name) { - printf("%s: configuration file missing\n", av[0]); - } - conf_parse(name); - //zconfdump(stdout); - switch (input_mode) { - case set_default: - if (!defconfig_file) - defconfig_file = conf_get_default_confname(); - if (conf_read(defconfig_file)) { - printf("***\n" - "*** Can't find default configuration \"%s\"!\n" - "***\n", defconfig_file); - exit(1); - } - break; - case ask_silent: - if (stat(".config", &tmpstat)) { - printf("***\n" - "*** You have not yet configured axTLS!\n" - "***\n" - "*** Please run some configurator (e.g. \"make oldconfig\" or\n" - "*** \"make menuconfig\" or \"make config\").\n" - "***\n"); - exit(1); - } - case ask_all: - case ask_new: - conf_read(NULL); - break; - default: - break; - } - - if (input_mode != ask_silent) { - rootEntry = &rootmenu; - conf(&rootmenu); - if (input_mode == ask_all) { - input_mode = ask_silent; - valid_stdin = 1; - } - } - do { - conf_cnt = 0; - check_conf(&rootmenu); - } while (conf_cnt); - if (conf_write(NULL)) { - fprintf(stderr, "\n*** Error during writing of the axTLS configuration.\n\n"); - return 1; - } - return 0; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/confdata.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/confdata.c deleted file mode 100644 index a59e245508..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/confdata.c +++ /dev/null @@ -1,458 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -const char conf_def_filename[] = "config/.config"; - -const char conf_defname[] = "config/defconfig"; - -const char *conf_confnames[] = { - "config/.config", - conf_defname, - NULL, -}; - -static char *conf_expand_value(const char *in) -{ - struct symbol *sym; - const char *src; - static char res_value[SYMBOL_MAXLENGTH]; - char *dst, name[SYMBOL_MAXLENGTH]; - - res_value[0] = 0; - dst = name; - while ((src = strchr(in, '$'))) { - strncat(res_value, in, src - in); - src++; - dst = name; - while (isalnum(*src) || *src == '_') - *dst++ = *src++; - *dst = 0; - sym = sym_lookup(name, 0); - sym_calc_value(sym); - strcat(res_value, sym_get_string_value(sym)); - in = src; - } - strcat(res_value, in); - - return res_value; -} - -char *conf_get_default_confname(void) -{ - struct stat buf; - static char fullname[PATH_MAX+1]; - char *env, *name; - - name = conf_expand_value(conf_defname); - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - if (!stat(fullname, &buf)) - return fullname; - } - return name; -} - -int conf_read(const char *name) -{ - FILE *in = NULL; - char line[1024]; - char *p, *p2; - int lineno = 0; - struct symbol *sym; - struct property *prop; - struct expr *e; - int i; - - if (name) { - in = zconf_fopen(name); - } else { - const char **names = conf_confnames; - while ((name = *names++)) { - name = conf_expand_value(name); - in = zconf_fopen(name); - if (in) { - printf("#\n" - "# using defaults found in %s\n" - "#\n", name); - break; - } - } - } - - if (!in) - return 1; - - for_all_symbols(i, sym) { - sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED; - sym->flags &= ~SYMBOL_VALID; - switch (sym->type) { - case S_INT: - case S_HEX: - case S_STRING: - if (sym->user.val) - free(sym->user.val); - default: - sym->user.val = NULL; - sym->user.tri = no; - } - } - - while (fgets(line, sizeof(line), in)) { - lineno++; - sym = NULL; - switch (line[0]) { - case '#': - if (line[1]!=' ') - continue; - p = strchr(line + 2, ' '); - if (!p) - continue; - *p++ = 0; - if (strncmp(p, "is not set", 10)) - continue; - sym = sym_find(line + 2); - if (!sym) { - fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 2); - break; - } - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - sym->user.tri = no; - sym->flags &= ~SYMBOL_NEW; - break; - default: - ; - } - break; - - case 'A' ... 'Z': - p = strchr(line, '='); - if (!p) - continue; - *p++ = 0; - p2 = strchr(p, '\n'); - if (p2) - *p2 = 0; - sym = sym_find(line); - if (!sym) { - fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line); - break; - } - switch (sym->type) { - case S_TRISTATE: - if (p[0] == 'm') { - sym->user.tri = mod; - sym->flags &= ~SYMBOL_NEW; - break; - } - case S_BOOLEAN: - if (p[0] == 'y') { - sym->user.tri = yes; - sym->flags &= ~SYMBOL_NEW; - break; - } - if (p[0] == 'n') { - sym->user.tri = no; - sym->flags &= ~SYMBOL_NEW; - break; - } - break; - case S_STRING: - if (*p++ != '"') - break; - for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { - if (*p2 == '"') { - *p2 = 0; - break; - } - memmove(p2, p2 + 1, strlen(p2)); - } - if (!p2) { - fprintf(stderr, "%s:%d: invalid string found\n", name, lineno); - exit(1); - } - case S_INT: - case S_HEX: - if (sym_string_valid(sym, p)) { - sym->user.val = strdup(p); - sym->flags &= ~SYMBOL_NEW; - } else { - fprintf(stderr, "%s:%d: symbol value '%s' invalid for %s\n", name, lineno, p, sym->name); - exit(1); - } - break; - default: - ; - } - break; - case '\n': - break; - default: - continue; - } - if (sym && sym_is_choice_value(sym)) { - struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); - switch (sym->user.tri) { - case no: - break; - case mod: - if (cs->user.tri == yes) - /* warn? */; - break; - case yes: - if (cs->user.tri != no) - /* warn? */; - cs->user.val = sym; - break; - } - cs->user.tri = E_OR(cs->user.tri, sym->user.tri); - cs->flags &= ~SYMBOL_NEW; - } - } - fclose(in); - - if (modules_sym) - sym_calc_value(modules_sym); - for_all_symbols(i, sym) { - sym_calc_value(sym); - if (sym_has_value(sym) && !sym_is_choice_value(sym)) { - if (sym->visible == no) - sym->flags |= SYMBOL_NEW; - switch (sym->type) { - case S_STRING: - case S_INT: - case S_HEX: - if (!sym_string_within_range(sym, sym->user.val)) - sym->flags |= SYMBOL_NEW; - default: - break; - } - } - if (!sym_is_choice(sym)) - continue; - prop = sym_get_choice_prop(sym); - for (e = prop->expr; e; e = e->left.expr) - if (e->right.sym->visible != no) - sym->flags |= e->right.sym->flags & SYMBOL_NEW; - } - - sym_change_count = 1; - - return 0; -} - -struct menu *next_menu(struct menu *menu) -{ - if (menu->list) return menu->list; - do { - if (menu->next) { - menu = menu->next; - break; - } - } while ((menu = menu->parent)); - - return menu; -} - -#define SYMBOL_FORCEWRITE (1<<31) - -int conf_write(const char *name) -{ - FILE *out, *out_h; - struct symbol *sym; - struct menu *menu; - const char *basename; - char dirname[128], tmpname[128], newname[128]; - int type, l; - const char *str; - - dirname[0] = 0; - if (name && name[0]) { - struct stat st; - char *slash; - - if (!stat(name, &st) && S_ISDIR(st.st_mode)) { - strcpy(dirname, name); - strcat(dirname, "/"); - basename = conf_def_filename; - } else if ((slash = strrchr(name, '/'))) { - int size = slash - name + 1; - memcpy(dirname, name, size); - dirname[size] = 0; - if (slash[1]) - basename = slash + 1; - else - basename = conf_def_filename; - } else - basename = name; - } else - basename = conf_def_filename; - - sprintf(newname, "config/%s.tmpconfig.%d", dirname, (int)getpid()); - out = fopen(newname, "w"); - if (!out) - return 1; - out_h = NULL; - if (!name) { - out_h = fopen("config/.tmpconfig.h", "w"); - if (!out_h) - return 1; - } - fprintf(out, "#\n" - "# Automatically generated make config: don't edit\n" - "#\n"); - if (out_h) { - fprintf(out_h, "/*\n" - " * Automatically generated header file: don't edit\n" - " */\n\n"); -#if 0 - "/* Version Number */\n" - "#define BB_VER \"%s\"\n" - "#define BB_BT \"%s\"\n", - getenv("VERSION"), - getenv("BUILDTIME")); - if (getenv("EXTRA_VERSION")) - fprintf(out_h, "#define BB_EXTRA_VERSION \"%s\"\n", - getenv("EXTRA_VERSION")); - fprintf(out_h, "\n"); -#endif - } - - if (!sym_change_count) - sym_clear_all_valid(); - - /* Force write of all non-duplicate symbols. */ - - /* Write out everything by default. */ - for(menu = rootmenu.list; menu; menu = next_menu(menu)) - if (menu->sym) menu->sym->flags |= SYMBOL_FORCEWRITE; - - menu = rootmenu.list; - while (menu) { - sym = menu->sym; - if (!sym) { - if (!menu_is_visible(menu)) - goto next; - str = menu_get_prompt(menu); - fprintf(out, "\n" - "#\n" - "# %s\n" - "#\n", str); - if (out_h) - fprintf(out_h, "\n" - "/*\n" - " * %s\n" - " */\n", str); - } else if (!(sym->flags & SYMBOL_CHOICE)) { - sym_calc_value(sym); - if (!(sym->flags & SYMBOL_FORCEWRITE)) - goto next; - - sym->flags &= ~SYMBOL_FORCEWRITE; - type = sym->type; - if (type == S_TRISTATE) { - sym_calc_value(modules_sym); - if (modules_sym->curr.tri == no) - type = S_BOOLEAN; - } - switch (type) { - case S_BOOLEAN: - case S_TRISTATE: - switch (sym_get_tristate_value(sym)) { - case no: - fprintf(out, "# %s is not set\n", sym->name); - if (out_h) - fprintf(out_h, "#undef %s\n", sym->name); - break; - case mod: -#if 0 - fprintf(out, "%s=m\n", sym->name); - if (out_h) - fprintf(out_h, "#define %s_MODULE 1\n", sym->name); -#endif - break; - case yes: - fprintf(out, "%s=y\n", sym->name); - if (out_h) - fprintf(out_h, "#define %s 1\n", sym->name); - break; - } - break; - case S_STRING: - // fix me - str = sym_get_string_value(sym); - fprintf(out, "%s=\"", sym->name); - if (out_h) - fprintf(out_h, "#define %s \"", sym->name); - do { - l = strcspn(str, "\"\\"); - if (l) { - fwrite(str, l, 1, out); - if (out_h) - fwrite(str, l, 1, out_h); - } - str += l; - while (*str == '\\' || *str == '"') { - fprintf(out, "\\%c", *str); - if (out_h) - fprintf(out_h, "\\%c", *str); - str++; - } - } while (*str); - fputs("\"\n", out); - if (out_h) - fputs("\"\n", out_h); - break; - case S_HEX: - str = sym_get_string_value(sym); - if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) { - fprintf(out, "%s=%s\n", sym->name, *str ? str : "0"); - if (out_h) - fprintf(out_h, "#define %s 0x%s\n", sym->name, str); - break; - } - case S_INT: - str = sym_get_string_value(sym); - fprintf(out, "%s=%s\n", sym->name, *str ? str : "0"); - if (out_h) - fprintf(out_h, "#define %s %s\n", sym->name, str); - break; - } - } -next: - menu = next_menu(menu); - } - fclose(out); - if (out_h) { - fclose(out_h); - rename("config/.tmpconfig.h", "config/config.h"); - file_write_dep(NULL); - } - if (!name || basename != conf_def_filename) { - if (!name) - name = conf_def_filename; - sprintf(tmpname, "%s.old", name); - rename(name, tmpname); - } - sprintf(tmpname, "%s%s", dirname, basename); - if (rename(newname, tmpname)) - return 1; - - sym_change_count = 0; - - return 0; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.c deleted file mode 100644 index 30e4f9d69c..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.c +++ /dev/null @@ -1,1099 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -#define DEBUG_EXPR 0 - -struct expr *expr_alloc_symbol(struct symbol *sym) -{ - struct expr *e = malloc(sizeof(*e)); - memset(e, 0, sizeof(*e)); - e->type = E_SYMBOL; - e->left.sym = sym; - return e; -} - -struct expr *expr_alloc_one(enum expr_type type, struct expr *ce) -{ - struct expr *e = malloc(sizeof(*e)); - memset(e, 0, sizeof(*e)); - e->type = type; - e->left.expr = ce; - return e; -} - -struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2) -{ - struct expr *e = malloc(sizeof(*e)); - memset(e, 0, sizeof(*e)); - e->type = type; - e->left.expr = e1; - e->right.expr = e2; - return e; -} - -struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2) -{ - struct expr *e = malloc(sizeof(*e)); - memset(e, 0, sizeof(*e)); - e->type = type; - e->left.sym = s1; - e->right.sym = s2; - return e; -} - -struct expr *expr_alloc_and(struct expr *e1, struct expr *e2) -{ - if (!e1) - return e2; - return e2 ? expr_alloc_two(E_AND, e1, e2) : e1; -} - -struct expr *expr_alloc_or(struct expr *e1, struct expr *e2) -{ - if (!e1) - return e2; - return e2 ? expr_alloc_two(E_OR, e1, e2) : e1; -} - -struct expr *expr_copy(struct expr *org) -{ - struct expr *e; - - if (!org) - return NULL; - - e = malloc(sizeof(*org)); - memcpy(e, org, sizeof(*org)); - switch (org->type) { - case E_SYMBOL: - e->left = org->left; - break; - case E_NOT: - e->left.expr = expr_copy(org->left.expr); - break; - case E_EQUAL: - case E_UNEQUAL: - e->left.sym = org->left.sym; - e->right.sym = org->right.sym; - break; - case E_AND: - case E_OR: - case E_CHOICE: - e->left.expr = expr_copy(org->left.expr); - e->right.expr = expr_copy(org->right.expr); - break; - default: - printf("can't copy type %d\n", e->type); - free(e); - e = NULL; - break; - } - - return e; -} - -void expr_free(struct expr *e) -{ - if (!e) - return; - - switch (e->type) { - case E_SYMBOL: - break; - case E_NOT: - expr_free(e->left.expr); - return; - case E_EQUAL: - case E_UNEQUAL: - break; - case E_OR: - case E_AND: - expr_free(e->left.expr); - expr_free(e->right.expr); - break; - default: - printf("how to free type %d?\n", e->type); - break; - } - free(e); -} - -static int trans_count; - -#define e1 (*ep1) -#define e2 (*ep2) - -static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2) -{ - if (e1->type == type) { - __expr_eliminate_eq(type, &e1->left.expr, &e2); - __expr_eliminate_eq(type, &e1->right.expr, &e2); - return; - } - if (e2->type == type) { - __expr_eliminate_eq(type, &e1, &e2->left.expr); - __expr_eliminate_eq(type, &e1, &e2->right.expr); - return; - } - if (e1->type == E_SYMBOL && e2->type == E_SYMBOL && - e1->left.sym == e2->left.sym && (e1->left.sym->flags & (SYMBOL_YES|SYMBOL_NO))) - return; - if (!expr_eq(e1, e2)) - return; - trans_count++; - expr_free(e1); expr_free(e2); - switch (type) { - case E_OR: - e1 = expr_alloc_symbol(&symbol_no); - e2 = expr_alloc_symbol(&symbol_no); - break; - case E_AND: - e1 = expr_alloc_symbol(&symbol_yes); - e2 = expr_alloc_symbol(&symbol_yes); - break; - default: - ; - } -} - -void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) -{ - if (!e1 || !e2) - return; - switch (e1->type) { - case E_OR: - case E_AND: - __expr_eliminate_eq(e1->type, ep1, ep2); - default: - ; - } - if (e1->type != e2->type) switch (e2->type) { - case E_OR: - case E_AND: - __expr_eliminate_eq(e2->type, ep1, ep2); - default: - ; - } - e1 = expr_eliminate_yn(e1); - e2 = expr_eliminate_yn(e2); -} - -#undef e1 -#undef e2 - -int expr_eq(struct expr *e1, struct expr *e2) -{ - int res, old_count; - - if (e1->type != e2->type) - return 0; - switch (e1->type) { - case E_EQUAL: - case E_UNEQUAL: - return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym; - case E_SYMBOL: - return e1->left.sym == e2->left.sym; - case E_NOT: - return expr_eq(e1->left.expr, e2->left.expr); - case E_AND: - case E_OR: - e1 = expr_copy(e1); - e2 = expr_copy(e2); - old_count = trans_count; - expr_eliminate_eq(&e1, &e2); - res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL && - e1->left.sym == e2->left.sym); - expr_free(e1); - expr_free(e2); - trans_count = old_count; - return res; - case E_CHOICE: - case E_RANGE: - case E_NONE: - /* panic */; - } - - if (DEBUG_EXPR) { - expr_fprint(e1, stdout); - printf(" = "); - expr_fprint(e2, stdout); - printf(" ?\n"); - } - - return 0; -} - -struct expr *expr_eliminate_yn(struct expr *e) -{ - struct expr *tmp; - - if (e) switch (e->type) { - case E_AND: - e->left.expr = expr_eliminate_yn(e->left.expr); - e->right.expr = expr_eliminate_yn(e->right.expr); - if (e->left.expr->type == E_SYMBOL) { - if (e->left.expr->left.sym == &symbol_no) { - expr_free(e->left.expr); - expr_free(e->right.expr); - e->type = E_SYMBOL; - e->left.sym = &symbol_no; - e->right.expr = NULL; - return e; - } else if (e->left.expr->left.sym == &symbol_yes) { - free(e->left.expr); - tmp = e->right.expr; - *e = *(e->right.expr); - free(tmp); - return e; - } - } - if (e->right.expr->type == E_SYMBOL) { - if (e->right.expr->left.sym == &symbol_no) { - expr_free(e->left.expr); - expr_free(e->right.expr); - e->type = E_SYMBOL; - e->left.sym = &symbol_no; - e->right.expr = NULL; - return e; - } else if (e->right.expr->left.sym == &symbol_yes) { - free(e->right.expr); - tmp = e->left.expr; - *e = *(e->left.expr); - free(tmp); - return e; - } - } - break; - case E_OR: - e->left.expr = expr_eliminate_yn(e->left.expr); - e->right.expr = expr_eliminate_yn(e->right.expr); - if (e->left.expr->type == E_SYMBOL) { - if (e->left.expr->left.sym == &symbol_no) { - free(e->left.expr); - tmp = e->right.expr; - *e = *(e->right.expr); - free(tmp); - return e; - } else if (e->left.expr->left.sym == &symbol_yes) { - expr_free(e->left.expr); - expr_free(e->right.expr); - e->type = E_SYMBOL; - e->left.sym = &symbol_yes; - e->right.expr = NULL; - return e; - } - } - if (e->right.expr->type == E_SYMBOL) { - if (e->right.expr->left.sym == &symbol_no) { - free(e->right.expr); - tmp = e->left.expr; - *e = *(e->left.expr); - free(tmp); - return e; - } else if (e->right.expr->left.sym == &symbol_yes) { - expr_free(e->left.expr); - expr_free(e->right.expr); - e->type = E_SYMBOL; - e->left.sym = &symbol_yes; - e->right.expr = NULL; - return e; - } - } - break; - default: - ; - } - return e; -} - -/* - * bool FOO!=n => FOO - */ -struct expr *expr_trans_bool(struct expr *e) -{ - if (!e) - return NULL; - switch (e->type) { - case E_AND: - case E_OR: - case E_NOT: - e->left.expr = expr_trans_bool(e->left.expr); - e->right.expr = expr_trans_bool(e->right.expr); - break; - case E_UNEQUAL: - // FOO!=n -> FOO - if (e->left.sym->type == S_TRISTATE) { - if (e->right.sym == &symbol_no) { - e->type = E_SYMBOL; - e->right.sym = NULL; - } - } - break; - default: - ; - } - return e; -} - -/* - * e1 || e2 -> ? - */ -struct expr *expr_join_or(struct expr *e1, struct expr *e2) -{ - struct expr *tmp; - struct symbol *sym1, *sym2; - - if (expr_eq(e1, e2)) - return expr_copy(e1); - if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) - return NULL; - if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) - return NULL; - if (e1->type == E_NOT) { - tmp = e1->left.expr; - if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) - return NULL; - sym1 = tmp->left.sym; - } else - sym1 = e1->left.sym; - if (e2->type == E_NOT) { - if (e2->left.expr->type != E_SYMBOL) - return NULL; - sym2 = e2->left.expr->left.sym; - } else - sym2 = e2->left.sym; - if (sym1 != sym2) - return NULL; - if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) - return NULL; - if (sym1->type == S_TRISTATE) { - if (e1->type == E_EQUAL && e2->type == E_EQUAL && - ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || - (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) { - // (a='y') || (a='m') -> (a!='n') - return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no); - } - if (e1->type == E_EQUAL && e2->type == E_EQUAL && - ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || - (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) { - // (a='y') || (a='n') -> (a!='m') - return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod); - } - if (e1->type == E_EQUAL && e2->type == E_EQUAL && - ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || - (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) { - // (a='m') || (a='n') -> (a!='y') - return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes); - } - } - if (sym1->type == S_BOOLEAN && sym1 == sym2) { - if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) || - (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL)) - return expr_alloc_symbol(&symbol_yes); - } - - if (DEBUG_EXPR) { - printf("optimize ("); - expr_fprint(e1, stdout); - printf(") || ("); - expr_fprint(e2, stdout); - printf(")?\n"); - } - return NULL; -} - -struct expr *expr_join_and(struct expr *e1, struct expr *e2) -{ - struct expr *tmp; - struct symbol *sym1, *sym2; - - if (expr_eq(e1, e2)) - return expr_copy(e1); - if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) - return NULL; - if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) - return NULL; - if (e1->type == E_NOT) { - tmp = e1->left.expr; - if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) - return NULL; - sym1 = tmp->left.sym; - } else - sym1 = e1->left.sym; - if (e2->type == E_NOT) { - if (e2->left.expr->type != E_SYMBOL) - return NULL; - sym2 = e2->left.expr->left.sym; - } else - sym2 = e2->left.sym; - if (sym1 != sym2) - return NULL; - if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) - return NULL; - - if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) || - (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes)) - // (a) && (a='y') -> (a='y') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); - - if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) || - (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no)) - // (a) && (a!='n') -> (a) - return expr_alloc_symbol(sym1); - - if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) || - (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod)) - // (a) && (a!='m') -> (a='y') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); - - if (sym1->type == S_TRISTATE) { - if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) { - // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' - sym2 = e1->right.sym; - if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) - return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) - : expr_alloc_symbol(&symbol_no); - } - if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) { - // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' - sym2 = e2->right.sym; - if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) - return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) - : expr_alloc_symbol(&symbol_no); - } - if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && - ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || - (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) - // (a!='y') && (a!='n') -> (a='m') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod); - - if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && - ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || - (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) - // (a!='y') && (a!='m') -> (a='n') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_no); - - if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && - ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || - (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) - // (a!='m') && (a!='n') -> (a='m') - return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); - - if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) || - (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) || - (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) || - (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes)) - return NULL; - } - - if (DEBUG_EXPR) { - printf("optimize ("); - expr_fprint(e1, stdout); - printf(") && ("); - expr_fprint(e2, stdout); - printf(")?\n"); - } - return NULL; -} - -static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2) -{ -#define e1 (*ep1) -#define e2 (*ep2) - struct expr *tmp; - - if (e1->type == type) { - expr_eliminate_dups1(type, &e1->left.expr, &e2); - expr_eliminate_dups1(type, &e1->right.expr, &e2); - return; - } - if (e2->type == type) { - expr_eliminate_dups1(type, &e1, &e2->left.expr); - expr_eliminate_dups1(type, &e1, &e2->right.expr); - return; - } - if (e1 == e2) - return; - - switch (e1->type) { - case E_OR: case E_AND: - expr_eliminate_dups1(e1->type, &e1, &e1); - default: - ; - } - - switch (type) { - case E_OR: - tmp = expr_join_or(e1, e2); - if (tmp) { - expr_free(e1); expr_free(e2); - e1 = expr_alloc_symbol(&symbol_no); - e2 = tmp; - trans_count++; - } - break; - case E_AND: - tmp = expr_join_and(e1, e2); - if (tmp) { - expr_free(e1); expr_free(e2); - e1 = expr_alloc_symbol(&symbol_yes); - e2 = tmp; - trans_count++; - } - break; - default: - ; - } -#undef e1 -#undef e2 -} - -static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2) -{ -#define e1 (*ep1) -#define e2 (*ep2) - struct expr *tmp, *tmp1, *tmp2; - - if (e1->type == type) { - expr_eliminate_dups2(type, &e1->left.expr, &e2); - expr_eliminate_dups2(type, &e1->right.expr, &e2); - return; - } - if (e2->type == type) { - expr_eliminate_dups2(type, &e1, &e2->left.expr); - expr_eliminate_dups2(type, &e1, &e2->right.expr); - } - if (e1 == e2) - return; - - switch (e1->type) { - case E_OR: - expr_eliminate_dups2(e1->type, &e1, &e1); - // (FOO || BAR) && (!FOO && !BAR) -> n - tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); - tmp2 = expr_copy(e2); - tmp = expr_extract_eq_and(&tmp1, &tmp2); - if (expr_is_yes(tmp1)) { - expr_free(e1); - e1 = expr_alloc_symbol(&symbol_no); - trans_count++; - } - expr_free(tmp2); - expr_free(tmp1); - expr_free(tmp); - break; - case E_AND: - expr_eliminate_dups2(e1->type, &e1, &e1); - // (FOO && BAR) || (!FOO || !BAR) -> y - tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); - tmp2 = expr_copy(e2); - tmp = expr_extract_eq_or(&tmp1, &tmp2); - if (expr_is_no(tmp1)) { - expr_free(e1); - e1 = expr_alloc_symbol(&symbol_yes); - trans_count++; - } - expr_free(tmp2); - expr_free(tmp1); - expr_free(tmp); - break; - default: - ; - } -#undef e1 -#undef e2 -} - -struct expr *expr_eliminate_dups(struct expr *e) -{ - int oldcount; - if (!e) - return e; - - oldcount = trans_count; - while (1) { - trans_count = 0; - switch (e->type) { - case E_OR: case E_AND: - expr_eliminate_dups1(e->type, &e, &e); - expr_eliminate_dups2(e->type, &e, &e); - default: - ; - } - if (!trans_count) - break; - e = expr_eliminate_yn(e); - } - trans_count = oldcount; - return e; -} - -struct expr *expr_transform(struct expr *e) -{ - struct expr *tmp; - - if (!e) - return NULL; - switch (e->type) { - case E_EQUAL: - case E_UNEQUAL: - case E_SYMBOL: - case E_CHOICE: - break; - default: - e->left.expr = expr_transform(e->left.expr); - e->right.expr = expr_transform(e->right.expr); - } - - switch (e->type) { - case E_EQUAL: - if (e->left.sym->type != S_BOOLEAN) - break; - if (e->right.sym == &symbol_no) { - e->type = E_NOT; - e->left.expr = expr_alloc_symbol(e->left.sym); - e->right.sym = NULL; - break; - } - if (e->right.sym == &symbol_mod) { - printf("boolean symbol %s tested for 'm'? test forced to 'n'\n", e->left.sym->name); - e->type = E_SYMBOL; - e->left.sym = &symbol_no; - e->right.sym = NULL; - break; - } - if (e->right.sym == &symbol_yes) { - e->type = E_SYMBOL; - e->right.sym = NULL; - break; - } - break; - case E_UNEQUAL: - if (e->left.sym->type != S_BOOLEAN) - break; - if (e->right.sym == &symbol_no) { - e->type = E_SYMBOL; - e->right.sym = NULL; - break; - } - if (e->right.sym == &symbol_mod) { - printf("boolean symbol %s tested for 'm'? test forced to 'y'\n", e->left.sym->name); - e->type = E_SYMBOL; - e->left.sym = &symbol_yes; - e->right.sym = NULL; - break; - } - if (e->right.sym == &symbol_yes) { - e->type = E_NOT; - e->left.expr = expr_alloc_symbol(e->left.sym); - e->right.sym = NULL; - break; - } - break; - case E_NOT: - switch (e->left.expr->type) { - case E_NOT: - // !!a -> a - tmp = e->left.expr->left.expr; - free(e->left.expr); - free(e); - e = tmp; - e = expr_transform(e); - break; - case E_EQUAL: - case E_UNEQUAL: - // !a='x' -> a!='x' - tmp = e->left.expr; - free(e); - e = tmp; - e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; - break; - case E_OR: - // !(a || b) -> !a && !b - tmp = e->left.expr; - e->type = E_AND; - e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); - tmp->type = E_NOT; - tmp->right.expr = NULL; - e = expr_transform(e); - break; - case E_AND: - // !(a && b) -> !a || !b - tmp = e->left.expr; - e->type = E_OR; - e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); - tmp->type = E_NOT; - tmp->right.expr = NULL; - e = expr_transform(e); - break; - case E_SYMBOL: - if (e->left.expr->left.sym == &symbol_yes) { - // !'y' -> 'n' - tmp = e->left.expr; - free(e); - e = tmp; - e->type = E_SYMBOL; - e->left.sym = &symbol_no; - break; - } - if (e->left.expr->left.sym == &symbol_mod) { - // !'m' -> 'm' - tmp = e->left.expr; - free(e); - e = tmp; - e->type = E_SYMBOL; - e->left.sym = &symbol_mod; - break; - } - if (e->left.expr->left.sym == &symbol_no) { - // !'n' -> 'y' - tmp = e->left.expr; - free(e); - e = tmp; - e->type = E_SYMBOL; - e->left.sym = &symbol_yes; - break; - } - break; - default: - ; - } - break; - default: - ; - } - return e; -} - -int expr_contains_symbol(struct expr *dep, struct symbol *sym) -{ - if (!dep) - return 0; - - switch (dep->type) { - case E_AND: - case E_OR: - return expr_contains_symbol(dep->left.expr, sym) || - expr_contains_symbol(dep->right.expr, sym); - case E_SYMBOL: - return dep->left.sym == sym; - case E_EQUAL: - case E_UNEQUAL: - return dep->left.sym == sym || - dep->right.sym == sym; - case E_NOT: - return expr_contains_symbol(dep->left.expr, sym); - default: - ; - } - return 0; -} - -bool expr_depends_symbol(struct expr *dep, struct symbol *sym) -{ - if (!dep) - return false; - - switch (dep->type) { - case E_AND: - return expr_depends_symbol(dep->left.expr, sym) || - expr_depends_symbol(dep->right.expr, sym); - case E_SYMBOL: - return dep->left.sym == sym; - case E_EQUAL: - if (dep->left.sym == sym) { - if (dep->right.sym == &symbol_yes || dep->right.sym == &symbol_mod) - return true; - } - break; - case E_UNEQUAL: - if (dep->left.sym == sym) { - if (dep->right.sym == &symbol_no) - return true; - } - break; - default: - ; - } - return false; -} - -struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2) -{ - struct expr *tmp = NULL; - expr_extract_eq(E_AND, &tmp, ep1, ep2); - if (tmp) { - *ep1 = expr_eliminate_yn(*ep1); - *ep2 = expr_eliminate_yn(*ep2); - } - return tmp; -} - -struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2) -{ - struct expr *tmp = NULL; - expr_extract_eq(E_OR, &tmp, ep1, ep2); - if (tmp) { - *ep1 = expr_eliminate_yn(*ep1); - *ep2 = expr_eliminate_yn(*ep2); - } - return tmp; -} - -void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2) -{ -#define e1 (*ep1) -#define e2 (*ep2) - if (e1->type == type) { - expr_extract_eq(type, ep, &e1->left.expr, &e2); - expr_extract_eq(type, ep, &e1->right.expr, &e2); - return; - } - if (e2->type == type) { - expr_extract_eq(type, ep, ep1, &e2->left.expr); - expr_extract_eq(type, ep, ep1, &e2->right.expr); - return; - } - if (expr_eq(e1, e2)) { - *ep = *ep ? expr_alloc_two(type, *ep, e1) : e1; - expr_free(e2); - if (type == E_AND) { - e1 = expr_alloc_symbol(&symbol_yes); - e2 = expr_alloc_symbol(&symbol_yes); - } else if (type == E_OR) { - e1 = expr_alloc_symbol(&symbol_no); - e2 = expr_alloc_symbol(&symbol_no); - } - } -#undef e1 -#undef e2 -} - -struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) -{ - struct expr *e1, *e2; - - if (!e) { - e = expr_alloc_symbol(sym); - if (type == E_UNEQUAL) - e = expr_alloc_one(E_NOT, e); - return e; - } - switch (e->type) { - case E_AND: - e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); - e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); - if (sym == &symbol_yes) - e = expr_alloc_two(E_AND, e1, e2); - if (sym == &symbol_no) - e = expr_alloc_two(E_OR, e1, e2); - if (type == E_UNEQUAL) - e = expr_alloc_one(E_NOT, e); - return e; - case E_OR: - e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); - e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); - if (sym == &symbol_yes) - e = expr_alloc_two(E_OR, e1, e2); - if (sym == &symbol_no) - e = expr_alloc_two(E_AND, e1, e2); - if (type == E_UNEQUAL) - e = expr_alloc_one(E_NOT, e); - return e; - case E_NOT: - return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym); - case E_UNEQUAL: - case E_EQUAL: - if (type == E_EQUAL) { - if (sym == &symbol_yes) - return expr_copy(e); - if (sym == &symbol_mod) - return expr_alloc_symbol(&symbol_no); - if (sym == &symbol_no) - return expr_alloc_one(E_NOT, expr_copy(e)); - } else { - if (sym == &symbol_yes) - return expr_alloc_one(E_NOT, expr_copy(e)); - if (sym == &symbol_mod) - return expr_alloc_symbol(&symbol_yes); - if (sym == &symbol_no) - return expr_copy(e); - } - break; - case E_SYMBOL: - return expr_alloc_comp(type, e->left.sym, sym); - case E_CHOICE: - case E_RANGE: - case E_NONE: - /* panic */; - } - return NULL; -} - -tristate expr_calc_value(struct expr *e) -{ - tristate val1, val2; - const char *str1, *str2; - - if (!e) - return yes; - - switch (e->type) { - case E_SYMBOL: - sym_calc_value(e->left.sym); - return e->left.sym->curr.tri; - case E_AND: - val1 = expr_calc_value(e->left.expr); - val2 = expr_calc_value(e->right.expr); - return E_AND(val1, val2); - case E_OR: - val1 = expr_calc_value(e->left.expr); - val2 = expr_calc_value(e->right.expr); - return E_OR(val1, val2); - case E_NOT: - val1 = expr_calc_value(e->left.expr); - return E_NOT(val1); - case E_EQUAL: - sym_calc_value(e->left.sym); - sym_calc_value(e->right.sym); - str1 = sym_get_string_value(e->left.sym); - str2 = sym_get_string_value(e->right.sym); - return !strcmp(str1, str2) ? yes : no; - case E_UNEQUAL: - sym_calc_value(e->left.sym); - sym_calc_value(e->right.sym); - str1 = sym_get_string_value(e->left.sym); - str2 = sym_get_string_value(e->right.sym); - return !strcmp(str1, str2) ? no : yes; - default: - printf("expr_calc_value: %d?\n", e->type); - return no; - } -} - -int expr_compare_type(enum expr_type t1, enum expr_type t2) -{ -#if 0 - return 1; -#else - if (t1 == t2) - return 0; - switch (t1) { - case E_EQUAL: - case E_UNEQUAL: - if (t2 == E_NOT) - return 1; - case E_NOT: - if (t2 == E_AND) - return 1; - case E_AND: - if (t2 == E_OR) - return 1; - case E_OR: - if (t2 == E_CHOICE) - return 1; - case E_CHOICE: - if (t2 == 0) - return 1; - default: - return -1; - } - printf("[%dgt%d?]", t1, t2); - return 0; -#endif -} - -void expr_print(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken) -{ - if (!e) { - fn(data, "y"); - return; - } - - if (expr_compare_type(prevtoken, e->type) > 0) - fn(data, "("); - switch (e->type) { - case E_SYMBOL: - if (e->left.sym->name) - fn(data, e->left.sym->name); - else - fn(data, ""); - break; - case E_NOT: - fn(data, "!"); - expr_print(e->left.expr, fn, data, E_NOT); - break; - case E_EQUAL: - fn(data, e->left.sym->name); - fn(data, "="); - fn(data, e->right.sym->name); - break; - case E_UNEQUAL: - fn(data, e->left.sym->name); - fn(data, "!="); - fn(data, e->right.sym->name); - break; - case E_OR: - expr_print(e->left.expr, fn, data, E_OR); - fn(data, " || "); - expr_print(e->right.expr, fn, data, E_OR); - break; - case E_AND: - expr_print(e->left.expr, fn, data, E_AND); - fn(data, " && "); - expr_print(e->right.expr, fn, data, E_AND); - break; - case E_CHOICE: - fn(data, e->right.sym->name); - if (e->left.expr) { - fn(data, " ^ "); - expr_print(e->left.expr, fn, data, E_CHOICE); - } - break; - case E_RANGE: - fn(data, "["); - fn(data, e->left.sym->name); - fn(data, " "); - fn(data, e->right.sym->name); - fn(data, "]"); - break; - default: - { - char buf[32]; - sprintf(buf, "", e->type); - fn(data, buf); - break; - } - } - if (expr_compare_type(prevtoken, e->type) > 0) - fn(data, ")"); -} - -static void expr_print_file_helper(void *data, const char *str) -{ - fwrite(str, strlen(str), 1, data); -} - -void expr_fprint(struct expr *e, FILE *out) -{ - expr_print(e, expr_print_file_helper, out, E_NONE); -} - -static void expr_print_gstr_helper(void *data, const char *str) -{ - str_append((struct gstr*)data, str); -} - -void expr_gstr_print(struct expr *e, struct gstr *gs) -{ - expr_print(e, expr_print_gstr_helper, gs, E_NONE); -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.h deleted file mode 100644 index 7d39ff43e6..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/expr.h +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#ifndef EXPR_H -#define EXPR_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#ifndef __cplusplus -#include -#endif - -struct file { - struct file *next; - struct file *parent; - char *name; - int lineno; - int flags; -}; - -#define FILE_BUSY 0x0001 -#define FILE_SCANNED 0x0002 -#define FILE_PRINTED 0x0004 - -typedef enum tristate { - no, mod, yes -} tristate; - -enum expr_type { - E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE -}; - -union expr_data { - struct expr *expr; - struct symbol *sym; -}; - -struct expr { - enum expr_type type; - union expr_data left, right; -}; - -#define E_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2)) -#define E_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2)) -#define E_NOT(dep) (2-(dep)) - -struct expr_value { - struct expr *expr; - tristate tri; -}; - -struct symbol_value { - void *val; - tristate tri; -}; - -enum symbol_type { - S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER -}; - -struct symbol { - struct symbol *next; - char *name; - char *help; - enum symbol_type type; - struct symbol_value curr, user; - tristate visible; - int flags; - struct property *prop; - struct expr *dep, *dep2; - struct expr_value rev_dep; -}; - -#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) - -#define SYMBOL_YES 0x0001 -#define SYMBOL_MOD 0x0002 -#define SYMBOL_NO 0x0004 -#define SYMBOL_CONST 0x0007 -#define SYMBOL_CHECK 0x0008 -#define SYMBOL_CHOICE 0x0010 -#define SYMBOL_CHOICEVAL 0x0020 -#define SYMBOL_PRINTED 0x0040 -#define SYMBOL_VALID 0x0080 -#define SYMBOL_OPTIONAL 0x0100 -#define SYMBOL_WRITE 0x0200 -#define SYMBOL_CHANGED 0x0400 -#define SYMBOL_NEW 0x0800 -#define SYMBOL_AUTO 0x1000 -#define SYMBOL_CHECKED 0x2000 -#define SYMBOL_CHECK_DONE 0x4000 -#define SYMBOL_WARNED 0x8000 - -#define SYMBOL_MAXLENGTH 256 -#define SYMBOL_HASHSIZE 257 -#define SYMBOL_HASHMASK 0xff - -enum prop_type { - P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE -}; - -struct property { - struct property *next; - struct symbol *sym; - enum prop_type type; - const char *text; - struct expr_value visible; - struct expr *expr; - struct menu *menu; - struct file *file; - int lineno; -}; - -#define for_all_properties(sym, st, tok) \ - for (st = sym->prop; st; st = st->next) \ - if (st->type == (tok)) -#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT) -#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE) -#define for_all_prompts(sym, st) \ - for (st = sym->prop; st; st = st->next) \ - if (st->text) - -struct menu { - struct menu *next; - struct menu *parent; - struct menu *list; - struct symbol *sym; - struct property *prompt; - struct expr *dep; - unsigned int flags; - //char *help; - struct file *file; - int lineno; - void *data; -}; - -#define MENU_CHANGED 0x0001 -#define MENU_ROOT 0x0002 - -#ifndef SWIG - -extern struct file *file_list; -extern struct file *current_file; -struct file *lookup_file(const char *name); - -extern struct symbol symbol_yes, symbol_no, symbol_mod; -extern struct symbol *modules_sym; -extern int cdebug; -struct expr *expr_alloc_symbol(struct symbol *sym); -struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); -struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2); -struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2); -struct expr *expr_alloc_and(struct expr *e1, struct expr *e2); -struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); -struct expr *expr_copy(struct expr *org); -void expr_free(struct expr *e); -int expr_eq(struct expr *e1, struct expr *e2); -void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); -tristate expr_calc_value(struct expr *e); -struct expr *expr_eliminate_yn(struct expr *e); -struct expr *expr_trans_bool(struct expr *e); -struct expr *expr_eliminate_dups(struct expr *e); -struct expr *expr_transform(struct expr *e); -int expr_contains_symbol(struct expr *dep, struct symbol *sym); -bool expr_depends_symbol(struct expr *dep, struct symbol *sym); -struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2); -struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2); -void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2); -struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym); - -void expr_fprint(struct expr *e, FILE *out); -struct gstr; /* forward */ -void expr_gstr_print(struct expr *e, struct gstr *gs); - -static inline int expr_is_yes(struct expr *e) -{ - return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes); -} - -static inline int expr_is_no(struct expr *e) -{ - return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no); -} -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* EXPR_H */ diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lex.zconf.c_shipped b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lex.zconf.c_shipped deleted file mode 100644 index b877bb6b3c..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lex.zconf.c_shipped +++ /dev/null @@ -1,3688 +0,0 @@ - -#line 3 "lex.zconf.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 31 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE zconfrestart(zconfin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -extern int zconfleng; - -extern FILE *zconfin, *zconfout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up zconftext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up zconftext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef unsigned int yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via zconfrestart()), so that the user can continue scanning by - * just pointing zconfin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when zconftext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int zconfleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow zconfwrap()'s to do buffer switches - * instead of setting up a fresh zconfin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void zconfrestart (FILE *input_file ); -void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size ); -void zconf_delete_buffer (YY_BUFFER_STATE b ); -void zconf_flush_buffer (YY_BUFFER_STATE b ); -void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ); -void zconfpop_buffer_state (void ); - -static void zconfensure_buffer_stack (void ); -static void zconf_load_buffer_state (void ); -static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len ); - -void *zconfalloc (yy_size_t ); -void *zconfrealloc (void *,yy_size_t ); -void zconffree (void * ); - -#define yy_new_buffer zconf_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - zconfensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - zconfensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define zconfwrap(n) 1 -#define YY_SKIP_YYWRAP - -typedef unsigned char YY_CHAR; - -FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0; - -typedef int yy_state_type; - -extern int zconflineno; - -int zconflineno = 1; - -extern char *zconftext; -#define yytext_ptr zconftext -static yyconst flex_int16_t yy_nxt[][38] = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 18, 16, 16, 18, 18, 19, 20, - 21, 22, 18, 18, 23, 24, 18, 25, 18, 26, - 27, 18, 28, 29, 30, 18, 18, 16 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 18, 16, 16, 18, 18, 19, 20, - 21, 22, 18, 18, 23, 24, 18, 25, 18, 26, - 27, 18, 28, 29, 30, 18, 18, 16 - - }, - - { - 11, 31, 32, 33, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31 - }, - - { - 11, 31, 32, 33, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31 - }, - - { - 11, 34, 34, 35, 34, 36, 34, 34, 36, 34, - 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, - - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34 - }, - - { - 11, 34, 34, 35, 34, 36, 34, 34, 36, 34, - 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34 - }, - - { - 11, 38, 38, 39, 40, 41, 42, 43, 41, 44, - 45, 46, 47, 47, 48, 49, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 50, 47, 47, 47, 51, - 47, 47, 47, 47, 47, 47, 47, 52 - - }, - - { - 11, 38, 38, 39, 40, 41, 42, 43, 41, 44, - 45, 46, 47, 47, 48, 49, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 50, 47, 47, 47, 51, - 47, 47, 47, 47, 47, 47, 47, 52 - }, - - { - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11, -11 - }, - - { - 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, - -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, - - -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, - -12, -12, -12, -12, -12, -12, -12, -12 - }, - - { - 11, -13, 53, 54, -13, -13, 55, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13 - }, - - { - 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14, -14 - - }, - - { - 11, 56, 56, 57, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56 - }, - - { - 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16, -16 - }, - - { - 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, - -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, - - -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, - -17, -17, -17, -17, -17, -17, -17, -17 - }, - - { - 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, - -18, -18, -18, 58, -18, -18, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -18 - }, - - { - 11, -19, -19, -19, -19, -19, -19, -19, -19, -19, - -19, -19, -19, 58, -19, -19, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, - 58, 58, 58, 58, 58, 58, 58, -19 - - }, - - { - 11, -20, -20, -20, -20, -20, -20, -20, -20, -20, - -20, -20, -20, 58, -20, -20, 58, 58, 58, 58, - 58, 58, 58, 58, 60, 58, 58, 58, 58, 61, - 58, 58, 58, 58, 58, 58, 58, -20 - }, - - { - 11, -21, -21, -21, -21, -21, -21, -21, -21, -21, - -21, -21, -21, 58, -21, -21, 58, 58, 58, 58, - 58, 62, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -21 - }, - - { - 11, -22, -22, -22, -22, -22, -22, -22, -22, -22, - -22, -22, -22, 58, -22, -22, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 63, 58, - 58, 58, 58, 58, 58, 58, 58, -22 - }, - - { - 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, 58, -23, -23, 58, 58, 58, 58, - 58, 64, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -23 - }, - - { - 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, - -24, -24, -24, 58, -24, -24, 58, 58, 58, 58, - 58, 58, 65, 58, 58, 58, 58, 58, 66, 58, - 58, 58, 58, 58, 58, 58, 58, -24 - - }, - - { - 11, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, 58, -25, -25, 58, 67, 58, 58, - 58, 68, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -25 - }, - - { - 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, 58, -26, -26, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 69, 58, 58, 58, 58, 58, 58, -26 - }, - - { - 11, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, 58, -27, -27, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 70, 58, 58, 58, 58, -27 - }, - - { - 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, 58, -28, -28, 58, 71, 58, 58, - 58, 72, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -28 - }, - - { - 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, 58, -29, -29, 58, 58, 58, 58, - 58, 73, 58, 58, 58, 58, 58, 58, 58, 74, - 58, 58, 58, 58, 75, 58, 58, -29 - - }, - - { - 11, -30, -30, -30, -30, -30, -30, -30, -30, -30, - -30, -30, -30, 58, -30, -30, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 76, 58, 58, 58, 58, -30 - }, - - { - 11, 77, 77, -31, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77 - }, - - { - 11, -32, 78, 79, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32 - }, - - { - 11, 80, -33, -33, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80 - }, - - { - 11, 81, 81, 82, 81, -34, 81, 81, -34, 81, - 81, 81, 81, 81, 81, -34, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81 - - }, - - { - 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35 - }, - - { - 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36 - }, - - { - 11, 83, 83, 84, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83 - }, - - { - 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38 - }, - - { - 11, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, -39 - - }, - - { - 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, -40, 85, -40, -40, -40, -40, -40, - -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, -40, -40, -40, -40, -40 - }, - - { - 11, -41, -41, -41, -41, -41, -41, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41 - }, - - { - 11, 86, 86, -42, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86 - }, - - { - 11, -43, -43, -43, -43, -43, -43, 87, -43, -43, - -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, - -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, - -43, -43, -43, -43, -43, -43, -43, -43 - }, - - { - 11, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44 - - }, - - { - 11, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, - -45, -45, -45, -45, -45, -45, -45, -45 - }, - - { - 11, -46, -46, -46, -46, -46, -46, -46, -46, -46, - -46, 88, 89, 89, -46, -46, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -46 - }, - - { - 11, -47, -47, -47, -47, -47, -47, -47, -47, -47, - -47, 89, 89, 89, -47, -47, 89, 89, 89, 89, - - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -47 - }, - - { - 11, -48, -48, -48, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, -48 - }, - - { - 11, -49, -49, 90, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49 - - }, - - { - 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, - -50, 89, 89, 89, -50, -50, 89, 89, 89, 89, - 89, 89, 91, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -50 - }, - - { - 11, -51, -51, -51, -51, -51, -51, -51, -51, -51, - -51, 89, 89, 89, -51, -51, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 92, 89, - 89, 89, 89, 89, 89, 89, 89, -51 - }, - - { - 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - - -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, 93 - }, - - { - 11, -53, 53, 54, -53, -53, 55, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53 - }, - - { - 11, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54 - - }, - - { - 11, 56, 56, 57, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56 - }, - - { - 11, 56, 56, 57, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56 - }, - - { - 11, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57 - }, - - { - 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, 58, -58, -58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -58 - }, - - { - 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, - -59, -59, -59, 58, -59, -59, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 94, - 58, 58, 58, 58, 58, 58, 58, -59 - - }, - - { - 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, - -60, -60, -60, 58, -60, -60, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 95, - 58, 58, 58, 58, 58, 58, 58, -60 - }, - - { - 11, -61, -61, -61, -61, -61, -61, -61, -61, -61, - -61, -61, -61, 58, -61, -61, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 96, 97, 58, - 58, 58, 58, 58, 58, 58, 58, -61 - }, - - { - 11, -62, -62, -62, -62, -62, -62, -62, -62, -62, - -62, -62, -62, 58, -62, -62, 58, 58, 58, 58, - - 58, 58, 98, 58, 58, 58, 58, 58, 58, 58, - 99, 58, 58, 58, 58, 58, 58, -62 - }, - - { - 11, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -63, 58, -63, -63, 58, 100, 58, 58, - 101, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -63 - }, - - { - 11, -64, -64, -64, -64, -64, -64, -64, -64, -64, - -64, -64, -64, 58, -64, -64, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 102, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 103, -64 - - }, - - { - 11, -65, -65, -65, -65, -65, -65, -65, -65, -65, - -65, -65, -65, 58, -65, -65, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -65 - }, - - { - 11, -66, -66, -66, -66, -66, -66, -66, -66, -66, - -66, -66, -66, 58, -66, -66, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 104, 58, 58, -66 - }, - - { - 11, -67, -67, -67, -67, -67, -67, -67, -67, -67, - -67, -67, -67, 58, -67, -67, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 105, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -67 - }, - - { - 11, -68, -68, -68, -68, -68, -68, -68, -68, -68, - -68, -68, -68, 58, -68, -68, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 106, 58, - 58, 58, 58, 58, 58, 58, 58, -68 - }, - - { - 11, -69, -69, -69, -69, -69, -69, -69, -69, -69, - -69, -69, -69, 58, -69, -69, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 107, 58, 58, -69 - - }, - - { - 11, -70, -70, -70, -70, -70, -70, -70, -70, -70, - -70, -70, -70, 58, -70, -70, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 108, - 58, 58, 58, 58, 58, 58, 58, -70 - }, - - { - 11, -71, -71, -71, -71, -71, -71, -71, -71, -71, - -71, -71, -71, 58, -71, -71, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 109, 58, - 58, 58, 58, 58, 58, 58, 58, -71 - }, - - { - 11, -72, -72, -72, -72, -72, -72, -72, -72, -72, - -72, -72, -72, 58, -72, -72, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 110, 58, 58, 58, 58, 58, -72 - }, - - { - 11, -73, -73, -73, -73, -73, -73, -73, -73, -73, - -73, -73, -73, 58, -73, -73, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 111, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -73 - }, - - { - 11, -74, -74, -74, -74, -74, -74, -74, -74, -74, - -74, -74, -74, 58, -74, -74, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 112, 58, -74 - - }, - - { - 11, -75, -75, -75, -75, -75, -75, -75, -75, -75, - -75, -75, -75, 58, -75, -75, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 113, 58, 58, 58, 58, -75 - }, - - { - 11, -76, -76, -76, -76, -76, -76, -76, -76, -76, - -76, -76, -76, 58, -76, -76, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 114, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -76 - }, - - { - 11, 77, 77, -77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77 - }, - - { - 11, -78, 78, 79, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, -78 - }, - - { - 11, 80, -79, -79, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80 - - }, - - { - 11, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, -80 - }, - - { - 11, 81, 81, 82, 81, -81, 81, 81, -81, 81, - 81, 81, 81, 81, 81, -81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81 - }, - - { - 11, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82 - }, - - { - 11, -83, -83, 84, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83 - }, - - { - 11, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84 - - }, - - { - 11, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85 - }, - - { - 11, 86, 86, -86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86 - }, - - { - 11, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87 - }, - - { - 11, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, 115, 89, 89, -88, -88, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -88 - }, - - { - 11, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, 89, 89, 89, -89, -89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -89 - - }, - - { - 11, -90, -90, -90, -90, -90, -90, -90, -90, -90, - -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, - -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, - -90, -90, -90, -90, -90, -90, -90, -90 - }, - - { - 11, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, 89, 89, 89, -91, -91, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -91 - }, - - { - 11, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, 89, 89, 89, -92, -92, 89, 89, 89, 89, - - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -92 - }, - - { - 11, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93 - }, - - { - 11, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, 58, -94, -94, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 116, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -94 - - }, - - { - 11, -95, -95, -95, -95, -95, -95, -95, -95, -95, - -95, -95, -95, 58, -95, -95, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 117, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -95 - }, - - { - 11, -96, -96, -96, -96, -96, -96, -96, -96, -96, - -96, -96, -96, 58, -96, -96, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 118, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -96 - }, - - { - 11, -97, -97, -97, -97, -97, -97, -97, -97, -97, - -97, -97, -97, 58, -97, -97, 58, 58, 58, 58, - - 58, 58, 119, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -97 - }, - - { - 11, -98, -98, -98, -98, -98, -98, -98, -98, -98, - -98, -98, -98, 58, -98, -98, 120, 121, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -98 - }, - - { - 11, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, 58, -99, -99, 58, 58, 58, 58, - 58, 122, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -99 - - }, - - { - 11, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, 58, -100, -100, 58, 58, 123, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -100 - }, - - { - 11, -101, -101, -101, -101, -101, -101, -101, -101, -101, - -101, -101, -101, 58, -101, -101, 58, 58, 58, 124, - 58, 58, 58, 58, 58, 125, 58, 126, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -101 - }, - - { - 11, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, 58, -102, -102, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 127, 58, 58, 58, 58, 58, 58, -102 - }, - - { - 11, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, 58, -103, -103, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -103 - }, - - { - 11, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, 58, -104, -104, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -104 - - }, - - { - 11, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, 58, -105, -105, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 128, 58, - 58, 58, 58, 58, 58, 58, 58, -105 - }, - - { - 11, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, 58, -106, -106, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 129, 58, -106 - }, - - { - 11, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, 58, -107, -107, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 130, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -107 - }, - - { - 11, -108, -108, -108, -108, -108, -108, -108, -108, -108, - -108, -108, -108, 58, -108, -108, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 131, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -108 - }, - - { - 11, -109, -109, -109, -109, -109, -109, -109, -109, -109, - -109, -109, -109, 58, -109, -109, 58, 58, 58, 58, - 58, 58, 58, 132, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -109 - - }, - - { - 11, -110, -110, -110, -110, -110, -110, -110, -110, -110, - -110, -110, -110, 58, -110, -110, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 133, 58, -110 - }, - - { - 11, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -111, -111, 58, -111, -111, 58, 58, 58, 58, - 58, 134, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -111 - }, - - { - 11, -112, -112, -112, -112, -112, -112, -112, -112, -112, - -112, -112, -112, 58, -112, -112, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 135, 58, 58, 58, 58, -112 - }, - - { - 11, -113, -113, -113, -113, -113, -113, -113, -113, -113, - -113, -113, -113, 58, -113, -113, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 136, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -113 - }, - - { - 11, -114, -114, -114, -114, -114, -114, -114, -114, -114, - -114, -114, -114, 58, -114, -114, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 137, 58, 58, 58, -114 - - }, - - { - 11, -115, -115, -115, -115, -115, -115, -115, -115, -115, - -115, 89, 89, 89, -115, -115, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, -115 - }, - - { - 11, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, 58, -116, -116, 58, 58, 58, 58, - 58, 138, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -116 - }, - - { - 11, -117, -117, -117, -117, -117, -117, -117, -117, -117, - -117, -117, -117, 58, -117, -117, 58, 58, 58, 139, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -117 - }, - - { - 11, -118, -118, -118, -118, -118, -118, -118, -118, -118, - -118, -118, -118, 58, -118, -118, 58, 58, 58, 58, - 58, 140, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -118 - }, - - { - 11, -119, -119, -119, -119, -119, -119, -119, -119, -119, - -119, -119, -119, 58, -119, -119, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 141, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -119 - - }, - - { - 11, -120, -120, -120, -120, -120, -120, -120, -120, -120, - -120, -120, -120, 58, -120, -120, 58, 58, 142, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 143, 58, 58, -120 - }, - - { - 11, -121, -121, -121, -121, -121, -121, -121, -121, -121, - -121, -121, -121, 58, -121, -121, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 144, 58, -121 - }, - - { - 11, -122, -122, -122, -122, -122, -122, -122, -122, -122, - -122, -122, -122, 58, -122, -122, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 145, 58, - 58, 58, 58, 58, 58, 58, 58, -122 - }, - - { - 11, -123, -123, -123, -123, -123, -123, -123, -123, -123, - -123, -123, -123, 58, -123, -123, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 146, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -123 - }, - - { - 11, -124, -124, -124, -124, -124, -124, -124, -124, -124, - -124, -124, -124, 58, -124, -124, 58, 58, 58, 58, - 58, 58, 58, 58, 147, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -124 - - }, - - { - 11, -125, -125, -125, -125, -125, -125, -125, -125, -125, - -125, -125, -125, 58, -125, -125, 58, 58, 58, 58, - 58, 58, 148, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -125 - }, - - { - 11, -126, -126, -126, -126, -126, -126, -126, -126, -126, - -126, -126, -126, 58, -126, -126, 58, 58, 58, 58, - 58, 149, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -126 - }, - - { - 11, -127, -127, -127, -127, -127, -127, -127, -127, -127, - -127, -127, -127, 58, -127, -127, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -127 - }, - - { - 11, -128, -128, -128, -128, -128, -128, -128, -128, -128, - -128, -128, -128, 58, -128, -128, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 150, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -128 - }, - - { - 11, -129, -129, -129, -129, -129, -129, -129, -129, -129, - -129, -129, -129, 58, -129, -129, 58, 58, 58, 151, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -129 - - }, - - { - 11, -130, -130, -130, -130, -130, -130, -130, -130, -130, - -130, -130, -130, 58, -130, -130, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 152, - 58, 58, 58, 58, 58, 58, 58, -130 - }, - - { - 11, -131, -131, -131, -131, -131, -131, -131, -131, -131, - -131, -131, -131, 58, -131, -131, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 153, 58, 58, 58, 58, 58, 58, -131 - }, - - { - 11, -132, -132, -132, -132, -132, -132, -132, -132, -132, - -132, -132, -132, 58, -132, -132, 58, 58, 58, 58, - - 58, 154, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -132 - }, - - { - 11, -133, -133, -133, -133, -133, -133, -133, -133, -133, - -133, -133, -133, 58, -133, -133, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 155, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -133 - }, - - { - 11, -134, -134, -134, -134, -134, -134, -134, -134, -134, - -134, -134, -134, 58, -134, -134, 58, 58, 58, 156, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -134 - - }, - - { - 11, -135, -135, -135, -135, -135, -135, -135, -135, -135, - -135, -135, -135, 58, -135, -135, 58, 58, 58, 157, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -135 - }, - - { - 11, -136, -136, -136, -136, -136, -136, -136, -136, -136, - -136, -136, -136, 58, -136, -136, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 158, 58, - 58, 58, 58, 58, 58, 58, 58, -136 - }, - - { - 11, -137, -137, -137, -137, -137, -137, -137, -137, -137, - -137, -137, -137, 58, -137, -137, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 159, 58, 58, -137 - }, - - { - 11, -138, -138, -138, -138, -138, -138, -138, -138, -138, - -138, -138, -138, 58, -138, -138, 58, 160, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -138 - }, - - { - 11, -139, -139, -139, -139, -139, -139, -139, -139, -139, - -139, -139, -139, 58, -139, -139, 58, 58, 58, 58, - 58, 161, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -139 - - }, - - { - 11, -140, -140, -140, -140, -140, -140, -140, -140, -140, - -140, -140, -140, 58, -140, -140, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 162, 58, - 58, 58, 58, 58, 58, 58, 58, -140 - }, - - { - 11, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, 58, -141, -141, 58, 58, 58, 58, - 58, 58, 58, 163, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -141 - }, - - { - 11, -142, -142, -142, -142, -142, -142, -142, -142, -142, - -142, -142, -142, 58, -142, -142, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 164, - 58, 58, 58, 58, 58, 58, 58, -142 - }, - - { - 11, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, 58, -143, -143, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 165, 58, 58, 58, 58, -143 - }, - - { - 11, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, 58, -144, -144, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 166, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -144 - - }, - - { - 11, -145, -145, -145, -145, -145, -145, -145, -145, -145, - -145, -145, -145, 58, -145, -145, 58, 58, 58, 58, - 167, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -145 - }, - - { - 11, -146, -146, -146, -146, -146, -146, -146, -146, -146, - -146, -146, -146, 58, -146, -146, 58, 58, 58, 58, - 58, 168, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -146 - }, - - { - 11, -147, -147, -147, -147, -147, -147, -147, -147, -147, - -147, -147, -147, 58, -147, -147, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 169, - 58, 58, 58, 58, 58, 58, 58, -147 - }, - - { - 11, -148, -148, -148, -148, -148, -148, -148, -148, -148, - -148, -148, -148, 58, -148, -148, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -148 - }, - - { - 11, -149, -149, -149, -149, -149, -149, -149, -149, -149, - -149, -149, -149, 58, -149, -149, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 170, 58, - 58, 58, 58, 58, 58, 58, 58, -149 - - }, - - { - 11, -150, -150, -150, -150, -150, -150, -150, -150, -150, - -150, -150, -150, 58, -150, -150, 58, 58, 58, 58, - 58, 171, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -150 - }, - - { - 11, -151, -151, -151, -151, -151, -151, -151, -151, -151, - -151, -151, -151, 58, -151, -151, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 172, - 58, 58, 58, 58, 58, 58, 58, -151 - }, - - { - 11, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, 58, -152, -152, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 173, 58, - 58, 58, 58, 58, 58, 58, 58, -152 - }, - - { - 11, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, 58, -153, -153, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 174, 58, 58, -153 - }, - - { - 11, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, 58, -154, -154, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -154 - - }, - - { - 11, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, 58, -155, -155, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 175, 58, 58, 58, 58, -155 - }, - - { - 11, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, 58, -156, -156, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 176, 58, 58, -156 - }, - - { - 11, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, 58, -157, -157, 58, 58, 58, 58, - - 58, 177, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -157 - }, - - { - 11, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, 58, -158, -158, 58, 58, 58, 58, - 58, 58, 58, 178, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -158 - }, - - { - 11, -159, -159, -159, -159, -159, -159, -159, -159, -159, - -159, -159, -159, 58, -159, -159, 58, 179, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -159 - - }, - - { - 11, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, 58, -160, -160, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 180, 58, - 58, 58, 58, 58, 58, 58, 58, -160 - }, - - { - 11, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, 58, -161, -161, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -161 - }, - - { - 11, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, 58, -162, -162, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 181, 58, 58, -162 - }, - - { - 11, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, 58, -163, -163, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -163 - }, - - { - 11, -164, -164, -164, -164, -164, -164, -164, -164, -164, - -164, -164, -164, 58, -164, -164, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 182, - 58, 58, 58, 58, 58, 58, 58, -164 - - }, - - { - 11, -165, -165, -165, -165, -165, -165, -165, -165, -165, - -165, -165, -165, 58, -165, -165, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 183, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -165 - }, - - { - 11, -166, -166, -166, -166, -166, -166, -166, -166, -166, - -166, -166, -166, 58, -166, -166, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 184, 58, 58, -166 - }, - - { - 11, -167, -167, -167, -167, -167, -167, -167, -167, -167, - -167, -167, -167, 58, -167, -167, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 185, 58, 58, 58, -167 - }, - - { - 11, -168, -168, -168, -168, -168, -168, -168, -168, -168, - -168, -168, -168, 58, -168, -168, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -168 - }, - - { - 11, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, 58, -169, -169, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 186, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -169 - - }, - - { - 11, -170, -170, -170, -170, -170, -170, -170, -170, -170, - -170, -170, -170, 58, -170, -170, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 187, 58, -170 - }, - - { - 11, -171, -171, -171, -171, -171, -171, -171, -171, -171, - -171, -171, -171, 58, -171, -171, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 188, 58, - 58, 58, 58, 58, 58, 58, 58, -171 - }, - - { - 11, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, 58, -172, -172, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 189, 58, - 58, 58, 58, 58, 58, 58, 58, -172 - }, - - { - 11, -173, -173, -173, -173, -173, -173, -173, -173, -173, - -173, -173, -173, 58, -173, -173, 58, 190, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -173 - }, - - { - 11, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, 58, -174, -174, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -174 - - }, - - { - 11, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, 58, -175, -175, 58, 58, 58, 58, - 58, 191, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -175 - }, - - { - 11, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, 58, -176, -176, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -176 - }, - - { - 11, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, 58, -177, -177, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -177 - }, - - { - 11, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, 58, -178, -178, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -178 - }, - - { - 11, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, 58, -179, -179, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 192, 58, 58, -179 - - }, - - { - 11, -180, -180, -180, -180, -180, -180, -180, -180, -180, - -180, -180, -180, 58, -180, -180, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -180 - }, - - { - 11, -181, -181, -181, -181, -181, -181, -181, -181, -181, - -181, -181, -181, 58, -181, -181, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -181 - }, - - { - 11, -182, -182, -182, -182, -182, -182, -182, -182, -182, - -182, -182, -182, 58, -182, -182, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 193, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -182 - }, - - { - 11, -183, -183, -183, -183, -183, -183, -183, -183, -183, - -183, -183, -183, 58, -183, -183, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 194, 58, 58, 58, -183 - }, - - { - 11, -184, -184, -184, -184, -184, -184, -184, -184, -184, - -184, -184, -184, 58, -184, -184, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -184 - - }, - - { - 11, -185, -185, -185, -185, -185, -185, -185, -185, -185, - -185, -185, -185, 58, -185, -185, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -185 - }, - - { - 11, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, 58, -186, -186, 58, 58, 58, 195, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -186 - }, - - { - 11, -187, -187, -187, -187, -187, -187, -187, -187, -187, - -187, -187, -187, 58, -187, -187, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -187 - }, - - { - 11, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, 58, -188, -188, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 196, 58, -188 - }, - - { - 11, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, 58, -189, -189, 58, 58, 58, 58, - 58, 58, 197, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -189 - - }, - - { - 11, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, 58, -190, -190, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 198, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -190 - }, - - { - 11, -191, -191, -191, -191, -191, -191, -191, -191, -191, - -191, -191, -191, 58, -191, -191, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 199, 58, 58, 58, -191 - }, - - { - 11, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, 58, -192, -192, 58, 58, 58, 58, - - 58, 200, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -192 - }, - - { - 11, -193, -193, -193, -193, -193, -193, -193, -193, -193, - -193, -193, -193, 58, -193, -193, 58, 58, 58, 58, - 58, 201, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -193 - }, - - { - 11, -194, -194, -194, -194, -194, -194, -194, -194, -194, - -194, -194, -194, 58, -194, -194, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 202, 58, 58, -194 - - }, - - { - 11, -195, -195, -195, -195, -195, -195, -195, -195, -195, - -195, -195, -195, 58, -195, -195, 58, 58, 58, 58, - 58, 203, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -195 - }, - - { - 11, -196, -196, -196, -196, -196, -196, -196, -196, -196, - -196, -196, -196, 58, -196, -196, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -196 - }, - - { - 11, -197, -197, -197, -197, -197, -197, -197, -197, -197, - -197, -197, -197, 58, -197, -197, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 204, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -197 - }, - - { - 11, -198, -198, -198, -198, -198, -198, -198, -198, -198, - -198, -198, -198, 58, -198, -198, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -198 - }, - - { - 11, -199, -199, -199, -199, -199, -199, -199, -199, -199, - -199, -199, -199, 58, -199, -199, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -199 - - }, - - { - 11, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, 58, -200, -200, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -200 - }, - - { - 11, -201, -201, -201, -201, -201, -201, -201, -201, -201, - -201, -201, -201, 58, -201, -201, 58, 205, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -201 - }, - - { - 11, -202, -202, -202, -202, -202, -202, -202, -202, -202, - -202, -202, -202, 58, -202, -202, 58, 206, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -202 - }, - - { - 11, -203, -203, -203, -203, -203, -203, -203, -203, -203, - -203, -203, -203, 58, -203, -203, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -203 - }, - - { - 11, -204, -204, -204, -204, -204, -204, -204, -204, -204, - -204, -204, -204, 58, -204, -204, 58, 58, 58, 58, - 58, 58, 58, 207, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -204 - - }, - - { - 11, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, 58, -205, -205, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 208, 58, - 58, 58, 58, 58, 58, 58, 58, -205 - }, - - { - 11, -206, -206, -206, -206, -206, -206, -206, -206, -206, - -206, -206, -206, 58, -206, -206, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 209, 58, 58, -206 - }, - - { - 11, -207, -207, -207, -207, -207, -207, -207, -207, -207, - -207, -207, -207, 58, -207, -207, 58, 58, 58, 58, - - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -207 - }, - - { - 11, -208, -208, -208, -208, -208, -208, -208, -208, -208, - -208, -208, -208, 58, -208, -208, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -208 - }, - - { - 11, -209, -209, -209, -209, -209, -209, -209, -209, -209, - -209, -209, -209, 58, -209, -209, 58, 58, 58, 58, - 58, 210, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -209 - - }, - - { - 11, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, 58, -210, -210, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, -210 - }, - - } ; - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up zconftext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - zconfleng = (size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 64 -#define YY_END_OF_BUFFER 65 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[211] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65, 5, 4, 3, 2, 36, 37, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 63, 60, 62, 55, 59, 58, 57, 53, 48, 42, - 47, 51, 53, 40, 41, 50, 50, 43, 53, 50, - 50, 53, 4, 3, 2, 2, 1, 35, 35, 35, - 35, 35, 35, 35, 16, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 63, 60, 62, 61, - 55, 54, 57, 56, 44, 51, 38, 50, 50, 52, - 45, 46, 39, 35, 35, 35, 35, 35, 35, 35, - - 35, 35, 30, 29, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 49, 25, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 15, 35, 7, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 17, 35, 35, - 35, 35, 35, 34, 35, 35, 35, 35, 35, 35, - 10, 35, 13, 35, 35, 35, 35, 33, 35, 35, - 35, 35, 35, 22, 35, 32, 9, 31, 35, 26, - 12, 35, 35, 21, 18, 35, 8, 35, 35, 35, - 35, 35, 27, 35, 35, 6, 35, 20, 19, 23, - - 35, 35, 11, 35, 35, 35, 14, 28, 35, 24 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, - 10, 1, 1, 1, 11, 12, 12, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, - 14, 1, 1, 1, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 1, 15, 1, 1, 16, 1, 17, 18, 19, 20, - - 21, 22, 23, 24, 25, 13, 13, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 13, 13, 36, - 13, 13, 1, 37, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -extern int zconf_flex_debug; -int zconf_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *zconftext; - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -#define START_STRSIZE 16 - -char *text; -static char *text_ptr; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static struct buffer *zconf_endfile(void); - -void new_string(void) -{ - text = malloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_ptr = text; - text_size = 0; - *text_ptr = 0; -} - -void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - text = realloc(text, new_size); - text_asize = new_size; - text_ptr = text + text_size; - } - memcpy(text_ptr, str, size); - text_ptr += size; - text_size += size; - *text_ptr = 0; -} - -void alloc_string(const char *str, int size) -{ - text = malloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -#define INITIAL 0 -#define COMMAND 1 -#define HELP 2 -#define STRING 3 -#define PARAM 4 - -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int zconfwrap (void ); -#else -extern int zconfwrap (void ); -#endif -#endif - - static void yyunput (int c,char *buf_ptr ); - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - errno=0; \ - while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(zconfin); \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int zconflex (void); - -#define YY_DECL int zconflex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after zconftext and zconfleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - - int str = 0; - int ts, i; - - if ( (yy_init) ) - { - (yy_init) = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! zconfin ) - zconfin = stdin; - - if ( ! zconfout ) - zconfout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - zconfensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - zconf_create_buffer(zconfin,YY_BUF_SIZE ); - } - - zconf_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of zconftext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) - ++yy_cp; - - yy_current_state = -yy_current_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -/* rule 1 can match eol */ -YY_RULE_SETUP -current_file->lineno++; - YY_BREAK -case 2: -YY_RULE_SETUP - - YY_BREAK -case 3: -/* rule 3 can match eol */ -YY_RULE_SETUP -current_file->lineno++; return T_EOL; - YY_BREAK -case 4: -YY_RULE_SETUP -{ - BEGIN(COMMAND); -} - YY_BREAK -case 5: -YY_RULE_SETUP -{ - unput(zconftext[0]); - BEGIN(COMMAND); -} - YY_BREAK - -case 6: -YY_RULE_SETUP -BEGIN(PARAM); return T_MAINMENU; - YY_BREAK -case 7: -YY_RULE_SETUP -BEGIN(PARAM); return T_MENU; - YY_BREAK -case 8: -YY_RULE_SETUP -BEGIN(PARAM); return T_ENDMENU; - YY_BREAK -case 9: -YY_RULE_SETUP -BEGIN(PARAM); return T_SOURCE; - YY_BREAK -case 10: -YY_RULE_SETUP -BEGIN(PARAM); return T_CHOICE; - YY_BREAK -case 11: -YY_RULE_SETUP -BEGIN(PARAM); return T_ENDCHOICE; - YY_BREAK -case 12: -YY_RULE_SETUP -BEGIN(PARAM); return T_COMMENT; - YY_BREAK -case 13: -YY_RULE_SETUP -BEGIN(PARAM); return T_CONFIG; - YY_BREAK -case 14: -YY_RULE_SETUP -BEGIN(PARAM); return T_MENUCONFIG; - YY_BREAK -case 15: -YY_RULE_SETUP -BEGIN(PARAM); return T_HELP; - YY_BREAK -case 16: -YY_RULE_SETUP -BEGIN(PARAM); return T_IF; - YY_BREAK -case 17: -YY_RULE_SETUP -BEGIN(PARAM); return T_ENDIF; - YY_BREAK -case 18: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEPENDS; - YY_BREAK -case 19: -YY_RULE_SETUP -BEGIN(PARAM); return T_REQUIRES; - YY_BREAK -case 20: -YY_RULE_SETUP -BEGIN(PARAM); return T_OPTIONAL; - YY_BREAK -case 21: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEFAULT; - YY_BREAK -case 22: -YY_RULE_SETUP -BEGIN(PARAM); return T_PROMPT; - YY_BREAK -case 23: -YY_RULE_SETUP -BEGIN(PARAM); return T_TRISTATE; - YY_BREAK -case 24: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEF_TRISTATE; - YY_BREAK -case 25: -YY_RULE_SETUP -BEGIN(PARAM); return T_BOOLEAN; - YY_BREAK -case 26: -YY_RULE_SETUP -BEGIN(PARAM); return T_BOOLEAN; - YY_BREAK -case 27: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEF_BOOLEAN; - YY_BREAK -case 28: -YY_RULE_SETUP -BEGIN(PARAM); return T_DEF_BOOLEAN; - YY_BREAK -case 29: -YY_RULE_SETUP -BEGIN(PARAM); return T_INT; - YY_BREAK -case 30: -YY_RULE_SETUP -BEGIN(PARAM); return T_HEX; - YY_BREAK -case 31: -YY_RULE_SETUP -BEGIN(PARAM); return T_STRING; - YY_BREAK -case 32: -YY_RULE_SETUP -BEGIN(PARAM); return T_SELECT; - YY_BREAK -case 33: -YY_RULE_SETUP -BEGIN(PARAM); return T_SELECT; - YY_BREAK -case 34: -YY_RULE_SETUP -BEGIN(PARAM); return T_RANGE; - YY_BREAK -case 35: -YY_RULE_SETUP -{ - alloc_string(zconftext, zconfleng); - zconflval.string = text; - return T_WORD; - } - YY_BREAK -case 36: -YY_RULE_SETUP - - YY_BREAK -case 37: -/* rule 37 can match eol */ -YY_RULE_SETUP -current_file->lineno++; BEGIN(INITIAL); - YY_BREAK - -case 38: -YY_RULE_SETUP -return T_AND; - YY_BREAK -case 39: -YY_RULE_SETUP -return T_OR; - YY_BREAK -case 40: -YY_RULE_SETUP -return T_OPEN_PAREN; - YY_BREAK -case 41: -YY_RULE_SETUP -return T_CLOSE_PAREN; - YY_BREAK -case 42: -YY_RULE_SETUP -return T_NOT; - YY_BREAK -case 43: -YY_RULE_SETUP -return T_EQUAL; - YY_BREAK -case 44: -YY_RULE_SETUP -return T_UNEQUAL; - YY_BREAK -case 45: -YY_RULE_SETUP -return T_IF; - YY_BREAK -case 46: -YY_RULE_SETUP -return T_ON; - YY_BREAK -case 47: -YY_RULE_SETUP -{ - str = zconftext[0]; - new_string(); - BEGIN(STRING); - } - YY_BREAK -case 48: -/* rule 48 can match eol */ -YY_RULE_SETUP -BEGIN(INITIAL); current_file->lineno++; return T_EOL; - YY_BREAK -case 49: -YY_RULE_SETUP -/* ignore */ - YY_BREAK -case 50: -YY_RULE_SETUP -{ - alloc_string(zconftext, zconfleng); - zconflval.string = text; - return T_WORD; - } - YY_BREAK -case 51: -YY_RULE_SETUP -/* comment */ - YY_BREAK -case 52: -/* rule 52 can match eol */ -YY_RULE_SETUP -current_file->lineno++; - YY_BREAK -case 53: -YY_RULE_SETUP - - YY_BREAK -case YY_STATE_EOF(PARAM): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 54: -/* rule 54 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up zconftext again */ -YY_RULE_SETUP -{ - append_string(zconftext, zconfleng); - zconflval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 55: -YY_RULE_SETUP -{ - append_string(zconftext, zconfleng); - } - YY_BREAK -case 56: -/* rule 56 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up zconftext again */ -YY_RULE_SETUP -{ - append_string(zconftext + 1, zconfleng - 1); - zconflval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 57: -YY_RULE_SETUP -{ - append_string(zconftext + 1, zconfleng - 1); - } - YY_BREAK -case 58: -YY_RULE_SETUP -{ - if (str == zconftext[0]) { - BEGIN(PARAM); - zconflval.string = text; - return T_WORD_QUOTE; - } else - append_string(zconftext, 1); - } - YY_BREAK -case 59: -/* rule 59 can match eol */ -YY_RULE_SETUP -{ - printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); - current_file->lineno++; - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK -case YY_STATE_EOF(STRING): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 60: -YY_RULE_SETUP -{ - ts = 0; - for (i = 0; i < zconfleng; i++) { - if (zconftext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - YY_BREAK -case 61: -/* rule 61 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up zconftext again */ -YY_RULE_SETUP -{ - current_file->lineno++; - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK -case 62: -/* rule 62 can match eol */ -YY_RULE_SETUP -{ - current_file->lineno++; - append_string("\n", 1); - } - YY_BREAK -case 63: -YY_RULE_SETUP -{ - append_string(zconftext, zconfleng); - if (!first_ts) - first_ts = last_ts; - } - YY_BREAK -case YY_STATE_EOF(HELP): -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK - -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMAND): -{ - if (current_buf) { - zconf_endfile(); - return T_EOF; - } - fclose(zconfin); - yyterminate(); -} - YY_BREAK -case 64: -YY_RULE_SETUP -YY_FATAL_ERROR( "flex scanner jammed" ); - YY_BREAK - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed zconfin at a new source and called - * zconflex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( zconfwrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * zconftext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of zconflex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - size_t num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - zconfrestart(zconfin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - - yy_current_state = yy_nxt[yy_current_state][1]; - yy_is_jam = (yy_current_state <= 0); - - return yy_is_jam ? 0 : yy_current_state; -} - - static void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up zconftext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - zconfrestart(zconfin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( zconfwrap( ) ) - return EOF; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve zconftext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void zconfrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - zconfensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - zconf_create_buffer(zconfin,YY_BUF_SIZE ); - } - - zconf_init_buffer(YY_CURRENT_BUFFER,input_file ); - zconf_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * zconfpop_buffer_state(); - * zconfpush_buffer_state(new_buffer); - */ - zconfensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - zconf_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (zconfwrap()) processing, but the only time this flag - * is looked at is after zconfwrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void zconf_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - zconf_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with zconf_create_buffer() - * - */ - void zconf_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - zconffree((void *) b->yy_ch_buf ); - - zconffree((void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a zconfrestart() or at EOF. - */ - static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - zconf_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then zconf_init_buffer was _probably_ - * called from zconfrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void zconf_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - zconf_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - zconfensure_buffer_stack(); - - /* This block is copied from zconf_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from zconf_switch_to_buffer. */ - zconf_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void zconfpop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - zconf_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - zconf_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void zconfensure_buffer_stack (void) -{ - int num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - zconf_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to zconflex() will - * scan from a @e copy of @a str. - * @param str a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * zconf_scan_bytes() instead. - */ -YY_BUFFER_STATE zconf_scan_string (yyconst char * str ) -{ - - return zconf_scan_bytes(str,strlen(str) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE zconf_scan_bytes (yyconst char * bytes, int len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) zconfalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = zconf_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up zconftext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - zconftext[zconfleng] = (yy_hold_char); \ - (yy_c_buf_p) = zconftext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - zconfleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int zconfget_lineno (void) -{ - - return zconflineno; -} - -/** Get the input stream. - * - */ -FILE *zconfget_in (void) -{ - return zconfin; -} - -/** Get the output stream. - * - */ -FILE *zconfget_out (void) -{ - return zconfout; -} - -/** Get the length of the current token. - * - */ -int zconfget_leng (void) -{ - return zconfleng; -} - -/** Get the current token. - * - */ - -char *zconfget_text (void) -{ - return zconftext; -} - -/** Set the current line number. - * @param line_number - * - */ -void zconfset_lineno (int line_number ) -{ - - zconflineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see zconf_switch_to_buffer - */ -void zconfset_in (FILE * in_str ) -{ - zconfin = in_str ; -} - -void zconfset_out (FILE * out_str ) -{ - zconfout = out_str ; -} - -int zconfget_debug (void) -{ - return zconf_flex_debug; -} - -void zconfset_debug (int bdebug ) -{ - zconf_flex_debug = bdebug ; -} - -/* zconflex_destroy is for both reentrant and non-reentrant scanners. */ -int zconflex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - zconf_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - zconfpop_buffer_state(); - } - - /* Destroy the stack itself. */ - zconffree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *zconfalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *zconfrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void zconffree (void * ptr ) -{ - free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#undef YY_NEW_FILE -#undef YY_FLUSH_BUFFER -#undef yy_set_bol -#undef yy_new_buffer -#undef yy_set_interactive -#undef yytext_ptr -#undef YY_DO_BEFORE_ACTION - -#ifdef YY_DECL_IS_OURS -#undef YY_DECL_IS_OURS -#undef YY_DECL -#endif - -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - zconflval.string = text; - BEGIN(INITIAL); -} - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - zconfin = zconf_fopen(name); - if (!zconfin) { - printf("can't find file %s\n", name); - exit(1); - } - - current_buf = malloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - current_file->lineno = 1; - current_file->flags = FILE_BUSY; -} - -void zconf_nextfile(const char *name) -{ - struct file *file = file_lookup(name); - struct buffer *buf = malloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - zconfin = zconf_fopen(name); - if (!zconfin) { - printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name); - exit(1); - } - zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - if (file->flags & FILE_BUSY) { - printf("recursive scan (%s)?\n", name); - exit(1); - } - if (file->flags & FILE_SCANNED) { - printf("file %s already scanned?\n", name); - exit(1); - } - file->flags |= FILE_BUSY; - file->lineno = 1; - file->parent = current_file; - current_file = file; -} - -static struct buffer *zconf_endfile(void) -{ - struct buffer *parent; - - current_file->flags |= FILE_SCANNED; - current_file->flags &= ~FILE_BUSY; - current_file = current_file->parent; - - parent = current_buf->parent; - if (parent) { - fclose(zconfin); - zconf_delete_buffer(YY_CURRENT_BUFFER); - zconf_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; - - return parent; -} - -int zconf_lineno(void) -{ - if (current_buf) - return current_file->lineno - 1; - else - return 0; -} - -char *zconf_curname(void) -{ - if (current_buf) - return current_file->name; - else - return ""; -} - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc.h deleted file mode 100644 index b8a67fc9d6..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#ifndef LKC_H -#define LKC_H - -#include "expr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef LKC_DIRECT_LINK -#define P(name,type,arg) extern type name arg -#else -#include "lkc_defs.h" -#define P(name,type,arg) extern type (*name ## _p) arg -#endif -#include "lkc_proto.h" -#undef P - -#define SRCTREE "srctree" - -int zconfparse(void); -void zconfdump(FILE *out); - -extern int zconfdebug; -void zconf_starthelp(void); -FILE *zconf_fopen(const char *name); -void zconf_initscan(const char *name); -void zconf_nextfile(const char *name); -int zconf_lineno(void); -char *zconf_curname(void); - -/* confdata.c */ -extern const char conf_def_filename[]; -extern char conf_filename[]; - -char *conf_get_default_confname(void); - -/* kconfig_load.c */ -void kconfig_load(void); - -/* menu.c */ -void menu_init(void); -void menu_add_menu(void); -void menu_end_menu(void); -void menu_add_entry(struct symbol *sym); -void menu_end_entry(void); -void menu_add_dep(struct expr *dep); -struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); -void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); -void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); -void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); -void menu_finalize(struct menu *parent); -void menu_set_type(int type); - -/* util.c */ -struct file *file_lookup(const char *name); -int file_write_dep(const char *name); - -struct gstr { - size_t len; - char *s; -}; -struct gstr str_new(void); -struct gstr str_assign(const char *s); -void str_free(struct gstr *gs); -void str_append(struct gstr *gs, const char *s); -void str_printf(struct gstr *gs, const char *fmt, ...); -const char *str_get(struct gstr *gs); - -/* symbol.c */ -void sym_init(void); -void sym_clear_all_valid(void); -void sym_set_changed(struct symbol *sym); -struct symbol *sym_check_deps(struct symbol *sym); -struct property *prop_alloc(enum prop_type type, struct symbol *sym); -struct symbol *prop_get_symbol(struct property *prop); - -static inline tristate sym_get_tristate_value(struct symbol *sym) -{ - return sym->curr.tri; -} - - -static inline struct symbol *sym_get_choice_value(struct symbol *sym) -{ - return (struct symbol *)sym->curr.val; -} - -static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) -{ - return sym_set_tristate_value(chval, yes); -} - -static inline bool sym_is_choice(struct symbol *sym) -{ - return sym->flags & SYMBOL_CHOICE ? true : false; -} - -static inline bool sym_is_choice_value(struct symbol *sym) -{ - return sym->flags & SYMBOL_CHOICEVAL ? true : false; -} - -static inline bool sym_is_optional(struct symbol *sym) -{ - return sym->flags & SYMBOL_OPTIONAL ? true : false; -} - -static inline bool sym_has_value(struct symbol *sym) -{ - return sym->flags & SYMBOL_NEW ? false : true; -} - -#ifdef __cplusplus -} -#endif - -#endif /* LKC_H */ diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc_proto.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc_proto.h deleted file mode 100644 index 6dc6d0c48e..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lkc_proto.h +++ /dev/null @@ -1,40 +0,0 @@ - -/* confdata.c */ -P(conf_parse,void,(const char *name)); -P(conf_read,int,(const char *name)); -P(conf_write,int,(const char *name)); - -/* menu.c */ -P(rootmenu,struct menu,); - -P(menu_is_visible,bool,(struct menu *menu)); -P(menu_get_prompt,const char *,(struct menu *menu)); -P(menu_get_root_menu,struct menu *,(struct menu *menu)); -P(menu_get_parent_menu,struct menu *,(struct menu *menu)); - -/* symbol.c */ -P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); -P(sym_change_count,int,); - -P(sym_lookup,struct symbol *,(const char *name, int isconst)); -P(sym_find,struct symbol *,(const char *name)); -P(sym_re_search,struct symbol **,(const char *pattern)); -P(sym_type_name,const char *,(enum symbol_type type)); -P(sym_calc_value,void,(struct symbol *sym)); -P(sym_get_type,enum symbol_type,(struct symbol *sym)); -P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri)); -P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri)); -P(sym_toggle_tristate_value,tristate,(struct symbol *sym)); -P(sym_string_valid,bool,(struct symbol *sym, const char *newval)); -P(sym_string_within_range,bool,(struct symbol *sym, const char *str)); -P(sym_set_string_value,bool,(struct symbol *sym, const char *newval)); -P(sym_is_changable,bool,(struct symbol *sym)); -P(sym_get_choice_prop,struct property *,(struct symbol *sym)); -P(sym_get_default_prop,struct property *,(struct symbol *sym)); -P(sym_get_string_value,const char *,(struct symbol *sym)); - -P(prop_get_type_name,const char *,(enum prop_type type)); - -/* expr.c */ -P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2)); -P(expr_print,void,(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken)); diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/BIG.FAT.WARNING b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/BIG.FAT.WARNING deleted file mode 100644 index a8999d82bd..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/BIG.FAT.WARNING +++ /dev/null @@ -1,4 +0,0 @@ -This is NOT the official version of dialog. This version has been -significantly modified from the original. It is for use by the Linux -kernel configuration script. Please do not bother Savio Lam with -questions about this program. diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/checklist.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/checklist.c deleted file mode 100644 index 71de4a191d..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/checklist.c +++ /dev/null @@ -1,372 +0,0 @@ -/* - * checklist.c -- implements the checklist box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension - * Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -static int list_width, check_x, item_x, checkflag; - -/* - * Print list item - */ -static void -print_item (WINDOW * win, const char *item, int status, - int choice, int selected) -{ - int i; - - /* Clear 'residue' of last item */ - wattrset (win, menubox_attr); - wmove (win, choice, 0); - for (i = 0; i < list_width; i++) - waddch (win, ' '); - - wmove (win, choice, check_x); - wattrset (win, selected ? check_selected_attr : check_attr); - if (checkflag == FLAG_CHECK) - wprintw (win, "[%c]", status ? 'X' : ' '); - else - wprintw (win, "(%c)", status ? 'X' : ' '); - - wattrset (win, selected ? tag_selected_attr : tag_attr); - mvwaddch(win, choice, item_x, item[0]); - wattrset (win, selected ? item_selected_attr : item_attr); - waddstr (win, (char *)item+1); - if (selected) { - wmove (win, choice, check_x+1); - wrefresh (win); - } -} - -/* - * Print the scroll indicators. - */ -static void -print_arrows (WINDOW * win, int choice, int item_no, int scroll, - int y, int x, int height) -{ - wmove(win, y, x); - - if (scroll > 0) { - wattrset (win, uarrow_attr); - waddch (win, ACS_UARROW); - waddstr (win, "(-)"); - } - else { - wattrset (win, menubox_attr); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - } - - y = y + height + 1; - wmove(win, y, x); - - if ((height < item_no) && (scroll + choice < item_no - 1)) { - wattrset (win, darrow_attr); - waddch (win, ACS_DARROW); - waddstr (win, "(+)"); - } - else { - wattrset (win, menubox_border_attr); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - } -} - -/* - * Display the termination buttons - */ -static void -print_buttons( WINDOW *dialog, int height, int width, int selected) -{ - int x = width / 2 - 11; - int y = height - 2; - - print_button (dialog, "Select", y, x, selected == 0); - print_button (dialog, " Help ", y, x + 14, selected == 1); - - wmove(dialog, y, x+1 + 14*selected); - wrefresh (dialog); -} - -/* - * Display a dialog box with a list of options that can be turned on or off - * The `flag' parameter is used to select between radiolist and checklist. - */ -int -dialog_checklist (const char *title, const char *prompt, int height, int width, - int list_height, int item_no, struct dialog_list_item ** items, - int flag) - -{ - int i, x, y, box_x, box_y; - int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status; - WINDOW *dialog, *list; - - checkflag = flag; - - /* Allocate space for storing item on/off status */ - if ((status = malloc (sizeof (int) * item_no)) == NULL) { - endwin (); - fprintf (stderr, - "\nCan't allocate memory in dialog_checklist().\n"); - exit (-1); - } - - /* Initializes status */ - for (i = 0; i < item_no; i++) { - status[i] = (items[i]->selected == 1); /* ON */ - if ((!choice && status[i]) || items[i]->selected == 2) /* SELECTED */ - choice = i + 1; - } - if (choice) - choice--; - - max_choice = MIN (list_height, item_no); - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - wattrset (dialog, border_attr); - mvwaddch (dialog, height-3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 3); - - list_width = width - 6; - box_y = height - list_height - 5; - box_x = (width - list_width) / 2 - 1; - - /* create new window for the list */ - list = subwin (dialog, list_height, list_width, y+box_y+1, x+box_x+1); - - keypad (list, TRUE); - - /* draw a box around the list items */ - draw_box (dialog, box_y, box_x, list_height + 2, list_width + 2, - menubox_border_attr, menubox_attr); - - /* Find length of longest item in order to center checklist */ - check_x = 0; - for (i = 0; i < item_no; i++) - check_x = MAX (check_x, + strlen (items[i]->name) + 4); - - check_x = (list_width - check_x) / 2; - item_x = check_x + 4; - - if (choice >= list_height) { - scroll = choice - list_height + 1; - choice -= scroll; - } - - /* Print the list */ - for (i = 0; i < max_choice; i++) { - print_item (list, items[scroll + i]->name, - status[i+scroll], i, i == choice); - } - - print_arrows(dialog, choice, item_no, scroll, - box_y, box_x + check_x + 5, list_height); - - print_buttons(dialog, height, width, 0); - - wnoutrefresh (list); - wnoutrefresh (dialog); - doupdate (); - - while (key != ESC) { - key = wgetch (dialog); - - for (i = 0; i < max_choice; i++) - if (toupper(key) == toupper(items[scroll + i]->name[0])) - break; - - - if ( i < max_choice || key == KEY_UP || key == KEY_DOWN || - key == '+' || key == '-' ) { - if (key == KEY_UP || key == '-') { - if (!choice) { - if (!scroll) - continue; - /* Scroll list down */ - if (list_height > 1) { - /* De-highlight current first item */ - print_item (list, items[scroll]->name, - status[scroll], 0, FALSE); - scrollok (list, TRUE); - wscrl (list, -1); - scrollok (list, FALSE); - } - scroll--; - print_item (list, items[scroll]->name, - status[scroll], 0, TRUE); - wnoutrefresh (list); - - print_arrows(dialog, choice, item_no, scroll, - box_y, box_x + check_x + 5, list_height); - - wrefresh (dialog); - - continue; /* wait for another key press */ - } else - i = choice - 1; - } else if (key == KEY_DOWN || key == '+') { - if (choice == max_choice - 1) { - if (scroll + choice >= item_no - 1) - continue; - /* Scroll list up */ - if (list_height > 1) { - /* De-highlight current last item before scrolling up */ - print_item (list, items[scroll + max_choice - 1]->name, - status[scroll + max_choice - 1], - max_choice - 1, FALSE); - scrollok (list, TRUE); - scroll (list); - scrollok (list, FALSE); - } - scroll++; - print_item (list, items[scroll + max_choice - 1]->name, - status[scroll + max_choice - 1], - max_choice - 1, TRUE); - wnoutrefresh (list); - - print_arrows(dialog, choice, item_no, scroll, - box_y, box_x + check_x + 5, list_height); - - wrefresh (dialog); - - continue; /* wait for another key press */ - } else - i = choice + 1; - } - if (i != choice) { - /* De-highlight current item */ - print_item (list, items[scroll + choice]->name, - status[scroll + choice], choice, FALSE); - /* Highlight new item */ - choice = i; - print_item (list, items[scroll + choice]->name, - status[scroll + choice], choice, TRUE); - wnoutrefresh (list); - wrefresh (dialog); - } - continue; /* wait for another key press */ - } - switch (key) { - case 'H': - case 'h': - case '?': - for (i = 0; i < item_no; i++) - items[i]->selected = 0; - items[scroll + choice]->selected = 1; - delwin (dialog); - free (status); - return 1; - case TAB: - case KEY_LEFT: - case KEY_RIGHT: - button = ((key == KEY_LEFT ? --button : ++button) < 0) - ? 1 : (button > 1 ? 0 : button); - - print_buttons(dialog, height, width, button); - wrefresh (dialog); - break; - case 'S': - case 's': - case ' ': - case '\n': - if (!button) { - if (flag == FLAG_CHECK) { - status[scroll + choice] = !status[scroll + choice]; - wmove (list, choice, check_x); - wattrset (list, check_selected_attr); - wprintw (list, "[%c]", status[scroll + choice] ? 'X' : ' '); - } else { - if (!status[scroll + choice]) { - for (i = 0; i < item_no; i++) - status[i] = 0; - status[scroll + choice] = 1; - for (i = 0; i < max_choice; i++) - print_item (list, items[scroll + i]->name, - status[scroll + i], i, i == choice); - } - } - wnoutrefresh (list); - wrefresh (dialog); - - for (i = 0; i < item_no; i++) { - items[i]->selected = status[i]; - } - } else { - for (i = 0; i < item_no; i++) - items[i]->selected = 0; - items[scroll + choice]->selected = 1; - } - delwin (dialog); - free (status); - return button; - case 'X': - case 'x': - key = ESC; - case ESC: - break; - } - - /* Now, update everything... */ - doupdate (); - } - - - delwin (dialog); - free (status); - return -1; /* ESC pressed */ -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/colors.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/colors.h deleted file mode 100644 index d34dd37c6f..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/colors.h +++ /dev/null @@ -1,161 +0,0 @@ -/* - * colors.h -- color attribute definitions - * - * AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -/* - * Default color definitions - * - * *_FG = foreground - * *_BG = background - * *_HL = highlight? - */ -#define SCREEN_FG COLOR_CYAN -#define SCREEN_BG COLOR_BLUE -#define SCREEN_HL TRUE - -#define SHADOW_FG COLOR_BLACK -#define SHADOW_BG COLOR_BLACK -#define SHADOW_HL TRUE - -#define DIALOG_FG COLOR_BLACK -#define DIALOG_BG COLOR_WHITE -#define DIALOG_HL FALSE - -#define TITLE_FG COLOR_YELLOW -#define TITLE_BG COLOR_WHITE -#define TITLE_HL TRUE - -#define BORDER_FG COLOR_WHITE -#define BORDER_BG COLOR_WHITE -#define BORDER_HL TRUE - -#define BUTTON_ACTIVE_FG COLOR_WHITE -#define BUTTON_ACTIVE_BG COLOR_BLUE -#define BUTTON_ACTIVE_HL TRUE - -#define BUTTON_INACTIVE_FG COLOR_BLACK -#define BUTTON_INACTIVE_BG COLOR_WHITE -#define BUTTON_INACTIVE_HL FALSE - -#define BUTTON_KEY_ACTIVE_FG COLOR_WHITE -#define BUTTON_KEY_ACTIVE_BG COLOR_BLUE -#define BUTTON_KEY_ACTIVE_HL TRUE - -#define BUTTON_KEY_INACTIVE_FG COLOR_RED -#define BUTTON_KEY_INACTIVE_BG COLOR_WHITE -#define BUTTON_KEY_INACTIVE_HL FALSE - -#define BUTTON_LABEL_ACTIVE_FG COLOR_YELLOW -#define BUTTON_LABEL_ACTIVE_BG COLOR_BLUE -#define BUTTON_LABEL_ACTIVE_HL TRUE - -#define BUTTON_LABEL_INACTIVE_FG COLOR_BLACK -#define BUTTON_LABEL_INACTIVE_BG COLOR_WHITE -#define BUTTON_LABEL_INACTIVE_HL TRUE - -#define INPUTBOX_FG COLOR_BLACK -#define INPUTBOX_BG COLOR_WHITE -#define INPUTBOX_HL FALSE - -#define INPUTBOX_BORDER_FG COLOR_BLACK -#define INPUTBOX_BORDER_BG COLOR_WHITE -#define INPUTBOX_BORDER_HL FALSE - -#define SEARCHBOX_FG COLOR_BLACK -#define SEARCHBOX_BG COLOR_WHITE -#define SEARCHBOX_HL FALSE - -#define SEARCHBOX_TITLE_FG COLOR_YELLOW -#define SEARCHBOX_TITLE_BG COLOR_WHITE -#define SEARCHBOX_TITLE_HL TRUE - -#define SEARCHBOX_BORDER_FG COLOR_WHITE -#define SEARCHBOX_BORDER_BG COLOR_WHITE -#define SEARCHBOX_BORDER_HL TRUE - -#define POSITION_INDICATOR_FG COLOR_YELLOW -#define POSITION_INDICATOR_BG COLOR_WHITE -#define POSITION_INDICATOR_HL TRUE - -#define MENUBOX_FG COLOR_BLACK -#define MENUBOX_BG COLOR_WHITE -#define MENUBOX_HL FALSE - -#define MENUBOX_BORDER_FG COLOR_WHITE -#define MENUBOX_BORDER_BG COLOR_WHITE -#define MENUBOX_BORDER_HL TRUE - -#define ITEM_FG COLOR_BLACK -#define ITEM_BG COLOR_WHITE -#define ITEM_HL FALSE - -#define ITEM_SELECTED_FG COLOR_WHITE -#define ITEM_SELECTED_BG COLOR_BLUE -#define ITEM_SELECTED_HL TRUE - -#define TAG_FG COLOR_YELLOW -#define TAG_BG COLOR_WHITE -#define TAG_HL TRUE - -#define TAG_SELECTED_FG COLOR_YELLOW -#define TAG_SELECTED_BG COLOR_BLUE -#define TAG_SELECTED_HL TRUE - -#define TAG_KEY_FG COLOR_YELLOW -#define TAG_KEY_BG COLOR_WHITE -#define TAG_KEY_HL TRUE - -#define TAG_KEY_SELECTED_FG COLOR_YELLOW -#define TAG_KEY_SELECTED_BG COLOR_BLUE -#define TAG_KEY_SELECTED_HL TRUE - -#define CHECK_FG COLOR_BLACK -#define CHECK_BG COLOR_WHITE -#define CHECK_HL FALSE - -#define CHECK_SELECTED_FG COLOR_WHITE -#define CHECK_SELECTED_BG COLOR_BLUE -#define CHECK_SELECTED_HL TRUE - -#define UARROW_FG COLOR_GREEN -#define UARROW_BG COLOR_WHITE -#define UARROW_HL TRUE - -#define DARROW_FG COLOR_GREEN -#define DARROW_BG COLOR_WHITE -#define DARROW_HL TRUE - -/* End of default color definitions */ - -#define C_ATTR(x,y) ((x ? A_BOLD : 0) | COLOR_PAIR((y))) -#define COLOR_NAME_LEN 10 -#define COLOR_COUNT 8 - -/* - * Global variables - */ - -typedef struct { - char name[COLOR_NAME_LEN]; - int value; -} color_names_st; - -extern color_names_st color_names[]; -extern int color_table[][3]; diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/dialog.h b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/dialog.h deleted file mode 100644 index 7bab3ad0e1..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/dialog.h +++ /dev/null @@ -1,199 +0,0 @@ - -/* - * dialog.h -- common declarations for all dialog modules - * - * AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include -#include -#include -#include -#include - -#ifdef CURSES_LOC -#ifdef __sun__ -#define CURS_MACROS -#endif -#include CURSES_LOC - -/* - * Colors in ncurses 1.9.9e do not work properly since foreground and - * background colors are OR'd rather than separately masked. This version - * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible - * with standard curses. The simplest fix (to make this work with standard - * curses) uses the wbkgdset() function, not used in the original hack. - * Turn it off if we're building with 1.9.9e, since it just confuses things. - */ -#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE) -#define OLD_NCURSES 1 -#undef wbkgdset -#define wbkgdset(w,p) /*nothing*/ -#else -#define OLD_NCURSES 0 -#endif - -#define TR(params) _tracef params - -#define ESC 27 -#define TAB 9 -#define MAX_LEN 2048 -#define BUF_SIZE (10*1024) -#define MIN(x,y) (x < y ? x : y) -#define MAX(x,y) (x > y ? x : y) - - -#ifndef ACS_ULCORNER -#define ACS_ULCORNER '+' -#endif -#ifndef ACS_LLCORNER -#define ACS_LLCORNER '+' -#endif -#ifndef ACS_URCORNER -#define ACS_URCORNER '+' -#endif -#ifndef ACS_LRCORNER -#define ACS_LRCORNER '+' -#endif -#ifndef ACS_HLINE -#define ACS_HLINE '-' -#endif -#ifndef ACS_VLINE -#define ACS_VLINE '|' -#endif -#ifndef ACS_LTEE -#define ACS_LTEE '+' -#endif -#ifndef ACS_RTEE -#define ACS_RTEE '+' -#endif -#ifndef ACS_UARROW -#define ACS_UARROW '^' -#endif -#ifndef ACS_DARROW -#define ACS_DARROW 'v' -#endif - -/* - * Attribute names - */ -#define screen_attr attributes[0] -#define shadow_attr attributes[1] -#define dialog_attr attributes[2] -#define title_attr attributes[3] -#define border_attr attributes[4] -#define button_active_attr attributes[5] -#define button_inactive_attr attributes[6] -#define button_key_active_attr attributes[7] -#define button_key_inactive_attr attributes[8] -#define button_label_active_attr attributes[9] -#define button_label_inactive_attr attributes[10] -#define inputbox_attr attributes[11] -#define inputbox_border_attr attributes[12] -#define searchbox_attr attributes[13] -#define searchbox_title_attr attributes[14] -#define searchbox_border_attr attributes[15] -#define position_indicator_attr attributes[16] -#define menubox_attr attributes[17] -#define menubox_border_attr attributes[18] -#define item_attr attributes[19] -#define item_selected_attr attributes[20] -#define tag_attr attributes[21] -#define tag_selected_attr attributes[22] -#define tag_key_attr attributes[23] -#define tag_key_selected_attr attributes[24] -#define check_attr attributes[25] -#define check_selected_attr attributes[26] -#define uarrow_attr attributes[27] -#define darrow_attr attributes[28] - -/* number of attributes */ -#define ATTRIBUTE_COUNT 29 - -/* - * Global variables - */ -extern bool use_colors; - -extern chtype attributes[]; -#endif - -extern const char *backtitle; - -struct dialog_list_item { - char *name; - int namelen; - char *tag; - int selected; /* Set to 1 by dialog_*() function. */ -}; - -/* - * Function prototypes - */ - -void init_dialog (void); -void end_dialog (void); -void dialog_clear (void); -#ifdef CURSES_LOC -void attr_clear (WINDOW * win, int height, int width, chtype attr); -void color_setup (void); -void print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x); -void print_button (WINDOW * win, const char *label, int y, int x, int selected); -void draw_box (WINDOW * win, int y, int x, int height, int width, chtype box, - chtype border); -void draw_shadow (WINDOW * win, int y, int x, int height, int width); -#endif - -int first_alpha (const char *string, const char *exempt); -int dialog_yesno (const char *title, const char *prompt, int height, int width); -int dialog_msgbox (const char *title, const char *prompt, int height, - int width, int pause); -int dialog_textbox (const char *title, const char *file, int height, int width); -int dialog_menu (const char *title, const char *prompt, int height, int width, - int menu_height, const char *choice, int item_no, - struct dialog_list_item ** items); -int dialog_checklist (const char *title, const char *prompt, int height, - int width, int list_height, int item_no, - struct dialog_list_item ** items, int flag); -extern unsigned char dialog_input_result[]; -int dialog_inputbox (const char *title, const char *prompt, int height, - int width, const char *init); - -struct dialog_list_item *first_sel_item(int item_no, - struct dialog_list_item ** items); - -/* - * This is the base for fictitious keys, which activate - * the buttons. - * - * Mouse-generated keys are the following: - * -- the first 32 are used as numbers, in addition to '0'-'9' - * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o') - * -- uppercase chars are used to invoke the button (M_EVENT + 'O') - */ -#ifdef CURSES_LOC -#define M_EVENT (KEY_MAX+1) -#endif - - -/* - * The `flag' parameter in checklist is used to select between - * radiolist and checklist - */ -#define FLAG_CHECK 1 -#define FLAG_RADIO 0 diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/inputbox.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/inputbox.c deleted file mode 100644 index fa7bebc693..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/inputbox.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - * inputbox.c -- implements the input box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -unsigned char dialog_input_result[MAX_LEN + 1]; - -/* - * Print the termination buttons - */ -static void -print_buttons(WINDOW *dialog, int height, int width, int selected) -{ - int x = width / 2 - 11; - int y = height - 2; - - print_button (dialog, " Ok ", y, x, selected==0); - print_button (dialog, " Help ", y, x + 14, selected==1); - - wmove(dialog, y, x+1+14*selected); - wrefresh(dialog); -} - -/* - * Display a dialog box for inputing a string - */ -int -dialog_inputbox (const char *title, const char *prompt, int height, int width, - const char *init) -{ - int i, x, y, box_y, box_x, box_width; - int input_x = 0, scroll = 0, key = 0, button = -1; - unsigned char *instr = dialog_input_result; - WINDOW *dialog; - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - wattrset (dialog, border_attr); - mvwaddch (dialog, height-3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 3); - - /* Draw the input field box */ - box_width = width - 6; - getyx (dialog, y, x); - box_y = y + 2; - box_x = (width - box_width) / 2; - draw_box (dialog, y + 1, box_x - 1, 3, box_width + 2, - border_attr, dialog_attr); - - print_buttons(dialog, height, width, 0); - - /* Set up the initial value */ - wmove (dialog, box_y, box_x); - wattrset (dialog, inputbox_attr); - - if (!init) - instr[0] = '\0'; - else - strcpy (instr, init); - - input_x = strlen (instr); - - if (input_x >= box_width) { - scroll = input_x - box_width + 1; - input_x = box_width - 1; - for (i = 0; i < box_width - 1; i++) - waddch (dialog, instr[scroll + i]); - } else - waddstr (dialog, instr); - - wmove (dialog, box_y, box_x + input_x); - - wrefresh (dialog); - - while (key != ESC) { - key = wgetch (dialog); - - if (button == -1) { /* Input box selected */ - switch (key) { - case TAB: - case KEY_UP: - case KEY_DOWN: - break; - case KEY_LEFT: - continue; - case KEY_RIGHT: - continue; - case KEY_BACKSPACE: - case 127: - if (input_x || scroll) { - wattrset (dialog, inputbox_attr); - if (!input_x) { - scroll = scroll < box_width - 1 ? - 0 : scroll - (box_width - 1); - wmove (dialog, box_y, box_x); - for (i = 0; i < box_width; i++) - waddch (dialog, instr[scroll + input_x + i] ? - instr[scroll + input_x + i] : ' '); - input_x = strlen (instr) - scroll; - } else - input_x--; - instr[scroll + input_x] = '\0'; - mvwaddch (dialog, box_y, input_x + box_x, ' '); - wmove (dialog, box_y, input_x + box_x); - wrefresh (dialog); - } - continue; - default: - if (key < 0x100 && isprint (key)) { - if (scroll + input_x < MAX_LEN) { - wattrset (dialog, inputbox_attr); - instr[scroll + input_x] = key; - instr[scroll + input_x + 1] = '\0'; - if (input_x == box_width - 1) { - scroll++; - wmove (dialog, box_y, box_x); - for (i = 0; i < box_width - 1; i++) - waddch (dialog, instr[scroll + i]); - } else { - wmove (dialog, box_y, input_x++ + box_x); - waddch (dialog, key); - } - wrefresh (dialog); - } else - flash (); /* Alarm user about overflow */ - continue; - } - } - } - switch (key) { - case 'O': - case 'o': - delwin (dialog); - return 0; - case 'H': - case 'h': - delwin (dialog); - return 1; - case KEY_UP: - case KEY_LEFT: - switch (button) { - case -1: - button = 1; /* Indicates "Cancel" button is selected */ - print_buttons(dialog, height, width, 1); - break; - case 0: - button = -1; /* Indicates input box is selected */ - print_buttons(dialog, height, width, 0); - wmove (dialog, box_y, box_x + input_x); - wrefresh (dialog); - break; - case 1: - button = 0; /* Indicates "OK" button is selected */ - print_buttons(dialog, height, width, 0); - break; - } - break; - case TAB: - case KEY_DOWN: - case KEY_RIGHT: - switch (button) { - case -1: - button = 0; /* Indicates "OK" button is selected */ - print_buttons(dialog, height, width, 0); - break; - case 0: - button = 1; /* Indicates "Cancel" button is selected */ - print_buttons(dialog, height, width, 1); - break; - case 1: - button = -1; /* Indicates input box is selected */ - print_buttons(dialog, height, width, 0); - wmove (dialog, box_y, box_x + input_x); - wrefresh (dialog); - break; - } - break; - case ' ': - case '\n': - delwin (dialog); - return (button == -1 ? 0 : button); - case 'X': - case 'x': - key = ESC; - case ESC: - break; - } - } - - delwin (dialog); - return -1; /* ESC pressed */ -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/menubox.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/menubox.c deleted file mode 100644 index 873dc587b8..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/menubox.c +++ /dev/null @@ -1,438 +0,0 @@ -/* - * menubox.c -- implements the menu box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -/* - * Changes by Clifford Wolf (god@clifford.at) - * - * [ 1998-06-13 ] - * - * *) A bugfix for the Page-Down problem - * - * *) Formerly when I used Page Down and Page Up, the cursor would be set - * to the first position in the menu box. Now lxdialog is a bit - * smarter and works more like other menu systems (just have a look at - * it). - * - * *) Formerly if I selected something my scrolling would be broken because - * lxdialog is re-invoked by the Menuconfig shell script, can't - * remember the last scrolling position, and just sets it so that the - * cursor is at the bottom of the box. Now it writes the temporary file - * lxdialog.scrltmp which contains this information. The file is - * deleted by lxdialog if the user leaves a submenu or enters a new - * one, but it would be nice if Menuconfig could make another "rm -f" - * just to be sure. Just try it out - you will recognise a difference! - * - * [ 1998-06-14 ] - * - * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files - * and menus change their size on the fly. - * - * *) If for some reason the last scrolling position is not saved by - * lxdialog, it sets the scrolling so that the selected item is in the - * middle of the menu box, not at the bottom. - * - * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net) - * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus. - * This fixes a bug in Menuconfig where using ' ' to descend into menus - * would leave mis-synchronized lxdialog.scrltmp files lying around, - * fscanf would read in 'scroll', and eventually that value would get used. - */ - -#include "dialog.h" - -static int menu_width, item_x; - -/* - * Print menu item - */ -static void -print_item (WINDOW * win, const char *item, int choice, int selected, int hotkey) -{ - int j; - char menu_item[menu_width+1]; - - strncpy(menu_item, item, menu_width); - menu_item[menu_width] = 0; - j = first_alpha(menu_item, "YyNnMmHh"); - - /* Clear 'residue' of last item */ - wattrset (win, menubox_attr); - wmove (win, choice, 0); -#if OLD_NCURSES - { - int i; - for (i = 0; i < menu_width; i++) - waddch (win, ' '); - } -#else - wclrtoeol(win); -#endif - wattrset (win, selected ? item_selected_attr : item_attr); - mvwaddstr (win, choice, item_x, menu_item); - if (hotkey) { - wattrset (win, selected ? tag_key_selected_attr : tag_key_attr); - mvwaddch(win, choice, item_x+j, menu_item[j]); - } - if (selected) { - wmove (win, choice, item_x+1); - wrefresh (win); - } -} - -/* - * Print the scroll indicators. - */ -static void -print_arrows (WINDOW * win, int item_no, int scroll, - int y, int x, int height) -{ - int cur_y, cur_x; - - getyx(win, cur_y, cur_x); - - wmove(win, y, x); - - if (scroll > 0) { - wattrset (win, uarrow_attr); - waddch (win, ACS_UARROW); - waddstr (win, "(-)"); - } - else { - wattrset (win, menubox_attr); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - } - - y = y + height + 1; - wmove(win, y, x); - - if ((height < item_no) && (scroll + height < item_no)) { - wattrset (win, darrow_attr); - waddch (win, ACS_DARROW); - waddstr (win, "(+)"); - } - else { - wattrset (win, menubox_border_attr); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - waddch (win, ACS_HLINE); - } - - wmove(win, cur_y, cur_x); -} - -/* - * Display the termination buttons. - */ -static void -print_buttons (WINDOW *win, int height, int width, int selected) -{ - int x = width / 2 - 16; - int y = height - 2; - - print_button (win, "Select", y, x, selected == 0); - print_button (win, " Exit ", y, x + 12, selected == 1); - print_button (win, " Help ", y, x + 24, selected == 2); - - wmove(win, y, x+1+12*selected); - wrefresh (win); -} - -/* - * Display a menu for choosing among a number of options - */ -int -dialog_menu (const char *title, const char *prompt, int height, int width, - int menu_height, const char *current, int item_no, - struct dialog_list_item ** items) -{ - int i, j, x, y, box_x, box_y; - int key = 0, button = 0, scroll = 0, choice = 0, first_item = 0, max_choice; - WINDOW *dialog, *menu; - FILE *f; - - max_choice = MIN (menu_height, item_no); - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - wattrset (dialog, border_attr); - mvwaddch (dialog, height - 3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - wbkgdset (dialog, dialog_attr & A_COLOR); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 3); - - menu_width = width - 6; - box_y = height - menu_height - 5; - box_x = (width - menu_width) / 2 - 1; - - /* create new window for the menu */ - menu = subwin (dialog, menu_height, menu_width, - y + box_y + 1, x + box_x + 1); - keypad (menu, TRUE); - - /* draw a box around the menu items */ - draw_box (dialog, box_y, box_x, menu_height + 2, menu_width + 2, - menubox_border_attr, menubox_attr); - - /* - * Find length of longest item in order to center menu. - * Set 'choice' to default item. - */ - item_x = 0; - for (i = 0; i < item_no; i++) { - item_x = MAX (item_x, MIN(menu_width, strlen (items[i]->name) + 2)); - if (strcmp(current, items[i]->tag) == 0) choice = i; - } - - item_x = (menu_width - item_x) / 2; - - /* get the scroll info from the temp file */ - if ( (f=fopen("lxdialog.scrltmp","r")) != NULL ) { - if ( (fscanf(f,"%d\n",&scroll) == 1) && (scroll <= choice) && - (scroll+max_choice > choice) && (scroll >= 0) && - (scroll+max_choice <= item_no) ) { - first_item = scroll; - choice = choice - scroll; - fclose(f); - } else { - scroll=0; - remove("lxdialog.scrltmp"); - fclose(f); - f=NULL; - } - } - if ( (choice >= max_choice) || (f==NULL && choice >= max_choice/2) ) { - if (choice >= item_no-max_choice/2) - scroll = first_item = item_no-max_choice; - else - scroll = first_item = choice - max_choice/2; - choice = choice - scroll; - } - - /* Print the menu */ - for (i=0; i < max_choice; i++) { - print_item (menu, items[first_item + i]->name, i, i == choice, - (items[first_item + i]->tag[0] != ':')); - } - - wnoutrefresh (menu); - - print_arrows(dialog, item_no, scroll, - box_y, box_x+item_x+1, menu_height); - - print_buttons (dialog, height, width, 0); - wmove (menu, choice, item_x+1); - wrefresh (menu); - - while (key != ESC) { - key = wgetch(menu); - - if (key < 256 && isalpha(key)) key = tolower(key); - - if (strchr("ynmh", key)) - i = max_choice; - else { - for (i = choice+1; i < max_choice; i++) { - j = first_alpha(items[scroll + i]->name, "YyNnMmHh"); - if (key == tolower(items[scroll + i]->name[j])) - break; - } - if (i == max_choice) - for (i = 0; i < max_choice; i++) { - j = first_alpha(items[scroll + i]->name, "YyNnMmHh"); - if (key == tolower(items[scroll + i]->name[j])) - break; - } - } - - if (i < max_choice || - key == KEY_UP || key == KEY_DOWN || - key == '-' || key == '+' || - key == KEY_PPAGE || key == KEY_NPAGE) { - - print_item (menu, items[scroll + choice]->name, choice, FALSE, - (items[scroll + choice]->tag[0] != ':')); - - if (key == KEY_UP || key == '-') { - if (choice < 2 && scroll) { - /* Scroll menu down */ - scrollok (menu, TRUE); - wscrl (menu, -1); - scrollok (menu, FALSE); - - scroll--; - - print_item (menu, items[scroll]->name, 0, FALSE, - (items[scroll]->tag[0] != ':')); - } else - choice = MAX(choice - 1, 0); - - } else if (key == KEY_DOWN || key == '+') { - - print_item (menu, items[scroll + choice]->name, choice, FALSE, - (items[scroll + choice]->tag[0] != ':')); - - if ((choice > max_choice-3) && - (scroll + max_choice < item_no) - ) { - /* Scroll menu up */ - scrollok (menu, TRUE); - scroll (menu); - scrollok (menu, FALSE); - - scroll++; - - print_item (menu, items[scroll + max_choice - 1]->name, - max_choice-1, FALSE, - (items[scroll + max_choice - 1]->tag[0] != ':')); - } else - choice = MIN(choice+1, max_choice-1); - - } else if (key == KEY_PPAGE) { - scrollok (menu, TRUE); - for (i=0; (i < max_choice); i++) { - if (scroll > 0) { - wscrl (menu, -1); - scroll--; - print_item (menu, items[scroll]->name, 0, FALSE, - (items[scroll]->tag[0] != ':')); - } else { - if (choice > 0) - choice--; - } - } - scrollok (menu, FALSE); - - } else if (key == KEY_NPAGE) { - for (i=0; (i < max_choice); i++) { - if (scroll+max_choice < item_no) { - scrollok (menu, TRUE); - scroll(menu); - scrollok (menu, FALSE); - scroll++; - print_item (menu, items[scroll + max_choice - 1]->name, - max_choice-1, FALSE, - (items[scroll + max_choice - 1]->tag[0] != ':')); - } else { - if (choice+1 < max_choice) - choice++; - } - } - - } else - choice = i; - - print_item (menu, items[scroll + choice]->name, choice, TRUE, - (items[scroll + choice]->tag[0] != ':')); - - print_arrows(dialog, item_no, scroll, - box_y, box_x+item_x+1, menu_height); - - wnoutrefresh (dialog); - wrefresh (menu); - - continue; /* wait for another key press */ - } - - switch (key) { - case KEY_LEFT: - case TAB: - case KEY_RIGHT: - button = ((key == KEY_LEFT ? --button : ++button) < 0) - ? 2 : (button > 2 ? 0 : button); - - print_buttons(dialog, height, width, button); - wrefresh (menu); - break; - case ' ': - case 's': - case 'y': - case 'n': - case 'm': - case '/': - /* save scroll info */ - if ( (f=fopen("lxdialog.scrltmp","w")) != NULL ) { - fprintf(f,"%d\n",scroll); - fclose(f); - } - delwin (dialog); - items[scroll + choice]->selected = 1; - switch (key) { - case 's': return 3; - case 'y': return 3; - case 'n': return 4; - case 'm': return 5; - case ' ': return 6; - case '/': return 7; - } - return 0; - case 'h': - case '?': - button = 2; - case '\n': - delwin (dialog); - items[scroll + choice]->selected = 1; - - remove("lxdialog.scrltmp"); - return button; - case 'e': - case 'x': - key = ESC; - case ESC: - break; - } - } - - delwin (dialog); - remove("lxdialog.scrltmp"); - return -1; /* ESC pressed */ -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/msgbox.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/msgbox.c deleted file mode 100644 index 93692e1fbc..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/msgbox.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * msgbox.c -- implements the message box and info box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -/* - * Display a message box. Program will pause and display an "OK" button - * if the parameter 'pause' is non-zero. - */ -int -dialog_msgbox (const char *title, const char *prompt, int height, int width, - int pause) -{ - int i, x, y, key = 0; - WINDOW *dialog; - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 2); - - if (pause) { - wattrset (dialog, border_attr); - mvwaddch (dialog, height - 3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - waddch (dialog, ACS_RTEE); - - print_button (dialog, " Ok ", - height - 2, width / 2 - 4, TRUE); - - wrefresh (dialog); - while (key != ESC && key != '\n' && key != ' ' && - key != 'O' && key != 'o' && key != 'X' && key != 'x') - key = wgetch (dialog); - } else { - key = '\n'; - wrefresh (dialog); - } - - delwin (dialog); - return key == ESC ? -1 : 0; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/textbox.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/textbox.c deleted file mode 100644 index a5a460b5cc..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/textbox.c +++ /dev/null @@ -1,556 +0,0 @@ -/* - * textbox.c -- implements the text box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -static void back_lines (int n); -static void print_page (WINDOW * win, int height, int width); -static void print_line (WINDOW * win, int row, int width); -static char *get_line (void); -static void print_position (WINDOW * win, int height, int width); - -static int hscroll, fd, file_size, bytes_read; -static int begin_reached = 1, end_reached, page_length; -static char *buf, *page; - -/* - * Display text from a file in a dialog box. - */ -int -dialog_textbox (const char *title, const char *file, int height, int width) -{ - int i, x, y, cur_x, cur_y, fpos, key = 0; - int passed_end; - char search_term[MAX_LEN + 1]; - WINDOW *dialog, *text; - - search_term[0] = '\0'; /* no search term entered yet */ - - /* Open input file for reading */ - if ((fd = open (file, O_RDONLY)) == -1) { - endwin (); - fprintf (stderr, - "\nCan't open input file in dialog_textbox().\n"); - exit (-1); - } - /* Get file size. Actually, 'file_size' is the real file size - 1, - since it's only the last byte offset from the beginning */ - if ((file_size = lseek (fd, 0, SEEK_END)) == -1) { - endwin (); - fprintf (stderr, "\nError getting file size in dialog_textbox().\n"); - exit (-1); - } - /* Restore file pointer to beginning of file after getting file size */ - if (lseek (fd, 0, SEEK_SET) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in dialog_textbox().\n"); - exit (-1); - } - /* Allocate space for read buffer */ - if ((buf = malloc (BUF_SIZE + 1)) == NULL) { - endwin (); - fprintf (stderr, "\nCan't allocate memory in dialog_textbox().\n"); - exit (-1); - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, "\nError reading file in dialog_textbox().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; /* mark end of valid data */ - page = buf; /* page is pointer to start of page to be displayed */ - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - /* Create window for text region, used for scrolling text */ - text = subwin (dialog, height - 4, width - 2, y + 1, x + 1); - wattrset (text, dialog_attr); - wbkgdset (text, dialog_attr & A_COLOR); - - keypad (text, TRUE); - - /* register the new window, along with its borders */ - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - - wattrset (dialog, border_attr); - mvwaddch (dialog, height-3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - wbkgdset (dialog, dialog_attr & A_COLOR); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - print_button (dialog, " Exit ", height - 2, width / 2 - 4, TRUE); - wnoutrefresh (dialog); - getyx (dialog, cur_y, cur_x); /* Save cursor position */ - - /* Print first page of text */ - attr_clear (text, height - 4, width - 2, dialog_attr); - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - - while ((key != ESC) && (key != '\n')) { - key = wgetch (dialog); - switch (key) { - case 'E': /* Exit */ - case 'e': - case 'X': - case 'x': - delwin (dialog); - free (buf); - close (fd); - return 0; - case 'g': /* First page */ - case KEY_HOME: - if (!begin_reached) { - begin_reached = 1; - /* First page not in buffer? */ - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, - "\nError moving file pointer in dialog_textbox().\n"); - exit (-1); - } - if (fpos > bytes_read) { /* Yes, we have to read it in */ - if (lseek (fd, 0, SEEK_SET) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in " - "dialog_textbox().\n"); - exit (-1); - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, - "\nError reading file in dialog_textbox().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - } - page = buf; - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - } - break; - case 'G': /* Last page */ - case KEY_END: - - end_reached = 1; - /* Last page not in buffer? */ - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, - "\nError moving file pointer in dialog_textbox().\n"); - exit (-1); - } - if (fpos < file_size) { /* Yes, we have to read it in */ - if (lseek (fd, -BUF_SIZE, SEEK_END) == -1) { - endwin (); - fprintf (stderr, - "\nError moving file pointer in dialog_textbox().\n"); - exit (-1); - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, - "\nError reading file in dialog_textbox().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - } - page = buf + bytes_read; - back_lines (height - 4); - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - break; - case 'K': /* Previous line */ - case 'k': - case KEY_UP: - if (!begin_reached) { - back_lines (page_length + 1); - - /* We don't call print_page() here but use scrolling to ensure - faster screen update. However, 'end_reached' and - 'page_length' should still be updated, and 'page' should - point to start of next page. This is done by calling - get_line() in the following 'for' loop. */ - scrollok (text, TRUE); - wscrl (text, -1); /* Scroll text region down one line */ - scrollok (text, FALSE); - page_length = 0; - passed_end = 0; - for (i = 0; i < height - 4; i++) { - if (!i) { - /* print first line of page */ - print_line (text, 0, width - 2); - wnoutrefresh (text); - } else - /* Called to update 'end_reached' and 'page' */ - get_line (); - if (!passed_end) - page_length++; - if (end_reached && !passed_end) - passed_end = 1; - } - - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - } - break; - case 'B': /* Previous page */ - case 'b': - case KEY_PPAGE: - if (begin_reached) - break; - back_lines (page_length + height - 4); - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); - wrefresh (dialog); - break; - case 'J': /* Next line */ - case 'j': - case KEY_DOWN: - if (!end_reached) { - begin_reached = 0; - scrollok (text, TRUE); - scroll (text); /* Scroll text region up one line */ - scrollok (text, FALSE); - print_line (text, height - 5, width - 2); - wnoutrefresh (text); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); /* Restore cursor position */ - wrefresh (dialog); - } - break; - case KEY_NPAGE: /* Next page */ - case ' ': - if (end_reached) - break; - - begin_reached = 0; - print_page (text, height - 4, width - 2); - print_position (dialog, height, width); - wmove (dialog, cur_y, cur_x); - wrefresh (dialog); - break; - case '0': /* Beginning of line */ - case 'H': /* Scroll left */ - case 'h': - case KEY_LEFT: - if (hscroll <= 0) - break; - - if (key == '0') - hscroll = 0; - else - hscroll--; - /* Reprint current page to scroll horizontally */ - back_lines (page_length); - print_page (text, height - 4, width - 2); - wmove (dialog, cur_y, cur_x); - wrefresh (dialog); - break; - case 'L': /* Scroll right */ - case 'l': - case KEY_RIGHT: - if (hscroll >= MAX_LEN) - break; - hscroll++; - /* Reprint current page to scroll horizontally */ - back_lines (page_length); - print_page (text, height - 4, width - 2); - wmove (dialog, cur_y, cur_x); - wrefresh (dialog); - break; - case ESC: - break; - } - } - - delwin (dialog); - free (buf); - close (fd); - return 1; /* ESC pressed */ -} - -/* - * Go back 'n' lines in text file. Called by dialog_textbox(). - * 'page' will be updated to point to the desired line in 'buf'. - */ -static void -back_lines (int n) -{ - int i, fpos; - - begin_reached = 0; - /* We have to distinguish between end_reached and !end_reached - since at end of file, the line is not ended by a '\n'. - The code inside 'if' basically does a '--page' to move one - character backward so as to skip '\n' of the previous line */ - if (!end_reached) { - /* Either beginning of buffer or beginning of file reached? */ - if (page == buf) { - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in " - "back_lines().\n"); - exit (-1); - } - if (fpos > bytes_read) { /* Not beginning of file yet */ - /* We've reached beginning of buffer, but not beginning of - file yet, so read previous part of file into buffer. - Note that we only move backward for BUF_SIZE/2 bytes, - but not BUF_SIZE bytes to avoid re-reading again in - print_page() later */ - /* Really possible to move backward BUF_SIZE/2 bytes? */ - if (fpos < BUF_SIZE / 2 + bytes_read) { - /* No, move less then */ - if (lseek (fd, 0, SEEK_SET) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in " - "back_lines().\n"); - exit (-1); - } - page = buf + fpos - bytes_read; - } else { /* Move backward BUF_SIZE/2 bytes */ - if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR) - == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer " - "in back_lines().\n"); - exit (-1); - } - page = buf + BUF_SIZE / 2; - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, "\nError reading file in back_lines().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - } else { /* Beginning of file reached */ - begin_reached = 1; - return; - } - } - if (*(--page) != '\n') { /* '--page' here */ - /* Something's wrong... */ - endwin (); - fprintf (stderr, "\nInternal error in back_lines().\n"); - exit (-1); - } - } - /* Go back 'n' lines */ - for (i = 0; i < n; i++) - do { - if (page == buf) { - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, - "\nError moving file pointer in back_lines().\n"); - exit (-1); - } - if (fpos > bytes_read) { - /* Really possible to move backward BUF_SIZE/2 bytes? */ - if (fpos < BUF_SIZE / 2 + bytes_read) { - /* No, move less then */ - if (lseek (fd, 0, SEEK_SET) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer " - "in back_lines().\n"); - exit (-1); - } - page = buf + fpos - bytes_read; - } else { /* Move backward BUF_SIZE/2 bytes */ - if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), - SEEK_CUR) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer" - " in back_lines().\n"); - exit (-1); - } - page = buf + BUF_SIZE / 2; - } - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, "\nError reading file in " - "back_lines().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - } else { /* Beginning of file reached */ - begin_reached = 1; - return; - } - } - } while (*(--page) != '\n'); - page++; -} - -/* - * Print a new page of text. Called by dialog_textbox(). - */ -static void -print_page (WINDOW * win, int height, int width) -{ - int i, passed_end = 0; - - page_length = 0; - for (i = 0; i < height; i++) { - print_line (win, i, width); - if (!passed_end) - page_length++; - if (end_reached && !passed_end) - passed_end = 1; - } - wnoutrefresh (win); -} - -/* - * Print a new line of text. Called by dialog_textbox() and print_page(). - */ -static void -print_line (WINDOW * win, int row, int width) -{ - int y, x; - char *line; - - line = get_line (); - line += MIN (strlen (line), hscroll); /* Scroll horizontally */ - wmove (win, row, 0); /* move cursor to correct line */ - waddch (win, ' '); - waddnstr (win, line, MIN (strlen (line), width - 2)); - - getyx (win, y, x); - /* Clear 'residue' of previous line */ -#if OLD_NCURSES - { - int i; - for (i = 0; i < width - x; i++) - waddch (win, ' '); - } -#else - wclrtoeol(win); -#endif -} - -/* - * Return current line of text. Called by dialog_textbox() and print_line(). - * 'page' should point to start of current line before calling, and will be - * updated to point to start of next line. - */ -static char * -get_line (void) -{ - int i = 0, fpos; - static char line[MAX_LEN + 1]; - - end_reached = 0; - while (*page != '\n') { - if (*page == '\0') { - /* Either end of file or end of buffer reached */ - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in " - "get_line().\n"); - exit (-1); - } - if (fpos < file_size) { /* Not end of file yet */ - /* We've reached end of buffer, but not end of file yet, - so read next part of file into buffer */ - if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) { - endwin (); - fprintf (stderr, "\nError reading file in get_line().\n"); - exit (-1); - } - buf[bytes_read] = '\0'; - page = buf; - } else { - if (!end_reached) - end_reached = 1; - break; - } - } else if (i < MAX_LEN) - line[i++] = *(page++); - else { - /* Truncate lines longer than MAX_LEN characters */ - if (i == MAX_LEN) - line[i++] = '\0'; - page++; - } - } - if (i <= MAX_LEN) - line[i] = '\0'; - if (!end_reached) - page++; /* move pass '\n' */ - - return line; -} - -/* - * Print current position - */ -static void -print_position (WINDOW * win, int height, int width) -{ - int fpos, percent; - - if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) { - endwin (); - fprintf (stderr, "\nError moving file pointer in print_position().\n"); - exit (-1); - } - wattrset (win, position_indicator_attr); - wbkgdset (win, position_indicator_attr & A_COLOR); - percent = !file_size ? - 100 : ((fpos - bytes_read + page - buf) * 100) / file_size; - wmove (win, height - 3, width - 9); - wprintw (win, "(%3d%%)", percent); -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/util.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/util.c deleted file mode 100644 index 6f83951b90..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/util.c +++ /dev/null @@ -1,375 +0,0 @@ -/* - * util.c - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - - -/* use colors by default? */ -bool use_colors = 1; - -const char *backtitle = NULL; - -const char *dialog_result; - -/* - * Attribute values, default is for mono display - */ -chtype attributes[] = -{ - A_NORMAL, /* screen_attr */ - A_NORMAL, /* shadow_attr */ - A_NORMAL, /* dialog_attr */ - A_BOLD, /* title_attr */ - A_NORMAL, /* border_attr */ - A_REVERSE, /* button_active_attr */ - A_DIM, /* button_inactive_attr */ - A_REVERSE, /* button_key_active_attr */ - A_BOLD, /* button_key_inactive_attr */ - A_REVERSE, /* button_label_active_attr */ - A_NORMAL, /* button_label_inactive_attr */ - A_NORMAL, /* inputbox_attr */ - A_NORMAL, /* inputbox_border_attr */ - A_NORMAL, /* searchbox_attr */ - A_BOLD, /* searchbox_title_attr */ - A_NORMAL, /* searchbox_border_attr */ - A_BOLD, /* position_indicator_attr */ - A_NORMAL, /* menubox_attr */ - A_NORMAL, /* menubox_border_attr */ - A_NORMAL, /* item_attr */ - A_REVERSE, /* item_selected_attr */ - A_BOLD, /* tag_attr */ - A_REVERSE, /* tag_selected_attr */ - A_BOLD, /* tag_key_attr */ - A_REVERSE, /* tag_key_selected_attr */ - A_BOLD, /* check_attr */ - A_REVERSE, /* check_selected_attr */ - A_BOLD, /* uarrow_attr */ - A_BOLD /* darrow_attr */ -}; - - -#include "colors.h" - -/* - * Table of color values - */ -int color_table[][3] = -{ - {SCREEN_FG, SCREEN_BG, SCREEN_HL}, - {SHADOW_FG, SHADOW_BG, SHADOW_HL}, - {DIALOG_FG, DIALOG_BG, DIALOG_HL}, - {TITLE_FG, TITLE_BG, TITLE_HL}, - {BORDER_FG, BORDER_BG, BORDER_HL}, - {BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL}, - {BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL}, - {BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL}, - {BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG, BUTTON_KEY_INACTIVE_HL}, - {BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG, BUTTON_LABEL_ACTIVE_HL}, - {BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG, - BUTTON_LABEL_INACTIVE_HL}, - {INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL}, - {INPUTBOX_BORDER_FG, INPUTBOX_BORDER_BG, INPUTBOX_BORDER_HL}, - {SEARCHBOX_FG, SEARCHBOX_BG, SEARCHBOX_HL}, - {SEARCHBOX_TITLE_FG, SEARCHBOX_TITLE_BG, SEARCHBOX_TITLE_HL}, - {SEARCHBOX_BORDER_FG, SEARCHBOX_BORDER_BG, SEARCHBOX_BORDER_HL}, - {POSITION_INDICATOR_FG, POSITION_INDICATOR_BG, POSITION_INDICATOR_HL}, - {MENUBOX_FG, MENUBOX_BG, MENUBOX_HL}, - {MENUBOX_BORDER_FG, MENUBOX_BORDER_BG, MENUBOX_BORDER_HL}, - {ITEM_FG, ITEM_BG, ITEM_HL}, - {ITEM_SELECTED_FG, ITEM_SELECTED_BG, ITEM_SELECTED_HL}, - {TAG_FG, TAG_BG, TAG_HL}, - {TAG_SELECTED_FG, TAG_SELECTED_BG, TAG_SELECTED_HL}, - {TAG_KEY_FG, TAG_KEY_BG, TAG_KEY_HL}, - {TAG_KEY_SELECTED_FG, TAG_KEY_SELECTED_BG, TAG_KEY_SELECTED_HL}, - {CHECK_FG, CHECK_BG, CHECK_HL}, - {CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL}, - {UARROW_FG, UARROW_BG, UARROW_HL}, - {DARROW_FG, DARROW_BG, DARROW_HL}, -}; /* color_table */ - -/* - * Set window to attribute 'attr' - */ -void -attr_clear (WINDOW * win, int height, int width, chtype attr) -{ - int i, j; - - wattrset (win, attr); - for (i = 0; i < height; i++) { - wmove (win, i, 0); - for (j = 0; j < width; j++) - waddch (win, ' '); - } - touchwin (win); -} - -void dialog_clear (void) -{ - attr_clear (stdscr, LINES, COLS, screen_attr); - /* Display background title if it exists ... - SLH */ - if (backtitle != NULL) { - int i; - - wattrset (stdscr, screen_attr); - mvwaddstr (stdscr, 0, 1, (char *)backtitle); - wmove (stdscr, 1, 1); - for (i = 1; i < COLS - 1; i++) - waddch (stdscr, ACS_HLINE); - } - wnoutrefresh (stdscr); -} - -/* - * Do some initialization for dialog - */ -void -init_dialog (void) -{ - initscr (); /* Init curses */ - keypad (stdscr, TRUE); - cbreak (); - noecho (); - - - if (use_colors) /* Set up colors */ - color_setup (); - - - dialog_clear (); -} - -/* - * Setup for color display - */ -void -color_setup (void) -{ - int i; - - if (has_colors ()) { /* Terminal supports color? */ - start_color (); - - /* Initialize color pairs */ - for (i = 0; i < ATTRIBUTE_COUNT; i++) - init_pair (i + 1, color_table[i][0], color_table[i][1]); - - /* Setup color attributes */ - for (i = 0; i < ATTRIBUTE_COUNT; i++) - attributes[i] = C_ATTR (color_table[i][2], i + 1); - } -} - -/* - * End using dialog functions. - */ -void -end_dialog (void) -{ - endwin (); -} - - -/* - * Print a string of text in a window, automatically wrap around to the - * next line if the string is too long to fit on one line. Newline - * characters '\n' are replaced by spaces. We start on a new line - * if there is no room for at least 4 nonblanks following a double-space. - */ -void -print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x) -{ - int newl, cur_x, cur_y; - int i, prompt_len, room, wlen; - char tempstr[MAX_LEN + 1], *word, *sp, *sp2; - - strcpy (tempstr, prompt); - - prompt_len = strlen(tempstr); - - /* - * Remove newlines - */ - for(i=0; i room || - (newl && wlen < 4 && sp && wlen+1+strlen(sp) > room - && (!(sp2 = index(sp, ' ')) || wlen+1+(sp2-sp) > room))) { - cur_y++; - cur_x = x; - } - wmove (win, cur_y, cur_x); - waddstr (win, word); - getyx (win, cur_y, cur_x); - cur_x++; - if (sp && *sp == ' ') { - cur_x++; /* double space */ - while (*++sp == ' '); - newl = 1; - } else - newl = 0; - word = sp; - } - } -} - -/* - * Print a button - */ -void -print_button (WINDOW * win, const char *label, int y, int x, int selected) -{ - int i, temp; - - wmove (win, y, x); - wattrset (win, selected ? button_active_attr : button_inactive_attr); - waddstr (win, "<"); - temp = strspn (label, " "); - label += temp; - wattrset (win, selected ? button_label_active_attr - : button_label_inactive_attr); - for (i = 0; i < temp; i++) - waddch (win, ' '); - wattrset (win, selected ? button_key_active_attr - : button_key_inactive_attr); - waddch (win, label[0]); - wattrset (win, selected ? button_label_active_attr - : button_label_inactive_attr); - waddstr (win, (char *)label + 1); - wattrset (win, selected ? button_active_attr : button_inactive_attr); - waddstr (win, ">"); - wmove (win, y, x + temp + 1); -} - -/* - * Draw a rectangular box with line drawing characters - */ -void -draw_box (WINDOW * win, int y, int x, int height, int width, - chtype box, chtype border) -{ - int i, j; - - wattrset (win, 0); - for (i = 0; i < height; i++) { - wmove (win, y + i, x); - for (j = 0; j < width; j++) - if (!i && !j) - waddch (win, border | ACS_ULCORNER); - else if (i == height - 1 && !j) - waddch (win, border | ACS_LLCORNER); - else if (!i && j == width - 1) - waddch (win, box | ACS_URCORNER); - else if (i == height - 1 && j == width - 1) - waddch (win, box | ACS_LRCORNER); - else if (!i) - waddch (win, border | ACS_HLINE); - else if (i == height - 1) - waddch (win, box | ACS_HLINE); - else if (!j) - waddch (win, border | ACS_VLINE); - else if (j == width - 1) - waddch (win, box | ACS_VLINE); - else - waddch (win, box | ' '); - } -} - -/* - * Draw shadows along the right and bottom edge to give a more 3D look - * to the boxes - */ -void -draw_shadow (WINDOW * win, int y, int x, int height, int width) -{ - int i; - - if (has_colors ()) { /* Whether terminal supports color? */ - wattrset (win, shadow_attr); - wmove (win, y + height, x + 2); - for (i = 0; i < width; i++) - waddch (win, winch (win) & A_CHARTEXT); - for (i = y + 1; i < y + height + 1; i++) { - wmove (win, i, x + width); - waddch (win, winch (win) & A_CHARTEXT); - waddch (win, winch (win) & A_CHARTEXT); - } - wnoutrefresh (win); - } -} - -/* - * Return the position of the first alphabetic character in a string. - */ -int -first_alpha(const char *string, const char *exempt) -{ - int i, in_paren=0, c; - - for (i = 0; i < strlen(string); i++) { - c = tolower(string[i]); - - if (strchr("<[(", c)) ++in_paren; - if (strchr(">])", c) && in_paren > 0) --in_paren; - - if ((! in_paren) && isalpha(c) && - strchr(exempt, c) == 0) - return i; - } - - return 0; -} - -/* - * Get the first selected item in the dialog_list_item list. - */ -struct dialog_list_item * -first_sel_item(int item_no, struct dialog_list_item ** items) -{ - int i; - - for (i = 0; i < item_no; i++) { - if (items[i]->selected) - return items[i]; - } - - return NULL; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/yesno.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/yesno.c deleted file mode 100644 index 11fcc25f51..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/lxdialog/yesno.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * yesno.c -- implements the yes/no box - * - * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) - * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "dialog.h" - -/* - * Display termination buttons - */ -static void -print_buttons(WINDOW *dialog, int height, int width, int selected) -{ - int x = width / 2 - 10; - int y = height - 2; - - print_button (dialog, " Yes ", y, x, selected == 0); - print_button (dialog, " No ", y, x + 13, selected == 1); - - wmove(dialog, y, x+1 + 13*selected ); - wrefresh (dialog); -} - -/* - * Display a dialog box with two buttons - Yes and No - */ -int -dialog_yesno (const char *title, const char *prompt, int height, int width) -{ - int i, x, y, key = 0, button = 0; - WINDOW *dialog; - - /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; - - draw_shadow (stdscr, y, x, height, width); - - dialog = newwin (height, width, y, x); - keypad (dialog, TRUE); - - draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr); - wattrset (dialog, border_attr); - mvwaddch (dialog, height-3, 0, ACS_LTEE); - for (i = 0; i < width - 2; i++) - waddch (dialog, ACS_HLINE); - wattrset (dialog, dialog_attr); - waddch (dialog, ACS_RTEE); - - if (title != NULL && strlen(title) >= width-2 ) { - /* truncate long title -- mec */ - char * title2 = malloc(width-2+1); - memcpy( title2, title, width-2 ); - title2[width-2] = '\0'; - title = title2; - } - - if (title != NULL) { - wattrset (dialog, title_attr); - mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' '); - waddstr (dialog, (char *)title); - waddch (dialog, ' '); - } - - wattrset (dialog, dialog_attr); - print_autowrap (dialog, prompt, width - 2, 1, 3); - - print_buttons(dialog, height, width, 0); - - while (key != ESC) { - key = wgetch (dialog); - switch (key) { - case 'Y': - case 'y': - delwin (dialog); - return 0; - case 'N': - case 'n': - delwin (dialog); - return 1; - - case TAB: - case KEY_LEFT: - case KEY_RIGHT: - button = ((key == KEY_LEFT ? --button : ++button) < 0) - ? 1 : (button > 1 ? 0 : button); - - print_buttons(dialog, height, width, button); - wrefresh (dialog); - break; - case ' ': - case '\n': - delwin (dialog); - return button; - case ESC: - break; - } - } - - delwin (dialog); - return -1; /* ESC pressed */ -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mconf.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mconf.c deleted file mode 100644 index 406eb29c3b..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mconf.c +++ /dev/null @@ -1,977 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - * - * Introduced single menu mode (show all sub-menus in one large tree). - * 2002-11-06 Petr Baudis - * - * Directly use liblxdialog library routines. - * 2002-11-14 Petr Baudis - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "lxdialog/dialog.h" - -#define LKC_DIRECT_LINK -#include "lkc.h" - -static char menu_backtitle[128]; -static const char mconf_readme[] = -"Overview\n" -"--------\n" -"Some features may be built directly into axTLS. Some features\n" -"may be completely removed altogether. There are also certain\n" -"parameters which are not really features, but must be\n" -"entered in as decimal or hexadecimal numbers or possibly text.\n" -"\n" -"Menu items beginning with [*] or [ ] represent features\n" -"configured to be built in or removed respectively.\n" -"\n" -"To change any of these features, highlight it with the cursor\n" -"keys and press to build it in or to removed it.\n" -"You may also press the to cycle\n" -"through the available options (ie. Y->N->Y).\n" -"\n" -"Some additional keyboard hints:\n" -"\n" -"Menus\n" -"----------\n" -"o Use the Up/Down arrow keys (cursor keys) to highlight the item\n" -" you wish to change or submenu wish to select and press .\n" -" Submenus are designated by \"--->\".\n" -"\n" -" Shortcut: Press the option's highlighted letter (hotkey).\n" -" Pressing a hotkey more than once will sequence\n" -" through all visible items which use that hotkey.\n" -"\n" -" You may also use the and keys to scroll\n" -" unseen options into view.\n" -"\n" -"o To exit a menu use the cursor keys to highlight the button\n" -" and press .\n" -"\n" -" Shortcut: Press or or if there is no hotkey\n" -" using those letters. You may press a single , but\n" -" there is a delayed response which you may find annoying.\n" -"\n" -" Also, the and cursor keys will cycle between and\n" -" \n" -"\n" -"\n" -"Data Entry\n" -"-----------\n" -"o Enter the requested information and press \n" -" If you are entering hexadecimal values, it is not necessary to\n" -" add the '0x' prefix to the entry.\n" -"\n" -"o For help, use the or cursor keys to highlight the help option\n" -" and press . You can try as well.\n" -"\n" -"\n" -"Text Box (Help Window)\n" -"--------\n" -"o Use the cursor keys to scroll up/down/left/right. The VI editor\n" -" keys h,j,k,l function here as do and for those\n" -" who are familiar with less and lynx.\n" -"\n" -"o Press , , or to exit.\n" -"\n" -"\n" -"Alternate Configuration Files\n" -"-----------------------------\n" -"Menuconfig supports the use of alternate configuration files for\n" -"those who, for various reasons, find it necessary to switch\n" -"between different configurations.\n" -"\n" -"At the end of the main menu you will find two options. One is\n" -"for saving the current configuration to a file of your choosing.\n" -"The other option is for loading a previously saved alternate\n" -"configuration.\n" -"\n" -"Even if you don't use alternate configuration files, but you\n" -"find during a Menuconfig session that you have completely messed\n" -"up your settings, you may use the \"Load Alternate...\" option to\n" -"restore your previously saved settings from \".config\" without\n" -"restarting Menuconfig.\n" -"\n" -"Other information\n" -"-----------------\n" -"If you use Menuconfig in an XTERM window make sure you have your\n" -"$TERM variable set to point to a xterm definition which supports color.\n" -"Otherwise, Menuconfig will look rather bad. Menuconfig will not\n" -"display correctly in a RXVT window because rxvt displays only one\n" -"intensity of color, bright.\n" -"\n" -"Menuconfig will display larger menus on screens or xterms which are\n" -"set to display more than the standard 25 row by 80 column geometry.\n" -"In order for this to work, the \"stty size\" command must be able to\n" -"display the screen's current row and column geometry. I STRONGLY\n" -"RECOMMEND that you make sure you do NOT have the shell variables\n" -"LINES and COLUMNS exported into your environment. Some distributions\n" -"export those variables via /etc/profile. Some ncurses programs can\n" -"become confused when those variables (LINES & COLUMNS) don't reflect\n" -"the true screen size.\n" -"\n" -"Optional personality available\n" -"------------------------------\n" -"If you prefer to have all of the options listed in a single\n" -"menu, rather than the default multimenu hierarchy, run the menuconfig\n" -"with MENUCONFIG_MODE environment variable set to single_menu. Example:\n" -"\n" -"make MENUCONFIG_MODE=single_menu menuconfig\n" -"\n" -" will then unroll the appropriate category, or enfold it if it\n" -"is already unrolled.\n" -"\n" -"Note that this mode can eventually be a little more CPU expensive\n" -"(especially with a larger number of unrolled categories) than the\n" -"default mode.\n", -menu_instructions[] = - "Arrow keys navigate the menu. " - " selects submenus --->. " - "Highlighted letters are hotkeys. " - "Pressing selectes a feature, while will exclude a feature. " - "Press to exit, for Help, for Search. " - "Legend: [*] feature is selected [ ] feature is excluded", -radiolist_instructions[] = - "Use the arrow keys to navigate this window or " - "press the hotkey of the item you wish to select " - "followed by the . " - "Press for additional information about this option.", -inputbox_instructions_int[] = - "Please enter a decimal value. " - "Fractions will not be accepted. " - "Use the key to move from the input field to the buttons below it.", -inputbox_instructions_hex[] = - "Please enter a hexadecimal value. " - "Use the key to move from the input field to the buttons below it.", -inputbox_instructions_string[] = - "Please enter a string value. " - "Use the key to move from the input field to the buttons below it.", -setmod_text[] = - "This feature depends on another which has been configured as a module.\n" - "As a result, this feature will be built as a module.", -nohelp_text[] = - "There is no help available for this option.\n", -load_config_text[] = - "Enter the name of the configuration file you wish to load. " - "Accept the name shown to restore the configuration you " - "last retrieved. Leave blank to abort.", -load_config_help[] = - "\n" - "For various reasons, one may wish to keep several different axTLS\n" - "configurations available on a single machine.\n" - "\n" - "If you have saved a previous configuration in a file other than the\n" - "axTLS's default, entering the name of the file here will allow you\n" - "to modify that configuration.\n" - "\n" - "If you are uncertain, then you have probably never used alternate\n" - "configuration files. You should therefor leave this blank to abort.\n", -save_config_text[] = - "Enter a filename to which this configuration should be saved " - "as an alternate. Leave blank to abort.", -save_config_help[] = - "\n" - "For various reasons, one may wish to keep different axTLS\n" - "configurations available on a single machine.\n" - "\n" - "Entering a file name here will allow you to later retrieve, modify\n" - "and use the current configuration as an alternate to whatever\n" - "configuration options you have selected at that time.\n" - "\n" - "If you are uncertain what all this means then you should probably\n" - "leave this blank.\n", -search_help[] = - "\n" - "Search for CONFIG_ symbols and display their relations.\n" - "Example: search for \"^FOO\"\n" - "Result:\n" - "-----------------------------------------------------------------\n" - "Symbol: FOO [=m]\n" - "Prompt: Foo bus is used to drive the bar HW\n" - "Defined at drivers/pci/Kconfig:47\n" - "Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" - "Location:\n" - " -> Bus options (PCI, PCMCIA, EISA, MCA, ISA)\n" - " -> PCI support (PCI [=y])\n" - " -> PCI access mode ( [=y])\n" - "Selects: LIBCRC32\n" - "Selected by: BAR\n" - "-----------------------------------------------------------------\n" - "o The line 'Prompt:' shows the text used in the menu structure for\n" - " this CONFIG_ symbol\n" - "o The 'Defined at' line tell at what file / line number the symbol\n" - " is defined\n" - "o The 'Depends on:' line tell what symbols needs to be defined for\n" - " this symbol to be visible in the menu (selectable)\n" - "o The 'Location:' lines tell where in the menu structure this symbol\n" - " is located\n" - " A location followed by a [=y] indicate that this is a selectable\n" - " menu item - and current value is displayed inside brackets.\n" - "o The 'Selects:' line tell what symbol will be automatically\n" - " selected if this symbol is selected (y or m)\n" - "o The 'Selected by' line tell what symbol has selected this symbol\n" - "\n" - "Only relevant lines are shown.\n" - "\n\n" - "Search examples:\n" - "Examples: USB => find all CONFIG_ symbols containing USB\n" - " ^USB => find all CONFIG_ symbols starting with USB\n" - " USB$ => find all CONFIG_ symbols ending with USB\n" - "\n"; - -static char filename[PATH_MAX+1] = ".config"; -static int indent; -static struct termios ios_org; -static int rows = 0, cols = 0; -static struct menu *current_menu; -static int child_count; -static int single_menu_mode; - -static struct dialog_list_item *items[16384]; /* FIXME: This ought to be dynamic. */ -static int item_no; - -static void conf(struct menu *menu); -static void conf_choice(struct menu *menu); -static void conf_string(struct menu *menu); -static void conf_load(void); -static void conf_save(void); -static void show_textbox(const char *title, const char *text, int r, int c); -static void show_helptext(const char *title, const char *text); -static void show_help(struct menu *menu); -static void show_file(const char *filename, const char *title, int r, int c); - -static void init_wsize(void) -{ - struct winsize ws; - char *env; - - if (!ioctl(STDIN_FILENO, TIOCGWINSZ, &ws)) { - rows = ws.ws_row; - cols = ws.ws_col; - } - - if (!rows) { - env = getenv("LINES"); - if (env) - rows = atoi(env); - if (!rows) - rows = 24; - } - if (!cols) { - env = getenv("COLUMNS"); - if (env) - cols = atoi(env); - if (!cols) - cols = 80; - } - - if (rows < 19 || cols < 80) { - fprintf(stderr, "Your display is too small to run Menuconfig!\n"); - fprintf(stderr, "It must be at least 19 lines by 80 columns.\n"); - exit(1); - } - - rows -= 4; - cols -= 5; -} - -static void cinit(void) -{ - item_no = 0; -} - -static void cmake(void) -{ - items[item_no] = malloc(sizeof(struct dialog_list_item)); - memset(items[item_no], 0, sizeof(struct dialog_list_item)); - items[item_no]->tag = malloc(32); items[item_no]->tag[0] = 0; - items[item_no]->name = malloc(512); items[item_no]->name[0] = 0; - items[item_no]->namelen = 0; - item_no++; -} - -static int cprint_name(const char *fmt, ...) -{ - va_list ap; - int res; - - if (!item_no) - cmake(); - va_start(ap, fmt); - res = vsnprintf(items[item_no - 1]->name + items[item_no - 1]->namelen, - 512 - items[item_no - 1]->namelen, fmt, ap); - if (res > 0) - items[item_no - 1]->namelen += res; - va_end(ap); - - return res; -} - -static int cprint_tag(const char *fmt, ...) -{ - va_list ap; - int res; - - if (!item_no) - cmake(); - va_start(ap, fmt); - res = vsnprintf(items[item_no - 1]->tag, 32, fmt, ap); - va_end(ap); - - return res; -} - -static void cdone(void) -{ - int i; - - for (i = 0; i < item_no; i++) { - free(items[i]->tag); - free(items[i]->name); - free(items[i]); - } - - item_no = 0; -} - -static void get_prompt_str(struct gstr *r, struct property *prop) -{ - int i, j; - struct menu *submenu[8], *menu; - - str_printf(r, "Prompt: %s\n", prop->text); - str_printf(r, " Defined at %s:%d\n", prop->menu->file->name, - prop->menu->lineno); - if (!expr_is_yes(prop->visible.expr)) { - str_append(r, " Depends on: "); - expr_gstr_print(prop->visible.expr, r); - str_append(r, "\n"); - } - menu = prop->menu->parent; - for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) - submenu[i++] = menu; - if (i > 0) { - str_printf(r, " Location:\n"); - for (j = 4; --i >= 0; j += 2) { - menu = submenu[i]; - str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu)); - if (menu->sym) { - str_printf(r, " (%s [=%s])", menu->sym->name ? - menu->sym->name : "", - sym_get_string_value(menu->sym)); - } - str_append(r, "\n"); - } - } -} - -static void get_symbol_str(struct gstr *r, struct symbol *sym) -{ - bool hit; - struct property *prop; - - str_printf(r, "Symbol: %s [=%s]\n", sym->name, - sym_get_string_value(sym)); - for_all_prompts(sym, prop) - get_prompt_str(r, prop); - hit = false; - for_all_properties(sym, prop, P_SELECT) { - if (!hit) { - str_append(r, " Selects: "); - hit = true; - } else - str_printf(r, " && "); - expr_gstr_print(prop->expr, r); - } - if (hit) - str_append(r, "\n"); - if (sym->rev_dep.expr) { - str_append(r, " Selected by: "); - expr_gstr_print(sym->rev_dep.expr, r); - str_append(r, "\n"); - } - str_append(r, "\n\n"); -} - -static struct gstr get_relations_str(struct symbol **sym_arr) -{ - struct symbol *sym; - struct gstr res = str_new(); - int i; - - for (i = 0; sym_arr && (sym = sym_arr[i]); i++) - get_symbol_str(&res, sym); - if (!i) - str_append(&res, "No matches found.\n"); - return res; -} - -static void search_conf(void) -{ - struct symbol **sym_arr; - struct gstr res; - -again: - switch (dialog_inputbox("Search Configuration Parameter", - "Enter Keyword", 10, 75, - NULL)) { - case 0: - break; - case 1: - show_helptext("Search Configuration", search_help); - goto again; - default: - return; - } - - sym_arr = sym_re_search(dialog_input_result); - res = get_relations_str(sym_arr); - free(sym_arr); - show_textbox("Search Results", str_get(&res), 0, 0); - str_free(&res); -} - -static void build_conf(struct menu *menu) -{ - struct symbol *sym; - struct property *prop; - struct menu *child; - int type, tmp, doint = 2; - tristate val; - char ch; - - if (!menu_is_visible(menu)) - return; - - sym = menu->sym; - prop = menu->prompt; - if (!sym) { - if (prop && menu != current_menu) { - const char *prompt = menu_get_prompt(menu); - switch (prop->type) { - case P_MENU: - child_count++; - cmake(); - cprint_tag("m%p", menu); - - if (single_menu_mode) { - cprint_name("%s%*c%s", - menu->data ? "-->" : "++>", - indent + 1, ' ', prompt); - } else { - cprint_name(" %*c%s --->", indent + 1, ' ', prompt); - } - - if (single_menu_mode && menu->data) - goto conf_childs; - return; - default: - if (prompt) { - child_count++; - cmake(); - cprint_tag(":%p", menu); - cprint_name("---%*c%s", indent + 1, ' ', prompt); - } - } - } else - doint = 0; - goto conf_childs; - } - - cmake(); - type = sym_get_type(sym); - if (sym_is_choice(sym)) { - struct symbol *def_sym = sym_get_choice_value(sym); - struct menu *def_menu = NULL; - - child_count++; - for (child = menu->list; child; child = child->next) { - if (menu_is_visible(child) && child->sym == def_sym) - def_menu = child; - } - - val = sym_get_tristate_value(sym); - if (sym_is_changable(sym)) { - cprint_tag("t%p", menu); - switch (type) { - case S_BOOLEAN: - cprint_name("[%c]", val == no ? ' ' : '*'); - break; - case S_TRISTATE: - switch (val) { - case yes: ch = '*'; break; - case mod: ch = 'M'; break; - default: ch = ' '; break; - } - cprint_name("<%c>", ch); - break; - } - } else { - cprint_tag("%c%p", def_menu ? 't' : ':', menu); - cprint_name(" "); - } - - cprint_name("%*c%s", indent + 1, ' ', menu_get_prompt(menu)); - if (val == yes) { - if (def_menu) { - cprint_name(" (%s)", menu_get_prompt(def_menu)); - cprint_name(" --->"); - if (def_menu->list) { - indent += 2; - build_conf(def_menu); - indent -= 2; - } - } - return; - } - } else { - if (menu == current_menu) { - cprint_tag(":%p", menu); - cprint_name("---%*c%s", indent + 1, ' ', menu_get_prompt(menu)); - goto conf_childs; - } - child_count++; - val = sym_get_tristate_value(sym); - if (sym_is_choice_value(sym) && val == yes) { - cprint_tag(":%p", menu); - cprint_name(" "); - } else { - switch (type) { - case S_BOOLEAN: - cprint_tag("t%p", menu); - if (sym_is_changable(sym)) - cprint_name("[%c]", val == no ? ' ' : '*'); - else - cprint_name("---"); - break; - case S_TRISTATE: - cprint_tag("t%p", menu); - switch (val) { - case yes: ch = '*'; break; - case mod: ch = 'M'; break; - default: ch = ' '; break; - } - if (sym_is_changable(sym)) - cprint_name("<%c>", ch); - else - cprint_name("---"); - break; - default: - cprint_tag("s%p", menu); - tmp = cprint_name("(%s)", sym_get_string_value(sym)); - tmp = indent - tmp + 4; - if (tmp < 0) - tmp = 0; - cprint_name("%*c%s%s", tmp, ' ', menu_get_prompt(menu), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : " (NEW)"); - goto conf_childs; - } - } - cprint_name("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu), - (sym_has_value(sym) || !sym_is_changable(sym)) ? - "" : " (NEW)"); - if (menu->prompt->type == P_MENU) { - cprint_name(" --->"); - return; - } - } - -conf_childs: - indent += doint; - for (child = menu->list; child; child = child->next) - build_conf(child); - indent -= doint; -} - -static void conf(struct menu *menu) -{ - struct dialog_list_item *active_item = NULL; - struct menu *submenu; - const char *prompt = menu_get_prompt(menu); - struct symbol *sym; - char active_entry[40]; - int stat, type; - - unlink("lxdialog.scrltmp"); - active_entry[0] = 0; - while (1) { - indent = 0; - child_count = 0; - current_menu = menu; - cdone(); cinit(); - build_conf(menu); - if (!child_count) - break; - if (menu == &rootmenu) { - cmake(); cprint_tag(":"); cprint_name("--- "); - cmake(); cprint_tag("L"); cprint_name("Load an Alternate Configuration File"); - cmake(); cprint_tag("S"); cprint_name("Save Configuration to an Alternate File"); - } - dialog_clear(); - stat = dialog_menu(prompt ? prompt : "Main Menu", - menu_instructions, rows, cols, rows - 10, - active_entry, item_no, items); - if (stat < 0) - return; - - if (stat == 1 || stat == 255) - break; - - active_item = first_sel_item(item_no, items); - if (!active_item) - continue; - active_item->selected = 0; - strncpy(active_entry, active_item->tag, sizeof(active_entry)); - active_entry[sizeof(active_entry)-1] = 0; - type = active_entry[0]; - if (!type) - continue; - - sym = NULL; - submenu = NULL; - if (sscanf(active_entry + 1, "%p", &submenu) == 1) - sym = submenu->sym; - - switch (stat) { - case 0: - switch (type) { - case 'm': - if (single_menu_mode) - submenu->data = (void *) (long) !submenu->data; - else - conf(submenu); - break; - case 't': - if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) - conf_choice(submenu); - else if (submenu->prompt->type == P_MENU) - conf(submenu); - break; - case 's': - conf_string(submenu); - break; - case 'L': - conf_load(); - break; - case 'S': - conf_save(); - break; - } - break; - case 2: - if (sym) - show_help(submenu); - else - show_helptext("README", mconf_readme); - break; - case 3: - if (type == 't') { - if (sym_set_tristate_value(sym, yes)) - break; - if (sym_set_tristate_value(sym, mod)) - show_textbox(NULL, setmod_text, 6, 74); - } - break; - case 4: - if (type == 't') - sym_set_tristate_value(sym, no); - break; - case 5: - if (type == 't') - sym_set_tristate_value(sym, mod); - break; - case 6: - if (type == 't') - sym_toggle_tristate_value(sym); - else if (type == 'm') - conf(submenu); - break; - case 7: - search_conf(); - break; - } - } -} - -static void show_textbox(const char *title, const char *text, int r, int c) -{ - int fd; - - fd = creat(".help.tmp", 0777); - write(fd, text, strlen(text)); - close(fd); - show_file(".help.tmp", title, r, c); - unlink(".help.tmp"); -} - -static void show_helptext(const char *title, const char *text) -{ - show_textbox(title, text, 0, 0); -} - -static void show_help(struct menu *menu) -{ - struct gstr help = str_new(); - struct symbol *sym = menu->sym; - - if (sym->help) - { - if (sym->name) { - str_printf(&help, "%s:\n\n", sym->name); - str_append(&help, sym->help); - str_append(&help, "\n"); - } - } else { - str_append(&help, nohelp_text); - } - get_symbol_str(&help, sym); - show_helptext(menu_get_prompt(menu), str_get(&help)); - str_free(&help); -} - -static void show_file(const char *filename, const char *title, int r, int c) -{ - while (dialog_textbox(title, filename, r ? r : rows, c ? c : cols) < 0) - ; -} - -static void conf_choice(struct menu *menu) -{ - const char *prompt = menu_get_prompt(menu); - struct menu *child; - struct symbol *active; - - active = sym_get_choice_value(menu->sym); - while (1) { - current_menu = menu; - cdone(); cinit(); - for (child = menu->list; child; child = child->next) { - if (!menu_is_visible(child)) - continue; - cmake(); - cprint_tag("%p", child); - cprint_name("%s", menu_get_prompt(child)); - if (child->sym == sym_get_choice_value(menu->sym)) - items[item_no - 1]->selected = 1; /* ON */ - else if (child->sym == active) - items[item_no - 1]->selected = 2; /* SELECTED */ - else - items[item_no - 1]->selected = 0; /* OFF */ - } - - switch (dialog_checklist(prompt ? prompt : "Main Menu", - radiolist_instructions, 15, 70, 6, - item_no, items, FLAG_RADIO)) { - case 0: - if (sscanf(first_sel_item(item_no, items)->tag, "%p", &child) != 1) - break; - sym_set_tristate_value(child->sym, yes); - return; - case 1: - if (sscanf(first_sel_item(item_no, items)->tag, "%p", &child) == 1) { - show_help(child); - active = child->sym; - } else - show_help(menu); - break; - case 255: - return; - } - } -} - -static void conf_string(struct menu *menu) -{ - const char *prompt = menu_get_prompt(menu); - - while (1) { - char *heading; - - switch (sym_get_type(menu->sym)) { - case S_INT: - heading = (char *) inputbox_instructions_int; - break; - case S_HEX: - heading = (char *) inputbox_instructions_hex; - break; - case S_STRING: - heading = (char *) inputbox_instructions_string; - break; - default: - heading = "Internal mconf error!"; - /* panic? */; - } - - switch (dialog_inputbox(prompt ? prompt : "Main Menu", - heading, 10, 75, - sym_get_string_value(menu->sym))) { - case 0: - if (sym_set_string_value(menu->sym, dialog_input_result)) - return; - show_textbox(NULL, "You have made an invalid entry.", 5, 43); - break; - case 1: - show_help(menu); - break; - case 255: - return; - } - } -} - -static void conf_load(void) -{ - while (1) { - switch (dialog_inputbox(NULL, load_config_text, 11, 55, - filename)) { - case 0: - if (!dialog_input_result[0]) - return; - if (!conf_read(dialog_input_result)) - return; - show_textbox(NULL, "File does not exist!", 5, 38); - break; - case 1: - show_helptext("Load Alternate Configuration", load_config_help); - break; - case 255: - return; - } - } -} - -static void conf_save(void) -{ - while (1) { - switch (dialog_inputbox(NULL, save_config_text, 11, 55, - filename)) { - case 0: - if (!dialog_input_result[0]) - return; - if (!conf_write(dialog_input_result)) - return; - show_textbox(NULL, "Can't create file! Probably a nonexistent directory.", 5, 60); - break; - case 1: - show_helptext("Save Alternate Configuration", save_config_help); - break; - case 255: - return; - } - } -} - -static void conf_cleanup(void) -{ - tcsetattr(1, TCSAFLUSH, &ios_org); - unlink(".help.tmp"); -} - -static void winch_handler(int sig) -{ - struct winsize ws; - - if (ioctl(1, TIOCGWINSZ, &ws) == -1) { - rows = 24; - cols = 80; - } else { - rows = ws.ws_row; - cols = ws.ws_col; - } - - if (rows < 19 || cols < 80) { - end_dialog(); - fprintf(stderr, "Your display is too small to run Menuconfig!\n"); - fprintf(stderr, "It must be at least 19 lines by 80 columns.\n"); - exit(1); - } - - rows -= 4; - cols -= 5; - -} - -int main(int ac, char **av) -{ - struct symbol *sym; - char *mode; - int stat; - - conf_parse(av[1]); - conf_read(NULL); - - sym = sym_lookup("VERSION", 0); - sym_calc_value(sym); - snprintf(menu_backtitle, 128, "axTLS v%s Configuration", - sym_get_string_value(sym)); - - mode = getenv("MENUCONFIG_MODE"); - if (mode) { - if (!strcasecmp(mode, "single_menu")) - single_menu_mode = 1; - } - - tcgetattr(1, &ios_org); - atexit(conf_cleanup); - init_wsize(); - init_dialog(); - signal(SIGWINCH, winch_handler); - conf(&rootmenu); - end_dialog(); - - /* Restart dialog to act more like when lxdialog was still separate */ - init_dialog(); - do { - stat = dialog_yesno(NULL, - "Do you wish to save your new axTLS configuration?", 5, 60); - } while (stat < 0); - end_dialog(); - - if (stat == 0) { - conf_write(NULL); - printf("\n\n" - "*** End of axTLS configuration.\n" - "*** Check the top-level Makefile for additional configuration options.\n\n"); - } else - printf("\n\nYour axTLS configuration changes were NOT saved.\n\n"); - - return 0; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/menu.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/menu.c deleted file mode 100644 index 0c13156f33..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/menu.c +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -struct menu rootmenu; -static struct menu **last_entry_ptr; - -struct file *file_list; -struct file *current_file; - -static void menu_warn(struct menu *menu, const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - va_end(ap); -} - -static void prop_warn(struct property *prop, const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - va_end(ap); -} - -void menu_init(void) -{ - current_entry = current_menu = &rootmenu; - last_entry_ptr = &rootmenu.list; -} - -void menu_add_entry(struct symbol *sym) -{ - struct menu *menu; - - menu = malloc(sizeof(*menu)); - memset(menu, 0, sizeof(*menu)); - menu->sym = sym; - menu->parent = current_menu; - menu->file = current_file; - menu->lineno = zconf_lineno(); - - *last_entry_ptr = menu; - last_entry_ptr = &menu->next; - current_entry = menu; -} - -void menu_end_entry(void) -{ -} - -void menu_add_menu(void) -{ - current_menu = current_entry; - last_entry_ptr = ¤t_entry->list; -} - -void menu_end_menu(void) -{ - last_entry_ptr = ¤t_menu->next; - current_menu = current_menu->parent; -} - -struct expr *menu_check_dep(struct expr *e) -{ - if (!e) - return e; - - switch (e->type) { - case E_NOT: - e->left.expr = menu_check_dep(e->left.expr); - break; - case E_OR: - case E_AND: - e->left.expr = menu_check_dep(e->left.expr); - e->right.expr = menu_check_dep(e->right.expr); - break; - case E_SYMBOL: - /* change 'm' into 'm' && MODULES */ - if (e->left.sym == &symbol_mod) - return expr_alloc_and(e, expr_alloc_symbol(modules_sym)); - break; - default: - break; - } - return e; -} - -void menu_add_dep(struct expr *dep) -{ - current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep)); -} - -void menu_set_type(int type) -{ - struct symbol *sym = current_entry->sym; - - if (sym->type == type) - return; - if (sym->type == S_UNKNOWN) { - sym->type = type; - return; - } - menu_warn(current_entry, "type of '%s' redefined from '%s' to '%s'\n", - sym->name ? sym->name : "", - sym_type_name(sym->type), sym_type_name(type)); -} - -struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep) -{ - struct property *prop = prop_alloc(type, current_entry->sym); - - prop->menu = current_entry; - prop->text = prompt; - prop->expr = expr; - prop->visible.expr = menu_check_dep(dep); - - if (prompt) { - if (current_entry->prompt) - menu_warn(current_entry, "prompt redefined\n"); - current_entry->prompt = prop; - } - - return prop; -} - -void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep) -{ - menu_add_prop(type, prompt, NULL, dep); -} - -void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) -{ - menu_add_prop(type, NULL, expr, dep); -} - -void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) -{ - menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep); -} - -void sym_check_prop(struct symbol *sym) -{ - struct property *prop; - struct symbol *sym2; - for (prop = sym->prop; prop; prop = prop->next) { - switch (prop->type) { - case P_DEFAULT: - if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) && - prop->expr->type != E_SYMBOL) - prop_warn(prop, - "default for config symbol '%'" - " must be a single symbol", sym->name); - break; - case P_SELECT: - sym2 = prop_get_symbol(prop); - if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE) - prop_warn(prop, - "config symbol '%s' uses select, but is " - "not boolean or tristate", sym->name); - else if (sym2->type == S_UNKNOWN) - prop_warn(prop, - "'select' used by config symbol '%s' " - "refer to undefined symbol '%s'", - sym->name, sym2->name); - else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE) - prop_warn(prop, - "'%s' has wrong type. 'select' only " - "accept arguments of boolean and " - "tristate type", sym2->name); - break; - case P_RANGE: - if (sym->type != S_INT && sym->type != S_HEX) - prop_warn(prop, "range is only allowed " - "for int or hex symbols"); - if (!sym_string_valid(sym, prop->expr->left.sym->name) || - !sym_string_valid(sym, prop->expr->right.sym->name)) - prop_warn(prop, "range is invalid"); - break; - default: - ; - } - } -} - -void menu_finalize(struct menu *parent) -{ - struct menu *menu, *last_menu; - struct symbol *sym; - struct property *prop; - struct expr *parentdep, *basedep, *dep, *dep2, **ep; - - sym = parent->sym; - if (parent->list) { - if (sym && sym_is_choice(sym)) { - /* find the first choice value and find out choice type */ - for (menu = parent->list; menu; menu = menu->next) { - if (menu->sym) { - current_entry = parent; - menu_set_type(menu->sym->type); - current_entry = menu; - menu_set_type(sym->type); - break; - } - } - parentdep = expr_alloc_symbol(sym); - } else if (parent->prompt) - parentdep = parent->prompt->visible.expr; - else - parentdep = parent->dep; - - for (menu = parent->list; menu; menu = menu->next) { - basedep = expr_transform(menu->dep); - basedep = expr_alloc_and(expr_copy(parentdep), basedep); - basedep = expr_eliminate_dups(basedep); - menu->dep = basedep; - if (menu->sym) - prop = menu->sym->prop; - else - prop = menu->prompt; - for (; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - dep = expr_transform(prop->visible.expr); - dep = expr_alloc_and(expr_copy(basedep), dep); - dep = expr_eliminate_dups(dep); - if (menu->sym && menu->sym->type != S_TRISTATE) - dep = expr_trans_bool(dep); - prop->visible.expr = dep; - if (prop->type == P_SELECT) { - struct symbol *es = prop_get_symbol(prop); - es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr, - expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); - } - } - } - for (menu = parent->list; menu; menu = menu->next) - menu_finalize(menu); - } else if (sym) { - basedep = parent->prompt ? parent->prompt->visible.expr : NULL; - basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no); - basedep = expr_eliminate_dups(expr_transform(basedep)); - last_menu = NULL; - for (menu = parent->next; menu; menu = menu->next) { - dep = menu->prompt ? menu->prompt->visible.expr : menu->dep; - if (!expr_contains_symbol(dep, sym)) - break; - if (expr_depends_symbol(dep, sym)) - goto next; - dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no); - dep = expr_eliminate_dups(expr_transform(dep)); - dep2 = expr_copy(basedep); - expr_eliminate_eq(&dep, &dep2); - expr_free(dep); - if (!expr_is_yes(dep2)) { - expr_free(dep2); - break; - } - expr_free(dep2); - next: - menu_finalize(menu); - menu->parent = parent; - last_menu = menu; - } - if (last_menu) { - parent->list = parent->next; - parent->next = last_menu->next; - last_menu->next = NULL; - } - } - for (menu = parent->list; menu; menu = menu->next) { - if (sym && sym_is_choice(sym) && menu->sym) { - menu->sym->flags |= SYMBOL_CHOICEVAL; - if (!menu->prompt) - menu_warn(menu, "choice value must have a prompt"); - for (prop = menu->sym->prop; prop; prop = prop->next) { - if (prop->type == P_PROMPT && prop->menu != menu) { - prop_warn(prop, "choice values " - "currently only support a " - "single prompt"); - } - if (prop->type == P_DEFAULT) - prop_warn(prop, "defaults for choice " - "values not supported"); - } - current_entry = menu; - menu_set_type(sym->type); - menu_add_symbol(P_CHOICE, sym, NULL); - prop = sym_get_choice_prop(sym); - for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr) - ; - *ep = expr_alloc_one(E_CHOICE, NULL); - (*ep)->right.sym = menu->sym; - } - if (menu->list && (!menu->prompt || !menu->prompt->text)) { - for (last_menu = menu->list; ; last_menu = last_menu->next) { - last_menu->parent = parent; - if (!last_menu->next) - break; - } - last_menu->next = menu->next; - menu->next = menu->list; - menu->list = NULL; - } - } - - if (sym && !(sym->flags & SYMBOL_WARNED)) { - if (sym->type == S_UNKNOWN) - menu_warn(parent, "config symbol defined " - "without type\n"); - - if (sym_is_choice(sym) && !parent->prompt) - menu_warn(parent, "choice must have a prompt\n"); - - /* Check properties connected to this symbol */ - sym_check_prop(sym); - sym->flags |= SYMBOL_WARNED; - } - - if (sym && !sym_is_optional(sym) && parent->prompt) { - sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr, - expr_alloc_and(parent->prompt->visible.expr, - expr_alloc_symbol(&symbol_mod))); - } -} - -bool menu_is_visible(struct menu *menu) -{ - struct menu *child; - struct symbol *sym; - tristate visible; - - if (!menu->prompt) - return false; - sym = menu->sym; - if (sym) { - sym_calc_value(sym); - visible = menu->prompt->visible.tri; - } else - visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr); - - if (visible != no) - return true; - if (!sym || sym_get_tristate_value(menu->sym) == no) - return false; - - for (child = menu->list; child; child = child->next) - if (menu_is_visible(child)) - return true; - return false; -} - -const char *menu_get_prompt(struct menu *menu) -{ - if (menu->prompt) - return menu->prompt->text; - else if (menu->sym) - return menu->sym->name; - return NULL; -} - -struct menu *menu_get_root_menu(struct menu *menu) -{ - return &rootmenu; -} - -struct menu *menu_get_parent_menu(struct menu *menu) -{ - enum prop_type type; - - for (; menu != &rootmenu; menu = menu->parent) { - type = menu->prompt ? menu->prompt->type : 0; - if (type == P_MENU) - break; - } - return menu; -} - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mkconfigs b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mkconfigs deleted file mode 100755 index 3cb7bb1754..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/mkconfigs +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2002 Khalid Aziz -# Copyright (C) 2002 Randy Dunlap -# Copyright (C) 2002 Al Stone -# Copyright (C) 2002 Hewlett-Packard Company -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# Busybox version by Matteo Croce <3297627799 at wind.it> -# -# Rules to generate bbconfig.h from .config: -# - Retain lines that begin with "CONFIG_" -# - Retain lines that begin with "# CONFIG_" -# - lines that use double-quotes must \\-escape-quote them - -if [ $# -lt 1 ] -then - config=.config -else config=$1 -fi - -echo "#ifndef _BBCONFIG_H" -echo "#define _BBCONFIG_H" -echo \ -"/* - * busybox configuration options. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at - * your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or - * NON INFRINGEMENT. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * - * - * This file is generated automatically by scripts/config/mkconfigs. - * Do not edit. - * - */" - -echo "static char const bbconfig_config[] =" -echo "\"CONFIG_BEGIN=n\\n\\" -echo "`sed 's/\"/\\\\\"/g' $config | grep "^#\? \?CONFIG_" | awk '{ print $0 "\\\\n\\\\" }' `" -echo "CONFIG_END=n\\n\";" -echo "#endif /* _BBCONFIG_H */" diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/symbol.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/symbol.c deleted file mode 100644 index ea629728ac..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/symbol.c +++ /dev/null @@ -1,809 +0,0 @@ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -struct symbol symbol_yes = { - .name = "y", - .curr = { "y", yes }, - .flags = SYMBOL_YES|SYMBOL_VALID, -}, symbol_mod = { - .name = "m", - .curr = { "m", mod }, - .flags = SYMBOL_MOD|SYMBOL_VALID, -}, symbol_no = { - .name = "n", - .curr = { "n", no }, - .flags = SYMBOL_NO|SYMBOL_VALID, -}, symbol_empty = { - .name = "", - .curr = { "", no }, - .flags = SYMBOL_VALID, -}; - -int sym_change_count; -struct symbol *modules_sym; -tristate modules_val; - -void sym_add_default(struct symbol *sym, const char *def) -{ - struct property *prop = prop_alloc(P_DEFAULT, sym); - - prop->expr = expr_alloc_symbol(sym_lookup(def, 1)); -} - -void sym_init(void) -{ - struct symbol *sym; - char *p; - static bool inited = false; - - if (inited) - return; - inited = true; - - sym = sym_lookup("VERSION", 0); - sym->type = S_STRING; - sym->flags |= SYMBOL_AUTO; - p = getenv("VERSION"); - if (p) - sym_add_default(sym, p); - - sym = sym_lookup("TARGET_ARCH", 0); - sym->type = S_STRING; - sym->flags |= SYMBOL_AUTO; - p = getenv("TARGET_ARCH"); - if (p) - sym_add_default(sym, p); - -} - -enum symbol_type sym_get_type(struct symbol *sym) -{ - enum symbol_type type = sym->type; - - if (type == S_TRISTATE) { - if (sym_is_choice_value(sym) && sym->visible == yes) - type = S_BOOLEAN; - else if (modules_val == no) - type = S_BOOLEAN; - } - return type; -} - -const char *sym_type_name(enum symbol_type type) -{ - switch (type) { - case S_BOOLEAN: - return "boolean"; - case S_TRISTATE: - return "tristate"; - case S_INT: - return "integer"; - case S_HEX: - return "hex"; - case S_STRING: - return "string"; - case S_UNKNOWN: - return "unknown"; - case S_OTHER: - break; - } - return "???"; -} - -struct property *sym_get_choice_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_choices(sym, prop) - return prop; - return NULL; -} - -struct property *sym_get_default_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_defaults(sym, prop) { - prop->visible.tri = expr_calc_value(prop->visible.expr); - if (prop->visible.tri != no) - return prop; - } - return NULL; -} - -struct property *sym_get_range_prop(struct symbol *sym) -{ - struct property *prop; - - for_all_properties(sym, prop, P_RANGE) { - prop->visible.tri = expr_calc_value(prop->visible.expr); - if (prop->visible.tri != no) - return prop; - } - return NULL; -} - -static void sym_calc_visibility(struct symbol *sym) -{ - struct property *prop; - tristate tri; - - /* any prompt visible? */ - tri = no; - for_all_prompts(sym, prop) { - prop->visible.tri = expr_calc_value(prop->visible.expr); - tri = E_OR(tri, prop->visible.tri); - } - if (tri == mod && (sym->type != S_TRISTATE || modules_val == no)) - tri = yes; - if (sym->visible != tri) { - sym->visible = tri; - sym_set_changed(sym); - } - if (sym_is_choice_value(sym)) - return; - tri = no; - if (sym->rev_dep.expr) - tri = expr_calc_value(sym->rev_dep.expr); - if (tri == mod && sym_get_type(sym) == S_BOOLEAN) - tri = yes; - if (sym->rev_dep.tri != tri) { - sym->rev_dep.tri = tri; - sym_set_changed(sym); - } -} - -static struct symbol *sym_calc_choice(struct symbol *sym) -{ - struct symbol *def_sym; - struct property *prop; - struct expr *e; - - /* is the user choice visible? */ - def_sym = sym->user.val; - if (def_sym) { - sym_calc_visibility(def_sym); - if (def_sym->visible != no) - return def_sym; - } - - /* any of the defaults visible? */ - for_all_defaults(sym, prop) { - prop->visible.tri = expr_calc_value(prop->visible.expr); - if (prop->visible.tri == no) - continue; - def_sym = prop_get_symbol(prop); - sym_calc_visibility(def_sym); - if (def_sym->visible != no) - return def_sym; - } - - /* just get the first visible value */ - prop = sym_get_choice_prop(sym); - for (e = prop->expr; e; e = e->left.expr) { - def_sym = e->right.sym; - sym_calc_visibility(def_sym); - if (def_sym->visible != no) - return def_sym; - } - - /* no choice? reset tristate value */ - sym->curr.tri = no; - return NULL; -} - -void sym_calc_value(struct symbol *sym) -{ - struct symbol_value newval, oldval; - struct property *prop; - struct expr *e; - - if (!sym) - return; - - if (sym->flags & SYMBOL_VALID) - return; - sym->flags |= SYMBOL_VALID; - - oldval = sym->curr; - - switch (sym->type) { - case S_INT: - case S_HEX: - case S_STRING: - newval = symbol_empty.curr; - break; - case S_BOOLEAN: - case S_TRISTATE: - newval = symbol_no.curr; - break; - default: - sym->curr.val = sym->name; - sym->curr.tri = no; - return; - } - if (!sym_is_choice_value(sym)) - sym->flags &= ~SYMBOL_WRITE; - - sym_calc_visibility(sym); - - /* set default if recursively called */ - sym->curr = newval; - - switch (sym_get_type(sym)) { - case S_BOOLEAN: - case S_TRISTATE: - if (sym_is_choice_value(sym) && sym->visible == yes) { - prop = sym_get_choice_prop(sym); - newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no; - } else if (E_OR(sym->visible, sym->rev_dep.tri) != no) { - sym->flags |= SYMBOL_WRITE; - if (sym_has_value(sym)) - newval.tri = sym->user.tri; - else if (!sym_is_choice(sym)) { - prop = sym_get_default_prop(sym); - if (prop) - newval.tri = expr_calc_value(prop->expr); - } - newval.tri = E_OR(E_AND(newval.tri, sym->visible), sym->rev_dep.tri); - } else if (!sym_is_choice(sym)) { - prop = sym_get_default_prop(sym); - if (prop) { - sym->flags |= SYMBOL_WRITE; - newval.tri = expr_calc_value(prop->expr); - } - } - if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) - newval.tri = yes; - break; - case S_STRING: - case S_HEX: - case S_INT: - if (sym->visible != no) { - sym->flags |= SYMBOL_WRITE; - if (sym_has_value(sym)) { - newval.val = sym->user.val; - break; - } - } - prop = sym_get_default_prop(sym); - if (prop) { - struct symbol *ds = prop_get_symbol(prop); - if (ds) { - sym->flags |= SYMBOL_WRITE; - sym_calc_value(ds); - newval.val = ds->curr.val; - } - } - break; - default: - ; - } - - sym->curr = newval; - if (sym_is_choice(sym) && newval.tri == yes) - sym->curr.val = sym_calc_choice(sym); - - if (memcmp(&oldval, &sym->curr, sizeof(oldval))) - sym_set_changed(sym); - if (modules_sym == sym) - modules_val = modules_sym->curr.tri; - - if (sym_is_choice(sym)) { - int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE); - prop = sym_get_choice_prop(sym); - for (e = prop->expr; e; e = e->left.expr) { - e->right.sym->flags |= flags; - if (flags & SYMBOL_CHANGED) - sym_set_changed(e->right.sym); - } - } -} - -void sym_clear_all_valid(void) -{ - struct symbol *sym; - int i; - - for_all_symbols(i, sym) - sym->flags &= ~SYMBOL_VALID; - sym_change_count++; - if (modules_sym) - sym_calc_value(modules_sym); -} - -void sym_set_changed(struct symbol *sym) -{ - struct property *prop; - - sym->flags |= SYMBOL_CHANGED; - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu) - prop->menu->flags |= MENU_CHANGED; - } -} - -void sym_set_all_changed(void) -{ - struct symbol *sym; - int i; - - for_all_symbols(i, sym) - sym_set_changed(sym); -} - -bool sym_tristate_within_range(struct symbol *sym, tristate val) -{ - int type = sym_get_type(sym); - - if (sym->visible == no) - return false; - - if (type != S_BOOLEAN && type != S_TRISTATE) - return false; - - if (type == S_BOOLEAN && val == mod) - return false; - if (sym->visible <= sym->rev_dep.tri) - return false; - if (sym_is_choice_value(sym) && sym->visible == yes) - return val == yes; - return val >= sym->rev_dep.tri && val <= sym->visible; -} - -bool sym_set_tristate_value(struct symbol *sym, tristate val) -{ - tristate oldval = sym_get_tristate_value(sym); - - if (oldval != val && !sym_tristate_within_range(sym, val)) - return false; - - if (sym->flags & SYMBOL_NEW) { - sym->flags &= ~SYMBOL_NEW; - sym_set_changed(sym); - } - if (sym_is_choice_value(sym) && val == yes) { - struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); - - cs->user.val = sym; - cs->flags &= ~SYMBOL_NEW; - } - - sym->user.tri = val; - if (oldval != val) { - sym_clear_all_valid(); - if (sym == modules_sym) - sym_set_all_changed(); - } - - return true; -} - -tristate sym_toggle_tristate_value(struct symbol *sym) -{ - tristate oldval, newval; - - oldval = newval = sym_get_tristate_value(sym); - do { - switch (newval) { - case no: - newval = mod; - break; - case mod: - newval = yes; - break; - case yes: - newval = no; - break; - } - if (sym_set_tristate_value(sym, newval)) - break; - } while (oldval != newval); - return newval; -} - -bool sym_string_valid(struct symbol *sym, const char *str) -{ - signed char ch; - - switch (sym->type) { - case S_STRING: - return true; - case S_INT: - ch = *str++; - if (ch == '-') - ch = *str++; - if (!isdigit(ch)) - return false; - if (ch == '0' && *str != 0) - return false; - while ((ch = *str++)) { - if (!isdigit(ch)) - return false; - } - return true; - case S_HEX: - if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) - str += 2; - ch = *str++; - do { - if (!isxdigit(ch)) - return false; - } while ((ch = *str++)); - return true; - case S_BOOLEAN: - case S_TRISTATE: - switch (str[0]) { - case 'y': case 'Y': - case 'm': case 'M': - case 'n': case 'N': - return true; - } - return false; - default: - return false; - } -} - -bool sym_string_within_range(struct symbol *sym, const char *str) -{ - struct property *prop; - int val; - - switch (sym->type) { - case S_STRING: - return sym_string_valid(sym, str); - case S_INT: - if (!sym_string_valid(sym, str)) - return false; - prop = sym_get_range_prop(sym); - if (!prop) - return true; - val = strtol(str, NULL, 10); - return val >= strtol(prop->expr->left.sym->name, NULL, 10) && - val <= strtol(prop->expr->right.sym->name, NULL, 10); - case S_HEX: - if (!sym_string_valid(sym, str)) - return false; - prop = sym_get_range_prop(sym); - if (!prop) - return true; - val = strtol(str, NULL, 16); - return val >= strtol(prop->expr->left.sym->name, NULL, 16) && - val <= strtol(prop->expr->right.sym->name, NULL, 16); - case S_BOOLEAN: - case S_TRISTATE: - switch (str[0]) { - case 'y': case 'Y': - return sym_tristate_within_range(sym, yes); - case 'm': case 'M': - return sym_tristate_within_range(sym, mod); - case 'n': case 'N': - return sym_tristate_within_range(sym, no); - } - return false; - default: - return false; - } -} - -bool sym_set_string_value(struct symbol *sym, const char *newval) -{ - const char *oldval; - char *val; - int size; - - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - switch (newval[0]) { - case 'y': case 'Y': - return sym_set_tristate_value(sym, yes); - case 'm': case 'M': - return sym_set_tristate_value(sym, mod); - case 'n': case 'N': - return sym_set_tristate_value(sym, no); - } - return false; - default: - ; - } - - if (!sym_string_within_range(sym, newval)) - return false; - - if (sym->flags & SYMBOL_NEW) { - sym->flags &= ~SYMBOL_NEW; - sym_set_changed(sym); - } - - oldval = sym->user.val; - size = strlen(newval) + 1; - if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) { - size += 2; - sym->user.val = val = malloc(size); - *val++ = '0'; - *val++ = 'x'; - } else if (!oldval || strcmp(oldval, newval)) - sym->user.val = val = malloc(size); - else - return true; - - strcpy(val, newval); - free((void *)oldval); - sym_clear_all_valid(); - - return true; -} - -const char *sym_get_string_value(struct symbol *sym) -{ - tristate val; - - switch (sym->type) { - case S_BOOLEAN: - case S_TRISTATE: - val = sym_get_tristate_value(sym); - switch (val) { - case no: - return "n"; - case mod: - return "m"; - case yes: - return "y"; - } - break; - default: - ; - } - return (const char *)sym->curr.val; -} - -bool sym_is_changable(struct symbol *sym) -{ - return sym->visible > sym->rev_dep.tri; -} - -struct symbol *sym_lookup(const char *name, int isconst) -{ - struct symbol *symbol; - const char *ptr; - char *new_name; - int hash = 0; - - if (name) { - if (name[0] && !name[1]) { - switch (name[0]) { - case 'y': return &symbol_yes; - case 'm': return &symbol_mod; - case 'n': return &symbol_no; - } - } - for (ptr = name; *ptr; ptr++) - hash += *ptr; - hash &= 0xff; - - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { - if (!strcmp(symbol->name, name)) { - if ((isconst && symbol->flags & SYMBOL_CONST) || - (!isconst && !(symbol->flags & SYMBOL_CONST))) - return symbol; - } - } - new_name = strdup(name); - } else { - new_name = NULL; - hash = 256; - } - - symbol = malloc(sizeof(*symbol)); - memset(symbol, 0, sizeof(*symbol)); - symbol->name = new_name; - symbol->type = S_UNKNOWN; - symbol->flags = SYMBOL_NEW; - if (isconst) - symbol->flags |= SYMBOL_CONST; - - symbol->next = symbol_hash[hash]; - symbol_hash[hash] = symbol; - - return symbol; -} - -struct symbol *sym_find(const char *name) -{ - struct symbol *symbol = NULL; - const char *ptr; - int hash = 0; - - if (!name) - return NULL; - - if (name[0] && !name[1]) { - switch (name[0]) { - case 'y': return &symbol_yes; - case 'm': return &symbol_mod; - case 'n': return &symbol_no; - } - } - for (ptr = name; *ptr; ptr++) - hash += *ptr; - hash &= 0xff; - - for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { - if (!strcmp(symbol->name, name) && - !(symbol->flags & SYMBOL_CONST)) - break; - } - - return symbol; -} - -struct symbol **sym_re_search(const char *pattern) -{ - struct symbol *sym, **sym_arr = NULL; - int i, cnt, size; - regex_t re; - - cnt = size = 0; - /* Skip if empty */ - if (strlen(pattern) == 0) - return NULL; - if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB|REG_ICASE)) - return NULL; - - for_all_symbols(i, sym) { - if (sym->flags & SYMBOL_CONST || !sym->name) - continue; - if (regexec(&re, sym->name, 0, NULL, 0)) - continue; - if (cnt + 1 >= size) { - void *tmp = sym_arr; - size += 16; - sym_arr = realloc(sym_arr, size * sizeof(struct symbol *)); - if (!sym_arr) { - free(tmp); - return NULL; - } - } - sym_arr[cnt++] = sym; - } - if (sym_arr) - sym_arr[cnt] = NULL; - regfree(&re); - - return sym_arr; -} - - -struct symbol *sym_check_deps(struct symbol *sym); - -static struct symbol *sym_check_expr_deps(struct expr *e) -{ - struct symbol *sym; - - if (!e) - return NULL; - switch (e->type) { - case E_OR: - case E_AND: - sym = sym_check_expr_deps(e->left.expr); - if (sym) - return sym; - return sym_check_expr_deps(e->right.expr); - case E_NOT: - return sym_check_expr_deps(e->left.expr); - case E_EQUAL: - case E_UNEQUAL: - sym = sym_check_deps(e->left.sym); - if (sym) - return sym; - return sym_check_deps(e->right.sym); - case E_SYMBOL: - return sym_check_deps(e->left.sym); - default: - break; - } - printf("Oops! How to check %d?\n", e->type); - return NULL; -} - -struct symbol *sym_check_deps(struct symbol *sym) -{ - struct symbol *sym2; - struct property *prop; - - if (sym->flags & SYMBOL_CHECK_DONE) - return NULL; - if (sym->flags & SYMBOL_CHECK) { - printf("Warning! Found recursive dependency: %s", sym->name); - return sym; - } - - sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED); - sym2 = sym_check_expr_deps(sym->rev_dep.expr); - if (sym2) - goto out; - - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->type == P_CHOICE || prop->type == P_SELECT) - continue; - sym2 = sym_check_expr_deps(prop->visible.expr); - if (sym2) - goto out; - if (prop->type != P_DEFAULT || sym_is_choice(sym)) - continue; - sym2 = sym_check_expr_deps(prop->expr); - if (sym2) - goto out; - } -out: - if (sym2) - printf(" %s", sym->name); - sym->flags &= ~SYMBOL_CHECK; - return sym2; -} - -struct property *prop_alloc(enum prop_type type, struct symbol *sym) -{ - struct property *prop; - struct property **propp; - - prop = malloc(sizeof(*prop)); - memset(prop, 0, sizeof(*prop)); - prop->type = type; - prop->sym = sym; - prop->file = current_file; - prop->lineno = zconf_lineno(); - - /* append property to the prop list of symbol */ - if (sym) { - for (propp = &sym->prop; *propp; propp = &(*propp)->next) - ; - *propp = prop; - } - - return prop; -} - -struct symbol *prop_get_symbol(struct property *prop) -{ - if (prop->expr && (prop->expr->type == E_SYMBOL || - prop->expr->type == E_CHOICE)) - return prop->expr->left.sym; - return NULL; -} - -const char *prop_get_type_name(enum prop_type type) -{ - switch (type) { - case P_PROMPT: - return "prompt"; - case P_COMMENT: - return "comment"; - case P_MENU: - return "menu"; - case P_DEFAULT: - return "default"; - case P_CHOICE: - return "choice"; - case P_SELECT: - return "select"; - case P_RANGE: - return "range"; - case P_UNKNOWN: - break; - } - return "unknown"; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/util.c b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/util.c deleted file mode 100644 index 8fc95a2a70..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/util.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2002-2005 Roman Zippel - * Copyright (C) 2002-2005 Sam Ravnborg - * - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include "lkc.h" - -/* file already present in list? If not add it */ -struct file *file_lookup(const char *name) -{ - struct file *file; - - for (file = file_list; file; file = file->next) { - if (!strcmp(name, file->name)) - return file; - } - - file = malloc(sizeof(*file)); - memset(file, 0, sizeof(*file)); - file->name = strdup(name); - file->next = file_list; - file_list = file; - return file; -} - -/* write a dependency file as used by kbuild to track dependencies */ -int file_write_dep(const char *name) -{ - struct file *file; - FILE *out; - - if (!name) - name = "config/.config.cmd"; - out = fopen("config/.config.tmp", "w"); - if (!out) - return 1; - fprintf(out, "deps_config := \\\n"); - for (file = file_list; file; file = file->next) { - if (file->next) - fprintf(out, "\t%s \\\n", file->name); - else - fprintf(out, "\t%s\n", file->name); - } - fprintf(out, "\n.config include/config.h: $(deps_config)\n\n$(deps_config):\n"); - fclose(out); - rename(".config.tmp", name); - return 0; -} - - -/* Allocate initial growable sting */ -struct gstr str_new(void) -{ - struct gstr gs; - gs.s = malloc(sizeof(char) * 64); - gs.len = 16; - strcpy(gs.s, "\0"); - return gs; -} - -/* Allocate and assign growable string */ -struct gstr str_assign(const char *s) -{ - struct gstr gs; - gs.s = strdup(s); - gs.len = strlen(s) + 1; - return gs; -} - -/* Free storage for growable string */ -void str_free(struct gstr *gs) -{ - if (gs->s) - free(gs->s); - gs->s = NULL; - gs->len = 0; -} - -/* Append to growable string */ -void str_append(struct gstr *gs, const char *s) -{ - size_t l = strlen(gs->s) + strlen(s) + 1; - if (l > gs->len) { - gs->s = realloc(gs->s, l); - gs->len = l; - } - strcat(gs->s, s); -} - -/* Append printf formatted string to growable string */ -void str_printf(struct gstr *gs, const char *fmt, ...) -{ - va_list ap; - char s[10000]; /* big enough... */ - va_start(ap, fmt); - vsnprintf(s, sizeof(s), fmt, ap); - str_append(gs, s); - va_end(ap); -} - -/* Retreive value of growable string */ -const char *str_get(struct gstr *gs) -{ - return gs->s; -} - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.l b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.l deleted file mode 100644 index 55517b2877..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.l +++ /dev/null @@ -1,366 +0,0 @@ -%option backup nostdinit noyywrap never-interactive full ecs -%option 8bit backup nodefault perf-report perf-report -%x COMMAND HELP STRING PARAM -%{ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -#define START_STRSIZE 16 - -char *text; -static char *text_ptr; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static struct buffer *zconf_endfile(void); - -void new_string(void) -{ - text = malloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_ptr = text; - text_size = 0; - *text_ptr = 0; -} - -void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - text = realloc(text, new_size); - text_asize = new_size; - text_ptr = text + text_size; - } - memcpy(text_ptr, str, size); - text_ptr += size; - text_size += size; - *text_ptr = 0; -} - -void alloc_string(const char *str, int size) -{ - text = malloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} -%} - -ws [ \n\t] -n [A-Za-z0-9_] - -%% - int str = 0; - int ts, i; - -[ \t]*#.*\n current_file->lineno++; -[ \t]*#.* - -[ \t]*\n current_file->lineno++; return T_EOL; - -[ \t]+ { - BEGIN(COMMAND); -} - -. { - unput(yytext[0]); - BEGIN(COMMAND); -} - - -{ - "mainmenu" BEGIN(PARAM); return T_MAINMENU; - "menu" BEGIN(PARAM); return T_MENU; - "endmenu" BEGIN(PARAM); return T_ENDMENU; - "source" BEGIN(PARAM); return T_SOURCE; - "choice" BEGIN(PARAM); return T_CHOICE; - "endchoice" BEGIN(PARAM); return T_ENDCHOICE; - "comment" BEGIN(PARAM); return T_COMMENT; - "config" BEGIN(PARAM); return T_CONFIG; - "menuconfig" BEGIN(PARAM); return T_MENUCONFIG; - "help" BEGIN(PARAM); return T_HELP; - "if" BEGIN(PARAM); return T_IF; - "endif" BEGIN(PARAM); return T_ENDIF; - "depends" BEGIN(PARAM); return T_DEPENDS; - "requires" BEGIN(PARAM); return T_REQUIRES; - "optional" BEGIN(PARAM); return T_OPTIONAL; - "default" BEGIN(PARAM); return T_DEFAULT; - "prompt" BEGIN(PARAM); return T_PROMPT; - "tristate" BEGIN(PARAM); return T_TRISTATE; - "def_tristate" BEGIN(PARAM); return T_DEF_TRISTATE; - "bool" BEGIN(PARAM); return T_BOOLEAN; - "boolean" BEGIN(PARAM); return T_BOOLEAN; - "def_bool" BEGIN(PARAM); return T_DEF_BOOLEAN; - "def_boolean" BEGIN(PARAM); return T_DEF_BOOLEAN; - "int" BEGIN(PARAM); return T_INT; - "hex" BEGIN(PARAM); return T_HEX; - "string" BEGIN(PARAM); return T_STRING; - "select" BEGIN(PARAM); return T_SELECT; - "enable" BEGIN(PARAM); return T_SELECT; - "range" BEGIN(PARAM); return T_RANGE; - {n}+ { - alloc_string(yytext, yyleng); - zconflval.string = text; - return T_WORD; - } - . - \n current_file->lineno++; BEGIN(INITIAL); -} - -{ - "&&" return T_AND; - "||" return T_OR; - "(" return T_OPEN_PAREN; - ")" return T_CLOSE_PAREN; - "!" return T_NOT; - "=" return T_EQUAL; - "!=" return T_UNEQUAL; - "if" return T_IF; - "on" return T_ON; - \"|\' { - str = yytext[0]; - new_string(); - BEGIN(STRING); - } - \n BEGIN(INITIAL); current_file->lineno++; return T_EOL; - --- /* ignore */ - ({n}|[-/.])+ { - alloc_string(yytext, yyleng); - zconflval.string = text; - return T_WORD; - } - #.* /* comment */ - \\\n current_file->lineno++; - . - <> { - BEGIN(INITIAL); - } -} - -{ - [^'"\\\n]+/\n { - append_string(yytext, yyleng); - zconflval.string = text; - return T_WORD_QUOTE; - } - [^'"\\\n]+ { - append_string(yytext, yyleng); - } - \\.?/\n { - append_string(yytext + 1, yyleng - 1); - zconflval.string = text; - return T_WORD_QUOTE; - } - \\.? { - append_string(yytext + 1, yyleng - 1); - } - \'|\" { - if (str == yytext[0]) { - BEGIN(PARAM); - zconflval.string = text; - return T_WORD_QUOTE; - } else - append_string(yytext, 1); - } - \n { - printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); - current_file->lineno++; - BEGIN(INITIAL); - return T_EOL; - } - <> { - BEGIN(INITIAL); - } -} - -{ - [ \t]+ { - ts = 0; - for (i = 0; i < yyleng; i++) { - if (yytext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - [ \t]*\n/[^ \t\n] { - current_file->lineno++; - zconf_endhelp(); - return T_HELPTEXT; - } - [ \t]*\n { - current_file->lineno++; - append_string("\n", 1); - } - [^ \t\n].* { - append_string(yytext, yyleng); - if (!first_ts) - first_ts = last_ts; - } - <> { - zconf_endhelp(); - return T_HELPTEXT; - } -} - -<> { - if (current_buf) { - zconf_endfile(); - return T_EOF; - } - fclose(yyin); - yyterminate(); -} - -%% -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - zconflval.string = text; - BEGIN(INITIAL); -} - - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - yyin = zconf_fopen(name); - if (!yyin) { - printf("can't find file %s\n", name); - exit(1); - } - - current_buf = malloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - current_file->lineno = 1; - current_file->flags = FILE_BUSY; -} - -void zconf_nextfile(const char *name) -{ - struct file *file = file_lookup(name); - struct buffer *buf = malloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - yyin = zconf_fopen(name); - if (!yyin) { - printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name); - exit(1); - } - yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - if (file->flags & FILE_BUSY) { - printf("recursive scan (%s)?\n", name); - exit(1); - } - if (file->flags & FILE_SCANNED) { - printf("file %s already scanned?\n", name); - exit(1); - } - file->flags |= FILE_BUSY; - file->lineno = 1; - file->parent = current_file; - current_file = file; -} - -static struct buffer *zconf_endfile(void) -{ - struct buffer *parent; - - current_file->flags |= FILE_SCANNED; - current_file->flags &= ~FILE_BUSY; - current_file = current_file->parent; - - parent = current_buf->parent; - if (parent) { - fclose(yyin); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; - - return parent; -} - -int zconf_lineno(void) -{ - if (current_buf) - return current_file->lineno - 1; - else - return 0; -} - -char *zconf_curname(void) -{ - if (current_buf) - return current_file->name; - else - return ""; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.c_shipped b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.c_shipped deleted file mode 100644 index cc68dcb9a3..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.c_shipped +++ /dev/null @@ -1,2130 +0,0 @@ -/* A Bison parser, made by GNU Bison 1.875a. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* Written by Richard Stallman by simplifying the original so called - ``semantic'' parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Using locations. */ -#define YYLSP_NEEDED 0 - -/* If NAME_PREFIX is specified substitute the variables and functions - names. */ -#define yyparse zconfparse -#define yylex zconflex -#define yyerror zconferror -#define yylval zconflval -#define yychar zconfchar -#define yydebug zconfdebug -#define yynerrs zconfnerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - T_MAINMENU = 258, - T_MENU = 259, - T_ENDMENU = 260, - T_SOURCE = 261, - T_CHOICE = 262, - T_ENDCHOICE = 263, - T_COMMENT = 264, - T_CONFIG = 265, - T_MENUCONFIG = 266, - T_HELP = 267, - T_HELPTEXT = 268, - T_IF = 269, - T_ENDIF = 270, - T_DEPENDS = 271, - T_REQUIRES = 272, - T_OPTIONAL = 273, - T_PROMPT = 274, - T_DEFAULT = 275, - T_TRISTATE = 276, - T_DEF_TRISTATE = 277, - T_BOOLEAN = 278, - T_DEF_BOOLEAN = 279, - T_STRING = 280, - T_INT = 281, - T_HEX = 282, - T_WORD = 283, - T_WORD_QUOTE = 284, - T_UNEQUAL = 285, - T_EOF = 286, - T_EOL = 287, - T_CLOSE_PAREN = 288, - T_OPEN_PAREN = 289, - T_ON = 290, - T_SELECT = 291, - T_RANGE = 292, - T_OR = 293, - T_AND = 294, - T_EQUAL = 295, - T_NOT = 296 - }; -#endif -#define T_MAINMENU 258 -#define T_MENU 259 -#define T_ENDMENU 260 -#define T_SOURCE 261 -#define T_CHOICE 262 -#define T_ENDCHOICE 263 -#define T_COMMENT 264 -#define T_CONFIG 265 -#define T_MENUCONFIG 266 -#define T_HELP 267 -#define T_HELPTEXT 268 -#define T_IF 269 -#define T_ENDIF 270 -#define T_DEPENDS 271 -#define T_REQUIRES 272 -#define T_OPTIONAL 273 -#define T_PROMPT 274 -#define T_DEFAULT 275 -#define T_TRISTATE 276 -#define T_DEF_TRISTATE 277 -#define T_BOOLEAN 278 -#define T_DEF_BOOLEAN 279 -#define T_STRING 280 -#define T_INT 281 -#define T_HEX 282 -#define T_WORD 283 -#define T_WORD_QUOTE 284 -#define T_UNEQUAL 285 -#define T_EOF 286 -#define T_EOL 287 -#define T_CLOSE_PAREN 288 -#define T_OPEN_PAREN 289 -#define T_ON 290 -#define T_SELECT 291 -#define T_RANGE 292 -#define T_OR 293 -#define T_AND 294 -#define T_EQUAL 295 -#define T_NOT 296 - - - - -/* Copy the first part of user declarations. */ - - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) - -#define PRINTD 0x0001 -#define DEBUG_PARSE 0x0002 - -int cdebug = PRINTD; - -extern int zconflex(void); -static void zconfprint(const char *err, ...); -static void zconferror(const char *err); -static bool zconf_endtoken(int token, int starttoken, int endtoken); - -struct symbol *symbol_hash[257]; - -static struct menu *current_menu, *current_entry; - -#define YYERROR_VERBOSE - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) - -typedef union YYSTYPE { - int token; - char *string; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; -} YYSTYPE; -/* Line 191 of yacc.c. */ - -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -#define LKC_DIRECT_LINK -#include "lkc.h" - - -/* Line 214 of yacc.c. */ - - -#if ! defined (yyoverflow) || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# if YYSTACK_USE_ALLOCA -# define YYSTACK_ALLOC alloca -# else -# ifndef YYSTACK_USE_ALLOCA -# if defined (alloca) || (defined (_ALLOCA_H) && defined (__GNUC__)) -# define YYSTACK_ALLOC alloca -# else -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# else -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -# define YYSTACK_ALLOC malloc -# define YYSTACK_FREE free -# endif -#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ - - -#if (! defined (yyoverflow) \ - && (! defined (__cplusplus) \ - || (YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - short yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - register YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (0) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined (__STDC__) || defined (__cplusplus) - typedef signed char yysigned_char; -#else - typedef short yysigned_char; -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 2 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 201 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 42 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 41 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 104 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 182 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 296 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const unsigned char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41 -}; - -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const unsigned short yyprhs[] = -{ - 0, 0, 3, 4, 7, 9, 11, 13, 17, 19, - 21, 23, 26, 28, 30, 32, 34, 36, 38, 42, - 45, 49, 52, 53, 56, 59, 62, 65, 69, 74, - 78, 83, 87, 91, 95, 100, 105, 110, 116, 119, - 122, 124, 128, 131, 132, 135, 138, 141, 144, 149, - 153, 157, 160, 165, 166, 169, 173, 175, 179, 182, - 183, 186, 189, 192, 196, 199, 201, 205, 208, 209, - 212, 215, 218, 222, 226, 228, 232, 235, 238, 241, - 242, 245, 248, 253, 257, 261, 262, 265, 267, 269, - 272, 275, 278, 280, 282, 283, 286, 288, 292, 296, - 300, 303, 307, 311, 313 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yysigned_char yyrhs[] = -{ - 43, 0, -1, -1, 43, 44, -1, 45, -1, 55, - -1, 66, -1, 3, 77, 79, -1, 5, -1, 15, - -1, 8, -1, 1, 79, -1, 61, -1, 71, -1, - 47, -1, 49, -1, 69, -1, 79, -1, 10, 28, - 32, -1, 46, 50, -1, 11, 28, 32, -1, 48, - 50, -1, -1, 50, 51, -1, 50, 75, -1, 50, - 73, -1, 50, 32, -1, 21, 76, 32, -1, 22, - 81, 80, 32, -1, 23, 76, 32, -1, 24, 81, - 80, 32, -1, 26, 76, 32, -1, 27, 76, 32, - -1, 25, 76, 32, -1, 19, 77, 80, 32, -1, - 20, 81, 80, 32, -1, 36, 28, 80, 32, -1, - 37, 82, 82, 80, 32, -1, 7, 32, -1, 52, - 56, -1, 78, -1, 53, 58, 54, -1, 53, 58, - -1, -1, 56, 57, -1, 56, 75, -1, 56, 73, - -1, 56, 32, -1, 19, 77, 80, 32, -1, 21, - 76, 32, -1, 23, 76, 32, -1, 18, 32, -1, - 20, 28, 80, 32, -1, -1, 58, 45, -1, 14, - 81, 32, -1, 78, -1, 59, 62, 60, -1, 59, - 62, -1, -1, 62, 45, -1, 62, 66, -1, 62, - 55, -1, 4, 77, 32, -1, 63, 74, -1, 78, - -1, 64, 67, 65, -1, 64, 67, -1, -1, 67, - 45, -1, 67, 66, -1, 67, 55, -1, 67, 1, - 32, -1, 6, 77, 32, -1, 68, -1, 9, 77, - 32, -1, 70, 74, -1, 12, 32, -1, 72, 13, - -1, -1, 74, 75, -1, 74, 32, -1, 16, 35, - 81, 32, -1, 16, 81, 32, -1, 17, 81, 32, - -1, -1, 77, 80, -1, 28, -1, 29, -1, 5, - 79, -1, 8, 79, -1, 15, 79, -1, 32, -1, - 31, -1, -1, 14, 81, -1, 82, -1, 82, 40, - 82, -1, 82, 30, 82, -1, 34, 81, 33, -1, - 41, 81, -1, 81, 38, 81, -1, 81, 39, 81, - -1, 28, -1, 29, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const unsigned short yyrline[] = -{ - 0, 94, 94, 95, 98, 99, 100, 101, 102, 103, - 104, 105, 109, 110, 111, 112, 113, 114, 120, 128, - 134, 142, 152, 154, 155, 156, 157, 160, 166, 173, - 179, 186, 192, 198, 204, 210, 216, 222, 230, 239, - 245, 254, 255, 261, 263, 264, 265, 266, 269, 275, - 281, 287, 293, 299, 301, 306, 315, 324, 325, 331, - 333, 334, 335, 340, 347, 353, 362, 363, 369, 371, - 372, 373, 374, 377, 383, 390, 397, 404, 410, 417, - 418, 419, 422, 427, 432, 440, 442, 447, 448, 451, - 452, 453, 457, 457, 459, 460, 463, 464, 465, 466, - 467, 468, 469, 472, 473 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", - "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", - "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", - "T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_DEFAULT", "T_TRISTATE", - "T_DEF_TRISTATE", "T_BOOLEAN", "T_DEF_BOOLEAN", "T_STRING", "T_INT", - "T_HEX", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", "T_EOF", "T_EOL", - "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_ON", "T_SELECT", "T_RANGE", "T_OR", - "T_AND", "T_EQUAL", "T_NOT", "$accept", "input", "block", - "common_block", "config_entry_start", "config_stmt", - "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", - "config_option", "choice", "choice_entry", "choice_end", "choice_stmt", - "choice_option_list", "choice_option", "choice_block", "if", "if_end", - "if_stmt", "if_block", "menu", "menu_entry", "menu_end", "menu_stmt", - "menu_block", "source", "source_stmt", "comment", "comment_stmt", - "help_start", "help", "depends_list", "depends", "prompt_stmt_opt", - "prompt", "end", "nl_or_eof", "if_expr", "expr", "symbol", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const unsigned short yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const unsigned char yyr1[] = -{ - 0, 42, 43, 43, 44, 44, 44, 44, 44, 44, - 44, 44, 45, 45, 45, 45, 45, 45, 46, 47, - 48, 49, 50, 50, 50, 50, 50, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 52, 53, - 54, 55, 55, 56, 56, 56, 56, 56, 57, 57, - 57, 57, 57, 58, 58, 59, 60, 61, 61, 62, - 62, 62, 62, 63, 64, 65, 66, 66, 67, 67, - 67, 67, 67, 68, 69, 70, 71, 72, 73, 74, - 74, 74, 75, 75, 75, 76, 76, 77, 77, 78, - 78, 78, 79, 79, 80, 80, 81, 81, 81, 81, - 81, 81, 81, 82, 82 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const unsigned char yyr2[] = -{ - 0, 2, 0, 2, 1, 1, 1, 3, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 3, 2, - 3, 2, 0, 2, 2, 2, 2, 3, 4, 3, - 4, 3, 3, 3, 4, 4, 4, 5, 2, 2, - 1, 3, 2, 0, 2, 2, 2, 2, 4, 3, - 3, 2, 4, 0, 2, 3, 1, 3, 2, 0, - 2, 2, 2, 3, 2, 1, 3, 2, 0, 2, - 2, 2, 3, 3, 1, 3, 2, 2, 2, 0, - 2, 2, 4, 3, 3, 0, 2, 1, 1, 2, - 2, 2, 1, 1, 0, 2, 1, 3, 3, 3, - 2, 3, 3, 1, 1 -}; - -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const unsigned char yydefact[] = -{ - 2, 0, 1, 0, 0, 0, 8, 0, 0, 10, - 0, 0, 0, 0, 9, 93, 92, 3, 4, 22, - 14, 22, 15, 43, 53, 5, 59, 12, 79, 68, - 6, 74, 16, 79, 13, 17, 11, 87, 88, 0, - 0, 0, 38, 0, 0, 0, 103, 104, 0, 0, - 0, 96, 19, 21, 39, 42, 58, 64, 0, 76, - 7, 63, 73, 75, 18, 20, 0, 100, 55, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, - 85, 0, 85, 85, 85, 26, 0, 0, 23, 0, - 25, 24, 0, 0, 0, 85, 85, 47, 44, 46, - 45, 0, 0, 0, 54, 41, 40, 60, 62, 57, - 61, 56, 81, 80, 0, 69, 71, 66, 70, 65, - 99, 101, 102, 98, 97, 77, 0, 0, 0, 94, - 94, 0, 94, 94, 0, 94, 0, 0, 0, 94, - 0, 78, 51, 94, 94, 0, 0, 89, 90, 91, - 72, 0, 83, 84, 0, 0, 0, 27, 86, 0, - 29, 0, 33, 31, 32, 0, 94, 0, 0, 49, - 50, 82, 95, 34, 35, 28, 30, 36, 0, 48, - 52, 37 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const short yydefgoto[] = -{ - -1, 1, 17, 18, 19, 20, 21, 22, 52, 88, - 23, 24, 105, 25, 54, 98, 55, 26, 109, 27, - 56, 28, 29, 117, 30, 58, 31, 32, 33, 34, - 89, 90, 57, 91, 131, 132, 106, 35, 155, 50, - 51 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -99 -static const short yypact[] = -{ - -99, 48, -99, 38, 46, 46, -99, 46, -29, -99, - 46, -17, -3, -11, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, -99, 38, - 12, 15, -99, 18, 51, 62, -99, -99, -11, -11, - 4, -24, 138, 138, 160, 121, 110, -4, 81, -4, - -99, -99, -99, -99, -99, -99, -19, -99, -99, -11, - -11, 70, 70, 73, 32, -11, 46, -11, 46, -11, - 46, -11, 46, 46, 46, -99, 36, 70, -99, 95, - -99, -99, 96, 46, 106, 46, 46, -99, -99, -99, - -99, 38, 38, 38, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, 112, -99, -99, -99, -99, -99, - -99, 117, -99, -99, -99, -99, -11, 33, 65, 131, - 1, 119, 131, 1, 136, 1, 153, 154, 155, 131, - 70, -99, -99, 131, 131, 156, 157, -99, -99, -99, - -99, 101, -99, -99, -11, 158, 159, -99, -99, 161, - -99, 162, -99, -99, -99, 163, 131, 164, 165, -99, - -99, -99, 99, -99, -99, -99, -99, -99, 166, -99, - -99, -99 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const short yypgoto[] = -{ - -99, -99, -99, 111, -99, -99, -99, -99, 178, -99, - -99, -99, -99, 91, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, 115, -99, -99, -99, -99, -99, - -99, 146, 168, 89, 27, 0, 126, -1, -98, -48, - -63 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -68 -static const short yytable[] = -{ - 66, 67, 36, 42, 39, 40, 71, 41, 123, 124, - 43, 44, 74, 75, 120, 154, 72, 46, 47, 69, - 70, 121, 122, 48, 140, 45, 127, 128, 112, 130, - 49, 133, 156, 135, 158, 159, 68, 161, 60, 69, - 70, 165, 69, 70, 61, 167, 168, 62, 2, 3, - 63, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 46, 47, 13, 14, 139, 152, 48, 126, 178, 15, - 16, 69, 70, 49, 37, 38, 129, 166, 151, 15, - 16, -67, 114, 64, -67, 5, 101, 7, 8, 102, - 10, 11, 12, 143, 65, 13, 103, 153, 46, 47, - 147, 148, 149, 69, 70, 125, 172, 134, 141, 136, - 137, 138, 15, 16, 5, 101, 7, 8, 102, 10, - 11, 12, 145, 146, 13, 103, 101, 7, 142, 102, - 10, 11, 12, 171, 144, 13, 103, 69, 70, 69, - 70, 15, 16, 100, 150, 154, 113, 108, 113, 116, - 73, 157, 15, 16, 74, 75, 70, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 104, 107, 160, 115, - 85, 110, 73, 118, 86, 87, 74, 75, 92, 93, - 94, 95, 111, 96, 119, 162, 163, 164, 169, 170, - 173, 174, 97, 175, 176, 177, 179, 180, 181, 53, - 99, 59 -}; - -static const unsigned char yycheck[] = -{ - 48, 49, 3, 32, 4, 5, 30, 7, 71, 72, - 10, 28, 16, 17, 33, 14, 40, 28, 29, 38, - 39, 69, 70, 34, 87, 28, 74, 75, 32, 77, - 41, 79, 130, 81, 132, 133, 32, 135, 39, 38, - 39, 139, 38, 39, 32, 143, 144, 32, 0, 1, - 32, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 28, 29, 14, 15, 28, 32, 34, 35, 166, 31, - 32, 38, 39, 41, 28, 29, 76, 140, 126, 31, - 32, 0, 1, 32, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 93, 32, 14, 15, 32, 28, 29, - 101, 102, 103, 38, 39, 32, 154, 80, 13, 82, - 83, 84, 31, 32, 4, 5, 6, 7, 8, 9, - 10, 11, 95, 96, 14, 15, 5, 6, 32, 8, - 9, 10, 11, 32, 28, 14, 15, 38, 39, 38, - 39, 31, 32, 54, 32, 14, 57, 56, 59, 58, - 12, 32, 31, 32, 16, 17, 39, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 55, 56, 32, 58, - 32, 56, 12, 58, 36, 37, 16, 17, 18, 19, - 20, 21, 56, 23, 58, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 21, - 54, 33 -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const unsigned char yystos[] = -{ - 0, 43, 0, 1, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 14, 15, 31, 32, 44, 45, 46, - 47, 48, 49, 52, 53, 55, 59, 61, 63, 64, - 66, 68, 69, 70, 71, 79, 79, 28, 29, 77, - 77, 77, 32, 77, 28, 28, 28, 29, 34, 41, - 81, 82, 50, 50, 56, 58, 62, 74, 67, 74, - 79, 32, 32, 32, 32, 32, 81, 81, 32, 38, - 39, 30, 40, 12, 16, 17, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 32, 36, 37, 51, 72, - 73, 75, 18, 19, 20, 21, 23, 32, 57, 73, - 75, 5, 8, 15, 45, 54, 78, 45, 55, 60, - 66, 78, 32, 75, 1, 45, 55, 65, 66, 78, - 33, 81, 81, 82, 82, 32, 35, 81, 81, 77, - 81, 76, 77, 81, 76, 81, 76, 76, 76, 28, - 82, 13, 32, 77, 28, 76, 76, 79, 79, 79, - 32, 81, 32, 32, 14, 80, 80, 32, 80, 80, - 32, 80, 32, 32, 32, 80, 82, 80, 80, 32, - 32, 32, 81, 32, 32, 32, 32, 32, 80, 32, - 32, 32 -}; - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrlab1 - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror ("syntax error: cannot back up");\ - YYERROR; \ - } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -/* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - Current.first_line = Rhs[1].first_line; \ - Current.first_column = Rhs[1].first_column; \ - Current.last_line = Rhs[N].last_line; \ - Current.last_column = Rhs[N].last_column; -#endif - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -# define YYDSYMPRINT(Args) \ -do { \ - if (yydebug) \ - yysymprint Args; \ -} while (0) - -# define YYDSYMPRINTF(Title, Token, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yysymprint (stderr, \ - Token, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (cinluded). | -`------------------------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_stack_print (short *bottom, short *top) -#else -static void -yy_stack_print (bottom, top) - short *bottom; - short *top; -#endif -{ - YYFPRINTF (stderr, "Stack now"); - for (/* Nothing. */; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_reduce_print (int yyrule) -#else -static void -yy_reduce_print (yyrule) - int yyrule; -#endif -{ - int yyi; - unsigned int yylineno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", - yyrule - 1, yylineno); - /* Print the symbols being reduced, and their result. */ - for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) - YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); - YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YYDSYMPRINT(Args) -# define YYDSYMPRINTF(Title, Token, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#if YYMAXDEPTH == 0 -# undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined (__GLIBC__) && defined (_STRING_H) -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -# if defined (__STDC__) || defined (__cplusplus) -yystrlen (const char *yystr) -# else -yystrlen (yystr) - const char *yystr; -# endif -{ - register const char *yys = yystr; - - while (*yys++ != '\0') - continue; - - return yys - yystr - 1; -} -# endif -# endif - -# ifndef yystpcpy -# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -# if defined (__STDC__) || defined (__cplusplus) -yystpcpy (char *yydest, const char *yysrc) -# else -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -# endif -{ - register char *yyd = yydest; - register const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -#endif /* !YYERROR_VERBOSE */ - - - -#if YYDEBUG -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) -#else -static void -yysymprint (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - if (yytype < YYNTOKENS) - { - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); -# ifdef YYPRINT - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - } - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - switch (yytype) - { - default: - break; - } - YYFPRINTF (yyoutput, ")"); -} - -#endif /* ! YYDEBUG */ -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yydestruct (int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yytype, yyvaluep) - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - switch (yytype) - { - - default: - break; - } -} - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM); -# else -int yyparse (); -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; - - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM) -# else -int yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int -yyparse (void) -#else -int -yyparse () - -#endif -#endif -{ - - register int yystate; - register int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short yyssa[YYINITDEPTH]; - short *yyss = yyssa; - register short *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - register YYSTYPE *yyvsp; - - - -#define YYPOPSTACK (yyvsp--, yyssp--) - - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ - int yylen; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyoverflowlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyoverflowlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - short *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyoverflowlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken])); - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; - - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - yystate = yyn; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 8: - - { zconfprint("unexpected 'endmenu' statement"); ;} - break; - - case 9: - - { zconfprint("unexpected 'endif' statement"); ;} - break; - - case 10: - - { zconfprint("unexpected 'endchoice' statement"); ;} - break; - - case 11: - - { zconfprint("syntax error"); yyerrok; ;} - break; - - case 18: - - { - struct symbol *sym = sym_lookup(yyvsp[-1].string, 0); - sym->flags |= SYMBOL_OPTIONAL; - menu_add_entry(sym); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string); -;} - break; - - case 19: - - { - menu_end_entry(); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 20: - - { - struct symbol *sym = sym_lookup(yyvsp[-1].string, 0); - sym->flags |= SYMBOL_OPTIONAL; - menu_add_entry(sym); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string); -;} - break; - - case 21: - - { - if (current_entry->prompt) - current_entry->prompt->type = P_MENU; - else - zconfprint("warning: menuconfig statement without prompt"); - menu_end_entry(); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 27: - - { - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 28: - - { - menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr); - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 29: - - { - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 30: - - { - menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr); - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 31: - - { - menu_set_type(S_INT); - printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 32: - - { - menu_set_type(S_HEX); - printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 33: - - { - menu_set_type(S_STRING); - printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 34: - - { - menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 35: - - { - menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 36: - - { - menu_add_symbol(P_SELECT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 37: - - { - menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,yyvsp[-3].symbol, yyvsp[-2].symbol), yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 38: - - { - struct symbol *sym = sym_lookup(NULL, 0); - sym->flags |= SYMBOL_CHOICE; - menu_add_entry(sym); - menu_add_expr(P_CHOICE, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 39: - - { - menu_end_entry(); - menu_add_menu(); -;} - break; - - case 40: - - { - if (zconf_endtoken(yyvsp[0].token, T_CHOICE, T_ENDCHOICE)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); - } -;} - break; - - case 42: - - { - printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -;} - break; - - case 48: - - { - menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 49: - - { - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 50: - - { - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 51: - - { - current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 52: - - { - menu_add_symbol(P_DEFAULT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 55: - - { - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); - menu_add_entry(NULL); - menu_add_dep(yyvsp[-1].expr); - menu_end_entry(); - menu_add_menu(); -;} - break; - - case 56: - - { - if (zconf_endtoken(yyvsp[0].token, T_IF, T_ENDIF)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); - } -;} - break; - - case 58: - - { - printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -;} - break; - - case 63: - - { - menu_add_entry(NULL); - menu_add_prop(P_MENU, yyvsp[-1].string, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 64: - - { - menu_end_entry(); - menu_add_menu(); -;} - break; - - case 65: - - { - if (zconf_endtoken(yyvsp[0].token, T_MENU, T_ENDMENU)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); - } -;} - break; - - case 67: - - { - printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -;} - break; - - case 72: - - { zconfprint("invalid menu option"); yyerrok; ;} - break; - - case 73: - - { - yyval.string = yyvsp[-1].string; - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string); -;} - break; - - case 74: - - { - zconf_nextfile(yyvsp[0].string); -;} - break; - - case 75: - - { - menu_add_entry(NULL); - menu_add_prop(P_COMMENT, yyvsp[-1].string, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 76: - - { - menu_end_entry(); -;} - break; - - case 77: - - { - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); - zconf_starthelp(); -;} - break; - - case 78: - - { - current_entry->sym->help = yyvsp[0].string; -;} - break; - - case 82: - - { - menu_add_dep(yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 83: - - { - menu_add_dep(yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 84: - - { - menu_add_dep(yyvsp[-1].expr); - printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno()); -;} - break; - - case 86: - - { - menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr); -;} - break; - - case 89: - - { yyval.token = T_ENDMENU; ;} - break; - - case 90: - - { yyval.token = T_ENDCHOICE; ;} - break; - - case 91: - - { yyval.token = T_ENDIF; ;} - break; - - case 94: - - { yyval.expr = NULL; ;} - break; - - case 95: - - { yyval.expr = yyvsp[0].expr; ;} - break; - - case 96: - - { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); ;} - break; - - case 97: - - { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;} - break; - - case 98: - - { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;} - break; - - case 99: - - { yyval.expr = yyvsp[-1].expr; ;} - break; - - case 100: - - { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); ;} - break; - - case 101: - - { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); ;} - break; - - case 102: - - { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); ;} - break; - - case 103: - - { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); ;} - break; - - case 104: - - { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); ;} - break; - - - } - -/* Line 999 of yacc.c. */ - - - yyvsp -= yylen; - yyssp -= yylen; - - - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (YYPACT_NINF < yyn && yyn < YYLAST) - { - YYSIZE_T yysize = 0; - int yytype = YYTRANSLATE (yychar); - char *yymsg; - int yyx, yycount; - - yycount = 0; - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - yysize += yystrlen (yytname[yyx]) + 15, yycount++; - yysize += yystrlen ("syntax error, unexpected ") + 1; - yysize += yystrlen (yytname[yytype]); - yymsg = (char *) YYSTACK_ALLOC (yysize); - if (yymsg != 0) - { - char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); - yyp = yystpcpy (yyp, yytname[yytype]); - - if (yycount < 5) - { - yycount = 0; - for (yyx = yyn < 0 ? -yyn : 0; - yyx < (int) (sizeof (yytname) / sizeof (char *)); - yyx++) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - const char *yyq = ! yycount ? ", expecting " : " or "; - yyp = yystpcpy (yyp, yyq); - yyp = yystpcpy (yyp, yytname[yyx]); - yycount++; - } - } - yyerror (yymsg); - YYSTACK_FREE (yymsg); - } - else - yyerror ("syntax error; also virtual memory exhausted"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror ("syntax error"); - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - /* Return failure if at end of input. */ - if (yychar == YYEOF) - { - /* Pop the error token. */ - YYPOPSTACK; - /* Pop the rest of the stack. */ - while (yyss < yyssp) - { - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[*yyssp], yyvsp); - YYPOPSTACK; - } - YYABORT; - } - - YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); - yydestruct (yytoken, &yylval); - yychar = YYEMPTY; - - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*----------------------------------------------------. -| yyerrlab1 -- error raised explicitly by an action. | -`----------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[yystate], yyvsp); - yyvsp--; - yystate = *--yyssp; - - YY_STACK_PRINT (yyss, yyssp); - } - - if (yyn == YYFINAL) - YYACCEPT; - - YYDPRINTF ((stderr, "Shifting error token, ")); - - *++yyvsp = yylval; - - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#ifndef yyoverflow -/*----------------------------------------------. -| yyoverflowlab -- parser overflow comes here. | -`----------------------------------------------*/ -yyoverflowlab: - yyerror ("parser stack overflow"); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif - return yyresult; -} - - - - - -void conf_parse(const char *name) -{ - struct symbol *sym; - int i; - - zconf_initscan(name); - - sym_init(); - menu_init(); - modules_sym = sym_lookup("MODULES", 0); - rootmenu.prompt = menu_add_prop(P_MENU, "axTLS Configuration", NULL, NULL); - - //zconfdebug = 1; - zconfparse(); - if (zconfnerrs) - exit(1); - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym)) - printf("\n"); - else - sym->flags |= SYMBOL_CHECK_DONE; - } - - sym_change_count = 1; -} - -const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - } - return ""; -} - -static bool zconf_endtoken(int token, int starttoken, int endtoken) -{ - if (token != endtoken) { - zconfprint("unexpected '%s' within %s block", zconf_tokenname(token), zconf_tokenname(starttoken)); - zconfnerrs++; - return false; - } - if (current_menu->file != current_file) { - zconfprint("'%s' in different file than '%s'", zconf_tokenname(token), zconf_tokenname(starttoken)); - zconfprint("location of the '%s'", zconf_tokenname(starttoken)); - zconfnerrs++; - return false; - } - return true; -} - -static void zconfprint(const char *err, ...) -{ - va_list ap; - - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void zconferror(const char *err) -{ - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); -} - -void print_quoted_string(FILE *out, const char *str) -{ - const char *p; - int len; - - putc('"', out); - while ((p = strchr(str, '"'))) { - len = p - str; - if (len) - fprintf(out, "%.*s", len, str); - fputs("\\\"", out); - str = p + 1; - } - fputs(str, out); - putc('"', out); -} - -void print_symbol(FILE *out, struct menu *menu) -{ - struct symbol *sym = menu->sym; - struct property *prop; - - if (sym_is_choice(sym)) - fprintf(out, "choice\n"); - else - fprintf(out, "config %s\n", sym->name); - switch (sym->type) { - case S_BOOLEAN: - fputs(" boolean\n", out); - break; - case S_TRISTATE: - fputs(" tristate\n", out); - break; - case S_STRING: - fputs(" string\n", out); - break; - case S_INT: - fputs(" integer\n", out); - break; - case S_HEX: - fputs(" hex\n", out); - break; - default: - fputs(" ???\n", out); - break; - } - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - switch (prop->type) { - case P_PROMPT: - fputs(" prompt ", out); - print_quoted_string(out, prop->text); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_DEFAULT: - fputs( " default ", out); - expr_fprint(prop->expr, out); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_CHOICE: - fputs(" #choice value\n", out); - break; - default: - fprintf(out, " unknown prop %d!\n", prop->type); - break; - } - } - if (sym->help) { - int len = strlen(sym->help); - while (sym->help[--len] == '\n') - sym->help[len] = 0; - fprintf(out, " help\n%s\n", sym->help); - } - fputc('\n', out); -} - -void zconfdump(FILE *out) -{ - struct property *prop; - struct symbol *sym; - struct menu *menu; - - menu = rootmenu.list; - while (menu) { - if ((sym = menu->sym)) - print_symbol(out, menu); - else if ((prop = menu->prompt)) { - switch (prop->type) { - case P_COMMENT: - fputs("\ncomment ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - case P_MENU: - fputs("\nmenu ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - default: - ; - } - if (!expr_is_yes(prop->visible.expr)) { - fputs(" depends ", out); - expr_fprint(prop->visible.expr, out); - fputc('\n', out); - } - fputs("\n", out); - } - - if (menu->list) - menu = menu->list; - else if (menu->next) - menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->prompt && menu->prompt->type == P_MENU) - fputs("\nendmenu\n", out); - if (menu->next) { - menu = menu->next; - break; - } - } - } -} - -#include "lex.zconf.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" - - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.h_shipped b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.h_shipped deleted file mode 100644 index 3b191ef599..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.tab.h_shipped +++ /dev/null @@ -1,125 +0,0 @@ -/* A Bison parser, made from zconf.y, by GNU bison 1.75. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -#ifndef BISON_ZCONF_TAB_H -# define BISON_ZCONF_TAB_H - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - T_MAINMENU = 258, - T_MENU = 259, - T_ENDMENU = 260, - T_SOURCE = 261, - T_CHOICE = 262, - T_ENDCHOICE = 263, - T_COMMENT = 264, - T_CONFIG = 265, - T_HELP = 266, - T_HELPTEXT = 267, - T_IF = 268, - T_ENDIF = 269, - T_DEPENDS = 270, - T_REQUIRES = 271, - T_OPTIONAL = 272, - T_PROMPT = 273, - T_DEFAULT = 274, - T_TRISTATE = 275, - T_BOOLEAN = 276, - T_INT = 277, - T_HEX = 278, - T_WORD = 279, - T_STRING = 280, - T_UNEQUAL = 281, - T_EOF = 282, - T_EOL = 283, - T_CLOSE_PAREN = 284, - T_OPEN_PAREN = 285, - T_ON = 286, - T_OR = 287, - T_AND = 288, - T_EQUAL = 289, - T_NOT = 290 - }; -#endif -#define T_MAINMENU 258 -#define T_MENU 259 -#define T_ENDMENU 260 -#define T_SOURCE 261 -#define T_CHOICE 262 -#define T_ENDCHOICE 263 -#define T_COMMENT 264 -#define T_CONFIG 265 -#define T_HELP 266 -#define T_HELPTEXT 267 -#define T_IF 268 -#define T_ENDIF 269 -#define T_DEPENDS 270 -#define T_REQUIRES 271 -#define T_OPTIONAL 272 -#define T_PROMPT 273 -#define T_DEFAULT 274 -#define T_TRISTATE 275 -#define T_BOOLEAN 276 -#define T_INT 277 -#define T_HEX 278 -#define T_WORD 279 -#define T_STRING 280 -#define T_UNEQUAL 281 -#define T_EOF 282 -#define T_EOL 283 -#define T_CLOSE_PAREN 284 -#define T_OPEN_PAREN 285 -#define T_ON 286 -#define T_OR 287 -#define T_AND 288 -#define T_EQUAL 289 -#define T_NOT 290 - - - - -#ifndef YYSTYPE -#line 33 "zconf.y" -typedef union { - int token; - char *string; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; -} yystype; -/* Line 1281 of /usr/share/bison/yacc.c. */ -#line 118 "zconf.tab.h" -# define YYSTYPE yystype -#endif - -extern YYSTYPE zconflval; - - -#endif /* not BISON_ZCONF_TAB_H */ - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.y b/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.y deleted file mode 100644 index cf45da0b20..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/scripts/config/zconf.y +++ /dev/null @@ -1,690 +0,0 @@ -%{ -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include -#include - -#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) - -#define PRINTD 0x0001 -#define DEBUG_PARSE 0x0002 - -int cdebug = PRINTD; - -extern int zconflex(void); -static void zconfprint(const char *err, ...); -static void zconferror(const char *err); -static bool zconf_endtoken(int token, int starttoken, int endtoken); - -struct symbol *symbol_hash[257]; - -static struct menu *current_menu, *current_entry; - -#define YYERROR_VERBOSE -%} -%expect 40 - -%union -{ - int token; - char *string; - struct symbol *symbol; - struct expr *expr; - struct menu *menu; -} - -%token T_MAINMENU -%token T_MENU -%token T_ENDMENU -%token T_SOURCE -%token T_CHOICE -%token T_ENDCHOICE -%token T_COMMENT -%token T_CONFIG -%token T_MENUCONFIG -%token T_HELP -%token T_HELPTEXT -%token T_IF -%token T_ENDIF -%token T_DEPENDS -%token T_REQUIRES -%token T_OPTIONAL -%token T_PROMPT -%token T_DEFAULT -%token T_TRISTATE -%token T_DEF_TRISTATE -%token T_BOOLEAN -%token T_DEF_BOOLEAN -%token T_STRING -%token T_INT -%token T_HEX -%token T_WORD -%token T_WORD_QUOTE -%token T_UNEQUAL -%token T_EOF -%token T_EOL -%token T_CLOSE_PAREN -%token T_OPEN_PAREN -%token T_ON -%token T_SELECT -%token T_RANGE - -%left T_OR -%left T_AND -%left T_EQUAL T_UNEQUAL -%nonassoc T_NOT - -%type prompt -%type source -%type symbol -%type expr -%type if_expr -%type end - -%{ -#define LKC_DIRECT_LINK -#include "lkc.h" -%} -%% -input: /* empty */ - | input block -; - -block: common_block - | choice_stmt - | menu_stmt - | T_MAINMENU prompt nl_or_eof - | T_ENDMENU { zconfprint("unexpected 'endmenu' statement"); } - | T_ENDIF { zconfprint("unexpected 'endif' statement"); } - | T_ENDCHOICE { zconfprint("unexpected 'endchoice' statement"); } - | error nl_or_eof { zconfprint("syntax error"); yyerrok; } -; - -common_block: - if_stmt - | comment_stmt - | config_stmt - | menuconfig_stmt - | source_stmt - | nl_or_eof -; - - -/* config/menuconfig entry */ - -config_entry_start: T_CONFIG T_WORD T_EOL -{ - struct symbol *sym = sym_lookup($2, 0); - sym->flags |= SYMBOL_OPTIONAL; - menu_add_entry(sym); - printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2); -}; - -config_stmt: config_entry_start config_option_list -{ - menu_end_entry(); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -}; - -menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL -{ - struct symbol *sym = sym_lookup($2, 0); - sym->flags |= SYMBOL_OPTIONAL; - menu_add_entry(sym); - printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2); -}; - -menuconfig_stmt: menuconfig_entry_start config_option_list -{ - if (current_entry->prompt) - current_entry->prompt->type = P_MENU; - else - zconfprint("warning: menuconfig statement without prompt"); - menu_end_entry(); - printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); -}; - -config_option_list: - /* empty */ - | config_option_list config_option - | config_option_list depends - | config_option_list help - | config_option_list T_EOL -; - -config_option: T_TRISTATE prompt_stmt_opt T_EOL -{ - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_DEF_TRISTATE expr if_expr T_EOL -{ - menu_add_expr(P_DEFAULT, $2, $3); - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_BOOLEAN prompt_stmt_opt T_EOL -{ - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_DEF_BOOLEAN expr if_expr T_EOL -{ - menu_add_expr(P_DEFAULT, $2, $3); - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_INT prompt_stmt_opt T_EOL -{ - menu_set_type(S_INT); - printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_HEX prompt_stmt_opt T_EOL -{ - menu_set_type(S_HEX); - printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_STRING prompt_stmt_opt T_EOL -{ - menu_set_type(S_STRING); - printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_PROMPT prompt if_expr T_EOL -{ - menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_DEFAULT expr if_expr T_EOL -{ - menu_add_expr(P_DEFAULT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_SELECT T_WORD if_expr T_EOL -{ - menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3); - printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); -}; - -config_option: T_RANGE symbol symbol if_expr T_EOL -{ - menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); - printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); -}; - -/* choice entry */ - -choice: T_CHOICE T_EOL -{ - struct symbol *sym = sym_lookup(NULL, 0); - sym->flags |= SYMBOL_CHOICE; - menu_add_entry(sym); - menu_add_expr(P_CHOICE, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); -}; - -choice_entry: choice choice_option_list -{ - menu_end_entry(); - menu_add_menu(); -}; - -choice_end: end -{ - if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); - } -}; - -choice_stmt: - choice_entry choice_block choice_end - | choice_entry choice_block -{ - printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -}; - -choice_option_list: - /* empty */ - | choice_option_list choice_option - | choice_option_list depends - | choice_option_list help - | choice_option_list T_EOL -; - -choice_option: T_PROMPT prompt if_expr T_EOL -{ - menu_add_prompt(P_PROMPT, $2, $3); - printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); -}; - -choice_option: T_TRISTATE prompt_stmt_opt T_EOL -{ - menu_set_type(S_TRISTATE); - printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); -}; - -choice_option: T_BOOLEAN prompt_stmt_opt T_EOL -{ - menu_set_type(S_BOOLEAN); - printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); -}; - -choice_option: T_OPTIONAL T_EOL -{ - current_entry->sym->flags |= SYMBOL_OPTIONAL; - printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); -}; - -choice_option: T_DEFAULT T_WORD if_expr T_EOL -{ - menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3); - printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); -}; - -choice_block: - /* empty */ - | choice_block common_block -; - -/* if entry */ - -if: T_IF expr T_EOL -{ - printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); - menu_add_entry(NULL); - menu_add_dep($2); - menu_end_entry(); - menu_add_menu(); -}; - -if_end: end -{ - if (zconf_endtoken($1, T_IF, T_ENDIF)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); - } -}; - -if_stmt: - if if_block if_end - | if if_block -{ - printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -}; - -if_block: - /* empty */ - | if_block common_block - | if_block menu_stmt - | if_block choice_stmt -; - -/* menu entry */ - -menu: T_MENU prompt T_EOL -{ - menu_add_entry(NULL); - menu_add_prop(P_MENU, $2, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); -}; - -menu_entry: menu depends_list -{ - menu_end_entry(); - menu_add_menu(); -}; - -menu_end: end -{ - if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { - menu_end_menu(); - printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); - } -}; - -menu_stmt: - menu_entry menu_block menu_end - | menu_entry menu_block -{ - printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno); - zconfnerrs++; -}; - -menu_block: - /* empty */ - | menu_block common_block - | menu_block menu_stmt - | menu_block choice_stmt - | menu_block error T_EOL { zconfprint("invalid menu option"); yyerrok; } -; - -source: T_SOURCE prompt T_EOL -{ - $$ = $2; - printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); -}; - -source_stmt: source -{ - zconf_nextfile($1); -}; - -/* comment entry */ - -comment: T_COMMENT prompt T_EOL -{ - menu_add_entry(NULL); - menu_add_prop(P_COMMENT, $2, NULL, NULL); - printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); -}; - -comment_stmt: comment depends_list -{ - menu_end_entry(); -}; - -/* help option */ - -help_start: T_HELP T_EOL -{ - printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); - zconf_starthelp(); -}; - -help: help_start T_HELPTEXT -{ - current_entry->sym->help = $2; -}; - -/* depends option */ - -depends_list: /* empty */ - | depends_list depends - | depends_list T_EOL -; - -depends: T_DEPENDS T_ON expr T_EOL -{ - menu_add_dep($3); - printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); -} - | T_DEPENDS expr T_EOL -{ - menu_add_dep($2); - printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno()); -} - | T_REQUIRES expr T_EOL -{ - menu_add_dep($2); - printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno()); -}; - -/* prompt statement */ - -prompt_stmt_opt: - /* empty */ - | prompt if_expr -{ - menu_add_prop(P_PROMPT, $1, NULL, $2); -}; - -prompt: T_WORD - | T_WORD_QUOTE -; - -end: T_ENDMENU nl_or_eof { $$ = T_ENDMENU; } - | T_ENDCHOICE nl_or_eof { $$ = T_ENDCHOICE; } - | T_ENDIF nl_or_eof { $$ = T_ENDIF; } -; - -nl_or_eof: - T_EOL | T_EOF; - -if_expr: /* empty */ { $$ = NULL; } - | T_IF expr { $$ = $2; } -; - -expr: symbol { $$ = expr_alloc_symbol($1); } - | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); } - | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); } - | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; } - | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); } - | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); } - | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); } -; - -symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); } - | T_WORD_QUOTE { $$ = sym_lookup($1, 1); free($1); } -; - -%% - -void conf_parse(const char *name) -{ - struct symbol *sym; - int i; - - zconf_initscan(name); - - sym_init(); - menu_init(); - modules_sym = sym_lookup("MODULES", 0); - rootmenu.prompt = menu_add_prop(P_MENU, "axTLS Configuration", NULL, NULL); - - //zconfdebug = 1; - zconfparse(); - if (zconfnerrs) - exit(1); - menu_finalize(&rootmenu); - for_all_symbols(i, sym) { - if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym)) - printf("\n"); - else - sym->flags |= SYMBOL_CHECK_DONE; - } - - sym_change_count = 1; -} - -const char *zconf_tokenname(int token) -{ - switch (token) { - case T_MENU: return "menu"; - case T_ENDMENU: return "endmenu"; - case T_CHOICE: return "choice"; - case T_ENDCHOICE: return "endchoice"; - case T_IF: return "if"; - case T_ENDIF: return "endif"; - } - return ""; -} - -static bool zconf_endtoken(int token, int starttoken, int endtoken) -{ - if (token != endtoken) { - zconfprint("unexpected '%s' within %s block", zconf_tokenname(token), zconf_tokenname(starttoken)); - zconfnerrs++; - return false; - } - if (current_menu->file != current_file) { - zconfprint("'%s' in different file than '%s'", zconf_tokenname(token), zconf_tokenname(starttoken)); - zconfprint("location of the '%s'", zconf_tokenname(starttoken)); - zconfnerrs++; - return false; - } - return true; -} - -static void zconfprint(const char *err, ...) -{ - va_list ap; - - fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1); - va_start(ap, err); - vfprintf(stderr, err, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -static void zconferror(const char *err) -{ - fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); -} - -void print_quoted_string(FILE *out, const char *str) -{ - const char *p; - int len; - - putc('"', out); - while ((p = strchr(str, '"'))) { - len = p - str; - if (len) - fprintf(out, "%.*s", len, str); - fputs("\\\"", out); - str = p + 1; - } - fputs(str, out); - putc('"', out); -} - -void print_symbol(FILE *out, struct menu *menu) -{ - struct symbol *sym = menu->sym; - struct property *prop; - - if (sym_is_choice(sym)) - fprintf(out, "choice\n"); - else - fprintf(out, "config %s\n", sym->name); - switch (sym->type) { - case S_BOOLEAN: - fputs(" boolean\n", out); - break; - case S_TRISTATE: - fputs(" tristate\n", out); - break; - case S_STRING: - fputs(" string\n", out); - break; - case S_INT: - fputs(" integer\n", out); - break; - case S_HEX: - fputs(" hex\n", out); - break; - default: - fputs(" ???\n", out); - break; - } - for (prop = sym->prop; prop; prop = prop->next) { - if (prop->menu != menu) - continue; - switch (prop->type) { - case P_PROMPT: - fputs(" prompt ", out); - print_quoted_string(out, prop->text); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_DEFAULT: - fputs( " default ", out); - expr_fprint(prop->expr, out); - if (!expr_is_yes(prop->visible.expr)) { - fputs(" if ", out); - expr_fprint(prop->visible.expr, out); - } - fputc('\n', out); - break; - case P_CHOICE: - fputs(" #choice value\n", out); - break; - default: - fprintf(out, " unknown prop %d!\n", prop->type); - break; - } - } - if (sym->help) { - int len = strlen(sym->help); - while (sym->help[--len] == '\n') - sym->help[len] = 0; - fprintf(out, " help\n%s\n", sym->help); - } - fputc('\n', out); -} - -void zconfdump(FILE *out) -{ - struct property *prop; - struct symbol *sym; - struct menu *menu; - - menu = rootmenu.list; - while (menu) { - if ((sym = menu->sym)) - print_symbol(out, menu); - else if ((prop = menu->prompt)) { - switch (prop->type) { - case P_COMMENT: - fputs("\ncomment ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - case P_MENU: - fputs("\nmenu ", out); - print_quoted_string(out, prop->text); - fputs("\n", out); - break; - default: - ; - } - if (!expr_is_yes(prop->visible.expr)) { - fputs(" depends ", out); - expr_fprint(prop->visible.expr, out); - fputc('\n', out); - } - fputs("\n", out); - } - - if (menu->list) - menu = menu->list; - else if (menu->next) - menu = menu->next; - else while ((menu = menu->parent)) { - if (menu->prompt && menu->prompt->type == P_MENU) - fputs("\nendmenu\n", out); - if (menu->next) { - menu = menu->next; - break; - } - } - } -} - -#include "lex.zconf.c" -#include "util.c" -#include "confdata.c" -#include "expr.c" -#include "symbol.c" -#include "menu.c" diff --git a/package/luci/libs/luci-lib-nixio/axTLS/config/win32config b/package/luci/libs/luci-lib-nixio/axTLS/config/win32config deleted file mode 100644 index 6c8d607126..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/config/win32config +++ /dev/null @@ -1,119 +0,0 @@ -# -# Automatically generated make config: don't edit -# -HAVE_DOT_CONFIG=y -# CONFIG_PLATFORM_LINUX is not set -# CONFIG_PLATFORM_CYGWIN is not set -# CONFIG_PLATFORM_SOLARIS is not set -CONFIG_PLATFORM_WIN32=y - -# -# General Configuration -# -PREFIX="" -# CONFIG_DEBUG is not set -# CONFIG_STRIP_UNWANTED_SECTIONS is not set - -# -# Microsoft Compiler Options -# -# CONFIG_VISUAL_STUDIO_7_0 is not set -CONFIG_VISUAL_STUDIO_8_0=y -CONFIG_VISUAL_STUDIO_7_0_BASE="" -CONFIG_VISUAL_STUDIO_8_0_BASE="c:\\Program Files\\Microsoft Visual Studio 8" -CONFIG_EXTRA_CFLAGS_OPTIONS="" -CONFIG_EXTRA_LDFLAGS_OPTIONS="" - -# -# SSL Library -# -# CONFIG_SSL_SERVER_ONLY is not set -# CONFIG_SSL_CERT_VERIFICATION is not set -# CONFIG_SSL_ENABLE_CLIENT is not set -CONFIG_SSL_FULL_MODE=y -# CONFIG_SSL_SKELETON_MODE is not set -# CONFIG_SSL_PROT_LOW is not set -CONFIG_SSL_PROT_MEDIUM=y -# CONFIG_SSL_PROT_HIGH is not set -CONFIG_SSL_USE_DEFAULT_KEY=y -CONFIG_SSL_PRIVATE_KEY_LOCATION="" -CONFIG_SSL_PRIVATE_KEY_PASSWORD="" -CONFIG_SSL_X509_CERT_LOCATION="" -CONFIG_SSL_GENERATE_X509_CERT=y -CONFIG_SSL_X509_COMMON_NAME="" -CONFIG_SSL_X509_ORGANIZATION_NAME="" -CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME="" -CONFIG_SSL_ENABLE_V23_HANDSHAKE=y -CONFIG_SSL_HAS_PEM=y -CONFIG_SSL_USE_PKCS12=y -CONFIG_SSL_EXPIRY_TIME=24 -CONFIG_X509_MAX_CA_CERTS=4 -CONFIG_SSL_MAX_CERTS=2 -# CONFIG_SSL_CTX_MUTEXING is not set -# CONFIG_USE_DEV_URANDOM is not set -CONFIG_WIN32_USE_CRYPTO_LIB=y -# CONFIG_OPENSSL_COMPATIBLE is not set -# CONFIG_PERFORMANCE_TESTING is not set -# CONFIG_SSL_TEST is not set -CONFIG_AXHTTPD=y - -# -# Axhttpd Configuration -# -# CONFIG_HTTP_STATIC_BUILD is not set -CONFIG_HTTP_PORT=80 -CONFIG_HTTP_HTTPS_PORT=443 -CONFIG_HTTP_SESSION_CACHE_SIZE=5 -CONFIG_HTTP_WEBROOT="www" -CONFIG_HTTP_TIMEOUT=300 -# CONFIG_HTTP_HAS_CGI is not set -CONFIG_HTTP_CGI_EXTENSIONS="" -# CONFIG_HTTP_ENABLE_LUA is not set -CONFIG_HTTP_LUA_PREFIX="" -CONFIG_HTTP_LUA_CGI_LAUNCHER="" -# CONFIG_HTTP_BUILD_LUA is not set -CONFIG_HTTP_DIRECTORIES=y -CONFIG_HTTP_HAS_AUTHORIZATION=y -# CONFIG_HTTP_HAS_IPV6 is not set -CONFIG_HTTP_VERBOSE=y -# CONFIG_HTTP_IS_DAEMON is not set - -# -# Language Bindings -# -# CONFIG_BINDINGS is not set -# CONFIG_CSHARP_BINDINGS is not set -# CONFIG_VBNET_BINDINGS is not set -CONFIG_DOT_NET_FRAMEWORK_BASE="" -# CONFIG_JAVA_BINDINGS is not set -CONFIG_JAVA_HOME="" -# CONFIG_PERL_BINDINGS is not set -CONFIG_PERL_CORE="" -CONFIG_PERL_LIB="" -# CONFIG_LUA_BINDINGS is not set -CONFIG_LUA_CORE="" - -# -# Samples -# -CONFIG_SAMPLES=y -CONFIG_C_SAMPLES=y -# CONFIG_CSHARP_SAMPLES is not set -# CONFIG_VBNET_SAMPLES is not set -# CONFIG_JAVA_SAMPLES is not set -# CONFIG_PERL_SAMPLES is not set -# CONFIG_LUA_SAMPLES is not set - -# -# BigInt Options -# -# CONFIG_BIGINT_CLASSICAL is not set -# CONFIG_BIGINT_MONTGOMERY is not set -CONFIG_BIGINT_BARRETT=y -CONFIG_BIGINT_CRT=y -# CONFIG_BIGINT_KARATSUBA is not set -MUL_KARATSUBA_THRESH=0 -SQU_KARATSUBA_THRESH=0 -CONFIG_BIGINT_SLIDING_WINDOW=y -CONFIG_BIGINT_SQUARE=y -# CONFIG_BIGINT_CHECK_ON is not set diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/crypto/Makefile deleted file mode 100644 index 3ea8bdde0c..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -include ../config/.config -include ../config/makefile.conf - -AXTLS_HOME=.. - -OBJ=\ - aes.o \ - bigint.o \ - crypto_misc.o \ - hmac.o \ - md2.o \ - md5.o \ - rc4.o \ - rsa.o \ - sha1.o - -include ../config/makefile.post - -all: $(OBJ) - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/aes.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/aes.c deleted file mode 100644 index 038a45bd85..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/aes.c +++ /dev/null @@ -1,456 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * AES implementation - this is a small code version. There are much faster - * versions around but they are much larger in size (i.e. they use large - * submix tables). - */ - -#include -#include "crypto.h" - -/* all commented out in skeleton mode */ -#ifndef CONFIG_SSL_SKELETON_MODE - -#define rot1(x) (((x) << 24) | ((x) >> 8)) -#define rot2(x) (((x) << 16) | ((x) >> 16)) -#define rot3(x) (((x) << 8) | ((x) >> 24)) - -/* - * This cute trick does 4 'mul by two' at once. Stolen from - * Dr B. R. Gladman but I'm sure the u-(u>>7) is - * a standard graphics trick - * The key to this is that we need to xor with 0x1b if the top bit is set. - * a 1xxx xxxx 0xxx 0xxx First we mask the 7bit, - * b 1000 0000 0000 0000 then we shift right by 7 putting the 7bit in 0bit, - * c 0000 0001 0000 0000 we then subtract (c) from (b) - * d 0111 1111 0000 0000 and now we and with our mask - * e 0001 1011 0000 0000 - */ -#define mt 0x80808080 -#define ml 0x7f7f7f7f -#define mh 0xfefefefe -#define mm 0x1b1b1b1b -#define mul2(x,t) ((t)=((x)&mt), \ - ((((x)+(x))&mh)^(((t)-((t)>>7))&mm))) - -#define inv_mix_col(x,f2,f4,f8,f9) (\ - (f2)=mul2(x,f2), \ - (f4)=mul2(f2,f4), \ - (f8)=mul2(f4,f8), \ - (f9)=(x)^(f8), \ - (f8)=((f2)^(f4)^(f8)), \ - (f2)^=(f9), \ - (f4)^=(f9), \ - (f8)^=rot3(f2), \ - (f8)^=rot2(f4), \ - (f8)^rot1(f9)) - -/* - * AES S-box - */ -static const uint8_t aes_sbox[256] = -{ - 0x63,0x7C,0x77,0x7B,0xF2,0x6B,0x6F,0xC5, - 0x30,0x01,0x67,0x2B,0xFE,0xD7,0xAB,0x76, - 0xCA,0x82,0xC9,0x7D,0xFA,0x59,0x47,0xF0, - 0xAD,0xD4,0xA2,0xAF,0x9C,0xA4,0x72,0xC0, - 0xB7,0xFD,0x93,0x26,0x36,0x3F,0xF7,0xCC, - 0x34,0xA5,0xE5,0xF1,0x71,0xD8,0x31,0x15, - 0x04,0xC7,0x23,0xC3,0x18,0x96,0x05,0x9A, - 0x07,0x12,0x80,0xE2,0xEB,0x27,0xB2,0x75, - 0x09,0x83,0x2C,0x1A,0x1B,0x6E,0x5A,0xA0, - 0x52,0x3B,0xD6,0xB3,0x29,0xE3,0x2F,0x84, - 0x53,0xD1,0x00,0xED,0x20,0xFC,0xB1,0x5B, - 0x6A,0xCB,0xBE,0x39,0x4A,0x4C,0x58,0xCF, - 0xD0,0xEF,0xAA,0xFB,0x43,0x4D,0x33,0x85, - 0x45,0xF9,0x02,0x7F,0x50,0x3C,0x9F,0xA8, - 0x51,0xA3,0x40,0x8F,0x92,0x9D,0x38,0xF5, - 0xBC,0xB6,0xDA,0x21,0x10,0xFF,0xF3,0xD2, - 0xCD,0x0C,0x13,0xEC,0x5F,0x97,0x44,0x17, - 0xC4,0xA7,0x7E,0x3D,0x64,0x5D,0x19,0x73, - 0x60,0x81,0x4F,0xDC,0x22,0x2A,0x90,0x88, - 0x46,0xEE,0xB8,0x14,0xDE,0x5E,0x0B,0xDB, - 0xE0,0x32,0x3A,0x0A,0x49,0x06,0x24,0x5C, - 0xC2,0xD3,0xAC,0x62,0x91,0x95,0xE4,0x79, - 0xE7,0xC8,0x37,0x6D,0x8D,0xD5,0x4E,0xA9, - 0x6C,0x56,0xF4,0xEA,0x65,0x7A,0xAE,0x08, - 0xBA,0x78,0x25,0x2E,0x1C,0xA6,0xB4,0xC6, - 0xE8,0xDD,0x74,0x1F,0x4B,0xBD,0x8B,0x8A, - 0x70,0x3E,0xB5,0x66,0x48,0x03,0xF6,0x0E, - 0x61,0x35,0x57,0xB9,0x86,0xC1,0x1D,0x9E, - 0xE1,0xF8,0x98,0x11,0x69,0xD9,0x8E,0x94, - 0x9B,0x1E,0x87,0xE9,0xCE,0x55,0x28,0xDF, - 0x8C,0xA1,0x89,0x0D,0xBF,0xE6,0x42,0x68, - 0x41,0x99,0x2D,0x0F,0xB0,0x54,0xBB,0x16, -}; - -/* - * AES is-box - */ -static const uint8_t aes_isbox[256] = -{ - 0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38, - 0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb, - 0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87, - 0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb, - 0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d, - 0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e, - 0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2, - 0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25, - 0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16, - 0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92, - 0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda, - 0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84, - 0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a, - 0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06, - 0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02, - 0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b, - 0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea, - 0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73, - 0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85, - 0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e, - 0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89, - 0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b, - 0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20, - 0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4, - 0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31, - 0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f, - 0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d, - 0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef, - 0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0, - 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61, - 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26, - 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d -}; - -static const unsigned char Rcon[30]= -{ - 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80, - 0x1b,0x36,0x6c,0xd8,0xab,0x4d,0x9a,0x2f, - 0x5e,0xbc,0x63,0xc6,0x97,0x35,0x6a,0xd4, - 0xb3,0x7d,0xfa,0xef,0xc5,0x91, -}; - -/* ----- static functions ----- */ -static void AES_encrypt(const AES_CTX *ctx, uint32_t *data); -static void AES_decrypt(const AES_CTX *ctx, uint32_t *data); - -/* Perform doubling in Galois Field GF(2^8) using the irreducible polynomial - x^8+x^4+x^3+x+1 */ -static unsigned char AES_xtime(uint32_t x) -{ - return x = (x&0x80) ? (x<<1)^0x1b : x<<1; -} - -/** - * Set up AES with the key/iv and cipher size. - */ -void AES_set_key(AES_CTX *ctx, const uint8_t *key, - const uint8_t *iv, AES_MODE mode) -{ - int i, ii; - uint32_t *W, tmp, tmp2; - const unsigned char *ip; - int words; - - switch (mode) - { - case AES_MODE_128: - i = 10; - words = 4; - break; - - case AES_MODE_256: - i = 14; - words = 8; - break; - - default: /* fail silently */ - return; - } - - ctx->rounds = i; - ctx->key_size = words; - W = ctx->ks; - for (i = 0; i < words; i+=2) - { - W[i+0]= ((uint32_t)key[ 0]<<24)| - ((uint32_t)key[ 1]<<16)| - ((uint32_t)key[ 2]<< 8)| - ((uint32_t)key[ 3] ); - W[i+1]= ((uint32_t)key[ 4]<<24)| - ((uint32_t)key[ 5]<<16)| - ((uint32_t)key[ 6]<< 8)| - ((uint32_t)key[ 7] ); - key += 8; - } - - ip = Rcon; - ii = 4 * (ctx->rounds+1); - for (i = words; i> 8)&0xff]<<16; - tmp2|=(uint32_t)aes_sbox[(tmp>>16)&0xff]<<24; - tmp2|=(uint32_t)aes_sbox[(tmp>>24) ]; - tmp=tmp2^(((unsigned int)*ip)<<24); - ip++; - } - - if ((words == 8) && ((i % words) == 4)) - { - tmp2 =(uint32_t)aes_sbox[(tmp )&0xff] ; - tmp2|=(uint32_t)aes_sbox[(tmp>> 8)&0xff]<< 8; - tmp2|=(uint32_t)aes_sbox[(tmp>>16)&0xff]<<16; - tmp2|=(uint32_t)aes_sbox[(tmp>>24) ]<<24; - tmp=tmp2; - } - - W[i]=W[i-words]^tmp; - } - - /* copy the iv across */ - memcpy(ctx->iv, iv, 16); -} - -/** - * Change a key for decryption. - */ -void AES_convert_key(AES_CTX *ctx) -{ - int i; - uint32_t *k,w,t1,t2,t3,t4; - - k = ctx->ks; - k += 4; - - for (i= ctx->rounds*4; i > 4; i--) - { - w= *k; - w = inv_mix_col(w,t1,t2,t3,t4); - *k++ =w; - } -} - -/** - * Encrypt a byte sequence (with a block size 16) using the AES cipher. - */ -void AES_cbc_encrypt(AES_CTX *ctx, const uint8_t *msg, uint8_t *out, int length) -{ - int i; - uint32_t tin[4], tout[4], iv[4]; - - memcpy(iv, ctx->iv, AES_IV_SIZE); - for (i = 0; i < 4; i++) - tout[i] = ntohl(iv[i]); - - for (length -= AES_BLOCKSIZE; length >= 0; length -= AES_BLOCKSIZE) - { - uint32_t msg_32[4]; - uint32_t out_32[4]; - memcpy(msg_32, msg, AES_BLOCKSIZE); - msg += AES_BLOCKSIZE; - - for (i = 0; i < 4; i++) - tin[i] = ntohl(msg_32[i])^tout[i]; - - AES_encrypt(ctx, tin); - - for (i = 0; i < 4; i++) - { - tout[i] = tin[i]; - out_32[i] = htonl(tout[i]); - } - - memcpy(out, out_32, AES_BLOCKSIZE); - out += AES_BLOCKSIZE; - } - - for (i = 0; i < 4; i++) - iv[i] = htonl(tout[i]); - memcpy(ctx->iv, iv, AES_IV_SIZE); -} - -/** - * Decrypt a byte sequence (with a block size 16) using the AES cipher. - */ -void AES_cbc_decrypt(AES_CTX *ctx, const uint8_t *msg, uint8_t *out, int length) -{ - int i; - uint32_t tin[4], xor[4], tout[4], data[4], iv[4]; - - memcpy(iv, ctx->iv, AES_IV_SIZE); - for (i = 0; i < 4; i++) - xor[i] = ntohl(iv[i]); - - for (length -= 16; length >= 0; length -= 16) - { - uint32_t msg_32[4]; - uint32_t out_32[4]; - memcpy(msg_32, msg, AES_BLOCKSIZE); - msg += AES_BLOCKSIZE; - - for (i = 0; i < 4; i++) - { - tin[i] = ntohl(msg_32[i]); - data[i] = tin[i]; - } - - AES_decrypt(ctx, data); - - for (i = 0; i < 4; i++) - { - tout[i] = data[i]^xor[i]; - xor[i] = tin[i]; - out_32[i] = htonl(tout[i]); - } - - memcpy(out, out_32, AES_BLOCKSIZE); - out += AES_BLOCKSIZE; - } - - for (i = 0; i < 4; i++) - iv[i] = htonl(xor[i]); - memcpy(ctx->iv, iv, AES_IV_SIZE); -} - -/** - * Encrypt a single block (16 bytes) of data - */ -static void AES_encrypt(const AES_CTX *ctx, uint32_t *data) -{ - /* To make this code smaller, generate the sbox entries on the fly. - * This will have a really heavy effect upon performance. - */ - uint32_t tmp[4]; - uint32_t tmp1, old_a0, a0, a1, a2, a3, row; - int curr_rnd; - int rounds = ctx->rounds; - const uint32_t *k = ctx->ks; - - /* Pre-round key addition */ - for (row = 0; row < 4; row++) - data[row] ^= *(k++); - - /* Encrypt one block. */ - for (curr_rnd = 0; curr_rnd < rounds; curr_rnd++) - { - /* Perform ByteSub and ShiftRow operations together */ - for (row = 0; row < 4; row++) - { - a0 = (uint32_t)aes_sbox[(data[row%4]>>24)&0xFF]; - a1 = (uint32_t)aes_sbox[(data[(row+1)%4]>>16)&0xFF]; - a2 = (uint32_t)aes_sbox[(data[(row+2)%4]>>8)&0xFF]; - a3 = (uint32_t)aes_sbox[(data[(row+3)%4])&0xFF]; - - /* Perform MixColumn iff not last round */ - if (curr_rnd < (rounds - 1)) - { - tmp1 = a0 ^ a1 ^ a2 ^ a3; - old_a0 = a0; - a0 ^= tmp1 ^ AES_xtime(a0 ^ a1); - a1 ^= tmp1 ^ AES_xtime(a1 ^ a2); - a2 ^= tmp1 ^ AES_xtime(a2 ^ a3); - a3 ^= tmp1 ^ AES_xtime(a3 ^ old_a0); - } - - tmp[row] = ((a0 << 24) | (a1 << 16) | (a2 << 8) | a3); - } - - /* KeyAddition - note that it is vital that this loop is separate from - the MixColumn operation, which must be atomic...*/ - for (row = 0; row < 4; row++) - data[row] = tmp[row] ^ *(k++); - } -} - -/** - * Decrypt a single block (16 bytes) of data - */ -static void AES_decrypt(const AES_CTX *ctx, uint32_t *data) -{ - uint32_t tmp[4]; - uint32_t xt0,xt1,xt2,xt3,xt4,xt5,xt6; - uint32_t a0, a1, a2, a3, row; - int curr_rnd; - int rounds = ctx->rounds; - const uint32_t *k = ctx->ks + ((rounds+1)*4); - - /* pre-round key addition */ - for (row=4; row > 0;row--) - data[row-1] ^= *(--k); - - /* Decrypt one block */ - for (curr_rnd = 0; curr_rnd < rounds; curr_rnd++) - { - /* Perform ByteSub and ShiftRow operations together */ - for (row = 4; row > 0; row--) - { - a0 = aes_isbox[(data[(row+3)%4]>>24)&0xFF]; - a1 = aes_isbox[(data[(row+2)%4]>>16)&0xFF]; - a2 = aes_isbox[(data[(row+1)%4]>>8)&0xFF]; - a3 = aes_isbox[(data[row%4])&0xFF]; - - /* Perform MixColumn iff not last round */ - if (curr_rnd<(rounds-1)) - { - /* The MDS cofefficients (0x09, 0x0B, 0x0D, 0x0E) - are quite large compared to encryption; this - operation slows decryption down noticeably. */ - xt0 = AES_xtime(a0^a1); - xt1 = AES_xtime(a1^a2); - xt2 = AES_xtime(a2^a3); - xt3 = AES_xtime(a3^a0); - xt4 = AES_xtime(xt0^xt1); - xt5 = AES_xtime(xt1^xt2); - xt6 = AES_xtime(xt4^xt5); - - xt0 ^= a1^a2^a3^xt4^xt6; - xt1 ^= a0^a2^a3^xt5^xt6; - xt2 ^= a0^a1^a3^xt4^xt6; - xt3 ^= a0^a1^a2^xt5^xt6; - tmp[row-1] = ((xt0<<24)|(xt1<<16)|(xt2<<8)|xt3); - } - else - tmp[row-1] = ((a0<<24)|(a1<<16)|(a2<<8)|a3); - } - - for (row = 4; row > 0; row--) - data[row-1] = tmp[row-1] ^ *(--k); - } -} - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.c deleted file mode 100644 index 53a5839293..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.c +++ /dev/null @@ -1,1575 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @defgroup bigint_api Big Integer API - * @brief The bigint implementation as used by the axTLS project. - * - * The bigint library is for RSA encryption/decryption as well as signing. - * This code tries to minimise use of malloc/free by maintaining a small - * cache. A bigint context may maintain state by being made "permanent". - * It be be later released with a bi_depermanent() and bi_free() call. - * - * It supports the following reduction techniques: - * - Classical - * - Barrett - * - Montgomery - * - * It also implements the following: - * - Karatsuba multiplication - * - Squaring - * - Sliding window exponentiation - * - Chinese Remainder Theorem (implemented in rsa.c). - * - * All the algorithms used are pretty standard, and designed for different - * data bus sizes. Negative numbers are not dealt with at all, so a subtraction - * may need to be tested for negativity. - * - * This library steals some ideas from Jef Poskanzer - * - * and GMP . It gets most of its implementation - * detail from "The Handbook of Applied Cryptography" - * - * @{ - */ - -#include -#include -#include -#include -#include -#include "bigint.h" - -#define V1 v->comps[v->size-1] /**< v1 for division */ -#define V2 v->comps[v->size-2] /**< v2 for division */ -#define U(j) tmp_u->comps[tmp_u->size-j-1] /**< uj for division */ -#define Q(j) quotient->comps[quotient->size-j-1] /**< qj for division */ - -static bigint *bi_int_multiply(BI_CTX *ctx, bigint *bi, comp i); -static bigint *bi_int_divide(BI_CTX *ctx, bigint *biR, comp denom); -static bigint *alloc(BI_CTX *ctx, int size); -static bigint *trim(bigint *bi); -static void more_comps(bigint *bi, int n); -#if defined(CONFIG_BIGINT_KARATSUBA) || defined(CONFIG_BIGINT_BARRETT) || \ - defined(CONFIG_BIGINT_MONTGOMERY) -static bigint *comp_right_shift(bigint *biR, int num_shifts); -static bigint *comp_left_shift(bigint *biR, int num_shifts); -#endif - -#ifdef CONFIG_BIGINT_CHECK_ON -static void check(const bigint *bi); -#else -#define check(A) /**< disappears in normal production mode */ -#endif - - -/** - * @brief Start a new bigint context. - * @return A bigint context. - */ -BI_CTX *bi_initialize(void) -{ - /* calloc() sets everything to zero */ - BI_CTX *ctx = (BI_CTX *)calloc(1, sizeof(BI_CTX)); - - /* the radix */ - ctx->bi_radix = alloc(ctx, 2); - ctx->bi_radix->comps[0] = 0; - ctx->bi_radix->comps[1] = 1; - bi_permanent(ctx->bi_radix); - return ctx; -} - -/** - * @brief Close the bigint context and free any resources. - * - * Free up any used memory - a check is done if all objects were not - * properly freed. - * @param ctx [in] The bigint session context. - */ -void bi_terminate(BI_CTX *ctx) -{ - bi_depermanent(ctx->bi_radix); - bi_free(ctx, ctx->bi_radix); - - if (ctx->active_count != 0) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("bi_terminate: there were %d un-freed bigints\n", - ctx->active_count); -#endif - abort(); - } - - bi_clear_cache(ctx); - free(ctx); -} - -/** - *@brief Clear the memory cache. - */ -void bi_clear_cache(BI_CTX *ctx) -{ - bigint *p, *pn; - - if (ctx->free_list == NULL) - return; - - for (p = ctx->free_list; p != NULL; p = pn) - { - pn = p->next; - free(p->comps); - free(p); - } - - ctx->free_count = 0; - ctx->free_list = NULL; -} - -/** - * @brief Increment the number of references to this object. - * It does not do a full copy. - * @param bi [in] The bigint to copy. - * @return A reference to the same bigint. - */ -bigint *bi_copy(bigint *bi) -{ - check(bi); - if (bi->refs != PERMANENT) - bi->refs++; - return bi; -} - -/** - * @brief Simply make a bigint object "unfreeable" if bi_free() is called on it. - * - * For this object to be freed, bi_depermanent() must be called. - * @param bi [in] The bigint to be made permanent. - */ -void bi_permanent(bigint *bi) -{ - check(bi); - if (bi->refs != 1) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("bi_permanent: refs was not 1\n"); -#endif - abort(); - } - - bi->refs = PERMANENT; -} - -/** - * @brief Take a permanent object and make it eligible for freedom. - * @param bi [in] The bigint to be made back to temporary. - */ -void bi_depermanent(bigint *bi) -{ - check(bi); - if (bi->refs != PERMANENT) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("bi_depermanent: bigint was not permanent\n"); -#endif - abort(); - } - - bi->refs = 1; -} - -/** - * @brief Free a bigint object so it can be used again. - * - * The memory itself it not actually freed, just tagged as being available - * @param ctx [in] The bigint session context. - * @param bi [in] The bigint to be freed. - */ -void bi_free(BI_CTX *ctx, bigint *bi) -{ - check(bi); - if (bi->refs == PERMANENT) - { - return; - } - - if (--bi->refs > 0) - { - return; - } - - bi->next = ctx->free_list; - ctx->free_list = bi; - ctx->free_count++; - - if (--ctx->active_count < 0) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("bi_free: active_count went negative " - "- double-freed bigint?\n"); -#endif - abort(); - } -} - -/** - * @brief Convert an (unsigned) integer into a bigint. - * @param ctx [in] The bigint session context. - * @param i [in] The (unsigned) integer to be converted. - * - */ -bigint *int_to_bi(BI_CTX *ctx, comp i) -{ - bigint *biR = alloc(ctx, 1); - biR->comps[0] = i; - return biR; -} - -/** - * @brief Do a full copy of the bigint object. - * @param ctx [in] The bigint session context. - * @param bi [in] The bigint object to be copied. - */ -bigint *bi_clone(BI_CTX *ctx, const bigint *bi) -{ - bigint *biR = alloc(ctx, bi->size); - check(bi); - memcpy(biR->comps, bi->comps, bi->size*COMP_BYTE_SIZE); - return biR; -} - -/** - * @brief Perform an addition operation between two bigints. - * @param ctx [in] The bigint session context. - * @param bia [in] A bigint. - * @param bib [in] Another bigint. - * @return The result of the addition. - */ -bigint *bi_add(BI_CTX *ctx, bigint *bia, bigint *bib) -{ - int n; - comp carry = 0; - comp *pa, *pb; - - check(bia); - check(bib); - - n = max(bia->size, bib->size); - more_comps(bia, n+1); - more_comps(bib, n); - pa = bia->comps; - pb = bib->comps; - - do - { - comp sl, rl, cy1; - sl = *pa + *pb++; - rl = sl + carry; - cy1 = sl < *pa; - carry = cy1 | (rl < sl); - *pa++ = rl; - } while (--n != 0); - - *pa = carry; /* do overflow */ - bi_free(ctx, bib); - return trim(bia); -} - -/** - * @brief Perform a subtraction operation between two bigints. - * @param ctx [in] The bigint session context. - * @param bia [in] A bigint. - * @param bib [in] Another bigint. - * @param is_negative [out] If defined, indicates that the result was negative. - * is_negative may be null. - * @return The result of the subtraction. The result is always positive. - */ -bigint *bi_subtract(BI_CTX *ctx, - bigint *bia, bigint *bib, int *is_negative) -{ - int n = bia->size; - comp *pa, *pb, carry = 0; - - check(bia); - check(bib); - - more_comps(bib, n); - pa = bia->comps; - pb = bib->comps; - - do - { - comp sl, rl, cy1; - sl = *pa - *pb++; - rl = sl - carry; - cy1 = sl > *pa; - carry = cy1 | (rl > sl); - *pa++ = rl; - } while (--n != 0); - - if (is_negative) /* indicate a negative result */ - { - *is_negative = carry; - } - - bi_free(ctx, trim(bib)); /* put bib back to the way it was */ - return trim(bia); -} - -/** - * Perform a multiply between a bigint an an (unsigned) integer - */ -static bigint *bi_int_multiply(BI_CTX *ctx, bigint *bia, comp b) -{ - int j = 0, n = bia->size; - bigint *biR = alloc(ctx, n + 1); - comp carry = 0; - comp *r = biR->comps; - comp *a = bia->comps; - - check(bia); - - /* clear things to start with */ - memset(r, 0, ((n+1)*COMP_BYTE_SIZE)); - - do - { - long_comp tmp = *r + (long_comp)a[j]*b + carry; - *r++ = (comp)tmp; /* downsize */ - carry = (comp)(tmp >> COMP_BIT_SIZE); - } while (++j < n); - - *r = carry; - bi_free(ctx, bia); - return trim(biR); -} - -/** - * @brief Does both division and modulo calculations. - * - * Used extensively when doing classical reduction. - * @param ctx [in] The bigint session context. - * @param u [in] A bigint which is the numerator. - * @param v [in] Either the denominator or the modulus depending on the mode. - * @param is_mod [n] Determines if this is a normal division (0) or a reduction - * (1). - * @return The result of the division/reduction. - */ -bigint *bi_divide(BI_CTX *ctx, bigint *u, bigint *v, int is_mod) -{ - int n = v->size, m = u->size-n; - int j = 0, orig_u_size = u->size; - uint8_t mod_offset = ctx->mod_offset; - comp d; - bigint *quotient, *tmp_u; - comp q_dash; - - check(u); - check(v); - - /* if doing reduction and we are < mod, then return mod */ - if (is_mod && bi_compare(v, u) > 0) - { - bi_free(ctx, v); - return u; - } - - quotient = alloc(ctx, m+1); - tmp_u = alloc(ctx, n+1); - v = trim(v); /* make sure we have no leading 0's */ - d = (comp)((long_comp)COMP_RADIX/(V1+1)); - - /* clear things to start with */ - memset(quotient->comps, 0, ((quotient->size)*COMP_BYTE_SIZE)); - - /* normalise */ - if (d > 1) - { - u = bi_int_multiply(ctx, u, d); - - if (is_mod) - { - v = ctx->bi_normalised_mod[mod_offset]; - } - else - { - v = bi_int_multiply(ctx, v, d); - } - } - - if (orig_u_size == u->size) /* new digit position u0 */ - { - more_comps(u, orig_u_size + 1); - } - - do - { - /* get a temporary short version of u */ - memcpy(tmp_u->comps, &u->comps[u->size-n-1-j], (n+1)*COMP_BYTE_SIZE); - - /* calculate q' */ - if (U(0) == V1) - { - q_dash = COMP_RADIX-1; - } - else - { - q_dash = (comp)(((long_comp)U(0)*COMP_RADIX + U(1))/V1); - } - - if (v->size > 1 && V2) - { - /* we are implementing the following: - if (V2*q_dash > (((U(0)*COMP_RADIX + U(1) - - q_dash*V1)*COMP_RADIX) + U(2))) ... */ - comp inner = (comp)((long_comp)COMP_RADIX*U(0) + U(1) - - (long_comp)q_dash*V1); - if ((long_comp)V2*q_dash > (long_comp)inner*COMP_RADIX + U(2)) - { - q_dash--; - } - } - - /* multiply and subtract */ - if (q_dash) - { - int is_negative; - tmp_u = bi_subtract(ctx, tmp_u, - bi_int_multiply(ctx, bi_copy(v), q_dash), &is_negative); - more_comps(tmp_u, n+1); - - Q(j) = q_dash; - - /* add back */ - if (is_negative) - { - Q(j)--; - tmp_u = bi_add(ctx, tmp_u, bi_copy(v)); - - /* lop off the carry */ - tmp_u->size--; - v->size--; - } - } - else - { - Q(j) = 0; - } - - /* copy back to u */ - memcpy(&u->comps[u->size-n-1-j], tmp_u->comps, (n+1)*COMP_BYTE_SIZE); - } while (++j <= m); - - bi_free(ctx, tmp_u); - bi_free(ctx, v); - - if (is_mod) /* get the remainder */ - { - bi_free(ctx, quotient); - return bi_int_divide(ctx, trim(u), d); - } - else /* get the quotient */ - { - bi_free(ctx, u); - return trim(quotient); - } -} - -/* - * Perform an integer divide on a bigint. - */ -static bigint *bi_int_divide(BI_CTX *ctx, bigint *biR, comp denom) -{ - int i = biR->size - 1; - long_comp r = 0; - - check(biR); - - do - { - r = (r<comps[i]; - biR->comps[i] = (comp)(r / denom); - r %= denom; - } while (--i >= 0); - - return trim(biR); -} - -#ifdef CONFIG_BIGINT_MONTGOMERY -/** - * There is a need for the value of integer N' such that B^-1(B-1)-N^-1N'=1, - * where B^-1(B-1) mod N=1. Actually, only the least significant part of - * N' is needed, hence the definition N0'=N' mod b. We reproduce below the - * simple algorithm from an article by Dusse and Kaliski to efficiently - * find N0' from N0 and b */ -static comp modular_inverse(bigint *bim) -{ - int i; - comp t = 1; - comp two_2_i_minus_1 = 2; /* 2^(i-1) */ - long_comp two_2_i = 4; /* 2^i */ - comp N = bim->comps[0]; - - for (i = 2; i <= COMP_BIT_SIZE; i++) - { - if ((long_comp)N*t%two_2_i >= two_2_i_minus_1) - { - t += two_2_i_minus_1; - } - - two_2_i_minus_1 <<= 1; - two_2_i <<= 1; - } - - return (comp)(COMP_RADIX-t); -} -#endif - -#if defined(CONFIG_BIGINT_KARATSUBA) || defined(CONFIG_BIGINT_BARRETT) || \ - defined(CONFIG_BIGINT_MONTGOMERY) -/** - * Take each component and shift down (in terms of components) - */ -static bigint *comp_right_shift(bigint *biR, int num_shifts) -{ - int i = biR->size-num_shifts; - comp *x = biR->comps; - comp *y = &biR->comps[num_shifts]; - - check(biR); - - if (i <= 0) /* have we completely right shifted? */ - { - biR->comps[0] = 0; /* return 0 */ - biR->size = 1; - return biR; - } - - do - { - *x++ = *y++; - } while (--i > 0); - - biR->size -= num_shifts; - return biR; -} - -/** - * Take each component and shift it up (in terms of components) - */ -static bigint *comp_left_shift(bigint *biR, int num_shifts) -{ - int i = biR->size-1; - comp *x, *y; - - check(biR); - - if (num_shifts <= 0) - { - return biR; - } - - more_comps(biR, biR->size + num_shifts); - - x = &biR->comps[i+num_shifts]; - y = &biR->comps[i]; - - do - { - *x-- = *y--; - } while (i--); - - memset(biR->comps, 0, num_shifts*COMP_BYTE_SIZE); /* zero LS comps */ - return biR; -} -#endif - -/** - * @brief Allow a binary sequence to be imported as a bigint. - * @param ctx [in] The bigint session context. - * @param data [in] The data to be converted. - * @param size [in] The number of bytes of data. - * @return A bigint representing this data. - */ -bigint *bi_import(BI_CTX *ctx, const uint8_t *data, int size) -{ - bigint *biR = alloc(ctx, (size+COMP_BYTE_SIZE-1)/COMP_BYTE_SIZE); - int i, j = 0, offset = 0; - - memset(biR->comps, 0, biR->size*COMP_BYTE_SIZE); - - for (i = size-1; i >= 0; i--) - { - biR->comps[offset] += data[i] << (j*8); - - if (++j == COMP_BYTE_SIZE) - { - j = 0; - offset ++; - } - } - - return trim(biR); -} - -#ifdef CONFIG_SSL_FULL_MODE -/** - * @brief The testharness uses this code to import text hex-streams and - * convert them into bigints. - * @param ctx [in] The bigint session context. - * @param data [in] A string consisting of hex characters. The characters must - * be in upper case. - * @return A bigint representing this data. - */ -bigint *bi_str_import(BI_CTX *ctx, const char *data) -{ - int size = strlen(data); - bigint *biR = alloc(ctx, (size+COMP_NUM_NIBBLES-1)/COMP_NUM_NIBBLES); - int i, j = 0, offset = 0; - memset(biR->comps, 0, biR->size*COMP_BYTE_SIZE); - - for (i = size-1; i >= 0; i--) - { - int num = (data[i] <= '9') ? (data[i] - '0') : (data[i] - 'A' + 10); - biR->comps[offset] += num << (j*4); - - if (++j == COMP_NUM_NIBBLES) - { - j = 0; - offset ++; - } - } - - return biR; -} - -void bi_print(const char *label, bigint *x) -{ - int i, j; - - if (x == NULL) - { - printf("%s: (null)\n", label); - return; - } - - printf("%s: (size %d)\n", label, x->size); - for (i = x->size-1; i >= 0; i--) - { - for (j = COMP_NUM_NIBBLES-1; j >= 0; j--) - { - comp mask = 0x0f << (j*4); - comp num = (x->comps[i] & mask) >> (j*4); - putc((num <= 9) ? (num + '0') : (num + 'A' - 10), stdout); - } - } - - printf("\n"); -} -#endif - -/** - * @brief Take a bigint and convert it into a byte sequence. - * - * This is useful after a decrypt operation. - * @param ctx [in] The bigint session context. - * @param x [in] The bigint to be converted. - * @param data [out] The converted data as a byte stream. - * @param size [in] The maximum size of the byte stream. Unused bytes will be - * zeroed. - */ -void bi_export(BI_CTX *ctx, bigint *x, uint8_t *data, int size) -{ - int i, j, k = size-1; - - check(x); - memset(data, 0, size); /* ensure all leading 0's are cleared */ - - for (i = 0; i < x->size; i++) - { - for (j = 0; j < COMP_BYTE_SIZE; j++) - { - comp mask = 0xff << (j*8); - int num = (x->comps[i] & mask) >> (j*8); - data[k--] = num; - - if (k < 0) - { - break; - } - } - } - - bi_free(ctx, x); -} - -/** - * @brief Pre-calculate some of the expensive steps in reduction. - * - * This function should only be called once (normally when a session starts). - * When the session is over, bi_free_mod() should be called. bi_mod_power() - * relies on this function being called. - * @param ctx [in] The bigint session context. - * @param bim [in] The bigint modulus that will be used. - * @param mod_offset [in] There are three moduluii that can be stored - the - * standard modulus, and its two primes p and q. This offset refers to which - * modulus we are referring to. - * @see bi_free_mod(), bi_mod_power(). - */ -void bi_set_mod(BI_CTX *ctx, bigint *bim, int mod_offset) -{ - int k = bim->size; - comp d = (comp)((long_comp)COMP_RADIX/(bim->comps[k-1]+1)); -#ifdef CONFIG_BIGINT_MONTGOMERY - bigint *R, *R2; -#endif - - ctx->bi_mod[mod_offset] = bim; - bi_permanent(ctx->bi_mod[mod_offset]); - ctx->bi_normalised_mod[mod_offset] = bi_int_multiply(ctx, bim, d); - bi_permanent(ctx->bi_normalised_mod[mod_offset]); - -#if defined(CONFIG_BIGINT_MONTGOMERY) - /* set montgomery variables */ - R = comp_left_shift(bi_clone(ctx, ctx->bi_radix), k-1); /* R */ - R2 = comp_left_shift(bi_clone(ctx, ctx->bi_radix), k*2-1); /* R^2 */ - ctx->bi_RR_mod_m[mod_offset] = bi_mod(ctx, R2); /* R^2 mod m */ - ctx->bi_R_mod_m[mod_offset] = bi_mod(ctx, R); /* R mod m */ - - bi_permanent(ctx->bi_RR_mod_m[mod_offset]); - bi_permanent(ctx->bi_R_mod_m[mod_offset]); - - ctx->N0_dash[mod_offset] = modular_inverse(ctx->bi_mod[mod_offset]); - -#elif defined (CONFIG_BIGINT_BARRETT) - ctx->bi_mu[mod_offset] = - bi_divide(ctx, comp_left_shift( - bi_clone(ctx, ctx->bi_radix), k*2-1), ctx->bi_mod[mod_offset], 0); - bi_permanent(ctx->bi_mu[mod_offset]); -#endif -} - -/** - * @brief Used when cleaning various bigints at the end of a session. - * @param ctx [in] The bigint session context. - * @param mod_offset [in] The offset to use. - * @see bi_set_mod(). - */ -void bi_free_mod(BI_CTX *ctx, int mod_offset) -{ - bi_depermanent(ctx->bi_mod[mod_offset]); - bi_free(ctx, ctx->bi_mod[mod_offset]); -#if defined (CONFIG_BIGINT_MONTGOMERY) - bi_depermanent(ctx->bi_RR_mod_m[mod_offset]); - bi_depermanent(ctx->bi_R_mod_m[mod_offset]); - bi_free(ctx, ctx->bi_RR_mod_m[mod_offset]); - bi_free(ctx, ctx->bi_R_mod_m[mod_offset]); -#elif defined(CONFIG_BIGINT_BARRETT) - bi_depermanent(ctx->bi_mu[mod_offset]); - bi_free(ctx, ctx->bi_mu[mod_offset]); -#endif - bi_depermanent(ctx->bi_normalised_mod[mod_offset]); - bi_free(ctx, ctx->bi_normalised_mod[mod_offset]); -} - -/** - * Perform a standard multiplication between two bigints. - */ -static bigint *regular_multiply(BI_CTX *ctx, bigint *bia, bigint *bib) -{ - int i, j, i_plus_j; - int n = bia->size; - int t = bib->size; - bigint *biR = alloc(ctx, n + t); - comp *sr = biR->comps; - comp *sa = bia->comps; - comp *sb = bib->comps; - - check(bia); - check(bib); - - /* clear things to start with */ - memset(biR->comps, 0, ((n+t)*COMP_BYTE_SIZE)); - i = 0; - - do - { - comp carry = 0; - comp b = *sb++; - i_plus_j = i; - j = 0; - - do - { - long_comp tmp = sr[i_plus_j] + (long_comp)sa[j]*b + carry; - sr[i_plus_j++] = (comp)tmp; /* downsize */ - carry = (comp)(tmp >> COMP_BIT_SIZE); - } while (++j < n); - - sr[i_plus_j] = carry; - } while (++i < t); - - bi_free(ctx, bia); - bi_free(ctx, bib); - return trim(biR); -} - -#ifdef CONFIG_BIGINT_KARATSUBA -/* - * Karatsuba improves on regular multiplication due to only 3 multiplications - * being done instead of 4. The additional additions/subtractions are O(N) - * rather than O(N^2) and so for big numbers it saves on a few operations - */ -static bigint *karatsuba(BI_CTX *ctx, bigint *bia, bigint *bib, int is_square) -{ - bigint *x0, *x1; - bigint *p0, *p1, *p2; - int m; - - if (is_square) - { - m = (bia->size + 1)/2; - } - else - { - m = (max(bia->size, bib->size) + 1)/2; - } - - x0 = bi_clone(ctx, bia); - x0->size = m; - x1 = bi_clone(ctx, bia); - comp_right_shift(x1, m); - bi_free(ctx, bia); - - /* work out the 3 partial products */ - if (is_square) - { - p0 = bi_square(ctx, bi_copy(x0)); - p2 = bi_square(ctx, bi_copy(x1)); - p1 = bi_square(ctx, bi_add(ctx, x0, x1)); - } - else /* normal multiply */ - { - bigint *y0, *y1; - y0 = bi_clone(ctx, bib); - y0->size = m; - y1 = bi_clone(ctx, bib); - comp_right_shift(y1, m); - bi_free(ctx, bib); - - p0 = bi_multiply(ctx, bi_copy(x0), bi_copy(y0)); - p2 = bi_multiply(ctx, bi_copy(x1), bi_copy(y1)); - p1 = bi_multiply(ctx, bi_add(ctx, x0, x1), bi_add(ctx, y0, y1)); - } - - p1 = bi_subtract(ctx, - bi_subtract(ctx, p1, bi_copy(p2), NULL), bi_copy(p0), NULL); - - comp_left_shift(p1, m); - comp_left_shift(p2, 2*m); - return bi_add(ctx, p1, bi_add(ctx, p0, p2)); -} -#endif - -/** - * @brief Perform a multiplication operation between two bigints. - * @param ctx [in] The bigint session context. - * @param bia [in] A bigint. - * @param bib [in] Another bigint. - * @return The result of the multiplication. - */ -bigint *bi_multiply(BI_CTX *ctx, bigint *bia, bigint *bib) -{ - check(bia); - check(bib); - -#ifdef CONFIG_BIGINT_KARATSUBA - if (min(bia->size, bib->size) < MUL_KARATSUBA_THRESH) - { - return regular_multiply(ctx, bia, bib); - } - - return karatsuba(ctx, bia, bib, 0); -#else - return regular_multiply(ctx, bia, bib); -#endif -} - -#ifdef CONFIG_BIGINT_SQUARE -/* - * Perform the actual square operion. It takes into account overflow. - */ -static bigint *regular_square(BI_CTX *ctx, bigint *bi) -{ - int t = bi->size; - int i = 0, j; - bigint *biR = alloc(ctx, t*2); - comp *w = biR->comps; - comp *x = bi->comps; - comp carry; - - memset(w, 0, biR->size*COMP_BYTE_SIZE); - - do - { - long_comp tmp = w[2*i] + (long_comp)x[i]*x[i]; - comp u = 0; - w[2*i] = (comp)tmp; - carry = (comp)(tmp >> COMP_BIT_SIZE); - - for (j = i+1; j < t; j++) - { - long_comp xx = (long_comp)x[i]*x[j]; - long_comp xx2 = 2*xx; - long_comp blob = (long_comp)w[i+j]+carry; - - if (u) /* previous overflow */ - { - blob += COMP_RADIX; - } - - - u = 0; - tmp = xx2 + blob; - - /* check for overflow */ - if ((COMP_MAX-xx) < xx || (COMP_MAX-xx2) < blob) - { - u = 1; - } - - w[i+j] = (comp)tmp; - carry = (comp)(tmp >> COMP_BIT_SIZE); - } - - w[i+t] += carry; - - if (u) - { - w[i+t+1] = 1; /* add carry */ - } - } while (++i < t); - - bi_free(ctx, bi); - return trim(biR); -} - -/** - * @brief Perform a square operation on a bigint. - * @param ctx [in] The bigint session context. - * @param bia [in] A bigint. - * @return The result of the multiplication. - */ -bigint *bi_square(BI_CTX *ctx, bigint *bia) -{ - check(bia); - -#ifdef CONFIG_BIGINT_KARATSUBA - if (bia->size < SQU_KARATSUBA_THRESH) - { - return regular_square(ctx, bia); - } - - return karatsuba(ctx, bia, NULL, 1); -#else - return regular_square(ctx, bia); -#endif -} -#endif - -/** - * @brief Compare two bigints. - * @param bia [in] A bigint. - * @param bib [in] Another bigint. - * @return -1 if smaller, 1 if larger and 0 if equal. - */ -int bi_compare(bigint *bia, bigint *bib) -{ - int r, i; - - check(bia); - check(bib); - - if (bia->size > bib->size) - r = 1; - else if (bia->size < bib->size) - r = -1; - else - { - comp *a = bia->comps; - comp *b = bib->comps; - - /* Same number of components. Compare starting from the high end - * and working down. */ - r = 0; - i = bia->size - 1; - - do - { - if (a[i] > b[i]) - { - r = 1; - break; - } - else if (a[i] < b[i]) - { - r = -1; - break; - } - } while (--i >= 0); - } - - return r; -} - -/* - * Allocate and zero more components. Does not consume bi. - */ -static void more_comps(bigint *bi, int n) -{ - if (n > bi->max_comps) - { - bi->max_comps = max(bi->max_comps * 2, n); - bi->comps = (comp*)realloc(bi->comps, bi->max_comps * COMP_BYTE_SIZE); - } - - if (n > bi->size) - { - memset(&bi->comps[bi->size], 0, (n-bi->size)*COMP_BYTE_SIZE); - } - - bi->size = n; -} - -/* - * Make a new empty bigint. It may just use an old one if one is available. - * Otherwise get one off the heap. - */ -static bigint *alloc(BI_CTX *ctx, int size) -{ - bigint *biR; - - /* Can we recycle an old bigint? */ - if (ctx->free_list != NULL) - { - biR = ctx->free_list; - ctx->free_list = biR->next; - ctx->free_count--; - - if (biR->refs != 0) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("alloc: refs was not 0\n"); -#endif - abort(); /* create a stack trace from a core dump */ - } - - more_comps(biR, size); - } - else - { - /* No free bigints available - create a new one. */ - biR = (bigint *)malloc(sizeof(bigint)); - biR->comps = (comp*)malloc(size * COMP_BYTE_SIZE); - biR->max_comps = size; /* give some space to spare */ - } - - biR->size = size; - biR->refs = 1; - biR->next = NULL; - ctx->active_count++; - return biR; -} - -/* - * Work out the highest '1' bit in an exponent. Used when doing sliding-window - * exponentiation. - */ -static int find_max_exp_index(bigint *biexp) -{ - int i = COMP_BIT_SIZE-1; - comp shift = COMP_RADIX/2; - comp test = biexp->comps[biexp->size-1]; /* assume no leading zeroes */ - - check(biexp); - - do - { - if (test & shift) - { - return i+(biexp->size-1)*COMP_BIT_SIZE; - } - - shift >>= 1; - } while (--i != 0); - - return -1; /* error - must have been a leading 0 */ -} - -/* - * Is a particular bit is an exponent 1 or 0? Used when doing sliding-window - * exponentiation. - */ -static int exp_bit_is_one(bigint *biexp, int offset) -{ - comp test = biexp->comps[offset / COMP_BIT_SIZE]; - int num_shifts = offset % COMP_BIT_SIZE; - comp shift = 1; - int i; - - check(biexp); - - for (i = 0; i < num_shifts; i++) - { - shift <<= 1; - } - - return test & shift; -} - -#ifdef CONFIG_BIGINT_CHECK_ON -/* - * Perform a sanity check on bi. - */ -static void check(const bigint *bi) -{ - if (bi->refs <= 0) - { - printf("check: zero or negative refs in bigint\n"); - abort(); - } - - if (bi->next != NULL) - { - printf("check: attempt to use a bigint from " - "the free list\n"); - abort(); - } -} -#endif - -/* - * Delete any leading 0's (and allow for 0). - */ -static bigint *trim(bigint *bi) -{ - check(bi); - - while (bi->comps[bi->size-1] == 0 && bi->size > 1) - { - bi->size--; - } - - return bi; -} - -#if defined(CONFIG_BIGINT_MONTGOMERY) -/** - * @brief Perform a single montgomery reduction. - * @param ctx [in] The bigint session context. - * @param bixy [in] A bigint. - * @return The result of the montgomery reduction. - */ -bigint *bi_mont(BI_CTX *ctx, bigint *bixy) -{ - int i = 0, n; - uint8_t mod_offset = ctx->mod_offset; - bigint *bim = ctx->bi_mod[mod_offset]; - comp mod_inv = ctx->N0_dash[mod_offset]; - - check(bixy); - - if (ctx->use_classical) /* just use classical instead */ - { - return bi_mod(ctx, bixy); - } - - n = bim->size; - - do - { - bixy = bi_add(ctx, bixy, comp_left_shift( - bi_int_multiply(ctx, bim, bixy->comps[i]*mod_inv), i)); - } while (++i < n); - - comp_right_shift(bixy, n); - - if (bi_compare(bixy, bim) >= 0) - { - bixy = bi_subtract(ctx, bixy, bim, NULL); - } - - return bixy; -} - -#elif defined(CONFIG_BIGINT_BARRETT) -/* - * Stomp on the most significant components to give the illusion of a "mod base - * radix" operation - */ -static bigint *comp_mod(bigint *bi, int mod) -{ - check(bi); - - if (bi->size > mod) - { - bi->size = mod; - } - - return bi; -} - -/* - * Barrett reduction has no need for some parts of the product, so ignore bits - * of the multiply. This routine gives Barrett its big performance - * improvements over Classical/Montgomery reduction methods. - */ -static bigint *partial_multiply(BI_CTX *ctx, bigint *bia, bigint *bib, - int inner_partial, int outer_partial) -{ - int i = 0, j, n = bia->size, t = bib->size; - bigint *biR; - comp carry; - comp *sr, *sa, *sb; - - check(bia); - check(bib); - - biR = alloc(ctx, n + t); - sa = bia->comps; - sb = bib->comps; - sr = biR->comps; - - if (inner_partial) - { - memset(sr, 0, inner_partial*COMP_BYTE_SIZE); - } - else /* outer partial */ - { - if (n < outer_partial || t < outer_partial) /* should we bother? */ - { - bi_free(ctx, bia); - bi_free(ctx, bib); - biR->comps[0] = 0; /* return 0 */ - biR->size = 1; - return biR; - } - - memset(&sr[outer_partial], 0, (n+t-outer_partial)*COMP_BYTE_SIZE); - } - - do - { - comp *a = sa; - comp b = *sb++; - long_comp tmp; - int i_plus_j = i; - carry = 0; - j = n; - - if (outer_partial && i_plus_j < outer_partial) - { - i_plus_j = outer_partial; - a = &sa[outer_partial-i]; - j = n-(outer_partial-i); - } - - do - { - if (inner_partial && i_plus_j >= inner_partial) - { - break; - } - - tmp = sr[i_plus_j] + ((long_comp)*a++)*b + carry; - sr[i_plus_j++] = (comp)tmp; /* downsize */ - carry = (comp)(tmp >> COMP_BIT_SIZE); - } while (--j != 0); - - sr[i_plus_j] = carry; - } while (++i < t); - - bi_free(ctx, bia); - bi_free(ctx, bib); - return trim(biR); -} - -/** - * @brief Perform a single Barrett reduction. - * @param ctx [in] The bigint session context. - * @param bi [in] A bigint. - * @return The result of the Barrett reduction. - */ -bigint *bi_barrett(BI_CTX *ctx, bigint *bi) -{ - bigint *q1, *q2, *q3, *r1, *r2, *r; - uint8_t mod_offset = ctx->mod_offset; - bigint *bim = ctx->bi_mod[mod_offset]; - int k = bim->size; - - check(bi); - check(bim); - - /* use Classical method instead - Barrett cannot help here */ - if (bi->size > k*2) - { - return bi_mod(ctx, bi); - } - - q1 = comp_right_shift(bi_clone(ctx, bi), k-1); - - /* do outer partial multiply */ - q2 = partial_multiply(ctx, q1, ctx->bi_mu[mod_offset], 0, k-1); - q3 = comp_right_shift(q2, k+1); - r1 = comp_mod(bi, k+1); - - /* do inner partial multiply */ - r2 = comp_mod(partial_multiply(ctx, q3, bim, k+1, 0), k+1); - r = bi_subtract(ctx, r1, r2, NULL); - - /* if (r >= m) r = r - m; */ - if (bi_compare(r, bim) >= 0) - { - r = bi_subtract(ctx, r, bim, NULL); - } - - return r; -} -#endif /* CONFIG_BIGINT_BARRETT */ - -#ifdef CONFIG_BIGINT_SLIDING_WINDOW -/* - * Work out g1, g3, g5, g7... etc for the sliding-window algorithm - */ -static void precompute_slide_window(BI_CTX *ctx, int window, bigint *g1) -{ - int k = 1, i; - bigint *g2; - - for (i = 0; i < window-1; i++) /* compute 2^(window-1) */ - { - k <<= 1; - } - - ctx->g = (bigint **)malloc(k*sizeof(bigint *)); - ctx->g[0] = bi_clone(ctx, g1); - bi_permanent(ctx->g[0]); - g2 = bi_residue(ctx, bi_square(ctx, ctx->g[0])); /* g^2 */ - - for (i = 1; i < k; i++) - { - ctx->g[i] = bi_residue(ctx, bi_multiply(ctx, ctx->g[i-1], bi_copy(g2))); - bi_permanent(ctx->g[i]); - } - - bi_free(ctx, g2); - ctx->window = k; -} -#endif - -/** - * @brief Perform a modular exponentiation. - * - * This function requires bi_set_mod() to have been called previously. This is - * one of the optimisations used for performance. - * @param ctx [in] The bigint session context. - * @param bi [in] The bigint on which to perform the mod power operation. - * @param biexp [in] The bigint exponent. - * @return The result of the mod exponentiation operation - * @see bi_set_mod(). - */ -bigint *bi_mod_power(BI_CTX *ctx, bigint *bi, bigint *biexp) -{ - int i = find_max_exp_index(biexp), j, window_size = 1; - bigint *biR = int_to_bi(ctx, 1); - -#if defined(CONFIG_BIGINT_MONTGOMERY) - uint8_t mod_offset = ctx->mod_offset; - if (!ctx->use_classical) - { - /* preconvert */ - bi = bi_mont(ctx, - bi_multiply(ctx, bi, ctx->bi_RR_mod_m[mod_offset])); /* x' */ - bi_free(ctx, biR); - biR = ctx->bi_R_mod_m[mod_offset]; /* A */ - } -#endif - - check(bi); - check(biexp); - -#ifdef CONFIG_BIGINT_SLIDING_WINDOW - for (j = i; j > 32; j /= 5) /* work out an optimum size */ - window_size++; - - /* work out the slide constants */ - precompute_slide_window(ctx, window_size, bi); -#else /* just one constant */ - ctx->g = (bigint **)malloc(sizeof(bigint *)); - ctx->g[0] = bi_clone(ctx, bi); - ctx->window = 1; - bi_permanent(ctx->g[0]); -#endif - - /* if sliding-window is off, then only one bit will be done at a time and - * will reduce to standard left-to-right exponentiation */ - do - { - if (exp_bit_is_one(biexp, i)) - { - int l = i-window_size+1; - int part_exp = 0; - - if (l < 0) /* LSB of exponent will always be 1 */ - l = 0; - else - { - while (exp_bit_is_one(biexp, l) == 0) - l++; /* go back up */ - } - - /* build up the section of the exponent */ - for (j = i; j >= l; j--) - { - biR = bi_residue(ctx, bi_square(ctx, biR)); - if (exp_bit_is_one(biexp, j)) - part_exp++; - - if (j != l) - part_exp <<= 1; - } - - part_exp = (part_exp-1)/2; /* adjust for array */ - biR = bi_residue(ctx, bi_multiply(ctx, biR, ctx->g[part_exp])); - i = l-1; - } - else /* square it */ - { - biR = bi_residue(ctx, bi_square(ctx, biR)); - i--; - } - } while (i >= 0); - - /* cleanup */ - for (i = 0; i < ctx->window; i++) - { - bi_depermanent(ctx->g[i]); - bi_free(ctx, ctx->g[i]); - } - - free(ctx->g); - bi_free(ctx, bi); - bi_free(ctx, biexp); -#if defined CONFIG_BIGINT_MONTGOMERY - return ctx->use_classical ? biR : bi_mont(ctx, biR); /* convert back */ -#else /* CONFIG_BIGINT_CLASSICAL or CONFIG_BIGINT_BARRETT */ - return biR; -#endif -} - -#ifdef CONFIG_SSL_CERT_VERIFICATION -/** - * @brief Perform a modular exponentiation using a temporary modulus. - * - * We need this function to check the signatures of certificates. The modulus - * of this function is temporary as it's just used for authentication. - * @param ctx [in] The bigint session context. - * @param bi [in] The bigint to perform the exp/mod. - * @param bim [in] The temporary modulus. - * @param biexp [in] The bigint exponent. - * @return The result of the mod exponentiation operation - * @see bi_set_mod(). - */ -bigint *bi_mod_power2(BI_CTX *ctx, bigint *bi, bigint *bim, bigint *biexp) -{ - bigint *biR, *tmp_biR; - - /* Set up a temporary bigint context and transfer what we need between - * them. We need to do this since we want to keep the original modulus - * which is already in this context. This operation is only called when - * doing peer verification, and so is not expensive :-) */ - BI_CTX *tmp_ctx = bi_initialize(); - bi_set_mod(tmp_ctx, bi_clone(tmp_ctx, bim), BIGINT_M_OFFSET); - tmp_biR = bi_mod_power(tmp_ctx, - bi_clone(tmp_ctx, bi), - bi_clone(tmp_ctx, biexp)); - biR = bi_clone(ctx, tmp_biR); - bi_free(tmp_ctx, tmp_biR); - bi_free_mod(tmp_ctx, BIGINT_M_OFFSET); - bi_terminate(tmp_ctx); - - bi_free(ctx, bi); - bi_free(ctx, bim); - bi_free(ctx, biexp); - return biR; -} -#endif - -#ifdef CONFIG_BIGINT_CRT -/** - * @brief Use the Chinese Remainder Theorem to quickly perform RSA decrypts. - * - * @param ctx [in] The bigint session context. - * @param bi [in] The bigint to perform the exp/mod. - * @param dP [in] CRT's dP bigint - * @param dQ [in] CRT's dQ bigint - * @param p [in] CRT's p bigint - * @param q [in] CRT's q bigint - * @param qInv [in] CRT's qInv bigint - * @return The result of the CRT operation - */ -bigint *bi_crt(BI_CTX *ctx, bigint *bi, - bigint *dP, bigint *dQ, - bigint *p, bigint *q, bigint *qInv) -{ - bigint *m1, *m2, *h; - - /* Montgomery has a condition the 0 < x, y < m and these products violate - * that condition. So disable Montgomery when using CRT */ -#if defined(CONFIG_BIGINT_MONTGOMERY) - ctx->use_classical = 1; -#endif - ctx->mod_offset = BIGINT_P_OFFSET; - m1 = bi_mod_power(ctx, bi_copy(bi), dP); - - ctx->mod_offset = BIGINT_Q_OFFSET; - m2 = bi_mod_power(ctx, bi, dQ); - - h = bi_subtract(ctx, bi_add(ctx, m1, p), bi_copy(m2), NULL); - h = bi_multiply(ctx, h, qInv); - ctx->mod_offset = BIGINT_P_OFFSET; - h = bi_residue(ctx, h); -#if defined(CONFIG_BIGINT_MONTGOMERY) - ctx->use_classical = 0; /* reset for any further operation */ -#endif - return bi_add(ctx, m2, bi_multiply(ctx, q, h)); -} -#endif -/** @} */ diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.h b/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.h deleted file mode 100644 index 2966a3edb3..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BIGINT_HEADER -#define BIGINT_HEADER - -#include "crypto.h" - -BI_CTX *bi_initialize(void); -void bi_terminate(BI_CTX *ctx); -void bi_permanent(bigint *bi); -void bi_depermanent(bigint *bi); -void bi_clear_cache(BI_CTX *ctx); -void bi_free(BI_CTX *ctx, bigint *bi); -bigint *bi_copy(bigint *bi); -bigint *bi_clone(BI_CTX *ctx, const bigint *bi); -void bi_export(BI_CTX *ctx, bigint *bi, uint8_t *data, int size); -bigint *bi_import(BI_CTX *ctx, const uint8_t *data, int len); -bigint *int_to_bi(BI_CTX *ctx, comp i); - -/* the functions that actually do something interesting */ -bigint *bi_add(BI_CTX *ctx, bigint *bia, bigint *bib); -bigint *bi_subtract(BI_CTX *ctx, bigint *bia, - bigint *bib, int *is_negative); -bigint *bi_divide(BI_CTX *ctx, bigint *bia, bigint *bim, int is_mod); -bigint *bi_multiply(BI_CTX *ctx, bigint *bia, bigint *bib); -bigint *bi_mod_power(BI_CTX *ctx, bigint *bi, bigint *biexp); -bigint *bi_mod_power2(BI_CTX *ctx, bigint *bi, bigint *bim, bigint *biexp); -int bi_compare(bigint *bia, bigint *bib); -void bi_set_mod(BI_CTX *ctx, bigint *bim, int mod_offset); -void bi_free_mod(BI_CTX *ctx, int mod_offset); - -#ifdef CONFIG_SSL_FULL_MODE -void bi_print(const char *label, bigint *bi); -bigint *bi_str_import(BI_CTX *ctx, const char *data); -#endif - -/** - * @def bi_mod - * Find the residue of B. bi_set_mod() must be called before hand. - */ -#define bi_mod(A, B) bi_divide(A, B, ctx->bi_mod[ctx->mod_offset], 1) - -/** - * bi_residue() is technically the same as bi_mod(), but it uses the - * appropriate reduction technique (which is bi_mod() when doing classical - * reduction). - */ -#if defined(CONFIG_BIGINT_MONTGOMERY) -#define bi_residue(A, B) bi_mont(A, B) -bigint *bi_mont(BI_CTX *ctx, bigint *bixy); -#elif defined(CONFIG_BIGINT_BARRETT) -#define bi_residue(A, B) bi_barrett(A, B) -bigint *bi_barrett(BI_CTX *ctx, bigint *bi); -#else /* if defined(CONFIG_BIGINT_CLASSICAL) */ -#define bi_residue(A, B) bi_mod(A, B) -#endif - -#ifdef CONFIG_BIGINT_SQUARE -bigint *bi_square(BI_CTX *ctx, bigint *bi); -#else -#define bi_square(A, B) bi_multiply(A, bi_copy(B), B) -#endif - -#ifdef CONFIG_BIGINT_CRT -bigint *bi_crt(BI_CTX *ctx, bigint *bi, - bigint *dP, bigint *dQ, - bigint *p, bigint *q, - bigint *qInv); -#endif - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint_impl.h b/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint_impl.h deleted file mode 100644 index 1483154a41..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/bigint_impl.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BIGINT_IMPL_HEADER -#define BIGINT_IMPL_HEADER - -/* Maintain a number of precomputed variables when doing reduction */ -#define BIGINT_M_OFFSET 0 /**< Normal modulo offset. */ -#ifdef CONFIG_BIGINT_CRT -#define BIGINT_P_OFFSET 1 /**< p modulo offset. */ -#define BIGINT_Q_OFFSET 2 /**< q module offset. */ -#define BIGINT_NUM_MODS 3 /**< The number of modulus constants used. */ -#else -#define BIGINT_NUM_MODS 1 -#endif - -/* Architecture specific functions for big ints */ -#ifdef WIN32 -#define COMP_RADIX 4294967296i64 -#define COMP_MAX 0xFFFFFFFFFFFFFFFFui64 -#else -#define COMP_RADIX 4294967296ULL /**< Max component + 1 */ -#define COMP_MAX 0xFFFFFFFFFFFFFFFFULL/**< (Max dbl comp -1) */ -#endif -#define COMP_BIT_SIZE 32 /**< Number of bits in a component. */ -#define COMP_BYTE_SIZE 4 /**< Number of bytes in a component. */ -#define COMP_NUM_NIBBLES 8 /**< Used For diagnostics only. */ - -typedef uint32_t comp; /**< A single precision component. */ -typedef uint64_t long_comp; /**< A double precision component. */ -typedef int64_t slong_comp; /**< A signed double precision component. */ - -/** - * @struct _bigint - * @brief A big integer basic object - */ -struct _bigint -{ - struct _bigint* next; /**< The next bigint in the cache. */ - short size; /**< The number of components in this bigint. */ - short max_comps; /**< The heapsize allocated for this bigint */ - int refs; /**< An internal reference count. */ - comp* comps; /**< A ptr to the actual component data */ -}; - -typedef struct _bigint bigint; /**< An alias for _bigint */ - -/** - * Maintains the state of the cache, and a number of variables used in - * reduction. - */ -typedef struct /**< A big integer "session" context. */ -{ - bigint *active_list; /**< Bigints currently used. */ - bigint *free_list; /**< Bigints not used. */ - bigint *bi_radix; /**< The radix used. */ - bigint *bi_mod[BIGINT_NUM_MODS]; /**< modulus */ - -#if defined(CONFIG_BIGINT_MONTGOMERY) - bigint *bi_RR_mod_m[BIGINT_NUM_MODS]; /**< R^2 mod m */ - bigint *bi_R_mod_m[BIGINT_NUM_MODS]; /**< R mod m */ - comp N0_dash[BIGINT_NUM_MODS]; -#elif defined(CONFIG_BIGINT_BARRETT) - bigint *bi_mu[BIGINT_NUM_MODS]; /**< Storage for mu */ -#endif - bigint *bi_normalised_mod[BIGINT_NUM_MODS]; /**< Normalised mod storage. */ - bigint **g; /**< Used by sliding-window. */ - int window; /**< The size of the sliding window */ - int active_count; /**< Number of active bigints. */ - int free_count; /**< Number of free bigints. */ - -#ifdef CONFIG_BIGINT_MONTGOMERY - uint8_t use_classical; /**< Use classical reduction. */ -#endif - uint8_t mod_offset; /**< The mod offset we are using */ -} BI_CTX; - -#ifndef WIN32 -#define max(a,b) ((a)>(b)?(a):(b)) /**< Find the maximum of 2 numbers. */ -#define min(a,b) ((a)<(b)?(a):(b)) /**< Find the minimum of 2 numbers. */ -#endif - -#define PERMANENT 0x7FFF55AA /**< A magic number for permanents. */ - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto.h b/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto.h deleted file mode 100644 index 5c95f21596..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file crypto.h - */ - -#ifndef HEADER_CRYPTO_H -#define HEADER_CRYPTO_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "config.h" -#include "os_port.h" -#include "bigint_impl.h" -#include "bigint.h" - -/* enable features based on a 'super-set' capbaility. */ -#if defined(CONFIG_SSL_FULL_MODE) -#define CONFIG_SSL_ENABLE_CLIENT -#define CONFIG_SSL_CERT_VERIFICATION -#elif defined(CONFIG_SSL_ENABLE_CLIENT) -#define CONFIG_SSL_CERT_VERIFICATION -#endif - -/************************************************************************** - * AES declarations - **************************************************************************/ - -#define AES_MAXROUNDS 14 -#define AES_BLOCKSIZE 16 -#define AES_IV_SIZE 16 - -typedef struct aes_key_st -{ - uint16_t rounds; - uint16_t key_size; - uint32_t ks[(AES_MAXROUNDS+1)*8]; - uint8_t iv[AES_IV_SIZE]; -} AES_CTX; - -typedef enum -{ - AES_MODE_128, - AES_MODE_256 -} AES_MODE; - -void AES_set_key(AES_CTX *ctx, const uint8_t *key, - const uint8_t *iv, AES_MODE mode); -void AES_cbc_encrypt(AES_CTX *ctx, const uint8_t *msg, - uint8_t *out, int length); -void AES_cbc_decrypt(AES_CTX *ks, const uint8_t *in, uint8_t *out, int length); -void AES_convert_key(AES_CTX *ctx); - -/************************************************************************** - * RC4 declarations - **************************************************************************/ - -typedef struct -{ - uint8_t x, y, m[256]; -} RC4_CTX; - -void RC4_setup(RC4_CTX *s, const uint8_t *key, int length); -void RC4_crypt(RC4_CTX *s, const uint8_t *msg, uint8_t *data, int length); - -/************************************************************************** - * SHA1 declarations - **************************************************************************/ - -#define SHA1_SIZE 20 - -/* - * This structure will hold context information for the SHA-1 - * hashing operation - */ -typedef struct -{ - uint32_t Intermediate_Hash[SHA1_SIZE/4]; /* Message Digest */ - uint32_t Length_Low; /* Message length in bits */ - uint32_t Length_High; /* Message length in bits */ - uint16_t Message_Block_Index; /* Index into message block array */ - uint8_t Message_Block[64]; /* 512-bit message blocks */ -} SHA1_CTX; - -void SHA1_Init(SHA1_CTX *); -void SHA1_Update(SHA1_CTX *, const uint8_t * msg, int len); -void SHA1_Final(uint8_t *digest, SHA1_CTX *); - -/************************************************************************** - * MD2 declarations - **************************************************************************/ - -#define MD2_SIZE 16 - -typedef struct -{ - unsigned char cksum[16]; /* checksum of the data block */ - unsigned char state[48]; /* intermediate digest state */ - unsigned char buffer[16]; /* data block being processed */ - int left; /* amount of data in buffer */ -} MD2_CTX; - -EXP_FUNC void STDCALL MD2_Init(MD2_CTX *ctx); -EXP_FUNC void STDCALL MD2_Update(MD2_CTX *ctx, const uint8_t *input, int ilen); -EXP_FUNC void STDCALL MD2_Final(uint8_t *digest, MD2_CTX *ctx); - -/************************************************************************** - * MD5 declarations - **************************************************************************/ - -#define MD5_SIZE 16 - -typedef struct -{ - uint32_t state[4]; /* state (ABCD) */ - uint32_t count[2]; /* number of bits, modulo 2^64 (lsb first) */ - uint8_t buffer[64]; /* input buffer */ -} MD5_CTX; - -EXP_FUNC void STDCALL MD5_Init(MD5_CTX *); -EXP_FUNC void STDCALL MD5_Update(MD5_CTX *, const uint8_t *msg, int len); -EXP_FUNC void STDCALL MD5_Final(uint8_t *digest, MD5_CTX *); - -/************************************************************************** - * HMAC declarations - **************************************************************************/ -void hmac_md5(const uint8_t *msg, int length, const uint8_t *key, - int key_len, uint8_t *digest); -void hmac_sha1(const uint8_t *msg, int length, const uint8_t *key, - int key_len, uint8_t *digest); - -/************************************************************************** - * RSA declarations - **************************************************************************/ - -typedef struct -{ - bigint *m; /* modulus */ - bigint *e; /* public exponent */ - bigint *d; /* private exponent */ -#ifdef CONFIG_BIGINT_CRT - bigint *p; /* p as in m = pq */ - bigint *q; /* q as in m = pq */ - bigint *dP; /* d mod (p-1) */ - bigint *dQ; /* d mod (q-1) */ - bigint *qInv; /* q^-1 mod p */ -#endif - int num_octets; - BI_CTX *bi_ctx; -} RSA_CTX; - -void RSA_priv_key_new(RSA_CTX **rsa_ctx, - const uint8_t *modulus, int mod_len, - const uint8_t *pub_exp, int pub_len, - const uint8_t *priv_exp, int priv_len -#ifdef CONFIG_BIGINT_CRT - , const uint8_t *p, int p_len, - const uint8_t *q, int q_len, - const uint8_t *dP, int dP_len, - const uint8_t *dQ, int dQ_len, - const uint8_t *qInv, int qInv_len -#endif - ); -void RSA_pub_key_new(RSA_CTX **rsa_ctx, - const uint8_t *modulus, int mod_len, - const uint8_t *pub_exp, int pub_len); -void RSA_free(RSA_CTX *ctx); -int RSA_decrypt(const RSA_CTX *ctx, const uint8_t *in_data, uint8_t *out_data, - int is_decryption); -bigint *RSA_private(const RSA_CTX *c, bigint *bi_msg); -#if defined(CONFIG_SSL_CERT_VERIFICATION) || defined(CONFIG_SSL_GENERATE_X509_CERT) -bigint *RSA_sign_verify(BI_CTX *ctx, const uint8_t *sig, int sig_len, - bigint *modulus, bigint *pub_exp); -bigint *RSA_public(const RSA_CTX * c, bigint *bi_msg); -int RSA_encrypt(const RSA_CTX *ctx, const uint8_t *in_data, uint16_t in_len, - uint8_t *out_data, int is_signing); -void RSA_print(const RSA_CTX *ctx); -#endif - -/************************************************************************** - * RNG declarations - **************************************************************************/ -EXP_FUNC void STDCALL RNG_initialize(const uint8_t *seed_buf, int size); -EXP_FUNC void STDCALL RNG_terminate(void); -EXP_FUNC void STDCALL get_random(int num_rand_bytes, uint8_t *rand_data); -void get_random_NZ(int num_rand_bytes, uint8_t *rand_data); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto_misc.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto_misc.c deleted file mode 100644 index 59b72ec08d..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/crypto_misc.c +++ /dev/null @@ -1,357 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Some misc. routines to help things out - */ - -#include -#include -#include -#include -#include "crypto_misc.h" -#ifdef CONFIG_WIN32_USE_CRYPTO_LIB -#include "wincrypt.h" -#endif - -#ifndef WIN32 -static int rng_fd = -1; -#elif defined(CONFIG_WIN32_USE_CRYPTO_LIB) -static HCRYPTPROV gCryptProv; -#endif - -#if (!defined(CONFIG_USE_DEV_URANDOM) && !defined(CONFIG_WIN32_USE_CRYPTO_LIB)) -static uint64_t rng_num; -#endif - -static int rng_ref_count; -const char * const unsupported_str = "Error: Feature not supported\n"; - -#ifndef CONFIG_SSL_SKELETON_MODE -/** - * Retrieve a file and put it into memory - * @return The size of the file, or -1 on failure. - */ -int get_file(const char *filename, uint8_t **buf) -{ - int total_bytes = 0; - int bytes_read = 0; - int filesize; - FILE *stream = fopen(filename, "rb"); - - if (stream == NULL) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("file '%s' does not exist\n", filename); TTY_FLUSH(); -#endif - return -1; - } - - /* Win CE doesn't support stat() */ - fseek(stream, 0, SEEK_END); - filesize = ftell(stream); - *buf = (uint8_t *)malloc(filesize); - fseek(stream, 0, SEEK_SET); - - do - { - bytes_read = fread(*buf+total_bytes, 1, filesize-total_bytes, stream); - total_bytes += bytes_read; - } while (total_bytes < filesize && bytes_read > 0); - - fclose(stream); - return filesize; -} -#endif - -/** - * Initialise the Random Number Generator engine. - * - On Win32 use the platform SDK's crypto engine. - * - On Linux use /dev/urandom - * - If none of these work then use a custom RNG. - */ -EXP_FUNC void STDCALL RNG_initialize(const uint8_t *seed_buf, int size) -{ - if (rng_ref_count == 0) - { -#if !defined(WIN32) && defined(CONFIG_USE_DEV_URANDOM) - rng_fd = ax_open("/dev/urandom", O_RDONLY); -#elif defined(WIN32) && defined(CONFIG_WIN32_USE_CRYPTO_LIB) - if (!CryptAcquireContext(&gCryptProv, - NULL, NULL, PROV_RSA_FULL, 0)) - { - if (GetLastError() == NTE_BAD_KEYSET && - !CryptAcquireContext(&gCryptProv, - NULL, - NULL, - PROV_RSA_FULL, - CRYPT_NEWKEYSET)) - { - printf("CryptoLib: %x\n", unsupported_str, GetLastError()); - exit(1); - } - } -#else - /* help seed with the user's private key - this is a number that - should be hard to find, due to the fact that it relies on knowing - the private key */ - int i; - - for (i = 0; i < size/(int)sizeof(uint64_t); i++) - rng_num ^= *((uint64_t *)&seed_buf[i*sizeof(uint64_t)]); - - srand((long)&seed_buf); /* use the stack ptr as another rnd seed */ -#endif - } - - rng_ref_count++; -} - -/** - * Terminate the RNG engine. - */ -EXP_FUNC void STDCALL RNG_terminate(void) -{ - if (--rng_ref_count == 0) - { -#ifndef WIN32 - close(rng_fd); -#elif defined(CONFIG_WIN32_USE_CRYPTO_LIB) - CryptReleaseContext(gCryptProv, 0); -#endif - } -} - -/** - * Set a series of bytes with a random number. Individual bytes can be 0 - */ -EXP_FUNC void STDCALL get_random(int num_rand_bytes, uint8_t *rand_data) -{ -#if !defined(WIN32) && defined(CONFIG_USE_DEV_URANDOM) - /* use the Linux default */ - read(rng_fd, rand_data, num_rand_bytes); /* read from /dev/urandom */ -#elif defined(WIN32) && defined(CONFIG_WIN32_USE_CRYPTO_LIB) - /* use Microsoft Crypto Libraries */ - CryptGenRandom(gCryptProv, num_rand_bytes, rand_data); -#else /* nothing else to use, so use a custom RNG */ - /* The method we use when we've got nothing better. Use RC4, time - and a couple of random seeds to generate a random sequence */ - RC4_CTX rng_ctx; - struct timeval tv; - uint64_t big_num1, big_num2; - - gettimeofday(&tv, NULL); /* yes I know we shouldn't do this */ - - /* all numbers by themselves are pretty simple, but combined should - * be a challenge */ - big_num1 = (uint64_t)tv.tv_sec*(tv.tv_usec+1); - big_num2 = (uint64_t)rand()*big_num1; - big_num1 ^= rng_num; - - memcpy(rand_data, &big_num1, sizeof(uint64_t)); - if (num_rand_bytes > sizeof(uint64_t)) - memcpy(&rand_data[8], &big_num2, sizeof(uint64_t)); - - if (num_rand_bytes > 16) - { - /* clear rest of data */ - memset(&rand_data[16], 0, num_rand_bytes-16); - } - - RC4_setup(&rng_ctx, rand_data, 16); /* use as a key */ - RC4_crypt(&rng_ctx, rand_data, rand_data, num_rand_bytes); - - /* use last 8 bytes for next time */ - memcpy(&rng_num, &rand_data[num_rand_bytes-8], sizeof(uint64_t)); -#endif -} - -/** - * Set a series of bytes with a random number. Individual bytes are not zero. - */ -void get_random_NZ(int num_rand_bytes, uint8_t *rand_data) -{ - int i; - get_random(num_rand_bytes, rand_data); - - for (i = 0; i < num_rand_bytes; i++) - { - while (rand_data[i] == 0) /* can't be 0 */ - rand_data[i] = (uint8_t)(rand()); - } -} - -/** - * Some useful diagnostic routines - */ -#if defined(CONFIG_SSL_FULL_MODE) || defined(CONFIG_DEBUG) -int hex_finish; -int hex_index; - -static void print_hex_init(int finish) -{ - hex_finish = finish; - hex_index = 0; -} - -static void print_hex(uint8_t hex) -{ - static int column; - - if (hex_index == 0) - { - column = 0; - } - - printf("%02x ", hex); - if (++column == 8) - { - printf(": "); - } - else if (column >= 16) - { - printf("\n"); - column = 0; - } - - if (++hex_index >= hex_finish && column > 0) - { - printf("\n"); - } -} - -/** - * Spit out a blob of data for diagnostics. The data is is a nice column format - * for easy reading. - * - * @param format [in] The string (with possible embedded format characters) - * @param size [in] The number of numbers to print - * @param data [in] The start of data to use - * @param ... [in] Any additional arguments - */ -EXP_FUNC void STDCALL print_blob(const char *format, - const uint8_t *data, int size, ...) -{ - int i; - char tmp[80]; - va_list(ap); - - va_start(ap, size); - sprintf(tmp, "%s\n", format); - vprintf(tmp, ap); - print_hex_init(size); - for (i = 0; i < size; i++) - { - print_hex(data[i]); - } - - va_end(ap); - TTY_FLUSH(); -} -#elif defined(WIN32) -/* VC6.0 doesn't handle variadic macros */ -EXP_FUNC void STDCALL print_blob(const char *format, const unsigned char *data, - int size, ...) {} -#endif - -#if defined(CONFIG_SSL_HAS_PEM) || defined(CONFIG_HTTP_HAS_AUTHORIZATION) -/* base64 to binary lookup table */ -static const uint8_t map[128] = -{ - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, - 255, 254, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, - 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 255, 255, 255, 255, 255 -}; - -EXP_FUNC int STDCALL base64_decode(const char *in, int len, - uint8_t *out, int *outlen) -{ - int g, t, x, y, z; - uint8_t c; - int ret = -1; - - g = 3; - for (x = y = z = t = 0; x < len; x++) - { - if ((c = map[in[x]&0x7F]) == 0xff) - continue; - - if (c == 254) /* this is the end... */ - { - c = 0; - - if (--g < 0) - goto error; - } - else if (g != 3) /* only allow = at end */ - goto error; - - t = (t<<6) | c; - - if (++y == 4) - { - out[z++] = (uint8_t)((t>>16)&255); - - if (g > 1) - out[z++] = (uint8_t)((t>>8)&255); - - if (g > 2) - out[z++] = (uint8_t)(t&255); - - y = t = 0; - } - } - - if (y != 0) - goto error; - - if (outlen) - *outlen = z; - ret = 0; - -error: -#ifdef CONFIG_SSL_FULL_MODE - if (ret < 0) - printf("Error: Invalid base64\n"); TTY_FLUSH(); -#endif - TTY_FLUSH(); - return ret; - -} -#endif - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/hmac.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/hmac.c deleted file mode 100644 index 9199ff2207..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/hmac.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * HMAC implementation - This code was originally taken from RFC2104 - */ - -#include -#include "crypto.h" - -/** - * Perform HMAC-MD5 - */ -void hmac_md5(const uint8_t *msg, int length, const uint8_t *key, - int key_len, uint8_t *digest) -{ - MD5_CTX context; - uint8_t k_ipad[64]; - uint8_t k_opad[64]; - int i; - - memset(k_ipad, 0, sizeof k_ipad); - memset(k_opad, 0, sizeof k_opad); - memcpy(k_ipad, key, key_len); - memcpy(k_opad, key, key_len); - - for (i = 0; i < 64; i++) - { - k_ipad[i] ^= 0x36; - k_opad[i] ^= 0x5c; - } - - MD5_Init(&context); - MD5_Update(&context, k_ipad, 64); - MD5_Update(&context, msg, length); - MD5_Final(digest, &context); - MD5_Init(&context); - MD5_Update(&context, k_opad, 64); - MD5_Update(&context, digest, MD5_SIZE); - MD5_Final(digest, &context); -} - -/** - * Perform HMAC-SHA1 - */ -void hmac_sha1(const uint8_t *msg, int length, const uint8_t *key, - int key_len, uint8_t *digest) -{ - SHA1_CTX context; - uint8_t k_ipad[64]; - uint8_t k_opad[64]; - int i; - - memset(k_ipad, 0, sizeof k_ipad); - memset(k_opad, 0, sizeof k_opad); - memcpy(k_ipad, key, key_len); - memcpy(k_opad, key, key_len); - - for (i = 0; i < 64; i++) - { - k_ipad[i] ^= 0x36; - k_opad[i] ^= 0x5c; - } - - SHA1_Init(&context); - SHA1_Update(&context, k_ipad, 64); - SHA1_Update(&context, msg, length); - SHA1_Final(digest, &context); - SHA1_Init(&context); - SHA1_Update(&context, k_opad, 64); - SHA1_Update(&context, digest, SHA1_SIZE); - SHA1_Final(digest, &context); -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/md2.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/md2.c deleted file mode 100644 index bfcbd24bbe..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/md2.c +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * RFC 1115/1319 compliant MD2 implementation - * The MD2 algorithm was designed by Ron Rivest in 1989. - * - * http://www.ietf.org/rfc/rfc1115.txt - * http://www.ietf.org/rfc/rfc1319.txt - */ - -#include -#include - -#include "crypto.h" - -/** - * This code is only here to enable the verification of Verisign root - * certificates. So only enable it for verification mode. - */ -#ifdef CONFIG_SSL_CERT_VERIFICATION - -static const uint8_t PI_SUBST[256] = -{ - 0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 0x3D, 0x36, - 0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13, 0x62, 0xA7, 0x05, 0xF3, - 0xC0, 0xC7, 0x73, 0x8C, 0x98, 0x93, 0x2B, 0xD9, 0xBC, 0x4C, - 0x82, 0xCA, 0x1E, 0x9B, 0x57, 0x3C, 0xFD, 0xD4, 0xE0, 0x16, - 0x67, 0x42, 0x6F, 0x18, 0x8A, 0x17, 0xE5, 0x12, 0xBE, 0x4E, - 0xC4, 0xD6, 0xDA, 0x9E, 0xDE, 0x49, 0xA0, 0xFB, 0xF5, 0x8E, - 0xBB, 0x2F, 0xEE, 0x7A, 0xA9, 0x68, 0x79, 0x91, 0x15, 0xB2, - 0x07, 0x3F, 0x94, 0xC2, 0x10, 0x89, 0x0B, 0x22, 0x5F, 0x21, - 0x80, 0x7F, 0x5D, 0x9A, 0x5A, 0x90, 0x32, 0x27, 0x35, 0x3E, - 0xCC, 0xE7, 0xBF, 0xF7, 0x97, 0x03, 0xFF, 0x19, 0x30, 0xB3, - 0x48, 0xA5, 0xB5, 0xD1, 0xD7, 0x5E, 0x92, 0x2A, 0xAC, 0x56, - 0xAA, 0xC6, 0x4F, 0xB8, 0x38, 0xD2, 0x96, 0xA4, 0x7D, 0xB6, - 0x76, 0xFC, 0x6B, 0xE2, 0x9C, 0x74, 0x04, 0xF1, 0x45, 0x9D, - 0x70, 0x59, 0x64, 0x71, 0x87, 0x20, 0x86, 0x5B, 0xCF, 0x65, - 0xE6, 0x2D, 0xA8, 0x02, 0x1B, 0x60, 0x25, 0xAD, 0xAE, 0xB0, - 0xB9, 0xF6, 0x1C, 0x46, 0x61, 0x69, 0x34, 0x40, 0x7E, 0x0F, - 0x55, 0x47, 0xA3, 0x23, 0xDD, 0x51, 0xAF, 0x3A, 0xC3, 0x5C, - 0xF9, 0xCE, 0xBA, 0xC5, 0xEA, 0x26, 0x2C, 0x53, 0x0D, 0x6E, - 0x85, 0x28, 0x84, 0x09, 0xD3, 0xDF, 0xCD, 0xF4, 0x41, 0x81, - 0x4D, 0x52, 0x6A, 0xDC, 0x37, 0xC8, 0x6C, 0xC1, 0xAB, 0xFA, - 0x24, 0xE1, 0x7B, 0x08, 0x0C, 0xBD, 0xB1, 0x4A, 0x78, 0x88, - 0x95, 0x8B, 0xE3, 0x63, 0xE8, 0x6D, 0xE9, 0xCB, 0xD5, 0xFE, - 0x3B, 0x00, 0x1D, 0x39, 0xF2, 0xEF, 0xB7, 0x0E, 0x66, 0x58, - 0xD0, 0xE4, 0xA6, 0x77, 0x72, 0xF8, 0xEB, 0x75, 0x4B, 0x0A, - 0x31, 0x44, 0x50, 0xB4, 0x8F, 0xED, 0x1F, 0x1A, 0xDB, 0x99, - 0x8D, 0x33, 0x9F, 0x11, 0x83, 0x14 -}; - -/* - * MD2 context setup - */ -EXP_FUNC void STDCALL MD2_Init(MD2_CTX *ctx) -{ - memset(ctx, 0, sizeof *ctx); -} - -static void md2_process(MD2_CTX *ctx) -{ - int i, j; - uint8_t t = 0; - - for (i = 0; i < 16; i++) - { - ctx->state[i + 16] = ctx->buffer[i]; - ctx->state[i + 32] = ctx->buffer[i] ^ ctx->state[i]; - } - - for (i = 0; i < 18; i++) - { - for (j = 0; j < 48; j++) - t = (ctx->state[j] ^= PI_SUBST[t]); - - t = (t + i) & 0xFF; - } - - t = ctx->cksum[15]; - - for (i = 0; i < 16; i++) - t = (ctx->cksum[i] ^= PI_SUBST[ctx->buffer[i] ^ t]); -} - -/* - * MD2 process buffer - */ -EXP_FUNC void STDCALL MD2_Update(MD2_CTX *ctx, const uint8_t *input, int ilen) -{ - int fill; - - while (ilen > 0) - { - if (ctx->left + ilen > 16) - fill = 16 - ctx->left; - else - fill = ilen; - - memcpy(ctx->buffer + ctx->left, input, fill); - - ctx->left += fill; - input += fill; - ilen -= fill; - - if (ctx->left == 16) - { - ctx->left = 0; - md2_process(ctx); - } - } -} - -/* - * MD2 final digest - */ -EXP_FUNC void STDCALL MD2_Final(uint8_t *output, MD2_CTX *ctx) -{ - int i; - uint8_t x; - - x = (uint8_t)(16 - ctx->left); - - for (i = ctx->left; i < 16; i++) - ctx->buffer[i] = x; - - md2_process(ctx); - - memcpy(ctx->buffer, ctx->cksum, 16); - md2_process(ctx); - - memcpy(output, ctx->state, 16); -} - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/md5.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/md5.c deleted file mode 100644 index b4f86cab58..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/md5.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * This file implements the MD5 algorithm as defined in RFC1321 - */ - -#include -#include "crypto.h" - -/* Constants for MD5Transform routine. - */ -#define S11 7 -#define S12 12 -#define S13 17 -#define S14 22 -#define S21 5 -#define S22 9 -#define S23 14 -#define S24 20 -#define S31 4 -#define S32 11 -#define S33 16 -#define S34 23 -#define S41 6 -#define S42 10 -#define S43 15 -#define S44 21 - -/* ----- static functions ----- */ -static void MD5Transform(uint32_t state[4], const uint8_t block[64]); -static void Encode(uint8_t *output, uint32_t *input, uint32_t len); -static void Decode(uint32_t *output, const uint8_t *input, uint32_t len); - -static const uint8_t PADDING[64] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -/* F, G, H and I are basic MD5 functions. - */ -#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) -#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define I(x, y, z) ((y) ^ ((x) | (~z))) - -/* ROTATE_LEFT rotates x left n bits. */ -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) - -/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. - Rotation is separate from addition to prevent recomputation. */ -#define FF(a, b, c, d, x, s, ac) { \ - (a) += F ((b), (c), (d)) + (x) + (uint32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define GG(a, b, c, d, x, s, ac) { \ - (a) += G ((b), (c), (d)) + (x) + (uint32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define HH(a, b, c, d, x, s, ac) { \ - (a) += H ((b), (c), (d)) + (x) + (uint32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define II(a, b, c, d, x, s, ac) { \ - (a) += I ((b), (c), (d)) + (x) + (uint32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } - -/** - * MD5 initialization - begins an MD5 operation, writing a new ctx. - */ -EXP_FUNC void STDCALL MD5_Init(MD5_CTX *ctx) -{ - ctx->count[0] = ctx->count[1] = 0; - - /* Load magic initialization constants. - */ - ctx->state[0] = 0x67452301; - ctx->state[1] = 0xefcdab89; - ctx->state[2] = 0x98badcfe; - ctx->state[3] = 0x10325476; -} - -/** - * Accepts an array of octets as the next portion of the message. - */ -EXP_FUNC void STDCALL MD5_Update(MD5_CTX *ctx, const uint8_t * msg, int len) -{ - uint32_t x; - int i, partLen; - - /* Compute number of bytes mod 64 */ - x = (uint32_t)((ctx->count[0] >> 3) & 0x3F); - - /* Update number of bits */ - if ((ctx->count[0] += ((uint32_t)len << 3)) < ((uint32_t)len << 3)) - ctx->count[1]++; - ctx->count[1] += ((uint32_t)len >> 29); - - partLen = 64 - x; - - /* Transform as many times as possible. */ - if (len >= partLen) - { - memcpy(&ctx->buffer[x], msg, partLen); - MD5Transform(ctx->state, ctx->buffer); - - for (i = partLen; i + 63 < len; i += 64) - MD5Transform(ctx->state, &msg[i]); - - x = 0; - } - else - i = 0; - - /* Buffer remaining input */ - memcpy(&ctx->buffer[x], &msg[i], len-i); -} - -/** - * Return the 128-bit message digest into the user's array - */ -EXP_FUNC void STDCALL MD5_Final(uint8_t *digest, MD5_CTX *ctx) -{ - uint8_t bits[8]; - uint32_t x, padLen; - - /* Save number of bits */ - Encode(bits, ctx->count, 8); - - /* Pad out to 56 mod 64. - */ - x = (uint32_t)((ctx->count[0] >> 3) & 0x3f); - padLen = (x < 56) ? (56 - x) : (120 - x); - MD5_Update(ctx, PADDING, padLen); - - /* Append length (before padding) */ - MD5_Update(ctx, bits, 8); - - /* Store state in digest */ - Encode(digest, ctx->state, MD5_SIZE); -} - -/** - * MD5 basic transformation. Transforms state based on block. - */ -static void MD5Transform(uint32_t state[4], const uint8_t block[64]) -{ - uint32_t a = state[0], b = state[1], c = state[2], - d = state[3], x[MD5_SIZE]; - - Decode(x, block, 64); - - /* Round 1 */ - FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */ - FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */ - FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */ - FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */ - FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */ - FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */ - FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */ - FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */ - FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */ - FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */ - FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ - FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ - FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ - FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ - FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ - FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ - - /* Round 2 */ - GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */ - GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */ - GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ - GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */ - GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */ - GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */ - GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ - GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */ - GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */ - GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ - GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */ - GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */ - GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ - GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */ - GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */ - GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ - - /* Round 3 */ - HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */ - HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */ - HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ - HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ - HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */ - HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */ - HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */ - HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ - HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ - HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */ - HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */ - HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */ - HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */ - HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ - HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ - HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */ - - /* Round 4 */ - II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */ - II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */ - II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ - II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */ - II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ - II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */ - II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ - II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */ - II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */ - II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ - II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */ - II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ - II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */ - II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ - II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */ - II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */ - - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; -} - -/** - * Encodes input (uint32_t) into output (uint8_t). Assumes len is - * a multiple of 4. - */ -static void Encode(uint8_t *output, uint32_t *input, uint32_t len) -{ - uint32_t i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) - { - output[j] = (uint8_t)(input[i] & 0xff); - output[j+1] = (uint8_t)((input[i] >> 8) & 0xff); - output[j+2] = (uint8_t)((input[i] >> 16) & 0xff); - output[j+3] = (uint8_t)((input[i] >> 24) & 0xff); - } -} - -/** - * Decodes input (uint8_t) into output (uint32_t). Assumes len is - * a multiple of 4. - */ -static void Decode(uint32_t *output, const uint8_t *input, uint32_t len) -{ - uint32_t i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) - output[i] = ((uint32_t)input[j]) | (((uint32_t)input[j+1]) << 8) | - (((uint32_t)input[j+2]) << 16) | (((uint32_t)input[j+3]) << 24); -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/rc4.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/rc4.c deleted file mode 100644 index 57136b82bd..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/rc4.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * An implementation of the RC4/ARC4 algorithm. - * Originally written by Christophe Devine. - */ - -#include -#include "crypto.h" - -/** - * Get ready for an encrypt/decrypt operation - */ -void RC4_setup(RC4_CTX *ctx, const uint8_t *key, int length) -{ - int i, j = 0, k = 0, a; - uint8_t *m; - - ctx->x = 0; - ctx->y = 0; - m = ctx->m; - - for (i = 0; i < 256; i++) - m[i] = i; - - for (i = 0; i < 256; i++) - { - a = m[i]; - j = (uint8_t)(j + a + key[k]); - m[i] = m[j]; - m[j] = a; - - if (++k >= length) - k = 0; - } -} - -/** - * Perform the encrypt/decrypt operation (can use it for either since - * this is a stream cipher). - */ -void RC4_crypt(RC4_CTX *ctx, const uint8_t *msg, uint8_t *out, int length) -{ - int i; - uint8_t *m, x, y, a, b; - out = (uint8_t *)msg; - - x = ctx->x; - y = ctx->y; - m = ctx->m; - - for (i = 0; i < length; i++) - { - a = m[++x]; - y += a; - m[x] = b = m[y]; - m[y] = a; - out[i] ^= m[(uint8_t)(a + b)]; - } - - ctx->x = x; - ctx->y = y; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/rsa.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/rsa.c deleted file mode 100644 index 31627bb319..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/rsa.c +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Implements the RSA public encryption algorithm. Uses the bigint library to - * perform its calculations. - */ - -#include -#include -#include -#include -#include "crypto.h" - -void RSA_priv_key_new(RSA_CTX **ctx, - const uint8_t *modulus, int mod_len, - const uint8_t *pub_exp, int pub_len, - const uint8_t *priv_exp, int priv_len -#if CONFIG_BIGINT_CRT - , const uint8_t *p, int p_len, - const uint8_t *q, int q_len, - const uint8_t *dP, int dP_len, - const uint8_t *dQ, int dQ_len, - const uint8_t *qInv, int qInv_len -#endif - ) -{ - RSA_CTX *rsa_ctx; - BI_CTX *bi_ctx; - RSA_pub_key_new(ctx, modulus, mod_len, pub_exp, pub_len); - rsa_ctx = *ctx; - bi_ctx = rsa_ctx->bi_ctx; - rsa_ctx->d = bi_import(bi_ctx, priv_exp, priv_len); - bi_permanent(rsa_ctx->d); - -#ifdef CONFIG_BIGINT_CRT - rsa_ctx->p = bi_import(bi_ctx, p, p_len); - rsa_ctx->q = bi_import(bi_ctx, q, q_len); - rsa_ctx->dP = bi_import(bi_ctx, dP, dP_len); - rsa_ctx->dQ = bi_import(bi_ctx, dQ, dQ_len); - rsa_ctx->qInv = bi_import(bi_ctx, qInv, qInv_len); - bi_permanent(rsa_ctx->dP); - bi_permanent(rsa_ctx->dQ); - bi_permanent(rsa_ctx->qInv); - bi_set_mod(bi_ctx, rsa_ctx->p, BIGINT_P_OFFSET); - bi_set_mod(bi_ctx, rsa_ctx->q, BIGINT_Q_OFFSET); -#endif -} - -void RSA_pub_key_new(RSA_CTX **ctx, - const uint8_t *modulus, int mod_len, - const uint8_t *pub_exp, int pub_len) -{ - RSA_CTX *rsa_ctx; - BI_CTX *bi_ctx; - - if (*ctx) /* if we load multiple certs, dump the old one */ - RSA_free(*ctx); - - bi_ctx = bi_initialize(); - *ctx = (RSA_CTX *)calloc(1, sizeof(RSA_CTX)); - rsa_ctx = *ctx; - rsa_ctx->bi_ctx = bi_ctx; - rsa_ctx->num_octets = (mod_len & 0xFFF0); - rsa_ctx->m = bi_import(bi_ctx, modulus, mod_len); - bi_set_mod(bi_ctx, rsa_ctx->m, BIGINT_M_OFFSET); - rsa_ctx->e = bi_import(bi_ctx, pub_exp, pub_len); - bi_permanent(rsa_ctx->e); -} - -/** - * Free up any RSA context resources. - */ -void RSA_free(RSA_CTX *rsa_ctx) -{ - BI_CTX *bi_ctx; - if (rsa_ctx == NULL) /* deal with ptrs that are null */ - return; - - bi_ctx = rsa_ctx->bi_ctx; - - bi_depermanent(rsa_ctx->e); - bi_free(bi_ctx, rsa_ctx->e); - bi_free_mod(rsa_ctx->bi_ctx, BIGINT_M_OFFSET); - - if (rsa_ctx->d) - { - bi_depermanent(rsa_ctx->d); - bi_free(bi_ctx, rsa_ctx->d); -#ifdef CONFIG_BIGINT_CRT - bi_depermanent(rsa_ctx->dP); - bi_depermanent(rsa_ctx->dQ); - bi_depermanent(rsa_ctx->qInv); - bi_free(bi_ctx, rsa_ctx->dP); - bi_free(bi_ctx, rsa_ctx->dQ); - bi_free(bi_ctx, rsa_ctx->qInv); - bi_free_mod(rsa_ctx->bi_ctx, BIGINT_P_OFFSET); - bi_free_mod(rsa_ctx->bi_ctx, BIGINT_Q_OFFSET); -#endif - } - - bi_terminate(bi_ctx); - free(rsa_ctx); -} - -/** - * @brief Use PKCS1.5 for decryption/verification. - * @param ctx [in] The context - * @param in_data [in] The data to encrypt (must be < modulus size-11) - * @param out_data [out] The encrypted data. - * @param is_decryption [in] Decryption or verify operation. - * @return The number of bytes that were originally encrypted. -1 on error. - * @see http://www.rsasecurity.com/rsalabs/node.asp?id=2125 - */ -int RSA_decrypt(const RSA_CTX *ctx, const uint8_t *in_data, - uint8_t *out_data, int is_decryption) -{ - const int byte_size = ctx->num_octets; - int i, size; - bigint *decrypted_bi, *dat_bi; - uint8_t *block = (uint8_t *)alloca(byte_size); - - memset(out_data, 0, byte_size); /* initialise */ - - /* decrypt */ - dat_bi = bi_import(ctx->bi_ctx, in_data, byte_size); -#ifdef CONFIG_SSL_CERT_VERIFICATION - decrypted_bi = is_decryption ? /* decrypt or verify? */ - RSA_private(ctx, dat_bi) : RSA_public(ctx, dat_bi); -#else /* always a decryption */ - decrypted_bi = RSA_private(ctx, dat_bi); -#endif - - /* convert to a normal block */ - bi_export(ctx->bi_ctx, decrypted_bi, block, byte_size); - - i = 10; /* start at the first possible non-padded byte */ - -#ifdef CONFIG_SSL_CERT_VERIFICATION - if (is_decryption == 0) /* PKCS1.5 signing pads with "0xff"s */ - { - while (block[i++] == 0xff && i < byte_size); - - if (block[i-2] != 0xff) - i = byte_size; /*ensure size is 0 */ - } - else /* PKCS1.5 encryption padding is random */ -#endif - { - while (block[i++] && i < byte_size); - } - size = byte_size - i; - - /* get only the bit we want */ - if (size > 0) - memcpy(out_data, &block[i], size); - - return size ? size : -1; -} - -/** - * Performs m = c^d mod n - */ -bigint *RSA_private(const RSA_CTX *c, bigint *bi_msg) -{ -#ifdef CONFIG_BIGINT_CRT - return bi_crt(c->bi_ctx, bi_msg, c->dP, c->dQ, c->p, c->q, c->qInv); -#else - BI_CTX *ctx = c->bi_ctx; - ctx->mod_offset = BIGINT_M_OFFSET; - return bi_mod_power(ctx, bi_msg, c->d); -#endif -} - -#ifdef CONFIG_SSL_FULL_MODE -/** - * Used for diagnostics. - */ -void RSA_print(const RSA_CTX *rsa_ctx) -{ - if (rsa_ctx == NULL) - return; - - printf("----------------- RSA DEBUG ----------------\n"); - printf("Size:\t%d\n", rsa_ctx->num_octets); - bi_print("Modulus", rsa_ctx->m); - bi_print("Public Key", rsa_ctx->e); - bi_print("Private Key", rsa_ctx->d); -} -#endif - -#if defined(CONFIG_SSL_CERT_VERIFICATION) || defined(CONFIG_SSL_GENERATE_X509_CERT) -/** - * Performs c = m^e mod n - */ -bigint *RSA_public(const RSA_CTX * c, bigint *bi_msg) -{ - c->bi_ctx->mod_offset = BIGINT_M_OFFSET; - return bi_mod_power(c->bi_ctx, bi_msg, c->e); -} - -/** - * Use PKCS1.5 for encryption/signing. - * see http://www.rsasecurity.com/rsalabs/node.asp?id=2125 - */ -int RSA_encrypt(const RSA_CTX *ctx, const uint8_t *in_data, uint16_t in_len, - uint8_t *out_data, int is_signing) -{ - int byte_size = ctx->num_octets; - int num_pads_needed = byte_size-in_len-3; - bigint *dat_bi, *encrypt_bi; - - /* note: in_len+11 must be > byte_size */ - out_data[0] = 0; /* ensure encryption block is < modulus */ - - if (is_signing) - { - out_data[1] = 1; /* PKCS1.5 signing pads with "0xff"'s */ - memset(&out_data[2], 0xff, num_pads_needed); - } - else /* randomize the encryption padding with non-zero bytes */ - { - out_data[1] = 2; - get_random_NZ(num_pads_needed, &out_data[2]); - } - - out_data[2+num_pads_needed] = 0; - memcpy(&out_data[3+num_pads_needed], in_data, in_len); - - /* now encrypt it */ - dat_bi = bi_import(ctx->bi_ctx, out_data, byte_size); - encrypt_bi = is_signing ? RSA_private(ctx, dat_bi) : - RSA_public(ctx, dat_bi); - bi_export(ctx->bi_ctx, encrypt_bi, out_data, byte_size); - - /* save a few bytes of memory */ - bi_clear_cache(ctx->bi_ctx); - return byte_size; -} - -#endif /* CONFIG_SSL_CERT_VERIFICATION */ diff --git a/package/luci/libs/luci-lib-nixio/axTLS/crypto/sha1.c b/package/luci/libs/luci-lib-nixio/axTLS/crypto/sha1.c deleted file mode 100644 index be19100797..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/crypto/sha1.c +++ /dev/null @@ -1,248 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * SHA1 implementation - as defined in FIPS PUB 180-1 published April 17, 1995. - * This code was originally taken from RFC3174 - */ - -#include -#include "crypto.h" - -/* - * Define the SHA1 circular left shift macro - */ -#define SHA1CircularShift(bits,word) \ - (((word) << (bits)) | ((word) >> (32-(bits)))) - -/* ----- static functions ----- */ -static void SHA1PadMessage(SHA1_CTX *ctx); -static void SHA1ProcessMessageBlock(SHA1_CTX *ctx); - -/** - * Initialize the SHA1 context - */ -void SHA1_Init(SHA1_CTX *ctx) -{ - ctx->Length_Low = 0; - ctx->Length_High = 0; - ctx->Message_Block_Index = 0; - ctx->Intermediate_Hash[0] = 0x67452301; - ctx->Intermediate_Hash[1] = 0xEFCDAB89; - ctx->Intermediate_Hash[2] = 0x98BADCFE; - ctx->Intermediate_Hash[3] = 0x10325476; - ctx->Intermediate_Hash[4] = 0xC3D2E1F0; -} - -/** - * Accepts an array of octets as the next portion of the message. - */ -void SHA1_Update(SHA1_CTX *ctx, const uint8_t *msg, int len) -{ - while (len--) - { - ctx->Message_Block[ctx->Message_Block_Index++] = (*msg & 0xFF); - ctx->Length_Low += 8; - - if (ctx->Length_Low == 0) - ctx->Length_High++; - - if (ctx->Message_Block_Index == 64) - SHA1ProcessMessageBlock(ctx); - - msg++; - } -} - -/** - * Return the 160-bit message digest into the user's array - */ -void SHA1_Final(uint8_t *digest, SHA1_CTX *ctx) -{ - int i; - - SHA1PadMessage(ctx); - memset(ctx->Message_Block, 0, 64); - ctx->Length_Low = 0; /* and clear length */ - ctx->Length_High = 0; - - for (i = 0; i < SHA1_SIZE; i++) - { - digest[i] = ctx->Intermediate_Hash[i>>2] >> 8 * ( 3 - ( i & 0x03 ) ); - } -} - -/** - * Process the next 512 bits of the message stored in the array. - */ -static void SHA1ProcessMessageBlock(SHA1_CTX *ctx) -{ - const uint32_t K[] = { /* Constants defined in SHA-1 */ - 0x5A827999, - 0x6ED9EBA1, - 0x8F1BBCDC, - 0xCA62C1D6 - }; - int t; /* Loop counter */ - uint32_t temp; /* Temporary word value */ - uint32_t W[80]; /* Word sequence */ - uint32_t A, B, C, D, E; /* Word buffers */ - - /* - * Initialize the first 16 words in the array W - */ - for (t = 0; t < 16; t++) - { - W[t] = ctx->Message_Block[t * 4] << 24; - W[t] |= ctx->Message_Block[t * 4 + 1] << 16; - W[t] |= ctx->Message_Block[t * 4 + 2] << 8; - W[t] |= ctx->Message_Block[t * 4 + 3]; - } - - for (t = 16; t < 80; t++) - { - W[t] = SHA1CircularShift(1,W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]); - } - - A = ctx->Intermediate_Hash[0]; - B = ctx->Intermediate_Hash[1]; - C = ctx->Intermediate_Hash[2]; - D = ctx->Intermediate_Hash[3]; - E = ctx->Intermediate_Hash[4]; - - for (t = 0; t < 20; t++) - { - temp = SHA1CircularShift(5,A) + - ((B & C) | ((~B) & D)) + E + W[t] + K[0]; - E = D; - D = C; - C = SHA1CircularShift(30,B); - - B = A; - A = temp; - } - - for (t = 20; t < 40; t++) - { - temp = SHA1CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[1]; - E = D; - D = C; - C = SHA1CircularShift(30,B); - B = A; - A = temp; - } - - for (t = 40; t < 60; t++) - { - temp = SHA1CircularShift(5,A) + - ((B & C) | (B & D) | (C & D)) + E + W[t] + K[2]; - E = D; - D = C; - C = SHA1CircularShift(30,B); - B = A; - A = temp; - } - - for (t = 60; t < 80; t++) - { - temp = SHA1CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[3]; - E = D; - D = C; - C = SHA1CircularShift(30,B); - B = A; - A = temp; - } - - ctx->Intermediate_Hash[0] += A; - ctx->Intermediate_Hash[1] += B; - ctx->Intermediate_Hash[2] += C; - ctx->Intermediate_Hash[3] += D; - ctx->Intermediate_Hash[4] += E; - ctx->Message_Block_Index = 0; -} - -/* - * According to the standard, the message must be padded to an even - * 512 bits. The first padding bit must be a '1'. The last 64 - * bits represent the length of the original message. All bits in - * between should be 0. This function will pad the message - * according to those rules by filling the Message_Block array - * accordingly. It will also call the ProcessMessageBlock function - * provided appropriately. When it returns, it can be assumed that - * the message digest has been computed. - * - * @param ctx [in, out] The SHA1 context - */ -static void SHA1PadMessage(SHA1_CTX *ctx) -{ - /* - * Check to see if the current message block is too small to hold - * the initial padding bits and length. If so, we will pad the - * block, process it, and then continue padding into a second - * block. - */ - if (ctx->Message_Block_Index > 55) - { - ctx->Message_Block[ctx->Message_Block_Index++] = 0x80; - while(ctx->Message_Block_Index < 64) - { - ctx->Message_Block[ctx->Message_Block_Index++] = 0; - } - - SHA1ProcessMessageBlock(ctx); - - while (ctx->Message_Block_Index < 56) - { - ctx->Message_Block[ctx->Message_Block_Index++] = 0; - } - } - else - { - ctx->Message_Block[ctx->Message_Block_Index++] = 0x80; - while(ctx->Message_Block_Index < 56) - { - - ctx->Message_Block[ctx->Message_Block_Index++] = 0; - } - } - - /* - * Store the message length as the last 8 octets - */ - ctx->Message_Block[56] = ctx->Length_High >> 24; - ctx->Message_Block[57] = ctx->Length_High >> 16; - ctx->Message_Block[58] = ctx->Length_High >> 8; - ctx->Message_Block[59] = ctx->Length_High; - ctx->Message_Block[60] = ctx->Length_Low >> 24; - ctx->Message_Block[61] = ctx->Length_Low >> 16; - ctx->Message_Block[62] = ctx->Length_Low >> 8; - ctx->Message_Block[63] = ctx->Length_Low; - SHA1ProcessMessageBlock(ctx); -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/Makefile deleted file mode 100644 index 28266869b7..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -include ../config/makefile.conf - -all: - -doco: - doxygen ./axTLS.dox - -clean:: - @-rm -fr html *~ diff --git a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/axTLS.dox b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/axTLS.dox deleted file mode 100644 index d9959b21dd..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/axTLS.dox +++ /dev/null @@ -1,1237 +0,0 @@ -# Doxyfile 1.4.5 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = axTLS - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, -# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, -# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, -# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, -# Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for -# all platforms other than Windows). - -USE_WINDOWS_ENCODING = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = NO - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is YES. - -SHOW_DIRECTORIES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = ../bindings/csharp/axTLS.cs ../bindings/java/SSL.java ../bindings/java/SSLUtil.java ../bindings/java/SSLCTX.java ../bindings/java/SSLServer.java ../bindings/java/SSLClient.java ../bindings/java/SSLReadHolder.java ../ssl/ssl.h ../crypto/bigint.c ../crypto/bigint.h - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = images - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = doco_footer.html - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = YES - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = YES - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = CONFIG_SSL_CERT_VERIFICATION CONFIG_SSL_ENABLE_CLIENT CONFIG_SSL_GENERATE_X509_CERT CONFIG_BIGINT_MONTGOMERY CONFIG_BIGINT_BARRETT CONFIG_BIGINT_CRT EXP_FUNC="" STDCALL="" - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = NO - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = NO - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = NO - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = NO - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = NO - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = NO - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = NO - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that a graph may be further truncated if the graph's -# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH -# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), -# the graph is not depth-constrained. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/doco_footer.html b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/doco_footer.html deleted file mode 100644 index 20c4e70b7a..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/doco_footer.html +++ /dev/null @@ -1,3 +0,0 @@ -

    -

    -Copyright © 2007 Cameron Rich diff --git a/package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/axolotl.jpg b/package/luci/libs/luci-lib-nixio/axTLS/docsrc/images/axolotl.jpg deleted file mode 100644 index 7352bbae836739e469c837a7fdb8114f786b2130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3041 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 diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/httpd/Config.in deleted file mode 100644 index 513d57ae30..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/httpd/Config.in +++ /dev/null @@ -1,163 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see scripts/config/Kconfig-language.txt -# - -menu "Axhttpd Configuration" -depends on CONFIG_AXHTTPD - -config CONFIG_HTTP_STATIC_BUILD - bool "Static Build" - default n - help - Select y if you want axhttpd to be a static build (i.e. don't use the - axtls shared library or dll). - -config CONFIG_HTTP_PORT - int "HTTP port" - default 80 - help - The port number of the normal HTTP server. - - You must be a root user in order to use the default port. - -config CONFIG_HTTP_HTTPS_PORT - int "HTTPS port" - default 443 - help - The port number of the HTTPS server. - - You must be a root user in order to use the default port. - -config CONFIG_HTTP_SESSION_CACHE_SIZE - int "SSL session cache size" - default 5 - help - The size of the SSL session cache. - - This is not actually related to the number of concurrent users, but - for optimum performance they should be the same (with a penalty - in memory usage). - -config CONFIG_HTTP_WEBROOT - string "Web root location" - default "../www" if !CONFIG_PLATFORM_WIN32 - default "..\\www" if CONFIG_PLATFORM_WIN32 - help - The location of the web root in relation to axhttpd. This is - the directory where index.html lives. - -config CONFIG_HTTP_TIMEOUT - int "Timeout" - default 300 - help - Set the timeout of a connection in seconds. - -menu "CGI" -depends on !CONFIG_PLATFORM_WIN32 - -config CONFIG_HTTP_HAS_CGI - bool "Enable CGI" - default y - depends on !CONFIG_PLATFORM_WIN32 - help - Enable the CGI capability. Not available on Win32 platforms. - -config CONFIG_HTTP_CGI_EXTENSIONS - string "CGI File Extension(s)" - default ".lua,.lp" - depends on CONFIG_HTTP_HAS_CGI - help - Tell axhhtpd what file extension(s) are used for CGI. - - This is a comma separated list - e.g. ".php,.pl" etc - -config CONFIG_HTTP_ENABLE_LUA - bool "Enable Lua" - default y - depends on CONFIG_HTTP_HAS_CGI - help - Lua is a powerful, fast, light-weight, embeddable scripting language. - - See http://www.lua.org for details. - -config CONFIG_HTTP_LUA_PREFIX - string "Lua's Installation Prefix" - default "/usr/local" - depends on CONFIG_HTTP_ENABLE_LUA - - help - The location of Lua's installation prefix. This is also necessary for - Lua's cgi launcher application. - -config CONFIG_HTTP_LUA_CGI_LAUNCHER - string "CGI launcher location" - default "/bin/cgi.exe" if CONFIG_PLATFORM_CYGWIN - default "/bin/cgi" if !CONFIG_PLATFORM_CYGWIN - depends on CONFIG_HTTP_ENABLE_LUA - help - The location of LUA's CGI launcher application (after - the CONFIG_HTTP_LUA_PREFIX) - -config CONFIG_HTTP_BUILD_LUA - bool "Build Lua" - default n - depends on CONFIG_HTTP_ENABLE_LUA - help - Build Lua and install in /usr/local/bin - -endmenu - -config CONFIG_HTTP_DIRECTORIES - bool "Enable Directory Listing" - default y - help - Enable directory listing. - -config CONFIG_HTTP_HAS_AUTHORIZATION - bool "Enable authorization" - default y - help - Pages/directories can have passwords associated with them. - -config CONFIG_HTTP_HAS_IPV6 - bool "Enable IPv6" - default n - depends on !CONFIG_PLATFORM_WIN32 - help - Use IPv6 instead of IPv4. - - Does not work under Win32 - -config CONFIG_HTTP_ENABLE_DIFFERENT_USER - bool "Enable different user" - default n - depends on !CONFIG_PLATFORM_WIN32 - help - Allow the web server to be run as a different user - -config CONFIG_HTTP_USER - string "As User" - default "nobody" - depends on CONFIG_HTTP_ENABLE_DIFFERENT_USER - help - The user name that will be used to run axhttpd. - -config CONFIG_HTTP_VERBOSE - bool "Verbose Mode" - default y if CONFIG_SSL_FULL_MODE - default n if !CONFIG_SSL_FULL_MODE - help - Enable extra statements used when using axhttpd. - -config CONFIG_HTTP_IS_DAEMON - bool "Run as a daemon" - default n - depends on !CONFIG_PLATFORM_WIN32 - help - Run axhttpd as a background process. - - Does not work under Win32 - -endmenu - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/httpd/Makefile deleted file mode 100644 index b8c18d2445..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/httpd/Makefile +++ /dev/null @@ -1,127 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -all : web_server lua - -AXTLS_HOME=.. - -include $(AXTLS_HOME)/config/.config -include $(AXTLS_HOME)/config/makefile.conf - -ifndef CONFIG_PLATFORM_WIN32 - -ifdef CONFIG_PLATFORM_CYGWIN -TARGET=$(AXTLS_HOME)/$(STAGE)/axhttpd.exe -TARGET2=$(AXTLS_HOME)/$(STAGE)/htpasswd.exe -else -TARGET=$(AXTLS_HOME)/$(STAGE)/axhttpd -TARGET2=$(AXTLS_HOME)/$(STAGE)/htpasswd -endif - -ifdef CONFIG_HTTP_STATIC_BUILD -LIBS=$(AXTLS_HOME)/$(STAGE)/libaxtls.a -else -LIBS=-L$(AXTLS_HOME)/$(STAGE) -laxtls -endif - -ifdef CONFIG_HTTP_BUILD_LUA -lua: kepler-1.1 - -kepler-1.1: - @tar xvfz kepler-1.1-snapshot-20070521-1825.tar.gz - @cat kepler.patch | patch -p0 - cd kepler-1.1; ./configure --prefix=$(CONFIG_HTTP_LUA_PREFIX) --launcher=cgi --lua-suffix= ; make install -else -lua: -endif - -else # win32 build -lua: - -TARGET=$(AXTLS_HOME)/$(STAGE)/axhttpd.exe -TARGET2=$(AXTLS_HOME)/$(STAGE)/htpasswd.exe - -ifdef CONFIG_HTTP_STATIC_BUILD -LIBS=$(AXTLS_HOME)/$(STAGE)/axtls.static.lib $(AXTLS_HOME)\\config\\axtls.res -else -LIBS=$(AXTLS_HOME)/$(STAGE)/axtls.lib $(AXTLS_HOME)\\config\\axtls.res -endif -endif - -ifndef CONFIG_AXHTTPD -web_server: -else - -web_server :: $(TARGET) - -ifdef CONFIG_HTTP_HAS_AUTHORIZATION -web_server :: $(TARGET2) -endif - -OBJ= \ - axhttpd.o \ - proc.o \ - tdate_parse.o - -include $(AXTLS_HOME)/config/makefile.post - -ifndef CONFIG_PLATFORM_WIN32 - -$(TARGET): $(OBJ) $(AXTLS_HOME)/$(STAGE)/libaxtls.a - $(LD) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) -ifdef CONFIG_STRIP_UNWANTED_SECTIONS - $(STRIP) --remove-section=.comment $(TARGET) -endif - -$(TARGET2): htpasswd.o $(AXTLS_HOME)/$(STAGE)/libaxtls.a - $(LD) $(LDFLAGS) -o $@ htpasswd.o $(LIBS) - -else # Win32 - -OBJ:=$(OBJ:.o=.obj) -%.obj : %.c - $(CC) $(CFLAGS) $< - -htpasswd.obj : htpasswd.c - $(CC) $(CFLAGS) $? - -$(TARGET): $(OBJ) - $(LD) $(LDFLAGS) /out:$@ $(LIBS) $? - -$(TARGET2): htpasswd.obj - $(LD) $(LDFLAGS) /out:$@ $(LIBS) $? -endif - -endif # CONFIG_AXHTTPD - -clean:: - -@rm -f $(TARGET)* - -@rm -fr kepler-1.1 - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttp.h b/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttp.h deleted file mode 100644 index 73c299fb14..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttp.h +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "ssl.h" - -#define BACKLOG 15 -#define VERSION "1.0.0" -#ifdef CONFIG_HTTP_HAS_IPV6 -#define HAVE_IPV6 -#endif - -#define MAXPOSTDATASIZE 30000 -#define MAXREQUESTLENGTH 256 -#define BLOCKSIZE 4096 - -#define INITIAL_CONNECTION_SLOTS 10 -#define CONFIG_HTTP_DEFAULT_SSL_OPTIONS SSL_DISPLAY_CERTS - -#define STATE_WANT_TO_READ_HEAD 1 -#define STATE_WANT_TO_SEND_HEAD 2 -#define STATE_WANT_TO_READ_FILE 3 -#define STATE_WANT_TO_SEND_FILE 4 -#define STATE_DOING_DIR 5 - -enum -{ - TYPE_GET, - TYPE_HEAD, - TYPE_POST -}; - -struct connstruct -{ - struct connstruct *next; - int state; - int reqtype; - int networkdesc; - int filedesc; - SSL *ssl; - -#if defined(CONFIG_HTTP_DIRECTORIES) -#ifdef WIN32 - HANDLE dirp; - WIN32_FIND_DATA file_data; -#else - DIR *dirp; -#endif -#endif - - time_t timeout; - char actualfile[MAXREQUESTLENGTH]; - char filereq[MAXREQUESTLENGTH]; - char dirname[MAXREQUESTLENGTH]; - char server_name[MAXREQUESTLENGTH]; - int numbytes; - char databuf[BLOCKSIZE]; - uint8_t is_ssl; - uint8_t close_when_done; - time_t if_modified_since; - -#if defined(CONFIG_HTTP_HAS_CGI) - uint8_t is_cgi; -#ifdef CONFIG_HTTP_ENABLE_LUA - uint8_t is_lua; -#endif - int content_length; - char remote_addr[MAXREQUESTLENGTH]; - char uri_request[MAXREQUESTLENGTH]; - char uri_path_info[MAXREQUESTLENGTH]; - char uri_query[MAXREQUESTLENGTH]; - char cookie[MAXREQUESTLENGTH]; -#endif -#if defined(CONFIG_HTTP_HAS_AUTHORIZATION) - char authorization[MAXREQUESTLENGTH]; -#endif - int post_read; - int post_state; - char *post_data; -}; - -struct serverstruct -{ - struct serverstruct *next; - int sd; - int is_ssl; - SSL_CTX *ssl_ctx; -}; - -#if defined(CONFIG_HTTP_HAS_CGI) -struct cgiextstruct -{ - struct cgiextstruct *next; - char *ext; -}; -#endif - -/* global prototypes */ -extern struct serverstruct *servers; -extern struct connstruct *usedconns; -extern struct connstruct *freeconns; -extern const char * const server_version; - -#if defined(CONFIG_HTTP_HAS_CGI) -extern struct cgiextstruct *cgiexts; -#endif - -/* conn.c prototypes */ -void removeconnection(struct connstruct *cn); - -/* proc.c prototypes */ -void procdodir(struct connstruct *cn); -void procreadhead(struct connstruct *cn); -void procsendhead(struct connstruct *cn); -void procreadfile(struct connstruct *cn); -void procsendfile(struct connstruct *cn); -#if defined(CONFIG_HTTP_HAS_CGI) -void read_post_data(struct connstruct *cn); -#endif - -/* misc.c prototypes */ -char *my_strncpy(char *dest, const char *src, size_t n); -int isdir(const char *name); - -/* tdate prototypes */ -void tdate_init(void); -time_t tdate_parse(const char* str); - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttpd.c b/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttpd.c deleted file mode 100644 index 35d36f64c1..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/httpd/axhttpd.c +++ /dev/null @@ -1,604 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include -#include "axhttp.h" - -struct serverstruct *servers; -struct connstruct *usedconns; -struct connstruct *freeconns; -const char * const server_version = "axhttpd/"AXTLS_VERSION; - -static void addtoservers(int sd); -static int openlistener(int port); -static void handlenewconnection(int listenfd, int is_ssl); -static void addconnection(int sd, char *ip, int is_ssl); -static void ax_chdir(void); - -#if defined(CONFIG_HTTP_HAS_CGI) -struct cgiextstruct *cgiexts; -static void addcgiext(const char *tp); - -#if !defined(WIN32) -static void reaper(int sigtype) -{ - wait3(NULL, WNOHANG, NULL); -} -#endif -#endif - -#ifdef CONFIG_HTTP_VERBOSE /* should really be in debug mode or something */ -/* clean up memory for valgrind */ -static void sigint_cleanup(int sig) -{ - struct serverstruct *sp; - struct connstruct *tp; - - while (servers != NULL) - { - if (servers->is_ssl) - ssl_ctx_free(servers->ssl_ctx); - - sp = servers->next; - free(servers); - servers = sp; - } - - while (freeconns != NULL) - { - tp = freeconns->next; - free(freeconns); - freeconns = tp; - } - - while (usedconns != NULL) - { - tp = usedconns->next; - free(usedconns); - usedconns = tp; - } - -#if defined(CONFIG_HTTP_HAS_CGI) - while (cgiexts) - { - struct cgiextstruct *cp = cgiexts->next; - if (cp == NULL) /* last entry */ - free(cgiexts->ext); - free(cgiexts); - cgiexts = cp; - } -#endif - - exit(0); -} - -static void die(int sigtype) -{ - exit(0); -} -#endif - -int main(int argc, char *argv[]) -{ - fd_set rfds, wfds; - struct connstruct *tp, *to; - struct serverstruct *sp; - int rnum, wnum, active; - int i; - time_t currtime; - -#ifdef WIN32 - WORD wVersionRequested = MAKEWORD(2, 2); - WSADATA wsaData; - WSAStartup(wVersionRequested,&wsaData); -#else - signal(SIGPIPE, SIG_IGN); -#if defined(CONFIG_HTTP_HAS_CGI) - signal(SIGCHLD, reaper); -#endif -#ifdef CONFIG_HTTP_VERBOSE - signal(SIGQUIT, die); -#endif -#endif - -#ifdef CONFIG_HTTP_VERBOSE - signal(SIGTERM, die); - signal(SIGINT, sigint_cleanup); -#endif - tdate_init(); - - for (i = 0; i < INITIAL_CONNECTION_SLOTS; i++) - { - tp = freeconns; - freeconns = (struct connstruct *)calloc(1, sizeof(struct connstruct)); - freeconns->next = tp; - } - - if ((active = openlistener(CONFIG_HTTP_PORT)) == -1) - { -#ifdef CONFIG_HTTP_VERBOSE - fprintf(stderr, "ERR: Couldn't bind to port %d\n", - CONFIG_HTTP_PORT); -#endif - exit(1); - } - - addtoservers(active); - - if ((active = openlistener(CONFIG_HTTP_HTTPS_PORT)) == -1) - { -#ifdef CONFIG_HTTP_VERBOSE - fprintf(stderr, "ERR: Couldn't bind to port %d\n", - CONFIG_HTTP_HTTPS_PORT); -#endif - exit(1); - } - - addtoservers(active); - servers->ssl_ctx = ssl_ctx_new(CONFIG_HTTP_DEFAULT_SSL_OPTIONS, - CONFIG_HTTP_SESSION_CACHE_SIZE); - servers->is_ssl = 1; - -#if defined(CONFIG_HTTP_HAS_CGI) - addcgiext(CONFIG_HTTP_CGI_EXTENSIONS); -#endif - -#if defined(CONFIG_HTTP_VERBOSE) -#if defined(CONFIG_HTTP_HAS_CGI) - printf("addcgiext %s\n", CONFIG_HTTP_CGI_EXTENSIONS); -#endif - printf("%s: listening on ports %d (http) and %d (https)\n", - server_version, CONFIG_HTTP_PORT, CONFIG_HTTP_HTTPS_PORT); - TTY_FLUSH(); -#endif - - ax_chdir(); - -#ifdef CONFIG_HTTP_ENABLE_DIFFERENT_USER - { - struct passwd *pd = getpwnam(CONFIG_HTTP_USER); - - if (pd != NULL) - { - int res = setuid(pd->pw_uid); - res |= setgid(pd->pw_gid); - -#if defined(CONFIG_HTTP_VERBOSE) - if (res == 0) - { - printf("change to '%s' successful\n", CONFIG_HTTP_USER); - TTY_FLUSH(); - } -#endif - } - - } -#endif - - -#ifndef WIN32 -#ifdef CONFIG_HTTP_IS_DAEMON - if (fork() > 0) /* parent will die */ - exit(0); - - setsid(); -#endif -#endif - - /* main loop */ - while (1) - { - FD_ZERO(&rfds); - FD_ZERO(&wfds); - rnum = wnum = -1; - sp = servers; - - while (sp != NULL) /* read each server port */ - { - FD_SET(sp->sd, &rfds); - - if (sp->sd > rnum) - rnum = sp->sd; - sp = sp->next; - } - - /* Add the established sockets */ - tp = usedconns; - currtime = time(NULL); - - while (tp != NULL) - { - if (currtime > tp->timeout) /* timed out? Kill it. */ - { - to = tp; - tp = tp->next; - removeconnection(to); - continue; - } - - if (tp->state == STATE_WANT_TO_READ_HEAD) - { - FD_SET(tp->networkdesc, &rfds); - if (tp->networkdesc > rnum) - rnum = tp->networkdesc; - } - - if (tp->state == STATE_WANT_TO_SEND_HEAD) - { - FD_SET(tp->networkdesc, &wfds); - if (tp->networkdesc > wnum) - wnum = tp->networkdesc; - } - - if (tp->state == STATE_WANT_TO_READ_FILE) - { - FD_SET(tp->filedesc, &rfds); - if (tp->filedesc > rnum) - rnum = tp->filedesc; - } - - if (tp->state == STATE_WANT_TO_SEND_FILE) - { - FD_SET(tp->networkdesc, &wfds); - if (tp->networkdesc > wnum) - wnum = tp->networkdesc; - } - -#if defined(CONFIG_HTTP_DIRECTORIES) - if (tp->state == STATE_DOING_DIR) - { - FD_SET(tp->networkdesc, &wfds); - if (tp->networkdesc > wnum) - wnum = tp->networkdesc; - } -#endif - tp = tp->next; - } - - active = select(wnum > rnum ? wnum+1 : rnum+1, - rnum != -1 ? &rfds : NULL, - wnum != -1 ? &wfds : NULL, - NULL, NULL); - - /* New connection? */ - sp = servers; - while (active > 0 && sp != NULL) - { - if (FD_ISSET(sp->sd, &rfds)) - { - handlenewconnection(sp->sd, sp->is_ssl); - active--; - } - - sp = sp->next; - } - - /* Handle the established sockets */ - tp = usedconns; - - while (active > 0 && tp != NULL) - { - to = tp; - tp = tp->next; - - if (to->state == STATE_WANT_TO_READ_HEAD && - FD_ISSET(to->networkdesc, &rfds)) - { - active--; -#if defined(CONFIG_HTTP_HAS_CGI) - if (to->post_state) - read_post_data(to); - else -#endif - procreadhead(to); - } - - if (to->state == STATE_WANT_TO_SEND_HEAD && - FD_ISSET(to->networkdesc, &wfds)) - { - active--; - procsendhead(to); - } - - if (to->state == STATE_WANT_TO_READ_FILE && - FD_ISSET(to->filedesc, &rfds)) - { - active--; - procreadfile(to); - } - - if (to->state == STATE_WANT_TO_SEND_FILE && - FD_ISSET(to->networkdesc, &wfds)) - { - active--; - procsendfile(to); - } - -#if defined(CONFIG_HTTP_DIRECTORIES) - if (to->state == STATE_DOING_DIR && - FD_ISSET(to->networkdesc, &wfds)) - { - active--; - procdodir(to); - } -#endif - } - } - - return 0; -} - -#if defined(CONFIG_HTTP_HAS_CGI) -static void addcgiext(const char *cgi_exts) -{ - char *cp = strdup(cgi_exts); - - /* extenstions are comma separated */ - do - { - struct cgiextstruct *ex = (struct cgiextstruct *) - malloc(sizeof(struct cgiextstruct)); - ex->ext = cp; - ex->next = cgiexts; - cgiexts = ex; - if ((cp = strchr(cp, ',')) != NULL) - *cp++ = 0; - } while (cp != NULL); -} -#endif - -static void addtoservers(int sd) -{ - struct serverstruct *tp = (struct serverstruct *) - calloc(1, sizeof(struct serverstruct)); - tp->next = servers; - tp->sd = sd; - servers = tp; -} - -#ifdef HAVE_IPV6 -static void handlenewconnection(int listenfd, int is_ssl) -{ - struct sockaddr_in6 their_addr; - int tp = sizeof(their_addr); - char ipbuf[100]; - int connfd = accept(listenfd, (struct sockaddr *)&their_addr, &tp); - - if (tp == sizeof(struct sockaddr_in6)) - inet_ntop(AF_INET6, &their_addr.sin6_addr, ipbuf, sizeof(ipbuf)); - else if (tp == sizeof(struct sockaddr_in)) - inet_ntop(AF_INET, &(((struct sockaddr_in *)&their_addr)->sin_addr), - ipbuf, sizeof(ipbuf)); - else - *ipbuf = '\0'; - - addconnection(connfd, ipbuf, is_ssl); -} - -#else -static void handlenewconnection(int listenfd, int is_ssl) -{ - struct sockaddr_in their_addr; - socklen_t tp = sizeof(struct sockaddr_in); - int connfd = accept(listenfd, (struct sockaddr *)&their_addr, &tp); - addconnection(connfd, inet_ntoa(their_addr.sin_addr), is_ssl); -} -#endif - -static int openlistener(int port) -{ - int sd; -#ifdef WIN32 - char tp = 1; -#else - int tp = 1; -#endif -#ifndef HAVE_IPV6 - struct sockaddr_in my_addr; - - if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) - return -1; - - memset(&my_addr, 0, sizeof(my_addr)); - my_addr.sin_family = AF_INET; - my_addr.sin_port = htons((short)port); - my_addr.sin_addr.s_addr = INADDR_ANY; -#else - struct sockaddr_in6 my_addr; - - if ((sd = socket(AF_INET6, SOCK_STREAM, 0)) == -1) - return -1; - - memset(&my_addr, 0, sizeof(my_addr)); - my_addr.sin6_family = AF_INET6; - my_addr.sin6_port = htons(port); - my_addr.sin6_addr.s_addr = INADDR_ANY; -#endif - - setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, &tp, sizeof(tp)); - if (bind(sd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) - { - close(sd); - return -1; - } - - listen(sd, BACKLOG); - return sd; -} - -/* Wrapper function for strncpy() that guarantees - a null-terminated string. This is to avoid any possible - issues due to strncpy()'s behaviour. - */ -char *my_strncpy(char *dest, const char *src, size_t n) -{ - strncpy(dest, src, n); - dest[n-1] = '\0'; - return dest; -} - -int isdir(const char *tpbuf) -{ - struct stat st; - char path[MAXREQUESTLENGTH]; - strcpy(path, tpbuf); - -#ifdef WIN32 /* win32 stat() can't handle trailing '\' */ - if (path[strlen(path)-1] == '\\') - path[strlen(path)-1] = 0; -#endif - - if (stat(path, &st) == -1) - return 0; - - if ((st.st_mode & S_IFMT) == S_IFDIR) - return 1; - - return 0; -} - -static void addconnection(int sd, char *ip, int is_ssl) -{ - struct connstruct *tp; - - /* Get ourselves a connstruct */ - if (freeconns == NULL) - tp = (struct connstruct *)calloc(1, sizeof(struct connstruct)); - else - { - tp = freeconns; - freeconns = tp->next; - } - - /* Attach it to the used list */ - tp->next = usedconns; - usedconns = tp; - tp->networkdesc = sd; - - if (is_ssl) - tp->ssl = ssl_server_new(servers->ssl_ctx, sd); - - tp->is_ssl = is_ssl; - tp->filedesc = -1; -#if defined(CONFIG_HTTP_HAS_DIRECTORIES) - tp->dirp = NULL; -#endif - *tp->actualfile = '\0'; - *tp->filereq = '\0'; - tp->state = STATE_WANT_TO_READ_HEAD; - tp->reqtype = TYPE_GET; - tp->close_when_done = 0; - tp->timeout = time(NULL) + CONFIG_HTTP_TIMEOUT; -#if defined(CONFIG_HTTP_HAS_CGI) - strcpy(tp->remote_addr, ip); -#endif -} - -void removeconnection(struct connstruct *cn) -{ - struct connstruct *tp; - int shouldret = 0; - - tp = usedconns; - - if (tp == NULL || cn == NULL) - shouldret = 1; - else if (tp == cn) - usedconns = tp->next; - else - { - while (tp != NULL) - { - if (tp->next == cn) - { - tp->next = (tp->next)->next; - shouldret = 0; - break; - } - - tp = tp->next; - shouldret = 1; - } - } - - if (shouldret) - return; - - /* If we did, add it to the free list */ - cn->next = freeconns; - freeconns = cn; - - /* Close it all down */ - if (cn->networkdesc != -1) - { - if (cn->is_ssl) - { - ssl_free(cn->ssl); - cn->ssl = NULL; - } - - SOCKET_CLOSE(cn->networkdesc); - } - - if (cn->filedesc != -1) - close(cn->filedesc); - -#if defined(CONFIG_HTTP_HAS_DIRECTORIES) - if (cn->dirp != NULL) -#ifdef WIN32 - FindClose(cn->dirp); -#else - closedir(cn->dirp); -#endif -#endif -} - -/* - * Change directories one way or the other. - */ -static void ax_chdir(void) -{ - static char *webroot = CONFIG_HTTP_WEBROOT; - - if (chdir(webroot)) - { -#ifdef CONFIG_HTTP_VERBOSE - fprintf(stderr, "'%s' is not a directory\n", webroot); -#endif - exit(1); - } -} - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/htpasswd.c b/package/luci/libs/luci-lib-nixio/axTLS/httpd/htpasswd.c deleted file mode 100644 index 1a7a2311f8..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/httpd/htpasswd.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include "ssl.h" - -int tfd; - -void base64_encode(const uint8_t *in, size_t inlen, char *out, size_t outlen) -{ - static const char b64str[64] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - - while (inlen && outlen) - { - *out++ = b64str[(in[0] >> 2) & 0x3f]; - if (!--outlen) - break; - - *out++ = b64str[((in[0] << 4) - + (--inlen ? in[1] >> 4 : 0)) & 0x3f]; - if (!--outlen) - break; - *out++ = (inlen - ? b64str[((in[1] << 2) - + (--inlen ? in[2] >> 6 : 0)) - & 0x3f] - : '='); - if (!--outlen) - break; - *out++ = inlen ? b64str[in[2] & 0x3f] : '='; - if (!--outlen) - break; - if (inlen) - inlen--; - if (inlen) - in += 3; - } - - if (outlen) - *out = '\0'; -} - -static void usage(void) -{ - fprintf(stderr,"Usage: htpasswd username\n"); - exit(1); -} - -#ifdef WIN32 -static char * getpass(const char *prompt) -{ - static char buf[127]; - FILE *fp = stdin; - - printf(prompt); TTY_FLUSH(); -#if 0 - fp = fopen("/dev/tty", "w"); - if (fp == NULL) - { - printf("null\n"); TTY_FLUSH(); - fp = stdin; - } -#endif - - fgets(buf, sizeof(buf), fp); - while (buf[strlen(buf)-1] < ' ') - buf[strlen(buf)-1] = '\0'; - - //if (fp != stdin) - // fclose(fp); - return buf; -} -#endif - -int main(int argc, char *argv[]) -{ - char* pw; - uint8_t md5_salt[MD5_SIZE], md5_pass[MD5_SIZE]; - char b64_salt[MD5_SIZE+10], b64_pass[MD5_SIZE+10]; - MD5_CTX ctx; - - if (argc != 2) - usage(); - - pw = strdup(getpass("New password:")); - if (strcmp(pw, getpass("Re-type new password:")) != 0) - { - fprintf(stderr, "They don't match, sorry.\n" ); - exit(1); - } - - RNG_initialize((uint8_t *)pw, sizeof(pw)); - get_random(MD5_SIZE, md5_salt); - RNG_terminate(); - base64_encode(md5_salt, MD5_SIZE, b64_salt, sizeof(b64_salt)); - - MD5_Init(&ctx); - MD5_Update(&ctx, md5_salt, MD5_SIZE); - MD5_Update(&ctx, (uint8_t *)pw, strlen(pw)); - MD5_Final(md5_pass, &ctx); - base64_encode(md5_pass, MD5_SIZE, b64_pass, sizeof(b64_pass)); - - printf("Add the following to your '.htpasswd' file\n"); - printf("%s:%s$%s\n", argv[1], b64_salt, b64_pass); - return 0; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler-1.1-snapshot-20070521-1825.tar.gz b/package/luci/libs/luci-lib-nixio/axTLS/httpd/kepler-1.1-snapshot-20070521-1825.tar.gz deleted file mode 100755 index d1caec5a53f93f043a32ec04807dff259223c32c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768249 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 YXxC^qAC}G&Q`96+aR{7@ixnC?xYwp`@XY^ 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�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

    2bm+X^54>e7*eCs3InBgzoH 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

    +%Mc3Se$=H}jAx->R7 z|C_xhfroNye?-M3wA{9<%$-Wq7_zkJYC(|-#nobKFqn)PW+81_soNsAR4S>YLc3&1 zT9oQWNKzz~qLNT4$?`wvyze{nj_odA-~ImI|KI$|k9p5~mghYCInVQK(=?5+irQVY ztYY>rE-w45VzWknSX8^Tw!UcP1>f>hF4du)Hyf_5`}E>P>*m|XE~b4tx8OcUHRp#b zfOegooE%O$DN&|Qn7Ds3@AJE@ z%UYZDe0&bCSv)W9USa*MSI4unb2o%ApVkFrGt`91F(dnKvWo3SISBaDxpRW@tgZaZ z%>lpsQV0;8>6CKtk=%5Jwf8IU)^(G=d?!17()d_a3MG2VIiDh%mX@*ulbzWI;}$yh zD+}@p{}Nr2X5{20Hk?nHJ9loc0gTnOSD&g&0HfcVIAe6g=y1#ZQBg*d4u)v!R4+RB zB72w4#Hgs4ipqioX%}w>yiMuX$3On~aXVM9+M3p3F~TNu)y?eImai=1R{gn@sHmvD zzd{P{(mmzV1)^UE?!baZn31{zLgmL*l)OiB4rShzhX$oj!KVf*$@j zV`WKhuIky(!Jkfq-Z2q3E!{Bj;+8>&9WsyE%-^sfYP3%E-Y+$mn;q{LC&?YXk#knCT3TAFI_&4ww2grKOqlSozW#^){dY!0JbL)>gk$oysdH60Y;il=@c!i;(?fdW z;O9Z@r@IX)O;f z_q&foI`R$1no^b|HGZwRe5~Mgg2TzZ#+QH)&%S#%KqOjGbuw9bzkk>k%Yu8%h=}?H z7ZxP3*WX;Hr#y9g@l-i;^OTC0m#SWQ8&pqJ&P+;LH=bv>Yp2M_NXcTx5t^d$q!Omn ztNt1_N&fC?`{tOX_Rv4oT_hI2eDUIz$GO6U`8^dByffsc<%JKo_*7HIf4al%?A!XH z!~-T(NsAAa*DZFVFK=$V^2&R_zB$Q>!>6e+`dhtu)1w!)__T{}-b7Uu)xgx?R+FAR zW0KFWCm>5 zu+QDyWNyf)@LHb-4drzy*RI`-%XLjxi!bzZqyIPuOk{X6uT&rwPmj6fk>;@8i3zmE zy1Kf%ckeb{dr_I}Te{arTO2%T(!I>keWs>+W?bsNcCpj`%7zrT;uVLEykIX)*}TS@ z`+H!uLbqvVX7ao57&(tWpPrtck>PUE;YY>Vr&s0WO&&gddc7hiStlj0xnke_>6-`a zsiiBf4Q{UbHFj38|EZptR{;5MTy$s%P{}r!vOqs>mZjZRvrwOKGdix`Tk}qo%@?LSza3gOXowIq)swm6r8dDC8^X)!H&GG^- zXS!YNAmtgBmWt6~>Cf{^yRV_8c<0k~b#)Kff_*g@7S?mx_8AMU`W*z)HX*^Mxv{=c z!LNKqd1ds#T$e9&K}Gfu4UL{cH$QPw!l`$BUdxS7OC3wjoYr;Er@!EB&3wjiN>Mx8 z%XClot9m~J-DAI3$*RIJF%9#0$dt8CeJ7Sd3azwhR+?ycckfURBQF9P`j$7`-gaa>PX8QEEc=zAev$0Wo>W^8U|EbDq-PtLGLM zrvU`Mc+t_7vc>nhbyWPhrS(1ae(@?eUix~)s-~sgpI0gO$b9rDH8pjiD}~V=(9-4B zC+`aZX20WcjlC%p<&X7103F?$YXAs6H}^DbsJos)Np)iGxSjX*(GLRvpV{ITAru~u zzgDr+l{vq#sLCkkRrSz2xfU)?04qoF3t?q4~uewW6o<2Of? zRD1{vKF>PWecpnHai@FT^ZTOzo_TuTzLJ*aul0kc(s~^{b}aO^2R;6`F%h=b);qog zWv$;eAb-cG(u$kHXQo@9QKqy!T3_)s)8VnqeG%+kU`&-Tj*^M>wbImps(gR))f>r6~A^!^*8qU!GoH-)-yy zYisLSn^o-i+y`gUhhG&D5KEe1zL4Zo6ZL7(gCRRsQZqb%mz9JRF^66$Uhn;K&4{h(D{ z#iFuD#!qrr^qdwgvWm%9>%RDEqHDpRA9sXpy?yrAlb1EVe7v0rKkgMmvvp^(G!A@H ze@L-wKHA)i-Z%2VO0#aZ359A3hx|{Bo4jqIZ=;c$wY&ZZO6)wPOuZp;w_d8b?P8AL(bOHyK$!uQlx_HZXAgjX!AfMv2X94#o4=>yH%`cV7=JXk5hbaegZ4p@?O~#X1G>TNs%b6 z{^gy);o-+ujG<6gXRRRYHHfB zL$(=;N)!DXMX^WCfB=hLm8Q-0bZ4fYuXlkB!z10-9M?}Q>d;1JhRUPfN=gXD7 zMshhUL998ND58tgzxbBIZjVz#HSesGTtLD8H zMcq^^P*gS_=eS3;{|}echepU#Z08;-aS1I01SKpRzRqcJguzpQmcVNR>jp%D0)ju$B`M`nHTAz@qSAv!o7#Iw{d%)S} z{$>@G2Tz_Tn&>HK0^7U1iI!Zl&p)0-kgI6&2KXS6zFV)~wN?>T@uBwtV&KTaiL_h;&c-x?ds-1pVJd&kq<5m&HI*|S@1y;zYdSmLd=M#;GY$RU97#yne8VmB)w$Vm_75IB zIGp;%y*!J?=ylJ203)w78EA%@BbpvNuc-g!(K&YIxpN2h1?}1$-e>(%-@eM3BIA|C zCzTd$?|#rBK`0dFFL28EaF_0`>%X^miqpWTT%ZFPiET&x*7Vw@d*i3=`Cf7gYXYAr zP3xol_zY`ZbaeE)+@CURGTmE`_Gp((-v$p1Jps(S^CONBy;r z8f1@(zW%7B>eIp_g|5QDI>HBn_LXg8Cy2qD1O=mJ-yl|mzGyoS2q@i z@A@bTc6FWMGv-{44YP>-nP-15E%>staJe;5JhH|BiEj~hYWD2(3DtVz3=E#fgdIN5 zI(kS9FmFk+uVX`;UBURluFG@k@5PQkx;L=jrezWDO-$nW>4%D@D=o`QOW=5W*M9tX zKS-(2@NRVFrPfv3?p~gt9(v(|NtR~arO!Mz+oY(8sZ-i_X!C~~JF2UPm#zAGB0YWn zq1D~Gsh2I+72TlnDU`eWO?5^THUYcL3 zqq(C_PHvme1BD~UzCNo<$)7toqA}6<2c!%Z>4~8M|`QGoQVDK|X}T+c!qo{E}izisR7Db43=AD%rn zTXXt{h{%l7?@E1U&AKRR6dCU`S^3#hWDkgg9jX%XyGQ)#%gnFu@AQ{%{<=nfruVj= zs@}Yrs-{fUH=Gn5ad8A|kV~rmk6Y#Tai01;egE=6U7d@Ii(y|ST{X-2_(q{%uWi~x zO*KDl?fvXKKQCY`S63-2o6_=jA>YNN%3kM#kxx^>y%p7OZvhke(W4~0`sm%dpBaqD zTP8Hc7ryB?%KFTsx986r%3s~mZ#7Wb?z}YCy|rhCV~L;ltJ`1V5_u{P4(s2%8MKHJUu3a-V z+)4?%>71VOBqwL%SJMiE*_tEA_{eLz_#Jfqoxj2Y>xB?50`2L3(q>&Z^vcvB%P{)oLf2W-VL~)>3?4yFdHs+O^#%l)U+Q6VvXk zsCja{wWVf#>X!i*R=l72_NIoe*}`XOX=$U!j4>J(H8+dDi()@I!fD&@jUPWg#!5raj`HNmlRLY0TVEfGZfx9g=FA-H3VVBQ zrNFCs+tLEX-t1kw`Ho4y=QbVBTl|iuK5$@Vb#-%r&6L4~5kQvAnpIYId5Y)c{XhB0 zO?#TDI{eP>7aAMsj%-fk{{8nk-NHV_RMdq0?xCORWF5Qr@S&C$Ge3W-4jeKhJMHYy zet_Ie_r*$^F{OAsO;YZ&duX$e3?#qp?{Gq>yW?W%NrT5vr{mPT{pt{ETH5L3mZ|pAXQQuxX*wWH+ z;sm3|y1ECB{K1p74}{oir7lmNsC&BlS*D8c@m#$@50sSN-nWk~Ola<%qI^y9;IV$-LqY!+Wy)G+P#n#o=i0zT=!K z7YY=nv=pjSSH7&VgxMb1S6bNht@ zP(6SCJT1*wb4TQFzde8X(x|6WqF-QkdEMTK^!~-n;NajHGiEGa{B-}w ztZO#aTKI*~8^#$0Q}yKg$d?Gc!|Dm>YM0 z=gysRyHuzfx`o{=_e+V4GE$i4c6I?{K-jizDypgl-iFNG3C+ndF=i(n0BrB>czG+` za=rD6mGJXY5ajCW8XVkeXi}5tmHVqXogQvUQ>$It^se+`(hmzq^o^R}54e_(kI#^; z*0-h3%YwThh=XAexL;-kPyHm8SQx^yWbBI1UZ!^WmX z-D@w0OpFp-a?>PEMw_Paehb|ASt0&B5S>4ZrY{iTv7Hp!OkbF{)Qio7rIN7AcNW&a z&@8<9LJ?kAOUr{Dz;S1r`0;!NtUzsQcJ_r0@Q8TkbZhfdri<79hfb)!fBv1HPVaw^ z?#utHV|0E0!%)v)T)X=3;Dzt^KmLi&|F-zQ|1bF;|Bu8A{#T`c{2n^^pAQ|xF@y*f z{KI^j-y;UUM+|EnTIl1MKsKnF%x@_Dc|g9?*NVfl%8Y)QnXq&%{ebUVleg-r&&2lK&! z>3DJZZY)%Rodff>!EA0=0ykI}0!$ApM}bikQTK*w4`+lm!z&RZpo?JoCRC>w23oSX zoMl*W6;`)`2o0j*sqcuYB`~fHZZqBpOIC;V2*foD6*`f|&UMJ@N#Eh{MI;~S%>h6n z&5-Di)LjQWU-}iPGq6Xrb`MZwEKvbkHa{rB4t4SY)3uKsrAb2a!FF z=lEl|0BA-4w8moq$@s{W)LMbLbS`_o}CD(D2+hL}E}Ys4I@ zE2Exxc_`JST>iWP_Dv1eK-`X8l3Vytb+xVg|A~ zPo;6DGa*fRU>ih=P)9V333*t^jV2T$X~h!ZS*1x8oe(wvQW1!GJR)HDPgc+Z6I=q; zh2>3!nQO^P9O|1CJiY{ICmbP>2ms}|b>Ik~#DJNOy@9O8O6UQ!@NU-!Ig2hHbPFTU zVP;2(?gYslrZdDx2*5k{?YMJ1AvFYIS1?2wwq-%s5x}S&LQKSV_Y$x?nSNq-9RY{W zbQ9>V0&H2}4Cc^u3WC8*1K3j;21kgN1wx*f5-1lDR;_!*%hRia-y6 zLFr(lF+RcLaHSO!AzOw#2zwO`0hBwT5b|7DUX9}+?YJFq+pIMZI!$1PU9c8d_mBZM z5kgI>iow8s6y%F*PS}zeRML8Z(o9||gNo^xNHLRSm&Z2~D-}pXkPxsqP`5|OjUJOW z1<80fHq2=O)<*!2SUp@H!5#MtF7k z9&YY*_=bRu0|JgLY+LD(V254I!Bo`Pir5+Cr$ka6Y=WbNZR``O#6H0VALbJ9 z_`{VjutdLPLkn4}2;BHi5+!jVO)zMLs}wSO0DPD{8pnS|mlOt;Ni(65$V*F`Oi753 zi+~nPc0P0j8H4ceWp4s)=N^H3khc?0IZ9#zvvk#=oN?#~6=AxPx&0 z3o%Aa>ws?q1qICxCDf6bAA?3E0Shf3Lt0;`1i8T+`$8dRjEf{`&n5DepmiAz&0GS& zBoXg~HAe=y@t=k`?24uZT?kA>KIjW3Cco&Uo$xlCJO>k)MDllOHEAsQ2VgeP9jSzB z#FCKT)t$>1vN4<|&S0?BfQQEDp_aD9RFxd#!Sb<6u+**@mrpoM$lEUILc)ENY~Vfv zUIS}Ic#63&Ulo=fhtNz=RvjYm5j53ASb}&o2@eeRu%;Ez!Hxjd_=sou2M%p!zSG+*s#Z1m0nt%=aodq68M_rh z0w7C-yG}8qL}~;(Iq`h|Rt?pEy9zK!%pR7ePC-ng5PJPuNKp#A`zqJN98lh~LH zYbUkzWO2A+lvNF9wr<0xU|}X?t4zS71gGhkk6#j|w&mdOqO{pd!Q;;BFLX zzeANusR_6Dukn=YZwXmT&^3--KSF^5e>S;$a$cV zkOrH5N6J4yN+Das5{vkMzy)MlX}R(FTsDi>)ehLh_0zBeE50YDl+a-pG<+m@K_DgyJr zi-Y~4mD$1KJlP_5@6Hy79%?xvkB}n+k}GDWbZu7>wO4VA3G4-wT1a?dVvSh;OiyA# za2(0fg~Z7SkrkM9+JLQ;DC#Ob9f5#^$86}(lp932O;AUWEBu+EXe`3_)zKK(*({LL zJiKr0Oh=-20`BAm&u&>*PIB3a!5NUek?{5sU@4FsSX_K!Qs@%1lRAM&>E2;aBIy|# zVK;Jk9_aQ0_|+RbgC~(bHYf5iGY`Bbc1K4U$mWKF6J5cT`Hxyngq|p%K;CoHy z(Pj4??s`WngU#jBa=eelf&kENKS|Crq7;kW=~a;FjCyWhdp;T8FKg7aiC1s zWIsq7{6NcXj~eLu2nGrydnLO}Rce0=jG#qAC1`&L#iEIM9Dgx^-Oy!#3QQuhVGD7$ z0#ykj2@r4sJ}%#3C~Y>(KJO)Fq4eY^{k0f734!4b5-{LYXN5CHZYSXqnyenYsa|>sYWrXEF46>)Phkk zvPA<}TrsL}fK!T)ssy0HWlNpT@O2qqkdT-#Yy<0MOQ+gS2tawwKzFiWW^knXw>!&~ zF%keg(a{Ao3BXdN2V}Uygbs!=bp>BVyZ+D(Fzl=rgM62=!ky1WINO=H@B&DJH|g4P zkXlHvydq5tA)7XK*^DdpkI6XQwyR3ckU?&i2h@23 z`BGjfRTa>EZ0ytvlZ_ai67#@3czgjmO~n_%MDI-F!hHT6oyCwOW1E8oa*0$1>IHEL zq(S4-qD}n-33c1f#k=uvYkQ=FI^wj01a@N$J=9_|y_hsS4Z37g+WH2y=pJqe5uwW% z$vxsOB6Jy}D`JvIQa?Wam`>U!G>kS4<6Ln3j(o>|?m93Qd?4xQU-AaywAm4gLRJ98 zFl3RPu>lO>I$B9rPMgl=-+{LV-$5W%1wpcGwnKZcy&D}4g-NAv&Lm`xxBnYC1bG4f z0CV_`@ZSRA0oFooMW!MOM?D6%fO1!Bn5V}KvntzcMo9gkqZ&;Ukm(9lT&@^%nc zIbeIN0Zt1-bnpoG7X^EgyiF2+2i4Tv6slk|t*wD-hpEFt(p5u-%*5clkP8U6Sm8wy zY-U2Tf{QvqvV}@`YzY4!bcjjL?yxTjFD&Uu75Bi%cnT$s0B8vjZawKm;F(y_ChUS8 zw43ldX8I74e*t%>&|Z*S4@Oriz&;b}2fZ=%Aq2R9mINJM5$(WZ15pasm%lk@lRcA_ zWo_tg7KyX{b;kDJL1zE)V&(slI^|R)R1b!9u^%f{t}iJEW1vUV*EiNPFg9ve4o2yF zvGRZF(?0(Pz!cqYI|j`1G2Y0ill&j((xbiV)KKMZ~Q24i%c|3_bc>{$J_^`G<&^}px;`6oU)-{M0B(s!D< zjl^~!oeWFVT{D|G)NeBwar2*!helDqQNLgj7zvOfg}zbOTs}O2;Bwropz) z7XrIDLNn}AB3LsztS3E#cM&0) zhlk{M$uDhsGNJJ}-1ZNdkYAAh(xHuQ-xoeAygxxD4~Tw9mPd*T>(PeLrejC6^iBt|lX#;gfjGov ziZ&xk{`i|hjQlbm2oo>?U!fQ1!Vlg(LGp`f18{|bx@OS+)W&oK21KAfouU~aFkr&Rq<& z+MSXOt^+Z#OK;Ns)53N{!WgyN(-z(Xpe#(Le><6mO-3Tcqz3`tT8MSEdVtyZ`u~T$ z=KzeWIM&oy7YKx2lCVA-`_7zBcWO40Wss$lEv$x$3${6)?w+KFule4cWnm0~gb*OK zkU|MPv=AV`2SP$g2m}Za2n0yzCG-|ThYL+1c6I*_qiE zoZT%hOJr1-dA@Neqlskbe0Hm%xF`zWadS*&gfzn%7Xq(xVT}_?>56cXh%&El1UMJf zxn^19XdhP5d}CkfOx4*ecLLIk?|jL#XXzL-MPJpju4o!ubIL^`X9LqQOygXA*`3SudN!J8nkl9TQ1ET9)6=@|QA9=IfP0>u9^ zL5c7~yXs+iG_A385hBAvmNsE&GRk=3;(@bU1SL}*o8@CaVaFtkOj!qx4MSd&hL3aR zIioudO^q3oKYz@z^n4{bq}6F@k`Mc&Squ$=DoS^}l!eU^AJ#~an*Qs%0R2mfY3tyN zbst1l3_D$))+;d6n=mcc7^MHCnngzE3!{ycUL;Kzpow}nrTRTc_r2LX%!`svVT?;k z4hB=?prhY1K+Mf7(Ai>c(V({pfXgt?jXz1DA>4jWF%DWK1WLSs(=mvU z3$rYfB+r>%zma$3V1NdHohiWhh+>*Ao&+>a8sVw7m={-EfeWz{<9@PlWI4V%EW$jY zVP4r1umvMVV#`Hd%mr)ekQbG}%;ZH=Gm=+Iw|Fp)u|{4g?d%nOrKn4@fS_aszt@bJ z&IDxyq;GCZrqVN-$KL)AqMjAc0JL!X&l-PKP09XqBAzVcUo=DTQH=k*%IebiPsEdB z{7KOMv9?k8_}A7}m*)S3Jo$`2I0}uWjl#!&UUgMz{!hr0@Aw<8^eB)T3LgK;$|_%J z{!hp=y76aO^K7H=@vo}&mHdAuG=Ny0|>X+V(T5EITG9=W3IDEL^Mxuml^Cr^jkVpuwm^_RO32p9;T*1shLj=4gZtY;` zG_xq9-b)G#Im4laM*x+ZCT4;Wo{gF=RYVnPKrZdwjk_@@rzo|xB;(OORZc=EI#;E; z-m2@?`^Mhg_fBPy&vZ zOqIi0=2FC&STR>Cf{}p-)e8YMBWmkl472_wNu`Ds43pxq5S{n*gG+1#jty}mLMx`D zXs}Hp7zGJ zHb}Iur8&^ligOr>GWTG~1rGgZ;i*B#oxG=f*(JP@1-cq6SX>g;R_GH92}=GDH0iWOhOGvsz5ASva4J}RNle| z$!#l6*ohyySizCX!Z_aVuRI=dt3O+gXzc_8|HXx%o|F0>X|4q!3$M}=WXvY!> zE=T+~f0eJwr2qH%{r-~ve5O(gpGIbT4)3GMIyB z^6uf})UU+CO%W1CiG#_Yw6}G)^Xsv*KQ~fxAhzD+9xt!haUV;&z6i)2?~rz1?O1eL zaXjQL;IhK*KTt@VdvenNx!aY8xEFCjqo2u7*lOO%IXdgxOaI1#d5sG%%{RjR?hKVm~-p@Ltf%-6?@&?3q@Rw%QoL zrOFi^l)_`|i$_2~MxV~&HK7we%-1<{bn>U~x#xR+E@2{C^JBCH1pTvAmPhQq?4kP# zne5hxs~e4Rdd*WW?{K}F1Qs*_!33!sF_nV}8YRAb#E36>$iL0Ddg)Y@&*H@*^YJyz zk_S|Ce#EwN1cAyZQ{q8%Y= z!cKemO~ZU|W*%Qf?e5VASWS6l9^6k&jW)0!RGAIRq^#D9wGt2tiGru5AX0#K3g&WC zXa&}7iUkDEgv7<8ko6_PWF;fVYKC0+J7YEV*-34*vGb-5t!88|yhjtpVC(|YeF^Z0 zyVZ!h)nwq-9%LJEZ%im1n`lgg?jnlDqF6kRG3S_6OfAogQ+@6@a~hWe(S-3hL5R&K z)?6l4x+|%Q_fgnHq0^(?=ohC5S3^Kp(;yYE`L515)y#3`Hs2JZxEPc6q@b{MX6aI2 z1#ARPjHb;M#BK_V$k-#v!6R}`^4$>Hiy(+c*MSTkFp4)WYz@H_Gu7gOW|s@w4=hHJ5oD4H3pN z3zycpCg5ZY0T6SI9uJXL;OLE76eU4q$4L||1s*HHlg0k4U0N#-C=q$gZDhCq^7*T) zt1R|^^Gg2T6Y|U?7F&*knwK`9S+0W`mo)~LbhZcFj+yl63Wb%V1F{5rx|SSoYr&lY<>M?Du3SwIK;;#4NmvG` zSg*_N1|0X`pAE?CVAXUqwg(!RL6O7Z0BD1hwbwbyl2KHi95ABFQ5Ic`$J(4o18OQU zXpwf-U60UeM_D+ITx?jI-1vt+3~miN(giny8$DyPqYQF)!T%=$ zt8q3`dkD@jcMI1ef>XB93Y ziv`FSXiSe*VNoGuJe%iM(d@d0@@HYH(EsW6dN{-oP?ZAjWFzBrs1VdBTBy$!x%~9M6b7k{+}(z z&Wda$F&g!fTJSmBGL$nJ3t-v6Hg8z&PY-JO;`W(99Ef5Z=gJqB@j@LUB7~lGV1VW= z4uXZz>PjlHlnQpE1L+8&l9gypOaRDE2gMwERvBiOpqrxz!QcSlmo1P(Lva+9RTWD@ ze1N#D2Xe?pW6~yqGIKFP2Sah<9W`sC_GX_M%xU$^+FO>Isp|@n=d}9uH2Z>dXe(%^ z$7hOnCFO*aBmvwQdPc_qiw&D$pc52G;C~4@7FLC!r=lO>f_#|q%ccpyToXeV@lk@k z04ya1FvbbN92-*sa~zihdt|=@`znS&ksoe?LTbv2T12=SB$6K_LE}s`S$oAFIeUXI z{P!l(eAxnRk3(L|77!F-;LYG*#*S-(crvOSQ}Lp-9#=OatF#(i5Z95ClQESHHce7u zp-4I`GepdtOLibhI?v#Hg}Kav3f4S@t-=7@0;(GvcdA+}$K)iqSpr$%9YNuZaZ3_jsLW|3B9|d81P9@egwqD_mJTg% z?Wn30G7Kv*H6B`9Ns8eNN=!x_ox!HI)<8#Z5Tf9bKaQE00V@Lnq)yt+A*Yyzrxv6L z2~v6k0TdDk&5`WWLf~9AIN`uSa0wg_Cfgr@O zv?)N-?Mk%=np^wYSvjGUn4Sr3cCG2@cBOa$bEh&EfY6k71xUJGfsVj(y^K(Rr)O#e zB3#-vLelNg-EIq6)&eAkrcD8wZdWP*EYqeLl5RUM1KN}^&dWfrEx!8N+U&AJy3TLO zvJhk*5kWU{xz@*(usi5B<u01BaWEFBHSBWk^=bd1E@(*qT%=5m6qB{SQrw`rBcI8#BL+d>Vc6Ol9x*hpWQnu~_cfn;bJblOk}TsttxDhitlC@KO410JX_>K`$M zE}{Y#2yiU8KLZ~~cR*4itP%t8#Pvc=q0kVP#^>V3j0sUUi=YT)AoyWSiMXK0Wjuj4 z3X$&(z}RQO^)q)d>$fN`g4+*CDM;dx6q(^+B_1dZ)lEZkXf25dN#iOA1n(74z~>p7 zi+8!=q%aO4kh`9hMrd*A32vOZEf|6((9ZkBpPC}RG>$+JCQM%|zJ#ps6EG$uuqTcFf%WLQKOV;dA()TY@6Q(7+ki{MF1$b}|Be9wR) zT%!>~X3Odf*hwc%$f4!z5tB}ecK`J^6@%Q!L2AX7 ziCtJs%$!*mvlzr%VH}uVCcq-<4q_G_W6OzQ*a>r_rsMb%DT3KWI*Q;=kf4I!r43>I zaX0XCDhB$8j+K!p;kMf*7Q)=JH>v~WAsZC#i&Ae>lQF`-dGBLQ2HCgHrXG3)fF--( zvH+VMiCtA>gJCTKy9jG4Nd9$5>?{=wY&)xM6RhO3n zdK7xAJa4E3)W8|5AhGMsxl>BizJw)r)|@N^z9~B<=V-#V3<&8q)D!46QlOl&Elp$I z8%8e@Avv|k^}@$=jA>yY$0m{gG8a{tiV(k=M7m}-z*B!1h*rcBSVU_R$Dz)lSf+@8 zG-zf!2F6V0B<%#*O`y57W(*XW@6Z6Wx~j&vhDpK-{#Uz^p6(Hd?-u0%s*5mLDr9o$ zCMFM4hYa9bMB*hK0m0PvGvy-inMS`BFGqpeH8~nWUK6fj6s-sgq~NSl%KdA+EN(T; zmz0L_7%C)Fd6fq#Iru2p4i(4^kUD?{v93Vm~FTwq-a+WZzDN>Aj=D>nwTtqCg1Gyas6Ck}}EVtAkNEl?v z6ZSFG$625@{5c&{l|fK#k_B}x9RyV`*SVYkX{1}6;$p;VUUm(%#kK)-%ND1Xr}5jH z0PlQm`{~%R#!Zc}RMsGE5gNcVolOA`s&uoZQrMKl6De(E;I~faRn)%~NC_&#UqV9| zU69Fx=EUZ>xu`@d1)2g)I=AS+TSx0HPNX~9Y%kNNp^r?%OtY}8Ob~Xc6tYTLLj)1% zH2zJ%w9-6~{C`vhEBZmxIdhLxwB0DD-&`fdC<4Cw_)oAln2N zVyWOtBE-SjM;V2u5i=1f5*g9+(Xpfu6h63&nzdntHppy>Cy2-olc_77Q1t<$H*moL z4~ofT$4}bcBuqmBfnKpT>8M6TziEJ!+(e~hf*Orh^z8?pbo!P;L#Jt5?@Yznb%#tn zLnmAA0deGuGkwP))S!1~CQIX_LOUji46t_**8|Y~#1otslTLaeV>iQ<4MQgTpUu3D zGh*FtPp3~|vRyOs=YD#<5~3#MZk7fX#D#9{?y=iH-^B4oiQtBM^;{KDSWZ{FDw?Oi4nVn%vu9T2W4RMgm< z6tNskp%EEEoq)$Up-Nz<5IKSSWrGB(61fIyk&KE=B}Lk^k!~!4F6kp%H?s)29;7Nq z$U(RYW`ORlK|u@%ZJ<}H%yqk5beVMnP3}iB)>DdU6_yinZph@SaGZD%lNH9pRt(gS z1tCgGK&i9|(;Aa;Z6U3(u^`eOIqGJ;vjf4c3D7wfB!GhmZCtajp$!)Zd7^IQ3L2Ae z|1tZH4`{O;XL7qWis{xbcjQ;>=nIN!C+`UX18kU#FpO;;UFO5mmIsMb!H#+}!eZGQ z8DXKLSTHPnj%A!l^x7#+qYrlo*#Uubkn4r40BGVStplJSndr?tZpx8B<3h`e5NeDm z6M%GciDw+#;>v>X$LY02BnB?P&*q-icWV*_Lo5Bl4kyLqqr4XG01ftt zr!L%5MsBy3*;$ar7bVj)SF|}z^V0h*)}`g-h=&H)7*^j4sjo>1I{J@ljF7RFxeFt^#E!Lw%sJYV-o*xX?1XlVW;7; z6bTYc7{|q!W(o4+0D?CO4>nyfD|`q18mMB+xRUQ=7L^o6jz6w9;P&)fn?JFVSLpibts<3t2|z<;5zC9v^~B{ z?+xbU48~a84ovYF9tM*RUO0}kfoR9NK({uyoneWlOQwE0tTQX&;XFx2UayBS%b)ZBK*R2n7>96y zJqc4Ym6T$tWI1Qm7ZqA$wEVze-eRF`)_tErNMwdC1wqNJW5x)lW@M8Wq;RRd6Krk} z?Vl5AZeiMum)aRNYKI7EsI#M@v!%tZ3x?RJqwWXSQKsVJvc$EN7Be9e^JJ+OiL~ape9Fi>59dNIzPjKOtLP|l}p&Q zidESJUZWi2tLI7748$O#ilaf62xdxUBc?JLN31IM>4WX~QB+g4DCKT6Mg);<;7LeH zDO!g|Pi8hi#AZR3LPMef7Re>2$n_YK66S@WLRz2Q9Wfp>6jvFM#FG}8225mF6ZTU| z7gmJ(QY_MnCaj1h^qWacs(z;FC#r8#8U5xGn=;k*Wk?6@^4FO2LyrLqLT;P{S!>zU z)M*}w!f0~DPxOc_i4>O2HhP3ad-19Zik}!?Ml3rMjb=3w1v0xhq+IG3%_Xd>U|31Q z{Xk}`Ew&=^Mq`6@s54FU2vIp2$3mG?JE)l<2#PGfi}EPIr#&gb(V}oM3!u`&b~Qe? zo62xxOvrj0jH-jH{62EnT82j@7D|jDm-fknEQ_<-gZAH_tjm_21w}pG?-BISi2HifPf3KqzWKIj~b^KFe7B zpg4w5b|@ZJS3$&n{YLtYPSPKzM<2~i9`P%s7XF>S;T&aU8!7JLFT8K6w}n8bwwwUy zY7PSgY}3j!uvZh1L_+h3LaiYK7yWn^{%*)*kkNQfL!wQ;p=hSAlf72%Zu3JQ12BS~ zmgNyrY;qE%mLVreG2|o%-z*RLZTQL*q3k<*%iLow0a3~{3qh7y?6IRocdly8vXsY$ zo^n?rXdgYMQPEUASn%XVzg80w*+3rQSA8m0O$(i>V>0*6AcFEtIV4a!7Meu_ zHF7myR^~-dL`)nEk|^I&8Eys@6^nW#Gn8f4=wQi?DB=myvf8=_?Tp>gM!bxh=NYY? z%`Z%?)EUp|u^EXBjH}Fsz3S@@00n{11Pu2!E@~rDqWIl!Y{AgSBuFj3+DsPb5e4H# ziqQ3(4i0l`b7sj&RZBgAZk(69!3o)MbNWF^d6jwjvHE{z^#6^Al=;PR|IOk5TT@-> zGsl0bnO9wk|2H9z(f_wIDTOfc*f;?963^VlX+_1Gw1|YsUyjF!NAO~Z6*V*}k6=n; z)FF7@ml-q$LZQ|>qCGEa}9WIt%u1wgcosUwv`iuq7$En!gLH&1{-z2!P<-Lt)cOH2nCsj^$LZl zA0Sw}1c~y>ejw8Ql>(&jy`F(=besT)Q}PBKS#v>L=6RV_4Y#$!wN?wYLUKfo)thrt z3o%we1S2YKsOOl&zm;e@O5`+>RW)P<19T3BqLSAGIC`7uTmfL|w4rvbYzhfOA)*O^ z9!J1k!8B~0Orv+EM5FhoLMTTv?BRWsxo0v5vcP_h@~}4$)q%5Lao7*)Il~Q zpfG_;%}jc7s;30#(irm^Kol4(Kynt|*n_3cUMyG28xkIHphO#4Q7moaw0cCWgZa6j z&>l3xd@d)y-z2O}Mb$Iq;X|3ZrYY@EnHiO%v?R&LxiVu-Q_Isb3+@WG(9Of^(zcSk zT`kHPd#bFt+9i?o#B!HA0od-|H10zEx-jxwuvCS$Dn!%pY> z@j9@!-lmq|^48uZ!PbtJPD6cyWs4DSJ?RkcH#sIIE7S~Xm2T5OMs+sF%)H|CM_7EEhT0758^<1P1oa!dT5nMuj0s$`F^&?w1Gv;E|YM(>I z*JH{nLo}3mp>(mv#0gc z1J@j6(h#ZDC5lEM8F{FHM&x|L6b$xMWZMyslrLl_xttQCaOG5p)JDHi2ko+`93{tm zTDk|(zvhe#Xwo-1N-QjIKuIY!2-;i-3F2q2XvB64m?fNDGI`UQ+b85M_gmyw7$n^J z*_y)_b<1?q-FX*S1;D{M{->Vp-RPdp;V7fBCm~UumGBo*6P33`2GP^o-pgDtCYnW)WJj47c{k7ry-Y+3MGMxxyCY3eY6Y#4VDAqISs`!L#VI8dVTsbj5$beuxUwm zogty8*OaiVsmGYm*wSQ5SVj^G@36JYcvp@)Vd-j5>mdPJAj@#D>5FHcmzbA}90S)2 zmzWEdK|Ck3CN#oMcle7&y5g#dcp02@ujMww#1=(`u^-X^`;8&k&rkDnJYzXW8<)8i zxU2~opmd<)UrENFVvN7B^_QSE(9+n~)@y?i1CBml$F()wCE z>X;Z-Y*fwGM|T$W+i7EHzY zNg_QT^5^eAE1Js_z->+{vsBLyRV(dhg&ImKiBvpEmpy8hK{U74L7|h2j)gw;F-~z- z>QY9=M&tHAn^74@N>hPguw3kBFXsw9?n}gU)WS1wIfvhTqwjf(Sx+Sy9cS?+I za*4up-!PiFZ`jGW3MBC;3^qca!92EECL9q24JJr1xy3A{5SLAZkfKg0DFxscWHxax znsFUuJTD7ZWPH<>RTOa%1>i+8&B~s#&CwPe3v?Z_PQ`2#nm2W(V{2paVS1x3+kI5b zr2#=)PC`nIhFtDC)JHO-UYxfMNSPd%z^~OYrw0bntEA-UDw0fNgLr5jWGj55U)saw_4GZDCm?(V+>Z}?XQ`C)|lf)uA zWSTX0j+nxNo{^@DIFD?0&D>AfD*a_&{z3kZ#QVW{DdXaA6%j@)4vd2YFqT!nE#8mC z_%?c`#{3J&X{34QhGj0Ay$u$bIPnMNCQ;@ z@T|-Y2u4SW5+2c@4-@&M9fh!dbjwmWdk?H#Fi7&VX+yfEj1}TC0@8uyc^E{3AmQVs zKrQFOh4>c_YU=Fh=|$Qrt^oe{-EO26!qNu3LG6AwkZMy;u(iFbt+lDuPU5hQa3?}Z zd&Dx6#Yg{2Q#T>a-NbfUIT_dAGe&7l38F=~>i`Np5w5n>Ci%^-z} z5~rVQ5?TViO-q6uffc^qlVJfoaF%u|@qagmv62pU$iZk1ull?9jX{P1UvdSq~u znoNO|7)=mz zFi^uLZC}f0udvmHB+$fjtMNiZHEB4aYnhuaUQ3Am3*AR*(n}Uqz5&~G)yP#5TP|(R z3<=^xNotA1#+8}Z0TEmL-0}_RW01LXN!-k8LAUHHFR%Yn#I4F6g$PLy*dkl}sse)) z2;RR=yLOQwXj?W*V(y3^Pp&=(V|L znxJM+cB z>J9Ov7SBV765NyZ%-m+gVwo1H;zZjrYvv}c)#RAsZ;7RKafN8p9HN(cW*rPDR4}&j zf5hpJ5{~N3Q>3)U_R;|&x;7>YYl++mgGjnW={6W27%(dssWMYjXR%uwGRu@=VS#>^ zH8u6}S*U}MTSV2fNli9&$I(S=OZoi4=MDAOl# z-l8dN)UPA90vp2+I;#WU{KYsohZqZTNRdSfKVWBQ0^Ab#sY zNqGaYc@Wl0!T7-;nyqnBg|C0Q`H8?ibR!6=*%yivLkJ_^!#E(9HQV~;dWZKK!E_%{2&xtneNtx1z0BEw~WkCU@~@=V3?_}tpqy@Gi)X@+JG5ZpOw4ySh$;J z;+2iR@j+)|4itq)ZpN-hL*+XtYhYDz z$>``^7VKHs(c8Gf){fBxrg;!G58Hg!2;BiB8ycxePNwAn@>9EH1Hx?JRM>4n{N$6A zWU)bkA(B`mbbd0SpC=jj7J|z*l#5aq7wQqw-rm|9#5*;1_^DSVQy6h4GQjRVL$L!hW!(D!AOc$O^o0-fy z`|L-+#&O$}edzf4GK=ZYWO~Cnvt3kMD${ca4KaoV>jVAR%cv}&^^*k`ziFXkp=SjV zzLo9;!Z%bc%m7Cj8(nP@U4)F%eOtcron8En>w{a$E{0g-W=@5#a7 za98YSKMPrG8FSJqhCP|3QLmTueiDVhwdsQf$avxoHnsiopc3Oj5HsSXpkTY~!jn08 zt1Hj(z*j8b^8VN(l@=I~@Z{$uR5FTGDZfb!7BdA%Kq+;-CtJ^dwrSg8M1j zADZV@i02btIg3s!i?YnBPS>_awxN^_8s<#%&#DF&qcn5HvmuepHbJeW&nrFAs?YM9 z0UoVBYpnVvgP0+NB`M3Td_pGG6KzJ^P8dQAC7If!C=kX2` zvWx!RC5Mx7)GhTZvG{t0oOX7{`{iURj#}kp8t*=os2Um?@t|f!9*m<7c}VK_KozFA z;iHNYPAHK?39qV!DB-mgzWEiEl@KMoy0Wfj|A~tdo>HPbNcaE`*6j)|Z|$h6bPL&r zl~@>zZH@J0fQuFW-+}D2{vKM zdHZ^3@F^FW9H`St{^lE(TrZ&u1sS7~3z_qaNp2TIS=_AQFS!0CxDW7U$R=7hY%7G# zscs!nKtOU^C^7{NA5Fw?=mTH{`he%6O&_$_+kz%o?2D$+9bISQV~I&U+JMwt8rH8n z&l-(78I?%uLQrbJ8=SBL-iZ05r3-d;F~-QvIMXoI2SubK$St;&r5DUEA zD7@BB{)o`PZ;Pp6v{v+$i3pt$m80}+utBA$?VhX=p&`p?+?O+>kJed?xX?J;=tD!} zZ)Ptf*c>O*vO!a8b_a*U4clAnGO38+o1K=cMN%Rv8dg$6#z556>=y7xEC6DObP9{L z^y<+R2^vK#kML^17;#!9fn#BFo+ON&=A~cjvg9&GJj39a91oaF0Y+(0dt+N$Yez5Q z;iysct`;!K0ogx8&pJ=m&J0bS&;_2<&cZwhvEZw!9$UN z>lFIz0oXmraDO;FOk0mXx^V%92e*E;H;bzAe7{rvpP0MY!Qyy;KwH95b~=->^5-?Q-%P`qSGhUHWAwcOt27heO+3?+)1YE zEhS~(SQ0VfCN~=y`Mz%UK(`91IFxhQlcsi~B=gJ_(+K4-pVnYs$I_0@y^ZZ%b~TwQfl1Q6tg%h3BU|yd&W^<#P6J6< zoOLZl7qu=1w_vfMj+Mp~yhRFhw>H_r9cXH8H^9l}w~)dI$F6)!TW6!#RCmBoS#xLK zB8XaU*CowM*``Y!jomAaLug53C}ZiiE%YlfDLLY-FVo`iVSt~wbjfg{w>96sP@YB~hh z5DcUv5f6&RW93K4$++%_QEwBbka>~V_{fR7Aih44&BYM)|IrYNKlEvAL*e|v;6F#B zd6Q&FpiU6*%A6hqq%eHz=*iy;LiZjwXD{~?zZf7t$io?^5S*S7UrM*@3Z~+^g;qHi zJ&1b+$yM03)~#a1RfTO9z5KpMYWz%FU*%sTEU)ndGeHB`@taEX5-@2P{fG%y9Is(n zicoookg*gB#gk!nVKg`6hpd^HJM5JE$WGZjG3TV`)R9X#%lI8$m@2^{qD+uV2IDE7 z#08F!zP`hWI-?_4)nTn*EDEpHxHb~8dp53v`qL`|?AmQtGUPS{HX?Es#?TOT0wHzk zWpD-B`i|#1UEv*KJSr}`l?9YZMP<-?fZz>CdQgeh=4ba#MONKR{q9Ib0R#Y~FG&cfVAJ{Ka zR1x{PPQx3lQf1$3>41k59DJ9?)0io*CAMu$dOBmrp2MJNiW4x@5d0rZE4(y_HXNF0;e z0qBf+AlfE}X<>sIa!?wJ&~^rUJ9``3c)>FA&0L5A%{}Cjn2loQ4N+fw5Z=??J~6^Lpd3n?%spNx#UP{2p}Am2^J`bwp%b;_GJ?tdOV_s5=NIL znt(Y13lqQu$qX?EVybwiLJNz;h|DSgMzSRKs7o*9W;u;m7ea}0mTcxNCi&XWx4T*l zQGIF3F?!kKf*M86ddFx2gvN;bJGG_H5GIu8BcU^`IVEGxyn_+xQ5>1{t%r`(g>KG1 zbSBT;xy`{Y;TwTaLKbOcI%G~ zOH^3Y2bEq!r}D5~JQO3vnh>=R?1@uk9p&gWW))(K8nfoRerY_3-b~XkH^n0Yzav{N zzSm-hK zy?BtQd^TcPyjTm1>qcdf3~}9*#Heq&m^RATZ(5yv*U2`V8KSgl z+4bc(569N1w3gC~nu1#^GFe?wY?xRi<%|4WI-@TmAx~Q~nVf+@&AieSfr?RH0roQ( zX1`|wjAtfyV9?1N0dq8QOY;!)M7Z?zO;H&F7`nj*Ge2P)6AZ7F7qS)QZSsw#^6Y{s z3vZ+{s|35yawR5a^Mk-W8hXti1%?r9VcG;ULc#jxRPKZr6fMRi8OJR}a za!lee#g)@E2;9~dPzpLc4Zrn*Jt^n0Hj9>x?4}JlaZNOC-=JnJ^c1jxBg4)HT&SCc zDdYNXekGcYd3s>g(c5Fwj3CfuRO8z2KK0L*=!QbrEn{>-7I=n&t;O8Rgn@AaEi6;T zxonQn&B)sTWJfyMP12iS(dHUfer$$A_DMd5AcLOjI{) zgVbDD&4pGQt(omPvj#+d!=#1e(ql`hh(!I7j8THd7>p}7!!s}+HpgONh(u&rX4nxn z38z<(^2o4IG0m;bx|3&|EnA!v6liN4u+rVx*0!jzY3cakr3aMxfD<9s76}VjoTyg? z;-o%TOe_s=7;Y9L3Zm}0%!nhA@*4YkJ1Je!fB>*QbrKsuH_fDd4|aAi=~jpbIBspV zwD87?KdQFj(=D3QQHD^@;2WUrxeZ$$f*ehV$%{U+?4re3P&8~%%0jZ-+r~V{Oyie% z(|qaPqM&1(1vv@?X4063MTHVc{(fwyZk zskELx7)>l`F1R)mx@B}a&}=Tp7Q9Y$TN+~|JN>9Klusx-eq3HqEIVWhW+!q3E8izn z52m*4dP?mkc^gMU+pP>@ODLhkA;N!V=iJ3wY&C5|!e}5cu!sf)s`F}E3Jr2ToOaMQ z@u8+1NZ%X@vAfvrh_WJ{K@Sk7eb&C|p}`83jH2-~M#YB;<>0 zKN0lFFtK(l$HR8IodV*DW!1-J_X3RhdzoErmDws)RSn6qd*u(#RCg$Ql>P7!+wN!Hf6`G^XH1+D>qk!Ha15Q3Nj< z=a_o+dKiQu?bR%+8zaX zY#cD3*ni@>XY7t_9Wsm<=Rq3m&F~|R!S6x$z|1}YhG5%K<9duY|#uNpt zNlIcCkN;6soYy7}mRODP0zu>%a?4aIci1g+0UmlQuP{+# z43jmQXjnpV;fjEIp}3DoA5kfmmLgnD4JEr46XiF4<|YP%EYQqUjg7@@6Zsyi(AZeU zSY_c=Ag^nhIR6OaWv%F|622-EBEMR}t40&KDkJ6!cC4{Onr;AFc*H7mxGJ)1qz7V{ z|IJjWSs(dLnNc!6Y*8T!hiFC?qp_;FNn(E;V=RsSROofmc&puYFc>VV#HH3nvhr;D zjh)=bl5ODFQLv3gIjM|+W2sB*Z*iSgEmUH5sxTmfJE(FFUZ&xOe-YLNW`9IKFKoa) zjL~ajT|ymhqYj;Uqtdk`j-qkFdQdb(;yzcVHpwYwHt$n@3-~CUPKiHsCU;Xe^H~N- zm=dDOZVQ%^N=S-m7Yb7^$GrXh%8Vzy2Ew4WNm=|OH`#+NdeSTPhzQXO@)2 z8EqHZPr-H5>ep%G)`@btb!t>GVcwjMJi2V>nJIK-CO7P3<3>AWzU_w@P!ZEyThkHk zhG=tmzpRd(lV@p}aG%YtgG0E^q=AXmPfn-90&nYqm4!sh0)=i2Pkb#xFpsk+EHs4R z4MGXwrS!Z8eRdJJm`{+BJN9;AnEA>-FcN`OV> zD!gW)93Mf<|7If1!i=1Kh2a1-em(*n?g2`VN~xO(V4z0eOgIHGke?hf<> zd;7ZD@IReP*#boh@P(3Og%e`RQ7M|3(T6TDP-g1mB(CxNXac#YA%e3%0cD-;h6W!f zBTQe{OG)js7K|iD%(N6d8Ip7q@S8XYs2o*O&a9!C;b32Hr4RRW->}!sluH_XHX(baLxl)l{DENUR2IB86EwJKZc93o>!yvLt)1_t znZj)aCZ*o!Tv?zKWsYT)4i8^h&C)@6rRGqW7v`w<*jO-U@~s% z3MIWth{U7e zuK;pk0fME>K7E-)jn)CdHyrPr=A`f}R`6ht$l%l|L2M!rSg7s?4Wwhtl#9C&5@#dH zsI$^NQJH+8t>hM}BxqtN&O(smJ9r8py zcm;O_jfof?n4kpjT2IuC^SMoN1FY;PbL0cTEW}1U6-Jp&1{ztT&FvAjpho7NNh-<+ zT*i0?f>BH1!12JHM*f)zI8FIs^rN$biaDs*KxA}gVG9ZqL6A#?P~Wv@J=o`#?4nEH zXsy^YdX3wQl=*B=isJiCb}-qjzw>qQE;D&|W7N~Nmo4UQy=b9+-e&cP2nZcWoI+cv zw=*o~Yh!`V-$ud^`7betB4;Zu({fH_04C=Ng0`@1IjLR0ldHqb73-In7g+Bi+=C9N z7TMOzt>{KmHFpVe8g+PdZ!TGVJqq$+pQIY{F?py@h?_PRmz9`;S&?zP-1P-+n7Jb= z&X>tM8V1?G29*JmYb)`C5>O%T(PMFl))jMR zt+D;|(CXr31DR*fM#dd8+4eOw(CsqtfX0qyZNE(Q#0)DGV{+Ii=jc9~5(pu9#zw=v z`u>^?a=qY%%ux0b7We|w&vvlJ@N@fDo&WaMy4kg>EYm156 zExSN^=$*;sa*ST6c64Q04vfr0IHw0~2~$iM89lIUd)DID-2<~RA6tPhm-FeEeNQvt z!m!dz5^VIyDdZG<_nat^gqu@RBYNB`;iQ-B@#etYF>^fdHHI|I*rSpb7?3b%yaX6` zrI-wv3-5(Hx!NH=yBn*`2oSztH)f!q?~8@w#NBFkZk(r{{bXN3zl{-vKLB3=QIFhb zC#(u&(CN9L=#)w3ZtoBlUzkNU257w!W^wa|r4fUNow+n|)P!4v29@>XW&;BwK?x~| zw>re^TLSqAPW>>2CL{%?s1UUTlU|s*aUu|chKH1ttR^Hlr&K`d;u6UKE|Fq};(E1i z(tM@Xd^{%e61oeL4LF!8B}Ho&`a`?p5xo9%AHSiv%H~=;X_3sbyOW0Ubq*CoF8!zl zzuLH*!h|4-N@&MoA%|&^fT0KW1A@RPf(r!s5whs~IHy54NOm)JMr1wKt#H3sz#!9v z@^NG}`LX8b$ZGOqH5M8qBVt#iCSws8JKG|)S`o4Dm{P<2ZE@h;v^h)=qz*%DLOA#k zacQL7y#^NMu=fs)kmUKdVDuL_e?^ekTL+za_g|7v; zSlU6L6I)IIbcKomf{Y%QB9OLzmwJXQ-j{l&QTbp((M(;p^Tf32w&0Jcf3-SS3Mn=@ zML$g;#gH?TrzcZCvoGu|b6@j!{%wf8uRW5xoC$`v3W>YpTrtf7QO~ zlKQy0Q7$70JzxqN_!TVKg1VwrlI7f`tQkx9tZ<)KPU1;o9IGixA|_ z*Ek8gD68hE?E|d3TxP+9wGl-utzW+oi?J)MBGOUHw>)Sz%}vzP6v5;?o@glan?>{z zTJSRd&E$_}Nr$$RQpBQMwaKb0j2TdR7T$-XEJx+2%kmwn2$7paxt5=QVPjOuuRyn4 z6)R-2_;^f&_n-!ZzO2k8cowj(U9+KS+vfsE;#klibSk?D1jZdI;m&I&Z1}YMLcrvN zHLRxOgbQebPNUhl1zm5?msg{wp?04=H~47KsHnNKBVcJ)qe0C&*HBug!S2rG`4rCN z!N};h5HCi96QjW$(AJ5O!?tmh?u)2%5HK~BEWp;Tq!^#Y|^Yq%vi5}_>Xhf0eN>6H{?ZG+y0t+Y@e@3@S5p`p6ptKTY zk)0@Qkp?v2u(+6-IzL$)D2;5>VU@e;3z8$oUyR7dr?QwXm08zv?TmHu-Z&{5pcdx* zS-9`#Xk9?x5#!&*Z3`B_OVI27if+?h=AD#^#qM zW@+5nERdN}a3*pD;m+c(k?$pcWo1@?vH+ts%|?nZIT@K}@!UN${z~|e60_q&+R>H3 zinO4mDX^4cxdj_E2(JU$$B~R;>_qwpa35rS#CMl1LoaLI#N#!NRBW&;D9Ca@#-p9F@tjK<&?XCG9 z(R^KiM(y;HQ*z3ou_{zyHSTUN8KtK2zL;?gE;V_0)Buq%PEN;-e&mXE8^@Y2lV43f zRBBYjj_R60zTy#mh=6gbTB*;ZE7Mm~8+{9B4R)FnIOFJn@hDS*TU>CganDF;BA15&QX}&y6DZkJ<0S44f=Kj%whJ2KKrxf=h4*VnIKf$+^lmtUB==0}|mPmM$o-3B=%J(9<&`lUQXwKRB69g|(B8fstVk-F&j#8krcoCY< zZ8A8M2`f_C-gOX_BV{lKM^t3ZFq}(dBRieMjnv22aH9^N*Ju?Y361jEl+kZdr-xkA zfrVViHYKu83nRb0L77)ZH}MJUTNubTUIJ%|I#Ejq0er0q-Dgz+^M^f6w)TlTh1|gjpp+4mm9si+-CEZ<5smL zZ@H4UT%q1_`FX@;@Xn$$G=HbKY%6cxesP&j%qD?rTpp~iaM!r3xX&)HOj7SSI}2`N z@}A2tjutF=#ZBCk!~d(Q7!F{$?tiQF)mr?&YD@lK6Y@;3|CiMPtcrPnRWS#!>WV5K z^7-m2tLv&OQB+bxQc{i$O{5!G)tA5ztZHo7V!PvvM!d3LOj0K zl7o^vSjio%tEu+8EKR+fpf`S?&7C76;oP|G8Q zUlwOFSuOd5S#R6Rf=3%PehFQ}MnPC5f3Yd$FP34MFS&}9T*XSRV#RV5<3iYE@)k3} zB*Ihj3@dqt73?#WQ&510TpG2ByFQa7I;C92a&|i`hsdapx$7mrv6A1I{Y^|7#g)9q zG}E|TcE&7UF?`2#6^pgnyq(BWk`l4iuOyOiQA1V-GT6dW_c5p?4{LbNeKP6mEF>hd ztI4E;<7~dT-ejUu3%==#y@|IIPGMAjZ7$!kD$TjfunW(}t;{`v&SX`hZR++goR321fs+>$=iW0g^R24n`u62=eG@3#;Qp3n=c}#tenf(81@V_PhzlnG#Bcm>PY|x22UM0DZt+v89zoN1dE@Z2&tgG4I zcp+Q9cfOfC_P8tFd-R|}l z=vRMwU|^Ns=Uao>dqS1d;W%5rF(j~{8`9i1){cI@C&2}@JqeudrIMk<2y#IK9^@2U zN{HeOXGmbUQUh9!eG_=4!*Z{kBzyW1?+4CIKy)WhQ?x~YE|=e6Kmdy~$R{i}>5xI^p|D#p z>hLj9h&idOd zG@-^pTEIlkdOwUG$$;zd0P{c$zc;FCI?5z=nhB#Lj|pmmn8~pgE@(e|O`TmUyIU78 z>CHHLPJIz|HMwEsttyA*7cC{?8R|;L0kv6%D?`)Gfu5%B)-KpBW^TNVc>hy-B~^(g z04t!P9gy&9K9Gz@AwB@rqBbvT?Hg=5d93pP5WSGuuU*JoiGNnr`LX;z&n_NELA!u~7z92DGR~?6n9vfmEIRKs zN1-4|OoTUmqN^WgCw0gY!9vqeaFO4VLr@eUX8?53Oi`m7uSqe(S%AKnW{$Fvu`1Du zKTAbKTbHF0YKSUSV2UvTYZHqxp~v75q;cCA4949|wgsB*PR383tskrKkgWo{wH)Jv zk=W**pX2@5^Z)1wZ~{y}MQI}k|Hs0PCH|AIW?qT^Ps9^g(bd`A+e0KSQPWH);7d>a zrN@5$$3x2eqD}ui=6{V@{;R2}D$W0icrwj@pn%f!|MEW>=6|?9v{~nWZDr~FXF{Hg z^B+?{Y5srtAN%>Ah^wi=q^uT)2jrap)qb=5UsF@k|4hh}Y5sExDDi+V_hUc*skKnC zB!JxOzuEqyw$fjk{}b|Ln*WpnO0)mV{$!i~RYhU|xz~U5`A==-Jb!8aPsEdb{#TV4 zz?b~7&i{64tvsMacY{~+0oLvxB+=9Lh;yuGU#w{ z>&RIy`pu1#2IO_fIm=>%=|s*NpU;UaY42+64R$t=LgaUIYqz^XFu;sE*x7C8qJw%G zkYH^PN9^j6S-tqTRzW9j*U{76WXwDyzJ$RiyBZ;0*g2d82(#FK*309T?9wV7+m9f9qtQs*6k>hHzeQ? zw!N{bvu8!HIndSCxsv!K^fq=c4)iuS{a^r751nsv!{3&+#>G8uRF3g+AR<);JBc-q zn^%heZSHQxgAv3ZaT|`zn6Jw`Dj`Q1ZL>UN(`?2O0W&f18DLrtZ2oEF7w9>wMKV77m+xijM1(ng4r-m6#VM&Y0WC#s7V^X8mt% zZOQ(BVjh@-tsPAbp}N(0{PC<_&DcIzOu&p6zTkfx`kWO%U{=UJ7_$SHAbhg7fhd$6 zj8)+l+xnUV4Gw{IksMW(G{3eutmcbD|KaqNE)V^OI~?8+{0m$nf+|9&q9u-*RYhkd zs%WLW1-Ifx70tn>?%rTepsBAr5bWp#uG<}GYU~Z@oRfirdC~&HyjSBU!kDY+j60&l z)}jiWhX2R|bv%zefGXnYR2|`xcI;T^a&9DY%hndu(b|9iD_sqVjk&lik2u!*WDufxdHWe7QN|SL?Cz|L#Czb9r+5b$)Bieq0l{efIYp4szmjIF>++(ZRS(jMbx)oU;drPbtqQqtmgaaU4K}XSye4-Y35Rm?bKlabiJ zDtcDFPKjByH1I#^izyqBI-=rHp(PS>lEk@;g=8;oh$2T%!^4M(m=X@jPuZTaXVg;; zH$ieh30jpfBZU!>LIgw zj>^_1oTz0OL9SsEbh=-O!K$U_fGE^V+y)m?VcUW*n@d(i;vp$gf%5~|SKxh$p&>lU zEludFV}|<8m1BBI%0l%}0oz;&J#g?Hm{^o$gTgg_2P=yatpavfY*-f!^9!z~s*ERX z7}q(dq)6BtOw!=&$4XG}1btlt@sGyUcJ^RSn~-B+Jm8L*x^}4nl@sX0XeKb%HYJwc z;4pmdPeXK9RGyA;&+PCBCJZGMjKt$>(+OIzT?*kQRyZ6?J=1{jenO2qbcIp_@_Lz0 z2~M5>D7*wD6h;XNDGC0hxE~IUQq_bUQU(-ESnQ!Itz)LRnMCDn0zL_8!f2!N2>Bg~ zDB!zM9yvlQhQ|PkwOWet4YAgozGlz2HaZlK$`x^vqXK7Kf?xftKDB0_X2ARAT^gF03c>#`w&=CmM!-T-TEg5B6@tj}Di3OUSx z#S4d-(PLk|IVwfEXjWp@!&m7eiygnjIi%uWYR7K-AE>UhXb z217Xzu9Mb5ZUI2JAa(M0(1@70KphXC*WBINg@`*S-YLct;4?`x@fL*4t5)ItUlZQU z^#%+@T=ZT95QouvDGC0Dt{R`4MuU^1k`fV+;Kadb~yj;5!i^~yoP+Y=e z6xEAGNxJuNntotN8h}X2_BA9Gi8S3DPl_!^;lqL9cv5V6lLKTu#e)(+HVFyKrFd|0 zf7~b>ckp@*t<=beG}0uswoYc;kfg_rsJ5;!WrI&^A7#MiRz^d%y%@iVD$V;>p z8if&sMKudI>944)!9VLN=hs#F4B;k=18H`~M%Bo!+M1fG8aG5yAwd)ARV~QX)Ylzs z5A-hSZ0^C*R4g3@@eT`y#$16Fy@3wUwDyp@#UPK{Q6%Uw?iQsLEIIQMK3S-GGH`5*CkyIU`$B9{jw>=+bW5Y0z5G(WHIEQZqzqWIN$t z`$`NkQ`A$3)}89un%m$_*DlIdS)#rX%@qzy~H`gjX#dX>4q!?2mqYK$ogN!*8iG{DnF|9*Hu^5`7QPl#R0a6t9o;wrM07#-o;=ePH^pC ztq%(mSp^RkV0PliKjZudrX zJ*bfwP&Tt`F`xn;d;tNqM^1uS1O4X6+-d`^&5@~D^09cLb1w*q@d0`QLl3yA`6f|c z3x77C@=uz7lioOla~T2)n6i_4&?-Y)F7AgJE3%fS*J-9)z(NsMJnr zs(fzzUWNLV6e7|v#zZRt39L=2-HiwAPHF6K8de;}Qi82x%1Kka0+@aiIIM%X@wf&J zDWu}OJ`bAHxTvW)FbAT9{ZZH_2ue2mNDUg#%`*RJUXHFVv)I+EP4jA0@mI8;^dmlZS7{F+7E>FfW z&Y1C1Qcl1b9WyO8R!mU9PB#WBwUP|!SxUl1r>t0&Rt(0{QidS5IT=p~k-({;EUzoW zJo6dH)8!1~N{rOybR%;9G&RmcGOhn6^Vu=Ak$wI5`)jJq_8;?V{U!b1ggkcoe@EU% z0ll5Qjcvj1&gDIrU*ILYh$|4i+mhIJO9H1&4Z-0igkUBYvM2*^!-fL3{^aV+Vl7A7 zqN6bcer=+M0^>n&FC|glfI0~-$Yi<~dROM0IhqQECg8tb@0``KIaG_n^X<1A~4EvhVqVa>)la9J%AuMqOVqEcKP8@uy? z*v1zd_k^Lc2H-{*a-$262~AiyAre>>I2d>>5|>{mzg>o}Q*b2=UK*5GD4rxyt%ZVY z!A~Ve$muw}FGILGN2rzu7|;8j4H!-F;tCE3rDDu%qe?0T&FY>u*4uk50IHb)BsX|_ zP$C4T3NG=PT;92fP6JrV$5bD?8dJEGQ@mT#a)l;umda(LY?WU}X}asubfM*@Vo&sTNr@F} z7lxT88FDE(xXQoAjgHbcUyO@VLmQ(R45pbr6>mY%zA9QkcOMJUss)0P7=HDj1u*C7 zuLPzxydMiMT(f2k#tAg%Bg7R~y_nupE`}sZvn;TF1EOH@R9ro+oqefXgYZ-^7@e`K z&@j8688TLpj4>s`K67Z;=W6XUH>N`zAr7O39H^z@?2G_$PQWT9_lr|`on}}?yRing zOM(jxzTeVZb>nRqZRbfX%>?c%$Xvj1vtkm1YuIuM4e?#)oB{tF&zylu z_)`Ucs^L!!{HcXM^We|?Ic|NYrT4N->?X?6PetzvlR(%6r@Kgohj2YLnB%)zCpkBT zGerq+dmY-=*1oT%ovnceHR@%B0lz|89nE1qg|k|r2MeLsb0*R zLu*}7sW48)dSR%_%V{yZ9me}wyhk0V_6*c`25LP6^E?Cd#Vt3f4DeJ)32I3=;3tjc zS412NhUYp2SLbP+LRjGN8!%YM?l>pN@*BvRd|A=g0)rHpz~mTE^H8z@ z28-NHxyLnSRF|aq=o!)>nGR8k6tjF32SZ2GgpCJPD@l>Wkc9guCzTLdE03sO;$iX- zotDi|!8fY#$~a(p7ID}J_6XW0c-Z)e5pCpGYY1am$1s-1AjT}C7#Y7YBx@bn>P-PQ znCFUSKq?tVKqp1JkPc-;JjdkW@#1l!yqdGHeg~IUfx*!vdvU9ui*st|e&NZe|K(xy zif{&;%l@OrS83M&`b+WOC*~>6j@}q}q<~Xkk<4sQg8en)bP`-NBaqEKf@6C!&3_jC zvM3fHx#B-n&a>EmmF|C;pr<&q2@Z^iTYn*QUneoc%oi-cs;b7x0<1XI0M|>#!|4zS zMnyPZirjUH1pzGkVDSr`spS4A|6ir?u$Vqv0x)!HGa5q+_>vG{PT znZ*rr1v-||vkI_frUxrPTu^j#&z`COWas}?6XE~wud>L0wY8=A{}b~Rhf$1y|5s@X zfIrWeCB*@`v;yB}3EG+omaGJAtpusvxMm+nj2JY-K`_!We&UAjB`d;-v?5$(uq4cGN=WkoY?(U4 za!|{vIjS5Pn4`xUCFn~~1C-2mh)i7!=a%+1hNG}n6zUZ$6f?C{sP*A!>>Wh_bn8WX zi1M^d9EJU(&}ISK1#RqON`&B6H+OSZq-l|InB?V9$O+UyCY(A12Ye8+i?1I=XNb5# zyhqli&A2c|(gw4dbL*}|Hs_UiVq)yz0bvyDvX~ND-E0UtY2dG{N1_&X!^ePHo6rJb zu|#GTgxmD8;*103Fk1wM$+#mw-5(Tpu6~T;0-(V*-fTz6z^B@14Wh-wInoKUZ zbZbKD#&{1&wC*{cIdtbiF1`+VdDPiQONCOEu<_(XhMNQ=^5L<5g;o%*Cl#8w4VnR&w++ zqLwfN#yhxh7Kd$2tp=BEa2*Giakp+i-w)AfLtr3JE7xMq!hq%Bk*!_WFhs?%fRA|SN4qWgAaeDovmO@cZAR=pRB?{p^gs_vqds-EonDQNzd>Rdprcrrv zQ9@FV#@EY?0926zDlHTsY8O-NOo>Ev;IlDIN58lniiE_VR>MpV)XY~sT1;iW&cNDE za)p(F0SsR(FKyGM$H3I z-yr-Mf43L)eNuUS6(DZ_$Yg8pe7|uc*`%J6?k}KC( zI5Z?zt+C8;NUmOEnV&SmhJCVig46IA_Q}V+6LHg-z`0-zg_IX{aO9h)Lrbo-Pp-00Hc|(lZzk&C^UXvZe7>2egU`1dbHWk@ zYIFB}z`pN;_I)3+@4GT5_sr0HKPhHNe;ohGJU7Va%``P)11LLtnq&lo9TzXCSG~=_)BMlgLc&6}wRFmo9JF5od z8~~e3=bZKaIZj>ITj?>XLW$a!mc?JqHa+{Qo`HSCxEfx&f#k<};l`Z->&LV1R= zh7U@H$xUV9@tfDyaWN=SSWpU0b>g;@1PxoFaTrG(85@f`hL+xac?OZXmXothBBemI zTVb}D$56{ING;6=y+YT%xQC{blj%1|&Rb!p?CbN4o)_ zC^OZ{(5Mey7M#PtBYIg; z15IeIj2X&nty;=c0JQS99*L}Z(oAep zpji_|=DTD(uQRLj zoOW!?WqS%Ys&Oo?&l2;nD9{^8>=~`Y+_!vPmNeH6S`C4TR*(O(mpW~%SXLr!b2$BZCrAF}jM#@BMg5Ygq3bew_)KP%sN-;ib3BDn#HR5kE8& z2LRgx>u)rzlI2$lhiNDf;vFucl9Of}vN5VHeoPxJ);qZxGsh}#kqg}7g_?Me8WN+& z(~sg}M-s~Q`&NmHBR=dkUdx&FK2@8ujy%{r17uXa@)z2x)KF5EQ8b>E=~XwbR6K>T z+JLIvW9Vsr{yiO4{h@KLKRo^;Rc#)rGP_}FCQ`mee5SEBb|~wPz|b3(li2an@R%}a z{)fldrK)_1kM|0M63A;DsH(gaYhwX4_uLoF43Hjuy~w`cU*;?9%$L{Yb!}b73+pmp zRfo~o7MI8#oi(XNeC6wg3do^=GF0&U@9<_*Gx!`-)BW_qJ0B=g4t1?Mv|`QNeJkAF zxwByU?CS?n57$JCk=TDUBqc|18LQCgG?=TU zTb5TBjKIF$Bn9$rlf4pEdO$WoC&IJn5Yo@#b^JYJT65!!G{o`cQ2} zabt`^l-GGRH5u=J!H+5aYqh_+avG{BE*SRDS3Lf!{rKZ8i8qBAPI21Eb^njwZyx`e zn%de@{NIUq+FBQNH+HWqD{Jm9tWlq zh*=h-^g_!`@mp}dx{v+*XX{s39WF*2Ip%*=Wwqu02Y+o&oL7%Z|v@9?O0rgnmbWP zXDLYw7j!>X-`*UQvkKJwgqN595ajiI2>562HCETZ*Za` z_)oPjh}oI5!Moa$h)Fwv%25}VIbl22IgG{dh6U9NaZNO-VL{D8$Ht8t9h)|75)!M0 z#0lzz->wt>snv-ZyOF4wIwKJeDf5jz;3-oB{BVEB1U^fd65#Vo0*ze|Q>R2X=zTZF zPUvZqvI~nN@qQ^%mkWlf@q}S>uaIBvC!73dS}#Z4Mt1qn@2|zb4f0>55C1O7e-rV{ zL|G(2#=(gEhj~+n6qOrn1T0&&m9^rY#+XqNla zgN_;Pfu5em#R1b1Ex9uUMWwYe(dDAvI3lKM)P_F6&_u(vbhI}v4S4jL(kear32aEj zlPT2BD$zm!6E~1_OfR7SB2}S^0UN2-i-B=^?Fy}or%C)rs*oO`HaGeOY;aN)g9c+7 zuzK145gIC%o8UzyJcI}%j(ZYtpd(5QqX7>Xk~c`8nXVfR{7|zEK^e!yX;*VsTvZiN z&xVHL3RtcU&`8}vKc%ESP+8jRmLoFU1b|!+G&>BP&P`wLysD;M8EwTt@{5S~A)Au; zy{o&k3pK)hAzgB^iFCbLPROya91AHJBR-y|Clm@oF_^w~`y(-58z`8&;9SM&^*S9* zU0n^K2!u^{wD-0(M3pdo>F#N2NQTHy$Bfn%gq*Wncr4vca!`{S!4BT$qQ;&8>Qm)l zdrOlJv6f1(7NiI<^oiu?Os5j*RIph|BBxffn4vY6l9N$6tiT~h=4`!Ea!_XVXkRQq zWrars#p|tzDE-1Zs?}+Q$AYQ~GlZ>!v3ODrQtkmw>y4V>ZftI*9m2zgDq`_Sd@znG z+IvyO@+wrZcm=BHtV9*fnDkmZsw$o2XGe2jQQubtH}_#f6P~*#6ppD7|+BExk&Tn z)n1>svbKB}Xv?k$+`%QKDsTbk`1ZS{+uCZp!QAJoQ$MR(Syr`$Csml8aiIwVJUJ@JUF z|B})vUVT~#lOGxaf%#P6Rcr{aS9Psb^J^J|3^+n;qy+wt3@wF7jfd8XoZlwX==r|C_Zw}WLyF=K($%dg7HU! z?OG5lcrD0X!hS6XW?u_}U!k=i4AacaQWN2RFy^XLfU6`ec1P9I40qpZcN1;r0DeO0QU`(c$Rn?CWj{G+?Bx#{Z{G zXEjC%`&nM&^?O55Hh_20V##c^;hLa|h#I6M7#d}Hda7G+>D9DVjE2#b#8OGpzEMaa z<6<7AC9(u@XLF3w5FU&~{SY3dp=iAli)0@YBNm1V1E^b8^CBE26t54ZllA@4L_MD8 zn0zYnf2n#r3+t1EYW<)xP=9!05dSBWKTcDl@SDvB`ocH-OqdKgIRG{w(@mn=u(z{jY!g^uKmpnPmE3|M=^F?Gaqk z|JvvQ{8LZ=>)+h^Uo5w54*jpW-zEL;WZv_Ch4jDvank<^^Q;j4ukCVP(*N4={i&$` z&BXpUkN$VmYr*&V)VbJWn)zO-wZp5+*wQd-^rr?^-l`@Z`Lsx z8ts@&acy!={cp|q+yBm+S7p`zR+jX?6Y-2m|64Pa?SE^gsQquv6u1Aa$zuO&Hzwn$ z|E(E6`(N9xOfLOz&G_5@WHWjC$+SdTQsPnZSig8l-S{f^owl_m3CXK3Bo2lcZ=go-M zl9Jc3)#rGcDjHr6Z{F(N=HjV$p>6mxK{{QVu9g(KlX(lDk3ts@>SWxg=e0uzf-JHk zSDR9hJ*ut`Cn@JI zL`4h4I==c@`}H6%oor@_KS#bVqc)Z-)f26ZrSd@rU2I9Ay19*Nr_hsC|0@IuA4?m# z^uJY==KCM!)mD|_KTOCoYW*({DL?h}zYOxJrT^tqaZ2icMc@tkU)!M=Fa58%v0~|e z?K?4f^uK(jj+g#76JAUDU!%H!;c3d~e;K?JWZpX-YTevDD5-Qe-)Owvj{sTj{T@ zHOGIb^_A>@C*&Ee{?~9P=aka{i_lLgJ+NU)PDNd?r30cqIP+u=bJz;=_SZ$q=XtBW{z}kKjJg!gG9Y1ILUwHH z##up~C+bQ{>d9h~mS-S|#Jb67f0maDgOg;Dt&j7YZaT}$s@u*cCY1Eswrk1M(sAeD zixX?6JPFp93BY4XxjtFen6ZSXn4AkwAu4oEvg2#~Jc{KgFP(h$y-pr^zl^$hO{AD; z{k$&AlyvkZ9ewGsd$Q^O@&6SpQ;yjJJiGqC(qCCyX^H<_Rnq@Y$TM2~zfK!dPy4UK zKBaX3!gQR9ntv1cqTWB#fQ*yY-=?`D>HITxWYTE-g?T$p`u;4~Eou7=8X6r_Q$^RW zL%cbHKGW9AE4}l*{(0l9nz!v~DJaNfR-ELcoS$Txk-StQloX4skQe7tO`Z{*GcVI6 zt-B3RpISQitgL-v!#R(J&yRbzOA7MI!skb=AfIH+zYw)JCDZX$iW{cgXks;Ill*h$ z{4#33*~&f9dT%Z;l(gQPMeA*76vGLFk*m$TkSNa9)rQ%+T1urb8!4Pt^QbwU8kc(e zQ%PAKzlsYctvo9ZCi}+)XwWB)N5xbzHXi5*#SbdJb+w;iR%&P7+fa zlF{j4rzH+dHSvTT3r6%i_)1fB>O5KIe>Gg$SBy4t%>U|nepCDhf345&FU|jncq%Hg z*l7-GcA819J6A(VC6V$vDk>Z^**Pw9@~29ZhY0%>h)Y^}qzWG_WB_bsj|qYi2rz z5s?K8MMnebiYHU)!L+Q($h9ab9ic?rTDMg^Fv$PMM7CqZ)B?r3Z5SlkDuiSQ!`Ye3)PzCcgFgL?WFnbLxIZ8@a1t+lbk zF_Uij5vZ7gpb2r|RlgEfF2}+cu8Im)J+wv;7i@2A8W&1o_Qmk#Sk@C<7U=H5D_yX) zqootE7x?W!Ev;<uREd|gYz2FhQdo{k$+ZMi8FF^w+7t{BbR=d33M8=% zrMj>zhB+NEozGG^-Y0k%?|Nj zMuE$uWHvfw&0wU))QH5W0~5Um`SCz#6~cdWm_8EkYIQUf5xN&R8vd*P}=5b*# z!n#A4jNh;lHMjOOHFh^QE@}%PVaf_?D4>h-IVxcrw*{`YTA`M#j9nsGe<$XNU4+yK;+4gg9UfYJsa z7rsjyfU#}>?B#!czkG3I%$)XrRaIvDzv|kO{m+Cvn*ARg^4#WskPo>!lTs)myEB;q zLZ*@x;8b`r%zt*XS#jFPZU0+op8qwK)us7A5syCq*&Vbw=ReMuaoXc=rD;E<9{c$( zMou1k8@bni%lUuxJYQ-4PsF3mfAQjvTs(m1&BO=z_YyCd^iPiYUz7uYocjMN^ZH*~ zRb5*DC*&#V|4aJ+lK#J>{~wM1ze~GC1;H&UdD;NAhGj`n^FIRMYtcBJ0pzHDGaUkm z(%5*M0tiD_ItnNq1(c2g3TWv|brfJP|LX);3>h=m{=e2=ZI=K2)g}9%33)0iHg4?b z#3D);p51|trq)2urcFTKd2I_gyCL_YK&d{s(C`tg?zc|!^WObB}kH>#xB z%^fj$7{&WxX#kFZGID3j~nYYc6YX!a{GO7WsM~>1~6c*n1MlMJ@(J$7=QcuuSbwAMjN^He?H6n_m|>-Ovt0@ z|MXi1a%ul)&P=*L`n9C_n<9^K{>vL6zJ9UWfH^*|rY7V3$B$|LSIw)forY?P4T#u?|fK=PoiG{C@UZTzn^foyCK5vz?9-3%!qw=_^YD9hpJIUJT=GCI|2$>iTN9OL- zW$tRoQO24JK_;T>BW=$*Fk2yvcubm+NS&iBx;CsNQF#JUlw%MfyQ3_Wuz}x@A#6;k zN0AsRA3)_Q5)1Wu)wrb<0@18qy_MdINIdGrT*8#W5sJuC41<}BLfsaK=+HQ3qFJrs zI_(-o&w5O8RaHcVRssK?kAK!x`|GObqf|U9sc>Z?npF}c#`m$~|FE-a4-~JBT=IX- zJhT5#b#2YO691ow2aERs7<9PpR6;A-+Ykx*oJ87vmF)IXoJIfYb+o3C1Xob12-g62 zpbjRbsETK9ox@QM%HEKy@*2bOP#O*mKwXfO;TJACf;_nDw2Jy=xNsB#^WxHINQ#B= zuc7pytd&#Iu#y^zr&A~@N8`y6gm)WKB&En|J%ZM{ zd-DT#tE%w(EBy13zoriVziQs(;%;{HpRWAHYa_?}2OOE@Km5Pa{GW(tCTgW(2E92K zO8{~x6^9$~@Pgelf~QqoYWjnTe$d;4oS1H&>2FDk%%qLj_EX6?#C5wstfbin44FbC|M4 zYq7uz5ZE#m#3eg>P?%lFn{w##WCIqv0I)Ec32Kx!C6?acm}&UlpC;U|oY)S)Q9KIM z3xb1@czkU-K})tvA>70Yhl2@O4OD{j&RWL$x}II39ZN_1H$OXu7znOH&& zORhwhs)Mf!)G;> zR6?mtUt=;R=WsaW&Gt0QWSqwy+f&JWGroDm;e2hRh8!P zpI2Mb|4z)aU`BIi6R{zLQAS;Ti`rV7kh8p^VtG|lMMZOOGg`5v7jNSIULWcqQcp!i zpo3TiIfqiIL|sM2@bIvAxXK$(4p#JbS8RZa{7{npET_VfH=GJP7djR|8vG+m;f0Q} z1t}#Jkr#3`L>*BWP|+JU=^(L!$O}7fLD3L}^oSH2OiP3Ef(lv(5u6sl-Nh&=M;e@J zY6Mg7kSwR1XecQUG>Gt0x=&D}Gy*!NdT&Tooe1Q)1}ALkE8x8Xpv2;)grIo2ye_S* zZ*Vrnu^1OimG|PzP86bVtQ7RH9)*TL$&hO3>uo8Y549|)pnYD@9}kZ#bT}4-mGwvo zH#niRgr)r?Mo*cZoS?RMkZ4W|!ZpIqg$txSI_6xcNt6qe=pd3J7*0*?Ln;EDZG)4~ ze{Ui-NPAr&EnHB6o3?|1SSl`D(60^b6qQ7YuG1lWAEQCMX@x3f`A(ApFp| za7jEW1BP%Oo;PFenQ^>zTCd2%&V`-q7ey}4p0yliPN}r&T-ZbY&94mJMZ_X;2~W0W z_A9?~n8U&T7Wa()$gdQB$9wcxNXAfhYrpd=8^W7mC4~z%(I0u1g6RVDqKW=6lv+^1 zhK(f{Dv3(5v=m|E*G^utkDyRsCf>JE$|4lgD!gR@+gO3FXn_j!w>&GLT1)4`E~>rk zq*hb8yU%80fUW1k^t8bdobgZu!Mvkwp!RrJj_3_({6s9sco60yc;XJq-k6-KU~EX$ zWeW^FO(TdG%%Kn&0c3h|wvb9np|x_d;($T8H!6rHw!g}`a8Y^?_0lg^sPnE{4Mk1$ zHZAM1uaDwgf3riZ5|U$ZogzgpeG>+cR$=C50+%u|G`8jto;Fko?Ep(|aB{H?GiO}6 zKIk|P&Y4))i&-joVIX-!2rm>V)GtTk!wAnsDFx~^t{exQJE|m#^L~s;{3RB449IdA z^5C2)L=_XDQBqP~)XVhhf(qS`i{4_VI^cs=sRxk@8@X~lDXZy7O7$+NNDyE_aUYRX zRqGY*Z4y@Cr0k4rNH`r1qI|>sNyk#C0r?y{xD99{84%1mlc@kz*5gEeHh^5TpB{oX zw>EZ4+)LChF6Vy8>0!`&lXAl4gm==Cn-&72`Z)}DwY zle!Xh1ZY>ptpcx1AW6-J%M!Q9%q=JwhOxGVgjQ*XlDXMhr0G@;WttppMPQULB(108 zo6iK9tItlmc`{d+pf+=+5tHo@CQIY&?5DFMt;)c&U@{Cy5m?6YFHCDlawH;BNFItu z!pvG$Bv3EvNhcDRCDF+^%xeX{17uI;z9SxsjOY^;cP<`Mh_yXgk)ch}0otZ^3XNy5 zHpLyVnNlg-O4bR0@?mM(Co;S-RSC<+TouM_`7plaz+#~9%vv7$3p3s{m&bMbDg)#d zH8db6>46i#i0KC~<(T{^e5z?8^vjqOm3TU-PeBfgx9}+=Od9L7;8Vl+i%if$8AYxR zXXyh_IYkKU4KY3hI?o82eJ#cZgaM(dVlV)aL^G^{c=_QI8yCiM1gu_&&3J7}CBZI4 zRzb*MbrP&$+8oqmRFk~UrE(^$o4yhygh`H<`r~P; zkWMNMbl;74gG8xA6gXCOTq_1grL~k(Wt`7R6+p`%O;_#BaH1g@oLU>4RemStG~v`x zgLD3TC#qOT_b3Slp&G?Rf`1cR7lVqJn7q_5gTAVY$|~gZ)%o`alb4W`gcH~ZvwFdM z9a;^k){G>I5PJmbsxtnaD$^DarQ1SOI?OEa$)f+)RW4&}BbWZ)Uu%y4GtXbT|94`Z zlKy`R>;H9yQ+@{l1?m4a1zqU~Kv1Gmtv`Dyss2l<|GYH!{SXWT6E0|`>95ItX29z* zNO(>`oh+4(55APg2Rgfg%5|2-j}MFv19l6KDs2$gRm{N}S3q5vybBz5l|+<&x){+a z7+1!XP($Dm?TEkt&_Gg_5d;3|Tp2 z=9p+6 z5QAY4T8{Z4_+7a0M$1>RqRUP4Gn-(lBck}I#7+C`I-#!;&<%a1unaMa`4*C5p!nj& zc*qmXwJk%JWBP*Qmr7Ve3*;gQhhShBMFVIgo+exFG%WpgH4{^F1@j`Y6;j(G_JvRg zHAe2nTXjrisL~;6C}Xzje1PHuNb4%=<3K!(k;xS0985$&v_Yh{Y(l%*(n--6j&Q|< zmWxVL;glv!u&_#$Of;zitvaCMpmeMPHqvYGgii5-Va_59ybid86qXV|C8;Waohay0ccMiN6}MSdTL zsLEOsPKcOik0?IE1QJC^3oGJ$+`<Lu45@0XJp z53O=Ctx6Fks)mL}Jg6}iPR^F4P&y^oJDRvw57YKPHoIm9r2eE5l8Eb!L}zOu^owrL`l_WjnHbCqzb;?}qru0-2Lj7$t@oQk1#P5E6F?+XN+& ziq}Dw@{Z2(p039B^4=wl9ZP!-w9y@~1`*wgdL29vBw4bDK?>?zbYzom__5R)pkM$~7#h$o)RI zZRCEP`+bIC7@HXzn{7Ye-#_PZ{yFDy9*^_7KA*4m^To07^Qpy(g`LIs&o?gj$hzoD z+?SlS-f}qYv8&>25|B}FiYd%5nj(f9F+(2SBf9myoI&N(_G5-A1{9kE# zW;**Qh6vLhx_U~*var@(WOk0VZh6(Oqh_(-=<@Ff*I+_>Sg4@WcP#mjKW;oMZ&ZL$ z9+mm3(O)K*N0pEFs=rT4$O>o{9#YBmupBcomOO1!{-JwS`GkG*^%H?caY6sxeeyTJ z#{w`vjg$9!b;A44y?|8W#N9>H{y!4KgN74F$KPyUFFeR|`B zNf5SIHTVVgQG(poWwC_ckGz^+b-akAeC}}cc@-OX|9RAuEJ&)FbPO-naiu&Cg4Eij+-7=AJ9yFE^O|Y@nc;cm1Nt#kNMyvx4~=We}Nf zDW3#It>@*J#IJT3YKR@XR8cwUqWu2u^}SPH#%k+TqInZ+8~RQq9`DF{R`?I#?cHs_ zd%j0F_@m7spDf}1L$RRJW8)VRYyLSJ{yJf3ca2-9O3Ug6?}hr(Q{}@dF}&hu9X!q} ztsje2J1*WJcs%ok6K7q}xj0#Y<8Mt2P8t05DB!)U9D7&Nt+>lY<$Rjt9|i3vFZ0h$ z{7sbur(D&#A+#}R+8^UP@pZ^zr6NkkL?o^we)kJ0p$wc)aie9D7ww=%ev&feo|Jhd2nTHqOh_x{a2*Ph|Wli$8B1Uy`e>U#t^ z9dVQHCJq;jtT8B5n~=L2!Fw`I*X7o~DcqyWw+6=SUn<<@{*gPFHouaHIX*VSslIUA z%ZFb@%H34}0t_Ge--^i`Fyb_R?FejhjMK7z>e}_VrlvN3nsYIwkyBT`z zDogj{e9F*FrHK5$6)i20xxE+2OR=m5E_gSpq-f%p!sOB$fgpAH*7C%7yIDJsb@)?b zFF&ra=}0-B`;LhiM5zhbClM3Mp23Vy3$_fXYio5s(8JWH9{X^tV-v-x9?j9W&9h-U zGBshC<+<551QguQ(rU5_fh#zT#HR(-sd6=fuEcYQ{P$Mzl*buh(cjX_T1-@y=>L{< zJp60wV65KL`NJN0T|dPilqi#_kT4MY}E8gdr&K6 z{$X&^Bn@0xRaI71H;88xW!ygEc9qD`exIY`s(a%$OYBLj|ECL&V9}%gJcU*Mi!JxR z+ar~=-k-b5YsHVVP>;MjyslflX?a)?2~K^P@TIu48e`%E`ublWcJj>o~&2k6m&d{hk-^;5WTxW~94*JaPERcQhTloKjDa$J}kZnDRn`v(xB4 z<*t^2PBMbO3^4-sTwgg~k#BVlcKwv-eZ|bY{`2PF6-u6UziMd%y9SWHomC(H@5be* zy8AuHJo0~DbFq?2;119iZhQyt6p`fLc*J+=sP53`d7`*>|HkS1rMuOJCz>qeDetZs z{nPo>SV_6%F*N5^w3Hv>_=Eg`F7i24|M>B}Zwq^A+xzDpT?N@&$fnl#B{WJu6QD}k zzTx|HHahu}L(%Q2@qsavhOj3JKcw~C)^&>*{zC}d=ygYQmYeU^mpgwVe%_ZJdK1&W zP@N3_I`U9+>YsTRbN}6`Vl}&8XI6!=0(Ro}Bh{jIzC5@o>1pHnD4NTuU5@A0kFzVu zrqa*VZ#|9v5%h1oFv$C3K*WE1UYuJpD+Vpki-J-vl23m07@Jqhvx*CU{pIzJh<=AY zJm{3NdSFYk{!%CTdS~=wi{N9Ck`paW0A_G{FTPOXq%ZT;jfnIQF>pBiW~W0g^&d5&mM-sJ^jZ@2s_&gF-F}6~!4A=9MU6 zMO0sDm~-0Ip80%rFZT2D5!6A?d05oWw$eH-J!jx_`F`x;?ZAiGrw%!hrM9l8qwcy^ zEsx3)Wq1^RRo>IV&G{NkaYY(zjGA5e>fPN__W09Ttt5A^k7`xs_HNeaih|0Nu6s%_ zKNG(lnkMhrOEaxJXnZL>_)cCJbFs)hNa6E% zT@LqW+k=0!5)}sx0{mlIkgJ`!FF!i)KfXnXS$XAoqO`5OieIo#>&b1x&B`|~^{%Vx z9OL#cy7yD=Y1PZWDpOpgF~eV8uI;_xU$xNJmBuDpAnd^n`>&p34!I?MfKD`{uHC(T->-lCh_Ia{T$>(o; zPut4b!T1LqttmpkmXz|jv*z+X8UK#TS^YS-BUe`Vnr{8`R~b`Q?r4uxz3%ibJ5ta8 ziO=#78(mzagk`Ii|LL_pqP^P#?^$;(ZHa+e59g7=j{?dH(*WdH;7s~l05xD`a;q6aaO_o}X((z?V`ER2A;@uUqD1zkv@Wz)vA3-rSLCR1KT zz}KN*c7B&S0<%5*Y(rThhZfeRZQq}PTroE>lAy90u*_@V=V&0B@e3R;<&+B_D0bJK zhj*lPT}gWwqzmdWuy+VtNsGPmw%ZvEScqRR=<;!>CLFD?x7AL~VK1Ns8ka|tzNUe# znJ$A)AQD3DGLs5NAxP`SLJAHVY0dCng#z;2by?F#7~R9ZiyRn#YaP z<&mH148_Lf6rZFAl+^*k`g*3?78=T;%$l(wv>YH(FM?#M?aS;Wlsf~Ndko_9kpB1X zgYi)JnVKBa{YgH6{n{)z-6OG}bi0{JorRZz0%kF$Gkd?9s8hZRUyNtVk@Srm(|QWI zE0!I)srH6`Z7x&rUn(e<(vqk?S3yb|Ein0x+^Z}HQvjmA4JDMrYP1&NyNn76j)iFF zY%`naT#lp==X2BktH)CZ0aw(v2+jgqL8K(C_I?gdq7mHJpn;xikdQb)O-dkkC};q{ zcbFoOtxQ@ob8gz4NR-F{4{DO3hlZCg(-$QKnpV2aLbB9+T7lx5D7Ev6W#8HIyy>`l zqt`3~!c07L;k~ePL;yYqSf)c@HIZ_0A@KQM&4=@ja@JPQEfJOY%a1T>;h( z0Ubj2-j&!YXTMNdwEpdoy#qV|WWMlA9UES}G-Mw$QHBBGbKss4YcoR_X5J7n_oDEA z5`F7seNyQk6Hr8hz@+e*=s|5#^9G_0ut$_b$2kl)v9`vOiQ;oBQ39q&7kXd$EyDa^ zSGnH&P#E5+=l$=|L8!lzn;WewolT#lu@BI*rr%dJ%Ao$+`v6_G;z`_Y-K?+n!SYuD zz5RtIVq<-=xfUzI!nr$xCPKGwa7f zpr?JvS{_>G=wp-h=%W-gHZPz{Fe`ZgD?rO+D!e6dKKjb7M@hh=W z%C2s*0LD5<0_g6*rCXDvk{*^rHhu#qb09yS(W=&td#y$iVr{X)_zvKo$Y13Y& zGJ1|&q$=u%48f!n0H=cCdtVCBdbByTB7%sP1AH=N9DoH5R}?{8wUd(S9fOF?RIgPv zQvmg&RMP%nB%gpT!@I**Mr<1kRhM^c+{HyDYb=f8b3sJ33<>diZ$l1ypQs{e zc`06T-epD{OP_#Kr*M%9ld%$z`Yz_|78PBP8@|ylXm+@auomLtpb?w5_S#4~n84|< zUies>0F+W^Vhpt1-Hk096064uepqRprXr6bXKNtMbkIJwEmM`dNi0 zZ(5?CchlYk$|;Olm&{iH$Os{t_q_&GHF`~$3OnV^LE89eN7JW3nsH8!z>AK2!{Q3Ay_6J2BEJ@u%|SBj!BSN+_eHwpP83`=lNhr zC^L#HJA9R$b{K(`$qif0Y$72y=>&A>iv_bbQ6U}5T56w}7P&oMq45nB3}_%p_dg?Q zdC-8l&Fig3;ti}uLSs$=KxG#S*l(>9!N3&`mfq#CLZ_f?2G-5GoVA?etd-J(@YUFB zqoDTpsxGo4YC$|IOf(RSpl}1{q0rfAM|SA$@NTRhi?Tav27p6E^7G{D9F2|p0-=!Q zT#!R>uu(I4%5t$6s>j+lv33~N@{(C;cBMrS{e+>eFSmc1@XUvM?QJR->7lm1$rQtN zR%>8~%Y*4D7mK0aLs>~ar?{LCCQ<(ap;|yLXGhGOSOGg^Z@fzkIB6E+hgeBlx5tu) zJj_(GoAJ^px~2a?E4Xi!wf!TxjNZ{B1BcgQ*t?`yC3VnYktId10aUS5^4-Nud%K!R z#VdH1wO5g2pa3{Md)%)X(k^Z71Zh9lq%zqbK{tZ#w@H|4u3Sjy#ph~o;*z&7R}QGn zI=tYlG>k`@~fdRjoko#={-^GM=Bl^?O9m^9Ff(p&s2Qt1kj6)?KBk{0h z$ylA?uogTUP7NRdO_>L_?ifbIPc>HmcQgRHIPMrb-#F^qBw$Uf{6jeuV6$jj$jUYl z7q)KspROKrc>xCUn_47nglO|>n_F{>*0Z?ueAkta!$^AC zMHoOg;t_}eFM^>K2aTX~7)qXn(}rV_%Te7(y!BjY8y?W)H_2mayU3;!p@avpPTe8D2tWfI>?27`ppra8%kZrCSYjQK2CnDy-fUsU#;<$x!Ixj z4EKNlfVpe$hdhX<41ySYlThHYOpnLtof?r)ngaBIj5G!|Z?@_}g7)w*1iUY{Kp;0_ zZn8XMGypGFRUaxLq?4xTS9-i+$f0NX(fh@90C#FA!nEAVkn|{O*qaWaRCgwQr_ULIt1o9WHo?fijqK6% z7v`&3a%J_jT+n&KB>Zq``&bGO?P@bIS*ozwt0>QWau5JWVW|ymzhEkwqmamssmnyq!ZJFnu#o;BQq3(1Rms$ zWcnz&`T}>7At$~Pj+|wMN5X*sWpT}-L5%7Be3@F^#&SxMnG3fvss7T zZZ8yfc6H(J6*ujd-|`3X$Y_E+a_1fK_xKkQI)f$mM4yH^lHM=14xK>luQ6=H8^o>)R<`Gi;!IU`A8hB@ zQb!#O{Y{b>0g&qrm;DFE@_iW0AlA_3FzHAp1%6a5)O@f3a#(O0tAsNKlzWJNj0D|H? zY7>iP%+M4-8}aNp+P`PT?l1(G5YRbn`|yReu$F6Qlp=ad+yB+86Mej&-gX3o*PLe=utZpMF9q0p>M%e*d{T=Ex z&dm5eMbzQHBWKzjl_KhF{csd$-uKI39^w%+Qw;uCbG>4{R}%&qxT$9Ex3$qa%LfPT zkD`g`y10Gd(MqLQtbgZv0b31$h1MZoMi)%rweP$=Y?Zjeh{7df1Dn!< z8eh+nQcYlbh?33KJ-?j9^r;8&NeCP^Z|GY8O?6+L{etA2y;x}O-dNk@mXx#5)N3}= zED2ksKu@REdI57w^%yMma?$#QAMw7(u;p$kHe=9Sf+?<8gQAa@hvbgF|1JIGV;~B$ z%P1$#`48!hA{lF`W^624*z|kIO4WDgP`G;-t=Adm&tUu7R5sW8;ouPvc57c6^B|Sx z6tNiXSO?zA0go*X2BIU@y3K@q4hap$>Jj9Fn!xWs3>jO%+OY1b$G@BatunuxYPwDI z2s43`ZK#%ebKbYx*(>SVPZ({rd0Tp2J|^Fl@c@A5G_Xs$Ai`_eND=x@-QG(AMgNpc zGBz4S;t!w_d*tYNUpwGF(AlgUl~){69E?_^FKB+7!?zwG1Xuc;P;6#V>L?O{4fJD; z1`veV4BswJw$3J1th#QNXFjfLO7R3~=W~)V$Ad6)B`4BonzeBv_6O=!%snL(w;u$7e~61dG$RG{ofC;zPtDYxtN4-klDyObWQV0Mmcx()gQIFbh7D;hqklo9Ia8**s&gZj z5MD{h#qkPUI_kh=wAT@C<^1-rD{!CzuLpiPN(R`j8!{aIr`@_Fg5mlT0iR!w&p+1{`Ri0Z6n z&93TExBE~?>Tcjs;5`{kb8a|HYBFOo4SNAYgM^1{-TsUQ)l*15P$5 z+ksQrD$G8NT-{bN>;Q9w9??qF{od$EQ{9^r=~gOL5!>I=ogu86(dS*3v!snVpLOA* z7;)R_oO3B)DvZu{4DGiJo;3l4Ojo(F!{{{k!>#uu2S&Rj0-HImMMx6B(y=H&=#fXw zG8aUH1EKpY20VMe4a<66LCM3jcbjqf&P;9!@gh5vHm@n+I1@&Qrm;xTO@9;_`zz_r zoe6|5!1*`ROYgZ9*yEDM>AB=3OdcLvA4)!;!KzkjJPPEwU1Ne<*jCxWtHrZ`hJjv7 z{FPM$dv&TagWxskm~?5^8A5ND6M$HON4C_9^JSB47G0 zl*`@(uqwOeL6fK;QE?IOe zRdCyIVtIrY%Wodau02pkDO$6(&Ct;8;lCu`wW9=(g`+=HWUipoZ|gGuyRLg7Oo&uJ zyqmO`gKc7_cz{UE?*5KGV(7tCyrLeJf=)u#FsPzzzt)x+bXnt4EleVK%q>|bVjdP! z${73$LxnMo)19Fk-}AmoM7WW3sc%4dzwYSQgU$Ot<&6d%mEEa#Cnf6FrZ9eCw1sIb zXftbek}VTK`C{)k9=h-+CQ$<62<^C-gPwE_UA$F>7O3B!pB>b6xBTw_Mni*fx#iaU zVh3$Z0_c<#)4LpxwP`ZhmI2sf574ge{h49pI`~VAX%L!60D7KB=*Z~8`dR@$|fNlohB*$0Cd)IL2@iUlDVC&~Zu*{|5D-AjZyRE(BN0{6ahv3E0g{=5uO zsw`O6*eIOW25%_QuxhL5r z55>49w^@~kG+?@#cP5L&=T8@I^kaZ*mJ{d-sFhpho7iO4$}X6_t)bJz-uk^&hw+>( zACKiygm|$;vGbnATZ4(Jj@0FIQgTor#WtCDYp1r{F{l*fTC8cL$UG2KMk8@!&rCJ_ zSdEY;PN)V3wADBZpn)F`TW7fSD;F*lv8iwZJ!n~vCP8@8MN3on=gInlY zY+pJw=w-=9W&z9>^$RrFsLp~+q?ze5TmDEvnRHQhgbP`kF<1)1mXV7wU zQ7eUiYWr!9Lm+9?%hdOvYt&34%mq^>0HCiKqjiC;eo3BvfqOn^9P+{E;003o1V^M)aFycPp#eQ0B$_iQ7p4y-sbSevCo-QY(O(rA} z>e`!@;Yaw7pC60*m$2*#0UjQ5)tNGh%i4NPBzG99V)Pa?oJ9eeVOA9tVN`gle4XB( zh;e9B-Mr@!BJFEa@ghARMJE1{PYxqC;KjrDr@D`7Lgo)a$hYv#4`PgaizM1@&~}Y9 z78<-(rbwl)7s%8~)KC*8v>?ziMqahqEZJ*ZB0D_PS}Uwi9-ciNvc4$btL!ra9PUC( zKu7p|3N&9cHTL`7x0yLO&8qJNxUkmK*#?^HfAhsdSDX8=*}&1nT82y;gSEm`hq0KS z645N?4&qnnq1clO^*R425UQg`*vUJTzP?k9)&!3Z3!tnR)3L&Ohf{di12%JpwXy=G z4~%ShjG9i%>~A@a5?CV=t)qL%SOyLnp<6KS95l+OYOIY^g5v0t?$M2=Ai{436|(V{ zt@|Idqy4T78$aiKd%B6r>auRmiMTltIIcR$EAthDCN&h|K1zu*H*>5Vj97%dHdxqx z)kK{$V+P`kTBy#2 z%}ql)4$!h)jzS`ht4;5}I{9iWG2J0=)7{x(aO83d(oZ#l-d8+NH#ma>b>%oau%}~- z#Shko7-jV?XlX8Rc*n`uoInEJXp)8f!uDWdP0%dTw!EoF!+x3+Ad~#>r?S9(3F!VS zoeO7tYFEr$Vs)rtaEfRbl(k&lS9V5Rj2X15#Kl_6Omf3&6uj)*vSxdhUz|j4{~Op4 zO&?^etH!2@ZBLi8!FcZUJytIh3qyv?s`>#C)DK@F?0DGLL|6c$0j>v|TU}FBL&iks zyYe5Rjo|FVLfQ`VX0}$WVcOe+Z4of2c*=^sk)gN- zu80Ag_h^k*)Y)rcj-r@b1!=6q?P)Xdr{^M?fE|7)@Rke!p&nt2KS*c!yz$-Qvq$LB zD)REA%N!NLX~Y7FvSw-Wp{=^yq%%TyzW#8x0EOC{7*)?j&1n0r_6uVh*QecvyA&a- zo9&Ikq+ENz;m~*YKV!1D5lw12HM{vz0EdP>r%-6ZWCNZJL&ymv7j;uVF5R*2I(gE1 z`+UIK2U8Bo<2NMl-s8A$pnvaza5o_cYpM{`2%^v5;EwH1D*J{C*-sS`86Sg@av| zHzo_VW~v!Xy-Z}nah}zEuww{|`3o39!sdQSy+}SVy*U*^Oo-w9oi`xij)EM%cl6Q5 zkVk62>M=K09`qgo0XB@yeAh-3g>39^uSp;tqeQH!p4~bvLB~^|mnQMVMA|A09d(_cn%TU-@}G8n>>4SAY!bTI}wV@L^3f2IyRD zRhmTyU(#SiO_Wkg#dbG>V-wIJX3e|P6dtEJ1Z3^g%h-SUhKb=oCzSRdGjxx_Ot7sj zTrH}p<~wwT%ie5%zd6T?M6znwKTs@i`*UR;FdIDCIPG_kCU36>B+e<8HxZXCm8nVw z2LyVYrR6O@;4PhjInV%CAcc@S6JkZ$ds3B-0a4h#u(#w)&=ue{ItWxpyT;D>(cx7X9C+ej^!W+^g};{^q$kfOF9BVL3Y->p_Wq0NET@X8(>Q zHTjKI^UxyBBN+p&qM4VQ2>INujEjI8IxKqqwcB?;e(@6Ofnm~>OH=fvRQq0}9;H*1 zK%j;ID%eG)C*LPqg=A|5Z@3{9))9Ion85KN>ZNB{PEA{Xaf5)Bc({9rsBZYKR63xp zY&j+buG9Dsy7sp~NN)|gM4kogS4=jV0Gz5MBZww)dh`B`xriY0l3$r$;0vqHQ7)RI zyj|VOH}TZ3H%uC-GwJ};L0{(sP7(w+YKAO>g)ha-v52-`+$PbaIS;2*>`pxT4QQ$5 zy-dhj#RxnIc_gs9o?Fs6pI0it>s+&*Idii|0tTl>K3+VY+0Mx*@xU%V(vVMFmPmQes8k15jit2?N$r%SZ5Tg zrzPfhzlc}Ft2&g=EMeM02W)}KNF{z^*(Nrj0NW3aG@m|Mga;81H;T){wJzw);c5g~ z8nqQ3b~ByCbZXOf`z>pv4eHh6zYVW)@WJdO=WONRL=?82G?h>Ss0SMRUcD2@66Qqf z?Y14HGs%B0{=IZ589)^oEuAcLWE?TwI$`d#L%I3?aT9uAtzt&ck@);Tds7y_xWjO8 zhqkq)s^h4Zx}x7qDcpCiCe8yXHc~EYR}XpJWlYa)z5N%?ALe&+Gosgo_C)Mij@$Db z_T%yMYVH|Kr)>-sr`U`N7;{x`{)~7%kaYy>#|(4=vS-%kC6!~X(i`mfo_x1e1GeNk zHXRW|=h{>T{Pz(LGjsR6-^}8UNX8kNmujhJ&YYP-1;%*KhY_5`GqSTVP3nZw`P*%cog~yT46#`NZRe~T^+KW-*AqzWnAZ`@7k4y!t%kgee;{ zlbV@9HD8;X&ui`E1yek2c+O8bIz^st{b)7t>Xz$yOW{hFN4Bb`!O2&HF09#%UtPIn z4L1Kst-5z23~=Yf5a}V5_^0vYm8|gxa`7HFU4HKcpQ7E>NIQM|GFKyS;`IvA?n-wYegZI2G4>`;Lu8ve-tSz zINTp{#^HmdpnPSx%b(*)*9s4U1<%c0_=g*@1$rKzXUxCG+d0`$qdGaK9gfXFhFb6&uA^ z{HsQXPDlJVr}5~+;Og3q!nU&~@81cyhv7`nJ$-tq$Kspa>%6q3cb_DE;2R6?{PZI5jJ1)Amw(QNmH#E<+^ zCnXQGKHfUhp;nU03v<6|5OvzEJMD+eo5$lknOptEuM!&;IJ-EmKDqlIbQ(J?<@H`d zHttW+v#&qFCKG>_UxdwHgmoW$D5*5!Xx)yuKrwSU{;DCV`|Fo>?w+6GbDWQq`(6p^ zj^_P3I9z{uL;dQrZ^9x2&riP6aO*oO7k%EbyZQ^T$nD3E%o8?eiWCoFxttC0%ZJym zjb5zf{7=^N>DxW2W#rrGtEZ6q`u+1Z{$u&+U*s(J5-4lOA8*e;iA)w+IUC3Uypf)R z8rdJ+&Y$))Ifj2CB&*wu^8`OE+;b7K7BL?(^%o7f<|tAaC|Q_a+xKzvmN%a=LoVTF zxp<|z>&F|D8E2IQ$5TF@{4S}c+hJk$%OpMCKrS}-Ca!hU>K*2NL#ECrGg|(EyB48* zJOjBL_-Zxpjq~4^b3VaQ2A2NNk9jk7zdze8Mcw~&p(W;?ka*5h{x|BC-||IjxlfkY z^e8JF4~e`ty>NW4?lI?m`<8@@3vlz-QIUGZ2iO0deBz~+kzX=up7GfGLUqogg_5%C z4>`Gb6br{2^zpT_M<7MKn9PMs(VzT^mTkT$e|-dg@n4!poj4EmcogmAOks;soX2EQ z>NRK_?A$-r_Wz})UnipR6S2g+^ZRu9A!ZmA`q55y$rgCRnHp-&d*0#HfCuX5U1u~<5uC!rZ zzkA4`$Iw;(>h-s#7GWII4{(uur_@D1haXc`JGUPd!%gs4bIBC7(34XtY`z{%E=YlN zcD4MoKE1OjdCI2lQA9yT<8e6^4|t5RAV-Hl$(f0#H{VsD&+&yU24vYOHMdvTYg+_P zEWa`TuJr8hNt3hA39nM~=cG-zpSg9MK7F3=N)V^jpVs`z2LJP}9d%}%r*Fh~>Ad7L z)KEqKkvle;^*xLOC!**6*lBEH$%pWbFW}f>io;c>-J??{nP^{)P?I4_%(H4H!V z`R8KK>9ET9=>9tKW84#*vK;vpZi7h)H%l7|)43g?Drc{HDb(E=J&cG^Z8)a; zNCoE}sGk*OsGzcLcxvMEc=tVeAIIq*07Tv~HqU2#K*E&s;^$V_%<6x#o2uS*pE?Q;OxA>mGGCB0Y$QI~La@PEieyJBsb8&BzCLWl?4}qJ3~-5x5Nb)%X4R{_Q`m zJZf@nela=_KX&!L<{Qnsi2{vJGw1?x<}dstvsDd^bGXEAJeeME>o--c4PB9O7=pPD zofaG7;W=6vB<$_@3Fx$RROVoi?fW%*d0UYoIJTElc0h6 zdyXy5d*w0W1vtC!y3VSFoACt4C%GMcHEZL9ou>1&gdV2Tw#5gA%#Nyv%vXM8>J%l@J2#k&q~^{!!M7et=5i9hiA)1z!r zW!4g6_)rB!w3LK?h~477y#HwW+Npi1-f_wA*LLi<6yHY(gkYDku!?dZT~{{AvK z-KoxDEvcXTR8s$NJF4jURntfJt~d|)s&qeGy~^|P&gC;Ffjq)4=hq=YS^=lNT*}V! z4i1;TaBqSpYf}3mwp(q>y)Dm{U$5>&4_RFLj@Gdl&M|{s&wJ%RZ*UA=y0ck0TY0xS z(K|lD(s}yLRZh2LH;a$`N7JbXp;0P$-tZpesP22 z5?5qhu6y#Qt95Q^DToIe*Hg3n&MlnpJZH50tc@ zZ>{vNpPTnb;NBu5lL0+kO%~PxwG->73OOA_cialUiHHiAwM*J2YV;mIdEfQS$z{T# zf9B`sClQ*E|MsGlM{j}muKMVEpNqfvWbzc}iA?TDvAHx^Z`rIaqo)~frLQj4uXbZ( z^jx&WxX=F{IKs7@7$hwx9$gf+_T{qyY&KMu6&3;eGe8VEplc=k}s1ow=Ik`#kWfDU6;!Bo~?Z8^|*1l zVYz3kd;Bhc(yJuC+7p<7n3zm_cCOH`x{0W8m!|^Puij61b>3xZMoPB(c}32wgXhRJ zr)_oyBx#!Tq$BaVhkbv}bstLq2QBF-o-@j=Gh(>eub`Q^cA!WY>O=o(%S=_@x4#F= z{YoWi&(>_>O6hm5C)LQ_AjLMzUX{*@u|2Lk`1`KW2Q|h=%@4MuAIH@0s;HiwnD}#i zl|Sz5=d6(*mu}6;C;J+H?~q^m>vmP<8~RZ9VUM%vw`0>kr4Ma3q9l8~<3vgprev90 zr6V7ZsrR47`{vgx4YUns=u>^v4jth3c$umX!n}!g+Q~kwiRf#3nSvu2jlVaVuEG4j z#Cf)mx-K3YNfq;~^nD9%6)BEwTbfE*@47L0!rO;~g!2E+QRtbwvV1fwc+svoK)BrD zi^t}3pYKYlZW4CNXUgm&SJ@}EhdF}PeKW&;JvkY`V`8eS|B&F{ywPv>5@=H2GG*5m zrK0ERIyYJYKVec2Y%h2ATwAR4I%g4OZ3Y**EBO0+{EfMsb9T4Vt6x!!*9F#UyBZ0X zMgug>@0~a#pF#;8(|zhVsL~kz*(W|!J8{d_P&P;ZWMzG@-D(w2$5^6*+HA3mqA6KP zMNz_ns{ZN&2;(PV9DUE#Hoo;>LDk_GC8I9R zTOfufR#*DUapUoHj+wtN)RO{=w7L0p_2)SevcoB`rH3qnkmmbm&#%h^+%hh7{>x}z z6_eZyd=i`@HD@eau)QtPt)a?&Nl?Q(B4q;esU^v5NDuU=U7~@*Mf}@22N!`#>qi?G z^~v&raj3Gro^i$EL7NAw-E{>IiVbLz?y-}ii65JJC$iMMgO%>OM+-kFkZt$zZ`}3( zKl3g<3HfqGr}{HnM#La-6$dKn9bNLjmWBPkl&pLHOhg3emGtP}1Qu`CElre|>=!@1Y`m~54ZyLlV3QI1NfN#|0yZ^F+`g-SC|kNgM>nEse@&f3Kx z#}49l@Nr4f^ArF3zRyoTC7w<>+CPw=+tf28#zFV)N%7>q&lf{G zm!7Y7__%8z{x!S&NZt7JHS$REgD~?usFt_v^WsU^eR$t8CBlp6(bNA9xDoe!-66p} zvh1(Kl3S0~ICDCF_I3!=fB0^HjfgI6>D7WlxeFwRwCY@3+jBRygwM@b4;-D zvA~GqfBf?Lc}`Eu97e~E=lL6)_)uae^k1-IR?FM_B`IltZ}vvNO1t;ud#jp~a{eFv z@Yfl7SCv*TWk>u|X1qKjpknd`cJ~Aq=$h{KeL|&H=$f^*{cK)w%}?mcN=I9taZH+J znkDZeOBvJWuDO4~G^hW zq;ipf?eH8sAu!$m-D@vPh*!3OvOF=`EvA_cXtLN`yT9ZXDD3t`Q_pI#SEY-VW zlIVK5x^;@O8>vBz6V6UNto9!(eEGPdSj7@@&vivM*p;tiC{$B762;|lL+^4+ke9WF z>Nxop1||fn`l*BRyJdgNZC7EgO7YafNq2&1?f04d2iS{h8Ft()fNqIlaG`Ls zWRIy<<}0)aOgiSRP}kesO6AuY7K_C{tYmVJxt+3)l|Pwuq)e`XDzq3{3p8RFRYH4;h!Pu6I-OSU9Q-KZDm!0y zmdj9OfUKv;jr$?+>E3rc_8WxwkkbCMxq>KF{&~l@2RkBAwKH$wV9DF(QEHfaNL21= zjiBwx(-{^<4iz4GTgbcjftZYStpP$x9;>{Y?|!1a*IL+W1+XKUv1uQX}Et$ zE8vC=r~ancE_4&j6C`DnT4-SN5u|=r&re;Z;_1<(vW=i^)%96rSNq)Vy3KRssicyg z{`TC^U5~zjZqG!!%d@;O6(=65h4s;n@#sK|9}0<7>Dy?CrWw5Z+9l(^zsY@q<9HSR zT-Egt=<{mFcZj8Cz~Ex(J{bA>f*!@(+8SdYOqeJ=B3m$zpZrNNI`3*gZgT=#%*tJO zsC!ngvp19iQlbzYh4f1Dmh<$p1WYEjYCyE~><-zc#ai-lVSGlRm z*-nSXd>5YQ$TZoETfK1hvI+k@f|1S`wuYZ|yDWjVFZiz@DnL-Tv&H6<&!~MT+NqJ# z2vYUP(CB{&|2;hadHB-ImBV*ldT%#f0t>cg`^;JkJD=TPIf#C~X^-iX3J>X==au$R@vv5% zJlu2`h|8_b$mKH^-CUVTS#vQwXW04kH0j?*X#o;HC{&vudwBNva*UN#WRtn&gJgmv zmwAp94DEEXv_6dvGI7hM>1N4nj5ts{-IPUfBPY_|KhQ3^Un1`E`~LtMr! z+GM)0dg!DtYPHR0-Q!-X$?BJ0%9j#exH(`sgDI_D+9UkaveKx$g`%kp9tf6QY!#+# zMaf537MA)%4KD0>5#t`ZBDGyX&@$pRb2h<=8#9%zhZn?fvlycBNJHL)#xVy{wq;J* zWc!S>jok6s&%3&rM=nlx+Sgdt+Mi!zdCPUQ=`P|!{h-NCeYKT*4F!eEYy*QXCq_Su ze_F4@9q#otoepBdtJ^7jz;Bs{_+Y2$l0ku5${ZM2&koXZZLEK3pHka{rDtq&0Fo9R zwpL)X2?IuE(-^Btl{FY|Lkb&|v;|cWWrRB0TOoB&pPo%qWz=r&YIJ;0DM^D0cz+V? zRp+zCJ?3L@EJ!^u^T-80V0w zmi3LBM(fObj)tst_G1mL({2b|N`86&A(fo3N{moZ_j!gxio z>wV0i&Y zcj2t9IKbzIn%Ixp#x}-NppPZSMxeYU-Kf?^lvFt)>gMbt`-odlZ=;Gn>1k@paTgw&Y-7X$B(|}jv?c=qC%xdD5L4t+so211 zoEtM_LFDoVlJ^yrRr>(&UYV5bJJe3$^BRn<%{Ukk@>hBH%l7#I(6WGIb7>i|$a{u< z=dPS5c6s~B311eN4g{izH#~cf#tDw4I{~pYPdL(6hyxB!cfjFkjo{e33=N>MOb(bV zseZr7=G5ArlfF98^7Ptn;~)GEqp&CTTFagjgL^`9;Bwex>o=~}cu?EKnmmqbIKI|4 z*YVl!VIuLYn_D|}Vw65Q5Xv9wfpuz#Zn*YWH(>jVC*->7kOPBfE(a#h9G)1x7t{`P zwOJgvYCp?MyHF#iLKLiC^A+1X)N`vaZP|jnD*OwfyqEjl=nSZdG$*$S^PH-~Sr%SE zVmhV?S1~cyiQ-b!a2iEeZR8ZF7X_x7e0Ci^mF_l&nrv}sh4xBDVKE!o{yVOAh~N-S zwnFN4d)`F0_I|+}} zw#rw3knp-RRDD)ep>lcw;OR}fGS;mX1wNCmF0Sat>h_YUv&usk;2GIXK=LKe)b3kZ zj=Y{;yv+BI`Jh0`B^l9v+@@u^N4UvdA!nduE7~wMC0JHHYhmf+R@0A%`ztgn_;PDAoI9b?SmFo zaHvsCQ@KPqop|=Ab&TYaOMqv#34%HaW$W6KgNt6lP>fXUWz$7;hh(j6cLa12@Kq;) z!-By4-5TK5MB(MiCCKUF(e5_W3x|`lJDs^mzRf{$HiKBzttA2LzmB>Sqs`f*AK1h_ z88ME7mxg?eXEMs`#`-3XCXdHFsZX>-JSiiE&|epYoVx%V zV6@I^rT!{X76bIuT1c`hmBd{YkVlp61#xi+fMf2lZUm^y9<0*hoE5W9d1;{ms*7U?r>i?Nu#L20j!(43noxJ;1+7DLjw70)kBPtDS?c z>ilBmW<%%crku`(F|~B^Q+6v51YNacf)up{UR%k~<_%k%nxPjUnNp~Go!u>Eltj=> zdPX7OKA`~>pV5o6MlFA~x&%LAR@%Ywi6hCx$o>>EiFY3R%xK%74-ce9+VNB>xtyL_ zCj25`ap484X~b!4!tiS71E6_#*NImyM4 zuQIeE5Q$coai2AYt+~pb4^L2V4yL>4{=Xx#b^d=-p7`O3@nmX}3KStS&UT%)p3Qq2jQ4If~|iVnOw4N&Wm%Jbt|IEw!&%Dj=Q;<6cQ6@V70K2bI6s0(sM1>>>eh7tVF zg4?3qg=J*tw4s0|IP3;&@li<6{{mi9}HQ^linS4L%)4;2+U7TMg+08pftKmaSuExa_RXuBph zxOs!H(X`=KlewX@&9K{xXX8#egM3CU_H*0Y9Jh@yE^udYU%2FT?8x?zqC8No@#GYp zaO%|Zvg6aTRc}6;=*`7hNB32#pr&c%vP5j74vnSUw96@Z7)x9GH{)SOzoz4}ZRZ!7+Qy<*m71nh`-msPPc2Tl}~cy!hBADS38&Go<%cpA6V=i$z>&KBD4 zPgWa+->lp`XEw>X*3RU1cEWr$F1JqPZpS211E=$?Tn~>DHO{(LewPyx*4*L2D`#}L z6|szxYp=~Qb=-tn>$v_}1wFle0FQ@L@Jhzd-Yv_Z`|*!`oARKCMPh6)n(di}{_hHerg^+d1-}d>lF}FWkEV_$23#NXjQHTpj=?bT zqcT45lF2B>X`bc_3nTMVMTsAth@}wy=)s|Qbg*ZdP9^Q(Ku4fsdeW$tvl@lX@*#9r zo>4txVh$GWlVS>F5q6K#nk|rEmIQ~59hZ^dc$fqeJKA__ee}hF9g>D-29v3o$@t*G zWPE09d}b&W?1Gz$>hwNy>2KkiMf?hmMf{+IPXtO<5CT*4kjcTO_ zaPz!GAcSV%3#XTlpwI#yM6ePLr8O~3#>P`5emF6ivhxGsePsT4PA@ytpuI4E%Mje( zJ>cO7%)IeX4|rbh0R7I!tP*4S1_~( zjR;-go~{m(O_$4B9@GhDM>yM~s#y+F+f6W|7m*8up$3bht}KxgQ0N2{Ist`F zgz0?{X)`z5PXj}u@d`@eyV4hAB`APp$*9Im!X@dlG$Inq)9I7`o`dceEP+^sq zl~$gP#y0-TC=*pxT3JCz=RYuc8uT@4>60wfq|Njb_0)7x^;yQJqJd$NPNu05s+88t zCasOnHb;5D;P?XphR|o_oT{)`KL!v?&uyY2&g3;e+rr-CX*~aL$oB6F^M9x-5{lI9|Aw~o|4n(k=6}%I zmDTPG3vRJDhUwiQ9edzsPo&d*cZk>+X8XciO5g%RI79jr1f5BndX~awu?LF=MrumW z!}wBacA;QWFZD=Hxoz?w^(lO3lW*0)_{L>PHeHIUU26ZF-WP;-7|A}x-j`7nfeo-s zO)0Ao35wFUZD@Qjbz~w=@?}k{pj4Xz`PwILh+C{KR*6clq@@m~_`Xl2H}v&wi=|Sd zsHa!>vH_hWjhwi_m5}YjiNoFWTqin4`99_m{T;H)S0gzE(PLy1e@; zph-;b+&jlriB~SRYbluASMvpVzJg;;H(;J#0+t7kU&PY|>YT1(H`!$l2a1R$LW6=H zrZL01I&g;lT^dA( zDZL^Nei1{_R4p06`KBc03tRcJs>NI)pPdk4c|ZV2Wg}KuO_Yt);;@>*S$Z9V*L!c$ zHGI7T+*xC|$zEcz7H_re+lPksIb(r{)jWGxfIZjx|2)=iX0m0IB*_(pkU1+tG zYVqQ>WkQ51zju%cF8e{E?8D394Ydgpv&u5Zn5ysxGb+zCv!MGJVVn zi9Vtxb~;)26y1i^^m+6VH8qN2fdI{>D7?C!wdFTpJbCIY+34EXU{qNjppDM08T(e- z~;i)WXaW$ESQz@G-%$8(M18q>5F`d z@sL2!S5T2NBTxEJU6&R0sOnJu)u78(B8dZ5aYt@zuuDyFu1PxCC#NlemFhm~Bn8(r zyOAMQ#}U?*>oQBY7bzYdc8-~+SQ7=ICib~J9o1%UFsC(g_jb&1jn_pmeD-;myp+C0 z0uyf0?4ebS?o07s`cQVdt+2wN!t}3IHKai!L{&p_ zRlAsUTw?Jky4WN^N`|RZX>9j|bBx#1*(5QJB9;y^sG4E6`If2iZ&_KDDgw$JGhd5~ zA&&v9oi6>&bN$6y>QLpn9b&ZGM-3nrDXa5EKS^iIfYo}1TCg1=kX=5jQj3Zd2-dQS z&|o|?v@>s^pRU1~y&_71ElblyyOedpT)olkVLmpqalBY?!z$` z1wfyxYG?;Y6LTJKf67$zxa%`oO$P!2cD`jkU6~8a8@V>!PoOZ1YR8VcxbgB`Wieb% zEwi1_CMwKHNpS&Jw~1<#b^+J0A z-17h1jHh1zifs^v)TkN=Ov4|In*rO=6P-a)ZD@Xe}`vEFTiuQH&E2mDKQkIvOrNmAt@eDRdjKrB- zp`b;cO49r_57N{wL$Hp#$-a!Ld^Or|wR-{O^i% zMYiPsW<04m&D2O5w|V9?a;0uoK}+BhKsWB0qZFc>=O^_X3oVQpodNh11!o8ohJ35M zZm{2ktdde#=s=dpm<=R{2J$Oi0W`BU@QT@t^k$R*X=@-51Tl_(sc*WTaV6!PX^=<5 zb4}8_>wC_fp$0-OP|9T(YU(W~PCMD}x!MH1a9mM_jD=#sNP{*=54MrnvN7MIw9Zv3 zrJi7LVPPS_#v-SAz$oYKA$i97f2H-G=(+XaSi%1@)LnD_b9Z-lcx(J`#J3{!{2hX zXcw@5QBWi}>sdvR3;|P#Tgf3NVDJ*%ub0(CNvvlCP=coT+c>gax(oip^T zW>Tw|vvn|ac~-?6RZ=TxbnmIn3gEgj8~Ij(${Mg%n8?%vT3#<&)9H3HksO~Ou|mOE zn9$0Dw82AKNyGCHS#+Z45P2rES-d&rr8qWm<5x-^MT_4=x-y69gA)_cYyqY>O*xPn zjn3;i_L7_&jFz+Xr?M?EOo+Op4SLF_3fH0fG*kq#f!Ji695l6=1H*%M&8$>Pof+0} zN8M?T@oJ@1t;`JRWujV;2!zp#`kA zA~Jb`?ph`CMWd|EFadz*Y((z5#)gJiBcPW^uxJ#Fyg`BoQY3gNLV_cQ+4=P$V5`Jf zB&^b(V?*(QgCp$s45SZ@ADZNE2L=Yk&x4c6q0v$HGI}t^PM|}|43GN>UycCy;UN;t z@`^a?FyyR5f>H+l$clAPR;-b1YQ2njxS%7*BMiv7K+N#SL+YkAlu{f9gWXyg+dST` z25kv(<5U7lKZ@Fj z5013a#MtFf9^(|a3$st;ICPIzh=g&ai_=z_|IFuf{tMb-mJFjnU!bRQg*^X~&Yet` zL^g9yD+oA7L9>6Qs}%vhs^?g0E|V1*;AghPUo67XkP0vx&B46WlZfo;<~8S)ri?^O z$k893Ds5r0Aylp+(B(GMBY=ybB(!F(r~dFkxwLX#_n4IB6Ps-&alHWA9$SZ{fGEo3 z_`&30JPLC_q6nf8Cl8;hz${#$nPvv(b7nM~BX-SOU#6p0r4b(DxrFy@G}CxCn%SC-f;k*&Zb4qk zWze^#$J9!dr}`A-*+7q(D#xcPx$S3g;u11{TYPK?W(iweVj>OSnfB9ITWOff5~B?A zNZF{Ch{{4xQ4@t}PdeP2b_SB6+C%jrc8s2tRmH?9m23npAOcXWwp?IZ3eT1GER89YG;Tue z*U~v4#R`O)1A3Ht=YUXi^Syepunw}!t(q*3=FP3Hc}dM|iWBs#(VMN7do%N;UKq8& z4`KLQ>4mY=Th5!kd40C`rKLRl)#yK}3n~8QOwC?|LEy~U|5mjB+IIRi<5*$;r#rmc zwf__D=U4F^7s=dn!?A04* z&JgUvwvsK_#ZR7AV9y4u9^hu1fSa`X)*;xI;nzi>8ryGk%65~+T}ihbO$@ALv8}b% zvPpe$zQ9gJOS&#JqrM8<*buv7rOvL=b3oEENjvW0J5UmZ8}A| z8`-{j7{mt;%tvs4FHB?i(~CnD>AH=r;rNt$oa6sx`o`V*X+Nt!{}t)%+`V=FYcrnO z{?8fN4d#J0oc{}lw$A@;%H!St)s4LVVJ-dN-5J^H|IK*n_CL4rnl#Ms`f#kY|I-z& z@&BjyKX0x7&irFXDaL*#69)%I6N5x;4+alK27|$&)DStmKXqUfmwjZCMsf%S<74zT z1XVh_vJjyMR#M5}A_59wN&d5)1%L?TDmk@Z>BBVq50uk>8t$gAqE`x9KP)w`(n~#{ z-KR00GCKl9_!Sc9NJbO-f-E;HNv~fjYlWz4R+ixFoTgP&GFR4SqiVy0HNfP7tZAw= zFbak?TC4=|J&4y&%xjf2!Q$;0r21r39mEK4#Y#Kgcc`*>Z^a5Ph0WJ9%MfprTT)L^gO`ja;kf4<@k_|F9|G9GG`Ot~;$yORmn8_OPGEzS3VF=H{IM)J2tr8UHG{qdQ_HzT7 zHLfjCSP9~KR)k+Er?bbka&TWB4RSLu#`dWF1Jyi9u@81bR}I?C&O5;lUODLvjuFs) z^WY)*Y67)?l)Xv4z(Ba=iX<*vqJ@ikjDinxB#elP)CoeYj#Mf+dG~>Q31jI}zcN`Z zl?+oO3mTbApJc88vj%SF3aLltbgi5&XXloBph6{D4nt%Y(xz#_2gJcNZE`SUwLFV% z)sP;hDVcBprlByrNAO2P;XFVy0pPNRplP##1hg#SbCAiZg_YS!1Mcl)WWtObETI7y zg|6AJpcK@L3`Y;m*2XTuVR56V z---aoZ_fc#SOdbSLmg2VYQ4g1JR7pAOX0E#b81?VutFFuE!0znnY>Nig`xBqPBR4U zfe#|28G|7OQ)lQY!-+OAmgYC|xM_vu+jgddnP4`^*whLR#q#=;oCo}{j6jSMjv`zK zM>v=X2W@`FKwVJEj-<#70>ZEd#)ynj3`dSJQU_xs=-_`pImJ*i)Dd;r#vKv3BNlFJ ze7hu?kXu}wxxUf`lS|U2Ge(uIK1((7n)*SdVdWrJ`Pn%wdwgHDtVh|bSLUlty0)xU z3KCEqlR;@`Dgj>dfGg80sfU%NU~Gf6yN0*TMAb-0B@244G8a|%>`@6@p;9?XYe>f~ z{HAx$I8;@70Zk{rfF=?QNALog&aR$t$bG3O%mxe$1?wgfBZxNv?KQmk&Q|$-R2%3g zPa!*aUH#u))2$oF3g`bjI(CO^?tkjs(*HN*+0y^F^#4C&{hwEzsr>w9OYi?P()+1H zHwHuQAK<^9+y(;y$+6~9B?E$6bKbHYoORnltJ8L1iw=Ztiw|Ku;NqI;sq%|`P*dXq7sUZ2y5(+wq(HfhO(YOG)N6^D`n+C% z^$`?Dy%U(cm`j&)3ZNs2;JAeZ$^?WJLu$ZmS%X5xY-Ir>jM1wXOpWRBCVKAGA%4Lo zK1rJxdYGV#8Al+~QixN`DnzQF<6sq*`=HnI`x>!6p+Gng36MmEECAdbKbVrErwKAf zWsaljpjB;v)|SYK*p|w!F65`i@MK0tBcc%ED;x8mZ=1@hMkehe+SPapBhQS~r8MLw ziCMB_RB0SHdLG3Ka7HguKi+_hgn}F3Uns%5(7#9cSdy@kMrTT>yGba3C5xWMEaC0s z4V*Qqc(SEp^)Ipsttp|k^dO`)MImZynqp+k6@-Pw%Egu_xr#M$i_=21W33sSOzjK4 zq*@H35_l9wY(*5z^~ZAQQiY9&1*3c%&uBF0cqpJW#2J=whC71?(q%8C2lOH})-0k) zr)Zrh;$iIZWJeRILK3QuJ)(VGo~ZB~FGbe`+zuHotlPCL!tHdytplj3wW#12s zbqIS5#j8!hF3~JE`eD6nR>%asKt=E-s}lTMaC4QlghBY$GR8GHnFKKPd{N8sp5Orv zhtfs8V31T5LmcAGf$4IEo8oH5Rh`ARGd?0#!;AZ^MH8*3SU8D#;z=ud0T;$S$Fp%r zwi0c+BCRO&LdEF8EbU|C?UNI+1MR8(v9Zf1FY~BY)?S=}oCqlVJ~opIjs>ldg>~>Y zOOA_EW$A)RXOHY0p_f#M=#N5vmQ5kr%ceLq<_ZwmP|jf+qtxprctuvp)_s>y?WXU zXTDfvHUeHSm@f$-FfuVpRX>Ty7??$88Ya6YRl|dh(faSH-k9|YTl3vy;wx$bY=|9$!Povy`Bxz zO@LX*k-UBqd6O_Xk9H4skX?8`rAt7uQW+2N+a$pbfTq#w()pE!6lj_7$r%|Ei70N@ zqoc}AE3qKq#^V}GjE=$&OV`?C0?LGKjbUC})KH$&%Fv!1GwMvH><7!4(Kbbdj`Yish(Pq)X zYR>u5#STDcs(6X0Nk=e_6F;^i2&`jjg@OVQbldq&)XvYwxPi0*{G3E4wdBt6{L-U1sr};zQ+OR$GB%bvLdJ(lZ0rcRJTW%pC-K7*$@t_X8BZ#S0~4c(IHV=U21gGL zCB{a`0F=WBTce2si4*`$jT1!3K_%jo2<$*SIk+EQV*`oNMCyoN8BV0e5a#fBlElbF zESX9S9vqD&VF)EB#wX)|eh9#hCB}x6fF*t)K9&j)KnsZ^ekHt-$^Eg>QN*Rh4np;l zSV1y4K5-W5|~Q&!PKiOIO1#FB|gq{wh`{D5CUdP0eD3IxiH z#TgW&HF0zaWWo1?lW_|m8H&e70T%Snn4|x!em(1^%(LmUC!3e3C9}(R+3O;q&YrHl zJssgKm%TIn)VKdROa$w~(b)bM?&=PA*4Y1ccW>GMHsiT|Vr=AmB5-+L&kS5oo2KlPy>{@2AX*!D&LjyJTN^QH?f_`FI! z{*2gVmv!&G|3}JCzI4l;f4b|I$bJ9#%LiWm;(xgR5#J48y5$SxesaUpcD>X856@LE zctiUI=UqU0@9F(NA9(!VKlIouQjgw$)1&?!cm2<2ZhrR7Kl_glAFBT1^wh$Kr>--f zwJ-L6&w2QPbAJEI*S+VwZ`|?7^UmqH@D=K1&-}vp(;qnYyX#y2_OJFm=e@6vJ@~*m zw_R}W*Z$_(iIHc2=;BA-6Ki=@@!AW1I!&$`Z#n2-y^?i zZF$#y7rlG&+=1)N^B$Rh;90j_`^lf}&3`F$=QrNca{7x`{a5e%-m?Aa*B(3nRp0wX z%VqoDoBBn|(;gVPclsmx6F>O(QwzH8`{`#s_OUl!@bP1JJna+r+;!m>F8t2jchAnw zzV(e|YRQfB83;9C%0PvCp-f zzwr0(C)fVnt6$x_@bC*?_(K0%uWNbd*G~TU^MCQqug!kq9{*o|HTvkik^I+R_)z=z zZogpQ9Uu7B<>!9$n$XwxzHP_!q5KoS|Mjn@KK1|JwdacIWb)>==eOKAyf+Z2{O*z8 zz3#)ij^2Kj{aNaIS<_Z`tg_F zdiwO~TW-1Th8rRm{?)@fo`2VeyYBwQZ7=%r&)?oYaL+yW96562rkid$?|uEtkKOf- zuCErld#|{w7d>qc=Y%e5}y&qZ_;Kc+Z>fdsV3S zn#cZQ^3ji89gV-W^`}>VCpPum&uJGOy7lUZzID^(hY!E~wQqdwYhQct!&jzneDj;$ zR4$hveDJ})4qkol>8ahZb07U-XW!pH<3*n&kNSR=-|^YwPrv)I+papjckkXqAD#Zk zz2*o1b?|}2r7t@1$Ipj`$*q(wYcZb3$qgkFCQL$;%|Fj zG28vsub=bjmyXO2x19g@J8n7p*_SV6GC%pkv-kNwaK~qtAHV3LivaJtU;eAaFTeHr z{>N^)?Y7_C^tP+N_3J&IKWLwR`oar-^}5I3ar?=KE^67aW5?XBckjP?=GGfu@aT`f z`A>%~_6;38_^O`!jB_vh_~`R*I{EOu+upPM+m7t?Wb(fs`rhZBd-n~0apMUf-O|$D zmf!z8zwh=(e|Rc>?wh}yy7J1CzkB4zcf9(U=U(%n51seE*S+`^pMKx_e*C33ZvRo@ z){*mCKWbe1hoi?PrxKa;iJdK<``Nc|KJ<~pA3JgXonQINOAcJn`pqZ4f8WE=m;L7B z{=fYB_E&y);SD2Kq!P*xKC}1nA1r*LV|ZY&`l`F1d)dwJy5hzYvDp7-?>*qDe%r_K zV%Q)5-s8G!3T!Tv6T6n8US17KN=$rSMzGS+S%5Om zR@t78PpV}^@!$*z`uh5Ib}x>}dYrs5xa|gEBZfiAXsBi(pF@e8L0H(t$h-QG!RP!5 z%lHANX5V_LK@+ph!V`6l$aq)=^>pAeA4dG*5uuCQeSNi1H{KbrK6vmTZ2HHyB`jJ& zL057yD0KbE74J5HJZz|dfPnt~e!Uc4PG*kWlce6ptrxDmWPNSAjC;+O53K{cxSft} zB4%6hFruzc4KHsT;=#qd-{*Z-QCPd++&QO;;mxSTu@(j9W+N|6{jFP{y}06i)+96i z&>;(3Tj5V)^&_|x)%46vvA4#$x^<5-H!WMYIfg?Z0ky@?&(GR=70T1jWKYa1xi?wM zR?E1(C?g~X7~I~lA^q~Lo6I{-AC}Mfv0w>L4{9V`q8EcteY@{d`dZiHma*7Z0Qvx@ zaEWh|cDsMD=U&Q%0^sx5^Ymd|Jw3A%Nxvx2OgVFBAs~J)5rN=D2O55cG_VcPL@$C>m~?rt&LOWJyRQjS;UHg43F-5ZtnyowZPc&tE1=TvuIfwj%~;aka1?58e#4UKVY zw&z6of3Rjl-Kn%$k;=imLp|hDLzJ}d$py7{?|$#*zSY-yA)~n|A&gMbG3NXJQ6`|H zLSI+M78Mn}xwEIkr+i|xx9PaNn2L(SO8oFrHvbR&hXFXrY^@y9b*TyXW1-*mSJd$c zzWrn<%HGG z*{-d9_u}@_a-a6p>})lc+X)Q~4L_#7nE@O-_-a_R>b0XyK98VgQQh(V`@J+Yd|h0I z#s=g!5ue#wx3sm11uHK=#m63f6zFz(;?lLaYe566xVhKx@c~+ZRZ->qVVOD}ex7RC z2dbL5yccU)25Q{%hSke~fnk<=svC(tW{hfn{v7jD$iNbhfA_4={;ct_k$UH!G8jxE zhfLVW+d}(_rE3+$1q5!__ANx&;BP-o;?QM%d7bd+q3Gtw@w#H%t_(?=Rh-)~SD4Pd z3R=O8UhbN>f635GW!Jvu%0q(JmhkcNtzREkeCKj?l@`a;1}*=h&aKR>>?6%K-nKD2 zzjR*{uTS96KpCX&OG;|H)H~i>M zTBQEnd`Iy%6b7}NFTpK&$t#Yt28D5P598u87cP5`I(YD4v&)@s_XhoJY#vclvvQlu zVHu*^7S@196dH?lxOnvaz{!dj?9!N(EAP~pw0Saxlo_S4#K&@2Iy)~zRaI5-MSZad z51+gqHj3IpvgX-emz=!##x3KMPN_w?%`dNwJ}Xo%COSLeaO+Vl2eArl9_ju&1C|~R zjONi`1r!30U|p!AV^1s-_tJIux0j2D-cE2z;#!g|lV4G@h55WnszxNAN~Ks#i!0}S z1Jp)?Gi7BMlz%|@l_-@h>3D-wOg^Ca`655n92T(}zBRowHvC3Go`?mYehvzCHlOr) z?*HL(^rNf(rvQ&CIf0qU->@o?C>J7hdyuS_$cAM=XYSwmW9-=FTWU|Qg>*j2zrzn`Jy9BoNw7AaYqNg(ZtrdYc`+~Ek8Vtej;=7 zu$3VL2fusrqYTL-;@e9U<%3$U2DN7~@o%#^W?q)nz)8> zPfu*YvSg@N6f3VmacB-aE3B`tj~IC%JoR-*EK+;8F}!9x;q{$8mv4Q#Jv=yA&uYN4 zHb^DHzUIvlTtj2kkKt<(KR-^J^2%g@DO&Rfg)Sok{!l4F*TJy5=f>y;4-bI{4#jMb|~UAfA}zuEEDo4)w3< z<`GPg&fkyf>p!daeWGc#i_1nEyxnHo#bbpPH>V#F%j*L@N#6t3p_a#Ce4k&Rc&tdW z6v5xVae>$p$QWwO`B?8{nGXy1;04h%{K%bU3sTgs4t3WuYQ}BW8#)lqEwdvb#?ref z+p+C(j=Yz3$f;F{C!8g6)~3N>%x z*x0m0-d(pyH>uB1|J0pyNB+T6cdW~spvuUJKvUDk_+@IWYC{H5<{e%(?;Bs1dAEre zu-mi-yGQQPX4xZpJ4m*4;N zOw`DaZ`>P1PDd4g+@gw0Capy+lxAL-86PKPSXJw4byye0xuxzoYH8EHlNv9JTyEU_ zIr&)9vB8x+u4{p^hX;4m&xu_P4QnSRZ0uaOUUpiJs}pKGe&oqnGj54p^%Y&`+nG6T z|7bp?74dD@vE1j_`^GQ3qp+??wQ6A_lMM|j2JBl~-4}kfi;pTc!futSKl8aKqABZ` z3fZ%*va;wT`k3Wb$Csh~mhWofZ7X~pJg67b)YrUU&9eYyAW-17Ua9Qfs~ahM_GI4G zu3nBOpDSSH*EzLhiKr&WDk0@)W}W3~oP)O7n^I7ke)4@ve6?Yuhn-TQJB>75~#U&A$p zQ;tXVYE!mq%If_GzVP~A&15!^GxStn5r<`IWO`WTy>~-rbF(yHrz3`|7Dm1w+snY8 zz$N)TSF0!m`@Zwl`LxfYO?(|?1k)TfM{Oa!lLk}f4>@$ zFEKF@2xa3a`a(+{q*OQ=r4oqvNAH3 zPh0GDP~5d$c?(`Y0hE@|o69$^R(d{GNH#I$)1Ml;iV_#nepTALHIRMV_hnDkzOEG04 z?w!s0MCpkzxpLFW4|V|oFS~1~8Pc;EcQBO*n{BG^Mp_^K?jCdrp_U_)5MuvtZrKL6JtI7Zqe`jBA zXJvp^r9#vuu4%RD?-{#xaVGF=CYpI0jo(^xFXiJ@i&eY`z9jj_aDt>9N9K?{(Iilp zk)t=6qpGazLsjoh^070@(sjdE2QC5Ld+)n<6H$aMVq31CFDmkXbX;EG(W9PgwKt_s zzdf6i-CpuePctrIVdV`VRMS7Fc9tl%=B_)&{P8H%Szw$aUq)XM(3dgVQWwJ&iDVBsnzq}Umq$d}TKC_aKkEQy{ zViVS4yTa%n-Wx*=%Ue|&IW#9GCNdR#a}S4mzu$v8UXlZNKF5!L(3;>Jbl$dY>f5ax zX6fL=Imbv#V~jVl*=0zuo1XGgs5enG5NGTW&dGY%bouMifJ+MvQV;N{JDHoKoW58% zGdB~_0u@brdNe-Wo*WYfe1En>FBG1v-kiwHd(E*``njQ}kM+yVdshl<7r(+6owei@ zcWkvyB>4H>Ug~jUjPD$m(DnDP2^L9VhAYZD`T;^_wJ4yce>aPcTULaH@n+PQ{-?d)Cq`eddVh)dS$XNTmwv_DA`7ez zoNJC{vTe+f(zxGjF(_5Ugc3GgRdHsK#8L+fi<}Hwwk;0scNKStJKuCD42 z^71Ok#k97z@=kv^f;wKU6!CTNL+gboAHmlS%$b{V7Mv7V8m(+GxG)6ue^FR4q7;1iGt9(_-G72fDcPK%+{)z#(Xte-}!#0j}1 z)s}~Re0Si8I;xsSPhX96rmur|Io3>~cJ1a0B~;A*wPwmT=;5CNs5_gw9L^VbeL9oE zj!roG$eq}6R*Et4*{)r?_U_&L`rWESTu0P`FBY9Vxq`ncFDW|F!1B~aFJWcIsOPJ- zjtE75uzmmpYpCSI;X6bc8F1&z%9O+|pipI_3tv^+hgL6R5a%)i!ZJ-w#?ZF&I(w$R zIWw5shozpDKw;~a%Y5t%`&!!6Xt-jl&HLf9&oYPX^;V)@AF=%^YM7UjtgX@iV@hgj z3%bvhg|}mTxyHWS)A{+e_wL1qiK!sjB+w(pVCQlwtvvS(%082o$zs_mu!*{Nmm)h+S|dL=-aou zQO9>A**Zn0Z;J$jH+Y@-Om#i&O@EO-gj~~7&_S`3(r>C{Gyr4kokXvFg8!C(cdQ6Mro2mMy%Pdl> zmDVggd*;mUJ$tlb1oTn)Uowd|+1T0lrKEh@?eO_(YU)+g#4ZkTgLUgXGCCF>Tv>SZ zAUYth^4z(H4|-T*^eq!dS6Po<)IYSu+R}32t6d5D4o3R=9PbYs8L2Z%A2Y70sZk5( zzGZ78e>Lpluv~Kq`=QOZ&g$iwE-pX4M%%_lu=2#sr(@9Fqo(A-cYpC!IV zZ|$k+XRYnZN;T@{Zi9p{*BelphT& z;py4;Wa;A&Ng5(gp4eq0H3l_P$x}qX$zsiL)56Q*r1TN)NV9pIm&D>_Yjm;f^CxSv&pc6LRvMf%F9)BZegV)iy;@!sE zcI6F<6?b=Al#kEbrf9WKu?thfzYRY*pJvgrvUHnISlE$>uMR)Qdj?Ze4U-?mF4$U? z{;h96ik1IDYxv092YXivYd%%2PT_y=bg3C<6d&99j0XiU@s*H|iEU16m!KvlS})l0 zkwO~xxihh7-HHXk9H}xojb?!jW}y-xrz_H7?Klj7;pDj))nF` zRmZ59^XSg)B+W~+<KR)nq?tu3ZC|&3 z{m@U_%fT^ylA@x9o~Ab?-n@M)i8}4*rBcShLt-8%+^URqgBiF=FJ;{v$faqm>9Nn-8|GN`!S?X^mP`~eZVGn zUZ2>ELJO^QWq!@N{LO;ytbj|5EgLp|4NAQ`?ZAUW=?XJMUTL{L$#If@Mg=V9k~?>BC*G656r; zJCZRIZx5kz!6{Um3tJ`Z%I^PQXIAGdW#zxk{q`v*14=sBr~6rQb~GI2Wes|J45fZfQ$Ne@<&CM&KY!#Ud}HBnX+F7%%Z{Dh3orp!LyNncPemHG zFH;wfLpj(VmO;9yP;-|E%pTg4YAqINdfDrG7T@9yhTS5j5os653| zS9ic>Pv?Mae7x4g9zL~}ThZ3IJTDo8JKj$FzN`50S)sk5A$zE6Urb4!`j0PG%gw*0=L=jtAunc=>eo}OpV490 zIlZ)+p=gHzw>YZ#&7B^G>K$kuopkk|0a7tS1~se(-8{Vc4mKhv?iH6>zn)9E;~CpW#?kluD{Y8mU7svy*B2f znxZZ0gLP{`zE{|k|L|r(;jEJd4|DUho;<~&)+}KW5WQxwf}fdbn{#;o&HMM!7A7wi zh;!+wem;8CJf4BnxWOP|oxzIYj)B~~YuA5HY70jvqPc@t7IZ5+SNcnb8dN{yPGXSK zlVu)%99MRD-%v+|^YzeT=UY2pk=@>KcI@{jQSx#pk8r@uG7O-^=A%GW&|9AK)rXM@qk>)%H(g+(d6 z>rvxh`d6TeItWeK%agd4IA8Hn$FbBMOzaO>dS~|r-{+qWVhS`_H!|ZcGCtqDNm0;S z6I+wqKJ|6~3Ds+S%m-hcYU5=J(&@`#jxjxzw|ht`S5dJ9dDw=6;__^F&Y^jKCw!Fti!M2DY%|J?h|MrcEj#j45S zYs)%GW}O~6C&VNQWqI^3J1v)W7cx8XqQmoWLBSg1jSt*3b@RT|J0Gws7O3~S($*rU z)O#CScetQQU0suzQ`?E>l~*!j;3QCV$%s z{?MTpJ;dt)=uII6^Mh~h@foo!v6HwfUYA&0ciw7hsB?mZ(rdcCQuqLK5_9cJ;eFiV z&##7!UTMoSfX$6*(Ha zke5f^>+mKoapE&;8SK%kN*y^rzr3_34yEkfyE(G*B+27x|I>VviN{}B zZ9Rld?52NCJq4n=!M7@sC1>jE3qRfn`EnxUW~rUG+V@Xyoqx(0i0PskFPW}p%zD~2 zy)&zQ@W_utqiR>I&YC_b5tropoZi`$EPb`B_2elgoQm&@-Is4FofUg_Y6G_HwHh;H z%#{R|I-gXb{j1aDf_*eKH7mu_Mn)#ngp&Yo#+5)&taGnJZCPH*)ZCaPSa@*X1Gk6w z`&7NGzm1PeCzu=Teb@Im_eR8ML4hb%foVtGpsf38lbmcH1*2WN(o@uw0)9raX|B*r zEZ&`*{5EQe_ggSFb2p~$`N+Haw6rw7@IHRxARmT7?sQjW02BXdyl8l2#kTt1rml5L zl)l(Pw#IjT#*LqIbhEAqO3!QEbQ#UzYcCEifri)u{b?y zduxqikXN(~XH`&PGLK-!$HRdEFEpnF4zAu|tHu{1*ZlLLqHw}FuOD~!p1*uu#;#NA z-SV^HJ@t7nJ2V+%NVvTR4)AXFf1RxwQJoPGE4OweewlmlM_vO$QqspRHuM+M2p^x` zTR(>QeRuP|kbf!2bh!Kx=6OO^YqO}Bn9gS=;!gfyai!KP-hI25jJh4$EG0FOk{4So za)-zFxpYOuH`CmLs}*JIV>yy)b5D4G8?g4{W!T)ieEISw)o%_tYEhA2#O(G7=H}@M zM~=VoL1mtk`^=}qq$euaTfR&!)bn;icJ5^EMON9BR<9>`r{UaOiwgD74hY$ZTqR^S z_N9U`o}|>q5b-6OHIH(bw@w14@xxkT@;Cc9r>Urpa$hEv#ekReRB~`+k;HWkEsn?^ zlViGh0YAS_OlCHyE;Y?Ma!_cbW?_4iO6h)*abo8%rv%gSb#)1(U8Jjl@3f547mp=H zHLot1n3w>(!Q5PxvMScVJFo4_u9ln*4H1 z!S}@(lT3DY_AFk;%gE)a2GzVLjtb6`r{IfIQ zOX&5fs1=8IQL{q@9fKAn{T=g*&44jx41h?%avfawLizVSDA%p~lC)$`eL z3Yv-cj;jpChbP2v+&+53a_UL`%90YUvEi3GeJZHeYo}OGy?F7Wq(o-u7K3|Q=WXNq zrJVhG=C-yT6&|?CqOs}l zPe9!{3El0#sZhWpg_2EOo zR{^b+Eqitag^#sjrLIdmXjhgE+=<-Cq~w0X<<4%S49Oeg-AN~uL;TYFfL20J$4+s7 z?DabC;JMAt?%UT6y=RwHy^32Hx{5!ZYYC0hk_eluDx38bk2f%3+E>P%txmHp;i0({N*yW=eAj?EuNQa_uP2n zXcbr%)?b*D?s7|l?PRg8fx&|htru`O9Jly3juk6b+<*4gl;yL&#UXrC_Vt(7MrCA) zt5#VvCE8bOCs;-vCl4l{!1n6#gzvuOct`KRph8&SlhXzUpFbZs-FN2P!mj#Noic}+ z+J|0bqT)oP>sniZ82PfPnOTlXSjj8QGNF~4IQxK#1L=3NGVKqYa3oKX38syY;^JPE z$Xuv(wOyqXBFxKJT_V0KfhRXNuBYdYrRDG%X>|Cf*Ox>@4!M_Jw5?|3-rN|vS}*|! z{kXZfmadl3PATKcySbn3wI-8=+if?Q{zp2Gb}aROVaI#Oi1`rK$?EAgE8K&VZw z-23E=B?x8w}C&rqPggp1_6hqHMn^QYJoB_$;d4Gl@$Qj$*BpKmzbd&nnT z<<)Tmt9Y&HN+$_j*4CC5hpS`}W#wxnB_k8PIU$NSJN#0M;@Mv3hN1wUA%WvjdSg?Q zdO)|fp`l?L!0)$j%YD&EI-OS6(osQFj~w^+^z=;ORb^SSrlo@D9H6L=cKXu6P!YB4 z6H9oS$-$a@wKFgMZiNF8`O~wCy(QvJN3nU)(?5@!dwF_R^VF9NUaBuBu(PqTvA4H( zbaXT~_iu9y*}qQF@(uxj`0>?^h;PFZ+WXbwp0C;77N|l#$@(PTNjv7iy@7!NBSXVW z4ppgHS>lTc8ZqCxqHh%ynd_&VJb6+liEF`v1$*e za`6{%g$I>)p~63L4Yo{&0%i^H-mbm8gkjh8ynm2?jb6vl*O8Ht=H}*;C((tCNzdY6 zH4phSaSR(XZn0Y9+1;^+Y3cFQhuBTMyCXf6)S1c8d0($p+2^j>C$-_pg@Q@Gv52t~ zd!s6Gw$;;oo;F_HX3gQ_>I^*9+`)J1G*Kv&3R!0x83$)lL7@$N!JE)Ms8^i3hJgq4 z(0ZOk5*a=KjmEg)g9$jis=uFapi77d`(zT=D7Y8bK*v=3lID)MzjOcZFZX}boo)S} z!uX5*-&pCn`@f~7|GEF~Z~6R_|KXqf5C7zU_$U9v|6cwFgnK9%AO124??35Z|H&8e ze=7a!tfYT4c@~5)lW+e!X<*sG%m6boQv6{?SOYSgvvp1izi^-sczZXTFoG_jDDncr z13r2U9)1RoHhY4{@WB)Mv|O>2gtPciF!=$56?kZ$F8{1Qk|>jwkCs47NE<{70xv9q z?$ZGZK`8^--Glt#%oku%f?xuY)$v!^8xh(e4zHBFq%^(nD=06i0LZtL+00x52vy0|D>@SbN7(c?5xx z4kd{LI7FV%h4UnYrNG1%U{Nx3aXTe#EW0n@al@zMA)Sc_ub%;vNcw~!C!^^wB)Ypp z*(K2?^eIz;alixggcDPM*;9i8Y55Ms*;T--5NedXs?ZN{_7G13&Xbb*0)P&hG??8; zK?E|K!h&9>17+O7+?#0y6QmHpyb(lyxEdvm30Pf{-OLXU=E5Kbg1G|dnujxe;AdsxrH%=u zw@AJeIEe&3gV9J&nw@N5rlz8|aj>SMw{sMJqD$$4bjXd8E0{)bDER?Ia2K>2ArLSy zfG0x99`a{`iJc*s{%-CP{(uPqGYjKDN(1^IqBta!R91$wk|KB@J^C{jS_)2I1G+Nc z{}S?G3SKZHwGW9%Q(&_*FQaYz2%*p;UzaenAD)tb0(RK`bv25Xmc+_R$|_LL($5PN zNzn|epkL-`MiNqx&`8_t7?`iaf$v!G_IHH2MI_PlumhdP0wP1_wNUak&&|(Fx$Ovz zq25A87cbCf__YT0B1LmU7b?xTIt&zyKs-4p5PIx~523w+6hD{)+YeGuV1J=j@qvL* zG8$?ngwl%Y-)MPa(f4B{Y&KD1&; zwrIfr@k2uwynz7Rf&wWSrojFN`9m%y;+TRSRv?^@ClDAOe=sW#ocM}jL1CvBN|^=c zLI(A#i>nVFY8=WkMr)cL7ZTWGKwJG%_-NPEp)r3ZV^CpeG@y=y#D$$SM5`j=j4=Ff z;Ubxueg)T(BD_GS$#{rqXlOwGJ5%-KDfX*aB_{?VLgcE#6e+we$Ft~=1 z!AN)hb^)UNre*rKf6_KBZiGh<{Pv3x{GV7k2s$*3gxQf8a@!;NPdIFr7*h=h=!hV^ zFn5@!y{Ak}&IS!-!GlGY>b6l;7n~l0G$yAY=7Ixs61_HpO#s{|;CLYchCd!ha1R51xsWLlHXU8S zl>U&g!PUf(;Xv4dCc}spq^dJ;dKnB714&Se;-CTq4Ku+V$ukN1`QRIPoLtB*w7M`# z1ULsJ08|of3uXd@Wt^JRjoJ?a67Pd4_1s;8d?>FdY6hSWVsZe5>_-N#JM{z9ED*5( z!3u_iN75sT%wk5DU>6`52DK6b33Og(X&5$|7=sszQY9Ax3IPo9B>LbH!w0V0kfGFg z@P#8d+}g!nv6QpC20)f|_5DuPZoj20WUH)=a(u%pb(5U_MEx z1|`iP%t#d6!14fgFq~N^&Z`J#3pxG0Kv0fFm_yAJfo98KfW_4zR!C zG_^B>jD5?0#pzriXc(h4Uvp_35~|k2b|I($`Clp)Ykmq z01o;Ca0s8#1e6{Sc%K&JCIEijZxzbF=j6}tfl+-wst@)Xz@Sn14|@5K^`Y`S9DL2| z$1>#E^O{gHOf2@V?)CX673M#m|HNnR{x3iTr2exoz+GOO{ z{|oxe+W#ddBddTy%l~K5nE&(t`2Mf?#~=PGiTlsM`2GGrSy^dduxF0H{3fjIKl}gw zj*pZmJ7sl9;xD$|0bazP-0}$cJ{m!QyBVl7BXK`FnwCKygA<`kpFiuWKz1~oAR1vo z*d9vHwudrGax?9rC;(UxS>QseAU?aN+Kgvz;6fYyGXZcR3|fMd^c0|bi~yhc%q1uk zst-PNNAtt$v4As(F}Bfg-l}71WngCNY-(d7f{u(t&w7SdLCZ^H=~}~4*A$@!0S}7c z4s-x+6K!W;u4`bdqpxAAZL9=2X~_paKMNI!Cw#waGgkCfP(?Z;0$h1!=puw#i6$Z zaoBH!CKAx1)ag!i1mOAsRKXD7uV`@moWZtSi9{c~iysDP0ET`?Epn@z+g(&JE*nwlDZD1)X3h=i-98b+12zO}l z112_I4R^FE8bkXn0#r11hMe6Xa8?k+2d*hTlgA*OAVQ;6Rnew4#>OIOs4lp71L`qd zO#xRIH>z3?fT|*$aaW$NBS1g?jcy>FrvawoC`v<;LUUthDwYB+WHLCbN4aLj1rFhU zfwAaZltHS%#3vwP^vBpERcWIDKlqDbm@CHrwc&v90lM}->Des8{5=B%*eL)!JaZk0 zcOg^E6ta*_5(mPu5SK6#{1yt>cfidG)0YDqL3Z|lK|A%X8yt1jSQ)w~gy2qFr*J|0 z;(ftY52y!F@C-HsFB!oTnc$^M$lQP=Xo=>EG7zuNrS%-X_n$|8oq?+0CKd|gfYTd9 zcUmD>pNK+LL6R$@(Nd!HeWsh*^9iF-1wa!S84o-e-0}`B8iEk!Y6cJu(yUSvGW5gb z|4TUn(El~J&E+uv`Gn_pG=NI|SBUTnx%^{d(3@4z2*68(bGuJ(QGs&QbvsowO>fZ5 z5o|@JMCofm>tRT7qCc5dSOyTcKtP^A?`STkAxw!_T9|r}xpE@}LfB&H&=E&w@*n~C zpCRGDw%zlYQ+V4Uv@;DP2sB7LHjsotBTEA}(@M%vdmS5S?k+i&+C_qVI4sP zC~hZ!ILVoe76n%wRiSEg8vF0*jo*$MI2K^f2_$-Ep@|M45Hy<%Z%m=BO~Wf;i%K(*+0bw4z{ytk}(uE)p2i;es?l0}9IX4BAjF1wCnyh{{(S?MFk$lNbWd2ZzyZ zcM1VL5$bZHIt8*HW#|Cgwbj7%iXf=;4A7C;CZ1w#Rs z1uz5v32C4Y;D5?!0ubo>0so1K&4B_Afd?`Kzz7h;DB~jTA7l3D6&;pWBVT6A4Ohcy|Bn7C5!S8|b#s`w=%slNC zAWS$H@(kKT0VOEbzK-zt0JdUAw`eW+iiuHvMA65eM1T5l8Gc1;QW^n7uP#9)L47Dq>dO-3AFd(~A%53llMsYr`=$G6;-O`5HKoSuUhj9MAi{t)pbo}>0 z>;EnVC_4`SWlDfN;DP(S82oOm`6)aOYEy!T9}!ycB~rISQ?w)1qecV(!AE*Ne84R~ ze-+;9m|Ba1JH{xU@?7r}ehfT^e*J~Z4L%9-hipAG`G7%a4fZmKPLio{AQ;K}fQW`6 z-BqWv;PfVN{?Y=leup~{PU$odG62wMju7;ko|R}+W1rV;naBRj+Q13`o@Z7OJdUpB z=8OYNAO!&bh8B;?{#EOMjdTV=SWlwc?*V|t|0Mu(cHsV|eG=LEU+w_KTF^I3dySwC zo0Iul{cRwHY{dRG8>2<%3#1T+032k9CERBqPp9YSpIU)EBk(=AY+$LQXJBP*x!u52 zTW8yhhHxM&1_eTJ>BWxXb^fYbE+PAVew=0Lc@FC3K!Pf1_DpYw{Ldap06-{pS_libP1AH>+wi0dq#a?1wBi&U0a-?J zAYe+7s1&URs&Tj`7%rhhJn_)+Eok7t^UY*W(D_DMf`d{YpmRto{&ZdPxA&32I)Z8t z6fY5aOaYe(q!NH8;KI=@zs{VGm{AHX0cuwWGdCg>K~h%Hci@RW!v9lJV3m^qlV8 z3fdR6kVwKcE%Lj$|A$2=tEvLE)qujz42Y zicI=JW*M|wzmU#Z4CvtuA8h&^^TCU`fh01rMFaTh=Mv~aLZ+qwwL=DHn?yh%qqup< z7JbT3KZ?CTDnhOUtcm~=2s{gdPTx{>5>g$2KvlWW8ZmVwRAG$75Xpmv02W0wvhxHU z1BxL*)Se&c`hrJI0OdsTcfrAX@4>yra4iybb3MFMN0>BAQL1iWvUaL%7PGp)H{fP zHEerD=%za<_5}30;qQniO|!s$bkm76>@Yr5507G7;UPdP(Wx!y5ls!#CLw1il0pb%K-&N|1nWpo z3p9L!MA%1I37!WAEjisp?jLX-<%76-vs-pST86@qSuM{Y+D;5*M5IMT=qw00)efpt zXKQ+OG9QXqXsr<0wLp11tMnX9k+UaCvyg+NXU+x@dP2kgB|V{|W(;~1B5)vo@*~*H z@cXE9(nw!@iNRnN7!rAg%+8q&hDw9K;q!{f0eh-^Bd7z~8Ihp55!qZFHzUY{l^}@Q ze32_08P7jqHP;seCkK#%phF48XULh2dA7p2g~DGTg--Lb=SKX$*+=lFkw0}!3xGP~ z1>G7kj0c^OkpitNY;GW)1`jBKTXhH|Pdv?O_~pz3*mH5T?0ix3JVb#BFz@UEol^-P zawZEyxf)=`q}!tbp+qG*GFSimrSIPi=6tgoe>pEPXIfE)Hm&$ynpH%cq?sB^WJXLy zX9mG|7=b{wB}6(dn9~7S5fO^HMzYcZHVa;ng{eO?n1JTXU}2Z0YKu8+_$xAjpBb|n zbS@8pJTrKp#kF&NYk&y;7Q@!)yPq)wrj*lor3Lk)f;CIkhq+UoMVCLb+(AOw&i1+4n z7}>n4K_UUs1c`2A31AMOv#tJ=bCFP7LcfC)azg;&a0b)0%+-c$vm6dIWNMtX%*?l2 z8tCa;gEBjR8M?z5TE9MwL9I_&L_t$mQGNkhTgOVv(!ksrP*%SN{`+$#|2j}aJN_D= zF?_-WD=8x>`vo#4fcg6gblFUxw8d#jAi9 z=14PrH2UoV&d!k86`0>i1h=Ws9B&#>YIE>zC`!NK6&Ok>Nu+H+66e-5hBOBtsThRA z#UT{~+p^yfWj+`9x3r;{)cJ`t^X>mBYSG9Aa2v8e3(6Vl2Ps2nBM&GF^KEjV^5d+< zV_H|RG^fD$tlUpqH!*PfaeHU0s0f5 z?tnISM`}BJQqMk8AIv=E2_C+rR-$R+*+(XUM{J-Hg$43yBHp-y?;M2b)$Cekrn&}ts%S|mIPo?+J4MWdFz`DO;E_8%04*RiXO=?%Eg&x~EdVrPVy%3M&i?D3D*c)YICeG|t^|$_GyqI! z%kL_&Bl)lAkb%wD+l>&2mheZzg9E$(YqPWA{O967vw+*oC(39aKeU89T7rb8uVgJr zBC@mNz)4CacD6uYu!xZHFKF|R+xho>=IVb-9Sv<0o&O|^zw-ZNWas36k(K$!|NC1$ zl$#cybI!o`xi^RWE4PKPn}geD@Mtg%s2dSS0yorv_sP*N2m<#={DBwwj|%vkK6B+C zw%`9r7=Pve$;)ngf0g(CIm{5 zfLt~~D*;|gLA_u^gq`LasG_BUNP$v5M4XF{6i^;yIPkii8GwRZ=7Ip#(r??J-8e8( zfq1&+!3L;zUr?Kesv4MT&8UhL11rk|HSLfCg!9z4vjZKyU(^SpI<%P;+6@mxeQtO^ zGCR#FR0Vt^5I;AxAUM%!Oz;Z|Wfz?B-ZcnX4wne>qbv-%h55Po5^&B)UVEsfi3<(@ zv5g(+AmzFb%8p>#X<8B67ZHL1CbHGA1bbvAgO;!bw`xhan;U2W-@%_A9$@%R#!Dbm zjuN&w7ZO>*#fRVl{_rJ`z`IQ(0P8>|g6m}@;GrLMYk>rOnGW~>prsoz1o#3i!AKxS zrP+aT0fGSu1K2qQeu+RosDlRor1O;7VJ{jCJwTj6XB2D$cn%D(2M+2Z6e_{`5ek$P z{xVMb-xlw`{LIz=;D#~Me>4N&zmfk>0gL@7|KH#7`PKL%({I4v|2d4`+kY%}ll1KT ze+mk63jf&uzvE+W#KgP`_@5OelGiTXb0*g;68Mz^{AB_D!m;4`{mM&kOLJ&P7**ZL zsvcHkS|ER-Ce3XFPVd!z)~xI$k5u}HJkI#P9CcJk6v%s6@*>mYwrVI(rXf)+ELlbE z`H={|eP#lwpUshA)A3xZ_~#8kSyF7Hz-I_{fs_(S#& zIi>e%Ty?reR^tpb{8Rw^DwDdLIvG%?*G%9O6pAu!RcL8J%#`NX>2&)0p0w0G(tCA} zmu2Xyn5UZ<%USbVO>M2JGdHW#E#IE@bMhqvp-+h*rNuZn`Yr0)%L%R`)$mg%D1i|lJ=}xQjoQOjwO0AWf4!hncw6y!Oc*BeS2o7*eU8|2@5~XickiSuZzX+uD>2RdX8rp;MORH$Iy^1ERCumf{uJlU(luIH zihME~ykE#YQ9M6Tbfs=>wAZdXC%GDvWLAaV+iHcHvOezNpklw*veEwS7yO0=8%>4X z^WPVUEjad5C1-G)dBbg>bh*EtxC=p}a>UVUZI+;#npvd`K`ql@}CuHWYxOJ((H zoC^M4aW}s+F>QwBap@ub@Iysh0)5?xjn;)(q5~7V;S@}I$Y9CBUTi=kejq6_`AW>dE znY4uQ2Mdh@h{>^7+4~tBzROT3=FKn%AbJYdy7q@vhwfJonY3w_flTIho}yE2eBG%_ zO|sI@YsqXGe({z^@4nbYt#rB6b()xO6UZ$|Ddar}No*0;Uqb0?AKOK%R_W!W{SOBrUqNl)icJ`OSTnjm>$d4~KQ% z^Lo&ur_&#Ay#)1#L_Tdb;H>NHcfpt zU$DC5s(;F}wC-b}mStBpwL%t%x-Le`G(GLi+Z1YSnXMkGAh> z2>2mzQS3mJ!~ta^k&hZ_JsEn!J09SV^P8FMV>n^<)?-72w*h8pg6)k8mv^4)jPd^R zIpg^$)}NnT^4@B^`hml`b%{M8c^3A~uIjhk8VmCa7ex!iD6R-gY7@=AU9%!MCiAk3 z?t_yrZse9(9rBWsUbEKKe&_aw+qW{ZV;AB^bvVxMa?lMudnoWQhqr*GX_?weFW>wX zyp?*wNlxE;KkQCqWSQoOmY?`8d?i2kXV+PoDU9_lmff)4i=kbERaKh@m;jN@ZNN>Kv{W zIMRUxmQj@qgVkNuB^riD(k1bVXYtDI}NcTOy?)_;NW#)^V zOJm8mFDBWb&+}yD3aV#ZT(=@XuX-xm^#jA?B#!?ruf(aoL)Xp~Ex8-K-ak<^#0t&X zW}%q>rNO(|9}sjzha!lz!UW?q3icv#sz?U#MUPIStT ze2`mMzF&voxbWR=3Q^g&3$L?oj6kEm%W@nV=VjiITPX2vwBop2e!o#Z!JJ%%H!XSe z_3BGvrffk?&()*rw)Lnysn~5E@jCulVxZ*xm5pj#%+*Yb8*ax753O#$EVMAqK0-IR zGN^+^LS~E8?ri3X^5DL^1G$XncOE^#q_*c(`?K`0Yo!}9@{e)KG`Q_L<5A{%&m)

    RcN`2aH6L*_J&fb5ixa(4defu)<^q>biA8-5Y2I~f z0zdf5w!hL;sJbA~5iNDT#nK=w?PbKxZFv#R&ZPn79{VR%>lCjG1SdN%I*cG~lf*In{uj@zFuxD`z{PphLBtAz`9Ur2~c4_MvVvr%lx>$O8n zJh{2`%pGhGj|XUQW;Ptsibxc=P>~>xiP?C;NCWK`8p$H>Wci^qL2Gl{kk>koz8~2n zwgU~aqI=Gr>LIiX-XhiaK2luMA%L}v$m5x=kqj72HuXn3qyOO!8U?X@mr9*TPG+3>3PVWrO5&z5N zAd0(CXVogs;-{sGRa^CY_q|6FAV6D@|M&lW9LO&(_nmX@dFQTk?|t_i?V5|+?~9jp z_JzNGx8Lr0VeGjzNyV%^Y5aXwhkRTFyOzR`(p9!I#4GB3SEXZ^BFX!9MM?4Lf*n6* z^$eJQcU{aqyUJ~x>)pm@RMZ4B81a7|ud3+yy@SuMJ(90_yZ)8-;G)+!ON(_O_rL02 zOR(#s{zJFs@WiuHtJDF(Y5sF;x+|5rGnR>Rhm~~d-#;sEWrDZ2S- z)bzVIl`B7UQr-yTYp7H9;I0dkF5N3jc_q3R{~+Pu=N25sA?Wai z;P|2$e~}%mOWr^K;z+*@>jxbfJU-@Ot~Q)IJGC${^l~DbeeyyMiLmMLmQLGcmT=67 znkD&zp$)Rfk2a-8eSTH2;LeuVM0QrME>~XnTj{r?Ecy|&`%U?XlQ-XK7p{J+NuD=0 z{}_MtNcYM)Q&Byk zhqsd8{Fl;|Yjk_pIF_p_-OJVdz1JTetNgO}?O5_zyRZZPz6AA|!F{UwXPoJv9Qvpm z|NPtZBHB^vo)v=bT}Oqy+ecgbWS>JmtL!zy`kPl%7ti7!ayK7I34HM5G&*<34uys8 z#Y zzVyUu!Se-Mcnel{xG`$Y_2K4T{Bx0^0Z#^G7Y}%MMRacMtAbmMjSCmYsTNd`M&BRO zYgJM4vT}!~y6SblzioK^2HrSjZuhUlo}Soy`OnV%@>X{-U*F?ghSWA|ba-i(dG4XB zDBfkOCXXuhoMWCwy=-^D%Ds31W!#u@ch114n*+zuqu!Q?2MqHa?i4$Ewo|61q*A;& z)cV54E4?bOY@r_X-y2uy5U9*NVCE6pw`T90H#N1FYo1)cn=Sr@BG~LY>7?~+&xq-z z-#pVr9i%9&`&Pa3?zgn}meAbT!ob{THnJ0ol5&MJyw*=#zAwJ$K zU)XdhJ7RBs1-aUSQ07*6d1u3+E0t8{N(M>L{yYmbAzZ>sc0}_-Ph{lWuaozloFV9vyaeoM7w8 zUN_eLViU74`gZ zTwI?bdUws~tXT1QSN5Q7v&m7zmTk0oU%NFDnp`Z}t+;V5?1AmIQH4}eZEgkWP^nLr z+kO&baMzw!clW%PzA*0R1${posI@4YWZvO5qj>9bm*j%<8N!W+_tz{u&^P(kx9(*! z$DL2cZtM2ptY2Dot$SeqOFY;4J#2C;_w#2$c}c&o8SHWXFdTt)? z+O?dW&w5ZiMZe!Ht-PpMdhXqnuy5R!=dTVc+7@>snEC3EbULR`F4H%x`=T7%qTZX2 zJG=SRoY=YRdj7#*Po&z_RQ#?ZaklbRvVcdoy}K^o_{-?W_H5;yTjv!J5;6oQ>^&IU2DuUy6@j|;x4(W;%;2brHbrH&c7iz{6I$Zp%oLK&Z!-9V>A7p*WFOb$z&3l zN*u{4A0PDiX76cRA7m?DE_%J~>fe=r!2m-StS_cT`_Q5$X+K>s-piAa)(aS?1ZxquCAO~c(uz{W4G7^^|d{A z;Be#~6|Z`t7k$tvXa6v}8S|d(JVmI@>pyho58p2T(a-VgzFV`MpN!gm_=3Icg|Gi@ z-F4q}t9@eD*<@QRcAca9%JSaiwedIm^9rYaYuRo1v;UF0d6q0WHOh9gHBc+o_WLx=%ZiJM_cxp$`O}ASRY#Jtk9?t?-hW!A`?O_oT_5e-Klv@sZbdJPcZ~U> z7msp>96CB+!w}SCIlmF!r6|ma$qIG8Ib@e+%ZKM*CU6#QwdrOZn>^qL|2&O_=yIm#%LAtlIh-0< zExzTx_^s$ze2*DrpI;lF`qJU8JO&mC&OM$X`g6pV!k5!K7^dW0!Zgb9_2W)YM}C!< z)tizhRXvEhz&#tzi4dGFDEF9u@s|ftoi(%&Un6sqwZq{^E~>0|@K_67)@F$9@0 zPHOs0D)iF5x(jj*K3(-VayltBJyilpA(=G+tNTsoi$Qn%8YZP@<3y(sPNzb&AZ+y88&on5jf zo$iEOgOADf-{!5~lvEf%W-Yh=)D~3uUky#R|5khh;GggRGbr@-{r@(BrpsU2YBk_r zls}C@YcKz{fac0y)=DNoOXEM)yW#miZyL4z{7;*JVd!3n43g{Vlhk1B10OI@%JpM5 zWIUdlLd5{WzvadQsX6ioW|FRL^i1vW_o2!5Pis8`;9vCrR1p8Qz5oC8&`kMDXc{5MLi?vv8}0x2P#Nv*zfHi?bIcgeRsw=?r9po{G7w-A99F}R z^?G`a8`o;tA>1JB5Sl`&P%2U<8?rM#5XT@}J zL^u^zrMVF6QW0*5a6}S00H|mfkzfU@1WC2+{=&meY^|tqO+B@vM2_#v-9OjjIP1+Re3*yuf9p{(iC~ zQ6VE5=}g|R7NPEOozay=GP*!yq&Im(jW?=;#?){FY8ZHCM)c5-iJaC17hv6z_4b4_ z@bQaGb%{pu&>9KU5-+$ZUNEgG@#sykq?3&|q!5-F7*C8hotSAPD7}%OEpdfg<_gmr ziHw)MAX%+O`XjWo?Hkn{eU(8H>Qx_?cCRk~C!w+ZmnQRW)ziQK>ijPi_ukK z;YEcD_{<IfV?B6cv*pETC+3#rV&#U&p%;(3!)u*QG5 z*9e3bOY$Gi7(vL$$RK29W*Q}W86~#5*da=_RHF22Ne23-l;J;J1KZ(038wr1*7X6` z()zCtqmln#^!=aq{{Pd1FbUSes81y@nG-3rI%Ecc4*=c}?wC!Bub&{(Ze(f-5F7gJ z1tWwO>Bp?VIr%@;S5v*`mc_|t>eqT$%5E9gyM3|(4Q^`{>7gcrNo)i+5M)F0bcoGds zI)xTcM`^nJo3;NmvR0{MEwq0xA4;SB9}1=Y{r@%rGPxNGFj3zsH85T;wK9z&C6z=V zlZ_l{*WJauY2$venS6mTn#JLXK^x~qa^u8;xQIX=SAfvAA`sAj$fyHBS`OMr3E8ni zPGk@_n#G1_`X^{0x+EbTxq}Mcx?(w?&fA*NLaVC*;;S{OxK|K6 zz(P&o4&_{!!Lf))0$y}f5L?UwAvg^X_kH^*YWFwhmyfhQ5ia3bk60+$&X63q-@ zL*PQp=S2ylL!#LNwg)7L4s4Jn4vb=s=5RU8NPz%QSBbY&-q^98W7x0T966pQjaUz3x5dH&P6VSN|o&ZrjXdYA#3IXCr@mSG8 z!ba%;8Fe5R!4!l;lyrImSFbo0J1{!L2nD%KqjKwlY1K=naP@(*Kspa3dVxNYizNu- z_-ufO|3p-dryzuZ><~^Q8qF$@%L@vJhyrwL0}Ra^Rf3v`-O?i&A!6OIltMJzsD}nX z#Ny~GP#+~lqM95jNe01@h#WaAQD~dM1;VjltWyDjK=rYDn!(2l z5a42A%0Q67Ch$3UpqM&guz{@!WG)CMppQ}j(CeEyPyz7w$7qgPsFBFwWC=2HZbm^o zguen2Dj47CFbD<=geHji8bun?zXj?PN_jK95mDtjS!&($Hmgh=_n+ufkOIpT5~W@W zL~Kt6i9(`bQPqs>4`T-GNEX5P8?SaEiKe;AiD!wZRHelnOCmWUH60NUDF!`5@Tu!Y zAT-pxJ=%8=>e`>a3+6`%q}@=l|LS9H3_G|GIGx-Fx?h zz@Xx9yufO5J+)bmhQ@>rAaWa0w zp9BfjkQ9|T6`11FspTTNl(Aw+N{;9Zqu@G=SbXmlzAf#C{e z1(6es*Re^66hx9K>^QX!l1WsM7L3XXlOYN2oLHy9{4k>dpOKtYdMORG(#e>)U$>8+ zEI|qlLR5u@q)akM3xa2oKoLQ3x+EFtE&TqG;DDuZrKzueqA6Z{wN|SDar9(KY6UWY zpl|fle=>>2v>2u`ih|Lg1VqS1DgmJk5b~BQk8AThG2#C$M^KRi!J9Gq1vCdRvEV~Y zrBXeK4{L(Zhh^d3!)3tjIi(IqAd`s!8EB2j@Nb;V1^fSe@VXF^9>nMS%akNI9VSEw zx&FxtIrbw;5ah3sp_c@EPA~)l@*rj8N(4Lp&FPO&msKEBz=oo=us9+($RL+K71fQH zt9RI5AA_e$P0^)_Sqcq^1B!DtMnFyWWLU01x`}4cgs2a53_*XVkxUxNmQvduo!FdATvWY4JBo=SlA;VB?OUGYNa|+4Ur>+(Eqacq|J@nN`AI} z1;V6KlX{k@%g2mlXJtvYwb9{{?vw(PMTvSutE zK%>!UbOViUK>Si7;@MXs_KHMo088PFSfICEI)`NUI8$!)z6|(N=cMl5UJm*&m1ht9 z1hVE=oQ`9H-vRJxgNQOmAzXSRTzZRA1pcv&)+Ig5&sEyXyIb4~i&FiGgj|^@JX;8+ z^Y@jH*F8XzN0OltIMeOu>Pk^%9mVGdXjFFO(=R}#ewT9}KE*r` z@eaEU&$f9ES`c(nBI-E#FYFUh@$&IB3qPL>>ZRh*$d*xa(LNpkNuIf|8K9UvUW4gmuTil};vv^KiAxk+O-AIYMNb)0T!YCu5$jlGT_Mo|rhT=ns zN9w1-LjA*I8Go&Jq>us!@?|DkD7Z=98_O&RbSwiIq#xX9`zn z!FoT3dIN>hZGb-Ur(a9};xn5~Et~x;N#hAz2KCG`<|YvaY{itiM)=C9p{Jhv*Nsab(u3LH^{|4s$^O2r!6m9chR`L{WS|0?|>EGv|2 ztW{;MMZ{o-`W9X2!RK#^W^K-GYeQG9=Y&oze9s47n_U~v2;S7^0OJ`8K;Nxr1W!Yj zo)JD3WXaHjeFyKkI$#g3Y3_Sl=%4pmy8h#P?LDcC75-lb`=xSp{b#S7p8xwI*Q3{e z7;n6uC7=PtC$jic4lVvLl;76+5AT9+atSDaduSCXsU4ncAt+MTsNu+u-5H2{x@nTh~h4R?L>Q8OGmt zMdKu393okC;15}dPGSH;?|g$rJmx@HVWLi!bE%cu>qudwHt0s{8=@C7=M!wq&)c^) zNB{d;U!SLcDY?x|c8gTk@?@{aaQ8%`-BN?ycQm^_(d70xbKBM|U)!~GZP&83WlPqU zEmvE&RBhQZwQWn(o3%V8+kbq&^lg-}D*ksrVgEG56m7Fx zZ#4&h|BY_%YlQ{6Q3zD-V6ID>#R&WBKAG+$jgVqL=z-U~V^V$4Ny(7km1{q_r zg)tj3m;YEiof~&}1xc>D&96g0zKuna@T-t7B&4nPI-Od#5l%`l^eQ=Zci8W>BdH5{ zG+MNJXaRZ0JZDC)O+ zC6E7Kc>lLp{CB$l+e=-`_J2Eg+Wv31GG>o%0T+Iov-R2XUEpY|7`TEBKd@UFM7Jeb2=skaU9gr6I@~_i_Qn6Gx%x6!_&BJW@mg;`X z?Cj7La(K&}C3klC!aBU+ceL;j=x9kCk9a{)gFs2^HG7UClB)seTeW`eq4s}tL4Q*) zbas`?KNbilK?ocE?y;bJjN*XS;h#0=vjLdJ^jQnYdi2={)I$2K;=<;=qt0x8P!RiM z$GLDLC^bcC&DH_py?A}IjAi;iAeWz1#&Z2%Jix`CnE!t{)&DPXRe!yo>h4ilM?xW& z7YHaB1J5BkLSJSWM%r04*b2WMXR2(Fz{Uuk_Te|f2U9%~{51qnWuINR2f0EXo?|;m zd6~~HTa6>(uj0o>xpq)K&7PEtdms!N4`fbW@4WJ9w6Im3E5 z63`#YojA}GLAS_Ix}^POAbqH4MrBsirLFd^JE!#{Ay1!c!*)lTX;bY_)vovFv!OOs zx$pU-bNcRi~%kDM04)+Ob5%L z=(wmrr7%k1l%E~dyf>v8XDRj_gr$aGB)!E9ZEnqBJaZIxtlW+JRPM&zDR)Djl(d`+ zO9g=?tF~=e4I14*+wh1x6j$h4L&XioukhgeN;vMmvMT1DmBmc%7eE-=TZa8hM%x{r zz2no~qfv7vjdYJjZSN}R596Gox7 zJpj?{%*_*NhLJ@95^8<2#6L!BQ0i75M2SxGjA zT61=*S;h=$?ok{CEU%l(y+IR`-=`d%SJUr^Tp2B@rng;A^A<{6%9KEZ^;07AtWM}g zp~nUKS_H4pb!Tp2Gv>?t3k&(8js~iAtH~h4jQa;}(KD>2n0@WEk@wb13?)Fn)QyMf zstR|c87MvFizS(+YOM#oHou3lJ+%GG%vCX@mzNC^0+XjL4iUKX`l}xx=zwq+WxiJumraC!lxG z?-KiHIOsCaM`Ll8kLr<=NA$=I@_Y+8d~Z_gNK9s++AFKMBnmSXB&i^I2ZCgIaB#}x zDU-irCg(BhDVL{Q{*JkvZ>5lOdCKMQn9IE#K2knU`TQO8Ip26D&~sQQ|<8b@+L{b#< zd!e+A<|(Gf!@pu_OOd)^+D`53p!G*m+F~s2;Jn}J{xO@{m$4}uNI|EaRK<%3`OwfXt4 z#r;w~J^%G3u1NbUhP-_q*u4EqrGve+{a@lrX#ctW{m*~S!;mm-{};HD+g}3>d!L&) zQ+*p{EFb?D@}<4#`EUFAVlf^6zrY~^fHptiW zVW&+BxjaGNYS|IRW|tmwDezOu?(Xh#ccq+Rjm2SKyhlI<%*k)FHqDk(97TXhIKIOl zRZ@=WVVPA&b6_stY3zL>b?d=&(EH7tXfok`eRO!(o=a7crDVBuZFYmlogN9c^8nNS ziK;pRnON%eQ4lf4;QSyviX-rNPPT1{<0cbM5v>s2ej! zojF-N`=T1$+A`F=yG_PJwzx~kyWlbGL(noOs1-6w?tEp1k5eLn9xES zjQ`qXXT#Dchse7t-549fv3DwKRa&El!f{obj)|lLo6-&aNYWl?S=a2W9Mie{xC*bk}xkj;juLbBN) z4W~fBF!^TEtu~feL6C4#U}(ZGpf%U2kx19PI-DC*)vE-xC9yO-l}lh>1pa8;q7R*V zCmi?q9TKl9Lh_~ga2;Z93&#WcyIvmm)IQ zO*n>51=Hh}kJ-kcWCp0d8Vqaf_}fHYNGz9&GQi$H+|oUGlnzRSV{WUB(JPToD}g(f zB;Tl(`0Lm*=H?a1kiy;`a>SSn*{8)-UJ2Zmr%}N5&x2%uVcI2j7hRLpnXU5v(q>Nq zmSZ5IvNIqOBjS@QFeWLBSk8>v{(TvTzWResW9-uG1S}X7HC|k@pw*eJAs@8`3kp=YBeR^gj8vHG#t0kv5ZX zl}My;PxzC|61jV5dcs3bGo~M|;nCT+CT?{l-8Qh!*Tx*V#qpcm#h5T`F#|AKW~8b! z;sB=sygSXA&=QM@&F<+`#LUyHjN*z;WL>iDKq@wxQXFrj@j1vA-jIX*PySHsNDpEW zX2t&tJ=bw_^6_v@!IlFgrqYe-)j7ab)saO+mX=eAxD*X0%N5=69ROa6Tp@s5u^`sw zV?=I089B*B(m4jXGprj%!jS=gSgCp1`8Gl{pDV44Xg)Cd45D_bS++yW`3O3+OR*e- z2Y>Zw!+OIWY*=sT6YSAl)cr65upP;k0q_hNn*y*L>>St!)|@GX5At3leY_DLC0Jn8 z=h6&%8krg(2{b>Jh?wkv*uVfo(;edzCdqbt*}+AvlO3Mdy1xznD*-b(G`P%V>c$l5 zZ&QJDr|KXT)E_)W@HpP{Ft;!$kGPwFBG%jtPgEFBM~0hoFAX zmxW_|2l9{T(4avIMwGIvdbvi9e5Lc6h_aSO#+*$H&Dfyh7PwBqXc>3vE#unxuX9T~ zVna>Kl}I=jq?5n+biD;Q*$h;cP1f@Qn>T*OcmCA>2bfu_+IRwAN(BLWy@I|Lhlc`T zGf7%wil#kZ1!EHv-D%~&tB$VcqQBaf}^CTm$AzJS3Zc@|4QY2YX5tQ z>s8tRh&R7^TZTT@(wAuHOYMA5vGZ+i=8GGw1a9+NW@SpveecoSms;&otKC|_w`8^B zBGXf2o(SEBtd6884eoKaH_~n42ps3i4yYSvYzd0 zM&?FUO&e`%1ZiR6T#1s7=yYEGl0;HzO(_Lu8^^Ii@ZgcIzf8{^9H5G0Bp$wL10?AJC08bq#{%b+HI=dQI66m zP>b*Z05TMk51M~Y&%C6KA2Ic=u*;CA*kwFW%zD8aUQsQmuEI>Gyjc{lxA}HMOJr!) zy$b(~b+6!@x0J<+ugfYqLTb8BXd)Zhz=lDFs^q+iUZ~bovu%z8k_svYV=AoUF5>{; z5*&<<)m_@I$N;Kkqh)l2<4$Y{iIP4;`3b;;Y~zw`8?r|Ictg~t-n=&XfQ={&cn;wg zT8N^8sNlW8{p9gjpwsULn8E!F?V#}zFgvSxhOzN3#dDWT4Mn@gUzJvib~Jmk>s!g- zrA>Puwg6om5P@TCRo62Bfl8$75O!<<0ZK8EpbjUIO-+{*Xv|PeG&^%Ww`NczGj0O^ z+XgKWRT#d(P& zpTSpdtt`X>MlLf4q&30qX0h04ZF2!}a^56^-s$j5t=}ZA0lDb+KDQdp1`%olcoufa zm)7tcJ#-;Ozt$c8PI{-L*8QFQ*6KEPN%QMPzd0C?UO&_7T(nzFc-QLI+n0@2_l%rC zzHVyrMb(;P9IXu=*TJ6^G_ub5CYuH7Yr@cO@k&9Y?*s5Q) zYklYx{fpk93B@-6Y`4`t?L#TePP03Nj?(JFOVa!dPh@ajYqzniOzjfT?<0bw-n;m{ z-#R-VlJj1>(S(;LO+XEOm04L(t9rZE>g|V<~rCPB+&>|TtQqs4ZZdUeisKG*kN?M zi48RK&;!DPsVrQg#PvQ0z&;$9$^HBTepzQ93))C*wLh(l7H44r{sMb`WCiXOXx# zhNX`oEtvGFFpc{>Z}c(}+XW#}nh_yTQ7&%zM?J2@6_kz|Q8 zRO)vcoW9rmNgfSbW0K^F2(VA=@w?(B#Q5Jz5f>s*Fs>NCsxBiUFc>o;3ge0rWH3CI z7fQiMUN}WZU~B{I7K7diCx&DCEMys)a-lQOWFA+`}VwM+^Ra$0!gX zJ1hj&2tnB3aqpVn=ywE9X$j*H-Vbbs7_W_cSgx;NW1oe=-2py?=N7n;#|^-eTxQTc zufPg5C>Q7oC=Js1gH1}aKeAqk5qJaXVQ7QzW*g<@nF*b}}{I(qsh z+URsx1@#Tf!1W3pz*ib*m{8#^fp1<#lShkS1KSFDL^CPAZG=mlj)j{L49}(l_e|IT z!9HeHddApw8uq+=_Av7lY&OaR(D^WMdUz3pco|5Uia+Bf7-(!Df<`@Xr~p;Q0wlsC z#fe~Wg~jF-UAVz%G>aqv>JF0t06vclcO*f9id9=e(V>Vo_{=d-NTYFsz-X$&Txqb8 z5%Dk(Gb{8bna-w@5n7lIJyaX@y$D-}6&Rprpsz>ftVELn7h7u>`~|dL^N%`m2`vpm zR#LyKsjl=8)bU{44toi7GB*;!{#f|{*B4O!!JY_#9V3q&;v7+JFwlp=s%Vlx4*^9r z`Z9D1`FnfCG78>KN$?6J5?)L~WkmD&*0yazu}MIg@YP9pk2_{;sOPe_wSqOQ>C7O6 zr5%V8@<+W9C}AL)!>8~yvjb`cx>R|VG+I?TST8$*FOJZ@q=jz$-=Tw*e=&nVCw@r_ zu>YSC12bpxsJRel2UI;E5(or9Be2Hr4N>z;6CSq0Kv1;=bir0os|ZIOD2;@dT)3Wz zm+i3-Hh6RhBk&837;G|lhLnaTmo46I$%LI_w-SUPp){_YgQ6x%mq&<355(dE2b+dx zu~;uLaf&lx+@!Ica@a_4AUBUe{aHBbfJmeKAQ1uy*az@P41;M@4i(jXB!CLyHtKGc zF;MQ%qz)a17uk4({L#pQ=XQiUi9<__n z!!QA0V;G^xckPeJ=|@}Ow=8ci@`dH$RdhTYebuBw!qAB4k9v#LOQVmdpK49mI>k)FTXP;5*&d!Zv-#g^Jb&F7%2=5o@3HL7sDh%!o;eH zO9!4c3&wT<=6z4V$Vzng8f-n3g8nz<3KR@jBuATy1!81n0D6F+l#fnE&lQ(8o6C_N z&x(e*)c;-bUiV!|qJzO*DIAax`bPrBG|;P)PM0h(OA(N{#6^A@ooh;IS-=Bt{s+YNnDkz?b<;kF|| zHm=UFT@ZuK!RvtV46^Qw!gJY05HxlpWv->$%H174)3-FwlRbZD(a|_jhumE^Ep~?F z3JQeCX;dZ{AJh!Ilprf!`ou!a$xAHIOH4gj&|uz)+@)vgLt~2Vl^n|6n$G^@we3x@ z=UaBmK~Ki|eHDtQ#MdKF*7)>^xy7+Np+<-) z7w{SCZMowc0!c!<=OnR11&&S%Sk!XsEq~3kDY54?yqc;9)u%#+FXdMukX2>>N~m=@ zE$x?O+pqT5Tr1f{8(R^_PQQCnB;dx&nL8_vpO)~Wv>=f^Q=nGJAEGQg*SEobM;gSe z-46A~tUYx)abe@)InaAMmEX{&-rfmzPGEWuMlj@fW`PIlpo#Zcq^nDzXWyG#DuDcdP zN}VZ{`Ia+auL)h$XsT{k;kPhu;@h~*Q>!gn;MgwzKG$7wkd^Sj0ns?Ywuh!Oe%j40 z?}&=<`V^L&y0)Z=JlP$x55ExHAT6Agv#EDTaIc3_YwpjrKFOC-Y5j}eCT|#%d%GPvR@|~lwQTLik9M_Z9Hvi8*zxinylGo<*PD$u zB^C=yl#S`CGHu!3l7IW~+iPRu*^RApCEp5ejxo1zd|&(q*1O`*+C7EujcMELfZ#jK z@+(RP?zb7~l**r0hCEN&5p9vyAY=ti*Gm*?v^exIY-@z$bf4vGHw>(i-mSl+G^#aI zD1a1@7BVTS>}G-28V$q8QQ~~U%5{B*{ayIZIseATWC`V%w9Tyjl*s-ptPGtvF(fL- z>gKCBMq1kL)kB8bGM9Kiy*r^!S;&uFJIlX0|E90ip@F0Wc2MHW$=zYAu1L*B^&{JQ z|A2y2aR&QBVQ;ur_JG3q80)mB4X35V-pH(yfkYefi#nOLp8D$QNjmX#4N>$D8DnX)b>_6n;T8?F~! z>*+Fo>SKLXP)$ne+V-XK{<$BA6i!B0NU8gYjk`~g|9sU{XIg}Z6zvwO{LfAM8zQ?? z?0xPY)Ulm!6*%$N6E4ChCr`8~QoAj;dVa`zL*emW`#2N#@9@)?$yn(GxhEzUA0Pkx)VHM6 zp`Vo9Tz5uWL~oxJJFUjdUGad$Vs=pOCUb-PP}MSrHXCVE9cjg?p{UJ|r)qJ=ZfdIU z=}9rjY096WEO3-8df!B(wcOmu=ibv#sp=thHjue_^I>7DJu~0;#$TQ--zpWZS)h`! zI_c^8U-wE`y0zCi3DVQ%Kk85PI_WMP*3CC>utw&UwF&30*!B<0O{>Nl_;&}@E9u^w z>nvhg6<@bppyrv~`|ZEE6^p-a71%hrSJ|;*+`jb@5>NOpPwIv}4j=Nl$6vBu^~Ib| zu^%O>Wn26bRwwKJdi?0)eX*Mtbg5)dE5BH$$LE>b-R!(Vdez5{5*rwKKUv5lA?j?e zT(05r;-Ev#s`pN<>oZZ4vMMOBOw3(daI-dd(({(vtq!HK3>Pg={VZh2;)Ry9u=Mq- z9PwWS?c10&UTk4Cz3OYeResFCFRQ@ z)hoqr6?&0|``evRmghU|wF}4>f3{fmEM-OjpGHVm-F0O9{@QDmKfkf`xESAN6sq$0 zWJtSN(!%vVy#iAOA^mkOhsz4bWL{!@YOm-WDtHxgreuY)oJg!=S8n0`b3N4i2YPRj zo}5(@T4S4<_(0Aq{<^L-bbQ9__fa2j1fu?+Y$)c{5lAj=($?3SF}00?x>uz41S?Ux zPZmaO*qe*+3uxyaqF1-_b!Pg;84ez1?d)v47PGA+r(CSUJXc=&x{qUt!iH^Vm{4pw zUQ%r=vWhL6y=D?cKRV;8;ox4@&Jc@nc91!%amC()eC9h$StsC_TD?-J>bIP$?{bQ_ zx2IFZ7bZ7H4DCu9UN48_ z`$D_}&-6{b+?8S3nT43{o0oOEJ%$waQ$_ri9npL3#_!WmteOyf%C;kYm6C%GU-I4s zpKo{zKo!enRBsJ+cC4m;l=*q!W^0~z0L3Zl`7)sr5w-rI2EVa#;|}-pRX=a5ed9Nw z!0X7Gx2)8N;?>Zxxbngmjn?m=6COiI{;LR*Y*hWx5^3tklkKens{(fM7io3ai)%yd z2frMQC)GUd_mxWYJ?Ut*nbtL^(-@i&6D_evZ|kmo#%VkAp@Da|7&=Q`t+I!z!lSAx zD~FCQ9ZEO(e4_g-sb*ZFFFN^2zi%H$ZEJO@o09WEzAcfE*359D4CWav31{2vp}7+Z z)b}p&e7UP$u727+=(g%w$2Xteylh!veMUP(hBLn+U()$(-b{|5g)yt{QvI%2v3(7C zirxYbf6866#1=|+)b0E=q8hR27aAKzr)obw9UR_*83D?5%tYt8t+6H zj|V)W_PknFCAn|R>CULrok^Zse%?&GdVHYHAXk9%yw)~TuYfJEOr-kQ&nAbwdnK=T zzlE8b)W}nJY)Q4eu6yV5$qQM>Mc~COqlc?~8#|&qHsocuiI@F)h@ZSlWo>Kv6h-x} z*OBYGJF^W3<8%iED4WlFJv!X~)bQ0^L(=w(J6;HJs!NXr>_~@bw;8QWSEuL8!}bRY zWEQq8n6++-l1Bz=Pty^v;|Ah+@RM{aSAN3@ukVyy7JD#8y1QR)mK6rW~mr=jPV+SNI1V1JCrJD z5X4_UQEd#|`?0yxXsE&mh(eWmeZHs0&r#&!A3hHfK_v90)5GC}XulK^V z^Wu*j4+*dyW|8&pK$7okDphVcLTi(dCMojvEF((uuylwC0}v1@_B*teg%ze(;cqFHMLo z4tij6TwC;fXHM&WJFQs?<)tYGaptz6oZwR_-4`xs*rV3qEoRIyPDDjnuXT9$OQFmy z)~_guV5G3 z1VSnC;nNd3cV^yicb_a%9nmCu_R+pKZ|2^ad+*%2bLY;y=Suc|_R1w&R+V;bpRZ>w zyrKNQD?fPo8w*Bft?W9wMn124_l)xwA9!iUZ@)I@`SWgDu=%7fx4yZx{nOv={npXv zw>))jUG;6J-+M~z)!|DI9%yPBS^kIWYuqo2j)6ShXBfIgVGv5r% zn}5dZ4}Ek1R6wi0q4aJredYIkd!uto7XI^RUw-hD)*U0$X52aLSjn-6gNGLMEgpPS z=)Pt7qM>J=tUvtK(2Sj@y+7}JH=MNpnWrw96L=^vbNgF|?)%{{J7+%nU+b0ibFLbx z``vk0c7AsDn-5HX>%XU^uH4*x&gzT4eeG?3eZRE*tfo`$oEQ7?js>w7o*ao>GyCy_ z=bt8D@ZxWN(D=QR&$u0?DOZ0(_{j$!%&0rG{^5;O&3JoKDHwGN#n@$r+4oB)+?80H{EpR z;ax8-s6W~3*FLGADIDP*-~H^vrTY$FviRw{kGxkYZ_}?h=h>>8x;NhAX_zVevc2nx zCGQ^CiQcB1GWH+^vWW5Ul4-a2b>-`;mS%PxyApFXSZ-aBgUd2aW+ zO?w}#J@)E7L;rbpN6mn)lr7$N_~3%a7x#9TH2Is4u0H$mA1iBa_9PdUw4$HCan+gf zl51A(ee=+f!<>(kL!sBNUVB!_O|t{x2R8m=;;)V#kxITl|5o27PP*;}aqD;g?e=$` zyJycwO80k5nhrekAu6jVzyGNpt@Q7d_PzFZuO?3YkL*)-uZq6<&Ys7f|G}J+uY9Lc z{r6wZn19`6LqD26bj>5XcRfOm0?iG}>+h?( zeA^f0keIqA^~&@AWrzQNoc}Hh;i>b#C*vx@fBc(H#VZmMhT}N?Us0Cw&;OCb^3?vH zNx3S^%RS`?(WM^7_##{D#2Bx{r2KUrDCykW0qdDf5bJ9#Ub0AF$h+7$%n(+iNP;?& z>%;Gh@7wm2S9(02`NpS)sesi(kw#XC9cd5+0x7m62q<*qNvk8H3>bV-2F;^U ztGb4KEh}q#FKuY=Xl`5HyL@FUhc<6Ud1j(y|w~hSA$W zqY5*Kh6PHKUH#^AFI@r$YC)9ofUyD_a|_s^d1*`)LbYb(9RY1-sr0}?GG-ZB&L+#n zjwNig$%E($F)Xxp2}%#FsAf|e^fPu6?*f}67i<9*AeGr}OOAEmuM>7qL zW>ANU zNgRHIP-VFh@OCl6JR*TFSZQG%RQ^CEQ1e%l?sZ-YAFa0kT#yq zB-T0`8gQ~+hp;`OQRppACgq%>wpQPeFEjiR zWn$yQ1mPgj%2`B^G8!DBp<{hB27yVem_b8$aNXVIyli}6{IT(*cwZc&KVig}_&hDm zfJ6Pe%=Y!r@EamH^cEC9!=GlqP=upzLBf5h8ommps!brMtPB~r@C&~`Kpt^tX00YT zQ$6Ui8bTSrzsiyXRnrUsg3bIjEn7lTm#Rom6?51jLm$b$$TnOR8~#Y9!tu{J#^G)YQPm_bu|DC( zuu17IL`U>F<0>P7^)J;*&^k~J?Z-0TxZ zIQV!%!C7Ri)u*jq5;G(BY4>Gd!7L@mPPxX&k1ss_|Ez=TeVgoZfJ*20VsoE>dq1{X zoZl5~8e^0!r3^vY^HhZb`Tj2dBcv2JFo1pW}iS#bJ(F55msE)Q3>uvcx%Tr#CYO~pq z0XBrt{gWwrPJd>|+SQ21R=eyF;|tsJz3^p$Lg^_r6;3Lr595)KD9B#(mG^9G1NX-j}4z}^&`LVOP_i8KwTkzba^`aVu&cQhR) z!2tw+@!Yiv*JB);FD#=Na^dQcM&isEIIS<9?y-T_keMPbrZ3tvJ2_Wz|NjI!|4WYR z|CdE2l<)r+m8tXpC*{iX|1;-5`3DM5spLicpKSEN|3$2a2k^*ldjB1MY}g;<@akJ< zu4b&mRs)u^zoO8?Z+P>I`OXb5)z{nF>yaed99bR95I@?;E)SgR1z(6C8Ds~=5*rvw zNn({{!@7J#Sxlt)&Y*Vskkz}(o>`u)ROT;kK z0Eo}nsl=hC+Kwg|{t3B0-|jAGHXC8vb!;qbRIzn7oWUchnxV70!CXqqAj~!uSfypM z)R(NOxRS#uY`CV;!uo}9E^00{lws7Y0Dx^QYgUC*VzYR7SD`p&-NM0QECbXz-B%w#I17hcTVGvG?l$AwMT>j@J_rdMRJ&D83}c8_jIg6ibWGeKJbnRG zI06ngM}yBF>FEqo(`&G>`}ru9Y+`Fy@n4wWI_29BWgZN<+dVIzl8 z8YPw%DY222*g&4Pk^)wVCVL57;4(k~e>d7PHQO`M*N}I!1r8d$PS0iFyG1}D9hyIq zOOcjl3R(&c1(`$oKpg+1i46)Yv1}wNER<`gvrCbCYBm*jIPs%eSW#6u9Kplns2)j# zR#jIZnj$6zKBPfr z9uIed93nN*BC4P(5eg)%Ny&I3;tE6*bRnVXgd+(_3iDx&+$Uu%#A}f-X-+7l3Nkj- z-GHc3UDBg`h!jldNmWV`A}e7f$%|T)5LOdaIT3Mh4rYQXMP)*hNH{DcSrZg3swpPH z^^g?d6Ye#Uh$ClO)W$(ZG8MRK;+D(kCISiIAeW14+taR1{fr zBvDN!ql6=B91}`X!<67rNd-i%5*rG|L(v40jYyJDBoa|d%%q-7%3&fukx)bqY1$Zl zC#golx=j0vE+%wEC&W}GY+p$Nt)b3G1VJ4`?86}`tVam;xF)GdQ6e-ERV}QEaiR+J zctp{ps6Y*L`}NNT!wA5b?BgSvZFt5n4+s@*u?M06AIquv+l2!%Von`%^uDezSA|O~!c*+X7o6E#h_jOlPqh=hbWgRO|{ zFlz(u11QXvoCus6fMPsL6uiX1^8~Pggn;+;bAExLz&BMSw*_9pc?FTP-~oKzgfCL~ zB7-jx$OaY@zG%P~34GB8ADSvy^%n_z$%HRZ_yU7(5Qbtg;Y$X5iNF_Z@S&}uReyoN z7ki9F6C1z86Xn;^;{5W3$}u6iGOV7Hv|hgcpn!=S?y0f^v2!pq9tJLTVIW561B?bz z&cN#D9atp?Rv=<@JbYd1!dHq`EP~eASkZx&@LL`azn8l3o8py<;1wNs1qWUt2mE;C zKsr%5XmXJQ3ClsKP!1%?T@H{u9zkew5d?|JK^{^N0~^vpF%X3D$U&2f97s$I^07Lb zT0{zz@kl|Fixfyq2=cLt4y;9FKpKw>$R{cT%`P$!F7Gdt0698_1SsQ?fMyp72vZ3t zGiej)E|IE(OJaN&KvC>1KpA*ui-@$+c+8toEfLIwk$ z56;x7mcR`G4lu$koGIkUg!3#~>p6BRHEp27V_V1<@d!rkFNe zTfXE-I*k;WvYLZj0?wrmW=7WZVX4Us5N_f*2~W@Sg9FhZ#pxSEJ_y5@No&272$q-*>g!pWF&VMK zVHLT@SdYgrsufew8H?W}bQREm6U$uBR$0uTI=F@`sSl^{FQznGK4oz;Mr0a>;U_i3 zWL0G14r4(%7_C)fSRdw%xEWGAoD-yAVYkTh3uzHYV+5Ku1WTn*z)Uo>)(a|cpVMtgh{|}VbupU5>3j~hkiseB$v%_P>~T-5&^%nz zyqTodi>b-Ln~Ce~anHyQ7bRO{VlXAJN|7m)1;&6<;{)Zogg7v?UGPVC_Qm&Tfy7t=k)rcH3uBFo+TZjVk zwv4FQ%=da&2mvCI0-lCdE85ySJ3RU8@KgQrkMDBn|9umQ<9PjFR`Sn(lf{rS)&D2s z%3uHQBkTVnTl<&re?0q)@p4R#=CA!bcm54zw2`!K?Dne||L(rzAgtAc4(T&jNa<7I z{yi%Oz*rM!voP4M@_ARr#}QHl3ma@x-xtlW3BFwVKW_cR;W$qJ7eu~b|F6PNo&Pu~ zS8xI^PcUdH5-dSPmB>t$L@GrA3DKA+$M8+wKH>?jg$E)~(!`eZ-qBtMS1xW))zXE zS%wv%AL8(N7x3b!H(;c~EDjg5mBY#uKjOcCY6|s_?8?*s#)qvY6vuJ(zbF;Pe@@wd zlXA_c8r$HzU1bYmrO4ykm=KQPn>>~6>8t@g9@`xR-0OH z7y0NrtV>f#{R-s0sNjqRFY<uBh$oZL1-L$bEftJ6CBtUm@dRrz^D8{Y6I& zGAx!1vYlO$v5L2G9*oSE5f4n@kH=5A8qIafYg-#Q6vG7o9_K05N8vkWsI_)UTgR&2 z`i2!PZL8sH?MoXvYrFzqA$h9+!x9euHn!9*?SMNBt+$QLoH-Pv^|7Ha5O~~M z7ISZP!c$5S1`{@%7|TVA$13DupGk}5)y7jguvSYAqu>yt%)l>5X<%t-VyLk4d6_Ed zz>z5c1Q`ef^4P)IlRb&Ft`5dLrNaX#m^3JoU$rl~OZ-_~F8aS>eQI#Ra2!wn^9Aw$ zA%05#PtKL6|AFsh3IDFw;@eW<77`M{N_~*9!XU&pR5NwJWgroKb|bpgOaEN|6&t1J04=s9*_LgpvTVa?Ck99tTa1=UR>3MSGfl&IaL<9 zt=I;8V+(Ahl#WP>lFA<|)3<`o`@)>jY$0cKrJOT*dCF*VNp@y2G zU!TH)yY}^WittRuq3eu@;pRGbz(jLZAP%KTOWD}Bpp56oNueF-1u^@E8M@BCWr={{ z@6JC25K$Y|6gE(#thdWry1tp?r)wj>&hN;sFTLdHQOwNZRYi~0YU*tTes@Bi_9;($ zSrjp=U*+u83G(g8WYsg&-&OB;zYphlIU3=LBo$Tl9=dwwfF`c;z#rko#7{79ZxyDc zG{TL+3ET`}MiFjRCc4KP&|_|N2`87a52&()mesRqgrQ2}DhOXXu7FIyI;FZV?Q6K& zpo`Mmmx^4R;Oi?S8clHog8Lv%BZnGE3ofZ>7hbm+Er#jzT3gT^6Q00oON8V6lk1-{ z{+H_iM_v8jsB)4W1K zxAT%({;;2I^^p9+2N)c$>Ps$G1=Et>idDvMIf~!3jKvwM4`86ivyiRfyN5M;E3sC7 z4Y8(WEGg)c8*yNrk-y={UV-4#b;N-IAc1!1u9)Ejx}gzo{%W~=KAz@S(EqsqCwc4) zFkg`WrQJ54^S?aBv9$m3_anN1-m(5`8EtFv`)|{Fe*gC*2h9J)J1(>Ya01mUm6F>e zhF;@IBI0x%KhI)7$MvP8_ky0?sV616SuD4r21;}im02b zLRZE0jb#9mS_&Sv2qhcp#BtmxWSgCo(e+v%Hau*qRwON4Q;~+Z{uA zrfqXeZ#lNp5~gTdd}UWGVrymCJOjkZwp`Eaa&#hXby_X6+iG%GcRj0hKWvu5*06P_ z!=1L?@H%G4)|-yy7~M9^T)=D7=-dxmTVbkX>` zqr+=AtoHq|Wxe3En+@J<3Eee?#kKHgwT-49mvxvZ0*}M+&V8O$TR{wjfW2IX#i`@ zyfJaYa*=WyC2H=Jk2ywW{$0h}@OwJ4ngV(KqZzn8u1%Mh`|xM}y}f2>8uPIRMEf$cz;wSw|^V0tOWtpUh7UIrVFq;gRo!aZzrHii$)7 zlqo`6N|(&4Qc6LvQOSjj9?lP*QWKD9_J8FHY=&MX?8D)!_j{WKrdc9`yYHzzL<$Mazmo}>EASJ~!UCW;BUG&J zv5dhrAVI4wEBZq;V_?9rWGWory9S!G&vx>=?Ik)ZLN#GdVgYMktB=n3tp>M}VrX>+ zOrj(!1O_pNhuykA)rc<_lzFae%di|rN#bM55oa9vj`9SZZxfG~6L6!J z6G0z3G`4PY{L})lcT3C0EeIvqUy2UJ_BH0v$_5i$ADGiAO9_GJ0KYY_KsLSsXht3ajXN~z1M-*q_eBj4S%Q2S= z?4yU(M7TbvhFglA@^~Z^p8UxTqHd+9OiHarK8P^k<;ZRlqBv7uBxrvWMzJ`T!yIcW z>R2T6)nFj$hrVI;Fbbkk#OjBqtbW#D^|#-XQ$>9MQnmk~VQO^xVX*i5<6C)t4)+H~ zXG3*$_`08+ejJ_*4i4nS!N*r`_7C=kKMYUz4$oD99(eQv;D0k_r5XB}@5;Nb z?PLYu)S0S_oUydq3TBis%pF_%jgF-#S45K}5yanwe7R8!#T~zlplysQBj5c>RuJBT zVKClWJ$4XCDQ-Cx3~}OyWw|tiPNA8V;nByF{$3CC@;*kiN0q*T0DCYMFDYJmv3D@s zyHk^^DfbKYxUo`?E4;UB@g;@6T!$NfSclJ(^9UN;RoZhRHRzA~phew9O?dw3n(*z9 zE7kc5iXKm||GBMMs@u;WtlRH~Sgza8Z`bYT&$_+t;uu=gkyF=3$NH^AOw+%i!e82^ z+w{Jx6o0wh51Ix*d4Cvy?k?5_QsvJzx1DY0>S{Z7wqbF&9dAc&unlX6?eX-NZJVd1nXAB9$>*$E?GyZ$ zYU7jKC|rb~$S1K976}t3`tHd4Y%WK6u#MMO}zZ2XAF5bc8F|cyF zJq8|+C)<7)`~i-R{{TnF4{O_rNbV&;z7uUbvv}K{Ot)d&f*hIflWxQ4*^Woa_Q?0P zf0>TpN6;^Ap;A0oLqJ|+YvsTC?btv6SpNR^FOUD*Y(MA!e3Ikg@qdly_`m<4W7YUi zE+4OsyY~MX`px*?X8U>kKgDs&=bE!9{+vv?n*LXPsKFgy`ybwJ&3&#pI$?vogS}H& z@xR+2Vn&7c!{b-|J%($+7hp#`?op{IgJG+9OD?U!>_g_#k5v_QtGCnIt^DUdG9`pf z29UCQ$ZrCD9^xpFsX5#h{jJq1DvIUOqQC$CdkK3}VyByr-txCWWbw{$QGpZos_j@A7yuD}-bDKb@18>f@ti|e@E{%^L>*>A4@O}+UX|Nm)@ofm_n zKKWE(7qjD!uMhV7Osm%GXN`WnJ~$n)@86vs9^lfS;?O&3y}tJWH!?G=6#VV7K@s0h zPwH2Q$UsPSO5t>zwC1L+wp-c3d-z9icbAOlozzbQv5P^}zLz3MyOYm^&4wbrfCb53 zNfg;3h38Lp>Jm(%plF}52zpwQUc=L|5UIw-vG97@ts&|_*lSLbXbfNF_q0@8rFFcn z?^eFrp^VrFUd7#T7d@>H_B~KhJ%z%wK^w0W6t-)da*HG)?R`9bQ|%y@ow{skWyg-( zYq)m(3+B5$4WYRYYY`0}W_N)$cjly;YS+T;bNp_h?e6eZwUO^>tiHQb=L)C}6|W!xH_8JEwm;h4fu4=R(XPV0Q&-nJb$WUW5?3Tn>`&3P zOWS?5*x!`sp#OHCLcz?Y_=#2_lYiLGi)wX_U94Iyb8!NUonvdrFZ>ag)q(681<7y@ zJv{@F{OT(Zqk^}7=!z>+eA@22Xd-gvWCsDUxnl)_m(c}w^AY^M@Wmx!+Nnd)dqT?` zecJAj{yr4ijV{9=;xP6G>g=HyK=om$9AJYyc_=)7yof>=DbR+pquWFApd4@;qeTKO z$Hm2i>4`DUBM{SRnQ*HM|p4^{7bEuU<8S-EFRY|?vD3_5C_>Kq@ zq4;?quZp@Cn6K1lFykI5Oi>F(T2~r0$;}}^GvjaYdFK3E!Y3QBsFh0EMk=Oxtq&tX zL)fv2q=e*EUADF~QpC$AJ%Fiv1+Y_W3{07cpnzMPdE%0lk*I`RNfz_Um0DHlJ&Iv+ zy#|mT_v7F?-$up*z>7J2Clv5?%r686ow{Z*W#|>|2-ApSU{ZRHF4Kt+6Io`K2yYf( z3{whaRYU$vOZ4uCY(zfb!6w!Zv}Z)3JF_hifh*mYF%Td6D2LFjY~mVojGGuIHO2tb zIPko0?`3S?5g>E**AOoWin1K0-r#yy2 zvw+8d`I28J7}5qb24(`g6n5gL3K%ZMbI>u!xSjG6#x;?-U!+| zig=K00%pR14V8}Ms)?JD_{c-{OpxF>mHn3SgR^&%3pbeiD(90bfiCU8fO(6;k!=!8 z$Iv+=ktP((R%Q%JaMDF5^1#Q)xw!Km<3C`t0Bwep(kV^RxRC+ZRI#;$eLOkXB#vO( zAq=i2Bk`!-BKARDgby9O6A=R1>}f0@J^ z-$2(upIr(SL7gMCO{Mihr(aIG4eh%#LiF^6mp z#Rh1vk8+n0xXFZ1{qIQS3z!RnpwJdH-(7ck%5$pn&WT}e#O)EmHH|PZBh$=HKZma= z1)_ifz2}QS4Q`%gwTfbjk{rkU8ih&4vn;oH+$eO96Gfk4I+kijU10bR&^C<{hx+n~ z(l@wI0BH7r;u($~PYOSbifquK9%9pgrx?6gjuVhbm0b(Ya6Khp@F&4FV0WUa4}A3E zXhJPkW7Eg22YGm8DQ7Z63-Uh}B4;0swoHc*noM78w)sf-&D0B!C7@G@*=eXL)ntT zq@geOkzjlCz>R1)LcjQOlZhQim!Nhsti-nkw33%;1V{-M6$DpUH%skTtXt%PEC||3 zJ>O&_Xm3bZ&4u(1QVrz10)PUF#=n*AxYJm)KV}H z)^DmFoCfmUM6izLC>;z7mw2(DHb6lpw4g$@p)LxwQLwHU^Z`yhNS5qT3P^&gkh)XG zG6Ri)-xp!#3zaCs$|09%oKHiVU(rgDTu)H`F2I4*tBMFe;KhE4mKa5+5l({9 zDD?lWL|4wkpkOIz2X{Vi=8{i(b8aZf($E?ueKZqLGh!e@C@?thXht*rO5l1_m3Pr0ZnsWe`Bs4dksa>&47!qFvH z0@x|D(TJisqimqG=X2mJ^ncAX2t~J3N^TQN0&D#VG92eDXH4+~A`E>9lQxmdPC#yO z9AfDa4F)A^fR0q&y6++M22;aQ5^r3FpixX&gOdn#QU(KtO_)l%bHrmC-3d@+U@{f%YU|1s&>xv~ z<%<7j?@QpLs?NnH3rhx-u&B7VW|I;KGmvOC+c}*8uoaAspKcW}W)Q%K z4ND{n-Z^vuz7VoGClWXc$U0ou04`o5Zx37maJ=@23JYVG^T27Tl_CxqJw`AIXhcsS$H7h}8KYMQU}QlX_yE`|9$9Nd)|u=qx{&ao zL<+JSkb0aQ$ey7`EH2?CP?{nz7r3#$xp}d6&UqQAaXBPDi3TBx1?TMUh{E#+eisp% za~#+gKYTuxA0IC6*C0Lt4~V)2!Z9&rG%g1tnB-hgRCCS{Y&Y50>2ri|9=u$88aZUK z7|%HvXx$*Qv~##DOc%ilXCU-Y$a09YKs(zRw_wE6pwO>

    7vILk*vAofp%dpOsD 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 -#include -#include -#include -#include -#include -#include -#include -#include "axhttp.h" - -#define HTTP_VERSION "HTTP/1.1" - -static const char * index_file = "index.html"; - -static int special_read(struct connstruct *cn, void *buf, size_t count); -static int special_write(struct connstruct *cn, - const char *buf, size_t count); -static void send_error(struct connstruct *cn, int err); -static int hexit(char c); -static void urldecode(char *buf); -static void buildactualfile(struct connstruct *cn); -static int sanitizefile(const char *buf); -static int sanitizehost(char *buf); -static int htaccess_check(struct connstruct *cn); -static const char *getmimetype(const char *name); - -#if defined(CONFIG_HTTP_DIRECTORIES) -static void urlencode(const uint8_t *s, char *t); -static void procdirlisting(struct connstruct *cn); -#endif -#if defined(CONFIG_HTTP_HAS_CGI) -static void proccgi(struct connstruct *cn); -static void decode_path_info(struct connstruct *cn, char *path_info); -static int init_read_post_data(char *buf, char *data, struct connstruct *cn, int old_rv); -#endif -#ifdef CONFIG_HTTP_HAS_AUTHORIZATION -static int auth_check(struct connstruct *cn); -#endif - -#if AXDEBUG -#define AXDEBUGSTART \ - { \ - FILE *axdout; \ - axdout = fopen("/var/log/axdebug", "a"); \ - -#define AXDEBUGEND \ - fclose(axdout); \ - } -#else /* AXDEBUG */ -#define AXDEBUGSTART -#define AXDEBUGEND -#endif /* AXDEBUG */ - -/* Returns 1 if elems should continue being read, 0 otherwise */ -static int procheadelem(struct connstruct *cn, char *buf) -{ - char *delim, *value; - - if ((delim = strchr(buf, ' ')) == NULL) - return 0; - - *delim = 0; - value = delim+1; - - if (strcmp(buf, "GET") == 0 || strcmp(buf, "HEAD") == 0 || - strcmp(buf, "POST") == 0) - { - if (buf[0] == 'H') - cn->reqtype = TYPE_HEAD; - else if (buf[0] == 'P') - cn->reqtype = TYPE_POST; - - if ((delim = strchr(value, ' ')) == NULL) /* expect HTTP type */ - return 0; - - *delim = 0; - urldecode(value); - - if (sanitizefile(value) == 0) - { - send_error(cn, 403); - return 0; - } - -#if defined(CONFIG_HTTP_HAS_CGI) - decode_path_info(cn, value); -#else - my_strncpy(cn->filereq, value, MAXREQUESTLENGTH); -#endif - cn->if_modified_since = -1; - } - else if (strcmp(buf, "Host:") == 0) - { - if (sanitizehost(value) == 0) - { - removeconnection(cn); - return 0; - } - - my_strncpy(cn->server_name, value, MAXREQUESTLENGTH); - } - else if (strcmp(buf, "Connection:") == 0 && strcmp(value, "close") == 0) - { - cn->close_when_done = 1; - } - else if (strcmp(buf, "If-Modified-Since:") == 0) - { - cn->if_modified_since = tdate_parse(value); - } - else if (strcmp(buf, "Expect:") == 0) - { - send_error(cn, 417); /* expectation failed */ - return 0; - } -#ifdef CONFIG_HTTP_HAS_AUTHORIZATION - else if (strcmp(buf, "Authorization:") == 0 && - strncmp(value, "Basic ", 6) == 0) - { - int size; - if (base64_decode(&value[6], strlen(&value[6]), - (uint8_t *)cn->authorization, &size)) - cn->authorization[0] = 0; /* error */ - else - cn->authorization[size] = 0; - } -#endif -#if defined(CONFIG_HTTP_HAS_CGI) - else if (strcmp(buf, "Content-Length:") == 0) - { - sscanf(value, "%d", &cn->content_length); - } - else if (strcmp(buf, "Cookie:") == 0) - { - my_strncpy(cn->cookie, value, MAXREQUESTLENGTH); - } -#endif - - return 1; -} - -#if defined(CONFIG_HTTP_DIRECTORIES) -static void procdirlisting(struct connstruct *cn) -{ - char buf[MAXREQUESTLENGTH]; - char actualfile[1024]; - - if (cn->reqtype == TYPE_HEAD) - { - snprintf(buf, sizeof(buf), HTTP_VERSION - " 200 OK\nContent-Type: text/html\n\n"); - write(cn->networkdesc, buf, strlen(buf)); - removeconnection(cn); - return; - } - - strcpy(actualfile, cn->actualfile); - -#ifdef WIN32 - strcat(actualfile, "*"); - cn->dirp = FindFirstFile(actualfile, &cn->file_data); - - if (cn->dirp == INVALID_HANDLE_VALUE) - { - send_error(cn, 404); - return; - } -#else - if ((cn->dirp = opendir(actualfile)) == NULL) - { - send_error(cn, 404); - return; - } -#endif - - snprintf(buf, sizeof(buf), HTTP_VERSION - " 200 OK\nContent-Type: text/html\n\n" - "\nDirectory Listing\n" - "

    Directory listing of %s://%s%s


    \n", - cn->is_ssl ? "https" : "http", cn->server_name, cn->filereq); - special_write(cn, buf, strlen(buf)); - cn->state = STATE_DOING_DIR; -} - -void procdodir(struct connstruct *cn) -{ -#ifndef WIN32 - struct dirent *dp; -#endif - char buf[MAXREQUESTLENGTH]; - char encbuf[1024]; - char *file; - - do - { - buf[0] = 0; - -#ifdef WIN32 - if (!FindNextFile(cn->dirp, &cn->file_data)) -#else - if ((dp = readdir(cn->dirp)) == NULL) -#endif - { - snprintf(buf, sizeof(buf), "\n"); - special_write(cn, buf, strlen(buf)); - removeconnection(cn); -#ifndef WIN32 - closedir(cn->dirp); -#endif - return; - } - -#ifdef WIN32 - file = cn->file_data.cFileName; -#else - file = dp->d_name; -#endif - - /* if no index file, don't display the ".." directory */ - if (cn->filereq[0] == '/' && cn->filereq[1] == '\0' && - strcmp(file, "..") == 0) - continue; - - /* don't display files beginning with "." */ - if (file[0] == '.' && file[1] != '.') - continue; - - /* make sure a '/' is at the end of a directory */ - if (cn->filereq[strlen(cn->filereq)-1] != '/') - strcat(cn->filereq, "/"); - - /* see if the dir + file is another directory */ - snprintf(buf, sizeof(buf), "%s%s", cn->actualfile, file); - if (isdir(buf)) - strcat(file, "/"); - - urlencode((uint8_t *)file, encbuf); - snprintf(buf, sizeof(buf), "
    %s
    \n", - cn->filereq, encbuf, file); - } while (special_write(cn, buf, strlen(buf))); -} - -/* Encode funny chars -> %xx in newly allocated storage */ -/* (preserves '/' !) */ -static void urlencode(const uint8_t *s, char *t) -{ - const uint8_t *p = s; - char *tp = t; - - for (; *p; p++) - { - if ((*p > 0x00 && *p < ',') || - (*p > '9' && *p < 'A') || - (*p > 'Z' && *p < '_') || - (*p > '_' && *p < 'a') || - (*p > 'z' && *p < 0xA1)) - { - sprintf((char *)tp, "%%%02X", *p); - tp += 3; - } - else - { - *tp = *p; - tp++; - } - } - - *tp='\0'; -} - -#endif - -void procreadhead(struct connstruct *cn) -{ - char buf[MAXREQUESTLENGTH*4], *tp, *next; - int rv; - - memset(buf, 0, MAXREQUESTLENGTH*4); - rv = special_read(cn, buf, sizeof(buf)-1); - if (rv <= 0) - { - if (rv < 0) /* really dead? */ - removeconnection(cn); - return; - } - - buf[rv] = '\0'; - next = tp = buf; - -#ifdef CONFIG_HTTP_HAS_AUTHORIZATION - cn->authorization[0] = 0; -#endif - - /* Split up lines and send to procheadelem() */ - while (*next != '\0') - { - /* If we have a blank line, advance to next stage */ - if (*next == '\r' || *next == '\n') - { -#if defined(CONFIG_HTTP_HAS_CGI) - if (cn->reqtype == TYPE_POST && cn->content_length > 0) - { - if (init_read_post_data(buf,next,cn,rv) == 0) - return; - } -#endif - - buildactualfile(cn); - cn->state = STATE_WANT_TO_SEND_HEAD; - return; - } - - while (*next != '\r' && *next != '\n' && *next != '\0') - next++; - - if (*next == '\r') - { - *next = '\0'; - next += 2; - } - else if (*next == '\n') - *next++ = '\0'; - - if (procheadelem(cn, tp) == 0) - return; - - tp = next; - } -} - -/* In this function we assume that the file has been checked for - * maliciousness (".."s, etc) and has been decoded - */ -void procsendhead(struct connstruct *cn) -{ - char buf[MAXREQUESTLENGTH]; - struct stat stbuf; - time_t now = cn->timeout - CONFIG_HTTP_TIMEOUT; - char date[32]; - int file_exists; - - /* are we trying to access a file over the HTTP connection instead of a - * HTTPS connection? Or is this directory disabled? */ - if (htaccess_check(cn)) - { - send_error(cn, 403); - return; - } - -#ifdef CONFIG_HTTP_HAS_AUTHORIZATION - if (auth_check(cn)) /* see if there is a '.htpasswd' file */ - { -#ifdef CONFIG_HTTP_VERBOSE - printf("axhttpd: access to %s denied\n", cn->filereq); TTY_FLUSH(); -#endif - removeconnection(cn); - return; - } -#endif - - file_exists = stat(cn->actualfile, &stbuf); - -#if defined(CONFIG_HTTP_HAS_CGI) - - if (file_exists != -1 && cn->is_cgi) - { - if ((stbuf.st_mode & S_IEXEC) == 0 || isdir(cn->actualfile)) - { - /* A non-executable file, or directory? */ - send_error(cn, 403); - } - else - proccgi(cn); - - return; - } -#endif - - /* look for "index.html"? */ - if (isdir(cn->actualfile)) - { - char tbuf[MAXREQUESTLENGTH]; - snprintf(tbuf, MAXREQUESTLENGTH, "%s%s", cn->actualfile, index_file); - - if ((file_exists = stat(tbuf, &stbuf)) != -1) - my_strncpy(cn->actualfile, tbuf, MAXREQUESTLENGTH); - else - { -#if defined(CONFIG_HTTP_DIRECTORIES) - /* If not, we do a directory listing of it */ - procdirlisting(cn); -#else - send_error(cn, 404); -#endif - return; - } - } - - if (file_exists == -1) - { - send_error(cn, 404); - return; - } - - strcpy(date, ctime(&now)); - - /* has the file been read before? */ - if (cn->if_modified_since != -1 && (cn->if_modified_since == 0 || - cn->if_modified_since >= stbuf.st_mtime)) - { - snprintf(buf, sizeof(buf), HTTP_VERSION" 304 Not Modified\nServer: " - "%s\nDate: %s\n", server_version, date); - special_write(cn, buf, strlen(buf)); - cn->state = STATE_WANT_TO_READ_HEAD; - return; - } - - if (cn->reqtype == TYPE_HEAD) - { - removeconnection(cn); - return; - } - else - { - int flags = O_RDONLY; -#if defined(WIN32) || defined(CONFIG_PLATFORM_CYGWIN) - flags |= O_BINARY; -#endif - cn->filedesc = open(cn->actualfile, flags); - - if (cn->filedesc < 0) - { - send_error(cn, 404); - return; - } - - snprintf(buf, sizeof(buf), HTTP_VERSION" 200 OK\nServer: %s\n" - "Content-Type: %s\nContent-Length: %ld\n" - "Date: %sLast-Modified: %s\n", server_version, - getmimetype(cn->actualfile), (long) stbuf.st_size, - date, ctime(&stbuf.st_mtime)); /* ctime() has a \n on the end */ - - special_write(cn, buf, strlen(buf)); - -#ifdef CONFIG_HTTP_VERBOSE - printf("axhttpd: %s:/%s\n", cn->is_ssl ? "https" : "http", cn->filereq); - TTY_FLUSH(); -#endif - -#ifdef WIN32 - for (;;) - { - procreadfile(cn); - if (cn->filedesc == -1) - break; - - do - { - procsendfile(cn); - } while (cn->state != STATE_WANT_TO_READ_FILE); - } -#else - cn->state = STATE_WANT_TO_READ_FILE; -#endif - } -} - -void procreadfile(struct connstruct *cn) -{ - int rv = read(cn->filedesc, cn->databuf, BLOCKSIZE); - - if (rv <= 0) - { - close(cn->filedesc); - cn->filedesc = -1; - - if (cn->close_when_done) /* close immediately */ - removeconnection(cn); - else - { /* keep socket open - HTTP 1.1 */ - cn->state = STATE_WANT_TO_READ_HEAD; - cn->numbytes = 0; - } - - return; - } - - cn->numbytes = rv; - cn->state = STATE_WANT_TO_SEND_FILE; -} - -void procsendfile(struct connstruct *cn) -{ - int rv = special_write(cn, cn->databuf, cn->numbytes); - - if (rv < 0) - removeconnection(cn); - else if (rv == cn->numbytes) - { - cn->state = STATE_WANT_TO_READ_FILE; - } - else if (rv == 0) - { - /* Do nothing */ - } - else - { - memmove(cn->databuf, cn->databuf + rv, cn->numbytes - rv); - cn->numbytes -= rv; - } -} - -#if defined(CONFIG_HTTP_HAS_CGI) -/* Should this be a bit more dynamic? It would mean more calls to malloc etc */ -#define CGI_ARG_SIZE 17 - -static void proccgi(struct connstruct *cn) -{ - int tpipe[2], spipe[2]; - char *myargs[2]; - char cgienv[CGI_ARG_SIZE][MAXREQUESTLENGTH]; - char * cgiptr[CGI_ARG_SIZE+4]; - const char *type = "HEAD"; - int cgi_index = 0, i; - pid_t pid; -#ifdef WIN32 - int tmp_stdout; -#endif - - snprintf(cgienv[0], MAXREQUESTLENGTH, - HTTP_VERSION" 200 OK\nServer: %s\n%s", - server_version, (cn->reqtype == TYPE_HEAD) ? "\n" : ""); - special_write(cn, cgienv[0], strlen(cgienv[0])); - - if (cn->reqtype == TYPE_HEAD) - { - removeconnection(cn); - return; - } - -#ifdef CONFIG_HTTP_VERBOSE - printf("[CGI]: %s:/%s\n", cn->is_ssl ? "https" : "http", cn->filereq); - TTY_FLUSH(); -#endif - - /* win32 cgi is a bit too painful */ -#ifndef WIN32 - /* set up pipe that is used for sending POST query data to CGI script*/ - if (cn->reqtype == TYPE_POST) - { - if (pipe(spipe) == -1) - { - printf("[CGI]: could not create pipe"); - TTY_FLUSH(); - return; - } - } - - if (pipe(tpipe) == -1) - { - printf("[CGI]: could not create pipe"); - TTY_FLUSH(); - return; - } - - /* - * use vfork() instead of fork() for performance - */ - if ((pid = vfork()) > 0) /* parent */ - { - /* Send POST query data to CGI script */ - if ((cn->reqtype == TYPE_POST) && (cn->content_length > 0)) - { - write(spipe[1], cn->post_data, cn->content_length); - close(spipe[0]); - close(spipe[1]); - - /* free the memory that is allocated in read_post_data() */ - free(cn->post_data); - cn->post_data = NULL; - } - - /* Close the write descriptor */ - close(tpipe[1]); - cn->filedesc = tpipe[0]; - cn->state = STATE_WANT_TO_READ_FILE; - cn->close_when_done = 1; - return; - } - - if (pid < 0) /* vfork failed */ - exit(1); - - /* The problem child... */ - - /* Our stdout/stderr goes to the socket */ - dup2(tpipe[1], 1); - dup2(tpipe[1], 2); - - /* If it was a POST request, send the socket data to our stdin */ - if (cn->reqtype == TYPE_POST) - dup2(spipe[0], 0); - else /* Otherwise we can shutdown the read side of the sock */ - shutdown(cn->networkdesc, 0); - - myargs[0] = cn->actualfile; - myargs[1] = NULL; - - /* - * set the cgi args. A url is defined by: - * http://$SERVER_NAME:$SERVER_PORT$SCRIPT_NAME$PATH_INFO?$QUERY_STRING - * TODO: other CGI parameters? - */ - sprintf(cgienv[cgi_index++], "SERVER_SOFTWARE=%s", server_version); - strcpy(cgienv[cgi_index++], "DOCUMENT_ROOT=" CONFIG_HTTP_WEBROOT); - snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH, - "SERVER_NAME=%s", cn->server_name); - sprintf(cgienv[cgi_index++], "SERVER_PORT=%d", - cn->is_ssl ? CONFIG_HTTP_HTTPS_PORT : CONFIG_HTTP_PORT); - snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH, - "REQUEST_URI=%s", cn->uri_request); - snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH, - "SCRIPT_NAME=%s", cn->filereq); - snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH, - "PATH_INFO=%s", cn->uri_path_info); - snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH, - "QUERY_STRING=%s", cn->uri_query); - snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH, - "REMOTE_ADDR=%s", cn->remote_addr); - snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH, - "HTTP_COOKIE=%s", cn->cookie); /* note: small size */ -#if defined(CONFIG_HTTP_HAS_AUTHORIZATION) - snprintf(cgienv[cgi_index++], MAXREQUESTLENGTH, - "REMOTE_USER=%s", cn->authorization); -#endif - - switch (cn->reqtype) - { - case TYPE_GET: - type = "GET"; - break; - - case TYPE_POST: - type = "POST"; - sprintf(cgienv[cgi_index++], - "CONTENT_LENGTH=%d", cn->content_length); - strcpy(cgienv[cgi_index++], /* hard-code? */ - "CONTENT_TYPE=application/x-www-form-urlencoded"); - break; - } - - sprintf(cgienv[cgi_index++], "REQUEST_METHOD=%s", type); - - if (cn->is_ssl) - strcpy(cgienv[cgi_index++], "HTTPS=on"); - -#ifdef CONFIG_PLATFORM_CYGWIN - /* TODO: find out why Lua needs this */ - strcpy(cgienv[cgi_index++], "PATH=/usr/bin"); -#endif - - if (cgi_index >= CGI_ARG_SIZE) - { - printf("Content-type: text/plain\n\nToo many CGI args (%d, %d)\n", - cgi_index, CGI_ARG_SIZE); - _exit(1); - } - - /* copy across the pointer indexes */ - for (i = 0; i < cgi_index; i++) - cgiptr[i] = cgienv[i]; - - cgiptr[i++] = "AUTH_TYPE=Basic"; - cgiptr[i++] = "GATEWAY_INTERFACE=CGI/1.1"; - cgiptr[i++] = "SERVER_PROTOCOL="HTTP_VERSION; - cgiptr[i] = NULL; - - execve(myargs[0], myargs, cgiptr); - printf("Content-type: text/plain\n\nshouldn't get here\n"); - _exit(1); -#endif -} - -static char * cgi_filetype_match(struct connstruct *cn, const char *fn) -{ - struct cgiextstruct *tp = cgiexts; - - while (tp != NULL) - { - char *t; - - if ((t = strstr(fn, tp->ext)) != NULL) - { - t += strlen(tp->ext); - - if (*t == '/' || *t == '\0') - { -#ifdef CONFIG_HTTP_ENABLE_LUA - if (strcmp(tp->ext, ".lua") == 0 || strcmp(tp->ext, ".lp") == 0) - cn->is_lua = 1; -#endif - - return t; - } - else - return NULL; - - } - - tp = tp->next; - } - - return NULL; -} - -static void decode_path_info(struct connstruct *cn, char *path_info) -{ - char *cgi_delim; - - cn->is_cgi = 0; -#ifdef CONFIG_HTTP_ENABLE_LUA - cn->is_lua = 0; -#endif - *cn->uri_request = '\0'; - *cn->uri_path_info = '\0'; - *cn->uri_query = '\0'; - - my_strncpy(cn->uri_request, path_info, MAXREQUESTLENGTH); - - /* query info? */ - if ((cgi_delim = strchr(path_info, '?'))) - { - *cgi_delim = '\0'; - my_strncpy(cn->uri_query, cgi_delim+1, MAXREQUESTLENGTH); - } - - if ((cgi_delim = cgi_filetype_match(cn, path_info)) != NULL) - { - cn->is_cgi = 1; /* definitely a CGI script */ - - /* path info? */ - if (*cgi_delim != '\0') - { - my_strncpy(cn->uri_path_info, cgi_delim, MAXREQUESTLENGTH); - *cgi_delim = '\0'; - } - } - - /* the bit at the start must be the script name */ - my_strncpy(cn->filereq, path_info, MAXREQUESTLENGTH); -} - -static int init_read_post_data(char *buf, char *data, - struct connstruct *cn, int old_rv) -{ - char *next = data; - int rv = old_rv; - char *post_data; - - /* Too much Post data to send. MAXPOSTDATASIZE should be - configured (now it can be chaged in the header file) */ - if (cn->content_length > MAXPOSTDATASIZE) - { - send_error(cn, 418); - return 0; - } - - /* remove CRLF */ - while ((*next == '\r' || *next == '\n') && (next < &buf[rv])) - next++; - - if (cn->post_data == NULL) - { - cn->post_data = (char *) calloc(1, (cn->content_length + 1)); - /* Allocate buffer for the POST data that will be used by proccgi - to send POST data to the CGI script */ - - if (cn->post_data == NULL) - { - printf("axhttpd: could not allocate memory for POST data\n"); - TTY_FLUSH(); - send_error(cn, 599); - return 0; - } - } - - cn->post_state = 0; - cn->post_read = 0; - post_data = cn->post_data; - - while (next < &buf[rv]) - { - /*copy POST data to buffer*/ - *post_data = *next; - post_data++; - next++; - cn->post_read++; - if (cn->post_read == cn->content_length) - { - /* No more POST data to be copied */ - *post_data = '\0'; - return 1; - } - } - - /* More POST data has to be read. read_post_data will continue with that */ - cn->post_state = 1; - return 0; -} - -void read_post_data(struct connstruct *cn) -{ - char buf[MAXREQUESTLENGTH*4], *next; - char *post_data; - int rv; - - bzero(buf,MAXREQUESTLENGTH*4); - rv = special_read(cn, buf, sizeof(buf)-1); - if (rv <= 0) - { - if (rv < 0) /* really dead? */ - removeconnection(cn); - return; - } - - buf[rv] = '\0'; - next = buf; - - post_data = &cn->post_data[cn->post_read]; - - while (next < &buf[rv]) - { - *post_data = *next; - post_data++; - next++; - cn->post_read++; - if (cn->post_read == cn->content_length) - { - /* No more POST data to be copied */ - *post_data='\0'; - cn->post_state = 0; - buildactualfile(cn); - cn->state = STATE_WANT_TO_SEND_HEAD; - return; - } - } - - /* More POST data to read */ -} - -#endif /* CONFIG_HTTP_HAS_CGI */ - -/* Decode string %xx -> char (in place) */ -static void urldecode(char *buf) -{ - int v; - char *p, *s, *w; - - w = p = buf; - - while (*p) - { - v = 0; - - if (*p == '%') - { - s = p; - s++; - - if (isxdigit((int) s[0]) && isxdigit((int) s[1])) - { - v = hexit(s[0])*16 + hexit(s[1]); - - if (v) - { - /* do not decode %00 to null char */ - *w = (char)v; - p = &s[1]; - } - } - - } - - if (!v) *w=*p; - p++; - w++; - } - - *w='\0'; -} - -static int hexit(char c) -{ - if (c >= '0' && c <= '9') - return c - '0'; - else if (c >= 'a' && c <= 'f') - return c - 'a' + 10; - else if (c >= 'A' && c <= 'F') - return c - 'A' + 10; - else - return 0; -} - -static void buildactualfile(struct connstruct *cn) -{ - char *cp; - snprintf(cn->actualfile, MAXREQUESTLENGTH, ".%s", cn->filereq); - -#ifndef WIN32 - /* Add directory slash if not there */ - if (isdir(cn->actualfile) && - cn->actualfile[strlen(cn->actualfile)-1] != '/') - strcat(cn->actualfile, "/"); - - /* work out the directory name */ - strncpy(cn->dirname, cn->actualfile, MAXREQUESTLENGTH); - if ((cp = strrchr(cn->dirname, '/')) == NULL) - cn->dirname[0] = 0; - else - *cp = 0; -#else - { - char curr_dir[MAXREQUESTLENGTH]; - char path[MAXREQUESTLENGTH]; - char *t = cn->actualfile; - - GetCurrentDirectory(MAXREQUESTLENGTH, curr_dir); - - /* convert all the forward slashes to back slashes */ - while ((t = strchr(t, '/'))) - *t++ = '\\'; - - snprintf(path, MAXREQUESTLENGTH, "%s%s", curr_dir, cn->actualfile); - memcpy(cn->actualfile, path, MAXREQUESTLENGTH); - - /* Add directory slash if not there */ - if (isdir(cn->actualfile) && - cn->actualfile[strlen(cn->actualfile)-1] != '\\') - strcat(cn->actualfile, "\\"); - - /* work out the directory name */ - strncpy(cn->dirname, cn->actualfile, MAXREQUESTLENGTH); - if ((cp = strrchr(cn->dirname, '\\')) == NULL) - cn->dirname[0] = 0; - else - *cp = 0; - } -#endif - -#if defined(CONFIG_HTTP_ENABLE_LUA) - /* - * Use the lua launcher if this file has a lua extension. Put this at the - * end as we need the directory name. - */ - if (cn->is_lua) - sprintf(cn->actualfile, "%s%s", CONFIG_HTTP_LUA_PREFIX, - CONFIG_HTTP_LUA_CGI_LAUNCHER); -#endif -} - -static int sanitizefile(const char *buf) -{ - int len, i; - - /* Don't accept anything not starting with a / */ - if (*buf != '/') - return 0; - - len = strlen(buf); - for (i = 0; i < len; i++) - { - /* Check for "/." i.e. don't send files starting with a . */ - if (buf[i] == '/' && buf[i+1] == '.') - return 0; - } - - return 1; -} - -static int sanitizehost(char *buf) -{ - while (*buf != '\0') - { - /* Handle the port */ - if (*buf == ':') - { - *buf = '\0'; - return 1; - } - - /* Enforce some basic URL rules... */ - if ((isalnum(*buf) == 0 && *buf != '-' && *buf != '.') || - (*buf == '.' && *(buf+1) == '.') || - (*buf == '.' && *(buf+1) == '-') || - (*buf == '-' && *(buf+1) == '.')) - return 0; - - buf++; - } - - return 1; -} - -static FILE * exist_check(struct connstruct *cn, const char *check_file) -{ - char pathname[MAXREQUESTLENGTH]; - snprintf(pathname, MAXREQUESTLENGTH, "%s/%s", cn->dirname, check_file); - return fopen(pathname, "r"); -} - -#ifdef CONFIG_HTTP_HAS_AUTHORIZATION -static void send_authenticate(struct connstruct *cn, const char *realm) -{ - char buf[1024]; - - snprintf(buf, sizeof(buf), HTTP_VERSION" 401 Unauthorized\n" - "WWW-Authenticate: Basic\n" - "realm=\"%s\"\n", realm); - special_write(cn, buf, strlen(buf)); -} - -static int check_digest(char *salt, const char *msg_passwd) -{ - uint8_t b256_salt[MAXREQUESTLENGTH]; - uint8_t real_passwd[MD5_SIZE]; - int salt_size; - char *b64_passwd; - uint8_t md5_result[MD5_SIZE]; - MD5_CTX ctx; - - /* retrieve the salt */ - if ((b64_passwd = strchr(salt, '$')) == NULL) - return -1; - - *b64_passwd++ = 0; - if (base64_decode(salt, strlen(salt), b256_salt, &salt_size)) - return -1; - - if (base64_decode(b64_passwd, strlen(b64_passwd), real_passwd, NULL)) - return -1; - - /* very simple MD5 crypt algorithm, but then the salt we use is large */ - MD5_Init(&ctx); - MD5_Update(&ctx, b256_salt, salt_size); /* process the salt */ - MD5_Update(&ctx, (uint8_t *)msg_passwd, strlen(msg_passwd)); - MD5_Final(md5_result, &ctx); - return memcmp(md5_result, real_passwd, MD5_SIZE);/* 0 = ok */ -} - -static int auth_check(struct connstruct *cn) -{ - char line[MAXREQUESTLENGTH]; - FILE *fp; - char *cp; - - if ((fp = exist_check(cn, ".htpasswd")) == NULL) - return 0; /* no .htpasswd file, so let though */ - - if (cn->authorization[0] == 0) - goto error; - - /* cn->authorization is in form "username:password" */ - if ((cp = strchr(cn->authorization, ':')) == NULL) - goto error; - else - *cp++ = 0; /* cp becomes the password */ - - while (fgets(line, sizeof(line), fp) != NULL) - { - char *b64_file_passwd; - int l = strlen(line); - - /* nuke newline */ - if (line[l-1] == '\n') - line[l-1] = 0; - - /* line is form "username:salt(b64)$password(b64)" */ - if ((b64_file_passwd = strchr(line, ':')) == NULL) - continue; - - *b64_file_passwd++ = 0; - - if (strcmp(line, cn->authorization)) /* our user? */ - continue; - - if (check_digest(b64_file_passwd, cp) == 0) - { - fclose(fp); - return 0; - } - } - -error: - fclose(fp); - send_authenticate(cn, cn->server_name); - return -1; -} -#endif - -static int htaccess_check(struct connstruct *cn) -{ - char line[MAXREQUESTLENGTH]; - FILE *fp; - int ret = 0; - - if ((fp = exist_check(cn, ".htaccess")) == NULL) - return 0; /* no .htaccess file, so let though */ - - while (fgets(line, sizeof(line), fp) != NULL) - { - if (strstr(line, "Deny all") || /* access to this dir denied */ - /* Access will be denied unless SSL is active */ - (!cn->is_ssl && strstr(line, "SSLRequireSSL")) || - /* Access will be denied if SSL is active */ - (cn->is_ssl && strstr(line, "SSLDenySSL"))) - { - ret = -1; - break; - } - } - - fclose(fp); - return ret; -} - -static void send_error(struct connstruct *cn, int err) -{ - char buf[MAXREQUESTLENGTH]; - char *title; - char *text; - - switch (err) - { - case 403: - title = "Forbidden"; - text = "File is protected"; -#ifdef CONFIG_HTTP_VERBOSE - printf("axhttpd: access to %s denied\n", cn->filereq); TTY_FLUSH(); -#endif - break; - - case 404: - title = "Not Found"; - text = title; - break; - - case 418: - title = "POST data size is to large"; - text = title; - break; - - default: - title = "Unknown"; - text = "Unknown"; - break; - } - - snprintf(buf, MAXREQUESTLENGTH, "HTTP/1.1 %d %s\n" - "Content-Type: text/html\n" - "Cache-Control: no-cache,no-store\n" - "Connection: close\n\n" - "\n\n%d %s\n" - "

    %d %s

    \n\n", - err, title, err, title, err, text); - special_write(cn, buf, strlen(buf)); - removeconnection(cn); -} - -static const char *getmimetype(const char *name) -{ - /* only bother with a few mime types - let the browser figure the rest out */ - if (strstr(name, ".htm")) - return "text/html"; - else if (strstr(name, ".css")) - return "text/css"; - else - return "application/octet-stream"; -} - -static int special_write(struct connstruct *cn, - const char *buf, size_t count) -{ - if (cn->is_ssl) - { - SSL *ssl = cn->ssl; - return ssl ? ssl_write(ssl, (uint8_t *)buf, count) : -1; - } - else - return SOCKET_WRITE(cn->networkdesc, buf, count); -} - -static int special_read(struct connstruct *cn, void *buf, size_t count) -{ - int res; - - if (cn->is_ssl) - { - uint8_t *read_buf; - if ((res = ssl_read(cn->ssl, &read_buf)) > SSL_OK) - { - memcpy(buf, read_buf, res > (int)count ? count : res); - } - } - else - res = SOCKET_READ(cn->networkdesc, buf, count); - - return res; -} - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/httpd/tdate_parse.c b/package/luci/libs/luci-lib-nixio/axTLS/httpd/tdate_parse.c deleted file mode 100644 index 813bdc578b..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/httpd/tdate_parse.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include "axhttp.h" - -struct day_mon_map -{ - const char* s; - uint8_t l; -}; - -static struct day_mon_map wday_tab[] = -{ - { "Sun", 0 }, { "Mon", 1 }, { "Tue", 2 }, { "Wed", 3 }, - { "Thu", 4 }, { "Fri", 5 }, { "Sat", 6 }, -}; - -static struct day_mon_map mon_tab[] = -{ - { "Jan", 0 }, { "Feb", 1 }, { "Mar", 2 }, { "Apr", 3 }, - { "May", 4 }, { "Jun", 5 }, { "Jul", 6 }, { "Aug", 7 }, - { "Sep", 8 }, { "Oct", 9 }, { "Nov", 10 }, { "Dec", 11 }, -}; - -static int day_mon_map_compare(const char *v1, const char *v2) -{ - return strcmp(((struct day_mon_map*)v1)->s, ((struct day_mon_map*)v2)->s); -} - -void tdate_init(void) -{ - qsort(wday_tab, sizeof(wday_tab)/sizeof(struct day_mon_map), - sizeof(struct day_mon_map), - (int (*)(const void *, const void *))day_mon_map_compare); - qsort(mon_tab, sizeof(mon_tab)/sizeof(struct day_mon_map), - sizeof(struct day_mon_map), - (int (*)(const void *, const void *))day_mon_map_compare); -} - -static int8_t day_mon_map_search(const char* str, - const struct day_mon_map* tab, int n) -{ - struct day_mon_map *search = bsearch(&str, tab, n, - sizeof(struct day_mon_map), - (int (*)(const void *, const void *))day_mon_map_compare); - return search ? search->l : -1; -} - -time_t tdate_parse(const char* str) -{ - struct tm tm; - char str_mon[4], str_wday[4]; - int tm_sec, tm_min, tm_hour, tm_mday, tm_year; - - /* Initialize. */ - memset(&tm, 0, sizeof(struct tm)); - - /* wdy, DD mth YY HH:MM:SS GMT */ - if ((sscanf(str, "%3[a-zA-Z], %d %3[a-zA-Z] %d %d:%d:%d GMT", - str_wday, &tm_mday, str_mon, &tm_year, &tm_hour, &tm_min, - &tm_sec) == 7) || - /* wdy mth DD HH:MM:SS YY */ - (sscanf(str, "%3[a-zA-Z] %3[a-zA-Z] %d %d:%d:%d %d", - str_wday, str_mon, &tm_mday, &tm_hour, &tm_min, &tm_sec, - &tm_year) == 7)) - { - int8_t tm_wday = day_mon_map_search(str_wday, wday_tab, - sizeof(wday_tab)/sizeof(struct day_mon_map)); - int8_t tm_mon = day_mon_map_search(str_mon, mon_tab, - sizeof(mon_tab)/sizeof(struct day_mon_map)); - - if (tm_wday < 0 || tm_mon < 0) - return -1; - - tm.tm_wday = tm_wday; - tm.tm_mon = tm_mon; - tm.tm_mday = tm_mday; - tm.tm_hour = tm_hour; - tm.tm_min = tm_min; - tm.tm_sec = tm_sec; - tm.tm_year = tm_year - 1900; - return mktime(&tm); - } - - return -1; /* error */ -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/samples/Config.in deleted file mode 100644 index ecad25eeb7..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/Config.in +++ /dev/null @@ -1,63 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see scripts/config/Kconfig-language.txt -# -menu "Samples" - -config CONFIG_SAMPLES - bool "Create Samples" - default y - help - axTLS contains various sample code. - - Select Y here if you want to build the various samples. - -config CONFIG_C_SAMPLES - bool "axssl - C version" - default y - depends on CONFIG_SAMPLES - help - Build the "C" version of axssl. The features enabled are very - dependent on the build mode ('full' mode will give all features). - -config CONFIG_CSHARP_SAMPLES - bool "axssl - C# version" - default y - depends on CONFIG_SAMPLES && CONFIG_CSHARP_BINDINGS - help - Build the "C#" version of axssl. The features enabled are very - dependent on the build mode ('full' mode will give all features). - -config CONFIG_VBNET_SAMPLES - bool "axssl - VB.NET version" - default y - depends on CONFIG_SAMPLES && CONFIG_VBNET_BINDINGS - help - Build the "VB.NET" version of axssl. The features enabled are very - dependent on the build mode ('full' mode will give all features). - -config CONFIG_JAVA_SAMPLES - bool "axssl - Java version" - default y - depends on CONFIG_SAMPLES && CONFIG_JAVA_BINDINGS - help - Build the "Java" version of axssl. The features enabled are very - dependent on the build mode ('full' mode will give all features). - -config CONFIG_PERL_SAMPLES - bool "axssl - Perl version" - default y - depends on CONFIG_SAMPLES && CONFIG_PERL_BINDINGS - help - Build the "Perl" version of axssl. The features enabled are very - dependent on the build mode ('full' mode will give all features). - -config CONFIG_LUA_SAMPLES - bool "axssl - Lua version" - default y - depends on CONFIG_SAMPLES && CONFIG_LUA_BINDINGS - help - Build the "Lua" version of axssl. The features enabled are very - dependent on the build mode ('full' mode will give all features). -endmenu - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/Makefile deleted file mode 100644 index afbdd43d1b..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -all: - -include ../config/.config -include ../config/makefile.conf - -all: -ifdef CONFIG_C_SAMPLES - $(MAKE) -C c -endif -ifdef CONFIG_CSHARP_SAMPLES - $(MAKE) -C csharp -endif -ifdef CONFIG_VBNET_SAMPLES - $(MAKE) -C vbnet -endif -ifdef CONFIG_JAVA_SAMPLES - $(MAKE) -C java -endif -ifdef CONFIG_PERL_SAMPLES - $(MAKE) -C perl -endif -ifdef CONFIG_LUA_SAMPLES - $(MAKE) -C lua -endif - -clean:: - $(MAKE) -C c clean - $(MAKE) -C csharp clean - $(MAKE) -C vbnet clean - $(MAKE) -C java clean - $(MAKE) -C perl clean - $(MAKE) -C lua clean diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/c/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/c/Makefile deleted file mode 100644 index 17cf9e7c12..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/c/Makefile +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -all : sample - -AXTLS_HOME=../.. - -include $(AXTLS_HOME)/config/.config -include $(AXTLS_HOME)/config/makefile.conf - -ifndef CONFIG_PLATFORM_WIN32 - -ifdef CONFIG_PLATFORM_CYGWIN -TARGET=$(AXTLS_HOME)/$(STAGE)/axssl.exe -else -TARGET=$(AXTLS_HOME)/$(STAGE)/axssl -endif # cygwin - -LIBS=$(AXTLS_HOME)/$(STAGE) -else -TARGET=$(AXTLS_HOME)/$(STAGE)/axssl.exe -endif - -ifndef CONFIG_C_SAMPLES -sample: - -else -sample : $(TARGET) -OBJ= axssl.o -include $(AXTLS_HOME)/config/makefile.post - -ifndef CONFIG_PLATFORM_WIN32 - -$(TARGET): $(OBJ) $(LIBS)/libaxtls.a - $(LD) $(LDFLAGS) -o $@ $(OBJ) -L$(LIBS) -laxtls -ifdef CONFIG_STRIP_UNWANTED_SECTIONS - $(STRIP) --remove-section=.comment $(TARGET) -endif # use strip -else # Win32 - -$(TARGET): $(OBJ) - $(LD) $(LDFLAGS) $(AXTLS_HOME)/config/axtls.res /out:$@ $^ /libpath:"$(AXTLS_HOME)/$(STAGE)" axtls.lib -endif - -endif # CONFIG_C_SAMPLES - -clean:: - -@rm -f $(AXTLS_HOME)/$(STAGE)/axssl* - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/c/axssl.c b/package/luci/libs/luci-lib-nixio/axTLS/samples/c/axssl.c deleted file mode 100644 index 6892ee452b..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/c/axssl.c +++ /dev/null @@ -1,883 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Demonstrate the use of the axTLS library in C with a set of - * command-line parameters similar to openssl. In fact, openssl clients - * should be able to communicate with axTLS servers and visa-versa. - * - * This code has various bits enabled depending on the configuration. To enable - * the most interesting version, compile with the 'full mode' enabled. - * - * To see what options you have, run the following: - * > axssl s_server -? - * > axssl s_client -? - * - * The axtls shared library must be in the same directory or be found - * by the OS. - */ -#include -#include -#include -#include "ssl.h" - -/* define standard input */ -#ifndef STDIN_FILENO -#define STDIN_FILENO 0 -#endif - -static void do_server(int argc, char *argv[]); -static void print_options(char *option); -static void print_server_options(char *option); -static void do_client(int argc, char *argv[]); -static void print_client_options(char *option); -static void display_cipher(SSL *ssl); -static void display_session_id(SSL *ssl); - -/** - * Main entry point. Doesn't do much except works out whether we are a client - * or a server. - */ -int main(int argc, char *argv[]) -{ -#ifdef WIN32 - WSADATA wsaData; - WORD wVersionRequested = MAKEWORD(2, 2); - WSAStartup(wVersionRequested, &wsaData); -#elif !defined(CONFIG_PLATFORM_SOLARIS) - signal(SIGPIPE, SIG_IGN); /* ignore pipe errors */ -#endif - - if (argc == 2 && strcmp(argv[1], "version") == 0) - { - printf("axssl %s %s\n", ssl_version(), __DATE__); - exit(0); - } - - if (argc < 2 || ( - strcmp(argv[1], "s_server") && strcmp(argv[1], "s_client"))) - print_options(argc > 1 ? argv[1] : ""); - - strcmp(argv[1], "s_server") ? - do_client(argc, argv) : do_server(argc, argv); - return 0; -} - -/** - * Implement the SSL server logic. - */ -static void do_server(int argc, char *argv[]) -{ - int i = 2; - uint16_t port = 4433; - uint32_t options = SSL_DISPLAY_CERTS; - int client_fd; - SSL_CTX *ssl_ctx; - int server_fd, res = 0; - socklen_t client_len; -#ifndef CONFIG_SSL_SKELETON_MODE - char *private_key_file = NULL; - const char *password = NULL; - char **cert; - int cert_index = 0; - int cert_size = ssl_get_config(SSL_MAX_CERT_CFG_OFFSET); -#endif -#ifdef WIN32 - char yes = 1; -#else - int yes = 1; -#endif - struct sockaddr_in serv_addr; - struct sockaddr_in client_addr; - int quiet = 0; -#ifdef CONFIG_SSL_CERT_VERIFICATION - int ca_cert_index = 0; - int ca_cert_size = ssl_get_config(SSL_MAX_CA_CERT_CFG_OFFSET); - char **ca_cert = (char **)calloc(1, sizeof(char *)*ca_cert_size); -#endif - fd_set read_set; - -#ifndef CONFIG_SSL_SKELETON_MODE - cert = (char **)calloc(1, sizeof(char *)*cert_size); -#endif - - while (i < argc) - { - if (strcmp(argv[i], "-accept") == 0) - { - if (i >= argc-1) - { - print_server_options(argv[i]); - } - - port = atoi(argv[++i]); - } -#ifndef CONFIG_SSL_SKELETON_MODE - else if (strcmp(argv[i], "-cert") == 0) - { - if (i >= argc-1 || cert_index >= cert_size) - { - print_server_options(argv[i]); - } - - cert[cert_index++] = argv[++i]; - } - else if (strcmp(argv[i], "-key") == 0) - { - if (i >= argc-1) - { - print_server_options(argv[i]); - } - - private_key_file = argv[++i]; - options |= SSL_NO_DEFAULT_KEY; - } - else if (strcmp(argv[i], "-pass") == 0) - { - if (i >= argc-1) - { - print_server_options(argv[i]); - } - - password = argv[++i]; - } -#endif - else if (strcmp(argv[i], "-quiet") == 0) - { - quiet = 1; - options &= ~SSL_DISPLAY_CERTS; - } -#ifdef CONFIG_SSL_CERT_VERIFICATION - else if (strcmp(argv[i], "-verify") == 0) - { - options |= SSL_CLIENT_AUTHENTICATION; - } - else if (strcmp(argv[i], "-CAfile") == 0) - { - if (i >= argc-1 || ca_cert_index >= ca_cert_size) - { - print_server_options(argv[i]); - } - - ca_cert[ca_cert_index++] = argv[++i]; - } -#endif -#ifdef CONFIG_SSL_FULL_MODE - else if (strcmp(argv[i], "-debug") == 0) - { - options |= SSL_DISPLAY_BYTES; - } - else if (strcmp(argv[i], "-state") == 0) - { - options |= SSL_DISPLAY_STATES; - } - else if (strcmp(argv[i], "-show-rsa") == 0) - { - options |= SSL_DISPLAY_RSA; - } -#endif - else /* don't know what this is */ - { - print_server_options(argv[i]); - } - - i++; - } - - if ((ssl_ctx = ssl_ctx_new(options, SSL_DEFAULT_SVR_SESS)) == NULL) - { - fprintf(stderr, "Error: Server context is invalid\n"); - exit(1); - } - -#ifndef CONFIG_SSL_SKELETON_MODE - if (private_key_file) - { - int obj_type = SSL_OBJ_RSA_KEY; - - /* auto-detect the key type from the file extension */ - if (strstr(private_key_file, ".p8")) - obj_type = SSL_OBJ_PKCS8; - else if (strstr(private_key_file, ".p12")) - obj_type = SSL_OBJ_PKCS12; - - if (ssl_obj_load(ssl_ctx, obj_type, private_key_file, password)) - { - fprintf(stderr, "Error: Private key '%s' is undefined.\n", - private_key_file); - exit(1); - } - } - - for (i = 0; i < cert_index; i++) - { - if (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, cert[i], NULL)) - { - printf("Certificate '%s' is undefined.\n", cert[i]); - exit(1); - } - } -#endif - -#ifdef CONFIG_SSL_CERT_VERIFICATION - for (i = 0; i < ca_cert_index; i++) - { - if (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CACERT, ca_cert[i], NULL)) - { - printf("Certificate '%s' is undefined.\n", ca_cert[i]); - exit(1); - } - } - - free(ca_cert); -#endif -#ifndef CONFIG_SSL_SKELETON_MODE - free(cert); -#endif - - /* Create socket for incoming connections */ - if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) - { - perror("socket"); - return; - } - - setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)); - - /* Construct local address structure */ - memset(&serv_addr, 0, sizeof(serv_addr)); /* Zero out structure */ - serv_addr.sin_family = AF_INET; /* Internet address family */ - serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */ - serv_addr.sin_port = htons(port); /* Local port */ - - /* Bind to the local address */ - if (bind(server_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) - { - perror("bind"); - exit(1); - } - - if (listen(server_fd, 5) < 0) - { - perror("listen"); - exit(1); - } - - client_len = sizeof(client_addr); - - /************************************************************************* - * This is where the interesting stuff happens. Up until now we've - * just been setting up sockets etc. Now we do the SSL handshake. - *************************************************************************/ - for (;;) - { - SSL *ssl; - int reconnected = 0; - - if (!quiet) - { - printf("ACCEPT\n"); - TTY_FLUSH(); - } - - if ((client_fd = accept(server_fd, - (struct sockaddr *)&client_addr, &client_len)) < 0) - { - res = 1; - break; - } - - ssl = ssl_server_new(ssl_ctx, client_fd); - - /* now read (and display) whatever the client sends us */ - for (;;) - { - /* allow parallel reading of client and standard input */ - FD_ZERO(&read_set); - FD_SET(client_fd, &read_set); - -#ifndef WIN32 - /* win32 doesn't like mixing up stdin and sockets */ - if (isatty(STDIN_FILENO))/* but only if we are in an active shell */ - { - FD_SET(STDIN_FILENO, &read_set); - } - - if ((res = select(client_fd+1, &read_set, NULL, NULL, NULL)) > 0) - { - uint8_t buf[1024]; - - /* read standard input? */ - if (FD_ISSET(STDIN_FILENO, &read_set)) - { - if (fgets((char *)buf, sizeof(buf), stdin) == NULL) - { - res = SSL_ERROR_CONN_LOST; - } - else - { - /* small hack to check renegotiation */ - if (buf[0] == 'r' && (buf[1] == '\n' || buf[1] == '\r')) - { - res = ssl_renegotiate(ssl); - } - else /* write our ramblings to the client */ - { - res = ssl_write(ssl, buf, strlen((char *)buf)+1); - } - } - } - else /* a socket read */ -#endif - { - /* keep reading until we get something interesting */ - uint8_t *read_buf; - - if ((res = ssl_read(ssl, &read_buf)) == SSL_OK) - { - /* are we in the middle of doing a handshake? */ - if (ssl_handshake_status(ssl) != SSL_OK) - { - reconnected = 0; - } - else if (!reconnected) - { - /* we are connected/reconnected */ - if (!quiet) - { - display_session_id(ssl); - display_cipher(ssl); - } - - reconnected = 1; - } - } - - if (res > SSL_OK) /* display our interesting output */ - { - printf("%s", read_buf); - TTY_FLUSH(); - } - else if (res < SSL_OK && !quiet) - { - ssl_display_error(res); - } - } -#ifndef WIN32 - } -#endif - - if (res < SSL_OK) - { - if (!quiet) - { - printf("CONNECTION CLOSED\n"); - TTY_FLUSH(); - } - - break; - } - } - - /* client was disconnected or the handshake failed. */ - ssl_free(ssl); - SOCKET_CLOSE(client_fd); - } - - ssl_ctx_free(ssl_ctx); -} - -/** - * Implement the SSL client logic. - */ -static void do_client(int argc, char *argv[]) -{ -#ifdef CONFIG_SSL_ENABLE_CLIENT - int res, i = 2; - uint16_t port = 4433; - uint32_t options = SSL_SERVER_VERIFY_LATER|SSL_DISPLAY_CERTS; - int client_fd; - char *private_key_file = NULL; - struct sockaddr_in client_addr; - struct hostent *hostent; - int reconnect = 0; - uint32_t sin_addr; - SSL_CTX *ssl_ctx; - SSL *ssl = NULL; - int quiet = 0; - int cert_index = 0, ca_cert_index = 0; - int cert_size, ca_cert_size; - char **ca_cert, **cert; - uint8_t session_id[SSL_SESSION_ID_SIZE]; - fd_set read_set; - const char *password = NULL; - - FD_ZERO(&read_set); - sin_addr = inet_addr("127.0.0.1"); - cert_size = ssl_get_config(SSL_MAX_CERT_CFG_OFFSET); - ca_cert_size = ssl_get_config(SSL_MAX_CA_CERT_CFG_OFFSET); - ca_cert = (char **)calloc(1, sizeof(char *)*ca_cert_size); - cert = (char **)calloc(1, sizeof(char *)*cert_size); - - while (i < argc) - { - if (strcmp(argv[i], "-connect") == 0) - { - char *host, *ptr; - - if (i >= argc-1) - { - print_client_options(argv[i]); - } - - host = argv[++i]; - if ((ptr = strchr(host, ':')) == NULL) - { - print_client_options(argv[i]); - } - - *ptr++ = 0; - port = atoi(ptr); - hostent = gethostbyname(host); - - if (hostent == NULL) - { - print_client_options(argv[i]); - } - - sin_addr = *((uint32_t **)hostent->h_addr_list)[0]; - } - else if (strcmp(argv[i], "-cert") == 0) - { - if (i >= argc-1 || cert_index >= cert_size) - { - print_client_options(argv[i]); - } - - cert[cert_index++] = argv[++i]; - } - else if (strcmp(argv[i], "-key") == 0) - { - if (i >= argc-1) - { - print_client_options(argv[i]); - } - - private_key_file = argv[++i]; - options |= SSL_NO_DEFAULT_KEY; - } - else if (strcmp(argv[i], "-CAfile") == 0) - { - if (i >= argc-1 || ca_cert_index >= ca_cert_size) - { - print_client_options(argv[i]); - } - - ca_cert[ca_cert_index++] = argv[++i]; - } - else if (strcmp(argv[i], "-verify") == 0) - { - options &= ~SSL_SERVER_VERIFY_LATER; - } - else if (strcmp(argv[i], "-reconnect") == 0) - { - reconnect = 4; - } - else if (strcmp(argv[i], "-quiet") == 0) - { - quiet = 1; - options &= ~SSL_DISPLAY_CERTS; - } - else if (strcmp(argv[i], "-pass") == 0) - { - if (i >= argc-1) - { - print_client_options(argv[i]); - } - - password = argv[++i]; - } -#ifdef CONFIG_SSL_FULL_MODE - else if (strcmp(argv[i], "-debug") == 0) - { - options |= SSL_DISPLAY_BYTES; - } - else if (strcmp(argv[i], "-state") == 0) - { - options |= SSL_DISPLAY_STATES; - } - else if (strcmp(argv[i], "-show-rsa") == 0) - { - options |= SSL_DISPLAY_RSA; - } -#endif - else /* don't know what this is */ - { - print_client_options(argv[i]); - } - - i++; - } - - if ((ssl_ctx = ssl_ctx_new(options, SSL_DEFAULT_CLNT_SESS)) == NULL) - { - fprintf(stderr, "Error: Client context is invalid\n"); - exit(1); - } - - if (private_key_file) - { - int obj_type = SSL_OBJ_RSA_KEY; - - /* auto-detect the key type from the file extension */ - if (strstr(private_key_file, ".p8")) - obj_type = SSL_OBJ_PKCS8; - else if (strstr(private_key_file, ".p12")) - obj_type = SSL_OBJ_PKCS12; - - if (ssl_obj_load(ssl_ctx, obj_type, private_key_file, password)) - { - fprintf(stderr, "Error: Private key '%s' is undefined.\n", - private_key_file); - exit(1); - } - } - - for (i = 0; i < cert_index; i++) - { - if (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, cert[i], NULL)) - { - printf("Certificate '%s' is undefined.\n", cert[i]); - exit(1); - } - } - - for (i = 0; i < ca_cert_index; i++) - { - if (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CACERT, ca_cert[i], NULL)) - { - printf("Certificate '%s' is undefined.\n", ca_cert[i]); - exit(1); - } - } - - free(cert); - free(ca_cert); - - /************************************************************************* - * This is where the interesting stuff happens. Up until now we've - * just been setting up sockets etc. Now we do the SSL handshake. - *************************************************************************/ - client_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - memset(&client_addr, 0, sizeof(client_addr)); - client_addr.sin_family = AF_INET; - client_addr.sin_port = htons(port); - client_addr.sin_addr.s_addr = sin_addr; - - if (connect(client_fd, (struct sockaddr *)&client_addr, - sizeof(client_addr)) < 0) - { - perror("connect"); - exit(1); - } - - if (!quiet) - { - printf("CONNECTED\n"); - TTY_FLUSH(); - } - - /* Try session resumption? */ - if (reconnect) - { - while (reconnect--) - { - ssl = ssl_client_new(ssl_ctx, client_fd, session_id, - sizeof(session_id)); - if ((res = ssl_handshake_status(ssl)) != SSL_OK) - { - if (!quiet) - { - ssl_display_error(res); - } - - ssl_free(ssl); - exit(1); - } - - display_session_id(ssl); - memcpy(session_id, ssl_get_session_id(ssl), SSL_SESSION_ID_SIZE); - - if (reconnect) - { - ssl_free(ssl); - SOCKET_CLOSE(client_fd); - - client_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); - connect(client_fd, (struct sockaddr *)&client_addr, - sizeof(client_addr)); - } - } - } - else - { - ssl = ssl_client_new(ssl_ctx, client_fd, NULL, 0); - } - - /* check the return status */ - if ((res = ssl_handshake_status(ssl)) != SSL_OK) - { - if (!quiet) - { - ssl_display_error(res); - } - - exit(1); - } - - if (!quiet) - { - const char *common_name = ssl_get_cert_dn(ssl, - SSL_X509_CERT_COMMON_NAME); - if (common_name) - { - printf("Common Name:\t\t\t%s\n", common_name); - } - - display_session_id(ssl); - display_cipher(ssl); - } - - for (;;) - { - uint8_t buf[1024]; - res = SSL_OK; - - /* allow parallel reading of server and standard input */ - FD_SET(client_fd, &read_set); -#ifndef WIN32 - /* win32 doesn't like mixing up stdin and sockets */ - FD_SET(STDIN_FILENO, &read_set); - - if ((res = select(client_fd+1, &read_set, NULL, NULL, NULL)) > 0) - { - /* read standard input? */ - if (FD_ISSET(STDIN_FILENO, &read_set)) -#endif - { - if (fgets((char *)buf, sizeof(buf), stdin) == NULL) - { - /* bomb out of here */ - ssl_free(ssl); - break; - } - else - { - /* small hack to check renegotiation */ - if (buf[0] == 'R' && (buf[1] == '\n' || buf[1] == '\r')) - { - res = ssl_renegotiate(ssl); - } - else - { - res = ssl_write(ssl, buf, strlen((char *)buf)+1); - } - } - } -#ifndef WIN32 - else /* a socket read */ - { - uint8_t *read_buf; - - res = ssl_read(ssl, &read_buf); - - if (res > 0) /* display our interesting output */ - { - printf("%s", read_buf); - TTY_FLUSH(); - } - } - } -#endif - - if (res < 0) - { - if (!quiet) - { - ssl_display_error(res); - } - - break; /* get outta here */ - } - } - - ssl_ctx_free(ssl_ctx); - SOCKET_CLOSE(client_fd); -#else - print_client_options(argv[1]); -#endif -} - -/** - * We've had some sort of command-line error. Print out the basic options. - */ -static void print_options(char *option) -{ - printf("axssl: Error: '%s' is an invalid command.\n", option); - printf("usage: axssl [s_server|s_client|version] [args ...]\n"); - exit(1); -} - -/** - * We've had some sort of command-line error. Print out the server options. - */ -static void print_server_options(char *option) -{ -#ifndef CONFIG_SSL_SKELETON_MODE - int cert_size = ssl_get_config(SSL_MAX_CERT_CFG_OFFSET); -#endif -#ifdef CONFIG_SSL_CERT_VERIFICATION - int ca_cert_size = ssl_get_config(SSL_MAX_CA_CERT_CFG_OFFSET); -#endif - - printf("unknown option %s\n", option); - printf("usage: s_server [args ...]\n"); - printf(" -accept arg\t- port to accept on (default is 4433)\n"); -#ifndef CONFIG_SSL_SKELETON_MODE - printf(" -cert arg\t- certificate file to add (in addition to default)" - " to chain -\n" - "\t\t Can repeat up to %d times\n", cert_size); - printf(" -key arg\t- Private key file to use\n"); - printf(" -pass\t\t- private key file pass phrase source\n"); -#endif - printf(" -quiet\t\t- No server output\n"); -#ifdef CONFIG_SSL_CERT_VERIFICATION - printf(" -verify\t- turn on peer certificate verification\n"); - printf(" -CAfile arg\t- Certificate authority\n"); - printf("\t\t Can repeat up to %d times\n", ca_cert_size); -#endif -#ifdef CONFIG_SSL_FULL_MODE - printf(" -debug\t\t- Print more output\n"); - printf(" -state\t\t- Show state messages\n"); - printf(" -show-rsa\t- Show RSA state\n"); -#endif - exit(1); -} - -/** - * We've had some sort of command-line error. Print out the client options. - */ -static void print_client_options(char *option) -{ -#ifdef CONFIG_SSL_ENABLE_CLIENT - int cert_size = ssl_get_config(SSL_MAX_CERT_CFG_OFFSET); - int ca_cert_size = ssl_get_config(SSL_MAX_CA_CERT_CFG_OFFSET); -#endif - - printf("unknown option %s\n", option); -#ifdef CONFIG_SSL_ENABLE_CLIENT - printf("usage: s_client [args ...]\n"); - printf(" -connect host:port - who to connect to (default " - "is localhost:4433)\n"); - printf(" -verify\t- turn on peer certificate verification\n"); - printf(" -cert arg\t- certificate file to use\n"); - printf("\t\t Can repeat up to %d times\n", cert_size); - printf(" -key arg\t- Private key file to use\n"); - printf(" -CAfile arg\t- Certificate authority\n"); - printf("\t\t Can repeat up to %d times\n", ca_cert_size); - printf(" -quiet\t\t- No client output\n"); - printf(" -reconnect\t- Drop and re-make the connection " - "with the same Session-ID\n"); - printf(" -pass\t\t- private key file pass phrase source\n"); -#ifdef CONFIG_SSL_FULL_MODE - printf(" -debug\t\t- Print more output\n"); - printf(" -state\t\t- Show state messages\n"); - printf(" -show-rsa\t- Show RSA state\n"); -#endif -#else - printf("Change configuration to allow this feature\n"); -#endif - exit(1); -} - -/** - * Display what cipher we are using - */ -static void display_cipher(SSL *ssl) -{ - printf("CIPHER is "); - switch (ssl_get_cipher_id(ssl)) - { - case SSL_AES128_SHA: - printf("AES128-SHA"); - break; - - case SSL_AES256_SHA: - printf("AES256-SHA"); - break; - - case SSL_RC4_128_SHA: - printf("RC4-SHA"); - break; - - case SSL_RC4_128_MD5: - printf("RC4-MD5"); - break; - - default: - printf("Unknown - %d", ssl_get_cipher_id(ssl)); - break; - } - - printf("\n"); - TTY_FLUSH(); -} - -/** - * Display what session id we have. - */ -static void display_session_id(SSL *ssl) -{ - int i; - const uint8_t *session_id = ssl_get_session_id(ssl); - int sess_id_size = ssl_get_session_id_size(ssl); - - if (sess_id_size > 0) - { - printf("-----BEGIN SSL SESSION PARAMETERS-----\n"); - for (i = 0; i < sess_id_size; i++) - { - printf("%02x", session_id[i]); - } - - printf("\n-----END SSL SESSION PARAMETERS-----\n"); - TTY_FLUSH(); - } -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/Makefile deleted file mode 100644 index 46c2421dce..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -include ../../config/.config -include ../../config/makefile.conf -include ../../config/makefile.dotnet.conf - -all : sample -TARGET=../../$(STAGE)/axssl.csharp.exe -sample : $(TARGET) - -$(TARGET): ../../bindings/csharp/axTLS.cs ../../bindings/csharp/axInterface.cs axssl.cs -ifdef GO_DOT_NET - csc.exe /nologo /t:exe /out:"`cygpath -w $@`" $(foreach file, $^, "`cygpath -w $(file)`") -else # use mono to build - mcs -out:$@ $^ - -endif # ARCH - -clean:: - -@rm -f $(TARGET) diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/axssl.cs b/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/axssl.cs deleted file mode 100644 index dae2b8a41f..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/csharp/axssl.cs +++ /dev/null @@ -1,758 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Demonstrate the use of the axTLS library in C# with a set of - * command-line parameters similar to openssl. In fact, openssl clients - * should be able to communicate with axTLS servers and visa-versa. - * - * This code has various bits enabled depending on the configuration. To enable - * the most interesting version, compile with the 'full mode' enabled. - * - * To see what options you have, run the following: - * > axssl.csharp.exe s_server -? - * > axssl.csharp.exe s_client -? - * - * The axtls shared library must be in the same directory or be found - * by the OS. - */ - -using System; -using System.Net; -using System.Net.Sockets; -using axTLS; - -public class axssl -{ - /* - * Main() - */ - public static void Main(string[] args) - { - if (args.Length == 1 && args[0] == "version") - { - Console.WriteLine("axssl.csharp " + SSLUtil.Version()); - Environment.Exit(0); - } - - axssl runner = new axssl(); - - if (args.Length < 1 || (args[0] != "s_server" && args[0] != "s_client")) - runner.print_options(args.Length > 0 ? args[0] : ""); - - int build_mode = SSLUtil.BuildMode(); - - if (args[0] == "s_server") - runner.do_server(build_mode, args); - else - runner.do_client(build_mode, args); - } - - /* - * do_server() - */ - private void do_server(int build_mode, string[] args) - { - int i = 1; - int port = 4433; - uint options = axtls.SSL_DISPLAY_CERTS; - bool quiet = false; - string password = null; - string private_key_file = null; - - /* organise the cert/ca_cert lists */ - int cert_size = SSLUtil.MaxCerts(); - int ca_cert_size = SSLUtil.MaxCACerts(); - string[] cert = new string[cert_size]; - string[] ca_cert = new string[ca_cert_size]; - int cert_index = 0; - int ca_cert_index = 0; - - while (i < args.Length) - { - if (args[i] == "-accept") - { - if (i >= args.Length-1) - { - print_server_options(build_mode, args[i]); - } - - port = Int32.Parse(args[++i]); - } - else if (args[i] == "-quiet") - { - quiet = true; - options &= ~(uint)axtls.SSL_DISPLAY_CERTS; - } - else if (build_mode >= axtls.SSL_BUILD_SERVER_ONLY) - { - if (args[i] == "-cert") - { - if (i >= args.Length-1 || cert_index >= cert_size) - { - print_server_options(build_mode, args[i]); - } - - cert[cert_index++] = args[++i]; - } - else if (args[i] == "-key") - { - if (i >= args.Length-1) - { - print_server_options(build_mode, args[i]); - } - - private_key_file = args[++i]; - options |= axtls.SSL_NO_DEFAULT_KEY; - } - else if (args[i] == "-pass") - { - if (i >= args.Length-1) - { - print_server_options(build_mode, args[i]); - } - - password = args[++i]; - } - else if (build_mode >= axtls.SSL_BUILD_ENABLE_VERIFICATION) - { - if (args[i] == "-verify") - { - options |= axtls.SSL_CLIENT_AUTHENTICATION; - } - else if (args[i] == "-CAfile") - { - if (i >= args.Length-1 || ca_cert_index >= ca_cert_size) - { - print_server_options(build_mode, args[i]); - } - - ca_cert[ca_cert_index++] = args[++i]; - } - else if (build_mode == axtls.SSL_BUILD_FULL_MODE) - { - if (args[i] == "-debug") - { - options |= axtls.SSL_DISPLAY_BYTES; - } - else if (args[i] == "-state") - { - options |= axtls.SSL_DISPLAY_STATES; - } - else if (args[i] == "-show-rsa") - { - options |= axtls.SSL_DISPLAY_RSA; - } - else - print_server_options(build_mode, args[i]); - } - else - print_server_options(build_mode, args[i]); - } - else - print_server_options(build_mode, args[i]); - } - else - print_server_options(build_mode, args[i]); - - i++; - } - - /* Create socket for incoming connections */ - IPEndPoint ep = new IPEndPoint(IPAddress.Any, port); - TcpListener server_sock = new TcpListener(ep); - server_sock.Start(); - - /********************************************************************** - * This is where the interesting stuff happens. Up until now we've - * just been setting up sockets etc. Now we do the SSL handshake. - **********************************************************************/ - SSLServer ssl_ctx = new SSLServer( - options, axtls.SSL_DEFAULT_SVR_SESS); - - if (ssl_ctx == null) - { - Console.Error.WriteLine("Error: Server context is invalid"); - Environment.Exit(1); - } - - if (private_key_file != null) - { - int obj_type = axtls.SSL_OBJ_RSA_KEY; - - if (private_key_file.EndsWith(".p8")) - obj_type = axtls.SSL_OBJ_PKCS8; - else if (private_key_file.EndsWith(".p12")) - obj_type = axtls.SSL_OBJ_PKCS12; - - if (ssl_ctx.ObjLoad(obj_type, - private_key_file, password) != axtls.SSL_OK) - { - Console.Error.WriteLine("Private key '" + private_key_file + - "' is undefined."); - Environment.Exit(1); - } - } - - for (i = 0; i < cert_index; i++) - { - if (ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CERT, - cert[i], null) != axtls.SSL_OK) - { - Console.WriteLine("Certificate '" + cert[i] + - "' is undefined."); - Environment.Exit(1); - } - } - - for (i = 0; i < ca_cert_index; i++) - { - if (ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CACERT, - ca_cert[i], null) != axtls.SSL_OK) - { - Console.WriteLine("Certificate '" + cert[i] + - "' is undefined."); - Environment.Exit(1); - } - } - - byte[] buf = null; - int res; - - for (;;) - { - if (!quiet) - { - Console.WriteLine("ACCEPT"); - } - - Socket client_sock = server_sock.AcceptSocket(); - - SSL ssl = ssl_ctx.Connect(client_sock); - - /* do the actual SSL handshake */ - while ((res = ssl_ctx.Read(ssl, out buf)) == axtls.SSL_OK) - { - /* check when the connection has been established */ - if (ssl.HandshakeStatus() == axtls.SSL_OK) - break; - - /* could do something else here */ - } - - if (res == axtls.SSL_OK) /* connection established and ok */ - { - if (!quiet) - { - display_session_id(ssl); - display_cipher(ssl); - } - - /* now read (and display) whatever the client sends us */ - for (;;) - { - /* keep reading until we get something interesting */ - while ((res = ssl_ctx.Read(ssl, out buf)) == axtls.SSL_OK) - { - /* could do something else here */ - } - - if (res < axtls.SSL_OK) - { - if (!quiet) - { - Console.WriteLine("CONNECTION CLOSED"); - } - - break; - } - - /* convert to string */ - char[] str = new char[res]; - for (i = 0; i < res; i++) - { - str[i] = (char)buf[i]; - } - - Console.Write(str); - } - } - else if (!quiet) - { - SSLUtil.DisplayError(res); - } - - /* client was disconnected or the handshake failed. */ - ssl.Dispose(); - client_sock.Close(); - } - - /* ssl_ctx.Dispose(); */ - } - - /* - * do_client() - */ - private void do_client(int build_mode, string[] args) - { - if (build_mode < axtls.SSL_BUILD_ENABLE_CLIENT) - { - print_client_options(build_mode, args[1]); - } - - int i = 1, res; - int port = 4433; - bool quiet = false; - string password = null; - int reconnect = 0; - string private_key_file = null; - string hostname = "127.0.0.1"; - - /* organise the cert/ca_cert lists */ - int cert_index = 0; - int ca_cert_index = 0; - int cert_size = SSLUtil.MaxCerts(); - int ca_cert_size = SSLUtil.MaxCACerts(); - string[] cert = new string[cert_size]; - string[] ca_cert = new string[ca_cert_size]; - - uint options = axtls.SSL_SERVER_VERIFY_LATER|axtls.SSL_DISPLAY_CERTS; - byte[] session_id = null; - - while (i < args.Length) - { - if (args[i] == "-connect") - { - string host_port; - - if (i >= args.Length-1) - { - print_client_options(build_mode, args[i]); - } - - host_port = args[++i]; - int index_colon; - - if ((index_colon = host_port.IndexOf(':')) < 0) - print_client_options(build_mode, args[i]); - - hostname = new string(host_port.ToCharArray(), - 0, index_colon); - port = Int32.Parse(new String(host_port.ToCharArray(), - index_colon+1, host_port.Length-index_colon-1)); - } - else if (args[i] == "-cert") - { - if (i >= args.Length-1 || cert_index >= cert_size) - { - print_client_options(build_mode, args[i]); - } - - cert[cert_index++] = args[++i]; - } - else if (args[i] == "-key") - { - if (i >= args.Length-1) - { - print_client_options(build_mode, args[i]); - } - - private_key_file = args[++i]; - options |= axtls.SSL_NO_DEFAULT_KEY; - } - else if (args[i] == "-CAfile") - { - if (i >= args.Length-1 || ca_cert_index >= ca_cert_size) - { - print_client_options(build_mode, args[i]); - } - - ca_cert[ca_cert_index++] = args[++i]; - } - else if (args[i] == "-verify") - { - options &= ~(uint)axtls.SSL_SERVER_VERIFY_LATER; - } - else if (args[i] == "-reconnect") - { - reconnect = 4; - } - else if (args[i] == "-quiet") - { - quiet = true; - options &= ~(uint)axtls.SSL_DISPLAY_CERTS; - } - else if (args[i] == "-pass") - { - if (i >= args.Length-1) - { - print_client_options(build_mode, args[i]); - } - - password = args[++i]; - } - else if (build_mode == axtls.SSL_BUILD_FULL_MODE) - { - if (args[i] == "-debug") - { - options |= axtls.SSL_DISPLAY_BYTES; - } - else if (args[i] == "-state") - { - options |= axtls.SSL_DISPLAY_STATES; - } - else if (args[i] == "-show-rsa") - { - options |= axtls.SSL_DISPLAY_RSA; - } - else - print_client_options(build_mode, args[i]); - } - else /* don't know what this is */ - print_client_options(build_mode, args[i]); - - i++; - } - - // IPHostEntry hostInfo = Dns.Resolve(hostname); - IPHostEntry hostInfo = Dns.GetHostEntry(hostname); - IPAddress[] addresses = hostInfo.AddressList; - IPEndPoint ep = new IPEndPoint(addresses[0], port); - Socket client_sock = new Socket(AddressFamily.InterNetwork, - SocketType.Stream, ProtocolType.Tcp); - client_sock.Connect(ep); - - if (!client_sock.Connected) - { - Console.WriteLine("could not connect"); - Environment.Exit(1); - } - - if (!quiet) - { - Console.WriteLine("CONNECTED"); - } - - /********************************************************************** - * This is where the interesting stuff happens. Up until now we've - * just been setting up sockets etc. Now we do the SSL handshake. - **********************************************************************/ - SSLClient ssl_ctx = new SSLClient(options, - axtls.SSL_DEFAULT_CLNT_SESS); - - if (ssl_ctx == null) - { - Console.Error.WriteLine("Error: Client context is invalid"); - Environment.Exit(1); - } - - if (private_key_file != null) - { - int obj_type = axtls.SSL_OBJ_RSA_KEY; - - if (private_key_file.EndsWith(".p8")) - obj_type = axtls.SSL_OBJ_PKCS8; - else if (private_key_file.EndsWith(".p12")) - obj_type = axtls.SSL_OBJ_PKCS12; - - if (ssl_ctx.ObjLoad(obj_type, - private_key_file, password) != axtls.SSL_OK) - { - Console.Error.WriteLine("Private key '" + private_key_file + - "' is undefined."); - Environment.Exit(1); - } - } - - for (i = 0; i < cert_index; i++) - { - if (ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CERT, - cert[i], null) != axtls.SSL_OK) - { - Console.WriteLine("Certificate '" + cert[i] + - "' is undefined."); - Environment.Exit(1); - } - } - - for (i = 0; i < ca_cert_index; i++) - { - if (ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CACERT, - ca_cert[i], null) != axtls.SSL_OK) - { - Console.WriteLine("Certificate '" + cert[i] + - "' is undefined."); - Environment.Exit(1); - } - } - - SSL ssl = new SSL(new IntPtr(0)); /* keep compiler happy */ - - /* Try session resumption? */ - if (reconnect > 0) - { - while (reconnect-- > 0) - { - ssl = ssl_ctx.Connect(client_sock, session_id); - - if ((res = ssl.HandshakeStatus()) != axtls.SSL_OK) - { - if (!quiet) - { - SSLUtil.DisplayError(res); - } - - ssl.Dispose(); - Environment.Exit(1); - } - - display_session_id(ssl); - session_id = ssl.GetSessionId(); - - if (reconnect > 0) - { - ssl.Dispose(); - client_sock.Close(); - - /* and reconnect */ - client_sock = new Socket(AddressFamily.InterNetwork, - SocketType.Stream, ProtocolType.Tcp); - client_sock.Connect(ep); - } - } - } - else - { - ssl = ssl_ctx.Connect(client_sock, null); - } - - /* check the return status */ - if ((res = ssl.HandshakeStatus()) != axtls.SSL_OK) - { - if (!quiet) - { - SSLUtil.DisplayError(res); - } - - Environment.Exit(1); - } - - if (!quiet) - { - string common_name = - ssl.GetCertificateDN(axtls.SSL_X509_CERT_COMMON_NAME); - - if (common_name != null) - { - Console.WriteLine("Common Name:\t\t\t" + common_name); - } - - display_session_id(ssl); - display_cipher(ssl); - } - - for (;;) - { - string user_input = Console.ReadLine(); - - if (user_input == null) - break; - - byte[] buf = new byte[user_input.Length+2]; - buf[buf.Length-2] = (byte)'\n'; /* add the carriage return */ - buf[buf.Length-1] = 0; /* null terminate */ - - for (i = 0; i < buf.Length-2; i++) - { - buf[i] = (byte)user_input[i]; - } - - if ((res = ssl_ctx.Write(ssl, buf, buf.Length)) < axtls.SSL_OK) - { - if (!quiet) - { - SSLUtil.DisplayError(res); - } - - break; - } - } - - ssl_ctx.Dispose(); - } - - /** - * We've had some sort of command-line error. Print out the basic options. - */ - private void print_options(string option) - { - Console.WriteLine("axssl: Error: '" + option + - "' is an invalid command."); - Console.WriteLine("usage: axssl.csharp [s_server|" + - "s_client|version] [args ...]"); - Environment.Exit(1); - } - - /** - * We've had some sort of command-line error. Print out the server options. - */ - private void print_server_options(int build_mode, string option) - { - int cert_size = SSLUtil.MaxCerts(); - int ca_cert_size = SSLUtil.MaxCACerts(); - - Console.WriteLine("unknown option " + option); - Console.WriteLine("usage: s_server [args ...]"); - Console.WriteLine(" -accept arg\t- port to accept on (default " + - "is 4433)"); - Console.WriteLine(" -quiet\t\t- No server output"); - - if (build_mode >= axtls.SSL_BUILD_SERVER_ONLY) - { - Console.WriteLine(" -cert arg\t- certificate file to add (in " + - "addition to default) to chain -"); - Console.WriteLine("\t\t Can repeat up to " + cert_size + " times"); - Console.WriteLine(" -key arg\t- Private key file to use"); - Console.WriteLine(" -pass\t\t- private key file pass phrase source"); - } - - if (build_mode >= axtls.SSL_BUILD_ENABLE_VERIFICATION) - { - Console.WriteLine(" -verify\t- turn on peer certificate " + - "verification"); - Console.WriteLine(" -CAfile arg\t- Certificate authority."); - Console.WriteLine("\t\t Can repeat up to " + - ca_cert_size + "times"); - } - - if (build_mode == axtls.SSL_BUILD_FULL_MODE) - { - Console.WriteLine(" -debug\t\t- Print more output"); - Console.WriteLine(" -state\t\t- Show state messages"); - Console.WriteLine(" -show-rsa\t- Show RSA state"); - } - - Environment.Exit(1); - } - - /** - * We've had some sort of command-line error. Print out the client options. - */ - private void print_client_options(int build_mode, string option) - { - int cert_size = SSLUtil.MaxCerts(); - int ca_cert_size = SSLUtil.MaxCACerts(); - - Console.WriteLine("unknown option " + option); - - if (build_mode >= axtls.SSL_BUILD_ENABLE_CLIENT) - { - Console.WriteLine("usage: s_client [args ...]"); - Console.WriteLine(" -connect host:port - who to connect to " + - "(default is localhost:4433)"); - Console.WriteLine(" -verify\t- turn on peer certificate " + - "verification"); - Console.WriteLine(" -cert arg\t- certificate file to use"); - Console.WriteLine("\t\t Can repeat up to %d times", cert_size); - Console.WriteLine(" -key arg\t- Private key file to use"); - Console.WriteLine(" -CAfile arg\t- Certificate authority."); - Console.WriteLine("\t\t Can repeat up to " + ca_cert_size + - " times"); - Console.WriteLine(" -quiet\t\t- No client output"); - Console.WriteLine(" -pass\t\t- private key file pass " + - "phrase source"); - Console.WriteLine(" -reconnect\t- Drop and re-make the " + - "connection with the same Session-ID"); - - if (build_mode == axtls.SSL_BUILD_FULL_MODE) - { - Console.WriteLine(" -debug\t\t- Print more output"); - Console.WriteLine(" -state\t\t- Show state messages"); - Console.WriteLine(" -show-rsa\t- Show RSA state"); - } - } - else - { - Console.WriteLine("Change configuration to allow this feature"); - } - - Environment.Exit(1); - } - - /** - * Display what cipher we are using - */ - private void display_cipher(SSL ssl) - { - Console.Write("CIPHER is "); - - switch (ssl.GetCipherId()) - { - case axtls.SSL_AES128_SHA: - Console.WriteLine("AES128-SHA"); - break; - - case axtls.SSL_AES256_SHA: - Console.WriteLine("AES256-SHA"); - break; - - case axtls.SSL_RC4_128_SHA: - Console.WriteLine("RC4-SHA"); - break; - - case axtls.SSL_RC4_128_MD5: - Console.WriteLine("RC4-MD5"); - break; - - default: - Console.WriteLine("Unknown - " + ssl.GetCipherId()); - break; - } - } - - /** - * Display what session id we have. - */ - private void display_session_id(SSL ssl) - { - byte[] session_id = ssl.GetSessionId(); - - if (session_id.Length > 0) - { - Console.WriteLine("-----BEGIN SSL SESSION PARAMETERS-----"); - foreach (byte b in session_id) - { - Console.Write("{0:x02}", b); - } - - Console.WriteLine("\n-----END SSL SESSION PARAMETERS-----"); - } - } -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/java/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/java/Makefile deleted file mode 100644 index b10a79f372..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/java/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -include ../../config/.config -include ../../config/makefile.conf -include ../../config/makefile.java.conf - -all : sample -JAR=../../$(STAGE)/axtls.jar -CLASSES=../../bindings/java/classes -sample : $(JAR) - -$(JAR) : $(CLASSES)/axssl.class $(wildcard $(CLASSES)/axTLSj/*.class) - jar mcvf manifest.mf $@ -C $(CLASSES) axTLSj -C $(CLASSES) axssl.class - -JAVA_FILES=axssl.java -JAVA_CLASSES:=$(JAVA_FILES:%.java=$(CLASSES)/axTLSj/%.class) - -$(CLASSES)/%.class : %.java - javac -d $(CLASSES) -classpath $(CLASSES) $^ - -clean:: - -@rm -f $(TARGET) - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/java/axssl.java b/package/luci/libs/luci-lib-nixio/axTLS/samples/java/axssl.java deleted file mode 100644 index 2057f29662..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/java/axssl.java +++ /dev/null @@ -1,760 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Demonstrate the use of the axTLS library in Java with a set of - * command-line parameters similar to openssl. In fact, openssl clients - * should be able to communicate with axTLS servers and visa-versa. * - * This code has various bits enabled depending on the configuration. To enable - * the most interesting version, compile with the 'full mode' enabled. - * - * To see what options you have, run the following: - * > java -jar axtls.jar s_server -? - * > java -jar axtls.jar s_client -? - * - * The axtls/axtlsj shared libraries must be in the same directory or be found - * by the OS. - */ - -import java.io.*; -import java.util.*; -import java.net.*; -import axTLSj.*; - -public class axssl -{ - /* - * Main() - */ - public static void main(String[] args) - { - if (args.length == 1 && args[0].equals("version")) - { - System.out.println("axtls.jar " + SSLUtil.version()); - System.exit(0); - } - - axssl runner = new axssl(); - - try - { - if (args.length < 1 || - (!args[0].equals("s_server") && - !args[0].equals("s_client"))) - { - runner.print_options(args.length > 0 ? args[0] : ""); - } - - int build_mode = SSLUtil.buildMode(); - - if (args[0].equals("s_server")) - runner.do_server(build_mode, args); - else - runner.do_client(build_mode, args); - } - catch (Exception e) - { - System.out.println(e); - } - } - - /* - * do_server() - */ - private void do_server(int build_mode, String[] args) - throws Exception - { - int i = 1; - int port = 4433; - int options = axtlsj.SSL_DISPLAY_CERTS; - boolean quiet = false; - String password = null; - String private_key_file = null; - - /* organise the cert/ca_cert lists */ - int cert_size = SSLUtil.maxCerts(); - int ca_cert_size = SSLUtil.maxCACerts(); - String[] cert = new String[cert_size]; - String[] ca_cert = new String[ca_cert_size]; - int cert_index = 0; - int ca_cert_index = 0; - - while (i < args.length) - { - if (args[i].equals("-accept")) - { - if (i >= args.length-1) - { - print_server_options(build_mode, args[i]); - } - - port = Integer.parseInt(args[++i]); - } - else if (args[i].equals("-quiet")) - { - quiet = true; - options &= ~(int)axtlsj.SSL_DISPLAY_CERTS; - } - else if (build_mode >= axtlsj.SSL_BUILD_SERVER_ONLY) - { - if (args[i].equals("-cert")) - { - if (i >= args.length-1 || cert_index >= cert_size) - { - print_server_options(build_mode, args[i]); - } - - cert[cert_index++] = args[++i]; - } - else if (args[i].equals("-key")) - { - if (i >= args.length-1) - { - print_server_options(build_mode, args[i]); - } - - private_key_file = args[++i]; - options |= axtlsj.SSL_NO_DEFAULT_KEY; - } - else if (args[i].equals("-pass")) - { - if (i >= args.length-1) - { - print_server_options(build_mode, args[i]); - } - - password = args[++i]; - } - else if (build_mode >= axtlsj.SSL_BUILD_ENABLE_VERIFICATION) - { - if (args[i].equals("-verify")) - { - options |= axtlsj.SSL_CLIENT_AUTHENTICATION; - } - else if (args[i].equals("-CAfile")) - { - if (i >= args.length-1 || ca_cert_index >= ca_cert_size) - { - print_server_options(build_mode, args[i]); - } - - ca_cert[ca_cert_index++] = args[++i]; - } - else if (build_mode == axtlsj.SSL_BUILD_FULL_MODE) - { - if (args[i].equals("-debug")) - { - options |= axtlsj.SSL_DISPLAY_BYTES; - } - else if (args[i].equals("-state")) - { - options |= axtlsj.SSL_DISPLAY_STATES; - } - else if (args[i].equals("-show-rsa")) - { - options |= axtlsj.SSL_DISPLAY_RSA; - } - else - print_server_options(build_mode, args[i]); - } - else - print_server_options(build_mode, args[i]); - } - else - print_server_options(build_mode, args[i]); - } - else - print_server_options(build_mode, args[i]); - - i++; - } - - /* Create socket for incoming connections */ - ServerSocket server_sock = new ServerSocket(port); - - /********************************************************************** - * This is where the interesting stuff happens. Up until now we've - * just been setting up sockets etc. Now we do the SSL handshake. - **********************************************************************/ - SSLServer ssl_ctx = new SSLServer(options, - axtlsj.SSL_DEFAULT_SVR_SESS); - - if (ssl_ctx == null) - throw new Exception("Error: Server context is invalid"); - - if (private_key_file != null) - { - int obj_type = axtlsj.SSL_OBJ_RSA_KEY; - - if (private_key_file.endsWith(".p8")) - obj_type = axtlsj.SSL_OBJ_PKCS8; - else if (private_key_file.endsWith(".p12")) - obj_type = axtlsj.SSL_OBJ_PKCS12; - - if (ssl_ctx.objLoad(obj_type, - private_key_file, password) != axtlsj.SSL_OK) - { - throw new Exception("Error: Private key '" + private_key_file + - "' is undefined."); - } - } - - for (i = 0; i < cert_index; i++) - { - if (ssl_ctx.objLoad(axtlsj.SSL_OBJ_X509_CERT, - cert[i], null) != axtlsj.SSL_OK) - { - throw new Exception("Certificate '" + cert[i] + - "' is undefined."); - } - } - - for (i = 0; i < ca_cert_index; i++) - { - if (ssl_ctx.objLoad(axtlsj.SSL_OBJ_X509_CACERT, - ca_cert[i], null) != axtlsj.SSL_OK) - { - throw new Exception("Certificate '" + ca_cert[i] + - "' is undefined."); - } - } - - int res; - SSLReadHolder rh = new SSLReadHolder(); - - for (;;) - { - if (!quiet) - { - System.out.println("ACCEPT"); - } - - Socket client_sock = server_sock.accept(); - - SSL ssl = ssl_ctx.connect(client_sock); - - while ((res = ssl_ctx.read(ssl, rh)) == axtlsj.SSL_OK) - { - /* check when the connection has been established */ - if (ssl.handshakeStatus() == axtlsj.SSL_OK) - break; - - /* could do something else here */ - } - - if (res == axtlsj.SSL_OK) /* connection established and ok */ - { - if (!quiet) - { - display_session_id(ssl); - display_cipher(ssl); - } - - /* now read (and display) whatever the client sends us */ - for (;;) - { - /* keep reading until we get something interesting */ - while ((res = ssl_ctx.read(ssl, rh)) == axtlsj.SSL_OK) - { - /* could do something else here */ - } - - if (res < axtlsj.SSL_OK) - { - if (!quiet) - { - System.out.println("CONNECTION CLOSED"); - } - - break; - } - - /* convert to String */ - byte[] buf = rh.getData(); - char[] str = new char[res]; - - for (i = 0; i < res; i++) - { - str[i] = (char)buf[i]; - } - - System.out.print(str); - } - } - else if (!quiet) - { - SSLUtil.displayError(res); - } - - /* client was disconnected or the handshake failed. */ - ssl.dispose(); - client_sock.close(); - } - - /* ssl_ctx.dispose(); */ - } - - /* - * do_client() - */ - private void do_client(int build_mode, String[] args) - throws Exception - { - if (build_mode < axtlsj.SSL_BUILD_ENABLE_CLIENT) - print_client_options(build_mode, args[1]); - - int i = 1, res; - int port = 4433; - boolean quiet = false; - String password = null; - int reconnect = 0; - String private_key_file = null; - String hostname = "127.0.0.1"; - - /* organise the cert/ca_cert lists */ - int cert_index = 0; - int ca_cert_index = 0; - int cert_size = SSLUtil.maxCerts(); - int ca_cert_size = SSLUtil.maxCACerts(); - String[] cert = new String[cert_size]; - String[] ca_cert = new String[ca_cert_size]; - - int options = axtlsj.SSL_SERVER_VERIFY_LATER|axtlsj.SSL_DISPLAY_CERTS; - byte[] session_id = null; - - while (i < args.length) - { - if (args[i].equals("-connect")) - { - String host_port; - - if (i >= args.length-1) - { - print_client_options(build_mode, args[i]); - } - - host_port = args[++i]; - int index_colon; - - if ((index_colon = host_port.indexOf(':')) < 0) - print_client_options(build_mode, args[i]); - - hostname = new String(host_port.toCharArray(), - 0, index_colon); - port = Integer.parseInt(new String(host_port.toCharArray(), - index_colon+1, host_port.length()-index_colon-1)); - } - else if (args[i].equals("-cert")) - { - if (i >= args.length-1 || cert_index >= cert_size) - { - print_client_options(build_mode, args[i]); - } - - cert[cert_index++] = args[++i]; - } - else if (args[i].equals("-CAfile")) - { - if (i >= args.length-1 || ca_cert_index >= ca_cert_size) - { - print_client_options(build_mode, args[i]); - } - - ca_cert[ca_cert_index++] = args[++i]; - } - else if (args[i].equals("-key")) - { - if (i >= args.length-1) - { - print_client_options(build_mode, args[i]); - } - - private_key_file = args[++i]; - options |= axtlsj.SSL_NO_DEFAULT_KEY; - } - else if (args[i].equals("-verify")) - { - options &= ~(int)axtlsj.SSL_SERVER_VERIFY_LATER; - } - else if (args[i].equals("-reconnect")) - { - reconnect = 4; - } - else if (args[i].equals("-quiet")) - { - quiet = true; - options &= ~(int)axtlsj.SSL_DISPLAY_CERTS; - } - else if (args[i].equals("-pass")) - { - if (i >= args.length-1) - { - print_server_options(build_mode, args[i]); - } - - password = args[++i]; - } - else if (build_mode == axtlsj.SSL_BUILD_FULL_MODE) - { - if (args[i].equals("-debug")) - { - options |= axtlsj.SSL_DISPLAY_BYTES; - } - else if (args[i].equals("-state")) - { - options |= axtlsj.SSL_DISPLAY_STATES; - } - else if (args[i].equals("-show-rsa")) - { - options |= axtlsj.SSL_DISPLAY_RSA; - } - else - print_client_options(build_mode, args[i]); - } - else /* don't know what this is */ - print_client_options(build_mode, args[i]); - - i++; - } - - Socket client_sock = new Socket(hostname, port); - - if (!client_sock.isConnected()) - { - System.out.println("could not connect"); - throw new Exception(); - } - - if (!quiet) - { - System.out.println("CONNECTED"); - } - - /********************************************************************** - * This is where the interesting stuff happens. Up until now we've - * just been setting up sockets etc. Now we do the SSL handshake. - **********************************************************************/ - SSLClient ssl_ctx = new SSLClient(options, - axtlsj.SSL_DEFAULT_CLNT_SESS); - - if (ssl_ctx == null) - { - throw new Exception("Error: Client context is invalid"); - } - - if (private_key_file != null) - { - int obj_type = axtlsj.SSL_OBJ_RSA_KEY; - - if (private_key_file.endsWith(".p8")) - obj_type = axtlsj.SSL_OBJ_PKCS8; - else if (private_key_file.endsWith(".p12")) - obj_type = axtlsj.SSL_OBJ_PKCS12; - - if (ssl_ctx.objLoad(obj_type, - private_key_file, password) != axtlsj.SSL_OK) - { - throw new Exception("Error: Private key '" + private_key_file + - "' is undefined."); - } - } - - for (i = 0; i < cert_index; i++) - { - if (ssl_ctx.objLoad(axtlsj.SSL_OBJ_X509_CERT, - cert[i], null) != axtlsj.SSL_OK) - { - throw new Exception("Certificate '" + cert[i] + - "' is undefined."); - } - } - - for (i = 0; i < ca_cert_index; i++) - { - if (ssl_ctx.objLoad(axtlsj.SSL_OBJ_X509_CACERT, - ca_cert[i], null) != axtlsj.SSL_OK) - { - throw new Exception("Certificate '" + ca_cert[i] + - "' is undefined."); - } - } - - SSL ssl = null; - - /* Try session resumption? */ - if (reconnect > 0) - { - while (reconnect-- > 0) - { - ssl = ssl_ctx.connect(client_sock, session_id); - - if ((res = ssl.handshakeStatus()) != axtlsj.SSL_OK) - { - if (!quiet) - { - SSLUtil.displayError(res); - } - - ssl.dispose(); - throw new Exception(); - } - - display_session_id(ssl); - session_id = ssl.getSessionId(); - - if (reconnect > 0) - { - ssl.dispose(); - client_sock.close(); - - /* and reconnect */ - client_sock = new Socket(hostname, port); - } - } - } - else - { - ssl = ssl_ctx.connect(client_sock, null); - } - - /* check the return status */ - if ((res = ssl.handshakeStatus()) != axtlsj.SSL_OK) - { - if (!quiet) - { - SSLUtil.displayError(res); - } - - throw new Exception(); - } - - if (!quiet) - { - String common_name = - ssl.getCertificateDN(axtlsj.SSL_X509_CERT_COMMON_NAME); - - if (common_name != null) - { - System.out.println("Common Name:\t\t\t" + common_name); - } - - display_session_id(ssl); - display_cipher(ssl); - } - - BufferedReader in = new BufferedReader( - new InputStreamReader(System.in)); - - for (;;) - { - String user_input = in.readLine(); - - if (user_input == null) - break; - - byte[] buf = new byte[user_input.length()+2]; - buf[buf.length-2] = (byte)'\n'; /* add the carriage return */ - buf[buf.length-1] = 0; /* null terminate */ - - for (i = 0; i < buf.length-2; i++) - { - buf[i] = (byte)user_input.charAt(i); - } - - if ((res = ssl_ctx.write(ssl, buf)) < axtlsj.SSL_OK) - { - if (!quiet) - { - SSLUtil.displayError(res); - } - - break; - } - } - - ssl_ctx.dispose(); - } - - /** - * We've had some sort of command-line error. Print out the basic options. - */ - private void print_options(String option) - { - System.out.println("axssl: Error: '" + option + - "' is an invalid command."); - System.out.println("usage: axtlsj.jar [s_server|s_client|version] " + - "[args ...]"); - System.exit(1); - } - - /** - * We've had some sort of command-line error. Print out the server options. - */ - private void print_server_options(int build_mode, String option) - { - int cert_size = SSLUtil.maxCerts(); - int ca_cert_size = SSLUtil.maxCACerts(); - - System.out.println("unknown option " + option); - System.out.println("usage: s_server [args ...]"); - System.out.println(" -accept arg\t- port to accept on (default " + - "is 4433)"); - System.out.println(" -quiet\t\t- No server output"); - - if (build_mode >= axtlsj.SSL_BUILD_SERVER_ONLY) - { - System.out.println(" -cert arg\t- certificate file to add (in " + - "addition to default) to chain -"); - System.out.println("\t\t Can repeat up to " + cert_size + " times"); - System.out.println(" -key arg\t- Private key file to use"); - System.out.println(" -pass\t\t- private key file pass phrase source"); - } - - if (build_mode >= axtlsj.SSL_BUILD_ENABLE_VERIFICATION) - { - System.out.println(" -verify\t- turn on peer certificate " + - "verification"); - System.out.println(" -CAfile arg\t- Certificate authority. "); - System.out.println("\t\t Can repeat up to " + - ca_cert_size + " times"); - } - - if (build_mode == axtlsj.SSL_BUILD_FULL_MODE) - { - System.out.println(" -debug\t\t- Print more output"); - System.out.println(" -state\t\t- Show state messages"); - System.out.println(" -show-rsa\t- Show RSA state"); - } - - System.exit(1); - } - - /** - * We've had some sort of command-line error. Print out the client options. - */ - private void print_client_options(int build_mode, String option) - { - int cert_size = SSLUtil.maxCerts(); - int ca_cert_size = SSLUtil.maxCACerts(); - - System.out.println("unknown option " + option); - - if (build_mode >= axtlsj.SSL_BUILD_ENABLE_CLIENT) - { - System.out.println("usage: s_client [args ...]"); - System.out.println(" -connect host:port - who to connect to " + - "(default is localhost:4433)"); - System.out.println(" -verify\t- turn on peer certificate " + - "verification"); - System.out.println(" -cert arg\t- certificate file to use"); - System.out.println(" -key arg\t- Private key file to use"); - System.out.println("\t\t Can repeat up to " + cert_size + - " times"); - System.out.println(" -CAfile arg\t- Certificate authority."); - System.out.println("\t\t Can repeat up to " + ca_cert_size + - " times"); - System.out.println(" -quiet\t\t- No client output"); - System.out.println(" -pass\t\t- private key file pass " + - "phrase source"); - System.out.println(" -reconnect\t- Drop and re-make the " + - "connection with the same Session-ID"); - - if (build_mode == axtlsj.SSL_BUILD_FULL_MODE) - { - System.out.println(" -debug\t\t- Print more output"); - System.out.println(" -state\t\t- Show state messages"); - System.out.println(" -show-rsa\t- Show RSA state"); - } - } - else - { - System.out.println("Change configuration to allow this feature"); - } - - System.exit(1); - } - - /** - * Display what cipher we are using - */ - private void display_cipher(SSL ssl) - { - System.out.print("CIPHER is "); - - byte ciph_id = ssl.getCipherId(); - - if (ciph_id == axtlsj.SSL_AES128_SHA) - System.out.println("AES128-SHA"); - else if (ciph_id == axtlsj.SSL_AES256_SHA) - System.out.println("AES256-SHA"); - else if (ciph_id == axtlsj.SSL_RC4_128_SHA) - System.out.println("RC4-SHA"); - else if (ciph_id == axtlsj.SSL_RC4_128_MD5) - System.out.println("RC4-MD5"); - else - System.out.println("Unknown - " + ssl.getCipherId()); - } - - public char toHexChar(int i) - { - if ((0 <= i) && (i <= 9 )) - return (char)('0' + i); - else - return (char)('a' + (i-10)); - } - - public void bytesToHex(byte[] data) - { - StringBuffer buf = new StringBuffer(); - for (int i = 0; i < data.length; i++ ) - { - buf.append(toHexChar((data[i]>>>4)&0x0F)); - buf.append(toHexChar(data[i]&0x0F)); - } - - System.out.println(buf); - } - - - /** - * Display what session id we have. - */ - private void display_session_id(SSL ssl) - { - byte[] session_id = ssl.getSessionId(); - - if (session_id.length > 0) - { - System.out.println("-----BEGIN SSL SESSION PARAMETERS-----"); - bytesToHex(session_id); - System.out.println("-----END SSL SESSION PARAMETERS-----"); - } - } -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/java/manifest.mf b/package/luci/libs/luci-lib-nixio/axTLS/samples/java/manifest.mf deleted file mode 100644 index b906ed29ed..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/java/manifest.mf +++ /dev/null @@ -1 +0,0 @@ -Main-Class: axssl diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/Makefile deleted file mode 100644 index a460da3c55..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -include ../../config/.config -include ../../config/makefile.conf - -all: samples -TARGET=../../$(STAGE)/axssl.lua -samples: $(TARGET) - -$(TARGET): axssl.lua - install $< $@ - -clean:: - -@rm -f $(TARGET) - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/axssl.lua b/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/axssl.lua deleted file mode 100755 index 6ea26b69dd..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/lua/axssl.lua +++ /dev/null @@ -1,562 +0,0 @@ -#!/usr/local/bin/lua - --- --- Copyright (c) 2007, Cameron Rich --- --- All rights reserved. --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are met: --- --- * Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- * Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- * Neither the name of the axTLS project nor the names of its --- contributors may be used to endorse or promote products derived --- from this software without specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS --- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT --- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR --- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR --- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, --- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED --- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, --- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY --- OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF --- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --- - --- --- Demonstrate the use of the axTLS library in Lua with a set of --- command-line parameters similar to openssl. In fact, openssl clients --- should be able to communicate with axTLS servers and visa-versa. --- --- This code has various bits enabled depending on the configuration. To enable --- the most interesting version, compile with the 'full mode' enabled. --- --- To see what options you have, run the following: --- > [lua] axssl s_server -? --- > [lua] axssl s_client -? --- --- The axtls/axtlsl shared libraries must be in the same directory or be found --- by the OS. --- --- -require "bit" -require("axtlsl") -local socket = require("socket") - --- print version? -if #arg == 1 and arg[1] == "version" then - print("axssl.lua "..axtlsl.ssl_version()) - os.exit(1) -end - --- --- We've had some sort of command-line error. Print out the basic options. --- -function print_options(option) - print("axssl: Error: '"..option.."' is an invalid command.") - print("usage: axssl [s_server|s_client|version] [args ...]") - os.exit(1) -end - --- --- We've had some sort of command-line error. Print out the server options. --- -function print_server_options(build_mode, option) - local cert_size = axtlsl.ssl_get_config(axtlsl.SSL_MAX_CERT_CFG_OFFSET) - local ca_cert_size = axtlsl.ssl_get_config( - axtlsl.SSL_MAX_CA_CERT_CFG_OFFSET) - - print("unknown option "..option) - print("usage: s_server [args ...]") - print(" -accept\t- port to accept on (default is 4433)") - print(" -quiet\t\t- No server output") - - if build_mode >= axtlsl.SSL_BUILD_SERVER_ONLY then - print(" -cert arg\t- certificate file to add (in addition to ".. - "default) to chain -") - print("\t\t Can repeat up to "..cert_size.." times") - print(" -key arg\t- Private key file to use - default DER format") - print(" -pass\t\t- private key file pass phrase source") - end - - if build_mode >= axtlsl.SSL_BUILD_ENABLE_VERIFICATION then - print(" -verify\t- turn on peer certificate verification") - print(" -CAfile arg\t- Certificate authority - default DER format") - print("\t\t Can repeat up to "..ca_cert_size.." times") - end - - if build_mode == axtlsl.SSL_BUILD_FULL_MODE then - print(" -debug\t\t- Print more output") - print(" -state\t\t- Show state messages") - print(" -show-rsa\t- Show RSA state") - end - - os.exit(1) -end - --- --- We've had some sort of command-line error. Print out the client options. --- -function print_client_options(build_mode, option) - local cert_size = axtlsl.ssl_get_config(axtlsl.SSL_MAX_CERT_CFG_OFFSET) - local ca_cert_size = axtlsl.ssl_get_config( - axtlsl.SSL_MAX_CA_CERT_CFG_OFFSET) - - print("unknown option "..option) - - if build_mode >= axtlsl.SSL_BUILD_ENABLE_CLIENT then - print("usage: s_client [args ...]") - print(" -connect host:port - who to connect to (default ".. - "is localhost:4433)") - print(" -verify\t- turn on peer certificate verification") - print(" -cert arg\t- certificate file to use - default DER format") - print(" -key arg\t- Private key file to use - default DER format") - print("\t\t Can repeat up to "..cert_size.." times") - print(" -CAfile arg\t- Certificate authority - default DER format") - print("\t\t Can repeat up to "..ca_cert_size.."times") - print(" -quiet\t\t- No client output") - print(" -pass\t\t- private key file pass phrase source") - print(" -reconnect\t- Drop and re-make the connection ".. - "with the same Session-ID") - - if build_mode == axtlsl.SSL_BUILD_FULL_MODE then - print(" -debug\t\t- Print more output") - print(" -state\t\t- Show state messages") - print(" -show-rsa\t- Show RSA state") - end - else - print("Change configuration to allow this feature") - end - - os.exit(1) -end - --- Implement the SSL server logic. -function do_server(build_mode) - local i = 2 - local v - local port = 4433 - local options = axtlsl.SSL_DISPLAY_CERTS - local quiet = false - local password = "" - local private_key_file = nil - local cert_size = axtlsl.ssl_get_config(axtlsl.SSL_MAX_CERT_CFG_OFFSET) - local ca_cert_size = axtlsl. - ssl_get_config(axtlsl.SSL_MAX_CA_CERT_CFG_OFFSET) - local cert = {} - local ca_cert = {} - - while i <= #arg do - if arg[i] == "-accept" then - if i >= #arg then - print_server_options(build_mode, arg[i]) - end - - i = i + 1 - port = arg[i] - elseif arg[i] == "-quiet" then - quiet = true - options = bit.band(options, bit.bnot(axtlsl.SSL_DISPLAY_CERTS)) - elseif build_mode >= axtlsl.SSL_BUILD_SERVER_ONLY then - if arg[i] == "-cert" then - if i >= #arg or #cert >= cert_size then - print_server_options(build_mode, arg[i]) - end - - i = i + 1 - table.insert(cert, arg[i]) - elseif arg[i] == "-key" then - if i >= #arg then - print_server_options(build_mode, arg[i]) - end - - i = i + 1 - private_key_file = arg[i] - options = bit.bor(options, axtlsl.SSL_NO_DEFAULT_KEY) - elseif arg[i] == "-pass" then - if i >= #arg then - print_server_options(build_mode, arg[i]) - end - - i = i + 1 - password = arg[i] - elseif build_mode >= axtlsl.SSL_BUILD_ENABLE_VERIFICATION then - if arg[i] == "-verify" then - options = bit.bor(options, axtlsl.SSL_CLIENT_AUTHENTICATION) - elseif arg[i] == "-CAfile" then - if i >= #arg or #ca_cert >= ca_cert_size then - print_server_options(build_mode, arg[i]) - end - - i = i + 1 - table.insert(ca_cert, arg[i]) - elseif build_mode == axtlsl.SSL_BUILD_FULL_MODE then - if arg[i] == "-debug" then - options = bit.bor(options, axtlsl.SSL_DISPLAY_BYTES) - elseif arg[i] == "-state" then - options = bit.bor(options, axtlsl.SSL_DISPLAY_STATES) - elseif arg[i] == "-show-rsa" then - options = bit.bor(options, axtlsl.SSL_DISPLAY_RSA) - else - print_server_options(build_mode, arg[i]) - end - else - print_server_options(build_mode, arg[i]) - end - else - print_server_options(build_mode, arg[i]) - end - else - print_server_options(build_mode, arg[i]) - end - - i = i + 1 - end - - -- Create socket for incoming connections - local server_sock = socket.try(socket.bind("*", port)) - - --------------------------------------------------------------------------- - -- This is where the interesting stuff happens. Up until now we've - -- just been setting up sockets etc. Now we do the SSL handshake. - --------------------------------------------------------------------------- - local ssl_ctx = axtlsl.ssl_ctx_new(options, axtlsl.SSL_DEFAULT_SVR_SESS) - if ssl_ctx == nil then error("Error: Server context is invalid") end - - if private_key_file ~= nil then - local obj_type = axtlsl.SSL_OBJ_RSA_KEY - - if string.find(private_key_file, ".p8") then - obj_type = axtlsl.SSL_OBJ_PKCS8 - end - - if string.find(private_key_file, ".p12") then - obj_type = axtlsl.SSL_OBJ_PKCS12 - end - - if axtlsl.ssl_obj_load(ssl_ctx, obj_type, private_key_file, - password) ~= axtlsl.SSL_OK then - error("Private key '" .. private_key_file .. "' is undefined.") - end - end - - for _, v in ipairs(cert) do - if axtlsl.ssl_obj_load(ssl_ctx, axtlsl.SSL_OBJ_X509_CERT, v, "") ~= - axtlsl.SSL_OK then - error("Certificate '"..v .. "' is undefined.") - end - end - - for _, v in ipairs(ca_cert) do - if axtlsl.ssl_obj_load(ssl_ctx, axtlsl.SSL_OBJ_X509_CACERT, v, "") ~= - axtlsl.SSL_OK then - error("Certificate '"..v .."' is undefined.") - end - end - - while true do - if not quiet then print("ACCEPT") end - local client_sock = server_sock:accept(); - local ssl = axtlsl.ssl_server_new(ssl_ctx, client_sock:getfd()) - - -- do the actual SSL handshake - local connected = false - local res - local buf - - while true do - socket.select({client_sock}, nil) - res, buf = axtlsl.ssl_read(ssl) - - if res == axtlsl.SSL_OK then -- connection established and ok - if axtlsl.ssl_handshake_status(ssl) == axtlsl.SSL_OK then - if not quiet and not connected then - display_session_id(ssl) - display_cipher(ssl) - end - connected = true - end - end - - if res > axtlsl.SSL_OK then - for _, v in ipairs(buf) do - io.write(string.format("%c", v)) - end - elseif res < axtlsl.SSL_OK then - if not quiet then - axtlsl.ssl_display_error(res) - end - break - end - end - - -- client was disconnected or the handshake failed. - print("CONNECTION CLOSED") - axtlsl.ssl_free(ssl) - client_sock:close() - end - - axtlsl.ssl_ctx_free(ssl_ctx) -end - --- --- Implement the SSL client logic. --- -function do_client(build_mode) - local i = 2 - local v - local port = 4433 - local options = - bit.bor(axtlsl.SSL_SERVER_VERIFY_LATER, axtlsl.SSL_DISPLAY_CERTS) - local private_key_file = nil - local reconnect = 0 - local quiet = false - local password = "" - local session_id = {} - local host = "127.0.0.1" - local cert_size = axtlsl.ssl_get_config(axtlsl.SSL_MAX_CERT_CFG_OFFSET) - local ca_cert_size = axtlsl. - ssl_get_config(axtlsl.SSL_MAX_CA_CERT_CFG_OFFSET) - local cert = {} - local ca_cert = {} - - while i <= #arg do - if arg[i] == "-connect" then - if i >= #arg then - print_client_options(build_mode, arg[i]) - end - - i = i + 1 - local t = string.find(arg[i], ":") - host = string.sub(arg[i], 1, t-1) - port = string.sub(arg[i], t+1) - elseif arg[i] == "-cert" then - if i >= #arg or #cert >= cert_size then - print_client_options(build_mode, arg[i]) - end - - i = i + 1 - table.insert(cert, arg[i]) - elseif arg[i] == "-key" then - if i >= #arg then - print_client_options(build_mode, arg[i]) - end - - i = i + 1 - private_key_file = arg[i] - options = bit.bor(options, axtlsl.SSL_NO_DEFAULT_KEY) - elseif arg[i] == "-CAfile" then - if i >= #arg or #ca_cert >= ca_cert_size then - print_client_options(build_mode, arg[i]) - end - - i = i + 1 - table.insert(ca_cert, arg[i]) - elseif arg[i] == "-verify" then - options = bit.band(options, - bit.bnot(axtlsl.SSL_SERVER_VERIFY_LATER)) - elseif arg[i] == "-reconnect" then - reconnect = 4 - elseif arg[i] == "-quiet" then - quiet = true - options = bit.band(options, bnot(axtlsl.SSL_DISPLAY_CERTS)) - elseif arg[i] == "-pass" then - if i >= #arg then - print_server_options(build_mode, arg[i]) - end - - i = i + 1 - password = arg[i] - elseif build_mode == axtlsl.SSL_BUILD_FULL_MODE then - if arg[i] == "-debug" then - options = bit.bor(options, axtlsl.SSL_DISPLAY_BYTES) - elseif arg[i] == "-state" then - options = bit.bor(axtlsl.SSL_DISPLAY_STATES) - elseif arg[i] == "-show-rsa" then - options = bit.bor(axtlsl.SSL_DISPLAY_RSA) - else -- don't know what this is - print_client_options(build_mode, arg[i]) - end - else -- don't know what this is - print_client_options(build_mode, arg[i]) - end - - i = i + 1 - end - - local client_sock = socket.try(socket.connect(host, port)) - local ssl - local res - - if not quiet then print("CONNECTED") end - - --------------------------------------------------------------------------- - -- This is where the interesting stuff happens. Up until now we've - -- just been setting up sockets etc. Now we do the SSL handshake. - --------------------------------------------------------------------------- - local ssl_ctx = axtlsl.ssl_ctx_new(options, axtlsl.SSL_DEFAULT_CLNT_SESS) - - if ssl_ctx == nil then - error("Error: Client context is invalid") - end - - if private_key_file ~= nil then - local obj_type = axtlsl.SSL_OBJ_RSA_KEY - - if string.find(private_key_file, ".p8") then - obj_type = axtlsl.SSL_OBJ_PKCS8 - end - - if string.find(private_key_file, ".p12") then - obj_type = axtlsl.SSL_OBJ_PKCS12 - end - - if axtlsl.ssl_obj_load(ssl_ctx, obj_type, private_key_file, - password) ~= axtlsl.SSL_OK then - error("Private key '"..private_key_file.."' is undefined.") - end - end - - for _, v in ipairs(cert) do - if axtlsl.ssl_obj_load(ssl_ctx, axtlsl.SSL_OBJ_X509_CERT, v, "") ~= - axtlsl.SSL_OK then - error("Certificate '"..v .. "' is undefined.") - end - end - - for _, v in ipairs(ca_cert) do - if axtlsl.ssl_obj_load(ssl_ctx, axtlsl.SSL_OBJ_X509_CACERT, v, "") ~= - axtlsl.SSL_OK then - error("Certificate '"..v .."' is undefined.") - end - end - - -- Try session resumption? - if reconnect ~= 0 then - local session_id = nil - local sess_id_size = 0 - - while reconnect > 0 do - reconnect = reconnect - 1 - ssl = axtlsl.ssl_client_new(ssl_ctx, - client_sock:getfd(), session_id, sess_id_size) - - res = axtlsl.ssl_handshake_status(ssl) - if res ~= axtlsl.SSL_OK then - if not quiet then axtlsl.ssl_display_error(res) end - axtlsl.ssl_free(ssl) - os.exit(1) - end - - display_session_id(ssl) - session_id = axtlsl.ssl_get_session_id(ssl) - sess_id_size = axtlsl.ssl_get_session_id_size(ssl) - - if reconnect > 0 then - axtlsl.ssl_free(ssl) - client_sock:close() - client_sock = socket.try(socket.connect(host, port)) - end - - end - else - ssl = axtlsl.ssl_client_new(ssl_ctx, client_sock:getfd(), nil, 0) - end - - -- check the return status - res = axtlsl.ssl_handshake_status(ssl) - if res ~= axtlsl.SSL_OK then - if not quiet then axtlsl.ssl_display_error(res) end - os.exit(1) - end - - if not quiet then - local common_name = axtlsl.ssl_get_cert_dn(ssl, - axtlsl.SSL_X509_CERT_COMMON_NAME) - - if common_name ~= nil then - print("Common Name:\t\t\t"..common_name) - end - - display_session_id(ssl) - display_cipher(ssl) - end - - while true do - local line = io.read() - if line == nil then break end - local bytes = {} - - for i = 1, #line do - bytes[i] = line.byte(line, i) - end - - bytes[#line+1] = 10 -- add carriage return, null - bytes[#line+2] = 0 - - res = axtlsl.ssl_write(ssl, bytes, #bytes) - if res < axtlsl.SSL_OK then - if not quiet then axtlsl.ssl_display_error(res) end - break - end - end - - axtlsl.ssl_ctx_free(ssl_ctx) - client_sock:close() -end - --- --- Display what cipher we are using --- -function display_cipher(ssl) - io.write("CIPHER is ") - local cipher_id = axtlsl.ssl_get_cipher_id(ssl) - - if cipher_id == axtlsl.SSL_AES128_SHA then - print("AES128-SHA") - elseif cipher_id == axtlsl.SSL_AES256_SHA then - print("AES256-SHA") - elseif axtlsl.SSL_RC4_128_SHA then - print("RC4-SHA") - elseif axtlsl.SSL_RC4_128_MD5 then - print("RC4-MD5") - else - print("Unknown - "..cipher_id) - end -end - --- --- Display what session id we have. --- -function display_session_id(ssl) - local session_id = axtlsl.ssl_get_session_id(ssl) - local v - - if #session_id > 0 then - print("-----BEGIN SSL SESSION PARAMETERS-----") - for _, v in ipairs(session_id) do - io.write(string.format("%02x", v)) - end - print("\n-----END SSL SESSION PARAMETERS-----") - end -end - --- --- Main entry point. Doesn't do much except works out whether we are a client --- or a server. --- -if #arg == 0 or (arg[1] ~= "s_server" and arg[1] ~= "s_client") then - print_options(#arg > 0 and arg[1] or "") -end - -local build_mode = axtlsl.ssl_get_config(axtlsl.SSL_BUILD_MODE) -_ = arg[1] == "s_server" and do_server(build_mode) or do_client(build_mode) -os.exit(0) - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/Makefile deleted file mode 100644 index 5200c4302e..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -include ../../config/.config -include ../../config/makefile.conf - -all: samples -TARGET=../../$(STAGE)/axssl.pl -samples: $(TARGET) - -$(TARGET): axssl.pl - install $< $@ - -clean:: - -@rm -f $(TARGET) - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/axssl.pl b/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/axssl.pl deleted file mode 100755 index e49d52270d..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/perl/axssl.pl +++ /dev/null @@ -1,634 +0,0 @@ -#!/usr/bin/perl -w -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# -# Demonstrate the use of the axTLS library in Perl with a set of -# command-line parameters similar to openssl. In fact, openssl clients -# should be able to communicate with axTLS servers and visa-versa. -# -# This code has various bits enabled depending on the configuration. To enable -# the most interesting version, compile with the 'full mode' enabled. -# -# To see what options you have, run the following: -# > [perl] axssl s_server -? -# > [perl] axssl s_client -? -# -# The axtls/axtlsp shared libraries must be in the same directory or be found -# by the OS. axtlsp.pm must be in this directory or be in @INC. -# -# Under Win32, ActivePerl was used (see -# http://www.activestate.com/Products/ActivePerl/?mp=1) -# -use axtlsp; -use IO::Socket; - -# To get access to Win32 file descriptor stuff -my $is_win32 = 0; - -if ($^O eq "MSWin32") -{ - eval("use Win32API::File 0.08 qw( :ALL )"); - $is_win32 = 1; -} - -use strict; - -# -# Win32 has some problems with socket handles -# -sub get_native_sock -{ - my ($sock) = @_; - return $is_win32 ? FdGetOsFHandle($sock) : $sock; -} - -# print version? -if ($#ARGV == 0 && $ARGV[0] eq "version") -{ - printf("axssl.pl ".axtlsp::ssl_version()."\n"); - exit 0; -} - -# -# Main entry point. Doesn't do much except works out whether we are a client -# or a server. -# -print_options($#ARGV > -1 ? $ARGV[0] : "") - if ($#ARGV < 0 || ($ARGV[0] ne "s_server" && $ARGV[0] ne "s_client")); - - -# Cygwin/Win32 issue - flush our output continuously -select STDOUT; -local $|=1; - -my $build_mode = axtlsp::ssl_get_config($axtlsp::SSL_BUILD_MODE); -$ARGV[0] eq "s_server" ? do_server($build_mode) : do_client($build_mode); - -# -# Implement the SSL server logic. -# -sub do_server -{ - my ($build_mode) = @_; - my $i = 1; - my $port = 4433; - my $options = $axtlsp::SSL_DISPLAY_CERTS; - my $quiet = 0; - my $password = undef; - my $private_key_file = undef; - my $cert_size = axtlsp::ssl_get_config($axtlsp::SSL_MAX_CERT_CFG_OFFSET); - my $ca_cert_size = axtlsp::ssl_get_config( - $axtlsp::SSL_MAX_CA_CERT_CFG_OFFSET); - my @cert; - my @ca_cert; - - while ($i <= $#ARGV) - { - if ($ARGV[$i] eq "-accept") - { - print_server_options($build_mode, $ARGV[$i]) if $i >= $#ARGV; - $port = $ARGV[++$i]; - } - elsif ($ARGV[$i] eq "-quiet") - { - $quiet = 1; - $options &= ~$axtlsp::SSL_DISPLAY_CERTS; - } - elsif ($build_mode >= $axtlsp::SSL_BUILD_SERVER_ONLY) - { - if ($ARGV[$i] eq "-cert") - { - print_server_options($build_mode, $ARGV[$i]) - if $i >= $#ARGV || $#cert >= $cert_size-1; - - push @cert, $ARGV[++$i]; - } - elsif ($ARGV[$i] eq "-key") - { - print_server_options($build_mode, $ARGV[$i]) if $i >= $#ARGV; - $private_key_file = $ARGV[++$i]; - $options |= $axtlsp::SSL_NO_DEFAULT_KEY; - } - elsif ($ARGV[$i] eq "-pass") - { - print_server_options($build_mode, $ARGV[$i]) if $i >= $#ARGV; - $password = $ARGV[++$i]; - } - elsif ($build_mode >= $axtlsp::SSL_BUILD_ENABLE_VERIFICATION) - { - if ($ARGV[$i] eq "-verify") - { - $options |= $axtlsp::SSL_CLIENT_AUTHENTICATION; - } - elsif ($ARGV[$i] eq "-CAfile") - { - print_server_options($build_mode, $ARGV[$i]) - if $i >= $#ARGV || $#ca_cert >= $ca_cert_size-1; - push @ca_cert, $ARGV[++$i]; - } - elsif ($build_mode == $axtlsp::SSL_BUILD_FULL_MODE) - { - if ($ARGV[$i] eq "-debug") - { - $options |= $axtlsp::SSL_DISPLAY_BYTES; - } - elsif ($ARGV[$i] eq "-state") - { - $options |= $axtlsp::SSL_DISPLAY_STATES; - } - elsif ($ARGV[$i] eq "-show-rsa") - { - $options |= $axtlsp::SSL_DISPLAY_RSA; - } - else - { - print_server_options($build_mode, $ARGV[$i]); - } - } - else - { - print_server_options($build_mode, $ARGV[$i]); - } - } - else - { - print_server_options($build_mode, $ARGV[$i]); - } - } - else - { - print_server_options($build_mode, $ARGV[$i]); - } - - $i++; - } - - # Create socket for incoming connections - my $server_sock = IO::Socket::INET->new(Proto => 'tcp', - LocalPort => $port, - Listen => 1, - Reuse => 1) or die $!; - - ########################################################################### - # This is where the interesting stuff happens. Up until now we've - # just been setting up sockets etc. Now we do the SSL handshake. - ########################################################################### - my $ssl_ctx = axtlsp::ssl_ctx_new($options, $axtlsp::SSL_DEFAULT_SVR_SESS); - die "Error: Server context is invalid" if not defined $ssl_ctx; - - if (defined $private_key_file) - { - my $obj_type = $axtlsp::SSL_OBJ_RSA_KEY; - - $obj_type = $axtlsp::SSL_OBJ_PKCS8 if $private_key_file =~ /.p8$/; - $obj_type = $axtlsp::SSL_OBJ_PKCS12 if $private_key_file =~ /.p12$/; - - die "Private key '$private_key_file' is undefined." if - axtlsp::ssl_obj_load($ssl_ctx, $obj_type, - $private_key_file, $password); - } - - foreach (@cert) - { - die "Certificate '$_' is undefined." - if axtlsp::ssl_obj_load($ssl_ctx, $axtlsp::SSL_OBJ_X509_CERT, - $_, undef) != $axtlsp::SSL_OK; - } - - foreach (@ca_cert) - { - die "Certificate '$_' is undefined." - if axtlsp::ssl_obj_load($ssl_ctx, $axtlsp::SSL_OBJ_X509_CACERT, - $_, undef) != $axtlsp::SSL_OK; - } - - for (;;) - { - printf("ACCEPT\n") if not $quiet; - my $client_sock = $server_sock->accept; - my $native_sock = get_native_sock($client_sock->fileno); - - # This doesn't work in Win32 - need to get file descriptor from socket. - my $ssl = axtlsp::ssl_server_new($ssl_ctx, $native_sock); - - # do the actual SSL handshake - my $res; - my $buf; - my $connected = 0; - - while (1) - { - ($res, $buf) = axtlsp::ssl_read($ssl, undef); - last if $res < $axtlsp::SSL_OK; - - if ($res == $axtlsp::SSL_OK) # connection established and ok - { - if (axtlsp::ssl_handshake_status($ssl) == $axtlsp::SSL_OK) - { - if (!$quiet && !$connected) - { - display_session_id($ssl); - display_cipher($ssl); - } - - $connected = 1; - } - } - - if ($res > $axtlsp::SSL_OK) - { - printf($$buf); - } - elsif ($res < $axtlsp::SSL_OK) - { - axtlsp::ssl_display_error($res) if not $quiet; - last; - } - } - - # client was disconnected or the handshake failed. - printf("CONNECTION CLOSED\n") if not $quiet; - axtlsp::ssl_free($ssl); - $client_sock->close; - } - - axtlsp::ssl_ctx_free($ssl_ctx); -} - -# -# Implement the SSL client logic. -# -sub do_client -{ - my ($build_mode) = @_; - my $i = 1; - my $port = 4433; - my $options = $axtlsp::SSL_SERVER_VERIFY_LATER|$axtlsp::SSL_DISPLAY_CERTS; - my $private_key_file = undef; - my $reconnect = 0; - my $quiet = 0; - my $password = undef; - my @session_id; - my $host = "127.0.0.1"; - my @cert; - my @ca_cert; - my $cert_size = axtlsp::ssl_get_config( - $axtlsp::SSL_MAX_CERT_CFG_OFFSET); - my $ca_cert_size = axtlsp::ssl_get_config( - $axtlsp::SSL_MAX_CA_CERT_CFG_OFFSET); - - while ($i <= $#ARGV) - { - if ($ARGV[$i] eq "-connect") - { - print_client_options($build_mode, $ARGV[$i]) if $i >= $#ARGV; - ($host, $port) = split(':', $ARGV[++$i]); - } - elsif ($ARGV[$i] eq "-cert") - { - print_client_options($build_mode, $ARGV[$i]) - if $i >= $#ARGV || $#cert >= $cert_size-1; - - push @cert, $ARGV[++$i]; - } - elsif ($ARGV[$i] eq "-key") - { - print_client_options($build_mode, $ARGV[$i]) if $i >= $#ARGV; - $private_key_file = $ARGV[++$i]; - $options |= $axtlsp::SSL_NO_DEFAULT_KEY; - } - elsif ($ARGV[$i] eq "-CAfile") - { - print_client_options($build_mode, $ARGV[$i]) - if $i >= $#ARGV || $#ca_cert >= $ca_cert_size-1; - - push @ca_cert, $ARGV[++$i]; - } - elsif ($ARGV[$i] eq "-verify") - { - $options &= ~$axtlsp::SSL_SERVER_VERIFY_LATER; - } - elsif ($ARGV[$i] eq "-reconnect") - { - $reconnect = 4; - } - elsif ($ARGV[$i] eq "-quiet") - { - $quiet = 1; - $options &= ~$axtlsp::SSL_DISPLAY_CERTS; - } - elsif ($ARGV[$i] eq "-pass") - { - print_server_options($build_mode, $ARGV[$i]) if $i >= $#ARGV; - $password = $ARGV[++$i]; - } - elsif ($build_mode == $axtlsp::SSL_BUILD_FULL_MODE) - { - if ($ARGV[$i] eq "-debug") - { - $options |= $axtlsp::SSL_DISPLAY_BYTES; - } - elsif ($ARGV[$i] eq "-state") - { - $options |= $axtlsp::SSL_DISPLAY_STATES; - } - elsif ($ARGV[$i] eq "-show-rsa") - { - $options |= $axtlsp::SSL_DISPLAY_RSA; - } - else # don't know what this is - { - print_client_options($build_mode, $ARGV[$i]); - } - } - else # don't know what this is - { - print_client_options($build_mode, $ARGV[$i]); - } - - $i++; - } - - my $client_sock = new IO::Socket::INET ( - PeerAddr => $host, PeerPort => $port, Proto => 'tcp') - || die ("no socket: $!"); - my $ssl; - my $res; - my $native_sock = get_native_sock($client_sock->fileno); - - printf("CONNECTED\n") if not $quiet; - - ########################################################################### - # This is where the interesting stuff happens. Up until now we've - # just been setting up sockets etc. Now we do the SSL handshake. - ########################################################################### - my $ssl_ctx = axtlsp::ssl_ctx_new($options, $axtlsp::SSL_DEFAULT_CLNT_SESS); - die "Error: Client context is invalid" if not defined $ssl_ctx; - - if (defined $private_key_file) - { - my $obj_type = $axtlsp::SSL_OBJ_RSA_KEY; - - $obj_type = $axtlsp::SSL_OBJ_PKCS8 if $private_key_file =~ /.p8$/; - $obj_type = $axtlsp::SSL_OBJ_PKCS12 if $private_key_file =~ /.p12$/; - - die "Private key '$private_key_file' is undefined." if - axtlsp::ssl_obj_load($ssl_ctx, $obj_type, - $private_key_file, $password); - } - - foreach (@cert) - { - die "Certificate '$_' is undefined." - if axtlsp::ssl_obj_load($ssl_ctx, $axtlsp::SSL_OBJ_X509_CERT, - $_, undef) != $axtlsp::SSL_OK; - } - - foreach (@ca_cert) - { - die "Certificate '$_' is undefined." - if axtlsp::ssl_obj_load($ssl_ctx, $axtlsp::SSL_OBJ_X509_CACERT, - $_, undef) != $axtlsp::SSL_OK; - } - - # Try session resumption? - if ($reconnect) - { - my $session_id = undef; - my $sess_id_size = 0; - - while ($reconnect--) - { - $ssl = axtlsp::ssl_client_new($ssl_ctx, $native_sock, - $session_id, $sess_id_size); - - $res = axtlsp::ssl_handshake_status($ssl); - if ($res != $axtlsp::SSL_OK) - { - axtlsp::ssl_display_error($res) if !$quiet; - axtlsp::ssl_free($ssl); - exit 1; - } - - display_session_id($ssl); - $session_id = axtlsp::ssl_get_session_id($ssl); - - if ($reconnect) - { - axtlsp::ssl_free($ssl); - $client_sock->close; - $client_sock = new IO::Socket::INET ( - PeerAddr => $host, PeerPort => $port, Proto => 'tcp') - || die ("no socket: $!"); - - } - } - } - else - { - $ssl = axtlsp::ssl_client_new($ssl_ctx, $native_sock, undef, 0); - } - - # check the return status - $res = axtlsp::ssl_handshake_status($ssl); - if ($res != $axtlsp::SSL_OK) - { - axtlsp::ssl_display_error($res) if not $quiet; - exit 1; - } - - if (!$quiet) - { - my $common_name = axtlsp::ssl_get_cert_dn($ssl, - $axtlsp::SSL_X509_CERT_COMMON_NAME); - - printf("Common Name:\t\t\t%s\n", $common_name) if defined $common_name; - display_session_id($ssl); - display_cipher($ssl); - } - - while () - { - my $cstring = pack("a*x", $_); # add null terminator - $res = axtlsp::ssl_write($ssl, \$cstring, length($cstring)); - if ($res < $axtlsp::SSL_OK) - { - axtlsp::ssl_display_error($res) if not $quiet; - last; - } - } - - axtlsp::ssl_ctx_free($ssl_ctx); - $client_sock->close; -} - -# -# We've had some sort of command-line error. Print out the basic options. -# -sub print_options -{ - my ($option) = @_; - printf("axssl: Error: '%s' is an invalid command.\n", $option); - printf("usage: axssl [s_server|s_client|version] [args ...]\n"); - exit 1; -} - -# -# We've had some sort of command-line error. Print out the server options. -# -sub print_server_options -{ - my ($build_mode, $option) = @_; - my $cert_size = axtlsp::ssl_get_config($axtlsp::SSL_MAX_CERT_CFG_OFFSET); - my $ca_cert_size = axtlsp::ssl_get_config( - $axtlsp::SSL_MAX_CA_CERT_CFG_OFFSET); - - printf("unknown option %s\n", $option); - printf("usage: s_server [args ...]\n"); - printf(" -accept arg\t- port to accept on (default is 4433)\n"); - printf(" -quiet\t\t- No server output\n"); - - if ($build_mode >= $axtlsp::SSL_BUILD_SERVER_ONLY) - { - printf(" -cert arg\t- certificate file to add (in addition to default)". - " to chain -\n". - "\t\t Can repeat up to %d times\n", $cert_size); - printf(" -key arg\t- Private key file to use - default DER format\n"); - printf(" -pass\t\t- private key file pass phrase source\n"); - } - - if ($build_mode >= $axtlsp::SSL_BUILD_ENABLE_VERIFICATION) - { - printf(" -verify\t- turn on peer certificate verification\n"); - printf(" -CAfile arg\t- Certificate authority - default DER format\n"); - printf("\t\t Can repeat up to %d times\n", $ca_cert_size); - } - - if ($build_mode == $axtlsp::SSL_BUILD_FULL_MODE) - { - printf(" -debug\t\t- Print more output\n"); - printf(" -state\t\t- Show state messages\n"); - printf(" -show-rsa\t- Show RSA state\n"); - } - - exit 1; -} - -# -# We've had some sort of command-line error. Print out the client options. -# -sub print_client_options -{ - my ($build_mode, $option) = @_; - my $cert_size = axtlsp::ssl_get_config($axtlsp::SSL_MAX_CERT_CFG_OFFSET); - my $ca_cert_size = axtlsp::ssl_get_config( - $axtlsp::SSL_MAX_CA_CERT_CFG_OFFSET); - - printf("unknown option %s\n", $option); - - if ($build_mode >= $axtlsp::SSL_BUILD_ENABLE_CLIENT) - { - printf("usage: s_client [args ...]\n"); - printf(" -connect host:port - who to connect to (default ". - "is localhost:4433)\n"); - printf(" -verify\t- turn on peer certificate verification\n"); - printf(" -cert arg\t- certificate file to use - default DER format\n"); - printf(" -key arg\t- Private key file to use - default DER format\n"); - printf("\t\t Can repeat up to %d times\n", $cert_size); - printf(" -CAfile arg\t- Certificate authority - default DER format\n"); - printf("\t\t Can repeat up to %d times\n", $ca_cert_size); - printf(" -quiet\t\t- No client output\n"); - printf(" -pass\t\t- private key file pass phrase source\n"); - printf(" -reconnect\t- Drop and re-make the connection ". - "with the same Session-ID\n"); - - if ($build_mode == $axtlsp::SSL_BUILD_FULL_MODE) - { - printf(" -debug\t\t- Print more output\n"); - printf(" -state\t\t- Show state messages\n"); - printf(" -show-rsa\t- Show RSA state\n"); - } - } - else - { - printf("Change configuration to allow this feature\n"); - } - - exit 1; -} - -# -# Display what cipher we are using -# -sub display_cipher -{ - my ($ssl) = @_; - printf("CIPHER is "); - my $cipher_id = axtlsp::ssl_get_cipher_id($ssl); - - if ($cipher_id == $axtlsp::SSL_AES128_SHA) - { - printf("AES128-SHA"); - } - elsif ($cipher_id == $axtlsp::SSL_AES256_SHA) - { - printf("AES256-SHA"); - } - elsif ($axtlsp::SSL_RC4_128_SHA) - { - printf("RC4-SHA"); - } - elsif ($axtlsp::SSL_RC4_128_MD5) - { - printf("RC4-MD5"); - } - else - { - printf("Unknown - %d", $cipher_id); - } - - printf("\n"); -} - -# -# Display what session id we have. -# -sub display_session_id -{ - my ($ssl) = @_; - my $session_id = axtlsp::ssl_get_session_id($ssl); - if (length($$session_id) > 0) - { - printf("-----BEGIN SSL SESSION PARAMETERS-----\n"); - printf(unpack("H*", $$session_id)); - printf("\n-----END SSL SESSION PARAMETERS-----\n"); - } -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/Makefile deleted file mode 100644 index 0984d4e02e..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -include ../../config/.config -include ../../config/makefile.conf -include ../../config/makefile.dotnet.conf - -# only build on Win32 platforms -ifdef GO_DOT_NET -all : sample -TARGET=../../$(STAGE)/axssl.vbnet.exe -sample : $(TARGET) - -$(TARGET): ../../bindings/vbnet/axTLSvb.vb ../../bindings/vbnet/axInterface.vb axssl.vb - vbc.exe /r:"`cygpath -w "$(CONFIG_DOT_NET_FRAMEWORK_BASE)/System.dll"`" /nologo /t:exe /out:"`cygpath -w $@`" $(foreach file, $^, "`cygpath -w $(file)`") - -endif # ARCH - -clean:: - -@rm -f $(TARGET) - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/axssl.vb b/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/axssl.vb deleted file mode 100644 index 1b423c8659..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/samples/vbnet/axssl.vb +++ /dev/null @@ -1,702 +0,0 @@ -' -' Copyright (c) 2007, Cameron Rich -' -' All rights reserved. -' -' Redistribution and use in source and binary forms, with or without -' modification, are permitted provided that the following conditions are met: -' -' * Redistributions of source code must retain the above copyright notice, -' this list of conditions and the following disclaimer. -' * Redistributions in binary form must reproduce the above copyright -' notice, this list of conditions and the following disclaimer in the -' documentation and/or other materials provided with the distribution. -' * Neither the name of the axTLS project nor the names of its -' contributors may be used to endorse or promote products derived -' from this software without specific prior written permission. -' -' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -' "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -' LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -' A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -' CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -' SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -' TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -' DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -' OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -' NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -' THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -' - -' -' Demonstrate the use of the axTLS library in VB.NET with a set of -' command-line parameters similar to openssl. In fact, openssl clients -' should be able to communicate with axTLS servers and visa-versa. -' -' This code has various bits enabled depending on the configuration. To enable -' the most interesting version, compile with the 'full mode' enabled. -' -' To see what options you have, run the following: -' > axssl.vbnet.exe s_server -? -' > axssl.vbnet.exe s_client -? -' -' The axtls shared library must be in the same directory or be found -' by the OS. -' - -Imports System -Imports System.Net -Imports System.Net.Sockets -Imports Microsoft.VisualBasic -Imports axTLSvb - -Public Class axssl - ' - ' do_server() - ' - Public Sub do_server(ByVal build_mode As Integer, _ - ByVal args() As String) - Dim i As Integer = 1 - Dim port As Integer = 4433 - Dim options As Integer = axtls.SSL_DISPLAY_CERTS - Dim quiet As Boolean = False - Dim password As String = Nothing - Dim private_key_file As String = Nothing - - ' organise the cert/ca_cert lists - Dim cert_size As Integer = SSLUtil.MaxCerts() - Dim ca_cert_size As Integer = SSLUtil.MaxCACerts() - Dim cert(cert_size) As String - Dim ca_cert(ca_cert_size) As String - Dim cert_index As Integer = 0 - Dim ca_cert_index As Integer = 0 - - While i < args.Length - If args(i) = "-accept" Then - If i >= args.Length-1 - print_server_options(build_mode, args(i)) - End If - - i += 1 - port = Int32.Parse(args(i)) - ElseIf args(i) = "-quiet" - quiet = True - options = options And Not axtls.SSL_DISPLAY_CERTS - ElseIf build_mode >= axtls.SSL_BUILD_SERVER_ONLY - If args(i) = "-cert" - If i >= args.Length-1 Or cert_index >= cert_size - print_server_options(build_mode, args(i)) - End If - - i += 1 - cert(cert_index) = args(i) - cert_index += 1 - ElseIf args(i) = "-key" - If i >= args.Length-1 - print_server_options(build_mode, args(i)) - End If - - i += 1 - private_key_file = args(i) - options = options Or axtls.SSL_NO_DEFAULT_KEY - ElseIf args(i) = "-pass" - If i >= args.Length-1 - print_server_options(build_mode, args(i)) - End If - - i += 1 - password = args(i) - ElseIf build_mode >= axtls.SSL_BUILD_ENABLE_VERIFICATION - If args(i) = "-verify" Then - options = options Or axtls.SSL_CLIENT_AUTHENTICATION - ElseIf args(i) = "-CAfile" - If i >= args.Length-1 Or _ - ca_cert_index >= ca_cert_size Then - print_server_options(build_mode, args(i)) - End If - - i += 1 - ca_cert(ca_cert_index) = args(i) - ca_cert_index += 1 - ElseIf build_mode = axtls.SSL_BUILD_FULL_MODE - If args(i) = "-debug" Then - options = options Or axtls.SSL_DISPLAY_BYTES - ElseIf args(i) = "-state" - options = options Or axtls.SSL_DISPLAY_STATES - ElseIf args(i) = "-show-rsa" - options = options Or axtls.SSL_DISPLAY_RSA - Else - print_server_options(build_mode, args(i)) - End If - Else - print_server_options(build_mode, args(i)) - End If - Else - print_server_options(build_mode, args(i)) - End If - End If - - i += 1 - End While - - ' Create socket for incoming connections - Dim ep As IPEndPoint = New IPEndPoint(IPAddress.Any, port) - Dim server_sock As TcpListener = New TcpListener(ep) - server_sock.Start() - - '********************************************************************* - ' This is where the interesting stuff happens. Up until now we've - ' just been setting up sockets etc. Now we do the SSL handshake. - '*********************************************************************/ - Dim ssl_ctx As SSLServer = New SSLServer(options, _ - axtls.SSL_DEFAULT_SVR_SESS) - - If ssl_ctx Is Nothing Then - Console.Error.WriteLine("Error: Server context is invalid") - Environment.Exit(1) - End If - - If private_key_file <> Nothing Then - Dim obj_type As Integer = axtls.SSL_OBJ_RSA_KEY - - If private_key_file.EndsWith(".p8") Then - obj_type = axtls.SSL_OBJ_PKCS8 - Else If (private_key_file.EndsWith(".p12")) - obj_type = axtls.SSL_OBJ_PKCS12 - End If - - If ssl_ctx.ObjLoad(obj_type, private_key_file, _ - password) <> axtls.SSL_OK Then - Console.Error.WriteLine("Error: Private key '" & _ - private_key_file & "' is undefined.") - Environment.Exit(1) - End If - End If - - For i = 0 To cert_index-1 - If ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CERT, _ - cert(i), Nothing) <> axtls.SSL_OK Then - Console.WriteLine("Certificate '" & cert(i) & _ - "' is undefined.") - Environment.Exit(1) - End If - Next - - For i = 0 To ca_cert_index-1 - If ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CACERT, _ - ca_cert(i), Nothing) <> axtls.SSL_OK Then - Console.WriteLine("Certificate '" & ca_cert(i) & _ - "' is undefined.") - Environment.Exit(1) - End If - Next - - Dim buf As Byte() = Nothing - Dim res As Integer - Dim ssl As SSL - - While 1 - If Not quiet Then - Console.WriteLine("ACCEPT") - End If - - Dim client_sock As Socket = server_sock.AcceptSocket() - - ssl = ssl_ctx.Connect(client_sock) - - ' do the actual SSL handshake - While 1 - res = ssl_ctx.Read(ssl, buf) - If res <> axtls.SSL_OK Then - Exit While - End If - - ' check when the connection has been established - If ssl.HandshakeStatus() = axtls.SSL_OK - Exit While - End If - - ' could do something else here - End While - - If res = axtls.SSL_OK Then ' connection established and ok - If Not quiet - display_session_id(ssl) - display_cipher(ssl) - End If - - ' now read (and display) whatever the client sends us - While 1 - ' keep reading until we get something interesting - While 1 - res = ssl_ctx.Read(ssl, buf) - If res <> axtls.SSL_OK Then - Exit While - End If - - ' could do something else here - End While - - If res < axtls.SSL_OK - If Not quiet - Console.WriteLine("CONNECTION CLOSED") - End If - - Exit While - End If - - ' convert to String - Dim str(res) As Char - For i = 0 To res-1 - str(i) = Chr(buf(i)) - Next - - Console.Write(str) - End While - ElseIf Not quiet - SSLUtil.DisplayError(res) - End If - - ' client was disconnected or the handshake failed. */ - ssl.Dispose() - client_sock.Close() - End While - - ssl_ctx.Dispose() - End Sub - - ' - ' do_client() - ' - Public Sub do_client(ByVal build_mode As Integer, _ - ByVal args() As String) - - If build_mode < axtls.SSL_BUILD_ENABLE_CLIENT Then - print_client_options(build_mode, args(1)) - End If - - Dim i As Integer = 1 - Dim res As Integer - Dim port As Integer = 4433 - Dim quiet As Boolean = False - Dim password As String = Nothing - Dim reconnect As Integer = 0 - Dim private_key_file As String = Nothing - Dim hostname As String = "127.0.0.1" - - ' organise the cert/ca_cert lists - Dim ssl As SSL = Nothing - Dim cert_size As Integer = SSLUtil.MaxCerts() - Dim ca_cert_size As Integer = SSLUtil.MaxCACerts() - Dim cert(cert_size) As String - Dim ca_cert(ca_cert_size) As String - Dim cert_index As Integer = 0 - Dim ca_cert_index As Integer = 0 - - Dim options As Integer = _ - axtls.SSL_SERVER_VERIFY_LATER Or axtls.SSL_DISPLAY_CERTS - Dim session_id As Byte() = Nothing - - While i < args.Length - If args(i) = "-connect" Then - Dim host_port As String - - If i >= args.Length-1 - print_client_options(build_mode, args(i)) - End If - - i += 1 - host_port = args(i) - - Dim index_colon As Integer = host_port.IndexOf(":"C) - If index_colon < 0 Then - print_client_options(build_mode, args(i)) - End If - - hostname = New String(host_port.ToCharArray(), _ - 0, index_colon) - port = Int32.Parse(New String(host_port.ToCharArray(), _ - index_colon+1, host_port.Length-index_colon-1)) - ElseIf args(i) = "-cert" - If i >= args.Length-1 Or cert_index >= cert_size Then - print_client_options(build_mode, args(i)) - End If - - i += 1 - cert(cert_index) = args(i) - cert_index += 1 - ElseIf args(i) = "-key" - If i >= args.Length-1 - print_client_options(build_mode, args(i)) - End If - - i += 1 - private_key_file = args(i) - options = options Or axtls.SSL_NO_DEFAULT_KEY - ElseIf args(i) = "-CAfile" - If i >= args.Length-1 Or ca_cert_index >= ca_cert_size - print_client_options(build_mode, args(i)) - End If - - i += 1 - ca_cert(ca_cert_index) = args(i) - ca_cert_index += 1 - ElseIf args(i) = "-verify" - options = options And Not axtls.SSL_SERVER_VERIFY_LATER - ElseIf args(i) = "-reconnect" - reconnect = 4 - ElseIf args(i) = "-quiet" - quiet = True - options = options And Not axtls.SSL_DISPLAY_CERTS - ElseIf args(i) = "-pass" - If i >= args.Length-1 - print_client_options(build_mode, args(i)) - End If - - i += 1 - password = args(i) - ElseIf build_mode = axtls.SSL_BUILD_FULL_MODE - If args(i) = "-debug" Then - options = options Or axtls.SSL_DISPLAY_BYTES - ElseIf args(i) = "-state" - options = options Or axtls.SSL_DISPLAY_STATES - ElseIf args(i) = "-show-rsa" - options = options Or axtls.SSL_DISPLAY_RSA - Else - print_client_options(build_mode, args(i)) - End If - Else ' don't know what this is - print_client_options(build_mode, args(i)) - End If - - i += 1 - End While - - 'Dim hostInfo As IPHostEntry = Dns.Resolve(hostname) - Dim hostInfo As IPHostEntry = Dns.GetHostEntry(hostname) - Dim addresses As IPAddress() = hostInfo.AddressList - Dim ep As IPEndPoint = New IPEndPoint(addresses(0), port) - Dim client_sock As Socket = New Socket(AddressFamily.InterNetwork, _ - SocketType.Stream, ProtocolType.Tcp) - client_sock.Connect(ep) - - If Not client_sock.Connected Then - Console.WriteLine("could not connect") - Environment.Exit(1) - End If - - If Not quiet Then - Console.WriteLine("CONNECTED") - End If - - '********************************************************************* - ' This is where the interesting stuff happens. Up until now we've - ' just been setting up sockets etc. Now we do the SSL handshake. - '*********************************************************************/ - Dim ssl_ctx As SSLClient = New SSLClient(options, _ - axtls.SSL_DEFAULT_CLNT_SESS) - - If ssl_ctx Is Nothing Then - Console.Error.WriteLine("Error: Client context is invalid") - Environment.Exit(1) - End If - - If private_key_file <> Nothing Then - Dim obj_type As Integer = axtls.SSL_OBJ_RSA_KEY - - If private_key_file.EndsWith(".p8") Then - obj_type = axtls.SSL_OBJ_PKCS8 - Else If (private_key_file.EndsWith(".p12")) - obj_type = axtls.SSL_OBJ_PKCS12 - End If - - If ssl_ctx.ObjLoad(obj_type, private_key_file, _ - password) <> axtls.SSL_OK Then - Console.Error.WriteLine("Error: Private key '" & _ - private_key_file & "' is undefined.") - Environment.Exit(1) - End If - End If - - For i = 0 To cert_index-1 - If ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CERT, _ - cert(i), Nothing) <> axtls.SSL_OK Then - Console.WriteLine("Certificate '" & cert(i) & _ - "' is undefined.") - Environment.Exit(1) - End If - Next - - For i = 0 To ca_cert_index-1 - If ssl_ctx.ObjLoad(axtls.SSL_OBJ_X509_CACERT, _ - ca_cert(i), Nothing) <> axtls.SSL_OK Then - Console.WriteLine("Certificate '" & ca_cert(i) & _ - "' is undefined.") - Environment.Exit(1) - End If - Next - - ' Try session resumption? - If reconnect > 0 Then - While reconnect > 0 - reconnect -= 1 - ssl = ssl_ctx.Connect(client_sock, session_id) - - res = ssl.HandshakeStatus() - If res <> axtls.SSL_OK Then - If Not quiet Then - SSLUtil.DisplayError(res) - End If - - ssl.Dispose() - Environment.Exit(1) - End If - - display_session_id(ssl) - session_id = ssl.GetSessionId() - - If reconnect > 0 Then - ssl.Dispose() - client_sock.Close() - - ' and reconnect - client_sock = New Socket(AddressFamily.InterNetwork, _ - SocketType.Stream, ProtocolType.Tcp) - client_sock.Connect(ep) - End If - End While - Else - ssl = ssl_ctx.Connect(client_sock, Nothing) - End If - - ' check the return status - res = ssl.HandshakeStatus() - If res <> axtls.SSL_OK Then - If Not quiet Then - SSLUtil.DisplayError(res) - End If - - Environment.Exit(1) - End If - - If Not quiet Then - Dim common_name As String = _ - ssl.GetCertificateDN(axtls.SSL_X509_CERT_COMMON_NAME) - - If common_name <> Nothing - Console.WriteLine("Common Name:" & _ - ControlChars.Tab & ControlChars.Tab & _ - ControlChars.Tab & common_name) - End If - - display_session_id(ssl) - display_cipher(ssl) - End If - - While (1) - Dim user_input As String = Console.ReadLine() - - If user_input = Nothing Then - Exit While - End If - - Dim buf(user_input.Length+1) As Byte - buf(buf.Length-2) = Asc(ControlChars.Lf) ' add the carriage return - buf(buf.Length-1) = 0 ' null terminate - - For i = 0 To user_input.Length-1 - buf(i) = Asc(user_input.Chars(i)) - Next - - res = ssl_ctx.Write(ssl, buf, buf.Length) - If res < axtls.SSL_OK Then - If Not quiet Then - SSLUtil.DisplayError(res) - End If - - Exit While - End If - End While - - ssl_ctx.Dispose() - End Sub - - ' - ' Display what cipher we are using - ' - Private Sub display_cipher(ByVal ssl As SSL) - Console.Write("CIPHER is ") - - Select ssl.GetCipherId() - Case axtls.SSL_AES128_SHA - Console.WriteLine("AES128-SHA") - - Case axtls.SSL_AES256_SHA - Console.WriteLine("AES256-SHA") - - Case axtls.SSL_RC4_128_SHA - Console.WriteLine("RC4-SHA") - - Case axtls.SSL_RC4_128_MD5 - Console.WriteLine("RC4-MD5") - - Case Else - Console.WriteLine("Unknown - " & ssl.GetCipherId()) - End Select - End Sub - - ' - ' Display what session id we have. - ' - Private Sub display_session_id(ByVal ssl As SSL) - Dim session_id As Byte() = ssl.GetSessionId() - - If session_id.Length > 0 Then - Console.WriteLine("-----BEGIN SSL SESSION PARAMETERS-----") - Dim b As Byte - For Each b In session_id - Console.Write("{0:x02}", b) - Next - - Console.WriteLine() - Console.WriteLine("-----END SSL SESSION PARAMETERS-----") - End If - End Sub - - ' - ' We've had some sort of command-line error. Print out the basic options. - ' - Public Sub print_options(ByVal options As String) - Console.WriteLine("axssl: Error: '" & options & _ - "' is an invalid command.") - Console.WriteLine("usage: axssl.vbnet [s_server|s_client|" & _ - "version] [args ...]") - Environment.Exit(1) - End Sub - - ' - ' We've had some sort of command-line error. Print out the server options. - ' - Private Sub print_server_options(ByVal build_mode As Integer, _ - ByVal options As String) - Dim cert_size As Integer = SSLUtil.MaxCerts() - Dim ca_cert_size As Integer = SSLUtil.MaxCACerts() - - Console.WriteLine("unknown option " & options) - Console.WriteLine("usage: s_server [args ...]") - Console.WriteLine(" -accept arg" & ControlChars.Tab & _ - "- port to accept on (default is 4433)") - Console.WriteLine(" -quiet" & ControlChars.Tab & ControlChars.Tab & _ - "- No server output") - If build_mode >= axtls.SSL_BUILD_SERVER_ONLY - Console.WriteLine(" -cert arg" & ControlChars.Tab & _ - "- certificate file to add (in addition to default) to chain -") - Console.WriteLine(ControlChars.Tab & ControlChars.Tab & _ - " Can repeat up to " & cert_size & " times") - Console.WriteLine(" -key arg" & ControlChars.Tab & _ - "- Private key file to use") - Console.WriteLine(" -pass" & ControlChars.Tab & ControlChars.Tab & _ - "- private key file pass phrase source") - End If - - If build_mode >= axtls.SSL_BUILD_ENABLE_VERIFICATION - Console.WriteLine(" -verify" & ControlChars.Tab & _ - "- turn on peer certificate verification") - Console.WriteLine(" -CAfile arg" & ControlChars.Tab & _ - "- Certificate authority") - Console.WriteLine(ControlChars.Tab & ControlChars.Tab & _ - " Can repeat up to " & ca_cert_size & " times") - End If - - If build_mode = axtls.SSL_BUILD_FULL_MODE - Console.WriteLine(" -debug" & _ - ControlChars.Tab & ControlChars.Tab & _ - "- Print more output") - Console.WriteLine(" -state" & _ - ControlChars.Tab & ControlChars.Tab & _ - "- Show state messages") - Console.WriteLine(" -show-rsa" & _ - ControlChars.Tab & "- Show RSA state") - End If - - Environment.Exit(1) - End Sub - - ' - ' We've had some sort of command-line error. Print out the client options. - ' - Private Sub print_client_options(ByVal build_mode As Integer, _ - ByVal options As String) - Dim cert_size As Integer = SSLUtil.MaxCerts() - Dim ca_cert_size As Integer = SSLUtil.MaxCACerts() - - Console.WriteLine("unknown option " & options) - - If build_mode >= axtls.SSL_BUILD_ENABLE_CLIENT Then - Console.WriteLine("usage: s_client [args ...]") - Console.WriteLine(" -connect host:port - who to connect to " & _ - "(default is localhost:4433)") - Console.WriteLine(" -verify" & ControlChars.Tab & _ - "- turn on peer certificate verification") - Console.WriteLine(" -cert arg" & ControlChars.Tab & _ - "- certificate file to use") - Console.WriteLine(ControlChars.Tab & ControlChars.Tab & _ - " Can repeat up to " & cert_size & " times") - Console.WriteLine(" -key arg" & ControlChars.Tab & _ - "- Private key file to use") - Console.WriteLine(" -CAfile arg" & ControlChars.Tab & _ - "- Certificate authority") - Console.WriteLine(ControlChars.Tab & ControlChars.Tab & _ - " Can repeat up to " & ca_cert_size & " times") - Console.WriteLine(" -quiet" & _ - ControlChars.Tab & ControlChars.Tab & "- No client output") - Console.WriteLine(" -pass" & ControlChars.Tab & _ - ControlChars.Tab & _ - "- private key file pass phrase source") - Console.WriteLine(" -reconnect" & ControlChars.Tab & _ - "- Drop and re-make the " & _ - "connection with the same Session-ID") - - If build_mode = axtls.SSL_BUILD_FULL_MODE Then - Console.WriteLine(" -debug" & _ - ControlChars.Tab & ControlChars.Tab & _ - "- Print more output") - Console.WriteLine(" -state" & _ - ControlChars.Tab & ControlChars.Tab & _ - "- Show state messages") - Console.WriteLine(" -show-rsa" & ControlChars.Tab & _ - "- Show RSA state") - End If - Else - Console.WriteLine("Change configuration to allow this feature") - End If - - Environment.Exit(1) - End Sub - -End Class - -Public Module MyMain - Function Main(ByVal args() As String) As Integer - Dim runner As axssl = New axssl() - - If args.Length = 1 And args(0) = "version" Then - Console.WriteLine("axssl.vbnet " & SSLUtil.Version()) - Environment.Exit(0) - End If - - If args.Length < 1 - runner.print_options("") - ElseIf args(0) <> "s_server" And args(0) <> "s_client" - runner.print_options(args(0)) - End If - - Dim build_mode As Integer = SSLUtil.BuildMode() - - If args(0) = "s_server" Then - runner.do_server(build_mode, args) - Else - runner.do_client(build_mode, args) - End If - End Function -End Module diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/BigIntConfig.in b/package/luci/libs/luci-lib-nixio/axTLS/ssl/BigIntConfig.in deleted file mode 100644 index 04c7438c07..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/BigIntConfig.in +++ /dev/null @@ -1,132 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see scripts/config/Kconfig-language.txt -# - -menu "BigInt Options" - depends on !CONFIG_SSL_SKELETON_MODE - -choice - prompt "Reduction Algorithm" - default CONFIG_BIGINT_BARRETT - -config CONFIG_BIGINT_CLASSICAL - bool "Classical" - help - Classical uses standard division. It has no limitations and is - theoretically the slowest due to the divisions used. For this particular - implementation it is surprisingly quite fast. - -config CONFIG_BIGINT_MONTGOMERY - bool "Montgomery" - help - Montgomery uses simple addition and multiplication to achieve its - performance. In this implementation it is slower than classical, - and it has the limitation that 0 <= x, y < m, and so is not used - when CRT is active. - - This option will not be normally selected. - -config CONFIG_BIGINT_BARRETT - bool "Barrett" - help - Barrett performs expensive precomputation before reduction and partial - multiplies for computational speed. It can't be used with some of the - calculations when CRT is used, and so defaults to classical when this - occurs. - - It is about 40% faster than Classical/Montgomery with the expense of - about 2kB, and so this option is normally selected. - -endchoice - -config CONFIG_BIGINT_CRT - bool "Chinese Remainder Theorem (CRT)" - default y - help - Allow the Chinese Remainder Theorem (CRT) to be used. - - Uses a number of extra coefficients from the private key to improve the - performance of a decryption. This feature is one of the most - significant performance improvements (it reduces a decryption time by - over 3 times). - - This option should be selected. - -config CONFIG_BIGINT_KARATSUBA - bool "Karatsuba Multiplication" - default n - help - Allow Karasuba multiplication to be used. - - Uses 3 multiplications (plus a number of additions/subtractions) - instead of 4. Multiplications are O(N^2) but addition/subtraction - is O(N) hence for large numbers is beneficial. For this project, the - effect was only useful for 4096 bit keys. As these aren't likely to - be used, the feature is disabled by default. - - It costs about 2kB to enable it. - -config MUL_KARATSUBA_THRESH - int "Karatsuba Multiplication Theshold" - default 20 - depends on CONFIG_BIGINT_KARATSUBA - help - The minimum number of components needed before Karasuba muliplication - is used. - - This is very dependent on the speed/implementation of bi_add()/ - bi_subtract(). There is a bit of trial and error here and will be - at a different point for different architectures. - -config SQU_KARATSUBA_THRESH - int "Karatsuba Square Threshold" - default 40 - depends on CONFIG_BIGINT_KARATSUBA && CONFIG_BIGINT_SQUARE - help - The minimum number of components needed before Karatsuba squaring - is used. - - This is very dependent on the speed/implementation of bi_add()/ - bi_subtract(). There is a bit of trial and error here and will be - at a different point for different architectures. - -config CONFIG_BIGINT_SLIDING_WINDOW - bool "Sliding Window Exponentiation" - default y - help - Allow Sliding-Window Exponentiation to be used. - - Potentially processes more than 1 bit at a time when doing - exponentiation. The sliding-window technique reduces the number of - precomputations compared to other precomputed techniques. - - It results in a considerable performance improvement with it enabled - (it halves the decryption time) and so should be selected. - -config CONFIG_BIGINT_SQUARE - bool "Square Algorithm" - default y - help - Allow squaring to be used instead of a multiplication. - - Squaring is theoretically 50% faster than a standard multiply - (but is actually about 25% faster). - - It gives a 20% speed improvement and so should be selected. - -config CONFIG_BIGINT_CHECK_ON - bool "BigInt Integrity Checking" - default n if !CONFIG_DEBUG - default y if CONFIG_DEBUG - help - This is used when developing bigint algorithms. It performs a sanity - check on all operations at the expense of speed. - - This option is only selected when developing and should normally be - turned off. - -endmenu - - - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/Config.in b/package/luci/libs/luci-lib-nixio/axTLS/ssl/Config.in deleted file mode 100644 index d047d420ec..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/Config.in +++ /dev/null @@ -1,336 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see scripts/config/Kconfig-language.txt -# - -menu "SSL Library" - -choice - prompt "Mode" - default CONFIG_SSL_FULL_MODE - -config CONFIG_SSL_SERVER_ONLY - bool "Server only - no verification" - help - Enable server functionality (no client functionality). - This mode still supports sessions and chaining (which can be turned - off in configuration). - - The axssl sample runs with the minimum of features. - - This is the most space efficient of the modes with the library - about 45kB in size. Use this mode if you are doing standard SSL server - work. - -config CONFIG_SSL_CERT_VERIFICATION - bool "Server only - with verification" - help - Enable server functionality with client authentication (no client - functionality). - - The axssl sample runs with the "-verify" and "-CAfile" options. - - This mode produces a library about 49kB in size. Use this mode if you - have an SSL server which requires client authentication (which is - uncommon in browser applications). - -config CONFIG_SSL_ENABLE_CLIENT - bool "Client/Server enabled" - help - Enable client/server functionality (including peer authentication). - - The axssl sample runs with the "s_client" option enabled. - - This mode produces a library about 51kB in size. Use this mode if you - require axTLS to use SSL client functionality (the SSL server code - is always enabled). - -config CONFIG_SSL_FULL_MODE - bool "Client/Server enabled with diagnostics" - help - Enable client/server functionality including diagnostics. Most of the - extra size in this mode is due to the storage of various strings that - are used. - - The axssl sample has 3 more options, "-debug", "-state" and "-show-rsa" - - This mode produces a library about 58kB in size. It is suggested that - this mode is used only during development, or systems that have more - generous memory limits. - - It is the default to demonstrate the features of axTLS. - -config CONFIG_SSL_SKELETON_MODE - bool "Skeleton mode - the smallest server mode" - help - This is an experiment to build the smallest library at the expense of - features and speed. - - * Server mode only. - * The AES cipher is disabled. - * No session resumption. - * No external keys/certificates are supported. - * The bigint library has most of the performance features disabled. - * Some other features/API calls may not work. - - This mode produces a library about 37kB in size. The main - disadvantage of this mode is speed - it will be much slower than the - other build modes. - -endchoice - -choice - prompt "Protocol Preference" - depends on !CONFIG_SSL_SKELETON_MODE - default CONFIG_SSL_PROT_MEDIUM - -config CONFIG_SSL_PROT_LOW - bool "Low" - help - Chooses the cipher in the order of RC4-SHA, AES128-SHA, AES256-SHA. - - This will use the fastest cipher(s) but at the expense of security. - -config CONFIG_SSL_PROT_MEDIUM - bool "Medium" - help - Chooses the cipher in the order of AES128-SHA, AES256-SHA, RC4-SHA. - - This mode is a balance between speed and security and is the default. - -config CONFIG_SSL_PROT_HIGH - bool "High" - help - Chooses the cipher in the order of AES256-SHA, AES128-SHA, RC4-SHA. - - This will use the strongest cipher(s) at the cost of speed. - -endchoice - -config CONFIG_SSL_USE_DEFAULT_KEY - bool "Enable default key" - depends on !CONFIG_SSL_SKELETON_MODE - default y - help - Some applications will not require the default private key/certificate - that is built in. This is one way to save on a couple of kB's if an - external private key/certificate is used. - - The private key is in ssl/private_key.h and the certificate is in - ssl/cert.h. - - The advantage of a built-in private key/certificate is that no file - system is required for access. Both the certificate and the private - key will be automatically loaded on a ssl_ctx_new(). - - However this private key/certificate can never be changed (without a - code update). - - This mode is enabled by default. Disable this mode if the - built-in key/certificate is not used. - -config CONFIG_SSL_PRIVATE_KEY_LOCATION - string "Private key file location" - depends on !CONFIG_SSL_USE_DEFAULT_KEY && !CONFIG_SSL_SKELETON_MODE - help - The file location of the private key which will be automatically - loaded on a ssl_ctx_new(). - -config CONFIG_SSL_PRIVATE_KEY_PASSWORD - string "Private key password" - depends on !CONFIG_SSL_USE_DEFAULT_KEY && CONFIG_SSL_HAS_PEM - help - The password required to decrypt a PEM-encoded password file. - -config CONFIG_SSL_X509_CERT_LOCATION - string "X.509 certificate file location" - depends on !CONFIG_SSL_GENERATE_X509_CERT && !CONFIG_SSL_USE_DEFAULT_KEY && !CONFIG_SSL_SKELETON_MODE - help - The file location of the X.509 certificate which will be automatically - loaded on a ssl_ctx_new(). - -config CONFIG_SSL_GENERATE_X509_CERT - bool "Generate X.509 Certificate" - default n - help - An X.509 certificate can be automatically generated on a - ssl_ctx_new(). A private key still needs to be provided (the private - key in ss/private_key.h will be used unless - CONFIG_SSL_PRIVATE_KEY_LOCATION is set). - - The certificate is generated on the fly, and so a minor start-up time - penalty is to be expected. This feature adds around 5kB to the - library. - - This feature is disabled by default. - -config CONFIG_SSL_X509_COMMON_NAME - string "X.509 Common Name" - depends on CONFIG_SSL_GENERATE_X509_CERT - help - The common name for the X.509 certificate. This should be the fully - qualified domain name (FQDN), e.g. www.foo.com. - - If this is blank, then this will be value from gethostname() and - getdomainname(). - -config CONFIG_SSL_X509_ORGANIZATION_NAME - string "X.509 Organization Name" - depends on CONFIG_SSL_GENERATE_X509_CERT - help - The organization name for the generated X.509 certificate. - - This field is optional. - -config CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME - string "X.509 Organization Unit Name" - depends on CONFIG_SSL_GENERATE_X509_CERT - help - The organization unit name for the generated X.509 certificate. - - This field is optional. - -config CONFIG_SSL_ENABLE_V23_HANDSHAKE - bool "Enable v23 Handshake" - default y - help - Some browsers use the v23 handshake client hello message - (an SSL2 format message which all SSL servers can understand). - It may be used if SSL2 is enabled in the browser. - - Since this feature takes a kB or so, this feature may be disabled - at - the risk of making it incompatible with some browsers (IE6 is ok, - Firefox 1.5 and below use it). - - Disable if backwards compatibility is not an issue (i.e. the client is - always using TLS1.0) - -config CONFIG_SSL_HAS_PEM - bool "Enable PEM" - default n if !CONFIG_SSL_FULL_MODE - default y if CONFIG_SSL_FULL_MODE - depends on !CONFIG_SSL_SKELETON_MODE - help - Enable the use of PEM format for certificates and private keys. - - PEM is not normally needed - PEM files can be converted into DER files - quite easily. However they have the convenience of allowing multiple - certificates/keys in the same file. - - This feature will add a couple of kB to the library. - - Disable if PEM is not used (which will be in most cases). - -config CONFIG_SSL_USE_PKCS12 - bool "Use PKCS8/PKCS12" - default n if !CONFIG_SSL_FULL_MODE - default y if CONFIG_SSL_FULL_MODE - depends on !CONFIG_SSL_SERVER_ONLY && !CONFIG_SSL_SKELETON_MODE - help - PKCS#12 certificates combine private keys and certificates together in - one file. - - PKCS#8 private keys are also suppported (as it is a subset of PKCS#12). - - The decryption of these certificates uses RC4-128 (and these - certificates must be encrypted using this cipher). The actual - algorithm is "PBE-SHA1-RC4-128". - - Disable if PKCS#12 is not used (which will be in most cases). - -config CONFIG_SSL_EXPIRY_TIME - int "Session expiry time (in hours)" - depends on !CONFIG_SSL_SKELETON_MODE - default 24 - help - The time (in hours) before a session expires. - - A longer time means that the expensive parts of a handshake don't - need to be run when a client reconnects later. - - The default is 1 day. - -config CONFIG_X509_MAX_CA_CERTS - int "Maximum number of certificate authorites" - default 4 - depends on !CONFIG_SSL_SERVER_ONLY && !CONFIG_SSL_SKELETON_MODE - help - Determines the number of CA's allowed. - - Increase this figure if more trusted sites are allowed. Each - certificate adds about 300 bytes (when added). - - The default is to allow four certification authorities. - -config CONFIG_SSL_MAX_CERTS - int "Maximum number of chained certificates" - default 2 - help - Determines the number of certificates used in a certificate - chain. The chain length must be at least 1. - - Increase this figure if more certificates are to be added to the - chain. Each certificate adds about 300 bytes (when added). - - The default is to allow one certificate + 1 certificate in the chain - (which may be the certificate authority certificate). - -config CONFIG_SSL_CTX_MUTEXING - bool "Enable SSL_CTX mutexing" - default n - help - Normally mutexing is not required - each SSL_CTX object can deal with - many SSL objects (as long as each SSL_CTX object is using a single - thread). - - If the SSL_CTX object is not thread safe e.g. the case where a - new thread is created for each SSL object, then mutexing is required. - - Select y when a mutex on the SSL_CTX object is required. - -config CONFIG_USE_DEV_URANDOM - bool "Use /dev/urandom" - default y - depends on !CONFIG_PLATFORM_WIN32 - help - Use /dev/urandom. Otherwise a custom RNG is used. - - This will be the default on most Linux systems. - -config CONFIG_WIN32_USE_CRYPTO_LIB - bool "Use Win32 Crypto Library" - depends on CONFIG_PLATFORM_WIN32 - help - Microsoft produce a Crypto API which requires the Platform SDK to be - installed. It's used for the RNG. - - This will be the default on most Win32 systems. - -config CONFIG_OPENSSL_COMPATIBLE - bool "Enable openssl API compatibility" - default n - help - To ease the porting of openssl applications, a subset of the openssl - API is wrapped around the axTLS API. - - Note: not all the API is implemented, so parts may still break. And - it's definitely not 100% compatible. - -config CONFIG_PERFORMANCE_TESTING - bool "Build the bigint performance test tool" - default n - help - Used for performance testing of bigint. - - This is a testing tool and is normally disabled. - -config CONFIG_SSL_TEST - bool "Build the SSL testing tool" - default n - depends on CONFIG_SSL_FULL_MODE && !CONFIG_SSL_GENERATE_X509_CERT - help - Used for sanity checking the SSL handshaking. - - This is a testing tool and is normally disabled. - -endmenu diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/ssl/Makefile deleted file mode 100644 index 704d90a9b2..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/Makefile +++ /dev/null @@ -1,123 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -AXTLS_HOME=.. - -include $(AXTLS_HOME)/config/.config -include $(AXTLS_HOME)/config/makefile.conf - -all: libs -ifdef CONFIG_PERFORMANCE_TESTING - $(MAKE) -C test -else -ifdef CONFIG_SSL_TEST - $(MAKE) -C test -endif -endif - -ifndef CONFIG_PLATFORM_WIN32 -TARGET1=$(AXTLS_HOME)/$(STAGE)/libaxtls.a -BASETARGET=libaxtls.so -CRYPTO_PATH=$(AXTLS_HOME)/crypto/ -ifdef CONFIG_PLATFORM_CYGWIN -TARGET2=$(AXTLS_HOME)/$(STAGE)/libaxtls.dll.a -else -TARGET2=$(AXTLS_HOME)/$(STAGE)/$(LIBMINOR) -endif - -# shared library major/minor numbers -LIBMAJOR=$(BASETARGET).1 -LIBMINOR=$(BASETARGET).1.2 -else -TARGET1=$(AXTLS_HOME)/$(STAGE)/axtls.lib -TARGET2=$(AXTLS_HOME)/$(STAGE)/axtls.dll -STATIC_LIB=$(AXTLS_HOME)/$(STAGE)/axtls.static.lib -CRYPTO_PATH=$(AXTLS_HOME)\\crypto\\ -endif - -libs: $(TARGET1) $(TARGET2) - -CRYPTO_OBJ=\ - $(CRYPTO_PATH)aes.o \ - $(CRYPTO_PATH)bigint.o \ - $(CRYPTO_PATH)crypto_misc.o \ - $(CRYPTO_PATH)hmac.o \ - $(CRYPTO_PATH)md2.o \ - $(CRYPTO_PATH)md5.o \ - $(CRYPTO_PATH)rc4.o \ - $(CRYPTO_PATH)rsa.o \ - $(CRYPTO_PATH)sha1.o - -OBJ=\ - asn1.o \ - gen_cert.o \ - loader.o \ - openssl.o \ - os_port.o \ - p12.o \ - tls1.o \ - tls1_svr.o \ - tls1_clnt.o \ - x509.o - -include $(AXTLS_HOME)/config/makefile.post - -ifndef CONFIG_PLATFORM_WIN32 # Linux/Unix/Cygwin - -$(TARGET1) : $(OBJ) - $(AR) -r $@ $(CRYPTO_OBJ) $(OBJ) - -$(TARGET2) : $(OBJ) -ifndef CONFIG_PLATFORM_CYGWIN - $(LD) $(LDFLAGS) $(LDSHARED) -o $(AXTLS_HOME)/$(STAGE)/$(LIBMINOR) $(CRYPTO_OBJ) $(OBJ) - cd $(AXTLS_HOME)/$(STAGE); ln -sf $(LIBMINOR) $(LIBMAJOR); ln -sf $(LIBMAJOR) $(BASETARGET); cd - -else - $(LD) $(LDFLAGS) $(LDSHARED) -o $(AXTLS_HOME)/$(STAGE)/cygaxtls.dll \ - -Wl,--out-implib=$(AXTLS_HOME)/$(STAGE)/libaxtls.dll.a \ - -Wl,--export-all-symbols \ - -Wl,--enable-auto-import $(CRYPTO_OBJ) $(OBJ) -endif - -else # Win32 -CRYPTO_OBJ:=$(CRYPTO_OBJ:.o=.obj) - -$(TARGET1) : $(OBJ) - $(AR) /out:$@ $(CRYPTO_OBJ) $(OBJ) - -$(TARGET2) : $(OBJ) - cp $(TARGET1) $(STATIC_LIB) - $(LD) $(LDFLAGS) $(LDSHARED) /out:$@ $(CRYPTO_OBJ) $(OBJ) - -endif - -clean:: - $(MAKE) -C test clean - -@rm -f $(AXTLS_HOME)/$(STAGE)/* *.a $(TARGET1) $(TARGET2) - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/asn1.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/asn1.c deleted file mode 100644 index 4f2e6db240..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/asn1.c +++ /dev/null @@ -1,510 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Some primitive asn methods for extraction ASN.1 data. - */ - -#include -#include -#include -#include -#include "os_port.h" -#include "crypto.h" -#include "crypto_misc.h" - -#define SIG_OID_PREFIX_SIZE 8 -#define SIG_IIS6_OID_SIZE 5 - -/* Must be an RSA algorithm with either SHA1 or MD5 for verifying to work */ -static const uint8_t sig_oid_prefix[SIG_OID_PREFIX_SIZE] = -{ - 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01 -}; - -static const uint8_t sig_iis6_oid[SIG_IIS6_OID_SIZE] = -{ - 0x2b, 0x0e, 0x03, 0x02, 0x1d -}; - -/* CN, O, OU */ -static const uint8_t g_dn_types[] = { 3, 10, 11 }; - -int get_asn1_length(const uint8_t *buf, int *offset) -{ - int len, i; - - if (!(buf[*offset] & 0x80)) /* short form */ - { - len = buf[(*offset)++]; - } - else /* long form */ - { - int length_bytes = buf[(*offset)++]&0x7f; - len = 0; - for (i = 0; i < length_bytes; i++) - { - len <<= 8; - len += buf[(*offset)++]; - } - } - - return len; -} - -/** - * Skip the ASN1.1 object type and its length. Get ready to read the object's - * data. - */ -int asn1_next_obj(const uint8_t *buf, int *offset, int obj_type) -{ - if (buf[*offset] != obj_type) - return X509_NOT_OK; - (*offset)++; - return get_asn1_length(buf, offset); -} - -/** - * Skip over an ASN.1 object type completely. Get ready to read the next - * object. - */ -int asn1_skip_obj(const uint8_t *buf, int *offset, int obj_type) -{ - int len; - - if (buf[*offset] != obj_type) - return X509_NOT_OK; - (*offset)++; - len = get_asn1_length(buf, offset); - *offset += len; - return 0; -} - -/** - * Read an integer value for ASN.1 data - * Note: This function allocates memory which must be freed by the user. - */ -int asn1_get_int(const uint8_t *buf, int *offset, uint8_t **object) -{ - int len; - - if ((len = asn1_next_obj(buf, offset, ASN1_INTEGER)) < 0) - goto end_int_array; - - if (len > 1 && buf[*offset] == 0x00) /* ignore the negative byte */ - { - len--; - (*offset)++; - } - - *object = (uint8_t *)malloc(len); - memcpy(*object, &buf[*offset], len); - *offset += len; - -end_int_array: - return len; -} - -/** - * Get all the RSA private key specifics from an ASN.1 encoded file - */ -int asn1_get_private_key(const uint8_t *buf, int len, RSA_CTX **rsa_ctx) -{ - int offset = 7; - uint8_t *modulus = NULL, *priv_exp = NULL, *pub_exp = NULL; - int mod_len, priv_len, pub_len; -#ifdef CONFIG_BIGINT_CRT - uint8_t *p = NULL, *q = NULL, *dP = NULL, *dQ = NULL, *qInv = NULL; - int p_len, q_len, dP_len, dQ_len, qInv_len; -#endif - - /* not in der format */ - if (buf[0] != ASN1_SEQUENCE) /* basic sanity check */ - { -#ifdef CONFIG_SSL_FULL_MODE - printf("Error: This is not a valid ASN.1 file\n"); -#endif - return X509_INVALID_PRIV_KEY; - } - - /* initialise the RNG */ - RNG_initialize(buf, len); - - mod_len = asn1_get_int(buf, &offset, &modulus); - pub_len = asn1_get_int(buf, &offset, &pub_exp); - priv_len = asn1_get_int(buf, &offset, &priv_exp); - - if (mod_len <= 0 || pub_len <= 0 || priv_len <= 0) - return X509_INVALID_PRIV_KEY; - -#ifdef CONFIG_BIGINT_CRT - p_len = asn1_get_int(buf, &offset, &p); - q_len = asn1_get_int(buf, &offset, &q); - dP_len = asn1_get_int(buf, &offset, &dP); - dQ_len = asn1_get_int(buf, &offset, &dQ); - qInv_len = asn1_get_int(buf, &offset, &qInv); - - if (p_len <= 0 || q_len <= 0 || dP_len <= 0 || dQ_len <= 0 || qInv_len <= 0) - return X509_INVALID_PRIV_KEY; - - RSA_priv_key_new(rsa_ctx, - modulus, mod_len, pub_exp, pub_len, priv_exp, priv_len, - p, p_len, q, p_len, dP, dP_len, dQ, dQ_len, qInv, qInv_len); - - free(p); - free(q); - free(dP); - free(dQ); - free(qInv); -#else - RSA_priv_key_new(rsa_ctx, - modulus, mod_len, pub_exp, pub_len, priv_exp, priv_len); -#endif - - free(modulus); - free(priv_exp); - free(pub_exp); - return X509_OK; -} - -/** - * Get the time of a certificate. Ignore hours/minutes/seconds. - */ -static int asn1_get_utc_time(const uint8_t *buf, int *offset, time_t *t) -{ - int ret = X509_NOT_OK, len, t_offset; - struct tm tm; - - if (buf[(*offset)++] != ASN1_UTC_TIME) - goto end_utc_time; - len = get_asn1_length(buf, offset); - t_offset = *offset; - - memset(&tm, 0, sizeof(struct tm)); - tm.tm_year = (buf[t_offset] - '0')*10 + (buf[t_offset+1] - '0'); - - if (tm.tm_year <= 50) /* 1951-2050 thing */ - { - tm.tm_year += 100; - } - - tm.tm_mon = (buf[t_offset+2] - '0')*10 + (buf[t_offset+3] - '0') - 1; - tm.tm_mday = (buf[t_offset+4] - '0')*10 + (buf[t_offset+5] - '0'); - *t = mktime(&tm); - *offset += len; - ret = X509_OK; - -end_utc_time: - return ret; -} - -/** - * Get the version type of a certificate (which we don't actually care about) - */ -int asn1_version(const uint8_t *cert, int *offset, X509_CTX *x509_ctx) -{ - int ret = X509_NOT_OK; - - (*offset) += 2; /* get past explicit tag */ - if (asn1_skip_obj(cert, offset, ASN1_INTEGER)) - goto end_version; - - ret = X509_OK; -end_version: - return ret; -} - -/** - * Retrieve the notbefore and notafter certificate times. - */ -int asn1_validity(const uint8_t *cert, int *offset, X509_CTX *x509_ctx) -{ - return (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0 || - asn1_get_utc_time(cert, offset, &x509_ctx->not_before) || - asn1_get_utc_time(cert, offset, &x509_ctx->not_after)); -} - -/** - * Get the components of a distinguished name - */ -static int asn1_get_oid_x520(const uint8_t *buf, int *offset) -{ - int dn_type = 0; - int len; - - if ((len = asn1_next_obj(buf, offset, ASN1_OID)) < 0) - goto end_oid; - - /* expect a sequence of 2.5.4.[x] where x is a one of distinguished name - components we are interested in. */ - if (len == 3 && buf[(*offset)++] == 0x55 && buf[(*offset)++] == 0x04) - dn_type = buf[(*offset)++]; - else - { - *offset += len; /* skip over it */ - } - -end_oid: - return dn_type; -} - -/** - * Obtain an ASN.1 printable string type. - */ -static int asn1_get_printable_str(const uint8_t *buf, int *offset, char **str) -{ - int len = X509_NOT_OK; - - /* some certs have this awful crud in them for some reason */ - if (buf[*offset] != ASN1_PRINTABLE_STR && - buf[*offset] != ASN1_TELETEX_STR && - buf[*offset] != ASN1_IA5_STR && - buf[*offset] != ASN1_UNICODE_STR) - goto end_pnt_str; - - (*offset)++; - len = get_asn1_length(buf, offset); - - if (buf[*offset - 1] == ASN1_UNICODE_STR) - { - int i; - *str = (char *)malloc(len/2+1); /* allow for null */ - - for (i = 0; i < len; i += 2) - (*str)[i/2] = buf[*offset + i + 1]; - - (*str)[len/2] = 0; /* null terminate */ - } - else - { - *str = (char *)malloc(len+1); /* allow for null */ - memcpy(*str, &buf[*offset], len); - (*str)[len] = 0; /* null terminate */ - } - - *offset += len; - -end_pnt_str: - return len; -} - -/** - * Get the subject name (or the issuer) of a certificate. - */ -int asn1_name(const uint8_t *cert, int *offset, char *dn[]) -{ - int ret = X509_NOT_OK; - int dn_type; - char *tmp = NULL; - - if (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0) - goto end_name; - - while (asn1_next_obj(cert, offset, ASN1_SET) >= 0) - { - int i, found = 0; - - if (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0 || - (dn_type = asn1_get_oid_x520(cert, offset)) < 0) - goto end_name; - - if (asn1_get_printable_str(cert, offset, &tmp) < 0) - { - free(tmp); - goto end_name; - } - - /* find the distinguished named type */ - for (i = 0; i < X509_NUM_DN_TYPES; i++) - { - if (dn_type == g_dn_types[i]) - { - if (dn[i] == NULL) - { - dn[i] = tmp; - found = 1; - break; - } - } - } - - if (found == 0) /* not found so get rid of it */ - { - free(tmp); - } - } - - ret = X509_OK; -end_name: - return ret; -} - -/** - * Read the modulus and public exponent of a certificate. - */ -int asn1_public_key(const uint8_t *cert, int *offset, X509_CTX *x509_ctx) -{ - int ret = X509_NOT_OK, mod_len, pub_len; - uint8_t *modulus = NULL, *pub_exp = NULL; - - if (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0 || - asn1_skip_obj(cert, offset, ASN1_SEQUENCE) || - asn1_next_obj(cert, offset, ASN1_BIT_STRING) < 0) - goto end_pub_key; - - (*offset)++; /* ignore the padding bit field */ - - if (asn1_next_obj(cert, offset, ASN1_SEQUENCE) < 0) - goto end_pub_key; - - mod_len = asn1_get_int(cert, offset, &modulus); - pub_len = asn1_get_int(cert, offset, &pub_exp); - - RSA_pub_key_new(&x509_ctx->rsa_ctx, modulus, mod_len, pub_exp, pub_len); - - free(modulus); - free(pub_exp); - ret = X509_OK; - -end_pub_key: - return ret; -} - -#ifdef CONFIG_SSL_CERT_VERIFICATION -/** - * Read the signature of the certificate. - */ -int asn1_signature(const uint8_t *cert, int *offset, X509_CTX *x509_ctx) -{ - int ret = X509_NOT_OK; - - if (cert[(*offset)++] != ASN1_BIT_STRING) - goto end_sig; - - x509_ctx->sig_len = get_asn1_length(cert, offset)-1; - (*offset)++; /* ignore bit string padding bits */ - x509_ctx->signature = (uint8_t *)malloc(x509_ctx->sig_len); - memcpy(x509_ctx->signature, &cert[*offset], x509_ctx->sig_len); - *offset += x509_ctx->sig_len; - ret = X509_OK; - -end_sig: - return ret; -} - -/* - * Compare 2 distinguished name components for equality - * @return 0 if a match - */ -static int asn1_compare_dn_comp(const char *dn1, const char *dn2) -{ - int ret = 1; - - if ((dn1 && dn2 == NULL) || (dn1 == NULL && dn2)) goto err_no_match; - - ret = (dn1 && dn2) ? strcmp(dn1, dn2) : 0; - -err_no_match: - return ret; -} - -/** - * Clean up all of the CA certificates. - */ -void remove_ca_certs(CA_CERT_CTX *ca_cert_ctx) -{ - int i = 0; - - if (ca_cert_ctx == NULL) - return; - - while (i < CONFIG_X509_MAX_CA_CERTS && ca_cert_ctx->cert[i]) - { - x509_free(ca_cert_ctx->cert[i]); - ca_cert_ctx->cert[i++] = NULL; - } - - free(ca_cert_ctx); -} - -/* - * Compare 2 distinguished names for equality - * @return 0 if a match - */ -int asn1_compare_dn(char * const dn1[], char * const dn2[]) -{ - int i; - - for (i = 0; i < X509_NUM_DN_TYPES; i++) - { - if (asn1_compare_dn_comp(dn1[i], dn2[i])) - return 1; - } - - return 0; /* all good */ -} - -#endif - -/** - * Read the signature type of the certificate. We only support RSA-MD5 and - * RSA-SHA1 signature types. - */ -int asn1_signature_type(const uint8_t *cert, - int *offset, X509_CTX *x509_ctx) -{ - int ret = X509_NOT_OK, len; - - if (cert[(*offset)++] != ASN1_OID) - goto end_check_sig; - - len = get_asn1_length(cert, offset); - - if (len == 5 && memcmp(sig_iis6_oid, &cert[*offset], - SIG_IIS6_OID_SIZE) == 0) - { - x509_ctx->sig_type = SIG_TYPE_SHA1; - } - else - { - if (memcmp(sig_oid_prefix, &cert[*offset], SIG_OID_PREFIX_SIZE)) - goto end_check_sig; /* unrecognised cert type */ - - x509_ctx->sig_type = cert[*offset + SIG_OID_PREFIX_SIZE]; - } - - *offset += len; - asn1_skip_obj(cert, offset, ASN1_NULL); /* if it's there */ - ret = X509_OK; - -end_check_sig: - return ret; -} - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/cert.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/cert.h deleted file mode 100644 index 7a85d2d843..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/cert.h +++ /dev/null @@ -1,43 +0,0 @@ -unsigned char default_certificate[] = { - 0x30, 0x82, 0x01, 0xd7, 0x30, 0x82, 0x01, 0x40, 0x02, 0x09, 0x00, 0xf1, - 0xc3, 0x87, 0xc0, 0xd4, 0xf4, 0x57, 0xc3, 0x30, 0x0d, 0x06, 0x09, 0x2a, - 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x34, - 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x29, 0x61, - 0x78, 0x54, 0x4c, 0x53, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x20, 0x44, 0x6f, 0x64, 0x67, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x30, 0x36, - 0x30, 0x37, 0x31, 0x31, 0x34, 0x34, 0x33, 0x32, 0x5a, 0x17, 0x0d, 0x33, - 0x33, 0x31, 0x30, 0x32, 0x33, 0x31, 0x31, 0x34, 0x34, 0x33, 0x32, 0x5a, - 0x30, 0x2c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, - 0x0d, 0x61, 0x78, 0x54, 0x4c, 0x53, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, - 0x09, 0x31, 0x32, 0x37, 0x2e, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x30, 0x81, - 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, - 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, - 0x81, 0x81, 0x00, 0xd8, 0xe0, 0xbf, 0x15, 0xde, 0xea, 0xaf, 0xe8, 0xd5, - 0xfd, 0x0b, 0xa8, 0xa8, 0xb3, 0xd7, 0x46, 0x5d, 0xa7, 0x26, 0x6c, 0x0c, - 0xb5, 0xd9, 0xbc, 0xc6, 0xf8, 0xc0, 0x78, 0xd0, 0xf6, 0x56, 0x65, 0xf8, - 0x29, 0x48, 0x0e, 0x7b, 0x0b, 0xa6, 0x25, 0x7e, 0xe8, 0x7b, 0x79, 0x6f, - 0x38, 0xe5, 0xb5, 0xb7, 0xf4, 0xe0, 0x9c, 0x91, 0x60, 0xf4, 0x06, 0xf3, - 0x40, 0x1e, 0xf9, 0x91, 0x19, 0xa9, 0x2f, 0x47, 0x43, 0xb5, 0x9b, 0x1e, - 0xdc, 0xf6, 0xaa, 0x1c, 0x49, 0x79, 0x21, 0x28, 0xcb, 0xaa, 0x49, 0x73, - 0xd9, 0x09, 0x05, 0x4c, 0x02, 0xf2, 0x4c, 0x4d, 0x6c, 0x1c, 0x80, 0xa7, - 0x14, 0x91, 0x44, 0xfc, 0x12, 0xb3, 0xe1, 0xe7, 0xe3, 0x4f, 0x44, 0xba, - 0x8c, 0xc3, 0x74, 0x39, 0xe8, 0x4c, 0xd0, 0xd4, 0x4c, 0x24, 0x61, 0xb4, - 0x40, 0x95, 0x8c, 0xc0, 0x0a, 0xb7, 0x02, 0x39, 0x31, 0x85, 0x93, 0x02, - 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, - 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x0b, - 0x47, 0x24, 0x52, 0x7d, 0xb6, 0x63, 0x78, 0xbc, 0x80, 0xdd, 0x87, 0x6c, - 0x90, 0x4c, 0x33, 0xc3, 0x5c, 0xa7, 0x97, 0x09, 0x1c, 0x09, 0x4f, 0x9b, - 0x6e, 0xb3, 0x5a, 0x3e, 0x46, 0x92, 0x1a, 0xc7, 0x87, 0x15, 0x59, 0xe1, - 0x88, 0x5c, 0xce, 0x6a, 0xe2, 0x96, 0xaa, 0x32, 0xec, 0xc2, 0xed, 0x78, - 0x8b, 0xe0, 0x90, 0x66, 0x93, 0x14, 0xc3, 0x98, 0xab, 0x33, 0x35, 0xd3, - 0x7d, 0x5d, 0x51, 0x0a, 0x9c, 0xb9, 0x10, 0x58, 0x47, 0x7a, 0x98, 0x95, - 0x64, 0xff, 0x4c, 0x5d, 0x82, 0x19, 0xf9, 0xea, 0x0f, 0x5e, 0x9a, 0xcb, - 0x32, 0x27, 0x64, 0xca, 0x6f, 0x58, 0x8a, 0xd0, 0xc0, 0x36, 0xf4, 0xb9, - 0x63, 0x34, 0xa5, 0xda, 0x36, 0x50, 0x36, 0x49, 0xd2, 0xb7, 0x3a, 0x21, - 0x33, 0x5b, 0x3e, 0xd6, 0x5f, 0x0c, 0x99, 0x83, 0xb7, 0xb2, 0xf7, 0x8b, - 0x44, 0xc4, 0x5e, 0x73, 0x41, 0xa9, 0x02 -}; -unsigned int default_certificate_len = 475; diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/crypto_misc.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/crypto_misc.h deleted file mode 100644 index 97cb0f2d23..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/crypto_misc.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/** - * @file crypto_misc.h - */ - -#ifndef HEADER_CRYPTO_MISC_H -#define HEADER_CRYPTO_MISC_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "crypto.h" -#include "bigint.h" - -/************************************************************************** - * X509 declarations - **************************************************************************/ -#define X509_OK 0 -#define X509_NOT_OK -1 -#define X509_VFY_ERROR_NO_TRUSTED_CERT -2 -#define X509_VFY_ERROR_BAD_SIGNATURE -3 -#define X509_VFY_ERROR_NOT_YET_VALID -4 -#define X509_VFY_ERROR_EXPIRED -5 -#define X509_VFY_ERROR_SELF_SIGNED -6 -#define X509_VFY_ERROR_INVALID_CHAIN -7 -#define X509_VFY_ERROR_UNSUPPORTED_DIGEST -8 -#define X509_INVALID_PRIV_KEY -9 - -/* - * The Distinguished Name - */ -#define X509_NUM_DN_TYPES 3 -#define X509_COMMON_NAME 0 -#define X509_ORGANIZATION 1 -#define X509_ORGANIZATIONAL_UNIT 2 - -struct _x509_ctx -{ - char *ca_cert_dn[X509_NUM_DN_TYPES]; - char *cert_dn[X509_NUM_DN_TYPES]; - time_t not_before; - time_t not_after; - uint8_t *signature; - uint16_t sig_len; - uint8_t sig_type; - RSA_CTX *rsa_ctx; - bigint *digest; - struct _x509_ctx *next; -}; - -typedef struct _x509_ctx X509_CTX; - -#ifdef CONFIG_SSL_CERT_VERIFICATION -typedef struct -{ - X509_CTX *cert[CONFIG_X509_MAX_CA_CERTS]; -} CA_CERT_CTX; -#endif - -int x509_new(const uint8_t *cert, int *len, X509_CTX **ctx); -void x509_free(X509_CTX *x509_ctx); -#ifdef CONFIG_SSL_CERT_VERIFICATION -int x509_verify(const CA_CERT_CTX *ca_cert_ctx, const X509_CTX *cert); -#endif -#ifdef CONFIG_SSL_FULL_MODE -void x509_print(const X509_CTX *cert, CA_CERT_CTX *ca_cert_ctx); -const char * x509_display_error(int error); -#endif - -/************************************************************************** - * ASN1 declarations - **************************************************************************/ -#define ASN1_INTEGER 0x02 -#define ASN1_BIT_STRING 0x03 -#define ASN1_OCTET_STRING 0x04 -#define ASN1_NULL 0x05 -#define ASN1_OID 0x06 -#define ASN1_PRINTABLE_STR 0x13 -#define ASN1_TELETEX_STR 0x14 -#define ASN1_IA5_STR 0x16 -#define ASN1_UTC_TIME 0x17 -#define ASN1_UNICODE_STR 0x1e -#define ASN1_SEQUENCE 0x30 -#define ASN1_SET 0x31 -#define ASN1_IMPLICIT_TAG 0x80 -#define ASN1_EXPLICIT_TAG 0xa0 - -#define SIG_TYPE_MD2 0x02 -#define SIG_TYPE_MD5 0x04 -#define SIG_TYPE_SHA1 0x05 - -int get_asn1_length(const uint8_t *buf, int *offset); -int asn1_get_private_key(const uint8_t *buf, int len, RSA_CTX **rsa_ctx); -int asn1_next_obj(const uint8_t *buf, int *offset, int obj_type); -int asn1_skip_obj(const uint8_t *buf, int *offset, int obj_type); -int asn1_get_int(const uint8_t *buf, int *offset, uint8_t **object); -int asn1_version(const uint8_t *cert, int *offset, X509_CTX *x509_ctx); -int asn1_validity(const uint8_t *cert, int *offset, X509_CTX *x509_ctx); -int asn1_name(const uint8_t *cert, int *offset, char *dn[]); -int asn1_public_key(const uint8_t *cert, int *offset, X509_CTX *x509_ctx); -#ifdef CONFIG_SSL_CERT_VERIFICATION -int asn1_signature(const uint8_t *cert, int *offset, X509_CTX *x509_ctx); -int asn1_compare_dn(char * const dn1[], char * const dn2[]); -#endif -int asn1_signature_type(const uint8_t *cert, - int *offset, X509_CTX *x509_ctx); - -/************************************************************************** - * MISC declarations - **************************************************************************/ -#define SALT_SIZE 8 - -extern const char * const unsupported_str; - -typedef void (*crypt_func)(void *, const uint8_t *, uint8_t *, int); -typedef void (*hmac_func)(const uint8_t *msg, int length, const uint8_t *key, - int key_len, uint8_t *digest); - -int get_file(const char *filename, uint8_t **buf); - -#if defined(CONFIG_SSL_FULL_MODE) || defined(WIN32) || defined(CONFIG_DEBUG) -EXP_FUNC void STDCALL print_blob(const char *format, const uint8_t *data, int size, ...); -#else - #define print_blob(...) -#endif - -EXP_FUNC int STDCALL base64_decode(const char *in, int len, - uint8_t *out, int *outlen); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/gen_cert.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/gen_cert.c deleted file mode 100644 index 94b74903ca..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/gen_cert.c +++ /dev/null @@ -1,363 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "config.h" - -#ifdef CONFIG_SSL_GENERATE_X509_CERT -#include -#include -#include "ssl.h" - -/** - * Generate a basic X.509 certificate - */ - -static uint8_t set_gen_length(int len, uint8_t *buf, int *offset) -{ - if (len < 0x80) /* short form */ - { - buf[(*offset)++] = len; - return 1; - } - else /* long form */ - { - int i, length_bytes = 0; - - if (len & 0x00FF0000) - length_bytes = 3; - else if (len & 0x0000FF00) - length_bytes = 2; - else if (len & 0x000000FF) - length_bytes = 1; - - buf[(*offset)++] = 0x80 + length_bytes; - - for (i = length_bytes-1; i >= 0; i--) - { - buf[*offset+i] = len & 0xFF; - len >>= 8; - } - - *offset += length_bytes; - return length_bytes+1; - } -} - -static int pre_adjust_with_size(uint8_t type, - int *seq_offset, uint8_t *buf, int *offset) -{ - buf[(*offset)++] = type; - *seq_offset = *offset; - *offset += 4; /* fill in later */ - return *offset; -} - -static void adjust_with_size(int seq_size, int seq_start, - uint8_t *buf, int *offset) -{ - uint8_t seq_byte_size; - int orig_seq_size = seq_size; - int orig_seq_start = seq_start; - - seq_size = *offset-seq_size; - seq_byte_size = set_gen_length(seq_size, buf, &seq_start); - - if (seq_byte_size != 4) - { - memmove(&buf[orig_seq_start+seq_byte_size], - &buf[orig_seq_size], seq_size); - *offset -= 4-seq_byte_size; - } -} - -static void gen_serial_number(uint8_t *buf, int *offset) -{ - static const uint8_t ser_oid[] = { ASN1_INTEGER, 1, 0x7F }; - memcpy(&buf[*offset], ser_oid , sizeof(ser_oid)); - *offset += sizeof(ser_oid); -} - -static void gen_signature_alg(uint8_t *buf, int *offset) -{ - /* OBJECT IDENTIFIER sha1withRSAEncryption (1 2 840 113549 1 1 5) */ - static const uint8_t sig_oid[] = - { - ASN1_SEQUENCE, 0x0d, ASN1_OID, 0x09, - 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, - ASN1_NULL, 0x00 - }; - - memcpy(&buf[*offset], sig_oid, sizeof(sig_oid)); - *offset += sizeof(sig_oid); -} - -static int gen_dn(const char *name, uint8_t dn_type, - uint8_t *buf, int *offset) -{ - int ret = X509_OK; - int name_size = strlen(name); - - if (name_size > 0x70) /* just too big */ - { - ret = X509_NOT_OK; - goto error; - } - - buf[(*offset)++] = ASN1_SET; - set_gen_length(9+name_size, buf, offset); - buf[(*offset)++] = ASN1_SEQUENCE; - set_gen_length(7+name_size, buf, offset); - buf[(*offset)++] = ASN1_OID; - buf[(*offset)++] = 3; - buf[(*offset)++] = 0x55; - buf[(*offset)++] = 0x04; - buf[(*offset)++] = dn_type; - buf[(*offset)++] = ASN1_PRINTABLE_STR; - buf[(*offset)++] = name_size; - strcpy(&buf[*offset], name); - *offset += name_size; - -error: - return ret; -} - -static int gen_issuer(const char * dn[], uint8_t *buf, int *offset) -{ - int ret = X509_OK; - int seq_offset; - int seq_size = pre_adjust_with_size( - ASN1_SEQUENCE, &seq_offset, buf, offset); - char fqdn[128]; - - /* we need the common name, so if not configured, work out the fully - * qualified domain name */ - if (dn[X509_COMMON_NAME] == NULL || strlen(dn[X509_COMMON_NAME]) == 0) - { - int fqdn_len; - gethostname(fqdn, sizeof(fqdn)); - fqdn_len = strlen(fqdn); - fqdn[fqdn_len++] = '.'; - getdomainname(&fqdn[fqdn_len], sizeof(fqdn)-fqdn_len); - fqdn_len = strlen(fqdn); - - if (fqdn[fqdn_len-1] == '.') /* ensure '.' is not last char */ - fqdn[fqdn_len-1] = 0; - - dn[X509_COMMON_NAME] = fqdn; - } - - if ((ret = gen_dn(dn[X509_COMMON_NAME], 3, buf, offset))) - goto error; - - if (dn[X509_ORGANIZATION] != NULL && strlen(dn[X509_ORGANIZATION]) > 0) - { - if ((ret = gen_dn(dn[X509_ORGANIZATION], 10, buf, offset))) - goto error; - } - - if (dn[X509_ORGANIZATIONAL_UNIT] != NULL && - strlen(dn[X509_ORGANIZATIONAL_UNIT]) > 0) - { - if ((ret = gen_dn(dn[X509_ORGANIZATIONAL_UNIT], 11, buf, offset))) - goto error; - } - - adjust_with_size(seq_size, seq_offset, buf, offset); - -error: - return ret; -} - -static void gen_utc_time(uint8_t *buf, int *offset) -{ - static const uint8_t time_seq[] = - { - ASN1_SEQUENCE, 30, - ASN1_UTC_TIME, 13, - '0', '7', '0', '1', '0', '1', '0', '0', '0', '0', '0', '0', 'Z', - ASN1_UTC_TIME, 13, /* make it good for 30 or so years */ - '3', '8', '0', '1', '0', '1', '0', '0', '0', '0', '0', '0', 'Z' - }; - - /* fixed time */ - memcpy(&buf[*offset], time_seq, sizeof(time_seq)); - *offset += sizeof(time_seq); -} - -static void gen_pub_key2(const RSA_CTX *rsa_ctx, uint8_t *buf, int *offset) -{ - static const uint8_t pub_key_seq[] = - { - ASN1_INTEGER, 0x03, 0x01, 0x00, 0x01 /* INTEGER 65537 */ - }; - - int seq_offset; - int pub_key_size = rsa_ctx->num_octets; - uint8_t *block = (uint8_t *)alloca(pub_key_size); - int seq_size = pre_adjust_with_size( - ASN1_SEQUENCE, &seq_offset, buf, offset); - buf[(*offset)++] = ASN1_INTEGER; - bi_export(rsa_ctx->bi_ctx, rsa_ctx->m, block, pub_key_size); - - if (*block & 0x80) /* make integer positive */ - { - set_gen_length(pub_key_size+1, buf, offset); - buf[(*offset)++] = 0; - } - else - set_gen_length(pub_key_size, buf, offset); - - memcpy(&buf[*offset], block, pub_key_size); - *offset += pub_key_size; - memcpy(&buf[*offset], pub_key_seq, sizeof(pub_key_seq)); - *offset += sizeof(pub_key_seq); - adjust_with_size(seq_size, seq_offset, buf, offset); -} - -static void gen_pub_key1(const RSA_CTX *rsa_ctx, uint8_t *buf, int *offset) -{ - int seq_offset; - int seq_size = pre_adjust_with_size( - ASN1_BIT_STRING, &seq_offset, buf, offset); - buf[(*offset)++] = 0; /* bit string is multiple of 8 */ - gen_pub_key2(rsa_ctx, buf, offset); - adjust_with_size(seq_size, seq_offset, buf, offset); -} - -static void gen_pub_key(const RSA_CTX *rsa_ctx, uint8_t *buf, int *offset) -{ - /* OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1) */ - static const uint8_t rsa_enc_oid[] = - { - ASN1_SEQUENCE, 0x0d, ASN1_OID, 0x09, - 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, - ASN1_NULL, 0x00 - }; - - int seq_offset; - int seq_size = pre_adjust_with_size( - ASN1_SEQUENCE, &seq_offset, buf, offset); - - memcpy(&buf[*offset], rsa_enc_oid, sizeof(rsa_enc_oid)); - *offset += sizeof(rsa_enc_oid); - gen_pub_key1(rsa_ctx, buf, offset); - adjust_with_size(seq_size, seq_offset, buf, offset); -} - -static void gen_signature(const RSA_CTX *rsa_ctx, const uint8_t *sha_dgst, - uint8_t *buf, int *offset) -{ - static const uint8_t asn1_sig[] = - { - ASN1_SEQUENCE, 0x21, ASN1_SEQUENCE, 0x09, ASN1_OID, 0x05, - 0x2b, 0x0e, 0x03, 0x02, 0x1a, /* sha1 (1 3 14 3 2 26) */ - ASN1_NULL, 0x00, ASN1_OCTET_STRING, 0x14 - }; - - uint8_t *enc_block = (uint8_t *)alloca(rsa_ctx->num_octets); - uint8_t *block = (uint8_t *)alloca(sizeof(asn1_sig) + SHA1_SIZE); - int sig_size; - - /* add the digest as an embedded asn.1 sequence */ - memcpy(block, asn1_sig, sizeof(asn1_sig)); - memcpy(&block[sizeof(asn1_sig)], sha_dgst, SHA1_SIZE); - - sig_size = RSA_encrypt(rsa_ctx, block, - sizeof(asn1_sig) + SHA1_SIZE, enc_block, 1); - - buf[(*offset)++] = ASN1_BIT_STRING; - set_gen_length(sig_size+1, buf, offset); - buf[(*offset)++] = 0; /* bit string is multiple of 8 */ - memcpy(&buf[*offset], enc_block, sig_size); - *offset += sig_size; -} - -static int gen_tbs_cert(const char * dn[], - const RSA_CTX *rsa_ctx, uint8_t *buf, int *offset, - uint8_t *sha_dgst) -{ - int ret = X509_OK; - SHA1_CTX sha_ctx; - int seq_offset; - int begin_tbs = *offset; - int seq_size = pre_adjust_with_size( - ASN1_SEQUENCE, &seq_offset, buf, offset); - - gen_serial_number(buf, offset); - gen_signature_alg(buf, offset); - - /* CA certicate issuer */ - if ((ret = gen_issuer(dn, buf, offset))) - goto error; - - gen_utc_time(buf, offset); - - /* certificate issuer */ - if ((ret = gen_issuer(dn, buf, offset))) - goto error; - - gen_pub_key(rsa_ctx, buf, offset); - adjust_with_size(seq_size, seq_offset, buf, offset); - - SHA1_Init(&sha_ctx); - SHA1_Update(&sha_ctx, &buf[begin_tbs], *offset-begin_tbs); - SHA1_Final(sha_dgst, &sha_ctx); - -error: - return ret; -} - -/** - * Create a new certificate. - */ -EXP_FUNC int STDCALL ssl_x509_create(SSL_CTX *ssl_ctx, uint32_t options, const char * dn[], uint8_t **cert_data) -{ - int ret = X509_OK, offset = 0, seq_offset; - /* allocate enough space to load a new certificate */ - uint8_t *buf = (uint8_t *)alloca(ssl_ctx->rsa_ctx->num_octets*2 + 512); - uint8_t sha_dgst[SHA1_SIZE]; - int seq_size = pre_adjust_with_size(ASN1_SEQUENCE, - &seq_offset, buf, &offset); - - if ((ret = gen_tbs_cert(dn, ssl_ctx->rsa_ctx, buf, &offset, sha_dgst)) < 0) - goto error; - - gen_signature_alg(buf, &offset); - gen_signature(ssl_ctx->rsa_ctx, sha_dgst, buf, &offset); - adjust_with_size(seq_size, seq_offset, buf, &offset); - *cert_data = (uint8_t *)malloc(offset); /* create the exact memory for it */ - memcpy(*cert_data, buf, offset); - -error: - return ret < 0 ? ret : offset; -} - -#endif - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/loader.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/loader.c deleted file mode 100644 index 4232f7eec0..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/loader.c +++ /dev/null @@ -1,465 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Load certificates/keys into memory. These can be in many different formats. - * PEM support and other formats can be processed here. - * - * The PEM private keys may be optionally encrypted with AES128 or AES256. - * The encrypted PEM keys were generated with something like: - * - * openssl genrsa -aes128 -passout pass:abcd -out axTLS.key_aes128.pem 512 - */ - -#include -#include -#include - -#include "ssl.h" - -static int do_obj(SSL_CTX *ssl_ctx, int obj_type, - SSLObjLoader *ssl_obj, const char *password); -#ifdef CONFIG_SSL_HAS_PEM -static int ssl_obj_PEM_load(SSL_CTX *ssl_ctx, int obj_type, - SSLObjLoader *ssl_obj, const char *password); -#endif - -/* - * Load a file into memory that is in binary DER (or ascii PEM) format. - */ -EXP_FUNC int STDCALL ssl_obj_load(SSL_CTX *ssl_ctx, int obj_type, - const char *filename, const char *password) -{ -#ifndef CONFIG_SSL_SKELETON_MODE - static const char * const begin = "-----BEGIN"; - int ret = SSL_OK; - SSLObjLoader *ssl_obj = NULL; - - if (filename == NULL) - { - ret = SSL_ERROR_INVALID_KEY; - goto error; - } - - ssl_obj = (SSLObjLoader *)calloc(1, sizeof(SSLObjLoader)); - ssl_obj->len = get_file(filename, &ssl_obj->buf); - if (ssl_obj->len <= 0) - { - ret = SSL_ERROR_INVALID_KEY; - goto error; - } - - /* is the file a PEM file? */ - if (strncmp((char *)ssl_obj->buf, begin, strlen(begin)) == 0) - { -#ifdef CONFIG_SSL_HAS_PEM - ret = ssl_obj_PEM_load(ssl_ctx, obj_type, ssl_obj, password); -#else - printf(unsupported_str); - ret = SSL_ERROR_NOT_SUPPORTED; -#endif - } - else - ret = do_obj(ssl_ctx, obj_type, ssl_obj, password); - -error: - ssl_obj_free(ssl_obj); - return ret; -#else - printf(unsupported_str); - return SSL_ERROR_NOT_SUPPORTED; -#endif /* CONFIG_SSL_SKELETON_MODE */ -} - -/* - * Transfer binary data into the object loader. - */ -EXP_FUNC int STDCALL ssl_obj_memory_load(SSL_CTX *ssl_ctx, int mem_type, - const uint8_t *data, int len, const char *password) -{ - int ret; - SSLObjLoader *ssl_obj; - - ssl_obj = (SSLObjLoader *)calloc(1, sizeof(SSLObjLoader)); - ssl_obj->buf = (uint8_t *)malloc(len); - memcpy(ssl_obj->buf, data, len); - ssl_obj->len = len; - ret = do_obj(ssl_ctx, mem_type, ssl_obj, password); - ssl_obj_free(ssl_obj); - return ret; -} - -/* - * Actually work out what we are doing - */ -static int do_obj(SSL_CTX *ssl_ctx, int obj_type, - SSLObjLoader *ssl_obj, const char *password) -{ - int ret = SSL_OK; - - switch (obj_type) - { - case SSL_OBJ_RSA_KEY: - ret = add_private_key(ssl_ctx, ssl_obj); - break; - - case SSL_OBJ_X509_CERT: - ret = add_cert(ssl_ctx, ssl_obj->buf, ssl_obj->len); - break; - -#ifdef CONFIG_SSL_CERT_VERIFICATION - case SSL_OBJ_X509_CACERT: - ret = add_cert_auth(ssl_ctx, ssl_obj->buf, ssl_obj->len); - break; -#endif - -#ifdef CONFIG_SSL_USE_PKCS12 - case SSL_OBJ_PKCS8: - ret = pkcs8_decode(ssl_ctx, ssl_obj, password); - break; - - case SSL_OBJ_PKCS12: - ret = pkcs12_decode(ssl_ctx, ssl_obj, password); - break; -#endif - default: - printf(unsupported_str); - ret = SSL_ERROR_NOT_SUPPORTED; - break; - } - - return ret; -} - -/* - * Clean up our mess. - */ -void ssl_obj_free(SSLObjLoader *ssl_obj) -{ - if (ssl_obj) - { - free(ssl_obj->buf); - free(ssl_obj); - } -} - -/* - * Support for PEM encoded keys/certificates. - */ -#ifdef CONFIG_SSL_HAS_PEM - -#define NUM_PEM_TYPES 3 -#define IV_SIZE 16 -#define IS_RSA_PRIVATE_KEY 0 -#define IS_ENCRYPTED_PRIVATE_KEY 1 -#define IS_CERTIFICATE 2 - -static const char * const begins[NUM_PEM_TYPES] = -{ - "-----BEGIN RSA PRIVATE KEY-----", - "-----BEGIN ENCRYPTED PRIVATE KEY-----", - "-----BEGIN CERTIFICATE-----", -}; - -static const char * const ends[NUM_PEM_TYPES] = -{ - "-----END RSA PRIVATE KEY-----", - "-----END ENCRYPTED PRIVATE KEY-----", - "-----END CERTIFICATE-----", -}; - -static const char * const aes_str[2] = -{ - "DEK-Info: AES-128-CBC,", - "DEK-Info: AES-256-CBC," -}; - -/** - * Take a base64 blob of data and decrypt it (using AES) into its - * proper ASN.1 form. - */ -static int pem_decrypt(const char *where, const char *end, - const char *password, SSLObjLoader *ssl_obj) -{ - int ret = -1; - int is_aes_256 = 0; - char *start = NULL; - uint8_t iv[IV_SIZE]; - int i, pem_size; - MD5_CTX md5_ctx; - AES_CTX aes_ctx; - uint8_t key[32]; /* AES256 size */ - - if (password == NULL || strlen(password) == 0) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("Error: Need a password for this PEM file\n"); TTY_FLUSH(); -#endif - goto error; - } - - if ((start = strstr((const char *)where, aes_str[0]))) /* AES128? */ - { - start += strlen(aes_str[0]); - } - else if ((start = strstr((const char *)where, aes_str[1]))) /* AES256? */ - { - is_aes_256 = 1; - start += strlen(aes_str[1]); - } - else - { -#ifdef CONFIG_SSL_FULL_MODE - printf("Error: Unsupported password cipher\n"); TTY_FLUSH(); -#endif - goto error; - } - - /* convert from hex to binary - assumes uppercase hex */ - for (i = 0; i < IV_SIZE; i++) - { - char c = *start++ - '0'; - iv[i] = (c > 9 ? c + '0' - 'A' + 10 : c) << 4; - c = *start++ - '0'; - iv[i] += (c > 9 ? c + '0' - 'A' + 10 : c); - } - - while (*start == '\r' || *start == '\n') - start++; - - /* turn base64 into binary */ - pem_size = (int)(end-start); - if (base64_decode(start, pem_size, ssl_obj->buf, &ssl_obj->len) != 0) - goto error; - - /* work out the key */ - MD5_Init(&md5_ctx); - MD5_Update(&md5_ctx, (const uint8_t *)password, strlen(password)); - MD5_Update(&md5_ctx, iv, SALT_SIZE); - MD5_Final(key, &md5_ctx); - - if (is_aes_256) - { - MD5_Init(&md5_ctx); - MD5_Update(&md5_ctx, key, MD5_SIZE); - MD5_Update(&md5_ctx, (const uint8_t *)password, strlen(password)); - MD5_Update(&md5_ctx, iv, SALT_SIZE); - MD5_Final(&key[MD5_SIZE], &md5_ctx); - } - - /* decrypt using the key/iv */ - AES_set_key(&aes_ctx, key, iv, is_aes_256 ? AES_MODE_256 : AES_MODE_128); - AES_convert_key(&aes_ctx); - AES_cbc_decrypt(&aes_ctx, ssl_obj->buf, ssl_obj->buf, ssl_obj->len); - ret = 0; - -error: - return ret; -} - -/** - * Take a base64 blob of data and turn it into its proper ASN.1 form. - */ -static int new_pem_obj(SSL_CTX *ssl_ctx, int is_cacert, char *where, - int remain, const char *password) -{ - int ret = SSL_OK; - SSLObjLoader *ssl_obj = NULL; - int i, pem_size, obj_type; - char *start = NULL, *end = NULL; - - for (i = 0; i < NUM_PEM_TYPES; i++) - { - if ((start = strstr(where, begins[i])) && - (end = strstr(where, ends[i]))) - { - remain -= (int)(end-start); - start += strlen(begins[i]); - pem_size = (int)(end-start); - - ssl_obj = (SSLObjLoader *)calloc(1, sizeof(SSLObjLoader)); - - /* 4/3 bigger than what we need but so what */ - ssl_obj->buf = (uint8_t *)calloc(1, pem_size); - - if (i == IS_RSA_PRIVATE_KEY && - strstr(start, "Proc-Type:") && - strstr(start, "4,ENCRYPTED")) - { - /* check for encrypted PEM file */ - if (pem_decrypt(start, end, password, ssl_obj) < 0) - goto error; - } - else if (base64_decode(start, pem_size, - ssl_obj->buf, &ssl_obj->len) != 0) - goto error; - - switch (i) - { - case IS_RSA_PRIVATE_KEY: - obj_type = SSL_OBJ_RSA_KEY; - break; - - case IS_ENCRYPTED_PRIVATE_KEY: - obj_type = SSL_OBJ_PKCS8; - break; - - case IS_CERTIFICATE: - obj_type = is_cacert ? - SSL_OBJ_X509_CACERT : SSL_OBJ_X509_CERT; - break; - - default: - goto error; - } - - /* In a format we can now understand - so process it */ - if ((ret = do_obj(ssl_ctx, obj_type, ssl_obj, password))) - goto error; - - end += strlen(ends[i]); - remain -= strlen(ends[i]); - while (remain > 0 && (*end == '\r' || *end == '\n')) - { - end++; - remain--; - } - - break; - } - } - - if (i == NUM_PEM_TYPES) - goto error; - - /* more PEM stuff to process? */ - if (remain) - ret = new_pem_obj(ssl_ctx, is_cacert, end, remain, password); - -error: - ssl_obj_free(ssl_obj); - return ret; -} - -/* - * Load a file into memory that is in ASCII PEM format. - */ -static int ssl_obj_PEM_load(SSL_CTX *ssl_ctx, int obj_type, - SSLObjLoader *ssl_obj, const char *password) -{ - char *start; - - /* add a null terminator */ - ssl_obj->len++; - ssl_obj->buf = (uint8_t *)realloc(ssl_obj->buf, ssl_obj->len); - ssl_obj->buf[ssl_obj->len-1] = 0; - start = (char *)ssl_obj->buf; - return new_pem_obj(ssl_ctx, obj_type == SSL_OBJ_X509_CACERT, - start, ssl_obj->len, password); -} -#endif /* CONFIG_SSL_HAS_PEM */ - -/** - * Load the key/certificates in memory depending on compile-time and user - * options. - */ -int load_key_certs(SSL_CTX *ssl_ctx) -{ - int ret = SSL_OK; - uint32_t options = ssl_ctx->options; -#ifdef CONFIG_SSL_GENERATE_X509_CERT - uint8_t *cert_data = NULL; - int cert_size; - static const char *dn[] = - { - CONFIG_SSL_X509_COMMON_NAME, - CONFIG_SSL_X509_ORGANIZATION_NAME, - CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME - }; -#endif - - /* do the private key first */ - if (strlen(CONFIG_SSL_PRIVATE_KEY_LOCATION) > 0) - { - if ((ret = ssl_obj_load(ssl_ctx, SSL_OBJ_RSA_KEY, - CONFIG_SSL_PRIVATE_KEY_LOCATION, - CONFIG_SSL_PRIVATE_KEY_PASSWORD)) < 0) - goto error; - } - else if (!(options & SSL_NO_DEFAULT_KEY)) - { -#if defined(CONFIG_SSL_USE_DEFAULT_KEY) || defined(CONFIG_SSL_SKELETON_MODE) - static const /* saves a few more bytes */ -#include "private_key.h" - - ssl_obj_memory_load(ssl_ctx, SSL_OBJ_RSA_KEY, default_private_key, - default_private_key_len, NULL); -#endif - } - - /* now load the certificate */ -#ifdef CONFIG_SSL_GENERATE_X509_CERT - if ((cert_size = ssl_x509_create(ssl_ctx, 0, dn, &cert_data)) < 0) - { - ret = cert_size; - goto error; - } - - ssl_obj_memory_load(ssl_ctx, SSL_OBJ_X509_CERT, cert_data, cert_size, NULL); - free(cert_data); -#else - if (strlen(CONFIG_SSL_X509_CERT_LOCATION)) - { - if ((ret = ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, - CONFIG_SSL_X509_CERT_LOCATION, NULL)) < 0) - goto error; - } - else if (!(options & SSL_NO_DEFAULT_KEY)) - { -#if defined(CONFIG_SSL_USE_DEFAULT_KEY) || defined(CONFIG_SSL_SKELETON_MODE) - static const /* saves a few bytes and RAM */ -#include "cert.h" - ssl_obj_memory_load(ssl_ctx, SSL_OBJ_X509_CERT, - default_certificate, default_certificate_len, NULL); -#endif - } -#endif - -error: -#ifdef CONFIG_SSL_FULL_MODE - if (ret) - { - printf("Error: Certificate or key not loaded\n"); TTY_FLUSH(); - } -#endif - - return ret; - -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/openssl.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/openssl.c deleted file mode 100644 index b6b955008b..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/openssl.c +++ /dev/null @@ -1,322 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Enable a subset of openssl compatible functions. We don't aim to be 100% - * compatible - just to be able to do basic ports etc. - * - * Only really tested on mini_httpd, so I'm not too sure how extensive this - * port is. - */ - -#include "config.h" - -#ifdef CONFIG_OPENSSL_COMPATIBLE -#include -#include -#include -#include "ssl.h" - -#define OPENSSL_CTX_ATTR ((OPENSSL_CTX *)ssl_ctx->bonus_attr) - -static char *key_password = NULL; - -void *SSLv23_server_method(void) { return NULL; } -void *SSLv3_server_method(void) { return NULL; } -void *TLSv1_server_method(void) { return NULL; } -void *SSLv23_client_method(void) { return NULL; } -void *SSLv3_client_method(void) { return NULL; } -void *TLSv1_client_method(void) { return NULL; } - -typedef void * (*ssl_func_type_t)(void); -typedef void * (*bio_func_type_t)(void); - -typedef struct -{ - ssl_func_type_t ssl_func_type; -} OPENSSL_CTX; - -SSL_CTX * SSL_CTX_new(ssl_func_type_t meth) -{ - SSL_CTX *ssl_ctx = ssl_ctx_new(0, 5); - ssl_ctx->bonus_attr = malloc(sizeof(OPENSSL_CTX)); - OPENSSL_CTX_ATTR->ssl_func_type = meth; - return ssl_ctx; -} - -void SSL_CTX_free(SSL_CTX * ssl_ctx) -{ - free(ssl_ctx->bonus_attr); - ssl_ctx_free(ssl_ctx); -} - -SSL * SSL_new(SSL_CTX *ssl_ctx) -{ - SSL *ssl; - ssl_func_type_t ssl_func_type; - - ssl = ssl_new(ssl_ctx, -1); /* fd is set later */ - ssl_func_type = OPENSSL_CTX_ATTR->ssl_func_type; - -#ifdef CONFIG_SSL_ENABLE_CLIENT - if (ssl_func_type == SSLv23_client_method || - ssl_func_type == SSLv3_client_method || - ssl_func_type == TLSv1_client_method) - { - SET_SSL_FLAG(SSL_IS_CLIENT); - } - else -#endif - { - ssl->next_state = HS_CLIENT_HELLO; - } - - return ssl; -} - -int SSL_set_fd(SSL *s, int fd) -{ - s->client_fd = fd; - return 1; /* always succeeds */ -} - -int SSL_accept(SSL *ssl) -{ - while (ssl_read(ssl, NULL) == SSL_OK) - { - if (ssl->next_state == HS_CLIENT_HELLO) - return 1; /* we're done */ - } - - return -1; -} - -#ifdef CONFIG_SSL_ENABLE_CLIENT -int SSL_connect(SSL *ssl) -{ - return do_client_connect(ssl) == SSL_OK ? 1 : -1; -} -#endif - -void SSL_free(SSL *ssl) -{ - ssl_free(ssl); -} - -int SSL_read(SSL *ssl, void *buf, int num) -{ - uint8_t *read_buf; - int ret; - - while ((ret = ssl_read(ssl, &read_buf)) == SSL_OK); - - if (ret > SSL_OK) - { - memcpy(buf, read_buf, ret > num ? num : ret); - } - - return ret; -} - -int SSL_write(SSL *ssl, const void *buf, int num) -{ - return ssl_write(ssl, buf, num); -} - -int SSL_CTX_use_certificate_file(SSL_CTX *ssl_ctx, const char *file, int type) -{ - return (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, file, NULL) == SSL_OK); -} - -int SSL_CTX_use_PrivateKey_file(SSL_CTX *ssl_ctx, const char *file, int type) -{ - return (ssl_obj_load(ssl_ctx, SSL_OBJ_RSA_KEY, file, key_password) == SSL_OK); -} - -int SSL_CTX_use_certificate_ASN1(SSL_CTX *ssl_ctx, int len, const uint8_t *d) -{ - return (ssl_obj_memory_load(ssl_ctx, - SSL_OBJ_X509_CERT, d, len, NULL) == SSL_OK); -} - -int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, - unsigned int sid_ctx_len) -{ - return 1; -} - -int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx) -{ - return 1; -} - -int SSL_CTX_use_certificate_chain_file(SSL_CTX *ssl_ctx, const char *file) -{ - return (ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CERT, file, NULL) == SSL_OK); -} - -int SSL_shutdown(SSL *ssl) -{ - return 1; -} - -/*** get/set session ***/ -SSL_SESSION *SSL_get1_session(SSL *ssl) -{ - return (SSL_SESSION *)ssl_get_session_id(ssl); /* note: wrong cast */ -} - -int SSL_set_session(SSL *ssl, SSL_SESSION *session) -{ - memcpy(ssl->session_id, (uint8_t *)session, SSL_SESSION_ID_SIZE); - return 1; -} - -void SSL_SESSION_free(SSL_SESSION *session) { } -/*** end get/set session ***/ - -long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) -{ - return 0; -} - -void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, - int (*verify_callback)(int, void *)) { } - -void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth) { } - -int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, - const char *CApath) -{ - return 1; -} - -void *SSL_load_client_CA_file(const char *file) -{ - return (void *)file; -} - -void SSL_CTX_set_client_CA_list(SSL_CTX *ssl_ctx, void *file) -{ - - ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, (const char *)file, NULL); -} - -void SSLv23_method(void) { } - -void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, void *cb) { } - -void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u) -{ - key_password = (char *)u; -} - -int SSL_peek(SSL *ssl, void *buf, int num) -{ - memcpy(buf, ssl->bm_data, num); - return num; -} - -void SSL_set_bio(SSL *ssl, void *rbio, void *wbio) { } - -long SSL_get_verify_result(const SSL *ssl) -{ - return ssl_handshake_status(ssl); -} - -int SSL_state(SSL *ssl) -{ - return 0x03; // ok state -} - -/** end of could do better list */ - -void *SSL_get_peer_certificate(const SSL *ssl) -{ - return &ssl->ssl_ctx->certs[0]; -} - -int SSL_clear(SSL *ssl) -{ - return 1; -} - - -int SSL_CTX_check_private_key(const SSL_CTX *ctx) -{ - return 1; -} - -int SSL_CTX_set_cipher_list(SSL *s, const char *str) -{ - return 1; -} - -int SSL_get_error(const SSL *ssl, int ret) -{ - ssl_display_error(ret); - return 0; /* TODO: return proper return code */ -} - -void SSL_CTX_set_options(SSL_CTX *ssl_ctx, int option) {} -int SSL_library_init(void ) { return 1; } -void SSL_load_error_strings(void ) {} -void ERR_print_errors_fp(FILE *fp) {} - -#ifndef CONFIG_SSL_SKELETON_MODE -long SSL_CTX_get_timeout(const SSL_CTX *ssl_ctx) { - return CONFIG_SSL_EXPIRY_TIME*3600; } -long SSL_CTX_set_timeout(SSL_CTX *ssl_ctx, long t) { - return SSL_CTX_get_timeout(ssl_ctx); } -#endif -void BIO_printf(FILE *f, const char *format, ...) -{ - va_list(ap); - va_start(ap, format); - vfprintf(f, format, ap); - va_end(ap); -} - -void* BIO_s_null(void) { return NULL; } -FILE *BIO_new(bio_func_type_t func) -{ - if (func == BIO_s_null) - return fopen("/dev/null", "r"); - else - return NULL; -} - -FILE *BIO_new_fp(FILE *stream, int close_flag) { return stream; } -int BIO_free(FILE *a) { if (a != stdout && a != stderr) fclose(a); return 1; } - - - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.c deleted file mode 100644 index 6a71000b47..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file os_port.c - * - * OS specific functions. - */ -#include -#include -#include -#include -#include "os_port.h" - -#ifdef WIN32 -/** - * gettimeofday() not in Win32 - */ -EXP_FUNC void STDCALL gettimeofday(struct timeval* t, void* timezone) -{ -#if defined(_WIN32_WCE) - t->tv_sec = time(NULL); - t->tv_usec = 0; /* 1sec precision only */ -#else - struct _timeb timebuffer; - _ftime(&timebuffer); - t->tv_sec = (long)timebuffer.time; - t->tv_usec = 1000 * timebuffer.millitm; /* 1ms precision */ -#endif -} - -/** - * strcasecmp() not in Win32 - */ -EXP_FUNC int STDCALL strcasecmp(const char *s1, const char *s2) -{ - while (tolower(*s1) == tolower(*s2++)) - { - if (*s1++ == '\0') - { - return 0; - } - } - - return *(unsigned char *)s1 - *(unsigned char *)(s2 - 1); -} - - -EXP_FUNC int STDCALL getdomainname(char *buf, int buf_size) -{ - HKEY hKey; - unsigned long datatype; - unsigned long bufferlength = buf_size; - - if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, - TEXT("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"), - 0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS) - return -1; - - RegQueryValueEx(hKey, "Domain", NULL, &datatype, buf, &bufferlength); - RegCloseKey(hKey); - return 0; -} -#endif - -#undef malloc -#undef realloc -#undef calloc - -static const char * out_of_mem_str = "out of memory"; -static const char * file_open_str = "Could not open file \"%s\""; - -/* - * Some functions that call display some error trace and then call abort(). - * This just makes life much easier on embedded systems, since we're - * suffering major trauma... - */ -EXP_FUNC void * STDCALL ax_malloc(size_t s) -{ - void *x; - - if ((x = malloc(s)) == NULL) - exit_now(out_of_mem_str); - - return x; -} - -EXP_FUNC void * STDCALL ax_realloc(void *y, size_t s) -{ - void *x; - - if ((x = realloc(y, s)) == NULL) - exit_now(out_of_mem_str); - - return x; -} - -EXP_FUNC void * STDCALL ax_calloc(size_t n, size_t s) -{ - void *x; - - if ((x = calloc(n, s)) == NULL) - exit_now(out_of_mem_str); - - return x; -} - -EXP_FUNC int STDCALL ax_open(const char *pathname, int flags) -{ - int x; - - if ((x = open(pathname, flags)) < 0) - exit_now(file_open_str, pathname); - - return x; -} - -/** - * This is a call which will deliberately exit an application, but will - * display some information before dying. - */ -void exit_now(const char *format, ...) -{ - va_list argp; - - va_start(argp, format); - vfprintf(stderr, format, argp); - va_end(argp); - abort(); -} - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.h deleted file mode 100644 index 262c4dd705..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/os_port.h +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file os_port.h - * - * Some stuff to minimise the differences between windows and linux/unix - */ - -#ifndef HEADER_OS_PORT_H -#define HEADER_OS_PORT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#if defined(WIN32) -#define STDCALL __stdcall -#define EXP_FUNC __declspec(dllexport) -#else -#define STDCALL -#define EXP_FUNC -#endif - -#if defined(_WIN32_WCE) -#undef WIN32 -#define WIN32 -#endif - -#ifdef WIN32 - -/* Windows CE stuff */ -#if defined(_WIN32_WCE) -#include -#define abort() exit(1) -#else -#include -#include -#include -#include -#endif /* _WIN32_WCE */ - -#include -#include -#undef getpid -#undef open -#undef close -#undef sleep -#undef gettimeofday -#undef dup2 -#undef unlink - -#define SOCKET_READ(A,B,C) recv(A,B,C,0) -#define SOCKET_WRITE(A,B,C) send(A,B,C,0) -#define SOCKET_CLOSE(A) closesocket(A) -#define SOCKET_BLOCK(A) u_long argp = 0; \ - ioctlsocket(A, FIONBIO, &argp) -#define srandom(A) srand(A) -#define random() rand() -#define getpid() _getpid() -#define snprintf _snprintf -#define open(A,B) _open(A,B) -#define dup2(A,B) _dup2(A,B) -#define unlink(A) _unlink(A) -#define close(A) _close(A) -#define read(A,B,C) _read(A,B,C) -#define write(A,B,C) _write(A,B,C) -#define sleep(A) Sleep(A*1000) -#define usleep(A) Sleep(A/1000) -#define strdup(A) _strdup(A) -#define chroot(A) _chdir(A) -#define chdir(A) _chdir(A) -#define alloca(A) _alloca(A) -#ifndef lseek -#define lseek(A,B,C) _lseek(A,B,C) -#endif - -/* This fix gets around a problem where a win32 application on a cygwin xterm - doesn't display regular output (until a certain buffer limit) - but it works - fine under a normal DOS window. This is a hack to get around the issue - - see http://www.khngai.com/emacs/tty.php */ -#define TTY_FLUSH() if (!_isatty(_fileno(stdout))) fflush(stdout); - -/* - * automatically build some library dependencies. - */ -#pragma comment(lib, "WS2_32.lib") -#pragma comment(lib, "AdvAPI32.lib") - -typedef UINT8 uint8_t; -typedef INT8 int8_t; -typedef UINT16 uint16_t; -typedef INT16 int16_t; -typedef UINT32 uint32_t; -typedef INT32 int32_t; -typedef UINT64 uint64_t; -typedef INT64 int64_t; -typedef int socklen_t; - -EXP_FUNC void STDCALL gettimeofday(struct timeval* t,void* timezone); -EXP_FUNC int STDCALL strcasecmp(const char *s1, const char *s2); -EXP_FUNC int STDCALL getdomainname(char *buf, int buf_size); - -#else /* Not Win32 */ - -#ifdef CONFIG_PLATFORM_SOLARIS -#include -#else -#include -#endif /* Not Solaris */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define SOCKET_READ(A,B,C) read(A,B,C) -#define SOCKET_WRITE(A,B,C) write(A,B,C) -#define SOCKET_CLOSE(A) close(A) -#define SOCKET_BLOCK(A) int fd = fcntl(A, F_GETFL, NULL); \ - fcntl(A, F_SETFL, fd & ~O_NONBLOCK) -#define TTY_FLUSH() - -#endif /* Not Win32 */ - -/* some functions to mutate the way these work */ -#define malloc(A) ax_malloc(A) -#ifndef realloc -#define realloc(A,B) ax_realloc(A,B) -#endif -#define calloc(A,B) ax_calloc(A,B) - -EXP_FUNC void * STDCALL ax_malloc(size_t s); -EXP_FUNC void * STDCALL ax_realloc(void *y, size_t s); -EXP_FUNC void * STDCALL ax_calloc(size_t n, size_t s); -EXP_FUNC int STDCALL ax_open(const char *pathname, int flags); - -#ifdef CONFIG_PLATFORM_LINUX -void exit_now(const char *format, ...) __attribute((noreturn)); -#else -void exit_now(const char *format, ...); -#endif - -/* Mutexing definitions */ -#if defined(CONFIG_SSL_CTX_MUTEXING) -#if defined(WIN32) -#define SSL_CTX_MUTEX_TYPE HANDLE -#define SSL_CTX_MUTEX_INIT(A) A=CreateMutex(0, FALSE, 0) -#define SSL_CTX_MUTEX_DESTROY(A) CloseHandle(A) -#define SSL_CTX_LOCK(A) WaitForSingleObject(A, INFINITE) -#define SSL_CTX_UNLOCK(A) ReleaseMutex(A) -#else -#include -#define SSL_CTX_MUTEX_TYPE pthread_mutex_t -#define SSL_CTX_MUTEX_INIT(A) pthread_mutex_init(&A, NULL) -#define SSL_CTX_MUTEX_DESTROY(A) pthread_mutex_destroy(&A) -#define SSL_CTX_LOCK(A) pthread_mutex_lock(&A) -#define SSL_CTX_UNLOCK(A) pthread_mutex_unlock(&A) -#endif -#else /* no mutexing */ -#define SSL_CTX_MUTEX_INIT(A) -#define SSL_CTX_MUTEX_DESTROY(A) -#define SSL_CTX_LOCK(A) -#define SSL_CTX_UNLOCK(A) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/p12.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/p12.c deleted file mode 100644 index 6ed92e431d..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/p12.c +++ /dev/null @@ -1,486 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Process PKCS#8/PKCS#12 keys. - * - * The decoding of a PKCS#12 key is fairly specific - this code was tested on a - * key generated with: - * - * openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem - * -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 - * -name "p12_withoutCA" -out axTLS.withoutCA.p12 -password pass:abcd - * - * or with a certificate chain: - * - * openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem - * -certfile axTLS.ca_x509.pem -keypbe PBE-SHA1-RC4-128 -certpbe - * PBE-SHA1-RC4-128 -name "p12_withCA" -out axTLS.withCA.p12 -password pass:abcd - * - * Note that the PBE has to be specified with PBE-SHA1-RC4-128. The - * private/public keys/certs have to use RSA encryption. Both the integrity - * and privacy passwords are the same. - * - * The PKCS#8 files were generated with something like: - * - * PEM format: - * openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -v1 - * PBE-SHA1-RC4-128 -out axTLS.encrypted_pem.p8 - * - * DER format: - * openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -outform DER - * -v1 PBE-SHA1-RC4-128 -out axTLS.encrypted.p8 - */ - -#include -#include -#include - -#include "ssl.h" - -/* all commented out if not used */ -#ifdef CONFIG_SSL_USE_PKCS12 - -#define BLOCK_SIZE 64 -#define PKCS12_KEY_ID 1 -#define PKCS12_IV_ID 2 -#define PKCS12_MAC_ID 3 - -static char *make_uni_pass(const char *password, int *uni_pass_len); -static int p8_decrypt(const char *uni_pass, int uni_pass_len, - const uint8_t *salt, int iter, - uint8_t *priv_key, int priv_key_len, int id); -static int p8_add_key(SSL_CTX *ssl_ctx, uint8_t *priv_key); -static int get_pbe_params(uint8_t *buf, int *offset, - const uint8_t **salt, int *iterations); - -/* - * Take a raw pkcs8 block and then decrypt it and turn it into a normal key. - */ -int pkcs8_decode(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj, const char *password) -{ - uint8_t *buf = ssl_obj->buf; - int len, offset = 0; - int iterations; - int ret = SSL_NOT_OK; - uint8_t *version = NULL; - const uint8_t *salt; - uint8_t *priv_key; - int uni_pass_len; - char *uni_pass = make_uni_pass(password, &uni_pass_len); - - if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("Error: Invalid p8 ASN.1 file\n"); -#endif - goto error; - } - - /* unencrypted key? */ - if (asn1_get_int(buf, &offset, &version) > 0 && *version == 0) - { - ret = p8_add_key(ssl_ctx, buf); - goto error; - } - - if (get_pbe_params(buf, &offset, &salt, &iterations) < 0) - goto error; - - if ((len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0) - goto error; - - priv_key = &buf[offset]; - - p8_decrypt(uni_pass, uni_pass_len, salt, - iterations, priv_key, len, PKCS12_KEY_ID); - ret = p8_add_key(ssl_ctx, priv_key); - -error: - free(version); - free(uni_pass); - return ret; -} - -/* - * Take the unencrypted pkcs8 and turn it into a private key - */ -static int p8_add_key(SSL_CTX *ssl_ctx, uint8_t *priv_key) -{ - uint8_t *buf = priv_key; - int len, offset = 0; - int ret = SSL_NOT_OK; - - /* Skip the preamble and go straight to the private key. - We only support rsaEncryption (1.2.840.113549.1.1.1) */ - if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - asn1_skip_obj(buf, &offset, ASN1_INTEGER) < 0 || - asn1_skip_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - (len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0) - goto error; - - ret = asn1_get_private_key(&buf[offset], len, &ssl_ctx->rsa_ctx); - -error: - return ret; -} - -/* - * Create the unicode password - */ -static char *make_uni_pass(const char *password, int *uni_pass_len) -{ - int pass_len = 0, i; - char *uni_pass; - - if (password == NULL) - { - password = ""; - } - - uni_pass = (char *)malloc((strlen(password)+1)*2); - - /* modify the password into a unicode version */ - for (i = 0; i < (int)strlen(password); i++) - { - uni_pass[pass_len++] = 0; - uni_pass[pass_len++] = password[i]; - } - - uni_pass[pass_len++] = 0; /* null terminate */ - uni_pass[pass_len++] = 0; - *uni_pass_len = pass_len; - return uni_pass; -} - -/* - * Decrypt a pkcs8 block. - */ -static int p8_decrypt(const char *uni_pass, int uni_pass_len, - const uint8_t *salt, int iter, - uint8_t *priv_key, int priv_key_len, int id) -{ - uint8_t p[BLOCK_SIZE*2]; - uint8_t d[BLOCK_SIZE]; - uint8_t Ai[SHA1_SIZE]; - SHA1_CTX sha_ctx; - RC4_CTX rc4_ctx; - int i; - - for (i = 0; i < BLOCK_SIZE; i++) - { - p[i] = salt[i % SALT_SIZE]; - p[BLOCK_SIZE+i] = uni_pass[i % uni_pass_len]; - d[i] = id; - } - - /* get the key - no IV since we are using RC4 */ - SHA1_Init(&sha_ctx); - SHA1_Update(&sha_ctx, d, sizeof(d)); - SHA1_Update(&sha_ctx, p, sizeof(p)); - SHA1_Final(Ai, &sha_ctx); - - for (i = 1; i < iter; i++) - { - SHA1_Init(&sha_ctx); - SHA1_Update(&sha_ctx, Ai, SHA1_SIZE); - SHA1_Final(Ai, &sha_ctx); - } - - /* do the decryption */ - if (id == PKCS12_KEY_ID) - { - RC4_setup(&rc4_ctx, Ai, 16); - RC4_crypt(&rc4_ctx, priv_key, priv_key, priv_key_len); - } - else /* MAC */ - memcpy(priv_key, Ai, SHA1_SIZE); - - return 0; -} - -/* - * Take a raw pkcs12 block and the decrypt it and turn it into a certificate(s) - * and keys. - */ -int pkcs12_decode(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj, const char *password) -{ - uint8_t *buf = ssl_obj->buf; - int all_ok = 0, len, iterations, auth_safes_start, - auth_safes_end, auth_safes_len, key_offset, offset = 0; - int all_certs = 0; - uint8_t *version = NULL, *auth_safes = NULL, *cert, *orig_mac; - uint8_t key[SHA1_SIZE]; - uint8_t mac[SHA1_SIZE]; - const uint8_t *salt; - int uni_pass_len, ret; - int error_code = SSL_ERROR_NOT_SUPPORTED; - char *uni_pass = make_uni_pass(password, &uni_pass_len); - static const uint8_t pkcs_data[] = /* pkc7 data */ - { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01 }; - static const uint8_t pkcs_encrypted[] = /* pkc7 encrypted */ - { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x06 }; - static const uint8_t pkcs8_key_bag[] = /* 1.2.840.113549.1.12.10.1.2 */ - { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x0c, 0x0a, 0x01, 0x02 }; - - if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("Error: Invalid p12 ASN.1 file\n"); -#endif - goto error; - } - - if (asn1_get_int(buf, &offset, &version) < 0 || *version != 3) - { - error_code = SSL_ERROR_INVALID_VERSION; - goto error; - } - - /* remove all the boring pcks7 bits */ - if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 || - len != sizeof(pkcs_data) || - memcmp(&buf[offset], pkcs_data, sizeof(pkcs_data))) - goto error; - - offset += len; - - if (asn1_next_obj(buf, &offset, ASN1_EXPLICIT_TAG) < 0 || - asn1_next_obj(buf, &offset, ASN1_OCTET_STRING) < 0) - goto error; - - /* work out the MAC start/end points (done on AuthSafes) */ - auth_safes_start = offset; - auth_safes_end = offset; - if (asn1_skip_obj(buf, &auth_safes_end, ASN1_SEQUENCE) < 0) - goto error; - - auth_safes_len = auth_safes_end - auth_safes_start; - auth_safes = malloc(auth_safes_len); - - memcpy(auth_safes, &buf[auth_safes_start], auth_safes_len); - - if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 || - (len != sizeof(pkcs_encrypted) || - memcmp(&buf[offset], pkcs_encrypted, sizeof(pkcs_encrypted)))) - goto error; - - offset += len; - - if (asn1_next_obj(buf, &offset, ASN1_EXPLICIT_TAG) < 0 || - asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - asn1_skip_obj(buf, &offset, ASN1_INTEGER) < 0 || - asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 || - len != sizeof(pkcs_data) || - memcmp(&buf[offset], pkcs_data, sizeof(pkcs_data))) - goto error; - - offset += len; - - /* work out the salt for the certificate */ - if (get_pbe_params(buf, &offset, &salt, &iterations) < 0 || - (len = asn1_next_obj(buf, &offset, ASN1_IMPLICIT_TAG)) < 0) - goto error; - - /* decrypt the certificate */ - cert = &buf[offset]; - if ((ret = p8_decrypt(uni_pass, uni_pass_len, salt, iterations, cert, - len, PKCS12_KEY_ID)) < 0) - goto error; - - offset += len; - - /* load the certificate */ - key_offset = 0; - all_certs = asn1_next_obj(cert, &key_offset, ASN1_SEQUENCE); - - /* keep going until all certs are loaded */ - while (key_offset < all_certs) - { - int cert_offset = key_offset; - - if (asn1_skip_obj(cert, &cert_offset, ASN1_SEQUENCE) < 0 || - asn1_next_obj(cert, &key_offset, ASN1_SEQUENCE) < 0 || - asn1_skip_obj(cert, &key_offset, ASN1_OID) < 0 || - asn1_next_obj(cert, &key_offset, ASN1_EXPLICIT_TAG) < 0 || - asn1_next_obj(cert, &key_offset, ASN1_SEQUENCE) < 0 || - asn1_skip_obj(cert, &key_offset, ASN1_OID) < 0 || - asn1_next_obj(cert, &key_offset, ASN1_EXPLICIT_TAG) < 0 || - (len = asn1_next_obj(cert, &key_offset, ASN1_OCTET_STRING)) < 0) - goto error; - - if ((ret = add_cert(ssl_ctx, &cert[key_offset], len)) < 0) - goto error; - - key_offset = cert_offset; - } - - if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 || - len != sizeof(pkcs_data) || - memcmp(&buf[offset], pkcs_data, sizeof(pkcs_data))) - goto error; - - offset += len; - - if (asn1_next_obj(buf, &offset, ASN1_EXPLICIT_TAG) < 0 || - asn1_next_obj(buf, &offset, ASN1_OCTET_STRING) < 0 || - asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - (len = asn1_next_obj(buf, &offset, ASN1_OID)) < 0 || - (len != sizeof(pkcs8_key_bag)) || - memcmp(&buf[offset], pkcs8_key_bag, sizeof(pkcs8_key_bag))) - goto error; - - offset += len; - - /* work out the salt for the private key */ - if (asn1_next_obj(buf, &offset, ASN1_EXPLICIT_TAG) < 0 || - asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - get_pbe_params(buf, &offset, &salt, &iterations) < 0 || - (len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0) - goto error; - - /* decrypt the private key */ - cert = &buf[offset]; - if ((ret = p8_decrypt(uni_pass, uni_pass_len, salt, iterations, cert, - len, PKCS12_KEY_ID)) < 0) - goto error; - - offset += len; - - /* load the private key */ - if ((ret = p8_add_key(ssl_ctx, cert)) < 0) - goto error; - - /* miss out on friendly name, local key id etc */ - if (asn1_skip_obj(buf, &offset, ASN1_SET) < 0) - goto error; - - /* work out the MAC */ - if (asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - asn1_next_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - asn1_skip_obj(buf, &offset, ASN1_SEQUENCE) < 0 || - (len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0 || - len != SHA1_SIZE) - goto error; - - orig_mac = &buf[offset]; - offset += len; - - /* get the salt */ - if ((len = asn1_next_obj(buf, &offset, ASN1_OCTET_STRING)) < 0 || len != 8) - goto error; - - salt = &buf[offset]; - - /* work out what the mac should be */ - if ((ret = p8_decrypt(uni_pass, uni_pass_len, salt, iterations, - key, SHA1_SIZE, PKCS12_MAC_ID)) < 0) - goto error; - - hmac_sha1(auth_safes, auth_safes_len, key, SHA1_SIZE, mac); - - if (memcmp(mac, orig_mac, SHA1_SIZE)) - { - error_code = SSL_ERROR_INVALID_HMAC; - goto error; - } - - all_ok = 1; - -error: - free(version); - free(uni_pass); - free(auth_safes); - return all_ok ? SSL_OK : error_code; -} - -/* - * Retrieve the salt/iteration details from a PBE block. - */ -static int get_pbe_params(uint8_t *buf, int *offset, - const uint8_t **salt, int *iterations) -{ - static const uint8_t pbeSH1RC4[] = /* pbeWithSHAAnd128BitRC4 */ - { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x0c, 0x01, 0x01 }; - - int i, len; - uint8_t *iter = NULL; - int error_code = SSL_ERROR_NOT_SUPPORTED; - - /* Get the PBE type */ - if (asn1_next_obj(buf, offset, ASN1_SEQUENCE) < 0 || - (len = asn1_next_obj(buf, offset, ASN1_OID)) < 0) - goto error; - - /* we expect pbeWithSHAAnd128BitRC4 (1.2.840.113549.1.12.1.1) - which is the only algorithm we support */ - if (len != sizeof(pbeSH1RC4) || - memcmp(&buf[*offset], pbeSH1RC4, sizeof(pbeSH1RC4))) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("Error: pkcs8/pkcs12 must use \"PBE-SHA1-RC4-128\"\n"); -#endif - goto error; - } - - *offset += len; - - if (asn1_next_obj(buf, offset, ASN1_SEQUENCE) < 0 || - (len = asn1_next_obj(buf, offset, ASN1_OCTET_STRING)) < 0 || - len != 8) - goto error; - - *salt = &buf[*offset]; - *offset += len; - - if ((len = asn1_get_int(buf, offset, &iter)) < 0) - goto error; - - *iterations = 0; - for (i = 0; i < len; i++) - { - (*iterations) <<= 8; - (*iterations) += iter[i]; - } - - free(iter); - error_code = SSL_OK; /* got here - we are ok */ - -error: - return error_code; -} - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/private_key.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/private_key.h deleted file mode 100644 index 96a5253312..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/private_key.h +++ /dev/null @@ -1,54 +0,0 @@ -unsigned char default_private_key[] = { - 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xd8, - 0xe0, 0xbf, 0x15, 0xde, 0xea, 0xaf, 0xe8, 0xd5, 0xfd, 0x0b, 0xa8, 0xa8, - 0xb3, 0xd7, 0x46, 0x5d, 0xa7, 0x26, 0x6c, 0x0c, 0xb5, 0xd9, 0xbc, 0xc6, - 0xf8, 0xc0, 0x78, 0xd0, 0xf6, 0x56, 0x65, 0xf8, 0x29, 0x48, 0x0e, 0x7b, - 0x0b, 0xa6, 0x25, 0x7e, 0xe8, 0x7b, 0x79, 0x6f, 0x38, 0xe5, 0xb5, 0xb7, - 0xf4, 0xe0, 0x9c, 0x91, 0x60, 0xf4, 0x06, 0xf3, 0x40, 0x1e, 0xf9, 0x91, - 0x19, 0xa9, 0x2f, 0x47, 0x43, 0xb5, 0x9b, 0x1e, 0xdc, 0xf6, 0xaa, 0x1c, - 0x49, 0x79, 0x21, 0x28, 0xcb, 0xaa, 0x49, 0x73, 0xd9, 0x09, 0x05, 0x4c, - 0x02, 0xf2, 0x4c, 0x4d, 0x6c, 0x1c, 0x80, 0xa7, 0x14, 0x91, 0x44, 0xfc, - 0x12, 0xb3, 0xe1, 0xe7, 0xe3, 0x4f, 0x44, 0xba, 0x8c, 0xc3, 0x74, 0x39, - 0xe8, 0x4c, 0xd0, 0xd4, 0x4c, 0x24, 0x61, 0xb4, 0x40, 0x95, 0x8c, 0xc0, - 0x0a, 0xb7, 0x02, 0x39, 0x31, 0x85, 0x93, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x00, 0x94, 0x07, 0x72, 0xe5, 0xbe, 0xad, 0x79, 0x3b, - 0xf7, 0x33, 0x2c, 0x8e, 0x05, 0xf8, 0x1a, 0x6b, 0xd0, 0xe8, 0x91, 0xf5, - 0x16, 0x07, 0xd9, 0x82, 0x5c, 0x5c, 0xd5, 0x22, 0xa1, 0x9e, 0x42, 0x02, - 0x7f, 0x8b, 0xcd, 0xbe, 0xf4, 0x85, 0x52, 0xf6, 0x2c, 0xd5, 0x09, 0xd2, - 0x2c, 0xf4, 0x2c, 0xf6, 0x07, 0x85, 0x80, 0xf9, 0xdc, 0xd0, 0xcc, 0x3f, - 0x22, 0x31, 0x15, 0xf3, 0x49, 0xf2, 0xb5, 0xe2, 0x69, 0x99, 0x04, 0x04, - 0x49, 0x21, 0xdb, 0x9f, 0xa1, 0x54, 0x5a, 0xfa, 0xe4, 0xd9, 0xf9, 0x07, - 0x05, 0xff, 0x9a, 0x65, 0xa4, 0xeb, 0xf2, 0x47, 0xce, 0x56, 0xc7, 0x72, - 0x49, 0x48, 0x5c, 0xe8, 0x14, 0xd7, 0x8f, 0x25, 0xcc, 0x49, 0x29, 0x06, - 0x6a, 0x54, 0x7b, 0x17, 0xdc, 0x9e, 0xd4, 0x53, 0xf0, 0xf5, 0x9e, 0x85, - 0x25, 0xa1, 0xeb, 0x3d, 0xe9, 0x2f, 0xb9, 0x9c, 0xf6, 0xe1, 0x80, 0x81, - 0x02, 0x41, 0x00, 0xee, 0x02, 0x78, 0xc7, 0x78, 0x85, 0x04, 0x97, 0xcc, - 0x36, 0xbd, 0xd6, 0x11, 0xe2, 0xc7, 0x39, 0xd9, 0x34, 0x51, 0x72, 0x6f, - 0x8a, 0x0f, 0xcd, 0x88, 0x32, 0x33, 0x9b, 0xc7, 0xa7, 0x03, 0x77, 0xd9, - 0x82, 0x35, 0xb6, 0xdd, 0x1f, 0xc2, 0xc1, 0x13, 0x40, 0x83, 0x55, 0xeb, - 0x60, 0xeb, 0x81, 0x8e, 0x0c, 0x16, 0x62, 0xb4, 0xb4, 0x3c, 0xeb, 0x08, - 0x80, 0x9c, 0x79, 0xd3, 0x38, 0xca, 0xf1, 0x02, 0x41, 0x00, 0xe9, 0x45, - 0x5f, 0x2e, 0x16, 0xcc, 0x93, 0x50, 0x40, 0xb6, 0x79, 0xbc, 0x38, 0xe0, - 0x56, 0x68, 0x50, 0xd3, 0x2f, 0x73, 0x8c, 0x8c, 0x2a, 0x0e, 0x81, 0x4a, - 0x8a, 0xbb, 0xcc, 0xf0, 0x64, 0x34, 0x46, 0x9f, 0x07, 0x7d, 0x22, 0xb6, - 0xf9, 0x46, 0xac, 0x57, 0x23, 0x8c, 0x1e, 0xeb, 0xd3, 0x05, 0x4d, 0xa8, - 0x83, 0x6a, 0x67, 0xf6, 0xa6, 0xb1, 0xab, 0x8e, 0xc1, 0xef, 0xef, 0x7d, - 0xf0, 0xc3, 0x02, 0x40, 0x2f, 0xc6, 0x59, 0x3e, 0x18, 0xe8, 0x02, 0x73, - 0x01, 0xef, 0xdf, 0x0d, 0x30, 0x4b, 0xe8, 0x17, 0xa9, 0x8c, 0xc1, 0xe8, - 0x89, 0x91, 0x19, 0xf8, 0xf4, 0xa4, 0xb7, 0x0d, 0x46, 0xf7, 0x34, 0x50, - 0x03, 0x5e, 0x0a, 0xb0, 0x29, 0x14, 0xae, 0x00, 0x19, 0x80, 0x32, 0x9c, - 0xb5, 0x81, 0x9f, 0xe4, 0x42, 0x82, 0x14, 0xa0, 0x3d, 0x8b, 0x8c, 0x4a, - 0xd5, 0x4b, 0x13, 0x9d, 0xb4, 0x93, 0x4a, 0xd1, 0x02, 0x40, 0x64, 0x8c, - 0x83, 0x77, 0x61, 0x5a, 0x73, 0x11, 0x3f, 0xa3, 0xa8, 0x1b, 0x8a, 0xc4, - 0xa0, 0x5a, 0x3c, 0xa4, 0x9b, 0x2a, 0x8a, 0x65, 0x8c, 0x67, 0x4e, 0x31, - 0xac, 0x55, 0x41, 0x04, 0x49, 0x9d, 0x02, 0xe7, 0xdf, 0x99, 0x7f, 0xd2, - 0x30, 0xe6, 0xd6, 0xb8, 0x84, 0xd9, 0x0c, 0x27, 0x08, 0x81, 0x9b, 0xb4, - 0xcc, 0x58, 0x9c, 0x51, 0x84, 0x0e, 0xc7, 0x6d, 0x34, 0x89, 0x50, 0xc9, - 0x0f, 0x73, 0x02, 0x41, 0x00, 0xda, 0xde, 0x5e, 0x1a, 0xac, 0x1d, 0x1d, - 0xd7, 0xb9, 0x65, 0x26, 0x00, 0xf5, 0xd4, 0xe4, 0x28, 0x84, 0x86, 0x2f, - 0x00, 0x9c, 0x41, 0x00, 0x52, 0xe1, 0x47, 0x91, 0xc0, 0x52, 0x05, 0x4e, - 0x0f, 0x2f, 0x0d, 0xca, 0x9b, 0x3d, 0x89, 0x41, 0xbf, 0xee, 0x9f, 0xa1, - 0xe6, 0x9d, 0xa4, 0xeb, 0x45, 0x7f, 0xe3, 0xcb, 0xa4, 0x6b, 0x0a, 0xe2, - 0x7e, 0xb0, 0x87, 0x5c, 0x40, 0xb1, 0x51, 0x11, 0x1d -}; -unsigned int default_private_key_len = 609; diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/ssl.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/ssl.h deleted file mode 100644 index 539d0a3058..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/ssl.h +++ /dev/null @@ -1,474 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @mainpage axTLS API - * - * @image html axolotl.jpg - * - * The axTLS library has features such as: - * - The TLSv1 SSL client/server protocol - * - No requirement to use any openssl libraries. - * - A choice between AES block (128/256 bit) and RC4 (128 bit) stream ciphers. - * - RSA encryption/decryption with variable sized keys (up to 4096 bits). - * - Certificate chaining and peer authentication. - * - Session resumption, session renegotiation. - * - ASN.1, X.509, PKCS#8, PKCS#12 keys/certificates with DER/PEM encoding. - * - Highly configurable compile time options. - * - Portable across many platforms (written in ANSI C), and has language - * bindings in C, C#, VB.NET, Java, Perl and Lua. - * - Partial openssl API compatibility (via a wrapper). - * - A very small footprint (around 50-60kB for the library in 'server-only' - * mode). - * - No dependencies on sockets - can use serial connections for example. - * - A very simple API - ~ 20 functions/methods. - * - * A list of these functions/methods are described below. - * - * @ref c_api - * - * @ref bigint_api - * - * @ref csharp_api - * - * @ref java_api - */ -#ifndef HEADER_SSL_H -#define HEADER_SSL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -//#include "crypto.h" - -/* need to predefine before ssl_lib.h gets to it */ -#define SSL_SESSION_ID_SIZE 32 - -#include "tls1.h" - -/* The optional parameters that can be given to the client/server SSL engine */ -#define SSL_CLIENT_AUTHENTICATION 0x00010000 -#define SSL_SERVER_VERIFY_LATER 0x00020000 -#define SSL_NO_DEFAULT_KEY 0x00040000 -#define SSL_DISPLAY_STATES 0x00080000 -#define SSL_DISPLAY_BYTES 0x00100000 -#define SSL_DISPLAY_CERTS 0x00200000 -#define SSL_DISPLAY_RSA 0x00400000 - -/* errors that can be generated */ -#define SSL_OK 0 -#define SSL_NOT_OK -1 -#define SSL_ERROR_DEAD -2 -#define SSL_ERROR_CONN_LOST -256 -#define SSL_ERROR_SOCK_SETUP_FAILURE -258 -#define SSL_ERROR_INVALID_HANDSHAKE -260 -#define SSL_ERROR_INVALID_PROT_MSG -261 -#define SSL_ERROR_INVALID_HMAC -262 -#define SSL_ERROR_INVALID_VERSION -263 -#define SSL_ERROR_INVALID_SESSION -265 -#define SSL_ERROR_NO_CIPHER -266 -#define SSL_ERROR_BAD_CERTIFICATE -268 -#define SSL_ERROR_INVALID_KEY -269 -#define SSL_ERROR_FINISHED_INVALID -271 -#define SSL_ERROR_NO_CERT_DEFINED -272 -#define SSL_ERROR_NOT_SUPPORTED -274 -#define SSL_X509_OFFSET -512 -#define SSL_X509_ERROR(A) (SSL_X509_OFFSET+A) - -/* these are all the alerts that are recognized */ -#define SSL_ALERT_CLOSE_NOTIFY 0 -#define SSL_ALERT_UNEXPECTED_MESSAGE 10 -#define SSL_ALERT_BAD_RECORD_MAC 20 -#define SSL_ALERT_HANDSHAKE_FAILURE 40 -#define SSL_ALERT_BAD_CERTIFICATE 42 -#define SSL_ALERT_ILLEGAL_PARAMETER 47 -#define SSL_ALERT_DECODE_ERROR 50 -#define SSL_ALERT_DECRYPT_ERROR 51 -#define SSL_ALERT_INVALID_VERSION 70 - -/* The ciphers that are supported */ -#define SSL_AES128_SHA 0x2f -#define SSL_AES256_SHA 0x35 -#define SSL_RC4_128_SHA 0x05 -#define SSL_RC4_128_MD5 0x04 - -/* build mode ids' */ -#define SSL_BUILD_SKELETON_MODE 0x01 -#define SSL_BUILD_SERVER_ONLY 0x02 -#define SSL_BUILD_ENABLE_VERIFICATION 0x03 -#define SSL_BUILD_ENABLE_CLIENT 0x04 -#define SSL_BUILD_FULL_MODE 0x05 - -/* offsets to retrieve configuration information */ -#define SSL_BUILD_MODE 0 -#define SSL_MAX_CERT_CFG_OFFSET 1 -#define SSL_MAX_CA_CERT_CFG_OFFSET 2 -#define SSL_HAS_PEM 3 - -/* default session sizes */ -#define SSL_DEFAULT_SVR_SESS 5 -#define SSL_DEFAULT_CLNT_SESS 1 - -/* X.509/X.520 distinguished name types */ -#define SSL_X509_CERT_COMMON_NAME 0 -#define SSL_X509_CERT_ORGANIZATION 1 -#define SSL_X509_CERT_ORGANIZATIONAL_NAME 2 -#define SSL_X509_CA_CERT_COMMON_NAME 3 -#define SSL_X509_CA_CERT_ORGANIZATION 4 -#define SSL_X509_CA_CERT_ORGANIZATIONAL_NAME 5 - -/* SSL object loader types */ -#define SSL_OBJ_X509_CERT 1 -#define SSL_OBJ_X509_CACERT 2 -#define SSL_OBJ_RSA_KEY 3 -#define SSL_OBJ_PKCS8 4 -#define SSL_OBJ_PKCS12 5 - -/** - * @defgroup c_api Standard C API - * @brief The standard interface in C. - * @{ - */ - -/** - * @brief Establish a new client/server context. - * - * This function is called before any client/server SSL connections are made. - * - * Each new connection will use the this context's private key and - * certificate chain. If a different certificate chain is required, then a - * different context needs to be be used. - * - * There are two threading models supported - a single thread with one - * SSL_CTX can support any number of SSL connections - and multiple threads can - * support one SSL_CTX object each (the default). But if a single SSL_CTX - * object uses many SSL objects in individual threads, then the - * CONFIG_SSL_CTX_MUTEXING option needs to be configured. - * - * @param options [in] Any particular options. At present the options - * supported are: - * - SSL_SERVER_VERIFY_LATER (client only): Don't stop a handshake if the server - * authentication fails. The certificate can be authenticated later with a - * call to ssl_verify_cert(). - * - SSL_CLIENT_AUTHENTICATION (server only): Enforce client authentication - * i.e. each handshake will include a "certificate request" message from the - * server. Only available if verification has been enabled. - * - SSL_DISPLAY_BYTES (full mode build only): Display the byte sequences - * during the handshake. - * - SSL_DISPLAY_STATES (full mode build only): Display the state changes - * during the handshake. - * - SSL_DISPLAY_CERTS (full mode build only): Display the certificates that - * are passed during a handshake. - * - SSL_DISPLAY_RSA (full mode build only): Display the RSA key details that - * are passed during a handshake. - * - * @param num_sessions [in] The number of sessions to be used for session - * caching. If this value is 0, then there is no session caching. This option - * is not used in skeleton mode. - * @return A client/server context. - */ -EXP_FUNC SSL_CTX * STDCALL ssl_ctx_new(uint32_t options, int num_sessions); - -/** - * @brief Remove a client/server context. - * - * Frees any used resources used by this context. Each connection will be - * sent a "Close Notify" alert (if possible). - * @param ssl_ctx [in] The client/server context. - */ -EXP_FUNC void STDCALL ssl_ctx_free(SSL_CTX *ssl_ctx); - -/** - * @brief (server only) Establish a new SSL connection to an SSL client. - * - * It is up to the application to establish the logical connection (whether it - * is a socket, serial connection etc). - * @param ssl_ctx [in] The server context. - * @param client_fd [in] The client's file descriptor. - * @return An SSL object reference. - */ -EXP_FUNC SSL * STDCALL ssl_server_new(SSL_CTX *ssl_ctx, int client_fd); - -/** - * @brief (client only) Establish a new SSL connection to an SSL server. - * - * It is up to the application to establish the initial logical connection - * (whether it is a socket, serial connection etc). - * - * This is a blocking call - it will finish when the handshake is complete (or - * has failed). - * @param ssl_ctx [in] The client context. - * @param client_fd [in] The client's file descriptor. - * @param session_id [in] A 32 byte session id for session resumption. This - * can be null if no session resumption is being used or required. This option - * is not used in skeleton mode. - * @param sess_id_size The size of the session id (max 32) - * @return An SSL object reference. Use ssl_handshake_status() to check - * if a handshake succeeded. - */ -EXP_FUNC SSL * STDCALL ssl_client_new(SSL_CTX *ssl_ctx, int client_fd, const uint8_t *session_id, uint8_t sess_id_size); - -/** - * @brief Free any used resources on this connection. - - * A "Close Notify" message is sent on this connection (if possible). It is up - * to the application to close the socket or file descriptor. - * @param ssl [in] The ssl object reference. - */ -EXP_FUNC void STDCALL ssl_free(SSL *ssl); - -/** - * @brief Read the SSL data stream. - * The socket must be in blocking mode. - * @param ssl [in] An SSL object reference. - * @param in_data [out] If the read was successful, a pointer to the read - * buffer will be here. Do NOT ever free this memory as this buffer is used in - * sucessive calls. If the call was unsuccessful, this value will be null. - * @return The number of decrypted bytes: - * - if > 0, then the handshaking is complete and we are returning the number - * of decrypted bytes. - * - SSL_OK if the handshaking stage is successful (but not yet complete). - * - < 0 if an error. - * @see ssl.h for the error code list. - * @note Use in_data before doing any successive ssl calls. - */ -EXP_FUNC int STDCALL ssl_read(SSL *ssl, uint8_t **in_data); - -/** - * @brief Write to the SSL data stream. - * The socket must be in blocking mode. - * @param ssl [in] An SSL obect reference. - * @param out_data [in] The data to be written - * @param out_len [in] The number of bytes to be written. - * @return The number of bytes sent, or if < 0 if an error. - * @see ssl.h for the error code list. - */ -EXP_FUNC int STDCALL ssl_write(SSL *ssl, const uint8_t *out_data, int out_len); - -/** - * @brief Find an ssl object based on a file descriptor. - * - * Goes through the list of SSL objects maintained in a client/server context - * to look for a file descriptor match. - * @param ssl_ctx [in] The client/server context. - * @param client_fd [in] The file descriptor. - * @return A reference to the SSL object. Returns null if the object could not - * be found. - */ -EXP_FUNC SSL * STDCALL ssl_find(SSL_CTX *ssl_ctx, int client_fd); - -/** - * @brief Get the session id for a handshake. - * - * This will be a 32 byte sequence and is available after the first - * handshaking messages are sent. - * @param ssl [in] An SSL object reference. - * @return The session id as a 32 byte sequence. - * @note A SSLv23 handshake may have only 16 valid bytes. - */ -EXP_FUNC const uint8_t * STDCALL ssl_get_session_id(const SSL *ssl); - -/** - * @brief Get the session id size for a handshake. - * - * This will normally be 32 but could be 0 (no session id) or something else. - * @param ssl [in] An SSL object reference. - * @return The size of the session id. - */ -EXP_FUNC uint8_t STDCALL ssl_get_session_id_size(const SSL *ssl); - -/** - * @brief Return the cipher id (in the SSL form). - * @param ssl [in] An SSL object reference. - * @return The cipher id. This will be one of the following: - * - SSL_AES128_SHA (0x2f) - * - SSL_AES256_SHA (0x35) - * - SSL_RC4_128_SHA (0x05) - * - SSL_RC4_128_MD5 (0x04) - */ -EXP_FUNC uint8_t STDCALL ssl_get_cipher_id(const SSL *ssl); - -/** - * @brief Return the status of the handshake. - * @param ssl [in] An SSL object reference. - * @return SSL_OK if the handshake is complete and ok. - * @see ssl.h for the error code list. - */ -EXP_FUNC int STDCALL ssl_handshake_status(const SSL *ssl); - -/** - * @brief Retrieve various parameters about the axTLS engine. - * @param offset [in] The configuration offset. It will be one of the following: - * - SSL_BUILD_MODE The build mode. This will be one of the following: - * - SSL_BUILD_SERVER_ONLY (basic server mode) - * - SSL_BUILD_ENABLE_VERIFICATION (server can do client authentication) - * - SSL_BUILD_ENABLE_CLIENT (client/server capabilties) - * - SSL_BUILD_FULL_MODE (client/server with diagnostics) - * - SSL_BUILD_SKELETON_MODE (skeleton mode) - * - SSL_MAX_CERT_CFG_OFFSET The maximum number of certificates allowed. - * - SSL_MAX_CA_CERT_CFG_OFFSET The maximum number of CA certificates allowed. - * - SSL_HAS_PEM 1 if supported - * @return The value of the requested parameter. - */ -EXP_FUNC int STDCALL ssl_get_config(int offset); - -/** - * @brief Display why the handshake failed. - * - * This call is only useful in a 'full mode' build. The output is to stdout. - * @param error_code [in] An error code. - * @see ssl.h for the error code list. - */ -EXP_FUNC void STDCALL ssl_display_error(int error_code); - -/** - * @brief Authenticate a received certificate. - * - * This call is usually made by a client after a handshake is complete and the - * context is in SSL_SERVER_VERIFY_LATER mode. - * @param ssl [in] An SSL object reference. - * @return SSL_OK if the certificate is verified. - */ -EXP_FUNC int STDCALL ssl_verify_cert(const SSL *ssl); - -/** - * @brief Retrieve an X.509 distinguished name component. - * - * When a handshake is complete and a certificate has been exchanged, then the - * details of the remote certificate can be retrieved. - * - * This will usually be used by a client to check that the server's common - * name matches the URL. - * - * A full handshake needs to occur for this call to work properly. - * - * @param ssl [in] An SSL object reference. - * @param component [in] one of: - * - SSL_X509_CERT_COMMON_NAME - * - SSL_X509_CERT_ORGANIZATION - * - SSL_X509_CERT_ORGANIZATIONAL_NAME - * - SSL_X509_CA_CERT_COMMON_NAME - * - SSL_X509_CA_CERT_ORGANIZATION - * - SSL_X509_CA_CERT_ORGANIZATIONAL_NAME - * @return The appropriate string (or null if not defined) - * @note Verification build mode must be enabled. - */ -EXP_FUNC const char * STDCALL ssl_get_cert_dn(const SSL *ssl, int component); - -/** - * @brief Force the client to perform its handshake again. - * - * For a client this involves sending another "client hello" message. - * For the server is means sending a "hello request" message. - * - * This is a blocking call on the client (until the handshake completes). - * - * @param ssl [in] An SSL object reference. - * @return SSL_OK if renegotiation instantiation was ok - */ -EXP_FUNC int STDCALL ssl_renegotiate(SSL *ssl); - -/** - * @brief Process a file that is in binary DER or ASCII PEM format. - * - * These are temporary objects that are used to load private keys, - * certificates etc into memory. - * @param ssl_ctx [in] The client/server context. - * @param obj_type [in] The format of the file. Can be one of: - * - SSL_OBJ_X509_CERT (no password required) - * - SSL_OBJ_X509_CACERT (no password required) - * - SSL_OBJ_RSA_KEY (AES128/AES256 PEM encryption supported) - * - SSL_OBJ_PKCS8 (RC4-128 encrypted data supported) - * - SSL_OBJ_PKCS12 (RC4-128 encrypted data supported) - * - * PEM files are automatically detected (if supported). The object type is - * also detected, and so is not relevant for these types of files. - * @param filename [in] The location of a file in DER/PEM format. - * @param password [in] The password used. Can be null if not required. - * @return SSL_OK if all ok - * @note Not available in skeleton build mode. - */ -EXP_FUNC int STDCALL ssl_obj_load(SSL_CTX *ssl_ctx, int obj_type, const char *filename, const char *password); - -/** - * @brief Process binary data. - * - * These are temporary objects that are used to load private keys, - * certificates etc into memory. - * @param ssl_ctx [in] The client/server context. - * @param obj_type [in] The format of the memory data. - * @param data [in] The binary data to be loaded. - * @param len [in] The amount of data to be loaded. - * @param password [in] The password used. Can be null if not required. - * @return SSL_OK if all ok - * @see ssl_obj_load for more details on obj_type. - */ -EXP_FUNC int STDCALL ssl_obj_memory_load(SSL_CTX *ssl_ctx, int obj_type, const uint8_t *data, int len, const char *password); - -#ifdef CONFIG_SSL_GENERATE_X509_CERT -/** - * @brief Create an X.509 certificate. - * - * This certificate is a self-signed v1 cert with a fixed start/stop validity - * times. It is signed with an internal private key in ssl_ctx. - * - * @param ssl_ctx [in] The client/server context. - * @param options [in] Not used yet. - * @param dn [in] An array of distinguished name strings. The array is defined - * by: - * - SSL_X509_CERT_COMMON_NAME (0) - * - If SSL_X509_CERT_COMMON_NAME is empty or not defined, then the - * hostname will be used. - * - SSL_X509_CERT_ORGANIZATION (1) - * - If SSL_X509_CERT_ORGANIZATION is empty or not defined, then $USERNAME - * will be used. - * - SSL_X509_CERT_ORGANIZATIONAL_NAME (2) - * - SSL_X509_CERT_ORGANIZATIONAL_NAME is optional. - * @param cert_data [out] The certificate as a sequence of bytes. - * @return < 0 if an error, or the size of the certificate in bytes. - * @note cert_data must be freed when there is no more need for it. - */ -EXP_FUNC int STDCALL ssl_x509_create(SSL_CTX *ssl_ctx, uint32_t options, const char * dn[], uint8_t **cert_data); -#endif - -/** - * @brief Return the axTLS library version as a string. - */ -EXP_FUNC const char * STDCALL ssl_version(void); - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/Makefile b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/Makefile deleted file mode 100644 index 56c711f197..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/Makefile +++ /dev/null @@ -1,97 +0,0 @@ -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -all: - -AXTLS_HOME=../.. - -include $(AXTLS_HOME)/config/.config -include $(AXTLS_HOME)/config/makefile.conf - -ifdef CONFIG_PERFORMANCE_TESTING -all: performance -endif - -ifdef CONFIG_SSL_TEST -all: ssltesting -endif - -include $(AXTLS_HOME)/config/makefile.post - -ifndef CONFIG_PLATFORM_WIN32 -performance: $(AXTLS_HOME)/$(STAGE)/perf_bigint -ssltesting: $(AXTLS_HOME)/$(STAGE)/ssltest -LIBS=$(AXTLS_HOME)/$(STAGE) - -$(AXTLS_HOME)/$(STAGE)/perf_bigint: perf_bigint.o $(LIBS)/libaxtls.a - $(CC) $(LDFLAGS) -o $@ $^ -L $(LIBS) -laxtls - -$(AXTLS_HOME)/$(STAGE)/ssltest: ssltest.o $(LIBS)/libaxtls.a - $(CC) $(LDFLAGS) -o $@ $^ -lpthread -L $(LIBS) -laxtls -else -performance: $(AXTLS_HOME)/$(STAGE)/perf_bigint.exe -ssltesting: $(AXTLS_HOME)/$(STAGE)/ssltest.exe - -CRYPTO_PATH="$(AXTLS_INCLUDE)crypto\\" -AXTLS_SSL_PATH="$(AXTLS_INCLUDE)ssl\\" - -CRYPTO_OBJ=\ - $(CRYPTO_PATH)aes.obj \ - $(CRYPTO_PATH)bigint.obj \ - $(CRYPTO_PATH)crypto_misc.obj \ - $(CRYPTO_PATH)hmac.obj \ - $(CRYPTO_PATH)md2.obj \ - $(CRYPTO_PATH)md5.obj \ - $(CRYPTO_PATH)rc4.obj \ - $(CRYPTO_PATH)rsa.obj \ - $(CRYPTO_PATH)sha1.obj - -OBJ=\ - $(AXTLS_SSL_PATH)asn1.obj \ - $(AXTLS_SSL_PATH)gen_cert.obj \ - $(AXTLS_SSL_PATH)loader.obj \ - $(AXTLS_SSL_PATH)openssl.obj \ - $(AXTLS_SSL_PATH)os_port.obj \ - $(AXTLS_SSL_PATH)p12.obj \ - $(AXTLS_SSL_PATH)x509.obj \ - $(AXTLS_SSL_PATH)tls1.obj \ - $(AXTLS_SSL_PATH)tls1_svr.obj \ - $(AXTLS_SSL_PATH)tls1_clnt.obj - -$(AXTLS_HOME)/$(STAGE)/perf_bigint.exe: perf_bigint.obj - $(LD) $(LDFLAGS) /out:$@ $? $(CRYPTO_OBJ) $(OBJ) - -$(AXTLS_HOME)/$(STAGE)/ssltest.exe: ssltest.obj - $(LD) $(LDFLAGS) /out:$@ $? $(CRYPTO_OBJ) $(OBJ) -endif - -clean:: - -@rm -f $(AXTLS_HOME)/$(STAGE)/perf_bigint* $(AXTLS_HOME)/$(STAGE)/ssltest* - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_key.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_key.pem deleted file mode 100644 index 7c8ac8af28..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_key.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQCnZdk20fYWh8O6kDTt0AuJWyp0YIrb7W1UNNMPXI5wA4J59IVj -Nmk5wocm9+Hqzbg7rORAN/mHPBhzLAjhnm1HODs36hW15DtbDkkH4wCM/Tsyv79m -n0xq1V6peK3t9vi2D4p/IRjHkYR2jm+BeknopijhY0kHHfpGTHa2DnVirwIDAQAB -AoGAd4Ia5SxYiBU9A0BYyT8yPUm8sYELIaAL4YYk+F6Xwhh/Whnb8MyzquzaGFP4 -Ee30jYYNHlvX5VheDDtvy8OTN5FgKNNdzvW15iA4Hxje04ZI7W87G7OIxm7aYRid -sG4XqZBtsOdj33IRd9hgozywGJ2qRqS6nn2KxRv1w07RniECQQDZAlKxijdn+vQ7 -8/8mXzC+FwQtzeTUCuLrBJcos9I/591ABoxYkWcYLxpFqgCEVwb1qfPBJkL07JPt -Fu6CTnBFAkEAxXmUBs47x5QM99qyBO5UwW0Ksrm/WD4guaaxzQShMt/HzgJl613z -/x4FtxiQJHAr6r2K0t5xTJx89LVKuouYYwJAImue6DAvJ5wDfzrtXo28snn+HLHK -uONdKL/apgcXszE4w74GJsoxWwGlniUf3d3b6b1iP2GtPyIDOJjpjduZLQJAE4jS -VtYB3d1MZxxQLeKxqayyuTlcr0r+C79sqT5C//hZGIzuLhlOMLd0k0cvwxsBjSgQ -2ok8pfp49fAVI1z5xwJAVmJgLc/mSti5A2q3c8HW8qvMJEDPWbpb7p8pg4ePtpa8 -EE3TO4O4J2H+k40C397km4yZXdkNQsiT1zVljJZpiw== ------END RSA PRIVATE KEY----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.cer deleted file mode 100644 index 9c9936b8e98d0b7475e522377e64ee5cb7d9858c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 483 zcmXqLV!UtA#OT4q$uKvs*kYO0(kKI7HcqWJkGAi;jEtmp zDoN&tJf@_eyO<6*KV zyX-GFpR#RyrAh0Vm>C%uk(~z&JZ7M~WVst|nJiE@P*UHyEW+SG%xvc~wa?bgyU%&o z__O9cjynut$9A5`TwES67IMd>m+OQ}^u4t{;lgJg9l!sr3OSV*OvR3NHYY8-f#GI I<)^zO0PSqO5dZ)H diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.pem deleted file mode 100644 index 86f659710c..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.ca_x509.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIB3zCCAUgCCQCdbnM4pjqlWjANBgkqhkiG9w0BAQUFADA0MTIwMAYDVQQKEylh -eFRMUyBQcm9qZWN0IERvZGd5IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjA2 -MDcxMTQ0MzJaFw0zMzEwMjMxMTQ0MzJaMDQxMjAwBgNVBAoTKWF4VExTIFByb2pl -Y3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA -A4GNADCBiQKBgQCnZdk20fYWh8O6kDTt0AuJWyp0YIrb7W1UNNMPXI5wA4J59IVj -Nmk5wocm9+Hqzbg7rORAN/mHPBhzLAjhnm1HODs36hW15DtbDkkH4wCM/Tsyv79m -n0xq1V6peK3t9vi2D4p/IRjHkYR2jm+BeknopijhY0kHHfpGTHa2DnVirwIDAQAB -MA0GCSqGSIb3DQEBBQUAA4GBAB0LgNo0oCcwIie5plgwwFybQ8x95q6e3wndM/Mp -3gjcAFbGuchpo3dfFlTcRI0KyERb3q1MVxPM4sff9nT7EdHVyK9s8/ITkP2dcTKc -flbcTEfJVIeM8L2P5F41Hvn9GuGcMW8EmsC06gdbp1LLnqsdrXdMNBsAUBXfgPrU -+UcZ ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key deleted file mode 100644 index 4e981d143e1383828b8a76e18c57e0b0f59b202f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmV-n0-pUaf&yIv0RRGlfdJGZ4h<43zjh$NmAe*gFd;CkIEWYaUz#Bpms2~d;TZ=+ zk`Pe_4BeOCv@NwmC65?N)gXrn?#|TyB9lU`OINiLyb68LKj!YuC$?l`)u2L1ZuNgc z=Sux+ln*4$Nfhl{gttWP`YNkiPpo0p0h3)_$nwg2s|lRS$t9_kyc+@o0RRC4fq?*^ zL=H=j!{3Frp6Ni0WB0Agp#h-CLCM~qOnu)|K)UjF%r+-Ic-(fn!L=2LAE_OnV2@ezYPqfv?7EVw ztnGa>p_(hpRr+n(N$Ooc;-Ug;rmFgzfA1^_2-*k;^0%11vl#+G0M`^95MJ-`(OR-i zBA|9yFh78sA*+l|0wMujX*I%@o4%O>ok-BGDtQP3_l0oh2@5c16ixpA!QhEf#zLZF zQvyK%tS>_pbrT+q^2G&mI(6scS|AxC&V>TLsLms2K>j$f{xgTlW2bz`iWbV^SZp~M zSQa|OOK(li0kpVqV}#k^0zZ3z5inI#a)-o>oxVh6us#Gh)Z2ij5G5&LpFzr;@!ous zU+nPW;~#)v8B_>M%wA;5u?2*padHnE!MbMQTY+(0Wgg|0 v3cKQF;e2bA5N6M*E~R!7Tl|5&J97n<934}R7|5Rx8jwm@UwAr_9k^bwbVnG3 diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key.pem deleted file mode 100644 index 2bcf5e37b3..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.device_key.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQDUIg4NEiu/diDAlbsWbTAhMKw4iBf2X5ohGJdTO6vhGQdEkhBR -Bgzdl9+0LbVDJY8YStUghwnuztT+IpNCrUtXtRK8Cn3QP+buzSe2ZGPVoEJIbvV/ -QudK/WuUDyTNSRTtW4S3RO36KqtbT6xh1QGTXV3I8sp7qwmcysklqZW8GwIDAQAB -AoGBAKBEDkuPw9+Ftp7pQIxj963LoQGgyEHJ3p9Mfd9TQLrydsw2cf9Uy9mKiWcN -9VkCgkZ/Gt/VRgrW1pIduxXv6O+8S14An+2mTayy3Ga1N6MulD7OHQP9kqR4j8TT -xaYPR/1skjhQ+Y0Uw4NEa3OkQp6lAUEp1aVX/mTfIZBguaUxAkEA/H543Ha6wbUV -iB+pHaBgj1nzarmuEey6kqqs7X0zoZory1X6bdpJ6l0/4qICa6aq+pt/7ywJCNoI -CPK3mL2zGQJBANcUHRBe7/HRWrJNIqB2WDA/gJshq4xOAiIBXWk1wpabvpkCnUjQ -rip5CAL3hXDnCQswZxRN/v7B4IlSxkKiY1MCQQCsL0MUdRMejfLFBXI6defjWiAZ -I86FAr6oziNnQP44sf4zh8pjp3zIihbK4lhsORhYFjrES29NzgG0uHBjhNnhAj97 -gBEwVVNyh8SMnb5EZbA+BDjU24CmECUpYZ9Bypzx3nyTX+zw4uMfgGAZVAhLzF5l -DmYiQqcpoipMsDsoCBcCQQCxBYSicXIPG8G6ZuFbgXFcZR7llgq74mbhfGuVEGbP -qS6ldhJb/IG9O3MFlRwdU44YyJ8QGpBKWF94OpIduF6w ------END RSA PRIVATE KEY----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted.p8 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted.p8 deleted file mode 100644 index 8b0a7eb4117de421cfb917de7f03055fdfe2c28f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmV-{0e=24f&qOn90m$1hDe6@4FL=R0Wb~(2zv&jLbrq;i2?!$00e>oTecB0S5Ch{ zHl7H=qA4HIOB;)ah$8h!;8it(u3j>D`liQs0*+k*%XW@PAMoO|ZVtaORrZR~IdUoh zNf*1NZ0jCJOsIuor2OuhY5SBS)gmT$Plt&Ub|ujkSvY}HF3T6ZV$+;=Cj1_ zqiV0Xy#~l}wq>xTcs~vcY@+sZ^yo(jDeDIm8}2%S8s3H&bnWkZz@9kPK8*&28D$i9 z3|2M?_7i99)`(fX3rvXr@m91pnk>4N^QQR5XPP=(qj)V!5qKV+KU4NR01UFqcL=0O z)N0{uLA$ f>0oNt1g(0Zzb?&!uhc`Lu&kDME*dK^i&ZfFoN%%v diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted_pem.p8 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted_pem.p8 deleted file mode 100644 index 19ca3c5eae..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.encrypted_pem.p8 +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN ENCRYPTED PRIVATE KEY----- -MIIBfTAcBgoqhkiG9w0BDAEBMA4ECN+YmhCv0ILdAgIIAASCAVu0QEfMkp0xUsNq -0Ek4Nsa/uxcs8N/2P7Ae7qCakkvsdRvvPPH0y+wuj5NgrG6WpPeeEx9fI2oNNTfC -pwncH0Xm99ofVrgMX6XC45LDZtzXNSZd4TdBP6xvlYXbuGegp5GPJ8emzscHCFhC -JfPHemRAcB7DhiWukPosuSUr5R8OluEMJrQLHuQtlDAvMjLEI98lSchPxF8LKCk3 -SS2uCcmc+4WiR0nHG9BOaGi38+PytHAnbfo1mfVSQzLfgLicMAVGysfQ9QOgpQOO -ygYfM/s7Duwbl0rshyXVJP+7BpYJnPtHvO4BTiizU7ZEr4WBiEnnANDrupSdsxeH -+cxZo70YJVdoPdgMd2ke6EIkUhp7HughFg+okldlEtJA4muKeEzwAxZu0TqxOtZ8 -UYRS4Ygk+rN7Y0qTKSYwSkrFBwUDkpctYjRUOeAZ/mYMKWmMn1ejAb5Is7bjEIxl -tw== ------END ENCRYPTED PRIVATE KEY----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_1024 deleted file mode 100644 index 5b6ba1d037b002b0d62c9903a3582daac05f77e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 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 Tbx&XXcZMQG44N=;lHrQ{Y;S%h diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096.pem deleted file mode 100644 index 9929467f45..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_4096.pem +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512 deleted file mode 100644 index 7ae50f23bdc90e48f165aff330220508a99699f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxk)f&o1O0RRF)0MR=zU#S5?J%(*^zCdnK!AXBtb)hXb<-t7_Lcx{!|rfVZ|0=xRXKgPd)!Gy#fOP009C)0Fimb?T$65*W6;Z_#YNk zQ@#a*O7BqLt*OZgemVyg$o&?(z~q?GMVVlAY-DAL#~wAJ%@hSVITaeX4+WM10RkZa z=2Ex*d>@xxG0k=x#?fIqh)t}0wDn9_HXM@#5)1QLVZv(dI{VJ z<#zME>JR1d(>*U^;{HF#AygqJ2JGkYa5*N@$(u= Tmj7@iAR3)zxTTMr$9H6O@syE# diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512.pem deleted file mode 100644 index 1e2fb41f87..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_512.pem +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIBPQIBAAJBANE7MF+pAUI9hm1yvkBuUcFJf1d1oS025cE9DyAa0SNt+nTSPiOw -cPygat7sQYiE/lQVa2HFFmK4k0HxTz3/Lr0CAwEAAQJBAJF5xO2ONajX3GK2+B8W -VVO+BYNK71DfranJCX46BxXI/Ra7wOSY0UWZYHVsZGWJxx41os0UBTg5FRq4DwWW -AQECIQDo69eo39iQqjwhpAQxatMh2CWYT7gokyu56V+5o2V3fQIhAOX2b+tQxDsB -w0J9UDN6CdwI5XbzveoP5fHTPS9j4rhBAiEA3c+y6Zx6dZHYf8TdRV5QwDtB2iGY -4/L7Qimvwm6Lc1UCIQDDXWrVsocTTjsReJ6zLOHFcjVnqklU2W7T1E8tvKE3QQIh -AMRpCFM7MrS2axuc8/HzGkqW/3AlIBqdZbilj5zHd2R0 ------END RSA PRIVATE KEY----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes128.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes128.pem deleted file mode 100644 index 8961bd9a59..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes128.pem +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: AES-128-CBC,B3A0D2BCEF4DE916D0BBA30A6885251B - -v8y74AGReaPLmDt6O8wir6hX1Ze8K4fVNkrLqfDMdW5E7jBXKO8riCMNmSjQ9fyh -eTicej93+8krcIvSXKW18TdO+EWezQevgnLrAZQWaNPH2j4B+K5gm701uiiKFKVa -1zngAOByePYlN6z4JLbiCyJRhxSo5zCaUYkKC2eGh8mlE64QmokPSCAj0wcCDzGh -hdhBg1vm0GmaQwIDVn+8zMfahscXVMtBmyQf5YP4PQW2nqOt7aZHjBNdg9qnBpGw -b6YuY7eZ4FgQvYcsNCi34NroJb9pkTrrF2F9Meb6+3So7jtMFG/YaJdCuXtf01g/ -Qm+XA5pJUtIUr/hLQjhkaOVUtXv/k0o/MR4k5CbAmboLt6YHf5V8+01vk0bvv5dI -70pVdXMmx26xDZOGmjYzd93PWc+75jak3GN2fbWryQs= ------END RSA PRIVATE KEY----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes256.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes256.pem deleted file mode 100644 index 7671a302fb..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.key_aes256.pem +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: AES-256-CBC,F076229CDC2BCB3B8722E3865855B45C - -WFV9QWzr4tNmD+1OeQ7BceQg5LVQHp20Jo1Ax29lq8JTPzeObhtaU2MUHlcPKHUS -vK4FyQxJ25CyMubbnaZqCCz9pNbseFuJ1tob9UqRmXkZ8HV3snRjJRbcctD+V9x+ -Ymi1GreXoDQtMp0FtMiFjPvIYciBQnaRv2ChMAnGXNbZXCxWWA9E5S3a+yWzo+gd -wEcowL+SUac1PEDGHokhKn7nctvI9cC4hE6JmKM1sD68/U3rRPXMGqmC7umqyT5P -gjWBb1uu0iRjFC9eQUsaKPxey5Be710GFlyf/Ff/tep7RhkryIWEPvIzYCBf6rhk -3pysFgTjfiUuBYUNumjXr/q5hgdtb75788XUDxKwAoUx+m8gi0nJg35CN2nmQ054 -VJxcZlNv0wqnJ+GTTZeN6fiAhTpVtHsqHQomRSfaBiw= ------END RSA PRIVATE KEY----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.noname.p12 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.noname.p12 deleted file mode 100644 index 9d27999fa053e524fa4ca893c2d13ce9ed49bb7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1483 zcmXqLVm;2p$ZXKW+RMhN)#lOmotKfFaX}Mn9ZM5y6;Qa$poyspA;q?!i76W>l+MJ+ z0HhKSGK>Z?Y+O(ico-QC_*gicZ@+tPGI5?Z6B7qRLlcv+>xsu7BXuG}7WFyS3yN1O zJiB%z_haDaFJk>AMt=^4KDj&FlSO0x2df3KgsbB{=vL6^R#b?e&OS-QcS zGCN$J5|-cmTV%e54S!)2?UI zWu*`8Kl-TagceQVV7aLOe%rD0rav=xK9;Py<7Mxpy7}0RueYwx?_+3MS>c%f$vi$Y z>qPY0e-jNE!}i!EIz_nZJDZx%Fa4AynB5}RZoGR%m9)iXor?9S-~7oa}kp z&%|qA>g?W->CVE3V>Q*gZY|2(~y2WNWEVzf?I z<(U-KKKn^n)b)LfN?Z=|E{NH6jr(|qli}4W=1uv^j~B=u=E~*SW5W}$okLAO`S{IP zm&N{b_Df#*e&uoyfd~wEuSU-w(_`~mv6zJ zXND(%Y3vJ98Uv=jrz}lO4}rpWf%qmHH!Q_*F){%q7Xk(6VkShcPs!1(#%Z>ogb37L z{j#quvpMaUTGqUyQ-7E)zkJ$hUr<88Ndd{X+aJDG=s(t#T=rr1MYoSPrQV;Yy}z+m zy?`~c?A~9^kPHi*)!q-?Fa37Dv_6naZgJ(Ox~e3WYP$wqCBy$MnR+L9v^ugY2xd#-gtrp&?V z%1b_dxY9+VRUwb~ASsUAx z{&$<{bAPTu(cML_!?$=aJkI&ra-Px8)p5DT#2>Fzt$sAlbPs*aYTIDLJE^z&&fe?l z^Sk%Vzox!;X90tFQ`-xh6V7XQZrpS%wK>%Iy6xiU|AVYWX5_w_yT7M+A7@N?Xa9pO zC+yntHF^4$pPv6HK!{B^ccmIv%Zd0HP5-EE{lWK-zxlMywZ@@flle{ob(fXKCWfJZ z_vby)@(Da^SW$QG_ddtyKiO82(qFgbfBiarGH zyBpJ1of*Za&nY)6zS(c*82^(q&7^aotL?qtXSb}Jpn6Gv1;=%GfA;Bu!uO$&LNQUoK`?>=Jpus$0zm-LJ1}3V0YW{7 zZF0UqZc)KWe^+&(EjH!BJr5un(Iaj8bkaT}uyFjKYToQYh=l%B6>DL|7Gk)QLGe#L z|1P}(0|5X50zm+gdBp9GHK^CzVz&4n7FAQe1%pcOP~WYo$q9Zs2NlTu7Q4XYn9)U< zV0CO{Wr@cgHKNTF1vohs8n_PymH`0*Apq#>*Qnpvkg7Z(qy#Z)(;?U;m`}JUlPkID zU%8`YcYOjO0Oj^?>rliy0mDLlP&0Z7+z91%^S$a1{HF-OsY=oO*SU z*nh;`MP5+AJ3-nZnB(&MLMgApZi{nO0wDmyU24^`hZ9aa5qO@nEaAm+HD{_xRM~FR t)K4wEp*KMSAppc_2va*Uw6<#-ob&PX8cLS`a3vrbon^SCkDSMMWONLcmL~uJ diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted_pem.p8 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted_pem.p8 deleted file mode 100644 index e07375a848..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.unencrypted_pem.p8 +++ /dev/null @@ -1,10 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIBVwIBADANBgkqhkiG9w0BAQEFAASCAUEwggE9AgEAAkEA0TswX6kBQj2GbXK+ -QG5RwUl/V3WhLTblwT0PIBrRI236dNI+I7Bw/KBq3uxBiIT+VBVrYcUWYriTQfFP -Pf8uvQIDAQABAkEAkXnE7Y41qNfcYrb4HxZVU74Fg0rvUN+tqckJfjoHFcj9FrvA -5JjRRZlgdWxkZYnHHjWizRQFODkVGrgPBZYBAQIhAOjr16jf2JCqPCGkBDFq0yHY -JZhPuCiTK7npX7mjZXd9AiEA5fZv61DEOwHDQn1QM3oJ3AjldvO96g/l8dM9L2Pi -uEECIQDdz7LpnHp1kdh/xN1FXlDAO0HaIZjj8vtCKa/CbotzVQIhAMNdatWyhxNO -OxF4nrMs4cVyNWeqSVTZbtPUTy28oTdBAiEAxGkIUzsytLZrG5zz8fMaSpb/cCUg -Gp1luKWPnMd3ZHQ= ------END PRIVATE KEY----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withCA.p12 b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.withCA.p12 deleted file mode 100644 index ae029dee0fd45e90460d0eacd15f9be1882756ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2089 zcmZXUc{J3G8pmh(F~%Ok8&kYBg)D;*2FVg;ghXY@z7*Bimm!Rd?1M5&G+}5ak!8F_ zUL~QSNLh=qC5Eh7vS05x_ulR~_mAg%pY#1b=lSbaa*^%q)Nk&KD<${~X$Bs$!?=aX(DX0b)` z2=?1scbxjAy)u@r^s~g4M|A&HpVVc(WGVgvy{ikEfZFkPEVjjJr^EF8KrD`+uRA1g zxA*y2re}A&5n``vH!1gLMon>80@oAn!BCe`J5Om7!JOHvY0haYo0>t2ZHWFv)gCwC zcHV-}4cAM&Biz&hD-yA&@oQG74hLy%SFU#=+jVtu(uIS_TQ#f3c@C?6i}42hDFampl%liFBWzzf&J5c(=<%^P?;lZI3p1Tu!DplU zM4rNsQuFrc3#-z1@qd+dl9MV4j%g2~-kl!f*tk(>xkQmBR(tPOebymRY#7>NILs^G zFd-|{;yzg(q7!s)AB_98U&M**RwaoN8`WRQk2%$o_`8gBYUQ z>bS?Db1c-A-gmLeY}Ob?-;`}5!ofJtZS#IT860`^oOnbUrpyHd)iXTzc}Xntnd_EA zzU5U9JWN7Dz-4^pns>eM`I0*SCMnzRuH}%O#6|~pMIl&Wfp@gn^DiZ-!c)6CxQYd) zJzRNAA*1aW$MR0a5w!1vE6WIu=xKqx@7iUvpuMMs?kTPnQE%qQsw%behcY@}vw**a z`foo$)*9kjLz9hUoP?ua1DZUDNPw}ee-$X+4*&5eOHBzATjgjS_UgHl-aJqGr={t~ zYP=pu70=og;9j?fi#@8a{zI!-#dZ+&97Xd$&R6z4v+AAQY_#P33i_0F5*2yVfg%t) z)_nArmLs4ZQR5YVHQ7*}S#SyVn-<_%!7>aQ8Hs*0VQ%t)J|~ zYM9nX7;4R-{w|0$=MJHW5-(c4O~%Dbulq%Bh;Hx)GamO2{@G~$sth9yaULz2oIPXT z*t$vbEzQ*7lpg)IE#F_XlK&DPd@_c%yi{D8JaGDnF6iLnVfoM?n#C;?0V?%BXrd6H z`~U&Uvu^|Y1LEfU52$#-5DEeE1Vw=4|3AO()}EQTmcLW}55E8c1n=|Zf<}W~uH4Uo z9{nEovqoI>)r^n1_hv@)AJ%vEGgA*~_PT3j&lA-c@fq-U_6%f2mPey71uU%KCBI%+J9&Aro_ z4B*w4n26|vcZcX8WE&_U0XIty?`^rvdtAi@Fvsm3>>P4m&}3uLbn;s5sM`=7JqPui zS-mGzw#%6jhKm(xmU1~$5cQrmU6oQZ#>yC1FgAuU7n|qQG0mBRX7WF+kR-PoWkF*G zVix7BqulQN2=t*;OR02T=~bpiO{+|*TjoSY-+EVCvq$Ws9yukLrI|yP?b$NA9TaX( zmbgo4-r8v49N~hEIpNWB_$2(I=#r?vK^#tNN~s`2UnH##Vi#= z28)5ZrRXj+K7Q=MqC{}ba_eQ8>4@qxCdKNYjPd0UVU7lN5u5{4j0>Enr6=OGdfOFV z>N9e~d`$HD0NLT=7J8*SA!dGDkUWFi#F{?9Y8wC8TceHzQzwxlwzkp*b1v>aNi7NU zm2IUX6$AY*UB|5NmMy1GMaFk9OR z2C*z%H2Xs#Oysq(Q-;Fo{qQzK5D)pTIX)d&`0O7%Z@aDrz)WltjghNu3G$S60F?&5 zkQBF9=)*zbx2k7asM)2?BaI8GmP?=+iOW@e;q>b=$=Su$@b>}_0*>HTII*M%RV?c0 ze+vyis45PKsn({9F;DsLUM9rLJHdV3VQKW!DCF-WF;&UK;vgJI6{H4o0fm9Cfr3H4 z`k0G5y$e$Zjfb?Mzm60 zsjiZwDdM^^5@TPYX|cPNopg21y|;VL{o_5)InVQ)_pjdr!DvMgfrMb8PiU-q%HfnH zF@!Lp3>NA`!9x5^y90v3@}Cj93iD+9nZxp(!m{a{!^3zqnH?H3?JvYK&a%YB09 zJ2xN64qd9L{rE_p$ONMps@`pG@6EKNnLn~iR>6LRDy*IxtM>K<((D-bE7=NFnBwZm zVDTkVmMC}syBOh=Jkx0xrI)=3*Ky}{1WKVFJzh8-1K9d~&$_HC({W0Pt@N_i9?)3x-Cqr3T zePAM(ichfVdaPV7n;Cu0cwFN=i_M+Czg!NZ=B0Lz{jy3Y3K9F+L*^p zHpP`Lof=}%FOqs{X_La@CG5ckFU13_MfOQ*`js^lXj{zgSo8 zpvvyhZz0}5*o2+_@ZA>_+oOj88U4s=;$?^F*ci`49CnGbkk*(B?PcZZ=S>SPk@3ok zHW3DNLRD|`myKc0^uUeAjmqung+^{+3d{tGYU^W{TUf3p?UXw03Irn+{{v(hjFd#d zNc^Ua+dMQ{XehcPNg=u$tZMZsW9R|};@aWS!k*BfVEX;Lt; zHwbaQChOXxWnQcvd&tJ}o4rk5=geN#4DcKsZ(P$Uf9(}#!!S$J_s?VzH-9;@1v}xc zUqgD9c3ha#A1AHv?NVY#m96HANF?^*G&yWD{q2GmcMsfa{LNbS^SV5igD{Z&Dx$B& z?{%8u%3LI7ASp-pTao)4cVMLNg%y+2csd-s?%}d4`+cXH&-CM4bxkl%+;P(h+vu6r z{vMBIBfcqkqD@*{Zdrmeo#r1MQq`(-v;A?#&AeL7!TDihKUhUbdC^4Ug3s4ohYm*6 zy6b@c=5^0()bcf`szv4@9yKC zxN5m4Qj4KC&t`J`pr#;YGsh~~RY{EiFS$GKk*s2u`sy`QPFeMd5AuLp>V=#eYf|a! zMt>T)w&M~9LewX345k?d$7SS;>X02`zQ1_yaA;27pcoS{8KQa?2@dfFVp=DbyxP$Z zy@ShpXm-Z>TlR?dt0i{L`d<&*&dZT?TKZ%|ZsxQQxEgWP_tr8b4IRflERA)mm&3ZA zqw}F{Ls$bchIiGF()LDiRUGD;5|77bcQ;p!2twN}XQGY1@j!dS6xXL#YfY1tITuQ7 zT?4)x-`W{_OS-hKMK@rylf^LPET?D**hk-8FA{YOZQJ*C$2##>vAjy(joiHwm*>m* z^mewy#f3g$JhJN>vzJZ@4z@L3lCV1#cs^7{gOAia>glIaaGf-=M%rY981iUt!j5GNkddL?9_B$N^yh3D5?-046{KB7q=)0Yq)8 z7hnz?fJl%cghdN!;E|xL5P%|3Be^CIZ5L9{tv0y}@`==V{HJadhB5C~zBA{V$Bz~K E1>TCewg3PC diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_1024.cer deleted file mode 100644 index fc92d056429c92b14fdc609505a5528a38ddd3da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 475 zcmXqLV!Uq9#OT1p$?)-T`++N8!VeqpvT6)$}FigkQ3)MFatt!Lqii2 zW1}c>USnfJ10!Q7*FeWm%s>QUDldwuhC&7cAaQ14PD3MeJp&*#G-#ZU>?%f92Ij_I z27|^t7JSY6*W$;@+`i|$?C)O$;UTG zreV3rM3+B8n;$-Z?C-Lx=WvPT3!e*Dd{h#*I85z1z_p#p(y(l}<|sS2Nm9q#MI#?}#GK1|G;Nj9n?r9a zx*tqPn=Ep8#%g2J%eAqATyu5`M7USYn40q6C$>rQ=PUlWS*MNEQ%>babX_=L_GM?X j$6)$}FigkQ3)MFatt!Lqii2 zW1}c>USnfJ10!Q7*FeWm%s>QUDldwuhC&7cAaQ14PD3MeJp&*#1iDZO*;$ON49rc8 z{0u;GE~X|%MutNR_TT<>zJSeT^Za|gwm0>UnA?6&&rWT6+_6ixVL4aXImM&>R`J}R!t z+jA&U_kPRFCBl9a^}ihQSF@EY+r99L$0v8O9WpZ)@!zhFOWnlzWtp*8&m^W2_0?9l zw)n8tFa2|oB|f!S?S*U#tJV9Eu!NU)c8mVMWhyc4la_L1xyOI0f}@sf*H3S3R=#}F zSLVfo6y=MD+>iH`Cet R9GogVhX2<0z0YoW4gkCo^O*nu diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.pem deleted file mode 100644 index 1ed0141afb..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_2048.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICWzCCAcQCCQDxw4fA1PRXxDANBgkqhkiG9w0BAQQFADA0MTIwMAYDVQQKEylh -eFRMUyBQcm9qZWN0IERvZGd5IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjA2 -MDcxMTQ0MzJaFw0zMzEwMjMxMTQ0MzJaMCwxFjAUBgNVBAoTDWF4VExTIFByb2pl -Y3QxEjAQBgNVBAMTCTEyNy4wLjAuMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBAMKgv9v6z3AGRLOf3o092S/ENz33Z2tlguOIuh2Apwp2ziHFvul7m9iF -xsEcEARcvpkRPVo6ifJLjhJErenvvMAIS3WoO1lyenMaGoNddLeRRB0snRn7xRcl -DYzCYS3fhJmkE06RL/TCTyY9GXa7odRI8kcWuByZog/be15lsgn0pjNKjJICdCer -Otq0TAV/pfzRBF9lcyboHWQFOu9UVmDp3LsV/9o1GJbyKiNZd0j/GnDFOQbXy7GD -I9PJTRzo4GQj0cJHY7JelORKiIsymcoMNRTboFRAx5y9jAGF8Ks196Rq/+9gYsvi -eE0h+pbdLLbM0uZvAYqzIGK9hRR7Ja0CAwEAATANBgkqhkiG9w0BAQQFAAOBgQA8 -L1Zz9K6M/PQCYWrfnTjbPKY2rTB1OvSV0Uwy5KKPQRS1+oK9dx4K0miX+1ZvI1bo -f7/1aFXOsW3dpTwYUSjJvTMjSwNUPKiB/q/xwA1mzsbIZsbnhIITU95mOJ3xFhgc -YFdJ4saL7pppTzfOxZ+h9jWbDwgJJAwx/q+O72uE5w== ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.cer deleted file mode 100644 index 40bbe94fdd8d5fc57dd7463e4e9530b9d661e7c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 863 zcmXqLVvaUwVmiXa$?)-T`++N8!jBs8vT6)$}FigkQ3)MFatt!Lqii2 zW1}c>USnfJ10!Q7*FeWm%s>QUDldwuhC&7cAaQ14PD3MeJp&*#1iDZO*;$ON49rbT z{0u;GE~X|XMutD?TV}>;ow{Ja^XqY}Kx&Zef|Au{+XOz`xm&ZC_3Bzx*40-wFfQg@ zm%j3gNv(kccj0BVI|(i7yZNjX1&Wq@zCAtZ{?bm~_lpMDeGtww(0oyI-?vNu6 z^TXM09Ex^dDZ;tar^LMBOeK%H7W;SJ#A{)zrj;HmnoStPqxZLgEm3zNIDcdNGvx){gK$*>jXI`gWlo-;Cf zm$Cl}S9azz?Puni3$k++BCg c{uLH|{+cssT4etA3m$>ump}GawD^_-0G~{BVE_OC diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.pem deleted file mode 100644 index b7aed1caba..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_4096.pem +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDWzCCAsQCCQDxw4fA1PRXxTANBgkqhkiG9w0BAQQFADA0MTIwMAYDVQQKEylh -eFRMUyBQcm9qZWN0IERvZGd5IENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0wNjA2 -MDcxMTQ0MzJaFw0zMzEwMjMxMTQ0MzJaMCwxFjAUBgNVBAoTDWF4VExTIFByb2pl -Y3QxEjAQBgNVBAMTCTEyNy4wLjAuMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC -AgoCggIBAPwntJldKsrQMAz6410QZVIdoHSrNrYQ8NzdfKMF1a0lBavUsAGjDa5n -qfQ0fTBAC3HTJtxghCe7DjohEHKk89uXYt+liQ3vo6Nc+Zw9l2bDyLKffpOdVc/l -tweL7FyQIM1fl2W5r/S9OffFRMJKXiN1HPXrfGYRrwz6B2cgUBtSgI+odwCmdfjb -Ya4Wo8Za53UGeQ7v0eQ0lEDgXAhx3c2YIoXXxfe2J/5KdZnpXtRJWTJaoAbaQ4tU -xECfVwbYwltHqRQJuUx0N4DMeQwnKgf3DWHWVqqWdALsAE5utfuOpuHxSoN2AGDz -ov++GihbiEAcP5XPFv/0ldcfEi/4X9lyHb0mvUIa6DTdHd17thFEM12caD0TCszq -in8JWVu6M0+oRQcDzIfMn4aD7oKtk76gY5HtbN4Jr8E4BHH/oGPe6l4mQl+W4f3o -Zp2e7yG5WBVA9sjJbCmlxiWMHod1iiZUJ4e9cEFINjMWuooPIo6xKMzZcGHzwkBa -zS6kHyTsHcfdHcu4aVMlJ9cKN/aesJgup/XseM3imzuJ3UqfvwCfneUKfM6DM8J3 -mFfSwUBvK8uLsMw5Elim/1oIbBG0PTt7BiLiNd0pU/weuL92y2+QB2oCPM0t5D7L -IYyoZHHNlvTCkQVNsCHgrDUtOdpGlKt6zzEgUTqwC5i5N3p/w6uPAgMBAAEwDQYJ -KoZIhvcNAQEEBQADgYEAcrCtPXmZyPX01uNMh2X1VkgmUn/zLemierou7WD/h7xL -dOl4eeKjFBqIiC19382m1DK4h1F8MceqaMgTueCJpLM7A2cwN3ta8/pGP2yEVhdp -h10PkdRPF/AU8JmxnFaADsc6+6xWbbrdNv5xcvP1bJKWWW+30EhRF9PxjXiETXc= ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.cer deleted file mode 100644 index 48c6e13aa0af5678668c7d4a3245a3304030f01e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmXqLVw_~q_=ky;;p5@<16RI;A2Q%&R#QM#fOCfsUb=fe6G@UKCReg$x8h;>^OFhDPRk20&Zk9;ChBUA P9b0QY{GW6AgzOst>~fQg diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.pem deleted file mode 100644 index 8191e489f3..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_512.pem +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBkjCB/AIJAPHDh8DU9FfCMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4 -VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA2MDYw -NzExNDQzMloXDTMzMTAyMzExNDQzMlowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj -dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANE7 -MF+pAUI9hm1yvkBuUcFJf1d1oS025cE9DyAa0SNt+nTSPiOwcPygat7sQYiE/lQV -a2HFFmK4k0HxTz3/Lr0CAwEAATANBgkqhkiG9w0BAQUFAAOBgQAKRT6LwFr1xedJ -b4qrvjB+EwV/0p4TNNXUS9S30rMSFvRar7VxvLP1lpYj9PR1JGSZMG/B6hR4yumF -Rjwel9FPgNcWCW4DXAWqz3UQF7oZtJL6K+XJpQ0gwC+Nxc+RRGNLMlK7dLiqFh/V -qZLej5Xy93M0JyZBiLV88P+c08gd7A== ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes128.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes128.pem deleted file mode 100644 index 9a75fe960e..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes128.pem +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBkjCB/AIJAPHDh8DU9FfHMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4 -VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA2MDYw -NzExNDQzMloXDTMzMTAyMzExNDQzMlowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj -dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMDo -g6K2iXFftW+Qk+rrzkMGWrtfY6YSxPstPRrI7akluUEoyWGITXbK6L3QfERrf2eu -CnWyciQiHVRoHC0EgZUCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBT6YhR8x/bBteK -lr8E0l4mATOnYlsmge+z/SFYs4bDBofqlwQCVJXNSBA4ZsEjgP9qIWTu/85QrVGq -LrkewSM6Oeh95LGnE+uhJVtIX++O+Hsex3H1UL067dCG99XmDhqbEU9AI6YSZu2p -cjoSowFELtOoG667+id9QObfV3EQoQ== ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes256.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes256.pem deleted file mode 100644 index 4f3074e011..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_aes256.pem +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBkjCB/AIJAPHDh8DU9FfIMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4 -VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA2MDYw -NzExNDQzMloXDTMzMTAyMzExNDQzMlowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj -dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANAW -9PdXa5u4gWi5VB5p/eQmOtteRq9/54JkiEs8cVNrTQgZsjjU1LGedE3JwBqZ1EIW -HGPjcGg5dVxFjkn7RekCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBmJMt0Crdd/BPn -EdmzsVXou0zTizTC8wyUPMVpg/KzzP7fhZux/ZIrH9/RVcJd9y+B2/mXc3C+K99+ -TXQoYKsLGArfDPzmpy1wPrdEcB1A9gkWDl1Uq6xRyvrVm3gX8NTITRuGKL9njgWx -2SrApIBtOOUOinYtfH3745cVVl5HOA== ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_after.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_after.pem deleted file mode 100644 index 79eb9ccd68..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_after.pem +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBkjCB/AIJAPHDh8DU9FfKMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4 -VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTA2MDYw -NzExNDQzMloXDTA1MDYwNzExNDQzMlowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj -dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANE7 -MF+pAUI9hm1yvkBuUcFJf1d1oS025cE9DyAa0SNt+nTSPiOwcPygat7sQYiE/lQV -a2HFFmK4k0HxTz3/Lr0CAwEAATANBgkqhkiG9w0BAQUFAAOBgQCmPSs9EceViMZD -ZTXDZpQWJFcXaeInrXWgYWyVgnHBY/eSuqNCxkV/ehv/Wc5pWBGnrX+4cSvQ+TpQ -FdZegeOjvgipjtJb/0TJCcvgcdHTntEM0h7VXjfbsJXAHwJPFzWIKxV4jeFXnaaw -W+YHrj9GQ8PnFmapPuh4h/y6LyHAcg== ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_before.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_before.pem deleted file mode 100644 index fe72b541b2..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_bad_before.pem +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIBkjCB/AIJAPHDh8DU9FfJMA0GCSqGSIb3DQEBBQUAMDQxMjAwBgNVBAoTKWF4 -VExTIFByb2plY3QgRG9kZ3kgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTI0MTIz -MTE0MDAwMFoXDTI1MTIzMTE0MDAwMFowLDEWMBQGA1UEChMNYXhUTFMgUHJvamVj -dDESMBAGA1UEAxMJMTI3LjAuMC4xMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANE7 -MF+pAUI9hm1yvkBuUcFJf1d1oS025cE9DyAa0SNt+nTSPiOwcPygat7sQYiE/lQV -a2HFFmK4k0HxTz3/Lr0CAwEAATANBgkqhkiG9w0BAQUFAAOBgQApbldYefE8A0ez -SYvAuCtYxx/2KHwBRD/cR0q7widl9WGjVC/dsnbFo109vHEr3FP1HVYSI0aweiaK -XZmpUyJ9DprbbWQqaLuDnqIH8X7kfiMuO7/LGQc812iDJI2Akxp9cIlPBFBD8GVx -+0EphzSodDDlLD8bPqLaWTE+8Ydtjw== ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/axTLS.x509_device.cer deleted file mode 100644 index c966743c9ca724ecb81928d0f6ad7e62b29eab92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmXqLV(c|&Vl-#sWcYZv{lJwk;l~Vk**LY@JlekVGBUEVG8pI>iW!KoF^95n3G*ga zg!lw21Qg|Gr6!jc3KRT4UNq841mzkKu(<3zzhh@4Gm39jE$nid5w(?4UCMT zTmx-GO#^j^X$mN&DY>WhSR8IHwksWTs^%CzhldG|oqM3?nN8b7L=qL1QOVVA zB|csu?fqp62d3^8%Qa9mSYy#4{w;o%qQvxI>(vh>*4W)IqNC%Ho9fI z%iCXCtE2tbBwl5l92 -#include -#include "ssl.h" - -int main(int argc, char *argv[]) -{ - bigint *m1, *m2, *d; - BI_CTX *ctx = bi_initialize(); - char cmp1[1024], cmp2[1024]; - - const char *plaintext = /* 128 byte number */ - "01aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee" - "01aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee"; - d = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext)); - memset(cmp1, 0, sizeof(cmp1)); - - while (1) - { - bi_set_mod(ctx, bi_clone(ctx, d), 0); - m1 = bi_square(ctx, bi_copy(d)); - m2 = bi_residue(ctx, m1); - bi_free_mod(ctx, 0); - - //bi_export(ctx, bi_copy(d), cmp1, sizeof(cmp1)); - bi_export(ctx, m2, cmp2, sizeof(cmp2)); - - if (memcmp(cmp1, cmp2, sizeof(cmp1)) != 0) - { - printf("Error!\n"); TTY_FLUSH(); - break; - } - - d = bi_add(ctx, d, int_to_bi(ctx, 1)); - } - - bi_free(ctx, d); - bi_terminate(ctx); - printf("all good\n"); TTY_FLUSH(); - return 0; - -} - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c.old b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c.old deleted file mode 100644 index a5703fb9ec..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/datatest.c.old +++ /dev/null @@ -1,280 +0,0 @@ -#include "crypto.h" - -#include -#include -//#define DEBUG_TEST - -typedef enum { - encrypt, decrypt -} CryptoMode; - -void hex_dump(const char* header, const unsigned char* data, const unsigned int data_length) -{ - unsigned int byte_count; - printf("%s (%d bytes):\n", header, data_length); - for(byte_count = 0; byte_count < data_length; ++byte_count) - { - printf("%02X", data[byte_count]); - } - printf("\n"); -} - -void do_rsa(const CryptoMode crypto_mode, - const unsigned char* data, const unsigned int data_length, - const unsigned char* modulus, const unsigned int modulus_length, - const unsigned char* exponent, const unsigned int exponent_length, - unsigned char* result, const unsigned int result_length) -{ - RSA_CTX* rsa_context = NULL; - BI_CTX *bi_ctx; - bigint *plaintext_bi; - bigint *enc_data_bi, *dec_data_bi; - -#ifdef DEBUG_TEST - printf("do_rsa:\n"); - hex_dump("data", data, data_length); - hex_dump("modulus", modulus, modulus_length); - hex_dump("exponent", exponent, exponent_length); -#endif - - RSA_priv_key_new(&rsa_context, modulus, modulus_length, exponent, exponent_length, exponent, exponent_length); - memset(result, 0, result_length); - bi_ctx = rsa_context->bi_ctx; - - switch(crypto_mode) - { - case encrypt: -#ifdef DEBUG_TEST - printf("encrypt\n"); -#endif - plaintext_bi = bi_import(bi_ctx, data, data_length); - enc_data_bi = RSA_public(rsa_context, plaintext_bi); - bi_export(bi_ctx, enc_data_bi, result, result_length); - break; - - case decrypt: - -#ifdef DEBUG_TEST - printf("decrypt\n"); -#endif - plaintext_bi = bi_import(bi_ctx, data, data_length); - dec_data_bi = RSA_private(rsa_context, plaintext_bi); - bi_export(bi_ctx, dec_data_bi, result, result_length); - break; - } -#ifdef DEBUG_TEST - hex_dump("result", result, result_length); -#endif - - RSA_free(rsa_context); -} - -void test_matching(char* test_description, - const unsigned char* expected, const unsigned int expected_length, - const unsigned char* result, const unsigned int result_length) -{ - int test_result = memcmp(expected, result, expected_length); - printf("Testing %s ... ", test_description); - if(test_result == 0) - { - printf("ok.\n"); - } - else - { - printf("failed!\n"); - hex_dump("should be", expected, expected_length); - hex_dump("but is", result, result_length); - } -} - -void encrypt_decrypt_should_yield_original(char* test_description, - const unsigned char* data, const unsigned int data_length, - const unsigned char* modulus, const unsigned int modulus_length, - const unsigned char* private_exponent, const unsigned int private_exponent_length, - const unsigned char* public_exponent, const unsigned int public_exponent_length, - const unsigned char* cryptogram, const unsigned int cryptogram_length) -{ - const unsigned int calculated_cryptogram_length = modulus_length; - unsigned char* calculated_cryptogram = malloc(calculated_cryptogram_length); - const unsigned int decrypted_data_length = modulus_length; - unsigned char* decrypted_data = malloc(decrypted_data_length); - - printf("\nRunning \"%s\" ...\n", test_description); - -#ifdef DEBUG_TEST - printf("encrypt_decrypt_should_yield_original:\n"); - hex_dump("data", data, data_length); - hex_dump("modulus", modulus, modulus_length); - hex_dump("private_exponent", private_exponent, private_exponent_length); - hex_dump("public_exponent", public_exponent, public_exponent_length); - hex_dump("cryptogram", cryptogram, cryptogram_length); -#endif - - do_rsa(encrypt, data, data_length, - modulus, modulus_length, - private_exponent, private_exponent_length, - calculated_cryptogram, calculated_cryptogram_length); - -#ifdef DEBUG_TEST - hex_dump("calculated_cryptogram", calculated_cryptogram, calculated_cryptogram_length); -#endif - - if(cryptogram != NULL) - { - test_matching("cryptogram", cryptogram, cryptogram_length, - calculated_cryptogram, calculated_cryptogram_length); - } - - do_rsa(decrypt, calculated_cryptogram, calculated_cryptogram_length, - modulus, modulus_length, - public_exponent, public_exponent_length, - decrypted_data, decrypted_data_length); - - test_matching("decrypted plaintext", data, data_length, - decrypted_data, decrypted_data_length); - - free(calculated_cryptogram); - free(decrypted_data); -} - -/* configure without CRT! - - prepare data with: - > echo "" | - ruby -ne '$_.gsub!(/ /, "").scan(/../).each_with_index \ - { |b, i| print "\"\n\"" if i % 16 == 0; print "\\x" + b;}' */ -int main(int argc, char *argv[]) -{ -#if 0 - unsigned char stuff[] = { - 0x22, 0x33, 0x44, 0x81, - 0xF1, 0xFF, 0xAA, 0xBB, - 0xCC, 0xDD, 0xEE , 0x01, - 0x45, 0x44, 0xfa, 0x8d, - 0xfa, 0x20, 0x99, 0xFF, - 0xab, 0xda, 0xac, 0x40 }; - unsigned char resA[sizeof(stuff)*2], resB[sizeof(stuff)*2]; - - BI_CTX *bi_ctx = bi_initialize(); - bigint *bi_data1, *bi_data2, *res1, *res2; - bi_data1 = bi_import(bi_ctx, stuff, sizeof(stuff)); - bi_data2 = bi_import(bi_ctx, stuff, sizeof(stuff)); - - res1 = bi_multiply(bi_ctx, bi_copy(bi_data1), bi_copy(bi_data2)); - res2 = bi_multiply(bi_ctx, bi_data1, bi_data2); - bi_print("MULTIPLY", res1); - bi_print("SQUARE", res2); - bi_export(bi_ctx, res1, resA, sizeof(resA)); - bi_export(bi_ctx, res2, resB, sizeof(resB)); - if (memcmp(resA, resB, sizeof(resA))) - printf("OUCH - difference!\n"); - bi_terminate(bi_ctx); - - exit(0); -#endif - encrypt_decrypt_should_yield_original("Works only with Montgomery", - (const unsigned char*) /* data */ - "\xBC\xD3\x12\x6C\x93\x13\x14\x4C\x00\x5D\xFD\xBF\xDE\xE4\xD3\x60" - "\x29\xB8\xAE\x47\xBE\x0B\xB6\x0A\x39\x88\xB7\x93\x19\x14\xE8\x88" - "\x4A\xDE\x00\x46\x89\x5A\x11\x1A\xC4\x8F\xE8\xF7\x27\xAC\x59\x80" - "\x03\xC1\x93\x14\x01\x00\x93\x15\x07\x00\x00\x00\x01\x01\x05\x20" - "\x93\x16\x0F\x42\x34\x33\x3A\x58\x30\x30\x30\x31\x30\x31\x30\x30" - "\x30\x31\x92\x6B\x10\x6C\x69\x62\x65\x6C\x6D\x65\x74\x72\x65\x65" - "\x2E\x73\x6F\x2E\x30\x93\x18\x02\xA5\x92\x92\x6C\x03\x96\xE3\x0C" - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xB7\xBE", 128, - (const unsigned char*) /* modulus */ - "\xc4\x5a\xcb\x35\x95\xad\x32\x4a\xcf\x9c\x82\x45\x13\xb7\x42\x35" - "\x22\x32\x6d\x2e\x6d\x26\x2e\x6d\x00\x9b\xae\x2d\x9e\x78\x1e\xdd" - "\x40\x23\x17\xa8\xbb\xa1\x07\x86\xb4\x3c\xbc\xe8\xd5\xfc\xd9\xeb" - "\x3c\xad\x63\x11\xf3\x1d\x64\x81\x96\xf2\xf5\xfe\xca\x5a\xf7\x8a" - "\x15\xcb\x90\x81\x68\xae\x59\xb4\xe1\xa4\x41\x99\xcd\xf3\x98\xbd" - "\x3c\x48\x37\xdb\xa1\xc3\x1c\x6f\x43\xd1\x89\x23\xe5\x3d\xa3\xa5" - "\x92\x7b\x19\x14\x1e\x7a\xf3\x88\x8a\x36\x21\x3e\x16\x40\x3c\xd7" - "\xd3\xdb\x13\xaf\xc9\x68\x45\x84\xb3\x39\x8f\x02\xed\x28\x02\x5f", 128, - (const unsigned char*) /* private exponent */ - "\x5d\x19\xb7\xb4\x66\x8d\xc2\x84\xda\x3f\x99\x3c\xeb\x86\x3e\xec" - "\x36\x94\xb6\x54\x07\x08\xcd\x86\x7d\x7d\x53\x6e\xe9\xee\x86\xa3" - "\xdd\x5f\x46\x3e\x89\x08\x67\x2b\x25\x96\x8e\xf3\xcf\x52\x9e\x78" - "\xfd\x42\x30\xf1\x37\xd6\xbd\xea\xfc\x09\xa3\x3d\xf5\xf0\x7f\xe1" - "\xb1\xe0\x69\x13\x44\xf9\x8b\x95\x58\x2a\x81\xb3\xa8\x15\xce\x7e" - "\xd3\xea\x97\x0a\xa2\x14\xd4\xae\xc7\x75\xbb\x9f\x68\xa5\x53\x0e" - "\x85\x29\x88\x48\x6c\xc9\xcc\xde\x72\x40\x3a\x4c\x82\xde\x3c\xfb" - "\x08\xf8\x2c\x26\xb5\xd4\xea\xc4\xca\x98\x6e\x43\x3e\x67\x54\xc1", 128, - (const unsigned char*) /* public exponent */ - "\x01\x00\x01", 3, - (const unsigned char*) /* precalculated encrypted data */ - "\x93\xE8\x1F\xF9\x70\xFA\xAA\xED\x54\xFD\x48\x37\xC9\x71\x9A\x11" - "\x69\x80\xB4\x22\x0C\xAD\x5A\x95\x65\xCA\x7C\xF7\x70\x56\x92\xCB" - "\x45\x6D\x58\x84\x21\x80\x23\x76\x21\x4A\x61\x99\xC1\x11\x9C\x0F" - "\x40\xED\x80\x9C\x8F\x3A\x4F\x01\xB5\x72\xC3\x24\xAE\xF3\x6B\x98" - "\xA8\x60\xAC\xAF\x95\x98\x9A\xAA\xA4\x28\xF2\x02\x05\xFC\xF3\xDD" - "\xB0\x5A\x4E\xDE\x3C\x41\x4B\x1C\x5B\x1F\xF6\x3D\xAF\x93\x43\xCB" - "\xD8\xC7\x24\x97\x8F\x49\xE5\x5B\x10\x51\x3B\x1E\xA6\x39\xEA\x4E" - "\xA5\xE0\x71\x8C\xCA\x34\x8C\x2F\x6C\x5C\x78\x34\x86\x7C\x54\x6A", 128); - - encrypt_decrypt_should_yield_original("Works only with Barrett", - (const unsigned char*) /* data */ - "\x36\x42\x32\xe4\x1e\x78\x02\x8e\xfb\x64\x5f\x0c\xfc\x5a\xd7\x5c" - "\xe4\xb5\x91\x5c\x4b\x00\x87\x28\x87\x9b\xa0\x4b\x09\xc2\x6b\x64" - "\xac\x4b\xcf\xa5\xee\x8a\xb7\xc9\xc9\x90\x02\xc1\xa3\x47\x5c\x6b" - "\x71\x5d\x5d\x49\x27\xe1\x15\xc6\xcf\x37\x9e\xa7\x0f\xa1\xad\x96" - "\x83\xef\x4b\x53\x68\xcd\x77\xfc\x14\x5f\xf5\xb7\x78\xb0\x10\xeb" - "\x0d\x61\x94\x01\xf6\xaa\x1b\x19\x23\x39\xa7\xcc\x6c\x42\x4a\x87" - "\x79\x27\x04\xc6\xec\x8e\x50\xba\xb9\x26\x89\xd4\x00\x01\x25\xe5" - "\xf3\x9e\x98\x0c\x8d\x2e\x43\x1e\xe9\x29\x90\xd2\x75\x61\x85\xe7", 128, - (const unsigned char*) /* modulus */ - "\x37\x0c\x32\xe4\x1e\x78\x02\x8e\xfb\x64\x5f\x0c\xfc\x5a\xd7\x5c" - "\xe4\xb5\x91\x5c\x4b\x00\x87\x28\x87\x9b\xa0\x4b\x09\xc2\x6b\x64" - "\xac\x4b\xcf\xa5\xee\x8a\xb7\xc9\xc9\x90\x02\xc1\xa3\x47\x5c\x6b" - "\x71\x5d\x5d\x49\x27\xe1\x15\xc6\xcf\x37\x9e\xa7\x0f\xa1\xad\x96" - "\x83\xef\x4b\x53\x68\xcd\x77\xfc\x14\x5f\xf5\xb7\x78\xb0\x10\xeb" - "\x0d\x61\x94\x01\xf6\xaa\x1b\x19\x23\x39\xa7\xcc\x6c\x42\x4a\x87" - "\x79\x27\x04\xc6\xec\x8e\x50\xba\xb9\x26\x89\xd4\x00\x01\x25\xe5" - "\xf3\x9e\x98\x0c\x8d\x2e\x43\x1e\xe9\x29\x90\xd2\x75\x61\x85\xe7", 128, - (const unsigned char*) /* private exponent */ - "\x16\x3a\x76\xd2\x66\xfb\x4f\x0d\x2d\xb6\x7a\x2b\x64\x3b\xca\x7b" - "\x58\x5f\x79\x33\x2b\x96\x2a\xfd\xd2\xc4\xa5\x15\xa7\xfb\x3a\x22" - "\x8c\xf0\x90\x09\x11\x2a\x32\xcc\xe8\xf7\x9e\x25\x53\x29\x9d\xc8" - "\x45\x1e\xce\x6c\x9c\x0d\xe8\x1d\x3f\xcf\xd5\xe0\xe0\x0f\x09\x69" - "\x2d\xe7\xd5\xe6\xe5\x10\xd9\x4e\x20\xdb\xbd\xa1\x04\x6b\xe6\x1d" - "\x4c\x79\x28\x47\x30\x11\xde\x14\xb4\x6e\x35\x98\x38\x50\x44\x82" - "\xbd\xc4\xfb\x03\xb3\xf6\x5e\x5a\x29\xfa\x29\xaa\xde\xe4\xfd\x15" - "\xbe\xed\x4f\x93\x9d\x0d\x29\xe8\xd7\xa3\xf4\x18\xc8\x98\xb1\x01", 128, - (const unsigned char*) /* public exponent */ - "\x01\x00\x01", 3, - NULL, 0); - - encrypt_decrypt_should_yield_original("Works always", - (const unsigned char*) /* data */ - "\xB9\x42\x32\xe4\x1e\x78\x02\x8e\xfb\x64\x5f\x0c\xfc\x5a\xd7\x5c" - "\xe4\xb5\x91\x5c\x4b\x00\x87\x28\x87\x9b\xa0\x4b\x09\xc2\x6b\x64" - "\xac\x4b\xcf\xa5\xee\x8a\xb7\xc9\xc9\x90\x02\xc1\xa3\x47\x5c\x6b" - "\x71\x5d\x5d\x49\x27\xe1\x15\xc6\xcf\x37\x9e\xa7\x0f\xa1\xad\x96" - "\x83\xef\x4b\x53\x68\xcd\x77\xfc\x14\x5f\xf5\xb7\x78\xb0\x10\xeb" - "\x0d\x61\x94\x01\xf6\xaa\x1b\x19\x23\x39\xa7\xcc\x6c\x42\x4a\x87" - "\x79\x27\x04\xc6\xec\x8e\x50\xba\xb9\x26\x89\xd4\x00\x01\x25\xe5" - "\xf3\x9e\x98\x0c\x8d\x2e\x43\x1e\xe9\x29\x90\xd2\x75\x61\x85\xe7", 128, - (const unsigned char*) /* modulus */ - "\xB9\x77\xEC\x83\x95\xAF\xB1\xF8\x21\x21\xFF\x05\x5E\x0C\x91\x0C" - "\x2E\xD5\xD2\x94\x1C\x38\x5E\xED\x5A\xCF\x84\xD0\x12\x8B\xAA\x4B" - "\x3A\x63\x65\x78\x13\xED\x24\x4E\x83\xF2\xF5\x02\x66\x5D\xFC\xC1" - "\x80\x5B\x78\x78\xB4\x0B\x45\xE5\x22\xC6\xCD\xEB\xCC\x74\x0B\x0B" - "\xD8\x8B\x91\x99\x48\x8E\x74\xA9\xD0\x1A\x39\x94\xC2\xD4\x2E\x9A" - "\x8C\x0C\x35\x0D\x97\x8F\xC4\x62\x20\xE9\x78\x40\x97\x05\x98\xE6" - "\x22\x48\x3D\x3D\xCA\x6A\x3F\xEF\xB0\x23\x14\x30\xDA\x35\x46\x65" - "\x55\xEF\xEB\xA1\xA9\xCF\x83\xE7\xEF\xF2\x83\x6D\x38\xEA\x88\xED", 128, - (const unsigned char*) /* private exponent */ - "\x52\x2A\x68\xE3\x9A\xAA\xED\xA3\x49\xBA\x6F\xEA\x86\xD1\xF6\x68" - "\x79\x4F\x4D\x2D\x44\x9B\x4C\xA2\xC6\xBA\x6C\xD2\x69\x84\xEA\x7A" - "\xCD\x71\x3F\x80\xC5\x03\x28\x34\x88\x8C\x58\x33\x29\xFA\xB5\x81" - "\x5C\x46\x29\xC6\xFF\xAC\x86\xD8\x8E\x61\x98\xD4\xC0\x0D\x20\xDE" - "\xEB\x61\x1C\x0C\x3C\x19\xA3\x75\x10\x7D\xDA\xA9\x55\xA7\x64\x5F" - "\xE0\xB6\x35\x62\x00\xD9\xD2\xF7\xA4\xDF\x85\xFF\xDF\x86\x75\x29" - "\x66\x16\x03\x8C\xC0\xB0\x3F\xAB\xBA\x41\xB3\x3C\x76\x58\xB6\xE2" - "\x1F\x36\x47\x5F\x1F\x0E\x4C\xB5\x29\x90\xDC\xA1\xF8\xFA\x58\x19", 128, - (const unsigned char*) /* public exponent */ - "\x01\x00\x01", 3, - NULL, 0); - - return 0; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/deutsche_telecom.x509_ca b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/deutsche_telecom.x509_ca deleted file mode 100644 index 0f4b96a0d5b66ac34b258e34a8943630d55feacc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmXqLVwz>p#KgRSnTe5!iBZLXmyJ`a&7xk*W}qnv{YLwX`%aH?TA`G&V6Xh!W>D1apmyO)Y`kfpAje zeB^LpWMyD(>}4=$>||7N?y$<5%!OzF zERzTg``9Ao-X*XBQfdA{s)V1MQHyO zWy#)aHLqswC)*oOrXGIdcj#m4Y98-5?oH8;9tM=&_?EauBId2}0<I-~KIoDw&uW z85kEk890CgUzU$Wj73Dm@KODoQ$kaJe=JbA?W-YN=#+TOfFBt2vcfDJ25gLs|CtzB z4fsF;{6G#13o!QCki7_udS;;C=E@5EntVbwMZq<0PCjey;-LEFE80^xr_VBLt0)o^ z{eRuHSc9>xWA4OP_pWJj^Vlt(S>nKR=8eFEls^UAc3BFke~M!W*vfs)>;B68FPk|v z8vb08JMyN$t<~qA>juWD7Hh=jyLr9SJ-zpI>PD-l%e+~<`HcU|RG(;Raeo+<;^qYa DuXy4z diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/equifax.x509_ca b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/equifax.x509_ca deleted file mode 100644 index 79b0a3f98764a07fdf6cae1a80eebf704d1f8796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmXqLVrnvIVtl=TnTe5!iIK&CmyJ`a&7A-4f18*?ZNn=n&ou%V2B z6o|tmEbLlXnwgeZp%9#!Tw0W>;F*`KXQ*bN0+MAGmPM0Ibt)~+%u6jUR&aLIH8hYD z=e4vnFf%eVFfjmvC~;mR10*hOENz^R>^DYM2Ij_I27|^_GV!Yaq78vdHv|ahSG);D}~qW z>v(UKw>nj0}v6(+pA!1lc$f+B_KBemDWcpM{x;f!%-~7^bqq zjEw(TSPhtglz}`*K$%6tK&(N;tHLNq@OGq_S={}DB4!R*?lnFO4P-$I_*lePuuG#x zF*DHrrO_*9GYdX@8Rm2L=SrUgyt6)^NzHtwT6QLK`?Zk6vS(+mk-WR5_38uLKS>J9 zTf8GuKR)_7Rnh+ImAVKy_x2FGh=p6X{?K|~_^nW3?Pk)dG}kZXa&H83}nHjo5q@oeRF+y~C}AK5 zF_#}?pk8`jX-Q78UVc%!LE{``H!w0c_AnSUb}%(IT;CP5elgDny_M==tAhJhysmF7 z^~s*G&+FB8xgXw#vyR;2W!Uk`M_ArWZ1TOL_s5pRZOYqrimM~Ebi%Z^%fk2YSeNlm zm)raDP5tGSZ+^F?EXZEqajv|sc#fg)f7=u5mL}xg+}0B{D}UR*`B{6He^_9w{&lI0t~bUk(V|yzt>L6d&agTOlQ%<1HtMiK21dqF;?crMuy~AZ)cCC zcar#4F@K*Wyr$(`=edOf)X_qG#W2@k=EugP0m@R{;Q^*WZi) diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/header_issue.dat b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/header_issue.dat deleted file mode 100755 index a48d23d2b937820a533bc1394d6c155fd28c1959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1159 zcmWe*W@Kq%Vqj2XW^_B{aBjXp>E)wm*3`MA7YKbx?VUNb&ow+D@R^CtrU!`(45kd+ z3@iZ*EWQj(j0R1Ne}Q;86SDvVivceir&gOs+jm|@Mpjk^gU02C@&>YO%%Ln?!eYS% znMJ92B?`{@xw)lznaPPInfZCehI|G*AO+mQtO1U?;Q@xK2Fh?lI2pynic1R$@{39w ziXqyQ^K_r&^DUdsvg@wz@%k`ix z(#=UO2Kme&200WNSs9qU84Ns_92wpo`5|5!qql9!X6NU%!l&1>n0uS&D5^(1N_N=q zT3#1Xo$~t3DZM?rcUCRjoTpWPC&fDJUdopHOj#EUEFSSFWs-_7#%qy;W$R;IY>2#oGL(LO(Mop($Bszg1H5j-<7 zYyB}vW~D>tw?BFLXek4en?Vzk6EF?DVd7-C`OWT+eQSgcnmt1@C72qS8d)Mz0)#t+ ze1a<>?d5STc=(BH&V_n5t}ZuuwkKi#Kd5eDJK@OGejq5*ct+H>r89oKDBiP7sKoTQ zuBR~j#nTEypxQCB{fdK$z?p#a& diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/killopenssl.sh b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/killopenssl.sh deleted file mode 100755 index 17950fbaef..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/killopenssl.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -ps -ef|grep openssl | /usr/bin/awk '{print $2}' |xargs kill -9 diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/make_certs.sh b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/make_certs.sh deleted file mode 100755 index dfc39d4f53..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/make_certs.sh +++ /dev/null @@ -1,174 +0,0 @@ -#!/bin/sh - -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# -# Generate the certificates and keys for testing. -# - -PROJECT_NAME="axTLS Project" - -# Generate the openssl configuration files. -cat > ca_cert.conf << EOF -[ req ] -distinguished_name = req_distinguished_name -prompt = no - -[ req_distinguished_name ] - O = $PROJECT_NAME Dodgy Certificate Authority -EOF - -cat > certs.conf << EOF -[ req ] -distinguished_name = req_distinguished_name -prompt = no - -[ req_distinguished_name ] - O = $PROJECT_NAME - CN = 127.0.0.1 -EOF - -cat > device_cert.conf << EOF -[ req ] -distinguished_name = req_distinguished_name -prompt = no - -[ req_distinguished_name ] - O = $PROJECT_NAME Device Certificate -EOF - -# private key generation -openssl genrsa -out axTLS.ca_key.pem 1024 -openssl genrsa -out axTLS.key_512.pem 512 -openssl genrsa -out axTLS.key_1024.pem 1024 -openssl genrsa -out axTLS.key_2048.pem 2048 -openssl genrsa -out axTLS.key_4096.pem 4096 -openssl genrsa -out axTLS.device_key.pem 1024 -openssl genrsa -aes128 -passout pass:abcd -out axTLS.key_aes128.pem 512 -openssl genrsa -aes256 -passout pass:abcd -out axTLS.key_aes256.pem 512 - -# convert private keys into DER format -openssl rsa -in axTLS.key_512.pem -out axTLS.key_512 -outform DER -openssl rsa -in axTLS.key_1024.pem -out axTLS.key_1024 -outform DER -openssl rsa -in axTLS.key_2048.pem -out axTLS.key_2048 -outform DER -openssl rsa -in axTLS.key_4096.pem -out axTLS.key_4096 -outform DER -openssl rsa -in axTLS.device_key.pem -out axTLS.device_key -outform DER - -# cert requests -openssl req -out axTLS.ca_x509.req -key axTLS.ca_key.pem -new \ - -config ./ca_cert.conf -openssl req -out axTLS.x509_512.req -key axTLS.key_512.pem -new \ - -config ./certs.conf -openssl req -out axTLS.x509_1024.req -key axTLS.key_1024.pem -new \ - -config ./certs.conf -openssl req -out axTLS.x509_2048.req -key axTLS.key_2048.pem -new \ - -config ./certs.conf -openssl req -out axTLS.x509_4096.req -key axTLS.key_4096.pem -new \ - -config ./certs.conf -openssl req -out axTLS.x509_device.req -key axTLS.device_key.pem -new \ - -config ./device_cert.conf -openssl req -out axTLS.x509_aes128.req -key axTLS.key_aes128.pem \ - -new -config ./certs.conf -passin pass:abcd -openssl req -out axTLS.x509_aes256.req -key axTLS.key_aes256.pem \ - -new -config ./certs.conf -passin pass:abcd - -# generate the actual certs. -openssl x509 -req -in axTLS.ca_x509.req -out axTLS.ca_x509.pem \ - -sha1 -days 10000 -signkey axTLS.ca_key.pem -openssl x509 -req -in axTLS.x509_512.req -out axTLS.x509_512.pem \ - -sha1 -CAcreateserial -days 10000 \ - -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem -openssl x509 -req -in axTLS.x509_1024.req -out axTLS.x509_1024.pem \ - -sha1 -CAcreateserial -days 10000 \ - -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem -openssl x509 -req -in axTLS.x509_2048.req -out axTLS.x509_2048.pem \ - -md5 -CAcreateserial -days 10000 \ - -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem -openssl x509 -req -in axTLS.x509_4096.req -out axTLS.x509_4096.pem \ - -md5 -CAcreateserial -days 10000 \ - -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem -openssl x509 -req -in axTLS.x509_device.req -out axTLS.x509_device.pem \ - -sha1 -CAcreateserial -days 10000 \ - -CA axTLS.x509_512.pem -CAkey axTLS.key_512.pem -openssl x509 -req -in axTLS.x509_aes128.req \ - -out axTLS.x509_aes128.pem \ - -sha1 -CAcreateserial -days 10000 \ - -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem -openssl x509 -req -in axTLS.x509_aes256.req \ - -out axTLS.x509_aes256.pem \ - -sha1 -CAcreateserial -days 10000 \ - -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem - -# note: must be root to do this -DATE_NOW=`date` -if date -s "Jan 1 2025"; then -openssl x509 -req -in axTLS.x509_512.req -out axTLS.x509_bad_before.pem \ - -sha1 -CAcreateserial -days 365 \ - -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem -date -s "$DATE_NOW" -touch axTLS.x509_bad_before.pem -fi -openssl x509 -req -in axTLS.x509_512.req -out axTLS.x509_bad_after.pem \ - -sha1 -CAcreateserial -days -365 \ - -CA axTLS.ca_x509.pem -CAkey axTLS.ca_key.pem - -# some cleanup -rm axTLS*.req -rm axTLS.srl -rm *.conf - -# need this for the client tests -openssl x509 -in axTLS.ca_x509.pem -outform DER -out axTLS.ca_x509.cer -openssl x509 -in axTLS.x509_512.pem -outform DER -out axTLS.x509_512.cer -openssl x509 -in axTLS.x509_1024.pem -outform DER -out axTLS.x509_1024.cer -openssl x509 -in axTLS.x509_2048.pem -outform DER -out axTLS.x509_2048.cer -openssl x509 -in axTLS.x509_4096.pem -outform DER -out axTLS.x509_4096.cer -openssl x509 -in axTLS.x509_device.pem -outform DER -out axTLS.x509_device.cer - -# generate pkcs8 files (use RC4-128 for encryption) -openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -v1 PBE-SHA1-RC4-128 -out axTLS.encrypted_pem.p8 -openssl pkcs8 -in axTLS.key_512.pem -passout pass:abcd -topk8 -outform DER -v1 PBE-SHA1-RC4-128 -out axTLS.encrypted.p8 -openssl pkcs8 -in axTLS.key_512.pem -nocrypt -topk8 -out axTLS.unencrypted_pem.p8 -openssl pkcs8 -in axTLS.key_512.pem -nocrypt -topk8 -outform DER -out axTLS.unencrypted.p8 - -# generate pkcs12 files (use RC4-128 for encryption) -openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem -certfile axTLS.ca_x509.pem -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 -name "p12_with_CA" -out axTLS.withCA.p12 -password pass:abcd -openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 -name "p12_without_CA" -out axTLS.withoutCA.p12 -password pass:abcd -openssl pkcs12 -export -in axTLS.x509_1024.pem -inkey axTLS.key_1024.pem -keypbe PBE-SHA1-RC4-128 -certpbe PBE-SHA1-RC4-128 -out axTLS.noname.p12 -password pass:abcd - -# PEM certificate chain -cat axTLS.ca_x509.pem >> axTLS.x509_device.pem - -# set default key/cert for use in the server -xxd -i axTLS.x509_1024.cer | sed -e \ - "s/axTLS_x509_1024_cer/default_certificate/" > ../../ssl/cert.h -xxd -i axTLS.key_1024 | sed -e \ - "s/axTLS_key_1024/default_private_key/" > ../../ssl/private_key.h diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca deleted file mode 100644 index b90803452b6cd92749d3e34c60420fd20e5b1c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1046 zcmXqLVi7WEV*0g!nTe5!iJ##hL${4hhu}rKZ^>`&I~ee?acZ@Bw0-AgWMpAwFeot8 zHqc~a4rSpMR&vfSs4U7%&nQvQNY+#^w6ru=@Xbsv$}i4OD^YOHFDlS8lrxZlC>BMP z$uCMQ$;{6)R5XwW$ukQ}AmoGc^Gg&QOG`5Hi!w_p4dldmEzJ!K4Gj#;4S*m@oY%;} z(8$;j${hd~H8Cn72MZ%B19KB2KZ8LNBNtN>BO}8~ro9IXo>_nLlh&9&y&}%w)uNTX zs_{SmP4!v4{omY03U)Pti)JtCPcX{9=#*0VZcW+AkXxT#&uNqCpWl+U`Dk`klJYfK zn|u6>lU__avR^lC)~pP*nHQ{d_Va9wP&?@MoXgH)n$AiM%N1`to1GrF@b8|L6PmcD zsb*n!o!TfGUH;@z+EkjRPZ-kzwi!?gPD_ zr%RZ=-NC4Gqg?QFOoGw;dEBS%SSNP$pR{_W_~}FVWSy-G+)pIE|8xC}wRO}=vyjYx zD!KM2&#bz~T65R1*LJ=@LDuenLjDq&2mV}eek>TJ;QuPAdi^TN6WZpgy8BWW3U#US zColdUBJ)%6pZD?vZDNP*#d?OS@s7n znRPvI6k1`LC7pHK^x+j5mM1G*Sx!V5Tjcr5@Fs2NTGVs-YKXntS((sf1-FH)+9#LJ IUw&x;05YnPSO5S3 diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca.pem b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca.pem deleted file mode 100644 index 478e60b070..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/microsoft.x509_ca.pem +++ /dev/null @@ -1,24 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEEjCCAvqgAwIBAgIPAMEAizw8iBHRPvZj7N9AMA0GCSqGSIb3DQEBBAUAMHAx -KzApBgNVBAsTIkNvcHlyaWdodCAoYykgMTk5NyBNaWNyb3NvZnQgQ29ycC4xHjAc -BgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEhMB8GA1UEAxMYTWljcm9zb2Z0 -IFJvb3QgQXV0aG9yaXR5MB4XDTk3MDExMDA3MDAwMFoXDTIwMTIzMTA3MDAwMFow -cDErMCkGA1UECxMiQ29weXJpZ2h0IChjKSAxOTk3IE1pY3Jvc29mdCBDb3JwLjEe -MBwGA1UECxMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3Nv -ZnQgUm9vdCBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCpAr3BcOY78k4bKJ+XeF4w6qKpjSVf+P6VTKO3/p2iID58UaKboo9gMmvRQmR5 -7qx2yVTa8uuchhyPn4Rms8VremIj1h083g8BkuiWxL8tZpqaaCaZ0Dosvwy1WCbB -RucKPjiWLKkoOajsSYNC44QPu5psVWGsgnyhYC13TOmZtGQ7mlAcMQgkFJ+p55Er -GOY9mGMUYFgFZZ8dN1KH96fvlALGG9O/VUWziYC/OuxUlE6u/ad6bXROrxjMlgko -IQBXkGBpN7tLEgc8Vv9b+6RmCgim0oFWV++2O14WgXcE2va+roCV/rDNf9anGnJc -PMq88AijIjCzBoXJsyB3E4XfAgMBAAGjgagwgaUwgaIGA1UdAQSBmjCBl4AQW9Bw -72lyniNRfhSyTY7/y6FyMHAxKzApBgNVBAsTIkNvcHlyaWdodCAoYykgMTk5NyBN -aWNyb3NvZnQgQ29ycC4xHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEh -MB8GA1UEAxMYTWljcm9zb2Z0IFJvb3QgQXV0aG9yaXR5gg8AwQCLPDyIEdE+9mPs -30AwDQYJKoZIhvcNAQEEBQADggEBAJXoC8CN85cYNe24ASTYdxHzXGAyn54Lyz4F -kYiPyTrmIfLwV5MstaBHyGLv/NfMOztaqTZUaf4kbT/JzKreBXzdMY09nxBwarv+ -Ek8YacD80EPjEVogT+pie6+qGcgrNyUtvmWhEoolD2Oj91Qc+SHJ1hXzUqxuQzIH -/YIX+OVnbA1R9r3xUse958Qw/CAxCYgdlSkaTdUdAqXxgOADtFv0sd3IV+5lScdS -VLa0AygS/5DW8AiPfriXxas3LOR65Kh343agANBqP8HSNorgQRKoNWobats14dQc -BOSoRQTIWjM4bk0cDWK3CqKM09VUP0bNHFWmcNsSOoeTdZ+n0qA= ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ms_iis.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ms_iis.cer deleted file mode 100755 index 250b926d68..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ms_iis.cer +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIB5jCCAVOgAwIBAgIQWPe7KyA+U7lLUohulwW2HDAJBgUrDgMCHQUAMCExHzAd -BgNVBAMTFmF4dGxzLmNlcm9jY2x1Yi5jb20uYXUwHhcNMDgwMzE3MTAyMTA2WhcN -MDkwMzE3MTAyMTA2WjAhMR8wHQYDVQQDExZheHRscy5jZXJvY2NsdWIuY29tLmF1 -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9JqHlQjrQMt3JW8yxcGhFagDa -D4QiIY8+KItTt13fIBt5g1AG4VXniaylSqKKYNPwVzqSWl7WhxMmoFU73veF8o4M -G0Zc5qbVB6ukrSV4WaTgHrIO6pWkyiaQ4L/eYfCo/2pByhl0IUKkf/TMN346/rFg -JgrElx01l6QHNQrzVQIDAQABoycwJTATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNV -HQ8EBwMFALAAAAAwCQYFKw4DAh0FAAOBgQAbH94H1fryngROJ//Oa0D3vvTO8CJ3 -8VW+3gQEwrPBOWmN6RV8OM0dE6pf8wD3s7PTCcM5+/HI1Qk53nUGrNiOmKM1s0JB -bvsO9RT+UF8mtdbo/n30M0MHMWPCC76baW3R+ANBp/V/z4l1ytpUTt+MHvz0VlUs -J4uJA3s3uh23Tg== ------END CERTIFICATE----- diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/perf_bigint.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/perf_bigint.c deleted file mode 100644 index a4ffab6a3a..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/perf_bigint.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * Some performance testing of bigint. - */ - -#include -#include -#include -#include "ssl.h" - -/************************************************************************** - * BIGINT tests - * - **************************************************************************/ - -int main(int argc, char *argv[]) -{ -#ifdef CONFIG_SSL_CERT_VERIFICATION - RSA_CTX *rsa_ctx; - BI_CTX *ctx; - bigint *bi_data, *bi_res; - int diff, res = 1; - struct timeval tv_old, tv_new; - const char *plaintext; - uint8_t compare[MAX_KEY_BYTE_SIZE]; - int i, max_biggie = 10; /* really crank performance */ - int len; - uint8_t *buf; - - /** - * 512 bit key - */ - plaintext = /* 64 byte number */ - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"; - - len = get_file("../ssl/test/axTLS.key_512", &buf); - asn1_get_private_key(buf, len, &rsa_ctx); - ctx = rsa_ctx->bi_ctx; - bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext)); - bi_res = RSA_public(rsa_ctx, bi_data); - bi_data = bi_res; /* reuse again */ - - gettimeofday(&tv_old, NULL); - for (i = 0; i < max_biggie; i++) - { - bi_res = RSA_private(rsa_ctx, bi_copy(bi_data)); - if (i < max_biggie-1) - { - bi_free(ctx, bi_res); - } - } - - gettimeofday(&tv_new, NULL); - bi_free(ctx, bi_data); - - diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 + - (tv_new.tv_usec-tv_old.tv_usec)/1000; - printf("512 bit decrypt time: %dms\n", diff/max_biggie); - TTY_FLUSH(); - bi_export(ctx, bi_res, compare, 64); - RSA_free(rsa_ctx); - free(buf); - if (memcmp(plaintext, compare, 64) != 0) - goto end; - - /** - * 1024 bit key - */ - plaintext = /* 128 byte number */ - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"; - - len = get_file("../ssl/test/axTLS.key_1024", &buf); - asn1_get_private_key(buf, len, &rsa_ctx); - ctx = rsa_ctx->bi_ctx; - bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext)); - bi_res = RSA_public(rsa_ctx, bi_data); - bi_data = bi_res; /* reuse again */ - - gettimeofday(&tv_old, NULL); - for (i = 0; i < max_biggie; i++) - { - bi_res = RSA_private(rsa_ctx, bi_copy(bi_data)); - if (i < max_biggie-1) - { - bi_free(ctx, bi_res); - } - } - - gettimeofday(&tv_new, NULL); - bi_free(ctx, bi_data); - - diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 + - (tv_new.tv_usec-tv_old.tv_usec)/1000; - printf("1024 bit decrypt time: %dms\n", diff/max_biggie); - TTY_FLUSH(); - bi_export(ctx, bi_res, compare, 128); - RSA_free(rsa_ctx); - free(buf); - if (memcmp(plaintext, compare, 128) != 0) - goto end; - - /** - * 2048 bit key - */ - plaintext = /* 256 byte number */ - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"; - - len = get_file("../ssl/test/axTLS.key_2048", &buf); - asn1_get_private_key(buf, len, &rsa_ctx); - ctx = rsa_ctx->bi_ctx; - bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext)); - bi_res = RSA_public(rsa_ctx, bi_data); - bi_data = bi_res; /* reuse again */ - - gettimeofday(&tv_old, NULL); - for (i = 0; i < max_biggie; i++) - { - bi_res = RSA_private(rsa_ctx, bi_copy(bi_data)); - if (i < max_biggie-1) - { - bi_free(ctx, bi_res); - } - } - gettimeofday(&tv_new, NULL); - bi_free(ctx, bi_data); - - diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 + - (tv_new.tv_usec-tv_old.tv_usec)/1000; - printf("2048 bit decrypt time: %dms\n", diff/max_biggie); - TTY_FLUSH(); - bi_export(ctx, bi_res, compare, 256); - RSA_free(rsa_ctx); - free(buf); - if (memcmp(plaintext, compare, 256) != 0) - goto end; - - /** - * 4096 bit key - */ - plaintext = /* 512 byte number */ - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^" - "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*^"; - - len = get_file("../ssl/test/axTLS.key_4096", &buf); - asn1_get_private_key(buf, len, &rsa_ctx); - ctx = rsa_ctx->bi_ctx; - bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext)); - gettimeofday(&tv_old, NULL); - bi_res = RSA_public(rsa_ctx, bi_data); - gettimeofday(&tv_new, NULL); - diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 + - (tv_new.tv_usec-tv_old.tv_usec)/1000; - printf("4096 bit encrypt time: %dms\n", diff); - TTY_FLUSH(); - bi_data = bi_res; /* reuse again */ - - gettimeofday(&tv_old, NULL); - for (i = 0; i < max_biggie; i++) - { - bi_res = RSA_private(rsa_ctx, bi_copy(bi_data)); - if (i < max_biggie-1) - { - bi_free(ctx, bi_res); - } - } - - gettimeofday(&tv_new, NULL); - bi_free(ctx, bi_data); - - diff = (tv_new.tv_sec-tv_old.tv_sec)*1000 + - (tv_new.tv_usec-tv_old.tv_usec)/1000; - printf("4096 bit decrypt time: %dms\n", diff/max_biggie); - TTY_FLUSH(); - bi_export(ctx, bi_res, compare, 512); - RSA_free(rsa_ctx); - free(buf); - if (memcmp(plaintext, compare, 512) != 0) - goto end; - - /* done */ - printf("Bigint performance testing complete\n"); - res = 0; - -end: - return res; -#else - return 0; -#endif -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/socgen.cer b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/socgen.cer deleted file mode 100755 index a4278705b77b573b2d248ed305c22b2d09adcacd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 980 zcmXqLV!mL|#B95OnTe5!NkD_`!T z;QZvw)RI&M_td=9qQsn3Lm2}pu`Kb zlb2eeSDc@mo|>nZoS$pZI3GE97+D#Z8+#dmE@WzKWVoD|Jf%l(uZI1`=4qA=*RJJA z?chpsFj>bp<>2Cnn~pKH_~~}+WSdv5Vp-g~=R*{W@9c}qf6Ug-cl@VZLQQ_OCeH@^h`oXZ!fnJj3XJKJxVqIWh1LDZD zm>L)x7%tFXpxdUMQBqQ1rLUh{l%ofXrp)5Zbg*Cbf$tUR59|fBpSpoj9n0I5NQx@ z5Gux*nVXoNs-K>jW}s*wZ@|vRs?EpDB*h}q|Map{+nV0K?8E09vaWbY=u}JU8K{aW zL+t=2fqWD@^vjCDVjz=Ha|v@D1BdA4&`;!%a z`ZjicJXrPWUp61x_6yT?-1OPGnCp)Bskw&pd3$HgaIL> -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#endif - -#include "ssl.h" - -#define DEFAULT_CERT "../ssl/test/axTLS.x509_512.cer" -#define DEFAULT_KEY "../ssl/test/axTLS.key_512" -//#define DEFAULT_SVR_OPTION SSL_DISPLAY_BYTES|SSL_DISPLAY_STATES -#define DEFAULT_SVR_OPTION 0 -#define DEFAULT_CLNT_OPTION 0 -//#define DEFAULT_CLNT_OPTION SSL_DISPLAY_BYTES|SSL_DISPLAY_STATES - -static int g_port = 19001; - -/************************************************************************** - * AES tests - * - * Run through a couple of the RFC3602 tests to verify that AES is correct. - **************************************************************************/ -#define TEST1_SIZE 16 -#define TEST2_SIZE 32 - -static int AES_test(BI_CTX *bi_ctx) -{ - AES_CTX aes_key; - int res = 1; - uint8_t key[TEST1_SIZE]; - uint8_t iv[TEST1_SIZE]; - - { - /* - Case #1: Encrypting 16 bytes (1 block) using AES-CBC - Key : 0x06a9214036b8a15b512e03d534120006 - IV : 0x3dafba429d9eb430b422da802c9fac41 - Plaintext : "Single block msg" - Ciphertext: 0xe353779c1079aeb82708942dbe77181a - - */ - char *in_str = "Single block msg"; - uint8_t ct[TEST1_SIZE]; - uint8_t enc_data[TEST1_SIZE]; - uint8_t dec_data[TEST1_SIZE]; - - bigint *key_bi = bi_str_import( - bi_ctx, "06A9214036B8A15B512E03D534120006"); - bigint *iv_bi = bi_str_import( - bi_ctx, "3DAFBA429D9EB430B422DA802C9FAC41"); - bigint *ct_bi = bi_str_import( - bi_ctx, "E353779C1079AEB82708942DBE77181A"); - bi_export(bi_ctx, key_bi, key, TEST1_SIZE); - bi_export(bi_ctx, iv_bi, iv, TEST1_SIZE); - bi_export(bi_ctx, ct_bi, ct, TEST1_SIZE); - - AES_set_key(&aes_key, key, iv, AES_MODE_128); - AES_cbc_encrypt(&aes_key, (const uint8_t *)in_str, - enc_data, sizeof(enc_data)); - if (memcmp(enc_data, ct, sizeof(ct))) - { - printf("Error: AES ENCRYPT #1 failed\n"); - goto end; - } - - AES_set_key(&aes_key, key, iv, AES_MODE_128); - AES_convert_key(&aes_key); - AES_cbc_decrypt(&aes_key, enc_data, dec_data, sizeof(enc_data)); - - if (memcmp(dec_data, in_str, sizeof(dec_data))) - { - printf("Error: AES DECRYPT #1 failed\n"); - goto end; - } - } - - { - /* - Case #2: Encrypting 32 bytes (2 blocks) using AES-CBC - Key : 0xc286696d887c9aa0611bbb3e2025a45a - IV : 0x562e17996d093d28ddb3ba695a2e6f58 - Plaintext : 0x000102030405060708090a0b0c0d0e0f - 101112131415161718191a1b1c1d1e1f - Ciphertext: 0xd296cd94c2cccf8a3a863028b5e1dc0a - 7586602d253cfff91b8266bea6d61ab1 - */ - uint8_t in_data[TEST2_SIZE]; - uint8_t ct[TEST2_SIZE]; - uint8_t enc_data[TEST2_SIZE]; - uint8_t dec_data[TEST2_SIZE]; - - bigint *in_bi = bi_str_import(bi_ctx, - "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"); - bigint *key_bi = bi_str_import( - bi_ctx, "C286696D887C9AA0611BBB3E2025A45A"); - bigint *iv_bi = bi_str_import( - bi_ctx, "562E17996D093D28DDB3BA695A2E6F58"); - bigint *ct_bi = bi_str_import(bi_ctx, - "D296CD94C2CCCF8A3A863028B5E1DC0A7586602D253CFFF91B8266BEA6D61AB1"); - bi_export(bi_ctx, in_bi, in_data, TEST2_SIZE); - bi_export(bi_ctx, key_bi, key, TEST1_SIZE); - bi_export(bi_ctx, iv_bi, iv, TEST1_SIZE); - bi_export(bi_ctx, ct_bi, ct, TEST2_SIZE); - - AES_set_key(&aes_key, key, iv, AES_MODE_128); - AES_cbc_encrypt(&aes_key, (const uint8_t *)in_data, - enc_data, sizeof(enc_data)); - - if (memcmp(enc_data, ct, sizeof(ct))) - { - printf("Error: ENCRYPT #2 failed\n"); - goto end; - } - - AES_set_key(&aes_key, key, iv, AES_MODE_128); - AES_convert_key(&aes_key); - AES_cbc_decrypt(&aes_key, enc_data, dec_data, sizeof(enc_data)); - if (memcmp(dec_data, in_data, sizeof(dec_data))) - { - printf("Error: DECRYPT #2 failed\n"); - goto end; - } - } - - res = 0; - printf("All AES tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * RC4 tests - * - * ARC4 tests vectors from OpenSSL (crypto/rc4/rc4test.c) - **************************************************************************/ -static const uint8_t keys[7][30]= -{ - {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}, - {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}, - {8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {4,0xef,0x01,0x23,0x45}, - {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}, - {4,0xef,0x01,0x23,0x45}, -}; - -static const uint8_t data_len[7]={8,8,8,20,28,10}; -static uint8_t data[7][30]= -{ - {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xff}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff}, - {0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0, - 0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0, - 0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0, - 0x12,0x34,0x56,0x78,0xff}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff}, - {0}, -}; - -static const uint8_t output[7][30]= -{ - {0x75,0xb7,0x87,0x80,0x99,0xe0,0xc5,0x96,0x00}, - {0x74,0x94,0xc2,0xe7,0x10,0x4b,0x08,0x79,0x00}, - {0xde,0x18,0x89,0x41,0xa3,0x37,0x5d,0x3a,0x00}, - {0xd6,0xa1,0x41,0xa7,0xec,0x3c,0x38,0xdf, - 0xbd,0x61,0x5a,0x11,0x62,0xe1,0xc7,0xba, - 0x36,0xb6,0x78,0x58,0x00}, - {0x66,0xa0,0x94,0x9f,0x8a,0xf7,0xd6,0x89, - 0x1f,0x7f,0x83,0x2b,0xa8,0x33,0xc0,0x0c, - 0x89,0x2e,0xbe,0x30,0x14,0x3c,0xe2,0x87, - 0x40,0x01,0x1e,0xcf,0x00}, - {0xd6,0xa1,0x41,0xa7,0xec,0x3c,0x38,0xdf,0xbd,0x61,0x00}, - {0}, -}; - -static int RC4_test(BI_CTX *bi_ctx) -{ - int i, res = 1; - RC4_CTX s; - - for (i = 0; i < 6; i++) - { - RC4_setup(&s, &keys[i][1], keys[i][0]); - RC4_crypt(&s, data[i], data[i], data_len[i]); - - if (memcmp(data[i], output[i], data_len[i])) - { - printf("Error: RC4 CRYPT #%d failed\n", i); - goto end; - } - } - - res = 0; - printf("All RC4 tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * SHA1 tests - * - * Run through a couple of the RFC3174 tests to verify that SHA1 is correct. - **************************************************************************/ -static int SHA1_test(BI_CTX *bi_ctx) -{ - SHA1_CTX ctx; - uint8_t ct[SHA1_SIZE]; - uint8_t digest[SHA1_SIZE]; - int res = 1; - - { - const char *in_str = "abc"; - bigint *ct_bi = bi_str_import(bi_ctx, - "A9993E364706816ABA3E25717850C26C9CD0D89D"); - bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE); - - SHA1_Init(&ctx); - SHA1_Update(&ctx, (const uint8_t *)in_str, strlen(in_str)); - SHA1_Final(digest, &ctx); - - if (memcmp(digest, ct, sizeof(ct))) - { - printf("Error: SHA1 #1 failed\n"); - goto end; - } - } - - { - const char *in_str = - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; - bigint *ct_bi = bi_str_import(bi_ctx, - "84983E441C3BD26EBAAE4AA1F95129E5E54670F1"); - bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE); - - SHA1_Init(&ctx); - SHA1_Update(&ctx, (const uint8_t *)in_str, strlen(in_str)); - SHA1_Final(digest, &ctx); - - if (memcmp(digest, ct, sizeof(ct))) - { - printf("Error: SHA1 #2 failed\n"); - goto end; - } - } - - res = 0; - printf("All SHA1 tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * MD5 tests - * - * Run through a couple of the RFC1321 tests to verify that MD5 is correct. - **************************************************************************/ -static int MD5_test(BI_CTX *bi_ctx) -{ - MD5_CTX ctx; - uint8_t ct[MD5_SIZE]; - uint8_t digest[MD5_SIZE]; - int res = 1; - - { - const char *in_str = "abc"; - bigint *ct_bi = bi_str_import(bi_ctx, - "900150983CD24FB0D6963F7D28E17F72"); - bi_export(bi_ctx, ct_bi, ct, MD5_SIZE); - - MD5_Init(&ctx); - MD5_Update(&ctx, (const uint8_t *)in_str, strlen(in_str)); - MD5_Final(digest, &ctx); - - if (memcmp(digest, ct, sizeof(ct))) - { - printf("Error: MD5 #1 failed\n"); - goto end; - } - } - - { - const char *in_str = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - bigint *ct_bi = bi_str_import( - bi_ctx, "D174AB98D277D9F5A5611C2C9F419D9F"); - bi_export(bi_ctx, ct_bi, ct, MD5_SIZE); - - MD5_Init(&ctx); - MD5_Update(&ctx, (const uint8_t *)in_str, strlen(in_str)); - MD5_Final(digest, &ctx); - - if (memcmp(digest, ct, sizeof(ct))) - { - printf("Error: MD5 #2 failed\n"); - goto end; - } - } - res = 0; - printf("All MD5 tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * HMAC tests - * - * Run through a couple of the RFC2202 tests to verify that HMAC is correct. - **************************************************************************/ -static int HMAC_test(BI_CTX *bi_ctx) -{ - uint8_t key[SHA1_SIZE]; - uint8_t ct[SHA1_SIZE]; - uint8_t dgst[SHA1_SIZE]; - int res = 1; - const char *key_str; - - const char *data_str = "Hi There"; - bigint *key_bi = bi_str_import(bi_ctx, "0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B"); - bigint *ct_bi = bi_str_import(bi_ctx, "9294727A3638BB1C13F48EF8158BFC9D"); - bi_export(bi_ctx, key_bi, key, MD5_SIZE); - bi_export(bi_ctx, ct_bi, ct, MD5_SIZE); - hmac_md5((const uint8_t *)data_str, 8, key, MD5_SIZE, dgst); - if (memcmp(dgst, ct, MD5_SIZE)) - { - printf("HMAC MD5 #1 failed\n"); - goto end; - } - - data_str = "what do ya want for nothing?"; - key_str = "Jefe"; - ct_bi = bi_str_import(bi_ctx, "750C783E6AB0B503EAA86E310A5DB738"); - bi_export(bi_ctx, ct_bi, ct, MD5_SIZE); - hmac_md5((const uint8_t *)data_str, 28, (const uint8_t *)key_str, 4, dgst); - if (memcmp(dgst, ct, MD5_SIZE)) - { - printf("HMAC MD5 #2 failed\n"); - goto end; - } - - data_str = "Hi There"; - key_bi = bi_str_import(bi_ctx, "0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B"); - bi_export(bi_ctx, key_bi, key, SHA1_SIZE); - ct_bi = bi_str_import(bi_ctx, "B617318655057264E28BC0B6FB378C8EF146BE00"); - bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE); - - hmac_sha1((const uint8_t *)data_str, 8, - (const uint8_t *)key, SHA1_SIZE, dgst); - if (memcmp(dgst, ct, SHA1_SIZE)) - { - printf("HMAC SHA1 #1 failed\n"); - goto end; - } - - data_str = "what do ya want for nothing?"; - key_str = "Jefe"; - ct_bi = bi_str_import(bi_ctx, "EFFCDF6AE5EB2FA2D27416D5F184DF9C259A7C79"); - bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE); - - hmac_sha1((const uint8_t *)data_str, 28, (const uint8_t *)key_str, 5, dgst); - if (memcmp(dgst, ct, SHA1_SIZE)) - { - printf("HMAC SHA1 failed\n"); - exit(1); - } - - res = 0; - printf("All HMAC tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * BIGINT tests - * - **************************************************************************/ -static int BIGINT_test(BI_CTX *ctx) -{ - int res = 1; - bigint *bi_data, *bi_exp, *bi_res; - const char *expnt, *plaintext, *mod; - uint8_t compare[MAX_KEY_BYTE_SIZE]; - - /** - * 512 bit key - */ - plaintext = /* 64 byte number */ - "01aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee"; - - mod = "C30773C8ABE09FCC279EE0E5343370DE" - "8B2FFDB6059271E3005A7CEEF0D35E0A" - "1F9915D95E63560836CC2EB2C289270D" - "BCAE8CAF6F5E907FC2759EE220071E1B"; - - expnt = "A1E556CD1738E10DF539E35101334E97" - "BE8D391C57A5C89A7AD9A2EA2ACA1B3D" - "F3140F5091CC535CBAA47CEC4159EE1F" - "B6A3661AFF1AB758426EAB158452A9B9"; - - bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext)); - bi_exp = int_to_bi(ctx, 0x10001); - bi_set_mod(ctx, bi_str_import(ctx, mod), 0); - bi_res = bi_mod_power(ctx, bi_data, bi_exp); - - bi_data = bi_res; /* resuse again - see if we get the original */ - - bi_exp = bi_str_import(ctx, expnt); - bi_res = bi_mod_power(ctx, bi_data, bi_exp); - bi_free_mod(ctx, 0); - - bi_export(ctx, bi_res, compare, 64); - if (memcmp(plaintext, compare, 64) != 0) - goto end; - - printf("All BIGINT tests passed\n"); - res = 0; - -end: - return res; -} - -/************************************************************************** - * RSA tests - * - * Use the results from openssl to verify PKCS1 etc - **************************************************************************/ -static int RSA_test(void) -{ - int res = 1; - const char *plaintext = /* 128 byte hex number */ - "1aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee2" - "1aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeee2\012"; - uint8_t enc_data[128], dec_data[128]; - RSA_CTX *rsa_ctx = NULL; - BI_CTX *bi_ctx; - bigint *plaintext_bi; - bigint *enc_data_bi, *dec_data_bi; - uint8_t enc_data2[128], dec_data2[128]; - int size; - int len; - uint8_t *buf; - - /* extract the private key elements */ - len = get_file("../ssl/test/axTLS.key_1024", &buf); - if (asn1_get_private_key(buf, len, &rsa_ctx) < 0) - { - goto end; - } - - free(buf); - bi_ctx = rsa_ctx->bi_ctx; - plaintext_bi = bi_import(bi_ctx, - (const uint8_t *)plaintext, strlen(plaintext)); - - /* basic rsa encrypt */ - enc_data_bi = RSA_public(rsa_ctx, plaintext_bi); - bi_export(bi_ctx, bi_copy(enc_data_bi), enc_data, sizeof(enc_data)); - - /* basic rsa decrypt */ - dec_data_bi = RSA_private(rsa_ctx, enc_data_bi); - bi_export(bi_ctx, dec_data_bi, dec_data, sizeof(dec_data)); - - if (memcmp(dec_data, plaintext, strlen(plaintext))) - { - printf("Error: DECRYPT #1 failed\n"); - goto end; - } - - RSA_encrypt(rsa_ctx, (const uint8_t *)"abc", 3, enc_data2, 0); - size = RSA_decrypt(rsa_ctx, enc_data2, dec_data2, 1); - if (memcmp("abc", dec_data2, 3)) - { - printf("Error: ENCRYPT/DECRYPT #2 failed\n"); - goto end; - } - - RSA_free(rsa_ctx); - res = 0; - printf("All RSA tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * Cert Testing - * - **************************************************************************/ -static int cert_tests(void) -{ - int res = -1, len; - X509_CTX *x509_ctx; - SSL_CTX *ssl_ctx; - uint8_t *buf; - - /* check a bunch of 3rd party certificates */ - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/microsoft.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0) - { - printf("Cert #1\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/thawte.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0) - { - printf("Cert #2\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/deutsche_telecom.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0) - { - printf("Cert #3\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/equifax.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0) - { - printf("Cert #4\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/gnutls.cer", &buf); - if ((res = add_cert(ssl_ctx, buf, len)) < 0) - { - printf("Cert #5\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/socgen.cer", &buf); - if ((res = add_cert(ssl_ctx, buf, len)) < 0) - { - printf("Cert #6\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/verisign.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) <0) - { - printf("Cert #7\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - if (get_file("../ssl/test/verisign.x509_my_cert", &buf) < 0 || - x509_new(buf, &len, &x509_ctx)) - { - printf("Cert #8\n"); - ssl_display_error(res); - goto bad_cert; - } - - x509_free(x509_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - if ((res = ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CERT, "../ssl/test/ms_iis.cer", NULL)) != SSL_OK) - { - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - res = 0; /* all ok */ - printf("All Certificate tests passed\n"); - -bad_cert: - if (res) - printf("Error: A certificate test failed\n"); - return res; -} - -/** - * init a server socket. - */ -static int server_socket_init(int *port) -{ - struct sockaddr_in serv_addr; - int server_fd; - char yes = 1; - - /* Create socket for incoming connections */ - if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) - { - return -1; - } - - setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)); - -go_again: - /* Construct local address structure */ - memset(&serv_addr, 0, sizeof(serv_addr)); /* Zero out structure */ - serv_addr.sin_family = AF_INET; /* Internet address family */ - serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */ - serv_addr.sin_port = htons(*port); /* Local port */ - - /* Bind to the local address */ - if (bind(server_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) - { - (*port)++; - goto go_again; - } - /* Mark the socket so it will listen for incoming connections */ - if (listen(server_fd, 3000) < 0) - { - return -1; - } - - return server_fd; -} - -/** - * init a client socket. - */ -static int client_socket_init(uint16_t port) -{ - struct sockaddr_in address; - int client_fd; - - address.sin_family = AF_INET; - address.sin_port = htons(port); - address.sin_addr.s_addr = inet_addr("127.0.0.1"); - client_fd = socket(AF_INET, SOCK_STREAM, 0); - if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0) - { - perror("socket"); - SOCKET_CLOSE(client_fd); - client_fd = -1; - } - - return client_fd; -} - -/************************************************************************** - * SSL Server Testing - * - **************************************************************************/ -typedef struct -{ - /* not used as yet */ - int dummy; -} SVR_CTX; - -typedef struct -{ - const char *testname; - const char *openssl_option; -} client_t; - -static void do_client(client_t *clnt) -{ - char openssl_buf[2048]; - - /* make sure the main thread goes first */ - sleep(0); - - /* show the session ids in the reconnect test */ - if (strcmp(clnt->testname, "Session Reuse") == 0) - { - sprintf(openssl_buf, "echo \"hello client\" | openssl s_client " - "-connect localhost:%d %s 2>&1 | grep \"Session-ID:\"", - g_port, clnt->openssl_option); - } - else - { - sprintf(openssl_buf, "echo \"hello client\" | openssl s_client " -#ifdef WIN32 - "-connect localhost:%d -quiet %s", -#else - "-connect localhost:%d -quiet %s > /dev/null 2>&1", -#endif - g_port, clnt->openssl_option); - } - - system(openssl_buf); -} - -static int SSL_server_test( - const char *testname, - const char *openssl_option, - const char *device_cert, - const char *product_cert, - const char *private_key, - const char *ca_cert, - const char *password, - int axtls_option) -{ - int server_fd, ret = 0; - SSL_CTX *ssl_ctx = NULL; - struct sockaddr_in client_addr; - uint8_t *read_buf; - socklen_t clnt_len = sizeof(client_addr); - client_t client_data; -#ifndef WIN32 - pthread_t thread; -#endif - g_port++; - - client_data.testname = testname; - client_data.openssl_option = openssl_option; - - if ((server_fd = server_socket_init(&g_port)) < 0) - goto error; - - if (private_key) - { - axtls_option |= SSL_NO_DEFAULT_KEY; - } - - if ((ssl_ctx = ssl_ctx_new(axtls_option, SSL_DEFAULT_SVR_SESS)) == NULL) - { - ret = SSL_ERROR_INVALID_KEY; - goto error; - } - - if (private_key) - { - int obj_type = SSL_OBJ_RSA_KEY; - - if (strstr(private_key, ".p8")) - obj_type = SSL_OBJ_PKCS8; - else if (strstr(private_key, ".p12")) - obj_type = SSL_OBJ_PKCS12; - - if (ssl_obj_load(ssl_ctx, obj_type, private_key, password)) - { - ret = SSL_ERROR_INVALID_KEY; - goto error; - } - } - - if (device_cert) /* test chaining */ - { - if ((ret = ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CERT, device_cert, NULL)) != SSL_OK) - goto error; - } - - if (product_cert) /* test chaining */ - { - if ((ret = ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CERT, product_cert, NULL)) != SSL_OK) - goto error; - } - - if (ca_cert) /* test adding certificate authorities */ - { - if ((ret = ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CACERT, ca_cert, NULL)) != SSL_OK) - goto error; - } - -#ifndef WIN32 - pthread_create(&thread, NULL, - (void *(*)(void *))do_client, (void *)&client_data); - pthread_detach(thread); -#else - CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_client, - (LPVOID)&client_data, 0, NULL); -#endif - - for (;;) - { - int client_fd, size = 0; - SSL *ssl; - - /* Wait for a client to connect */ - if ((client_fd = accept(server_fd, - (struct sockaddr *)&client_addr, &clnt_len)) < 0) - { - ret = SSL_ERROR_SOCK_SETUP_FAILURE; - goto error; - } - - /* we are ready to go */ - ssl = ssl_server_new(ssl_ctx, client_fd); - while ((size = ssl_read(ssl, &read_buf)) == SSL_OK); - SOCKET_CLOSE(client_fd); - - if (size < SSL_OK) /* got some alert or something nasty */ - { - ret = size; - - if (ret == SSL_ERROR_CONN_LOST) - { - ret = SSL_OK; - continue; - } - - break; /* we've got a problem */ - } - else /* looks more promising */ - { - if (strstr("hello client", (char *)read_buf) == NULL) - { - printf("SSL server test \"%s\" passed\n", testname); - TTY_FLUSH(); - ret = 0; - break; - } - } - - ssl_free(ssl); - } - - SOCKET_CLOSE(server_fd); - -error: - ssl_ctx_free(ssl_ctx); - return ret; -} - -int SSL_server_tests(void) -{ - int ret = -1; - struct stat stat_buf; - SVR_CTX svr_test_ctx; - memset(&svr_test_ctx, 0, sizeof(SVR_CTX)); - - printf("### starting server tests\n"); TTY_FLUSH(); - - /* Go through the algorithms */ - - /* - * TLS1 client hello - */ - if ((ret = SSL_server_test("TLSv1", "-cipher RC4-SHA -tls1", - NULL, NULL, NULL, NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES128-SHA - */ - if ((ret = SSL_server_test("AES256-SHA", "-cipher AES128-SHA", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES256-SHA - */ - if ((ret = SSL_server_test("AES256-SHA", "-cipher AES128-SHA", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * RC4-SHA - */ - if ((ret = SSL_server_test("RC4-SHA", "-cipher RC4-SHA", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * RC4-MD5 - */ - if ((ret = SSL_server_test("RC4-MD5", "-cipher RC4-MD5", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * Session Reuse - * all the session id's should match for session resumption. - */ - if ((ret = SSL_server_test("Session Reuse", - "-cipher RC4-SHA -reconnect", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * 512 bit RSA key - */ - if ((ret = SSL_server_test("512 bit key", "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_512.cer", NULL, - "../ssl/test/axTLS.key_512", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * 1024 bit RSA key (check certificate chaining) - */ - if ((ret = SSL_server_test("1024 bit key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_device.cer", - "../ssl/test/axTLS.x509_512.cer", - "../ssl/test/axTLS.device_key", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * 2048 bit RSA key - */ - if ((ret = SSL_server_test("2048 bit key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_2048.cer", NULL, - "../ssl/test/axTLS.key_2048", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * 4096 bit RSA key - */ - if ((ret = SSL_server_test("4096 bit key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_4096.cer", NULL, - "../ssl/test/axTLS.key_4096", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * Client Verification - */ - if ((ret = SSL_server_test("Client Verification", - "-cipher RC4-SHA -tls1 " - "-cert ../ssl/test/axTLS.x509_2048.pem " - "-key ../ssl/test/axTLS.key_2048.pem ", - NULL, NULL, NULL, - "../ssl/test/axTLS.ca_x509.cer", NULL, - DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION))) - goto cleanup; - - /* this test should fail */ - if (stat("../ssl/test/axTLS.x509_bad_before.pem", &stat_buf) >= 0) - { - if ((ret = SSL_server_test("Error: Bad Before Cert", - "-cipher RC4-SHA -tls1 " - "-cert ../ssl/test/axTLS.x509_bad_before.pem " - "-key ../ssl/test/axTLS.key_512.pem ", - NULL, NULL, NULL, - "../ssl/test/axTLS.ca_x509.cer", NULL, - DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) != - SSL_X509_ERROR(X509_VFY_ERROR_NOT_YET_VALID)) - goto cleanup; - - printf("SSL server test \"%s\" passed\n", "Bad Before Cert"); - TTY_FLUSH(); - ret = 0; /* is ok */ - } - - /* this test should fail */ - if ((ret = SSL_server_test("Error: Bad After Cert", - "-cipher RC4-SHA -tls1 " - "-cert ../ssl/test/axTLS.x509_bad_after.pem " - "-key ../ssl/test/axTLS.key_512.pem ", - NULL, NULL, NULL, - "../ssl/test/axTLS.ca_x509.cer", NULL, - DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) != - SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED)) - goto cleanup; - - printf("SSL server test \"%s\" passed\n", "Bad After Cert"); - TTY_FLUSH(); - - /* - * No trusted cert - */ - if ((ret = SSL_server_test("Error: No trusted certificate", - "-cipher RC4-SHA -tls1 " - "-cert ../ssl/test/axTLS.x509_512.pem " - "-key ../ssl/test/axTLS.key_512.pem ", - NULL, NULL, NULL, - NULL, NULL, - DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) != - SSL_X509_ERROR(X509_VFY_ERROR_NO_TRUSTED_CERT)) - goto cleanup; - - printf("SSL server test \"%s\" passed\n", "No trusted certificate"); - TTY_FLUSH(); - - /* - * Self-signed (from the server) - */ - if ((ret = SSL_server_test("Error: Self-signed certificate (from server)", - "-cipher RC4-SHA -tls1 " - "-cert ../ssl/test/axTLS.x509_512.pem " - "-key ../ssl/test/axTLS.key_512.pem " - "-CAfile ../ssl/test/axTLS.ca_x509.pem ", - NULL, NULL, NULL, - NULL, NULL, - DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) != - SSL_X509_ERROR(X509_VFY_ERROR_SELF_SIGNED)) - goto cleanup; - - printf("SSL server test \"%s\" passed\n", - "Self-signed certificate (from server)"); - TTY_FLUSH(); - - /* - * Self-signed (from the client) - */ - if ((ret = SSL_server_test("Self-signed certificate (from client)", - "-cipher RC4-SHA -tls1 " - "-cert ../ssl/test/axTLS.x509_512.pem " - "-key ../ssl/test/axTLS.key_512.pem ", - NULL, NULL, NULL, - "../ssl/test/axTLS.ca_x509.cer", - NULL, - DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION))) - goto cleanup; - - /* - * Key in PEM format - */ - if ((ret = SSL_server_test("Key in PEM format", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_512.cer", NULL, - "../ssl/test/axTLS.key_512.pem", NULL, - NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * Cert in PEM format - */ - if ((ret = SSL_server_test("Cert in PEM format", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_512.pem", NULL, - "../ssl/test/axTLS.key_512.pem", NULL, - NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * Cert chain in PEM format - */ - if ((ret = SSL_server_test("Cert chain in PEM format", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_device.pem", - NULL, "../ssl/test/axTLS.device_key.pem", - "../ssl/test/axTLS.ca_x509.pem", NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES128 Encrypted key - */ - if ((ret = SSL_server_test("AES128 encrypted key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_aes128.pem", NULL, - "../ssl/test/axTLS.key_aes128.pem", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES256 Encrypted key - */ - if ((ret = SSL_server_test("AES256 encrypted key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_aes256.pem", NULL, - "../ssl/test/axTLS.key_aes256.pem", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES128 Encrypted invalid key - */ - if ((ret = SSL_server_test("AES128 encrypted invalid key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_aes128.pem", NULL, - "../ssl/test/axTLS.key_aes128.pem", - NULL, "xyz", DEFAULT_SVR_OPTION)) != SSL_ERROR_INVALID_KEY) - goto cleanup; - - printf("SSL server test \"%s\" passed\n", "AES128 encrypted invalid key"); - TTY_FLUSH(); - - /* - * PKCS#8 key (encrypted) - */ - if ((ret = SSL_server_test("pkcs#8 encrypted", "-cipher RC4-SHA", - DEFAULT_CERT, NULL, "../ssl/test/axTLS.encrypted.p8", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * PKCS#8 key (unencrypted) - */ - if ((ret = SSL_server_test("pkcs#8 unencrypted", "-cipher RC4-SHA", - DEFAULT_CERT, NULL, "../ssl/test/axTLS.unencrypted.p8", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * PKCS#12 key/certificate - */ - if ((ret = SSL_server_test("pkcs#12 with CA", "-cipher RC4-SHA", - NULL, NULL, "../ssl/test/axTLS.withCA.p12", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - if ((ret = SSL_server_test("pkcs#12 no CA", "-cipher RC4-SHA", - DEFAULT_CERT, NULL, "../ssl/test/axTLS.withoutCA.p12", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - ret = 0; - -cleanup: - if (ret) - { - printf("Error: A server test failed\n"); - ssl_display_error(ret); - exit(1); - } - else - { - printf("All server tests passed\n"); TTY_FLUSH(); - } - - return ret; -} - -/************************************************************************** - * SSL Client Testing - * - **************************************************************************/ -typedef struct -{ - uint8_t session_id[SSL_SESSION_ID_SIZE]; -#ifndef WIN32 - pthread_t server_thread; -#endif - int start_server; - int stop_server; - int do_reneg; -} CLNT_SESSION_RESUME_CTX; - -typedef struct -{ - const char *testname; - const char *openssl_option; -} server_t; - -static void do_server(server_t *svr) -{ - char openssl_buf[2048]; -#ifndef WIN32 - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); -#endif - sprintf(openssl_buf, "openssl s_server -tls1 " - "-accept %d -quiet %s ", g_port, svr->openssl_option); - system(openssl_buf); -} - -static int SSL_client_test( - const char *test, - SSL_CTX **ssl_ctx, - const char *openssl_option, - CLNT_SESSION_RESUME_CTX *sess_resume, - uint32_t client_options, - const char *private_key, - const char *password, - const char *cert) -{ - server_t server_data; - SSL *ssl = NULL; - int client_fd = -1; - uint8_t *session_id = NULL; - int ret = 1; -#ifndef WIN32 - pthread_t thread; -#endif - - if (sess_resume == NULL || sess_resume->start_server) - { - g_port++; - server_data.openssl_option = openssl_option; - -#ifndef WIN32 - pthread_create(&thread, NULL, - (void *(*)(void *))do_server, (void *)&server_data); - pthread_detach(thread); -#else - CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_server, - (LPVOID)&server_data, 0, NULL); -#endif - } - - usleep(200000); /* allow server to start */ - - if (*ssl_ctx == NULL) - { - if (private_key) - { - client_options |= SSL_NO_DEFAULT_KEY; - } - - if ((*ssl_ctx = ssl_ctx_new( - client_options, SSL_DEFAULT_CLNT_SESS)) == NULL) - { - ret = SSL_ERROR_INVALID_KEY; - goto client_test_exit; - } - - if (private_key) - { - int obj_type = SSL_OBJ_RSA_KEY; - - if (strstr(private_key, ".p8")) - obj_type = SSL_OBJ_PKCS8; - else if (strstr(private_key, ".p12")) - obj_type = SSL_OBJ_PKCS12; - - if (ssl_obj_load(*ssl_ctx, obj_type, private_key, password)) - { - ret = SSL_ERROR_INVALID_KEY; - goto client_test_exit; - } - } - - if (cert) - { - if ((ret = ssl_obj_load(*ssl_ctx, - SSL_OBJ_X509_CERT, cert, NULL)) != SSL_OK) - { - printf("could not add cert %s (%d)\n", cert, ret); - TTY_FLUSH(); - goto client_test_exit; - } - } - - if (ssl_obj_load(*ssl_ctx, SSL_OBJ_X509_CACERT, - "../ssl/test/axTLS.ca_x509.cer", NULL)) - { - printf("could not add cert auth\n"); TTY_FLUSH(); - goto client_test_exit; - } - } - - if (sess_resume && !sess_resume->start_server) - { - session_id = sess_resume->session_id; - } - - if ((client_fd = client_socket_init(g_port)) < 0) - { - printf("could not start socket on %d\n", g_port); TTY_FLUSH(); - goto client_test_exit; - } - - ssl = ssl_client_new(*ssl_ctx, client_fd, session_id, sizeof(session_id)); - - /* check the return status */ - if ((ret = ssl_handshake_status(ssl))) - goto client_test_exit; - - /* renegotiate client */ - if (sess_resume && sess_resume->do_reneg) - { - if (ssl_renegotiate(ssl) < 0) - goto client_test_exit; - } - - if (sess_resume) - { - memcpy(sess_resume->session_id, - ssl_get_session_id(ssl), SSL_SESSION_ID_SIZE); - } - - if (IS_SET_SSL_FLAG(SSL_SERVER_VERIFY_LATER) && - (ret = ssl_verify_cert(ssl))) - { - goto client_test_exit; - } - - ssl_write(ssl, (uint8_t *)"hello world\n", 13); - if (sess_resume) - { - const uint8_t *sess_id = ssl_get_session_id(ssl); - int i; - - printf(" Session-ID: "); - for (i = 0; i < SSL_SESSION_ID_SIZE; i++) - { - printf("%02X", sess_id[i]); - } - printf("\n"); - TTY_FLUSH(); - } - - ret = 0; - -client_test_exit: - ssl_free(ssl); - SOCKET_CLOSE(client_fd); - usleep(200000); /* allow openssl to say something */ - - if (sess_resume) - { - if (sess_resume->stop_server) - { - ssl_ctx_free(*ssl_ctx); - *ssl_ctx = NULL; -#ifndef WIN32 - pthread_cancel(sess_resume->server_thread); -#endif - } - else if (sess_resume->start_server) - { -#ifndef WIN32 - sess_resume->server_thread = thread; -#endif - } - } - else - { - ssl_ctx_free(*ssl_ctx); - *ssl_ctx = NULL; -#ifndef WIN32 - pthread_cancel(thread); -#endif - } - - if (ret == 0) - { - printf("SSL client test \"%s\" passed\n", test); - TTY_FLUSH(); - } - - return ret; -} - -int SSL_client_tests(void) -{ - int ret = -1; - SSL_CTX *ssl_ctx = NULL; - CLNT_SESSION_RESUME_CTX sess_resume; - memset(&sess_resume, 0, sizeof(CLNT_SESSION_RESUME_CTX)); - - sess_resume.start_server = 1; - printf("### starting client tests\n"); - - if ((ret = SSL_client_test("512 bit key", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_512.pem " - "-key ../ssl/test/axTLS.key_512.pem", &sess_resume, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - /* all the session id's should match for session resumption */ - sess_resume.start_server = 0; - if ((ret = SSL_client_test("Client session resumption #1", - &ssl_ctx, NULL, &sess_resume, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - sess_resume.do_reneg = 1; - if ((ret = SSL_client_test("Client renegotiation", - &ssl_ctx, NULL, &sess_resume, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - sess_resume.do_reneg = 0; - - sess_resume.stop_server = 1; - if ((ret = SSL_client_test("Client session resumption #2", - &ssl_ctx, NULL, &sess_resume, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - if ((ret = SSL_client_test("1024 bit key", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_1024.pem " - "-key ../ssl/test/axTLS.key_1024.pem", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - if ((ret = SSL_client_test("2048 bit key", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_2048.pem " - "-key ../ssl/test/axTLS.key_2048.pem", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - if ((ret = SSL_client_test("4096 bit key", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_4096.pem " - "-key ../ssl/test/axTLS.key_4096.pem", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - if ((ret = SSL_client_test("Server cert chaining", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_device.pem " - "-key ../ssl/test/axTLS.device_key.pem " - "-CAfile ../ssl/test/axTLS.x509_512.pem ", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - /* Check the server can verify the client */ - if ((ret = SSL_client_test("Client peer authentication", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_2048.pem " - "-key ../ssl/test/axTLS.key_2048.pem " - "-CAfile ../ssl/test/axTLS.ca_x509.pem " - "-verify 1 ", NULL, DEFAULT_CLNT_OPTION, - "../ssl/test/axTLS.key_1024", NULL, - "../ssl/test/axTLS.x509_1024.cer"))) - goto cleanup; - - /* Should get an "ERROR" from openssl (as the handshake fails as soon as - * the certificate verification fails) */ - if ((ret = SSL_client_test("Error: Expired cert (verify now)", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_bad_after.pem " - "-key ../ssl/test/axTLS.key_512.pem", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL)) != - SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED)) - { - printf("*** Error: %d\n", ret); - goto cleanup; - } - - printf("SSL client test \"Expired cert (verify now)\" passed\n"); - - /* There is no "ERROR" from openssl */ - if ((ret = SSL_client_test("Error: Expired cert (verify later)", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_bad_after.pem " - "-key ../ssl/test/axTLS.key_512.pem", NULL, - DEFAULT_CLNT_OPTION|SSL_SERVER_VERIFY_LATER, NULL, - NULL, NULL)) != SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED)) - { - printf("*** Error: %d\n", ret); - goto cleanup; - } - - printf("SSL client test \"Expired cert (verify later)\" passed\n"); - ret = 0; - -cleanup: - if (ret) - { - ssl_display_error(ret); - printf("Error: A client test failed\n"); - exit(1); - } - else - { - printf("All client tests passed\n"); TTY_FLUSH(); - } - - return ret; -} - -/************************************************************************** - * SSL Basic Testing (test a big packet handshake) - * - **************************************************************************/ -static uint8_t basic_buf[256*1024]; - -static void do_basic(void) -{ - int client_fd; - SSL *ssl_clnt; - SSL_CTX *ssl_clnt_ctx = ssl_ctx_new( - DEFAULT_CLNT_OPTION, SSL_DEFAULT_CLNT_SESS); - usleep(200000); /* allow server to start */ - - if ((client_fd = client_socket_init(g_port)) < 0) - goto error; - - if (ssl_obj_load(ssl_clnt_ctx, SSL_OBJ_X509_CACERT, - "../ssl/test/axTLS.ca_x509.cer", NULL)) - goto error; - - ssl_clnt = ssl_client_new(ssl_clnt_ctx, client_fd, NULL, 0); - - /* check the return status */ - if (ssl_handshake_status(ssl_clnt) < 0) - { - printf("YA YA\n"); - ssl_display_error(ssl_handshake_status(ssl_clnt)); - goto error; - } - - ssl_write(ssl_clnt, basic_buf, sizeof(basic_buf)); - ssl_free(ssl_clnt); - -error: - ssl_ctx_free(ssl_clnt_ctx); - SOCKET_CLOSE(client_fd); - - /* exit this thread */ -} - -static int SSL_basic_test(void) -{ - int server_fd, client_fd, ret = 0, size = 0, offset = 0; - SSL_CTX *ssl_svr_ctx = NULL; - struct sockaddr_in client_addr; - uint8_t *read_buf; - socklen_t clnt_len = sizeof(client_addr); - SSL *ssl_svr; -#ifndef WIN32 - pthread_t thread; -#endif - memset(basic_buf, 0xA5, sizeof(basic_buf)/2); - memset(&basic_buf[sizeof(basic_buf)/2], 0x5A, sizeof(basic_buf)/2); - - if ((server_fd = server_socket_init(&g_port)) < 0) - goto error; - - ssl_svr_ctx = ssl_ctx_new(DEFAULT_SVR_OPTION, SSL_DEFAULT_SVR_SESS); - -#ifndef WIN32 - pthread_create(&thread, NULL, - (void *(*)(void *))do_basic, NULL); - pthread_detach(thread); -#else - CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_basic, NULL, 0, NULL); -#endif - - /* Wait for a client to connect */ - if ((client_fd = accept(server_fd, - (struct sockaddr *) &client_addr, &clnt_len)) < 0) - { - ret = SSL_ERROR_SOCK_SETUP_FAILURE; - goto error; - } - - /* we are ready to go */ - ssl_svr = ssl_server_new(ssl_svr_ctx, client_fd); - - do - { - while ((size = ssl_read(ssl_svr, &read_buf)) == SSL_OK); - - if (size < SSL_OK) /* got some alert or something nasty */ - { - printf("Server "); - ssl_display_error(size); - ret = size; - break; - } - else /* looks more promising */ - { - if (memcmp(read_buf, &basic_buf[offset], size) != 0) - { - ret = SSL_NOT_OK; - break; - } - } - - offset += size; - } while (offset < sizeof(basic_buf)); - - printf(ret == SSL_OK && offset == sizeof(basic_buf) ? - "SSL basic test passed\n" : - "SSL basic test failed\n"); - TTY_FLUSH(); - - ssl_free(ssl_svr); - SOCKET_CLOSE(server_fd); - SOCKET_CLOSE(client_fd); - -error: - ssl_ctx_free(ssl_svr_ctx); - return ret; -} - -#if !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING) -/************************************************************************** - * Multi-Threading Tests - * - **************************************************************************/ -#define NUM_THREADS 100 - -typedef struct -{ - SSL_CTX *ssl_clnt_ctx; - int port; - int thread_id; -} multi_t; - -void do_multi_clnt(multi_t *multi_data) -{ - int res = 1, client_fd, i; - SSL *ssl = NULL; - char tmp[5]; - - if ((client_fd = client_socket_init(multi_data->port)) < 0) - goto client_test_exit; - - sleep(1); - ssl = ssl_client_new(multi_data->ssl_clnt_ctx, client_fd, NULL, 0); - - if ((res = ssl_handshake_status(ssl))) - { - printf("Client "); - ssl_display_error(res); - goto client_test_exit; - } - - sprintf(tmp, "%d\n", multi_data->thread_id); - for (i = 0; i < 10; i++) - ssl_write(ssl, (uint8_t *)tmp, strlen(tmp)+1); - -client_test_exit: - ssl_free(ssl); - SOCKET_CLOSE(client_fd); - free(multi_data); -} - -void do_multi_svr(SSL *ssl) -{ - uint8_t *read_buf; - int *res_ptr = malloc(sizeof(int)); - int res; - - for (;;) - { - res = ssl_read(ssl, &read_buf); - - /* kill the client */ - if (res != SSL_OK) - { - if (res == SSL_ERROR_CONN_LOST) - { - SOCKET_CLOSE(ssl->client_fd); - ssl_free(ssl); - break; - } - else if (res > 0) - { - /* do nothing */ - } - else /* some problem */ - { - printf("Server "); - ssl_display_error(res); - goto error; - } - } - } - - res = SSL_OK; -error: - *res_ptr = res; - pthread_exit(res_ptr); -} - -int multi_thread_test(void) -{ - int server_fd = -1; - SSL_CTX *ssl_server_ctx; - SSL_CTX *ssl_clnt_ctx; - pthread_t clnt_threads[NUM_THREADS]; - pthread_t svr_threads[NUM_THREADS]; - int i, res = 0; - struct sockaddr_in client_addr; - socklen_t clnt_len = sizeof(client_addr); - - printf("Do multi-threading test (takes a minute)\n"); - - ssl_server_ctx = ssl_ctx_new(DEFAULT_SVR_OPTION, SSL_DEFAULT_SVR_SESS); - ssl_clnt_ctx = ssl_ctx_new(DEFAULT_CLNT_OPTION, SSL_DEFAULT_CLNT_SESS); - - if (ssl_obj_load(ssl_clnt_ctx, SSL_OBJ_X509_CACERT, - "../ssl/test/axTLS.ca_x509.cer", NULL)) - goto error; - - if ((server_fd = server_socket_init(&g_port)) < 0) - goto error; - - for (i = 0; i < NUM_THREADS; i++) - { - multi_t *multi_data = (multi_t *)malloc(sizeof(multi_t)); - multi_data->ssl_clnt_ctx = ssl_clnt_ctx; - multi_data->port = g_port; - multi_data->thread_id = i+1; - pthread_create(&clnt_threads[i], NULL, - (void *(*)(void *))do_multi_clnt, (void *)multi_data); - pthread_detach(clnt_threads[i]); - } - - for (i = 0; i < NUM_THREADS; i++) - { - SSL *ssl_svr; - int client_fd = accept(server_fd, - (struct sockaddr *)&client_addr, &clnt_len); - - if (client_fd < 0) - goto error; - - ssl_svr = ssl_server_new(ssl_server_ctx, client_fd); - - pthread_create(&svr_threads[i], NULL, - (void *(*)(void *))do_multi_svr, (void *)ssl_svr); - } - - /* make sure we've run all of the threads */ - for (i = 0; i < NUM_THREADS; i++) - { - void *thread_res; - pthread_join(svr_threads[i], &thread_res); - - if (*((int *)thread_res) != 0) - res = 1; - - free(thread_res); - } - - if (res) - goto error; - - printf("Multi-thread test passed (%d)\n", NUM_THREADS); -error: - ssl_ctx_free(ssl_server_ctx); - ssl_ctx_free(ssl_clnt_ctx); - SOCKET_CLOSE(server_fd); - return res; -} -#endif /* !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING) */ - -/************************************************************************** - * Header issue - * - **************************************************************************/ -static void do_header_issue(void) -{ - char axtls_buf[2048]; -#ifndef WIN32 - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); -#endif - sprintf(axtls_buf, "./axssl s_client -connect localhost:%d", g_port); - system(axtls_buf); -} - -static int header_issue(void) -{ - FILE *f = fopen("../ssl/test/header_issue.dat", "r"); - int server_fd = -1, client_fd = -1, ret = 1; - uint8_t buf[2048]; - int size = 0; - struct sockaddr_in client_addr; - socklen_t clnt_len = sizeof(client_addr); -#ifndef WIN32 - pthread_t thread; -#endif - - if (f == NULL || (server_fd = server_socket_init(&g_port)) < 0) - goto error; - -#ifndef WIN32 - pthread_create(&thread, NULL, - (void *(*)(void *))do_header_issue, NULL); - pthread_detach(thread); -#else - CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_header_issue, - NULL, 0, NULL); -#endif - if ((client_fd = accept(server_fd, - (struct sockaddr *) &client_addr, &clnt_len)) < 0) - { - ret = SSL_ERROR_SOCK_SETUP_FAILURE; - goto error; - } - - size = fread(buf, 1, sizeof(buf), f); - SOCKET_WRITE(client_fd, buf, size); - usleep(200000); - - ret = 0; -error: - fclose(f); - SOCKET_CLOSE(client_fd); - SOCKET_CLOSE(server_fd); - TTY_FLUSH(); - system("killall axssl"); - return ret; -} - -/************************************************************************** - * main() - * - **************************************************************************/ -int main(int argc, char *argv[]) -{ - int ret = 1; - BI_CTX *bi_ctx; - int fd; - -#ifdef WIN32 - WSADATA wsaData; - WORD wVersionRequested = MAKEWORD(2, 2); - WSAStartup(wVersionRequested, &wsaData); - fd = _open("test_result.txt", O_WRONLY|O_TEMPORARY|O_CREAT, _S_IWRITE); - dup2(fd, 2); /* write stderr to this file */ -#else - fd = open("/dev/null", O_WRONLY); /* write stderr to /dev/null */ - signal(SIGPIPE, SIG_IGN); /* ignore pipe errors */ - dup2(fd, 2); -#endif - - /* can't do testing in this mode */ -#if defined CONFIG_SSL_GENERATE_X509_CERT - printf("Error: Must compile with default key/certificates\n"); - exit(1); -#endif - - bi_ctx = bi_initialize(); - - if (AES_test(bi_ctx)) - { - printf("AES tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (RC4_test(bi_ctx)) - { - printf("RC4 tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (MD5_test(bi_ctx)) - { - printf("MD5 tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (SHA1_test(bi_ctx)) - { - printf("SHA1 tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (HMAC_test(bi_ctx)) - { - printf("HMAC tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (BIGINT_test(bi_ctx)) - { - printf("BigInt tests failed!\n"); - goto cleanup; - } - TTY_FLUSH(); - - bi_terminate(bi_ctx); - - if (RSA_test()) - { - printf("RSA tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (cert_tests()) - { - printf("CERT tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - -#if !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING) - if (multi_thread_test()) - goto cleanup; -#endif - - if (SSL_basic_test()) - goto cleanup; - - system("sh ../ssl/test/killopenssl.sh"); - - if (SSL_client_tests()) - goto cleanup; - - system("sh ../ssl/test/killopenssl.sh"); - - if (SSL_server_tests()) - goto cleanup; - - system("sh ../ssl/test/killopenssl.sh"); - - if (header_issue()) - { - printf("Header tests failed\n"); TTY_FLUSH(); - goto cleanup; - } - - ret = 0; /* all ok */ - printf("**** ALL TESTS PASSED ****\n"); TTY_FLUSH(); -cleanup: - - if (ret) - printf("Error: Some tests failed!\n"); - - close(fd); - return ret; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c.bak b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c.bak deleted file mode 100644 index ca9637f9ac..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/ssltest.c.bak +++ /dev/null @@ -1,1940 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * The testing of the crypto and ssl stuff goes here. Keeps the individual code - * modules from being uncluttered with test code. - * - * This is test code - I make no apologies for the quality! - */ - -#include -#include -#include -#include -#include -#include -#include - -#ifndef WIN32 -#include -#endif - -#include "ssl.h" - -#define DEFAULT_CERT "../ssl/test/axTLS.x509_512.cer" -#define DEFAULT_KEY "../ssl/test/axTLS.key_512" -//#define DEFAULT_SVR_OPTION SSL_DISPLAY_BYTES|SSL_DISPLAY_STATES -#define DEFAULT_SVR_OPTION 0 -#define DEFAULT_CLNT_OPTION 0 -//#define DEFAULT_CLNT_OPTION SSL_DISPLAY_BYTES|SSL_DISPLAY_STATES - -static int g_port = 19001; - -/************************************************************************** - * AES tests - * - * Run through a couple of the RFC3602 tests to verify that AES is correct. - **************************************************************************/ -#define TEST1_SIZE 16 -#define TEST2_SIZE 32 - -static int AES_test(BI_CTX *bi_ctx) -{ - AES_CTX aes_key; - int res = 1; - uint8_t key[TEST1_SIZE]; - uint8_t iv[TEST1_SIZE]; - - { - /* - Case #1: Encrypting 16 bytes (1 block) using AES-CBC - Key : 0x06a9214036b8a15b512e03d534120006 - IV : 0x3dafba429d9eb430b422da802c9fac41 - Plaintext : "Single block msg" - Ciphertext: 0xe353779c1079aeb82708942dbe77181a - - */ - char *in_str = "Single block msg"; - uint8_t ct[TEST1_SIZE]; - uint8_t enc_data[TEST1_SIZE]; - uint8_t dec_data[TEST1_SIZE]; - - bigint *key_bi = bi_str_import( - bi_ctx, "06A9214036B8A15B512E03D534120006"); - bigint *iv_bi = bi_str_import( - bi_ctx, "3DAFBA429D9EB430B422DA802C9FAC41"); - bigint *ct_bi = bi_str_import( - bi_ctx, "E353779C1079AEB82708942DBE77181A"); - bi_export(bi_ctx, key_bi, key, TEST1_SIZE); - bi_export(bi_ctx, iv_bi, iv, TEST1_SIZE); - bi_export(bi_ctx, ct_bi, ct, TEST1_SIZE); - - AES_set_key(&aes_key, key, iv, AES_MODE_128); - AES_cbc_encrypt(&aes_key, (const uint8_t *)in_str, - enc_data, sizeof(enc_data)); - if (memcmp(enc_data, ct, sizeof(ct))) - { - printf("Error: AES ENCRYPT #1 failed\n"); - goto end; - } - - AES_set_key(&aes_key, key, iv, AES_MODE_128); - AES_convert_key(&aes_key); - AES_cbc_decrypt(&aes_key, enc_data, dec_data, sizeof(enc_data)); - - if (memcmp(dec_data, in_str, sizeof(dec_data))) - { - printf("Error: AES DECRYPT #1 failed\n"); - goto end; - } - } - - { - /* - Case #2: Encrypting 32 bytes (2 blocks) using AES-CBC - Key : 0xc286696d887c9aa0611bbb3e2025a45a - IV : 0x562e17996d093d28ddb3ba695a2e6f58 - Plaintext : 0x000102030405060708090a0b0c0d0e0f - 101112131415161718191a1b1c1d1e1f - Ciphertext: 0xd296cd94c2cccf8a3a863028b5e1dc0a - 7586602d253cfff91b8266bea6d61ab1 - */ - uint8_t in_data[TEST2_SIZE]; - uint8_t ct[TEST2_SIZE]; - uint8_t enc_data[TEST2_SIZE]; - uint8_t dec_data[TEST2_SIZE]; - - bigint *in_bi = bi_str_import(bi_ctx, - "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"); - bigint *key_bi = bi_str_import( - bi_ctx, "C286696D887C9AA0611BBB3E2025A45A"); - bigint *iv_bi = bi_str_import( - bi_ctx, "562E17996D093D28DDB3BA695A2E6F58"); - bigint *ct_bi = bi_str_import(bi_ctx, - "D296CD94C2CCCF8A3A863028B5E1DC0A7586602D253CFFF91B8266BEA6D61AB1"); - bi_export(bi_ctx, in_bi, in_data, TEST2_SIZE); - bi_export(bi_ctx, key_bi, key, TEST1_SIZE); - bi_export(bi_ctx, iv_bi, iv, TEST1_SIZE); - bi_export(bi_ctx, ct_bi, ct, TEST2_SIZE); - - AES_set_key(&aes_key, key, iv, AES_MODE_128); - AES_cbc_encrypt(&aes_key, (const uint8_t *)in_data, - enc_data, sizeof(enc_data)); - - if (memcmp(enc_data, ct, sizeof(ct))) - { - printf("Error: ENCRYPT #2 failed\n"); - goto end; - } - - AES_set_key(&aes_key, key, iv, AES_MODE_128); - AES_convert_key(&aes_key); - AES_cbc_decrypt(&aes_key, enc_data, dec_data, sizeof(enc_data)); - if (memcmp(dec_data, in_data, sizeof(dec_data))) - { - printf("Error: DECRYPT #2 failed\n"); - goto end; - } - } - - res = 0; - printf("All AES tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * RC4 tests - * - * ARC4 tests vectors from OpenSSL (crypto/rc4/rc4test.c) - **************************************************************************/ -static const uint8_t keys[7][30]= -{ - {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}, - {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}, - {8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, - {4,0xef,0x01,0x23,0x45}, - {8,0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}, - {4,0xef,0x01,0x23,0x45}, -}; - -static const uint8_t data_len[7]={8,8,8,20,28,10}; -static uint8_t data[7][30]= -{ - {0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xff}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0xff}, - {0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0, - 0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0, - 0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0, - 0x12,0x34,0x56,0x78,0xff}, - {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff}, - {0}, -}; - -static const uint8_t output[7][30]= -{ - {0x75,0xb7,0x87,0x80,0x99,0xe0,0xc5,0x96,0x00}, - {0x74,0x94,0xc2,0xe7,0x10,0x4b,0x08,0x79,0x00}, - {0xde,0x18,0x89,0x41,0xa3,0x37,0x5d,0x3a,0x00}, - {0xd6,0xa1,0x41,0xa7,0xec,0x3c,0x38,0xdf, - 0xbd,0x61,0x5a,0x11,0x62,0xe1,0xc7,0xba, - 0x36,0xb6,0x78,0x58,0x00}, - {0x66,0xa0,0x94,0x9f,0x8a,0xf7,0xd6,0x89, - 0x1f,0x7f,0x83,0x2b,0xa8,0x33,0xc0,0x0c, - 0x89,0x2e,0xbe,0x30,0x14,0x3c,0xe2,0x87, - 0x40,0x01,0x1e,0xcf,0x00}, - {0xd6,0xa1,0x41,0xa7,0xec,0x3c,0x38,0xdf,0xbd,0x61,0x00}, - {0}, -}; - -static int RC4_test(BI_CTX *bi_ctx) -{ - int i, res = 1; - RC4_CTX s; - - for (i = 0; i < 6; i++) - { - RC4_setup(&s, &keys[i][1], keys[i][0]); - RC4_crypt(&s, data[i], data[i], data_len[i]); - - if (memcmp(data[i], output[i], data_len[i])) - { - printf("Error: RC4 CRYPT #%d failed\n", i); - goto end; - } - } - - res = 0; - printf("All RC4 tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * SHA1 tests - * - * Run through a couple of the RFC3174 tests to verify that SHA1 is correct. - **************************************************************************/ -static int SHA1_test(BI_CTX *bi_ctx) -{ - SHA1_CTX ctx; - uint8_t ct[SHA1_SIZE]; - uint8_t digest[SHA1_SIZE]; - int res = 1; - - { - const char *in_str = "abc"; - bigint *ct_bi = bi_str_import(bi_ctx, - "A9993E364706816ABA3E25717850C26C9CD0D89D"); - bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE); - - SHA1_Init(&ctx); - SHA1_Update(&ctx, (const uint8_t *)in_str, strlen(in_str)); - SHA1_Final(digest, &ctx); - - if (memcmp(digest, ct, sizeof(ct))) - { - printf("Error: SHA1 #1 failed\n"); - goto end; - } - } - - { - const char *in_str = - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; - bigint *ct_bi = bi_str_import(bi_ctx, - "84983E441C3BD26EBAAE4AA1F95129E5E54670F1"); - bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE); - - SHA1_Init(&ctx); - SHA1_Update(&ctx, (const uint8_t *)in_str, strlen(in_str)); - SHA1_Final(digest, &ctx); - - if (memcmp(digest, ct, sizeof(ct))) - { - printf("Error: SHA1 #2 failed\n"); - goto end; - } - } - - res = 0; - printf("All SHA1 tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * MD5 tests - * - * Run through a couple of the RFC1321 tests to verify that MD5 is correct. - **************************************************************************/ -static int MD5_test(BI_CTX *bi_ctx) -{ - MD5_CTX ctx; - uint8_t ct[MD5_SIZE]; - uint8_t digest[MD5_SIZE]; - int res = 1; - - { - const char *in_str = "abc"; - bigint *ct_bi = bi_str_import(bi_ctx, - "900150983CD24FB0D6963F7D28E17F72"); - bi_export(bi_ctx, ct_bi, ct, MD5_SIZE); - - MD5_Init(&ctx); - MD5_Update(&ctx, (const uint8_t *)in_str, strlen(in_str)); - MD5_Final(digest, &ctx); - - if (memcmp(digest, ct, sizeof(ct))) - { - printf("Error: MD5 #1 failed\n"); - goto end; - } - } - - { - const char *in_str = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - bigint *ct_bi = bi_str_import( - bi_ctx, "D174AB98D277D9F5A5611C2C9F419D9F"); - bi_export(bi_ctx, ct_bi, ct, MD5_SIZE); - - MD5_Init(&ctx); - MD5_Update(&ctx, (const uint8_t *)in_str, strlen(in_str)); - MD5_Final(digest, &ctx); - - if (memcmp(digest, ct, sizeof(ct))) - { - printf("Error: MD5 #2 failed\n"); - goto end; - } - } - res = 0; - printf("All MD5 tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * HMAC tests - * - * Run through a couple of the RFC2202 tests to verify that HMAC is correct. - **************************************************************************/ -static int HMAC_test(BI_CTX *bi_ctx) -{ - uint8_t key[SHA1_SIZE]; - uint8_t ct[SHA1_SIZE]; - uint8_t dgst[SHA1_SIZE]; - int res = 1; - const char *key_str; - - const char *data_str = "Hi There"; - bigint *key_bi = bi_str_import(bi_ctx, "0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B"); - bigint *ct_bi = bi_str_import(bi_ctx, "9294727A3638BB1C13F48EF8158BFC9D"); - bi_export(bi_ctx, key_bi, key, MD5_SIZE); - bi_export(bi_ctx, ct_bi, ct, MD5_SIZE); - hmac_md5((const uint8_t *)data_str, 8, key, MD5_SIZE, dgst); - if (memcmp(dgst, ct, MD5_SIZE)) - { - printf("HMAC MD5 #1 failed\n"); - goto end; - } - - data_str = "what do ya want for nothing?"; - key_str = "Jefe"; - ct_bi = bi_str_import(bi_ctx, "750C783E6AB0B503EAA86E310A5DB738"); - bi_export(bi_ctx, ct_bi, ct, MD5_SIZE); - hmac_md5((const uint8_t *)data_str, 28, (const uint8_t *)key_str, 4, dgst); - if (memcmp(dgst, ct, MD5_SIZE)) - { - printf("HMAC MD5 #2 failed\n"); - goto end; - } - - data_str = "Hi There"; - key_bi = bi_str_import(bi_ctx, "0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B"); - bi_export(bi_ctx, key_bi, key, SHA1_SIZE); - ct_bi = bi_str_import(bi_ctx, "B617318655057264E28BC0B6FB378C8EF146BE00"); - bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE); - - hmac_sha1((const uint8_t *)data_str, 8, - (const uint8_t *)key, SHA1_SIZE, dgst); - if (memcmp(dgst, ct, SHA1_SIZE)) - { - printf("HMAC SHA1 #1 failed\n"); - goto end; - } - - data_str = "what do ya want for nothing?"; - key_str = "Jefe"; - ct_bi = bi_str_import(bi_ctx, "EFFCDF6AE5EB2FA2D27416D5F184DF9C259A7C79"); - bi_export(bi_ctx, ct_bi, ct, SHA1_SIZE); - - hmac_sha1((const uint8_t *)data_str, 28, (const uint8_t *)key_str, 5, dgst); - if (memcmp(dgst, ct, SHA1_SIZE)) - { - printf("HMAC SHA1 failed\n"); - exit(1); - } - - res = 0; - printf("All HMAC tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * BIGINT tests - * - **************************************************************************/ -static int BIGINT_test(BI_CTX *ctx) -{ - int res = 1; - bigint *bi_data, *bi_exp, *bi_res; - const char *expnt, *plaintext, *mod; - uint8_t compare[MAX_KEY_BYTE_SIZE]; - - /** - * 512 bit key - */ - plaintext = /* 64 byte number */ - "01aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee"; - - mod = "C30773C8ABE09FCC279EE0E5343370DE" - "8B2FFDB6059271E3005A7CEEF0D35E0A" - "1F9915D95E63560836CC2EB2C289270D" - "BCAE8CAF6F5E907FC2759EE220071E1B"; - - expnt = "A1E556CD1738E10DF539E35101334E97" - "BE8D391C57A5C89A7AD9A2EA2ACA1B3D" - "F3140F5091CC535CBAA47CEC4159EE1F" - "B6A3661AFF1AB758426EAB158452A9B9"; - - bi_data = bi_import(ctx, (uint8_t *)plaintext, strlen(plaintext)); - bi_exp = int_to_bi(ctx, 0x10001); - bi_set_mod(ctx, bi_str_import(ctx, mod), 0); - bi_res = bi_mod_power(ctx, bi_data, bi_exp); - - bi_data = bi_res; /* resuse again - see if we get the original */ - - bi_exp = bi_str_import(ctx, expnt); - bi_res = bi_mod_power(ctx, bi_data, bi_exp); - bi_free_mod(ctx, 0); - - bi_export(ctx, bi_res, compare, 64); - if (memcmp(plaintext, compare, 64) != 0) - goto end; - - printf("All BIGINT tests passed\n"); - res = 0; - -end: - return res; -} - -/************************************************************************** - * RSA tests - * - * Use the results from openssl to verify PKCS1 etc - **************************************************************************/ -static int RSA_test(void) -{ - int res = 1; - const char *plaintext = /* 128 byte hex number */ - "1aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeeee2" - "1aaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccdddddddddddddeeeeeeeee2\012"; - uint8_t enc_data[128], dec_data[128]; - RSA_CTX *rsa_ctx = NULL; - BI_CTX *bi_ctx; - bigint *plaintext_bi; - bigint *enc_data_bi, *dec_data_bi; - uint8_t enc_data2[128], dec_data2[128]; - int size; - int len; - uint8_t *buf; - - /* extract the private key elements */ - len = get_file("../ssl/test/axTLS.key_1024", &buf); - if (asn1_get_private_key(buf, len, &rsa_ctx) < 0) - { - goto end; - } - - free(buf); - bi_ctx = rsa_ctx->bi_ctx; - plaintext_bi = bi_import(bi_ctx, - (const uint8_t *)plaintext, strlen(plaintext)); - - /* basic rsa encrypt */ - enc_data_bi = RSA_public(rsa_ctx, plaintext_bi); - bi_export(bi_ctx, bi_copy(enc_data_bi), enc_data, sizeof(enc_data)); - - /* basic rsa decrypt */ - dec_data_bi = RSA_private(rsa_ctx, enc_data_bi); - bi_export(bi_ctx, dec_data_bi, dec_data, sizeof(dec_data)); - - if (memcmp(dec_data, plaintext, strlen(plaintext))) - { - printf("Error: DECRYPT #1 failed\n"); - goto end; - } - - RSA_encrypt(rsa_ctx, (const uint8_t *)"abc", 3, enc_data2, 0); - size = RSA_decrypt(rsa_ctx, enc_data2, dec_data2, 1); - if (memcmp("abc", dec_data2, 3)) - { - printf("Error: ENCRYPT/DECRYPT #2 failed\n"); - goto end; - } - - RSA_free(rsa_ctx); - res = 0; - printf("All RSA tests passed\n"); - -end: - return res; -} - -/************************************************************************** - * Cert Testing - * - **************************************************************************/ -static int cert_tests(void) -{ - int res = -1, len; - X509_CTX *x509_ctx; - SSL_CTX *ssl_ctx; - uint8_t *buf; - - /* check a bunch of 3rd party certificates */ - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/microsoft.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0) - { - printf("Cert #1\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/thawte.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0) - { - printf("Cert #2\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/deutsche_telecom.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0) - { - printf("Cert #3\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/equifax.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) < 0) - { - printf("Cert #4\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/gnutls.cer", &buf); - if ((res = add_cert(ssl_ctx, buf, len)) < 0) - { - printf("Cert #5\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/socgen.cer", &buf); - if ((res = add_cert(ssl_ctx, buf, len)) < 0) - { - printf("Cert #6\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - len = get_file("../ssl/test/verisign.x509_ca", &buf); - if ((res = add_cert_auth(ssl_ctx, buf, len)) <0) - { - printf("Cert #7\n"); - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - free(buf); - - if (get_file("../ssl/test/verisign.x509_my_cert", &buf) < 0 || - x509_new(buf, &len, &x509_ctx)) - { - printf("Cert #8\n"); - ssl_display_error(res); - goto bad_cert; - } - - x509_free(x509_ctx); - free(buf); - - ssl_ctx = ssl_ctx_new(0, 0); - if ((res = ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CERT, "../ssl/test/ms_iis.cer", NULL)) != SSL_OK) - { - ssl_display_error(res); - goto bad_cert; - } - - ssl_ctx_free(ssl_ctx); - res = 0; /* all ok */ - printf("All Certificate tests passed\n"); - -bad_cert: - if (res) - printf("Error: A certificate test failed\n"); - return res; -} - -/** - * init a server socket. - */ -static int server_socket_init(int *port) -{ - struct sockaddr_in serv_addr; - int server_fd; - char yes = 1; - - /* Create socket for incoming connections */ - if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) - { - return -1; - } - - setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)); - -go_again: - /* Construct local address structure */ - memset(&serv_addr, 0, sizeof(serv_addr)); /* Zero out structure */ - serv_addr.sin_family = AF_INET; /* Internet address family */ - serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* Any incoming interface */ - serv_addr.sin_port = htons(*port); /* Local port */ - - /* Bind to the local address */ - if (bind(server_fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) - { - (*port)++; - goto go_again; - } - /* Mark the socket so it will listen for incoming connections */ - if (listen(server_fd, 3000) < 0) - { - return -1; - } - - return server_fd; -} - -/** - * init a client socket. - */ -static int client_socket_init(uint16_t port) -{ - struct sockaddr_in address; - int client_fd; - - address.sin_family = AF_INET; - address.sin_port = htons(port); - address.sin_addr.s_addr = inet_addr("127.0.0.1"); - client_fd = socket(AF_INET, SOCK_STREAM, 0); - if (connect(client_fd, (struct sockaddr *)&address, sizeof(address)) < 0) - { - perror("socket"); - SOCKET_CLOSE(client_fd); - client_fd = -1; - } - - return client_fd; -} - -/************************************************************************** - * SSL Server Testing - * - **************************************************************************/ -typedef struct -{ - /* not used as yet */ - int dummy; -} SVR_CTX; - -typedef struct -{ - const char *testname; - const char *openssl_option; -} client_t; - -static void do_client(client_t *clnt) -{ - char openssl_buf[2048]; - - /* make sure the main thread goes first */ - sleep(0); - - /* show the session ids in the reconnect test */ - if (strcmp(clnt->testname, "Session Reuse") == 0) - { - sprintf(openssl_buf, "echo \"hello client\" | openssl s_client " - "-connect localhost:%d %s 2>&1 | grep \"Session-ID:\"", - g_port, clnt->openssl_option); - } - else - { - sprintf(openssl_buf, "echo \"hello client\" | openssl s_client " -#ifdef WIN32 - "-connect localhost:%d -quiet %s", -#else - "-connect localhost:%d -quiet %s > /dev/null 2>&1", -#endif - g_port, clnt->openssl_option); - } - - system(openssl_buf); -} - -static int SSL_server_test( - const char *testname, - const char *openssl_option, - const char *device_cert, - const char *product_cert, - const char *private_key, - const char *ca_cert, - const char *password, - int axolotls_option) -{ - int server_fd, ret = 0; - SSL_CTX *ssl_ctx = NULL; - struct sockaddr_in client_addr; - uint8_t *read_buf; - socklen_t clnt_len = sizeof(client_addr); - client_t client_data; -#ifndef WIN32 - pthread_t thread; -#endif - g_port++; - - client_data.testname = testname; - client_data.openssl_option = openssl_option; - - if ((server_fd = server_socket_init(&g_port)) < 0) - goto error; - - if (private_key) - { - axolotls_option |= SSL_NO_DEFAULT_KEY; - } - - if ((ssl_ctx = ssl_ctx_new(axolotls_option, SSL_DEFAULT_SVR_SESS)) == NULL) - { - ret = SSL_ERROR_INVALID_KEY; - goto error; - } - - if (private_key) - { - int obj_type = SSL_OBJ_RSA_KEY; - - if (strstr(private_key, ".p8")) - obj_type = SSL_OBJ_PKCS8; - else if (strstr(private_key, ".p12")) - obj_type = SSL_OBJ_PKCS12; - - if (ssl_obj_load(ssl_ctx, obj_type, private_key, password)) - { - ret = SSL_ERROR_INVALID_KEY; - goto error; - } - } - - if (device_cert) /* test chaining */ - { - if ((ret = ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CERT, device_cert, NULL)) != SSL_OK) - goto error; - } - - if (product_cert) /* test chaining */ - { - if ((ret = ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CERT, product_cert, NULL)) != SSL_OK) - goto error; - } - - if (ca_cert) /* test adding certificate authorities */ - { - if ((ret = ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CACERT, ca_cert, NULL)) != SSL_OK) - goto error; - } - -#ifndef WIN32 - pthread_create(&thread, NULL, - (void *(*)(void *))do_client, (void *)&client_data); - pthread_detach(thread); -#else - CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_client, - (LPVOID)&client_data, 0, NULL); -#endif - - for (;;) - { - int client_fd, size = 0; - SSL *ssl; - - /* Wait for a client to connect */ - if ((client_fd = accept(server_fd, - (struct sockaddr *)&client_addr, &clnt_len)) < 0) - { - ret = SSL_ERROR_SOCK_SETUP_FAILURE; - goto error; - } - - /* we are ready to go */ - ssl = ssl_server_new(ssl_ctx, client_fd); - while ((size = ssl_read(ssl, &read_buf)) == SSL_OK); - SOCKET_CLOSE(client_fd); - - if (size < SSL_OK) /* got some alert or something nasty */ - { - ret = size; - - if (ret == SSL_ERROR_CONN_LOST) - { - ret = SSL_OK; - continue; - } - - break; /* we've got a problem */ - } - else /* looks more promising */ - { - if (strstr("hello client", (char *)read_buf) == NULL) - { - printf("SSL server test \"%s\" passed\n", testname); - TTY_FLUSH(); - ret = 0; - break; - } - } - - ssl_free(ssl); - } - - SOCKET_CLOSE(server_fd); - -error: - ssl_ctx_free(ssl_ctx); - return ret; -} - -int SSL_server_tests(void) -{ - int ret = -1; - struct stat stat_buf; - SVR_CTX svr_test_ctx; - memset(&svr_test_ctx, 0, sizeof(SVR_CTX)); - - printf("### starting server tests\n"); TTY_FLUSH(); - - /* Go through the algorithms */ - - /* - * TLS1 client hello - */ - if ((ret = SSL_server_test("TLSv1", "-cipher RC4-SHA -tls1", - NULL, NULL, NULL, NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES128-SHA - */ - if ((ret = SSL_server_test("AES256-SHA", "-cipher AES128-SHA", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES256-SHA - */ - if ((ret = SSL_server_test("AES256-SHA", "-cipher AES128-SHA", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * RC4-SHA - */ - if ((ret = SSL_server_test("RC4-SHA", "-cipher RC4-SHA", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * RC4-MD5 - */ - if ((ret = SSL_server_test("RC4-MD5", "-cipher RC4-MD5", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * Session Reuse - * all the session id's should match for session resumption. - */ - if ((ret = SSL_server_test("Session Reuse", - "-cipher RC4-SHA -reconnect", - DEFAULT_CERT, NULL, DEFAULT_KEY, NULL, NULL, - DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * 512 bit RSA key - */ - if ((ret = SSL_server_test("512 bit key", "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_512.cer", NULL, - "../ssl/test/axTLS.key_512", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * 1024 bit RSA key (check certificate chaining) - */ - if ((ret = SSL_server_test("1024 bit key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_device.cer", - "../ssl/test/axTLS.x509_512.cer", - "../ssl/test/axTLS.device_key", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * 2048 bit RSA key - */ - if ((ret = SSL_server_test("2048 bit key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_2048.cer", NULL, - "../ssl/test/axTLS.key_2048", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * 4096 bit RSA key - */ - if ((ret = SSL_server_test("4096 bit key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_4096.cer", NULL, - "../ssl/test/axTLS.key_4096", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * Client Verification - */ - if ((ret = SSL_server_test("Client Verification", - "-cipher RC4-SHA -tls1 " - "-cert ../ssl/test/axTLS.x509_2048.pem " - "-key ../ssl/test/axTLS.key_2048.pem ", - NULL, NULL, NULL, - "../ssl/test/axTLS.ca_x509.cer", NULL, - DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION))) - goto cleanup; - - /* this test should fail */ - if (stat("../ssl/test/axTLS.x509_bad_before.pem", &stat_buf) >= 0) - { - if ((ret = SSL_server_test("Bad Before Cert", - "-cipher RC4-SHA -tls1 " - "-cert ../ssl/test/axTLS.x509_bad_before.pem " - "-key ../ssl/test/axTLS.key_512.pem ", - NULL, NULL, NULL, - "../ssl/test/axTLS.ca_x509.cer", NULL, - DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) != - SSL_X509_ERROR(X509_VFY_ERROR_NOT_YET_VALID)) - goto cleanup; - - printf("SSL server test \"%s\" passed\n", "Bad Before Cert"); - TTY_FLUSH(); - ret = 0; /* is ok */ - } - - /* this test should fail */ - if ((ret = SSL_server_test("Bad After Cert", - "-cipher RC4-SHA -tls1 " - "-cert ../ssl/test/axTLS.x509_bad_after.pem " - "-key ../ssl/test/axTLS.key_512.pem ", - NULL, NULL, NULL, - "../ssl/test/axTLS.ca_x509.cer", NULL, - DEFAULT_SVR_OPTION|SSL_CLIENT_AUTHENTICATION)) != - SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED)) - goto cleanup; - - printf("SSL server test \"%s\" passed\n", "Bad After Cert"); - TTY_FLUSH(); - - /* - * Key in PEM format - */ - if ((ret = SSL_server_test("Key in PEM format", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_512.cer", NULL, - "../ssl/test/axTLS.key_512.pem", NULL, - NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * Cert in PEM format - */ - if ((ret = SSL_server_test("Cert in PEM format", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_512.pem", NULL, - "../ssl/test/axTLS.key_512.pem", NULL, - NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * Cert chain in PEM format - */ - if ((ret = SSL_server_test("Cert chain in PEM format", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_device.pem", - NULL, "../ssl/test/axTLS.device_key.pem", - "../ssl/test/axTLS.ca_x509.pem", NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES128 Encrypted key - */ - if ((ret = SSL_server_test("AES128 encrypted key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_aes128.pem", NULL, - "../ssl/test/axTLS.key_aes128.pem", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES256 Encrypted key - */ - if ((ret = SSL_server_test("AES256 encrypted key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_aes256.pem", NULL, - "../ssl/test/axTLS.key_aes256.pem", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * AES128 Encrypted invalid key - */ - if ((ret = SSL_server_test("AES128 encrypted invalid key", - "-cipher RC4-SHA", - "../ssl/test/axTLS.x509_aes128.pem", NULL, - "../ssl/test/axTLS.key_aes128.pem", - NULL, "xyz", DEFAULT_SVR_OPTION)) != SSL_ERROR_INVALID_KEY) - goto cleanup; - - printf("SSL server test \"%s\" passed\n", "AES128 encrypted invalid key"); - TTY_FLUSH(); - - /* - * PKCS#8 key (encrypted) - */ - if ((ret = SSL_server_test("pkcs#8 encrypted", "-cipher RC4-SHA", - DEFAULT_CERT, NULL, "../ssl/test/axTLS.encrypted.p8", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * PKCS#8 key (unencrypted) - */ - if ((ret = SSL_server_test("pkcs#8 unencrypted", "-cipher RC4-SHA", - DEFAULT_CERT, NULL, "../ssl/test/axTLS.unencrypted.p8", - NULL, NULL, DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * PKCS#12 key/certificate - */ - if ((ret = SSL_server_test("pkcs#12 with CA", "-cipher RC4-SHA", - NULL, NULL, "../ssl/test/axTLS.withCA.p12", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - if ((ret = SSL_server_test("pkcs#12 no CA", "-cipher RC4-SHA", - DEFAULT_CERT, NULL, "../ssl/test/axTLS.withoutCA.p12", - NULL, "abcd", DEFAULT_SVR_OPTION))) - goto cleanup; - - /* - * - */ - - ret = 0; - -cleanup: - if (ret) - { - printf("Error: A server test failed\n"); - ssl_display_error(ret); - exit(1); - } - else - { - printf("All server tests passed\n"); TTY_FLUSH(); - } - - return ret; -} - -/************************************************************************** - * SSL Client Testing - * - **************************************************************************/ -typedef struct -{ - uint8_t session_id[SSL_SESSION_ID_SIZE]; -#ifndef WIN32 - pthread_t server_thread; -#endif - int start_server; - int stop_server; - int do_reneg; -} CLNT_SESSION_RESUME_CTX; - -typedef struct -{ - const char *testname; - const char *openssl_option; -} server_t; - -static void do_server(server_t *svr) -{ - char openssl_buf[2048]; -#ifndef WIN32 - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); -#endif - sprintf(openssl_buf, "openssl s_server -tls1 " - "-accept %d -quiet %s ", g_port, svr->openssl_option); - system(openssl_buf); -} - -static int SSL_client_test( - const char *test, - SSL_CTX **ssl_ctx, - const char *openssl_option, - CLNT_SESSION_RESUME_CTX *sess_resume, - uint32_t client_options, - const char *private_key, - const char *password, - const char *cert) -{ - server_t server_data; - SSL *ssl = NULL; - int client_fd = -1; - uint8_t *session_id = NULL; - int ret = 1; -#ifndef WIN32 - pthread_t thread; -#endif - - if (sess_resume == NULL || sess_resume->start_server) - { - g_port++; - server_data.openssl_option = openssl_option; - -#ifndef WIN32 - pthread_create(&thread, NULL, - (void *(*)(void *))do_server, (void *)&server_data); - pthread_detach(thread); -#else - CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_server, - (LPVOID)&server_data, 0, NULL); -#endif - } - - usleep(200000); /* allow server to start */ - - if (*ssl_ctx == NULL) - { - if (private_key) - { - client_options |= SSL_NO_DEFAULT_KEY; - } - - if ((*ssl_ctx = ssl_ctx_new( - client_options, SSL_DEFAULT_CLNT_SESS)) == NULL) - { - ret = SSL_ERROR_INVALID_KEY; - goto client_test_exit; - } - - if (private_key) - { - int obj_type = SSL_OBJ_RSA_KEY; - - if (strstr(private_key, ".p8")) - obj_type = SSL_OBJ_PKCS8; - else if (strstr(private_key, ".p12")) - obj_type = SSL_OBJ_PKCS12; - - if (ssl_obj_load(*ssl_ctx, obj_type, private_key, password)) - { - ret = SSL_ERROR_INVALID_KEY; - goto client_test_exit; - } - } - - if (cert) - { - if ((ret = ssl_obj_load(*ssl_ctx, - SSL_OBJ_X509_CERT, cert, NULL)) != SSL_OK) - { - printf("could not add cert %s (%d)\n", cert, ret); - TTY_FLUSH(); - goto client_test_exit; - } - } - - if (ssl_obj_load(*ssl_ctx, SSL_OBJ_X509_CACERT, - "../ssl/test/axTLS.ca_x509.cer", NULL)) - { - printf("could not add cert auth\n"); TTY_FLUSH(); - goto client_test_exit; - } - } - - if (sess_resume && !sess_resume->start_server) - { - session_id = sess_resume->session_id; - } - - if ((client_fd = client_socket_init(g_port)) < 0) - { - printf("could not start socket on %d\n", g_port); TTY_FLUSH(); - goto client_test_exit; - } - - ssl = ssl_client_new(*ssl_ctx, client_fd, session_id, sizeof(session_id)); - - /* check the return status */ - if ((ret = ssl_handshake_status(ssl))) - goto client_test_exit; - - /* renegotiate client */ - if (sess_resume && sess_resume->do_reneg) - { - if (ssl_renegotiate(ssl) < 0) - goto client_test_exit; - } - - if (sess_resume) - { - memcpy(sess_resume->session_id, - ssl_get_session_id(ssl), SSL_SESSION_ID_SIZE); - } - - if (IS_SET_SSL_FLAG(SSL_SERVER_VERIFY_LATER) && - (ret = ssl_verify_cert(ssl))) - { - goto client_test_exit; - } - - ssl_write(ssl, (uint8_t *)"hello world\n", 13); - if (sess_resume) - { - const uint8_t *sess_id = ssl_get_session_id(ssl); - int i; - - printf(" Session-ID: "); - for (i = 0; i < SSL_SESSION_ID_SIZE; i++) - { - printf("%02X", sess_id[i]); - } - printf("\n"); - TTY_FLUSH(); - } - - ret = 0; - -client_test_exit: - ssl_free(ssl); - SOCKET_CLOSE(client_fd); - usleep(200000); /* allow openssl to say something */ - - if (sess_resume) - { - if (sess_resume->stop_server) - { - ssl_ctx_free(*ssl_ctx); - *ssl_ctx = NULL; -#ifndef WIN32 - pthread_cancel(sess_resume->server_thread); -#endif - } - else if (sess_resume->start_server) - { -#ifndef WIN32 - sess_resume->server_thread = thread; -#endif - } - } - else - { - ssl_ctx_free(*ssl_ctx); - *ssl_ctx = NULL; -#ifndef WIN32 - pthread_cancel(thread); -#endif - } - - if (ret == 0) - { - printf("SSL client test \"%s\" passed\n", test); - TTY_FLUSH(); - } - - return ret; -} - -int SSL_client_tests(void) -{ - int ret = -1; - SSL_CTX *ssl_ctx = NULL; - CLNT_SESSION_RESUME_CTX sess_resume; - memset(&sess_resume, 0, sizeof(CLNT_SESSION_RESUME_CTX)); - - sess_resume.start_server = 1; - printf("### starting client tests\n"); - - if ((ret = SSL_client_test("512 bit key", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_512.pem " - "-key ../ssl/test/axTLS.key_512.pem", &sess_resume, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - /* all the session id's should match for session resumption */ - sess_resume.start_server = 0; - if ((ret = SSL_client_test("Client session resumption #1", - &ssl_ctx, NULL, &sess_resume, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - sess_resume.do_reneg = 1; - if ((ret = SSL_client_test("Client renegotiation", - &ssl_ctx, NULL, &sess_resume, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - sess_resume.do_reneg = 0; - - sess_resume.stop_server = 1; - if ((ret = SSL_client_test("Client session resumption #2", - &ssl_ctx, NULL, &sess_resume, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - if ((ret = SSL_client_test("1024 bit key", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_1024.pem " - "-key ../ssl/test/axTLS.key_1024.pem", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - if ((ret = SSL_client_test("2048 bit key", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_2048.pem " - "-key ../ssl/test/axTLS.key_2048.pem", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - if ((ret = SSL_client_test("4096 bit key", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_4096.pem " - "-key ../ssl/test/axTLS.key_4096.pem", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - if ((ret = SSL_client_test("Server cert chaining", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_device.pem " - "-key ../ssl/test/axTLS.device_key.pem " - "-CAfile ../ssl/test/axTLS.x509_512.pem ", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL))) - goto cleanup; - - /* Check the server can verify the client */ - if ((ret = SSL_client_test("Client peer authentication", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_2048.pem " - "-key ../ssl/test/axTLS.key_2048.pem " - "-CAfile ../ssl/test/axTLS.ca_x509.pem " - "-verify 1 ", NULL, DEFAULT_CLNT_OPTION, - "../ssl/test/axTLS.key_1024", NULL, - "../ssl/test/axTLS.x509_1024.cer"))) - goto cleanup; - - /* Should get an "ERROR" from openssl (as the handshake fails as soon as - * the certificate verification fails) */ - if ((ret = SSL_client_test("Error: Expired cert (verify now)", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_bad_after.pem " - "-key ../ssl/test/axTLS.key_512.pem", NULL, - DEFAULT_CLNT_OPTION, NULL, NULL, NULL)) != - SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED)) - { - printf("*** Error: %d\n", ret); - goto cleanup; - } - - printf("SSL client test \"Expired cert (verify now)\" passed\n"); - - /* There is no "ERROR" from openssl */ - if ((ret = SSL_client_test("Error: Expired cert (verify later)", - &ssl_ctx, - "-cert ../ssl/test/axTLS.x509_bad_after.pem " - "-key ../ssl/test/axTLS.key_512.pem", NULL, - DEFAULT_CLNT_OPTION|SSL_SERVER_VERIFY_LATER, NULL, - NULL, NULL)) != SSL_X509_ERROR(X509_VFY_ERROR_EXPIRED)) - { - printf("*** Error: %d\n", ret); - goto cleanup; - } - - printf("SSL client test \"Expired cert (verify later)\" passed\n"); - ret = 0; - -cleanup: - if (ret) - { - ssl_display_error(ret); - printf("Error: A client test failed\n"); - exit(1); - } - else - { - printf("All client tests passed\n"); TTY_FLUSH(); - } - - return ret; -} - -/************************************************************************** - * SSL Basic Testing (test a big packet handshake) - * - **************************************************************************/ -static uint8_t basic_buf[256*1024]; - -static void do_basic(void) -{ - int client_fd; - SSL *ssl_clnt; - SSL_CTX *ssl_clnt_ctx = ssl_ctx_new( - DEFAULT_CLNT_OPTION, SSL_DEFAULT_CLNT_SESS); - usleep(200000); /* allow server to start */ - - if ((client_fd = client_socket_init(g_port)) < 0) - goto error; - - if (ssl_obj_load(ssl_clnt_ctx, SSL_OBJ_X509_CACERT, - "../ssl/test/axTLS.ca_x509.cer", NULL)) - goto error; - - ssl_clnt = ssl_client_new(ssl_clnt_ctx, client_fd, NULL, 0); - - /* check the return status */ - if (ssl_handshake_status(ssl_clnt) < 0) - { - printf("YA YA\n"); - ssl_display_error(ssl_handshake_status(ssl_clnt)); - goto error; - } - - ssl_write(ssl_clnt, basic_buf, sizeof(basic_buf)); - ssl_free(ssl_clnt); - -error: - ssl_ctx_free(ssl_clnt_ctx); - SOCKET_CLOSE(client_fd); - - /* exit this thread */ -} - -static int SSL_basic_test(void) -{ - int server_fd, client_fd, ret = 0, size = 0, offset = 0; - SSL_CTX *ssl_svr_ctx = NULL; - struct sockaddr_in client_addr; - uint8_t *read_buf; - socklen_t clnt_len = sizeof(client_addr); - SSL *ssl_svr; -#ifndef WIN32 - pthread_t thread; -#endif - memset(basic_buf, 0xA5, sizeof(basic_buf)/2); - memset(&basic_buf[sizeof(basic_buf)/2], 0x5A, sizeof(basic_buf)/2); - - if ((server_fd = server_socket_init(&g_port)) < 0) - goto error; - - ssl_svr_ctx = ssl_ctx_new(DEFAULT_SVR_OPTION, SSL_DEFAULT_SVR_SESS); - -#ifndef WIN32 - pthread_create(&thread, NULL, - (void *(*)(void *))do_basic, NULL); - pthread_detach(thread); -#else - CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_basic, NULL, 0, NULL); -#endif - - /* Wait for a client to connect */ - if ((client_fd = accept(server_fd, - (struct sockaddr *) &client_addr, &clnt_len)) < 0) - { - ret = SSL_ERROR_SOCK_SETUP_FAILURE; - goto error; - } - - /* we are ready to go */ - ssl_svr = ssl_server_new(ssl_svr_ctx, client_fd); - - do - { - while ((size = ssl_read(ssl_svr, &read_buf)) == SSL_OK); - - if (size < SSL_OK) /* got some alert or something nasty */ - { - printf("Server "); - ssl_display_error(size); - ret = size; - break; - } - else /* looks more promising */ - { - if (memcmp(read_buf, &basic_buf[offset], size) != 0) - { - ret = SSL_NOT_OK; - break; - } - } - - offset += size; - } while (offset < sizeof(basic_buf)); - - printf(ret == SSL_OK && offset == sizeof(basic_buf) ? - "SSL basic test passed\n" : - "SSL basic test failed\n"); - TTY_FLUSH(); - - ssl_free(ssl_svr); - SOCKET_CLOSE(server_fd); - SOCKET_CLOSE(client_fd); - -error: - ssl_ctx_free(ssl_svr_ctx); - return ret; -} - -#if !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING) -/************************************************************************** - * Multi-Threading Tests - * - **************************************************************************/ -#define NUM_THREADS 100 - -typedef struct -{ - SSL_CTX *ssl_clnt_ctx; - int port; - int thread_id; -} multi_t; - -void do_multi_clnt(multi_t *multi_data) -{ - int res = 1, client_fd, i; - SSL *ssl = NULL; - char tmp[5]; - - if ((client_fd = client_socket_init(multi_data->port)) < 0) - goto client_test_exit; - - sleep(1); - ssl = ssl_client_new(multi_data->ssl_clnt_ctx, client_fd, NULL, 0); - - if ((res = ssl_handshake_status(ssl))) - { - printf("Client "); - ssl_display_error(res); - goto client_test_exit; - } - - sprintf(tmp, "%d\n", multi_data->thread_id); - for (i = 0; i < 10; i++) - ssl_write(ssl, (uint8_t *)tmp, strlen(tmp)+1); - -client_test_exit: - ssl_free(ssl); - SOCKET_CLOSE(client_fd); - free(multi_data); -} - -void do_multi_svr(SSL *ssl) -{ - uint8_t *read_buf; - int *res_ptr = malloc(sizeof(int)); - int res; - - for (;;) - { - res = ssl_read(ssl, &read_buf); - - /* kill the client */ - if (res != SSL_OK) - { - if (res == SSL_ERROR_CONN_LOST) - { - SOCKET_CLOSE(ssl->client_fd); - ssl_free(ssl); - break; - } - else if (res > 0) - { - /* do nothing */ - } - else /* some problem */ - { - printf("Server "); - ssl_display_error(res); - goto error; - } - } - } - - res = SSL_OK; -error: - *res_ptr = res; - pthread_exit(res_ptr); -} - -int multi_thread_test(void) -{ - int server_fd = -1; - SSL_CTX *ssl_server_ctx; - SSL_CTX *ssl_clnt_ctx; - pthread_t clnt_threads[NUM_THREADS]; - pthread_t svr_threads[NUM_THREADS]; - int i, res = 0; - struct sockaddr_in client_addr; - socklen_t clnt_len = sizeof(client_addr); - - printf("Do multi-threading test (takes a minute)\n"); - - ssl_server_ctx = ssl_ctx_new(DEFAULT_SVR_OPTION, SSL_DEFAULT_SVR_SESS); - ssl_clnt_ctx = ssl_ctx_new(DEFAULT_CLNT_OPTION, SSL_DEFAULT_CLNT_SESS); - - if (ssl_obj_load(ssl_clnt_ctx, SSL_OBJ_X509_CACERT, - "../ssl/test/axTLS.ca_x509.cer", NULL)) - goto error; - - if ((server_fd = server_socket_init(&g_port)) < 0) - goto error; - - for (i = 0; i < NUM_THREADS; i++) - { - multi_t *multi_data = (multi_t *)malloc(sizeof(multi_t)); - multi_data->ssl_clnt_ctx = ssl_clnt_ctx; - multi_data->port = g_port; - multi_data->thread_id = i+1; - pthread_create(&clnt_threads[i], NULL, - (void *(*)(void *))do_multi_clnt, (void *)multi_data); - pthread_detach(clnt_threads[i]); - } - - for (i = 0; i < NUM_THREADS; i++) - { - SSL *ssl_svr; - int client_fd = accept(server_fd, - (struct sockaddr *)&client_addr, &clnt_len); - - if (client_fd < 0) - goto error; - - ssl_svr = ssl_server_new(ssl_server_ctx, client_fd); - - pthread_create(&svr_threads[i], NULL, - (void *(*)(void *))do_multi_svr, (void *)ssl_svr); - } - - /* make sure we've run all of the threads */ - for (i = 0; i < NUM_THREADS; i++) - { - void *thread_res; - pthread_join(svr_threads[i], &thread_res); - - if (*((int *)thread_res) != 0) - res = 1; - - free(thread_res); - } - - if (res) - goto error; - - printf("Multi-thread test passed (%d)\n", NUM_THREADS); -error: - ssl_ctx_free(ssl_server_ctx); - ssl_ctx_free(ssl_clnt_ctx); - SOCKET_CLOSE(server_fd); - return res; -} -#endif /* !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING) */ - -/************************************************************************** - * Header issue - * - **************************************************************************/ -static void do_header_issue(void) -{ - char axtls_buf[2048]; -#ifndef WIN32 - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); -#endif - sprintf(axtls_buf, "./axssl s_client -connect localhost:%d", g_port); - system(axtls_buf); -} - -static int header_issue(void) -{ - FILE *f = fopen("../ssl/test/header_issue.dat", "r"); - int server_fd = -1, client_fd = -1, ret = 1; - uint8_t buf[2048]; - int size = 0; - struct sockaddr_in client_addr; - socklen_t clnt_len = sizeof(client_addr); -#ifndef WIN32 - pthread_t thread; -#endif - - if (f == NULL || (server_fd = server_socket_init(&g_port)) < 0) - goto error; - -#ifndef WIN32 - pthread_create(&thread, NULL, - (void *(*)(void *))do_header_issue, NULL); - pthread_detach(thread); -#else - CreateThread(NULL, 1024, (LPTHREAD_START_ROUTINE)do_header_issue, - NULL, 0, NULL); -#endif - if ((client_fd = accept(server_fd, - (struct sockaddr *) &client_addr, &clnt_len)) < 0) - { - ret = SSL_ERROR_SOCK_SETUP_FAILURE; - goto error; - } - - size = fread(buf, 1, sizeof(buf), f); - SOCKET_WRITE(client_fd, buf, size); - usleep(200000); - - ret = 0; -error: - fclose(f); - SOCKET_CLOSE(client_fd); - SOCKET_CLOSE(server_fd); - TTY_FLUSH(); - system("killall axssl"); - return ret; -} - -/************************************************************************** - * main() - * - **************************************************************************/ -int main(int argc, char *argv[]) -{ - int ret = 1; - BI_CTX *bi_ctx; - int fd; - -#ifdef WIN32 - WSADATA wsaData; - WORD wVersionRequested = MAKEWORD(2, 2); - WSAStartup(wVersionRequested, &wsaData); - fd = _open("test_result.txt", O_WRONLY|O_TEMPORARY|O_CREAT, _S_IWRITE); - dup2(fd, 2); /* write stderr to this file */ -#else - fd = open("/dev/null", O_WRONLY); /* write stderr to /dev/null */ - signal(SIGPIPE, SIG_IGN); /* ignore pipe errors */ - dup2(fd, 2); -#endif - - /* can't do testing in this mode */ -#if defined CONFIG_SSL_GENERATE_X509_CERT - printf("Error: Must compile with default key/certificates\n"); - exit(1); -#endif - - bi_ctx = bi_initialize(); - - if (AES_test(bi_ctx)) - { - printf("AES tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (RC4_test(bi_ctx)) - { - printf("RC4 tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (MD5_test(bi_ctx)) - { - printf("MD5 tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (SHA1_test(bi_ctx)) - { - printf("SHA1 tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (HMAC_test(bi_ctx)) - { - printf("HMAC tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (BIGINT_test(bi_ctx)) - { - printf("BigInt tests failed!\n"); - goto cleanup; - } - TTY_FLUSH(); - - bi_terminate(bi_ctx); - - if (RSA_test()) - { - printf("RSA tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - - if (cert_tests()) - { - printf("CERT tests failed\n"); - goto cleanup; - } - TTY_FLUSH(); - -#if !defined(WIN32) && defined(CONFIG_SSL_CTX_MUTEXING) - if (multi_thread_test()) - goto cleanup; -#endif - - if (SSL_basic_test()) - goto cleanup; - - system("sh ../ssl/test/killopenssl.sh"); - - if (SSL_client_tests()) - goto cleanup; - - system("sh ../ssl/test/killopenssl.sh"); - - if (SSL_server_tests()) - goto cleanup; - - system("sh ../ssl/test/killopenssl.sh"); - - if (header_issue()) - { - printf("Header tests failed\n"); TTY_FLUSH(); - goto cleanup; - } - - ret = 0; /* all ok */ - printf("**** ALL TESTS PASSED ****\n"); TTY_FLUSH(); -cleanup: - - if (ret) - printf("Error: Some tests failed!\n"); - - close(fd); - return ret; -} diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/test_axssl.sh b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/test_axssl.sh deleted file mode 100755 index acf11a630c..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/test_axssl.sh +++ /dev/null @@ -1,163 +0,0 @@ -#!/bin/sh - -# -# Copyright (c) 2007, Cameron Rich -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the axTLS project nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# -# Test the various axssl bindings. To run it, got to the _install directory -# and run this script from there. -# - -if grep "CONFIG_PLATFORM_WIN32=y" "../config/.config" > /dev/null; then - JAVA_EXE="$JAVA_HOME/bin/java.exe" - PERL_BIN="/cygdrive/c/Perl/bin/perl" - KILL_AXSSL="kill %1" - KILL_CSHARP="kill %1" - KILL_PERL="kill %1" - KILL_JAVA="kill %1" - KILL_LUA="kill %1" -else - if grep "CONFIG_PLATFORM_CYGWIN=y" "../config/.config" > /dev/null; then - # no .net or java on cygwin - PERL_BIN=/usr/bin/perl - KILL_AXSSL="killall axssl" - KILL_PERL="killall /usr/bin/perl" - KILL_LUA="killall /usr/local/bin/lua" - else # Linux - JAVA_EXE=/usr/java/default/bin/java - PERL_BIN=/usr/bin/perl - KILL_AXSSL="killall axssl" - KILL_CSHARP="killall mono" - KILL_PERL="killall /usr/bin/perl" - RUN_CSHARP="mono" - KILL_JAVA="killall $JAVA_EXE" - KILL_LUA="killall /usr/local/bin/lua" - fi -fi - -BASE=.. -SERVER_ARGS="s_server -accept 15001 -verify -CAfile $BASE/ssl/test/axTLS.ca_x509.cer" -CLIENT_ARGS="s_client -reconnect -connect localhost:15001 -verify -CAfile $BASE/ssl/test/axTLS.ca_x509.cer -key $BASE/ssl/test/axTLS.key_1024 -cert $BASE/ssl/test/axTLS.x509_1024.cer" - -# check pem arguments -SERVER_PEM_ARGS="s_server -accept 15001 -pass abcd -key $BASE/ssl/test/axTLS.key_aes128.pem -cert $BASE/ssl/test/axTLS.x509_aes128.pem" -CLIENT_PEM_ARGS="s_client -connect localhost:15001 -CAfile $BASE/ssl/test/axTLS.ca_x509.pem -key $BASE/ssl/test/axTLS.key_1024.pem -cert $BASE/ssl/test/axTLS.x509_1024.pem" - -export LD_LIBRARY_PATH=.:`perl -e 'use Config; print $Config{archlib};'`/CORE - -if [ -x ./axssl ]; then -echo "############################# C SAMPLE ###########################" -./axssl $SERVER_ARGS & -echo "C Test passed" | ./axssl $CLIENT_ARGS -$KILL_AXSSL -sleep 1 - -./axssl $SERVER_PEM_ARGS & -echo "C Test passed" | ./axssl $CLIENT_PEM_ARGS -$KILL_AXSSL -sleep 1 -echo "### C tests complete" -fi - -if [ -f ./axtls.jar ]; then -echo "########################## JAVA SAMPLE ###########################" -"$JAVA_EXE" -jar ./axtls.jar $SERVER_ARGS & -echo "Java Test passed" | "$JAVA_EXE" -jar ./axtls.jar $CLIENT_ARGS -$KILL_JAVA -sleep 1 - -"$JAVA_EXE" -jar ./axtls.jar $SERVER_PEM_ARGS & -echo "Java Test passed" | "$JAVA_EXE" -jar ./axtls.jar $CLIENT_PEM_ARGS -$KILL_JAVA -sleep 1 - -echo "### Java tests complete" -fi - -if [ -x ./axssl.csharp.exe ]; then -echo "############################ C# SAMPLE ###########################" -$RUN_CSHARP ./axssl.csharp.exe $SERVER_ARGS & -echo "C# Test passed" | $RUN_CSHARP ./axssl.csharp.exe $CLIENT_ARGS -$KILL_CSHARP -sleep 1 - -$RUN_CSHARP ./axssl.csharp.exe $SERVER_PEM_ARGS & -echo "C# Test passed" | $RUN_CSHARP ./axssl.csharp.exe $CLIENT_PEM_ARGS -$KILL_CSHARP -sleep 1 - -echo "### C# tests complete" -fi - -if [ -x ./axssl.vbnet.exe ]; then -echo "######################## VB.NET SAMPLE ###########################" -echo $SERVER_ARGS -echo $CLIENT_ARGS -./axssl.vbnet $SERVER_ARGS & -echo "VB.NET Test passed" | ./axssl.vbnet.exe $CLIENT_ARGS -kill %1 -sleep 1 - -./axssl.vbnet $SERVER_PEM_ARGS & -echo "VB.NET Test passed" | ./axssl.vbnet.exe $CLIENT_PEM_ARGS -kill %1 -sleep 1 -echo "### VB.NET tests complete" -fi - -if [ -f ./axssl.pl ]; then -echo "########################## PERL SAMPLE ###########################" -"$PERL_BIN" ./axssl.pl $SERVER_ARGS & -echo "Perl Test passed" | "$PERL_BIN" ./axssl.pl $CLIENT_ARGS -$KILL_PERL -sleep 1 - -"$PERL_BIN" ./axssl.pl $SERVER_PEM_ARGS & -echo "Perl Test passed" | "$PERL_BIN" ./axssl.pl $CLIENT_PEM_ARGS -$KILL_PERL -sleep 1 -echo "### Perl tests complete" -fi - -if [ -f ./axssl.lua ]; then -echo "########################## LUA SAMPLE ###########################" -./axssl.lua $SERVER_ARGS & -echo "Lua Test passed" | ./axssl.lua $CLIENT_ARGS -$KILL_LUA -sleep 1 - -./axssl.lua $SERVER_PEM_ARGS & -echo "Lua Test passed" | ./axssl.lua $CLIENT_PEM_ARGS -$KILL_LUA -sleep 1 -echo "### Lua tests complete" -fi - -echo "########################## ALL TESTS COMPLETE ###########################" diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/thawte.x509_ca b/package/luci/libs/luci-lib-nixio/axTLS/ssl/test/thawte.x509_ca deleted file mode 100644 index 59b1059f84086fa580dc1001303c4db4e070e572..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 811 zcmXqLVpcb3Vw$jknTe5!iILHOmyJ`a&71aK>;=YaCsSi1!zDAbtnTZF zqUYUebWG~Ec<0FydhNn{8R@BF?(Zc$Os#^xXlJqYTkF3Hd%V7_cb@q7d0SFTnS9@$ z=3Jy0cw_d3^b5OqC$WhXUzvP*x)#Hn7(bppzeI!nd~(UVCFqsMF<)Qz@y}IOZN=N% zf+J3JvhHmb+)-@5ioN%XlkanfxiaQV%!~|-i-ipY4fugEEGx{&_@9N=wue#B(wSB};{CmAjN`|kTB z=H&c*ca+=jgU1BrKYDG@a65VUh*RyJU#lbYu5J(P5PZC(RWiHDX9`CKd5-@#z5p&(TMr~SNx>{S1)iXw~p883_fotvm7>@WOHLUXNt;H*b_ z|IQe^xO{Hv`^QNljGg@tW>o80?|dhoUHjsH8z1xKWBTV_tO(!D#LURRi0nLIbTb3p zWwp-Y-R7SHR;@y@?^|{x`0o6ab&@xk`Ta5fEloQwoG`H15dW%Sy}DTBd%Xlc@q%Y{ zucp0BS^d~*aFB_*;n@8JsUPeY%RtAH{ z9z$*ePB!LH7B*p~&|pJx15pr%OPDV#wJ0+>?aaMVZA(iFv7pk_O@+AubVt#ESf!{1BgDg@B^`tkmQZ zLs0`^kQBEFkD-B)i9%9li9&X2rJZKq+vngJKw%B24vwDh#|p1}Oj&s-uBD8&^V`2V>h0S4MVG149FSHV$nz zVA5n~ViZ#b8D9)EA5X{|$b!sLWf3zFf$3ysgtM3oOkiwAMivbNH3JnG-+-}A0_yzy zjW}s*wZ@|vRs?EpDB*h}q z|Map{+nV0K?8E09vaWbY=u}JU8K^@10Q5pmetJHN9r|U(U@?$MsF{)(m>{%MIgMNe zF3gcp;g*^HXwj|JH%sakW^XY%?K}Ip+slNyvt8M1?Uz`5cz$g&-`l2-@0b62`(fXd z*3a*ARU9g<^p4fEd -#include -#include -#include -#include "ssl.h" - -/* The session expiry time */ -#define SSL_EXPIRY_TIME (CONFIG_SSL_EXPIRY_TIME*3600) - -static const uint8_t g_hello_request[] = { HS_HELLO_REQUEST, 0, 0, 0 }; -static const uint8_t g_chg_cipher_spec_pkt[] = { 1 }; -static const char * server_finished = "server finished"; -static const char * client_finished = "client finished"; - -static int do_handshake(SSL *ssl, uint8_t *buf, int read_len); -static void set_key_block(SSL *ssl, int is_write); -static int verify_digest(SSL *ssl, int mode, const uint8_t *buf, int read_len); -static void *crypt_new(SSL *ssl, uint8_t *key, uint8_t *iv, int is_decrypt); -static int send_raw_packet(SSL *ssl, uint8_t protocol); - -/** - * The server will pick the cipher based on the order that the order that the - * ciphers are listed. This order is defined at compile time. - */ -#ifdef CONFIG_SSL_SKELETON_MODE -const uint8_t ssl_prot_prefs[NUM_PROTOCOLS] = -{ SSL_RC4_128_SHA }; -#else -static void session_free(SSL_SESSION *ssl_sessions[], int sess_index); - -const uint8_t ssl_prot_prefs[NUM_PROTOCOLS] = -#ifdef CONFIG_SSL_PROT_LOW /* low security, fast speed */ -{ SSL_RC4_128_SHA, SSL_AES128_SHA, SSL_AES256_SHA, SSL_RC4_128_MD5 }; -#elif CONFIG_SSL_PROT_MEDIUM /* medium security, medium speed */ -{ SSL_AES128_SHA, SSL_AES256_SHA, SSL_RC4_128_SHA, SSL_RC4_128_MD5 }; -#else /* CONFIG_SSL_PROT_HIGH */ /* high security, low speed */ -{ SSL_AES256_SHA, SSL_AES128_SHA, SSL_RC4_128_SHA, SSL_RC4_128_MD5 }; -#endif -#endif /* CONFIG_SSL_SKELETON_MODE */ - -/** - * The cipher map containing all the essentials for each cipher. - */ -#ifdef CONFIG_SSL_SKELETON_MODE -static const cipher_info_t cipher_info[NUM_PROTOCOLS] = -{ - { /* RC4-SHA */ - SSL_RC4_128_SHA, /* RC4-SHA */ - 16, /* key size */ - 0, /* iv size */ - 2*(SHA1_SIZE+16), /* key block size */ - 0, /* no padding */ - SHA1_SIZE, /* digest size */ - hmac_sha1, /* hmac algorithm */ - (crypt_func)RC4_crypt, /* encrypt */ - (crypt_func)RC4_crypt /* decrypt */ - }, -}; -#else -static const cipher_info_t cipher_info[NUM_PROTOCOLS] = -{ - { /* AES128-SHA */ - SSL_AES128_SHA, /* AES128-SHA */ - 16, /* key size */ - 16, /* iv size */ - 2*(SHA1_SIZE+16+16), /* key block size */ - 16, /* block padding size */ - SHA1_SIZE, /* digest size */ - hmac_sha1, /* hmac algorithm */ - (crypt_func)AES_cbc_encrypt, /* encrypt */ - (crypt_func)AES_cbc_decrypt /* decrypt */ - }, - { /* AES256-SHA */ - SSL_AES256_SHA, /* AES256-SHA */ - 32, /* key size */ - 16, /* iv size */ - 2*(SHA1_SIZE+32+16), /* key block size */ - 16, /* block padding size */ - SHA1_SIZE, /* digest size */ - hmac_sha1, /* hmac algorithm */ - (crypt_func)AES_cbc_encrypt, /* encrypt */ - (crypt_func)AES_cbc_decrypt /* decrypt */ - }, - { /* RC4-SHA */ - SSL_RC4_128_SHA, /* RC4-SHA */ - 16, /* key size */ - 0, /* iv size */ - 2*(SHA1_SIZE+16), /* key block size */ - 0, /* no padding */ - SHA1_SIZE, /* digest size */ - hmac_sha1, /* hmac algorithm */ - (crypt_func)RC4_crypt, /* encrypt */ - (crypt_func)RC4_crypt /* decrypt */ - }, - /* - * This protocol is from SSLv2 days and is unlikely to be used - but was - * useful for testing different possible digest algorithms. - */ - { /* RC4-MD5 */ - SSL_RC4_128_MD5, /* RC4-MD5 */ - 16, /* key size */ - 0, /* iv size */ - 2*(MD5_SIZE+16), /* key block size */ - 0, /* no padding */ - MD5_SIZE, /* digest size */ - hmac_md5, /* hmac algorithm */ - (crypt_func)RC4_crypt, /* encrypt */ - (crypt_func)RC4_crypt /* decrypt */ - }, -}; -#endif - -static void prf(const uint8_t *sec, int sec_len, uint8_t *seed, int seed_len, - uint8_t *out, int olen); -static const cipher_info_t *get_cipher_info(uint8_t cipher); -static void increment_read_sequence(SSL *ssl); -static void increment_write_sequence(SSL *ssl); -static void add_hmac_digest(SSL *ssl, int snd, uint8_t *hmac_header, - const uint8_t *buf, int buf_len, uint8_t *hmac_buf); - -/* win32 VC6.0 doesn't have variadic macros */ -#if defined(WIN32) && !defined(CONFIG_SSL_FULL_MODE) -void DISPLAY_BYTES(SSL *ssl, const char *format, - const uint8_t *data, int size, ...) {} -#endif - -/** - * Establish a new client/server context. - */ -EXP_FUNC SSL_CTX *STDCALL ssl_ctx_new(uint32_t options, int num_sessions) -{ - SSL_CTX *ssl_ctx = (SSL_CTX *)calloc(1, sizeof (SSL_CTX)); - ssl_ctx->options = options; - - if (load_key_certs(ssl_ctx) < 0) - { - free(ssl_ctx); /* can't load our key/certificate pair, so die */ - return NULL; - } - -#ifndef CONFIG_SSL_SKELETON_MODE - ssl_ctx->num_sessions = num_sessions; -#endif - - SSL_CTX_MUTEX_INIT(ssl_ctx->mutex); - -#ifndef CONFIG_SSL_SKELETON_MODE - if (num_sessions) - { - ssl_ctx->ssl_sessions = (SSL_SESSION **) - calloc(1, num_sessions*sizeof(SSL_SESSION *)); - } -#endif - - return ssl_ctx; -} - -/* - * Remove a client/server context. - */ -EXP_FUNC void STDCALL ssl_ctx_free(SSL_CTX *ssl_ctx) -{ - SSL *ssl; - int i; - - if (ssl_ctx == NULL) - return; - - ssl = ssl_ctx->head; - - /* clear out all the ssl entries */ - while (ssl) - { - SSL *next = ssl->next; - ssl_free(ssl); - ssl = next; - } - -#ifndef CONFIG_SSL_SKELETON_MODE - /* clear out all the sessions */ - for (i = 0; i < ssl_ctx->num_sessions; i++) - session_free(ssl_ctx->ssl_sessions, i); - - free(ssl_ctx->ssl_sessions); -#endif - - i = 0; - while (i < CONFIG_SSL_MAX_CERTS && ssl_ctx->certs[i].buf) - { - free(ssl_ctx->certs[i].buf); - ssl_ctx->certs[i++].buf = NULL; - } - -#ifdef CONFIG_SSL_CERT_VERIFICATION - remove_ca_certs(ssl_ctx->ca_cert_ctx); -#endif - ssl_ctx->chain_length = 0; - SSL_CTX_MUTEX_DESTROY(ssl_ctx->mutex); - RSA_free(ssl_ctx->rsa_ctx); - RNG_terminate(); - free(ssl_ctx); -} - -/* - * Free any used resources used by this connection. - */ -EXP_FUNC void STDCALL ssl_free(SSL *ssl) -{ - SSL_CTX *ssl_ctx; - - if (ssl == NULL) /* just ignore null pointers */ - return; - - /* spec says we must notify when we are dying */ - send_alert(ssl, SSL_ALERT_CLOSE_NOTIFY); - - ssl_ctx = ssl->ssl_ctx; - - SSL_CTX_LOCK(ssl_ctx->mutex); - - /* adjust the server SSL list */ - if (ssl->prev) - ssl->prev->next = ssl->next; - else - ssl_ctx->head = ssl->next; - - if (ssl->next) - ssl->next->prev = ssl->prev; - else - ssl_ctx->tail = ssl->prev; - - SSL_CTX_UNLOCK(ssl_ctx->mutex); - - /* may already be free - but be sure */ - free(ssl->encrypt_ctx); - free(ssl->decrypt_ctx); - disposable_free(ssl); -#ifdef CONFIG_SSL_CERT_VERIFICATION - x509_free(ssl->x509_ctx); -#endif - - free(ssl); -} - -/* - * Read the SSL connection and send any alerts for various errors. - */ -EXP_FUNC int STDCALL ssl_read(SSL *ssl, uint8_t **in_data) -{ - int ret = basic_read(ssl, in_data); - - /* check for return code so we can send an alert */ - if (ret < SSL_OK) - { - if (ret != SSL_ERROR_CONN_LOST) - { - send_alert(ssl, ret); -#ifndef CONFIG_SSL_SKELETON_MODE - /* something nasty happened, so get rid of this session */ - kill_ssl_session(ssl->ssl_ctx->ssl_sessions, ssl); -#endif - } - } - - return ret; -} - -/* - * Write application data to the client - */ -EXP_FUNC int STDCALL ssl_write(SSL *ssl, const uint8_t *out_data, int out_len) -{ - int n = out_len, nw, i, tot = 0; - - /* maximum size of a TLS packet is around 16kB, so fragment */ - do - { - nw = n; - - if (nw > RT_MAX_PLAIN_LENGTH) /* fragment if necessary */ - nw = RT_MAX_PLAIN_LENGTH; - - if ((i = send_packet(ssl, PT_APP_PROTOCOL_DATA, - &out_data[tot], nw)) <= 0) - { - out_len = i; /* an error */ - break; - } - - tot += i; - n -= i; - } while (n > 0); - - return out_len; -} - -/** - * Add a certificate to the certificate chain. - */ -int add_cert(SSL_CTX *ssl_ctx, const uint8_t *buf, int len) -{ - int ret = SSL_ERROR_NO_CERT_DEFINED, i = 0; - SSL_CERT *ssl_cert; - X509_CTX *cert = NULL; - int offset; - - while (ssl_ctx->certs[i].buf && i < CONFIG_SSL_MAX_CERTS) - i++; - - if (i == CONFIG_SSL_MAX_CERTS) /* too many certs */ - { -#ifdef CONFIG_SSL_FULL_MODE - printf("Error: maximum number of certs added - change of " - "compile-time configuration required\n"); -#endif - goto error; - } - - if ((ret = x509_new(buf, &offset, &cert))) - goto error; - -#if defined (CONFIG_SSL_FULL_MODE) - if (ssl_ctx->options & SSL_DISPLAY_CERTS) - x509_print(cert, NULL); -#endif - - ssl_cert = &ssl_ctx->certs[i]; - ssl_cert->size = len; - ssl_cert->buf = (uint8_t *)malloc(len); - memcpy(ssl_cert->buf, buf, len); - ssl_ctx->chain_length++; - len -= offset; - ret = SSL_OK; /* ok so far */ - - /* recurse? */ - if (len > 0) - { - ret = add_cert(ssl_ctx, &buf[offset], len); - } - -error: - x509_free(cert); /* don't need anymore */ - return ret; -} - -#ifdef CONFIG_SSL_CERT_VERIFICATION -/** - * Add a certificate authority. - */ -int add_cert_auth(SSL_CTX *ssl_ctx, const uint8_t *buf, int len) -{ - int ret = SSL_ERROR_NO_CERT_DEFINED; - int i = 0; - int offset; - CA_CERT_CTX *ca_cert_ctx; - - if (ssl_ctx->ca_cert_ctx == NULL) - ssl_ctx->ca_cert_ctx = (CA_CERT_CTX *)calloc(1, sizeof(CA_CERT_CTX)); - - ca_cert_ctx = ssl_ctx->ca_cert_ctx; - - while (i < CONFIG_X509_MAX_CA_CERTS && ca_cert_ctx->cert[i]) - i++; - - if (i > CONFIG_X509_MAX_CA_CERTS) - { -#ifdef CONFIG_SSL_FULL_MODE - printf("Error: maximum number of CA certs added - change of " - "compile-time configuration required\n"); -#endif - goto error; - } - - if ((ret = x509_new(buf, &offset, &ca_cert_ctx->cert[i]))) - goto error; - - len -= offset; - ret = SSL_OK; /* ok so far */ - - /* recurse? */ - if (len > 0) - ret = add_cert_auth(ssl_ctx, &buf[offset], len); - -error: - return ret; -} - -/* - * Retrieve an X.509 distinguished name component - */ -EXP_FUNC const char * STDCALL ssl_get_cert_dn(const SSL *ssl, int component) -{ - if (ssl->x509_ctx == NULL) - return NULL; - - switch (component) - { - case SSL_X509_CERT_COMMON_NAME: - return ssl->x509_ctx->cert_dn[X509_COMMON_NAME]; - - case SSL_X509_CERT_ORGANIZATION: - return ssl->x509_ctx->cert_dn[X509_ORGANIZATION]; - - case SSL_X509_CERT_ORGANIZATIONAL_NAME: - return ssl->x509_ctx->cert_dn[X509_ORGANIZATIONAL_UNIT]; - - case SSL_X509_CA_CERT_COMMON_NAME: - return ssl->x509_ctx->ca_cert_dn[X509_COMMON_NAME]; - - case SSL_X509_CA_CERT_ORGANIZATION: - return ssl->x509_ctx->ca_cert_dn[X509_ORGANIZATION]; - - case SSL_X509_CA_CERT_ORGANIZATIONAL_NAME: - return ssl->x509_ctx->ca_cert_dn[X509_ORGANIZATIONAL_UNIT]; - - default: - return NULL; - } -} - -#endif - -/* - * Find an ssl object based on the client's file descriptor. - */ -EXP_FUNC SSL * STDCALL ssl_find(SSL_CTX *ssl_ctx, int client_fd) -{ - SSL *ssl; - - SSL_CTX_LOCK(ssl_ctx->mutex); - ssl = ssl_ctx->head; - - /* search through all the ssl entries */ - while (ssl) - { - if (ssl->client_fd == client_fd) - { - SSL_CTX_UNLOCK(ssl_ctx->mutex); - return ssl; - } - - ssl = ssl->next; - } - - SSL_CTX_UNLOCK(ssl_ctx->mutex); - return NULL; -} - -/* - * Force the client to perform its handshake again. - */ -EXP_FUNC int STDCALL ssl_renegotiate(SSL *ssl) -{ - int ret = SSL_OK; - - disposable_new(ssl); -#ifdef CONFIG_SSL_ENABLE_CLIENT - if (IS_SET_SSL_FLAG(SSL_IS_CLIENT)) - { - ret = do_client_connect(ssl); - } - else -#endif - { - send_packet(ssl, PT_HANDSHAKE_PROTOCOL, - g_hello_request, sizeof(g_hello_request)); - SET_SSL_FLAG(SSL_NEED_RECORD); - } - - return ret; -} - -/** - * @brief Get what we need for key info. - * @param cipher [in] The cipher information we are after - * @param key_size [out] The key size for the cipher - * @param iv_size [out] The iv size for the cipher - * @return The amount of key information we need. - */ -static const cipher_info_t *get_cipher_info(uint8_t cipher) -{ - int i; - - for (i = 0; i < NUM_PROTOCOLS; i++) - { - if (cipher_info[i].cipher == cipher) - { - return &cipher_info[i]; - } - } - - return NULL; /* error */ -} - -/* - * Get a new ssl context for a new connection. - */ -SSL *ssl_new(SSL_CTX *ssl_ctx, int client_fd) -{ - SSL *ssl = (SSL *)calloc(1, sizeof(SSL)); - ssl->ssl_ctx = ssl_ctx; - ssl->need_bytes = SSL_RECORD_SIZE; /* need a record */ - ssl->client_fd = client_fd; - ssl->flag = SSL_NEED_RECORD; - ssl->bm_data = ssl->bm_all_data+BM_RECORD_OFFSET; /* space at the start */ - ssl->hs_status = SSL_NOT_OK; /* not connected */ -#ifdef CONFIG_ENABLE_VERIFICATION - ssl->ca_cert_ctx = ssl_ctx->ca_cert_ctx; -#endif - disposable_new(ssl); - - /* a bit hacky but saves a few bytes of memory */ - ssl->flag |= ssl_ctx->options; - SSL_CTX_LOCK(ssl_ctx->mutex); - - if (ssl_ctx->head == NULL) - { - ssl_ctx->head = ssl; - ssl_ctx->tail = ssl; - } - else - { - ssl->prev = ssl_ctx->tail; - ssl_ctx->tail->next = ssl; - ssl_ctx->tail = ssl; - } - - SSL_CTX_UNLOCK(ssl_ctx->mutex); - return ssl; -} - -/* - * Add a private key to a context. - */ -int add_private_key(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj) -{ - int ret = SSL_OK; - - /* get the private key details */ - if (asn1_get_private_key(ssl_obj->buf, ssl_obj->len, &ssl_ctx->rsa_ctx)) - { - ret = SSL_ERROR_INVALID_KEY; - goto error; - } - -error: - return ret; -} - -/** - * Increment the read sequence number (as a 64 bit endian indepenent #) - */ -static void increment_read_sequence(SSL *ssl) -{ - int i; - - for (i = 7; i >= 0; i--) - { - if (++ssl->read_sequence[i]) - break; - } -} - -/** - * Increment the read sequence number (as a 64 bit endian indepenent #) - */ -static void increment_write_sequence(SSL *ssl) -{ - int i; - - for (i = 7; i >= 0; i--) - { - if (++ssl->write_sequence[i]) - break; - } -} - -/** - * Work out the HMAC digest in a packet. - */ -static void add_hmac_digest(SSL *ssl, int mode, uint8_t *hmac_header, - const uint8_t *buf, int buf_len, uint8_t *hmac_buf) -{ - int hmac_len = buf_len + 8 + SSL_RECORD_SIZE; - uint8_t *t_buf = (uint8_t *)alloca(hmac_len+10); - - memcpy(t_buf, (mode == SSL_SERVER_WRITE || mode == SSL_CLIENT_WRITE) ? - ssl->write_sequence : ssl->read_sequence, 8); - memcpy(&t_buf[8], hmac_header, SSL_RECORD_SIZE); - memcpy(&t_buf[8+SSL_RECORD_SIZE], buf, buf_len); - - ssl->cipher_info->hmac(t_buf, hmac_len, - (mode == SSL_SERVER_WRITE || mode == SSL_CLIENT_READ) ? - ssl->server_mac : ssl->client_mac, - ssl->cipher_info->digest_size, hmac_buf); - -#if 0 - print_blob("record", ssl->hmac_tx, SSL_RECORD_SIZE); - print_blob("buf", buf, buf_len); - if (mode == SSL_SERVER_WRITE || mode == SSL_CLIENT_WRITE) - { - print_blob("write seq", ssl->write_sequence, 8); - } - else - { - print_blob("read seq", ssl->read_sequence, 8); - } - - if (mode == SSL_SERVER_WRITE || mode == SSL_CLIENT_READ) - { - print_blob("server mac", - ssl->server_mac, ssl->cipher_info->digest_size); - } - else - { - print_blob("client mac", - ssl->client_mac, ssl->cipher_info->digest_size); - } - print_blob("hmac", hmac_buf, SHA1_SIZE); -#endif -} - -/** - * Verify that the digest of a packet is correct. - */ -static int verify_digest(SSL *ssl, int mode, const uint8_t *buf, int read_len) -{ - uint8_t hmac_buf[SHA1_SIZE]; - int hmac_offset; - - if (ssl->cipher_info->padding_size) - { - hmac_offset = read_len-buf[read_len-1]-ssl->cipher_info->digest_size-1; - } - else - { - hmac_offset = read_len - ssl->cipher_info->digest_size; - } - - /* sanity check the offset */ - if (hmac_offset < 0) - { - return SSL_ERROR_INVALID_HMAC; - } - - ssl->hmac_header[3] = hmac_offset >> 8; /* insert size */ - ssl->hmac_header[4] = hmac_offset & 0xff; - add_hmac_digest(ssl, mode, ssl->hmac_header, buf, hmac_offset, hmac_buf); - - if (memcmp(hmac_buf, &buf[hmac_offset], ssl->cipher_info->digest_size)) - { - return SSL_ERROR_INVALID_HMAC; - } - - return hmac_offset; -} - -/** - * Add a packet to the end of our sent and received packets, so that we may use - * it to calculate the hash at the end. - */ -void add_packet(SSL *ssl, const uint8_t *pkt, int len) -{ - MD5_Update(&ssl->dc->md5_ctx, pkt, len); - SHA1_Update(&ssl->dc->sha1_ctx, pkt, len); -} - -/** - * Work out the MD5 PRF. - */ -static void p_hash_md5(const uint8_t *sec, int sec_len, - uint8_t *seed, int seed_len, uint8_t *out, int olen) -{ - uint8_t a1[128]; - - /* A(1) */ - hmac_md5(seed, seed_len, sec, sec_len, a1); - memcpy(&a1[MD5_SIZE], seed, seed_len); - hmac_md5(a1, MD5_SIZE+seed_len, sec, sec_len, out); - - while (olen > MD5_SIZE) - { - uint8_t a2[MD5_SIZE]; - out += MD5_SIZE; - olen -= MD5_SIZE; - - /* A(N) */ - hmac_md5(a1, MD5_SIZE, sec, sec_len, a2); - memcpy(a1, a2, MD5_SIZE); - - /* work out the actual hash */ - hmac_md5(a1, MD5_SIZE+seed_len, sec, sec_len, out); - } -} - -/** - * Work out the SHA1 PRF. - */ -static void p_hash_sha1(const uint8_t *sec, int sec_len, - uint8_t *seed, int seed_len, uint8_t *out, int olen) -{ - uint8_t a1[128]; - - /* A(1) */ - hmac_sha1(seed, seed_len, sec, sec_len, a1); - memcpy(&a1[SHA1_SIZE], seed, seed_len); - hmac_sha1(a1, SHA1_SIZE+seed_len, sec, sec_len, out); - - while (olen > SHA1_SIZE) - { - uint8_t a2[SHA1_SIZE]; - out += SHA1_SIZE; - olen -= SHA1_SIZE; - - /* A(N) */ - hmac_sha1(a1, SHA1_SIZE, sec, sec_len, a2); - memcpy(a1, a2, SHA1_SIZE); - - /* work out the actual hash */ - hmac_sha1(a1, SHA1_SIZE+seed_len, sec, sec_len, out); - } -} - -/** - * Work out the PRF. - */ -static void prf(const uint8_t *sec, int sec_len, uint8_t *seed, int seed_len, - uint8_t *out, int olen) -{ - int len, i; - const uint8_t *S1, *S2; - uint8_t xbuf[256]; /* needs to be > the amount of key data */ - uint8_t ybuf[256]; /* needs to be > the amount of key data */ - - len = sec_len/2; - S1 = sec; - S2 = &sec[len]; - len += (sec_len & 1); /* add for odd, make longer */ - - p_hash_md5(S1, len, seed, seed_len, xbuf, olen); - p_hash_sha1(S2, len, seed, seed_len, ybuf, olen); - - for (i = 0; i < olen; i++) - out[i] = xbuf[i] ^ ybuf[i]; -} - -/** - * Generate a master secret based on the client/server random data and the - * premaster secret. - */ -void generate_master_secret(SSL *ssl, const uint8_t *premaster_secret) -{ - uint8_t buf[128]; /* needs to be > 13+32+32 in size */ - strcpy((char *)buf, "master secret"); - memcpy(&buf[13], ssl->dc->client_random, SSL_RANDOM_SIZE); - memcpy(&buf[45], ssl->dc->server_random, SSL_RANDOM_SIZE); - prf(premaster_secret, SSL_SECRET_SIZE, buf, 77, ssl->dc->master_secret, - SSL_SECRET_SIZE); -} - -/** - * Generate a 'random' blob of data used for the generation of keys. - */ -static void generate_key_block(uint8_t *client_random, uint8_t *server_random, - uint8_t *master_secret, uint8_t *key_block, int key_block_size) -{ - uint8_t buf[128]; - strcpy((char *)buf, "key expansion"); - memcpy(&buf[13], server_random, SSL_RANDOM_SIZE); - memcpy(&buf[45], client_random, SSL_RANDOM_SIZE); - prf(master_secret, SSL_SECRET_SIZE, buf, 77, key_block, key_block_size); -} - -/** - * Calculate the digest used in the finished message. This function also - * doubles up as a certificate verify function. - */ -void finished_digest(SSL *ssl, const char *label, uint8_t *digest) -{ - uint8_t mac_buf[128]; - uint8_t *q = mac_buf; - MD5_CTX md5_ctx = ssl->dc->md5_ctx; - SHA1_CTX sha1_ctx = ssl->dc->sha1_ctx; - - if (label) - { - strcpy((char *)q, label); - q += strlen(label); - } - - MD5_Final(q, &md5_ctx); - q += MD5_SIZE; - - SHA1_Final(q, &sha1_ctx); - q += SHA1_SIZE; - - if (label) - { - prf(ssl->dc->master_secret, SSL_SECRET_SIZE, mac_buf, (int)(q-mac_buf), - digest, SSL_FINISHED_HASH_SIZE); - } - else /* for use in a certificate verify */ - { - memcpy(digest, mac_buf, MD5_SIZE + SHA1_SIZE); - } - -#if 0 - printf("label: %s\n", label); - print_blob("master secret", ssl->dc->master_secret, 48); - print_blob("mac_buf", mac_buf, q-mac_buf); - print_blob("finished digest", digest, SSL_FINISHED_HASH_SIZE); -#endif -} - -/** - * Retrieve (and initialise) the context of a cipher. - */ -static void *crypt_new(SSL *ssl, uint8_t *key, uint8_t *iv, int is_decrypt) -{ - switch (ssl->cipher) - { -#ifndef CONFIG_SSL_SKELETON_MODE - case SSL_AES128_SHA: - { - AES_CTX *aes_ctx = (AES_CTX *)malloc(sizeof(AES_CTX)); - AES_set_key(aes_ctx, key, iv, AES_MODE_128); - - if (is_decrypt) - { - AES_convert_key(aes_ctx); - } - - return (void *)aes_ctx; - } - - case SSL_AES256_SHA: - { - AES_CTX *aes_ctx = (AES_CTX *)malloc(sizeof(AES_CTX)); - AES_set_key(aes_ctx, key, iv, AES_MODE_256); - - if (is_decrypt) - { - AES_convert_key(aes_ctx); - } - - return (void *)aes_ctx; - } - break; - - case SSL_RC4_128_MD5: -#endif - case SSL_RC4_128_SHA: - { - RC4_CTX *rc4_ctx = (RC4_CTX *)malloc(sizeof(RC4_CTX)); - RC4_setup(rc4_ctx, key, 16); - return (void *)rc4_ctx; - } - break; - } - - return NULL; /* its all gone wrong */ -} - -/** - * Send a packet over the socket. - */ -static int send_raw_packet(SSL *ssl, uint8_t protocol) -{ - uint8_t *rec_buf = ssl->bm_all_data; - int pkt_size = SSL_RECORD_SIZE+ssl->bm_index; - int sent = 0; - int ret = SSL_OK; - - rec_buf[0] = protocol; - rec_buf[1] = 0x03; /* version = 3.1 (TLS) */ - rec_buf[2] = 0x01; - rec_buf[3] = ssl->bm_index >> 8; - rec_buf[4] = ssl->bm_index & 0xff; - - DISPLAY_BYTES(ssl, "sending %d bytes", ssl->bm_all_data, - pkt_size, pkt_size); - - while (sent < pkt_size) - { - if ((ret = SOCKET_WRITE(ssl->client_fd, - &ssl->bm_all_data[sent], pkt_size)) < 0) - { - ret = SSL_ERROR_CONN_LOST; - break; - } - - sent += ret; - - /* keep going until the write buffer has some space */ - if (sent != pkt_size) - { - fd_set wfds; - FD_ZERO(&wfds); - FD_SET(ssl->client_fd, &wfds); - - if (select(ssl->client_fd + 1, NULL, &wfds, NULL, NULL) < 0) - { - ret = SSL_ERROR_CONN_LOST; - break; - } - } - } - - SET_SSL_FLAG(SSL_NEED_RECORD); /* reset for next time */ - ssl->bm_index = 0; - - if (protocol != PT_APP_PROTOCOL_DATA) - { - /* always return SSL_OK during handshake */ - ret = SSL_OK; - } - - return ret; -} - -/** - * Send an encrypted packet with padding bytes if necessary. - */ -int send_packet(SSL *ssl, uint8_t protocol, const uint8_t *in, int length) -{ - int msg_length = length; - int ret, pad_bytes = 0; - ssl->bm_index = msg_length; - - /* if our state is bad, don't bother */ - if (ssl->hs_status == SSL_ERROR_DEAD) - return SSL_ERROR_CONN_LOST; - - if (in) /* has the buffer already been initialised? */ - { - memcpy(ssl->bm_data, in, length); - } - - if (IS_SET_SSL_FLAG(SSL_TX_ENCRYPTED)) - { - int mode = IS_SET_SSL_FLAG(SSL_IS_CLIENT) ? - SSL_CLIENT_WRITE : SSL_SERVER_WRITE; - uint8_t hmac_header[SSL_RECORD_SIZE]; - - hmac_header[0] = protocol; - hmac_header[1] = 0x03; - hmac_header[2] = 0x01; - hmac_header[3] = length >> 8; - hmac_header[4] = length & 0xff; - - if (protocol == PT_HANDSHAKE_PROTOCOL) - { - DISPLAY_STATE(ssl, 1, ssl->bm_data[0], 0); - - if (ssl->bm_data[0] != HS_HELLO_REQUEST) - { - add_packet(ssl, ssl->bm_data, ssl->bm_index); - } - } - - /* add the packet digest */ - msg_length += ssl->cipher_info->digest_size; - ssl->bm_index = msg_length; - add_hmac_digest(ssl, mode, hmac_header, ssl->bm_data, length, - &ssl->bm_data[length]); - - /* add padding? */ - if (ssl->cipher_info->padding_size) - { - int last_blk_size = msg_length%ssl->cipher_info->padding_size; - pad_bytes = ssl->cipher_info->padding_size - last_blk_size; - - /* ensure we always have at least 1 padding byte */ - if (pad_bytes == 0) - pad_bytes += ssl->cipher_info->padding_size; - - memset(&ssl->bm_data[msg_length], pad_bytes-1, pad_bytes); - msg_length += pad_bytes; - ssl->bm_index = msg_length; - } - - DISPLAY_BYTES(ssl, "unencrypted write", ssl->bm_data, msg_length); - increment_write_sequence(ssl); - - /* now encrypt the packet */ - ssl->cipher_info->encrypt(ssl->encrypt_ctx, ssl->bm_data, - ssl->bm_data, msg_length); - } - else if (protocol == PT_HANDSHAKE_PROTOCOL) - { - DISPLAY_STATE(ssl, 1, ssl->bm_data[0], 0); - - if (ssl->bm_data[0] != HS_HELLO_REQUEST) - { - add_packet(ssl, ssl->bm_data, ssl->bm_index); - } - } - - if ((ret = send_raw_packet(ssl, protocol)) <= 0) - return ret; - - return length; /* just return what we wanted to send */ -} - -/** - * Work out the cipher keys we are going to use for this session based on the - * master secret. - */ -static void set_key_block(SSL *ssl, int is_write) -{ - const cipher_info_t *ciph_info = get_cipher_info(ssl->cipher); - uint8_t *q; - uint8_t client_key[32], server_key[32]; /* big enough for AES256 */ - uint8_t client_iv[16], server_iv[16]; /* big enough for AES128/256 */ - int is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT); - - /* only do once in a handshake */ - if (ssl->dc->key_block == NULL) - { - ssl->dc->key_block = (uint8_t *)malloc(ciph_info->key_block_size); - -#if 0 - print_blob("client", ssl->dc->client_random, 32); - print_blob("server", ssl->dc->server_random, 32); - print_blob("master", ssl->dc->master_secret, SSL_SECRET_SIZE); -#endif - generate_key_block(ssl->dc->client_random, ssl->dc->server_random, - ssl->dc->master_secret, ssl->dc->key_block, - ciph_info->key_block_size); -#if 0 - print_blob("keyblock", ssl->key_block, ciph_info->key_block_size); -#endif - } - - q = ssl->dc->key_block; - - if ((is_client && is_write) || (!is_client && !is_write)) - { - memcpy(ssl->client_mac, q, ciph_info->digest_size); - } - - q += ciph_info->digest_size; - - if ((!is_client && is_write) || (is_client && !is_write)) - { - memcpy(ssl->server_mac, q, ciph_info->digest_size); - } - - q += ciph_info->digest_size; - memcpy(client_key, q, ciph_info->key_size); - q += ciph_info->key_size; - memcpy(server_key, q, ciph_info->key_size); - q += ciph_info->key_size; - -#ifndef CONFIG_SSL_SKELETON_MODE - if (ciph_info->iv_size) /* RC4 has no IV, AES does */ - { - memcpy(client_iv, q, ciph_info->iv_size); - q += ciph_info->iv_size; - memcpy(server_iv, q, ciph_info->iv_size); - q += ciph_info->iv_size; - } -#endif - - free(is_write ? ssl->encrypt_ctx : ssl->decrypt_ctx); - - /* now initialise the ciphers */ - if (is_client) - { - finished_digest(ssl, server_finished, ssl->dc->final_finish_mac); - - if (is_write) - ssl->encrypt_ctx = crypt_new(ssl, client_key, client_iv, 0); - else - ssl->decrypt_ctx = crypt_new(ssl, server_key, server_iv, 1); - } - else - { - finished_digest(ssl, client_finished, ssl->dc->final_finish_mac); - - if (is_write) - ssl->encrypt_ctx = crypt_new(ssl, server_key, server_iv, 0); - else - ssl->decrypt_ctx = crypt_new(ssl, client_key, client_iv, 1); - } - - ssl->cipher_info = ciph_info; -} - -/** - * Read the SSL connection. - */ -int basic_read(SSL *ssl, uint8_t **in_data) -{ - int ret = SSL_OK; - int read_len, is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT); - uint8_t *buf = ssl->bm_data; - - read_len = SOCKET_READ(ssl->client_fd, &buf[ssl->bm_read_index], - ssl->need_bytes-ssl->got_bytes); - - /* connection has gone, so die */ - if (read_len <= 0) - { - ret = SSL_ERROR_CONN_LOST; - ssl->hs_status = SSL_ERROR_DEAD; /* make sure it stays dead */ - goto error; - } - - DISPLAY_BYTES(ssl, "received %d bytes", - &ssl->bm_data[ssl->bm_read_index], read_len, read_len); - - ssl->got_bytes += read_len; - ssl->bm_read_index += read_len; - - /* haven't quite got what we want, so try again later */ - if (ssl->got_bytes < ssl->need_bytes) - return SSL_OK; - - read_len = ssl->got_bytes; - ssl->got_bytes = 0; - - if (IS_SET_SSL_FLAG(SSL_NEED_RECORD)) - { - /* check for sslv2 "client hello" */ - if (buf[0] & 0x80 && buf[2] == 1 && buf[3] == 0x03) - { -#ifdef CONFIG_SSL_ENABLE_V23_HANDSHAKE - DISPLAY_BYTES(ssl, "ssl2 record", buf, 5); - add_packet(ssl, &buf[2], 3); - ret = process_sslv23_client_hello(ssl); -#else - printf("Error: no SSLv23 handshaking allowed\n"); TTY_FLUSH(); - ret = SSL_ERROR_NOT_SUPPORTED; -#endif - goto error; /* not an error - just get out of here */ - } - - ssl->need_bytes = (buf[3] << 8) + buf[4]; - - /* do we violate the spec with the message size? */ - if (ssl->need_bytes > RT_MAX_PLAIN_LENGTH+RT_EXTRA-BM_RECORD_OFFSET) - { - ret = SSL_ERROR_INVALID_PROT_MSG; - goto error; - } - - CLR_SSL_FLAG(SSL_NEED_RECORD); - memcpy(ssl->hmac_header, buf, 3); /* store for hmac */ - ssl->record_type = buf[0]; - goto error; /* no error, we're done */ - } - - /* for next time - just do it now in case of an error */ - SET_SSL_FLAG(SSL_NEED_RECORD); - ssl->need_bytes = SSL_RECORD_SIZE; - - /* decrypt if we need to */ - if (IS_SET_SSL_FLAG(SSL_RX_ENCRYPTED)) - { - ssl->cipher_info->decrypt(ssl->decrypt_ctx, buf, buf, read_len); - read_len = verify_digest(ssl, - is_client ? SSL_CLIENT_READ : SSL_SERVER_READ, buf, read_len); - - /* does the hmac work? */ - if (read_len < 0) - { - ret = read_len; - goto error; - } - - DISPLAY_BYTES(ssl, "decrypted", buf, read_len); - increment_read_sequence(ssl); - } - - /* The main part of the SSL packet */ - switch (ssl->record_type) - { - case PT_HANDSHAKE_PROTOCOL: - ssl->dc->bm_proc_index = 0; - ret = do_handshake(ssl, buf, read_len); - break; - - case PT_CHANGE_CIPHER_SPEC: - if (ssl->next_state != HS_FINISHED) - { - ret = SSL_ERROR_INVALID_HANDSHAKE; - goto error; - } - - /* all encrypted from now on */ - SET_SSL_FLAG(SSL_RX_ENCRYPTED); - set_key_block(ssl, 0); - memset(ssl->read_sequence, 0, 8); - break; - - case PT_APP_PROTOCOL_DATA: - if (in_data) - { - *in_data = ssl->bm_data; /* point to the work buffer */ - (*in_data)[read_len] = 0; /* null terminate just in case */ - } - - ret = read_len; - break; - - case PT_ALERT_PROTOCOL: - /* return the alert # with alert bit set */ - ret = -buf[1]; - DISPLAY_ALERT(ssl, buf[1]); - break; - - default: - ret = SSL_ERROR_INVALID_PROT_MSG; - break; - } - -error: - ssl->bm_read_index = 0; /* reset to go again */ - - if (ret < SSL_OK && in_data)/* if all wrong, then clear this buffer ptr */ - *in_data = NULL; - - return ret; -} - -/** - * Do some basic checking of data and then perform the appropriate handshaking. - */ -static int do_handshake(SSL *ssl, uint8_t *buf, int read_len) -{ - int hs_len = (buf[2]<<8) + buf[3]; - uint8_t handshake_type = buf[0]; - int ret = SSL_OK; - int is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT); - - /* some integrity checking on the handshake */ - PARANOIA_CHECK(read_len-SSL_HS_HDR_SIZE, hs_len); - - if (handshake_type != ssl->next_state) - { - /* handle a special case on the client */ - if (!is_client || handshake_type != HS_CERT_REQ || - ssl->next_state != HS_SERVER_HELLO_DONE) - { - ret = SSL_ERROR_INVALID_HANDSHAKE; - goto error; - } - } - - hs_len += SSL_HS_HDR_SIZE; /* adjust for when adding packets */ - ssl->bm_index = hs_len; /* store the size and check later */ - DISPLAY_STATE(ssl, 0, handshake_type, 0); - - if (handshake_type != HS_CERT_VERIFY && handshake_type != HS_HELLO_REQUEST) - add_packet(ssl, buf, hs_len); - -#if defined(CONFIG_SSL_ENABLE_CLIENT) - ret = is_client ? - do_clnt_handshake(ssl, handshake_type, buf, hs_len) : - do_svr_handshake(ssl, handshake_type, buf, hs_len); -#else - ret = do_svr_handshake(ssl, handshake_type, buf, hs_len); -#endif - - /* just use recursion to get the rest */ - if (hs_len < read_len && ret == SSL_OK) - ret = do_handshake(ssl, &buf[hs_len], read_len-hs_len); - -error: - return ret; -} - -/** - * Sends the change cipher spec message. We have just read a finished message - * from the client. - */ -int send_change_cipher_spec(SSL *ssl) -{ - int ret = send_packet(ssl, PT_CHANGE_CIPHER_SPEC, - g_chg_cipher_spec_pkt, sizeof(g_chg_cipher_spec_pkt)); - SET_SSL_FLAG(SSL_TX_ENCRYPTED); - set_key_block(ssl, 1); - memset(ssl->write_sequence, 0, 8); - return ret; -} - -/** - * Send a "finished" message - */ -int send_finished(SSL *ssl) -{ - uint8_t *buf = ssl->bm_data; - - buf[0] = HS_FINISHED; - buf[1] = 0; - buf[2] = 0; - buf[3] = SSL_FINISHED_HASH_SIZE; - - /* now add the finished digest mac (12 bytes) */ - finished_digest(ssl, - IS_SET_SSL_FLAG(SSL_IS_CLIENT) ? - client_finished : server_finished, &buf[4]); - -#ifndef CONFIG_SSL_SKELETON_MODE - /* store in the session cache */ - if (!IS_SET_SSL_FLAG(SSL_SESSION_RESUME) && ssl->ssl_ctx->num_sessions) - { - memcpy(ssl->session->master_secret, - ssl->dc->master_secret, SSL_SECRET_SIZE); - } -#endif - - return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, - NULL, SSL_FINISHED_HASH_SIZE+4); -} - -/** - * Send an alert message. - * Return 1 if the alert was an "error". - */ -int send_alert(SSL *ssl, int error_code) -{ - int alert_num = 0; - int is_warning = 0; - uint8_t buf[2]; - - /* Don't bother we're already dead */ - if (ssl->hs_status == SSL_ERROR_DEAD) - { - return SSL_ERROR_CONN_LOST; - } - -#ifdef CONFIG_SSL_FULL_MODE - if (IS_SET_SSL_FLAG(SSL_DISPLAY_STATES)) - ssl_display_error(error_code); -#endif - - switch (error_code) - { - case SSL_ALERT_CLOSE_NOTIFY: - is_warning = 1; - alert_num = SSL_ALERT_CLOSE_NOTIFY; - break; - - case SSL_ERROR_CONN_LOST: /* don't send alert just yet */ - is_warning = 1; - break; - - case SSL_ERROR_INVALID_HANDSHAKE: - case SSL_ERROR_INVALID_PROT_MSG: - alert_num = SSL_ALERT_HANDSHAKE_FAILURE; - break; - - case SSL_ERROR_INVALID_HMAC: - case SSL_ERROR_FINISHED_INVALID: - alert_num = SSL_ALERT_BAD_RECORD_MAC; - break; - - case SSL_ERROR_INVALID_VERSION: - alert_num = SSL_ALERT_INVALID_VERSION; - break; - - case SSL_ERROR_INVALID_SESSION: - case SSL_ERROR_NO_CIPHER: - case SSL_ERROR_INVALID_KEY: - alert_num = SSL_ALERT_ILLEGAL_PARAMETER; - break; - - case SSL_ERROR_BAD_CERTIFICATE: - alert_num = SSL_ALERT_BAD_CERTIFICATE; - break; - - default: - /* a catch-all for any badly verified certificates */ - alert_num = (error_code <= SSL_X509_OFFSET) ? - SSL_ALERT_BAD_CERTIFICATE : SSL_ALERT_UNEXPECTED_MESSAGE; - break; - } - - buf[0] = is_warning ? 1 : 2; - buf[1] = alert_num; - send_packet(ssl, PT_ALERT_PROTOCOL, buf, sizeof(buf)); - DISPLAY_ALERT(ssl, alert_num); - return is_warning ? 0 : 1; -} - -/** - * Process a client finished message. - */ -int process_finished(SSL *ssl, int hs_len) -{ - uint8_t *buf = ssl->bm_data; - int ret = SSL_OK; - int is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT); - int resume = IS_SET_SSL_FLAG(SSL_SESSION_RESUME); - - PARANOIA_CHECK(ssl->bm_index, SSL_FINISHED_HASH_SIZE+4); - - /* check that we all work before we continue */ - if (memcmp(ssl->dc->final_finish_mac, &buf[4], SSL_FINISHED_HASH_SIZE)) - return SSL_ERROR_FINISHED_INVALID; - - if ((!is_client && !resume) || (is_client && resume)) - { - if ((ret = send_change_cipher_spec(ssl)) == SSL_OK) - ret = send_finished(ssl); - } - - /* if we ever renegotiate */ - ssl->next_state = is_client ? HS_HELLO_REQUEST : HS_CLIENT_HELLO; - ssl->hs_status = ret; /* set the final handshake status */ - -error: - return ret; -} - -/** - * Send a certificate. - */ -int send_certificate(SSL *ssl) -{ - int i = 0; - uint8_t *buf = ssl->bm_data; - int offset = 7; - int chain_length; - - buf[0] = HS_CERTIFICATE; - buf[1] = 0; - buf[4] = 0; - - while (i < ssl->ssl_ctx->chain_length) - { - SSL_CERT *cert = &ssl->ssl_ctx->certs[i]; - buf[offset++] = 0; - buf[offset++] = cert->size >> 8; /* cert 1 length */ - buf[offset++] = cert->size & 0xff; - memcpy(&buf[offset], cert->buf, cert->size); - offset += cert->size; - i++; - } - - chain_length = offset - 7; - buf[5] = chain_length >> 8; /* cert chain length */ - buf[6] = chain_length & 0xff; - chain_length += 3; - buf[2] = chain_length >> 8; /* handshake length */ - buf[3] = chain_length & 0xff; - ssl->bm_index = offset; - return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, offset); -} - -/** - * Create a blob of memory that we'll get rid of once the handshake is - * complete. - */ -void disposable_new(SSL *ssl) -{ - if (ssl->dc == NULL) - { - ssl->dc = (DISPOSABLE_CTX *)calloc(1, sizeof(DISPOSABLE_CTX)); - MD5_Init(&ssl->dc->md5_ctx); - SHA1_Init(&ssl->dc->sha1_ctx); - } -} - -/** - * Remove the temporary blob of memory. - */ -void disposable_free(SSL *ssl) -{ - if (ssl->dc) - { - free(ssl->dc->key_block); - memset(ssl->dc, 0, sizeof(DISPOSABLE_CTX)); - free(ssl->dc); - ssl->dc = NULL; - } - -} - -#ifndef CONFIG_SSL_SKELETON_MODE /* no session resumption in this mode */ -/** - * Find if an existing session has the same session id. If so, use the - * master secret from this session for session resumption. - */ -SSL_SESSION *ssl_session_update(int max_sessions, SSL_SESSION *ssl_sessions[], - SSL *ssl, const uint8_t *session_id) -{ - time_t tm = time(NULL); - time_t oldest_sess_time = tm; - SSL_SESSION *oldest_sess = NULL; - int i; - - /* no sessions? Then bail */ - if (max_sessions == 0) - return NULL; - - SSL_CTX_LOCK(ssl->ssl_ctx->mutex); - if (session_id) - { - for (i = 0; i < max_sessions; i++) - { - if (ssl_sessions[i]) - { - /* kill off any expired sessions */ - if (tm > ssl_sessions[i]->conn_time + SSL_EXPIRY_TIME) - { - session_free(ssl_sessions, i); - continue; - } - - /* if the session id matches, it must still be less than - the expiry time */ - if (memcmp(ssl_sessions[i]->session_id, session_id, - SSL_SESSION_ID_SIZE) == 0) - { - ssl->session_index = i; - memcpy(ssl->dc->master_secret, - ssl_sessions[i]->master_secret, SSL_SECRET_SIZE); - SET_SSL_FLAG(SSL_SESSION_RESUME); - SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex); - return ssl_sessions[i]; /* a session was found */ - } - } - } - } - - /* If we've got here, no matching session was found - so create one */ - for (i = 0; i < max_sessions; i++) - { - if (ssl_sessions[i] == NULL) - { - /* perfect, this will do */ - ssl_sessions[i] = (SSL_SESSION *)calloc(1, sizeof(SSL_SESSION)); - ssl_sessions[i]->conn_time = tm; - ssl->session_index = i; - SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex); - return ssl_sessions[i]; /* return the session object */ - } - else if (ssl_sessions[i]->conn_time <= oldest_sess_time) - { - /* find the oldest session */ - oldest_sess_time = ssl_sessions[i]->conn_time; - oldest_sess = ssl_sessions[i]; - ssl->session_index = i; - } - } - - /* ok, we've used up all of our sessions. So blow the oldest session away */ - oldest_sess->conn_time = tm; - memset(oldest_sess->session_id, 0, sizeof(SSL_SESSION_ID_SIZE)); - memset(oldest_sess->master_secret, 0, sizeof(SSL_SECRET_SIZE)); - SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex); - return oldest_sess; -} - -/** - * Free an existing session. - */ -static void session_free(SSL_SESSION *ssl_sessions[], int sess_index) -{ - if (ssl_sessions[sess_index]) - { - free(ssl_sessions[sess_index]); - ssl_sessions[sess_index] = NULL; - } -} - -/** - * This ssl object doesn't want this session anymore. - */ -void kill_ssl_session(SSL_SESSION **ssl_sessions, SSL *ssl) -{ - SSL_CTX_LOCK(ssl->ssl_ctx->mutex); - - if (ssl->ssl_ctx->num_sessions) - { - session_free(ssl_sessions, ssl->session_index); - ssl->session = NULL; - } - - SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex); -} -#endif /* CONFIG_SSL_SKELETON_MODE */ - -/* - * Get the session id for a handshake. This will be a 32 byte sequence. - */ -EXP_FUNC const uint8_t * STDCALL ssl_get_session_id(const SSL *ssl) -{ - return ssl->session_id; -} - -/* - * Get the session id size for a handshake. - */ -EXP_FUNC uint8_t STDCALL ssl_get_session_id_size(const SSL *ssl) -{ - return ssl->sess_id_size; -} - -/* - * Return the cipher id (in the SSL form). - */ -EXP_FUNC uint8_t STDCALL ssl_get_cipher_id(const SSL *ssl) -{ - return ssl->cipher; -} - -/* - * Return the status of the handshake. - */ -EXP_FUNC int STDCALL ssl_handshake_status(const SSL *ssl) -{ - return ssl->hs_status; -} - -/* - * Retrieve various parameters about the SSL engine. - */ -EXP_FUNC int STDCALL ssl_get_config(int offset) -{ - switch (offset) - { - /* return the appropriate build mode */ - case SSL_BUILD_MODE: -#if defined(CONFIG_SSL_FULL_MODE) - return SSL_BUILD_FULL_MODE; -#elif defined(CONFIG_SSL_ENABLE_CLIENT) - return SSL_BUILD_ENABLE_CLIENT; -#elif defined(CONFIG_ENABLE_VERIFICATION) - return SSL_BUILD_ENABLE_VERIFICATION; -#elif defined(CONFIG_SSL_SERVER_ONLY ) - return SSL_BUILD_SERVER_ONLY; -#else - return SSL_BUILD_SKELETON_MODE; -#endif - - case SSL_MAX_CERT_CFG_OFFSET: - return CONFIG_SSL_MAX_CERTS; - -#ifdef CONFIG_SSL_CERT_VERIFICATION - case SSL_MAX_CA_CERT_CFG_OFFSET: - return CONFIG_X509_MAX_CA_CERTS; -#endif -#ifdef CONFIG_SSL_HAS_PEM - case SSL_HAS_PEM: - return 1; -#endif - default: - return 0; - } -} - -#ifdef CONFIG_SSL_CERT_VERIFICATION -/** - * Authenticate a received certificate. - */ -EXP_FUNC int STDCALL ssl_verify_cert(const SSL *ssl) -{ - int ret; - SSL_CTX_LOCK(ssl->ssl_ctx->mutex); - ret = x509_verify(ssl->ssl_ctx->ca_cert_ctx, ssl->x509_ctx); - SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex); - - if (ret) /* modify into an SSL error type */ - { - ret = SSL_X509_ERROR(ret); - } - - return ret; -} - -/** - * Process a certificate message. - */ -int process_certificate(SSL *ssl, X509_CTX **x509_ctx) -{ - int ret = SSL_OK; - uint8_t *buf = &ssl->bm_data[ssl->dc->bm_proc_index]; - int pkt_size = ssl->bm_index; - int cert_size, offset = 5; - int total_cert_size = (buf[offset]<<8) + buf[offset+1]; - int is_client = IS_SET_SSL_FLAG(SSL_IS_CLIENT); - X509_CTX **chain = x509_ctx; - offset += 2; - - PARANOIA_CHECK(total_cert_size, offset); - - while (offset < total_cert_size) - { - offset++; /* skip empty char */ - cert_size = (buf[offset]<<8) + buf[offset+1]; - offset += 2; - - if (x509_new(&buf[offset], NULL, chain)) - { - ret = SSL_ERROR_BAD_CERTIFICATE; - goto error; - } - - /* DISPLAY_CERT(ssl, *chain); */ - chain = &((*chain)->next); - offset += cert_size; - } - - PARANOIA_CHECK(pkt_size, offset); - - /* if we are client we can do the verify now or later */ - if (is_client && !IS_SET_SSL_FLAG(SSL_SERVER_VERIFY_LATER)) - { - ret = ssl_verify_cert(ssl); - } - - ssl->next_state = is_client ? HS_SERVER_HELLO_DONE : HS_CLIENT_KEY_XCHG; - ssl->dc->bm_proc_index += offset; -error: - return ret; -} - -#endif /* CONFIG_SSL_CERT_VERIFICATION */ - -/** - * Debugging routine to display SSL handshaking stuff. - */ -#ifdef CONFIG_SSL_FULL_MODE -/** - * Debugging routine to display SSL states. - */ -void DISPLAY_STATE(SSL *ssl, int is_send, uint8_t state, int not_ok) -{ - const char *str; - - if (!IS_SET_SSL_FLAG(SSL_DISPLAY_STATES)) - return; - - printf(not_ok ? "Error - invalid State:\t" : "State:\t"); - printf(is_send ? "sending " : "receiving "); - - switch (state) - { - case HS_HELLO_REQUEST: - str = "Hello Request (0)"; - break; - - case HS_CLIENT_HELLO: - str = "Client Hello (1)"; - break; - - case HS_SERVER_HELLO: - str = "Server Hello (2)"; - break; - - case HS_CERTIFICATE: - str = "Certificate (11)"; - break; - - case HS_SERVER_KEY_XCHG: - str = "Certificate Request (12)"; - break; - - case HS_CERT_REQ: - str = "Certificate Request (13)"; - break; - - case HS_SERVER_HELLO_DONE: - str = "Server Hello Done (14)"; - break; - - case HS_CERT_VERIFY: - str = "Certificate Verify (15)"; - break; - - case HS_CLIENT_KEY_XCHG: - str = "Client Key Exchange (16)"; - break; - - case HS_FINISHED: - str = "Finished (16)"; - break; - - default: - str = "Error (Unknown)"; - - break; - } - - printf("%s\n", str); - TTY_FLUSH(); -} - -/** - * Debugging routine to display X509 certificates. - */ -void DISPLAY_CERT(SSL *ssl, const X509_CTX *x509_ctx) -{ - if (!IS_SET_SSL_FLAG(SSL_DISPLAY_CERTS)) - return; - - x509_print(x509_ctx, ssl->ssl_ctx->ca_cert_ctx); - TTY_FLUSH(); -} - -/** - * Debugging routine to display RSA objects - */ -void DISPLAY_RSA(SSL *ssl, const RSA_CTX *rsa_ctx) -{ - if (!IS_SET_SSL_FLAG(SSL_DISPLAY_RSA)) - return; - - RSA_print(rsa_ctx); - TTY_FLUSH(); -} - -/** - * Debugging routine to display SSL handshaking bytes. - */ -void DISPLAY_BYTES(SSL *ssl, const char *format, - const uint8_t *data, int size, ...) -{ - va_list(ap); - - if (!IS_SET_SSL_FLAG(SSL_DISPLAY_BYTES)) - return; - - va_start(ap, size); - print_blob(format, data, size, va_arg(ap, char *)); - va_end(ap); - TTY_FLUSH(); -} - -/** - * Debugging routine to display SSL handshaking errors. - */ -EXP_FUNC void STDCALL ssl_display_error(int error_code) -{ - if (error_code == SSL_OK) - return; - - printf("Error: "); - - /* X509 error? */ - if (error_code < SSL_X509_OFFSET) - { - printf("%s\n", x509_display_error(error_code - SSL_X509_OFFSET)); - return; - } - - /* SSL alert error code */ - if (error_code > SSL_ERROR_CONN_LOST) - { - printf("SSL error %d\n", -error_code); - return; - } - - switch (error_code) - { - case SSL_ERROR_DEAD: - printf("connection dead"); - break; - - case SSL_ERROR_INVALID_HANDSHAKE: - printf("invalid handshake"); - break; - - case SSL_ERROR_INVALID_PROT_MSG: - printf("invalid protocol message"); - break; - - case SSL_ERROR_INVALID_HMAC: - printf("invalid mac"); - break; - - case SSL_ERROR_INVALID_VERSION: - printf("invalid version"); - break; - - case SSL_ERROR_INVALID_SESSION: - printf("invalid session"); - break; - - case SSL_ERROR_NO_CIPHER: - printf("no cipher"); - break; - - case SSL_ERROR_CONN_LOST: - printf("connection lost"); - break; - - case SSL_ERROR_BAD_CERTIFICATE: - printf("bad certificate"); - break; - - case SSL_ERROR_INVALID_KEY: - printf("invalid key"); - break; - - case SSL_ERROR_FINISHED_INVALID: - printf("finished invalid"); - break; - - case SSL_ERROR_NO_CERT_DEFINED: - printf("no certificate defined"); - break; - - case SSL_ERROR_NOT_SUPPORTED: - printf("Option not supported"); - break; - - default: - printf("undefined as yet - %d", error_code); - break; - } - - printf("\n"); - TTY_FLUSH(); -} - -/** - * Debugging routine to display alerts. - */ -void DISPLAY_ALERT(SSL *ssl, int alert) -{ - if (!IS_SET_SSL_FLAG(SSL_DISPLAY_STATES)) - return; - - printf("Alert: "); - - switch (alert) - { - case SSL_ALERT_CLOSE_NOTIFY: - printf("close notify"); - break; - - case SSL_ALERT_INVALID_VERSION: - printf("invalid version"); - break; - - case SSL_ALERT_BAD_CERTIFICATE: - printf("bad certificate"); - break; - - case SSL_ALERT_UNEXPECTED_MESSAGE: - printf("unexpected message"); - break; - - case SSL_ALERT_BAD_RECORD_MAC: - printf("bad record mac"); - break; - - case SSL_ALERT_HANDSHAKE_FAILURE: - printf("handshake failure"); - break; - - case SSL_ALERT_ILLEGAL_PARAMETER: - printf("illegal parameter"); - break; - - case SSL_ALERT_DECODE_ERROR: - printf("decode error"); - break; - - case SSL_ALERT_DECRYPT_ERROR: - printf("decrypt error"); - break; - - default: - printf("alert - (unknown %d)", alert); - break; - } - - printf("\n"); - TTY_FLUSH(); -} - -#endif /* CONFIG_SSL_FULL_MODE */ - -/** - * Return the version of this library. - */ -EXP_FUNC const char * STDCALL ssl_version() -{ - static const char * axtls_version = AXTLS_VERSION; - return axtls_version; -} - -/** - * Enable the various language bindings to work regardless of the - * configuration - they just return an error statement and a bad return code. - */ -#if !defined(CONFIG_SSL_FULL_MODE) -EXP_FUNC void STDCALL ssl_display_error(int error_code) {} -#endif - -#ifdef CONFIG_BINDINGS -#if !defined(CONFIG_SSL_ENABLE_CLIENT) -EXP_FUNC SSL * STDCALL ssl_client_new(SSL_CTX *ssl_ctx, int client_fd, const - uint8_t *session_id, uint8_t sess_id_size) -{ - printf(unsupported_str); - return NULL; -} -#endif - -#if !defined(CONFIG_SSL_CERT_VERIFICATION) -EXP_FUNC int STDCALL ssl_verify_cert(const SSL *ssl) -{ - printf(unsupported_str); - return -1; -} - -EXP_FUNC const char * STDCALL ssl_get_cert_dn(const SSL *ssl, int component) -{ - printf(unsupported_str); - return NULL; -} - -#endif /* CONFIG_SSL_CERT_VERIFICATION */ - -#endif /* CONFIG_BINDINGS */ - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.h deleted file mode 100755 index b64b4fda62..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1.h +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file tls1.h - * - * @brief The definitions for the TLS library. - */ -#ifndef HEADER_SSL_LIB_H -#define HEADER_SSL_LIB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "version.h" -#include "crypto.h" -#include "os_port.h" -#include "crypto_misc.h" - -#define SSL_RANDOM_SIZE 32 -#define SSL_SECRET_SIZE 48 -#define SSL_FINISHED_HASH_SIZE 12 -#define SSL_RECORD_SIZE 5 -#define SSL_SERVER_READ 0 -#define SSL_SERVER_WRITE 1 -#define SSL_CLIENT_READ 2 -#define SSL_CLIENT_WRITE 3 -#define SSL_HS_HDR_SIZE 4 - -/* the flags we use while establishing a connection */ -#define SSL_NEED_RECORD 0x0001 -#define SSL_TX_ENCRYPTED 0x0002 -#define SSL_RX_ENCRYPTED 0x0004 -#define SSL_SESSION_RESUME 0x0008 -#define SSL_IS_CLIENT 0x0010 -#define SSL_HAS_CERT_REQ 0x0020 - -/* some macros to muck around with flag bits */ -#define SET_SSL_FLAG(A) (ssl->flag |= A) -#define CLR_SSL_FLAG(A) (ssl->flag &= ~A) -#define IS_SET_SSL_FLAG(A) (ssl->flag & A) - -#define MAX_KEY_BYTE_SIZE 512 /* for a 4096 bit key */ -#define RT_MAX_PLAIN_LENGTH 16384 -#define RT_EXTRA 1024 -#define BM_RECORD_OFFSET 5 - -#ifdef CONFIG_SSL_SKELETON_MODE -#define NUM_PROTOCOLS 1 -#else -#define NUM_PROTOCOLS 4 -#endif - -#define PARANOIA_CHECK(A, B) if (A < B) { \ - ret = SSL_ERROR_INVALID_HANDSHAKE; goto error; } - -/* protocol types */ -enum -{ - PT_CHANGE_CIPHER_SPEC = 20, - PT_ALERT_PROTOCOL, - PT_HANDSHAKE_PROTOCOL, - PT_APP_PROTOCOL_DATA -}; - -/* handshaking types */ -enum -{ - HS_HELLO_REQUEST, - HS_CLIENT_HELLO, - HS_SERVER_HELLO, - HS_CERTIFICATE = 11, - HS_SERVER_KEY_XCHG, - HS_CERT_REQ, - HS_SERVER_HELLO_DONE, - HS_CERT_VERIFY, - HS_CLIENT_KEY_XCHG, - HS_FINISHED = 20 -}; - -typedef struct -{ - uint8_t cipher; - uint8_t key_size; - uint8_t iv_size; - uint8_t key_block_size; - uint8_t padding_size; - uint8_t digest_size; - hmac_func hmac; - crypt_func encrypt; - crypt_func decrypt; -} cipher_info_t; - -struct _SSLObjLoader -{ - uint8_t *buf; - int len; -}; - -typedef struct _SSLObjLoader SSLObjLoader; - -typedef struct -{ - time_t conn_time; - uint8_t session_id[SSL_SESSION_ID_SIZE]; - uint8_t master_secret[SSL_SECRET_SIZE]; -} SSL_SESSION; - -typedef struct -{ - uint8_t *buf; - int size; -} SSL_CERT; - -typedef struct -{ - MD5_CTX md5_ctx; - SHA1_CTX sha1_ctx; - uint8_t final_finish_mac[SSL_FINISHED_HASH_SIZE]; - uint8_t *key_block; - uint8_t master_secret[SSL_SECRET_SIZE]; - uint8_t client_random[SSL_RANDOM_SIZE]; /* client's random sequence */ - uint8_t server_random[SSL_RANDOM_SIZE]; /* server's random sequence */ - uint16_t bm_proc_index; -} DISPOSABLE_CTX; - -struct _SSL -{ - uint32_t flag; - uint16_t need_bytes; - uint16_t got_bytes; - uint8_t record_type; - uint8_t cipher; - uint8_t sess_id_size; - int16_t next_state; - int16_t hs_status; - DISPOSABLE_CTX *dc; /* temporary data which we'll get rid of soon */ - int client_fd; - const cipher_info_t *cipher_info; - void *encrypt_ctx; - void *decrypt_ctx; - uint8_t bm_all_data[RT_MAX_PLAIN_LENGTH+RT_EXTRA]; - uint8_t *bm_data; - uint16_t bm_index; - uint16_t bm_read_index; - struct _SSL *next; /* doubly linked list */ - struct _SSL *prev; - struct _SSL_CTX *ssl_ctx; /* back reference to a clnt/svr ctx */ -#ifndef CONFIG_SSL_SKELETON_MODE - uint16_t session_index; - SSL_SESSION *session; -#endif -#ifdef CONFIG_SSL_CERT_VERIFICATION - X509_CTX *x509_ctx; -#endif - - uint8_t session_id[SSL_SESSION_ID_SIZE]; - uint8_t client_mac[SHA1_SIZE]; /* for HMAC verification */ - uint8_t server_mac[SHA1_SIZE]; /* for HMAC verification */ - uint8_t read_sequence[8]; /* 64 bit sequence number */ - uint8_t write_sequence[8]; /* 64 bit sequence number */ - uint8_t hmac_header[SSL_RECORD_SIZE]; /* rx hmac */ -}; - -typedef struct _SSL SSL; - -struct _SSL_CTX -{ - uint32_t options; - uint8_t chain_length; - RSA_CTX *rsa_ctx; -#ifdef CONFIG_SSL_CERT_VERIFICATION - CA_CERT_CTX *ca_cert_ctx; -#endif - SSL *head; - SSL *tail; - SSL_CERT certs[CONFIG_SSL_MAX_CERTS]; -#ifndef CONFIG_SSL_SKELETON_MODE - uint16_t num_sessions; - SSL_SESSION **ssl_sessions; -#endif -#ifdef CONFIG_SSL_CTX_MUTEXING - SSL_CTX_MUTEX_TYPE mutex; -#endif -#ifdef CONFIG_OPENSSL_COMPATIBLE - void *bonus_attr; -#endif -}; - -typedef struct _SSL_CTX SSL_CTX; - -/* backwards compatibility */ -typedef struct _SSL_CTX SSLCTX; - -extern const uint8_t ssl_prot_prefs[NUM_PROTOCOLS]; - -SSL *ssl_new(SSL_CTX *ssl_ctx, int client_fd); -void disposable_new(SSL *ssl); -void disposable_free(SSL *ssl); -int send_packet(SSL *ssl, uint8_t protocol, - const uint8_t *in, int length); -int do_svr_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len); -int do_clnt_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len); -int process_finished(SSL *ssl, int hs_len); -int process_sslv23_client_hello(SSL *ssl); -int send_alert(SSL *ssl, int error_code); -int send_finished(SSL *ssl); -int send_certificate(SSL *ssl); -int basic_read(SSL *ssl, uint8_t **in_data); -int send_change_cipher_spec(SSL *ssl); -void finished_digest(SSL *ssl, const char *label, uint8_t *digest); -void generate_master_secret(SSL *ssl, const uint8_t *premaster_secret); -void add_packet(SSL *ssl, const uint8_t *pkt, int len); -int add_cert(SSL_CTX *ssl_ctx, const uint8_t *buf, int len); -int add_private_key(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj); -void ssl_obj_free(SSLObjLoader *ssl_obj); -int pkcs8_decode(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj, const char *password); -int pkcs12_decode(SSL_CTX *ssl_ctx, SSLObjLoader *ssl_obj, const char *password); -int load_key_certs(SSL_CTX *ssl_ctx); -#ifdef CONFIG_SSL_CERT_VERIFICATION -int add_cert_auth(SSL_CTX *ssl_ctx, const uint8_t *buf, int len); -void remove_ca_certs(CA_CERT_CTX *ca_cert_ctx); -#endif -#ifdef CONFIG_SSL_ENABLE_CLIENT -int do_client_connect(SSL *ssl); -#endif - -#ifdef CONFIG_SSL_FULL_MODE -void DISPLAY_STATE(SSL *ssl, int is_send, uint8_t state, int not_ok); -void DISPLAY_BYTES(SSL *ssl, const char *format, - const uint8_t *data, int size, ...); -void DISPLAY_CERT(SSL *ssl, const X509_CTX *x509_ctx); -void DISPLAY_RSA(SSL *ssl, const RSA_CTX *rsa_ctx); -void DISPLAY_ALERT(SSL *ssl, int alert); -#else -#define DISPLAY_STATE(A,B,C,D) -#define DISPLAY_CERT(A,B) -#define DISPLAY_RSA(A,B) -#define DISPLAY_ALERT(A, B) -#ifdef WIN32 -void DISPLAY_BYTES(SSL *ssl, const char *format,/* win32 has no variadic macros */ - const uint8_t *data, int size, ...); -#else -#define DISPLAY_BYTES(A,B,C,D,...) -#endif -#endif - -#ifdef CONFIG_SSL_CERT_VERIFICATION -int process_certificate(SSL *ssl, X509_CTX **x509_ctx); -#endif - -SSL_SESSION *ssl_session_update(int max_sessions, - SSL_SESSION *ssl_sessions[], SSL *ssl, - const uint8_t *session_id); -void kill_ssl_session(SSL_SESSION **ssl_sessions, SSL *ssl); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_clnt.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_clnt.c deleted file mode 100644 index 91314333c0..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_clnt.c +++ /dev/null @@ -1,386 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include - -#include "ssl.h" - -#ifdef CONFIG_SSL_ENABLE_CLIENT /* all commented out if no client */ - -static int send_client_hello(SSL *ssl); -static int process_server_hello(SSL *ssl); -static int process_server_hello_done(SSL *ssl); -static int send_client_key_xchg(SSL *ssl); -static int process_cert_req(SSL *ssl); -static int send_cert_verify(SSL *ssl); - -/* - * Establish a new SSL connection to an SSL server. - */ -EXP_FUNC SSL * STDCALL ssl_client_new(SSL_CTX *ssl_ctx, int client_fd, const - uint8_t *session_id, uint8_t sess_id_size) -{ - SSL *ssl; - int ret; - - SOCKET_BLOCK(client_fd); /* ensure blocking mode */ - ssl = ssl_new(ssl_ctx, client_fd); - - if (session_id && ssl_ctx->num_sessions) - { - if (sess_id_size > SSL_SESSION_ID_SIZE) /* validity check */ - { - ssl_free(ssl); - return NULL; - } - - memcpy(ssl->session_id, session_id, sess_id_size); - ssl->sess_id_size = sess_id_size; - SET_SSL_FLAG(SSL_SESSION_RESUME); /* just flag for later */ - } - - SET_SSL_FLAG(SSL_IS_CLIENT); - ret = do_client_connect(ssl); - return ssl; -} - -/* - * Process the handshake record. - */ -int do_clnt_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len) -{ - int ret = SSL_OK; - - /* To get here the state must be valid */ - switch (handshake_type) - { - case HS_SERVER_HELLO: - ret = process_server_hello(ssl); - break; - - case HS_CERTIFICATE: - ret = process_certificate(ssl, &ssl->x509_ctx); - break; - - case HS_SERVER_HELLO_DONE: - if ((ret = process_server_hello_done(ssl)) == SSL_OK) - { - if (IS_SET_SSL_FLAG(SSL_HAS_CERT_REQ)) - { - if ((ret = send_certificate(ssl)) == SSL_OK && - (ret = send_client_key_xchg(ssl)) == SSL_OK) - { - send_cert_verify(ssl); - } - } - else - { - ret = send_client_key_xchg(ssl); - } - - if (ret == SSL_OK && - (ret = send_change_cipher_spec(ssl)) == SSL_OK) - { - ret = send_finished(ssl); - } - } - break; - - case HS_CERT_REQ: - ret = process_cert_req(ssl); - break; - - case HS_FINISHED: - ret = process_finished(ssl, hs_len); - disposable_free(ssl); /* free up some memory */ - break; - - case HS_HELLO_REQUEST: - disposable_new(ssl); - ret = do_client_connect(ssl); - break; - } - - return ret; -} - -/* - * Do the handshaking from the beginning. - */ -int do_client_connect(SSL *ssl) -{ - int ret = SSL_OK; - - send_client_hello(ssl); /* send the client hello */ - ssl->bm_read_index = 0; - ssl->next_state = HS_SERVER_HELLO; - ssl->hs_status = SSL_NOT_OK; /* not connected */ - x509_free(ssl->x509_ctx); - - /* sit in a loop until it all looks good */ - while (ssl->hs_status != SSL_OK) - { - ret = basic_read(ssl, NULL); - - if (ret < SSL_OK) - { - if (ret != SSL_ERROR_CONN_LOST) - { - /* let the server know we are dying and why */ - if (send_alert(ssl, ret)) - { - /* something nasty happened, so get rid of it */ - kill_ssl_session(ssl->ssl_ctx->ssl_sessions, ssl); - } - } - - break; - } - } - - ssl->hs_status = ret; /* connected? */ - return ret; -} - -/* - * Send the initial client hello. - */ -static int send_client_hello(SSL *ssl) -{ - uint8_t *buf = ssl->bm_data; - time_t tm = time(NULL); - uint8_t *tm_ptr = &buf[6]; /* time will go here */ - int i, offset; - - buf[0] = HS_CLIENT_HELLO; - buf[1] = 0; - buf[2] = 0; - /* byte 3 is calculated later */ - buf[4] = 0x03; - buf[5] = 0x01; - - /* client random value - spec says that 1st 4 bytes are big endian time */ - *tm_ptr++ = (uint8_t)(((long)tm & 0xff000000) >> 24); - *tm_ptr++ = (uint8_t)(((long)tm & 0x00ff0000) >> 16); - *tm_ptr++ = (uint8_t)(((long)tm & 0x0000ff00) >> 8); - *tm_ptr++ = (uint8_t)(((long)tm & 0x000000ff)); - get_random(SSL_RANDOM_SIZE-4, &buf[10]); - memcpy(ssl->dc->client_random, &buf[6], SSL_RANDOM_SIZE); - offset = 6 + SSL_RANDOM_SIZE; - - /* give session resumption a go */ - if (IS_SET_SSL_FLAG(SSL_SESSION_RESUME)) /* set initially by user */ - { - buf[offset++] = ssl->sess_id_size; - memcpy(&buf[offset], ssl->session_id, ssl->sess_id_size); - offset += ssl->sess_id_size; - CLR_SSL_FLAG(SSL_SESSION_RESUME); /* clear so we can set later */ - } - else - { - /* no session id - because no session resumption just yet */ - buf[offset++] = 0; - } - - buf[offset++] = 0; /* number of ciphers */ - buf[offset++] = NUM_PROTOCOLS*2;/* number of ciphers */ - - /* put all our supported protocols in our request */ - for (i = 0; i < NUM_PROTOCOLS; i++) - { - buf[offset++] = 0; /* cipher we are using */ - buf[offset++] = ssl_prot_prefs[i]; - } - - buf[offset++] = 1; /* no compression */ - buf[offset++] = 0; - buf[3] = offset - 4; /* handshake size */ - - return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, offset); -} - -/* - * Process the server hello. - */ -static int process_server_hello(SSL *ssl) -{ - uint8_t *buf = ssl->bm_data; - int pkt_size = ssl->bm_index; - int version = (buf[4] << 4) + buf[5]; - int num_sessions = ssl->ssl_ctx->num_sessions; - uint8_t sess_id_size; - int offset, ret = SSL_OK; - - /* check that we are talking to a TLSv1 server */ - if (version != 0x31) - return SSL_ERROR_INVALID_VERSION; - - /* get the server random value */ - memcpy(ssl->dc->server_random, &buf[6], SSL_RANDOM_SIZE); - offset = 6 + SSL_RANDOM_SIZE; /* skip of session id size */ - sess_id_size = buf[offset++]; - - if (num_sessions) - { - ssl->session = ssl_session_update(num_sessions, - ssl->ssl_ctx->ssl_sessions, ssl, &buf[offset]); - memcpy(ssl->session->session_id, &buf[offset], sess_id_size); - - /* pad the rest with 0's */ - if (sess_id_size < SSL_SESSION_ID_SIZE) - { - memset(&ssl->session->session_id[sess_id_size], 0, - SSL_SESSION_ID_SIZE-sess_id_size); - } - } - - memcpy(ssl->session_id, &buf[offset], sess_id_size); - ssl->sess_id_size = sess_id_size; - offset += sess_id_size; - - /* get the real cipher we are using */ - ssl->cipher = buf[++offset]; - ssl->next_state = IS_SET_SSL_FLAG(SSL_SESSION_RESUME) ? - HS_FINISHED : HS_CERTIFICATE; - - offset++; // skip the compr - PARANOIA_CHECK(pkt_size, offset); - ssl->dc->bm_proc_index = offset+1; - -error: - return ret; -} - -/** - * Process the server hello done message. - */ -static int process_server_hello_done(SSL *ssl) -{ - ssl->next_state = HS_FINISHED; - return SSL_OK; -} - -/* - * Send a client key exchange message. - */ -static int send_client_key_xchg(SSL *ssl) -{ - uint8_t *buf = ssl->bm_data; - uint8_t premaster_secret[SSL_SECRET_SIZE]; - int enc_secret_size = -1; - - buf[0] = HS_CLIENT_KEY_XCHG; - buf[1] = 0; - - premaster_secret[0] = 0x03; /* encode the version number */ - premaster_secret[1] = 0x01; - get_random(SSL_SECRET_SIZE-2, &premaster_secret[2]); - DISPLAY_RSA(ssl, ssl->x509_ctx->rsa_ctx); - - /* rsa_ctx->bi_ctx is not thread-safe */ - SSL_CTX_LOCK(ssl->ssl_ctx->mutex); - enc_secret_size = RSA_encrypt(ssl->x509_ctx->rsa_ctx, premaster_secret, - SSL_SECRET_SIZE, &buf[6], 0); - SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex); - - buf[2] = (enc_secret_size + 2) >> 8; - buf[3] = (enc_secret_size + 2) & 0xff; - buf[4] = enc_secret_size >> 8; - buf[5] = enc_secret_size & 0xff; - - generate_master_secret(ssl, premaster_secret); - return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, enc_secret_size+6); -} - -/* - * Process the certificate request. - */ -static int process_cert_req(SSL *ssl) -{ - uint8_t *buf = &ssl->bm_data[ssl->dc->bm_proc_index]; - int ret = SSL_OK; - int offset = (buf[2] << 4) + buf[3]; - int pkt_size = ssl->bm_index; - - /* don't do any processing - we will send back an RSA certificate anyway */ - ssl->next_state = HS_SERVER_HELLO_DONE; - SET_SSL_FLAG(SSL_HAS_CERT_REQ); - ssl->dc->bm_proc_index += offset; - PARANOIA_CHECK(pkt_size, offset); -error: - return ret; -} - -/* - * Send a certificate verify message. - */ -static int send_cert_verify(SSL *ssl) -{ - uint8_t *buf = ssl->bm_data; - uint8_t dgst[MD5_SIZE+SHA1_SIZE]; - RSA_CTX *rsa_ctx = ssl->ssl_ctx->rsa_ctx; - int n = 0, ret; - - DISPLAY_RSA(ssl, rsa_ctx); - - buf[0] = HS_CERT_VERIFY; - buf[1] = 0; - - finished_digest(ssl, NULL, dgst); /* calculate the digest */ - - /* rsa_ctx->bi_ctx is not thread-safe */ - if (rsa_ctx) - { - SSL_CTX_LOCK(ssl->ssl_ctx->mutex); - n = RSA_encrypt(rsa_ctx, dgst, sizeof(dgst), &buf[6], 1); - SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex); - - if (n == 0) - { - ret = SSL_ERROR_INVALID_KEY; - goto error; - } - } - - buf[4] = n >> 8; /* add the RSA size (not officially documented) */ - buf[5] = n & 0xff; - n += 2; - buf[2] = n >> 8; - buf[3] = n & 0xff; - ret = send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, n+4); - -error: - return ret; -} - -#endif /* CONFIG_SSL_ENABLE_CLIENT */ diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_svr.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_svr.c deleted file mode 100644 index 45b9bec6a6..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/tls1_svr.c +++ /dev/null @@ -1,476 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include - -#include "ssl.h" - -static const uint8_t g_hello_done[] = { HS_SERVER_HELLO_DONE, 0, 0, 0 }; - -static int process_client_hello(SSL *ssl); -static int send_server_hello_sequence(SSL *ssl); -static int send_server_hello(SSL *ssl); -static int send_server_hello_done(SSL *ssl); -static int process_client_key_xchg(SSL *ssl); -#ifdef CONFIG_SSL_CERT_VERIFICATION -static int send_certificate_request(SSL *ssl); -static int process_cert_verify(SSL *ssl); -#endif - -/* - * Establish a new SSL connection to an SSL client. - */ -EXP_FUNC SSL * STDCALL ssl_server_new(SSL_CTX *ssl_ctx, int client_fd) -{ - SSL *ssl; - - ssl = ssl_new(ssl_ctx, client_fd); - ssl->next_state = HS_CLIENT_HELLO; - -#ifdef CONFIG_SSL_FULL_MODE - if (ssl_ctx->chain_length == 0) - printf("Warning - no server certificate defined\n"); TTY_FLUSH(); -#endif - - return ssl; -} - -/* - * Process the handshake record. - */ -int do_svr_handshake(SSL *ssl, int handshake_type, uint8_t *buf, int hs_len) -{ - int ret = SSL_OK; - ssl->hs_status = SSL_NOT_OK; /* not connected */ - - /* To get here the state must be valid */ - switch (handshake_type) - { - case HS_CLIENT_HELLO: - if ((ret = process_client_hello(ssl)) == SSL_OK) - ret = send_server_hello_sequence(ssl); - break; - -#ifdef CONFIG_SSL_CERT_VERIFICATION - case HS_CERTIFICATE:/* the client sends its cert */ - ret = process_certificate(ssl, &ssl->x509_ctx); - - if (ret == SSL_OK) /* verify the cert */ - { - int cert_res; - cert_res = x509_verify( - ssl->ssl_ctx->ca_cert_ctx, ssl->x509_ctx); - ret = (cert_res == 0) ? SSL_OK : SSL_X509_ERROR(cert_res); - } - break; - - case HS_CERT_VERIFY: - ret = process_cert_verify(ssl); - add_packet(ssl, buf, hs_len); /* needs to be done after */ - break; -#endif - case HS_CLIENT_KEY_XCHG: - ret = process_client_key_xchg(ssl); - break; - - case HS_FINISHED: - ret = process_finished(ssl, hs_len); - disposable_free(ssl); /* free up some memory */ - break; - } - - return ret; -} - -/* - * Process a client hello message. - */ -static int process_client_hello(SSL *ssl) -{ - uint8_t *buf = ssl->bm_data; - uint8_t *record_buf = ssl->hmac_header; - int pkt_size = ssl->bm_index; - int i, j, cs_len, id_len, offset = 6 + SSL_RANDOM_SIZE; - int version = (record_buf[1] << 4) + record_buf[2]; - int ret = SSL_OK; - - /* should be v3.1 (TLSv1) or better - we'll send in v3.1 mode anyway */ - if (version < 0x31) - { - ret = SSL_ERROR_INVALID_VERSION; - ssl_display_error(ret); - goto error; - } - - memcpy(ssl->dc->client_random, &buf[6], SSL_RANDOM_SIZE); - - /* process the session id */ - id_len = buf[offset++]; - if (id_len > SSL_SESSION_ID_SIZE) - { - return SSL_ERROR_INVALID_SESSION; - } - -#ifndef CONFIG_SSL_SKELETON_MODE - ssl->session = ssl_session_update(ssl->ssl_ctx->num_sessions, - ssl->ssl_ctx->ssl_sessions, ssl, id_len ? &buf[offset] : NULL); -#endif - - offset += id_len; - cs_len = (buf[offset]<<8) + buf[offset+1]; - offset += 3; /* add 1 due to all cipher suites being 8 bit */ - - PARANOIA_CHECK(pkt_size, offset); - - /* work out what cipher suite we are going to use */ - for (j = 0; j < NUM_PROTOCOLS; j++) - { - for (i = 0; i < cs_len; i += 2) - { - if (ssl_prot_prefs[j] == buf[offset+i]) /* got a match? */ - { - ssl->cipher = ssl_prot_prefs[j]; - goto do_state; - } - } - } - - /* ouch! protocol is not supported */ - ret = SSL_ERROR_NO_CIPHER; - -do_state: -error: - return ret; -} - -#ifdef CONFIG_SSL_ENABLE_V23_HANDSHAKE -/* - * Some browsers use a hybrid SSLv2 "client hello" - */ -int process_sslv23_client_hello(SSL *ssl) -{ - uint8_t *buf = ssl->bm_data; - int bytes_needed = ((buf[0] & 0x7f) << 8) + buf[1]; - int version = (buf[3] << 4) + buf[4]; - int ret = SSL_OK; - - /* we have already read 3 extra bytes so far */ - int read_len = SOCKET_READ(ssl->client_fd, buf, bytes_needed-3); - int cs_len = buf[1]; - int id_len = buf[3]; - int ch_len = buf[5]; - int i, j, offset = 8; /* start at first cipher */ - int random_offset = 0; - - DISPLAY_BYTES(ssl, "received %d bytes", buf, read_len, read_len); - - /* should be v3.1 (TLSv1) or better - we'll send in v3.1 mode anyway */ - if (version < 0x31) - { - return SSL_ERROR_INVALID_VERSION; - } - - add_packet(ssl, buf, read_len); - - /* connection has gone, so die */ - if (bytes_needed < 0) - { - return SSL_ERROR_CONN_LOST; - } - - /* now work out what cipher suite we are going to use */ - for (j = 0; j < NUM_PROTOCOLS; j++) - { - for (i = 0; i < cs_len; i += 3) - { - if (ssl_prot_prefs[j] == buf[offset+i]) - { - ssl->cipher = ssl_prot_prefs[j]; - goto server_hello; - } - } - } - - /* ouch! protocol is not supported */ - ret = SSL_ERROR_NO_CIPHER; - goto error; - -server_hello: - /* get the session id */ - offset += cs_len - 2; /* we've gone 2 bytes past the end */ -#ifndef CONFIG_SSL_SKELETON_MODE - ssl->session = ssl_session_update(ssl->ssl_ctx->num_sessions, - ssl->ssl_ctx->ssl_sessions, ssl, id_len ? &buf[offset] : NULL); -#endif - - /* get the client random data */ - offset += id_len; - - /* random can be anywhere between 16 and 32 bytes long - so it is padded - * with 0's to the left */ - if (ch_len == 0x10) - { - random_offset += 0x10; - } - - memcpy(&ssl->dc->client_random[random_offset], &buf[offset], ch_len); - ret = send_server_hello_sequence(ssl); - -error: - return ret; -} -#endif - -/* - * Send the entire server hello sequence - */ -static int send_server_hello_sequence(SSL *ssl) -{ - int ret; - - if ((ret = send_server_hello(ssl)) == SSL_OK) - { -#ifndef CONFIG_SSL_SKELETON_MODE - /* resume handshake? */ - if (IS_SET_SSL_FLAG(SSL_SESSION_RESUME)) - { - if ((ret = send_change_cipher_spec(ssl)) == SSL_OK) - { - ret = send_finished(ssl); - ssl->next_state = HS_FINISHED; - } - } - else -#endif - if ((ret = send_certificate(ssl)) == SSL_OK) - { -#ifdef CONFIG_SSL_CERT_VERIFICATION - /* ask the client for its certificate */ - if (IS_SET_SSL_FLAG(SSL_CLIENT_AUTHENTICATION)) - { - if ((ret = send_certificate_request(ssl)) == SSL_OK) - { - ret = send_server_hello_done(ssl); - ssl->next_state = HS_CERTIFICATE; - } - } - else -#endif - { - ret = send_server_hello_done(ssl); - ssl->next_state = HS_CLIENT_KEY_XCHG; - } - } - } - - return ret; -} - -/* - * Send a server hello message. - */ -static int send_server_hello(SSL *ssl) -{ - uint8_t *buf = ssl->bm_data; - int offset = 0; - - buf[0] = HS_SERVER_HELLO; - buf[1] = 0; - buf[2] = 0; - /* byte 3 is calculated later */ - buf[4] = 0x03; - buf[5] = 0x01; - - /* server random value */ - get_random(SSL_RANDOM_SIZE, &buf[6]); - memcpy(ssl->dc->server_random, &buf[6], SSL_RANDOM_SIZE); - offset = 6 + SSL_RANDOM_SIZE; - -#ifndef CONFIG_SSL_SKELETON_MODE - if (IS_SET_SSL_FLAG(SSL_SESSION_RESUME)) - { - /* retrieve id from session cache */ - buf[offset++] = SSL_SESSION_ID_SIZE; - memcpy(&buf[offset], ssl->session->session_id, SSL_SESSION_ID_SIZE); - memcpy(ssl->session_id, ssl->session->session_id, SSL_SESSION_ID_SIZE); - ssl->sess_id_size = SSL_SESSION_ID_SIZE; - offset += SSL_SESSION_ID_SIZE; - } - else /* generate our own session id */ -#endif - { -#ifndef CONFIG_SSL_SKELETON_MODE - buf[offset++] = SSL_SESSION_ID_SIZE; - get_random(SSL_SESSION_ID_SIZE, &buf[offset]); - memcpy(ssl->session_id, &buf[offset], SSL_SESSION_ID_SIZE); - ssl->sess_id_size = SSL_SESSION_ID_SIZE; - - /* store id in session cache */ - if (ssl->ssl_ctx->num_sessions) - { - memcpy(ssl->session->session_id, - ssl->session_id, SSL_SESSION_ID_SIZE); - } - - offset += SSL_SESSION_ID_SIZE; -#else - buf[offset++] = 0; /* don't bother with session id in skelton mode */ -#endif - } - - buf[offset++] = 0; /* cipher we are using */ - buf[offset++] = ssl->cipher; - buf[offset++] = 0; /* no compression */ - buf[3] = offset - 4; /* handshake size */ - return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, NULL, offset); -} - -/* - * Send the server hello done message. - */ -static int send_server_hello_done(SSL *ssl) -{ - return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, - g_hello_done, sizeof(g_hello_done)); -} - -/* - * Pull apart a client key exchange message. Decrypt the pre-master key (using - * our RSA private key) and then work out the master key. Initialise the - * ciphers. - */ -static int process_client_key_xchg(SSL *ssl) -{ - uint8_t *buf = &ssl->bm_data[ssl->dc->bm_proc_index]; - int pkt_size = ssl->bm_index; - int premaster_size, secret_length = (buf[2] << 8) + buf[3]; - uint8_t premaster_secret[MAX_KEY_BYTE_SIZE]; - RSA_CTX *rsa_ctx = ssl->ssl_ctx->rsa_ctx; - int offset = 4; - int ret = SSL_OK; - - if (rsa_ctx == NULL) - { - ret = SSL_ERROR_NO_CERT_DEFINED; - goto error; - } - - /* is there an extra size field? */ - if ((secret_length - 2) == rsa_ctx->num_octets) - offset += 2; - - PARANOIA_CHECK(pkt_size, rsa_ctx->num_octets+offset); - - /* rsa_ctx->bi_ctx is not thread-safe */ - SSL_CTX_LOCK(ssl->ssl_ctx->mutex); - premaster_size = RSA_decrypt(rsa_ctx, &buf[offset], premaster_secret, 1); - SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex); - - if (premaster_size != SSL_SECRET_SIZE || - premaster_secret[0] != 0x03 || /* check version is 3.1 (TLS) */ - premaster_secret[1] != 0x01) - { - /* guard against a Bleichenbacher attack */ - memset(premaster_secret, 0, SSL_SECRET_SIZE); - /* and continue - will die eventually when checking the mac */ - } - -#if 0 - print_blob("pre-master", premaster_secret, SSL_SECRET_SIZE); -#endif - - generate_master_secret(ssl, premaster_secret); - -#ifdef CONFIG_SSL_CERT_VERIFICATION - ssl->next_state = IS_SET_SSL_FLAG(SSL_CLIENT_AUTHENTICATION) ? - HS_CERT_VERIFY : HS_FINISHED; -#else - ssl->next_state = HS_FINISHED; -#endif -error: - ssl->dc->bm_proc_index += rsa_ctx->num_octets+offset; - return ret; -} - -#ifdef CONFIG_SSL_CERT_VERIFICATION -static const uint8_t g_cert_request[] = { HS_CERT_REQ, 0, 0, 4, 1, 0, 0, 0 }; - -/* - * Send the certificate request message. - */ -static int send_certificate_request(SSL *ssl) -{ - return send_packet(ssl, PT_HANDSHAKE_PROTOCOL, - g_cert_request, sizeof(g_cert_request)); -} - -/* - * Ensure the client has the private key by first decrypting the packet and - * then checking the packet digests. - */ -static int process_cert_verify(SSL *ssl) -{ - uint8_t *buf = &ssl->bm_data[ssl->dc->bm_proc_index]; - int pkt_size = ssl->bm_index; - uint8_t dgst_buf[MAX_KEY_BYTE_SIZE]; - uint8_t dgst[MD5_SIZE+SHA1_SIZE]; - X509_CTX *x509_ctx = ssl->x509_ctx; - int ret = SSL_OK; - int n; - - PARANOIA_CHECK(pkt_size, x509_ctx->rsa_ctx->num_octets+6); - DISPLAY_RSA(ssl, x509_ctx->rsa_ctx); - - /* rsa_ctx->bi_ctx is not thread-safe */ - SSL_CTX_LOCK(ssl->ssl_ctx->mutex); - n = RSA_decrypt(x509_ctx->rsa_ctx, &buf[6], dgst_buf, 0); - SSL_CTX_UNLOCK(ssl->ssl_ctx->mutex); - - if (n != SHA1_SIZE + MD5_SIZE) - { - ret = SSL_ERROR_INVALID_KEY; - goto end_cert_vfy; - } - - finished_digest(ssl, NULL, dgst); /* calculate the digest */ - if (memcmp(dgst_buf, dgst, MD5_SIZE + SHA1_SIZE)) - { - ret = SSL_ERROR_INVALID_KEY; - } - -end_cert_vfy: - ssl->next_state = HS_FINISHED; -error: - return ret; -} - -#endif diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/version.h b/package/luci/libs/luci-lib-nixio/axTLS/ssl/version.h deleted file mode 100644 index 72260bf19e..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/version.h +++ /dev/null @@ -1 +0,0 @@ -#define AXTLS_VERSION "1.2.1" diff --git a/package/luci/libs/luci-lib-nixio/axTLS/ssl/x509.c b/package/luci/libs/luci-lib-nixio/axTLS/ssl/x509.c deleted file mode 100644 index 37db7f4e81..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/ssl/x509.c +++ /dev/null @@ -1,502 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * @file x509.c - * - * Certificate processing. - */ - -#include -#include -#include -#include -#include "os_port.h" -#include "crypto_misc.h" - -#ifdef CONFIG_SSL_CERT_VERIFICATION -/** - * Retrieve the signature from a certificate. - */ -static const uint8_t *get_signature(const uint8_t *asn1_sig, int *len) -{ - int offset = 0; - const uint8_t *ptr = NULL; - - if (asn1_next_obj(asn1_sig, &offset, ASN1_SEQUENCE) < 0 || - asn1_skip_obj(asn1_sig, &offset, ASN1_SEQUENCE)) - goto end_get_sig; - - if (asn1_sig[offset++] != ASN1_OCTET_STRING) - goto end_get_sig; - *len = get_asn1_length(asn1_sig, &offset); - ptr = &asn1_sig[offset]; /* all ok */ - -end_get_sig: - return ptr; -} - -#endif - -/** - * Construct a new x509 object. - * @return 0 if ok. < 0 if there was a problem. - */ -int x509_new(const uint8_t *cert, int *len, X509_CTX **ctx) -{ - int begin_tbs, end_tbs; - int ret = X509_NOT_OK, offset = 0, cert_size = 0; - X509_CTX *x509_ctx; - BI_CTX *bi_ctx; - - *ctx = (X509_CTX *)calloc(1, sizeof(X509_CTX)); - x509_ctx = *ctx; - - /* get the certificate size */ - asn1_skip_obj(cert, &cert_size, ASN1_SEQUENCE); - - if (asn1_next_obj(cert, &offset, ASN1_SEQUENCE) < 0) - goto end_cert; - - begin_tbs = offset; /* start of the tbs */ - end_tbs = begin_tbs; /* work out the end of the tbs */ - asn1_skip_obj(cert, &end_tbs, ASN1_SEQUENCE); - - if (asn1_next_obj(cert, &offset, ASN1_SEQUENCE) < 0) - goto end_cert; - - if (cert[offset] == ASN1_EXPLICIT_TAG) /* optional version */ - { - if (asn1_version(cert, &offset, x509_ctx)) - goto end_cert; - } - - if (asn1_skip_obj(cert, &offset, ASN1_INTEGER) || /* serial number */ - asn1_next_obj(cert, &offset, ASN1_SEQUENCE) < 0) - goto end_cert; - - /* make sure the signature is ok */ - if (asn1_signature_type(cert, &offset, x509_ctx)) - { - ret = X509_VFY_ERROR_UNSUPPORTED_DIGEST; - goto end_cert; - } - - if (asn1_name(cert, &offset, x509_ctx->ca_cert_dn) || - asn1_validity(cert, &offset, x509_ctx) || - asn1_name(cert, &offset, x509_ctx->cert_dn) || - asn1_public_key(cert, &offset, x509_ctx)) - goto end_cert; - - bi_ctx = x509_ctx->rsa_ctx->bi_ctx; - -#ifdef CONFIG_SSL_CERT_VERIFICATION /* only care if doing verification */ - /* use the appropriate signature algorithm (SHA1/MD5/MD2) */ - if (x509_ctx->sig_type == SIG_TYPE_MD5) - { - MD5_CTX md5_ctx; - uint8_t md5_dgst[MD5_SIZE]; - MD5_Init(&md5_ctx); - MD5_Update(&md5_ctx, &cert[begin_tbs], end_tbs-begin_tbs); - MD5_Final(md5_dgst, &md5_ctx); - x509_ctx->digest = bi_import(bi_ctx, md5_dgst, MD5_SIZE); - } - else if (x509_ctx->sig_type == SIG_TYPE_SHA1) - { - SHA1_CTX sha_ctx; - uint8_t sha_dgst[SHA1_SIZE]; - SHA1_Init(&sha_ctx); - SHA1_Update(&sha_ctx, &cert[begin_tbs], end_tbs-begin_tbs); - SHA1_Final(sha_dgst, &sha_ctx); - x509_ctx->digest = bi_import(bi_ctx, sha_dgst, SHA1_SIZE); - } - else if (x509_ctx->sig_type == SIG_TYPE_MD2) - { - MD2_CTX md2_ctx; - uint8_t md2_dgst[MD2_SIZE]; - MD2_Init(&md2_ctx); - MD2_Update(&md2_ctx, &cert[begin_tbs], end_tbs-begin_tbs); - MD2_Final(md2_dgst, &md2_ctx); - x509_ctx->digest = bi_import(bi_ctx, md2_dgst, MD2_SIZE); - } - - offset = end_tbs; /* skip the v3 data */ - if (asn1_skip_obj(cert, &offset, ASN1_SEQUENCE) || - asn1_signature(cert, &offset, x509_ctx)) - goto end_cert; -#endif - - if (len) - { - *len = cert_size; - } - - ret = X509_OK; -end_cert: - -#ifdef CONFIG_SSL_FULL_MODE - if (ret) - { - printf("Error: Invalid X509 ASN.1 file\n"); - } -#endif - - return ret; -} - -/** - * Free an X.509 object's resources. - */ -void x509_free(X509_CTX *x509_ctx) -{ - X509_CTX *next; - int i; - - if (x509_ctx == NULL) /* if already null, then don't bother */ - return; - - for (i = 0; i < X509_NUM_DN_TYPES; i++) - { - free(x509_ctx->ca_cert_dn[i]); - free(x509_ctx->cert_dn[i]); - } - - free(x509_ctx->signature); - -#ifdef CONFIG_SSL_CERT_VERIFICATION - if (x509_ctx->digest) - { - bi_free(x509_ctx->rsa_ctx->bi_ctx, x509_ctx->digest); - } -#endif - - RSA_free(x509_ctx->rsa_ctx); - - next = x509_ctx->next; - free(x509_ctx); - x509_free(next); /* clear the chain */ -} - -#ifdef CONFIG_SSL_CERT_VERIFICATION -/** - * Take a signature and decrypt it. - */ -static bigint *sig_verify(BI_CTX *ctx, const uint8_t *sig, int sig_len, - bigint *modulus, bigint *pub_exp) -{ - int i, size; - bigint *decrypted_bi, *dat_bi; - bigint *bir = NULL; - uint8_t *block = (uint8_t *)alloca(sig_len); - - /* decrypt */ - dat_bi = bi_import(ctx, sig, sig_len); - ctx->mod_offset = BIGINT_M_OFFSET; - - /* convert to a normal block */ - decrypted_bi = bi_mod_power2(ctx, dat_bi, modulus, pub_exp); - - bi_export(ctx, decrypted_bi, block, sig_len); - ctx->mod_offset = BIGINT_M_OFFSET; - - i = 10; /* start at the first possible non-padded byte */ - while (block[i++] && i < sig_len); - size = sig_len - i; - - /* get only the bit we want */ - if (size > 0) - { - int len; - const uint8_t *sig_ptr = get_signature(&block[i], &len); - - if (sig_ptr) - { - bir = bi_import(ctx, sig_ptr, len); - } - } - - /* save a few bytes of memory */ - bi_clear_cache(ctx); - return bir; -} - -/** - * Do some basic checks on the certificate chain. - * - * Certificate verification consists of a number of checks: - * - The date of the certificate is after the start date. - * - The date of the certificate is before the finish date. - * - A root certificate exists in the certificate store. - * - That the certificate(s) are not self-signed. - * - The certificate chain is valid. - * - The signature of the certificate is valid. - */ -int x509_verify(const CA_CERT_CTX *ca_cert_ctx, const X509_CTX *cert) -{ - int ret = X509_OK, i = 0; - bigint *cert_sig; - X509_CTX *next_cert = NULL; - BI_CTX *ctx = NULL; - bigint *mod = NULL, *expn = NULL; - int match_ca_cert = 0; - struct timeval tv; - uint8_t is_self_signed = 0; - - if (cert == NULL) - { - ret = X509_VFY_ERROR_NO_TRUSTED_CERT; - goto end_verify; - } - - /* a self-signed certificate that is not in the CA store - use this - to check the signature */ - if (asn1_compare_dn(cert->ca_cert_dn, cert->cert_dn) == 0) - { - is_self_signed = 1; - ctx = cert->rsa_ctx->bi_ctx; - mod = cert->rsa_ctx->m; - expn = cert->rsa_ctx->e; - } - - gettimeofday(&tv, NULL); - - /* check the not before date */ - if (tv.tv_sec < cert->not_before) - { - ret = X509_VFY_ERROR_NOT_YET_VALID; - goto end_verify; - } - - /* check the not after date */ - if (tv.tv_sec > cert->not_after) - { - ret = X509_VFY_ERROR_EXPIRED; - goto end_verify; - } - - next_cert = cert->next; - - /* last cert in the chain - look for a trusted cert */ - if (next_cert == NULL) - { - if (ca_cert_ctx != NULL) - { - /* go thu the CA store */ - while (i < CONFIG_X509_MAX_CA_CERTS && ca_cert_ctx->cert[i]) - { - if (asn1_compare_dn(cert->ca_cert_dn, - ca_cert_ctx->cert[i]->cert_dn) == 0) - { - /* use this CA certificate for signature verification */ - match_ca_cert = 1; - ctx = ca_cert_ctx->cert[i]->rsa_ctx->bi_ctx; - mod = ca_cert_ctx->cert[i]->rsa_ctx->m; - expn = ca_cert_ctx->cert[i]->rsa_ctx->e; - break; - } - - i++; - } - } - - /* couldn't find a trusted cert (& let self-signed errors be returned) */ - if (!match_ca_cert && !is_self_signed) - { - ret = X509_VFY_ERROR_NO_TRUSTED_CERT; - goto end_verify; - } - } - else if (asn1_compare_dn(cert->ca_cert_dn, next_cert->cert_dn) != 0) - { - /* check the chain */ - ret = X509_VFY_ERROR_INVALID_CHAIN; - goto end_verify; - } - else /* use the next certificate in the chain for signature verify */ - { - ctx = next_cert->rsa_ctx->bi_ctx; - mod = next_cert->rsa_ctx->m; - expn = next_cert->rsa_ctx->e; - } - - /* cert is self signed */ - if (!match_ca_cert && is_self_signed) - { - ret = X509_VFY_ERROR_SELF_SIGNED; - goto end_verify; - } - - /* check the signature */ - cert_sig = sig_verify(ctx, cert->signature, cert->sig_len, - bi_clone(ctx, mod), bi_clone(ctx, expn)); - - if (cert_sig && cert->digest) - { - if (bi_compare(cert_sig, cert->digest) != 0) - ret = X509_VFY_ERROR_BAD_SIGNATURE; - - - bi_free(ctx, cert_sig); - } - else - { - ret = X509_VFY_ERROR_BAD_SIGNATURE; - } - - if (ret) - goto end_verify; - - /* go down the certificate chain using recursion. */ - if (next_cert != NULL) - { - ret = x509_verify(ca_cert_ctx, next_cert); - } - -end_verify: - return ret; -} -#endif - -#if defined (CONFIG_SSL_FULL_MODE) -/** - * Used for diagnostics. - */ -static const char *not_part_of_cert = ""; -void x509_print(const X509_CTX *cert, CA_CERT_CTX *ca_cert_ctx) -{ - if (cert == NULL) - return; - - printf("=== CERTIFICATE ISSUED TO ===\n"); - printf("Common Name (CN):\t\t"); - printf("%s\n", cert->cert_dn[X509_COMMON_NAME] ? - cert->cert_dn[X509_COMMON_NAME] : not_part_of_cert); - - printf("Organization (O):\t\t"); - printf("%s\n", cert->cert_dn[X509_ORGANIZATION] ? - cert->cert_dn[X509_ORGANIZATION] : not_part_of_cert); - - printf("Organizational Unit (OU):\t"); - printf("%s\n", cert->cert_dn[X509_ORGANIZATIONAL_UNIT] ? - cert->cert_dn[X509_ORGANIZATIONAL_UNIT] : not_part_of_cert); - - printf("=== CERTIFICATE ISSUED BY ===\n"); - printf("Common Name (CN):\t\t"); - printf("%s\n", cert->ca_cert_dn[X509_COMMON_NAME] ? - cert->ca_cert_dn[X509_COMMON_NAME] : not_part_of_cert); - - printf("Organization (O):\t\t"); - printf("%s\n", cert->ca_cert_dn[X509_ORGANIZATION] ? - cert->ca_cert_dn[X509_ORGANIZATION] : not_part_of_cert); - - printf("Organizational Unit (OU):\t"); - printf("%s\n", cert->ca_cert_dn[X509_ORGANIZATIONAL_UNIT] ? - cert->ca_cert_dn[X509_ORGANIZATIONAL_UNIT] : not_part_of_cert); - - printf("Not Before:\t\t\t%s", ctime(&cert->not_before)); - printf("Not After:\t\t\t%s", ctime(&cert->not_after)); - printf("RSA bitsize:\t\t\t%d\n", cert->rsa_ctx->num_octets*8); - printf("Sig Type:\t\t\t"); - switch (cert->sig_type) - { - case SIG_TYPE_MD5: - printf("MD5\n"); - break; - case SIG_TYPE_SHA1: - printf("SHA1\n"); - break; - case SIG_TYPE_MD2: - printf("MD2\n"); - break; - default: - printf("Unrecognized: %d\n", cert->sig_type); - break; - } - - if (ca_cert_ctx) - { - printf("Verify:\t\t\t\t%s\n", - x509_display_error(x509_verify(ca_cert_ctx, cert))); - } - -#if 0 - print_blob("Signature", cert->signature, cert->sig_len); - bi_print("Modulus", cert->rsa_ctx->m); - bi_print("Pub Exp", cert->rsa_ctx->e); -#endif - - if (ca_cert_ctx) - { - x509_print(cert->next, ca_cert_ctx); - } - - TTY_FLUSH(); -} - -const char * x509_display_error(int error) -{ - switch (error) - { - case X509_OK: - return "Certificate verify successful"; - - case X509_NOT_OK: - return "X509 not ok"; - - case X509_VFY_ERROR_NO_TRUSTED_CERT: - return "No trusted cert is available"; - - case X509_VFY_ERROR_BAD_SIGNATURE: - return "Bad signature"; - - case X509_VFY_ERROR_NOT_YET_VALID: - return "Cert is not yet valid"; - - case X509_VFY_ERROR_EXPIRED: - return "Cert has expired"; - - case X509_VFY_ERROR_SELF_SIGNED: - return "Cert is self-signed"; - - case X509_VFY_ERROR_INVALID_CHAIN: - return "Chain is invalid (check order of certs)"; - - case X509_VFY_ERROR_UNSUPPORTED_DIGEST: - return "Unsupported digest"; - - case X509_INVALID_PRIV_KEY: - return "Invalid private key"; - - default: - return "Unknown"; - } -} -#endif /* CONFIG_SSL_FULL_MODE */ - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/bin/.htaccess b/package/luci/libs/luci-lib-nixio/axTLS/www/bin/.htaccess deleted file mode 100644 index 4496fa9edd..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/bin/.htaccess +++ /dev/null @@ -1,2 +0,0 @@ -Deny all - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/favicon.ico b/package/luci/libs/luci-lib-nixio/axTLS/www/favicon.ico deleted file mode 100644 index 9f6f30e4c6de09f2e93be5e3cbde8a97850b1989..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22486 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 diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/index.html b/package/luci/libs/luci-lib-nixio/axTLS/www/index.html deleted file mode 100755 index 25cd2e69b1..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/index.html +++ /dev/null @@ -1,7106 +0,0 @@ - - - - - - - - - - - - axTLS Embedded SSL - changes, notes and errata - - - - - - - - - - - - - -
    -
    -
    -
    -
    changes, notes and errata
    -
    Type the text for 'YourName'
    -
    @@bgcolor(#ff0000):color(#ffffff):Changes for 1.2.1@@\n\n!!__SSL Library__\n* Certificate verification now works for Firefox.\n* Extended the openssl API.\n\n@@bgcolor(#ff0000):color(#ffffff):Changes for 1.2.0@@\n\n!!__SSL Library__\n* A self-signed certificate will be verified as ok provided that that it is on the certificate authority list.\n* Certificates are not verified when added as certificate authorities (since self-signed and expired certificates can be added to browsers etc)\n\n@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.9@@\n\n!!__SSL Library__\n* Now support MS IIS resource kit certificates (thanks to Carsten Sørensen).\n* Fixed a memory leak when freeing more than one CA certificate.\n* The bigint library had a problem with squaring which affected classical reduction (thanks to Manuel Klimek).\n\n!!__axhttpd__\n* Brought back setuid()/setgid() as an option.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.8@@\n\n!!__SSL Library__\n* Now using a BSD style license.\n* Self-signed certificates can now be automatically generated (the keys still need to be provided).\n* A new API call //ssl_x509_create()// can be used to programatically create the certificate.\n* Certificate/keys can be loaded automatically given a file location.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.7@@\n\n!!__SSL Library__\n\n* Variable sized session id's is now better handled for session caching. It has meant a new API call //ssl_get_session_id_size()// and a change to //ssl_client_new()// to define the session id size.\n* Muliple records with a single header are now better supported (thanks to Hervé Sibert).\n* ~MD2 added for Verisign root cert verification (thanks to Byron Rakitzis).\n* The ~MD5/~SHA1 digests are calculated incrementally to reduce memory (thanks to Byron Rakitzis).\n* The bigint cache is now cleared regularly to reduce memory.\n\n!!__axhttpd__\n\n* Improved the POST handling (thanks to Christian Melki).\n* CSS files now work properly.\n* Lua's CGI launcher location is configurable.\n* //vfork()// is now used for CGI for performance reasons.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.6@@\n\n!!__SSL Library__\n\n* ~RC4 speed improvements\n* Lua samples/bindings now work properly\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.5@@\n\n!!__SSL Library__\n\n* Session id's can now be variable lengths in server hello messages.\n* 0 length client certificates are now supported.\n* ssl_version() now returns just the version and not the date.\n* ssl_write() was not sending complete packets under load.\n\n!!__axhttpd__\n\n* Completely updated the CGI code.\n* Lua now integrated - Lua scripts and Lua Pages now run.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.4@@\n\n!!__SSL Library__\n\n* Fixed a Win32 crypto library issue with non-Administrator users\n* Removed compiler warnings that showed up in ~FC6.\n* GNU TLS certificates are now accepted.\n* Separated the send/receive headers for HMAC calculations.\n* Fixed a compilation problem with swig/perl/~FC6.\n* Fixed an issue with loading PEM CA certificates.\n\n!!__axhttpd__\n\n* Made //setuid()/setgid()// call an mconf option.\n* Made //chroot()// an mconf option. Default to //chdir()// instead.\n* Removed optional permissions checking.\n\n!@@bgcolor(#ff0000):color(#ffffff):Changes for 1.1.1@@\n\n!!__SSL Library__\n\n* AES should now work on 16bit processors (there was an alignment problem).\n* Various freed objects are cleared before freeing.\n* Header files now installed in ///usr/local/include/axTLS//.\n* -DCYGWIN replaced with -~DCONFIG_PLATFORM_CYGWIN (and the same for Solaris).\n* removed "-noextern" option in Swig. Fixed some other warnings in Win32.\n* SSLCTX changed to ~SSL_CTX (to be consistent with openssl). SSLCTX still exists for backwards compatibility.\n* malloc() and friends call abort() on failure.\n* Fixed a memory leak in directory listings.\n* Added openssl() compatibility functions.\n* Fixed Cygwin 'make install' issue.\n\n!!__axhttpd__\n\n* main.c now becomes axhttpd.c.\n* Header file issue fixed (in mime_types.c).\n* //chroot()// now used for better security.\n* Basic authentication implemented (via .htpasswd).\n* SSL access/denial protection implemented (via .htaccess).\n* Directory access protection implemented (via .htaccess).\n* Can now have more than one CGI file extension in mconf.\n* "~If-Modified-Since" request now handled properly.\n* Performance tweaks to remove //ssl_find()//.
    -
    [[Read Me]]
    -
    axTLS uses a BSD style license:\n\nCopyright (c) 2008, Cameron Rich All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer. Redistributions in binary\nform must reproduce the above copyright notice, this list of conditions and\nthe following disclaimer in the documentation and/or other materials\nprovided with the distribution. Neither the name of the axTLS Project nor\nthe names of its contributors may be used to endorse or promote products\nderived from this software without specific prior written permission. \n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\nLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\nOUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.
    -
    [[Read Me]] \n[[Changelog]]\n[[axhttpd]]\n[[License]]
    -
    <div class='header' macro='gradient vert #390108 #900'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu'>\n<div refresh='content' tiddler='MainMenu'></div>\n</div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>
    -
    !@@bgcolor(#ff0000):color(#ffffff):axTLS Quick Start Guide@@\n\nThis is a guide to get a small SSL web-server up and running quickly.\n\n!!__Introduction__\n\nThe axTLS project is an SSL client/server library using the ~TLSv1 protocol. It is designed to be small and fast, and is suited to embedded projects. A web server is included.\n\nThe basic web server + SSL library is around 60-70kB and is configurable for features or size.\n\n!!__Compilation__\n\nAll platforms require GNU make. This means on Win32 that Cygwin needs to be installed with "make" and various developer options selected.\n\nConfiguration now uses a tool called "mconf" which gives a nice way to configure options (similar to what is used in ~BusyBox and the Linux kernel).\n\nYou should be able to compile axTLS simply by extracting it, change into the extracted directory and typing:\n\n{{indent{{{{> make}}}\n\nSelect your platform type, save the configuration, exit, and then type "make" again.\n\nIf all goes well, you should end up with an executable called "axhttpd" (or axhttpd.exe) in the //_stage// directory.\n\nTo play with all the various axTLS options, type:\n\n{{indent{{{{> make menuconfig}}}\n\nSave the new configuration and rebuild.\n\n!!__Running it__\n\nTo run it, go to the //_stage// directory, and type (as superuser):\n\n{{indent{{{{> axhttpd}}}\n\nNote: you may have to set your ~LD_LIBRARY_PATH - e.g. go to //_stage// and type //export ~LD_LIBRARY_PATH=`pwd`//\n\nAnd then point your browser at https://127.0.0.1 And you should see a this html page with a padlock appearing on your browser. or type http://127.0.0.1 to see the same page unencrypted.\n\n!!__The axssl utilities__\n\nThe axssl suite of tools are the SSL test tools in the various language bindings. They are:\n\n* axssl - C sample\n* axssl.csharp - C# sample\n* axssl.vbnet - VB.NET sample\n* axtls.jar - Java sample\n* axssl.pl - Perl sample\n* axssl.lua - Lua sample\n\nAll the tools have identical command-line parameters. e.g. to run something interesting:\n\n{{indent{{{{> axssl s_server -verify -CAfile ../ssl/test/axTLS.ca_x509}}}\n\nand\n\n{{indent{{{{> axssl s_client -cert ../ssl/test/axTLS.x509_1024 -key ../ssl/test/axTLS.key_1024 -reconnect}}}\n\n!!!!C#\n\nIf building under Linux or other non-Win32 platforms, Mono must be installed and the executable is run as:\n\n{{indent{{{{> mono axssl.csharp.exe ...}}}\n\n!!!!Java\n\nThe java version is run as:\n\n{{indent{{{{> java -jar axtls.jar <options>}}}\n\n!!!!Perl\n\n{{indent{{{{> [perl] ./axssl.pl <options>}}}\n\nIf running under Win32, be sure to use the correct version of Perl (i.e. ~ActiveState's version works ok).\n\n!!!!Lua\n\n{{indent{{{{> [lua] ./axssl.lua <options>}}}\n\n!__Known Issues__\n\n* Firefox doesn't handle legacy ~SSLv2 at all well. Disabling ~SSLv2 still initiates a ~SSLv23 handshake (v1.5). And continuous pressing of the "Reload" page instigates a change to ~SSLv3 for some reason (even though the TLS 1.0 option is selected). This will cause a "Firefox and <server> cannot communicate securely because they have no common encryption algorithms" (v1.5), or "Firefox can't connect to <server> because the site uses a security protocol which isn't enabled" (v2.0). See bugzilla issues 343543 and 359484 (Comment #7). It's all broken (hopefully fixed soon).\n* Perl/Java bindings don't work on 64 bit Linux machines. I can't even compile the latest version of Perl on an ~AMD64 box (using ~FC3).\n* Java 1.4 or better is required for the Java interfaces.\n* Processes that fork can't use session resumption unless some form of IPC is used.\n* Ensure libperl.so and libaxtls.so are in the shared library path when running with the perl bindings. A way to do this is with:\n\n{{indent{{{{> export LD_LIBRARY_PATH=`perl -e 'use Config; print $Config{archlib};'`/CORE:.}}}\n* The lua sample requires the luabit library from http://luaforge.net/projects/bit.\n\n!!!!Win32 issues\n\n* Be careful about doing .NET executions on network drives - .NET complains with security exceptions on the binary. //TODO: Add a manifest file to prevent this.//\n* CGI has been removed from Win32 - it needs a lot more work to get it right.\n* The default Microsoft .NET SDK is v2.0.50727. Download from: http://msdn.microsoft.com/netframework/downloads/updates/default.aspx.\n\n!!!!Solaris issues\n\n* mconf doesn't work well - some manual tweaking is required for string values.\n* GNU make is required and needs to be in $PATH.\n* To get swig's library dependencies to work (and for the C library to be found), I needed to type:\n\n{{indent{{{{> export LD_LIBRARY_PATH=/usr/local/gcc-3.3.1/lib:.}}}\n\n!!!!Cygwin issues\n\n* The bindings all compile but don't run under Cygwin with the exception of Perl. This is due to win32 executables being incompatible with Cygwin libraries.\n\n
    -
    changes, notes and errata
    -
    axTLS Embedded SSL
    -
    http://axtls.cerocclub.com.au
    -
    /***\nhttp://tiddlystyles.com/#theme:DevFire\nAuthor: Clint Checketts\n***/\n\n/*{{{*/\nbody {\nbackground: #000;\n}\n/*}}}*/\n/***\n!Link styles /% ============================================================= %/\n***/\n/*{{{*/\na,\na.button,\n#mainMenu a.button,\n#sidebarOptions .sliderPanel a{\n color: #ffbf00;\n border: 0;\n background: transparent;\n}\n\na:hover,\na.button:hover,\n#mainMenu a.button:hover,\n#sidebarOptions .sliderPanel a:hover\n#sidebarOptions .sliderPanel a:active{\n color: #ff7f00;\n border: 0;\n border-bottom: #ff7f00 1px dashed;\n background: transparent;\n text-decoration: none;\n}\n\n#displayArea .button.highlight{\n color: #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Header styles /% ============================================================= %/\n***/\n/*{{{*/\n.header{\n border-bottom: 2px solid #ffbf00;\n color: #fff;\n}\n\n.headerForeground a {\n color: #fff;\n}\n\n.header a:hover {\n border-bottom: 1px dashed #fff;\n}\n/*}}}*/\n/***\n!Main menu styles /% ============================================================= %/\n***/\n/*{{{*/\n#mainMenu {color: #fff;}\n#mainMenu h1{\n font-size: 1.1em;\n}\n#mainMenu li,#mainMenu ul{\n list-style: none;\n margin: 0;\n padding: 0;\n}\n/*}}}*/\n/***\n!Sidebar styles /% ============================================================= %/\n***/\n/*{{{*/\n#sidebar {\n right: 0;\n color: #fff;\n border: 2px solid #ffbf00;\n border-width: 0 0 2px 2px;\n}\n#sidebarOptions {\n background-color: #4c4c4c;\n padding: 0;\n}\n\n#sidebarOptions a{\n margin: 0;\n color: #ffbf00;\n border: 0;\n}\n#sidebarOptions a:hover {\n color: #4c4c4c;\n background-color: #ffbf00;\n\n}\n\n#sidebarOptions a:active {\n color: #ffbf00;\n background-color: transparent;\n}\n\n#sidebarOptions .sliderPanel {\n background-color: #333;\n margin: 0;\n}\n\n#sidebarTabs {background-color: #4c4c4c;}\n#sidebarTabs .tabSelected {\n padding: 3px 3px;\n cursor: default;\n color: #ffbf00;\n background-color: #666;\n}\n#sidebarTabs .tabUnselected {\n color: #ffbf00;\n background-color: #5f5f5f;\n padding: 0 4px;\n}\n\n#sidebarTabs .tabUnselected:hover,\n#sidebarTabs .tabContents {\n background-color: #666;\n}\n\n.listTitle{color: #FFF;}\n#sidebarTabs .tabContents a{\n color: #ffbf00;\n}\n\n#sidebarTabs .tabContents a:hover{\n color: #ff7f00;\n background: transparent;\n}\n\n#sidebarTabs .txtMoreTab .tabSelected,\n#sidebarTabs .txtMoreTab .tab:hover,\n#sidebarTabs .txtMoreTab .tabContents{\n color: #ffbf00;\n background: #4c4c4c;\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected {\n color: #ffbf00;\n background: #5f5f5f;\n}\n\n.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}\n.tab.tabUnselected {background-color: #666;}\n.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}\n.tabContents {\n background-color: #4c4c4c;\n border: 0;\n}\n.tabContents .tabContents{background: #666;}\n.tabContents .tabSelected{background: #666;}\n.tabContents .tabUnselected{background: #5f5f5f;}\n.tabContents .tab:hover{background: #666;}\n/*}}}*/\n/***\n!Message area styles /% ============================================================= %/\n***/\n/*{{{*/\n#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}\n#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}\n#messageArea a:hover {color: #ff7f00;}\n#messageArea a:active {color: #ff7f00;}\n#messageArea .messageToolbar a{\n border: 1px solid #ffbf00;\n background: #4c4c4c;\n}\n/*}}}*/\n/***\n!Popup styles /% ============================================================= %/\n***/\n/*{{{*/\n.popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}\n.popup li.disabled{color: #fff;}\n.popup a {color: #ffbf00; }\n.popup a:hover { background: transparent; color: #ff7f00; border: 0;}\n.popup hr {color: #ffbf00; background: #ffbf00;}\n/*}}}*/\n/***\n!Tiddler Display styles /% ============================================================= %/\n***/\n/*{{{*/\n.title{color: #fff;}\nh1, h2, h3, h4, h5 {\n color: #fff;\n background-color: transparent;\n border-bottom: 1px solid #333;\n}\n\n.subtitle{\n color: #666;\n}\n\n.viewer {color: #fff; }\n\n.viewer table{background: #666; color: #fff;}\n\n.viewer th {background-color: #996; color: #fff;}\n\n.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00;}\n\n.viewer hr {color: #666;}\n\n.tiddler .button {color: #4c4c4c;}\n.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}\n.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}\n\n.toolbar {\n color: #4c4c4c;\n}\n\n.toolbar a.button,\n.toolbar a.button:hover,\n.toolbar a.button:active,\n.editorFooter a{\n border: 0;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.highlight, .marked {\n color: #000;\n background-color: #ffe72f;\n}\n.editorFooter {\n color: #aaa;\n}\n\n.tab{\n-moz-border-radius-topleft: 3px;\n-moz-border-radius-topright: 3px;\n}\n\n.tagging,\n.tagged{\n background: #4c4c4c;\n border: 1px solid #4c4c4c; \n}\n\n.selected .tagging,\n.selected .tagged{\n background-color: #333;\n border: 1px solid #ffbf00;\n}\n\n.tagging .listTitle,\n.tagged .listTitle{\n color: #fff;\n}\n\n.tagging .button,\n.tagged .button{\n color: #ffbf00;\n border: 0;\n padding: 0;\n}\n\n.tagging .button:hover,\n.tagged .button:hover{\nbackground: transparent;\n}\n\n.selected .isTag .tagging.simple,\n.selected .tagged.simple,\n.isTag .tagging.simple,\n.tagged.simple {\n float: none;\n display: inline;\n border: 0;\n background: transparent;\n color: #fff;\n margin: 0;\n}\n\n.cascade {\n background: #4c4c4c;\n color: #ddd;\n border: 1px solid #ffbf00;\n}\n/*}}}*/
    -
    axhttpd is a small embedded web server using the axTLS library. It is based originally on the web server written by Doug Currie which is at http://www.hcsw.org/awhttpd.\n\n!@@bgcolor(#ff0000):color(#ffffff):axhttpd Features@@ \n\n!!__Basic Authentication__\n\nBasic Authentication uses a password file called ".htpasswd", in the directory to be protected. This file is formatted as the familiar colon-separated username/encrypted-password pair, records delimited by newlines. The protection does not carry over to subdirectories. The utility program htpasswd is included to help manually edit .htpasswd files.\n\nThe encryption of this password uses a proprietary algorithm due to the dependency of many crypt libraries on DES. An example is in [[/test_dir/no_http|https://127.0.0.1/test_dir/no_http]] (username 'abcd', password is '1234').\n\n//Note: This is an mconf enabled configuration option.//\n\n!!__SSL Protection__\n\nDirectories/files can be accessed using the 'http' or 'https' uri prefix. If normal http access for a directory needs to be disabled, then put "~SSLRequireSSL" into a '.htaccess' file in the directory to be protected. \n\nConversely, use "~SSLDenySSL" to deny access to directories via SSL.\n\nAn example is in [[/test_dir/no_http|http://127.0.0.1/test_dir/no_http]] and [[/test_dir/no_ssl|https://127.0.0.1/test_dir/no_ssl]].\n\nEntire directories can be denied access with a "Deny all" directive (regardless of SSL or authentication). An example is in [[/test_dir/bin|http://127.0.0.1/test_dir/bin]]\n\n!!__CGI__\n\nMost of the CGI 1.1 variables are now placed into the script environment and should work as normal.\n\n!!__Lua and Lua Pages__\n\nThis is a small scripting language gaining popularity in embedded applications due to its small footprint and fast speed.\n\nLua has been incorporated into the build, so simply select it and it will automatically install. Try pointing your browser at [[test_main.html]|http://127.0.0.1/lua/test_main.html]] to see an example of Lua Pages.\n\n//Note: This is an mconf enabled configuration option.//\n\n!!__Directory Listing__\n\nAn mconf option. Allow the files in directories to be displayed. An example is in [[/test_dir|http://127.0.0.1/test_dir]]\n\n!!__Other Features__\n\n* Timeout - HTTP 1.1 allows for persistent connections. This is the time allowed for this connection in seconds.\n* Daemon - Puts the process in daemon mode. \n* SSL session cache size - The size of the session cache (a heavily loaded server should maintain many sessions). A session will save on expensive SSL handshaking.\n\n
    -
    - - - - - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/download.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/download.lua deleted file mode 100644 index 2ee1a71e93..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/download.lua +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/local/bin/lua - -require"luasocket" - -function receive (connection) - connection:settimeout(0) - local s, status = connection:receive (2^10) - if status == "timeout" then - coroutine.yield (connection) - end - return s, status -end - -function download (host, file, outfile) - --local f = assert (io.open (outfile, "w")) - local c = assert (socket.connect (host, 80)) - c:send ("GET "..file.." HTTP/1.0\r\n\r\n") - while true do - local s, status = receive (c) - --f:write (s) - if status == "closed" then - break - end - end - c:close() - --f:close() -end - -local threads = {} -function get (host, file, outfile) - print (string.format ("Downloading %s from %s to %s", file, host, outfile)) - local co = coroutine.create (function () - return download (host, file, outfile) - end) - table.insert (threads, co) -end - -function dispatcher () - while true do - local n = table.getn (threads) - if n == 0 then - break - end - local connections = {} - for i = 1, n do - local status, res = coroutine.resume (threads[i]) - if not res then - table.remove (threads, i) - break - else - table.insert (connections, res) - end - end - if table.getn (connections) == n then - socket.select (connections) - end - end -end - -local url = arg[1] -if not url then - print (string.format ("usage: %s url [times]", arg[0])) - os.exit() -end -local times = arg[2] or 5 - -url = string.gsub (url, "^http.?://", "") -local _, _, host, file = string.find (url, "^([^/]+)(/.*)") -local _, _, fn = string.find (file, "([^/]+)$") - -for i = 1, times do - get (host, file, fn..i) -end - -dispatcher () diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/env.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/env.lua deleted file mode 100644 index c4298477b6..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/env.lua +++ /dev/null @@ -1,26 +0,0 @@ --- This file should be executed before any script in this directory --- according to the configuration (cgilua/conf.lua). - -pcall (cgilua.enablesession) - -local put, mkurlpath = cgilua.put, cgilua.mkurlpath - -cgilua.addclosefunction (function () - put [[ -

    CGILua installation overview

    - - - - - - - - - - - - - -
    Version - Copyright - Description -
    <%= tostring(_G[l[2]]) %> - - -
    <%= idx(p,"VERSION") %> - <%= idx(p,"COPYRIGHT") %> - <%= idx(p,"DESCRIPTION") %> -
    - - - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/prepara_sql2.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/prepara_sql2.lua deleted file mode 100644 index 6a37c2fef7..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/prepara_sql2.lua +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/local/bin/lua - -MAX_ROWS = arg[1] or 10 - -require"postgres" - -local env = assert (luasql.postgres ()) -local conn = assert (env:connect ("luasql-test", "tomas")) - --- Apaga restos de outros testes. -conn:execute "drop table t2" -conn:execute "drop table t1" - --- Criando as tabelas. -assert (conn:execute [[create table t1 ( - a int, - b int -)]]) -assert (conn:execute [[create table t2 ( - c int, - d int -)]]) - --- Preenchedo as tabelas. -for i = 1, MAX_ROWS do - local ii = 2*i - assert (conn:execute (string.format ([[ -insert into t1 values (%d, %d); -insert into t2 values (%d, %d);]], - ii, i, ii, i))) -end diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_conc.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_conc.lua deleted file mode 100644 index bbb9be784a..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_conc.lua +++ /dev/null @@ -1,38 +0,0 @@ -cgilua.htmlheader() -if ap then - local pid, ppid = ap.pid () - if not ppid then - ppid = "no parent pid" - end - cgilua.put ("pid = "..pid.." ("..ppid..")".."\n") -end - -assert(type(stable.get) == "function") -assert(type(stable.set) == "function") - -cgilua.put"stable.pairs = {
    \n" -for i, v in stable.pairs () do - cgilua.put (i.." = "..tostring(v).."
    \n") -end -cgilua.put"}
    \n" - -local counter = stable.get"counter" or 0 -stable.set ("counter", counter + 1) - -local f = stable.get"f" -if not f then - local d = os.date() - stable.set ("f", function () return d end) -else - cgilua.put ("f() = "..tostring (f ())) -end - -cgilua.put"
    \n" -for i = 1,800 do - cgilua.put (i) - for ii = 1,1000 do - cgilua.put ("") - end - cgilua.put ("\n") -end -cgilua.put ("End") diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lp b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lp deleted file mode 100644 index 932b9c5e98..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lp +++ /dev/null @@ -1,13 +0,0 @@ - - -

    Testing Cookies library

    - -<%= CL_COOKIE%> = <%= tostring(test)%>
    -Assigning current date to cookie!
    -Reload this script to check cookie's value! diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lua deleted file mode 100644 index 6af935e894..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_cookies.lua +++ /dev/null @@ -1,14 +0,0 @@ -local cookies = require"cgilua.cookies" -CL_COOKIE = "cgilua_cookie" - -local test = cookies.get (CL_COOKIE) -cookies.set (CL_COOKIE, os.date()) - -cgilua.htmlheader () -cgilua.put ([[ -

    Testing Cookies library

    - -]]..CL_COOKIE..' = '..tostring(test)..[[
    -Assigning current date to cookie!
    -Reload this script to check cookie's value! -]]) diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_err.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_err.lua deleted file mode 100644 index 4d6ffc9708..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_err.lua +++ /dev/null @@ -1,4 +0,0 @@ -cgilua.htmlheader() -cgilua.put"Oi!" ---io.write"something\n" -cgilua.errorlog ("eca", "emerg") diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_fs.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_fs.lua deleted file mode 100644 index 566ed8b204..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_fs.lua +++ /dev/null @@ -1,23 +0,0 @@ -function link_dir (dir, base) - local path = base.."/"..dir - local mode = lfs.attributes (path).mode - if mode == "directory" then - return string.format ('%s', - cgilua.mkurlpath ("test_fs.lua", { dir = path }), - dir) - else - return dir - end -end - -cgilua.htmlheader () -cgilua.put ("

    Testing Filesystem library

    \n") -cgilua.put ("\n") -cgilua.put ("\n") -local i = 0 -local dir = cgi.dir or "." -for file in lfs.dir (dir) do - i = i+1 - cgilua.put ("\n") -end -cgilua.put ("
    Testing dir
    "..i..""..link_dir(file, dir).."
    \n") diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_htk.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_htk.lua deleted file mode 100644 index ac1de6c31b..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_htk.lua +++ /dev/null @@ -1,22 +0,0 @@ -require"htk" - -local a_table = {} -for i = 1, 20 do - local l = {} - for j = 1, 20 do - table.insert (l, HTK.TD { "cell "..i..","..j }) - end - table.insert (a_table, HTK.TR (l)) -end - -cgilua.htmlheader() -cgilua.put (HTK.HTML { - HTK.HEAD { HTK.TITLE { "Titulo da Pagina" } }, - HTK.BODY { - bgcolor = "#FFFFFF", - HTK.H1 { "Titulo da Pagina" }, - HTK.P {}, - "Uma página qualquer", - HTK.TABLE (a_table), - } -}) diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_lib.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_lib.lua deleted file mode 100644 index 5041253725..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_lib.lua +++ /dev/null @@ -1,31 +0,0 @@ -local function getfield (t, f) - for w in string.gfind(f, "[%w_]+") do - if not t then return nil end - t = t[w] - end - return t -end - -function test_lib (libname) - local ok, err = pcall (require, libname) - if not ok then - cgilua.put ("Library "..libname.." not found
    \n".. - err) - else - cgilua.put ("Library "..libname.."
    \n") - local t = getfield (_G, libname) - if type(t) ~= "table" then - cgilua.put (tostring(t)) - else - for i, v in pairs (t) do - cgilua.put ("  "..tostring(i).." = "..tostring(v).."
    \n") - end - end - end - cgilua.put ("\n

    \n") -end - -cgilua.htmlheader () -for _, lib in ipairs { "lfs", "socket", "luasql.postgres", "luasql", "lxp", "lxp.lom", "lualdap", "htk", "xmlrpc", "xmlrpc.http" } do - test_lib (lib) -end diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.html b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.html deleted file mode 100644 index a50dd639ca..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.html +++ /dev/null @@ -1,127 +0,0 @@ - -Test Page - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    GET: -
    Lua scriptmodule
    HTML templatemodule
    POST: -
    -
    - - - - - - - - - - - - -
    - field 1:
    - field 2:
    - field 3: - op 1 - op 2 - op 3 -
    Lua script - module -
    HTML template - module -
    -
    -
    POST (with upload): -
    -
    - - - - - - - - - - - - -
    - field 1:
    - file (binary!):
    -
    Lua script - module -
    HTML template - module -
    -
    -
    Cookies: -
    Lua scriptmodule
    HTML templatemodule
    Filesystem: -
    Lua scriptmodule
    Session: -
    Lua scriptmodule
    CGI Variables: -
    HTML templatemodule
    Library Overview: -
    HTML templatemodule
    Concurrency -
    Lua scriptmodule
    - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lp b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lp deleted file mode 100644 index 917ee1e536..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lp +++ /dev/null @@ -1,31 +0,0 @@ - -Embeded Lua Test - - -cgi = { -\n", vv, a, tostring(b)) - end - v = vv.."}" - end -?> -<%= i %> = <%= tostring(v) %>
    -<% -end -%> -} -
    -Remote address: <%= cgilua.servervariable"REMOTE_ADDR" %> -
    -Is persistent = <%= tostring (SAPI.Info.ispersistent) %> -
    -ap =
    -lfcgi = <% = tostring(lfcgi) %>
    -<%= (ap and ap.handler()) or "" %>
    - - - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lua deleted file mode 100644 index 0e997a2d57..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_main.lua +++ /dev/null @@ -1,46 +0,0 @@ -cgilua.htmlheader() -cgilua.put[[ - -Script Lua Test - - -cgi = { -]] - -for i,v in pairs (cgi) do - if type(v) == "table" then - local vv = "{" - for a,b in pairs(v) do - vv = string.format ("%s%s = %s
    \n", vv, a, tostring(b)) - end - v = vv.."}" - end - cgilua.put (string.format ("%s = %s
    \n", i, tostring(v))) -end -cgilua.put "}
    \n" -cgilua.put ("Remote address: "..cgilua.servervariable"REMOTE_ADDR") -cgilua.put "
    \n" -cgilua.put ("Is persistent = "..tostring (SAPI.Info.ispersistent).."
    \n") -cgilua.put ("ap="..tostring(ap).."
    \n") -cgilua.put ("lfcgi="..tostring(lfcgi).."
    \n") - --- Checking Virtual Environment -local my_output = cgilua.put -cgilua.put = nil -local status, err = pcall (function () - assert (cgilua.put == nil, "cannot change cgilua.put value") -end) -cgilua.put = my_output -assert (status == true, err) - --- Checking require -local status, err = pcall (function () require"unknown_module" end) -assert (status == false, "unknown_module loaded!") --- assert (package == nil, "Access to package table allowed!") - -cgilua.put[[ -

    - - -]] -cgilua = nil diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_session.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_session.lua deleted file mode 100644 index d97cc45201..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_session.lua +++ /dev/null @@ -1,43 +0,0 @@ -cgilua.enablesession () - -function pt (tab) - for i, v in pairs (tab) do - local vv = v - if type(v) == "table" then - vv = "" - for _i, _v in pairs (v) do - vv = vv..string.format ("%s = %q, ", _i, _v) - end - vv = '{'..vv..'}' - end - cgilua.put (string.format ("%s = %s
    \n", tostring (i), tostring (vv))) - end -end - - -if cgi.field then - if not cgilua.session.data.field then - cgilua.session.data.field = {} - end - table.insert (cgilua.session.data.field, cgi.field) -end -cgilua.htmlheader() -if cgilua.session then - cgilua.put "cgi = {
    \n" - pt (cgi) - cgilua.put "}
    \n" - cgilua.put "cgilua.session.data = {
    \n" - pt (cgilua.session.data) - cgilua.put "}
    \n" - - cgilua.put [[

    - field:
    -
    -
    ]] -else - cgilua.put "Sessions library is not available or not well configured" -end diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql.lua deleted file mode 100644 index 085ce978c7..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql.lua +++ /dev/null @@ -1,13 +0,0 @@ -local s = require"luasql.postgres" - -local env = assert (luasql.postgres ()) -local conn = assert (env:connect ("luasql-test", "tomas")) -local cur = assert (conn:execute ("select count(*) from fetch_test")) - -cgilua.htmlheader() -cgilua.put ("Total lines at table fetch_test is "..cur:fetch()) -cgilua.put (string.format ("
    \n%s == %s
    \n", tostring(s), tostring(luasql))) - -cur:close() -conn:close() -env:close() diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql2.lua b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql2.lua deleted file mode 100644 index a2f6ee12dc..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_sql2.lua +++ /dev/null @@ -1,24 +0,0 @@ -require"postgres" - -local env = assert (luasql.postgres ()) -local conn = assert (env:connect ("luasql-test", "tomas")) -local cur = assert (conn:execute ("select count(*) from t1")) -local total = tonumber (cur:fetch()) -cur:close() -local aleatorio = math.random(total) -local cur = assert (conn:execute ("select * from t1, t2 where b = d and a != "..2*aleatorio)) - -cgilua.htmlheader() -cgilua.put ("Aleatorio = "..aleatorio.."
    \n") - -local a,b,c,d = cur:fetch() -cgilua.put ("\n") -while a do --- cgilua.put ("") - a,b,c,d = cur:fetch() -end -cgilua.put ("
    ",a,"",b,"",c,"",d,"
    \n") - -cur:close() -conn:close() -env:close() diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_variables.lp b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_variables.lp deleted file mode 100644 index c1ac332f02..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/test_variables.lp +++ /dev/null @@ -1,14 +0,0 @@ - -<% for _, var in pairs { "SERVER_SOFTWARE", "SERVER_NAME", "GATEWAY_INTERFACE", "SERVER_PROTOCOL", "SERVER_PORT", "REQUEST_METHOD", "PATH_INFO", "PATH_TRANSLATED", "SCRIPT_NAME", "QUERY_STRING", "REMOTE_HOST", "REMOTE_ADDR", "AUTH_TYPE", "REMOTE_USER", "REMOTE_IDENT", "CONTENT_TYPE", "CONTENT_LENGTH", "HTTP_REFERER", "HTTP_COOKIE", "SCRIPT_FILENAME", "DOCUMENT_ROOT", } do %> - -<% end %> -
    <%= var %>="<%= cgilua.servervariable(var) or "not defined"%>"
    - -

    - -<% for _, var in ipairs { "script_file", "script_path", "script_pdir", "script_vdir", "script_vpath", "urlpath", } do %> - -<% end %> -
    <%= var %>="<%= cgilua[var] %>"
    - -

    diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/bin/.htaccess b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/bin/.htaccess deleted file mode 100644 index 8fd8c463a1..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/bin/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Deny all diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htaccess b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htaccess deleted file mode 100644 index 3e20076a2c..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htaccess +++ /dev/null @@ -1 +0,0 @@ -SSLRequireSSL diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htpasswd b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htpasswd deleted file mode 100644 index 0471b01400..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/.htpasswd +++ /dev/null @@ -1,2 +0,0 @@ -abcd:CQhgDPyy0rvEU8OMxnQIvg==$YdJfIKZimFLYxPf/rbnhtQ== -yaya:Syuss5jE2FNGVdr0kKGoHg==$WLw/SgHZFuAoOuml3GTJVw== diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/index.html b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/index.html deleted file mode 100644 index 8b86eba8ed..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_http/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -axhttpd is running - -Looks like you got to this directory. - - diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/.htaccess b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/.htaccess deleted file mode 100644 index d980d265a5..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/.htaccess +++ /dev/null @@ -1 +0,0 @@ -SSLDenySSL diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/index.html b/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/index.html deleted file mode 100644 index 8b86eba8ed..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/test_dir/no_ssl/index.html +++ /dev/null @@ -1,6 +0,0 @@ - -axhttpd is running - -Looks like you got to this directory. - - diff --git a/package/luci/libs/luci-lib-nixio/axtls-config/.config b/package/luci/libs/luci-lib-nixio/axtls-config/.config deleted file mode 100644 index 46cd061b4d..0000000000 --- a/package/luci/libs/luci-lib-nixio/axtls-config/.config +++ /dev/null @@ -1,112 +0,0 @@ -# -# Automatically generated make config: don't edit -# -HAVE_DOT_CONFIG=y -CONFIG_PLATFORM_LINUX=y -# CONFIG_PLATFORM_CYGWIN is not set -# CONFIG_PLATFORM_WIN32 is not set - -# -# General Configuration -# -PREFIX="/usr" -# CONFIG_DEBUG is not set -CONFIG_STRIP_UNWANTED_SECTIONS=y -# CONFIG_VISUAL_STUDIO_7_0 is not set -# CONFIG_VISUAL_STUDIO_8_0 is not set -CONFIG_VISUAL_STUDIO_7_0_BASE="" -CONFIG_VISUAL_STUDIO_8_0_BASE="" -CONFIG_EXTRA_CFLAGS_OPTIONS="-fpic" -CONFIG_EXTRA_LDFLAGS_OPTIONS="" - -# -# SSL Library -# -# CONFIG_SSL_SERVER_ONLY is not set -# CONFIG_SSL_CERT_VERIFICATION is not set -# CONFIG_SSL_ENABLE_CLIENT is not set -CONFIG_SSL_FULL_MODE=y -# CONFIG_SSL_SKELETON_MODE is not set -# CONFIG_SSL_PROT_LOW is not set -CONFIG_SSL_PROT_MEDIUM=y -# CONFIG_SSL_PROT_HIGH is not set -# CONFIG_SSL_USE_DEFAULT_KEY is not set -CONFIG_SSL_PRIVATE_KEY_LOCATION="/etc/nixio/rsa_main.der" -CONFIG_SSL_PRIVATE_KEY_PASSWORD="" -CONFIG_SSL_X509_CERT_LOCATION="" -# CONFIG_SSL_GENERATE_X509_CERT is not set -CONFIG_SSL_X509_COMMON_NAME="" -CONFIG_SSL_X509_ORGANIZATION_NAME="" -CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME="" -# CONFIG_SSL_ENABLE_V23_HANDSHAKE is not set -# CONFIG_SSL_HAS_PEM is not set -# CONFIG_SSL_USE_PKCS12 is not set -CONFIG_SSL_EXPIRY_TIME=24 -CONFIG_X509_MAX_CA_CERTS=4 -CONFIG_SSL_MAX_CERTS=2 -CONFIG_SSL_CTX_MUTEXING=y -CONFIG_USE_DEV_URANDOM=y -# CONFIG_WIN32_USE_CRYPTO_LIB is not set -# CONFIG_OPENSSL_COMPATIBLE is not set -# CONFIG_PERFORMANCE_TESTING is not set -# CONFIG_SSL_TEST is not set -# CONFIG_AXHTTPD is not set -# CONFIG_HTTP_STATIC_BUILD is not set -CONFIG_HTTP_PORT=0 -CONFIG_HTTP_HTTPS_PORT=0 -CONFIG_HTTP_SESSION_CACHE_SIZE=0 -CONFIG_HTTP_WEBROOT="" -CONFIG_HTTP_TIMEOUT=0 -# CONFIG_HTTP_HAS_CGI is not set -CONFIG_HTTP_CGI_EXTENSIONS="" -# CONFIG_HTTP_ENABLE_LUA is not set -CONFIG_HTTP_LUA_PREFIX="" -CONFIG_HTTP_LUA_CGI_LAUNCHER="" -# CONFIG_HTTP_BUILD_LUA is not set -# CONFIG_HTTP_DIRECTORIES is not set -# CONFIG_HTTP_HAS_AUTHORIZATION is not set -# CONFIG_HTTP_HAS_IPV6 is not set -# CONFIG_HTTP_ENABLE_DIFFERENT_USER is not set -CONFIG_HTTP_USER="" -# CONFIG_HTTP_VERBOSE is not set -# CONFIG_HTTP_IS_DAEMON is not set - -# -# Language Bindings -# -# CONFIG_BINDINGS is not set -# CONFIG_CSHARP_BINDINGS is not set -# CONFIG_VBNET_BINDINGS is not set -CONFIG_DOT_NET_FRAMEWORK_BASE="" -# CONFIG_JAVA_BINDINGS is not set -CONFIG_JAVA_HOME="" -# CONFIG_PERL_BINDINGS is not set -CONFIG_PERL_CORE="" -CONFIG_PERL_LIB="" -# CONFIG_LUA_BINDINGS is not set -CONFIG_LUA_CORE="" - -# -# Samples -# -# CONFIG_SAMPLES is not set -# CONFIG_C_SAMPLES is not set -# CONFIG_CSHARP_SAMPLES is not set -# CONFIG_VBNET_SAMPLES is not set -# CONFIG_JAVA_SAMPLES is not set -# CONFIG_PERL_SAMPLES is not set -# CONFIG_LUA_SAMPLES is not set - -# -# BigInt Options -# -# CONFIG_BIGINT_CLASSICAL is not set -# CONFIG_BIGINT_MONTGOMERY is not set -CONFIG_BIGINT_BARRETT=y -CONFIG_BIGINT_CRT=y -# CONFIG_BIGINT_KARATSUBA is not set -MUL_KARATSUBA_THRESH=0 -SQU_KARATSUBA_THRESH=0 -CONFIG_BIGINT_SLIDING_WINDOW=y -CONFIG_BIGINT_SQUARE=y -# CONFIG_BIGINT_CHECK_ON is not set diff --git a/package/luci/libs/luci-lib-nixio/axtls-config/config.h b/package/luci/libs/luci-lib-nixio/axtls-config/config.h deleted file mode 100644 index 0f861f34b3..0000000000 --- a/package/luci/libs/luci-lib-nixio/axtls-config/config.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Automatically generated header file: don't edit - */ - -#define HAVE_DOT_CONFIG 1 -#define CONFIG_PLATFORM_LINUX 1 -#undef CONFIG_PLATFORM_CYGWIN -#undef CONFIG_PLATFORM_WIN32 - -/* - * General Configuration - */ -#define PREFIX "/usr" -#undef CONFIG_DEBUG -#define CONFIG_STRIP_UNWANTED_SECTIONS 1 -#undef CONFIG_VISUAL_STUDIO_7_0 -#undef CONFIG_VISUAL_STUDIO_8_0 -#define CONFIG_VISUAL_STUDIO_7_0_BASE "" -#define CONFIG_VISUAL_STUDIO_8_0_BASE "" -#define CONFIG_EXTRA_CFLAGS_OPTIONS "-fpic" -#define CONFIG_EXTRA_LDFLAGS_OPTIONS "" - -/* - * SSL Library - */ -#undef CONFIG_SSL_SERVER_ONLY -#undef CONFIG_SSL_CERT_VERIFICATION -#undef CONFIG_SSL_ENABLE_CLIENT -#define CONFIG_SSL_FULL_MODE 1 -#undef CONFIG_SSL_SKELETON_MODE -#undef CONFIG_SSL_PROT_LOW -#define CONFIG_SSL_PROT_MEDIUM 1 -#undef CONFIG_SSL_PROT_HIGH -#undef CONFIG_SSL_USE_DEFAULT_KEY -#define CONFIG_SSL_PRIVATE_KEY_LOCATION "/etc/nixio/rsa_main.der" -#define CONFIG_SSL_PRIVATE_KEY_PASSWORD "" -#define CONFIG_SSL_X509_CERT_LOCATION "" -#undef CONFIG_SSL_GENERATE_X509_CERT -#define CONFIG_SSL_X509_COMMON_NAME "" -#define CONFIG_SSL_X509_ORGANIZATION_NAME "" -#define CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME "" -#undef CONFIG_SSL_ENABLE_V23_HANDSHAKE -#undef CONFIG_SSL_HAS_PEM -#undef CONFIG_SSL_USE_PKCS12 -#define CONFIG_SSL_EXPIRY_TIME 24 -#define CONFIG_X509_MAX_CA_CERTS 4 -#define CONFIG_SSL_MAX_CERTS 2 -#define CONFIG_SSL_CTX_MUTEXING 1 -#define CONFIG_USE_DEV_URANDOM 1 -#undef CONFIG_WIN32_USE_CRYPTO_LIB -#undef CONFIG_OPENSSL_COMPATIBLE -#undef CONFIG_PERFORMANCE_TESTING -#undef CONFIG_SSL_TEST -#undef CONFIG_AXHTTPD -#undef CONFIG_HTTP_STATIC_BUILD -#define CONFIG_HTTP_PORT -#define CONFIG_HTTP_HTTPS_PORT -#define CONFIG_HTTP_SESSION_CACHE_SIZE -#define CONFIG_HTTP_WEBROOT "" -#define CONFIG_HTTP_TIMEOUT -#undef CONFIG_HTTP_HAS_CGI -#define CONFIG_HTTP_CGI_EXTENSIONS "" -#undef CONFIG_HTTP_ENABLE_LUA -#define CONFIG_HTTP_LUA_PREFIX "" -#define CONFIG_HTTP_LUA_CGI_LAUNCHER "" -#undef CONFIG_HTTP_BUILD_LUA -#undef CONFIG_HTTP_DIRECTORIES -#undef CONFIG_HTTP_HAS_AUTHORIZATION -#undef CONFIG_HTTP_HAS_IPV6 -#undef CONFIG_HTTP_ENABLE_DIFFERENT_USER -#define CONFIG_HTTP_USER "" -#undef CONFIG_HTTP_VERBOSE -#undef CONFIG_HTTP_IS_DAEMON - -/* - * Language Bindings - */ -#undef CONFIG_BINDINGS -#undef CONFIG_CSHARP_BINDINGS -#undef CONFIG_VBNET_BINDINGS -#define CONFIG_DOT_NET_FRAMEWORK_BASE "" -#undef CONFIG_JAVA_BINDINGS -#define CONFIG_JAVA_HOME "" -#undef CONFIG_PERL_BINDINGS -#define CONFIG_PERL_CORE "" -#define CONFIG_PERL_LIB "" -#undef CONFIG_LUA_BINDINGS -#define CONFIG_LUA_CORE "" - -/* - * Samples - */ -#undef CONFIG_SAMPLES -#undef CONFIG_C_SAMPLES -#undef CONFIG_CSHARP_SAMPLES -#undef CONFIG_VBNET_SAMPLES -#undef CONFIG_JAVA_SAMPLES -#undef CONFIG_PERL_SAMPLES -#undef CONFIG_LUA_SAMPLES - -/* - * BigInt Options - */ -#undef CONFIG_BIGINT_CLASSICAL -#undef CONFIG_BIGINT_MONTGOMERY -#define CONFIG_BIGINT_BARRETT 1 -#define CONFIG_BIGINT_CRT 1 -#undef CONFIG_BIGINT_KARATSUBA -#define MUL_KARATSUBA_THRESH -#define SQU_KARATSUBA_THRESH -#define CONFIG_BIGINT_SLIDING_WINDOW 1 -#define CONFIG_BIGINT_SQUARE 1 -#undef CONFIG_BIGINT_CHECK_ON diff --git a/package/luci/libs/luci-lib-nixio/axtls-root/etc/nixio/rsa_main.der b/package/luci/libs/luci-lib-nixio/axtls-root/etc/nixio/rsa_main.der deleted file mode 100644 index e17fdc0a0c70ea2783896858d75539f404048eb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmV-n0-pUaf&yIv0RRGlfdJOj{f-NB6s=ZkK6xsdxjSkca%)`@KJMk(U>WOiS|#Eb zoAWdEN;`Dk9cL|zgXLJx;E>AL(m2eAPKsA&nS6t2IO9Qqj~%MAO&FPJUne3v)6C7X8x$f3Ls#j((1AIKfm6r=>2r<0Rlk)+8ds;3PW2BHX@!+ z+hK(B+-P4Vyf!w#%h*Q09HYMjiPTw>^`#K{_${>*UNAhjLe-QzEC>oUjDg(3zP*dP*_& zi#Mt6_9p@(1-mBPhHL=>Km>PKQkFe7+8AfC5;cv}sUoyUZh$#O63X*%B~P~IB8~c# zVPqw*4(qG<0Z7UDPfU{PVAo~A%Nw}+xVzm)(E>pL>Dj&i5m%8UI~~REC*EW9J5XLU*A84D;RtmF~=XW diff --git a/package/luci/libs/luci-lib-nixio/docsrc/CHANGELOG.lua b/package/luci/libs/luci-lib-nixio/docsrc/CHANGELOG.lua deleted file mode 100644 index aa31841402..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/CHANGELOG.lua +++ /dev/null @@ -1,29 +0,0 @@ ---- Changes and improvements. -module "nixio.CHANGELOG" - ---- Service Release. ---

      ---
    • Added getifaddrs() function.
    • ---
    • Added getsockopt(), setsockopt(), getsockname() and getpeername() --- directly to TLS-socket objects unifying the socket interface.
    • ---
    • Added support for CyaSSL as cryptographical backend.
    • ---
    • Added support for x509 certificates in DER format.
    • ---
    • Added support for splice() in UnifiedIO.copyz().
    • ---
    • Added interface to inject chunks into UnifiedIO.linesource() buffer.
    • ---
    • Changed TLS behaviour to explicitely separate servers and clients.
    • ---
    • Fixed usage of signed datatype breaking Base64 decoding.
    • ---
    • Fixed namespace clashes for nixio.fs.
    • ---
    • Fixed splice() support for some exotic C libraries.
    • ---
    • Reconfigure axTLS cryptographical provider and mark it as obsolete.
    • ---
    --- @class table --- @name 0.3 --- @return ! - ---- Initial Release. ---
      ---
    • Initial Release
    • ---
    --- @class table --- @name 0.2 --- @return ! diff --git a/package/luci/libs/luci-lib-nixio/docsrc/README.lua b/package/luci/libs/luci-lib-nixio/docsrc/README.lua deleted file mode 100644 index ee3e3a216c..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/README.lua +++ /dev/null @@ -1,95 +0,0 @@ ---- General Information. -module "nixio.README" - ---- General error handling information. ---
      ---
    • Most of the functions available in this library may fail. If any error --- occurs the function returns nil or false, an error code --- (usually errno) and an additional error message text (if avaialable).
    • ---
    • At the moment false is only returned when a non-blocking I/O function --- fails with EAGAIN, EWOULDBLOCK or WSAEWOULDBLOCK for any others nil is --- returned as first parameter. Therefore you can use false to write portable --- non-blocking I/O applications.
    • ---
    • Note that the function documentation does only mention the return values --- in case of a successful operation.
    • ---
    • You can find a table of common error numbers and other useful constants --- like signal numbers in nixio.const e.g. nixio.const.EINVAL, --- nixio.const.SIGTERM, etc. For portability there is a second error constant --- table nixio.const_sock for socket error codes. This might --- be important if you are dealing with Windows applications, on POSIX however --- const_sock is just an alias for const.
    • ---
    • With some exceptions - which are explicitely stated in the function --- documentation - all blocking functions are signal-protected and will not fail --- with EINTR.
    • ---
    • On POSIX the SIGPIPE signal will be set to ignore upon initialization. --- You should restore the default behaviour or set a custom signal handler --- in your program after loading nixio if you need this behaviour.
    • ---
    --- @class table --- @name Errorhandling --- @return ! - ---- Function conventions. ---
    In general all functions are namend and behave like their POSIX API --- counterparts - where applicable - applying the following rules: ---
      ---
    • Functions should be named like the underlying POSIX API function ommiting --- prefixes or suffixes - especially when placed in an object-context ( --- lockf -> File:lock, fsync -> File:sync, dup2 -> dup, ...)
    • ---
    • If you are unclear about the behaviour of a function you should consult --- your OS API documentation (e.g. the manpages).
    • ---
    • If the name is significantly different from the POSIX-function, the --- underlying function(s) are stated in the documentation.
    • ---
    • Parameters should reflect those of the C-API, buffer length arguments and --- by-reference parameters should be ommitted for pratical purposes.
    • ---
    • If a C function accepts a bitfield as parameter, it should be translated --- into lower case string flags representing the flags if the bitfield is the --- last parameter and also ommiting prefixes or suffixes. (e.g. waitpid --- (pid, &s, WNOHANG | WUNTRACED) -> waitpid(pid, "nohang", "untraced"), --- getsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) -> --- Socket:getopt("socket", "reuseaddr"), etc.)
    • ---
    • If it is not applicable to provide a string representation of the --- bitfield a bitfield generator helper is provided. It is named FUNCTION_flags. --- (open("/tmp/test", O_RDONLY | O_NONBLOCK) -> open("/tmp/test", open_flags( --- "rdonly", "nonblock")))
    • ---
    --- @class table --- @name Functions --- @return ! - ---- Platform information. ---
      ---
    • The minimum platform requirements are a decent POSIX 2001 support. --- Builds are more or less tested on Linux, Solaris and FreeBSD. Builds for --- Windows XP SP1 and later can be compiled with MinGW either from Windows --- itself or using the MinGW cross-compiler. Earlier versions of Windows are not --- supported.
    • ---
    • In general all functions which don't have any remarks --- in their documentation are available on all platforms.
    • ---
    • Functions with a (POSIX), (Linux) or similar prefix are only available --- on these specific platforms. Same appplies to parameters of functions --- with a similar suffix.
    • ---
    • Some functions might have limitations on some platforms. This should --- be stated in the documentation. Please also consult your OS API --- documentation.
    • ---
    --- @usage Tes --- @class table --- @name Platforms --- @return ! - ---- Cryptography and TLS libraries. ---
      ---
    • Currently 3 underlying cryptography libraries are supported: openssl, --- cyassl and axTLS. The name of the library in use is written to --- nixio.tls_provider
    • ---
    • You should whenever possible use openssl or cyassl as axTLS has only --- limited support. It does not provide support for non-blocking sockets and --- is probably less audited than the other ones.
    • ---
    • As the supported Windows versions are not suitable for embedded devices --- axTLS is at the moment not supported on Windows.
    • ---
    --- @usage Tes --- @class table --- @name TLS-Crypto --- @return ! diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.CryptoHash.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.CryptoHash.lua deleted file mode 100644 index a08b48d680..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.CryptoHash.lua +++ /dev/null @@ -1,17 +0,0 @@ ---- Cryptographical Hash and HMAC object. --- @cstyle instance -module "nixio.CryptoHash" - ---- Add another chunk of data to be hashed. --- @class function --- @name CryptoHash.update --- @param chunk Chunk of data --- @return CryptoHash object (self) - ---- Finalize the hash and return the digest. --- @class function --- @name CryptoHash.final --- @usage You cannot call update on a hash object that was already finalized --- you can however call final multiple times to get the digest. --- @return hexdigest --- @return buffer containing binary digest \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.File.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.File.lua deleted file mode 100644 index 368562a2a1..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.File.lua +++ /dev/null @@ -1,109 +0,0 @@ ---- Large File Object. --- Large file operations are supported up to 52 bits if the Lua number type is --- double (default). --- @cstyle instance -module "nixio.File" - ---- Write to the file descriptor. --- @class function --- @name File.write --- @usage Warning: It is not guaranteed that all data --- in the buffer is written at once especially when dealing with pipes. --- You have to check the return value - the number of bytes actually written - --- or use the safe IO functions in the high-level IO utility module. --- @usage Unlike standard Lua indexing the lowest offset and default is 0. --- @param buffer Buffer holding the data to be written. --- @param offset Offset to start reading the buffer from. (optional) --- @param length Length of chunk to read from the buffer. (optional) --- @return number of bytes written - ---- Read from a file descriptor. --- @class function --- @name File.read --- @usage Warning: It is not guaranteed that all requested data --- is read at once especially when dealing with pipes. --- You have to check the return value - the length of the buffer actually read - --- or use the safe IO functions in the high-level IO utility module. --- @usage The length of the return buffer is limited by the (compile time) --- nixio buffersize which is nixio.const.buffersize (8192 by default). --- Any read request greater than that will be safely truncated to this value. --- @param length Amount of data to read (in Bytes). --- @return buffer containing data successfully read - ---- Reposition read / write offset of the file descriptor. --- The seek will be done either from the beginning of the file or relative --- to the current position or relative to the end. --- @class function --- @name File.seek --- @usage This function calls lseek(). --- @param offset File Offset --- @param whence Starting point ["set", "cur", "end"] --- @return new (absolute) offset position - ---- Return the current read / write offset of the file descriptor. --- @class function --- @name File.tell --- @usage This function calls lseek() with offset 0 from the current position. --- @return offset position - ---- Synchronizes the file with the storage device. --- Returns when the file is successfully written to the disk. --- @class function --- @name File.sync --- @usage This function calls fsync() when data_only equals false --- otherwise fdatasync(), on Windows _commit() is used instead. --- @usage fdatasync() is only supported by Linux and Solaris. For other systems --- the data_only parameter is ignored and fsync() is always called. --- @param data_only Do not synchronize the metadata. (optional, boolean) --- @return true - ---- Apply or test a lock on the file. --- @class function --- @name File.lock --- @usage This function calls lockf() on POSIX and _locking() on Windows. --- @usage The "lock" command is blocking, "tlock" is non-blocking, --- "ulock" unlocks and "test" only tests for the lock. --- @usage The "test" command is not available on Windows. --- @usage Locks are by default advisory on POSIX, but mandatory on Windows. --- @param command Locking Command ["lock", "tlock", "ulock", "test"] --- @param length Amount of Bytes to lock from current offset (optional) --- @return true - ---- Get file status and attributes. --- @class function --- @name File.stat --- @param field Only return a specific field, not the whole table (optional) --- @usage This function calls fstat(). --- @return Table containing:
      ---
    • atime = Last access timestamp
    • ---
    • blksize = Blocksize (POSIX only)
    • ---
    • blocks = Blocks used (POSIX only)
    • ---
    • ctime = Creation timestamp
    • ---
    • dev = Device ID
    • ---
    • gid = Group ID
    • ---
    • ino = Inode
    • ---
    • modedec = Mode converted into a decimal number
    • ---
    • modestr = Mode as string as returned by `ls -l`
    • ---
    • mtime = Last modification timestamp
    • ---
    • nlink = Number of links
    • ---
    • rdev = Device ID (if special file)
    • ---
    • size = Size in bytes
    • ---
    • type = ["reg", "dir", "chr", "blk", "fifo", "lnk", "sock"]
    • ---
    • uid = User ID
    • ---
    - ---- Close the file descriptor. --- @class function --- @name File.close --- @return true - ---- Get the number of the filedescriptor. --- @class function --- @name File.fileno --- @return file descriptor number - ---- (POSIX) Set the blocking mode of the file descriptor. --- @class function --- @name File.setblocking --- @param blocking (boolean) --- @return true \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.Socket.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.Socket.lua deleted file mode 100644 index 7123393bf4..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.Socket.lua +++ /dev/null @@ -1,170 +0,0 @@ ---- Socket Object. --- Supports IPv4, IPv6 and UNIX (POSIX only) families. --- @cstyle instance -module "nixio.Socket" - ---- Get the local address of a socket. --- @class function --- @name Socket.getsockname --- @return IP-Address --- @return Port - ---- Get the peer address of a socket. --- @class function --- @name Socket.getpeername --- @return IP-Address --- @return Port - ---- Bind the socket to a network address. --- @class function --- @name Socket.bind --- @usage This function calls getaddrinfo() and bind() but NOT listen(). --- @usage If host is a domain name it will be looked up and bind() --- tries the IP-Addresses in the order returned by the DNS resolver --- until the bind succeeds. --- @usage UNIX sockets ignore the port, --- and interpret host as a socket path. --- @param host Host (optional, default: all addresses) --- @param port Port or service description --- @return true - ---- Connect the socket to a network address. --- @class function --- @name Socket.connect --- @usage This function calls getaddrinfo() and connect(). --- @usage If host is a domain name it will be looked up and connect() --- tries the IP-Addresses in the order returned by the DNS resolver --- until the connect succeeds. --- @usage UNIX sockets ignore the port, --- and interpret host as a socket path. --- @param host Hostname or IP-Address (optional, default: localhost) --- @param port Port or service description --- @return true - ---- Listen for connections on the socket. --- @class function --- @name Socket.listen --- @param backlog Length of queue for pending connections --- @return true - ---- Accept a connection on the socket. --- @class function --- @name Socket.accept --- @return Socket Object --- @return Peer IP-Address --- @return Peer Port - ---- Send a message on the socket specifying the destination. --- @class function --- @name Socket.sendto --- @usage Warning: It is not guaranteed that all data --- in the buffer is written at once. --- You have to check the return value - the number of bytes actually written - --- or use the safe IO functions in the high-level IO utility module. --- @usage Unlike standard Lua indexing the lowest offset and default is 0. --- @param buffer Buffer holding the data to be written. --- @param host Target IP-Address --- @param port Target Port --- @param offset Offset to start reading the buffer from. (optional) --- @param length Length of chunk to read from the buffer. (optional) --- @return number of bytes written - ---- Send a message on the socket. --- This function is identical to sendto except for the missing destination --- paramters. See the sendto description for a detailed description. --- @class function --- @name Socket.send --- @param buffer Buffer holding the data to be written. --- @param offset Offset to start reading the buffer from. (optional) --- @param length Length of chunk to read from the buffer. (optional) --- @see Socket.sendto --- @return number of bytes written - ---- Send a message on the socket (This is an alias for send). --- See the sendto description for a detailed description. --- @class function --- @name Socket.write --- @param buffer Buffer holding the data to be written. --- @param offset Offset to start reading the buffer from. (optional) --- @param length Length of chunk to read from the buffer. (optional) --- @see Socket.sendto --- @return number of bytes written - ---- Receive a message on the socket including the senders source address. --- @class function --- @name Socket.recvfrom --- @usage Warning: It is not guaranteed that all requested data --- is read at once. --- You have to check the return value - the length of the buffer actually read - --- or use the safe IO functions in the high-level IO utility module. --- @usage The length of the return buffer is limited by the (compile time) --- nixio buffersize which is nixio.const.buffersize (8192 by default). --- Any read request greater than that will be safely truncated to this value. --- @param length Amount of data to read (in Bytes). --- @return buffer containing data successfully read --- @return host IP-Address of the sender --- @return port Port of the sender - ---- Receive a message on the socket. --- This function is identical to recvfrom except that it does not return --- the sender's source address. See the recvfrom description for more details. --- @class function --- @name Socket.recv --- @param length Amount of data to read (in Bytes). --- @see Socket.recvfrom --- @return buffer containing data successfully read - ---- Receive a message on the socket (This is an alias for recv). --- See the recvfrom description for more details. --- @class function --- @name Socket.read --- @param length Amount of data to read (in Bytes). --- @see Socket.recvfrom --- @return buffer containing data successfully read - ---- Close the socket. --- @class function --- @name Socket.close --- @return true - ---- Shut down part of a full-duplex connection. --- @class function --- @name Socket.shutdown --- @param how (optional, default: rdwr) ["rdwr", "rd", "wr"] --- @return true - ---- Get the number of the filedescriptor. --- @class function --- @name Socket.fileno --- @return file descriptor number - ---- Set the blocking mode of the socket. --- @class function --- @name Socket.setblocking --- @param blocking (boolean) --- @return true - ---- Set a socket option. --- @class function --- @name Socket.setopt --- @param level Level ["socket", "tcp", "ip", "ipv6"] --- @param option Option ["keepalive", "reuseaddr", "sndbuf", "rcvbuf", --- "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute", --- "bindtodevice", "error", "oobinline", "cork" (TCP), "nodelay" (TCP), --- "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop" --- (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops" --- (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)] --- @param value Value --- @return true - ---- Get a socket option. --- @class function --- @name Socket.getopt --- @param level Level ["socket", "tcp", "ip", "ipv6"] --- @param option Option ["keepalive", "reuseaddr", "sndbuf", "rcvbuf", --- "priority", "broadcast", "linger", "sndtimeo", "rcvtimeo", "dontroute", --- "bindtodevice", "error", "oobinline", "cork" (TCP), "nodelay" (TCP), --- "mtu" (IP, IPv6), "hdrincl" (IP), "multicast_ttl" (IP), "multicast_loop" --- (IP, IPv6), "multicast_if" (IP, IPv6), "v6only" (IPv6), "multicast_hops" --- (IPv6), "add_membership" (IP, IPv6), "drop_membership" (IP, IPv6)] --- @return Value \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSContext.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSContext.lua deleted file mode 100644 index 7cc071195a..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSContext.lua +++ /dev/null @@ -1,46 +0,0 @@ ---- Transport Layer Security Context Object. --- @cstyle instance -module "nixio.TLSContext" - ---- Create a TLS Socket from a socket descriptor. --- @class function --- @name TLSContext.create --- @param socket Socket Object --- @return TLSSocket Object - ---- Assign a PEM certificate to this context. --- @class function --- @name TLSContext.set_cert --- @usage This function calls SSL_CTX_use_certificate_chain_file(). --- @param path Certificate File path --- @return true - ---- Assign a PEM private key to this context. --- @class function --- @name TLSContext.set_key --- @usage This function calls SSL_CTX_use_PrivateKey_file(). --- @param path Private Key File path --- @return true - ---- Set the available ciphers for this context. --- @class function --- @name TLSContext.set_ciphers --- @usage This function calls SSL_CTX_set_cipher_list(). --- @param cipherlist String containing a list of ciphers --- @return true - ---- Set the verification depth of this context. --- @class function --- @name TLSContext.set_verify_depth --- @usage This function calls SSL_CTX_set_verify_depth(). --- @param depth Depth --- @return true - ---- Set the verification flags of this context. --- @class function --- @name TLSContext.set_verify --- @usage This function calls SSL_CTX_set_verify(). --- @param flag1 First Flag ["none", "peer", "verify_fail_if_no_peer_cert", --- "client_once"] --- @param ... More Flags [-"-] --- @return true \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSSocket.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSSocket.lua deleted file mode 100644 index b932cde0d2..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.TLSSocket.lua +++ /dev/null @@ -1,73 +0,0 @@ ---- TLS Socket Object. --- TLS Sockets contain the underlying socket and context in the fields --- "socket" and "context". --- @cstyle instance -module "nixio.TLSSocket" - ---- Initiate the TLS handshake as client with the server. --- @class function --- @name TLSSocket.connect --- @usage This function calls SSL_connect(). --- @usage You have to call either connect or accept before transmitting data. --- @see TLSSocket.accept --- @return true - ---- Wait for a TLS handshake from a client. --- @class function --- @name TLSSocket.accept --- @usage This function calls SSL_accept(). --- @usage You have to call either connect or accept before transmitting data. --- @see TLSSocket.connect --- @return true - ---- Send a message to the socket. --- @class function --- @name TLSSocket.send --- @usage This function calls SSL_write(). --- @usage Warning: It is not guaranteed that all data --- in the buffer is written at once. --- You have to check the return value - the number of bytes actually written - --- or use the safe IO functions in the high-level IO utility module. --- @usage Unlike standard Lua indexing the lowest offset and default is 0. --- @param buffer Buffer holding the data to be written. --- @param offset Offset to start reading the buffer from. (optional) --- @param length Length of chunk to read from the buffer. (optional) --- @return number of bytes written - ---- Send a message on the socket (This is an alias for send). --- See the send description for a detailed description. --- @class function --- @name TLSSocket.write --- @param buffer Buffer holding the data to be written. --- @param offset Offset to start reading the buffer from. (optional) --- @param length Length of chunk to read from the buffer. (optional) --- @see TLSSocket.send --- @return number of bytes written - ---- Receive a message on the socket. --- @class function --- @name TLSSocket.recv --- @usage This function calls SSL_read(). --- @usage Warning: It is not guaranteed that all requested data --- is read at once. --- You have to check the return value - the length of the buffer actually read - --- or use the safe IO functions in the high-level IO utility module. --- @usage The length of the return buffer is limited by the (compile time) --- nixio buffersize which is nixio.const.buffersize (8192 by default). --- Any read request greater than that will be safely truncated to this value. --- @param length Amount of data to read (in Bytes). --- @return buffer containing data successfully read - ---- Receive a message on the socket (This is an alias for recv). --- See the recv description for more details. --- @class function --- @name TLSSocket.read --- @param length Amount of data to read (in Bytes). --- @see TLSSocket.recv --- @return buffer containing data successfully read - ---- Shut down the TLS connection. --- @class function --- @name TLSSocket.shutdown --- @usage This function calls SSL_shutdown(). --- @return true \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.UnifiedIO.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.UnifiedIO.lua deleted file mode 100644 index 6e407ff2ca..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.UnifiedIO.lua +++ /dev/null @@ -1,129 +0,0 @@ ---- Unified high-level I/O utility API for Files, Sockets and TLS-Sockets. --- These functions are added to the object function tables by doing --- require "nixio.util", can be used on all nixio IO Descriptors and --- are based on the shared low-level read() and write() functions. --- @cstyle instance -module "nixio.UnifiedIO" - ---- Test whether the I/O-Descriptor is a socket. --- @class function --- @name UnifiedIO.is_socket --- @return boolean - ---- Test whether the I/O-Descriptor is a TLS socket. --- @class function --- @name UnifiedIO.is_tls_socket --- @return boolean - ---- Test whether the I/O-Descriptor is a file. --- @class function --- @name UnifiedIO.is_file --- @return boolean - ---- Read a block of data and wait until all data is available. --- @class function --- @name UnifiedIO.readall --- @usage This function uses the low-level read function of the descriptor. --- @usage If the length parameter is ommited, this function returns all data --- that can be read before an end-of-file, end-of-stream, connection shutdown --- or similar happens. --- @usage If the descriptor is non-blocking this function may fail with EAGAIN. --- @param length Bytes to read (optional) --- @return data that was successfully read if no error occured --- @return - reserved for error code - --- @return - reserved for error message - --- @return data that was successfully read even if an error occured - ---- Write a block of data and wait until all data is written. --- @class function --- @name UnifiedIO.writeall --- @usage This function uses the low-level write function of the descriptor. --- @usage If the descriptor is non-blocking this function may fail with EAGAIN. --- @param block Bytes to write --- @return bytes that were successfully written if no error occured --- @return - reserved for error code - --- @return - reserved for error message - --- @return bytes that were successfully written even if an error occured - ---- Create a line-based iterator. --- Lines may end with either \n or \r\n, these control chars are not included --- in the return value. --- @class function --- @name UnifiedIO.linesource --- @usage This function uses the low-level read function of the descriptor. --- @usage Note: This function uses an internal buffer to read --- ahead. Do NOT mix calls to read(all) and the returned iterator. If you want --- to stop reading line-based and want to use the read(all) functions instead --- you can pass "true" to the iterator which will flush the buffer --- and return the bufferd data. --- @usage If the limit parameter is ommited, this function uses the nixio --- buffersize (8192B by default). --- @usage If the descriptor is non-blocking the iterator may fail with EAGAIN. --- @usage The iterator can be used as an LTN12 source. --- @param limit Line limit --- @return Line-based Iterator - ---- Create a block-based iterator. --- @class function --- @name UnifiedIO.blocksource --- @usage This function uses the low-level read function of the descriptor. --- @usage The blocksize given is only advisory and to be seen as an upper limit, --- if an underlying read returns less bytes the chunk is nevertheless returned. --- @usage If the limit parameter is ommited, the iterator returns data --- until an end-of-file, end-of-stream, connection shutdown or similar happens. --- @usage The iterator will not buffer so it is safe to mix with calls to read. --- @usage If the descriptor is non-blocking the iterator may fail with EAGAIN. --- @usage The iterator can be used as an LTN12 source. --- @param blocksize Advisory blocksize (optional) --- @param limit Amount of data to consume (optional) --- @return Block-based Iterator - ---- Create a sink. --- This sink will simply write all data that it receives and optionally --- close the descriptor afterwards. --- @class function --- @name UnifiedIO.sink --- @usage This function uses the writeall function of the descriptor. --- @usage If the descriptor is non-blocking the sink may fail with EAGAIN. --- @usage The iterator can be used as an LTN12 sink. --- @param close_when_done (optional, boolean) --- @return Sink - ---- Copy data from the current descriptor to another one. --- @class function --- @name UnifiedIO.copy --- @usage This function uses the blocksource function of the source descriptor --- and the sink function of the target descriptor. --- @usage If the limit parameter is ommited, data is copied --- until an end-of-file, end-of-stream, connection shutdown or similar happens. --- @usage If the descriptor is non-blocking the function may fail with EAGAIN. --- @param fdout Target Descriptor --- @param size Bytes to copy (optional) --- @return bytes that were successfully written if no error occured --- @return - reserved for error code - --- @return - reserved for error message - --- @return bytes that were successfully written even if an error occured - ---- Copy data from the current descriptor to another one using kernel-space --- copying if possible. --- @class function --- @name UnifiedIO.copyz --- @usage This function uses the sendfile() syscall to copy the data or the --- blocksource function of the source descriptor and the sink function --- of the target descriptor as a fallback mechanism. --- @usage If the limit parameter is ommited, data is copied --- until an end-of-file, end-of-stream, connection shutdown or similar happens. --- @usage If the descriptor is non-blocking the function may fail with EAGAIN. --- @param fdout Target Descriptor --- @param size Bytes to copy (optional) --- @return bytes that were successfully written if no error occured --- @return - reserved for error code - --- @return - reserved for error message - --- @return bytes that were successfully written even if an error occured - ---- Close the descriptor. --- @class function --- @name UnifiedIO.close --- @usage If the descriptor is a TLS-socket the underlying descriptor is --- closed without touching the TLS connection. --- @return true \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.bin.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.bin.lua deleted file mode 100644 index 13e125d3cc..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.bin.lua +++ /dev/null @@ -1,33 +0,0 @@ ---- Binary operations and conversion. -module "nixio.bin" - ---- Return a hexadecimal ASCII represantation of the content of a buffer. --- @class function --- @name hexlify --- @param buffer Buffer --- @return representation using characters [0-9a-f] - ---- Return a binary buffer from a hexadecimal ASCII representation. --- @class function --- @name unhexlify --- @param hexvalue representation using characters [0-9a-f] --- @return binary data - ---- Calculate the CRC32 value of a buffer. --- @class function --- @name crc32 --- @param buffer Buffer --- @param initial Initial CRC32 value (optional) --- @return crc32 value - ---- Base64 encode a given buffer. --- @class function --- @name b64encode --- @param buffer Buffer --- @return base64 encoded buffer - ---- Base64 decode a given buffer. --- @class function --- @name b64decode --- @param buffer Base 64 Encoded data --- @return binary data \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.bit.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.bit.lua deleted file mode 100644 index 6951dd5321..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.bit.lua +++ /dev/null @@ -1,92 +0,0 @@ ---- Bitfield operators and mainpulation functions. --- Can be used as a drop-in replacement for bitlib. -module "nixio.bit" - ---- Bitwise OR several numbers. --- @class function --- @name bor --- @param oper1 First Operand --- @param oper2 Second Operand --- @param ... More Operands --- @return number - ---- Invert given number. --- @class function --- @name bnot --- @param oper Operand --- @return number - ---- Bitwise AND several numbers. --- @class function --- @name band --- @param oper1 First Operand --- @param oper2 Second Operand --- @param ... More Operands --- @return number - ---- Bitwise XOR several numbers. --- @class function --- @name bxor --- @param oper1 First Operand --- @param oper2 Second Operand --- @param ... More Operands --- @return number - ---- Left shift a number. --- @class function --- @name lshift --- @param oper number --- @param shift bits to shift --- @return number - ---- Right shift a number. --- @class function --- @name rshift --- @param oper number --- @param shift bits to shift --- @return number - ---- Arithmetically right shift a number. --- @class function --- @name arshift --- @param oper number --- @param shift bits to shift --- @return number - ---- Integer division of 2 or more numbers. --- @class function --- @name div --- @param oper1 Operand 1 --- @param oper2 Operand 2 --- @param ... More Operands --- @return number - ---- Cast a number to the bit-operating range. --- @class function --- @name cast --- @param oper number --- @return number - ---- Sets one or more flags of a bitfield. --- @class function --- @name set --- @param bitfield Bitfield --- @param flag1 First Flag --- @param ... More Flags --- @return altered bitfield - ---- Unsets one or more flags of a bitfield. --- @class function --- @name unset --- @param bitfield Bitfield --- @param flag1 First Flag --- @param ... More Flags --- @return altered bitfield - ---- Checks whether given flags are set in a bitfield. --- @class function --- @name check --- @param bitfield Bitfield --- @param flag1 First Flag --- @param ... More Flags --- @return true when all flags are set, otherwise false \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.crypto.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.crypto.lua deleted file mode 100644 index 158d0fc0bd..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.crypto.lua +++ /dev/null @@ -1,15 +0,0 @@ ---- Cryptographical library. -module "nixio.crypto" - ---- Create a hash object. --- @class function --- @name nixio.crypto.hash --- @param algo Algorithm ["sha1", "md5"] --- @return CryptoHash Object - ---- Create a HMAC object. --- @class function --- @name nixio.crypto.hmac --- @param algo Algorithm ["sha1", "md5"] --- @param key HMAC-Key --- @return CryptoHash Object \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.fs.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.fs.lua deleted file mode 100644 index 5d08719e96..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.fs.lua +++ /dev/null @@ -1,265 +0,0 @@ ---- Low-level and high-level filesystem manipulation library. -module "nixio.fs" - - ---- Check user's permission on a file. --- @class function --- @name nixio.fs.access --- @param path Path --- @param mode1 First Mode to check ["f", "r", "w", "x"] --- @param ... More Modes to check [-"-] --- @return true - ---- Strip the directory part from a path. --- @class function --- @name nixio.fs.basename --- @usage This function cannot fail and will never return nil. --- @param path Path --- @return basename - ---- Strip the base from a path. --- @class function --- @name nixio.fs.dirname --- @usage This function cannot fail and will never return nil. --- @param path Path --- @return dirname - ---- Return the cannonicalized absolute pathname. --- @class function --- @name nixio.fs.realpath --- @param path Path --- @return absolute path - ---- Remove a file or directory. --- @class function --- @name nixio.fs.remove --- @param path Path --- @return true - ---- Delete a name and - if no links are left - the associated file. --- @class function --- @name nixio.fs.unlink --- @param path Path --- @return true - ---- Renames a file or directory. --- @class function --- @name nixio.fs.rename --- @param src Source path --- @param dest Destination path --- @usage It is normally not possible to rename files accross fileystems. --- @return true - ---- Remove an empty directory. --- @class function --- @name nixio.fs.rmdir --- @param path Path --- @return true - ---- Create a new directory. --- @class function --- @name nixio.fs.mkdir --- @param path Path --- @param mode File mode (optional, see chmod and umask) --- @see nixio.fs.chmod --- @see nixio.umask --- @return true - ---- Change the file mode. --- @class function --- @name nixio.fs.chmod --- @usage Windows only supports setting the write-protection through the --- "Writable to others" bit. --- @usage Notice: The mode-flag for the functions --- open, mkdir, mkfifo are affected by the umask. --- @param path Path --- @param mode File mode --- [decimal mode number, "[-r][-w][-xsS][-r][-w][-xsS][-r][-w][-xtT]"] --- @see nixio.umask --- @return true - ---- Iterate over the entries of a directory. --- @class function --- @name nixio.fs.dir --- @usage The special entries "." and ".." are omitted. --- @param path Path --- @return directory iterator returning one entry per call - ---- Create a hard link. --- @class function --- @name nixio.fs.link --- @usage This function calls link() on POSIX and CreateHardLink() on Windows. --- @param oldpath Path --- @param newpath Path --- @return true - ---- Change file last access and last modification time. --- @class function --- @name nixio.fs.utimes --- @param path Path --- @param actime Last access timestamp (optional, default: current time) --- @param mtime Last modification timestamp (optional, default: actime) --- @return true - ---- Get file status and attributes. --- @class function --- @name nixio.fs.stat --- @param path Path --- @param field Only return a specific field, not the whole table (optional) --- @return Table containing:
      ---
    • atime = Last access timestamp
    • ---
    • blksize = Blocksize (POSIX only)
    • ---
    • blocks = Blocks used (POSIX only)
    • ---
    • ctime = Creation timestamp
    • ---
    • dev = Device ID
    • ---
    • gid = Group ID
    • ---
    • ino = Inode
    • ---
    • modedec = Mode converted into a decimal number
    • ---
    • modestr = Mode as string as returned by `ls -l`
    • ---
    • mtime = Last modification timestamp
    • ---
    • nlink = Number of links
    • ---
    • rdev = Device ID (if special file)
    • ---
    • size = Size in bytes
    • ---
    • type = ["reg", "dir", "chr", "blk", "fifo", "lnk", "sock"]
    • ---
    • uid = User ID
    • ---
    - ---- Get file status and attributes and do not resolve if target is a symlink. --- @class function --- @name nixio.fs.lstat --- @param path Path --- @param field Only return a specific field, not the whole table (optional) --- @see nixio.fs.stat --- @return Table containing attributes (see stat for a detailed description) - ---- (POSIX) Change owner and group of a file. --- @class function --- @name nixio.fs.chown --- @param path Path --- @param user User ID or Username (optional) --- @param group Group ID or Groupname (optional) --- @return true - ---- (POSIX) Change owner and group of a file and do not resolve --- if target is a symlink. --- @class function --- @name nixio.fs.lchown --- @param path Path --- @param user User ID or Username (optional) --- @param group Group ID or Groupname (optional) --- @return true - ---- (POSIX) Create a FIFO (named pipe). --- @class function --- @name nixio.fs.mkfifo --- @param path Path --- @param mode File mode (optional, see chmod and umask) --- @see nixio.fs.chmod --- @see nixio.umask --- @return true - ---- (POSIX) Create a symbolic link. --- @class function --- @name nixio.fs.symlink --- @param oldpath Path --- @param newpath Path --- @return true - ---- (POSIX) Read the target of a symbolic link. --- @class function --- @name nixio.fs.readlink --- @param path Path --- @return target path - ---- (POSIX) Find pathnames matching a pattern. --- @class function --- @name nixio.fs.glob --- @param pattern Pattern --- @return path iterator --- @return number of matches - ---- (POSIX) Get filesystem statistics. --- @class function --- @name nixio.fs.statvfs --- @param path Path to any file within the filesystem. --- @return Table containing:
      ---
    • bavail = available blocks
    • ---
    • bfree = free blocks
    • ---
    • blocks = number of fragments
    • ---
    • frsize = fragment size
    • ---
    • favail = available inodes
    • ---
    • ffree = free inodes
    • ---
    • files = inodes
    • ---
    • flag = flags
    • ---
    • fsid = filesystem ID
    • ---
    • namemax = maximum filename length
    • ---
    - ---- Read the contents of a file into a buffer. --- @class function --- @name nixio.fs.readfile --- @param path Path --- @param limit Maximum bytes to read (optional) --- @return file contents - ---- Write a buffer into a file truncating the file first. --- @class function --- @name nixio.fs.writefile --- @param path Path --- @param data Data to write --- @return true - ---- Copy data between files. --- @class function --- @name nixio.fs.datacopy --- @param src Source file path --- @param dest Destination file path --- @param limit Maximum bytes to copy (optional) --- @return true - ---- Copy a file, directory or symlink non-recursively preserving file mode, --- timestamps, owner and group. --- @class function --- @name nixio.fs.copy --- @usage The destination must always be a full destination path e.g. do not --- omit the basename even if source and destination basename are equal. --- @param src Source path --- @param dest Destination path --- @return true - ---- Rename a file, directory or symlink non-recursively across filesystems. --- @class function --- @name nixio.fs.move --- @usage The destination must always be a full destination path e.g. do not --- omit the basename even if source and destination basename are equal. --- @param src Source path --- @param dest Destination path --- @return true - ---- Create a directory and all needed parent directories recursively. --- @class function --- @name nixio.fs.mkdirr --- @param dest Destination path --- @param mode File mode (optional, see chmod and umask) --- @see nixio.fs.chmod --- @see nixio.umask --- @return true - ---- Rename a file, directory or symlink recursively across filesystems. --- @class function --- @name nixio.fs.mover --- @usage The destination must always be a full destination path e.g. do not --- omit the basename even if source and destination basename are equal. --- @param src Source path --- @param dest Destination path --- @return true - ---- Copy a file, directory or symlink recursively preserving file mode, --- timestamps, owner and group. --- @class function --- @name nixio.fs.copyr --- @usage The destination must always be a full destination path e.g. do not --- omit the basename even if source and destination basename are equal. --- @param src Source path --- @param dest Destination path --- @return true \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/docsrc/nixio.lua b/package/luci/libs/luci-lib-nixio/docsrc/nixio.lua deleted file mode 100644 index 1b434d76de..0000000000 --- a/package/luci/libs/luci-lib-nixio/docsrc/nixio.lua +++ /dev/null @@ -1,467 +0,0 @@ ---- General POSIX IO library. -module "nixio" - ---- Look up a hostname and service via DNS. --- @class function --- @name nixio.getaddrinfo --- @param host hostname to lookup (optional) --- @param family address family ["any", "inet", "inet6"] --- @param service service name or port (optional) --- @return Table containing one or more tables containing:
      ---
    • family = ["inet", "inet6"]
    • ---
    • socktype = ["stream", "dgram", "raw"]
    • ---
    • address = Resolved IP-Address
    • ---
    • port = Resolved Port (if service was given)
    • ---
    - ---- Reverse look up an IP-Address via DNS. --- @class function --- @name nixio.getnameinfo --- @param ipaddr IPv4 or IPv6-Address --- @return FQDN - ---- (Linux, BSD) Get a list of available network interfaces and their addresses. --- @class function --- @name nixio.getifaddrs --- @return Table containing one or more tables containing:
      ---
    • name = Interface Name
    • ---
    • family = ["inet", "inet6", "packet"]
    • ---
    • addr = Interface Address (IPv4, IPv6, MAC, ...)
    • ---
    • broadaddr = Broadcast Address
    • ---
    • dstaddr = Destination Address (Point-to-Point)
    • ---
    • netmask = Netmask (if available)
    • ---
    • prefix = Prefix (if available)
    • ---
    • flags = Table of interface flags (up, multicast, loopback, ...)
    • ---
    • data = Statistics (Linux, "packet"-family)
    • ---
    • hatype = Hardware Type Identifier (Linix, "packet"-family)
    • ---
    • ifindex = Interface Index (Linux, "packet"-family)
    • ---
    - ---- Get protocol entry by name. --- @usage This function returns nil if the given protocol is unknown. --- @class function --- @name nixio.getprotobyname --- @param name protocol name to lookup --- @return Table containing the following fields:
      ---
    • name = Protocol Name
    • ---
    • proto = Protocol Number
    • ---
    • aliases = Table of alias names
    • ---
    - ---- Get protocol entry by number. --- @usage This function returns nil if the given protocol is unknown. --- @class function --- @name nixio.getprotobynumber --- @param proto protocol number to lookup --- @return Table containing the following fields:
      ---
    • name = Protocol Name
    • ---
    • proto = Protocol Number
    • ---
    • aliases = Table of alias names
    • ---
    - ---- Get all or a specifc proto entry. --- @class function --- @name nixio.getproto --- @param proto protocol number or name to lookup (optional) --- @return Table (or if no parameter is given, a table of tables) --- containing the following fields:
      ---
    • name = Protocol Name
    • ---
    • proto = Protocol Number
    • ---
    • aliases = Table of alias names
    • ---
    - ---- Create a new socket and bind it to a network address. --- This function is a shortcut for calling nixio.socket and then bind() --- on the socket object. --- @usage This functions calls getaddrinfo(), socket(), --- setsockopt() and bind() but NOT listen(). --- @usage The reuseaddr-option is automatically set before binding. --- @class function --- @name nixio.bind --- @param host Hostname or IP-Address (optional, default: all addresses) --- @param port Port or service description --- @param family Address family ["any", "inet", "inet6"] --- @param socktype Socket Type ["stream", "dgram"] --- @return Socket Object - ---- Create a new socket and connect to a network address. --- This function is a shortcut for calling nixio.socket and then connect() --- on the socket object. --- @usage This functions calls getaddrinfo(), socket() and connect(). --- @class function --- @name nixio.connect --- @param host Hostname or IP-Address (optional, default: localhost) --- @param port Port or service description --- @param family Address family ["any", "inet", "inet6"] --- @param socktype Socket Type ["stream", "dgram"] --- @return Socket Object - ---- Open a file. --- @class function --- @name nixio.open --- @usage Although this function also supports the traditional fopen() --- file flags it does not create a file stream but uses the open() syscall. --- @param path Filesystem path to open --- @param flags Flag string or number (see open_flags). --- ["r", "r+", "w", "w+", "a", "a+"] --- @param mode File mode for newly created files (see chmod, umask). --- @see nixio.umask --- @see nixio.open_flags --- @return File Object - ---- Generate flags for a call to open(). --- @class function --- @name nixio.open_flags --- @usage This function cannot fail and will never return nil. --- @usage The "nonblock" and "ndelay" flags are aliases. --- @usage The "nonblock", "ndelay" and "sync" flags are no-ops on Windows. --- @param flag1 First Flag ["append", "creat", "excl", "nonblock", "ndelay", --- "sync", "trunc", "rdonly", "wronly", "rdwr"] --- @param ... More Flags [-"-] --- @return flag to be used as second paramter to open - ---- Duplicate a file descriptor. --- @class function --- @name nixio.dup --- @usage This funcation calls dup2() if newfd is set, otherwise dup(). --- @param oldfd Old descriptor [File Object, Socket Object (POSIX only)] --- @param newfd New descriptor to serve as copy (optional) --- @return File Object of new descriptor - ---- Create a pipe. --- @class function --- @name nixio.pipe --- @return File Object of the read end --- @return File Object of the write end - ---- Get the last system error code. --- @class function --- @name nixio.errno --- @return Error code - ---- Get the error message for the corresponding error code. --- @class function --- @name nixio.strerror --- @param errno System error code --- @return Error message - ---- Sleep for a specified amount of time. --- @class function --- @usage Not all systems support nanosecond precision but you can expect --- to have at least maillisecond precision. --- @usage This function is not signal-protected and may fail with EINTR. --- @param seconds Seconds to wait (optional) --- @param nanoseconds Nanoseconds to wait (optional) --- @name nixio.nanosleep --- @return true - ---- Generate events-bitfield or parse revents-bitfield for poll. --- @class function --- @name nixio.poll_flags --- @param mode1 revents-Flag bitfield returned from poll to parse OR --- ["in", "out", "err", "pri" (POSIX), "hup" (POSIX), "nval" (POSIX)] --- @param ... More mode strings for generating the flag [-"-] --- @see nixio.poll --- @return table with boolean fields reflecting the mode parameter --- OR bitfield to use for the events-Flag field - ---- Wait for some event on a file descriptor. --- poll() sets the revents-field of the tables provided by fds to a bitfield --- indicating the events that occured. --- @class function --- @usage This function works in-place on the provided table and only --- writes the revents field, you can use other fields on your demand. --- @usage All metamethods on the tables provided as fds are ignored. --- @usage The revents-fields are not reset when the call times out. --- You have to check the first return value to be 0 to handle this case. --- @usage If you want to wait on a TLS-Socket you have to use the underlying --- socket instead. --- @usage On Windows poll is emulated through select(), can only be used --- on socket descriptors and cannot take more than 64 descriptors per call. --- @usage This function is not signal-protected and may fail with EINTR. --- @param fds Table containing one or more tables containing
      ---
    • fd = I/O Descriptor [Socket Object, File Object (POSIX)]
    • ---
    • events = events to wait for (bitfield generated with poll_flags)
    • ---
    --- @param timeout Timeout in milliseconds --- @name nixio.poll --- @see nixio.poll_flags --- @return number of ready IO descriptors --- @return the fds-table with revents-fields set - ---- (POSIX) Clone the current process. --- @class function --- @name nixio.fork --- @return the child process id for the parent process, 0 for the child process - ---- (POSIX) Send a signal to one or more processes. --- @class function --- @name nixio.kill --- @param target Target process of process group. --- @param signal Signal to send --- @return true - ---- (POSIX) Get the parent process id of the current process. --- @class function --- @name nixio.getppid --- @return parent process id - ---- (POSIX) Get the user id of the current process. --- @class function --- @name nixio.getuid --- @return process user id - ---- (POSIX) Get the group id of the current process. --- @class function --- @name nixio.getgid --- @return process group id - ---- (POSIX) Set the group id of the current process. --- @class function --- @name nixio.setgid --- @param gid New Group ID --- @return true - ---- (POSIX) Set the user id of the current process. --- @class function --- @name nixio.setuid --- @param gid New User ID --- @return true - ---- (POSIX) Change priority of current process. --- @class function --- @name nixio.nice --- @param nice Nice Value --- @return true - ---- (POSIX) Create a new session and set the process group ID. --- @class function --- @name nixio.setsid --- @return session id - ---- (POSIX) Wait for a process to change state. --- @class function --- @name nixio.waitpid --- @usage If the "nohang" is given this function becomes non-blocking. --- @param pid Process ID (optional, default: any childprocess) --- @param flag1 Flag (optional) ["nohang", "untraced", "continued"] --- @param ... More Flags [-"-] --- @return process id of child or 0 if no child has changed state --- @return ["exited", "signaled", "stopped"] --- @return [exit code, terminate signal, stop signal] - ---- (POSIX) Get process times. --- @class function --- @name nixio.times --- @return Table containing:
      ---
    • utime = user time
    • ---
    • utime = system time
    • ---
    • cutime = children user time
    • ---
    • cstime = children system time
    • ---
    - ---- (POSIX) Get information about current system and kernel. --- @class function --- @name nixio.uname --- @return Table containing:
      ---
    • sysname = operating system
    • ---
    • nodename = network name (usually hostname)
    • ---
    • release = OS release
    • ---
    • version = OS version
    • ---
    • machine = hardware identifier
    • ---
    - ---- Change the working directory. --- @class function --- @name nixio.chdir --- @param path New working directory --- @return true - ---- Ignore or use set the default handler for a signal. --- @class function --- @name nixio.signal --- @param signal Signal --- @param handler ["ign", "dfl"] --- @return true - ---- Get the ID of the current process. --- @class function --- @name nixio.getpid --- @return process id - ---- Get the current working directory. --- @class function --- @name nixio.getcwd --- @return workign directory - ---- Get the current environment table or a specific environment variable. --- @class function --- @name nixio.getenv --- @param variable Variable (optional) --- @return environment table or single environment variable - ---- Set or unset a environment variable. --- @class function --- @name nixio.setenv --- @usage The environment variable will be unset if value is ommited. --- @param variable Variable --- @param value Value (optional) --- @return true - ---- Execute a file to replace the current process. --- @class function --- @name nixio.exec --- @usage The name of the executable is automatically passed as argv[0] --- @usage This function does not return on success. --- @param executable Executable --- @param ... Parameters - ---- Invoke the shell and execute a file to replace the current process. --- @class function --- @name nixio.execp --- @usage The name of the executable is automatically passed as argv[0] --- @usage This function does not return on success. --- @param executable Executable --- @param ... Parameters - ---- Execute a file with a custom environment to replace the current process. --- @class function --- @name nixio.exece --- @usage The name of the executable is automatically passed as argv[0] --- @usage This function does not return on success. --- @param executable Executable --- @param arguments Argument Table --- @param environment Environment Table (optional) - ---- Sets the file mode creation mask. --- @class function --- @name nixio.umask --- @param mask New creation mask (see chmod for format specifications) --- @return the old umask as decimal mode number --- @return the old umask as mode string - ---- (Linux) Get overall system statistics. --- @class function --- @name nixio.sysinfo --- @return Table containing:
      ---
    • uptime = system uptime in seconds
    • ---
    • loads = {loadavg1, loadavg5, loadavg15}
    • ---
    • totalram = total RAM
    • ---
    • freeram = free RAM
    • ---
    • sharedram = shared RAM
    • ---
    • bufferram = buffered RAM
    • ---
    • totalswap = total SWAP
    • ---
    • freeswap = free SWAP
    • ---
    • procs = number of running processes
    • ---
    - ---- Create a new socket. --- @class function --- @name nixio.socket --- @param domain Domain ["inet", "inet6", "unix"] --- @param type Type ["stream", "dgram", "raw"] --- @return Socket Object - ---- (POSIX) Send data from a file to a socket in kernel-space. --- @class function --- @name nixio.sendfile --- @param socket Socket Object --- @param file File Object --- @param length Amount of data to send (in Bytes). --- @return bytes sent - ---- (Linux) Send data from / to a pipe in kernel-space. --- @class function --- @name nixio.splice --- @param fdin Input I/O descriptor --- @param fdout Output I/O descriptor --- @param length Amount of data to send (in Bytes). --- @param flags (optional, bitfield generated by splice_flags) --- @see nixio.splice_flags --- @return bytes sent - ---- (Linux) Generate a flag bitfield for a call to splice. --- @class function --- @name nixio.splice_flags --- @param flag1 First Flag ["move", "nonblock", "more"] --- @param ... More flags [-"-] --- @see nixio.splice --- @return Flag bitfield - ---- (POSIX) Open a connection to the system logger. --- @class function --- @name nixio.openlog --- @param ident Identifier --- @param flag1 Flag 1 ["cons", "nowait", "pid", "perror", "ndelay", "odelay"] --- @param ... More flags [-"-] - ---- (POSIX) Close the connection to the system logger. --- @class function --- @name nixio.closelog - ---- (POSIX) Write a message to the system logger. --- @class function --- @name nixio.syslog --- @param priority Priority ["emerg", "alert", "crit", "err", "warning", --- "notice", "info", "debug"] --- @param message - ---- (POSIX) Set the logmask of the system logger for current process. --- @class function --- @name nixio.setlogmask --- @param priority Priority ["emerg", "alert", "crit", "err", "warning", --- "notice", "info", "debug"] - ---- (POSIX) Encrypt a user password. --- @class function --- @name nixio.crypt --- @param key Key --- @param salt Salt --- @return password hash - ---- (POSIX) Get all or a specific user group. --- @class function --- @name nixio.getgr --- @param group Group ID or groupname (optional) --- @return Table containing:
      ---
    • name = Group Name
    • ---
    • gid = Group ID
    • ---
    • passwd = Password
    • ---
    • mem = {Member #1, Member #2, ...}
    • ---
    - ---- (POSIX) Get all or a specific user account. --- @class function --- @name nixio.getpw --- @param user User ID or username (optional) --- @return Table containing:
      ---
    • name = Name
    • ---
    • uid = ID
    • ---
    • gid = Group ID
    • ---
    • passwd = Password
    • ---
    • dir = Home directory
    • ---
    • gecos = Information
    • ---
    • shell = Shell
    • ---
    - ---- (Linux, Solaris) Get all or a specific shadow password entry. --- @class function --- @name nixio.getsp --- @param user username (optional) --- @return Table containing:
      ---
    • namp = Name
    • ---
    • expire = Expiration Date
    • ---
    • flag = Flags
    • ---
    • inact = Inactivity Date
    • ---
    • lstchg = Last change
    • ---
    • max = Maximum
    • ---
    • min = Minimum
    • ---
    • warn = Warning
    • ---
    • pwdp = Password Hash
    • ---
    - ---- Create a new TLS context. --- @class function --- @name nixio.tls --- @param mode TLS-Mode ["client", "server"] --- @return TLSContext Object diff --git a/package/luci/libs/luci-lib-nixio/nixio-0.3-1.rockspec b/package/luci/libs/luci-lib-nixio/nixio-0.3-1.rockspec deleted file mode 100644 index 755cf815d2..0000000000 --- a/package/luci/libs/luci-lib-nixio/nixio-0.3-1.rockspec +++ /dev/null @@ -1,37 +0,0 @@ -package = "nixio" -version = "0.3-1" -source = { - url = "http://dev.luci.freifunk-halle.net/nixio/nixio-0.3.tar.bz2" -} -description = { - summary = "System, Networking and I/O library for Lua", - detailed = [[ - Nixio is a multi-platform library offering a wide variety - of features such as IPv4, IPv6 and UNIX networking, large file I/O, file - system operations, system and process control, POSIX user/group management, - basic cryptographical hashing, hmac and TLS support, bit operations and - binary conversion. - ]], - homepage = "http://luci.subsignal.org", - license = "Apache 2.0", - maintainer = "Steven Barth", -} -dependencies = { - "lua >= 5.1" -} -external_dependencies = { - OPENSSL = { - header = "openssl/ssl.h", - } -} -build = { - type = "make", - build_variables = { - NIXIO_LDFLAGS = "-lcrypt -L$(OPENSSL_LIBDIR) -I$(OPENSSL_INCDIR)", - LUA_CFLAGS = "$(CFLAGS) -I$(LUA_INCDIR)", - }, - install_variables = { - LUA_MODULEDIR = "$(LUADIR)", - LUA_LIBRARYDIR = "$(LIBDIR)", - }, -} diff --git a/package/luci/libs/luci-lib-nixio/root/lib/upgrade/luci-add-conffiles.sh b/package/luci/libs/luci-lib-nixio/root/lib/upgrade/luci-add-conffiles.sh deleted file mode 100644 index 77399b9872..0000000000 --- a/package/luci/libs/luci-lib-nixio/root/lib/upgrade/luci-add-conffiles.sh +++ /dev/null @@ -1,16 +0,0 @@ -add_luci_conffiles() -{ - local filelist="$1" - - # save ssl certs - if [ -d /etc/nixio ]; then - find /etc/nixio -type f >> $filelist - fi - - # save uhttpd certs - [ -f "/etc/uhttpd.key" ] && echo /etc/uhttpd.key >> $filelist - [ -f "/etc/uhttpd.crt" ] && echo /etc/uhttpd.crt >> $filelist -} - -sysupgrade_init_conffiles="$sysupgrade_init_conffiles add_luci_conffiles" - diff --git a/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/fs.lua b/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/fs.lua deleted file mode 100644 index 8883835f30..0000000000 --- a/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/fs.lua +++ /dev/null @@ -1,175 +0,0 @@ ---[[ -nixio - Linux I/O library for lua - -Copyright 2009 Steven Barth - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- - -local table = require "table" -local nixio = require "nixio" -local type, ipairs, setmetatable = type, ipairs, setmetatable -require "nixio.util" - - -module ("nixio.fs", function(m) setmetatable(m, {__index = nixio.fs}) end) - - -function readfile(path, limit) - local fd, code, msg = nixio.open(path, "r") - local data - if not fd then - return nil, code, msg - end - - data, code, msg = fd:readall(limit) - - fd:close() - return data, code, msg -end - - -function writefile(path, data) - local fd, code, msg, stat = nixio.open(path, "w") - if not fd then - return nil, code, msg - end - - stat, code, msg = fd:writeall(data) - - fd:close() - return stat, code, msg -end - -function datacopy(src, dest, size) - local fdin, code, msg = nixio.open(src, "r") - if not fdin then - return nil, code, msg - end - - local fdout, code, msg = nixio.open(dest, "w") - if not fdout then - return nil, code, msg - end - - local stat, code, msg, sent = fdin:copy(fdout, size) - fdin:close() - fdout:close() - - return stat, code, msg, sent -end - -function copy(src, dest) - local stat, code, msg, res = nixio.fs.lstat(src) - if not stat then - return nil, code, msg - end - - if stat.type == "dir" then - if nixio.fs.stat(dest, type) ~= "dir" then - res, code, msg = nixio.fs.mkdir(dest) - else - stat = true - end - elseif stat.type == "lnk" then - res, code, msg = nixio.fs.symlink(nixio.fs.readlink(src), dest) - elseif stat.type == "reg" then - res, code, msg = datacopy(src, dest) - end - - if not res then - return nil, code, msg - end - - nixio.fs.utimes(dest, stat.atime, stat.mtime) - - if nixio.fs.lchown then - nixio.fs.lchown(dest, stat.uid, stat.gid) - end - - if stat.type ~= "lnk" then - nixio.fs.chmod(dest, stat.modedec) - end - - return true -end - -function move(src, dest) - local stat, code, msg = nixio.fs.rename(src, dest) - if not stat and code == nixio.const.EXDEV then - stat, code, msg = copy(src, dest) - if stat then - stat, code, msg = nixio.fs.unlink(src) - end - end - return stat, code, msg -end - -function mkdirr(dest, mode) - if nixio.fs.stat(dest, "type") == "dir" then - return true - else - local stat, code, msg = nixio.fs.mkdir(dest, mode) - if not stat and code == nixio.const.ENOENT then - stat, code, msg = mkdirr(nixio.fs.dirname(dest), mode) - if stat then - stat, code, msg = nixio.fs.mkdir(dest, mode) - end - end - return stat, code, msg - end -end - -local function _recurse(cb, src, dest) - local type = nixio.fs.lstat(src, "type") - if type ~= "dir" then - return cb(src, dest) - else - local stat, se, code, msg, s, c, m = true, nixio.const.sep - if dest then - s, c, m = cb(src, dest) - stat, code, msg = stat and s, c or code, m or msg - end - - for e in nixio.fs.dir(src) do - if dest then - s, c, m = _recurse(cb, src .. se .. e, dest .. se .. e) - else - s, c, m = _recurse(cb, src .. se .. e) - end - stat, code, msg = stat and s, c or code, m or msg - end - - if not dest then -- Postfix - s, c, m = cb(src) - stat, code, msg = stat and s, c or code, m or msg - end - - return stat, code, msg - end -end - -function copyr(src, dest) - return _recurse(copy, src, dest) -end - -function mover(src, dest) - local stat, code, msg = nixio.fs.rename(src, dest) - if not stat and code == nixio.const.EXDEV then - stat, code, msg = _recurse(copy, src, dest) - if stat then - stat, code, msg = _recurse(nixio.fs.remove, src) - end - end - return stat, code, msg -end - -function remover(src) - return _recurse(nixio.fs.remove, src) -end \ No newline at end of file diff --git a/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/util.lua b/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/util.lua deleted file mode 100644 index 63d2f62147..0000000000 --- a/package/luci/libs/luci-lib-nixio/root/usr/lib/lua/nixio/util.lua +++ /dev/null @@ -1,270 +0,0 @@ ---[[ -nixio - Linux I/O library for lua - -Copyright 2009 Steven Barth - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- - -local table = require "table" -local nixio = require "nixio" -local getmetatable, assert, pairs, type = getmetatable, assert, pairs, type -local tostring = tostring - -module "nixio.util" - -local BUFFERSIZE = nixio.const.buffersize -local ZIOBLKSIZE = 65536 -local socket = nixio.meta_socket -local tls_socket = nixio.meta_tls_socket -local file = nixio.meta_file -local uname = nixio.uname() -local ZBUG = uname.sysname == "Linux" and uname.release:sub(1, 3) == "2.4" - -function consume(iter, append) - local tbl = append or {} - if iter then - for obj in iter do - tbl[#tbl+1] = obj - end - end - return tbl -end - -local meta = {} - -function meta.is_socket(self) - return (getmetatable(self) == socket) -end - -function meta.is_tls_socket(self) - return (getmetatable(self) == tls_socket) -end - -function meta.is_file(self) - return (getmetatable(self) == file) -end - -function meta.readall(self, len) - local block, code, msg = self:read(len or BUFFERSIZE) - - if not block then - return nil, code, msg, "" - elseif #block == 0 then - return "", nil, nil, "" - end - - local data, total = {block}, #block - - while not len or len > total do - block, code, msg = self:read(len and (len - total) or BUFFERSIZE) - - if not block then - return nil, code, msg, table.concat(data) - elseif #block == 0 then - break - end - - data[#data+1], total = block, total + #block - end - - local data = #data > 1 and table.concat(data) or data[1] - return data, nil, nil, data -end -meta.recvall = meta.readall - -function meta.writeall(self, data) - data = tostring(data) - local sent, code, msg = self:write(data) - - if not sent then - return nil, code, msg, 0 - end - - local total = sent - - while total < #data do - sent, code, msg = self:write(data, total) - - if not sent then - return nil, code, msg, total - end - - total = total + sent - end - - return total, nil, nil, total -end -meta.sendall = meta.writeall - -function meta.linesource(self, limit) - limit = limit or BUFFERSIZE - local buffer = "" - local bpos = 0 - return function(flush) - local line, endp, _ - - if flush then - line = buffer:sub(bpos + 1) - buffer = type(flush) == "string" and flush or "" - bpos = 0 - return line - end - - while not line do - _, endp, line = buffer:find("(.-)\r?\n", bpos + 1) - if line then - bpos = endp - return line - elseif #buffer < limit + bpos then - local newblock, code, msg = self:read(limit + bpos - #buffer) - if not newblock then - return nil, code, msg - elseif #newblock == 0 then - return nil - end - buffer = buffer:sub(bpos + 1) .. newblock - bpos = 0 - else - return nil, 0 - end - end - end -end - -function meta.blocksource(self, bs, limit) - bs = bs or BUFFERSIZE - return function() - local toread = bs - if limit then - if limit < 1 then - return nil - elseif limit < toread then - toread = limit - end - end - - local block, code, msg = self:read(toread) - - if not block then - return nil, code, msg - elseif #block == 0 then - return nil - else - if limit then - limit = limit - #block - end - - return block - end - end -end - -function meta.sink(self, close) - return function(chunk, src_err) - if not chunk and not src_err and close then - if self.shutdown then - self:shutdown() - end - self:close() - elseif chunk and #chunk > 0 then - return self:writeall(chunk) - end - return true - end -end - -function meta.copy(self, fdout, size) - local source = self:blocksource(nil, size) - local sink = fdout:sink() - local sent, chunk, code, msg = 0 - - repeat - chunk, code, msg = source() - sink(chunk, code, msg) - sent = chunk and (sent + #chunk) or sent - until not chunk - return not code and sent or nil, code, msg, sent -end - -function meta.copyz(self, fd, size) - local sent, lsent, code, msg = 0 - local splicable - - if not ZBUG and self:is_file() then - local ftype = self:stat("type") - if nixio.sendfile and fd:is_socket() and ftype == "reg" then - repeat - lsent, code, msg = nixio.sendfile(fd, self, size or ZIOBLKSIZE) - if lsent then - sent = sent + lsent - size = size and (size - lsent) - end - until (not lsent or lsent == 0 or (size and size == 0)) - if lsent or (not lsent and sent == 0 and - code ~= nixio.const.ENOSYS and code ~= nixio.const.EINVAL) then - return lsent and sent, code, msg, sent - end - elseif nixio.splice and not fd:is_tls_socket() and ftype == "fifo" then - splicable = true - end - end - - if nixio.splice and fd:is_file() and not splicable then - splicable = not self:is_tls_socket() and fd:stat("type") == "fifo" - end - - if splicable then - repeat - lsent, code, msg = nixio.splice(self, fd, size or ZIOBLKSIZE) - if lsent then - sent = sent + lsent - size = size and (size - lsent) - end - until (not lsent or lsent == 0 or (size and size == 0)) - if lsent or (not lsent and sent == 0 and - code ~= nixio.const.ENOSYS and code ~= nixio.const.EINVAL) then - return lsent and sent, code, msg, sent - end - end - - return self:copy(fd, size) -end - -if tls_socket then - function tls_socket.close(self) - return self.socket:close() - end - - function tls_socket.getsockname(self) - return self.socket:getsockname() - end - - function tls_socket.getpeername(self) - return self.socket:getpeername() - end - - function tls_socket.getsockopt(self, ...) - return self.socket:getsockopt(...) - end - tls_socket.getopt = tls_socket.getsockopt - - function tls_socket.setsockopt(self, ...) - return self.socket:setsockopt(...) - end - tls_socket.setopt = tls_socket.setsockopt -end - -for k, v in pairs(meta) do - file[k] = v - socket[k] = v - if tls_socket then - tls_socket[k] = v - end -end diff --git a/package/luci/libs/luci-lib-nixio/src/Makefile b/package/luci/libs/luci-lib-nixio/src/Makefile deleted file mode 100644 index a7e9a77d99..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/Makefile +++ /dev/null @@ -1,120 +0,0 @@ -OS = Linux -AXTLS_VERSION = 1.2.1 -AXTLS_DIR = axTLS -AXTLS_FILE = $(AXTLS_DIR)-$(AXTLS_VERSION).tar.gz -#NIXIO_TLS ?= openssl -NIXIO_SHADOW ?= $(shell echo 'int main(void){ return !getspnam("root"); }' | $(CC) $(CFLAGS) -include shadow.h -xc -o/dev/null - 2>/dev/null && echo yes) -NIXIO_SO = nixio.so -NIXIO_LDFLAGS = -llua -lm -ldl -CFLAGS += -std=gnu99 - -ifeq (,$(findstring Darwin,$(OS))) - NIXIO_LDFLAGS += -lcrypt -shared -else - NIXIO_LDFLAGS += -bundle -undefined dynamic_lookup - EXTRA_CFLAGS += -D__DARWIN__ -endif - -NIXIO_OBJ = nixio.o socket.o sockopt.o bind.o address.o \ - protoent.o poll.o io.o file.o splice.o process.o \ - syslog.o bit.o binary.o fs.o user.o \ - $(if $(NIXIO_TLS),tls-crypto.o tls-context.o tls-socket.o,) - -ifeq ($(NIXIO_TLS),axtls) - TLS_CFLAGS = -IaxTLS/ssl -IaxTLS/crypto -IaxTLS/config -include axtls-compat.h - TLS_DEPENDS = axtls-compat.o - NIXIO_OBJ += axtls-compat.o libaxtls.a -endif - -ifeq ($(NIXIO_TLS),openssl) - NIXIO_LDFLAGS += -lssl -lcrypto -endif - -ifeq ($(NIXIO_TLS),cyassl) - NIXIO_LDFLAGS += -lcyassl - TLS_DEPENDS = cyassl-compat.o - TLS_CFLAGS = -include cyassl-compat.h - NIXIO_OBJ += cyassl-compat.o -endif - -ifeq ($(NIXIO_TLS),) - NIXIO_CFLAGS += -DNO_TLS -endif - -ifneq ($(NIXIO_SHADOW),yes) - NIXIO_CFLAGS += -DNO_SHADOW -endif - - -ifeq ($(OS),SunOS) - NIXIO_LDFLAGS += -lsocket -lnsl -lsendfile -endif - -ifneq (,$(findstring MINGW,$(OS))$(findstring mingw,$(OS))$(findstring Windows,$(OS))) - NIXIO_CROSS_CC:=$(shell which i586-mingw32msvc-cc) -ifneq (,$(NIXIO_CROSS_CC)) - CC:=$(NIXIO_CROSS_CC) -endif - NIXIO_OBJ += mingw-compat.o - NIXIO_LDFLAGS_POST:=-llua -lssl -lcrypto -lws2_32 -lgdi32 - FPIC:= - EXTRA_CFLAGS += -D_WIN32_WINNT=0x0501 - LUA_CFLAGS:= - NIXIO_SO:=nixio.dll - NIXIO_LDFLAGS:= -endif - - -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) -c -o $@ $< - -ifneq ($(NIXIO_TLS),) -tls-crypto.o: $(TLS_DEPENDS) tls-crypto.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) $(TLS_CFLAGS) -c -o $@ tls-crypto.c - -tls-context.o: $(TLS_DEPENDS) tls-context.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) $(TLS_CFLAGS) -c -o $@ tls-context.c - -tls-socket.o: $(TLS_DEPENDS) tls-socket.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) $(TLS_CFLAGS) -c -o $@ tls-socket.c - -axtls-compat.o: libaxtls.a axtls-compat.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(NIXIO_CFLAGS) $(LUA_CFLAGS) $(FPIC) $(TLS_CFLAGS) -c -o $@ axtls-compat.c - mkdir -p dist - cp -pR axtls-root/* dist/ -endif - -compile: $(NIXIO_OBJ) - $(CC) $(LDFLAGS) $(SHLIB_FLAGS) -o $(NIXIO_SO) $(NIXIO_OBJ) $(NIXIO_LDFLAGS) $(NIXIO_LDFLAGS_POST) - mkdir -p dist/usr/lib/lua - cp $(NIXIO_SO) dist/usr/lib/lua/$(NIXIO_SO) - -$(AXTLS_DIR)/.prepared: - #rm -rf $(AXTLS_DIR) - #tar xvfz $(AXTLS_FILE) - cp axtls-config/.config axtls-config/config.h $(AXTLS_DIR)/config - touch $@ - -libaxtls.a: $(AXTLS_DIR)/.prepared - $(MAKE) -C $(AXTLS_DIR) CC="$(CC)" CFLAGS="$(CFLAGS) $(EXTRA_CFLAGS) $(FPIC) -Wall -pedantic -I../config -I../ssl -I../crypto" LDFLAGS="$(LDFLAGS)" OS="$(OS)" clean all - cp -p $(AXTLS_DIR)/_stage/libaxtls.a src - # ************************************************************************* - # - # - # - # *** WARNING *** - # The use of the axTLS cryptographical provider is discouraged! - # Please switch to either CyaSSL or OpenSSL. - # Support for axTLS might be removed in the near future. - # - # - # - #************************************************************************** - -clean: - rm -f *.o *.so *.a *.dll - rm -f $(AXTLS_DIR)/.prepared - -install: compile - mkdir -p $(DESTDIR) - cp -pR dist/* $(DESTDIR)/ diff --git a/package/luci/libs/luci-lib-nixio/src/address.c b/package/luci/libs/luci-lib-nixio/src/address.c deleted file mode 100644 index 8ab4fa89c9..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/address.c +++ /dev/null @@ -1,567 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include - -#ifdef __linux__ - -#include -#include -#include - -/* setjmp() / longjmp() stuff */ -static jmp_buf nixio__jump_alarm; -static void nixio__handle_alarm(int sig) { longjmp(nixio__jump_alarm, 1); } - -#include - -/* struct net_device_stats is buggy on amd64, redefine it */ -struct nixio__nds { - uint32_t rx_packets; - uint32_t tx_packets; - uint32_t rx_bytes; - uint32_t tx_bytes; - uint32_t rx_errors; - uint32_t tx_errors; - uint32_t rx_dropped; - uint32_t tx_dropped; - uint32_t multicast; - uint32_t collisions; - - uint32_t rx_length_errors; - uint32_t rx_over_errors; - uint32_t rx_crc_errors; - uint32_t rx_frame_errors; - uint32_t rx_fifo_errors; - uint32_t rx_missed_errors; - - uint32_t tx_aborted_errors; - uint32_t tx_carrier_errors; - uint32_t tx_fifo_errors; - uint32_t tx_heartbeat_errors; - uint32_t tx_window_errors; - - uint32_t rx_compressed; - uint32_t tx_compressed; -}; -#endif - -#ifndef NI_MAXHOST -#define NI_MAXHOST 1025 -#endif - -/** - * address pushing helper - */ -int nixio__addr_parse(nixio_addr *addr, struct sockaddr *saddr) { - void *baddr; - - addr->family = saddr->sa_family; - if (saddr->sa_family == AF_INET) { - struct sockaddr_in *inetaddr = (struct sockaddr_in*)saddr; - addr->port = ntohs(inetaddr->sin_port); - baddr = &inetaddr->sin_addr; - } else if (saddr->sa_family == AF_INET6) { - struct sockaddr_in6 *inet6addr = (struct sockaddr_in6*)saddr; - addr->port = ntohs(inet6addr->sin6_port); - baddr = &inet6addr->sin6_addr; -#ifdef AF_PACKET - } else if (saddr->sa_family == AF_PACKET) { - struct sockaddr_ll *etheradddr = (struct sockaddr_ll*)saddr; - addr->prefix = etheradddr->sll_hatype; - addr->port = etheradddr->sll_ifindex; - char *c = addr->host; - for (size_t i = 0; i < etheradddr->sll_halen; i++) { - *c++ = nixio__bin2hex[(etheradddr->sll_addr[i] & 0xf0) >> 4]; - *c++ = nixio__bin2hex[(etheradddr->sll_addr[i] & 0x0f)]; - *c++ = ':'; - } - *(c-1) = 0; - return 0; -#endif - } else { - errno = EAFNOSUPPORT; - return -1; - } - - if (!inet_ntop(saddr->sa_family, baddr, addr->host, sizeof(addr->host))) { - return -1; - } - - return 0; -} - -/** - * address pulling helper - */ -int nixio__addr_write(nixio_addr *addr, struct sockaddr *saddr) { - if (addr->family == AF_UNSPEC) { - if (strchr(addr->host, ':')) { - addr->family = AF_INET6; - } else { - addr->family = AF_INET; - } - } - if (addr->family == AF_INET) { - struct sockaddr_in *inetaddr = (struct sockaddr_in *)saddr; - memset(inetaddr, 0, sizeof(struct sockaddr_in)); - - if (inet_pton(AF_INET, addr->host, &inetaddr->sin_addr) < 1) { - return -1; - } - - inetaddr->sin_family = AF_INET; - inetaddr->sin_port = htons((uint16_t)addr->port); - return 0; - } else if (addr->family == AF_INET6) { - struct sockaddr_in6 *inet6addr = (struct sockaddr_in6 *)saddr; - memset(inet6addr, 0, sizeof(struct sockaddr_in6)); - - if (inet_pton(AF_INET6, addr->host, &inet6addr->sin6_addr) < 1) { - return -1; - } - - inet6addr->sin6_family = AF_INET6; - inet6addr->sin6_port = htons((uint16_t)addr->port); - return 0; - } else { - errno = EAFNOSUPPORT; - return -1; - } -} - -/** - * netmask to prefix helper - */ -int nixio__addr_prefix(struct sockaddr *saddr) { - int prefix = 0; - size_t len; - uint8_t *addr; - - if (saddr->sa_family == AF_INET) { - addr = (uint8_t*)(&((struct sockaddr_in*)saddr)->sin_addr); - len = 4; - } else if (saddr->sa_family == AF_INET6) { - addr = (uint8_t*)(&((struct sockaddr_in6*)saddr)->sin6_addr); - len = 16; - } else { - errno = EAFNOSUPPORT; - return -1; - } - - for (size_t i = 0; i < len; i++) { - if (addr[i] == 0xff) { - prefix += 8; - } else if (addr[i] == 0x00) { - break; - } else { - for (uint8_t c = addr[i]; c; c <<= 1) { - prefix++; - } - } - } - - return prefix; -} - -/** - * getaddrinfo(host, family, port) - */ -static int nixio_getaddrinfo(lua_State *L) { - const char *host = NULL; - if (!lua_isnoneornil(L, 1)) { - host = luaL_checklstring(L, 1, NULL); - } - const char *family = luaL_optlstring(L, 2, "any", NULL); - const char *port = lua_tolstring(L, 3, NULL); - - struct addrinfo hints, *result, *rp; - memset(&hints, 0, sizeof(hints)); - - if (!strcmp(family, "any")) { - hints.ai_family = AF_UNSPEC; - } else if (!strcmp(family, "inet")) { - hints.ai_family = AF_INET; - } else if (!strcmp(family, "inet6")) { - hints.ai_family = AF_INET6; - } else { - return luaL_argerror(L, 2, "supported values: any, inet, inet6"); - } - - hints.ai_socktype = 0; - hints.ai_protocol = 0; - - int aistat = getaddrinfo(host, port, &hints, &result); - if (aistat) { - lua_pushnil(L); - lua_pushinteger(L, aistat); - lua_pushstring(L, gai_strerror(aistat)); - return 3; - } - - /* create socket object */ - lua_newtable(L); - int i = 1; - - for (rp = result; rp != NULL; rp = rp->ai_next) { - /* avoid duplicate results */ -#ifndef __WINNT__ - if (!port && rp->ai_socktype != SOCK_STREAM) { - continue; - } -#endif - - if (rp->ai_family == AF_INET || rp->ai_family == AF_INET6) { - lua_createtable(L, 0, port ? 4 : 2); - if (rp->ai_family == AF_INET) { - lua_pushliteral(L, "inet"); - } else if (rp->ai_family == AF_INET6) { - lua_pushliteral(L, "inet6"); - } - lua_setfield(L, -2, "family"); - - if (port) { - switch (rp->ai_socktype) { - case SOCK_STREAM: - lua_pushliteral(L, "stream"); - break; - case SOCK_DGRAM: - lua_pushliteral(L, "dgram"); - break; - case SOCK_RAW: - lua_pushliteral(L, "raw"); - break; - default: - lua_pushnil(L); - break; - } - lua_setfield(L, -2, "socktype"); - } - - nixio_addr addr; - if (nixio__addr_parse(&addr, rp->ai_addr)) { - freeaddrinfo(result); - return nixio__perror_s(L); - } - - if (port) { - lua_pushinteger(L, addr.port); - lua_setfield(L, -2, "port"); - } - - lua_pushstring(L, addr.host); - lua_setfield(L, -2, "address"); - lua_rawseti(L, -2, i++); - } - } - - freeaddrinfo(result); - - return 1; -} - -/** - * getnameinfo(address, family[, timeout]) - */ -static int nixio_getnameinfo(lua_State *L) { - const char *ip = luaL_checkstring(L, 1); - const char *family = luaL_optstring(L, 2, NULL); - -#ifdef __linux__ - struct sigaction sa_new, sa_old; - int timeout = luaL_optnumber(L, 3, 0); - if (timeout > 0 && timeout < 1000) - { - sa_new.sa_handler = nixio__handle_alarm; - sa_new.sa_flags = 0; - sigemptyset(&sa_new.sa_mask); - sigaction(SIGALRM, &sa_new, &sa_old); - - /* user timeout exceeded */ - if (setjmp(nixio__jump_alarm)) - { - sigaction(SIGALRM, &sa_old, NULL); - - lua_pushnil(L); - lua_pushinteger(L, EAI_AGAIN); - lua_pushstring(L, gai_strerror(EAI_AGAIN)); - - return 3; - } - - ualarm(timeout * 1000, 0); - } -#endif - - char host[NI_MAXHOST]; - - struct sockaddr_storage saddr; - nixio_addr addr; - memset(&addr, 0, sizeof(addr)); - strncpy(addr.host, ip, sizeof(addr.host) - 1); - - if (!family) { - addr.family = AF_UNSPEC; - } else if (!strcmp(family, "inet")) { - addr.family = AF_INET; - } else if (!strcmp(family, "inet6")) { - addr.family = AF_INET6; - } else { - return luaL_argerror(L, 2, "supported values: inet, inet6"); - } - - nixio__addr_write(&addr, (struct sockaddr *)&saddr); - - int res = getnameinfo((struct sockaddr *)&saddr, - (saddr.ss_family == AF_INET) - ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6), - host, sizeof(host), NULL, 0, NI_NAMEREQD); - -#ifdef __linux__ - if (timeout > 0 && timeout < 1000) - { - ualarm(0, 0); - sigaction(SIGALRM, &sa_old, NULL); - } -#endif - - if (res) { - lua_pushnil(L); - lua_pushinteger(L, res); - lua_pushstring(L, gai_strerror(res)); - return 3; - } else { - lua_pushstring(L, host); - return 1; - } -} - -/** - * getsockname() - */ -static int nixio_sock_getsockname(lua_State *L) { - int sockfd = nixio__checksockfd(L); - struct sockaddr_storage saddr; - socklen_t addrlen = sizeof(saddr); - nixio_addr addr; - - if (getsockname(sockfd, (struct sockaddr*)&saddr, &addrlen) || - nixio__addr_parse(&addr, (struct sockaddr*)&saddr)) { - return nixio__perror_s(L); - } - - lua_pushstring(L, addr.host); - lua_pushinteger(L, addr.port); - return 2; -} - -/** - * getpeername() - */ -static int nixio_sock_getpeername(lua_State *L) { - int sockfd = nixio__checksockfd(L); - struct sockaddr_storage saddr; - socklen_t addrlen = sizeof(saddr); - nixio_addr addr; - - if (getpeername(sockfd, (struct sockaddr*)&saddr, &addrlen) || - nixio__addr_parse(&addr, (struct sockaddr*)&saddr)) { - return nixio__perror_s(L); - } - - lua_pushstring(L, addr.host); - lua_pushinteger(L, addr.port); - return 2; -} - -#if defined(__linux__) || defined(BSD) -#ifdef BSD -#include -#endif -#include - -static int nixio_getifaddrs(lua_State *L) { - nixio_addr addr; - struct ifaddrs *ifaddr, *c; - if (getifaddrs(&ifaddr) == -1) { - return nixio__perror(L); - } - - lua_newtable(L); - unsigned int i = 1; - - for (c = ifaddr; c; c = c->ifa_next) { - lua_newtable(L); - - lua_pushstring(L, c->ifa_name); - lua_setfield(L, -2, "name"); - - lua_createtable(L, 0, 7); - lua_pushboolean(L, c->ifa_flags & IFF_UP); - lua_setfield(L, -2, "up"); - - lua_pushboolean(L, c->ifa_flags & IFF_BROADCAST); - lua_setfield(L, -2, "broadcast"); - - lua_pushboolean(L, c->ifa_flags & IFF_LOOPBACK); - lua_setfield(L, -2, "loopback"); - - lua_pushboolean(L, c->ifa_flags & IFF_POINTOPOINT); - lua_setfield(L, -2, "pointtopoint"); - - lua_pushboolean(L, c->ifa_flags & IFF_NOARP); - lua_setfield(L, -2, "noarp"); - - lua_pushboolean(L, c->ifa_flags & IFF_PROMISC); - lua_setfield(L, -2, "promisc"); - - lua_pushboolean(L, c->ifa_flags & IFF_MULTICAST); - lua_setfield(L, -2, "multicast"); - lua_setfield(L, -2, "flags"); - - if (c->ifa_addr) { - if (!nixio__addr_parse(&addr, c->ifa_addr)) { - lua_pushstring(L, addr.host); - lua_setfield(L, -2, "addr"); - } - - if (c->ifa_addr->sa_family == AF_INET) { - lua_pushliteral(L, "inet"); - } else if (c->ifa_addr->sa_family == AF_INET6) { - lua_pushliteral(L, "inet6"); -#ifdef AF_PACKET - } else if (c->ifa_addr->sa_family == AF_PACKET) { - lua_pushliteral(L, "packet"); -#endif - } else { - lua_pushliteral(L, "unknown"); - } - lua_setfield(L, -2, "family"); - -#ifdef __linux__ - if (c->ifa_addr->sa_family == AF_PACKET) { - lua_pushinteger(L, addr.port); - lua_setfield(L, -2, "ifindex"); - - lua_pushinteger(L, addr.prefix); - lua_setfield(L, -2, "hatype"); - } -#endif - } - -#ifdef __linux__ - if (c->ifa_data && (!c->ifa_addr - || c->ifa_addr->sa_family == AF_PACKET)) { - if (!c->ifa_addr) { - lua_pushliteral(L, "packet"); - lua_setfield(L, -2, "family"); - } - - lua_createtable(L, 0, 10); - struct nixio__nds *stats = c->ifa_data; - - lua_pushnumber(L, stats->rx_packets); - lua_setfield(L, -2, "rx_packets"); - - lua_pushnumber(L, stats->tx_packets); - lua_setfield(L, -2, "tx_packets"); - - lua_pushnumber(L, stats->rx_bytes); - lua_setfield(L, -2, "rx_bytes"); - - lua_pushnumber(L, stats->tx_bytes); - lua_setfield(L, -2, "tx_bytes"); - - lua_pushnumber(L, stats->rx_errors); - lua_setfield(L, -2, "rx_errors"); - - lua_pushnumber(L, stats->tx_errors); - lua_setfield(L, -2, "tx_errors"); - - lua_pushnumber(L, stats->rx_dropped); - lua_setfield(L, -2, "rx_dropped"); - - lua_pushnumber(L, stats->tx_dropped); - lua_setfield(L, -2, "tx_dropped"); - - lua_pushnumber(L, stats->multicast); - lua_setfield(L, -2, "multicast"); - - lua_pushnumber(L, stats->collisions); - lua_setfield(L, -2, "collisions"); - } else { - lua_newtable(L); - } - lua_setfield(L, -2, "data"); -#endif - - if (c->ifa_netmask && !nixio__addr_parse(&addr, c->ifa_netmask)) { - lua_pushstring(L, addr.host); - lua_setfield(L, -2, "netmask"); - - lua_pushinteger(L, nixio__addr_prefix(c->ifa_netmask)); - lua_setfield(L, -2, "prefix"); - } - - if (c->ifa_broadaddr && !nixio__addr_parse(&addr, c->ifa_broadaddr)) { - lua_pushstring(L, addr.host); - lua_setfield(L, -2, "broadaddr"); - } - - if (c->ifa_dstaddr && !nixio__addr_parse(&addr, c->ifa_dstaddr)) { - lua_pushstring(L, addr.host); - lua_setfield(L, -2, "dstaddr"); - } - - lua_rawseti(L, -2, i++); - } - - freeifaddrs(ifaddr); - return 1; -} -#endif - - -/* module table */ -static const luaL_reg R[] = { -#if defined(__linux__) || defined(BSD) - {"getifaddrs", nixio_getifaddrs}, -#endif - {"getaddrinfo", nixio_getaddrinfo}, - {"getnameinfo", nixio_getnameinfo}, - {NULL, NULL} -}; - -/* object table */ -static const luaL_reg M[] = { - {"getsockname", nixio_sock_getsockname}, - {"getpeername", nixio_sock_getpeername}, - {NULL, NULL} -}; - -void nixio_open_address(lua_State *L) { - luaL_register(L, NULL, R); - - lua_pushvalue(L, -2); - luaL_register(L, NULL, M); - lua_pop(L, 1); -} diff --git a/package/luci/libs/luci-lib-nixio/src/axtls-compat.c b/package/luci/libs/luci-lib-nixio/src/axtls-compat.c deleted file mode 100644 index 2c5b746c2d..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/axtls-compat.c +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Enable a subset of openssl compatible functions. We don't aim to be 100% - * compatible - just to be able to do basic ports etc. - * - * Only really tested on mini_httpd, so I'm not too sure how extensive this - * port is. - */ - -#include "config.h" - -#include -#include -#include -#include "ssl.h" - -static char *key_password = NULL; - -void *SSLv23_server_method(void) { return NULL; } -void *SSLv3_server_method(void) { return NULL; } -void *TLSv1_server_method(void) { return NULL; } -void *SSLv23_client_method(void) { return NULL; } -void *SSLv3_client_method(void) { return NULL; } -void *TLSv1_client_method(void) { return NULL; } -void *SSLv23_method(void) { return NULL; } -void *TLSv1_method(void) { return NULL; } - -SSL_CTX * SSL_CTX_new(void *meth) -{ - SSL_CTX *ssl_ctx = ssl_ctx_new(SSL_SERVER_VERIFY_LATER, 5); - return ssl_ctx; -} - -void SSL_CTX_free(SSL_CTX * ssl_ctx) -{ - ssl_ctx_free(ssl_ctx); -} - -SSL * SSL_new(SSL_CTX *ssl_ctx) -{ - SSL *ssl; - - ssl = ssl_new(ssl_ctx, -1); /* fd is set later */ - - return ssl; -} - -int SSL_set_fd(SSL *s, int fd) -{ - s->client_fd = fd; - return 1; /* always succeeds */ -} - -int SSL_accept(SSL *ssl) -{ - ssl->next_state = HS_CLIENT_HELLO; - while (ssl_read(ssl, NULL) == SSL_OK) - { - if (ssl->next_state == HS_CLIENT_HELLO) - return 1; /* we're done */ - } - - return -1; -} - -int SSL_connect(SSL *ssl) -{ - SET_SSL_FLAG(SSL_IS_CLIENT); - int stat = do_client_connect(ssl); - ssl_display_error(stat); - return (stat == SSL_OK) ? 1 : -1; -} - -void SSL_free(SSL *ssl) -{ - ssl_free(ssl); -} - -int SSL_read(SSL *ssl, void *buf, int num) -{ - uint8_t *read_buf; - int ret; - - while ((ret = ssl_read(ssl, &read_buf)) == SSL_OK); - - if (ret > SSL_OK) - { - memcpy(buf, read_buf, ret > num ? num : ret); - } - - return ret; -} - -int SSL_write(SSL *ssl, const void *buf, int num) -{ - return ssl_write(ssl, buf, num); -} - -int SSL_CTX_use_certificate_file(SSL_CTX *ssl_ctx, const char *file, int type) -{ - return (ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, file, NULL) == SSL_OK); -} - -int SSL_CTX_use_PrivateKey_file(SSL_CTX *ssl_ctx, const char *file, int type) -{ - return (ssl_obj_load(ssl_ctx, SSL_OBJ_RSA_KEY, file, key_password) == SSL_OK); -} - -int SSL_CTX_use_certificate_ASN1(SSL_CTX *ssl_ctx, int len, const uint8_t *d) -{ - return (ssl_obj_memory_load(ssl_ctx, - SSL_OBJ_X509_CERT, d, len, NULL) == SSL_OK); -} - -int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, - unsigned int sid_ctx_len) -{ - return 1; -} - -int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx) -{ - return 1; -} - -int SSL_CTX_use_certificate_chain_file(SSL_CTX *ssl_ctx, const char *file) -{ - return (ssl_obj_load(ssl_ctx, - SSL_OBJ_X509_CERT, file, NULL) == SSL_OK); -} - -int SSL_shutdown(SSL *ssl) -{ - return 1; -} - -/*** get/set session ***/ -SSL_SESSION *SSL_get1_session(SSL *ssl) -{ - return (SSL_SESSION *)ssl_get_session_id(ssl); /* note: wrong cast */ -} - -int SSL_set_session(SSL *ssl, SSL_SESSION *session) -{ - memcpy(ssl->session_id, (uint8_t *)session, SSL_SESSION_ID_SIZE); - return 1; -} - -void SSL_SESSION_free(SSL_SESSION *session) { } -/*** end get/set session ***/ - -long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg) -{ - return 0; -} - -void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, - int (*verify_callback)(int, void *)) { - if (mode & SSL_VERIFY_PEER) { - ctx->options &= ~SSL_SERVER_VERIFY_LATER; - ctx->options |= SSL_CLIENT_AUTHENTICATION; - } else { - ctx->options |= SSL_SERVER_VERIFY_LATER; - ctx->options &= ~SSL_CLIENT_AUTHENTICATION; - } -} - -void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth) { } - -int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, - const char *CApath) -{ - return 1; -} - -void *SSL_load_client_CA_file(const char *file) -{ - return (void *)file; -} - -void SSL_CTX_set_client_CA_list(SSL_CTX *ssl_ctx, void *file) -{ - - ssl_obj_load(ssl_ctx, SSL_OBJ_X509_CERT, (const char *)file, NULL); -} - -void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, void *cb) { } - -void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u) -{ - key_password = (char *)u; -} - -int SSL_peek(SSL *ssl, void *buf, int num) -{ - memcpy(buf, ssl->bm_data, num); - return num; -} - -void SSL_set_bio(SSL *ssl, void *rbio, void *wbio) { } - -long SSL_get_verify_result(const SSL *ssl) -{ - return ssl_handshake_status(ssl); -} - -int SSL_state(SSL *ssl) -{ - return 0x03; // ok state -} - -/** end of could do better list */ - -void *SSL_get_peer_certificate(const SSL *ssl) -{ - return &ssl->ssl_ctx->certs[0]; -} - -int SSL_clear(SSL *ssl) -{ - return 1; -} - - -int SSL_CTX_check_private_key(const SSL_CTX *ctx) -{ - return 1; -} - -int SSL_CTX_set_cipher_list(SSL_CTX *s, const char *str) -{ - return 1; -} - -int SSL_get_error(const SSL *ssl, int ret) -{ - ssl_display_error(ret); - return ret; /* TODO: return proper return code */ -} - -void SSL_CTX_set_options(SSL_CTX *ssl_ctx, int option) {} -int SSL_library_init(void ) { return 1; } -void SSL_load_error_strings(void ) {} -void ERR_print_errors_fp(FILE *fp) {} - -long SSL_CTX_get_timeout(const SSL_CTX *ssl_ctx) { - return CONFIG_SSL_EXPIRY_TIME*3600; } -long SSL_CTX_set_timeout(SSL_CTX *ssl_ctx, long t) { - return SSL_CTX_get_timeout(ssl_ctx); } -void BIO_printf(FILE *f, const char *format, ...) -{ - va_list(ap); - va_start(ap, format); - vfprintf(f, format, ap); - va_end(ap); -} - -void* BIO_s_null(void) { return NULL; } -FILE *BIO_new(bio_func_type_t func) -{ - if (func == BIO_s_null) - return fopen("/dev/null", "r"); - else - return NULL; -} - -FILE *BIO_new_fp(FILE *stream, int close_flag) { return stream; } -int BIO_free(FILE *a) { if (a != stdout && a != stderr) fclose(a); return 1; } diff --git a/package/luci/libs/luci-lib-nixio/src/axtls-compat.h b/package/luci/libs/luci-lib-nixio/src/axtls-compat.h deleted file mode 100644 index aee24f56c8..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/axtls-compat.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (c) 2007, Cameron Rich - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of the axTLS project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Enable a subset of openssl compatible functions. We don't aim to be 100% - * compatible - just to be able to do basic ports etc. - * - * Only really tested on mini_httpd, so I'm not too sure how extensive this - * port is. - */ - -#include "nixio.h" -#include "config.h" - -#define WITH_AXTLS 1 -#define WITHOUT_OPENSSL 1 -#define SSL_OP_NO_SSLv3 0x02000000L -#define SSL_OP_NO_SSLv2 0x01000000L -#define SSL_FILETYPE_PEM 1 -#define SSL_FILETYPE_ASN1 2 -#define SSL_VERIFY_NONE 0x00 -#define SSL_VERIFY_PEER 0x01 -#define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 -#define SSL_VERIFY_CLIENT_ONCE 0x03 -#define MD5_DIGEST_LENGTH 16 -#define SHA_DIGEST_LENGTH 20 - -#include -#include -#include -#include "ssl.h" - -typedef SHA1_CTX SHA_CTX; - -void *SSLv23_server_method(void); -void *SSLv3_server_method(void); -void *TLSv1_server_method(void); -void *SSLv23_client_method(void); -void *SSLv3_client_method(void); -void *TLSv1_client_method(void); -void *SSLv23_method(void); -void *TLSv1_method(void); - - -typedef void * (*ssl_func_type_t)(void); -typedef void * (*bio_func_type_t)(void); - -SSL_CTX * SSL_CTX_new(void *meth); -void SSL_CTX_free(SSL_CTX * ssl_ctx); -SSL * SSL_new(SSL_CTX *ssl_ctx); -int SSL_set_fd(SSL *s, int fd); -int SSL_accept(SSL *ssl); -int SSL_connect(SSL *ssl); -void SSL_free(SSL *ssl); -int SSL_read(SSL *ssl, void *buf, int num); -int SSL_write(SSL *ssl, const void *buf, int num); -int SSL_CTX_use_certificate_file(SSL_CTX *ssl_ctx, const char *file, int type); -int SSL_CTX_use_PrivateKey_file(SSL_CTX *ssl_ctx, const char *file, int type); -int SSL_CTX_use_certificate_ASN1(SSL_CTX *ssl_ctx, int len, const uint8_t *d); -int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, - unsigned int sid_ctx_len); -int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); -int SSL_CTX_use_certificate_chain_file(SSL_CTX *ssl_ctx, const char *file); -int SSL_shutdown(SSL *ssl); - -/*** get/set session ***/ -SSL_SESSION *SSL_get1_session(SSL *ssl); -int SSL_set_session(SSL *ssl, SSL_SESSION *session); -void SSL_SESSION_free(SSL_SESSION *session); -/*** end get/set session ***/ - -long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); -void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, - int (*verify_callback)(int, void *)); - -void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth); - -int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, - const char *CApath); - -void *SSL_load_client_CA_file(const char *file); - -void SSL_CTX_set_client_CA_list(SSL_CTX *ssl_ctx, void *file); - -void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, void *cb); - -void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); - -int SSL_peek(SSL *ssl, void *buf, int num); - -void SSL_set_bio(SSL *ssl, void *rbio, void *wbio); - -long SSL_get_verify_result(const SSL *ssl); - -int SSL_state(SSL *ssl); - -/** end of could do better list */ - -void *SSL_get_peer_certificate(const SSL *ssl); - -int SSL_clear(SSL *ssl); - - -int SSL_CTX_check_private_key(const SSL_CTX *ctx); - -int SSL_CTX_set_cipher_list(SSL_CTX *s, const char *str); - -int SSL_get_error(const SSL *ssl, int ret); - -void SSL_CTX_set_options(SSL_CTX *ssl_ctx, int option); -int SSL_library_init(void ); -void SSL_load_error_strings(void ); -void ERR_print_errors_fp(FILE *fp); - -long SSL_CTX_get_timeout(const SSL_CTX *ssl_ctx); -long SSL_CTX_set_timeout(SSL_CTX *ssl_ctx, long t); -void BIO_printf(FILE *f, const char *format, ...); - -void* BIO_s_null(void); -FILE *BIO_new(bio_func_type_t func); - -FILE *BIO_new_fp(FILE *stream, int close_flag); -int BIO_free(FILE *a); diff --git a/package/luci/libs/luci-lib-nixio/src/binary.c b/package/luci/libs/luci-lib-nixio/src/binary.c deleted file mode 100644 index 2c41622280..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/binary.c +++ /dev/null @@ -1,313 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include - -const char nixio__bin2hex[16] = { -'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' -}; - -static unsigned char nixio__b64encode_tbl[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -static unsigned char nixio__b64decode_tbl[] = { - 0x3e, 0xff, 0xff, 0xff, 0x3f, 0x34, 0x35, 0x36, - 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01, - 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x1b, - 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, - 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, - 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33 -}; - -static const uint32_t nixio__crc32_tbl[] = { - 0x00000000U, 0x77073096U, 0xee0e612cU, 0x990951baU, 0x076dc419U, - 0x706af48fU, 0xe963a535U, 0x9e6495a3U, 0x0edb8832U, 0x79dcb8a4U, - 0xe0d5e91eU, 0x97d2d988U, 0x09b64c2bU, 0x7eb17cbdU, 0xe7b82d07U, - 0x90bf1d91U, 0x1db71064U, 0x6ab020f2U, 0xf3b97148U, 0x84be41deU, - 0x1adad47dU, 0x6ddde4ebU, 0xf4d4b551U, 0x83d385c7U, 0x136c9856U, - 0x646ba8c0U, 0xfd62f97aU, 0x8a65c9ecU, 0x14015c4fU, 0x63066cd9U, - 0xfa0f3d63U, 0x8d080df5U, 0x3b6e20c8U, 0x4c69105eU, 0xd56041e4U, - 0xa2677172U, 0x3c03e4d1U, 0x4b04d447U, 0xd20d85fdU, 0xa50ab56bU, - 0x35b5a8faU, 0x42b2986cU, 0xdbbbc9d6U, 0xacbcf940U, 0x32d86ce3U, - 0x45df5c75U, 0xdcd60dcfU, 0xabd13d59U, 0x26d930acU, 0x51de003aU, - 0xc8d75180U, 0xbfd06116U, 0x21b4f4b5U, 0x56b3c423U, 0xcfba9599U, - 0xb8bda50fU, 0x2802b89eU, 0x5f058808U, 0xc60cd9b2U, 0xb10be924U, - 0x2f6f7c87U, 0x58684c11U, 0xc1611dabU, 0xb6662d3dU, 0x76dc4190U, - 0x01db7106U, 0x98d220bcU, 0xefd5102aU, 0x71b18589U, 0x06b6b51fU, - 0x9fbfe4a5U, 0xe8b8d433U, 0x7807c9a2U, 0x0f00f934U, 0x9609a88eU, - 0xe10e9818U, 0x7f6a0dbbU, 0x086d3d2dU, 0x91646c97U, 0xe6635c01U, - 0x6b6b51f4U, 0x1c6c6162U, 0x856530d8U, 0xf262004eU, 0x6c0695edU, - 0x1b01a57bU, 0x8208f4c1U, 0xf50fc457U, 0x65b0d9c6U, 0x12b7e950U, - 0x8bbeb8eaU, 0xfcb9887cU, 0x62dd1ddfU, 0x15da2d49U, 0x8cd37cf3U, - 0xfbd44c65U, 0x4db26158U, 0x3ab551ceU, 0xa3bc0074U, 0xd4bb30e2U, - 0x4adfa541U, 0x3dd895d7U, 0xa4d1c46dU, 0xd3d6f4fbU, 0x4369e96aU, - 0x346ed9fcU, 0xad678846U, 0xda60b8d0U, 0x44042d73U, 0x33031de5U, - 0xaa0a4c5fU, 0xdd0d7cc9U, 0x5005713cU, 0x270241aaU, 0xbe0b1010U, - 0xc90c2086U, 0x5768b525U, 0x206f85b3U, 0xb966d409U, 0xce61e49fU, - 0x5edef90eU, 0x29d9c998U, 0xb0d09822U, 0xc7d7a8b4U, 0x59b33d17U, - 0x2eb40d81U, 0xb7bd5c3bU, 0xc0ba6cadU, 0xedb88320U, 0x9abfb3b6U, - 0x03b6e20cU, 0x74b1d29aU, 0xead54739U, 0x9dd277afU, 0x04db2615U, - 0x73dc1683U, 0xe3630b12U, 0x94643b84U, 0x0d6d6a3eU, 0x7a6a5aa8U, - 0xe40ecf0bU, 0x9309ff9dU, 0x0a00ae27U, 0x7d079eb1U, 0xf00f9344U, - 0x8708a3d2U, 0x1e01f268U, 0x6906c2feU, 0xf762575dU, 0x806567cbU, - 0x196c3671U, 0x6e6b06e7U, 0xfed41b76U, 0x89d32be0U, 0x10da7a5aU, - 0x67dd4accU, 0xf9b9df6fU, 0x8ebeeff9U, 0x17b7be43U, 0x60b08ed5U, - 0xd6d6a3e8U, 0xa1d1937eU, 0x38d8c2c4U, 0x4fdff252U, 0xd1bb67f1U, - 0xa6bc5767U, 0x3fb506ddU, 0x48b2364bU, 0xd80d2bdaU, 0xaf0a1b4cU, - 0x36034af6U, 0x41047a60U, 0xdf60efc3U, 0xa867df55U, 0x316e8eefU, - 0x4669be79U, 0xcb61b38cU, 0xbc66831aU, 0x256fd2a0U, 0x5268e236U, - 0xcc0c7795U, 0xbb0b4703U, 0x220216b9U, 0x5505262fU, 0xc5ba3bbeU, - 0xb2bd0b28U, 0x2bb45a92U, 0x5cb36a04U, 0xc2d7ffa7U, 0xb5d0cf31U, - 0x2cd99e8bU, 0x5bdeae1dU, 0x9b64c2b0U, 0xec63f226U, 0x756aa39cU, - 0x026d930aU, 0x9c0906a9U, 0xeb0e363fU, 0x72076785U, 0x05005713U, - 0x95bf4a82U, 0xe2b87a14U, 0x7bb12baeU, 0x0cb61b38U, 0x92d28e9bU, - 0xe5d5be0dU, 0x7cdcefb7U, 0x0bdbdf21U, 0x86d3d2d4U, 0xf1d4e242U, - 0x68ddb3f8U, 0x1fda836eU, 0x81be16cdU, 0xf6b9265bU, 0x6fb077e1U, - 0x18b74777U, 0x88085ae6U, 0xff0f6a70U, 0x66063bcaU, 0x11010b5cU, - 0x8f659effU, 0xf862ae69U, 0x616bffd3U, 0x166ccf45U, 0xa00ae278U, - 0xd70dd2eeU, 0x4e048354U, 0x3903b3c2U, 0xa7672661U, 0xd06016f7U, - 0x4969474dU, 0x3e6e77dbU, 0xaed16a4aU, 0xd9d65adcU, 0x40df0b66U, - 0x37d83bf0U, 0xa9bcae53U, 0xdebb9ec5U, 0x47b2cf7fU, 0x30b5ffe9U, - 0xbdbdf21cU, 0xcabac28aU, 0x53b39330U, 0x24b4a3a6U, 0xbad03605U, - 0xcdd70693U, 0x54de5729U, 0x23d967bfU, 0xb3667a2eU, 0xc4614ab8U, - 0x5d681b02U, 0x2a6f2b94U, 0xb40bbe37U, 0xc30c8ea1U, 0x5a05df1bU, - 0x2d02ef8dU -}; - -static int nixio_bin_crc32(lua_State *L) { - size_t len; - const char *buffer = luaL_checklstring(L, 1, &len); - uint32_t value = luaL_optinteger(L, 2, 0); - - value = ~value; - for (size_t i=0; i> 8); - } - - lua_pushinteger(L, (int)(value ^ 0xffffffffU)); - return 1; -} - -static int nixio_bin_hexlify(lua_State *L) { - size_t len, lenout; - luaL_checktype(L, 1, LUA_TSTRING); - const unsigned char *data = (unsigned char*)lua_tolstring(L, 1, &len); - - if (len == 0) { - lua_pushvalue(L, 1); - return 1; - } - - lenout = len * 2; - luaL_argcheck(L, lenout > len, 1, "size overflow"); - - char *out = malloc(lenout); - if (!out) { - return luaL_error(L, NIXIO_OOM); - } - - for (size_t i=0; i < len; i++) { - out[2*i] = nixio__bin2hex[(data[i] & 0xf0) >> 4]; - out[2*i+1] = nixio__bin2hex[(data[i] & 0x0f)]; - } - - lua_pushlstring(L, out, lenout); - free(out); - - return 1; -} - - -static int nixio_bin_unhexlify(lua_State *L) { - size_t len, lenout; - const char *data = luaL_checklstring(L, 1, &len); - - if (len == 0) { - lua_pushvalue(L, 1); - return 1; - } else if (len % 2) { - errno = EINVAL; - return nixio__perror(L); - } - - lenout = len / 2; - char *out = malloc(lenout); - if (!out) { - return luaL_error(L, NIXIO_OOM); - } - - for (size_t i=0; i < lenout; i++) { - char c = data[2*i]; - if (c >= '0' && c <= '9') { - out[i] = (c - '0') << 4; - } else if (c >= 'a' && c <= 'f') { - out[i] = (c - 'a' + 10) << 4; - } else if (data[2*i] >= 'A' && c <= 'F') { - out[i] = (c - 'A' + 10) << 4; - } else { - free(out); - errno = EINVAL; - return nixio__perror(L); - } - - c = data[2*i+1]; - if (c >= '0' && c <= '9') { - out[i] += c - '0'; - } else if (c >= 'a' && c <= 'f') { - out[i] += c - 'a' + 10; - } else if (c >= 'A' && c <= 'F') { - out[i] += c - 'A' + 10; - } else { - free(out); - errno = EINVAL; - return nixio__perror(L); - } - } - - lua_pushlstring(L, out, lenout); - free(out); - - return 1; -} - -static int nixio_bin_b64encode(lua_State *L) { - size_t len, lenout, pad, i; - const uint8_t *data = (const uint8_t*)luaL_checklstring(L, 1, &len); - - lenout = len / 3; - lenout *= 4; - - pad = len % 3; - - if (len == 0) { - lua_pushvalue(L, 1); - return 1; - } else if (pad) { - lenout += 4; - } - - luaL_argcheck(L, lenout > len, 1, "size overflow"); - - char *out = malloc(lenout); - if (!out) { - return luaL_error(L, NIXIO_OOM); - } - - uint8_t *o = (uint8_t*)out; - for (i = 0; i < len; i += 3) { - uint32_t cv = (data[i] << 16) | (data[i+1] << 8) | data[i+2]; - *(o+3) = nixio__b64encode_tbl[ cv & 0x3f]; - *(o+2) = nixio__b64encode_tbl[(cv >> 6) & 0x3f]; - *(o+1) = nixio__b64encode_tbl[(cv >> 12) & 0x3f]; - *o = nixio__b64encode_tbl[(cv >> 18) & 0x3f]; - o += 4; - } - - if (pad) { - uint32_t cv = data[len-pad] << 16; - *(o-1) = '='; - *(o-2) = '='; - if (pad == 2) { - cv |= data[len-pad+1] << 8; - *(o-2) = nixio__b64encode_tbl[(cv >> 6) & 0x3f]; - } - *(o-3) = nixio__b64encode_tbl[(cv >> 12) & 0x3f]; - *(o-4) = nixio__b64encode_tbl[(cv >> 18) & 0x3f]; - } - - lua_pushlstring(L, out, lenout); - free(out); - return 1; -} - -static int nixio_bin_b64decode(lua_State *L) { - size_t len, lenout, i; - const char *dt = luaL_checklstring(L, 1, &len); - - if (len == 0) { - lua_pushvalue(L, 1); - return 1; - } else if (len % 4) { - errno = EINVAL; - return nixio__perror(L); - } - - lenout = len / 4 * 3; - - unsigned char *out = malloc(lenout); - if (!out) { - return luaL_error(L, NIXIO_OOM); - } - - unsigned char *o = out; - for (i = 0; i < len; i += 4) { - uint32_t cv = 0; - for (int j = 0; j < 4; j++) { - unsigned char c = dt[i + j] - 43; - if (c > 79 || (c = nixio__b64decode_tbl[c]) == 0xff) { - free(out); - errno = EINVAL; - return nixio__perror(L); - } - - cv |= c; - if (j != 3) { - cv <<= 6; - } - } - - *(o+2) = (unsigned char)(cv & 0xff); - *(o+1) = (unsigned char)((cv >> 8) & 0xff); - *o = (unsigned char)((cv >> 16) & 0xff); - o += 3; - } - - if (dt[len-1] == '=') { - lenout--; - } - - if (dt[len-2] == '=') { - lenout--; - } - - lua_pushlstring(L, (char*)out, lenout); - free(out); - return 1; -} - -/* module table */ -static const luaL_reg R[] = { - {"hexlify", nixio_bin_hexlify}, - {"unhexlify", nixio_bin_unhexlify}, - {"crc32", nixio_bin_crc32}, - {"b64encode", nixio_bin_b64encode}, - {"b64decode", nixio_bin_b64decode}, - {NULL, NULL} -}; - - -void nixio_open_bin(lua_State *L) { - lua_newtable(L); - luaL_register(L, NULL, R); - lua_setfield(L, -2, "bin"); -} diff --git a/package/luci/libs/luci-lib-nixio/src/bind.c b/package/luci/libs/luci-lib-nixio/src/bind.c deleted file mode 100644 index 68e1df8a8c..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/bind.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include - - -/** - * connect()/bind() shortcut - */ -static int nixio__bind_connect(lua_State *L, int do_bind) { - const char *host = NULL; - if (!lua_isnoneornil(L, 1)) { - host = luaL_checklstring(L, 1, NULL); - } - const char *port = luaL_checklstring(L, 2, NULL); - const char *family = luaL_optlstring(L, 3, "any", NULL); - const char *socktype = luaL_optlstring(L, 4, "stream", NULL); - - struct addrinfo hints, *result, *rp; - memset(&hints, 0, sizeof(hints)); - - if (!strcmp(family, "any")) { - hints.ai_family = AF_UNSPEC; - } else if (!strcmp(family, "inet")) { - hints.ai_family = AF_INET; - } else if (!strcmp(family, "inet6")) { - hints.ai_family = AF_INET6; - } else { - return luaL_argerror(L, 3, "supported values: any, inet, inet6"); - } - - if (!strcmp(socktype, "any")) { - hints.ai_socktype = 0; - } else if (!strcmp(socktype, "stream")) { - hints.ai_socktype = SOCK_STREAM; - } else if (!strcmp(socktype, "dgram")) { - hints.ai_socktype = SOCK_DGRAM; - } else { - return luaL_argerror(L, 4, "supported values: any, stream, dgram"); - } - - if (do_bind) { - hints.ai_flags |= AI_PASSIVE; - } - - hints.ai_protocol = 0; - - int aistat = getaddrinfo(host, port, &hints, &result); - if (aistat) { - lua_pushnil(L); - lua_pushinteger(L, aistat); - lua_pushstring(L, gai_strerror(aistat)); - return 3; - } - - /* create socket object */ - nixio_sock *sock = lua_newuserdata(L, sizeof(nixio_sock)); - int status = -1, clstat; - - for (rp = result; rp != NULL; rp = rp->ai_next) { - sock->fd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); - if (sock->fd == -1) { - continue; - } - - if (do_bind) { - int one = 1; - setsockopt(sock->fd, SOL_SOCKET, SO_REUSEADDR, - (char*)&one, sizeof(one)); - status = bind(sock->fd, rp->ai_addr, rp->ai_addrlen); - } else { - do { - status = connect(sock->fd, rp->ai_addr, rp->ai_addrlen); - } while (status == -1 && errno == EINTR); - } - - /* on success */ - if (!status) { - sock->domain = rp->ai_family; - sock->type = rp->ai_socktype; - sock->protocol = rp->ai_protocol; - break; - } - - do { -#ifndef __WINNT__ - clstat = close(sock->fd); -#else - clstat = closesocket(sock->fd); -#endif - } while (clstat == -1 && errno == EINTR); - } - - freeaddrinfo(result); - - /* on failure */ - if (status) { - return nixio__perror_s(L); - } - - luaL_getmetatable(L, NIXIO_META); - lua_setmetatable(L, -2); - - return 1; -} - -/** - * bind(host, port, [family=any], [type=any]) shortcut - */ -static int nixio_bind(lua_State *L) { - return nixio__bind_connect(L, 1); -} - -/** - * connect(host, port, [family=any], [type=any]) shortcut - */ -static int nixio_connect(lua_State *L) { - return nixio__bind_connect(L, 0); -} - -/** - * bind()/connect() helper - */ -static int nixio_sock__bind_connect(lua_State *L, int do_bind) { - nixio_sock *sock = nixio__checksock(L); - int status = -1; - - if (sock->domain == AF_INET || sock->domain == AF_INET6) { - const char *host = NULL; - if (!lua_isnoneornil(L, 2)) { - host = luaL_checklstring(L, 2, NULL); - } - const char *port = luaL_checklstring(L, 3, NULL); - - struct addrinfo hints, *result, *rp; - - memset(&hints, 0, sizeof(hints)); - hints.ai_family = sock->domain; - hints.ai_socktype = sock->type; - hints.ai_protocol = sock->protocol; - - if (do_bind) { - hints.ai_flags |= AI_PASSIVE; - } - - int aistat = getaddrinfo(host, port, &hints, &result); - if (aistat) { - lua_pushnil(L); - lua_pushinteger(L, aistat); - lua_pushstring(L, gai_strerror(aistat)); - return 3; - } - - for (rp = result; rp != NULL; rp = rp->ai_next) { - if (do_bind) { - status = bind(sock->fd, rp->ai_addr, rp->ai_addrlen); - } else { - do { - status = connect(sock->fd, rp->ai_addr, rp->ai_addrlen); - } while (status == -1 && errno == EINTR); - } - - /* on success */ - if (!status || errno == EINPROGRESS) { - break; - } - } - - freeaddrinfo(result); -#ifndef __WINNT__ - } else if (sock->domain == AF_UNIX) { - size_t pathlen; - const char *path = luaL_checklstring(L, 2, &pathlen); - - struct sockaddr_un addr; - addr.sun_family = AF_UNIX; - luaL_argcheck(L, pathlen <= sizeof(addr.sun_path), 2, "out of range"); - memcpy(addr.sun_path, path, pathlen); - socklen_t alen = sizeof(sa_family_t) + pathlen; - - if (do_bind) { - status = bind(sock->fd, (struct sockaddr*)&addr, alen); - } else { - do { - status = connect(sock->fd, (struct sockaddr*)&addr, alen); - } while (status == -1 && errno == EINTR); - } -#endif - } else { - return luaL_error(L, "not supported"); - } - return nixio__pstatus_s(L, !status); -} - -/** - * bind() - */ -static int nixio_sock_bind(lua_State *L) { - return nixio_sock__bind_connect(L, 1); -} - -/** - * connect() - */ -static int nixio_sock_connect(lua_State *L) { - return nixio_sock__bind_connect(L, 0); -} - -/** - * listen() - */ -static int nixio_sock_listen(lua_State *L) { - int sockfd = nixio__checksockfd(L); - int backlog = luaL_checkinteger(L, 2); - return nixio__pstatus_s(L, !listen(sockfd, backlog)); -} - -/** - * accept() - */ -static int nixio_sock_accept(lua_State *L) { - nixio_sock *sock = nixio__checksock(L); - struct sockaddr_storage saddr; - nixio_addr addr; - socklen_t saddrlen = sizeof(saddr); - int newfd; - - do { - newfd = accept(sock->fd, (struct sockaddr *)&saddr, &saddrlen); - } while (newfd == -1 && errno == EINTR); - if (newfd < 0) { - return nixio__perror_s(L); - } - - /* create userdata */ - nixio_sock *clsock = lua_newuserdata(L, sizeof(nixio_sock)); - luaL_getmetatable(L, NIXIO_META); - lua_setmetatable(L, -2); - - memcpy(clsock, sock, sizeof(clsock)); - clsock->fd = newfd; - - if (!nixio__addr_parse(&addr, (struct sockaddr *)&saddr)) { - lua_pushstring(L, addr.host); - lua_pushinteger(L, addr.port); - return 3; - } else { - return 1; - } -} - -/* module table */ -static const luaL_reg R[] = { - {"bind", nixio_bind}, - {"connect", nixio_connect}, - {NULL, NULL} -}; - -/* object table */ -static const luaL_reg M[] = { - {"bind", nixio_sock_bind}, - {"connect", nixio_sock_connect}, - {"listen", nixio_sock_listen}, - {"accept", nixio_sock_accept}, - {NULL, NULL} -}; - -void nixio_open_bind(lua_State *L) { - luaL_register(L, NULL, R); - - lua_pushvalue(L, -2); - luaL_register(L, NULL, M); - lua_pop(L, 1); -} diff --git a/package/luci/libs/luci-lib-nixio/src/bit.c b/package/luci/libs/luci-lib-nixio/src/bit.c deleted file mode 100644 index 1b352c51c5..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/bit.c +++ /dev/null @@ -1,149 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include - -/* 52 bit maximum precision */ -#ifdef NIXIO_DOUBLE -#define NIXIO_BIT_BMAX 52 -#define NIXIO_BIT_NMAX 0xfffffffffffff -#else -#define NIXIO_BIT_BMAX 32 -#define NIXIO_BIT_NMAX 0xffffffff -#endif - -#define NIXIO_BIT_XOP(BIT_XOP) \ - uint64_t oper = nixio__checknumber(L, 1); \ - const int args = lua_gettop(L); \ - \ - for (int i = 2; i <= args; i++) { \ - uint64_t oper2 = nixio__checknumber(L, i); \ - oper BIT_XOP oper2; \ - } \ - \ - nixio__pushnumber(L, oper); \ - return 1; \ - - -static int nixio_bit_or(lua_State *L) { - NIXIO_BIT_XOP(|=); -} - -static int nixio_bit_and(lua_State *L) { - NIXIO_BIT_XOP(&=); -} - -static int nixio_bit_xor(lua_State *L) { - NIXIO_BIT_XOP(^=); -} - -static int nixio_bit_unset(lua_State *L) { - NIXIO_BIT_XOP(&= ~); -} - -static int nixio_bit_not(lua_State *L) { - nixio__pushnumber(L, - (~((uint64_t)nixio__checknumber(L, 1))) & NIXIO_BIT_NMAX); - return 1; -} - -static int nixio_bit_shl(lua_State *L) { - uint64_t oper = nixio__checknumber(L, 1); - oper <<= luaL_checkinteger(L, 2); - if (oper > NIXIO_BIT_NMAX) { - return luaL_error(L, "arithmetic overflow"); - } else { - nixio__pushnumber(L, oper); - return 1; - } -} - -static int nixio_bit_ashr(lua_State *L) { - int64_t oper = nixio__checknumber(L, 1); - nixio__pushnumber(L, oper >> luaL_checkinteger(L, 2)); - return 1; -} - -static int nixio_bit_shr(lua_State *L) { - uint64_t oper = nixio__checknumber(L, 1); - nixio__pushnumber(L, oper >> luaL_checkinteger(L, 2)); - return 1; -} - -static int nixio_bit_div(lua_State *L) { - uint64_t oper = luaL_checknumber(L, 1); - const int args = lua_gettop(L); - - for (int i = 2; i <= args; i++) { - uint64_t oper2 = nixio__checknumber(L, i); - oper /= oper2; - } - - nixio__pushnumber(L, oper); - return 1; -} - -static int nixio_bit_check(lua_State *L) { - uint64_t oper = nixio__checknumber(L, 1); - uint64_t oper2 = nixio__checknumber(L, 2); - lua_pushboolean(L, (oper & oper2) == oper2); - return 1; -} - -static int nixio_bit_cast(lua_State *L) { - nixio__pushnumber(L, ((uint64_t)nixio__checknumber(L, 1)) & NIXIO_BIT_NMAX); - return 1; -} - -static int nixio_bit_swap(lua_State *L) { - uint64_t op = nixio__checknumber(L, 1); - op = (op >> 24) | ((op >> 8) & 0xff00) | ((op & 0xff00) << 8) | (op << 24); - nixio__pushnumber(L, op); - return 1; -} - -/* module table */ -static const luaL_reg R[] = { - {"bor", nixio_bit_or}, - {"set", nixio_bit_or}, - {"band", nixio_bit_and}, - {"bxor", nixio_bit_xor}, - {"unset", nixio_bit_unset}, - {"bnot", nixio_bit_not}, - {"rshift", nixio_bit_shr}, - {"arshift", nixio_bit_ashr}, - {"lshift", nixio_bit_shl}, - {"div", nixio_bit_div}, - {"check", nixio_bit_check}, - {"cast", nixio_bit_cast}, - {"tobit", nixio_bit_cast}, - {"bswap", nixio_bit_swap}, - {NULL, NULL} -}; - -void nixio_open_bit(lua_State *L) { - lua_newtable(L); - luaL_register(L, NULL, R); - nixio__pushnumber(L, NIXIO_BIT_BMAX); - lua_setfield(L, -2, "bits"); - nixio__pushnumber(L, NIXIO_BIT_NMAX); - lua_setfield(L, -2, "max"); - lua_setfield(L, -2, "bit"); -} diff --git a/package/luci/libs/luci-lib-nixio/src/cyassl-compat.c b/package/luci/libs/luci-lib-nixio/src/cyassl-compat.c deleted file mode 100644 index a483119ac9..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/cyassl-compat.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "cyassl-compat.h" - -int MD5_Init(MD5_CTX *md5) { - InitMd5(md5); - return 1; -} - -int MD5_Update(MD5_CTX *md5, void *input, unsigned long sz) { - Md5Update(md5, input, (word32)sz); - return 1; -} - -int MD5_Final(void *input, MD5_CTX *md5) { - Md5Final(md5, input); - return 1; -} - -int SHA1_Init(SHA_CTX *sha) { - InitSha(sha); - return 1; -} - -int SHA1_Update(SHA_CTX *sha, void *input, unsigned long sz) { - ShaUpdate(sha, input, (word32)sz); - return 1; -} - -int SHA1_Final(void *input, SHA_CTX *sha) { - ShaFinal(sha, input); - return 1; -} diff --git a/package/luci/libs/luci-lib-nixio/src/cyassl-compat.h b/package/luci/libs/luci-lib-nixio/src/cyassl-compat.h deleted file mode 100644 index b2cdc92331..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/cyassl-compat.h +++ /dev/null @@ -1,32 +0,0 @@ -#define WITH_CYASSL -#define WITHOUT_OPENSSL -#include - -typedef unsigned int word32; - - -#define MD5_DIGEST_LENGTH 16 -typedef struct MD5_CTX { - int dummy[24]; -} MD5_CTX; - -void InitMd5(MD5_CTX*); -void Md5Update(MD5_CTX*, void*, word32); -void Md5Final(MD5_CTX*, void*); - - -#define SHA_DIGEST_LENGTH 20 -typedef struct SHA_CTX { - int dummy[24]; -} SHA_CTX; - -void InitSha(SHA_CTX*); -void ShaUpdate(SHA_CTX*, void*, word32); -void ShaFinal(SHA_CTX*, void*); - -int MD5_Init(MD5_CTX *md5); -int MD5_Update(MD5_CTX *md5, void *input, unsigned long sz); -int MD5_Final(void *input, MD5_CTX *md5); -int SHA1_Init(SHA_CTX *md5); -int SHA1_Update(SHA_CTX *sha, void *input, unsigned long sz); -int SHA1_Final(void *input, SHA_CTX *sha); diff --git a/package/luci/libs/luci-lib-nixio/src/file.c b/package/luci/libs/luci-lib-nixio/src/file.c deleted file mode 100644 index cfa35dfd17..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/file.c +++ /dev/null @@ -1,435 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static int nixio_open(lua_State *L) { - const char *filename = luaL_checklstring(L, 1, NULL); - int flags; - - if (lua_isnoneornil(L, 2)) { - flags = O_RDONLY; - } else if (lua_isnumber(L, 2)) { - flags = lua_tointeger(L, 2); - } else if (lua_isstring(L, 2)) { - const char *str = lua_tostring(L, 2); - if (!strcmp(str, "r")) { - flags = O_RDONLY; - } else if (!strcmp(str, "r+")) { - flags = O_RDWR; - } else if (!strcmp(str, "w")) { - flags = O_WRONLY | O_CREAT | O_TRUNC; - } else if (!strcmp(str, "w+")) { - flags = O_RDWR | O_CREAT | O_TRUNC; - } else if (!strcmp(str, "a")) { - flags = O_WRONLY | O_CREAT | O_APPEND; - } else if (!strcmp(str, "a+")) { - flags = O_RDWR | O_CREAT | O_APPEND; - } else { - return luaL_argerror(L, 2, "supported values: r, r+, w, w+, a, a+"); - } - } else { - return luaL_argerror(L, 2, "open flags or string expected"); - } - - int fd; - - do { - fd = open(filename, flags, nixio__check_mode(L, 3, 0666)); - } while (fd == -1 && errno == EINTR); - if (fd == -1) { - return nixio__perror(L); - } - - int *udata = lua_newuserdata(L, sizeof(int)); - if (!udata) { - return luaL_error(L, "out of memory"); - } - - *udata = fd; - - luaL_getmetatable(L, NIXIO_FILE_META); - lua_setmetatable(L, -2); - - return 1; -} - -static int nixio_mkstemp(lua_State *L) { - const char *intemplate = luaL_checklstring(L, 1, NULL); - size_t len = lua_strlen(L, 1); - char *template = (char *)lua_newuserdata(L, 13 + len); - if (!template) { - return luaL_error(L, "out of memory"); - } - snprintf(template, 13 + len, "/tmp/%s.XXXXXX", intemplate); - - int fd; - - do { - fd = mkstemp(template); - } while (fd == -1 && errno == EINTR); - if (fd == -1) { - return nixio__perror(L); - } - unlink(template); - - int *udata = lua_newuserdata(L, sizeof(int)); - if (!udata) { - return luaL_error(L, "out of memory"); - } - - *udata = fd; - - luaL_getmetatable(L, NIXIO_FILE_META); - lua_setmetatable(L, -2); - - return 1; -} - -static int nixio_open_flags(lua_State *L) { - int mode = 0; - const int j = lua_gettop(L); - for (int i=1; i<=j; i++) { - const char *flag = luaL_checkstring(L, i); - if (!strcmp(flag, "append")) { - mode |= O_APPEND; - } else if (!strcmp(flag, "creat")) { - mode |= O_CREAT; - } else if (!strcmp(flag, "excl")) { - mode |= O_EXCL; - } else if (!strcmp(flag, "nonblock") || !strcmp(flag, "ndelay")) { -#ifndef __WINNT__ - mode |= O_NONBLOCK; -#endif - } else if (!strcmp(flag, "sync")) { -#ifndef __WINNT__ - mode |= O_SYNC; -#endif - } else if (!strcmp(flag, "trunc")) { - mode |= O_TRUNC; - } else if (!strcmp(flag, "rdonly")) { - mode |= O_RDONLY; - } else if (!strcmp(flag, "wronly")) { - mode |= O_WRONLY; - } else if (!strcmp(flag, "rdwr")) { - mode |= O_RDWR; - } else { - return luaL_argerror(L, i, "supported values: append, creat, " - "excl, nonblock, ndelay, sync, trunc"); - } - } - lua_pushinteger(L, mode); - return 1; -} - -static int nixio_dup(lua_State *L) { - int oldfd = nixio__checkfd(L, 1); - int newfd = (lua_gettop(L) > 1) ? nixio__checkfd(L, 2) : -1; - int stat = (newfd == -1) ? dup(oldfd) : dup2(oldfd, newfd); - - if (stat == -1) { - return nixio__perror(L); - } else { - if (newfd == -1) { - int *udata = lua_newuserdata(L, sizeof(int)); - if (!udata) { - return luaL_error(L, "out of memory"); - } - - *udata = stat; - luaL_getmetatable(L, NIXIO_FILE_META); - lua_setmetatable(L, -2); - } else { - lua_pushvalue(L, 2); - } - return 1; - } -} - -static int nixio_pipe(lua_State *L) { - int pipefd[2], *udata; - if (pipe(pipefd)) { - return nixio__perror(L); - } - - luaL_getmetatable(L, NIXIO_FILE_META); - udata = lua_newuserdata(L, sizeof(int)); - if (!udata) { - return luaL_error(L, "out of memory"); - } - - *udata = pipefd[0]; - lua_pushvalue(L, -2); - lua_setmetatable(L, -2); - - - udata = lua_newuserdata(L, sizeof(int)); - if (!udata) { - return luaL_error(L, "out of memory"); - } - - *udata = pipefd[1]; - lua_pushvalue(L, -3); - lua_setmetatable(L, -2); - - return 2; -} - -static int nixio_file_write(lua_State *L) { - int fd = nixio__checkfd(L, 1); - size_t len; - ssize_t sent; - const char *data = luaL_checklstring(L, 2, &len); - - if (lua_gettop(L) > 2) { - int offset = luaL_optint(L, 3, 0); - if (offset) { - if (offset < len) { - data += offset; - len -= offset; - } else { - len = 0; - } - } - - unsigned int wlen = luaL_optint(L, 4, len); - if (wlen < len) { - len = wlen; - } - } - - do { - sent = write(fd, data, len); - } while(sent == -1 && errno == EINTR); - if (sent >= 0) { - lua_pushinteger(L, sent); - return 1; - } else { - return nixio__perror(L); - } -} - -static int nixio_file_read(lua_State *L) { - int fd = nixio__checkfd(L, 1); - char buffer[NIXIO_BUFFERSIZE]; - uint req = luaL_checkinteger(L, 2); - int readc; - - /* We limit the readsize to NIXIO_BUFFERSIZE */ - req = (req > NIXIO_BUFFERSIZE) ? NIXIO_BUFFERSIZE : req; - - do { - readc = read(fd, buffer, req); - } while (readc == -1 && errno == EINTR); - - if (readc < 0) { - return nixio__perror(L); - } else { - lua_pushlstring(L, buffer, readc); - return 1; - } -} - - -static int nixio_file_seek(lua_State *L) { - int fd = nixio__checkfd(L, 1); - off_t len = (off_t)nixio__checknumber(L, 2); - int whence; - const char *whstr = luaL_optlstring(L, 3, "set", NULL); - if (!strcmp(whstr, "set")) { - whence = SEEK_SET; - } else if (!strcmp(whstr, "cur")) { - whence = SEEK_CUR; - } else if (!strcmp(whstr, "end")) { - whence = SEEK_END; - } else { - return luaL_argerror(L, 3, "supported values: set, cur, end"); - } - len = lseek(fd, len, whence); - if (len == -1) { - return nixio__perror(L); - } else { - nixio__pushnumber(L, len); - return 1; - } -} - -static int nixio_file_tell(lua_State *L) { - int fd = nixio__checkfd(L, 1); - off_t pos = lseek(fd, 0, SEEK_CUR); - if (pos < 0) { - return nixio__perror(L); - } else { - nixio__pushnumber(L, pos); - return 1; - } -} - -static int nixio_file_stat(lua_State *L) { - nixio_stat_t buf; - if (fstat(nixio__checkfd(L, 1), &buf)) { - return nixio__perror(L); - } else { - nixio__push_stat(L, &buf); - if (lua_isstring(L, 2)) { - lua_getfield(L, -1, lua_tostring(L, 2)); - } - return 1; - } -} - -static int nixio_file_sync(lua_State *L) { - int fd = nixio__checkfd(L, 1); - int stat; -#if (!defined BSD && !defined __WINNT__) - int dataonly = lua_toboolean(L, 2); - do { - stat = (dataonly) ? fdatasync(fd) : fsync(fd); - } while (stat == -1 && errno == EINTR); - return nixio__pstatus(L, !stat); -#else - do { - stat = fsync(fd); - } while (stat == -1 && errno == EINTR); - return nixio__pstatus(L, !stat); -#endif -} - -static int nixio_file_lock(lua_State *L) { - int fd = nixio__checkfd(L, 1); - const char *flag = luaL_checkstring(L, 2); - off_t len = (off_t)nixio__optnumber(L, 3, 0); - int stat; - - int cmd = 0; - if (!strcmp(flag, "lock")) { - cmd = F_LOCK; - } else if (!strcmp(flag, "tlock")) { - cmd = F_TLOCK; - } else if (!strcmp(flag, "ulock")) { - cmd = F_ULOCK; - } else if (!strcmp(flag, "test")) { - cmd = F_TEST; - } else { - return luaL_argerror(L, 2, - "supported values: lock, tlock, ulock, test"); - } - - do { - stat = lockf(fd, cmd, len); - } while (stat == -1 && errno == EINTR); - - return nixio__pstatus(L, !stat); -} - -static int nixio_file_close(lua_State *L) { - int *fdp = luaL_checkudata(L, 1, NIXIO_FILE_META); - luaL_argcheck(L, *fdp != -1, 1, "invalid file object"); - int res; - do { - res = close(*fdp); - } while (res == -1 && errno == EINTR); - *fdp = -1; - return nixio__pstatus(L, !res); -} - -static int nixio_file__gc(lua_State *L) { - int *fdp = luaL_checkudata(L, 1, NIXIO_FILE_META); - int res; - if (*fdp > 2) { - do { - res = close(*fdp); - } while (res == -1 && errno == EINTR); - *fdp = -1; - } - return 0; -} - -/** - * string representation - */ -static int nixio_file__tostring(lua_State *L) { - lua_pushfstring(L, "nixio file %d", nixio__tofd(L, 1)); - return 1; -} - -/* method table */ -static const luaL_reg M[] = { - {"write", nixio_file_write}, - {"read", nixio_file_read}, - {"tell", nixio_file_tell}, - {"seek", nixio_file_seek}, - {"stat", nixio_file_stat}, - {"sync", nixio_file_sync}, - {"lock", nixio_file_lock}, - {"close", nixio_file_close}, - {"__gc", nixio_file__gc}, - {"__tostring", nixio_file__tostring}, - {NULL, NULL} -}; - -/* module table */ -static const luaL_reg R[] = { - {"dup", nixio_dup}, - {"open", nixio_open}, - {"open_flags", nixio_open_flags}, - {"mkstemp", nixio_mkstemp}, - {"pipe", nixio_pipe}, - {NULL, NULL} -}; - -void nixio_open_file(lua_State *L) { - luaL_register(L, NULL, R); - - luaL_newmetatable(L, NIXIO_FILE_META); - luaL_register(L, NULL, M); - lua_pushvalue(L, -1); - lua_setfield(L, -2, "__index"); - - int *uin = lua_newuserdata(L, sizeof(int)); - int *uout = lua_newuserdata(L, sizeof(int)); - int *uerr = lua_newuserdata(L, sizeof(int)); - - if (!uin || !uout || !uerr) { - luaL_error(L, "out of memory"); - } - - *uin = STDIN_FILENO; - *uout = STDOUT_FILENO; - *uerr = STDERR_FILENO; - - for (int i = -4; i < -1; i++) { - lua_pushvalue(L, -4); - lua_setmetatable(L, i); - } - - lua_setfield(L, -5, "stderr"); - lua_setfield(L, -4, "stdout"); - lua_setfield(L, -3, "stdin"); - lua_setfield(L, -2, "meta_file"); -} diff --git a/package/luci/libs/luci-lib-nixio/src/fs.c b/package/luci/libs/luci-lib-nixio/src/fs.c deleted file mode 100644 index ba184ed119..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/fs.c +++ /dev/null @@ -1,566 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* Reads argument from given index and transforms it into a mode bitfield */ -int nixio__check_mode(lua_State *L, int idx, int def) { - if (lua_isnoneornil(L, idx) && def > 0) { - return def; - } else if (lua_isstring(L, idx) && lua_objlen(L, idx) == 9) { - int mode = 0; - const char *modestr = lua_tostring(L, idx); - int i; - for (i=0; i<9; i++) { - if (i % 3 == 0) { /* read flags */ - if (modestr[i] == 'r') { - mode |= 1 << (8 - i); - } else if (modestr[i] != '-') { - break; - } - } else if (i % 3 == 1) { /* write flags */ - if (modestr[i] == 'w') { - mode |= 1 << (8 - i); - } else if (modestr[i] != '-') { - break; - } - } else if (i == 2) { - if (modestr[i] == 'x') { - mode |= 00100; - } else if (modestr[i] == 's') { - mode |= 04100; - } else if (modestr[i] == 'S') { - mode |= 04000; - } else if (modestr[i] != '-') { - break; - } - } else if (i == 5) { - if (modestr[i] == 'x') { - mode |= 00010; - } else if (modestr[i] == 's') { - mode |= 02010; - } else if (modestr[i] == 'S') { - mode |= 02000; - } else if (modestr[i] != '-') { - break; - } - } else if (i == 8) { - if (modestr[i] == 'x') { - mode |= 00001; - } else if (modestr[i] == 't') { - mode |= 01001; - } else if (modestr[i] == 'T') { - mode |= 01000; - } else if (modestr[i] != '-') { - break; - } - } - } - if (i == 9) { /* successfully parsed */ - return mode; - } - } else if (lua_isnumber(L, idx)) { - int decmode = lua_tointeger(L, idx); - int s = (decmode % 10000) / 1000; - int u = (decmode % 1000) / 100; - int g = (decmode % 100) / 10; - int o = (decmode % 10); - - if (s>=0 && s<=7 && u>=0 && u<=7 && g>=0 && g<=7 && o>=0 && o<=7) { - return (s << 9) + (u << 6) + (g << 3) + o; - } - } - - return luaL_argerror(L, idx, "supported values: [0-7]?[0-7][0-7][0-7], " - "[-r][-w][-xsS][-r][-w][-xsS][-r][-w][-xtT]"); -} - -/* Transforms a mode into the modestring */ -int nixio__mode_write(int mode, char *modestr) { - if (modestr) { - modestr[0] = (mode & 00400) ? 'r' : '-'; - modestr[1] = (mode & 00200) ? 'w' : '-'; - modestr[2] = ((mode & 04100) == 04100) ? 's' : - (mode & 04000) ? 'S' : (mode & 00100) ? 'x' : '-'; - modestr[3] = (mode & 00040) ? 'r' : '-'; - modestr[4] = (mode & 00020) ? 'w' : '-'; - modestr[5] = ((mode & 02010) == 02010) ? 's' : - (mode & 02000) ? 'S' : (mode & 00010) ? 'x' : '-'; - modestr[6] = (mode & 00004) ? 'r' : '-'; - modestr[7] = (mode & 00002) ? 'w' : '-'; - modestr[8] = ((mode & 01001) == 01001) ? 't' : - (mode & 01000) ? 'T' : (mode & 00001) ? 'x' : '-'; - } - - return (mode & 00007) + ((mode & 00070) >> 3) * 10 + - ((mode & 00700) >> 6) * 100 + ((mode & 07000) >> 9) * 1000; -} - -static int nixio_access(lua_State *L) { - const char *path = luaL_checkstring(L, 1); - int mode = F_OK; - - for (const char *s = luaL_optstring(L, 2, "f"); *s; s++) { - if (*s == 'r') { - mode |= R_OK; - } else if (*s == 'w') { - mode |= W_OK; - } else if (*s == 'x') { - mode |= X_OK; - } else if (*s != 'f') { - return luaL_argerror(L, 2, "supported values: [frwx]"); - } - } - - return nixio__pstatus(L, !access(path, mode)); -} - -static int nixio_basename(lua_State *L) { - const char *path = luaL_checkstring(L, 1); - char base[PATH_MAX]; - base[PATH_MAX-1] = 0; - - strncpy(base, path, PATH_MAX-1); - lua_pushstring(L, basename(base)); - return 1; -} - -static int nixio_dirname(lua_State *L) { - const char *path = luaL_checkstring(L, 1); - char base[PATH_MAX]; - base[PATH_MAX-1] = 0; - - strncpy(base, path, PATH_MAX-1); - lua_pushstring(L, dirname(base)); - return 1; -} - -static int nixio_realpath(lua_State *L) { - const char *path = luaL_checkstring(L, 1); - char real[PATH_MAX]; - - if (!realpath(path, real)) { - return nixio__perror(L); - } else { - lua_pushstring(L, real); - return 1; - } -} - -static int nixio_remove(lua_State *L) { - return nixio__pstatus(L, !remove(luaL_checkstring(L, 1))); -} - -static int nixio_unlink(lua_State *L) { - return nixio__pstatus(L, !unlink(luaL_checkstring(L, 1))); -} - -static int nixio_rename(lua_State *L) { - return nixio__pstatus(L, - !rename(luaL_checkstring(L, 1), luaL_checkstring(L, 2))); -} - -static int nixio_rmdir(lua_State *L) { - return nixio__pstatus(L, !rmdir(luaL_checkstring(L, 1))); -} - -static int nixio_mkdir(lua_State *L) { - return nixio__pstatus(L, - !mkdir(luaL_checkstring(L, 1), nixio__check_mode(L, 2, 0777))); -} - -static int nixio_chmod(lua_State *L) { - return nixio__pstatus(L, - !chmod(luaL_checkstring(L, 1), nixio__check_mode(L, 2, -1))); -} - -static int nixio_dir__gc(lua_State *L) { - DIR **dirp = lua_touserdata(L, 1); - if (dirp && *dirp) { - closedir(*dirp); - *dirp = NULL; - } - return 0; -} - -static int nixio_dir__iter(lua_State *L) { - DIR **dirp = lua_touserdata(L, lua_upvalueindex(1)); - struct dirent *entry; - const char *n = NULL; - - if (*dirp) { - do { - entry = readdir(*dirp); - n = (entry) ? entry->d_name : NULL; - } while(n && n[0] == '.' && (n[1] == 0 || (n[1] == '.' && n[2] == 0))); - } - - if (n) { - lua_pushstring(L, n); - } else { - if (*dirp) { - closedir(*dirp); - *dirp = NULL; - } - lua_pushnil(L); - } - - return 1; -} - -static int nixio_dir(lua_State *L) { - const char *path = luaL_optstring(L, 1, "."); - DIR **dirp = lua_newuserdata(L, sizeof(DIR *)); - - *dirp = opendir(path); - if (!*dirp) { - return nixio__perror(L); - } else { - luaL_getmetatable(L, NIXIO_DIR_META); - lua_setmetatable(L, -2); - lua_pushcclosure(L, nixio_dir__iter, 1); - return 1; - } -} - -static int nixio_link(lua_State *L) { - return nixio__pstatus(L, - !link(luaL_checkstring(L, 1), luaL_checkstring(L, 2))); -} - -static int nixio_utimes(lua_State *L) { - const char *path = luaL_checkstring(L, 1); - if (lua_gettop(L) < 2 || (lua_isnoneornil(L, 2) && lua_isnoneornil(L, 3))) { - return nixio__pstatus(L, !utimes(path, NULL)); - } else { - double atime = nixio__checknumber(L, 2); - double mtime = nixio__optnumber(L, 3, atime); - struct timeval times[2]; - - times[0].tv_sec = atime; - times[0].tv_usec = 0; - times[1].tv_sec = mtime; - times[1].tv_usec = 0; - - return nixio__pstatus(L, !utimes(path, times)); - } -} - -int nixio__push_stat(lua_State *L, nixio_stat_t *buf) { - lua_createtable(L, 0, 15); - - lua_pushinteger(L, buf->st_dev); - lua_setfield(L, -2, "dev"); - - lua_pushinteger(L, buf->st_ino); - lua_setfield(L, -2, "ino"); - - if (S_ISREG(buf->st_mode)) { - lua_pushliteral(L, "reg"); - } else if (S_ISDIR(buf->st_mode)) { - lua_pushliteral(L, "dir"); - } else if (S_ISCHR(buf->st_mode)) { - lua_pushliteral(L, "chr"); - } else if (S_ISBLK(buf->st_mode)) { - lua_pushliteral(L, "blk"); - } else if (S_ISFIFO(buf->st_mode)) { - lua_pushliteral(L, "fifo"); - } else if (S_ISLNK(buf->st_mode)) { - lua_pushliteral(L, "lnk"); - } else if (S_ISSOCK(buf->st_mode)) { - lua_pushliteral(L, "sock"); - } else { - lua_pushliteral(L, "unknown"); - } - lua_setfield(L, -2, "type"); - - char modestr[9]; - lua_pushinteger(L, nixio__mode_write(buf->st_mode, modestr)); - lua_setfield(L, -2, "modedec"); - - lua_pushlstring(L, modestr, 9); - lua_setfield(L, -2, "modestr"); - - lua_pushinteger(L, buf->st_nlink); - lua_setfield(L, -2, "nlink"); - - lua_pushinteger(L, buf->st_uid); - lua_setfield(L, -2, "uid"); - - lua_pushinteger(L, buf->st_gid); - lua_setfield(L, -2, "gid"); - - lua_pushinteger(L, buf->st_rdev); - lua_setfield(L, -2, "rdev"); - - nixio__pushnumber(L, buf->st_size); - lua_setfield(L, -2, "size"); - - lua_pushinteger(L, buf->st_atime); - lua_setfield(L, -2, "atime"); - - lua_pushinteger(L, buf->st_mtime); - lua_setfield(L, -2, "mtime"); - - lua_pushinteger(L, buf->st_ctime); - lua_setfield(L, -2, "ctime"); - -#ifndef __WINNT__ - lua_pushinteger(L, buf->st_blksize); - lua_setfield(L, -2, "blksize"); - - lua_pushinteger(L, buf->st_blocks); - lua_setfield(L, -2, "blocks"); -#endif - - return 1; -} - -static int nixio_stat(lua_State *L) { - nixio_stat_t buf; - if (stat(luaL_checkstring(L, 1), &buf)) { - return nixio__perror(L); - } else { - nixio__push_stat(L, &buf); - if (lua_isstring(L, 2)) { - lua_getfield(L, -1, lua_tostring(L, 2)); - } - return 1; - } -} - -static int nixio_lstat(lua_State *L) { - nixio_stat_t buf; - if (lstat(luaL_checkstring(L, 1), &buf)) { - return nixio__perror(L); - } else { - nixio__push_stat(L, &buf); - if (lua_isstring(L, 2)) { - lua_getfield(L, -1, lua_tostring(L, 2)); - } - return 1; - } -} - -#ifndef __WINNT__ - -static int nixio_chown(lua_State *L) { - return nixio__pstatus(L, - !chown( - luaL_checkstring(L, 1), - lua_isnoneornil(L, 2) ? -1 : nixio__check_user(L, 2), - lua_isnoneornil(L, 3) ? -1 : nixio__check_group(L, 3) - ) - ); -} - -static int nixio_lchown(lua_State *L) { - return nixio__pstatus(L, - !lchown( - luaL_checkstring(L, 1), - lua_isnoneornil(L, 2) ? -1 : nixio__check_user(L, 2), - lua_isnoneornil(L, 3) ? -1 : nixio__check_group(L, 3) - ) - ); -} - -static int nixio_mkfifo(lua_State *L) { - return nixio__pstatus(L, - !mkfifo(luaL_checkstring(L, 1), nixio__check_mode(L, 2, -1))); -} - -static int nixio_symlink(lua_State *L) { - return nixio__pstatus(L, - !symlink(luaL_checkstring(L, 1), luaL_checkstring(L, 2))); -} - -static int nixio_readlink(lua_State *L) { - char dest[PATH_MAX]; - ssize_t res = readlink(luaL_checkstring(L, 1), dest, sizeof(dest)); - if (res < 0) { - return nixio__perror(L); - } else { - lua_pushlstring(L, dest, res); - return 1; - } -} - -#include - -typedef struct { - glob_t gl; - size_t pos; - int freed; -} nixio_glob_t; - -static int nixio_glob__iter(lua_State *L) { - nixio_glob_t *globres = lua_touserdata(L, lua_upvalueindex(1)); - if (!globres->freed && globres->pos < globres->gl.gl_pathc) { - lua_pushstring(L, globres->gl.gl_pathv[(globres->pos)++]); - } else { - if (!globres->freed) { - globfree(&globres->gl); - globres->freed = 1; - } - lua_pushnil(L); - } - return 1; -} - -static int nixio_glob__gc(lua_State *L) { - nixio_glob_t *globres = lua_touserdata(L, 1); - if (globres && !globres->freed) { - globres->freed = 1; - globfree(&globres->gl); - } - return 0; -} - -static int nixio_glob(lua_State *L) { - const char *pattern = luaL_optstring(L, 1, "*"); - nixio_glob_t *globres = lua_newuserdata(L, sizeof(nixio_glob_t)); - if (!globres) { - return luaL_error(L, NIXIO_OOM); - } - globres->pos = 0; - globres->freed = 0; - - int globstat = glob(pattern, 0, NULL, &globres->gl); - if (globstat == GLOB_NOMATCH) { - lua_pushcfunction(L, nixio__nulliter); - lua_pushinteger(L, 0); - } else if (globstat) { - return nixio__perror(L); - } else { - luaL_getmetatable(L, NIXIO_GLOB_META); - lua_setmetatable(L, -2); - lua_pushcclosure(L, nixio_glob__iter, 1); - lua_pushinteger(L, globres->gl.gl_pathc); - } - return 2; -} - -#include - -static int nixio__push_statvfs(lua_State *L, struct statvfs *buf) { - lua_createtable(L, 0, 12); - - nixio__pushnumber(L, buf->f_bavail); - lua_setfield(L, -2, "bavail"); - - nixio__pushnumber(L, buf->f_bfree); - lua_setfield(L, -2, "bfree"); - - nixio__pushnumber(L, buf->f_blocks); - lua_setfield(L, -2, "blocks"); - - nixio__pushnumber(L, buf->f_bsize); - lua_setfield(L, -2, "bsize"); - - nixio__pushnumber(L, buf->f_frsize); - lua_setfield(L, -2, "frsize"); - - nixio__pushnumber(L, buf->f_favail); - lua_setfield(L, -2, "favail"); - - nixio__pushnumber(L, buf->f_ffree); - lua_setfield(L, -2, "ffree"); - - nixio__pushnumber(L, buf->f_files); - lua_setfield(L, -2, "files"); - - nixio__pushnumber(L, buf->f_flag); - lua_setfield(L, -2, "flag"); - - nixio__pushnumber(L, buf->f_fsid); - lua_setfield(L, -2, "fsid"); - - nixio__pushnumber(L, buf->f_namemax); - lua_setfield(L, -2, "namemax"); - - return 1; -} - -static int nixio_statvfs(lua_State *L) { - struct statvfs buf; - if (statvfs(luaL_optstring(L, 1, "."), &buf)) { - return nixio__perror(L); - } else { - return nixio__push_statvfs(L, &buf); - } -} - -#endif /* !__WINNT__ */ - - - -/* module table */ -static const luaL_reg R[] = { -#ifndef __WINNT__ - {"glob", nixio_glob}, - {"mkfifo", nixio_mkfifo}, - {"symlink", nixio_symlink}, - {"readlink", nixio_readlink}, - {"chown", nixio_chown}, - {"lchown", nixio_lchown}, - {"statvfs", nixio_statvfs}, -#endif - {"chmod", nixio_chmod}, - {"access", nixio_access}, - {"basename", nixio_basename}, - {"dir", nixio_dir}, - {"dirname", nixio_dirname}, - {"realpath", nixio_realpath}, - {"mkdir", nixio_mkdir}, - {"rmdir", nixio_rmdir}, - {"link", nixio_link}, - {"unlink", nixio_unlink}, - {"utimes", nixio_utimes}, - {"rename", nixio_rename}, - {"remove", nixio_remove}, - {"stat", nixio_stat}, - {"lstat", nixio_lstat}, - {NULL, NULL} -}; - -void nixio_open_fs(lua_State *L) { - lua_newtable(L); - luaL_register(L, NULL, R); - lua_setfield(L, -2, "fs"); - - luaL_newmetatable(L, NIXIO_DIR_META); - lua_pushcfunction(L, nixio_dir__gc); - lua_setfield(L, -2, "__gc"); - lua_pop(L, 1); - -#ifndef __WINNT__ - luaL_newmetatable(L, NIXIO_GLOB_META); - lua_pushcfunction(L, nixio_glob__gc); - lua_setfield(L, -2, "__gc"); - lua_pop(L, 1); -#endif -} diff --git a/package/luci/libs/luci-lib-nixio/src/io.c b/package/luci/libs/luci-lib-nixio/src/io.c deleted file mode 100644 index 12d5c7df45..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/io.c +++ /dev/null @@ -1,225 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include -#include - - -/** - * send() / sendto() helper - */ -static int nixio_sock__sendto(lua_State *L, int to) { - nixio_sock *sock = nixio__checksock(L); - struct sockaddr_storage addr_in; -#ifndef __WINNT__ - struct sockaddr_un addr_un; -#endif - struct sockaddr *addr = NULL; - socklen_t alen = 0; - int argoff = 2; - - if (to) { - argoff += 2; - if (sock->domain == AF_INET || sock->domain == AF_INET6) { - const char *address = luaL_checkstring(L, 3); - addr = (struct sockaddr*)&addr_in; - alen = sizeof(addr_in); - - nixio_addr naddr; - memset(&naddr, 0, sizeof(naddr)); - strncpy(naddr.host, address, sizeof(naddr.host) - 1); - naddr.port = (uint16_t)luaL_checkinteger(L, 4); - naddr.family = sock->domain; - - if (nixio__addr_write(&naddr, addr)) { - return nixio__perror_s(L); - } - } - -#ifndef __WINNT__ - else if (sock->domain == AF_UNIX) { - size_t pathlen; - const char *path = luaL_checklstring(L, 3, &pathlen); - - addr_un.sun_family = AF_UNIX; - luaL_argcheck(L, pathlen <= sizeof(addr_un.sun_path), 3, "out of range"); - memcpy(addr_un.sun_path, path, pathlen); - - addr = (struct sockaddr*)&addr_un; - alen = sizeof(sa_family_t) + pathlen; - } -#endif - } - - size_t len; - ssize_t sent; - const char *data = luaL_checklstring(L, 2, &len); - - if (lua_gettop(L) > argoff) { - int offset = luaL_optint(L, argoff + 1, 0); - if (offset) { - if (offset < len) { - data += offset; - len -= offset; - } else { - len = 0; - } - } - - unsigned int wlen = luaL_optint(L, argoff + 2, len); - if (wlen < len) { - len = wlen; - } - } - - do { - sent = sendto(sock->fd, data, len, 0, addr, alen); - } while(sent == -1 && errno == EINTR); - if (sent >= 0) { - lua_pushinteger(L, sent); - return 1; - } else { - return nixio__perror_s(L); - } -} - -/** - * send(data) - */ -static int nixio_sock_send(lua_State *L) { - return nixio_sock__sendto(L, 0); -} - -/** - * sendto(data, address, port) - */ -static int nixio_sock_sendto(lua_State *L) { - return nixio_sock__sendto(L, 1); -} - - -/** - * recv() / recvfrom() helper - */ -static int nixio_sock__recvfrom(lua_State *L, int from) { - nixio_sock *sock = nixio__checksock(L); - char buffer[NIXIO_BUFFERSIZE]; - struct sockaddr_storage addr_in; -#ifndef __WINNT__ - struct sockaddr_un addr_un; -#endif - struct sockaddr *addr = NULL; - socklen_t alen = 0; - uint req = luaL_checkinteger(L, 2); - int readc; - - if (sock->domain == AF_INET || sock->domain == AF_INET6) { - addr = (from) ? (struct sockaddr*)&addr_in : NULL; - alen = (from) ? sizeof(addr_in) : 0; - } -#ifndef __WINNT__ - else if (sock->domain == AF_UNIX) { - addr = (from) ? (struct sockaddr*)&addr_un : NULL; - alen = (from) ? sizeof(addr_un) : 0; - } -#endif - - /* We limit the readsize to NIXIO_BUFFERSIZE */ - req = (req > NIXIO_BUFFERSIZE) ? NIXIO_BUFFERSIZE : req; - - do { - readc = recvfrom(sock->fd, buffer, req, 0, addr, &alen); - } while (readc == -1 && errno == EINTR); - -#ifdef __WINNT__ - if (readc < 0) { - int e = WSAGetLastError(); - if (e == WSAECONNRESET || e == WSAECONNABORTED || e == WSAESHUTDOWN) { - readc = 0; - } - } -#endif - - if (readc < 0) { - return nixio__perror_s(L); - } else { - lua_pushlstring(L, buffer, readc); - - if (!from) { - return 1; - } - /* push address. */ - if (sock->domain == AF_INET || sock->domain == AF_INET6) { - nixio_addr naddr; - if (!nixio__addr_parse(&naddr, (struct sockaddr *)&addr_in)) { - lua_pushstring(L, naddr.host); - lua_pushinteger(L, naddr.port); - return 3; - } else { - return 1; - } - } -#ifndef __WINNT__ - else if (sock->domain == AF_UNIX && alen > sizeof(sa_family_t)) { - /* if first char is non-null then the path is not in the - abstract namespace and alen includes the trailing null */ - if (addr_un.sun_path[0]) - --alen; - lua_pushlstring(L, addr_un.sun_path, alen - sizeof(sa_family_t)); - return 2; - } -#endif - } - return 1; -} - -/** - * recv(count) - */ -static int nixio_sock_recv(lua_State *L) { - return nixio_sock__recvfrom(L, 0); -} - -/** - * recvfrom(count) - */ -static int nixio_sock_recvfrom(lua_State *L) { - return nixio_sock__recvfrom(L, 1); -} - - -/* module table */ -static const luaL_reg M[] = { - {"send", nixio_sock_send}, - {"sendto", nixio_sock_sendto}, - {"recv", nixio_sock_recv}, - {"recvfrom",nixio_sock_recvfrom}, - {"write", nixio_sock_send}, - {"read", nixio_sock_recv}, - {NULL, NULL} -}; - -void nixio_open_io(lua_State *L) { - lua_pushvalue(L, -2); - luaL_register(L, NULL, M); - lua_pop(L, 1); -} diff --git a/package/luci/libs/luci-lib-nixio/src/mingw-compat.c b/package/luci/libs/luci-lib-nixio/src/mingw-compat.c deleted file mode 100644 index 02be504a13..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/mingw-compat.c +++ /dev/null @@ -1,220 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include -#include -#include - -void nixio_open__mingw(lua_State *L) { - _fmode = _O_BINARY; - - WSADATA wsa; - - if (WSAStartup(MAKEWORD(2, 2), &wsa)) { - luaL_error(L, "Unable to initialize Winsock"); - } - - lua_newtable(L); - - NIXIO_WSA_CONSTANT(WSAEACCES); - NIXIO_WSA_CONSTANT(WSAEINTR); - NIXIO_WSA_CONSTANT(WSAEINVAL); - NIXIO_WSA_CONSTANT(WSAEBADF); - NIXIO_WSA_CONSTANT(WSAEFAULT); - NIXIO_WSA_CONSTANT(WSAEMFILE); - NIXIO_WSA_CONSTANT(WSAENAMETOOLONG); - NIXIO_WSA_CONSTANT(WSAELOOP); - NIXIO_WSA_CONSTANT(WSAEAFNOSUPPORT); - NIXIO_WSA_CONSTANT(WSAENOBUFS); - NIXIO_WSA_CONSTANT(WSAEPROTONOSUPPORT); - NIXIO_WSA_CONSTANT(WSAENOPROTOOPT); - NIXIO_WSA_CONSTANT(WSAEADDRINUSE); - NIXIO_WSA_CONSTANT(WSAENETDOWN); - NIXIO_WSA_CONSTANT(WSAENETUNREACH); - NIXIO_WSA_CONSTANT(WSAECONNABORTED); - NIXIO_WSA_CONSTANT(WSAECONNRESET); - - lua_setfield(L, -2, "const_sock"); -} - -const char* nixio__mgw_inet_ntop -(int af, const void *src, char *dst, socklen_t size) { - struct sockaddr_storage saddr; - memset(&saddr, 0, sizeof(saddr)); - - DWORD hostlen = size, sl; - if (af == AF_INET) { - struct sockaddr_in *saddr4 = (struct sockaddr_in *)&saddr; - memcpy(&saddr4->sin_addr, src, sizeof(saddr4->sin_addr)); - saddr4->sin_family = AF_INET; - saddr4->sin_port = 0; - sl = sizeof(struct sockaddr_in); - } else if (af == AF_INET6) { - struct sockaddr_in6 *saddr6 = (struct sockaddr_in6 *)&saddr; - memcpy(&saddr6->sin6_addr, src, sizeof(saddr6->sin6_addr)); - saddr6->sin6_family = AF_INET6; - saddr6->sin6_port = 0; - sl = sizeof(struct sockaddr_in6); - } else { - return NULL; - } - if (WSAAddressToString((struct sockaddr*)&saddr, sl, NULL, dst, &hostlen)) { - return NULL; - } - return dst; -} - -int nixio__mgw_inet_pton (int af, const char *src, void *dst) { - struct sockaddr_storage sa; - int sl = sizeof(sa); - - if (!WSAStringToAddress((char*)src, af, NULL, (struct sockaddr*)&sa, &sl)) { - if (af == AF_INET) { - struct in_addr ina = ((struct sockaddr_in *)&sa)->sin_addr; - memcpy(dst, &ina, sizeof(ina)); - return 1; - } else if (af == AF_INET6) { - struct in_addr6 ina6 = ((struct sockaddr_in6 *)&sa)->sin6_addr; - memcpy(dst, &ina6, sizeof(ina6)); - return 1; - } else { - WSASetLastError(WSAEAFNOSUPPORT); - return -1; - } - } else { - return -1; - } -} - -int nixio__mgw_nanosleep(const struct timespec *req, struct timespec *rem) { - if (rem) { - rem->tv_sec = 0; - rem->tv_nsec = 0; - } - Sleep(req->tv_sec * 1000 + req->tv_nsec * 1000000); - return 0; -} - -int nixio__mgw_poll(struct pollfd *fds, int nfds, int timeout) { - if (!fds || !nfds) { - Sleep(timeout); - return 0; - } - - struct timeval tv; - int high = 0, rf = 0, wf = 0, ef = 0; - fd_set rfds, wfds, efds; - FD_ZERO(&rfds); - FD_ZERO(&wfds); - FD_ZERO(&efds); - - tv.tv_sec = timeout / 1000; - tv.tv_usec = (timeout % 1000) * 1000; - - for (int i = 0; i < nfds; i++) { - if (fds->events & POLLIN) { - FD_SET(fds->fd, &rfds); - rf++; - } - if (fds->events & POLLOUT) { - FD_SET(fds->fd, &wfds); - wf++; - } - if (fds->events & POLLERR) { - FD_SET(fds->fd, &efds); - ef++; - } - if (fds->fd > high) { - high = fds->fd; - } - } - - int stat = select(high + 1, (rf) ? &rfds : NULL, - (wf) ? &wfds : NULL, (ef) ? &efds : NULL, &tv); - if (stat < 1) { - errno = WSAGetLastError(); - return stat; - } - - high = 0; - - for (int i = 0; i < nfds; i++) { - fds->revents = 0; - if ((fds->events & POLLIN) && FD_ISSET(fds->fd, &rfds)) { - fds->revents |= POLLIN; - } - if ((fds->events & POLLOUT) && FD_ISSET(fds->fd, &wfds)) { - fds->revents |= POLLOUT; - } - if ((fds->events & POLLERR) && FD_ISSET(fds->fd, &efds)) { - fds->revents |= POLLERR; - } - if (fds->revents) { - high++; - } - } - - return high; -} - -int nixio__mgw_lockf(int fd, int cmd, off_t len) { - int stat; - if (cmd == F_LOCK) { - do { - stat = _locking(fd, _LK_LOCK, len); - } while (stat == -1 && errno == EDEADLOCK); - } else if (cmd == F_TLOCK) { - stat = _locking(fd, _LK_NBLCK, len); - } else if (cmd == F_ULOCK) { - stat = _locking(fd, _LK_UNLCK, len); - } else { - stat = -1; - errno = EINVAL; - } - return stat; -} - -char* nixio__mgw_realpath(const char *path, char *resolved) { - if (GetFullPathName(path, PATH_MAX, resolved, NULL)) { - return resolved; - } else { - errno = GetLastError(); - return NULL; - } -} - -int nixio__mgw_link(const char *oldpath, const char *newpath) { - if (!CreateHardLink(newpath, oldpath, NULL)) { - errno = GetLastError(); - return -1; - } else { - return 0; - } -} - -int nixio__mgw_utimes(const char *filename, const struct timeval times[2]) { - struct _utimbuf timebuffer; - timebuffer.actime = times[0].tv_sec; - timebuffer.modtime = times[1].tv_sec; - - return _utime(filename, &timebuffer); -} diff --git a/package/luci/libs/luci-lib-nixio/src/mingw-compat.h b/package/luci/libs/luci-lib-nixio/src/mingw-compat.h deleted file mode 100644 index a26a4beecf..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/mingw-compat.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef NIXIO_MINGW_COMPAT_H_ -#define NIXIO_MINGW_COMPAT_H_ - -#include -#include -#include -#include -#include -#include -#include - -typedef unsigned int uint; -typedef unsigned long ulong; - -#define S_ISLNK(m) 0 -#define S_ISSOCK(m) 0 - -#define EWOULDBLOCK WSAEWOULDBLOCK -#define EAFNOSUPPORT WSAEAFNOSUPPORT -#define ENOPROTOOPT WSAENOPROTOOPT - -#define SHUT_RD SD_RECEIVE -#define SHUT_WR SD_SEND -#define SHUT_RDWR SD_BOTH - -#define pipe(fds) _pipe(fds, 65536, 0) -#define fsync _commit -#define lseek lseek64 -#define stat _stati64 -#define lstat _stati64 -#define fstat _fstati64 - - -#define F_LOCK 1 -#define F_ULOCK 0 -#define F_TLOCK 2 -#define F_TEST 3 -int nixio__mgw_lockf(int fd, int cmd, off_t len); -#define lockf nixio__mgw_lockf - -const char* nixio__mgw_inet_ntop -(int af, const void *src, char *dst, socklen_t size); -#define inet_ntop nixio__mgw_inet_ntop - -int nixio__mgw_inet_pton (int af, const char *src, void *dst); -#define inet_pton nixio__mgw_inet_pton - - -#ifndef POLLIN -#define POLLIN 0x001 -#define POLLOUT 0x004 -#define POLLERR 0x008 -struct pollfd { - int fd; - short events; - short revents; -}; -#endif - -typedef int nfds_t; -int nixio__mgw_poll(struct pollfd *fds, nfds_t nfds, int timeout); -#define poll nixio__mgw_poll - - -struct timespec { - time_t tv_sec; - long tv_nsec; -}; - -int nixio__mgw_nanosleep(const struct timespec *req, struct timespec *rem); -#define nanosleep nixio__mgw_nanosleep - - -char* nixio__mgw_realpath(const char *path, char *resolved); -#define realpath nixio__mgw_realpath - - -int nixio__mgw_link(const char *oldpath, const char *newpath); -#define link nixio__mgw_link - - -int nixio__mgw_utimes(const char *filename, const struct timeval times[2]); -#define utimes nixio__mgw_utimes - - -#define setenv(k, v, o) !SetEnvironmentVariable(k, v) -#define unsetenv(k) !SetEnvironmentVariable(k, NULL) - -#define execv(p, a) execv(p, (const char* const*)a) -#define execvp(p, a) execvp(p, (const char* const*)a) -#define execve(p, a, e) execve(p, (const char* const*)a, (const char* const*)e) - -#define mkdir(p, m) mkdir(p) - - -#define nixio__perror_s(L) \ - errno = WSAGetLastError(); \ - return nixio__perror(L); - -#define nixio__pstatus_s(L, c) \ - errno = WSAGetLastError(); \ - return nixio__pstatus(L, c); - - - -#define NIXIO_WSA_CONSTANT(x) \ - lua_pushinteger(L, x); \ - lua_setfield(L, -2, #x+3); - -void nixio_open__mingw(lua_State *L); - -#endif /* NIXIO_MINGW_COMPAT_H_ */ diff --git a/package/luci/libs/luci-lib-nixio/src/nixio-tls.h b/package/luci/libs/luci-lib-nixio/src/nixio-tls.h deleted file mode 100644 index 0fac5a980d..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/nixio-tls.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef NIXIO_TLS_H_ -#define NIXIO_TLS_H_ - -#include "nixio.h" -#include - -#ifndef WITHOUT_OPENSSL -#include -#include -#include -#endif - -#define NIXIO_TLS_CTX_META "nixio.tls.ctx" -#define NIXIO_TLS_SOCK_META "nixio.tls.sock" - -typedef struct nixio_tls_socket { - SSL *socket; -#ifdef WITH_AXTLS - char connected; - size_t pbufsiz; - char *pbufpos; - char *pbuffer; -#endif -} nixio_tls_sock; - -#define NIXIO_CRYPTO_HASH_META "nixio.crypto.hash" -#define NIXIO_DIGEST_SIZE 64 -#define NIXIO_CRYPTO_BLOCK_SIZE 64 - -#define NIXIO_HASH_NONE 0 -#define NIXIO_HASH_MD5 0x01 -#define NIXIO_HASH_SHA1 0x02 - -#define NIXIO_HMAC_BIT 0x40 - -typedef int(*nixio_hash_initcb)(void *); -typedef int(*nixio_hash_updatecb)(void *, const void *, unsigned long); -typedef int(*nixio_hash_finalcb)(unsigned char *, void *); - -typedef struct nixio_hash_obj { - uint type; - unsigned char digest[NIXIO_DIGEST_SIZE]; - size_t digest_size; - unsigned char key[NIXIO_CRYPTO_BLOCK_SIZE]; - size_t key_size; - size_t block_size; - void *ctx; - nixio_hash_initcb init; - nixio_hash_updatecb update; - nixio_hash_finalcb final; -} nixio_hash; - -#endif /* NIXIO_TLS_H_ */ diff --git a/package/luci/libs/luci-lib-nixio/src/nixio.c b/package/luci/libs/luci-lib-nixio/src/nixio.c deleted file mode 100644 index ae81c6f964..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/nixio.c +++ /dev/null @@ -1,240 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include - -#define VERSION 0.4 - - -/* pushes nil, error number and errstring on the stack */ -int nixio__perror(lua_State *L) { - if (errno == EAGAIN || errno == EWOULDBLOCK) { - lua_pushboolean(L, 0); - } else { - lua_pushnil(L); - } - lua_pushinteger(L, errno); - lua_pushstring(L, strerror(errno)); - return 3; -} - -/* pushes true, if operation succeeded, otherwise call nixio__perror */ -int nixio__pstatus(lua_State *L, int condition) { - if (condition) { - lua_pushboolean(L, 1); - return 1; - } else { - return nixio__perror(L); - } -} - -/* checks whether the first argument is a socket and returns it */ -nixio_sock* nixio__checksock(lua_State *L) { - nixio_sock *sock = (nixio_sock*)luaL_checkudata(L, 1, NIXIO_META); - luaL_argcheck(L, sock->fd != -1, 1, "invalid socket object"); - return sock; -} - -/* read fd from nixio_sock object */ -int nixio__checksockfd(lua_State *L) { - return nixio__checksock(L)->fd; -} - -/* return any possible fd, otherwise error out */ -int nixio__checkfd(lua_State *L, int ud) { - int fd = nixio__tofd(L, ud); - return (fd != -1) ? fd : luaL_argerror(L, ud, "invalid file descriptor"); -} - -/* return any possible fd */ -int nixio__tofd(lua_State *L, int ud) { - void *udata = lua_touserdata(L, ud); - int fd = -1; - if (lua_getmetatable(L, ud)) { - luaL_getmetatable(L, NIXIO_META); - luaL_getmetatable(L, NIXIO_FILE_META); - luaL_getmetatable(L, LUA_FILEHANDLE); - if (lua_rawequal(L, -3, -4)) { - fd = ((nixio_sock*)udata)->fd; - } else if (lua_rawequal(L, -2, -4)) { - fd = *((int*)udata); - } else if (lua_rawequal(L, -1, -4)) { - fd = (*((FILE **)udata)) ? fileno(*((FILE **)udata)) : -1; - } - lua_pop(L, 4); - } - return fd; -} - -/* An empty iterator */ -int nixio__nulliter(lua_State *L) { - lua_pushnil(L); - return 1; -} - -static int nixio_errno(lua_State *L) { - lua_pushinteger(L, errno); - return 1; -} - -static int nixio_strerror(lua_State *L) { - lua_pushstring(L, strerror(luaL_checkinteger(L, 1))); - return 1; -} - -/* object table */ -static const luaL_reg R[] = { - {"errno", nixio_errno}, - {"strerror", nixio_strerror}, - {NULL, NULL} -}; - -/* entry point */ -NIXIO_API int luaopen_nixio(lua_State *L) { - /* create metatable */ - luaL_newmetatable(L, NIXIO_META); - - /* metatable.__index = metatable */ - lua_pushvalue(L, -1); - lua_setfield(L, -2, "__index"); - - /* register module */ - luaL_register(L, "nixio", R); - - /* register metatable as socket_meta */ - lua_pushvalue(L, -2); - lua_setfield(L, -2, "meta_socket"); - - /* register methods */ -#ifdef __WINNT__ - nixio_open__mingw(L); -#endif - nixio_open_file(L); - nixio_open_socket(L); - nixio_open_sockopt(L); - nixio_open_bind(L); - nixio_open_address(L); - nixio_open_protoent(L); - nixio_open_poll(L); - nixio_open_io(L); - nixio_open_splice(L); - nixio_open_process(L); - nixio_open_syslog(L); - nixio_open_bit(L); - nixio_open_bin(L); - nixio_open_fs(L); - nixio_open_user(L); - -#ifndef NO_TLS - nixio_open_tls_crypto(L); - nixio_open_tls_context(L); - nixio_open_tls_socket(L); -#endif - - /* module version */ - lua_pushinteger(L, VERSION); - lua_setfield(L, -2, "version"); - - /* some constants */ - lua_newtable(L); - - lua_pushliteral(L, NIXIO_SEP); - lua_setfield(L, -2, "sep"); - - lua_pushliteral(L, NIXIO_PATHSEP); - lua_setfield(L, -2, "pathsep"); - - lua_pushinteger(L, NIXIO_BUFFERSIZE); - lua_setfield(L, -2, "buffersize"); - - NIXIO_PUSH_CONSTANT(EACCES); - NIXIO_PUSH_CONSTANT(EINTR); - NIXIO_PUSH_CONSTANT(ENOSYS); - NIXIO_PUSH_CONSTANT(EINVAL); - NIXIO_PUSH_CONSTANT(EAGAIN); - NIXIO_PUSH_CONSTANT(ENOMEM); - NIXIO_PUSH_CONSTANT(ENOENT); - NIXIO_PUSH_CONSTANT(ECHILD); - NIXIO_PUSH_CONSTANT(EIO); - NIXIO_PUSH_CONSTANT(EBADF); - NIXIO_PUSH_CONSTANT(EFAULT); - NIXIO_PUSH_CONSTANT(EFBIG); - NIXIO_PUSH_CONSTANT(ENOSPC); - NIXIO_PUSH_CONSTANT(EPIPE); - NIXIO_PUSH_CONSTANT(ESPIPE); - NIXIO_PUSH_CONSTANT(EISDIR); - NIXIO_PUSH_CONSTANT(EPERM); - NIXIO_PUSH_CONSTANT(EEXIST); - NIXIO_PUSH_CONSTANT(EMFILE); - NIXIO_PUSH_CONSTANT(ENAMETOOLONG); - NIXIO_PUSH_CONSTANT(ENFILE); - NIXIO_PUSH_CONSTANT(ENODEV); - NIXIO_PUSH_CONSTANT(EXDEV); - NIXIO_PUSH_CONSTANT(ENOTDIR); - NIXIO_PUSH_CONSTANT(ENXIO); - NIXIO_PUSH_CONSTANT(EROFS); - NIXIO_PUSH_CONSTANT(EBUSY); - NIXIO_PUSH_CONSTANT(ESRCH); - NIXIO_PUSH_CONSTANT(SIGINT); - NIXIO_PUSH_CONSTANT(SIGTERM); - NIXIO_PUSH_CONSTANT(SIGSEGV); - -#ifndef __WINNT__ - NIXIO_PUSH_CONSTANT(EALREADY); - NIXIO_PUSH_CONSTANT(EINPROGRESS); - NIXIO_PUSH_CONSTANT(EWOULDBLOCK); - NIXIO_PUSH_CONSTANT(ELOOP); - NIXIO_PUSH_CONSTANT(EOVERFLOW); - NIXIO_PUSH_CONSTANT(ETXTBSY); - NIXIO_PUSH_CONSTANT(EAFNOSUPPORT); - NIXIO_PUSH_CONSTANT(ENOBUFS); - NIXIO_PUSH_CONSTANT(EPROTONOSUPPORT); - NIXIO_PUSH_CONSTANT(ENOPROTOOPT); - NIXIO_PUSH_CONSTANT(EADDRINUSE); - NIXIO_PUSH_CONSTANT(ENETDOWN); - NIXIO_PUSH_CONSTANT(ENETUNREACH); - - NIXIO_PUSH_CONSTANT(SIGALRM); - NIXIO_PUSH_CONSTANT(SIGKILL); - NIXIO_PUSH_CONSTANT(SIGHUP); - NIXIO_PUSH_CONSTANT(SIGSTOP); - NIXIO_PUSH_CONSTANT(SIGCONT); - NIXIO_PUSH_CONSTANT(SIGCHLD); - NIXIO_PUSH_CONSTANT(SIGQUIT); - NIXIO_PUSH_CONSTANT(SIGUSR1); - NIXIO_PUSH_CONSTANT(SIGUSR2); - NIXIO_PUSH_CONSTANT(SIGIO); - NIXIO_PUSH_CONSTANT(SIGURG); - NIXIO_PUSH_CONSTANT(SIGPIPE); - - lua_pushvalue(L, -1); - lua_setfield(L, -3, "const_sock"); - - signal(SIGPIPE, SIG_IGN); -#endif /* !__WINNT__ */ - lua_setfield(L, -2, "const"); - - /* remove meta table */ - lua_remove(L, -2); - - return 1; -} diff --git a/package/luci/libs/luci-lib-nixio/src/nixio.h b/package/luci/libs/luci-lib-nixio/src/nixio.h deleted file mode 100644 index 8802e92043..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/nixio.h +++ /dev/null @@ -1,133 +0,0 @@ -#ifndef NIXIO_H_ -#define NIXIO_H_ - -#define NIXIO_OOM "out of memory" - -#define NIXIO_META "nixio.socket" -#define NIXIO_FILE_META "nixio.file" -#define NIXIO_GLOB_META "nixio.glob" -#define NIXIO_DIR_META "nixio.dir" -#define _FILE_OFFSET_BITS 64 - -#define NIXIO_PUSH_CONSTANT(x) \ - lua_pushinteger(L, x); \ - lua_setfield(L, -2, #x); - -/* uClibc: broken as always */ -#define _LARGEFILE_SOURCE - -#include -#include -#include -#include - -#define NIXIO_BUFFERSIZE 8192 - -typedef struct nixio_socket { - int fd; - int domain; - int type; - int protocol; -} nixio_sock; - -typedef struct nixio_address { - int family; - char host[128]; - int port; - int prefix; -} nixio_addr; - -int nixio__perror(lua_State *L); -int nixio__pstatus(lua_State *L, int condition); - -#if defined(LUA_NUMBER_DOUBLE) || defined(LNUM_DOUBLE) || defined(LNUM_LDOUBLE) -#define NIXIO_DOUBLE 1 -#define nixio__checknumber luaL_checknumber -#define nixio__pushnumber lua_pushnumber -#define nixio__optnumber luaL_optnumber -#else -#define nixio__checknumber luaL_checkinteger -#define nixio__pushnumber lua_pushinteger -#define nixio__optnumber luaL_optinteger -#endif - - -#ifndef __WINNT__ - -#define NIXIO_API extern - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define NIXIO_SEP "/" -#define NIXIO_PATHSEP ":" - -#define nixio__perror_s nixio__perror -#define nixio__pstatus_s nixio__pstatus - -int nixio__check_group(lua_State *L, int idx); -int nixio__check_user(lua_State *L, int idx); - -typedef struct stat nixio_stat_t; - -#else /* __WINNT__ */ - -#define NIXIO_API extern __declspec(dllexport) -#define NIXIO_SEP "\\" -#define NIXIO_PATHSEP ";" -#include "mingw-compat.h" - -typedef struct _stati64 nixio_stat_t; - -#endif - -nixio_sock* nixio__checksock(lua_State *L); -int nixio__checksockfd(lua_State *L); -int nixio__checkfd(lua_State *L, int ud); -int nixio__tofd(lua_State *L, int ud); -int nixio__nulliter(lua_State *L); - -int nixio__addr_parse(nixio_addr *addr, struct sockaddr *saddr); -int nixio__addr_write(nixio_addr *addr, struct sockaddr *saddr); - -int nixio__check_mode(lua_State *L, int idx, int def); -int nixio__mode_write(int mode, char *modestr); - -int nixio__push_stat(lua_State *L, nixio_stat_t *buf); - -const char nixio__bin2hex[16]; - -/* Module functions */ -void nixio_open_file(lua_State *L); -void nixio_open_socket(lua_State *L); -void nixio_open_sockopt(lua_State *L); -void nixio_open_bind(lua_State *L); -void nixio_open_address(lua_State *L); -void nixio_open_protoent(lua_State *L); -void nixio_open_poll(lua_State *L); -void nixio_open_io(lua_State *L); -void nixio_open_splice(lua_State *L); -void nixio_open_process(lua_State *L); -void nixio_open_syslog(lua_State *L); -void nixio_open_bit(lua_State *L); -void nixio_open_bin(lua_State *L); -void nixio_open_fs(lua_State *L); -void nixio_open_user(lua_State *L); - -#ifndef NO_TLS -void nixio_open_tls_crypto(lua_State *L); -void nixio_open_tls_context(lua_State *L); -void nixio_open_tls_socket(lua_State *L); -#endif - -/* Method functions */ - -#endif /* NIXIO_H_ */ diff --git a/package/luci/libs/luci-lib-nixio/src/poll.c b/package/luci/libs/luci-lib-nixio/src/poll.c deleted file mode 100644 index 1211bc72ac..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/poll.c +++ /dev/null @@ -1,210 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include -#include - - -static int nixio_gettimeofday(lua_State *L) { - struct timeval tv; - gettimeofday(&tv, NULL); - nixio__pushnumber(L, tv.tv_sec); - nixio__pushnumber(L, tv.tv_usec); - return 2; -} - - -/** - * nanosleep() - */ -static int nixio_nanosleep(lua_State *L) { - struct timespec req, rem; - req.tv_sec = luaL_optint(L, 1, 0); - req.tv_nsec = luaL_optint(L, 2, 0); - - int status = nanosleep(&req, &rem); - if (!status) { - lua_pushboolean(L, 1); - return 1; - } else { - if (errno == EINTR) { - lua_pushboolean(L, 0); - lua_pushinteger(L, rem.tv_sec); - lua_pushinteger(L, rem.tv_nsec); - return 3; - } else { - return nixio__perror(L); - } - } -} - -/** - * Checks whether a flag is set in the bitmap and sets the matching table value - */ -static void nixio_poll_flags__r(lua_State *L, int *map, int f, const char *t) { - lua_pushstring(L, t); - if (*map & f) { - lua_pushboolean(L, 1); - } else { - lua_pushnil(L); - } - lua_rawset(L, -3); -} - -/** - * Translate integer to poll flags and vice versa - */ -static int nixio_poll_flags(lua_State *L) { - int flags; - if (lua_isnumber(L, 1)) { - flags = luaL_checkinteger(L, 1); - lua_newtable(L); - nixio_poll_flags__r(L, &flags, POLLIN, "in"); - nixio_poll_flags__r(L, &flags, POLLOUT, "out"); - nixio_poll_flags__r(L, &flags, POLLERR, "err"); -#ifndef __WINNT__ - nixio_poll_flags__r(L, &flags, POLLPRI, "pri"); - nixio_poll_flags__r(L, &flags, POLLHUP, "hup"); - nixio_poll_flags__r(L, &flags, POLLNVAL, "nval"); -#endif - } else { - flags = 0; - const int j = lua_gettop(L); - for (int i=1; i<=j; i++) { - const char *flag = luaL_checkstring(L, i); - if (!strcmp(flag, "in")) { - flags |= POLLIN; - } else if (!strcmp(flag, "out")) { - flags |= POLLOUT; - } else if (!strcmp(flag, "err")) { - flags |= POLLERR; - } else if (!strcmp(flag, "pri")) { -#ifndef __WINNT__ - flags |= POLLPRI; -#endif - } else if (!strcmp(flag, "hup")) { -#ifndef __WINNT__ - flags |= POLLHUP; -#endif - } else if (!strcmp(flag, "nval")) { -#ifndef __WINNT__ - flags |= POLLNVAL; -#endif - } else { - return luaL_argerror(L, i, - "supported values: in, pri, out, err, hup, nval"); - } - } - lua_pushinteger(L, flags); - } - return 1; -} - -/** - * poll({{fd = socket, events = FLAGS}, ...}, timeout) - */ -static int nixio_poll(lua_State *L) { - int len = lua_objlen(L, 1); - int i, fd; - int timeout = luaL_optint(L, 2, 0); - int status = -1; - - /* we are being abused as sleep() replacement... */ - if (lua_isnoneornil(L, 1) || len < 1) { - if (!poll(NULL, 0, timeout)) { - lua_pushinteger(L, 0); - return 1; - } else { - return nixio__perror(L); - } - } - - luaL_checktype(L, 1, LUA_TTABLE); - struct pollfd *fds = calloc(len, sizeof(struct pollfd)); - if (!fds) { - return luaL_error(L, NIXIO_OOM); - } - - for (i = 0; i < len; i++) { - lua_rawgeti(L, 1, i+1); - if (!lua_istable(L, -1)) { - free(fds); - return luaL_argerror(L, 1, "invalid datastructure"); - } - - lua_pushliteral(L, "fd"); - lua_rawget(L, -2); - fd = nixio__tofd(L, -1); - if (fd == -1) { - free(fds); - return luaL_argerror(L, 1, "invalid fd in datastructure"); - } - fds[i].fd = fd; - - lua_pushliteral(L, "events"); - lua_rawget(L, -3); - fds[i].events = (short)lua_tointeger(L, -1); - - lua_pop(L, 3); - } - - status = poll(fds, (nfds_t)len, timeout); - - if (status == 0) { - free(fds); - lua_pushboolean(L, 0); - return 1; - } else if (status < 0) { - free(fds); - return nixio__perror(L); - } - - for (i = 0; i < len; i++) { - lua_rawgeti(L, 1, i+1); - - lua_pushliteral(L, "revents"); - lua_pushinteger(L, fds[i].revents); - lua_rawset(L, -3); - - lua_pop(L, 1); - } - - free(fds); - - lua_pushinteger(L, status); - lua_pushvalue(L, 1); - - return 2; -} - -/* module table */ -static const luaL_reg R[] = { - {"gettimeofday", nixio_gettimeofday}, - {"nanosleep", nixio_nanosleep}, - {"poll", nixio_poll}, - {"poll_flags", nixio_poll_flags}, - {NULL, NULL} -}; - -void nixio_open_poll(lua_State *L) { - luaL_register(L, NULL, R); -} diff --git a/package/luci/libs/luci-lib-nixio/src/process.c b/package/luci/libs/luci-lib-nixio/src/process.c deleted file mode 100644 index 5ae9b829ea..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/process.c +++ /dev/null @@ -1,450 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include -#include -#include -#include - -#define NIXIO_EXECVE 0x01 -#define NIXIO_EXECV 0x02 -#define NIXIO_EXECVP 0x03 - -int nixio__exec(lua_State *L, int m) { - const char *path = luaL_checkstring(L, 1); - const char *arg; - int argn, i; - - if (m == NIXIO_EXECVE) { - luaL_checktype(L, 2, LUA_TTABLE); - argn = lua_objlen(L, 2) + 1; - } else { - argn = lua_gettop(L); - } - - char **args = lua_newuserdata(L, sizeof(char*) * (argn + 1)); - args[argn] = NULL; - args[0] = (char *)path; - - if (m == NIXIO_EXECVE) { - for (i = 1; i < argn; i++) { - lua_rawgeti(L, 2, i); - arg = lua_tostring(L, -1); - luaL_argcheck(L, arg, 2, "invalid argument"); - args[i] = (char *)arg; - } - - if (lua_isnoneornil(L, 3)) { - execv(path, args); - } else { - luaL_checktype(L, 3, LUA_TTABLE); - argn = 0; - lua_pushnil(L); - while (lua_next(L, 3)) { - if (!lua_checkstack(L, 1)) { - lua_settop(L, 0); - return luaL_error(L, "stack overflow"); - } - - if (lua_type(L, -2) != LUA_TSTRING || !lua_isstring(L, -1)) { - return luaL_argerror(L, 3, "invalid environment"); - } - - lua_pushfstring(L, "%s=%s", - lua_tostring(L, -2), lua_tostring(L, -1)); - - lua_insert(L, 5); - lua_pop(L, 1); - argn++; - } - - char **env = lua_newuserdata(L, sizeof(char*) * (argn + 1)); - env[argn] = NULL; - - for (i = 1; i <= argn; i++) { - env[i-1] = (char *)lua_tostring(L, -(i+1)); - } - - execve(path, args, env); - } - } else { - for (i = 2; i <= argn; i++) { - arg = luaL_checkstring(L, i); - args[i-1] = (char *)arg; - } - - if (m == NIXIO_EXECV) { - execv(path, args); - } else { - execvp(path, args); - } - } - - return nixio__perror(L); -} - -#ifndef __WINNT__ -#include -#include -#include -#include -#include - -static int nixio_fork(lua_State *L) { - pid_t pid = fork(); - if (pid == -1) { - return nixio__perror(L); - } else { - lua_pushinteger(L, pid); - return 1; - } -} - -static int nixio_kill(lua_State *L) { - return nixio__pstatus(L, !kill(luaL_checkint(L, 1), luaL_checkint(L, 2))); -} - -static int nixio_getppid(lua_State *L) { - lua_pushinteger(L, getppid()); - return 1; -} - -static int nixio_getuid(lua_State *L) { - lua_pushinteger(L, getuid()); - return 1; -} - -static int nixio_getgid(lua_State *L) { - lua_pushinteger(L, getgid()); - return 1; -} - -static int nixio_setgid(lua_State *L) { - return nixio__pstatus(L, !setgid(nixio__check_group(L, 1))); -} - -static int nixio_setuid(lua_State *L) { - return nixio__pstatus(L, !setuid(nixio__check_user(L, 1))); -} - -static int nixio_nice(lua_State *L) { - int nval = luaL_checkint(L, 1); - - errno = 0; - nval = nice(nval); - - if (nval == -1 && errno) { - return nixio__perror(L); - } else { - lua_pushinteger(L, nval); - return 1; - } -} - -static int nixio_setsid(lua_State *L) { - pid_t pid = setsid(); - - if (pid == -1) { - return nixio__perror(L); - } else { - lua_pushinteger(L, pid); - return 1; - } -} - -static int nixio_wait(lua_State *L) { - pid_t pidin = luaL_optinteger(L, 1, -1), pidout; - int options = 0, status; - - const int j = lua_gettop(L); - for (int i=2; i<=j; i++) { - const char *flag = luaL_checkstring(L, i); - if (!strcmp(flag, "nohang")) { - options |= WNOHANG; - } else if (!strcmp(flag, "untraced")) { - options |= WUNTRACED; - } else if (!strcmp(flag, "continued")) { - options |= WCONTINUED; - } else { - return luaL_argerror(L, i, - "supported values: nohang, untraced, continued"); - } - } - - do { - pidout = waitpid(pidin, &status, options); - } while (pidout == -1 && errno == EINTR); - - if (pidout == 0) { - lua_pushboolean(L, 0); - return 1; - } else if (pidout == -1) { - return nixio__perror(L); - } else { - lua_pushinteger(L, pidout); - } - - if (WIFEXITED(status)) { - lua_pushliteral(L, "exited"); - lua_pushinteger(L, WEXITSTATUS(status)); - } else if (WIFSIGNALED(status)) { - lua_pushliteral(L, "signaled"); - lua_pushinteger(L, WTERMSIG(status)); - } else if (WIFSTOPPED(status)) { - lua_pushliteral(L, "stopped"); - lua_pushinteger(L, WSTOPSIG(status)); - } else { - return 1; - } - - return 3; -} - -static int nixio_times(lua_State *L) { - struct tms buf; - if (times(&buf) == -1) { - return nixio__perror(L); - } else { - lua_createtable(L, 0, 4); - nixio__pushnumber(L, buf.tms_cstime); - lua_setfield(L, -2, "cstime"); - - nixio__pushnumber(L, buf.tms_cutime); - lua_setfield(L, -2, "cutime"); - - nixio__pushnumber(L, buf.tms_stime); - lua_setfield(L, -2, "stime"); - - nixio__pushnumber(L, buf.tms_utime); - lua_setfield(L, -2, "utime"); - - return 1; - } -} - -static int nixio_uname(lua_State *L) { - struct utsname buf; - if (uname(&buf)) { - return nixio__perror(L); - } - - lua_createtable(L, 0, 5); - - lua_pushstring(L, buf.machine); - lua_setfield(L, -2, "machine"); - - lua_pushstring(L, buf.version); - lua_setfield(L, -2, "version"); - - lua_pushstring(L, buf.release); - lua_setfield(L, -2, "release"); - - lua_pushstring(L, buf.nodename); - lua_setfield(L, -2, "nodename"); - - lua_pushstring(L, buf.sysname); - lua_setfield(L, -2, "sysname"); - - return 1; -} - -#endif /* !__WINNT__ */ - -static int nixio_chdir(lua_State *L) { - return nixio__pstatus(L, !chdir(luaL_checkstring(L, 1))); -} - -static int nixio_signal(lua_State *L) { - int sig = luaL_checkinteger(L, 1); - const char *val = luaL_checkstring(L, 2); - - if (!strcmp(val, "ign") || !strcmp(val, "ignore")) { - return nixio__pstatus(L, signal(sig, SIG_IGN) != SIG_ERR); - } else if (!strcmp(val, "dfl") || !strcmp(val, "default")) { - return nixio__pstatus(L, signal(sig, SIG_DFL) != SIG_ERR); - } else { - return luaL_argerror(L, 2, "supported values: ign, dfl"); - } -} - -static int nixio_getpid(lua_State *L) { - lua_pushinteger(L, getpid()); - return 1; -} - -static int nixio_getenv(lua_State *L) { - const char *key = luaL_optstring(L, 1, NULL); - if (key) { - const char *val = getenv(key); - if (val) { - lua_pushstring(L, val); - } else { - lua_pushnil(L); - } - } else { - lua_newtable(L); - extern char **environ; - for (char **c = environ; *c; c++) { - const char *delim = strchr(*c, '='); - if (!delim) { - return luaL_error(L, "invalid environment"); - } - lua_pushlstring(L, *c, delim-*c); - lua_pushstring(L, delim + 1); - lua_rawset(L, -3); - } - } - return 1; -} - -static int nixio_setenv(lua_State *L) { - const char *key = luaL_checkstring(L, 1); - const char *val = luaL_optstring(L, 2, NULL); - return nixio__pstatus(L, (val) ? !setenv(key, val, 1) : !unsetenv(key)); -} - -static int nixio_exec(lua_State *L) { - return nixio__exec(L, NIXIO_EXECV); -} - -static int nixio_execp(lua_State *L) { - return nixio__exec(L, NIXIO_EXECVP); -} - -static int nixio_exece(lua_State *L) { - return nixio__exec(L, NIXIO_EXECVE); -} - -static int nixio_getcwd(lua_State *L) { - char path[PATH_MAX]; - - if (getcwd(path, sizeof(path))) { - lua_pushstring(L, path); - return 1; - } else { - return nixio__perror(L); - } -} - -static int nixio_umask(lua_State *L) { - char mask[9]; - lua_pushinteger(L, - nixio__mode_write(umask(nixio__check_mode(L, 1, -1)), mask)); - lua_pushlstring(L, mask, 9); - return 2; -} - -#ifdef __linux__ - -#include - -static int nixio_sysinfo(lua_State *L) { - struct sysinfo info; - if (sysinfo(&info)) { - return nixio__perror(L); - } - - lua_createtable(L, 0, 12); - - nixio__pushnumber(L, info.bufferram); - lua_setfield(L, -2, "bufferram"); - - nixio__pushnumber(L, info.freehigh); - lua_setfield(L, -2, "freehigh"); - - nixio__pushnumber(L, info.freeram); - lua_setfield(L, -2, "freeram"); - - nixio__pushnumber(L, info.freeswap); - lua_setfield(L, -2, "freeswap"); - - lua_createtable(L, 0, 3); - for (int i=0; i<3; i++) { - lua_pushnumber(L, info.loads[i] / 65536.); - lua_rawseti(L, -2, i+1); - } - lua_setfield(L, -2, "loads"); - - lua_pushinteger(L, info.mem_unit); - lua_setfield(L, -2, "mem_unit"); - - lua_pushinteger(L, info.procs); - lua_setfield(L, -2, "procs"); - - nixio__pushnumber(L, info.sharedram); - lua_setfield(L, -2, "sharedram"); - - nixio__pushnumber(L, info.totalhigh); - lua_setfield(L, -2, "totalhigh"); - - nixio__pushnumber(L, info.totalram); - lua_setfield(L, -2, "totalram"); - - nixio__pushnumber(L, info.totalswap); - lua_setfield(L, -2, "totalswap"); - - lua_pushinteger(L, info.uptime); - lua_setfield(L, -2, "uptime"); - - return 1; -} - -#endif - - -/* module table */ -static const luaL_reg R[] = { -#ifdef __linux__ - {"sysinfo", nixio_sysinfo}, -#endif -#ifndef __WINNT__ - {"fork", nixio_fork}, - {"kill", nixio_kill}, - {"nice", nixio_nice}, - {"getppid", nixio_getppid}, - {"getuid", nixio_getuid}, - {"getgid", nixio_getgid}, - {"setuid", nixio_setuid}, - {"setgid", nixio_setgid}, - {"setsid", nixio_setsid}, - {"wait", nixio_wait}, - {"waitpid", nixio_wait}, - {"times", nixio_times}, - {"uname", nixio_uname}, -#endif - {"chdir", nixio_chdir}, - {"signal", nixio_signal}, - {"getpid", nixio_getpid}, - {"getenv", nixio_getenv}, - {"setenv", nixio_setenv}, - {"putenv", nixio_setenv}, - {"exec", nixio_exec}, - {"execp", nixio_execp}, - {"exece", nixio_exece}, - {"getcwd", nixio_getcwd}, - {"umask", nixio_umask}, - {NULL, NULL} -}; - -void nixio_open_process(lua_State *L) { - luaL_register(L, NULL, R); -} diff --git a/package/luci/libs/luci-lib-nixio/src/protoent.c b/package/luci/libs/luci-lib-nixio/src/protoent.c deleted file mode 100644 index bda68a5845..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/protoent.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2011 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" - -#ifndef __WINNT__ -#include -#endif - -/** - * protoent conversion helper - */ -static int nixio__pushprotoent(lua_State *L, struct protoent *e) { - int i; - if (e) { - lua_newtable(L); - - lua_pushstring(L, e->p_name); - lua_setfield(L, -2, "name"); - - lua_pushnumber(L, e->p_proto); - lua_setfield(L, -2, "proto"); - - lua_newtable(L); - for (i = 0; e->p_aliases[i]; i++) { - lua_pushstring(L, e->p_aliases[i]); - lua_rawseti(L, -2, i+1); - } - lua_setfield(L, -2, "aliases"); - return 1; - } else { - return 0; - } -} - -/** - * getprotobyname(name) - */ -static int nixio_getprotobyname(lua_State *L) { - const char *name = luaL_checkstring(L, 1); - struct protoent *res = getprotobyname(name); - return nixio__pushprotoent(L, res); -} - -/** - * getprotobynumber(proto) - */ -static int nixio_getprotobynumber(lua_State *L) { - int proto = luaL_checkinteger(L, 1); - struct protoent *res = getprotobynumber(proto); - return nixio__pushprotoent(L, res); -} - -/** - * getproto(name_or_proto) - */ -static int nixio_getproto(lua_State *L) { - int i = 1; - struct protoent *res; - if (lua_isnumber(L, 1)) { - return nixio_getprotobynumber(L); - } else if (lua_isstring(L, 1)) { - return nixio_getprotobyname(L); - } else if (lua_isnoneornil(L, 1)) { - setprotoent(1); - lua_newtable(L); - while ((res = getprotoent()) != NULL) { - nixio__pushprotoent(L, res); - lua_rawseti(L, -2, i++); - } - endprotoent(); - return 1; - } else { - return luaL_argerror(L, 1, "supported values: , "); - } -} - -/* module table */ -static const luaL_reg R[] = { - {"getprotobyname", nixio_getprotobyname}, - {"getprotobynumber", nixio_getprotobynumber}, - {"getproto", nixio_getproto}, - {NULL, NULL} -}; - -void nixio_open_protoent(lua_State *L) { - luaL_register(L, NULL, R); -} diff --git a/package/luci/libs/luci-lib-nixio/src/socket.c b/package/luci/libs/luci-lib-nixio/src/socket.c deleted file mode 100644 index 17c6afc790..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/socket.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include - - -/** - * create new socket - */ -static int nixio_socket(lua_State *L) { - const char *domain = luaL_optlstring(L, 1, "", NULL); - const char *type = luaL_optlstring(L, 2, "", NULL); - const char *proto = lua_tolstring(L, 3, NULL); - - nixio_sock *sock = lua_newuserdata(L, sizeof(nixio_sock)); - if (!sock) { - return luaL_error(L, "out of memory"); - } - - if (!strcmp(domain, "inet")) { - sock->domain = AF_INET; - } else if (!strcmp(domain, "inet6")) { - sock->domain = AF_INET6; - } else if (!strcmp(domain, "unix")) { - sock->domain = AF_UNIX; - /*} else if (!strcmp(domain, "packet")) { - sock->domain = AF_PACKET;*/ - } else { - return luaL_argerror(L, 1, - "supported values: inet, inet6, unix, packet" - ); - } - - if (!strcmp(type, "stream")) { - sock->type = SOCK_STREAM; - } else if (!strcmp(type, "dgram")) { - sock->type = SOCK_DGRAM; - } else if (!strcmp(type, "raw")) { - sock->type = SOCK_RAW; - } else { - return luaL_argerror(L, 2, "supported values: stream, dgram, raw"); - } - - if (!proto) { - sock->protocol = 0; - } else if (!strcmp(proto, "icmp")) { - sock->protocol = IPPROTO_ICMP; - } else if (!strcmp(proto, "icmpv6")) { - sock->protocol = IPPROTO_ICMPV6; - } else { - return luaL_argerror(L, 3, "supported values: [empty], icmp, icmpv6"); - } - - /* create userdata */ - luaL_getmetatable(L, NIXIO_META); - lua_setmetatable(L, -2); - - sock->fd = socket(sock->domain, sock->type, sock->protocol); - - if (sock->fd < 0) { - return nixio__perror_s(L); - } - - return 1; -} - -/** - * close a socket - */ -static int nixio_sock_close(lua_State *L) { - nixio_sock *sock = nixio__checksock(L); - int sockfd = sock->fd; - int res; - sock->fd = -1; - - do { -#ifndef __WINNT__ - res = close(sockfd); -#else - res = closesocket(sockfd); -#endif - } while (res == -1 && errno == EINTR); - - return nixio__pstatus_s(L, !res); -} - -/** - * garbage collector - */ -static int nixio_sock__gc(lua_State *L) { - nixio_sock *sock = (nixio_sock*)luaL_checkudata(L, 1, NIXIO_META); - int res; - if (sock && sock->fd != -1) { - do { -#ifndef __WINNT__ - res = close(sock->fd); -#else - res = closesocket(sock->fd); -#endif - } while (res == -1 && errno == EINTR); - } - return 0; -} - -/** - * string representation - */ -static int nixio_sock__tostring(lua_State *L) { - lua_pushfstring(L, "nixio socket %d", nixio__checksockfd(L)); - return 1; -} - -/** - * shutdown a socket - */ -static int nixio_sock_shutdown(lua_State *L) { - int sockfd = nixio__checksockfd(L); - const char *what = luaL_optlstring(L, 2, "rdwr", NULL); - int how; - - if (!strcmp(what, "rdwr") || !strcmp(what, "both")) { - how = SHUT_RDWR; - } else if (!strcmp(what, "rd") || !strcmp(what, "read")) { - how = SHUT_RD; - } else if (!strcmp(what, "wr") || !strcmp(what, "write")) { - how = SHUT_WR; - } else { - return luaL_argerror(L, 2, "supported values: both, read, write"); - } - - return nixio__pstatus_s(L, !shutdown(sockfd, how)); -} - -/* module table */ -static const luaL_reg R[] = { - {"socket", nixio_socket}, - {NULL, NULL} -}; - -/* object table */ -static const luaL_reg M[] = { - {"close", nixio_sock_close}, - {"shutdown", nixio_sock_shutdown}, - {"__gc", nixio_sock__gc}, - {"__tostring", nixio_sock__tostring}, - {NULL, NULL} -}; - -void nixio_open_socket(lua_State *L) { - luaL_register(L, NULL, R); - - lua_pushvalue(L, -2); - luaL_register(L, NULL, M); - lua_pop(L, 1); -} diff --git a/package/luci/libs/luci-lib-nixio/src/sockopt.c b/package/luci/libs/luci-lib-nixio/src/sockopt.c deleted file mode 100644 index cede884ce4..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/sockopt.c +++ /dev/null @@ -1,390 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" - -#ifndef __WINNT__ -#include -#endif - -#include -#include -#include -#include -#include - -#ifndef IPV6_ADD_MEMBERSHIP -#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP -#endif - -#ifndef IPV6_DROP_MEMBERSHIP -#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP -#endif - -static int nixio_sock_fileno(lua_State *L) { - lua_pushinteger(L, nixio__checkfd(L, 1)); - return 1; -} - -/** - * setblocking() - */ -static int nixio_sock_setblocking(lua_State *L) { - int fd = nixio__checkfd(L, 1); - luaL_checkany(L, 2); - int set = lua_toboolean(L, 2); - -#ifndef __WINNT__ - - int flags = fcntl(fd, F_GETFL); - - if (flags == -1) { - return nixio__perror(L); - } - - if (!set) { - flags |= O_NONBLOCK; - } else { - flags &= ~O_NONBLOCK; - } - - return nixio__pstatus(L, !fcntl(fd, F_SETFL, flags)); - -#else /* __WINNT__ */ - - lua_getmetatable(L, 1); - luaL_getmetatable(L, NIXIO_META); - if (lua_equal(L, -1, -2)) { /* Socket */ - unsigned long val = !set; - return nixio__pstatus_s(L, !ioctlsocket(fd, FIONBIO, &val)); - } else { /* File */ - WSASetLastError(WSAENOTSOCK); - return nixio__perror_s(L); - } - -#endif /* __WINNT__ */ -} - -static int nixio__gso_int(lua_State *L, int fd, int level, int opt, int set) { - int value; - socklen_t optlen = sizeof(value); - if (!set) { - if (!getsockopt(fd, level, opt, (char *)&value, &optlen)) { - lua_pushinteger(L, value); - return 1; - } - } else { - value = luaL_checkinteger(L, set); - if (!setsockopt(fd, level, opt, (char *)&value, optlen)) { - lua_pushboolean(L, 1); - return 1; - } - } - return nixio__perror_s(L); -} - -static int nixio__gso_ling(lua_State *L, int fd, int level, int opt, int set) { - struct linger value; - socklen_t optlen = sizeof(value); - if (!set) { - if (!getsockopt(fd, level, opt, (char *)&value, &optlen)) { - lua_pushinteger(L, value.l_onoff ? value.l_linger : 0); - return 1; - } - } else { - value.l_linger = luaL_checkinteger(L, set); - value.l_onoff = value.l_linger ? 1 : 0; - if (!setsockopt(fd, level, opt, (char *)&value, optlen)) { - lua_pushboolean(L, 1); - return 1; - } - } - return nixio__perror_s(L); -} - -static int nixio__gso_timev(lua_State *L, int fd, int level, int opt, int set) { - struct timeval value; - socklen_t optlen = sizeof(value); - if (!set) { - if (!getsockopt(fd, level, opt, (char *)&value, &optlen)) { - lua_pushinteger(L, value.tv_sec); - lua_pushinteger(L, value.tv_usec); - return 2; - } - } else { - value.tv_sec = luaL_checkinteger(L, set); - value.tv_usec = luaL_optinteger(L, set + 1, 0); - if (!setsockopt(fd, level, opt, (char *)&value, optlen)) { - lua_pushboolean(L, 1); - return 1; - } - } - return nixio__perror_s(L); -} - -#ifdef SO_BINDTODEVICE - -static int nixio__gso_b(lua_State *L, int fd, int level, int opt, int set) { - if (!set) { - socklen_t optlen = IFNAMSIZ; - char ifname[IFNAMSIZ]; - if (!getsockopt(fd, level, opt, (char *)ifname, &optlen)) { - lua_pushlstring(L, ifname, optlen); - return 1; - } - } else { - size_t valuelen; - const char *value = luaL_checklstring(L, set, &valuelen); - luaL_argcheck(L, valuelen <= IFNAMSIZ, set, "invalid interface name"); - if (!setsockopt(fd, level, opt, (char *)value, valuelen)) { - lua_pushboolean(L, 1); - return 1; - } - } - return nixio__perror_s(L); -} - -#endif /* SO_BINDTODEVICE */ - -static int nixio__gso_mreq4(lua_State *L, int fd, int level, int opt, int set) { - struct ip_mreq value; - socklen_t optlen = sizeof(value); - if (!set) { - char buf[INET_ADDRSTRLEN]; - if (!getsockopt(fd, level, opt, (char *)&value, &optlen)) { - if (!inet_ntop(AF_INET, &value.imr_multiaddr, buf, sizeof(buf))) { - return nixio__perror_s(L); - } - lua_pushstring(L, buf); - if (!inet_ntop(AF_INET, &value.imr_interface, buf, sizeof(buf))) { - return nixio__perror_s(L); - } - lua_pushstring(L, buf); - return 2; - } - } else { - const char *maddr = luaL_checkstring(L, set); - const char *iface = luaL_optstring(L, set + 1, "0.0.0.0"); - if (inet_pton(AF_INET, maddr, &value.imr_multiaddr) < 1) { - return nixio__perror_s(L); - } - if (inet_pton(AF_INET, iface, &value.imr_interface) < 1) { - return nixio__perror_s(L); - } - if (!setsockopt(fd, level, opt, (char *)&value, optlen)) { - lua_pushboolean(L, 1); - return 1; - } - } - return nixio__perror_s(L); -} - -static int nixio__gso_mreq6(lua_State *L, int fd, int level, int opt, int set) { - struct ipv6_mreq val; - socklen_t optlen = sizeof(val); - if (!set) { - char buf[INET_ADDRSTRLEN]; - if (!getsockopt(fd, level, opt, (char *)&val, &optlen)) { - if (!inet_ntop(AF_INET6, &val.ipv6mr_multiaddr, buf, sizeof(buf))) { - return nixio__perror_s(L); - } - lua_pushstring(L, buf); - lua_pushinteger(L, val.ipv6mr_interface); - return 2; - } - } else { - const char *maddr = luaL_checkstring(L, set); - if (inet_pton(AF_INET6, maddr, &val.ipv6mr_multiaddr) < 1) { - return nixio__perror_s(L); - } - val.ipv6mr_interface = luaL_optlong(L, set + 1, 0); - if (!setsockopt(fd, level, opt, (char *)&val, optlen)) { - lua_pushboolean(L, 1); - return 1; - } - } - return nixio__perror_s(L); -} - -/** - * get/setsockopt() helper - */ -static int nixio__getsetsockopt(lua_State *L, int set) { - nixio_sock *sock = nixio__checksock(L); - const char *level = luaL_optlstring(L, 2, "", NULL); - const char *option = luaL_optlstring(L, 3, "", NULL); - set = (set) ? 4 : 0; - - if (!strcmp(level, "socket")) { - if (!strcmp(option, "keepalive")) { - return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_KEEPALIVE, set); - } else if (!strcmp(option, "reuseaddr")) { - return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_REUSEADDR, set); - } else if (!strcmp(option, "rcvbuf")) { - return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_RCVBUF, set); - } else if (!strcmp(option, "sndbuf")) { - return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_SNDBUF, set); - } else if (!strcmp(option, "priority")) { -#ifdef SO_PRIORITY - return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_PRIORITY, set); -#else - return nixio__pstatus(L, !(errno = ENOPROTOOPT)); -#endif - } else if (!strcmp(option, "broadcast")) { - return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_BROADCAST, set); - } else if (!strcmp(option, "dontroute")) { - return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_DONTROUTE, set); - } else if (!strcmp(option, "error")) { - return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_ERROR, set); - } else if (!strcmp(option, "oobinline")) { - return nixio__gso_int(L, sock->fd, SOL_SOCKET, SO_OOBINLINE, set); - } else if (!strcmp(option, "linger")) { - return nixio__gso_ling(L, sock->fd, SOL_SOCKET, SO_LINGER, set); - } else if (!strcmp(option, "sndtimeo")) { - return nixio__gso_timev(L, sock->fd, SOL_SOCKET, SO_SNDTIMEO, set); - } else if (!strcmp(option, "rcvtimeo")) { - return nixio__gso_timev(L, sock->fd, SOL_SOCKET, SO_RCVTIMEO, set); - } else if (!strcmp(option, "bindtodevice")) { -#ifdef SO_BINDTODEVICE - return nixio__gso_b(L, sock->fd, SOL_SOCKET, SO_BINDTODEVICE, set); -#else - return nixio__pstatus(L, !(errno = ENOPROTOOPT)); -#endif - } else { - return luaL_argerror(L, 3, "supported values: keepalive, reuseaddr," - " sndbuf, rcvbuf, priority, broadcast, linger, sndtimeo, rcvtimeo," - " dontroute, bindtodevice, error, oobinline" - ); - } - } else if (!strcmp(level, "tcp")) { - if (!strcmp(option, "cork")) { -#ifdef TCP_CORK - return nixio__gso_int(L, sock->fd, IPPROTO_TCP, TCP_CORK, set); -#else - return nixio__pstatus(L, !(errno = ENOPROTOOPT)); -#endif - } else if (!strcmp(option, "nodelay")) { - return nixio__gso_int(L, sock->fd, IPPROTO_TCP, TCP_NODELAY, set); - } else { - return luaL_argerror(L, 3, "supported values: cork, nodelay"); - } - } else if (!strcmp(level, "ip")) { - if (!strcmp(option, "mtu")) { -#ifdef IP_MTU - return nixio__gso_int(L, sock->fd, IPPROTO_IP, IP_MTU, set); -#else - return nixio__pstatus(L, !(errno = ENOPROTOOPT)); -#endif - } else if (!strcmp(option, "hdrincl")) { - return nixio__gso_int(L, sock->fd, IPPROTO_IP, IP_HDRINCL, - set); - } else if (!strcmp(option, "multicast_loop")) { - return nixio__gso_int(L, sock->fd, IPPROTO_IP, IP_MULTICAST_LOOP, - set); - } else if (!strcmp(option, "multicast_ttl")) { - return nixio__gso_int(L, sock->fd, IPPROTO_IP, IP_MULTICAST_TTL, - set); - } else if (!strcmp(option, "multicast_if")) { - return nixio__gso_mreq4(L, sock->fd, IPPROTO_IP, IP_MULTICAST_IF, - set); - } else if (!strcmp(option, "add_membership")) { - return nixio__gso_mreq4(L, sock->fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, - set); - } else if (!strcmp(option, "drop_membership")) { - return nixio__gso_mreq4(L, sock->fd, IPPROTO_IP, IP_DROP_MEMBERSHIP, - set); - } else { - return luaL_argerror(L, 3, - "supported values: hdrincl, mtu, multicast_loop, " - "multicast_ttl, multicast_if, add_membership, drop_membership"); - } - } else if (!strcmp(level, "ipv6")) { - if (!strcmp(option, "mtu")) { -#ifdef IPV6_MTU - return nixio__gso_int(L, sock->fd, IPPROTO_IPV6, IPV6_MTU, set); -#else - return nixio__pstatus(L, !(errno = ENOPROTOOPT)); -#endif - } else if (!strcmp(option, "v6only")) { -#ifdef IPV6_V6ONLY - return nixio__gso_int(L, sock->fd, IPPROTO_IPV6, IPV6_V6ONLY, set); -#else - return nixio__pstatus(L, !(errno = ENOPROTOOPT)); -#endif - } else if (!strcmp(option, "multicast_loop")) { - return nixio__gso_int(L, sock->fd, IPPROTO_IPV6, - IPV6_MULTICAST_LOOP, set); - } else if (!strcmp(option, "multicast_hops")) { - return nixio__gso_int(L, sock->fd, IPPROTO_IPV6, - IPV6_MULTICAST_HOPS, set); - } else if (!strcmp(option, "multicast_if")) { - return nixio__gso_mreq6(L, sock->fd, IPPROTO_IPV6, - IPV6_MULTICAST_IF, set); - } else if (!strcmp(option, "add_membership")) { - return nixio__gso_mreq6(L, sock->fd, IPPROTO_IPV6, - IPV6_ADD_MEMBERSHIP, set); - } else if (!strcmp(option, "drop_membership")) { - return nixio__gso_mreq6(L, sock->fd, IPPROTO_IPV6, - IPV6_DROP_MEMBERSHIP, set); - } else { - return luaL_argerror(L, 3, - "supported values: v6only, mtu, multicast_loop, multicast_hops," - " multicast_if, add_membership, drop_membership"); - } - } else { - return luaL_argerror(L, 2, "supported values: socket, tcp, ip, ipv6"); - } -} - -/** - * getsockopt() - */ -static int nixio_sock_getsockopt(lua_State *L) { - return nixio__getsetsockopt(L, 0); -} - -/** - * setsockopt() - */ -static int nixio_sock_setsockopt(lua_State *L) { - return nixio__getsetsockopt(L, 1); -} - -/* module table */ -static const luaL_reg M[] = { - {"setblocking", nixio_sock_setblocking}, - {"getsockopt", nixio_sock_getsockopt}, - {"setsockopt", nixio_sock_setsockopt}, - {"getopt", nixio_sock_getsockopt}, - {"setopt", nixio_sock_setsockopt}, - {"fileno", nixio_sock_fileno}, - {NULL, NULL} -}; - -void nixio_open_sockopt(lua_State *L) { - lua_pushvalue(L, -2); - luaL_register(L, NULL, M); - lua_pop(L, 1); - - luaL_getmetatable(L, NIXIO_FILE_META); - lua_pushcfunction(L, nixio_sock_setblocking); - lua_setfield(L, -2, "setblocking"); - lua_pushcfunction(L, nixio_sock_fileno); - lua_setfield(L, -2, "fileno"); - lua_pop(L, 1); -} diff --git a/package/luci/libs/luci-lib-nixio/src/splice.c b/package/luci/libs/luci-lib-nixio/src/splice.c deleted file mode 100644 index db63ea9a89..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/splice.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifdef __linux__ -#define _GNU_SOURCE -#endif - -#include "nixio.h" -#include -#include -#include -#include -#include - - -#ifndef __WINNT__ - -#ifndef BSD -#include -#else -#include -#include -#include -#endif - -#ifdef _GNU_SOURCE -#ifdef SPLICE_F_MOVE - -/* guess what sucks... */ -#ifdef __UCLIBC__ -#include -#include - -ssize_t splice(int __fdin, __off64_t *__offin, int __fdout, - __off64_t *__offout, size_t __len, unsigned int __flags) { -#ifdef __NR_splice - return syscall(__NR_splice, __fdin, __offin, __fdout, __offout, __len, __flags); -#else - (void)__fdin; - (void)__offin; - (void)__fdout; - (void)__offout; - (void)__len; - (void)__flags; - errno = ENOSYS; - return -1; -#endif -} - -#undef SPLICE_F_MOVE -#undef SPLICE_F_NONBLOCK -#undef SPLICE_F_MORE - -#define SPLICE_F_MOVE 1 -#define SPLICE_F_NONBLOCK 2 -#define SPLICE_F_MORE 4 - -#endif /* __UCLIBC__ */ - -/** - * splice(fd_in, fd_out, length, flags) - */ -static int nixio_splice(lua_State *L) { - int fd_in = nixio__checkfd(L, 1); - int fd_out = nixio__checkfd(L, 2); - size_t len = luaL_checkinteger(L, 3); - int flags = luaL_optinteger(L, 4, 0); - long spliced; - - do { - spliced = splice(fd_in, NULL, fd_out, NULL, len, flags); - } while (spliced == -1 && errno == EINTR); - - if (spliced < 0) { - return nixio__perror(L); - } - - lua_pushinteger(L, spliced); - return 1; -} - -/** - * Translate splice flags to integer - */ -static int nixio_splice_flags(lua_State *L) { - const int j = lua_gettop(L); - int flags = 0; - for (int i=1; i<=j; i++) { - const char *flag = luaL_checkstring(L, i); - if (!strcmp(flag, "move")) { - flags |= SPLICE_F_MOVE; - } else if (!strcmp(flag, "nonblock")) { - flags |= SPLICE_F_NONBLOCK; - } else if (!strcmp(flag, "more")) { - flags |= SPLICE_F_MORE; - } else { - return luaL_argerror(L, i, "supported values: " - "move, nonblock, more"); - } - } - lua_pushinteger(L, flags); - - return 1; -} - -#endif /* SPLICE_F_MOVE */ -#endif /* _GNU_SOURCE */ - -/** - * sendfile(outfd, infd, length) - */ -static int nixio_sendfile(lua_State *L) { - int sock = nixio__checksockfd(L); - int infd = nixio__checkfd(L, 2); - size_t len = luaL_checkinteger(L, 3); - off_t spliced; - -#ifndef BSD - do { - spliced = sendfile(sock, infd, NULL, len); - } while (spliced == -1 && errno == EINTR); - - if (spliced == -1) { - return nixio__perror(L); - } -#else - int r; - const off_t offset = lseek(infd, 0, SEEK_CUR); - - do { -#ifdef __DARWIN__ - r = sendfile(infd, sock, offset, (off_t *)&len, NULL, 0); - spliced = r; -#else - r = sendfile(infd, sock, offset, len, NULL, &spliced, 0); -#endif - } while (r == -1 && errno == EINTR); - - if (r == -1) { - return nixio__perror(L); - } -#endif - - lua_pushinteger(L, spliced); - return 1; -} - -/* module table */ -static const luaL_reg R[] = { -#ifdef _GNU_SOURCE -#ifdef SPLICE_F_MOVE - {"splice", nixio_splice}, - {"splice_flags", nixio_splice_flags}, -#endif -#endif - {"sendfile", nixio_sendfile}, - {NULL, NULL} -}; - - -void nixio_open_splice(lua_State *L) { - luaL_register(L, NULL, R); -} - -#else /* __WINNT__ */ - -void nixio_open_splice(lua_State *L) { -} - -#endif /* !__WINNT__ */ diff --git a/package/luci/libs/luci-lib-nixio/src/syslog.c b/package/luci/libs/luci-lib-nixio/src/syslog.c deleted file mode 100644 index 89f1b1dda1..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/syslog.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include - -#ifndef __WINNT__ -#include - - -static int nixio_openlog(lua_State *L) { - int option = 0, facility = LOG_USER; - - const char *ident = luaL_optstring(L, 1, "nixio"); - const int j = lua_gettop(L); - for (int i=2; i<=j; i++) { - const char *flag = luaL_checkstring(L, i); - if (!strcmp(flag, "cons")) { - option |= LOG_CONS; - } else if (!strcmp(flag, "nowait")) { - option |= LOG_NOWAIT; - } else if (!strcmp(flag, "pid")) { - option |= LOG_PID; - } else if (!strcmp(flag, "perror")) { -#ifdef LOG_PERROR - option |= LOG_PERROR; -#endif - } else if (!strcmp(flag, "ndelay")) { - option |= LOG_NDELAY; - } else if (!strcmp(flag, "odelay")) { - option |= LOG_ODELAY; - } else { - return luaL_argerror(L, i, - "supported values: cons, nowait, pid, perror, ndelay, odelay"); - } - } - - openlog(ident, option, facility); - return 0; -} - -static int nixio_closelog(lua_State *L) { - closelog(); - return 0; -} - -static int nixio__syslogmask(lua_State *L, int dolog) { - int priority; - - const char *flag = luaL_checkstring(L, 1); - if (!strcmp(flag, "emerg")) { - priority = LOG_EMERG; - } else if (!strcmp(flag, "alert")) { - priority = LOG_ALERT; - } else if (!strcmp(flag, "crit")) { - priority = LOG_CRIT; - } else if (!strcmp(flag, "err")) { - priority = LOG_ERR; - } else if (!strcmp(flag, "warning")) { - priority = LOG_WARNING; - } else if (!strcmp(flag, "notice")) { - priority = LOG_NOTICE; - } else if (!strcmp(flag, "info")) { - priority = LOG_INFO; - } else if (!strcmp(flag, "debug")) { - priority = LOG_DEBUG; - } else { - return luaL_argerror(L, 1, "supported values: emerg, alert, crit, err, " - "warning, notice, info, debug"); - } - - if (dolog) { - const char *msg = luaL_checkstring(L, 2); - syslog(priority, "%s", msg); - } else { - setlogmask(LOG_UPTO(priority)); - } - return 0; -} - -static int nixio_setlogmask(lua_State *L) { - return nixio__syslogmask(L, 0); -} - -static int nixio_syslog(lua_State *L) { - return nixio__syslogmask(L, 1); -} - -/* module table */ -static const luaL_reg R[] = { - {"openlog", nixio_openlog}, - {"syslog", nixio_syslog}, - {"setlogmask", nixio_setlogmask}, - {"closelog", nixio_closelog}, - {NULL, NULL} -}; - -void nixio_open_syslog(lua_State *L) { - luaL_register(L, NULL, R); -} - -#else /* __WINNT__ */ - -void nixio_open_syslog(lua_State *L) { -} - -#endif /* __WINNT__ */ diff --git a/package/luci/libs/luci-lib-nixio/src/tls-context.c b/package/luci/libs/luci-lib-nixio/src/tls-context.c deleted file mode 100644 index e9a833f590..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/tls-context.c +++ /dev/null @@ -1,248 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio-tls.h" -#include - -static SSL_CTX* nixio__checktlsctx(lua_State *L) { - SSL_CTX **ctx = (SSL_CTX **)luaL_checkudata(L, 1, NIXIO_TLS_CTX_META); - luaL_argcheck(L, *ctx, 1, "invalid context"); - return *ctx; -} - -static int nixio__tls_perror(lua_State *L, int code) { - lua_pushnil(L); - lua_pushinteger(L, code); - return 2; -} - -static int nixio__tls_pstatus(lua_State *L, int code) { - if (code == 1) { - lua_pushboolean(L, 1); - return 1; - } else { - return nixio__tls_perror(L, code); - } -} - -static int nixio_tls_ctx(lua_State * L) { - const char *method = luaL_optlstring(L, 1, "client", NULL); - - luaL_getmetatable(L, NIXIO_TLS_CTX_META); - SSL_CTX **ctx = lua_newuserdata(L, sizeof(SSL_CTX *)); - if (!ctx) { - return luaL_error(L, "out of memory"); - } - - /* create userdata */ - lua_pushvalue(L, -2); - lua_setmetatable(L, -2); - - if (!strcmp(method, "client")) { - *ctx = SSL_CTX_new(TLSv1_client_method()); - } else if (!strcmp(method, "server")) { - *ctx = SSL_CTX_new(TLSv1_server_method()); - } else { - return luaL_argerror(L, 1, "supported values: client, server"); - } - - if (!(*ctx)) { - return luaL_error(L, "unable to create TLS context"); - } - -#ifdef WITH_CYASSL - SSL_CTX_set_verify(*ctx, SSL_VERIFY_NONE, NULL); -#endif - - return 1; -} - -static int nixio_tls_ctx_create(lua_State *L) { - SSL_CTX *ctx = nixio__checktlsctx(L); - int fd = nixio__checkfd(L, 2); - - lua_createtable(L, 0, 3); - nixio_tls_sock *sock = lua_newuserdata(L, sizeof(nixio_tls_sock)); - if (!sock) { - return luaL_error(L, "out of memory"); - } - memset(sock, 0, sizeof(nixio_tls_sock)); - - /* create userdata */ - luaL_getmetatable(L, NIXIO_TLS_SOCK_META); - lua_pushvalue(L, -1); - lua_setmetatable(L, -3); - - sock->socket = SSL_new(ctx); - if (!sock->socket) { - return nixio__tls_perror(L, 0); - } - - if (SSL_set_fd(sock->socket, fd) != 1) { - return nixio__tls_perror(L, 0); - } - - /* save context and socket to prevent GC from collecting them */ - lua_setmetatable(L, -3); - lua_setfield(L, -2, "connection"); - - lua_pushvalue(L, 1); - lua_setfield(L, -2, "context"); - - lua_pushvalue(L, 2); - lua_setfield(L, -2, "socket"); - - return 1; -} - -static int nixio_tls_ctx_set_cert(lua_State *L) { - SSL_CTX *ctx = nixio__checktlsctx(L); - const char *cert = luaL_checkstring(L, 2); - const char *type = luaL_optstring(L, 3, "chain"); - int ktype; - - if (!strcmp(type, "chain")) { - return nixio__tls_pstatus(L, - SSL_CTX_use_certificate_chain_file(ctx, cert)); - } else if (!strcmp(type, "pem")) { - ktype = SSL_FILETYPE_PEM; - } else if (!strcmp(type, "asn1")) { - ktype = SSL_FILETYPE_ASN1; - } else { - return luaL_argerror(L, 3, "supported values: chain, pem, asn1"); - } - - return nixio__tls_pstatus(L, - SSL_CTX_use_certificate_file(ctx, cert, ktype)); -} - -static int nixio_tls_ctx_set_verify_locations(lua_State *L) { - SSL_CTX *ctx = nixio__checktlsctx(L); - const char *CAfile = luaL_optstring(L, 2, NULL); - const char *CApath = luaL_optstring(L, 3, NULL); - return nixio__tls_pstatus(L, SSL_CTX_load_verify_locations(ctx, - CAfile, CApath)); -} - -static int nixio_tls_ctx_set_key(lua_State *L) { - SSL_CTX *ctx = nixio__checktlsctx(L); - const char *cert = luaL_checkstring(L, 2); - const char *type = luaL_optstring(L, 3, "pem"); - int ktype; - - if (!strcmp(type, "pem")) { - ktype = SSL_FILETYPE_PEM; - } else if (!strcmp(type, "asn1")) { - ktype = SSL_FILETYPE_ASN1; - } else { - return luaL_argerror(L, 3, "supported values: pem, asn1"); - } - - return nixio__tls_pstatus(L, SSL_CTX_use_PrivateKey_file(ctx, cert, ktype)); -} - -static int nixio_tls_ctx_set_ciphers(lua_State *L) { - SSL_CTX *ctx = nixio__checktlsctx(L); - size_t len; - const char *ciphers = luaL_checklstring(L, 2, &len); - luaL_argcheck(L, len < 255, 2, "cipher string too long"); - return nixio__tls_pstatus(L, SSL_CTX_set_cipher_list(ctx, ciphers)); -} - -static int nixio_tls_ctx_set_verify(lua_State *L) { - SSL_CTX *ctx = nixio__checktlsctx(L); - const int j = lua_gettop(L); - int flags = 0; - for (int i=2; i<=j; i++) { - const char *flag = luaL_checkstring(L, i); - if (!strcmp(flag, "none")) { - flags |= SSL_VERIFY_NONE; - } else if (!strcmp(flag, "peer")) { - flags |= SSL_VERIFY_PEER; - } else if (!strcmp(flag, "verify_fail_if_no_peer_cert")) { - flags |= SSL_VERIFY_FAIL_IF_NO_PEER_CERT; - } else if (!strcmp(flag, "client_once")) { - flags |= SSL_VERIFY_CLIENT_ONCE; - } else { - return luaL_argerror(L, i, "supported values: none, peer, " - "verify_fail_if_no_peer_cert, client_once"); - } - } - SSL_CTX_set_verify(ctx, flags, NULL); - return 0; -} - -static int nixio_tls_ctx__gc(lua_State *L) { - SSL_CTX **ctx = (SSL_CTX **)luaL_checkudata(L, 1, NIXIO_TLS_CTX_META); - if (*ctx) { - SSL_CTX_free(*ctx); - *ctx = NULL; - } - return 0; -} - -static int nixio_tls_ctx__tostring(lua_State *L) { - SSL_CTX *ctx = nixio__checktlsctx(L); - lua_pushfstring(L, "nixio TLS context: %p", ctx); - return 1; -} - -/* module table */ -static const luaL_reg R[] = { - {"tls", nixio_tls_ctx}, - {NULL, NULL} -}; - -/* ctx function table */ -static const luaL_reg CTX_M[] = { - {"set_cert", nixio_tls_ctx_set_cert}, - {"set_verify_locations", nixio_tls_ctx_set_verify_locations}, - {"set_key", nixio_tls_ctx_set_key}, - {"set_ciphers", nixio_tls_ctx_set_ciphers}, - {"set_verify", nixio_tls_ctx_set_verify}, - {"create", nixio_tls_ctx_create}, - {"__gc", nixio_tls_ctx__gc}, - {"__tostring", nixio_tls_ctx__tostring}, - {NULL, NULL} -}; - - -void nixio_open_tls_context(lua_State *L) { - /* initialize tls library */ - SSL_load_error_strings(); - SSL_library_init(); - - /* register module functions */ - luaL_register(L, NULL, R); - -#if defined (WITH_AXTLS) - lua_pushliteral(L, "axtls"); -#elif defined (WITH_CYASSL) - lua_pushliteral(L, "cyassl"); -#else - lua_pushliteral(L, "openssl"); -#endif - lua_setfield(L, -2, "tls_provider"); - - /* create context metatable */ - luaL_newmetatable(L, NIXIO_TLS_CTX_META); - lua_pushvalue(L, -1); - lua_setfield(L, -2, "__index"); - luaL_register(L, NULL, CTX_M); - lua_setfield(L, -2, "meta_tls_context"); -} diff --git a/package/luci/libs/luci-lib-nixio/src/tls-crypto.c b/package/luci/libs/luci-lib-nixio/src/tls-crypto.c deleted file mode 100644 index 714ec4e60c..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/tls-crypto.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio-tls.h" -#include -#include -#include -#include -#include - -static int nixio_crypto_hash__init(lua_State *L, int hmac) { - const char *type = luaL_checkstring(L, 1); - nixio_hash *hash = lua_newuserdata(L, sizeof(nixio_hash)); - - if (!strcmp(type, "md5")) { - hash->type = NIXIO_HASH_MD5; - hash->digest_size = MD5_DIGEST_LENGTH; - hash->block_size = 64; - hash->ctx = malloc(sizeof(MD5_CTX)); - if (!hash->ctx) { - return luaL_error(L, NIXIO_OOM); - } - MD5_Init((MD5_CTX*)hash->ctx); - hash->init = (nixio_hash_initcb)MD5_Init; - hash->update = (nixio_hash_updatecb)MD5_Update; - hash->final = (nixio_hash_finalcb)MD5_Final; - } else if (!strcmp(type, "sha1")) { - hash->type = NIXIO_HASH_SHA1; - hash->digest_size = SHA_DIGEST_LENGTH; - hash->block_size = 64; - hash->ctx = malloc(sizeof(SHA_CTX)); - if (!hash->ctx) { - return luaL_error(L, NIXIO_OOM); - } - SHA1_Init((SHA_CTX*)hash->ctx); - hash->init = (nixio_hash_initcb)SHA1_Init; - hash->update = (nixio_hash_updatecb)SHA1_Update; - hash->final = (nixio_hash_finalcb)SHA1_Final; - } else { - luaL_argerror(L, 1, "supported values: md5, sha1"); - } - - luaL_getmetatable(L, NIXIO_CRYPTO_HASH_META); - lua_setmetatable(L, -2); - - if (hmac) { - const char *key = luaL_checklstring(L, 2, &hash->key_size); - if (hash->key_size > hash->block_size) { - hash->update(hash->ctx, key, hash->key_size); - hash->final(hash->digest, hash->ctx); - hash->init(hash->ctx); - hash->key_size = hash->digest_size; - memcpy(hash->key, hash->digest, hash->key_size); - } else { - memcpy(hash->key, key, hash->key_size); - } - - unsigned char pad[NIXIO_CRYPTO_BLOCK_SIZE]; - for (uint i = 0; i < hash->block_size; i++) { - pad[i] = (i < hash->key_size) ? (0x36 ^ hash->key[i]) : 0x36; - } - hash->update(hash->ctx, pad, hash->block_size); - hash->type |= NIXIO_HMAC_BIT; - } - - return 1; -} - -static int nixio_crypto_hash(lua_State *L) { - return nixio_crypto_hash__init(L, 0); -} - -static int nixio_crypto_hmac(lua_State *L) { - return nixio_crypto_hash__init(L, 1); -} - -static int nixio_crypto_hash_update(lua_State *L) { - nixio_hash *hash = luaL_checkudata(L, 1, NIXIO_CRYPTO_HASH_META); - if (hash->type) { - size_t len; - const char *chunk = luaL_checklstring(L, 2, &len); - hash->update(hash->ctx, chunk, len); - lua_pushvalue(L, 1); - return 1; - } else { - return luaL_error(L, "Tried to update finalized hash object."); - } -} - -static int nixio_crypto_hash_final(lua_State *L) { - nixio_hash *hash = luaL_checkudata(L, 1, NIXIO_CRYPTO_HASH_META); - if (hash->type & NIXIO_HMAC_BIT) { - hash->final(hash->digest, hash->ctx); - hash->init(hash->ctx); - - unsigned char pad[NIXIO_CRYPTO_BLOCK_SIZE]; - for (uint i = 0; i < hash->block_size; i++) { - pad[i] = (i < hash->key_size) ? (0x5c ^ hash->key[i]) : 0x5c; - } - - hash->update(hash->ctx, pad, hash->block_size); - hash->update(hash->ctx, hash->digest, hash->digest_size); - } - - if (hash->type) { - hash->type = NIXIO_HASH_NONE; - hash->final(hash->digest, hash->ctx); - free(hash->ctx); - } - - char hashdigest[NIXIO_DIGEST_SIZE*2]; - for (uint i=0; i < hash->digest_size; i++) { - hashdigest[2*i] = nixio__bin2hex[(hash->digest[i] & 0xf0) >> 4]; - hashdigest[2*i+1] = nixio__bin2hex[(hash->digest[i] & 0x0f)]; - } - - lua_pushlstring(L, hashdigest, hash->digest_size * 2); - memcpy(hashdigest, hash->digest, hash->digest_size); - lua_pushlstring(L, hashdigest, hash->digest_size); - - return 2; -} - -static int nixio_crypto_hash__gc(lua_State *L) { - nixio_hash *hash = luaL_checkudata(L, 1, NIXIO_CRYPTO_HASH_META); - if (hash->type) { - hash->final(hash->digest, hash->ctx); - free(hash->ctx); - hash->type = NIXIO_HASH_NONE; - } - return 0; -} - -static int nixio_crypto_hash__tostring(lua_State *L) { - nixio_hash *hash = luaL_checkudata(L, 1, NIXIO_CRYPTO_HASH_META); - lua_pushfstring(L, "nixio hash object: %p", hash); - return 1; -} - - -/* module table */ -static const luaL_reg R[] = { - {"hash", nixio_crypto_hash}, - {"hmac", nixio_crypto_hmac}, - {NULL, NULL} -}; - -/* hash table */ -static const luaL_reg M[] = { - {"update", nixio_crypto_hash_update}, - {"final", nixio_crypto_hash_final}, - {"__gc", nixio_crypto_hash__gc}, - {"__tostring", nixio_crypto_hash__tostring}, - {NULL, NULL} -}; - - - -void nixio_open_tls_crypto(lua_State *L) { - luaL_newmetatable(L, NIXIO_CRYPTO_HASH_META); - luaL_register(L, NULL, M); - lua_pushvalue(L, -1); - lua_setfield(L, -2, "__index"); - lua_pop(L, 1); - - lua_newtable(L); - luaL_register(L, NULL, R); - - lua_setfield(L, -2, "crypto"); -} diff --git a/package/luci/libs/luci-lib-nixio/src/tls-socket.c b/package/luci/libs/luci-lib-nixio/src/tls-socket.c deleted file mode 100644 index fe4cb60755..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/tls-socket.c +++ /dev/null @@ -1,263 +0,0 @@ - /* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio-tls.h" -#include -#include - -static int nixio__tls_sock_perror(lua_State *L, SSL *sock, int code) { - lua_pushnil(L); - lua_pushinteger(L, SSL_get_error(sock, code)); - return 2; -} - -static int nixio__tls_sock_pstatus(lua_State *L, SSL *sock, int code) { - if (code > 0) { - lua_pushboolean(L, 1); - return 1; - } else { - return nixio__tls_sock_perror(L, sock, code); - } -} - -static SSL* nixio__checktlssock(lua_State *L) { - if (lua_istable(L, 1)) { - lua_getfield(L, 1, "connection"); - lua_replace(L, 1); - } - nixio_tls_sock *sock = luaL_checkudata(L, 1, NIXIO_TLS_SOCK_META); - luaL_argcheck(L, sock->socket, 1, "invalid context"); - return sock->socket; -} - -#ifndef WITH_AXTLS -#define nixio_tls__check_connected(L) ; - -#define nixio_tls__set_connected(L, val) ; -#else -#define nixio_tls__check_connected(L) \ - nixio_tls_sock *ctsock = luaL_checkudata(L, 1, NIXIO_TLS_SOCK_META); \ - if (!ctsock->connected) { \ - lua_pushnil(L); \ - lua_pushinteger(L, 1); \ - return 2; \ - } - -#define nixio_tls__set_connected(L, val) \ -((nixio_tls_sock*)luaL_checkudata(L, 1, NIXIO_TLS_SOCK_META))->connected = val; -#endif /* WITH_AXTLS */ - -static int nixio_tls_sock_recv(lua_State *L) { - SSL *sock = nixio__checktlssock(L); - nixio_tls__check_connected(L); - uint req = luaL_checkinteger(L, 2); - - luaL_argcheck(L, req >= 0, 2, "out of range"); - - /* We limit the readsize to NIXIO_BUFFERSIZE */ - req = (req > NIXIO_BUFFERSIZE) ? NIXIO_BUFFERSIZE : req; - -#ifndef WITH_AXTLS - - char buffer[NIXIO_BUFFERSIZE]; - int readc = SSL_read(sock, buffer, req); - - if (readc < 0) { - return nixio__tls_sock_pstatus(L, sock, readc); - } else { - lua_pushlstring(L, buffer, readc); - return 1; - } - -#else - - if (!req) { - lua_pushliteral(L, ""); - return 1; - } - - nixio_tls_sock *t = lua_touserdata(L, 1); - - /* AXTLS doesn't handle buffering for us, so we have to hack around*/ - if (req < t->pbufsiz) { - lua_pushlstring(L, t->pbufpos, req); - t->pbufpos += req; - t->pbufsiz -= req; - return 1; - } else { - uint8_t *axbuf; - int axread; - - /* while handshake pending */ - while ((axread = ssl_read(sock, &axbuf)) == SSL_OK); - - if (t->pbufsiz) { - lua_pushlstring(L, t->pbufpos, t->pbufsiz); - } - - if (axread < 0) { - /* There is an error */ - free(t->pbuffer); - t->pbuffer = t->pbufpos = NULL; - - if (axread != SSL_ERROR_CONN_LOST) { - t->pbufsiz = 0; - return nixio__tls_sock_perror(L, sock, axread); - } else { - if (!t->pbufsiz) { - lua_pushliteral(L, ""); - } else { - t->pbufsiz = 0; - } - } - } else { - int stillwant = req - t->pbufsiz; - if (stillwant < axread) { - /* we got more data than we need */ - lua_pushlstring(L, (char *)axbuf, stillwant); - if(t->pbufsiz) { - lua_concat(L, 2); - } - - /* remaining data goes into the buffer */ - t->pbufpos = t->pbuffer; - t->pbufsiz = axread - stillwant; - t->pbuffer = realloc(t->pbuffer, t->pbufsiz); - if (!t->pbuffer) { - free(t->pbufpos); - t->pbufpos = NULL; - t->pbufsiz = 0; - return luaL_error(L, "out of memory"); - } - - t->pbufpos = t->pbuffer; - memcpy(t->pbufpos, axbuf + stillwant, t->pbufsiz); - } else { - lua_pushlstring(L, (char *)axbuf, axread); - if(t->pbufsiz) { - lua_concat(L, 2); - } - - /* free buffer */ - free(t->pbuffer); - t->pbuffer = t->pbufpos = NULL; - t->pbufsiz = 0; - } - } - return 1; - } - -#endif /* WITH_AXTLS */ - -} - -static int nixio_tls_sock_send(lua_State *L) { - SSL *sock = nixio__checktlssock(L); - nixio_tls__check_connected(L); - size_t len; - ssize_t sent; - const char *data = luaL_checklstring(L, 2, &len); - - if (lua_gettop(L) > 2) { - int offset = luaL_optint(L, 3, 0); - if (offset) { - if (offset < len) { - data += offset; - len -= offset; - } else { - len = 0; - } - } - - unsigned int wlen = luaL_optint(L, 4, len); - if (wlen < len) { - len = wlen; - } - } - - sent = SSL_write(sock, data, len); - if (sent > 0) { - lua_pushinteger(L, sent); - return 1; - } else { - return nixio__tls_sock_pstatus(L, sock, sent); - } -} - -static int nixio_tls_sock_accept(lua_State *L) { - SSL *sock = nixio__checktlssock(L); - const int stat = SSL_accept(sock); - nixio_tls__set_connected(L, stat == 1); - return nixio__tls_sock_pstatus(L, sock, stat); -} - -static int nixio_tls_sock_connect(lua_State *L) { - SSL *sock = nixio__checktlssock(L); - const int stat = SSL_connect(sock); - nixio_tls__set_connected(L, stat == 1); - return nixio__tls_sock_pstatus(L, sock, stat); -} - -static int nixio_tls_sock_shutdown(lua_State *L) { - SSL *sock = nixio__checktlssock(L); - nixio_tls__set_connected(L, 0); - return nixio__tls_sock_pstatus(L, sock, SSL_shutdown(sock)); -} - -static int nixio_tls_sock__gc(lua_State *L) { - nixio_tls_sock *sock = luaL_checkudata(L, 1, NIXIO_TLS_SOCK_META); - if (sock->socket) { - SSL_free(sock->socket); - sock->socket = NULL; -#ifdef WITH_AXTLS - free(sock->pbuffer); -#endif - } - return 0; -} - -static int nixio_tls_sock__tostring(lua_State *L) { - SSL *sock = nixio__checktlssock(L); - lua_pushfstring(L, "nixio TLS connection: %p", sock); - return 1; -} - - -/* ctx function table */ -static const luaL_reg M[] = { - {"recv", nixio_tls_sock_recv}, - {"send", nixio_tls_sock_send}, - {"read", nixio_tls_sock_recv}, - {"write", nixio_tls_sock_send}, - {"accept", nixio_tls_sock_accept}, - {"connect", nixio_tls_sock_connect}, - {"shutdown", nixio_tls_sock_shutdown}, - {"__gc", nixio_tls_sock__gc}, - {"__tostring", nixio_tls_sock__tostring}, - {NULL, NULL} -}; - - -void nixio_open_tls_socket(lua_State *L) { - /* create socket metatable */ - luaL_newmetatable(L, NIXIO_TLS_SOCK_META); - luaL_register(L, NULL, M); - lua_pushvalue(L, -1); - lua_setfield(L, -2, "__index"); - lua_setfield(L, -2, "meta_tls_socket"); -} diff --git a/package/luci/libs/luci-lib-nixio/src/user.c b/package/luci/libs/luci-lib-nixio/src/user.c deleted file mode 100644 index b701bac955..0000000000 --- a/package/luci/libs/luci-lib-nixio/src/user.c +++ /dev/null @@ -1,263 +0,0 @@ -/* - * nixio - Linux I/O library for lua - * - * Copyright (C) 2009 Steven Barth - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "nixio.h" -#include -#include -#include -#include - -#ifndef __WINNT__ - -#include -#include - -#ifndef BSD -#ifndef NO_SHADOW -#include -#endif -#include -#endif - -int nixio__check_group(lua_State *L, int idx) { - if (lua_isnumber(L, idx)) { - return lua_tointeger(L, idx); - } else if (lua_isstring(L, idx)) { - struct group *g = getgrnam(lua_tostring(L, idx)); - return (!g) ? -1 : g->gr_gid; - } else { - return luaL_argerror(L, idx, "supported values: , "); - } -} - -int nixio__check_user(lua_State *L, int idx) { - if (lua_isnumber(L, idx)) { - return lua_tointeger(L, idx); - } else if (lua_isstring(L, idx)) { - struct passwd *p = getpwnam(lua_tostring(L, idx)); - return (!p) ? -1 : p->pw_uid; - } else { - return luaL_argerror(L, idx, "supported values: , "); - } -} - - -static int nixio__push_group(lua_State *L, struct group *gr) { - lua_createtable(L, 0, 4); - lua_pushstring(L, gr->gr_name); - lua_setfield(L, -2, "name"); - lua_pushstring(L, gr->gr_passwd); - lua_setfield(L, -2, "passwd"); - lua_pushinteger(L, gr->gr_gid); - lua_setfield(L, -2, "gid"); - lua_newtable(L); - - for (int i=0; gr->gr_mem[i]; i++) { - lua_pushstring(L, gr->gr_mem[i]); - lua_rawseti(L, -2, i+1); - } - - lua_setfield(L, -2, "mem"); - return 1; -} - -static int nixio_getgr(lua_State *L) { - struct group *gr; - errno = 0; - if (lua_isnumber(L, 1)) { - gr = getgrgid(lua_tointeger(L, 1)); - } else if (lua_isstring(L, 1)) { - gr = getgrnam(lua_tostring(L, 1)); - } else if (lua_isnoneornil(L, 1)) { - lua_newtable(L); - int i = 0; - - setgrent(); - while ((gr = getgrent())) { - nixio__push_group(L, gr); - lua_rawseti(L, -2, ++i); - } - - if (errno) { - return nixio__perror(L); - } - - endgrent(); - return 1; - } else { - return luaL_argerror(L, 1, "supported values: , "); - } - - if (!gr) { - return nixio__perror(L); - } else { - return nixio__push_group(L, gr); - } -} - -static int nixio__push_passwd(lua_State *L, struct passwd *pw) { - lua_createtable(L, 0, 7); - lua_pushstring(L, pw->pw_name); - lua_setfield(L, -2, "name"); - lua_pushstring(L, pw->pw_passwd); - lua_setfield(L, -2, "passwd"); - lua_pushinteger(L, pw->pw_gid); - lua_setfield(L, -2, "gid"); - lua_pushinteger(L, pw->pw_uid); - lua_setfield(L, -2, "uid"); - lua_pushstring(L, pw->pw_dir); - lua_setfield(L, -2, "dir"); - lua_pushstring(L, pw->pw_gecos); - lua_setfield(L, -2, "gecos"); - lua_pushstring(L, pw->pw_shell); - lua_setfield(L, -2, "shell"); - return 1; -} - -static int nixio_getpw(lua_State *L) { - struct passwd *pw; - errno = 0; - if (lua_isnumber(L, 1)) { - pw = getpwuid(lua_tointeger(L, 1)); - } else if (lua_isstring(L, 1)) { - pw = getpwnam(lua_tostring(L, 1)); - } else if (lua_isnoneornil(L, 1)) { - lua_newtable(L); - int i = 0; - - setpwent(); - while ((pw = getpwent())) { - nixio__push_passwd(L, pw); - lua_rawseti(L, -2, ++i); - } - - if (errno) { - return nixio__perror(L); - } - - endpwent(); - return 1; - } else { - return luaL_argerror(L, 1, "supported values: , "); - } - - if (!pw) { - return nixio__perror(L); - } else { - return nixio__push_passwd(L, pw); - } -} - -#ifndef BSD -#ifndef NO_SHADOW -static int nixio__push_spwd(lua_State *L, struct spwd *sp) { - lua_createtable(L, 0, 9); - lua_pushstring(L, sp->sp_namp); - lua_setfield(L, -2, "namp"); - lua_pushinteger(L, sp->sp_expire); - lua_setfield(L, -2, "expire"); - lua_pushinteger(L, sp->sp_flag); - lua_setfield(L, -2, "flag"); - lua_pushinteger(L, sp->sp_inact); - lua_setfield(L, -2, "inact"); - lua_pushinteger(L, sp->sp_lstchg); - lua_setfield(L, -2, "lstchg"); - lua_pushinteger(L, sp->sp_max); - lua_setfield(L, -2, "max"); - lua_pushinteger(L, sp->sp_min); - lua_setfield(L, -2, "min"); - lua_pushinteger(L, sp->sp_warn); - lua_setfield(L, -2, "warn"); - lua_pushstring(L, sp->sp_pwdp); - lua_setfield(L, -2, "pwdp"); - return 1; -} - -static int nixio_getsp(lua_State *L) { - struct spwd *sp; - errno = 0; - if (lua_isstring(L, 1)) { - sp = getspnam(lua_tostring(L, 1)); - } else if (lua_isnoneornil(L, 1)) { - lua_newtable(L); - int i = 0; - - setspent(); - while ((sp = getspent())) { - nixio__push_spwd(L, sp); - lua_rawseti(L, -2, ++i); - } - - if (errno) { - return nixio__perror(L); - } - - endspent(); - return 1; - } else { - return luaL_argerror(L, 1, "supported values: "); - } - - if (!sp) { - return nixio__perror(L); - } else { - return nixio__push_spwd(L, sp); - } -} -#endif /* !NO_SHADOW */ -#endif /* !BSD */ - -static int nixio_crypt(lua_State *L) { - const char *key = luaL_checkstring(L, 1); - const char *salt = luaL_checkstring(L, 2); - const char *hash = crypt(key, salt); - - if (hash) { - lua_pushstring(L, hash); - } else { - lua_pushnil(L); - } - - return 1; -} - - -/* module table */ -static const luaL_reg R[] = { - {"crypt", nixio_crypt}, - {"getgr", nixio_getgr}, - {"getpw", nixio_getpw}, -#ifndef BSD -#ifndef NO_SHADOW - {"getsp", nixio_getsp}, -#endif -#endif - {NULL, NULL} -}; - -#else /* __WINNT__ */ - -static const luaL_reg R[] = { - {NULL, NULL} -}; - -#endif - -void nixio_open_user(lua_State *L) { - luaL_register(L, NULL, R); -} diff --git a/package/luci/libs/luci-lib-px5g/Makefile b/package/luci/libs/luci-lib-px5g/Makefile deleted file mode 100644 index eefee107e8..0000000000 --- a/package/luci/libs/luci-lib-px5g/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=RSA/X.509 Key Generator (required for LuCId SSL support) -LUCI_DEPENDS:=+liblua - -PKG_USE_MIPS16:=0 -PKG_LICENSE:=LGPL-2.1 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/libs/luci-lib-px5g/lua/px5g/util.lua b/package/luci/libs/luci-lib-px5g/lua/px5g/util.lua deleted file mode 100644 index 0f07c81b8c..0000000000 --- a/package/luci/libs/luci-lib-px5g/lua/px5g/util.lua +++ /dev/null @@ -1,44 +0,0 @@ ---[[ - * px5g - Embedded x509 key and certificate generator based on PolarSSL - * - * Copyright (C) 2009 Steven Barth - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License, version 2.1 as published by the Free Software Foundation. -]]-- - -local nixio = require "nixio" -local table = require "table" - -module "px5g.util" - -local preamble = { - key = "-----BEGIN RSA PRIVATE KEY-----", - cert = "-----BEGIN CERTIFICATE-----", - request = "-----BEGIN CERTIFICATE REQUEST-----" -} - -local postamble = { - key = "-----END RSA PRIVATE KEY-----", - cert = "-----END CERTIFICATE-----", - request = "-----END CERTIFICATE REQUEST-----" -} - -function der2pem(data, type) - local b64 = nixio.bin.b64encode(data) - - local outdata = {preamble[type]} - for i = 1, #b64, 64 do - outdata[#outdata + 1] = b64:sub(i, i + 63) - end - outdata[#outdata + 1] = postamble[type] - outdata[#outdata + 1] = "" - - return table.concat(outdata, "\n") -end - -function pem2der(data) - local b64 = data:gsub({["\n"] = "", ["%-%-%-%-%-.-%-%-%-%-%-"] = ""}) - return nixio.bin.b64decode(b64) -end \ No newline at end of file diff --git a/package/luci/libs/luci-lib-px5g/root/usr/sbin/px5g-genkeys b/package/luci/libs/luci-lib-px5g/root/usr/sbin/px5g-genkeys deleted file mode 100755 index 87a66bfe26..0000000000 --- a/package/luci/libs/luci-lib-px5g/root/usr/sbin/px5g-genkeys +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/lua -local keyfile = "/etc/nixio/rsa_main.der" -local certfile = "/etc/nixio/cert_main.der" - -local px5g = require "px5g" -local nixio = require "nixio" -local fs = require "nixio.fs" -local os = require "os" -nixio.umask(77) - -if not fs.access(certfile) then - local key = px5g.genkey(2048) - fs.writefile(keyfile, key:asn1()) - - local cert = key:create_selfsigned( - {CN=nixio.uname().nodename, O="LuCI Keymaster"}, - os.time(), os.time() + 3600 * 24 * 366 * 15) - fs.writefile(certfile, cert) -end diff --git a/package/luci/libs/luci-lib-px5g/src/Makefile b/package/luci/libs/luci-lib-px5g/src/Makefile deleted file mode 100644 index 755565e2b8..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -PX5G_CFLAGS = -I. -include polarssl/rsa.h -include polarssl/x509.h -std=gnu99 -PX5G_LDFLAGS = -llua -lm -PX5G_OBJ = px5g.o library/bignum.o library/havege.o library/rsa.o library/sha1.o library/timing.o library/x509write.o -PX5G_LIB = px5g.so - -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(LUA_CFLAGS) $(PX5G_CFLAGS) $(FPIC) -c -o $@ $< - -compile: $(PX5G_OBJ) - $(CC) $(LDFLAGS) -shared -o $(PX5G_LIB) $(PX5G_OBJ) $(PX5G_LDFLAGS) - -install: compile - mkdir -p $(DESTDIR)/usr/lib/lua - cp $(PX5G_LIB) $(DESTDIR)/usr/lib/lua/$(PX5G_LIB) - -clean: - rm -f *.o *.so diff --git a/package/luci/libs/luci-lib-px5g/src/library/bignum.c b/package/luci/libs/luci-lib-px5g/src/library/bignum.c deleted file mode 100644 index 8b7c12ff00..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/library/bignum.c +++ /dev/null @@ -1,2010 +0,0 @@ -/* - * Multi-precision integer library - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -/* - * This MPI implementation is based on: - * - * http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf - * http://www.stillhq.com/extracted/gnupg-api/mpi/ - * http://math.libtomcrypt.com/files/tommath.pdf - */ - -#include "polarssl/config.h" - -#if defined(POLARSSL_BIGNUM_C) - -#include "polarssl/bignum.h" -#include "polarssl/bn_mul.h" - -#include -#include -#include - -#define ciL ((int) sizeof(t_int)) /* chars in limb */ -#define biL (ciL << 3) /* bits in limb */ -#define biH (ciL << 2) /* half limb size */ - -/* - * Convert between bits/chars and number of limbs - */ -#define BITS_TO_LIMBS(i) (((i) + biL - 1) / biL) -#define CHARS_TO_LIMBS(i) (((i) + ciL - 1) / ciL) - -/* - * Initialize one or more mpi - */ -void mpi_init( mpi *X, ... ) -{ - va_list args; - - va_start( args, X ); - - while( X != NULL ) - { - X->s = 1; - X->n = 0; - X->p = NULL; - - X = va_arg( args, mpi* ); - } - - va_end( args ); -} - -/* - * Unallocate one or more mpi - */ -void mpi_free( mpi *X, ... ) -{ - va_list args; - - va_start( args, X ); - - while( X != NULL ) - { - if( X->p != NULL ) - { - memset( X->p, 0, X->n * ciL ); - free( X->p ); - } - - X->s = 1; - X->n = 0; - X->p = NULL; - - X = va_arg( args, mpi* ); - } - - va_end( args ); -} - -/* - * Enlarge to the specified number of limbs - */ -int mpi_grow( mpi *X, int nblimbs ) -{ - t_int *p; - - if( X->n < nblimbs ) - { - if( ( p = (t_int *) malloc( nblimbs * ciL ) ) == NULL ) - return( 1 ); - - memset( p, 0, nblimbs * ciL ); - - if( X->p != NULL ) - { - memcpy( p, X->p, X->n * ciL ); - memset( X->p, 0, X->n * ciL ); - free( X->p ); - } - - X->n = nblimbs; - X->p = p; - } - - return( 0 ); -} - -/* - * Copy the contents of Y into X - */ -int mpi_copy( mpi *X, mpi *Y ) -{ - int ret, i; - - if( X == Y ) - return( 0 ); - - for( i = Y->n - 1; i > 0; i-- ) - if( Y->p[i] != 0 ) - break; - i++; - - X->s = Y->s; - - MPI_CHK( mpi_grow( X, i ) ); - - memset( X->p, 0, X->n * ciL ); - memcpy( X->p, Y->p, i * ciL ); - -cleanup: - - return( ret ); -} - -/* - * Swap the contents of X and Y - */ -void mpi_swap( mpi *X, mpi *Y ) -{ - mpi T; - - memcpy( &T, X, sizeof( mpi ) ); - memcpy( X, Y, sizeof( mpi ) ); - memcpy( Y, &T, sizeof( mpi ) ); -} - -/* - * Set value from integer - */ -int mpi_lset( mpi *X, int z ) -{ - int ret; - - MPI_CHK( mpi_grow( X, 1 ) ); - memset( X->p, 0, X->n * ciL ); - - X->p[0] = ( z < 0 ) ? -z : z; - X->s = ( z < 0 ) ? -1 : 1; - -cleanup: - - return( ret ); -} - -/* - * Return the number of least significant bits - */ -int mpi_lsb( mpi *X ) -{ - int i, j, count = 0; - - for( i = 0; i < X->n; i++ ) - for( j = 0; j < (int) biL; j++, count++ ) - if( ( ( X->p[i] >> j ) & 1 ) != 0 ) - return( count ); - - return( 0 ); -} - -/* - * Return the number of most significant bits - */ -int mpi_msb( mpi *X ) -{ - int i, j; - - for( i = X->n - 1; i > 0; i-- ) - if( X->p[i] != 0 ) - break; - - for( j = biL - 1; j >= 0; j-- ) - if( ( ( X->p[i] >> j ) & 1 ) != 0 ) - break; - - return( ( i * biL ) + j + 1 ); -} - -/* - * Return the total size in bytes - */ -int mpi_size( mpi *X ) -{ - return( ( mpi_msb( X ) + 7 ) >> 3 ); -} - -/* - * Convert an ASCII character to digit value - */ -static int mpi_get_digit( t_int *d, int radix, char c ) -{ - *d = 255; - - if( c >= 0x30 && c <= 0x39 ) *d = c - 0x30; - if( c >= 0x41 && c <= 0x46 ) *d = c - 0x37; - if( c >= 0x61 && c <= 0x66 ) *d = c - 0x57; - - if( *d >= (t_int) radix ) - return( POLARSSL_ERR_MPI_INVALID_CHARACTER ); - - return( 0 ); -} - -/* - * Import from an ASCII string - */ -int mpi_read_string( mpi *X, int radix, char *s ) -{ - int ret, i, j, n; - t_int d; - mpi T; - - if( radix < 2 || radix > 16 ) - return( POLARSSL_ERR_MPI_BAD_INPUT_DATA ); - - mpi_init( &T, NULL ); - - if( radix == 16 ) - { - n = BITS_TO_LIMBS( strlen( s ) << 2 ); - - MPI_CHK( mpi_grow( X, n ) ); - MPI_CHK( mpi_lset( X, 0 ) ); - - for( i = strlen( s ) - 1, j = 0; i >= 0; i--, j++ ) - { - if( i == 0 && s[i] == '-' ) - { - X->s = -1; - break; - } - - MPI_CHK( mpi_get_digit( &d, radix, s[i] ) ); - X->p[j / (2 * ciL)] |= d << ( (j % (2 * ciL)) << 2 ); - } - } - else - { - MPI_CHK( mpi_lset( X, 0 ) ); - - for( i = 0; i < (int) strlen( s ); i++ ) - { - if( i == 0 && s[i] == '-' ) - { - X->s = -1; - continue; - } - - MPI_CHK( mpi_get_digit( &d, radix, s[i] ) ); - MPI_CHK( mpi_mul_int( &T, X, radix ) ); - MPI_CHK( mpi_add_int( X, &T, d ) ); - } - } - -cleanup: - - mpi_free( &T, NULL ); - - return( ret ); -} - -/* - * Helper to write the digits high-order first - */ -static int mpi_write_hlp( mpi *X, int radix, char **p ) -{ - int ret; - t_int r; - - if( radix < 2 || radix > 16 ) - return( POLARSSL_ERR_MPI_BAD_INPUT_DATA ); - - MPI_CHK( mpi_mod_int( &r, X, radix ) ); - MPI_CHK( mpi_div_int( X, NULL, X, radix ) ); - - if( mpi_cmp_int( X, 0 ) != 0 ) - MPI_CHK( mpi_write_hlp( X, radix, p ) ); - - if( r < 10 ) - *(*p)++ = (char)( r + 0x30 ); - else - *(*p)++ = (char)( r + 0x37 ); - -cleanup: - - return( ret ); -} - -/* - * Export into an ASCII string - */ -int mpi_write_string( mpi *X, int radix, char *s, int *slen ) -{ - int ret = 0, n; - char *p; - mpi T; - - if( radix < 2 || radix > 16 ) - return( POLARSSL_ERR_MPI_BAD_INPUT_DATA ); - - n = mpi_msb( X ); - if( radix >= 4 ) n >>= 1; - if( radix >= 16 ) n >>= 1; - n += 3; - - if( *slen < n ) - { - *slen = n; - return( POLARSSL_ERR_MPI_BUFFER_TOO_SMALL ); - } - - p = s; - mpi_init( &T, NULL ); - - if( X->s == -1 ) - *p++ = '-'; - - if( radix == 16 ) - { - int c, i, j, k; - - for( i = X->n - 1, k = 0; i >= 0; i-- ) - { - for( j = ciL - 1; j >= 0; j-- ) - { - c = ( X->p[i] >> (j << 3) ) & 0xFF; - - if( c == 0 && k == 0 && (i + j) != 0 ) - continue; - - p += sprintf( p, "%02X", c ); - k = 1; - } - } - } - else - { - MPI_CHK( mpi_copy( &T, X ) ); - MPI_CHK( mpi_write_hlp( &T, radix, &p ) ); - } - - *p++ = '\0'; - *slen = p - s; - -cleanup: - - mpi_free( &T, NULL ); - - return( ret ); -} - -/* - * Read X from an opened file - */ -int mpi_read_file( mpi *X, int radix, FILE *fin ) -{ - t_int d; - int slen; - char *p; - char s[1024]; - - memset( s, 0, sizeof( s ) ); - if( fgets( s, sizeof( s ) - 1, fin ) == NULL ) - return( POLARSSL_ERR_MPI_FILE_IO_ERROR ); - - slen = strlen( s ); - if( s[slen - 1] == '\n' ) { slen--; s[slen] = '\0'; } - if( s[slen - 1] == '\r' ) { slen--; s[slen] = '\0'; } - - p = s + slen; - while( --p >= s ) - if( mpi_get_digit( &d, radix, *p ) != 0 ) - break; - - return( mpi_read_string( X, radix, p + 1 ) ); -} - -/* - * Write X into an opened file (or stdout if fout == NULL) - */ -int mpi_write_file( char *p, mpi *X, int radix, FILE *fout ) -{ - int n, ret; - size_t slen; - size_t plen; - char s[1024]; - - n = sizeof( s ); - memset( s, 0, n ); - n -= 2; - - MPI_CHK( mpi_write_string( X, radix, s, (int *) &n ) ); - - if( p == NULL ) p = ""; - - plen = strlen( p ); - slen = strlen( s ); - s[slen++] = '\r'; - s[slen++] = '\n'; - - if( fout != NULL ) - { - if( fwrite( p, 1, plen, fout ) != plen || - fwrite( s, 1, slen, fout ) != slen ) - return( POLARSSL_ERR_MPI_FILE_IO_ERROR ); - } - else - printf( "%s%s", p, s ); - -cleanup: - - return( ret ); -} - -/* - * Import X from unsigned binary data, big endian - */ -int mpi_read_binary( mpi *X, unsigned char *buf, int buflen ) -{ - int ret, i, j, n; - - for( n = 0; n < buflen; n++ ) - if( buf[n] != 0 ) - break; - - MPI_CHK( mpi_grow( X, CHARS_TO_LIMBS( buflen - n ) ) ); - MPI_CHK( mpi_lset( X, 0 ) ); - - for( i = buflen - 1, j = 0; i >= n; i--, j++ ) - X->p[j / ciL] |= ((t_int) buf[i]) << ((j % ciL) << 3); - -cleanup: - - return( ret ); -} - -/* - * Export X into unsigned binary data, big endian - */ -int mpi_write_binary( mpi *X, unsigned char *buf, int buflen ) -{ - int i, j, n; - - n = mpi_size( X ); - - if( buflen < n ) - return( POLARSSL_ERR_MPI_BUFFER_TOO_SMALL ); - - memset( buf, 0, buflen ); - - for( i = buflen - 1, j = 0; n > 0; i--, j++, n-- ) - buf[i] = (unsigned char)( X->p[j / ciL] >> ((j % ciL) << 3) ); - - return( 0 ); -} - -/* - * Left-shift: X <<= count - */ -int mpi_shift_l( mpi *X, int count ) -{ - int ret, i, v0, t1; - t_int r0 = 0, r1; - - v0 = count / (biL ); - t1 = count & (biL - 1); - - i = mpi_msb( X ) + count; - - if( X->n * (int) biL < i ) - MPI_CHK( mpi_grow( X, BITS_TO_LIMBS( i ) ) ); - - ret = 0; - - /* - * shift by count / limb_size - */ - if( v0 > 0 ) - { - for( i = X->n - 1; i >= v0; i-- ) - X->p[i] = X->p[i - v0]; - - for( ; i >= 0; i-- ) - X->p[i] = 0; - } - - /* - * shift by count % limb_size - */ - if( t1 > 0 ) - { - for( i = v0; i < X->n; i++ ) - { - r1 = X->p[i] >> (biL - t1); - X->p[i] <<= t1; - X->p[i] |= r0; - r0 = r1; - } - } - -cleanup: - - return( ret ); -} - -/* - * Right-shift: X >>= count - */ -int mpi_shift_r( mpi *X, int count ) -{ - int i, v0, v1; - t_int r0 = 0, r1; - - v0 = count / biL; - v1 = count & (biL - 1); - - /* - * shift by count / limb_size - */ - if( v0 > 0 ) - { - for( i = 0; i < X->n - v0; i++ ) - X->p[i] = X->p[i + v0]; - - for( ; i < X->n; i++ ) - X->p[i] = 0; - } - - /* - * shift by count % limb_size - */ - if( v1 > 0 ) - { - for( i = X->n - 1; i >= 0; i-- ) - { - r1 = X->p[i] << (biL - v1); - X->p[i] >>= v1; - X->p[i] |= r0; - r0 = r1; - } - } - - return( 0 ); -} - -/* - * Compare unsigned values - */ -int mpi_cmp_abs( mpi *X, mpi *Y ) -{ - int i, j; - - for( i = X->n - 1; i >= 0; i-- ) - if( X->p[i] != 0 ) - break; - - for( j = Y->n - 1; j >= 0; j-- ) - if( Y->p[j] != 0 ) - break; - - if( i < 0 && j < 0 ) - return( 0 ); - - if( i > j ) return( 1 ); - if( j > i ) return( -1 ); - - for( ; i >= 0; i-- ) - { - if( X->p[i] > Y->p[i] ) return( 1 ); - if( X->p[i] < Y->p[i] ) return( -1 ); - } - - return( 0 ); -} - -/* - * Compare signed values - */ -int mpi_cmp_mpi( mpi *X, mpi *Y ) -{ - int i, j; - - for( i = X->n - 1; i >= 0; i-- ) - if( X->p[i] != 0 ) - break; - - for( j = Y->n - 1; j >= 0; j-- ) - if( Y->p[j] != 0 ) - break; - - if( i < 0 && j < 0 ) - return( 0 ); - - if( i > j ) return( X->s ); - if( j > i ) return( -X->s ); - - if( X->s > 0 && Y->s < 0 ) return( 1 ); - if( Y->s > 0 && X->s < 0 ) return( -1 ); - - for( ; i >= 0; i-- ) - { - if( X->p[i] > Y->p[i] ) return( X->s ); - if( X->p[i] < Y->p[i] ) return( -X->s ); - } - - return( 0 ); -} - -/* - * Compare signed values - */ -int mpi_cmp_int( mpi *X, int z ) -{ - mpi Y; - t_int p[1]; - - *p = ( z < 0 ) ? -z : z; - Y.s = ( z < 0 ) ? -1 : 1; - Y.n = 1; - Y.p = p; - - return( mpi_cmp_mpi( X, &Y ) ); -} - -/* - * Unsigned addition: X = |A| + |B| (HAC 14.7) - */ -int mpi_add_abs( mpi *X, mpi *A, mpi *B ) -{ - int ret, i, j; - t_int *o, *p, c; - - if( X == B ) - { - mpi *T = A; A = X; B = T; - } - - if( X != A ) - MPI_CHK( mpi_copy( X, A ) ); - - for( j = B->n - 1; j >= 0; j-- ) - if( B->p[j] != 0 ) - break; - - MPI_CHK( mpi_grow( X, j + 1 ) ); - - o = B->p; p = X->p; c = 0; - - for( i = 0; i <= j; i++, o++, p++ ) - { - *p += c; c = ( *p < c ); - *p += *o; c += ( *p < *o ); - } - - while( c != 0 ) - { - if( i >= X->n ) - { - MPI_CHK( mpi_grow( X, i + 1 ) ); - p = X->p + i; - } - - *p += c; c = ( *p < c ); i++; - } - -cleanup: - - return( ret ); -} - -/* - * Helper for mpi substraction - */ -static void mpi_sub_hlp( int n, t_int *s, t_int *d ) -{ - int i; - t_int c, z; - - for( i = c = 0; i < n; i++, s++, d++ ) - { - z = ( *d < c ); *d -= c; - c = ( *d < *s ) + z; *d -= *s; - } - - while( c != 0 ) - { - z = ( *d < c ); *d -= c; - c = z; i++; d++; - } -} - -/* - * Unsigned substraction: X = |A| - |B| (HAC 14.9) - */ -int mpi_sub_abs( mpi *X, mpi *A, mpi *B ) -{ - mpi TB; - int ret, n; - - if( mpi_cmp_abs( A, B ) < 0 ) - return( POLARSSL_ERR_MPI_NEGATIVE_VALUE ); - - mpi_init( &TB, NULL ); - - if( X == B ) - { - MPI_CHK( mpi_copy( &TB, B ) ); - B = &TB; - } - - if( X != A ) - MPI_CHK( mpi_copy( X, A ) ); - - ret = 0; - - for( n = B->n - 1; n >= 0; n-- ) - if( B->p[n] != 0 ) - break; - - mpi_sub_hlp( n + 1, B->p, X->p ); - -cleanup: - - mpi_free( &TB, NULL ); - - return( ret ); -} - -/* - * Signed addition: X = A + B - */ -int mpi_add_mpi( mpi *X, mpi *A, mpi *B ) -{ - int ret, s = A->s; - - if( A->s * B->s < 0 ) - { - if( mpi_cmp_abs( A, B ) >= 0 ) - { - MPI_CHK( mpi_sub_abs( X, A, B ) ); - X->s = s; - } - else - { - MPI_CHK( mpi_sub_abs( X, B, A ) ); - X->s = -s; - } - } - else - { - MPI_CHK( mpi_add_abs( X, A, B ) ); - X->s = s; - } - -cleanup: - - return( ret ); -} - -/* - * Signed substraction: X = A - B - */ -int mpi_sub_mpi( mpi *X, mpi *A, mpi *B ) -{ - int ret, s = A->s; - - if( A->s * B->s > 0 ) - { - if( mpi_cmp_abs( A, B ) >= 0 ) - { - MPI_CHK( mpi_sub_abs( X, A, B ) ); - X->s = s; - } - else - { - MPI_CHK( mpi_sub_abs( X, B, A ) ); - X->s = -s; - } - } - else - { - MPI_CHK( mpi_add_abs( X, A, B ) ); - X->s = s; - } - -cleanup: - - return( ret ); -} - -/* - * Signed addition: X = A + b - */ -int mpi_add_int( mpi *X, mpi *A, int b ) -{ - mpi _B; - t_int p[1]; - - p[0] = ( b < 0 ) ? -b : b; - _B.s = ( b < 0 ) ? -1 : 1; - _B.n = 1; - _B.p = p; - - return( mpi_add_mpi( X, A, &_B ) ); -} - -/* - * Signed substraction: X = A - b - */ -int mpi_sub_int( mpi *X, mpi *A, int b ) -{ - mpi _B; - t_int p[1]; - - p[0] = ( b < 0 ) ? -b : b; - _B.s = ( b < 0 ) ? -1 : 1; - _B.n = 1; - _B.p = p; - - return( mpi_sub_mpi( X, A, &_B ) ); -} - -/* - * Helper for mpi multiplication - */ -static void mpi_mul_hlp( int i, t_int *s, t_int *d, t_int b ) -{ - t_int c = 0, t = 0; - -#if defined(MULADDC_HUIT) - for( ; i >= 8; i -= 8 ) - { - MULADDC_INIT - MULADDC_HUIT - MULADDC_STOP - } - - for( ; i > 0; i-- ) - { - MULADDC_INIT - MULADDC_CORE - MULADDC_STOP - } -#else - for( ; i >= 16; i -= 16 ) - { - MULADDC_INIT - MULADDC_CORE MULADDC_CORE - MULADDC_CORE MULADDC_CORE - MULADDC_CORE MULADDC_CORE - MULADDC_CORE MULADDC_CORE - - MULADDC_CORE MULADDC_CORE - MULADDC_CORE MULADDC_CORE - MULADDC_CORE MULADDC_CORE - MULADDC_CORE MULADDC_CORE - MULADDC_STOP - } - - for( ; i >= 8; i -= 8 ) - { - MULADDC_INIT - MULADDC_CORE MULADDC_CORE - MULADDC_CORE MULADDC_CORE - - MULADDC_CORE MULADDC_CORE - MULADDC_CORE MULADDC_CORE - MULADDC_STOP - } - - for( ; i > 0; i-- ) - { - MULADDC_INIT - MULADDC_CORE - MULADDC_STOP - } -#endif - - t++; - - do { - *d += c; c = ( *d < c ); d++; - } - while( c != 0 ); -} - -/* - * Baseline multiplication: X = A * B (HAC 14.12) - */ -int mpi_mul_mpi( mpi *X, mpi *A, mpi *B ) -{ - int ret, i, j; - mpi TA, TB; - - mpi_init( &TA, &TB, NULL ); - - if( X == A ) { MPI_CHK( mpi_copy( &TA, A ) ); A = &TA; } - if( X == B ) { MPI_CHK( mpi_copy( &TB, B ) ); B = &TB; } - - for( i = A->n - 1; i >= 0; i-- ) - if( A->p[i] != 0 ) - break; - - for( j = B->n - 1; j >= 0; j-- ) - if( B->p[j] != 0 ) - break; - - MPI_CHK( mpi_grow( X, i + j + 2 ) ); - MPI_CHK( mpi_lset( X, 0 ) ); - - for( i++; j >= 0; j-- ) - mpi_mul_hlp( i, A->p, X->p + j, B->p[j] ); - - X->s = A->s * B->s; - -cleanup: - - mpi_free( &TB, &TA, NULL ); - - return( ret ); -} - -/* - * Baseline multiplication: X = A * b - */ -int mpi_mul_int( mpi *X, mpi *A, t_int b ) -{ - mpi _B; - t_int p[1]; - - _B.s = 1; - _B.n = 1; - _B.p = p; - p[0] = b; - - return( mpi_mul_mpi( X, A, &_B ) ); -} - -/* - * Division by mpi: A = Q * B + R (HAC 14.20) - */ -int mpi_div_mpi( mpi *Q, mpi *R, mpi *A, mpi *B ) -{ - int ret, i, n, t, k; - mpi X, Y, Z, T1, T2; - - if( mpi_cmp_int( B, 0 ) == 0 ) - return( POLARSSL_ERR_MPI_DIVISION_BY_ZERO ); - - mpi_init( &X, &Y, &Z, &T1, &T2, NULL ); - - if( mpi_cmp_abs( A, B ) < 0 ) - { - if( Q != NULL ) MPI_CHK( mpi_lset( Q, 0 ) ); - if( R != NULL ) MPI_CHK( mpi_copy( R, A ) ); - return( 0 ); - } - - MPI_CHK( mpi_copy( &X, A ) ); - MPI_CHK( mpi_copy( &Y, B ) ); - X.s = Y.s = 1; - - MPI_CHK( mpi_grow( &Z, A->n + 2 ) ); - MPI_CHK( mpi_lset( &Z, 0 ) ); - MPI_CHK( mpi_grow( &T1, 2 ) ); - MPI_CHK( mpi_grow( &T2, 3 ) ); - - k = mpi_msb( &Y ) % biL; - if( k < (int) biL - 1 ) - { - k = biL - 1 - k; - MPI_CHK( mpi_shift_l( &X, k ) ); - MPI_CHK( mpi_shift_l( &Y, k ) ); - } - else k = 0; - - n = X.n - 1; - t = Y.n - 1; - mpi_shift_l( &Y, biL * (n - t) ); - - while( mpi_cmp_mpi( &X, &Y ) >= 0 ) - { - Z.p[n - t]++; - mpi_sub_mpi( &X, &X, &Y ); - } - mpi_shift_r( &Y, biL * (n - t) ); - - for( i = n; i > t ; i-- ) - { - if( X.p[i] >= Y.p[t] ) - Z.p[i - t - 1] = ~0; - else - { -#if defined(POLARSSL_HAVE_LONGLONG) - t_dbl r; - - r = (t_dbl) X.p[i] << biL; - r |= (t_dbl) X.p[i - 1]; - r /= Y.p[t]; - if( r > ((t_dbl) 1 << biL) - 1) - r = ((t_dbl) 1 << biL) - 1; - - Z.p[i - t - 1] = (t_int) r; -#else - /* - * __udiv_qrnnd_c, from gmp/longlong.h - */ - t_int q0, q1, r0, r1; - t_int d0, d1, d, m; - - d = Y.p[t]; - d0 = ( d << biH ) >> biH; - d1 = ( d >> biH ); - - q1 = X.p[i] / d1; - r1 = X.p[i] - d1 * q1; - r1 <<= biH; - r1 |= ( X.p[i - 1] >> biH ); - - m = q1 * d0; - if( r1 < m ) - { - q1--, r1 += d; - while( r1 >= d && r1 < m ) - q1--, r1 += d; - } - r1 -= m; - - q0 = r1 / d1; - r0 = r1 - d1 * q0; - r0 <<= biH; - r0 |= ( X.p[i - 1] << biH ) >> biH; - - m = q0 * d0; - if( r0 < m ) - { - q0--, r0 += d; - while( r0 >= d && r0 < m ) - q0--, r0 += d; - } - r0 -= m; - - Z.p[i - t - 1] = ( q1 << biH ) | q0; -#endif - } - - Z.p[i - t - 1]++; - do - { - Z.p[i - t - 1]--; - - MPI_CHK( mpi_lset( &T1, 0 ) ); - T1.p[0] = (t < 1) ? 0 : Y.p[t - 1]; - T1.p[1] = Y.p[t]; - MPI_CHK( mpi_mul_int( &T1, &T1, Z.p[i - t - 1] ) ); - - MPI_CHK( mpi_lset( &T2, 0 ) ); - T2.p[0] = (i < 2) ? 0 : X.p[i - 2]; - T2.p[1] = (i < 1) ? 0 : X.p[i - 1]; - T2.p[2] = X.p[i]; - } - while( mpi_cmp_mpi( &T1, &T2 ) > 0 ); - - MPI_CHK( mpi_mul_int( &T1, &Y, Z.p[i - t - 1] ) ); - MPI_CHK( mpi_shift_l( &T1, biL * (i - t - 1) ) ); - MPI_CHK( mpi_sub_mpi( &X, &X, &T1 ) ); - - if( mpi_cmp_int( &X, 0 ) < 0 ) - { - MPI_CHK( mpi_copy( &T1, &Y ) ); - MPI_CHK( mpi_shift_l( &T1, biL * (i - t - 1) ) ); - MPI_CHK( mpi_add_mpi( &X, &X, &T1 ) ); - Z.p[i - t - 1]--; - } - } - - if( Q != NULL ) - { - mpi_copy( Q, &Z ); - Q->s = A->s * B->s; - } - - if( R != NULL ) - { - mpi_shift_r( &X, k ); - mpi_copy( R, &X ); - - R->s = A->s; - if( mpi_cmp_int( R, 0 ) == 0 ) - R->s = 1; - } - -cleanup: - - mpi_free( &X, &Y, &Z, &T1, &T2, NULL ); - - return( ret ); -} - -/* - * Division by int: A = Q * b + R - * - * Returns 0 if successful - * 1 if memory allocation failed - * POLARSSL_ERR_MPI_DIVISION_BY_ZERO if b == 0 - */ -int mpi_div_int( mpi *Q, mpi *R, mpi *A, int b ) -{ - mpi _B; - t_int p[1]; - - p[0] = ( b < 0 ) ? -b : b; - _B.s = ( b < 0 ) ? -1 : 1; - _B.n = 1; - _B.p = p; - - return( mpi_div_mpi( Q, R, A, &_B ) ); -} - -/* - * Modulo: R = A mod B - */ -int mpi_mod_mpi( mpi *R, mpi *A, mpi *B ) -{ - int ret; - - MPI_CHK( mpi_div_mpi( NULL, R, A, B ) ); - - while( mpi_cmp_int( R, 0 ) < 0 ) - MPI_CHK( mpi_add_mpi( R, R, B ) ); - - while( mpi_cmp_mpi( R, B ) >= 0 ) - MPI_CHK( mpi_sub_mpi( R, R, B ) ); - -cleanup: - - return( ret ); -} - -/* - * Modulo: r = A mod b - */ -int mpi_mod_int( t_int *r, mpi *A, int b ) -{ - int i; - t_int x, y, z; - - if( b == 0 ) - return( POLARSSL_ERR_MPI_DIVISION_BY_ZERO ); - - if( b < 0 ) - b = -b; - - /* - * handle trivial cases - */ - if( b == 1 ) - { - *r = 0; - return( 0 ); - } - - if( b == 2 ) - { - *r = A->p[0] & 1; - return( 0 ); - } - - /* - * general case - */ - for( i = A->n - 1, y = 0; i >= 0; i-- ) - { - x = A->p[i]; - y = ( y << biH ) | ( x >> biH ); - z = y / b; - y -= z * b; - - x <<= biH; - y = ( y << biH ) | ( x >> biH ); - z = y / b; - y -= z * b; - } - - *r = y; - - return( 0 ); -} - -/* - * Fast Montgomery initialization (thanks to Tom St Denis) - */ -static void mpi_montg_init( t_int *mm, mpi *N ) -{ - t_int x, m0 = N->p[0]; - - x = m0; - x += ( ( m0 + 2 ) & 4 ) << 1; - x *= ( 2 - ( m0 * x ) ); - - if( biL >= 16 ) x *= ( 2 - ( m0 * x ) ); - if( biL >= 32 ) x *= ( 2 - ( m0 * x ) ); - if( biL >= 64 ) x *= ( 2 - ( m0 * x ) ); - - *mm = ~x + 1; -} - -/* - * Montgomery multiplication: A = A * B * R^-1 mod N (HAC 14.36) - */ -static void mpi_montmul( mpi *A, mpi *B, mpi *N, t_int mm, mpi *T ) -{ - int i, n, m; - t_int u0, u1, *d; - - memset( T->p, 0, T->n * ciL ); - - d = T->p; - n = N->n; - m = ( B->n < n ) ? B->n : n; - - for( i = 0; i < n; i++ ) - { - /* - * T = (T + u0*B + u1*N) / 2^biL - */ - u0 = A->p[i]; - u1 = ( d[0] + u0 * B->p[0] ) * mm; - - mpi_mul_hlp( m, B->p, d, u0 ); - mpi_mul_hlp( n, N->p, d, u1 ); - - *d++ = u0; d[n + 1] = 0; - } - - memcpy( A->p, d, (n + 1) * ciL ); - - if( mpi_cmp_abs( A, N ) >= 0 ) - mpi_sub_hlp( n, N->p, A->p ); - else - /* prevent timing attacks */ - mpi_sub_hlp( n, A->p, T->p ); -} - -/* - * Montgomery reduction: A = A * R^-1 mod N - */ -static void mpi_montred( mpi *A, mpi *N, t_int mm, mpi *T ) -{ - t_int z = 1; - mpi U; - - U.n = U.s = z; - U.p = &z; - - mpi_montmul( A, &U, N, mm, T ); -} - -/* - * Sliding-window exponentiation: X = A^E mod N (HAC 14.85) - */ -int mpi_exp_mod( mpi *X, mpi *A, mpi *E, mpi *N, mpi *_RR ) -{ - int ret, i, j, wsize, wbits; - int bufsize, nblimbs, nbits; - t_int ei, mm, state; - mpi RR, T, W[64]; - - if( mpi_cmp_int( N, 0 ) < 0 || ( N->p[0] & 1 ) == 0 ) - return( POLARSSL_ERR_MPI_BAD_INPUT_DATA ); - - /* - * Init temps and window size - */ - mpi_montg_init( &mm, N ); - mpi_init( &RR, &T, NULL ); - memset( W, 0, sizeof( W ) ); - - i = mpi_msb( E ); - - wsize = ( i > 671 ) ? 6 : ( i > 239 ) ? 5 : - ( i > 79 ) ? 4 : ( i > 23 ) ? 3 : 1; - - j = N->n + 1; - MPI_CHK( mpi_grow( X, j ) ); - MPI_CHK( mpi_grow( &W[1], j ) ); - MPI_CHK( mpi_grow( &T, j * 2 ) ); - - /* - * If 1st call, pre-compute R^2 mod N - */ - if( _RR == NULL || _RR->p == NULL ) - { - MPI_CHK( mpi_lset( &RR, 1 ) ); - MPI_CHK( mpi_shift_l( &RR, N->n * 2 * biL ) ); - MPI_CHK( mpi_mod_mpi( &RR, &RR, N ) ); - - if( _RR != NULL ) - memcpy( _RR, &RR, sizeof( mpi ) ); - } - else - memcpy( &RR, _RR, sizeof( mpi ) ); - - /* - * W[1] = A * R^2 * R^-1 mod N = A * R mod N - */ - if( mpi_cmp_mpi( A, N ) >= 0 ) - mpi_mod_mpi( &W[1], A, N ); - else mpi_copy( &W[1], A ); - - mpi_montmul( &W[1], &RR, N, mm, &T ); - - /* - * X = R^2 * R^-1 mod N = R mod N - */ - MPI_CHK( mpi_copy( X, &RR ) ); - mpi_montred( X, N, mm, &T ); - - if( wsize > 1 ) - { - /* - * W[1 << (wsize - 1)] = W[1] ^ (wsize - 1) - */ - j = 1 << (wsize - 1); - - MPI_CHK( mpi_grow( &W[j], N->n + 1 ) ); - MPI_CHK( mpi_copy( &W[j], &W[1] ) ); - - for( i = 0; i < wsize - 1; i++ ) - mpi_montmul( &W[j], &W[j], N, mm, &T ); - - /* - * W[i] = W[i - 1] * W[1] - */ - for( i = j + 1; i < (1 << wsize); i++ ) - { - MPI_CHK( mpi_grow( &W[i], N->n + 1 ) ); - MPI_CHK( mpi_copy( &W[i], &W[i - 1] ) ); - - mpi_montmul( &W[i], &W[1], N, mm, &T ); - } - } - - nblimbs = E->n; - bufsize = 0; - nbits = 0; - wbits = 0; - state = 0; - - while( 1 ) - { - if( bufsize == 0 ) - { - if( nblimbs-- == 0 ) - break; - - bufsize = sizeof( t_int ) << 3; - } - - bufsize--; - - ei = (E->p[nblimbs] >> bufsize) & 1; - - /* - * skip leading 0s - */ - if( ei == 0 && state == 0 ) - continue; - - if( ei == 0 && state == 1 ) - { - /* - * out of window, square X - */ - mpi_montmul( X, X, N, mm, &T ); - continue; - } - - /* - * add ei to current window - */ - state = 2; - - nbits++; - wbits |= (ei << (wsize - nbits)); - - if( nbits == wsize ) - { - /* - * X = X^wsize R^-1 mod N - */ - for( i = 0; i < wsize; i++ ) - mpi_montmul( X, X, N, mm, &T ); - - /* - * X = X * W[wbits] R^-1 mod N - */ - mpi_montmul( X, &W[wbits], N, mm, &T ); - - state--; - nbits = 0; - wbits = 0; - } - } - - /* - * process the remaining bits - */ - for( i = 0; i < nbits; i++ ) - { - mpi_montmul( X, X, N, mm, &T ); - - wbits <<= 1; - - if( (wbits & (1 << wsize)) != 0 ) - mpi_montmul( X, &W[1], N, mm, &T ); - } - - /* - * X = A^E * R * R^-1 mod N = A^E mod N - */ - mpi_montred( X, N, mm, &T ); - -cleanup: - - for( i = (1 << (wsize - 1)); i < (1 << wsize); i++ ) - mpi_free( &W[i], NULL ); - - if( _RR != NULL ) - mpi_free( &W[1], &T, NULL ); - else mpi_free( &W[1], &T, &RR, NULL ); - - return( ret ); -} - -/* - * Greatest common divisor: G = gcd(A, B) (HAC 14.54) - */ -int mpi_gcd( mpi *G, mpi *A, mpi *B ) -{ - int ret, lz, lzt; - mpi TG, TA, TB; - - mpi_init( &TG, &TA, &TB, NULL ); - - MPI_CHK( mpi_copy( &TA, A ) ); - MPI_CHK( mpi_copy( &TB, B ) ); - - lz = mpi_lsb( &TA ); - lzt = mpi_lsb( &TB ); - - if ( lzt < lz ) - lz = lzt; - - MPI_CHK( mpi_shift_r( &TA, lz ) ); - MPI_CHK( mpi_shift_r( &TB, lz ) ); - - TA.s = TB.s = 1; - - while( mpi_cmp_int( &TA, 0 ) != 0 ) - { - MPI_CHK( mpi_shift_r( &TA, mpi_lsb( &TA ) ) ); - MPI_CHK( mpi_shift_r( &TB, mpi_lsb( &TB ) ) ); - - if( mpi_cmp_mpi( &TA, &TB ) >= 0 ) - { - MPI_CHK( mpi_sub_abs( &TA, &TA, &TB ) ); - MPI_CHK( mpi_shift_r( &TA, 1 ) ); - } - else - { - MPI_CHK( mpi_sub_abs( &TB, &TB, &TA ) ); - MPI_CHK( mpi_shift_r( &TB, 1 ) ); - } - } - - MPI_CHK( mpi_shift_l( &TB, lz ) ); - MPI_CHK( mpi_copy( G, &TB ) ); - -cleanup: - - mpi_free( &TB, &TA, &TG, NULL ); - - return( ret ); -} - -#if defined(POLARSSL_GENPRIME) - -/* - * Modular inverse: X = A^-1 mod N (HAC 14.61 / 14.64) - */ -int mpi_inv_mod( mpi *X, mpi *A, mpi *N ) -{ - int ret; - mpi G, TA, TU, U1, U2, TB, TV, V1, V2; - - if( mpi_cmp_int( N, 0 ) <= 0 ) - return( POLARSSL_ERR_MPI_BAD_INPUT_DATA ); - - mpi_init( &TA, &TU, &U1, &U2, &G, - &TB, &TV, &V1, &V2, NULL ); - - MPI_CHK( mpi_gcd( &G, A, N ) ); - - if( mpi_cmp_int( &G, 1 ) != 0 ) - { - ret = POLARSSL_ERR_MPI_NOT_ACCEPTABLE; - goto cleanup; - } - - MPI_CHK( mpi_mod_mpi( &TA, A, N ) ); - MPI_CHK( mpi_copy( &TU, &TA ) ); - MPI_CHK( mpi_copy( &TB, N ) ); - MPI_CHK( mpi_copy( &TV, N ) ); - - MPI_CHK( mpi_lset( &U1, 1 ) ); - MPI_CHK( mpi_lset( &U2, 0 ) ); - MPI_CHK( mpi_lset( &V1, 0 ) ); - MPI_CHK( mpi_lset( &V2, 1 ) ); - - do - { - while( ( TU.p[0] & 1 ) == 0 ) - { - MPI_CHK( mpi_shift_r( &TU, 1 ) ); - - if( ( U1.p[0] & 1 ) != 0 || ( U2.p[0] & 1 ) != 0 ) - { - MPI_CHK( mpi_add_mpi( &U1, &U1, &TB ) ); - MPI_CHK( mpi_sub_mpi( &U2, &U2, &TA ) ); - } - - MPI_CHK( mpi_shift_r( &U1, 1 ) ); - MPI_CHK( mpi_shift_r( &U2, 1 ) ); - } - - while( ( TV.p[0] & 1 ) == 0 ) - { - MPI_CHK( mpi_shift_r( &TV, 1 ) ); - - if( ( V1.p[0] & 1 ) != 0 || ( V2.p[0] & 1 ) != 0 ) - { - MPI_CHK( mpi_add_mpi( &V1, &V1, &TB ) ); - MPI_CHK( mpi_sub_mpi( &V2, &V2, &TA ) ); - } - - MPI_CHK( mpi_shift_r( &V1, 1 ) ); - MPI_CHK( mpi_shift_r( &V2, 1 ) ); - } - - if( mpi_cmp_mpi( &TU, &TV ) >= 0 ) - { - MPI_CHK( mpi_sub_mpi( &TU, &TU, &TV ) ); - MPI_CHK( mpi_sub_mpi( &U1, &U1, &V1 ) ); - MPI_CHK( mpi_sub_mpi( &U2, &U2, &V2 ) ); - } - else - { - MPI_CHK( mpi_sub_mpi( &TV, &TV, &TU ) ); - MPI_CHK( mpi_sub_mpi( &V1, &V1, &U1 ) ); - MPI_CHK( mpi_sub_mpi( &V2, &V2, &U2 ) ); - } - } - while( mpi_cmp_int( &TU, 0 ) != 0 ); - - while( mpi_cmp_int( &V1, 0 ) < 0 ) - MPI_CHK( mpi_add_mpi( &V1, &V1, N ) ); - - while( mpi_cmp_mpi( &V1, N ) >= 0 ) - MPI_CHK( mpi_sub_mpi( &V1, &V1, N ) ); - - MPI_CHK( mpi_copy( X, &V1 ) ); - -cleanup: - - mpi_free( &V2, &V1, &TV, &TB, &G, - &U2, &U1, &TU, &TA, NULL ); - - return( ret ); -} - -static const int small_prime[] = -{ - 3, 5, 7, 11, 13, 17, 19, 23, - 29, 31, 37, 41, 43, 47, 53, 59, - 61, 67, 71, 73, 79, 83, 89, 97, - 101, 103, 107, 109, 113, 127, 131, 137, - 139, 149, 151, 157, 163, 167, 173, 179, - 181, 191, 193, 197, 199, 211, 223, 227, - 229, 233, 239, 241, 251, 257, 263, 269, - 271, 277, 281, 283, 293, 307, 311, 313, - 317, 331, 337, 347, 349, 353, 359, 367, - 373, 379, 383, 389, 397, 401, 409, 419, - 421, 431, 433, 439, 443, 449, 457, 461, - 463, 467, 479, 487, 491, 499, 503, 509, - 521, 523, 541, 547, 557, 563, 569, 571, - 577, 587, 593, 599, 601, 607, 613, 617, - 619, 631, 641, 643, 647, 653, 659, 661, - 673, 677, 683, 691, 701, 709, 719, 727, - 733, 739, 743, 751, 757, 761, 769, 773, - 787, 797, 809, 811, 821, 823, 827, 829, - 839, 853, 857, 859, 863, 877, 881, 883, - 887, 907, 911, 919, 929, 937, 941, 947, - 953, 967, 971, 977, 983, 991, 997, -103 -}; - -/* - * Miller-Rabin primality test (HAC 4.24) - */ -int mpi_is_prime( mpi *X, int (*f_rng)(void *), void *p_rng ) -{ - int ret, i, j, n, s, xs; - mpi W, R, T, A, RR; - unsigned char *p; - - if( mpi_cmp_int( X, 0 ) == 0 ) - return( 0 ); - - mpi_init( &W, &R, &T, &A, &RR, NULL ); - - xs = X->s; X->s = 1; - - /* - * test trivial factors first - */ - if( ( X->p[0] & 1 ) == 0 ) - return( POLARSSL_ERR_MPI_NOT_ACCEPTABLE ); - - for( i = 0; small_prime[i] > 0; i++ ) - { - t_int r; - - if( mpi_cmp_int( X, small_prime[i] ) <= 0 ) - return( 0 ); - - MPI_CHK( mpi_mod_int( &r, X, small_prime[i] ) ); - - if( r == 0 ) - return( POLARSSL_ERR_MPI_NOT_ACCEPTABLE ); - } - - /* - * W = |X| - 1 - * R = W >> lsb( W ) - */ - s = mpi_lsb( &W ); - MPI_CHK( mpi_sub_int( &W, X, 1 ) ); - MPI_CHK( mpi_copy( &R, &W ) ); - MPI_CHK( mpi_shift_r( &R, s ) ); - - i = mpi_msb( X ); - /* - * HAC, table 4.4 - */ - n = ( ( i >= 1300 ) ? 2 : ( i >= 850 ) ? 3 : - ( i >= 650 ) ? 4 : ( i >= 350 ) ? 8 : - ( i >= 250 ) ? 12 : ( i >= 150 ) ? 18 : 27 ); - - for( i = 0; i < n; i++ ) - { - /* - * pick a random A, 1 < A < |X| - 1 - */ - MPI_CHK( mpi_grow( &A, X->n ) ); - - p = (unsigned char *) A.p; - for( j = 0; j < A.n * ciL; j++ ) - *p++ = (unsigned char) f_rng( p_rng ); - - j = mpi_msb( &A ) - mpi_msb( &W ); - MPI_CHK( mpi_shift_r( &A, j + 1 ) ); - A.p[0] |= 3; - - /* - * A = A^R mod |X| - */ - MPI_CHK( mpi_exp_mod( &A, &A, &R, X, &RR ) ); - - if( mpi_cmp_mpi( &A, &W ) == 0 || - mpi_cmp_int( &A, 1 ) == 0 ) - continue; - - j = 1; - while( j < s && mpi_cmp_mpi( &A, &W ) != 0 ) - { - /* - * A = A * A mod |X| - */ - MPI_CHK( mpi_mul_mpi( &T, &A, &A ) ); - MPI_CHK( mpi_mod_mpi( &A, &T, X ) ); - - if( mpi_cmp_int( &A, 1 ) == 0 ) - break; - - j++; - } - - /* - * not prime if A != |X| - 1 or A == 1 - */ - if( mpi_cmp_mpi( &A, &W ) != 0 || - mpi_cmp_int( &A, 1 ) == 0 ) - { - ret = POLARSSL_ERR_MPI_NOT_ACCEPTABLE; - break; - } - } - -cleanup: - - X->s = xs; - - mpi_free( &RR, &A, &T, &R, &W, NULL ); - - return( ret ); -} - -/* - * Prime number generation - */ -int mpi_gen_prime( mpi *X, int nbits, int dh_flag, - int (*f_rng)(void *), void *p_rng ) -{ - int ret, k, n; - unsigned char *p; - mpi Y; - - if( nbits < 3 ) - return( POLARSSL_ERR_MPI_BAD_INPUT_DATA ); - - mpi_init( &Y, NULL ); - - n = BITS_TO_LIMBS( nbits ); - - MPI_CHK( mpi_grow( X, n ) ); - MPI_CHK( mpi_lset( X, 0 ) ); - - p = (unsigned char *) X->p; - for( k = 0; k < X->n * ciL; k++ ) - *p++ = (unsigned char) f_rng( p_rng ); - - k = mpi_msb( X ); - if( k < nbits ) MPI_CHK( mpi_shift_l( X, nbits - k ) ); - if( k > nbits ) MPI_CHK( mpi_shift_r( X, k - nbits ) ); - - X->p[0] |= 3; - - if( dh_flag == 0 ) - { - while( ( ret = mpi_is_prime( X, f_rng, p_rng ) ) != 0 ) - { - if( ret != POLARSSL_ERR_MPI_NOT_ACCEPTABLE ) - goto cleanup; - - MPI_CHK( mpi_add_int( X, X, 2 ) ); - } - } - else - { - MPI_CHK( mpi_sub_int( &Y, X, 1 ) ); - MPI_CHK( mpi_shift_r( &Y, 1 ) ); - - while( 1 ) - { - if( ( ret = mpi_is_prime( X, f_rng, p_rng ) ) == 0 ) - { - if( ( ret = mpi_is_prime( &Y, f_rng, p_rng ) ) == 0 ) - break; - - if( ret != POLARSSL_ERR_MPI_NOT_ACCEPTABLE ) - goto cleanup; - } - - if( ret != POLARSSL_ERR_MPI_NOT_ACCEPTABLE ) - goto cleanup; - - MPI_CHK( mpi_add_int( &Y, X, 1 ) ); - MPI_CHK( mpi_add_int( X, X, 2 ) ); - MPI_CHK( mpi_shift_r( &Y, 1 ) ); - } - } - -cleanup: - - mpi_free( &Y, NULL ); - - return( ret ); -} - -#endif - -#if defined(POLARSSL_SELF_TEST) - -#define GCD_PAIR_COUNT 3 - -static const int gcd_pairs[GCD_PAIR_COUNT][3] = -{ - { 693, 609, 21 }, - { 1764, 868, 28 }, - { 768454923, 542167814, 1 } -}; - -/* - * Checkup routine - */ -int mpi_self_test( int verbose ) -{ - int ret, i; - mpi A, E, N, X, Y, U, V; - - mpi_init( &A, &E, &N, &X, &Y, &U, &V, NULL ); - - MPI_CHK( mpi_read_string( &A, 16, - "EFE021C2645FD1DC586E69184AF4A31E" \ - "D5F53E93B5F123FA41680867BA110131" \ - "944FE7952E2517337780CB0DB80E61AA" \ - "E7C8DDC6C5C6AADEB34EB38A2F40D5E6" ) ); - - MPI_CHK( mpi_read_string( &E, 16, - "B2E7EFD37075B9F03FF989C7C5051C20" \ - "34D2A323810251127E7BF8625A4F49A5" \ - "F3E27F4DA8BD59C47D6DAABA4C8127BD" \ - "5B5C25763222FEFCCFC38B832366C29E" ) ); - - MPI_CHK( mpi_read_string( &N, 16, - "0066A198186C18C10B2F5ED9B522752A" \ - "9830B69916E535C8F047518A889A43A5" \ - "94B6BED27A168D31D4A52F88925AA8F5" ) ); - - MPI_CHK( mpi_mul_mpi( &X, &A, &N ) ); - - MPI_CHK( mpi_read_string( &U, 16, - "602AB7ECA597A3D6B56FF9829A5E8B85" \ - "9E857EA95A03512E2BAE7391688D264A" \ - "A5663B0341DB9CCFD2C4C5F421FEC814" \ - "8001B72E848A38CAE1C65F78E56ABDEF" \ - "E12D3C039B8A02D6BE593F0BBBDA56F1" \ - "ECF677152EF804370C1A305CAF3B5BF1" \ - "30879B56C61DE584A0F53A2447A51E" ) ); - - if( verbose != 0 ) - printf( " MPI test #1 (mul_mpi): " ); - - if( mpi_cmp_mpi( &X, &U ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n" ); - - MPI_CHK( mpi_div_mpi( &X, &Y, &A, &N ) ); - - MPI_CHK( mpi_read_string( &U, 16, - "256567336059E52CAE22925474705F39A94" ) ); - - MPI_CHK( mpi_read_string( &V, 16, - "6613F26162223DF488E9CD48CC132C7A" \ - "0AC93C701B001B092E4E5B9F73BCD27B" \ - "9EE50D0657C77F374E903CDFA4C642" ) ); - - if( verbose != 0 ) - printf( " MPI test #2 (div_mpi): " ); - - if( mpi_cmp_mpi( &X, &U ) != 0 || - mpi_cmp_mpi( &Y, &V ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n" ); - - MPI_CHK( mpi_exp_mod( &X, &A, &E, &N, NULL ) ); - - MPI_CHK( mpi_read_string( &U, 16, - "36E139AEA55215609D2816998ED020BB" \ - "BD96C37890F65171D948E9BC7CBAA4D9" \ - "325D24D6A3C12710F10A09FA08AB87" ) ); - - if( verbose != 0 ) - printf( " MPI test #3 (exp_mod): " ); - - if( mpi_cmp_mpi( &X, &U ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n" ); - - MPI_CHK( mpi_inv_mod( &X, &A, &N ) ); - - MPI_CHK( mpi_read_string( &U, 16, - "003A0AAEDD7E784FC07D8F9EC6E3BFD5" \ - "C3DBA76456363A10869622EAC2DD84EC" \ - "C5B8A74DAC4D09E03B5E0BE779F2DF61" ) ); - - if( verbose != 0 ) - printf( " MPI test #4 (inv_mod): " ); - - if( mpi_cmp_mpi( &X, &U ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n" ); - - if( verbose != 0 ) - printf( " MPI test #5 (simple gcd): " ); - - for ( i = 0; i < GCD_PAIR_COUNT; i++) - { - MPI_CHK( mpi_lset( &X, gcd_pairs[i][0] ) ); - MPI_CHK( mpi_lset( &Y, gcd_pairs[i][1] ) ); - - MPI_CHK( mpi_gcd( &A, &X, &Y ) ); - - if( mpi_cmp_int( &A, gcd_pairs[i][2] ) != 0 ) - { - if( verbose != 0 ) - printf( "failed at %d\n", i ); - - return( 1 ); - } - } - - if( verbose != 0 ) - printf( "passed\n" ); - -cleanup: - - if( ret != 0 && verbose != 0 ) - printf( "Unexpected error, return code = %08X\n", ret ); - - mpi_free( &V, &U, &Y, &X, &N, &E, &A, NULL ); - - if( verbose != 0 ) - printf( "\n" ); - - return( ret ); -} - -#endif - -#endif diff --git a/package/luci/libs/luci-lib-px5g/src/library/havege.c b/package/luci/libs/luci-lib-px5g/src/library/havege.c deleted file mode 100644 index 266299d3bb..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/library/havege.c +++ /dev/null @@ -1,276 +0,0 @@ -/* - * HAVEGE: HArdware Volatile Entropy Gathering and Expansion - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -/* - * The HAVEGE RNG was designed by Andre Seznec in 2002. - * - * http://www.irisa.fr/caps/projects/hipsor/publi.php - * - * Contact: seznec(at)irisa_dot_fr - orocheco(at)irisa_dot_fr - */ - -#include -#include - -#include "polarssl/config.h" - -#if defined(POLARSSL_HAVEGE_C) - -#include "polarssl/havege.h" -#include "polarssl/timing.h" - -/* ------------------------------------------------------------------------ - * On average, one iteration accesses two 8-word blocks in the havege WALK - * table, and generates 16 words in the RES array. - * - * The data read in the WALK table is updated and permuted after each use. - * The result of the hardware clock counter read is used for this update. - * - * 25 conditional tests are present. The conditional tests are grouped in - * two nested groups of 12 conditional tests and 1 test that controls the - * permutation; on average, there should be 6 tests executed and 3 of them - * should be mispredicted. - * ------------------------------------------------------------------------ - */ - -#define SWAP(X,Y) { int *T = X; X = Y; Y = T; } - -#define TST1_ENTER if( PTEST & 1 ) { PTEST ^= 3; PTEST >>= 1; -#define TST2_ENTER if( PTEST & 1 ) { PTEST ^= 3; PTEST >>= 1; - -#define TST1_LEAVE U1++; } -#define TST2_LEAVE U2++; } - -#define ONE_ITERATION \ - \ - PTEST = PT1 >> 20; \ - \ - TST1_ENTER TST1_ENTER TST1_ENTER TST1_ENTER \ - TST1_ENTER TST1_ENTER TST1_ENTER TST1_ENTER \ - TST1_ENTER TST1_ENTER TST1_ENTER TST1_ENTER \ - \ - TST1_LEAVE TST1_LEAVE TST1_LEAVE TST1_LEAVE \ - TST1_LEAVE TST1_LEAVE TST1_LEAVE TST1_LEAVE \ - TST1_LEAVE TST1_LEAVE TST1_LEAVE TST1_LEAVE \ - \ - PTX = (PT1 >> 18) & 7; \ - PT1 &= 0x1FFF; \ - PT2 &= 0x1FFF; \ - CLK = (int) hardclock(); \ - \ - i = 0; \ - A = &WALK[PT1 ]; RES[i++] ^= *A; \ - B = &WALK[PT2 ]; RES[i++] ^= *B; \ - C = &WALK[PT1 ^ 1]; RES[i++] ^= *C; \ - D = &WALK[PT2 ^ 4]; RES[i++] ^= *D; \ - \ - IN = (*A >> (1)) ^ (*A << (31)) ^ CLK; \ - *A = (*B >> (2)) ^ (*B << (30)) ^ CLK; \ - *B = IN ^ U1; \ - *C = (*C >> (3)) ^ (*C << (29)) ^ CLK; \ - *D = (*D >> (4)) ^ (*D << (28)) ^ CLK; \ - \ - A = &WALK[PT1 ^ 2]; RES[i++] ^= *A; \ - B = &WALK[PT2 ^ 2]; RES[i++] ^= *B; \ - C = &WALK[PT1 ^ 3]; RES[i++] ^= *C; \ - D = &WALK[PT2 ^ 6]; RES[i++] ^= *D; \ - \ - if( PTEST & 1 ) SWAP( A, C ); \ - \ - IN = (*A >> (5)) ^ (*A << (27)) ^ CLK; \ - *A = (*B >> (6)) ^ (*B << (26)) ^ CLK; \ - *B = IN; CLK = (int) hardclock(); \ - *C = (*C >> (7)) ^ (*C << (25)) ^ CLK; \ - *D = (*D >> (8)) ^ (*D << (24)) ^ CLK; \ - \ - A = &WALK[PT1 ^ 4]; \ - B = &WALK[PT2 ^ 1]; \ - \ - PTEST = PT2 >> 1; \ - \ - PT2 = (RES[(i - 8) ^ PTY] ^ WALK[PT2 ^ PTY ^ 7]); \ - PT2 = ((PT2 & 0x1FFF) & (~8)) ^ ((PT1 ^ 8) & 0x8); \ - PTY = (PT2 >> 10) & 7; \ - \ - TST2_ENTER TST2_ENTER TST2_ENTER TST2_ENTER \ - TST2_ENTER TST2_ENTER TST2_ENTER TST2_ENTER \ - TST2_ENTER TST2_ENTER TST2_ENTER TST2_ENTER \ - \ - TST2_LEAVE TST2_LEAVE TST2_LEAVE TST2_LEAVE \ - TST2_LEAVE TST2_LEAVE TST2_LEAVE TST2_LEAVE \ - TST2_LEAVE TST2_LEAVE TST2_LEAVE TST2_LEAVE \ - \ - C = &WALK[PT1 ^ 5]; \ - D = &WALK[PT2 ^ 5]; \ - \ - RES[i++] ^= *A; \ - RES[i++] ^= *B; \ - RES[i++] ^= *C; \ - RES[i++] ^= *D; \ - \ - IN = (*A >> ( 9)) ^ (*A << (23)) ^ CLK; \ - *A = (*B >> (10)) ^ (*B << (22)) ^ CLK; \ - *B = IN ^ U2; \ - *C = (*C >> (11)) ^ (*C << (21)) ^ CLK; \ - *D = (*D >> (12)) ^ (*D << (20)) ^ CLK; \ - \ - A = &WALK[PT1 ^ 6]; RES[i++] ^= *A; \ - B = &WALK[PT2 ^ 3]; RES[i++] ^= *B; \ - C = &WALK[PT1 ^ 7]; RES[i++] ^= *C; \ - D = &WALK[PT2 ^ 7]; RES[i++] ^= *D; \ - \ - IN = (*A >> (13)) ^ (*A << (19)) ^ CLK; \ - *A = (*B >> (14)) ^ (*B << (18)) ^ CLK; \ - *B = IN; \ - *C = (*C >> (15)) ^ (*C << (17)) ^ CLK; \ - *D = (*D >> (16)) ^ (*D << (16)) ^ CLK; \ - \ - PT1 = ( RES[(i - 8) ^ PTX] ^ \ - WALK[PT1 ^ PTX ^ 7] ) & (~1); \ - PT1 ^= (PT2 ^ 0x10) & 0x10; \ - \ - for( n++, i = 0; i < 16; i++ ) \ - hs->pool[n % COLLECT_SIZE] ^= RES[i]; - -/* - * Entropy gathering function - */ -static void havege_fill( havege_state *hs ) -{ - int i, n = 0; - int U1, U2, *A, *B, *C, *D; - int PT1, PT2, *WALK, RES[16]; - int PTX, PTY, CLK, PTEST, IN; - - WALK = hs->WALK; - PT1 = hs->PT1; - PT2 = hs->PT2; - - PTX = U1 = 0; - PTY = U2 = 0; - - memset( RES, 0, sizeof( RES ) ); - - while( n < COLLECT_SIZE * 4 ) - { - ONE_ITERATION - ONE_ITERATION - ONE_ITERATION - ONE_ITERATION - } - - hs->PT1 = PT1; - hs->PT2 = PT2; - - hs->offset[0] = 0; - hs->offset[1] = COLLECT_SIZE / 2; -} - -/* - * HAVEGE initialization - */ -void havege_init( havege_state *hs ) -{ - memset( hs, 0, sizeof( havege_state ) ); - - havege_fill( hs ); -} - -/* - * HAVEGE rand function - */ -int havege_rand( void *p_rng ) -{ - int ret; - havege_state *hs = (havege_state *) p_rng; - - if( hs->offset[1] >= COLLECT_SIZE ) - havege_fill( hs ); - - ret = hs->pool[hs->offset[0]++]; - ret ^= hs->pool[hs->offset[1]++]; - - return( ret ); -} - -#if defined(POLARSSL_RAND_TEST) - -#include - -int main( int argc, char *argv[] ) -{ - FILE *f; - time_t t; - int i, j, k; - havege_state hs; - unsigned char buf[1024]; - - if( argc < 2 ) - { - fprintf( stderr, "usage: %s \n", argv[0] ); - return( 1 ); - } - - if( ( f = fopen( argv[1], "wb+" ) ) == NULL ) - { - printf( "failed to open '%s' for writing.\n", argv[0] ); - return( 1 ); - } - - havege_init( &hs ); - - t = time( NULL ); - - for( i = 0, k = 32768; i < k; i++ ) - { - for( j = 0; j < sizeof( buf ); j++ ) - buf[j] = havege_rand( &hs ); - - fwrite( buf, sizeof( buf ), 1, f ); - - printf( "Generating 32Mb of data in file '%s'... %04.1f" \ - "%% done\r", argv[1], (100 * (float) (i + 1)) / k ); - fflush( stdout ); - } - - if( t == time( NULL ) ) - t--; - - fclose( f ); - return( 0 ); -} - -#endif - -#endif diff --git a/package/luci/libs/luci-lib-px5g/src/library/rsa.c b/package/luci/libs/luci-lib-px5g/src/library/rsa.c deleted file mode 100644 index 131b6c6c9c..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/library/rsa.c +++ /dev/null @@ -1,750 +0,0 @@ -/* - * The RSA public-key cryptosystem - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -/* - * RSA was designed by Ron Rivest, Adi Shamir and Len Adleman. - * - * http://theory.lcs.mit.edu/~rivest/rsapaper.pdf - * http://www.cacr.math.uwaterloo.ca/hac/about/chap8.pdf - */ - -#include "polarssl/config.h" - -#if defined(POLARSSL_RSA_C) - -#include "polarssl/rsa.h" - -#include -#include -#include - -/* - * Initialize an RSA context - */ -void rsa_init( rsa_context *ctx, - int padding, - int hash_id, - int (*f_rng)(void *), - void *p_rng ) -{ - memset( ctx, 0, sizeof( rsa_context ) ); - - ctx->padding = padding; - ctx->hash_id = hash_id; - - ctx->f_rng = f_rng; - ctx->p_rng = p_rng; -} - -#if defined(POLARSSL_GENPRIME) - -/* - * Generate an RSA keypair - */ -int rsa_gen_key( rsa_context *ctx, int nbits, int exponent ) -{ - int ret; - mpi P1, Q1, H, G; - - if( ctx->f_rng == NULL || nbits < 128 || exponent < 3 ) - return( POLARSSL_ERR_RSA_BAD_INPUT_DATA ); - - mpi_init( &P1, &Q1, &H, &G, NULL ); - - /* - * find primes P and Q with Q < P so that: - * GCD( E, (P-1)*(Q-1) ) == 1 - */ - MPI_CHK( mpi_lset( &ctx->E, exponent ) ); - - do - { - MPI_CHK( mpi_gen_prime( &ctx->P, ( nbits + 1 ) >> 1, 0, - ctx->f_rng, ctx->p_rng ) ); - - MPI_CHK( mpi_gen_prime( &ctx->Q, ( nbits + 1 ) >> 1, 0, - ctx->f_rng, ctx->p_rng ) ); - - if( mpi_cmp_mpi( &ctx->P, &ctx->Q ) < 0 ) - mpi_swap( &ctx->P, &ctx->Q ); - - if( mpi_cmp_mpi( &ctx->P, &ctx->Q ) == 0 ) - continue; - - MPI_CHK( mpi_mul_mpi( &ctx->N, &ctx->P, &ctx->Q ) ); - if( mpi_msb( &ctx->N ) != nbits ) - continue; - - MPI_CHK( mpi_sub_int( &P1, &ctx->P, 1 ) ); - MPI_CHK( mpi_sub_int( &Q1, &ctx->Q, 1 ) ); - MPI_CHK( mpi_mul_mpi( &H, &P1, &Q1 ) ); - MPI_CHK( mpi_gcd( &G, &ctx->E, &H ) ); - } - while( mpi_cmp_int( &G, 1 ) != 0 ); - - /* - * D = E^-1 mod ((P-1)*(Q-1)) - * DP = D mod (P - 1) - * DQ = D mod (Q - 1) - * QP = Q^-1 mod P - */ - MPI_CHK( mpi_inv_mod( &ctx->D , &ctx->E, &H ) ); - MPI_CHK( mpi_mod_mpi( &ctx->DP, &ctx->D, &P1 ) ); - MPI_CHK( mpi_mod_mpi( &ctx->DQ, &ctx->D, &Q1 ) ); - MPI_CHK( mpi_inv_mod( &ctx->QP, &ctx->Q, &ctx->P ) ); - - ctx->len = ( mpi_msb( &ctx->N ) + 7 ) >> 3; - -cleanup: - - mpi_free( &G, &H, &Q1, &P1, NULL ); - - if( ret != 0 ) - { - rsa_free( ctx ); - return( POLARSSL_ERR_RSA_KEY_GEN_FAILED | ret ); - } - - return( 0 ); -} - -#endif - -/* - * Check a public RSA key - */ -int rsa_check_pubkey( rsa_context *ctx ) -{ - if( ( ctx->N.p[0] & 1 ) == 0 || - ( ctx->E.p[0] & 1 ) == 0 ) - return( POLARSSL_ERR_RSA_KEY_CHECK_FAILED ); - - if( mpi_msb( &ctx->N ) < 128 || - mpi_msb( &ctx->N ) > 4096 ) - return( POLARSSL_ERR_RSA_KEY_CHECK_FAILED ); - - if( mpi_msb( &ctx->E ) < 2 || - mpi_msb( &ctx->E ) > 64 ) - return( POLARSSL_ERR_RSA_KEY_CHECK_FAILED ); - - return( 0 ); -} - -/* - * Check a private RSA key - */ -int rsa_check_privkey( rsa_context *ctx ) -{ - int ret; - mpi PQ, DE, P1, Q1, H, I, G; - - if( ( ret = rsa_check_pubkey( ctx ) ) != 0 ) - return( ret ); - - mpi_init( &PQ, &DE, &P1, &Q1, &H, &I, &G, NULL ); - - MPI_CHK( mpi_mul_mpi( &PQ, &ctx->P, &ctx->Q ) ); - MPI_CHK( mpi_mul_mpi( &DE, &ctx->D, &ctx->E ) ); - MPI_CHK( mpi_sub_int( &P1, &ctx->P, 1 ) ); - MPI_CHK( mpi_sub_int( &Q1, &ctx->Q, 1 ) ); - MPI_CHK( mpi_mul_mpi( &H, &P1, &Q1 ) ); - MPI_CHK( mpi_mod_mpi( &I, &DE, &H ) ); - MPI_CHK( mpi_gcd( &G, &ctx->E, &H ) ); - - if( mpi_cmp_mpi( &PQ, &ctx->N ) == 0 && - mpi_cmp_int( &I, 1 ) == 0 && - mpi_cmp_int( &G, 1 ) == 0 ) - { - mpi_free( &G, &I, &H, &Q1, &P1, &DE, &PQ, NULL ); - return( 0 ); - } - -cleanup: - - mpi_free( &G, &I, &H, &Q1, &P1, &DE, &PQ, NULL ); - return( POLARSSL_ERR_RSA_KEY_CHECK_FAILED | ret ); -} - -/* - * Do an RSA public key operation - */ -int rsa_public( rsa_context *ctx, - unsigned char *input, - unsigned char *output ) -{ - int ret, olen; - mpi T; - - mpi_init( &T, NULL ); - - MPI_CHK( mpi_read_binary( &T, input, ctx->len ) ); - - if( mpi_cmp_mpi( &T, &ctx->N ) >= 0 ) - { - mpi_free( &T, NULL ); - return( POLARSSL_ERR_RSA_BAD_INPUT_DATA ); - } - - olen = ctx->len; - MPI_CHK( mpi_exp_mod( &T, &T, &ctx->E, &ctx->N, &ctx->RN ) ); - MPI_CHK( mpi_write_binary( &T, output, olen ) ); - -cleanup: - - mpi_free( &T, NULL ); - - if( ret != 0 ) - return( POLARSSL_ERR_RSA_PUBLIC_FAILED | ret ); - - return( 0 ); -} - -/* - * Do an RSA private key operation - */ -int rsa_private( rsa_context *ctx, - unsigned char *input, - unsigned char *output ) -{ - int ret, olen; - mpi T, T1, T2; - - mpi_init( &T, &T1, &T2, NULL ); - - MPI_CHK( mpi_read_binary( &T, input, ctx->len ) ); - - if( mpi_cmp_mpi( &T, &ctx->N ) >= 0 ) - { - mpi_free( &T, NULL ); - return( POLARSSL_ERR_RSA_BAD_INPUT_DATA ); - } - -#if 0 - MPI_CHK( mpi_exp_mod( &T, &T, &ctx->D, &ctx->N, &ctx->RN ) ); -#else - /* - * faster decryption using the CRT - * - * T1 = input ^ dP mod P - * T2 = input ^ dQ mod Q - */ - MPI_CHK( mpi_exp_mod( &T1, &T, &ctx->DP, &ctx->P, &ctx->RP ) ); - MPI_CHK( mpi_exp_mod( &T2, &T, &ctx->DQ, &ctx->Q, &ctx->RQ ) ); - - /* - * T = (T1 - T2) * (Q^-1 mod P) mod P - */ - MPI_CHK( mpi_sub_mpi( &T, &T1, &T2 ) ); - MPI_CHK( mpi_mul_mpi( &T1, &T, &ctx->QP ) ); - MPI_CHK( mpi_mod_mpi( &T, &T1, &ctx->P ) ); - - /* - * output = T2 + T * Q - */ - MPI_CHK( mpi_mul_mpi( &T1, &T, &ctx->Q ) ); - MPI_CHK( mpi_add_mpi( &T, &T2, &T1 ) ); -#endif - - olen = ctx->len; - MPI_CHK( mpi_write_binary( &T, output, olen ) ); - -cleanup: - - mpi_free( &T, &T1, &T2, NULL ); - - if( ret != 0 ) - return( POLARSSL_ERR_RSA_PRIVATE_FAILED | ret ); - - return( 0 ); -} - -/* - * Add the message padding, then do an RSA operation - */ -int rsa_pkcs1_encrypt( rsa_context *ctx, - int mode, int ilen, - unsigned char *input, - unsigned char *output ) -{ - int nb_pad, olen; - unsigned char *p = output; - - olen = ctx->len; - - switch( ctx->padding ) - { - case RSA_PKCS_V15: - - if( ilen < 0 || olen < ilen + 11 ) - return( POLARSSL_ERR_RSA_BAD_INPUT_DATA ); - - nb_pad = olen - 3 - ilen; - - *p++ = 0; - *p++ = RSA_CRYPT; - - while( nb_pad-- > 0 ) - { - do { - *p = (unsigned char) rand(); - } while( *p == 0 ); - p++; - } - *p++ = 0; - memcpy( p, input, ilen ); - break; - - default: - - return( POLARSSL_ERR_RSA_INVALID_PADDING ); - } - - return( ( mode == RSA_PUBLIC ) - ? rsa_public( ctx, output, output ) - : rsa_private( ctx, output, output ) ); -} - -/* - * Do an RSA operation, then remove the message padding - */ -int rsa_pkcs1_decrypt( rsa_context *ctx, - int mode, int *olen, - unsigned char *input, - unsigned char *output, - int output_max_len) -{ - int ret, ilen; - unsigned char *p; - unsigned char buf[512]; - - ilen = ctx->len; - - if( ilen < 16 || ilen > (int) sizeof( buf ) ) - return( POLARSSL_ERR_RSA_BAD_INPUT_DATA ); - - ret = ( mode == RSA_PUBLIC ) - ? rsa_public( ctx, input, buf ) - : rsa_private( ctx, input, buf ); - - if( ret != 0 ) - return( ret ); - - p = buf; - - switch( ctx->padding ) - { - case RSA_PKCS_V15: - - if( *p++ != 0 || *p++ != RSA_CRYPT ) - return( POLARSSL_ERR_RSA_INVALID_PADDING ); - - while( *p != 0 ) - { - if( p >= buf + ilen - 1 ) - return( POLARSSL_ERR_RSA_INVALID_PADDING ); - p++; - } - p++; - break; - - default: - - return( POLARSSL_ERR_RSA_INVALID_PADDING ); - } - - if (ilen - (int)(p - buf) > output_max_len) - return( POLARSSL_ERR_RSA_OUTPUT_TO_LARGE ); - - *olen = ilen - (int)(p - buf); - memcpy( output, p, *olen ); - - return( 0 ); -} - -/* - * Do an RSA operation to sign the message digest - */ -int rsa_pkcs1_sign( rsa_context *ctx, - int mode, - int hash_id, - int hashlen, - unsigned char *hash, - unsigned char *sig ) -{ - int nb_pad, olen; - unsigned char *p = sig; - - olen = ctx->len; - - switch( ctx->padding ) - { - case RSA_PKCS_V15: - - switch( hash_id ) - { - case RSA_RAW: - nb_pad = olen - 3 - hashlen; - break; - - case RSA_MD2: - case RSA_MD4: - case RSA_MD5: - nb_pad = olen - 3 - 34; - break; - - case RSA_SHA1: - nb_pad = olen - 3 - 35; - break; - - default: - return( POLARSSL_ERR_RSA_BAD_INPUT_DATA ); - } - - if( nb_pad < 8 ) - return( POLARSSL_ERR_RSA_BAD_INPUT_DATA ); - - *p++ = 0; - *p++ = RSA_SIGN; - memset( p, 0xFF, nb_pad ); - p += nb_pad; - *p++ = 0; - break; - - default: - - return( POLARSSL_ERR_RSA_INVALID_PADDING ); - } - - switch( hash_id ) - { - case RSA_RAW: - memcpy( p, hash, hashlen ); - break; - - case RSA_MD2: - memcpy( p, ASN1_HASH_MDX, 18 ); - memcpy( p + 18, hash, 16 ); - p[13] = 2; break; - - case RSA_MD4: - memcpy( p, ASN1_HASH_MDX, 18 ); - memcpy( p + 18, hash, 16 ); - p[13] = 4; break; - - case RSA_MD5: - memcpy( p, ASN1_HASH_MDX, 18 ); - memcpy( p + 18, hash, 16 ); - p[13] = 5; break; - - case RSA_SHA1: - memcpy( p, ASN1_HASH_SHA1, 15 ); - memcpy( p + 15, hash, 20 ); - break; - - default: - return( POLARSSL_ERR_RSA_BAD_INPUT_DATA ); - } - - return( ( mode == RSA_PUBLIC ) - ? rsa_public( ctx, sig, sig ) - : rsa_private( ctx, sig, sig ) ); -} - -/* - * Do an RSA operation and check the message digest - */ -int rsa_pkcs1_verify( rsa_context *ctx, - int mode, - int hash_id, - int hashlen, - unsigned char *hash, - unsigned char *sig ) -{ - int ret, len, siglen; - unsigned char *p, c; - unsigned char buf[512]; - - siglen = ctx->len; - - if( siglen < 16 || siglen > (int) sizeof( buf ) ) - return( POLARSSL_ERR_RSA_BAD_INPUT_DATA ); - - ret = ( mode == RSA_PUBLIC ) - ? rsa_public( ctx, sig, buf ) - : rsa_private( ctx, sig, buf ); - - if( ret != 0 ) - return( ret ); - - p = buf; - - switch( ctx->padding ) - { - case RSA_PKCS_V15: - - if( *p++ != 0 || *p++ != RSA_SIGN ) - return( POLARSSL_ERR_RSA_INVALID_PADDING ); - - while( *p != 0 ) - { - if( p >= buf + siglen - 1 || *p != 0xFF ) - return( POLARSSL_ERR_RSA_INVALID_PADDING ); - p++; - } - p++; - break; - - default: - - return( POLARSSL_ERR_RSA_INVALID_PADDING ); - } - - len = siglen - (int)( p - buf ); - - if( len == 34 ) - { - c = p[13]; - p[13] = 0; - - if( memcmp( p, ASN1_HASH_MDX, 18 ) != 0 ) - return( POLARSSL_ERR_RSA_VERIFY_FAILED ); - - if( ( c == 2 && hash_id == RSA_MD2 ) || - ( c == 4 && hash_id == RSA_MD4 ) || - ( c == 5 && hash_id == RSA_MD5 ) ) - { - if( memcmp( p + 18, hash, 16 ) == 0 ) - return( 0 ); - else - return( POLARSSL_ERR_RSA_VERIFY_FAILED ); - } - } - - if( len == 35 && hash_id == RSA_SHA1 ) - { - if( memcmp( p, ASN1_HASH_SHA1, 15 ) == 0 && - memcmp( p + 15, hash, 20 ) == 0 ) - return( 0 ); - else - return( POLARSSL_ERR_RSA_VERIFY_FAILED ); - } - - if( len == hashlen && hash_id == RSA_RAW ) - { - if( memcmp( p, hash, hashlen ) == 0 ) - return( 0 ); - else - return( POLARSSL_ERR_RSA_VERIFY_FAILED ); - } - - return( POLARSSL_ERR_RSA_INVALID_PADDING ); -} - -/* - * Free the components of an RSA key - */ -void rsa_free( rsa_context *ctx ) -{ - mpi_free( &ctx->RQ, &ctx->RP, &ctx->RN, - &ctx->QP, &ctx->DQ, &ctx->DP, - &ctx->Q, &ctx->P, &ctx->D, - &ctx->E, &ctx->N, NULL ); -} - -#if defined(POLARSSL_SELF_TEST) - -#include "polarssl/sha1.h" - -/* - * Example RSA-1024 keypair, for test purposes - */ -#define KEY_LEN 128 - -#define RSA_N "9292758453063D803DD603D5E777D788" \ - "8ED1D5BF35786190FA2F23EBC0848AEA" \ - "DDA92CA6C3D80B32C4D109BE0F36D6AE" \ - "7130B9CED7ACDF54CFC7555AC14EEBAB" \ - "93A89813FBF3C4F8066D2D800F7C38A8" \ - "1AE31942917403FF4946B0A83D3D3E05" \ - "EE57C6F5F5606FB5D4BC6CD34EE0801A" \ - "5E94BB77B07507233A0BC7BAC8F90F79" - -#define RSA_E "10001" - -#define RSA_D "24BF6185468786FDD303083D25E64EFC" \ - "66CA472BC44D253102F8B4A9D3BFA750" \ - "91386C0077937FE33FA3252D28855837" \ - "AE1B484A8A9A45F7EE8C0C634F99E8CD" \ - "DF79C5CE07EE72C7F123142198164234" \ - "CABB724CF78B8173B9F880FC86322407" \ - "AF1FEDFDDE2BEB674CA15F3E81A1521E" \ - "071513A1E85B5DFA031F21ECAE91A34D" - -#define RSA_P "C36D0EB7FCD285223CFB5AABA5BDA3D8" \ - "2C01CAD19EA484A87EA4377637E75500" \ - "FCB2005C5C7DD6EC4AC023CDA285D796" \ - "C3D9E75E1EFC42488BB4F1D13AC30A57" - -#define RSA_Q "C000DF51A7C77AE8D7C7370C1FF55B69" \ - "E211C2B9E5DB1ED0BF61D0D9899620F4" \ - "910E4168387E3C30AA1E00C339A79508" \ - "8452DD96A9A5EA5D9DCA68DA636032AF" - -#define RSA_DP "C1ACF567564274FB07A0BBAD5D26E298" \ - "3C94D22288ACD763FD8E5600ED4A702D" \ - "F84198A5F06C2E72236AE490C93F07F8" \ - "3CC559CD27BC2D1CA488811730BB5725" - -#define RSA_DQ "4959CBF6F8FEF750AEE6977C155579C7" \ - "D8AAEA56749EA28623272E4F7D0592AF" \ - "7C1F1313CAC9471B5C523BFE592F517B" \ - "407A1BD76C164B93DA2D32A383E58357" - -#define RSA_QP "9AE7FBC99546432DF71896FC239EADAE" \ - "F38D18D2B2F0E2DD275AA977E2BF4411" \ - "F5A3B2A5D33605AEBBCCBA7FEB9F2D2F" \ - "A74206CEC169D74BF5A8C50D6F48EA08" - -#define PT_LEN 24 -#define RSA_PT "\xAA\xBB\xCC\x03\x02\x01\x00\xFF\xFF\xFF\xFF\xFF" \ - "\x11\x22\x33\x0A\x0B\x0C\xCC\xDD\xDD\xDD\xDD\xDD" - -/* - * Checkup routine - */ -int rsa_self_test( int verbose ) -{ - int len; - rsa_context rsa; - unsigned char sha1sum[20]; - unsigned char rsa_plaintext[PT_LEN]; - unsigned char rsa_decrypted[PT_LEN]; - unsigned char rsa_ciphertext[KEY_LEN]; - - memset( &rsa, 0, sizeof( rsa_context ) ); - - rsa.len = KEY_LEN; - mpi_read_string( &rsa.N , 16, RSA_N ); - mpi_read_string( &rsa.E , 16, RSA_E ); - mpi_read_string( &rsa.D , 16, RSA_D ); - mpi_read_string( &rsa.P , 16, RSA_P ); - mpi_read_string( &rsa.Q , 16, RSA_Q ); - mpi_read_string( &rsa.DP, 16, RSA_DP ); - mpi_read_string( &rsa.DQ, 16, RSA_DQ ); - mpi_read_string( &rsa.QP, 16, RSA_QP ); - - if( verbose != 0 ) - printf( " RSA key validation: " ); - - if( rsa_check_pubkey( &rsa ) != 0 || - rsa_check_privkey( &rsa ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n PKCS#1 encryption : " ); - - memcpy( rsa_plaintext, RSA_PT, PT_LEN ); - - if( rsa_pkcs1_encrypt( &rsa, RSA_PUBLIC, PT_LEN, - rsa_plaintext, rsa_ciphertext ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n PKCS#1 decryption : " ); - - if( rsa_pkcs1_decrypt( &rsa, RSA_PRIVATE, &len, - rsa_ciphertext, rsa_decrypted, - sizeof(rsa_decrypted) ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( memcmp( rsa_decrypted, rsa_plaintext, len ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n PKCS#1 data sign : " ); - - sha1( rsa_plaintext, PT_LEN, sha1sum ); - - if( rsa_pkcs1_sign( &rsa, RSA_PRIVATE, RSA_SHA1, 20, - sha1sum, rsa_ciphertext ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n PKCS#1 sig. verify: " ); - - if( rsa_pkcs1_verify( &rsa, RSA_PUBLIC, RSA_SHA1, 20, - sha1sum, rsa_ciphertext ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n\n" ); - - rsa_free( &rsa ); - - return( 0 ); -} - -#endif - -#endif diff --git a/package/luci/libs/luci-lib-px5g/src/library/sha1.c b/package/luci/libs/luci-lib-px5g/src/library/sha1.c deleted file mode 100644 index 54a4416f31..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/library/sha1.c +++ /dev/null @@ -1,622 +0,0 @@ -/* - * FIPS-180-1 compliant SHA-1 implementation - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -/* - * The SHA-1 standard was published by NIST in 1993. - * - * http://www.itl.nist.gov/fipspubs/fip180-1.htm - */ - -#include "polarssl/config.h" - -#if defined(POLARSSL_SHA1_C) - -#include "polarssl/sha1.h" - -#include -#include - -/* - * 32-bit integer manipulation macros (big endian) - */ -#ifndef GET_ULONG_BE -#define GET_ULONG_BE(n,b,i) \ -{ \ - (n) = ( (unsigned long) (b)[(i) ] << 24 ) \ - | ( (unsigned long) (b)[(i) + 1] << 16 ) \ - | ( (unsigned long) (b)[(i) + 2] << 8 ) \ - | ( (unsigned long) (b)[(i) + 3] ); \ -} -#endif - -#ifndef PUT_ULONG_BE -#define PUT_ULONG_BE(n,b,i) \ -{ \ - (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) ); \ -} -#endif - -/* - * SHA-1 context setup - */ -void sha1_starts( sha1_context *ctx ) -{ - ctx->total[0] = 0; - ctx->total[1] = 0; - - ctx->state[0] = 0x67452301; - ctx->state[1] = 0xEFCDAB89; - ctx->state[2] = 0x98BADCFE; - ctx->state[3] = 0x10325476; - ctx->state[4] = 0xC3D2E1F0; -} - -static void sha1_process( sha1_context *ctx, unsigned char data[64] ) -{ - unsigned long temp, W[16], A, B, C, D, E; - - GET_ULONG_BE( W[ 0], data, 0 ); - GET_ULONG_BE( W[ 1], data, 4 ); - GET_ULONG_BE( W[ 2], data, 8 ); - GET_ULONG_BE( W[ 3], data, 12 ); - GET_ULONG_BE( W[ 4], data, 16 ); - GET_ULONG_BE( W[ 5], data, 20 ); - GET_ULONG_BE( W[ 6], data, 24 ); - GET_ULONG_BE( W[ 7], data, 28 ); - GET_ULONG_BE( W[ 8], data, 32 ); - GET_ULONG_BE( W[ 9], data, 36 ); - GET_ULONG_BE( W[10], data, 40 ); - GET_ULONG_BE( W[11], data, 44 ); - GET_ULONG_BE( W[12], data, 48 ); - GET_ULONG_BE( W[13], data, 52 ); - GET_ULONG_BE( W[14], data, 56 ); - GET_ULONG_BE( W[15], data, 60 ); - -#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) - -#define R(t) \ -( \ - temp = W[(t - 3) & 0x0F] ^ W[(t - 8) & 0x0F] ^ \ - W[(t - 14) & 0x0F] ^ W[ t & 0x0F], \ - ( W[t & 0x0F] = S(temp,1) ) \ -) - -#define P(a,b,c,d,e,x) \ -{ \ - e += S(a,5) + F(b,c,d) + K + x; b = S(b,30); \ -} - - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - E = ctx->state[4]; - -#define F(x,y,z) (z ^ (x & (y ^ z))) -#define K 0x5A827999 - - P( A, B, C, D, E, W[0] ); - P( E, A, B, C, D, W[1] ); - P( D, E, A, B, C, W[2] ); - P( C, D, E, A, B, W[3] ); - P( B, C, D, E, A, W[4] ); - P( A, B, C, D, E, W[5] ); - P( E, A, B, C, D, W[6] ); - P( D, E, A, B, C, W[7] ); - P( C, D, E, A, B, W[8] ); - P( B, C, D, E, A, W[9] ); - P( A, B, C, D, E, W[10] ); - P( E, A, B, C, D, W[11] ); - P( D, E, A, B, C, W[12] ); - P( C, D, E, A, B, W[13] ); - P( B, C, D, E, A, W[14] ); - P( A, B, C, D, E, W[15] ); - P( E, A, B, C, D, R(16) ); - P( D, E, A, B, C, R(17) ); - P( C, D, E, A, B, R(18) ); - P( B, C, D, E, A, R(19) ); - -#undef K -#undef F - -#define F(x,y,z) (x ^ y ^ z) -#define K 0x6ED9EBA1 - - P( A, B, C, D, E, R(20) ); - P( E, A, B, C, D, R(21) ); - P( D, E, A, B, C, R(22) ); - P( C, D, E, A, B, R(23) ); - P( B, C, D, E, A, R(24) ); - P( A, B, C, D, E, R(25) ); - P( E, A, B, C, D, R(26) ); - P( D, E, A, B, C, R(27) ); - P( C, D, E, A, B, R(28) ); - P( B, C, D, E, A, R(29) ); - P( A, B, C, D, E, R(30) ); - P( E, A, B, C, D, R(31) ); - P( D, E, A, B, C, R(32) ); - P( C, D, E, A, B, R(33) ); - P( B, C, D, E, A, R(34) ); - P( A, B, C, D, E, R(35) ); - P( E, A, B, C, D, R(36) ); - P( D, E, A, B, C, R(37) ); - P( C, D, E, A, B, R(38) ); - P( B, C, D, E, A, R(39) ); - -#undef K -#undef F - -#define F(x,y,z) ((x & y) | (z & (x | y))) -#define K 0x8F1BBCDC - - P( A, B, C, D, E, R(40) ); - P( E, A, B, C, D, R(41) ); - P( D, E, A, B, C, R(42) ); - P( C, D, E, A, B, R(43) ); - P( B, C, D, E, A, R(44) ); - P( A, B, C, D, E, R(45) ); - P( E, A, B, C, D, R(46) ); - P( D, E, A, B, C, R(47) ); - P( C, D, E, A, B, R(48) ); - P( B, C, D, E, A, R(49) ); - P( A, B, C, D, E, R(50) ); - P( E, A, B, C, D, R(51) ); - P( D, E, A, B, C, R(52) ); - P( C, D, E, A, B, R(53) ); - P( B, C, D, E, A, R(54) ); - P( A, B, C, D, E, R(55) ); - P( E, A, B, C, D, R(56) ); - P( D, E, A, B, C, R(57) ); - P( C, D, E, A, B, R(58) ); - P( B, C, D, E, A, R(59) ); - -#undef K -#undef F - -#define F(x,y,z) (x ^ y ^ z) -#define K 0xCA62C1D6 - - P( A, B, C, D, E, R(60) ); - P( E, A, B, C, D, R(61) ); - P( D, E, A, B, C, R(62) ); - P( C, D, E, A, B, R(63) ); - P( B, C, D, E, A, R(64) ); - P( A, B, C, D, E, R(65) ); - P( E, A, B, C, D, R(66) ); - P( D, E, A, B, C, R(67) ); - P( C, D, E, A, B, R(68) ); - P( B, C, D, E, A, R(69) ); - P( A, B, C, D, E, R(70) ); - P( E, A, B, C, D, R(71) ); - P( D, E, A, B, C, R(72) ); - P( C, D, E, A, B, R(73) ); - P( B, C, D, E, A, R(74) ); - P( A, B, C, D, E, R(75) ); - P( E, A, B, C, D, R(76) ); - P( D, E, A, B, C, R(77) ); - P( C, D, E, A, B, R(78) ); - P( B, C, D, E, A, R(79) ); - -#undef K -#undef F - - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; - ctx->state[4] += E; -} - -/* - * SHA-1 process buffer - */ -void sha1_update( sha1_context *ctx, unsigned char *input, int ilen ) -{ - int fill; - unsigned long left; - - if( ilen <= 0 ) - return; - - left = ctx->total[0] & 0x3F; - fill = 64 - left; - - ctx->total[0] += ilen; - ctx->total[0] &= 0xFFFFFFFF; - - if( ctx->total[0] < (unsigned long) ilen ) - ctx->total[1]++; - - if( left && ilen >= fill ) - { - memcpy( (void *) (ctx->buffer + left), - (void *) input, fill ); - sha1_process( ctx, ctx->buffer ); - input += fill; - ilen -= fill; - left = 0; - } - - while( ilen >= 64 ) - { - sha1_process( ctx, input ); - input += 64; - ilen -= 64; - } - - if( ilen > 0 ) - { - memcpy( (void *) (ctx->buffer + left), - (void *) input, ilen ); - } -} - -static const unsigned char sha1_padding[64] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -/* - * SHA-1 final digest - */ -void sha1_finish( sha1_context *ctx, unsigned char output[20] ) -{ - unsigned long last, padn; - unsigned long high, low; - unsigned char msglen[8]; - - high = ( ctx->total[0] >> 29 ) - | ( ctx->total[1] << 3 ); - low = ( ctx->total[0] << 3 ); - - PUT_ULONG_BE( high, msglen, 0 ); - PUT_ULONG_BE( low, msglen, 4 ); - - last = ctx->total[0] & 0x3F; - padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); - - sha1_update( ctx, (unsigned char *) sha1_padding, padn ); - sha1_update( ctx, msglen, 8 ); - - PUT_ULONG_BE( ctx->state[0], output, 0 ); - PUT_ULONG_BE( ctx->state[1], output, 4 ); - PUT_ULONG_BE( ctx->state[2], output, 8 ); - PUT_ULONG_BE( ctx->state[3], output, 12 ); - PUT_ULONG_BE( ctx->state[4], output, 16 ); -} - -/* - * output = SHA-1( input buffer ) - */ -void sha1( unsigned char *input, int ilen, unsigned char output[20] ) -{ - sha1_context ctx; - - sha1_starts( &ctx ); - sha1_update( &ctx, input, ilen ); - sha1_finish( &ctx, output ); - - memset( &ctx, 0, sizeof( sha1_context ) ); -} - -/* - * output = SHA-1( file contents ) - */ -int sha1_file( char *path, unsigned char output[20] ) -{ - FILE *f; - size_t n; - sha1_context ctx; - unsigned char buf[1024]; - - if( ( f = fopen( path, "rb" ) ) == NULL ) - return( 1 ); - - sha1_starts( &ctx ); - - while( ( n = fread( buf, 1, sizeof( buf ), f ) ) > 0 ) - sha1_update( &ctx, buf, (int) n ); - - sha1_finish( &ctx, output ); - - memset( &ctx, 0, sizeof( sha1_context ) ); - - if( ferror( f ) != 0 ) - { - fclose( f ); - return( 2 ); - } - - fclose( f ); - return( 0 ); -} - -/* - * SHA-1 HMAC context setup - */ -void sha1_hmac_starts( sha1_context *ctx, unsigned char *key, int keylen ) -{ - int i; - unsigned char sum[20]; - - if( keylen > 64 ) - { - sha1( key, keylen, sum ); - keylen = 20; - key = sum; - } - - memset( ctx->ipad, 0x36, 64 ); - memset( ctx->opad, 0x5C, 64 ); - - for( i = 0; i < keylen; i++ ) - { - ctx->ipad[i] = (unsigned char)( ctx->ipad[i] ^ key[i] ); - ctx->opad[i] = (unsigned char)( ctx->opad[i] ^ key[i] ); - } - - sha1_starts( ctx ); - sha1_update( ctx, ctx->ipad, 64 ); - - memset( sum, 0, sizeof( sum ) ); -} - -/* - * SHA-1 HMAC process buffer - */ -void sha1_hmac_update( sha1_context *ctx, unsigned char *input, int ilen ) -{ - sha1_update( ctx, input, ilen ); -} - -/* - * SHA-1 HMAC final digest - */ -void sha1_hmac_finish( sha1_context *ctx, unsigned char output[20] ) -{ - unsigned char tmpbuf[20]; - - sha1_finish( ctx, tmpbuf ); - sha1_starts( ctx ); - sha1_update( ctx, ctx->opad, 64 ); - sha1_update( ctx, tmpbuf, 20 ); - sha1_finish( ctx, output ); - - memset( tmpbuf, 0, sizeof( tmpbuf ) ); -} - -/* - * output = HMAC-SHA-1( hmac key, input buffer ) - */ -void sha1_hmac( unsigned char *key, int keylen, - unsigned char *input, int ilen, - unsigned char output[20] ) -{ - sha1_context ctx; - - sha1_hmac_starts( &ctx, key, keylen ); - sha1_hmac_update( &ctx, input, ilen ); - sha1_hmac_finish( &ctx, output ); - - memset( &ctx, 0, sizeof( sha1_context ) ); -} - -#if defined(POLARSSL_SELF_TEST) -/* - * FIPS-180-1 test vectors - */ -static unsigned char sha1_test_buf[3][57] = -{ - { "abc" }, - { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" }, - { "" } -}; - -static const int sha1_test_buflen[3] = -{ - 3, 56, 1000 -}; - -static const unsigned char sha1_test_sum[3][20] = -{ - { 0xA9, 0x99, 0x3E, 0x36, 0x47, 0x06, 0x81, 0x6A, 0xBA, 0x3E, - 0x25, 0x71, 0x78, 0x50, 0xC2, 0x6C, 0x9C, 0xD0, 0xD8, 0x9D }, - { 0x84, 0x98, 0x3E, 0x44, 0x1C, 0x3B, 0xD2, 0x6E, 0xBA, 0xAE, - 0x4A, 0xA1, 0xF9, 0x51, 0x29, 0xE5, 0xE5, 0x46, 0x70, 0xF1 }, - { 0x34, 0xAA, 0x97, 0x3C, 0xD4, 0xC4, 0xDA, 0xA4, 0xF6, 0x1E, - 0xEB, 0x2B, 0xDB, 0xAD, 0x27, 0x31, 0x65, 0x34, 0x01, 0x6F } -}; - -/* - * RFC 2202 test vectors - */ -static unsigned char sha1_hmac_test_key[7][26] = -{ - { "\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B" - "\x0B\x0B\x0B\x0B" }, - { "Jefe" }, - { "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" - "\xAA\xAA\xAA\xAA" }, - { "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10" - "\x11\x12\x13\x14\x15\x16\x17\x18\x19" }, - { "\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C" - "\x0C\x0C\x0C\x0C" }, - { "" }, /* 0xAA 80 times */ - { "" } -}; - -static const int sha1_hmac_test_keylen[7] = -{ - 20, 4, 20, 25, 20, 80, 80 -}; - -static unsigned char sha1_hmac_test_buf[7][74] = -{ - { "Hi There" }, - { "what do ya want for nothing?" }, - { "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" - "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" - "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" - "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" - "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" }, - { "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD" - "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD" - "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD" - "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD" - "\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD" }, - { "Test With Truncation" }, - { "Test Using Larger Than Block-Size Key - Hash Key First" }, - { "Test Using Larger Than Block-Size Key and Larger" - " Than One Block-Size Data" } -}; - -static const int sha1_hmac_test_buflen[7] = -{ - 8, 28, 50, 50, 20, 54, 73 -}; - -static const unsigned char sha1_hmac_test_sum[7][20] = -{ - { 0xB6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, 0xE2, 0x8B, - 0xC0, 0xB6, 0xFB, 0x37, 0x8C, 0x8E, 0xF1, 0x46, 0xBE, 0x00 }, - { 0xEF, 0xFC, 0xDF, 0x6A, 0xE5, 0xEB, 0x2F, 0xA2, 0xD2, 0x74, - 0x16, 0xD5, 0xF1, 0x84, 0xDF, 0x9C, 0x25, 0x9A, 0x7C, 0x79 }, - { 0x12, 0x5D, 0x73, 0x42, 0xB9, 0xAC, 0x11, 0xCD, 0x91, 0xA3, - 0x9A, 0xF4, 0x8A, 0xA1, 0x7B, 0x4F, 0x63, 0xF1, 0x75, 0xD3 }, - { 0x4C, 0x90, 0x07, 0xF4, 0x02, 0x62, 0x50, 0xC6, 0xBC, 0x84, - 0x14, 0xF9, 0xBF, 0x50, 0xC8, 0x6C, 0x2D, 0x72, 0x35, 0xDA }, - { 0x4C, 0x1A, 0x03, 0x42, 0x4B, 0x55, 0xE0, 0x7F, 0xE7, 0xF2, - 0x7B, 0xE1 }, - { 0xAA, 0x4A, 0xE5, 0xE1, 0x52, 0x72, 0xD0, 0x0E, 0x95, 0x70, - 0x56, 0x37, 0xCE, 0x8A, 0x3B, 0x55, 0xED, 0x40, 0x21, 0x12 }, - { 0xE8, 0xE9, 0x9D, 0x0F, 0x45, 0x23, 0x7D, 0x78, 0x6D, 0x6B, - 0xBA, 0xA7, 0x96, 0x5C, 0x78, 0x08, 0xBB, 0xFF, 0x1A, 0x91 } -}; - -/* - * Checkup routine - */ -int sha1_self_test( int verbose ) -{ - int i, j, buflen; - unsigned char buf[1024]; - unsigned char sha1sum[20]; - sha1_context ctx; - - /* - * SHA-1 - */ - for( i = 0; i < 3; i++ ) - { - if( verbose != 0 ) - printf( " SHA-1 test #%d: ", i + 1 ); - - sha1_starts( &ctx ); - - if( i == 2 ) - { - memset( buf, 'a', buflen = 1000 ); - - for( j = 0; j < 1000; j++ ) - sha1_update( &ctx, buf, buflen ); - } - else - sha1_update( &ctx, sha1_test_buf[i], - sha1_test_buflen[i] ); - - sha1_finish( &ctx, sha1sum ); - - if( memcmp( sha1sum, sha1_test_sum[i], 20 ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n" ); - } - - if( verbose != 0 ) - printf( "\n" ); - - for( i = 0; i < 7; i++ ) - { - if( verbose != 0 ) - printf( " HMAC-SHA-1 test #%d: ", i + 1 ); - - if( i == 5 || i == 6 ) - { - memset( buf, '\xAA', buflen = 80 ); - sha1_hmac_starts( &ctx, buf, buflen ); - } - else - sha1_hmac_starts( &ctx, sha1_hmac_test_key[i], - sha1_hmac_test_keylen[i] ); - - sha1_hmac_update( &ctx, sha1_hmac_test_buf[i], - sha1_hmac_test_buflen[i] ); - - sha1_hmac_finish( &ctx, sha1sum ); - - buflen = ( i == 4 ) ? 12 : 20; - - if( memcmp( sha1sum, sha1_hmac_test_sum[i], buflen ) != 0 ) - { - if( verbose != 0 ) - printf( "failed\n" ); - - return( 1 ); - } - - if( verbose != 0 ) - printf( "passed\n" ); - } - - if( verbose != 0 ) - printf( "\n" ); - - return( 0 ); -} - -#endif - -#endif diff --git a/package/luci/libs/luci-lib-px5g/src/library/timing.c b/package/luci/libs/luci-lib-px5g/src/library/timing.c deleted file mode 100644 index 6b7ab740e1..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/library/timing.c +++ /dev/null @@ -1,265 +0,0 @@ -/* - * Portable interface to the CPU cycle counter - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "polarssl/config.h" - -#if defined(POLARSSL_TIMING_C) - -#include "polarssl/timing.h" - -#if defined(WIN32) - -#include -#include - -struct _hr_time -{ - LARGE_INTEGER start; -}; - -#else - -#include -#include -#include -#include -#include - -struct _hr_time -{ - struct timeval start; -}; - -#endif - -#if (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__) - -unsigned long hardclock( void ) -{ - unsigned long tsc; - __asm rdtsc - __asm mov [tsc], eax - return( tsc ); -} - -#else -#if defined(__GNUC__) && defined(__i386__) - -unsigned long hardclock( void ) -{ - unsigned long tsc; - asm( "rdtsc" : "=a" (tsc) ); - return( tsc ); -} - -#else -#if defined(__GNUC__) && (defined(__amd64__) || defined(__x86_64__)) - -unsigned long hardclock( void ) -{ - unsigned long lo, hi; - asm( "rdtsc" : "=a" (lo), "=d" (hi) ); - return( lo | (hi << 32) ); -} - -#else -#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) - -unsigned long hardclock( void ) -{ - unsigned long tbl, tbu0, tbu1; - - do - { - asm( "mftbu %0" : "=r" (tbu0) ); - asm( "mftb %0" : "=r" (tbl ) ); - asm( "mftbu %0" : "=r" (tbu1) ); - } - while( tbu0 != tbu1 ); - - return( tbl ); -} - -#else -#if defined(__GNUC__) && defined(__sparc__) - -unsigned long hardclock( void ) -{ - unsigned long tick; - asm( ".byte 0x83, 0x41, 0x00, 0x00" ); - asm( "mov %%g1, %0" : "=r" (tick) ); - return( tick ); -} - -#else -#if defined(__GNUC__) && defined(__alpha__) - -unsigned long hardclock( void ) -{ - unsigned long cc; - asm( "rpcc %0" : "=r" (cc) ); - return( cc & 0xFFFFFFFF ); -} - -#else -#if defined(__GNUC__) && defined(__ia64__) - -unsigned long hardclock( void ) -{ - unsigned long itc; - asm( "mov %0 = ar.itc" : "=r" (itc) ); - return( itc ); -} - -#else - -static int hardclock_init = 0; -static struct timeval tv_init; - -unsigned long hardclock( void ) -{ - struct timeval tv_cur; - - if( hardclock_init == 0 ) - { - gettimeofday( &tv_init, NULL ); - hardclock_init = 1; - } - - gettimeofday( &tv_cur, NULL ); - return( ( tv_cur.tv_sec - tv_init.tv_sec ) * 1000000 - + ( tv_cur.tv_usec - tv_init.tv_usec ) ); -} - -#endif /* generic */ -#endif /* IA-64 */ -#endif /* Alpha */ -#endif /* SPARC8 */ -#endif /* PowerPC */ -#endif /* AMD64 */ -#endif /* i586+ */ - -int alarmed = 0; - -#if defined(WIN32) - -unsigned long get_timer( struct hr_time *val, int reset ) -{ - unsigned long delta; - LARGE_INTEGER offset, hfreq; - struct _hr_time *t = (struct _hr_time *) val; - - QueryPerformanceCounter( &offset ); - QueryPerformanceFrequency( &hfreq ); - - delta = (unsigned long)( ( 1000 * - ( offset.QuadPart - t->start.QuadPart ) ) / - hfreq.QuadPart ); - - if( reset ) - QueryPerformanceCounter( &t->start ); - - return( delta ); -} - -DWORD WINAPI TimerProc( LPVOID uElapse ) -{ - Sleep( (DWORD) uElapse ); - alarmed = 1; - return( TRUE ); -} - -void set_alarm( int seconds ) -{ - DWORD ThreadId; - - alarmed = 0; - CloseHandle( CreateThread( NULL, 0, TimerProc, - (LPVOID) ( seconds * 1000 ), 0, &ThreadId ) ); -} - -void m_sleep( int milliseconds ) -{ - Sleep( milliseconds ); -} - -#else - -unsigned long get_timer( struct hr_time *val, int reset ) -{ - unsigned long delta; - struct timeval offset; - struct _hr_time *t = (struct _hr_time *) val; - - gettimeofday( &offset, NULL ); - - delta = ( offset.tv_sec - t->start.tv_sec ) * 1000 - + ( offset.tv_usec - t->start.tv_usec ) / 1000; - - if( reset ) - { - t->start.tv_sec = offset.tv_sec; - t->start.tv_usec = offset.tv_usec; - } - - return( delta ); -} - -static void sighandler( int signum ) -{ - alarmed = 1; - signal( signum, sighandler ); -} - -void set_alarm( int seconds ) -{ - alarmed = 0; - signal( SIGALRM, sighandler ); - alarm( seconds ); -} - -void m_sleep( int milliseconds ) -{ - struct timeval tv; - - tv.tv_sec = milliseconds / 1000; - tv.tv_usec = milliseconds * 1000; - - select( 0, NULL, NULL, NULL, &tv ); -} - -#endif - -#endif diff --git a/package/luci/libs/luci-lib-px5g/src/library/x509write.c b/package/luci/libs/luci-lib-px5g/src/library/x509write.c deleted file mode 100644 index 173610c1a0..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/library/x509write.c +++ /dev/null @@ -1,1137 +0,0 @@ -/* - * X.509 certificate and private key writing - * - * Copyright (C) 2006-2007 Pascal Vizeli - * Modifications (C) 2009 Steven Barth - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License, version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ -/* - * The ITU-T X.509 standard defines a certificat format for PKI. - * - * http://www.ietf.org/rfc/rfc2459.txt - * http://www.ietf.org/rfc/rfc3279.txt - * - * ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-1v2.asc - * - * http://www.itu.int/ITU-T/studygroups/com17/languages/X.680-0207.pdf - * http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf - * - * For CRS: - * http://www.faqs.org/rfcs/rfc2314.html - */ -#include "polarssl/config.h" -#include "polarssl/x509.h" -/* #include "polarssl/base64.h" */ -#include "polarssl/sha1.h" - -#include -#include -#include -#include -#include - -#define and && -#define or || - -#if defined _MSC_VER && !defined snprintf -#define snprintf _snprintf -#endif - -static int x509write_realloc_node(x509_node *node, size_t larger); -static int x509write_file(x509_node *node, char *path, int format, const char* pem_prolog, const char* pem_epilog); - -/* - * evaluate how mani octet have this integer - */ -static int asn1_eval_octet(unsigned int digit) -{ - int i, byte; - - for (byte = 4, i = 24; i >= 0; i -= 8, --byte) - if (((digit >> i) & 0xFF) != 0) - return byte; - - return 0; -} - -/* - * write the asn.1 lenght form into p - */ -static int asn1_add_len(unsigned int size, x509_node *node) -{ - if (size > 127) { - - /* long size */ - int byte = asn1_eval_octet(size); - int i = 0; - - *(node->p) = (0x80 | byte) & 0xFF; - ++node->p; - - for (i = byte; i > 0; --i) { - - *(node->p) = (size >> ((i - 1) * 8)) & 0xFF; - ++node->p; - } - - } else { - - /* short size */ - *(node->p) = size & 0xFF; - if (size != 0) - ++node->p; - } - - return 0; -} - -/* - * write a ans.1 object into p - */ -static int asn1_add_obj(unsigned char *value, unsigned int size, int tag, - x509_node *node) -{ - int tl = 2; - - if (tag == ASN1_BIT_STRING) - ++tl; - - if (size > 127) - x509write_realloc_node(node, (size_t) size + tl + - asn1_eval_octet(size)); - else - x509write_realloc_node(node, (size_t) size + tl); - - if (node->data == NULL) - return 1; - - /* tag */ - *(node->p) = tag & 0xFF; - ++node->p; - - /* len */ - if (tag == ASN1_BIT_STRING) { - asn1_add_len((unsigned int) size + 1, node); - *(node->p) = 0x00; - ++node->p; - } else { - asn1_add_len((unsigned int) size, node); - } - - /* value */ - if (size > 0) { - - memcpy(node->p, value, (size_t) size); - if ((node->p += size -1) != node->end) - return POLARSSL_ERR_X509_POINT_ERROR; - } else { - /* make nothing -> NULL */ - } - - return 0; -} - -/* - * write a asn.1 conform integer object - */ -static int asn1_add_int(signed int value, x509_node *node) -{ - signed int i = 0, neg = 1; - unsigned int byte, u_val = 0, tmp_val = 0; - - /* if negate? */ - if (value < 0) { - neg = -1; - u_val = ~value; - } else { - u_val = value; - } - - byte = asn1_eval_octet(u_val); - /* 0 isn't NULL */ - if (byte == 0) - byte = 1; - - /* ASN.1 integer is signed! */ - if (byte < 4 and ((u_val >> ((byte -1) * 8)) & 0xFF) == 0x80) - byte += 1; - - if (x509write_realloc_node(node, (size_t) byte + 2) != 0) - return 1; - - /* tag */ - *(node->p) = ASN1_INTEGER; - ++node->p; - - /* len */ - asn1_add_len(byte, node); - - /* value */ - for (i = byte; i > 0; --i) { - - tmp_val = (u_val >> ((i - 1) * 8)) & 0xFF; - if (neg == 1) - *(node->p) = tmp_val; - else - *(node->p) = ~tmp_val; - - if (i > 1) - ++node->p; - } - - if (node->p != node->end) - return POLARSSL_ERR_X509_POINT_ERROR; - - return 0; -} - -/* - * write a asn.1 conform mpi object - */ -static int asn1_add_mpi(mpi *value, int tag, x509_node *node) -{ - size_t size = (mpi_msb(value) / 8) + 1; - unsigned char *buf; - int buf_len = (int) size, tl = 2; - - if (tag == ASN1_BIT_STRING) - ++tl; - - if (size > 127) - x509write_realloc_node(node, size + (size_t) tl + - asn1_eval_octet((unsigned int)size)); - else - x509write_realloc_node(node, size + (size_t) tl); - - if (node->data == NULL) - return 1; - - buf = (unsigned char*) malloc(size); - if (mpi_write_binary(value, buf, buf_len) != 0) - return POLARSSL_ERR_MPI_BUFFER_TOO_SMALL; - - /* tag */ - *(node->p) = tag & 0xFF; - ++node->p; - - /* len */ - if (tag == ASN1_BIT_STRING) { - asn1_add_len((unsigned int) size + 1, node); - *(node->p) = 0x00; - ++node->p; - } else { - asn1_add_len((unsigned int) size, node); - } - - /* value */ - memcpy(node->p, buf, size); - free(buf); - - if ((node->p += (int) size -1) != node->end) - return POLARSSL_ERR_X509_POINT_ERROR; - - return 0; -} - -/* - * write a node into asn.1 conform object - */ -static int asn1_append_tag(x509_node *node, int tag) -{ - int tl = 2; - - x509_node tmp; - x509write_init_node(&tmp); - - if (tag == ASN1_BIT_STRING) - ++tl; - - if (node->len > 127) - x509write_realloc_node(&tmp, node->len + (size_t) tl + - asn1_eval_octet((unsigned int)node->len)); - else - x509write_realloc_node(&tmp, node->len + (size_t) tl); - - if (tmp.data == NULL) { - x509write_free_node(&tmp); - return 1; - } - - /* tag */ - *(tmp.p) = tag & 0xFF; - ++tmp.p; - - /* len */ - if (tag == ASN1_BIT_STRING) { - asn1_add_len((unsigned int) node->len + 1, &tmp); - *(tmp.p) = 0x00; - ++tmp.p; - } else { - asn1_add_len((unsigned int) node->len, &tmp); - } - - /* value */ - memcpy(tmp.p, node->data, node->len); - - /* good? */ - if ((tmp.p += (int) node->len -1) != tmp.end) { - x509write_free_node(&tmp); - return POLARSSL_ERR_X509_POINT_ERROR; - } - - free(node->data); - node->data = tmp.data; - node->p = tmp.p; - node->end = tmp.end; - node->len = tmp.len; - - return 0; -} - -/* - * write nodes into a asn.1 object - */ -static int asn1_append_nodes(x509_node *node, int tag, int anz, ...) -{ - va_list ap; - size_t size = 0; - x509_node *tmp; - int count; - - va_start(ap, anz); - count = anz; - - while (count--) { - - tmp = va_arg(ap, x509_node*); - if (tmp->data != NULL) - size += tmp->len; - } - - if ( size > 127) { - if (x509write_realloc_node(node, size + (size_t) 2 + - asn1_eval_octet(size)) != 0) - return 1; - } else { - if (x509write_realloc_node(node, size + (size_t) 2) != 0) - return 1; - } - - /* tag */ - *(node->p) = tag & 0xFF; - ++node->p; - - /* len */ - asn1_add_len(size, node); - - /* value */ - va_start(ap, anz); - count = anz; - - while (count--) { - - tmp = va_arg(ap, x509_node*); - if (tmp->data != NULL) { - - memcpy(node->p, tmp->data, tmp->len); - if ((node->p += (int) tmp->len -1) != node->end) - ++node->p; - } - } - - va_end(ap); - return 0; -} - -/* - * write a ASN.1 conform object identifiere include a "tag" - */ -static int asn1_add_oid(x509_node *node, unsigned char *oid, size_t len, - int tag, int tag_val, unsigned char *value, size_t val_len) -{ - int ret; - x509_node tmp; - - x509write_init_node(&tmp); - - /* OBJECT IDENTIFIER */ - if ((ret = asn1_add_obj(oid, len, ASN1_OID, &tmp)) != 0) { - x509write_free_node(&tmp); - return ret; - } - - /* value */ - if ((ret = asn1_add_obj(value, val_len, tag_val, &tmp)) != 0) { - x509write_free_node(&tmp); - return ret; - } - - /* SET/SEQUENCE */ - if ((ret = asn1_append_nodes(node, tag, 1, &tmp)) != 0) { - x509write_free_node(&tmp); - return ret; - } - - x509write_free_node(&tmp); - return 0; -} - -/* - * utcTime UTCTime - */ -static int asn1_add_date_utc(unsigned char *time, x509_node *node) -{ - unsigned char date[13], *sp; - x509_time xtime; - int ret; - - sscanf((char*)time, "%d-%d-%d %d:%d:%d", &xtime.year, &xtime.mon, - &xtime.day, &xtime.hour, &xtime.min, &xtime.sec); - - /* convert to YY */ - if (xtime.year > 2000) - xtime.year -= 2000; - else - xtime.year -= 1900; - - snprintf((char*)date, 13, "%2d%2d%2d%2d%2d%2d", xtime.year, xtime.mon, xtime.day, - xtime.hour, xtime.min, xtime.sec); - - /* replace ' ' to '0' */ - for (sp = date; *sp != '\0'; ++sp) - if (*sp == '\x20') - *sp = '\x30'; - - date[12] = 'Z'; - - if ((ret = asn1_add_obj(date, 13, ASN1_UTC_TIME, node)) != 0) - return ret; - - return 0; -} - -/* - * serialize an rsa key into DER - */ - -int x509write_serialize_key(rsa_context *rsa, x509_node *node) -{ - int ret = 0; - x509write_init_node(node); - - /* vers, n, e, d, p, q, dp, dq, pq */ - if ((ret = asn1_add_int(rsa->ver, node)) != 0) - return ret; - if ((ret = asn1_add_mpi(&rsa->N, ASN1_INTEGER, node)) != 0) - return ret; - if ((ret = asn1_add_mpi(&rsa->E, ASN1_INTEGER, node)) != 0) - return ret; - if ((ret = asn1_add_mpi(&rsa->D, ASN1_INTEGER, node)) != 0) - return ret; - if ((ret = asn1_add_mpi(&rsa->P, ASN1_INTEGER, node)) != 0) - return ret; - if ((ret = asn1_add_mpi(&rsa->Q, ASN1_INTEGER, node)) != 0) - return ret; - if ((ret = asn1_add_mpi(&rsa->DP, ASN1_INTEGER, node)) != 0) - return ret; - if ((ret = asn1_add_mpi(&rsa->DQ, ASN1_INTEGER, node)) != 0) - return ret; - if ((ret = asn1_add_mpi(&rsa->QP, ASN1_INTEGER, node)) != 0) - return ret; - if ((ret = asn1_append_tag(node, ASN1_CONSTRUCTED | ASN1_SEQUENCE)) != 0) - return ret; - - return 0; -} - -/* - * write a der/pem encoded rsa private key into a file - */ -int x509write_keyfile(rsa_context *rsa, char *path, int out_flag) -{ - int ret = 0; - const char key_beg[] = "-----BEGIN RSA PRIVATE KEY-----\n", - key_end[] = "-----END RSA PRIVATE KEY-----\n"; - x509_node node; - - x509write_init_node(&node); - if ((ret = x509write_serialize_key(rsa,&node)) != 0) { - x509write_free_node(&node); - return ret; - } - - ret = x509write_file(&node,path,out_flag,key_beg,key_end); - x509write_free_node(&node); - - return ret; -} - - -/* - * reasize the memory for node - */ -static int x509write_realloc_node(x509_node *node, size_t larger) -{ - /* init len */ - if (node->data == NULL) { - node->len = 0; - node->data = malloc(larger); - if(node->data == NULL) - return 1; - } else { - /* realloc memory */ - if ((node->data = realloc(node->data, node->len + larger)) == NULL) - return 1; - } - - /* init pointer */ - node->p = &node->data[node->len]; - node->len += larger; - node->end = &node->data[node->len -1]; - - return 0; -} - -/* - * init node - */ -void x509write_init_node(x509_node *node) -{ - memset(node, 0, sizeof(x509_node)); -} - -/* - * clean memory - */ -void x509write_free_node(x509_node *node) -{ - if (node->data != NULL) - free(node->data); - node->p = NULL; - node->end = NULL; - node->len = 0; -} - -/* - * write a x509 certificate into file - */ -int x509write_crtfile(x509_raw *chain, unsigned char *path, int out_flag) -{ - const char cer_beg[] = "-----BEGIN CERTIFICATE-----\n", - cer_end[] = "-----END CERTIFICATE-----\n"; - - return x509write_file(&chain->raw, (char*)path, out_flag, cer_beg, cer_end); -} - -/* - * write a x509 certificate into file - */ -int x509write_csrfile(x509_raw *chain, unsigned char *path, int out_flag) -{ - const char cer_beg[] = "-----BEGIN CERTIFICATE REQUEST-----\n", - cer_end[] = "-----END CERTIFICATE REQUEST-----\n"; - - return x509write_file(&chain->raw, (char*)path, out_flag, cer_beg, cer_end); -} - -/* - * write an x509 file - */ -static int x509write_file(x509_node *node, char *path, int format, - const char* pem_prolog, const char* pem_epilog) -{ - FILE *ofstream; - int is_err = 1/*, buf_len, i, n*/; - /* char* base_buf; */ - - if ((ofstream = fopen(path, "wb")) == NULL) - return 1; - - switch (format) { - case X509_OUTPUT_DER: - if (fwrite(node->data, 1, node->len, ofstream) - != node->len) - is_err = -1; - break; -/* - case X509_OUTPUT_PEM: - if (fprintf(ofstream,pem_prolog)<0) { - is_err = -1; - break; - } - - buf_len = node->len << 1; - base_buf = (char*) malloc((size_t)buf_len); - memset(base_buf,0,buf_len); - if (base64_encode(base_buf, &buf_len, node->data, - (int) node->len) != 0) { - is_err = -1; - break; - } - - n=strlen(base_buf); - for(i=0;isubpubkey; - - x509write_init_node(&n_tmp); - x509write_init_node(&n_tmp2); - - /* - * RSAPublicKey ::= SEQUENCE { - * modulus INTEGER, -- n - * publicExponent INTEGER -- e - * } - */ - if ((ret = asn1_add_mpi(&pubkey->N, ASN1_INTEGER, &n_tmp)) != 0) { - x509write_free_node(&n_tmp); - x509write_free_node(&n_tmp2); - return ret; - } - if ((ret = asn1_add_mpi(&pubkey->E, ASN1_INTEGER, &n_tmp)) != 0) { - x509write_free_node(&n_tmp); - x509write_free_node(&n_tmp2); - return ret; - } - if ((ret = asn1_append_tag(&n_tmp, ASN1_CONSTRUCTED | ASN1_SEQUENCE)) - != 0) { - x509write_free_node(&n_tmp); - x509write_free_node(&n_tmp2); - return ret; - } - - /* - * SubjectPublicKeyInfo ::= SEQUENCE { - * algorithm AlgorithmIdentifier, - * subjectPublicKey BIT STRING } - */ - if ((ret = asn1_append_tag(&n_tmp, ASN1_BIT_STRING)) != 0) { - x509write_free_node(&n_tmp); - x509write_free_node(&n_tmp2); - return ret; - } - if ((ret = asn1_add_oid(&n_tmp2, (unsigned char*)OID_PKCS1_RSA, 9, - ASN1_CONSTRUCTED | ASN1_SEQUENCE, ASN1_NULL, - (unsigned char *)"", 0)) != 0) { - x509write_free_node(&n_tmp); - x509write_free_node(&n_tmp2); - return ret; - } - - if ((ret = asn1_append_nodes(node, ASN1_CONSTRUCTED | ASN1_SEQUENCE, 2, - &n_tmp2, &n_tmp))) { - x509write_free_node(&n_tmp); - x509write_free_node(&n_tmp2); - return ret; - } - - x509write_free_node(&n_tmp); - x509write_free_node(&n_tmp2); - return 0; -} - -/* - * RelativeDistinguishedName ::= - * SET OF AttributeTypeAndValue - * - * AttributeTypeAndValue ::= SEQUENCE { - * type AttributeType, - * value AttributeValue } - */ -static int x509write_add_name(x509_node *node, unsigned char *oid, - unsigned int oid_len, unsigned char *value, int len, int value_tag) -{ - int ret; - x509_node n_tmp; - - x509write_init_node(&n_tmp); - - if ((ret = asn1_add_oid(&n_tmp, oid, oid_len, - ASN1_CONSTRUCTED | ASN1_SEQUENCE, value_tag, - value, len))) { - x509write_free_node(&n_tmp); - return ret; - } - - if ((asn1_append_nodes(node, ASN1_CONSTRUCTED | ASN1_SET, 1, &n_tmp)) - != 0) { - x509write_free_node(&n_tmp); - return ret; - } - - x509write_free_node(&n_tmp); - return 0; -} - -/* - * Parse the name string and add to node - */ -static int x509write_parse_names(x509_node *node, unsigned char *names) -{ - unsigned char *sp, *begin = NULL; - unsigned char oid[3] = OID_X520, tag[4], *tag_sp = tag; - unsigned char *C = NULL, *CN = NULL, *O = NULL, *OU = NULL, - *ST = NULL, *L = NULL, *R = NULL; - int C_len = 0, CN_len = 0, O_len = 0, OU_len = 0, ST_len = 0, - L_len = 0, R_len = 0; - int ret = 0, is_tag = 1, is_begin = -1, len = 0; - - - for (sp = names; ; ++sp) { - - /* filter tag */ - if (is_tag == 1) { - - if (tag_sp == &tag[3]) - return POLARSSL_ERR_X509_VALUE_TO_LENGTH; - - /* is tag end? */ - if (*sp == '=') { - is_tag = -1; - *tag_sp = '\0'; - is_begin = 1; - /* set len 0 (reset) */ - len = 0; - } else { - /* tag hasn't ' '! */ - if (*sp != ' ') { - *tag_sp = *sp; - ++tag_sp; - } - } - /* filter value */ - } else { - - /* set pointer of value begin */ - if (is_begin == 1) { - begin = sp; - is_begin = -1; - } - - /* is value at end? */ - if (*sp == ';' or *sp == '\0') { - is_tag = 1; - - /* common name */ - if (tag[0] == 'C' and tag[1] == 'N') { - CN = begin; - CN_len = len; - - /* organization */ - } else if (tag[0] == 'O' and tag[1] == '\0') { - O = begin; - O_len = len; - - /* country */ - } else if (tag[0] == 'C' and tag[1] == '\0') { - C = begin; - C_len = len; - - /* organisation unit */ - } else if (tag[0] == 'O' and tag[1] == 'U') { - OU = begin; - OU_len = len; - - /* state */ - } else if (tag[0] == 'S' and tag[1] == 'T') { - ST = begin; - ST_len = len; - - /* locality */ - } else if (tag[0] == 'L' and tag[1] == '\0') { - L = begin; - L_len = len; - - /* email */ - } else if (tag[0] == 'R' and tag[1] == '\0') { - R = begin; - R_len = len; - } - - /* set tag poiner to begin */ - tag_sp = tag; - - /* is at end? */ - if (*sp == '\0' or *(sp +1) == '\0') - break; - } else { - ++len; - } - } - - /* make saver */ - if (*sp == '\0') - break; - } /* end for */ - - /* country */ - if (C != NULL) { - oid[2] = X520_COUNTRY; - if ((ret = x509write_add_name(node, oid, 3, C, C_len, - ASN1_PRINTABLE_STRING)) != 0) - return ret; - } - - /* state */ - if (ST != NULL) { - oid[2] = X520_STATE; - if ((ret = x509write_add_name(node, oid, 3, ST, ST_len, - ASN1_PRINTABLE_STRING)) != 0) - return ret; - } - - /* locality */ - if (L != NULL) { - oid[2] = X520_LOCALITY; - if ((ret = x509write_add_name(node, oid, 3, L, L_len, - ASN1_PRINTABLE_STRING)) != 0) - return ret; - } - - /* organization */ - if (O != NULL) { - oid[2] = X520_ORGANIZATION; - if ((ret = x509write_add_name(node, oid, 3, O, O_len, - ASN1_PRINTABLE_STRING)) != 0) - return ret; - } - - /* organisation unit */ - if (OU != NULL) { - oid[2] = X520_ORG_UNIT; - if ((ret = x509write_add_name(node, oid, 3, OU, OU_len, - ASN1_PRINTABLE_STRING)) != 0) - return ret; - } - - /* common name */ - if (CN != NULL) { - oid[2] = X520_COMMON_NAME; - if ((ret = x509write_add_name(node, oid, 3, CN, CN_len, - ASN1_PRINTABLE_STRING)) != 0) - return ret; - } - - /* email */ - if (R != NULL) { - if ((ret = x509write_add_name(node, (unsigned char*)OID_PKCS9_EMAIL, - 9, R, R_len, ASN1_IA5_STRING)) != 0) - return ret; - } - - if ((asn1_append_tag(node, ASN1_CONSTRUCTED | ASN1_SEQUENCE)) != 0) - return ret; - - return 0; -} - -/* - * Copy raw data from orginal ca to node - */ -static int x509write_copy_from_raw(x509_node *node, x509_buf *raw) -{ - if (x509write_realloc_node(node, raw->len) != 0) - return 1; - - memcpy(node->p, raw->p, (size_t)raw->len); - if ((node->p += raw->len -1) != node->end) - return POLARSSL_ERR_X509_POINT_ERROR; - - return 0; -} - -/* - * Add the issuer - */ - -int x509write_add_issuer(x509_raw *crt, unsigned char *issuer) -{ - return x509write_parse_names(&crt->issuer, issuer); -} - -/* - * Add the subject - */ -int x509write_add_subject(x509_raw *crt, unsigned char *subject) -{ - return x509write_parse_names(&crt->subject, subject); -} - -/* - * Copy issuer line from another cert to issuer - */ -int x509write_copy_issuer(x509_raw *crt, x509_cert *from_crt) -{ - return x509write_copy_from_raw(&crt->issuer, &from_crt->issuer_raw); -} - -/* - * Copy subject line from another cert - */ -int x509write_copy_subject(x509_raw *crt, x509_cert *from_crt) -{ - return x509write_copy_from_raw(&crt->subject, &from_crt->subject_raw); -} - -/* - * Copy subject line form antoher cert into issuer - */ -int x509write_copy_issuer_form_subject(x509_raw *crt, - x509_cert *from_crt) -{ - return x509write_copy_from_raw(&crt->issuer, &from_crt->subject_raw); -} - -/* - * Copy issuer line from another cert into subject - */ -int x509write_copy_subject_from_issuer(x509_raw *crt, - x509_cert * from_crt) -{ - return x509write_copy_from_raw(&crt->subject, &from_crt->issuer_raw); -} - -/* - * Validity ::= SEQUENCE { - * notBefore Time, - * notAfter Time } - * - * Time ::= CHOICE { - * utcTime UTCTime, - * generalTime GeneralizedTime } - */ -/* TODO: No handle GeneralizedTime! */ -int x509write_add_validity(x509_raw *chain, unsigned char *befor, - unsigned char *after) -{ - int ret; - - x509_node *node = &chain->validity; - - /* notBefore */ - if ((ret = asn1_add_date_utc(befor, node)) != 0) - return ret; - - /* notAfter */ - if ((ret = asn1_add_date_utc(after, node)) != 0) - return ret; - - if ((ret = asn1_append_tag(node, ASN1_CONSTRUCTED | ASN1_SEQUENCE)) != 0) - return ret; - - return 0; -} - -/* - * make hash from tbs and sign that with private key - */ -static int x509write_make_sign(x509_raw *chain, rsa_context *privkey) -{ - int ret; - unsigned char hash[20], *sign; - size_t sign_len = (size_t) mpi_size(&privkey->N); - - /* make hash */ - sha1(chain->tbs.data, chain->tbs.len, hash); - - /* create sign */ - sign = (unsigned char *) malloc(sign_len); - if (sign == NULL) - return 1; - - if ((ret = rsa_pkcs1_sign(privkey, RSA_PRIVATE, RSA_SHA1, 20, hash, - sign)) != 0) - return ret; - - if ((ret = asn1_add_obj(sign, sign_len, ASN1_BIT_STRING, - &chain->sign)) != 0) - return ret; - - /* - * AlgorithmIdentifier ::= SEQUENCE { - * algorithm OBJECT IDENTIFIER, - * parameters ANY DEFINED BY algorithm OPTIONAL } - */ - return asn1_add_oid(&chain->signalg, (unsigned char*)OID_PKCS1_RSA_SHA, 9, - ASN1_CONSTRUCTED | ASN1_SEQUENCE, ASN1_NULL, - (unsigned char*)"", 0); -} - -/* - * Create a self signed certificate - */ -int x509write_create_sign(x509_raw *chain, rsa_context *privkey) -{ - int ret, serial; - - /* - * Version ::= INTEGER { v1(0), v2(1), v3(2) } - */ - if ((ret = asn1_add_int(2, &chain->version)) != 0) - return ret; - - if ((ret = asn1_append_tag(&chain->version, ASN1_CONTEXT_SPECIFIC | - ASN1_CONSTRUCTED)) != 0) - return ret; - - - /* - * CertificateSerialNumber ::= INTEGER - */ - srand((unsigned int) time(NULL)); - serial = rand(); - if ((ret = asn1_add_int(serial, &chain->serial)) != 0) - return ret; - - /* - * AlgorithmIdentifier ::= SEQUENCE { - * algorithm OBJECT IDENTIFIER, - * parameters ANY DEFINED BY algorithm OPTIONAL } - */ - if ((ret = asn1_add_oid(&chain->tbs_signalg, - (unsigned char*)OID_PKCS1_RSA_SHA, 9, ASN1_CONSTRUCTED | - ASN1_SEQUENCE, ASN1_NULL, (unsigned char*)"", 0)) != 0) - return ret; - - /* - * Create the tbs - */ - if ((ret = asn1_append_nodes(&chain->tbs, ASN1_CONSTRUCTED | - ASN1_SEQUENCE, 7, &chain->version, &chain->serial, - &chain->tbs_signalg, &chain->issuer, &chain->validity, - &chain->subject, &chain->subpubkey)) != 0) - return ret; - - /* make signing */ - if ((ret = x509write_make_sign(chain, privkey)) != 0) - return ret; - - /* finishing */ - if ((ret = asn1_append_nodes(&chain->raw, ASN1_CONSTRUCTED | - ASN1_SEQUENCE, 3, &chain->tbs, &chain->signalg, - &chain->sign)) != 0) - return ret; - - return 0; -} - -int x509write_create_selfsign(x509_raw *chain, rsa_context *privkey) -{ - /* - * On self signed certificate are subject and issuer the same - */ - x509write_free_node(&chain->issuer); - chain->issuer = chain->subject; - return x509write_create_sign(chain, privkey); -} - -/* - * CertificationRequestInfo ::= SEQUENCE { - * version Version, - * subject Name, - * subjectPublicKeyInfo SubjectPublicKeyInfo, - * attributes [0] IMPLICIT Attributes } - * - * CertificationRequest ::= SEQUENCE { - * certificationRequestInfo CertificationRequestInfo, - * signatureAlgorithm SignatureAlgorithmIdentifier, - * signature Signature } - * - * It use chain.serail for attributes! - * - */ -int x509write_create_csr(x509_raw *chain, rsa_context *privkey) -{ - int ret; - - /* version ::= INTEGER */ - if ((ret = asn1_add_int(0, &chain->version)) != 0) - return ret; - - /* write attributes */ - if ((ret = asn1_add_obj((unsigned char*)"", 0, ASN1_CONTEXT_SPECIFIC | - ASN1_CONSTRUCTED, &chain->serial)) != 0) - return ret; - - /* create CertificationRequestInfo */ - if ((ret = asn1_append_nodes(&chain->tbs, ASN1_CONSTRUCTED | - ASN1_SEQUENCE, 4, &chain->version, &chain->subject, - &chain->subpubkey, &chain->serial)) != 0) - return ret; - - /* make signing */ - if ((ret = x509write_make_sign(chain, privkey)) != 0) - return ret; - - /* finish */ - if ((ret = asn1_append_nodes(&chain->raw, ASN1_CONSTRUCTED | ASN1_SEQUENCE, - 3, &chain->tbs, &chain->signalg, &chain->sign)) != 0) - return ret; - - return ret; -} - -/* - * Free memory - */ -void x509write_free_raw(x509_raw *chain) -{ - x509write_free_node(&chain->raw); - x509write_free_node(&chain->tbs); - x509write_free_node(&chain->version); - x509write_free_node(&chain->serial); - x509write_free_node(&chain->tbs_signalg); - x509write_free_node(&chain->issuer); - x509write_free_node(&chain->validity); - if (chain->subject.data != chain->issuer.data) - x509write_free_node(&chain->subject); - x509write_free_node(&chain->subpubkey); - x509write_free_node(&chain->signalg); - x509write_free_node(&chain->sign); -} - -void x509write_init_raw(x509_raw *chain) -{ - memset((void *) chain, 0, sizeof(x509_raw)); -} - diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/bignum.h b/package/luci/libs/luci-lib-px5g/src/polarssl/bignum.h deleted file mode 100644 index c667303329..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/polarssl/bignum.h +++ /dev/null @@ -1,437 +0,0 @@ -/** - * \file bignum.h - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef POLARSSL_BIGNUM_H -#define POLARSSL_BIGNUM_H - -#include - -#define POLARSSL_ERR_MPI_FILE_IO_ERROR -0x0002 -#define POLARSSL_ERR_MPI_BAD_INPUT_DATA -0x0004 -#define POLARSSL_ERR_MPI_INVALID_CHARACTER -0x0006 -#define POLARSSL_ERR_MPI_BUFFER_TOO_SMALL -0x0008 -#define POLARSSL_ERR_MPI_NEGATIVE_VALUE -0x000A -#define POLARSSL_ERR_MPI_DIVISION_BY_ZERO -0x000C -#define POLARSSL_ERR_MPI_NOT_ACCEPTABLE -0x000E - -#define MPI_CHK(f) if( ( ret = f ) != 0 ) goto cleanup - -/* - * Define the base integer type, architecture-wise - */ -#if defined(POLARSSL_HAVE_INT8) -typedef unsigned char t_int; -typedef unsigned short t_dbl; -#else -#if defined(POLARSSL_HAVE_INT16) -typedef unsigned short t_int; -typedef unsigned long t_dbl; -#else - typedef unsigned long t_int; - #if defined(_MSC_VER) && defined(_M_IX86) - typedef unsigned __int64 t_dbl; - #else - #if defined(__amd64__) || defined(__x86_64__) || \ - defined(__ppc64__) || defined(__powerpc64__) || \ - defined(__ia64__) || defined(__alpha__) - typedef unsigned int t_dbl __attribute__((mode(TI))); - #else - typedef unsigned long long t_dbl; - #endif - #endif -#endif -#endif - -/** - * \brief MPI structure - */ -typedef struct -{ - int s; /*!< integer sign */ - int n; /*!< total # of limbs */ - t_int *p; /*!< pointer to limbs */ -} -mpi; - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief Initialize one or more mpi - */ -void mpi_init( mpi *X, ... ); - -/** - * \brief Unallocate one or more mpi - */ -void mpi_free( mpi *X, ... ); - -/** - * \brief Enlarge to the specified number of limbs - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_grow( mpi *X, int nblimbs ); - -/** - * \brief Copy the contents of Y into X - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_copy( mpi *X, mpi *Y ); - -/** - * \brief Swap the contents of X and Y - */ -void mpi_swap( mpi *X, mpi *Y ); - -/** - * \brief Set value from integer - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_lset( mpi *X, int z ); - -/** - * \brief Return the number of least significant bits - */ -int mpi_lsb( mpi *X ); - -/** - * \brief Return the number of most significant bits - */ -int mpi_msb( mpi *X ); - -/** - * \brief Return the total size in bytes - */ -int mpi_size( mpi *X ); - -/** - * \brief Import from an ASCII string - * - * \param X destination mpi - * \param radix input numeric base - * \param s null-terminated string buffer - * - * \return 0 if successful, or an POLARSSL_ERR_MPI_XXX error code - */ -int mpi_read_string( mpi *X, int radix, char *s ); - -/** - * \brief Export into an ASCII string - * - * \param X source mpi - * \param radix output numeric base - * \param s string buffer - * \param slen string buffer size - * - * \return 0 if successful, or an POLARSSL_ERR_MPI_XXX error code - * - * \note Call this function with *slen = 0 to obtain the - * minimum required buffer size in *slen. - */ -int mpi_write_string( mpi *X, int radix, char *s, int *slen ); - -/** - * \brief Read X from an opened file - * - * \param X destination mpi - * \param radix input numeric base - * \param fin input file handle - * - * \return 0 if successful, or an POLARSSL_ERR_MPI_XXX error code - */ -int mpi_read_file( mpi *X, int radix, FILE *fin ); - -/** - * \brief Write X into an opened file, or stdout - * - * \param p prefix, can be NULL - * \param X source mpi - * \param radix output numeric base - * \param fout output file handle - * - * \return 0 if successful, or an POLARSSL_ERR_MPI_XXX error code - * - * \note Set fout == NULL to print X on the console. - */ -int mpi_write_file( char *p, mpi *X, int radix, FILE *fout ); - -/** - * \brief Import X from unsigned binary data, big endian - * - * \param X destination mpi - * \param buf input buffer - * \param buflen input buffer size - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_read_binary( mpi *X, unsigned char *buf, int buflen ); - -/** - * \brief Export X into unsigned binary data, big endian - * - * \param X source mpi - * \param buf output buffer - * \param buflen output buffer size - * - * \return 0 if successful, - * POLARSSL_ERR_MPI_BUFFER_TOO_SMALL if buf isn't large enough - * - * \note Call this function with *buflen = 0 to obtain the - * minimum required buffer size in *buflen. - */ -int mpi_write_binary( mpi *X, unsigned char *buf, int buflen ); - -/** - * \brief Left-shift: X <<= count - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_shift_l( mpi *X, int count ); - -/** - * \brief Right-shift: X >>= count - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_shift_r( mpi *X, int count ); - -/** - * \brief Compare unsigned values - * - * \return 1 if |X| is greater than |Y|, - * -1 if |X| is lesser than |Y| or - * 0 if |X| is equal to |Y| - */ -int mpi_cmp_abs( mpi *X, mpi *Y ); - -/** - * \brief Compare signed values - * - * \return 1 if X is greater than Y, - * -1 if X is lesser than Y or - * 0 if X is equal to Y - */ -int mpi_cmp_mpi( mpi *X, mpi *Y ); - -/** - * \brief Compare signed values - * - * \return 1 if X is greater than z, - * -1 if X is lesser than z or - * 0 if X is equal to z - */ -int mpi_cmp_int( mpi *X, int z ); - -/** - * \brief Unsigned addition: X = |A| + |B| - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_add_abs( mpi *X, mpi *A, mpi *B ); - -/** - * \brief Unsigned substraction: X = |A| - |B| - * - * \return 0 if successful, - * POLARSSL_ERR_MPI_NEGATIVE_VALUE if B is greater than A - */ -int mpi_sub_abs( mpi *X, mpi *A, mpi *B ); - -/** - * \brief Signed addition: X = A + B - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_add_mpi( mpi *X, mpi *A, mpi *B ); - -/** - * \brief Signed substraction: X = A - B - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_sub_mpi( mpi *X, mpi *A, mpi *B ); - -/** - * \brief Signed addition: X = A + b - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_add_int( mpi *X, mpi *A, int b ); - -/** - * \brief Signed substraction: X = A - b - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_sub_int( mpi *X, mpi *A, int b ); - -/** - * \brief Baseline multiplication: X = A * B - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_mul_mpi( mpi *X, mpi *A, mpi *B ); - -/** - * \brief Baseline multiplication: X = A * b - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_mul_int( mpi *X, mpi *A, t_int b ); - -/** - * \brief Division by mpi: A = Q * B + R - * - * \return 0 if successful, - * 1 if memory allocation failed, - * POLARSSL_ERR_MPI_DIVISION_BY_ZERO if B == 0 - * - * \note Either Q or R can be NULL. - */ -int mpi_div_mpi( mpi *Q, mpi *R, mpi *A, mpi *B ); - -/** - * \brief Division by int: A = Q * b + R - * - * \return 0 if successful, - * 1 if memory allocation failed, - * POLARSSL_ERR_MPI_DIVISION_BY_ZERO if b == 0 - * - * \note Either Q or R can be NULL. - */ -int mpi_div_int( mpi *Q, mpi *R, mpi *A, int b ); - -/** - * \brief Modulo: R = A mod B - * - * \return 0 if successful, - * 1 if memory allocation failed, - * POLARSSL_ERR_MPI_DIVISION_BY_ZERO if B == 0 - */ -int mpi_mod_mpi( mpi *R, mpi *A, mpi *B ); - -/** - * \brief Modulo: r = A mod b - * - * \return 0 if successful, - * 1 if memory allocation failed, - * POLARSSL_ERR_MPI_DIVISION_BY_ZERO if b == 0 - */ -int mpi_mod_int( t_int *r, mpi *A, int b ); - -/** - * \brief Sliding-window exponentiation: X = A^E mod N - * - * \return 0 if successful, - * 1 if memory allocation failed, - * POLARSSL_ERR_MPI_BAD_INPUT_DATA if N is negative or even - * - * \note _RR is used to avoid re-computing R*R mod N across - * multiple calls, which speeds up things a bit. It can - * be set to NULL if the extra performance is unneeded. - */ -int mpi_exp_mod( mpi *X, mpi *A, mpi *E, mpi *N, mpi *_RR ); - -/** - * \brief Greatest common divisor: G = gcd(A, B) - * - * \return 0 if successful, - * 1 if memory allocation failed - */ -int mpi_gcd( mpi *G, mpi *A, mpi *B ); - -/** - * \brief Modular inverse: X = A^-1 mod N - * - * \return 0 if successful, - * 1 if memory allocation failed, - * POLARSSL_ERR_MPI_BAD_INPUT_DATA if N is negative or nil - * POLARSSL_ERR_MPI_NOT_ACCEPTABLE if A has no inverse mod N - */ -int mpi_inv_mod( mpi *X, mpi *A, mpi *N ); - -/** - * \brief Miller-Rabin primality test - * - * \return 0 if successful (probably prime), - * 1 if memory allocation failed, - * POLARSSL_ERR_MPI_NOT_ACCEPTABLE if X is not prime - */ -int mpi_is_prime( mpi *X, int (*f_rng)(void *), void *p_rng ); - -/** - * \brief Prime number generation - * - * \param X destination mpi - * \param nbits required size of X in bits - * \param dh_flag if 1, then (X-1)/2 will be prime too - * \param f_rng RNG function - * \param p_rng RNG parameter - * - * \return 0 if successful (probably prime), - * 1 if memory allocation failed, - * POLARSSL_ERR_MPI_BAD_INPUT_DATA if nbits is < 3 - */ -int mpi_gen_prime( mpi *X, int nbits, int dh_flag, - int (*f_rng)(void *), void *p_rng ); - -/** - * \brief Checkup routine - * - * \return 0 if successful, or 1 if the test failed - */ -int mpi_self_test( int verbose ); - -#ifdef __cplusplus -} -#endif - -#endif /* bignum.h */ diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/bn_mul.h b/package/luci/libs/luci-lib-px5g/src/polarssl/bn_mul.h deleted file mode 100644 index f6d34da58a..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/polarssl/bn_mul.h +++ /dev/null @@ -1,731 +0,0 @@ -/** - * \file bn_mul.h - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -/* - * Multiply source vector [s] with b, add result - * to destination vector [d] and set carry c. - * - * Currently supports: - * - * . IA-32 (386+) . AMD64 / EM64T - * . IA-32 (SSE2) . Motorola 68000 - * . PowerPC, 32-bit . MicroBlaze - * . PowerPC, 64-bit . TriCore - * . SPARC v8 . ARM v3+ - * . Alpha . MIPS32 - * . C, longlong . C, generic - */ -#ifndef POLARSSL_BN_MUL_H -#define POLARSSL_BN_MUL_H - -#include "polarssl/config.h" - -#if defined(POLARSSL_HAVE_ASM) - -#if defined(__GNUC__) -#if defined(__i386__) - -#define MULADDC_INIT \ - asm( "movl %%ebx, %0 " : "=m" (t)); \ - asm( "movl %0, %%esi " :: "m" (s)); \ - asm( "movl %0, %%edi " :: "m" (d)); \ - asm( "movl %0, %%ecx " :: "m" (c)); \ - asm( "movl %0, %%ebx " :: "m" (b)); - -#define MULADDC_CORE \ - asm( "lodsl " ); \ - asm( "mull %ebx " ); \ - asm( "addl %ecx, %eax " ); \ - asm( "adcl $0, %edx " ); \ - asm( "addl (%edi), %eax " ); \ - asm( "adcl $0, %edx " ); \ - asm( "movl %edx, %ecx " ); \ - asm( "stosl " ); - -#if defined(POLARSSL_HAVE_SSE2) - -#define MULADDC_HUIT \ - asm( "movd %ecx, %mm1 " ); \ - asm( "movd %ebx, %mm0 " ); \ - asm( "movd (%edi), %mm3 " ); \ - asm( "paddq %mm3, %mm1 " ); \ - asm( "movd (%esi), %mm2 " ); \ - asm( "pmuludq %mm0, %mm2 " ); \ - asm( "movd 4(%esi), %mm4 " ); \ - asm( "pmuludq %mm0, %mm4 " ); \ - asm( "movd 8(%esi), %mm6 " ); \ - asm( "pmuludq %mm0, %mm6 " ); \ - asm( "movd 12(%esi), %mm7 " ); \ - asm( "pmuludq %mm0, %mm7 " ); \ - asm( "paddq %mm2, %mm1 " ); \ - asm( "movd 4(%edi), %mm3 " ); \ - asm( "paddq %mm4, %mm3 " ); \ - asm( "movd 8(%edi), %mm5 " ); \ - asm( "paddq %mm6, %mm5 " ); \ - asm( "movd 12(%edi), %mm4 " ); \ - asm( "paddq %mm4, %mm7 " ); \ - asm( "movd %mm1, (%edi) " ); \ - asm( "movd 16(%esi), %mm2 " ); \ - asm( "pmuludq %mm0, %mm2 " ); \ - asm( "psrlq $32, %mm1 " ); \ - asm( "movd 20(%esi), %mm4 " ); \ - asm( "pmuludq %mm0, %mm4 " ); \ - asm( "paddq %mm3, %mm1 " ); \ - asm( "movd 24(%esi), %mm6 " ); \ - asm( "pmuludq %mm0, %mm6 " ); \ - asm( "movd %mm1, 4(%edi) " ); \ - asm( "psrlq $32, %mm1 " ); \ - asm( "movd 28(%esi), %mm3 " ); \ - asm( "pmuludq %mm0, %mm3 " ); \ - asm( "paddq %mm5, %mm1 " ); \ - asm( "movd 16(%edi), %mm5 " ); \ - asm( "paddq %mm5, %mm2 " ); \ - asm( "movd %mm1, 8(%edi) " ); \ - asm( "psrlq $32, %mm1 " ); \ - asm( "paddq %mm7, %mm1 " ); \ - asm( "movd 20(%edi), %mm5 " ); \ - asm( "paddq %mm5, %mm4 " ); \ - asm( "movd %mm1, 12(%edi) " ); \ - asm( "psrlq $32, %mm1 " ); \ - asm( "paddq %mm2, %mm1 " ); \ - asm( "movd 24(%edi), %mm5 " ); \ - asm( "paddq %mm5, %mm6 " ); \ - asm( "movd %mm1, 16(%edi) " ); \ - asm( "psrlq $32, %mm1 " ); \ - asm( "paddq %mm4, %mm1 " ); \ - asm( "movd 28(%edi), %mm5 " ); \ - asm( "paddq %mm5, %mm3 " ); \ - asm( "movd %mm1, 20(%edi) " ); \ - asm( "psrlq $32, %mm1 " ); \ - asm( "paddq %mm6, %mm1 " ); \ - asm( "movd %mm1, 24(%edi) " ); \ - asm( "psrlq $32, %mm1 " ); \ - asm( "paddq %mm3, %mm1 " ); \ - asm( "movd %mm1, 28(%edi) " ); \ - asm( "addl $32, %edi " ); \ - asm( "addl $32, %esi " ); \ - asm( "psrlq $32, %mm1 " ); \ - asm( "movd %mm1, %ecx " ); - -#define MULADDC_STOP \ - asm( "emms " ); \ - asm( "movl %0, %%ebx " :: "m" (t)); \ - asm( "movl %%ecx, %0 " : "=m" (c)); \ - asm( "movl %%edi, %0 " : "=m" (d)); \ - asm( "movl %%esi, %0 " : "=m" (s) :: \ - "eax", "ecx", "edx", "esi", "edi" ); - -#else - -#define MULADDC_STOP \ - asm( "movl %0, %%ebx " :: "m" (t)); \ - asm( "movl %%ecx, %0 " : "=m" (c)); \ - asm( "movl %%edi, %0 " : "=m" (d)); \ - asm( "movl %%esi, %0 " : "=m" (s) :: \ - "eax", "ecx", "edx", "esi", "edi" ); - -#endif /* SSE2 */ -#endif /* i386 */ - -#if defined(__amd64__) || defined (__x86_64__) - -#define MULADDC_INIT \ - asm( "movq %0, %%rsi " :: "m" (s)); \ - asm( "movq %0, %%rdi " :: "m" (d)); \ - asm( "movq %0, %%rcx " :: "m" (c)); \ - asm( "movq %0, %%rbx " :: "m" (b)); \ - asm( "xorq %r8, %r8 " ); - -#define MULADDC_CORE \ - asm( "movq (%rsi),%rax " ); \ - asm( "mulq %rbx " ); \ - asm( "addq $8, %rsi " ); \ - asm( "addq %rcx, %rax " ); \ - asm( "movq %r8, %rcx " ); \ - asm( "adcq $0, %rdx " ); \ - asm( "nop " ); \ - asm( "addq %rax, (%rdi) " ); \ - asm( "adcq %rdx, %rcx " ); \ - asm( "addq $8, %rdi " ); - -#define MULADDC_STOP \ - asm( "movq %%rcx, %0 " : "=m" (c)); \ - asm( "movq %%rdi, %0 " : "=m" (d)); \ - asm( "movq %%rsi, %0 " : "=m" (s) :: \ - "rax", "rcx", "rdx", "rbx", "rsi", "rdi", "r8" ); - -#endif /* AMD64 */ - -#if defined(__mc68020__) || defined(__mcpu32__) - -#define MULADDC_INIT \ - asm( "movl %0, %%a2 " :: "m" (s)); \ - asm( "movl %0, %%a3 " :: "m" (d)); \ - asm( "movl %0, %%d3 " :: "m" (c)); \ - asm( "movl %0, %%d2 " :: "m" (b)); \ - asm( "moveq #0, %d0 " ); - -#define MULADDC_CORE \ - asm( "movel %a2@+, %d1 " ); \ - asm( "mulul %d2, %d4:%d1 " ); \ - asm( "addl %d3, %d1 " ); \ - asm( "addxl %d0, %d4 " ); \ - asm( "moveq #0, %d3 " ); \ - asm( "addl %d1, %a3@+ " ); \ - asm( "addxl %d4, %d3 " ); - -#define MULADDC_STOP \ - asm( "movl %%d3, %0 " : "=m" (c)); \ - asm( "movl %%a3, %0 " : "=m" (d)); \ - asm( "movl %%a2, %0 " : "=m" (s) :: \ - "d0", "d1", "d2", "d3", "d4", "a2", "a3" ); - -#define MULADDC_HUIT \ - asm( "movel %a2@+, %d1 " ); \ - asm( "mulul %d2, %d4:%d1 " ); \ - asm( "addxl %d3, %d1 " ); \ - asm( "addxl %d0, %d4 " ); \ - asm( "addl %d1, %a3@+ " ); \ - asm( "movel %a2@+, %d1 " ); \ - asm( "mulul %d2, %d3:%d1 " ); \ - asm( "addxl %d4, %d1 " ); \ - asm( "addxl %d0, %d3 " ); \ - asm( "addl %d1, %a3@+ " ); \ - asm( "movel %a2@+, %d1 " ); \ - asm( "mulul %d2, %d4:%d1 " ); \ - asm( "addxl %d3, %d1 " ); \ - asm( "addxl %d0, %d4 " ); \ - asm( "addl %d1, %a3@+ " ); \ - asm( "movel %a2@+, %d1 " ); \ - asm( "mulul %d2, %d3:%d1 " ); \ - asm( "addxl %d4, %d1 " ); \ - asm( "addxl %d0, %d3 " ); \ - asm( "addl %d1, %a3@+ " ); \ - asm( "movel %a2@+, %d1 " ); \ - asm( "mulul %d2, %d4:%d1 " ); \ - asm( "addxl %d3, %d1 " ); \ - asm( "addxl %d0, %d4 " ); \ - asm( "addl %d1, %a3@+ " ); \ - asm( "movel %a2@+, %d1 " ); \ - asm( "mulul %d2, %d3:%d1 " ); \ - asm( "addxl %d4, %d1 " ); \ - asm( "addxl %d0, %d3 " ); \ - asm( "addl %d1, %a3@+ " ); \ - asm( "movel %a2@+, %d1 " ); \ - asm( "mulul %d2, %d4:%d1 " ); \ - asm( "addxl %d3, %d1 " ); \ - asm( "addxl %d0, %d4 " ); \ - asm( "addl %d1, %a3@+ " ); \ - asm( "movel %a2@+, %d1 " ); \ - asm( "mulul %d2, %d3:%d1 " ); \ - asm( "addxl %d4, %d1 " ); \ - asm( "addxl %d0, %d3 " ); \ - asm( "addl %d1, %a3@+ " ); \ - asm( "addxl %d0, %d3 " ); - -#endif /* MC68000 */ - -#if defined(__powerpc__) || defined(__ppc__) -#if defined(__powerpc64__) || defined(__ppc64__) - -#if defined(__MACH__) && defined(__APPLE__) - -#define MULADDC_INIT \ - asm( "ld r3, %0 " :: "m" (s)); \ - asm( "ld r4, %0 " :: "m" (d)); \ - asm( "ld r5, %0 " :: "m" (c)); \ - asm( "ld r6, %0 " :: "m" (b)); \ - asm( "addi r3, r3, -8 " ); \ - asm( "addi r4, r4, -8 " ); \ - asm( "addic r5, r5, 0 " ); - -#define MULADDC_CORE \ - asm( "ldu r7, 8(r3) " ); \ - asm( "mulld r8, r7, r6 " ); \ - asm( "mulhdu r9, r7, r6 " ); \ - asm( "adde r8, r8, r5 " ); \ - asm( "ld r7, 8(r4) " ); \ - asm( "addze r5, r9 " ); \ - asm( "addc r8, r8, r7 " ); \ - asm( "stdu r8, 8(r4) " ); - -#define MULADDC_STOP \ - asm( "addze r5, r5 " ); \ - asm( "addi r4, r4, 8 " ); \ - asm( "addi r3, r3, 8 " ); \ - asm( "std r5, %0 " : "=m" (c)); \ - asm( "std r4, %0 " : "=m" (d)); \ - asm( "std r3, %0 " : "=m" (s) :: \ - "r3", "r4", "r5", "r6", "r7", "r8", "r9" ); - -#else - -#define MULADDC_INIT \ - asm( "ld %%r3, %0 " :: "m" (s)); \ - asm( "ld %%r4, %0 " :: "m" (d)); \ - asm( "ld %%r5, %0 " :: "m" (c)); \ - asm( "ld %%r6, %0 " :: "m" (b)); \ - asm( "addi %r3, %r3, -8 " ); \ - asm( "addi %r4, %r4, -8 " ); \ - asm( "addic %r5, %r5, 0 " ); - -#define MULADDC_CORE \ - asm( "ldu %r7, 8(%r3) " ); \ - asm( "mulld %r8, %r7, %r6 " ); \ - asm( "mulhdu %r9, %r7, %r6 " ); \ - asm( "adde %r8, %r8, %r5 " ); \ - asm( "ld %r7, 8(%r4) " ); \ - asm( "addze %r5, %r9 " ); \ - asm( "addc %r8, %r8, %r7 " ); \ - asm( "stdu %r8, 8(%r4) " ); - -#define MULADDC_STOP \ - asm( "addze %r5, %r5 " ); \ - asm( "addi %r4, %r4, 8 " ); \ - asm( "addi %r3, %r3, 8 " ); \ - asm( "std %%r5, %0 " : "=m" (c)); \ - asm( "std %%r4, %0 " : "=m" (d)); \ - asm( "std %%r3, %0 " : "=m" (s) :: \ - "r3", "r4", "r5", "r6", "r7", "r8", "r9" ); - -#endif - -#else /* PPC32 */ - -#if defined(__MACH__) && defined(__APPLE__) - -#define MULADDC_INIT \ - asm( "lwz r3, %0 " :: "m" (s)); \ - asm( "lwz r4, %0 " :: "m" (d)); \ - asm( "lwz r5, %0 " :: "m" (c)); \ - asm( "lwz r6, %0 " :: "m" (b)); \ - asm( "addi r3, r3, -4 " ); \ - asm( "addi r4, r4, -4 " ); \ - asm( "addic r5, r5, 0 " ); - -#define MULADDC_CORE \ - asm( "lwzu r7, 4(r3) " ); \ - asm( "mullw r8, r7, r6 " ); \ - asm( "mulhwu r9, r7, r6 " ); \ - asm( "adde r8, r8, r5 " ); \ - asm( "lwz r7, 4(r4) " ); \ - asm( "addze r5, r9 " ); \ - asm( "addc r8, r8, r7 " ); \ - asm( "stwu r8, 4(r4) " ); - -#define MULADDC_STOP \ - asm( "addze r5, r5 " ); \ - asm( "addi r4, r4, 4 " ); \ - asm( "addi r3, r3, 4 " ); \ - asm( "stw r5, %0 " : "=m" (c)); \ - asm( "stw r4, %0 " : "=m" (d)); \ - asm( "stw r3, %0 " : "=m" (s) :: \ - "r3", "r4", "r5", "r6", "r7", "r8", "r9" ); - -#else - -#define MULADDC_INIT \ - asm( "lwz %%r3, %0 " :: "m" (s)); \ - asm( "lwz %%r4, %0 " :: "m" (d)); \ - asm( "lwz %%r5, %0 " :: "m" (c)); \ - asm( "lwz %%r6, %0 " :: "m" (b)); \ - asm( "addi %r3, %r3, -4 " ); \ - asm( "addi %r4, %r4, -4 " ); \ - asm( "addic %r5, %r5, 0 " ); - -#define MULADDC_CORE \ - asm( "lwzu %r7, 4(%r3) " ); \ - asm( "mullw %r8, %r7, %r6 " ); \ - asm( "mulhwu %r9, %r7, %r6 " ); \ - asm( "adde %r8, %r8, %r5 " ); \ - asm( "lwz %r7, 4(%r4) " ); \ - asm( "addze %r5, %r9 " ); \ - asm( "addc %r8, %r8, %r7 " ); \ - asm( "stwu %r8, 4(%r4) " ); - -#define MULADDC_STOP \ - asm( "addze %r5, %r5 " ); \ - asm( "addi %r4, %r4, 4 " ); \ - asm( "addi %r3, %r3, 4 " ); \ - asm( "stw %%r5, %0 " : "=m" (c)); \ - asm( "stw %%r4, %0 " : "=m" (d)); \ - asm( "stw %%r3, %0 " : "=m" (s) :: \ - "r3", "r4", "r5", "r6", "r7", "r8", "r9" ); - -#endif - -#endif /* PPC32 */ -#endif /* PPC64 */ - -#if defined(__sparc__) - -#define MULADDC_INIT \ - asm( "ld %0, %%o0 " :: "m" (s)); \ - asm( "ld %0, %%o1 " :: "m" (d)); \ - asm( "ld %0, %%o2 " :: "m" (c)); \ - asm( "ld %0, %%o3 " :: "m" (b)); - -#define MULADDC_CORE \ - asm( "ld [%o0], %o4 " ); \ - asm( "inc 4, %o0 " ); \ - asm( "ld [%o1], %o5 " ); \ - asm( "umul %o3, %o4, %o4 " ); \ - asm( "addcc %o4, %o2, %o4 " ); \ - asm( "rd %y, %g1 " ); \ - asm( "addx %g1, 0, %g1 " ); \ - asm( "addcc %o4, %o5, %o4 " ); \ - asm( "st %o4, [%o1] " ); \ - asm( "addx %g1, 0, %o2 " ); \ - asm( "inc 4, %o1 " ); - -#define MULADDC_STOP \ - asm( "st %%o2, %0 " : "=m" (c)); \ - asm( "st %%o1, %0 " : "=m" (d)); \ - asm( "st %%o0, %0 " : "=m" (s) :: \ - "g1", "o0", "o1", "o2", "o3", "o4", "o5" ); - -#endif /* SPARCv8 */ - -#if defined(__microblaze__) || defined(microblaze) - -#define MULADDC_INIT \ - asm( "lwi r3, %0 " :: "m" (s)); \ - asm( "lwi r4, %0 " :: "m" (d)); \ - asm( "lwi r5, %0 " :: "m" (c)); \ - asm( "lwi r6, %0 " :: "m" (b)); \ - asm( "andi r7, r6, 0xffff" ); \ - asm( "bsrli r6, r6, 16 " ); - -#define MULADDC_CORE \ - asm( "lhui r8, r3, 0 " ); \ - asm( "addi r3, r3, 2 " ); \ - asm( "lhui r9, r3, 0 " ); \ - asm( "addi r3, r3, 2 " ); \ - asm( "mul r10, r9, r6 " ); \ - asm( "mul r11, r8, r7 " ); \ - asm( "mul r12, r9, r7 " ); \ - asm( "mul r13, r8, r6 " ); \ - asm( "bsrli r8, r10, 16 " ); \ - asm( "bsrli r9, r11, 16 " ); \ - asm( "add r13, r13, r8 " ); \ - asm( "add r13, r13, r9 " ); \ - asm( "bslli r10, r10, 16 " ); \ - asm( "bslli r11, r11, 16 " ); \ - asm( "add r12, r12, r10 " ); \ - asm( "addc r13, r13, r0 " ); \ - asm( "add r12, r12, r11 " ); \ - asm( "addc r13, r13, r0 " ); \ - asm( "lwi r10, r4, 0 " ); \ - asm( "add r12, r12, r10 " ); \ - asm( "addc r13, r13, r0 " ); \ - asm( "add r12, r12, r5 " ); \ - asm( "addc r5, r13, r0 " ); \ - asm( "swi r12, r4, 0 " ); \ - asm( "addi r4, r4, 4 " ); - -#define MULADDC_STOP \ - asm( "swi r5, %0 " : "=m" (c)); \ - asm( "swi r4, %0 " : "=m" (d)); \ - asm( "swi r3, %0 " : "=m" (s) :: \ - "r3", "r4" , "r5" , "r6" , "r7" , "r8" , \ - "r9", "r10", "r11", "r12", "r13" ); - -#endif /* MicroBlaze */ - -#if defined(__tricore__) - -#define MULADDC_INIT \ - asm( "ld.a %%a2, %0 " :: "m" (s)); \ - asm( "ld.a %%a3, %0 " :: "m" (d)); \ - asm( "ld.w %%d4, %0 " :: "m" (c)); \ - asm( "ld.w %%d1, %0 " :: "m" (b)); \ - asm( "xor %d5, %d5 " ); - -#define MULADDC_CORE \ - asm( "ld.w %d0, [%a2+] " ); \ - asm( "madd.u %e2, %e4, %d0, %d1 " ); \ - asm( "ld.w %d0, [%a3] " ); \ - asm( "addx %d2, %d2, %d0 " ); \ - asm( "addc %d3, %d3, 0 " ); \ - asm( "mov %d4, %d3 " ); \ - asm( "st.w [%a3+], %d2 " ); - -#define MULADDC_STOP \ - asm( "st.w %0, %%d4 " : "=m" (c)); \ - asm( "st.a %0, %%a3 " : "=m" (d)); \ - asm( "st.a %0, %%a2 " : "=m" (s) :: \ - "d0", "d1", "e2", "d4", "a2", "a3" ); - -#endif /* TriCore */ - -#if defined(__arm__) - -#define MULADDC_INIT \ - asm( "ldr r0, %0 " :: "m" (s)); \ - asm( "ldr r1, %0 " :: "m" (d)); \ - asm( "ldr r2, %0 " :: "m" (c)); \ - asm( "ldr r3, %0 " :: "m" (b)); - -#define MULADDC_CORE \ - asm( "ldr r4, [r0], #4 " ); \ - asm( "mov r5, #0 " ); \ - asm( "ldr r6, [r1] " ); \ - asm( "umlal r2, r5, r3, r4 " ); \ - asm( "adds r7, r6, r2 " ); \ - asm( "adc r2, r5, #0 " ); \ - asm( "str r7, [r1], #4 " ); - -#define MULADDC_STOP \ - asm( "str r2, %0 " : "=m" (c)); \ - asm( "str r1, %0 " : "=m" (d)); \ - asm( "str r0, %0 " : "=m" (s) :: \ - "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7" ); - -#endif /* ARMv3 */ - -#if defined(__alpha__) - -#define MULADDC_INIT \ - asm( "ldq $1, %0 " :: "m" (s)); \ - asm( "ldq $2, %0 " :: "m" (d)); \ - asm( "ldq $3, %0 " :: "m" (c)); \ - asm( "ldq $4, %0 " :: "m" (b)); - -#define MULADDC_CORE \ - asm( "ldq $6, 0($1) " ); \ - asm( "addq $1, 8, $1 " ); \ - asm( "mulq $6, $4, $7 " ); \ - asm( "umulh $6, $4, $6 " ); \ - asm( "addq $7, $3, $7 " ); \ - asm( "cmpult $7, $3, $3 " ); \ - asm( "ldq $5, 0($2) " ); \ - asm( "addq $7, $5, $7 " ); \ - asm( "cmpult $7, $5, $5 " ); \ - asm( "stq $7, 0($2) " ); \ - asm( "addq $2, 8, $2 " ); \ - asm( "addq $6, $3, $3 " ); \ - asm( "addq $5, $3, $3 " ); - -#define MULADDC_STOP \ - asm( "stq $3, %0 " : "=m" (c)); \ - asm( "stq $2, %0 " : "=m" (d)); \ - asm( "stq $1, %0 " : "=m" (s) :: \ - "$1", "$2", "$3", "$4", "$5", "$6", "$7" ); - -#endif /* Alpha */ - -#if defined(__mips__) - -#define MULADDC_INIT \ - asm( "lw $10, %0 " :: "m" (s)); \ - asm( "lw $11, %0 " :: "m" (d)); \ - asm( "lw $12, %0 " :: "m" (c)); \ - asm( "lw $13, %0 " :: "m" (b)); - -#define MULADDC_CORE \ - asm( "lw $14, 0($10) " ); \ - asm( "multu $13, $14 " ); \ - asm( "addi $10, $10, 4 " ); \ - asm( "mflo $14 " ); \ - asm( "mfhi $9 " ); \ - asm( "addu $14, $12, $14 " ); \ - asm( "lw $15, 0($11) " ); \ - asm( "sltu $12, $14, $12 " ); \ - asm( "addu $15, $14, $15 " ); \ - asm( "sltu $14, $15, $14 " ); \ - asm( "addu $12, $12, $9 " ); \ - asm( "sw $15, 0($11) " ); \ - asm( "addu $12, $12, $14 " ); \ - asm( "addi $11, $11, 4 " ); - -#define MULADDC_STOP \ - asm( "sw $12, %0 " : "=m" (c)); \ - asm( "sw $11, %0 " : "=m" (d)); \ - asm( "sw $10, %0 " : "=m" (s) :: \ - "$9", "$10", "$11", "$12", "$13", "$14", "$15" ); - -#endif /* MIPS */ -#endif /* GNUC */ - -#if (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__) - -#define MULADDC_INIT \ - __asm mov esi, s \ - __asm mov edi, d \ - __asm mov ecx, c \ - __asm mov ebx, b - -#define MULADDC_CORE \ - __asm lodsd \ - __asm mul ebx \ - __asm add eax, ecx \ - __asm adc edx, 0 \ - __asm add eax, [edi] \ - __asm adc edx, 0 \ - __asm mov ecx, edx \ - __asm stosd - -#if defined(POLARSSL_HAVE_SSE2) - -#define EMIT __asm _emit - -#define MULADDC_HUIT \ - EMIT 0x0F EMIT 0x6E EMIT 0xC9 \ - EMIT 0x0F EMIT 0x6E EMIT 0xC3 \ - EMIT 0x0F EMIT 0x6E EMIT 0x1F \ - EMIT 0x0F EMIT 0xD4 EMIT 0xCB \ - EMIT 0x0F EMIT 0x6E EMIT 0x16 \ - EMIT 0x0F EMIT 0xF4 EMIT 0xD0 \ - EMIT 0x0F EMIT 0x6E EMIT 0x66 EMIT 0x04 \ - EMIT 0x0F EMIT 0xF4 EMIT 0xE0 \ - EMIT 0x0F EMIT 0x6E EMIT 0x76 EMIT 0x08 \ - EMIT 0x0F EMIT 0xF4 EMIT 0xF0 \ - EMIT 0x0F EMIT 0x6E EMIT 0x7E EMIT 0x0C \ - EMIT 0x0F EMIT 0xF4 EMIT 0xF8 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xCA \ - EMIT 0x0F EMIT 0x6E EMIT 0x5F EMIT 0x04 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xDC \ - EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x08 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xEE \ - EMIT 0x0F EMIT 0x6E EMIT 0x67 EMIT 0x0C \ - EMIT 0x0F EMIT 0xD4 EMIT 0xFC \ - EMIT 0x0F EMIT 0x7E EMIT 0x0F \ - EMIT 0x0F EMIT 0x6E EMIT 0x56 EMIT 0x10 \ - EMIT 0x0F EMIT 0xF4 EMIT 0xD0 \ - EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ - EMIT 0x0F EMIT 0x6E EMIT 0x66 EMIT 0x14 \ - EMIT 0x0F EMIT 0xF4 EMIT 0xE0 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xCB \ - EMIT 0x0F EMIT 0x6E EMIT 0x76 EMIT 0x18 \ - EMIT 0x0F EMIT 0xF4 EMIT 0xF0 \ - EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x04 \ - EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ - EMIT 0x0F EMIT 0x6E EMIT 0x5E EMIT 0x1C \ - EMIT 0x0F EMIT 0xF4 EMIT 0xD8 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xCD \ - EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x10 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xD5 \ - EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x08 \ - EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xCF \ - EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x14 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xE5 \ - EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x0C \ - EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xCA \ - EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x18 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xF5 \ - EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x10 \ - EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xCC \ - EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x1C \ - EMIT 0x0F EMIT 0xD4 EMIT 0xDD \ - EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x14 \ - EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xCE \ - EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x18 \ - EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ - EMIT 0x0F EMIT 0xD4 EMIT 0xCB \ - EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x1C \ - EMIT 0x83 EMIT 0xC7 EMIT 0x20 \ - EMIT 0x83 EMIT 0xC6 EMIT 0x20 \ - EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ - EMIT 0x0F EMIT 0x7E EMIT 0xC9 - -#define MULADDC_STOP \ - EMIT 0x0F EMIT 0x77 \ - __asm mov c, ecx \ - __asm mov d, edi \ - __asm mov s, esi \ - -#else - -#define MULADDC_STOP \ - __asm mov c, ecx \ - __asm mov d, edi \ - __asm mov s, esi \ - -#endif /* SSE2 */ -#endif /* MSVC */ - -#endif /* POLARSSL_HAVE_ASM */ - -#if !defined(MULADDC_CORE) -#if defined(POLARSSL_HAVE_LONGLONG) - -#define MULADDC_INIT \ -{ \ - t_dbl r; \ - t_int r0, r1; - -#define MULADDC_CORE \ - r = *(s++) * (t_dbl) b; \ - r0 = r; \ - r1 = r >> biL; \ - r0 += c; r1 += (r0 < c); \ - r0 += *d; r1 += (r0 < *d); \ - c = r1; *(d++) = r0; - -#define MULADDC_STOP \ -} - -#else -#define MULADDC_INIT \ -{ \ - t_int s0, s1, b0, b1; \ - t_int r0, r1, rx, ry; \ - b0 = ( b << biH ) >> biH; \ - b1 = ( b >> biH ); - -#define MULADDC_CORE \ - s0 = ( *s << biH ) >> biH; \ - s1 = ( *s >> biH ); s++; \ - rx = s0 * b1; r0 = s0 * b0; \ - ry = s1 * b0; r1 = s1 * b1; \ - r1 += ( rx >> biH ); \ - r1 += ( ry >> biH ); \ - rx <<= biH; ry <<= biH; \ - r0 += rx; r1 += (r0 < rx); \ - r0 += ry; r1 += (r0 < ry); \ - r0 += c; r1 += (r0 < c); \ - r0 += *d; r1 += (r0 < *d); \ - c = r1; *(d++) = r0; - -#define MULADDC_STOP \ -} - -#endif /* C (generic) */ -#endif /* C (longlong) */ - -#endif /* bn_mul.h */ diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/config.h b/package/luci/libs/luci-lib-px5g/src/polarssl/config.h deleted file mode 100644 index 6463e5219f..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/polarssl/config.h +++ /dev/null @@ -1,329 +0,0 @@ -/** - * \file config.h - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * This set of compile-time options may be used to enable - * or disable features selectively, and reduce the global - * memory footprint. - */ -#ifndef POLARSSL_CONFIG_H -#define POLARSSL_CONFIG_H - -#ifndef _CRT_SECURE_NO_DEPRECATE -#define _CRT_SECURE_NO_DEPRECATE 1 -#endif - -/* - * Uncomment if native integers are 8-bit wide. - * -#define POLARSSL_HAVE_INT8 - */ - -/* - * Uncomment if native integers are 16-bit wide. - * -#define POLARSSL_HAVE_INT16 - */ - -/* - * Uncomment if the compiler supports long long. - */ -#define POLARSSL_HAVE_LONGLONG - - -/* - * Uncomment to enable the use of assembly code. - */ -#define POLARSSL_HAVE_ASM - -/* - * Uncomment if the CPU supports SSE2 (IA-32 specific). - * -#define POLARSSL_HAVE_SSE2 - */ - -/* - * Enable all SSL/TLS debugging messages. - */ -#define POLARSSL_DEBUG_MSG - -/* - * Enable the checkup functions (*_self_test). - */ -#define POLARSSL_SELF_TEST - -/* - * Enable the prime-number generation code. - */ -#define POLARSSL_GENPRIME - -/* - * Uncomment this macro to store the AES tables in ROM. - * -#define POLARSSL_AES_ROM_TABLES - */ - -/* - * Module: library/aes.c - * Caller: library/ssl_tls.c - * - * This module enables the following ciphersuites: - * SSL_RSA_AES_128_SHA - * SSL_RSA_AES_256_SHA - * SSL_EDH_RSA_AES_256_SHA - */ -#define POLARSSL_AES_C - -/* - * Module: library/arc4.c - * Caller: library/ssl_tls.c - * - * This module enables the following ciphersuites: - * SSL_RSA_RC4_128_MD5 - * SSL_RSA_RC4_128_SHA - */ -#define POLARSSL_ARC4_C - -/* - * Module: library/base64.c - * Caller: library/x509parse.c - * - * This module is required for X.509 support. - */ -#define POLARSSL_BASE64_C - -/* - * Module: library/bignum.c - * Caller: library/dhm.c - * library/rsa.c - * library/ssl_tls.c - * library/x509parse.c - * - * This module is required for RSA and DHM support. - */ -#define POLARSSL_BIGNUM_C - -/* - * Module: library/camellia.c - * Caller: - * - * This module enabled the following cipher suites: - */ -#define POLARSSL_CAMELLIA_C - -/* - * Module: library/certs.c - * Caller: - * - * This module is used for testing (ssl_client/server). - */ -#define POLARSSL_CERTS_C - -/* - * Module: library/debug.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * - * This module provides debugging functions. - */ -#define POLARSSL_DEBUG_C - -/* - * Module: library/des.c - * Caller: library/ssl_tls.c - * - * This module enables the following ciphersuites: - * SSL_RSA_DES_168_SHA - * SSL_EDH_RSA_DES_168_SHA - */ -#define POLARSSL_DES_C - -/* - * Module: library/dhm.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * - * This module enables the following ciphersuites: - * SSL_EDH_RSA_DES_168_SHA - * SSL_EDH_RSA_AES_256_SHA - */ -#define POLARSSL_DHM_C - -/* - * Module: library/havege.c - * Caller: - * - * This module enables the HAVEGE random number generator. - */ -#define POLARSSL_HAVEGE_C - -/* - * Module: library/md2.c - * Caller: library/x509parse.c - * - * Uncomment to enable support for (rare) MD2-signed X.509 certs. - * -#define POLARSSL_MD2_C - */ - -/* - * Module: library/md4.c - * Caller: library/x509parse.c - * - * Uncomment to enable support for (rare) MD4-signed X.509 certs. - * -#define POLARSSL_MD4_C - */ - -/* - * Module: library/md5.c - * Caller: library/ssl_tls.c - * library/x509parse.c - * - * This module is required for SSL/TLS and X.509. - */ -#define POLARSSL_MD5_C - -/* - * Module: library/net.c - * Caller: - * - * This module provides TCP/IP networking routines. - */ -#define POLARSSL_NET_C - -/* - * Module: library/padlock.c - * Caller: library/aes.c - * - * This modules adds support for the VIA PadLock on x86. - */ -#define POLARSSL_PADLOCK_C - -/* - * Module: library/rsa.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * library/x509.c - * - * This module is required for SSL/TLS and MD5-signed certificates. - */ -#define POLARSSL_RSA_C - -/* - * Module: library/sha1.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * library/x509parse.c - * - * This module is required for SSL/TLS and SHA1-signed certificates. - */ -#define POLARSSL_SHA1_C - -/* - * Module: library/sha2.c - * Caller: - * - * This module adds support for SHA-224 and SHA-256. - */ -#define POLARSSL_SHA2_C - -/* - * Module: library/sha4.c - * Caller: - * - * This module adds support for SHA-384 and SHA-512. - */ -#define POLARSSL_SHA4_C - -/* - * Module: library/ssl_cli.c - * Caller: - * - * This module is required for SSL/TLS client support. - */ -#define POLARSSL_SSL_CLI_C - -/* - * Module: library/ssl_srv.c - * Caller: - * - * This module is required for SSL/TLS server support. - */ -#define POLARSSL_SSL_SRV_C - -/* - * Module: library/ssl_tls.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * - * This module is required for SSL/TLS. - */ -#define POLARSSL_SSL_TLS_C - -/* - * Module: library/timing.c - * Caller: library/havege.c - * - * This module is used by the HAVEGE random number generator. - */ -#define POLARSSL_TIMING_C - -/* - * Module: library/x509parse.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * - * This module is required for X.509 certificate parsing. - */ -#define POLARSSL_X509_PARSE_C - -/* - * Module: library/x509_write.c - * Caller: - * - * This module is required for X.509 certificate writing. - */ -#define POLARSSL_X509_WRITE_C - -/* - * Module: library/xtea.c - * Caller: - */ -#define POLARSSL_XTEA_C - -#endif /* config.h */ diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/havege.h b/package/luci/libs/luci-lib-px5g/src/polarssl/havege.h deleted file mode 100644 index c27cecac0f..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/polarssl/havege.h +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \file havege.h - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef POLARSSL_HAVEGE_H -#define POLARSSL_HAVEGE_H - -#define COLLECT_SIZE 1024 - -/** - * \brief HAVEGE state structure - */ -typedef struct -{ - int PT1, PT2, offset[2]; - int pool[COLLECT_SIZE]; - int WALK[8192]; -} -havege_state; - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief HAVEGE initialization - * - * \param hs HAVEGE state to be initialized - */ -void havege_init( havege_state *hs ); - -/** - * \brief HAVEGE rand function - * - * \param rng_st points to an HAVEGE state - * - * \return A random int - */ -int havege_rand( void *p_rng ); - -#ifdef __cplusplus -} -#endif - -#endif /* havege.h */ diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/rsa.h b/package/luci/libs/luci-lib-px5g/src/polarssl/rsa.h deleted file mode 100644 index b31dc2f144..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/polarssl/rsa.h +++ /dev/null @@ -1,309 +0,0 @@ -/** - * \file rsa.h - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef POLARSSL_RSA_H -#define POLARSSL_RSA_H - -#include "polarssl/bignum.h" - -#define POLARSSL_ERR_RSA_BAD_INPUT_DATA -0x0400 -#define POLARSSL_ERR_RSA_INVALID_PADDING -0x0410 -#define POLARSSL_ERR_RSA_KEY_GEN_FAILED -0x0420 -#define POLARSSL_ERR_RSA_KEY_CHECK_FAILED -0x0430 -#define POLARSSL_ERR_RSA_PUBLIC_FAILED -0x0440 -#define POLARSSL_ERR_RSA_PRIVATE_FAILED -0x0450 -#define POLARSSL_ERR_RSA_VERIFY_FAILED -0x0460 -#define POLARSSL_ERR_RSA_OUTPUT_TO_LARGE -0x0470 - -/* - * PKCS#1 constants - */ -#define RSA_RAW 0 -#define RSA_MD2 2 -#define RSA_MD4 3 -#define RSA_MD5 4 -#define RSA_SHA1 5 -#define RSA_SHA256 6 - -#define RSA_PUBLIC 0 -#define RSA_PRIVATE 1 - -#define RSA_PKCS_V15 0 -#define RSA_PKCS_V21 1 - -#define RSA_SIGN 1 -#define RSA_CRYPT 2 - -/* - * DigestInfo ::= SEQUENCE { - * digestAlgorithm DigestAlgorithmIdentifier, - * digest Digest } - * - * DigestAlgorithmIdentifier ::= AlgorithmIdentifier - * - * Digest ::= OCTET STRING - */ -#define ASN1_HASH_MDX \ - "\x30\x20\x30\x0C\x06\x08\x2A\x86\x48" \ - "\x86\xF7\x0D\x02\x00\x05\x00\x04\x10" - -#define ASN1_HASH_SHA1 \ - "\x30\x21\x30\x09\x06\x05\x2B\x0E\x03" \ - "\x02\x1A\x05\x00\x04\x14" - -/** - * \brief RSA context structure - */ -typedef struct -{ - int ver; /*!< always 0 */ - int len; /*!< size(N) in chars */ - - mpi N; /*!< public modulus */ - mpi E; /*!< public exponent */ - - mpi D; /*!< private exponent */ - mpi P; /*!< 1st prime factor */ - mpi Q; /*!< 2nd prime factor */ - mpi DP; /*!< D % (P - 1) */ - mpi DQ; /*!< D % (Q - 1) */ - mpi QP; /*!< 1 / (Q % P) */ - - mpi RN; /*!< cached R^2 mod N */ - mpi RP; /*!< cached R^2 mod P */ - mpi RQ; /*!< cached R^2 mod Q */ - - int padding; /*!< 1.5 or OAEP/PSS */ - int hash_id; /*!< hash identifier */ - int (*f_rng)(void *); /*!< RNG function */ - void *p_rng; /*!< RNG parameter */ -} -rsa_context; - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief Initialize an RSA context - * - * \param ctx RSA context to be initialized - * \param padding RSA_PKCS_V15 or RSA_PKCS_V21 - * \param hash_id RSA_PKCS_V21 hash identifier - * \param f_rng RNG function - * \param p_rng RNG parameter - * - * \note The hash_id parameter is actually ignored - * when using RSA_PKCS_V15 padding. - * - * \note Currently (xyssl-0.8), RSA_PKCS_V21 padding - * is not supported. - */ -void rsa_init( rsa_context *ctx, - int padding, - int hash_id, - int (*f_rng)(void *), - void *p_rng ); - -/** - * \brief Generate an RSA keypair - * - * \param ctx RSA context that will hold the key - * \param nbits size of the public key in bits - * \param exponent public exponent (e.g., 65537) - * - * \note rsa_init() must be called beforehand to setup - * the RSA context (especially f_rng and p_rng). - * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code - */ -int rsa_gen_key( rsa_context *ctx, int nbits, int exponent ); - -/** - * \brief Check a public RSA key - * - * \param ctx RSA context to be checked - * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code - */ -int rsa_check_pubkey( rsa_context *ctx ); - -/** - * \brief Check a private RSA key - * - * \param ctx RSA context to be checked - * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code - */ -int rsa_check_privkey( rsa_context *ctx ); - -/** - * \brief Do an RSA public key operation - * - * \param ctx RSA context - * \param input input buffer - * \param output output buffer - * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code - * - * \note This function does NOT take care of message - * padding. Also, be sure to set input[0] = 0. - * - * \note The input and output buffers must be large - * enough (eg. 128 bytes if RSA-1024 is used). - */ -int rsa_public( rsa_context *ctx, - unsigned char *input, - unsigned char *output ); - -/** - * \brief Do an RSA private key operation - * - * \param ctx RSA context - * \param input input buffer - * \param output output buffer - * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code - * - * \note The input and output buffers must be large - * enough (eg. 128 bytes if RSA-1024 is used). - */ -int rsa_private( rsa_context *ctx, - unsigned char *input, - unsigned char *output ); - -/** - * \brief Add the message padding, then do an RSA operation - * - * \param ctx RSA context - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param ilen contains the the plaintext length - * \param input buffer holding the data to be encrypted - * \param output buffer that will hold the ciphertext - * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code - * - * \note The output buffer must be as large as the size - * of ctx->N (eg. 128 bytes if RSA-1024 is used). - */ -int rsa_pkcs1_encrypt( rsa_context *ctx, - int mode, int ilen, - unsigned char *input, - unsigned char *output ); - -/** - * \brief Do an RSA operation, then remove the message padding - * - * \param ctx RSA context - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param input buffer holding the encrypted data - * \param output buffer that will hold the plaintext - * \param olen will contain the plaintext length - * \param output_max_len maximum length of the output buffer - * - * \return 0 if successful, or an POLARSSL_ERR_RSA_XXX error code - * - * \note The output buffer must be as large as the size - * of ctx->N (eg. 128 bytes if RSA-1024 is used) otherwise - * an error is thrown. - */ -int rsa_pkcs1_decrypt( rsa_context *ctx, - int mode, int *olen, - unsigned char *input, - unsigned char *output, - int output_max_len); - -/** - * \brief Do a private RSA to sign a message digest - * - * \param ctx RSA context - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param hash_id RSA_RAW, RSA_MD{2,4,5} or RSA_SHA{1,256} - * \param hashlen message digest length (for RSA_RAW only) - * \param hash buffer holding the message digest - * \param sig buffer that will hold the ciphertext - * - * \return 0 if the signing operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code - * - * \note The "sig" buffer must be as large as the size - * of ctx->N (eg. 128 bytes if RSA-1024 is used). - */ -int rsa_pkcs1_sign( rsa_context *ctx, - int mode, - int hash_id, - int hashlen, - unsigned char *hash, - unsigned char *sig ); - -/** - * \brief Do a public RSA and check the message digest - * - * \param ctx points to an RSA public key - * \param mode RSA_PUBLIC or RSA_PRIVATE - * \param hash_id RSA_RAW, RSA_MD{2,4,5} or RSA_SHA{1,256} - * \param hashlen message digest length (for RSA_RAW only) - * \param hash buffer holding the message digest - * \param sig buffer holding the ciphertext - * - * \return 0 if the verify operation was successful, - * or an POLARSSL_ERR_RSA_XXX error code - * - * \note The "sig" buffer must be as large as the size - * of ctx->N (eg. 128 bytes if RSA-1024 is used). - */ -int rsa_pkcs1_verify( rsa_context *ctx, - int mode, - int hash_id, - int hashlen, - unsigned char *hash, - unsigned char *sig ); - -/** - * \brief Free the components of an RSA key - */ -void rsa_free( rsa_context *ctx ); - -/** - * \brief Checkup routine - * - * \return 0 if successful, or 1 if the test failed - */ -int rsa_self_test( int verbose ); - -#ifdef __cplusplus -} -#endif - -#endif /* rsa.h */ diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/sha1.h b/package/luci/libs/luci-lib-px5g/src/polarssl/sha1.h deleted file mode 100644 index 3ca7dc3195..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/polarssl/sha1.h +++ /dev/null @@ -1,150 +0,0 @@ -/** - * \file sha1.h - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef POLARSSL_SHA1_H -#define POLARSSL_SHA1_H - -/** - * \brief SHA-1 context structure - */ -typedef struct -{ - unsigned long total[2]; /*!< number of bytes processed */ - unsigned long state[5]; /*!< intermediate digest state */ - unsigned char buffer[64]; /*!< data block being processed */ - - unsigned char ipad[64]; /*!< HMAC: inner padding */ - unsigned char opad[64]; /*!< HMAC: outer padding */ -} -sha1_context; - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief SHA-1 context setup - * - * \param ctx context to be initialized - */ -void sha1_starts( sha1_context *ctx ); - -/** - * \brief SHA-1 process buffer - * - * \param ctx SHA-1 context - * \param input buffer holding the data - * \param ilen length of the input data - */ -void sha1_update( sha1_context *ctx, unsigned char *input, int ilen ); - -/** - * \brief SHA-1 final digest - * - * \param ctx SHA-1 context - * \param output SHA-1 checksum result - */ -void sha1_finish( sha1_context *ctx, unsigned char output[20] ); - -/** - * \brief Output = SHA-1( input buffer ) - * - * \param input buffer holding the data - * \param ilen length of the input data - * \param output SHA-1 checksum result - */ -void sha1( unsigned char *input, int ilen, unsigned char output[20] ); - -/** - * \brief Output = SHA-1( file contents ) - * - * \param path input file name - * \param output SHA-1 checksum result - * - * \return 0 if successful, 1 if fopen failed, - * or 2 if fread failed - */ -int sha1_file( char *path, unsigned char output[20] ); - -/** - * \brief SHA-1 HMAC context setup - * - * \param ctx HMAC context to be initialized - * \param key HMAC secret key - * \param keylen length of the HMAC key - */ -void sha1_hmac_starts( sha1_context *ctx, unsigned char *key, int keylen ); - -/** - * \brief SHA-1 HMAC process buffer - * - * \param ctx HMAC context - * \param input buffer holding the data - * \param ilen length of the input data - */ -void sha1_hmac_update( sha1_context *ctx, unsigned char *input, int ilen ); - -/** - * \brief SHA-1 HMAC final digest - * - * \param ctx HMAC context - * \param output SHA-1 HMAC checksum result - */ -void sha1_hmac_finish( sha1_context *ctx, unsigned char output[20] ); - -/** - * \brief Output = HMAC-SHA-1( hmac key, input buffer ) - * - * \param key HMAC secret key - * \param keylen length of the HMAC key - * \param input buffer holding the data - * \param ilen length of the input data - * \param output HMAC-SHA-1 result - */ -void sha1_hmac( unsigned char *key, int keylen, - unsigned char *input, int ilen, - unsigned char output[20] ); - -/** - * \brief Checkup routine - * - * \return 0 if successful, or 1 if the test failed - */ -int sha1_self_test( int verbose ); - -#ifdef __cplusplus -} -#endif - -#endif /* sha1.h */ diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/timing.h b/package/luci/libs/luci-lib-px5g/src/polarssl/timing.h deleted file mode 100644 index 62d627f61b..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/polarssl/timing.h +++ /dev/null @@ -1,81 +0,0 @@ -/** - * \file timing.h - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef POLARSSL_TIMING_H -#define POLARSSL_TIMING_H - -/** - * \brief timer structure - */ -struct hr_time -{ - unsigned char opaque[32]; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -extern int alarmed; - -/** - * \brief Return the CPU cycle counter value - */ -unsigned long hardclock( void ); - -/** - * \brief Return the elapsed time in milliseconds - * - * \param val points to a timer structure - * \param reset if set to 1, the timer is restarted - */ -unsigned long get_timer( struct hr_time *val, int reset ); - -/** - * \brief Setup an alarm clock - * - * \param seconds delay before the "alarmed" flag is set - */ -void set_alarm( int seconds ); - -/** - * \brief Sleep for a certain amount of time - */ -void m_sleep( int milliseconds ); - -#ifdef __cplusplus -} -#endif - -#endif /* timing.h */ diff --git a/package/luci/libs/luci-lib-px5g/src/polarssl/x509.h b/package/luci/libs/luci-lib-px5g/src/polarssl/x509.h deleted file mode 100644 index 908a1dbf51..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/polarssl/x509.h +++ /dev/null @@ -1,549 +0,0 @@ -/** - * \file x509.h - * - * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine - * - * Copyright (C) 2009 Paul Bakker - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the names of PolarSSL or XySSL nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef POLARSSL_X509_H -#define POLARSSL_X509_H - -#include "polarssl/rsa.h" - -#define POLARSSL_ERR_ASN1_OUT_OF_DATA -0x0014 -#define POLARSSL_ERR_ASN1_UNEXPECTED_TAG -0x0016 -#define POLARSSL_ERR_ASN1_INVALID_LENGTH -0x0018 -#define POLARSSL_ERR_ASN1_LENGTH_MISMATCH -0x001A -#define POLARSSL_ERR_ASN1_INVALID_DATA -0x001C - -#define POLARSSL_ERR_X509_FEATURE_UNAVAILABLE -0x0020 -#define POLARSSL_ERR_X509_CERT_INVALID_PEM -0x0040 -#define POLARSSL_ERR_X509_CERT_INVALID_FORMAT -0x0060 -#define POLARSSL_ERR_X509_CERT_INVALID_VERSION -0x0080 -#define POLARSSL_ERR_X509_CERT_INVALID_SERIAL -0x00A0 -#define POLARSSL_ERR_X509_CERT_INVALID_ALG -0x00C0 -#define POLARSSL_ERR_X509_CERT_INVALID_NAME -0x00E0 -#define POLARSSL_ERR_X509_CERT_INVALID_DATE -0x0100 -#define POLARSSL_ERR_X509_CERT_INVALID_PUBKEY -0x0120 -#define POLARSSL_ERR_X509_CERT_INVALID_SIGNATURE -0x0140 -#define POLARSSL_ERR_X509_CERT_INVALID_EXTENSIONS -0x0160 -#define POLARSSL_ERR_X509_CERT_UNKNOWN_VERSION -0x0180 -#define POLARSSL_ERR_X509_CERT_UNKNOWN_SIG_ALG -0x01A0 -#define POLARSSL_ERR_X509_CERT_UNKNOWN_PK_ALG -0x01C0 -#define POLARSSL_ERR_X509_CERT_SIG_MISMATCH -0x01E0 -#define POLARSSL_ERR_X509_CERT_VERIFY_FAILED -0x0200 -#define POLARSSL_ERR_X509_KEY_INVALID_PEM -0x0220 -#define POLARSSL_ERR_X509_KEY_INVALID_VERSION -0x0240 -#define POLARSSL_ERR_X509_KEY_INVALID_FORMAT -0x0260 -#define POLARSSL_ERR_X509_KEY_INVALID_ENC_IV -0x0280 -#define POLARSSL_ERR_X509_KEY_UNKNOWN_ENC_ALG -0x02A0 -#define POLARSSL_ERR_X509_KEY_PASSWORD_REQUIRED -0x02C0 -#define POLARSSL_ERR_X509_KEY_PASSWORD_MISMATCH -0x02E0 -#define POLARSSL_ERR_X509_POINT_ERROR -0x0300 -#define POLARSSL_ERR_X509_VALUE_TO_LENGTH -0x0320 - -#define BADCERT_EXPIRED 1 -#define BADCERT_REVOKED 2 -#define BADCERT_CN_MISMATCH 4 -#define BADCERT_NOT_TRUSTED 8 - -/* - * DER constants - */ -#define ASN1_BOOLEAN 0x01 -#define ASN1_INTEGER 0x02 -#define ASN1_BIT_STRING 0x03 -#define ASN1_OCTET_STRING 0x04 -#define ASN1_NULL 0x05 -#define ASN1_OID 0x06 -#define ASN1_UTF8_STRING 0x0C -#define ASN1_SEQUENCE 0x10 -#define ASN1_SET 0x11 -#define ASN1_PRINTABLE_STRING 0x13 -#define ASN1_T61_STRING 0x14 -#define ASN1_IA5_STRING 0x16 -#define ASN1_UTC_TIME 0x17 -#define ASN1_UNIVERSAL_STRING 0x1C -#define ASN1_BMP_STRING 0x1E -#define ASN1_PRIMITIVE 0x00 -#define ASN1_CONSTRUCTED 0x20 -#define ASN1_CONTEXT_SPECIFIC 0x80 - -/* - * various object identifiers - */ -#define X520_COMMON_NAME 3 -#define X520_COUNTRY 6 -#define X520_LOCALITY 7 -#define X520_STATE 8 -#define X520_ORGANIZATION 10 -#define X520_ORG_UNIT 11 -#define PKCS9_EMAIL 1 - -#define X509_OUTPUT_DER 0x01 -#define X509_OUTPUT_PEM 0x02 -#define PEM_LINE_LENGTH 72 -#define X509_ISSUER 0x01 -#define X509_SUBJECT 0x02 - -#define OID_X520 "\x55\x04" -#define OID_CN "\x55\x04\x03" -#define OID_PKCS1 "\x2A\x86\x48\x86\xF7\x0D\x01\x01" -#define OID_PKCS1_RSA "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01" -#define OID_PKCS1_RSA_SHA "\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05" -#define OID_PKCS9 "\x2A\x86\x48\x86\xF7\x0D\x01\x09" -#define OID_PKCS9_EMAIL "\x2A\x86\x48\x86\xF7\x0D\x01\x09\x01" - -/* - * Structures for parsing X.509 certificates - */ -typedef struct _x509_buf -{ - int tag; - int len; - unsigned char *p; -} -x509_buf; - -typedef struct _x509_name -{ - x509_buf oid; - x509_buf val; - struct _x509_name *next; -} -x509_name; - -typedef struct _x509_time -{ - int year, mon, day; - int hour, min, sec; -} -x509_time; - -typedef struct _x509_cert -{ - x509_buf raw; - x509_buf tbs; - - int version; - x509_buf serial; - x509_buf sig_oid1; - - x509_buf issuer_raw; - x509_buf subject_raw; - - x509_name issuer; - x509_name subject; - - x509_time valid_from; - x509_time valid_to; - - x509_buf pk_oid; - rsa_context rsa; - - x509_buf issuer_id; - x509_buf subject_id; - x509_buf v3_ext; - - int ca_istrue; - int max_pathlen; - - x509_buf sig_oid2; - x509_buf sig; - - struct _x509_cert *next; -} -x509_cert; - -/* - * Structures for writing X.509 certificates - */ -typedef struct _x509_node -{ - unsigned char *data; - unsigned char *p; - unsigned char *end; - - size_t len; -} -x509_node; - -typedef struct _x509_raw -{ - x509_node raw; - x509_node tbs; - - x509_node version; - x509_node serial; - x509_node tbs_signalg; - x509_node issuer; - x509_node validity; - x509_node subject; - x509_node subpubkey; - - x509_node signalg; - x509_node sign; -} -x509_raw; - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief Parse one or more certificates and add them - * to the chained list - * - * \param chain points to the start of the chain - * \param buf buffer holding the certificate data - * \param buflen size of the buffer - * - * \return 0 if successful, or a specific X509 error code - */ -int x509parse_crt( x509_cert *crt, unsigned char *buf, int buflen ); - -/** - * \brief Load one or more certificates and add them - * to the chained list - * - * \param chain points to the start of the chain - * \param path filename to read the certificates from - * - * \return 0 if successful, or a specific X509 error code - */ -int x509parse_crtfile( x509_cert *crt, char *path ); - -/** - * \brief Parse a private RSA key - * - * \param rsa RSA context to be initialized - * \param buf input buffer - * \param buflen size of the buffer - * \param pwd password for decryption (optional) - * \param pwdlen size of the password - * - * \return 0 if successful, or a specific X509 error code - */ -int x509parse_key( rsa_context *rsa, - unsigned char *buf, int buflen, - unsigned char *pwd, int pwdlen ); - -/** - * \brief Load and parse a private RSA key - * - * \param rsa RSA context to be initialized - * \param path filename to read the private key from - * \param pwd password to decrypt the file (can be NULL) - * - * \return 0 if successful, or a specific X509 error code - */ -int x509parse_keyfile( rsa_context *rsa, char *path, char *password ); - -/** - * \brief Store the certificate DN in printable form into buf; - * no more than (end - buf) characters will be written. - */ -int x509parse_dn_gets( char *buf, char *end, x509_name *dn ); - -/** - * \brief Returns an informational string about the - * certificate. - */ -char *x509parse_cert_info( char *prefix, x509_cert *crt ); - -/** - * \brief Return 0 if the certificate is still valid, - * or BADCERT_EXPIRED - */ -int x509parse_expired( x509_cert *crt ); - -/** - * \brief Verify the certificate signature - * - * \param crt a certificate to be verified - * \param trust_ca the trusted CA chain - * \param cn expected Common Name (can be set to - * NULL if the CN must not be verified) - * \param flags result of the verification - * - * \return 0 if successful or POLARSSL_ERR_X509_SIG_VERIFY_FAILED, - * in which case *flags will have one or more of - * the following values set: - * BADCERT_EXPIRED -- - * BADCERT_REVOKED -- - * BADCERT_CN_MISMATCH -- - * BADCERT_NOT_TRUSTED - * - * \note TODO: add two arguments, depth and crl - */ -int x509parse_verify( x509_cert *crt, - x509_cert *trust_ca, - char *cn, int *flags ); - -/** - * \brief Unallocate all certificate data - */ -void x509_free( x509_cert *crt ); - -/** - * \brief Checkup routine - * - * \return 0 if successful, or 1 if the test failed - */ -int x509_self_test( int verbose ); - -/** - * \brief Write a certificate info file - * - * \param chain points to the raw certificate data - * \param path filename to write the certificate to - * \param format X509_OUTPUT_DER or X509_OUTPUT_PEM - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_crtfile( x509_raw *chain, - unsigned char *path, - int format ); - -/** - * \brief Write a certificate signing request message format file - * - * \param chain points to the raw certificate (with x509write_create_csr) data - * \param path filename to write the certificate to - * \param format X509_OUTPUT_DER or X509_OUTPUT_PEM - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_csrfile( x509_raw *chain, - unsigned char *path, - int format ); - -/* - * \brief Write a private RSA key into a file - * - * \param rsa points to an RSA key - * \param path filename to write the key to - * \param format X509_OUTPUT_DER or X509_OUTPUT_PEM - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_keyfile( rsa_context *rsa, - char *path, - int format ); - -/** - * \brief Add a public key to certificate - * - * \param chain points to the raw certificate data - * \param pubkey points to an RSA key - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_add_pubkey( x509_raw *chain, rsa_context *pubkey ); - -/** - * \brief Create x509 subject/issuer field to raw certificate - * from string or CA cert. Make string NULL if you will - * use the CA copy function or make CA NULL then used - * the string parse. - * - * \param chain points to the raw certificate data - * \param names a string that can hold (separete with ";"): - * CN=CommonName - * -- O=Organization - * -- OU=OrgUnit - * -- ST=State - * -- L=Locality - * -- R=Email - * -- C=Country - * . Make that NULL if you didn't need that. - * \param flag flag is X509_ISSUER or X509_SUBJECT that defined - * where change - * \param ca the certificate for copy data. Make that NULL if you - * didn't need that. - * \param ca_flag set the ca field from copy to crt - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_add_customize ( x509_raw *crt, - unsigned char *names, - int flag, - x509_cert *ca, - int ca_flag ); - -/** -* \brief Add x509 issuer field -* -* \param chain points to the raw certificate data -* \param issuer a string holding (separete with ";"): -* CN=CommonName -* -- O=Organization -* -- OU=OrgUnit -* -- ST=State -* -- L=Locality -* -- R=Email -* -- C=Country -* . Set this to NULL if not needed. -* \return 0 if successful, or a specific X509 error code -*/ -int x509write_add_issuer( x509_raw *crt, unsigned char *issuer); - -/** - * \brief Add x509 subject field - * - * \param chain points to the raw certificate data - * \param subject a string holding (separete with ";"): - * CN=CommonName - * -- O=Organization - * -- OU=OrgUnit - * -- ST=State - * -- L=Locality - * -- R=Email - * -- C=Country - * . Set this to NULL if not needed. - * \return 0 if successful, or a specific X509 error code - */ -int x509write_add_subject( x509_raw *crt, unsigned char *subject); - -/** -* \brief Copy x509 issuer field from another certificate -* -* \param chain points to the raw certificate data -* \param from_crt the certificate whose issuer is to be copied. -* \return 0 if successful, or a specific X509 error code -*/ -int x509write_copy_issuer(x509_raw *crt, x509_cert *from_crt); - -/** -* \brief Copy x509 subject field from another certificate -* -* \param chain points to the raw certificate data -* \param from_crt the certificate whose subject is to be copied. -* \return 0 if successful, or a specific X509 error code -*/ -int x509write_copy_subject(x509_raw *crt, x509_cert *from_crt); - -/** -* \brief Copy x509 issuer field from the subject of another certificate -* -* \param chain points to the raw certificate data -* \param from_crt the certificate whose subject is to be copied. -* \return 0 if successful, or a specific X509 error code -*/ -int x509write_copy_issuer_from_subject(x509_raw *crt, x509_cert *from_crt); - -/** -* \brief Copy x509 subject field from the issuer of another certificate -* -* \param chain points to the raw certificate data -* \param from_crt the certificate whose issuer is to be copied. -* \return 0 if successful, or a specific X509 error code -*/ -int x509write_copy_subject_from_issuer(x509_raw *crt, x509_cert *from_crt); - -/** - * \brief Create x509 validity time in UTC - * - * \param chain points to the raw certificate data - * \param before valid not before in format YYYY-MM-DD hh:mm:ss - * \param after valid not after in format YYYY-MM-DD hh:mm:ss - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_add_validity( x509_raw *crt, - unsigned char *before, - unsigned char *after ); - -/** - * \brief Create a self-signed certificate - * - * \param chain points to the raw certificate data - * \param rsa a private key to sign the certificate - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_create_selfsign( x509_raw *crt, rsa_context *raw ); - -/** - * \brief Create a certificate - * - * \param chain points to the raw certificate data - * \param rsa a private key to sign the certificate - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_create_sign( x509_raw *crt, rsa_context *raw ); - -/** - * \brief Create a certificate signing request - * - * \param chain points to the raw certificate data. Didn't use the - * same chain that u have use for certificate. - * \param privkey a rsa private key - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_create_csr( x509_raw *chain, rsa_context *privkey ); - -/** - * \brief Serialize an rsa key into DER - * - * \param rsa a rsa key for output - * \param node a x509 node for write into - * - * \return 0 if successful, or a specific X509 error code - */ -int x509write_serialize_key( rsa_context *rsa, x509_node *node ); - -/** - * \brief Unallocate all raw certificate data - */ -void x509write_free_raw( x509_raw *crt ); - -/** - * \brief Allocate all raw certificate data - */ -void x509write_init_raw( x509_raw *crt ); - -/** - * \brief Unallocate all node certificate data - */ -void x509write_free_node( x509_node *crt_node ); - -/** - * \brief Allocate all node certificate data - */ -void x509write_init_node( x509_node *crt_node ); - -#ifdef __cplusplus -} -#endif - -#endif /* x509.h */ diff --git a/package/luci/libs/luci-lib-px5g/src/px5g.c b/package/luci/libs/luci-lib-px5g/src/px5g.c deleted file mode 100644 index feecd01275..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/px5g.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * px5g - Embedded x509 key and certificate generator based on PolarSSL - * - * Copyright (C) 2009 Steven Barth - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License, version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, - * MA 02110-1301 USA - */ - -#include "px5g.h" -#include -#include -#define VERSION 0.1 - -static char *xfields[] = {"CN", "O", "C", "OU", "ST", "L", "R"}; - -static int px5g_genkey(lua_State *L) { - int keysize = luaL_checkint(L, 1), pexp = luaL_optint(L, 2, 65537), ret; - px5g_rsa *px5g = lua_newuserdata(L, sizeof(px5g_rsa)); - if (!px5g) { - return luaL_error(L, "out of memory"); - } - - px5g->stat = 1; - havege_init(&px5g->hs); - rsa_init(&px5g->rsa, RSA_PKCS_V15, 0, havege_rand, &px5g->hs); - - if ((ret = rsa_gen_key(&px5g->rsa, keysize, pexp))) { - lua_pushnil(L); - lua_pushinteger(L, ret); - return 2; - } - - luaL_getmetatable(L, PX5G_KEY_META); - lua_setmetatable(L, -2); - return 1; -} - -static int px5g_rsa_asn1(lua_State *L) { - int ret; - px5g_rsa *px5g = luaL_checkudata(L, 1, PX5G_KEY_META); - x509_node node; - - x509write_init_node(&node); - if ((ret = x509write_serialize_key(&px5g->rsa, &node))) { - x509write_free_node(&node); - lua_pushnil(L); - lua_pushinteger(L, ret); - return 2; - } - - lua_pushlstring(L, (char*)node.data, node.len); - x509write_free_node(&node); - return 1; -} - -static int px5g_rsa_create_selfsigned(lua_State *L) { - px5g_rsa *px5g = luaL_checkudata(L, 1, PX5G_KEY_META); - luaL_checktype(L, 2, LUA_TTABLE); - time_t from = (time_t)luaL_checknumber(L, 3); - time_t to = (time_t)luaL_checknumber(L, 4); - char fstr[20], tstr[20]; - - lua_pushliteral(L, "CN"); - lua_rawget(L, 2); - luaL_argcheck(L, lua_isstring(L, -1), 2, "CN missing"); - lua_pop(L, 1); - - luaL_argcheck(L, - strftime(fstr, sizeof(fstr), "%F %H:%M:%S", gmtime(&from)), - 3, "Invalid Time"); - - luaL_argcheck(L, - strftime(tstr, sizeof(tstr), "%F %H:%M:%S", gmtime(&to)), - 4, "Invalid Time"); - - size_t join = 1; - lua_pushliteral(L, ""); - for (int i = 0; i < (sizeof(xfields) / sizeof(*xfields)); i++) { - lua_pushstring(L, xfields[i]); - lua_rawget(L, 2); - if (lua_isstring(L, -1)) { - const char *val = lua_tostring(L, -1); - luaL_argcheck(L, !strchr(val, ';'), 2, "Invalid Value"); - lua_pushfstring(L, "%s=%s;", xfields[i], val); - lua_remove(L, -2); - join++; - } else { - lua_pop(L, 1); - } - } - lua_concat(L, join); - - x509_raw cert; - x509write_init_raw(&cert); - x509write_add_pubkey(&cert, &px5g->rsa); - x509write_add_subject(&cert, (unsigned char*)lua_tostring(L, -1)); - x509write_add_validity(&cert, (unsigned char*)fstr, (unsigned char*)tstr); - x509write_create_selfsign(&cert, &px5g->rsa); - - lua_pushlstring(L, (char*)cert.raw.data, cert.raw.len); - x509write_free_raw(&cert); - return 1; -} - -static int px5g_rsa__gc(lua_State *L) { - px5g_rsa *px5g = luaL_checkudata(L, 1, PX5G_KEY_META); - if (px5g->stat) { - rsa_free(&px5g->rsa); - px5g->stat = 0; - } - return 0; -} - -static int px5g_rsa__tostring(lua_State *L) { - px5g_rsa *px5g = luaL_checkudata(L, 1, PX5G_KEY_META); - lua_pushfstring(L, "px5g context %p", px5g); - return 1; -} - -/* method table */ -static const luaL_reg M[] = { - {"asn1", px5g_rsa_asn1}, - {"create_selfsigned", px5g_rsa_create_selfsigned}, - {"__gc", px5g_rsa__gc}, - {"__tostring", px5g_rsa__tostring}, - {NULL, NULL} -}; - -/* module table */ -static const luaL_reg R[] = { - {"genkey", px5g_genkey}, - {NULL, NULL} -}; - -int luaopen_px5g(lua_State *L) { - /* register module */ - luaL_register(L, "px5g", R); - - /* Meta Table */ - luaL_newmetatable(L, PX5G_KEY_META); - luaL_register(L, NULL, M); - lua_pushvalue(L, -1); - lua_setfield(L, -2, "__index"); - - lua_setfield(L, -2, "meta_key"); - return 1; -} diff --git a/package/luci/libs/luci-lib-px5g/src/px5g.h b/package/luci/libs/luci-lib-px5g/src/px5g.h deleted file mode 100644 index 47542b5c06..0000000000 --- a/package/luci/libs/luci-lib-px5g/src/px5g.h +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include -#include - -#include "polarssl/havege.h" -#include "polarssl/bignum.h" -#include "polarssl/x509.h" -#include "polarssl/rsa.h" - -#define PX5G_KEY_META "px5g.key" - -typedef struct px5g_rsa { - int stat; - havege_state hs; - rsa_context rsa; -} px5g_rsa; diff --git a/package/luci/libs/luci-lib-rpcc/Makefile b/package/luci/libs/luci-lib-rpcc/Makefile deleted file mode 100644 index e0fea28a5c..0000000000 --- a/package/luci/libs/luci-lib-rpcc/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for AHCPd -LUCI_DEPENDS:=@BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.lua b/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.lua deleted file mode 100644 index 5558910bf1..0000000000 --- a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.lua +++ /dev/null @@ -1,59 +0,0 @@ --- Copyright 2009 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -local json = require "luci.json" -local ltn12 = require "luci.ltn12" -local nixio = require "nixio", require "nixio.util" - -local tostring, assert, setmetatable = tostring, assert, setmetatable -local error = error - -module "luci.rpcc" - -RQLIMIT = 32 * nixio.const.buffersize - -Client = util.class() - -function Client.__init__(self, fd, v1) - self.fd = fd - self.uniqueid = tostring(self):match("0x([a-f0-9]+)") - self.msgid = 1 - self.v1 = v1 -end - -function Client.request(self, method, params, notification) - local oldchunk = self.decoder and self.decoder.chunk - self.decoder = json.ActiveDecoder(self.fd:blocksource(nil, RQLIMIT)) - self.decoder.chunk = oldchunk - - local reqid = self.msgid .. self.uniqueid - local reqdata = json.Encoder({ - id = (not notification) and (self.msgid .. self.uniqueid) or nil, - jsonrpc = (not self.v1) and "2.0" or nil, - method = method, - params = params - }) - ltn12.pump.all(reqdata:source(), self.fd:sink()) - if not notification then - self.msgid = self.msgid + 1 - local response = self.decoder:get() - assert(response.id == reqid, "Invalid response id") - if response.error then - error(response.error.message or response.error) - end - return response.result - end -end - -function Client.proxy(self, prefix) - prefix = prefix or "" - return setmetatable({}, { - __call = function(proxy, ...) - return self:request(prefix, {...}) - end, - __index = function(proxy, name) - return self:proxy(prefix .. name .. ".") - end - }) -end \ No newline at end of file diff --git a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.luadoc b/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.luadoc deleted file mode 100644 index 5609bfd751..0000000000 --- a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc.luadoc +++ /dev/null @@ -1,36 +0,0 @@ ----[[ -LuCI RPC Client. - -@cstyle instance -]] -module "luci.rpcc" - ----[[ -Create a new JSON-RPC stream client. - -@class function -@param fd File descriptor -@param v1 Use protocol version 1.0 -@return RPC Client -]] - ----[[ -Request an RP call and get the response. - -@class function -@name Client.request -@param method Remote method -@param params Parameters -@param notification Notification only? -@return response -]] - ----[[ -Create a transparent RPC proxy. - -@class function -@name Client.proxy -@param prefix Method prefix -@return RPC Proxy object -]] - diff --git a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.lua b/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.lua deleted file mode 100644 index 275c396992..0000000000 --- a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.lua +++ /dev/null @@ -1,48 +0,0 @@ --- Copyright 2009 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -local rawget, setmetatable = rawget, setmetatable -local ipairs = ipairs - -module "luci.rpcc.ruci" - - -local Proxy = util.class() - -function factory(rpccl) - return { - cursor = function(...) - return Proxy(rpccl, rpccl:request("ruci.cursor", {...})) - end, - cursor_state = function(...) - return Proxy(rpccl, rpccl:request("ruci.cursor_state", {...})) - end - } -end - -function Proxy.__init__(self, rpccl, objid) - self.__rpccl = rpccl - self.__objid = objid - - setmetatable(self, { - __index = function(self, key) - return rawget(self, key) or Proxy[key] or function(self, ...) - local argv = {self.__objid, ...} - return self.__rpccl:request("ruci."..key, argv) - end - end - }) -end - -function Proxy.foreach(self, config, section, callback) - local sections = self.__rpccl:request("ruci.foreach", {self.__objid, config, section}) - if sections then - for _, s in ipairs(sections) do - callback(s) - end - return true - else - return false - end -end diff --git a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.luadoc b/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.luadoc deleted file mode 100644 index 9c842c5650..0000000000 --- a/package/luci/libs/luci-lib-rpcc/luasrc/rpcc/ruci.luadoc +++ /dev/null @@ -1,16 +0,0 @@ ----[[ -Transparent UCI over RPC client. - -@cstyle instance -]] -module "luci.rpcc.ruci" - ----[[ -Create a new UCI over RPC proxy. - -@class function -@name factory -@param rpccl RPC client -@return Network transparent UCI module -]] - diff --git a/package/luci/libs/rpcd-mod-rrdns/Makefile b/package/luci/libs/rpcd-mod-rrdns/Makefile deleted file mode 100644 index f0bf140a87..0000000000 --- a/package/luci/libs/rpcd-mod-rrdns/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (C) 2016-2017 Jo-Philipp Wich -# -# Licensed under the Apache License, Version 2.0. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=rpcd-mod-rrdns -PKG_VERSION:=20170710 -PKG_MAINTAINER:=Jo-Philipp Wich - -PKG_LICENSE:=Apache-2.0 - -PKG_BUILD_PARALLEL:=1 - -include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/cmake.mk - -define Build/Prepare - $(INSTALL_DIR) $(PKG_BUILD_DIR) - $(CP) ./src/* $(PKG_BUILD_DIR)/ -endef - -define Package/rpcd-mod-rrdns - SECTION:=libs - CATEGORY:=Libraries - TITLE:=Rapid reverse DNS rpcd module - DEPENDS:=+rpcd +libubox +libubus -endef - -define Package/rpcd-mod-rrdns/description - Provides rapid mass reverse DNS lookup functionality. -endef - -define Package/rpcd-mod-rrdns/install - $(INSTALL_DIR) $(1)/usr/lib/rpcd - $(INSTALL_BIN) $(PKG_BUILD_DIR)/rrdns.so $(1)/usr/lib/rpcd/ -endef - -define Package/rpcd-mod-rrdns/postinst -#!/bin/sh -killall -HUP rpcd 2>/dev/null -exit 0 -endef - -$(eval $(call BuildPackage,rpcd-mod-rrdns)) diff --git a/package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt b/package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt deleted file mode 100644 index ace6ac8664..0000000000 --- a/package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -cmake_minimum_required(VERSION 2.6) - -PROJECT(rpcd-mod-rrdns C) - -ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations) - -SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") - -IF(APPLE) - INCLUDE_DIRECTORIES(/opt/local/include) - LINK_DIRECTORIES(/opt/local/lib) -ENDIF() - -FIND_LIBRARY(resolv NAMES resolv) -IF(resolv STREQUAL "LIBS-NOTFOUND") - SET(resolv "") -ENDIF() - -ADD_LIBRARY(rpcd-mod-rrdns MODULE rrdns.c) -TARGET_LINK_LIBRARIES(rpcd-mod-rrdns ubox ubus ${resolv}) -SET_TARGET_PROPERTIES(rpcd-mod-rrdns PROPERTIES OUTPUT_NAME rrdns PREFIX "") - -INSTALL(TARGETS rpcd-mod-rrdns LIBRARY DESTINATION lib) diff --git a/package/luci/libs/rpcd-mod-rrdns/src/rrdns.c b/package/luci/libs/rpcd-mod-rrdns/src/rrdns.c deleted file mode 100644 index 691db9c8fa..0000000000 --- a/package/luci/libs/rpcd-mod-rrdns/src/rrdns.c +++ /dev/null @@ -1,389 +0,0 @@ -/* - * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server - * - * Copyright (C) 2016 Jo-Philipp Wich - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include - -#include -#include -#include - -#include - -#include "rrdns.h" - - -enum { - RPC_L_ADDRS, - RPC_L_TIMEOUT, - RPC_L_SERVER, - RPC_L_PORT, - RPC_L_LIMIT, - __RPC_L_MAX, -}; - -static const struct blobmsg_policy rpc_lookup_policy[__RPC_L_MAX] = { - [RPC_L_ADDRS] = { .name = "addrs", .type = BLOBMSG_TYPE_ARRAY }, - [RPC_L_TIMEOUT] = { .name = "timeout", .type = BLOBMSG_TYPE_INT32 }, - [RPC_L_SERVER] = { .name = "server", .type = BLOBMSG_TYPE_STRING }, - [RPC_L_PORT] = { .name = "port", .type = BLOBMSG_TYPE_INT16 }, - [RPC_L_LIMIT] = { .name = "limit", .type = BLOBMSG_TYPE_INT32 }, -}; - - -static int -rrdns_cmp_id(const void *k1, const void *k2, void *ptr) -{ - const uint16_t *id1 = k1, *id2 = k2; - return (*id1 - *id2); -} - -static int -rrdns_cmp_addr(const void *k1, const void *k2, void *ptr) -{ - const struct in6_addr *a1 = k1, *a2 = k2; - return memcmp(a1, a2, sizeof(*a1)); -} - -static int -rrdns_parse_response(struct rrdns_context *rctx) -{ - int n, len; - uint16_t id; - struct rrdns_request *req; - unsigned char res[512]; - char buf[INET6_ADDRSTRLEN], dname[MAXDNAME]; - HEADER *hdr; - ns_msg handle; - ns_rr rr; - - len = recv(rctx->socket.fd, res, sizeof(res), 0); - - if (len < sizeof(*hdr)) - return -ENODATA; - - hdr = (HEADER *)res; - id = hdr->id; - req = avl_find_element(&rctx->request_ids, &id, req, by_id); - - if (!req) - return -ENOENT; - - avl_delete(&rctx->request_ids, &req->by_id); - - if (ns_initparse(res, len, &handle)) - return -EINVAL; - - for (n = 0; n < ns_msg_count(handle, ns_s_an); n++) { - if (ns_parserr(&handle, ns_s_an, n, &rr)) - return -EINVAL; - - if (ns_rr_type(rr) != ns_t_ptr) - continue; - - if (ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle), - ns_rr_rdata(rr), dname, sizeof(dname)) < 0) - return -EINVAL; - - inet_ntop(req->family, &req->addr, buf, sizeof(buf)); - blobmsg_add_string(&rctx->blob, buf, dname); - } - - return 0; -} - -static int -rrdns_next_query(struct rrdns_context *rctx) -{ - const char *addr = NULL, *hex = "0123456789abcdef"; - struct rrdns_request *req; - int i, alen, family; - char *p, dname[73]; - - union { - unsigned char uchar[4]; - struct in6_addr in6; - struct in_addr in; - } a = { }; - - union { - unsigned char buf[512]; - HEADER hdr; - } msg; - - if (rctx->addr_rem > 0 && - blob_pad_len(rctx->addr_cur) <= rctx->addr_rem && - blob_pad_len(rctx->addr_cur) >= sizeof(struct blob_attr)) { - - addr = blobmsg_get_string(rctx->addr_cur); - rctx->addr_rem -= blob_pad_len(rctx->addr_cur); - rctx->addr_cur = blob_next(rctx->addr_cur); - } - - if (!addr) - return 0; - - if (inet_pton(AF_INET6, addr, &a.in6)) { - memset(dname, 0, sizeof(dname)); - - for (i = 0, p = dname; i < 16; i++) { - *p++ = hex[a.in6.s6_addr[15-i] % 16]; - *p++ = '.'; - *p++ = hex[a.in6.s6_addr[15-i] / 16]; - *p++ = '.'; - } - - p += snprintf(p, p - dname - 1, "ip6.arpa"); - - family = AF_INET6; - alen = p - dname; - } - else if (inet_pton(AF_INET, addr, &a.in)) { - family = AF_INET; - alen = snprintf(dname, sizeof(dname), "%u.%u.%u.%u.in-addr.arpa", - a.uchar[3], a.uchar[2], a.uchar[1], a.uchar[0]); - } - else { - return -EINVAL; - } - - alen = res_mkquery(QUERY, dname, C_IN, T_PTR, NULL, 0, NULL, - msg.buf, sizeof(msg.buf)); - - if (alen < 0) - return alen; - - if (avl_find(&rctx->request_addrs, &a.in6)) - return -ENOTUNIQ; - - if (send(rctx->socket.fd, msg.buf, alen, 0) != alen) - return -errno; - - req = calloc(1, sizeof(*req)); - - if (!req) - return -ENOMEM; - - req->id = msg.hdr.id; - req->by_id.key = &req->id; - avl_insert(&rctx->request_ids, &req->by_id); - - req->family = family; - req->addr.in6 = a.in6; - req->by_addr.key = &req->addr.in6; - avl_insert(&rctx->request_addrs, &req->by_addr); - - return 0; -} - -static void -rdns_shutdown(struct rrdns_context *rctx) -{ - struct rrdns_request *req, *tmp; - - uloop_timeout_cancel(&rctx->timeout); - uloop_fd_delete(&rctx->socket); - - close(rctx->socket.fd); - - ubus_send_reply(rctx->context, &rctx->request, rctx->blob.head); - ubus_complete_deferred_request(rctx->context, &rctx->request, - UBUS_STATUS_OK); - - avl_remove_all_elements(&rctx->request_addrs, req, by_addr, tmp) - free(req); - - blob_buf_free(&rctx->blob); - free(rctx); -} - -static void -rrdns_handle_timeout(struct uloop_timeout *utm) -{ - struct rrdns_context *rctx = - container_of(utm, struct rrdns_context, timeout); - - rdns_shutdown(rctx); -} - -static void -rrdns_handle_response(struct uloop_fd *ufd, unsigned int ev) -{ - struct rrdns_context *rctx = - container_of(ufd, struct rrdns_context, socket); - - int err = rrdns_parse_response(rctx); - - if (err != -ENODATA && err != -ENOENT) - rrdns_next_query(rctx); - - if (avl_is_empty(&rctx->request_ids)) - rdns_shutdown(rctx); -} - -static char * -rrdns_find_nameserver(void) -{ - static char line[2*INET6_ADDRSTRLEN]; - struct in6_addr in6; - FILE *resolvconf; - char *p; - - resolvconf = fopen("/etc/resolv.conf", "r"); - - if (!resolvconf) - return NULL; - - while (fgets(line, sizeof(line), resolvconf)) { - p = strtok(line, " \t"); - - if (!p || strcmp(p, "nameserver")) - continue; - - p = strtok(NULL, " \t\r\n"); - - if (!p) - continue; - - if (!inet_pton(AF_INET6, p, &in6) && !inet_pton(AF_INET, p, &in6)) - continue; - - fclose(resolvconf); - return p; - } - - fclose(resolvconf); - return NULL; -} - -static int -rpc_rrdns_lookup(struct ubus_context *ctx, struct ubus_object *obj, - struct ubus_request_data *req, const char *method, - struct blob_attr *msg) -{ - int port = 53, limit = RRDNS_DEF_LIMIT, timeout = RRDNS_DEF_TIMEOUT; - struct blob_attr *tb[__RPC_L_MAX]; - struct rrdns_context *rctx; - const char *server = NULL; - - blobmsg_parse(rpc_lookup_policy, __RPC_L_MAX, tb, - blob_data(msg), blob_len(msg)); - - if (tb[RPC_L_PORT]) - port = blobmsg_get_u16(tb[RPC_L_PORT]); - - if (tb[RPC_L_LIMIT]) - limit = blobmsg_get_u32(tb[RPC_L_LIMIT]); - - if (tb[RPC_L_TIMEOUT]) - timeout = blobmsg_get_u32(tb[RPC_L_TIMEOUT]); - - if (tb[RPC_L_SERVER]) - server = blobmsg_get_string(tb[RPC_L_SERVER]); - - - if (!tb[RPC_L_ADDRS]) - return UBUS_STATUS_INVALID_ARGUMENT; - - if (port <= 0) - return UBUS_STATUS_INVALID_ARGUMENT; - - if (limit <= 0 || limit > RRDNS_MAX_LIMIT) - return UBUS_STATUS_INVALID_ARGUMENT; - - if (timeout <= 0 || timeout > RRDNS_MAX_TIMEOUT) - return UBUS_STATUS_INVALID_ARGUMENT; - - - if (!server || !*server) - server = rrdns_find_nameserver(); - - if (!server) - return UBUS_STATUS_NOT_FOUND; - - rctx = calloc(1, sizeof(*rctx)); - - if (!rctx) - return UBUS_STATUS_UNKNOWN_ERROR; - - rctx->socket.fd = usock(USOCK_UDP, server, usock_port(port)); - - if (rctx->socket.fd < 0) { - free(rctx); - return UBUS_STATUS_UNKNOWN_ERROR; - } - - rctx->context = ctx; - rctx->addr_cur = blobmsg_data(tb[RPC_L_ADDRS]); - rctx->addr_rem = blobmsg_data_len(tb[RPC_L_ADDRS]); - - avl_init(&rctx->request_ids, rrdns_cmp_id, false, NULL); - avl_init(&rctx->request_addrs, rrdns_cmp_addr, false, NULL); - - rctx->timeout.cb = rrdns_handle_timeout; - uloop_timeout_set(&rctx->timeout, timeout); - - rctx->socket.cb = rrdns_handle_response; - uloop_fd_add(&rctx->socket, ULOOP_READ); - - blob_buf_init(&rctx->blob, 0); - - while (limit--) - rrdns_next_query(rctx); - - ubus_defer_request(ctx, req, &rctx->request); - - return UBUS_STATUS_OK; -} - - -static int -rpc_rrdns_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx) -{ - static const struct ubus_method rrdns_methods[] = { - UBUS_METHOD("lookup", rpc_rrdns_lookup, rpc_lookup_policy), - }; - - static struct ubus_object_type rrdns_type = - UBUS_OBJECT_TYPE("rpcd-rrdns", rrdns_methods); - - static struct ubus_object obj = { - .name = "network.rrdns", - .type = &rrdns_type, - .methods = rrdns_methods, - .n_methods = ARRAY_SIZE(rrdns_methods), - }; - - return ubus_add_object(ctx, &obj); -} - -struct rpc_plugin rpc_plugin = { - .init = rpc_rrdns_api_init -}; diff --git a/package/luci/libs/rpcd-mod-rrdns/src/rrdns.h b/package/luci/libs/rpcd-mod-rrdns/src/rrdns.h deleted file mode 100644 index 3f95116f08..0000000000 --- a/package/luci/libs/rpcd-mod-rrdns/src/rrdns.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server - * - * Copyright (C) 2016-2017 Jo-Philipp Wich - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -#include -#include - -#define RRDNS_MAX_TIMEOUT 5000 -#define RRDNS_DEF_TIMEOUT 250 - -#define RRDNS_MAX_LIMIT 1000 -#define RRDNS_DEF_LIMIT 10 - - -struct rrdns_request { - struct avl_node by_id; - struct avl_node by_addr; - uint16_t id; - uint16_t family; - union { - struct in_addr in; - struct in6_addr in6; - } addr; -}; - -struct rrdns_context { - struct ubus_context *context; - struct ubus_request_data request; - struct uloop_timeout timeout; - struct blob_attr *addr_cur; - int addr_rem; - struct uloop_fd socket; - struct blob_buf blob; - struct avl_tree request_ids; - struct avl_tree request_addrs; -}; diff --git a/package/luci/luci.mk b/package/luci/luci.mk deleted file mode 100644 index 0b2ec4e700..0000000000 --- a/package/luci/luci.mk +++ /dev/null @@ -1,239 +0,0 @@ -# -# Copyright (C) 2008-2015 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -LUCI_NAME?=$(notdir ${CURDIR}) -LUCI_TYPE?=$(word 2,$(subst -, ,$(LUCI_NAME))) -LUCI_BASENAME?=$(patsubst luci-$(LUCI_TYPE)-%,%,$(LUCI_NAME)) -LUCI_LANGUAGES:=$(sort $(filter-out templates,$(notdir $(wildcard ${CURDIR}/po/*)))) -LUCI_DEFAULTS:=$(notdir $(wildcard ${CURDIR}/root/etc/uci-defaults/*)) -LUCI_PKGARCH?=$(if $(realpath src/Makefile),,all) - -# Language code titles -LUCI_LANG.ca=Català (Catalan) -LUCI_LANG.cs=ČeÅ¡tina (Czech) -LUCI_LANG.de=Deutsch (German) -LUCI_LANG.el=Ελληνικά (Greek) -LUCI_LANG.en=English -LUCI_LANG.es=Español (Spanish) -LUCI_LANG.fr=Français (French) -LUCI_LANG.he=עִבְרִית (Hebrew) -LUCI_LANG.hu=Magyar (Hungarian) -LUCI_LANG.it=Italiano (Italian) -LUCI_LANG.ja=日本語 (Japanese) -LUCI_LANG.ko=한국어 (Korean) -LUCI_LANG.ms=Bahasa Melayu (Malay) -LUCI_LANG.no=Norsk (Norwegian) -LUCI_LANG.pl=Polski (Polish) -LUCI_LANG.pt-br=Português do Brasil (Brazialian Portuguese) -LUCI_LANG.pt=Português (Portuguese) -LUCI_LANG.ro=Română (Romanian) -LUCI_LANG.ru=Русский (Russian) -LUCI_LANG.sk=Slovenčina (Slovak) -LUCI_LANG.sv=Svenska (Swedish) -LUCI_LANG.tr=Türkçe (Turkish) -LUCI_LANG.uk=украї́нська (Ukrainian) -LUCI_LANG.vi=Tiếng Việt (Vietnamese) -LUCI_LANG.zh-cn=中文 (Chinese) -LUCI_LANG.zh-tw=臺灣華語 (Taiwanese) - -# Submenu titles -LUCI_MENU.col=1. Collections -LUCI_MENU.mod=2. Modules -LUCI_MENU.app=3. Applications -LUCI_MENU.theme=4. Themes -LUCI_MENU.proto=5. Protocols -LUCI_MENU.lib=6. Libraries - - -PKG_NAME?=$(LUCI_NAME) - -PKG_VERSION?=$(if $(DUMP),x,$(strip $(shell \ - if svn info >/dev/null 2>/dev/null; then \ - revision="svn-r$$(LC_ALL=C svn info | sed -ne 's/^Revision: //p')"; \ - elif git log -1 >/dev/null 2>/dev/null; then \ - revision="svn-r$$(LC_ALL=C git log -1 | sed -ne 's/.*git-svn-id: .*@\([0-9]\+\) .*/\1/p')"; \ - if [ "$$revision" = "svn-r" ]; then \ - set -- $$(git log -1 --format="%ct %h" --abbrev=7); \ - secs="$$(($$1 % 86400))"; \ - yday="$$(date --utc --date="@$$1" "+%y.%j")"; \ - revision="$$(printf 'git-%s.%05d-%s' "$$yday" "$$secs" "$$2")"; \ - fi; \ - else \ - revision="unknown"; \ - fi; \ - echo "$$revision" \ -))) - -PKG_GITBRANCH?=$(if $(DUMP),x,$(strip $(shell \ - variant="LuCI"; \ - if git log -1 >/dev/null 2>/dev/null; then \ - branch="$$(git branch --remote --verbose --no-abbrev --contains 2>/dev/null | \ - sed -rne 's|^[^/]+/([^ ]+) [a-f0-9]{40} .+$$|\1|p' | head -n1)"; \ - if [ "$$branch" != "master" ]; then \ - variant="LuCI $$branch branch"; \ - else \ - variant="LuCI Master"; \ - fi; \ - fi; \ - echo "$$variant" \ -))) - -PKG_RELEASE?=1 -PKG_INSTALL:=$(if $(realpath src/Makefile),1) -PKG_BUILD_DEPENDS += lua/host luci-base/host $(LUCI_BUILD_DEPENDS) -PKG_CONFIG_DEPENDS += CONFIG_LUCI_SRCDIET - -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) - -include $(INCLUDE_DIR)/package.mk - -define Package/$(PKG_NAME) - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=$(if $(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.$(LUCI_TYPE)),$(LUCI_MENU.app)) - TITLE:=$(if $(LUCI_TITLE),$(LUCI_TITLE),LuCI $(LUCI_NAME) $(LUCI_TYPE)) - DEPENDS:=$(LUCI_DEPENDS) - $(if $(LUCI_PKGARCH),PKGARCH:=$(LUCI_PKGARCH)) -endef - -ifneq ($(LUCI_DESCRIPTION),) - define Package/$(PKG_NAME)/description - $(strip $(LUCI_DESCRIPTION)) - endef -endif - -# Language selection for luci-base -ifeq ($(PKG_NAME),luci-base) - define Package/luci-base/config - config LUCI_SRCDIET - bool "Minify Lua sources" - default n - - menu "Translations"$(foreach lang,$(LUCI_LANGUAGES), - - config LUCI_LANG_$(lang) - tristate "$(shell echo '$(LUCI_LANG.$(lang))' | sed -e 's/^.* (\(.*\))$$/\1/') ($(lang))") - - endmenu - endef -endif - -define Build/Prepare - for d in luasrc htdocs root src; do \ - if [ -d ./$$$$d ]; then \ - mkdir -p $(PKG_BUILD_DIR)/$$$$d; \ - $(CP) ./$$$$d/* $(PKG_BUILD_DIR)/$$$$d/; \ - fi; \ - done - $(call Build/Prepare/Default) -endef - -define Build/Configure -endef - -ifneq ($(wildcard ${CURDIR}/src/Makefile),) - MAKE_PATH := src/ - MAKE_VARS += FPIC="$(FPIC)" LUCI_VERSION="$(PKG_VERSION)" LUCI_GITBRANCH="$(PKG_GITBRANCH)" - - define Build/Compile - $(call Build/Compile/Default,clean compile) - endef -else - define Build/Compile - endef -endif - -HTDOCS = /www -LUA_LIBRARYDIR = /usr/lib/lua -LUCI_LIBRARYDIR = $(LUA_LIBRARYDIR)/luci - -define SrcDiet - $(FIND) $(1) -type f -name '*.lua' | while read src; do \ - if LuaSrcDiet --noopt-binequiv -o "$$$$src.o" "$$$$src"; \ - then mv "$$$$src.o" "$$$$src"; fi; \ - done -endef - -define SubstituteVersion - $(FIND) $(1) -type f -name '*.htm' | while read src; do \ - $(SED) 's/<%# *\([^ ]*\)PKG_VERSION *%>/\1$(PKG_VERSION)/g' \ - -e 's/"\(<%= *\(media\|resource\) *%>[^"]*\.\(js\|css\)\)"/"\1?v=$(PKG_VERSION)"/g' \ - "$$$$src"; \ - done -endef - -define Package/$(PKG_NAME)/install - if [ -d $(PKG_BUILD_DIR)/luasrc ]; then \ - $(INSTALL_DIR) $(1)$(LUCI_LIBRARYDIR); \ - cp -pR $(PKG_BUILD_DIR)/luasrc/* $(1)$(LUCI_LIBRARYDIR)/; \ - $(FIND) $(1)$(LUCI_LIBRARYDIR)/ -type f -name '*.luadoc' | $(XARGS) rm; \ - $(if $(CONFIG_LUCI_SRCDIET),$(call SrcDiet,$(1)$(LUCI_LIBRARYDIR)/),true); \ - $(call SubstituteVersion,$(1)$(LUCI_LIBRARYDIR)/); \ - else true; fi - if [ -d $(PKG_BUILD_DIR)/htdocs ]; then \ - $(INSTALL_DIR) $(1)$(HTDOCS); \ - cp -pR $(PKG_BUILD_DIR)/htdocs/* $(1)$(HTDOCS)/; \ - else true; fi - if [ -d $(PKG_BUILD_DIR)/root ]; then \ - $(INSTALL_DIR) $(1)/; \ - cp -pR $(PKG_BUILD_DIR)/root/* $(1)/; \ - else true; fi - if [ -d $(PKG_BUILD_DIR)/src ]; then \ - $(call Build/Install/Default) \ - $(CP) $(PKG_INSTALL_DIR)/* $(1)/; \ - else true; fi -endef - -ifneq ($(LUCI_DEFAULTS),) -define Package/$(PKG_NAME)/postinst -[ -n "$${IPKG_INSTROOT}" ] || {$(foreach script,$(LUCI_DEFAULTS), - (. /etc/uci-defaults/$(script)) && rm -f /etc/uci-defaults/$(script)) - exit 0 -} -endef -endif - - -LUCI_BUILD_PACKAGES := $(PKG_NAME) - -define LuciTranslation - define Package/luci-i18n-$(LUCI_BASENAME)-$(1) - SECTION:=luci - CATEGORY:=LuCI - TITLE:=$(PKG_NAME) - $(1) translation - HIDDEN:=1 - DEFAULT:=LUCI_LANG_$(1)||(ALL&&m) - DEPENDS:=$(PKG_NAME) - PKGARCH:=all - endef - - define Package/luci-i18n-$(LUCI_BASENAME)-$(1)/description - Translation for $(PKG_NAME) - $(LUCI_LANG.$(1)) - endef - - define Package/luci-i18n-$(LUCI_BASENAME)-$(1)/install - $$(INSTALL_DIR) $$(1)/etc/uci-defaults - echo "uci set luci.languages.$(subst -,_,$(1))='$(LUCI_LANG.$(1))'; uci commit luci" \ - > $$(1)/etc/uci-defaults/luci-i18n-$(LUCI_BASENAME)-$(1) - $$(INSTALL_DIR) $$(1)$(LUCI_LIBRARYDIR)/i18n - $(foreach po,$(wildcard ${CURDIR}/po/$(1)/*.po), \ - po2lmo $(po) \ - $$(1)$(LUCI_LIBRARYDIR)/i18n/$(basename $(notdir $(po))).$(1).lmo;) - endef - - define Package/luci-i18n-$(LUCI_BASENAME)-$(1)/postinst - [ -n "$$$${IPKG_INSTROOT}" ] || { - (. /etc/uci-defaults/luci-i18n-$(LUCI_BASENAME)-$(1)) && rm -f /etc/uci-defaults/luci-i18n-$(LUCI_BASENAME)-$(1) - exit 0 - } - endef - - LUCI_BUILD_PACKAGES += luci-i18n-$(LUCI_BASENAME)-$(1) - -endef - -$(foreach lang,$(LUCI_LANGUAGES),$(eval $(call LuciTranslation,$(lang)))) -$(foreach pkg,$(LUCI_BUILD_PACKAGES),$(eval $(call BuildPackage,$(pkg)))) diff --git a/package/luci/modules/luci-base/Makefile b/package/luci/modules/luci-base/Makefile deleted file mode 100644 index 6393195e59..0000000000 --- a/package/luci/modules/luci-base/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# -# Copyright (C) 2008-2015 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=luci-base - -LUCI_TYPE:=mod -LUCI_BASENAME:=base - -LUCI_TITLE:=LuCI core libraries -LUCI_DEPENDS:=+lua +libuci-lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +luci-lib-jsonc - -PKG_SOURCE:=LuaSrcDiet-0.12.1.tar.bz2 -PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/luasrcdiet -PKG_HASH:=ed7680f2896269ae8633756e7edcf09050812f78c8f49e280e63c30d14f35aea -PKG_LICENSE:=Apache-2.0 - -HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/LuaSrcDiet-0.12.1 - -include $(INCLUDE_DIR)/host-build.mk - -define Package/luci-base/conffiles -/etc/luci-uploads -/etc/config/luci -/etc/config/ucitrack -endef - -include ../../luci.mk - -define Host/Configure -endef - -define Host/Compile - $(MAKE) -C src/ clean po2lmo - $(MAKE) -C $(HOST_BUILD_DIR) bin/LuaSrcDiet.lua -endef - -define Host/Install - $(INSTALL_DIR) $(1)/bin - $(INSTALL_BIN) src/po2lmo $(1)/bin/po2lmo - $(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/LuaSrcDiet.lua $(1)/bin/LuaSrcDiet -endef - -$(eval $(call HostBuild)) - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/modules/luci-base/htdocs/cgi-bin/luci b/package/luci/modules/luci-base/htdocs/cgi-bin/luci deleted file mode 100755 index 529d1d0bc5..0000000000 --- a/package/luci/modules/luci-base/htdocs/cgi-bin/luci +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/lua -require "luci.cacheloader" -require "luci.sgi.cgi" -luci.dispatcher.indexcache = "/tmp/luci-indexcache" -luci.sgi.cgi.run() \ No newline at end of file diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js deleted file mode 100644 index b334703bdf..0000000000 --- a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js +++ /dev/null @@ -1,1581 +0,0 @@ -/* - LuCI - Lua Configuration Interface - - Copyright 2008 Steven Barth - Copyright 2008-2012 Jo-Philipp Wich - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -*/ - -var cbi_d = []; -var cbi_t = []; -var cbi_strings = { path: {}, label: {} }; - -function Int(x) { - return (/^-?\d+$/.test(x) ? +x : NaN); -} - -function Dec(x) { - return (/^-?\d+(?:\.\d+)?$/.test(x) ? +x : NaN); -} - -var cbi_validators = { - - 'integer': function() - { - return !!Int(this); - }, - - 'uinteger': function() - { - return (Int(this) >= 0); - }, - - 'float': function() - { - return !!Dec(this); - }, - - 'ufloat': function() - { - return (Dec(this) >= 0); - }, - - 'ipaddr': function() - { - return cbi_validators.ip4addr.apply(this) || - cbi_validators.ip6addr.apply(this); - }, - - 'ip4addr': function() - { - if (this.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})(\/(\S+))?$/)) - { - return (RegExp.$1 >= 0) && (RegExp.$1 <= 255) && - (RegExp.$2 >= 0) && (RegExp.$2 <= 255) && - (RegExp.$3 >= 0) && (RegExp.$3 <= 255) && - (RegExp.$4 >= 0) && (RegExp.$4 <= 255) && - ((RegExp.$6.indexOf('.') < 0) - ? ((RegExp.$6 >= 0) && (RegExp.$6 <= 32)) - : (cbi_validators.ip4addr.apply(RegExp.$6))) - ; - } - - return false; - }, - - 'ip6addr': function() - { - if( this.match(/^([a-fA-F0-9:.]+)(\/(\d+))?$/) ) - { - if( !RegExp.$2 || ((RegExp.$3 >= 0) && (RegExp.$3 <= 128)) ) - { - var addr = RegExp.$1; - - if( addr == '::' ) - { - return true; - } - - if( addr.indexOf('.') > 0 ) - { - var off = addr.lastIndexOf(':'); - - if( !(off && cbi_validators.ip4addr.apply(addr.substr(off+1))) ) - return false; - - addr = addr.substr(0, off) + ':0:0'; - } - - if( addr.indexOf('::') >= 0 ) - { - var colons = 0; - var fill = '0'; - - for( var i = 1; i < (addr.length-1); i++ ) - if( addr.charAt(i) == ':' ) - colons++; - - if( colons > 7 ) - return false; - - for( var i = 0; i < (7 - colons); i++ ) - fill += ':0'; - - if (addr.match(/^(.*?)::(.*?)$/)) - addr = (RegExp.$1 ? RegExp.$1 + ':' : '') + fill + - (RegExp.$2 ? ':' + RegExp.$2 : ''); - } - - return (addr.match(/^(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}$/) != null); - } - } - - return false; - }, - - 'ip4prefix': function() - { - return !isNaN(this) && this >= 0 && this <= 32; - }, - - 'ip6prefix': function() - { - return !isNaN(this) && this >= 0 && this <= 128; - }, - - 'cidr': function() - { - return cbi_validators.cidr4.apply(this) || - cbi_validators.cidr6.apply(this); - }, - - 'cidr4': function() - { - if (this.match(/^(\S+)\/(\S+)$/)) - { - ip = RegExp.$1; - mask = RegExp.$2; - return cbi_validators.ip4addr.apply(ip) && - cbi_validators.ip4prefix.apply(mask); - } - return false; - }, - - 'cidr6': function() - { - if (this.match(/^(\S+)\/(\S+)$/)) - { - ip = RegExp.$1; - mask = RegExp.$2; - return cbi_validators.ip6addr.apply(ip) && - cbi_validators.ip6prefix.apply(mask); - } - return false; - }, - - 'ipnet4': function() - { - if (this.match(/^(\S+)\/(\S+)$/)) - { - ip = RegExp.$1; - net = RegExp.$2; - return cbi_validators.ip4addr.apply(ip) && - cbi_validators.ip4addr.apply(net); - } - return false; - }, - - 'ipnet6': function() - { - if (this.match(/^(\S+)\/(\S+)$/)) - { - ip = RegExp.$1; - net = RegExp.$2; - return cbi_validators.ip6addr.apply(ip) && - cbi_validators.ip6addr.apply(net); - } - return false; - }, - - 'ipmask': function() - { - return cbi_validators.ipmask4.apply(this) || - cbi_validators.ipmask6.apply(this); - }, - - 'ipmask4': function() - { - return cbi_validators.cidr4.apply(this) || - cbi_validators.ipnet4.apply(this) || - cbi_validators.ip4addr.apply(this); - }, - - 'ipmask6': function() - { - return cbi_validators.cidr6.apply(this) || - cbi_validators.ipnet6.apply(this) || - cbi_validators.ip6addr.apply(this); - }, - - 'port': function() - { - var p = Int(this); - return (p >= 0 && p <= 65535); - }, - - 'portrange': function() - { - if (this.match(/^(\d+)-(\d+)$/)) - { - var p1 = +RegExp.$1; - var p2 = +RegExp.$2; - return (p1 <= p2 && p2 <= 65535); - } - - return cbi_validators.port.apply(this); - }, - - 'macaddr': function() - { - return (this.match(/^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/) != null); - }, - - 'host': function(ipv4only) - { - return cbi_validators.hostname.apply(this) || - ((ipv4only != 1) && cbi_validators.ipaddr.apply(this)) || - ((ipv4only == 1) && cbi_validators.ip4addr.apply(this)); - }, - - 'hostname': function() - { - if (this.length <= 253) - return (this.match(/^[a-zA-Z0-9]+$/) != null || - (this.match(/^[a-zA-Z0-9_][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$/) && - this.match(/[^0-9.]/))); - - return false; - }, - - 'network': function() - { - return cbi_validators.uciname.apply(this) || - cbi_validators.host.apply(this); - }, - - 'hostport': function(ipv4only) - { - var hp = this.split(/:/); - - if (hp.length == 2) - return (cbi_validators.host.apply(hp[0], ipv4only) && - cbi_validators.port.apply(hp[1])); - - return false; - }, - - 'ip4addrport': function() - { - var hp = this.split(/:/); - - if (hp.length == 2) - return (cbi_validators.ipaddr.apply(hp[0]) && - cbi_validators.port.apply(hp[1])); - return false; - }, - - 'ipaddrport': function(bracket) - { - if (this.match(/^([^\[\]:]+):([^:]+)$/)) { - var addr = RegExp.$1 - var port = RegExp.$2 - return (cbi_validators.ip4addr.apply(addr) && - cbi_validators.port.apply(port)); - } else if ((bracket == 1) && (this.match(/^\[(.+)\]:([^:]+)$/))) { - var addr = RegExp.$1 - var port = RegExp.$2 - return (cbi_validators.ip6addr.apply(addr) && - cbi_validators.port.apply(port)); - } else if ((bracket != 1) && (this.match(/^([^\[\]]+):([^:]+)$/))) { - var addr = RegExp.$1 - var port = RegExp.$2 - return (cbi_validators.ip6addr.apply(addr) && - cbi_validators.port.apply(port)); - } else { - return false; - } - }, - - 'wpakey': function() - { - var v = this; - - if( v.length == 64 ) - return (v.match(/^[a-fA-F0-9]{64}$/) != null); - else - return (v.length >= 8) && (v.length <= 63); - }, - - 'wepkey': function() - { - var v = this; - - if ( v.substr(0,2) == 's:' ) - v = v.substr(2); - - if( (v.length == 10) || (v.length == 26) ) - return (v.match(/^[a-fA-F0-9]{10,26}$/) != null); - else - return (v.length == 5) || (v.length == 13); - }, - - 'uciname': function() - { - return (this.match(/^[a-zA-Z0-9_]+$/) != null); - }, - - 'range': function(min, max) - { - var val = Dec(this); - return (val >= +min && val <= +max); - }, - - 'min': function(min) - { - return (Dec(this) >= +min); - }, - - 'max': function(max) - { - return (Dec(this) <= +max); - }, - - 'rangelength': function(min, max) - { - var val = '' + this; - return ((val.length >= +min) && (val.length <= +max)); - }, - - 'minlength': function(min) - { - return ((''+this).length >= +min); - }, - - 'maxlength': function(max) - { - return ((''+this).length <= +max); - }, - - 'or': function() - { - for (var i = 0; i < arguments.length; i += 2) - { - if (typeof arguments[i] != 'function') - { - if (arguments[i] == this) - return true; - i--; - } - else if (arguments[i].apply(this, arguments[i+1])) - { - return true; - } - } - return false; - }, - - 'and': function() - { - for (var i = 0; i < arguments.length; i += 2) - { - if (typeof arguments[i] != 'function') - { - if (arguments[i] != this) - return false; - i--; - } - else if (!arguments[i].apply(this, arguments[i+1])) - { - return false; - } - } - return true; - }, - - 'neg': function() - { - return cbi_validators.or.apply( - this.replace(/^[ \t]*![ \t]*/, ''), arguments); - }, - - 'list': function(subvalidator, subargs) - { - if (typeof subvalidator != 'function') - return false; - - var tokens = this.match(/[^ \t]+/g); - for (var i = 0; i < tokens.length; i++) - if (!subvalidator.apply(tokens[i], subargs)) - return false; - - return true; - }, - 'phonedigit': function() - { - return (this.match(/^[0-9\*#!\.]+$/) != null); - }, - 'timehhmmss': function() - { - return (this.match(/^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$/) != null); - }, - 'dateyyyymmdd': function() - { - if (this == null) { - return false; - } - if (this.match(/^(\d\d\d\d)-(\d\d)-(\d\d)/)) { - var year = RegExp.$1; - var month = RegExp.$2; - var day = RegExp.$2 - - var days_in_month = [ 31, 28, 31, 30, 31, 30, 31, 31, 30 , 31, 30, 31 ]; - function is_leap_year(year) { - return ((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0); - } - function get_days_in_month(month, year) { - if ((month == 2) && is_leap_year(year)) { - return 29; - } else { - return days_in_month[month]; - } - } - /* Firewall rules in the past don't make sense */ - if (year < 2015) { - return false; - } - if ((month <= 0) || (month > 12)) { - return false; - } - if ((day <= 0) || (day > get_days_in_month(month, year))) { - return false; - } - return true; - - } else { - return false; - } - } -}; - - -function cbi_d_add(field, dep, index) { - var obj = (typeof(field) === 'string') ? document.getElementById(field) : field; - if (obj) { - var entry - for (var i=0; i 0 && (tl[0].type == 'radio' || tl[0].type == 'checkbox')) - for( var i = 0; i < tl.length; i++ ) - if( tl[i].checked ) { - value = tl[i].value; - break; - } - - value = value ? value : ""; - } else if (!t.value) { - value = ""; - } else { - value = t.value; - - if (t.type == "checkbox") { - value = t.checked ? value : ""; - } - } - - return (value == ref) -} - -function cbi_d_check(deps) { - var reverse; - var def = false; - for (var i=0; i entry.index) { - break; - } - } - - if (!next) { - parent.appendChild(entry.node); - } else { - parent.insertBefore(entry.node, next); - } - - state = true; - } - - // hide optionals widget if no choices remaining - if (parent && parent.parentNode && parent.getAttribute('data-optionals')) - parent.parentNode.style.display = (parent.options.length <= 1) ? 'none' : ''; - } - - if (entry && entry.parent) { - if (!cbi_t_update()) - cbi_tag_last(parent); - } - - if (state) { - cbi_d_update(); - } -} - -function cbi_init() { - var nodes; - - nodes = document.querySelectorAll('[data-strings]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var str = JSON.parse(node.getAttribute('data-strings')); - for (var key in str) { - for (var key2 in str[key]) { - var dst = cbi_strings[key] || (cbi_strings[key] = { }); - dst[key2] = str[key][key2]; - } - } - } - - nodes = document.querySelectorAll('[data-depends]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var index = parseInt(node.getAttribute('data-index'), 10); - var depends = JSON.parse(node.getAttribute('data-depends')); - if (!isNaN(index) && depends.length > 0) { - for (var alt = 0; alt < depends.length; alt++) { - cbi_d_add(node, depends[alt], index); - } - } - } - - nodes = document.querySelectorAll('[data-update]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var events = node.getAttribute('data-update').split(' '); - for (var j = 0, event; (event = events[j]) !== undefined; j++) { - cbi_bind(node, event, cbi_d_update); - } - } - - nodes = document.querySelectorAll('[data-choices]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var choices = JSON.parse(node.getAttribute('data-choices')); - var options = {}; - - for (var j = 0; j < choices[0].length; j++) - options[choices[0][j]] = choices[1][j]; - - var def = (node.getAttribute('data-optional') === 'true') - ? node.placeholder || '' : null; - - cbi_combobox_init(node, options, def, - node.getAttribute('data-manual')); - } - - nodes = document.querySelectorAll('[data-dynlist]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var choices = JSON.parse(node.getAttribute('data-dynlist')); - var options = null; - - if (choices[0] && choices[0].length) { - options = {}; - - for (var j = 0; j < choices[0].length; j++) - options[choices[0][j]] = choices[1][j]; - } - - cbi_dynlist_init(node, choices[2], choices[3], options); - } - - nodes = document.querySelectorAll('[data-type]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - cbi_validate_field(node, node.getAttribute('data-optional') === 'true', - node.getAttribute('data-type')); - } - - cbi_d_update(); -} - -function cbi_bind(obj, type, callback, mode) { - if (!obj.addEventListener) { - obj.attachEvent('on' + type, - function(){ - var e = window.event; - - if (!e.target && e.srcElement) - e.target = e.srcElement; - - return !!callback(e); - } - ); - } else { - obj.addEventListener(type, callback, !!mode); - } - return obj; -} - -function cbi_combobox(id, values, def, man, focus) { - var selid = "cbi.combobox." + id; - if (document.getElementById(selid)) { - return - } - - var obj = document.getElementById(id) - var sel = document.createElement("select"); - sel.id = selid; - sel.index = obj.index; - sel.className = obj.className.replace(/cbi-input-text/, 'cbi-input-select'); - - if (obj.nextSibling) { - obj.parentNode.insertBefore(sel, obj.nextSibling); - } else { - obj.parentNode.appendChild(sel); - } - - var dt = obj.getAttribute('cbi_datatype'); - var op = obj.getAttribute('cbi_optional'); - - if (!values[obj.value]) { - if (obj.value == "") { - var optdef = document.createElement("option"); - optdef.value = ""; - optdef.appendChild(document.createTextNode(typeof(def) === 'string' ? def : cbi_strings.label.choose)); - sel.appendChild(optdef); - } else { - var opt = document.createElement("option"); - opt.value = obj.value; - opt.selected = "selected"; - opt.appendChild(document.createTextNode(obj.value)); - sel.appendChild(opt); - } - } - - for (var i in values) { - var opt = document.createElement("option"); - opt.value = i; - - if (obj.value == i) { - opt.selected = "selected"; - } - - opt.appendChild(document.createTextNode(values[i])); - sel.appendChild(opt); - } - - var optman = document.createElement("option"); - optman.value = ""; - optman.appendChild(document.createTextNode(typeof(man) === 'string' ? man : cbi_strings.label.custom)); - sel.appendChild(optman); - - obj.style.display = "none"; - - if (dt) - cbi_validate_field(sel, op == 'true', dt); - - cbi_bind(sel, "change", function() { - if (sel.selectedIndex == sel.options.length - 1) { - obj.style.display = "inline"; - sel.blur(); - sel.parentNode.removeChild(sel); - obj.focus(); - } else { - obj.value = sel.options[sel.selectedIndex].value; - } - - try { - cbi_d_update(); - } catch (e) { - //Do nothing - } - }) - - // Retrigger validation in select - if (focus) { - sel.focus(); - sel.blur(); - } -} - -function cbi_combobox_init(id, values, def, man) { - var obj = (typeof(id) === 'string') ? document.getElementById(id) : id; - cbi_bind(obj, "blur", function() { - cbi_combobox(obj.id, values, def, man, true); - }); - cbi_combobox(obj.id, values, def, man, false); -} - -function cbi_filebrowser(id, defpath) { - var field = document.getElementById(id); - var browser = window.open( - cbi_strings.path.browser + ( field.value || defpath || '' ) + '?field=' + id, - "luci_filebrowser", "width=300,height=400,left=100,top=200,scrollbars=yes" - ); - - browser.focus(); -} - -function cbi_browser_init(id, resource, defpath) -{ - function cbi_browser_btnclick(e) { - cbi_filebrowser(id, defpath); - return false; - } - - var field = document.getElementById(id); - - var btn = document.createElement('img'); - btn.className = 'cbi-image-button'; - btn.src = (resource || cbi_strings.path.resource) + '/cbi/folder.gif'; - field.parentNode.insertBefore(btn, field.nextSibling); - - cbi_bind(btn, 'click', cbi_browser_btnclick); -} - -function cbi_dynlist_init(parent, datatype, optional, choices) -{ - var prefix = parent.getAttribute('data-prefix'); - var holder = parent.getAttribute('data-placeholder'); - - var values; - - function cbi_dynlist_redraw(focus, add, del) - { - values = [ ]; - - while (parent.firstChild) - { - var n = parent.firstChild; - var i = +n.index; - - if (i != del) - { - if (n.nodeName.toLowerCase() == 'input') - values.push(n.value || ''); - else if (n.nodeName.toLowerCase() == 'select') - values[values.length-1] = n.options[n.selectedIndex].value; - } - - parent.removeChild(n); - } - - if (add >= 0) - { - focus = add+1; - values.splice(focus, 0, ''); - } - else if (values.length == 0) - { - focus = 0; - values.push(''); - } - - for (var i = 0; i < values.length; i++) - { - var t = document.createElement('input'); - t.id = prefix + '.' + (i+1); - t.name = prefix; - t.value = values[i]; - t.type = 'text'; - t.index = i; - t.className = 'cbi-input-text'; - - if (i == 0 && holder) - { - t.placeholder = holder; - } - - var b = document.createElement('img'); - b.src = cbi_strings.path.resource + ((i+1) < values.length ? '/cbi/remove.gif' : '/cbi/add.gif'); - b.className = 'cbi-image-button'; - - parent.appendChild(t); - parent.appendChild(b); - if (datatype == 'file') - { - cbi_browser_init(t.id, null, parent.getAttribute('data-browser-path')); - } - - parent.appendChild(document.createElement('br')); - - if (datatype) - { - cbi_validate_field(t.id, ((i+1) == values.length) || optional, datatype); - } - - if (choices) - { - cbi_combobox_init(t.id, choices, '', cbi_strings.label.custom); - b.index = i; - - cbi_bind(b, 'keydown', cbi_dynlist_keydown); - cbi_bind(b, 'keypress', cbi_dynlist_keypress); - - if (i == focus || -i == focus) - b.focus(); - } - else - { - cbi_bind(t, 'keydown', cbi_dynlist_keydown); - cbi_bind(t, 'keypress', cbi_dynlist_keypress); - - if (i == focus) - { - t.focus(); - } - else if (-i == focus) - { - t.focus(); - - /* force cursor to end */ - var v = t.value; - t.value = ' ' - t.value = v; - } - } - - cbi_bind(b, 'click', cbi_dynlist_btnclick); - } - } - - function cbi_dynlist_keypress(ev) - { - ev = ev ? ev : window.event; - - var se = ev.target ? ev.target : ev.srcElement; - - if (se.nodeType == 3) - se = se.parentNode; - - switch (ev.keyCode) - { - /* backspace, delete */ - case 8: - case 46: - if (se.value.length == 0) - { - if (ev.preventDefault) - ev.preventDefault(); - - return false; - } - - return true; - - /* enter, arrow up, arrow down */ - case 13: - case 38: - case 40: - if (ev.preventDefault) - ev.preventDefault(); - - return false; - } - - return true; - } - - function cbi_dynlist_keydown(ev) - { - ev = ev ? ev : window.event; - - var se = ev.target ? ev.target : ev.srcElement; - - if (se.nodeType == 3) - se = se.parentNode; - - var prev = se.previousSibling; - while (prev && prev.name != prefix) - prev = prev.previousSibling; - - var next = se.nextSibling; - while (next && next.name != prefix) - next = next.nextSibling; - - /* advance one further in combobox case */ - if (next && next.nextSibling.name == prefix) - next = next.nextSibling; - - switch (ev.keyCode) - { - /* backspace, delete */ - case 8: - case 46: - var del = (se.nodeName.toLowerCase() == 'select') - ? true : (se.value.length == 0); - - if (del) - { - if (ev.preventDefault) - ev.preventDefault(); - - var focus = se.index; - if (ev.keyCode == 8) - focus = -focus+1; - - cbi_dynlist_redraw(focus, -1, se.index); - - return false; - } - - break; - - /* enter */ - case 13: - cbi_dynlist_redraw(-1, se.index, -1); - break; - - /* arrow up */ - case 38: - if (prev) - prev.focus(); - - break; - - /* arrow down */ - case 40: - if (next) - next.focus(); - - break; - } - - return true; - } - - function cbi_dynlist_btnclick(ev) - { - ev = ev ? ev : window.event; - - var se = ev.target ? ev.target : ev.srcElement; - var input = se.previousSibling; - while (input && input.name != prefix) { - input = input.previousSibling; - } - - if (se.src.indexOf('remove') > -1) - { - input.value = ''; - - cbi_dynlist_keydown({ - target: input, - keyCode: 8 - }); - } - else - { - cbi_dynlist_keydown({ - target: input, - keyCode: 13 - }); - } - - return false; - } - - cbi_dynlist_redraw(NaN, -1, -1); -} - - -function cbi_t_add(section, tab) { - var t = document.getElementById('tab.' + section + '.' + tab); - var c = document.getElementById('container.' + section + '.' + tab); - - if( t && c ) { - cbi_t[section] = (cbi_t[section] || [ ]); - cbi_t[section][tab] = { 'tab': t, 'container': c, 'cid': c.id }; - } -} - -function cbi_t_switch(section, tab) { - if( cbi_t[section] && cbi_t[section][tab] ) { - var o = cbi_t[section][tab]; - var h = document.getElementById('tab.' + section); - for( var tid in cbi_t[section] ) { - var o2 = cbi_t[section][tid]; - if( o.tab.id != o2.tab.id ) { - o2.tab.className = o2.tab.className.replace(/(^| )cbi-tab( |$)/, " cbi-tab-disabled "); - o2.container.style.display = 'none'; - } - else { - if(h) h.value = tab; - o2.tab.className = o2.tab.className.replace(/(^| )cbi-tab-disabled( |$)/, " cbi-tab "); - o2.container.style.display = 'block'; - } - } - } - return false -} - -function cbi_t_update() { - var hl_tabs = [ ]; - var updated = false; - - for( var sid in cbi_t ) - for( var tid in cbi_t[sid] ) - { - var t = cbi_t[sid][tid].tab; - var c = cbi_t[sid][tid].container; - - if (!c.firstElementChild) { - t.style.display = 'none'; - } - else if (t.style.display == 'none') { - t.style.display = ''; - t.className += ' cbi-tab-highlighted'; - hl_tabs.push(t); - } - - cbi_tag_last(c); - updated = true; - } - - if (hl_tabs.length > 0) - window.setTimeout(function() { - for( var i = 0; i < hl_tabs.length; i++ ) - hl_tabs[i].className = hl_tabs[i].className.replace(/ cbi-tab-highlighted/g, ''); - }, 750); - - return updated; -} - - -function cbi_validate_form(form, errmsg) -{ - /* if triggered by a section removal or addition, don't validate */ - if( form.cbi_state == 'add-section' || form.cbi_state == 'del-section' ) - return true; - - if( form.cbi_validators ) - { - for( var i = 0; i < form.cbi_validators.length; i++ ) - { - var validator = form.cbi_validators[i]; - if( !validator() && errmsg ) - { - alert(errmsg); - return false; - } - } - } - - return true; -} - -function cbi_validate_reset(form) -{ - window.setTimeout( - function() { cbi_validate_form(form, null) }, 100 - ); - - return true; -} - -function cbi_validate_compile(code) -{ - var pos = 0; - var esc = false; - var depth = 0; - var stack = [ ]; - - code += ','; - - for (var i = 0; i < code.length; i++) - { - if (esc) - { - esc = false; - continue; - } - - switch (code.charCodeAt(i)) - { - case 92: - esc = true; - break; - - case 40: - case 44: - if (depth <= 0) - { - if (pos < i) - { - var label = code.substring(pos, i); - label = label.replace(/\\(.)/g, '$1'); - label = label.replace(/^[ \t]+/g, ''); - label = label.replace(/[ \t]+$/g, ''); - - if (label && !isNaN(label)) - { - stack.push(parseFloat(label)); - } - else if (label.match(/^(['"]).*\1$/)) - { - stack.push(label.replace(/^(['"])(.*)\1$/, '$2')); - } - else if (typeof cbi_validators[label] == 'function') - { - stack.push(cbi_validators[label]); - stack.push(null); - } - else - { - throw "Syntax error, unhandled token '"+label+"'"; - } - } - pos = i+1; - } - depth += (code.charCodeAt(i) == 40); - break; - - case 41: - if (--depth <= 0) - { - if (typeof stack[stack.length-2] != 'function') - throw "Syntax error, argument list follows non-function"; - - stack[stack.length-1] = - arguments.callee(code.substring(pos, i)); - - pos = i+1; - } - break; - } - } - - return stack; -} - -function cbi_validate_field(cbid, optional, type) -{ - var field = (typeof cbid == "string") ? document.getElementById(cbid) : cbid; - var vstack; try { vstack = cbi_validate_compile(type); } catch(e) { }; - - if (field && vstack && typeof vstack[0] == "function") - { - var validator = function() - { - // is not detached - if( field.form ) - { - field.className = field.className.replace(/ cbi-input-invalid/g, ''); - - // validate value - var value = (field.options && field.options.selectedIndex > -1) - ? field.options[field.options.selectedIndex].value : field.value; - - if (!(((value.length == 0) && optional) || vstack[0].apply(value, vstack[1]))) - { - // invalid - field.className += ' cbi-input-invalid'; - return false; - } - } - - return true; - }; - - if( ! field.form.cbi_validators ) - field.form.cbi_validators = [ ]; - - field.form.cbi_validators.push(validator); - - cbi_bind(field, "blur", validator); - cbi_bind(field, "keyup", validator); - - if (field.nodeName == 'SELECT') - { - cbi_bind(field, "change", validator); - cbi_bind(field, "click", validator); - } - - field.setAttribute("cbi_validate", validator); - field.setAttribute("cbi_datatype", type); - field.setAttribute("cbi_optional", (!!optional).toString()); - - validator(); - - var fcbox = document.getElementById('cbi.combobox.' + field.id); - if (fcbox) - cbi_validate_field(fcbox, optional, type); - } -} - -function cbi_row_swap(elem, up, store) -{ - var tr = elem.parentNode; - while (tr && tr.nodeName.toLowerCase() != 'tr') - tr = tr.parentNode; - - if (!tr) - return false; - - var table = tr.parentNode; - while (table && table.nodeName.toLowerCase() != 'table') - table = table.parentNode; - - if (!table) - return false; - - var s = up ? 3 : 2; - var e = up ? table.rows.length : table.rows.length - 1; - - for (var idx = s; idx < e; idx++) - { - if (table.rows[idx] == tr) - { - if (up) - tr.parentNode.insertBefore(table.rows[idx], table.rows[idx-1]); - else - tr.parentNode.insertBefore(table.rows[idx+1], table.rows[idx]); - - break; - } - } - - var ids = [ ]; - for (idx = 2; idx < table.rows.length; idx++) - { - table.rows[idx].className = table.rows[idx].className.replace( - /cbi-rowstyle-[12]/, 'cbi-rowstyle-' + (1 + (idx % 2)) - ); - - if (table.rows[idx].id && table.rows[idx].id.match(/-([^\-]+)$/) ) - ids.push(RegExp.$1); - } - - var input = document.getElementById(store); - if (input) - input.value = ids.join(' '); - - return false; -} - -function cbi_tag_last(container) -{ - var last; - - for (var i = 0; i < container.childNodes.length; i++) - { - var c = container.childNodes[i]; - if (c.nodeType == 1 && c.nodeName.toLowerCase() == 'div') - { - c.className = c.className.replace(/ cbi-value-last$/, ''); - last = c; - } - } - - if (last) - { - last.className += ' cbi-value-last'; - } -} - -String.prototype.serialize = function() -{ - var o = this; - switch(typeof(o)) - { - case 'object': - // null - if( o == null ) - { - return 'null'; - } - - // array - else if( o.length ) - { - var i, s = ''; - - for( var i = 0; i < o.length; i++ ) - s += (s ? ', ' : '') + String.serialize(o[i]); - - return '[ ' + s + ' ]'; - } - - // object - else - { - var k, s = ''; - - for( k in o ) - s += (s ? ', ' : '') + k + ': ' + String.serialize(o[k]); - - return '{ ' + s + ' }'; - } - - break; - - case 'string': - // complex string - if( o.match(/[^a-zA-Z0-9_,.: -]/) ) - return 'decodeURIComponent("' + encodeURIComponent(o) + '")'; - - // simple string - else - return '"' + o + '"'; - - break; - - default: - return o.toString(); - } -} - -String.prototype.format = function() -{ - if (!RegExp) - return; - - var html_esc = [/&/g, '&', /"/g, '"', /'/g, ''', //g, '>']; - var quot_esc = [/"/g, '"', /'/g, ''']; - - function esc(s, r) { - if (typeof(s) !== 'string' && !(s instanceof String)) - return ''; - - for( var i = 0; i < r.length; i += 2 ) - s = s.replace(r[i], r[i+1]); - return s; - } - - var str = this; - var out = ''; - var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/; - var a = b = [], numSubstitutions = 0, numMatches = 0; - - while (a = re.exec(str)) - { - var m = a[1]; - var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5]; - var pPrecision = a[6], pType = a[7]; - - numMatches++; - - if (pType == '%') - { - subst = '%'; - } - else - { - if (numSubstitutions < arguments.length) - { - var param = arguments[numSubstitutions++]; - - var pad = ''; - if (pPad && pPad.substr(0,1) == "'") - pad = leftpart.substr(1,1); - else if (pPad) - pad = pPad; - else - pad = ' '; - - var justifyRight = true; - if (pJustify && pJustify === "-") - justifyRight = false; - - var minLength = -1; - if (pMinLength) - minLength = +pMinLength; - - var precision = -1; - if (pPrecision && pType == 'f') - precision = +pPrecision.substring(1); - - var subst = param; - - switch(pType) - { - case 'b': - subst = (+param || 0).toString(2); - break; - - case 'c': - subst = String.fromCharCode(+param || 0); - break; - - case 'd': - subst = ~~(+param || 0); - break; - - case 'u': - subst = ~~Math.abs(+param || 0); - break; - - case 'f': - subst = (precision > -1) - ? ((+param || 0.0)).toFixed(precision) - : (+param || 0.0); - break; - - case 'o': - subst = (+param || 0).toString(8); - break; - - case 's': - subst = param; - break; - - case 'x': - subst = ('' + (+param || 0).toString(16)).toLowerCase(); - break; - - case 'X': - subst = ('' + (+param || 0).toString(16)).toUpperCase(); - break; - - case 'h': - subst = esc(param, html_esc); - break; - - case 'q': - subst = esc(param, quot_esc); - break; - - case 'j': - subst = String.serialize(param); - break; - - case 't': - var td = 0; - var th = 0; - var tm = 0; - var ts = (param || 0); - - if (ts > 60) { - tm = Math.floor(ts / 60); - ts = (ts % 60); - } - - if (tm > 60) { - th = Math.floor(tm / 60); - tm = (tm % 60); - } - - if (th > 24) { - td = Math.floor(th / 24); - th = (th % 24); - } - - subst = (td > 0) - ? String.format('%dd %dh %dm %ds', td, th, tm, ts) - : String.format('%dh %dm %ds', th, tm, ts); - - break; - - case 'm': - var mf = pMinLength ? +pMinLength : 1000; - var pr = pPrecision ? ~~(10 * +('0' + pPrecision)) : 2; - - var i = 0; - var val = (+param || 0); - var units = [ ' ', ' K', ' M', ' G', ' T', ' P', ' E' ]; - - for (i = 0; (i < units.length) && (val > mf); i++) - val /= mf; - - subst = (i ? val.toFixed(pr) : val) + units[i]; - pMinLength = null; - break; - } - } - } - - if (pMinLength) { - subst = subst.toString(); - for (var i = subst.length; i < pMinLength; i++) - if (pJustify == '-') - subst = subst + ' '; - else - subst = pad + subst; - } - - out += leftpart + subst; - str = str.substr(m.length); - } - - return out + str; -} - -String.prototype.nobr = function() -{ - return this.replace(/[\s\n]+/g, ' '); -} - -String.serialize = function() -{ - var a = [ ]; - for (var i = 1; i < arguments.length; i++) - a.push(arguments[i]); - return ''.serialize.apply(arguments[0], a); -} - -String.format = function() -{ - var a = [ ]; - for (var i = 1; i < arguments.length; i++) - a.push(arguments[i]); - return ''.format.apply(arguments[0], a); -} - -String.nobr = function() -{ - var a = [ ]; - for (var i = 1; i < arguments.length; i++) - a.push(arguments[i]); - return ''.nobr.apply(arguments[0], a); -} diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/add.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/add.gif deleted file mode 100644 index 0888abf85ed10d3bdadb25b30b49e8c35b8233d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmZ?wbhEHb6krfwxT?YM=;a5`&}?V#n2z-)rk?s^=Nj6%`^~-Q?==mbXC1h9`pm_a zJ=P67ET*3H=saLQ{j_)8HuL@?E|ZSCPdMs&_4bo#r@XE{|4_Brxch*^ymP;U605@t zCcgRjt!Rzz)3;yCrf*qt@%P5-e?EQtb>RNr-FN=3zVdt9tv~<4fPor7@h1x-1A_*G z4#+T&pBUJtADCR=A+xAY{q)Mqma1&c{a=cmxa4~mroT4KS#`QgUof=)~+&T;I{j*sYXaTd%6BpddF%U0!DD^qC5h za!gM1`zFkilw?>wPi9)j8Wt9I))h*%tJiLm*{Loqq9hZ|aDstdhKpl`^aUv?Mn)zk OR#uKC*E=qb4Aua>fQ#$^ diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/apply.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/apply.gif deleted file mode 100644 index 82ae7ed821f7524c0356e40f79a0379fc634d535..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmV+n0rUPxNk%w1VGsZi0K^{vM3g9B!ajxBR(;h{C|4L|#z9W1FZTQNam`88@5?V| z96pC8chOCN)>Mw(T#DRUiQ8Fv(@#mEENRI^ZOca`PZo5~OEz>Nz2>iuw1BeWp~dOA zBTNzi%BC{z2#%%nWDQ(& zkP#APQYdIRbsbb52orn(e?S)g~J1 z%8r<(-QeVRgO&gP{{R30A^8LW000gEEC2ui01E&M06+vZ(8)=q0AK`A2tAn4V1q?& p9d!Z1mQ}E{1V<7C3PltEGGGP@1A|xv9lPESaCFRSx11yb06WwgHGu#C diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/down.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/down.gif deleted file mode 100644 index f0bb6a4ea640d9b2beda344c7485d260f5761779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmZ?wbhEHb6krfw*v!o^>1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^LBUDS)q5?HkM0ihoS_kK#PIl-D%-2j1P>Oa%ti-AnU~WT VI^xvQF6&qvTT*m#iwgsTH2{W9F7W^W diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/download.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/download.gif deleted file mode 100644 index f99a5383b23fc4270a45048cea54b7d84e4c632b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189 zcmZ?wbhEHb6krfw*v!umwaLqI!OQM5F>k&+Z^fq|bvhXDvcW-zd1eeis_YHo#<8bh&USm7b|HfiTo^1C<- zB2&*9?YY;WqkfgAr7?@)##fnMrp5vd5e9?B>jf-W))_Q3ne(cwV{E9XUS-Jmz%6-U ohKzU%--1K~l{<@Algzi@uNL9X;o>Z>(Bsa^YtS>66lAal0Is`BfB*mh diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/edit.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/edit.gif deleted file mode 100644 index e06e37c7509d07a98a4acc6eeb5d40777fdb912f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmV+r0q_1tNk%v~VGsZi0Q3L=V0V>>ugJjP{dk$Tr~sLS5q=$-yaxZ#SE11S zRIB!<(fT-LmH+?$EC2ui01yBW000G*;3tk`DMpS%Nm39Du;)pl6A@EB5xm!Np4!Af zBnlcnph84J6a~km2eJG}oCYZJ=Ydc~*KCvvDSSTxgcd_Cm=B`#5u?d;3!M!C{uwM9 zbQu_Bd3p~bei3zpcpDoG6^DHb2?~}900Ru06&HvI2?=-w0|2G~3!WbU5ePdx1QoIi W4i<=*mj?$A4;L2}RVKnBApkpjesy~Q diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif deleted file mode 100644 index eebe0fffe007105e4ce41a133cd245989df89116..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmZ?wbh9u|6krfw_{zZW|GeMpEk^&ppZIqp{q-#2*GpypKk@m0DeV7?)PKK@zCNA$ z`dro2lOEGfdA01Zo^;&3Zkzdpqptt|eeXPA|NqbH{v$3`n~kTR_U=C5@c+lT*LU_b z?6CO%>(2l8{r~^I{r|G{^@*_mA7}snwCwdU*P=DL|Gypj|E%Km1>^spH~#;&>;M1% z43q&Kkamz?7}#bwOfB%x;WE_{^4uEG;IQ~&rq>>Ww&uf$2W&Y#d)-qvvCKHjo^RAt z=rCq4kYj3YZC6y3D zr`kV9R$fhWp_cOEnn}ymI22c}?ccD1gH4{*NnLLJyiIJo_iCwg%E_FTWYSo^f@PY2 SKp-O{D=W)wx4SNm4AubY36m`V diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/file.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/file.gif deleted file mode 100644 index 342a8463d2912b82b01c3c2deb3ce92e7cf5e4a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmZ?wbhEHb6krfw_#(~l=;a5`&}?V#n2z-)rk?s^=Nj6%`^~-Q?==mbXC1h9`pm_v zx1U^n{$bv^-$9Ah;RO@leEjzG?bovDTb5k>z47{=Pv3qWxc_(eoxiKE{N8r!&;S4b z8Bl@ZPZm}N25ANzkTA$j2G))RYJE?3%#~_R^t9#)(#g~~<{~i9eb2`WQa(qVRO0le zbsbdq3h6qUocb!mZs8H1wxE?+b8d7`YkJwm7Jjr4L_o{y)q5EzYtB;xTCWf;e!643y9FwiJ6z-cH%*eE2C&?LHF520~{Ks*+N*(+Kf z6ATMOGH`g(00>C|cno`e9u*=05rZ2M2z-c&9*lzt8600y!Ov2kE{g|XOkwd;Ab>T|a1bhhkywd#Ad>UFp6cDL<(x9okm?0&fIc)IU+y6}9u?s>cL zfV%E`yz-8@;ex#Gf4%XLy5fSp@qxbce!umEzVU^>^M=3jgu(QP!1I*9=ZV7fhQs%Y z!}W;8`Hsf-i^%(t$N7xO{E^A|kjnj(%lw$n{+-VKn$iE9(f_H_`l{6Xr`i9>)!(q% z|FPQtvD^Q);Q!Lxt%1@HYPm;<{lFCn#%1@HYA^uK7a%Ew3Wn>^? zc_2$=c4=-POmAarWh@{vFflPLFf%PMG$3Ygav)4~LrE?mAW~&)Wnpt=WFTp7bZ;PZ zXk{Q!bz*F3V<1FtZDDC{E&w6<1OW;Fe*i210000G01yBG2gQJYf`f#Ge|UL`iiU%E z4Fdv^0C9|ec>{8Eb8>YId5n1ib8n<>Ks|P;sdtD5UQ)1C8wn8(4i5?li3bZ45)%*> zXk1rRPHh5-0dQtyVqi@~J~=fnVacIvSW!$zKRPxsEGSyo0%}i4K|41xEh!};Rs@Lx zX+u0XGcGD7A|D)}m^+h$#)}mvMu6y$;erx+p~k=%M?p4qk8 z_sQn}X|3gLf|Hfa{4HFBMq+vzJXv+X|6!-#{r&xKvgu!?-l)&;*zNvYc8feuU~I4F zQ<~I5R%ieJ|NsC0A^8LW0018VEC2ui01yBW000Gt;3s}wX?kNyLPFa#5UP3^wk(CC zKe9+;gdm|(VMuts4zO}DT@VOK1m)={2pi9Zf$&VC9jdjm*+RV&K$v9RFu0|I!2+1F z6;Q;%BcIpB1z!^u289U*e{2p3gL?-F2^@(e8U&FXn3w5$p!k!8k%2*+K?fuc zvXg-|`GIQRqSUCAs4#&;3tm~By~MCQ%rwwORo7gy-yy?BWny%m`4$Z=kEQF}JtY=+ zUfLA?(#?Ar^XBeQKBmcC4v)^p`DK_cQ206RTqffIk;3UrB1Hyj7R*hC%3_Rs)g7Jc Jeaeaq)&Qp@T0Z~) diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/link.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/link.gif deleted file mode 100644 index f0bb78da6b1e2cb17aa1a0e21c80e02979f6321a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmV+y0qFimNk%w1VGsZi0K^{vm&^Qekgn|U_T}yMiLlDm+vLaN{=MG)S8$O@RcrG0 z`m5CYWS!x)+5Dr>`-!{kQek_q(&TBN;zLVZ)#vbFn&Fzj)~L(g-skTrF+)B@RpROJ ze4)L|%+de<|NsC0A^8LW0018VEC2ui01yBW000G)peK&x_?;dVMVDm}1jhw|hep&O z==8z~GHrORSgnM6@HQ4;4*@!6xGR+fIw4vg zByI*g?ikQL90EyhXA2I80}~>FNeyv^hX5Oj9sz=0a*zN37#bo03T1_nn*yF52n7l~ d8?74{0v#Ej2(=Ip2?-Mu8X6f_CBY>j06X7qcdP&a diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reload.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/reload.gif deleted file mode 100644 index 8268958a19e016741fffb8309b1174e548f5ce19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmV51h?dP)!|<#Vc>gJ1)O z9Y&Xm98YHe08|T}nE5Daq{Qc(Rx3cM5 zjz9kQ*3j_j+pnL#{d)WH+j&{p|6ssC8=&};g^__li9rWsJjhQBZ1WCGDDaT!>RZ^( zEEK83!O|Nd>|`Z3*C*`uOEs;l0!ub)PUp?=f27@0VfU<`vGKzV%|l1oS?<>Z^@_<= zC~_&t)O6G|iMKeh$aQzhi;0Q%F-^$to;pK9LUxv-l;q?Z@dd)N%uel7=1K?)Gp=1y z$56M4m6eCxNh-frev|MX$^D9=LUJ*T=NWksPtC-3SYNk)IzaCG{5wQd4hOTmQRpBi`QrZFzZjOw5(w z;B+Ua|6ri_lZBCiL7qW}0SG{LGO*S^P_K*2tV;HB^Xpa+Tva9QCeXgnd6P%76fc9p zOamsHcy;@YDln|Vuw<0nl$s8=rCxw48uw_56lMa6}$ zEFa1XibC1A+uFH>WUA~WrMhG$PUPgWRp}FBoy96PRn(YYfNQZp@O&*5b=4JX)+#bs F0{{l~XioqD diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/save.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/save.gif deleted file mode 100644 index 35e949963e4b7a5f04fd1c8932a980901e3d4385..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmV+i0r>t$Nk%w1VGsZi0K^{vcEd+Ya4xgmmXXkDk(iA6{P)e~xr@?RgUwTMzeLpS z#Wqhu{H$s5p4O4v<)^3=A2^0_EulhRp%QGjIf`R%Ru$RUj;1k~O1%3=|$g0$`b{ z1p`T8E1%cF0ssJ7eF+Hu(2Z{06R}5X@39! diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/up.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi/up.gif deleted file mode 100644 index e8234178efaea626368f6bb5fffaa716e862b596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmZ?wbhEHb6krfw*v!o^>1^DDBbk%W#`m8Mo^~Z-=JluvXG6M=M%Jv0O73_44+acK zK=CIFBLf3BgAPaxWCjC^e!)r4)q5>o$4-6JJxOK08WYFNxvd2&rdbFb5VArX{>gpqy}ZQ3xBIb z?{>Ooo8TtXQxO=NV3P1sT@;64^wK0*F2cjwY|!s`db?4bMa4uk*E7&^V9Dyc zWMgh=vYP%x-%#5Lzo6VH2U**iyVgo-P*q)tn%ZherM0YH!Rl3rPl$o4x=;vkIC|^| zw(QuBZoPXUD<=z2pFig03K>Y3T?fn??iKbO*bfhHFYq2bx(}&L0+H%=F_^H3a7>&! z4RaPO#Hg|3z`TVQ)bM-=^TdU&KDOJ=Ht$t+qiP=GM>G71}`5^Jb(H0!xPM{ zOsw+qbC8vlj>O~?gocO1%Ekt7@rG?s18rSR^}t|%+`N4WckbOlZb2sJ;pqyVg8#%t zOBPriIeHkkZr#AK6Nhm2+$p$uxZvKy+Z_J~YT~sW1A~LmYWOO|r5ABBMHRm(j7;-D^$<|pC8a`tf5)uos+eaaEy_4FOA8!W>Tvz&)h=PtGzKVhW(go$Ij6Ek4Y z0D5n_PI|dX)E>+gIwL151@jipDI%u%Jnv3gfl^G>NVrc#4d^TL7tE#4HoKJZr>E1T zV6Vzw9mu1 zt${s>86`@fKdIkozQe+?f{28^8zM})EplAS_Yt!|KZ$;;%cLFuHTKCnlMK4D)%383 P00000NkvXXu0mjfn6E|q diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png deleted file mode 100644 index b3e620b3a13f5cca1337f191465c02d38b5e0286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmV;G0c!qXgfdHy`b=G@5WUE}34>!TN1&;yD{=B@v35{pF6sd@);$7(esk@z{29 z=b&k7I+(gf%qyb-PB9Wg12Q3Kz>i#Hq8dQV5lT>y{D8uZ+YDwaM=3+7C{m`!keRLo z;Eo^^PvImrNy`IqkS3KTaF(5v-8Qs=d1D?^QQs- zdno3Hi-2>1bwCcN0yW?P;CsNZ2;8&RUV9BZ_0&@`Ffbs4gM;$**I&ys&pcySuU;Ji zw*rmRiS?No-Irf}`K>R!@WQe>3B_WOFbr9~d^v4xZR*fN56z8@jh)=n)3XBjbiPi` zIO?dQg2~BA`RS*hqO;FFdk4@146RwSX8hV~uhl>Q{Ik6J>Z@|fDW`)pd2Ymx<25tmS1+J;P__aIID3kAuNtyo%vIh0L~hmjuIiht{>oVU=t8d8IckQ$9GX4-i5Uq8`p@F2x|-|@RWy$V2s8l0j4@h5|nTV z88!ghrzLRCBGzOZAPN*fdUMYM<)Or(lmeA*tNQ5Up~&C^is?%hLG#Am``iMj$AB<>Tk_tZeN>Clz!Y zr-dUzMj%L9u&z-Z9zvYZ*s>DnnFE0{I31yr8pV-u!YCvO1FX?$nUGT`CuwB3I3VXc zoU{0a#<_OjA$}guYhYD-SJpv{a|ZB00U~MsSRGOs>Zj1yh}I2rBfwe&i&#xis*uFt z@6Wt3e?G1NPRE!yK;`l@HZP|#UYyhapyjB&n@?y~HL9aMgyl(s$^=n51toM?NpFfX zF_OeMQ3xJkwZzBYY~kCT!NESZ1ONhhU-hK6MM^5qlV z-QA0TC{tkPHP>7dEnT`)KK}S)nLBsxSfX$ie6)T0c3Hc2tsHmUaqj|u0%rhc)zsAd za_zO(rY3bg{q)l@@D?*A<9N8Ir$>JO{r3rA18^=-3Mk;Dj*gC<+qP|!$!vfX%#=e8 zIV9Y?d9!@=)mP)dN}vu<^0&pkP#Tm%sQ{geFDM`{f{1_!;rJ*v9w&+;thHzWtq}nir7%%QQQ&aK;JlE9yakjF z(Alr7X=x#jLu^KqH!*@nG~hknlqdQ|d-fmzis===JFK(VIA)}855}a4(qR%RN+)VW zz{VkdvV#IZK|xLoI=>)Apn{CZLTXz(sm*jz-`Yl9Yb&+Q&Do`ihUUi1xq9$|c%h`c zc6uF%w|JAr#1jnn4iKh8;xL7?CJB=Qh4PXp^HGX|z~j9mC@Pt51{w(p(Ylzr_O5IO z5#C!sg91bn|IUPr?cGIDNeRXjPcsAO5FFwRsgW__C?xsktwrU+Oa_^aQmBl|lCo;X z28O3q;DPVIc>lTs+AEpp+le)X*rahL!ih(t&_R+9i6%6niWnam;@1W10e%FW;$H~h z6bF|8moamG1il2mQ$U^?)B$Zk3sA`PaX=riQ<0wlC#dv%Ty38%Bo=6^tD}viZON)Y&0P5~{-( zLtK1pTJxqY4dhWlK|z6QNN_0f3vvknBf>A}djygsQ6B(gsD$y z6Q{$$-U;vC$Kuw_8vqEu&PN^Y8oZHDF~tpL{S8<5MbpiXxg+fI2mK2 zOim6mnT!t-PX23PVm}dvHd7E5>c#tqD2e4O=-#s{RxV!+?#0VjG3(Z?L1tDa{;%^N zBBT645`p7Y@eeVS55ONDJ$B@orj48ZZe?YOyn;N^(b8cn*Q`W~mMtKP0zkhmlBldg zR&EBLVq+7Pl;t2uMO0W=h>suNQ&B+?d-wYNw|V?b%gTKG^Z^|FyKVvZN3`#RQFAww zOH6wyHug20ICYdfyxqH?29KZJXMEz|Lc6X$J8I*78o%Ws#l?Q0sF;YosD)pLmEiE# zkiBn4Z@f!x4JPcW^QZ5q@NmE0_{O~9GDnv->xTR`aL>-xQ%`>AJm+j-!?8zRdUn|0 z2rjbk&Lg8Y+#yxJp1onwS=*)Ew*Q>lZk*U~?BUxz7G9)2i!W2(C6}q=tW(MV4%@rl zxAW%RV>aF%?bmtp|KQqAKSd+f-lRTDu2ApAm#E*;E5!dd8+Rblsp0e;)_;%e1IQTy zfOm(@hV@1tsuS94djtSA3^Qa$cQ)lvOhkBD{*#AFvsGe_I9$CHI*!i%#Z8Zt# jw$;|P%{mR>=K?+hqBApH$C)si00000NkvXXu0mjfvW!xT diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png deleted file mode 100644 index d8792df54b1afe3286b9b8c1ca2d4bb404b5b6b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmV;A0dW3_P)0Z>pUB%SGvNf`}Zp(Gfz!=yVwOyMTEC?wFqAe#*DnM@inpbc#k zIVcmxB^Qf5&j5C;I~zSspi z1Y`xSe*qmi32@iOHgfm#Ek{=E1lT$1=z&{L-`Rh2dv1AhByjDmP1xLBLwg-xboA8o zzrUmYMf?l@?DF9Lndi1g&nyN$23Yz03;rANKk8rf3+LTWH|?e$oa*;v$>o{wA7)P9 tdS}P^Z3pKqrUycQ8gPF2u^s^Ds0Tsmea{@!+>HPL002ovPDHLkV1n(dt;_%b diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/loading.gif b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/loading.gif deleted file mode 100644 index 715431483265b3427e1fb8f74df570a11e5c9435..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1786 zcmZXUdsLI>9mk)%ByVmI6GFHrBot#n64OX#lwk?TC4pdolmdpDpq4;E13@H+B?$?a zfR&p-5nW(l!{w|hN&$Z~%g9tB!2H8Qqwn78e?m(!jz&i4HKJm>j*e&_pq zp9D#~XsenDm|&R*Mn*XXo zXOYBCv@#bQe?5P0uNUD^c|uecaLe-o)rS&uYv^Sdaa0Q*%20MI>mnf>9^Kd9{kzEi z!4rvgYwytT$q{-dfAm7>`sPGkeM3psZxgF{M(T9^=k3s?mfSC?+5Wj-?~Kda20E(} zvT}HisJr3^J5#%LHIIl-mAPMOcw3)E>GD>pPVH%2-nT$U-wyLUHe2%n*s|k)X7>d? z$m}J^>@Jkhm6bBE<6Qksb(%%3nSSq7S}&t8GMUY#hxM%IVo33wMc!8L(9dyp_deOT z(+ay%2F=$v)ArWQL=Sl+LYQmK5VIETk~tO|4qP#x`M3T4>mMOEP;IUvn#`6eV|{ha zv8Lvh)`W_~l>bJsng<<_e%08(5xOQ7seTUGWjT%0ANVzgVixsuqR*`0sF%B?nD!*W z?UyBEJt3&gTn!QBVxGYL2KD3SIF*r&u4b`-dj<7_yR%a3fI+rF zJg{&Bf*Pe({{rJ|^oCs_3hUk6>tWnn&s);aF^P?s{YVSsWSNI;E>O2FH&0f)J>>X_ zf3_`H0>;Zktd6DELfB}+zH`J>3s({AVDlO}GCuGGz6gCEzwgZ8q;JR<@WZ6w_wi!G zd?w}*-n#1+iKF!3c3oL~{xL`&ZsB;zaVAGE-@ArsUA7M;)6NgB3@lcBdAzzj`PR|z zYQtX1fngH8yF;tluOY#_RM=0 zN8D+40jlpWR$@&1qXpifkF2BUApw&Nop$h55hazT9j%6C*|F_J=O@$d7v~Dq$r+XJ z{8TC)&M-glz8YC9a=2EUTL&CL_tB4{l>$9FJ%t^1sn5 z4C%?e%570*dj!QS{mlMh+pA~WP?i{{A8F&MhfYqhjdOJmVO}fRdF81^y{RW?8{;rc zE!F#(sF>2X>dXzbl~lqp-=kax7A{J`!^KH!d~nG7^hE*!=)%>iK%#Z(*VpFe^vuzt z8Y>iLC7W+&Yw6e8nr`k8xLJM(cC>QIaLlK2ySvI6cUdJ5CuQPCwo2t5fzQM(s_ZE2 z;6J*Kb2_*C9}K6YkDffw`qSy1opgorU=g*F7D>Zkt3^Q{g{={Q5cn@8DMti`a^`Q? z&U=8S9J89t5SkrKxkKF*YB>XfX(Opm80h&67(OL=b}?WR{P1p{W4{l({^#gRFYYg96bnnSK)2shuMFKyudSlG1c>~SVI;74b(f`tz!cOnAULT7 z#-wl`(_>E?C-bvUhBD%N_K)BA8%f9{lYei}FP=zfGi~q%BgZRJwWl z?)0fs0QkOt{N(Ym{3huu((X`D`dajA?&Fx=bG{MK5p-+hMYqL}bM}DdWqyHXCE^w9<&7 z?XKtMvO%}Y^SQ9&x%o_R>e{4_yiBtL;LHgx(>pb{%s~K(vx!BBDaE2w=|aSpd3Nb^JD@j+yipOgeimV!19i zn-8(NgJb7<}BxUtji%NWy-e@); zf2PUOx0>wx`q!U9yCdz|{##4m@3T4w{+d1mA)xGcVF)?q00000NkvXXu0mjfT&#A= diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/port_up.png deleted file mode 100644 index 8105e77d0878e1bd4a4f4953365ca1cab3a80ab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1151 zcmV-_1c3XAP)SZE8N{(H@L3ZuW(pBwz#`XdY;Sp#FL4>q`mmNa~e(rhZ`&X za{HFBO`A5M|3?fyXPtd!TRZ>5x+VTc{qMi`A+tL=PbQdv5a#Vr_%aNggZ{uZ{~a>M zm{P(q6iIWt^=%DMRi)KW6S|E{2r!As;QY%kJ{RZ37IO}Vb8c>KWO!5%9MGldnmvFw zxkk;?C=*PsB}G;DEbO`c);kEH1U{4kqFgEGH*(8MOMoUAg9Az&imK>_(H2OPUo!-$ zUVrz!cazD4rfK)x^8lDq6s1@yW-^I#rP9c1+xBhncDr4N9CYZxha3v_b-8Z)Zgb7e zIn3kodfmS1$=NF|y9zvJvnjwya$S-nRn=ga+vPrB|AWssb#85aC6!8i^zp}o!@~pp z0gQ=Z8Sk96u4}nmZed|za&j`8%@TqQ&KaXjW7HIjga>D5_7#{APpmC1FUYbCv&!X4 zU;xmzXWl?Jvn%D&)@@sLUC-oFP#qr|kAx#Y1gg{F8XXz$>+Og3WGW8aTt4gb`k+dw z89BGq*)>?mW%Cnb6EMf+ad895s$8j=;S$Dbb)#4=RcmE}@ao!XCYy%#28$7f0B*6` z_chWqRgsl?U5Z3Qflxrz)oRs*YPyOnb^C~JD7u0m&{R5!KsFj%wmD?iy7{cS4l;Ce z95FL>2u?9JpU>wNRgV|BZr}r^2ah^rx?uv@G8(P{jj+wNALZAQZV3v+V#D`aZ@%@} zS3l;}UWN@~$Xu5mdi0SC&N@m_D6-Xvo)U14xzUz&i@-8uhY9wFX4SAi>fmms`CMdW zEwN*{=yJNTeeQ#Sa9?kqb;``6YapWqZRceP3IdQRef^U?AFuV#>=*3yQooP>7~3T= z&Ee?+bmO^UBL@RPfLU&YhHD#Z1!5OD6Bt#gnGDCzy!_oKvG{PHYkV}|^Lak`c2}JS z2BO|G4+}GpzzVLHR z=F`LdQxoBMy7Zm63{lP0Ebk*SyYI4=)wFQzl z{fdf;riKR~2a_9Hf+5$QIeu_h5k(O-YiJ}wE!i~QLj4W>$P1#T1X=l3%jX%go|` za_rc?@dpp@T^jA!v7>u){6~8C8L*(Hsy;DwHH}HDHZA71#DBz5axRCZMT-`&{IP*m z{I>GD_pf_MMD*7KRoD#jirdl71f0Z`o)1Eg9ojxuB=PUpaFv`MM4TZy^r--Owi8*!Dkh8?+;e{Y#DR&KQa&`fe)B_nM+cKT zf^wi3&=vI~OY;vY`SeW+^ZZ>3QXmP&?fi-iO`_t!$IK~ng87sQ9`LaN$#77C!UhH7Uo&zwJb-|X4H z>&e**r|ezWdvMpC_&#^>)V(b`H_iq^IsxeXpE?4-XJUD)9OopkBLDyZ07*qoM6N<$ Ef`h@~g#Z8m diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-0.png deleted file mode 100644 index 333b1557ba5d9b5df28ec13542337b338eec48fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)VB?C7)^Q+7`6roe)<)}%aT%9QkNX%H1Fm4E;F zv4n&a+7?8`p~2Ck1O3B^1@jlJqoWi=AZ;hWS^Haj?1^pPg8zCde5ZIon;t2Cgq6$TK*3AK+y z|2LBXD-j_aDwG)nDsCZ9Shjr4?*87Pqk;55zWw+%+rmo3SO{nX$iPPZLcT_0H2$l< z5>fh}konY6wqpVynG|w?HktuRXdRlx6@y$v0W-`SBmy8GqSA(?Kp7>>su`CjkjOae zY7OMl)$`XLKfC|>(bM~H9zTEZ_Uxt8pJI+&x_aT`<7W?2j$FQe;bqBBoiqHT h<@V+U=6A{5fOuw`u$Hg{&b9ym002ovPDHLkV1i~b$#MVy diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png deleted file mode 100644 index b465de3f575fdf90a7919b23b77a1dd10da9cd29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmV;?0WSWDP)s)cFn?^oilHvOefO%C znIib>1z2&^$g$Cg;iD<4R<%ZJb3*_q{yITLpsHX@)y)h{iTq)|YA|~3xjAFjURpsn zAC>Q}rU)d*3k0xVT%cFm1{=l>Y7zZ3^aHoO!rA zV=f3280CZsYp(WZ-5^fWlA;DubywC6+>K2Fa6*^1wHJ*U*gB%=L)u5rUVf-3>Yy~I zCOIvrfb|2W}>*Zo>UOtNxxEMldqVPA5yXW35rwWi5@0o!WlU$Sg`@5 zs^Er_as2fHA5v}u#JnKJ3B_h|@gEyt+^W-urmeqmciQ^v_hxOpaew&oGf()LCapdD z`23|a_s(5B{mK5rdv1r%7cQTz$u^5N&ZZ}00000NkvXX Hu0mjfM=so5 diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png deleted file mode 100644 index cd7bcaf9a6da38490231f92e4045cfc1a2c96a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467 zcmV;^0WAKBP)}w+VA|N6-#pf^H==)aw1TZRQM6G74 z^x)BprvT7u^-8@wJ=G8l#0RR?>i!K`M#d_y35ah1;r~zo&5yoh9~{uUK_mbG002ov JPDHLkV1k;>+e!cc diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png deleted file mode 100644 index f7a3658df8d05f8fa037d84cf8e920308980ff0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP)i&y2E2m%z1ujWC~8`U6E(u`Fsh0%BnP z1;NFKFK-#Bt=B#?9YT_j7g@k{f#f$4j_%m@c;mX28?`?&HoJhtfuJH5=HNgjekSPT z#M7?Q3uPrszI8wZp$6(k9sKw>3TqQpRS>dh->Zrk4rKls_wQKSvvJ+3>pED{tigv* zU*=b@UI_~8)I$X1SOZUxl|&QsWmmmTfD#XATPcA+j1X$z2y%C^J%MOF*n6qaIdj8IyS|#sT~3kQ%j6VJ88XdU~E`7rD<6& zZ8hu<-`+qP}nXZvp5?Pb?D^ZfSPzX<+=ZQIs0=TbMr zC-QRmatHrG*>aVpmMdGK4**z}g+2Rrvc`J?$~wy7ru{l!D>qs~7P~D;S6-0Oa3OkU~I834@YSf0hvts9!~}e$)C9 z7EuuZptP~1o91fPxEhz z;*@e_%lG{}9Oo{a%@k4~?b>w+LJ-iRDNG$wcJG7ljobcK+mBK;gj{l!i7D zc-N@~n^N+A_5!#UuR<0?LOQg|G~(i}g+Wso)NS8fOn4r;A62(buBOiFUYL&F#Vq^G31 z!Dr62XPk)A0#^00F-{CiwYP-B6*z1ap}CPw)Kz Z-~-xuDw_#&s%ZcK002ovPDHLkV1j6fDJB2_ diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/switch.png deleted file mode 100644 index be99b19badcd389e58cad6e04d067890a58943d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)lj+qP|YS0=WfgCF%C7XB6|J~7(z@#DwC0kHTJ zo40JDzrh6vM~)pKXLmOY7&-)V=g$QT2GeKFK)=C*;qK*$6Q_>9Zt!Izm>>YQZreN$WHc=56sz~O({2;Y~%XIU1C@?zM!EnPU|;opD$#cLxZ1$gn|8D73* zASp2t8~|JSuNyA7Ts{B>V`Zwr*}8Qzb?em)ty;Fi-Me?NaN#1neDM-Q1YJEHv~Jx7 z49fsS;BvSC2m}ro<|X(%KKMtE9}xyD4jwwdh>J?_Y^`na2UmvnEOP$CMP*GJSKkv4O4bxFI+f5 zOP4Jo1!Z|p{0tG{H5vEXRWX7+lsIu8UA%CX6qV&?;U}cLCgTl_uvsT#1-od3QPOlh zb&(i3IZD?^Mkr}ov1_5*mGAvD%$LT7{6`Fb)wQ{*A!nzIJz zFv?J-pI&P1AcK^wfx7YG9YpMP0knL#tq;UJCUq0{nACr`T|=u+7w`(`j$~?zc=-ST O0000xV zN&JuNb{n-C0>J26Gy2V*IcF3A6T6-JzV<4W04BGcHf__6Lmv(s2h}5&&u*VL z8srh%Ttj{TZdhBpN3|BDAVm89eGzZt^|#OHmO%+-z{2gvz8re9>-qYV<2DQ#Po3<` sdatcDr6y$ETn-6={HN7|8A8^HX`u0bX&RxdKL7v#07*qoM6N<$f`KlvegFUf diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel.png deleted file mode 100644 index 63eabfef5901b6cfc80a4fabfce7aad6d24f8174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 343 zcmV-d0jU0oP)gwjjB8mkP8rPB1zJ>Iz9b|Ry zBB^y#EbtB00#Wtrh;QCTUR4*2@*)%nDp^KI-4@L7qR4?MUX;3-;-#{(W=_7JoR_fL zbp#YG!jd&D7AUVQO&MuCj#7jieE???mfr_e9Z0~L`8Ec!%e9dvd z0@laWS5Sh;i~3=lP3G|B1Avgxt(PoL4ZuN(m#_DPFYX_2K|ka8TY~HSyx|d{uS&eE ptS|7z`nP^?xWjd!H~}3-&pYTsqv2#^;dcN4002ovPDHLkV1jqApAP^4 diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png deleted file mode 100644 index ca79d81707c1a9476ce729e4cb88b3aa32ef0cc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6HhH=@hE&9r_HX1pWFX)gYrwiF z!GufeR!NA?0lqC41kCMN8x@k;R6HCU*>xu9@heOADLl8Id#7gZeM!O7_DXKanHkFu zPO9cR9net8y`ks#WXC?S6E`+~&v8EZV++?IHpMhyF3r9jy;cI-FKWNoAh_I~O9 zY<`n>*Dt@5yjxEeEV<7+N7FK}%#x#VowiBV;tu2E+>5hLO}KYm?M(Bcvd)u<-{u_+ j&Rz8(PO#35!!WKUd)o0e{wc9Q*E4v!`njxgN@xNAZp&FF diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/vlan.png deleted file mode 100644 index be99b19badcd389e58cad6e04d067890a58943d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)lj+qP|YS0=WfgCF%C7XB6|J~7(z@#DwC0kHTJ zo40JDzrh6vM~)pKXLmOY7&-)V=g$QT2GeKFK)=C*;qK*$6Q_>9Zt!Izm>>YQZreN$WHc=56sz~O({2;Y~%XIU1C@?zM!EnPU|;opD$#cLxZ1$gn|8D73* zASp2t8~|JSuNyA7Ts{B>V`Zwr*}8Qzb?em)ty;Fi-Me?NaN#1neDM-Q1YJEHv~Jx7 z49fsS;BvSC2m}ro<|X(%KKMtE9}xyD4jwwdh>J?_Y^`na2UmvnEOP$CMP*GJSKkv4O4bxFI+f5 zOP4Jo1!Z|p{0tG{H5vEXRWX7+lsIu8UA%CX6qV&?;U}cLCgTl_uvsT#1-od3QPOlh zb&(i3IZD?^Mkr}ov1_5*mGAvD%$LT7{6`Fb)wQ{*A!nzIJz zFv?J-pI&P1AcK^wfx7YG9YpMP0knL#tq;UJCUq0{nACr`T|=u+7w`(`j$~?zc=-ST O0000xV zN&JuNb{n-C0>J26Gy2V*IcF3A6T6-JzV<4W04BGcHf__6Lmv(s2h}5&&u*VL z8srh%Ttj{TZdhBpN3|BDAVm89eGzZt^|#OHmO%+-z{2gvz8re9>-qYV<2DQ#Po3<` sdatcDr6y$ETn-6={HN7|8A8^HX`u0bX&RxdKL7v#07*qoM6N<$f`KlvegFUf diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi.png deleted file mode 100644 index 80a23e8e9a740f8f69e1ad82f3bcdede9f05953b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 767 zcmVRjrQ2KZQGt{_t>^=+q1U!ukG4oe3Hto)cL*!S;#?C?#6}P zJQaRam(=}b5Zbl@2Y0-!Wfu-AyxsU-Hm&~Ujzj)6ljyF~dWoGZ{rF~G9Nh7S9Wsl~ zLJld%pTzf~dA5U@u#>J4QlFp~)l_N}*U^ZBJKnHEX1PQ5$ny_u(dGX4z&@YFbS-z& z32Vtz45*ni;`Ytb^jzOE4BX!uaeHU+h8;4i5GmMW80(QtCOBS+Afln|ymBjz=RTIrc z@KWX~DodfbyquaE>xWpL2-H0!<4uiK5W!8JLk8I;7iCU3!CYY~?H?H(f{xC1$~Vv- zIJPnKH$5AxZ#Y&os91PYQo>37AcWw5+#;QQ(m5cV{kY$!-?NB{2?u8v xhqe{6tDEC@WNq*!Bc1PMWbj!TH+QFR&R6-E(9NL9xs?C_002ovPDHLkV1lfHa5w+} diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big.png deleted file mode 100644 index 9e466aebf41d819f6bfbf5dd70c5b193fb2a7295..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2276 zcmZuzdpHve7sqlNBbN|!soZjJxvXiv$el9Rj4-!kHuEAhZM`Zgxvbn0D@+q6cZ!&j zOGJs>2~(NIu#wcutM7fjo}Taf&hwme{`)=Wch2ve=iEe`wgCa3)3x3e^Ni{pKt&5!WL$#m2%?^-hk8?(5)Y>(7b>OiyoXbG7~Gu1gZ z)lJPJN>*V{1j`caNzEUSvrazNU-O=}Gl-vm^b=qbaC&E?Ed57d+D@UZrLt@bMuL#f zSQwe9 zZSbSRYeG|jN@*{S;76|tc*P|_+V&{yuLRF1w~kSEK9N_~3p3L9`GMP*4@E;4N z1Rpb@b{|!&mA>@KVpWe5Ae}bQu4MT31%UllTi6)lo1NO{mv)vOGKn%A=qjq+`%F>(99P1SVjTc_>fv-om)yX^2EgyMWiTg6eP$f#XaW{ajd$Xpc5n}X25!I zarQFDY|8;x`|V5IpVaW<_Zm?XAB$0BE4AS)Wo`=Ht=9TN$Kg*)eJ<0>(qSB*`{qEe zmY99I-qo4I{M|zT#k3m?o~iVu8a|`2?6xcD2>2g0(dm5-KE=R3ot_M#h9CTs%7)#rFSs*#U+ z=KUOnrL0;LMRwL&!*`eI@k2+lH+22#^S8c#7cOs}u&M_&3ja@SYe3-j6%y*jUUFcc z+^dAN6O;?|A%ycmM#cKz!L)Tjg$g)JbV~ASFlwwPcxVG@ zuHofpP@uBZ5gdoS7eC6(34eMpIHawgdZClb0JN5>g(sre8M!ooZ?b0cxRTXJ_n4aO zthd=%@1KB-ytDI3g1!cAd{USo6_H$JBH&rnTDCQLxC{t$q^Y-*Jt zsBWcAM8FeuB~>)&0HR@l+6DMEdjWj}B-9|)*p3NF`wY7xERMU;jV2Cwm!pq%c zzjxV-A_y246KX{jX0-P7fz)c&m?2g%ydt73~O5o~tC`;=ugHXVrI7T!1%*oQqc> z8$!Q>Ny6#dO~jmlXq4{}sie7hC5*x6)C_RMn<;!x-!wMIvg){d2{nWB_?EGTa?#kD zqdX(5XrPtv6bM2Zp&GJo!_-m>5`T@sfqQ3tb=C}-lOKx;D7yP@U-!f2N;$wyC$ zNib9LTT)W!uhtcfRLuI0g;IXRnta!gU2~!6dZQ!33`zbo!R~7H4GoAow1#dn?C4%; zdXAwN9EtIWY@QmLd}mq8d^I#VX}fzI|1Fb-1?+GYsQHcP2hzyXb6tsnkv>dwIBxUJ z7zaOIUSzw8Lpw8(`OgviHM=B>#7RIDp^L*&6{N8%Hwe!@k^ z@r=C2a73Uhz_eXet5WAA&->wNYBW}>Lrs0KvyMUDgclebvv*tEQ-*tVDDLNi4}7Ps zCa9NA2W>i`d_eto6DnPS3PJHj=Tr`^+t$8B=?6R*wK&Fpa!`u)xv>nS2d})EJ;Q&J z+Zq;s$?+7(bg*H=L#tAgl4&RdmOXXA`5uwI@LEv2;lU%MbQBdW7W-o(rRorf0*E!W z!E`U)bnh5kx|c@_myl!cdpvNyRf7c?aQ*69R@!1U1)mxk8L@%0aIR5Oxw_|I#5FnL zW{6#GK_N+ePJpjHpqU_@r)Sw^-S8!4KbOmtYIq~%$-a{s%N?w)zFh%g@wOvpXsh?b z)|t_)mlBY?Tf%3k<>eV?^<)Lw*?ed;TD82-qRR=amVqkxVp6tpoaD0qJ#g9k;i1XF zLCzcGv0U!vt3b#K40ucEqCwR1>%i9S>C{61WSb+^w*h~Yd5T(_#&kL-nPrJ7o7yIJ ze2cSw)IN4vT-mG*TVRu}?CjBSf=DFNFHamWt4K*-LWhP@7ZtLKQ_>6B1a`bIjh^VP zS}rHO$a%1HiS;_yRey79%kVl*v>gRl#TdlJsA{ghMj#W(_ww>qKC%U~WF6}fcbC|`SfYQJ>-_e_&d2(& xku*L*e)UmY&*gGKE`9x5q0#8|PdlN1iO81h2~bp%`T4`}*jb&nd~AWb@;B83P-p-E diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big_disabled.png b/package/luci/modules/luci-base/htdocs/luci-static/resources/icons/wifi_big_disabled.png deleted file mode 100644 index 6f9fff3813e2e051a7429f042ebf8c23d7b42378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1512 zcmVP)kdg000HANkl%|aRV$s=WH#g7$s%iA``+cVZ5=$@wr$(C?YFiywrA35Rn^PMTF3X-#`m3H zH3;W;tya~(6;CLfV;lXAz;Xms732nW+l4CydYYNb-k+h4hB{ld3A=snZ2bLfftK=a zvUy4Y0h!WOxA=zAMNjrx2~4O$((h~y|5&f!sI$pW!;cG~K+g#%CzxrZCO0%g8ba4~ zL(4S9NBNY!);twg@i(UD@EbBMr#rHkwu&~@Dr=Lf?WL`14uC27rVTEq2nW71q&+=chG3&|Drw zl!Zos5e={c>idm;)X3VMimb&a%ka1kJ1HD}+-xaD(6#bM`UDS=n$ z@xzMhzz74R+ms9#c|C6Tgz0I1WvN35sQKjM-?;E=?DMQ#I{A2NM&M9ospgxWC*tyf7UI1CmZD8lnldMwa+5HbG26mI#uX1;#B~EXG0`kZGOKT@Q*rQO|5Rzt3G>U1 z4Y(=0DcgYMMwp*-rb@+r)Phr;R-a^&YN?5OLDE-g7fjINo=R(M6X~Mm`04dw=~gGb-RM1vy4$q@B7p_sbLNLAL<@fK7NsYA{C zT8H)1cngXhDnr^;j;VA=C|z}}7JDxI&ig0V-b7J8`L97pQXvb%)ut+4P+a0~$=34>sQ`>3{KLmuR$C++#n4 zIDU$Dw6O7C=8wvxietBD|Nh2t;F1Dh-{AUSk)Uk$-iDVw&HDD- zw)LMog-g(I8H+aEXN{wRFJYGAKdW672`4cVW6n+W6-lpkuQj>}r-17ie8LQdo)q+< z875*(%3(Ro$K#RVnd8yk>~D=Ln&0*`=lfGrEiZ|$Wk8_H3m)b6;zuwlj%>4=d4YAp zv~rzM=j5ibmkb&s)P?)p?>!$Mhq~H;Jtx1p|FQ0O!V@1o{MYv7UfElxmu0gayP_pu zSfi;;~d>% zZ?OAbjQ3q-@HWq$eh$7ZhClkAw?l!Sn^=7!5Li*WXVJP>`kNlje}v3??d%l>_LB6= zpPyFL^&Z3^WcAQF>bh!F{^X3et^DS10lr?w?h6Lj;#{0AEr7!P!T$mN&5K^5InvMo O0000ABo4#s3j+s?ntq}eo0cF9c^Zo0%oo$PkVPH#^MSR{H+VTPPnk0{#U)|srwX;)H35X4p3;r3=}AkO>7wGLvL9WPGSib5T{EQ{dK%z>rS0#6 z!u1F4mVyZ$OG-i;jPSr-q4&G6w2eLfz9UwV9`7jgapCkex<@Z5(qqKR-xvS518@`Z z2p*icMbqD2(%{qN>;)Q}@CbGj*}HJXKQHM%)&2+zk2@ZFHu2UQ0st@kM*zk<9?~Mc zqZf3Srk_qW-J;13paKUZ-cjrb%+LD;R3?q|yuV0S=p{k?@aL2dzCWP~4q_08IC$Wk kL*Lu{GVCeDQHlWk0fb(%J{%wa-T(jq07*qoM6N<$f_$*)IsgCw diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js b/package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js deleted file mode 100644 index 3385f8f230..0000000000 --- a/package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js +++ /dev/null @@ -1,239 +0,0 @@ -/* - * xhr.js - XMLHttpRequest helper class - * (c) 2008-2010 Jo-Philipp Wich - */ - -XHR = function() -{ - this.reinit = function() - { - if (window.XMLHttpRequest) { - this._xmlHttp = new XMLHttpRequest(); - } - else if (window.ActiveXObject) { - this._xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); - } - else { - alert("xhr.js: XMLHttpRequest is not supported by this browser!"); - } - } - - this.busy = function() { - if (!this._xmlHttp) - return false; - - switch (this._xmlHttp.readyState) - { - case 1: - case 2: - case 3: - return true; - - default: - return false; - } - } - - this.abort = function() { - if (this.busy()) - this._xmlHttp.abort(); - } - - this.get = function(url,data,callback) - { - this.reinit(); - - var xhr = this._xmlHttp; - var code = this._encode(data); - - url = location.protocol + '//' + location.host + url; - - if (code) - if (url.substr(url.length-1,1) == '&') - url += code; - else - url += '?' + code; - - xhr.open('GET', url, true); - - xhr.onreadystatechange = function() - { - if (xhr.readyState == 4) { - var json = null; - if (xhr.getResponseHeader("Content-Type") == "application/json") { - try { - json = eval('(' + xhr.responseText + ')'); - } - catch(e) { - json = null; - } - } - - callback(xhr, json); - } - } - - xhr.send(null); - } - - this.post = function(url,data,callback) - { - this.reinit(); - - var xhr = this._xmlHttp; - var code = this._encode(data); - - xhr.onreadystatechange = function() - { - if (xhr.readyState == 4) - callback(xhr); - } - - xhr.open('POST', url, true); - xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); - xhr.send(code); - } - - this.cancel = function() - { - this._xmlHttp.onreadystatechange = function(){}; - this._xmlHttp.abort(); - } - - this.send_form = function(form,callback,extra_values) - { - var code = ''; - - for (var i = 0; i < form.elements.length; i++) - { - var e = form.elements[i]; - - if (e.options) - { - code += (code ? '&' : '') + - form.elements[i].name + '=' + encodeURIComponent( - e.options[e.selectedIndex].value - ); - } - else if (e.length) - { - for (var j = 0; j < e.length; j++) - if (e[j].name) { - code += (code ? '&' : '') + - e[j].name + '=' + encodeURIComponent(e[j].value); - } - } - else - { - code += (code ? '&' : '') + - e.name + '=' + encodeURIComponent(e.value); - } - } - - if (typeof extra_values == 'object') - for (var key in extra_values) - code += (code ? '&' : '') + - key + '=' + encodeURIComponent(extra_values[key]); - - return( - (form.method == 'get') - ? this.get(form.getAttribute('action'), code, callback) - : this.post(form.getAttribute('action'), code, callback) - ); - } - - this._encode = function(obj) - { - obj = obj ? obj : { }; - obj['_'] = Math.random(); - - if (typeof obj == 'object') - { - var code = ''; - var self = this; - - for (var k in obj) - code += (code ? '&' : '') + - k + '=' + encodeURIComponent(obj[k]); - - return code; - } - - return obj; - } -} - -XHR.get = function(url, data, callback) -{ - (new XHR()).get(url, data, callback); -} - -XHR.poll = function(interval, url, data, callback) -{ - if (isNaN(interval) || interval < 1) - interval = 5; - - if (!XHR._q) - { - XHR._t = 0; - XHR._q = [ ]; - XHR._r = function() { - for (var i = 0, e = XHR._q[0]; i < XHR._q.length; e = XHR._q[++i]) - { - if (!(XHR._t % e.interval) && !e.xhr.busy()) - e.xhr.get(e.url, e.data, e.callback); - } - - XHR._t++; - }; - } - - XHR._q.push({ - interval: interval, - callback: callback, - url: url, - data: data, - xhr: new XHR() - }); - - XHR.run(); -} - -XHR.halt = function() -{ - if (XHR._i) - { - /* show & set poll indicator */ - try { - document.getElementById('xhr_poll_status').style.display = ''; - document.getElementById('xhr_poll_status_on').style.display = 'none'; - document.getElementById('xhr_poll_status_off').style.display = ''; - } catch(e) { } - - window.clearInterval(XHR._i); - XHR._i = null; - } -} - -XHR.run = function() -{ - if (XHR._r && !XHR._i) - { - /* show & set poll indicator */ - try { - document.getElementById('xhr_poll_status').style.display = ''; - document.getElementById('xhr_poll_status_on').style.display = ''; - document.getElementById('xhr_poll_status_off').style.display = 'none'; - } catch(e) { } - - /* kick first round manually to prevent one second lag when setting up - * the poll interval */ - XHR._r(); - XHR._i = window.setInterval(XHR._r, 1000); - } -} - -XHR.running = function() -{ - return !!(XHR._r && XHR._i); -} diff --git a/package/luci/modules/luci-base/luasrc/cacheloader.lua b/package/luci/modules/luci-base/luasrc/cacheloader.lua deleted file mode 100644 index 11e5f6900f..0000000000 --- a/package/luci/modules/luci-base/luasrc/cacheloader.lua +++ /dev/null @@ -1,12 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local config = require "luci.config" -local ccache = require "luci.ccache" - -module "luci.cacheloader" - -if config.ccache and config.ccache.enable == "1" then - ccache.cache_ondemand() -end \ No newline at end of file diff --git a/package/luci/modules/luci-base/luasrc/cbi.lua b/package/luci/modules/luci-base/luasrc/cbi.lua deleted file mode 100644 index 2184395039..0000000000 --- a/package/luci/modules/luci-base/luasrc/cbi.lua +++ /dev/null @@ -1,1942 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -module("luci.cbi", package.seeall) - -require("luci.template") -local util = require("luci.util") -require("luci.http") - - ---local event = require "luci.sys.event" -local fs = require("nixio.fs") -local uci = require("luci.model.uci") -local datatypes = require("luci.cbi.datatypes") -local dispatcher = require("luci.dispatcher") -local class = util.class -local instanceof = util.instanceof - -FORM_NODATA = 0 -FORM_PROCEED = 0 -FORM_VALID = 1 -FORM_DONE = 1 -FORM_INVALID = -1 -FORM_CHANGED = 2 -FORM_SKIP = 4 - -AUTO = true - -CREATE_PREFIX = "cbi.cts." -REMOVE_PREFIX = "cbi.rts." -RESORT_PREFIX = "cbi.sts." -FEXIST_PREFIX = "cbi.cbe." - --- Loads a CBI map from given file, creating an environment and returns it -function load(cbimap, ...) - local fs = require "nixio.fs" - local i18n = require "luci.i18n" - require("luci.config") - require("luci.util") - - local upldir = "/etc/luci-uploads/" - local cbidir = luci.util.libpath() .. "/model/cbi/" - local func, err - - if fs.access(cbidir..cbimap..".lua") then - func, err = loadfile(cbidir..cbimap..".lua") - elseif fs.access(cbimap) then - func, err = loadfile(cbimap) - else - func, err = nil, "Model '" .. cbimap .. "' not found!" - end - - assert(func, err) - - local env = { - translate=i18n.translate, - translatef=i18n.translatef, - arg={...} - } - - setfenv(func, setmetatable(env, {__index = - function(tbl, key) - return rawget(tbl, key) or _M[key] or _G[key] - end})) - - local maps = { func() } - local uploads = { } - local has_upload = false - - for i, map in ipairs(maps) do - if not instanceof(map, Node) then - error("CBI map returns no valid map object!") - return nil - else - map:prepare() - if map.upload_fields then - has_upload = true - for _, field in ipairs(map.upload_fields) do - uploads[ - field.config .. '.' .. - (field.section.sectiontype or '1') .. '.' .. - field.option - ] = true - end - end - end - end - - if has_upload then - local uci = luci.model.uci.cursor() - local prm = luci.http.context.request.message.params - local fd, cbid - - luci.http.setfilehandler( - function( field, chunk, eof ) - if not field then return end - if field.name and not cbid then - local c, s, o = field.name:gmatch( - "cbid%.([^%.]+)%.([^%.]+)%.([^%.]+)" - )() - - if c and s and o then - local t = uci:get( c, s ) or s - if uploads[c.."."..t.."."..o] then - local path = upldir .. field.name - fd = io.open(path, "w") - if fd then - cbid = field.name - prm[cbid] = path - end - end - end - end - - if field.name == cbid and fd then - fd:write(chunk) - end - - if eof and fd then - fd:close() - fd = nil - cbid = nil - end - end - ) - end - - return maps -end - --- --- Compile a datatype specification into a parse tree for evaluation later on --- -local cdt_cache = { } - -function compile_datatype(code) - local i - local pos = 0 - local esc = false - local depth = 0 - local stack = { } - - for i = 1, #code+1 do - local byte = code:byte(i) or 44 - if esc then - esc = false - elseif byte == 92 then - esc = true - elseif byte == 40 or byte == 44 then - if depth <= 0 then - if pos < i then - local label = code:sub(pos, i-1) - :gsub("\\(.)", "%1") - :gsub("^%s+", "") - :gsub("%s+$", "") - - if #label > 0 and tonumber(label) then - stack[#stack+1] = tonumber(label) - elseif label:match("^'.*'$") or label:match('^".*"$') then - stack[#stack+1] = label:gsub("[\"'](.*)[\"']", "%1") - elseif type(datatypes[label]) == "function" then - stack[#stack+1] = datatypes[label] - stack[#stack+1] = { } - else - error("Datatype error, bad token %q" % label) - end - end - pos = i + 1 - end - depth = depth + (byte == 40 and 1 or 0) - elseif byte == 41 then - depth = depth - 1 - if depth <= 0 then - if type(stack[#stack-1]) ~= "function" then - error("Datatype error, argument list follows non-function") - end - stack[#stack] = compile_datatype(code:sub(pos, i-1)) - pos = i + 1 - end - end - end - - return stack -end - -function verify_datatype(dt, value) - if dt and #dt > 0 then - if not cdt_cache[dt] then - local c = compile_datatype(dt) - if c and type(c[1]) == "function" then - cdt_cache[dt] = c - else - error("Datatype error, not a function expression") - end - end - if cdt_cache[dt] then - return cdt_cache[dt][1](value, unpack(cdt_cache[dt][2])) - end - end - return true -end - - --- Node pseudo abstract class -Node = class() - -function Node.__init__(self, title, description) - self.children = {} - self.title = title or "" - self.description = description or "" - self.template = "cbi/node" -end - --- hook helper -function Node._run_hook(self, hook) - if type(self[hook]) == "function" then - return self[hook](self) - end -end - -function Node._run_hooks(self, ...) - local f - local r = false - for _, f in ipairs(arg) do - if type(self[f]) == "function" then - self[f](self) - r = true - end - end - return r -end - --- Prepare nodes -function Node.prepare(self, ...) - for k, child in ipairs(self.children) do - child:prepare(...) - end -end - --- Append child nodes -function Node.append(self, obj) - table.insert(self.children, obj) -end - --- Parse this node and its children -function Node.parse(self, ...) - for k, child in ipairs(self.children) do - child:parse(...) - end -end - --- Render this node -function Node.render(self, scope) - scope = scope or {} - scope.self = self - - luci.template.render(self.template, scope) -end - --- Render the children -function Node.render_children(self, ...) - local k, node - for k, node in ipairs(self.children) do - node.last_child = (k == #self.children) - node.index = k - node:render(...) - end -end - - ---[[ -A simple template element -]]-- -Template = class(Node) - -function Template.__init__(self, template) - Node.__init__(self) - self.template = template -end - -function Template.render(self) - luci.template.render(self.template, {self=self}) -end - -function Template.parse(self, readinput) - self.readinput = (readinput ~= false) - return Map.formvalue(self, "cbi.submit") and FORM_DONE or FORM_NODATA -end - - ---[[ -Map - A map describing a configuration file -]]-- -Map = class(Node) - -function Map.__init__(self, config, ...) - Node.__init__(self, ...) - - self.config = config - self.parsechain = {self.config} - self.template = "cbi/map" - self.apply_on_parse = nil - self.readinput = true - self.proceed = false - self.flow = {} - - self.uci = uci.cursor() - self.save = true - - self.changed = false - - local path = "%s/%s" %{ self.uci:get_confdir(), self.config } - if fs.stat(path, "type") ~= "reg" then - fs.writefile(path, "") - end - - local ok, err = self.uci:load(self.config) - if not ok then - local url = dispatcher.build_url(unpack(dispatcher.context.request)) - local source = self:formvalue("cbi.source") - if type(source) == "string" then - fs.writefile(path, source:gsub("\r\n", "\n")) - ok, err = self.uci:load(self.config) - if ok then - luci.http.redirect(url) - end - end - self.save = false - end - - if not ok then - self.template = "cbi/error" - self.error = err - self.source = fs.readfile(path) or "" - self.pageaction = false - end -end - -function Map.formvalue(self, key) - return self.readinput and luci.http.formvalue(key) or nil -end - -function Map.formvaluetable(self, key) - return self.readinput and luci.http.formvaluetable(key) or {} -end - -function Map.get_scheme(self, sectiontype, option) - if not option then - return self.scheme and self.scheme.sections[sectiontype] - else - return self.scheme and self.scheme.variables[sectiontype] - and self.scheme.variables[sectiontype][option] - end -end - -function Map.submitstate(self) - return self:formvalue("cbi.submit") -end - --- Chain foreign config -function Map.chain(self, config) - table.insert(self.parsechain, config) -end - -function Map.state_handler(self, state) - return state -end - --- Use optimized UCI writing -function Map.parse(self, readinput, ...) - if self:formvalue("cbi.skip") then - self.state = FORM_SKIP - elseif not self.save then - self.state = FORM_INVALID - elseif not self:submitstate() then - self.state = FORM_NODATA - end - - -- Back out early to prevent unauthorized changes on the subsequent parse - if self.state ~= nil then - return self:state_handler(self.state) - end - - self.readinput = (readinput ~= false) - self:_run_hooks("on_parse") - - Node.parse(self, ...) - - if self.save then - self:_run_hooks("on_save", "on_before_save") - for i, config in ipairs(self.parsechain) do - self.uci:save(config) - end - self:_run_hooks("on_after_save") - if (not self.proceed and self.flow.autoapply) or luci.http.formvalue("cbi.apply") then - self:_run_hooks("on_before_commit") - for i, config in ipairs(self.parsechain) do - self.uci:commit(config) - - -- Refresh data because commit changes section names - self.uci:load(config) - end - self:_run_hooks("on_commit", "on_after_commit", "on_before_apply") - if self.apply_on_parse then - self.uci:apply(self.parsechain) - self:_run_hooks("on_apply", "on_after_apply") - else - -- This is evaluated by the dispatcher and delegated to the - -- template which in turn fires XHR to perform the actual - -- apply actions. - self.apply_needed = true - end - - -- Reparse sections - Node.parse(self, true) - end - for i, config in ipairs(self.parsechain) do - self.uci:unload(config) - end - if type(self.commit_handler) == "function" then - self:commit_handler(self:submitstate()) - end - end - - if not self.save then - self.state = FORM_INVALID - elseif self.proceed then - self.state = FORM_PROCEED - elseif self.changed then - self.state = FORM_CHANGED - else - self.state = FORM_VALID - end - - return self:state_handler(self.state) -end - -function Map.render(self, ...) - self:_run_hooks("on_init") - Node.render(self, ...) -end - --- Creates a child section -function Map.section(self, class, ...) - if instanceof(class, AbstractSection) then - local obj = class(self, ...) - self:append(obj) - return obj - else - error("class must be a descendent of AbstractSection") - end -end - --- UCI add -function Map.add(self, sectiontype) - return self.uci:add(self.config, sectiontype) -end - --- UCI set -function Map.set(self, section, option, value) - if type(value) ~= "table" or #value > 0 then - if option then - return self.uci:set(self.config, section, option, value) - else - return self.uci:set(self.config, section, value) - end - else - return Map.del(self, section, option) - end -end - --- UCI del -function Map.del(self, section, option) - if option then - return self.uci:delete(self.config, section, option) - else - return self.uci:delete(self.config, section) - end -end - --- UCI get -function Map.get(self, section, option) - if not section then - return self.uci:get_all(self.config) - elseif option then - return self.uci:get(self.config, section, option) - else - return self.uci:get_all(self.config, section) - end -end - ---[[ -Compound - Container -]]-- -Compound = class(Node) - -function Compound.__init__(self, ...) - Node.__init__(self) - self.template = "cbi/compound" - self.children = {...} -end - -function Compound.populate_delegator(self, delegator) - for _, v in ipairs(self.children) do - v.delegator = delegator - end -end - -function Compound.parse(self, ...) - local cstate, state = 0 - - for k, child in ipairs(self.children) do - cstate = child:parse(...) - state = (not state or cstate < state) and cstate or state - end - - return state -end - - ---[[ -Delegator - Node controller -]]-- -Delegator = class(Node) -function Delegator.__init__(self, ...) - Node.__init__(self, ...) - self.nodes = {} - self.defaultpath = {} - self.pageaction = false - self.readinput = true - self.allow_reset = false - self.allow_cancel = false - self.allow_back = false - self.allow_finish = false - self.template = "cbi/delegator" -end - -function Delegator.set(self, name, node) - assert(not self.nodes[name], "Duplicate entry") - - self.nodes[name] = node -end - -function Delegator.add(self, name, node) - node = self:set(name, node) - self.defaultpath[#self.defaultpath+1] = name -end - -function Delegator.insert_after(self, name, after) - local n = #self.chain + 1 - for k, v in ipairs(self.chain) do - if v == after then - n = k + 1 - break - end - end - table.insert(self.chain, n, name) -end - -function Delegator.set_route(self, ...) - local n, chain, route = 0, self.chain, {...} - for i = 1, #chain do - if chain[i] == self.current then - n = i - break - end - end - for i = 1, #route do - n = n + 1 - chain[n] = route[i] - end - for i = n + 1, #chain do - chain[i] = nil - end -end - -function Delegator.get(self, name) - local node = self.nodes[name] - - if type(node) == "string" then - node = load(node, name) - end - - if type(node) == "table" and getmetatable(node) == nil then - node = Compound(unpack(node)) - end - - return node -end - -function Delegator.parse(self, ...) - if self.allow_cancel and Map.formvalue(self, "cbi.cancel") then - if self:_run_hooks("on_cancel") then - return FORM_DONE - end - end - - if not Map.formvalue(self, "cbi.delg.current") then - self:_run_hooks("on_init") - end - - local newcurrent - self.chain = self.chain or self:get_chain() - self.current = self.current or self:get_active() - self.active = self.active or self:get(self.current) - assert(self.active, "Invalid state") - - local stat = FORM_DONE - if type(self.active) ~= "function" then - self.active:populate_delegator(self) - stat = self.active:parse() - else - self:active() - end - - if stat > FORM_PROCEED then - if Map.formvalue(self, "cbi.delg.back") then - newcurrent = self:get_prev(self.current) - else - newcurrent = self:get_next(self.current) - end - elseif stat < FORM_PROCEED then - return stat - end - - - if not Map.formvalue(self, "cbi.submit") then - return FORM_NODATA - elseif stat > FORM_PROCEED - and (not newcurrent or not self:get(newcurrent)) then - return self:_run_hook("on_done") or FORM_DONE - else - self.current = newcurrent or self.current - self.active = self:get(self.current) - if type(self.active) ~= "function" then - self.active:populate_delegator(self) - local stat = self.active:parse(false) - if stat == FORM_SKIP then - return self:parse(...) - else - return FORM_PROCEED - end - else - return self:parse(...) - end - end -end - -function Delegator.get_next(self, state) - for k, v in ipairs(self.chain) do - if v == state then - return self.chain[k+1] - end - end -end - -function Delegator.get_prev(self, state) - for k, v in ipairs(self.chain) do - if v == state then - return self.chain[k-1] - end - end -end - -function Delegator.get_chain(self) - local x = Map.formvalue(self, "cbi.delg.path") or self.defaultpath - return type(x) == "table" and x or {x} -end - -function Delegator.get_active(self) - return Map.formvalue(self, "cbi.delg.current") or self.chain[1] -end - ---[[ -Page - A simple node -]]-- - -Page = class(Node) -Page.__init__ = Node.__init__ -Page.parse = function() end - - ---[[ -SimpleForm - A Simple non-UCI form -]]-- -SimpleForm = class(Node) - -function SimpleForm.__init__(self, config, title, description, data) - Node.__init__(self, title, description) - self.config = config - self.data = data or {} - self.template = "cbi/simpleform" - self.dorender = true - self.pageaction = false - self.readinput = true -end - -SimpleForm.formvalue = Map.formvalue -SimpleForm.formvaluetable = Map.formvaluetable - -function SimpleForm.parse(self, readinput, ...) - self.readinput = (readinput ~= false) - - if self:formvalue("cbi.skip") then - return FORM_SKIP - end - - if self:formvalue("cbi.cancel") and self:_run_hooks("on_cancel") then - return FORM_DONE - end - - if self:submitstate() then - Node.parse(self, 1, ...) - end - - local valid = true - for k, j in ipairs(self.children) do - for i, v in ipairs(j.children) do - valid = valid - and (not v.tag_missing or not v.tag_missing[1]) - and (not v.tag_invalid or not v.tag_invalid[1]) - and (not v.error) - end - end - - local state = - not self:submitstate() and FORM_NODATA - or valid and FORM_VALID - or FORM_INVALID - - self.dorender = not self.handle - if self.handle then - local nrender, nstate = self:handle(state, self.data) - self.dorender = self.dorender or (nrender ~= false) - state = nstate or state - end - return state -end - -function SimpleForm.render(self, ...) - if self.dorender then - Node.render(self, ...) - end -end - -function SimpleForm.submitstate(self) - return self:formvalue("cbi.submit") -end - -function SimpleForm.section(self, class, ...) - if instanceof(class, AbstractSection) then - local obj = class(self, ...) - self:append(obj) - return obj - else - error("class must be a descendent of AbstractSection") - end -end - --- Creates a child field -function SimpleForm.field(self, class, ...) - local section - for k, v in ipairs(self.children) do - if instanceof(v, SimpleSection) then - section = v - break - end - end - if not section then - section = self:section(SimpleSection) - end - - if instanceof(class, AbstractValue) then - local obj = class(self, section, ...) - obj.track_missing = true - section:append(obj) - return obj - else - error("class must be a descendent of AbstractValue") - end -end - -function SimpleForm.set(self, section, option, value) - self.data[option] = value -end - - -function SimpleForm.del(self, section, option) - self.data[option] = nil -end - - -function SimpleForm.get(self, section, option) - return self.data[option] -end - - -function SimpleForm.get_scheme() - return nil -end - - -Form = class(SimpleForm) - -function Form.__init__(self, ...) - SimpleForm.__init__(self, ...) - self.embedded = true -end - - ---[[ -AbstractSection -]]-- -AbstractSection = class(Node) - -function AbstractSection.__init__(self, map, sectiontype, ...) - Node.__init__(self, ...) - self.sectiontype = sectiontype - self.map = map - self.config = map.config - self.optionals = {} - self.defaults = {} - self.fields = {} - self.tag_error = {} - self.tag_invalid = {} - self.tag_deperror = {} - self.changed = false - - self.optional = true - self.addremove = false - self.dynamic = false -end - --- Define a tab for the section -function AbstractSection.tab(self, tab, title, desc) - self.tabs = self.tabs or { } - self.tab_names = self.tab_names or { } - - self.tab_names[#self.tab_names+1] = tab - self.tabs[tab] = { - title = title, - description = desc, - childs = { } - } -end - --- Check whether the section has tabs -function AbstractSection.has_tabs(self) - return (self.tabs ~= nil) and (next(self.tabs) ~= nil) -end - --- Appends a new option -function AbstractSection.option(self, class, option, ...) - if instanceof(class, AbstractValue) then - local obj = class(self.map, self, option, ...) - self:append(obj) - self.fields[option] = obj - return obj - elseif class == true then - error("No valid class was given and autodetection failed.") - else - error("class must be a descendant of AbstractValue") - end -end - --- Appends a new tabbed option -function AbstractSection.taboption(self, tab, ...) - - assert(tab and self.tabs and self.tabs[tab], - "Cannot assign option to not existing tab %q" % tostring(tab)) - - local l = self.tabs[tab].childs - local o = AbstractSection.option(self, ...) - - if o then l[#l+1] = o end - - return o -end - --- Render a single tab -function AbstractSection.render_tab(self, tab, ...) - - assert(tab and self.tabs and self.tabs[tab], - "Cannot render not existing tab %q" % tostring(tab)) - - local k, node - for k, node in ipairs(self.tabs[tab].childs) do - node.last_child = (k == #self.tabs[tab].childs) - node.index = k - node:render(...) - end -end - --- Parse optional options -function AbstractSection.parse_optionals(self, section, noparse) - if not self.optional then - return - end - - self.optionals[section] = {} - - local field = nil - if not noparse then - field = self.map:formvalue("cbi.opt."..self.config.."."..section) - end - - for k,v in ipairs(self.children) do - if v.optional and not v:cfgvalue(section) and not self:has_tabs() then - if field == v.option then - field = nil - self.map.proceed = true - else - table.insert(self.optionals[section], v) - end - end - end - - if field and #field > 0 and self.dynamic then - self:add_dynamic(field) - end -end - --- Add a dynamic option -function AbstractSection.add_dynamic(self, field, optional) - local o = self:option(Value, field, field) - o.optional = optional -end - --- Parse all dynamic options -function AbstractSection.parse_dynamic(self, section) - if not self.dynamic then - return - end - - local arr = luci.util.clone(self:cfgvalue(section)) - local form = self.map:formvaluetable("cbid."..self.config.."."..section) - for k, v in pairs(form) do - arr[k] = v - end - - for key,val in pairs(arr) do - local create = true - - for i,c in ipairs(self.children) do - if c.option == key then - create = false - end - end - - if create and key:sub(1, 1) ~= "." then - self.map.proceed = true - self:add_dynamic(key, true) - end - end -end - --- Returns the section's UCI table -function AbstractSection.cfgvalue(self, section) - return self.map:get(section) -end - --- Push events -function AbstractSection.push_events(self) - --luci.util.append(self.map.events, self.events) - self.map.changed = true -end - --- Removes the section -function AbstractSection.remove(self, section) - self.map.proceed = true - return self.map:del(section) -end - --- Creates the section -function AbstractSection.create(self, section) - local stat - - if section then - stat = section:match("^[%w_]+$") and self.map:set(section, nil, self.sectiontype) - else - section = self.map:add(self.sectiontype) - stat = section - end - - if stat then - for k,v in pairs(self.children) do - if v.default then - self.map:set(section, v.option, v.default) - end - end - - for k,v in pairs(self.defaults) do - self.map:set(section, k, v) - end - end - - self.map.proceed = true - - return stat -end - - -SimpleSection = class(AbstractSection) - -function SimpleSection.__init__(self, form, ...) - AbstractSection.__init__(self, form, nil, ...) - self.template = "cbi/nullsection" -end - - -Table = class(AbstractSection) - -function Table.__init__(self, form, data, ...) - local datasource = {} - local tself = self - datasource.config = "table" - self.data = data or {} - - datasource.formvalue = Map.formvalue - datasource.formvaluetable = Map.formvaluetable - datasource.readinput = true - - function datasource.get(self, section, option) - return tself.data[section] and tself.data[section][option] - end - - function datasource.submitstate(self) - return Map.formvalue(self, "cbi.submit") - end - - function datasource.del(...) - return true - end - - function datasource.get_scheme() - return nil - end - - AbstractSection.__init__(self, datasource, "table", ...) - self.template = "cbi/tblsection" - self.rowcolors = true - self.anonymous = true -end - -function Table.parse(self, readinput) - self.map.readinput = (readinput ~= false) - for i, k in ipairs(self:cfgsections()) do - if self.map:submitstate() then - Node.parse(self, k) - end - end -end - -function Table.cfgsections(self) - local sections = {} - - for i, v in luci.util.kspairs(self.data) do - table.insert(sections, i) - end - - return sections -end - -function Table.update(self, data) - self.data = data -end - - - ---[[ -NamedSection - A fixed configuration section defined by its name -]]-- -NamedSection = class(AbstractSection) - -function NamedSection.__init__(self, map, section, stype, ...) - AbstractSection.__init__(self, map, stype, ...) - - -- Defaults - self.addremove = false - self.template = "cbi/nsection" - self.section = section -end - -function NamedSection.prepare(self) - AbstractSection.prepare(self) - AbstractSection.parse_optionals(self, self.section, true) -end - -function NamedSection.parse(self, novld) - local s = self.section - local active = self:cfgvalue(s) - - if self.addremove then - local path = self.config.."."..s - if active then -- Remove the section - if self.map:formvalue("cbi.rns."..path) and self:remove(s) then - self:push_events() - return - end - else -- Create and apply default values - if self.map:formvalue("cbi.cns."..path) then - self:create(s) - return - end - end - end - - if active then - AbstractSection.parse_dynamic(self, s) - if self.map:submitstate() then - Node.parse(self, s) - end - AbstractSection.parse_optionals(self, s) - - if self.changed then - self:push_events() - end - end -end - - ---[[ -TypedSection - A (set of) configuration section(s) defined by the type - addremove: Defines whether the user can add/remove sections of this type - anonymous: Allow creating anonymous sections - validate: a validation function returning nil if the section is invalid -]]-- -TypedSection = class(AbstractSection) - -function TypedSection.__init__(self, map, type, ...) - AbstractSection.__init__(self, map, type, ...) - - self.template = "cbi/tsection" - self.deps = {} - self.anonymous = false -end - -function TypedSection.prepare(self) - AbstractSection.prepare(self) - - local i, s - for i, s in ipairs(self:cfgsections()) do - AbstractSection.parse_optionals(self, s, true) - end -end - --- Return all matching UCI sections for this TypedSection -function TypedSection.cfgsections(self) - local sections = {} - self.map.uci:foreach(self.map.config, self.sectiontype, - function (section) - if self:checkscope(section[".name"]) then - table.insert(sections, section[".name"]) - end - end) - - return sections -end - --- Limits scope to sections that have certain option => value pairs -function TypedSection.depends(self, option, value) - table.insert(self.deps, {option=option, value=value}) -end - -function TypedSection.parse(self, novld) - if self.addremove then - -- Remove - local crval = REMOVE_PREFIX .. self.config - local name = self.map:formvaluetable(crval) - for k,v in pairs(name) do - if k:sub(-2) == ".x" then - k = k:sub(1, #k - 2) - end - if self:cfgvalue(k) and self:checkscope(k) then - self:remove(k) - end - end - end - - local co - for i, k in ipairs(self:cfgsections()) do - AbstractSection.parse_dynamic(self, k) - if self.map:submitstate() then - Node.parse(self, k, novld) - end - AbstractSection.parse_optionals(self, k) - end - - if self.addremove then - -- Create - local created - local crval = CREATE_PREFIX .. self.config .. "." .. self.sectiontype - local origin, name = next(self.map:formvaluetable(crval)) - if self.anonymous then - if name then - created = self:create(nil, origin) - end - else - if name then - -- Ignore if it already exists - if self:cfgvalue(name) then - name = nil; - end - - name = self:checkscope(name) - - if not name then - self.err_invalid = true - end - - if name and #name > 0 then - created = self:create(name, origin) and name - if not created then - self.invalid_cts = true - end - end - end - end - - if created then - AbstractSection.parse_optionals(self, created) - end - end - - if self.sortable then - local stval = RESORT_PREFIX .. self.config .. "." .. self.sectiontype - local order = self.map:formvalue(stval) - if order and #order > 0 then - local sid - local num = 0 - for sid in util.imatch(order) do - self.map.uci:reorder(self.config, sid, num) - num = num + 1 - end - self.changed = (num > 0) - end - end - - if created or self.changed then - self:push_events() - end -end - --- Verifies scope of sections -function TypedSection.checkscope(self, section) - -- Check if we are not excluded - if self.filter and not self:filter(section) then - return nil - end - - -- Check if at least one dependency is met - if #self.deps > 0 and self:cfgvalue(section) then - local stat = false - - for k, v in ipairs(self.deps) do - if self:cfgvalue(section)[v.option] == v.value then - stat = true - end - end - - if not stat then - return nil - end - end - - return self:validate(section) -end - - --- Dummy validate function -function TypedSection.validate(self, section) - return section -end - - ---[[ -AbstractValue - An abstract Value Type - null: Value can be empty - valid: A function returning the value if it is valid otherwise nil - depends: A table of option => value pairs of which one must be true - default: The default value - size: The size of the input fields - rmempty: Unset value if empty - optional: This value is optional (see AbstractSection.optionals) -]]-- -AbstractValue = class(Node) - -function AbstractValue.__init__(self, map, section, option, ...) - Node.__init__(self, ...) - self.section = section - self.option = option - self.map = map - self.config = map.config - self.tag_invalid = {} - self.tag_missing = {} - self.tag_reqerror = {} - self.tag_error = {} - self.deps = {} - --self.cast = "string" - - self.track_missing = false - self.rmempty = true - self.default = nil - self.size = nil - self.optional = false -end - -function AbstractValue.prepare(self) - self.cast = self.cast or "string" -end - --- Add a dependencie to another section field -function AbstractValue.depends(self, field, value) - local deps - if type(field) == "string" then - deps = {} - deps[field] = value - else - deps = field - end - - table.insert(self.deps, deps) -end - --- Serialize dependencies -function AbstractValue.deplist2json(self, section, deplist) - local deps, i, d = { } - - if type(self.deps) == "table" then - for i, d in ipairs(deplist or self.deps) do - local a, k, v = { } - for k, v in pairs(d) do - if k:find("!", 1, true) then - a[k] = v - elseif k:find(".", 1, true) then - a['cbid.%s' % k] = v - else - a['cbid.%s.%s.%s' %{ self.config, section, k }] = v - end - end - deps[#deps+1] = a - end - end - - return util.serialize_json(deps) -end - --- Generates the unique CBID -function AbstractValue.cbid(self, section) - return "cbid."..self.map.config.."."..section.."."..self.option -end - --- Return whether this object should be created -function AbstractValue.formcreated(self, section) - local key = "cbi.opt."..self.config.."."..section - return (self.map:formvalue(key) == self.option) -end - --- Returns the formvalue for this object -function AbstractValue.formvalue(self, section) - return self.map:formvalue(self:cbid(section)) -end - -function AbstractValue.additional(self, value) - self.optional = value -end - -function AbstractValue.mandatory(self, value) - self.rmempty = not value -end - -function AbstractValue.add_error(self, section, type, msg) - self.error = self.error or { } - self.error[section] = msg or type - - self.section.error = self.section.error or { } - self.section.error[section] = self.section.error[section] or { } - table.insert(self.section.error[section], msg or type) - - if type == "invalid" then - self.tag_invalid[section] = true - elseif type == "missing" then - self.tag_missing[section] = true - end - - self.tag_error[section] = true - self.map.save = false -end - -function AbstractValue.parse(self, section, novld) - local fvalue = self:formvalue(section) - local cvalue = self:cfgvalue(section) - - -- If favlue and cvalue are both tables and have the same content - -- make them identical - if type(fvalue) == "table" and type(cvalue) == "table" then - local equal = #fvalue == #cvalue - if equal then - for i=1, #fvalue do - if cvalue[i] ~= fvalue[i] then - equal = false - end - end - end - if equal then - fvalue = cvalue - end - end - - if fvalue and #fvalue > 0 then -- If we have a form value, write it to UCI - local val_err - fvalue, val_err = self:validate(fvalue, section) - fvalue = self:transform(fvalue) - - if not fvalue and not novld then - self:add_error(section, "invalid", val_err) - end - - if fvalue and (self.forcewrite or not (fvalue == cvalue)) then - if self:write(section, fvalue) then - -- Push events - self.section.changed = true - --luci.util.append(self.map.events, self.events) - end - end - else -- Unset the UCI or error - if self.rmempty or self.optional then - if self:remove(section) then - -- Push events - self.section.changed = true - --luci.util.append(self.map.events, self.events) - end - elseif cvalue ~= fvalue and not novld then - -- trigger validator with nil value to get custom user error msg. - local _, val_err = self:validate(nil, section) - self:add_error(section, "missing", val_err) - end - end -end - --- Render if this value exists or if it is mandatory -function AbstractValue.render(self, s, scope) - if not self.optional or self.section:has_tabs() or self:cfgvalue(s) or self:formcreated(s) then - scope = scope or {} - scope.section = s - scope.cbid = self:cbid(s) - Node.render(self, scope) - end -end - --- Return the UCI value of this object -function AbstractValue.cfgvalue(self, section) - local value - if self.tag_error[section] then - value = self:formvalue(section) - else - value = self.map:get(section, self.option) - end - - if not value then - return nil - elseif not self.cast or self.cast == type(value) then - return value - elseif self.cast == "string" then - if type(value) == "table" then - return value[1] - end - elseif self.cast == "table" then - return { value } - end -end - --- Validate the form value -function AbstractValue.validate(self, value) - if self.datatype and value then - if type(value) == "table" then - local v - for _, v in ipairs(value) do - if v and #v > 0 and not verify_datatype(self.datatype, v) then - return nil - end - end - else - if not verify_datatype(self.datatype, value) then - return nil - end - end - end - - return value -end - -AbstractValue.transform = AbstractValue.validate - - --- Write to UCI -function AbstractValue.write(self, section, value) - return self.map:set(section, self.option, value) -end - --- Remove from UCI -function AbstractValue.remove(self, section) - return self.map:del(section, self.option) -end - - - - ---[[ -Value - A one-line value - maxlength: The maximum length -]]-- -Value = class(AbstractValue) - -function Value.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/value" - self.keylist = {} - self.vallist = {} - self.readonly = nil -end - -function Value.reset_values(self) - self.keylist = {} - self.vallist = {} -end - -function Value.value(self, key, val) - val = val or key - table.insert(self.keylist, tostring(key)) - table.insert(self.vallist, tostring(val)) -end - -function Value.parse(self, section, novld) - if self.readonly then return end - AbstractValue.parse(self, section, novld) -end - --- DummyValue - This does nothing except being there -DummyValue = class(AbstractValue) - -function DummyValue.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/dvalue" - self.value = nil -end - -function DummyValue.cfgvalue(self, section) - local value - if self.value then - if type(self.value) == "function" then - value = self:value(section) - else - value = self.value - end - else - value = AbstractValue.cfgvalue(self, section) - end - return value -end - -function DummyValue.parse(self) - -end - - ---[[ -Flag - A flag being enabled or disabled -]]-- -Flag = class(AbstractValue) - -function Flag.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/fvalue" - - self.enabled = "1" - self.disabled = "0" - self.default = self.disabled -end - --- A flag can only have two states: set or unset -function Flag.parse(self, section, novld) - local fexists = self.map:formvalue( - FEXIST_PREFIX .. self.config .. "." .. section .. "." .. self.option) - - if fexists then - local fvalue = self:formvalue(section) and self.enabled or self.disabled - local cvalue = self:cfgvalue(section) - local val_err - fvalue, val_err = self:validate(fvalue, section) - if not fvalue then - if not novld then - self:add_error(section, "invalid", val_err) - end - return - end - if fvalue == self.default and (self.optional or self.rmempty) then - self:remove(section) - else - self:write(section, fvalue) - end - if (fvalue ~= cvalue) then self.section.changed = true end - else - self:remove(section) - self.section.changed = true - end -end - -function Flag.cfgvalue(self, section) - return AbstractValue.cfgvalue(self, section) or self.default -end -function Flag.validate(self, value) - return value -end - ---[[ -ListValue - A one-line value predefined in a list - widget: The widget that will be used (select, radio) -]]-- -ListValue = class(AbstractValue) - -function ListValue.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/lvalue" - - self.size = 1 - self.widget = "select" - - self:reset_values() -end - -function ListValue.reset_values(self) - self.keylist = {} - self.vallist = {} - self.deplist = {} -end - -function ListValue.value(self, key, val, ...) - if luci.util.contains(self.keylist, key) then - return - end - - val = val or key - table.insert(self.keylist, tostring(key)) - table.insert(self.vallist, tostring(val)) - table.insert(self.deplist, {...}) -end - -function ListValue.validate(self, val) - if luci.util.contains(self.keylist, val) then - return val - else - return nil - end -end - - - ---[[ -MultiValue - Multiple delimited values - widget: The widget that will be used (select, checkbox) - delimiter: The delimiter that will separate the values (default: " ") -]]-- -MultiValue = class(AbstractValue) - -function MultiValue.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/mvalue" - - self.widget = "checkbox" - self.delimiter = " " - - self:reset_values() -end - -function MultiValue.render(self, ...) - if self.widget == "select" and not self.size then - self.size = #self.vallist - end - - AbstractValue.render(self, ...) -end - -function MultiValue.reset_values(self) - self.keylist = {} - self.vallist = {} - self.deplist = {} -end - -function MultiValue.value(self, key, val) - if luci.util.contains(self.keylist, key) then - return - end - - val = val or key - table.insert(self.keylist, tostring(key)) - table.insert(self.vallist, tostring(val)) -end - -function MultiValue.valuelist(self, section) - local val = self:cfgvalue(section) - - if not(type(val) == "string") then - return {} - end - - return luci.util.split(val, self.delimiter) -end - -function MultiValue.validate(self, val) - val = (type(val) == "table") and val or {val} - - local result - - for i, value in ipairs(val) do - if luci.util.contains(self.keylist, value) then - result = result and (result .. self.delimiter .. value) or value - end - end - - return result -end - - -StaticList = class(MultiValue) - -function StaticList.__init__(self, ...) - MultiValue.__init__(self, ...) - self.cast = "table" - self.valuelist = self.cfgvalue - - if not self.override_scheme - and self.map:get_scheme(self.section.sectiontype, self.option) then - local vs = self.map:get_scheme(self.section.sectiontype, self.option) - if self.value and vs.values and not self.override_values then - for k, v in pairs(vs.values) do - self:value(k, v) - end - end - end -end - -function StaticList.validate(self, value) - value = (type(value) == "table") and value or {value} - - local valid = {} - for i, v in ipairs(value) do - if luci.util.contains(self.keylist, v) then - table.insert(valid, v) - end - end - return valid -end - - -DynamicList = class(AbstractValue) - -function DynamicList.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/dynlist" - self.cast = "table" - self:reset_values() -end - -function DynamicList.reset_values(self) - self.keylist = {} - self.vallist = {} -end - -function DynamicList.value(self, key, val) - val = val or key - table.insert(self.keylist, tostring(key)) - table.insert(self.vallist, tostring(val)) -end - -function DynamicList.write(self, section, value) - local t = { } - - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - t[#t+1] = x - end - end - else - t = { value } - end - - if self.cast == "string" then - value = table.concat(t, " ") - else - value = t - end - - return AbstractValue.write(self, section, value) -end - -function DynamicList.cfgvalue(self, section) - local value = AbstractValue.cfgvalue(self, section) - - if type(value) == "string" then - local x - local t = { } - for x in value:gmatch("%S+") do - if #x > 0 then - t[#t+1] = x - end - end - value = t - end - - return value -end - -function DynamicList.formvalue(self, section) - local value = AbstractValue.formvalue(self, section) - - if type(value) == "string" then - if self.cast == "string" then - local x - local t = { } - for x in value:gmatch("%S+") do - t[#t+1] = x - end - value = t - else - value = { value } - end - end - - return value -end - - ---[[ -TextValue - A multi-line value - rows: Rows -]]-- -TextValue = class(AbstractValue) - -function TextValue.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/tvalue" -end - ---[[ -Button -]]-- -Button = class(AbstractValue) - -function Button.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/button" - self.inputstyle = nil - self.rmempty = true - self.unsafeupload = false -end - - -FileUpload = class(AbstractValue) - -function FileUpload.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/upload" - if not self.map.upload_fields then - self.map.upload_fields = { self } - else - self.map.upload_fields[#self.map.upload_fields+1] = self - end -end - -function FileUpload.formcreated(self, section) - if self.unsafeupload then - return AbstractValue.formcreated(self, section) or - self.map:formvalue("cbi.rlf."..section.."."..self.option) or - self.map:formvalue("cbi.rlf."..section.."."..self.option..".x") or - self.map:formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox") - else - return AbstractValue.formcreated(self, section) or - self.map:formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox") - end -end - -function FileUpload.cfgvalue(self, section) - local val = AbstractValue.cfgvalue(self, section) - if val and fs.access(val) then - return val - end - return nil -end - --- If we have a new value, use it --- otherwise use old value --- deletion should be managed by a separate button object --- unless self.unsafeupload is set in which case if the user --- choose to remove the old file we do so. --- Also, allow to specify (via textbox) a file already on router -function FileUpload.formvalue(self, section) - local val = AbstractValue.formvalue(self, section) - if val then - if self.unsafeupload then - if not self.map:formvalue("cbi.rlf."..section.."."..self.option) and - not self.map:formvalue("cbi.rlf."..section.."."..self.option..".x") - then - return val - end - fs.unlink(val) - self.value = nil - return nil - elseif val ~= "" then - return val - end - end - val = luci.http.formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox") - if val == "" then - val = nil - end - if not self.unsafeupload then - if not val then - val = self.map:formvalue("cbi.rlf."..section.."."..self.option) - end - end - return val -end - -function FileUpload.remove(self, section) - if self.unsafeupload then - local val = AbstractValue.formvalue(self, section) - if val and fs.access(val) then fs.unlink(val) end - return AbstractValue.remove(self, section) - else - return nil - end -end - -FileBrowser = class(AbstractValue) - -function FileBrowser.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/browser" -end diff --git a/package/luci/modules/luci-base/luasrc/cbi/datatypes.lua b/package/luci/modules/luci-base/luasrc/cbi/datatypes.lua deleted file mode 100644 index df23aaf135..0000000000 --- a/package/luci/modules/luci-base/luasrc/cbi/datatypes.lua +++ /dev/null @@ -1,473 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Copyright 2017 Dan Luedtke --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local ip = require "luci.ip" -local math = require "math" -local util = require "luci.util" -local tonumber, tostring, type, unpack, select = tonumber, tostring, type, unpack, select - - -module "luci.cbi.datatypes" - - -_M['or'] = function(v, ...) - local i - for i = 1, select('#', ...), 2 do - local f = select(i, ...) - local a = select(i+1, ...) - if type(f) ~= "function" then - if f == v then - return true - end - i = i - 1 - elseif f(v, unpack(a)) then - return true - end - end - return false -end - -_M['and'] = function(v, ...) - local i - for i = 1, select('#', ...), 2 do - local f = select(i, ...) - local a = select(i+1, ...) - if type(f) ~= "function" then - if f ~= v then - return false - end - i = i - 1 - elseif not f(v, unpack(a)) then - return false - end - end - return true -end - -function neg(v, ...) - return _M['or'](v:gsub("^%s*!%s*", ""), ...) -end - -function list(v, subvalidator, subargs) - if type(subvalidator) ~= "function" then - return false - end - local token - for token in v:gmatch("%S+") do - if not subvalidator(token, unpack(subargs)) then - return false - end - end - return true -end - -function bool(val) - if val == "1" or val == "yes" or val == "on" or val == "true" then - return true - elseif val == "0" or val == "no" or val == "off" or val == "false" then - return true - elseif val == "" or val == nil then - return true - end - - return false -end - -function uinteger(val) - local n = tonumber(val) - if n ~= nil and math.floor(n) == n and n >= 0 then - return true - end - - return false -end - -function integer(val) - local n = tonumber(val) - if n ~= nil and math.floor(n) == n then - return true - end - - return false -end - -function ufloat(val) - local n = tonumber(val) - return ( n ~= nil and n >= 0 ) -end - -function float(val) - return ( tonumber(val) ~= nil ) -end - -function ipaddr(val) - return ip4addr(val) or ip6addr(val) -end - -function ip4addr(val) - if val then - return ip.IPv4(val) and true or false - end - - return false -end - -function ip4prefix(val) - val = tonumber(val) - return ( val and val >= 0 and val <= 32 ) -end - -function ip6addr(val) - if val then - return ip.IPv6(val) and true or false - end - - return false -end - -function ip6prefix(val) - val = tonumber(val) - return ( val and val >= 0 and val <= 128 ) -end - -function cidr4(val) - local ip, mask = val:match("^([^/]+)/([^/]+)$") - - return ip4addr(ip) and ip4prefix(mask) -end - -function cidr6(val) - local ip, mask = val:match("^([^/]+)/([^/]+)$") - - return ip6addr(ip) and ip6prefix(mask) -end - -function ipnet4(val) - local ip, mask = val:match("^([^/]+)/([^/]+)$") - - return ip4addr(ip) and ip4addr(mask) -end - -function ipnet6(val) - local ip, mask = val:match("^([^/]+)/([^/]+)$") - - return ip6addr(ip) and ip6addr(mask) -end - -function ipmask(val) - return ipmask4(val) or ipmask6(val) -end - -function ipmask4(val) - return cidr4(val) or ipnet4(val) or ip4addr(val) -end - -function ipmask6(val) - return cidr6(val) or ipnet6(val) or ip6addr(val) -end - -function ip6hostid(val) - if val and val:match("^[a-fA-F0-9:]+$") and (#val > 2) then - return (ip6addr("2001:db8:0:0" .. val) or ip6addr("2001:db8:0:0:" .. val)) - end - - return false -end - -function port(val) - val = tonumber(val) - return ( val and val >= 0 and val <= 65535 ) -end - -function portrange(val) - local p1, p2 = val:match("^(%d+)%-(%d+)$") - if p1 and p2 and port(p1) and port(p2) then - return true - else - return port(val) - end -end - -function macaddr(val) - if val and val:match( - "^[a-fA-F0-9]+:[a-fA-F0-9]+:[a-fA-F0-9]+:" .. - "[a-fA-F0-9]+:[a-fA-F0-9]+:[a-fA-F0-9]+$" - ) then - local parts = util.split( val, ":" ) - - for i = 1,6 do - parts[i] = tonumber( parts[i], 16 ) - if parts[i] < 0 or parts[i] > 255 then - return false - end - end - - return true - end - - return false -end - -function hostname(val) - if val and (#val < 254) and ( - val:match("^[a-zA-Z_]+$") or - (val:match("^[a-zA-Z0-9_][a-zA-Z0-9_%-%.]*[a-zA-Z0-9]$") and - val:match("[^0-9%.]")) - ) then - return true - end - return false -end - -function host(val, ipv4only) - return hostname(val) or ((ipv4only == 1) and ip4addr(val)) or ((not (ipv4only == 1)) and ipaddr(val)) -end - -function network(val) - return uciname(val) or host(val) -end - -function hostport(val, ipv4only) - local h, p = val:match("^([^:]+):([^:]+)$") - return not not (h and p and host(h, ipv4only) and port(p)) -end - -function ip4addrport(val, bracket) - local h, p = val:match("^([^:]+):([^:]+)$") - return (h and p and ip4addr(h) and port(p)) -end - -function ip4addrport(val) - local h, p = val:match("^([^:]+):([^:]+)$") - return (h and p and ip4addr(h) and port(p)) -end - -function ipaddrport(val, bracket) - local h, p = val:match("^([^%[%]:]+):([^:]+)$") - if (h and p and ip4addr(h) and port(p)) then - return true - elseif (bracket == 1) then - h, p = val:match("^%[(.+)%]:([^:]+)$") - if (h and p and ip6addr(h) and port(p)) then - return true - end - end - h, p = val:match("^([^%[%]]+):([^:]+)$") - return (h and p and ip6addr(h) and port(p)) -end - -function wpakey(val) - if #val == 64 then - return (val:match("^[a-fA-F0-9]+$") ~= nil) - else - return (#val >= 8) and (#val <= 63) - end -end - -function wepkey(val) - if val:sub(1, 2) == "s:" then - val = val:sub(3) - end - - if (#val == 10) or (#val == 26) then - return (val:match("^[a-fA-F0-9]+$") ~= nil) - else - return (#val == 5) or (#val == 13) - end -end - -function hexstring(val) - if val then - return (val:match("^[a-fA-F0-9]+$") ~= nil) - end - return false -end - -function hex(val, maxbytes) - maxbytes = tonumber(maxbytes) - if val and maxbytes ~= nil then - return ((val:match("^0x[a-fA-F0-9]+$") ~= nil) and (#val <= 2 + maxbytes * 2)) - end - return false -end - -function base64(val) - if val then - return (val:match("^[a-zA-Z0-9/+]+=?=?$") ~= nil) and (math.fmod(#val, 4) == 0) - end - return false -end - -function string(val) - return true -- Everything qualifies as valid string -end - -function directory(val, seen) - local s = fs.stat(val) - seen = seen or { } - - if s and not seen[s.ino] then - seen[s.ino] = true - if s.type == "dir" then - return true - elseif s.type == "lnk" then - return directory( fs.readlink(val), seen ) - end - end - - return false -end - -function file(val, seen) - local s = fs.stat(val) - seen = seen or { } - - if s and not seen[s.ino] then - seen[s.ino] = true - if s.type == "reg" then - return true - elseif s.type == "lnk" then - return file( fs.readlink(val), seen ) - end - end - - return false -end - -function device(val, seen) - local s = fs.stat(val) - seen = seen or { } - - if s and not seen[s.ino] then - seen[s.ino] = true - if s.type == "chr" or s.type == "blk" then - return true - elseif s.type == "lnk" then - return device( fs.readlink(val), seen ) - end - end - - return false -end - -function uciname(val) - return (val:match("^[a-zA-Z0-9_]+$") ~= nil) -end - -function range(val, min, max) - val = tonumber(val) - min = tonumber(min) - max = tonumber(max) - - if val ~= nil and min ~= nil and max ~= nil then - return ((val >= min) and (val <= max)) - end - - return false -end - -function min(val, min) - val = tonumber(val) - min = tonumber(min) - - if val ~= nil and min ~= nil then - return (val >= min) - end - - return false -end - -function max(val, max) - val = tonumber(val) - max = tonumber(max) - - if val ~= nil and max ~= nil then - return (val <= max) - end - - return false -end - -function rangelength(val, min, max) - val = tostring(val) - min = tonumber(min) - max = tonumber(max) - - if val ~= nil and min ~= nil and max ~= nil then - return ((#val >= min) and (#val <= max)) - end - - return false -end - -function minlength(val, min) - val = tostring(val) - min = tonumber(min) - - if val ~= nil and min ~= nil then - return (#val >= min) - end - - return false -end - -function maxlength(val, max) - val = tostring(val) - max = tonumber(max) - - if val ~= nil and max ~= nil then - return (#val <= max) - end - - return false -end - -function phonedigit(val) - return (val:match("^[0-9\*#!%.]+$") ~= nil) -end - -function timehhmmss(val) - return (val:match("^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$") ~= nil) -end - -function dateyyyymmdd(val) - if val ~= nil then - yearstr, monthstr, daystr = val:match("^(%d%d%d%d)-(%d%d)-(%d%d)$") - if (yearstr == nil) or (monthstr == nil) or (daystr == nil) then - return false; - end - year = tonumber(yearstr) - month = tonumber(monthstr) - day = tonumber(daystr) - if (year == nil) or (month == nil) or (day == nil) then - return false; - end - - local days_in_month = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } - - local function is_leap_year(year) - return (year % 4 == 0) and ((year % 100 ~= 0) or (year % 400 == 0)) - end - - function get_days_in_month(month, year) - if (month == 2) and is_leap_year(year) then - return 29 - else - return days_in_month[month] - end - end - if (year < 2015) then - return false - end - if ((month == 0) or (month > 12)) then - return false - end - if ((day == 0) or (day > get_days_in_month(month, year))) then - return false - end - return true - end - return false -end diff --git a/package/luci/modules/luci-base/luasrc/ccache.lua b/package/luci/modules/luci-base/luasrc/ccache.lua deleted file mode 100644 index bcc76e6a7b..0000000000 --- a/package/luci/modules/luci-base/luasrc/ccache.lua +++ /dev/null @@ -1,76 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local io = require "io" -local fs = require "nixio.fs" -local util = require "luci.util" -local nixio = require "nixio" -local debug = require "debug" -local string = require "string" -local package = require "package" - -local type, loadfile = type, loadfile - - -module "luci.ccache" - -function cache_ondemand(...) - if debug.getinfo(1, 'S').source ~= "=?" then - cache_enable(...) - end -end - -function cache_enable(cachepath, mode) - cachepath = cachepath or "/tmp/luci-modulecache" - mode = mode or "r--r--r--" - - local loader = package.loaders[2] - local uid = nixio.getuid() - - if not fs.stat(cachepath) then - fs.mkdir(cachepath) - end - - local function _encode_filename(name) - local encoded = "" - for i=1, #name do - encoded = encoded .. ("%2X" % string.byte(name, i)) - end - return encoded - end - - local function _load_sane(file) - local stat = fs.stat(file) - if stat and stat.uid == uid and stat.modestr == mode then - return loadfile(file) - end - end - - local function _write_sane(file, func) - if nixio.getuid() == uid then - local fp = io.open(file, "w") - if fp then - fp:write(util.get_bytecode(func)) - fp:close() - fs.chmod(file, mode) - end - end - end - - package.loaders[2] = function(mod) - local encoded = cachepath .. "/" .. _encode_filename(mod) - local modcons = _load_sane(encoded) - - if modcons then - return modcons - end - - -- No cachefile - modcons = loader(mod) - if type(modcons) == "function" then - _write_sane(encoded, modcons) - end - return modcons - end -end diff --git a/package/luci/modules/luci-base/luasrc/config.lua b/package/luci/modules/luci-base/luasrc/config.lua deleted file mode 100644 index d01153f4f5..0000000000 --- a/package/luci/modules/luci-base/luasrc/config.lua +++ /dev/null @@ -1,18 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -module("luci.config", - function(m) - if pcall(require, "luci.model.uci") then - local config = util.threadlocal() - setmetatable(m, { - __index = function(tbl, key) - if not config[key] then - config[key] = luci.model.uci.cursor():get_all("luci", key) - end - return config[key] - end - }) - end - end) diff --git a/package/luci/modules/luci-base/luasrc/controller/admin/servicectl.lua b/package/luci/modules/luci-base/luasrc/controller/admin/servicectl.lua deleted file mode 100644 index 1d73eb4ecc..0000000000 --- a/package/luci/modules/luci-base/luasrc/controller/admin/servicectl.lua +++ /dev/null @@ -1,49 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.servicectl", package.seeall) - -function index() - entry({"servicectl"}, alias("servicectl", "status")).sysauth = "root" - entry({"servicectl", "status"}, call("action_status")).leaf = true - entry({"servicectl", "restart"}, post("action_restart")).leaf = true -end - -function action_status() - local data = nixio.fs.readfile("/var/run/luci-reload-status") - if data then - luci.http.write("/etc/config/") - luci.http.write(data) - else - luci.http.write("finish") - end -end - -function action_restart(args) - local uci = require "luci.model.uci".cursor() - if args then - local service - local services = { } - - for service in args:gmatch("[%w_-]+") do - services[#services+1] = service - end - - local command = uci:apply(services, true) - if nixio.fork() == 0 then - local i = nixio.open("/dev/null", "r") - local o = nixio.open("/dev/null", "w") - - nixio.dup(i, nixio.stdin) - nixio.dup(o, nixio.stdout) - - i:close() - o:close() - - nixio.exec("/bin/sh", unpack(command)) - else - luci.http.write("OK") - os.exit(0) - end - end -end diff --git a/package/luci/modules/luci-base/luasrc/debug.lua b/package/luci/modules/luci-base/luasrc/debug.lua deleted file mode 100644 index 8ff1bb6981..0000000000 --- a/package/luci/modules/luci-base/luasrc/debug.lua +++ /dev/null @@ -1,37 +0,0 @@ -local debug = require "debug" -local io = require "io" -local collectgarbage, floor = collectgarbage, math.floor - -module "luci.debug" -__file__ = debug.getinfo(1, 'S').source:sub(2) - --- Enables the memory tracer with given flags and returns a function to disable the tracer again -function trap_memtrace(flags, dest) - flags = flags or "clr" - local tracefile = io.open(dest or "/tmp/memtrace", "w") - local peak = 0 - - local function trap(what, line) - local info = debug.getinfo(2, "Sn") - local size = floor(collectgarbage("count")) - if size > peak then - peak = size - end - if tracefile then - tracefile:write( - "[", what, "] ", info.source, ":", (line or "?"), "\t", - (info.namewhat or ""), "\t", - (info.name or ""), "\t", - size, " (", peak, ")\n" - ) - end - end - - debug.sethook(trap, flags) - - return function() - debug.sethook() - tracefile:close() - end -end - diff --git a/package/luci/modules/luci-base/luasrc/dispatcher.lua b/package/luci/modules/luci-base/luasrc/dispatcher.lua deleted file mode 100644 index e4f77f18d8..0000000000 --- a/package/luci/modules/luci-base/luasrc/dispatcher.lua +++ /dev/null @@ -1,936 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local sys = require "luci.sys" -local util = require "luci.util" -local http = require "luci.http" -local nixio = require "nixio", require "nixio.util" - -module("luci.dispatcher", package.seeall) -context = util.threadlocal() -uci = require "luci.model.uci" -i18n = require "luci.i18n" -_M.fs = fs - --- Index table -local index = nil - --- Fastindex -local fi - - -function build_url(...) - local path = {...} - local url = { http.getenv("SCRIPT_NAME") or "" } - - local p - for _, p in ipairs(path) do - if p:match("^[a-zA-Z0-9_%-%.%%/,;]+$") then - url[#url+1] = "/" - url[#url+1] = p - end - end - - if #path == 0 then - url[#url+1] = "/" - end - - return table.concat(url, "") -end - -function node_visible(node) - if node then - return not ( - (not node.title or #node.title == 0) or - (not node.target or node.hidden == true) or - (type(node.target) == "table" and node.target.type == "firstchild" and - (type(node.nodes) ~= "table" or not next(node.nodes))) - ) - end - return false -end - -function node_childs(node) - local rv = { } - if node then - local k, v - for k, v in util.spairs(node.nodes, - function(a, b) - return (node.nodes[a].order or 100) - < (node.nodes[b].order or 100) - end) - do - if node_visible(v) then - rv[#rv+1] = k - end - end - end - return rv -end - - -function error404(message) - http.status(404, "Not Found") - message = message or "Not Found" - - require("luci.template") - if not util.copcall(luci.template.render, "error404") then - http.prepare_content("text/plain") - http.write(message) - end - return false -end - -function error500(message) - util.perror(message) - if not context.template_header_sent then - http.status(500, "Internal Server Error") - http.prepare_content("text/plain") - http.write(message) - else - require("luci.template") - if not util.copcall(luci.template.render, "error500", {message=message}) then - http.prepare_content("text/plain") - http.write(message) - end - end - return false -end - -function httpdispatch(request, prefix) - http.context.request = request - - local r = {} - context.request = r - - local pathinfo = http.urldecode(request:getenv("PATH_INFO") or "", true) - - if prefix then - for _, node in ipairs(prefix) do - r[#r+1] = node - end - end - - for node in pathinfo:gmatch("[^/]+") do - r[#r+1] = node - end - - local stat, err = util.coxpcall(function() - dispatch(context.request) - end, error500) - - http.close() - - --context._disable_memtrace() -end - -local function require_post_security(target) - if type(target) == "table" then - if type(target.post) == "table" then - local param_name, required_val, request_val - - for param_name, required_val in pairs(target.post) do - request_val = http.formvalue(param_name) - - if (type(required_val) == "string" and - request_val ~= required_val) or - (required_val == true and - (request_val == nil or request_val == "")) - then - return false - end - end - - return true - end - - return (target.post == true) - end - - return false -end - -function test_post_security() - if http.getenv("REQUEST_METHOD") ~= "POST" then - http.status(405, "Method Not Allowed") - http.header("Allow", "POST") - return false - end - - if http.formvalue("token") ~= context.authtoken then - http.status(403, "Forbidden") - luci.template.render("csrftoken") - return false - end - - return true -end - -local function session_retrieve(sid, allowed_users) - local sdat = util.ubus("session", "get", { ubus_rpc_session = sid }) - - if type(sdat) == "table" and - type(sdat.values) == "table" and - type(sdat.values.token) == "string" and - (not allowed_users or - util.contains(allowed_users, sdat.values.username)) - then - return sid, sdat.values - end - - return nil, nil -end - -local function session_setup(user, pass, allowed_users) - if util.contains(allowed_users, user) then - local login = util.ubus("session", "login", { - username = user, - password = pass, - timeout = tonumber(luci.config.sauth.sessiontime) - }) - - if type(login) == "table" and - type(login.ubus_rpc_session) == "string" - then - util.ubus("session", "set", { - ubus_rpc_session = login.ubus_rpc_session, - values = { token = sys.uniqueid(16) } - }) - - return session_retrieve(login.ubus_rpc_session) - end - end - - return nil, nil -end - -function dispatch(request) - --context._disable_memtrace = require "luci.debug".trap_memtrace("l") - local ctx = context - ctx.path = request - - local conf = require "luci.config" - assert(conf.main, - "/etc/config/luci seems to be corrupt, unable to find section 'main'") - - local i18n = require "luci.i18n" - local lang = conf.main.lang or "auto" - if lang == "auto" then - local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or "" - for aclang in aclang:gmatch("[%w_-]+") do - local country, culture = aclang:match("^([a-z][a-z])[_-]([a-zA-Z][a-zA-Z])$") - if country and culture then - local cc = "%s_%s" %{ country, culture:lower() } - if conf.languages[cc] then - lang = cc - break - elseif conf.languages[country] then - lang = country - break - end - elseif conf.languages[aclang] then - lang = aclang - break - end - end - end - if lang == "auto" then - lang = i18n.default - end - i18n.setlanguage(lang) - - local c = ctx.tree - local stat - if not c then - c = createtree() - end - - local track = {} - local args = {} - ctx.args = args - ctx.requestargs = ctx.requestargs or args - local n - local preq = {} - local freq = {} - - for i, s in ipairs(request) do - preq[#preq+1] = s - freq[#freq+1] = s - c = c.nodes[s] - n = i - if not c then - break - end - - util.update(track, c) - - if c.leaf then - break - end - end - - if c and c.leaf then - for j=n+1, #request do - args[#args+1] = request[j] - freq[#freq+1] = request[j] - end - end - - ctx.requestpath = ctx.requestpath or freq - ctx.path = preq - - if track.i18n then - i18n.loadc(track.i18n) - end - - -- Init template engine - if (c and c.index) or not track.notemplate then - local tpl = require("luci.template") - local media = track.mediaurlbase or luci.config.main.mediaurlbase - if not pcall(tpl.Template, "themes/%s/header" % fs.basename(media)) then - media = nil - for name, theme in pairs(luci.config.themes) do - if name:sub(1,1) ~= "." and pcall(tpl.Template, - "themes/%s/header" % fs.basename(theme)) then - media = theme - end - end - assert(media, "No valid theme found") - end - - local function _ifattr(cond, key, val) - if cond then - local env = getfenv(3) - local scope = (type(env.self) == "table") and env.self - if type(val) == "table" then - if not next(val) then - return '' - else - val = util.serialize_json(val) - end - end - return string.format( - ' %s="%s"', tostring(key), - util.pcdata(tostring( val - or (type(env[key]) ~= "function" and env[key]) - or (scope and type(scope[key]) ~= "function" and scope[key]) - or "" )) - ) - else - return '' - end - end - - tpl.context.viewns = setmetatable({ - write = http.write; - include = function(name) tpl.Template(name):render(getfenv(2)) end; - translate = i18n.translate; - translatef = i18n.translatef; - export = function(k, v) if tpl.context.viewns[k] == nil then tpl.context.viewns[k] = v end end; - striptags = util.striptags; - pcdata = util.pcdata; - media = media; - theme = fs.basename(media); - resource = luci.config.main.resourcebase; - ifattr = function(...) return _ifattr(...) end; - attr = function(...) return _ifattr(true, ...) end; - url = build_url; - }, {__index=function(table, key) - if key == "controller" then - return build_url() - elseif key == "REQUEST_URI" then - return build_url(unpack(ctx.requestpath)) - elseif key == "token" then - return ctx.authtoken - else - return rawget(table, key) or _G[key] - end - end}) - end - - track.dependent = (track.dependent ~= false) - assert(not track.dependent or not track.auto, - "Access Violation\nThe page at '" .. table.concat(request, "/") .. "/' " .. - "has no parent node so the access to this location has been denied.\n" .. - "This is a software bug, please report this message at " .. - "https://github.com/openwrt/luci/issues" - ) - - if track.sysauth then - local authen = track.sysauth_authenticator - local _, sid, sdat, default_user, allowed_users - - if type(authen) == "string" and authen ~= "htmlauth" then - error500("Unsupported authenticator %q configured" % authen) - return - end - - if type(track.sysauth) == "table" then - default_user, allowed_users = nil, track.sysauth - else - default_user, allowed_users = track.sysauth, { track.sysauth } - end - - if type(authen) == "function" then - _, sid = authen(sys.user.checkpasswd, allowed_users) - else - sid = http.getcookie("sysauth") - end - - sid, sdat = session_retrieve(sid, allowed_users) - - if not (sid and sdat) and authen == "htmlauth" then - local user = http.getenv("HTTP_AUTH_USER") - local pass = http.getenv("HTTP_AUTH_PASS") - - if user == nil and pass == nil then - user = http.formvalue("luci_username") - pass = http.formvalue("luci_password") - end - - sid, sdat = session_setup(user, pass, allowed_users) - - if not sid then - local tmpl = require "luci.template" - - context.path = {} - - http.status(403, "Forbidden") - tmpl.render(track.sysauth_template or "sysauth", { - duser = default_user, - fuser = user - }) - - return - end - - http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sid, build_url() }) - http.redirect(build_url(unpack(ctx.requestpath))) - end - - if not sid or not sdat then - http.status(403, "Forbidden") - return - end - - ctx.authsession = sid - ctx.authtoken = sdat.token - ctx.authuser = sdat.username - end - - if c and require_post_security(c.target) then - if not test_post_security(c) then - return - end - end - - if track.setgroup then - sys.process.setgroup(track.setgroup) - end - - if track.setuser then - sys.process.setuser(track.setuser) - end - - local target = nil - if c then - if type(c.target) == "function" then - target = c.target - elseif type(c.target) == "table" then - target = c.target.target - end - end - - if c and (c.index or type(target) == "function") then - ctx.dispatched = c - ctx.requested = ctx.requested or ctx.dispatched - end - - if c and c.index then - local tpl = require "luci.template" - - if util.copcall(tpl.render, "indexer", {}) then - return true - end - end - - if type(target) == "function" then - util.copcall(function() - local oldenv = getfenv(target) - local module = require(c.module) - local env = setmetatable({}, {__index= - - function(tbl, key) - return rawget(tbl, key) or module[key] or oldenv[key] - end}) - - setfenv(target, env) - end) - - local ok, err - if type(c.target) == "table" then - ok, err = util.copcall(target, c.target, unpack(args)) - else - ok, err = util.copcall(target, unpack(args)) - end - assert(ok, - "Failed to execute " .. (type(c.target) == "function" and "function" or c.target.type or "unknown") .. - " dispatcher target for entry '/" .. table.concat(request, "/") .. "'.\n" .. - "The called action terminated with an exception:\n" .. tostring(err or "(unknown)")) - else - local root = node() - if not root or not root.target then - error404("No root node was registered, this usually happens if no module was installed.\n" .. - "Install luci-mod-admin-full and retry. " .. - "If the module is already installed, try removing the /tmp/luci-indexcache file.") - else - error404("No page is registered at '/" .. table.concat(request, "/") .. "'.\n" .. - "If this url belongs to an extension, make sure it is properly installed.\n" .. - "If the extension was recently installed, try removing the /tmp/luci-indexcache file.") - end - end -end - -function createindex() - local controllers = { } - local base = "%s/controller/" % util.libpath() - local _, path - - for path in (fs.glob("%s*.lua" % base) or function() end) do - controllers[#controllers+1] = path - end - - for path in (fs.glob("%s*/*.lua" % base) or function() end) do - controllers[#controllers+1] = path - end - - if indexcache then - local cachedate = fs.stat(indexcache, "mtime") - if cachedate then - local realdate = 0 - for _, obj in ipairs(controllers) do - local omtime = fs.stat(obj, "mtime") - realdate = (omtime and omtime > realdate) and omtime or realdate - end - - if cachedate > realdate and sys.process.info("uid") == 0 then - assert( - sys.process.info("uid") == fs.stat(indexcache, "uid") - and fs.stat(indexcache, "modestr") == "rw-------", - "Fatal: Indexcache is not sane!" - ) - - index = loadfile(indexcache)() - return index - end - end - end - - index = {} - - for _, path in ipairs(controllers) do - local modname = "luci.controller." .. path:sub(#base+1, #path-4):gsub("/", ".") - local mod = require(modname) - assert(mod ~= true, - "Invalid controller file found\n" .. - "The file '" .. path .. "' contains an invalid module line.\n" .. - "Please verify whether the module name is set to '" .. modname .. - "' - It must correspond to the file path!") - - local idx = mod.index - assert(type(idx) == "function", - "Invalid controller file found\n" .. - "The file '" .. path .. "' contains no index() function.\n" .. - "Please make sure that the controller contains a valid " .. - "index function and verify the spelling!") - - index[modname] = idx - end - - if indexcache then - local f = nixio.open(indexcache, "w", 600) - f:writeall(util.get_bytecode(index)) - f:close() - end -end - --- Build the index before if it does not exist yet. -function createtree() - if not index then - createindex() - end - - local ctx = context - local tree = {nodes={}, inreq=true} - local modi = {} - - ctx.treecache = setmetatable({}, {__mode="v"}) - ctx.tree = tree - ctx.modifiers = modi - - -- Load default translation - require "luci.i18n".loadc("base") - - local scope = setmetatable({}, {__index = luci.dispatcher}) - - for k, v in pairs(index) do - scope._NAME = k - setfenv(v, scope) - v() - end - - local function modisort(a,b) - return modi[a].order < modi[b].order - end - - for _, v in util.spairs(modi, modisort) do - scope._NAME = v.module - setfenv(v.func, scope) - v.func() - end - - return tree -end - -function modifier(func, order) - context.modifiers[#context.modifiers+1] = { - func = func, - order = order or 0, - module - = getfenv(2)._NAME - } -end - -function assign(path, clone, title, order) - local obj = node(unpack(path)) - obj.nodes = nil - obj.module = nil - - obj.title = title - obj.order = order - - setmetatable(obj, {__index = _create_node(clone)}) - - return obj -end - -function entry(path, target, title, order) - local c = node(unpack(path)) - - c.target = target - c.title = title - c.order = order - c.module = getfenv(2)._NAME - - return c -end - --- enabling the node. -function get(...) - return _create_node({...}) -end - -function node(...) - local c = _create_node({...}) - - c.module = getfenv(2)._NAME - c.auto = nil - - return c -end - -function _create_node(path) - if #path == 0 then - return context.tree - end - - local name = table.concat(path, ".") - local c = context.treecache[name] - - if not c then - local last = table.remove(path) - local parent = _create_node(path) - - c = {nodes={}, auto=true} - -- the node is "in request" if the request path matches - -- at least up to the length of the node path - if parent.inreq and context.path[#path+1] == last then - c.inreq = true - end - parent.nodes[last] = c - context.treecache[name] = c - end - return c -end - --- Subdispatchers -- - -function _firstchild() - local path = { unpack(context.path) } - local name = table.concat(path, ".") - local node = context.treecache[name] - - local lowest - if node and node.nodes and next(node.nodes) then - local k, v - for k, v in pairs(node.nodes) do - if not lowest or - (v.order or 100) < (node.nodes[lowest].order or 100) - then - lowest = k - end - end - end - - assert(lowest ~= nil, - "The requested node contains no childs, unable to redispatch") - - path[#path+1] = lowest - dispatch(path) -end - -function firstchild() - return { type = "firstchild", target = _firstchild } -end - -function alias(...) - local req = {...} - return function(...) - for _, r in ipairs({...}) do - req[#req+1] = r - end - - dispatch(req) - end -end - -function rewrite(n, ...) - local req = {...} - return function(...) - local dispatched = util.clone(context.dispatched) - - for i=1,n do - table.remove(dispatched, 1) - end - - for i, r in ipairs(req) do - table.insert(dispatched, i, r) - end - - for _, r in ipairs({...}) do - dispatched[#dispatched+1] = r - end - - dispatch(dispatched) - end -end - - -local function _call(self, ...) - local func = getfenv()[self.name] - assert(func ~= nil, - 'Cannot resolve function "' .. self.name .. '". Is it misspelled or local?') - - assert(type(func) == "function", - 'The symbol "' .. self.name .. '" does not refer to a function but data ' .. - 'of type "' .. type(func) .. '".') - - if #self.argv > 0 then - return func(unpack(self.argv), ...) - else - return func(...) - end -end - -function call(name, ...) - return {type = "call", argv = {...}, name = name, target = _call} -end - -function post_on(params, name, ...) - return { - type = "call", - post = params, - argv = { ... }, - name = name, - target = _call - } -end - -function post(...) - return post_on(true, ...) -end - - -local _template = function(self, ...) - require "luci.template".render(self.view) -end - -function template(name) - return {type = "template", view = name, target = _template} -end - - -local function _cbi(self, ...) - local cbi = require "luci.cbi" - local tpl = require "luci.template" - local http = require "luci.http" - - local config = self.config or {} - local maps = cbi.load(self.model, ...) - - local state = nil - - for i, res in ipairs(maps) do - res.flow = config - local cstate = res:parse() - if cstate and (not state or cstate < state) then - state = cstate - end - end - - local function _resolve_path(path) - return type(path) == "table" and build_url(unpack(path)) or path - end - - if config.on_valid_to and state and state > 0 and state < 2 then - http.redirect(_resolve_path(config.on_valid_to)) - return - end - - if config.on_changed_to and state and state > 1 then - http.redirect(_resolve_path(config.on_changed_to)) - return - end - - if config.on_success_to and state and state > 0 then - http.redirect(_resolve_path(config.on_success_to)) - return - end - - if config.state_handler then - if not config.state_handler(state, maps) then - return - end - end - - http.header("X-CBI-State", state or 0) - - if not config.noheader then - tpl.render("cbi/header", {state = state}) - end - - local redirect - local messages - local applymap = false - local pageaction = true - local parsechain = { } - - for i, res in ipairs(maps) do - if res.apply_needed and res.parsechain then - local c - for _, c in ipairs(res.parsechain) do - parsechain[#parsechain+1] = c - end - applymap = true - end - - if res.redirect then - redirect = redirect or res.redirect - end - - if res.pageaction == false then - pageaction = false - end - - if res.message then - messages = messages or { } - messages[#messages+1] = res.message - end - end - - for i, res in ipairs(maps) do - res:render({ - firstmap = (i == 1), - applymap = applymap, - redirect = redirect, - messages = messages, - pageaction = pageaction, - parsechain = parsechain - }) - end - - if not config.nofooter then - tpl.render("cbi/footer", { - flow = config, - pageaction = pageaction, - redirect = redirect, - state = state, - autoapply = config.autoapply - }) - end -end - -function cbi(model, config) - return { - type = "cbi", - post = { ["cbi.submit"] = "1" }, - config = config, - model = model, - target = _cbi - } -end - - -local function _arcombine(self, ...) - local argv = {...} - local target = #argv > 0 and self.targets[2] or self.targets[1] - setfenv(target.target, self.env) - target:target(unpack(argv)) -end - -function arcombine(trg1, trg2) - return {type = "arcombine", env = getfenv(), target = _arcombine, targets = {trg1, trg2}} -end - - -local function _form(self, ...) - local cbi = require "luci.cbi" - local tpl = require "luci.template" - local http = require "luci.http" - - local maps = luci.cbi.load(self.model, ...) - local state = nil - - for i, res in ipairs(maps) do - local cstate = res:parse() - if cstate and (not state or cstate < state) then - state = cstate - end - end - - http.header("X-CBI-State", state or 0) - tpl.render("header") - for i, res in ipairs(maps) do - res:render() - end - tpl.render("footer") -end - -function form(model) - return { - type = "cbi", - post = { ["cbi.submit"] = "1" }, - model = model, - target = _form - } -end - -translate = i18n.translate - --- This function does not actually translate the given argument but --- is used by build/i18n-scan.pl to find translatable entries. -function _(text) - return text -end diff --git a/package/luci/modules/luci-base/luasrc/dispatcher.luadoc b/package/luci/modules/luci-base/luasrc/dispatcher.luadoc deleted file mode 100644 index 743463c74f..0000000000 --- a/package/luci/modules/luci-base/luasrc/dispatcher.luadoc +++ /dev/null @@ -1,220 +0,0 @@ ----[[ -LuCI web dispatcher. -]] -module "luci.dispatcher" - ----[[ -Build the URL relative to the server webroot from given virtual path. - -@class function -@name build_url -@param ... Virtual path -@return Relative URL -]] - ----[[ -Check whether a dispatch node shall be visible - -@class function -@name node_visible -@param node Dispatch node -@return Boolean indicating whether the node should be visible -]] - ----[[ -Return a sorted table of visible childs within a given node - -@class function -@name node_childs -@param node Dispatch node -@return Ordered table of child node names -]] - ----[[ -Send a 404 error code and render the "error404" template if available. - -@class function -@name error404 -@param message Custom error message (optional) -@return false -]] - ----[[ -Send a 500 error code and render the "error500" template if available. - -@class function -@name error500 -@param message Custom error message (optional)# -@return false -]] - ----[[ -Dispatch an HTTP request. - -@class function -@name httpdispatch -@param request LuCI HTTP Request object -]] - ----[[ -Dispatches a LuCI virtual path. - -@class function -@name dispatch -@param request Virtual path -]] - ----[[ -Generate the dispatching index using the native file-cache based strategy. - - -@class function -@name createindex -]] - ----[[ -Create the dispatching tree from the index. - -Build the index before if it does not exist yet. - -@class function -@name createtree -]] - ----[[ -Register a tree modifier. - -@class function -@name modifier -@param func Modifier function -@param order Modifier order value (optional) -]] - ----[[ -Clone a node of the dispatching tree to another position. - -@class function -@name assign -@param path Virtual path destination -@param clone Virtual path source -@param title Destination node title (optional) -@param order Destination node order value (optional) -@return Dispatching tree node -]] - ----[[ -Create a new dispatching node and define common parameters. - -@class function -@name entry -@param path Virtual path -@param target Target function to call when dispatched. -@param title Destination node title -@param order Destination node order value (optional) -@return Dispatching tree node -]] - ----[[ -Fetch or create a dispatching node without setting the target module or - -enabling the node. -@class function -@name get -@param ... Virtual path -@return Dispatching tree node -]] - ----[[ -Fetch or create a new dispatching node. - -@class function -@name node -@param ... Virtual path -@return Dispatching tree node -]] - ----[[ -Alias the first (lowest order) page automatically - - -@class function -@name firstchild -]] - ----[[ -Create a redirect to another dispatching node. - -@class function -@name alias -@param ... Virtual path destination -]] - ----[[ -Rewrite the first x path values of the request. - -@class function -@name rewrite -@param n Number of path values to replace -@param ... Virtual path to replace removed path values with -]] - ----[[ -Create a function-call dispatching target. - -@class function -@name call -@param name Target function of local controller -@param ... Additional parameters passed to the function -]] - ----[[ -Create a template render dispatching target. - -@class function -@name template -@param name Template to be rendered -]] - ----[[ -Create a CBI model dispatching target. - -@class function -@name cbi -@param model CBI model to be rendered -]] - ----[[ -Create a combined dispatching target for non argv and argv requests. - -@class function -@name arcombine -@param trg1 Overview Target -@param trg2 Detail Target -]] - ----[[ -Create a CBI form model dispatching target. - -@class function -@name form -@param model CBI form model tpo be rendered -]] - ----[[ -Access the luci.i18n translate() api. - -@class function -@name translate -@param text Text to translate -]] - ----[[ -No-op function used to mark translation entries for menu labels. - -This function does not actually translate the given argument but -is used by build/i18n-scan.pl to find translatable entries. - -@class function -@name _ -]] - diff --git a/package/luci/modules/luci-base/luasrc/http.lua b/package/luci/modules/luci-base/luasrc/http.lua deleted file mode 100644 index 9cc9857867..0000000000 --- a/package/luci/modules/luci-base/luasrc/http.lua +++ /dev/null @@ -1,276 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local ltn12 = require "luci.ltn12" -local protocol = require "luci.http.protocol" -local util = require "luci.util" -local string = require "string" -local coroutine = require "coroutine" -local table = require "table" - -local ipairs, pairs, next, type, tostring, error = - ipairs, pairs, next, type, tostring, error - -module "luci.http" - -context = util.threadlocal() - -Request = util.class() -function Request.__init__(self, env, sourcein, sinkerr) - self.input = sourcein - self.error = sinkerr - - - -- File handler nil by default to let .content() work - self.filehandler = nil - - -- HTTP-Message table - self.message = { - env = env, - headers = {}, - params = protocol.urldecode_params(env.QUERY_STRING or ""), - } - - self.parsed_input = false -end - -function Request.formvalue(self, name, noparse) - if not noparse and not self.parsed_input then - self:_parse_input() - end - - if name then - return self.message.params[name] - else - return self.message.params - end -end - -function Request.formvaluetable(self, prefix) - local vals = {} - prefix = prefix and prefix .. "." or "." - - if not self.parsed_input then - self:_parse_input() - end - - local void = self.message.params[nil] - for k, v in pairs(self.message.params) do - if k:find(prefix, 1, true) == 1 then - vals[k:sub(#prefix + 1)] = tostring(v) - end - end - - return vals -end - -function Request.content(self) - if not self.parsed_input then - self:_parse_input() - end - - return self.message.content, self.message.content_length -end - -function Request.getcookie(self, name) - local c = string.gsub(";" .. (self:getenv("HTTP_COOKIE") or "") .. ";", "%s*;%s*", ";") - local p = ";" .. name .. "=(.-);" - local i, j, value = c:find(p) - return value and urldecode(value) -end - -function Request.getenv(self, name) - if name then - return self.message.env[name] - else - return self.message.env - end -end - -function Request.setfilehandler(self, callback) - self.filehandler = callback - - -- If input has already been parsed then any files are either in temporary files - -- or are in self.message.params[key] - if self.parsed_input then - for param, value in pairs(self.message.params) do - repeat - -- We're only interested in files - if (not value["file"]) then break end - -- If we were able to write to temporary file - if (value["fd"]) then - fd = value["fd"] - local eof = false - repeat - filedata = fd:read(1024) - if (filedata:len() < 1024) then - eof = true - end - callback({ name=value["name"], file=value["file"] }, filedata, eof) - until (eof) - fd:close() - value["fd"] = nil - -- We had to read into memory - else - -- There should only be one numbered value in table - the data - for k, v in ipairs(value) do - callback({ name=value["name"], file=value["file"] }, v, true) - end - end - until true - end - end -end - -function Request._parse_input(self) - protocol.parse_message_body( - self.input, - self.message, - self.filehandler - ) - self.parsed_input = true -end - -function close() - if not context.eoh then - context.eoh = true - coroutine.yield(3) - end - - if not context.closed then - context.closed = true - coroutine.yield(5) - end -end - -function content() - return context.request:content() -end - -function formvalue(name, noparse) - return context.request:formvalue(name, noparse) -end - -function formvaluetable(prefix) - return context.request:formvaluetable(prefix) -end - -function getcookie(name) - return context.request:getcookie(name) -end - --- or the environment table itself. -function getenv(name) - return context.request:getenv(name) -end - -function setfilehandler(callback) - return context.request:setfilehandler(callback) -end - -function header(key, value) - if not context.headers then - context.headers = {} - end - context.headers[key:lower()] = value - coroutine.yield(2, key, value) -end - -function prepare_content(mime) - if not context.headers or not context.headers["content-type"] then - if mime == "application/xhtml+xml" then - if not getenv("HTTP_ACCEPT") or - not getenv("HTTP_ACCEPT"):find("application/xhtml+xml", nil, true) then - mime = "text/html; charset=UTF-8" - end - header("Vary", "Accept") - end - header("Content-Type", mime) - end -end - -function source() - return context.request.input -end - -function status(code, message) - code = code or 200 - message = message or "OK" - context.status = code - coroutine.yield(1, code, message) -end - --- This function is as a valid LTN12 sink. --- If the content chunk is nil this function will automatically invoke close. -function write(content, src_err) - if not content then - if src_err then - error(src_err) - else - close() - end - return true - elseif #content == 0 then - return true - else - if not context.eoh then - if not context.status then - status() - end - if not context.headers or not context.headers["content-type"] then - header("Content-Type", "text/html; charset=utf-8") - end - if not context.headers["cache-control"] then - header("Cache-Control", "no-cache") - header("Expires", "0") - end - if not context.headers["x-frame-options"] then - header("X-Frame-Options", "SAMEORIGIN") - end - if not context.headers["x-xss-protection"] then - header("X-XSS-Protection", "1; mode=block") - end - if not context.headers["x-content-type-options"] then - header("X-Content-Type-Options", "nosniff") - end - - context.eoh = true - coroutine.yield(3) - end - coroutine.yield(4, content) - return true - end -end - -function splice(fd, size) - coroutine.yield(6, fd, size) -end - -function redirect(url) - if url == "" then url = "/" end - status(302, "Found") - header("Location", url) - close() -end - -function build_querystring(q) - local s = { "?" } - - for k, v in pairs(q) do - if #s > 1 then s[#s+1] = "&" end - - s[#s+1] = urldecode(k) - s[#s+1] = "=" - s[#s+1] = urldecode(v) - end - - return table.concat(s, "") -end - -urldecode = protocol.urldecode - -urlencode = protocol.urlencode - -function write_json(x) - util.serialize_json(x, write) -end diff --git a/package/luci/modules/luci-base/luasrc/http.luadoc b/package/luci/modules/luci-base/luasrc/http.luadoc deleted file mode 100644 index 8a325db21a..0000000000 --- a/package/luci/modules/luci-base/luasrc/http.luadoc +++ /dev/null @@ -1,165 +0,0 @@ ----[[ -LuCI Web Framework high-level HTTP functions. -]] -module "luci.http" - ----[[ -Close the HTTP-Connection. - - -@class function -@name close -]] - ----[[ -Return the request content if the request was of unknown type. - -@class function -@name content -@return HTTP request body -@return HTTP request body length -]] - ----[[ -Get a certain HTTP input value or a table of all input values. - -@class function -@name formvalue -@param name Name of the GET or POST variable to fetch -@param noparse Don't parse POST data before getting the value -@return HTTP input value or table of all input value -]] - ----[[ -Get a table of all HTTP input values with a certain prefix. - -@class function -@name formvaluetable -@param prefix Prefix -@return Table of all HTTP input values with given prefix -]] - ----[[ -Get the value of a certain HTTP-Cookie. - -@class function -@name getcookie -@param name Cookie Name -@return String containing cookie data -]] - ----[[ -Get the value of a certain HTTP environment variable - -or the environment table itself. -@class function -@name getenv -@param name Environment variable -@return HTTP environment value or environment table -]] - ----[[ -Set a handler function for incoming user file uploads. - -@class function -@name setfilehandler -@param callback Handler function -]] - ----[[ -Send a HTTP-Header. - -@class function -@name header -@param key Header key -@param value Header value -]] - ----[[ -Set the mime type of following content data. - -@class function -@name prepare_content -@param mime Mimetype of following content -]] - ----[[ -Get the RAW HTTP input source - -@class function -@name source -@return HTTP LTN12 source -]] - ----[[ -Set the HTTP status code and status message. - -@class function -@name status -@param code Status code -@param message Status message -]] - ----[[ -Send a chunk of content data to the client. - -This function is as a valid LTN12 sink. -If the content chunk is nil this function will automatically invoke close. -@class function -@name write -@param content Content chunk -@param src_err Error object from source (optional) -@see close -]] - ----[[ -Splice data from a filedescriptor to the client. - -@class function -@name splice -@param fp File descriptor -@param size Bytes to splice (optional) -]] - ----[[ -Redirects the client to a new URL and closes the connection. - -@class function -@name redirect -@param url Target URL -]] - ----[[ -Create a querystring out of a table of key - value pairs. - -@class function -@name build_querystring -@param table Query string source table -@return Encoded HTTP query string -]] - ----[[ -Return the URL-decoded equivalent of a string. - -@param str URL-encoded string -@param no_plus Don't decode + to " " -@return URL-decoded string -@see urlencode -]] - ----[[ -Return the URL-encoded equivalent of a string. - -@param str Source string -@return URL-encoded string -@see urldecode -]] - ----[[ -Send the given data as JSON encoded string. - -@class function -@name write_json -@param data Data to send -]] - diff --git a/package/luci/modules/luci-base/luasrc/http/protocol.lua b/package/luci/modules/luci-base/luasrc/http/protocol.lua deleted file mode 100644 index 0a8b2fbab9..0000000000 --- a/package/luci/modules/luci-base/luasrc/http/protocol.lua +++ /dev/null @@ -1,649 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - --- This class contains several functions useful for http message- and content --- decoding and to retrive form data from raw http messages. -module("luci.http.protocol", package.seeall) - -local ltn12 = require("luci.ltn12") - -HTTP_MAX_CONTENT = 1024*8 -- 8 kB maximum content size - --- the "+" sign to " " - and return the decoded string. -function urldecode( str, no_plus ) - - local function __chrdec( hex ) - return string.char( tonumber( hex, 16 ) ) - end - - if type(str) == "string" then - if not no_plus then - str = str:gsub( "+", " " ) - end - - str = str:gsub( "%%([a-fA-F0-9][a-fA-F0-9])", __chrdec ) - end - - return str -end - --- from given url or string. Returns a table with urldecoded values. --- Simple parameters are stored as string values associated with the parameter --- name within the table. Parameters with multiple values are stored as array --- containing the corresponding values. -function urldecode_params( url, tbl ) - - local params = tbl or { } - - if url:find("?") then - url = url:gsub( "^.+%?([^?]+)", "%1" ) - end - - for pair in url:gmatch( "[^&;]+" ) do - - -- find key and value - local key = urldecode( pair:match("^([^=]+)") ) - local val = urldecode( pair:match("^[^=]+=(.+)$") ) - - -- store - if type(key) == "string" and key:len() > 0 then - if type(val) ~= "string" then val = "" end - - if not params[key] then - params[key] = val - elseif type(params[key]) ~= "table" then - params[key] = { params[key], val } - else - table.insert( params[key], val ) - end - end - end - - return params -end - -function urlencode( str ) - - local function __chrenc( chr ) - return string.format( - "%%%02x", string.byte( chr ) - ) - end - - if type(str) == "string" then - str = str:gsub( - "([^a-zA-Z0-9$_%-%.%~])", - __chrenc - ) - end - - return str -end - --- separated by "&". Tables are encoded as parameters with multiple values by --- repeating the parameter name with each value. -function urlencode_params( tbl ) - local enc = "" - - for k, v in pairs(tbl) do - if type(v) == "table" then - for i, v2 in ipairs(v) do - enc = enc .. ( #enc > 0 and "&" or "" ) .. - urlencode(k) .. "=" .. urlencode(v2) - end - else - enc = enc .. ( #enc > 0 and "&" or "" ) .. - urlencode(k) .. "=" .. urlencode(v) - end - end - - return enc -end - --- (Internal function) --- Initialize given parameter and coerce string into table when the parameter --- already exists. -local function __initval( tbl, key ) - if tbl[key] == nil then - tbl[key] = "" - elseif type(tbl[key]) == "string" then - tbl[key] = { tbl[key], "" } - else - table.insert( tbl[key], "" ) - end -end - --- (Internal function) --- Initialize given file parameter. -local function __initfileval( tbl, key, filename, fd ) - if tbl[key] == nil then - tbl[key] = { file=filename, fd=fd, name=key, "" } - else - table.insert( tbl[key], "" ) - end -end - --- (Internal function) --- Append given data to given parameter, either by extending the string value --- or by appending it to the last string in the parameter's value table. -local function __appendval( tbl, key, chunk ) - if type(tbl[key]) == "table" then - tbl[key][#tbl[key]] = tbl[key][#tbl[key]] .. chunk - else - tbl[key] = tbl[key] .. chunk - end -end - --- (Internal function) --- Finish the value of given parameter, either by transforming the string value --- or - in the case of multi value parameters - the last element in the --- associated values table. -local function __finishval( tbl, key, handler ) - if handler then - if type(tbl[key]) == "table" then - tbl[key][#tbl[key]] = handler( tbl[key][#tbl[key]] ) - else - tbl[key] = handler( tbl[key] ) - end - end -end - - --- Table of our process states -local process_states = { } - --- Extract "magic", the first line of a http message. --- Extracts the message type ("get", "post" or "response"), the requested uri --- or the status code if the line descripes a http response. -process_states['magic'] = function( msg, chunk, err ) - - if chunk ~= nil then - -- ignore empty lines before request - if #chunk == 0 then - return true, nil - end - - -- Is it a request? - local method, uri, http_ver = chunk:match("^([A-Z]+) ([^ ]+) HTTP/([01]%.[019])$") - - -- Yup, it is - if method then - - msg.type = "request" - msg.request_method = method:lower() - msg.request_uri = uri - msg.http_version = tonumber( http_ver ) - msg.headers = { } - - -- We're done, next state is header parsing - return true, function( chunk ) - return process_states['headers']( msg, chunk ) - end - - -- Is it a response? - else - - local http_ver, code, message = chunk:match("^HTTP/([01]%.[019]) ([0-9]+) ([^\r\n]+)$") - - -- Is a response - if code then - - msg.type = "response" - msg.status_code = code - msg.status_message = message - msg.http_version = tonumber( http_ver ) - msg.headers = { } - - -- We're done, next state is header parsing - return true, function( chunk ) - return process_states['headers']( msg, chunk ) - end - end - end - end - - -- Can't handle it - return nil, "Invalid HTTP message magic" -end - - --- Extract headers from given string. -process_states['headers'] = function( msg, chunk ) - - if chunk ~= nil then - - -- Look for a valid header format - local hdr, val = chunk:match( "^([A-Za-z][A-Za-z0-9%-_]+): +(.+)$" ) - - if type(hdr) == "string" and hdr:len() > 0 and - type(val) == "string" and val:len() > 0 - then - msg.headers[hdr] = val - - -- Valid header line, proceed - return true, nil - - elseif #chunk == 0 then - -- Empty line, we won't accept data anymore - return false, nil - else - -- Junk data - return nil, "Invalid HTTP header received" - end - else - return nil, "Unexpected EOF" - end -end - - --- data line by line with the trailing \r\n stripped of. -function header_source( sock ) - return ltn12.source.simplify( function() - - local chunk, err, part = sock:receive("*l") - - -- Line too long - if chunk == nil then - if err ~= "timeout" then - return nil, part - and "Line exceeds maximum allowed length" - or "Unexpected EOF" - else - return nil, err - end - - -- Line ok - elseif chunk ~= nil then - - -- Strip trailing CR - chunk = chunk:gsub("\r$","") - - return chunk, nil - end - end ) -end - --- Content-Type. Stores all extracted data associated with its parameter name --- in the params table within the given message object. Multiple parameter --- values are stored as tables, ordinary ones as strings. --- If an optional file callback function is given then it is feeded with the --- file contents chunk by chunk and only the extracted file name is stored --- within the params table. The callback function will be called subsequently --- with three arguments: --- o Table containing decoded (name, file) and raw (headers) mime header data --- o String value containing a chunk of the file data --- o Boolean which indicates wheather the current chunk is the last one (eof) -function mimedecode_message_body( src, msg, filecb ) - - if msg and msg.env.CONTENT_TYPE then - msg.mime_boundary = msg.env.CONTENT_TYPE:match("^multipart/form%-data; boundary=(.+)$") - end - - if not msg.mime_boundary then - return nil, "Invalid Content-Type found" - end - - - local tlen = 0 - local inhdr = false - local field = nil - local store = nil - local lchunk = nil - - local function parse_headers( chunk, field ) - - local stat - repeat - chunk, stat = chunk:gsub( - "^([A-Z][A-Za-z0-9%-_]+): +([^\r\n]+)\r\n", - function(k,v) - field.headers[k] = v - return "" - end - ) - until stat == 0 - - chunk, stat = chunk:gsub("^\r\n","") - - -- End of headers - if stat > 0 then - if field.headers["Content-Disposition"] then - if field.headers["Content-Disposition"]:match("^form%-data; ") then - field.name = field.headers["Content-Disposition"]:match('name="(.-)"') - field.file = field.headers["Content-Disposition"]:match('filename="(.+)"$') - end - end - - if not field.headers["Content-Type"] then - field.headers["Content-Type"] = "text/plain" - end - - if field.name and field.file and filecb then - __initval( msg.params, field.name ) - __appendval( msg.params, field.name, field.file ) - - store = filecb - elseif field.name and field.file then - local nxf = require "nixio" - local fd = nxf.mkstemp(field.name) - __initfileval ( msg.params, field.name, field.file, fd ) - if fd then - store = function(hdr, buf, eof) - fd:write(buf) - if (eof) then - fd:seek(0, "set") - end - end - else - store = function( hdr, buf, eof ) - __appendval( msg.params, field.name, buf ) - end - end - elseif field.name then - __initval( msg.params, field.name ) - - store = function( hdr, buf, eof ) - __appendval( msg.params, field.name, buf ) - end - else - store = nil - end - - return chunk, true - end - - return chunk, false - end - - local function snk( chunk ) - - tlen = tlen + ( chunk and #chunk or 0 ) - - if msg.env.CONTENT_LENGTH and tlen > tonumber(msg.env.CONTENT_LENGTH) + 2 then - return nil, "Message body size exceeds Content-Length" - end - - if chunk and not lchunk then - lchunk = "\r\n" .. chunk - - elseif lchunk then - local data = lchunk .. ( chunk or "" ) - local spos, epos, found - - repeat - spos, epos = data:find( "\r\n--" .. msg.mime_boundary .. "\r\n", 1, true ) - - if not spos then - spos, epos = data:find( "\r\n--" .. msg.mime_boundary .. "--\r\n", 1, true ) - end - - - if spos then - local predata = data:sub( 1, spos - 1 ) - - if inhdr then - predata, eof = parse_headers( predata, field ) - - if not eof then - return nil, "Invalid MIME section header" - elseif not field.name then - return nil, "Invalid Content-Disposition header" - end - end - - if store then - store( field, predata, true ) - end - - - field = { headers = { } } - found = found or true - - data, eof = parse_headers( data:sub( epos + 1, #data ), field ) - inhdr = not eof - end - until not spos - - if found then - -- We found at least some boundary. Save - -- the unparsed remaining data for the - -- next chunk. - lchunk, data = data, nil - else - -- There was a complete chunk without a boundary. Parse it as headers or - -- append it as data, depending on our current state. - if inhdr then - lchunk, eof = parse_headers( data, field ) - inhdr = not eof - else - -- We're inside data, so append the data. Note that we only append - -- lchunk, not all of data, since there is a chance that chunk - -- contains half a boundary. Assuming that each chunk is at least the - -- boundary in size, this should prevent problems - store( field, lchunk, false ) - lchunk, chunk = chunk, nil - end - end - end - - return true - end - - return ltn12.pump.all( src, snk ) -end - --- Content-Type. Stores all extracted data associated with its parameter name --- in the params table within the given message object. Multiple parameter --- values are stored as tables, ordinary ones as strings. -function urldecode_message_body( src, msg ) - - local tlen = 0 - local lchunk = nil - - local function snk( chunk ) - - tlen = tlen + ( chunk and #chunk or 0 ) - - if msg.env.CONTENT_LENGTH and tlen > tonumber(msg.env.CONTENT_LENGTH) + 2 then - return nil, "Message body size exceeds Content-Length" - elseif tlen > HTTP_MAX_CONTENT then - return nil, "Message body size exceeds maximum allowed length" - end - - if not lchunk and chunk then - lchunk = chunk - - elseif lchunk then - local data = lchunk .. ( chunk or "&" ) - local spos, epos - - repeat - spos, epos = data:find("^.-[;&]") - - if spos then - local pair = data:sub( spos, epos - 1 ) - local key = pair:match("^(.-)=") - local val = pair:match("=([^%s]*)%s*$") - - if key and #key > 0 then - __initval( msg.params, key ) - __appendval( msg.params, key, val ) - __finishval( msg.params, key, urldecode ) - end - - data = data:sub( epos + 1, #data ) - end - until not spos - - lchunk = data - end - - return true - end - - return ltn12.pump.all( src, snk ) -end - --- version, message headers and resulting CGI environment variables from the --- given ltn12 source. -function parse_message_header( src ) - - local ok = true - local msg = { } - - local sink = ltn12.sink.simplify( - function( chunk ) - return process_states['magic']( msg, chunk ) - end - ) - - -- Pump input data... - while ok do - - -- get data - ok, err = ltn12.pump.step( src, sink ) - - -- error - if not ok and err then - return nil, err - - -- eof - elseif not ok then - - -- Process get parameters - if ( msg.request_method == "get" or msg.request_method == "post" ) and - msg.request_uri:match("?") - then - msg.params = urldecode_params( msg.request_uri ) - else - msg.params = { } - end - - -- Populate common environment variables - msg.env = { - CONTENT_LENGTH = msg.headers['Content-Length']; - CONTENT_TYPE = msg.headers['Content-Type'] or msg.headers['Content-type']; - REQUEST_METHOD = msg.request_method:upper(); - REQUEST_URI = msg.request_uri; - SCRIPT_NAME = msg.request_uri:gsub("?.+$",""); - SCRIPT_FILENAME = ""; -- XXX implement me - SERVER_PROTOCOL = "HTTP/" .. string.format("%.1f", msg.http_version); - QUERY_STRING = msg.request_uri:match("?") - and msg.request_uri:gsub("^.+?","") or "" - } - - -- Populate HTTP_* environment variables - for i, hdr in ipairs( { - 'Accept', - 'Accept-Charset', - 'Accept-Encoding', - 'Accept-Language', - 'Connection', - 'Cookie', - 'Host', - 'Referer', - 'User-Agent', - } ) do - local var = 'HTTP_' .. hdr:upper():gsub("%-","_") - local val = msg.headers[hdr] - - msg.env[var] = val - end - end - end - - return msg -end - --- This function will examine the Content-Type within the given message object --- to select the appropriate content decoder. --- Currently the application/x-www-urlencoded and application/form-data --- mime types are supported. If the encountered content encoding can't be --- handled then the whole message body will be stored unaltered as "content" --- property within the given message object. -function parse_message_body( src, msg, filecb ) - -- Is it multipart/mime ? - if msg.env.REQUEST_METHOD == "POST" and msg.env.CONTENT_TYPE and - msg.env.CONTENT_TYPE:match("^multipart/form%-data") - then - - return mimedecode_message_body( src, msg, filecb ) - - -- Is it application/x-www-form-urlencoded ? - elseif msg.env.REQUEST_METHOD == "POST" and msg.env.CONTENT_TYPE and - msg.env.CONTENT_TYPE:match("^application/x%-www%-form%-urlencoded") - then - return urldecode_message_body( src, msg, filecb ) - - - -- Unhandled encoding - -- If a file callback is given then feed it chunk by chunk, else - -- store whole buffer in message.content - else - - local sink - - -- If we have a file callback then feed it - if type(filecb) == "function" then - local meta = { - name = "raw", - encoding = msg.env.CONTENT_TYPE - } - sink = function( chunk ) - if chunk then - return filecb(meta, chunk, false) - else - return filecb(meta, nil, true) - end - end - -- ... else append to .content - else - msg.content = "" - msg.content_length = 0 - - sink = function( chunk ) - if chunk then - if ( msg.content_length + #chunk ) <= HTTP_MAX_CONTENT then - msg.content = msg.content .. chunk - msg.content_length = msg.content_length + #chunk - return true - else - return nil, "POST data exceeds maximum allowed length" - end - end - return true - end - end - - -- Pump data... - while true do - local ok, err = ltn12.pump.step( src, sink ) - - if not ok and err then - return nil, err - elseif not ok then -- eof - return true - end - end - - return true - end -end - -statusmsg = { - [200] = "OK", - [206] = "Partial Content", - [301] = "Moved Permanently", - [302] = "Found", - [304] = "Not Modified", - [400] = "Bad Request", - [403] = "Forbidden", - [404] = "Not Found", - [405] = "Method Not Allowed", - [408] = "Request Time-out", - [411] = "Length Required", - [412] = "Precondition Failed", - [416] = "Requested range not satisfiable", - [500] = "Internal Server Error", - [503] = "Server Unavailable", -} diff --git a/package/luci/modules/luci-base/luasrc/http/protocol.luadoc b/package/luci/modules/luci-base/luasrc/http/protocol.luadoc deleted file mode 100644 index 67a60d9e7a..0000000000 --- a/package/luci/modules/luci-base/luasrc/http/protocol.luadoc +++ /dev/null @@ -1,142 +0,0 @@ ----[[ -LuCI http protocol class. - -This class contains several functions useful for http message- and content -decoding and to retrive form data from raw http messages. -]] -module "luci.http.protocol" - ----[[ -Decode an urlencoded string - optionally without decoding - -the "+" sign to " " - and return the decoded string. -@class function -@name urldecode -@param str Input string in x-www-urlencoded format -@param no_plus Don't decode "+" signs to spaces -@return The decoded string -@see urlencode -]] - ----[[ -Extract and split urlencoded data pairs, separated bei either "&" or ";" - -from given url or string. Returns a table with urldecoded values. -Simple parameters are stored as string values associated with the parameter -name within the table. Parameters with multiple values are stored as array -containing the corresponding values. -@class function -@name urldecode_params -@param url The url or string which contains x-www-urlencoded form data -@param tbl Use the given table for storing values (optional) -@return Table containing the urldecoded parameters -@see urlencode_params -]] - ----[[ -Encode given string to x-www-urlencoded format. - -@class function -@name urlencode -@param str String to encode -@return String containing the encoded data -@see urldecode -]] - ----[[ -Encode each key-value-pair in given table to x-www-urlencoded format, - -separated by "&". Tables are encoded as parameters with multiple values by -repeating the parameter name with each value. -@class function -@name urlencode_params -@param tbl Table with the values -@return String containing encoded values -@see urldecode_params -]] - ----[[ -Creates a ltn12 source from the given socket. The source will return it's - -data line by line with the trailing \r\n stripped of. -@class function -@name header_source -@param sock Readable network socket -@return Ltn12 source function -]] - ----[[ -Decode a mime encoded http message body with multipart/form-data - -Content-Type. Stores all extracted data associated with its parameter name -in the params table withing the given message object. Multiple parameter -values are stored as tables, ordinary ones as strings. -If an optional file callback function is given then it is feeded with the -file contents chunk by chunk and only the extracted file name is stored -within the params table. The callback function will be called subsequently -with three arguments: - o Table containing decoded (name, file) and raw (headers) mime header data - o String value containing a chunk of the file data - o Boolean which indicates wheather the current chunk is the last one (eof) -@class function -@name mimedecode_message_body -@param src Ltn12 source function -@param msg HTTP message object -@param filecb File callback function (optional) -@return Value indicating successful operation (not nil means "ok") -@return String containing the error if unsuccessful -@see parse_message_header -]] - ----[[ -Decode an urlencoded http message body with application/x-www-urlencoded - -Content-Type. Stores all extracted data associated with its parameter name -in the params table withing the given message object. Multiple parameter -values are stored as tables, ordinary ones as strings. -@class function -@name urldecode_message_body -@param src Ltn12 source function -@param msg HTTP message object -@return Value indicating successful operation (not nil means "ok") -@return String containing the error if unsuccessful -@see parse_message_header -]] - ----[[ -Try to extract an http message header including information like protocol - -version, message headers and resulting CGI environment variables from the -given ltn12 source. -@class function -@name parse_message_header -@param src Ltn12 source function -@return HTTP message object -@see parse_message_body -]] - ----[[ -Try to extract and decode a http message body from the given ltn12 source. - -This function will examine the Content-Type within the given message object -to select the appropriate content decoder. -Currently the application/x-www-urlencoded and application/form-data -mime types are supported. If the encountered content encoding can't be -handled then the whole message body will be stored unaltered as "content" -property within the given message object. -@class function -@name parse_message_body -@param src Ltn12 source function -@param msg HTTP message object -@param filecb File data callback (optional, see mimedecode_message_body()) -@return Value indicating successful operation (not nil means "ok") -@return String containing the error if unsuccessful -@see parse_message_header -]] - ----[[ -Table containing human readable messages for several http status codes. - -@class table -]] - diff --git a/package/luci/modules/luci-base/luasrc/http/protocol/conditionals.lua b/package/luci/modules/luci-base/luasrc/http/protocol/conditionals.lua deleted file mode 100644 index d31a4e38a4..0000000000 --- a/package/luci/modules/luci-base/luasrc/http/protocol/conditionals.lua +++ /dev/null @@ -1,110 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - --- This class provides basic ETag handling and implements most of the --- conditional HTTP/1.1 headers specified in RFC2616 Sct. 14.24 - 14.28 . -module("luci.http.protocol.conditionals", package.seeall) - -local date = require("luci.http.protocol.date") - - -function mk_etag( stat ) - if stat ~= nil then - return string.format( '"%x-%x-%x"', stat.ino, stat.size, stat.mtime ) - end -end - --- Test whether the given message object contains an "If-Match" header and --- compare it against the given stat object. -function if_match( req, stat ) - local h = req.headers - local etag = mk_etag( stat ) - - -- Check for matching resource - if type(h['If-Match']) == "string" then - for ent in h['If-Match']:gmatch("([^, ]+)") do - if ( ent == '*' or ent == etag ) and stat ~= nil then - return true - end - end - - return false, 412 - end - - return true -end - --- Test whether the given message object contains an "If-Modified-Since" header --- and compare it against the given stat object. -function if_modified_since( req, stat ) - local h = req.headers - - -- Compare mtimes - if type(h['If-Modified-Since']) == "string" then - local since = date.to_unix( h['If-Modified-Since'] ) - - if stat == nil or since < stat.mtime then - return true - end - - return false, 304, { - ["ETag"] = mk_etag( stat ); - ["Date"] = date.to_http( os.time() ); - ["Last-Modified"] = date.to_http( stat.mtime ) - } - end - - return true -end - --- Test whether the given message object contains an "If-None-Match" header and --- compare it against the given stat object. -function if_none_match( req, stat ) - local h = req.headers - local etag = mk_etag( stat ) - local method = req.env and req.env.REQUEST_METHOD or "GET" - - -- Check for matching resource - if type(h['If-None-Match']) == "string" then - for ent in h['If-None-Match']:gmatch("([^, ]+)") do - if ( ent == '*' or ent == etag ) and stat ~= nil then - if method == "GET" or method == "HEAD" then - return false, 304, { - ["ETag"] = etag; - ["Date"] = date.to_http( os.time() ); - ["Last-Modified"] = date.to_http( stat.mtime ) - } - else - return false, 412 - end - end - end - end - - return true -end - --- The If-Range header is currently not implemented due to the lack of general --- byte range stuff in luci.http.protocol . This function will always return --- false, 412 to indicate a failed precondition. -function if_range( req, stat ) - -- Sorry, no subranges (yet) - return false, 412 -end - --- Test whether the given message object contains an "If-Unmodified-Since" --- header and compare it against the given stat object. -function if_unmodified_since( req, stat ) - local h = req.headers - - -- Compare mtimes - if type(h['If-Unmodified-Since']) == "string" then - local since = date.to_unix( h['If-Unmodified-Since'] ) - - if stat ~= nil and since <= stat.mtime then - return false, 412 - end - end - - return true -end diff --git a/package/luci/modules/luci-base/luasrc/http/protocol/conditionals.luadoc b/package/luci/modules/luci-base/luasrc/http/protocol/conditionals.luadoc deleted file mode 100644 index 9cfe02dd50..0000000000 --- a/package/luci/modules/luci-base/luasrc/http/protocol/conditionals.luadoc +++ /dev/null @@ -1,85 +0,0 @@ ----[[ -LuCI http protocol implementation - HTTP/1.1 bits. - -This class provides basic ETag handling and implements most of the -conditional HTTP/1.1 headers specified in RFC2616 Sct. 14.24 - 14.28 . -]] -module "luci.http.protocol.conditionals" - ----[[ -Implement 14.19 / ETag. - -@class function -@name mk_etag -@param stat A file.stat structure -@return String containing the generated tag suitable for ETag headers -]] - ----[[ -14.24 / If-Match - -Test whether the given message object contains an "If-Match" header and -compare it against the given stat object. -@class function -@name if_match -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -]] - ----[[ -14.25 / If-Modified-Since - -Test whether the given message object contains an "If-Modified-Since" header -and compare it against the given stat object. -@class function -@name if_modified_since -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -@return Table containing extra HTTP headers if the precondition failed -]] - ----[[ -14.26 / If-None-Match - -Test whether the given message object contains an "If-None-Match" header and -compare it against the given stat object. -@class function -@name if_none_match -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -@return Table containing extra HTTP headers if the precondition failed -]] - ----[[ -14.27 / If-Range - -The If-Range header is currently not implemented due to the lack of general -byte range stuff in luci.http.protocol . This function will always return -false, 412 to indicate a failed precondition. -@class function -@name if_range -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -]] - ----[[ -14.28 / If-Unmodified-Since - -Test whether the given message object contains an "If-Unmodified-Since" -header and compare it against the given stat object. -@class function -@name if_unmodified_since -@param req HTTP request message object -@param stat A file.stat object -@return Boolean indicating whether the precondition is ok -@return Alternative status code if the precondition failed -]] - diff --git a/package/luci/modules/luci-base/luasrc/http/protocol/date.lua b/package/luci/modules/luci-base/luasrc/http/protocol/date.lua deleted file mode 100644 index e440219a9c..0000000000 --- a/package/luci/modules/luci-base/luasrc/http/protocol/date.lua +++ /dev/null @@ -1,87 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - --- This class contains functions to parse, compare and format http dates. -module("luci.http.protocol.date", package.seeall) - -require("luci.sys.zoneinfo") - - -MONTHS = { - "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", - "Sep", "Oct", "Nov", "Dec" -} - -function tz_offset(tz) - - if type(tz) == "string" then - - -- check for a numeric identifier - local s, v = tz:match("([%+%-])([0-9]+)") - if s == '+' then s = 1 else s = -1 end - if v then v = tonumber(v) end - - if s and v then - return s * 60 * ( math.floor( v / 100 ) * 60 + ( v % 100 ) ) - - -- lookup symbolic tz - elseif luci.sys.zoneinfo.OFFSET[tz:lower()] then - return luci.sys.zoneinfo.OFFSET[tz:lower()] - end - - end - - -- bad luck - return 0 -end - -function to_unix(date) - - local wd, day, mon, yr, hr, min, sec, tz = date:match( - "([A-Z][a-z][a-z]), ([0-9]+) " .. - "([A-Z][a-z][a-z]) ([0-9]+) " .. - "([0-9]+):([0-9]+):([0-9]+) " .. - "([A-Z0-9%+%-]+)" - ) - - if day and mon and yr and hr and min and sec then - -- find month - local month = 1 - for i = 1, 12 do - if MONTHS[i] == mon then - month = i - break - end - end - - -- convert to epoch time - return tz_offset(tz) + os.time( { - year = yr, - month = month, - day = day, - hour = hr, - min = min, - sec = sec - } ) - end - - return 0 -end - -function to_http(time) - return os.date( "%a, %d %b %Y %H:%M:%S GMT", time ) -end - -function compare(d1, d2) - - if d1:match("[^0-9]") then d1 = to_unix(d1) end - if d2:match("[^0-9]") then d2 = to_unix(d2) end - - if d1 == d2 then - return 0 - elseif d1 < d2 then - return -1 - else - return 1 - end -end diff --git a/package/luci/modules/luci-base/luasrc/http/protocol/date.luadoc b/package/luci/modules/luci-base/luasrc/http/protocol/date.luadoc deleted file mode 100644 index d6f1c8d658..0000000000 --- a/package/luci/modules/luci-base/luasrc/http/protocol/date.luadoc +++ /dev/null @@ -1,46 +0,0 @@ ----[[ -LuCI http protocol implementation - date helper class. - -This class contains functions to parse, compare and format http dates. -]] -module "luci.http.protocol.date" - ----[[ -Return the time offset in seconds between the UTC and given time zone. - -@class function -@name tz_offset -@param tz Symbolic or numeric timezone specifier -@return Time offset to UTC in seconds -]] - ----[[ -Parse given HTTP date string and convert it to unix epoch time. - -@class function -@name to_unix -@param data String containing the date -@return Unix epoch time -]] - ----[[ -Convert the given unix epoch time to valid HTTP date string. - -@class function -@name to_http -@param time Unix epoch time -@return String containing the formatted date -]] - ----[[ -Compare two dates which can either be unix epoch times or HTTP date strings. - -@class function -@name compare -@param d1 The first date or epoch time to compare -@param d2 The first date or epoch time to compare -@return -1 - if d1 is lower then d2 -@return 0 - if both dates are equal -@return 1 - if d1 is higher then d2 -]] - diff --git a/package/luci/modules/luci-base/luasrc/http/protocol/mime.lua b/package/luci/modules/luci-base/luasrc/http/protocol/mime.lua deleted file mode 100644 index 2b99d8e74e..0000000000 --- a/package/luci/modules/luci-base/luasrc/http/protocol/mime.lua +++ /dev/null @@ -1,78 +0,0 @@ --- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - --- This class provides functions to guess mime types from file extensions and --- vice versa. -module("luci.http.protocol.mime", package.seeall) - -require("luci.util") - -MIME_TYPES = { - ["txt"] = "text/plain"; - ["js"] = "text/javascript"; - ["css"] = "text/css"; - ["htm"] = "text/html"; - ["html"] = "text/html"; - ["patch"] = "text/x-patch"; - ["c"] = "text/x-csrc"; - ["h"] = "text/x-chdr"; - ["o"] = "text/x-object"; - ["ko"] = "text/x-object"; - - ["bmp"] = "image/bmp"; - ["gif"] = "image/gif"; - ["png"] = "image/png"; - ["jpg"] = "image/jpeg"; - ["jpeg"] = "image/jpeg"; - ["svg"] = "image/svg+xml"; - - ["zip"] = "application/zip"; - ["pdf"] = "application/pdf"; - ["xml"] = "application/xml"; - ["xsl"] = "application/xml"; - ["doc"] = "application/msword"; - ["ppt"] = "application/vnd.ms-powerpoint"; - ["xls"] = "application/vnd.ms-excel"; - ["odt"] = "application/vnd.oasis.opendocument.text"; - ["odp"] = "application/vnd.oasis.opendocument.presentation"; - ["pl"] = "application/x-perl"; - ["sh"] = "application/x-shellscript"; - ["php"] = "application/x-php"; - ["deb"] = "application/x-deb"; - ["iso"] = "application/x-cd-image"; - ["tgz"] = "application/x-compressed-tar"; - - ["mp3"] = "audio/mpeg"; - ["ogg"] = "audio/x-vorbis+ogg"; - ["wav"] = "audio/x-wav"; - - ["mpg"] = "video/mpeg"; - ["mpeg"] = "video/mpeg"; - ["avi"] = "video/x-msvideo"; -} - --- "application/octet-stream" if the extension is unknown. -function to_mime(filename) - if type(filename) == "string" then - local ext = filename:match("[^%.]+$") - - if ext and MIME_TYPES[ext:lower()] then - return MIME_TYPES[ext:lower()] - end - end - - return "application/octet-stream" -end - --- given mime-type is unknown. -function to_ext(mimetype) - if type(mimetype) == "string" then - for ext, type in luci.util.kspairs( MIME_TYPES ) do - if type == mimetype then - return ext - end - end - end - - return nil -end diff --git a/package/luci/modules/luci-base/luasrc/http/protocol/mime.luadoc b/package/luci/modules/luci-base/luasrc/http/protocol/mime.luadoc deleted file mode 100644 index 195b5fcc89..0000000000 --- a/package/luci/modules/luci-base/luasrc/http/protocol/mime.luadoc +++ /dev/null @@ -1,34 +0,0 @@ ----[[ -LuCI http protocol implementation - mime helper class. - -This class provides functions to guess mime types from file extensions and -vice versa. -]] -module "luci.http.protocol.mime" - ----[[ -MIME mapping table containg extension - mimetype relations. - -@class table -]] - ----[[ -Extract extension from a filename and return corresponding mime-type or - -"application/octet-stream" if the extension is unknown. -@class function -@name to_mime -@param filename The filename for which the mime type is guessed -@return String containign the determined mime type -]] - ----[[ -Return corresponding extension for a given mime type or nil if the - -given mime-type is unknown. -@class function -@name to_ext -@param mimetype The mimetype to retrieve the extension from -@return String with the extension or nil for unknown type -]] - diff --git a/package/luci/modules/luci-base/luasrc/i18n.lua b/package/luci/modules/luci-base/luasrc/i18n.lua deleted file mode 100644 index bcb16d5c04..0000000000 --- a/package/luci/modules/luci-base/luasrc/i18n.lua +++ /dev/null @@ -1,55 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -module("luci.i18n", package.seeall) -require("luci.util") - -local tparser = require "luci.template.parser" - -table = {} -i18ndir = luci.util.libpath() .. "/i18n/" -loaded = {} -context = luci.util.threadlocal() -default = "en" - -function clear() -end - -function load(file, lang, force) -end - --- Alternatively load the translation of the fallback language. -function loadc(file, force) -end - -function setlanguage(lang) - context.lang = lang:gsub("_", "-") - context.parent = (context.lang:match("^([a-z][a-z])_")) - if not tparser.load_catalog(context.lang, i18ndir) then - if context.parent then - tparser.load_catalog(context.parent, i18ndir) - return context.parent - end - end - return context.lang -end - -function translate(key) - return tparser.translate(key) or key -end - -function translatef(key, ...) - return tostring(translate(key)):format(...) -end - --- and ensure that the returned value is a Lua string value. --- This is the same as calling tostring(translate(...)) -function string(key) - return tostring(translate(key)) -end - --- Ensure that the returned value is a Lua string value. --- This is the same as calling tostring(translatef(...)) -function stringf(key, ...) - return tostring(translate(key)):format(...) -end diff --git a/package/luci/modules/luci-base/luasrc/i18n.luadoc b/package/luci/modules/luci-base/luasrc/i18n.luadoc deleted file mode 100644 index aa38841e17..0000000000 --- a/package/luci/modules/luci-base/luasrc/i18n.luadoc +++ /dev/null @@ -1,84 +0,0 @@ ----[[ -LuCI translation library. -]] -module "luci.i18n" - ----[[ -Clear the translation table. - - -@class function -@name clear -]] - ----[[ -Load a translation and copy its data into the translation table. - -@class function -@name load -@param file Language file -@param lang Two-letter language code -@param force Force reload even if already loaded (optional) -@return Success status -]] - ----[[ -Load a translation file using the default translation language. - -Alternatively load the translation of the fallback language. -@class function -@name loadc -@param file Language file -@param force Force reload even if already loaded (optional) -]] - ----[[ -Set the context default translation language. - -@class function -@name setlanguage -@param lang Two-letter language code -]] - ----[[ -Return the translated value for a specific translation key. - -@class function -@name translate -@param key Default translation text -@return Translated string -]] - ----[[ -Return the translated value for a specific translation key and use it as sprintf pattern. - -@class function -@name translatef -@param key Default translation text -@param ... Format parameters -@return Translated and formatted string -]] - ----[[ -Return the translated value for a specific translation key - -and ensure that the returned value is a Lua string value. -This is the same as calling tostring(translate(...)) -@class function -@name string -@param key Default translation text -@return Translated string -]] - ----[[ -Return the translated value for a specific translation key and use it as sprintf pattern. - -Ensure that the returned value is a Lua string value. -This is the same as calling tostring(translatef(...)) -@class function -@name stringf -@param key Default translation text -@param ... Format parameters -@return Translated and formatted string -]] - diff --git a/package/luci/modules/luci-base/luasrc/ltn12.lua b/package/luci/modules/luci-base/luasrc/ltn12.lua deleted file mode 100644 index 3a7268ccae..0000000000 --- a/package/luci/modules/luci-base/luasrc/ltn12.lua +++ /dev/null @@ -1,316 +0,0 @@ ---[[ -LuaSocket 2.0.2 license -Copyright � 2004-2007 Diego Nehab - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -]]-- ---[[ - Changes made by LuCI project: - * Renamed to luci.ltn12 to avoid collisions with luasocket - * Added inline documentation -]]-- ------------------------------------------------------------------------------ --- LTN12 - Filters, sources, sinks and pumps. --- LuaSocket toolkit. --- Author: Diego Nehab --- RCS ID: $Id$ ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ --- Declare module ------------------------------------------------------------------------------ -local string = require("string") -local table = require("table") -local base = _G - --- See http://lua-users.org/wiki/FiltersSourcesAndSinks for design concepts -module("luci.ltn12") - -filter = {} -source = {} -sink = {} -pump = {} - --- 2048 seems to be better in windows... -BLOCKSIZE = 2048 -_VERSION = "LTN12 1.0.1" - ------------------------------------------------------------------------------ --- Filter stuff ------------------------------------------------------------------------------ - - --- by passing it each chunk and updating a context between calls. -function filter.cycle(low, ctx, extra) - base.assert(low) - return function(chunk) - local ret - ret, ctx = low(ctx, chunk, extra) - return ret - end -end - --- (thanks to Wim Couwenberg) -function filter.chain(...) - local n = table.getn(arg) - local top, index = 1, 1 - local retry = "" - return function(chunk) - retry = chunk and retry - while true do - if index == top then - chunk = arg[index](chunk) - if chunk == "" or top == n then return chunk - elseif chunk then index = index + 1 - else - top = top+1 - index = top - end - else - chunk = arg[index](chunk or "") - if chunk == "" then - index = index - 1 - chunk = retry - elseif chunk then - if index == n then return chunk - else index = index + 1 end - else base.error("filter returned inappropriate nil") end - end - end - end -end - ------------------------------------------------------------------------------ --- Source stuff ------------------------------------------------------------------------------ - - --- create an empty source -local function empty() - return nil -end - -function source.empty() - return empty -end - -function source.error(err) - return function() - return nil, err - end -end - -function source.file(handle, io_err) - if handle then - return function() - local chunk = handle:read(BLOCKSIZE) - if chunk and chunk:len() == 0 then chunk = nil end - if not chunk then handle:close() end - return chunk - end - else return source.error(io_err or "unable to open file") end -end - -function source.simplify(src) - base.assert(src) - return function() - local chunk, err_or_new = src() - src = err_or_new or src - if not chunk then return nil, err_or_new - else return chunk end - end -end - -function source.string(s) - if s then - local i = 1 - return function() - local chunk = string.sub(s, i, i+BLOCKSIZE-1) - i = i + BLOCKSIZE - if chunk ~= "" then return chunk - else return nil end - end - else return source.empty() end -end - -function source.rewind(src) - base.assert(src) - local t = {} - return function(chunk) - if not chunk then - chunk = table.remove(t) - if not chunk then return src() - else return chunk end - else - t[#t+1] = chunk - end - end -end - -function source.chain(src, f) - base.assert(src and f) - local last_in, last_out = "", "" - local state = "feeding" - local err - return function() - if not last_out then - base.error('source is empty!', 2) - end - while true do - if state == "feeding" then - last_in, err = src() - if err then return nil, err end - last_out = f(last_in) - if not last_out then - if last_in then - base.error('filter returned inappropriate nil') - else - return nil - end - elseif last_out ~= "" then - state = "eating" - if last_in then last_in = "" end - return last_out - end - else - last_out = f(last_in) - if last_out == "" then - if last_in == "" then - state = "feeding" - else - base.error('filter returned ""') - end - elseif not last_out then - if last_in then - base.error('filter returned inappropriate nil') - else - return nil - end - else - return last_out - end - end - end - end -end - --- Sources will be used one after the other, as if they were concatenated --- (thanks to Wim Couwenberg) -function source.cat(...) - local src = table.remove(arg, 1) - return function() - while src do - local chunk, err = src() - if chunk then return chunk end - if err then return nil, err end - src = table.remove(arg, 1) - end - end -end - ------------------------------------------------------------------------------ --- Sink stuff ------------------------------------------------------------------------------ - - -function sink.table(t) - t = t or {} - local f = function(chunk, err) - if chunk then t[#t+1] = chunk end - return 1 - end - return f, t -end - -function sink.simplify(snk) - base.assert(snk) - return function(chunk, err) - local ret, err_or_new = snk(chunk, err) - if not ret then return nil, err_or_new end - snk = err_or_new or snk - return 1 - end -end - -function sink.file(handle, io_err) - if handle then - return function(chunk, err) - if not chunk then - handle:close() - return 1 - else return handle:write(chunk) end - end - else return sink.error(io_err or "unable to open file") end -end - --- creates a sink that discards data -local function null() - return 1 -end - -function sink.null() - return null -end - -function sink.error(err) - return function() - return nil, err - end -end - -function sink.chain(f, snk) - base.assert(f and snk) - return function(chunk, err) - if chunk ~= "" then - local filtered = f(chunk) - local done = chunk and "" - while true do - local ret, snkerr = snk(filtered, err) - if not ret then return nil, snkerr end - if filtered == done then return 1 end - filtered = f(done) - end - else return 1 end - end -end - ------------------------------------------------------------------------------ --- Pump stuff ------------------------------------------------------------------------------ - - -function pump.step(src, snk) - local chunk, src_err = src() - local ret, snk_err = snk(chunk, src_err) - if chunk and ret then return 1 - else return nil, src_err or snk_err end -end - -function pump.all(src, snk, step) - base.assert(src and snk) - step = step or pump.step - while true do - local ret, err = step(src, snk) - if not ret then - if err then return nil, err - else return 1 end - end - end -end - diff --git a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua b/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua deleted file mode 100644 index dc702e4a95..0000000000 --- a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua +++ /dev/null @@ -1,67 +0,0 @@ --- Copyright 2011-2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... -local ifc = net:get_interface() - -local hostname, accept_ra, send_rs -local bcast, defaultroute, peerdns, dns, metric, clientid, vendorclass - - -hostname = section:taboption("general", Value, "hostname", - translate("Hostname to send when requesting DHCP")) - -hostname.placeholder = luci.sys.hostname() -hostname.datatype = "hostname" - - -bcast = section:taboption("advanced", Flag, "broadcast", - translate("Use broadcast flag"), - translate("Required for certain ISPs, e.g. Charter with DOCSIS 3")) - -bcast.default = bcast.disabled - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" - - -clientid = section:taboption("advanced", Value, "clientid", - translate("Client ID to send when requesting DHCP")) - - -vendorclass = section:taboption("advanced", Value, "vendorid", - translate("Vendor Class to send when requesting DHCP")) - - -luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) - - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" diff --git a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_none.lua b/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_none.lua deleted file mode 100644 index 6fdded9adb..0000000000 --- a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_none.lua +++ /dev/null @@ -1,4 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... diff --git a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua b/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua deleted file mode 100644 index 3f8b091cf3..0000000000 --- a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua +++ /dev/null @@ -1,90 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... -local ifc = net:get_interface() - -local ipaddr, netmask, gateway, broadcast, dns, accept_ra, send_rs, ip6addr, ip6gw -local mtu, metric - - -ipaddr = section:taboption("general", Value, "ipaddr", translate("IPv4 address")) -ipaddr.datatype = "ip4addr" - - -netmask = section:taboption("general", Value, "netmask", - translate("IPv4 netmask")) - -netmask.datatype = "ip4addr" -netmask:value("255.255.255.0") -netmask:value("255.255.0.0") -netmask:value("255.0.0.0") - - -gateway = section:taboption("general", Value, "gateway", translate("IPv4 gateway")) -gateway.datatype = "ip4addr" - - -broadcast = section:taboption("general", Value, "broadcast", translate("IPv4 broadcast")) -broadcast.datatype = "ip4addr" - - -dns = section:taboption("general", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns.datatype = "ipaddr" -dns.cast = "string" - - -if luci.model.network:has_ipv6() then - - local ip6assign = section:taboption("general", Value, "ip6assign", translate("IPv6 assignment length"), - translate("Assign a part of given length of every public IPv6-prefix to this interface")) - ip6assign:value("", translate("disabled")) - ip6assign:value("64") - ip6assign.datatype = "max(64)" - - local ip6hint = section:taboption("general", Value, "ip6hint", translate("IPv6 assignment hint"), - translate("Assign prefix parts using this hexadecimal subprefix ID for this interface.")) - for i=33,64 do ip6hint:depends("ip6assign", i) end - - ip6addr = section:taboption("general", Value, "ip6addr", translate("IPv6 address")) - ip6addr.datatype = "ip6addr" - ip6addr:depends("ip6assign", "") - - - ip6gw = section:taboption("general", Value, "ip6gw", translate("IPv6 gateway")) - ip6gw.datatype = "ip6addr" - ip6gw:depends("ip6assign", "") - - - local ip6prefix = s:taboption("general", Value, "ip6prefix", translate("IPv6 routed prefix"), - translate("Public prefix routed to this device for distribution to clients.")) - ip6prefix.datatype = "ip6addr" - ip6prefix:depends("ip6assign", "") - - local ip6ifaceid = s:taboption("general", Value, "ip6ifaceid", translate("IPv6 suffix"), - translate("Optional. Allowed values: 'eui64', 'random', fixed value like '::1' " .. - "or '::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a " .. - "delegating server, use the suffix (like '::1') to form the IPv6 address " .. - "('a:b:c:d::1') for the interface.")) - ip6ifaceid.datatype = "ip6hostid" - ip6ifaceid.placeholder = "::1" - ip6ifaceid.rmempty = true - -end - - -luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) - - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" diff --git a/package/luci/modules/luci-base/luasrc/model/firewall.lua b/package/luci/modules/luci-base/luasrc/model/firewall.lua deleted file mode 100644 index feff0855c4..0000000000 --- a/package/luci/modules/luci-base/luasrc/model/firewall.lua +++ /dev/null @@ -1,568 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local type, pairs, ipairs, table, luci, math - = type, pairs, ipairs, table, luci, math - -local tpl = require "luci.template.parser" -local utl = require "luci.util" -local uci = require "luci.model.uci" - -module "luci.model.firewall" - - -local uci_r, uci_s - -function _valid_id(x) - return (x and #x > 0 and x:match("^[a-zA-Z0-9_]+$")) -end - -function _get(c, s, o) - return uci_r:get(c, s, o) -end - -function _set(c, s, o, v) - if v ~= nil then - if type(v) == "boolean" then v = v and "1" or "0" end - return uci_r:set(c, s, o, v) - else - return uci_r:delete(c, s, o) - end -end - - -function init(cursor) - uci_r = cursor or uci_r or uci.cursor() - uci_s = uci_r:substate() - - return _M -end - -function save(self, ...) - uci_r:save(...) - uci_r:load(...) -end - -function commit(self, ...) - uci_r:commit(...) - uci_r:load(...) -end - -function get_defaults() - return defaults() -end - -function new_zone(self) - local name = "newzone" - local count = 1 - - while self:get_zone(name) do - count = count + 1 - name = "newzone%d" % count - end - - return self:add_zone(name) -end - -function add_zone(self, n) - if _valid_id(n) and not self:get_zone(n) then - local d = defaults() - local z = uci_r:section("firewall", "zone", nil, { - name = n, - network = " ", - input = d:input() or "DROP", - forward = d:forward() or "DROP", - output = d:output() or "DROP" - }) - - return z and zone(z) - end -end - -function get_zone(self, n) - if uci_r:get("firewall", n) == "zone" then - return zone(n) - else - local z - uci_r:foreach("firewall", "zone", - function(s) - if n and s.name == n then - z = s['.name'] - return false - end - end) - return z and zone(z) - end -end - -function get_zones(self) - local zones = { } - local znl = { } - - uci_r:foreach("firewall", "zone", - function(s) - if s.name then - znl[s.name] = zone(s['.name']) - end - end) - - local z - for z in utl.kspairs(znl) do - zones[#zones+1] = znl[z] - end - - return zones -end - -function get_zone_by_network(self, net) - local z - - uci_r:foreach("firewall", "zone", - function(s) - if s.name and net then - local n - for n in utl.imatch(s.network or s.name) do - if n == net then - z = s['.name'] - return false - end - end - end - end) - - return z and zone(z) -end - -function del_zone(self, n) - local r = false - - if uci_r:get("firewall", n) == "zone" then - local z = uci_r:get("firewall", n, "name") - r = uci_r:delete("firewall", n) - n = z - else - uci_r:foreach("firewall", "zone", - function(s) - if n and s.name == n then - r = uci_r:delete("firewall", s['.name']) - return false - end - end) - end - - if r then - uci_r:foreach("firewall", "rule", - function(s) - if s.src == n or s.dest == n then - uci_r:delete("firewall", s['.name']) - end - end) - - uci_r:foreach("firewall", "redirect", - function(s) - if s.src == n or s.dest == n then - uci_r:delete("firewall", s['.name']) - end - end) - - uci_r:foreach("firewall", "forwarding", - function(s) - if s.src == n or s.dest == n then - uci_r:delete("firewall", s['.name']) - end - end) - end - - return r -end - -function rename_zone(self, old, new) - local r = false - - if _valid_id(new) and not self:get_zone(new) then - uci_r:foreach("firewall", "zone", - function(s) - if old and s.name == old then - if not s.network then - uci_r:set("firewall", s['.name'], "network", old) - end - uci_r:set("firewall", s['.name'], "name", new) - r = true - return false - end - end) - - if r then - uci_r:foreach("firewall", "rule", - function(s) - if s.src == old then - uci_r:set("firewall", s['.name'], "src", new) - end - if s.dest == old then - uci_r:set("firewall", s['.name'], "dest", new) - end - end) - - uci_r:foreach("firewall", "redirect", - function(s) - if s.src == old then - uci_r:set("firewall", s['.name'], "src", new) - end - if s.dest == old then - uci_r:set("firewall", s['.name'], "dest", new) - end - end) - - uci_r:foreach("firewall", "forwarding", - function(s) - if s.src == old then - uci_r:set("firewall", s['.name'], "src", new) - end - if s.dest == old then - uci_r:set("firewall", s['.name'], "dest", new) - end - end) - end - end - - return r -end - -function del_network(self, net) - local z - if net then - for _, z in ipairs(self:get_zones()) do - z:del_network(net) - end - end -end - - -defaults = utl.class() -function defaults.__init__(self) - uci_r:foreach("firewall", "defaults", - function(s) - self.sid = s['.name'] - return false - end) - - self.sid = self.sid or uci_r:section("firewall", "defaults", nil, { }) -end - -function defaults.get(self, opt) - return _get("firewall", self.sid, opt) -end - -function defaults.set(self, opt, val) - return _set("firewall", self.sid, opt, val) -end - -function defaults.syn_flood(self) - return (self:get("syn_flood") == "1") -end - -function defaults.drop_invalid(self) - return (self:get("drop_invalid") == "1") -end - -function defaults.input(self) - return self:get("input") or "DROP" -end - -function defaults.forward(self) - return self:get("forward") or "DROP" -end - -function defaults.output(self) - return self:get("output") or "DROP" -end - - -zone = utl.class() -function zone.__init__(self, z) - if uci_r:get("firewall", z) == "zone" then - self.sid = z - self.data = uci_r:get_all("firewall", z) - else - uci_r:foreach("firewall", "zone", - function(s) - if s.name == z then - self.sid = s['.name'] - self.data = s - return false - end - end) - end -end - -function zone.get(self, opt) - return _get("firewall", self.sid, opt) -end - -function zone.set(self, opt, val) - return _set("firewall", self.sid, opt, val) -end - -function zone.masq(self) - return (self:get("masq") == "1") -end - -function zone.name(self) - return self:get("name") -end - -function zone.network(self) - return self:get("network") -end - -function zone.input(self) - return self:get("input") or defaults():input() or "DROP" -end - -function zone.forward(self) - return self:get("forward") or defaults():forward() or "DROP" -end - -function zone.output(self) - return self:get("output") or defaults():output() or "DROP" -end - -function zone.add_network(self, net) - if uci_r:get("network", net) == "interface" then - local nets = { } - - local n - for n in utl.imatch(self:get("network") or self:get("name")) do - if n ~= net then - nets[#nets+1] = n - end - end - - nets[#nets+1] = net - - _M:del_network(net) - self:set("network", table.concat(nets, " ")) - end -end - -function zone.del_network(self, net) - local nets = { } - - local n - for n in utl.imatch(self:get("network") or self:get("name")) do - if n ~= net then - nets[#nets+1] = n - end - end - - if #nets > 0 then - self:set("network", table.concat(nets, " ")) - else - self:set("network", " ") - end -end - -function zone.get_networks(self) - local nets = { } - - local n - for n in utl.imatch(self:get("network") or self:get("name")) do - nets[#nets+1] = n - end - - return nets -end - -function zone.clear_networks(self) - self:set("network", " ") -end - -function zone.get_forwardings_by(self, what) - local name = self:name() - local forwards = { } - - uci_r:foreach("firewall", "forwarding", - function(s) - if s.src and s.dest and s[what] == name then - forwards[#forwards+1] = forwarding(s['.name']) - end - end) - - return forwards -end - -function zone.add_forwarding_to(self, dest) - local exist, forward - - for _, forward in ipairs(self:get_forwardings_by('src')) do - if forward:dest() == dest then - exist = true - break - end - end - - if not exist and dest ~= self:name() and _valid_id(dest) then - local s = uci_r:section("firewall", "forwarding", nil, { - src = self:name(), - dest = dest - }) - - return s and forwarding(s) - end -end - -function zone.add_forwarding_from(self, src) - local exist, forward - - for _, forward in ipairs(self:get_forwardings_by('dest')) do - if forward:src() == src then - exist = true - break - end - end - - if not exist and src ~= self:name() and _valid_id(src) then - local s = uci_r:section("firewall", "forwarding", nil, { - src = src, - dest = self:name() - }) - - return s and forwarding(s) - end -end - -function zone.del_forwardings_by(self, what) - local name = self:name() - - uci_r:delete_all("firewall", "forwarding", - function(s) - return (s.src and s.dest and s[what] == name) - end) -end - -function zone.add_redirect(self, options) - options = options or { } - options.src = self:name() - - local s = uci_r:section("firewall", "redirect", nil, options) - return s and redirect(s) -end - -function zone.add_rule(self, options) - options = options or { } - options.src = self:name() - - local s = uci_r:section("firewall", "rule", nil, options) - return s and rule(s) -end - -function zone.get_color(self) - if self and self:name() == "lan" then - return "#90f090" - elseif self and self:name() == "wan" then - return "#f09090" - elseif self then - math.randomseed(tpl.hash(self:name())) - - local r = math.random(128) - local g = math.random(128) - local min = 0 - local max = 128 - - if ( r + g ) < 128 then - min = 128 - r - g - else - max = 255 - r - g - end - - local b = min + math.floor( math.random() * ( max - min ) ) - - return "#%02x%02x%02x" % { 0xFF - r, 0xFF - g, 0xFF - b } - else - return "#eeeeee" - end -end - - -forwarding = utl.class() -function forwarding.__init__(self, f) - self.sid = f -end - -function forwarding.src(self) - return uci_r:get("firewall", self.sid, "src") -end - -function forwarding.dest(self) - return uci_r:get("firewall", self.sid, "dest") -end - -function forwarding.src_zone(self) - local z = zone(self:src()) - return z.sid and z -end - -function forwarding.dest_zone(self) - local z = zone(self:dest()) - return z.sid and z -end - - -rule = utl.class() -function rule.__init__(self, f) - self.sid = f -end - -function rule.get(self, opt) - return _get("firewall", self.sid, opt) -end - -function rule.set(self, opt, val) - return _set("firewall", self.sid, opt, val) -end - -function rule.src(self) - return uci_r:get("firewall", self.sid, "src") -end - -function rule.dest(self) - return uci_r:get("firewall", self.sid, "dest") -end - -function rule.src_zone(self) - return zone(self:src()) -end - -function rule.dest_zone(self) - return zone(self:dest()) -end - - -redirect = utl.class() -function redirect.__init__(self, f) - self.sid = f -end - -function redirect.get(self, opt) - return _get("firewall", self.sid, opt) -end - -function redirect.set(self, opt, val) - return _set("firewall", self.sid, opt, val) -end - -function redirect.src(self) - return uci_r:get("firewall", self.sid, "src") -end - -function redirect.dest(self) - return uci_r:get("firewall", self.sid, "dest") -end - -function redirect.src_zone(self) - return zone(self:src()) -end - -function redirect.dest_zone(self) - return zone(self:dest()) -end diff --git a/package/luci/modules/luci-base/luasrc/model/ipkg.lua b/package/luci/modules/luci-base/luasrc/model/ipkg.lua deleted file mode 100644 index e653b03465..0000000000 --- a/package/luci/modules/luci-base/luasrc/model/ipkg.lua +++ /dev/null @@ -1,242 +0,0 @@ --- Copyright 2008-2011 Jo-Philipp Wich --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local os = require "os" -local io = require "io" -local fs = require "nixio.fs" -local util = require "luci.util" - -local type = type -local pairs = pairs -local error = error -local table = table - -local ipkg = "opkg --force-removal-of-dependent-packages --force-overwrite --nocase" -local icfg = "/etc/opkg.conf" - -module "luci.model.ipkg" - - --- Internal action function -local function _action(cmd, ...) - local pkg = "" - for k, v in pairs({...}) do - pkg = pkg .. " '" .. v:gsub("'", "") .. "'" - end - - local c = "%s %s %s >/tmp/opkg.stdout 2>/tmp/opkg.stderr" %{ ipkg, cmd, pkg } - local r = os.execute(c) - local e = fs.readfile("/tmp/opkg.stderr") - local o = fs.readfile("/tmp/opkg.stdout") - - fs.unlink("/tmp/opkg.stderr") - fs.unlink("/tmp/opkg.stdout") - - return r, o or "", e or "" -end - --- Internal parser function -local function _parselist(rawdata) - if type(rawdata) ~= "function" then - error("OPKG: Invalid rawdata given") - end - - local data = {} - local c = {} - local l = nil - - for line in rawdata do - if line:sub(1, 1) ~= " " then - local key, val = line:match("(.-): ?(.*)%s*") - - if key and val then - if key == "Package" then - c = {Package = val} - data[val] = c - elseif key == "Status" then - c.Status = {} - for j in val:gmatch("([^ ]+)") do - c.Status[j] = true - end - else - c[key] = val - end - l = key - end - else - -- Multi-line field - c[l] = c[l] .. "\n" .. line - end - end - - return data -end - --- Internal lookup function -local function _lookup(act, pkg) - local cmd = ipkg .. " " .. act - if pkg then - cmd = cmd .. " '" .. pkg:gsub("'", "") .. "'" - end - - -- OPKG sometimes kills the whole machine because it sucks - -- Therefore we have to use a sucky approach too and use - -- tmpfiles instead of directly reading the output - local tmpfile = os.tmpname() - os.execute(cmd .. (" >%s 2>/dev/null" % tmpfile)) - - local data = _parselist(io.lines(tmpfile)) - os.remove(tmpfile) - return data -end - - -function info(pkg) - return _lookup("info", pkg) -end - -function status(pkg) - return _lookup("status", pkg) -end - -function install(...) - return _action("install", ...) -end - -function installed(pkg) - local p = status(pkg)[pkg] - return (p and p.Status and p.Status.installed) -end - -function remove(...) - return _action("remove", ...) -end - -function update() - return _action("update") -end - -function upgrade() - return _action("upgrade") -end - --- List helper -local function _list(action, pat, cb) - local fd = io.popen(ipkg .. " " .. action .. - (pat and (" '%s'" % pat:gsub("'", "")) or "")) - - if fd then - local name, version, sz, desc - while true do - local line = fd:read("*l") - if not line then break end - - name, version, sz, desc = line:match("^(.-) %- (.-) %- (.-) %- (.+)") - - if not name then - name, version, sz = line:match("^(.-) %- (.-) %- (.+)") - desc = "" - end - - if name and version then - if #version > 26 then - version = version:sub(1,21) .. ".." .. version:sub(-3,-1) - end - - cb(name, version, sz, desc) - end - - name = nil - version = nil - sz = nil - desc = nil - end - - fd:close() - end -end - -function list_all(pat, cb) - _list("list --size", pat, cb) -end - -function list_installed(pat, cb) - _list("list_installed --size", pat, cb) -end - -function find(pat, cb) - _list("find --size", pat, cb) -end - - -function overlay_root() - local od = "/" - local fd = io.open(icfg, "r") - - if fd then - local ln - - repeat - ln = fd:read("*l") - if ln and ln:match("^%s*option%s+overlay_root%s+") then - od = ln:match("^%s*option%s+overlay_root%s+(%S+)") - - local s = fs.stat(od) - if not s or s.type ~= "dir" then - od = "/" - end - - break - end - until not ln - - fd:close() - end - - return od -end - -function compare_versions(ver1, comp, ver2) - if not ver1 or not ver2 - or not comp or not (#comp > 0) then - error("Invalid parameters") - return nil - end - -- correct compare string - if comp == "<>" or comp == "><" or comp == "!=" or comp == "~=" then comp = "~=" - elseif comp == "<=" or comp == "<" or comp == "=<" then comp = "<=" - elseif comp == ">=" or comp == ">" or comp == "=>" then comp = ">=" - elseif comp == "=" or comp == "==" then comp = "==" - elseif comp == "<<" then comp = "<" - elseif comp == ">>" then comp = ">" - else - error("Invalid compare string") - return nil - end - - local av1 = util.split(ver1, "[%.%-]", nil, true) - local av2 = util.split(ver2, "[%.%-]", nil, true) - - local max = table.getn(av1) - if (table.getn(av1) < table.getn(av2)) then - max = table.getn(av2) - end - - for i = 1, max, 1 do - local s1 = av1[i] or "" - local s2 = av2[i] or "" - - -- first "not equal" found return true - if comp == "~=" and (s1 ~= s2) then return true end - -- first "lower" found return true - if (comp == "<" or comp == "<=") and (s1 < s2) then return true end - -- first "greater" found return true - if (comp == ">" or comp == ">=") and (s1 > s2) then return true end - -- not equal then return false - if (s1 ~= s2) then return false end - end - - -- all equal and not compare greater or lower then true - return not (comp == "<" or comp == ">") -end diff --git a/package/luci/modules/luci-base/luasrc/model/ipkg.luadoc b/package/luci/modules/luci-base/luasrc/model/ipkg.luadoc deleted file mode 100644 index 4e1548dda6..0000000000 --- a/package/luci/modules/luci-base/luasrc/model/ipkg.luadoc +++ /dev/null @@ -1,125 +0,0 @@ ----[[ -LuCI OPKG call abstraction library -]] -module "luci.model.ipkg" - ----[[ -Return information about installed and available packages. - -@class function -@name info -@param pkg Limit output to a (set of) packages -@return Table containing package information -]] - ----[[ -Return the package status of one or more packages. - -@class function -@name status -@param pkg Limit output to a (set of) packages -@return Table containing package status information -]] - ----[[ -Install one or more packages. - -@class function -@name install -@param ... List of packages to install -@return Boolean indicating the status of the action -@return OPKG return code, STDOUT and STDERR -]] - ----[[ -Determine whether a given package is installed. - -@class function -@name installed -@param pkg Package -@return Boolean -]] - ----[[ -Remove one or more packages. - -@class function -@name remove -@param ... List of packages to install -@return Boolean indicating the status of the action -@return OPKG return code, STDOUT and STDERR -]] - ----[[ -Update package lists. - -@class function -@name update -@return Boolean indicating the status of the action -@return OPKG return code, STDOUT and STDERR -]] - ----[[ -Upgrades all installed packages. - -@class function -@name upgrade -@return Boolean indicating the status of the action -@return OPKG return code, STDOUT and STDERR -]] - ----[[ -List all packages known to opkg. - -@class function -@name list_all -@param pat Only find packages matching this pattern, nil lists all packages -@param cb Callback function invoked for each package, receives name, version and description as arguments -@return nothing -]] - ----[[ -List installed packages. - -@class function -@name list_installed -@param pat Only find packages matching this pattern, nil lists all packages -@param cb Callback function invoked for each package, receives name, version and description as arguments -@return nothing -]] - ----[[ -Find packages that match the given pattern. - -@class function -@name find -@param pat Find packages whose names or descriptions match this pattern, nil results in zero results -@param cb Callback function invoked for each patckage, receives name, version and description as arguments -@return nothing -]] - ----[[ -Determines the overlay root used by opkg. - -@class function -@name overlay_root -@return String containing the directory path of the overlay root. -]] - ----[[ -lua version of opkg compare-versions - -@class function -@name compare_versions -@param ver1 string version 1 -@param ver2 string version 2 -@param comp string compare versions using - "<=" or "<" lower-equal - ">" or ">=" greater-equal - "=" equal - "<<" lower - ">>" greater - "~=" not equal -@return Boolean indicating the status of the compare -]] - diff --git a/package/luci/modules/luci-base/luasrc/model/network.lua b/package/luci/modules/luci-base/luasrc/model/network.lua deleted file mode 100644 index d9ef4089c8..0000000000 --- a/package/luci/modules/luci-base/luasrc/model/network.lua +++ /dev/null @@ -1,1705 +0,0 @@ --- Copyright 2009-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local type, next, pairs, ipairs, loadfile, table, select - = type, next, pairs, ipairs, loadfile, table, select - -local tonumber, tostring, math = tonumber, tostring, math - -local require = require - -local nxo = require "nixio" -local nfs = require "nixio.fs" -local ipc = require "luci.ip" -local sys = require "luci.sys" -local utl = require "luci.util" -local dsp = require "luci.dispatcher" -local uci = require "luci.model.uci" -local lng = require "luci.i18n" -local jsc = require "luci.jsonc" - -module "luci.model.network" - - -IFACE_PATTERNS_VIRTUAL = { } -IFACE_PATTERNS_IGNORE = { "^wmaster%d", "^wifi%d", "^hwsim%d", "^imq%d", "^ifb%d", "^mon%.wlan%d", "^sit%d", "^gre%d", "^gretap%d", "^ip6gre%d", "^ip6tnl%d", "^tunl%d", "^lo$" } -IFACE_PATTERNS_WIRELESS = { "^wlan%d", "^wl%d", "^ath%d", "^%w+%.network%d" } - - -protocol = utl.class() - -local _protocols = { } - -local _interfaces, _bridge, _switch, _tunnel, _swtopo -local _ubusnetcache, _ubusdevcache, _ubuswificache -local _uci - -function _filter(c, s, o, r) - local val = _uci:get(c, s, o) - if val then - local l = { } - if type(val) == "string" then - for val in val:gmatch("%S+") do - if val ~= r then - l[#l+1] = val - end - end - if #l > 0 then - _uci:set(c, s, o, table.concat(l, " ")) - else - _uci:delete(c, s, o) - end - elseif type(val) == "table" then - for _, val in ipairs(val) do - if val ~= r then - l[#l+1] = val - end - end - if #l > 0 then - _uci:set(c, s, o, l) - else - _uci:delete(c, s, o) - end - end - end -end - -function _append(c, s, o, a) - local val = _uci:get(c, s, o) or "" - if type(val) == "string" then - local l = { } - for val in val:gmatch("%S+") do - if val ~= a then - l[#l+1] = val - end - end - l[#l+1] = a - _uci:set(c, s, o, table.concat(l, " ")) - elseif type(val) == "table" then - local l = { } - for _, val in ipairs(val) do - if val ~= a then - l[#l+1] = val - end - end - l[#l+1] = a - _uci:set(c, s, o, l) - end -end - -function _stror(s1, s2) - if not s1 or #s1 == 0 then - return s2 and #s2 > 0 and s2 - else - return s1 - end -end - -function _get(c, s, o) - return _uci:get(c, s, o) -end - -function _set(c, s, o, v) - if v ~= nil then - if type(v) == "boolean" then v = v and "1" or "0" end - return _uci:set(c, s, o, v) - else - return _uci:delete(c, s, o) - end -end - -function _wifi_iface(x) - local _, p - for _, p in ipairs(IFACE_PATTERNS_WIRELESS) do - if x:match(p) then - return true - end - end - return false -end - -function _wifi_state(key, val, field) - local radio, radiostate, ifc, ifcstate - - if not next(_ubuswificache) then - _ubuswificache = utl.ubus("network.wireless", "status", {}) or {} - - -- workaround extended section format - for radio, radiostate in pairs(_ubuswificache) do - for ifc, ifcstate in pairs(radiostate.interfaces) do - if ifcstate.section and ifcstate.section:sub(1, 1) == '@' then - local s = _uci:get_all('wireless.%s' % ifcstate.section) - if s then - ifcstate.section = s['.name'] - end - end - end - end - end - - for radio, radiostate in pairs(_ubuswificache) do - for ifc, ifcstate in pairs(radiostate.interfaces) do - if ifcstate[key] == val then - return ifcstate[field] - end - end - end -end - -function _wifi_lookup(ifn) - -- got a radio#.network# pseudo iface, locate the corresponding section - local radio, ifnidx = ifn:match("^(%w+)%.network(%d+)$") - if radio and ifnidx then - local sid = nil - local num = 0 - - ifnidx = tonumber(ifnidx) - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device == radio then - num = num + 1 - if num == ifnidx then - sid = s['.name'] - return false - end - end - end) - - return sid - - -- looks like wifi, try to locate the section via ubus state - elseif _wifi_iface(ifn) then - return _wifi_state("ifname", ifn, "section") - end -end - -function _iface_virtual(x) - local _, p - for _, p in ipairs(IFACE_PATTERNS_VIRTUAL) do - if x:match(p) then - return true - end - end - return false -end - -function _iface_ignore(x) - local _, p - for _, p in ipairs(IFACE_PATTERNS_IGNORE) do - if x:match(p) then - return true - end - end - return false -end - -function init(cursor) - _uci = cursor or _uci or uci.cursor() - - _interfaces = { } - _bridge = { } - _switch = { } - _tunnel = { } - _swtopo = { } - - _ubusnetcache = { } - _ubusdevcache = { } - _ubuswificache = { } - - -- read interface information - local n, i - for n, i in ipairs(nxo.getifaddrs()) do - local name = i.name:match("[^:]+") - - if _iface_virtual(name) then - _tunnel[name] = true - end - - if _tunnel[name] or not (_iface_ignore(name) or _iface_virtual(name)) then - _interfaces[name] = _interfaces[name] or { - idx = i.ifindex or n, - name = name, - rawname = i.name, - flags = { }, - ipaddrs = { }, - ip6addrs = { } - } - - if i.family == "packet" then - _interfaces[name].flags = i.flags - _interfaces[name].stats = i.data - _interfaces[name].macaddr = i.addr - elseif i.family == "inet" then - _interfaces[name].ipaddrs[#_interfaces[name].ipaddrs+1] = ipc.IPv4(i.addr, i.netmask) - elseif i.family == "inet6" then - _interfaces[name].ip6addrs[#_interfaces[name].ip6addrs+1] = ipc.IPv6(i.addr, i.netmask) - end - end - end - - -- read bridge informaton - local b, l - for l in utl.execi("brctl show") do - if not l:match("STP") then - local r = utl.split(l, "%s+", nil, true) - if #r == 4 then - b = { - name = r[1], - id = r[2], - stp = r[3] == "yes", - ifnames = { _interfaces[r[4]] } - } - if b.ifnames[1] then - b.ifnames[1].bridge = b - end - _bridge[r[1]] = b - elseif b then - b.ifnames[#b.ifnames+1] = _interfaces[r[2]] - b.ifnames[#b.ifnames].bridge = b - end - end - end - - -- read switch topology - local boardinfo = jsc.parse(nfs.readfile("/etc/board.json") or "") - if type(boardinfo) == "table" and type(boardinfo.switch) == "table" then - local switch, layout - for switch, layout in pairs(boardinfo.switch) do - if type(layout) == "table" and type(layout.ports) == "table" then - local _, port - local ports = { } - local nports = { } - local netdevs = { } - - for _, port in ipairs(layout.ports) do - if type(port) == "table" and - type(port.num) == "number" and - (type(port.role) == "string" or - type(port.device) == "string") - then - local spec = { - num = port.num, - role = port.role or "cpu", - index = port.index or port.num - } - - if port.device then - spec.device = port.device - spec.tagged = port.need_tag - netdevs[tostring(port.num)] = port.device - end - - ports[#ports+1] = spec - - if port.role then - nports[port.role] = (nports[port.role] or 0) + 1 - end - end - end - - table.sort(ports, function(a, b) - if a.role ~= b.role then - return (a.role < b.role) - end - - return (a.index < b.index) - end) - - local pnum, role - for _, port in ipairs(ports) do - if port.role ~= role then - role = port.role - pnum = 1 - end - - if role == "cpu" then - port.label = "CPU (%s)" % port.device - elseif nports[role] > 1 then - port.label = "%s %d" %{ role:upper(), pnum } - pnum = pnum + 1 - else - port.label = role:upper() - end - - port.role = nil - port.index = nil - end - - _swtopo[switch] = { - ports = ports, - netdevs = netdevs - } - end - end - end - - return _M -end - -function save(self, ...) - _uci:save(...) - _uci:load(...) -end - -function commit(self, ...) - _uci:commit(...) - _uci:load(...) -end - -function ifnameof(self, x) - if utl.instanceof(x, interface) then - return x:name() - elseif utl.instanceof(x, protocol) then - return x:ifname() - elseif type(x) == "string" then - return x:match("^[^:]+") - end -end - -function get_protocol(self, protoname, netname) - local v = _protocols[protoname] - if v then - return v(netname or "__dummy__") - end -end - -function get_protocols(self) - local p = { } - local _, v - for _, v in ipairs(_protocols) do - p[#p+1] = v("__dummy__") - end - return p -end - -function register_protocol(self, protoname) - local proto = utl.class(protocol) - - function proto.__init__(self, name) - self.sid = name - end - - function proto.proto(self) - return protoname - end - - _protocols[#_protocols+1] = proto - _protocols[protoname] = proto - - return proto -end - -function register_pattern_virtual(self, pat) - IFACE_PATTERNS_VIRTUAL[#IFACE_PATTERNS_VIRTUAL+1] = pat -end - - -function has_ipv6(self) - return nfs.access("/proc/net/ipv6_route") -end - -function add_network(self, n, options) - local oldnet = self:get_network(n) - if n and #n > 0 and n:match("^[a-zA-Z0-9_]+$") and not oldnet then - if _uci:section("network", "interface", n, options) then - return network(n) - end - elseif oldnet and oldnet:is_empty() then - if options then - local k, v - for k, v in pairs(options) do - oldnet:set(k, v) - end - end - return oldnet - end -end - -function get_network(self, n) - if n and _uci:get("network", n) == "interface" then - return network(n) - end -end - -function get_networks(self) - local nets = { } - local nls = { } - - _uci:foreach("network", "interface", - function(s) - nls[s['.name']] = network(s['.name']) - end) - - local n - for n in utl.kspairs(nls) do - nets[#nets+1] = nls[n] - end - - return nets -end - -function del_network(self, n) - local r = _uci:delete("network", n) - if r then - _uci:delete_all("network", "alias", - function(s) return (s.interface == n) end) - - _uci:delete_all("network", "route", - function(s) return (s.interface == n) end) - - _uci:delete_all("network", "route6", - function(s) return (s.interface == n) end) - - _uci:foreach("wireless", "wifi-iface", - function(s) - local net - local rest = { } - for net in utl.imatch(s.network) do - if net ~= n then - rest[#rest+1] = net - end - end - if #rest > 0 then - _uci:set("wireless", s['.name'], "network", - table.concat(rest, " ")) - else - _uci:delete("wireless", s['.name'], "network") - end - end) - end - return r -end - -function rename_network(self, old, new) - local r - if new and #new > 0 and new:match("^[a-zA-Z0-9_]+$") and not self:get_network(new) then - r = _uci:section("network", "interface", new, _uci:get_all("network", old)) - - if r then - _uci:foreach("network", "alias", - function(s) - if s.interface == old then - _uci:set("network", s['.name'], "interface", new) - end - end) - - _uci:foreach("network", "route", - function(s) - if s.interface == old then - _uci:set("network", s['.name'], "interface", new) - end - end) - - _uci:foreach("network", "route6", - function(s) - if s.interface == old then - _uci:set("network", s['.name'], "interface", new) - end - end) - - _uci:foreach("wireless", "wifi-iface", - function(s) - local net - local list = { } - for net in utl.imatch(s.network) do - if net == old then - list[#list+1] = new - else - list[#list+1] = net - end - end - if #list > 0 then - _uci:set("wireless", s['.name'], "network", - table.concat(list, " ")) - end - end) - - _uci:delete("network", old) - end - end - return r or false -end - -function get_interface(self, i) - if _interfaces[i] or _wifi_iface(i) then - return interface(i) - else - local ifc - local num = { } - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - if s['.name'] == i then - ifc = interface( - "%s.network%d" %{s.device, num[s.device] }) - return false - end - end - end) - return ifc - end -end - -function get_interfaces(self) - local iface - local ifaces = { } - local nfs = { } - - -- find normal interfaces - _uci:foreach("network", "interface", - function(s) - for iface in utl.imatch(s.ifname) do - if not _iface_ignore(iface) and not _iface_virtual(iface) and not _wifi_iface(iface) then - nfs[iface] = interface(iface) - end - end - end) - - for iface in utl.kspairs(_interfaces) do - if not (nfs[iface] or _iface_ignore(iface) or _iface_virtual(iface) or _wifi_iface(iface)) then - nfs[iface] = interface(iface) - end - end - - -- find vlan interfaces - _uci:foreach("network", "switch_vlan", - function(s) - if type(s.ports) ~= "string" or - type(s.device) ~= "string" or - type(_swtopo[s.device]) ~= "table" - then - return - end - - local pnum, ptag - for pnum, ptag in s.ports:gmatch("(%d+)([tu]?)") do - local netdev = _swtopo[s.device].netdevs[pnum] - if netdev then - if not nfs[netdev] then - nfs[netdev] = interface(netdev) - end - _switch[netdev] = true - - if ptag == "t" then - local vid = tonumber(s.vid or s.vlan) - if vid ~= nil and vid >= 0 and vid <= 4095 then - local iface = "%s.%d" %{ netdev, vid } - if not nfs[iface] then - nfs[iface] = interface(iface) - end - _switch[iface] = true - end - end - end - end - end) - - for iface in utl.kspairs(nfs) do - ifaces[#ifaces+1] = nfs[iface] - end - - -- find wifi interfaces - local num = { } - local wfs = { } - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - local i = "%s.network%d" %{ s.device, num[s.device] } - wfs[i] = interface(i) - end - end) - - for iface in utl.kspairs(wfs) do - ifaces[#ifaces+1] = wfs[iface] - end - - return ifaces -end - -function ignore_interface(self, x) - return _iface_ignore(x) -end - -function get_wifidev(self, dev) - if _uci:get("wireless", dev) == "wifi-device" then - return wifidev(dev) - end -end - -function get_wifidevs(self) - local devs = { } - local wfd = { } - - _uci:foreach("wireless", "wifi-device", - function(s) wfd[#wfd+1] = s['.name'] end) - - local dev - for _, dev in utl.vspairs(wfd) do - devs[#devs+1] = wifidev(dev) - end - - return devs -end - -function get_wifinet(self, net) - local wnet = _wifi_lookup(net) - if wnet then - return wifinet(wnet) - end -end - -function add_wifinet(self, net, options) - if type(options) == "table" and options.device and - _uci:get("wireless", options.device) == "wifi-device" - then - local wnet = _uci:section("wireless", "wifi-iface", nil, options) - return wifinet(wnet) - end -end - -function del_wifinet(self, net) - local wnet = _wifi_lookup(net) - if wnet then - _uci:delete("wireless", wnet) - return true - end - return false -end - -function get_status_by_route(self, addr, mask) - local _, object - for _, object in ipairs(utl.ubus()) do - local net = object:match("^network%.interface%.(.+)") - if net then - local s = utl.ubus(object, "status", {}) - if s and s.route then - local rt - for _, rt in ipairs(s.route) do - if not rt.table and rt.target == addr and rt.mask == mask then - return net, s - end - end - end - end - end -end - -function get_status_by_address(self, addr) - local _, object - for _, object in ipairs(utl.ubus()) do - local net = object:match("^network%.interface%.(.+)") - if net then - local s = utl.ubus(object, "status", {}) - if s and s['ipv4-address'] then - local a - for _, a in ipairs(s['ipv4-address']) do - if a.address == addr then - return net, s - end - end - end - if s and s['ipv6-address'] then - local a - for _, a in ipairs(s['ipv6-address']) do - if a.address == addr then - return net, s - end - end - end - end - end -end - -function get_wannet(self) - local net, stat = self:get_status_by_route("0.0.0.0", 0) - return net and network(net, stat.proto) -end - -function get_wandev(self) - local _, stat = self:get_status_by_route("0.0.0.0", 0) - return stat and interface(stat.l3_device or stat.device) -end - -function get_wan6net(self) - local net, stat = self:get_status_by_route("::", 0) - return net and network(net, stat.proto) -end - -function get_wan6dev(self) - local _, stat = self:get_status_by_route("::", 0) - return stat and interface(stat.l3_device or stat.device) -end - -function get_switch_topologies(self) - return _swtopo -end - - -function network(name, proto) - if name then - local p = proto or _uci:get("network", name, "proto") - local c = p and _protocols[p] or protocol - return c(name) - end -end - -function protocol.__init__(self, name) - self.sid = name -end - -function protocol._get(self, opt) - local v = _uci:get("network", self.sid, opt) - if type(v) == "table" then - return table.concat(v, " ") - end - return v or "" -end - -function protocol._ubus(self, field) - if not _ubusnetcache[self.sid] then - _ubusnetcache[self.sid] = utl.ubus("network.interface.%s" % self.sid, - "status", { }) - end - if _ubusnetcache[self.sid] and field then - return _ubusnetcache[self.sid][field] - end - return _ubusnetcache[self.sid] -end - -function protocol.get(self, opt) - return _get("network", self.sid, opt) -end - -function protocol.set(self, opt, val) - return _set("network", self.sid, opt, val) -end - -function protocol.ifname(self) - local ifname - if self:is_floating() then - ifname = self:_ubus("l3_device") - else - ifname = self:_ubus("device") - end - if not ifname then - local num = { } - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - num[s.device] = num[s.device] - and num[s.device] + 1 or 1 - - local net - for net in utl.imatch(s.network) do - if net == self.sid then - ifname = "%s.network%d" %{ s.device, num[s.device] } - return false - end - end - end - end) - end - return ifname -end - -function protocol.proto(self) - return "none" -end - -function protocol.get_i18n(self) - local p = self:proto() - if p == "none" then - return lng.translate("Unmanaged") - elseif p == "static" then - return lng.translate("Static address") - elseif p == "dhcp" then - return lng.translate("DHCP client") - else - return lng.translate("Unknown") - end -end - -function protocol.type(self) - return self:_get("type") -end - -function protocol.name(self) - return self.sid -end - -function protocol.uptime(self) - return self:_ubus("uptime") or 0 -end - -function protocol.expires(self) - local u = self:_ubus("uptime") - local d = self:_ubus("data") - - if type(u) == "number" and type(d) == "table" and - type(d.leasetime) == "number" - then - local r = (d.leasetime - (u % d.leasetime)) - return r > 0 and r or 0 - end - - return -1 -end - -function protocol.metric(self) - return self:_ubus("metric") or 0 -end - -function protocol.ipaddr(self) - local addrs = self:_ubus("ipv4-address") - return addrs and #addrs > 0 and addrs[1].address -end - -function protocol.ipaddrs(self) - local addrs = self:_ubus("ipv4-address") - local rv = { } - - if type(addrs) == "table" then - local n, addr - for n, addr in ipairs(addrs) do - rv[#rv+1] = "%s/%d" %{ addr.address, addr.mask } - end - end - - return rv -end - -function protocol.netmask(self) - local addrs = self:_ubus("ipv4-address") - return addrs and #addrs > 0 and - ipc.IPv4("0.0.0.0/%d" % addrs[1].mask):mask():string() -end - -function protocol.gwaddr(self) - local _, route - for _, route in ipairs(self:_ubus("route") or { }) do - if route.target == "0.0.0.0" and route.mask == 0 then - return route.nexthop - end - end -end - -function protocol.dnsaddrs(self) - local dns = { } - local _, addr - for _, addr in ipairs(self:_ubus("dns-server") or { }) do - if not addr:match(":") then - dns[#dns+1] = addr - end - end - return dns -end - -function protocol.ip6addr(self) - local addrs = self:_ubus("ipv6-address") - if addrs and #addrs > 0 then - return "%s/%d" %{ addrs[1].address, addrs[1].mask } - else - addrs = self:_ubus("ipv6-prefix-assignment") - if addrs and #addrs > 0 then - return "%s/%d" %{ addrs[1].address, addrs[1].mask } - end - end -end - -function protocol.ip6addrs(self) - local addrs = self:_ubus("ipv6-address") - local rv = { } - local n, addr - - if type(addrs) == "table" then - for n, addr in ipairs(addrs) do - rv[#rv+1] = "%s/%d" %{ addr.address, addr.mask } - end - end - - addrs = self:_ubus("ipv6-prefix-assignment") - - if type(addrs) == "table" then - for n, addr in ipairs(addrs) do - rv[#rv+1] = "%s1/%d" %{ addr.address, addr.mask } - end - end - - return rv -end - -function protocol.gw6addr(self) - local _, route - for _, route in ipairs(self:_ubus("route") or { }) do - if route.target == "::" and route.mask == 0 then - return ipc.IPv6(route.nexthop):string() - end - end -end - -function protocol.dns6addrs(self) - local dns = { } - local _, addr - for _, addr in ipairs(self:_ubus("dns-server") or { }) do - if addr:match(":") then - dns[#dns+1] = addr - end - end - return dns -end - -function protocol.ip6prefix(self) - local prefix = self:_ubus("ipv6-prefix") - if prefix and #prefix > 0 then - return "%s/%d" %{ prefix[1].address, prefix[1].mask } - end -end - -function protocol.is_bridge(self) - return (not self:is_virtual() and self:type() == "bridge") -end - -function protocol.opkg_package(self) - return nil -end - -function protocol.is_installed(self) - return true -end - -function protocol.is_virtual(self) - return false -end - -function protocol.is_floating(self) - return false -end - -function protocol.is_empty(self) - if self:is_floating() then - return false - else - local rv = true - - if (self:_get("ifname") or ""):match("%S+") then - rv = false - end - - _uci:foreach("wireless", "wifi-iface", - function(s) - local n - for n in utl.imatch(s.network) do - if n == self.sid then - rv = false - return false - end - end - end) - - return rv - end -end - -function protocol.add_interface(self, ifname) - ifname = _M:ifnameof(ifname) - if ifname and not self:is_floating() then - -- if its a wifi interface, change its network option - local wif = _wifi_lookup(ifname) - if wif then - _append("wireless", wif, "network", self.sid) - - -- add iface to our iface list - else - _append("network", self.sid, "ifname", ifname) - end - end -end - -function protocol.del_interface(self, ifname) - ifname = _M:ifnameof(ifname) - if ifname and not self:is_floating() then - -- if its a wireless interface, clear its network option - local wif = _wifi_lookup(ifname) - if wif then _filter("wireless", wif, "network", self.sid) end - - -- remove the interface - _filter("network", self.sid, "ifname", ifname) - end -end - -function protocol.get_interface(self) - if self:is_virtual() then - _tunnel[self:proto() .. "-" .. self.sid] = true - return interface(self:proto() .. "-" .. self.sid, self) - elseif self:is_bridge() then - _bridge["br-" .. self.sid] = true - return interface("br-" .. self.sid, self) - else - local ifn = nil - local num = { } - for ifn in utl.imatch(_uci:get("network", self.sid, "ifname")) do - ifn = ifn:match("^[^:/]+") - return ifn and interface(ifn, self) - end - ifn = nil - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - - local net - for net in utl.imatch(s.network) do - if net == self.sid then - ifn = "%s.network%d" %{ s.device, num[s.device] } - return false - end - end - end - end) - return ifn and interface(ifn, self) - end -end - -function protocol.get_interfaces(self) - if self:is_bridge() or (self:is_virtual() and not self:is_floating()) then - local ifaces = { } - - local ifn - local nfs = { } - for ifn in utl.imatch(self:get("ifname")) do - ifn = ifn:match("^[^:/]+") - nfs[ifn] = interface(ifn, self) - end - - for ifn in utl.kspairs(nfs) do - ifaces[#ifaces+1] = nfs[ifn] - end - - local num = { } - local wfs = { } - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - - local net - for net in utl.imatch(s.network) do - if net == self.sid then - ifn = "%s.network%d" %{ s.device, num[s.device] } - wfs[ifn] = interface(ifn, self) - end - end - end - end) - - for ifn in utl.kspairs(wfs) do - ifaces[#ifaces+1] = wfs[ifn] - end - - return ifaces - end -end - -function protocol.contains_interface(self, ifname) - ifname = _M:ifnameof(ifname) - if not ifname then - return false - elseif self:is_virtual() and self:proto() .. "-" .. self.sid == ifname then - return true - elseif self:is_bridge() and "br-" .. self.sid == ifname then - return true - else - local ifn - for ifn in utl.imatch(self:get("ifname")) do - ifn = ifn:match("[^:]+") - if ifn == ifname then - return true - end - end - - local wif = _wifi_lookup(ifname) - if wif then - local n - for n in utl.imatch(_uci:get("wireless", wif, "network")) do - if n == self.sid then - return true - end - end - end - end - - return false -end - -function protocol.adminlink(self) - return dsp.build_url("admin", "network", "network", self.sid) -end - - -interface = utl.class() - -function interface.__init__(self, ifname, network) - local wif = _wifi_lookup(ifname) - if wif then - self.wif = wifinet(wif) - self.ifname = _wifi_state("section", wif, "ifname") - end - - self.ifname = self.ifname or ifname - self.dev = _interfaces[self.ifname] - self.network = network -end - -function interface._ubus(self, field) - if not _ubusdevcache[self.ifname] then - _ubusdevcache[self.ifname] = utl.ubus("network.device", "status", - { name = self.ifname }) - end - if _ubusdevcache[self.ifname] and field then - return _ubusdevcache[self.ifname][field] - end - return _ubusdevcache[self.ifname] -end - -function interface.name(self) - return self.wif and self.wif:ifname() or self.ifname -end - -function interface.mac(self) - local mac = self:_ubus("macaddr") - return mac and mac:upper() -end - -function interface.ipaddrs(self) - return self.dev and self.dev.ipaddrs or { } -end - -function interface.ip6addrs(self) - return self.dev and self.dev.ip6addrs or { } -end - -function interface.type(self) - if self.wif or _wifi_iface(self.ifname) then - return "wifi" - elseif _bridge[self.ifname] then - return "bridge" - elseif _tunnel[self.ifname] then - return "tunnel" - elseif self.ifname:match("%.") then - return "vlan" - elseif _switch[self.ifname] then - return "switch" - else - return "ethernet" - end -end - -function interface.shortname(self) - if self.wif then - return self.wif:shortname() - else - return self.ifname - end -end - -function interface.get_i18n(self) - if self.wif then - return "%s: %s %q" %{ - lng.translate("Wireless Network"), - self.wif:active_mode(), - self.wif:active_ssid() or self.wif:active_bssid() or self.wif:id() - } - else - return "%s: %q" %{ self:get_type_i18n(), self:name() } - end -end - -function interface.get_type_i18n(self) - local x = self:type() - if x == "wifi" then - return lng.translate("Wireless Adapter") - elseif x == "bridge" then - return lng.translate("Bridge") - elseif x == "switch" then - return lng.translate("Ethernet Switch") - elseif x == "vlan" then - if _switch[self.ifname] then - return lng.translate("Switch VLAN") - else - return lng.translate("Software VLAN") - end - elseif x == "tunnel" then - return lng.translate("Tunnel Interface") - else - return lng.translate("Ethernet Adapter") - end -end - -function interface.adminlink(self) - if self.wif then - return self.wif:adminlink() - end -end - -function interface.ports(self) - local members = self:_ubus("bridge-members") - if members then - local _, iface - local ifaces = { } - for _, iface in ipairs(members) do - ifaces[#ifaces+1] = interface(iface) - end - end -end - -function interface.bridge_id(self) - if self.br then - return self.br.id - else - return nil - end -end - -function interface.bridge_stp(self) - if self.br then - return self.br.stp - else - return false - end -end - -function interface.is_up(self) - return self:_ubus("up") or false -end - -function interface.is_bridge(self) - return (self:type() == "bridge") -end - -function interface.is_bridgeport(self) - return self.dev and self.dev.bridge and true or false -end - -function interface.tx_bytes(self) - local stat = self:_ubus("statistics") - return stat and stat.tx_bytes or 0 -end - -function interface.rx_bytes(self) - local stat = self:_ubus("statistics") - return stat and stat.rx_bytes or 0 -end - -function interface.tx_packets(self) - local stat = self:_ubus("statistics") - return stat and stat.tx_packets or 0 -end - -function interface.rx_packets(self) - local stat = self:_ubus("statistics") - return stat and stat.rx_packets or 0 -end - -function interface.get_network(self) - return self:get_networks()[1] -end - -function interface.get_networks(self) - if not self.networks then - local nets = { } - local _, net - for _, net in ipairs(_M:get_networks()) do - if net:contains_interface(self.ifname) or - net:ifname() == self.ifname - then - nets[#nets+1] = net - end - end - table.sort(nets, function(a, b) return a.sid < b.sid end) - self.networks = nets - return nets - else - return self.networks - end -end - -function interface.get_wifinet(self) - return self.wif -end - - -wifidev = utl.class() - -function wifidev.__init__(self, dev) - self.sid = dev - self.iwinfo = dev and sys.wifi.getiwinfo(dev) or { } -end - -function wifidev.get(self, opt) - return _get("wireless", self.sid, opt) -end - -function wifidev.set(self, opt, val) - return _set("wireless", self.sid, opt, val) -end - -function wifidev.name(self) - return self.sid -end - -function wifidev.hwmodes(self) - local l = self.iwinfo.hwmodelist - if l and next(l) then - return l - else - return { b = true, g = true } - end -end - -function wifidev.get_i18n(self) - local t = "Generic" - if self.iwinfo.type == "wl" then - t = "Broadcom" - end - - local m = "" - local l = self:hwmodes() - if l.a then m = m .. "a" end - if l.b then m = m .. "b" end - if l.g then m = m .. "g" end - if l.n then m = m .. "n" end - if l.ac then m = "ac" end - - return "%s 802.11%s Wireless Controller (%s)" %{ t, m, self:name() } -end - -function wifidev.is_up(self) - if _ubuswificache[self.sid] then - return (_ubuswificache[self.sid].up == true) - end - - return false -end - -function wifidev.get_wifinet(self, net) - if _uci:get("wireless", net) == "wifi-iface" then - return wifinet(net) - else - local wnet = _wifi_lookup(net) - if wnet then - return wifinet(wnet) - end - end -end - -function wifidev.get_wifinets(self) - local nets = { } - - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device == self.sid then - nets[#nets+1] = wifinet(s['.name']) - end - end) - - return nets -end - -function wifidev.add_wifinet(self, options) - options = options or { } - options.device = self.sid - - local wnet = _uci:section("wireless", "wifi-iface", nil, options) - if wnet then - return wifinet(wnet, options) - end -end - -function wifidev.del_wifinet(self, net) - if utl.instanceof(net, wifinet) then - net = net.sid - elseif _uci:get("wireless", net) ~= "wifi-iface" then - net = _wifi_lookup(net) - end - - if net and _uci:get("wireless", net, "device") == self.sid then - _uci:delete("wireless", net) - return true - end - - return false -end - - -wifinet = utl.class() - -function wifinet.__init__(self, net, data) - self.sid = net - - local n = 0 - local num = { } - local netid, sid - _uci:foreach("wireless", "wifi-iface", - function(s) - n = n + 1 - if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - if s['.name'] == self.sid then - sid = "@wifi-iface[%d]" % n - netid = "%s.network%d" %{ s.device, num[s.device] } - return false - end - end - end) - - if sid then - local _, k, r, i - for k, r in pairs(_ubuswificache) do - if type(r) == "table" and - type(r.interfaces) == "table" - then - for _, i in ipairs(r.interfaces) do - if type(i) == "table" and i.section == sid then - self._ubusdata = { - radio = k, - dev = r, - net = i - } - end - end - end - end - end - - local dev = _wifi_state("section", self.sid, "ifname") or netid - - self.netid = netid - self.wdev = dev - self.iwinfo = dev and sys.wifi.getiwinfo(dev) or { } -end - -function wifinet.ubus(self, ...) - local n, v = self._ubusdata - for n = 1, select('#', ...) do - if type(v) == "table" then - v = v[select(n, ...)] - else - return nil - end - end - return v -end - -function wifinet.get(self, opt) - return _get("wireless", self.sid, opt) -end - -function wifinet.set(self, opt, val) - return _set("wireless", self.sid, opt, val) -end - -function wifinet.mode(self) - return self:ubus("net", "config", "mode") or self:get("mode") or "ap" -end - -function wifinet.ssid(self) - return self:ubus("net", "config", "ssid") or self:get("ssid") -end - -function wifinet.bssid(self) - return self:ubus("net", "config", "bssid") or self:get("bssid") -end - -function wifinet.network(self) - local net, networks = nil, { } - for net in utl.imatch(self:ubus("net", "config", "network") or self:get("network")) do - networks[#networks+1] = net - end - return networks -end - -function wifinet.id(self) - return self.netid -end - -function wifinet.name(self) - return self.sid -end - -function wifinet.ifname(self) - local ifname = self:ubus("net", "ifname") or self.iwinfo.ifname - if not ifname or ifname:match("^wifi%d") or ifname:match("^radio%d") then - ifname = self.wdev - end - return ifname -end - -function wifinet.get_device(self) - local dev = self:ubus("radio") or self:get("device") - return dev and wifidev(dev) or nil -end - -function wifinet.is_up(self) - local ifc = self:get_interface() - return (ifc and ifc:is_up() or false) -end - -function wifinet.active_mode(self) - local m = self.iwinfo.mode or self:ubus("net", "config", "mode") or self:get("mode") or "ap" - - if m == "ap" then m = "Master" - elseif m == "sta" then m = "Client" - elseif m == "adhoc" then m = "Ad-Hoc" - elseif m == "mesh" then m = "Mesh" - elseif m == "monitor" then m = "Monitor" - end - - return m -end - -function wifinet.active_mode_i18n(self) - return lng.translate(self:active_mode()) -end - -function wifinet.active_ssid(self) - return self.iwinfo.ssid or self:ubus("net", "config", "ssid") or self:get("ssid") -end - -function wifinet.active_bssid(self) - return self.iwinfo.bssid or self:ubus("net", "config", "bssid") or self:get("bssid") -end - -function wifinet.active_encryption(self) - local enc = self.iwinfo and self.iwinfo.encryption - return enc and enc.description or "-" -end - -function wifinet.assoclist(self) - return self.iwinfo.assoclist or { } -end - -function wifinet.frequency(self) - local freq = self.iwinfo.frequency - if freq and freq > 0 then - return "%.03f" % (freq / 1000) - end -end - -function wifinet.bitrate(self) - local rate = self.iwinfo.bitrate - if rate and rate > 0 then - return (rate / 1000) - end -end - -function wifinet.channel(self) - return self.iwinfo.channel or self:ubus("dev", "config", "channel") or - tonumber(self:get("channel")) -end - -function wifinet.signal(self) - return self.iwinfo.signal or 0 -end - -function wifinet.noise(self) - return self.iwinfo.noise or 0 -end - -function wifinet.country(self) - return self.iwinfo.country or self:ubus("dev", "config", "country") or "00" -end - -function wifinet.txpower(self) - local pwr = (self.iwinfo.txpower or 0) - return pwr + self:txpower_offset() -end - -function wifinet.txpower_offset(self) - return self.iwinfo.txpower_offset or 0 -end - -function wifinet.signal_level(self, s, n) - if self:active_bssid() ~= "00:00:00:00:00:00" then - local signal = s or self:signal() - local noise = n or self:noise() - - if signal < 0 and noise < 0 then - local snr = -1 * (noise - signal) - return math.floor(snr / 5) - else - return 0 - end - else - return -1 - end -end - -function wifinet.signal_percent(self) - local qc = self.iwinfo.quality or 0 - local qm = self.iwinfo.quality_max or 0 - - if qc > 0 and qm > 0 then - return math.floor((100 / qm) * qc) - else - return 0 - end -end - -function wifinet.shortname(self) - return "%s %q" %{ - lng.translate(self:active_mode()), - self:active_ssid() or self:active_bssid() or self:id() - } -end - -function wifinet.get_i18n(self) - return "%s: %s %q (%s)" %{ - lng.translate("Wireless Network"), - lng.translate(self:active_mode()), - self:active_ssid() or self:active_bssid() or self:id(), - self:ifname() - } -end - -function wifinet.adminlink(self) - return dsp.build_url("admin", "network", "wireless", self.netid) -end - -function wifinet.get_network(self) - return self:get_networks()[1] -end - -function wifinet.get_networks(self) - local nets = { } - local net - for net in utl.imatch(self:ubus("net", "config", "network") or self:get("network")) do - if _uci:get("network", net) == "interface" then - nets[#nets+1] = network(net) - end - end - table.sort(nets, function(a, b) return a.sid < b.sid end) - return nets -end - -function wifinet.get_interface(self) - return interface(self:ifname()) -end - - --- setup base protocols -_M:register_protocol("static") -_M:register_protocol("dhcp") -_M:register_protocol("none") - --- load protocol extensions -local exts = nfs.dir(utl.libpath() .. "/model/network") -if exts then - local ext - for ext in exts do - if ext:match("%.lua$") then - require("luci.model.network." .. ext:gsub("%.lua$", "")) - end - end -end diff --git a/package/luci/modules/luci-base/luasrc/model/uci.lua b/package/luci/modules/luci-base/luasrc/model/uci.lua deleted file mode 100644 index 577c6cde08..0000000000 --- a/package/luci/modules/luci-base/luasrc/model/uci.lua +++ /dev/null @@ -1,236 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local os = require "os" -local uci = require "uci" -local util = require "luci.util" -local table = require "table" - - -local setmetatable, rawget, rawset = setmetatable, rawget, rawset -local require, getmetatable = require, getmetatable -local error, pairs, ipairs = error, pairs, ipairs -local type, tostring, tonumber, unpack = type, tostring, tonumber, unpack - --- The typical workflow for UCI is: Get a cursor instance from the --- cursor factory, modify data (via Cursor.add, Cursor.delete, etc.), --- save the changes to the staging area via Cursor.save and finally --- Cursor.commit the data to the actual config files. --- LuCI then needs to Cursor.apply the changes so deamons etc. are --- reloaded. -module "luci.model.uci" - -cursor = uci.cursor - -APIVERSION = uci.APIVERSION - -function cursor_state() - return cursor(nil, "/var/state") -end - - -inst = cursor() -inst_state = cursor_state() - -local Cursor = getmetatable(inst) - -function Cursor.apply(self, configlist, command) - configlist = self:_affected(configlist) - if command then - return { "/sbin/luci-reload", unpack(configlist) } - else - return os.execute("/sbin/luci-reload %s >/dev/null 2>&1" - % table.concat(configlist, " ")) - end -end - - --- returns a boolean whether to delete the current section (optional) -function Cursor.delete_all(self, config, stype, comparator) - local del = {} - - if type(comparator) == "table" then - local tbl = comparator - comparator = function(section) - for k, v in pairs(tbl) do - if section[k] ~= v then - return false - end - end - return true - end - end - - local function helper (section) - - if not comparator or comparator(section) then - del[#del+1] = section[".name"] - end - end - - self:foreach(config, stype, helper) - - for i, j in ipairs(del) do - self:delete(config, j) - end -end - -function Cursor.section(self, config, type, name, values) - local stat = true - if name then - stat = self:set(config, name, type) - else - name = self:add(config, type) - stat = name and true - end - - if stat and values then - stat = self:tset(config, name, values) - end - - return stat and name -end - -function Cursor.tset(self, config, section, values) - local stat = true - for k, v in pairs(values) do - if k:sub(1, 1) ~= "." then - stat = stat and self:set(config, section, k, v) - end - end - return stat -end - -function Cursor.get_bool(self, ...) - local val = self:get(...) - return ( val == "1" or val == "true" or val == "yes" or val == "on" ) -end - -function Cursor.get_list(self, config, section, option) - if config and section and option then - local val = self:get(config, section, option) - return ( type(val) == "table" and val or { val } ) - end - return {} -end - -function Cursor.get_first(self, conf, stype, opt, def) - local rv = def - - self:foreach(conf, stype, - function(s) - local val = not opt and s['.name'] or s[opt] - - if type(def) == "number" then - val = tonumber(val) - elseif type(def) == "boolean" then - val = (val == "1" or val == "true" or - val == "yes" or val == "on") - end - - if val ~= nil then - rv = val - return false - end - end) - - return rv -end - -function Cursor.set_list(self, config, section, option, value) - if config and section and option then - if not value or #value == 0 then - return self:delete(config, section, option) - end - return self:set( - config, section, option, - ( type(value) == "table" and value or { value } ) - ) - end - return false -end - --- Return a list of initscripts affected by configuration changes. -function Cursor._affected(self, configlist) - configlist = type(configlist) == "table" and configlist or {configlist} - - local c = cursor() - c:load("ucitrack") - - -- Resolve dependencies - local reloadlist = {} - - local function _resolve_deps(name) - local reload = {name} - local deps = {} - - c:foreach("ucitrack", name, - function(section) - if section.affects then - for i, aff in ipairs(section.affects) do - deps[#deps+1] = aff - end - end - end) - - for i, dep in ipairs(deps) do - for j, add in ipairs(_resolve_deps(dep)) do - reload[#reload+1] = add - end - end - - return reload - end - - -- Collect initscripts - for j, config in ipairs(configlist) do - for i, e in ipairs(_resolve_deps(config)) do - if not util.contains(reloadlist, e) then - reloadlist[#reloadlist+1] = e - end - end - end - - return reloadlist -end - --- curser, means it the parent unloads or loads configs, the sub state will --- do so as well. -function Cursor.substate(self) - Cursor._substates = Cursor._substates or { } - Cursor._substates[self] = Cursor._substates[self] or cursor_state() - return Cursor._substates[self] -end - -local _load = Cursor.load -function Cursor.load(self, ...) - if Cursor._substates and Cursor._substates[self] then - _load(Cursor._substates[self], ...) - end - return _load(self, ...) -end - -local _unload = Cursor.unload -function Cursor.unload(self, ...) - if Cursor._substates and Cursor._substates[self] then - _unload(Cursor._substates[self], ...) - end - return _unload(self, ...) -end - - - - - - - - - - - - - - - - - diff --git a/package/luci/modules/luci-base/luasrc/model/uci.luadoc b/package/luci/modules/luci-base/luasrc/model/uci.luadoc deleted file mode 100644 index 49093c7930..0000000000 --- a/package/luci/modules/luci-base/luasrc/model/uci.luadoc +++ /dev/null @@ -1,299 +0,0 @@ ----[[ -LuCI UCI model library. - -The typical workflow for UCI is: Get a cursor instance from the -cursor factory, modify data (via Cursor.add, Cursor.delete, etc.), -save the changes to the staging area via Cursor.save and finally -Cursor.commit the data to the actual config files. -LuCI then needs to Cursor.apply the changes so deamons etc. are -reloaded. -@cstyle instance -]] -module "luci.model.uci" - ----[[ -Create a new UCI-Cursor. - -@class function -@name cursor -@return UCI-Cursor -]] - ----[[ -Create a new Cursor initialized to the state directory. - -@class function -@name cursor_state -@return UCI cursor -]] - ----[[ -Applies UCI configuration changes - -@class function -@name Cursor.apply -@param configlist List of UCI configurations -@param command Don't apply only return the command -]] - ----[[ -Delete all sections of a given type that match certain criteria. - -@class function -@name Cursor.delete_all -@param config UCI config -@param type UCI section type -@param comparator Function that will be called for each section and -returns a boolean whether to delete the current section (optional) -]] - ----[[ -Create a new section and initialize it with data. - -@class function -@name Cursor.section -@param config UCI config -@param type UCI section type -@param name UCI section name (optional) -@param values Table of key - value pairs to initialize the section with -@return Name of created section -]] - ----[[ -Updated the data of a section using data from a table. - -@class function -@name Cursor.tset -@param config UCI config -@param section UCI section name (optional) -@param values Table of key - value pairs to update the section with -]] - ----[[ -Get a boolean option and return it's value as true or false. - -@class function -@name Cursor.get_bool -@param config UCI config -@param section UCI section name -@param option UCI option -@return Boolean -]] - ----[[ -Get an option or list and return values as table. - -@class function -@name Cursor.get_list -@param config UCI config -@param section UCI section name -@param option UCI option -@return table. If the option was not found, you will simply get --- an empty table. -]] - ----[[ -Get the given option from the first section with the given type. - -@class function -@name Cursor.get_first -@param config UCI config -@param type UCI section type -@param option UCI option (optional) -@param default Default value (optional) -@return UCI value -]] - ----[[ -Set given values as list. Setting a list option to an empty list -has the same effect as deleting the option. - -@class function -@name Cursor.set_list -@param config UCI config -@param section UCI section name -@param option UCI option -@param value value or table. Raw values will become a single item table. -@return Boolean whether operation succeeded -]] - ----[[ -Create a sub-state of this cursor. The sub-state is tied to the parent - -curser, means it the parent unloads or loads configs, the sub state will -do so as well. -@class function -@name Cursor.substate -@return UCI state cursor tied to the parent cursor -]] - ----[[ -Add an anonymous section. - -@class function -@name Cursor.add -@param config UCI config -@param type UCI section type -@return Name of created section -]] - ----[[ -Get a table of saved but uncommitted changes. - -@class function -@name Cursor.changes -@param config UCI config -@return Table of changes -@see Cursor.save -]] - ----[[ -Commit saved changes. - -@class function -@name Cursor.commit -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.revert -@see Cursor.save -]] - ----[[ -Deletes a section or an option. - -@class function -@name Cursor.delete -@param config UCI config -@param section UCI section name -@param option UCI option (optional) -@return Boolean whether operation succeeded -]] - ----[[ -Call a function for every section of a certain type. - -@class function -@name Cursor.foreach -@param config UCI config -@param type UCI section type -@param callback Function to be called -@return Boolean whether operation succeeded -]] - ----[[ -Get a section type or an option - -@class function -@name Cursor.get -@param config UCI config -@param section UCI section name -@param option UCI option (optional) -@return UCI value -]] - ----[[ -Get all sections of a config or all values of a section. - -@class function -@name Cursor.get_all -@param config UCI config -@param section UCI section name (optional) -@return Table of UCI sections or table of UCI values -]] - ----[[ -Manually load a config. - -@class function -@name Cursor.load -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.save -@see Cursor.unload -]] - ----[[ -Revert saved but uncommitted changes. - -@class function -@name Cursor.revert -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.commit -@see Cursor.save -]] - ----[[ -Saves changes made to a config to make them committable. - -@class function -@name Cursor.save -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.load -@see Cursor.unload -]] - ----[[ -Set a value or create a named section. - -When invoked with three arguments `config`, `sectionname`, `sectiontype`, -then a named section of the given type is created. - -When invoked with four arguments `config`, `sectionname`, `optionname` and -`optionvalue` then the value of the specified option is set to the given value. - -@class function -@name Cursor.set -@param config UCI config -@param section UCI section name -@param option UCI option or UCI section type -@param value UCI value or nothing if you want to create a section -@return Boolean whether operation succeeded -]] - ----[[ -Get the configuration directory. - -@class function -@name Cursor.get_confdir -@return Configuration directory -]] - ----[[ -Get the directory for uncomitted changes. - -@class function -@name Cursor.get_savedir -@return Save directory -]] - ----[[ -Set the configuration directory. - -@class function -@name Cursor.set_confdir -@param directory UCI configuration directory -@return Boolean whether operation succeeded -]] - ----[[ -Set the directory for uncommited changes. - -@class function -@name Cursor.set_savedir -@param directory UCI changes directory -@return Boolean whether operation succeeded -]] - ----[[ -Discard changes made to a config. - -@class function -@name Cursor.unload -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.load -@see Cursor.save -]] - diff --git a/package/luci/modules/luci-base/luasrc/sgi/cgi.lua b/package/luci/modules/luci-base/luasrc/sgi/cgi.lua deleted file mode 100644 index 68ae17a9eb..0000000000 --- a/package/luci/modules/luci-base/luasrc/sgi/cgi.lua +++ /dev/null @@ -1,73 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -exectime = os.clock() -module("luci.sgi.cgi", package.seeall) -local ltn12 = require("luci.ltn12") -require("nixio.util") -require("luci.http") -require("luci.sys") -require("luci.dispatcher") - --- Limited source to avoid endless blocking -local function limitsource(handle, limit) - limit = limit or 0 - local BLOCKSIZE = ltn12.BLOCKSIZE - - return function() - if limit < 1 then - handle:close() - return nil - else - local read = (limit > BLOCKSIZE) and BLOCKSIZE or limit - limit = limit - read - - local chunk = handle:read(read) - if not chunk then handle:close() end - return chunk - end - end -end - -function run() - local r = luci.http.Request( - luci.sys.getenv(), - limitsource(io.stdin, tonumber(luci.sys.getenv("CONTENT_LENGTH"))), - ltn12.sink.file(io.stderr) - ) - - local x = coroutine.create(luci.dispatcher.httpdispatch) - local hcache = "" - local active = true - - while coroutine.status(x) ~= "dead" do - local res, id, data1, data2 = coroutine.resume(x, r) - - if not res then - print("Status: 500 Internal Server Error") - print("Content-Type: text/plain\n") - print(id) - break; - end - - if active then - if id == 1 then - io.write("Status: " .. tostring(data1) .. " " .. data2 .. "\r\n") - elseif id == 2 then - hcache = hcache .. data1 .. ": " .. data2 .. "\r\n" - elseif id == 3 then - io.write(hcache) - io.write("\r\n") - elseif id == 4 then - io.write(tostring(data1 or "")) - elseif id == 5 then - io.flush() - io.close() - active = false - elseif id == 6 then - data1:copyz(nixio.stdout, data2) - data1:close() - end - end - end -end diff --git a/package/luci/modules/luci-base/luasrc/sgi/uhttpd.lua b/package/luci/modules/luci-base/luasrc/sgi/uhttpd.lua deleted file mode 100644 index 2836bf00cf..0000000000 --- a/package/luci/modules/luci-base/luasrc/sgi/uhttpd.lua +++ /dev/null @@ -1,89 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require "nixio.util" -require "luci.http" -require "luci.sys" -require "luci.dispatcher" -require "luci.ltn12" - -function handle_request(env) - exectime = os.clock() - local renv = { - CONTENT_LENGTH = env.CONTENT_LENGTH, - CONTENT_TYPE = env.CONTENT_TYPE, - REQUEST_METHOD = env.REQUEST_METHOD, - REQUEST_URI = env.REQUEST_URI, - PATH_INFO = env.PATH_INFO, - SCRIPT_NAME = env.SCRIPT_NAME:gsub("/+$", ""), - SCRIPT_FILENAME = env.SCRIPT_NAME, - SERVER_PROTOCOL = env.SERVER_PROTOCOL, - QUERY_STRING = env.QUERY_STRING - } - - local k, v - for k, v in pairs(env.headers) do - k = k:upper():gsub("%-", "_") - renv["HTTP_" .. k] = v - end - - local len = tonumber(env.CONTENT_LENGTH) or 0 - local function recv() - if len > 0 then - local rlen, rbuf = uhttpd.recv(4096) - if rlen >= 0 then - len = len - rlen - return rbuf - end - end - return nil - end - - local send = uhttpd.send - - local req = luci.http.Request( - renv, recv, luci.ltn12.sink.file(io.stderr) - ) - - - local x = coroutine.create(luci.dispatcher.httpdispatch) - local hcache = { } - local active = true - - while coroutine.status(x) ~= "dead" do - local res, id, data1, data2 = coroutine.resume(x, req) - - if not res then - send("Status: 500 Internal Server Error\r\n") - send("Content-Type: text/plain\r\n\r\n") - send(tostring(id)) - break - end - - if active then - if id == 1 then - send("Status: ") - send(tostring(data1)) - send(" ") - send(tostring(data2)) - send("\r\n") - elseif id == 2 then - hcache[data1] = data2 - elseif id == 3 then - for k, v in pairs(hcache) do - send(tostring(k)) - send(": ") - send(tostring(v)) - send("\r\n") - end - send("\r\n") - elseif id == 4 then - send(tostring(data1 or "")) - elseif id == 5 then - active = false - elseif id == 6 then - data1:copyz(nixio.stdout, data2) - end - end - end -end diff --git a/package/luci/modules/luci-base/luasrc/store.lua b/package/luci/modules/luci-base/luasrc/store.lua deleted file mode 100644 index 34eb296229..0000000000 --- a/package/luci/modules/luci-base/luasrc/store.lua +++ /dev/null @@ -1,6 +0,0 @@ --- Copyright 2009 Steven Barth --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -module("luci.store", util.threadlocal) \ No newline at end of file diff --git a/package/luci/modules/luci-base/luasrc/sys.lua b/package/luci/modules/luci-base/luasrc/sys.lua deleted file mode 100644 index 115c54d54a..0000000000 --- a/package/luci/modules/luci-base/luasrc/sys.lua +++ /dev/null @@ -1,530 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local io = require "io" -local os = require "os" -local table = require "table" -local nixio = require "nixio" -local fs = require "nixio.fs" -local uci = require "luci.model.uci" - -local luci = {} -luci.util = require "luci.util" -luci.ip = require "luci.ip" - -local tonumber, ipairs, pairs, pcall, type, next, setmetatable, require, select = - tonumber, ipairs, pairs, pcall, type, next, setmetatable, require, select - - -module "luci.sys" - -function call(...) - return os.execute(...) / 256 -end - -exec = luci.util.exec - -function mounts() - local data = {} - local k = {"fs", "blocks", "used", "available", "percent", "mountpoint"} - local ps = luci.util.execi("df") - - if not ps then - return - else - ps() - end - - for line in ps do - local row = {} - - local j = 1 - for value in line:gmatch("[^%s]+") do - row[k[j]] = value - j = j + 1 - end - - if row[k[1]] then - - -- this is a rather ugly workaround to cope with wrapped lines in - -- the df output: - -- - -- /dev/scsi/host0/bus0/target0/lun0/part3 - -- 114382024 93566472 15005244 86% /mnt/usb - -- - - if not row[k[2]] then - j = 2 - line = ps() - for value in line:gmatch("[^%s]+") do - row[k[j]] = value - j = j + 1 - end - end - - table.insert(data, row) - end - end - - return data -end - --- containing the whole environment is returned otherwise this function returns --- the corresponding string value for the given name or nil if no such variable --- exists. -getenv = nixio.getenv - -function hostname(newname) - if type(newname) == "string" and #newname > 0 then - fs.writefile( "/proc/sys/kernel/hostname", newname ) - return newname - else - return nixio.uname().nodename - end -end - -function httpget(url, stream, target) - if not target then - local source = stream and io.popen or luci.util.exec - return source("wget -qO- '"..url:gsub("'", "").."'") - else - return os.execute("wget -qO '%s' '%s'" % - {target:gsub("'", ""), url:gsub("'", "")}) - end -end - -function reboot() - return os.execute("reboot >/dev/null 2>&1") -end - -function syslog() - return luci.util.exec("logread") -end - -function dmesg() - return luci.util.exec("dmesg") -end - -function uniqueid(bytes) - local rand = fs.readfile("/dev/urandom", bytes) - return rand and nixio.bin.hexlify(rand) -end - -function uptime() - return nixio.sysinfo().uptime -end - - -net = {} - -local function _nethints(what, callback) - local _, k, e, mac, ip, name - local cur = uci.cursor() - local ifn = { } - local hosts = { } - local lookup = { } - - local function _add(i, ...) - local k = select(i, ...) - if k then - if not hosts[k] then hosts[k] = { } end - hosts[k][1] = select(1, ...) or hosts[k][1] - hosts[k][2] = select(2, ...) or hosts[k][2] - hosts[k][3] = select(3, ...) or hosts[k][3] - hosts[k][4] = select(4, ...) or hosts[k][4] - end - end - - luci.ip.neighbors(nil, function(neigh) - if neigh.mac and neigh.family == 4 then - _add(what, neigh.mac:upper(), neigh.dest:string(), nil, nil) - elseif neigh.mac and neigh.family == 6 then - _add(what, neigh.mac:upper(), nil, neigh.dest:string(), nil) - end - end) - - if fs.access("/etc/ethers") then - for e in io.lines("/etc/ethers") do - mac, ip = e:match("^([a-f0-9]%S+) (%S+)") - if mac and ip then - _add(what, mac:upper(), ip, nil, nil) - end - end - end - - cur:foreach("dhcp", "dnsmasq", - function(s) - if s.leasefile and fs.access(s.leasefile) then - for e in io.lines(s.leasefile) do - mac, ip, name = e:match("^%d+ (%S+) (%S+) (%S+)") - if mac and ip then - _add(what, mac:upper(), ip, nil, name ~= "*" and name) - end - end - end - end - ) - - cur:foreach("dhcp", "host", - function(s) - for mac in luci.util.imatch(s.mac) do - _add(what, mac:upper(), s.ip, nil, s.name) - end - end) - - for _, e in ipairs(nixio.getifaddrs()) do - if e.name ~= "lo" then - ifn[e.name] = ifn[e.name] or { } - if e.family == "packet" and e.addr and #e.addr == 17 then - ifn[e.name][1] = e.addr:upper() - elseif e.family == "inet" then - ifn[e.name][2] = e.addr - elseif e.family == "inet6" then - ifn[e.name][3] = e.addr - end - end - end - - for _, e in pairs(ifn) do - if e[what] and (e[2] or e[3]) then - _add(what, e[1], e[2], e[3], e[4]) - end - end - - for _, e in pairs(hosts) do - lookup[#lookup+1] = (what > 1) and e[what] or (e[2] or e[3]) - end - - if #lookup > 0 then - lookup = luci.util.ubus("network.rrdns", "lookup", { - addrs = lookup, - timeout = 250, - limit = 1000 - }) or { } - end - - for _, e in luci.util.kspairs(hosts) do - callback(e[1], e[2], e[3], lookup[e[2]] or lookup[e[3]] or e[4]) - end -end - --- Each entry contains the values in the following order: --- [ "mac", "name" ] -function net.mac_hints(callback) - if callback then - _nethints(1, function(mac, v4, v6, name) - name = name or v4 - if name and name ~= mac then - callback(mac, name or v4) - end - end) - else - local rv = { } - _nethints(1, function(mac, v4, v6, name) - name = name or v4 - if name and name ~= mac then - rv[#rv+1] = { mac, name or v4 } - end - end) - return rv - end -end - --- Each entry contains the values in the following order: --- [ "ip", "name" ] -function net.ipv4_hints(callback) - if callback then - _nethints(2, function(mac, v4, v6, name) - name = name or mac - if name and name ~= v4 then - callback(v4, name) - end - end) - else - local rv = { } - _nethints(2, function(mac, v4, v6, name) - name = name or mac - if name and name ~= v4 then - rv[#rv+1] = { v4, name } - end - end) - return rv - end -end - --- Each entry contains the values in the following order: --- [ "ip", "name" ] -function net.ipv6_hints(callback) - if callback then - _nethints(3, function(mac, v4, v6, name) - name = name or mac - if name and name ~= v6 then - callback(v6, name) - end - end) - else - local rv = { } - _nethints(3, function(mac, v4, v6, name) - name = name or mac - if name and name ~= v6 then - rv[#rv+1] = { v6, name } - end - end) - return rv - end -end - -function net.host_hints(callback) - if callback then - _nethints(1, function(mac, v4, v6, name) - if mac and mac ~= "00:00:00:00:00:00" and (v4 or v6 or name) then - callback(mac, v4, v6, name) - end - end) - else - local rv = { } - _nethints(1, function(mac, v4, v6, name) - if mac and mac ~= "00:00:00:00:00:00" and (v4 or v6 or name) then - local e = { } - if v4 then e.ipv4 = v4 end - if v6 then e.ipv6 = v6 end - if name then e.name = name end - rv[mac] = e - end - end) - return rv - end -end - -function net.conntrack(callback) - local ok, nfct = pcall(io.lines, "/proc/net/nf_conntrack") - if not ok or not nfct then - return nil - end - - local line, connt = nil, (not callback) and { } - for line in nfct do - local fam, l3, l4, timeout, tuples = - line:match("^(ipv[46]) +(%d+) +%S+ +(%d+) +(%d+) +(.+)$") - - if fam and l3 and l4 and timeout and not tuples:match("^TIME_WAIT ") then - l4 = nixio.getprotobynumber(l4) - - local entry = { - bytes = 0, - packets = 0, - layer3 = fam, - layer4 = l4 and l4.name or "unknown", - timeout = tonumber(timeout, 10) - } - - local key, val - for key, val in tuples:gmatch("(%w+)=(%S+)") do - if key == "bytes" or key == "packets" then - entry[key] = entry[key] + tonumber(val, 10) - elseif key == "src" or key == "dst" then - if entry[key] == nil then - entry[key] = luci.ip.new(val):string() - end - elseif key == "sport" or key == "dport" then - if entry[key] == nil then - entry[key] = val - end - elseif val then - entry[key] = val - end - end - - if callback then - callback(entry) - else - connt[#connt+1] = entry - end - end - end - - return callback and true or connt -end - -function net.devices() - local devs = {} - local seen = {} - for k, v in ipairs(nixio.getifaddrs()) do - if v.name and not seen[v.name] then - seen[v.name] = true - devs[#devs+1] = v.name - end - end - return devs -end - - -process = {} - -function process.info(key) - local s = {uid = nixio.getuid(), gid = nixio.getgid()} - return not key and s or s[key] -end - -function process.list() - local data = {} - local k - local ps = luci.util.execi("/bin/busybox top -bn1") - - if not ps then - return - end - - for line in ps do - local pid, ppid, user, stat, vsz, mem, cpu, cmd = line:match( - "^ *(%d+) +(%d+) +(%S.-%S) +([RSDZTW][W ][/dev/null 2>&1" - ) -end - - -wifi = {} - -function wifi.getiwinfo(ifname) - local stat, iwinfo = pcall(require, "iwinfo") - - if ifname then - local d, n = ifname:match("^(%w+)%.network(%d+)") - local wstate = luci.util.ubus("network.wireless", "status") or { } - - d = d or ifname - n = n and tonumber(n) or 1 - - if type(wstate[d]) == "table" and - type(wstate[d].interfaces) == "table" and - type(wstate[d].interfaces[n]) == "table" and - type(wstate[d].interfaces[n].ifname) == "string" - then - ifname = wstate[d].interfaces[n].ifname - else - ifname = d - end - - local t = stat and iwinfo.type(ifname) - local x = t and iwinfo[t] or { } - return setmetatable({}, { - __index = function(t, k) - if k == "ifname" then - return ifname - elseif x[k] then - return x[k](ifname) - end - end - }) - end -end - - -init = {} -init.dir = "/etc/init.d/" - -function init.names() - local names = { } - for name in fs.glob(init.dir.."*") do - names[#names+1] = fs.basename(name) - end - return names -end - -function init.index(name) - if fs.access(init.dir..name) then - return call("env -i sh -c 'source %s%s enabled; exit ${START:-255}' >/dev/null" - %{ init.dir, name }) - end -end - -local function init_action(action, name) - if fs.access(init.dir..name) then - return call("env -i %s%s %s >/dev/null" %{ init.dir, name, action }) - end -end - -function init.enabled(name) - return (init_action("enabled", name) == 0) -end - -function init.enable(name) - return (init_action("enable", name) == 1) -end - -function init.disable(name) - return (init_action("disable", name) == 0) -end - -function init.start(name) - return (init_action("start", name) == 0) -end - -function init.stop(name) - return (init_action("stop", name) == 0) -end diff --git a/package/luci/modules/luci-base/luasrc/sys.luadoc b/package/luci/modules/luci-base/luasrc/sys.luadoc deleted file mode 100644 index 1c1fa92602..0000000000 --- a/package/luci/modules/luci-base/luasrc/sys.luadoc +++ /dev/null @@ -1,405 +0,0 @@ ----[[ -LuCI Linux and POSIX system utilities. -]] -module "luci.sys" - ----[[ -Execute a given shell command and return the error code - -@class function -@name call -@param ... Command to call -@return Error code of the command -]] - ----[[ -Execute a given shell command and capture its standard output - -@class function -@name exec -@param command Command to call -@return String containg the return the output of the command -]] - ----[[ -Retrieve information about currently mounted file systems. - -@class function -@name mounts -@return Table containing mount information -]] - ----[[ -Retrieve environment variables. If no variable is given then a table - -containing the whole environment is returned otherwise this function returns -the corresponding string value for the given name or nil if no such variable -exists. -@class function -@name getenv -@param var Name of the environment variable to retrieve (optional) -@return String containg the value of the specified variable -@return Table containing all variables if no variable name is given -]] - ----[[ -Get or set the current hostname. - -@class function -@name hostname -@param String containing a new hostname to set (optional) -@return String containing the system hostname -]] - ----[[ -Returns the contents of a documented referred by an URL. - -@class function -@name httpget -@param url The URL to retrieve -@param stream Return a stream instead of a buffer -@param target Directly write to target file name -@return String containing the contents of given the URL -]] - ----[[ -Initiate a system reboot. - -@class function -@name reboot -@return Return value of os.execute() -]] - ----[[ -Retrieves the output of the "logread" command. - -@class function -@name syslog -@return String containing the current log buffer -]] - ----[[ -Retrieves the output of the "dmesg" command. - -@class function -@name dmesg -@return String containing the current log buffer -]] - ----[[ -Generates a random id with specified length. - -@class function -@name uniqueid -@param bytes Number of bytes for the unique id -@return String containing hex encoded id -]] - ----[[ -Returns the current system uptime stats. - -@class function -@name uptime -@return String containing total uptime in seconds -]] - ----[[ -LuCI system utilities / network related functions. - -@class module -@name luci.sys.net -]] - ----[[ -Returns the current arp-table entries as two-dimensional table. - -@class function -@name net.arptable -@return Table of table containing the current arp entries. --- The following fields are defined for arp entry objects: --- { "IP address", "HW address", "HW type", "Flags", "Mask", "Device" } -]] - ----[[ -Returns a two-dimensional table of mac address hints. - -@class function -@name net.mac_hints -@return Table of table containing known hosts from various sources. - Each entry contains the values in the following order: - [ "mac", "name" ] -]] - ----[[ -Returns a two-dimensional table of IPv4 address hints. - -@class function -@name net.ipv4_hints -@return Table of table containing known hosts from various sources. - Each entry contains the values in the following order: - [ "ip", "name" ] -]] - ----[[ -Returns a two-dimensional table of IPv6 address hints. - -@class function -@name net.ipv6_hints -@return Table of table containing known hosts from various sources. - Each entry contains the values in the following order: - [ "ip", "name" ] -]] - ----[[ -Returns a two-dimensional table of host hints. - -@class function -@name net.host_hints -@return Table of table containing known hosts from various sources, - indexed by mac address. Each subtable contains at least one - of the fields "name", "ipv4" or "ipv6". -]] - ----[[ -Returns conntrack information - -@class function -@name net.conntrack -@return Table with the currently tracked IP connections -]] - ----[[ -Determine the names of available network interfaces. - -@class function -@name net.devices -@return Table containing all current interface names -]] - ----[[ -Return information about available network interfaces. - -@class function -@name net.deviceinfo -@return Table containing all current interface names and their information -]] - ----[[ -Returns the current kernel routing table entries. - -@class function -@name net.routes -@return Table of tables with properties of the corresponding routes. --- The following fields are defined for route entry tables: --- { "dest", "gateway", "metric", "refcount", "usecount", "irtt", --- "flags", "device" } -]] - ----[[ -Returns the current ipv6 kernel routing table entries. - -@class function -@name net.routes6 -@return Table of tables with properties of the corresponding routes. --- The following fields are defined for route entry tables: --- { "source", "dest", "nexthop", "metric", "refcount", "usecount", --- "flags", "device" } -]] - ----[[ -Tests whether the given host responds to ping probes. - -@class function -@name net.pingtest -@param host String containing a hostname or IPv4 address -@return Number containing 0 on success and >= 1 on error -]] - ----[[ -LuCI system utilities / process related functions. - -@class module -@name luci.sys.process -]] - ----[[ -Get the current process id. - -@class function -@name process.info -@return Number containing the current pid -]] - ----[[ -Retrieve information about currently running processes. - -@class function -@name process.list -@return Table containing process information -]] - ----[[ -Set the gid of a process identified by given pid. - -@class function -@name process.setgroup -@param gid Number containing the Unix group id -@return Boolean indicating successful operation -@return String containing the error message if failed -@return Number containing the error code if failed -]] - ----[[ -Set the uid of a process identified by given pid. - -@class function -@name process.setuser -@param uid Number containing the Unix user id -@return Boolean indicating successful operation -@return String containing the error message if failed -@return Number containing the error code if failed -]] - ----[[ -Send a signal to a process identified by given pid. - -@class function -@name process.signal -@param pid Number containing the process id -@param sig Signal to send (default: 15 [SIGTERM]) -@return Boolean indicating successful operation -@return Number containing the error code if failed -]] - ----[[ -LuCI system utilities / user related functions. - -@class module -@name luci.sys.user -]] - ----[[ -Retrieve user informations for given uid. - -@class function -@name getuser -@param uid Number containing the Unix user id -@return Table containing the following fields: --- { "uid", "gid", "name", "passwd", "dir", "shell", "gecos" } -]] - ----[[ -Retrieve the current user password hash. - -@class function -@name user.getpasswd -@param username String containing the username to retrieve the password for -@return String containing the hash or nil if no password is set. -@return Password database entry -]] - ----[[ -Test whether given string matches the password of a given system user. - -@class function -@name user.checkpasswd -@param username String containing the Unix user name -@param pass String containing the password to compare -@return Boolean indicating wheather the passwords are equal -]] - ----[[ -Change the password of given user. - -@class function -@name user.setpasswd -@param username String containing the Unix user name -@param password String containing the password to compare -@return Number containing 0 on success and >= 1 on error -]] - ----[[ -LuCI system utilities / wifi related functions. - -@class module -@name luci.sys.wifi -]] - ----[[ -Get wireless information for given interface. - -@class function -@name wifi.getiwinfo -@param ifname String containing the interface name -@return A wrapped iwinfo object instance -]] - ----[[ -LuCI system utilities / init related functions. - -@class module -@name luci.sys.init -]] - ----[[ -Get the names of all installed init scripts - -@class function -@name init.names -@return Table containing the names of all inistalled init scripts -]] - ----[[ -Get the index of he given init script - -@class function -@name init.index -@param name Name of the init script -@return Numeric index value -]] - ----[[ -Test whether the given init script is enabled - -@class function -@name init.enabled -@param name Name of the init script -@return Boolean indicating whether init is enabled -]] - ----[[ -Enable the given init script - -@class function -@name init.enable -@param name Name of the init script -@return Boolean indicating success -]] - ----[[ -Disable the given init script - -@class function -@name init.disable -@param name Name of the init script -@return Boolean indicating success -]] - ----[[ -Start the given init script - -@class function -@name init.start -@param name Name of the init script -@return Boolean indicating success -]] - ----[[ -Stop the given init script - -@class function -@name init.stop -@param name Name of the init script -@return Boolean indicating success -]] - diff --git a/package/luci/modules/luci-base/luasrc/sys/iptparser.lua b/package/luci/modules/luci-base/luasrc/sys/iptparser.lua deleted file mode 100644 index 7ff665e7af..0000000000 --- a/package/luci/modules/luci-base/luasrc/sys/iptparser.lua +++ /dev/null @@ -1,374 +0,0 @@ ---[[ - -Iptables parser and query library -(c) 2008-2009 Jo-Philipp Wich -(c) 2008-2009 Steven Barth - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ - -]]-- - -local luci = {} -luci.util = require "luci.util" -luci.sys = require "luci.sys" -luci.ip = require "luci.ip" - -local pcall = pcall -local io = require "io" -local tonumber, ipairs, table = tonumber, ipairs, table - -module("luci.sys.iptparser") - -IptParser = luci.util.class() - -function IptParser.__init__( self, family ) - self._family = (tonumber(family) == 6) and 6 or 4 - self._rules = { } - self._chains = { } - self._tables = { } - - local t = self._tables - local s = self:_supported_tables(self._family) - - if s.filter then t[#t+1] = "filter" end - if s.nat then t[#t+1] = "nat" end - if s.mangle then t[#t+1] = "mangle" end - if s.raw then t[#t+1] = "raw" end - - if self._family == 4 then - self._nulladdr = "0.0.0.0/0" - self._command = "iptables -t %s --line-numbers -nxvL" - else - self._nulladdr = "::/0" - self._command = "ip6tables -t %s --line-numbers -nxvL" - end - - self:_parse_rules() -end - -function IptParser._supported_tables( self, family ) - local tables = { } - local ok, lines = pcall(io.lines, - (family == 6) and "/proc/net/ip6_tables_names" - or "/proc/net/ip_tables_names") - - if ok and lines then - local line - for line in lines do - tables[line] = true - end - end - - return tables -end - --- search criteria as only argument. If args is nil or an empty table then all --- rules will be returned. --- --- The following keys in the args table are recognized: ---
      ---
    • table - Match rules that are located within the given table ---
    • chain - Match rules that are located within the given chain ---
    • target - Match rules with the given target ---
    • protocol - Match rules that match the given protocol, rules with --- protocol "all" are always matched ---
    • source - Match rules with the given source, rules with source --- "0.0.0.0/0" (::/0) are always matched ---
    • destination - Match rules with the given destination, rules with --- destination "0.0.0.0/0" (::/0) are always matched ---
    • inputif - Match rules with the given input interface, rules --- with input interface "*" (=all) are always matched ---
    • outputif - Match rules with the given output interface, rules --- with output interface "*" (=all) are always matched ---
    • flags - Match rules that match the given flags, current --- supported values are "-f" (--fragment) --- and "!f" (! --fragment) ---
    • options - Match rules containing all given options ---
    --- The return value is a list of tables representing the matched rules. --- Each rule table contains the following fields: ---
      ---
    • index - The index number of the rule ---
    • table - The table where the rule is located, can be one --- of "filter", "nat" or "mangle" ---
    • chain - The chain where the rule is located, e.g. "INPUT" --- or "postrouting_wan" ---
    • target - The rule target, e.g. "REJECT" or "DROP" ---
    • protocol The matching protocols, e.g. "all" or "tcp" ---
    • flags - Special rule options ("--", "-f" or "!f") ---
    • inputif - Input interface of the rule, e.g. "eth0.0" --- or "*" for all interfaces ---
    • outputif - Output interface of the rule,e.g. "eth0.0" --- or "*" for all interfaces ---
    • source - The source ip range, e.g. "0.0.0.0/0" (::/0) ---
    • destination - The destination ip range, e.g. "0.0.0.0/0" (::/0) ---
    • options - A list of specific options of the rule, --- e.g. { "reject-with", "tcp-reset" } ---
    • packets - The number of packets matched by the rule ---
    • bytes - The number of total bytes matched by the rule ---
    --- Example: ---
    --- ip = luci.sys.iptparser.IptParser()
    --- result = ip.find( {
    --- 	target="REJECT",
    --- 	protocol="tcp",
    --- 	options={ "reject-with", "tcp-reset" }
    --- } )
    --- 
    --- This will match all rules with target "-j REJECT", --- protocol "-p tcp" (or "-p all") --- and the option "--reject-with tcp-reset". -function IptParser.find( self, args ) - - local args = args or { } - local rv = { } - - args.source = args.source and self:_parse_addr(args.source) - args.destination = args.destination and self:_parse_addr(args.destination) - - for i, rule in ipairs(self._rules) do - local match = true - - -- match table - if not ( not args.table or args.table:lower() == rule.table ) then - match = false - end - - -- match chain - if not ( match == true and ( - not args.chain or args.chain == rule.chain - ) ) then - match = false - end - - -- match target - if not ( match == true and ( - not args.target or args.target == rule.target - ) ) then - match = false - end - - -- match protocol - if not ( match == true and ( - not args.protocol or rule.protocol == "all" or - args.protocol:lower() == rule.protocol - ) ) then - match = false - end - - -- match source - if not ( match == true and ( - not args.source or rule.source == self._nulladdr or - self:_parse_addr(rule.source):contains(args.source) - ) ) then - match = false - end - - -- match destination - if not ( match == true and ( - not args.destination or rule.destination == self._nulladdr or - self:_parse_addr(rule.destination):contains(args.destination) - ) ) then - match = false - end - - -- match input interface - if not ( match == true and ( - not args.inputif or rule.inputif == "*" or - args.inputif == rule.inputif - ) ) then - match = false - end - - -- match output interface - if not ( match == true and ( - not args.outputif or rule.outputif == "*" or - args.outputif == rule.outputif - ) ) then - match = false - end - - -- match flags (the "opt" column) - if not ( match == true and ( - not args.flags or rule.flags == args.flags - ) ) then - match = false - end - - -- match specific options - if not ( match == true and ( - not args.options or - self:_match_options( rule.options, args.options ) - ) ) then - match = false - end - - -- insert match - if match == true then - rv[#rv+1] = rule - end - end - - return rv -end - - --- through external commands. -function IptParser.resync( self ) - self._rules = { } - self._chain = nil - self:_parse_rules() -end - - -function IptParser.tables( self ) - return self._tables -end - - -function IptParser.chains( self, table ) - local lookup = { } - local chains = { } - for _, r in ipairs(self:find({table=table})) do - if not lookup[r.chain] then - lookup[r.chain] = true - chains[#chains+1] = r.chain - end - end - return chains -end - - --- and "rules". The "rules" field is a table of rule tables. -function IptParser.chain( self, table, chain ) - return self._chains[table:lower()] and self._chains[table:lower()][chain] -end - - -function IptParser.is_custom_target( self, target ) - for _, r in ipairs(self._rules) do - if r.chain == target then - return true - end - end - return false -end - - --- [internal] Parse address according to family. -function IptParser._parse_addr( self, addr ) - if self._family == 4 then - return luci.ip.IPv4(addr) - else - return luci.ip.IPv6(addr) - end -end - --- [internal] Parse iptables output from all tables. -function IptParser._parse_rules( self ) - - for i, tbl in ipairs(self._tables) do - - self._chains[tbl] = { } - - for i, rule in ipairs(luci.util.execl(self._command % tbl)) do - - if rule:find( "^Chain " ) == 1 then - - local crefs - local cname, cpol, cpkt, cbytes = rule:match( - "^Chain ([^%s]*) %(policy (%w+) " .. - "(%d+) packets, (%d+) bytes%)" - ) - - if not cname then - cname, crefs = rule:match( - "^Chain ([^%s]*) %((%d+) references%)" - ) - end - - self._chain = cname - self._chains[tbl][cname] = { - policy = cpol, - packets = tonumber(cpkt or 0), - bytes = tonumber(cbytes or 0), - references = tonumber(crefs or 0), - rules = { } - } - - else - if rule:find("%d") == 1 then - - local rule_parts = luci.util.split( rule, "%s+", nil, true ) - local rule_details = { } - - -- cope with rules that have no target assigned - if rule:match("^%d+%s+%d+%s+%d+%s%s") then - table.insert(rule_parts, 4, nil) - end - - -- ip6tables opt column is usually zero-width - if self._family == 6 then - table.insert(rule_parts, 6, "--") - end - - rule_details["table"] = tbl - rule_details["chain"] = self._chain - rule_details["index"] = tonumber(rule_parts[1]) - rule_details["packets"] = tonumber(rule_parts[2]) - rule_details["bytes"] = tonumber(rule_parts[3]) - rule_details["target"] = rule_parts[4] - rule_details["protocol"] = rule_parts[5] - rule_details["flags"] = rule_parts[6] - rule_details["inputif"] = rule_parts[7] - rule_details["outputif"] = rule_parts[8] - rule_details["source"] = rule_parts[9] - rule_details["destination"] = rule_parts[10] - rule_details["options"] = { } - - for i = 11, #rule_parts do - if #rule_parts[i] > 0 then - rule_details["options"][i-10] = rule_parts[i] - end - end - - self._rules[#self._rules+1] = rule_details - - self._chains[tbl][self._chain].rules[ - #self._chains[tbl][self._chain].rules + 1 - ] = rule_details - end - end - end - end - - self._chain = nil -end - - --- [internal] Return true if optlist1 contains all elements of optlist 2. --- Return false in all other cases. -function IptParser._match_options( self, o1, o2 ) - - -- construct a hashtable of first options list to speed up lookups - local oh = { } - for i, opt in ipairs( o1 ) do oh[opt] = true end - - -- iterate over second options list - -- each string in o2 must be also present in o1 - -- if o2 contains a string which is not found in o1 then return false - for i, opt in ipairs( o2 ) do - if not oh[opt] then - return false - end - end - - return true -end diff --git a/package/luci/modules/luci-base/luasrc/sys/iptparser.luadoc b/package/luci/modules/luci-base/luasrc/sys/iptparser.luadoc deleted file mode 100644 index 071e7d52e4..0000000000 --- a/package/luci/modules/luci-base/luasrc/sys/iptparser.luadoc +++ /dev/null @@ -1,69 +0,0 @@ ----[[ -LuCI iptables parser and query library - -@cstyle instance -]] -module "luci.sys.iptparser" - ----[[ -Create a new iptables parser object. - -@class function -@name IptParser -@param family Number specifying the address family. 4 for IPv4, 6 for IPv6 -@return IptParser instance -]] - ----[[ -Find all firewall rules that match the given criteria. Expects a table with - -search criteria as only argument. If args is nil or an empty table then all -rules will be returned. -]] - ----[[ -Rebuild the internal lookup table, for example when rules have changed - -through external commands. -@class function -@name IptParser.resync -@return nothing -]] - ----[[ -Find the names of all tables. - -@class function -@name IptParser.tables -@return Table of table names. -]] - ----[[ -Find the names of all chains within the given table name. - -@class function -@name IptParser.chains -@param table String containing the table name -@return Table of chain names in the order they occur. -]] - ----[[ -Return the given firewall chain within the given table name. - -@class function -@name IptParser.chain -@param table String containing the table name -@param chain String containing the chain name -@return Table containing the fields "policy", "packets", "bytes" --- and "rules". The "rules" field is a table of rule tables. -]] - ----[[ -Test whether the given target points to a custom chain. - -@class function -@name IptParser.is_custom_target -@param target String containing the target action -@return Boolean indicating whether target is a custom chain. -]] - diff --git a/package/luci/modules/luci-base/luasrc/sys/zoneinfo.lua b/package/luci/modules/luci-base/luasrc/sys/zoneinfo.lua deleted file mode 100644 index aa054a246f..0000000000 --- a/package/luci/modules/luci-base/luasrc/sys/zoneinfo.lua +++ /dev/null @@ -1,19 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -local setmetatable, require, rawget, rawset = setmetatable, require, rawget, rawset - -module "luci.sys.zoneinfo" - -setmetatable(_M, { - __index = function(t, k) - if k == "TZ" and not rawget(t, k) then - local m = require "luci.sys.zoneinfo.tzdata" - rawset(t, k, rawget(m, k)) - elseif k == "OFFSET" and not rawget(t, k) then - local m = require "luci.sys.zoneinfo.tzoffset" - rawset(t, k, rawget(m, k)) - end - - return rawget(t, k) - end -}) diff --git a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua b/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua deleted file mode 100644 index 48ae5747c0..0000000000 --- a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua +++ /dev/null @@ -1,457 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module "luci.sys.zoneinfo.tzdata" - -TZ = { - { 'Africa/Abidjan', 'GMT0' }, - { 'Africa/Accra', 'GMT0' }, - { 'Africa/Addis Ababa', 'EAT-3' }, - { 'Africa/Algiers', 'CET-1' }, - { 'Africa/Asmara', 'EAT-3' }, - { 'Africa/Bamako', 'GMT0' }, - { 'Africa/Bangui', 'WAT-1' }, - { 'Africa/Banjul', 'GMT0' }, - { 'Africa/Bissau', 'GMT0' }, - { 'Africa/Blantyre', 'CAT-2' }, - { 'Africa/Brazzaville', 'WAT-1' }, - { 'Africa/Bujumbura', 'CAT-2' }, - { 'Africa/Cairo', 'EET-2' }, - { 'Africa/Casablanca', 'WET0WEST,M3.5.0,M10.5.0/3' }, - { 'Africa/Ceuta', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Africa/Conakry', 'GMT0' }, - { 'Africa/Dakar', 'GMT0' }, - { 'Africa/Dar es Salaam', 'EAT-3' }, - { 'Africa/Djibouti', 'EAT-3' }, - { 'Africa/Douala', 'WAT-1' }, - { 'Africa/El Aaiun', 'WET0WEST,M3.5.0,M10.5.0/3' }, - { 'Africa/Freetown', 'GMT0' }, - { 'Africa/Gaborone', 'CAT-2' }, - { 'Africa/Harare', 'CAT-2' }, - { 'Africa/Johannesburg', 'SAST-2' }, - { 'Africa/Juba', 'EAT-3' }, - { 'Africa/Kampala', 'EAT-3' }, - { 'Africa/Khartoum', 'CAT-2' }, - { 'Africa/Kigali', 'CAT-2' }, - { 'Africa/Kinshasa', 'WAT-1' }, - { 'Africa/Lagos', 'WAT-1' }, - { 'Africa/Libreville', 'WAT-1' }, - { 'Africa/Lome', 'GMT0' }, - { 'Africa/Luanda', 'WAT-1' }, - { 'Africa/Lubumbashi', 'CAT-2' }, - { 'Africa/Lusaka', 'CAT-2' }, - { 'Africa/Malabo', 'WAT-1' }, - { 'Africa/Maputo', 'CAT-2' }, - { 'Africa/Maseru', 'SAST-2' }, - { 'Africa/Mbabane', 'SAST-2' }, - { 'Africa/Mogadishu', 'EAT-3' }, - { 'Africa/Monrovia', 'GMT0' }, - { 'Africa/Nairobi', 'EAT-3' }, - { 'Africa/Ndjamena', 'WAT-1' }, - { 'Africa/Niamey', 'WAT-1' }, - { 'Africa/Nouakchott', 'GMT0' }, - { 'Africa/Ouagadougou', 'GMT0' }, - { 'Africa/Porto-Novo', 'WAT-1' }, - { 'Africa/Sao Tome', 'GMT0' }, - { 'Africa/Tripoli', 'EET-2' }, - { 'Africa/Tunis', 'CET-1' }, - { 'Africa/Windhoek', 'CAT-2' }, - { 'America/Adak', 'HST10HDT,M3.2.0,M11.1.0' }, - { 'America/Anchorage', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Anguilla', 'AST4' }, - { 'America/Antigua', 'AST4' }, - { 'America/Araguaina', '<-03>3' }, - { 'America/Argentina/Buenos Aires', '<-03>3' }, - { 'America/Argentina/Catamarca', '<-03>3' }, - { 'America/Argentina/Cordoba', '<-03>3' }, - { 'America/Argentina/Jujuy', '<-03>3' }, - { 'America/Argentina/La Rioja', '<-03>3' }, - { 'America/Argentina/Mendoza', '<-03>3' }, - { 'America/Argentina/Rio Gallegos', '<-03>3' }, - { 'America/Argentina/Salta', '<-03>3' }, - { 'America/Argentina/San Juan', '<-03>3' }, - { 'America/Argentina/San Luis', '<-03>3' }, - { 'America/Argentina/Tucuman', '<-03>3' }, - { 'America/Argentina/Ushuaia', '<-03>3' }, - { 'America/Aruba', 'AST4' }, - { 'America/Asuncion', '<-04>4<-03>,M10.1.0/0,M3.4.0/0' }, - { 'America/Atikokan', 'EST5' }, - { 'America/Bahia', '<-03>3' }, - { 'America/Bahia Banderas', 'CST6CDT,M4.1.0,M10.5.0' }, - { 'America/Barbados', 'AST4' }, - { 'America/Belem', '<-03>3' }, - { 'America/Belize', 'CST6' }, - { 'America/Blanc-Sablon', 'AST4' }, - { 'America/Boa Vista', '<-04>4' }, - { 'America/Bogota', '<-05>5' }, - { 'America/Boise', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Cambridge Bay', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Campo Grande', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' }, - { 'America/Cancun', 'EST5' }, - { 'America/Caracas', '<-04>4' }, - { 'America/Cayenne', '<-03>3' }, - { 'America/Cayman', 'EST5' }, - { 'America/Chicago', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' }, - { 'America/Costa Rica', 'CST6' }, - { 'America/Creston', 'MST7' }, - { 'America/Cuiaba', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' }, - { 'America/Curacao', 'AST4' }, - { 'America/Danmarkshavn', 'GMT0' }, - { 'America/Dawson', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Dawson Creek', 'MST7' }, - { 'America/Denver', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Detroit', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Dominica', 'AST4' }, - { 'America/Edmonton', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Eirunepe', '<-05>5' }, - { 'America/El Salvador', 'CST6' }, - { 'America/Fort Nelson', 'MST7' }, - { 'America/Fortaleza', '<-03>3' }, - { 'America/Glace Bay', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Godthab', '<-03>3<-02>,M3.5.0/-2,M10.5.0/-1' }, - { 'America/Goose Bay', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Grand Turk', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Grenada', 'AST4' }, - { 'America/Guadeloupe', 'AST4' }, - { 'America/Guatemala', 'CST6' }, - { 'America/Guayaquil', '<-05>5' }, - { 'America/Guyana', '<-04>4' }, - { 'America/Halifax', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Havana', 'CST5CDT,M3.2.0/0,M11.1.0/1' }, - { 'America/Hermosillo', 'MST7' }, - { 'America/Indiana/Indianapolis', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Knox', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Marengo', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Petersburg', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Tell City', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Vevay', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Vincennes', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Winamac', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Inuvik', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Iqaluit', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Jamaica', 'EST5' }, - { 'America/Juneau', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Kentucky/Louisville', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Kentucky/Monticello', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Kralendijk', 'AST4' }, - { 'America/La Paz', '<-04>4' }, - { 'America/Lima', '<-05>5' }, - { 'America/Los Angeles', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Lower Princes', 'AST4' }, - { 'America/Maceio', '<-03>3' }, - { 'America/Managua', 'CST6' }, - { 'America/Manaus', '<-04>4' }, - { 'America/Marigot', 'AST4' }, - { 'America/Martinique', 'AST4' }, - { 'America/Matamoros', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Mazatlan', 'MST7MDT,M4.1.0,M10.5.0' }, - { 'America/Menominee', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Merida', 'CST6CDT,M4.1.0,M10.5.0' }, - { 'America/Metlakatla', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Mexico City', 'CST6CDT,M4.1.0,M10.5.0' }, - { 'America/Miquelon', '<-03>3<-02>,M3.2.0,M11.1.0' }, - { 'America/Moncton', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Monterrey', 'CST6CDT,M4.1.0,M10.5.0' }, - { 'America/Montevideo', '<-03>3' }, - { 'America/Montserrat', 'AST4' }, - { 'America/Nassau', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/New York', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Nipigon', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Nome', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Noronha', '<-02>2' }, - { 'America/North Dakota/Beulah', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/North Dakota/Center', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/North Dakota/New Salem', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Ojinaga', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Panama', 'EST5' }, - { 'America/Pangnirtung', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Paramaribo', '<-03>3' }, - { 'America/Phoenix', 'MST7' }, - { 'America/Port of Spain', 'AST4' }, - { 'America/Port-au-Prince', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Porto Velho', '<-04>4' }, - { 'America/Puerto Rico', 'AST4' }, - { 'America/Punta Arenas', '<-03>3' }, - { 'America/Rainy River', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Rankin Inlet', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Recife', '<-03>3' }, - { 'America/Regina', 'CST6' }, - { 'America/Resolute', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Rio Branco', '<-05>5' }, - { 'America/Santarem', '<-03>3' }, - { 'America/Santiago', '<-04>4<-03>,M8.2.6/24,M5.2.6/24' }, - { 'America/Santo Domingo', 'AST4' }, - { 'America/Sao Paulo', '<-03>3<-02>,M10.3.0/0,M2.3.0/0' }, - { 'America/Scoresbysund', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' }, - { 'America/Sitka', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/St Barthelemy', 'AST4' }, - { 'America/St Johns', 'NST3:30NDT,M3.2.0,M11.1.0' }, - { 'America/St Kitts', 'AST4' }, - { 'America/St Lucia', 'AST4' }, - { 'America/St Thomas', 'AST4' }, - { 'America/St Vincent', 'AST4' }, - { 'America/Swift Current', 'CST6' }, - { 'America/Tegucigalpa', 'CST6' }, - { 'America/Thule', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Thunder Bay', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Tijuana', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Toronto', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Tortola', 'AST4' }, - { 'America/Vancouver', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Whitehorse', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Winnipeg', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Yakutat', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Yellowknife', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'Antarctica/Casey', '<+11>-11' }, - { 'Antarctica/Davis', '<+07>-7' }, - { 'Antarctica/DumontDUrville', '<+10>-10' }, - { 'Antarctica/Macquarie', '<+11>-11' }, - { 'Antarctica/Mawson', '<+05>-5' }, - { 'Antarctica/McMurdo', 'NZST-12NZDT,M9.5.0,M4.1.0/3' }, - { 'Antarctica/Palmer', '<-03>3' }, - { 'Antarctica/Rothera', '<-03>3' }, - { 'Antarctica/Syowa', '<+03>-3' }, - { 'Antarctica/Troll', '<+00>0<+02>-2,M3.5.0/1,M10.5.0/3' }, - { 'Antarctica/Vostok', '<+06>-6' }, - { 'Arctic/Longyearbyen', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Asia/Aden', '<+03>-3' }, - { 'Asia/Almaty', '<+06>-6' }, - { 'Asia/Amman', 'EET-2EEST,M3.5.4/24,M10.5.5/1' }, - { 'Asia/Anadyr', '<+12>-12' }, - { 'Asia/Aqtau', '<+05>-5' }, - { 'Asia/Aqtobe', '<+05>-5' }, - { 'Asia/Ashgabat', '<+05>-5' }, - { 'Asia/Atyrau', '<+05>-5' }, - { 'Asia/Baghdad', '<+03>-3' }, - { 'Asia/Bahrain', '<+03>-3' }, - { 'Asia/Baku', '<+04>-4' }, - { 'Asia/Bangkok', '<+07>-7' }, - { 'Asia/Barnaul', '<+07>-7' }, - { 'Asia/Beirut', 'EET-2EEST,M3.5.0/0,M10.5.0/0' }, - { 'Asia/Bishkek', '<+06>-6' }, - { 'Asia/Brunei', '<+08>-8' }, - { 'Asia/Chita', '<+09>-9' }, - { 'Asia/Choibalsan', '<+08>-8' }, - { 'Asia/Colombo', '<+0530>-5:30' }, - { 'Asia/Damascus', 'EET-2EEST,M3.5.5/0,M10.5.5/0' }, - { 'Asia/Dhaka', '<+06>-6' }, - { 'Asia/Dili', '<+09>-9' }, - { 'Asia/Dubai', '<+04>-4' }, - { 'Asia/Dushanbe', '<+05>-5' }, - { 'Asia/Famagusta', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Asia/Gaza', 'EET-2EEST,M3.5.6/1,M10.5.6/1' }, - { 'Asia/Hebron', 'EET-2EEST,M3.5.6/1,M10.5.6/1' }, - { 'Asia/Ho Chi Minh', '<+07>-7' }, - { 'Asia/Hong Kong', 'HKT-8' }, - { 'Asia/Hovd', '<+07>-7' }, - { 'Asia/Irkutsk', '<+08>-8' }, - { 'Asia/Jakarta', 'WIB-7' }, - { 'Asia/Jayapura', 'WIT-9' }, - { 'Asia/Jerusalem', 'IST-2IDT,M3.4.4/26,M10.5.0' }, - { 'Asia/Kabul', '<+0430>-4:30' }, - { 'Asia/Kamchatka', '<+12>-12' }, - { 'Asia/Karachi', 'PKT-5' }, - { 'Asia/Kathmandu', '<+0545>-5:45' }, - { 'Asia/Khandyga', '<+09>-9' }, - { 'Asia/Kolkata', 'IST-5:30' }, - { 'Asia/Krasnoyarsk', '<+07>-7' }, - { 'Asia/Kuala Lumpur', '<+08>-8' }, - { 'Asia/Kuching', '<+08>-8' }, - { 'Asia/Kuwait', '<+03>-3' }, - { 'Asia/Macau', 'CST-8' }, - { 'Asia/Magadan', '<+11>-11' }, - { 'Asia/Makassar', 'WITA-8' }, - { 'Asia/Manila', '<+08>-8' }, - { 'Asia/Muscat', '<+04>-4' }, - { 'Asia/Nicosia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Asia/Novokuznetsk', '<+07>-7' }, - { 'Asia/Novosibirsk', '<+07>-7' }, - { 'Asia/Omsk', '<+06>-6' }, - { 'Asia/Oral', '<+05>-5' }, - { 'Asia/Phnom Penh', '<+07>-7' }, - { 'Asia/Pontianak', 'WIB-7' }, - { 'Asia/Pyongyang', 'KST-8:30' }, - { 'Asia/Qatar', '<+03>-3' }, - { 'Asia/Qyzylorda', '<+06>-6' }, - { 'Asia/Riyadh', '<+03>-3' }, - { 'Asia/Sakhalin', '<+11>-11' }, - { 'Asia/Samarkand', '<+05>-5' }, - { 'Asia/Seoul', 'KST-9' }, - { 'Asia/Shanghai', 'CST-8' }, - { 'Asia/Singapore', '<+08>-8' }, - { 'Asia/Srednekolymsk', '<+11>-11' }, - { 'Asia/Taipei', 'CST-8' }, - { 'Asia/Tashkent', '<+05>-5' }, - { 'Asia/Tbilisi', '<+04>-4' }, - { 'Asia/Tehran', '<+0330>-3:30<+0430>,J80/0,J264/0' }, - { 'Asia/Thimphu', '<+06>-6' }, - { 'Asia/Tokyo', 'JST-9' }, - { 'Asia/Tomsk', '<+07>-7' }, - { 'Asia/Ulaanbaatar', '<+08>-8' }, - { 'Asia/Urumqi', '<+06>-6' }, - { 'Asia/Ust-Nera', '<+10>-10' }, - { 'Asia/Vientiane', '<+07>-7' }, - { 'Asia/Vladivostok', '<+10>-10' }, - { 'Asia/Yakutsk', '<+09>-9' }, - { 'Asia/Yangon', '<+0630>-6:30' }, - { 'Asia/Yekaterinburg', '<+05>-5' }, - { 'Asia/Yerevan', '<+04>-4' }, - { 'Atlantic/Azores', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' }, - { 'Atlantic/Bermuda', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'Atlantic/Canary', 'WET0WEST,M3.5.0/1,M10.5.0' }, - { 'Atlantic/Cape Verde', '<-01>1' }, - { 'Atlantic/Faroe', 'WET0WEST,M3.5.0/1,M10.5.0' }, - { 'Atlantic/Madeira', 'WET0WEST,M3.5.0/1,M10.5.0' }, - { 'Atlantic/Reykjavik', 'GMT0' }, - { 'Atlantic/South Georgia', '<-02>2' }, - { 'Atlantic/St Helena', 'GMT0' }, - { 'Atlantic/Stanley', '<-03>3' }, - { 'Australia/Adelaide', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Brisbane', 'AEST-10' }, - { 'Australia/Broken Hill', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Currie', 'AEST-10AEDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Darwin', 'ACST-9:30' }, - { 'Australia/Eucla', '<+0845>-8:45' }, - { 'Australia/Hobart', 'AEST-10AEDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Lindeman', 'AEST-10' }, - { 'Australia/Lord Howe', '<+1030>-10:30<+11>-11,M10.1.0,M4.1.0' }, - { 'Australia/Melbourne', 'AEST-10AEDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Perth', 'AWST-8' }, - { 'Australia/Sydney', 'AEST-10AEDT,M10.1.0,M4.1.0/3' }, - { 'Etc/GMT', 'GMT0' }, - { 'Etc/GMT+1', '<-01>1' }, - { 'Etc/GMT+10', '<-10>10' }, - { 'Etc/GMT+11', '<-11>11' }, - { 'Etc/GMT+12', '<-12>12' }, - { 'Etc/GMT+2', '<-02>2' }, - { 'Etc/GMT+3', '<-03>3' }, - { 'Etc/GMT+4', '<-04>4' }, - { 'Etc/GMT+5', '<-05>5' }, - { 'Etc/GMT+6', '<-06>6' }, - { 'Etc/GMT+7', '<-07>7' }, - { 'Etc/GMT+8', '<-08>8' }, - { 'Etc/GMT+9', '<-09>9' }, - { 'Etc/GMT-1', '<+01>-1' }, - { 'Etc/GMT-10', '<+10>-10' }, - { 'Etc/GMT-11', '<+11>-11' }, - { 'Etc/GMT-12', '<+12>-12' }, - { 'Etc/GMT-13', '<+13>-13' }, - { 'Etc/GMT-14', '<+14>-14' }, - { 'Etc/GMT-2', '<+02>-2' }, - { 'Etc/GMT-3', '<+03>-3' }, - { 'Etc/GMT-4', '<+04>-4' }, - { 'Etc/GMT-5', '<+05>-5' }, - { 'Etc/GMT-6', '<+06>-6' }, - { 'Etc/GMT-7', '<+07>-7' }, - { 'Etc/GMT-8', '<+08>-8' }, - { 'Etc/GMT-9', '<+09>-9' }, - { 'Europe/Amsterdam', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Andorra', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Astrakhan', '<+04>-4' }, - { 'Europe/Athens', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Belgrade', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Berlin', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Bratislava', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Brussels', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Bucharest', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Budapest', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Busingen', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Chisinau', 'EET-2EEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Copenhagen', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Dublin', 'GMT0IST,M3.5.0/1,M10.5.0' }, - { 'Europe/Gibraltar', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Guernsey', 'GMT0BST,M3.5.0/1,M10.5.0' }, - { 'Europe/Helsinki', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Isle of Man', 'GMT0BST,M3.5.0/1,M10.5.0' }, - { 'Europe/Istanbul', '<+03>-3' }, - { 'Europe/Jersey', 'GMT0BST,M3.5.0/1,M10.5.0' }, - { 'Europe/Kaliningrad', 'EET-2' }, - { 'Europe/Kiev', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Kirov', '<+03>-3' }, - { 'Europe/Lisbon', 'WET0WEST,M3.5.0/1,M10.5.0' }, - { 'Europe/Ljubljana', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/London', 'GMT0BST,M3.5.0/1,M10.5.0' }, - { 'Europe/Luxembourg', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Madrid', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Malta', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Mariehamn', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Minsk', '<+03>-3' }, - { 'Europe/Monaco', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Moscow', 'MSK-3' }, - { 'Europe/Oslo', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Paris', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Podgorica', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Prague', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Riga', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Rome', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Samara', '<+04>-4' }, - { 'Europe/San Marino', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Sarajevo', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Saratov', '<+04>-4' }, - { 'Europe/Simferopol', 'MSK-3' }, - { 'Europe/Skopje', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Sofia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Stockholm', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Tallinn', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Tirane', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Ulyanovsk', '<+04>-4' }, - { 'Europe/Uzhgorod', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Vaduz', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Vatican', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Vienna', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Vilnius', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Volgograd', '<+03>-3' }, - { 'Europe/Warsaw', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Zagreb', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Zaporozhye', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Zurich', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Indian/Antananarivo', 'EAT-3' }, - { 'Indian/Chagos', '<+06>-6' }, - { 'Indian/Christmas', '<+07>-7' }, - { 'Indian/Cocos', '<+0630>-6:30' }, - { 'Indian/Comoro', 'EAT-3' }, - { 'Indian/Kerguelen', '<+05>-5' }, - { 'Indian/Mahe', '<+04>-4' }, - { 'Indian/Maldives', '<+05>-5' }, - { 'Indian/Mauritius', '<+04>-4' }, - { 'Indian/Mayotte', 'EAT-3' }, - { 'Indian/Reunion', '<+04>-4' }, - { 'Pacific/Apia', '<+13>-13<+14>,M9.5.0/3,M4.1.0/4' }, - { 'Pacific/Auckland', 'NZST-12NZDT,M9.5.0,M4.1.0/3' }, - { 'Pacific/Bougainville', '<+11>-11' }, - { 'Pacific/Chatham', '<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45' }, - { 'Pacific/Chuuk', '<+10>-10' }, - { 'Pacific/Easter', '<-06>6<-05>,M8.2.6/22,M5.2.6/22' }, - { 'Pacific/Efate', '<+11>-11' }, - { 'Pacific/Enderbury', '<+13>-13' }, - { 'Pacific/Fakaofo', '<+13>-13' }, - { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.2.1/147' }, - { 'Pacific/Funafuti', '<+12>-12' }, - { 'Pacific/Galapagos', '<-06>6' }, - { 'Pacific/Gambier', '<-09>9' }, - { 'Pacific/Guadalcanal', '<+11>-11' }, - { 'Pacific/Guam', 'ChST-10' }, - { 'Pacific/Honolulu', 'HST10' }, - { 'Pacific/Kiritimati', '<+14>-14' }, - { 'Pacific/Kosrae', '<+11>-11' }, - { 'Pacific/Kwajalein', '<+12>-12' }, - { 'Pacific/Majuro', '<+12>-12' }, - { 'Pacific/Marquesas', '<-0930>9:30' }, - { 'Pacific/Midway', 'SST11' }, - { 'Pacific/Nauru', '<+12>-12' }, - { 'Pacific/Niue', '<-11>11' }, - { 'Pacific/Norfolk', '<+11>-11' }, - { 'Pacific/Noumea', '<+11>-11' }, - { 'Pacific/Pago Pago', 'SST11' }, - { 'Pacific/Palau', '<+09>-9' }, - { 'Pacific/Pitcairn', '<-08>8' }, - { 'Pacific/Pohnpei', '<+11>-11' }, - { 'Pacific/Port Moresby', '<+10>-10' }, - { 'Pacific/Rarotonga', '<-10>10' }, - { 'Pacific/Saipan', 'ChST-10' }, - { 'Pacific/Tahiti', '<-10>10' }, - { 'Pacific/Tarawa', '<+12>-12' }, - { 'Pacific/Tongatapu', '<+13>-13' }, - { 'Pacific/Wake', '<+12>-12' }, - { 'Pacific/Wallis', '<+12>-12' }, -} diff --git a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua b/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua deleted file mode 100644 index cf5afeb9d8..0000000000 --- a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module "luci.sys.zoneinfo.tzoffset" - -OFFSET = { - gmt = 0, -- GMT - eat = 10800, -- EAT - cet = 3600, -- CET - wat = 3600, -- WAT - cat = 7200, -- CAT - eet = 7200, -- EET - wet = 0, -- WET - sast = 7200, -- SAST - hst = -36000, -- HST - hdt = -32400, -- HDT - akst = -32400, -- AKST - akdt = -28800, -- AKDT - ast = -14400, -- AST - est = -18000, -- EST - cst = -21600, -- CST - cdt = -18000, -- CDT - mst = -25200, -- MST - mdt = -21600, -- MDT - pst = -28800, -- PST - pdt = -25200, -- PDT - nst = -12600, -- NST - ndt = -9000, -- NDT - nzst = 43200, -- NZST - nzdt = 46800, -- NZDT - hkt = 28800, -- HKT - wib = 25200, -- WIB - wit = 32400, -- WIT - ist = 7200, -- IST - idt = 10800, -- IDT - pkt = 18000, -- PKT - wita = 28800, -- WITA - kst = 30600, -- KST - jst = 32400, -- JST - acst = 34200, -- ACST - acdt = 37800, -- ACDT - aest = 36000, -- AEST - awst = 28800, -- AWST - msk = 10800, -- MSK - sst = -39600, -- SST -} diff --git a/package/luci/modules/luci-base/luasrc/template.lua b/package/luci/modules/luci-base/luasrc/template.lua deleted file mode 100644 index 588028c2ee..0000000000 --- a/package/luci/modules/luci-base/luasrc/template.lua +++ /dev/null @@ -1,100 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -local config = require "luci.config" -local tparser = require "luci.template.parser" - -local tostring, pairs, loadstring = tostring, pairs, loadstring -local setmetatable, loadfile = setmetatable, loadfile -local getfenv, setfenv, rawget = getfenv, setfenv, rawget -local assert, type, error = assert, type, error - ---- LuCI template library. -module "luci.template" - -config.template = config.template or {} -viewdir = config.template.viewdir or util.libpath() .. "/view" - - --- Define the namespace for template modules -context = util.threadlocal() - ---- Render a certain template. --- @param name Template name --- @param scope Scope to assign to template (optional) -function render(name, scope) - return Template(name):render(scope or getfenv(2)) -end - ---- Render a template from a string. --- @param template Template string --- @param scope Scope to assign to template (optional) -function render_string(template, scope) - return Template(nil, template):render(scope or getfenv(2)) -end - - --- Template class -Template = util.class() - --- Shared template cache to store templates in to avoid unnecessary reloading -Template.cache = setmetatable({}, {__mode = "v"}) - - --- Constructor - Reads and compiles the template on-demand -function Template.__init__(self, name, template) - if name then - self.template = self.cache[name] - self.name = name - else - self.name = "[string]" - end - - -- Create a new namespace for this template - self.viewns = context.viewns - - -- If we have a cached template, skip compiling and loading - if not self.template then - - -- Compile template - local err - local sourcefile - - if name then - sourcefile = viewdir .. "/" .. name .. ".htm" - self.template, _, err = tparser.parse(sourcefile) - else - sourcefile = "[string]" - self.template, _, err = tparser.parse_string(template) - end - - -- If we have no valid template throw error, otherwise cache the template - if not self.template then - error("Failed to load template '" .. name .. "'.\n" .. - "Error while parsing template '" .. sourcefile .. "':\n" .. - (err or "Unknown syntax error")) - elseif name then - self.cache[name] = self.template - end - end -end - - --- Renders a template -function Template.render(self, scope) - scope = scope or getfenv(2) - - -- Put our predefined objects in the scope of the template - setfenv(self.template, setmetatable({}, {__index = - function(tbl, key) - return rawget(tbl, key) or self.viewns[key] or scope[key] - end})) - - -- Now finally render the thing - local stat, err = util.copcall(self.template) - if not stat then - error("Failed to execute template '" .. self.name .. "'.\n" .. - "A runtime error occured: " .. tostring(err or "(nil)")) - end -end diff --git a/package/luci/modules/luci-base/luasrc/tools/proto.lua b/package/luci/modules/luci-base/luasrc/tools/proto.lua deleted file mode 100644 index 147688d2ca..0000000000 --- a/package/luci/modules/luci-base/luasrc/tools/proto.lua +++ /dev/null @@ -1,36 +0,0 @@ --- Copyright 2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.tools.proto", package.seeall) - -function opt_macaddr(s, ifc, ...) - local v = luci.cbi.Value - local o = s:taboption("advanced", v, "macaddr", ...) - - o.placeholder = ifc and ifc:mac() - o.datatype = "macaddr" - - function o.cfgvalue(self, section) - local w = ifc and ifc:get_wifinet() - if w then - return w:get("macaddr") - else - return v.cfgvalue(self, section) - end - end - - function o.write(self, section, value) - local w = ifc and ifc:get_wifinet() - if w then - w:set("macaddr", value) - elseif value then - v.write(self, section, value) - else - v.remove(self, section) - end - end - - function o.remove(self, section) - self:write(section, nil) - end -end diff --git a/package/luci/modules/luci-base/luasrc/tools/status.lua b/package/luci/modules/luci-base/luasrc/tools/status.lua deleted file mode 100644 index 95ff46df15..0000000000 --- a/package/luci/modules/luci-base/luasrc/tools/status.lua +++ /dev/null @@ -1,230 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.tools.status", package.seeall) - -local uci = require "luci.model.uci".cursor() - -local function dhcp_leases_common(family) - local rv = { } - local nfs = require "nixio.fs" - local leasefile = "/tmp/dhcp.leases" - - uci:foreach("dhcp", "dnsmasq", - function(s) - if s.leasefile and nfs.access(s.leasefile) then - leasefile = s.leasefile - return false - end - end) - - local fd = io.open(leasefile, "r") - if fd then - while true do - local ln = fd:read("*l") - if not ln then - break - else - local ts, mac, ip, name, duid = ln:match("^(%d+) (%S+) (%S+) (%S+) (%S+)") - local expire = tonumber(ts) or 0 - if ts and mac and ip and name and duid then - if family == 4 and not ip:match(":") then - rv[#rv+1] = { - expires = (expire ~= 0) and os.difftime(expire, os.time()), - macaddr = mac, - ipaddr = ip, - hostname = (name ~= "*") and name - } - elseif family == 6 and ip:match(":") then - rv[#rv+1] = { - expires = (expire ~= 0) and os.difftime(expire, os.time()), - ip6addr = ip, - duid = (duid ~= "*") and duid, - hostname = (name ~= "*") and name - } - end - end - end - end - fd:close() - end - - local lease6file = "/tmp/hosts/odhcpd" - uci:foreach("dhcp", "odhcpd", - function(t) - if t.leasefile and nfs.access(t.leasefile) then - lease6file = t.leasefile - return false - end - end) - local fd = io.open(lease6file, "r") - if fd then - while true do - local ln = fd:read("*l") - if not ln then - break - else - local iface, duid, iaid, name, ts, id, length, ip = ln:match("^# (%S+) (%S+) (%S+) (%S+) (-?%d+) (%S+) (%S+) (.*)") - local expire = tonumber(ts) or 0 - if ip and iaid ~= "ipv4" and family == 6 then - rv[#rv+1] = { - expires = (expire >= 0) and os.difftime(expire, os.time()), - duid = duid, - ip6addr = ip, - hostname = (name ~= "-") and name - } - elseif ip and iaid == "ipv4" and family == 4 then - local mac, mac1, mac2, mac3, mac4, mac5, mac6 - if duid and type(duid) == "string" then - mac1, mac2, mac3, mac4, mac5, mac6 = duid:match("^(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$") - end - if not (mac1 and mac2 and mac3 and mac4 and mac5 and mac6) then - mac = "FF:FF:FF:FF:FF:FF" - else - mac = mac1..":"..mac2..":"..mac3..":"..mac4..":"..mac5..":"..mac6 - end - rv[#rv+1] = { - expires = (expire >= 0) and os.difftime(expire, os.time()), - macaddr = duid, - macaddr = mac:lower(), - ipaddr = ip, - hostname = (name ~= "-") and name - } - end - end - end - fd:close() - end - - return rv -end - -function dhcp_leases() - return dhcp_leases_common(4) -end - -function dhcp6_leases() - return dhcp_leases_common(6) -end - -function wifi_networks() - local rv = { } - local ntm = require "luci.model.network".init() - - local dev - for _, dev in ipairs(ntm:get_wifidevs()) do - local rd = { - up = dev:is_up(), - device = dev:name(), - name = dev:get_i18n(), - networks = { } - } - - local net - for _, net in ipairs(dev:get_wifinets()) do - rd.networks[#rd.networks+1] = { - name = net:shortname(), - link = net:adminlink(), - up = net:is_up(), - mode = net:active_mode(), - ssid = net:active_ssid(), - bssid = net:active_bssid(), - encryption = net:active_encryption(), - frequency = net:frequency(), - channel = net:channel(), - signal = net:signal(), - quality = net:signal_percent(), - noise = net:noise(), - bitrate = net:bitrate(), - ifname = net:ifname(), - assoclist = net:assoclist(), - country = net:country(), - txpower = net:txpower(), - txpoweroff = net:txpower_offset(), - disabled = (dev:get("disabled") == "1" or - net:get("disabled") == "1") - } - end - - rv[#rv+1] = rd - end - - return rv -end - -function wifi_network(id) - local ntm = require "luci.model.network".init() - local net = ntm:get_wifinet(id) - if net then - local dev = net:get_device() - if dev then - return { - id = id, - name = net:shortname(), - link = net:adminlink(), - up = net:is_up(), - mode = net:active_mode(), - ssid = net:active_ssid(), - bssid = net:active_bssid(), - encryption = net:active_encryption(), - frequency = net:frequency(), - channel = net:channel(), - signal = net:signal(), - quality = net:signal_percent(), - noise = net:noise(), - bitrate = net:bitrate(), - ifname = net:ifname(), - assoclist = net:assoclist(), - country = net:country(), - txpower = net:txpower(), - txpoweroff = net:txpower_offset(), - disabled = (dev:get("disabled") == "1" or - net:get("disabled") == "1"), - device = { - up = dev:is_up(), - device = dev:name(), - name = dev:get_i18n() - } - } - end - end - return { } -end - -function switch_status(devs) - local dev - local switches = { } - for dev in devs:gmatch("[^%s,]+") do - local ports = { } - local swc = io.popen("swconfig dev %q show" % dev, "r") - if swc then - local l - repeat - l = swc:read("*l") - if l then - local port, up = l:match("port:(%d+) link:(%w+)") - if port then - local speed = l:match(" speed:(%d+)") - local duplex = l:match(" (%w+)-duplex") - local txflow = l:match(" (txflow)") - local rxflow = l:match(" (rxflow)") - local auto = l:match(" (auto)") - - ports[#ports+1] = { - port = tonumber(port) or 0, - speed = tonumber(speed) or 0, - link = (up == "up"), - duplex = (duplex == "full"), - rxflow = (not not rxflow), - txflow = (not not txflow), - auto = (not not auto) - } - end - end - until not l - swc:close() - end - switches[dev] = ports - end - return switches -end diff --git a/package/luci/modules/luci-base/luasrc/tools/webadmin.lua b/package/luci/modules/luci-base/luasrc/tools/webadmin.lua deleted file mode 100644 index 106810aa03..0000000000 --- a/package/luci/modules/luci-base/luasrc/tools/webadmin.lua +++ /dev/null @@ -1,105 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.tools.webadmin", package.seeall) - -local util = require "luci.util" -local uci = require "luci.model.uci" -local ip = require "luci.ip" - -function byte_format(byte) - local suff = {"B", "KB", "MB", "GB", "TB"} - for i=1, 5 do - if byte > 1024 and i < 5 then - byte = byte / 1024 - else - return string.format("%.2f %s", byte, suff[i]) - end - end -end - -function date_format(secs) - local suff = {"min", "h", "d"} - local mins = 0 - local hour = 0 - local days = 0 - - secs = math.floor(secs) - if secs > 60 then - mins = math.floor(secs / 60) - secs = secs % 60 - end - - if mins > 60 then - hour = math.floor(mins / 60) - mins = mins % 60 - end - - if hour > 24 then - days = math.floor(hour / 24) - hour = hour % 24 - end - - if days > 0 then - return string.format("%.0fd %02.0fh %02.0fmin %02.0fs", days, hour, mins, secs) - else - return string.format("%02.0fh %02.0fmin %02.0fs", hour, mins, secs) - end -end - -function cbi_add_networks(field) - uci.cursor():foreach("network", "interface", - function (section) - if section[".name"] ~= "loopback" then - field:value(section[".name"]) - end - end - ) - field.titleref = luci.dispatcher.build_url("admin", "network", "network") -end - -function cbi_add_knownips(field) - local _, n - for _, n in ipairs(ip.neighbors({ family = 4 })) do - if n.dest then - field:value(n.dest:string()) - end - end -end - -function firewall_find_zone(name) - local find - - luci.model.uci.cursor():foreach("firewall", "zone", - function (section) - if section.name == name then - find = section[".name"] - end - end - ) - - return find -end - -function iface_get_network(iface) - local link = ip.link(tostring(iface)) - if link.master then - iface = link.master - end - - local cur = uci.cursor() - local dump = util.ubus("network.interface", "dump", { }) - if dump then - local _, net - for _, net in ipairs(dump.interface) do - if net.l3_device == iface or net.device == iface then - -- cross check with uci to filter out @name style aliases - local uciname = cur:get("network", net.interface, "ifname") - if type(uciname) == "string" and uciname:sub(1,1) ~= "@" or uciname then - return net.interface - end - end - end - end -end diff --git a/package/luci/modules/luci-base/luasrc/util.lua b/package/luci/modules/luci-base/luasrc/util.lua deleted file mode 100644 index 0e7334be87..0000000000 --- a/package/luci/modules/luci-base/luasrc/util.lua +++ /dev/null @@ -1,739 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local io = require "io" -local math = require "math" -local table = require "table" -local debug = require "debug" -local ldebug = require "luci.debug" -local string = require "string" -local coroutine = require "coroutine" -local tparser = require "luci.template.parser" -local json = require "luci.jsonc" - -local _ubus = require "ubus" -local _ubus_connection = nil - -local getmetatable, setmetatable = getmetatable, setmetatable -local rawget, rawset, unpack = rawget, rawset, unpack -local tostring, type, assert, error = tostring, type, assert, error -local ipairs, pairs, next, loadstring = ipairs, pairs, next, loadstring -local require, pcall, xpcall = require, pcall, xpcall -local collectgarbage, get_memory_limit = collectgarbage, get_memory_limit - -module "luci.util" - --- --- Pythonic string formatting extension --- -getmetatable("").__mod = function(a, b) - local ok, res - - if not b then - return a - elseif type(b) == "table" then - local k, _ - for k, _ in pairs(b) do if type(b[k]) == "userdata" then b[k] = tostring(b[k]) end end - - ok, res = pcall(a.format, a, unpack(b)) - if not ok then - error(res, 2) - end - return res - else - if type(b) == "userdata" then b = tostring(b) end - - ok, res = pcall(a.format, a, b) - if not ok then - error(res, 2) - end - return res - end -end - - --- --- Class helper routines --- - --- Instantiates a class -local function _instantiate(class, ...) - local inst = setmetatable({}, {__index = class}) - - if inst.__init__ then - inst:__init__(...) - end - - return inst -end - --- The class object can be instantiated by calling itself. --- Any class functions or shared parameters can be attached to this object. --- Attaching a table to the class object makes this table shared between --- all instances of this class. For object parameters use the __init__ function. --- Classes can inherit member functions and values from a base class. --- Class can be instantiated by calling them. All parameters will be passed --- to the __init__ function of this class - if such a function exists. --- The __init__ function must be used to set any object parameters that are not shared --- with other objects of this class. Any return values will be ignored. -function class(base) - return setmetatable({}, { - __call = _instantiate, - __index = base - }) -end - -function instanceof(object, class) - local meta = getmetatable(object) - while meta and meta.__index do - if meta.__index == class then - return true - end - meta = getmetatable(meta.__index) - end - return false -end - - --- --- Scope manipulation routines --- - -local tl_meta = { - __mode = "k", - - __index = function(self, key) - local t = rawget(self, coxpt[coroutine.running()] - or coroutine.running() or 0) - return t and t[key] - end, - - __newindex = function(self, key, value) - local c = coxpt[coroutine.running()] or coroutine.running() or 0 - local r = rawget(self, c) - if not r then - rawset(self, c, { [key] = value }) - else - r[key] = value - end - end -} - --- the current active coroutine. A thread local store is private a table object --- whose values can't be accessed from outside of the running coroutine. -function threadlocal(tbl) - return setmetatable(tbl or {}, tl_meta) -end - - --- --- Debugging routines --- - -function perror(obj) - return io.stderr:write(tostring(obj) .. "\n") -end - -function dumptable(t, maxdepth, i, seen) - i = i or 0 - seen = seen or setmetatable({}, {__mode="k"}) - - for k,v in pairs(t) do - perror(string.rep("\t", i) .. tostring(k) .. "\t" .. tostring(v)) - if type(v) == "table" and (not maxdepth or i < maxdepth) then - if not seen[v] then - seen[v] = true - dumptable(v, maxdepth, i+1, seen) - else - perror(string.rep("\t", i) .. "*** RECURSION ***") - end - end - end -end - - --- --- String and data manipulation routines --- - -function pcdata(value) - return value and tparser.pcdata(tostring(value)) -end - -function striptags(value) - return value and tparser.striptags(tostring(value)) -end - --- for bash, ash and similar shells single-quoted strings are taken --- literally except for single quotes (which terminate the string) --- (and the exception noted below for dash (-) at the start of a --- command line parameter). -function shellsqescape(value) - local res - res, _ = string.gsub(value, "'", "'\\''") - return res -end - --- bash, ash and other similar shells interpret a dash (-) at the start --- of a command-line parameters as an option indicator regardless of --- whether it is inside a single-quoted string. It must be backlash --- escaped to resolve this. This requires in some funky special-case --- handling. It may actually be a property of the getopt function --- rather than the shell proper. -function shellstartsqescape(value) - res, _ = string.gsub(value, "^\-", "\\-") - res, _ = string.gsub(res, "^-", "\-") - return shellsqescape(value) -end - --- containing the resulting substrings. The optional max parameter specifies --- the number of bytes to process, regardless of the actual length of the given --- string. The optional last parameter, regex, specifies whether the separator --- sequence is interpreted as regular expression. --- pattern as regular expression (optional, default is false) -function split(str, pat, max, regex) - pat = pat or "\n" - max = max or #str - - local t = {} - local c = 1 - - if #str == 0 then - return {""} - end - - if #pat == 0 then - return nil - end - - if max == 0 then - return str - end - - repeat - local s, e = str:find(pat, c, not regex) - max = max - 1 - if s and max < 0 then - t[#t+1] = str:sub(c) - else - t[#t+1] = str:sub(c, s and s - 1) - end - c = e and e + 1 or #str + 1 - until not s or max < 0 - - return t -end - -function trim(str) - return (str:gsub("^%s*(.-)%s*$", "%1")) -end - -function cmatch(str, pat) - local count = 0 - for _ in str:gmatch(pat) do count = count + 1 end - return count -end - --- one token per invocation, the tokens are separated by whitespace. If the --- input value is a table, it is transformed into a string first. A nil value --- will result in a valid interator which aborts with the first invocation. -function imatch(v) - if type(v) == "table" then - local k = nil - return function() - k = next(v, k) - return v[k] - end - - elseif type(v) == "number" or type(v) == "boolean" then - local x = true - return function() - if x then - x = false - return tostring(v) - end - end - - elseif type(v) == "userdata" or type(v) == "string" then - return tostring(v):gmatch("%S+") - end - - return function() end -end - --- value or 0 if the unit is unknown. Upper- or lower case is irrelevant. --- Recognized units are: --- o "y" - one year (60*60*24*366) --- o "m" - one month (60*60*24*31) --- o "w" - one week (60*60*24*7) --- o "d" - one day (60*60*24) --- o "h" - one hour (60*60) --- o "min" - one minute (60) --- o "kb" - one kilobyte (1024) --- o "mb" - one megabyte (1024*1024) --- o "gb" - one gigabyte (1024*1024*1024) --- o "kib" - one si kilobyte (1000) --- o "mib" - one si megabyte (1000*1000) --- o "gib" - one si gigabyte (1000*1000*1000) -function parse_units(ustr) - - local val = 0 - - -- unit map - local map = { - -- date stuff - y = 60 * 60 * 24 * 366, - m = 60 * 60 * 24 * 31, - w = 60 * 60 * 24 * 7, - d = 60 * 60 * 24, - h = 60 * 60, - min = 60, - - -- storage sizes - kb = 1024, - mb = 1024 * 1024, - gb = 1024 * 1024 * 1024, - - -- storage sizes (si) - kib = 1000, - mib = 1000 * 1000, - gib = 1000 * 1000 * 1000 - } - - -- parse input string - for spec in ustr:lower():gmatch("[0-9%.]+[a-zA-Z]*") do - - local num = spec:gsub("[^0-9%.]+$","") - local spn = spec:gsub("^[0-9%.]+", "") - - if map[spn] or map[spn:sub(1,1)] then - val = val + num * ( map[spn] or map[spn:sub(1,1)] ) - else - val = val + num - end - end - - - return val -end - --- also register functions above in the central string class for convenience -string.pcdata = pcdata -string.striptags = striptags -string.split = split -string.trim = trim -string.cmatch = cmatch -string.parse_units = parse_units - - -function append(src, ...) - for i, a in ipairs({...}) do - if type(a) == "table" then - for j, v in ipairs(a) do - src[#src+1] = v - end - else - src[#src+1] = a - end - end - return src -end - -function combine(...) - return append({}, ...) -end - -function contains(table, value) - for k, v in pairs(table) do - if value == v then - return k - end - end - return false -end - --- Both table are - in fact - merged together. -function update(t, updates) - for k, v in pairs(updates) do - t[k] = v - end -end - -function keys(t) - local keys = { } - if t then - for k, _ in kspairs(t) do - keys[#keys+1] = k - end - end - return keys -end - -function clone(object, deep) - local copy = {} - - for k, v in pairs(object) do - if deep and type(v) == "table" then - v = clone(v, deep) - end - copy[k] = v - end - - return setmetatable(copy, getmetatable(object)) -end - - -function dtable() - return setmetatable({}, { __index = - function(tbl, key) - return rawget(tbl, key) - or rawget(rawset(tbl, key, dtable()), key) - end - }) -end - - --- Serialize the contents of a table value. -function _serialize_table(t, seen) - assert(not seen[t], "Recursion detected.") - seen[t] = true - - local data = "" - local idata = "" - local ilen = 0 - - for k, v in pairs(t) do - if type(k) ~= "number" or k < 1 or math.floor(k) ~= k or ( k - #t ) > 3 then - k = serialize_data(k, seen) - v = serialize_data(v, seen) - data = data .. ( #data > 0 and ", " or "" ) .. - '[' .. k .. '] = ' .. v - elseif k > ilen then - ilen = k - end - end - - for i = 1, ilen do - local v = serialize_data(t[i], seen) - idata = idata .. ( #idata > 0 and ", " or "" ) .. v - end - - return idata .. ( #data > 0 and #idata > 0 and ", " or "" ) .. data -end - --- with loadstring(). -function serialize_data(val, seen) - seen = seen or setmetatable({}, {__mode="k"}) - - if val == nil then - return "nil" - elseif type(val) == "number" then - return val - elseif type(val) == "string" then - return "%q" % val - elseif type(val) == "boolean" then - return val and "true" or "false" - elseif type(val) == "function" then - return "loadstring(%q)" % get_bytecode(val) - elseif type(val) == "table" then - return "{ " .. _serialize_table(val, seen) .. " }" - else - return '"[unhandled data type:' .. type(val) .. ']"' - end -end - -function restore_data(str) - return loadstring("return " .. str)() -end - - --- --- Byte code manipulation routines --- - --- will be stripped before it is returned. -function get_bytecode(val) - local code - - if type(val) == "function" then - code = string.dump(val) - else - code = string.dump( loadstring( "return " .. serialize_data(val) ) ) - end - - return code -- and strip_bytecode(code) -end - --- numbers and debugging numbers will be discarded. Original version by --- Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html) -function strip_bytecode(code) - local version, format, endian, int, size, ins, num, lnum = code:byte(5, 12) - local subint - if endian == 1 then - subint = function(code, i, l) - local val = 0 - for n = l, 1, -1 do - val = val * 256 + code:byte(i + n - 1) - end - return val, i + l - end - else - subint = function(code, i, l) - local val = 0 - for n = 1, l, 1 do - val = val * 256 + code:byte(i + n - 1) - end - return val, i + l - end - end - - local function strip_function(code) - local count, offset = subint(code, 1, size) - local stripped = { string.rep("\0", size) } - local dirty = offset + count - offset = offset + count + int * 2 + 4 - offset = offset + int + subint(code, offset, int) * ins - count, offset = subint(code, offset, int) - for n = 1, count do - local t - t, offset = subint(code, offset, 1) - if t == 1 then - offset = offset + 1 - elseif t == 4 then - offset = offset + size + subint(code, offset, size) - elseif t == 3 then - offset = offset + num - elseif t == 254 or t == 9 then - offset = offset + lnum - end - end - count, offset = subint(code, offset, int) - stripped[#stripped+1] = code:sub(dirty, offset - 1) - for n = 1, count do - local proto, off = strip_function(code:sub(offset, -1)) - stripped[#stripped+1] = proto - offset = offset + off - 1 - end - offset = offset + subint(code, offset, int) * int + int - count, offset = subint(code, offset, int) - for n = 1, count do - offset = offset + subint(code, offset, size) + size + int * 2 - end - count, offset = subint(code, offset, int) - for n = 1, count do - offset = offset + subint(code, offset, size) + size - end - stripped[#stripped+1] = string.rep("\0", int * 3) - return table.concat(stripped), offset - end - - return code:sub(1,12) .. strip_function(code:sub(13,-1)) -end - - --- --- Sorting iterator functions --- - -function _sortiter( t, f ) - local keys = { } - - local k, v - for k, v in pairs(t) do - keys[#keys+1] = k - end - - local _pos = 0 - - table.sort( keys, f ) - - return function() - _pos = _pos + 1 - if _pos <= #keys then - return keys[_pos], t[keys[_pos]], _pos - end - end -end - --- the provided callback function. -function spairs(t,f) - return _sortiter( t, f ) -end - --- The table pairs are sorted by key. -function kspairs(t) - return _sortiter( t ) -end - --- The table pairs are sorted by value. -function vspairs(t) - return _sortiter( t, function (a,b) return t[a] < t[b] end ) -end - - --- --- System utility functions --- - -function bigendian() - return string.byte(string.dump(function() end), 7) == 0 -end - -function exec(command) - local pp = io.popen(command) - local data = pp:read("*a") - pp:close() - - return data -end - -function execi(command) - local pp = io.popen(command) - - return pp and function() - local line = pp:read() - - if not line then - pp:close() - end - - return line - end -end - --- Deprecated -function execl(command) - local pp = io.popen(command) - local line = "" - local data = {} - - while true do - line = pp:read() - if (line == nil) then break end - data[#data+1] = line - end - pp:close() - - return data -end - -function ubus(object, method, data) - if not _ubus_connection then - _ubus_connection = _ubus.connect() - assert(_ubus_connection, "Unable to establish ubus connection") - end - - if object and method then - if type(data) ~= "table" then - data = { } - end - return _ubus_connection:call(object, method, data) - elseif object then - return _ubus_connection:signatures(object) - else - return _ubus_connection:objects() - end -end - -function serialize_json(x, cb) - local js = json.stringify(x) - if type(cb) == "function" then - cb(js) - else - return js - end -end - - -function libpath() - return require "nixio.fs".dirname(ldebug.__file__) -end - -function checklib(fullpathexe, wantedlib) - local fs = require "nixio.fs" - local haveldd = fs.access('/usr/bin/ldd') - if not haveldd then - return false - end - local libs = exec("/usr/bin/ldd " .. fullpathexe) - if not libs then - return false - end - for k, v in ipairs(split(libs)) do - if v:find(wantedlib) then - return true - end - end - return false -end - --- --- Coroutine safe xpcall and pcall versions modified for Luci --- original version: --- coxpcall 1.13 - Copyright 2005 - Kepler Project (www.keplerproject.org) --- --- Copyright © 2005 Kepler Project. --- Permission is hereby granted, free of charge, to any person obtaining a --- copy of this software and associated documentation files (the "Software"), --- to deal in the Software without restriction, including without limitation --- the rights to use, copy, modify, merge, publish, distribute, sublicense, --- and/or sell copies of the Software, and to permit persons to whom the --- Software is furnished to do so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be --- included in all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, --- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES --- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, --- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE --- OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -local performResume, handleReturnValue -local oldpcall, oldxpcall = pcall, xpcall -coxpt = {} -setmetatable(coxpt, {__mode = "kv"}) - --- Identity function for copcall -local function copcall_id(trace, ...) - return ... -end - --- values of either the function or the error handler -function coxpcall(f, err, ...) - local res, co = oldpcall(coroutine.create, f) - if not res then - local params = {...} - local newf = function() return f(unpack(params)) end - co = coroutine.create(newf) - end - local c = coroutine.running() - coxpt[co] = coxpt[c] or c or 0 - - return performResume(err, co, ...) -end - --- values of the function or the error object -function copcall(f, ...) - return coxpcall(f, copcall_id, ...) -end - --- Handle return value of protected call -function handleReturnValue(err, co, status, ...) - if not status then - return false, err(debug.traceback(co, (...)), ...) - end - - if coroutine.status(co) ~= 'suspended' then - return true, ... - end - - return performResume(err, co, coroutine.yield(...)) -end - --- Resume execution of protected function call -function performResume(err, co, ...) - return handleReturnValue(err, co, coroutine.resume(co, ...)) -end diff --git a/package/luci/modules/luci-base/luasrc/util.luadoc b/package/luci/modules/luci-base/luasrc/util.luadoc deleted file mode 100644 index 805eeb7f8e..0000000000 --- a/package/luci/modules/luci-base/luasrc/util.luadoc +++ /dev/null @@ -1,378 +0,0 @@ ----[[ -LuCI utility functions. -]] -module "luci.util" - ----[[ -Create a Class object (Python-style object model). - -The class object can be instantiated by calling itself. -Any class functions or shared parameters can be attached to this object. -Attaching a table to the class object makes this table shared between -all instances of this class. For object parameters use the __init__ function. -Classes can inherit member functions and values from a base class. -Class can be instantiated by calling them. All parameters will be passed -to the __init__ function of this class - if such a function exists. -The __init__ function must be used to set any object parameters that are not shared -with other objects of this class. Any return values will be ignored. -@class function -@name class -@param base The base class to inherit from (optional) -@return A class object -@see instanceof -@see clone -]] - ----[[ -Test whether the given object is an instance of the given class. - -@class function -@name instanceof -@param object Object instance -@param class Class object to test against -@return Boolean indicating whether the object is an instance -@see class -@see clone -]] - ----[[ -Create a new or get an already existing thread local store associated with - -the current active coroutine. A thread local store is private a table object -whose values can't be accessed from outside of the running coroutine. -@class function -@name threadlocal -@return Table value representing the corresponding thread local store -]] - ----[[ -Write given object to stderr. - -@class function -@name perror -@param obj Value to write to stderr -@return Boolean indicating whether the write operation was successful -]] - ----[[ -Recursively dumps a table to stdout, useful for testing and debugging. - -@class function -@name dumptable -@param t Table value to dump -@param maxdepth Maximum depth -@return Always nil -]] - ----[[ -Create valid XML PCDATA from given string. - -@class function -@name pcdata -@param value String value containing the data to escape -@return String value containing the escaped data -]] - ----[[ -Strip HTML tags from given string. - -@class function -@name striptags -@param value String containing the HTML text -@return String with HTML tags stripped of -]] - ----[[ -Splits given string on a defined separator sequence and return a table - -containing the resulting substrings. The optional max parameter specifies -the number of bytes to process, regardless of the actual length of the given -string. The optional last parameter, regex, specifies whether the separator -sequence is interpreted as regular expression. -@class function -@name split -@param str String value containing the data to split up -@param pat String with separator pattern (optional, defaults to "\n") -@param max Maximum times to split (optional) -@param regex Boolean indicating whether to interpret the separator --- pattern as regular expression (optional, default is false) -@return Table containing the resulting substrings -]] - ----[[ -Remove leading and trailing whitespace from given string value. - -@class function -@name trim -@param str String value containing whitespace padded data -@return String value with leading and trailing space removed -]] - ----[[ -Count the occurences of given substring in given string. - -@class function -@name cmatch -@param str String to search in -@param pattern String containing pattern to find -@return Number of found occurences -]] - ----[[ -Return a matching iterator for the given value. The iterator will return - -one token per invocation, the tokens are separated by whitespace. If the -input value is a table, it is transformed into a string first. A nil value -will result in a valid interator which aborts with the first invocation. -@class function -@name imatch -@param val The value to scan (table, string or nil) -@return Iterator which returns one token per call -]] - ----[[ -Parse certain units from the given string and return the canonical integer - -value or 0 if the unit is unknown. Upper- or lower case is irrelevant. -Recognized units are: --- o "y" - one year (60*60*24*366) - o "m" - one month (60*60*24*31) - o "w" - one week (60*60*24*7) - o "d" - one day (60*60*24) - o "h" - one hour (60*60) - o "min" - one minute (60) - o "kb" - one kilobyte (1024) - o "mb" - one megabyte (1024*1024) - o "gb" - one gigabyte (1024*1024*1024) - o "kib" - one si kilobyte (1000) - o "mib" - one si megabyte (1000*1000) - o "gib" - one si gigabyte (1000*1000*1000) -@class function -@name parse_units -@param ustr String containing a numerical value with trailing unit -@return Number containing the canonical value -]] - ----[[ -Appends numerically indexed tables or single objects to a given table. - -@class function -@name append -@param src Target table -@param ... Objects to insert -@return Target table -]] - ----[[ -Combines two or more numerically indexed tables and single objects into one table. - -@class function -@name combine -@param tbl1 Table value to combine -@param tbl2 Table value to combine -@param ... More tables to combine -@return Table value containing all values of given tables -]] - ----[[ -Checks whether the given table contains the given value. - -@class function -@name contains -@param table Table value -@param value Value to search within the given table -@return number indicating the first index at which the given value occurs --- within table or false. -]] - ----[[ -Update values in given table with the values from the second given table. - -Both table are - in fact - merged together. -@class function -@name update -@param t Table which should be updated -@param updates Table containing the values to update -@return Always nil -]] - ----[[ -Retrieve all keys of given associative table. - -@class function -@name keys -@param t Table to extract keys from -@return Sorted table containing the keys -]] - ----[[ -Clones the given object and return it's copy. - -@class function -@name clone -@param object Table value to clone -@param deep Boolean indicating whether to do recursive cloning -@return Cloned table value -]] - ----[[ -Create a dynamic table which automatically creates subtables. - -@class function -@name dtable -@return Dynamic Table -]] - ----[[ -Recursively serialize given data to lua code, suitable for restoring - -with loadstring(). -@class function -@name serialize_data -@param val Value containing the data to serialize -@return String value containing the serialized code -@see restore_data -@see get_bytecode -]] - ----[[ -Restore data previously serialized with serialize_data(). - -@class function -@name restore_data -@param str String containing the data to restore -@return Value containing the restored data structure -@see serialize_data -@see get_bytecode -]] - ----[[ -Return the current runtime bytecode of the given data. The byte code - -will be stripped before it is returned. -@class function -@name get_bytecode -@param val Value to return as bytecode -@return String value containing the bytecode of the given data -]] - ----[[ -Strips unnescessary lua bytecode from given string. Information like line - -numbers and debugging numbers will be discarded. Original version by -Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html) -@class function -@name strip_bytecode -@param code String value containing the original lua byte code -@return String value containing the stripped lua byte code -]] - ----[[ -Return a key, value iterator which returns the values sorted according to - -the provided callback function. -@class function -@name spairs -@param t The table to iterate -@param f A callback function to decide the order of elements -@return Function value containing the corresponding iterator -]] - ----[[ -Return a key, value iterator for the given table. - -The table pairs are sorted by key. -@class function -@name kspairs -@param t The table to iterate -@return Function value containing the corresponding iterator -]] - ----[[ -Return a key, value iterator for the given table. - -The table pairs are sorted by value. -@class function -@name vspairs -@param t The table to iterate -@return Function value containing the corresponding iterator -]] - ----[[ -Test whether the current system is operating in big endian mode. - -@class function -@name bigendian -@return Boolean value indicating whether system is big endian -]] - ----[[ -Execute given commandline and gather stdout. - -@class function -@name exec -@param command String containing command to execute -@return String containing the command's stdout -]] - ----[[ -Return a line-buffered iterator over the output of given command. - -@class function -@name execi -@param command String containing the command to execute -@return Iterator -]] - ----[[ -Issue an ubus call. - -@class function -@name ubus -@param object String containing the ubus object to call -@param method String containing the ubus method to call -@param values Table containing the values to pass -@return Table containin the ubus result -]] - ----[[ -Convert data structure to JSON - -@class function -@name serialize_json -@param data The data to serialize -@param writer A function to write a chunk of JSON data (optional) -@return String containing the JSON if called without write callback -]] - ----[[ -Returns the absolute path to LuCI base directory. - -@class function -@name libpath -@return String containing the directory path -]] - ----[[ -This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function - -@class function -@name coxpcall -@param f Lua function to be called protected -@param err Custom error handler -@param ... Parameters passed to the function -@return A boolean whether the function call succeeded and the return --- values of either the function or the error handler -]] - ----[[ -This is a coroutine-safe drop-in replacement for Lua's "pcall"-function - -@class function -@name copcall -@param f Lua function to be called protected -@param ... Parameters passed to the function -@return A boolean whether the function call succeeded and the returns --- values of the function or the error object -]] - diff --git a/package/luci/modules/luci-base/luasrc/version.lua b/package/luci/modules/luci-base/luasrc/version.lua deleted file mode 100644 index 8af2e80619..0000000000 --- a/package/luci/modules/luci-base/luasrc/version.lua +++ /dev/null @@ -1,9 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module "luci.version" - -distname = "Host System" -distversion = "SDK" - -luciname = "LuCI" -luciversion = "SVN" diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/apply_xhr.htm b/package/luci/modules/luci-base/luasrc/view/cbi/apply_xhr.htm deleted file mode 100644 index daa57c1db7..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/apply_xhr.htm +++ /dev/null @@ -1,43 +0,0 @@ -<% export("cbi_apply_xhr", function(id, configs, redirect) -%> -
    - <%:Applying changes%> - - - <%:Loading%> - <%:Waiting for changes to be applied...%> -
    -<%- end) %> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/browser.htm b/package/luci/modules/luci-base/luasrc/view/cbi/browser.htm deleted file mode 100644 index a18120141d..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/browser.htm +++ /dev/null @@ -1,7 +0,0 @@ -<% local v = self:cfgvalue(section) -%> -<%+cbi/valueheader%> - /> - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/button.htm b/package/luci/modules/luci-base/luasrc/view/cbi/button.htm deleted file mode 100644 index 30f8ddfda5..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/button.htm +++ /dev/null @@ -1,7 +0,0 @@ -<%+cbi/valueheader%> - <% if self:cfgvalue(section) ~= false then %> - " type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> /> - <% else %> - - - <% end %> -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm b/package/luci/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm deleted file mode 100644 index 786ee43d10..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/cell_valuefooter.htm +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm b/package/luci/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm deleted file mode 100644 index 9c9c21814b..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/cell_valueheader.htm +++ /dev/null @@ -1,2 +0,0 @@ - -
    " data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/compound.htm b/package/luci/modules/luci-base/luasrc/view/cbi/compound.htm deleted file mode 100644 index 12d02bb1d8..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/compound.htm +++ /dev/null @@ -1 +0,0 @@ -<%- self:render_children() %> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/delegator.htm b/package/luci/modules/luci-base/luasrc/view/cbi/delegator.htm deleted file mode 100644 index 4fd19265d8..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/delegator.htm +++ /dev/null @@ -1,24 +0,0 @@ -<%- self.active:render() %> -
    - -<% for _, x in ipairs(self.chain) do %> - -<% end %> -<% if not self.disallow_pageactions then %> -<% if self.allow_finish and not self:get_next(self.current) then %> - -<% elseif self:get_next(self.current) then %> - -<% end %> -<% if self.allow_cancel then %> - -<% end %> -<% if self.allow_reset then %> - -<% end %> -<% if self.allow_back and self:get_prev(self.current) then %> - -<% end %> -<% end %> - -
    diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/dvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/dvalue.htm deleted file mode 100644 index 78e6f323d7..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/dvalue.htm +++ /dev/null @@ -1,13 +0,0 @@ -<%+cbi/valueheader%> -<% if self.href then %><% end -%> - <% - local val = self:cfgvalue(section) or self.default or "" - if not self.rawhtml then - write(pcdata(val)) - else - write(val) - end - %> -<%- if self.href then %><%end%> -" /> -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/dynlist.htm b/package/luci/modules/luci-base/luasrc/view/cbi/dynlist.htm deleted file mode 100644 index 4d0b50942b..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/dynlist.htm +++ /dev/null @@ -1,27 +0,0 @@ -<%+cbi/valueheader%> -> -<% - local vals = self:cfgvalue(section) or {} - for i=1, #vals + 1 do - local val = vals[i] - if (val and #val > 0) or (i == 1) then -%> - />
    -<% end end %> -
    -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/error.htm b/package/luci/modules/luci-base/luasrc/view/cbi/error.htm deleted file mode 100644 index 75ec1082aa..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/error.htm +++ /dev/null @@ -1,19 +0,0 @@ -
    - <% if self.title and #self.title > 0 then %>

    <%=self.title%>

    <% end %> - <% if self.description and #self.description > 0 then %>
    <%=self.description%>
    <% end %> - -

    - <%: The configuration file could not be loaded due to the following error: %>
    - <%=pcdata(self.error)%> -

    - - - -

    - <%: Edit the raw configuration data above to fix any error and hit "Save" to reload the page. %> -

    - -
    - -
    -
    diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/filebrowser.htm b/package/luci/modules/luci-base/luasrc/view/cbi/filebrowser.htm deleted file mode 100644 index a79beebba7..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/filebrowser.htm +++ /dev/null @@ -1,108 +0,0 @@ - - - - - Filebrowser - LuCI - - - - - - <% - require("nixio.fs") - require("nixio.util") - require("luci.http") - require("luci.dispatcher") - - local field = luci.http.formvalue('field') - local request = luci.dispatcher.context.args - local path = { '' } - - for i = 1, #request do - if request[i] ~= '..' and #request[i] > 0 then - path[#path+1] = request[i] - end - end - - local filepath = table.concat( path, '/' ) - local filestat = nixio.fs.stat( filepath ) - local baseurl = luci.dispatcher.build_url('admin', 'filebrowser') - - if filestat and filestat.type == "reg" then - table.remove( path, #path ) - filepath = table.concat( path, '/' ) .. '/' - elseif not ( filestat and filestat.type == "dir" ) then - path = { '' } - filepath = '/' - else - filepath = filepath .. '/' - end - - local entries = nixio.util.consume((nixio.fs.dir(filepath))) - -%> -
    - Location: - <% for i, dir in ipairs(path) do %> - <% if i == 1 then %> - (root) - <% elseif next(path, i) then %> - <% baseurl = baseurl .. '/' .. dir %> - / <%=dir%> - <% else %> - <% baseurl = baseurl .. '/' .. dir %> - / <%=dir%> - <% end %> - <% end %> -
    - -
    - -
    -
      - <% for _, e in luci.util.vspairs(entries) do - local stat = nixio.fs.stat(filepath..e) - if stat and stat.type == 'dir' then - -%> -
    • - <%:Directory%> - <%=e%>/ -
    • - <% end end -%> - - <% for _, e in luci.util.vspairs(entries) do - local stat = nixio.fs.stat(filepath..e) - if stat and stat.type ~= 'dir' then - -%> -
    • - <%:File%> - <%=e%> -
    • - <% end end -%> -
    -
    - - diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm b/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm deleted file mode 100644 index 546fd8e85a..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm +++ /dev/null @@ -1,60 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local utl = require "luci.util" - local fwm = require "luci.model.firewall".init() - local nwm = require "luci.model.network".init() - - local zone, fwd, fz - local value = self:formvalue(section) - if not value or value == "-" then - value = self:cfgvalue(section) or self.default - end - - local def = fwm:get_defaults() - local zone = fwm:get_zone(value) - local empty = true --%> - -<% if zone then %> -
    - -  ⇒  - <% for _, fwd in ipairs(zone:get_forwardings_by("src")) do - fz = fwd:dest_zone() - if fz then - empty = false %> -   - <% end end %> - <% if empty then %> - - <% end %> -
    -<% end %> - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm b/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm deleted file mode 100644 index 5cb31511f6..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm +++ /dev/null @@ -1,93 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local utl = require "luci.util" - local fwm = require "luci.model.firewall".init() - local nwm = require "luci.model.network".init() - - local zone, net, iface - local zones = fwm:get_zones() - local value = self:formvalue(section) - if not value or value == "-" then - value = self:cfgvalue(section) or self.default - end - - local selected = false - local checked = { } - - for value in utl.imatch(value) do - checked[value] = true - end - - if not next(checked) then - checked[""] = true - end --%> - -
      - <% if self.allowlocal then %> -
    • - />   - > - style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge"> - <%:Device%> - <% if self.allowany and self.allowlocal then %>(<%:input%>)<% end %> - -
    • - <% end %> - <% if self.allowany then %> -
    • - />   - > - style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge"> - <%:Any zone%> - <% if self.allowany and self.allowlocal then %>(<%:forward%>)<% end %> - -
    • - <% end %> - <% - for _, zone in utl.spairs(zones, function(a,b) return (zones[a]:name() < zones[b]:name()) end) do - if zone:name() ~= self.exclude then - selected = selected or (value == zone:name()) - %> -
    • - />   - > - style="background-color:<%=zone:get_color()%>" class="zonebadge"> - <%=zone:name()%>: - <% - local zempty = true - for _, net in ipairs(zone:get_networks()) do - net = nwm:get_network(net) - if net then - zempty = false - %> - <%=net:name()%>: - <% - local nempty = true - for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do - nempty = false - %> - style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> - <% end %> - <% if nempty then %><%:(empty)%><% end %> - - <% end end %> - <% if zempty then %><%:(empty)%><% end %> - -
    • - <% end end %> - - <% if self.widget ~= "checkbox" and not self.nocreate then %> -
    • - />   - > -
      - <%:unspecified -or- create:%>  - onfocus="document.getElementById('<%=cbid%>_new').checked=true" /> -
      -
    • - <% end %> -
    - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/footer.htm b/package/luci/modules/luci-base/luasrc/view/cbi/footer.htm deleted file mode 100644 index 4d332fd07a..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/footer.htm +++ /dev/null @@ -1,27 +0,0 @@ - <%- if pageaction then -%> -
    - <% if redirect then %> -
    - -
    - <% end %> - - <% if flow.skip then %> - - <% end %> - <% if not autoapply and not flow.hideapplybtn then %> - - <% end %> - <% if not flow.hidesavebtn then %> - - <% end %> - <% if not flow.hideresetbtn then %> - - <% end %> -
    - <%- end -%> - - - - -<%+footer%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm b/package/luci/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm deleted file mode 100644 index f780936766..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/full_valuefooter.htm +++ /dev/null @@ -1,13 +0,0 @@ - <% if self.description and #self.description > 0 then -%> - <% if not luci.util.instanceof(self, luci.cbi.DynamicList) and (not luci.util.instanceof(self, luci.cbi.Flag) or self.orientation == "horizontal") then -%> -
    - <%- end %> -
    - <%:help%> - <%=self.description%> -
    - <%- end %> - <%- if self.title and #self.title > 0 then -%> - - <%- end -%> - diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/full_valueheader.htm b/package/luci/modules/luci-base/luasrc/view/cbi/full_valueheader.htm deleted file mode 100644 index 10a554329f..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/full_valueheader.htm +++ /dev/null @@ -1,9 +0,0 @@ -
    " data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> - <%- if self.title and #self.title > 0 then -%> - -
    - <%- end -%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/fvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/fvalue.htm deleted file mode 100644 index 197d03cf31..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/fvalue.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%+cbi/valueheader%> - /> - /> - > -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/header.htm b/package/luci/modules/luci-base/luasrc/view/cbi/header.htm deleted file mode 100644 index 9710bae8f4..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/header.htm +++ /dev/null @@ -1,19 +0,0 @@ -<%+header%> -
    -
    - - - - -
    diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/lvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/lvalue.htm deleted file mode 100644 index 34d02eeca0..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/lvalue.htm +++ /dev/null @@ -1,43 +0,0 @@ -<% - local i, key - local br = self.orientation == "horizontal" and ' ' or '
    ' -%> - -<%+cbi/valueheader%> -<% if self.widget == "select" then %> - -<% elseif self.widget == "radio" then %> -
    - <% for i, key in pairs(self.keylist) do %> - > - /> - > - <%=pcdata(self.vallist[i])%> - - <% if i == self.size then write(br) end %> - <% end %> -
    -<% end %> -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/map.htm b/package/luci/modules/luci-base/luasrc/view/cbi/map.htm deleted file mode 100644 index e3210add63..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/map.htm +++ /dev/null @@ -1,47 +0,0 @@ -<%- if firstmap and messages then local msg; for _, msg in ipairs(messages) do -%> -
    <%=pcdata(msg)%>
    -<%- end end -%> - -<%-+cbi/apply_xhr-%> - -
    - <% if self.title and #self.title > 0 then %>

    <%=self.title%>

    <% end %> - <% if self.description and #self.description > 0 then %>
    <%=self.description%>
    <% end %> - <%- if firstmap and applymap then cbi_apply_xhr(self.config, parsechain, redirect) end -%> - - <% if self.tabbed then %> -
      - <%- self.selected_tab = luci.http.formvalue("tab.m-" .. self.config) %> - <% for i, section in ipairs(self.children) do %> - <%- if not self.selected_tab then self.selected_tab = section.sectiontype end %> -
    • - <%=section.title or section.section or section.sectiontype %> - <% if section.sectiontype == self.selected_tab then %><% end %> -
    • - <% end %> -
    -
    - <% for i, section in ipairs(self.children) do %> -
    style="display:none"<% end %>> - <% section:render() %> -
    - - <% end %> - - <% if not self.save then -%> -
    - <% for _, section in ipairs(self.children) do %> - <% if section.error and section.error[section.section] then -%> -
    • - <%:One or more invalid/required values on tab%>: <%=section.title or section.section or section.sectiontype%> -
    - <%- end %> - <% end %> -
    - <%- end %> - <% else %> - <%- self:render_children() %> - <% end %> - -
    -
    diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/mvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/mvalue.htm deleted file mode 100644 index db17450d27..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/mvalue.htm +++ /dev/null @@ -1,43 +0,0 @@ -<% - local i, key - local v = self:valuelist(section) or {} --%> - -<%+cbi/valueheader%> -<% if self.widget == "select" then %> - -<% elseif self.widget == "checkbox" then %> -
    - <% for i, key in pairs(self.keylist) do %> - > - /> - > - <%=pcdata(self.vallist[i])%> - - <% if self.size and (i % self.size) == 0 then write('
    ') end %> - <% end %> -
    -<% end %> -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/network_ifacelist.htm b/package/luci/modules/luci-base/luasrc/view/cbi/network_ifacelist.htm deleted file mode 100644 index 62dbde7dd4..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/network_ifacelist.htm +++ /dev/null @@ -1,89 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local utl = require "luci.util" - local net = require "luci.model.network".init() - local cbeid = luci.cbi.FEXIST_PREFIX .. self.config .. "." .. section .. "." .. self.option - - local iface - local ifaces = net:get_interfaces() - local value - - if self.map:formvalue(cbeid) == "1" then - value = self:formvalue(section) or self.default or "" - else - value = self:cfgvalue(section) or self.default - end - - local checked = { } - - if value then - for value in utl.imatch(value) do - checked[value] = true - end - else - local n = self.network and net:get_network(self.network) - if n then - local i - for _, i in ipairs(n:get_interfaces() or { n:get_interface() }) do - checked[i:name()] = true - end - end - end --%> - - -
      - <% for _, iface in ipairs(ifaces) do - local link = iface:adminlink() - if (not self.nobridges or not iface:is_bridge()) and - (not self.noinactive or iface:is_up()) and - iface:name() ~= self.exclude - then %> -
    • - " data-update="click change"<%= - attr("type", self.widget or "radio") .. - attr("id", cbid .. "." .. iface:name()) .. - attr("name", cbid) .. attr("value", iface:name()) .. - ifattr(checked[iface:name()], "checked", "checked") - %> /> - <%- if not self.widget or self.widget == "checkbox" or self.widget == "radio" then -%> - > - <%- end -%> -   - > - <% if link then -%><% end -%> - style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> - <% if link then -%><% end -%> - <%=pcdata(iface:get_i18n())%> - <% local ns = iface:get_networks(); if #ns > 0 then %>( - <%- local i, n; for i, n in ipairs(ns) do -%> - <%-= (i>1) and ', ' -%> - <%=n:name()%> - <%- end -%> - )<% end %> - -
    • - <% end end %> - <% if not self.nocreate then %> -
    • - " data-update="click change"<%= - attr("type", self.widget or "radio") .. - attr("id", cbid .. "_custom") .. - attr("name", cbid) .. - attr("value", " ") - %> /> - <%- if not self.widget or self.widget == "checkbox" or self.widget == "radio" then -%> - > - <%- end -%> -   - > - - <%:Custom Interface%>: - - -
    • - <% end %> -
    - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/network_netinfo.htm b/package/luci/modules/luci-base/luasrc/view/cbi/network_netinfo.htm deleted file mode 100644 index 4fd84112a4..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/network_netinfo.htm +++ /dev/null @@ -1,27 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local value = self:formvalue(section) - if not value or value == "-" then - value = self:cfgvalue(section) or self.default - end - - local nwm = require "luci.model.network".init() - local net = nwm:get_network(value) --%> - -<% if net then %> -<%=net:name()%>: - <% - local empty = true - for _, iface in ipairs(net:get_interfaces() or { net:get_interface() }) do - if not iface:is_bridge() then - empty = false - %> - style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> - <% end end %> - <% if empty then %><%:(no interfaces attached)%><% end %> - -<% end %> - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/network_netlist.htm b/package/luci/modules/luci-base/luasrc/view/cbi/network_netlist.htm deleted file mode 100644 index 8bf1a70a20..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/network_netlist.htm +++ /dev/null @@ -1,85 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local utl = require "luci.util" - local nwm = require "luci.model.network".init() - - local net, iface - local networks = nwm:get_networks() - local value = self:formvalue(section) - - self.cast = nil - - if not value or value == "-" then - value = self:cfgvalue(section) or self.default - end - - local checked = { } - for value in utl.imatch(value) do - checked[value] = true - end --%> - -
      - <% for _, net in ipairs(networks) do - if (net:name() ~= "loopback") and - (net:name() ~= self.exclude) and - (not self.novirtual or not net:is_virtual()) - then %> -
    • - " data-update="click change"<%= - attr("type", self.widget or "radio") .. - attr("id", cbid .. "." .. net:name()) .. - attr("name", cbid) .. attr("value", net:name()) .. - ifattr(checked[net:name()], "checked", "checked") - %> />   - > - <%=net:name()%>: - <% - local empty = true - for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do - if not iface:is_bridge() then - empty = false - %> - style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> - <% end end %> - <% if empty then %><%:(no interfaces attached)%><% end %> - - -
    • - <% end end %> - - <% if not self.nocreate then %> -
    • - " data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "_new") .. attr("name", cbid) .. attr("value", "-") .. ifattr(not value and self.widget ~= "checkbox", "checked", "checked")%> />   - <%- if not self.widget or self.widget == "checkbox" or self.widget == "radio" then -%> - > - <%- end -%> -
      - > - <%- if self.widget == "checkbox" then -%> - <%:create:%> - <%- else -%> - <%:unspecified -or- create:%> - <%- end -%>  - - onfocus="document.getElementById('<%=cbid%>_new').checked=true" /> -
      -
    • - <% elseif self.widget ~= "checkbox" and self.unspecified then %> -
    • - " data-update="click change"<%= - attr("type", self.widget or "radio") .. - attr("id", cbid .. "_uns") .. - attr("name", cbid) .. - attr("value", "") .. - ifattr(not value or #value == 0, "checked", "checked") - %> />   -
      - ><%:unspecified%> -
      -
    • - <% end %> -
    - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/nsection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/nsection.htm deleted file mode 100644 index abf67596f0..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/nsection.htm +++ /dev/null @@ -1,31 +0,0 @@ -<% if self:cfgvalue(self.section) then section = self.section %> -
    - <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> - <% if self.description and #self.description > 0 then -%> -
    <%=self.description%>
    - <%- end %> - <% if self.addremove then -%> -
    - -
    - <%- end %> - <%+cbi/tabmenu%> -
    - <%+cbi/ucisection%> -
    -
    -
    -<% elseif self.addremove then %> - <% if self.template_addremove then include(self.template_addremove) else -%> -
    - <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> -
    <%=self.description%>
    - -
    - <%- end %> -<% end %> - diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/nullsection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/nullsection.htm deleted file mode 100644 index ef169593af..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/nullsection.htm +++ /dev/null @@ -1,38 +0,0 @@ -
    - <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> - <% if self.description and #self.description > 0 then -%> -
    <%=self.description%>
    - <%- end %> -
    -
    - <% self:render_children(1, scope or {}) %> -
    - <% if self.error and self.error[1] then -%> -
    -
      <% for _, e in ipairs(self.error[1]) do -%> -
    • - <%- if e == "invalid" then -%> - <%:One or more fields contain invalid values!%> - <%- elseif e == "missing" then -%> - <%:One or more required fields have no value!%> - <%- else -%> - <%=pcdata(e)%> - <%- end -%> -
    • - <%- end %>
    -
    - <%- end %> -
    -
    -
    -<%- - if type(self.hidden) == "table" then - for k, v in pairs(self.hidden) do --%> - -<%- - end - end -%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/simpleform.htm b/package/luci/modules/luci-base/luasrc/view/cbi/simpleform.htm deleted file mode 100644 index 78f5c5a544..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/simpleform.htm +++ /dev/null @@ -1,58 +0,0 @@ -<% if not self.embedded then %> - -
    - - - -
    -<% end %> -
    - <% if self.title and #self.title > 0 then %>

    <%=self.title%>

    <% end %> - <% if self.description and #self.description > 0 then %>
    <%=self.description%>
    <% end %> - <% self:render_children() %> -
    -
    -<%- if self.message then %> -
    <%=self.message%>
    -<%- end %> -<%- if self.errmessage then %> -
    <%=self.errmessage%>
    -<%- end %> -<% if not self.embedded then %> -
    -<%- - if type(self.hidden) == "table" then - for k, v in pairs(self.hidden) do --%> - -<%- - end - end -%> -<% if redirect then %> -
    - -
    -<% end %> -<%- if self.flow and self.flow.skip then %> - -<% end %> -<%- if self.submit ~= false then %> - -<% end %> -<%- if self.reset ~= false then %> - -<% end %> -<%- if self.cancel ~= false and self.on_cancel then %> - -<% end %> - -
    -
    -<% end %> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/tabcontainer.htm b/package/luci/modules/luci-base/luasrc/view/cbi/tabcontainer.htm deleted file mode 100644 index 38c435d6a1..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/tabcontainer.htm +++ /dev/null @@ -1,7 +0,0 @@ -<% for tab, data in pairs(self.tabs) do %> -
    style="display:none"<% end %>> - <% if data.description then %>
    <%=data.description%>
    <% end %> - <% self:render_tab(tab, section, scope or {}) %> -
    - -<% end %> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/tabmenu.htm b/package/luci/modules/luci-base/luasrc/view/cbi/tabmenu.htm deleted file mode 100644 index 06c1414bf3..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/tabmenu.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%- if self.tabs then %> -
      - <%- self.selected_tab = luci.http.formvalue("tab." .. self.config .. "." .. section) %> - <%- for _, tab in ipairs(self.tab_names) do if #self.tabs[tab].childs > 0 then %> - <%- if not self.selected_tab then self.selected_tab = tab end %> -
    • - <%=self.tabs[tab].title%> - <% if tab == self.selected_tab then %><% end %> -
    • - <% end end -%> -
    -<% end -%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/tblsection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/tblsection.htm deleted file mode 100644 index 26d13f9372..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/tblsection.htm +++ /dev/null @@ -1,145 +0,0 @@ -<%- -local rowcnt = 1 -function rowstyle() - rowcnt = rowcnt + 1 - return (rowcnt % 2) + 1 -end - -function width(o) - if o.width then - if type(o.width) == 'number' then - return ' style="width:%dpx"' % o.width - end - return ' style="width:%s"' % o.width - end - return '' -end --%> - - -
    - <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> - <%- if self.sortable then -%> - - <%- end -%> -
    <%=self.description%>
    -
    - <%- local count = 0 -%> - - - <%- if not self.anonymous then -%> - <%- if self.sectionhead then -%> - - <%- else -%> - - <%- end -%> - <%- end -%> - <%- for i, k in pairs(self.children) do if not k.optional then -%> - - <%- count = count + 1; end; end; if self.sortable then -%> - - <%- end; if self.extedit or self.addremove then -%> - - <%- count = count + 1; end -%> - - - <%- if not self.anonymous then -%> - <%- if self.sectiondesc then -%> - - <%- else -%> - - <%- end -%> - <%- end -%> - <%- for i, k in pairs(self.children) do if not k.optional then -%> - - <%- end; end; if self.sortable then -%> - - <%- end; if self.extedit or self.addremove then -%> - - <%- end -%> - - <%- local isempty = true - for i, k in ipairs(self:cfgsections()) do - section = k - isempty = false - scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" } - -%> - - <% if not self.anonymous then -%> - - <%- end %> - - - <%- - for k, node in ipairs(self.children) do - if not node.optional then - node:render(section, scope or {}) - end - end - -%> - - <%- if self.sortable then -%> - - <%- end -%> - - <%- if self.extedit or self.addremove then -%> - - <%- end -%> - - <%- end -%> - - <%- if isempty then -%> - - - - <%- end -%> -
    <%=self.sectionhead%> > - <%- if k.titleref then -%><%- end -%> - <%-=k.title-%> - <%- if k.titleref then -%><%- end -%> - <%:Sort%> 
    <%=self.sectiondesc%>><%=k.description%>

    <%=(type(self.sectiontitle) == "function") and self:sectiontitle(section) or k%>

    - - - - <%- if self.extedit then -%> - onclick="location.href='<%=self.extedit:format(section)%>'" - <%- elseif type(self.extedit) == "function" then - %> onclick="location.href='<%=self:extedit(section)%>'" - <%- end - %> alt="<%:Edit%>" title="<%:Edit%>" /> - <%- end; if self.addremove then %> - - <%- end -%> -

    <%:This section contains no values yet%>
    - - <% if self.error then %> -
    -
      <% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%> -
    • <%=pcdata(e):gsub("\n","
      ")%>
    • - <%- end end %>
    -
    - <% end %> - - <%- if self.addremove then -%> - <% if self.template_addremove then include(self.template_addremove) else -%> -
    - <% if self.anonymous then %> - - <% else %> - <% if self.invalid_cts then -%>
    <% end %> - - - <% if self.invalid_cts then -%> -
    <%:Invalid%>
    - <%- end %> - <% end %> -
    - <%- end %> - <%- end -%> -
    -
    - diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/tsection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/tsection.htm deleted file mode 100644 index 726521ae3f..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/tsection.htm +++ /dev/null @@ -1,49 +0,0 @@ -
    - <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> - <% if self.description and #self.description > 0 then -%> -
    <%=self.description%>
    - <%- end %> - <% local isempty = true for i, k in ipairs(self:cfgsections()) do -%> - <% if self.addremove then -%> -
    - -
    - <%- end %> - - <%- section = k; isempty = false -%> - - <% if not self.anonymous then -%> -

    <%=section:upper()%>

    - <%- end %> - - <%+cbi/tabmenu%> - -
    - <%+cbi/ucisection%> -
    -
    - <%- end %> - - <% if isempty then -%> - <%:This section contains no values yet%>

    - <%- end %> - - <% if self.addremove then -%> - <% if self.template_addremove then include(self.template_addremove) else -%> -
    - <% if self.anonymous then -%> - - <%- else -%> - <% if self.invalid_cts then -%>
    <% end %> - - - <% if self.invalid_cts then -%> -
    <%:Invalid%>
    - <%- end %> - <%- end %> -
    - <%- end %> - <%- end %> -
    diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/tvalue.htm b/package/luci/modules/luci-base/luasrc/view/cbi/tvalue.htm deleted file mode 100644 index d1e9e66728..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/tvalue.htm +++ /dev/null @@ -1,5 +0,0 @@ -<%+cbi/valueheader%> - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/ucisection.htm b/package/luci/modules/luci-base/luasrc/view/cbi/ucisection.htm deleted file mode 100644 index 2cb1e75d0e..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/ucisection.htm +++ /dev/null @@ -1,56 +0,0 @@ -<%- - if type(self.hidden) == "table" then - for k, v in pairs(self.hidden) do --%> - -<%- - end - end -%> - -<% if self.tabs then %> - <%+cbi/tabcontainer%> -<% else %> - <% self:render_children(section, scope or {}) %> -<% end %> - -<% if self.error and self.error[section] then -%> -
    -
      <% for _, e in ipairs(self.error[section]) do -%> -
    • - <%- if e == "invalid" then -%> - <%:One or more fields contain invalid values!%> - <%- elseif e == "missing" then -%> - <%:One or more required fields have no value!%> - <%- else -%> - <%=pcdata(e)%> - <%- end -%> -
    • - <%- end %>
    -
    -<%- end %> - -<% if self.optionals[section] and #self.optionals[section] > 0 or self.dynamic then %> -
    - <% - if self.dynamic then - local keys, vals, name, opt = { }, { } - for name, opt in pairs(self.optionals[section]) do - keys[#keys+1] = name - vals[#vals+1] = opt.title - end - %> - 0, "data-choices", luci.util.json_encode({keys, vals})) - %> /> - <% else %> - - <% end %> - -
    -<% end %> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/upload.htm b/package/luci/modules/luci-base/luasrc/view/cbi/upload.htm deleted file mode 100644 index 4fb5201aac..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/upload.htm +++ /dev/null @@ -1,24 +0,0 @@ -<% - local t = require("luci.tools.webadmin") - local v = self:cfgvalue(section) - local s = v and nixio.fs.stat(v) --%> -<%+cbi/valueheader%> - <% if s then %> - <%:Uploaded File%> (<%=t.byte_format(s.size)%>) - <% if self.unsafeupload then %> - /> - " alt="<%:Replace entry%>" title="<%:Replace entry%>" src="<%=resource%>/cbi/reload.gif" /> - <% end %> - <% end %> - - <% if not self.unsafeupload then %> - /> - <% end %> - - <% if (not s) or (s and not self.unsafeupload) then %> - /> - <% end %> - /> -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/value.htm b/package/luci/modules/luci-base/luasrc/view/cbi/value.htm deleted file mode 100644 index c8c905eb11..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/value.htm +++ /dev/null @@ -1,18 +0,0 @@ -<%+cbi/valueheader%> - 0, "data-choices", { self.keylist, self.vallist }) - %> /> - <% if self.password then %><% end %> -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/valuefooter.htm b/package/luci/modules/luci-base/luasrc/view/cbi/valuefooter.htm deleted file mode 100644 index 805312e451..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/valuefooter.htm +++ /dev/null @@ -1 +0,0 @@ -<% include( valuefooter or "cbi/full_valuefooter" ) %> diff --git a/package/luci/modules/luci-base/luasrc/view/cbi/valueheader.htm b/package/luci/modules/luci-base/luasrc/view/cbi/valueheader.htm deleted file mode 100644 index 761a54aed0..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/cbi/valueheader.htm +++ /dev/null @@ -1 +0,0 @@ -<% include( valueheader or "cbi/full_valueheader" ) %> diff --git a/package/luci/modules/luci-base/luasrc/view/csrftoken.htm b/package/luci/modules/luci-base/luasrc/view/csrftoken.htm deleted file mode 100644 index 57ac03f3bf..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/csrftoken.htm +++ /dev/null @@ -1,24 +0,0 @@ -<%# - Copyright 2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Form token mismatch%>

    -
    - -

    <%:The submitted security token is invalid or already expired!%>

    - -

    <%: - In order to prevent unauthorized access to the system, your request has - been blocked. Click "Continue »" below to return to the previous page. -%>

    - -
    - -

    - Continue » -

    - -<%+footer%> diff --git a/package/luci/modules/luci-base/luasrc/view/error404.htm b/package/luci/modules/luci-base/luasrc/view/error404.htm deleted file mode 100644 index bc74226830..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/error404.htm +++ /dev/null @@ -1,11 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    404 <%:Not Found%>

    -

    <%:Sorry, the object you requested was not found.%>

    -<%:Unable to dispatch%>: <%=luci.http.request.env.PATH_INFO%> -<%+footer%> diff --git a/package/luci/modules/luci-base/luasrc/view/error500.htm b/package/luci/modules/luci-base/luasrc/view/error500.htm deleted file mode 100644 index 34a52cda84..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/error500.htm +++ /dev/null @@ -1,11 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    500 <%:Internal Server Error%>

    -

    <%:Sorry, the server encountered an unexpected error.%>

    -
    <%=message%>
    -<%+footer%> diff --git a/package/luci/modules/luci-base/luasrc/view/footer.htm b/package/luci/modules/luci-base/luasrc/view/footer.htm deleted file mode 100644 index f3574b6b10..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/footer.htm +++ /dev/null @@ -1,7 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% include("themes/" .. theme .. "/footer") %> \ No newline at end of file diff --git a/package/luci/modules/luci-base/luasrc/view/header.htm b/package/luci/modules/luci-base/luasrc/view/header.htm deleted file mode 100644 index f6e20c9a40..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/header.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% - if not luci.dispatcher.context.template_header_sent then - include("themes/" .. theme .. "/header") - luci.dispatcher.context.template_header_sent = true - end -%> diff --git a/package/luci/modules/luci-base/luasrc/view/indexer.htm b/package/luci/modules/luci-base/luasrc/view/indexer.htm deleted file mode 100644 index 28fc3debc3..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/indexer.htm +++ /dev/null @@ -1,7 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% include("themes/" .. theme .. "/indexer") %> \ No newline at end of file diff --git a/package/luci/modules/luci-base/luasrc/view/sysauth.htm b/package/luci/modules/luci-base/luasrc/view/sysauth.htm deleted file mode 100644 index f6b0f5706a..0000000000 --- a/package/luci/modules/luci-base/luasrc/view/sysauth.htm +++ /dev/null @@ -1,73 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2012 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -
    "> - <%- if fuser then %> -
    <%:Invalid username and/or password! Please try again.%>
    - <% end -%> - -
    -

    <%:Authorization Required%>

    -
    - <%:Please enter your username and password.%> -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    - - -
    -
    - - -<% -local uci = require "luci.model.uci".cursor() -local fs = require "nixio.fs" -local https_key = uci:get("uhttpd", "main", "key") -local https_port = uci:get("uhttpd", "main", "listen_https") -if type(https_port) == "table" then - https_port = https_port[1] -end - -if https_port and fs.access(https_key) then - https_port = https_port:match("(%d+)$") -%> - - - -<% end %> - -<%+footer%> diff --git a/package/luci/modules/luci-base/po/ca/base.po b/package/luci/modules/luci-base/po/ca/base.po deleted file mode 100644 index e69534b3ba..0000000000 --- a/package/luci/modules/luci-base/po/ca/base.po +++ /dev/null @@ -1,3956 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-06-06 11:17+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(finestra de %d minuts, interval de %d segons)" - -msgid "(%s available)" -msgstr "(%s disponibles)" - -msgid "(empty)" -msgstr "(buit)" - -msgid "(no interfaces attached)" -msgstr "(sense interfícies adjuntes)" - -msgid "-- Additional Field --" -msgstr "-- Camp addicional --" - -msgid "-- Please choose --" -msgstr "-- Escolliu, si us plau --" - -msgid "-- custom --" -msgstr "-- personalitzat --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Càrrega d'1 minut:" - -msgid "15 Minute Load:" -msgstr "Càrrega de 15 minuts:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Càrrega de 5 minuts:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "Port de consulta DNS " - -msgid "DNS server port" -msgstr "Port del servidor DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Es consultaran els servidors DNS " -"segons l'ordre del fitxer de resolució" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Adreça IPv4" - -msgid "IPv4-Gateway" -msgstr "Passarel·la IPv4" - -msgid "IPv4-Netmask" -msgstr "" -"Màscara de xarxa IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Adreça IPv6 o Xarxa (CIDR)" - -msgid "IPv6-Gateway" -msgstr "Passarel·la IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Configuració dels LEDs" - -msgid "LED Name" -msgstr "Nom LED" - -msgid "MAC-Address" -msgstr "Adreça MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Arrendaments de DHCP max." - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Mida màx. de paquet EDNS0" - -msgid "Max. concurrent queries" -msgstr "Consultes concurrents max." - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"Avís: cal reiniciar manualment el servei cron si el fitxer crontab estava " -"buit abans d'editar-lo." - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Llindar de reintent ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Ponts ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identificador de canal virtual (VCI) ATM" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identificador de camí virtual (VPI) ATM" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Els ponts ATM mostren ethernet encapsulat en connexions AAL5 com interfícies " -"de xarxa virtual de Linux que es poden utilitzar conjuntament amb DHCP o PPP " -"per trucar a la xarxa del proveïdor." - -msgid "ATM device number" -msgstr "Número de dispositiu ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrador d'accés" - -msgid "Access Point" -msgstr "Punt d'accés" - -msgid "Action" -msgstr "Acció" - -msgid "Actions" -msgstr "Accions" - -msgid "Activate this network" -msgstr "Activa aquesta xarxa" - -msgid "Active IPv4-Routes" -msgstr "Rutes IPv4 actives" - -msgid "Active IPv6-Routes" -msgstr "Rutes IPv6 actives" - -msgid "Active Connections" -msgstr "Connexions actives" - -msgid "Active DHCP Leases" -msgstr "Arrendaments DHCP actius" - -msgid "Active DHCPv6 Leases" -msgstr "Arrendaments DHCPv6 actius" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Afegeix" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Afegeix el sufix de domini local als noms servits des dels fitxers de hosts" - -msgid "Add new interface..." -msgstr "Afegeix una interfície nova..." - -msgid "Additional Hosts files" -msgstr "Fitxers de Hosts addicionals" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adreça" - -msgid "Address to access local relay bridge" -msgstr "Adreça per accedir al relay bridge local" - -msgid "Administration" -msgstr "Administració" - -msgid "Advanced Settings" -msgstr "Paràmetres avançats" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerta" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permetre l'autenticació SSH amb " -"contrasenya" - -msgid "Allow all except listed" -msgstr "Permet-les totes menys les llistades" - -msgid "Allow listed only" -msgstr "Permet només les llistades" - -msgid "Allow localhost" -msgstr "Permetre el localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permetre a màquines remotes de connectar-se als ports reenviats de l'SSH " -"local" - -msgid "Allow root logins with password" -msgstr "Accés d'administrador amb contrasenya" - -msgid "Allow the root user to login with password" -msgstr "Permetre l'accés de l'usurari root amb contrasenya" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "Permet respostes del rang 127.0.0.0/8, p.e. per serveis RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Configuració d'antena" - -msgid "Any zone" -msgstr "Qualsevol zona" - -msgid "Apply" -msgstr "Aplica" - -msgid "Applying changes" -msgstr "Aplicant els canvis" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Assigna interfícies..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Estacions associades" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autenticació" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritzada" - -msgid "Authorization Required" -msgstr "Es requereix autenticació" - -msgid "Auto Refresh" -msgstr "Refresc automàtic" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponible" - -msgid "Available packages" -msgstr "Paquets disponibles" - -msgid "Average:" -msgstr "Mitjana:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Enrere" - -msgid "Back to Overview" -msgstr "Enrere al Resum" - -msgid "Back to configuration" -msgstr "Enrere a la configuració" - -msgid "Back to overview" -msgstr "Enrere al resum" - -# Endarrere cap a resultats d'escaneig -msgid "Back to scan results" -msgstr "Enrere als resultats de l'escaneig" - -msgid "Backup / Flash Firmware" -msgstr "Còpia de seguretat i microprogramari" - -msgid "Backup / Restore" -msgstr "Còpia de seguretat i restauració de la configuració" - -msgid "Backup file list" -msgstr "Llista de còpies de seguretat" - -msgid "Bad address specified!" -msgstr "Adreça mal especificada!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"A sota hi ha la llista determinada de fitxers per fer-ne còpia. Consisteix " -"en els fitxers de configuració canviats i marcats per l'opkg, fitxers base " -"essencials i els patrons de còpia de seguretat definits per l'usuari." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Velocitat de bits" - -msgid "Bogus NX Domain Override" -msgstr "Substitució dels dominis NX falsos" - -msgid "Bridge" -msgstr "Pont" - -msgid "Bridge interfaces" -msgstr "Pont d'interfícies" - -msgid "Bridge unit number" -msgstr "Número d'unitat de pont" - -msgid "Bring up on boot" -msgstr "Aixecar a l'engegada" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Controlador sense fil Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Controlador sense fil Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "En memòria intermèdia" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Repositoris específics de la distribució/compilació. Aquest fitxer NO es " -"preservarà durant les actualitzacions del microprogramari del sistema." - -msgid "Buttons" -msgstr "Botons" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Ús de CPU (%)" - -msgid "Cancel" -msgstr "Cancel·la" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Cadena" - -msgid "Changes" -msgstr "Canvis" - -msgid "Changes applied." -msgstr "Canvis aplicats." - -msgid "Changes the administrator password for accessing the device" -msgstr "Canvia la paraula clau de l'administrador per accedir al dispositiu" - -msgid "Channel" -msgstr "Canal" - -msgid "Check" -msgstr "Comprovació" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Suma de verificació" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Escolliu la zona de tallafocs que voleu assignar a aquesta interfície. Trieu " -"sense especificar per esborrar la interfície de la zona associada o " -"ompliu el camp crea per definir una nova zona i adjuntar-hi la " -"interfície." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Trieu les xarxes que voleu adjuntar a la interfície sense fil o ompliu el " -"camp crea per definir una xarxa nova." - -msgid "Cipher" -msgstr "Xifra" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Fes clic a \"Genera l'arxiu\" per obtenir un fitxer .tar.gz amb els fitxers " -"de configuració actuals. Per restablir el microprogramari al seu estat " -"inicial, fes clic a \"Restableix la configuració\" (només funciona amb " -"imatges squashfs)." - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID de client a enviar en les sol·licituds DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "Tanca la llista..." - -msgid "Collecting data..." -msgstr "Aplegant dades..." - -msgid "Command" -msgstr "Ordre" - -msgid "Common Configuration" -msgstr "Configuració comuna" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuració" - -msgid "Configuration applied." -msgstr "S'ha aplicat la configuració." - -msgid "Configuration files will be kept." -msgstr "Es mantindran els fitxers de configuració." - -msgid "Confirmation" -msgstr "Confirmació" - -msgid "Connect" -msgstr "Connecta" - -msgid "Connected" -msgstr "Connectat" - -msgid "Connection Limit" -msgstr "Límit de connexió" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Connexions" - -msgid "Country" -msgstr "País" - -msgid "Country Code" -msgstr "Codi de País" - -msgid "Cover the following interface" -msgstr "Cobreix la interfície següent" - -msgid "Cover the following interfaces" -msgstr "Cobreix les interfícies següents" - -msgid "Create / Assign firewall-zone" -msgstr "Crea / Assigna zona de tallafocs" - -msgid "Create Interface" -msgstr "Crea interfície" - -msgid "Create a bridge over multiple interfaces" -msgstr "Crea un pont entre múltiples interfícies" - -msgid "Critical" -msgstr "Crític" - -msgid "Cron Log Level" -msgstr "Nivell de registre del Cron" - -msgid "Custom Interface" -msgstr "Interfície personalitzada" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Personalitza el comportament dels LEDs del dispositiu, si és possible." - -msgid "DHCP Leases" -msgstr "Arrendaments DHCP" - -msgid "DHCP Server" -msgstr "Servidor DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP i DNS" - -msgid "DHCP client" -msgstr "Client DHCP" - -msgid "DHCP-Options" -msgstr "Opcions DHCP" - -msgid "DHCPv6 Leases" -msgstr "Arrendaments DHCPv6" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Reenviaments DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Depuració" - -msgid "Default %d" -msgstr "%d per defecte" - -msgid "Default gateway" -msgstr "Passarel·la per defecte" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Estat per defecte" - -msgid "Define a name for this network." -msgstr "Definiu el nom d'aquesta xarxa" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Suprimeix" - -msgid "Delete this network" -msgstr "Suprimeix aquesta xarxa" - -msgid "Description" -msgstr "Descripció" - -msgid "Design" -msgstr "Disseny" - -msgid "Destination" -msgstr "Destí" - -msgid "Device" -msgstr "Dispositiu" - -msgid "Device Configuration" -msgstr "Configuració de dispositiu" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnòstics" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Directori" - -msgid "Disable" -msgstr "Inhabilita" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Inhabilita el DHCP en aquesta interfície." - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Inhabilitat" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Descarta les respostes RFC1918 des de dalt" - -msgid "Displaying only packages containing" -msgstr "Mostrant només els paquets que contenen" - -msgid "Distance Optimization" -msgstr "Optimització de distància" - -msgid "Distance to farthest network member in meters." -msgstr "Distància al membre de la xarxa més allunyat en metres." - -msgid "Distribution feeds" -msgstr "Repositoris de la distribució" - -msgid "Diversity" -msgstr "Diversitat" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"El Dnsmasq és un servidor DHCP combinat i un reenviador de DNS per tallafocs NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Es requereix un domini" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"No reenviïs les peticions DNS " -"sense el nom DNS" - -msgid "Download and install package" -msgstr "Descarrega i instal·la el paquet" - -msgid "Download backup" -msgstr "Descarrega còpia de seguretat" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instància de Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"El Dropbear ofereix accés a una consola SSH per xarxa i un servidor SCP integrat" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP dinàmic" - -msgid "Dynamic tunnel" -msgstr "Túnel dinàmic" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Mètode EAP" - -msgid "Edit" -msgstr "Edita" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Edita aquesta interfície" - -msgid "Edit this network" -msgstr "Edita aquesta xarxa" - -msgid "Emergency" -msgstr "Emergència" - -msgid "Enable" -msgstr "Habilita" - -msgid "Enable STP" -msgstr "Habilita l'STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Habilita negociació IPv6 en la enllaç PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Habilita el passatge de trames enormes" - -msgid "Enable NTP client" -msgstr "Habilita el client NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Habilita el servidor TFTP" - -msgid "Enable VLAN functionality" -msgstr "Habilita la funcionalitat VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Habilita l'aprenentatge i l'envelliment" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "Activa/Desactiva" - -msgid "Enabled" -msgstr "Habilitat" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Habilita l'Spanning Tree Protocol a aquest pont" - -msgid "Encapsulation mode" -msgstr "Mode d'encapsulació" - -msgid "Encryption" -msgstr "Encriptació" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Esborrant..." - -msgid "Error" -msgstr "Error" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Adaptador Ethernet" - -msgid "Ethernet Switch" -msgstr "Switch Ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "Caduca" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Servidor de registre del sistema extern" - -msgid "External system log server port" -msgstr "Port del servidor de registre del sistema extern" - -msgid "External system log server protocol" -msgstr "Protocol del servidor de registre del sistema extern" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Fitxer" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nom de fitxer de la imatge d'inici que es publica als clients" - -msgid "Filesystem" -msgstr "Sistema de fitxers" - -msgid "Filter" -msgstr "Filtre" - -msgid "Filter private" -msgstr "Filtra privat" - -msgid "Filter useless" -msgstr "Filtra els no útils" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Troba i uneix-te a la xarxa" - -msgid "Find package" -msgstr "Cerca paquet" - -msgid "Finish" -msgstr "Acaba" - -msgid "Firewall" -msgstr "Tallafocs" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Ajusts de tallafocs" - -msgid "Firewall Status" -msgstr "Estat de tallafocs" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versió de microprogramari" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Escriptura del microprogramari a la memòria flaix" - -msgid "Flash image..." -msgstr "Puja una imatge..." - -msgid "Flash new firmware image" -msgstr "Escriu una imatge nova a la memòria flaix" - -msgid "Flash operations" -msgstr "Operacions a la memòria flaix" - -msgid "Flashing..." -msgstr "Escrivint a la memòria flaix..." - -msgid "Force" -msgstr "Força" - -msgid "Force CCMP (AES)" -msgstr "Força el CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Força el DHCP en aquesta xarxa encara que es detecti altre servidor." - -msgid "Force TKIP" -msgstr "Força el TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Força el TKIP i el CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Reenvia el trànsit DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Reenvia el trànsit difós" - -msgid "Forwarding mode" -msgstr "Mode de reenviament" - -msgid "Fragmentation Threshold" -msgstr "Llindar de fragmentació" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "Lliure" - -msgid "Free space" -msgstr "Espai lliure" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Només GPRS" - -msgid "Gateway" -msgstr "Passarel·la" - -msgid "Gateway ports" -msgstr "Ports de passarel·la" - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "Opcions generals d'opkg" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Genera l'arxiu" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Controlador sense fils 802.11%s genèric" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"La contrasenya i la confirmació de contrasenya no es coincideixen. La " -"contrasenya no s'ha canviat!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Vés a la configuració de contrasenya" - -msgid "Go to relevant configuration page" -msgstr "Vés a la pàgina de configuració" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Contrasenya de HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "Penja" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Ací pots configurar els aspectes bàsics del teu dispositiu, com el nom de la " -"màquina o el fus horari." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Aquí pots afegir-hi les claus SSH públiques (una per línia) per entrar per " -"SSH amb autenticació per clau." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Controlador sense fil Hermes 802.11b" - -msgid "Hide ESSID" -msgstr "" -"No mostris l'ESSID" - -msgid "Host" -msgstr "Nom de màquina" - -msgid "Host entries" -msgstr "Entrades de noms de màquina" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Xarxa o adreça IP" - -msgid "Hostname" -msgstr "Nom de màquina" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Noms de màquina" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Adreça IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Tallafocs IPv4" - -msgid "IPv4 WAN Status" -msgstr "Estat WAN IPv4" - -msgid "IPv4 address" -msgstr "Adreça IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 i IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Difusió IPv4" - -msgid "IPv4 gateway" -msgstr "Passarel·la IPv4" - -msgid "IPv4 netmask" -msgstr "Màscara de xarxa IPv4" - -msgid "IPv4 only" -msgstr "Només IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Longitud de prefix IPv4" - -msgid "IPv4-Address" -msgstr "Adreça IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Tallafocs IPv6" - -msgid "IPv6 Neighbours" -msgstr "Veïns IPv6" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Estat WAN IPv6" - -msgid "IPv6 address" -msgstr "Adreça IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Passarel·la IPv6" - -msgid "IPv6 only" -msgstr "Només IPv6" - -msgid "IPv6 prefix" -msgstr "Prefix IPv6" - -msgid "IPv6 prefix length" -msgstr "Longitud de prefix IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Adreça IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-en-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-sobre-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-sobre-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identitat" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Si la teva memòria física és insuficient, les dades no usades es poden " -"intercanviar a un dispositiu d'intercanvi, pel qual hi haurà una quantitat " -"més gran de memòria RAM usable. " -"Tingues en compte que intercanviar dades és un procés molt lent, ja que no " -"es pot accedir al dispositiu d'intercanvi amb unes taxes tan altes com les " -"de la RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignora /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignora la interfície" - -msgid "Ignore resolve file" -msgstr "Ignora el fitxer de resolució" - -msgid "Image" -msgstr "Fitxer d'imatge" - -msgid "In" -msgstr "Entr." - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Temps d'espera d'inactivitat" - -msgid "Inbound:" -msgstr "Entrant:" - -msgid "Info" -msgstr "Informació" - -msgid "Initscript" -msgstr "Script d'inici" - -msgid "Initscripts" -msgstr "Scripts d'inici" - -msgid "Install" -msgstr "Instal·la" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instal·la el paquet %q" - -msgid "Install protocol extensions..." -msgstr "Instal·la extensions de protocol" - -msgid "Installed packages" -msgstr "Paquets instal·lats" - -msgid "Interface" -msgstr "Interfície" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuració d'interfície" - -msgid "Interface Overview" -msgstr "Visió de conjunt de la interfície" - -msgid "Interface is reconnecting..." -msgstr "La interfície s'està reconnectant..." - -msgid "Interface is shutting down..." -msgstr "La interfície s'està aturant..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interface reconnected" -msgstr "" - -msgid "Interface shut down" -msgstr "" - -msgid "Interfaces" -msgstr "Interfícies" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Error de servidor intern" - -msgid "Invalid" -msgstr "Invàlid" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Usuari i/o contrasenya invàlids! Si us plau prova-ho de nou." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Sembla que intentes actualitzar una imatge que no hi cap a la memòria flaix, " -"si us plau verifica el fitxer d'imatge!" - -msgid "JavaScript required!" -msgstr "Es requereix JavaScript!" - -msgid "Join Network" -msgstr "Uneix-te a la xarxa" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Mantenir la configuració" - -msgid "Kernel Log" -msgstr "Registre del nucli" - -msgid "Kernel Version" -msgstr "Versió del nucli" - -msgid "Key" -msgstr "Clau" - -msgid "Key #%d" -msgstr "Clau #%d" - -msgid "Kill" -msgstr "Mata" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Servidor L2TP" - -msgid "LCP echo failure threshold" -msgstr "Llindar de fracàs d'eco LCP" - -msgid "LCP echo interval" -msgstr "Interval d'eco LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etiqueta" - -msgid "Language" -msgstr "Llengua" - -msgid "Language and Style" -msgstr "Llengua i estil" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Duració de validitat d'arrendament" - -msgid "Leasefile" -msgstr "Fitxer d'arrendament" - -msgid "Leasetime remaining" -msgstr "Temps d'arrendament restant" - -msgid "Leave empty to autodetect" -msgstr "Deixeu-ho en blanc per autodetectar" - -msgid "Leave empty to use the current WAN address" -msgstr "Deixeu-ho en blanc per utilitzar l'adreça WAN actual" - -msgid "Legend:" -msgstr "Llegenda:" - -msgid "Limit" -msgstr "Límit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Enllaç actiu" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Habilita el servei en totes les interfícies o, si no se n'especifica cap, en " -"totes" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Càrrega" - -msgid "Load Average" -msgstr "Càrrega mitjana" - -msgid "Loading" -msgstr "Carregant" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Adreça IPv4 local" - -msgid "Local IPv6 address" -msgstr "Adreça IPv6 local" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Inici local" - -msgid "Local Time" -msgstr "Hora local" - -msgid "Local domain" -msgstr "Domini local" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "Servidor local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Localitza les peticions" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Nivell de sortida de registre" - -msgid "Log queries" -msgstr "Registra les peticions" - -msgid "Logging" -msgstr "Registre" - -msgid "Login" -msgstr "Entra" - -msgid "Logout" -msgstr "Surt" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "Adreça MAC" - -msgid "MAC-Address Filter" -msgstr "Filtre d'adreces MAC" - -msgid "MAC-Filter" -msgstr "Filtre MAC" - -msgid "MAC-List" -msgstr "Llista MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memòria" - -msgid "Memory usage (%)" -msgstr "Ús de Memòria (%)" - -msgid "Metric" -msgstr "Mètrica" - -msgid "Minimum hold time" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Manca l'extensió de protocol del protocol %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mode" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Dispositiu mòdem" - -msgid "Modem init timeout" -msgstr "Temps d'espera d'inici de mòdem" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Punt de muntatge" - -msgid "Mount Points" -msgstr "Punts de muntatge" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Els punts de muntatge defineixen en quin punt un dispositiu de memòria " -"s'adjuntarà amb el sistema de fitxers" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Opcions de muntatge" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Sistemes de fitxers muntats" - -msgid "Move down" -msgstr "Baixa" - -msgid "Move up" -msgstr "Puja" - -msgid "Multicast address" -msgstr "Adreça de difusió selectiva" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Candidats de servidor NTP" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Nom" - -msgid "Name of the new interface" -msgstr "Nom de la nova interfície" - -msgid "Name of the new network" -msgstr "Nom de la nova xarxa" - -msgid "Navigation" -msgstr "Navegació" - -msgid "Netmask" -msgstr "Màscara de xarxa" - -msgid "Network" -msgstr "Xarxa" - -msgid "Network Utilities" -msgstr "Utilitats de xarxa" - -msgid "Network boot image" -msgstr "Imatge d'inici de xarxa" - -msgid "Network without interfaces." -msgstr "Xarxa sense interfícies." - -msgid "Next »" -msgstr "Següent" - -msgid "No DHCP Server configured for this interface" -msgstr "Cap servidor DHCP configurat en aquesta interfície" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "No hi ha cadenes en aquesta taula" - -msgid "No files found" -msgstr "Cap fitxer trobat" - -msgid "No information available" -msgstr "No hi ha informació disponible" - -msgid "No negative cache" -msgstr "Sense memòria cau negativa" - -msgid "No network configured on this device" -msgstr "Cap xarxa configurada en aquest dispositiu" - -msgid "No network name specified" -msgstr "Cap nom de xarxa especificat" - -msgid "No package lists available" -msgstr "No hi ha llistes de paquets disponibles" - -msgid "No password set!" -msgstr "No hi ha cap contrasenya establerta!" - -msgid "No rules in this chain" -msgstr "No hi ha regles en aquesta cadena" - -msgid "No zone assigned" -msgstr "Cap zona assignada" - -msgid "Noise" -msgstr "Soroll" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Soroll:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Cap" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "No trobat" - -msgid "Not associated" -msgstr "No associat" - -msgid "Not connected" -msgstr "No connectat" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: Els fitxers de configuració s'esborraran." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Avís" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "D'acord" - -msgid "OPKG-Configuration" -msgstr "Configuració d'OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"En aquesta pàgina pots configurar les interfícies de xarxa. Pots fer un pont " -"entre diverses interfícies clicant sobre el camp \"interfície pont\" i " -"introduint els noms de les diverses interfícies de xarxa separats per " -"espais. També pots fer servir la notació VLAN INTERFACE.VLANNR (p.e.: eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "Cal especificar o el nom de host o l'adreça MAC!" - -msgid "One or more fields contain invalid values!" -msgstr "Un o més dels camps requerits conté un valor invàlid!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Un o més dels camps requerits no té valor!" - -msgid "Open list..." -msgstr "Obre una llista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Opció canviada" - -msgid "Option removed" -msgstr "Opció treta" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opcions" - -msgid "Other:" -msgstr "Altres:" - -msgid "Out" -msgstr "Sort." - -msgid "Outbound:" -msgstr "Sortint:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Visió de conjunt" - -msgid "Owner" -msgstr "Propietari" - -msgid "PAP/CHAP password" -msgstr "Contrasenya PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Nom d'usuari PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Encapsulació PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Es requereix el paquet libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Les llistes de paquets tenen més de 24 hores" - -msgid "Package name" -msgstr "Nom del paquet" - -msgid "Packets" -msgstr "Paquets" - -msgid "Part of zone %q" -msgstr "Part de la zona %q" - -msgid "Password" -msgstr "Contrasenya" - -msgid "Password authentication" -msgstr "Autenticació per contrasenya" - -msgid "Password of Private Key" -msgstr "Contrasenya de la clau privada" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "La contrasenya s'ha canviat amb èxit!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Ruta als Certificats CA" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Ruta a la clau privada" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Màxim:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Executa un reinici" - -msgid "Perform reset" -msgstr "Executa un reinici" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Velocitat física:" - -msgid "Physical Settings" -msgstr "Ajusts físics" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Paquets" - -msgid "Please enter your username and password." -msgstr "Si us plau entra el teu nom d'usuari i contrasenya." - -msgid "Policy" -msgstr "Política" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Estatus de port" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Evita la comunicació client a client" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Procedeix" - -msgid "Processes" -msgstr "Processos" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocol" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "Habilita el servidor NTP" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Calidad" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Llindar RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Velocitat RX" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "Controlador sense fil RaLink 802.11%s" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Llegeix /etc/ethers per configurar el servidor DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "Connexions en temps real" - -msgid "Realtime Graphs" -msgstr "Gràfiques en temps real" - -msgid "Realtime Load" -msgstr "Càrrega en temps real" - -msgid "Realtime Traffic" -msgstr "Trànsit en temps real" - -msgid "Realtime Wireless" -msgstr "Dispositiu sense fils en temps real" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Reinicia" - -msgid "Rebooting..." -msgstr "Reiniciant..." - -msgid "Reboots the operating system of your device" -msgstr "Arranca de nou el sistema operatiu del teu dispositiu" - -msgid "Receive" -msgstr "Recepció" - -msgid "Receiver Antenna" -msgstr "Antena receptora" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconnex aquesta interfície" - -msgid "Reconnecting interface" -msgstr "Reconnectant la interfície" - -msgid "References" -msgstr "Referències" - -msgid "Relay" -msgstr "Relé" - -msgid "Relay Bridge" -msgstr "Pont de relé" - -msgid "Relay between networks" -msgstr "Relé entre xarxes" - -msgid "Relay bridge" -msgstr "Pont de relé" - -msgid "Remote IPv4 address" -msgstr "Adreça IPv4 remota" - -msgid "Remote IPv4 address or FQDN" -msgstr "Adreça IPv4 remota o FQDN" - -msgid "Remove" -msgstr "Treu" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "Reemplaça l'entrada" - -msgid "Replace wireless configuration" -msgstr "Reemplaça la configuració sense fil" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Alguns ISP ho requereixen, per exemple el Charter amb DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Restableix" - -msgid "Reset Counters" -msgstr "Reinicia els comptadors" - -msgid "Reset to defaults" -msgstr "Reestableix els valors per defecte" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "Reinicia" - -msgid "Restart Firewall" -msgstr "Reinicia el tallafocs" - -msgid "Restore backup" -msgstr "Restaura còpia de seguretat" - -msgid "Reveal/hide password" -msgstr "Mostra/amaga la contrasenya" - -msgid "Revert" -msgstr "Reverteix" - -msgid "Root" -msgstr "Arrel" - -msgid "Root directory for files served via TFTP" -msgstr "Directori arrel dels fitxers servits per TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Contrasenya de l'encaminador" - -msgid "Routes" -msgstr "Rutes" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Les rutes especifiquen per quina interfície i passarel·la es pot arribar a " -"un cert ordinador o xarxa." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Accés SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Claus SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Desa" - -msgid "Save & Apply" -msgstr "Desa i aplica" - -msgid "Save & Apply" -msgstr "Desa i aplica" - -msgid "Scan" -msgstr "Escaneja" - -msgid "Scheduled Tasks" -msgstr "Tasques programades" - -msgid "Section added" -msgstr "Secció afegida" - -msgid "Section removed" -msgstr "Secció treta" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Clients separats" - -msgid "Server Settings" -msgstr "Ajusts de servidor" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Nom de servei" - -msgid "Service Type" -msgstr "Tipus de servei" - -msgid "Services" -msgstr "Serveis" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Configura la sincronització de l'hora" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "Atura aquesta interfície" - -msgid "Shutdown this network" -msgstr "Atura aquesta xarxa" - -msgid "Signal" -msgstr "Senyal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Senyal:" - -msgid "Size" -msgstr "Mida" - -msgid "Size (.ipk)" -msgstr "Mida (.ipk)" - -msgid "Skip" -msgstr "Salta" - -msgid "Skip to content" -msgstr "Salta al contingut" - -msgid "Skip to navigation" -msgstr "Salta a la navegació" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Programari" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "No es pot desar els valors perquè alguns camps estan invàlids!" - -msgid "Sorry, the object you requested was not found." -msgstr "Tristament, l'object que heu sol·licitat no s'ha trobat." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Tristament, el servidor ha encontrat un error inesperat." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "Ordena" - -msgid "Source" -msgstr "Origen" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "Especifica el directori a que el dispositiu està adjuntat" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Especifica el port d'escolta d'aquesta instància del Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Especifiqueu el clau de xifració secret aquí." - -msgid "Start" -msgstr "Inici" - -msgid "Start priority" -msgstr "Prioritat d'inici" - -msgid "Startup" -msgstr "Arrencada" - -msgid "Static IPv4 Routes" -msgstr "Rutes IPv4 estàtiques" - -msgid "Static IPv6 Routes" -msgstr "Rutes IPv6 estàtiques" - -msgid "Static Leases" -msgstr "Leases estàtics" - -msgid "Static Routes" -msgstr "Rutes estàtiques" - -msgid "Static address" -msgstr "Adreça estàtica" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Estat" - -msgid "Stop" -msgstr "Atura" - -msgid "Strict order" -msgstr "Ordre estricte" - -msgid "Submit" -msgstr "Envia" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Entrada d'intercanvi" - -msgid "Switch" -msgstr "Commutador" - -msgid "Switch %q" -msgstr "Commutador %q" - -msgid "Switch %q (%s)" -msgstr "Commutador %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Protocol de commutador" - -msgid "Sync with browser" -msgstr "Sincronitza amb el navegador" - -msgid "Synchronizing..." -msgstr "Sincronitzant..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registre del sistema" - -msgid "System Properties" -msgstr "Propietats del sistema" - -msgid "System log buffer size" -msgstr "Mida de la memòria intermèdia per al registre del sistema" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Ajusts TFTP" - -msgid "TFTP server root" -msgstr "Arrel del servidor TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Velocitat TX" - -msgid "Table" -msgstr "Taula" - -msgid "Target" -msgstr "Destí" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Acaba" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"El paquet libiwinfo-lua no està instal·lat. Heu de instal·lar " -"aquest component per tenir una configuració sense fil funcionant!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Els caràcters permets són: A-Z, a-z, 0-9 i _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"El fitxer de dispositiu de la memòria o partició (p.e. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"El sistema the fitxers que es va fer servir per formatar la memòria (p.e. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"S'ha pujat la imatge per a la memòria flaix. A sota hi ha llistades la suma " -"de verificació i la mida del fitxer per assegurar la integritat de les dades." -"
    Fes clic a \"Procedeix\" a continuació per començar el procés " -"d'escriptura a la memòria flaix." - -msgid "The following changes have been committed" -msgstr "S'han comès els següents canvis" - -msgid "The following changes have been reverted" -msgstr "S'han desfet els següents canvis" - -msgid "The following rules are currently active on this system." -msgstr "Les següents regles estan actualment actives en aquest sistema." - -msgid "The given network name is not unique" -msgstr "El nom de xarxa donat no és únic" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"El maquinari no es capaç de múltiples SSID i la configuració existent es " -"reemplaçara si procediu." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"La longitud del prefix IPv4 en bits, el reste s'utilitza en les adreces IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "La longitud del prefix IPv6 en bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "El protocol seleccionat necessita un dispositiu assignat" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"El sistema està esborrant la partició de configuració i es reiniciarà quan " -"termini." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"S'està escrivint la imatge del microprogramari a la memòria flaix.
    NO " -"APAGUIS EL DISPOSITIU!
    Espera uns minuts abans d'intentar connectar-te " -"de nou. Pot ser necessari que renovis l'adreça DHCP del teu ordinador per " -"connectar-te de nou a l'encaminador, depenent de la configuració que hi " -"tinguis." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"La imatge pujada no conté un format suportat. Assegura't de triar el format " -"d'imatge genèric per la teva plataforma." - -msgid "There are no active leases." -msgstr "No hi ha arrendaments actius." - -msgid "There are no pending changes to apply!" -msgstr "No hi ha canvis pendents per aplicar!" - -msgid "There are no pending changes to revert!" -msgstr "No hi ha canvis pendents per revertir!" - -msgid "There are no pending changes!" -msgstr "No hi ha canvis pendents!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"No s'ha establert cap contrasenya en aquest encaminador. Si us plau, " -"configura una contrasenya per protegir la interfície web i l'accés SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Aquest és el contingut de /etc/rc.local. Afegeix-hi les teves comandes " -"(abans de la línia 'exit 0') per executar-les en finalitzar el procés " -"d'arrencada." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Aquest és l'únic DHCP a la teva xarxa local" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Aquest és el crontab del sistema en el qual es poden definir tasques " -"programades." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Aquesta llista mostra una vista general sobre els processos corrent al " -"sistema actualment i el seu estat." - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Aquesta pàgina ofereix una vista general de les connexions de xarxa actives " -"actualment." - -msgid "This section contains no values yet" -msgstr "Aquesta secció encara no conté cap valor" - -msgid "Time Synchronization" -msgstr "Sincronització de l'hora" - -msgid "Time Synchronization is not configured yet." -msgstr "La sincronització de hora encara no s'ha configurat." - -msgid "Timezone" -msgstr "Zona horària" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Per restaurar els fitxers de configuració, pots pujar una còpia de seguretat " -"generada anteriorment aquí." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total disponible" - -msgid "Traceroute" -msgstr "Rastre de ruta" - -msgid "Traffic" -msgstr "Trànsit" - -msgid "Transfer" -msgstr "Transferència" - -msgid "Transmission Rate" -msgstr "Taxa de transmissió" - -msgid "Transmit" -msgstr "Transmissió" - -msgid "Transmit Power" -msgstr "Potència de transmissió" - -msgid "Transmitter Antenna" -msgstr "Antena transmissora" - -msgid "Trigger" -msgstr "Activador" - -msgid "Trigger Mode" -msgstr "Mode d'activació" - -msgid "Tunnel ID" -msgstr "ID del túnel" - -msgid "Tunnel Interface" -msgstr "Interfície del túnel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Potència Tx" - -msgid "Type" -msgstr "Tipus" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Només UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Dispositiu USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Desconegut" - -msgid "Unknown Error, password not changed!" -msgstr "La contrasenya no s'ha canviat a causa d'un error desconegut!" - -msgid "Unmanaged" -msgstr "Sense gestionar" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Canvis sense desar" - -msgid "Unsupported protocol type." -msgstr "Tipus de protocol no suportat." - -msgid "Update lists" -msgstr "Actualitza les llistes" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Puja aquí una imatge compatible amb sysupgrade per reemplaçar el " -"microprogramari actual. Activa \"Mantenir la configuració\" per retenir la " -"configuració actual (requereix una imatge de microprogramari compatible)." - -msgid "Upload archive..." -msgstr "Puja un arxiu..." - -msgid "Uploaded File" -msgstr "Fitxer pujat" - -msgid "Uptime" -msgstr "Temps en marxa" - -msgid "Use /etc/ethers" -msgstr "Fes servir /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Utilitza la bandera de difusió" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Usat" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Nom d'usuari" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs en %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs en %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Servidor VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Classe de venidor per enviar al sol·licitar DHCP" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Verifica" - -msgid "Version" -msgstr "Versió" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistema obert WEP" - -msgid "WEP Shared Key" -msgstr "Clau compartit WEP" - -msgid "WEP passphrase" -msgstr "Contrasenya WEP" - -msgid "WMM Mode" -msgstr "Mode WMM" - -msgid "WPA passphrase" -msgstr "Contrasenya WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"La xifratge WPA requereix que sigui instal·lat el wpa_supplicant (pel mode " -"client) o el hostapd (pels modes AP i ad hoc)." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "Esperant que s'apliquin els canvis..." - -msgid "Waiting for command to complete..." -msgstr "Esperant que s'acabi l'ordre..." - -msgid "Waiting for device..." -msgstr "Esperant el dispositiu..." - -msgid "Warning" -msgstr "Advertència" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Sense fils" - -msgid "Wireless Adapter" -msgstr "Adaptador sense fils" - -msgid "Wireless Network" -msgstr "Xarxa sense fils" - -msgid "Wireless Overview" -msgstr "Resum sense fils" - -msgid "Wireless Security" -msgstr "Seguretat sense fils" - -msgid "Wireless is disabled or not associated" -msgstr "El dispositiu sense fils està inhabilitat o sense associar" - -msgid "Wireless is restarting..." -msgstr "El dispositiu sense fils està reiniciant..." - -msgid "Wireless network is disabled" -msgstr "La xarxa sense fil està inhabilitada" - -msgid "Wireless network is enabled" -msgstr "La xarxa sense fils està habilitada" - -msgid "Wireless restarted" -msgstr "Sense fils reinciat" - -msgid "Wireless shut down" -msgstr "Sense fils aturat" - -msgid "Write received DNS requests to syslog" -msgstr "Escriure les peticions DNS rebudes al registre del sistema" - -msgid "Write system log to file" -msgstr "Escriure el registre del sistema al fitxer" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Pots activar o desactivar els scripts d'inici instal·lats ací. Els canvis " -"s'aplicaran després d'arrancar de nou el dispositiu.
    Atenció: " -"Si desactives scripts d'inici necessaris com el \"network\", el teu " -"dispositiu pot resultar inaccessible!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Has d'activar el JavaScript al teu navegador o LuCI no funcionarà " -"correctament." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "qualsevol" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "pontejat" - -msgid "create:" -msgstr "crea:" - -msgid "creates a bridge over specified interface(s)" -msgstr "crea un pont entre les interfícies especificades" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "inhabilita" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "caducat" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"fitxer on els leases de DHCP s'emmagatzemaran" - -msgid "forward" -msgstr "transemès" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "ajuda" - -msgid "hidden" -msgstr "amagat" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "si el destí és una xarxa" - -msgid "input" -msgstr "entrada" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "fitxer DNS local" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "no" - -msgid "no link" -msgstr "cap enllaç" - -msgid "none" -msgstr "cap" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "parat" - -msgid "on" -msgstr "engegat" - -msgid "open" -msgstr "obert" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "encaminat" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "etiquetat" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "desconegut" - -msgid "unlimited" -msgstr "il·limitat" - -msgid "unspecified" -msgstr "sense espeficicar" - -msgid "unspecified -or- create:" -msgstr "sense espeficicar -o- crear:" - -msgid "untagged" -msgstr "sense etiquetar" - -msgid "yes" -msgstr "sí" - -msgid "« Back" -msgstr "« Enrere" - -#~ msgid "Leasetime" -#~ msgstr "Duració d'arrendament" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "estàtic" - -#~ msgid "AR Support" -#~ msgstr "Suport AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Controlador sense fils d'Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Escaneig de fons" - -#~ msgid "Compression" -#~ msgstr "Compressió" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Inhabilita el temporitzador HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "No enviïs les respostes de prova" - -#~ msgid "Fast Frames" -#~ msgstr "Fast Frames" - -#~ msgid "Maximum Rate" -#~ msgstr "Velocitat màxima" - -#~ msgid "Minimum Rate" -#~ msgstr "Velocitat mínima" - -#~ msgid "Multicast Rate" -#~ msgstr "Velocitat de difusió selectiva" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canals d'exteriors" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domini regulatori" - -#~ msgid "Separate WDS" -#~ msgstr "WDS separat" - -#~ msgid "Static WDS" -#~ msgstr "WDS estàtic" - -#~ msgid "Turbo Mode" -#~ msgstr "Mode Turbo" - -#~ msgid "XR Support" -#~ msgstr "Suport XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Es crearà una xarxa addicional si deixes això sense marcar." - -#~ msgid "Join Network: Settings" -#~ msgstr "Unir-se a la xarxa: Ajusts" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "VLAN Interface" -#~ msgstr "Interfície VLAN" diff --git a/package/luci/modules/luci-base/po/cs/base.po b/package/luci/modules/luci-base/po/cs/base.po deleted file mode 100644 index bff89c8845..0000000000 --- a/package/luci/modules/luci-base/po/cs/base.po +++ /dev/null @@ -1,3996 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-31 13:59+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d minutové okno, %d sekundový interval)" - -msgid "(%s available)" -msgstr "(%s k dispozici)" - -msgid "(empty)" -msgstr "(prázdný)" - -msgid "(no interfaces attached)" -msgstr "(bez rozhraní připojení)" - -msgid "-- Additional Field --" -msgstr "-- Doplňující pole --" - -msgid "-- Please choose --" -msgstr "-- Prosím vyberte --" - -msgid "-- custom --" -msgstr "-- vlastní --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Zatížení za 1 minutu:" - -msgid "15 Minute Load:" -msgstr "Zatížení za 15 minut:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Zatížení za 5 minut:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "port dotazů DNS" - -msgid "DNS server port" -msgstr "port serveru DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS servery budou dotazovány podle " -"pořadí resolvfile" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Adresa" - -msgid "IPv4-Gateway" -msgstr "IPv4-Brána" - -msgid "IPv4-Netmask" -msgstr "IPv4-Maska sítě" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Adresa nebo Síť (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Brána" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Konfigurace" - -msgid "LED Name" -msgstr "LED Název" - -msgid "MAC-Address" -msgstr "MAC-Adresa" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Nejvyšší počet DHCP výpůjček" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Největší povolená velikost EDNS0 packetů" - -msgid "Max. concurrent queries" -msgstr "Nejvyšší počet souběžných dotazů" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP limit opakování" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM mosty" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identifikátor virtuálního kanálu ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identifikátor virtuální cesty ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Otevře ATM mosty přes uzavřené ethernetové rozhraní v AAL5 připojení jako " -"virtuální síťová rozhraní Linuxu, které mohou být použity ve spojení s DHCP " -"nebo PPP vytáčeného připojení od poskytovatele sítě." - -msgid "ATM device number" -msgstr "číslo ATM zařízení" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Přístupový koncentrátor" - -msgid "Access Point" -msgstr "Přístupový bod" - -msgid "Action" -msgstr "Akce" - -msgid "Actions" -msgstr "Akce" - -msgid "Activate this network" -msgstr "Aktivovat tuto síť" - -msgid "Active IPv4-Routes" -msgstr "" -"Aktivní záznamy ve směrovací tabulce IPv4" - -msgid "Active IPv6-Routes" -msgstr "" -"Aktivní záznamy ve směrovací tabulce IPv6" - -msgid "Active Connections" -msgstr "Aktivní spojení" - -msgid "Active DHCP Leases" -msgstr "Aktivní propůjčené DHCP adresy (leases)" - -msgid "Active DHCPv6 Leases" -msgstr "Aktivní propůjčené DHCPv6 adresy (leases)" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Přidat" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Přidat lokální koncovku k doménovým jménům ze souboru hosts" - -msgid "Add new interface..." -msgstr "Přidat rozhraní..." - -msgid "Additional Hosts files" -msgstr "Dodatečné Hosts soubory" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresa" - -msgid "Address to access local relay bridge" -msgstr "Adresa pro přístup k místnímu relay bridge" - -msgid "Administration" -msgstr "Správa" - -msgid "Advanced Settings" -msgstr "Pokročilé nastavení" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Upozornění" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Povolit SSH autentizaci heslem" - -msgid "Allow all except listed" -msgstr "Povolit vše mimo uvedené" - -msgid "Allow listed only" -msgstr "Povolit pouze uvedené" - -msgid "Allow localhost" -msgstr "Povolit localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Povolit vzdáleným hostitelům připojování k místním portům přesměrovaným " -"pomocí SSH" - -msgid "Allow root logins with password" -msgstr "Povolit přihlašovaní root účtu pomocí hesla" - -msgid "Allow the root user to login with password" -msgstr "Povolit root účtu přihlášení bez nastaveného hesla" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "Povolit upstream odpovědi na 127.0.0.0/8 rozsah, např. pro RBL služby" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Anténa 1" - -msgid "Antenna 2" -msgstr "Anténa 2" - -msgid "Antenna Configuration" -msgstr "Konfigurace antén" - -msgid "Any zone" -msgstr "Libovolná zóna" - -msgid "Apply" -msgstr "Použít" - -msgid "Applying changes" -msgstr "Probíhá uplatňování nastavení" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Přiřadit rozhraní..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Připojení klienti" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autentizace" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritativní" - -msgid "Authorization Required" -msgstr "Vyžadována autorizace" - -msgid "Auto Refresh" -msgstr "Automaticky obnovovat" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Dostupné" - -msgid "Available packages" -msgstr "Dostupné balíčky" - -msgid "Average:" -msgstr "Průměr:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Zpět" - -msgid "Back to Overview" -msgstr "Zpět k přehledu" - -msgid "Back to configuration" -msgstr "Zpět ke konfiguraci" - -msgid "Back to overview" -msgstr "Zpět k přehledu" - -msgid "Back to scan results" -msgstr "Zpět k výsledkům vyhledávání" - -msgid "Backup / Flash Firmware" -msgstr "Zálohovat / nahrát firmware" - -msgid "Backup / Restore" -msgstr "Zálohovat / obnovit" - -msgid "Backup file list" -msgstr "Seznam souborů k zálohování" - -msgid "Bad address specified!" -msgstr "Zadána neplatná adresa!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Seznam souborů k zálohování lze nalézt níže. Sestává se z konfiguračních " -"souborů označených opkg, nezbyných systémových souborů a souborů " -"vyhovujících uživatelem určeným vzorům." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Přenosová rychlost" - -msgid "Bogus NX Domain Override" -msgstr "Přepíše falešnou hodnotu NX Domény" - -msgid "Bridge" -msgstr "Síťový most" - -msgid "Bridge interfaces" -msgstr "Síťové mosty" - -msgid "Bridge unit number" -msgstr "Číslo síťového mostu" - -msgid "Bring up on boot" -msgstr "Zapnout po startu" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s bezdrátový ovladač" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom modul BCM%04x 802.11 bezdrátový ovladač" - -msgid "Buffered" -msgstr "Bufferováno" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Tlačítka" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Vytížení CPU (%)" - -msgid "Cancel" -msgstr "Storno" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Řetěz" - -msgid "Changes" -msgstr "Změny" - -msgid "Changes applied." -msgstr "Změny aplikovány." - -msgid "Changes the administrator password for accessing the device" -msgstr "Změní administrátorské heslo pro přístup k zařízení" - -msgid "Channel" -msgstr "Kanál" - -msgid "Check" -msgstr "Kontrola" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Kontrolní součet" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Zóna firewallu přiřazená k tomuto rozhraní. Pro odstranění rozhraní z " -"přiřazené zóny vyberte volbu nespecifikovaná. Pro vytvoření nové " -"zóny a její následné přiřazení danému rozhraní vyplňte pole vytvořit." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Vyberte síť(ě), které chcete připojit k tomuto bezdrátovému rozhraní, nebo " -"vyplňte pole vytvořit a pojmenujte novou síť." - -msgid "Cipher" -msgstr "Šifra" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Pro stažení archivu tar s aktuální konfigurací stiskněte \"Vytvořit archiv" -"\". Pro obnovení továrního nastavení stiskněte \"Obnovit výchozí\" (možné " -"pouze s obrazy squashfs)." - -msgid "Client" -msgstr "Klient" - -msgid "Client ID to send when requesting DHCP" -msgstr "Klientské ID odesílané v DHCP požadavku" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Uzavírat neaktivní spojení po daném počtu sekund. Pro vypnutí časového " -"omezení použijte jako hodntu nulu" - -msgid "Close list..." -msgstr "Zavřít seznam..." - -msgid "Collecting data..." -msgstr "Probíhá sběr dat..." - -msgid "Command" -msgstr "Příkaz" - -msgid "Common Configuration" -msgstr "Společná nastavení" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Nastavení" - -msgid "Configuration applied." -msgstr "Nastavení uplatněno." - -msgid "Configuration files will be kept." -msgstr "Konfigurační soubory budou zachovány." - -msgid "Confirmation" -msgstr "Ověření" - -msgid "Connect" -msgstr "Připojit" - -msgid "Connected" -msgstr "Připojeno" - -msgid "Connection Limit" -msgstr "Omezení počtu připojení" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Připojení" - -msgid "Country" -msgstr "Země" - -msgid "Country Code" -msgstr "Kód země" - -msgid "Cover the following interface" -msgstr "Pokrýt následující rozhraní" - -msgid "Cover the following interfaces" -msgstr "Pokrýt následující rozhraní" - -msgid "Create / Assign firewall-zone" -msgstr "Vytvořit / přiřadit zónu firewallu" - -msgid "Create Interface" -msgstr "Vytvořit rozhraní" - -msgid "Create a bridge over multiple interfaces" -msgstr "Vytvořit síťový most přes více rozhraní" - -msgid "Critical" -msgstr "Kritické" - -msgid "Cron Log Level" -msgstr "Úroveň protokolování Cronu" - -msgid "Custom Interface" -msgstr "Vlastní rozhraní" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Upraví chování LED diod zařízení " -"pokud je to možné." - -msgid "DHCP Leases" -msgstr "DHCP výpůjčky" - -msgid "DHCP Server" -msgstr "DHCP server" - -msgid "DHCP and DNS" -msgstr "DHCP a DNS" - -msgid "DHCP client" -msgstr "DHCP klient" - -msgid "DHCP-Options" -msgstr "Volby DHCP" - -msgid "DHCPv6 Leases" -msgstr "DHCPv6 přidělené IP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Přeposílání DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Ladění" - -msgid "Default %d" -msgstr "Výchozí %d" - -msgid "Default gateway" -msgstr "Výchozí brána" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Výchozí stav" - -msgid "Define a name for this network." -msgstr "Jméno sítě." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Další možnosti DHCP, například \"6,192.168.2.1,192.168.2.2\", " -"které odkazuje na různé DNS servery pro klienty." - -msgid "Delete" -msgstr "Odstranit" - -msgid "Delete this network" -msgstr "Odstranit tuto síť" - -msgid "Description" -msgstr "Popis" - -msgid "Design" -msgstr "Vzhled" - -msgid "Destination" -msgstr "Cíl" - -msgid "Device" -msgstr "Zařízení" - -msgid "Device Configuration" -msgstr "Nastavení zařízení" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnostika" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Adresář" - -msgid "Disable" -msgstr "Zakázat" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Pro toto rozhraní zakázat DHCP." - -msgid "Disable DNS setup" -msgstr "Zakázat nastavení DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Zakázáno" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Vyřadit upstream RFC1918 odpovědi" - -msgid "Displaying only packages containing" -msgstr "Zobrazeny pouze balíčky obsahující" - -msgid "Distance Optimization" -msgstr "Optimalizace na vzdálenost" - -msgid "Distance to farthest network member in meters." -msgstr "Vzdálenost nejodlehlejšího člena sítě v metrech." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diverzita" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq je kombinace DHCP serveru a DNS " -"forwarderu pro použití v NAT firewallech" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Necachovat negativní odpovědi (např. pro neexistující domény)" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Nepřeposílat požadavky, které nemohou být zodpovězeny veřejnými jmennými " -"servery" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Nepřeposílat reverzní dotazy na místní sítě" - -msgid "Domain required" -msgstr "Vyžadována doména" - -msgid "Domain whitelist" -msgstr "Whitelist domén" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Nepřeposílat DNS dotazy bez DNS jména" - -msgid "Download and install package" -msgstr "Stáhnout a nainstalovat balíček" - -msgid "Download backup" -msgstr "Stáhnout zálohu" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instance Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear poskytuje SSH přístup a SCP server" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dynamický DHCP" - -msgid "Dynamic tunnel" -msgstr "Dynamický tunel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Pro klienty alokovat DHCP adresy dynamicky. Pokud je volba zakázána, budou " -"obsloužení pouze klienti se statickými výpůjčkami." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Metoda EAP" - -msgid "Edit" -msgstr "Upravit" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Upravit toto rozhraní" - -msgid "Edit this network" -msgstr "Upravit tuto síť" - -msgid "Emergency" -msgstr "Záchrana" - -msgid "Enable" -msgstr "Povolit" - -msgid "Enable STP" -msgstr "Povolit STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Povolit dynamickou aktualizaci koncového bodu HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Na PPP spoji povolit vyjednání IPv6" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Povolit průchod jumbo rámců" - -msgid "Enable NTP client" -msgstr "Povolit NTP klienta" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Povolit TFTP server" - -msgid "Enable VLAN functionality" -msgstr "Povolit funkcionalitu VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Povolit ARP učení a stárnutí" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Povolit tento přípojný bod" - -msgid "Enable this swap" -msgstr "Povolit tento swapovací oddíl" - -msgid "Enable/Disable" -msgstr "Povolit/Zakázat" - -msgid "Enabled" -msgstr "Povoleno" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Na tomto síťovém mostě povolit Spanning Tree Protocol" - -msgid "Encapsulation mode" -msgstr "Režim zapouzdření" - -msgid "Encryption" -msgstr "Šifrování" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Odstraňování..." - -msgid "Error" -msgstr "Chyba" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernetový adaptér" - -msgid "Ethernet Switch" -msgstr "Ethernetový switch" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Rozšířit hostitele" - -msgid "Expires" -msgstr "Vyprší" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Čas vypršení vypůjčené adresy, minimum jsou 2 minuty (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Externí protokolovací server" - -msgid "External system log server port" -msgstr "Port externího protokolovacího serveru" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Soubor" - -msgid "Filename of the boot image advertised to clients" -msgstr "Název souboru s bootovacím obrazem oznamovaný klientům" - -msgid "Filesystem" -msgstr "Souborový systém" - -msgid "Filter" -msgstr "Filtr" - -msgid "Filter private" -msgstr "Filtrovat soukromé" - -msgid "Filter useless" -msgstr "Filtrovat nepotřebné" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Vyhledat a připojit síť" - -msgid "Find package" -msgstr "Vyhledat balíček" - -msgid "Finish" -msgstr "Dokončit" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Nastavení firewallu" - -msgid "Firewall Status" -msgstr "Stav firewallu" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Verze firmwaru" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Pevný zdrojový port pro odchozí DNS dotazy" - -msgid "Flash Firmware" -msgstr "Nahrát firmware" - -msgid "Flash image..." -msgstr "Nahrát obraz..." - -msgid "Flash new firmware image" -msgstr "Nahrát nový obraz s firmwarem" - -msgid "Flash operations" -msgstr "Operace nad flash pamětí" - -msgid "Flashing..." -msgstr "Nahrávám..." - -msgid "Force" -msgstr "Vynutit" - -msgid "Force CCMP (AES)" -msgstr "Vynutit CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Na této síti vynutit DHCP i v případě detekování jiného serveru." - -msgid "Force TKIP" -msgstr "Vynutit TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Vynutit TKIP a CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Přeposílat DHCP provoz" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Přeposílat broadcasty" - -msgid "Forwarding mode" -msgstr "Režim přeposílání" - -msgid "Fragmentation Threshold" -msgstr "Hranice fragmentace" - -msgid "Frame Bursting" -msgstr "Dávkování rámců" - -msgid "Free" -msgstr "Volné" - -msgid "Free space" -msgstr "Volné místo" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Pouze GPRS" - -msgid "Gateway" -msgstr "Brána" - -msgid "Gateway ports" -msgstr "Porty brány" - -msgid "General Settings" -msgstr "Obecná nastavení" - -msgid "General Setup" -msgstr "Obecné nastavení" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Vytvorǐt archív" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Generic 802.11%s Wireless Controller" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Heslo nezměněno z důvodu nesouhlasu nového hesla a ověření hesla!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Přejít na nastavení hesla..." - -msgid "Go to relevant configuration page" -msgstr "Přejít na související konfigurační stránku" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Heslo HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Handler" - -msgid "Hang Up" -msgstr "Zavěsit" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Nastavení základních vlastností zařízení jako je časová zóna nebo název " -"zařízení." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Vložte veřejné klíče (na každý řadek jeden) pro ověřovaní SSH přístupu." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Hermes 802.11b bezdrátový ovladač" - -msgid "Hide ESSID" -msgstr "Skrývat ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Záznamy hostitelů" - -msgid "Host expiry timeout" -msgstr "Vypršení časového limitu hostitele" - -msgid "Host-IP or Network" -msgstr "" -"IP adresa hostitele nebo síť" - -msgid "Hostname" -msgstr "Jméno hostitele" - -msgid "Hostname to send when requesting DHCP" -msgstr "Jméno hostitele odesílané s DHCP požadavky" - -msgid "Hostnames" -msgstr "Jména hostitelů" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP adresy" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 firewall" - -msgid "IPv4 WAN Status" -msgstr "Stav IPv4 WAN" - -msgid "IPv4 address" -msgstr "IPv4 adresa" - -msgid "IPv4 and IPv6" -msgstr "IPv4 a IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4 broadcast" - -msgid "IPv4 gateway" -msgstr "IPv4 brána" - -msgid "IPv4 netmask" -msgstr "IPv4 maska sítě" - -msgid "IPv4 only" -msgstr "Pouze IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Délka IPv4 prefixu" - -msgid "IPv4-Address" -msgstr "IPv4 adresa" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 firewall" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Stav IPv6 WAN" - -msgid "IPv6 address" -msgstr "IPv6 adresa" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6 brána" - -msgid "IPv6 only" -msgstr "Pouze IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 prefix" - -msgid "IPv6 prefix length" -msgstr "Délka IPv6 prefixu" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6 adresa" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-over-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-over-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identita" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "Namísto pevného uzlu zařízení připojovat pomocí UUID" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "Namísto pevného uzlu zařízení připojovat pomocí názvu oddílu" - -msgid "If unchecked, no default route is configured" -msgstr "Pokud není povoleno, není nastaven žádný výchozí směrovací záznam" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Pokud není povoleno, oznámené adresy DNS serverů budou ignorovány" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Pokud máte nedostatek fyzické paměti, nepoužívaná data mohou být dočasně " -"odložena do odkládacího zařízení, což bude mít za důsledek větší množství " -"použitelné RAM. Vezměte na " -"vědomí, že odkládání dat je velice pomalý proces, stejně jako fakt, že " -"přístup na odkládací zařízení je řádově pomalejší, než přístup do paměti " -"RAM." - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "Ignorovat rozhraní" - -msgid "Ignore resolve file" -msgstr "Ignorovat resolv soubor" - -msgid "Image" -msgstr "Obraz" - -msgid "In" -msgstr "Dovnitř" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Časový limit nečinnosti" - -msgid "Inbound:" -msgstr "Příchozí:" - -msgid "Info" -msgstr "Info" - -msgid "Initscript" -msgstr "Initskript" - -msgid "Initscripts" -msgstr "Initskripty" - -msgid "Install" -msgstr "Instalovat" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instalovat balíček %q" - -msgid "Install protocol extensions..." -msgstr "Instalovat protokolové rozšíření..." - -msgid "Installed packages" -msgstr "Nainstalované balíčky" - -msgid "Interface" -msgstr "Rozhraní" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Konfigurace rozhraní" - -msgid "Interface Overview" -msgstr "Přehled rozhraní" - -msgid "Interface is reconnecting..." -msgstr "Rozhraní se znovu připojuje..." - -msgid "Interface is shutting down..." -msgstr "Rozhraní se vypíná..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Rozhraní není přítomné nebo je dosud nepřipojeno." - -msgid "Interface reconnected" -msgstr "Rozhraní bylo znovu připojeno" - -msgid "Interface shut down" -msgstr "Rozhraní bylo vypnuto" - -msgid "Interfaces" -msgstr "Rozhraní" - -msgid "Internal" -msgstr "" - -# Není co dodat. -msgid "Internal Server Error" -msgstr "Vnitřní chyba serveru" - -msgid "Invalid" -msgstr "Neplatná vstupní hodnota" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"Uvedené VLAN ID je neplatné! Jsou povolena pouze ID z rozsahu %d až %d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Uvedené VLAN ID je neplatné! Každé ID musí být jedinečné" - -msgid "Invalid username and/or password! Please try again." -msgstr "Špatné uživatelské jméno a/nebo heslo! Prosím zkuste to znovu." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Zdá se, že se pokoušíte zapsat obraz, který se nevejde do flash paměti. " -"Prosím ověřte soubor s obrazem!" - -msgid "JavaScript required!" -msgstr "Vyžadován JavaScript!" - -msgid "Join Network" -msgstr "Připojit k síti" - -msgid "Join Network: Wireless Scan" -msgstr "Připojit k síti: Vyhledání bezdrátových sítí" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Zachovat nastavení" - -msgid "Kernel Log" -msgstr "Záznam jádra" - -msgid "Kernel Version" -msgstr "Verze jádra" - -msgid "Key" -msgstr "Klíč" - -msgid "Key #%d" -msgstr "Klíč #%d" - -msgid "Kill" -msgstr "Zabít" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP Server" - -msgid "LCP echo failure threshold" -msgstr "LCP echo prahová hodnota selhání" - -msgid "LCP echo interval" -msgstr "LCP interval upozornění" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Popis" - -msgid "Language" -msgstr "Jazyk" - -msgid "Language and Style" -msgstr "Jazyk a styl" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Doba platnosti zápůjčky" - -msgid "Leasefile" -msgstr "Soubor zájpůjček" - -msgid "Leasetime remaining" -msgstr "Zbývající doba trvání zápůjčky" - -msgid "Leave empty to autodetect" -msgstr "Ponechte prázdné pro automatickou detekci" - -msgid "Leave empty to use the current WAN address" -msgstr "Ponecháte-li prázdné, použije stávající WAN adresu" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Odkaz na" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Seznam DNS serverů, na které " -"přeposílat požadavky" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Seznam domén, pro které povolit odpovědi podle RFC1918" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Seznam hostitelů, kteří udávají falešné hodnoty NX domén" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Poslouchat pouze na daném rozhraní, nebo pokud není specifikováno, na všech" - -msgid "Listening port for inbound DNS queries" -msgstr "Port pro příchozí dotazy DNS" - -msgid "Load" -msgstr "Zátěž" - -msgid "Load Average" -msgstr "Zátěž průměrná" - -msgid "Loading" -msgstr "Načítání" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Místní IPv4 adresa" - -msgid "Local IPv6 address" -msgstr "Místní IPv6 adresa" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Místní startup" - -msgid "Local Time" -msgstr "Místní čas" - -msgid "Local domain" -msgstr "Místní doména" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Specifikace místní domény. Jména shodná s touto doménou nikdy nebudou " -"přesměrována ani rozlušťována pomocí DHCP nebo souborů hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Přípona místní domény, připojená za názvy DHCP jmen a záznamů v souboru hosts" - -msgid "Local server" -msgstr "Místní server" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Lokalizovat jméno v závislosti na dotazující se podsíti, pokud bylo nalezeno " -"více IP adres" - -msgid "Localise queries" -msgstr "Lokalizační dotazy" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Úroveň logování" - -msgid "Log queries" -msgstr "Dotazy pro logování" - -msgid "Logging" -msgstr "Logování" - -msgid "Login" -msgstr "Přihlásit" - -msgid "Logout" -msgstr "Odhlásit" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Nejnižší zapůjčenou adresu použít jako offset síťové adresy." - -msgid "MAC-Address" -msgstr "MAC-Adresa" - -msgid "MAC-Address Filter" -msgstr "Filtr MAC adres" - -msgid "MAC-Filter" -msgstr "Filtr MAC" - -msgid "MAC-List" -msgstr "Seznam Mac" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Nejvyšší povolené množství aktivních DHCP zápůjček" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Nejvyšší povolené množství souběžných DNS dotazů" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Nejvyšší povolená velikost EDNS.0 UDP paketů" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Nejvyšší počet sekund čekání, než bude modem připraven" - -msgid "Maximum hold time" -msgstr "Maximální doba držení" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Maximální počet zapůjčených adres." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Paměť" - -msgid "Memory usage (%)" -msgstr "Využití paměti (%)" - -msgid "Metric" -msgstr "Metrika" - -msgid "Minimum hold time" -msgstr "Minimální čas zápůjčky" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Chybějící rozšíření protokolu %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mód" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Modemové zařízení" - -msgid "Modem init timeout" -msgstr "Časový limit inicializace modemu" - -msgid "Monitor" -msgstr "Sledování" - -msgid "Mount Entry" -msgstr "Připojit vstup" - -msgid "Mount Point" -msgstr "Přípojný bod" - -msgid "Mount Points" -msgstr "Přípojné body" - -msgid "Mount Points - Mount Entry" -msgstr "Přípojné body - vstupy" - -msgid "Mount Points - Swap Entry" -msgstr "Přípojné body - změna vstupu" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Přípojný bod určuje místo v souborovém systému, na kterém bude připojeno " -"paměťové zařízení" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Volby připojení" - -msgid "Mount point" -msgstr "Přípojný bod" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Připojené souborové systémy" - -msgid "Move down" -msgstr "Přesunout dolů" - -msgid "Move up" -msgstr "Přesunout nahoru" - -msgid "Multicast address" -msgstr "Adresa vícesměrového vysílání" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Kandidáti NTP serveru" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Název" - -msgid "Name of the new interface" -msgstr "Název nového rozhraní" - -msgid "Name of the new network" -msgstr "Název nové sítě" - -msgid "Navigation" -msgstr "Navigace" - -msgid "Netmask" -msgstr "Síťová maska" - -msgid "Network" -msgstr "Síť" - -msgid "Network Utilities" -msgstr "Síťové nástroje" - -msgid "Network boot image" -msgstr "Síťový bootovací obraz" - -msgid "Network without interfaces." -msgstr "Síť bez rozhraní." - -msgid "Next »" -msgstr "Další »" - -msgid "No DHCP Server configured for this interface" -msgstr "Pro toto rozhraní není nastaven žádný DHCP server" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Žádné řetězce v této tabulce" - -msgid "No files found" -msgstr "Nebyly nalezeny žádné soubory" - -msgid "No information available" -msgstr "Údaje nejsou k dispozici" - -msgid "No negative cache" -msgstr "Žádná negativní mezipaměť" - -msgid "No network configured on this device" -msgstr "Síť není nastavena na tomto zařízení" - -msgid "No network name specified" -msgstr "Neuvedeno jméno sítě" - -msgid "No package lists available" -msgstr "Seznam balíčků není k dispozici" - -msgid "No password set!" -msgstr "Žádné heslo!" - -msgid "No rules in this chain" -msgstr "Žádná pravidla v tomto řetězci" - -msgid "No zone assigned" -msgstr "Žádná zóna nepřiřazena" - -msgid "Noise" -msgstr "Šum" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Šum:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Žádný" - -msgid "Normal" -msgstr "Normální" - -msgid "Not Found" -msgstr "Nenalezeno" - -msgid "Not associated" -msgstr "Neasociováno" - -msgid "Not connected" -msgstr "Nepřipojeno" - -msgid "Note: Configuration files will be erased." -msgstr "Pozn: Konfigurační soubory budou vymazány." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Oznámení" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Konfigurace balíčků OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "Vypnutí prodlevy" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Na této stránce můžete nastavit síťová rozhraní. Můžete přemostit několik " -"rozhraní zaškrtnutím pole \"přemostit rozhraní\" a zápisem názvů rozhraní, " -"vzájemně oddělených mezerami. Také můžete použít VLAN zápis INTERFACE.VLANNR (např.: eth0.1)." - -msgid "On-State Delay" -msgstr "Zapnutí prodlevy" - -msgid "One of hostname or mac address must be specified!" -msgstr "Jedno jméno nebo mac adresa, musí být zadáno!" - -msgid "One or more fields contain invalid values!" -msgstr "Jedno nebo více polí obsahuje neplatné hodnoty!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Jedno nebo více požadovaných polí neobsahuje hodnotu!" - -msgid "Open list..." -msgstr "Otevřít seznam..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Volba změněna" - -msgid "Option removed" -msgstr "Volba odstraněna" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Možnosti" - -msgid "Other:" -msgstr "Ostatní:" - -msgid "Out" -msgstr "Ven" - -msgid "Outbound:" -msgstr "Odchozí:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Přepsat MAC adresu" - -msgid "Override MTU" -msgstr "Přepsat MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Přepsat bránu v DHCP odpovědích" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Přepsat síťovou masku, odesílanou klientům. Obvykle je spočítána podle " -"subsítě, která je obsluhována." - -msgid "Override the table used for internal routes" -msgstr "Přepsat tabulku, používanou pro vnitřní cesty" - -msgid "Overview" -msgstr "Přehled" - -msgid "Owner" -msgstr "Vlastník" - -msgid "PAP/CHAP password" -msgstr "Heslo PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Uživatelské jméno PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Zapouzdření PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Vyžadován balíček libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Seznamy balíčků jsou starší než 24 hodin" - -msgid "Package name" -msgstr "Název balíčku" - -msgid "Packets" -msgstr "Pakety" - -msgid "Part of zone %q" -msgstr "Část zóny %q" - -msgid "Password" -msgstr "Heslo" - -msgid "Password authentication" -msgstr "Autentizace heslem" - -msgid "Password of Private Key" -msgstr "Heslo privátního klíče" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Heslo bylo úspěšně změněno!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Cesta k certifikátu CA" - -msgid "Path to Client-Certificate" -msgstr "Cesta k certifikátu klienta" - -msgid "Path to Private Key" -msgstr "Cesta k privátnímu klíči" - -msgid "Path to executable which handles the button event" -msgstr "Cesta ke spustitelnému souboru, který obsluhuje událost tlačítka" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Špička:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Provést restart" - -msgid "Perform reset" -msgstr "Provést reset" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Fyzická rychlost:" - -msgid "Physical Settings" -msgstr "Fyzické nastavení" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Paketů" - -msgid "Please enter your username and password." -msgstr "Prosím vložte vaše uživatelské jméno a heslo." - -msgid "Policy" -msgstr "Politika" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Stav portu:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Po takovém množství LCP echo selhání předpokládám, že peer je mrtvý. " -"Použijte 0 pro ignorování chyb" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Zabraňuje komunikaci klient-klient" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Prism2/2.5/3 802.11b Wireless Controller" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Pokračovat" - -msgid "Processes" -msgstr "Procesy" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokol" - -msgid "Protocol family" -msgstr "Rodina protokolů" - -msgid "Protocol of the new interface" -msgstr "Protokol nového rozhraní" - -msgid "Protocol support is not installed" -msgstr "Podpora pro protokol není nainstalována" - -msgid "Provide NTP server" -msgstr "Poskytování NTP serveru" - -msgid "Provide new network" -msgstr "Poskytování nové sítě" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Kvalita" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Práh RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "RX Rate" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "RaLink 802.11%s Wireless Controller" - -msgid "Radius-Accounting-Port" -msgstr "Port pro Radius-Accounting" - -msgid "Radius-Accounting-Secret" -msgstr "Tajný klíč pro Radius-Accounting" - -msgid "Radius-Accounting-Server" -msgstr "Server Radius-Accounting" - -msgid "Radius-Authentication-Port" -msgstr "Výběr ověřování portů" - -msgid "Radius-Authentication-Secret" -msgstr "Tajný klíč pro Radius-Authentication" - -msgid "Radius-Authentication-Server" -msgstr "Server Radius-Authentication" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Přečtěte si /etc/ethers ke konfiguraci DHCP Serveru" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Opravdu odstranit toto rozhraní? Odstranění nelze vrátit zpět!\n" -"Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím " -"tohoto rozhraní." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Opravdu odstranit bezdrátovou síť? Odstranění nelze vrátit zpět!\n" -"Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím této " -"sítě." - -msgid "Really reset all changes?" -msgstr "Opravdu resetovat všechny změny?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Opravdu vypnout síť ?\n" -"Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím " -"tohoto rozhraní." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Opravdu vypnout rozhraní \"%s\" ?\n" -"Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím " -"tohoto rozhraní." - -msgid "Really switch protocol?" -msgstr "Opravdu prohodit protokol?" - -msgid "Realtime Connections" -msgstr "Připojení v reálném čase" - -msgid "Realtime Graphs" -msgstr "Grafy v reálném čase" - -msgid "Realtime Load" -msgstr "Zátěž v reálném čase" - -msgid "Realtime Traffic" -msgstr "Provoz v reálném čase" - -msgid "Realtime Wireless" -msgstr "Wireless v reálném čase" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Opětovné nastavení ochrany" - -msgid "Reboot" -msgstr "Reboot" - -msgid "Rebooting..." -msgstr "Rebootuji..." - -msgid "Reboots the operating system of your device" -msgstr "Rebootuje operační systém vašeho zařízení" - -msgid "Receive" -msgstr "Přijmout" - -msgid "Receiver Antenna" -msgstr "Přijímací anténa" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Přepojit toto rozhraní" - -msgid "Reconnecting interface" -msgstr "Přepojuji rozhraní" - -msgid "References" -msgstr "Reference" - -msgid "Relay" -msgstr "Přenos" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "Přenášet mezi sítěmi" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "Vzdálená IPv4 adresa" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Odstranit" - -msgid "Repeat scan" -msgstr "Opakovat skenování" - -msgid "Replace entry" -msgstr "Nahradit vstup" - -msgid "Replace wireless configuration" -msgstr "Nahradit bezdrátovou konfiguraci" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -# Charter je poskytovate -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Vyžadováno u některých ISP, např. Charter s DocSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Resetovat čítače" - -msgid "Reset to defaults" -msgstr "Obnovit na výchozí" - -msgid "Resolv and Hosts Files" -msgstr "Soubory Resolv a Hosts" - -msgid "Resolve file" -msgstr "Soubor resolve" - -msgid "Restart" -msgstr "Restart" - -msgid "Restart Firewall" -msgstr "Restartovat firewall" - -msgid "Restore backup" -msgstr "Obnovit zálohu" - -msgid "Reveal/hide password" -msgstr "Odhalit/skrýt heslo" - -msgid "Revert" -msgstr "Vrátit zpět" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Kořenový adresář souborů, přístupných přes TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Heslo routeru" - -msgid "Routes" -msgstr "Trasy" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Trasy určují, přes jaké rozhraní a bránu může být konkrétního hosta dosaženo." - -msgid "Run a filesystem check before mounting the device" -msgstr "Spustit kontrolu souborového systému před připojením zařízení" - -msgid "Run filesystem check" -msgstr "Spustit kontrolu souborového systému" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Přístup přes SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH klíče" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Uložit" - -msgid "Save & Apply" -msgstr "Uložit & použít" - -msgid "Save & Apply" -msgstr "Uložit & použít" - -msgid "Scan" -msgstr "Skenovat" - -msgid "Scheduled Tasks" -msgstr "Naplánované úlohy" - -msgid "Section added" -msgstr "Přidána sekce" - -msgid "Section removed" -msgstr "Sekce odebrána" - -msgid "See \"mount\" manpage for details" -msgstr "Podrobnosti viz manuálová stránka příkazu \"mount\"" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Odesílat LCP echo požadaveky každých x sekund, účinné pouze ve spojení s " -"prahem selhání." - -msgid "Separate Clients" -msgstr "Oddělovat klienty" - -msgid "Server Settings" -msgstr "Nastavení serveru" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Název služby" - -msgid "Service Type" -msgstr "Typ služby" - -msgid "Services" -msgstr "Služby" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Nastavit synchronizaci času" - -msgid "Setup DHCP Server" -msgstr "Nastavit DHCP server" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "Ukázat aktuální seznam záložních souborů" - -msgid "Shutdown this interface" -msgstr "Shodit toho rozhraní" - -msgid "Shutdown this network" -msgstr "Shodit tuto síť" - -msgid "Signal" -msgstr "Signál" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Signál:" - -msgid "Size" -msgstr "Velikost" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Přeskočit" - -msgid "Skip to content" -msgstr "Skočit na obsah" - -msgid "Skip to navigation" -msgstr "Skočit na navigaci" - -msgid "Slot time" -msgstr "Time sloty" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Některá pole obsahují neplatné hodnoty, nelze uložit!" - -msgid "Sorry, the object you requested was not found." -msgstr "Omlouváme se, ale požadovaný objekt nebyl nalezen." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Omlouváme se, na serveru došlo k neočekávané vyjímce." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Omlouváme se, ale v tomto zařízení není přítomná podpora pro upgrade " -"systému. Nový obraz firmwaru musí být zapsán ručně. Prosím, obraťte se na " -"wiki pro zařízení specifické instalační instrukce." - -msgid "Sort" -msgstr "Seřadit" - -msgid "Source" -msgstr "Zdroj" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Určuje port na kterém bude tato instance Dropbearu naslouchat" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Určuje množství neúspěšných ARP požadavků, po kterém je hostitel považován " -"za mrtvého" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "Určuje počet sekund, po kterém je hostitel považovám za mrtvého" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Zde nastavte soukromý šifrovací klíč." - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "Priorita spouštění" - -msgid "Startup" -msgstr "Po spuštění" - -msgid "Static IPv4 Routes" -msgstr "Statické IPv4 trasy" - -msgid "Static IPv6 Routes" -msgstr "Statické IPv6 trasy" - -msgid "Static Leases" -msgstr "Statické zápůjčky" - -msgid "Static Routes" -msgstr "Statické trasy" - -msgid "Static address" -msgstr "Statická adresa" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Statické zápůjčky se používají pro přiřazení fixních IP adres a symbolických " -"jmen DHCP klientům. Jsou také vyžadovány pro nedynamické konfigurace " -"rozhraní, kde jsou povoleni pouze hosté s odpovídajícím nastavením." - -msgid "Status" -msgstr "Stav" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "Striktní výběr" - -msgid "Submit" -msgstr "Odeslat" - -msgid "Suppress logging" -msgstr "Potlačit logování" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Vstupní bod" - -msgid "Switch" -msgstr "Směrovač" - -msgid "Switch %q" -msgstr "Směrovač číslo %q" - -msgid "Switch %q (%s)" -msgstr "Směrovač číslo %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Směrovací protokol" - -msgid "Sync with browser" -msgstr "Synchronizovat s prohlížečem" - -msgid "Synchronizing..." -msgstr "Synchronizuji..." - -msgid "System" -msgstr "Systém" - -msgid "System Log" -msgstr "Systémový log" - -msgid "System Properties" -msgstr "Vlastnosti systému" - -msgid "System log buffer size" -msgstr "Velikost bufferu systémového logu" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Nastavení TFTP" - -msgid "TFTP server root" -msgstr "Kořenový adresář TFTP serveru" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Rychlost TX" - -msgid "Table" -msgstr "" - -msgid "Target" -msgstr "Cíl" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Ukončit" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Sekce Nastavení zařízení pokrývá fyzické nastavení radiového " -"hardwaru jako kanál, vysílací výkon nebo výběr antény, které je sdíleno mezi " -"všemi bezdrátovými sítěmi (pokud hardware podporuje multi-SSID). Nastavení " -"konkrétní sítě jako šifrování, operační mód jsou seskupeny v sekci " -"Nastavení rozhraní." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Balíček libiwinfo-lua není nainstalován. Tato komponenta musí být " -"nainstalována, aby fungovalo nastavení bezdátové sítě!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "IPv6 prefix přidělený poskytovatelm většinou končí ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Povolené znaky jsou: A-Z, a-z, 0-9 a " -"_" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Soubor zařízení paměti nebo oddílu (např. " -"/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Souborový systém, který byl použit pro formátování paměti (napři. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Obraz flash byl nahrán. Prosím porovnejte níže uvedený checksum a velikost " -"souboru s originálním souborem pro zajištění integrity dat.
    Kliknutím " -"na \"Pokračovat\" spustíte proceduru flashování." - -msgid "The following changes have been committed" -msgstr "Následující změny byly provedeny" - -msgid "The following changes have been reverted" -msgstr "Následující změny byly vráceny" - -msgid "The following rules are currently active on this system." -msgstr "Následující pravidla jsou v nyní na tomto systému aktivní." - -msgid "The given network name is not unique" -msgstr "Zadané jméno sítě není jedinečné" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Tento hardware nepodporuje multi-SSID. Pokud budete pokračovat, existující " -"konfigurace bude nahrazena." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "Délka IPv4 prefixu v bitech, zbytek se používá v IPv6 adresách" - -msgid "The length of the IPv6 prefix in bits" -msgstr "Délka IPv6 prefixu v bitech" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Síťové porty tohoto zařízení mohou být kombinovány do několika VLANve kterých počítače mohou " -"komunikovat přímo mezi sebou. VLANse často používají na oddělení různých siťových částí. Většinou je " -"jeden port pro připojení k vyšší síti (Uplink) jako třeba internet a " -"zbývající porty pro místní síť." - -msgid "The selected protocol needs a device assigned" -msgstr "Vybraný protokol potřebuje mít přiřazeno zařízení" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Systém maže konfigurační oddíl, po skončení procesu bude automaticky " -"restartován." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Systém nyní nahrává firmware.
    NEVYPÍNEJTE ZAŘÍZENÍ!
    Počkejte " -"několik minut než se pokusíte znovu připojit. V záležitosti na vašem " -"nastavení, bude možná nutné obnovit adresu vašeho počítače, aby jste se " -"mohli znovu připojit." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "Nejsou žádné aktivní zápůjčky." - -msgid "There are no pending changes to apply!" -msgstr "Nejsou zde žádné nevyřízené změny k aplikaci!" - -msgid "There are no pending changes to revert!" -msgstr "Nejsou zde žádné nevyřízené změny k navrácení!" - -msgid "There are no pending changes!" -msgstr "Nejsou zde žádné nevyřízené změny!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Zatím zde není přiřazeno zařízení, prosím připojte nějaké v záložce " -"\"Fyzické nastavení\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Na tomto routeru není nastaveno heslo. Prosím, nastavte heslo uživatele root " -"tak, abyste ochránili webové rozhraní a mohli povolit SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Zde vidíte obsah souboru /etc/rc.local. Příkazy, které sem vložíte (před " -"příkaz 'exit 0') budou spuštěny na konci bootovacího procesu." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Toto je jediný DHCP v mistní síti" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Toto je systémový crontab, v němž můžete nastavit naplánované úlohy. " -"Podrobnosti naleznete v crontab(5)." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"V tomto seznamu vidíte přehled aktuálně běžících systémových procesů a " -"jejich stavy." - -msgid "This page allows the configuration of custom button actions" -msgstr "Na této stránce si můžete nastavit vlastní události tlačítek" - -msgid "This page gives an overview over currently active network connections." -msgstr "Tato stránka zobrazuje přehled aktivních síťových spojení." - -msgid "This section contains no values yet" -msgstr "Tato sekce zatím neobsahuje žádné hodnoty" - -msgid "Time Synchronization" -msgstr "Synchronizace času" - -msgid "Time Synchronization is not configured yet." -msgstr "Synchronizace času dosud není nakonfigurována." - -msgid "Timezone" -msgstr "Časové pásmo" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Zde můžete nahrát dříve vygenerovaný záložní archiv, pokud chcete obnovit " -"konfigurační soubory." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Dostupná celkem" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Provoz" - -msgid "Transfer" -msgstr "Přenos" - -msgid "Transmission Rate" -msgstr "Vysílací rychlost" - -msgid "Transmit" -msgstr "Přenos" - -msgid "Transmit Power" -msgstr "Vysílací výkon" - -msgid "Transmitter Antenna" -msgstr "Anténa vysílače" - -msgid "Trigger" -msgstr "Spouštění" - -msgid "Trigger Mode" -msgstr "Trigger mód" - -msgid "Tunnel ID" -msgstr "ID tunelu" - -msgid "Tunnel Interface" -msgstr "Rozhraní tunelu" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Tx-Power" - -msgid "Type" -msgstr "Typ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Pouze UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB zařízení" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Neznámý" - -msgid "Unknown Error, password not changed!" -msgstr "Neznámá chyba, heslo nebylo změněno!" - -msgid "Unmanaged" -msgstr "Nespravovaný" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Neuložené změny" - -msgid "Unsupported protocol type." -msgstr "Nepodporovaný typ protokolu." - -msgid "Update lists" -msgstr "Aktualizovat seznamy" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Nahrát obraz pro upgrade systému, jímž bude přepsán běžící firmware. " -"Zkontrolujte \"Keep settings\" za účelem udržení aktuální konfigurace " -"(vyžaduje obraz kompatabilního firmwaru)." - -msgid "Upload archive..." -msgstr "Nahrát archiv..." - -msgid "Uploaded File" -msgstr "Nahrát soubor" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Použít /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Použít DHCP bránu" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Pomocí ISO/IEC 3166 alpha2 kódů zemí." - -msgid "Use MTU on tunnel interface" -msgstr "Použít MTU na rozhraní tunelu" - -msgid "Use TTL on tunnel interface" -msgstr "Použít TTL na rozhraní tunelu" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Použít příznak broadcastu" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Použít vlastní DNS servery" - -msgid "Use default gateway" -msgstr "Použít výchozí bránu" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "Použít směrovací tabulku" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Použitím tlačítka Přidat přidáte novou zápůjčku (lease). MAC " -"adresa identifikuje počítač, IPv4 adresa určuje, jaká pevná " -"adresa bude použita. Hostname je přiřazeno jako symbolické jméno." - -msgid "Used" -msgstr "Použit" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Uživatelské jméno" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANy na %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANy na %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "VPN server" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Ověřit" - -msgid "Version" -msgstr "Verze" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP Open System" - -msgid "WEP Shared Key" -msgstr "Sdílený klíč WEP" - -msgid "WEP passphrase" -msgstr "WEP heslo" - -msgid "WMM Mode" -msgstr "WMM mód" - -msgid "WPA passphrase" -msgstr "WPA heslo" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Šifrování WPA vyžaduje nainstalovaný wpa_supplicant (pro klientský režim) " -"nebo hostapd (pro AP a ad-hoc režim)." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "Čekání na realizaci změn..." - -msgid "Waiting for command to complete..." -msgstr "Čekání na dokončení příkazu..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Varování" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Bezdrátová síť" - -msgid "Wireless Adapter" -msgstr "Bezdrátový adaptér" - -msgid "Wireless Network" -msgstr "Bezdrátová síť" - -msgid "Wireless Overview" -msgstr "Přehled bezdrátových sití" - -msgid "Wireless Security" -msgstr "Zabezpečení bezdrátové sítě" - -msgid "Wireless is disabled or not associated" -msgstr "Bezdrátová síť je vypnuta nebo nespojena" - -msgid "Wireless is restarting..." -msgstr "Probíhá restartování bezdrátové sítě..." - -msgid "Wireless network is disabled" -msgstr "Bezdrátová síť je zakázána" - -msgid "Wireless network is enabled" -msgstr "Bezdrátová síť je povolena" - -msgid "Wireless restarted" -msgstr "Bezdrátová síť restartována" - -msgid "Wireless shut down" -msgstr "Bezdrátová síť vypnuta" - -msgid "Write received DNS requests to syslog" -msgstr "Zapisovat přijaté požadavky DNS do systemového logu" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Zde můžete povolit nebo zakázat init skripty. Změny se projeví po restartu " -"zařízení.
    Varování: Pokud zakážete základní init skripty jako " -"\"network\", vaše zařízení se může stát nepřístupným!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Aby LuCI fungoval správně, musíte mít v prohlížeči povolený JavaScript." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "libovolný" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "přemostěný" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "vytvoří most přes vybraná rozhraní" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "zakázat" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expirované" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Soubor, ve kterém budou uloženy zadané DHCP výpůjčky (leases)" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "plný-duplex" - -msgid "half-duplex" -msgstr "poloviční-duplex" - -msgid "help" -msgstr "pomoc" - -msgid "hidden" -msgstr "skrytý" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "pokud cílem je síť" - -msgid "input" -msgstr "vstup" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "místní DNS soubor" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "ne" - -msgid "no link" -msgstr "žádné spojení" - -msgid "none" -msgstr "žádný" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "off" - -msgid "on" -msgstr "on" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "směrované" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "označený" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "neznámý" - -msgid "unlimited" -msgstr "neomezený" - -msgid "unspecified" -msgstr "nespecifikovaný" - -msgid "unspecified -or- create:" -msgstr "nespecifikovaný -nebo- vytvořit:" - -msgid "untagged" -msgstr "neoznačený" - -msgid "yes" -msgstr "ano" - -msgid "« Back" -msgstr "« Zpět" - -#~ msgid "Leasetime" -#~ msgstr "Doba trvání zápůjčky" - -#~ msgid "AR Support" -#~ msgstr "Podpora AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s bezdrátový ovladač" - -#~ msgid "Background Scan" -#~ msgstr "Vyhledávat na pozadí" - -#~ msgid "Compression" -#~ msgstr "Komprese" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Zakázat HW-Beacon časovač" - -#~ msgid "Do not send probe responses" -#~ msgstr "Neodpovídat na vyhledávání" - -#~ msgid "Fast Frames" -#~ msgstr "Rychlé rámce" - -#~ msgid "Maximum Rate" -#~ msgstr "Nejvyšší míra" - -#~ msgid "Minimum Rate" -#~ msgstr "Nejnižší hodnota" - -#~ msgid "Multicast Rate" -#~ msgstr "Hodnota vícesměrového vysílání" - -#~ msgid "Outdoor Channels" -#~ msgstr "Venkovní kanály" - -#~ msgid "Regulatory Domain" -#~ msgstr "Doména regulátora" - -#~ msgid "Separate WDS" -#~ msgstr "Oddělovat WDS" - -#~ msgid "Static WDS" -#~ msgstr "Statický WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo mód" - -#~ msgid "XR Support" -#~ msgstr "Podpora XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Pokud není zaškrtnuto, bude vytvořena dodatečná síť." - -#~ msgid "Join Network: Settings" -#~ msgstr "Připojit k síti: nastavení" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Port %d je neoznačený ve více VLAN!" - -#~ msgid "VLAN Interface" -#~ msgstr "Rozhraní VLAN" diff --git a/package/luci/modules/luci-base/po/de/base.po b/package/luci/modules/luci-base/po/de/base.po deleted file mode 100644 index eb9221f163..0000000000 --- a/package/luci/modules/luci-base/po/de/base.po +++ /dev/null @@ -1,4136 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2017-10-17 22:46+0200\n" -"Last-Translator: JoeSemler \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.4\n" -"Language-Team: \n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d Minuten Abschnitt, %d Sekunden Intervall)" - -msgid "(%s available)" -msgstr "(%s verfügbar)" - -msgid "(empty)" -msgstr "(leer)" - -msgid "(no interfaces attached)" -msgstr "(keine Schnittstellen)" - -msgid "-- Additional Field --" -msgstr "-- Zusätzliches Feld --" - -msgid "-- Please choose --" -msgstr "-- Bitte auswählen --" - -msgid "-- custom --" -msgstr "-- benutzerdefiniert --" - -msgid "-- match by device --" -msgstr "-- anhand Gerätedatei selektieren --" - -msgid "-- match by label --" -msgstr "-- anhand Label selektieren --" - -msgid "-- match by uuid --" -msgstr "-- UUID vergleichen --" - -msgid "1 Minute Load:" -msgstr "Systemlast (1 Minute):" - -msgid "15 Minute Load:" -msgstr "Systemlast (15 Minuten):" - -msgid "4-character hexadecimal ID" -msgstr "vierstellige hexadezimale ID" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Systemlast (5 Minuten):" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "sechstellige hexadezimale ID (ohne Doppelpunkte)" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "Maximales Timeout für Quelladressprüfungen (SA Query)" - -msgid "802.11w Association SA Query retry timeout" -msgstr "Wiederholungsintervall für Quelladressprüfungen (SA Query)" - -msgid "802.11w Management Frame Protection" -msgstr "802.11w: Schutz von Management-Frames aktivieren" - -msgid "802.11w maximum timeout" -msgstr "802.11w: Maximales Timeout" - -msgid "802.11w retry timeout" -msgstr "802.11w: Wiederholungsintervall" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS Abfrageport" - -msgid "DNS server port" -msgstr "DNS Serverport" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS-Server in der Reihenfolge der " -"Resolv-Datei abfragen" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Adresse" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netzmaske" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "IPv6 Host- oder Netzwerk-Addresse (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "IPv6-Suffix (hexadezimal)" - -msgid "LED Configuration" -msgstr "LED Konfiguration" - -msgid "LED Name" -msgstr "LED Name" - -msgid "MAC-Address" -msgstr "MAC-Adresse" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. Anzahl von DHCP-Leases" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. Größe von EDNS0-Paketen" - -msgid "Max. concurrent queries" -msgstr "Max. Anzahl gleichzeitiger Abfragen" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Grenzwert für ARP-Auflösungsversuche" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM Brücken" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Virtual Channel Identifier (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Virtual Path Identifier (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM Brücken exponieren in AAL5 gekapselten Ethernetverkehr als virtuelle " -"Linux Netzwerkschnittstellen welche z.B. in Verbindung mit DHCP oder PPP " -"genutzt werden können um sich in das Providernetzwerk einzuwählen." - -msgid "ATM device number" -msgstr "ATM Geräteindex" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Access Concentrator" - -msgid "Access Point" -msgstr "Access Point" - -msgid "Action" -msgstr "Aktion" - -msgid "Actions" -msgstr "Aktionen" - -msgid "Activate this network" -msgstr "Dieses Netzwerk aktivieren" - -msgid "Active IPv4-Routes" -msgstr "Aktive IPv4-Routen" - -msgid "Active IPv6-Routes" -msgstr "Aktive IPv6-Routen" - -msgid "Active Connections" -msgstr "Aktive Verbindungen" - -msgid "Active DHCP Leases" -msgstr "Aktive DHCP-Leases" - -msgid "Active DHCPv6 Leases" -msgstr "Aktive DHCPv6-Leases" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Hinzufügen" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Lokalen Domainsuffx an Namen aus der Hosts-Datei anhängen" - -msgid "Add new interface..." -msgstr "Neue Schnittstelle hinzufügen..." - -msgid "Additional Hosts files" -msgstr "Zusätzliche Hosts-Dateien" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresse" - -msgid "Address to access local relay bridge" -msgstr "Adresse der lokalen Relay-Brücke" - -msgid "Administration" -msgstr "Administration" - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alarm" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" -"IP-Adressen sequenziell vergeben, beginnend mit der kleinsten verfügbaren " -"Adresse" - -msgid "Allocate IP sequentially" -msgstr "IPs sequenziell vergeben" - -msgid "Allow SSH password authentication" -msgstr "Erlaube Anmeldung per Passwort" - -msgid "Allow all except listed" -msgstr "Alle außer gelistete erlauben" - -msgid "Allow listed only" -msgstr "Nur gelistete erlauben" - -msgid "Allow localhost" -msgstr "Erlaube localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Entfernten Hosts erlauben zu lokale SSH-Tunnel-Ports zu verbinden" - -msgid "Allow root logins with password" -msgstr "\"root\" Login mit Passwort aktivieren" - -msgid "Allow the root user to login with password" -msgstr "" -"Erlaubt es dem root Benutzer sich mit einem Passwort statt einem " -"Zertifikat einzuloggen" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Dies erlaubt DNS-Antworten im 127.0.0.0/8 Bereich der z.B. für RBL Dienste " -"genutzt wird" - -msgid "Allowed IPs" -msgstr "Erlaubte IP-Adressen" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "Immer Defaultrouter ankündigen" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "Annex B (alle Arten)" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "Annex J (alle Arten)" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "Annex M (alle Arten)" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" -"Kündigt im Netzwerk einen Defaultrouter an, auch wenn kein öffentlicher " -"Adressbereich verfügbar ist." - -msgid "Announced DNS domains" -msgstr "Angekündigte Suchdomains" - -msgid "Announced DNS servers" -msgstr "Angekündigte DNS Server" - -msgid "Anonymous Identity" -msgstr "Anonyme Identität" - -msgid "Anonymous Mount" -msgstr "automatische Mountpunkte" - -msgid "Anonymous Swap" -msgstr "automatische Swap-Aktivierung" - -msgid "Antenna 1" -msgstr "Antenne 1" - -msgid "Antenna 2" -msgstr "Antenne 2" - -msgid "Antenna Configuration" -msgstr "Antennenkonfiguration" - -msgid "Any zone" -msgstr "Beliebige Zone" - -msgid "Apply" -msgstr "Anwenden" - -msgid "Applying changes" -msgstr "Änderungen werden angewandt" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" -"Legt die Größe der dieser Schnittstelle zugewiesenen Partitionen der " -"öffentlichen IPv6-Präfixe fest." - -msgid "Assign interfaces..." -msgstr "Schnittstellen zuweisen..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" -"Der Schnittstelle zugewiesene Partitionen des Adressraums werden anhand " -"dieser hexadezimalen ID gewählt." - -msgid "Associated Stations" -msgstr "Assoziierte Clients" - -msgid "Auth Group" -msgstr "Berechtigungsgruppe" - -msgid "Authentication" -msgstr "Authentifizierung" - -msgid "Authentication Type" -msgstr "Authentifizierungstyp" - -msgid "Authoritative" -msgstr "Authoritativ" - -msgid "Authorization Required" -msgstr "Autorisierung benötigt" - -msgid "Auto Refresh" -msgstr "Automatisches Neuladen" - -msgid "Automatic" -msgstr "automatisch" - -msgid "Automatic Homenet (HNCP)" -msgstr "automatisches Homenet-Protokoll (HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "Dateisystem vor dem Einhängen automatisch auf Fehler prüfen" - -msgid "Automatically mount filesystems on hotplug" -msgstr "Unkonfigurierte Dateisysteme automatisch einhängen" - -msgid "Automatically mount swap on hotplug" -msgstr "Unkonfigurierte SWAP-Partitionen automatisch aktivieren" - -msgid "Automount Filesystem" -msgstr "Dateisystem automatisch einhängen" - -msgid "Automount Swap" -msgstr "SWAP automatisch aktivieren" - -msgid "Available" -msgstr "Verfügbar" - -msgid "Available packages" -msgstr "Verfügbare Pakete" - -msgid "Average:" -msgstr "Durchschnitt:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Zurück" - -msgid "Back to Overview" -msgstr "Zurück zur Übersicht" - -msgid "Back to configuration" -msgstr "Zurück zur Konfiguration" - -msgid "Back to overview" -msgstr "Zurück zur Übersicht" - -msgid "Back to scan results" -msgstr "Zurück zu den Scan-Ergebnissen" - -msgid "Backup / Flash Firmware" -msgstr "Backup / Firmware Update" - -msgid "Backup / Restore" -msgstr "Sichern / Wiederherstellen" - -msgid "Backup file list" -msgstr "Liste zu sichernder Dateien" - -msgid "Bad address specified!" -msgstr "Ungültige Adresse angegeben!" - -msgid "Band" -msgstr "Frequenztyp" - -msgid "Behind NAT" -msgstr "NAT" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Nachfolgend wird eine generierte Liste der zu sichernden Dateien angezeigt. " -"Sie enthält alle notwendigen Systemdateien sowie die von opkg als geändert " -"markierten Konfigurationsdateien. Des Weiteren sind die durch " -"benutzerdefinierte Dateiemuster betroffenen Dateien enthalten." - -msgid "Bind interface" -msgstr "An Schnittstelle binden" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" -"Nur auf angegebenen Schnittstellen reagieren, anstatt auf allen " -"Schnittstellen zu antworten." - -msgid "Bind the tunnel to this interface (optional)." -msgstr "Tunnelendpunkt an diese Schnittstelle binden (optional)" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Ungültige \"NX-Domain\" Antworten ignorieren" - -msgid "Bridge" -msgstr "Bridge" - -msgid "Bridge interfaces" -msgstr "Netzwerkbrücke" - -msgid "Bridge unit number" -msgstr "Geräteindex der Brücke" - -msgid "Bring up on boot" -msgstr "Während des Bootvorgangs starten" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s W-LAN Adapter" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 W-LAN Adapter" - -msgid "Buffered" -msgstr "Gepuffert" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Konfiguriert die distributionsspezifischen Paket-Repositories. Diese " -"Konfiguration wird bei Upgrades NICHT gesichert." - -msgid "Buttons" -msgstr "Knöpfe" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" -"CA-Zertifikat (wird beim ersten Verbindungsaufbau automatisch gespeichert " -"wenn leer). " - -msgid "CPU usage (%)" -msgstr "CPU-Nutzung (%)" - -msgid "Cancel" -msgstr "Abbrechen" - -msgid "Category" -msgstr "Kategorie" - -msgid "Chain" -msgstr "Kette" - -msgid "Changes" -msgstr "Änderungen" - -msgid "Changes applied." -msgstr "Änderungen angewendet." - -msgid "Changes the administrator password for accessing the device" -msgstr "Ändert das Administratorpasswort für den Zugriff auf dieses Gerät" - -msgid "Channel" -msgstr "Kanal" - -msgid "Check" -msgstr "Prüfen" - -msgid "Check fileystems before mount" -msgstr "Dateisysteme prüfen" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" -"Diese Option setzen um existierende Netzwerke auf dem Radio zu löschen." - -msgid "Checksum" -msgstr "Prüfsumme" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Ordnet dieser Schnittstelle eine Firewallzone zu. Den Wert " -"unspezifiziert wählen um die Schnittstelle von der Zone zu lösen " -"oder das erstellen Feld ausfüllen um eine neue Zone direkt " -"anzulegen und zuzuweisen." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Wählt die Netzwerke die dieser WLAN-Schnittstelle zugeordnet werden. Das " -"erstelle-Feld ausfüllen um ein neues Netzwerk zu erzeugen." - -msgid "Cipher" -msgstr "Verschlüsselungsalgorithmus" - -msgid "Cisco UDP encapsulation" -msgstr "Cisco UDP-Kapselung" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Zum Herunterladen der aktuellen Konfigurationsdateien als gepacktes Archiv " -"\"Sicherung erstellen\" drücken. \"Konfiguration zurücksetzen\" stellt den " -"Auslieferungszustand des Systems wieder her (nur möglich bei squashfs-" -"Images)." - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "Zu sendende Client-ID bei DHCP Anfragen" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Inaktive Verbindungen nach Ablauf dieser Zeit in Sekunden schließen (0 um " -"die Verbindung immer aufrecht zu erhalten)." - -msgid "Close list..." -msgstr "Schließe Liste..." - -msgid "Collecting data..." -msgstr "Sammle Daten..." - -msgid "Command" -msgstr "Befehl" - -msgid "Common Configuration" -msgstr "Allgemeine Konfiguration" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" -"Deaktiviert bestimmte EAPOL-Key-Retransmissionen um Key-Reinstallation " -"(KRACK) Angriffe auf Client-Seite zu erschweren. Diese Abhilfemaßnahme kann " -"Kompatibilitätsprobleme verursachen und die Zuverlässigkeit von " -"Schlüsselerneuerungen in ausgelasteten Umgebungen verringern." - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Configuration applied." -msgstr "Konfiguration angewendet." - -msgid "Configuration files will be kept." -msgstr "Konfigurationsdateien sichern" - -msgid "Confirmation" -msgstr "Bestätigung" - -msgid "Connect" -msgstr "Verbinden" - -msgid "Connected" -msgstr "Verbunden" - -msgid "Connection Limit" -msgstr "Verbindungslimit" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "TLS zwingend vorraussetzen und abbrechen wenn TLS fehlschlägt." - -msgid "Connections" -msgstr "Verbindungen" - -msgid "Country" -msgstr "Land" - -msgid "Country Code" -msgstr "Ländercode" - -msgid "Cover the following interface" -msgstr "Die folgende Schnittstelle abdecken" - -msgid "Cover the following interfaces" -msgstr "Die folgende Schnittstellen abdecken" - -msgid "Create / Assign firewall-zone" -msgstr "Firewallzone anlegen / zuweisen" - -msgid "Create Interface" -msgstr "Erzeuge Schnittstelle" - -msgid "Create a bridge over multiple interfaces" -msgstr "Erzeuge Netzwerkbrücke über mehrere Schnittstellen" - -msgid "Critical" -msgstr "Kritisch" - -msgid "Cron Log Level" -msgstr "Cron Protokolllevel" - -msgid "Custom Interface" -msgstr "benutzerdefinierte Schnittstelle" - -msgid "Custom delegated IPv6-prefix" -msgstr "Delegierter IPv6-Präfix" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"Selbst konfigurierte Paket-Repositories, z.B. private oder inoffizielle " -"Quellen. Diese Konfiguration wird by Upgrades gesichert." - -msgid "Custom feeds" -msgstr "Eigene Repositories" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "Passt das Verhalten der Geräte-LEDs an - wenn dies möglich ist." - -msgid "DHCP Leases" -msgstr "DHCP-Leases" - -msgid "DHCP Server" -msgstr "DHCP-Server" - -msgid "DHCP and DNS" -msgstr "DHCP und DNS" - -msgid "DHCP client" -msgstr "DHCP Client" - -msgid "DHCP-Options" -msgstr "DHCP-Optionen" - -msgid "DHCPv6 Leases" -msgstr "DHCPv6-Leases" - -msgid "DHCPv6 client" -msgstr "DHCPv6 Client" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS-Weiterleitungen" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "DNSSEC Signaturstatus prüfen" - -msgid "DPD Idle Timeout" -msgstr "DPD Inaktivitätstimeout" - -msgid "DS-Lite AFTR address" -msgstr "DS-Lite AFTR-Adresse" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "DSL Leitungsmodus" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "Datenrate" - -msgid "Debug" -msgstr "Debug" - -msgid "Default %d" -msgstr "Standard %d" - -msgid "Default gateway" -msgstr "Default Gateway" - -msgid "Default is stateless + stateful" -msgstr "Der Standardwert ist zustandslos und zustandsorientiert" - -msgid "Default route" -msgstr "Default Route" - -msgid "Default state" -msgstr "Ausgangszustand" - -msgid "Define a name for this network." -msgstr "Definiert einen Namen für dieses Netzwerk" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definiert zusätzliche DHCP-Optionen, z.B. \"6,192.168.2.1,192.168.2.2\" um einen anderen DNS-Server an Clients zu verteilen." - -msgid "Delete" -msgstr "Löschen" - -msgid "Delete this network" -msgstr "Dieses Netzwerk löschen" - -msgid "Description" -msgstr "Beschreibung" - -msgid "Design" -msgstr "Design" - -msgid "Destination" -msgstr "Ziel" - -msgid "Device" -msgstr "Gerät" - -msgid "Device Configuration" -msgstr "Gerätekonfiguration" - -msgid "Device is rebooting..." -msgstr "Das Gerät startet neu..." - -msgid "Device unreachable" -msgstr "Das Gerät ist nicht erreichbar" - -msgid "Diagnostics" -msgstr "Diagnosen" - -msgid "Dial number" -msgstr "Einwahlnummer" - -msgid "Directory" -msgstr "Verzeichnis" - -msgid "Disable" -msgstr "Deaktivieren" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"DHCP-Server auf " -"dieser Schnittstelle deaktivieren" - -msgid "Disable DNS setup" -msgstr "DNS-Verarbeitung deaktivieren" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Deaktiviert" - -msgid "Disabled (default)" -msgstr "Deaktiviert (Standard)" - -msgid "Discard upstream RFC1918 responses" -msgstr "Eingehende RFC1918-Antworten verwerfen" - -msgid "Displaying only packages containing" -msgstr "Nur Pakete mit folgendem Inhalt anzeigen" - -msgid "Distance Optimization" -msgstr "Distanzoptimierung" - -msgid "Distance to farthest network member in meters." -msgstr "Distanz zum am weitesten entfernten Funkpartner in Metern." - -msgid "Distribution feeds" -msgstr "Distributionsrepositories" - -msgid "Diversity" -msgstr "Diversität" - -# Nur für NAT-Firewalls? -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq ist ein kombinierter DHCP-Server und DNS-Forwarder für NAT " -"Router" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Negative Antworten nicht zwischenspeichern, z.B. bei nicht existierenden " -"Domains" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Keine Anfragen weiterleiten welche nicht durch öffentliche Server " -"beantwortet werden können" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Keine Rückwärtsauflösungen für lokale Netzwerke weiterleiten" - -msgid "Domain required" -msgstr "Anfragen nur mit Domain" - -msgid "Domain whitelist" -msgstr "Domain-Whitelist" - -msgid "Don't Fragment" -msgstr "Nicht fragmentieren" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "Anfragen ohne Domainnamen nicht weiterleiten" - -msgid "Download and install package" -msgstr "Paket herunterladen und installieren" - -msgid "Download backup" -msgstr "Backup herunterladen" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear Instanz" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Der SSH-Server ermöglicht Shell-Zugriff über das Netzwerk und bietet einen " -"integrierten SCP-Dienst." - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "Dynamisches DHCP" - -msgid "Dynamic tunnel" -msgstr "Dynamischer Tunnel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"DHCP Adressen dynamisch erzeugen. Wenn dies deaktiviert ist, werden nur " -"Clients mit konfigurierten statischen Leases bedient" - -msgid "EA-bits length" -msgstr "EA-Bitlänge" - -msgid "EAP-Method" -msgstr "EAP-Methode" - -msgid "Edit" -msgstr "Bearbeiten" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" -"Um die Syntaxfehler zu beheben, bitte die obige unformatierte Konfiguration " -"anpassen und \"Speichern\" klicken um die Seite neu zu laden." - -msgid "Edit this interface" -msgstr "Diese Schnittstelle bearbeiten" - -msgid "Edit this network" -msgstr "Dieses Netzwerk bearbeiten" - -msgid "Emergency" -msgstr "Notfall" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "Enable STP" -msgstr "STP aktivieren" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Dynamisches HE.net IP-Adress-Update aktivieren" - -msgid "Enable IPv6 negotiation" -msgstr "IPv6 anfordern" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Aushandeln von IPv6-Adressen auf der PPP-Verbindung aktivieren" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Aktiviere Jumbo Frame Durchleitung" - -msgid "Enable NTP client" -msgstr "Aktiviere NTP-Client" - -msgid "Enable Single DES" -msgstr "Single-DES aktivieren" - -msgid "Enable TFTP server" -msgstr "TFTP-Server aktivieren" - -msgid "Enable VLAN functionality" -msgstr "VLAN-Funktionalität aktivieren" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "WPS-via-Knopfdruck aktivieren, erfordert WPA(2)-PSK" - -#, fuzzy -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "Key Reinstallation (KRACK) Gegenmaßnahmen aktivieren " - -msgid "Enable learning and aging" -msgstr "Learning und Aging aktivieren" - -msgid "Enable mirroring of incoming packets" -msgstr "Port-Mirroring für eingehende Pakete aktivieren" - -msgid "Enable mirroring of outgoing packets" -msgstr "Port-Mirroring für ausgehende Pakete aktivieren" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "Das DF-Bit (Nicht fragmentieren) auf gekapselten Paketen setzen." - -msgid "Enable this mount" -msgstr "Diesen Mountpunkt aktivieren" - -msgid "Enable this swap" -msgstr "Diesen Auslagerungsspeicher aktivieren" - -msgid "Enable/Disable" -msgstr "Aktivieren/Deaktivieren" - -msgid "Enabled" -msgstr "Aktiviert" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" -"Aktiviert schnelles Roaming zwischen Access-Points des selben " -"Mobilitätsbereiches" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Aktiviert das Spanning Tree Protokoll auf dieser Netzwerkbrücke" - -msgid "Encapsulation mode" -msgstr "Kapselung" - -msgid "Encryption" -msgstr "Verschlüsselung" - -msgid "Endpoint Host" -msgstr "Entfernter Server" - -msgid "Endpoint Port" -msgstr "Entfernter Port" - -msgid "Erasing..." -msgstr "Lösche..." - -msgid "Error" -msgstr "Fehler" - -msgid "Errored seconds (ES)" -msgstr "Fehlersekunden (ES)" - -msgid "Ethernet Adapter" -msgstr "Netzwerkschnittstelle" - -msgid "Ethernet Switch" -msgstr "Netzwerk Switch" - -msgid "Exclude interfaces" -msgstr "Schnittstellen ausschließen" - -msgid "Expand hosts" -msgstr "Hosts vervollständigen" - -msgid "Expires" -msgstr "Verfällt" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Gültigkeitsdauer von vergebenen Adressen. Das Minimum sind 2 Minuten " -"(2m)." - -msgid "External" -msgstr "Extern" - -msgid "External R0 Key Holder List" -msgstr "Externe R0-Key-Holder-List" - -msgid "External R1 Key Holder List" -msgstr "Externe R1-Key-Holder-List" - -msgid "External system log server" -msgstr "Externer Protokollserver IP" - -msgid "External system log server port" -msgstr "Externer Protokollserver Port" - -msgid "External system log server protocol" -msgstr "Externes Protokollserver Protokoll" - -msgid "Extra SSH command options" -msgstr "Zusätzliche SSH-Kommando-Optionen" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Datei" - -msgid "Filename of the boot image advertised to clients" -msgstr "Dateiname des Boot-Images welches den Clients mitgeteilt wird." - -msgid "Filesystem" -msgstr "Dateisystem" - -msgid "Filter" -msgstr "Filter" - -msgid "Filter private" -msgstr "Private Anfragen filtern" - -msgid "Filter useless" -msgstr "Windowsanfragen filtern" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" -"Findet alle angeschlossenen Dateisysteme und SWAP-Partitionen und generiert " -"die Konfiguration mit passenden Standardwerten für alle gefundenen Geräte " -"neu." - -msgid "Find and join network" -msgstr "Suchen und Verbinden von Netzwerken" - -msgid "Find package" -msgstr "Paket suchen" - -msgid "Finish" -msgstr "Fertigstellen" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "Firewall-Markierung" - -msgid "Firewall Settings" -msgstr "Firewall Einstellungen" - -msgid "Firewall Status" -msgstr "Firewall-Status" - -msgid "Firmware File" -msgstr "Firmware-Datei" - -msgid "Firmware Version" -msgstr "Firmware Version" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Fester Port für ausgehende DNS-Anfragen" - -msgid "Flash Firmware" -msgstr "Firmware aktualisieren" - -msgid "Flash image..." -msgstr "Firmware aktualisieren..." - -msgid "Flash new firmware image" -msgstr "Neues Firmware Image schreiben" - -msgid "Flash operations" -msgstr "Flash-Operationen" - -msgid "Flashing..." -msgstr "Firmware wird installiert..." - -msgid "Force" -msgstr "Start erzwingen" - -msgid "Force CCMP (AES)" -msgstr "CCMP (AES) erzwingen" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Aktiviere DHCP-Server für dieses Netzwerk, selbst wenn ein anderer aktiver " -"Server erkannt wurde." - -msgid "Force TKIP" -msgstr "Erzwinge TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Erzwinge TKIP und CCMP (AES)" - -msgid "Force link" -msgstr "Erzwinge Verbindung" - -msgid "Force use of NAT-T" -msgstr "Benutzung von NAT-T erzwingen" - -msgid "Form token mismatch" -msgstr "Abweichendes Formular-Token" - -msgid "Forward DHCP traffic" -msgstr "DHCP Traffic weiterleiten" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "Fehlerkorrektursekunden (FECS)" - -msgid "Forward broadcast traffic" -msgstr "Broadcasts weiterleiten" - -msgid "Forwarding mode" -msgstr "Weiterleitungstyp" - -msgid "Fragmentation Threshold" -msgstr "Fragmentierungsschwelle" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Frei" - -msgid "Free space" -msgstr "Freier Platz" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" -"Weitere Informationen zu WireGuard-Schnittstellen und Peers unter wireguard.io." - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Nur GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway ports" -msgstr "Gateway-Ports" - -msgid "General Settings" -msgstr "Allgemeine Einstellungen" - -msgid "General Setup" -msgstr "Allgemeine Einstellungen" - -msgid "General options for opkg" -msgstr "Allgemeine Optionen für Opkg." - -msgid "Generate Config" -msgstr "Konfiguration generieren" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Sicherung erstellen" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Generischer 802.11%s W-LAN Adapter" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"Die angegebenen Passwörter stimmen nicht überein, das Systempasswort wurde " -"nicht geändert!" - -msgid "Global Settings" -msgstr "Globale Einstellungen" - -msgid "Global network options" -msgstr "Globale Netzwerkeinstellungen" - -msgid "Go to password configuration..." -msgstr "Zur Passwortkonfiguration..." - -msgid "Go to relevant configuration page" -msgstr "Gehe zur entsprechenden Konfigurationsseite" - -msgid "Group Password" -msgstr "Gruppenpasswort" - -msgid "Guest" -msgstr "Gast" - -msgid "HE.net password" -msgstr "HE.net Passwort" - -msgid "HE.net username" -msgstr "HE.net Benutzername" - -msgid "HT mode (802.11n)" -msgstr "HT-Modus (802.11n)" - -msgid "Handler" -msgstr "Handler" - -msgid "Hang Up" -msgstr "Auflegen" - -msgid "Header Error Code Errors (HEC)" -msgstr "Anzahl Header-Error-Code-Fehler (HEC)" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"An dieser Stelle können Grundeinstellungen des Systems wie Hostname oder " -"Zeitzone vorgenommen werden." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Hier können öffentliche SSH-Schlüssel reinkopiert werden (einer pro Zeile)." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Hermes 802.11b W-LAN Adapter" - -msgid "Hide ESSID" -msgstr "ESSID verstecken" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Host-Einträge" - -msgid "Host expiry timeout" -msgstr "Host Verfallsdatum" - -msgid "Host-IP or Network" -msgstr "Host-IP oder Netzwerk" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Hostname to send when requesting DHCP" -msgstr "Zu sendender Hostname bei DHCP Anfragen" - -msgid "Hostnames" -msgstr "Rechnernamen" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "IP-Adressen" - -msgid "IP address" -msgstr "IP-Adresse" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 Firewall" - -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN Status" - -msgid "IPv4 address" -msgstr "IPv4 Adresse" - -msgid "IPv4 and IPv6" -msgstr "IPv4 und IPv6" - -msgid "IPv4 assignment length" -msgstr "IPv4 Zuweisungslänge" - -msgid "IPv4 broadcast" -msgstr "IPv4 Broadcast" - -msgid "IPv4 gateway" -msgstr "IPv4 Gateway" - -msgid "IPv4 netmask" -msgstr "IPv4 Netzmaske" - -msgid "IPv4 only" -msgstr "nur IPv4" - -msgid "IPv4 prefix" -msgstr "IPv4 Bereich" - -msgid "IPv4 prefix length" -msgstr "Länge des IPv4 Präfix" - -msgid "IPv4-Address" -msgstr "IPv4-Adresse" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 Firewall" - -msgid "IPv6 Neighbours" -msgstr "IPv6 Nachbarn" - -msgid "IPv6 Settings" -msgstr "IPv6 Einstellungen" - -msgid "IPv6 ULA-Prefix" -msgstr "IPv6 ULA-Präfix" - -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN Status" - -msgid "IPv6 address" -msgstr "IPv6 Adresse" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "Zum lokalen Tunnelendpunkt delegierte IPv6-Adresse (optional)" - -msgid "IPv6 assignment hint" -msgstr "IPv6 Zuweisungshinweis" - -msgid "IPv6 assignment length" -msgstr "IPv6 Zuweisungslänge" - -msgid "IPv6 gateway" -msgstr "IPv6 Gateway" - -msgid "IPv6 only" -msgstr "nur IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 Präfix" - -msgid "IPv6 prefix length" -msgstr "Länge des IPv6 Präfix" - -msgid "IPv6 routed prefix" -msgstr "Gerouteter IPv6-Präfix" - -msgid "IPv6 suffix" -msgstr "IPv6 Endung" - -msgid "IPv6-Address" -msgstr "IPv6-Adresse" - -msgid "IPv6-PD" -msgstr "IPv6 Präfixdelegation (PD)" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-über-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-über-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identität" - -msgid "If checked, 1DES is enabled" -msgstr "Aktiviert die Benutzung von 1DES, wenn ausgewählt" - -msgid "If checked, encryption is disabled" -msgstr "Deaktiviert die Verschlüsselung, wenn ausgewählt" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Wenn angegeben, wird das Gerät anhand seiner UUID statt fester Gerätedatei " -"gemounted" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Wenn angegeben, wird das Gerät nach anhhand des Partitionslabels statt " -"fester Gerätedatei gemounted" - -msgid "If unchecked, no default route is configured" -msgstr "Wenn deaktiviert, wird keine Default-Route gesetzt" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Falls deaktiviert werden die zugewiesenen DNS-Server ignoriert" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Falls der Arbeitsspeicher des Routers nicht ausreicht, kann dieser nicht " -"benutzte Daten zeitweise auf einem SWAP-Laufwerk auslagern um so die " -"effektive Größe des Arbeitsspeichers zu erhöhen. Die Auslagerung der Daten " -"ist natürlich bedeutend langsamer als direkte Arbeitsspeicherzugriffe." - -msgid "Ignore /etc/hosts" -msgstr "Ignoriere /etc/hosts" - -msgid "Ignore interface" -msgstr "Schnittstelle ignorieren" - -msgid "Ignore resolve file" -msgstr "Resolv-Datei ignorieren" - -msgid "Image" -msgstr "Image" - -msgid "In" -msgstr "Ein" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" -"Um unauthorisierte Zugriffe auf das System zu verhindern, wurde dieser " -"Request blockiert. Auf \"Weiter\" klicken um zur vorherigen Seite " -"zurückzukehren." - -msgid "Inactivity timeout" -msgstr "Timeout bei Inaktivität" - -msgid "Inbound:" -msgstr "Eingehend:" - -msgid "Info" -msgstr "Info" - -msgid "Initscript" -msgstr "Startscript" - -msgid "Initscripts" -msgstr "Startscripte" - -msgid "Install" -msgstr "Installieren" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" -"Bitte \"iputils-traceroute6\" installieren um IPv6-Routenverfolgung nutzen " -"zu können" - -msgid "Install package %q" -msgstr "Installiere Paket %q" - -msgid "Install protocol extensions..." -msgstr "Installiere Protokoll-Erweiterungen" - -msgid "Installed packages" -msgstr "Installierte Pakete" - -msgid "Interface" -msgstr "Schnittstelle" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" -"Das Gerät der Schnittstelle %q wurde automatisch von %q auf %q geändert." - -msgid "Interface Configuration" -msgstr "Schnittstellenkonfiguration" - -msgid "Interface Overview" -msgstr "Schnittstellenübersicht" - -msgid "Interface is reconnecting..." -msgstr "Schnittstelle verbindet neu..." - -msgid "Interface is shutting down..." -msgstr "Schnittstelle fährt herunter..." - -msgid "Interface name" -msgstr "Schnittstellenname" - -msgid "Interface not present or not connected yet." -msgstr "Schnittstelle existiert nicht oder ist nicht verbunden." - -msgid "Interface reconnected" -msgstr "Schnittstelle neu verbunden" - -msgid "Interface shut down" -msgstr "Schnittstelle heruntergefahren" - -msgid "Interfaces" -msgstr "Schnittstellen" - -msgid "Internal" -msgstr "Intern" - -msgid "Internal Server Error" -msgstr "Interner Serverfehler" - -msgid "Invalid" -msgstr "Ungültige Eingabe" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "Ungültige VLAN ID angegeben! Nur IDs zwischen %d und %d sind erlaubt." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Ungültige VLAN ID angegeben! Die ID ist muß eindeutig sein!" - -msgid "Invalid username and/or password! Please try again." -msgstr "" -"Ungültiger Benutzername oder ungültiges Passwort! Bitte erneut versuchen. " - -msgid "Isolate Clients" -msgstr "Clients isolieren" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Das verwendete Image scheint zu groß für den internen Flash-Speicher zu " -"sein. Überprüfen Sie die Imagedatei!" - -msgid "JavaScript required!" -msgstr "JavaScript benötigt!" - -msgid "Join Network" -msgstr "Netzwerk beitreten" - -msgid "Join Network: Wireless Scan" -msgstr "Netzwerk beitreten: Suche nach Netzwerken" - -msgid "Joining Network: %q" -msgstr "Trete Netzwerk %q bei" - -msgid "Keep settings" -msgstr "Konfiguration behalten" - -msgid "Kernel Log" -msgstr "Kernelprotokoll" - -msgid "Kernel Version" -msgstr "Kernel Version" - -msgid "Key" -msgstr "Schlüssel" - -msgid "Key #%d" -msgstr "Schlüssel Nr. %d" - -msgid "Kill" -msgstr "Töten" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP Server" - -msgid "LCP echo failure threshold" -msgstr "LCP Echo Fehler Schwellenwert" - -msgid "LCP echo interval" -msgstr "LCP Echo Intervall" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Label" - -msgid "Language" -msgstr "Sprache" - -msgid "Language and Style" -msgstr "Sprache und Aussehen" - -msgid "Latency" -msgstr "Latenz" - -msgid "Leaf" -msgstr "Zweigstelle" - -msgid "Lease time" -msgstr "Laufzeit" - -msgid "Lease validity time" -msgstr "Lease-Gültigkeitsdauer" - -msgid "Leasefile" -msgstr "Leasedatei" - -msgid "Leasetime remaining" -msgstr "Verbleibende Gültigkeit" - -msgid "Leave empty to autodetect" -msgstr "Zur automatischen Erkennung leer lassen" - -msgid "Leave empty to use the current WAN address" -msgstr "Leer lassen um die aktuelle WAN-Adresse zu verwenden" - -msgid "Legend:" -msgstr "Legende:" - -msgid "Limit" -msgstr "Limit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" -"DNS-Dienste auf direkte lokale Subnetze beschränken um Missbrauch durch " -"Dritte zu verhindern." - -msgid "Limit listening to these interfaces, and loopback." -msgstr "Dienste auf die angegeben Schnittstellen plus Loopback beschränken." - -msgid "Line Attenuation (LATN)" -msgstr "Dämpfung (LATN)" - -msgid "Line Mode" -msgstr "Verbindungsmodus" - -msgid "Line State" -msgstr "Verbindungsstatus" - -msgid "Line Uptime" -msgstr "Verbindungsdauer" - -msgid "Link On" -msgstr "Verbindung hergestellt" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Liste von DNS-Servern an welche " -"Requests weitergeleitet werden" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "Liste der SSH Schlüssel zur Authentifikation" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Liste von Domains für welche RFC1918-Antworten erlaubt sind" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Liste von Servern die falsche \"NX Domain\" Antworten liefern" - -msgid "Listen Interfaces" -msgstr "Aktive Schnittstellen" - -msgid "Listen Port" -msgstr "Aktive Ports" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Nur auf die gegebene Schnittstelle reagieren, nutze alle wenn nicht " -"spezifiziert" - -msgid "Listening port for inbound DNS queries" -msgstr "Serverport für eingehende DNS Abfragen" - -msgid "Load" -msgstr "Last" - -msgid "Load Average" -msgstr "Durchschnittslast" - -msgid "Loading" -msgstr "Lade" - -msgid "Local IP address to assign" -msgstr "Lokale IP-Adresse" - -msgid "Local IPv4 address" -msgstr "Lokale IPv4 Adresse" - -msgid "Local IPv6 address" -msgstr "Lokale IPv6 Adresse" - -msgid "Local Service Only" -msgstr "Nur lokale Dienste" - -msgid "Local Startup" -msgstr "Lokales Startskript" - -msgid "Local Time" -msgstr "Lokale Zeit" - -msgid "Local domain" -msgstr "Lokale Domain" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Spezifiziert den lokalen Domainnamen. Anfragen für Hostnamen welche auf " -"diese Domain zutreffen werden nie weitergeleitet und ausschließlich aus DHCP-" -"Namen oder Hosts-Dateien aufgelöst" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Lokaler Domain-Suffix welcher an DHCP Namen und Host-Datei Einträge " -"angehangen wird" - -msgid "Local server" -msgstr "Lokaler Server" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Hostnamen je nach anfragendem Subnetz auflösen wenn mehrere IPs verfügbar " -"sind" - -msgid "Localise queries" -msgstr "Lokalisiere Anfragen" - -msgid "Locked to channel %s used by: %s" -msgstr "Festgelegt auf Kanal %s, verwendet durch: %s" - -msgid "Log output level" -msgstr "Protokolllevel" - -msgid "Log queries" -msgstr "Schreibe Abfragelog" - -msgid "Logging" -msgstr "Protokollierung" - -msgid "Login" -msgstr "Anmelden" - -msgid "Logout" -msgstr "Abmelden" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "Signalverlustsekunden (LOSS)" - -msgid "Lowest leased address as offset from the network address." -msgstr "Kleinste vergebene Adresse (Netzwerkadresse + x)" - -msgid "MAC-Address" -msgstr "MAC-Adresse" - -msgid "MAC-Address Filter" -msgstr "MAC-Adressfilter" - -msgid "MAC-Filter" -msgstr "MAC-Filter" - -msgid "MAC-List" -msgstr "MAC-Adressliste" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "Das Root-Dateisystem muss mit folgenden Kommandsos vorbereitet werden:" - -msgid "Manual" -msgstr "Manuell" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "Maximal erreichbare Datenrate (ATTNDR)" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Maximal zulässige Anzahl an gleichzeitigen DNS-Anfragen" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Maximal zulässige Größe von EDNS.0 UDP Paketen" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Maximale Zeit die gewartet wird bis das Modem bereit ist (in Sekunden)" - -msgid "Maximum hold time" -msgstr "Maximalzeit zum Halten der Verbindung" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"Die maximale Länge des Names ist auf 15 Zeichen beschränkt, abzüglich des " -"automatischen Protokoll- oder Bridge-Prefixes wie \"br-\" oder \"pppoe-\" " -"etc." - -msgid "Maximum number of leased addresses." -msgstr "Maximal zulässige Anzahl von vergeben DHCP-Adressen" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Hauptspeicher" - -msgid "Memory usage (%)" -msgstr "Speichernutzung (%)" - -msgid "Metric" -msgstr "Metrik" - -msgid "Minimum hold time" -msgstr "Minimalzeit zum Halten der Verbindung" - -msgid "Mirror monitor port" -msgstr "Spiegel-Monitor-Port" - -msgid "Mirror source port" -msgstr "Spiegel-Quell-Port" - -msgid "Missing protocol extension for proto %q" -msgstr "Erweiterung für Protokoll %q fehlt" - -msgid "Mobility Domain" -msgstr "Mobilitätsbereich" - -msgid "Mode" -msgstr "Modus" - -msgid "Model" -msgstr "Modell" - -msgid "Modem device" -msgstr "Modemgerät" - -msgid "Modem init timeout" -msgstr "Wartezeit für Modeminitialisierung" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Mount-Eintrag" - -msgid "Mount Point" -msgstr "Einhängepunkt" - -msgid "Mount Points" -msgstr "Einhängepunkte" - -msgid "Mount Points - Mount Entry" -msgstr "Mountpunkte - Mount-Eintrag" - -msgid "Mount Points - Swap Entry" -msgstr "Mountpunkte - Auslagerungsdatei" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Einhängepunkte bestimmen, an welcher Stelle des Dateisystems bestimmte " -"Laufwerke und Speicher zur Verwendung eingebunden werden." - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Mount-Optionen" - -msgid "Mount point" -msgstr "Mountpunkt" - -msgid "Mount swap not specifically configured" -msgstr "Unkonfigurierte SWAP-Partitionen aktivieren" - -msgid "Mounted file systems" -msgstr "Eingehängte Dateisysteme" - -msgid "Move down" -msgstr "Nach unten schieben" - -msgid "Move up" -msgstr "Nach oben schieben" - -msgid "Multicast address" -msgstr "Multicast-Adresse" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "NAT-T Modus" - -msgid "NAT64 Prefix" -msgstr "NAT64 Präfix" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "NTP Server Kandidaten" - -msgid "NTP sync time-out" -msgstr "NTP Synchronisierungstimeout" - -msgid "Name" -msgstr "Name" - -msgid "Name of the new interface" -msgstr "Name der neuen Schnittstelle" - -msgid "Name of the new network" -msgstr "Name des neuen Netzwerkes" - -msgid "Navigation" -msgstr "Navigation" - -msgid "Netmask" -msgstr "Netzmaske" - -msgid "Network" -msgstr "Netzwerk" - -msgid "Network Utilities" -msgstr "Netzwerk-Werkzeuge" - -msgid "Network boot image" -msgstr "Netzwerk-Boot-Image" - -msgid "Network without interfaces." -msgstr "Netzwerk ohne Schnittstellen." - -msgid "Next »" -msgstr "Weiter »" - -msgid "No DHCP Server configured for this interface" -msgstr "Kein DHCP Server auf dieser Schnittstelle eingerichtet" - -msgid "No NAT-T" -msgstr "Kein NAT-T" - -msgid "No chains in this table" -msgstr "Keine Ketten in dieser Tabelle" - -msgid "No files found" -msgstr "Keine Dateien gefunden" - -msgid "No information available" -msgstr "Keine Informationen verfügbar" - -msgid "No negative cache" -msgstr "Kein Negativ-Cache" - -msgid "No network configured on this device" -msgstr "Keine Netzwerke auf diesem Gerät konfiguriert" - -msgid "No network name specified" -msgstr "Netzwerkname nicht angegeben" - -# Ich glab das ist so richtiger -msgid "No package lists available" -msgstr "Es sind keine Paketlisten vorhanden" - -msgid "No password set!" -msgstr "Kein Passwort gesetzt!" - -msgid "No rules in this chain" -msgstr "Keine Regeln in dieser Kette" - -msgid "No zone assigned" -msgstr "Keine Zone zugewiesen" - -msgid "Noise" -msgstr "Rauschen" - -msgid "Noise Margin (SNR)" -msgstr "Signal-Rausch-Abstand (SNR)" - -msgid "Noise:" -msgstr "Noise:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "Nicht-präemptive CRC-Fehler (CRC_P)" - -msgid "Non-wildcard" -msgstr "An Schnittstellen binden" - -msgid "None" -msgstr "keine" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Nicht Gefunden" - -msgid "Not associated" -msgstr "Nicht assoziiert" - -msgid "Not connected" -msgstr "Nicht verbunden" - -msgid "Note: Configuration files will be erased." -msgstr "Warnung: Konfigurationsdateien werden gelöscht." - -msgid "Note: interface name length" -msgstr "Hinweis: Länge des Namens beachten" - -msgid "Notice" -msgstr "Notiz" - -msgid "Nslookup" -msgstr "DNS-Auflösung" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-Konfiguration" - -msgid "Obfuscated Group Password" -msgstr "Chiffriertes Gruppenpasswort" - -msgid "Obfuscated Password" -msgstr "Chiffriertes Passwort" - -msgid "Off-State Delay" -msgstr "Verzögerung für Ausschalt-Zustand" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"An dieser Stelle können die einzelnen Schnittstellen des Netzwerkes " -"konfiguriert werden. Es können mehrere Schnittstellen zu einer Brücke " -"zusammengefasst werden, indem diese durch Leerzeichen getrennt aufgezählt " -"werden und ein entsprechender Haken im Feld Netzwerkbrücke gesetzt wird. Es " -"können VLANs in der Notation SCHNITTSTELLE.VLANNR (z.B.: eth0.1) verwendet " -"werden." - -msgid "On-State Delay" -msgstr "Verzögerung für Anschalt-Zustand" - -msgid "One of hostname or mac address must be specified!" -msgstr "Es muss entweder ein Hostname oder eine MAC-Adresse angegeben werden!" - -msgid "One or more fields contain invalid values!" -msgstr "Ein oder mehrere Felder enthalten ungültige Werte!" - -msgid "One or more invalid/required values on tab" -msgstr "Ein oder mehrere ungültige/benötigte Werte auf Registerkarte" - -msgid "One or more required fields have no value!" -msgstr "Ein oder mehr benötigte Felder sind nicht ausgefüllt!" - -msgid "Open list..." -msgstr "Liste öffnen..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "Betriebsfrequenz" - -msgid "Option changed" -msgstr "Option geändert" - -msgid "Option removed" -msgstr "Option entfernt" - -msgid "Optional" -msgstr "Optional" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" -"Optional, angeben um den Standardserver (tic.sixxs.net) zu überschreiben" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" -"Optional, angeben wenn das SIXSS Konto mehr als einen Tunnel beinhaltet" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" -"Optional. 32-Bit-Marke für ausgehende, verschlüsselte Pakete. Wert in " -"hexadezimal mit führendem 0x angeben." - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" -"Optional. Mögliche Werte: 'eui64', 'random' oder Suffixes wie '::1' oder " -"'::1:2'. Wenn ein IPv6-Präfix (wie z.B. 'a:b:c:d::') von einem delegierendem " -"Server empfangen wird, kombiniert das System das Suffix mit dem Präfix um " -"eine IPv6-Adresse (z.B. 'a:b:c:d::1') für die Schnittstelle zu formen." - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" -"Optional. Base64-kodierter, vorhab ausgetauschter Schlüssel um eine weitere " -"Ebene an symmetrischer Verschlüsselung für erhöhte Sicherheit hinzuzufügen." - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "Optional. Routen für erlaubte IP-Adressen erzeugen." - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" -"Optional. Hostname oder Adresse des Verbindungspartners. Namen werden vor " -"dem Verbindungsaufbau aufgelöst." - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "Optional. Maximale MTU für Tunnelschnittstellen." - -msgid "Optional. Port of peer." -msgstr "Optional. Port-Nummer des Verbindungspartners." - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"Optional. Sekunden zwischen Keep-Alive-Nachrichten. Standardwert is 0 " -"(deaktiviert). Der empfohlene Wert für Geräte hinter einem NAT sind 25 " -"Sekunden." - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" -"Optional. Benutzte UDP-Port-Nummer für ausgehende und eingehende Pakete." - -msgid "Options" -msgstr "Optionen" - -msgid "Other:" -msgstr "Andere:" - -msgid "Out" -msgstr "Aus" - -msgid "Outbound:" -msgstr "Ausgehend:" - -msgid "Output Interface" -msgstr "Ausgehende Schnittstelle" - -msgid "Override MAC address" -msgstr "MAC-Adresse überschreiben" - -msgid "Override MTU" -msgstr "MTU-Wert überschreiben" - -msgid "Override TOS" -msgstr "TOS-Wert überschreiben" - -msgid "Override TTL" -msgstr "TTL-Wert überschreiben" - -msgid "Override default interface name" -msgstr "Standard Schnittstellennamen überschreiben" - -msgid "Override the gateway in DHCP responses" -msgstr "Gateway-Adresse in DHCP-Antworten überschreiben" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Überschreibt die Netzmaske welche an Clients geschickt wird. Normalerweise " -"wird diese vom bedienten Subnetz abgeleitet." - -msgid "Override the table used for internal routes" -msgstr "Überschreibt die benutzte Tabelle für interne Routen" - -msgid "Overview" -msgstr "Übersicht" - -msgid "Owner" -msgstr "Besitzer" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP Passwort" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP Benutzername" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Kapselung" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "PSID-Offset" - -msgid "PSID-bits length" -msgstr "PSID-Bitlänge" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Benötige das libiwinfo Paket!" - -msgid "Package lists are older than 24 hours" -msgstr "Die Paketlisten sind älter als 24 Stunden" - -msgid "Package name" -msgstr "Paketname" - -msgid "Packets" -msgstr "Pakete" - -msgid "Part of zone %q" -msgstr "Teil von Zone %q" - -msgid "Password" -msgstr "Passwort" - -msgid "Password authentication" -msgstr "Passwortanmeldung" - -msgid "Password of Private Key" -msgstr "Passwort des privaten Schlüssels" - -msgid "Password of inner Private Key" -msgstr "Password des inneren, privaten Schlüssels" - -msgid "Password successfully changed!" -msgstr "Passwort erfolgreich geändert!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Pfad zum CA-Zertifikat" - -msgid "Path to Client-Certificate" -msgstr "Pfad zu Client-Zertifikat" - -msgid "Path to Private Key" -msgstr "Pfad zum Privaten Schlüssel" - -msgid "Path to executable which handles the button event" -msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet" - -msgid "Path to inner CA-Certificate" -msgstr "Pfad zum inneren CA-Zertifikat" - -msgid "Path to inner Client-Certificate" -msgstr "Pfad zum inneren Client-Zertifikat" - -msgid "Path to inner Private Key" -msgstr "Pfad zum inneren, privaten Schlüssel" - -msgid "Peak:" -msgstr "Spitze:" - -msgid "Peer IP address to assign" -msgstr "Entfernte IP-Adresse" - -msgid "Peers" -msgstr "Verbindungspartner" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Neustart durchführen" - -msgid "Perform reset" -msgstr "Reset durchführen" - -msgid "Persistent Keep Alive" -msgstr "Persistentes Keep-Alive" - -msgid "Phy Rate:" -msgstr "Phy-Rate:" - -msgid "Physical Settings" -msgstr "Physikalische Einstellungen" - -msgid "Ping" -msgstr "Ping-Anfrage" - -msgid "Pkts." -msgstr "Pkte." - -msgid "Please enter your username and password." -msgstr "Bitte Benutzernamen und Passwort eingeben." - -msgid "Policy" -msgstr "Standardregel" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Port-Status:" - -msgid "Power Management Mode" -msgstr "Energiesparmodus" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "Präemptive CRC-Fehler (CRCP_P)" - -msgid "Prefer LTE" -msgstr "LTE bevorzugen" - -msgid "Prefer UMTS" -msgstr "UMTS bevorzugen" - -msgid "Prefix Delegated" -msgstr "Delegiertes Präfix" - -msgid "Preshared Key" -msgstr "Gemeinsamer Schlüssel" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Deklariere den Client als tot nach der angegebenen Anzahl von LCP Echo " -"Fehlschlägen, nutze den Wert 0 um Fehler zu ignorieren" - -msgid "Prevent listening on these interfaces." -msgstr "Verhindert das Binden an diese Schnittstellen" - -msgid "Prevents client-to-client communication" -msgstr "Unterbindet Client-Client-Verkehr" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Prism2/2.5/3 802.11b W-LAN Adapter" - -msgid "Private Key" -msgstr "Privater Schlüssel" - -msgid "Proceed" -msgstr "Fortfahren" - -msgid "Processes" -msgstr "Prozesse" - -msgid "Profile" -msgstr "Profil" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Protocol family" -msgstr "Protokollfamilie" - -msgid "Protocol of the new interface" -msgstr "Protokoll für die neue Schnittstelle" - -msgid "Protocol support is not installed" -msgstr "Protokollunterstützung ist nicht installiert" - -msgid "Provide NTP server" -msgstr "NTP-Server anbieten" - -msgid "Provide new network" -msgstr "Neues Netzwerk anbieten" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "Öffentlicher Schlüssel" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" -"Zu diesem Gerät geroutetes öffentliches Präfix zur Weiterverteilung an " -"Clients." - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Qualität" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS-Schwelle" - -# Ein / Aus, eingehend / ausgehend? -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "RX-Rate" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "RaLink 802.11%s W-LAN Adapter" - -msgid "Radius-Accounting-Port" -msgstr "Radius-Accounting-Port" - -msgid "Radius-Accounting-Secret" -msgstr "Radius-Accounting-Secret" - -msgid "Radius-Accounting-Server" -msgstr "Radius-Accounting-Server" - -msgid "Radius-Authentication-Port" -msgstr "Radius-Authentication-Port" - -msgid "Radius-Authentication-Secret" -msgstr "Radius-Authentication-Secret" - -msgid "Radius-Authentication-Server" -msgstr "Radius-Authentication-Server" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "Lese Informationen aus /etc/ethers um den DHCP-Server zu konfigurieren" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Diese Schnittstelle wirklich löschen? Der Schritt kann nicht rückgängig " -"gemacht werden!\n" -"Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese " -"Schnittstelle verbunden sind." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Dieses Drahtlosnetzwerk wirklich löschen? Der Schritt kann nicht rückgängig " -"gemacht werden!\n" -"Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über dieses Netzwerk " -"verbunden sind." - -msgid "Really reset all changes?" -msgstr "Sollen wirklich alle Änderungen verworfen werden?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Das Netzwerk wirklich herunterfahren?\n" -"Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese " -"Schnittstelle verbunden sind." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Die Schnitstelle \"%s\" wirklich herunterfahren?\n" -"Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese " -"Schnittstelle verbunden sind." - -msgid "Really switch protocol?" -msgstr "Protokoll wirklich wechseln?" - -msgid "Realtime Connections" -msgstr "Echtzeitverbindungen" - -msgid "Realtime Graphs" -msgstr "Echtzeit-Diagramme" - -msgid "Realtime Load" -msgstr "Echtzeitsystemlast" - -msgid "Realtime Traffic" -msgstr "Echtzeitverkehr" - -msgid "Realtime Wireless" -msgstr "Echtzeit-WLAN-Signal" - -msgid "Reassociation Deadline" -msgstr "Reassoziierungsfrist" - -msgid "Rebind protection" -msgstr "DNS-Rebind-Schutz" - -msgid "Reboot" -msgstr "Neu Starten" - -msgid "Rebooting..." -msgstr "Das System wird neu gestartet..." - -msgid "Reboots the operating system of your device" -msgstr "Startet das Betriebssystem des Routers neu." - -msgid "Receive" -msgstr "Empfangen" - -msgid "Receiver Antenna" -msgstr "Empfangsantenne" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "Empfohlen. IP-Adresse der WireGuard-Schnittstelle." - -msgid "Reconnect this interface" -msgstr "Diese Schnittstelle neu verbinden" - -msgid "Reconnecting interface" -msgstr "Verbinde Schnittstelle neu" - -msgid "References" -msgstr "Verweise" - -msgid "Relay" -msgstr "Relay" - -msgid "Relay Bridge" -msgstr "Relay-Brücke" - -msgid "Relay between networks" -msgstr "Zwischen folgenden Netzwerken weiterleiten" - -msgid "Relay bridge" -msgstr "Relay-Brücke" - -msgid "Remote IPv4 address" -msgstr "Entfernte IPv4-Adresse" - -msgid "Remote IPv4 address or FQDN" -msgstr "Entfernte IPv4-Adresse oder Hostname" - -msgid "Remove" -msgstr "Entfernen" - -msgid "Repeat scan" -msgstr "Scan wiederholen" - -msgid "Replace entry" -msgstr "Eintrag ersetzen" - -msgid "Replace wireless configuration" -msgstr "Drahtloskonfiguration ersetzen" - -msgid "Request IPv6-address" -msgstr "IPv6-Adresse anfordern" - -msgid "Request IPv6-prefix of length" -msgstr "IPv6-Präfix dieser Länge anfordern" - -msgid "Require TLS" -msgstr "TLS erfordern" - -msgid "Required" -msgstr "Benötigt" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" -"Wird von bestimmten Internet-Providern benötigt, z.B. Charter mit DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "Benötigt. Base64-kodierter privater Schlüssel für diese Schnittstelle" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" -"Benötigt. Base64-kodierter öffentlicher Schlüssel für diese Schnittstelle" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" -"Benötigt. IP-Adressen und Präfixe die der Verbindungspartner innerhalb des " -"Tunnels nutzen darf. Entspricht üblicherweise der Tunnel-IP-Adresse des " -"Verbindungspartners und den Netzwerken, die dieser durch den Tunnel routet." - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" -"Benötigt die \"volle\" Variante des wpad oder hostapd Paketes und " -"Unterstützung vom WLAN-Treiber." - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" -"Setzt DNSSEC-Unterstützung im DNS-Zielserver vorraus; überprüft ob " -"unsignierte Antworten wirklich von unsignierten Domains kommen." - -msgid "Reset" -msgstr "Zurücksetzen" - -msgid "Reset Counters" -msgstr "Zähler zurücksetzen" - -msgid "Reset to defaults" -msgstr "Auslieferungszustand wiederherstellen" - -msgid "Resolv and Hosts Files" -msgstr "Resolv- und Hosts-Dateien" - -msgid "Resolve file" -msgstr "Resolv-Datei" - -msgid "Restart" -msgstr "Neustarten" - -msgid "Restart Firewall" -msgstr "Firewall neu starten" - -msgid "Restore backup" -msgstr "Sicherung wiederherstellen" - -msgid "Reveal/hide password" -msgstr "Passwort zeigen/verstecken" - -msgid "Revert" -msgstr "Verwerfen" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Wurzelverzeichnis für über TFTP ausgelieferte Dateien " - -msgid "Root preparation" -msgstr "Wurzelverzeichnis erzeugen" - -msgid "Route Allowed IPs" -msgstr "Erlaubte IP-Addressen routen" - -msgid "Route type" -msgstr "Routen-Typ" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "Geroutetes IPv6-Präfix für nachgelagerte Schnittstellen" - -msgid "Router Advertisement-Service" -msgstr "Router-Advertisement-Dienst" - -msgid "Router Password" -msgstr "Routerpasswort" - -msgid "Routes" -msgstr "Routen" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Netzwerkrouten geben an, über welche Schnittstellen bestimmte Rechner oder " -"Netzwerke erreicht werden können" - -msgid "Run a filesystem check before mounting the device" -msgstr "Vor dem Einhängen Dateisystemprüfung starten " - -msgid "Run filesystem check" -msgstr "Dateisystemprüfung durchführen" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH-Zugriff" - -msgid "SSH server address" -msgstr "SSH-Server-Adresse" - -msgid "SSH server port" -msgstr "SSH-Server-Port" - -msgid "SSH username" -msgstr "SSH Benutzername" - -msgid "SSH-Keys" -msgstr "SSH-Schlüssel" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Speichern" - -msgid "Save & Apply" -msgstr "Speichern & Anwenden" - -msgid "Save & Apply" -msgstr "Speichern & Anwenden" - -msgid "Scan" -msgstr "Scan" - -msgid "Scheduled Tasks" -msgstr "Geplante Aufgaben" - -msgid "Section added" -msgstr "Sektion hinzugefügt" - -msgid "Section removed" -msgstr "Sektion entfernt" - -msgid "See \"mount\" manpage for details" -msgstr "Siehe \"mount\" Handbuch für Details" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Sende LCP Echo Anforderungen im angegebenem Interval in Sekunden, nur " -"effektiv in Verbindung mit einem Fehler-Schwellwert" - -msgid "Separate Clients" -msgstr "Clients isolieren" - -msgid "Server Settings" -msgstr "Servereinstellungen" - -msgid "Server password" -msgstr "Server Passwort" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" -"Server Passwort bzw. das tunnelspezifische Passwort wenn der Benutzername " -"eine Tunnel-ID beinhaltet." - -msgid "Server username" -msgstr "Server Benutzername" - -msgid "Service Name" -msgstr "Service-Name" - -msgid "Service Type" -msgstr "Service-Typ" - -msgid "Services" -msgstr "Dienste" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" -"Schnittstelleneigenschaften werden unabhängig vom Link gesetzt (ist die " -"Option ausgewählt, so werden die Hotplug-Skripte bei Änderung nicht " -"aufgerufen)" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Zeitsynchronisierung einrichten" - -msgid "Setup DHCP Server" -msgstr "DHCP Server einrichten" - -msgid "Severely Errored Seconds (SES)" -msgstr "schwerwiegende Fehlersekunden (SES)" - -msgid "Short GI" -msgstr "kurzes Guardintervall" - -msgid "Show current backup file list" -msgstr "Zeige aktuelle Liste der gesicherten Dateien" - -msgid "Shutdown this interface" -msgstr "Diese Schnittstelle herunterfahren" - -msgid "Shutdown this network" -msgstr "Dieses Netzwerk herunterfahren" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "Signaldämpfung (SATN)" - -msgid "Signal:" -msgstr "Signal:" - -msgid "Size" -msgstr "Größe" - -msgid "Size (.ipk)" -msgstr "Größe (.ipk)" - -msgid "Skip" -msgstr "Überspringen" - -msgid "Skip to content" -msgstr "Zum Inhalt springen" - -msgid "Skip to navigation" -msgstr "Zur Navigation springen" - -msgid "Slot time" -msgstr "Zeitslot" - -msgid "Software" -msgstr "Paketverwaltung" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Einige Felder sind ungültig, kann das Formular nicht speichern!" - -msgid "Sorry, the object you requested was not found." -msgstr "Entschuldigung, das anfgeforderte Objekt wurde nicht gefunden." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" -"Entschuldigung, auf dem Server ist ein unerwarteter Fehler aufgetreten." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Aufgrund des fehlenden sysupgrade-Supports muss die neue Firmware manuell " -"geflasht werden. Weitere Informationen sowie gerätespezifische " -"Installationsanleitungen entnehmen Sie bitte dem Wiki." - -msgid "Sort" -msgstr "Sortieren" - -msgid "Source" -msgstr "Quelle" - -msgid "Source routing" -msgstr "Quell-Routing" - -msgid "Specifies the button state to handle" -msgstr "Gibt den zu behandelnden Tastenstatus an" - -msgid "Specifies the directory the device is attached to" -msgstr "Nennt das Verzeichnis, an welches das Gerät angebunden ist" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Gibt den Server-Port dieser Dropbear-Instanz an" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Maximale Anzahl fehlgeschlagener ARP-Anfragen bis ein Host als nicht " -"verfügbar gilt" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Spezifiziert die maximale Anzahl an Sekunde nach denen Hoss als tot erachtet " -"werden" - -msgid "Specify a TOS (Type of Service)." -msgstr "Setzt einen spezifischen TOS (Type of Service) Wert" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" -"Setzt eine spezifische TTL (Time to Live) für gekapselte Pakete, anstatt der " -"standardmäßigen 64." - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" -"Setzt eine spezifische MTU (Maximum Transmission Unit) abweichend von den " -"standardmäßigen 1280 Bytes." - -msgid "Specify the secret encryption key here." -msgstr "Geben Sie hier den geheimen Netzwerkschlüssel an" - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "Startpriorität" - -msgid "Startup" -msgstr "Systemstart" - -msgid "Static IPv4 Routes" -msgstr "Statische IPv4 Routen" - -msgid "Static IPv6 Routes" -msgstr "Statische IPv6 Routen" - -msgid "Static Leases" -msgstr "Statische Einträge" - -msgid "Static Routes" -msgstr "Statische Routen" - -msgid "Static address" -msgstr "Statische Adresse" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Statische Leases werden genutzt um feste IP-Adressen und Hostnames zu DHCP-" -"Clients zuzuordnen. Sie werden auch für nicht-dynamische Schnittstellen-" -"Konfigurationen benötigt auf denen lediglich Hosts mit zugehörigem " -"statischem Lease-Eintrag bedient werden." - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Stoppen" - -msgid "Strict order" -msgstr "Strikte Reihenfolge" - -msgid "Submit" -msgstr "Absenden" - -msgid "Suppress logging" -msgstr "Logeinträge unterdrücken" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" -"Logeinträge für erfolgreiche Operationen dieser Protokolle unterdrücken" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Auslagerungsdatei" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "Switch %q" - -msgid "Switch %q (%s)" -msgstr "Switch %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" -"Der Switch %q hat eine unbekannte Struktur, die VLAN Settings könnten " -"unpassend sein." - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Wechsle Protokoll" - -msgid "Sync with browser" -msgstr "Mit Browser synchronisieren" - -msgid "Synchronizing..." -msgstr "Synchronisiere..." - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "Systemprotokoll" - -msgid "System Properties" -msgstr "Systemeigenschaften" - -msgid "System log buffer size" -msgstr "Größe des Systemprotokoll-Puffers" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP Einstellungen" - -msgid "TFTP server root" -msgstr "TFTP Wurzelverzeichnis" - -# same as RX -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "TX-Rate" - -msgid "Table" -msgstr "Tabelle" - -msgid "Target" -msgstr "Ziel" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Beenden" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Die Gerätekonfiguration deckt physikalische Einstellungen der WLAN-" -"Hardware wie Kanal, Sendestärke oder Antennenauswahl ab. Diese Einstellungen " -"werden von allen Netzwerken auf dem Gerät geteilt. Netzwerk-spezifische " -"Einstellungen wie Verschlüsselung oder Betriebsmodus sind in der " -"Schnittstellenkonfiguration gruppiert." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Das libiwinfo-lua Paket ist nicht installiert. Dieses Paket muss " -"für eine funktionierende WLAN-Konfiguration vorhanden sein!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" -"Die Updateprozedur für HE.net Tunnel-IP-Adrerssen hat sich geändert, statt " -"der numerischen User-ID muss nun der normale Benutzername angegeben werden." - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" -"Die IPv4-Adresse oder der volle Domain Name des entfernten Tunnel-Endpunktes." - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Vom Provider zugewiesener IPv6 Präfix, endet normalerweise mit ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Erlaubte Buchstaben sind: A-Z, a-z, 0-9 and _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" -"Die Konfigurationsdatei konnte aufgrund der folgenden Fehler nicht geladen " -"werden:" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "Die Gerätedatei des Speichers oder der Partition (z.B.: /dev/sda)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "Das Dateisystem mit dem der Speicher formatiert ist (z.B.: ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Das Firmware-Image wurde hochgeladen. Nachfolgend sind die Prüfsumme und " -"Dateigröße gelistet. Vergleichen Sie diese mit der Originaldatei um die " -"Integrität sicherzustellen.
    Klicken Sie \"Fortfahren\" um die Flash-" -"Prozedur zu starten." - -msgid "The following changes have been committed" -msgstr "Die folgenden Änderungen wurden angewendet" - -msgid "The following changes have been reverted" -msgstr "Die folgenden Änderungen wurden verworfen" - -msgid "The following rules are currently active on this system." -msgstr "Die folgenden Regeln sind zur Zeit auf dem System aktiv." - -msgid "The given network name is not unique" -msgstr "Der angebene Netzwerk-Name ist nicht eindeutig" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Die Hardware ist nicht Multi-SSID fähig und die existierende Konfiguration " -"wird beim Fortfahren ersetzt." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Länge des IPv4 Präfix in Bits, die übrigen Bits werden in der IPv6 Adresse " -"verwendet." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Länge des IPv6 Präfix in Bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "Die lokale IPv4-Adresse über die der Tunnel aufgebaut wird (optional)." - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Die Netzwerkschnittstellen dieses Geräts können zu verschienden VLANs zusammengefasst werden, in denen " -"Geräte miteinander direkt kommunizieren können. VLANs werden auch häufig dazu genutzt, um Netzwerke " -"voneinander zu trennen. So ist oftmals eine Schnittstelle als Uplink zu " -"einem größeren Netz, wie dem Internet, vorkonfiguriert und die anderen " -"Schnittstellen bilden ein VLAN für das lokale Netzwerk." - -msgid "The selected protocol needs a device assigned" -msgstr "Dem ausgewähltem Protokoll muss ein Gerät zugeordnet werden" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" -"Das mitgesendete Sicherheits-Token ist ungültig oder bereits abgelaufen!" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Die Einstellungen werden nun gelöscht! Anschließend wird ein Neustart des " -"Systems durchgeführt." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Der Flashvorgang läuft jetzt.
    SCHALTEN SIE NICHT DEN STROM AUS!
    " -"Warten Sie einige Minuten bis das Gerät wieder erreichbar ist. Je nach " -"Konfiguration ist es notwendig, dass Sie auf Ihrem Computer eine neue IP-" -"Adresse beziehen müssen um auf das Gerät zugreifen zu können." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" -"Der lokale Tunnel-Endpunkt ist hinter einem NAT. Standard ist deaktiviert, " -"nur auf AYIYA anwendbar." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Das hochgeladene Firmware-Image hat ein nicht unterstütztes Format. Stellen " -"Sie sicher dass Sie das generische Format für Ihre Platform gewählt haben." - -msgid "There are no active leases." -msgstr "Es gibt z.Z. keine aktiven Leases." - -msgid "There are no pending changes to apply!" -msgstr "Es gibt keine ausstehenen Änderungen anzuwenden!" - -msgid "There are no pending changes to revert!" -msgstr "Es gibt keine ausstehenen Änderungen zurückzusetzen!" - -msgid "There are no pending changes!" -msgstr "Es gibt keine ausstehenen Änderungen!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Es wurde noch kein Netzwerkgerät zugeordnet, bitte ein Gerät im " -"\"Physikalische Einstellungen\" Bereich anfügen" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Es ist kein Passwort auf diesem Router gesetzt. Bitte konfigurieren Sie ein " -"Root-Passwort um das Web-Interface zu schützen und SSH zu aktivieren." - -msgid "This IPv4 address of the relay" -msgstr "IPv4-Adresse des Relais" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"Diese Datei beinhaltet Zeilen in der Art 'server=/domain/1.2.3.4' oder " -"'server=1.2.3.4' für domainspezifische oder komplette Ziel-DNS-Server." - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Dies ist eine Liste von Shell-Glob-Mustern um Dateien und Verzeichnisse zu " -"selektieren welche während eines System-Upgrade gesichert werden sollen. " -"Modifizierte Dateien in /etc/config/ und bestimmte andere essenzielle " -"Konfigurationsdateien werden automatisch gesichert." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" -"Dies ist entweder der \"Update Key\" der für diesen Tunnel eingerichtet " -"wurde oder das normale Account-Passwort wenn kein separater Schlüssel " -"gesetzt wurde." - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Dies ist der Inhalt von /etc.rc.local. Hier kann man eigene Befehle einfügen " -"(vor 'exit 0'), die dann am Ende des Bootvorgangs ausgeführt werden." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"Dies ist die lokale, vom Broker zugewiesene IPv6-Adresse, sie endet " -"üblicherweise mit :2" - -msgid "" -"This is the only DHCP in the local network" -msgstr "Dies ist der einzige DHCP im lokalen Netz" - -msgid "This is the plain username for logging into the account" -msgstr "Das ist der normale Login-Name für den Account." - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" -"Dies ist das vom Tunnel-Broker geroutete öffentliche Präfix zur Verwendung " -"durch nachgelagerte Clients." - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Dies ist die System-Crontab in der geplante Aufgaben definiert werden können." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Dies ist üblicherweise die Adresse des nächstgelegenen PoPs betrieben durch " -"den Tunnelbroker" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Diese Tabelle gibt eine Übersicht über aktuell laufende Systemprozesse und " -"deren Status." - -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Diese Seite ermöglicht die Konfiguration benutzerdefinierter Tastenaktionen" - -msgid "This page gives an overview over currently active network connections." -msgstr "Diese Seite gibt eine Übersicht über aktive Netzwerkverbindungen." - -msgid "This section contains no values yet" -msgstr "Diese Sektion enthält noch keine Einträge" - -msgid "Time Synchronization" -msgstr "Zeitsynchronisation" - -msgid "Time Synchronization is not configured yet." -msgstr "Die Zeitsynchronisation wurde noch nicht konfiguriert." - -msgid "Timezone" -msgstr "Zeitzone" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Zum Wiederherstellen der Konfiguration kann hier ein bereits vorhandenes " -"Backup-Archiv hochgeladen werden." - -msgid "Tone" -msgstr "Ton" - -msgid "Total Available" -msgstr "Gesamt verfügbar" - -msgid "Traceroute" -msgstr "Routenverfolgung" - -# Ich bin der Meinung Traffic versteht jeder! Wenn der Begriff "deutscher" sein soll, würde ich "Datenmenge" angeben. Aber "Verkehrs" passt nicht! -msgid "Traffic" -msgstr "Traffic" - -msgid "Transfer" -msgstr "Transfer" - -msgid "Transmission Rate" -msgstr "Übertragungsrate" - -msgid "Transmit" -msgstr "Senden" - -msgid "Transmit Power" -msgstr "Sendeleistung" - -msgid "Transmitter Antenna" -msgstr "Sendeantenne" - -msgid "Trigger" -msgstr "Auslöser" - -msgid "Trigger Mode" -msgstr "Auslösmechanismus" - -msgid "Tunnel ID" -msgstr "Tunnel-ID" - -msgid "Tunnel Interface" -msgstr "Tunnelschnittstelle" - -msgid "Tunnel Link" -msgstr "Basisschnittstelle" - -msgid "Tunnel broker protocol" -msgstr "Tunnel-Boker-Protokoll" - -msgid "Tunnel setup server" -msgstr "Tunnel-Setup-Server" - -msgid "Tunnel type" -msgstr "Tunneltyp" - -msgid "Tx-Power" -msgstr "Sendestärke" - -msgid "Type" -msgstr "Typ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Nur UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB-Gerät" - -msgid "USB Ports" -msgstr "USB Anschlüsse" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Kann Anfrage nicht zustellen" - -msgid "Unavailable Seconds (UAS)" -msgstr "Nicht verfügbare Sekunden (UAS)" - -msgid "Unknown" -msgstr "Unbekannt" - -msgid "Unknown Error, password not changed!" -msgstr "Unbekannter Fehler, Passwort nicht geändert!" - -msgid "Unmanaged" -msgstr "Ignoriert" - -msgid "Unmount" -msgstr "Aushängen" - -msgid "Unsaved Changes" -msgstr "Ungespeicherte Änderungen" - -msgid "Unsupported protocol type." -msgstr "Nicht unterstützter Protokolltyp." - -msgid "Update lists" -msgstr "Listen aktualisieren" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Zum Ersetzen der aktuellen Firmware kann hier ein sysupgrade-Kompatibles " -"Image hochgeladen werden. Wenn die vorhandene Konfiguration auch nach dem " -"Update noch aktiv sein soll, aktivieren Sie \"Konfiguration behalten\"." - -msgid "Upload archive..." -msgstr "Backup wiederherstellen..." - -msgid "Uploaded File" -msgstr "hochgeladene Datei" - -msgid "Uptime" -msgstr "Laufzeit" - -msgid "Use /etc/ethers" -msgstr "Verwende /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Benutze DHCP-Gateway" - -msgid "Use DNS servers advertised by peer" -msgstr "Benutze die von der Gegenstelle zugewiesenen DNS-Server" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Muss ein ISO/IEC 3166 Länderkürzel sein." - -msgid "Use MTU on tunnel interface" -msgstr "Benutze MTU auf der Tunnelschnittstelle" - -msgid "Use TTL on tunnel interface" -msgstr "Benutze TTL auf der Tunnelschnittstelle" - -msgid "Use as external overlay (/overlay)" -msgstr "Als externes Overlay benutzen (/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "Als Root-Dateisystem benutzen (/)" - -msgid "Use broadcast flag" -msgstr "Benutze Broadcast-Flag" - -msgid "Use builtin IPv6-management" -msgstr "Eingebautes IPv6-Management nutzen" - -msgid "Use custom DNS servers" -msgstr "Benutze eigene DNS-Server" - -msgid "Use default gateway" -msgstr "Benutze Standard-Gateway" - -msgid "Use gateway metric" -msgstr "Benutze Gateway-Metrik" - -msgid "Use routing table" -msgstr "Benutze Routing-Tabelle" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Die Hinzufügen Schaltfläche fügt einen neuen Lease-Eintrag hinzu. " -"Die MAC-Adresse identifiziert den Host, die IPv4-Adresse " -"definiert die zu nutzende statische Adresse und der Hostname ist " -"der symbolische Name der dem Host zugewisen wird." - -msgid "Used" -msgstr "Belegt" - -msgid "Used Key Slot" -msgstr "Benutzer Schlüsselindex" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" -"Wird als RADIUS-NAS-ID und als 802.11r R0KH-ID verwendet. Nicht benötigt für " -"WPA(2)-PSK." - -msgid "User certificate (PEM encoded)" -msgstr "PEM-kodiertes Benutzerzertifikat" - -msgid "User key (PEM encoded)" -msgstr "PEM-kodierter Benutzerschlüssel" - -msgid "Username" -msgstr "Benutzername" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs auf %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs auf %q (%s)" - -msgid "VPN Local address" -msgstr "Lokale VPN-Adresse" - -msgid "VPN Local port" -msgstr "Lokaler VPN-Port" - -msgid "VPN Server" -msgstr "VPN-Server" - -msgid "VPN Server port" -msgstr "VPN-Server Port" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "SHA1-Hash des VPN-Server-Zertifikates" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "Hersteller" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Bei DHCP-Anfragen gesendete Vendor-Klasse" - -msgid "Verbose" -msgstr "Umfangreiche Ausgaben" - -msgid "Verbose logging by aiccu daemon" -msgstr "Aktiviert erweiterte Protokollierung durch den AICCU-Prozess" - -msgid "Verify" -msgstr "Verifizieren" - -msgid "Version" -msgstr "Version" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP Open System" - -msgid "WEP Shared Key" -msgstr "WEP Shared Key" - -msgid "WEP passphrase" -msgstr "WEP Schlüssel" - -msgid "WMM Mode" -msgstr "WMM Modus" - -msgid "WPA passphrase" -msgstr "WPA Schlüssel" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Verschlüsselung benötigt wpa_supplicant (für Client-Modus) oder hostapd " -"(für AP oder Ad-Hoc Modus)." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" -"Warte die angegebene Anzahl an Sekunden auf NTP-Synchronisierung, der Wert 0 " -"deaktiviert das Warten (optional)" - -msgid "Waiting for changes to be applied..." -msgstr "Änderungen werden angewandt..." - -msgid "Waiting for command to complete..." -msgstr "Der Befehl wird ausgeführt..." - -msgid "Waiting for device..." -msgstr "Warte auf Gerät..." - -msgid "Warning" -msgstr "Warnung" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" -"Achtung: Es gibt ungespeicherte Änderungen die bei einem Neustart verloren " -"gehen!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" -"Gibt an, ob eine IPv6-Default-Route durch den Tunnel etabliert werden soll" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "Gibt an, ob nur Pakete von delegierten Präfixen geroutet werden sollen" - -msgid "Width" -msgstr "Breite" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "WLAN" - -msgid "Wireless Adapter" -msgstr "WLAN-Gerät" - -msgid "Wireless Network" -msgstr "Drahtlosnetzwerk" - -msgid "Wireless Overview" -msgstr "Drahtlosübersicht" - -msgid "Wireless Security" -msgstr "WLAN-Verschlüsselung" - -msgid "Wireless is disabled or not associated" -msgstr "WLAN ist deaktiviert oder nicht assoziiert" - -msgid "Wireless is restarting..." -msgstr "WLAN startet neu..." - -msgid "Wireless network is disabled" -msgstr "Das WLAN-Netzwerk ist deaktiviert" - -msgid "Wireless network is enabled" -msgstr "Das WLAN-Netzwerk ist aktiviert" - -msgid "Wireless restarted" -msgstr "WLAN neu gestartet" - -msgid "Wireless shut down" -msgstr "WLAN heruntergefahren" - -msgid "Write received DNS requests to syslog" -msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben" - -msgid "Write system log to file" -msgstr "Systemprotokoll in Datei schreiben" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Hier können installierte Startscripte aktiviert oder deaktiviert werden. " -"Änderungen werden erst mit einem Geräteneustart angewendet.
    Warnung: Wenn essentialle Startscripte wie \"network\" deaktiviert " -"werden könnte das Gerät unerreichbar werden!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Im Browser muss JavaScript aktiviert sein oder LuCI wird nicht richtig " -"funktionieren." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "beliebig" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "bridged" - -msgid "create:" -msgstr "erstelle:" - -msgid "creates a bridge over specified interface(s)" -msgstr "überbrückt angegebene Schnittstelle(n)" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "deaktivieren" - -msgid "disabled" -msgstr "deaktiviert" - -msgid "expired" -msgstr "abgelaufen" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "Speicherort für vergebenen DHCP-Adressen" - -msgid "forward" -msgstr "weitergeleitet" - -msgid "full-duplex" -msgstr "Voll-Duplex" - -msgid "half-duplex" -msgstr "Halb-Duplex" - -msgid "help" -msgstr "Hilfe" - -msgid "hidden" -msgstr "versteckt" - -msgid "hybrid mode" -msgstr "hybrider Modus" - -msgid "if target is a network" -msgstr "falls Ziel ein Netzwerk ist" - -msgid "input" -msgstr "eingehend" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "Lokale DNS-Datei" - -msgid "minimum 1280, maximum 1480" -msgstr "Minimum 1280, Maximum 1480" - -msgid "minutes" -msgstr "Minuten" - -msgid "no" -msgstr "nein" - -msgid "no link" -msgstr "nicht verbunden" - -msgid "none" -msgstr "keine" - -msgid "not present" -msgstr "nicht vorhanden" - -msgid "off" -msgstr "aus" - -msgid "on" -msgstr "ein" - -msgid "open" -msgstr "offen" - -msgid "overlay" -msgstr "Overlay" - -msgid "relay mode" -msgstr "Relay-Modus" - -msgid "routed" -msgstr "routed" - -msgid "server mode" -msgstr "Server-Modus" - -msgid "stateful-only" -msgstr "nur zustandsorientiert" - -msgid "stateless" -msgstr "nur zustandlos" - -msgid "stateless + stateful" -msgstr "zustandslos + zustandsorientiert" - -msgid "tagged" -msgstr "tagged" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "Zeiteinheiten (TUs / 1024 ms) [1000-65535]" - -msgid "unknown" -msgstr "unbekannt" - -msgid "unlimited" -msgstr "unbegrenzt" - -msgid "unspecified" -msgstr "unspezifiziert" - -msgid "unspecified -or- create:" -msgstr "nichts auswählen -oder- erstellen:" - -msgid "untagged" -msgstr "untagged" - -msgid "yes" -msgstr "ja" - -msgid "« Back" -msgstr "« Zurück" - -#~ msgid "Leasetime" -#~ msgstr "Laufzeit" - -#~ msgid "Optional." -#~ msgstr "Optional" - -#~ msgid "AuthGroup" -#~ msgstr "Berechtigungsgruppe" - -#~ msgid "automatic" -#~ msgstr "automatisch" - -#~ msgid "AR Support" -#~ msgstr "AR-Unterstützung" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s W-LAN Adapter" - -#~ msgid "Background Scan" -#~ msgstr "Hintergrundscan" - -#~ msgid "Compression" -#~ msgstr "Kompression" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Deaktiviere Hardware-Beacon Zeitgeber" - -#~ msgid "Do not send probe responses" -#~ msgstr "Scan-Anforderungen nicht beantworten" - -#~ msgid "Fast Frames" -#~ msgstr "Schnelle Frames" - -#~ msgid "Maximum Rate" -#~ msgstr "Höchstübertragungsrate" - -#~ msgid "Minimum Rate" -#~ msgstr "Mindestübertragungsrate" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicastrate" - -#~ msgid "Outdoor Channels" -#~ msgstr "Funkkanal für den Ausseneinsatz" - -#~ msgid "Regulatory Domain" -#~ msgstr "Geltungsbereich (Regulatory Domain)" - -#~ msgid "Separate WDS" -#~ msgstr "Separates WDS" - -#~ msgid "Static WDS" -#~ msgstr "Statisches WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo Modus" - -#~ msgid "XR Support" -#~ msgstr "XR-Unterstützung" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "" -#~ "Erzeugt ein zusätzliches Netzwerk wenn diese Option nicht ausgewählt ist" - -#~ msgid "Join Network: Settings" -#~ msgstr "Netzwerk beitreten: Einstellungen" - -#~ msgid "CPU" -#~ msgstr "Prozessor" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Port %d ist untagged in mehreren VLANs!" - -#~ msgid "VLAN Interface" -#~ msgstr "VLAN Schnittstelle" diff --git a/package/luci/modules/luci-base/po/el/base.po b/package/luci/modules/luci-base/po/el/base.po deleted file mode 100644 index ca8240f457..0000000000 --- a/package/luci/modules/luci-base/po/el/base.po +++ /dev/null @@ -1,3937 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-03-31 15:35+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(παράθυρο %d λεπτών, διάστημα %d δευτερολέπτων)" - -msgid "(%s available)" -msgstr "(%s διαθέσιμα)" - -msgid "(empty)" -msgstr "(κενό)" - -msgid "(no interfaces attached)" -msgstr "(χωρίς προσαρτημένες διεπαφές)" - -msgid "-- Additional Field --" -msgstr "-- Επιπλέον Πεδίο --" - -msgid "-- Please choose --" -msgstr "-- Παρακαλώ επιλέξτε --" - -msgid "-- custom --" -msgstr "-- προσαρμοσμένο --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Φορτίο 1 λεπτού:" - -msgid "15 Minute Load:" -msgstr "Φορτίο 15 λεπτών:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Φορτίο 5 λεπτών:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "Θύρα ερωτημάτων DNS" - -msgid "DNS server port" -msgstr "Θύρα εξυπηρετητή DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Οι DNS εξυπηρετητές θα " -"ερωτηθούν με την σειρά εμφάνισης στο αρχείο resolvfile" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Διεύθυνση IPv4" - -msgid "IPv4-Gateway" -msgstr "Πύλη IPv4" - -msgid "IPv4-Netmask" -msgstr "Μάσκα IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Διεύθυνση IPv6 ή Δίκτυο " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "Πύλη IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Παραμετροποίηση LED" - -msgid "LED Name" -msgstr "Όνομα LED" - -msgid "MAC-Address" -msgstr "Διεύθυνση MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Μεγ. πλήθος DHCP leases" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Μεγ. μέγεθος πακέτου EDNS0" - -msgid "Max. concurrent queries" -msgstr "Μεγ. πλήθος ταυτόχρονων ερωτηματων" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Όριο επαναδοκιμών ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Γέφυρες ΑΤΜ" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Εικονικό Κανάλι Αναγνωριστή (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Εικονικό μονοπάτι Αναγνωριστή (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Οι γέφυρες ATM αποκαλύπτουν ενθυλακωμένες ethernet σε συνδέσεις AAL5 σαν " -"εικονικές διεπαφές δικτύου Linux, οι οποίες μπορούν να χρησιμοποιηθούν σε " -"συνδυασμό με DHCP ή PPP για την κλήση προς τον παροχέα δικτύου." - -msgid "ATM device number" -msgstr "Αριθμός συσκευής ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Συγκεντρωτής Πρόσβασης " - -msgid "Access Point" -msgstr "Σημείο Πρόσβασης" - -msgid "Action" -msgstr "Ενέργεια" - -msgid "Actions" -msgstr "Ενέργειες" - -msgid "Activate this network" -msgstr "Ενεργοποίηση αυτού του δικτύου" - -msgid "Active IPv4-Routes" -msgstr "" -"Ενεργές Διαδρομές IPv4" - -msgid "Active IPv6-Routes" -msgstr "" -"Ενεργές Διαδρομές IPv6" - -msgid "Active Connections" -msgstr "Ενεργές Συνδέσεις" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Προσθήκη" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Προσθήκη κατάληξης τοπικού τομέα για ονόματα εξυπηρετούμενα από αρχεία hosts " - -msgid "Add new interface..." -msgstr "Προσθήκη νέας διεπαφής..." - -msgid "Additional Hosts files" -msgstr "Επιπλέον αρχεία Hosts" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Διεύθυνση" - -msgid "Address to access local relay bridge" -msgstr "Διεύθυνση για πρόσβαση σε την τοπική γέφυρα αναμετάδοσης" - -msgid "Administration" -msgstr "Διαχείριση" - -msgid "Advanced Settings" -msgstr "Προχωρημένες Ρυθμίσεις" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Ειδοποίηση" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Επιτρέπει την εξουσιοδότηση SSH με " -"κωδικό πρόσβασης" - -msgid "Allow all except listed" -msgstr "Να επιτρέπονται όλες, εκτός από αυτές στη λίστα" - -msgid "Allow listed only" -msgstr "Να επιτρέπονται μόνο αυτές στην λίστα" - -msgid "Allow localhost" -msgstr "Να επιτρέπεται το localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Να επιτρέπεται σε απομακρυσμένα συστήματα να συνδέονται σε τοπικά " -"προωθημένες SSH θύρες" - -msgid "Allow root logins with password" -msgstr "Να επιτρέπονται root συνδέσεις με κωδικό πρόσβασης" - -msgid "Allow the root user to login with password" -msgstr "" -"Να επιτρέπεται στον χρήστη root να συνδέετε με κωδικό πρόσβασης" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Να επιτρέπονται απαντήσεις από ανώτερο επίπεδο εντός του εύρους 127.0.0.0/8, " -"π.χ. για υπηρεσίες RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Κεραία 1" - -msgid "Antenna 2" -msgstr "Κεραία 2" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "Οιαδήποτε ζώνη" - -msgid "Apply" -msgstr "Εφαρμογή" - -msgid "Applying changes" -msgstr "Εφαρμογή αλλαγών" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Συνδεδεμένοι Σταθμοί" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Εξουσιοδότηση" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Κύριος" - -msgid "Authorization Required" -msgstr "Απαιτείται Εξουσιοδότηση" - -msgid "Auto Refresh" -msgstr "Αυτόματη Ανανέωση" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Διαθέσιμο" - -msgid "Available packages" -msgstr "Διαθέσιμα πακέτα" - -msgid "Average:" -msgstr "Μέσος Όρος:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Πίσω" - -msgid "Back to Overview" -msgstr "Πίσω προς Επισκόπηση" - -msgid "Back to configuration" -msgstr "Πίσω προς παραμετροποίηση" - -msgid "Back to overview" -msgstr "Πίσω προς επισκόπηση" - -msgid "Back to scan results" -msgstr "Πίσω στα αποτελέσματα σάρωσης" - -msgid "Backup / Flash Firmware" -msgstr "Αντίγραφο ασφαλείας / Εγγραφή FLASH Υλικολογισμικό" - -msgid "Backup / Restore" -msgstr "Αποθήκευση / Επαναφορά Αντίγραφου Ασφαλείας" - -msgid "Backup file list" -msgstr "Λίστα αρχείων για αντίγραφο ασφαλείας" - -#, fuzzy -msgid "Bad address specified!" -msgstr "Μη έγκυρη διεύθυνση!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Παρακάτω είναι η προκαθορισμένη λίστα αρχείων για αντιγραφή ασφαλείας. " -"Αποτελείτε από αλλαγμένα αρχεία παραμετροποίησης σημαδεμένα από το opkg, " -"ουσιώδη βασικά αρχεία καθώς και καθορισμένα από το χρήστη μοτίβα αντιγράφων " -"ασφαλείας." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Ρυθμός δεδομένων" - -msgid "Bogus NX Domain Override" -msgstr "Παράκαμψη Ψευδούς Τομέα NX" - -msgid "Bridge" -msgstr "Γέφυρα" - -msgid "Bridge interfaces" -msgstr "Γεφύρωμα διεπαφών" - -msgid "Bridge unit number" -msgstr "Αριθμός μονάδας γέφυρας" - -msgid "Bring up on boot" -msgstr "Ανέβασμα κατά την εκκίνηση" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Κουμπιά" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Χρήση CPU (%)" - -msgid "Cancel" -msgstr "Ακύρωση" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Αλυσίδα" - -msgid "Changes" -msgstr "Αλλαγές" - -msgid "Changes applied." -msgstr "Αλλαγές εφαρμόστηκαν." - -msgid "Changes the administrator password for accessing the device" -msgstr "Αλλάζει τον κωδικό διαχειριστή για πρόσβαση στη συσκευή" - -msgid "Channel" -msgstr "Κανάλι" - -msgid "Check" -msgstr "Έλεγχος" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Άθροισμα Ελέγχου" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Επιλέξατε την ζώνη τείχους προστασίας που επιθυμητέ να αναθέσετε σε αυτήν " -"την διεπαφή. Επιλέξτε απροσδιόριστο για να αφαιρέσετε την διεπαφή " -"από την συσχετισμένη ζώνη ή συμπληρώστε το δημιουργία πεδίο για να " -"προσδιορίσετε μία νέα ζώνη και να προσαρτήσετε την διεπαφή σε αυτό." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Κλικ στο \"Δημιουργία αρχείου\" για να κατεβάσετε ένα tar αρχείο με τα " -"τρέχοντα αρχεία παραμετροποίησης. Για να επαναφέρετε το υλικολογισμικό στην " -"αρχική του κατάσταση, κάντε κλικ στο \"Εκτέλεσε επαναφορά\" (δυνατό μόνο σε " -"squashfs εικόνες)." - -msgid "Client" -msgstr "Πελάτης" - -msgid "Client ID to send when requesting DHCP" -msgstr "Αναγνωριστικό πελάτη που αποστέλλετε κατά την αίτηση DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Κλείσιμο, μη ενεργών συνδέσεων μετά το πέρας του ορισμένου αριθμού " -"δευτερολέπτων, χρησιμοποιήστε 0 για να εξακολουθούν να υφίστανται επ' " -"αόριστον" - -msgid "Close list..." -msgstr "Κλείσιμο λίστας..." - -msgid "Collecting data..." -msgstr "Συλλογή δεδομένων..." - -msgid "Command" -msgstr "Εντολή" - -msgid "Common Configuration" -msgstr "Κοινή Παραμετροποίηση" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Παραμετροποίηση" - -msgid "Configuration applied." -msgstr "Η Παραμετροποίηση εφαρμόστηκε." - -msgid "Configuration files will be kept." -msgstr "Τα αρχεία παραμετροποίησης θα διατηρηθούν." - -msgid "Confirmation" -msgstr "Επιβεβαίωση" - -msgid "Connect" -msgstr "Σύνδεση" - -msgid "Connected" -msgstr "Συνδεδεμένος" - -msgid "Connection Limit" -msgstr "Όριο Συνδέσεων" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Συνδέσεις" - -msgid "Country" -msgstr "Χώρα" - -msgid "Country Code" -msgstr "Κωδικός Χώρας" - -msgid "Cover the following interface" -msgstr "Κάλυψη της ακόλουθης διεπαφής" - -msgid "Cover the following interfaces" -msgstr "Κάλυψη των ακόλουθων διεπαφών" - -msgid "Create / Assign firewall-zone" -msgstr "Δημιουργία / Ανάθεση ζώνης τείχους προστασίας" - -msgid "Create Interface" -msgstr "Δημιουργία Διεπαφής" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "Επίπεδο Καταγραφής Cron" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Ρυθμίζει, αν είναι δυνατόν, την συμπεριφορά των LED της συσκευής." - -msgid "DHCP Leases" -msgstr "DHCP Leases" - -msgid "DHCP Server" -msgstr "Εξυπηρετητής DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP και DNS" - -msgid "DHCP client" -msgstr "Πελάτης DHCP" - -msgid "DHCP-Options" -msgstr "Επιλογές DHCP" - -msgid "DHCPv6 Leases" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Προωθήσεις DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Αποσφαλμάτωση" - -msgid "Default %d" -msgstr "Προεπιλογή %d" - -msgid "Default gateway" -msgstr "Προεπιλεγμένη πύλη" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Προεπιλεγμένη κατάσταση" - -msgid "Define a name for this network." -msgstr "Ορίστε ένα όνομα για αυτό το δίκτυο." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Ορίστε επιπλέον επιλογές DHCP, που διαφημίζουν διαφορετικούς εξυπηρετητές " -"DNS στους πελάτες, για παράδειγμα \"6,192.168.2.1,192.168.2.2\"." - -msgid "Delete" -msgstr "Διαγραφή" - -msgid "Delete this network" -msgstr "Διαγραφή αυτού του δικτύου" - -msgid "Description" -msgstr "Περιγραφή" - -msgid "Design" -msgstr "Εμφάνιση" - -msgid "Destination" -msgstr "Προορισμός" - -msgid "Device" -msgstr "Συσκευή" - -msgid "Device Configuration" -msgstr "Παραμετροποίηση Συσκευής" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Διαγνωστικά" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Κατάλογος" - -msgid "Disable" -msgstr "Απενεργοποίηση" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Απενεργοποίηση DHCP για αυτή τη διεπαφή." - -msgid "Disable DNS setup" -msgstr "Απενεργοποίηση ρυθμίσεων DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Απενεργοποιημένο" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Αγνόησε τις απαντήσεις ανοδικής ροής RFC1918" - -msgid "Displaying only packages containing" -msgstr "Εμφάνιση μόνο πακέτων που περιέχουν" - -msgid "Distance Optimization" -msgstr "Βελτιστοποίηση Απόστασης" - -msgid "Distance to farthest network member in meters." -msgstr "Απόσταση σε μέτρα από το πιο απομακρυσμένο μέλος του δικτύου." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Διαφορική Λήψη" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Ο Dnsmasq είναι ένας συνδυασμός εξυπηρετητή DHCP και προωθητήDNS για τείχη προστασίας NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Να μην αποθηκεύονται στη λανθάνουσα μνήμη οι αρνητικές απαντήσεις, π.χ. για " -"μη υπαρκτούς τομείς." - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Να μην προωθούνται αιτήματα τα οποία δεν μπορούν να απαντηθούν από δημόσιους " -"εξυπηρετητές ονομάτων" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Απαίτηση για όνομα τομέα" - -msgid "Domain whitelist" -msgstr "Λευκή λίστα τομέων" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Να μην προωθούνται ερωτήματα DNS " -"χωρίς όνομα τομέα DNS" - -msgid "Download and install package" -msgstr "Κατέβασμα και εγκατάσταση πακέτου" - -msgid "Download backup" -msgstr "Κατέβασμα αντιγράφου ασφαλείας" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Το Dropbear προσφέρει πρόσβαση σε SSH " -"κέλυφος μέσω δικτύου και έναν ενσωματωμένο εξυπηρετητή SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Δυναμικό DHCP" - -msgid "Dynamic tunnel" -msgstr "Δυναμικό τούνελ" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Δυναμική απόδοση DHCP διευθύνσεων στους πελάτες. Σε περίπτωση " -"απενεργοποίησης, μόνο πελάτες με στατικα leases θα εξυπηρετούνται." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Μέθοδος EAP" - -msgid "Edit" -msgstr "Επεξεργασία" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Επεξεργασία αυτής της διεπαφής" - -msgid "Edit this network" -msgstr "Επεξεργασία αυτού του δικτύου" - -msgid "Emergency" -msgstr "Έκτακτη ανάγκη" - -msgid "Enable" -msgstr "Ενεργοποίηση" - -msgid "Enable STP" -msgstr "Ενεργοποίηση STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Ενεργοποίηση ενημέρωσης δυναμικού τερματικού σημείου HE.net." - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Ενεργοποίηση διαπραγμάτευσης IPv6 πάνω στη PPP ζεύξη" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Ενεργοποίηση διέλευσης Jumbo Frame" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Ενεργοποίηση εξυπηρετητή TFTP" - -msgid "Enable VLAN functionality" -msgstr "Ενεργοποίηση λειτουργίας VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Ένεργοποίηση learning and aging" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Ενεργοποίηση αυτής της προσάρτησης" - -msgid "Enable this swap" -msgstr "Ενεργοποίηση αυτής της swap" - -msgid "Enable/Disable" -msgstr "Ενεργοποίηση/Απενεργοποίηση" - -msgid "Enabled" -msgstr "Ενεργοποιημένο" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "Λειτουργία ενθυλάκωσης" - -msgid "Encryption" -msgstr "Κρυπτογράφηση" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Διαγράφεται..." - -msgid "Error" -msgstr "Σφάλμα" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Προσαρμογέας Ethernet" - -msgid "Ethernet Switch" -msgstr "Ethernet Switch" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "Λήγει" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Ο ελάχιστος χρόνος λήξεως των διευθύνσεων lease είναι 2 λεπτά (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Εξωτερικός εξυπηρετητής καταγραφής συστήματος" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Αρχείο" - -msgid "Filename of the boot image advertised to clients" -msgstr "Όνομα αρχείου της εικόνας εκκίνησης που διαφημίζετε στους πελάτες" - -msgid "Filesystem" -msgstr "Σύστημα Αρχείων" - -msgid "Filter" -msgstr "Φίλτρο" - -msgid "Filter private" -msgstr "Φιλτράρισμα ιδιωτικών" - -msgid "Filter useless" -msgstr "Φιλτράρισμα άχρηστων" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Εύρεση και σύνδεση σε δίκτυο" - -msgid "Find package" -msgstr "Εύρεση πακέτου" - -msgid "Finish" -msgstr "Τέλος" - -msgid "Firewall" -msgstr "Τείχος Προστασίας" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Ρυθμίσεις Τείχους Προστασίας" - -msgid "Firewall Status" -msgstr "Κατάσταση Τείχους Προστασίας" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Έκδοση Υλικολογισμικού" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Φλασάρισμα Firmware" - -msgid "Flash image..." -msgstr "Φλασάρισμα εικόνας..." - -msgid "Flash new firmware image" -msgstr "Φλασάρισμα νέας εικόνας υλικολογισμικού" - -msgid "Flash operations" -msgstr "Λειτουργίες φλασάρισματος" - -msgid "Flashing..." -msgstr "Φλασάρεται..." - -msgid "Force" -msgstr "Επιβολή" - -msgid "Force CCMP (AES)" -msgstr "Επιβολή CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Επιβολή DHCP σε αυτό το δίκτυο ακόμα κι αν έχει εντοπιστεί άλλος εξυπηρετητής" - -msgid "Force TKIP" -msgstr "Επιβολή TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Επιβολή TKIP και CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Προώθηση κίνησης DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Προώθηση κίνησης broadcast" - -msgid "Forwarding mode" -msgstr "Μέθοδος προώθησης" - -msgid "Fragmentation Threshold" -msgstr "Όριο Κατακερµατισµού" - -msgid "Frame Bursting" -msgstr "Bursting Πλαισίων" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "Ελεύθερος χώρος" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "Πύλη" - -msgid "Gateway ports" -msgstr "Θύρες πύλης" - -msgid "General Settings" -msgstr "Γενικές Ρυθμίσεις" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "Μετάβαση στη σχετική σελίδα ρυθμίσεων" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "Κρέμασμα" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Εδώ μπορείτε να παραμετροποιήσετε βασικές πλευρές της συσκευής σας όπως το " -"όνομα υπολογιστή ή τη ζώνη ώρας." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "Κρυφό ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Καταχωρήσεις Υπολογιστών" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" -"IP Υπολογιστή ή Δικτύου" - -msgid "Hostname" -msgstr "Όνομα Υπολογιστή" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Ονόματα Υπολογιστών" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Διεύθυνση IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 Τείχος Προστασίας" - -msgid "IPv4 WAN Status" -msgstr "" - -msgid "IPv4 address" -msgstr "Διεύθυνση IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 και IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "Πύλη IPv4" - -msgid "IPv4 netmask" -msgstr "Μάσκα IPv4" - -msgid "IPv4 only" -msgstr "Μόνο IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-Διεύθυνση" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 Τείχος Προστασίας" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Κατάσταση IPv6 WAN" - -msgid "IPv6 address" -msgstr "Διεύθυνση IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Πύλη IPv6" - -msgid "IPv6 only" -msgstr "Μόνο IPv6" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Ταυτότητα" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Αν οριστεί, προσάρτησε τη συσκευή με βάση το UUID της αντί για το " -"καθορισμένο όνομα της" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Αν οριστεί, προσάρτησε τη συσκευή με βάση την ετικέτα της αντί για το " -"καθορισμένο όνομα της" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Αν η φυσική μνήμη δεν είναι αρκετή, μη-χρησιμοποιούμενα δεδομένα μπορούν " -"προσωρινά να εναλλάσσονται σε μία συσκευή swap με αποτέλεσμα περισσότερη " -"ενεργή RAM. Η εναλλαγή δεδομένων " -"είναι μία πολύ αργή διαδικασία αφού η συσκευή swap δεν μπορεί να " -"προσπελαστεί με τους υψηλούς ρυθμούς μεταφοράς δεδομένων που διαθέτει η " -"RAM." - -msgid "Ignore /etc/hosts" -msgstr "Αγνόησε /etc/hosts" - -msgid "Ignore interface" -msgstr "Αγνόησε διεπαφή" - -msgid "Ignore resolve file" -msgstr "Αγνόησε αρχείο resolve" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "Είσοδος" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "Πληροφορίες" - -msgid "Initscript" -msgstr "Σενάριο εκκίνησης" - -msgid "Initscripts" -msgstr "Σενάρια Εκκίνησης" - -msgid "Install" -msgstr "Εγκατάσταση" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Εγκατάσταση πακέτου %q" - -msgid "Install protocol extensions..." -msgstr "Εγκατάσταση επεκτάσεων πρωτοκόλλου..." - -msgid "Installed packages" -msgstr "Εγκατεστημένα πακέτα" - -msgid "Interface" -msgstr "Διεπαφή" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Παραμετροποίηση Διεπαφής" - -msgid "Interface Overview" -msgstr "Επισκόπηση Διεπαφής" - -msgid "Interface is reconnecting..." -msgstr "Η διεπαφή επανασυνδέεται..." - -msgid "Interface is shutting down..." -msgstr "Η διεπαφή απενεργοποιείται..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Η διεπαφή δεν υπάρχει ή δεν έχει συνδεθεί ακόμη." - -msgid "Interface reconnected" -msgstr "Η διεπαφή επανασυνδέθηκε" - -msgid "Interface shut down" -msgstr "Η διεπαφή απενεργοποιήθηκε" - -msgid "Interfaces" -msgstr "Διεπαφές" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "Άκυρη τιμή εισόδου" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Άκυρο όνομα χρήστη και/ή κωδικός πρόσβασης! Παρακαλώ προσπαθήστε ξανά." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Φαίνεται πως προσπαθείτε να φλασάρετε μια εικόνα που δεν χωράει στην μνήμη " -"flash, παρακαλώ επιβεβαιώστε το αρχείο εικόνας!" - -msgid "JavaScript required!" -msgstr "Απαιτείται JavaScript!" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Διατήρηση ρυθμίσεων" - -msgid "Kernel Log" -msgstr "Καταγραφή Πυρήνα" - -msgid "Kernel Version" -msgstr "Έκδοση Πυρήνα" - -msgid "Key" -msgstr "Κλειδί" - -msgid "Key #%d" -msgstr "Κλειδί #%d" - -msgid "Kill" -msgstr "Σκότωμα" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Ετικέτα" - -msgid "Language" -msgstr "Γλώσσα" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "Αρχείο Leases" - -msgid "Leasetime remaining" -msgstr "Υπόλοιπο χρόνου Lease" - -msgid "Leave empty to autodetect" -msgstr "Αφήστε το κενό για να γίνει αυτόματη ανίχνευση" - -msgid "Leave empty to use the current WAN address" -msgstr "Αφήστε το κενό για να γίνει χρήση της τρέχουσας διεύθυνσης WAN" - -msgid "Legend:" -msgstr "Υπόμνημα:" - -msgid "Limit" -msgstr "Όριο" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Αναμμένο με Ζεύξη" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Φόρτος" - -msgid "Load Average" -msgstr "Μέσος όρος φόρτου" - -msgid "Loading" -msgstr "Φόρτωση" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Τοπική διεύθυνση IPv4" - -msgid "Local IPv6 address" -msgstr "Τοπική διεύθυνση IPv6" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Τοπική Ώρα" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "Τοπικός εξυπηρετητής" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Τοπικά ερωτήματα" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Επίπεδο εξόδου αρχείων καταγραφής" - -msgid "Log queries" -msgstr "Καταγραφή ερωτημάτων" - -msgid "Logging" -msgstr "Καταγραφή" - -msgid "Login" -msgstr "Σύνδεση" - -msgid "Logout" -msgstr "Αποσύνδεση" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-Διεύθυνση" - -msgid "MAC-Address Filter" -msgstr "Φίλτρο MAC Διευθύνσεων" - -msgid "MAC-Filter" -msgstr "MAC-Φίλτρο" - -msgid "MAC-List" -msgstr "Λίστα MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Μέγιστος επιτρεπόμενος αριθμός ενεργών DHCP leases" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Μέγιστος επιτρεπόμενος αριθμός ταυτόχρονων ερωτημάτων DNS" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Μέγιστο επιτρεπόμενο μέγεθος EDNS.0 UDP πακέτων" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" -"Μέγιστος αριθμός δευτερολέπτων αναμονής ώστε το modem να καταστεί έτοιμο" - -msgid "Maximum hold time" -msgstr "Μέγιστος χρόνος κράτησης" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Μέγιστος αριθμός διευθύνσεων lease" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Μνήμη" - -msgid "Memory usage (%)" -msgstr "Χρήση Μνήμης (%)" - -msgid "Metric" -msgstr "Μέτρο" - -msgid "Minimum hold time" -msgstr "Ελάχιστος χρόνος κράτησης" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Λειτουργία" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Συσκευή Modem" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Παρακολούθηση" - -#, fuzzy -msgid "Mount Entry" -msgstr "Προσάρτηση" - -msgid "Mount Point" -msgstr "Σημείο Προσάρτησης" - -msgid "Mount Points" -msgstr "Σημεία Προσάρτησης" - -msgid "Mount Points - Mount Entry" -msgstr "Σημεία Προσάρτησης - Είσοδος Προσάρτησης" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Τα σημεία προσάρτησης ορίζουν σε ποιο σημείο στο σύστημα αρχείων θα " -"προσαρτηθεί μία συσκευή μνήμης" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Επιλογές προσάρτησης" - -msgid "Mount point" -msgstr "Σημείο προσάρτησης" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Προσαρτημένα συστήματα αρχείων" - -msgid "Move down" -msgstr "Μετακίνηση κάτω" - -msgid "Move up" -msgstr "Μετακίνηση πάνω" - -msgid "Multicast address" -msgstr "Διεύθυνση Multicast" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Όνομα" - -msgid "Name of the new interface" -msgstr "Όνομα νέας διεπαφής" - -msgid "Name of the new network" -msgstr "Όνομα νέου δικτύου" - -msgid "Navigation" -msgstr "Πλοήγηση" - -msgid "Netmask" -msgstr "Μάσκα δικτύου" - -msgid "Network" -msgstr "Δίκτυο" - -msgid "Network Utilities" -msgstr "Εργαλεία Δικτύου" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "Επόμενο »" - -msgid "No DHCP Server configured for this interface" -msgstr "Δεν υπάρχει ρυθμισμένος DHCP εξυπηρετητής για αυτή τη διεπαφή" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Δεν υπάρχουν αλυσίδες σε αυτόν τον πίνακα" - -msgid "No files found" -msgstr "Δε βρέθηκαν αρχεία" - -msgid "No information available" -msgstr "Δεν υπάρχουν πληροφορίες διαθέσιμες" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "Δεν υπάρχει παραμετροποιημένο δίκτυο σε αυτή τη συσκευή" - -msgid "No network name specified" -msgstr "Δεν έχει οριστεί όνομα δικτύου" - -msgid "No package lists available" -msgstr "Δεν υπάρχουν διαθέσιμες λίστες πακέτων" - -msgid "No password set!" -msgstr "Δεν έχει οριστεί κωδικός πρόσβασης!" - -msgid "No rules in this chain" -msgstr "Δεν υπάρχει κανόνας σε αυτή την αλυσίδα" - -msgid "No zone assigned" -msgstr "Δεν έχει ανατεθεί ζώνη" - -msgid "Noise" -msgstr "Θόρυβος" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Θόρυβος:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Κανένα" - -msgid "Normal" -msgstr "Φυσιολογικό" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "Σημείωση: Τα αρχεία παραμετροποίησης θα διαγραφούν." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Επισήμανση" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "Εντάξει" - -msgid "OPKG-Configuration" -msgstr "Παραμετροποίηση OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Σε αυτή τη σελίδα μπορείτε να ρυθμίσετε τις διεπαφές δικτύου. Μπορείτε να " -"γεφυρώσετε πολλαπλές διεπαφές τικάροντας το πεδίο \"γεφύρωμα διεπαφών\" και " -"εισάγοντας τα ονόματα των διεπαφών δικτύου χωρισμένα με κενά. Μπορείτε " -"επίσης να χρησιμοποιήσετε παράσταση τύπου VLAN INTERFACE.VLANNR (π.χ.: eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "Ένα ή περισσότερα πεδία περιέχουν μη έγκυρες τιμές!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Ένα ή περισσότερα πεδία δεν περιέχουν τιμές!" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Η επιλογή άλλαξε" - -msgid "Option removed" -msgstr "Η επιλογή αφαιρέθηκε" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Επιλογές" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "Έξοδος" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Επισκόπηση" - -msgid "Owner" -msgstr "Κάτοχος" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Ενθυλάκωση PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Απαιτείται το πακέτο libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Οι λίστες πακέτων έχουν να ανανεωθούν πάνω από 24 ώρες" - -msgid "Package name" -msgstr "Όνομα πακέτου" - -msgid "Packets" -msgstr "Πακέτα" - -msgid "Part of zone %q" -msgstr "Μέρος της ζώνης %q" - -msgid "Password" -msgstr "Κωδικός Πρόσβασης" - -msgid "Password authentication" -msgstr "Εξουσιοδότηση με κωδικό πρόσβασης" - -msgid "Password of Private Key" -msgstr "Κωδικός Πρόσβασης του Ιδιωτικού Κλειδιού" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Ο κωδικός πρόσβασης άλλαξε επιτυχώς!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Διαδρομή για Πιστοποιητικό CA" - -msgid "Path to Client-Certificate" -msgstr "Διαδρομή για Πιστοποιητικό-Πελάτη" - -msgid "Path to Private Key" -msgstr "Διαδρομή για Ιδιωτικό Κλειδί" - -msgid "Path to executable which handles the button event" -msgstr "Διαδρομή για το εκτελέσιμο που χειρίζεται το γεγονός του κουμπιού" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Εκτέλεση επανεκκίνησης" - -msgid "Perform reset" -msgstr "Διενέργεια αρχικοποίησης" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Πκτ." - -msgid "Please enter your username and password." -msgstr "Παρακαλώ εισάγετε όνομα χρήστη και κωδικό πρόσβασης." - -msgid "Policy" -msgstr "Πολιτική" - -msgid "Port" -msgstr "Θύρα" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -#, fuzzy -msgid "Prevents client-to-client communication" -msgstr "Αποτρέπει την επικοινωνία μεταξύ πελατών" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Συνέχεια" - -msgid "Processes" -msgstr "Εργασίες" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Πρωτ." - -msgid "Protocol" -msgstr "Πρωτόκολλο" - -msgid "Protocol family" -msgstr "Οικογένεια πρωτοκόλλου" - -msgid "Protocol of the new interface" -msgstr "Πρωτόκολλο νέας διεπαφής" - -msgid "Protocol support is not installed" -msgstr "Η υποστήριξη πρωτοκόλλου δεν έχει εκγατασταθεί" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Ψευδό Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Όριο RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Διάβασμα του /etc/ethers για την παραμετροποίηση του " -"εξυπηρετητή DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "Αρχικοποίηση όλων των αλλαγών;" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "Αλλαγή πρωτοκόλλου;" - -msgid "Realtime Connections" -msgstr "Συνδέσεις πραγματικού χρόνου" - -msgid "Realtime Graphs" -msgstr "Γραφήματα πραγματικού χρόνου" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "Κίνηση πραγματικού χρόνου" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Επανεκκίνηση" - -msgid "Rebooting..." -msgstr "Επανεκκίνηση..." - -msgid "Reboots the operating system of your device" -msgstr "Επανεκκίνηση του λειτουργικού συστήματος της συσκευής σας" - -msgid "Receive" -msgstr "Λήψη" - -msgid "Receiver Antenna" -msgstr "Κεραία Λήψης" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Επανασύνδεση της διεπαφής" - -msgid "Reconnecting interface" -msgstr "Επανασύνδεση της διεπαφής" - -msgid "References" -msgstr "Αναφορές" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "Απομακρυσμένη διεύθυνση IPv4" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Αφαίρεση" - -msgid "Repeat scan" -msgstr "Επανάληψη σάρωσης" - -msgid "Replace entry" -msgstr "Αντικατάσταση καταχώρησης" - -msgid "Replace wireless configuration" -msgstr "Αντικατάσταση ρυθμίσεων ασύρματης σύνδεσης" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Αρχικοποίηση" - -msgid "Reset Counters" -msgstr "Αρχικοποίηση Μετρητών" - -msgid "Reset to defaults" -msgstr "Αρχικοποίηση στις προεπιλεγμένες τιμές" - -msgid "Resolv and Hosts Files" -msgstr "Αρχεία Resolv και Hosts" - -msgid "Resolve file" -msgstr "Αρχείο Resolve" - -msgid "Restart" -msgstr "Επανεκκίνηση" - -msgid "Restart Firewall" -msgstr "Επανεκκίνηση Τείχους Προστασίας" - -msgid "Restore backup" -msgstr "Επαναφορά αντιγράφου ασφαλείας" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "Αναίρεση" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Κατάλογος Root για αρχεία που σερβίρονται μέσω TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Κωδικός Πρόσβασης Δρομολογητή" - -#, fuzzy -msgid "Routes" -msgstr "Διαδρομές" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Οι διαδρομές ορίζουν τη διεπαφή και πύλη από την οποία κάποιος υπολογιστής ή " -"δίκτυο μπορεί να είναι προσβάσιμο/ς." - -msgid "Run a filesystem check before mounting the device" -msgstr "Εκτέλεση ελέγχου του συστήματος αρχείων πριν προσαρτηθεί η συσκευή" - -msgid "Run filesystem check" -msgstr "Εκτέλεση ελέγχου συστήματος αρχείων" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Πρόσβαση SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Κλειδιά SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Αποθήκευση" - -msgid "Save & Apply" -msgstr "Αποθήκευση & Εφαρμογή" - -msgid "Save & Apply" -msgstr "Αποθήκευση & Εφαρμογή" - -msgid "Scan" -msgstr "Σάρωση" - -msgid "Scheduled Tasks" -msgstr "Προγραμματισμένες Εργασίες" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "Δείτε το manpage του \"mount\" για λεπτομέρειες" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -#, fuzzy -msgid "Separate Clients" -msgstr "Απομόνωση Πελατών" - -msgid "Server Settings" -msgstr "Ρυθμίσεις Εξυπηρετητή" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Όνομα Υπηρεσίας" - -msgid "Service Type" -msgstr "Είδος Υπηρεσίας" - -msgid "Services" -msgstr "Υπηρεσίες" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Ρύθμιση Εξυπηρετητή DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "Απενεργοποίηση αυτής της διεπαφής" - -msgid "Shutdown this network" -msgstr "Απενεργοποίηση αυτού του δικτύου" - -msgid "Signal" -msgstr "Σήμα" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Σήμα:" - -msgid "Size" -msgstr "Μέγεθος" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Παράκαμψη" - -msgid "Skip to content" -msgstr "Παράκαμψη σε περιεχόμενο" - -msgid "Skip to navigation" -msgstr "Παράκαμψη σε πλοήγηση" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Λογισμικό" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Κάποια πεδία δεν είναι έγκυρα, δεν μπορούν να αποθηκευτούν οι τιμές!" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "Ταξινόμηση" - -msgid "Source" -msgstr "Πηγή" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -#, fuzzy -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" -"Προσδιορίζει την θύρα ακρόασης αυτού του στιγμιοτύπου Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Ορίστε το κρυφό κλειδί κρυπτογράφησης." - -msgid "Start" -msgstr "Αρχή" - -msgid "Start priority" -msgstr "Προτεραιότητα εκκίνησης" - -msgid "Startup" -msgstr "Εκκίνηση" - -msgid "Static IPv4 Routes" -msgstr "Στατικές Διαδρομές IPv4" - -msgid "Static IPv6 Routes" -msgstr "Στατικές Διαδρομές IPv6" - -msgid "Static Leases" -msgstr "Στατικά Leases" - -msgid "Static Routes" -msgstr "Στατικές Διαδρομές" - -msgid "Static address" -msgstr "Στατική διεύθυνση" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Κατάσταση" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "Αυστηρή σειρά" - -msgid "Submit" -msgstr "Υποβολή" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "Συγχρονισμός..." - -msgid "System" -msgstr "Σύστημα" - -msgid "System Log" -msgstr "Καταγραφή Συστήματος" - -msgid "System Properties" -msgstr "Ιδιότητες Συστήματος" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Ρυθμίσεις TFTP" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Πίνακας" - -msgid "Target" -msgstr "Στόχος" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Τερματισμός" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Οι επιτρεπόμενοι χαρακτήρες είναι: A-Z, a-z, " -"0-9 και _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Το αρχείο συσκευής της μνήμης ή του διαμέρισματος (π.χ. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Το σύστημα αρχείων που χρησιμοποιήθηκε για διαμόρφωση (π.χ. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "Οι παρακάτω αλλαγές έχουν υποβληθεί" - -msgid "The following changes have been reverted" -msgstr "Οι παρακάτω αλλαγές έχουν αναιρεθεί" - -msgid "The following rules are currently active on this system." -msgstr "Οι παρακάτω κανόνες είναι αυτή τη στιγμή ενεργοί σε αυτό το σύστημα." - -msgid "The given network name is not unique" -msgstr "Το παρεχόμενο όνομα δικτύου δεν είναι μοναδικό" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Το σύστημα φλασάρετε τώρα.
    ΜΗ ΣΒΗΣΕΤΕ ΤΗΝ ΣΥΣΚΕΥΗ!
    Περιμένετε " -"λίγα λεπτά για να δοκιμάσετε επανασύνδεση. Ανάλογα με τις ρυθμίσεις σας, " -"είναι πιθανό να χρειαστεί να ανανεώσετε την διεύθυνση του υπολογιστή σας για " -"να αποκτήσετε ξανά πρόσβαση στη συσκευή." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Η εικόνα που ανεβάσατε δεν περιέχει κάποια υποστηριζόμενη μορφή. Βεβαιωθείτε " -"ότι επιλέξατε την γενική μορφή εικόνας για την πλατφόρμα σας." - -msgid "There are no active leases." -msgstr "Δεν υπάρχουν ενεργά leases." - -msgid "There are no pending changes to apply!" -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Αυτός είναι ο μόνος DHCP στο τοπικό δίκτυο" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Αυτό είναι το crontab του συστήματος στο οποίο μπορούν να οριστούν " -"προγραμματισμένες εργασίες." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Αυτή η λίστα δίνει μία εικόνα των τρέχοντων εργασιών συστήματος και της " -"κατάστασής τους." - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Αυτή η σελίδα δίνει μία εικόνα για τις τρέχουσες ενεργές συνδέσεις δικτύου." - -msgid "This section contains no values yet" -msgstr "Αυτό το τμήμα δεν περιέχει τιμές ακόμη" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Ζώνη ώρας" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Διαθέσιμο Συνολικά" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Κίνηση" - -msgid "Transfer" -msgstr "Μεταφέρθηκαν" - -msgid "Transmission Rate" -msgstr "Ρυθμός Εκπομπής" - -msgid "Transmit" -msgstr "Εκπομπή" - -msgid "Transmit Power" -msgstr "Ισχύς Εκπομπής" - -msgid "Transmitter Antenna" -msgstr "Κεραία Εκπομπής" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "Διεπαφή Τούνελ" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Ισχύς Εκπομπής" - -msgid "Type" -msgstr "Τύπος" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Συσκευή USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Άγνωστο" - -msgid "Unknown Error, password not changed!" -msgstr "Άγνωστο Λάθος. ο κωδικός πρόσβασης δεν άλλαξε!" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Μη-αποθηκευμένες Αλλαγές" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Το Αρχείο Ανέβηκε" - -msgid "Uptime" -msgstr "Χρόνος εν λειτουργία" - -msgid "Use /etc/ethers" -msgstr "Χρήση /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Χρήση πύλης DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "Χρήση προεπιλεγμένης πύλης" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Σε χρήση" - -msgid "Used Key Slot" -msgstr "Χρησιμοποιούμενη Υποδοχή Κλειδιού" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Όνομα Χρήστη" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Εξυπηρετητής VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Έκδοση" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "Μοιραζόμενο κλειδί WEP" - -msgid "WEP passphrase" -msgstr "Κωδική φράση WEP" - -msgid "WMM Mode" -msgstr "Υποστήριξη WMM" - -msgid "WPA passphrase" -msgstr "Κωδική φράση WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Προειδοποίηση" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Ασύρματο" - -msgid "Wireless Adapter" -msgstr "Ασύρματος Προσαρμογέας" - -msgid "Wireless Network" -msgstr "Ασύρματο Δίκτυο" - -msgid "Wireless Overview" -msgstr "Επισκόπηση Ασύρματου Δικτύου" - -msgid "Wireless Security" -msgstr "Ασφάλεια Ασύρματου Δικτύου" - -msgid "Wireless is disabled or not associated" -msgstr "Το ασύρματο δίκτυο είναι απενεργοποιημένο ή μη συνδεδεμένο" - -msgid "Wireless is restarting..." -msgstr "Το ασύρματο δίκτυο επανεκκινείται..." - -msgid "Wireless network is disabled" -msgstr "Το ασύρματο δίκτυο είναι ανενεργό" - -msgid "Wireless network is enabled" -msgstr "Το ασύρματο δίκτυο είναι ενεργό" - -msgid "Wireless restarted" -msgstr "Το ασύρματο δίκτυο επανεκκινήθηκε" - -msgid "Wireless shut down" -msgstr "Το ασύρματο δίκτυο τερματίστηκε" - -msgid "Write received DNS requests to syslog" -msgstr "Καταγραφή των ληφθέντων DNS αιτήσεων στο syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε σενάρια εκκίνησης εδώ. Οι " -"αλλαγές θα εφαρμοστούν αφού επανεκκινήσετε τη συσκευή.
    Προειδοποίηση: Αν απενεργοποιήσετε απαραίτητα σενάρια εκκίνησης " -"όπως το \"network\", η συσκευή σας μπορεί να καταστεί μη-προσβάσιμη!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "αυτόματα" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "" - -#, fuzzy -msgid "creates a bridge over specified interface(s)" -msgstr "δημιουργεί μία γέφυρα μεταξύ των ορισμένων διεπαφών" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "ανενεργό" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"αρχείο όπου θα αποθηκεύονται τα Leases του DHCP" - -msgid "forward" -msgstr "προώθηση" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "βοήθεια" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "αν ο στόχος είναι ένα δίκτυο" - -msgid "input" -msgstr "είσοδος" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "τοπικό αρχείο DNS" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "όχι" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "κανένα" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "κλειστό" - -msgid "on" -msgstr "ανοιχτό" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "απεριόριστα" - -msgid "unspecified" -msgstr "μη-καθορισμένο" - -msgid "unspecified -or- create:" -msgstr "μη-καθορισμένο -ή- δημιουργείστε:" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "ναι" - -msgid "« Back" -msgstr "« Πίσω" - -#~ msgid "Leasetime" -#~ msgstr "Χρόνος Lease" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "στατικό" - -#~ msgid "AR Support" -#~ msgstr "Υποστήριξη AR" - -#~ msgid "Background Scan" -#~ msgstr "Σάρωση Παρασκηνίου" - -#~ msgid "Compression" -#~ msgstr "Συμπίεση" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Απενεργοποίηση χρονιστή HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Να μην στέλνονται απαντήσεις σε probes" - -#~ msgid "Fast Frames" -#~ msgstr "Γρήγορα Πλαίσια" - -#~ msgid "Maximum Rate" -#~ msgstr "Μέγιστος Ρυθμός" - -#~ msgid "Minimum Rate" -#~ msgstr "Ελάχιστος Ρυθμός" - -#~ msgid "Multicast Rate" -#~ msgstr "Ρυθμός Multicast" - -#~ msgid "Outdoor Channels" -#~ msgstr "Εξωτερικά Κανάλια" - -#~ msgid "Regulatory Domain" -#~ msgstr "Ρυθμιστική Περιοχή" - -#~ msgid "Separate WDS" -#~ msgstr "Ξεχωριστά WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Λειτουργία Turbo" - -#~ msgid "XR Support" -#~ msgstr "Υποστήριξη XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Ένα επιπλέον δίκτυο θα δημιουργηθεί εάν αυτό αφεθεί κενό" - -#~ msgid "Port %d" -#~ msgstr "Θύρα %d" - -#~ msgid "VLAN Interface" -#~ msgstr "Διεπαφή VLAN" diff --git a/package/luci/modules/luci-base/po/en/base.po b/package/luci/modules/luci-base/po/en/base.po deleted file mode 100644 index 6db22b6e66..0000000000 --- a/package/luci/modules/luci-base/po/en/base.po +++ /dev/null @@ -1,3890 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-04-03 08:44+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d minute window, %d second interval)" - -msgid "(%s available)" -msgstr "(%s available)" - -msgid "(empty)" -msgstr "(empty)" - -msgid "(no interfaces attached)" -msgstr "(no interfaces attached)" - -msgid "-- Additional Field --" -msgstr "-- Additional Field --" - -msgid "-- Please choose --" -msgstr "-- Please choose --" - -msgid "-- custom --" -msgstr "-- custom --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1 Minute Load:" - -msgid "15 Minute Load:" -msgstr "15 Minute Load:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5 Minute Load:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS query port" - -msgid "DNS server port" -msgstr "DNS server port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS servers will be queried in the " -"order of the resolvfile" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Address" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Address or Network " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Configuration" - -msgid "LED Name" -msgstr "LED Name" - -msgid "MAC-Address" -msgstr "MAC-Address" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. DHCP leases" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. EDNS0 packet size" - -msgid "Max. concurrent queries" -msgstr "Max. concurrent queries" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP retry threshold" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM Bridges" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Virtual Channel Identifier (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Virtual Path Identifier (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." - -msgid "ATM device number" -msgstr "ATM device number" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Access Concentrator" - -msgid "Access Point" -msgstr "Access Point" - -msgid "Action" -msgstr "Action" - -msgid "Actions" -msgstr "Actions" - -msgid "Activate this network" -msgstr "Activate this network" - -msgid "Active IPv4-Routes" -msgstr "Active IPv4-Routes" - -msgid "Active IPv6-Routes" -msgstr "Active IPv6-Routes" - -msgid "Active Connections" -msgstr "Active Connections" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Add" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Add local domain suffix to names served from hosts files" - -msgid "Add new interface..." -msgstr "Add new interface..." - -msgid "Additional Hosts files" -msgstr "Additional Hosts files" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Address" - -msgid "Address to access local relay bridge" -msgstr "Address to access local relay bridge" - -msgid "Administration" -msgstr "Administration" - -msgid "Advanced Settings" -msgstr "Advanced Settings" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alert" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Allow SSH password authentication" - -msgid "Allow all except listed" -msgstr "Allow all except listed" - -msgid "Allow listed only" -msgstr "Allow listed only" - -msgid "Allow localhost" -msgstr "Allow localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Allow remote hosts to connect to local SSH forwarded ports" - -msgid "Allow root logins with password" -msgstr "Allow root logins with password" - -msgid "Allow the root user to login with password" -msgstr "Allow the root user to login with password" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antenna 1" - -msgid "Antenna 2" -msgstr "Antenna 2" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "Any zone" - -msgid "Apply" -msgstr "Apply" - -msgid "Applying changes" -msgstr "Applying changes" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Assign interfaces..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Associated Stations" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Authentication" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Authoritative" - -msgid "Authorization Required" -msgstr "Authorization Required" - -msgid "Auto Refresh" -msgstr "Auto Refresh" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Available" - -msgid "Available packages" -msgstr "Available packages" - -msgid "Average:" -msgstr "Average:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Back" - -msgid "Back to Overview" -msgstr "Back to Overview" - -msgid "Back to configuration" -msgstr "Back to configuration" - -msgid "Back to overview" -msgstr "Back to overview" - -msgid "Back to scan results" -msgstr "Back to scan results" - -msgid "Backup / Flash Firmware" -msgstr "Backup / Flash Firmware" - -msgid "Backup / Restore" -msgstr "Backup / Restore" - -msgid "Backup file list" -msgstr "Backup file list" - -msgid "Bad address specified!" -msgstr "Bad address specified!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Bogus NX Domain Override" - -msgid "Bridge" -msgstr "Bridge" - -msgid "Bridge interfaces" -msgstr "Bridge interfaces" - -msgid "Bridge unit number" -msgstr "Bridge unit number" - -msgid "Bring up on boot" -msgstr "Bring up on boot" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "Buffered" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Buttons" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU usage (%)" - -msgid "Cancel" -msgstr "Cancel" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Chain" - -msgid "Changes" -msgstr "Changes" - -msgid "Changes applied." -msgstr "Changes applied." - -msgid "Changes the administrator password for accessing the device" -msgstr "Changes the administrator password for accessing the device" - -msgid "Channel" -msgstr "Channel" - -msgid "Check" -msgstr "Check" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Checksum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "Cipher" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "Client ID to send when requesting DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" - -msgid "Close list..." -msgstr "Close list..." - -msgid "Collecting data..." -msgstr "Collecting data..." - -msgid "Command" -msgstr "Command" - -msgid "Common Configuration" -msgstr "Common Configuration" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuration" - -msgid "Configuration applied." -msgstr "Configuration applied." - -msgid "Configuration files will be kept." -msgstr "Configuration files will be kept." - -msgid "Confirmation" -msgstr "Confirmation" - -msgid "Connect" -msgstr "Connect" - -msgid "Connected" -msgstr "Connected" - -msgid "Connection Limit" -msgstr "Connection Limit" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Connections" - -msgid "Country" -msgstr "Country" - -msgid "Country Code" -msgstr "Country Code" - -msgid "Cover the following interface" -msgstr "Cover the following interface" - -msgid "Cover the following interfaces" -msgstr "Cover the following interfaces" - -msgid "Create / Assign firewall-zone" -msgstr "Create / Assign firewall-zone" - -msgid "Create Interface" -msgstr "Create Interface" - -msgid "Create a bridge over multiple interfaces" -msgstr "Create a bridge over multiple interfaces" - -msgid "Critical" -msgstr "Critical" - -msgid "Cron Log Level" -msgstr "Cron Log Level" - -msgid "Custom Interface" -msgstr "Custom Interface" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Customizes the behaviour of the device LEDs if possible." - -msgid "DHCP Leases" -msgstr "DHCP Leases" - -msgid "DHCP Server" -msgstr "DHCP Server" - -msgid "DHCP and DNS" -msgstr "DHCP and DNS" - -msgid "DHCP client" -msgstr "DHCP client" - -msgid "DHCP-Options" -msgstr "DHCP-Options" - -msgid "DHCPv6 Leases" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS forwardings" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Debug" - -msgid "Default %d" -msgstr "Default %d" - -msgid "Default gateway" -msgstr "Default gateway" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Default state" - -msgid "Define a name for this network." -msgstr "Define a name for this network." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." - -msgid "Delete" -msgstr "Delete" - -msgid "Delete this network" -msgstr "Delete this network" - -msgid "Description" -msgstr "Description" - -msgid "Design" -msgstr "Design" - -msgid "Destination" -msgstr "Destination" - -msgid "Device" -msgstr "Device" - -msgid "Device Configuration" -msgstr "Device Configuration" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnostics" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Directory" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Disabled" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Distance Optimization" - -msgid "Distance to farthest network member in meters." -msgstr "Distance to farthest network member in meters." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversity" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domain required" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Don't forward DNS-Requests " -"without DNS-Name" - -msgid "Download and install package" -msgstr "Download and install package" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dynamic DHCP" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-Method" - -msgid "Edit" -msgstr "Edit" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable STP" -msgstr "Enable STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "Enable/Disable" - -msgid "Enabled" -msgstr "Enabled" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Enables the Spanning Tree Protocol on this bridge" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "Encryption" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "Error" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet Adapter" - -msgid "Ethernet Switch" -msgstr "Ethernet Switch" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Filesystem" - -msgid "Filter" -msgstr "Filter" - -msgid "Filter private" -msgstr "Filter private" - -msgid "Filter useless" -msgstr "Filter useless" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "Find package" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Firewall Settings" - -msgid "Firewall Status" -msgstr "Firewall Status" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Flash Firmware" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "Force" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "Fragmentation Threshold" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "General Setup" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "Go to relevant configuration page" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Handler" - -msgid "Hang Up" -msgstr "Hang Up" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "Hide ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Host entries" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Host-IP or Network" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Hostnames" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP address" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 WAN Status" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Identity" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignore /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignore interface" - -msgid "Ignore resolve file" -msgstr "Ignore resolve file" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "In" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initscript" -msgstr "Initscript" - -msgid "Initscripts" -msgstr "Initscripts" - -msgid "Install" -msgstr "Install" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface is shutting down..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interface reconnected" -msgstr "" - -msgid "Interface shut down" -msgstr "" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "Invalid input value" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Invalid username and/or password! Please try again." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"It appears that you try to flash an image that does not fit into the flash " -"memory, please verify the image file!" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "Join Network" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "Kernel Log" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "Key" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "Kill" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "Language" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "Leasefile" - -msgid "Leasetime remaining" -msgstr "Leasetime remaining" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "Limit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Link On" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Load" - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Local Time" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Localise queries" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "Log queries" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Login" - -msgid "Logout" -msgstr "Logout" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "MAC-Address Filter" - -msgid "MAC-Filter" -msgstr "MAC-Filter" - -msgid "MAC-List" -msgstr "MAC-List" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "Maximum hold time" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Memory" - -msgid "Memory usage (%)" -msgstr "Memory usage (%)" - -msgid "Metric" -msgstr "Metric" - -msgid "Minimum hold time" -msgstr "Minimum hold time" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mode" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Modem device" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Mount Point" - -msgid "Mount Points" -msgstr "Mount Points" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Mounted file systems" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Name" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "Name of the new network" - -msgid "Navigation" -msgstr "Navigation" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "Network" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "No chains in this table" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "No rules in this chain" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "Noise" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-Configuration" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Options" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "Out" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Overview" - -msgid "Owner" -msgstr "Owner" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Encapsulation" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Package name" - -msgid "Packets" -msgstr "Packets" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "Password" - -msgid "Password authentication" -msgstr "Password authentication" - -msgid "Password of Private Key" -msgstr "Password of Private Key" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Path to CA-Certificate" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Path to Private Key" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Perform reboot" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Physical Settings" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Pkts." - -msgid "Please enter your username and password." -msgstr "Please enter your username and password." - -msgid "Policy" -msgstr "Policy" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Prevents client-to-client communication" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Proceed" - -msgid "Processes" -msgstr "Processes" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocol" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS Threshold" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Read /etc/ethers to configure the DHCP-Server" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Reboot" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "Reboots the operating system of your device" - -msgid "Receive" -msgstr "Receive" - -msgid "Receiver Antenna" -msgstr "Receiver Antenna" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "Reconnecting interface" -msgstr "" - -msgid "References" -msgstr "References" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Remove" - -msgid "Repeat scan" -msgstr "Repeat scan" - -msgid "Replace entry" -msgstr "Replace entry" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Reset Counters" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "Restart" - -msgid "Restart Firewall" -msgstr "Restart Firewall" - -msgid "Restore backup" -msgstr "Restore backup" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "Revert" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "Routes" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Save" - -msgid "Save & Apply" -msgstr "Save & Apply" - -msgid "Save & Apply" -msgstr "" - -msgid "Scan" -msgstr "Scan" - -msgid "Scheduled Tasks" -msgstr "Scheduled Tasks" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Separate Clients" - -msgid "Server Settings" -msgstr "" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "Services" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Shutdown this network" -msgstr "" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Size" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Skip" - -msgid "Skip to content" -msgstr "Skip to content" - -msgid "Skip to navigation" -msgstr "Skip to navigation" - -msgid "Slot time" -msgstr "Slot time" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "" - -msgid "Source" -msgstr "Source" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Specifies the button state to handle" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "Start priority" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Static IPv4 Routes" - -msgid "Static IPv6 Routes" -msgstr "Static IPv6 Routes" - -msgid "Static Leases" -msgstr "Static Leases" - -msgid "Static Routes" -msgstr "Static Routes" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "Strict order" - -msgid "Submit" -msgstr "Submit" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "System Log" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Table" - -msgid "Target" -msgstr "Target" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminate" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"The filesystem that was used to format the memory (e.g. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "The following changes have been reverted" - -msgid "The following rules are currently active on this system." -msgstr "The following rules are currently active on this system." - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes until you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." - -msgid "There are no active leases." -msgstr "" - -msgid "There are no pending changes to apply!" -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"This is the only DHCP in the local network" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "This is the system crontab in which scheduled tasks can be defined." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"This list gives an overview over currently running system processes and " -"their status." - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "This page gives an overview over currently active network connections." - -msgid "This section contains no values yet" -msgstr "This section contains no values yet" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Timezone" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Traffic" - -msgid "Transfer" -msgstr "Transfer" - -msgid "Transmission Rate" -msgstr "Transmission Rate" - -msgid "Transmit" -msgstr "Transmit" - -msgid "Transmit Power" -msgstr "Transmit Power" - -msgid "Transmitter Antenna" -msgstr "Transmitter Antenna" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Type" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Unsaved Changes" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Uploaded File" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Use /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Used" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Username" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Version" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "WMM Mode" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "Wireless Adapter" - -msgid "Wireless Network" -msgstr "Wireless Network" - -msgid "Wireless Overview" -msgstr "Wireless Overview" - -msgid "Wireless Security" -msgstr "Wireless Security" - -msgid "Wireless is disabled or not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Wireless restarted" -msgstr "" - -msgid "Wireless shut down" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "creates a bridge over specified interface(s)" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "disable" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"file where given DHCP-leases will be stored" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "help" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "if target is a network" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "local DNS file" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "none" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "unspecified -or- create:" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "« Back" - -#~ msgid "Leasetime" -#~ msgstr "Leasetime" - -#~ msgid "automatic" -#~ msgstr "automatic" - -#~ msgid "AR Support" -#~ msgstr "AR Support" - -#~ msgid "Background Scan" -#~ msgstr "Background Scan" - -#~ msgid "Compression" -#~ msgstr "Compression" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Disable HW-Beacon timer" - -#~ msgid "Do not send probe responses" -#~ msgstr "Do not send probe responses" - -#~ msgid "Fast Frames" -#~ msgstr "Fast Frames" - -#~ msgid "Maximum Rate" -#~ msgstr "Maximum Rate" - -#~ msgid "Minimum Rate" -#~ msgstr "Minimum Rate" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast Rate" - -#~ msgid "Outdoor Channels" -#~ msgstr "Outdoor Channels" - -#~ msgid "Regulatory Domain" -#~ msgstr "Regulatory Domain" - -#~ msgid "Separate WDS" -#~ msgstr "Separate WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo Mode" - -#~ msgid "XR Support" -#~ msgstr "XR Support" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "An additional network will be created if you leave this unchecked." - -#~ msgid "CPU" -#~ msgstr "CPU" diff --git a/package/luci/modules/luci-base/po/es/base.po b/package/luci/modules/luci-base/po/es/base.po deleted file mode 100644 index 088bdbd104..0000000000 --- a/package/luci/modules/luci-base/po/es/base.po +++ /dev/null @@ -1,4027 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2014-05-04 11:38+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(ventana de %d minutos, intervalo de %d segundos)" - -msgid "(%s available)" -msgstr "(%s está disponible)" - -msgid "(empty)" -msgstr "(vacío)" - -msgid "(no interfaces attached)" -msgstr "(sin interfaces conectados)" - -msgid "-- Additional Field --" -msgstr "-- Campo Adicional --" - -msgid "-- Please choose --" -msgstr "-- Elija, por favor --" - -msgid "-- custom --" -msgstr "-- introducir --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Carga a 1 minuto:" - -msgid "15 Minute Load:" -msgstr "Carga a 15 minutos:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Carga a 5 minutos:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "Puerto de consultas al DNS" - -msgid "DNS server port" -msgstr "Puerto del servidor DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Los servidores de DNS se consultan " -"en el orden en que aparecen en el fichero resolv" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "Dirección IPv4" - -msgid "IPv4-Gateway" -msgstr "" -"Puerta de enlace IPv4" - -msgid "IPv4-Netmask" -msgstr "Máscara de red IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Dirección o red (CIDR)IPv6" - -msgid "IPv6-Gateway" -msgstr "" -"Puerta de enlace IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Configuración de LEDs" - -msgid "LED Name" -msgstr "Nombre del LED" - -msgid "MAC-Address" -msgstr "Dirección MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Máximas cesiones DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "Tamaño máximo de paquetes EDNS0" - -msgid "Max. concurrent queries" -msgstr "Máximo número de consultas concurrentes" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Umbral de reintento ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Puente ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identificador de canal virtual ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identificador de camino virtual ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Los puentes ATM exponen conexiones AAL5 ethernet encapsuladas como " -"interfaces de red Linux que se pueden usar junto a DHCP o PPP para conectar " -"a la red del proveedor." - -msgid "ATM device number" -msgstr "Número de dispositivo ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrador de acceso" - -msgid "Access Point" -msgstr "Punto de Acceso" - -msgid "Action" -msgstr "Acción" - -msgid "Actions" -msgstr "Acciones" - -msgid "Activate this network" -msgstr "Activar esta red" - -msgid "Active IPv4-Routes" -msgstr "Rutas activas IPv4" - -msgid "Active IPv6-Routes" -msgstr "Rutas activas IPv6" - -msgid "Active Connections" -msgstr "Conexiones activas" - -msgid "Active DHCP Leases" -msgstr "Cesiones DHCP activas" - -msgid "Active DHCPv6 Leases" -msgstr "Cesiones DHCPv6 activas" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Añadir" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Añadir el sufijo de dominio local a los nombres servidos desde el fichero de " -"máquinas" - -msgid "Add new interface..." -msgstr "Añadir nueva interfaz..." - -msgid "Additional Hosts files" -msgstr "Ficheros de máquinas adicionales" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Dirección" - -msgid "Address to access local relay bridge" -msgstr "Dirección del puente relé local" - -msgid "Administration" -msgstr "Administración" - -msgid "Advanced Settings" -msgstr "Configuración avanzada" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerta" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permitir autenticación de contraseña via SSH" - -msgid "Allow all except listed" -msgstr "Permitir a todos excepto a los de la lista" - -msgid "Allow listed only" -msgstr "Permitir a los pertenecientes en la lista" - -msgid "Allow localhost" -msgstr "Permitir a la propia máquina" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Permitir a máquinas remotas conectar a puestos SSH locales traspasados" - -msgid "Allow root logins with password" -msgstr "Permitir conexiones a root con contraseña" - -msgid "Allow the root user to login with password" -msgstr "Permitir al usuario root conectar con contraseña" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permitir respuestas en el rango 127.0.0.0/8, por ejemplo para servicios RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Configuración de la antena" - -msgid "Any zone" -msgstr "Cualquier zona" - -msgid "Apply" -msgstr "Aplicar" - -msgid "Applying changes" -msgstr "Aplicando cambios" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Asigne interfaces..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Estaciones asociadas" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autentificación" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autorizado" - -msgid "Authorization Required" -msgstr "Conéctese" - -msgid "Auto Refresh" -msgstr "Autorefresco" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponible" - -msgid "Available packages" -msgstr "Paquetes disponibles" - -msgid "Average:" -msgstr "Media:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Volver" - -msgid "Back to Overview" -msgstr "Volver al resumen" - -msgid "Back to configuration" -msgstr "Volver a la configuración" - -msgid "Back to overview" -msgstr "Volver al resumen" - -msgid "Back to scan results" -msgstr "Volver a resultados de la exploración" - -msgid "Backup / Flash Firmware" -msgstr "Copia de seguridad / Grabar firmware" - -msgid "Backup / Restore" -msgstr "Salvar / Restaurar" - -msgid "Backup file list" -msgstr "Salvar lista de ficheros" - -msgid "Bad address specified!" -msgstr "¡Dirección no válida!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Lista de ficheros a los que hacer copia de seguridad. Es una lista de " -"ficheros de configuración cambiados por ficheros marcados por opkg, ficheros " -"esenciales base y los patrones de copia de seguridad definidos por el " -"usuario." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Ignorar dominio falso NX" - -msgid "Bridge" -msgstr "Puente" - -msgid "Bridge interfaces" -msgstr "Puentear interfaces" - -msgid "Bridge unit number" -msgstr "Número de unidad del puente" - -msgid "Bring up on boot" -msgstr "Activar en el arranque" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Controlador inalámbrico 802.11%s Broadcom" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Controlador inalámbrico 802.11 BCM%04x" - -msgid "Buffered" -msgstr "En búfer" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Botones" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Uso de CPU (%)" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Cadena" - -msgid "Changes" -msgstr "Cambios" - -msgid "Changes applied." -msgstr "Cambios aplicados." - -msgid "Changes the administrator password for accessing the device" -msgstr "Cambie la contraseña del administrador para acceder al dispositivo" - -msgid "Channel" -msgstr "Canal" - -msgid "Check" -msgstr "Comprobar" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Comprobación" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Elija la zona del cortafuegos a la que quiere asignar esta interfaz. " -"Seleccione no especificado para eliminar la interfaz de la zona " -"asociada o rellene el campo crear para definir una zona nueva a la " -"que asignarla." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Elija la red o redes a las que quiere unir esta interfaz inalámbrica o vacíe " -"el campo crear para definir una red nueva." - -msgid "Cipher" -msgstr "Cifrado" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Pulse \"generar archivo\" para descargar un fichero tar con los ficheros de " -"configuración actuales. Para reiniciar el firmware a su estado inicial pulse " -"\"Reiniciar\" (sólo posible con imágenes squashfs)." - -msgid "Client" -msgstr "Cliente" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID de cliente que se enviará al solicitar DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Cerrar las conexiones inactivas tras los segundos dados. Use 0 para una " -"conexión permanente" - -msgid "Close list..." -msgstr "Cerrar lista..." - -msgid "Collecting data..." -msgstr "Un momento..." - -msgid "Command" -msgstr "Comando" - -msgid "Common Configuration" -msgstr "Configuración común" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuración" - -msgid "Configuration applied." -msgstr "Configuración establecida." - -msgid "Configuration files will be kept." -msgstr "Se mantendrán los ficheros de configuración." - -msgid "Confirmation" -msgstr "Confirmación" - -msgid "Connect" -msgstr "Conectar" - -msgid "Connected" -msgstr "Conectado" - -msgid "Connection Limit" -msgstr "Límite de conexión" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Conexiones" - -msgid "Country" -msgstr "País" - -msgid "Country Code" -msgstr "Código de país" - -msgid "Cover the following interface" -msgstr "Cubre el interfaz siguiente" - -msgid "Cover the following interfaces" -msgstr "Cubre los siguientes interfaces" - -msgid "Create / Assign firewall-zone" -msgstr "Crear / Asignar zona de seguridad" - -msgid "Create Interface" -msgstr "Crear interfaz" - -msgid "Create a bridge over multiple interfaces" -msgstr "Crear un puente sobre múltiples interfaces" - -msgid "Critical" -msgstr "Crítico" - -msgid "Cron Log Level" -msgstr "Nivel de registro de cron" - -msgid "Custom Interface" -msgstr "Interfaz propio" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Personaliza el comportamiento de los LEDs del dispositivo, si es posible." - -msgid "DHCP Leases" -msgstr "Cesiones DHCP" - -msgid "DHCP Server" -msgstr "Servidor DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP y DNS" - -msgid "DHCP client" -msgstr "Cliente DHCP" - -msgid "DHCP-Options" -msgstr "Opciones de DHCP" - -msgid "DHCPv6 Leases" -msgstr "Cesiones DHCPv6" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Retransmisión DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Depuración" - -msgid "Default %d" -msgstr "%d por defecto" - -msgid "Default gateway" -msgstr "Gateway por defecto" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Estado por defecto" - -msgid "Define a name for this network." -msgstr "Definir un nombre para esta red." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definir optiones adicionales DHCP, por ejemplo " -"\"6,192.168.2.1,192.168.2.2\" que publica diferentes servidores " -"DNS a los clientes." - -msgid "Delete" -msgstr "Eliminar" - -msgid "Delete this network" -msgstr "Borrar esta red" - -msgid "Description" -msgstr "Descripción" - -msgid "Design" -msgstr "Diseño" - -msgid "Destination" -msgstr "Destino" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Device Configuration" -msgstr "Configuración del dispositivo" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnósticos" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Directorio" - -msgid "Disable" -msgstr "Desactivar" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Desactivar DHCP " -"para esta interfaz." - -msgid "Disable DNS setup" -msgstr "Desactivar configuración de DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Desactivar" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Descartar respuestas RFC1918 salientes" - -msgid "Displaying only packages containing" -msgstr "Mostrar sólo paquete que contienen" - -msgid "Distance Optimization" -msgstr "Optimización de distancia" - -msgid "Distance to farthest network member in meters." -msgstr "Distancia al miembro de la red mas lejana en metros." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversidad" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq es un programa que combina un servidor DHCP y un reenviador DNS para cortafuegos NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "No guardar respuestas negativas, por ejemplo dominios inexistentes" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"No retransmitir peticiones que no se puedan responder por servidores de " -"nombres públicos" - -msgid "Do not forward reverse lookups for local networks" -msgstr "No retransmitir búsquedas inversas para redes locales" - -msgid "Domain required" -msgstr "Dominio requerido" - -msgid "Domain whitelist" -msgstr "Lista blanca de dominios" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"No reenviar peticiones de DNS sin " -"un nombre de DNS" - -msgid "Download and install package" -msgstr "Descargar e instalar paquete" - -msgid "Download backup" -msgstr "Descargar copia de seguridad" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instancia Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear ofrece acceso SSH y un servidor " -"SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP dinámico" - -msgid "Dynamic tunnel" -msgstr "Túnel dinámico" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Reparte direcciones DHCP dinámicamente a los clientes. Si se desactiva sólo " -"se servirá a clientes con cesiones estáticas." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Método EAP" - -msgid "Edit" -msgstr "Editar" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Editar esta interfaz" - -msgid "Edit this network" -msgstr "Editar esta red" - -msgid "Emergency" -msgstr "Emergencia" - -msgid "Enable" -msgstr "Activar" - -msgid "Enable STP" -msgstr "Activar STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Activar actualización dinámica de punto final HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Activar negociación IPv6 en el enlace PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Activar paso de tramas jumbo" - -msgid "Enable NTP client" -msgstr "Activar cliente NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Activar servidor TFTP" - -msgid "Enable VLAN functionality" -msgstr "Activar funcionalidad VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Activar aprendizaje y envejecimiento" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Active este punto de montaje" - -msgid "Enable this swap" -msgstr "Activar este swap" - -msgid "Enable/Disable" -msgstr "Activar/Desactivar" - -msgid "Enabled" -msgstr "Activado" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Activa el protocol STP en este puente" - -msgid "Encapsulation mode" -msgstr "Modo de encapsulado" - -msgid "Encryption" -msgstr "Encriptación" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Borrando..." - -msgid "Error" -msgstr "Error" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Adaptador ethernet" - -msgid "Ethernet Switch" -msgstr "Switch ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Expandir nombre de máquina" - -msgid "Expires" -msgstr "Expira" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Tiempo de finalización de direcciones cedidas (mínimo dos minutos: 2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Servidor externo de registro del sistema" - -msgid "External system log server port" -msgstr "Puerto del servidor externo de registro del sistema" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Fichero" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nombre del fichero de imagen de arranque mostrado a los clientes" - -msgid "Filesystem" -msgstr "Sistema de ficheros" - -msgid "Filter" -msgstr "Filtro" - -msgid "Filter private" -msgstr "Filtro privado" - -msgid "Filter useless" -msgstr "Filtro inútil" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Encontrar y unirse a red" - -msgid "Find package" -msgstr "Buscar paquete" - -msgid "Finish" -msgstr "Terminar" - -msgid "Firewall" -msgstr "Cortafuegos" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Configuración del cortafuegos" - -msgid "Firewall Status" -msgstr "Estado del cortafuegos" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versión del firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Puerto origen fijo para peticiones de DNS salientes" - -msgid "Flash Firmware" -msgstr "Grabar firmware" - -msgid "Flash image..." -msgstr "Grabar imagen..." - -msgid "Flash new firmware image" -msgstr "Grabar imágenes del firmware" - -msgid "Flash operations" -msgstr "Operaciones de grabado" - -msgid "Flashing..." -msgstr "Grabando..." - -msgid "Force" -msgstr "Forzar" - -msgid "Force CCMP (AES)" -msgstr "Forzar CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Forzar DHCP en esta red aunque se detecte otro servidor." - -msgid "Force TKIP" -msgstr "Forzar TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forzar TKIP y CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Retransmitir tráfico DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Retransmitir tráfico de propagación" - -msgid "Forwarding mode" -msgstr "Modo de retransmisión" - -msgid "Fragmentation Threshold" -msgstr "Umbral de fragmentación" - -# It should be "Frame Bursting" at once! -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Libre" - -msgid "Free space" -msgstr "Espacio libre" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Sólo GPRS" - -msgid "Gateway" -msgstr "Pasarela" - -msgid "Gateway ports" -msgstr "Puertos del gateway" - -msgid "General Settings" -msgstr "Configuración general" - -msgid "General Setup" -msgstr "Configuración general" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Generar archivo" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Controlador inalámbrico 802.11%s genérico" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"La confirmación y la contraseña no coinciden. ¡No se ha cambiado la " -"contraseña!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Ir a configuración de contraseña..." - -msgid "Go to relevant configuration page" -msgstr "Ir a la página principal de configuración" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Contraseña HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Manejador" - -msgid "Hang Up" -msgstr "Suspender" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Aspectos básicos de su dispositivo como la zona horaria o nombre de máquina." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "Claves públicas SSH. Ponga una por línea." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Controlador inalámbrico 802.11b Hermes" - -msgid "Hide ESSID" -msgstr "Ocultar ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Entradas de máquina" - -msgid "Host expiry timeout" -msgstr "Espera para caducidad de máquinas" - -msgid "Host-IP or Network" -msgstr "" -"Dirección IP de máquina o " -"red" - -msgid "Hostname" -msgstr "Nombre de máquina" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nombre de máquina a enviar cuando se solicite DHCP" - -msgid "Hostnames" -msgstr "Nombres de máquina" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Dirección IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Cortafuegos IPv4" - -msgid "IPv4 WAN Status" -msgstr "Estado de la WAN IPv4" - -msgid "IPv4 address" -msgstr "Dirección IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Propagación IPv4" - -msgid "IPv4 gateway" -msgstr "Gateway IPv4" - -msgid "IPv4 netmask" -msgstr "Máscara de red IPv4" - -msgid "IPv4 only" -msgstr "Sólo IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Longitud de prefijo IPv4" - -msgid "IPv4-Address" -msgstr "Dirección IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Cortafuegos IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Estado de la WAN IPv6" - -msgid "IPv6 address" -msgstr "Dirección IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Gateway IPv6" - -msgid "IPv6 only" -msgstr "Sólo IPv6" - -msgid "IPv6 prefix" -msgstr "Prefijo IPv6" - -msgid "IPv6 prefix length" -msgstr "Longitud de prefijo IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Dirección IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-en-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-sobre-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-sobre-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identidad" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Montar el dispositivo por su UUID en vez de un nodo fijo de dispositivo si " -"se especifica" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Montar el dispositivo por la etiqueta de la partición en vez de por el nodo " -"fijo de dispositivo si se especifica" - -msgid "If unchecked, no default route is configured" -msgstr "Si está desmarcado no se configurará una ruta por defecto" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" -"Si está desmarcado las direcciones de servidor DNS anunciadas se ignorarán" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Si su dispositivo no tiene memoria RAM suficiente, los datos no utilizados pueden ser guardados temporalmente " -"en un dispositivo de intercambio (swap-device) liberando el espacio que " -"ocupan. Tenga en cuenta que el intercambio es un proceso lento porque los " -"dispositivos de intercambio no pueden transferir volúmenes de información a " -"alta velocidad tal y como hace la memoria RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignorar /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorar interfaz" - -msgid "Ignore resolve file" -msgstr "Ignorar el fichero resolv" - -msgid "Image" -msgstr "Imagen" - -msgid "In" -msgstr "Entrada" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Espera de inactividad" - -msgid "Inbound:" -msgstr "Entrantes:" - -msgid "Info" -msgstr "Información" - -msgid "Initscript" -msgstr "Nombre del script de inicio" - -msgid "Initscripts" -msgstr "Scripts de inicio" - -msgid "Install" -msgstr "Instalar" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instalar el paquete %q" - -msgid "Install protocol extensions..." -msgstr "Instalar extensiones de protocolo..." - -msgid "Installed packages" -msgstr "Paquetes instalados" - -msgid "Interface" -msgstr "Interfaz" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuración del interfaz" - -msgid "Interface Overview" -msgstr "Resumen de interfaces" - -msgid "Interface is reconnecting..." -msgstr "Reconectando interfaz..." - -msgid "Interface is shutting down..." -msgstr "Parando interfaz..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "El interfaz no existe o no está aún conectado." - -msgid "Interface reconnected" -msgstr "Interfaz reconectado" - -msgid "Interface shut down" -msgstr "Interfaz detenido" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Error interno del servidor" - -msgid "Invalid" -msgstr "Valor ingresado inválido" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "¡ID VLAN no válido! Sólo se permiten IDs entre %d y %d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "¡ID VLAN no válido! Sólo se permiten IDs únicos" - -msgid "Invalid username and/or password! Please try again." -msgstr "" -"¡Nombre de usuario o contraseña no válidos!. Pruebe de nuevo, por favor." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Parece que está intentando grabar una imagen de firmware mayor que la " -"memoria flash de su equipo. ¡Por favor, verifique el archivo!" - -msgid "JavaScript required!" -msgstr "¡Se necesita JavaScript!" - -msgid "Join Network" -msgstr "Unirse a Red" - -msgid "Join Network: Wireless Scan" -msgstr "Unirse a una red: Exploración inalámbrica" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Conservar la configuración del router" - -msgid "Kernel Log" -msgstr "Registro del Kernel" - -msgid "Kernel Version" -msgstr "Versión del Kernel" - -msgid "Key" -msgstr "Clave" - -msgid "Key #%d" -msgstr "Clave #%d" - -msgid "Kill" -msgstr "Matar" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Servidor L2TP" - -msgid "LCP echo failure threshold" -msgstr "Umbral de fracaso en eco LCP" - -msgid "LCP echo interval" -msgstr "Intervalo de eco LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etiqueta" - -msgid "Language" -msgstr "Idioma" - -msgid "Language and Style" -msgstr "Idioma y Estilo" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Tiempo de validación de cesión" - -msgid "Leasefile" -msgstr "Archivo de cesiones" - -msgid "Leasetime remaining" -msgstr "Tiempo de cesión restante" - -msgid "Leave empty to autodetect" -msgstr "Dejar vacío para autodetectar" - -msgid "Leave empty to use the current WAN address" -msgstr "Dejar vacío para usar la dirección WAN actual" - -msgid "Legend:" -msgstr "Leyenda:" - -msgid "Limit" -msgstr "Límite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Enlace activado" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Lista de servidores DNS a los que " -"enviar solicitudes" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Lista de dominios a los que se permiten respuestas RFC1918" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Lista de máquinas que proporcionan resultados de dominio NX falsos" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "Escucha solo en la interfaz dada o, si no se especifica, en todas" - -msgid "Listening port for inbound DNS queries" -msgstr "Puerto de escucha para consultas DNS entrantes" - -msgid "Load" -msgstr "Carga" - -msgid "Load Average" -msgstr "Carga Media" - -msgid "Loading" -msgstr "Cargando" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Dirección local IPv4" - -msgid "Local IPv6 address" -msgstr "Dirección local IPv6" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Arranque local" - -msgid "Local Time" -msgstr "Hora local" - -msgid "Local domain" -msgstr "Dominio local" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Especificación de dominio local. Los nombres que coincidan con este dominio " -"nunca se retransmiten y se resuelven desde DHCP o ficheros de máquina locales" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Sufijo del dominio local que se añade a los nombres DHCP y a las entradas " -"del fichero de máquinas" - -msgid "Local server" -msgstr "Servidor local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Localizar nombre de máquina dependiendo de que la subred peticionaria si hay " -"disponibles múltiples IPs" - -msgid "Localise queries" -msgstr "Localizar consultas" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Nivel de registro" - -msgid "Log queries" -msgstr "Registrar consultas" - -msgid "Logging" -msgstr "Registro" - -msgid "Login" -msgstr "Iniciar sesión" - -msgid "Logout" -msgstr "Cerrar sesión" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Dirección cedida más baja como diferencia de la dirección de red." - -msgid "MAC-Address" -msgstr "Dirección MAC" - -msgid "MAC-Address Filter" -msgstr "Filtro por dirección MAC" - -msgid "MAC-Filter" -msgstr "Filtro por dirección MAC" - -msgid "MAC-List" -msgstr "Lista de direcciones MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Número máximo de cesiones DHCP activas" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Número máximo de consultas DNS concurrentes" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Tamaño máximo de paquetes EDNS.0 paquetes UDP" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Segundos máximos de espera a que el módem esté activo" - -msgid "Maximum hold time" -msgstr "Pausa máxima de transmisión" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Máximas cesiones activas." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memoria" - -msgid "Memory usage (%)" -msgstr "Uso de memoria (%)" - -msgid "Metric" -msgstr "Métrica" - -msgid "Minimum hold time" -msgstr "Pausa mínima de espera" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Extensión de protocolo faltante para %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Modo" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Dispositivo de módem" - -msgid "Modem init timeout" -msgstr "Espera de inicialización del modem" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Entrada de montaje" - -msgid "Mount Point" -msgstr "Punto de montaje" - -msgid "Mount Points" -msgstr "Puntos de montaje" - -msgid "Mount Points - Mount Entry" -msgstr "Puntos de montaje - Entrada de montaje" - -msgid "Mount Points - Swap Entry" -msgstr "Puntos de montaje - Entrada de intercambio" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Los puntos de montaje definen el directorio en el que un dispositivo de " -"memoria se unirá al sistema del archivos" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Opciones de montaje" - -msgid "Mount point" -msgstr "Punto de montaje" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Sistemas de archivo montados" - -msgid "Move down" -msgstr "Bajar" - -msgid "Move up" -msgstr "Subir" - -msgid "Multicast address" -msgstr "Dirección multicast" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Servidores NTP a consultar" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Nombre" - -msgid "Name of the new interface" -msgstr "Nombre de la nueva interfaz" - -msgid "Name of the new network" -msgstr "Nombre de la nueva red" - -msgid "Navigation" -msgstr "Navegación" - -msgid "Netmask" -msgstr "Máscara de red" - -msgid "Network" -msgstr "Red" - -msgid "Network Utilities" -msgstr "Utilidades de red" - -msgid "Network boot image" -msgstr "Imagen de arranque en red" - -msgid "Network without interfaces." -msgstr "Red sin interfaces." - -msgid "Next »" -msgstr "Siguiente »" - -msgid "No DHCP Server configured for this interface" -msgstr "No se ha configurado un servidor DHCP para esta interfaz" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "No hay cadenas en esta tabla" - -msgid "No files found" -msgstr "No se han encontrado ficheros" - -msgid "No information available" -msgstr "No hay información disponible" - -msgid "No negative cache" -msgstr "Sin caché negativa" - -msgid "No network configured on this device" -msgstr "No hay red configurada para este dispositivo" - -msgid "No network name specified" -msgstr "No se ha especificado un nombre de red" - -msgid "No package lists available" -msgstr "No hay listas de paquetes disponibles" - -msgid "No password set!" -msgstr "¡Sin contraseña!" - -msgid "No rules in this chain" -msgstr "No hay reglas en esta cadena" - -msgid "No zone assigned" -msgstr "Sin zona asignada" - -msgid "Noise" -msgstr "Ruido" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Ruido:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Ninguno" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "No encontrado" - -msgid "Not associated" -msgstr "No asociado" - -msgid "Not connected" -msgstr "No conectado" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: se borrarán los ficheros de configuración." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Aviso" - -msgid "Nslookup" -msgstr "NSLookup" - -msgid "OK" -msgstr "Aceptar" - -msgid "OPKG-Configuration" -msgstr "Configuración de OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "Retraso de desconexión" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Configure las interfaces de red. Puede hacer puentes con diferentes " -"interfaces, marcando el campo \"puentear interfaces\" e introduciendo el " -"nombre de las mismas separadas por espacios. También puede usar la notación " -"VLAN, INTERFACE." -"VLANNR (Ej.: eth0.1)." - -msgid "On-State Delay" -msgstr "Retraso de activación" - -msgid "One of hostname or mac address must be specified!" -msgstr "¡Debe especificar al menos un nombre de máquina o dirección mac!" - -msgid "One or more fields contain invalid values!" -msgstr "¡Valores no válidos!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "¡Campos vacíos!" - -msgid "Open list..." -msgstr "Abrir lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Opción cambiada" - -msgid "Option removed" -msgstr "Opción eliminada" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opciones" - -msgid "Other:" -msgstr "Otros:" - -msgid "Out" -msgstr "Salida" - -msgid "Outbound:" -msgstr "Saliente:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Ignorar dirección MAC" - -msgid "Override MTU" -msgstr "Ignorar MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Ignorar la pasarela en las respuestas DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Ignorar la máscara de red enviada a los clientes. Normalmente se calcula " -"desde la subred desde la que se sirve." - -msgid "Override the table used for internal routes" -msgstr "Ignorar la tabla usada para rutas internas" - -msgid "Overview" -msgstr "Descripción general" - -msgid "Owner" -msgstr "Propietario" - -msgid "PAP/CHAP password" -msgstr "Contraseña PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Nombre de usuario PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Encapsulación PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "¡Se necesita el paquete libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Las listas de paquetes tienen más de 24 horas" - -msgid "Package name" -msgstr "Nombre del paquete" - -msgid "Packets" -msgstr "Paquetes" - -msgid "Part of zone %q" -msgstr "Parte de zona %q" - -msgid "Password" -msgstr "Contraseña" - -msgid "Password authentication" -msgstr "Autentificación de contraseña" - -msgid "Password of Private Key" -msgstr "Contraseña de la Clave Privada" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "¡Contraseña cambiada!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Ruta al Certificado CA" - -msgid "Path to Client-Certificate" -msgstr "Camino al certificado de cliente" - -msgid "Path to Private Key" -msgstr "Ruta a la Clave Privada" - -msgid "Path to executable which handles the button event" -msgstr "Ruta al ejecutable que maneja el evento button" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Pico:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Rearrancar" - -msgid "Perform reset" -msgstr "Reiniciar" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Ratio Phy:" - -msgid "Physical Settings" -msgstr "Configuración física" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Paq." - -msgid "Please enter your username and password." -msgstr "Por favor, introduzca su nombre de usuario y contraseña." - -msgid "Policy" -msgstr "Política" - -msgid "Port" -msgstr "Puerto" - -msgid "Port status:" -msgstr "Estado del puerto:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Asumir que el otro estará muerto tras estos fallos de echo LCP, use 0 para " -"ignorar fallos" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Impide la comunicación cliente a cliente" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Controlador inalámbrico 802.11n Prism2/2.5/3" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Proceder" - -msgid "Processes" -msgstr "Procesos" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Protocol family" -msgstr "Familia de procolo" - -msgid "Protocol of the new interface" -msgstr "Protocolo de la nueva interfaz" - -msgid "Protocol support is not installed" -msgstr "No está instalado el soporte al protocolo" - -msgid "Provide NTP server" -msgstr "Dar servicio NTP" - -msgid "Provide new network" -msgstr "Introduzca una nueva red" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Calidad" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Umbral RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Ratio RX" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "Controlador inalámbrico 802.11%s RaLink" - -msgid "Radius-Accounting-Port" -msgstr "Puerto de contabilidad Radius" - -msgid "Radius-Accounting-Secret" -msgstr "Secreto de contabilidad Radius" - -msgid "Radius-Accounting-Server" -msgstr "Servidor de contabilidad Radius" - -msgid "Radius-Authentication-Port" -msgstr "Puerto de autentificación Radius" - -msgid "Radius-Authentication-Secret" -msgstr "Secreto de autentificación Radius" - -msgid "Radius-Authentication-Server" -msgstr "Servidor de autentificación Radius" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Leer /etc/ethers para configurar el servidor DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"¿Está seguro de borrar esta interfaz?. ¡No será posible deshacer el " -"borrado!\n" -"Puede perder el acceso a este dispositivo si está conectado por esta " -"interfaz." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"¿Está seguro de borrar esta red inalámbrica?. ¡No será posible deshacer el " -"borrado!\n" -"Puede perder el acceso a este dispositivo si está conectado por esta red." - -msgid "Really reset all changes?" -msgstr "¿Está seguro de querer reiniciar todos los cambios?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"¿Está seguro de querer apagar esta red?.\n" -"Puede perder el acceso a este dispositivo si está conectado por esta red." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"¿Está seguro de apagar la interfaz \"%s\"?.\n" -"Puede perder el acceso a este dispositivo si está conectado por interfaz." - -msgid "Really switch protocol?" -msgstr "¿Está seguro de querer cambiar el protocolo?" - -msgid "Realtime Connections" -msgstr "Conexiones en tiempo real" - -msgid "Realtime Graphs" -msgstr "Gráficas en tiempo real" - -msgid "Realtime Load" -msgstr "Carga en tiempo real" - -msgid "Realtime Traffic" -msgstr "Tráfico en tiempo real" - -msgid "Realtime Wireless" -msgstr "Red inalámbrica en tiempo real" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Protección contra reasociación" - -msgid "Reboot" -msgstr "Rearrancar" - -msgid "Rebooting..." -msgstr "Rearrancando..." - -msgid "Reboots the operating system of your device" -msgstr "Rearranque el sistema operativo de su dispositivo" - -msgid "Receive" -msgstr "Recibir" - -msgid "Receiver Antenna" -msgstr "Antena Receptora" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconectar esta interfaz" - -msgid "Reconnecting interface" -msgstr "Reconectando la interfaz" - -msgid "References" -msgstr "Referencias" - -msgid "Relay" -msgstr "Relé" - -msgid "Relay Bridge" -msgstr "Puente relé" - -msgid "Relay between networks" -msgstr "Relé entre redes" - -msgid "Relay bridge" -msgstr "Puente relé" - -msgid "Remote IPv4 address" -msgstr "Dirección IPv4 remota" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Desinstalar" - -msgid "Repeat scan" -msgstr "Repetir exploración" - -msgid "Replace entry" -msgstr "Reemplazar entrada" - -msgid "Replace wireless configuration" -msgstr "Cambiar la configuración inalámbrica" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Necesario para ciertos ISPs, por ejemplo Charter con DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reiniciar" - -msgid "Reset Counters" -msgstr "Reiniciar contadores" - -msgid "Reset to defaults" -msgstr "Reiniciar a valores por defecto" - -msgid "Resolv and Hosts Files" -msgstr "Ficheros Resolv y Hosts" - -msgid "Resolve file" -msgstr "Fichero de resolución" - -msgid "Restart" -msgstr "Rearrancar" - -msgid "Restart Firewall" -msgstr "Rearrancar cortafuegos" - -msgid "Restore backup" -msgstr "Restaurar copia de seguridad" - -msgid "Reveal/hide password" -msgstr "Mostrar/ocultar contraseña" - -msgid "Revert" -msgstr "Anular" - -msgid "Root" -msgstr "Raíz" - -msgid "Root directory for files served via TFTP" -msgstr "Directorio raíz para los ficheros servidos por TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Contraseña del router" - -msgid "Routes" -msgstr "Rutas" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Las rutas especifican sobre qué interfaz y pasarela se puede llegar a una " -"cierta máquina o red." - -msgid "Run a filesystem check before mounting the device" -msgstr "Comprobar el sistema de ficheros antes de montar el dispositivo" - -msgid "Run filesystem check" -msgstr "Comprobar el sistema de ficheros" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Acceso SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Claves SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Guardar" - -msgid "Save & Apply" -msgstr "Guardar y aplicar" - -msgid "Save & Apply" -msgstr "Guardar y aplicar" - -msgid "Scan" -msgstr "Explorar" - -msgid "Scheduled Tasks" -msgstr "Tareas programadas" - -msgid "Section added" -msgstr "Sección añadida" - -msgid "Section removed" -msgstr "Sección eliminada" - -msgid "See \"mount\" manpage for details" -msgstr "Vea la página del manual de \"mount\" para detalles" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Enviar peticiones de echo LCP cada intervalo de segundos dado, solo efectivo " -"usado conjuntamente con el umbral de fallo" - -msgid "Separate Clients" -msgstr "Aislar clientes" - -msgid "Server Settings" -msgstr "Configuración del servidor" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Nombre de servicio" - -msgid "Service Type" -msgstr "Tipo de servicio" - -msgid "Services" -msgstr "Servicios" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Sincronización horaria" - -msgid "Setup DHCP Server" -msgstr "Configuración del servidor DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "Mostrar lista de ficheros a salvar" - -msgid "Shutdown this interface" -msgstr "Apagar esta interfaz" - -msgid "Shutdown this network" -msgstr "Apagar esta red" - -msgid "Signal" -msgstr "Señal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Señal:" - -msgid "Size" -msgstr "Tamaño" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Saltar" - -msgid "Skip to content" -msgstr "Saltar al contenido" - -msgid "Skip to navigation" -msgstr "Saltar a navegación" - -msgid "Slot time" -msgstr "Tiempo asignado" - -msgid "Software" -msgstr "Instalación de programas" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Algunos campos no son válidos, ¡no se pueden guardar!" - -msgid "Sorry, the object you requested was not found." -msgstr "Objeto no encontrado." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "El servidor encontró un error inesperado." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"No está instalado el soporte para el sysupgrade, la nueva imagen debe " -"grabarse manualmente. Por favor, mire el wiki para instrucciones de " -"instalación específicas." - -msgid "Sort" -msgstr "Ordenar" - -msgid "Source" -msgstr "Origen" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Especifica el estado de botón a manejar" - -msgid "Specifies the directory the device is attached to" -msgstr "Especifica el directorio al que está enlazado el dispositivo" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" -"Especifica los puertos de escucha de esta instancia de Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Especifica la cantidad de peticiones ARP fallidas hasta suponer muerta una " -"máquina" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Especifica la cantidad de segundos a transcurrir hasta suponer muerta una " -"máquina" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Especifica la clave secreta de encriptado." - -msgid "Start" -msgstr "Arrancar" - -msgid "Start priority" -msgstr "Prioridad de arranque" - -msgid "Startup" -msgstr "Arranque" - -msgid "Static IPv4 Routes" -msgstr "Rutas estáticas IPv4" - -msgid "Static IPv6 Routes" -msgstr "Rutas estáticas IPv6" - -msgid "Static Leases" -msgstr "Cesiones estáticas" - -msgid "Static Routes" -msgstr "Rutas estáticas" - -msgid "Static address" -msgstr "Dirección estática" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Las cesiones estáticas se usan para asignar direcciones IP fijas y nombres " -"simbólicos de máquina a clientes DHCP. También son necesarias para " -"configuraciones de interfaz no dinámica en las que a cada máquina siempre se " -"le quiere servir la misma dirección IP." - -msgid "Status" -msgstr "Estado" - -msgid "Stop" -msgstr "Parar" - -msgid "Strict order" -msgstr "Orden estricto" - -msgid "Submit" -msgstr "Guardar" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Entrada de intercambio" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "Switch %q" - -msgid "Switch %q (%s)" -msgstr "Switch %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Intercambiar protocolo" - -msgid "Sync with browser" -msgstr "Sincronizar con el navegador" - -msgid "Synchronizing..." -msgstr "Sincronizando..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registro del sistema" - -msgid "System Properties" -msgstr "Propiedades del sistema" - -msgid "System log buffer size" -msgstr "Tamaño del buffer de registro del sistema" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Configuración TFTP" - -msgid "TFTP server root" -msgstr "Raíz del servidor TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Ratio TX" - -msgid "Table" -msgstr "Tabla" - -# Target = Meta --> Objetivo --> Destino? -msgid "Target" -msgstr "Objetivo" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminar" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"La sección de Configuración del dispositivo ocupa la configuración " -"física del hardware de radio como el canal, la potencia de transmisión o la " -"selección de antena que se comparte entre todas las redes inalámbricas " -"definidas (si el hardware de radio es capaz de ser multi-SSID). " -"Configuración por red como encriptado o modo de operación se agrupan en " -"Configuración del interfaz." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"El paquete libiwinfo-lua no está instalado. ¡Debe instalarlo para " -"poder configurar la conectividad inalambrica!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"El prefijo IPv6 asignado por el proveedor, suele termina con ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Los caracteres permitidos son: A-Z, a-z, " -"0-9 y _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"El archivo de dispositivo de memoria o partición (e.j. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"El sistema de archivo que fue utilizado para dar formato a la memoria (Ej. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Imagen recibida. Verifique que la comprobación y tamaño del fichero recibido " -"coinciden con los del original.
    Pulse \"Proceder\" para empezar el " -"grabado." - -msgid "The following changes have been committed" -msgstr "Se han hecho los siguientes cambios" - -msgid "The following changes have been reverted" -msgstr "Se han anulado los siguientes cambios" - -msgid "The following rules are currently active on this system." -msgstr "Rutas activas." - -msgid "The given network name is not unique" -msgstr "Nombre de red repetido" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"El hardware no es capaz de multi-SSD y la configuración actual se cambiará " -"si continúa." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Longitud del prefijo IPv4 en bits, el resto se usará en direcciones IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Longitud del prefijo IPv6 en bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Los puertos de red de este dispositivo se pueden combinar en varias VLANs en las que los ordenadores " -"se pueden comunicar directamente entre ellos. Las VLANs se usan a menudo para separar diferentes " -"segmentos de red. Es común que exista un puerto por defecto para subida " -"hacia una red mayor como internet y el resto se dediquen a la red local." - -msgid "The selected protocol needs a device assigned" -msgstr "Este protocolo necesita estar asignado a un dispositivo" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"El sistema está borrando la partición de configuración y rearrancará cuando " -"termine." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Escribiendo en la memoria flash.
    ¡NO APAGUE EL DISPOSITIVO!
    " -"Espere unos minutos antes de reconectar. Es posible que tenga que renovar la " -"conexión de su ordenador para poder acceder de nuevo al dispositivo." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"El archivo con la imagen de firmware subido no tiene un formato adecuado. " -"Asegúrese de haber elegido la imagen correcta para su plataforma." - -msgid "There are no active leases." -msgstr "Sin cesiones activas." - -msgid "There are no pending changes to apply!" -msgstr "¡No hay cambios pendientes!" - -msgid "There are no pending changes to revert!" -msgstr "¡No hay cambios a anular!" - -msgid "There are no pending changes!" -msgstr "¡Sin cambios pendientes!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"No hay dispositivo asignado aún. Por favor, enlace un dispositivo de red en " -"la pestaña \"Configuración física\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"No hay contraseñas en este router. Por favor, configure una contraseña para " -"proteger el interfaz web y activar SSH." - -msgid "This IPv4 address of the relay" -msgstr "Dirección IPv4 del relé" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Lista de patrones shell con los ficheros y directorios que se deben incluir " -"en un sysupgrade. Los ficheros modificados en /etc/config/ y ciertas otras " -"configuraciones se guardarán automáticamente." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Contenido de /etc/rc.local. Ponga sus propios comandos aquí (antes de 'exit " -"0') para ejecutarlos al final del proceso de inicio." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"Esta es la dirección de punto final asignada por el broker del túnel, suele " -"terminar con :2" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Este es el único servidor DHCP en la red de área local" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Definición de tareas programadas para crontab." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Esta es normalmente la dirección del PoP más cercano operada por el broker " -"del túnel" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "Procesos de sistema que se están ejecutando actualmente y su estado." - -msgid "This page allows the configuration of custom button actions" -msgstr "Configuración de acciones personalizadas para los botones" - -msgid "This page gives an overview over currently active network connections." -msgstr "Conexiones de red activas." - -msgid "This section contains no values yet" -msgstr "No hay reglas definidas" - -msgid "Time Synchronization" -msgstr "Sincronización horaria" - -msgid "Time Synchronization is not configured yet." -msgstr "Sincronización horaria no configurada." - -msgid "Timezone" -msgstr "Zona horaria" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Para restaurar los ficheros de configuración, debe subir primero una copia " -"de seguridad." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total disponible" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Tráfico" - -msgid "Transfer" -msgstr "Transferencia" - -msgid "Transmission Rate" -msgstr "Tasa de Transmisión" - -msgid "Transmit" -msgstr "Transmitir" - -msgid "Transmit Power" -msgstr "Potencia de transmisión" - -msgid "Transmitter Antenna" -msgstr "Antena Transmisora" - -msgid "Trigger" -msgstr "Disparador" - -msgid "Trigger Mode" -msgstr "Modo de disparador" - -msgid "Tunnel ID" -msgstr "ID de túnel" - -msgid "Tunnel Interface" -msgstr "Interfaz de túnel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Potencia-TX" - -msgid "Type" -msgstr "Tipo" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Sólo UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Dispositivo USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Imposible repartir" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Desconocido" - -msgid "Unknown Error, password not changed!" -msgstr "Error desconocido, ¡no se ha cambiado la contraseña!" - -msgid "Unmanaged" -msgstr "No gestionado" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Cambios no guardados" - -msgid "Unsupported protocol type." -msgstr "Tipo de protocolo no soportado." - -msgid "Update lists" -msgstr "Actualizar listas" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Suba una imagen compatible con sysupgrade para reemplazar el firmware " -"actual. Puede marcar \"Conservar la configuración\" si lo desea (es " -"necesario que la imagen sea compatible)." - -msgid "Upload archive..." -msgstr "Subir archivo..." - -msgid "Uploaded File" -msgstr "Archivo subido" - -msgid "Uptime" -msgstr "Tiempo activo" - -msgid "Use /etc/ethers" -msgstr "Usar /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Usar pasarela DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Utiliza servidores DNS anunciados por otros" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Usa códigos de país ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "MTU a usar en el interfaz de túnel" - -msgid "Use TTL on tunnel interface" -msgstr "TTL a usar en el interfaz de túnel" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Usar marca de propagación" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Usar servidores DNS personalizados" - -msgid "Use default gateway" -msgstr "Usar pasarela por defecto" - -msgid "Use gateway metric" -msgstr "Usar métrica de la pasarela" - -msgid "Use routing table" -msgstr "Usar tabla de rutas" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Pulse el botón Añadir para insertar una nueva cesión. Dirección " -"MAC identificará la máquina, dirección IPv4 especificará la " -"dirección fija a usar y Nombre de máquina se asignará como nombre " -"simbólico." - -msgid "Used" -msgstr "Usado" - -msgid "Used Key Slot" -msgstr "Espacio de clave usado" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Nombre de usuario" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs en %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs en %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Servidor VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Clase de vendedor a enviar cuando solicite DHCP" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Verificar" - -msgid "Version" -msgstr "Versión" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistema abierto WEP" - -msgid "WEP Shared Key" -msgstr "Clave compartida WEP" - -msgid "WEP passphrase" -msgstr "Frase de paso WEP" - -msgid "WMM Mode" -msgstr "Modo WMM" - -msgid "WPA passphrase" -msgstr "Frase de paso WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Encryption necesita que estén instalados wpa_supplicant (para el modo " -"cliente o hostapd (para los modos AP y ad-hoc)." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "Esperando a que se realicen los cambios..." - -msgid "Waiting for command to complete..." -msgstr "Esperando a que termine el comando..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Aviso" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Red inalámbrica" - -msgid "Wireless Adapter" -msgstr "Adaptador inalámbrico" - -msgid "Wireless Network" -msgstr "Red inalámbrica" - -msgid "Wireless Overview" -msgstr "Redes inalámbricas" - -msgid "Wireless Security" -msgstr "Seguridad inalámbrica" - -msgid "Wireless is disabled or not associated" -msgstr "Red inalámbrica desconectada o no asociada" - -msgid "Wireless is restarting..." -msgstr "Rearrancando red inalámbrica..." - -msgid "Wireless network is disabled" -msgstr "Red inalámbrica desconectada" - -msgid "Wireless network is enabled" -msgstr "Red inalámbrica conectada" - -msgid "Wireless restarted" -msgstr "Red inalámbrica rearrancada" - -msgid "Wireless shut down" -msgstr "Apagando red inalámbrica" - -msgid "Write received DNS requests to syslog" -msgstr "Escribir las peticiones de DNS recibidas en el registro del sistema" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Gestione los scripts de inicio. Los cambios serán aplicados tras reiniciar " -"el equipo.
    ADVERTENCIA: ¡Si desactiva scripts de inicio " -"esenciales como\"network\", su equipo puede no arrancar o quedar " -"inaccesible!." - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Debe activar JavaScript en su navegador o LuCI no funcionará correctamente." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "cualquiera" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "puenteado" - -msgid "create:" -msgstr "crear:" - -msgid "creates a bridge over specified interface(s)" -msgstr "crea un puente sobre la interfaz o interfaces asociadas" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "desabilitar" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expirado" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"archivo en el que se guardarán las direcciones DHCP cedidas" - -msgid "forward" -msgstr "retransmisión" - -msgid "full-duplex" -msgstr "full dúplex" - -msgid "half-duplex" -msgstr "half dúplex" - -msgid "help" -msgstr "ayuda" - -msgid "hidden" -msgstr "oculto" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "si el destino es una red" - -msgid "input" -msgstr "entrada" - -msgid "kB" -msgstr "KB" - -msgid "kB/s" -msgstr "KB/s" - -msgid "kbit/s" -msgstr "Kbit/s" - -msgid "local DNS file" -msgstr "Archvo DNS local" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "no" - -msgid "no link" -msgstr "sin enlace" - -msgid "none" -msgstr "ninguno" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "parado" - -msgid "on" -msgstr "activo" - -msgid "open" -msgstr "abierto" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "enrutado" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "marcado" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "desconocido" - -msgid "unlimited" -msgstr "ilimitado" - -msgid "unspecified" -msgstr "no especificado" - -msgid "unspecified -or- create:" -msgstr "no especificado -o- crear:" - -msgid "untagged" -msgstr "desmarcado" - -msgid "yes" -msgstr "sí" - -msgid "« Back" -msgstr "« Volver" - -#~ msgid "Leasetime" -#~ msgstr "Tiempo de cesión" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "estático" - -#~ msgid "AR Support" -#~ msgstr "Soporte a AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Controlador inalámbrico 802.11%s Atheros" - -#~ msgid "Background Scan" -#~ msgstr "Exploración en segundo plano" - -#~ msgid "Compression" -#~ msgstr "Compresión" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Desactivar el temporizador de baliza hardware" - -#~ msgid "Do not send probe responses" -#~ msgstr "No enviar respuestas de prueba" - -#~ msgid "Fast Frames" -#~ msgstr "Tramas rápidas" - -#~ msgid "Maximum Rate" -#~ msgstr "Ratio Máximo" - -#~ msgid "Minimum Rate" -#~ msgstr "Ratio mínimo" - -#~ msgid "Multicast Rate" -#~ msgstr "Ratio multicast" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canales al aire libre" - -#~ msgid "Regulatory Domain" -#~ msgstr "Dominio Regulador" - -#~ msgid "Separate WDS" -#~ msgstr "WDS aislado" - -#~ msgid "Static WDS" -#~ msgstr "WDS estático" - -#~ msgid "Turbo Mode" -#~ msgstr "Modo Turbo" - -#~ msgid "XR Support" -#~ msgstr "Soporte de XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Se creará una red adicional si deja esto desmarcado." - -#~ msgid "Join Network: Settings" -#~ msgstr "Unirse a Red: Configuración" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Puerto %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "¡El puerto %d está desmarcado en múltiples VLANs!" - -#~ msgid "VLAN Interface" -#~ msgstr "Interfaz VLAN" diff --git a/package/luci/modules/luci-base/po/fr/base.po b/package/luci/modules/luci-base/po/fr/base.po deleted file mode 100644 index a94ffb3a88..0000000000 --- a/package/luci/modules/luci-base/po/fr/base.po +++ /dev/null @@ -1,4045 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2013-12-22 17:11+0200\n" -"Last-Translator: goofy \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(fenêtre de %d minutes, intervalle de %d secondes)" - -msgid "(%s available)" -msgstr "(%s disponible)" - -msgid "(empty)" -msgstr "(vide)" - -msgid "(no interfaces attached)" -msgstr "(pas d'interface connectée)" - -msgid "-- Additional Field --" -msgstr "-- Champ Supplémentaire --" - -msgid "-- Please choose --" -msgstr "-- Choisir --" - -msgid "-- custom --" -msgstr "-- autre --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Charge sur 1 minute :" - -msgid "15 Minute Load:" -msgstr "Charge sur 15 minutes :" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Charge sur 5 minutes :" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "Port des requêtes DNS" - -msgid "DNS server port" -msgstr "Port du serveur DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Les serveurs DNS seront
    interrogés dans l'ordre du fichier de résolution" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Adresse IPv4" - -msgid "IPv4-Gateway" -msgstr "Passerelle IPv4" - -msgid "IPv4-Netmask" -msgstr "Masque réseau IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Adresse ou réseau IPv6 " -"(notation CIDR)" - -msgid "IPv6-Gateway" -msgstr "Passerelle IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "" -"Configuration des DELs" - -msgid "LED Name" -msgstr "Nom de la DEL" - -msgid "MAC-Address" -msgstr "Adresse MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Nombre de baux DHCP maximum" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"taille maximum des paquets EDNS0" - -msgid "Max. concurrent queries" -msgstr "Maximum de requêtes concurrentes" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Niveau de ré-essai ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Ponts ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" -"Identifiant de canal virtuel (VCI) ATM" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" -"Identifiant de chemin virtuel (VPI) ATM" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Les ponts ATM présentent l'Ethernet encapsulé dans des connexions AAL5 comme " -"des interfaces réseau virtuelles Linux qui peuvent être utilisées avec DHCP " -"ou PPP pour se connecter au réseau du fournisseur d'accès." - -msgid "ATM device number" -msgstr "Numéro de périphérique ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrateur d'accès" - -msgid "Access Point" -msgstr "Point d'accès" - -msgid "Action" -msgstr "Action" - -msgid "Actions" -msgstr "Actions" - -msgid "Activate this network" -msgstr "Activer ce réseau" - -msgid "Active IPv4-Routes" -msgstr "Routes IPv4 actives" - -msgid "Active IPv6-Routes" -msgstr "Routes IPv6 actives" - -msgid "Active Connections" -msgstr "Connexions actives" - -msgid "Active DHCP Leases" -msgstr "Bails DHCP actifs" - -msgid "Active DHCPv6 Leases" -msgstr "Bails DHCPv6 actifs" - -msgid "Ad-Hoc" -msgstr "Ad-hoc" - -msgid "Add" -msgstr "Ajouter" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Ajouter le suffixe du domaine local aux noms résolus d'après le fichier hosts" - -msgid "Add new interface..." -msgstr "Ajout d'une nouvelle interface..." - -msgid "Additional Hosts files" -msgstr "Fichiers hosts supplémetaires" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresse" - -msgid "Address to access local relay bridge" -msgstr "Adresse pour accéder au pont-relais local" - -msgid "Administration" -msgstr "Administration" - -msgid "Advanced Settings" -msgstr "Paramètres avancés" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerte" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Autoriser l'authentification SSH par mot " -"de passe" - -msgid "Allow all except listed" -msgstr "Autoriser tout sauf ce qui est listé" - -msgid "Allow listed only" -msgstr "Autoriser seulement ce qui est listé" - -msgid "Allow localhost" -msgstr "Autoriser l'hôte local" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permettre à des hôtes distants de se conecter à des ports SSH locaux " -"correspondants (« forwarded »)" - -msgid "Allow root logins with password" -msgstr "Autoriser les connexions administrateur avec mot de passe" - -msgid "Allow the root user to login with password" -msgstr "" -"Autoriser l'utilisateur root à se connecter avec un mot de passe" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Autorise les réponses de l'amont dans la plage 127.0.0.0/8, par ex. pour les " -"services RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antenne 1" - -msgid "Antenna 2" -msgstr "Antenne 2" - -msgid "Antenna Configuration" -msgstr "Configuration de l'antenne" - -msgid "Any zone" -msgstr "N'importe quelle zone" - -msgid "Apply" -msgstr "Appliquer" - -msgid "Applying changes" -msgstr "Changements en cours" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Affecte les interfaces…" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Équipements associés" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Authentification" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritaire" - -msgid "Authorization Required" -msgstr "Autorisation requise" - -msgid "Auto Refresh" -msgstr "Rafraîchissement automatique" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponible" - -msgid "Available packages" -msgstr "Paquets disponibles" - -msgid "Average:" -msgstr "Moyenne :" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Retour" - -msgid "Back to Overview" -msgstr "Retour à la vue générale" - -msgid "Back to configuration" -msgstr "Retour à la configuration" - -msgid "Back to overview" -msgstr "Retour à la vue générale" - -msgid "Back to scan results" -msgstr "Retour aux résultats de la recherche" - -msgid "Backup / Flash Firmware" -msgstr "Sauvegarde / Mise à jour du micrologiciel" - -msgid "Backup / Restore" -msgstr "Sauvegarder / Restaurer" - -msgid "Backup file list" -msgstr "Liste des fichiers de sauvegarde" - -msgid "Bad address specified!" -msgstr "Adresse spécifiée incorrecte!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Voici la liste des fichiers à sauvegarder. Elle est constituée des fichiers " -"de configuration modifiés marqués par opkg, des fichiers de base essentiels, " -"et des motifs de sauvegarde définis par l'utilisateur." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Débit" - -msgid "Bogus NX Domain Override" -msgstr "Contourne les «  NX Domain » bogués" - -msgid "Bridge" -msgstr "Pont" - -msgid "Bridge interfaces" -msgstr "Interfaces en pont" - -msgid "Bridge unit number" -msgstr "Numéro d'unité du pont" - -msgid "Bring up on boot" -msgstr "L'activer au démarrage" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Contrôleur sans fil Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Contrôleur sans fil Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "Temporisé" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Boutons" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Utilisation CPU (%)" - -msgid "Cancel" -msgstr "Annuler" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Chaîne" - -msgid "Changes" -msgstr "Changements" - -msgid "Changes applied." -msgstr "Changements appliqués." - -msgid "Changes the administrator password for accessing the device" -msgstr "Change le mot de passe administrateur pour accéder à l'équipement" - -msgid "Channel" -msgstr "Canal" - -msgid "Check" -msgstr "Vérification" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Somme de contrôle" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Choisissez la zone de pare-feu à laquelle vous voulez affecter cette " -"interface. Sélectionnez non précisé pour retirer l'interface de la " -"zone associée, ou remplissez le champ créer pour définir une " -"nouvelle zone et y inclure cette interface." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Choisissez le(s) réseau(x) que vous souhaitez attachez a cette interface " -"sans-fil ou remplissez le créer champ pour définir un nouveau " -"réseau. " - -msgid "Cipher" -msgstr "Code de chiffrement" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Cliquer sur \"Construire l'archive\" pour télécharger une archive tar des " -"fichiers de la configuration actuelle. Pour réinitialiser le micrologiciel " -"dans son état initial, cliquer sur \"Réinitialiser\" (possible seulement " -"avec les images de type squashfs)." - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "Identifiant client à envoyer dans les requêtes DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Fermer une connexion inactive après le délai donné en secondes, mettre 0 " -"pour garder les connexions" - -msgid "Close list..." -msgstr "Fermer la liste…" - -msgid "Collecting data..." -msgstr "Récupération de données..." - -msgid "Command" -msgstr "Commande" - -msgid "Common Configuration" -msgstr "Configuration commune" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuration" - -msgid "Configuration applied." -msgstr "Configuration appliquée." - -msgid "Configuration files will be kept." -msgstr "Les fichiers de configuration seront préservés." - -msgid "Confirmation" -msgstr "Confirmation" - -msgid "Connect" -msgstr "Se connecter" - -msgid "Connected" -msgstr "Connecté" - -msgid "Connection Limit" -msgstr "Limite de connexion" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Connexions" - -msgid "Country" -msgstr "Pays" - -msgid "Country Code" -msgstr "Code pays" - -msgid "Cover the following interface" -msgstr "Couvre l'interface suivante" - -msgid "Cover the following interfaces" -msgstr "Couvre les interfaces suivantes" - -msgid "Create / Assign firewall-zone" -msgstr "Créer / Assigner une zone du pare-feu" - -msgid "Create Interface" -msgstr "Créer une interface" - -msgid "Create a bridge over multiple interfaces" -msgstr "Créer un pont par dessus plusieurs interfaces" - -msgid "Critical" -msgstr "Critique" - -msgid "Cron Log Level" -msgstr "Niveau de journalisation de Cron" - -msgid "Custom Interface" -msgstr "Interface spécifique" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Personnaliser le comportement des DELs si possible." - -msgid "DHCP Leases" -msgstr "Baux DHCP" - -msgid "DHCP Server" -msgstr "Serveur DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP et DNS" - -msgid "DHCP client" -msgstr "client DHCP" - -msgid "DHCP-Options" -msgstr "Options DHCP" - -msgid "DHCPv6 Leases" -msgstr "Bails DHCPv6" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "transmissions DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Deboguage" - -msgid "Default %d" -msgstr "%d par défaut" - -msgid "Default gateway" -msgstr "Passerelle par défaut" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "État par défaut" - -msgid "Define a name for this network." -msgstr "Donne un nom à ce réseau." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Définir des options DHCP supplémentaires, par exemple " -"\"6,192.168.2.1,192.168.2.2\" qui publie différents serveurs " -"DNS à ses clients." - -msgid "Delete" -msgstr "Effacer" - -msgid "Delete this network" -msgstr "Supprimer ce réseau" - -msgid "Description" -msgstr "Description" - -msgid "Design" -msgstr "Apparence" - -msgid "Destination" -msgstr "Destination" - -msgid "Device" -msgstr "Équipement" - -msgid "Device Configuration" -msgstr "Configuration de l'équipement" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnostics" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Répertoire" - -msgid "Disable" -msgstr "Désactiver" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Désactiver DHCP " -"pour cette interface." - -msgid "Disable DNS setup" -msgstr "Désactiver la configuration DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Désactivé" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Jeter les réponses en RFC1918 amont" - -msgid "Displaying only packages containing" -msgstr "N'afficher que les paquets contenant" - -msgid "Distance Optimization" -msgstr "Optimisation de la distance" - -msgid "Distance to farthest network member in meters." -msgstr "Distance au membre du réseau le plus éloigné, en mètres." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversité" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq est un serveur DHCP combiné à un relais DNS pour les pare-feu NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Ne pas mettre en cache les réponses négatives, par ex. pour des domaines " -"inexistants" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Ne pas transmettre les requêtes qui ne peuvent être résolues par les " -"serveurs de noms publics" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" -"Ne pas transmettre les requêtes de recherche inverse pour les réseaux locaux" - -msgid "Domain required" -msgstr "Domaine nécessaire" - -msgid "Domain whitelist" -msgstr "Liste blanche de domaines" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Ne pas transmettre de requêtes DNS " -"sans nom DNS" - -msgid "Download and install package" -msgstr "Télécharge et installe le paquet" - -msgid "Download backup" -msgstr "Télécharger la sauvegarde" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Session Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear est un serveur SSH et intègre " -"un serveur SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP dynamique" - -msgid "Dynamic tunnel" -msgstr "Tunnel dynamique" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Alloue dynamiquement des adresses pour les clients du DHCP. Si désactivé, " -"seuls les clients ayant des baux statiques seront gérés." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Méthode EAP" - -msgid "Edit" -msgstr "Éditer" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Éditer cette interface" - -msgid "Edit this network" -msgstr "Éditer ce réseau" - -msgid "Emergency" -msgstr "Urgence" - -msgid "Enable" -msgstr "Activer" - -msgid "Enable STP" -msgstr "Activer le protocole STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Activer la mise à jour dynamique de l'extrémité du tunnel chez HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Activer la négociation IPv6 sur le lien PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Activer la circulation de très grandes trames (Jumbo)" - -msgid "Enable NTP client" -msgstr "Activer client NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Activer le serveur TFTP" - -msgid "Enable VLAN functionality" -msgstr "Acviter la gestion des VLANs" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Activer l'apprentissage et la péremption" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Activer ce montage" - -msgid "Enable this swap" -msgstr "Activer cette mémoire d'échange (swap)" - -msgid "Enable/Disable" -msgstr "Activer/Désactiver" - -msgid "Enabled" -msgstr "Activé" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" -"Activer le protocole STP sur " -"ce pont" - -msgid "Encapsulation mode" -msgstr "Mode encapsulé" - -msgid "Encryption" -msgstr "Chiffrement" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Effacement…" - -msgid "Error" -msgstr "Erreur" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Module Ethernet" - -msgid "Ethernet Switch" -msgstr "Commutateur Ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Étendre le nom d'hôte" - -msgid "Expires" -msgstr "Expire" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Délai d'expiration des adresses allouées, le minimum est de 2 minutes " -"(2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Serveur distant de journaux système" - -msgid "External system log server port" -msgstr "Port du serveur distant de journaux système" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Fichier" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nom de fichier d'une image de démarrage publiée aux clients" - -msgid "Filesystem" -msgstr "Système de fichiers" - -msgid "Filter" -msgstr "Filtrer" - -msgid "Filter private" -msgstr "Filtrer les requêtes privées" - -msgid "Filter useless" -msgstr "Filtrer les requêtes inutiles" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Cherche et rejoint un réseau" - -msgid "Find package" -msgstr "Trouver un paquet" - -msgid "Finish" -msgstr "Terminer" - -msgid "Firewall" -msgstr "Pare-feu" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Paramètres du pare-feu" - -msgid "Firewall Status" -msgstr "État du pare-feu" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Version du micrologiciel" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Port source fixe pour les requêtes DNS sortantes" - -msgid "Flash Firmware" -msgstr "Mise à jour du micrologiciel" - -msgid "Flash image..." -msgstr "Écriture de l'image…" - -msgid "Flash new firmware image" -msgstr "Écrire l'image du nouveau micrologiciel" - -msgid "Flash operations" -msgstr "Opérations d'écriture" - -msgid "Flashing..." -msgstr "Écriture…" - -msgid "Force" -msgstr "Forcer" - -msgid "Force CCMP (AES)" -msgstr "Forcer CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Force le DHCP sur ce réseau même si un autre serveur est détecté." - -msgid "Force TKIP" -msgstr "Forcer TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forcer TKIP et CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Transmettre le trafic DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Transmettre le trafic de diffusion" - -msgid "Forwarding mode" -msgstr "Mode de transmission" - -msgid "Fragmentation Threshold" -msgstr "Seuil de fragmentation" - -msgid "Frame Bursting" -msgstr "Rafale de trames" - -msgid "Free" -msgstr "Libre" - -msgid "Free space" -msgstr "Espace libre" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "Ghz" - -msgid "GPRS only" -msgstr "seulement GPRS" - -msgid "Gateway" -msgstr "Passerelle" - -msgid "Gateway ports" -msgstr "Ports de la passerelle" - -msgid "General Settings" -msgstr "Paramètres généraux" - -msgid "General Setup" -msgstr "Configuration générale" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Construire l'archive" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Contrôleur sans fil générique 802.11%s" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"La confirmation du nouveau mot de passe ne correspond pas, changement " -"annulé !" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Aller à la configuration du mot de passe…" - -msgid "Go to relevant configuration page" -msgstr "Aller à la page de configuration correspondante" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Mot de passe HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Gestionnaire" - -msgid "Hang Up" -msgstr "Signal (HUP)" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Ici, vous pouvez configurer les aspects basiques de votre routeur comme son " -"nom ou son fuseau horaire." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Vous pouvez copier ici des clés SSH publiques (une par ligne) pour une " -"authentification SSH sur clés publiques." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Contrôleur sans fil Hermes 802.11b" - -msgid "Hide ESSID" -msgstr "Cacher le ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Entrées d'hôtes" - -msgid "Host expiry timeout" -msgstr "Délai d'expiration pour les hôtes" - -msgid "Host-IP or Network" -msgstr "adresse IP ou réseau" - -msgid "Hostname" -msgstr "Nom d'hôte" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nom d'hôte à envoyer dans une requête DHCP" - -msgid "Hostnames" -msgstr "Noms d'hôtes" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Adresse IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Pare-feu IPv4" - -msgid "IPv4 WAN Status" -msgstr "État IPv4 du WAN" - -msgid "IPv4 address" -msgstr "Adresse IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 et IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Diffusion IPv4" - -msgid "IPv4 gateway" -msgstr "Passerelle IPv4" - -msgid "IPv4 netmask" -msgstr "Masque-réseau IPv4" - -msgid "IPv4 only" -msgstr "IPv4 seulement" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "longueur du préfixe IPv4" - -msgid "IPv4-Address" -msgstr "Adresse IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Pare-feu IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "État IPv6 du WAN" - -msgid "IPv6 address" -msgstr "Adresse IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Passerelle IPv6" - -msgid "IPv6 only" -msgstr "IPv6 seulement" - -msgid "IPv6 prefix" -msgstr "Préfixe IPv6" - -msgid "IPv6 prefix length" -msgstr "longueur du préfixe IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Adresse IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6 dans IPv4 (RFC 4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6 sur IPv4 (6ème)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6 sur IPv4 (6 vers 4)" - -msgid "Identity" -msgstr "Identité" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Monte le périphérique identifié par cet UUID au lieu d'un nom de " -"périphérique fixe" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Monte le périphérique identifié par cette étiquette au lieu d'un nom de " -"périphérique fixe" - -msgid "If unchecked, no default route is configured" -msgstr "Décoché, aucune route par défaut n'est configurée" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Décoché, les adresses des serveurs DNS publiés sont ignorées" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Si la mémoire physique n'est pas en quantité suffisante, les données " -"inutilisées peuvent être temporairement transférée sur une partition " -"d'échange, relevant la quantité de RAM disponible. Ce processus est lent car " -"la mémoire d'échange ne peut être accédée aux taux de transfert de la RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignorer /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorer l'interface" - -msgid "Ignore resolve file" -msgstr "Ignorer le fichier de résolution" - -msgid "Image" -msgstr "Image" - -msgid "In" -msgstr "Entrée" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Délai d'inactivité" - -msgid "Inbound:" -msgstr "Intérieur :" - -msgid "Info" -msgstr "Info" - -msgid "Initscript" -msgstr "Script d'initialisation" - -msgid "Initscripts" -msgstr "Scripts d'initialisation" - -msgid "Install" -msgstr "Installer" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Installer le paquet %q" - -msgid "Install protocol extensions..." -msgstr "Installation des extensions de protocole…" - -msgid "Installed packages" -msgstr "Paquets installés" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuration de l'interface" - -msgid "Interface Overview" -msgstr "Vue d'ensemble de l'interface" - -msgid "Interface is reconnecting..." -msgstr "L'interface se reconnecte…" - -msgid "Interface is shutting down..." -msgstr "L'interface s'arrête…" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "L'interface n'est pas présente ou pas encore connectée." - -msgid "Interface reconnected" -msgstr "Interface reconnectée" - -msgid "Interface shut down" -msgstr "Interface arrêtée" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Erreur Serveur Interne" - -msgid "Invalid" -msgstr "Erreur : donnée entrée invalide" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"Identifiant VLAN invalide !Seuls les IDs entre %d et %d sont autorisés." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" -"Identifiant VLAN donné invalide ! Seuls les identifiants uniques sont " -"autorisés" - -msgid "Invalid username and/or password! Please try again." -msgstr "Nom d'utilisateur et/ou mot de passe invalides ! Réessayez !" - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Il semble que vous essayez de programmer votre routeur avec une image qui ne " -"tient pas dans sa mémoire flash, vérifiez s'il vous plait votre fichier-" -"image !" - -msgid "JavaScript required!" -msgstr "Nécessite un Script Java !" - -msgid "Join Network" -msgstr "Rejoindre un réseau" - -msgid "Join Network: Wireless Scan" -msgstr "Rejoindre un réseau : recherche des réseaux sans-fil" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Garder le paramètrage" - -msgid "Kernel Log" -msgstr "Journal du noyau" - -msgid "Kernel Version" -msgstr "Version du noyau" - -msgid "Key" -msgstr "Clé" - -msgid "Key #%d" -msgstr "Clé n° %d" - -msgid "Kill" -msgstr "Tuer" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Serveur L2TP" - -msgid "LCP echo failure threshold" -msgstr "Seuil d'erreur des échos LCP" - -msgid "LCP echo interval" -msgstr "Intervalle entre échos LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Étiquette" - -msgid "Language" -msgstr "Langue" - -msgid "Language and Style" -msgstr "Langue et apparence" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Durée de validité d'un bail" - -msgid "Leasefile" -msgstr "Fichier de baux" - -msgid "Leasetime remaining" -msgstr "Durée de validité" - -msgid "Leave empty to autodetect" -msgstr "Laisser vide pour l'auto-détection" - -msgid "Leave empty to use the current WAN address" -msgstr "Laisser vide pour utiliser l'adresse WAN actuelle" - -msgid "Legend:" -msgstr "Légende :" - -msgid "Limit" -msgstr "Limite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Lien établi" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Liste des serveurs auquels sont transmis les requêtes DNS" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Liste des domaines où sont permises les réponses de type RFC1918" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" -"Liste des hôtes qui fournissent des résultats avec des « NX domain » bogués" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "Écouter seulement sur l'interface spécifié, sinon sur toutes" - -msgid "Listening port for inbound DNS queries" -msgstr "Port d'écoute des requêtes DNS entrantes" - -msgid "Load" -msgstr "Charger" - -msgid "Load Average" -msgstr "Charge moyenne" - -msgid "Loading" -msgstr "Chargement" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Adresse IPv4 locale" - -msgid "Local IPv6 address" -msgstr "Adresse IPv6 locale" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Démarrage local" - -msgid "Local Time" -msgstr "Heure Locale" - -msgid "Local domain" -msgstr "Domaine local" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Domaine local à préciser. Les noms correspondants à ce domaine ne sont " -"jamais transmis, mais résolus seulement depuis le serveur DHCP ou le fichier " -"Hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Suffixe du domaine local ajouté aux noms du serveur DHCP et du fichier Hosts" - -msgid "Local server" -msgstr "Serveur local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Trouve le nom d'hôte suivant le sous-réseau d'où vient la requête si " -"plusieurs adresses IPs sont possibles" - -msgid "Localise queries" -msgstr "Localiser les requêtes" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Niveau de journalisation" - -msgid "Log queries" -msgstr "Journaliser les requêtes" - -msgid "Logging" -msgstr "Journalisation" - -msgid "Login" -msgstr "Connexion" - -msgid "Logout" -msgstr "Déconnexion" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" -"Adresse allouée la plus basse, spécifiée par un décalage à partir de " -"l'adresse réseau." - -msgid "MAC-Address" -msgstr "Adresse MAC" - -msgid "MAC-Address Filter" -msgstr "Filtrage par adresses MAC" - -msgid "MAC-Filter" -msgstr "Filtrage par adresses MAC" - -msgid "MAC-List" -msgstr "Liste des adresses MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Nombre maximum de baux DHCP actifs" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Nombre maximum de requêtes DNS au même moment" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Taille maximum autorisée des paquets UDP EDNS.0" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Délai d'attente maximum que le modem soit prêt" - -msgid "Maximum hold time" -msgstr "Temps de maintien maximum" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Nombre maximum d'adresses allouées." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Mémoire" - -msgid "Memory usage (%)" -msgstr "Utilisation Mémoire (%)" - -msgid "Metric" -msgstr "Metrique" - -msgid "Minimum hold time" -msgstr "Temps de maintien mimimum" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Extention de protocole manquante pour le proto %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mode" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Interface Modem" - -msgid "Modem init timeout" -msgstr "Délai max. d'initialisation du modem" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Montage" - -msgid "Mount Point" -msgstr "Point de montage" - -msgid "Mount Points" -msgstr "Point de montage" - -msgid "Mount Points - Mount Entry" -msgstr "Points de montage - élément à monter" - -msgid "Mount Points - Swap Entry" -msgstr "Points de montage - partition d'échange" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Les points de montage définissent l'attachement d'un périphérique au système " -"de fichier" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Options de montage" - -msgid "Mount point" -msgstr "Point de montage" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Systèmes de fichiers montés" - -msgid "Move down" -msgstr "Descendre" - -msgid "Move up" -msgstr "Monter" - -msgid "Multicast address" -msgstr "Adresse multidiffusion" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Serveurs NTP candidats" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Nom" - -msgid "Name of the new interface" -msgstr "Nom de la nouvelle interface" - -msgid "Name of the new network" -msgstr "Nom du nouveau réseau" - -msgid "Navigation" -msgstr "Navigation" - -msgid "Netmask" -msgstr "Masque de réseau" - -msgid "Network" -msgstr "Réseau" - -msgid "Network Utilities" -msgstr "Utilitaires réseau" - -msgid "Network boot image" -msgstr "Image de démarrage réseau" - -msgid "Network without interfaces." -msgstr "Réseau sans interfaces." - -msgid "Next »" -msgstr "Prochain »" - -msgid "No DHCP Server configured for this interface" -msgstr "Aucun serveur DHCP configuré sur cette interface" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Aucune chaîne dans cette table" - -msgid "No files found" -msgstr "Aucun fichier trouvé" - -msgid "No information available" -msgstr "Information indisponible" - -msgid "No negative cache" -msgstr "Pas de cache négatif" - -msgid "No network configured on this device" -msgstr "Ce périphérique n'a aucune adresse configurée" - -msgid "No network name specified" -msgstr "Aucun nom de réseau donné" - -msgid "No package lists available" -msgstr "Aucune liste de paquets disponible" - -msgid "No password set!" -msgstr "Pas de mot de passe positionné !" - -msgid "No rules in this chain" -msgstr "Aucune règle dans cette chaîne" - -msgid "No zone assigned" -msgstr "Aucune zone attribuée" - -msgid "Noise" -msgstr "Bruit" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Bruit :" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Vide" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Pas trouvé" - -msgid "Not associated" -msgstr "Pas associé" - -msgid "Not connected" -msgstr "Non connecté" - -msgid "Note: Configuration files will be erased." -msgstr "Note : les fichiers de configuration seront effacés." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Note" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configuration OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "Durée éteinte" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Dans cette page vous pourrez configurer les interfaces réseaux. Vous pouvez " -"bridger différentes interfaces en cochant le champ \"bridger les interfaces" -"\" et en saisissant les noms des interfaces réseau séparées par des espaces. " -"Vous pouvez aussi utiliser la notation VLAN, INTERFACE.VLANNB (ex : eth0.1)." - -msgid "On-State Delay" -msgstr "Durée allumée" - -msgid "One of hostname or mac address must be specified!" -msgstr "Il faut indiquer un nom d'hôte ou une adresse MAC !" - -msgid "One or more fields contain invalid values!" -msgstr "Un ou plusieurs champs contiennent des valeurs incorrectes !" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Un ou plusieurs champs n'ont pas de valeur !" - -msgid "Open list..." -msgstr "Ouvrir la liste…" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Option modifiée" - -msgid "Option removed" -msgstr "Option retirée" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Options" - -msgid "Other:" -msgstr "Autres :" - -msgid "Out" -msgstr "Sortie" - -msgid "Outbound:" -msgstr "Extérieur :" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Modifier l'adresse MAC" - -msgid "Override MTU" -msgstr "Modifier le MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Modifier la passerelle dans les réponses DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Remplacer le masque réseau envoyés aux clients. Il est normalement calculé à " -"partir du sous-réseau géré." - -msgid "Override the table used for internal routes" -msgstr "Modifier la table utilisée pour les routes internes" - -msgid "Overview" -msgstr "Vue d'ensemble" - -msgid "Owner" -msgstr "Propriétaire" - -msgid "PAP/CHAP password" -msgstr "Mot de passe PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Identifiant PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "code PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Encapsulation" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Nécessite le paquet libiwinfo !" - -msgid "Package lists are older than 24 hours" -msgstr "Les listes de paquets ont plus de 24 heures" - -msgid "Package name" -msgstr "Nom du paquet" - -msgid "Packets" -msgstr "Paquets" - -msgid "Part of zone %q" -msgstr "Fait partie de la zone %q" - -msgid "Password" -msgstr "Mot de passe" - -msgid "Password authentication" -msgstr "Authentification par mot de passe" - -msgid "Password of Private Key" -msgstr "Mot de passe de la clé privée" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Mot de passe changé avec succès !" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Chemin de la CA" - -msgid "Path to Client-Certificate" -msgstr "Chemin du certificat-client" - -msgid "Path to Private Key" -msgstr "Chemin de la clé privée" - -msgid "Path to executable which handles the button event" -msgstr "Chemin du programme exécutable gérant les évènements liés au bouton" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Pic :" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Redémarrer" - -msgid "Perform reset" -msgstr "Réinitialiser" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Débit de la puce:" - -msgid "Physical Settings" -msgstr "Paramètres physiques" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pqts." - -msgid "Please enter your username and password." -msgstr "Saisissez votre nom d'utilisateur et mot de passe." - -msgid "Policy" -msgstr "Politique" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Statut du port :" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Suppose que le distant a disparu une fois le nombre donné d'erreurs d'échos " -"LCP ; utiliser 0 pour ignorer ces erreurs" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Empêche la communication directe entre clients" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Contrôleur sans fil Prism2/2.5/3 802.11b" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Continuer" - -msgid "Processes" -msgstr "Processus" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocole" - -msgid "Protocol family" -msgstr "Famille du protocole" - -msgid "Protocol of the new interface" -msgstr "Protocole de la nouvelle interface" - -msgid "Protocol support is not installed" -msgstr "La gestion du protocole n'est pas installée" - -msgid "Provide NTP server" -msgstr "Fournir serveur NTP" - -msgid "Provide new network" -msgstr "Donner un nouveau réseau" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Qualitée" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Seuil RTS/CTS" - -msgid "RX" -msgstr "Reçu" - -msgid "RX Rate" -msgstr "Débit en réception" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "Contrôleur sans fil RaLink 802.11%s" - -msgid "Radius-Accounting-Port" -msgstr "Port de la comptabilisation Radius" - -msgid "Radius-Accounting-Secret" -msgstr "Secret de la comptabilisation Radius" - -msgid "Radius-Accounting-Server" -msgstr "Serveur de la comptabilisation Radius" - -msgid "Radius-Authentication-Port" -msgstr "Port de l'authentification Radius" - -msgid "Radius-Authentication-Secret" -msgstr "Secret de l'authentification Radius" - -msgid "Radius-Authentication-Server" -msgstr "Serveur de l'authentification Radius" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "Lire /etc/ethers pour configurer le serveur DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Voulez-vous vraiment supprimer cette interface? L'effacement ne peut être " -"annulé!\n" -"Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par " -"cette interface." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Voulez-vous vraiment supprimer ce réseau sans-fil? L'effacement ne peut être " -"annulé!\n" -"Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par ce " -"réseau." - -msgid "Really reset all changes?" -msgstr "Voulez-vous vraiment ré-initialiser toutes les modifications ?" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Voulez-vous vraiment arrêter l'interface %s ?\n" -"Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par " -"cette interface." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Voulez-vous vraiment arrêter l'interface %s ?\n" -"Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par " -"cette interface." - -msgid "Really switch protocol?" -msgstr "Voulez-vous vraiment changer de protocole ?" - -msgid "Realtime Connections" -msgstr "Connexions temps-réel" - -msgid "Realtime Graphs" -msgstr "Graphiques temps-réel" - -msgid "Realtime Load" -msgstr "Charge temps-réel" - -msgid "Realtime Traffic" -msgstr "Trafic temps-réel" - -msgid "Realtime Wireless" -msgstr "Qualité de réception actuelle" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Protection contre l'attaque « rebind »" - -msgid "Reboot" -msgstr "Redémarrage" - -msgid "Rebooting..." -msgstr "Redémarre…" - -msgid "Reboots the operating system of your device" -msgstr "Redémarrage du système d'exploitation de votre équipement" - -msgid "Receive" -msgstr "Reçoit" - -msgid "Receiver Antenna" -msgstr "Antenne émettrice" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconnecter cet interface" - -msgid "Reconnecting interface" -msgstr "Reconnecte cet interface" - -msgid "References" -msgstr "Références" - -msgid "Relay" -msgstr "Relais" - -msgid "Relay Bridge" -msgstr "Pont-relais" - -msgid "Relay between networks" -msgstr "Relais entre réseaux" - -msgid "Relay bridge" -msgstr "Pont-relais" - -msgid "Remote IPv4 address" -msgstr "Adresse IPv4 distante" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Désinstaller" - -msgid "Repeat scan" -msgstr "Répéter la recherche" - -msgid "Replace entry" -msgstr "Remplacer l'entrée" - -msgid "Replace wireless configuration" -msgstr "Remplacer la configuration sans-fil" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Nécessaire avec certains FAIs, par ex. : Charter avec DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Remise à zéro" - -msgid "Reset Counters" -msgstr "Remise à zéro des compteurs" - -msgid "Reset to defaults" -msgstr "Ré-initialisation" - -msgid "Resolv and Hosts Files" -msgstr "Fichiers Resolv et Hosts" - -msgid "Resolve file" -msgstr "Fichier de résolution des noms" - -msgid "Restart" -msgstr "Redémarrer" - -msgid "Restart Firewall" -msgstr "Redémarrer le pare-feu" - -msgid "Restore backup" -msgstr "Restaurer une sauvegarde" - -msgid "Reveal/hide password" -msgstr "Montrer/cacher le mot de passe" - -msgid "Revert" -msgstr "Revenir" - -msgid "Root" -msgstr "Racine" - -msgid "Root directory for files served via TFTP" -msgstr "Répertoire racine des fichiers fournis par TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Mot de passe du routeur" - -msgid "Routes" -msgstr "Routes" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Avec les routes statiques vous pouvez spécifier à travers quelle interface " -"ou passerelle un réseau peut être contacté." - -msgid "Run a filesystem check before mounting the device" -msgstr "" -"Faire un vérification du système de fichiers avant de monter le périphérique" - -msgid "Run filesystem check" -msgstr "Faire une vérification du système de fichiers" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Accès SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Clés SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Sauvegarder" - -msgid "Save & Apply" -msgstr "Sauvegarder et Appliquer" - -msgid "Save & Apply" -msgstr "Sauvegarder et appliquer" - -msgid "Scan" -msgstr "Scan" - -msgid "Scheduled Tasks" -msgstr "Tâches Régulières" - -msgid "Section added" -msgstr "Section ajoutée" - -msgid "Section removed" -msgstr "Section retirée" - -msgid "See \"mount\" manpage for details" -msgstr "Voir le manuel de « mount » pour les détails" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Envoyer des demandes d'échos LCP à intervalles donnés, en secondes ; utile " -"uniqument associé à un seuil d'erreurs" - -msgid "Separate Clients" -msgstr "Isoler les clients" - -msgid "Server Settings" -msgstr "Paramètres du serveur" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Nom du service" - -msgid "Service Type" -msgstr "Type du service" - -msgid "Services" -msgstr "Services" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Configurer la synchronisation de l'heure" - -msgid "Setup DHCP Server" -msgstr "Configurer le serveur DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "Afficher la liste des fichiers de la sauvegarde actuelle" - -msgid "Shutdown this interface" -msgstr "Arrêter cet interface" - -msgid "Shutdown this network" -msgstr "Arrêter ce réseau" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Signal :" - -msgid "Size" -msgstr "Taille" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Passer au suivant" - -msgid "Skip to content" -msgstr "Skip to content" - -msgid "Skip to navigation" -msgstr "Skip to navigation" - -msgid "Slot time" -msgstr "Tranche de temps" - -msgid "Software" -msgstr "Logiciels" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Certains champs sont invalides, ne peut sauvegarder les valeurs !" - -msgid "Sorry, the object you requested was not found." -msgstr "Désolé, l'objet que vous avez demandé n'as pas été trouvé." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Désolé, le serveur à rencontré une erreur inattendue." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Désolé, il n'y a pas de gestion de mise à jour disponible, une nouvelle " -"image du micrologiciel doit être écrite manuellement. Reportez-vous S.V.P. " -"au wiki pour connaître les instructions d'installation spécifiques à votre " -"matériel." - -msgid "Sort" -msgstr "Trier" - -msgid "Source" -msgstr "Source" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Indique l'état du bouton à gérer" - -msgid "Specifies the directory the device is attached to" -msgstr "Indique le répertoire auquel le périphérique est rattaché" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Indique le port d'écoute de cette instance Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Indique le nombre de requêtes ARP ratées au delà duquel les hôtes seront " -"supposés disparus" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "Indique le délai après quoi les hôtes seront supposés disparus" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Spécifiez ici la clé secrète de chiffrage." - -msgid "Start" -msgstr "Démarrer" - -msgid "Start priority" -msgstr "Priorité de démarrage" - -msgid "Startup" -msgstr "Démarrage" - -msgid "Static IPv4 Routes" -msgstr "Routes IPv4 statiques" - -msgid "Static IPv6 Routes" -msgstr "Routes IPv6 statiques" - -msgid "Static Leases" -msgstr "Baux Statiques" - -msgid "Static Routes" -msgstr "Routes statiques" - -msgid "Static address" -msgstr "Adresse statique" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Les baux statiques sont utilisés pour donner des adresses IP fixes et des " -"noms symboliques à des clients DHCP. Il sont également nécessaires pour les " -"interfaces sans configuration dynamique où l'on fournit un bail aux seuls " -"hôtes configurés." - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Arrêter" - -msgid "Strict order" -msgstr "Ordre stricte" - -msgid "Submit" -msgstr "Soumettre" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Élement de partition d'échange" - -msgid "Switch" -msgstr "Commutateur" - -msgid "Switch %q" -msgstr "Commutateur %q" - -msgid "Switch %q (%s)" -msgstr "Commutateur %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Protocole du commutateur" - -msgid "Sync with browser" -msgstr "Synchro avec le navigateur" - -msgid "Synchronizing..." -msgstr "Synchronisation…" - -msgid "System" -msgstr "Système" - -msgid "System Log" -msgstr "Journal système" - -msgid "System Properties" -msgstr "Propriétés système" - -msgid "System log buffer size" -msgstr "Taille du tampon du journal système" - -msgid "TCP:" -msgstr "TCP :" - -msgid "TFTP Settings" -msgstr "Paramètres TFTP" - -msgid "TFTP server root" -msgstr "Racine du serveur TFTP" - -msgid "TX" -msgstr "Transmis" - -msgid "TX Rate" -msgstr "Débit en émission" - -msgid "Table" -msgstr "Table" - -msgid "Target" -msgstr "Cible" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminer" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"La section Configuration de l'équipement couvre les paramètres " -"physiques du matériel radio comme le canal, la puissance d'émission ou la " -"sélection de l'antenne, qui sont partagés entre tous les réseaux sans-fil " -"définis (si le matériel radio gère plusieurs réseaux SSID). Les paramètres " -"dépendant de chaque réseau comme le chiffrage ou le mode de fonctionnement " -"sont groupés dans Configuration de l'interface." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Le paquet libiwinfo-lua n'est pas installé. Vous devez l'installer " -"pour une configuration sans-fil fonctionnelle !" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Le préfixe IPv6 attribué par le fournisseur, se termine généralement par " -"::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Les caractères autorisés sont : A-Z, a-z, " -"0-9 et _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "Le périphérique de bloc contenant la partition (ex : /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Le système de fichiers utilisé pour formatter le support de stockage (ex : " -"ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"L'image du micrologiciel a été chargée. Ci-dessous la taille et la somme de " -"contrôle de cette image, comparez-les avec le fichier original pour vous " -"assurer de son intégrité.
    Cliquez sur \"Continuer\" pour lancer la " -"procédure d'écriture." - -msgid "The following changes have been committed" -msgstr "Les changements suivants ont été appliqués" - -msgid "The following changes have been reverted" -msgstr "Les changements suivants ont été annulés" - -msgid "The following rules are currently active on this system." -msgstr "Les règles suivantes sont actuellement actives sur ce système." - -msgid "The given network name is not unique" -msgstr "Le nom de réseau donné n'est pas unique" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Le matériel ne sait pas gérer plusieurs SSID et la configuration existante " -"sera remplacée si vous continuez." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"La longueur du préfixe IPv4 en bits, le reste est utilisé dans les adresses " -"IPv6" - -msgid "The length of the IPv6 prefix in bits" -msgstr "La longueur du préfixe IPv6 en bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Les ports de votre équipement peuvent être configurés pour combiner " -"plusieurs VLANs dans " -"lesquels les machines connectées peuvent dialoguer directement l'une avec " -"l'autre. Les VLANs sont " -"souvent utilisés pour séparer différences sous-réseaux. Bien souvent il y a " -"un port d'uplink pour une connexion vers un réseau plus vaste, comme " -"internet et les autres ports sont réservés au réseau local." - -msgid "The selected protocol needs a device assigned" -msgstr "Le protocole sélectionné nécessite l'attribution d'un périphérique" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Le système est en train d'effacer la partition de configuration et " -"redémarrera tout seul une fois cela fini." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes until you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." - -msgid "There are no active leases." -msgstr "Il n'y a aucun bail actif." - -msgid "There are no pending changes to apply!" -msgstr "Il n'y a aucun changement en attente d'être appliqués !" - -msgid "There are no pending changes to revert!" -msgstr "Il n'y a aucun changement à annuler !" - -msgid "There are no pending changes!" -msgstr "Il n'y a aucun changement en attente !" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Il n'y a aucun périphérique attribué pour l'instant, liez s.v.p. un " -"périphérique réseau dans l'onglet \"Paramètres du matériel\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Ce routeur n'a pas de mot de passe configuré. Veuillez configurer un mot de " -"passe pour l'utilisateur root pour protéger l'accès de votre interface web " -"et activer l'accès par SSH." - -msgid "This IPv4 address of the relay" -msgstr "L'adresse IPv4 du relais" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Voici la liste des motifs de type glob shell utilisés pour sélectionner les " -"fichiers et répertoires à inclure durant la mise à jour système. Les " -"fichiers modifiés dans /etc/config/ et certains autres sont automatiquement " -"conservés." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Voici le contenu de /etc/rc.local. Placez-y vos propres commandes (avant le " -"« exit 0 ») pour qu'ils soient exécutés en fin de démarrage." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"Il s'agit de l'adresse de l'extrémité locale attribuée par le fournisseur de " -"tunnels, elle se termine habituellement avec :2" - -msgid "" -"This is the only DHCP in the local network" -msgstr "C'est le seul serveur DHCP sur le réseau local" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Ceci est le système crontab avec lequel sont définies les tâches récurrentes." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Il s'agit habituellement de l'adresse du plus proche PoP géré par le " -"fournisseur de tunnels" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Cette liste donne une vue d'ensemble des processus en exécution et leur " -"statut." - -msgid "This page allows the configuration of custom button actions" -msgstr "Cette page permet la configuration d'actions spécifiques des boutons" - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Cette page donne une vue d'ensemble des connexions réseaux actuellement " -"actives." - -msgid "This section contains no values yet" -msgstr "Cette section ne contient pas encore de valeur" - -msgid "Time Synchronization" -msgstr "Synchronisation de l'heure" - -msgid "Time Synchronization is not configured yet." -msgstr "La synchronisation de l'heure n'est pas encore configurée." - -msgid "Timezone" -msgstr "Fuseau horaire" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Pour restaurer les fichiers de configuration, vous pouvez charger ici une " -"archive de sauvegarde construite précédemment." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total disponible" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Trafic" - -msgid "Transfer" -msgstr "Transfert" - -msgid "Transmission Rate" -msgstr "Débit d'émission" - -msgid "Transmit" -msgstr "Transmet" - -msgid "Transmit Power" -msgstr "Puissance d'émission" - -msgid "Transmitter Antenna" -msgstr "Antenne émettrice" - -msgid "Trigger" -msgstr "Déclenchement" - -msgid "Trigger Mode" -msgstr "Mode de déclenchement" - -msgid "Tunnel ID" -msgstr "ID du tunnel" - -msgid "Tunnel Interface" -msgstr "Interface du tunnel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Puissance d'émission" - -msgid "Type" -msgstr "Type" - -msgid "UDP:" -msgstr "UDP :" - -msgid "UMTS only" -msgstr "seulement UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Périphérique USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Impossible d'envoyer" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Inconnu" - -msgid "Unknown Error, password not changed!" -msgstr "Erreur inconnue, mot de passe inchangé !" - -msgid "Unmanaged" -msgstr "non-géré" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Changements non appliqués" - -msgid "Unsupported protocol type." -msgstr "Type de protocole non pris en charge." - -msgid "Update lists" -msgstr "Mettre les listes à jour" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Envoyer ici une image compatible avec le système de mise à jour pour " -"remplacer le micrologiciel actuel. Cochez \"Garder la configuration\" pour " -"maintenir la configuration actuelle (nécessite une image de micrologiciel " -"compatible)." - -msgid "Upload archive..." -msgstr "Envoi de l'archive…" - -msgid "Uploaded File" -msgstr "Fichier Uploadé" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Utiliser /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Utiliser la passerelle DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Utiliser les serveurs DNS publiés par le distant" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Utiliser les codes-pays ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "Utiliser le MTU sur l'interface du tunnel" - -msgid "Use TTL on tunnel interface" -msgstr "Utiliser le TTL sur l'interface du tunnel" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Utiliser une marque de diffusion" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Utiliser des serveurs DNS spécifiques" - -msgid "Use default gateway" -msgstr "Utiliser la passerelle par défaut" - -msgid "Use gateway metric" -msgstr "Utiliser la métrique de la passerelle" - -msgid "Use routing table" -msgstr "Utiliser la table de routage" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Utiliser le bouton Ajouter pour créer un nouveau bail. " -"L'adresse MAC identifie l'hôte, l'adresse IPv4 décrit " -"l'adresse fixe à utiliser et le nom d'hôte sera le nom symbolique " -"attribué à l'hôte qui fait la demande." - -msgid "Used" -msgstr "Utilisé" - -msgid "Used Key Slot" -msgstr "Clé utilisée" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Nom d'utilisateur" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs sur %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs sur %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Serveur VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Classe de fournisseur à envoyer dans les requêtes DHCP" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Vérifier" - -msgid "Version" -msgstr "Version" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Système ouvert WEP" - -msgid "WEP Shared Key" -msgstr "Clé partagée WEP" - -msgid "WEP passphrase" -msgstr "Mot de passe WEP" - -msgid "WMM Mode" -msgstr "Mode WMM" - -msgid "WPA passphrase" -msgstr "Mot de passe WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Le chiffrage WPA nécessite l'installation du paquet wpa_supplicant (en mode " -"client) ou hostapd (en mode Point d'accès ou Ad-hoc)." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "En attente de l'application des changements..." - -msgid "Waiting for command to complete..." -msgstr "En attente de la fin de la commande..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Attention" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Sans-fil" - -msgid "Wireless Adapter" -msgstr "Module Wi-Fi" - -msgid "Wireless Network" -msgstr "Réseau sans-fil" - -msgid "Wireless Overview" -msgstr "Présentation des réseaux sans-fil" - -msgid "Wireless Security" -msgstr "Sécurité des réseaux sans-fil" - -msgid "Wireless is disabled or not associated" -msgstr "Le Wi-Fi est désactivé ou non associé" - -msgid "Wireless is restarting..." -msgstr "Le Wi-Fi est ré-initialisé…" - -msgid "Wireless network is disabled" -msgstr "Le réseau Wi-Fi est désactivé" - -msgid "Wireless network is enabled" -msgstr "Le réseau Wi-Fi est activé" - -msgid "Wireless restarted" -msgstr "Wi-Fi ré-initialisé" - -msgid "Wireless shut down" -msgstr "Wi-Fi arrêté" - -msgid "Write received DNS requests to syslog" -msgstr "Écrire les requêtes DNS reçues dans syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Vous pouvez ici activer ou désactiver les scripts d'initialisation " -"installés. Les changements seront pris en compte après un redémarrage.
    Attention: Si vous désactivez des scripts essentiels comme \"réseau" -"\", votre équipement pourrait ne plus être accessible !" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Vous devez activer JavaScript dans votre navigateur pour que LuCI fonctionne " -"correctement." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "n'importe lequel" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "ponté" - -msgid "create:" -msgstr "créer:" - -msgid "creates a bridge over specified interface(s)" -msgstr "créer un bridge entre plusieurs interfaces" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "désactiver" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expiré" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "fichier dans lequel les baux DHCP seront stockés" - -msgid "forward" -msgstr "transfert" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "help" -msgstr "aide" - -msgid "hidden" -msgstr "cacher" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "si la destination est un réseau" - -msgid "input" -msgstr "entrée" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "fichier de résolution local" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "non" - -msgid "no link" -msgstr "pas de lien" - -msgid "none" -msgstr "aucun" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "Arrêté" - -msgid "on" -msgstr "Actif" - -msgid "open" -msgstr "ouvrir" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "routé" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "marqué" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "inconnu" - -msgid "unlimited" -msgstr "non limité" - -msgid "unspecified" -msgstr "non précisé" - -msgid "unspecified -or- create:" -msgstr "non précisé -ou- créer :" - -msgid "untagged" -msgstr "non marqué" - -msgid "yes" -msgstr "oui" - -msgid "« Back" -msgstr "« Retour" - -#~ msgid "Leasetime" -#~ msgstr "Durée du bail" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "statique" - -#~ msgid "AR Support" -#~ msgstr "Gestion du mode AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Contrôleur sans fil Atheros 802.11%s " - -#~ msgid "Background Scan" -#~ msgstr "Recherche en arrière-plan" - -#~ msgid "Compression" -#~ msgstr "Compression" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Désactiver l'émission périodique de balises wifi (« HW-Beacon »)" - -#~ msgid "Do not send probe responses" -#~ msgstr "Ne pas envoyer de réponses de test" - -#~ msgid "Fast Frames" -#~ msgstr "Trames rapides" - -#~ msgid "Maximum Rate" -#~ msgstr "Débit maximum" - -#~ msgid "Minimum Rate" -#~ msgstr "Débit minimum" - -#~ msgid "Multicast Rate" -#~ msgstr "Débit multidiffusion" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canaux en extérieur" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domaine de certification" - -#~ msgid "Separate WDS" -#~ msgstr "WDS séparé" - -#~ msgid "Static WDS" -#~ msgstr "WDS statique" - -#~ msgid "Turbo Mode" -#~ msgstr "Mode Turbo" - -#~ msgid "XR Support" -#~ msgstr "Gestion du mode XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Un réseau supplémentaire sera créé si vous laissé ceci décoché." - -#~ msgid "Join Network: Settings" -#~ msgstr "Rejoindre un réseau : paramètres" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Le port %d n'est pas marqué dans plusieurs VLANs !" - -#~ msgid "VLAN Interface" -#~ msgstr "Interface du VLAN" diff --git a/package/luci/modules/luci-base/po/he/base.po b/package/luci/modules/luci-base/po/he/base.po deleted file mode 100644 index 2997941335..0000000000 --- a/package/luci/modules/luci-base/po/he/base.po +++ /dev/null @@ -1,3809 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-02 14:32+0200\n" -"Last-Translator: oranav \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "" - -msgid "(%s available)" -msgstr "(%s פנוי)" - -msgid "(empty)" -msgstr "(ריק)" - -msgid "(no interfaces attached)" -msgstr "(אין ממשק מצורף)" - -msgid "-- Additional Field --" -msgstr "-- שדה נוסף --" - -msgid "-- Please choose --" -msgstr "-- נא לבחור --" - -msgid "-- custom --" -msgstr "-- מותאם אישית --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "עומס במשך דקה:" - -msgid "15 Minute Load:" -msgstr "עומס במשך רבע שעה:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "עומס במשך 5 דקות:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "DNS query port" -msgstr "DNS יציאת שאילתא" - -msgid "DNS server port" -msgstr "DNS יציאת שרת" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "כתובות IPv4" - -msgid "IPv4-Gateway" -msgstr "" - -msgid "IPv4-Netmask" -msgstr "" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"כתובת או רשת (CIDR) IPv6" - -msgid "IPv6-Gateway" -msgstr "" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "הגדרות LED" - -msgid "LED Name" -msgstr "שם LED" - -msgid "MAC-Address" -msgstr "כתובת-MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -#, fuzzy -msgid "ARP retry threshold" -msgstr "סף נסיונות של ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -#, fuzzy -msgid "ATM Bridges" -msgstr "גשרי ATM" - -#, fuzzy -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "מזהה ערוצים ווירטואליים של ATM" - -#, fuzzy -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "מזהה נתיבים ווירטואליים של ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "מס' התקן של ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -#, fuzzy -msgid "Access Concentrator" -msgstr "מרכז גישות" - -msgid "Access Point" -msgstr "נקודת גישה" - -msgid "Action" -msgstr "פעולה" - -msgid "Actions" -msgstr "פעולות" - -msgid "Activate this network" -msgstr "הפעל רשת זו" - -msgid "Active IPv4-Routes" -msgstr "" - -msgid "Active IPv6-Routes" -msgstr "" - -msgid "Active Connections" -msgstr "חיבורים פעילים" - -msgid "Active DHCP Leases" -msgstr "הרשאות DHCP פעילות" - -msgid "Active DHCPv6 Leases" -msgstr "הרשאות DHCPv6 פעילות" - -# צריך אימות של מישהו שמבין יותר במושגים האלו אם צריך בכלל לתרגם את זה או להשאיר כמו שזה -#, fuzzy -msgid "Ad-Hoc" -msgstr "אד-הוק" - -msgid "Add" -msgstr "הוסף" - -#, fuzzy -msgid "Add local domain suffix to names served from hosts files" -msgstr "הוסף דומיין מקומי לשמות המוגשים מהקבצים של המארח" - -msgid "Add new interface..." -msgstr "הוסף ממשק חדש..." - -msgid "Additional Hosts files" -msgstr "קבצי מארח נוספים" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "כתובת" - -msgid "Address to access local relay bridge" -msgstr "" - -#, fuzzy -msgid "Administration" -msgstr "מנהלה" - -msgid "Advanced Settings" -msgstr "הגדרות מתקדמות" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -#, fuzzy -msgid "Alert" -msgstr "אזעקה" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" - -#, fuzzy -msgid "Allow all except listed" -msgstr "אפשר הכל חוץ מהרשומים" - -msgid "Allow listed only" -msgstr "אפשר רשומים בלבד" - -#, fuzzy -msgid "Allow localhost" -msgstr "אפשר localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "אנטנה 1" - -msgid "Antenna 2" -msgstr "אנטנה 2" - -msgid "Antenna Configuration" -msgstr "הגדרות אנטנה" - -# אזור? -#, fuzzy -msgid "Any zone" -msgstr "כל תחום" - -msgid "Apply" -msgstr "החל" - -msgid "Applying changes" -msgstr "מחיל הגדרות" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "הקצה ממשקים" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "תחנות קשורות" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "אימות" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "מוסמך" - -msgid "Authorization Required" -msgstr "דרוש אימות" - -msgid "Auto Refresh" -msgstr "רענון אוטומטי" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "זמין" - -msgid "Available packages" -msgstr "חבילות זמינות" - -msgid "Average:" -msgstr "ממוצע:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "חזרה" - -msgid "Back to Overview" -msgstr "חזרה לסקירה" - -msgid "Back to configuration" -msgstr "חזרה להגדרות" - -msgid "Back to overview" -msgstr "חזרה לסקירה" - -msgid "Back to scan results" -msgstr "חזרה לתוצאות סריקה" - -msgid "Backup / Flash Firmware" -msgstr "גיבוי / קושחת פלאש" - -msgid "Backup / Restore" -msgstr "גיבוי / שחזור" - -msgid "Backup file list" -msgstr "גיבוי רשימת קבצים" - -msgid "Bad address specified!" -msgstr "פורטה כתובת לא תקינה" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"למטה יש את הרשימה הסופית של קבצים לגיבוי. היא מורכבת ע\"י קבצי הגדרות ששונו, " -"המסומנים ב opkg ׁOpen PacKaGe Managementׂ, קבצי בסיס חיוניים ותבניות הגיבוי " -"המוגדרות ע\"י המשתמש." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "גשר" - -msgid "Bridge interfaces" -msgstr "ממשקי גשר" - -msgid "Bridge unit number" -msgstr "מס' יח' גשר" - -#, fuzzy -msgid "Bring up on boot" -msgstr "הבא באיתחול" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "שלט אלחוטי Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "שלט אלחוטי Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "כפתורים" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "שימוש מעבד (%)" - -msgid "Cancel" -msgstr "בטל" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "שרשרת" - -msgid "Changes" -msgstr "שינויים" - -msgid "Changes applied." -msgstr "השינויים הוחלו" - -msgid "Changes the administrator password for accessing the device" -msgstr "משנה את סיסמת המנהל לגישה למכשיר" - -msgid "Channel" -msgstr "ערוץ" - -msgid "Check" -msgstr "לבדוק" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "סגור חיבורים לא פעילים אחרי מספר השניות שהוגדר, הזן 0 על-מנת לא לסגור" - -msgid "Close list..." -msgstr "סגור רשימה..." - -msgid "Collecting data..." -msgstr "אוסף מידע..." - -msgid "Command" -msgstr "פקודה" - -msgid "Common Configuration" -msgstr "הגדרות נפוצות" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "הגדרות" - -msgid "Configuration applied." -msgstr "הגדרות הוחלו" - -msgid "Configuration files will be kept." -msgstr "קבצי ההגדרות ישמרו." - -msgid "Confirmation" -msgstr "אישור" - -msgid "Connect" -msgstr "התחבר" - -msgid "Connected" -msgstr "מחובר" - -msgid "Connection Limit" -msgstr "מגבלת חיבורים" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "חיבורים" - -msgid "Country" -msgstr "מדינה" - -msgid "Country Code" -msgstr "קוד מדינה" - -msgid "Cover the following interface" -msgstr "כסה את הממשק הבא" - -msgid "Cover the following interfaces" -msgstr "כסה את הממשקים הבאים" - -msgid "Create / Assign firewall-zone" -msgstr "צור / הקצה תחום-חומת אש" - -msgid "Create Interface" -msgstr "צור ממשק" - -msgid "Create a bridge over multiple interfaces" -msgstr "צור גשר בין מספר ממשקים" - -msgid "Critical" -msgstr "קריטי" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "ממשק מותאם אישית" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"מתאים את הגדרות ה-LED-ים במכשיר " -"(אם אפשרי)." - -msgid "DHCP Leases" -msgstr "הרשאות DHCP" - -msgid "DHCP Server" -msgstr "שרת DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP ו- DNS" - -msgid "DHCP client" -msgstr "לקוח DHCP" - -msgid "DHCP-Options" -msgstr "אפשרויות-DHCP" - -msgid "DHCPv6 Leases" -msgstr "הרשאות DHCPv6" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "הגדר שם לרשת זו" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"הגדר אפשרויות DHCP נוספות, למשל \"6,192.168.2.1,192.168.2.2\" " -"אשר מציגות שרתי DNS שונים ללקוח" - -msgid "Delete" -msgstr "למחוק" - -msgid "Delete this network" -msgstr "מחק רשת זו" - -msgid "Description" -msgstr "תיאור" - -msgid "Design" -msgstr "עיצוב" - -msgid "Destination" -msgstr "יעד" - -msgid "Device" -msgstr "מכשיר" - -msgid "Device Configuration" -msgstr "הגדרות מכשיר" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "אבחון" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "מציג רק חבילות המכילות" - -msgid "Distance Optimization" -msgstr "" - -msgid "Distance to farthest network member in meters." -msgstr "מרחק לנק' הרשת הרחוקה ביותר במטרים" - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "גיוון" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Download and install package" -msgstr "הורד והתקן חבילות" - -msgid "Download backup" -msgstr "הורד גיבוי" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear מאפשר גישת SSH רשתית ושרת SCP מובנה" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "DHCP דינאמי" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "ערוך" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "ערוך ממשק זה" - -msgid "Edit this network" -msgstr "ערוך רשת זו" - -msgid "Emergency" -msgstr "מצב חרום" - -msgid "Enable" -msgstr "אפשר" - -msgid "Enable STP" -msgstr "אפשר STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "אפשר שרת TFTP" - -msgid "Enable VLAN functionality" -msgstr "אפשר תפקוד VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "אפשר למידה והזדקנות" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "" - -msgid "Enabled" -msgstr "אפשר" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "הצפנה" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "מוחק..." - -msgid "Error" -msgstr "שגיאה" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "" - -msgid "Ethernet Switch" -msgstr "" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Filter" -msgstr "" - -msgid "Filter private" -msgstr "" - -msgid "Filter useless" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "" - -msgid "Firewall Status" -msgstr "" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 WAN Status" -msgstr "" - -msgid "IPv4 address" -msgstr "כתבות IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 ו-IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "" - -msgid "Ignore resolve file" -msgstr "" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface is shutting down..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interface reconnected" -msgstr "" - -msgid "Interface shut down" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "מספר VLAN שגוי! רק ערכים בין %d לבין %d הם חוקיים." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "שם משתמש ו/או סיסמה שגויים! אנא נסה שנית." - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "עומס" - -msgid "Load Average" -msgstr "עומס ממוצע" - -msgid "Loading" -msgstr "טוען" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "כתובת IPv4 מקומית" - -msgid "Local IPv6 address" -msgstr "כתובת IPv6 מקומית" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "שרת מקומי" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "" - -msgid "Logout" -msgstr "" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "" - -msgid "MAC-Filter" -msgstr "" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory usage (%)" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Minimum hold time" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "שם" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "אין רשימת חבילות זמינה" - -msgid "No password set!" -msgstr "לא הוגדרה סיסמה!" - -msgid "No rules in this chain" -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "לא מחובר" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "OPKG-Configuration" -msgstr "" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "ישנם שדות המכילים ערכים בלתי חוקיים!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Owner" -msgstr "" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "שם החבילה" - -msgid "Packets" -msgstr "" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Password authentication" -msgstr "" - -msgid "Password of Private Key" -msgstr "" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "נתיב למפתח הפרטי" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "אנא הזן את שם המשתמש והסיסמה שלך:" - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "קצב קליטה" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"האם למחוק את הרשת האלחוטית הזו? המחיקה אינה ניתנת לביטול!\n" -"ייתכן ותאבד גישה לנתב הזה אם אתה מחובר דרך השרת הזו." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "Reconnecting interface" -msgstr "" - -msgid "References" -msgstr "" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "" - -msgid "Reset Counters" -msgstr "" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "" - -msgid "Restore backup" -msgstr "" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "הרץ בדיקת מערכת קבצים" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Scan" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "שירותים" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "סנכרון זמן" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Shutdown this network" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "דלג אל התוכן" - -msgid "Skip to navigation" -msgstr "דלג אל הניווט" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "תוכנה" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "חלק מהשדות אינם תקינים, אין אפשרות לשמור את הערכים!" - -msgid "Sorry, the object you requested was not found." -msgstr "סליחה, אך האובייקט שביקשת אינו נמצא." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "סליחה, השרת נתקל בשגיאה לא צפויה." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"סליחה, אין תמיכה בעדכון מערכת, ולכן קושחה חדשה חייבת להיצרב ידנית. אנא פנה " -"אל ה-wiki של OpenWrt/LEDE עבור הוראות ספציפיות למכשיר שלך." - -msgid "Sort" -msgstr "מיין" - -msgid "Source" -msgstr "מקור" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start priority" -msgstr "" - -msgid "Startup" -msgstr "אתחול" - -msgid "Static IPv4 Routes" -msgstr "ניתובי IPv4 סטטיים" - -msgid "Static IPv6 Routes" -msgstr "ניתובי IPv6 סטטיים" - -msgid "Static Leases" -msgstr "הקצאות סטטיות" - -msgid "Static Routes" -msgstr "ניתובים סטטיים" - -msgid "Static address" -msgstr "כתובת סטטית" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"הקצאות סטטיות נועדו להקצות כתובות IP קבועות ואת שם הרשת שלהן ללקוחות DHCP. " -"הן נחוצות גם עבור הגדרות ממשק שאינן דינאמיות, בהן מטופלות רק ישויות בעלות " -"הקצאה מתאימה." - -msgid "Status" -msgstr "מצב" - -msgid "Stop" -msgstr "עצור" - -msgid "Strict order" -msgstr "" - -msgid "Submit" -msgstr "שלח" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "" - -msgid "System Log" -msgstr "" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "הגדרות TFTP" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "שידור" - -msgid "TX Rate" -msgstr "קצב שידור" - -msgid "Table" -msgstr "טבלה" - -msgid "Target" -msgstr "יעד" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "החוקים הבאים מאופשרים כרגע במערכת זו." - -msgid "The given network name is not unique" -msgstr "השם שניתן לרשת איננו ייחודי" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "החומרה אינה תומכת בריבוי SSID ולכן ההגדרות הנוכחיות יוחלפו אם תמשיך." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no pending changes to apply!" -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "רשימה זו מציגה סקירה של תהליכי המערכת הרצים כרגע ואת מצבם." - -msgid "This page allows the configuration of custom button actions" -msgstr "דף זה מאפשר להגדיר פעולות מיוחדות עבור הלחצנים." - -msgid "This page gives an overview over currently active network connections." -msgstr "דף זה מציג סקירה של חיבורי הרשת הפעילים כרגע." - -msgid "This section contains no values yet" -msgstr "אזור זה עדיין לא מכיל ערכים." - -msgid "Time Synchronization" -msgstr "סנכרון זמן" - -msgid "Time Synchronization is not configured yet." -msgstr "סנכרון זמן עדיין לא הוגדר." - -msgid "Timezone" -msgstr "אזור זמן" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"על מנת לשחזר את קבצי ההגדרות, באפשרותך להעלות ארכיון גיבוי שנוצר לפני כן." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "סה\"כ פנוי" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "תעבורה" - -msgid "Transfer" -msgstr "העברה" - -msgid "Transmission Rate" -msgstr "קצב שידור" - -msgid "Transmit" -msgstr "שידור" - -msgid "Transmit Power" -msgstr "עוצמת שידור" - -msgid "Transmitter Antenna" -msgstr "אנטנת שידור" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "עוצמת שידור" - -msgid "Type" -msgstr "" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Use /etc/ethers" -msgstr "" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "השתמש בדגל broadcast" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "השתמש בשרתי DNS מותאמים אישית" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "השתמש בטבלת ניתוב" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "שם משתמש" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "שרת VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "גרסה" - -msgid "WDS" -msgstr "" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "סיסמת WEP" - -msgid "WMM Mode" -msgstr "" - -msgid "WPA passphrase" -msgstr "סיסמת WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "אזהרה" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "" - -msgid "Wireless Network" -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Wireless Security" -msgstr "" - -msgid "Wireless is disabled or not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "רשת אלחוטית מנוטרלת" - -msgid "Wireless network is enabled" -msgstr "רשת אלחוטית מאופשרת" - -msgid "Wireless restarted" -msgstr "" - -msgid "Wireless shut down" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "אתה חייב להפעיל את JavaScript בדפדפן שלך; אחרת, LuCI לא יפעל כראוי." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "כלשהו" - -msgid "auto" -msgstr "אוטומטי" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "בטל" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "קדימה" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "עזרה" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "אם היעד הוא רשת" - -msgid "input" -msgstr "קלט" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "לא" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "ללא" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "כבוי" - -msgid "on" -msgstr "פועל" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "מנותב" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "מתויג" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "ללא הגבלה" - -msgid "unspecified" -msgstr "לא מוגדר" - -msgid "unspecified -or- create:" -msgstr "לא מוגדר -או- יצר" - -msgid "untagged" -msgstr "לא מתויג" - -msgid "yes" -msgstr "כן" - -msgid "« Back" -msgstr "<< אחורה" - -#~ msgid "AR Support" -#~ msgstr "תמיכת AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "שלט אלחוטי Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "סריקת רקע" - -#~ msgid "Compression" -#~ msgstr "דחיסה" - -#~ msgid "Static WDS" -#~ msgstr "WDS סטטי" - -#, fuzzy -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "רשת נוספת תווצר אם תשאיר את זה לא מסומן" - -#~ msgid "CPU" -#~ msgstr "מעבד" diff --git a/package/luci/modules/luci-base/po/hu/base.po b/package/luci/modules/luci-base/po/hu/base.po deleted file mode 100644 index 00b4d77d71..0000000000 --- a/package/luci/modules/luci-base/po/hu/base.po +++ /dev/null @@ -1,4030 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-01-31 09:59+0200\n" -"Last-Translator: Gabor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d perces ablak, %d másodperces intervallum)" - -msgid "(%s available)" -msgstr "(%s elérhető)" - -msgid "(empty)" -msgstr "(üres)" - -msgid "(no interfaces attached)" -msgstr "(nincs csatalkoztatott interfész)" - -msgid "-- Additional Field --" -msgstr "-- További mező --" - -msgid "-- Please choose --" -msgstr "-- Kérem válasszon --" - -msgid "-- custom --" -msgstr "-- egyéni --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Terhelés (utolsó 1 perc):" - -msgid "15 Minute Load:" -msgstr "Terhelés (utolsó 15 perc):" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Terhelés (utolsó 5 perc):" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS lekérdezési port" - -msgid "DNS server port" -msgstr "DNS szerver port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS szerverek a resolv fájl " -"sorrendjében" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-cím" - -msgid "IPv4-Gateway" -msgstr "IPv4-útválasztó" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-cím, vagy hálózat " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-útválasztó" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED konfiguráció" - -msgid "LED Name" -msgstr "LED Név" - -msgid "MAC-Address" -msgstr "MAC-cím" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. DHCP bérlés" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. EDNS0 csomagméret" - -msgid "Max. concurrent queries" -msgstr "Max. párhuzamos lekérdezés" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP újrapróbálkozási küszöbérték" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM Hidak" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Virtuális Csatorna Azonosító (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Virtuális Út Azonosító (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Az ATM hidak az AAL5-be ágyazott ethernet kapcsolatokat mint virtuális Linux " -"hálózati interfész mutatják, mely így DHCP-vel vagy PPP-vel összekapcsolva " -"használható a szolgáltatói hálózatba történő betárcsázáshoz." - -msgid "ATM device number" -msgstr "ATM eszközszám" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Elérési központ" - -msgid "Access Point" -msgstr "Hozzáférési pont" - -msgid "Action" -msgstr "Művelet" - -msgid "Actions" -msgstr "Műveletek" - -msgid "Activate this network" -msgstr "Hálózat aktiválása" - -msgid "Active IPv4-Routes" -msgstr "" -"Aktív IPv4 útvonalak" - -msgid "Active IPv6-Routes" -msgstr "" -"Aktív IPv6 útvonalak" - -msgid "Active Connections" -msgstr "Aktív kapcsolatok" - -msgid "Active DHCP Leases" -msgstr "Aktív DHCP bérletek" - -msgid "Active DHCPv6 Leases" -msgstr "Aktív DHCPv6 bérletek" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Hozzáadás" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Helyi tartomány utótag hozzáadása a hosts fájlokból kiszolgált nevekhez" - -msgid "Add new interface..." -msgstr "Új interfész hozzáadása..." - -msgid "Additional Hosts files" -msgstr "További 'hosts' fájlok" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Cím" - -msgid "Address to access local relay bridge" -msgstr "Helyi közvetítő híd elérési címe" - -msgid "Administration" -msgstr "Adminisztráció" - -msgid "Advanced Settings" -msgstr "Haladó beállítások" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Riasztás" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"SSH jelszó hitelesítés engedélyezése" - -msgid "Allow all except listed" -msgstr "Összes engedélyezése a felsoroltakon kívül" - -msgid "Allow listed only" -msgstr "Csak a felsoroltak engedélyezése" - -msgid "Allow localhost" -msgstr "Lolcalhost engedélyezése" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Távoli hostok csatlakozásának engedélyezése a helyi SSH továbbított " -"portokhoz." - -msgid "Allow root logins with password" -msgstr "root jelszavas bejelentkezésének engedélyezése" - -msgid "Allow the root user to login with password" -msgstr "Engedélyezi a root felhasználó jelszavas bejelentkezését" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"A 127.0.0.0/8-as tartományba eső DNS válaszok engedélyezése (pl. RBL " -"szervizek)" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "1-es antenna" - -msgid "Antenna 2" -msgstr "2-es antenna" - -msgid "Antenna Configuration" -msgstr "Antenna beállítások" - -msgid "Any zone" -msgstr "Bármelyik zóna" - -msgid "Apply" -msgstr "Alkalmaz" - -msgid "Applying changes" -msgstr "Módosítások alkalmazása" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Interfészek összekapcsolása..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Kapcsolódó kliensek" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Hitelesítés" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Hiteles" - -msgid "Authorization Required" -msgstr "Hitelesítés szükséges" - -msgid "Auto Refresh" -msgstr "Automatikus frissítés" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Elérhető" - -msgid "Available packages" -msgstr "Elérhető csomagok" - -msgid "Average:" -msgstr "Átlag:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Vissza" - -msgid "Back to Overview" -msgstr "Vissza az áttekintéshez" - -msgid "Back to configuration" -msgstr "Vissza a beállításokhoz" - -msgid "Back to overview" -msgstr "Vissza az áttekintéshez" - -msgid "Back to scan results" -msgstr "Vissza a felderítési eredményekhez" - -msgid "Backup / Flash Firmware" -msgstr "Mentés / Firmware frissítés" - -msgid "Backup / Restore" -msgstr "Mentés / Visszaállítás" - -msgid "Backup file list" -msgstr "Mentési fájl lista" - -msgid "Bad address specified!" -msgstr "Hibás címet adott meg!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Alább található a biztonsági mentésbe kerülő fájlok listája. A lista az opkg " -"által megjelölt módosított konfigurációs fájlokból, fontos alapvető " -"fájlokból valamint a felhasználó által megadott mintáknak megfelelő " -"fájlokból áll." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitráta" - -msgid "Bogus NX Domain Override" -msgstr "Hamis NX tartomány felülbírálása" - -msgid "Bridge" -msgstr "Híd" - -msgid "Bridge interfaces" -msgstr "Híd interfészek" - -msgid "Bridge unit number" -msgstr "Híd eszközszám" - -msgid "Bring up on boot" -msgstr "Hozza fel a rendszer indításakor" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s vezeték-nélküli vezérlő" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 vezeték-nélküli vezérlő" - -msgid "Buffered" -msgstr "Átmeneti tárban van" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Gombok" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Processzor használat (%)" - -msgid "Cancel" -msgstr "Mégsem" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Lánc" - -msgid "Changes" -msgstr "Módosítások" - -msgid "Changes applied." -msgstr "A módosítások alkalmazva." - -msgid "Changes the administrator password for accessing the device" -msgstr "" -"Itt módosíthatja az eszköz eléréséhez szükséges adminisztrátori jelszót" - -msgid "Channel" -msgstr "Csatorna" - -msgid "Check" -msgstr "Ellenőrzés" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Ellenőrző összeg" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Válassza ki a tűzfal zónát amit hozzá akar rendelni ehhez az interfészhez. " -"Válassza a nincs megadva elemet az interfésznek a hozzárendelt " -"zónából történő eltávolításához, vagy töltse ki az új mezőt új zóna " -"megadásához és csatlakoztassa az interfészt ahhoz." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Válassza ki azokat a hálózatokat, amelyeket csatlakoztatni akar ehhez a " -"vezetéknélküli interfészhez, vagy töltse ki az új mezőt egy új " -"hálózat definiálásához." - -msgid "Cipher" -msgstr "Titkosító" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Kattintson az \"Archívum készítése\" gombra a jelenlegi konfiguráció tar " -"archívumként történő letöltéséhez. A firmware kezdeti állapotának " -"visszaállításához kattintson a \"Visszaállítás végrehajtása\" gombra (csak " -"squashfs image-ek esetén lehetséges)." - -msgid "Client" -msgstr "Ügyfél" - -msgid "Client ID to send when requesting DHCP" -msgstr "DHCP kérés során küldendő kliens azonosító" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Inaktív kapcsolatok bezárása a megadott másodpercek után, használjon 0-t " -"állandó kapcsolathoz" - -msgid "Close list..." -msgstr "Lista bezárása..." - -msgid "Collecting data..." -msgstr "Adatok összegyűjtése..." - -msgid "Command" -msgstr "Parancs" - -msgid "Common Configuration" -msgstr "Álatános beállítás" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Beállítás" - -msgid "Configuration applied." -msgstr "Beállítások alkalmazva." - -msgid "Configuration files will be kept." -msgstr "A konfigurációs fájlok megmaradnak." - -msgid "Confirmation" -msgstr "Megerősítés" - -msgid "Connect" -msgstr "Kapcsolódás" - -msgid "Connected" -msgstr "Kapcsolódva" - -msgid "Connection Limit" -msgstr "Kapcsolati korlát" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Kapcsolatok" - -msgid "Country" -msgstr "Ország" - -msgid "Country Code" -msgstr "Országkód" - -msgid "Cover the following interface" -msgstr "A következő interfészt tartalmazza" - -msgid "Cover the following interfaces" -msgstr "A következő interfészeket tartalmazza" - -msgid "Create / Assign firewall-zone" -msgstr "Tűzfal zóna készítés / hozzárendelés" - -msgid "Create Interface" -msgstr "Új interfész" - -msgid "Create a bridge over multiple interfaces" -msgstr "Híd létrehozása több interfész között" - -msgid "Critical" -msgstr "Kritikus" - -msgid "Cron Log Level" -msgstr "Cron naplózási szint" - -msgid "Custom Interface" -msgstr "Egyéni interfész" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Az eszköz LED-jei működésének " -"testreszabása." - -msgid "DHCP Leases" -msgstr "DHCP bérletek" - -msgid "DHCP Server" -msgstr "DHCP kiszolgáló" - -msgid "DHCP and DNS" -msgstr "DHCP és DNS" - -msgid "DHCP client" -msgstr "DHCP ügyfél" - -msgid "DHCP-Options" -msgstr "DHCP beállítások" - -msgid "DHCPv6 Leases" -msgstr "DHCPv6 bérletek" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS továbbítások" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Hibakeresés" - -msgid "Default %d" -msgstr "Alapértelmezés %d" - -msgid "Default gateway" -msgstr "Alapértelmezett átjáró" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Alapértelmezett állapot" - -msgid "Define a name for this network." -msgstr "Adja meg a hálózat nevét." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Adjon meg további DHCP opciókat, például \"6,192.168.2.1,192.168.2.2\", mely különböző DNS kiszolgálókat hirdet az ügyfelek részére." - -msgid "Delete" -msgstr "Törlés" - -msgid "Delete this network" -msgstr "Hálózat törlése" - -msgid "Description" -msgstr "Leírás" - -msgid "Design" -msgstr "Megjelenés" - -msgid "Destination" -msgstr "Cél" - -msgid "Device" -msgstr "Eszköz" - -msgid "Device Configuration" -msgstr "Eszköz beállítások" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnosztika" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Könyvtár" - -msgid "Disable" -msgstr "Letiltás" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"DHCP tiltása ezen " -"az interfészen." - -msgid "Disable DNS setup" -msgstr "DNS beállítás letiltása" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Letiltva" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Beérkező RFC1918 DHCP válaszok elvetése. " - -msgid "Displaying only packages containing" -msgstr "Csak azon csomagok megjelenítése, amelyek tartalmazzák" - -msgid "Distance Optimization" -msgstr "Távolság optimalizáció" - -msgid "Distance to farthest network member in meters." -msgstr "A hálózat legtávolabbi tagjának távolsága méterben." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diverzitás" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"A Dnsmasq egy kombinált DHCP-kiszolgáló és DNS-" -"továbbító NAT tűzfalak " -"számára" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Ne gyorsítótárazza a negatív válaszokat, pl. nem létező domain-ok esetén" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Ne továbbítsa a publikus név szerverek által nem megválaszolható kéréseket" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Ne továbbítson fordított keresési kéréseket a helyi hálózathoz" - -msgid "Domain required" -msgstr "Tartomány szükséges" - -msgid "Domain whitelist" -msgstr "Tartomány fehérlista" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Ne továbbítsa a DNS-név nélküli " -"DNS-kéréseket " - -msgid "Download and install package" -msgstr "Csomag letöltése és telepítése" - -msgid "Download backup" -msgstr "Biztonsági mentés letöltése" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear példány" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"A Dropbear a hálózaton SSH hozzáférést " -"tesz lehetővé, valamint integrált SCP " -"szolgáltatást nyújt." - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dinamikus DHCP" - -msgid "Dynamic tunnel" -msgstr "Dinamikus alagút" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Az ügyfelek számára kiosztott DHCP címek dinamikus lefoglalása. Letiltása " -"esetén csak a statikus DHCP bérlettel rendelkező kliensek lesznek " -"kiszolgálva." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP metódus" - -msgid "Edit" -msgstr "Szerkesztés" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Interfész szerkesztése" - -msgid "Edit this network" -msgstr "Hálózat szerkesztése" - -msgid "Emergency" -msgstr "Vészhelyzet" - -msgid "Enable" -msgstr "Engedélyezés" - -msgid "Enable STP" -msgstr "STP engedélyezése" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "HE.net dinamikus végpont frissítésének engedélyezése" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "IPv6 egyeztetés engedélyezése a PPP linken" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Óriás keretek átengedésének engedélyezése" - -msgid "Enable NTP client" -msgstr "NTP-kliens engedélyezése" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "TFTP kiszolgáló engedélyezése" - -msgid "Enable VLAN functionality" -msgstr "VLAN funkció engedélyezése" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Tanulás és aging engedélyezése" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "A csatolás engedélyezése" - -msgid "Enable this swap" -msgstr "A lapozó terület engedélyezése" - -msgid "Enable/Disable" -msgstr "Engedélyezés/Letiltás" - -msgid "Enabled" -msgstr "Engedélyezve" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "A Spanning Tree prokoll engedélyezése erre a hídra" - -msgid "Encapsulation mode" -msgstr "Beágyazási mód" - -msgid "Encryption" -msgstr "Titkosítás" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Törlés..." - -msgid "Error" -msgstr "Hiba" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet adapter" - -msgid "Ethernet Switch" -msgstr "Ethernet switch" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Gépek kibontása" - -msgid "Expires" -msgstr "Lejárat" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "A bérelt címek lejárati ideje, a minimális érték 2 perc." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Külső rendszernapló kiszolgáló" - -msgid "External system log server port" -msgstr "Külső rendszernapló kiszolgáló port" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Fájl" - -msgid "Filename of the boot image advertised to clients" -msgstr "A kliensek részére közzétett betöltö kép fájlneve" - -msgid "Filesystem" -msgstr "Fájlrendszer" - -msgid "Filter" -msgstr "Szűrő" - -msgid "Filter private" -msgstr "Privát kérések szűrése" - -msgid "Filter useless" -msgstr "Használhahatlan kérések szűrése" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Hálózatok keresése és csatlakozás" - -msgid "Find package" -msgstr "Csomag keresése" - -msgid "Finish" -msgstr "Befejezés" - -msgid "Firewall" -msgstr "Tűzfal" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Tűzfal Beállítások" - -msgid "Firewall Status" -msgstr "Tűzfal Állapot" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Tűzfal verzió" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Rögzített forrás port a kimenő DNS kérésekhez" - -msgid "Flash Firmware" -msgstr "Firmware flash-elés" - -msgid "Flash image..." -msgstr "Flash image..." - -msgid "Flash new firmware image" -msgstr "Új firmware image flash-elése" - -msgid "Flash operations" -msgstr "Flash műveletek" - -msgid "Flashing..." -msgstr "Flash-elés..." - -msgid "Force" -msgstr "Kényszerítés" - -msgid "Force CCMP (AES)" -msgstr "CCMP (AES) kényszerítése" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"DHCP kényszerítése ezen a hálózaton még akkor is ha van másik szerver " -"észlelve." - -msgid "Force TKIP" -msgstr "TKIP kényszerítése" - -msgid "Force TKIP and CCMP (AES)" -msgstr "TKIP és CCMP (AES) kényszerítése" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "DHCP forgalom továbbítás" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Broadcast forgalom továbbítás" - -msgid "Forwarding mode" -msgstr "Továbbítás módja" - -msgid "Fragmentation Threshold" -msgstr "Töredezettségi küszöb" - -msgid "Frame Bursting" -msgstr "Keretfűzés" - -msgid "Free" -msgstr "Szabad" - -msgid "Free space" -msgstr "Szabad hely" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Csak GPRS" - -msgid "Gateway" -msgstr "Átjáró" - -msgid "Gateway ports" -msgstr "Átjáró portok" - -msgid "General Settings" -msgstr "Általános beállítások" - -msgid "General Setup" -msgstr "Általános beállítások" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Archívum készítése" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Általános 802.11%s vezeték-nélküli vezérlő" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "A megadott jelszavak nem egyeznek, a jelszó nem lett megváltoztatva!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Ugrás a jelszó beállításhoz..." - -msgid "Go to relevant configuration page" -msgstr "Ugrás a tárgyhoz tartozó beállításokhoz" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "HE.net jelszó" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Kezelő" - -msgid "Hang Up" -msgstr "Befejezés" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Itt állíthatja be az eszköz alapvető tulajdonságait, mint például a gépnév " -"vagy az időzóna." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Nyilvános kulcs alapú SSH azonosításhoz itt adhat meg nyilvános SSH " -"kulcsokat (soronként egyet)." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Hermes 802.11b vezeték nélküli vezérlő" - -msgid "Hide ESSID" -msgstr "ESSID elrejtése" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Host bejegyzések" - -msgid "Host expiry timeout" -msgstr "Host lejárati idő" - -msgid "Host-IP or Network" -msgstr "Host-IP vagy hálózat" - -msgid "Hostname" -msgstr "Gépnév" - -msgid "Hostname to send when requesting DHCP" -msgstr "DHCP kérés során küldendő gépnév" - -msgid "Hostnames" -msgstr "Gépnevek" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP cím" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 tűzfal" - -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN állapot" - -msgid "IPv4 address" -msgstr "IPv4 cím" - -msgid "IPv4 and IPv6" -msgstr "IPv4 és IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4 broadcast" - -msgid "IPv4 gateway" -msgstr "IPv4 átjáró" - -msgid "IPv4 netmask" -msgstr "IPv4 hálózati maszk" - -msgid "IPv4 only" -msgstr "csak IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "IPv4 prefix hossza" - -msgid "IPv4-Address" -msgstr "IPv4-cím" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 tűzfal" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN állapot" - -msgid "IPv6 address" -msgstr "IPv6 cím" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6 átjáró" - -msgid "IPv6 only" -msgstr "csak IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 előtag" - -msgid "IPv6 prefix length" -msgstr "IPv6 prefix hossz" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-cím" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6 IPv4-ben (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6 IPv4 felett (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6 IPv4 felett (6to4)" - -msgid "Identity" -msgstr "Identitás" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Megadás esetén az eszköz csomópont helyett UUID alapján történő csatolása" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Megadás esetén az eszköz csomópont helyett címke alapján történő csatolása" - -msgid "If unchecked, no default route is configured" -msgstr "Ha nincs kiválasztva, akkor nincs alapértelmezett útvonal beállítva" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" -"Ha nincs kiválasztva, akkor a hirdetett DNS kiszolgáló címeket nem veszi " -"figyelembe" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Ha a fizikai memória túl kevés a nem használt adatok ideiglenesen áttehetők " -"egy swap-eszközre mely így nagyobb mennyiségű használható RAM-ot eredményez. Az adatok áttétele egy " -"nagyon lassú folyamat mivel a swap-eszköz nem érhető el akkora sebességgel " -"mint a RAM." - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "Interfész figyelmen kívül hagyása" - -msgid "Ignore resolve file" -msgstr "A resolve fájl figyelmen kívül hagyása" - -msgid "Image" -msgstr "Image" - -msgid "In" -msgstr "Be" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Inaktivitási időtúllépés" - -msgid "Inbound:" -msgstr "Bejövő" - -msgid "Info" -msgstr "Információk" - -msgid "Initscript" -msgstr "Indítási állomány" - -msgid "Initscripts" -msgstr "Indítási állományok" - -msgid "Install" -msgstr "Telepítés" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "%q csomag telepítése" - -msgid "Install protocol extensions..." -msgstr "Protokoll kiterjesztések telepítése..." - -msgid "Installed packages" -msgstr "Telepített csomagok" - -msgid "Interface" -msgstr "Interfész" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Interfész beállítások" - -msgid "Interface Overview" -msgstr "Interfész áttekintés" - -msgid "Interface is reconnecting..." -msgstr "Interfész újracsatlakoztatása..." - -msgid "Interface is shutting down..." -msgstr "Interfész leállítása..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Az interfész nincs jelen, vagy még nincs csatlakoztatva." - -msgid "Interface reconnected" -msgstr "Interfész újracsatlakoztatva" - -msgid "Interface shut down" -msgstr "Interfész leállítás" - -msgid "Interfaces" -msgstr "Interfészek" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Belső szerverhiba" - -msgid "Invalid" -msgstr "Érvénytelen" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"A megadott VLAN azonosító érvénytelen. Az azonosítónak %d és %d közé kell " -"esnie." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" -"A megadott VLAN azonosító érvénytelen! Minden VLAN-hoz egyedi azonosító kell." - -msgid "Invalid username and/or password! Please try again." -msgstr "Érvénytelen felhasználói név és/vagy jelszó! Kérem próbálja újra!" - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Úgy tűnik, hogy a flash-elendő kép-file nem fér el a Flash-memóriába. Kérem " -"ellenőrizze a kép fájlt!" - -msgid "JavaScript required!" -msgstr "JavaScript szükséges!" - -msgid "Join Network" -msgstr "Csatlakozás a hálózathoz" - -msgid "Join Network: Wireless Scan" -msgstr "Csatlakozás a hálózathoz: vezetéknélküli hálózatok keresése" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Beállítások megtartása" - -msgid "Kernel Log" -msgstr "Kernel napló" - -msgid "Kernel Version" -msgstr "Kernel verzió" - -msgid "Key" -msgstr "Kulcs" - -msgid "Key #%d" -msgstr "Kulcs #%d" - -msgid "Kill" -msgstr "Kilövés" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP szerver" - -msgid "LCP echo failure threshold" -msgstr "LCP echo hibaküszöb" - -msgid "LCP echo interval" -msgstr "LCP Echo időtartam" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Címke" - -msgid "Language" -msgstr "Nyelv" - -msgid "Language and Style" -msgstr "Nyelv és megjelenés" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Bérlet érvényességi ideje" - -msgid "Leasefile" -msgstr "Bérlet fájl" - -msgid "Leasetime remaining" -msgstr "A bérletből hátralévő idő" - -msgid "Leave empty to autodetect" -msgstr "Automatikus észleléshez hagyja üresen" - -msgid "Leave empty to use the current WAN address" -msgstr "A jelenlegi WAN cím használatához hagyja üresen" - -msgid "Legend:" -msgstr "Jelmagyarázat:" - -msgid "Limit" -msgstr "Korlát" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Kapcsolat létrehozva" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"DNS szerverek listája, ahová a " -"kérések továbbításra kerülnek" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Domain-ok listája, melyeknél az RFC1918 válaszok megengedettek" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "A hamis NX tartomány eredményeket szolgáltató gépek listája" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Csak a megadott interfészen hallgat, vagy az összesen, amennyiben nem adja " -"meg" - -msgid "Listening port for inbound DNS queries" -msgstr "Szerver port a beérkező DNS kérések számára" - -msgid "Load" -msgstr "Terhelés" - -msgid "Load Average" -msgstr "Átlagos terhelés" - -msgid "Loading" -msgstr "Betöltés" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Helyi IPv4 cím" - -msgid "Local IPv6 address" -msgstr "Helyi IPv6 cím" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Helyi indítóscript" - -msgid "Local Time" -msgstr "Helyi idő" - -msgid "Local domain" -msgstr "Helyi tartomány" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Helyi tartomány meghatározása. Az ezzel a tartománnyal egyező nevek soha " -"nincsenek továbbítva és csak DHCP-n vagy host fájlok által kerülnek " -"feloldásra" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"A helyi tartomány utótag csatolása a DHCP nevekhez és hosts fájl " -"bejegyzésekhez" - -msgid "Local server" -msgstr "Helyi kiszolgáló" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Gépnév lokalizációja a lekérdező alhálózattól függően, ha több IP cím is " -"elérhető" - -msgid "Localise queries" -msgstr "Lekérdezések lokalizációja" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Napló kimeneti szintje" - -msgid "Log queries" -msgstr "Kérések naplózása" - -msgid "Logging" -msgstr "Naplózás" - -msgid "Login" -msgstr "Bejelentkezés" - -msgid "Logout" -msgstr "Kijelentkezés" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "A legalacsonyabb bérleti címnek az interfész címétől való távolsága" - -msgid "MAC-Address" -msgstr "MAC-cím" - -msgid "MAC-Address Filter" -msgstr "MAC-cím szűrő" - -msgid "MAC-Filter" -msgstr "MAC-szűrő" - -msgid "MAC-List" -msgstr "MAC-lista" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Aktív DHCP bérletek maximális száma" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Párhuzamos DNS kérések maximális száma" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "EDNS.0 UDP csomagok maximális mérete" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Maximális várakozási idő a modem kész állapotára (másodpercben)" - -msgid "Maximum hold time" -msgstr "Maximális tartási idő" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "DHCP címek maximális száma" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memória" - -msgid "Memory usage (%)" -msgstr "Memória használat (%)" - -msgid "Metric" -msgstr "Metrika" - -msgid "Minimum hold time" -msgstr "Minimális tartási idő" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Hiányzó protokoll kiterjesztés a %q progokoll számára" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mód" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Modemeszköz" - -msgid "Modem init timeout" -msgstr "Modem inicializálás időtúllépés" - -msgid "Monitor" -msgstr "Ellenőrzés" - -msgid "Mount Entry" -msgstr "Csatolási bejegyzés" - -msgid "Mount Point" -msgstr "Csatolási pont" - -msgid "Mount Points" -msgstr "Csatolási pontok" - -msgid "Mount Points - Mount Entry" -msgstr "Csatolási pontok - Csatolási bejegyzés" - -msgid "Mount Points - Swap Entry" -msgstr "Csatolási pontok - Lapozóterület bejegyzés" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"A csatolási pontok határozzák meg, hogy egy memória eszköz hová lesz " -"csatlakoztatva a fájlendszeren belül " - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Csatolási beállítások" - -msgid "Mount point" -msgstr "Csatolási pont" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Csatolt fájlrendszerek" - -msgid "Move down" -msgstr "Mozgatás lefelé" - -msgid "Move up" -msgstr "Mozgatás felfelé" - -msgid "Multicast address" -msgstr "Multicast cím" - -msgid "NAS ID" -msgstr "NAS azonosító" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Kijelölt NTP kiszolgálók" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Név" - -msgid "Name of the new interface" -msgstr "Az új interfész neve" - -msgid "Name of the new network" -msgstr "Az új hálózat neve" - -msgid "Navigation" -msgstr "Navigáció" - -msgid "Netmask" -msgstr "Hálózati maszk" - -msgid "Network" -msgstr "Hálózat" - -msgid "Network Utilities" -msgstr "Hálózati eszközök" - -msgid "Network boot image" -msgstr "Hálózati rendszertöltő lemezkép" - -msgid "Network without interfaces." -msgstr "Interfészhez nem rendelt hálózat" - -msgid "Next »" -msgstr "Következő »" - -msgid "No DHCP Server configured for this interface" -msgstr "Ehhez az interfészhez nincs DHCP kiszolgáló beállítva" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Ez a tábla nem tartalmaz láncokat." - -msgid "No files found" -msgstr "Nem találhatók fájlok" - -msgid "No information available" -msgstr "Nincs elérhető információ" - -msgid "No negative cache" -msgstr "Nincs negatív gyorsítótár" - -msgid "No network configured on this device" -msgstr "Ehhez az eszközhöz nincs hálózat beállítva" - -msgid "No network name specified" -msgstr "Nincs megadva hálózatnév" - -msgid "No package lists available" -msgstr "Csomaglisták nem állnak rendelkezésre" - -msgid "No password set!" -msgstr "Nincs jelszó!" - -msgid "No rules in this chain" -msgstr "Ez a lánc nem tartalmaz szabályokat" - -msgid "No zone assigned" -msgstr "Nincs hozzárendelt zóna" - -msgid "Noise" -msgstr "Zaj" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Zaj:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Nincs" - -msgid "Normal" -msgstr "Normál" - -msgid "Not Found" -msgstr "Nem található" - -msgid "Not associated" -msgstr "Nincs hozzárendelve" - -msgid "Not connected" -msgstr "Nincs kapcsolódva" - -msgid "Note: Configuration files will be erased." -msgstr "Megjegyzés: konfigurációs fájlok törölve lesznek." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Megjegyzés" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-Beállítások" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "Kikapcsolt állapot késleltetés" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Ezen az oldalon a hálózati interfészeket állíthatja be. Több interfész " -"között híd hozható létre a \"híd interfész\" mező bejelölésével és több " -"hálózati interfész nevének szóközzel történő elválasztásával. Lehetőség van " -"VLAN jelölés " -"INTERFÉSZ.VLANSZÁM használatára is, pl. eth0.1)." - -msgid "On-State Delay" -msgstr "Bekapcsolt állapot késleltetés" - -msgid "One of hostname or mac address must be specified!" -msgstr "Legalább gépnevet vagy MAC-címet meg kell adni!" - -msgid "One or more fields contain invalid values!" -msgstr "Egy vagy több mező érvénytelen adatot tartalmaz!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Egy vagy több kötelezően kitöltendő mező üres!" - -msgid "Open list..." -msgstr "Lista megnyitása..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Beállítás módosítva" - -msgid "Option removed" -msgstr "Beállítás eltávolítva" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Lehetőségek" - -msgid "Other:" -msgstr "Egyéb:" - -msgid "Out" -msgstr "Ki" - -msgid "Outbound:" -msgstr "Kimenő:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "MAC cím felülbírálása" - -msgid "Override MTU" -msgstr "MTU felülbíráslás" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Átjáró felülbírálása a DHCP válaszokban" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Az ügyfelek részére küldött hálózati masz felülbírálása. Ez alapesetben a " -"kiszolgált alhálózat alapján kerül meghatározásra." - -msgid "Override the table used for internal routes" -msgstr "A belső útvonalakhoz használt tábla felülbírálása" - -msgid "Overview" -msgstr "Áttekintés" - -msgid "Owner" -msgstr "Tulajdonos" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP jelszó" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP felhasználói név" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA beágyazás" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "A libiwinfo csomag szükséges!" - -msgid "Package lists are older than 24 hours" -msgstr "A csomag listák 24 óránál régebbiek" - -msgid "Package name" -msgstr "Csomagnév" - -msgid "Packets" -msgstr "Csomagok" - -msgid "Part of zone %q" -msgstr "A %q zóna része" - -msgid "Password" -msgstr "Jelszó" - -msgid "Password authentication" -msgstr "Jelszó hitelesítés" - -msgid "Password of Private Key" -msgstr "A privát kulcsh jelszava" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "A jelszó megváltoztatása sikeres!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "CA tanúsítvány elérési útja" - -msgid "Path to Client-Certificate" -msgstr "Kliens tanúsítvány elérési útja" - -msgid "Path to Private Key" -msgstr "A privát kulcs elérési útja" - -msgid "Path to executable which handles the button event" -msgstr "A gomb eseményeit kezelő végrehajtható állomány elérési útja" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Csúcs:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Újraindítás végrehajtása" - -msgid "Perform reset" -msgstr "Visszaállítás végrehajtása" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Phy sebesség:" - -msgid "Physical Settings" -msgstr "Fizikai beállítások" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "csom." - -msgid "Please enter your username and password." -msgstr "Adja meg a felhasználónevét és a jelszavát." - -msgid "Policy" -msgstr "Szabály" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Port állapot:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"A peer halottnak tekintése a megadott számú LCP echo hibák után. Használjon " -"0-t a hibák figyelmen kívül hagyásához." - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Ügyfél-ügyfél közötti kommunikáció megakadályozása" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Prism2/2.5/3 802.11b vezeték nélküli vezérlő" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Folytatás" - -msgid "Processes" -msgstr "Folyamatok" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Protocol family" -msgstr "Protokoll család" - -msgid "Protocol of the new interface" -msgstr "Az új interfész protokollja" - -msgid "Protocol support is not installed" -msgstr "Protokoll támogatás nincs telepítve" - -msgid "Provide NTP server" -msgstr "NTP kiszolgáló" - -msgid "Provide new network" -msgstr "Új hálózat nyújtása" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Ál Ad-hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Minőség" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS küszöbérték" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "RX sebesség" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "RaLink 802.11%s vezeték nélküli vezérlő" - -msgid "Radius-Accounting-Port" -msgstr "Radius-Naplózási-Port" - -msgid "Radius-Accounting-Secret" -msgstr "Radius-Naplózás-Kulcs" - -msgid "Radius-Accounting-Server" -msgstr "Radius-Naplózás-Kiszolgáló" - -msgid "Radius-Authentication-Port" -msgstr "Radius-Hitelesítés-Port" - -msgid "Radius-Authentication-Secret" -msgstr "Radius-Hitelesítés-Kulcs" - -msgid "Radius-Authentication-Server" -msgstr "Radius-Hitelesítés-Kiszolgáló" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Az /etc/ethers fájl olvasása a DHCP kiszolgáló beállításához" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Biztosan törli az interfészt? A törlés nem visszavonható!\n" -" Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az " -"interfészen keresztül kapcsolódik." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Biztosan törli ezt a vezetéknélküli hálózatot? A törlés nem visszavonható!\n" -"Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a hálózaton " -"keresztül kapcsolódik." - -msgid "Really reset all changes?" -msgstr "Biztos, hogy visszavonja az összes módosítást?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Biztos, hogy leállítja a hálózatot?!\n" -" Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a " -"hálózaton keresztül kapcsolódik." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Biztos, hogy leállítja a \"%s\" interfészt?\n" -" Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az " -"interfészen keresztül kapcsolódik." - -msgid "Really switch protocol?" -msgstr "Biztos, hogy cserélni szeretné a protokollt?" - -msgid "Realtime Connections" -msgstr "Valósidejű kapcsolatok" - -msgid "Realtime Graphs" -msgstr "Valósidejű grafikonok" - -msgid "Realtime Load" -msgstr "Valósidejű terhelés" - -msgid "Realtime Traffic" -msgstr "Valósidejű forgalom" - -msgid "Realtime Wireless" -msgstr "Valósidejű vezetéknélküli adatok" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Rebind elleni védelem" - -msgid "Reboot" -msgstr "Újraindítás" - -msgid "Rebooting..." -msgstr "Újraindítás..." - -msgid "Reboots the operating system of your device" -msgstr "Újraindítja az eszköz operációs rendszerét" - -msgid "Receive" -msgstr "Fogadás" - -msgid "Receiver Antenna" -msgstr "Vevő antenna" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Csatlakoztassa újra az interfészt" - -msgid "Reconnecting interface" -msgstr "Interfész újracsatlakoztatása" - -msgid "References" -msgstr "Hivatkozások" - -msgid "Relay" -msgstr "Átjátszás" - -msgid "Relay Bridge" -msgstr "Átjátszó híd" - -msgid "Relay between networks" -msgstr "Átjátszás hálózatok között" - -msgid "Relay bridge" -msgstr "Átjátszó híd" - -msgid "Remote IPv4 address" -msgstr "Távoli IPv4 cím" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Eltávolítás" - -msgid "Repeat scan" -msgstr "Felderítés ismétlése" - -msgid "Replace entry" -msgstr "Bejegyés lecserélése" - -msgid "Replace wireless configuration" -msgstr "Vezetéknélküli beállítások lecserélése" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" -"Szükséges bizonyos internetszolgáltatók esetén, pl. Charter 'DOCSIS 3'-al" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Visszaállítás" - -msgid "Reset Counters" -msgstr "Számlálók nullázása" - -msgid "Reset to defaults" -msgstr "Alapértelmezések visszaállítása" - -msgid "Resolv and Hosts Files" -msgstr "Resolv és hosts fájlok" - -msgid "Resolve file" -msgstr "Resolv fájl" - -msgid "Restart" -msgstr "Újraindítás" - -msgid "Restart Firewall" -msgstr "Tűzfal újraindítása" - -msgid "Restore backup" -msgstr "Biztonsági mentés visszaállítása" - -msgid "Reveal/hide password" -msgstr "Jelszó mutatása/elrejtése" - -msgid "Revert" -msgstr "Visszavonás" - -msgid "Root" -msgstr "Gyökérkönyvtár" - -msgid "Root directory for files served via TFTP" -msgstr "TFTP-n keresztül megosztott fájlok gyökérkönyvtára" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Router jelszó" - -msgid "Routes" -msgstr "Útvonalak" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Az útvonalak határozzák meg, hogy bizonyos gépek illetve hálózatok melyik " -"interfészen keresztül érhetők el." - -msgid "Run a filesystem check before mounting the device" -msgstr "Fájlrendszer ellenőrzés futtatása az eszköz csatolása előtt" - -msgid "Run filesystem check" -msgstr "Fájlrendszer ellenőrzés futtatása" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH hozzáférés" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH kulcsok" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Mentés" - -msgid "Save & Apply" -msgstr "Mentés & Alkalmazás" - -msgid "Save & Apply" -msgstr "Mentés & Alkalmazás" - -msgid "Scan" -msgstr "Felderítés" - -msgid "Scheduled Tasks" -msgstr "Ütemezett feladatok" - -msgid "Section added" -msgstr "Szakasz hozzáadva" - -msgid "Section removed" -msgstr "Szakasz eltávolítva" - -msgid "See \"mount\" manpage for details" -msgstr "Részletekért lásd a 'mount' man oldalát" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"LCP echo kérések küldése a másodpercben megadott időközönként, csak a " -"hibaküszöbbel együtt van hatása." - -msgid "Separate Clients" -msgstr "Kliensek szétválasztása" - -msgid "Server Settings" -msgstr "Kiszolgáló beállításai" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Szolgáltatás neve" - -msgid "Service Type" -msgstr "Szolgáltatás típusa" - -msgid "Services" -msgstr "Szolgáltatások" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Idő szinkronizálás beállítása" - -msgid "Setup DHCP Server" -msgstr "DHCP kiszolgáló beállítása" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "Mentendő fájlok aktuális listájának megjelenítése" - -msgid "Shutdown this interface" -msgstr "Interfész leállítása" - -msgid "Shutdown this network" -msgstr "Hálózat leállítása" - -msgid "Signal" -msgstr "Jel" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Jel:" - -msgid "Size" -msgstr "Méret" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Ugrás" - -msgid "Skip to content" -msgstr "Ugrás a tartalomhoz" - -msgid "Skip to navigation" -msgstr "Ugrás a navigációhoz" - -msgid "Slot time" -msgstr "Időrés" - -msgid "Software" -msgstr "Szoftver" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Néhán mező érvénytelen, az értékek nem menthetők!" - -msgid "Sorry, the object you requested was not found." -msgstr "Sajnálom, a kért objektum nem található." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Sajnálom, a szerver váratlan hibát észlelt." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Sajnáljuk, a 'sysupgrade' támogatás nem elérhető, az új firmware fájl " -"telepítését manuálisan kell elvégezni. Az eszközhöz tartozó telepítési " -"utasításokért keresse fel az wiki-t." - -msgid "Sort" -msgstr "Sorbarendezés" - -msgid "Source" -msgstr "Forrás" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Meghatározza a gomb kezelendő állapotát" - -msgid "Specifies the directory the device is attached to" -msgstr "Megadja az eszköz csatlakozási könyvtárát." - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Megadja a Dropbear példány portját" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Megadja a maximális sikertelen ARP kérések számát, amik után a host nem " -"elérhetőnek tekinthető" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Megadja a másodpercek számát, amik után a host nem elérhetőnek tekinthető" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Itt adja meg a titkosító kulcsot." - -msgid "Start" -msgstr "Indítás" - -msgid "Start priority" -msgstr "Indítás prioritása" - -msgid "Startup" -msgstr "Rendszerindítás" - -msgid "Static IPv4 Routes" -msgstr "Statikus IPv4 útvonalak" - -msgid "Static IPv6 Routes" -msgstr "Statikus IPv6 útvonalak" - -msgid "Static Leases" -msgstr "Statikus bérletek" - -msgid "Static Routes" -msgstr "Statikus útvonalak" - -msgid "Static address" -msgstr "Statikus cím" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"A statikus bérletekkel a DHCP kliensekhez fix IP-címet és hostnevet " -"rendelhet. Olyan nem dinamikus interfész konfigurációk esetén is " -"szükségesek, ahol a csak a megfelelő bérlettel rendelkező hosztok kerülnek " -"kiszolgálásra." - -msgid "Status" -msgstr "Állapot" - -msgid "Stop" -msgstr "Leállítás" - -msgid "Strict order" -msgstr "Kötött sorrend" - -msgid "Submit" -msgstr "Elküldés" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Lapozóterület" - -msgid "Switch" -msgstr "Kapcsoló" - -msgid "Switch %q" -msgstr "Kapcsoló %q" - -msgid "Switch %q (%s)" -msgstr "Kapcsoló %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Protokoll csere" - -msgid "Sync with browser" -msgstr "Szinkronizálás a böngészővel" - -msgid "Synchronizing..." -msgstr "Szinkronizálás..." - -msgid "System" -msgstr "Rendszer" - -msgid "System Log" -msgstr "Rendszernapló" - -msgid "System Properties" -msgstr "Rendszer tulajdonságok" - -msgid "System log buffer size" -msgstr "Rendszer napló puffer méret" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP beállítások" - -msgid "TFTP server root" -msgstr "TFTP szerver gyökér könyvtár" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "TX sebesség" - -msgid "Table" -msgstr "Tábla" - -msgid "Target" -msgstr "Cél" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Megszakítás" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Az Eszköz beállítások szakasz a rádió hardver fizikai beállításait, " -"úgymint csatorna, adóteljesítmény vagy antenna választás teszi lehetővé, " -"amelyen az összes definiált vezeték nélküli hálózat (ha a rádió hardver " -"multi-SSID képes) osztozik. A hálózatonkénti beállítások, mint az " -"titkosítás, mód az Interfész beállítások alá vannak csoportosítva." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"A libiwinfo-lua nincs telepítve. A vezetéknélküli beállítás " -"működéséhez ezt az összetevőt telepítnei kell." - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"A szolgáltatóhoz rendelt IPv6 előtag, általában így végződik: ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"A következő karakterek használhatók: A-Z, a-z, " -"0-9 and _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"A memória vagy partíció eszköz fájlja (pl. " -"/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"A memória formázásához használt fájlrendszer típusa (pl. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Az image feltöltve. Alább található a fájl ellenőrző összege és mérete, " -"hasonlítsa össze az eredeti fájllal a feltöltött adatok sértetlenségének " -"ellenőrzéséhez.
    Kattintson az alábbi \"Folytatás\" gombra a flash-elési " -"eljárás elindításához." - -msgid "The following changes have been committed" -msgstr "A következő módosítások lettek alkalmazva" - -msgid "The following changes have been reverted" -msgstr "A következő módosítások lettek visszavonva" - -msgid "The following rules are currently active on this system." -msgstr "Jelenleg a következő szabályok aktívak a rendszeren." - -msgid "The given network name is not unique" -msgstr "A megadott hálózati név már létezik" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"A hardver nem képes többszörös SSID kezelésre ezért a meglévő beállítások " -"elvesznek ha folytatja." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Az IPv4 előtag hossza bitekben, a maradék az IPv6 címekben használatos." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Az IPv6 előtag hossza bitekben" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Az eszközön található hálózati portok kombinálhatók több VLAN-ba, amelyekben a számítógépek " -"közvetlenül kommunikálhatnak egmással. A VLAN-ok gyakran a hálózati szegmensek elkülönítésére " -"használják. Gyakran van egy alapértelmezett Uplink port a következő nagyobb " -"hálózathoz (pl. az internet) való kapcsolódásra és a többi port a helyi " -"hálózathoz." - -msgid "The selected protocol needs a device assigned" -msgstr "A kiválasztott protokoll eszköz hozzárendelést igényel" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "A rendszer most törli a konfigurációs partíciót majd újraindul." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"A rendszer frissítése folyamatban.
    NE KAPCSOLJA KI AZ ESZKÖZT!
    " -"Várjon néhány percet, amíg az eszköz ismételten elérhető. Az eszköz " -"eléréséhez a beállításaitól függően szükséges lehet a számítógépe IP-címének " -"megújítása." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"A feltöltött image fájl formátuma nem támogatott. Ügyeljen arra, hogy a " -"platformjának megfelelő általános image formátumot válassza ki." - -msgid "There are no active leases." -msgstr "Nincsenek aktív bérletek." - -msgid "There are no pending changes to apply!" -msgstr "Nincsenek alkalmazásra váró módosítások!" - -msgid "There are no pending changes to revert!" -msgstr "Nincsenek visszavonásra váró változtatások!" - -msgid "There are no pending changes!" -msgstr "Nincsenek el nem mentett változtatások!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Nincs hozzárendelt eszköz, kérem csatoljon egy hálózati eszközt a \"Fizikai " -"beállítások\" fülön." - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"A routeren jelenleg nincs jelszó beállítva. Állítsa be a root felhasználó " -"jelszavát a felhasználói felület védelme és az SSH elérés engélyezése " -"érdekében." - -msgid "This IPv4 address of the relay" -msgstr "Az átjátszó IPV4 címe" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Ez egy shell mintákból álló lista a rendszer frissítés során megőrzendő " -"fájlok és könytárak meghatározására. Az /etc/config/ könyvtárban található " -"módosított fájlok és bizonyos további beállítások automatikusan megőrződnek." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Ez a /etc/rc.local fájl tartalma. Ide írhatja be a saját parancsait (az " -"'exit 0' sor elé) a boot folyamat végén történő futtatásukhoz." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"Ez az alagút közvetítő (tunnel broker) által megadott helyi végpont címe, " -"általában így végződik: :2" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Ez az egyetlen DHCP a helyi hálózaton" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Ez a rendszer crontab, amiben időzített feladatok definiálhatók." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Ez általában a legközelebbi alagút közvetítő (tunnel broker) által vezérelt " -"jelenléti pont (PoP) címe" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Ez a lista a rendszerben jelenleg futó folyamatokról és azok állapotáról ad " -"áttekintést." - -msgid "This page allows the configuration of custom button actions" -msgstr "Ez a lap a gombok egyedi működésének beállítását teszi lehetővé" - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Ez a lap a rendszerben jelenleg aktív hálózati kapcsolatokról ad áttekintést." - -msgid "This section contains no values yet" -msgstr "Ez a szakasz még nem tartalmaz értékeket" - -msgid "Time Synchronization" -msgstr "Idő szinkronizálás" - -msgid "Time Synchronization is not configured yet." -msgstr "Idő szinkronizálás még nincs beállítva." - -msgid "Timezone" -msgstr "Időzóna" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Itt tölthet fel egy korábban létrehozott biztonsági mentés archívumot a " -"konfigurációs fájlok visszaállításához." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Összes elérhető" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Forgalom" - -msgid "Transfer" -msgstr "Átvitel" - -msgid "Transmission Rate" -msgstr "Átviteli sebesség" - -msgid "Transmit" -msgstr "Küldés" - -msgid "Transmit Power" -msgstr "Adóteljesítmény" - -msgid "Transmitter Antenna" -msgstr "Adó antenna" - -msgid "Trigger" -msgstr "Trigger" - -msgid "Trigger Mode" -msgstr "Trigger mód" - -msgid "Tunnel ID" -msgstr "Tunnel azonosító" - -msgid "Tunnel Interface" -msgstr "Tunnel interfész" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Adóteljesítmény" - -msgid "Type" -msgstr "Típus" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Csak UTMS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB eszköz" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Nem indiítható" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Ismeretlen" - -msgid "Unknown Error, password not changed!" -msgstr "Ismeretlen hiba, a jelszó nem lett megváltoztatva!" - -msgid "Unmanaged" -msgstr "Nem kezelt" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "El nem mentett módosítások" - -msgid "Unsupported protocol type." -msgstr "Nem támogatott protokoll típus." - -msgid "Update lists" -msgstr "Listák frissítése" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Itt tölthet fel egy új sysupgrade-kompatibilis képet a futó firmware " -"lecseréléséhez. A jelenlegi beállítások megtartásához jelölje be a " -"\"Beállítások megtartása\" négyzetet (kompatibilis firmware kép szükséges)." - -msgid "Upload archive..." -msgstr "Archívum feltöltése..." - -msgid "Uploaded File" -msgstr "Feltöltött fájl" - -msgid "Uptime" -msgstr "Működési idő" - -msgid "Use /etc/ethers" -msgstr "/etc/ethers használata" - -msgid "Use DHCP gateway" -msgstr "DHCP kiszolgáló használata" - -msgid "Use DNS servers advertised by peer" -msgstr "Másik fél által ajánlott DNS szerverek használata" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "ISO/IEC 3166 alpha2 országkódok használata" - -msgid "Use MTU on tunnel interface" -msgstr "MTU használata az alagút interfészen" - -msgid "Use TTL on tunnel interface" -msgstr "TTL használata az alagút interfészen" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Broadcast flag használata" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Egyedi DNS szerverek használata" - -msgid "Use default gateway" -msgstr "Alapértelmezett átjáró használata" - -msgid "Use gateway metric" -msgstr "Átjáró metrikájának használata" - -msgid "Use routing table" -msgstr "Útválasztó tábla használata" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Használja a Hozzáadás gombot új bérleti bejegyzés hozzáadásához. A " -"MAC-cím azonosítja a gépet. az IPv4-cím adja meg a " -"használandó rögzített IP címet és a Gépnév lesz szimbolikus névként " -"hozzárendelve az igénylő géphez." - -msgid "Used" -msgstr "Használt" - -msgid "Used Key Slot" -msgstr "Használt kulcsindex" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Felhasználónév" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLAN-ok %q-n" - -msgid "VLANs on %q (%s)" -msgstr "VLAN-ok %q-n (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "VPN kiszolgáló" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "DHCP kérés során küldendő 'Vendor Class'" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Ellenőrzés" - -msgid "Version" -msgstr "Verzió" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP nyílt rendszer" - -msgid "WEP Shared Key" -msgstr "WEP megosztott kulcs" - -msgid "WEP passphrase" -msgstr "WEP jelmondat" - -msgid "WMM Mode" -msgstr "WMM mód" - -msgid "WPA passphrase" -msgstr "WPA jelmondat" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA titkosításhoz kliens módnál 'wpa_supplicant', hozzáférési pont illetve " -"ad-hoc módnál 'hostapd' telepítése szükséges." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "Várakozás a változtatások alkalmazására..." - -msgid "Waiting for command to complete..." -msgstr "Várakozás a parancs befejezésére..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Figyelmeztetés" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Vezetéknélküli rész" - -msgid "Wireless Adapter" -msgstr "Vezetéknélküli adapter" - -msgid "Wireless Network" -msgstr "Vezetéknélküli hálózat" - -msgid "Wireless Overview" -msgstr "Vezetéknélküli rész áttekintés" - -msgid "Wireless Security" -msgstr "Vezetéknélküli biztonság" - -msgid "Wireless is disabled or not associated" -msgstr "Vezetéknélküli hálózat le van tiltva vagy nincs kapcsolódva" - -msgid "Wireless is restarting..." -msgstr "Vezetéknélküli rész újraindítása folyamatban..." - -msgid "Wireless network is disabled" -msgstr "Vezetéknélküli hálózat letiltva" - -msgid "Wireless network is enabled" -msgstr "Vezetéknélküli hálózat engedélyezve" - -msgid "Wireless restarted" -msgstr "Vezetéknélküli rész újraindítva" - -msgid "Wireless shut down" -msgstr "Vezetéknélküli rész leállítása" - -msgid "Write received DNS requests to syslog" -msgstr "A kapott DNS kéréseket írja a rendszernaplóba" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Itt engedélyezheti vagy tilthatja le a telepített indítási állományokat. A " -"módosítások a rendszer újraindítása után lesznek alakalmazva.
    Figyelem: alapvető indítási állomány pl. \"network\" letiltása " -"esetén, az eszköz elérhetetlenné válhat!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Engélyezze a Java Szkripteket a böngészőjében, mert anélkül a LuCI nem fog " -"megfelelően működni." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "bármelyik" - -msgid "auto" -msgstr "automatikus" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "áthidalt" - -msgid "create:" -msgstr "új:" - -msgid "creates a bridge over specified interface(s)" -msgstr "híd létrehozása a megadott interfész(ek) között" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "letiltás" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "lejárt" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"fájl ahová a DHCP " -"bérletek tárolásra kerülnek" - -msgid "forward" -msgstr "továbbítás" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "help" -msgstr "súgó" - -msgid "hidden" -msgstr "rejtett" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "ha a cél hálózat" - -msgid "input" -msgstr "bemenet" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "helyi DNS fájl" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "nem" - -msgid "no link" -msgstr "nincs link" - -msgid "none" -msgstr "nincs" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "ki" - -msgid "on" -msgstr "be" - -msgid "open" -msgstr "nyitás" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "irányított" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "cimkézett" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "ismeretlen" - -msgid "unlimited" -msgstr "korlátlan" - -msgid "unspecified" -msgstr "nincs meghatározva" - -msgid "unspecified -or- create:" -msgstr "nincs magadva -vagy- új:" - -msgid "untagged" -msgstr "cimkézetlen" - -msgid "yes" -msgstr "igen" - -msgid "« Back" -msgstr "« Vissza" - -#~ msgid "Leasetime" -#~ msgstr "Bérlet időtartama" - -#~ msgid "AR Support" -#~ msgstr "AR Támogatás" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s vezeték-nélküli vezérlő" - -#~ msgid "Background Scan" -#~ msgstr "Felderítés a háttérben" - -#~ msgid "Compression" -#~ msgstr "Tömörítés" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Hardveres beacon időzítő letiltása" - -#~ msgid "Do not send probe responses" -#~ msgstr "Ne válaszoljon a szondázásra" - -#~ msgid "Fast Frames" -#~ msgstr "Gyors keretek" - -#~ msgid "Maximum Rate" -#~ msgstr "Maximális sebesség" - -#~ msgid "Minimum Rate" -#~ msgstr "Minimális sebesség" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast sebesség" - -#~ msgid "Outdoor Channels" -#~ msgstr "Kültéri csatornák" - -#~ msgid "Regulatory Domain" -#~ msgstr "Szabályozó tartomány" - -#~ msgid "Separate WDS" -#~ msgstr "WDS szétválasztása" - -#~ msgid "Static WDS" -#~ msgstr "Statikus WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbó mód" - -#~ msgid "XR Support" -#~ msgstr "XR támogatás" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Amennyiben ezt jelöletlenül hagyja, egy további hálózat jön létre" - -#~ msgid "Join Network: Settings" -#~ msgstr "Csatlakozás a hálózathoz: Beállítások" - -#~ msgid "CPU" -#~ msgstr "Processzor" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "A %d port egyszerre több VLAN-ban is cimkézetlen!" - -#~ msgid "VLAN Interface" -#~ msgstr "VLAN interfész" diff --git a/package/luci/modules/luci-base/po/it/base.po b/package/luci/modules/luci-base/po/it/base.po deleted file mode 100644 index b90ca79bf7..0000000000 --- a/package/luci/modules/luci-base/po/it/base.po +++ /dev/null @@ -1,3987 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2017-09-05 00:33+0100\n" -"Last-Translator: bubu83 \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.6.10\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d finestra in minuti , %d secondi intervallo)" - -msgid "(%s available)" -msgstr "(%s disponibile)" - -msgid "(empty)" -msgstr "(vuoto)" - -msgid "(no interfaces attached)" -msgstr "(nessuna interfaccia collegata)" - -msgid "-- Additional Field --" -msgstr "-- Campo aggiuntivo --" - -msgid "-- Please choose --" -msgstr "-- Per favore scegli --" - -msgid "-- custom --" -msgstr "-- personalizzato --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Carico in 1 minuto:" - -msgid "15 Minute Load:" -msgstr "Carico in 15 minut:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Carico in 5 minuti:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "Richiesta porta DNS" - -msgid "DNS server port" -msgstr "Porta Server DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS I server che verranno " -"interrogati nell'ordine del resolv file" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "Indirizzo IPv4" - -msgid "IPv4-Gateway" -msgstr "Gateway IPv4" - -msgid "IPv4-Netmask" -msgstr "" -"Maschera di rete IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Indirizzo IPv6 o rete " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "Gateway IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Configurazione LED" - -msgid "LED Name" -msgstr "LED Nome" - -msgid "MAC-Address" -msgstr "Indirizzo MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. Contratto DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. dimensione pacchetti EDNS0" - -msgid "Max. concurrent queries" -msgstr "Max. Richiesta in uso" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    Nota: devi riavviare manualmente il servizio cron se il file crontab " -"era vuoto prima delle modifiche." - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "riprova soglia ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Ponti ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identificatore Canale Virtuale ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identificatore Percorso Virtuale ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"I ponti ATM incapsulano connessioni in AAL5, in modo che i dispositivi " -"virtuali si possono interfacciare con le reti virtuali Linux in congiunzione " -"con la comunicazione DHCP o PPP dell'ISP." - -msgid "ATM device number" -msgstr "Numero dispositivo ATM " - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Accesso Concentratore" - -msgid "Access Point" -msgstr "Punto di Accesso" - -msgid "Action" -msgstr "Azione" - -msgid "Actions" -msgstr "Azioni" - -msgid "Activate this network" -msgstr "Attiva questa rete" - -msgid "Active IPv4-Routes" -msgstr "" -"Instradamento IPv4 " -"attivo" - -msgid "Active IPv6-Routes" -msgstr "" -"Instradamento IPv6 " -"attivo" - -msgid "Active Connections" -msgstr "Connessioni attive" - -msgid "Active DHCP Leases" -msgstr "Contratti attivi DHCP" - -msgid "Active DHCPv6 Leases" -msgstr "Contratti attivi DHCPv6" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Aggiungi" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Aggiungere il suffisso di dominio locale ai nomi serviti dal file hosts" - -msgid "Add new interface..." -msgstr "Aggiungi nuova interfaccia..." - -msgid "Additional Hosts files" -msgstr "File Hosts Aggiuntivo" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Indirizzo" - -msgid "Address to access local relay bridge" -msgstr "Indirizzo per accedere al ponte locale di trasmissione" - -msgid "Administration" -msgstr "Amministrazione" - -msgid "Advanced Settings" -msgstr "Opzioni Avanzate" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Allerta" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permetti autenticazione SSH tramite " -"password" - -msgid "Allow all except listed" -msgstr "Consenti tutti tranne quelli nell'elenco" - -msgid "Allow listed only" -msgstr "Consenti solo quelli nell'elenco" - -msgid "Allow localhost" -msgstr "Permetti localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permetti agli host remoti di connettersi tramite ssh reindirizzando le porte" - -msgid "Allow root logins with password" -msgstr "Permetti l'accesso a root con password" - -msgid "Allow the root user to login with password" -msgstr "Abilita l'utente root con l'accesso via password" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permetti le risposte upstream nell'intervallo 127.0.0.0/8, per esempio nei " -"servizi RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antenna 1" - -msgid "Antenna 2" -msgstr "Antenna 2" - -msgid "Antenna Configuration" -msgstr "Configurazione dell'Antenna" - -msgid "Any zone" -msgstr "Qualsiasi Zona" - -msgid "Apply" -msgstr "Applica" - -msgid "Applying changes" -msgstr "Applica modifiche" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Assegna Interfacce..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Dispositivi Wi-Fi connessi" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autenticazione PEAP" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritativo" - -msgid "Authorization Required" -msgstr "Autorizzazione richiesta" - -msgid "Auto Refresh" -msgstr "Aggiornamento Automatico" - -msgid "Automatic" -msgstr "Automatico" - -msgid "Automatic Homenet (HNCP)" -msgstr "Homenet (HNCP) automatico" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "Controlla automaticamente il filesystem per errori prima di montare" - -msgid "Automatically mount filesystems on hotplug" -msgstr "Monta automaticamente i filesystem in hotplug" - -msgid "Automatically mount swap on hotplug" -msgstr "Monta automaticamente lo swap in hotplug" - -msgid "Automount Filesystem" -msgstr "Automonta Filesystem" - -msgid "Automount Swap" -msgstr "Automonta Swap" - -msgid "Available" -msgstr "Disponibile" - -msgid "Available packages" -msgstr "Pacchetti disponibili" - -msgid "Average:" -msgstr "Media:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Indietro" - -msgid "Back to Overview" -msgstr "Ritorna alla panoramica" - -msgid "Back to configuration" -msgstr "Indietro alla configurazione" - -msgid "Back to overview" -msgstr "Ritorna alla panoramica" - -msgid "Back to scan results" -msgstr "Ritorno ai risultati della scansione" - -msgid "Backup / Flash Firmware" -msgstr "Copia di Sicurezza / Flash Firmware" - -msgid "Backup / Restore" -msgstr "Copia di Sicurezza / Ripristina" - -msgid "Backup file list" -msgstr "Elenco dei file di cui effettuare una copia di sicurezza" - -msgid "Bad address specified!" -msgstr "E' stato specificato un indirizzo errato!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Di seguito l'elenco dei file di cui effettuare la copia di sicurezza. Essa è " -"composta dai file di configurazione modificati installati da opkg, file di " -"base essenziali e i file di backup definiti dall'utente." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Ignora Dominio Bogus NX" - -msgid "Bridge" -msgstr "Ponte" - -msgid "Bridge interfaces" -msgstr "Interfacce Ponte" - -msgid "Bridge unit number" -msgstr "Numero Unità Ponte" - -msgid "Bring up on boot" -msgstr "Attivare all'avvio" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Dispositivo Wireless Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Dispositivo Wireless Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "Buffered" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Pulsanti" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Uso CPU (%)" - -msgid "Cancel" -msgstr "Annulla" - -msgid "Category" -msgstr "Categoria" - -msgid "Chain" -msgstr "Catena" - -msgid "Changes" -msgstr "Modifiche" - -msgid "Changes applied." -msgstr "Modifiche applicate." - -msgid "Changes the administrator password for accessing the device" -msgstr "Cambia la password di amministratore per accedere al dispositivo" - -msgid "Channel" -msgstr "Canale" - -msgid "Check" -msgstr "Verifica" - -msgid "Check fileystems before mount" -msgstr "Controlla i filesystem prima di montare" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "Marca questa opzione per cancellare le reti esistenti da questa radio." - -msgid "Checksum" -msgstr "Checksum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Scegli la zona del firewall che si desidera assegnare a questa interfaccia. " -"Selezionare non specificato per rimuovere l'interfaccia dalla zona " -"associata o compilare il campo crea per definire una nuova zona e " -"collegare l'interfaccia ad esso." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Scegliere la/le rete/reti a cui vuoi collegare questa interfaccia wireless o " -"riempire il campo crea per definire una nuova rete." - -msgid "Cipher" -msgstr "Cifratura" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Premi su \"Genera archivio\" per scaricare un archivio tar di backup dei " -"file di configurazione attuali. Per ripristinare il firmware al suo stato " -"iniziale premi \"Esegui Ripristino\" (solo per firmware basati su squashfs)." - -msgid "Client" -msgstr "Cliente" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID Cliente da inviare all'interno della richiesta DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Chiudi le connessioni inattive dopo x secondi, usa 0 per connessioni " -"persistenti" - -msgid "Close list..." -msgstr "Scegliere dall'elenco..." - -msgid "Collecting data..." -msgstr "Raccolgo i dati..." - -msgid "Command" -msgstr "Comando" - -msgid "Common Configuration" -msgstr "Configurazioni Comuni" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configurazione" - -msgid "Configuration applied." -msgstr "Configurazione salvata." - -msgid "Configuration files will be kept." -msgstr "I file di configurazione verranno mantenuti." - -msgid "Confirmation" -msgstr "Conferma" - -msgid "Connect" -msgstr "Connetti" - -msgid "Connected" -msgstr "Connesso" - -msgid "Connection Limit" -msgstr "Limite connessioni" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Connessioni" - -msgid "Country" -msgstr "Nazione" - -msgid "Country Code" -msgstr "Codice Nazione" - -msgid "Cover the following interface" -msgstr "Coprire la seguente interfaccia" - -msgid "Cover the following interfaces" -msgstr "Coprire le seguenti interfacce" - -msgid "Create / Assign firewall-zone" -msgstr "Crea / Assegna zona firewall" - -msgid "Create Interface" -msgstr "Crea Interfaccia" - -msgid "Create a bridge over multiple interfaces" -msgstr "Crea un ponte tra interfacce multiple" - -msgid "Critical" -msgstr "Critico" - -msgid "Cron Log Level" -msgstr "Livello di log del Cron" - -msgid "Custom Interface" -msgstr "Interfaccia personalizzata" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Personalizza la configurazione dei LED del sistema se possibile." - -msgid "DHCP Leases" -msgstr "Contratti DHCP" - -msgid "DHCP Server" -msgstr "Server DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP e DNS" - -msgid "DHCP client" -msgstr "Cliente DHCP" - -msgid "DHCP-Options" -msgstr "Opzioni DHCP" - -msgid "DHCPv6 Leases" -msgstr "Contratti DHCPv6" - -msgid "DHCPv6 client" -msgstr "Cliente DHCPv6" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Inoltri DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Debug" - -msgid "Default %d" -msgstr "Predefinito %d" - -msgid "Default gateway" -msgstr "Gateway predefinito" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Stato Predefinito" - -msgid "Define a name for this network." -msgstr "Definisci un nome per questa rete." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definisci opzioni DHCP aggiuntive, per esempio " -"\"6,192.168.2.1,192.168.2.2\" fornisce differenti server DNS ai " -"client." - -msgid "Delete" -msgstr "Elimina" - -msgid "Delete this network" -msgstr "Rimuovi questa rete" - -msgid "Description" -msgstr "Descrizione" - -msgid "Design" -msgstr "Tema" - -msgid "Destination" -msgstr "Destinazione" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Device Configuration" -msgstr "Configurazione del dispositivo" - -msgid "Device is rebooting..." -msgstr "Dispositivo in riavvio..." - -msgid "Device unreachable" -msgstr "Dispositivo irraggiungibile" - -msgid "Diagnostics" -msgstr "Diagnostica" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Cartella" - -msgid "Disable" -msgstr "Disabilita" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Disabilita DHCP per questa interfaccia." - -msgid "Disable DNS setup" -msgstr "Disabilita il setup dei DNS" - -msgid "Disable Encryption" -msgstr "Disabilita Crittografia" - -msgid "Disabled" -msgstr "Disabilitato" - -msgid "Disabled (default)" -msgstr "Disabilitato (default)" - -msgid "Discard upstream RFC1918 responses" -msgstr "Ignora risposte RFC1918 upstream" - -msgid "Displaying only packages containing" -msgstr "Visualizza solo i pacchetti contenenti" - -msgid "Distance Optimization" -msgstr "Ottimizzazione distanza" - -msgid "Distance to farthest network member in meters." -msgstr "Distanza del membro più lontano della rete in metri." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversità" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq è un server DHCP e inoltratore DNS " -"per firewall NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Non memorizzare le repliche negative, es. per domini non esistenti" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Non inoltrare le richieste che non possono essere risolte dai name server " -"pubblici" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Non proseguire con le ricerche inverse per le reti locali." - -msgid "Domain required" -msgstr "Dominio richiesto" - -msgid "Domain whitelist" -msgstr "Elenco Domini consentiti" - -msgid "Don't Fragment" -msgstr "Non Frammentare" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Non inoltrare le richieste DNS " -"senza nome DNS" - -msgid "Download and install package" -msgstr "Scarica e installa pacchetto" - -msgid "Download backup" -msgstr "Download backup" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instanza di Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear offre accesso SSH e integra un " -"server SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP dinamico" - -msgid "Dynamic tunnel" -msgstr "Dynamic tunnel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Fornisci dinamicamente gli indirizzi DHCP ai client. Se disabilitato, solo i " -"client con un indirizzo statico saranno serviti." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Metodo EAP" - -msgid "Edit" -msgstr "Modifica" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Modifica questa interfaccia" - -msgid "Edit this network" -msgstr "Modifica questa rete" - -msgid "Emergency" -msgstr "Emergenza" - -msgid "Enable" -msgstr "Abilita" - -msgid "Enable STP" -msgstr "Abilita STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Abilitazione aggiornamento endpoint dinamico HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "Abilita negoziazione IPv6" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Attiva la negoziazione IPv6 sul collegamento PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Abilita Jumbo Frame passthrough" - -msgid "Enable NTP client" -msgstr "Attiva il cliente NTP" - -msgid "Enable Single DES" -msgstr "Abilita Single DES" - -msgid "Enable TFTP server" -msgstr "Abilita il server TFTP" - -msgid "Enable VLAN functionality" -msgstr "Abilita la funzionalità VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Abilita pulsante WPS, richiede WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Attivare l'apprendimento e l'invecchiamento" - -msgid "Enable mirroring of incoming packets" -msgstr "Abilita mirroring dei pacchetti in ingresso" - -msgid "Enable mirroring of outgoing packets" -msgstr "Abilita mirroring dei pacchetti in uscita" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "Abilita l'opzione DF (non Frammentare) dei pacchetti incapsulati" - -msgid "Enable this mount" -msgstr "Abilita questo mount" - -msgid "Enable this swap" -msgstr "Abilita questo swap" - -msgid "Enable/Disable" -msgstr "Abilita/Disabilita" - -msgid "Enabled" -msgstr "Abilitato" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Abilita il protocollo di Spanning Tree su questo bridge" - -msgid "Encapsulation mode" -msgstr "Modalità di incapsulamento" - -msgid "Encryption" -msgstr "Crittografia" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Cancellazione..." - -msgid "Error" -msgstr "Errore" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Scheda di Rete" - -msgid "Ethernet Switch" -msgstr "Switch di Rete" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Espandi gli hosts" - -msgid "Expires" -msgstr "Scadenze" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Tempo di scadenza di indirizzi a contratto, il minimo è di 2 minuti ( " -"2m )." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Server Log di Sistema esterno" - -msgid "External system log server port" -msgstr "Porta Server Log di Sistema esterno" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "File" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nome del file dell'immagine di avvio annunciato ai clienti." - -msgid "Filesystem" -msgstr "Filesystem" - -msgid "Filter" -msgstr "Filtro" - -msgid "Filter private" -msgstr "Filtra privati" - -msgid "Filter useless" -msgstr "Filtra inutili" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Trova e aggiungi una rete" - -msgid "Find package" -msgstr "Cerca pacchetto" - -msgid "Finish" -msgstr "Fine" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Impostazioni Firewall" - -msgid "Firewall Status" -msgstr "Stato del Firewall" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versione del Firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Porta di origine fissa per le richieste DNS in uscita" - -msgid "Flash Firmware" -msgstr "Flash Firmware" - -msgid "Flash image..." -msgstr "Flash immagine..." - -msgid "Flash new firmware image" -msgstr "Flash immagine nuovo firmware" - -msgid "Flash operations" -msgstr "Operazioni Flash" - -msgid "Flashing..." -msgstr "Flashing..." - -msgid "Force" -msgstr "Forza" - -msgid "Force CCMP (AES)" -msgstr "Forza CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Forza DHCP su questa rete, anche se un altro server viene rilevato." - -msgid "Force TKIP" -msgstr "Forza TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forza TKIP e CCMP (AES)" - -msgid "Force link" -msgstr "Forza collegamento" - -msgid "Force use of NAT-T" -msgstr "Forza uso del NAT-T" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Inoltra il traffico DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Inoltra il traffico broadcast" - -msgid "Forwarding mode" -msgstr "Modalità di Inoltro" - -msgid "Fragmentation Threshold" -msgstr "Soglia di frammentazione" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Disponibile" - -msgid "Free space" -msgstr "Spazio libero" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Solo GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway ports" -msgstr "Porte Gateway" - -msgid "General Settings" -msgstr "Opzioni Generali" - -msgid "General Setup" -msgstr "Impostazioni Generali" - -msgid "General options for opkg" -msgstr "Opzioni generali per opkg" - -msgid "Generate Config" -msgstr "Genera Configurazione" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Genera Archivio" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Dispositivo Wireless 802.11%s Generico" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"La conferma della password assegnata non ha prodotto risultati, la password " -"non è stata cambiata!" - -msgid "Global Settings" -msgstr "Impostazioni Globali" - -msgid "Global network options" -msgstr "Opzioni rete globale" - -msgid "Go to password configuration..." -msgstr "Vai alla configurazione della password..." - -msgid "Go to relevant configuration page" -msgstr "Vai alla pagina di configurazione relativa" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Password HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Gestore" - -msgid "Hang Up" -msgstr "Hangup" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Qui puoi configurare gli aspetti base del tuo dispositivo come l'" -"hostname o il fuso orario." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Qui è possibile incollare le chiavi pubbliche SSH (uno per riga) per " -"l'autenticazione con chiave pubblica SSH." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Dispositivo Wireless Hermes 802.11b" - -msgid "Hide ESSID" -msgstr "Nascondi ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Campi host" - -msgid "Host expiry timeout" -msgstr "Timeout scadenza Host" - -msgid "Host-IP or Network" -msgstr "" -"IP dell'host o rete" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nome host da inviare al momento della richiesta DHCP" - -msgid "Hostnames" -msgstr "Hostname" - -msgid "Hybrid" -msgstr "Ibrido" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "Indirizzi IP" - -msgid "IP address" -msgstr "Indirizzo IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 Firewall" - -msgid "IPv4 WAN Status" -msgstr "Stato WAN IPv4" - -msgid "IPv4 address" -msgstr "Indirizzi IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "trasmissione IPv4" - -msgid "IPv4 gateway" -msgstr "Gateway IPv4" - -msgid "IPv4 netmask" -msgstr "Maschera rete IPv4" - -msgid "IPv4 only" -msgstr "Solo IPv4" - -msgid "IPv4 prefix" -msgstr "Prefisso IPv4" - -msgid "IPv4 prefix length" -msgstr "Lunghezza prefisso IPv4" - -msgid "IPv4-Address" -msgstr "Indirizzo-IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 Firewall" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "Impostazioni IPv6" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Stato WAN IPv6" - -msgid "IPv6 address" -msgstr "Indirizzi IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Gateway IPv6" - -msgid "IPv6 only" -msgstr "Solo IPv6" - -msgid "IPv6 prefix" -msgstr "Prefisso IPv6" - -msgid "IPv6 prefix length" -msgstr "Lunghezza prefisso IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "Suffisso IPv6" - -msgid "IPv6-Address" -msgstr "Indirizzo-IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-su-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-su-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identità PEAP" - -msgid "If checked, 1DES is enabled" -msgstr "Se selezionata, 1DES è abilitata" - -msgid "If checked, encryption is disabled" -msgstr "Se selezionata, crittografia è disabilitata" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Se specificato, montare il dispositivo dal suo UUID invece che dal nodo di " -"dispositivo fisso" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Se specificato, montare il dispositivo dall'etichetta della partizione al " -"posto di un nodo di un dispositivo fisso" - -msgid "If unchecked, no default route is configured" -msgstr "Se deselezionata, alcun percorso predefinito è configurato" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" -"Se deselezionata, gli indirizzi ai Server DNS annunciati saranno ignorati" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Se la tua memoria è insufficiente i dati non usati possono venire " -"temporaneamente spostati in un'area di swap risultando in un più grande " -"quantitativo di RAM usabile. " -"Sappi che spostare dati in swap è un processo molto lento e che il " -"dispositivo di swap non può essere acceduto alle alte velocità della RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignora /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignora interfaccia" - -msgid "Ignore resolve file" -msgstr "Ignora file resolv" - -msgid "Image" -msgstr "Immagine" - -msgid "In" -msgstr "In" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Tempo di Inattività" - -msgid "Inbound:" -msgstr "In entrata:" - -msgid "Info" -msgstr "Informazioni" - -msgid "Initscript" -msgstr "Script di avvio" - -msgid "Initscripts" -msgstr "Scripts di avvio" - -msgid "Install" -msgstr "Installa" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Installa il pacchetto %q" - -msgid "Install protocol extensions..." -msgstr "Installa le estensioni del protocollo..." - -msgid "Installed packages" -msgstr "Pacchetti installati" - -msgid "Interface" -msgstr "Interfaccia" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configurazione Interfaccia" - -msgid "Interface Overview" -msgstr "Riassunto Interfaccia" - -msgid "Interface is reconnecting..." -msgstr "L'interfaccia si sta ricollegando..." - -msgid "Interface is shutting down..." -msgstr "L'intefaccia si sta spegnendo..." - -msgid "Interface name" -msgstr "Nome Interfaccia" - -msgid "Interface not present or not connected yet." -msgstr "Interfaccia non presente o non ancora connessa." - -msgid "Interface reconnected" -msgstr "Interfaccia ricollegata." - -msgid "Interface shut down" -msgstr "Interfaccia spenta" - -msgid "Interfaces" -msgstr "Interfacce" - -msgid "Internal" -msgstr "Interno" - -msgid "Internal Server Error" -msgstr "Errore del Server Interno" - -msgid "Invalid" -msgstr "Valore immesso non valido" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "ID VLAN non valido! Solo gli ID compresi tra %d e %d sono consentiti." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "ID VLAN non valido! Solo gli ID unici sono consentiti" - -msgid "Invalid username and/or password! Please try again." -msgstr "Username o password non validi! Per favore riprova." - -msgid "Isolate Clients" -msgstr "Isola Clienti" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Sembra tu stia provando a flashare un'immagine più grande delle dimensioni " -"della memoria flash, per favore controlla il file!" - -msgid "JavaScript required!" -msgstr "Richiesto JavaScript!" - -msgid "Join Network" -msgstr "Aggiungi Rete" - -msgid "Join Network: Wireless Scan" -msgstr "Aggiunta Rete: Rilevamento Wireless" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Mantieni le Impostazioni" - -msgid "Kernel Log" -msgstr "Registro del Kernel" - -msgid "Kernel Version" -msgstr "Versione del Kernel" - -msgid "Key" -msgstr "Chiave" - -msgid "Key #%d" -msgstr "Chiave #%d" - -msgid "Kill" -msgstr "Uccidi" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Server L2TP" - -msgid "LCP echo failure threshold" -msgstr "Fallimento soglia echo LCP" - -msgid "LCP echo interval" -msgstr "Intervallo echo LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etichetta" - -msgid "Language" -msgstr "Lingua" - -msgid "Language and Style" -msgstr "Lingua e Stile" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "Tempo Contratto" - -msgid "Lease validity time" -msgstr "Periodo di Validità del Contratto" - -msgid "Leasefile" -msgstr "File di contratti" - -msgid "Leasetime remaining" -msgstr "Tempo contratto residuo" - -msgid "Leave empty to autodetect" -msgstr "Lasciare vuoto per l'autorilevamento" - -msgid "Leave empty to use the current WAN address" -msgstr "Lasciare vuoto per usare l'indirizzo WAN attuale" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Collegamento on" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Elenco di Server DNSa cui " -"inoltrare le richieste in" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Elenco di domini da consentire le risposte RFC1918 per" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Elenco degli host che forniscono falsi risultati di dominio NX" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "Ascolta solo l'interfaccia data o, se non specificato, su tutte" - -msgid "Listening port for inbound DNS queries" -msgstr "Porta di ascolto per le richieste DNS in entrata" - -msgid "Load" -msgstr "Carico" - -msgid "Load Average" -msgstr "Carico Medio" - -msgid "Loading" -msgstr "Caricamento" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Indirizzo IPv4 locale" - -msgid "Local IPv6 address" -msgstr "Indirizzo IPv6 locale" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Avvio Locale" - -msgid "Local Time" -msgstr "Ora locale" - -msgid "Local domain" -msgstr "Dominio Locale" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Specifiche dominio locale. I nomi di dominio corrispondenti a questi criteri " -"non sono mai inoltrate e risolti solo da DHCP o file hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Suffisso di dominio locale aggiunto ai nomi dei DHCP e voci del file hosts" - -msgid "Local server" -msgstr "Server Locale" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Localizzare nome host a seconda della sottorete richiedente se sono " -"disponibili IP multipli" - -msgid "Localise queries" -msgstr "Localizza richieste" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Livello di dettaglio registro" - -msgid "Log queries" -msgstr "Logga richieste" - -msgid "Logging" -msgstr "Logging" - -msgid "Login" -msgstr "Login" - -msgid "Logout" -msgstr "Slogga" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "Filtro indirizzo MAC" - -msgid "MAC-Filter" -msgstr "Filtro MAC" - -msgid "MAC-List" -msgstr "Lista MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "Manuale" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "Tempo massimo di attesa" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Numero massimo indirizzi in contratto" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Memoria" - -msgid "Memory usage (%)" -msgstr "Uso Memoria (%)" - -msgid "Metric" -msgstr "Metrica" - -msgid "Minimum hold time" -msgstr "Velocità minima" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Modalità" - -msgid "Model" -msgstr "Modello" - -msgid "Modem device" -msgstr "Dispositivo modem" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Voce di Mount" - -msgid "Mount Point" -msgstr "Punto di Mount" - -msgid "Mount Points" -msgstr "Punti di Mount" - -msgid "Mount Points - Mount Entry" -msgstr "Punti di Mount - Voce di Mount" - -msgid "Mount Points - Swap Entry" -msgstr "Punti di Mount - Voce Swap" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"I punti di mount definiscono in quale punto un dispositivo di memoria verrà " -"attaccato al tuo filesystem" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Opzioni di mount" - -msgid "Mount point" -msgstr "Punto di mount" - -msgid "Mount swap not specifically configured" -msgstr "Monta swap non configurato specificatamente" - -msgid "Mounted file systems" -msgstr "File system montati" - -msgid "Move down" -msgstr "Muovi giù" - -msgid "Move up" -msgstr "Muovi su" - -msgid "Multicast address" -msgstr "Indirizzo Multicast" - -msgid "NAS ID" -msgstr "ID della NAS" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Candidati server NTP" - -msgid "NTP sync time-out" -msgstr "Sincronizzazione NTP scaduta" - -msgid "Name" -msgstr "Nome" - -msgid "Name of the new interface" -msgstr "Nome della nuova interfaccia" - -msgid "Name of the new network" -msgstr "Nome della nuova rete" - -msgid "Navigation" -msgstr "Navigazione" - -msgid "Netmask" -msgstr "Maschera di rete" - -msgid "Network" -msgstr "Rete" - -msgid "Network Utilities" -msgstr "Utilità di Rete" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "Rete senza interfaccia" - -msgid "Next »" -msgstr "Prossimo »" - -msgid "No DHCP Server configured for this interface" -msgstr "Nessun Server DHCP configurato per questa interfaccia" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "Nessun file trovato" - -msgid "No information available" -msgstr "Nessuna informazione disponibile" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "Nessuna rete è configurata su questo dispositivo" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "Nessuna lista pacchetti disponibile" - -msgid "No password set!" -msgstr "Nessuna password immessa!" - -msgid "No rules in this chain" -msgstr "Nessuna regola in questa catena" - -msgid "No zone assigned" -msgstr "Nessuna zona assegnata" - -msgid "Noise" -msgstr "Rumore" - -msgid "Noise Margin (SNR)" -msgstr "Margine di Rumore (SNR)" - -msgid "Noise:" -msgstr "Rumore:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Nessuno" - -msgid "Normal" -msgstr "Normale" - -msgid "Not Found" -msgstr "Non Trovato" - -msgid "Not associated" -msgstr "Non associato" - -msgid "Not connected" -msgstr "Non connesso" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: i files di Configurazione saranno eliminati" - -msgid "Note: interface name length" -msgstr "Nota: lunghezza nome interfaccia" - -msgid "Notice" -msgstr "Notifica" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configurazione di OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"In questa pagina puoi configurare le interfacce di rete.Puoi unire più " -"interfacce spuntando la voce \"unisci interfacce\" e inserendo i nomi di più " -"interfacce di rete separate da spazi. Puoi anche usare la notazione VLAN INTERFACCIA.VLANNUM (e.s.: eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "Uno o più campi contengono valori non validi!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Uno o più campi obbligatori sono vuoti!" - -msgid "Open list..." -msgstr "Apri lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Opzione cambiata" - -msgid "Option removed" -msgstr "Opzione cancellata" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opzioni" - -msgid "Other:" -msgstr "Altro:" - -msgid "Out" -msgstr "Uscita" - -msgid "Outbound:" -msgstr "In uscita:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Sovrascrivi indirizzo MAC" - -msgid "Override MTU" -msgstr "Sovrascrivi MTU" - -msgid "Override TOS" -msgstr "Sovrascrivi TOS" - -msgid "Override TTL" -msgstr "Sovrascrivi TTL" - -msgid "Override default interface name" -msgstr "Sovrascrivi nome interfaccia di default" - -msgid "Override the gateway in DHCP responses" -msgstr "Sovrascrivi il gateway nelle risposte DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Sovrascrivi la netmask data ai clienti. Normalmente è calcolata dalla subnet " -"servita." - -msgid "Override the table used for internal routes" -msgstr "Sovrascrivi la tabella usata per le route interne" - -msgid "Overview" -msgstr "Riassunto" - -msgid "Owner" -msgstr "Proprietario" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "Incapsulamento PPPoA" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "E' richiesto il pacchetto libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Nome pacchetto" - -msgid "Packets" -msgstr "Pacchetti" - -msgid "Part of zone %q" -msgstr "Parte della zona %q" - -msgid "Password" -msgstr "Password" - -msgid "Password authentication" -msgstr "Password di authenticazione" - -msgid "Password of Private Key" -msgstr "Password della chiave privata" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Password cambiata con successo!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Percorso al certificato CA" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Percorso alla chiave privata" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Picco:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Esegui un riavvio" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "Per favore inserisci il tuo username e la password." - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "Porta" - -msgid "Port status:" -msgstr "Status porta:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Impedisci la comunicazione fra Client" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Continuare" - -msgid "Processes" -msgstr "Processi" - -msgid "Profile" -msgstr "Profilo" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocollo" - -msgid "Protocol family" -msgstr "Famiglia protocollo" - -msgid "Protocol of the new interface" -msgstr "Protocollo della nuova interfaccia" - -msgid "Protocol support is not installed" -msgstr "Supporto protocollo non installato" - -msgid "Provide NTP server" -msgstr "Fornisci server NTP" - -msgid "Provide new network" -msgstr "Fornisci nuova rete" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "Chiave Pubblica" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Qualità" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Soglia RTS/CTS" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "Velocità RX" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Leggi /etc/ethers per configurare il server DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "Azzerare veramente tutte le modifiche?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Vuoi davvero spegnere questa interfaccia \"%s\" ?\\nPotresti perdere " -"l'accesso a questo router se stai usando questa interfaccia." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "Cambiare veramente il protocollo?" - -msgid "Realtime Connections" -msgstr "Connessioni in Tempo Reale" - -msgid "Realtime Graphs" -msgstr "Grafici in Tempo Reale" - -msgid "Realtime Load" -msgstr "Carico in Tempo Reale" - -msgid "Realtime Traffic" -msgstr "Traffico in Tempo Reale" - -msgid "Realtime Wireless" -msgstr "Wireless in Tempo Reale" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Riavvia" - -msgid "Rebooting..." -msgstr "Riavviando..." - -msgid "Reboots the operating system of your device" -msgstr "Riavvia il sistema operativo del tuo dispositivo" - -msgid "Receive" -msgstr "Ricezione" - -msgid "Receiver Antenna" -msgstr "Antenna Ricevente" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Ricollega questa interfaccia" - -msgid "Reconnecting interface" -msgstr "Sto ricollegando l'interfaccia" - -msgid "References" -msgstr "Riferimenti" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Rimuovi" - -msgid "Repeat scan" -msgstr "Ripeti scan" - -msgid "Replace entry" -msgstr "Sostituisci campo" - -msgid "Replace wireless configuration" -msgstr "Sostituisci configurazione wireless" - -msgid "Request IPv6-address" -msgstr "Richiede indirizzo-IPv6" - -msgid "Request IPv6-prefix of length" -msgstr "Richiede prefisso-IPv6 di lunghezza" - -msgid "Require TLS" -msgstr "Richiede TLS" - -msgid "Required" -msgstr "Richiesto" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Azzera Contatori" - -msgid "Reset to defaults" -msgstr "Azzera a default" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "File Resolve" - -msgid "Restart" -msgstr "Riavvia" - -msgid "Restart Firewall" -msgstr "Riavvia Firewall" - -msgid "Restore backup" -msgstr "Ripristina backup" - -msgid "Reveal/hide password" -msgstr "Rivela/nascondi password" - -msgid "Revert" -msgstr "Ripristina" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "Route" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Le route specificano attraverso quale interfaccia e gateway un certo host o " -"rete può essere raggiunto." - -msgid "Run a filesystem check before mounting the device" -msgstr "Esegui un controllo del filesystem prima di montare il dispositivo" - -msgid "Run filesystem check" -msgstr "Esegui controllo del filesystem" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "Save" -msgstr "Salva" - -msgid "Save & Apply" -msgstr "Salva & applica" - -msgid "Save & Apply" -msgstr "Salva & Applica" - -msgid "Scan" -msgstr "Scan" - -msgid "Scheduled Tasks" -msgstr "Operazioni programmate" - -msgid "Section added" -msgstr "Sezione aggiunta" - -msgid "Section removed" -msgstr "Sezione rimossa" - -msgid "See \"mount\" manpage for details" -msgstr "Vedi \"mount\" manpage per dettagli" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Isola utenti" - -msgid "Server Settings" -msgstr "Impostazioni Server" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "Servizi" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Shutdown this network" -msgstr "" - -msgid "Signal" -msgstr "Segnale" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Dimensione" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Salta" - -msgid "Skip to content" -msgstr "Salta a contenuto" - -msgid "Skip to navigation" -msgstr "Salta a navigazione" - -msgid "Slot time" -msgstr "Slot time" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Alcuni campi non sono validi, non è possibile salvare i valori!" - -msgid "Sorry, the object you requested was not found." -msgstr "Siamo spiacenti, l'oggetto che hai richiesto non è stato trovato." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Spiacente, il server ha rilevato un errore imprevisto." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Spiacenti, non è presente alcun supporto sysupgrade, una nuova immagine " -"firmware deve essere memorizzata (Flash) manualmente. Si prega di fare " -"riferimento al wiki per le istruzioni di installazione di dispositivi " -"specifici." - -msgid "Sort" -msgstr "Ordina" - -msgid "Source" -msgstr "Origine" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Specifica lo stato del pulsante da gestire" - -msgid "Specifies the directory the device is attached to" -msgstr "Specifica la cartella a cui è collegato il dispositivo in" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Specifica la porta di ascolto di questa istanza Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Consente di specificare la quantità massima di richieste ARP fallite finché " -"gli host si presume siano morti." - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Specifica la quantità massima di secondi dopo di che si presume che gli host " -"siano morti." - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Specificare la chiave di cifratura qui." - -msgid "Start" -msgstr "Inizio" - -msgid "Start priority" -msgstr "Priorità di avvio" - -msgid "Startup" -msgstr "Avvio" - -msgid "Static IPv4 Routes" -msgstr "Instradamento statico IPv4" - -msgid "Static IPv6 Routes" -msgstr "Instradamento statico IPv6" - -msgid "Static Leases" -msgstr "Contratti statici" - -msgid "Static Routes" -msgstr "Instradamenti Statici" - -msgid "Static address" -msgstr "Indirizzo Statico" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"I contratti statici vengono utilizzati per assegnare indirizzi IP fissi e " -"nomi host simbolici ai client DHCP. Essi sono necessari anche per interfacce " -"di configurazione non dinamici, dove solo gli host col contratto " -"corrispondente vengono serviti." - -msgid "Status" -msgstr "Stato" - -msgid "Stop" -msgstr "Ferma" - -msgid "Strict order" -msgstr "Ordine severo" - -msgid "Submit" -msgstr "Invia" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Scambia ingresso" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "Switch %q" - -msgid "Switch %q (%s)" -msgstr "Switch %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Cambia protocollo" - -msgid "Sync with browser" -msgstr "Sincronizza con il browser" - -msgid "Synchronizing..." -msgstr "Sincronizzazione..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registro di Sistema" - -msgid "System Properties" -msgstr "Proprietà di Sistema" - -msgid "System log buffer size" -msgstr "Dimensione Buffer Log di Sistema" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Impostazioni TFTP" - -msgid "TFTP server root" -msgstr "Server TFTP principale" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Velocità TX" - -msgid "Table" -msgstr "Tabella" - -msgid "Target" -msgstr "Destinazione" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Termina" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"La sezione Configurazione del Dispositivo illustra le impostazioni " -"fisiche del hardware radio come canale, la potenza di trasmissione o la " -"selezione dell'antenna che viene condiviso tra tutte le reti wireless " -"definite (se l'hardware radio è multi-SSID compatibilie). Per le " -"impostazioni di rete come la crittografia o la modalità di funzionamento " -"sono raggruppati nella configurazione dell'interfaccia." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Il pacchetto libiwinfo-lua non è installato. È necessario " -"installare questo componente per il lavoro di configurazione wireless!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Il prefisso IPv6 assegnati dal provider, si conclude di solito con ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Il file del dispositivo di memoria o della partizione (e.s. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Il filesystem usato per formattare la memoria (e." -"s. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "Le seguenti modifiche sono state annullate" - -msgid "The following rules are currently active on this system." -msgstr "Le seguenti regole sono al momento attive su questo sistema." - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes until you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." - -msgid "There are no active leases." -msgstr "Non ci sono contratti attivi." - -msgid "There are no pending changes to apply!" -msgstr "Non ci sono cambiamenti pendenti da applicare!" - -msgid "There are no pending changes to revert!" -msgstr "Non ci sono cambiamenti pendenti da regredire" - -msgid "There are no pending changes!" -msgstr "Non ci sono cambiamenti pendenti!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Questo è l'unico server DHCP nella tua rete locale" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Questa è la crontab del sistema nella quale possono essere definiti le " -"operazioni da programmare." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Questa lista da un riassunto dei processi correntemente attivi e del loro " -"stato." - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "Questa pagina ti da una riassunto delle connessioni al momento attive." - -msgid "This section contains no values yet" -msgstr "Questa sezione non contiene ancora valori" - -msgid "Time Synchronization" -msgstr "Sincronizzazione Orario" - -msgid "Time Synchronization is not configured yet." -msgstr "Sincronizzazione Orario non ancora configurata" - -msgid "Timezone" -msgstr "Fuso orario" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Per ripristinare i file configurazione, puoi inviare un archivio di backup " -"generato precedentemente qui." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Totale" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Traffico" - -msgid "Transfer" -msgstr "" - -msgid "Transmission Rate" -msgstr "Velocità di transmissione" - -msgid "Transmit" -msgstr "Trasmissione" - -msgid "Transmit Power" -msgstr "Potenza di trasmissione" - -msgid "Transmitter Antenna" -msgstr "Antenna trasmettente" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Tipo" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "Periferica USB" - -msgid "USB Ports" -msgstr "Porte USB" - -msgid "UUID" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Sconosciuto" - -msgid "Unknown Error, password not changed!" -msgstr "Errore sconosciuto, password non cambiata!" - -msgid "Unmanaged" -msgstr "Non gestito" - -msgid "Unmount" -msgstr "Smonta" - -msgid "Unsaved Changes" -msgstr "Modifiche non salvate" - -msgid "Unsupported protocol type." -msgstr "Tipo protocollo non supportato." - -msgid "Update lists" -msgstr "Aggiorna liste" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Carica un'immagine sysupgrade compatibile quì per sostituire il firmware in " -"esecuzione. Attivare la spunta \"Mantieni Impostazioni\" per mantenere la " -"configurazione corrente (richiede un immagine del firmware compatibile)." - -msgid "Upload archive..." -msgstr "Carica archivio..." - -msgid "Uploaded File" -msgstr "File Inviato" - -msgid "Uptime" -msgstr "Tempo di attività" - -msgid "Use /etc/ethers" -msgstr "Usa /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Usa il DHCP del gateway" - -msgid "Use DNS servers advertised by peer" -msgstr "Usa i server DNS annunciati dal peer" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Usa i codici delle nazioni ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "Usa MTU nel tunnel dell'interfaccia" - -msgid "Use TTL on tunnel interface" -msgstr "Usa TTL nel tunnel dell'interfaccia" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Usa flag broadcast" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Usa server DNS personalizzati" - -msgid "Use default gateway" -msgstr "Usa il gateway predefinito" - -msgid "Use gateway metric" -msgstr "Usa la metrica del gateway" - -msgid "Use routing table" -msgstr "Utilizzare tabella di instradamento" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Utilizzare il pulsante Aggiungi per aggiungere una nuova voce di " -"contratto. L'Indirizzo-MAC identifica l'host, l'Indirizzo-IPv4 specifica l'indirizzo fisso da utilizzare e il Nome Host è " -"assegnato come nome simbolico alla richiesta dell'host. L'opzionale " -"tempo di Contratto può essere usato per impostare un tempo di " -"contratto non-standard a uno specifico host, p.e. 12h, 3d o infinito." - -msgid "Used" -msgstr "Usato" - -msgid "Used Key Slot" -msgstr "Slot Chiave Usata" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Nome Utente" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs su %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs su %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Server VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Classe del Produttore da 'inviare al momento della richiesta DHCP" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Verifica" - -msgid "Version" -msgstr "Versione" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistema Aperto WEP" - -msgid "WEP Shared Key" -msgstr "Chiave Condivisa WEP" - -msgid "WEP passphrase" -msgstr "frase di accesso WEP" - -msgid "WMM Mode" -msgstr "Modalità WMM" - -msgid "WPA passphrase" -msgstr "frase di accesso WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"La crittografia WPA richiede wpa_supplicant (per la modalità client) o " -"hostapd (per AP e modalità ad hoc) per essere installato." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" -"Attendi sincro NTP quei dati secondi, immetti 0 per disabilitare l'attesa " -"(opzionale)" - -msgid "Waiting for changes to be applied..." -msgstr "In attesa delle modifiche da applicare ..." - -msgid "Waiting for command to complete..." -msgstr "In attesa del comando da completare..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Avviso" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless Adapter" -msgstr "Dispositivo Wireless" - -msgid "Wireless Network" -msgstr "Rete Wireless" - -msgid "Wireless Overview" -msgstr "Panoramica Wireless" - -msgid "Wireless Security" -msgstr "Sicurezza Wireless" - -msgid "Wireless is disabled or not associated" -msgstr "La rete Wireless è disattivata o non associata" - -msgid "Wireless is restarting..." -msgstr "Riavvio della Wireless..." - -msgid "Wireless network is disabled" -msgstr "La rete Wireless è disattivata" - -msgid "Wireless network is enabled" -msgstr "La rete wireless è attivata" - -msgid "Wireless restarted" -msgstr "Wireless riavviato" - -msgid "Wireless shut down" -msgstr "Wireless spento" - -msgid "Write received DNS requests to syslog" -msgstr "Scrittura delle richiesta DNS ricevute nel syslog" - -msgid "Write system log to file" -msgstr "Scrivi registro di sistema su file" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"È possibile abilitare o disabilitare gli script di inizializzazione " -"installati qui. Le modifiche saranno applicate dopo il riavvio del " -"dispositivo
    Attenzione: Se si disattiva gli script di " -"inizializzazione essenziali come ad esempio la \"rete\", il dispositivo " -"potrebbe diventare inaccessibile!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"È necessario attivare JavaScript nel tuo browser o LuCI non funzionerà " -"correttamente." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "qualsiasi" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "ponte" - -msgid "create:" -msgstr "crea:" - -msgid "creates a bridge over specified interface(s)" -msgstr "Crea un ponte sulle interfacce selezionate" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "disabilita" - -msgid "disabled" -msgstr "disabilitato" - -msgid "expired" -msgstr "scaduto" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"file dove vengono salvati i contratti DHCP dati" - -msgid "forward" -msgstr "inoltro" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "help" -msgstr "aiuto" - -msgid "hidden" -msgstr "nascosto" - -msgid "hybrid mode" -msgstr "modo ibrido" - -msgid "if target is a network" -msgstr "se la destinazione è una rete" - -msgid "input" -msgstr "ingresso" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "File DNS locale" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "no" - -msgid "no link" -msgstr "Nessun collegamento" - -msgid "none" -msgstr "nessuna" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "spento" - -msgid "on" -msgstr "acceso" - -msgid "open" -msgstr "apri" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "instradato" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "etichettato" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "sconosciuto" - -msgid "unlimited" -msgstr "illimitato" - -msgid "unspecified" -msgstr "non specificato" - -msgid "unspecified -or- create:" -msgstr "non specificato - o - creato:" - -msgid "untagged" -msgstr "non etichettato" - -msgid "yes" -msgstr "Sì" - -msgid "« Back" -msgstr "« Indietro" - -#~ msgid "Leasetime" -#~ msgstr "Tempo di contratto" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "statico" - -#~ msgid "AR Support" -#~ msgstr "Supporto AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Dispositivo Wireless Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Scansione in background" - -#~ msgid "Compression" -#~ msgstr "Compressione" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Disabilita Timer Beacon HW" - -#~ msgid "Do not send probe responses" -#~ msgstr "Disabilita Probe-Responses" - -#~ msgid "Fast Frames" -#~ msgstr "Frame veloci" - -#~ msgid "Maximum Rate" -#~ msgstr "Velocità massima" - -#~ msgid "Minimum Rate" -#~ msgstr "Velocità minima" - -#~ msgid "Multicast Rate" -#~ msgstr "Velocità multicast" - -#~ msgid "Separate WDS" -#~ msgstr "WDS separati" - -#~ msgid "Static WDS" -#~ msgstr "WDS statico" - -#~ msgid "Turbo Mode" -#~ msgstr "Modalità turbo" - -#~ msgid "XR Support" -#~ msgstr "Supporto XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Sarà creata una rete aggiuntiva se lasci questo senza spunta." - -#~ msgid "Join Network: Settings" -#~ msgstr "Aggiunta Rete: Impostazioni" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Porta %d" - -#~ msgid "VLAN Interface" -#~ msgstr "Interfaccia VLAN" diff --git a/package/luci/modules/luci-base/po/ja/base.po b/package/luci/modules/luci-base/po/ja/base.po deleted file mode 100644 index 1d321f9394..0000000000 --- a/package/luci/modules/luci-base/po/ja/base.po +++ /dev/null @@ -1,3957 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2017-10-20 13:54+0900\n" -"Last-Translator: INAGAKI Hiroshi \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: Poedit 2.0.4\n" -"Language-Team: \n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s は複数のVLANにUntaggedしています!" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d 分幅, %d 秒間隔)" - -msgid "(%s available)" -msgstr "(%s 使用可能)" - -msgid "(empty)" -msgstr "(空)" - -msgid "(no interfaces attached)" -msgstr "(インターフェースが接続されていません)" - -msgid "-- Additional Field --" -msgstr "-- 追加項目 --" - -msgid "-- Please choose --" -msgstr "-- 選択してください --" - -msgid "-- custom --" -msgstr "-- 手動設定 --" - -msgid "-- match by device --" -msgstr "-- デバイスを指定 --" - -msgid "-- match by label --" -msgstr "-- ラベルを指定 --" - -msgid "-- match by uuid --" -msgstr "-- UUID を指定 --" - -msgid "1 Minute Load:" -msgstr "過去1分の負荷:" - -msgid "15 Minute Load:" -msgstr "過去15分の負荷:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "464XLAT (CLAT)" - -msgid "5 Minute Load:" -msgstr "過去5分の負荷:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "802.11r 高速ローミング" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "802.11w アソシエーションSAクエリの最大タイムアウト時間です。" - -msgid "802.11w Association SA Query retry timeout" -msgstr "802.11w アソシエーションSAクエリの再試行タイムアウト時間です。" - -msgid "802.11w Management Frame Protection" -msgstr "802.11w 管理フレーム保護" - -msgid "802.11w maximum timeout" -msgstr "802.11w 最大タイムアウト" - -msgid "802.11w retry timeout" -msgstr "802.11w 再試行タイムアウト" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS クエリポート" - -msgid "DNS server port" -msgstr "DNS サーバーポート" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"リゾルバファイルの順番に、DNSサー" -"バーに問い合わせを行います" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-アドレス" - -msgid "IPv4-Gateway" -msgstr "IPv4-ゲートウェイ" - -msgid "IPv4-Netmask" -msgstr "IPv4-ネットマスク" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-アドレス又はネット" -"ワーク (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-ゲートウェイ" - -msgid "IPv6-Suffix (hex)" -msgstr "" -"IPv6-サフィックス (16進数)" - -msgid "LED Configuration" -msgstr "LED 設定" - -msgid "LED Name" -msgstr "LED 名" - -msgid "MAC-Address" -msgstr "MAC-アドレス" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"最大 DHCP リース" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"最大 EDNS0 パケットサイズ" - -msgid "Max. concurrent queries" -msgstr "最大 並列処理クエリ" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    注意: 編集前の crontab ファイルが空の場合、手動で cron サービスの再起動" -"を行う必要があります。" - -msgid "A43C + J43 + A43" -msgstr "A43C + J43 + A43" - -msgid "A43C + J43 + A43 + V43" -msgstr "A43C + J43 + A43 + V43" - -msgid "ADSL" -msgstr "ADSL" - -msgid "AICCU (SIXXS)" -msgstr "AICCU (SIXXS)" - -msgid "ANSI T1.413" -msgstr "ANSI T1.413" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP再試行しきい値" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATMブリッジ" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM仮想チャネル識別子 (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM仮想パス識別子 (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "ATMデバイス番号" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Access Concentrator" - -msgid "Access Point" -msgstr "アクセスポイント" - -msgid "Action" -msgstr "動作" - -msgid "Actions" -msgstr "動作" - -msgid "Activate this network" -msgstr "このネットワークを有効にする" - -msgid "Active IPv4-Routes" -msgstr "" -"稼働中の IPv4-経路情報" - -msgid "Active IPv6-Routes" -msgstr "" -"稼働中の IPv6-経路情報" - -msgid "Active Connections" -msgstr "アクティブ コネクション" - -msgid "Active DHCP Leases" -msgstr "アクティブなDHCPリース" - -msgid "Active DHCPv6 Leases" -msgstr "アクティブなDHCPv6リース" - -msgid "Ad-Hoc" -msgstr "アドホック" - -msgid "Add" -msgstr "追加" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "インターフェースの新規作成..." - -msgid "Additional Hosts files" -msgstr "追加のホストファイル" - -msgid "Additional servers file" -msgstr "追加のサーバー ファイル" - -msgid "Address" -msgstr "アドレス" - -msgid "Address to access local relay bridge" -msgstr "ローカル リレーブリッジにアクセスするためのIPアドレス" - -msgid "Administration" -msgstr "管理画面" - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "警告" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "SSH パスワード認証を許可します。" - -msgid "Allow all except listed" -msgstr "リスト内の端末からのアクセスを禁止" - -msgid "Allow listed only" -msgstr "リスト内の端末からのアクセスを許可" - -msgid "Allow localhost" -msgstr "ローカルホストを許可する" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"リモートホストがSSH転送されたローカルのポートに接続することを許可します。" - -msgid "Allow root logins with password" -msgstr "パスワードでの root ログインを許可" - -msgid "Allow the root user to login with password" -msgstr "パスワードを使用した root 権限でのログインを許可します。" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "許可されるIP" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "常にデフォルト ルーターとして通知する" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" -"利用可能なパブリック プレフィクスが無くても、デフォルトのルーターとして通知し" -"ます。" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "アノニマス マウント" - -msgid "Anonymous Swap" -msgstr "アノニマス スワップ" - -msgid "Antenna 1" -msgstr "アンテナ 1" - -msgid "Antenna 2" -msgstr "アンテナ 2" - -msgid "Antenna Configuration" -msgstr "アンテナ設定" - -msgid "Any zone" -msgstr "全てのゾーン" - -msgid "Apply" -msgstr "適用" - -msgid "Applying changes" -msgstr "変更を適用" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "インターフェースの割当て..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "認証済み端末" - -msgid "Auth Group" -msgstr "認証グループ" - -msgid "Authentication" -msgstr "認証" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Authoritative" - -msgid "Authorization Required" -msgstr "ログイン認証" - -msgid "Auto Refresh" -msgstr "自動更新" - -msgid "Automatic" -msgstr "自動" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "マウント実行前にファイルシステムのエラーを自動的にチェックします。" - -msgid "Automatically mount filesystems on hotplug" -msgstr "ホットプラグによってファイルシステムを自動的にマウントします。" - -msgid "Automatically mount swap on hotplug" -msgstr "ホットプラグによってスワップ パーティションを自動的にマウントします。" - -msgid "Automount Filesystem" -msgstr "ファイルシステム 自動マウント" - -msgid "Automount Swap" -msgstr "スワップ 自動マウント" - -msgid "Available" -msgstr "使用可" - -msgid "Available packages" -msgstr "インストール可能なパッケージ" - -msgid "Average:" -msgstr "平均値:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "戻る" - -msgid "Back to Overview" -msgstr "概要へ戻る" - -msgid "Back to configuration" -msgstr "設定へ戻る" - -msgid "Back to overview" -msgstr "概要へ戻る" - -msgid "Back to scan results" -msgstr "スキャン結果へ戻る" - -msgid "Backup / Flash Firmware" -msgstr "バックアップ / ファームウェア更新" - -msgid "Backup / Restore" -msgstr "バックアップ / 復元" - -msgid "Backup file list" -msgstr "バックアップファイル リスト" - -msgid "Bad address specified!" -msgstr "無効なアドレスです!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"以下は、バックアップの際に含まれるファイルのリストです。このリストは、opkgに" -"よって認識されている設定ファイル、重要なベースファイル、ユーザーが設定したパ" -"ターンに一致したファイルの一覧です。" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" -"ワイルドカード アドレスではなく、特定のインターフェースのみにバインドします。" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "ビットレート" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "ブリッジ" - -msgid "Bridge interfaces" -msgstr "ブリッジ インターフェース" - -msgid "Bridge unit number" -msgstr "ブリッジ ユニット番号" - -msgid "Bring up on boot" -msgstr "デフォルトで起動する" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s 無線LANコントローラ" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 無線LANコントローラ" - -msgid "Buffered" -msgstr "バッファ" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"ビルド / ディストリビューション固有のフィード定義です。このファイルは" -"sysupgradeの際に引き継がれません。" - -msgid "Buttons" -msgstr "ボタン" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "CA証明書(空白の場合、初回の接続後に保存されます。)" - -msgid "CPU usage (%)" -msgstr "CPU使用率 (%)" - -msgid "Cancel" -msgstr "キャンセル" - -msgid "Category" -msgstr "カテゴリー" - -msgid "Chain" -msgstr "チェイン" - -msgid "Changes" -msgstr "変更" - -msgid "Changes applied." -msgstr "変更が適用されました。" - -msgid "Changes the administrator password for accessing the device" -msgstr "デバイスの管理者パスワードを変更します" - -msgid "Channel" -msgstr "チャネル" - -msgid "Check" -msgstr "チェック" - -msgid "Check fileystems before mount" -msgstr "マウント前にファイルシステムをチェックする" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" -"この無線から既存のネットワークを削除する場合、このオプションを有効にします。" - -msgid "Checksum" -msgstr "チェックサム" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"このインターフェースに設定するファイウォール ゾーンを選択してください。設" -"定しないを選択すると、設定済みのゾーンを削除します。また、作成" -"フィールドにゾーン名を入力すると、新しくゾーンを作成し、このインターフェース" -"に設定します。" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"無線インターフェースをアタッチするネットワークを選択してください。または、" -"作成欄を選択すると新しいネットワークを作成します。" - -msgid "Cipher" -msgstr "暗号化方式" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"\"バックアップ アーカイブの作成\"をクリックすると、現在の設定ファイルをtar形" -"式のアーカイブファイルとしてダウンロードします。設定のリセットを行う場" -"合、\"設定リセット\"をクリックしてください。(ただし、squashfsをお使いの場合の" -"み使用可能です)" - -msgid "Client" -msgstr "クライアント" - -msgid "Client ID to send when requesting DHCP" -msgstr "DHCPリクエスト時に送信するクライアントID" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"設定した秒数後に、使用していない接続を閉じます。0を設定した場合、接続を維持し" -"ます" - -msgid "Close list..." -msgstr "リストを閉じる" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "Command" -msgstr "コマンド" - -msgid "Common Configuration" -msgstr "一般設定" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" -"キーのインストールに使用される EAPOL キーフレームの再送信を無効にすることによ" -"り、クライアント サイドの Key Reinstallation Attacks (KRACK) を困難にします。" -"この回避策は、相互運用性の問題や、特に高負荷のトラフィック環境下におけるキー " -"ネゴシエーションの信頼性低下の原因となることがあります。" - -msgid "Configuration" -msgstr "設定" - -msgid "Configuration applied." -msgstr "設定を適用しました。" - -msgid "Configuration files will be kept." -msgstr "設定ファイルは保持されます。" - -msgid "Confirmation" -msgstr "確認" - -msgid "Connect" -msgstr "接続" - -msgid "Connected" -msgstr "接続中" - -msgid "Connection Limit" -msgstr "接続制限" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "TLSが使用できないとき、サーバーへの接続は失敗します。" - -msgid "Connections" -msgstr "ネットワーク接続" - -msgid "Country" -msgstr "国" - -msgid "Country Code" -msgstr "国コード" - -msgid "Cover the following interface" -msgstr "インターフェースの指定" - -msgid "Cover the following interfaces" -msgstr "インターフェースの指定" - -msgid "Create / Assign firewall-zone" -msgstr "ファイアウォール ゾーンの作成 / 割り当て" - -msgid "Create Interface" -msgstr "インターフェースの作成" - -msgid "Create a bridge over multiple interfaces" -msgstr "複数のインタフェースを指定してブリッジを作成します" - -msgid "Critical" -msgstr "重大" - -msgid "Cron Log Level" -msgstr "Cronのログ出力レベル" - -msgid "Custom Interface" -msgstr "新しいインターフェース" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"プライベート フィードなどのカスタム フィード定義です。このファイルは" -"sysupgrade時に引き継ぐことができます。" - -msgid "Custom feeds" -msgstr "カスタム フィード" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"LED デバイスの挙動をカスタマイズ" -"します。" - -msgid "DHCP Leases" -msgstr "DHCPリース" - -msgid "DHCP Server" -msgstr "DHCPサーバー" - -msgid "DHCP and DNS" -msgstr "DHCP 及び DNS" - -msgid "DHCP client" -msgstr "DHCP クライアント" - -msgid "DHCP-Options" -msgstr "DHCPオプション" - -msgid "DHCPv6 Leases" -msgstr "DHCPv6 リース" - -msgid "DHCPv6 client" -msgstr "DHCPv6 クライアント" - -msgid "DHCPv6-Mode" -msgstr "DHCPv6-モード" - -msgid "DHCPv6-Service" -msgstr "DHCPv6-サービス" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNSフォワーディング" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "DNSSEC" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "DS-Lite AFTR アドレス" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "DSL ステータス" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "デバッグ" - -msgid "Default %d" -msgstr "標準設定 %d" - -msgid "Default gateway" -msgstr "デフォルト ゲートウェイ" - -msgid "Default is stateless + stateful" -msgstr "デフォルトは ステートレス + ステートフル です。" - -msgid "Default route" -msgstr "デフォルト ルート" - -msgid "Default state" -msgstr "標準状態" - -msgid "Define a name for this network." -msgstr "ネットワーク名を設定してください。" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"追加のDHCPオプションを設定します。(例:\"6,192.168.2.1,192.168.2.2\" と設定することで、クライアントに指定のDNSサーバーを通知します。)" - -msgid "Delete" -msgstr "削除" - -msgid "Delete this network" -msgstr "ネットワークを削除します" - -msgid "Description" -msgstr "詳細" - -msgid "Design" -msgstr "デザイン" - -msgid "Destination" -msgstr "宛先" - -msgid "Device" -msgstr "デバイス" - -msgid "Device Configuration" -msgstr "デバイス設定" - -msgid "Device is rebooting..." -msgstr "デバイスを再起動中です..." - -msgid "Device unreachable" -msgstr "デバイスに到達できません" - -msgid "Diagnostics" -msgstr "診断機能" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "ディレクトリ" - -msgid "Disable" -msgstr "無効" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"このインターフェースではDHCP機能を使用しません。" - -msgid "Disable DNS setup" -msgstr "DNSセットアップを無効にする" - -msgid "Disable Encryption" -msgstr "暗号化を無効にする" - -msgid "Disabled" -msgstr "無効" - -msgid "Disabled (default)" -msgstr "無効(デフォルト)" - -msgid "Discard upstream RFC1918 responses" -msgstr "RFC1918の応答を破棄します" - -msgid "Displaying only packages containing" -msgstr "右記の文字列を含んだパッケージのみを表示中" - -msgid "Distance Optimization" -msgstr "距離の最適化" - -msgid "Distance to farthest network member in meters." -msgstr "最も遠い端末との距離(メートル)を設定してください。" - -msgid "Distribution feeds" -msgstr "ディストリビューション フィード" - -msgid "Diversity" -msgstr "ダイバシティ" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq は DHCP" -"サーバーと NATファイア" -"ウォールの為の DNSフォワーダーを複" -"合したサービスです。" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"無効なリプライをキャッシュしません (例:存在しないドメインからの返答など)" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "パブリック DNSサーバーが返答できなかったリクエストを転送しません" - -msgid "Do not forward reverse lookups for local networks" -msgstr "ローカル ネットワークへの逆引きを転送しません" - -msgid "Domain required" -msgstr "ドメイン必須" - -msgid "Domain whitelist" -msgstr "ドメイン ホワイトリスト" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"DNS名の無い DNSリクエストを転送しません" - -msgid "Download and install package" -msgstr "パッケージのダウンロードとインストール" - -msgid "Download backup" -msgstr "バックアップ アーカイブのダウンロード" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear設定" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear は SSH ネットワークへのシェルア" -"クセスと統合された SCP サーバーを提供しま" -"す。" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "Dual-Stack Lite (RFC6333)" - -msgid "Dynamic DHCP" -msgstr "動的 DHCP" - -msgid "Dynamic tunnel" -msgstr "動的トンネル機能" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"クライアントに対して動的にDHCPアドレスを割り振ります。無効に設定した場合、静" -"的リースのみを行います。" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAPメソッド" - -msgid "Edit" -msgstr "編集" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "インターフェースを編集" - -msgid "Edit this network" -msgstr "ネットワークを編集" - -msgid "Emergency" -msgstr "緊急" - -msgid "Enable" -msgstr "有効" - -msgid "Enable STP" -msgstr "STPを有効にする" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "HE.netの動的endpoint更新を有効にします" - -msgid "Enable IPv6 negotiation" -msgstr "IPv6 ネゴシエーションの有効化" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "PPPリンクのIPv6 ネゴシエーションを有効にする" - -msgid "Enable Jumbo Frame passthrough" -msgstr "ジャンボフレーム パススルーを有効にする" - -msgid "Enable NTP client" -msgstr "NTPクライアント機能を有効にする" - -msgid "Enable Single DES" -msgstr "シングルDESの有効化" - -msgid "Enable TFTP server" -msgstr "TFTPサーバーを有効にする" - -msgid "Enable VLAN functionality" -msgstr "VLAN機能を有効にする" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "WPS プッシュボタンを有効化するには、WPA(2)-PSKが必要です。" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "Key Reinstallation (KRACK) 対策の有効化" - -msgid "Enable learning and aging" -msgstr "ラーニング エイジング機能を有効にする" - -msgid "Enable mirroring of incoming packets" -msgstr "受信パケットのミラーリングを有効化" - -msgid "Enable mirroring of outgoing packets" -msgstr "送信パケットのミラーリングを有効化" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "マウント設定を有効にする" - -msgid "Enable this swap" -msgstr "スワップ設定を有効にする" - -msgid "Enable/Disable" -msgstr "有効/無効" - -msgid "Enabled" -msgstr "有効" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "スパニングツリー プロトコルを有効にする" - -msgid "Encapsulation mode" -msgstr "カプセル化モード" - -msgid "Encryption" -msgstr "暗号化モード" - -msgid "Endpoint Host" -msgstr "エンドポイント ホスト" - -msgid "Endpoint Port" -msgstr "エンドポイント ポート" - -msgid "Erasing..." -msgstr "消去中..." - -msgid "Error" -msgstr "エラー" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "イーサネットアダプタ" - -msgid "Ethernet Switch" -msgstr "イーサネットスイッチ" - -msgid "Exclude interfaces" -msgstr "除外インターフェース" - -msgid "Expand hosts" -msgstr "拡張ホスト設定" - -msgid "Expires" -msgstr "期限切れ" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"リースアドレスの有効時間を入力します。最小設定値は2分です。 (2m)." - -msgid "External" -msgstr "外部" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "外部システムログ サーバー" - -msgid "External system log server port" -msgstr "外部システムログ・サーバー ポート" - -msgid "External system log server protocol" -msgstr "外部システムログ・サーバー プロトコル" - -msgid "Extra SSH command options" -msgstr "拡張 SSHコマンドオプション" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "ファイル" - -msgid "Filename of the boot image advertised to clients" -msgstr "クライアントに通知するブートイメージのファイル名" - -msgid "Filesystem" -msgstr "ファイルシステム" - -msgid "Filter" -msgstr "フィルタ" - -msgid "Filter private" -msgstr "プライベートフィルター" - -msgid "Filter useless" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" -"現在アタッチされている全てのファイルシステムとスワップを検索し、検出結果に基" -"づいてデフォルト設定を置き換えます。" - -msgid "Find and join network" -msgstr "ネットワークの検索と参加" - -msgid "Find package" -msgstr "パッケージを検索" - -msgid "Finish" -msgstr "終了" - -msgid "Firewall" -msgstr "ファイアウォール" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "ファイアウォール設定" - -msgid "Firewall Status" -msgstr "ファイアウォール ステータス" - -msgid "Firmware File" -msgstr "ファームウェア ファイル" - -msgid "Firmware Version" -msgstr "ファームウェア バージョン" - -msgid "Fixed source port for outbound DNS queries" -msgstr "DNSクエリを送信する送信元ポートを固定します" - -msgid "Flash Firmware" -msgstr "ファームウェアの更新" - -msgid "Flash image..." -msgstr "更新" - -msgid "Flash new firmware image" -msgstr "ファームウェアの更新" - -msgid "Flash operations" -msgstr "更新機能" - -msgid "Flashing..." -msgstr "更新中..." - -msgid "Force" -msgstr "強制" - -msgid "Force CCMP (AES)" -msgstr "CCMP (AES) を使用" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"別のDHCPサーバーが検出された場合でも、DHCPサーバー機能を強制的に起動します。" - -msgid "Force TKIP" -msgstr "TKIP を使用" - -msgid "Force TKIP and CCMP (AES)" -msgstr "TKIP 及びCCMP (AES) を使用" - -msgid "Force link" -msgstr "強制リンク" - -msgid "Force use of NAT-T" -msgstr "NAT-Tの強制使用" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "DHCPトラフィックを転送する" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "ブロードキャスト トラフィックを転送する" - -msgid "Forwarding mode" -msgstr "転送モード" - -msgid "Fragmentation Threshold" -msgstr "フラグメンテーションしきい値" - -msgid "Frame Bursting" -msgstr "フレームバースト" - -msgid "Free" -msgstr "空き" - -msgid "Free space" -msgstr "ディスクの空き容量" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" -"WireGuard インターフェースとピアについての詳細情報: wireguard.io" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "GPRSのみ" - -msgid "Gateway" -msgstr "ゲートウェイ" - -msgid "Gateway ports" -msgstr "ゲートウェイ ポート" - -msgid "General Settings" -msgstr "一般設定" - -msgid "General Setup" -msgstr "一般設定" - -msgid "General options for opkg" -msgstr "opkgの一般設定" - -msgid "Generate Config" -msgstr "コンフィグ生成" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "バックアップ アーカイブの作成" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "802.11%s 無線LANコントローラ" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "入力されたパスワードが一致しません。パスワードは変更されませんでした!" - -msgid "Global Settings" -msgstr "全体設定" - -msgid "Global network options" -msgstr "グローバル ネットワークオプション" - -msgid "Go to password configuration..." -msgstr "パスワード設定へ移動..." - -msgid "Go to relevant configuration page" -msgstr "関連する設定ページへ移動" - -msgid "Group Password" -msgstr "グループ パスワード" - -msgid "Guest" -msgstr "ゲスト" - -msgid "HE.net password" -msgstr "HE.net パスワード" - -msgid "HE.net username" -msgstr "HE.net ユーザー名" - -msgid "HT mode (802.11n)" -msgstr "HT モード (802.11n)" - -msgid "Handler" -msgstr "ハンドラ" - -msgid "Hang Up" -msgstr "再起動" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "ハートビート" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"このページではホスト名やタイムゾーンなどの基本的な設定を行うことが出来ます。" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "SSH公開鍵認証で使用するSSH公開鍵を1行づつペーストしてください。" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Hermes 802.11b 無線LANコントローラ" - -msgid "Hide ESSID" -msgstr "ESSIDの隠匿" - -msgid "Host" -msgstr "ホスト" - -msgid "Host entries" -msgstr "ホスト エントリー" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" -"ホストIP または ネットワーク" - -msgid "Hostname" -msgstr "ホスト名" - -msgid "Hostname to send when requesting DHCP" -msgstr "DHCPリクエスト時に送信するホスト名" - -msgid "Hostnames" -msgstr "ホスト名" - -msgid "Hybrid" -msgstr "ハイブリッド" - -msgid "IKE DH Group" -msgstr "IKE DHグループ" - -msgid "IP Addresses" -msgstr "IPアドレス" - -msgid "IP address" -msgstr "IPアドレス" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 ファイアウォール" - -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN ステータス" - -msgid "IPv4 address" -msgstr "IPv4 アドレス" - -msgid "IPv4 and IPv6" -msgstr "IPv4及びIPv6" - -msgid "IPv4 assignment length" -msgstr "IPv4 割り当て長" - -msgid "IPv4 broadcast" -msgstr "IPv4 ブロードキャスト" - -msgid "IPv4 gateway" -msgstr "IPv4 ゲートウェイ" - -msgid "IPv4 netmask" -msgstr "IPv4 ネットマスク" - -msgid "IPv4 only" -msgstr "IPv4のみ" - -msgid "IPv4 prefix" -msgstr "IPv4 プレフィクス" - -msgid "IPv4 prefix length" -msgstr "IPv4 プレフィクス長" - -msgid "IPv4-Address" -msgstr "IPv4-アドレス" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4-in-IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 ファイアウォール" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "IPv6 設定" - -msgid "IPv6 ULA-Prefix" -msgstr "IPv6 ULA-プレフィクス" - -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN ステータス" - -msgid "IPv6 address" -msgstr "IPv6 アドレス" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "IPv6 割り当て長" - -msgid "IPv6 gateway" -msgstr "IPv6 ゲートウェイ" - -msgid "IPv6 only" -msgstr "IPv6のみ" - -msgid "IPv6 prefix" -msgstr "IPv6 プレフィクス" - -msgid "IPv6 prefix length" -msgstr "IPv6 プレフィクス長" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "IPv6 サフィックス" - -msgid "IPv6-Address" -msgstr "IPv6-アドレス" - -msgid "IPv6-PD" -msgstr "IPv6-PD" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-over-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-over-IPv4 (6to4)" - -msgid "Identity" -msgstr "識別子" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "チェックした場合、暗号化は無効になります。" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"固定のデバイス ノード名のかわりに、設定されたUUIDを使用してマウントします" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"固定のデバイス ノード名のかわりに、設定されたパーティション ラベルを使用して" -"マウントします。" - -msgid "If unchecked, no default route is configured" -msgstr "チェックされていない場合、デフォルト ルートを設定しません" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "チェックされていない場合、通知されたDNSサーバー アドレスを無視します" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"物理メモリが不足する場合、使用されていないデータを一時的にスワップ デバイスに" -"スワップし、RAMの使用可能領域を増" -"やすことができます。ただし、スワップ デバイスはRAMから高速にアクセスすることができないため、データのスワップ" -"は非常に遅い処理であることに注意します。" - -msgid "Ignore /etc/hosts" -msgstr "/etc/hostsを無視" - -msgid "Ignore interface" -msgstr "インターフェースを無視する" - -msgid "Ignore resolve file" -msgstr "リゾルバ ファイルを無視する" - -msgid "Image" -msgstr "イメージ" - -msgid "In" -msgstr "イン" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "未使用時タイムアウト" - -msgid "Inbound:" -msgstr "受信:" - -msgid "Info" -msgstr "情報" - -msgid "Initscript" -msgstr "起動スクリプト" - -msgid "Initscripts" -msgstr "起動スクリプト" - -msgid "Install" -msgstr "インストール" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "%q パッケージをインストールします" - -msgid "Install protocol extensions..." -msgstr "プロトコル拡張機能をインストールします..." - -msgid "Installed packages" -msgstr "インストール済みパッケージ" - -msgid "Interface" -msgstr "インターフェース" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "インターフェース設定" - -msgid "Interface Overview" -msgstr "インターフェース一覧" - -msgid "Interface is reconnecting..." -msgstr "インターフェース再接続中..." - -msgid "Interface is shutting down..." -msgstr "インターフェース終了中..." - -msgid "Interface name" -msgstr "インターフェース名" - -msgid "Interface not present or not connected yet." -msgstr "インターフェースが存在しないか、接続していません" - -msgid "Interface reconnected" -msgstr "インターフェースの再接続" - -msgid "Interface shut down" -msgstr "インターフェースの終了" - -msgid "Interfaces" -msgstr "インターフェース" - -msgid "Internal" -msgstr "内部" - -msgid "Internal Server Error" -msgstr "内部サーバー エラー" - -msgid "Invalid" -msgstr "入力値が不正です" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "無効なVLAN IDです! IDは%dから%dまでの値のみ入力可能です。" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "無効なVLAN IDです! ユニークなIDを入力してください。" - -msgid "Invalid username and/or password! Please try again." -msgstr "" -"ユーザー名かパスワード、もしくは両方が不正です!もう一度入力してください。" - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"更新しようとしたイメージファイルはこのフラッシュメモリに適合しません。イメー" -"ジファイルを確認してください!" - -msgid "JavaScript required!" -msgstr "JavaScriptを有効にしてください!" - -msgid "Join Network" -msgstr "ネットワークに接続する" - -msgid "Join Network: Wireless Scan" -msgstr "ネットワークに接続する: 無線LANスキャン" - -msgid "Joining Network: %q" -msgstr "ネットワークに接続: %q" - -msgid "Keep settings" -msgstr "設定を保持する" - -msgid "Kernel Log" -msgstr "カーネル ログ" - -msgid "Kernel Version" -msgstr "カーネル バージョン" - -msgid "Key" -msgstr "暗号キー" - -msgid "Key #%d" -msgstr "キー #%d" - -msgid "Kill" -msgstr "強制終了" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP サーバー" - -msgid "LCP echo failure threshold" -msgstr "LCP echo 失敗数しきい値" - -msgid "LCP echo interval" -msgstr "LCP echo 送信間隔" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "ラベル" - -msgid "Language" -msgstr "言語" - -msgid "Language and Style" -msgstr "言語とスタイル" - -msgid "Latency" -msgstr "レイテンシー" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "リース時間" - -msgid "Lease validity time" -msgstr "リース有効時間" - -msgid "Leasefile" -msgstr "リースファイル" - -msgid "Leasetime remaining" -msgstr "残りリース時間" - -msgid "Leave empty to autodetect" -msgstr "空欄の場合、自動検知を行います" - -msgid "Leave empty to use the current WAN address" -msgstr "空欄の場合、現在のWANアドレスを使用します" - -msgid "Legend:" -msgstr "凡例:" - -msgid "Limit" -msgstr "割り当て数" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "待ち受けをこれらのインターフェースとループバックに制限します。" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "リンクオン" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"問い合わせを転送するDNS サーバーの" -"リストを設定します" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "認証用 SSH暗号キー ファイルのリスト" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "RFC1918の応答を許可するリスト" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "待ち受けインターフェース" - -msgid "Listen Port" -msgstr "待ち受けポート" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"指定したインターフェースでのみアクセスを有効にします。設定しない場合はすべて" -"のインタフェースが対象です" - -msgid "Listening port for inbound DNS queries" -msgstr "DNSクエリを受信するポート" - -msgid "Load" -msgstr "負荷" - -msgid "Load Average" -msgstr "システム平均負荷" - -msgid "Loading" -msgstr "ロード中" - -msgid "Local IP address to assign" -msgstr "割り当てるローカル IPアドレス" - -msgid "Local IPv4 address" -msgstr "ローカル IPv4 アドレス" - -msgid "Local IPv6 address" -msgstr "ローカル IPv6 アドレス" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "ローカル スタートアップ" - -msgid "Local Time" -msgstr "時刻" - -msgid "Local domain" -msgstr "ローカル ドメイン" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"DHCP名とhostsファイルのエントリーに付される、ローカルドメイン サフィックスで" -"す。" - -msgid "Local server" -msgstr "ローカル サーバー" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "ローカライズクエリ" - -msgid "Locked to channel %s used by: %s" -msgstr "チャネル %s にロックされています。次で使用されています: %s" - -msgid "Log output level" -msgstr "ログ出力レベル" - -msgid "Log queries" -msgstr "ログ クエリ" - -msgid "Logging" -msgstr "ログ" - -msgid "Login" -msgstr "ログイン" - -msgid "Logout" -msgstr "ログアウト" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" -"ネットワークアドレスをオフセットとして、最小のアドレスを設定してください" - -msgid "MAC-Address" -msgstr "MAC-アドレス" - -msgid "MAC-Address Filter" -msgstr "MAC-アドレス フィルタ" - -msgid "MAC-Filter" -msgstr "MAC-フィルタ" - -msgid "MAC-List" -msgstr "MAC-リスト" - -msgid "MAP / LW4over6" -msgstr "MAP / LW4over6" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" -"以下のようなコマンドを使用して、ルート ファイルシステムを複製してください:" - -msgid "Manual" -msgstr "手動" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "DHCPリースの許可される最大数" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "並列DNSクエリの許可される最大数" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "EDNS.0 UDP パケットサイズの許可される最大数" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "モデムが準備完了状態になるまでの最大待ち時間" - -msgid "Maximum hold time" -msgstr "最大保持時間" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"名前の長さは、自動的に含まれるプロトコル/ブリッジ プレフィックス (br-, " -"6in4-, pppoe- など)と合わせて最大15文字です。" - -msgid "Maximum number of leased addresses." -msgstr "リースするアドレスの最大数です" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "メモリー" - -msgid "Memory usage (%)" -msgstr "メモリ使用率 (%)" - -msgid "Metric" -msgstr "メトリック" - -msgid "Minimum hold time" -msgstr "最短保持時間" - -msgid "Mirror monitor port" -msgstr "ミラー監視ポート" - -msgid "Mirror source port" -msgstr "ミラー元ポート" - -msgid "Missing protocol extension for proto %q" -msgstr "プロトコル %qのプロトコル拡張が見つかりません" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "モード" - -msgid "Model" -msgstr "モデル" - -msgid "Modem device" -msgstr "モデム デバイス" - -msgid "Modem init timeout" -msgstr "モデム初期化タイムアウト" - -msgid "Monitor" -msgstr "モニター" - -msgid "Mount Entry" -msgstr "マウント機能" - -msgid "Mount Point" -msgstr "マウントポイント" - -msgid "Mount Points" -msgstr "マウントポイント" - -msgid "Mount Points - Mount Entry" -msgstr "マウントポイント - マウント" - -msgid "Mount Points - Swap Entry" -msgstr "マウントポイント - スワップ" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"マウントポイントは、記憶デバイスがファイルシステムのどこに接続されているかを" -"表示しています。" - -msgid "Mount filesystems not specifically configured" -msgstr "明確に設定されていないファイルシステムをマウントします。" - -msgid "Mount options" -msgstr "マウントオプション" - -msgid "Mount point" -msgstr "マウントポイント" - -msgid "Mount swap not specifically configured" -msgstr "明確に設定されていないスワップ パーティションをマウントします。" - -msgid "Mounted file systems" -msgstr "マウント中のファイルシステム" - -msgid "Move down" -msgstr "下へ" - -msgid "Move up" -msgstr "上へ" - -msgid "Multicast address" -msgstr "マルチキャスト アドレス" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "NAT-T モード" - -msgid "NAT64 Prefix" -msgstr "NAT64 プレフィクス" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "NDP-プロキシ" - -msgid "NT Domain" -msgstr "NT ドメイン" - -msgid "NTP server candidates" -msgstr "NTPサーバー候補" - -msgid "NTP sync time-out" -msgstr "NTP 同期タイムアウト" - -msgid "Name" -msgstr "名前" - -msgid "Name of the new interface" -msgstr "新しいインターフェースの名前" - -msgid "Name of the new network" -msgstr "新しいネットワークの名前" - -msgid "Navigation" -msgstr "ナビゲーション" - -msgid "Netmask" -msgstr "ネットマスク" - -msgid "Network" -msgstr "ネットワーク" - -msgid "Network Utilities" -msgstr "ネットワーク ユーティリティ" - -msgid "Network boot image" -msgstr "ネットワークブート用イメージ" - -msgid "Network without interfaces." -msgstr "インターフェースの無いネットワークです。" - -msgid "Next »" -msgstr "次 »" - -msgid "No DHCP Server configured for this interface" -msgstr "このインターフェースにはDHCPサーバーが設定されていません" - -msgid "No NAT-T" -msgstr "NAT-Tを使用しない" - -msgid "No chains in this table" -msgstr "チェイン内にルールがありません" - -msgid "No files found" -msgstr "ファイルが見つかりませんでした" - -msgid "No information available" -msgstr "情報がありません" - -msgid "No negative cache" -msgstr "ネガティブキャッシュを行なわない" - -msgid "No network configured on this device" -msgstr "このデバイスに設定されているネットワークがありません" - -msgid "No network name specified" -msgstr "ネットワーク名が設定されていません" - -msgid "No package lists available" -msgstr "パッケージ リストがありません" - -msgid "No password set!" -msgstr "パスワードが設定されていません!" - -msgid "No rules in this chain" -msgstr "チェイン内にルールがありません" - -msgid "No zone assigned" -msgstr "ゾーンが設定されていません" - -msgid "Noise" -msgstr "ノイズ" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "ノイズ:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "非ワイルドカード" - -msgid "None" -msgstr "なし" - -msgid "Normal" -msgstr "標準" - -msgid "Not Found" -msgstr "見つかりません" - -msgid "Not associated" -msgstr "アソシエーションされていません" - -msgid "Not connected" -msgstr "未接続" - -msgid "Note: Configuration files will be erased." -msgstr "注意: 設定ファイルは消去されます。" - -msgid "Note: interface name length" -msgstr "注意: インターフェース名の長さ" - -msgid "Notice" -msgstr "注意" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-設定" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "消灯時間" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"このページではネットワーク インターフェースの設定を行うことが出来ます。\"ブ" -"リッジインターフェース\"フィールドにチェックを付け、複数のネットワーク イン" -"ターフェースをリストから選択することで複数のインターフェースをブリッジするこ" -"とが出来ます。また、INTERFACE.VLANNRという表記によりVLANも使用することが出来ます。(例: eth0.1)" - -msgid "On-State Delay" -msgstr "点灯時間" - -msgid "One of hostname or mac address must be specified!" -msgstr "1つ以上のホスト名またはMACアドレスを設定してください!" - -msgid "One or more fields contain invalid values!" -msgstr "1つ以上のフィールドに無効な値が設定されています!" - -msgid "One or more invalid/required values on tab" -msgstr "タブに1つ以上の 無効/必須 の値があります。" - -msgid "One or more required fields have no value!" -msgstr "1つ以上のフィールドに値が設定されていません!" - -msgid "Open list..." -msgstr "リストを開く" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "OpenConnect (CISCO AnyConnect)" - -msgid "Operating frequency" -msgstr "動作周波数" - -msgid "Option changed" -msgstr "変更されるオプション" - -msgid "Option removed" -msgstr "削除されるオプション" - -msgid "Optional" -msgstr "オプション" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" -"ピアのホストです。名前はインターフェースの起動前に解決されます。(オプショ" -"ン)" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "トンネル インターフェースのMaximum Transmission Unit(オプション)" - -msgid "Optional. Port of peer." -msgstr "ピアのポート(オプション)" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"キープアライブ メッセージの送信間隔(秒)です。既定値: 0。このデバイスがNAT" -"以下に存在する場合の推奨値は25です。(オプション)" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "発信パケットと受信パケットに使用されるUDPポート(オプション)" - -msgid "Options" -msgstr "オプション" - -msgid "Other:" -msgstr "その他:" - -msgid "Out" -msgstr "アウト" - -msgid "Outbound:" -msgstr "送信:" - -msgid "Output Interface" -msgstr "出力インターフェース" - -msgid "Override MAC address" -msgstr "MACアドレスを上書きする" - -msgid "Override MTU" -msgstr "MTUを上書きする" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "デフォルトのインターフェース名を上書きします。" - -msgid "Override the gateway in DHCP responses" -msgstr "DHCPレスポンス内のゲートウェイアドレスを上書きする" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"クライアントへ通知するネットマスクを上書きします。通常は、設定されているサブ" -"ネットから計算されます。" - -msgid "Override the table used for internal routes" -msgstr "内部ルートに使用されるテーブルを上書きします。" - -msgid "Overview" -msgstr "概要" - -msgid "Owner" -msgstr "所有者" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP パスワード" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP ユーザー名" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoAカプセル化" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "libiwinfo パッケージをインストールしてください!" - -msgid "Package lists are older than 24 hours" -msgstr "パッケージ リストは24時間以上前のものです" - -msgid "Package name" -msgstr "パッケージ名" - -msgid "Packets" -msgstr "パケット" - -msgid "Part of zone %q" -msgstr "ゾーン %qの一部" - -msgid "Password" -msgstr "パスワード" - -msgid "Password authentication" -msgstr "パスワード認証" - -msgid "Password of Private Key" -msgstr "秘密鍵のパスワード" - -msgid "Password of inner Private Key" -msgstr "秘密鍵のパスワード" - -msgid "Password successfully changed!" -msgstr "パスワードを変更しました" - -msgid "Password2" -msgstr "パスワード2" - -msgid "Path to CA-Certificate" -msgstr "CA証明書のパス" - -msgid "Path to Client-Certificate" -msgstr "クライアント証明書のパス" - -msgid "Path to Private Key" -msgstr "秘密鍵のパス" - -msgid "Path to executable which handles the button event" -msgstr "ボタンイベントをハンドルする実行ファイルのパス" - -msgid "Path to inner CA-Certificate" -msgstr "CA 証明書のパス" - -msgid "Path to inner Client-Certificate" -msgstr "クライアント証明書のパス" - -msgid "Path to inner Private Key" -msgstr "秘密鍵のパス" - -msgid "Peak:" -msgstr "ピーク:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "ピア" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "再起動を実行" - -msgid "Perform reset" -msgstr "設定リセットを実行" - -msgid "Persistent Keep Alive" -msgstr "永続的なキープアライブ" - -msgid "Phy Rate:" -msgstr "物理レート:" - -msgid "Physical Settings" -msgstr "デバイス設定" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "パケット" - -msgid "Please enter your username and password." -msgstr "ユーザー名とパスワードを入力してください。" - -msgid "Policy" -msgstr "ポリシー" - -msgid "Port" -msgstr "ポート" - -msgid "Port status:" -msgstr "ポート ステータス:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "委任されたプレフィクス (PD)" - -msgid "Preshared Key" -msgstr "事前共有鍵" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"設定回数のLCP echo 確認失敗後、ピアノードがダウンしているものと見なします。0" -"を設定した場合、失敗しても無視します" - -msgid "Prevent listening on these interfaces." -msgstr "これらのインターフェースでの待ち受けを停止します。" - -msgid "Prevents client-to-client communication" -msgstr "クライアント同士の通信を制限します" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Prism2/2.5/3 802.11b 無線LANコントローラ" - -msgid "Private Key" -msgstr "秘密鍵" - -msgid "Proceed" -msgstr "続行" - -msgid "Processes" -msgstr "プロセス" - -msgid "Profile" -msgstr "プロファイル" - -msgid "Prot." -msgstr "プロトコル" - -msgid "Protocol" -msgstr "プロトコル" - -msgid "Protocol family" -msgstr "プロトコルファミリ" - -msgid "Protocol of the new interface" -msgstr "新しいインターフェースのプロトコル" - -msgid "Protocol support is not installed" -msgstr "プロトコル サポートがインストールされていません" - -msgid "Provide NTP server" -msgstr "NTPサーバー機能を有効にする" - -msgid "Provide new network" -msgstr "新しいネットワークを設定する" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "擬似アドホック (ahdemo)" - -msgid "Public Key" -msgstr "公開鍵" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "クオリティ" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "RFC3947 NAT-Tモード" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTSしきい値" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "受信レート" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "RaLink 802.11%s 無線LANコントローラ" - -msgid "Radius-Accounting-Port" -msgstr "Radiusアカウントサーバー ポート番号" - -msgid "Radius-Accounting-Secret" -msgstr "Radiusアカウント秘密鍵" - -msgid "Radius-Accounting-Server" -msgstr "Radiusアカウントサーバー" - -msgid "Radius-Authentication-Port" -msgstr "Radius認証サーバー ポート番号" - -msgid "Radius-Authentication-Secret" -msgstr "Radius認証秘密鍵" - -msgid "Radius-Authentication-Server" -msgstr "Radius認証サーバー" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"DHCPサーバーの設定" -"として/etc/ethers をロードします" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"本当にこのインターフェースを削除しますか?一度削除すると、元に戻すことはできま" -"せん!\n" -"このインターフェースを経由して接続している場合、デバイスにアクセスできなくな" -"る場合があります。" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"本当にこの無線ネットワークを削除しますか?一度削除すると、元に戻すことはできま" -"せん!\n" -"このネットワークを経由して接続している場合、デバイスにアクセスできなくなる場" -"合があります。" - -msgid "Really reset all changes?" -msgstr "本当に全ての変更をリセットしますか?" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"本当にネットワークを停止しますか?\n" -"このネットワークを経由して接続している場合、デバイスにアクセスできなくなる場" -"合があります。" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"本当にインターフェース \"%s\" を停止しますか?\n" -"このインターフェースを経由して接続している場合、デバイスにアクセスできなくな" -"る場合があります。" - -msgid "Really switch protocol?" -msgstr "本当にプロトコルを切り替えますか?" - -msgid "Realtime Connections" -msgstr "リアルタイム・コネクション" - -msgid "Realtime Graphs" -msgstr "リアルタイム グラフ" - -msgid "Realtime Load" -msgstr "リアルタイム・ロード" - -msgid "Realtime Traffic" -msgstr "リアルタイム・トラフィック" - -msgid "Realtime Wireless" -msgstr "リアルタイム・無線LAN" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "DNSリバインディング・プロテクション" - -msgid "Reboot" -msgstr "再起動" - -msgid "Rebooting..." -msgstr "再起動中..." - -msgid "Reboots the operating system of your device" -msgstr "デバイスのオペレーティングシステムを再起動します。" - -msgid "Receive" -msgstr "受信" - -msgid "Receiver Antenna" -msgstr "受信アンテナ" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "WireGuard インターフェースのIPアドレスです。(推奨)" - -msgid "Reconnect this interface" -msgstr "インターフェースの再接続" - -msgid "Reconnecting interface" -msgstr "インターフェース再接続中" - -msgid "References" -msgstr "参照カウンタ" - -msgid "Relay" -msgstr "リレー" - -msgid "Relay Bridge" -msgstr "リレーブリッジ" - -msgid "Relay between networks" -msgstr "ネットワーク間のリレー設定" - -msgid "Relay bridge" -msgstr "リレーブリッジ" - -msgid "Remote IPv4 address" -msgstr "リモート IPv4アドレス" - -msgid "Remote IPv4 address or FQDN" -msgstr "リモート IPv4アドレス または FQDN" - -msgid "Remove" -msgstr "削除" - -msgid "Repeat scan" -msgstr "再スキャン" - -msgid "Replace entry" -msgstr "エントリーの置換" - -msgid "Replace wireless configuration" -msgstr "無線設定を置換する" - -msgid "Request IPv6-address" -msgstr "IPv6-アドレスのリクエスト" - -msgid "Request IPv6-prefix of length" -msgstr "リクエストするIPv6-プレフィクス長" - -msgid "Require TLS" -msgstr "TLSが必要" - -msgid "Required" -msgstr "必須" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "DOCSIS 3.0を使用するいくつかのISPでは必要になります" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "このインターフェースに使用するBase64-エンコード 秘密鍵(必須)" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" -"'フル' バージョンの wpad/hostapd と、無線LANドライバーによるサポートが必要で" -"す。
    (2017年2月現在: ath9k 及び ath10k、LEDE内では mwlwifi 及び mt76)" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "リセット" - -msgid "Reset Counters" -msgstr "カウンタのリセット" - -msgid "Reset to defaults" -msgstr "標準設定にリセット" - -msgid "Resolv and Hosts Files" -msgstr "名前解決およびホストファイル設定" - -msgid "Resolve file" -msgstr "リゾルバファイル" - -msgid "Restart" -msgstr "再起動" - -msgid "Restart Firewall" -msgstr "ファイアウォールの再起動" - -msgid "Restore backup" -msgstr "バックアップから復元する" - -msgid "Reveal/hide password" -msgstr "パスワードを表示する/隠す" - -msgid "Revert" -msgstr "元に戻す" - -msgid "Root" -msgstr "ルート" - -msgid "Root directory for files served via TFTP" -msgstr "TFTP経由でファイルを取り扱う際のルートディレクトリ" - -msgid "Root preparation" -msgstr "ルートの準備" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "ルート タイプ" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "ルーター アドバタイズメント-サービス" - -msgid "Router Password" -msgstr "ルーター パスワード" - -msgid "Routes" -msgstr "経路情報" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"特定のホスト又はネットワークに、どのインターフェース及びゲートウェイを通して" -"通信を行うか、経路情報を設定します。" - -msgid "Run a filesystem check before mounting the device" -msgstr "デバイスのマウントを行う前にファイルシステムチェックを行う" - -msgid "Run filesystem check" -msgstr "ファイルシステムチェックを行う" - -msgid "SHA256" -msgstr "SHA256" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "SSHアクセス" - -msgid "SSH server address" -msgstr "SSH サーバーアドレス" - -msgid "SSH server port" -msgstr "SSH サーバーポート" - -msgid "SSH username" -msgstr "SSH ユーザー名" - -msgid "SSH-Keys" -msgstr "SSHキー" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "保存" - -msgid "Save & Apply" -msgstr "保存 & 適用" - -msgid "Save & Apply" -msgstr "保存 & 適用" - -msgid "Scan" -msgstr "スキャン" - -msgid "Scheduled Tasks" -msgstr "スケジュールタスク" - -msgid "Section added" -msgstr "追加されるセクション" - -msgid "Section removed" -msgstr "削除されるセクション" - -msgid "See \"mount\" manpage for details" -msgstr "詳細情報は \"mount\" のmanページを参照してください" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"設定された秒間隔でLCP echoリクエストを送信します。失敗数しきい値を設定した場" -"合のみ、機能が有効になります。" - -msgid "Separate Clients" -msgstr "クライアントの分離" - -msgid "Server Settings" -msgstr "サーバー設定" - -msgid "Server password" -msgstr "サーバー パスワード" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "サーバー ユーザー名" - -msgid "Service Name" -msgstr "サービス名" - -msgid "Service Type" -msgstr "サービスタイプ" - -msgid "Services" -msgstr "サービス" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "時刻同期設定" - -msgid "Setup DHCP Server" -msgstr "DHCPサーバーを設定" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "Short GI" - -msgid "Show current backup file list" -msgstr "現在のバックアップファイルのリストを表示する" - -msgid "Shutdown this interface" -msgstr "インターフェースを終了" - -msgid "Shutdown this network" -msgstr "ネットワークを終了" - -msgid "Signal" -msgstr "信号強度" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "信号:" - -msgid "Size" -msgstr "サイズ" - -msgid "Size (.ipk)" -msgstr "サイズ (.ipk)" - -msgid "Skip" -msgstr "スキップ" - -msgid "Skip to content" -msgstr "コンテンツへ移動" - -msgid "Skip to navigation" -msgstr "ナビゲーションへ移動" - -msgid "Slot time" -msgstr "スロット時間" - -msgid "Software" -msgstr "ソフトウェア" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "無効な値が設定されているフィールドがあるため、保存できません。" - -msgid "Sorry, the object you requested was not found." -msgstr "申し訳ありません。リクエストされたオブジェクトは見つかりませんでした。" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "申し訳ありません。サーバーに予期せぬエラーが発生しました。" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"申し訳ありません。現在このボードではsysupgradeがサポートがされていないため、" -"ファームウェア更新は手動で行っていただく必要があります。wikiを参照して、この" -"デバイスのインストール手順を参照してください。" - -msgid "Sort" -msgstr "ソート" - -msgid "Source" -msgstr "送信元" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "デバイスが接続するディレクトリを設定します" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Dropbearの受信ポートを設定してください" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "暗号鍵を設定します。" - -msgid "Start" -msgstr "開始" - -msgid "Start priority" -msgstr "優先順位" - -msgid "Startup" -msgstr "スタートアップ" - -msgid "Static IPv4 Routes" -msgstr "IPv4 静的ルーティング" - -msgid "Static IPv6 Routes" -msgstr "IPv6 静的ルーティング" - -msgid "Static Leases" -msgstr "静的リース" - -msgid "Static Routes" -msgstr "静的ルーティング" - -msgid "Static address" -msgstr "静的アドレス" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"静的リース機能は、DHCPクライアントに対して固定のIPアドレス及び一時的なホスト" -"名をアサインします。また、クライアントは対応するリースを使用するホストがその1" -"台のみで、かつ静的なインターフェース設定にする必要があります。" - -msgid "Status" -msgstr "ステータス" - -msgid "Stop" -msgstr "停止" - -msgid "Strict order" -msgstr "問い合わせの制限" - -msgid "Submit" -msgstr "送信" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "スワップ" - -msgid "Swap Entry" -msgstr "スワップ機能" - -msgid "Switch" -msgstr "スイッチ" - -msgid "Switch %q" -msgstr "スイッチ %q" - -msgid "Switch %q (%s)" -msgstr "スイッチ %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "プロトコルの切り替え" - -msgid "Sync with browser" -msgstr "ブラウザの時刻と同期" - -msgid "Synchronizing..." -msgstr "同期中..." - -msgid "System" -msgstr "システム" - -msgid "System Log" -msgstr "システムログ" - -msgid "System Properties" -msgstr "システム プロパティ" - -msgid "System log buffer size" -msgstr "システムログ バッファサイズ" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP設定" - -msgid "TFTP server root" -msgstr "TFTPサーバー・ルート" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "送信レート" - -msgid "Table" -msgstr "テーブル" - -msgid "Target" -msgstr "ターゲット" - -msgid "Target network" -msgstr "対象ネットワーク" - -msgid "Terminate" -msgstr "停止" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"デバイス設定セクションでは、チャネル、送信出力、アンテナ設定などの無" -"線ハードウェアの設定を行います。また、無線ハードウェアがマルチSSID機能をサ" -"ポートしている場合、これらの設定は全て共通の設定として扱われます。暗号化設定" -"や無線モードなどのネットワーク毎の設定は、インターフェース設定で設定" -"を行います。" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"libiwinfo-lua パッケージがインストールされていません。無線設定機能を" -"正しく動作させるために、このパッケージをインストールする必要があります。" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"使用可能な文字は右記の通りです: A-Z, a-z, " -"0-9, _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "設定ファイルは以下のエラーにより読み込めませんでした:" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"デバイスファイルまたはパーティション(例 " -"/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"記憶領域をフォーマットしているファイルシステムを指定します。(例 ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"更新用イメージがアップロードされました。以下はそのチェックサム及びファイルサ" -"イズです。オリジナルファイルと比較し、整合性を確認してください。
    \"続行" -"\"ボタンをクリックすると、更新処理を開始します。" - -msgid "The following changes have been committed" -msgstr "以下の変更が適用されました" - -msgid "The following changes have been reverted" -msgstr "以下の変更が取り消されました" - -msgid "The following rules are currently active on this system." -msgstr "このシステムでは、現在以下のルールが有効になっています。" - -msgid "The given network name is not unique" -msgstr "設定されたネットワーク名はユニークなものではありません" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"このハードウェアでは複数のESSIDを設定することができないため、続行した場合、設" -"定は既存の設定と置き換えられます。" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "IPv6 プレフィクスの長さ (bit) です。" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"ネットワーク ポートは、コンピュータが他と直接通信することができる複数の " -"VLAN にまとめることができま" -"す。 VLAN は、異なるネット" -"ワーク セグメントの分離にしばしば用いられます。通常、インターネットなどより上" -"位のネットワークへの接続に使用するアップリンク ポートと、ローカル ネットワー" -"ク用のその他のポートが存在します。" - -msgid "The selected protocol needs a device assigned" -msgstr "選択中のプロトコルを使用する場合、デバイスを設定する必要があります" - -msgid "The submitted security token is invalid or already expired!" -msgstr "送信されたセキュリティ トークンは無効もしくは期限切れです!" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "システムは設定領域を消去中です。完了後、自動的に再起動します。" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"システム更新中です。
    絶対に電源を切らないでください!
    ルーターの再" -"接続まで数分お待ち下さい。システムが更新されることにより、ルーターの設定が変" -"わる可能性があるため、再接続時にあなたのコンピュータのIPアドレスを変更しなけ" -"ればならない場合があります。" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"アップロードされたイメージファイルは、このボードでサポートされているフォー" -"マットではありません。このプラットフォームに適合したイメージファイルかどう" -"か、確認してください。" - -msgid "There are no active leases." -msgstr "リース中のIPアドレスはありません。" - -msgid "There are no pending changes to apply!" -msgstr "適用が未完了の変更はありません!" - -msgid "There are no pending changes to revert!" -msgstr "復元が未完了の変更はありません!" - -msgid "There are no pending changes!" -msgstr "未完了の変更はありません!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"デバイスが設定されていません。\"デバイス設定\"タブで、ネットワークデバイスを" -"選択してください。" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"ルーターにパスワードが設定されていません。Webインターフェースの保護及びSSH" -"サービスを有効にするために、管理者パスワードを設定してください。" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"以下は、sysupgrade中にバックアップ対象に含めるファイルとディレクトリのパター" -"ンリストです。/etc/config/内の設定ファイル及びその他特定の設定ファイルは自動" -"的に保持されます。" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"/etc/rc.localを表示しています。実行したいコマンドを'exit 0'行より上に入力して" -"ください。これらのコマンドはブートプロセスの最後に実行されます。" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"プロバイダからアサインされた、ローカルのエンドポイント アドレスです。通常、" -":2が終端に設定されます。" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"ローカル ネットワーク内のみの DHCPとして使用する" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"スケジュールタスク システムを使用することで、定期的に特定のタスクの実行を行う" -"ことが可能です。" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"このリストは現在システムで動作しているプロセスとそのステータスを表示していま" -"す。" - -msgid "This page allows the configuration of custom button actions" -msgstr "このページでは、ボタンの動作を変更することができます。" - -msgid "This page gives an overview over currently active network connections." -msgstr "このページでは、現在アクティブなネットワーク接続を表示します。" - -msgid "This section contains no values yet" -msgstr "このセクションは未設定です。" - -msgid "Time Synchronization" -msgstr "時刻設定" - -msgid "Time Synchronization is not configured yet." -msgstr "時刻同期機能はまだ設定されていません。" - -msgid "Timezone" -msgstr "タイムゾーン" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"設定を復元するには、作成しておいたバックアップ アーカイブをアップロードしてく" -"ださい。" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "合計" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "トラフィック" - -msgid "Transfer" -msgstr "転送" - -msgid "Transmission Rate" -msgstr "転送レート" - -msgid "Transmit" -msgstr "送信" - -msgid "Transmit Power" -msgstr "電波出力" - -msgid "Transmitter Antenna" -msgstr "送信アンテナ" - -msgid "Trigger" -msgstr "トリガー" - -msgid "Trigger Mode" -msgstr "トリガーモード" - -msgid "Tunnel ID" -msgstr "トンネル ID" - -msgid "Tunnel Interface" -msgstr "トンネルインターフェース" - -msgid "Tunnel Link" -msgstr "トンネルリンク" - -msgid "Tunnel broker protocol" -msgstr "トンネルブローカー プロトコル" - -msgid "Tunnel setup server" -msgstr "トンネルセットアップ サーバー" - -msgid "Tunnel type" -msgstr "トンネルタイプ" - -msgid "Tx-Power" -msgstr "送信電力" - -msgid "Type" -msgstr "タイプ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "UMTSのみ" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USBデバイス" - -msgid "USB Ports" -msgstr "USB ポート" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "ディスパッチできません" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "不明" - -msgid "Unknown Error, password not changed!" -msgstr "不明なエラーです。パスワードは変更されていません!" - -msgid "Unmanaged" -msgstr "Unmanaged" - -msgid "Unmount" -msgstr "アンマウント" - -msgid "Unsaved Changes" -msgstr "保存されていない変更" - -msgid "Unsupported protocol type." -msgstr "サポートされていないプロトコルタイプ" - -msgid "Update lists" -msgstr "リストの更新" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"システムをアップデートする場合、sysupgrade機能に互換性のあるファームウェア イ" -"メージをここにアップロードしてください。\"設定の保持\"を有効にすると、現在の" -"設定を維持してアップデートを行います(互換性のあるファームウェア イメージが必" -"要)。" - -msgid "Upload archive..." -msgstr "アーカイブをアップロード..." - -msgid "Uploaded File" -msgstr "アップロード完了" - -msgid "Uptime" -msgstr "起動時間" - -msgid "Use /etc/ethers" -msgstr "/etc/ethers を使用する" - -msgid "Use DHCP gateway" -msgstr "DHCPゲートウェイを使用する" - -msgid "Use DNS servers advertised by peer" -msgstr "ピアから通知されたDNSサーバーを使用する" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "ISO/IEC 3166 alpha2の国コードを使用します。" - -msgid "Use MTU on tunnel interface" -msgstr "トンネル インターフェースのMTUを設定" - -msgid "Use TTL on tunnel interface" -msgstr "トンネル インターフェースのTTLを設定" - -msgid "Use as external overlay (/overlay)" -msgstr "外部オーバーレイとして使用する (/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "ルート ファイルシステムとして使用する (/)" - -msgid "Use broadcast flag" -msgstr "ブロードキャスト フラグを使用する" - -msgid "Use builtin IPv6-management" -msgstr "ビルトインのIPv6-マネジメントを使用する" - -msgid "Use custom DNS servers" -msgstr "DNSサーバーを手動で設定" - -msgid "Use default gateway" -msgstr "デフォルト ゲートウェイを使用する" - -msgid "Use gateway metric" -msgstr "ゲートウェイ メトリックを使用する" - -msgid "Use routing table" -msgstr "ルーティング テーブルの使用" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"追加 ボタンを押して、新しくエントリーを作成してください。MAC-ア" -"ドレス はそのホストを識別し, IPv4-アドレス には払いだす固定のア" -"ドレスを設定します。また、ホスト名 はそのホストに対して一時的なホス" -"ト名をアサインします。" - -msgid "Used" -msgstr "使用" - -msgid "Used Key Slot" -msgstr "使用するキースロット" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "ユーザー証明書(PEM エンコード)" - -msgid "User key (PEM encoded)" -msgstr "ユーザー秘密鍵(PEM エンコード)" - -msgid "Username" -msgstr "ユーザー名" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "%q上のVLAN" - -msgid "VLANs on %q (%s)" -msgstr "%q上のVLAN (%s)" - -msgid "VPN Local address" -msgstr "VPN ローカルアドレス" - -msgid "VPN Local port" -msgstr "VPN ローカルポート" - -msgid "VPN Server" -msgstr "VPN サーバー" - -msgid "VPN Server port" -msgstr "VPN サーバーポート" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "VPN サーバー証明書 SHA1ハッシュ" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC (CISCO 3000 (またはその他の) VPN)" - -msgid "Vendor" -msgstr "ベンダー" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "DHCPリクエスト送信時のベンダークラスを設定" - -msgid "Verbose" -msgstr "詳細" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "確認" - -msgid "Version" -msgstr "バージョン" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP オープンシステム" - -msgid "WEP Shared Key" -msgstr "WEP 共有キー" - -msgid "WEP passphrase" -msgstr "WEP 暗号フレーズ" - -msgid "WMM Mode" -msgstr "WMM モード" - -msgid "WPA passphrase" -msgstr "WPA 暗号フレーズ" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA暗号化を使用する場合、wpa_supplicant (クライアントモードの場合)又は " -"hostapd (アクセスポイント及びアドホック) がインストールされている必要がありま" -"す。" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "変更を適用中です..." - -msgid "Waiting for command to complete..." -msgstr "コマンド実行中です..." - -msgid "Waiting for device..." -msgstr "デバイスを起動中です..." - -msgid "Warning" -msgstr "警告" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "警告: 再起動すると消えてしまう、保存されていない設定があります!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "帯域幅" - -msgid "WireGuard VPN" -msgstr "WireGuard VPN" - -msgid "Wireless" -msgstr "無線" - -msgid "Wireless Adapter" -msgstr "無線アダプタ" - -msgid "Wireless Network" -msgstr "無線ネットワーク" - -msgid "Wireless Overview" -msgstr "無線LANデバイス一覧" - -msgid "Wireless Security" -msgstr "無線LANセキュリティ" - -msgid "Wireless is disabled or not associated" -msgstr "無線LAN機能が無効になっているか、アソシエーションされていません" - -msgid "Wireless is restarting..." -msgstr "無線LAN機能再起動中..." - -msgid "Wireless network is disabled" -msgstr "無線LAN機能は無効になっています" - -msgid "Wireless network is enabled" -msgstr "無線LAN機能は有効になっています" - -msgid "Wireless restarted" -msgstr "無線LAN機能の再起動" - -msgid "Wireless shut down" -msgstr "無線LAN機能停止" - -msgid "Write received DNS requests to syslog" -msgstr "受信したDNSリクエストをsyslogへ記録します" - -msgid "Write system log to file" -msgstr "システムログをファイルに書き込む" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"ルーターが起動する際のサービスの有効化/無効化を行うことができます。また、変更" -"は再起動後に適用されます。
    警告: \"network\"のような重要なサービ" -"スを無効にすると, ルーターにアクセスできなくなりますので、注意してください。" -"" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "JavaScriptを有効にしない場合、LuCIは正しく動作しません。" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"Internet Explorerが古すぎるため、このページを正しく表示することができません。" -"バージョン 7以上にアップグレードするか、FirefoxやOpera、Safariなど別のブラウ" -"ザーを使用してください。" - -msgid "any" -msgstr "全て" - -msgid "auto" -msgstr "自動" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "ブリッジ" - -msgid "create:" -msgstr "作成:" - -msgid "creates a bridge over specified interface(s)" -msgstr "指定したインターフェースでブリッジを作成します" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "無効" - -msgid "disabled" -msgstr "無効" - -msgid "expired" -msgstr "期限切れ" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"DHCPリース情報を記" -"録するファイル" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "全二重" - -msgid "half-duplex" -msgstr "半二重" - -msgid "help" -msgstr "ヘルプ" - -msgid "hidden" -msgstr "(不明)" - -msgid "hybrid mode" -msgstr "ハイブリッド モード" - -msgid "if target is a network" -msgstr "ターゲットがネットワークの場合" - -msgid "input" -msgstr "入力" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "ローカル DNSファイル" - -msgid "minimum 1280, maximum 1480" -msgstr "最小値 1280、最大値 1480" - -msgid "minutes" -msgstr "分" - -msgid "no" -msgstr "いいえ" - -msgid "no link" -msgstr "リンクなし" - -msgid "none" -msgstr "なし" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "オフ" - -msgid "on" -msgstr "オン" - -msgid "open" -msgstr "オープン" - -msgid "overlay" -msgstr "オーバーレイ" - -msgid "relay mode" -msgstr "リレー モード" - -msgid "routed" -msgstr "routed" - -msgid "server mode" -msgstr "サーバー モード" - -msgid "stateful-only" -msgstr "ステートフルのみ" - -msgid "stateless" -msgstr "ステートレス" - -msgid "stateless + stateful" -msgstr "ステートレス + ステートフル" - -msgid "tagged" -msgstr "tagged" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "不明" - -msgid "unlimited" -msgstr "無期限" - -msgid "unspecified" -msgstr "設定しない" - -msgid "unspecified -or- create:" -msgstr "設定しない -又は- 作成:" - -msgid "untagged" -msgstr "untagged" - -msgid "yes" -msgstr "はい" - -msgid "« Back" -msgstr "« 戻る" diff --git a/package/luci/modules/luci-base/po/ko/base.po b/package/luci/modules/luci-base/po/ko/base.po deleted file mode 100644 index cde3c04c13..0000000000 --- a/package/luci/modules/luci-base/po/ko/base.po +++ /dev/null @@ -1,3848 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-04-03 08:44+0200\n" -"Last-Translator: Weongyo Jeong \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d 분 window, %d 초 간격)" - -msgid "(%s available)" -msgstr "" - -msgid "(empty)" -msgstr "" - -msgid "(no interfaces attached)" -msgstr "" - -msgid "-- Additional Field --" -msgstr "" - -msgid "-- Please choose --" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1 분 부하:" - -msgid "15 Minute Load:" -msgstr "15 분 부하:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5 분 부하:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "DNS query port" -msgstr "DNS query 포트" - -msgid "DNS server port" -msgstr "DNS 서버 포트" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-주소" - -msgid "IPv4-Gateway" -msgstr "" - -msgid "IPv4-Netmask" -msgstr "" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" - -msgid "IPv6-Gateway" -msgstr "" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED 설정" - -msgid "LED Name" -msgstr "LED 이름" - -msgid "MAC-Address" -msgstr "MAC-주소" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"최대 DHCP lease 수" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"최대 EDNS0 패킷 크기" - -msgid "Max. concurrent queries" -msgstr "최대 동시 처리 query 수" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Actions" -msgstr "관리 도구" - -msgid "Activate this network" -msgstr "이 네트워를 활성화합니다" - -msgid "Active IPv4-Routes" -msgstr "" -"Active IPv4-Route 경로" - -msgid "Active IPv6-Routes" -msgstr "" -"Active IPv6-Route 경로" - -msgid "Active Connections" -msgstr "Active 연결수" - -msgid "Active DHCP Leases" -msgstr "Active DHCP 임대 목록" - -msgid "Active DHCPv6 Leases" -msgstr "Active DHCPv6 임대 목록" - -msgid "Ad-Hoc" -msgstr "" - -msgid "Add" -msgstr "추가" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "새로운 인터페이스 추가..." - -msgid "Additional Hosts files" -msgstr "추가적인 Hosts 파일들" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "주소" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "관리" - -msgid "Advanced Settings" -msgstr "고급 설정" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "SSH 암호 인증을 허용합니다" - -msgid "Allow all except listed" -msgstr "" - -msgid "Allow listed only" -msgstr "" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "암호를 이용한 root 접근 허용" - -msgid "Allow the root user to login with password" -msgstr "암호를 이용한 root 사용자 접근을 허용합니다" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "" - -msgid "Antenna 2" -msgstr "" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "" - -msgid "Apply" -msgstr "적용" - -msgid "Applying changes" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "연결된 station 들" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "" - -msgid "Authorization Required" -msgstr "인증이 필요합니다" - -msgid "Auto Refresh" -msgstr "자동 Refresh" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "Available packages" -msgstr "이용 가능한 패키지" - -msgid "Average:" -msgstr "평균:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "뒤로" - -msgid "Back to Overview" -msgstr "개요로 이동" - -msgid "Back to configuration" -msgstr "설정으로 돌아가기" - -msgid "Back to overview" -msgstr "" - -msgid "Back to scan results" -msgstr "" - -msgid "Backup / Flash Firmware" -msgstr "Firmware 백업 / Flash" - -msgid "Backup / Restore" -msgstr "백업 / 복구" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"아래는 백업할 파일 목록입니다. 이 목록은 opkg 이 수정되었다고 판단한 파일, " -"필수 기본 파일 그리고 사용자가 패턴 정의로 백업하도록 지정한 것로 이루어져 있" -"습니다." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "" - -msgid "Bridge interfaces" -msgstr "Bridge 인터페이스" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "부팅시 활성화" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "버퍼된 양" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Build/distribution 지정 feed 목록입니다. 이 파일의 내용은 sysupgrade 시 초기" -"화됩니다." - -msgid "Buttons" -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU 사용량 (%)" - -msgid "Cancel" -msgstr "" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "Changes" -msgstr "변경 사항" - -msgid "Changes applied." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "장비 접근을 위한 관리자 암호를 변경합니다" - -msgid "Channel" -msgstr "" - -msgid "Check" -msgstr "" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"이 인터페이스에 할당하고자 하는 firewall zone 을 선택하세요. 연결된 zone 으로" -"부터 인터페이스를 제거하고 싶다면 unspecified 를 선택하세요. 새로" -"운 zone 을 정의하고 인터페이스 연결을 원한다면 create 항목을 입력하" -"세요." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"이 무선랜 인터페이스와 연결하고자 하는 네트워크(들)을 선택하세요. 혹은 새로" -"운 네트워크를 정의할려면 create 을 작성하세요." - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"현재 설정 파일에 대한 tar 아카이브 다운로드를 원한다면 \"아카이브 생성\" 버튼" -"을 클릭하세요. Firmware 의 초기 설정 reset 을 원한다면 \"Reset 하기\" 를 클" -"릭하세요. (squashfs 이미지들만 가능)." - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "DHCP 요청시 전송할 Client ID" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "목록 닫기..." - -msgid "Collecting data..." -msgstr "Data 를 수집중입니다..." - -msgid "Command" -msgstr "명령어" - -msgid "Common Configuration" -msgstr "공통 설정" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "설정" - -msgid "Configuration applied." -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Confirmation" -msgstr "다시 확인" - -msgid "Connect" -msgstr "연결" - -msgid "Connected" -msgstr "연결 시간" - -msgid "Connection Limit" -msgstr "" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "연결" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "Firewall-zone 생성 / 할당" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "임의의 인터페이스" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"개인이 운영하는 feed 같은 정보를 입력할 수 있는 custom feed 목록입니다. 이 파" -"일은 sysupgrade 시 입력된 정보가 유지됩니다." - -msgid "Custom feeds" -msgstr "Custom feed 들" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"원한다면 장치에 부착된 LED 들의 " -"행동을 마음대로 변경할 수 있습니다." - -msgid "DHCP Leases" -msgstr "DHCP 임대 정보" - -msgid "DHCP Server" -msgstr "DHCP 서버" - -msgid "DHCP and DNS" -msgstr "DHCP 와 DNS" - -msgid "DHCP client" -msgstr "DHCP client" - -msgid "DHCP-Options" -msgstr "DHCP-옵션들" - -msgid "DHCPv6 Leases" -msgstr "DHCPv6 임대 정보" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "기본 상태" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"추가적인 DHCP 옵션을 정의합니다. 예를 들어 " -"\"6,192.168.2.1,192.168.2.2\" 는 client 에게 다른 DNS 서버를 세" -"팅하도록 권고할 수 있습니다." - -msgid "Delete" -msgstr "삭제" - -msgid "Delete this network" -msgstr "이 네트워크를 삭제합니다" - -msgid "Description" -msgstr "설명" - -msgid "Design" -msgstr "디자인" - -msgid "Destination" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Device Configuration" -msgstr "장치 설정" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "진단" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "비활성화" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"이 인터페이스에 대해 DHCP 기능을 비활성합니다." - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "" - -msgid "Distance to farthest network member in meters." -msgstr "" - -msgid "Distribution feeds" -msgstr "Distribution feed 들" - -msgid "Diversity" -msgstr "" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq 는 NAT 방화벽을 위" -"한 DHCP-서버와 " -"DNS-Forwarder 기능을 제공합니다." - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Download and install package" -msgstr "패키지 다운로드 후 설치" - -msgid "Download backup" -msgstr "백업 다운로드" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear 는 SSH network shell 접근과 " -"SCP 서버 기능을 제공합니다" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"동적으로 DHCP 주소를 client 에게 할당합니다. 만약 비활성화시, static lease " -"가 설정된 client 만 주소 제공이 이루어집니다." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "수정" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "이 인터페이스를 수정합니다" - -msgid "Edit this network" -msgstr "이 네트워크를 수정합니다" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "활성화" - -msgid "Enable STP" -msgstr "STP 활성화" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "NTP client 활성화" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "TFTP 서버 활성화" - -msgid "Enable VLAN functionality" -msgstr "VLAN 기능 활성화" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "활성/비활성" - -msgid "Enabled" -msgstr "활성화됨" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "이 bridge 에 Spanning Tree Protocol 활성화합니다" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "암호화" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "" - -msgid "Ethernet Switch" -msgstr "Ethernet 스위치" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "만료 시간" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "임대한 주소의 유효 시간. 최소값은 2 분 (2m) 입니다." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "외부 system log 서버" - -msgid "External system log server port" -msgstr "외부 system log 서버 포트" - -msgid "External system log server protocol" -msgstr "외부 system log 서버 프로토콜" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Filter" -msgstr "필터" - -msgid "Filter private" -msgstr "" - -msgid "Filter useless" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "네트워크 검색 및 연결합니다" - -msgid "Find package" -msgstr "패키지 찾기" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "방화벽" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "방화벽 설정" - -msgid "Firewall Status" -msgstr "방화벽 상태" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Firmware 버전" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "이미지로 Flash..." - -msgid "Flash new firmware image" -msgstr "새로운 firmware 이미지로 flash" - -msgid "Flash operations" -msgstr "Flash 작업" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "강제하기" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "다른 DHCP 서버가 탐지되더라도 이 네트워크에 DHCP 를 강제합니다." - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "이용 가능한 양" - -msgid "Free space" -msgstr "여유 공간" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "기본 설정" - -msgid "General Setup" -msgstr "기본 설정" - -msgid "General options for opkg" -msgstr "opkg 명령의 기본 옵션들" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "아카이브 생성" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "암호 설정 하기" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"여기서 호스트이름이나 시간대와 같은 기본적인 장비 설정을 할 수 있습니다." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"아래에 SSH public-key 인증을 위한 공개 SSH-Key 들 (한 줄당 한개) 를 입력할 " -"수 있습니다." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "ESSID 숨기기" - -msgid "Host" -msgstr "호스트" - -msgid "Host entries" -msgstr "호스트 목록들" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Host-IP 혹은 Network" - -msgid "Hostname" -msgstr "호스트이름" - -msgid "Hostname to send when requesting DHCP" -msgstr "DHCP 요청시 전달할 호스트이름" - -msgid "Hostnames" -msgstr "호스트이름" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP 주소" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "IPv4 방화벽" - -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN 상태" - -msgid "IPv4 address" -msgstr "IPv4 주소" - -msgid "IPv4 and IPv6" -msgstr "IPv4 와 IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-주소" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 방화벽" - -msgid "IPv6 Neighbours" -msgstr "IPv6 Neighbour 들" - -msgid "IPv6 Settings" -msgstr "IPv6 설정" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN 상태" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-주소" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "체크하지 않을 경우, 기본 route 가 설정되지 않습니다" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "체크하지 않을 경우, 사용하도록 권장된 DNS 주소는 무시됩니다" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "/etc/hosts 파일 무시" - -msgid "Ignore interface" -msgstr "인터페이스 무시" - -msgid "Ignore resolve file" -msgstr "resolve 파일 무시" - -msgid "Image" -msgstr "이미지" - -msgid "In" -msgstr "In" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "Initscript 들" - -msgid "Install" -msgstr "설치" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "설치된 패키지" - -msgid "Interface" -msgstr "인터페이스" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "인터페이스 설정" - -msgid "Interface Overview" -msgstr "인터페이스 개요" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface is shutting down..." -msgstr "" - -msgid "Interface name" -msgstr "인터페이스 이름" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interface reconnected" -msgstr "" - -msgid "Interface shut down" -msgstr "" - -msgid "Interfaces" -msgstr "인터페이스" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "" - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "네트워크 연결" - -msgid "Join Network: Wireless Scan" -msgstr "네트워크 연결: 무선랜 스캔 결과" - -msgid "Joining Network: %q" -msgstr "네트워크 연결중: %q" - -msgid "Keep settings" -msgstr "설정 유지" - -msgid "Kernel Log" -msgstr "Kernel 로그" - -msgid "Kernel Version" -msgstr "Kernel 버전" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "언어" - -msgid "Language and Style" -msgstr "언어와 스타일" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "임대 시간" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "남아있는 임대 시간" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "제한" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" -"DNS 를 제공하기로한 subnet 인터페이스들에 대해서만 DNS 서비스를 제공합니다." - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"지정한 인터페이스에만 listening 하며 미지정시 모든 인터페이스에 적용됩니다" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "부하" - -msgid "Load Average" -msgstr "부하 평균" - -msgid "Loading" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Local 시작 프로그램" - -msgid "Local Time" -msgstr "지역 시간" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Log output 레벨" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "로그인" - -msgid "Logout" -msgstr "로그아웃" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "임대되는 주소의 최소 시작점. (네트워크 주소로 부터의 offset)" - -msgid "MAC-Address" -msgstr "MAC-주소" - -msgid "MAC-Address Filter" -msgstr "MAC-주소 필터" - -msgid "MAC-Filter" -msgstr "MAC-필터" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Active DHCP lease 건의 최대 허용 숫자" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "허용되는 최대 동시 DNS query 수" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "허용된 최대 EDNS.0 UDP 패킷 크기" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "임대될 수 있는 주소의 최대 숫자." - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "메모리" - -msgid "Memory usage (%)" -msgstr "메모리 사용량 (%)" - -msgid "Metric" -msgstr "" - -msgid "Minimum hold time" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Model" -msgstr "모델" - -msgid "Modem device" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "NTP 서버 목록" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "이름" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "네트워크" - -msgid "Network Utilities" -msgstr "네트워크 유틸리티" - -msgid "Network boot image" -msgstr "네트워크 boot 이미지" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "이 table 에는 정의된 chain 이 없음" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "이용 가능한 정보가 없습니다" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "암호 설정을 해주세요!" - -msgid "No rules in this chain" -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "노이즈" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "연결되지 않음" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "OPKG-Configuration" -msgstr "OPKG-설정" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"이 페이지에서는 네트워크 인터페이스를 설정할 수 있습니다. \"Bridge 인터페이스" -"\" 항목을 클릭하고, 공백으로 구분된 네트워크 인터페이스들의 이름을 적는 방식" -"으로 여러 인터페이스들을 bridge 할 수 있습니다. 또한 VLAN 표기법인 INTERFACE.VLANNR " -"(예: eth0.1) 를 사용하실 수 " -"있습니다." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "목록 열람..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "동작 주파수" - -msgid "Option changed" -msgstr "변경된 option" - -msgid "Option removed" -msgstr "삭제된 option" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "MAC 주소 덮어쓰기" - -msgid "Override MTU" -msgstr "MTU 덮어쓰기" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "기본 인터페이스 이름을 덮어씁니다" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Client 에 전달될 netmask 를 덮어 쓸 수 있습니다. 보통 해당 값은 제공되는 " -"subnet 에 따라 자동 계산됩니다." - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "개요" - -msgid "Owner" -msgstr "" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "패키지 이름" - -msgid "Packets" -msgstr "" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "암호" - -msgid "Password authentication" -msgstr "암호 인증" - -msgid "Password of Private Key" -msgstr "" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "최고치:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "재부팅하기" - -msgid "Perform reset" -msgstr "Reset 하기" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Physical 설정" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Pkts." - -msgid "Please enter your username and password." -msgstr "사용자이름과 암호를 입력해 주세요." - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "포트" - -msgid "Port status:" -msgstr "포트 상태:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Processes" -msgstr "프로세스" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "프로토콜" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "새로운 네트워크를 추가합니다" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"/etc/ethers 파일을 읽어 DHCP-서버를 설정합니다" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"정말로 네트워크를 shutdown 하시겠습니까?\\n이 인터페이스를 통해 연결하였다면 " -"접속이 끊어질 수 있습니다." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "정말 프로토콜 변경을 원하세요?" - -msgid "Realtime Connections" -msgstr "실시간 연결수" - -msgid "Realtime Graphs" -msgstr "실시간 그래프" - -msgid "Realtime Load" -msgstr "실시간 부하" - -msgid "Realtime Traffic" -msgstr "실시간 트래픽" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "재부팅" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "장치의 운영체제를 재부팅합니다" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "이 인터페이스를 재연결합니다" - -msgid "Reconnecting interface" -msgstr "인터페이스 재연결중입니다" - -msgid "References" -msgstr "" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "제거" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "특정 ISP 들에 요구됨. 예: Charter (DOCSIS 3 기반)" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "초기화" - -msgid "Reset Counters" -msgstr "Counter 초기화" - -msgid "Reset to defaults" -msgstr "초기값으로 reset" - -msgid "Resolv and Hosts Files" -msgstr "Resolv 와 Hosts 파일" - -msgid "Resolve file" -msgstr "Resolve 파일" - -msgid "Restart" -msgstr "재시작" - -msgid "Restart Firewall" -msgstr "방화벽 재시작" - -msgid "Restore backup" -msgstr "백업 복구" - -msgid "Reveal/hide password" -msgstr "암호 보이기/숨기기" - -msgid "Revert" -msgstr "변경 취소" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "TFTP 를 통해 제공되는 파일들의 root 디렉토리" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "라우터 암호" - -msgid "Routes" -msgstr "Route 경로" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Route 경로는 특정 호스트 혹은 네트워크가 사용해야 할 인터페이스와 gateway 정" -"보를 나타냅니다." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "저장" - -msgid "Save & Apply" -msgstr "저장 & 적용" - -msgid "Save & Apply" -msgstr "저장 & 적용" - -msgid "Scan" -msgstr "Scan 하기" - -msgid "Scheduled Tasks" -msgstr "작업 관리" - -msgid "Section added" -msgstr "추가된 section" - -msgid "Section removed" -msgstr "삭제된 section" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "서버 설정" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "서비스" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "현재 백업 파일 목록 보기" - -msgid "Shutdown this interface" -msgstr "이 인터페이스를 정지합니다" - -msgid "Shutdown this network" -msgstr "이 네트워크를 shutdown 합니다" - -msgid "Signal" -msgstr "신호" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Size" - -msgid "Size (.ipk)" -msgstr "크기 (.ipk)" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "" - -msgid "Skip to navigation" -msgstr "" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "소프트웨어" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "순서" - -msgid "Source" -msgstr "" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Dropbear instance 의 listening 포트를 지정합니다" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "시작" - -msgid "Start priority" -msgstr "시작 우선순위" - -msgid "Startup" -msgstr "시작 프로그램" - -msgid "Static IPv4 Routes" -msgstr "Static IPv4 Route 경로" - -msgid "Static IPv6 Routes" -msgstr "Static IPv6 Route 경로" - -msgid "Static Leases" -msgstr "Static Lease 들" - -msgid "Static Routes" -msgstr "Static Route 경로" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Static Lease 는 DHCP client 에게 고정된 IP 주소와 symbolic hostname 을 할당" -"할 때 사용됩니다. 이 기능은 또한 지정된 host 에 대해서만 주소 임대를 하도록 " -"하는 non-dynamic 인터페이스 설정에도 사용됩니다." - -msgid "Status" -msgstr "상태" - -msgid "Stop" -msgstr "정지" - -msgid "Strict order" -msgstr "Strict order" - -msgid "Submit" -msgstr "제출하기" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "스위치" - -msgid "Switch %q" -msgstr "스위치 %q" - -msgid "Switch %q (%s)" -msgstr "스위치 %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "스위치 VLAN" - -msgid "Switch protocol" -msgstr "프로토콜 변경" - -msgid "Sync with browser" -msgstr "브라우저 시간대로 동기화" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "시스템" - -msgid "System Log" -msgstr "시스템 로그" - -msgid "System Properties" -msgstr "시스템 등록 정보" - -msgid "System log buffer size" -msgstr "System log 버퍼 크기" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "TFTP 설정" - -msgid "TFTP server root" -msgstr "TFTP 서버 root" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"장치 설정 섹션은 channel, transmit power 혹은 antenna 선택과 같은 물" -"리적인 설정 내용을 다룹니다. 이 설정은 (만약 radio 하드웨어가 multi-SSID 지" -"원이 가능하다면) 정의된 모든 무선 네트워크에 공통적으로 적용됩니다. 암호화 혹" -"은 operation mode 와 같은 각 네트워크 설정들은 인터페이스 설정에서 " -"다루어집니다." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "다음의 변경 사항들이 취소되었습니다" - -msgid "The following rules are currently active on this system." -msgstr "다음의 rule 들이 현재 이 시스템에 적용 중입니다." - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"이 장치의 네트워크 포트들은 컴퓨터끼리 직접 통신을 할 수 있도록 여러 VLAN 으로 구성될 수 있습니다. " -"VLAN은 종종 다른 네트워크 " -"segment 들을 분리하는데 사용되기도 합니다. 한 개의 uplink 포트가 인터넷에 연" -"결되어 있고 나머지 포트들은 local 네트워크로 연결되는 구성에 자주 사용됩니다." - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no pending changes to apply!" -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"이 공유기에 암호 설정이 되지 않았습니다. 웹 UI 와 SSH 부분을 보호하기 위해서 " -"꼭 root 암호를 설정해 주세요." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"이것은 sysupgrade 시 유지되어야 하는 파일과 디렉토리 목록에 대한 shell glob " -"패턴들입니다. /etc/config/ 하위의 수정된 파일이나 특정 다른 설정들은 자동적" -"으로 변경 사항이 보존됩니다." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"이것은 /etc/rc.local 파일의 내용입니다. 여기에 ('exit 0' 앞에) 부팅 절차가 " -"끝날 때 실행하고자 하는 명령들을 삽입하세요." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "아래는 예정된 작업들이 정의된 시스템 crontab 내용입니다." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"이 목록은 현재 실행중인 시스템 프로세스와 해당 상태에 대한 개요를 보여줍니다." - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "이 페이지는 현재 active 상태인 네트워크 연결을 보여줍니다." - -msgid "This section contains no values yet" -msgstr "이 section 은 아직 입력된 값이 없습니다" - -msgid "Time Synchronization" -msgstr "시간 동기화" - -msgid "Time Synchronization is not configured yet." -msgstr "시간 동기화가 아직 설정되지 않았습니다." - -msgid "Timezone" -msgstr "시간대" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"설정 파일을 복구하고자 한다면 이전에 백업하신 아카이브 파일을 여기로 업로드" -"할 수 있습니다." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "총 이용 가능한 양" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "트래픽" - -msgid "Transfer" -msgstr "전송량" - -msgid "Transmission Rate" -msgstr "" - -msgid "Transmit" -msgstr "" - -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" -msgstr "" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "유형" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "알수없음" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "적용 안된 변경 사항" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"실행중인 firmware 변경을 하고자 한다면 여기에 sysupgrade 호환성이 유지되는 이" -"미지를 업로드하세요. 현재의 설정을 유지하고자 한다면 \"설정 유지\" 를 체크하" -"세요. (이를 지원하는 firmware 이미지 필요)" - -msgid "Upload archive..." -msgstr "아카이브 업로드..." - -msgid "Uploaded File" -msgstr "Uploaded File" - -msgid "Uptime" -msgstr "가동 시간" - -msgid "Use /etc/ethers" -msgstr "/etc/ethers 사용" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "Peer 가 권장한 DNS 서버 사용" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Broadcast flag 사용" - -msgid "Use builtin IPv6-management" -msgstr "자체 내장 IPv6-관리 기능 사용" - -msgid "Use custom DNS servers" -msgstr "임의의 DNS 서버 사용" - -msgid "Use default gateway" -msgstr "Default gateway 사용" - -msgid "Use gateway metric" -msgstr "Gateway metric 사용" - -msgid "Use routing table" -msgstr "Routing table 사용" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"새로운 항목을 추가하기 위해서는 추가 버튼을 사용하세요. MAC-주소" -"는 host 를 나타내며, IPv4-주소는 사용할 고정 주소를 나타내고, " -"요청하는 host 에 대해 hostname 이 symbolic name 으로 부여됩니다. 선" -"택 사항인 임대 시간은 해당 host 에만 해당되는 시각을 설정하는데 사용" -"될 수 있습니다. 예를 들어 12h, 3d 혹은 infinite 값들이 가능합니다." - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "사용자이름" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "VLAN 설정: %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "DHCP 요청시 전송할 Vendor Class" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "버전" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "WMM Mode" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "변경 사항이 적용되기를 기다리는 중입니다..." - -msgid "Waiting for command to complete..." -msgstr "실행한 명령이 끝나기를 기다리는 중입니다..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "무선" - -msgid "Wireless Adapter" -msgstr "" - -msgid "Wireless Network" -msgstr "무선랜 네트워크" - -msgid "Wireless Overview" -msgstr "무선랜 개요" - -msgid "Wireless Security" -msgstr "무선랜 보안" - -msgid "Wireless is disabled or not associated" -msgstr "무선이 비활성화되어 있거나 연결되어 있지 않습니다" - -msgid "Wireless is restarting..." -msgstr "무선랜이 재시작중입니다..." - -msgid "Wireless network is disabled" -msgstr "무선 네트워크가 꺼져 있음" - -msgid "Wireless network is enabled" -msgstr "무선 네트워크가 켜져 있음" - -msgid "Wireless restarted" -msgstr "무선랜이 재시작되었습니다" - -msgid "Wireless shut down" -msgstr "무선랜이 shutdown 되었습니다" - -msgid "Write received DNS requests to syslog" -msgstr "받은 DNS 요청 내용을 systlog 에 기록합니다" - -msgid "Write system log to file" -msgstr "System log 출력 파일 경로" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"이 메뉴에서 설치된 init script 를 활성화/비활성화 할 수 있습니다. 변경 사항" -"은 장치가 재부팅 될 때 적용되게 됩니다.
    경고: 만약 \"network\" " -"와 같은 중요 init script 를 비활성화 할 경우, 장치에 접속을 못하실 수 있습니" -"다!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "지정한 인터페이스(들)로 구성된 bridge 를 생성합니다" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "만료됨" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"할당된 DHCP-lease " -"정보가 저장되는 파일" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "Target 이 네트워크일 경우" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "local DNS 파일" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "link 없음" - -msgid "none" -msgstr "" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "unspecified -혹은- create:" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "" - -#~ msgid "Leasetime" -#~ msgstr "임대 시간" diff --git a/package/luci/modules/luci-base/po/ms/base.po b/package/luci/modules/luci-base/po/ms/base.po deleted file mode 100644 index 74d3e19d7f..0000000000 --- a/package/luci/modules/luci-base/po/ms/base.po +++ /dev/null @@ -1,3855 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-07 17:57+1000\n" -"PO-Revision-Date: 2010-05-07 17:57+1000\n" -"Last-Translator: Wai Chet Teow \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "" - -msgid "(%s available)" -msgstr "(%s sedia)" - -msgid "(empty)" -msgstr "" - -msgid "(no interfaces attached)" -msgstr "(tiada interface dipasang)" - -msgid "-- Additional Field --" -msgstr "-- Gelanggang Tambahan --" - -msgid "-- Please choose --" -msgstr "-- Sila pilih --" - -msgid "-- custom --" -msgstr "-- memperibadi --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "" - -msgid "15 Minute Load:" -msgstr "" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "" - -msgid "DNS server port" -msgstr "" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Alamat" - -msgid "IPv4-Gateway" -msgstr "IPv4-Pintu gerbang" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "IPv6 Host-Alamat atau Rangkaian (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Pintu gerbang" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Konfigurasi lampu LED" - -msgid "LED Name" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-Alamat" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "Pusat akses" - -msgid "Action" -msgstr "Aksi" - -msgid "Actions" -msgstr "Aksi" - -msgid "Activate this network" -msgstr "" - -msgid "Active IPv4-Routes" -msgstr "Aktive IPv4-Routen" - -msgid "Active IPv6-Routes" -msgstr "Aktif IPv6-Laluan" - -msgid "Active Connections" -msgstr "Sambungan Aktif" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Tambah" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "" - -msgid "Additional Hosts files" -msgstr "" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "Pentadbiran" - -msgid "Advanced Settings" -msgstr "Tetapan Lanjutan" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Membenarkan pengesahan kata laluan SSH" - -msgid "Allow all except listed" -msgstr "Izinkan semua kecualian yang disenaraikan" - -msgid "Allow listed only" -msgstr "Izinkan senarai saja" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "" - -msgid "Apply" -msgstr "Melaksanakan" - -msgid "Applying changes" -msgstr "Melaksanakan perubahan" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Associated Stesen" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Authentifizierung" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Pengesahan" - -msgid "Authorization Required" -msgstr "Otorisasi Diperlukan" - -msgid "Auto Refresh" -msgstr "" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Boleh didapati" - -msgid "Available packages" -msgstr "" - -msgid "Average:" -msgstr "" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Back to Overview" -msgstr "" - -msgid "Back to configuration" -msgstr "" - -msgid "Back to overview" -msgstr "Kembali ke ikhtisar" - -msgid "Back to scan results" -msgstr "Kembali ke keputusan scan" - -msgid "Backup / Flash Firmware" -msgstr "" - -msgid "Backup / Restore" -msgstr "Sandaran / Mengembalikan" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "Bridge" - -msgid "Bridge interfaces" -msgstr "Antara Muka Bridge" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Butang" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Penggunaan CPU (%)" - -msgid "Cancel" -msgstr "Batal" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Rantai" - -msgid "Changes" -msgstr "Laman" - -msgid "Changes applied." -msgstr "Laman diterapkan." - -msgid "Changes the administrator password for accessing the device" -msgstr "" - -msgid "Channel" -msgstr "Saluran" - -msgid "Check" -msgstr "" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Jumlah disemak " - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "Pilih zon firewall yang anda ingin tetapkan untuk antar muka ini." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" - -#, fuzzy -msgid "Client" -msgstr "Pelanggan" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "Perintah" - -msgid "Common Configuration" -msgstr "" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Konfigurasi" - -msgid "Configuration applied." -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Confirmation" -msgstr "Pengesahan" - -msgid "Connect" -msgstr "" - -msgid "Connected" -msgstr "" - -msgid "Connection Limit" -msgstr "Sambungan Batas" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "Kod negara" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "Buat / Menetapkan dinding api-zon" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "Mengkustomisasi perilaku peranti LED jika mungkin." - -msgid "DHCP Leases" -msgstr "" - -msgid "DHCP Server" -msgstr "" - -msgid "DHCP and DNS" -msgstr "" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "DHCP-Pilihan" - -msgid "DHCPv6 Leases" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Padam" - -msgid "Delete this network" -msgstr "" - -msgid "Description" -msgstr "Keterangan" - -msgid "Design" -msgstr "Disain" - -msgid "Destination" -msgstr "Tempat tujuan" - -msgid "Device" -msgstr "Alat" - -msgid "Device Configuration" -msgstr "" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Jarak Optimasi" - -msgid "Distance to farthest network member in meters." -msgstr "Jarak ke rangkaian terjauh ahli dalam meter." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Keanekaragaman" - -# Nur für NAT-Firewalls? -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq adalah gabungan DHCP-Pelayan danDNS-" -"Forwarder untuk NAT " -"firewall" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domain diperlukan" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "Jangan hantar permintaan DNS tanpa nama DNS" - -msgid "Download and install package" -msgstr "Turun dan memasang pakej" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear menawarkan SSH kulit rangkaian aksesdan pelayan yang terintegrasi." - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "Dinamik DHCP" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-Kaedah" - -msgid "Edit" -msgstr "Sunting" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable STP" -msgstr "Mengaktifkan STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Aktifkan spanning Tree Protokol di jambatan ini" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "Enkripsi" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "Kesalahan" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet Adapter" - -msgid "Ethernet Switch" -msgstr "Ethernet Beralih" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Fail Sistem" - -msgid "Filter" -msgstr "Penapis" - -msgid "Filter private" -msgstr "Penapis swasta" - -msgid "Filter useless" -msgstr "Penapis tak berguna" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "Cari pakej" - -msgid "Finish" -msgstr "Selesai" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Tetapan Firewall" - -msgid "Firewall Status" -msgstr "Status Firewall" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Firmware Flash" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "Paksa" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "Fragmentasi Ambang" - -msgid "Frame Bursting" -msgstr "Bingkai Meletup" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "Setup Umum" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "Menuju ke halaman konfigurasi yang relevan" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Kawalan" - -msgid "Hang Up" -msgstr "Menutup" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Di sini anda boleh mengkonfigurasi aspek asas peranti anda seperti nama host " -"atau zon." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "Menyembunyikan ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Entri host" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "IP host atau rangkaian" - -msgid "Hostname" -msgstr "Nama Host" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Nama Host" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Alamat IP" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 WAN Status" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "Konfigurasi IPv6" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Identiti" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Jika memori fizikal anda tidak cukup data yang boleh digunakan sementara " -"menukar ke peranti-penukar yang dihasilkan dalam jumlah RAM berguna yang " -"lebih tinggi. Berhati-hatilah bahawa penukaran data adalah proses yang " -"sangat lambat kerana peranti-penukar tidak boleh diakses dengan datarates " -"yang tinggi pada RAM." - -msgid "Ignore /etc/hosts" -msgstr "Mengabaikan /etc/hosts" - -msgid "Ignore interface" -msgstr "Abaikan antara muka" - -msgid "Ignore resolve file" -msgstr "Abaikan fail yang selesai" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "Masuk" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "" - -msgid "Install" -msgstr "Memasang" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface is shutting down..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interface reconnected" -msgstr "" - -msgid "Interface shut down" -msgstr "" - -msgid "Interfaces" -msgstr "Interface" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "Tak Sah" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Username dan / atau password tak sah! Sila cuba lagi." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Tampak bahawa anda cuba untuk flash fail gambar yang tidak sesuai dengan " -"memori flash, sila buat pengesahan pada fail gambar!" - -msgid "JavaScript required!" -msgstr "" - -#, fuzzy -msgid "Join Network" -msgstr "Gabung Rangkaian" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "Log Kernel" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "Kunci" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "Tamatkan" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "Bahasa" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "Sewa fail" - -msgid "Leasetime remaining" -msgstr "Sisa masa penyewaan" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "Batas" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Link Pada" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Load" - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Masa Tempatan" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Soalan tempatan" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "Log soalan" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Login" - -msgid "Logout" -msgstr "Logout" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "Penapis alamat MAC" - -msgid "MAC-Filter" -msgstr "Penapis MAC" - -msgid "MAC-List" -msgstr "Senarai MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -#, fuzzy -msgid "Maximum hold time" -msgstr "Memegang masa maksimum" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Memori" - -msgid "Memory usage (%)" -msgstr "Penggunaan Memori (%)" - -msgid "Metric" -msgstr "Metrik" - -#, fuzzy -msgid "Minimum hold time" -msgstr "Memegang masa minimum" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mode" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Alat modem" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Mount Point" - -msgid "Mount Points" -msgstr "Mount Points" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Mount Points menentukan di mana titik peranti memori akan melekat pada fail " -"sistem" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Mounted fail sistems" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Nama" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "Nama rangkaian baru" - -msgid "Navigation" -msgstr "Navigation" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "Rangkaian" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "Kemudian »" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Tiada rantai dalam jadual ini" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "Tidak ada peraturan dalam rantai ini" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "Kebisingan" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "Baik" - -msgid "OPKG-Configuration" -msgstr "OPKG-Konfigurasi" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Pada halaman ini anda boleh mengkonfigurasi antara muka rangkaian. Anda " -"boleh menjembatani beberapa antara muka dengan menanda jambatan antara muka " -"gelanggang dan masukkan beberapa nama antara muka rangkaian dipisahkan " -"dengan ruang. Anda juga boleh menggunakan antara muka VLAN notasi. Seperti " -"eth0.1." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Pilihan" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "Keluar" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Keseluruhan" - -msgid "Owner" -msgstr "Pemilik" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "Pengkapsulan PPPoA" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Nama pakej" - -msgid "Packets" -msgstr "Paket" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "Kata laluan" - -msgid "Password authentication" -msgstr "Kata laluan pengesahan" - -msgid "Password of Private Key" -msgstr "Kata Laluan Kunci Swasta" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Path ke CA-Sijil" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Path ke Kunci Swasta" - -msgid "Path to executable which handles the button event" -msgstr "Path ke eksekusi yang mengendalikan acara butang" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Lakukan reboot" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Tetapan Fizikal" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Pkts." - -msgid "Please enter your username and password." -msgstr "Sila masukkan username dan kata laluan anda." - -msgid "Policy" -msgstr "Dasar" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Mencegah komunikasi sesama Pelanggan" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Teruskan" - -msgid "Processes" -msgstr "Proses" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokol" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS-Ambang" - -# Ein / Aus, eingehend / ausgehend? -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "Baca /etc/ethers untuk mengkonfigurasikan DHCP-Server" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Reboot" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "Reboot sistem operasi peranti anda" - -msgid "Receive" -msgstr "Menerima" - -msgid "Receiver Antenna" -msgstr "Antena Penerima" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "Reconnecting interface" -msgstr "" - -msgid "References" -msgstr "Rujukan" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Menghapuskan" - -msgid "Repeat scan" -msgstr "Ulangi scan" - -msgid "Replace entry" -msgstr "Tukar entri" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Reset Loket" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "Restart Firewall" - -msgid "Restore backup" -msgstr "Kembalikan sandaran" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "Kembali" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "Laluan" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Laluan menentukan di mana interface dan gateway host atau rangkaian tertentu " -"yang boleh dicapai." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Simpan" - -msgid "Save & Apply" -msgstr "Simpan & Melaksanakan" - -msgid "Save & Apply" -msgstr "" - -msgid "Scan" -msgstr "Scan" - -msgid "Scheduled Tasks" -msgstr "Tugas Jadual" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "Rujuk \"mount\" laman manual untuk detail" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Pisahkan Pelanggan" - -msgid "Server Settings" -msgstr "" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "Perkhidmatan" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Shutdown this network" -msgstr "" - -msgid "Signal" -msgstr "Isyarat" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Saiz" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Skip" - -msgid "Skip to content" -msgstr "Skip ke kadar" - -msgid "Skip to navigation" -msgstr "Skip ke navigation" - -msgid "Slot time" -msgstr "Slot masa" - -msgid "Software" -msgstr "Perisian" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "" - -msgid "Source" -msgstr "Sumber" - -msgid "Source routing" -msgstr "" - -#, fuzzy -msgid "Specifies the button state to handle" -msgstr "Menentukan state butang untuk melaku" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Mula" - -msgid "Start priority" -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Laluan IPv4 Statik" - -msgid "Static IPv6 Routes" -msgstr "Laluan IPv6 Statik" - -msgid "Static Leases" -msgstr "Statische Einträge" - -msgid "Static Routes" -msgstr "Laluan Statik" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "Order Ketat" - -msgid "Submit" -msgstr "Menyerahkan" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Beralih" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "Sistem" - -msgid "System Log" -msgstr "Log Sistem" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -# same as RX -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Meja" - -msgid "Target" -msgstr "Sasaran" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Menamatkan" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Karakter yang diizinkan adalah: A-Z, a-z, " -"0-9 dan _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "Fail peranti memori atau partisyen, (contohnya: /dev/sda)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "Failsistem yang digunakan untuk memformat memori (contohnya: ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Fail gambar flash telah di-upload. Berikut ini adalah checksum dan saiz fail " -"yang berdaftar, membandingkannya dengan fail gambar asli untuk memastikan " -"integriti data.
    Klik butang terus di bawah untuk memulakan prosedur " -"flash." - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "Laman berikut telah kembali" - -msgid "The following rules are currently active on this system." -msgstr "Peraturan berikut sedang aktif pada sistem ini." - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Sistem ini sekarang mula flash.
    JANGAN TUTUP KUASA UNTUK PERANTI!
    Tunggu beberapa minit sehingga anda cuba untuk menyambung kembali. Mungkin " -"anda perlu mengemas kini alamat komputer anda untuk mencapai peranti lagi, " -"bergantung pada tetapan anda." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Format Fail gambar yang diupload tidak disokongkan. Pastikan anda memilih " -"fail format gambar yang generik untuk platform anda." - -msgid "There are no active leases." -msgstr "" - -msgid "There are no pending changes to apply!" -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "Ini adalah DHCP hanya dalam rangkaian tempatan." - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Ini adalah crontab sistem di mana tugas-tugas yang dijadualkan boleh " -"ditakrifkan." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Senarai ini memberikan gambaran lebih pada proses sistem yang sedang " -"berjalan dan statusnya." - -msgid "This page allows the configuration of custom button actions" -msgstr "Laman ini membolehkan konfigurasi butang tindakan peribadi" - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Laman ini memberikan gambaran lebih dari saat ini sambungan rangkaian yang " -"aktif." - -msgid "This section contains no values yet" -msgstr "Bahagian ini belum mengandungi nilai-nilai lagi" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Zon masa" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Lalu lintas" - -msgid "Transfer" -msgstr "Pemindahan" - -msgid "Transmission Rate" -msgstr "Kelajuan Penghantaran" - -msgid "Transmit" -msgstr "Pancar" - -msgid "Transmit Power" -msgstr "Daya Pancar" - -msgid "Transmitter Antenna" -msgstr "Antena Pemancar" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Jenis" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Perubahan yang belum disimpan" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Uploaded Fail" - -msgid "Uptime" -msgstr "Masa Aktif" - -msgid "Use /etc/ethers" -msgstr "Guna /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Diguna" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Username" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Versi" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "WMM Mod" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Enkripsi memerlukan pemohan wpa (untuk mod pelanggan) atau hostapd " -"(untuk AP dan mod ad-hoc) yang akan dipasangkan." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "Adapter Wayarles" - -msgid "Wireless Network" -msgstr "Rangkaian Wayarles" - -msgid "Wireless Overview" -msgstr "Gambaran keseluruhan Wayarles" - -msgid "Wireless Security" -msgstr "Keselamatan WLAN" - -msgid "Wireless is disabled or not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Wireless restarted" -msgstr "" - -msgid "Wireless shut down" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "mencipta jambatan di antara muka tertentu" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "mematikan" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "fail dimana DHCP-sewa akan disimpan" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "Membantu" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "jika target itu ialah rangkaian" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "Fail DNS tempatan" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "tidak ada" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "Tidak dirinci -atau- buat:" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "« Kembali" - -#~ msgid "Leasetime" -#~ msgstr "Masa penyewaan" - -#~ msgid "automatic" -#~ msgstr "automatik" - -#~ msgid "AR Support" -#~ msgstr "AR-Penyokong" - -#~ msgid "Background Scan" -#~ msgstr "Latar Belakang Scan" - -#~ msgid "Compression" -#~ msgstr "Mampatan" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Mematikan pemasa HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Jangan menghantar jawapan penyelidikan" - -#~ msgid "Fast Frames" -#~ msgstr "Frame Cepat" - -#~ msgid "Maximum Rate" -#~ msgstr "Rate Maksimum" - -#~ msgid "Minimum Rate" -#~ msgstr "Rate Minimum" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast Rate" - -#~ msgid "Outdoor Channels" -#~ msgstr "Saluran Outdoor" - -#~ msgid "Regulatory Domain" -#~ msgstr "Peraturan Domain" - -#~ msgid "Separate WDS" -#~ msgstr "Pisahkan WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Mod Turbo" - -#~ msgid "XR Support" -#~ msgstr "Sokongan XR" diff --git a/package/luci/modules/luci-base/po/no/base.po b/package/luci/modules/luci-base/po/no/base.po deleted file mode 100644 index f1bfec4f59..0000000000 --- a/package/luci/modules/luci-base/po/no/base.po +++ /dev/null @@ -1,3996 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2013-03-25 23:36+0200\n" -"Last-Translator: protx \n" -"Language: no\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d minutters vindu, %d sekunds intervall)" - -msgid "(%s available)" -msgstr "(%s Tilgjengelig)" - -msgid "(empty)" -msgstr "(tom)" - -msgid "(no interfaces attached)" -msgstr "(ingen grensesnitt tilknyttet)" - -msgid "-- Additional Field --" -msgstr "-- Tilleggs Felt --" - -msgid "-- Please choose --" -msgstr "-- Vennligst velg --" - -msgid "-- custom --" -msgstr "-- egendefinert --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1 minutts belastning:" - -msgid "15 Minute Load:" -msgstr "15 minutters belastning:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5 minutters belastning:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS spørre port" - -msgid "DNS server port" -msgstr "DNS server port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS servere skal følge rekkefølgen " -"i oppslagsfilen ved spørringer" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Adresse" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Nettmaske" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Adresse eller " -"Nettverk (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Konfigurasjon" - -msgid "LED Name" -msgstr "LED Navn" - -msgid "MAC-Address" -msgstr "MAC-Adresse" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Maksimalt antall DHCP leier" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Maks. EDNS0 pakke størrelse" - -msgid "Max. concurrent queries" -msgstr "Maks. samtidige spørringer" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "APR terskel for nytt forsøk" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM Broer" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" -"ATM Virtuell kanal " -"identifikator (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" -"ATM Virtuell plasserings " -"identifikator (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM broer viser innkapslede ethernet i AAL5 forbindelser som virtuelle Linux-" -"nettverk grensesnitt, dette kan brukes sammen med DHCP eller PPP for å koble " -"seg mot en leverandørs nettverk." - -msgid "ATM device number" -msgstr "ATM enhetsnummer" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Tilgangskonsentrator" - -msgid "Access Point" -msgstr "Aksesspunkt" - -msgid "Action" -msgstr "Handling" - -msgid "Actions" -msgstr "Handlinger" - -msgid "Activate this network" -msgstr "Aktiver dette nettverket" - -msgid "Active IPv4-Routes" -msgstr "Aktive IPv4-Ruter" - -msgid "Active IPv6-Routes" -msgstr "Aktive IPv6-Ruter" - -msgid "Active Connections" -msgstr "Aktive Tilkoblinger" - -msgid "Active DHCP Leases" -msgstr "Aktive DHCP Leier" - -msgid "Active DHCPv6 Leases" -msgstr "Aktive DHCPv6 Leier" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc (Uavhengig)" - -msgid "Add" -msgstr "Legg til" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Legg det lokale domenesuffikset til navn utgitt fra vertsfiler" - -msgid "Add new interface..." -msgstr "Legg til grensesnitt..." - -msgid "Additional Hosts files" -msgstr "Tilleggs vertsfiler" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresse" - -msgid "Address to access local relay bridge" -msgstr "Adresse for tilgang til lokal relébro" - -msgid "Administration" -msgstr "Administrasjon" - -msgid "Advanced Settings" -msgstr "Avanserte Innstillinger" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Varsle" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Tillat SSH passord godkjenning" - -msgid "Allow all except listed" -msgstr "Tillat alle unntatt oppførte" - -msgid "Allow listed only" -msgstr "Tillat kun oppførte" - -msgid "Allow localhost" -msgstr "Tillat lokalvert" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Tillat eksterne verter å koble til lokale SSH videresendt porter" - -msgid "Allow root logins with password" -msgstr "Tillat root pålogginger med passord" - -msgid "Allow the root user to login with password" -msgstr "Tillat bruker root å logge inn med passord" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "Tillat oppstrøms svar i 127.0.0.0/8 nettet, f.eks for RBL tjenester" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antenne 1" - -msgid "Antenna 2" -msgstr "Antenne 2" - -msgid "Antenna Configuration" -msgstr "Antennekonfigurasjon" - -msgid "Any zone" -msgstr "Alle soner" - -msgid "Apply" -msgstr "Bruk" - -msgid "Applying changes" -msgstr "Utfører endringer" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Tilknytt grensesnitt..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Tilkoblede Klienter" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Godkjenning" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritativ" - -msgid "Authorization Required" -msgstr "Autorisasjon er nødvendig" - -msgid "Auto Refresh" -msgstr "Automatisk oppdatering" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Tilgjengelig" - -msgid "Available packages" -msgstr "Tilgjengelige pakker" - -msgid "Average:" -msgstr "Gjennomsnitt:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Tilbake" - -msgid "Back to Overview" -msgstr "Tilbake til oversikt" - -msgid "Back to configuration" -msgstr "Tilbake til konfigurasjon" - -msgid "Back to overview" -msgstr "Tilbake til oversikt" - -msgid "Back to scan results" -msgstr "Tilbake til skanne resultat" - -msgid "Backup / Flash Firmware" -msgstr "Sikkerhetskopiering/Firmware oppgradering" - -msgid "Backup / Restore" -msgstr "Sikkerhetskopi/Gjenoppretting" - -msgid "Backup file list" -msgstr "Sikkerhetskopier filliste" - -msgid "Bad address specified!" -msgstr "Ugyldig adresse oppgitt!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Nedenfor er listen med filer som blir sikkerthetskopiert. Listen består av " -"konfigurasjonsfiler som er merket av opkg, essensielle enhets filer og andre " -"filer valgt av bruker." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Overstyr falske NX Domener" - -msgid "Bridge" -msgstr "Bro" - -msgid "Bridge interfaces" -msgstr "Sammenkoble grensesnitt" - -msgid "Bridge unit number" -msgstr "Bro enhetsnummer" - -msgid "Bring up on boot" -msgstr "Slå på ved oppstart" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s Trådløs Kontroller" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 Trådløs Kontroller" - -msgid "Buffered" -msgstr "Bufret" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Knapper" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU forbruk (%)" - -msgid "Cancel" -msgstr "Avbryt" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Lenke" - -msgid "Changes" -msgstr "Endringer" - -msgid "Changes applied." -msgstr "Endringer utført." - -msgid "Changes the administrator password for accessing the device" -msgstr "Endrer administrator passordet for tilgang til enheten" - -msgid "Channel" -msgstr "Kanal" - -msgid "Check" -msgstr "Kontroller" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Kontrollsum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Velg brannmur sonen du ønsker å knytte til dette grensesnittet. Velg " -"uspesifisert for å fjerne grensesnittet fra den tilknyttede sonen. " -"Eller fyll ut Opprett feltet for å definere en ny sone og tilknytte " -"grensesnittet til det." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Velg det eller de nettverk du vil legge til dette trådløse grensesnittet, " -"eller fyll ut Opprett feltet for å definere et nytt nettverk." - -msgid "Cipher" -msgstr "Krypteringsmetode" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Klikk \"Opprett arkiv\" for å laste ned et tar arkiv av de gjeldende " -"konfigurasjons filer. For å nullstille firmwaren til opprinnelig tilstand, " -"klikker du på \"Utfør nullstilling\" (kun mulig på squashfs firmwarer)." - -msgid "Client" -msgstr "Klient" - -msgid "Client ID to send when requesting DHCP" -msgstr "Klient ID som sendes ved DHCP spørring" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Lukk inaktiver tilkoblinger etter angitt antall sekunder, bruk 0 for en " -"kontinuerlig tilkobling" - -msgid "Close list..." -msgstr "Lukk liste..." - -msgid "Collecting data..." -msgstr "Henter data..." - -msgid "Command" -msgstr "Kommando" - -msgid "Common Configuration" -msgstr "Vanlige Innstillinger" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Konfigurasjon" - -msgid "Configuration applied." -msgstr "Konfigurasjons endring utført." - -msgid "Configuration files will be kept." -msgstr "Konfigurasjonsfiler vil bli bevart." - -msgid "Confirmation" -msgstr "Bekreftelse" - -msgid "Connect" -msgstr "Koble til" - -msgid "Connected" -msgstr "Tilkoblet" - -msgid "Connection Limit" -msgstr "Tilkoblingsgrense (antall)" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Tilkoblinger" - -msgid "Country" -msgstr "Land" - -msgid "Country Code" -msgstr "Landskode" - -msgid "Cover the following interface" -msgstr "Gjelder det følgende grensesnitt" - -msgid "Cover the following interfaces" -msgstr "Gjelder de følgende grensesnitt" - -msgid "Create / Assign firewall-zone" -msgstr "Opprett/Tildel brannmur sone" - -msgid "Create Interface" -msgstr "Opprett Grensesnitt" - -msgid "Create a bridge over multiple interfaces" -msgstr "Opprett en bro over flere grensesnitt" - -msgid "Critical" -msgstr "Kritisk" - -msgid "Cron Log Level" -msgstr "Cron logg nivå" - -msgid "Custom Interface" -msgstr "Egendefinerte Grensesnitt" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Tilpasser oppførselen til enhetens LEDs om mulig." - -msgid "DHCP Leases" -msgstr "DHCP Leier" - -msgid "DHCP Server" -msgstr "DHCP Server" - -msgid "DHCP and DNS" -msgstr "DHCP og DNS" - -msgid "DHCP client" -msgstr "DHCP klient" - -msgid "DHCP-Options" -msgstr "DHCP-Alternativer" - -msgid "DHCPv6 Leases" -msgstr "DHCPv6 Leier" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS videresendinger" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Feilsøking" - -msgid "Default %d" -msgstr "Standard %d" - -msgid "Default gateway" -msgstr "Standard gateway" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Standard tilstand" - -msgid "Define a name for this network." -msgstr "Definer et navn for dette nettverket." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definer flere DHCP valg, f.eks \"192.168.2.1,192.168.2.2\" som " -"annonserer forskjellige DNS servere til klientene." - -msgid "Delete" -msgstr "Fjern" - -msgid "Delete this network" -msgstr "Fjern dette nettverket" - -msgid "Description" -msgstr "Beskrivelse" - -msgid "Design" -msgstr "Design" - -msgid "Destination" -msgstr "Destinasjon" - -msgid "Device" -msgstr "Enhet" - -msgid "Device Configuration" -msgstr "Enhet Konfigurasjon" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Nettverksdiagnostikk" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Katalog" - -msgid "Disable" -msgstr "Deaktiver" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Deaktiver DHCP " -"for dette nettverket." - -msgid "Disable DNS setup" -msgstr "Deaktiver DNS oppsett" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Deaktivert" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Forkast oppstrøms RFC1918 svar" - -msgid "Displaying only packages containing" -msgstr "Viser bare pakker som inneholder" - -msgid "Distance Optimization" -msgstr "Avstand Optimalisering" - -msgid "Distance to farthest network member in meters." -msgstr "Avstand i meter til det medlem av nettverket som er lengst unna." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Antennevariasjon" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq er en kombinert DHCP-Server og DNS-" -"Fremsender for NAT " -"brannmurer" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Ikke cache negative svar, f.eks for ikke eksisterende domener" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Ikke videresend forespørsler som ikke kan besvares med offentlige " -"navneservere" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Ikke videresend reverserte oppslag for lokale nettverk" - -msgid "Domain required" -msgstr "Domene kreves" - -msgid "Domain whitelist" -msgstr "Domene hviteliste" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Ikke videresend DNS-Forespørsler " -"uten DNS-Navn" - -msgid "Download and install package" -msgstr "Last ned og installer pakken" - -msgid "Download backup" -msgstr "Last ned sikkerhetskopi" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear Instans" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear tilbyr SSH-nettverks shell " -"tilgang og en integrert SCP server" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dynamisk DHCP" - -msgid "Dynamic tunnel" -msgstr "Dynamisk tunnel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Dynamisk tildeling av DHCP adresser til klienter. Om deaktivert, kan en kun " -"bruke klienter med statisk leie." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-metode" - -msgid "Edit" -msgstr "Endre" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Endre dette grensesnittet" - -msgid "Edit this network" -msgstr "Endre dette nettverket" - -msgid "Emergency" -msgstr "Krisesituasjon" - -msgid "Enable" -msgstr "Aktiver" - -msgid "Enable STP" -msgstr "Aktiver STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Aktiver HE,net dynamisk endepunkt oppdatering" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Aktiver IPv6 på PPP lenke" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Aktiver Jumbo Frames gjennomgang" - -msgid "Enable NTP client" -msgstr "Aktiver NTP klient" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Aktiver TFTP server" - -msgid "Enable VLAN functionality" -msgstr "Aktiver VLAN funksjonalitet" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Aktiver 'læring' og 'aldring'" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Aktiver dette monteringspunktet" - -msgid "Enable this swap" -msgstr "Aktiver denne swapenhet" - -msgid "Enable/Disable" -msgstr "Aktiver/Deaktiver" - -msgid "Enabled" -msgstr "Aktivert" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Aktiverer Spanning Tree Protocol på denne broen" - -msgid "Encapsulation mode" -msgstr "Innkapsling modus" - -msgid "Encryption" -msgstr "Kryptering" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Sletter..." - -msgid "Error" -msgstr "Feil" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet Tilslutning" - -msgid "Ethernet Switch" -msgstr "Ethernet Svitsj" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Utvid vertsliste" - -msgid "Expires" -msgstr "Utgår" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "Utløpstid på leide adresser, minimum er 2 minutter (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Ekstern systemlogg server" - -msgid "External system log server port" -msgstr "Ekstern systemlogg server port" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Fil" - -msgid "Filename of the boot image advertised to clients" -msgstr "Filnavn fra boot image annonsert til klienter" - -msgid "Filesystem" -msgstr "Filsystem" - -msgid "Filter" -msgstr "Filter" - -msgid "Filter private" -msgstr "Filtrer private" - -msgid "Filter useless" -msgstr "Filtrer ubrukelige" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Finn og koble til nettverk" - -msgid "Find package" -msgstr "Finn pakke" - -msgid "Finish" -msgstr "Fullfør" - -msgid "Firewall" -msgstr "Brannmur" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Brannmur Innstillinger" - -msgid "Firewall Status" -msgstr "Brannmur Status" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Firmware Versjon" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Fast kilde port for utgående DNS-spørringer" - -msgid "Flash Firmware" -msgstr "Firmware Oppradering" - -msgid "Flash image..." -msgstr "Flash firmware..." - -msgid "Flash new firmware image" -msgstr "Flash nytt firmware image" - -msgid "Flash operations" -msgstr "Flash operasjoner" - -msgid "Flashing..." -msgstr "Flasher..." - -msgid "Force" -msgstr "Bruk" - -msgid "Force CCMP (AES)" -msgstr "Bruk CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Bruk DHCP i dette nettverket, selv om en annen DHCP server er oppdaget." - -msgid "Force TKIP" -msgstr "Bruk TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Bruk TKIP og CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Videresend DHCP trafikk" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Videresend kringkastingstrafikk" - -msgid "Forwarding mode" -msgstr "Videresending modus" - -msgid "Fragmentation Threshold" -msgstr "Fragmenterings Terskel" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Ledig" - -msgid "Free space" -msgstr "Ledig plass" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Kun GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway ports" -msgstr "Gateway porter" - -msgid "General Settings" -msgstr "Generelle Innstillinger" - -msgid "General Setup" -msgstr "Generelt Oppsett" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Opprett arkiv" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Generell 802.11%s Trådløs Kontroller" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Det oppgitte passordet var ikke korrekt, passord ble ikke endret!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Gå til passord konfigurasjon..." - -msgid "Go to relevant configuration page" -msgstr "Gå til relevant konfigurasjonen side" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "HE.net passord" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Behandler" - -msgid "Hang Up" -msgstr "Slå av" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Her kan du konfigurere grunnleggende aspekter av enheten som f.eks. dens " -"vertsnavn eller tidssone." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Her kan du lime inn felles SSH-nøkler(en per linje), for SSH godkjenning." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Hermes 802.11b Trådløs Kontroller" - -msgid "Hide ESSID" -msgstr "Skjul ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Vertsoppføringer" - -msgid "Host expiry timeout" -msgstr "Verts utløpstid" - -msgid "Host-IP or Network" -msgstr "" -"Verts-IP eller Nettverk" - -msgid "Hostname" -msgstr "Vertsnavn" - -msgid "Hostname to send when requesting DHCP" -msgstr "Vertsnavn som sendes ved DHCP forespørsel" - -msgid "Hostnames" -msgstr "Vertsnavn" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP adresse" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 Brannmur" - -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN Status" - -msgid "IPv4 address" -msgstr "IPv4 adresse" - -msgid "IPv4 and IPv6" -msgstr "IPv4 og IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4 kringkasting" - -msgid "IPv4 gateway" -msgstr "IPv4 gateway" - -msgid "IPv4 netmask" -msgstr "IPv4 nettmaske" - -msgid "IPv4 only" -msgstr "Kun IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "IPv4 prefikslengde" - -msgid "IPv4-Address" -msgstr "IPv4-Adresse" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 Brannmur" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN Status" - -msgid "IPv6 address" -msgstr "IPv6 adresse" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6 gateway" - -msgid "IPv6 only" -msgstr "Kun IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 prefiks" - -msgid "IPv6 prefix length" -msgstr "IPv6 prefikslengde" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-Adresse" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-i-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-over-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-over-IPv4 (6til4)" - -msgid "Identity" -msgstr "Identitet" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "Hvis oppgitt vil denne enhet monteres ut fra dens UUID" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "Hvis oppgitt vil denne enheten bli montert utfra dens Volumnavn" - -msgid "If unchecked, no default route is configured" -msgstr "Dersom ikke avmerket blir ingen standard rute konfigurert" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Dersom ikke avmerket blir de annonserte DNS server adresser ignorert" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Om ruterens fysiske minne er utilstrekkelig, ubrukte data kan midlertidig " -"gjøres om til en swap-enhet som gir deg mere tilgjengelig RAM. Vær oppmerksom på at bruk av swap er " -"mye langsommere en RAM." - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "Ignorer grensesnitt" - -msgid "Ignore resolve file" -msgstr "Ignorer oppslagsfil" - -msgid "Image" -msgstr "Firmware" - -msgid "In" -msgstr "i" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Tidsavbrudd etter innaktivitet" - -msgid "Inbound:" -msgstr "Innkommende:" - -msgid "Info" -msgstr "Informasjon" - -msgid "Initscript" -msgstr "Oppstartskript" - -msgid "Initscripts" -msgstr "Oppstartsskript" - -msgid "Install" -msgstr "Installer" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Installer pakken %q" - -msgid "Install protocol extensions..." -msgstr "Installer protokoll utvidelser..." - -msgid "Installed packages" -msgstr "Installerte pakker" - -msgid "Interface" -msgstr "Grensesnitt" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Grensesnitt Konfigurasjon" - -msgid "Interface Overview" -msgstr "Grensesnitt Oversikt" - -msgid "Interface is reconnecting..." -msgstr "Grensesnittet kobler til igjen..." - -msgid "Interface is shutting down..." -msgstr "Grensesnittet slår seg av..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Grensesnittet er ikke tilgjengelig eller er ikke tilknyttet." - -msgid "Interface reconnected" -msgstr "Grensesnittet er koblet til igjen" - -msgid "Interface shut down" -msgstr "Grensesnittet er slått av" - -msgid "Interfaces" -msgstr "Grensesnitt" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Intern server feil" - -msgid "Invalid" -msgstr "Ugyldig" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "Ugyldig VLAN ID gitt! Bare IDer mellom %d og %d er tillatt." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Ugyldig VLAN ID gitt! Bare unike ID'er er tillatt" - -msgid "Invalid username and/or password! Please try again." -msgstr "Ugyldig brukernavn og/eller passord! Vennligst prøv igjen." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Det virker som du prøver å flashe med en firmware som ikke passer inn i " -"flash-minnet, vennligst kontroller firmware filen!" - -msgid "JavaScript required!" -msgstr "JavaScript kreves!" - -msgid "Join Network" -msgstr "Koble til nettverket" - -msgid "Join Network: Wireless Scan" -msgstr "Koble til nettverk: Trådløs Skanning" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Behold innstillinger" - -msgid "Kernel Log" -msgstr "Kjerne Logg" - -msgid "Kernel Version" -msgstr "Kjerne Versjon" - -msgid "Key" -msgstr "Nøkkel" - -msgid "Key #%d" -msgstr "Nøkkel #%d" - -msgid "Kill" -msgstr "Drep" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP Server" - -msgid "LCP echo failure threshold" -msgstr "LCP ekko feil terskel" - -msgid "LCP echo interval" -msgstr "LCP ekko intervall" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Volumnavn" - -msgid "Language" -msgstr "Språk" - -msgid "Language and Style" -msgstr "Språk og Utseende" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Gyldig leietid" - -msgid "Leasefile" -msgstr "Leie-fil" - -msgid "Leasetime remaining" -msgstr "Gjenværende leietid" - -msgid "Leave empty to autodetect" -msgstr "La stå tomt for automatisk oppdagelse" - -msgid "Leave empty to use the current WAN address" -msgstr "La stå tomt for å bruke gjeldene WAN adresse" - -msgid "Legend:" -msgstr "Forklaring:" - -msgid "Limit" -msgstr "Grense" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Forbindelse" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Liste med DNS servere som " -"forespørsler blir videresendt til" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Liste over domener hvor en tillater RFC1918 svar" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Liste over verter som returneren falske NX domene resultater" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Lytt kun på det angitte grensesnitt, om ingen er angitt lyttes det på alle" - -msgid "Listening port for inbound DNS queries" -msgstr "Lytte-port for innkommende DNS-spørring" - -msgid "Load" -msgstr "Belastning" - -msgid "Load Average" -msgstr "Belastning Gjennomsnitt" - -msgid "Loading" -msgstr "Laster" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Lokal IPv4 adresse" - -msgid "Local IPv6 address" -msgstr "Lokal IPv6 adresse" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Lokal Oppstart" - -msgid "Local Time" -msgstr "Lokal tid" - -msgid "Local domain" -msgstr "Lokalt domene" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Lokalt domene spesifikasjon. Navn som passer dette domenet blir aldri " -"videresendt, de blir kun løst av DHCP eller vertsfiler" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "Lokalt domenesuffiks lagt til DHCP navn og vertsfil oppføringer" - -msgid "Local server" -msgstr "Lokal server" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Lokaliser vertsnavn avhengig av subnett hvis flere IP-adresser er " -"tilgjengelig" - -msgid "Localise queries" -msgstr "Lokalisere søk" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Logg nivå" - -msgid "Log queries" -msgstr "Logg spørringer" - -msgid "Logging" -msgstr "Logging" - -msgid "Login" -msgstr "Logg inn" - -msgid "Logout" -msgstr "Logg ut" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Laveste leide adresse, forskjøvet fra nettverks adressen." - -msgid "MAC-Address" -msgstr "MAC-Adresse" - -msgid "MAC-Address Filter" -msgstr "MAC-Addresse Filter" - -msgid "MAC-Filter" -msgstr "MAC-Filter" - -msgid "MAC-List" -msgstr "MAC-Liste" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Maksimalt antall aktive DHCP leieavtaler" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Maksimalt antall samtidige DNS spørringer" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Maksimal tillatt størrelse på EDNS.0 UDP-pakker" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Maksimalt antall sekunder å vente på at modemet skal bli klart" - -msgid "Maximum hold time" -msgstr "Maksimal holde tid" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Maksimalt antall utleide adresser." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Minne" - -msgid "Memory usage (%)" -msgstr "Minne forbruk (%)" - -msgid "Metric" -msgstr "Metrisk" - -msgid "Minimum hold time" -msgstr "Minimum holde tid" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Mangler protokoll utvidelse for proto %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Modus" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Modem" - -msgid "Modem init timeout" -msgstr "Modem initiering tidsavbrudd" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Monterings Enhet" - -msgid "Mount Point" -msgstr "Monterings Punkt" - -msgid "Mount Points" -msgstr "Monterings Punkter" - -msgid "Mount Points - Mount Entry" -msgstr "Monterings Punkter - Monterings Enhet" - -msgid "Mount Points - Swap Entry" -msgstr "Monterings Punkter - Swap Enhet" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Monterings punkter definerer hvor lagrings enheter blir tilsluttet " -"filsystemet" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Monterings alternativer" - -msgid "Mount point" -msgstr "Monterings punkt" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Monterte Filsystemer" - -msgid "Move down" -msgstr "Flytt ned" - -msgid "Move up" -msgstr "Flytt opp" - -msgid "Multicast address" -msgstr "Multicast adresse" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "NTP server kandidater" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Navn" - -msgid "Name of the new interface" -msgstr "Navnet til det nye grensesnittet" - -msgid "Name of the new network" -msgstr "Navnet til det nye nettverket" - -msgid "Navigation" -msgstr "Navigasjon" - -msgid "Netmask" -msgstr "Nettmaske" - -msgid "Network" -msgstr "Nettverk" - -msgid "Network Utilities" -msgstr "Nettverks Verktøy" - -msgid "Network boot image" -msgstr "Nettverks boot image" - -msgid "Network without interfaces." -msgstr "Nettverk uten grensesnitt." - -msgid "Next »" -msgstr "Neste »" - -msgid "No DHCP Server configured for this interface" -msgstr "Ingen DHCP server er konfigurert for dette grensesnittet" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Ingen lenker i denne tabellen" - -msgid "No files found" -msgstr "Ingen filer funnet" - -msgid "No information available" -msgstr "Ingen informasjon tilgjengelig" - -msgid "No negative cache" -msgstr "Ingen negative cache" - -msgid "No network configured on this device" -msgstr "Ingen nettverk er konfigurert på denne enheten" - -msgid "No network name specified" -msgstr "Ingen nettverksnavn spesifisert" - -msgid "No package lists available" -msgstr "Ingen pakkelister tilgjengelig" - -msgid "No password set!" -msgstr "Ruteren er ikke passordbeskyttet!" - -msgid "No rules in this chain" -msgstr "Ingen regler i denne tabellen" - -msgid "No zone assigned" -msgstr "Ingen sone tilknyttet" - -msgid "Noise" -msgstr "Støy" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Støy:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Ingen" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Ikke funnet" - -msgid "Not associated" -msgstr "Ikke tilknyttet" - -msgid "Not connected" -msgstr "Ikke tilkoblet" - -msgid "Note: Configuration files will be erased." -msgstr "Merk: Konfigurasjonsfiler vil bli slettet" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Merk" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-Konfigurasjon" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "Forsinkelse ved tilstand Av" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"På denne siden kan du konfigurere nettverks grensesnittet. Du kan " -"sammenkoble flere grensesnitt ved å hake av \"Sammekoble grensesnitt\" " -"feltet og skrive inn navn på grensesnittene atskilt med mellomrom. Du kan " -"også bruke VLAN betegnelse " -"INTERFACE.VLANNR (f.eks: " -"eth0.1)." - -msgid "On-State Delay" -msgstr "Forsinkelse ved tilstand -På-" - -msgid "One of hostname or mac address must be specified!" -msgstr "Enten Vertsnavn eller Mac-adresse må oppgis!" - -msgid "One or more fields contain invalid values!" -msgstr "Ett eller flere felt inneholder ugyldige verdier!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Ett eller flere obligatoriske felter har ingen verdi!" - -msgid "Open list..." -msgstr "Åpne liste..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Innstilling endret" - -msgid "Option removed" -msgstr "Innstilling fjernet" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Alternativer" - -msgid "Other:" -msgstr "Andre:" - -msgid "Out" -msgstr "Ut" - -msgid "Outbound:" -msgstr "Ugående:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Overstyr MAC adresse" - -msgid "Override MTU" -msgstr "Overstyr MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Overstyr gatewayen mottatt av DHCP respons" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Overstyr nettmaske sendt til klienter. Normalt er nettmasken beregnet ut fra " -"subnettet som blir tildelt." - -msgid "Override the table used for internal routes" -msgstr "Overstyr tabellen som brukes for interne ruter" - -msgid "Overview" -msgstr "Oversikt" - -msgid "Owner" -msgstr "Eier" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP passord" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP brukernavn" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Innkapsling" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Pakken libiwinfo er nødvendig!" - -msgid "Package lists are older than 24 hours" -msgstr "Pakkelistene er eldre enn 24 timer" - -msgid "Package name" -msgstr "Pakkenavn" - -msgid "Packets" -msgstr "Pakker" - -msgid "Part of zone %q" -msgstr "En del av sone %q" - -msgid "Password" -msgstr "Passord" - -msgid "Password authentication" -msgstr "Passord godkjenning" - -msgid "Password of Private Key" -msgstr "Passord for privatnøkkel" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Passordet er endret!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Sti til CA-sertifikat" - -msgid "Path to Client-Certificate" -msgstr "Sti til klient-sertifikat" - -msgid "Path to Private Key" -msgstr "Sti til privatnøkkel" - -msgid "Path to executable which handles the button event" -msgstr "Sti til program som håndterer handling ved bruk av knapp" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Maksimalt:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Omstart nå" - -msgid "Perform reset" -msgstr "Foreta nullstilling" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Phy Hastighet:" - -msgid "Physical Settings" -msgstr "Fysiske Innstillinger" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pakker." - -msgid "Please enter your username and password." -msgstr "Skriv inn ditt brukernavn og passord." - -msgid "Policy" -msgstr "Policy" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Port status:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Annta at peer er uten forbindelse om angitt LCP ekko feiler, bruk verdi 0 " -"for å overse feil" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Hindrer klient-til-klient kommunikasjon" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Prism2/2.5/3 802.11b Trådløs Kontroller" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Fortsett" - -msgid "Processes" -msgstr "Prosesser" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Protocol family" -msgstr "Protokoll familie" - -msgid "Protocol of the new interface" -msgstr "Protokoll til det nye grensesnittet" - -msgid "Protocol support is not installed" -msgstr "Protokoll støtte er ikke installert" - -msgid "Provide NTP server" -msgstr "Funger som NTP Server" - -msgid "Provide new network" -msgstr "Lag nytt nettverk" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Kvalitet" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS Terskel" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "RX Rate" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "RaLink 802.11%s Trådløs Kontroller" - -msgid "Radius-Accounting-Port" -msgstr "Radius-Accounting-Port" - -msgid "Radius-Accounting-Secret" -msgstr "Radius-Accounting-Secret" - -msgid "Radius-Accounting-Server" -msgstr "Radius-Accounting-Server" - -msgid "Radius-Authentication-Port" -msgstr "Radius-Authentication-Port" - -msgid "Radius-Authentication-Secret" -msgstr "Radius-Authentication-Secret" - -msgid "Radius-Authentication-Server" -msgstr "Radius-Authentication-Server" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Benytt /etc/ethers for å konfigurere DHCP-Server" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Fjerne dette grensesnittet? Slettingen kan ikke omgjøres!\n" -"Du kan miste kontakten med ruteren om du er tilkoblet via dette " -"grensesnittet." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Fjerne dette trådløse nettverket? Slettingen kan ikke omgjøres!\n" -"Du kan miste kontakten med ruteren om du er tilkoblet via dette nettverket." - -msgid "Really reset all changes?" -msgstr "Vil du nullstille alle endringer?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Slå av dette nettverket ?\n" -"Du kan miste kontakten med ruteren om du er tilkoblet via dette " -"grensesnittet." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Slå av dette grensesnittet \"%s\" ?\n" -"Du kan miste kontakten med ruteren om du er tilkoblet via dette " -"grensesnittet." - -msgid "Really switch protocol?" -msgstr "Vil du endre protokoll?" - -msgid "Realtime Connections" -msgstr "Tilkoblinger Sanntid" - -msgid "Realtime Graphs" -msgstr "Grafer i sanntid" - -msgid "Realtime Load" -msgstr "Belastning Sanntid" - -msgid "Realtime Traffic" -msgstr "Trafikk Sanntid" - -msgid "Realtime Wireless" -msgstr "Trådløst i sanntid" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Binde beskyttelse" - -msgid "Reboot" -msgstr "Omstart" - -msgid "Rebooting..." -msgstr "Starter på nytt..." - -msgid "Reboots the operating system of your device" -msgstr "Omstarter operativsystemet på enheten" - -msgid "Receive" -msgstr "Motta" - -msgid "Receiver Antenna" -msgstr "Mottak antenne" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Koble til igjen" - -msgid "Reconnecting interface" -msgstr "Kobler til igjen" - -msgid "References" -msgstr "Referanser" - -msgid "Relay" -msgstr "Relay" - -msgid "Relay Bridge" -msgstr "Relay bro" - -msgid "Relay between networks" -msgstr "Relay mellom nettverk" - -msgid "Relay bridge" -msgstr "Relay bro" - -msgid "Remote IPv4 address" -msgstr "Ekstern IPv4 adresse" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Avinstaller" - -msgid "Repeat scan" -msgstr "Skann på nytt" - -msgid "Replace entry" -msgstr "Erstatt oppføring" - -msgid "Replace wireless configuration" -msgstr "Erstatt trådløs konfigurasjon" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Er nødvendig for noen nettleverandører, f.eks Charter med DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Nullstill" - -msgid "Reset Counters" -msgstr "Nullstill Tellere" - -msgid "Reset to defaults" -msgstr "Nullstill til standard innstilling" - -msgid "Resolv and Hosts Files" -msgstr "Oppslag og Vertsfiler" - -msgid "Resolve file" -msgstr "Oppslagsfil" - -msgid "Restart" -msgstr "Omstart" - -msgid "Restart Firewall" -msgstr "Omstart Brannmur" - -msgid "Restore backup" -msgstr "Gjenopprett sikkerhetskopi" - -msgid "Reveal/hide password" -msgstr "Vis/Skjul passord" - -msgid "Revert" -msgstr "Tilbakestill" - -msgid "Root" -msgstr "Rot" - -msgid "Root directory for files served via TFTP" -msgstr "Rot katalog for filer gitt fra TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Ruter Passord" - -msgid "Routes" -msgstr "Ruter" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Ruter, angir hvilket nettverksgrensesnitt og hvilken gateway som brukes for " -"å nå et gitt nettverk eller vert." - -msgid "Run a filesystem check before mounting the device" -msgstr "Kjør filsystem sjekk før montering av enheten" - -msgid "Run filesystem check" -msgstr "Kjør filsystem sjekk" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH Tilgang" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH-Nøkler" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Lagre" - -msgid "Save & Apply" -msgstr "Lagre & Aktiver" - -msgid "Save & Apply" -msgstr "Lagre & Aktiver" - -msgid "Scan" -msgstr "Skann" - -msgid "Scheduled Tasks" -msgstr "Planlagte Oppgaver" - -msgid "Section added" -msgstr "Seksjon lagt til" - -msgid "Section removed" -msgstr "Seksjon fjernet" - -msgid "See \"mount\" manpage for details" -msgstr "Se \"mount\" manpage for detaljer" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Send LCP ekko forespørsler etter angitt intervall i sekunder, dette er kun " -"gjeldene dersom feilterskelen er nådd" - -msgid "Separate Clients" -msgstr "Separerte Klienter" - -msgid "Server Settings" -msgstr "Server Innstillinger" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Tjeneste navn" - -msgid "Service Type" -msgstr "Tjeneste type" - -msgid "Services" -msgstr "Tjenester" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Oppsett tidssynkronisering" - -msgid "Setup DHCP Server" -msgstr "Oppsett DHCP server" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "Vis gjeldende liste med sikkerhetskopifiler" - -msgid "Shutdown this interface" -msgstr "Slå av dette grensesnittet" - -msgid "Shutdown this network" -msgstr "Slå av dette nettverket" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Signal:" - -msgid "Size" -msgstr "Størrelse" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Gå videre" - -msgid "Skip to content" -msgstr "Gå til innhold" - -msgid "Skip to navigation" -msgstr "Gå til navigasjon" - -msgid "Slot time" -msgstr "Slot tid" - -msgid "Software" -msgstr "Programvare" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Noen felt er ugyldige, kan ikke lagre verdier!" - -msgid "Sorry, the object you requested was not found." -msgstr "Beklager, objektet du spurte om ble ikke funnet." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Beklager, det oppstod en uventet feil på serveren." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Beklager, men finner ikke støtte for 'sysupgrade', ny firmware må derfor " -"flashes manuelt. Viser til wiki for installering av firmare på forskjellige " -"enheter." - -msgid "Sort" -msgstr "Sortering" - -msgid "Source" -msgstr "Kilde" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Spesifiserer knappens handlemønster" - -msgid "Specifies the directory the device is attached to" -msgstr "Hvor lagrings enheten blir tilsluttet filsystemet (f.eks. /mnt/sda1)" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Angir den lyttende porten for denne Dropbear instansen" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Angir maksimalt antall feilede ARP forespørsler før verter ansees frakoblet" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "Angir maksimalt antall sekunder før verter ansees som frakoblet" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Angi krypteringsnøkkelen her." - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "Start prioritet" - -msgid "Startup" -msgstr "Oppstart" - -msgid "Static IPv4 Routes" -msgstr "Statiske IPv4 Ruter" - -msgid "Static IPv6 Routes" -msgstr "Statiske IPv6 Ruter" - -msgid "Static Leases" -msgstr "Statiske Leier" - -msgid "Static Routes" -msgstr "Statiske Ruter" - -msgid "Static address" -msgstr "Statisk adresse" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Statisk leieavtaler brukes til å tildele faste IP adresser og symbolske " -"vertsnavn til DHCP klienter. Dette er nødvendig om grensesnittet ikke er " -"dynamisk konfigurert og kun klienter med dhcp leieavtale får IP." - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "Streng overholdelse" - -msgid "Submit" -msgstr "Send" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Swap Enhet" - -msgid "Switch" -msgstr "Svitsj" - -msgid "Switch %q" -msgstr "Svitsj %q" - -msgid "Switch %q (%s)" -msgstr "Svitsj %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Svitsj protokoll" - -msgid "Sync with browser" -msgstr "Synkroniser med nettleser" - -msgid "Synchronizing..." -msgstr "Synkroniser..." - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "System Logg" - -msgid "System Properties" -msgstr "System Egenskaper" - -msgid "System log buffer size" -msgstr "System logg buffer størrelse" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP Innstillinger" - -msgid "TFTP server root" -msgstr "TFTP server roten" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "TX rate" - -msgid "Table" -msgstr "Tabell" - -msgid "Target" -msgstr "Mål" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Avslutte" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Enhet Konfigurasjon seksjonen omhandler innstillingene av den " -"trådløse enheten som kanaler, sende stryke eller antenne valg. Disse " -"innstillingene er delt mellom alle definerte trådløse nettverk opprettet " -"utfra denne enhet. (om den trådløse enheten støtter mulit-SSID). Nettverks " -"innstillinger som kryptering eller kanaler er gruppert i Grensesnitt " -"Konfigurasjon." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Pakken libiwinfo-lua er ikke installert. Du må installere denne " -"pakken for å kunne konfigurerer trådløse enheter!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"IPv6 prefikset tilordnet mot leverandør, ender som regel med ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Gyldige tegn er: A-Z, a-z, 0-9 og " -"_" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Filenheten til partisjonen eller minnet (f.eks." -" /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Filsystemet som ble brukt til å formatere partisjonen eller minnet. (f.eks. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Firmwaren ble lastet opp. Nedenfor er kontrollsum og filstørrelse oppført, " -"sammenlign dem med den opprinnelige filen for å sikre dataintegriteten.
    Klikk \"Fortsett\" nedenfor for å starte flash prosedyren." - -msgid "The following changes have been committed" -msgstr "Følgende endringer er foretatt" - -msgid "The following changes have been reverted" -msgstr "Følgende endringer er forkastet" - -msgid "The following rules are currently active on this system." -msgstr "Følgende regler er aktiver på systemet." - -msgid "The given network name is not unique" -msgstr "Det angitte nettverksnavnet er ikke unikt" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Maskinvaren er ikke multi-SSID kapabel og den ekisterende konfigurasjonen " -"vil bli erstattet om du fortsetter." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "Lengden IPv4 prefikset i bits, resten brukt i IPv6-adresser." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Lengden på IPv6 prefikset i bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Nettverks portene på ruteren kan kombineres til flere VLANs der datamaskiner kan kommunisere direkte " -"med hverandre. VLANs " -"brukes ofte for å skille ulike nettverk segmenter. Det er vanlig og ha en " -"Uplink port for tilkobling til større nettverk som internett og andre porter " -"til lokalt nettverk." - -msgid "The selected protocol needs a device assigned" -msgstr "Den valgte protokoll må ha en enhet tilknyttet" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Systemet sletter konfigurasjonspartisjonen nå, enheten vil bli startet på " -"nytt når dette er utført." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Systemet flashes nå.
    IKKE SLÅ AV ENHETEN!
    Vent noen minutter før " -"du prøver å koble til igjen. Det kan være nødvendig å fornye ip-adressen til " -"datamaskinen din for å nå enheten på nytt. (avhengig av innstillingene dine)" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Den opplastede programvaren er av et format som ikke støttes. Sørg for at du " -"velger det generelle firmware-bildet for din plattform." - -msgid "There are no active leases." -msgstr "Det er ingen aktive leieavtaler." - -msgid "There are no pending changes to apply!" -msgstr "Det finnes ingen endringer som kan utføres!" - -msgid "There are no pending changes to revert!" -msgstr "Det finnes ingen endriger å reversere!" - -msgid "There are no pending changes!" -msgstr "Det finnes ingen endringer!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Det er ingen enhet som er tilordnet ennå, vennligst legg til en " -"nettverksenhet i \"Fysiske Innstillinger\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Det er ikke satt noe passord på denne ruter. Vennligst konfigurer et " -"passord, dette beskytter webgrensesnittet og aktiverer SSH." - -msgid "This IPv4 address of the relay" -msgstr "Dette IPv4 adressen til relayet" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Dette er en liste med 'shell glob patterns' for å matche filer og kataloger " -"som skal inkluderes under sysupgrade. Endrede filer i /etc/config/ og " -"enkelte andre konfigurasjoner blir automatisk bevart." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Dette er innholdet i /etc/rc.local. Her kan du legge til egne kommandoer som " -"blir startet ved slutten av boot sekvensen. (før 'exit 0')" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"Dette er den lokale endepunkt adressen som ble tildelt av tunnel 'broker', " -"adressen ender vanligvis med :2" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Dette er den eneste DHCP server i det lokale nettverket" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Dette er systemets crontab, hvor planlagte oppgaver kan defineres." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Dette er vanligvis adressen til nærmeste PoP som drives av tunell 'broker'" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "Denne listen gir en oversikt over kjørende prosesser og deres status." - -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Denne siden gir mulighet for å definerte egne knappers handlingsmønster" - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Denne siden gir en oversikt over gjeldende aktive nettverkstilkoblinger." - -msgid "This section contains no values yet" -msgstr "Denne seksjonen inneholder ennå ingen verdier" - -msgid "Time Synchronization" -msgstr "Tidssynkronisering" - -msgid "Time Synchronization is not configured yet." -msgstr "Tiden Synkroniseringen er ikke konfigurert ennå." - -msgid "Timezone" -msgstr "Tidssone" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"For å gjenopprette konfigurasjonsfiler, kan du her laste opp et backup arkiv " -"som ble opprettet tidligere." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Totalt Tilgjengelig" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Trafikk" - -msgid "Transfer" -msgstr "Overføring" - -msgid "Transmission Rate" -msgstr "Overførings rate" - -msgid "Transmit" -msgstr "Sende" - -msgid "Transmit Power" -msgstr "Sende styrke" - -msgid "Transmitter Antenna" -msgstr "Sende Antenne" - -msgid "Trigger" -msgstr "Utløser" - -msgid "Trigger Mode" -msgstr "Utløsende Tilstand" - -msgid "Tunnel ID" -msgstr "Tunnel ID" - -msgid "Tunnel Interface" -msgstr "Tunnel grensesnitt" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Tx-Styrke" - -msgid "Type" -msgstr "Type" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Kun UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB Enhet" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Kan ikke sende" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Ukjent" - -msgid "Unknown Error, password not changed!" -msgstr "Ukjent feil, passordet ble ikke endret!" - -msgid "Unmanaged" -msgstr "Uhåndtert" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Ulagrede Endringer" - -msgid "Unsupported protocol type." -msgstr "Protokoll type er ikke støttet." - -msgid "Update lists" -msgstr "Oppdater lister" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Last her opp en sysupgrade-kompatibel firmware som skal erstatte den " -"kjørende firmware. Merk av \"Behold innstillinger\" for å beholde gjeldene " -"konfigurasjon. (en kompatibel firmware er nødvendig)" - -msgid "Upload archive..." -msgstr "Last opp arkiv..." - -msgid "Uploaded File" -msgstr "Opplastet Fil" - -msgid "Uptime" -msgstr "Oppetid" - -msgid "Use /etc/ethers" -msgstr "Bruk /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Bruk DHCP gateway" - -msgid "Use DNS servers advertised by peer" -msgstr "Bruk DNS servere annonsert av peer" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Bruk ISO/IEC 3166 alpha2 landskoder." - -msgid "Use MTU on tunnel interface" -msgstr "Bruk MTU på tunnel grensesnitt" - -msgid "Use TTL on tunnel interface" -msgstr "Bruk TTL på tunnel grensesnitt" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Bruk kringkasting flagg" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Bruk egendefinerte DNS servere" - -msgid "Use default gateway" -msgstr "Bruk standard gateway" - -msgid "Use gateway metric" -msgstr "Bruk gateway metrikk" - -msgid "Use routing table" -msgstr "Bruk rutingtabellen" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Bruk Legg til knappen får å legge til en leieavtale. MAC-" -"Adresse identifiserer verten, IPv4-Adresse angir hvilken " -"statisk IP adresse som skal brukes og Vertsnavn blir symbolsk " -"tilknyttet den anmodende verten." - -msgid "Used" -msgstr "Brukt" - -msgid "Used Key Slot" -msgstr "Brukte Nøkler" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Brukernavn" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs på %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs på %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "VPN server" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Leverandør klasse som sendes ved DHCP spørring" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Bekreft" - -msgid "Version" -msgstr "Versjon" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP åpent system" - -msgid "WEP Shared Key" -msgstr "WEP delt nøkkel" - -msgid "WEP passphrase" -msgstr "WEP passord" - -msgid "WMM Mode" -msgstr "WMM Modus" - -msgid "WPA passphrase" -msgstr "WPA passord" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Kryptering krever at wpa_supplicant (for klient-modus) eller hostapd " -"(for AP og ad-hoc-modus) er installert." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "Venter på at endringer utføres..." - -msgid "Waiting for command to complete..." -msgstr "Venter på at kommando fullføres..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Advarsel" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Trådløs" - -msgid "Wireless Adapter" -msgstr "Trådløs Tilslutning" - -msgid "Wireless Network" -msgstr "Trådløst Nettverk" - -msgid "Wireless Overview" -msgstr "Trådløs Oversikt" - -msgid "Wireless Security" -msgstr "Trådløs Sikkerhet" - -msgid "Wireless is disabled or not associated" -msgstr "Trådløs er deaktiver eller ikke tilknyttet" - -msgid "Wireless is restarting..." -msgstr "Trådløst starter på nytt..." - -msgid "Wireless network is disabled" -msgstr "Trådløst nettverk er deaktivert" - -msgid "Wireless network is enabled" -msgstr "Trådløst nettverk er aktivert" - -msgid "Wireless restarted" -msgstr "Trådløst startet på nytt" - -msgid "Wireless shut down" -msgstr "Trådløst er slått av" - -msgid "Write received DNS requests to syslog" -msgstr "Skriv mottatte DNS forespørsler til syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Her kan du aktivere eller deaktivere installerte oppstartsskript. Enheten må " -"omstartes før endringene blir tatt i bruk.
    Advarsel: Om du " -"deaktiverer nødvendige init skript som f.eks. \"nettverk\", kan enheten bli " -"utilgjengelig! " - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Du må aktivere JavaScript i nettleseren din ellers vil ikke LuCI fungere " -"skikkelig." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "enhver" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "brokoblet" - -msgid "create:" -msgstr "opprett:" - -msgid "creates a bridge over specified interface(s)" -msgstr "Oppretter en bro mellom angitte grensesnitt" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "Deaktiver" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "utgått" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"filen der gitt DHCP-leier vil bli lagret" - -msgid "forward" -msgstr "videresend" - -msgid "full-duplex" -msgstr "full-dupleks" - -msgid "half-duplex" -msgstr "halv-dupleks" - -msgid "help" -msgstr "Hjelp" - -msgid "hidden" -msgstr "skjult" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "Dersom målet er et nettverk" - -msgid "input" -msgstr "inndata" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "lokal DNS-fil" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "nei" - -msgid "no link" -msgstr "ingen forbindelse" - -msgid "none" -msgstr "ingen" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "av" - -msgid "on" -msgstr "på" - -msgid "open" -msgstr "åpen" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "rutet" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "tagget" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "ukjent" - -msgid "unlimited" -msgstr "ubegrenset" - -msgid "unspecified" -msgstr "uspesifisert" - -msgid "unspecified -or- create:" -msgstr "uspesifisert --eller-- opprett:" - -msgid "untagged" -msgstr "utagget" - -msgid "yes" -msgstr "ja" - -msgid "« Back" -msgstr "« Tilbake" - -#~ msgid "Leasetime" -#~ msgstr "Leietid" - -#~ msgid "AR Support" -#~ msgstr "AR Støtte" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s Trådløs Kontroller" - -#~ msgid "Background Scan" -#~ msgstr "Bakgrunns Skanning" - -#~ msgid "Compression" -#~ msgstr "Komprimering" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Deaktiver HW-Beacon timer" - -#~ msgid "Do not send probe responses" -#~ msgstr "Ikke send probe svar" - -#~ msgid "Fast Frames" -#~ msgstr "Fast Frames" - -#~ msgid "Maximum Rate" -#~ msgstr "Maksimal hastighet" - -#~ msgid "Minimum Rate" -#~ msgstr "Minimum hastighet" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast hastighet" - -#~ msgid "Outdoor Channels" -#~ msgstr "Utendørs Kanaler" - -#~ msgid "Regulatory Domain" -#~ msgstr "Regulerende Domene" - -#~ msgid "Separate WDS" -#~ msgstr "Separert WDS" - -#~ msgid "Static WDS" -#~ msgstr "Statisk WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo Modus" - -#~ msgid "XR Support" -#~ msgstr "XR Støtte" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Et nytt nettverk vil bli opprettet hvis du tar bort haken." - -#~ msgid "Join Network: Settings" -#~ msgstr "Koble til nettverk: Innstilling" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Port %d er utagget i flere VLANs!" - -#~ msgid "VLAN Interface" -#~ msgstr "VLAN grensesnitt" diff --git a/package/luci/modules/luci-base/po/pl/base.po b/package/luci/modules/luci-base/po/pl/base.po deleted file mode 100644 index 22902c4997..0000000000 --- a/package/luci/modules/luci-base/po/pl/base.po +++ /dev/null @@ -1,4063 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-20 09:40+0200\n" -"PO-Revision-Date: 2014-04-23 19:15+0200\n" -"Last-Translator: goodgod261 \n" -"Language-Team: Polish\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(okno %d minut, interwał %d sekund)" - -msgid "(%s available)" -msgstr "(dostępne %s)" - -msgid "(empty)" -msgstr "(pusty)" - -msgid "(no interfaces attached)" -msgstr "(brak podłączonych interfejsów)" - -msgid "-- Additional Field --" -msgstr "-- Dodatkowe pole --" - -msgid "-- Please choose --" -msgstr "-- Proszę wybrać --" - -msgid "-- custom --" -msgstr "-- własne --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Obciążenie 1 min.:" - -msgid "15 Minute Load:" -msgstr "Obciążenie 15 min.:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Obciążenie 5 min.:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "Port wywołania DNS" - -msgid "DNS server port" -msgstr "Port serwera DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Nazwa DNS będzie rozwijana przez " -"kolejne serwery w porządku podanym w resolvfile" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Adres IPv4" - -msgid "IPv4-Gateway" -msgstr "Brama IPv4" - -msgid "IPv4-Netmask" -msgstr "Maska sieci IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Adres sieci (CIDR) IPv6" - -msgid "IPv6-Gateway" -msgstr "Brama IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Konfiguracja diod LED" - -msgid "LED Name" -msgstr "Nazwa diody LED" - -msgid "MAC-Address" -msgstr "Adres MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Maks. dzierżaw DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Maks. rozmiar pakietu EDNS0" - -msgid "Max. concurrent queries" -msgstr "Maks. zapytań równoczesnych" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Próg powtórzeń ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Mostki ATM" - -# Nie wiem czy to powinno się tłumaczyć wg. mnie lepiej zostawić po angielsku -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identyfikator kanału wirtualnego ATM (VCI)" - -# j.w. -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identyfikator ścieżki wirtualnej ATM (VPI)" - -# Jak zwykle zakręciłem...niech ktoś poprawi -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Mostki ATM maskują za-kapsułkowane ramki Ethernet w połączeniach AAL5 jako " -"wirtualne interfejsy w Linuksie. Interfejsy takie mogą być użyte w " -"połączeniu z protokołami DHCP lub PPP do wdzwaniania się do sieci provider`a" - -msgid "ATM device number" -msgstr "Numer urządzenia ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -# co to takiego? -msgid "Access Concentrator" -msgstr "Koncentrator dostępowy ATM" - -msgid "Access Point" -msgstr "Punkt dostępowy" - -msgid "Action" -msgstr "Akcja" - -msgid "Actions" -msgstr "Akcje" - -msgid "Activate this network" -msgstr "Aktywuj tą sieć" - -msgid "Active IPv4-Routes" -msgstr "" -"Aktywne trasy routingu IPv4" - -msgid "Active IPv6-Routes" -msgstr "" -"Aktywne trasy routingu IPv6" - -msgid "Active Connections" -msgstr "Aktywne połączenia" - -msgid "Active DHCP Leases" -msgstr "Aktywne dzierżawy DHCP" - -msgid "Active DHCPv6 Leases" -msgstr "Aktywne dzierżawy DHCPv6" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Dodaj" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Dodaj lokalny sufiks domeny do nazw urządzeń z pliku hosts" - -msgid "Add new interface..." -msgstr "Dodaj nowy interfejs..." - -msgid "Additional Hosts files" -msgstr "Dodatkowe pliki Hosts" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adres" - -# Na upartego można by zrobić Adres dostępowy mostu przekaźnikowego - ale kto to zrozumie? -msgid "Address to access local relay bridge" -msgstr "Adres dostępowy do \"relay bridge\"" - -msgid "Administration" -msgstr "Zarządzanie" - -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alarm" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Pozwól na logowanie SSH" - -msgid "Allow all except listed" -msgstr "Pozwól wszystkim oprócz wymienionych" - -msgid "Allow listed only" -msgstr "Pozwól tylko wymienionym" - -msgid "Allow localhost" -msgstr "Pozwól tylko sobie (localhost)" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Pozwól zdalnym komputerom na połączenia SSH do lokalnych przekierowanych " -"portów" - -msgid "Allow root logins with password" -msgstr "Zezwól na logowanie roota przy pomocy hasła" - -# Brak spacji... -msgid "Allow the root user to login with password" -msgstr "Pozwól użytkownikowi root na logowanie przy pomocy hasła" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Pozwól na ruch wychodzący (odpowiedzi) z podsieci 127.0.0.0/8, np. usługi RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Ustawienia anteny" - -msgid "Any zone" -msgstr "Dowolna strefa" - -msgid "Apply" -msgstr "Zatwierdź" - -msgid "Applying changes" -msgstr "Wprowadzam zmiany" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Przypisz interfejsy..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Połączone stacje" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Uwierzytelnianie" - -msgid "Authentication Type" -msgstr "" - -# Nawet M$ tego nie tłumaczy;) -msgid "Authoritative" -msgstr "Autorytatywny" - -msgid "Authorization Required" -msgstr "Wymagana autoryzacja" - -msgid "Auto Refresh" -msgstr "Automatyczne odświeżanie" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Dostępne" - -msgid "Available packages" -msgstr "Dostępne pakiety" - -msgid "Average:" -msgstr "Średnia:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Wróć" - -msgid "Back to Overview" -msgstr "Wróć do przeglądu" - -msgid "Back to configuration" -msgstr "Wróć do konfiguracji" - -msgid "Back to overview" -msgstr "Wróć do przeglądu" - -msgid "Back to scan results" -msgstr "Wróć do wyników skanowania" - -msgid "Backup / Flash Firmware" -msgstr "Kopia zapasowa/aktualizacja firmware" - -# NIe ma powodu skracać tekstu, zmieści się w polu. -msgid "Backup / Restore" -msgstr "Kopia zapasowa/Przywróć" - -msgid "Backup file list" -msgstr "Kopia zapas. listy plików" - -msgid "Bad address specified!" -msgstr "Wprowadzono zły adres" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Poniżej widoczna jest lista plików przeznaczonych do kopii zapasowej. " -"Zawiera ona zmienione pliki konfiguracyjne oznaczone przez opkg, podstawowe " -"pliki systemowe, oraz pliki oznaczone do kopiowania przez użytkownika." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Przepływność" - -msgid "Bogus NX Domain Override" -msgstr "Podrób statystyki NXDOMAIN" - -msgid "Bridge" -msgstr "Most" - -msgid "Bridge interfaces" -msgstr "Interfejs mostu" - -msgid "Bridge unit number" -msgstr "Numer Mostu (urządzenia)" - -# Podejrzewam że chodzi o interfejs? mam rację? -msgid "Bring up on boot" -msgstr "Podnieś przy stracie" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Bezprzewodowy kontroler Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Bezprzewodowy kontroler Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "Buforowana" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Przyciski" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Użycie CPU (%)" - -msgid "Cancel" -msgstr "Anuluj" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Łańcuch" - -msgid "Changes" -msgstr "Zmiany" - -msgid "Changes applied." -msgstr "Zmiany zostały zastosowane." - -msgid "Changes the administrator password for accessing the device" -msgstr "Zmienia hasło administratora" - -msgid "Channel" -msgstr "Kanał" - -msgid "Check" -msgstr "Sprawdź" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Suma kontrolna" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Wybierz strefę firewalla którą chcesz przypisać do tego interfejsu. Wybierz " -"unspecified aby usunąć interfejs z przypisanej strefy lub wybierz " -"pole create aby zdefiniować nową strefę i przypisać ją do " -"interfejsu." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Wybierz sieć/sieci które chcesz przyłączyć do tego interfejsu " -"bezprzewodowego lub wypełnij pole utwórz aby utworzyć nową sieć." - -msgid "Cipher" -msgstr "Szyfr" - -msgid "Cisco UDP encapsulation" -msgstr "" - -# Przyciski nazywają sie "Twórz archiwum" i "Wykonaj reset" a nie Przywróć Ustawienia -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Wciśnij \"Twórz archiwum\" aby pobrać archiwum tar zawierające bieżące pliki " -"konfiguracyjne. Aby przywrócić ustawienia domyślne wciśnij \"Wykonaj reset" -"\" (możliwe tylko w przypadku obrazu squashfs)." - -msgid "Client" -msgstr "Klient" - -msgid "Client ID to send when requesting DHCP" -msgstr "Nazwa (ID) klienta do wysłania podczas negocjacji DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Zamykaj nieaktywne połączenia po określonym czasie podanym w sekundach, " -"wpisz 0 aby uzyskać stałe połączenie." - -msgid "Close list..." -msgstr "Zamknij listę..." - -msgid "Collecting data..." -msgstr "Zbieranie danych..." - -msgid "Command" -msgstr "Polecenie" - -msgid "Common Configuration" -msgstr "Konfiguracja podstawowa" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Konfiguracja" - -msgid "Configuration applied." -msgstr "Konfiguracja została zastosowana." - -msgid "Configuration files will be kept." -msgstr "Pliki konfiguracyjne zostaną zachowane." - -msgid "Confirmation" -msgstr "Potwierdzenie" - -msgid "Connect" -msgstr "Połącz" - -msgid "Connected" -msgstr "Połączony" - -msgid "Connection Limit" -msgstr "Limit połączeń" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Połączenia" - -msgid "Country" -msgstr "Kraj" - -msgid "Country Code" -msgstr "Kod kraju" - -# Pokrywa następujące interfejsy -msgid "Cover the following interface" -msgstr "Pokrywa następujący interfejs" - -msgid "Cover the following interfaces" -msgstr "Pokrywa następujące interfejsy" - -msgid "Create / Assign firewall-zone" -msgstr "Utwórz / Przypisz strefę firewalla" - -msgid "Create Interface" -msgstr "Utwórz interfejs" - -msgid "Create a bridge over multiple interfaces" -msgstr "Utwórz most pomiędzy wieloma interfejsami" - -msgid "Critical" -msgstr "Krytyczne" - -msgid "Cron Log Level" -msgstr "Poziom logowania Cron`a" - -msgid "Custom Interface" -msgstr "Interfejs Niestandardowy" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -# Spacji zabrało i napisy się skleiły -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Dostosuj zachowanie diod LED " -"urządzenia jeśli jest to możliwe." - -msgid "DHCP Leases" -msgstr "Dzierżawy DHCP" - -msgid "DHCP Server" -msgstr "Serwer DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP i DNS" - -msgid "DHCP client" -msgstr "Klient DHCP" - -msgid "DHCP-Options" -msgstr "Opcje DHCP" - -msgid "DHCPv6 Leases" -msgstr "Dzierżawy DHCPv6" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Przekierowania DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Debug" - -msgid "Default %d" -msgstr "Domyślne %d" - -msgid "Default gateway" -msgstr "Brama domyślna" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Stan domyślny" - -msgid "Define a name for this network." -msgstr "Określ nazwę dla tej sieci." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Zdefiniuj dodatkowe opcje DHCP, np. \"6,192.168.2.1,192.168.2.2" -"\" rozgłasza domyślne serwery DNS klientom DHCP." - -msgid "Delete" -msgstr "Usuń" - -msgid "Delete this network" -msgstr "Usuń tą sieć" - -msgid "Description" -msgstr "Opis" - -# Ktoś tłumaczył bez zobaczenia tego w gui. Dotyczy zmiany motywu ten opis. -msgid "Design" -msgstr "Motyw" - -msgid "Destination" -msgstr "Przeznaczenie" - -msgid "Device" -msgstr "Urządzenie" - -msgid "Device Configuration" -msgstr "Konfiguracja urządzenia" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnostyka" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Katalog" - -msgid "Disable" -msgstr "Wyłącz" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Wyłącz DHCP na " -"tym interfejsie." - -msgid "Disable DNS setup" -msgstr "Wyłącz konfigurowanie DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Wyłączony" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Odrzuć wychodzące odpowiedzi RFC1918" - -msgid "Displaying only packages containing" -msgstr "Pokazuję tylko paczki zawierające" - -msgid "Distance Optimization" -msgstr "Optymalizacja odległości" - -msgid "Distance to farthest network member in meters." -msgstr "Odległość do najdalej oddalonego członka sieci w metrach." - -msgid "Distribution feeds" -msgstr "" - -# Jak poprzednio trzymam się konwencji -msgid "Diversity" -msgstr "Wielorakość" - -# Nie wiem czy nie zamotałem ja rozumiem;) -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq jest to serwer DHCP połączony z serwerem DNS. Jest to serwer przekazujący (Fowarder) dla firewalli NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Nie cache`uj odpowiedzi negatywnych, np. nie dla bieżących domen" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Nie przekazuj zapytań które nie mogą być zrealizowane przez publiczne " -"serwery nazw" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Nie przekazuj odwrotnych lookup`ów do sieci lokalnych" - -msgid "Domain required" -msgstr "Wymagana domena" - -msgid "Domain whitelist" -msgstr "Whitelist domen (Dozwolone domeny)" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Nie przekazuj zapytań DNS bez " -"nazwy DNS'a" - -msgid "Download and install package" -msgstr "Pobierz i zainstaluj pakiet" - -msgid "Download backup" -msgstr "Pobierz kopię zapasową" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Usługa Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear oferuje zdalny dostęp do konsoli (shell`a) poprzez swojego klienta " -"SSH oraz serwer SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -# "n" brakowało... -msgid "Dynamic DHCP" -msgstr "" -"DHCP dynamiczne" - -msgid "Dynamic tunnel" -msgstr "Tunel dynamiczny" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Dynamicznie rezerwuje adresy DHCP dla klientów. Jeśli jest wyłączone tylko " -"klienci posiadający stałe dzierżawy będą obsłużeni." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Metoda EAP" - -msgid "Edit" -msgstr "Edycja" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Edytuj ten interfejs" - -msgid "Edit this network" -msgstr "Edytuj tą sieć" - -# dosłownie nagły wypadek -msgid "Emergency" -msgstr "Zagrożenie" - -msgid "Enable" -msgstr "Włącz" - -msgid "Enable STP" -msgstr "Włącz STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Włącz dynamiczną aktualizację punktu końcowego sieci HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Włącz negocjację IPv6 na łączu PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Włącz przechodzenie ramek Jumbo" - -msgid "Enable NTP client" -msgstr "Włącz klienta NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Włącz serwer TFTP" - -msgid "Enable VLAN functionality" -msgstr "Włącz funkcjonalność VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Włącz uczenie się i starzenie" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Włącz ten punkt montowania" - -msgid "Enable this swap" -msgstr "Włącz ten swap" - -msgid "Enable/Disable" -msgstr "Wlącz/Wyłącz" - -msgid "Enabled" -msgstr "Włączony" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" -"Włącz protokół STP na tym " -"moście" - -# a może sposób kapsułkowania byłby lepszy? -msgid "Encapsulation mode" -msgstr "Sposób Enkapsulacji" - -msgid "Encryption" -msgstr "Szyfrowanie" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Usuwanie..." - -msgid "Error" -msgstr "Błąd" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Karta Ethernet" - -msgid "Ethernet Switch" -msgstr "Switch Ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Rozwiń hosty" - -msgid "Expires" -msgstr "Wygasa" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Czas wygasania dzierżawy adresu, minimum to 2 Minuty (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Zewnętrzny serwer dla loga systemowego" - -msgid "External system log server port" -msgstr "Port zewnętrznego serwera dla loga systemowego" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Plik" - -msgid "Filename of the boot image advertised to clients" -msgstr "Rozgłoszono nazwę pliku obrazu startowego do klientów" - -msgid "Filesystem" -msgstr "System plików" - -msgid "Filter" -msgstr "Filtr" - -msgid "Filter private" -msgstr "Filtruj prywatne" - -msgid "Filter useless" -msgstr "Filtruj bezużyteczne" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Znajdź i podłącz się do sieci" - -msgid "Find package" -msgstr "Znajdź pakiet" - -msgid "Finish" -msgstr "Zakończ" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -# Nie ma potrzeby pisania z dużej litery -msgid "Firewall Settings" -msgstr "Ustawienia firewalla" - -msgid "Firewall Status" -msgstr "Stan firewalla" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Wersja firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Stały port źródłowy dla wychodzących zapytań DNS" - -msgid "Flash Firmware" -msgstr "Aktualizuj firmware" - -msgid "Flash image..." -msgstr "Wgraj obraz..." - -msgid "Flash new firmware image" -msgstr "Wgraj nowy firmware" - -msgid "Flash operations" -msgstr "Operacje aktualizacji" - -msgid "Flashing..." -msgstr "Flashowanie..." - -msgid "Force" -msgstr "Wymuś" - -msgid "Force CCMP (AES)" -msgstr "Wymuś CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Wymuś uruchomienie serwera DHCP w tej sieci nawet gdy wykryto inny serwer." - -msgid "Force TKIP" -msgstr "Wymuś TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Wymuś TKIP i CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Przekazuj ruch DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Przekazuj broadcast`y" - -msgid "Forwarding mode" -msgstr "Tryb przekazywania" - -msgid "Fragmentation Threshold" -msgstr "Próg Fragmentacji" - -msgid "Frame Bursting" -msgstr "Dzielenie ramek" - -msgid "Free" -msgstr "Wolna" - -msgid "Free space" -msgstr "Wolna przestrzeń" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Tylko GPRS" - -msgid "Gateway" -msgstr "Brama" - -msgid "Gateway ports" -msgstr "Porty bramy" - -msgid "General Settings" -msgstr "Ustawienia główne" - -msgid "General Setup" -msgstr "Ustawienia podstawowe" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Twórz archiwum" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Ogólny bezprzewodowy kontroler 802.11%s" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"Hasło nie zostało zmienione, wpisane poprzednie hasło routera jest " -"niewłaściwe!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Przejdź do konfiguracji hasła..." - -msgid "Go to relevant configuration page" -msgstr "Przejdź do powiązanych ustawień" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Hasło HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Uchwyt" - -msgid "Hang Up" -msgstr "Rozłącz" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Tutaj możesz skonfigurować podstawowe ustawienia twojego urządzenia, np. " -"nazwę hosta, strefę czasową." - -# nie ma słowa "autentykacji". Uwierzytelnianie! -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Tutaj wklej swoje klucze publiczne SSH (po jednym w linii), dla " -"uwierzytelniania SSH" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Kontroler bezprzewodowy Hermes 802.11b" - -msgid "Hide ESSID" -msgstr "" -"Ukryj ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Wpisy PC" - -msgid "Host expiry timeout" -msgstr "Czas wygasania hosta" - -msgid "Host-IP or Network" -msgstr "IP lub sieć Hosta" - -msgid "Hostname" -msgstr "Nazwa hosta" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nazwa hosta do wysłania podczas negocjacji DHCP" - -msgid "Hostnames" -msgstr "Nazwy hostów" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Adres IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Firewall IPv4" - -msgid "IPv4 WAN Status" -msgstr "Status IPv4 WAN" - -msgid "IPv4 address" -msgstr "Adres IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 oraz IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Broadcast IPv4" - -msgid "IPv4 gateway" -msgstr "Brama IPv4" - -msgid "IPv4 netmask" -msgstr "Maska IPv4" - -msgid "IPv4 only" -msgstr "Tylko IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Długość prefiksu IPv4" - -msgid "IPv4-Address" -msgstr "Adres IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Firewall IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Status WAN IPv6" - -msgid "IPv6 address" -msgstr "Adres IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Brama IPv6" - -msgid "IPv6 only" -msgstr "Tylko IPv6" - -msgid "IPv6 prefix" -msgstr "Prefiks IPv6" - -msgid "IPv6 prefix length" -msgstr "Długość prefiksu IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Adres IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-w-IPv4 (RFC4213)" - -# 6rd to nie "szóste", tylko IPv6 rapid deployment -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-przez-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-przez-IPv4 (6to4)" - -msgid "Identity" -msgstr "Tożsamość" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Jeśli podano, zainstaluj urządzenie poprzez jego UUID zamiast ustalonego węzła urządzenia" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Jeśli podano, zainstaluj urządzenie poprzez nazwę partycji zamiast ustalonego węzła urządzenia" - -msgid "If unchecked, no default route is configured" -msgstr "Jeśli odznaczone, nie ma zdefiniowanej domyślnej ścieżki routingu" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Jeśli odznaczone, rozgłoszane adresy serwerów DNS są ignorowane" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Jeśli ilość twojej pamięci fizycznej jest niewystarczająca, nieużywane " -"miejsce na dysku może być tymczasowo wykorzystane na urządzenie pliku " -"wymiany. W rezultacie większa ilość pamięci RAM będzie dostępna. Uwaga - plik wymiany jest dużo " -"wolniejszy niż pamięć RAM." - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "Ignoruj interfejs" - -msgid "Ignore resolve file" -msgstr "Ignoruj pliki resolve" - -msgid "Image" -msgstr "Obraz" - -msgid "In" -msgstr "W" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Czas bezczynności" - -msgid "Inbound:" -msgstr "Przychodzący:" - -msgid "Info" -msgstr "Info" - -msgid "Initscript" -msgstr "Skrypt startowy" - -msgid "Initscripts" -msgstr "Skrypty startowe" - -msgid "Install" -msgstr "Instaluj" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instaluj pakiet %q" - -msgid "Install protocol extensions..." -msgstr "Instaluj rozszerzenia protokołów..." - -msgid "Installed packages" -msgstr "Zainstalowane pakiety" - -msgid "Interface" -msgstr "Interfejs" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Konfiguracja Interfejsu" - -# Tam jest lista interfejsów.... -msgid "Interface Overview" -msgstr "Przegląd Interfejsów" - -msgid "Interface is reconnecting..." -msgstr "Ponowne łączenie interfejsu..." - -msgid "Interface is shutting down..." -msgstr "Interfejs jest wyłączany..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Interfejs nie istnieje lub nie jest jeszcze podłączony." - -msgid "Interface reconnected" -msgstr "Połączono ponownie interfejs" - -msgid "Interface shut down" -msgstr "Wyłączono interfejs" - -msgid "Interfaces" -msgstr "Interfejsy" - -msgid "Internal" -msgstr "" - -# Nadużycie tagu abbr uważam za uzasadnione. -msgid "Internal Server Error" -msgstr "Wewnętrzny błąd serwera" - -msgid "Invalid" -msgstr "Niewłaściwy" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "Podano niewłaściwy ID VLAN`u! Dozwolone są tylko ID pomiędzy %d a %d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Podano niewłaściwy ID VLAN`u! Dozwolone są tylko unikalne ID." - -msgid "Invalid username and/or password! Please try again." -msgstr "Niewłaściwy login i/lub hasło! Spróbuj ponownie." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Wygląda na to, że próbujesz wgrać obraz większy niż twoja pamięć flash, " -"proszę sprawdź czy to właściwy obraz!" - -msgid "JavaScript required!" -msgstr "JavaScript jest wymagany!" - -msgid "Join Network" -msgstr "Połącz z siecią" - -msgid "Join Network: Wireless Scan" -msgstr "Przyłącz do sieci: Skanuj sieci WiFi" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Zachowaj ustawienia" - -msgid "Kernel Log" -msgstr "Log jądra" - -msgid "Kernel Version" -msgstr "Wersja jądra" - -msgid "Key" -msgstr "Klucz" - -msgid "Key #%d" -msgstr "Klucz #%d" - -msgid "Kill" -msgstr "Zabij" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Serwer L2TP" - -msgid "LCP echo failure threshold" -msgstr "Próg błędu echa LCP" - -msgid "LCP echo interval" -msgstr "Częstotliwość echa LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Oznaczenie" - -msgid "Language" -msgstr "Język" - -msgid "Language and Style" -msgstr "Wygląd i język" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Czas ważności dzierżawy" - -msgid "Leasefile" -msgstr "Plik dzierżaw" - -msgid "Leasetime remaining" -msgstr "Pozostały czas dzierżawy" - -msgid "Leave empty to autodetect" -msgstr "Pozostaw niewypełnione dla autodetekcji" - -msgid "Leave empty to use the current WAN address" -msgstr "Pozostaw niewypełnione aby użyć bieżącego adresu WAN" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Połączenie aktywne" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Lista serwerów DNS do których będą " -"przekazywane zapytania" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Lista domen zezwalających na odpowiedzi RFC1918" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Lista hostów które dostarczają zafałszowane wyniki NX domain" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Słuchaj tylko na podanym interfejsie, lub jeśli nie podano na wszystkich" - -msgid "Listening port for inbound DNS queries" -msgstr "Port nasłuchu dla przychodzących zapytań DNS" - -msgid "Load" -msgstr "Obciążenie" - -msgid "Load Average" -msgstr "Średnie obciążenie" - -msgid "Loading" -msgstr "Ładowanie" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Lokalny adres IPv4" - -msgid "Local IPv6 address" -msgstr "Lokalny adres IPv6" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Lokalny autostart" - -msgid "Local Time" -msgstr "Czas lokalny" - -msgid "Local domain" -msgstr "Domena lokalna" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Specyfikacja domeny lokalnej. Nazwy należące do tej domeny nie są " -"przekazywane dalej ani rozwijane przez DHCP lub tylko pliki hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Przyrostek (suffiks) domeny przyłączany do nazw DHCP i wpisów w pliku hosts" - -msgid "Local server" -msgstr "Serwer lokalny" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Zlokalizuj nazwę hosta w zależności od odpytującej podsieci jeśli jest " -"dostępne więcej niż jedno IP" - -msgid "Localise queries" -msgstr "Zapytania lokalizujące" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Poziom logowania" - -msgid "Log queries" -msgstr "Loguj zapytania" - -msgid "Logging" -msgstr "Logowanie" - -msgid "Login" -msgstr "Zaloguj" - -msgid "Logout" -msgstr "Wyloguj" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Najniższy wydzierżawiony adres jako offset dla adresu sieci." - -msgid "MAC-Address" -msgstr "Adres MAC" - -msgid "MAC-Address Filter" -msgstr "Filtr adresów MAC" - -msgid "MAC-Filter" -msgstr "Filtr adresów MAC" - -msgid "MAC-List" -msgstr "Lista MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Maksymalna dozwolona liczba aktywnych dzierżaw DHCP" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Maksymalna dozwolona liczba jednoczesnych zapytań DNS" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Maksymalny dozwolony rozmiar pakietu EDNS.0 UDP" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Maksymalny czas podany w sekundach do pełnej gotowości modemu" - -msgid "Maximum hold time" -msgstr "Maksymalny czas podtrzymania" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Maksymalna liczba dzierżawionych adresów." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Pamięć" - -msgid "Memory usage (%)" -msgstr "Użycie pamięci (%)" - -msgid "Metric" -msgstr "Metryka" - -msgid "Minimum hold time" -msgstr "Minimalny czas podtrzymania" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Brakujące rozszerzenie protokołu dla protokołu %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Tryb" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Modem" - -msgid "Modem init timeout" -msgstr "Limit czasu inicjacji modemu" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Wpis montowania" - -msgid "Mount Point" -msgstr "Punkt montowania" - -msgid "Mount Points" -msgstr "Punkty montowania" - -msgid "Mount Points - Mount Entry" -msgstr "Punkty montowania - Wpis montownia" - -msgid "Mount Points - Swap Entry" -msgstr "Punkty montowania - Wpis Swap" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Punkty montowania definiują gdzie urządzenie pamięci zostanie podłączone do " -"systemu plików" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Opcje montowania" - -msgid "Mount point" -msgstr "Punkt montownia" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Zamontowane systemy plików" - -msgid "Move down" -msgstr "Przesuń w dół" - -msgid "Move up" -msgstr "Przesuń w górę" - -msgid "Multicast address" -msgstr "Adres Multicast`u" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Lista serwerów NTP" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Nazwa" - -msgid "Name of the new interface" -msgstr "Nazwa nowego interfejsu" - -msgid "Name of the new network" -msgstr "Nazwa nowej sieci" - -msgid "Navigation" -msgstr "Nawigacja" - -msgid "Netmask" -msgstr "Maska sieci" - -msgid "Network" -msgstr "Sieć" - -msgid "Network Utilities" -msgstr "Narzędzia sieciowe" - -msgid "Network boot image" -msgstr "Sieciowy obraz startowy" - -msgid "Network without interfaces." -msgstr "Sieć bez interfejsów" - -msgid "Next »" -msgstr "Następna »" - -msgid "No DHCP Server configured for this interface" -msgstr "Brak skonfigurowanego serwera DHCP dla tego interfejsu" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Brak łańcuchów w tej tablicy" - -msgid "No files found" -msgstr "Nie znaleziono plików" - -msgid "No information available" -msgstr "Brak dostępnych informacji" - -msgid "No negative cache" -msgstr "Brak odwrotnego cache`a" - -msgid "No network configured on this device" -msgstr "Brak skonfigurowanych sieci na tym urządzeniu" - -msgid "No network name specified" -msgstr "Nie podano nazwy sieci" - -msgid "No package lists available" -msgstr "Brak dostępu do listy pakietów" - -msgid "No password set!" -msgstr "Nie ustawiono hasła!" - -msgid "No rules in this chain" -msgstr "Brak zasad w tym łańcuchu" - -msgid "No zone assigned" -msgstr "Brak przypisanej strefy" - -msgid "Noise" -msgstr "Szum" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Szum:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Brak" - -msgid "Normal" -msgstr "Normalny" - -msgid "Not Found" -msgstr "Nie znaleziono" - -msgid "Not associated" -msgstr "Nie powiązany" - -msgid "Not connected" -msgstr "Nie podłączony" - -msgid "Note: Configuration files will be erased." -msgstr "UWAGA: Pliki konfiguracyjne zostaną usunięte." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Spostrzeżenie" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Konfiguracja OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "Zwłoka wyłączenia" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Na tej stronie można skonfigurować interfejsy urządzenia. Możesz zmostkować " -"kilka interfejsów zaznaczając pole \"mostkuj interfejsy\", a następnie " -"wpisując ich nazwy oddzielone spacjami. Można także użyć notacji VLAN`ów INTERFACE.VLANNR " -"(np.: eth0.1)." - -msgid "On-State Delay" -msgstr "Zwłoka włączenia" - -msgid "One of hostname or mac address must be specified!" -msgstr "Nazwa hosta lub adres MAC musu być podany!" - -msgid "One or more fields contain invalid values!" -msgstr "Jedno lub więcej pól zawiera nieprawidłowe wartości!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Jedno lub więcej pól nie posiada wpisanych wartości!" - -msgid "Open list..." -msgstr "Otwórz listę..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Wartość zmieniona" - -msgid "Option removed" -msgstr "Usunięto wartość" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opcje" - -msgid "Other:" -msgstr "Inne:" - -msgid "Out" -msgstr "Wychodzące" - -msgid "Outbound:" -msgstr "Wychodzący:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Nadpisz adres MAC" - -msgid "Override MTU" -msgstr "Nadpisz MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Nadpisz adres bramy w odpowiedziach DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Nadpisz maskę sieci wysyłaną do klientów. Zazwyczaj jest ona wyliczana z " -"podsieci która jest rozsyłana." - -msgid "Override the table used for internal routes" -msgstr "Nadpisz tablicę routingu używaną dla wewnętrznych tras routowania" - -msgid "Overview" -msgstr "Przegląd" - -msgid "Owner" -msgstr "Właściciel" - -msgid "PAP/CHAP password" -msgstr "Hasło PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Nazwa użytkownika PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Enkapsulacja PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Wymagany pakiet libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Lista pakietów jest starsza niż 24 godziny" - -msgid "Package name" -msgstr "Nazwa pakietu" - -msgid "Packets" -msgstr "Pakiety" - -msgid "Part of zone %q" -msgstr "Część strefy %q" - -msgid "Password" -msgstr "Hasło" - -msgid "Password authentication" -msgstr "Identyfikacja hasłem" - -msgid "Password of Private Key" -msgstr "Hasło lub klucz prywatny" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Pomyślnie zmieniono hasło!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Ścieżka do certyfikatu CA" - -msgid "Path to Client-Certificate" -msgstr "Ścieżka do certyfikatu Klienta" - -msgid "Path to Private Key" -msgstr "Ścieżka do Klucza Prywatnego" - -msgid "Path to executable which handles the button event" -msgstr "" -"Ścieżka do pliku wykonywalnego, który obsługuje zdarzenie dla danego " -"przycisku" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Szczyt:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Wykonaj restart" - -msgid "Perform reset" -msgstr "Wykonaj reset" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Szybkość Phy:" - -msgid "Physical Settings" -msgstr "Ustawienia sprzętowe" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pktw." - -msgid "Please enter your username and password." -msgstr "Proszę wprowadź swój login i hasło." - -msgid "Policy" -msgstr "Zasada" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Status portu:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Zakładaj że klient jest martwy po danej ilości błedów odpowiedzi echa LCP, " -"wpisz 0 aby zignorować błędy" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Zapobiegaj komunikacji klientów pomiędzy sobą" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Kontroler bezprzewodowy Prism2/2.5/3 802.11b" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Wykonaj" - -msgid "Processes" -msgstr "Procesy" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokół" - -msgid "Protocol family" -msgstr "Rodzina protokołów" - -msgid "Protocol of the new interface" -msgstr "Protokół nowego interfejsu" - -msgid "Protocol support is not installed" -msgstr "Wsparcie dla protokołu nie jest zainstalowane" - -# Opcja dotyczy włączenia serwera czasu, więc "podaj" nie jest właściwym tłumaczeniem w tym miejscu - obsy -msgid "Provide NTP server" -msgstr "Włącz serwer NTP" - -msgid "Provide new network" -msgstr "Utwórz nową sieć" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Jakość" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Próg RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Szybkość RX" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "Kontroler bezprzewodowy RaLink 802.11%s" - -msgid "Radius-Accounting-Port" -msgstr "Port Radius-Accounting" - -msgid "Radius-Accounting-Secret" -msgstr "Sekret Radius-Accounting" - -msgid "Radius-Accounting-Server" -msgstr "Serwer Radius-Accounting" - -msgid "Radius-Authentication-Port" -msgstr "Port Radius-Authentication" - -msgid "Radius-Authentication-Secret" -msgstr "Sekret Radius-Authentication" - -msgid "Radius-Authentication-Server" -msgstr "Serwer Radius-Authentication" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Przejrzyj plik /etc/ethers aby skonfigurować serwer DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Naprawdę usunąć ten interfejs? Usunięcie nie może zostać cofnięte!\n" -"Możesz stracić dostęp do tego urządzenia, jeśli jesteś połączony przez ten " -"interfejs!" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Naprawdę usunąć tę sieć bezprzewodową? Usunięcie nie może zostać cofnięte!\n" -"Możesz stracić dostęp do tego urządzenia, jeśli jesteś połączony przez tę " -"sieć!" - -msgid "Really reset all changes?" -msgstr "Naprawdę usunąć wszelkie zmiany?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Naprawdę wyłączyć tę sieć?\n" -"Możesz stracić dostęp do tego urządzenia jeśli jesteś połączony przez ten " -"interfejs!" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Naprawdę wyłączyć interfejs \"%s\"?\n" -"Możesz stracić dostęp do tego urządzenia jeśli jesteś połączony przez ten " -"interfejs!" - -msgid "Really switch protocol?" -msgstr "Naprawdę zmienić protokół?" - -msgid "Realtime Connections" -msgstr "Połączenia w czasie rzeczywistym" - -msgid "Realtime Graphs" -msgstr "Wykresy w czasie rzeczywistym" - -msgid "Realtime Load" -msgstr "Obciążenie w czasie rzeczywistym" - -msgid "Realtime Traffic" -msgstr "Ruch w czasie rzeczywistym" - -msgid "Realtime Wireless" -msgstr "WiFi w czasie rzeczywistym" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Przypisz ochronę" - -msgid "Reboot" -msgstr "Restart" - -msgid "Rebooting..." -msgstr "Ponowne uruchamianie..." - -msgid "Reboots the operating system of your device" -msgstr "Uruchamia ponownie system na twoim urządzeniu" - -msgid "Receive" -msgstr "Odebrane" - -msgid "Receiver Antenna" -msgstr "Antena odbiorcza" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Połącz ponownie ten interfejs" - -msgid "Reconnecting interface" -msgstr "Łączę ponownie interfejs" - -msgid "References" -msgstr "Referencje" - -msgid "Relay" -msgstr "Przekaźnik" - -msgid "Relay Bridge" -msgstr "Most przekaźnikowy" - -msgid "Relay between networks" -msgstr "Przekaźnik pomiędzy sieciami" - -msgid "Relay bridge" -msgstr "Most przekaźnikowy" - -msgid "Remote IPv4 address" -msgstr "Zdalny adres IPv4" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Usuń" - -msgid "Repeat scan" -msgstr "Powtórz skanowanie" - -msgid "Replace entry" -msgstr "Zamień wpis" - -msgid "Replace wireless configuration" -msgstr "Zamień konfigurację WiFi" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Wymagany dla niektórych dostawców internetu, np. Charter z DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Resetuj" - -msgid "Reset Counters" -msgstr "Wyczyść liczniki" - -msgid "Reset to defaults" -msgstr "Resetuj do domyślnych" - -msgid "Resolv and Hosts Files" -msgstr "Pliki Resolv i Hosts" - -msgid "Resolve file" -msgstr "Plik Resolve" - -msgid "Restart" -msgstr "Uruchom ponownie" - -msgid "Restart Firewall" -msgstr "Uruchom ponownie firewalla" - -msgid "Restore backup" -msgstr "Przywróć kopię zapasową" - -msgid "Reveal/hide password" -msgstr "Odsłoń/Ukryj hasło" - -msgid "Revert" -msgstr "Przywróć" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Katalog Root`a dla plików udostępnianych przez TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Hasło routera" - -msgid "Routes" -msgstr "Ścieżki routingu" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Ścieżki routingu pokazują routerowi przez który interfejs oraz którą bramę " -"może skomunikować się z daną siecią lub komputerem." - -msgid "Run a filesystem check before mounting the device" -msgstr "" -"Sprawdź czy system plików nie zawiera błędów przed zamontowaniem urządzenia" - -msgid "Run filesystem check" -msgstr "Sprawdź czy system plików nie zawiera błędów" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Dostęp SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Klucze SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Zapisz" - -msgid "Save & Apply" -msgstr "Zapisz i zastosuj" - -msgid "Save & Apply" -msgstr "Zapisz i zastosuj" - -msgid "Scan" -msgstr "Skanuj" - -# Raczej nie stosuje się kilku dużych liter w tym samym -msgid "Scheduled Tasks" -msgstr "Zaplanowane zadania" - -msgid "Section added" -msgstr "Dodano sekcję" - -msgid "Section removed" -msgstr "Usunięto sekcję" - -msgid "See \"mount\" manpage for details" -msgstr "Aby poznać szczegóły przeczytaj stronę instrukcji \"mount\"" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Co podany czas (w sekundach) wyślij zapytania LCP echo, to ustawienie działa " -"tylko gdy ustawiony jest próg błędu LCP echo" - -msgid "Separate Clients" -msgstr "Rozdziel klientów" - -msgid "Server Settings" -msgstr "Ustawienia serwera" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Nazwa serwisu" - -msgid "Service Type" -msgstr "Typ serwisu" - -msgid "Services" -msgstr "Serwisy" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Ustawienia synchronizacji czasu" - -msgid "Setup DHCP Server" -msgstr "Ustawienia serwera DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "Pokaż aktualną listę plików do backupu" - -msgid "Shutdown this interface" -msgstr "Wyłącz ten interfejs" - -msgid "Shutdown this network" -msgstr "Wyłącz tą sieć" - -msgid "Signal" -msgstr "Sygnał" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Sygnał:" - -msgid "Size" -msgstr "Rozmiar" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Pomiń" - -msgid "Skip to content" -msgstr "Pomiń do zawartości" - -msgid "Skip to navigation" -msgstr "Pomiń do nawigacji" - -msgid "Slot time" -msgstr "Szczelina czasowa" - -msgid "Software" -msgstr "Oprogramowanie" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Wartości pewnych pól są niewłaściwe, nie mogę ich zachować!" - -msgid "Sorry, the object you requested was not found." -msgstr "Przepraszamy, ale żądany obiekt nie został znaleziony." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Przepraszamy, ale serwer napotkał nieoczekiwany błąd." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Przepraszamy, ale nie ma wsparcia dla trybu sysupgrade. Nowy firmware musi " -"być wgrany ręcznie. Sprawdź stronę wiki, aby uzyskać instrukcję dla danego " -"urządzenia." - -msgid "Sort" -msgstr "Posortuj" - -msgid "Source" -msgstr "Źródło" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Określa zachowanie w zależności od stanu przycisku" - -msgid "Specifies the directory the device is attached to" -msgstr "Podaje katalog do którego jest podłączone urządzenie" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Określa port nasłuchu dla tej instancji Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Określa maksymalną ilość błędów dla zapytania ARP przed założeniem, że host " -"jest martwy" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Określa maksymalny czas w sekundach przed założeniem, że host jest martwy" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Określ tajny klucz szyfrowania." - -msgid "Start" -msgstr "Uruchomienie" - -msgid "Start priority" -msgstr "Priorytet uruchomienia" - -msgid "Startup" -msgstr "Autostart" - -msgid "Static IPv4 Routes" -msgstr "Statyczne ścieżki routingu IPv4" - -msgid "Static IPv6 Routes" -msgstr "Statyczne ścieżki routingu IPv6" - -msgid "Static Leases" -msgstr "Dzierżawy statyczne" - -msgid "Static Routes" -msgstr "Statyczne ścieżki routingu" - -msgid "Static address" -msgstr "Stały adres" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Statyczne dzierżawy są używane do przypisania stałych adresów IP i " -"symbolicznych nazw klientom DHCP. Są one również wymagane dla " -"niedynamicznych konfiguracji interfejsu, gdzie obsługiwane są tylko hosty z " -"odpowiednim dzierżawami." - -msgid "Status" -msgstr "Stan" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "Zachowaj kolejność" - -msgid "Submit" -msgstr "Wyślij" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Zamień wpis" - -msgid "Switch" -msgstr "Przełącznik" - -msgid "Switch %q" -msgstr "Przełącznik %q" - -msgid "Switch %q (%s)" -msgstr "Przełącznik %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Protokół przełącznika" - -msgid "Sync with browser" -msgstr "Synchronizuj z przeglądarką" - -msgid "Synchronizing..." -msgstr "Synchronizacja..." - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "Log systemowy" - -msgid "System Properties" -msgstr "Właściwości systemu" - -# Wszędzie używane jest "loga" z małej litery. -msgid "System log buffer size" -msgstr "Rozmiar bufora loga systemu" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Ustawienia TFTP" - -msgid "TFTP server root" -msgstr "Root serwera TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Szybkość TX" - -msgid "Table" -msgstr "Tablica" - -msgid "Target" -msgstr "Cel" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Zakończ" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Sekcja Konfiguracja Urządzenia zawiera sprzętowe ustawienia toru " -"transmisji radiowej takie jak kanał, moc sygnału, czy wybór anteny, które to " -"są wspólne dla wszystkich zdefiniowanych sieci bezprzewodowych (jeśli tor " -"transmisji jest kompatybilny z transmisją multi-SSID). Ustawienia sieci " -"takie jak szyfrowanie lub tryb operacji są zebrane w sekcji Konfiguracja " -"Interfejsu." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Pakiet libiwinfo-lua nie jest zainstalowany. Musisz go zainstalować " -"aby WiFi prawidłowo zadziałało!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Prefiks IPv6 przypisany do dostawcy, zazwyczaj kończy się ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Dozwolone znaki to: A-Z, a-z, 0-9 " -"oraz _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Plik urządzenia - pamięci lub partycji (np. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"System plików, który został użyty do sformatowania nośnika (np. ext3)" - -# Przycisk nazywa się "Wykonaj", więc taki sam opis ma być w podpowiedzi. -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Obraz flash`a został przesłany. Poniżej znajduje się suma kontrolna i " -"rozmiar obrazu, porównaj je z sumą kontrolną i rozmiarem oryginału, aby " -"upewnić się, że został przesłany poprawnie.
    Wciśnij \"Wykonaj\" aby " -"kontynuować aktualizację." - -msgid "The following changes have been committed" -msgstr "Następujące zmiany zostały zatwierdzone" - -msgid "The following changes have been reverted" -msgstr "Następujące zmiany zostały odrzucone" - -msgid "The following rules are currently active on this system." -msgstr "Następujące zasady są obecnie aktywne w tym systemie." - -msgid "The given network name is not unique" -msgstr "Podana sieć NIE jest unikalna" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Sprzęt nie jest urządzeniem typu multi-SSID, więc bieżąca konfiguracja " -"zostanie nadpisana nową jeśli będziesz kontynuować." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Długość prefiksu IPv4 w bitach, pozostała część jest używana w adresach IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Długość prefiksu IPv6 w bitach" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Porty sieciowe na tym urządzeniu mogą być łączone w kilka sieci VLAN, w których komputery mogą " -"komunikować się ze sobą bezpośrednio. Sieci VLAN są często stosowane w celu oddzielenia różnych " -"segmentów sieci. Często domyślnie jeden port typu Uplink jest wykorzystywany " -"do połączenia z większą siecią, taką jak Internet, a inne porty dla sieci " -"lokalnej." - -msgid "The selected protocol needs a device assigned" -msgstr "Wybrany protokół potrzebuje przypisanego urządzenia" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"System usuwa teraz partycję konfiguracji i zrestartuje się po zakończeniu." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"System wykonuje flashowanie.
    NIE WYŁĄCZAĆ URZĄDZENIA!
    Poczekaj " -"kilka minut, zanim spróbujesz połączyć się ponownie. W zależności od " -"ustawień może być konieczne odnowienie adresu Twojego komputera, aby dostać " -"się do urządzenia." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Przesłany plik obrazu nie zawiera obsługiwanego formatu. Upewnij się, że " -"wybrałeś odpowiedni format obrazu dla danej platformy." - -msgid "There are no active leases." -msgstr "Brak aktywnych dzierżaw." - -msgid "There are no pending changes to apply!" -msgstr "Brak oczekujących zmian do zastosowania!" - -msgid "There are no pending changes to revert!" -msgstr "Brak oczekujących zmian do przywrócenia!" - -msgid "There are no pending changes!" -msgstr "Brak oczekujących zmian!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Żadne urządzenie nie jest jeszcze przypisane. Proszę dołączyć urządzenie " -"sieciowe na karcie \"Ustawienia sprzętowe\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Hasło nie zostało ustawione. Proszę skonfigurować hasło roota, aby " -"zabezpieczyć interfejs WWW i włączyć SSH." - -msgid "This IPv4 address of the relay" -msgstr "Ten adres IPv4 przekaźnika" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Jest to lista globalnych wzorców dopasowywania plików i katalogów " -"uwzględnianych podczas przeprowadzania aktualizacji z użyciem \"sysupgrade" -"\". Zmodyfikowane pliki w /etc/config/ i w niektórych innych ustawieniach są " -"automatycznie zachowywane." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"To jest zawartość pliku /etc/rc.local. Wstaw tutaj własne komendy (przed " -"'exit 0'), aby zostały wykonane pod koniec procesu rozruchu." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"To jest lokalny adres końcowy przypisany przez tunnel broker'a, zwykle " -"kończący się z :2" - -# w tłumaczeniu pojawiła się spacja po DHCP
    co powoduje niepoprawne wyświetlanie się strony z lang PL -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"To jest jedyny serwer DHCP w sieci lokalnej" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"To jest system crontab, w którym mogą być zdefiniowane zaplanowane zadania." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Zwykle jest to adres najbliższego PoP prowadzonego przez tunnel broker'a" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Poniższa lista przedstawia aktualnie uruchomione procesy systemowe i ich " -"status." - -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Poniższa strona umożliwia konfigurację działania niestandardowych przycisków" - -msgid "This page gives an overview over currently active network connections." -msgstr "Poniższa strona przedstawia aktualnie aktywne połączenia sieciowe." - -msgid "This section contains no values yet" -msgstr "Ta sekcja nie zawiera jeszcze żadnych wartości" - -msgid "Time Synchronization" -msgstr "Synchronizacja czasu" - -msgid "Time Synchronization is not configured yet." -msgstr "Synchronizacja czasu nie jest jeszcze skonfigurowana." - -msgid "Timezone" -msgstr "Strefa czasowa" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Aby przywrócić pliki konfiguracyjne, można tutaj wczytać wcześniej utworzone " -"archiwum kopii zapasowej." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Całkowicie dostępna" - -msgid "Traceroute" -msgstr "Trasa routowania" - -msgid "Traffic" -msgstr "Ruch" - -msgid "Transfer" -msgstr "Transfer" - -msgid "Transmission Rate" -msgstr "Prędkość transmisji" - -msgid "Transmit" -msgstr "Nadawanie" - -msgid "Transmit Power" -msgstr "Siła nadawania" - -msgid "Transmitter Antenna" -msgstr "Antena nadajnika" - -msgid "Trigger" -msgstr "Trigger" - -msgid "Trigger Mode" -msgstr "Tryb Trigger" - -msgid "Tunnel ID" -msgstr "Numer identyfikacyjny tunelu" - -msgid "Tunnel Interface" -msgstr "Interfejs tunelu" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Moc nadawania" - -msgid "Type" -msgstr "Typ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Tylko UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Urządzenie USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Nie można wysłać" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Nieznany" - -msgid "Unknown Error, password not changed!" -msgstr "Nieznany błąd, hasło nie zostało zmienione" - -msgid "Unmanaged" -msgstr "Niezarządzalny" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Niezapisane zmiany" - -msgid "Unsupported protocol type." -msgstr "Nieobsługiwany typ protokołu." - -msgid "Update lists" -msgstr "Aktualizuj listy" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Prześlij zgodny z funkcją sysupgrade obraz tutaj, aby zastąpić aktualnie " -"działające firmware. Zaznacz opcję \"Zachowaj ustawienia\", aby zachować " -"bieżącą konfigurację (wymaga zgodnego obrazu firmware)." - -msgid "Upload archive..." -msgstr "Załaduj archiwum..." - -msgid "Uploaded File" -msgstr "Załaduj plik" - -msgid "Uptime" -msgstr "Czas pracy" - -msgid "Use /etc/ethers" -msgstr "Użyj /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Użyj bramy DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Użyj serwerów DNS rozgłaszanych przez peera" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Użyj kodów kraju ISO/IEC 3166 alpha2" - -msgid "Use MTU on tunnel interface" -msgstr "Użyj MTU na interfejsie tunelu" - -msgid "Use TTL on tunnel interface" -msgstr "Użyj TTL na interfejsie tunelu" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Użyj flagi rozgłaszania" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Użyj własnych serwerów DNS" - -msgid "Use default gateway" -msgstr "Użyj domyślnej bramy" - -msgid "Use gateway metric" -msgstr "Użyj metryki bramy" - -msgid "Use routing table" -msgstr "Użyj tabeli routingu" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Użyj przycisku Dodaj, aby dodać nowy wpis dzierżawy. Adres MAC identyfikuje hosta, Adres IPv4 określa, którego stałego adresu " -"użyć, natomiast Nazwa hosta jest przypisana jako symboliczna nazwa " -"do określonego hosta." - -# Przy liście zamontowanych systemów plików -msgid "Used" -msgstr "Użyte" - -msgid "Used Key Slot" -msgstr "Użyte gniazdo klucza" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Nazwa użytkownika" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "Sieci VLAN na %q" - -msgid "VLANs on %q (%s)" -msgstr "Sieci VLAN na %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Serwer VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Klasa producenta do wysłania podczas żądania DHCP" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Zweryfikuj" - -msgid "Version" -msgstr "Wersja" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Otwarty system WEP" - -msgid "WEP Shared Key" -msgstr "Współdzielony klucz WEP" - -msgid "WEP passphrase" -msgstr "Hasło WEP" - -msgid "WMM Mode" -msgstr "Tryb WMM" - -msgid "WPA passphrase" -msgstr "Hasło WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (na tryb " -"klienta) lub hostapd (dla trybów AP lub ad-hoc)" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -# obsy: Brzmi to lepiej niż "czekanie na wprowadzanie zmian. -msgid "Waiting for changes to be applied..." -msgstr "Trwa wprowadzenie zmian..." - -msgid "Waiting for command to complete..." -msgstr "Trwa wykonanie polecenia..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Ostrzeżenie" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Sieć bezprzewodowa" - -msgid "Wireless Adapter" -msgstr "Adapter bezprzewodowy" - -msgid "Wireless Network" -msgstr "Sieć bezprzewodowa" - -msgid "Wireless Overview" -msgstr "Przegląd sieci bezprzewodowych" - -msgid "Wireless Security" -msgstr "Zabezpieczenia sieci bezprzewodowych" - -msgid "Wireless is disabled or not associated" -msgstr "Sieć bezprzewodowa jest wyłączona lub niepołączona" - -msgid "Wireless is restarting..." -msgstr "Restart sieci bezprzewodowej..." - -msgid "Wireless network is disabled" -msgstr "Sieć bezprzewodowa jest wyłączona" - -msgid "Wireless network is enabled" -msgstr "Sieć bezprzewodowa jest włączona" - -msgid "Wireless restarted" -msgstr "Zrestartowano sieć bezprzewodową" - -msgid "Wireless shut down" -msgstr "Wyłączanie sieci bezprzewodowej" - -msgid "Write received DNS requests to syslog" -msgstr "Zapisz otrzymane żądania DNS do syslog'a" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Tutaj można włączyć lub wyłączyć zainstalowane skrypty. Zmiany zostaną " -"zastosowane po ponownym uruchomieniu urządzenia.
    Ostrzeżenie: " -"Jeśli wyłączysz podstawowe skrypty typu \"networks\", urządzenie może stać " -"się nieosiągalne!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Musisz włączyć obsługę JavaScript w swojej przeglądarce, inaczej LuCI nie " -"będzie działać poprawnie." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "dowolny" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "bridged" - -msgid "create:" -msgstr "utwórz:" - -msgid "creates a bridge over specified interface(s)" -msgstr "utwórz bridge na określonych interfejsach" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "wyłącz" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "wygasły" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"plik, w którym podano żądania DHCP, zostanie zachowany" - -msgid "forward" -msgstr "przekaż" - -msgid "full-duplex" -msgstr "pełny-duplex" - -msgid "half-duplex" -msgstr "pół-duplex" - -msgid "help" -msgstr "pomoc" - -msgid "hidden" -msgstr "ukryty" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "jeżeli celem jest sieć" - -msgid "input" -msgstr "wejście" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "lokalny plik DNS" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "nie" - -# skorzystałem z niemieckiego tłumaczenia -msgid "no link" -msgstr "niepowiązane" - -msgid "none" -msgstr "żaden" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "wyłączone" - -msgid "on" -msgstr "włączone" - -msgid "open" -msgstr "otwarte" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "routowane" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "tagowane" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "nieznane" - -msgid "unlimited" -msgstr "nielimitowane" - -msgid "unspecified" -msgstr "nieokreślone" - -msgid "unspecified -or- create:" -msgstr "nieokreślone -lub- utwórz:" - -msgid "untagged" -msgstr "nietagowane" - -msgid "yes" -msgstr "tak" - -msgid "« Back" -msgstr "« Wróć" - -#~ msgid "Leasetime" -#~ msgstr "Czas dzierżawy" - -# Wydaje mi się że brakuje litery R... -#~ msgid "AR Support" -#~ msgstr "Wsparcie dla ARP" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Bezprzewodowy kontroler Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Skanowanie w tle" - -#~ msgid "Compression" -#~ msgstr "Kompresja" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Wyłącz zegar HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Nie wysyłaj ramek probe response" - -#~ msgid "Fast Frames" -#~ msgstr "Szybkie ramki (Fast Frames)" - -#~ msgid "Maximum Rate" -#~ msgstr "Maksymalna Szybkość" - -#~ msgid "Minimum Rate" -#~ msgstr "Minimalna Szybkość" - -#~ msgid "Multicast Rate" -#~ msgstr "Szybkość Multicast`u" - -#~ msgid "Outdoor Channels" -#~ msgstr "Kanały zewnętrzne" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domena regulacji" - -#~ msgid "Separate WDS" -#~ msgstr "Rozdziel WDS" - -#~ msgid "Static WDS" -#~ msgstr "Statyczny WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Tryb Turbo" - -#~ msgid "XR Support" -#~ msgstr "Wsparcie XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "" -#~ "Zostanie utworzona dodatkowa sieć jeśli zostawisz tą opcję niezaznaczoną." - -#~ msgid "Join Network: Settings" -#~ msgstr "Przyłącz do sieci: Ustawienia" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Port %d jest nietagowany w wielu VLAN`ach!" - -#~ msgid "VLAN Interface" -#~ msgstr "Interfejs VLAN" diff --git a/package/luci/modules/luci-base/po/pt-br/base.po b/package/luci/modules/luci-base/po/pt-br/base.po deleted file mode 100644 index eef8ebac38..0000000000 --- a/package/luci/modules/luci-base/po/pt-br/base.po +++ /dev/null @@ -1,4210 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2017-02-22 20:30-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s está sem etiqueta em múltiplas VLANs!" - -msgid "(%d minute window, %d second interval)" -msgstr "(janela de %d minutos, intervalo de %d segundos)" - -msgid "(%s available)" -msgstr "(%s disponível)" - -msgid "(empty)" -msgstr "(vazio)" - -msgid "(no interfaces attached)" -msgstr "(nenhuma interface conectada)" - -msgid "-- Additional Field --" -msgstr "-- Campo Adicional --" - -msgid "-- Please choose --" -msgstr "-- Por favor, escolha --" - -msgid "-- custom --" -msgstr "-- personalizado --" - -msgid "-- match by device --" -msgstr "-- casar por dispositivo --" - -msgid "-- match by label --" -msgstr "-- casar por rótulo --" - -msgid "-- match by uuid --" -msgstr "" -"-- casar por UUID --" - -msgid "1 Minute Load:" -msgstr "Carga 1 Minuto:" - -msgid "15 Minute Load:" -msgstr "Carga 15 Minutos:" - -msgid "4-character hexadecimal ID" -msgstr "Identificador hexadecimal de 4 caracteres" - -msgid "464XLAT (CLAT)" -msgstr "464XLAT (CLAT)" - -msgid "5 Minute Load:" -msgstr "Carga 5 Minutos:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" -"Identificador de 6 octetos como uma cadeia hexadecimal - sem dois pontos" - -msgid "802.11r Fast Transition" -msgstr "802.11r Fast Transition" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "Tempo de expiração máximo da consulta da Associação SA do 802.11w" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" -"Tempo de expiração de tentativa de consulta da Associação SA do 802.11w" - -msgid "802.11w Management Frame Protection" -msgstr "Proteção do Quadro de Gerenciamento do 802.11w" - -msgid "802.11w maximum timeout" -msgstr "Estouro de tempo máximo do 802.11w" - -msgid "802.11w retry timeout" -msgstr "Estouro de tempo da nova tentativa do 802.11w" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "" -"Porta de consulta DNS" - -msgid "DNS server port" -msgstr "" -"Porta do servidor DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"O servidor DNS irá " -"consultar na ordem do arquivo resolvfile" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "Endereço IPv4" - -msgid "IPv4-Gateway" -msgstr "Roteador IPv4" - -msgid "IPv4-Netmask" -msgstr "" -"Máscara de rede IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Endereço do IPv6 " -"Endereço ou rede (CIDR)" - -msgid "IPv6-Gateway" -msgstr "Roteador IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" -"IPv6-Suffix (hex)" - -msgid "LED Configuration" -msgstr "Configuração do LED" - -msgid "LED Name" -msgstr "Nome do LED" - -msgid "MAC-Address" -msgstr "Endereço MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Numero máximo de alocações DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Tamanho máximo do pacote do EDNS0" - -msgid "Max. concurrent queries" -msgstr "Número máximo de consultas concorrentes" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "A43C + J43 + A43" - -msgid "A43C + J43 + A43 + V43" -msgstr "A43C + J43 + A43 + V43" - -msgid "ADSL" -msgstr "" -"ADSL" - -msgid "AICCU (SIXXS)" -msgstr "" -"AICCU (SIXXS)" - -msgid "ANSI T1.413" -msgstr "ANSI T1.413" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "" -"Limite de retentativas do ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "ATM (Asynchronous Transfer Mode)" - -msgid "ATM Bridges" -msgstr "Ponte ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" -"Identificador de Canal Virtual ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" -"Identificador de Caminho Virtual ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Pontes ATM expõem ethernet encapsuladas em conexões AAL5 como interfaces de " -"rede virutais no Linux. Estas podem ser usadas em conjunto com o DHCP ou PPP " -"para discar em um provedor de rede." - -msgid "ATM device number" -msgstr "Número do dispositivo ATM" - -msgid "ATU-C System Vendor ID" -msgstr "Identificador de" - -msgid "AYIYA" -msgstr "AYIYA" - -msgid "Access Concentrator" -msgstr "Concentrador de Acesso" - -msgid "Access Point" -msgstr "Ponto de Acceso (AP)" - -msgid "Action" -msgstr "Ação" - -msgid "Actions" -msgstr "Ações" - -msgid "Activate this network" -msgstr "Ativar esta rede" - -msgid "Active IPv4-Routes" -msgstr "" -"Rotas IPv4 ativas" - -msgid "Active IPv6-Routes" -msgstr "" -"Rotas IPv6 ativas" - -msgid "Active Connections" -msgstr "Conexões Ativas" - -msgid "Active DHCP Leases" -msgstr "Alocações DHCP ativas" - -msgid "Active DHCPv6 Leases" -msgstr "Alocações DHCPv6 ativas" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Adicionar" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Adiciona um sufixo de domínio local para equipamentos conhecidos" - -msgid "Add new interface..." -msgstr "Adiciona uma nova interface..." - -msgid "Additional Hosts files" -msgstr "Arquivos adicionais de equipamentos conhecidos (hosts)" - -msgid "Additional servers file" -msgstr "Arquivo de servidores adicionais" - -msgid "Address" -msgstr "Endereço" - -msgid "Address to access local relay bridge" -msgstr "Endereço para acessar a ponte por retransmissão local " - -msgid "Administration" -msgstr "Administração" - -msgid "Advanced Settings" -msgstr "Opções Avançadas" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" -"Potência de Transmissão Agregada (ACTATP)" - -msgid "Alert" -msgstr "Alerta" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" -"Alocar endereços IP sequencialmente, iniciando a partir do endereço mais " -"baixo disponível" - -msgid "Allocate IP sequentially" -msgstr "Alocar endereços IP sequencialmente" - -msgid "Allow SSH password authentication" -msgstr "" -"Permitir autenticação SSH por senha" - -msgid "Allow all except listed" -msgstr "Permitir todos, exceto os listados" - -msgid "Allow listed only" -msgstr "Permitir somente os listados" - -msgid "Allow localhost" -msgstr "Permitir computador local" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permitir que equipamentos remotos conectem à portas locais encaminhadas por " -"SSH" - -msgid "Allow root logins with password" -msgstr "Permite autenticação do root com senha" - -msgid "Allow the root user to login with password" -msgstr "Permite que o usuário root se autentique utilizando senha" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permite respostas que apontem para 127.0.0.0/8 de servidores externos, por " -"exemplo, para os serviços RBL" - -msgid "Allowed IPs" -msgstr "Endereços IP autorizados" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" -"Veja também a Comparação de Tunelamentos em SIXXS" - -msgid "Always announce default router" -msgstr "Sempre anuncie o roteador padrão" - -msgid "Annex" -msgstr "Anexo" - -msgid "Annex A + L + M (all)" -msgstr "Anexos A + L + M (todo)" - -msgid "Annex A G.992.1" -msgstr "Anexo A G.992.1" - -msgid "Annex A G.992.2" -msgstr "Anexo A G.992.2" - -msgid "Annex A G.992.3" -msgstr "Anexo A G.992.3" - -msgid "Annex A G.992.5" -msgstr "Anexo A G.992.5" - -msgid "Annex B (all)" -msgstr "Anexo B (todo)" - -msgid "Annex B G.992.1" -msgstr "Anexo B G.992.1" - -msgid "Annex B G.992.3" -msgstr "Anexo B G.992.3" - -msgid "Annex B G.992.5" -msgstr "Anexo B G.992.5" - -msgid "Annex J (all)" -msgstr "Anexo J (todo)" - -msgid "Annex L G.992.3 POTS 1" -msgstr "Anexo L G.992.3 POTS 1" - -msgid "Annex M (all)" -msgstr "Anexo M (todo)" - -msgid "Annex M G.992.3" -msgstr "Anexo M G.992.3" - -msgid "Annex M G.992.5" -msgstr "Anexo M G.992.5" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" -"Anuncie-se como rotador padrão mesmo se não existir um prefixo público." - -msgid "Announced DNS domains" -msgstr "Domínios DNS anunciados" - -msgid "Announced DNS servers" -msgstr "Servidores DNS anunciados" - -msgid "Anonymous Identity" -msgstr "Identidade Anônima" - -msgid "Anonymous Mount" -msgstr "Montagem Anônima" - -msgid "Anonymous Swap" -msgstr "Espaço de Troca (swap) Anônimo" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "configuração de antena" - -msgid "Any zone" -msgstr "Qualquer zona" - -msgid "Apply" -msgstr "Aplicar" - -msgid "Applying changes" -msgstr "Aplicar as alterações" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" -"Atribua uma parte do comprimento de cada prefixo IPv6 público para esta " -"interface" - -msgid "Assign interfaces..." -msgstr "atribuir as interfaces" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" -"Atribua partes do prefixo usando este identificador hexadecimal do " -"subprefixo para esta interface" - -msgid "Associated Stations" -msgstr "Estações associadas" - -msgid "Auth Group" -msgstr "Grupo de Autenticação" - -msgid "Authentication" -msgstr "Autenticação" - -msgid "Authentication Type" -msgstr "Tipo de Autenticação" - -msgid "Authoritative" -msgstr "Autoritário" - -msgid "Authorization Required" -msgstr "Autorização Necessária" - -msgid "Auto Refresh" -msgstr "Atualização Automática" - -msgid "Automatic" -msgstr "Automático" - -msgid "Automatic Homenet (HNCP)" -msgstr "" -"Rede Doméstica Automática (HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" -"Execute automaticamente a verificação do sistema de arquivos antes da " -"montagem do dispositivo" - -msgid "Automatically mount filesystems on hotplug" -msgstr "Monte automaticamente o espaço de troca (swap) ao conectar" - -msgid "Automatically mount swap on hotplug" -msgstr "Monte automaticamente o espaço de troca (swap) ao conectar" - -msgid "Automount Filesystem" -msgstr "Montagem Automática de Sistema de Arquivo" - -msgid "Automount Swap" -msgstr "Montagem Automática do Espaço de Troca (swap) " - -msgid "Available" -msgstr "Disponível" - -msgid "Available packages" -msgstr "Pacotes disponíveis" - -msgid "Average:" -msgstr "Média:" - -msgid "B43 + B43C" -msgstr "B43 + B43C" - -msgid "B43 + B43C + V43" -msgstr "B43 + B43C + V43" - -msgid "BR / DMR / AFTR" -msgstr "BR / DMR / AFTR" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Voltar" - -msgid "Back to Overview" -msgstr "Voltar para Visão Geral" - -msgid "Back to configuration" -msgstr "Voltar para configuração" - -msgid "Back to overview" -msgstr "Voltar para visão geral" - -msgid "Back to scan results" -msgstr "Voltar para os resultados da busca" - -msgid "Backup / Flash Firmware" -msgstr "Cópia de Segurança / Gravar Firmware" - -msgid "Backup / Restore" -msgstr "Cópia de Segurança / Restauração" - -msgid "Backup file list" -msgstr "Lista de arquivos para a cópia de segurança" - -msgid "Bad address specified!" -msgstr "Endereço especificado está incorreto!" - -msgid "Band" -msgstr "Banda" - -msgid "Behind NAT" -msgstr "Atrás da NAT" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Abaixo estão os arquivos para a cópia de segurança. Ela consiste de arquivos " -"de configuração alterados marcados pelo opkg, arquivos base essenciais e " -"padrões para a cópia de segurança definidos pelo usuário." - -msgid "Bind interface" -msgstr "Interface Vinculada" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" -"Vincule somente para as explicitamenteinterfaces ao invés do endereço " -"coringa." - -msgid "Bind the tunnel to this interface (optional)." -msgstr "Vincule o túnel a esta interface (opcional)" - -msgid "Bitrate" -msgstr "Taxa de bits" - -msgid "Bogus NX Domain Override" -msgstr "Substituir Domínio NX Falsos" - -msgid "Bridge" -msgstr "Ponte" - -msgid "Bridge interfaces" -msgstr "Juntar interfaces em uma ponte" - -msgid "Bridge unit number" -msgstr "Número da ponte" - -msgid "Bring up on boot" -msgstr "Levantar na iniciação" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Controlador Wireless Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 Wireless Controlador" - -msgid "Buffered" -msgstr "Buffered" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Fonte de pacotes específico da compilação/distribuição. Esta NÃO será " -"preservada em qualquer atualização do sistema." - -msgid "Buttons" -msgstr "Botões" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" -"Certificado da CA; se em branco, será salvo depois da primeira conexão." - -msgid "CPU usage (%)" -msgstr "Uso da CPU (%)" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Category" -msgstr "Categoria" - -msgid "Chain" -msgstr "Cadeia" - -msgid "Changes" -msgstr "Alterações" - -msgid "Changes applied." -msgstr "Alterações aplicadas." - -msgid "Changes the administrator password for accessing the device" -msgstr "Muda a senha do administrador para acessar este dispositivo" - -msgid "Channel" -msgstr "Canal" - -msgid "Check" -msgstr "Verificar" - -msgid "Check fileystems before mount" -msgstr "" -"Execute a verificação do sistema de arquivos antes da montagem do dispositivo" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "Marque esta opção para remover as redes existentes neste rádio." - -msgid "Checksum" -msgstr "Soma de verificação" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Escolha a zona do firewall que você quer definir para esta interface. " -"Selecione não especificado -ou- criar para remover a interface da " -"zona associada ou preencha o campo para criar uma nova zona associada a esta " -"interface." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Escolha a rede (s) que deseja anexar a este interface wireless ou preencha o " -" criar campo para definir uma nova rede." - -msgid "Cipher" -msgstr "Cifra" - -msgid "Cisco UDP encapsulation" -msgstr "Encapsulamento UDP da Cisco" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Clique em \"Gerar arquivo\" para baixar um arquivo tar com os arquivos de " -"configuração atuais. Para retornar o roteador para o seu estado inicial, " -"clique em \"Zerar configuração\" (somente possível para imagens squashfs)." - -msgid "Client" -msgstr "Cliente" - -msgid "Client ID to send when requesting DHCP" -msgstr "" -"Identificador do cliente enviando quando a requisição do DHCP é realizada" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Feche as conexões inativas após uma dada quantidade de segundos. Use 0 para " -"manter as conexões." - -msgid "Close list..." -msgstr "Fechar a lista..." - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "Command" -msgstr "Comando" - -msgid "Common Configuration" -msgstr "Configuração Comum" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Configuration applied." -msgstr "Configuração aplicada." - -msgid "Configuration files will be kept." -msgstr "Os arquivos de configuração serão mantidos." - -msgid "Confirmation" -msgstr "Confirmação" - -msgid "Connect" -msgstr "Conectar" - -msgid "Connected" -msgstr "Conectado" - -msgid "Connection Limit" -msgstr "Limite de conexão" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "A conexão para este servidor falhará quando o TLS não puder ser usado" - -msgid "Connections" -msgstr "Conexões" - -msgid "Country" -msgstr "País" - -msgid "Country Code" -msgstr "Código do País" - -msgid "Cover the following interface" -msgstr "Utilizando a seguinte interface" - -msgid "Cover the following interfaces" -msgstr "Utilizando as seguintes interfaces" - -msgid "Create / Assign firewall-zone" -msgstr "Criar / Atribuir a uma zona de firewall" - -msgid "Create Interface" -msgstr "Criar Interface" - -msgid "Create a bridge over multiple interfaces" -msgstr "Criar uma ponte juntando múltiplas interfaces" - -msgid "Critical" -msgstr "Crítico" - -msgid "Cron Log Level" -msgstr "Nível de Registro da Cron" - -msgid "Custom Interface" -msgstr "Interface Personalizada" - -msgid "Custom delegated IPv6-prefix" -msgstr "Prefixo IPv6 delegado personalizado" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"Definições de fonte de pacotes personalizadas, ex: fontes privadas. Este " -"arquivo será preservado em uma atualização do sistema." - -msgid "Custom feeds" -msgstr "Fontes de pacotes customizadas" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Se possível, personaliza o comportamento dos LEDs." - -msgid "DHCP Leases" -msgstr "Alocações do DHCP" - -msgid "DHCP Server" -msgstr "Servidor DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP e DNS" - -msgid "DHCP client" -msgstr "Cliente DHCP" - -msgid "DHCP-Options" -msgstr "Opções de DHCP" - -msgid "DHCPv6 Leases" -msgstr "Alocações DHCPv6" - -msgid "DHCPv6 client" -msgstr "Cliente DHCPv6" - -msgid "DHCPv6-Mode" -msgstr "Modo DHCPv6" - -msgid "DHCPv6-Service" -msgstr "Serviço DHCPv6" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Encaminhamentos DNS" - -msgid "DNS-Label / FQDN" -msgstr "Rótulo DNS / FQDN" - -msgid "DNSSEC" -msgstr "DNSSEC" - -msgid "DNSSEC check unsigned" -msgstr "Verificar DNSSEC sem assinatura" - -msgid "DPD Idle Timeout" -msgstr "Tempo de expiração para ociosidade do DPD" - -msgid "DS-Lite AFTR address" -msgstr "Endereço DS-Lite AFTR" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "Estado da DSL" - -msgid "DSL line mode" -msgstr "Modo de linha DSL" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "Taxa de Dados" - -msgid "Debug" -msgstr "Depurar" - -msgid "Default %d" -msgstr "Padrão %d" - -msgid "Default gateway" -msgstr "Roteador Padrão" - -msgid "Default is stateless + stateful" -msgstr "O padrão é sem estado + com estado" - -msgid "Default route" -msgstr "Rota padrão" - -msgid "Default state" -msgstr "Estado padrão" - -msgid "Define a name for this network." -msgstr "Define um nome para esta rede." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Define opções adicionais do DHCP. Por exemplo " -"\"6,192.168.2.1,192.168.2.2\" que anuncia diferentes servidores " -"DNS para os clientes." - -msgid "Delete" -msgstr "Apagar" - -msgid "Delete this network" -msgstr "Apagar esta rede" - -msgid "Description" -msgstr "Descrição" - -msgid "Design" -msgstr "Tema" - -msgid "Destination" -msgstr "Destino" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Device Configuration" -msgstr "Configuração do Dispositivo" - -msgid "Device is rebooting..." -msgstr "O dispositivo está reiniciando..." - -msgid "Device unreachable" -msgstr "Dispositivo não alcançável" - -msgid "Diagnostics" -msgstr "Diagnóstico" - -msgid "Dial number" -msgstr "Número de discagem" - -msgid "Directory" -msgstr "Diretório" - -msgid "Disable" -msgstr "Desabilitar" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Desabilita DHCP " -"para esta interface." - -msgid "Disable DNS setup" -msgstr "Desabilita a configuração do DNS" - -msgid "Disable Encryption" -msgstr "Desabilitar Cifragem" - -msgid "Disabled" -msgstr "Desabilitado" - -msgid "Disabled (default)" -msgstr "Desabilitado (padrão)" - -msgid "Discard upstream RFC1918 responses" -msgstr "" -"Descartar respostas de servidores externos para redes privadas (RFC1918)" - -msgid "Displaying only packages containing" -msgstr "Mostre somente os pacotes contendo" - -msgid "Distance Optimization" -msgstr "Otimização de Distância" - -msgid "Distance to farthest network member in meters." -msgstr "Distância para o computador mais distante da rede (em metros)." - -msgid "Distribution feeds" -msgstr "Fontes de pacotes da distribuição" - -msgid "Diversity" -msgstr "Diversidade" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq é um servidor combinado de DHCP e DNS para firewalls NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Não mantenha em cache para respostas negativas como, por exemplo, para os " -"domínios inexistentes" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Não encaminhe requisições que não podem ser respondidas por servidores de " -"nomes públicos" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Não encaminhe buscas por endereço reverso das redes local" - -msgid "Domain required" -msgstr "Requerer domínio" - -msgid "Domain whitelist" -msgstr "Lista branca de domínios" - -msgid "Don't Fragment" -msgstr "Não Fragmentar" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Não encaminhar consultas DNS sem o nome completo do DNS" - -msgid "Download and install package" -msgstr "Baixe e instale o pacote" - -msgid "Download backup" -msgstr "Baixar a cópia de segurança" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear oferece um acesso shell seguro à rede (SSH) e um servidor SCP " -"integrado" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "Duas Pilhas Leve (RFC6333)" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP " -"Dinâmico" - -msgid "Dynamic tunnel" -msgstr "Túnel dinâmico" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Aloca dinamicamente os endereços do DHCP para os clientes. Se desabilitado, " -"somente os clientes com atribuições estáticas serão servidos. " - -msgid "EA-bits length" -msgstr "Comprimento dos bits EA" - -msgid "EAP-Method" -msgstr "Método EAP" - -msgid "Edit" -msgstr "Editar" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" -"Edite os dados de configuração brutos abaixo para arrumar qualquer erro e " -"clique em \"Salvar\" para recarregar a página." - -msgid "Edit this interface" -msgstr "Editar esta interface" - -msgid "Edit this network" -msgstr "Editar esta rede" - -msgid "Emergency" -msgstr "Emergência" - -msgid "Enable" -msgstr "Ativar" - -msgid "Enable STP" -msgstr "Ativar STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Ativar a atualização de ponto final dinâmico HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "Ativar a negociação de IPv6" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Ativar a negociação de IPv6 no enlace PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Ativar o encaminhamento de quadros jumbos (Jumbo Frames)" - -msgid "Enable NTP client" -msgstr "Ativar o cliente NTP" - -msgid "Enable Single DES" -msgstr "Habilitar DES Simples" - -msgid "Enable TFTP server" -msgstr "Ativar servidor TFTP" - -msgid "Enable VLAN functionality" -msgstr "Ativar funcionalidade de VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Habilite o botão WPS. requer WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Ativar o aprendizado e obsolescência" - -msgid "Enable mirroring of incoming packets" -msgstr "Habilitar espelhamento dos pacotes entrantes" - -msgid "Enable mirroring of outgoing packets" -msgstr "Habilitar espelhamento dos pacotes saintes" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "Habilita o campo DF (Não Fragmentar) dos pacotes encapsulados." - -msgid "Enable this mount" -msgstr "Ativar esta montagem" - -msgid "Enable this swap" -msgstr "Ativar este espaço de troca (swap)" - -msgid "Enable/Disable" -msgstr "Ativar/Desativar" - -msgid "Enabled" -msgstr "Ativado" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" -"Ativa a troca rápida entre pontos de acesso que pertencem ao mesmo Domínio " -"de Mobilidade" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Ativa o protocolo STP nesta ponte" - -msgid "Encapsulation mode" -msgstr "Modo de encapsulamento" - -msgid "Encryption" -msgstr "Cifragem" - -msgid "Endpoint Host" -msgstr "Equipamento do ponto final" - -msgid "Endpoint Port" -msgstr "Porta do ponto final" - -msgid "Erasing..." -msgstr "Apagando..." - -msgid "Error" -msgstr "Erro" - -msgid "Errored seconds (ES)" -msgstr "Segundos com erro (ES)" - -msgid "Ethernet Adapter" -msgstr "Adaptador Ethernet" - -msgid "Ethernet Switch" -msgstr "Switch Ethernet" - -msgid "Exclude interfaces" -msgstr "Excluir interfaces" - -msgid "Expand hosts" -msgstr "Expandir arquivos de equipamentos conhecidos (hosts)" - -msgid "Expires" -msgstr "Expira" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Tempo de expiração dos endereços atribuídos. Mínimo é 2 minutos (2m)." - -msgid "External" -msgstr "Externo" - -msgid "External R0 Key Holder List" -msgstr "Lista dos Detentor de Chave R0 Externa" - -msgid "External R1 Key Holder List" -msgstr "Lista dos Detentor de Chave R1 Externa" - -msgid "External system log server" -msgstr "Servidor externo de registros do sistema (syslog)" - -msgid "External system log server port" -msgstr "Porta do servidor externo de registro do sistema (syslog)" - -msgid "External system log server protocol" -msgstr "Protocolo do servidor externo de registro do sistema (syslog)" - -msgid "Extra SSH command options" -msgstr "Opções adicionais do comando SSH" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Arquivo" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nome do arquivo da imagem de boot anunciada para os clientes" - -msgid "Filesystem" -msgstr "Sistema de Arquivos" - -msgid "Filter" -msgstr "Filtro" - -msgid "Filter private" -msgstr "Filtrar endereços privados" - -msgid "Filter useless" -msgstr "Filtrar consultas inúteis" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" -"Encontre todos os sistemas de arquivos e espaços de troca (swap) atualmente " -"conectados e substitua a configuração com valores padrão baseados no que foi " -"detectado" - -msgid "Find and join network" -msgstr "Procurar e conectar à rede" - -msgid "Find package" -msgstr "Procurar pacote" - -msgid "Finish" -msgstr "Terminar" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Configurações do Firewall" - -msgid "Firewall Status" -msgstr "Estado do Firewall" - -msgid "Firmware File" -msgstr "Arquivo da Firmware" - -msgid "Firmware Version" -msgstr "Versão do Firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Porta de origem fixa para saída de consultas DNS" - -msgid "Flash Firmware" -msgstr "Gravar Firmware" - -msgid "Flash image..." -msgstr "Gravar imagem..." - -msgid "Flash new firmware image" -msgstr "Gravar nova imagem do firmware" - -msgid "Flash operations" -msgstr "Operações na memória flash" - -msgid "Flashing..." -msgstr "Gravando na flash..." - -msgid "Force" -msgstr "Forçar" - -msgid "Force CCMP (AES)" -msgstr "Forçar CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Forçar o DHCP nesta rede mesmo se outro servidor for detectado." - -msgid "Force TKIP" -msgstr "Forçar TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forçar TKIP e CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "Force o uso do NAT-T" - -msgid "Form token mismatch" -msgstr "Chave eletrônica do formulário não casa" - -msgid "Forward DHCP traffic" -msgstr "Encaminhar tráfego DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" -"Segundos a frente de correção de erros ( FECS)" - -msgid "Forward broadcast traffic" -msgstr "Encaminhar tráfego broadcast" - -msgid "Forwarding mode" -msgstr "Modo de encaminhamento" - -msgid "Fragmentation Threshold" -msgstr "Limiar de Fragmentação" - -msgid "Frame Bursting" -msgstr "Explosão de Quadros (Frame Bursting)" - -msgid "Free" -msgstr "Livre" - -msgid "Free space" -msgstr "Espaço livre" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" -"Mais informações sobre interfaces e parceiros WireGuard em wireguard.io." - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Somente GPRS" - -msgid "Gateway" -msgstr "Roteador" - -msgid "Gateway ports" -msgstr "Acesso remoto a portas encaminhadas" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "General Setup" -msgstr "Configurações Gerais" - -msgid "General options for opkg" -msgstr "Opções gerais para o opkg" - -msgid "Generate Config" -msgstr "Gerar Configuração" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Gerar arquivo" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Generico 802.11%s Wireless Controlador" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "A senha de confirmação informada não casa. Senha não alterada!" - -msgid "Global Settings" -msgstr "Configurações Globais" - -msgid "Global network options" -msgstr "Opções de rede globais" - -msgid "Go to password configuration..." -msgstr "Ir para a configuração de senha..." - -msgid "Go to relevant configuration page" -msgstr "Ir para a página de configuração pertinente" - -msgid "Group Password" -msgstr "Senha do Grupo" - -msgid "Guest" -msgstr "Convidado\t" - -msgid "HE.net password" -msgstr "Senha HE.net" - -msgid "HE.net username" -msgstr "Usuário do HE.net" - -msgid "HT mode (802.11n)" -msgstr "" -"Modo HT " -"(802.11n)" - -# Não sei que contexto isto está sendo usado -msgid "Handler" -msgstr "Responsável" - -msgid "Hang Up" -msgstr "Suspender" - -msgid "Header Error Code Errors (HEC)" -msgstr "" -"Erros de Código de Erro de Cabeçalho (HEC)" - -msgid "Heartbeat" -msgstr "Pulso de vida" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Aqui você pode configurar os aspectos básicos do seu equipamento, como o " -"nome do equipamento ou o fuso horário." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Aqui você pode colar as chaves públicas do SSH (uma por linha) para a " -"autenticação por chaves do SSH." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Hermes 802.11b Wireless Controlador" - -msgid "Hide ESSID" -msgstr "" -"Ocultar ESSID" - -msgid "Host" -msgstr "Equipamento" - -msgid "Host entries" -msgstr "Entradas de Equipamentos" - -msgid "Host expiry timeout" -msgstr "Tempo limite de expiração de equipamento" - -msgid "Host-IP or Network" -msgstr "" -"IP do Equipamento " -"ou Rede" - -msgid "Hostname" -msgstr "Nome do equipamento" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nome do equipamento enviado quando requisitar DHCP" - -msgid "Hostnames" -msgstr "Nome dos equipamentos" - -msgid "Hybrid" -msgstr "Híbrido" - -msgid "IKE DH Group" -msgstr "" -"Grupo DH do IKE" - -msgid "IP Addresses" -msgstr "Endereços IP" - -msgid "IP address" -msgstr "Endereço IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Firewall para IPv4" - -msgid "IPv4 WAN Status" -msgstr "Estado IPv4 da WAN" - -msgid "IPv4 address" -msgstr "Endereço IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 assignment length" -msgstr "Tamanho da atribuição IPv4" - -msgid "IPv4 broadcast" -msgstr "Broadcast IPv4" - -msgid "IPv4 gateway" -msgstr "Roteador padrão IPv4" - -msgid "IPv4 netmask" -msgstr "Máscara de rede IPv4" - -msgid "IPv4 only" -msgstr "Somente IPv4" - -msgid "IPv4 prefix" -msgstr "Prefixo IPv4" - -msgid "IPv4 prefix length" -msgstr "Tamanho do prefixo IPv4" - -msgid "IPv4-Address" -msgstr "Endereço IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4-in-IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Firewall para IPv6" - -msgid "IPv6 Neighbours" -msgstr "Vizinhos IPv6" - -msgid "IPv6 Settings" -msgstr "Configurações IPv6" - -msgid "IPv6 ULA-Prefix" -msgstr "" -"Prefixo ULA " -"IPv6" - -msgid "IPv6 WAN Status" -msgstr "Estado IPv6 da WAN" - -msgid "IPv6 address" -msgstr "Endereço IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "Endereços IPv6 delegados para o ponta local do túnel (opcional)" - -msgid "IPv6 assignment hint" -msgstr "Sugestão de atribuição IPv6" - -msgid "IPv6 assignment length" -msgstr "Tamanho da atribuição IPv6" - -msgid "IPv6 gateway" -msgstr "Roteador padrão do IPv6" - -msgid "IPv6 only" -msgstr "Somente IPv6" - -msgid "IPv6 prefix" -msgstr "Prefixo IPv6" - -msgid "IPv6 prefix length" -msgstr "Tamanho Prefixo IPv6" - -msgid "IPv6 routed prefix" -msgstr "Prefixo roteável IPv6" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Endereço IPv6" - -msgid "IPv6-PD" -msgstr "IPv6-PD" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-sobre-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-sobre-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identidade PEAP" - -msgid "If checked, 1DES is enabled" -msgstr "Se marcado, a cifragem 1DES será habilitada" - -msgid "If checked, encryption is disabled" -msgstr "Se marcado, a cifragem estará desabilitada" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Se especificado, monta o dispositivo pelo seu UUID ao invés de um nó de " -"dispositivo fixo" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Se especificado, monta o dispositivo pela etiqueta da partiçãoo ao invés de " -"um nó de dispositivo fixo" - -msgid "If unchecked, no default route is configured" -msgstr "Se desmarcado, nenhuma rota padrão será configurada" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" -"Se desmarcado, os endereços dos servidores DNS anunciados serão ignorados" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Se a sua memória física for insuficiente, os dados não utilizados poderão " -"ser armazenados temporariamente em um dispositivo swap, resultando em uma " -"maior quantidade de memória RAM utilizável. Esteja ciente de que a troca de dados (swap) é um processo " -"muito lento, uma vez que o dispositivo swap não pode ser acessado com taxas " -"de transferência tão altas com a memória RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignorar /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorar interface" - -msgid "Ignore resolve file" -msgstr "Ignorar arquivo de resolução de nomes (resolv.conf)" - -msgid "Image" -msgstr "Imagem" - -msgid "In" -msgstr "Entrada" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" -"Para prevenir acesso não autorizado neste sistema, sua requisição foi " -"bloqueada. Clique abaixo em \"Continuar »\" para retornar à página anterior." - -msgid "Inactivity timeout" -msgstr "Tempo limite de inatividade" - -msgid "Inbound:" -msgstr "Entrando:" - -msgid "Info" -msgstr "Informação" - -msgid "Initscript" -msgstr "Script de iniciação" - -msgid "Initscripts" -msgstr "Scripts de iniciação" - -msgid "Install" -msgstr "Instalar" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "Instale iputils-traceroute6 para rastrear rotas IPv6" - -msgid "Install package %q" -msgstr "Instalar pacote %q" - -msgid "Install protocol extensions..." -msgstr "Instalar extensões de protocolo..." - -msgid "Installed packages" -msgstr "Pacotes instalados" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuração da Interface" - -msgid "Interface Overview" -msgstr "Visão Geral da Interface" - -msgid "Interface is reconnecting..." -msgstr "A interface está reconectando..." - -msgid "Interface is shutting down..." -msgstr "A interface está desligando..." - -msgid "Interface name" -msgstr "Nome da Interface" - -msgid "Interface not present or not connected yet." -msgstr "A interface não está presente ou não está conectada ainda." - -msgid "Interface reconnected" -msgstr "Interface reconectada" - -msgid "Interface shut down" -msgstr "Interface desligada" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "Interno" - -msgid "Internal Server Error" -msgstr "erro no servidor interno" - -msgid "Invalid" -msgstr "Valor inválido" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"O valor informado do ID da VLAN é inválido! Somente valores entre %d e %d " -"são permitidos." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" -"O valor informado do ID da VLAN é inválido! Somente valores únicos são " -"permitidos." - -msgid "Invalid username and/or password! Please try again." -msgstr "Usuário e/ou senha inválida! Por favor, tente novamente." - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"A imagem que está a tentar carregar aparenta nao caber na flash do " -"equipamento. Por favor verifique o arquivo da imagem!" - -msgid "JavaScript required!" -msgstr "É necessário JavaScript!" - -msgid "Join Network" -msgstr "Conectar à Rede" - -msgid "Join Network: Wireless Scan" -msgstr "Conectar à Rede: Busca por Rede Sem Fio" - -msgid "Joining Network: %q" -msgstr "Juntando-se à rede %q" - -msgid "Keep settings" -msgstr "Manter configurações" - -msgid "Kernel Log" -msgstr "Registo do Kernel" - -msgid "Kernel Version" -msgstr "Versão do Kernel" - -msgid "Key" -msgstr "Chave" - -msgid "Key #%d" -msgstr "Chave #%d" - -msgid "Kill" -msgstr "Matar" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Servidor L2TP" - -msgid "LCP echo failure threshold" -msgstr "Limite de falha no eco do LCP" - -msgid "LCP echo interval" -msgstr "Intervalo do eco do LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etiqueta" - -msgid "Language" -msgstr "Idioma" - -msgid "Language and Style" -msgstr "Idioma e Estilo" - -msgid "Latency" -msgstr "Latência" - -msgid "Leaf" -msgstr "Folha" - -msgid "Lease time" -msgstr "Tempo de concessão" - -msgid "Lease validity time" -msgstr "Tempo de validade da atribuição" - -msgid "Leasefile" -msgstr "Arquivo de atribuições" - -msgid "Leasetime remaining" -msgstr "Tempo restante da atribuição" - -msgid "Leave empty to autodetect" -msgstr "Deixe vazio para detectar automaticamente" - -msgid "Leave empty to use the current WAN address" -msgstr "Deixe vazio para usar o endereço WAN atual" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" -"Limite o serviço DNS para subredes das interfaces nas quais estamos servindo " -"DNS." - -msgid "Limit listening to these interfaces, and loopback." -msgstr "Escute somente nestas interfaces e na interface local (loopback) " - -msgid "Line Attenuation (LATN)" -msgstr "Atenuação de Linha (LATN)" - -msgid "Line Mode" -msgstr "Modo da Linha" - -msgid "Line State" -msgstr "Estado da Linha" - -msgid "Line Uptime" -msgstr "Tempo de Atividade da Linha" - -msgid "Link On" -msgstr "Enlace Ativo" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Lista dos servidores DNS para " -"encaminhar as requisições" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" -"Lista dos R0KHs no mesmo Domínio de Mobilidade.
    Formato: Endereço " -"MAC, Identificador NAS, chave de 128 bits como cadeia hexadecimal.
    " -"Esta lista é usada para mapear o Identificador R0KH (Identificador NAS) para " -"um endereço MAC de destino ao solicitar a chave PMK-R1 a partir do R0KH que " -"o STA usado durante a Associação de Domínio de Mobilidade Inicial." - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" -"Lista dos R1KHs no mesmo Domínio de Mobilidade.
    Formato: Endereço " -"MAC, R1KH-ID como 6 octetos com dois pontos, chave de 128 bits como cadeia " -"hexadecimal.
    Esta lista é usada para mapear o identificador R1KH para " -"um endereço MAC de destino ao enviar a chave PMK-R1 a partir do R0KH. Esta é " -"também a lista de R1KHs autorizados no MD que podem solicitar chaves PMK-R1." - -msgid "List of SSH key files for auth" -msgstr "Lista de arquivos de chaves SSH para autenticação" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" -"Lista dos domínios para os quais será permitido respostas apontando para " -"redes privadas (RFC1918)" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" -"Lista de servidores DNS que " -"fornecem resultados errados para consultas a domínios inexistentes (NX)" - -msgid "Listen Interfaces" -msgstr "Interfaces de Escuta" - -msgid "Listen Port" -msgstr "Porta de Escuta" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Escuta apenas na interface especificada. Se não especificado, escuta em todas" - -msgid "Listening port for inbound DNS queries" -msgstr "Porta de escuta para a entrada das consultas DNS" - -msgid "Load" -msgstr "Carga" - -msgid "Load Average" -msgstr "Carga Média" - -msgid "Loading" -msgstr "Carregando" - -msgid "Local IP address to assign" -msgstr "Endereço IP local para atribuir" - -msgid "Local IPv4 address" -msgstr "Endereço IPv4 local" - -msgid "Local IPv6 address" -msgstr "Endereço IPv6 local" - -msgid "Local Service Only" -msgstr "Somente Serviço Local" - -msgid "Local Startup" -msgstr "Iniciação Local" - -msgid "Local Time" -msgstr "Hora Local" - -msgid "Local domain" -msgstr "Domínio Local" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Especificação do domínio local. Nomes que casam com este domínio nunca serão " -"encaminhados e são resolvidos somente pelo DHCP ou pelo arquivos de " -"equipamentos conhecidos (hosts)" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Sufixo do domínio local adicionado aos nomes no DHCP e nas entradas dos " -"arquivo de equipamentos conhecidos (hosts)" - -msgid "Local server" -msgstr "Servidor local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Localizar o nome do equipamento dependendo da subrede requisitante se " -"mútliplos endereços IPs estiverem disponíveis" - -msgid "Localise queries" -msgstr "Localizar consultas" - -msgid "Locked to channel %s used by: %s" -msgstr "Travado no canal %s usado por: %s" - -msgid "Log output level" -msgstr "Nível de detalhamento de saída dos registros" - -msgid "Log queries" -msgstr "Registar as consultas" - -msgid "Logging" -msgstr "Registrando os eventos" - -msgid "Login" -msgstr "Entrar" - -msgid "Logout" -msgstr "Sair" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" -"Segundos de Perda de Sinal (LOSS)" - -msgid "Lowest leased address as offset from the network address." -msgstr "O endereço mais baixo concedido como deslocamento do endereço da rede." - -msgid "MAC-Address" -msgstr "Endereço MAC" - -msgid "MAC-Address Filter" -msgstr "Filtro de Endereço MAC" - -msgid "MAC-Filter" -msgstr "Filtro de MAC" - -msgid "MAC-List" -msgstr "Lista de MAC" - -msgid "MAP / LW4over6" -msgstr "MAP / LW4over6" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "" -"MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" -"Certifique-se que clonou o sistema de arquivos raiz com algo como o comando " -"abaixo:" - -msgid "Manual" -msgstr "Manual" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" -"Taxa de Dados Atingível Máxima (ATTNDR)" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Número máximo permitido de alocações DHCP ativas" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Número máximo permitido de consultas DNS concorrentes" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Tamanho máximo permitido dos pacotes UDP EDNS.0" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Tempo máximo, em segundos, para esperar que o modem fique pronto" - -# Desconheço o uso -msgid "Maximum hold time" -msgstr "Tempo máximo de espera" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"Comprimento máximo do nome é de 15 caracteres, incluindo o prefixo " -"automático do protocolo/ponte (br-, 6in4- pppoe-, etc.)" - -msgid "Maximum number of leased addresses." -msgstr "Número máximo de endereços atribuídos." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memória" - -msgid "Memory usage (%)" -msgstr "Uso da memória (%)" - -msgid "Metric" -msgstr "Métrica" - -msgid "Minimum hold time" -msgstr "Tempo mínimo de espera" - -msgid "Mirror monitor port" -msgstr "Porta de monitoramento do espelho" - -msgid "Mirror source port" -msgstr "Porta de origem do espelho" - -msgid "Missing protocol extension for proto %q" -msgstr "Extensão para o protocolo %q está ausente" - -msgid "Mobility Domain" -msgstr "Domínio da Mobilidade" - -msgid "Mode" -msgstr "Modo" - -msgid "Model" -msgstr "Modelo" - -msgid "Modem device" -msgstr "Dispositivo do Modem" - -msgid "Modem init timeout" -msgstr "Estouro de tempo da iniciação do modem" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Entrada de Montagem" - -msgid "Mount Point" -msgstr "Ponto de Montagem" - -msgid "Mount Points" -msgstr "Pontos de Montagem" - -msgid "Mount Points - Mount Entry" -msgstr "Pontos de Montagem - Entrada de Montagem" - -msgid "Mount Points - Swap Entry" -msgstr "Pontos de Montagem - Entrada da Swap" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Pontos de montagem definem em que ponto um dispositivo de armazenamento será " -"anexado ao sistema de arquivos" - -msgid "Mount filesystems not specifically configured" -msgstr "Monte sistemas de arquivos não especificamente configurados" - -msgid "Mount options" -msgstr "Opções de montagem" - -msgid "Mount point" -msgstr "Ponto de montagem" - -msgid "Mount swap not specifically configured" -msgstr "Montar espalho de troca (swap) não especificamente configurado" - -msgid "Mounted file systems" -msgstr "Sistemas de arquivos montados" - -msgid "Move down" -msgstr "Mover para baixo" - -msgid "Move up" -msgstr "Mover para cima" - -msgid "Multicast address" -msgstr "Endereço de Multicast" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "Modo NAT-T" - -msgid "NAT64 Prefix" -msgstr "Prefixo NAT64" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "Proxy NDP" - -msgid "NT Domain" -msgstr "Domínio NT" - -msgid "NTP server candidates" -msgstr "Candidatos a servidor NTP" - -msgid "NTP sync time-out" -msgstr "Tempo limite da sincronia do NTP" - -msgid "Name" -msgstr "Nome" - -msgid "Name of the new interface" -msgstr "Nome da nova interface" - -msgid "Name of the new network" -msgstr "Nome da nova rede" - -msgid "Navigation" -msgstr "Navegação" - -msgid "Netmask" -msgstr "Máscara de rede" - -msgid "Network" -msgstr "Rede" - -msgid "Network Utilities" -msgstr "Utilitários de Rede" - -msgid "Network boot image" -msgstr "Imagem de boot pela rede" - -msgid "Network without interfaces." -msgstr "Rede sem interfaces." - -msgid "Next »" -msgstr "Próximo »" - -msgid "No DHCP Server configured for this interface" -msgstr "Nenhum Servidor DHCP configurado para esta interface" - -msgid "No NAT-T" -msgstr "Sem NAT-T" - -msgid "No chains in this table" -msgstr "Nenhuma cadeira nesta tabela" - -msgid "No files found" -msgstr "Nenhum arquivo encontrado" - -msgid "No information available" -msgstr "Nenhuma informação disponível" - -msgid "No negative cache" -msgstr "Nenhum cache negativo" - -msgid "No network configured on this device" -msgstr "Nenhuma rede configurada neste dispositivo" - -msgid "No network name specified" -msgstr "Nenhum nome de rede foi especificado" - -msgid "No package lists available" -msgstr "Nenhuma lista de pacotes disponível" - -msgid "No password set!" -msgstr "Nenhuma senha definida!" - -msgid "No rules in this chain" -msgstr "Sem regras nesta cadeia" - -msgid "No zone assigned" -msgstr "Nenhuma zona definida" - -msgid "Noise" -msgstr "Ruído" - -msgid "Noise Margin (SNR)" -msgstr "Margem de Ruído (SNR)" - -msgid "Noise:" -msgstr "Ruído:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" -"Erros CRC Não PreemptivosCRC_P" - -msgid "Non-wildcard" -msgstr "Sem caracter curinga" - -msgid "None" -msgstr "Nenhum" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Não Encontrado" - -msgid "Not associated" -msgstr "Não conectado" - -msgid "Not connected" -msgstr "Não conectado" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: Os arquivos de configuração serão apagados." - -msgid "Note: interface name length" -msgstr "Aviso: tamanho do nome da interface" - -msgid "Notice" -msgstr "Aviso" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configuração-OPKG" - -msgid "Obfuscated Group Password" -msgstr "Senha Ofuscada do Grupo" - -msgid "Obfuscated Password" -msgstr "Senha Ofuscada" - -msgid "Off-State Delay" -msgstr "Atraso no estado de desligado" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Nesta página pode configurar as interfaces de rede. Esta interface pode " -"formar uma ponte juntando várias interfaces. Para isto, marque o campo " -"\"Juntar interfaces em uma ponte\" e informar as várias interfaces de rede. " -"Pode também usar a notação para VLAN INTERFACE.VLANNR (ex.: " -"eth0.1)." - -msgid "On-State Delay" -msgstr "Atraso no estado de conexões" - -msgid "One of hostname or mac address must be specified!" -msgstr "" -"É necessário especificar ao menos um nome de equipamento ou endereço MAC!" - -msgid "One or more fields contain invalid values!" -msgstr "Um ou mais campos contém valores inválidos!" - -msgid "One or more invalid/required values on tab" -msgstr "Um ou mais valores inválidos/obrigatórios na aba" - -msgid "One or more required fields have no value!" -msgstr "Um ou mais campos obrigatórios não tem valor!" - -msgid "Open list..." -msgstr "Abrir lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "OpenConnect (CISCO AnyConnect)" - -msgid "Operating frequency" -msgstr "Frequência de Operação" - -msgid "Option changed" -msgstr "Opção alterada" - -msgid "Option removed" -msgstr "Opção removida" - -msgid "Optional" -msgstr "Opcional" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" -"Opcional, especifique para sobrescrever o servidor padrão (tic.sixxs.net)" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "Opcional, para usar quando a conta SIXXS tem mais de um túnel" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" -"Opcional. Adiciona uma camada extra de cifragem simétrica para resistência " -"pós quântica." - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "Opcional. Cria rotas para endereços IP Autorizados para este parceiro." - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" -"Opcional. Equipamento do parceiro. Nomes serão resolvido antes de levantar a " -"interface." - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "Opcional. Unidade Máxima de Transmissão da interface do túnel." - -msgid "Optional. Port of peer." -msgstr "Opcional. Porta do parceiro." - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"Opcional. Segundos entre mensagens para manutenção da conexão. O padrão é 0 " -"(desabilitado). O valor recomendado caso este dispositivo esteja atrás de " -"uma NAT é 25." - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "opcional. Porta UDP usada para pacotes saintes ou entrantes." - -msgid "Options" -msgstr "Opções" - -msgid "Other:" -msgstr "Outro:" - -msgid "Out" -msgstr "Saída" - -msgid "Outbound:" -msgstr "Saindo:" - -msgid "Output Interface" -msgstr "Interface de Saída" - -msgid "Override MAC address" -msgstr "Sobrescrever o endereço MAC" - -msgid "Override MTU" -msgstr "" -"Sobrescrever o MTU" - -msgid "Override TOS" -msgstr "Sobrescrever o TOS" - -msgid "Override TTL" -msgstr "Sobrescrever o TTL" - -msgid "Override default interface name" -msgstr "Sobrescrever o nome da nova interface" - -msgid "Override the gateway in DHCP responses" -msgstr "Sobrescrever o roteador padrão nas respostas do DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Sobrescrever a máscara de rede enviada aos clientes. Normalmente, ela é " -"calculada a partir da máscara da subrede de onde o cliente solicitou o " -"endereço." - -msgid "Override the table used for internal routes" -msgstr "Sobrescrever a tabela usada para as rotas internas" - -msgid "Overview" -msgstr "Visão geral" - -msgid "Owner" -msgstr "Dono" - -msgid "PAP/CHAP password" -msgstr "Senha do PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Usuário do PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "PMK R1 Push" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Encapsulamento PPPoA " - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "Deslocamento PSID" - -msgid "PSID-bits length" -msgstr "Comprimento dos bits PSID" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "PTM/EFM (Modo de Transferência de Pacotes)" - -msgid "Package libiwinfo required!" -msgstr "O pacote libiwinfo é necessário!" - -msgid "Package lists are older than 24 hours" -msgstr "As listas de pacotes são mais antigas do que 24 horas" - -msgid "Package name" -msgstr "Nome do Pacote" - -msgid "Packets" -msgstr "Pacotes" - -msgid "Part of zone %q" -msgstr "Parte da zona %q" - -msgid "Password" -msgstr "Senha" - -msgid "Password authentication" -msgstr "Autenticação por senha" - -msgid "Password of Private Key" -msgstr "Senha da Chave Privada" - -msgid "Password of inner Private Key" -msgstr "Senha da Chave Privada interna" - -msgid "Password successfully changed!" -msgstr "A senha foi alterada com sucesso!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Caminho para o Certificado da AC" - -msgid "Path to Client-Certificate" -msgstr "Caminho para o Certificado do Cliente" - -msgid "Path to Private Key" -msgstr "Caminho para a Chave Privada" - -msgid "Path to executable which handles the button event" -msgstr "Caminho para o executável que trata o evento do botão" - -msgid "Path to inner CA-Certificate" -msgstr "Caminho para os certificados CA interno" - -msgid "Path to inner Client-Certificate" -msgstr "Caminho para o Certificado do Cliente interno" - -msgid "Path to inner Private Key" -msgstr "Caminho para a Chave Privada interna" - -msgid "Peak:" -msgstr "Pico:" - -msgid "Peer IP address to assign" -msgstr "Endereço IP do parceiro para atribuir" - -msgid "Peers" -msgstr "Parceiros" - -msgid "Perfect Forward Secrecy" -msgstr "Sigilo Encaminhado Perfeito" - -msgid "Perform reboot" -msgstr "Reiniciar o sistema" - -msgid "Perform reset" -msgstr "Zerar configuração" - -msgid "Persistent Keep Alive" -msgstr "Manutenção da Conexão Persistente" - -msgid "Phy Rate:" -msgstr "Taxa física:" - -msgid "Physical Settings" -msgstr "Configurações Físicas" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pcts." - -msgid "Please enter your username and password." -msgstr "Entre com o seu usuário e senha." - -msgid "Policy" -msgstr "Política" - -msgid "Port" -msgstr "Porta" - -msgid "Port status:" -msgstr "Status da porta" - -msgid "Power Management Mode" -msgstr "Modo de Gerenciamento de Energia" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" -"Erros CRC PreemptivosCRCP_P" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "Prefixo Delegado" - -msgid "Preshared Key" -msgstr "Chave Compartilhada" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Assumir que o parceiro está morto depois de uma data quantidade de falhas de " -"echo do LCP. Use 0 para ignorar as falhas" - -msgid "Prevent listening on these interfaces." -msgstr "Evite escutar nestas Interfaces." - -msgid "Prevents client-to-client communication" -msgstr "Impede a comunicação de cliente para cliente" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Prism2/2.5/3 802.11b Wireless Controlador" - -msgid "Private Key" -msgstr "Chave Privada" - -msgid "Proceed" -msgstr "Proceder" - -msgid "Processes" -msgstr "Processos" - -msgid "Profile" -msgstr "Perfil" - -msgid "Prot." -msgstr "Protocolo" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Protocol family" -msgstr "Família do protocolo" - -msgid "Protocol of the new interface" -msgstr "Protocolo para a nova interface" - -msgid "Protocol support is not installed" -msgstr "O suporte ao protocolo não está instalado" - -msgid "Provide NTP server" -msgstr "Fornecer serviço NTP" - -msgid "Provide new network" -msgstr "Prover nova rede" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Ad-Hoc falso (ahdemo)" - -msgid "Public Key" -msgstr "Chave Pública" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" -"Prefixo público roteado para este dispositivo para distribuição a seus " -"clientes." - -msgid "QMI Cellular" -msgstr "Celular QMI" - -msgid "Quality" -msgstr "Qualidade" - -msgid "R0 Key Lifetime" -msgstr "Validade da Chave R0" - -msgid "R1 Key Holder" -msgstr "Detentor da Chave R1" - -msgid "RFC3947 NAT-T mode" -msgstr "Modo NAT-T (RFC3947)" - -msgid "RTS/CTS Threshold" -msgstr "Limiar RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Taxa de RX" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "RaLink 802.11%s Wireless Controlador" - -msgid "Radius-Accounting-Port" -msgstr "Porta de contabilidade do RADIUS" - -msgid "Radius-Accounting-Secret" -msgstr "Segredo da contabilidade do RADIUS" - -msgid "Radius-Accounting-Server" -msgstr "Servidor da contabilidade do RADIUS" - -msgid "Radius-Authentication-Port" -msgstr "Porta de autenticação do RADIUS" - -msgid "Radius-Authentication-Secret" -msgstr "Segredo da autenticação do RADIUS" - -msgid "Radius-Authentication-Server" -msgstr "Servidor da autenticação do RADIUS" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Ler /etc/ethers para configurar o Servidor-DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Realmente excluir esta interface? A exclusão não pode ser desfeita!\n" -" Você poderá perder o acesso a este dispositivo se você estiver conectado " -"através desta interface." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Realmente excluir esta interface Wireless? A exclusão não pode ser " -"desfeita!\n" -"Você poderá perder o acesso a este dispositivo se você estiver conectado " -"através desta interface." - -msgid "Really reset all changes?" -msgstr "Realmente limpar todas as mudanças?" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Realmente desligar esta rede\"%s\" ?\n" -"Você poderá perder o acesso a este dispositivo se você estiver conectado " -"através desta interface." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Realmente desligar esta interface\"%s\" ?\n" -"Você poderá perder o acesso a este dispositivo se você estiver conectado " -"através desta interface." - -msgid "Really switch protocol?" -msgstr "Realmente trocar o protocolo?" - -msgid "Realtime Connections" -msgstr "Conexões em Tempo Real" - -msgid "Realtime Graphs" -msgstr "Gráficos em Tempo Real" - -msgid "Realtime Load" -msgstr "Carga em Tempo Real" - -msgid "Realtime Traffic" -msgstr "Tráfego em Tempo Real" - -msgid "Realtime Wireless" -msgstr "Rede sem fio em Tempo Real" - -msgid "Reassociation Deadline" -msgstr "Limite para Reassociação" - -msgid "Rebind protection" -msgstr "Proteção contra \"Rebind\"" - -msgid "Reboot" -msgstr "Reiniciar" - -msgid "Rebooting..." -msgstr "Reiniciando..." - -msgid "Reboots the operating system of your device" -msgstr "Reinicia o sistema operacional do seu dispositivo" - -msgid "Receive" -msgstr "Receber" - -msgid "Receiver Antenna" -msgstr "Antena de Recepção" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "Recomendado. Endereços IP da interface do WireGuard." - -msgid "Reconnect this interface" -msgstr "Reconectar esta interface" - -msgid "Reconnecting interface" -msgstr "Reconectando interface" - -msgid "References" -msgstr "Referências" - -msgid "Relay" -msgstr "Retransmissor" - -msgid "Relay Bridge" -msgstr "Ponte por Retransmissão" - -msgid "Relay between networks" -msgstr "Encaminha o tráfego entre as redes" - -msgid "Relay bridge" -msgstr "Ponte por retransmissão" - -msgid "Remote IPv4 address" -msgstr "Endereço IPv4 remoto" - -msgid "Remote IPv4 address or FQDN" -msgstr "Endereço IPv4 remoto ou FQDN" - -msgid "Remove" -msgstr "Remover" - -msgid "Repeat scan" -msgstr "Repetir busca" - -msgid "Replace entry" -msgstr "Substituir entrada" - -msgid "Replace wireless configuration" -msgstr "Substituir a configuração da rede sem fio" - -msgid "Request IPv6-address" -msgstr "Solicita endereço IPv6" - -msgid "Request IPv6-prefix of length" -msgstr "Solicita prefixo IPv6 de tamanho" - -msgid "Require TLS" -msgstr "Requer TLS" - -msgid "Required" -msgstr "Necessário" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" -"Obrigatório para alguns provedores de internet, ex. Charter com DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "Obrigatório. Chave privada codificada em Base64 para esta interface." - -msgid "Required. Base64-encoded public key of peer." -msgstr "Necessário. Chave Pública do parceiro codificada como Base64." - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" -"Obrigatório. Endereços IP e prefixos que este parceiro está autorizado a " -"usar dentro do túnel. Normalmente é o endereço IP do parceiro no túnel e as " -"redes que o parceiro roteia através do túnel." - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "Obrigatório. Chave Pública do parceiro." - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" -"Exige o suporte DNSSEC do servidor superior; verifica se resposta não " -"assinadas realmente vẽm de domínios não assinados." - -msgid "Reset" -msgstr "Limpar" - -msgid "Reset Counters" -msgstr "Reiniciar contadores" - -msgid "Reset to defaults" -msgstr "Redefinir para os valores padrão" - -msgid "Resolv and Hosts Files" -msgstr "Arquivos de Resolv e Hosts" - -msgid "Resolve file" -msgstr "Arquivo Resolv" - -msgid "Restart" -msgstr "Reiniciar" - -msgid "Restart Firewall" -msgstr "Reiniciar o firewall" - -msgid "Restore backup" -msgstr "Restaurar cópia de segurança" - -msgid "Reveal/hide password" -msgstr "Relevar/esconder senha" - -msgid "Revert" -msgstr "Reverter" - -msgid "Root" -msgstr "Raiz" - -msgid "Root directory for files served via TFTP" -msgstr "Diretório raiz para arquivos disponibilizados pelo TFTP" - -msgid "Root preparation" -msgstr "Prepação da raiz (/)" - -msgid "Route Allowed IPs" -msgstr "Roteie Andereços IP Autorizados" - -msgid "Route type" -msgstr "Tipo de rota" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "Prefixo roteável IPv6 para interfaces internas" - -msgid "Router Advertisement-Service" -msgstr "Serviço de Anúncio de Roteador" - -msgid "Router Password" -msgstr "Senha do Roteador" - -msgid "Routes" -msgstr "Rotas" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"As rotas especificam através de qual interface e roteador um certo destino " -"podem ser alcançado." - -msgid "Run a filesystem check before mounting the device" -msgstr "" -"Execute a verificação do sistema de arquivos antes da montagem do dispositivo" - -msgid "Run filesystem check" -msgstr "Execute a verificação do sistema de arquivos " - -msgid "SHA256" -msgstr "SHA256" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" -"O SIXXS suporta somente TIC. Use o 6in4 para túneis estáticos usando o " -"protocolo IP 41 (RFC4213)" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "Identificador do SIXXS[/Identificador do Túnel]" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "Acesso SSH" - -msgid "SSH server address" -msgstr "Endereço do servidor SSH" - -msgid "SSH server port" -msgstr "Porta do servidor SSH" - -msgid "SSH username" -msgstr "Usuário do SSH" - -msgid "SSH-Keys" -msgstr "Chaves SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Salvar" - -msgid "Save & Apply" -msgstr "Salvar & Aplicar" - -msgid "Save & Apply" -msgstr "Save & Aplicar" - -msgid "Scan" -msgstr "Procurar" - -msgid "Scheduled Tasks" -msgstr "Tarefas Agendadas" - -msgid "Section added" -msgstr "Seção adicionada" - -msgid "Section removed" -msgstr "Seção removida" - -msgid "See \"mount\" manpage for details" -msgstr "Veja o manual (man) do comando \"mount\" para detalhes" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Enviar requisições de eco do LCP no dado intervalo em segundos. Somente " -"efetivo em conjunto com o limite de falhas." - -msgid "Separate Clients" -msgstr "Isolar Clientes" - -msgid "Server Settings" -msgstr "Configurações do Servidor" - -msgid "Server password" -msgstr "Senha do servidor" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" -"Senha do servidor. Informe a senha para este túnel quando o nome do usuário " -"contiver o identificador do túnel" - -msgid "Server username" -msgstr "Usuário do servidor" - -msgid "Service Name" -msgstr "Nome do Serviço" - -msgid "Service Type" -msgstr "Tipo do Serviço" - -msgid "Services" -msgstr "Serviços" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "Configurar a Sincronização do Horário" - -msgid "Setup DHCP Server" -msgstr "Configurar Servidor DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" -"Segundos com erro severos (SES)" - -msgid "Short GI" -msgstr "Intervalo de guarda curto" - -msgid "Show current backup file list" -msgstr "Mostra a lista atual de arquivos para a cópia de segurança" - -msgid "Shutdown this interface" -msgstr "Desligar esta interface" - -msgid "Shutdown this network" -msgstr "Desligar esta rede" - -msgid "Signal" -msgstr "Sinal" - -msgid "Signal Attenuation (SATN)" -msgstr "Atenuação do Sinal (SATN)" - -msgid "Signal:" -msgstr "Sinal:" - -msgid "Size" -msgstr "Tamanho" - -msgid "Size (.ipk)" -msgstr "Tamanho (.ipk)" - -msgid "Skip" -msgstr "Pular" - -msgid "Skip to content" -msgstr "Pular para o conteúdo" - -msgid "Skip to navigation" -msgstr "Pular para a navegação" - -msgid "Slot time" -msgstr "Intervalo de tempo" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "VLAN em Software" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Alguns campos estão inválidos e os valores não podem ser salvos!" - -msgid "Sorry, the object you requested was not found." -msgstr "Desculpe o objeto solicitado não foi encontrado" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Desculpe, o servidor encontrou um erro inesperado." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Sinto muito, não existe suporte para o sysupgrade. Uma nova imagem de " -"firmware deve ser gravada manualmente. Por favor, consulte a wiki para " -"instruções específicas da instalação deste dispositivo." - -msgid "Sort" -msgstr "Ordenar" - -msgid "Source" -msgstr "Origem" - -msgid "Source routing" -msgstr "Roteamento pela origem" - -msgid "Specifies the button state to handle" -msgstr "Especifica o estado do botão para ser tratado" - -msgid "Specifies the directory the device is attached to" -msgstr "Especifica o diretório que o dispositivo está conectado" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Especifica a porta de escuta deste Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Especifica a quantidade máxima de requisições ARP falhadas antes de " -"considerar que um equipamento está morto" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Especifica a quantidade máxima de segundos antes de considerar que um " -"equipamento está morto" - -msgid "Specify a TOS (Type of Service)." -msgstr "Especifique um Tipo de Serviço (TOS)" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" -"Especifica o tempo de vida (TTL) para os " -"pacotes encapsulados ao invés do padrão (64)." - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" -"Especifica a unidade máxima de transmissão (MTU) ao invés do valor padrão (1280 bytes)" - -msgid "Specify the secret encryption key here." -msgstr "Especifique a chave de cifragem secreta aqui." - -msgid "Start" -msgstr "Iniciar" - -msgid "Start priority" -msgstr "Prioridade de iniciação" - -msgid "Startup" -msgstr "Iniciação" - -msgid "Static IPv4 Routes" -msgstr "Rotas Estáticas IPv4" - -msgid "Static IPv6 Routes" -msgstr "Rotas Estáticas IPv6" - -msgid "Static Leases" -msgstr "Alocações Estáticas" - -msgid "Static Routes" -msgstr "Rotas Estáticas" - -msgid "Static address" -msgstr "Endereço Estático" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Alocações estáticas são usadas para definir um endereço IP fixo e nome " -"simbólico para os clientes do DHCP. Elas também são necessárias para " -"configurações não dinâmicas onde um computador com a alocação correspondente " -"é provido." - -msgid "Status" -msgstr "Estado" - -msgid "Stop" -msgstr "Parar" - -msgid "Strict order" -msgstr "Ordem Exata" - -msgid "Submit" -msgstr "Enviar" - -msgid "Suppress logging" -msgstr "Suprimir registros (log)" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "Suprimir registros (log) de operações rotineiras destes protocolos" - -msgid "Swap" -msgstr "Espaço de Troca (swap)" - -msgid "Swap Entry" -msgstr "Entrada do espaço de troca (Swap)" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "Switch %q" - -msgid "Switch %q (%s)" -msgstr "Switch %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" -"O Switch %q tem uma topologia desconhecida - as configurações de VLAN podem " -"não ser precisas." - -msgid "Switch VLAN" -msgstr "Switch VLAN" - -msgid "Switch protocol" -msgstr "Trocar o protocolo" - -msgid "Sync with browser" -msgstr "Sincronizar com o navegador" - -msgid "Synchronizing..." -msgstr "Sincronizando..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registo do Sistema" - -msgid "System Properties" -msgstr "Propriedades do Sistema" - -msgid "System log buffer size" -msgstr "Tamanho do buffer de registro do sistema" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Configurações do TFTP" - -msgid "TFTP server root" -msgstr "Raiz do servidor TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Taxa de TX" - -msgid "Table" -msgstr "Tabela" - -msgid "Target" -msgstr "Destino" - -msgid "Target network" -msgstr "Rede de destino" - -msgid "Terminate" -msgstr "Terminar" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"A seção da Configuração do Dispositivo engloba as configurações " -"físicas do rádio como canal, potência de transmissão ou seleção da antena. " -"Estas configurações são compartilhadas entre todas as redes sem fio (se o " -"hardware for capaz de utilizar múltiplas SSID). As configurações específicas " -"de cada rede, como cifragem ou modo de operação estão agrupadas na " -"Configuração da Interface." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"O pacote libiwinfo-lua não está instalado. Você precisa instalar " -"este componente para ter uma configuração da rede sem fio funcional!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" -"A configuração da atualização de pontas HE.net mudou. Você deve agora usar o " -"nome do usuário ao invés do identificador do usuário!" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "O endereço IPv4 ou o nome completo (FQDN) da ponta remota do túnel." - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"O prefixo IPv6 atribuído pelo provedor, geralmente termina com::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Os caracteres permitidos são: A-Z, a-z, 0-9 e _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" -"O arquivo de configuração não pode ser carregado devido ao seguinte erro:" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"O arquivo do dispositivo de armazenamento ou da partição (ex: /dev/" -"sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"O sistema de arquivos que foi usado para formatar a unidade de armazenamento " -"(ex. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"A imagem do firmware foi enviada. Abaixo estão a soma de verificação " -"(checksum) e o tamanho dom arquivo. Compare-os com o arquivo original para " -"garantir a integridade dos dados.
    Clique em \"Proceder\" para iniciar " -"o procedimetno de gravação." - -msgid "The following changes have been committed" -msgstr "As seguintes mudanças foram aplicadas" - -msgid "The following changes have been reverted" -msgstr "As seguintes alterações foram revertidas" - -msgid "The following rules are currently active on this system." -msgstr "As seguintes regras estão atualmente ativas neste sistema." - -msgid "The given network name is not unique" -msgstr "O nome de rede informado não é único" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Este equipamento não é capaz de utilizar SSID múltiplos e as configurações " -"existentes serão substituídas se você proceder." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"O comprimento do prefixo IPv4 em bits, o restante é usado nos endereços IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "O comprimento do prefixo IPv6 em bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "O endereço IPv4 local sobre o qual o túnel será criado (opcional)." - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"As portas de rede neste dispositivo podem ser configuradas em diversas VLANs nas quais computadores em uma " -"mesma VLAN podem se comunicar " -"diretamente. VLANs são muitas " -"vezes utilizadas para separar diferentes segmentos de rede. Em geral, existe " -"uma porta para o enlace superior (uplink) e as demais portas são utilizadas " -"para a rede local." - -msgid "The selected protocol needs a device assigned" -msgstr "O protocolo selecionado necessita estar associado a um dispositivo" - -msgid "The submitted security token is invalid or already expired!" -msgstr "A chave eletrônica enviada é inválida ou já expirou!" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"O sistema está apagando agora a partição da configuração e irá reiniciar " -"quando terminado." - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"O sistema está gravando o firmware para a flash.
    NÃO DESLIGUE O " -"EQUIPAMENTO!
    Espere alguns minutos até tentar reconectar. Dependendo " -"da sua configuração, pode ser necessário renovar o endereço do seu " -"computador para poder conectar novamente ao roteador." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" -"O final do túnel está atrás de um NAT. Por padrão será desabilitado e " -"somente se aplica a AYIYA" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"A imagem carregada não contém um formato suportado. Confirme que você " -"escolheu uma imagem para a sua plataforma." - -msgid "There are no active leases." -msgstr "Não existem alocações ativas." - -msgid "There are no pending changes to apply!" -msgstr "Não existem modificações pendentes para aplicar!" - -msgid "There are no pending changes to revert!" -msgstr "Não existem modificações pendentes para reverter!" - -msgid "There are no pending changes!" -msgstr "Não existem modificações pendentes!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Ainda não existe um dispositivo associado. Por favor, associe um dispositivo " -"de rede na aba \"Configurações Físicas\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Não existem uma senha definida para este roteador. Por favor, configure uma " -"senha para o root para proteger a interface WEB e habilitar o SSH." - -msgid "This IPv4 address of the relay" -msgstr "Este endereço IPv4 do repassar" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"Este arquivo deve conter linhas como 'server=/domain/1.2.3.4' ou " -"'server=1.2.3.4' para servidores DNS por domínio ou completos." - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Esta é a lista dos padrões de expressão shell para casar com os arquivos e " -"diretórios incluídos durante a atualização do sistema. Arquivos modificados " -"em /etc/config/ e alguns outros arquivos de configuração são automaticamente " -"preservados." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" -"Isto é a \"Update Key\" configurada para o túnel ou a senha da cpnta se não " -"tem uma \"Update Keu\" configurada" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Este é o conteúdo do /etc/rc.local. Insira seus próprios comandos aqui " -"(antes de 'exit 0') para executá-los no final do processo de boot." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"Este é o endereço da ponta local designado pelo agente de túnel. normalmente " -"ele termina com :2" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Este é o único DHCP na rede local" - -msgid "This is the plain username for logging into the account" -msgstr "Este é o nome do usuário em para se autenticar na sua conta" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" -"Este é o prefixo roteado pelo agente do tunel para você usar com seus " -"clientes" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Este é o sistema de agendamento de tarefas." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Este é normalmente o endereço do PoP mais próximo operado pelo agente de túnel" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Esta lista fornece uma visão geral sobre os processos em execução no sistema." - -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Esta página permite a configuração de ações personalizadas para os botões" - -msgid "This page gives an overview over currently active network connections." -msgstr "Esta página fornece informações sobre as conexões de rede ativas." - -msgid "This section contains no values yet" -msgstr "Esta seção ainda não contêm valores" - -msgid "Time Synchronization" -msgstr "Sincronização de horário" - -msgid "Time Synchronization is not configured yet." -msgstr "A sincronização do horário ainda não está configurada." - -msgid "Timezone" -msgstr "Fuso Horário" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Para recuperar os arquivos de configuração, você pode enviar aqui uma cópia " -"de segurança anterior." - -msgid "Tone" -msgstr "Tom" - -msgid "Total Available" -msgstr "Total Disponível" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Tráfego" - -msgid "Transfer" -msgstr "Transferências" - -msgid "Transmission Rate" -msgstr "Taxa de Transmissão" - -msgid "Transmit" -msgstr "Transmitir" - -msgid "Transmit Power" -msgstr "Potência de Transmissão" - -msgid "Transmitter Antenna" -msgstr "Antena de Transmissão" - -msgid "Trigger" -msgstr "Disparo" - -msgid "Trigger Mode" -msgstr "Modo de disparo" - -msgid "Tunnel ID" -msgstr "Identificador do Túnel" - -msgid "Tunnel Interface" -msgstr "Interface de Tunelamento" - -msgid "Tunnel Link" -msgstr "Enlace do túnel" - -msgid "Tunnel broker protocol" -msgstr "Protocolo do agente do túnel" - -msgid "Tunnel setup server" -msgstr "Servidor de configuração do túnel" - -msgid "Tunnel type" -msgstr "Tipo de túnel" - -msgid "Tx-Power" -msgstr "Potência de transmissão" - -msgid "Type" -msgstr "Tipo" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "UMTS somente" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Dispositivo USB" - -msgid "USB Ports" -msgstr "Portas USB" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Não é possível a expedição" - -msgid "Unavailable Seconds (UAS)" -msgstr "" -"Segundos de indisponibilidade (UAS)" - -msgid "Unknown" -msgstr "Desconhecido" - -msgid "Unknown Error, password not changed!" -msgstr "Erro Desconhecido, a senha não foi alterada!" - -msgid "Unmanaged" -msgstr "Não gerenciado" - -msgid "Unmount" -msgstr "Desmontar" - -msgid "Unsaved Changes" -msgstr "Alterações Não Salvas" - -msgid "Unsupported protocol type." -msgstr "Tipo de protocolo não suportado." - -msgid "Update lists" -msgstr "Atualizar listas" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Envia uma imagem compatível do sistema para substituir o firmware em " -"execução. Marque \"Manter configurações\" para manter as configurações " -"atuais (requer uma imagem compatível)." - -msgid "Upload archive..." -msgstr "Enviar arquivo..." - -msgid "Uploaded File" -msgstr "Arquivo Carregado" - -msgid "Uptime" -msgstr "Tempo de atividade" - -msgid "Use /etc/ethers" -msgstr "Usar /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Use o roteador do DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Use os servidores DNS anunciados pelo parceiro" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Usar códigos de países ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "" -"Use o MTU na interface do túnel" - -msgid "Use TTL on tunnel interface" -msgstr "Use TTL na interface do túnel" - -msgid "Use as external overlay (/overlay)" -msgstr "Use como uma sobreposição externa (/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "Usar como o sistema de arquivos raiz (/)" - -msgid "Use broadcast flag" -msgstr "Use a marcação de broadcast" - -msgid "Use builtin IPv6-management" -msgstr "Use o gerenciamento do IPv6 embarcado" - -msgid "Use custom DNS servers" -msgstr "Use servidores DNS personalizados" - -msgid "Use default gateway" -msgstr "Use o roteador padrão" - -msgid "Use gateway metric" -msgstr "Use a métrica do roteador" - -msgid "Use routing table" -msgstr "Use a tabela de roteamento" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Use o botão Adicionar para adicionar uma nova entrada de " -"atribuição. O endereço MAC-Address identifica o equipamento, o " -"endereço IPv4 especifica o endereço fixo para usar e o nome do " -"equipamento é designado como nome simbólico (DNS) para o equipamento " -"requisitante." - -msgid "Used" -msgstr "Usado" - -msgid "Used Key Slot" -msgstr "Posição da Chave Usada" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" -"Usado para dois diferentes propósitos: identificador do RADIUS NAS e do " -"802.11r R0KH. Não necessário com o WPA(2)-PSK normal." - -msgid "User certificate (PEM encoded)" -msgstr "Certificado do usuário (codificado em formato PEM)" - -msgid "User key (PEM encoded)" -msgstr "Chave do usuário (codificada em formato PEM)" - -msgid "Username" -msgstr "Usuário" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "VLANs em %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs em %q (%s)" - -msgid "VPN Local address" -msgstr "Endereço Local da VPN" - -msgid "VPN Local port" -msgstr "Porta Local da VPN" - -msgid "VPN Server" -msgstr "Servidor VPN" - -msgid "VPN Server port" -msgstr "Porta do Servidor VPN" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "Resumo digital SHA1 do certificado do servidor VPN" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC (VPN do CISCO 3000 (e outros))" - -msgid "Vendor" -msgstr "Fabricante" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Classe do fabricante para enviar quando requisitar o DHCP" - -msgid "Verbose" -msgstr "Detalhado" - -msgid "Verbose logging by aiccu daemon" -msgstr "Habilite registros detalhados do serviço AICCU" - -msgid "Verify" -msgstr "Verificar" - -msgid "Version" -msgstr "Versão" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP Sistema Aberto" - -msgid "WEP Shared Key" -msgstr "WEP Chave Compartilhada" - -msgid "WEP passphrase" -msgstr "WEP Senha" - -msgid "WMM Mode" -msgstr "Modo WMM" - -msgid "WPA passphrase" -msgstr "WPA Senha" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"A cifragem WPA requer a instalação do wpa_supplicant (para modo cliente) ou " -"do hostapd (para modo AP ou ad-hoc)." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" -"Espere esta quantidade de segundos pela sincronia do NTP. Definindo como 0 " -"desabilita a espera (opcional)" - -msgid "Waiting for changes to be applied..." -msgstr "Esperando a aplicação das mudanças..." - -msgid "Waiting for command to complete..." -msgstr "Esperando o término do comando..." - -msgid "Waiting for device..." -msgstr "Esperando pelo dispositivo..." - -msgid "Warning" -msgstr "Atenção" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "Atenção: Existem mudanças não salvas que serão perdidas ao reiniciar!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "Se deve criar uma rota padrão IPv6 sobre o túnel" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "Se deve rotear somente pacotes de prefixos delegados" - -msgid "Width" -msgstr "Largura" - -msgid "WireGuard VPN" -msgstr "VPN WireGuard" - -msgid "Wireless" -msgstr "Rede sem fio" - -msgid "Wireless Adapter" -msgstr "Dispositivo de Rede sem Fio" - -msgid "Wireless Network" -msgstr "Rede sem Fio" - -msgid "Wireless Overview" -msgstr "Visão Geral da Rede sem Fio" - -msgid "Wireless Security" -msgstr "Segurança da Rede sem Fio" - -msgid "Wireless is disabled or not associated" -msgstr "Rede sem fio está desabilitada ou não conectada" - -msgid "Wireless is restarting..." -msgstr "A rede sem fio está reiniciando..." - -msgid "Wireless network is disabled" -msgstr "A rede sem fio está desabilitada" - -msgid "Wireless network is enabled" -msgstr "A rede sem fio está habilitada" - -msgid "Wireless restarted" -msgstr "A rede sem fio reiniciou" - -msgid "Wireless shut down" -msgstr "Rede sem fio desligada" - -msgid "Write received DNS requests to syslog" -msgstr "Escreva as requisições DNS para o servidor de registro (syslog)" - -msgid "Write system log to file" -msgstr "Escrever registo do sistema (log) no arquivo" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Neste local, você pode ativar ou desativar os scripts de iniciação " -"instalados. As mudanças serão aplicadas após a reiniciação do equipamento." -"
    Aviso: Se você desativar algum script de iniciação essencial " -"como por exemplo \"rede/network\", o dispositivo poderá tornar-se " -"inacessível!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Você precisa habilitar o JavaScript no seu navegador ou o LuCI não irá " -"funcionar corretamente." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"Seu Internet Explorer é muito velho para mostrar esta página corretamente. " -"Por favor, atualiza para, ao menos, a versão 7 ou use outro navegador como o " -"Firefox, Opera ou Safari." - -msgid "any" -msgstr "qualquer" - -msgid "auto" -msgstr "automático" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "em ponte" - -msgid "create:" -msgstr "criar" - -msgid "creates a bridge over specified interface(s)" -msgstr "cria uma ponte sobre determinada(s) interface(s)" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "desativar" - -msgid "disabled" -msgstr "desabilitado" - -msgid "expired" -msgstr "expirado" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Arquivo onde as alocações DHCP são armazenadas" - -msgid "forward" -msgstr "encaminhar" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "help" -msgstr "ajuda" - -msgid "hidden" -msgstr "ocultar" - -msgid "hybrid mode" -msgstr "Modo Híbrido" - -msgid "if target is a network" -msgstr "se o destino for uma rede" - -msgid "input" -msgstr "entrada" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "" -"Arquivo local de DNS" - -msgid "minimum 1280, maximum 1480" -msgstr "mínimo 1280, máximo 1480" - -msgid "minutes" -msgstr "minutos" - -# Is this yes/no or no like in no one? -msgid "no" -msgstr "não" - -msgid "no link" -msgstr "sem link" - -msgid "none" -msgstr "nenhum" - -msgid "not present" -msgstr "não presente " - -msgid "off" -msgstr "desligado" - -msgid "on" -msgstr "ligado" - -msgid "open" -msgstr "aberto" - -msgid "overlay" -msgstr "sobreposição" - -msgid "relay mode" -msgstr "modo retransmissor" - -msgid "routed" -msgstr "roteado" - -msgid "server mode" -msgstr "modo servidor" - -msgid "stateful-only" -msgstr "somente com estado" - -msgid "stateless" -msgstr "sem estado" - -msgid "stateless + stateful" -msgstr "sem estado + com estado" - -msgid "tagged" -msgstr "etiquetado" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "unidades de tempo (TUs / 1.024 ms) [1000-65535]" - -msgid "unknown" -msgstr "desconhecido" - -msgid "unlimited" -msgstr "ilimitado" - -msgid "unspecified" -msgstr "não especificado" - -msgid "unspecified -or- create:" -msgstr "não especificado -ou- criar:" - -msgid "untagged" -msgstr "não etiquetado" - -msgid "yes" -msgstr "sim" - -msgid "« Back" -msgstr "« Voltar" - -#~ msgid "Leasetime" -#~ msgstr "Tempo de atribuição do DHCP" - -#~ msgid "Optional." -#~ msgstr "Opcional." - -#~ msgid "navigation Navigation" -#~ msgstr "navegação Navegação" - -#~ msgid "skiplink1 Skip to navigation" -#~ msgstr "skiplink1 Pular para a navegação" - -#~ msgid "skiplink2 Skip to content" -#~ msgstr "skiplink2 Pular para o conteúdo" - -#~ msgid "AuthGroup" -#~ msgstr "Grupo de Autenticação" - -#~ msgid "automatic" -#~ msgstr "automático" - -#~ msgid "AR Support" -#~ msgstr "Suporte AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Controlador Wireless Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Busca em Segundo Plano" - -#~ msgid "Compression" -#~ msgstr "Compressão" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Desativar temporizador de Beacon de Hardware" - -#~ msgid "Do not send probe responses" -#~ msgstr "Não enviar respostas de exames" - -#~ msgid "Fast Frames" -#~ msgstr "Quadros Rápidos" - -#~ msgid "Maximum Rate" -#~ msgstr "Taxa Máxima" - -#~ msgid "Minimum Rate" -#~ msgstr "Taxa Mínima" - -#~ msgid "Multicast Rate" -#~ msgstr "Taxa de Multicast" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canais para externo" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domínio Regulatório" - -#~ msgid "Separate WDS" -#~ msgstr "Separar WDS" - -#~ msgid "Static WDS" -#~ msgstr "WDS Estático" - -#~ msgid "Turbo Mode" -#~ msgstr "Modo Turbo" - -#~ msgid "XR Support" -#~ msgstr "Suporte a XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Uma rede adicional será criada se você deixar isto desmarcado." - -#~ msgid "Join Network: Settings" -#~ msgstr "Conectar à Rede: Configurações" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Porta %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Porta %d está sem etiqueta para mútliplas VLANs!" - -#~ msgid "VLAN Interface" -#~ msgstr "Interface VLAN" diff --git a/package/luci/modules/luci-base/po/pt/base.po b/package/luci/modules/luci-base/po/pt/base.po deleted file mode 100644 index aadccccc39..0000000000 --- a/package/luci/modules/luci-base/po/pt/base.po +++ /dev/null @@ -1,3993 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-09-22 18:50+0200\n" -"Last-Translator: Low \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(janela de %d minutos, intervalo de %d segundos)" - -msgid "(%s available)" -msgstr "(%s disponível)" - -msgid "(empty)" -msgstr "(vazio)" - -msgid "(no interfaces attached)" -msgstr "(não existem interfaces ligadas)" - -msgid "-- Additional Field --" -msgstr "-- Campo Adicional --" - -msgid "-- Please choose --" -msgstr "-- Por favor escolha --" - -msgid "-- custom --" -msgstr "-- personalizado --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Carga de 1 Minuto:" - -msgid "15 Minute Load:" -msgstr "Carga de 15 minutos:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Carga 5 Minutos:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "" -"Porta de consulta de DNS" - -msgid "DNS server port" -msgstr "" -"Porta do servidorDNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Os servidores de DNS " -"serão consultados pela ordem no ficheiro resolv" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "Endereço IPv4" - -msgid "IPv4-Gateway" -msgstr "Gateway IPv4" - -msgid "IPv4-Netmask" -msgstr "" -"Máscara de rede IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Endereço ou Rede " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "Gateway IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Configuração do LED" - -msgid "LED Name" -msgstr "Nome da LED" - -msgid "MAC-Address" -msgstr "Endereço MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. de concessõesDHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Tamanho Max. do pacote EDNS0 " - -msgid "Max. concurrent queries" -msgstr "Max. consultas concorrentes" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Limiar de tentativas ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Bridges ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identificador Canais Virtuais ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identificador de Caminho Virtual ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"As bridges ATM expõem o encapsulamento ethernet em ligações AAL5 como uma " -"interface de Rede Virtual Linux que pode ser usada em conjugação com o DHCP " -"ou PPP para marcar para a rede ISP." - -msgid "ATM device number" -msgstr "Número de Dispositivo ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrador de Acesso" - -msgid "Access Point" -msgstr "Access Point (AP)" - -msgid "Action" -msgstr "Acção" - -msgid "Actions" -msgstr "Acções" - -msgid "Activate this network" -msgstr "Ativar esta rede" - -msgid "Active IPv4-Routes" -msgstr "" -"Rotas-IPv4 ativas" - -msgid "Active IPv6-Routes" -msgstr "" -"Rotas-IPv6 ativas" - -msgid "Active Connections" -msgstr "Ligações Ativas" - -msgid "Active DHCP Leases" -msgstr "Concessões DHCP Ativas" - -msgid "Active DHCPv6 Leases" -msgstr "Concessões DHCPv6 Ativas" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Adicionar" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Adicionar um sufixo de domínio local aos nomes servidos dos ficheiros de " -"hosts" - -msgid "Add new interface..." -msgstr "Adicionar uma nova interface..." - -msgid "Additional Hosts files" -msgstr "Ficheiro Adicional de Hosts" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Endereço" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "Administração" - -msgid "Advanced Settings" -msgstr "Definições Avançadas" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerta" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permitir autenticação SSH por senha" - -msgid "Allow all except listed" -msgstr "Permitir todos, excepto os listados" - -msgid "Allow listed only" -msgstr "Permitir somente os listados" - -msgid "Allow localhost" -msgstr "Permitir localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permitir que hosts remotos se conectem às portas encaminhadas do SSH local" - -msgid "Allow root logins with password" -msgstr "Permitir o login como root só com password" - -msgid "Allow the root user to login with password" -msgstr "Permitir que o utilizador root faça login só com password" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permitir respostas a montante na gama 127.0.0.1/8, p.e. para serviços RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Configuração das Antenas" - -msgid "Any zone" -msgstr "Qualquer zona" - -msgid "Apply" -msgstr "Aplicar" - -msgid "Applying changes" -msgstr "A aplicar as alterações" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Atribuir interfaces..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Estações Associadas" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autenticação" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritário" - -msgid "Authorization Required" -msgstr "Autorização Requerida" - -msgid "Auto Refresh" -msgstr "Actualização Automática" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponível" - -msgid "Available packages" -msgstr "Pacotes disponíveis" - -msgid "Average:" -msgstr "Média:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Voltar" - -msgid "Back to Overview" -msgstr "Voltar à Visão Global" - -msgid "Back to configuration" -msgstr "Voltar à configuração" - -msgid "Back to overview" -msgstr "Voltar à vista global" - -msgid "Back to scan results" -msgstr "Voltar aos resultados do scan" - -msgid "Backup / Flash Firmware" -msgstr "Backup / Flashar Firmware" - -msgid "Backup / Restore" -msgstr "Backup / Restauração" - -msgid "Backup file list" -msgstr "Lista de ficheiros para backup" - -msgid "Bad address specified!" -msgstr "Endereço mal especificado!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Abaixo está a lista de ficheiros para backup. Este consiste nos ficheiros de " -"configuração alterados e marcados pelo opkg, ficheiros base essenciais e " -"padrões de backup definidos pelo utilizador." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Taxa de bits" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "Bridge" - -msgid "Bridge interfaces" -msgstr "Ativar brigde nas interfaces" - -msgid "Bridge unit number" -msgstr "Número de unidade da bridge" - -msgid "Bring up on boot" -msgstr "Levantar no arranque" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Controlador Wireless Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Controlador Wireless Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Botões" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Uso da CPU (%)" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Cadeia" - -msgid "Changes" -msgstr "Alterações" - -msgid "Changes applied." -msgstr "Alterações aplicadas." - -msgid "Changes the administrator password for accessing the device" -msgstr "Altera a password de administrador para acesso ao dispositivo" - -msgid "Channel" -msgstr "Canal" - -msgid "Check" -msgstr "Verificar" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Checksum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Escolha a zona de firewall que pretende associar a esta interface. Escolha " -"não especificado para remover a interface da zona associada ou " -"coloque em branco o campo criar para definir a nova zona e ligar-" -"lhe a interface." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Escolha a rede(s) à(s) qual(is) deseja ligar esta interface wireless ou " -"preencha o campo criar para definir a nova rede." - -msgid "Cipher" -msgstr "Cifra" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Clique em \"Gerar arquivo\" para descarregar o ficheiro tar com os actuais " -"ficheiros de configuração. Para voltar as definições originais do firmware, " -"clique \" Fazer reset\" (só possível com imagens squashfs)" - -msgid "Client" -msgstr "Cliente" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID de cliente a enviar para pedidos de DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Fechar ligação inativa após um dado tempo em segundos, usando 0 a ligação é " -"persistente" - -msgid "Close list..." -msgstr "Fechar lista..." - -msgid "Collecting data..." -msgstr "A obter dados..." - -msgid "Command" -msgstr "Comando" - -msgid "Common Configuration" -msgstr "Configuração comum" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Configuration applied." -msgstr "Configuração aplicada." - -msgid "Configuration files will be kept." -msgstr "Os ficheiros de configuração serão mantidos." - -msgid "Confirmation" -msgstr "Confirmação" - -msgid "Connect" -msgstr "Ligar" - -msgid "Connected" -msgstr "Ligado" - -msgid "Connection Limit" -msgstr "Limite de Ligações" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Ligações" - -msgid "Country" -msgstr "País" - -msgid "Country Code" -msgstr "Código do País" - -msgid "Cover the following interface" -msgstr "Abranger a seguinte interface" - -msgid "Cover the following interfaces" -msgstr "Abranger as seguintes interfaces" - -msgid "Create / Assign firewall-zone" -msgstr "Criar / Atribuir a uma zona de firewall" - -msgid "Create Interface" -msgstr "Criar interface" - -msgid "Create a bridge over multiple interfaces" -msgstr "Criar uma bridge entre múltiplas interfaces " - -msgid "Critical" -msgstr "Critico" - -msgid "Cron Log Level" -msgstr "Nível de Log do Cron" - -msgid "Custom Interface" -msgstr "Interface Personalizada" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Customiza o comportamento dos LEDs, se possível." - -msgid "DHCP Leases" -msgstr "Concessões DHCP" - -msgid "DHCP Server" -msgstr "Servidor DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP e DNS" - -msgid "DHCP client" -msgstr "Cliente DHCP" - -msgid "DHCP-Options" -msgstr "Opções DHCP" - -msgid "DHCPv6 Leases" -msgstr "Concessões DHCPv6" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Encaminhamentos DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Depurar" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "Gateway predefinido" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Estado predefinido" - -msgid "Define a name for this network." -msgstr "Definir um nome para esta rede." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definir opções adicionais de DHCP, por exemplo " -"\"6,192.168.2.1,192.168.2.2\" informa os clientes de diferentes " -"servidores DNS." - -msgid "Delete" -msgstr "Apagar" - -msgid "Delete this network" -msgstr "Apagar esta rede" - -msgid "Description" -msgstr "Descrição" - -msgid "Design" -msgstr "Tema" - -msgid "Destination" -msgstr "Destino" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Device Configuration" -msgstr "Configuração do Dispositivo" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnósticos" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Directório" - -msgid "Disable" -msgstr "Desativar" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Desativar DHCP para esta interface." - -msgid "Disable DNS setup" -msgstr "Desativar configuração de DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Desativado" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Descartar respostas RFC1918 a montante" - -msgid "Displaying only packages containing" -msgstr "Mostrar somente pacotes contendo" - -msgid "Distance Optimization" -msgstr "Optimização de Distância" - -msgid "Distance to farthest network member in meters." -msgstr "Distância para o último host da rede em metros." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversidade" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq é um servidor combinado de DHCP e DNS para firewalls NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Não colocar em cache as respostas negativas, p.e. para dominios inexistentes" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Não encaminhar pedidos que não possam ser respondidos por servidor públicos " -"de nomes" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Não encaminhar lookups reversos para as redes locais" - -msgid "Domain required" -msgstr "Requerer domínio" - -msgid "Domain whitelist" -msgstr "Lista Branca do Dominio" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Não encaminhar consultas DNS sem o nome do DNS" - -msgid "Download and install package" -msgstr "Descarregar e instalar pacote" - -msgid "Download backup" -msgstr "Descarregar backup" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instância do Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear oferece um acesso shell seguro à rede SSH e um servidor SCP integrado" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP " -"Dinâmico" - -msgid "Dynamic tunnel" -msgstr "Túnel dinâmico" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Alocar dinamicamente endereços DHCP para clientes. Se desativado, só os " -"clientes com reservas estáticas serão servidos." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Metodo-EAP" - -msgid "Edit" -msgstr "Editar" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Editar esta interface" - -msgid "Edit this network" -msgstr "Editar esta rede" - -msgid "Emergency" -msgstr "Emergência" - -msgid "Enable" -msgstr "Ativar" - -msgid "Enable STP" -msgstr "Ativar STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Ativar a atualização dinâmica de ponto final HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Ativar a negociação IPv6 no link PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Ativar a passagem de Jumbo Frames" - -msgid "Enable NTP client" -msgstr "Ativar o cliente NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Ativar o servidor TFTP" - -msgid "Enable VLAN functionality" -msgstr "Ativar a funcionalidade VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Ativar aprendizagem e envelhecimento" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Ativar este mount" - -msgid "Enable this swap" -msgstr "Ativar esta swap" - -msgid "Enable/Disable" -msgstr "Ativar/Desativar" - -msgid "Enabled" -msgstr "Ativado" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Ativa o Spanning Tree nesta bridge" - -msgid "Encapsulation mode" -msgstr "Modo de encapsulamento" - -msgid "Encryption" -msgstr "Encriptação" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "A apagar..." - -msgid "Error" -msgstr "Erro" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Adaptador Ethernet" - -msgid "Ethernet Switch" -msgstr "Switch Ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Expandir hosts" - -msgid "Expires" -msgstr "Expira" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"O tempo de caducidade dos endereços concessionados, minimo de 2 minutos " -"(2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Servidor externo de logs de sistema" - -msgid "External system log server port" -msgstr "Porta do Servidor externo de logs de sistema" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Ficheiro" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nome de ficheiro da imagem de boot a anunciar aos clientes" - -msgid "Filesystem" -msgstr "Sistema de ficheiros" - -msgid "Filter" -msgstr "Filtro" - -msgid "Filter private" -msgstr "Filtrar endereços privados" - -msgid "Filter useless" -msgstr "Filtro inútil" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Procurar e ligar rede" - -msgid "Find package" -msgstr "Procurar pacote" - -msgid "Finish" -msgstr "Terminar" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Definições da Firewall" - -msgid "Firewall Status" -msgstr "Estado da Firewall" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versão do Firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Porta fixa de origem para saída das consultas DNS" - -msgid "Flash Firmware" -msgstr "Gravar Firmware" - -msgid "Flash image..." -msgstr "Flashar imagem..." - -msgid "Flash new firmware image" -msgstr "Flashar nova imagem do firmware" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "A programar...." - -msgid "Force" -msgstr "Forçar" - -msgid "Force CCMP (AES)" -msgstr "Forçar CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Forçar DHCP nesta rede mesmo se outro servidor for detectado." - -msgid "Force TKIP" -msgstr "Forçar TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forçar TKIP e CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Encaminhar tráfego DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Encaminhar trafego de broadcast" - -msgid "Forwarding mode" -msgstr "Modo de encaminhamento" - -msgid "Fragmentation Threshold" -msgstr "Margem de Fragmentação" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Livre" - -msgid "Free space" -msgstr "Espaço livre" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Só GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway ports" -msgstr "Portas de gateway" - -msgid "General Settings" -msgstr "Definições Gerais" - -msgid "General Setup" -msgstr "Configuração Geral" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Gerar arquivo" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Controlador Wireless Genérico 802.11%s" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"A confirmação de password não corresponde, a password não foi alterada!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Ir para a configuração da password" - -msgid "Go to relevant configuration page" -msgstr "Ir para a página respectiva de configuração" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Password HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Handler" - -msgid "Hang Up" -msgstr "Suspender" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Aqui pode configurar os aspectos básicos do seu equipamento, como o nome do " -"host ou o fuso horário." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Aqui pode colar as chaves SSH (uma por linha) para a autenticação SSH por " -"chave pública." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Controlador Wireless Hermes 802.11b" - -msgid "Hide ESSID" -msgstr "" -"Ocultar ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Entradas de hosts" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" -"IP do host ou rede" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Hostname to send when requesting DHCP" -msgstr "Hostname a enviar quando houver solicitação por DHCP" - -msgid "Hostnames" -msgstr "Hostnames" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Endereço IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Firewall IPv4" - -msgid "IPv4 WAN Status" -msgstr "Estado WAN IPv4" - -msgid "IPv4 address" -msgstr "Endereço IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Broadcast IPv4" - -msgid "IPv4 gateway" -msgstr "Gateway IPv4" - -msgid "IPv4 netmask" -msgstr "Máscara IPv4" - -msgid "IPv4 only" -msgstr "Só IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Comprimento do prefixo IPv4" - -msgid "IPv4-Address" -msgstr "Endereço-IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Firewall IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Estado WAN IPv6" - -msgid "IPv6 address" -msgstr "Endereço IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Gateway IPv6" - -msgid "IPv6 only" -msgstr "Só IPv6" - -msgid "IPv6 prefix" -msgstr "Prefixo IPv6" - -msgid "IPv6 prefix length" -msgstr "Comprimento do prefixo IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Endereço-IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-em-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-sobre-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-sobre-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identidade" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "Se desmarcado, não é configurada uma rota pré-definida" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Se desmarcado, os endereços servidor DNS anunciados são ignorados " - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Se a memória física for insuficiente, os dados poderão ser trocados " -"temporariamente para um dispositivo swap, resultando em uma maior quantidade " -"de memória utilizável RAM. Esteja ciente de que a troca de dados (swap) é um processo muito " -"lento pois o dispositivo swap não pode ser acedido com um nível elevado de " -"memória RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignorar /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorar interface" - -msgid "Ignore resolve file" -msgstr "Ignorar ficheiro resolv.conf" - -msgid "Image" -msgstr "Imagem" - -msgid "In" -msgstr "Entrada" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Tempo de inatividade" - -msgid "Inbound:" -msgstr "Entrada:" - -msgid "Info" -msgstr "Info" - -msgid "Initscript" -msgstr "Script de inicialização" - -msgid "Initscripts" -msgstr "Scripts de Inicialização" - -msgid "Install" -msgstr "Instalar" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instalar pacote %q" - -msgid "Install protocol extensions..." -msgstr "Instalar extensões do protocolo..." - -msgid "Installed packages" -msgstr "Instalar pacotes" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuração da Interface" - -msgid "Interface Overview" -msgstr "Visão Geral da Interface" - -msgid "Interface is reconnecting..." -msgstr "A interface está a religar..." - -msgid "Interface is shutting down..." -msgstr "A interface está a desligar..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Interface não presente ou ainda não ligada." - -msgid "Interface reconnected" -msgstr "Interface religada" - -msgid "Interface shut down" -msgstr "Desligar interface" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Erro Interno do Servidor" - -msgid "Invalid" -msgstr "Valor inválido" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"O ID de VLAN fornecido é inválido! Só os IDs entre %d e %d são permitidos." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "O ID de VLAN fornecido é inválido! Só os IDs únicos são permitidos." - -msgid "Invalid username and/or password! Please try again." -msgstr "Username inválido e/ou a password! Por favor, tente novamente." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"A imagem que está a tentar carregar aparenta não caber na flash do " -"equipamento. Por favor verifique o ficheiro de imagem." - -msgid "JavaScript required!" -msgstr "É necessário JavaScript!" - -msgid "Join Network" -msgstr "Associar Rede" - -msgid "Join Network: Wireless Scan" -msgstr "Associar Rede: Procurar Redes Wireless" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Manter definições" - -msgid "Kernel Log" -msgstr "Registo do Kernel" - -msgid "Kernel Version" -msgstr "Versão do Kernel" - -msgid "Key" -msgstr "Chave" - -msgid "Key #%d" -msgstr "Chave #%d" - -msgid "Kill" -msgstr "Matar" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Servidor L2TP" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "Intervalo de echo LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etiqueta" - -msgid "Language" -msgstr "Idioma" - -msgid "Language and Style" -msgstr "Língua e Tema" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Tempo de validade da concessão" - -msgid "Leasefile" -msgstr "Ficheiro de concessões" - -msgid "Leasetime remaining" -msgstr "Tempo de atribuição restante" - -msgid "Leave empty to autodetect" -msgstr "Deixar em branco para auto-detecção" - -msgid "Leave empty to use the current WAN address" -msgstr "Deixar em branco para usar o endereço WAN actual" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Link Ativo" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Lista de servidores DNS para " -"onde encaminhar os pedidos" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Lista de dominios que permitem respostas RFC1918 para" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Escutar apenas na interface fornecida ou, se não especificada, em todas" - -msgid "Listening port for inbound DNS queries" -msgstr "Porta de escuta para entrada de consultas DNS" - -msgid "Load" -msgstr "Carga" - -msgid "Load Average" -msgstr "Carga Média" - -msgid "Loading" -msgstr "A carregar" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Endereço IPv4 Local" - -msgid "Local IPv6 address" -msgstr "Endereço IPv6 Local" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Arranque Local" - -msgid "Local Time" -msgstr "Hora Local" - -msgid "Local domain" -msgstr "Domínio local" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Especificação de dominio local. Os nomes que correspondam a este dominio " -"nunca são encaminhados e resolvidos do DHCP ou do ficheiro de hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Sufixos de dominio local a juntar aos nomes DHCP e às entradas do ficheiro " -"de hosts" - -msgid "Local server" -msgstr "Servidor local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Localizar consultas" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Nível de output do log" - -msgid "Log queries" -msgstr "Registo das consultas" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Login" - -msgid "Logout" -msgstr "Logout" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "Endereço-MAC" - -msgid "MAC-Address Filter" -msgstr "Filtro de Endereço-MAC" - -msgid "MAC-Filter" -msgstr "Filtro-MAC" - -msgid "MAC-List" -msgstr "Lista-MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Número máximo permitido de concessões DHCP ativas" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Número máximo permitido de consultas DNS permitidas" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Número máximo de segundos a esperar pelo modem para ficar pronto" - -msgid "Maximum hold time" -msgstr "Tempo máximo de espera" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Número máximo de endereços concessionados." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memória" - -msgid "Memory usage (%)" -msgstr "Uso de memória (%)" - -msgid "Metric" -msgstr "Métrica" - -msgid "Minimum hold time" -msgstr "Tempo de retenção mínimo" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Falta a extensão de protocolo para o protocolo %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Modo" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Dispositivo do modem" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Montar Entrada" - -msgid "Mount Point" -msgstr "Ponto de Montagem" - -msgid "Mount Points" -msgstr "Pontos de Montagem" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Pontos de montagem definem em que ponto um dispositivo de memória será " -"anexado ao sistema de arquivos" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "Ponto de montagem" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Sistemas de arquivos montados" - -msgid "Move down" -msgstr "Subir" - -msgid "Move up" -msgstr "Descer" - -msgid "Multicast address" -msgstr "Endereço de multicast" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Candidatos a servidor NTP" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Nome" - -msgid "Name of the new interface" -msgstr "Nome da nova interface" - -msgid "Name of the new network" -msgstr "Nome da nova rede" - -msgid "Navigation" -msgstr "Navegação" - -msgid "Netmask" -msgstr "Mascara de rede" - -msgid "Network" -msgstr "Rede" - -msgid "Network Utilities" -msgstr "Ferramentas de Rede" - -msgid "Network boot image" -msgstr "Imagem de arranque via rede" - -msgid "Network without interfaces." -msgstr "Rede sem interfaces." - -msgid "Next »" -msgstr "Seguinte »" - -msgid "No DHCP Server configured for this interface" -msgstr "Sem Servidor DHCP configurado nesta interface" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Tabela sem chains" - -msgid "No files found" -msgstr "Não foram encontrados ficheiros" - -msgid "No information available" -msgstr "Sem informação disponível" - -msgid "No negative cache" -msgstr "Sem cache negativa" - -msgid "No network configured on this device" -msgstr "Nenhuma rede configurada no dispositivo" - -msgid "No network name specified" -msgstr "Nome de rede não especificado" - -msgid "No package lists available" -msgstr "Não há listas de pacotes disponiveis" - -msgid "No password set!" -msgstr "Sem password definida!" - -msgid "No rules in this chain" -msgstr "Sem regras nesta cadeia" - -msgid "No zone assigned" -msgstr "Sem zona atribuída" - -msgid "Noise" -msgstr "Ruído" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Ruído:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Nenhum" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Não encontrado" - -msgid "Not associated" -msgstr "Não associado" - -msgid "Not connected" -msgstr "Não ligado" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: Os ficheiros de configuração serão apagados." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Reparo" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configuração-OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "Atraso do Off-State" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Nesta página pode configurar as interfaces de rede. Pode ter várias " -"interfaces do tipo bridge, assinalando o campo \"interfaces bridge\" e " -"inserir os nomes de várias interfaces de rede separadas por espaços. Pode " -"também usar a notação para VLAN " -"INTERFACE.VLANNR (ex.: " -"eth0.1)." - -msgid "On-State Delay" -msgstr "Atraso do On-State" - -msgid "One of hostname or mac address must be specified!" -msgstr "Um nome de host ou endereço MAC deve ser especificado!" - -msgid "One or more fields contain invalid values!" -msgstr "Um ou mais campos contêm valores inválidos!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Um ou mais campos obrigatórios não têm valores!" - -msgid "Open list..." -msgstr "Abrir lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Opção alterada" - -msgid "Option removed" -msgstr "Opção removida" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opções" - -msgid "Other:" -msgstr "Outro:" - -msgid "Out" -msgstr "Saída" - -msgid "Outbound:" -msgstr "Saída:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Visão Geral" - -msgid "Owner" -msgstr "Dono" - -msgid "PAP/CHAP password" -msgstr "Password PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Utilizador PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Encapsulamento PPPoA " - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtp" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "O pacote libiwinfo é necessário!" - -msgid "Package lists are older than 24 hours" -msgstr "As listas de pacotes têm mais de 24 horas" - -msgid "Package name" -msgstr "Nome do pacote" - -msgid "Packets" -msgstr "Pacotes" - -msgid "Part of zone %q" -msgstr "Parte da zona %q" - -msgid "Password" -msgstr "Senha" - -msgid "Password authentication" -msgstr "Autenticação por senha" - -msgid "Password of Private Key" -msgstr "Senha da Chave Privada" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Password alterada com sucesso!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Directorio do Certificado CA" - -msgid "Path to Client-Certificate" -msgstr "Caminho para o Certificado de Cliente" - -msgid "Path to Private Key" -msgstr "Caminho da Chave Privada" - -msgid "Path to executable which handles the button event" -msgstr "Caminho do executável que lida com o botão de eventos" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Pico:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Executar reinicialização" - -msgid "Perform reset" -msgstr "Executar reset" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Definições Físicas" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pkts." - -msgid "Please enter your username and password." -msgstr "Insira o seu username e password." - -msgid "Policy" -msgstr "Política" - -msgid "Port" -msgstr "Porta" - -msgid "Port status:" -msgstr "Estado da porta:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Impede a comunicação cliente-a-cliente" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Controlador Wireless Prism2/2.5/3 802.11b" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Proceder" - -msgid "Processes" -msgstr "Processos" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Protocolo" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Protocol family" -msgstr "Família do protocolo" - -msgid "Protocol of the new interface" -msgstr "Protocolo da nova interface" - -msgid "Protocol support is not installed" -msgstr "O protocolo suportado não está instalado" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Qualidade" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS Threshold" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Taxa RX" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "Controlador Wireless RaLink 802.11%s" - -msgid "Radius-Accounting-Port" -msgstr "Porta-Conta-Radius" - -msgid "Radius-Accounting-Secret" -msgstr "Segredo-Conta-Radius" - -msgid "Radius-Accounting-Server" -msgstr "Servidor-Conta-Radius" - -msgid "Radius-Authentication-Port" -msgstr "Porta-Autenticação-Radius" - -msgid "Radius-Authentication-Secret" -msgstr "Segredo-Autenticação-Radius" - -msgid "Radius-Authentication-Server" -msgstr "Servidor-Autenticação-Radius" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Ler /etc/ethers para configurar o Servidor-DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Deseja mesmo apagar esta interface? A eliminação não poder desfeita!\n" -"Pode perde a ligação ao dispositivo, caso esta ligado através desta " -"interface." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Deseja mesmo apagar esta rede? A eliminação não poder desfeita!\n" -"Pode perde a ligação ao dispositivo, caso esta ligado através desta rede." - -msgid "Really reset all changes?" -msgstr "Deseja mesmo limpar todas as alterações?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Deseja mesmo desligar esta rede?\n" -"Pode perder o acesso ao dispositivo se estiver ligado através desta rede." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Deseja mesmo desligar a interface \"%s\" ?\n" -"Pode perder o acesso ao dispositivo se estiver ligado através desta " -"interface." - -msgid "Really switch protocol?" -msgstr "Deseja mesmo trocar o protocolo?" - -msgid "Realtime Connections" -msgstr "Ligações em Tempo Real" - -msgid "Realtime Graphs" -msgstr "Gráficos em Tempo Real" - -msgid "Realtime Load" -msgstr "Carga em Tempo Real" - -msgid "Realtime Traffic" -msgstr "Tráfego em Tempo Real" - -msgid "Realtime Wireless" -msgstr "Wireless em Tempo Real" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Religar protecção" - -msgid "Reboot" -msgstr "Reiniciar" - -msgid "Rebooting..." -msgstr "A reiniciar..." - -msgid "Reboots the operating system of your device" -msgstr "Reinicia o seu dispositivo" - -msgid "Receive" -msgstr "Receber" - -msgid "Receiver Antenna" -msgstr "Antena de Recepção" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconetar esta interface" - -msgid "Reconnecting interface" -msgstr "A reconectar interface" - -msgid "References" -msgstr "Referências" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "Endereço IPv4 remoto" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Remover" - -msgid "Repeat scan" -msgstr "Repetir scan" - -msgid "Replace entry" -msgstr "Substituir entrada" - -msgid "Replace wireless configuration" -msgstr "Substituir configuração wireless" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Necessário para certos ISPs, p.ex. Charter with DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Limpar contadores" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "Ficheiros Resolv e Hosts" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "Reiniciar" - -msgid "Restart Firewall" -msgstr "Reiniciar Firewall" - -msgid "Restore backup" -msgstr "Restaurar backup" - -msgid "Reveal/hide password" -msgstr "Revelar/esconder password" - -msgid "Revert" -msgstr "Reverter" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Password do Router" - -msgid "Routes" -msgstr "Rotas" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"As rotas especificam através de que interfaces ou gateways podem ser " -"alcançados determinadas redes ou hosts." - -msgid "Run a filesystem check before mounting the device" -msgstr "" -"Correr uma verificação do sistema de ficheiros antes de montar um dispositivo" - -msgid "Run filesystem check" -msgstr "Correr uma verificação do sistema de ficheiros" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Acesso SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Chaves-SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Salvar" - -msgid "Save & Apply" -msgstr "Salvar & Aplicar" - -msgid "Save & Apply" -msgstr "Salvar & Aplicar" - -msgid "Scan" -msgstr "Procurar" - -msgid "Scheduled Tasks" -msgstr "Tarefas Agendadas" - -msgid "Section added" -msgstr "Secção adicionada" - -msgid "Section removed" -msgstr "Secção removida" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Isolar Clientes" - -msgid "Server Settings" -msgstr "" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Nome do Serviço" - -msgid "Service Type" -msgstr "Tipo de Serviço" - -msgid "Services" -msgstr "Serviços" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Configurar Sincronização Horária" - -msgid "Setup DHCP Server" -msgstr "Configurar Servidor DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "Mostrar lista ficheiros para backup" - -msgid "Shutdown this interface" -msgstr "Desligar esta interface" - -msgid "Shutdown this network" -msgstr "Desligar esta rede" - -msgid "Signal" -msgstr "Sinal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Sinal:" - -msgid "Size" -msgstr "Tamanho" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Saltar" - -msgid "Skip to content" -msgstr "Ir para o conteúdo" - -msgid "Skip to navigation" -msgstr "Ir para a navegação" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Alguns campos são inválidos, não é possível gravar valores!" - -msgid "Sorry, the object you requested was not found." -msgstr "Lamento, o objecto que pediu não foi encontrado." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Lamento, o servidor encontrou um erro inesperado." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "Ordenar" - -msgid "Source" -msgstr "Origem" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Especifica as portas de escuta desta instância Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Iniciar" - -msgid "Start priority" -msgstr "Prioridade de inicialização" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Rotas Estáticas IPv4" - -msgid "Static IPv6 Routes" -msgstr "Rotas Estáticas IPv6" - -msgid "Static Leases" -msgstr "Atribuições Estáticas" - -msgid "Static Routes" -msgstr "Rotas Estáticas" - -msgid "Static address" -msgstr "Endereço estático" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Parar" - -msgid "Strict order" -msgstr "Ordem exacta" - -msgid "Submit" -msgstr "Enviar" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "Sincronizar com o browser" - -msgid "Synchronizing..." -msgstr "A sincronizar..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registo do Sistema" - -msgid "System Properties" -msgstr "Propriedades do Sistema" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Definições TFTP" - -msgid "TFTP server root" -msgstr "Raíz do servidor TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Tabela" - -msgid "Target" -msgstr "Destino" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminar" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"O pacote libiwinfo-lua não está instalado. Precisa de instalar este " -"pacote para que a configuração wireless funcione!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"O prefixo IPv6 atribuído ao provider, habitualmente termina com ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Os caracteres permitidos são: A-Z, a-z, 0-9 e _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"O arquivo do dispositivo de memória ou da partição (ex. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"O sistema que foi usado para formatar a memória (ex. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"A imagem foi carregada. Abaixo está o checksum e o tamanho dos ficheiros, " -"compare com o ficheiro original para assegurar a integração de dados.
    " -"Click em \"Proceder\" para iniciar o procedimento." - -msgid "The following changes have been committed" -msgstr "As seguintes alterações foram escritas" - -msgid "The following changes have been reverted" -msgstr "Foram recuperadas as seguintes alterações " - -msgid "The following rules are currently active on this system." -msgstr "As seguintes regras estão actualmente acivas neste sistema." - -msgid "The given network name is not unique" -msgstr "O nome dado não é único" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"O hardware não é comporta multi-SSIDs a configuração será substituída se " -"prosseguir." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"O tamanho do perfico IPv4 em bits, o restante é usado em endereços IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "O comprimento do prefixo IPv6 em bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"As portas de rede neste dispositivo podem ser combinadas com várias VLANs onde os computadores podem " -"comunicar directamente entre eles. VLANs são muito utilizadas para separar dois segmentos de rede " -"diferentes. Muitas vezes existe por defeito uma porta de Uplink para uma " -"ligação para a rede acima como a internet ou outras portas de uma rede local." - -msgid "The selected protocol needs a device assigned" -msgstr "O protocolo escolhido precisa de um dispositivo atribuído." - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"O sistema está agora a limpar a partição de configuração e irá reiniciar-se " -"quando terminar." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"O sistema está a carregar o firmware para a flash.
    NÃO DESLIGUE O " -"EQUIPAMENTO!
    Espere alguns minutos até tentar uma ligação. Dependendo " -"da sua configuração, ode ser necessário renovar o endereço do seu computador " -"para poder ligar novamente ao router." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"A imagem carregada não contém um formato suportado. Confirme que escolhe uma " -"imagem genérica para a sua plataforma." - -msgid "There are no active leases." -msgstr "Não há concessões ativas." - -msgid "There are no pending changes to apply!" -msgstr "Não há alterações pendentes para aplicar!" - -msgid "There are no pending changes to revert!" -msgstr "Não há alterações pendentes para reverter!" - -msgid "There are no pending changes!" -msgstr "Não há alterações pendentes!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Ainda não há um dispositivo atribuído, por favor ligue um dispositivo de " -"rede nas \"Definições Físicas\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Não há uma password definida neste router. Por favor defina uma senha de " -"root para proteger a interface web e ativar o SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Este é o conteúdo de /etc/rc.local. Insira os seus próprios comandos aqui " -"(antes de 'exit 0') para executá-los no final do processo de arranque." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Este é o único DHCP na rede local" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Este é o sistema de agendamento de tarefas." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Esta lista fornece uma visão geral sobre os processos em execução no sistema." - -msgid "This page allows the configuration of custom button actions" -msgstr "" -"Esta página permite a configuração de botões para acções personalizadas." - -msgid "This page gives an overview over currently active network connections." -msgstr "Esta página fornece informações sobre as ligações de rede ativas." - -msgid "This section contains no values yet" -msgstr "Esta secção ainda não contêm valores" - -msgid "Time Synchronization" -msgstr "Sincronização Horária" - -msgid "Time Synchronization is not configured yet." -msgstr "A sincronização horária ainda não está configurada." - -msgid "Timezone" -msgstr "Fuso Horário" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Para restaurar os ficheiros de configuração, pode carregar aqui um ficheiro " -"de backup gerado anteriormente." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total Disponível" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Tráfego" - -msgid "Transfer" -msgstr "Transferências" - -msgid "Transmission Rate" -msgstr "Taxa de Transmissão" - -msgid "Transmit" -msgstr "Transmitir" - -msgid "Transmit Power" -msgstr "Potência de Transmissão" - -msgid "Transmitter Antenna" -msgstr "Antena de Transmissão" - -msgid "Trigger" -msgstr "Trigger" - -msgid "Trigger Mode" -msgstr "Modo de Trigger" - -msgid "Tunnel ID" -msgstr "ID do Túnel" - -msgid "Tunnel Interface" -msgstr "Interface de Túnel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Potência de Tx" - -msgid "Type" -msgstr "Tipo" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Só UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Dispositivo USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Desconhecido" - -msgid "Unknown Error, password not changed!" -msgstr "Erro Desconhecido, a password não foi alterada!" - -msgid "Unmanaged" -msgstr "Não gerido" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Alterações não Guardadas" - -msgid "Unsupported protocol type." -msgstr "Tipo de protocolo não suportado." - -msgid "Update lists" -msgstr "Actualizar listas" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "Carregar arquivo..." - -msgid "Uploaded File" -msgstr "Ficheiro carregado" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Usar /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Usar a gateway do DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Usar os servidores DNS fornecidos pelo parceiro" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Usar servidores DNS personalizados" - -msgid "Use default gateway" -msgstr "Usar gateway pre-definida" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "Usar tabela de roteamento" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Usado" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Utilizador" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs em %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs em %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Servidor VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Verificar" - -msgid "Version" -msgstr "Versão" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistema Aberto WEP" - -msgid "WEP Shared Key" -msgstr "Chave partilhada WEP" - -msgid "WEP passphrase" -msgstr "Palavra-Passe WEP" - -msgid "WMM Mode" -msgstr "Modo WMM" - -msgid "WPA passphrase" -msgstr "Palavra-Passe WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"A encriptação-WPA necessita do wpa_supplicant (para modo cliente) ou do " -"hostapd (para modo AP ou ah-hoc) esteja instalado." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "A aguardar que as mudanças sejam aplicadas..." - -msgid "Waiting for command to complete..." -msgstr "A aguardar que o comando termine..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Aviso" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Rede Wireless" - -msgid "Wireless Adapter" -msgstr "Adaptador Wireless" - -msgid "Wireless Network" -msgstr "Rede Wireless" - -msgid "Wireless Overview" -msgstr "Vista Global Wireless" - -msgid "Wireless Security" -msgstr "Segurança Wireless" - -msgid "Wireless is disabled or not associated" -msgstr "Wireless desativada ou não associada" - -msgid "Wireless is restarting..." -msgstr "A Wireless está a reiniciar..." - -msgid "Wireless network is disabled" -msgstr "Wireless está desativado." - -msgid "Wireless network is enabled" -msgstr "A rede wireless está ativada" - -msgid "Wireless restarted" -msgstr "Rede wireless reiniciada" - -msgid "Wireless shut down" -msgstr "Desligar wireless" - -msgid "Write received DNS requests to syslog" -msgstr "Escrever os pedidos de DNS para o syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Você pode ativar ou desativar os scripts de inicialização instalados aqui. " -"As mudanças serão aplicadas após a reinicialização do equipamento.
    Aviso: Se você desativar algum script de inicialização essencial " -"como por exemplo \"rede/network\", o dispositivo poderá tornar-se " -"inacessível!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Tem de activar o JavaScript no seu browser ou a LuCI não funcionará " -"corretamente." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "qualquer" - -msgid "auto" -msgstr "automático" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "criar:" - -msgid "creates a bridge over specified interface(s)" -msgstr "cria uma bridge sobre determinada(s) interface(s)" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "desativar" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expirou" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Ficheiro onde as atribuições DHCP são armazenadas" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "help" -msgstr "ajuda" - -msgid "hidden" -msgstr "escondido" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "se o destino for uma rede" - -msgid "input" -msgstr "entrada" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "" -"Ficheiro local de DNS" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "não" - -msgid "no link" -msgstr "sem link" - -msgid "none" -msgstr "nenhum" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "desligado" - -msgid "on" -msgstr "ligado" - -msgid "open" -msgstr "abrir" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "desconhecido" - -msgid "unlimited" -msgstr "ilimitado" - -msgid "unspecified" -msgstr "não especificado" - -msgid "unspecified -or- create:" -msgstr "" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "sim" - -msgid "« Back" -msgstr "« Voltar" - -#~ msgid "Leasetime" -#~ msgstr "Tempo de concessão" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "estático" - -#~ msgid "AR Support" -#~ msgstr "Suporte AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Controlador Wireless Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Procurar em Segundo Plano" - -#~ msgid "Compression" -#~ msgstr "Compressão" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Desativar temporizador de HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Não enviar respostas a sondas" - -#~ msgid "Fast Frames" -#~ msgstr "Frames Rápidas" - -#~ msgid "Maximum Rate" -#~ msgstr "Taxa Máxima" - -#~ msgid "Minimum Rate" -#~ msgstr "Taxa Mínima" - -#~ msgid "Multicast Rate" -#~ msgstr "Taxa de Multicast" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canais de Outdoor" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domínio Regulatório" - -#~ msgid "Separate WDS" -#~ msgstr "Separar WDS" - -#~ msgid "Static WDS" -#~ msgstr "WDS Estático" - -#~ msgid "Turbo Mode" -#~ msgstr "Modo Turbo" - -#~ msgid "XR Support" -#~ msgstr "Suporte XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Uma rede adicional será criada se deixar isto desmarcado." - -#~ msgid "Join Network: Settings" -#~ msgstr "Associar Rede: Definições" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Porta %d" - -#~ msgid "VLAN Interface" -#~ msgstr "Interface VLAN" diff --git a/package/luci/modules/luci-base/po/ro/base.po b/package/luci/modules/luci-base/po/ro/base.po deleted file mode 100644 index 029b3958f9..0000000000 --- a/package/luci/modules/luci-base/po/ro/base.po +++ /dev/null @@ -1,3823 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-01 23:12+0200\n" -"Last-Translator: xcentric \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d fereastra minute, %d interval secunde)" - -msgid "(%s available)" -msgstr "(%s disponibil)" - -msgid "(empty)" -msgstr "(gol)" - -msgid "(no interfaces attached)" -msgstr "(nici o interfata atasata)" - -msgid "-- Additional Field --" -msgstr "-- Camp suplimentar --" - -msgid "-- Please choose --" -msgstr "-- Te rog sa alegi --" - -msgid "-- custom --" -msgstr "-- particularizat --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Incarcarea in ultimul minut" - -msgid "15 Minute Load:" -msgstr "Incarcarea in ultimele 15 minute" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Incarcarea in ultimele 5 minute" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNSport de apelare" - -msgid "DNS server port" -msgstr "DNS port server" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS serverul va interoga in " -"vederea procesarii fisierului" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Adresa IPv4" - -msgid "IPv4-Gateway" -msgstr "IPv4-Poarta Acces " - -msgid "IPv4-Netmask" -msgstr "Masca de retea IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Addresa retea (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Poarta Acces" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Configurare" - -msgid "LED Name" -msgstr "LED Nume" - -msgid "MAC-Address" -msgstr "MAC-Addresa" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. EDNS0 marime pachet" - -msgid "Max. concurrent queries" -msgstr "Max. interogari simultane" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP prag reincercare" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Punti ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Indentificator Canal Virtual (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Indentificator Cale Virtual(VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Puntile ATM expune reteaua intergrata în conexiunile AAL5 ca interfețe " -"virtuale de rețea Linux care pot fi utilizate în asociere cu DHCP sau PPP " -"pentru a forma în rețeaua furnizorului." - -msgid "ATM device number" -msgstr "ATM numar echipament" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrator de Access " - -msgid "Access Point" -msgstr "Punct de Acces" - -msgid "Action" -msgstr "Actiune" - -msgid "Actions" -msgstr "Actiune" - -msgid "Activate this network" -msgstr "Activeaza aceasta retea" - -msgid "Active IPv4-Routes" -msgstr "Rute active IPv4" - -msgid "Active IPv6-Routes" -msgstr "Rute active IPv6" - -msgid "Active Connections" -msgstr "Conexiuni active" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Adauga" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Adauga un sufix local numelor servite din fisierele de tip hosts" - -msgid "Add new interface..." -msgstr "Adauga interfata noua.." - -msgid "Additional Hosts files" -msgstr "Fisiere de tip hosts aditionale" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresa" - -msgid "Address to access local relay bridge" -msgstr "Adresa de acces punte locala repetor" - -msgid "Administration" -msgstr "Administrare" - -msgid "Advanced Settings" -msgstr "Setari avansate" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerta" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permite autentificarea prin parola a SSH " - -msgid "Allow all except listed" -msgstr "Permite toate cu exceptia celor listate" - -msgid "Allow listed only" -msgstr "Permite doar cele listate" - -msgid "Allow localhost" -msgstr "Permite localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Permite statiilor externe sa se conecteze la porturile SSH locale" - -msgid "Allow root logins with password" -msgstr "Permite autentificarea contului root cu parola" - -msgid "Allow the root user to login with password" -msgstr "Permite contului root sa se autentifice cu parola" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permite raspuns upstream in plaja 127.0.0.0/8, e.g. pentru serviciile RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Configurarea Antenei" - -msgid "Any zone" -msgstr "Orice Zona" - -msgid "Apply" -msgstr "Aplica" - -msgid "Applying changes" -msgstr "Se aplica modificarile" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Inregistreaza interfetele" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Statiile asociate" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autentificare" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritare" - -msgid "Authorization Required" -msgstr "Necesita Autorizare" - -msgid "Auto Refresh" -msgstr "Reimprospatare automata" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponibil" - -msgid "Available packages" -msgstr "Pachete disponibile" - -msgid "Average:" -msgstr "Medie:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Inapoi" - -msgid "Back to Overview" -msgstr "Inapoi la sumar" - -msgid "Back to configuration" -msgstr "Inapoi la Configurare" - -msgid "Back to overview" -msgstr "Inapoi la vedere generala" - -msgid "Back to scan results" -msgstr "Inapoi la rezultatele scanarii" - -msgid "Backup / Flash Firmware" -msgstr "Salveaza / Scrie Firmware" - -msgid "Backup / Restore" -msgstr "Salveaza / Restaureaza" - -msgid "Backup file list" -msgstr "Salveaza lista fisiere" - -msgid "Bad address specified!" -msgstr "Adresa specificata gresit !" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Bogus NX Domain Override" - -msgid "Bridge" -msgstr "Punte" - -msgid "Bridge interfaces" -msgstr "Leaga interfetele" - -msgid "Bridge unit number" -msgstr "Numarul unitatii in punte" - -msgid "Bring up on boot" -msgstr "Activeaza la pornire" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s Controller Fara Fir" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 Controller Fara Fir" - -msgid "Buffered" -msgstr "Incarcat" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Butoane" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Utilizarea procesorului (%)" - -msgid "Cancel" -msgstr "Anuleaza" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Lant" - -msgid "Changes" -msgstr "Modificari" - -msgid "Changes applied." -msgstr "Modificari aplicate." - -msgid "Changes the administrator password for accessing the device" -msgstr "Schimba parola administratorului pentru accesarea dispozitivului" - -msgid "Channel" -msgstr "Canal" - -msgid "Check" -msgstr "Verificare" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Suma de verificare" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Alege zona paravanului care doresti sa o aloci acestei interfete. Selecteaza " -"nespecificat pentru a sterge interfata sau golire creaza " -"camp ce defineste o zona noua asociata interfetei." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "Colectez datele.." - -msgid "Command" -msgstr "Comanda" - -msgid "Common Configuration" -msgstr "Configurarea obisnuita" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configurare" - -msgid "Configuration applied." -msgstr "Configurarea aplicata." - -msgid "Configuration files will be kept." -msgstr "Fisierele de configurare vor fi pastrate." - -msgid "Confirmation" -msgstr "Confirmare" - -msgid "Connect" -msgstr "Conectare" - -msgid "Connected" -msgstr "Conectat" - -msgid "Connection Limit" -msgstr "Limita de conexiune" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Conexiuni" - -msgid "Country" -msgstr "Tara" - -msgid "Country Code" -msgstr "Codul de tara" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "" - -msgid "Create Interface" -msgstr "Creaza interfata" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "Critic" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" - -msgid "DHCP Leases" -msgstr "Conexiuni DHCP" - -msgid "DHCP Server" -msgstr "Server DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP si DNS" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "Optiuni DHCP" - -msgid "DHCPv6 Leases" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Stare implicita" - -msgid "Define a name for this network." -msgstr "Definiti un nume pentru aceasta retea." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Sterge" - -msgid "Delete this network" -msgstr "Sterge aceasta retea" - -msgid "Description" -msgstr "Descriere" - -msgid "Design" -msgstr "" - -msgid "Destination" -msgstr "Destinatie" - -msgid "Device" -msgstr "Dispozitiv" - -msgid "Device Configuration" -msgstr "Configurarea dispozitivului" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnosticuri" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Director" - -msgid "Disable" -msgstr "Dezactiveaza" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Dezactiveaza DHCP " -"pentru aceasta interfata." - -msgid "Disable DNS setup" -msgstr "Dezactiveaza configuratia DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Dezactivat" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Optimizarea distantei" - -msgid "Distance to farthest network member in meters." -msgstr "Distanta catre cel mai departat membru din retea in metri." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversitate" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domeniul necesar" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Download and install package" -msgstr "Descarca si instaleaza pachetul" - -msgid "Download backup" -msgstr "Descarca backup" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instanta dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "Editeaza" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Editeaza aceasta interfata" - -msgid "Edit this network" -msgstr "Editeaza aceasta retea" - -msgid "Emergency" -msgstr "Urgenta" - -msgid "Enable" -msgstr "Activeaza" - -msgid "Enable STP" -msgstr "Activeaza STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Activeaza serverul TFTP" - -msgid "Enable VLAN functionality" -msgstr "Activeaza VLAN-urile" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "Activeaza/Dezactiveaza" - -msgid "Enabled" -msgstr "Activat" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "Modul de incapsulare" - -msgid "Encryption" -msgstr "Criptare" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Stergere..." - -msgid "Error" -msgstr "Eroare" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Adaptor de retea ethernet" - -msgid "Ethernet Switch" -msgstr "Switch-ul ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "Expira" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Server de log-uri extern" - -msgid "External system log server port" -msgstr "Portul serverului de log-uri extern" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Fisier" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Sistem de fisiere" - -msgid "Filter" -msgstr "Filtreaza" - -msgid "Filter private" -msgstr "Filtreaza privatele" - -msgid "Filter useless" -msgstr "Filtreaza nefolositele" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Gaseste si alatura in retea" - -msgid "Find package" -msgstr "Gaseste pachet" - -msgid "Finish" -msgstr "Termina" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Setarile firewall-ului" - -msgid "Firewall Status" -msgstr "Status la firewall" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versiunea de firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Portul sursa pentru intrebarile DNS catre exterior" - -msgid "Flash Firmware" -msgstr "Rescrie firmware" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "Forteaza" - -msgid "Force CCMP (AES)" -msgstr "Forteaza CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Forteaza facilitatea DHCP in aceasta retea chiar daca alt server DHCP exista." - -msgid "Force TKIP" -msgstr "Forteaza TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forteaza TKIP si CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "Liber" - -msgid "Free space" -msgstr "Spatiu liber" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "Doar GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway ports" -msgstr "Porturile gateway" - -msgid "General Settings" -msgstr "Setari principale" - -msgid "General Setup" -msgstr "Configurare generala" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Confirmarea parolei nu se potriveste cu prima, parola neschimbata !" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Aici poti configura aspectele de baza ale dispozitivului cum ar fi numele " -"sau fusul orar." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "Ascunde ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Intrari de tip host" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" - -msgid "Hostname" -msgstr "Numele de host" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Nume de host" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Adresa IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Firewall IPv4" - -msgid "IPv4 WAN Status" -msgstr "Statusul IPv4 pe WAN" - -msgid "IPv4 address" -msgstr "Adresa IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 si IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "Doar IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "Adresa IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Firewall IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Statusul IPv6 pe WAN" - -msgid "IPv6 address" -msgstr "Adresa IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "Doar IPv6" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Identitate" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "" - -msgid "Ignore resolve file" -msgstr "" - -msgid "Image" -msgstr "Imagine" - -msgid "In" -msgstr "" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "Intrare:" - -msgid "Info" -msgstr "Informatii" - -msgid "Initscript" -msgstr "Script de initializare" - -msgid "Initscripts" -msgstr "Scripturi de initializare" - -msgid "Install" -msgstr "Instalati" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instalati pachetul %q" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "Pachete instalate" - -msgid "Interface" -msgstr "Interfata" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configurarea interfetei" - -msgid "Interface Overview" -msgstr "Prezentare interfata" - -msgid "Interface is reconnecting..." -msgstr "Interfata se reconecteaza.." - -msgid "Interface is shutting down..." -msgstr "Interfata se opreste.." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Interfata nu e prezenta sau nu este conectata inca." - -msgid "Interface reconnected" -msgstr "Interfata reconectata" - -msgid "Interface shut down" -msgstr "Interfata oprita" - -msgid "Interfaces" -msgstr "Interfete" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Eroare interna de server" - -msgid "Invalid" -msgstr "Invalid" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Utilizator si/sau parola invalide! Incearcati din nou." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Se pare ca ai incercat sa rescrii o imagine care nu are loc in memoria " -"flash, verifica fisierul din nou!" - -msgid "JavaScript required!" -msgstr "Ai nevoie de JavaScript !" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Pastrati setarile" - -msgid "Kernel Log" -msgstr "Log-ul kernelului" - -msgid "Kernel Version" -msgstr "Versiunea de kernel" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "Opreste" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "Eticheta" - -msgid "Language" -msgstr "Limba" - -msgid "Language and Style" -msgstr "Limba si stilul interfetei" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limita" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Incarcarea" - -msgid "Load Average" -msgstr "Incarcarea medie" - -msgid "Loading" -msgstr "Incarcare" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Adresa IPv4 locala" - -msgid "Local IPv6 address" -msgstr "Adresa IPv6 locala" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Ora locala" - -msgid "Local domain" -msgstr "Domeniu local" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "Server local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Autentificare" - -msgid "Logout" -msgstr "Iesire" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "" - -msgid "MAC-Filter" -msgstr "" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Numarul maxim de intrebari DNS simultane" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Memorie" - -msgid "Memory usage (%)" -msgstr "Utilizarea memoriei (%)" - -msgid "Metric" -msgstr "Metrica" - -msgid "Minimum hold time" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mod" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Nume" - -msgid "Name of the new interface" -msgstr "Numele interfetei noi" - -msgid "Name of the new network" -msgstr "Numele interfetei noi" - -msgid "Navigation" -msgstr "Navigare" - -msgid "Netmask" -msgstr "Netmask" - -msgid "Network" -msgstr "Retea" - -msgid "Network Utilities" -msgstr "Utilitare de retea" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "Mai departe »" - -msgid "No DHCP Server configured for this interface" -msgstr "Nici un server DHCP configurat pentru aceasta interfata" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "Nici un fisier gasit" - -msgid "No information available" -msgstr "Nici o informatie disponibila" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "Nici o retea configurata pe acest dispozitiv" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "Nici o parola setata !" - -msgid "No rules in this chain" -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "Zgomot" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Zgomot:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Nu a fost gasit" - -msgid "Not associated" -msgstr "Nu este asociat." - -msgid "Not connected" -msgstr "Nu este conectat" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: fisierele de configurare vor fi sterse." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Notificare" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configuratia-OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "Unul sau mai multe campuri contin valori invalide !" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Unul sau mai multe campuri nu contin valori !" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Optiunea schimbata" - -msgid "Option removed" -msgstr "Optiunea eliminata" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Optiuni" - -msgid "Other:" -msgstr "Altele:" - -msgid "Out" -msgstr "Iesire" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Prezentare generala" - -msgid "Owner" -msgstr "Proprietar" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "Incapsulare PPPoA" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Pachetul libiwinfo este necesar !" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Numele pachetului" - -msgid "Packets" -msgstr "Pachete" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "Parola" - -msgid "Password authentication" -msgstr "Autentificarea cu parola" - -msgid "Password of Private Key" -msgstr "Parola cheii private" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Parola schimbata cu succes !" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Calea catre certificatul CA" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Calea catre cheia privata" - -msgid "Path to executable which handles the button event" -msgstr "Calea catre executabilul care se ocupa de evenimentul butonului" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Maxim:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Restarteaza" - -msgid "Perform reset" -msgstr "Reseteaza" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Rata phy:" - -msgid "Physical Settings" -msgstr "Setarile fizice" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Packete." - -msgid "Please enter your username and password." -msgstr "Introdu utilizatorul si parola." - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Stare port:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Continua" - -msgid "Processes" -msgstr "Procese" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Protocol family" -msgstr "Familia de protocol" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Calitate" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Citeste fisierul /etc/ethers pentru configurarea serverului " -"DHCP-" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "Conexiuni in timp real" - -msgid "Realtime Graphs" -msgstr "Grafice in timp real" - -msgid "Realtime Load" -msgstr "Incarcarea in timp real" - -msgid "Realtime Traffic" -msgstr "Traficul in timp real" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Rebooteaza" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "Rebooteaza sistemul de operare al dispozitivului tau" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "Antena receptorului" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconecteaza aceasta interfata" - -msgid "Reconnecting interface" -msgstr "Interfata se reconecteaza chiar acum" - -msgid "References" -msgstr "Referinte" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Elimina" - -msgid "Repeat scan" -msgstr "Repeta scanarea" - -msgid "Replace entry" -msgstr "Inlocuieste intrarea" - -msgid "Replace wireless configuration" -msgstr "Inlocuieste configuratia wireless" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Reseteaza counterii" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "Fisierele de rezolvare si hosturi DNS" - -msgid "Resolve file" -msgstr "Fisierul de rezolvare" - -msgid "Restart" -msgstr "Restart" - -msgid "Restart Firewall" -msgstr "Restarteaza firewallul" - -msgid "Restore backup" -msgstr "Reface backup-ul" - -msgid "Reveal/hide password" -msgstr "Arata / ascunde parola" - -msgid "Revert" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Parola routerului" - -msgid "Routes" -msgstr "Rute" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Acces SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Cheile SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Salveaza" - -msgid "Save & Apply" -msgstr "Salveaza si aplica" - -msgid "Save & Apply" -msgstr "Salveaza & Aplica" - -msgid "Scan" -msgstr "Scan" - -msgid "Scheduled Tasks" -msgstr "Operatiuni programate" - -msgid "Section added" -msgstr "Sectiune adaugata" - -msgid "Section removed" -msgstr "Sectiune eliminata" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "Setarile serverului" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Nume serviciu" - -msgid "Service Type" -msgstr "Tip de serviciu" - -msgid "Services" -msgstr "Servicii" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Configurare sincronizare timp" - -msgid "Setup DHCP Server" -msgstr "Seteaza serverul DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "Opreste aceasta interfata" - -msgid "Shutdown this network" -msgstr "Opreste aceasta retea" - -msgid "Signal" -msgstr "Semnal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Semnal:" - -msgid "Size" -msgstr "Marime" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "" - -msgid "Skip to navigation" -msgstr "" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "" - -msgid "Source" -msgstr "Sursa" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "" - -msgid "Startup" -msgstr "Pornire" - -msgid "Static IPv4 Routes" -msgstr "Rute statice IPv4" - -msgid "Static IPv6 Routes" -msgstr "Rute statice IPv6" - -msgid "Static Leases" -msgstr "" - -msgid "Static Routes" -msgstr "Rute statice" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "" - -msgid "Submit" -msgstr "Trimite" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "Sistem" - -msgid "System Log" -msgstr "Log de sistem" - -msgid "System Properties" -msgstr "Proprietati sistem" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "Setarile TFTP" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Tabel" - -msgid "Target" -msgstr "Tinta" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Termina" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no pending changes to apply!" -msgstr "Nu exista modificari in asteptare de aplicat !" - -msgid "There are no pending changes to revert!" -msgstr "Nu exista modificari in asteptare de anulat !" - -msgid "There are no pending changes!" -msgstr "Nu exista modificari in asteptare !" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Nu exista o parola pe acest router. Configureaza o parola la contul root " -"pentru a proteja interfata web si porni SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Fusul orar" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total disponibil" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Trafic" - -msgid "Transfer" -msgstr "Transfer" - -msgid "Transmission Rate" -msgstr "Rata de transmitere" - -msgid "Transmit" -msgstr "" - -msgid "Transmit Power" -msgstr "Puterea de transmitere" - -msgid "Transmitter Antenna" -msgstr "Antena de transmitere" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "Interfata de tunel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Puterea TX" - -msgid "Type" -msgstr "Tip" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Doar UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "Dispozitiv USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Necunoscut" - -msgid "Unknown Error, password not changed!" -msgstr "Eroare necunoscuta, parola neschimbata !" - -msgid "Unmanaged" -msgstr "Neadministrate" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Modificari nesalvate" - -msgid "Unsupported protocol type." -msgstr "Tipul de protocol neacceptat." - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Fisier incarcat" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Foloseste /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Foloseste codurile de tara ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Folosit" - -msgid "Used Key Slot" -msgstr "Slot de cheie folosit" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Utilizator" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANuri pe %q" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Versiune" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistem deschis WEP" - -msgid "WEP Shared Key" -msgstr "Sistem de cheie impartasita WEP" - -msgid "WEP passphrase" -msgstr "Parola WEP" - -msgid "WMM Mode" -msgstr "Mod WMM" - -msgid "WPA passphrase" -msgstr "Parola WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Criptarea WPA necesita wpa_supplicant (pentru modul client) sau hostapd " -"(pentru modul AP sau ad-hoc) instalate." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Avertizare" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless Adapter" -msgstr "Adaptorul wireless" - -msgid "Wireless Network" -msgstr "Retea wireless" - -msgid "Wireless Overview" -msgstr "Sumarul wireless" - -msgid "Wireless Security" -msgstr "Securitate wireless" - -msgid "Wireless is disabled or not associated" -msgstr "Wireless-ul este dezactivat sau ne-asociat" - -msgid "Wireless is restarting..." -msgstr "Wireless-ul se restarteaza.." - -msgid "Wireless network is disabled" -msgstr "Reteaua wireless este dezactivata" - -msgid "Wireless network is enabled" -msgstr "Reteaua wireless este activata" - -msgid "Wireless restarted" -msgstr "Wireless-ul restartat" - -msgid "Wireless shut down" -msgstr "Wireless-ul oprit" - -msgid "Write received DNS requests to syslog" -msgstr "Scrie cererile DNS primite in syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "oricare" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "dezactiveaza" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expirat" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "ajutor" - -msgid "hidden" -msgstr "ascuns" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "daca tinta este o retea" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "nu" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "rutat" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "etichetat" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "necunoscut" - -msgid "unlimited" -msgstr "nelimitat" - -msgid "unspecified" -msgstr "nespecificat" - -msgid "unspecified -or- create:" -msgstr "" - -msgid "untagged" -msgstr "neetichetat" - -msgid "yes" -msgstr "da" - -msgid "« Back" -msgstr "« Inapoi" - -#~ msgid "AR Support" -#~ msgstr "Suport AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s Controler Fara Fir" - -#~ msgid "Background Scan" -#~ msgstr "Scanare in fundal" - -#~ msgid "Compression" -#~ msgstr "Comprimare" - -#~ msgid "Maximum Rate" -#~ msgstr "Rata maxima" - -#~ msgid "Minimum Rate" -#~ msgstr "Rata minima" - -#~ msgid "Multicast Rate" -#~ msgstr "Rata de multicast" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domeniu regulatoriu" - -#~ msgid "Turbo Mode" -#~ msgstr "Mod turbo" - -#~ msgid "XR Support" -#~ msgstr "Suport XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "" -#~ "Daca lasati aceasta optiune neselectata va fi creata o retea aditionala" - -#~ msgid "CPU" -#~ msgstr "Procesor" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "VLAN Interface" -#~ msgstr "Interfata VLAN" diff --git a/package/luci/modules/luci-base/po/ru/base.po b/package/luci/modules/luci-base/po/ru/base.po deleted file mode 100644 index 9a3cf434fc..0000000000 --- a/package/luci/modules/luci-base/po/ru/base.po +++ /dev/null @@ -1,4038 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: base\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2014-01-31 21:08+0200\n" -"Last-Translator: Moon_dark \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d минутное окно, %d секундный интервал)" - -msgid "(%s available)" -msgstr "(%s доступно)" - -msgid "(empty)" -msgstr "(пусто)" - -msgid "(no interfaces attached)" -msgstr "(нет связанных интерфейсов)" - -msgid "-- Additional Field --" -msgstr "-- Дополнительное поле --" - -msgid "-- Please choose --" -msgstr "-- Пожалуйста, выберите --" - -msgid "-- custom --" -msgstr "-- пользовательский --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Загрузка за 1 минуту:" - -msgid "15 Minute Load:" -msgstr "Загрузка за 15 минут:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Загрузка за 5 минут:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "Порт запроса DNS" - -msgid "DNS server port" -msgstr "Порт DNS-сервера" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS серверы будут опрошены в " -"порядке, определенном в resolvfile файле" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-адрес" - -msgid "IPv4-Gateway" -msgstr "IPv4-адрес шлюза" - -msgid "IPv4-Netmask" -msgstr "Маска сети IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-адрес или сеть (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-адрес шлюза" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Настройка LED" - -msgid "LED Name" -msgstr "Название LED" - -msgid "MAC-Address" -msgstr "MAC-адрес" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Макс. кол-во аренд DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Макс. размер пакета EDNS0" - -msgid "Max. concurrent queries" -msgstr "" -"Макс. кол-во одновременных запросов" - -# Парный шифр используется для одноадресной передачи, а групповой - для широковещательной и мультикаста -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Порог повтора ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Мосты ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Идентификатор виртуального канала ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Идентификатор виртуального пути ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM-мосты выставляют инкапсулированный Ethernet в соединениях AAL5 в " -"качестве виртуальных сетевых интерфейсов Linux, которые могут быть " -"использованы в сочетании с DHCP или PPP для подключения к сети провайдера." - -msgid "ATM device number" -msgstr "Номер устройства ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Концентратор доступа" - -msgid "Access Point" -msgstr "Точка доступа" - -msgid "Action" -msgstr "Действие" - -msgid "Actions" -msgstr "Действия" - -msgid "Activate this network" -msgstr "Активировать эту сеть" - -msgid "Active IPv4-Routes" -msgstr "" -"Активные маршруты IPv4" - -msgid "Active IPv6-Routes" -msgstr "" -"Активные маршруты IPv6" - -msgid "Active Connections" -msgstr "Активные соединения" - -msgid "Active DHCP Leases" -msgstr "Активные аренды DHCP" - -msgid "Active DHCPv6 Leases" -msgstr "Активные аренды DHCPv6" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Добавить" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Добавить суффикс локального домена к именам, полученным из файлов hosts" - -msgid "Add new interface..." -msgstr "Добавить новый интерфейс..." - -msgid "Additional Hosts files" -msgstr "Дополнительные файлы hosts" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Адрес" - -msgid "Address to access local relay bridge" -msgstr "Адрес для доступа к локальному мосту-ретранслятору" - -msgid "Administration" -msgstr "Управление" - -msgid "Advanced Settings" -msgstr "Расширенные настройки" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Тревожная ситуация" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Разрешить SSH-аутентификацию с помощью " -"пароля" - -msgid "Allow all except listed" -msgstr "Разрешить все, кроме перечисленных" - -msgid "Allow listed only" -msgstr "Разрешить только перечисленные" - -msgid "Allow localhost" -msgstr "Разрешить локальный хост" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Разрешить удалённым хостам подключаться к локальным перенаправленным портам " -"SSH" - -msgid "Allow root logins with password" -msgstr "Разрешить пользователю root вход с помощью пароля" - -msgid "Allow the root user to login with password" -msgstr "" -"Разрешить пользователю root входить в систему с помощью пароля" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "Разрешить ответы в диапазоне 127.0.0.0/8, например, для RBL-сервисов" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Антенна 1" - -msgid "Antenna 2" -msgstr "Антенна 2" - -msgid "Antenna Configuration" -msgstr "Конфигурация антенн" - -msgid "Any zone" -msgstr "Любая зона" - -msgid "Apply" -msgstr "Принять" - -msgid "Applying changes" -msgstr "Применение изменений" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Назначить интерфейсы..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Подключенные клиенты" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Аутентификация" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Авторитетный" - -msgid "Authorization Required" -msgstr "Требуется авторизация" - -msgid "Auto Refresh" -msgstr "Автообновление" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Доступно" - -msgid "Available packages" -msgstr "Доступные пакеты" - -msgid "Average:" -msgstr "Средняя:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Назад" - -msgid "Back to Overview" -msgstr "Назад к обзору" - -msgid "Back to configuration" -msgstr "Назад к настройке" - -msgid "Back to overview" -msgstr "Назад к обзору" - -msgid "Back to scan results" -msgstr "Назад к результатам сканирования" - -msgid "Backup / Flash Firmware" -msgstr "Резервная копия / прошивка" - -msgid "Backup / Restore" -msgstr "Резервное копирование / Восстановление" - -msgid "Backup file list" -msgstr "Список файлов для резервного копирования" - -msgid "Bad address specified!" -msgstr "Указан неправильный адрес!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Ниже приводится определённый список файлов для резервного копирования. Он " -"состоит из изменённых конфигурационных файлов, отмеченных opkg, необходимых " -"базовых файлов, а также шаблонов резервного копирования, определённых " -"пользователем." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Скорость" - -msgid "Bogus NX Domain Override" -msgstr "Переопределение поддельного NX-домена" - -msgid "Bridge" -msgstr "Мост" - -msgid "Bridge interfaces" -msgstr "Объединить в мост" - -msgid "Bridge unit number" -msgstr "Номер моста" - -msgid "Bring up on boot" -msgstr "Запустить при загрузке" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Беспроводной 802.11%s контроллер Broadcom" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Беспроводной 802.11 контроллер Broadcom BCM%04x" - -msgid "Buffered" -msgstr "Буферизировано" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Кнопки" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Загрузка ЦП (%)" - -msgid "Cancel" -msgstr "Отменить" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Цепочка" - -msgid "Changes" -msgstr "Изменения" - -msgid "Changes applied." -msgstr "Изменения приняты." - -msgid "Changes the administrator password for accessing the device" -msgstr "Изменить пароль администратора для доступа к устройству" - -msgid "Channel" -msgstr "Канал" - -msgid "Check" -msgstr "Проверить" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Контрольная сумма" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Укажите зону, которую вы хотите прикрепить к этому интерфейсу. Выберите " -"не определено, чтобы удалить этот интерфейс из зоны, или заполните " -"поле создать, чтобы определить новую зону и прикрепить к ней этот " -"интерфейс." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Выберите сеть (сети), которые вы хотите прикрепить к этому беспроводному " -"интерфейсу, или заполните поле создать, чтобы определить новую сеть." - -msgid "Cipher" -msgstr "Шифрование" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Нажмите \"Создать архив\", чтобы загрузить tar-архив текущих " -"конфигурационных файлов. Для сброса настроек прошивки к исходному состоянию " -"нажмите \"Выполнить сброс\" (возможно только для squashfs-образов)." - -msgid "Client" -msgstr "Клиент" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID клиента при DHCP-запросе" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Завершать неактивное соединение после заданного интервала (сек.), " -"используйте значение 0 для удержания неактивного соединения" - -msgid "Close list..." -msgstr "Закрыть список..." - -msgid "Collecting data..." -msgstr "Сбор информации..." - -msgid "Command" -msgstr "Команда" - -msgid "Common Configuration" -msgstr "Общая конфигурация" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Конфигурация" - -msgid "Configuration applied." -msgstr "Конфигурация применена." - -msgid "Configuration files will be kept." -msgstr "Конфигурационные файлы будут сохранены." - -msgid "Confirmation" -msgstr "Подтверждение пароля" - -msgid "Connect" -msgstr "Соединить" - -msgid "Connected" -msgstr "Подключен" - -msgid "Connection Limit" -msgstr "Ограничение соединений" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Соединения" - -msgid "Country" -msgstr "Страна" - -msgid "Country Code" -msgstr "Код страны" - -msgid "Cover the following interface" -msgstr "Включить следующий интерфейс" - -msgid "Cover the following interfaces" -msgstr "Включить следующие интерфейсы" - -msgid "Create / Assign firewall-zone" -msgstr "Создать / назначить зону сетевого экрана" - -msgid "Create Interface" -msgstr "Создать интерфейс" - -msgid "Create a bridge over multiple interfaces" -msgstr "Создать мост над несколькими интерфейсами" - -msgid "Critical" -msgstr "Критическая ситуация" - -msgid "Cron Log Level" -msgstr "Уровень вывода Cron" - -msgid "Custom Interface" -msgstr "Пользовательский интерфейс" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Настройка поведения LED если это возможно." - -msgid "DHCP Leases" -msgstr "Аренды DHCP" - -msgid "DHCP Server" -msgstr "DHCP-сервер" - -msgid "DHCP and DNS" -msgstr "DHCP и DNS" - -msgid "DHCP client" -msgstr "DHCP-клиент" - -msgid "DHCP-Options" -msgstr "DHCP-Настройки" - -msgid "DHCPv6 Leases" -msgstr "Аренды DHCPv6" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Перенаправление запросов DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Отладка" - -msgid "Default %d" -msgstr "По умолчанию %d" - -msgid "Default gateway" -msgstr "Шлюз по умолчанию" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Начальное состояние" - -msgid "Define a name for this network." -msgstr "Укажите имя этой сети." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Определить дополнительные опции DHCP, например, " -"\"6,192.168.2.1,192.168.2.2\", чтобы известить клиентов о DNS-" -"серверах." - -msgid "Delete" -msgstr "Удалить" - -msgid "Delete this network" -msgstr "Удалить эту сеть" - -msgid "Description" -msgstr "Описание" - -msgid "Design" -msgstr "Тема" - -msgid "Destination" -msgstr "Назначение" - -msgid "Device" -msgstr "Устройство" - -msgid "Device Configuration" -msgstr "Конфигурация устройства" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Диагностика" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Директория" - -msgid "Disable" -msgstr "Отключить" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Отключить DHCP для этого интерфейса." - -msgid "Disable DNS setup" -msgstr "Отключить настройку DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Отключено" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Отбрасывать ответы RFC1918" - -msgid "Displaying only packages containing" -msgstr "Показываются только пакеты, содержащие" - -msgid "Distance Optimization" -msgstr "Оптимизация расстояния" - -msgid "Distance to farthest network member in meters." -msgstr "Расстояние до самого удалённого сетевого узла в метрах." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Разновидность антенн" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq содержит в себе DHCP-сервер и DNS-" -"прокси для сетевых экранов NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Не кешировать отрицательные ответы, в т.ч. для несуществующих доменов" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Не перенаправлять запросы, которые не могут быть обработаны публичными DNS-" -"серверами" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей" - -msgid "Domain required" -msgstr "Требуется домен" - -msgid "Domain whitelist" -msgstr "Белый список доменов" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Не перенаправлять DNS-запросы " -"без DNS-имени" - -msgid "Download and install package" -msgstr "Загрузить и установить пакет" - -msgid "Download backup" -msgstr "Загрузить резервную копию" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear - это SSH-сервер со встроенным " -"SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Динамический DHCP" - -msgid "Dynamic tunnel" -msgstr "Динамический туннель" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Динамически выделять DHCP-адреса клиентам. Если выключено, то будут " -"обслужены только клиенты с постоянно арендованными адресами." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Метод EAP" - -# "Редактировать" длинно и не влазит по ширине в кнопку - текст наезжает на иконку -#, fuzzy -msgid "Edit" -msgstr "Редактировать" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -#, fuzzy -msgid "Edit this interface" -msgstr "Редактировать этот интерфейс" - -msgid "Edit this network" -msgstr "Редактировать эту сеть" - -msgid "Emergency" -msgstr "Чрезвычайная ситуация" - -msgid "Enable" -msgstr "Включить" - -msgid "Enable STP" -msgstr "Включить STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Включить динамическое обновление оконечной точки HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Включить IPv6-согласование на PPP-соединении" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Пропускать Jumbo-кадры" - -msgid "Enable NTP client" -msgstr "Включить NTP-клиент" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Включить TFTP-сервер" - -msgid "Enable VLAN functionality" -msgstr "Включить поддержку VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Включить изучение и устаревание (learning/aging)" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Включить эту точку монтирования" - -msgid "Enable this swap" -msgstr "Включить этот раздел подкачки" - -msgid "Enable/Disable" -msgstr "Включить/выключить" - -msgid "Enabled" -msgstr "Включено" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Включает Spanning Tree Protocol на этом мосту" - -msgid "Encapsulation mode" -msgstr "Режим инкапсуляции" - -msgid "Encryption" -msgstr "Шифрование" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Стирание..." - -msgid "Error" -msgstr "Ошибка" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet-адаптер" - -msgid "Ethernet Switch" -msgstr "Ethernet-коммутатор" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Расширять имена узлов" - -msgid "Expires" -msgstr "Истекает" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Время, через которое истекает аренда адреса, минимум 2 минуты (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Сервер системного журнала" - -msgid "External system log server port" -msgstr "Порт сервера системного журнала" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Файл" - -msgid "Filename of the boot image advertised to clients" -msgstr "Имя загрузочного образа, извещаемого клиентам" - -msgid "Filesystem" -msgstr "Файловая система" - -msgid "Filter" -msgstr "Фильтр" - -msgid "Filter private" -msgstr "Фильтровать частные" - -msgid "Filter useless" -msgstr "Фильтровать бесполезные" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Найти и присоединиться к сети" - -msgid "Find package" -msgstr "Найти пакет" - -msgid "Finish" -msgstr "Завершить" - -msgid "Firewall" -msgstr "Межсетевой экран" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Настройки межсетевого экрана" - -msgid "Firewall Status" -msgstr "Статус межсетевого экрана" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Версия прошивки" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Фиксированный порт для исходящих DNS-запросов" - -msgid "Flash Firmware" -msgstr "Установить прошивку" - -msgid "Flash image..." -msgstr "Установить..." - -msgid "Flash new firmware image" -msgstr "Установить новый образ прошивки" - -msgid "Flash operations" -msgstr "Операции с прошивкой" - -msgid "Flashing..." -msgstr "Прошивка..." - -# Force DHCP on the network -msgid "Force" -msgstr "Принудительно" - -msgid "Force CCMP (AES)" -msgstr "Требовать CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Использовать DHCP в этой сети, даже если найден другой сервер." - -msgid "Force TKIP" -msgstr "Требовать TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "TKIP или CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Перенаправлять трафик DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Перенаправлять широковещательный траффик" - -msgid "Forwarding mode" -msgstr "Режим перенаправления" - -msgid "Fragmentation Threshold" -msgstr "Порог фрагментации" - -msgid "Frame Bursting" -msgstr "Пакетная передача кадров" - -msgid "Free" -msgstr "Свободно" - -msgid "Free space" -msgstr "Свободное место" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "ГГц" - -msgid "GPRS only" -msgstr "Только GPRS" - -msgid "Gateway" -msgstr "Шлюз" - -msgid "Gateway ports" -msgstr "Порты шлюза" - -msgid "General Settings" -msgstr "Основные настройки" - -msgid "General Setup" -msgstr "Основные настройки" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Создать архив" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Беспроводной 802.11%s контроллер" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Введённые пароли не совпадают, пароль не изменён!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Перейти к настройке пароля..." - -msgid "Go to relevant configuration page" -msgstr "Перейти к странице конфигурации" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Пароль HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Обработчик" - -# Вообще, SIGHUP означает, что "пользователь отключился от терминала". Но чаще всего сигнал используется для перезапуска, так что переведу именно так. -msgid "Hang Up" -msgstr "Перезапустить" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Здесь вы можете настроить основные параметры вашего устройства такие как имя " -"хоста или часовой пояс." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Здесь вы можете добавить открытые SSH ключи (один ключ на строку) для SSH " -"аутентификации." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Беспроводной 802.11b контроллер Hermes" - -msgid "Hide ESSID" -msgstr "Скрыть ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Записи хостов" - -msgid "Host expiry timeout" -msgstr "Таймаут хоста" - -msgid "Host-IP or Network" -msgstr "IP-адрес или сеть" - -msgid "Hostname" -msgstr "Имя хоста" - -msgid "Hostname to send when requesting DHCP" -msgstr "Имя хоста в DHCP-запросах" - -msgid "Hostnames" -msgstr "Имена хостов" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP-адрес" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Межсетевой экран IPv4" - -msgid "IPv4 WAN Status" -msgstr "Статус IPv4 WAN" - -msgid "IPv4 address" -msgstr "IPv4-адрес" - -msgid "IPv4 and IPv6" -msgstr "IPv4 и IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Широковещательный IPv4-адрес" - -msgid "IPv4 gateway" -msgstr "IPv4-адрес шлюза" - -msgid "IPv4 netmask" -msgstr "Маска сети IPv4" - -msgid "IPv4 only" -msgstr "Только IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Длина префикса IPv4" - -msgid "IPv4-Address" -msgstr "IPv4-адрес" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Межсетевой экран IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Статус IPv6 WAN" - -msgid "IPv6 address" -msgstr "IPv6-адрес" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6-адрес шлюза" - -msgid "IPv6 only" -msgstr "Только IPv6" - -msgid "IPv6 prefix" -msgstr "Префикс IPv6" - -msgid "IPv6 prefix length" -msgstr "Длина префикса IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-адрес" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6 в IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6 через IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6 через IPv4 (6to4)" - -msgid "Identity" -msgstr "Идентификация EAP" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Если выбрано, монтировать устройство, используя его UUID, вместо " -"фиксированного файла устройства" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Если выбрано, монтировать устройство, используя название его раздела, вместо " -"фиксированного файла устройства" - -msgid "If unchecked, no default route is configured" -msgstr "Если не выбрано, то маршрут по умолчанию не настраивается" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Если не выбрано, то извещаемые адреса DNS-серверов игнорируются" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Если физической памяти не достаточно, то неиспользуемые данные могут быть " -"временно перемещены в раздел подкачки, что в свою очередь приведет к " -"увеличению объёму свободной RAM. " -"Однако, перемещение в файл - это достаточно долгий процесс, так как " -"устройство, на котором располагается раздел подкачки, работает гораздо " -"медленнее, чем RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignore /etc/hosts" - -msgid "Ignore interface" -msgstr "Игнорировать интерфейс" - -msgid "Ignore resolve file" -msgstr "Игнорировать файл resolv" - -msgid "Image" -msgstr "Образ" - -msgid "In" -msgstr "В" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Таймаут бездействия" - -msgid "Inbound:" -msgstr "Входящий:" - -msgid "Info" -msgstr "Информация" - -msgid "Initscript" -msgstr "Скрипт инициализации" - -msgid "Initscripts" -msgstr "Скрипты инциализации" - -msgid "Install" -msgstr "Установить" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Установить пакет %q" - -msgid "Install protocol extensions..." -msgstr "Установить расширения протокола..." - -msgid "Installed packages" -msgstr "Установленные пакеты" - -msgid "Interface" -msgstr "Интерфейс" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Конфигурация интерфейса" - -msgid "Interface Overview" -msgstr "Обзор интерфейса" - -msgid "Interface is reconnecting..." -msgstr "Интерфейс переподключается..." - -msgid "Interface is shutting down..." -msgstr "Интерфейс отключается..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Интерфейс не существует или пока не подключен." - -msgid "Interface reconnected" -msgstr "Интерфейс переподключен" - -msgid "Interface shut down" -msgstr "Интерфейс отключен" - -msgid "Interfaces" -msgstr "Интерфейсы" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Внутренняя ошибка сервера" - -msgid "Invalid" -msgstr "Введённое значение не верно" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"Указан неверный VLAN ID! Доступны только идентификаторы в диапазоне от %d до " -"%d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Указан неверный VLAN ID! Доступны только уникальные ID" - -msgid "Invalid username and/or password! Please try again." -msgstr "Неверный логин и/или пароль! Пожалуйста попробуйте снова." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Вы пытаетесь обновить прошивку файлом, который не помещается в память " -"устройства! Пожалуйста, проверьте файл образа." - -msgid "JavaScript required!" -msgstr "Требуется JavaScript!" - -msgid "Join Network" -msgstr "Подключение к сети" - -msgid "Join Network: Wireless Scan" -msgstr "Подключение к сети: сканирование" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Сохранить настройки" - -msgid "Kernel Log" -msgstr "Журнал ядра" - -msgid "Kernel Version" -msgstr "Версия ядра" - -msgid "Key" -msgstr "Ключ" - -msgid "Key #%d" -msgstr "Ключ №%d" - -msgid "Kill" -msgstr "Принудительно завершить" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP-сервер" - -msgid "LCP echo failure threshold" -msgstr "Порог ошибок эхо-запросов LCP" - -msgid "LCP echo interval" -msgstr "Интервал эхо-запросов LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Метка" - -msgid "Language" -msgstr "Язык" - -msgid "Language and Style" -msgstr "Язык и тема" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Срок действия аренды" - -msgid "Leasefile" -msgstr "Файл аренд" - -msgid "Leasetime remaining" -msgstr "Оставшееся время аренды" - -msgid "Leave empty to autodetect" -msgstr "Оставьте поле пустым для автоопределения" - -msgid "Leave empty to use the current WAN address" -msgstr "Оставьте пустым для использования текущего адреса WAN" - -msgid "Legend:" -msgstr "Легенда:" - -msgid "Limit" -msgstr "Предел" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Подключение" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Список DNS-серверов для " -"перенаправления запросов" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Список доменов, для которых разрешены ответы RFC1918" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Список хостов, поставляющих поддельные результаты домена NX" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "Слушать только на данном интерфейсе или, если не определено, на всех" - -msgid "Listening port for inbound DNS queries" -msgstr "Порт для входящих DNS-запросов" - -msgid "Load" -msgstr "Загрузка" - -msgid "Load Average" -msgstr "Средняя загрузка" - -msgid "Loading" -msgstr "Загрузка" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Локальный IPv4-адрес" - -msgid "Local IPv6 address" -msgstr "Локальный IPv6-адрес" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Локальная загрузка" - -msgid "Local Time" -msgstr "Местное время" - -msgid "Local domain" -msgstr "Локальный домен" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Определение локального домена. Имена в этом домене никогда не запрашиваются " -"у DNS-сервера, а разрешаются на основе данных DHCP и файлов hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Суффикс локального домена, который будет добавлен к DHCP-именам и записям из " -"файлов hosts" - -msgid "Local server" -msgstr "Локальный сервер" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Локализировать имя хоста в зависимости от запрашиваемой подсети, если " -"доступно несколько IP-адресов." - -msgid "Localise queries" -msgstr "Локализовывать запросы" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Уровень вывода" - -msgid "Log queries" -msgstr "Записывать запросы в журнал" - -msgid "Logging" -msgstr "Журналирование" - -msgid "Login" -msgstr "Войти" - -msgid "Logout" -msgstr "Выйти" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Минимальный адрес аренды." - -msgid "MAC-Address" -msgstr "MAC-адрес" - -msgid "MAC-Address Filter" -msgstr "Фильтр MAC-адресов" - -msgid "MAC-Filter" -msgstr "MAC-фильтр" - -msgid "MAC-List" -msgstr "Список MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "МБ/с" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "МГц" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Максимальное количество активных арендованных DHCP-адресов" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Максимально допустимое количество одновременных DNS-запросов" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Максимально допустимый размер UDP пакетов-EDNS.0" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Максимальное время ожидания готовности модема (секунды)" - -msgid "Maximum hold time" -msgstr "Максимальное время удержания" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Максимальное количество арендованных адресов." - -msgid "Mbit/s" -msgstr "Мбит/с" - -msgid "Memory" -msgstr "Память" - -msgid "Memory usage (%)" -msgstr "Использование памяти (%)" - -msgid "Metric" -msgstr "Метрика" - -msgid "Minimum hold time" -msgstr "Минимальное время удержания" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Отсутствует расширение протокола %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Режим" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Модем" - -msgid "Modem init timeout" -msgstr "Таймаут инициализации модема" - -# 802.11 monitor mode -msgid "Monitor" -msgstr "Монитор" - -msgid "Mount Entry" -msgstr "Точка монтирования" - -msgid "Mount Point" -msgstr "Точка монтирования" - -msgid "Mount Points" -msgstr "Точки монтирования" - -msgid "Mount Points - Mount Entry" -msgstr "Точки монтирования - Запись" - -msgid "Mount Points - Swap Entry" -msgstr "Точки монтирования - Запись подкачки" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Точки монтирования определяют, куда в файловой системе будет прикреплено " -"запоминающее устройство" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Опции монтирования" - -msgid "Mount point" -msgstr "Точка монтирования" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Смонтированные файловые системы" - -msgid "Move down" -msgstr "Переместить вниз" - -msgid "Move up" -msgstr "Переместить вверх" - -msgid "Multicast address" -msgstr "Адрес групповой передачи" - -msgid "NAS ID" -msgstr "Идентификатор NAS" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Список NTP-серверов" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Имя" - -msgid "Name of the new interface" -msgstr "Имя нового интерфейса" - -msgid "Name of the new network" -msgstr "Имя новой сети" - -msgid "Navigation" -msgstr "Навигация" - -msgid "Netmask" -msgstr "Маска сети" - -msgid "Network" -msgstr "Сеть" - -msgid "Network Utilities" -msgstr "Сетевые утилиты" - -msgid "Network boot image" -msgstr "Образ системы для сетевой загрузки" - -msgid "Network without interfaces." -msgstr "Сеть без интерфейсов." - -msgid "Next »" -msgstr "Следующий »" - -msgid "No DHCP Server configured for this interface" -msgstr "DHCP-сервер не настроен для этого интерфейса" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Нет цепочек в этой таблице" - -msgid "No files found" -msgstr "Файлы не найдены" - -msgid "No information available" -msgstr "Нет доступной информации" - -msgid "No negative cache" -msgstr "Отключить кэш отрицательных ответов" - -msgid "No network configured on this device" -msgstr "Не настроена сеть на устройстве" - -msgid "No network name specified" -msgstr "Не задано имя сети" - -msgid "No package lists available" -msgstr "Список пакетов не доступен" - -msgid "No password set!" -msgstr "Пароль не установлен!" - -msgid "No rules in this chain" -msgstr "Нет правил в данной цепочке" - -msgid "No zone assigned" -msgstr "Зона не присвоена" - -msgid "Noise" -msgstr "Шум" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Шум:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Нет" - -msgid "Normal" -msgstr "Нормально" - -msgid "Not Found" -msgstr "Не найдено" - -msgid "Not associated" -msgstr "Не связанный" - -msgid "Not connected" -msgstr "Не подключено" - -msgid "Note: Configuration files will be erased." -msgstr "Примечание: конфигурационные файлы будут стёрты." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Заметка" - -msgid "Nslookup" -msgstr "DNS-запрос" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Настройка OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "Задержка выключенного состояния" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"На этой странице вы можете настроить сетевые интерфейсы. Вы можете " -"объединить несколько интерфейсов в мост, выбрав опцию \"Объединить в мост\" " -"и введя список интерфейсов, разделенных пробелами. Вы также можете " -"использовать VLAN-" -"обозначения вида ИНТЕРФЕЙС.НОМЕРVLAN (напр.: eth0.1)." - -msgid "On-State Delay" -msgstr "Задержка включенного состояния" - -msgid "One of hostname or mac address must be specified!" -msgstr "Должен быть указан либо MAC-адрес, либо имя хоста!" - -msgid "One or more fields contain invalid values!" -msgstr "Одно или несколько полей содержат недопустимые значения!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Одно или несколько обязательных полей не заполнены!" - -msgid "Open list..." -msgstr "Открыть список..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Опция изменена" - -msgid "Option removed" -msgstr "Опция удалена" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Опции" - -msgid "Other:" -msgstr "Другие:" - -msgid "Out" -msgstr "Вне" - -msgid "Outbound:" -msgstr "Исходящий:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Назначить MAC-адрес" - -msgid "Override MTU" -msgstr "Назначить MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Назначить шлюз в ответах DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Переопределите сетевую маску, отправленную клиентам. Обычно это вычислено от " -"подсети, которая подана." - -msgid "Override the table used for internal routes" -msgstr "Назначить таблицу внутренних маршрутов" - -msgid "Overview" -msgstr "Обзор" - -msgid "Owner" -msgstr "Владелец" - -msgid "PAP/CHAP password" -msgstr "Пароль PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Имя пользователя PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Инкапсуляция PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPTP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Требуется пакет libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Список пакетов обновлялся более 24 часов назад" - -msgid "Package name" -msgstr "Имя пакета" - -msgid "Packets" -msgstr "Пакеты" - -msgid "Part of zone %q" -msgstr "Часть зоны %q" - -msgid "Password" -msgstr "Пароль" - -msgid "Password authentication" -msgstr "Аутентификация с помощью пароля" - -msgid "Password of Private Key" -msgstr "Пароль или закрытый ключ" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Пароль успешно изменён!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Путь к центру сертификации" - -msgid "Path to Client-Certificate" -msgstr "Путь к клиентскому сертификату" - -msgid "Path to Private Key" -msgstr "Путь к личному ключу" - -msgid "Path to executable which handles the button event" -msgstr "Путь к программе, обрабатывающей нажатие кнопки" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Пиковая:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Выполнить перезагрузку" - -msgid "Perform reset" -msgstr "Выполнить сброс" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Скорость:" - -msgid "Physical Settings" -msgstr "Настройки канала" - -msgid "Ping" -msgstr "Эхо-запрос" - -msgid "Pkts." -msgstr "Пакетов." - -msgid "Please enter your username and password." -msgstr "Пожалуйста, введите логин и пароль." - -msgid "Policy" -msgstr "Политика" - -msgid "Port" -msgstr "Порт" - -msgid "Port status:" -msgstr "Состояние порта:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Предполагать, что узел недоступен после указанного количества ошибок " -"получения эхо-пакета LCP, введите 0 для игнорирования ошибок" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Не позволяет клиентам обмениваться друг с другом информацией" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Беспроводной 802.11b контроллер Prism2/2.5/3" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Продолжить" - -msgid "Processes" -msgstr "Процессы" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Прот." - -msgid "Protocol" -msgstr "Протокол" - -msgid "Protocol family" -msgstr "Семейство протоколов" - -msgid "Protocol of the new interface" -msgstr "Протокол нового интерфейса" - -msgid "Protocol support is not installed" -msgstr "Поддержка протокола не установлена" - -msgid "Provide NTP server" -msgstr "Включить NTP-сервер" - -msgid "Provide new network" -msgstr "Предоставлять новую сеть" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Псевдо Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Качество" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Порог RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Скорость приёма" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "Беспроводной 802.11%s контроллер RaLink" - -msgid "Radius-Accounting-Port" -msgstr "Порт Radius-Accounting" - -msgid "Radius-Accounting-Secret" -msgstr "Секрет Radius-Accounting" - -msgid "Radius-Accounting-Server" -msgstr "Сервер Radius-Accounting" - -msgid "Radius-Authentication-Port" -msgstr "Порт Radius-Authentication" - -msgid "Radius-Authentication-Secret" -msgstr "Секрет Radius-Authentication" - -msgid "Radius-Authentication-Server" -msgstr "Сервер Radius-Authentication" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Читать /etc/ethers для настройки DHCP-сервера" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Действительно удалить этот интерфейс? Удаление не может быть отменено!\\nВы " -"можете потерять доступ к этому устройству, если вы подключены через этот " -"интерфейс." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Действительно удалить эту беспроводную сеть? Удаление не может быть отменено!" -"\\nВы можете потерять доступ к этому устройству, если вы подключены через " -"эту сеть." - -msgid "Really reset all changes?" -msgstr "Действительно сбросить все изменения?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Действительно выключить сеть?\\nВы можете потерять доступ к этому " -"устройству, если вы подключены через этот интерфейс." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Действительно отключить интерфейс \"%s\" ?\\nВы можете потерять доступ к " -"этому устройству, если вы подключены через этот интерфейс." - -msgid "Really switch protocol?" -msgstr "Вы действительно хотите изменить протокол?" - -msgid "Realtime Connections" -msgstr "Соединения в реальном времени" - -msgid "Realtime Graphs" -msgstr "Графики в реальном времени" - -msgid "Realtime Load" -msgstr "Загрузка в реальном времени" - -msgid "Realtime Traffic" -msgstr "Трафик в реальном времени" - -msgid "Realtime Wireless" -msgstr "Беспроводная сеть в реальном времени" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Защита от DNS Rebinding" - -msgid "Reboot" -msgstr "Перезагрузка" - -msgid "Rebooting..." -msgstr "Перезагрузка..." - -msgid "Reboots the operating system of your device" -msgstr "Перезагрузить операционную систему вашего устройства" - -msgid "Receive" -msgstr "Приём" - -msgid "Receiver Antenna" -msgstr "Приёмная антенна" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Переподключить этот интерфейс" - -msgid "Reconnecting interface" -msgstr "Интерфейс переподключается" - -# References to firewall chains -msgid "References" -msgstr "Ссылки" - -msgid "Relay" -msgstr "Ретранслятор" - -msgid "Relay Bridge" -msgstr "Мост-ретранслятор" - -msgid "Relay between networks" -msgstr "Ретранслятор между сетями" - -msgid "Relay bridge" -msgstr "Мост-ретранслятор" - -msgid "Remote IPv4 address" -msgstr "Удалённый IPv4-адрес" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Удалить" - -msgid "Repeat scan" -msgstr "Повторить сканирование" - -msgid "Replace entry" -msgstr "Заменить запись" - -msgid "Replace wireless configuration" -msgstr "Заменить беспроводную конфигурацию" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Требуется для некоторых интернет-провайдеров" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Сбросить" - -msgid "Reset Counters" -msgstr "Сбросить счётчики" - -msgid "Reset to defaults" -msgstr "Сбросить на значения по умолчанию" - -msgid "Resolv and Hosts Files" -msgstr "Файлы resolv и hosts" - -msgid "Resolve file" -msgstr "Файл resolv" - -msgid "Restart" -msgstr "Перезапустить" - -msgid "Restart Firewall" -msgstr "Перезапустить межсетевой экран" - -msgid "Restore backup" -msgstr "Восстановить резервную копию" - -msgid "Reveal/hide password" -msgstr "Показать/скрыть пароль" - -msgid "Revert" -msgstr "Вернуть" - -msgid "Root" -msgstr "Корень" - -msgid "Root directory for files served via TFTP" -msgstr "Корневая директория для TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Пароль маршрутизатора" - -msgid "Routes" -msgstr "Маршруты" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Маршрутизация служит для определения через какой интерфейс и шлюз можно " -"достичть определённого хоста или сети." - -msgid "Run a filesystem check before mounting the device" -msgstr "Проверять файловую систему перед монтированием устройства" - -msgid "Run filesystem check" -msgstr "Проверять файловую систему" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Доступ по SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH-ключи" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Сохранить" - -msgid "Save & Apply" -msgstr "Сохранить и применить" - -msgid "Save & Apply" -msgstr "Сохранить и применить" - -msgid "Scan" -msgstr "Сканировать" - -msgid "Scheduled Tasks" -msgstr "Запланированные задания" - -msgid "Section added" -msgstr "Секция добавлена" - -msgid "Section removed" -msgstr "Секция удалена" - -msgid "See \"mount\" manpage for details" -msgstr "Для подробной информации обратитесь к справке по \"mount\" (man mount)" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Отправлять эхо-пакеты LCP с указанным интервалом (секунды), эффективно " -"только в сочетании с порогом ошибок" - -msgid "Separate Clients" -msgstr "Разделять клиентов" - -msgid "Server Settings" -msgstr "Настройки сервера" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Имя службы" - -msgid "Service Type" -msgstr "Тип службы" - -msgid "Services" -msgstr "Сервисы" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Настроить синхронизацию времени" - -msgid "Setup DHCP Server" -msgstr "Настроить сервер DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "Показать текущий список файлов резервной копии" - -msgid "Shutdown this interface" -msgstr "Выключить этот интерфейс" - -msgid "Shutdown this network" -msgstr "Выключить эту сеть" - -msgid "Signal" -msgstr "Сигнал" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Сигнал:" - -msgid "Size" -msgstr "Размер" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Пропустить" - -msgid "Skip to content" -msgstr "Перейти к содержимому" - -msgid "Skip to navigation" -msgstr "Перейти к навигации" - -msgid "Slot time" -msgstr "Время слота" - -msgid "Software" -msgstr "Программное обеспечение" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Некоторые значения полей недопустимы, невозможно сохранить информацию!" - -msgid "Sorry, the object you requested was not found." -msgstr "Извините, запрошенный объект не был найден." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Извините, сервер столкнулся с неожиданной ошибкой." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"К сожалению, автоматическое обновление не поддерживается, новая прошивка " -"должна быть установлена вручную. Обратитесь к вики для получения конкретных " -"инструкций для вашего устройства." - -msgid "Sort" -msgstr "Сортировка" - -msgid "Source" -msgstr "Источник" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Состояние кнопки, которое необходимо обработать" - -msgid "Specifies the directory the device is attached to" -msgstr "Директория, к которой присоединено устройство" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Порт данного процесса Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Максимальное количество неудачных запросов ARP, после которого узлы " -"считаются отключенными" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Максимальное количество секунд, после которого узлы считаются отключенными" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Укажите закрытый ключ." - -msgid "Start" -msgstr "Запустить" - -msgid "Start priority" -msgstr "Приоритет" - -msgid "Startup" -msgstr "Загрузка" - -msgid "Static IPv4 Routes" -msgstr "Статические маршруты IPv4" - -msgid "Static IPv6 Routes" -msgstr "Статические маршруты IPv6" - -msgid "Static Leases" -msgstr "Постоянные аренды" - -msgid "Static Routes" -msgstr "Статические маршруты" - -msgid "Static address" -msgstr "Статический адрес" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Постоянная аренда используется для присвоения фиксированных IP-адресов и " -"имён DHCP-клиентам. Постоянная аренда также необходима для статических " -"интерфейсов, в которых обслуживаются только клиенты с присвоенными адресами." - -msgid "Status" -msgstr "Статус" - -msgid "Stop" -msgstr "Остановить" - -msgid "Strict order" -msgstr "Строгий порядок" - -msgid "Submit" -msgstr "Применить" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Раздел подкачки" - -msgid "Switch" -msgstr "Коммутатор" - -msgid "Switch %q" -msgstr "Коммутатор %q" - -msgid "Switch %q (%s)" -msgstr "Коммутатор %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Изменить протокол" - -msgid "Sync with browser" -msgstr "Синхронизировать с браузером" - -msgid "Synchronizing..." -msgstr "Синхронизация..." - -msgid "System" -msgstr "Система" - -msgid "System Log" -msgstr "Системный журнал" - -msgid "System Properties" -msgstr "Свойства системы" - -msgid "System log buffer size" -msgstr "Размер системного журнала" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Настройки TFTP" - -msgid "TFTP server root" -msgstr "Корень TFTP-сервера" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Скорость передачи" - -msgid "Table" -msgstr "Таблица" - -msgid "Target" -msgstr "Цель" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Завершить" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Раздел Конфигурация устройства содержит физические настройки " -"беспроводного оборудования, такие как канал, мощность передатчика или выбор " -"антенны, которые являются общими для всех определённых беспроводных сетей " -"(если оборудование поддерживает несколько SSID). Настройки отдельных сетей, " -"такие как шифрование или режим работы, сгруппированы в разделе " -"Конфигурация интерфейса." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Пакет libiwinfo-lua не установлен. Для включения настроек " -"беспроводных сетей, вам необходимо установить этот компонент!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Назначенный провайдеру префикс IPv6, обычно заканчивается на ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Допустимые символы: A-Z, a-z, 0-9 и " -"_" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Устройство или раздел (напр. /dev/" -"sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Формат файловой системы (напр. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Образ загружен. Пожалуйста, сравните размер файла и контрольную сумму, чтобы " -"удостовериться в целостности данных.
    Нажмите \"Продолжить\", чтобы " -"начать процедуру обновления прошивки." - -msgid "The following changes have been committed" -msgstr "Данные изменения были применены" - -msgid "The following changes have been reverted" -msgstr "Данные изменения были отвергнуты" - -msgid "The following rules are currently active on this system." -msgstr "На данном устройстве активны следующие правила." - -msgid "The given network name is not unique" -msgstr "Заданное имя сети не является уникальным" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Оборудование не поддерживает несколько SSID, и, если вы продолжите, " -"существующая конфигурация будет заменена." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Длина префикса IPv4 в битах, оставшееся будет использоваться в IPv6-адресах." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Длина префикса IPv6 в битах" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Сетевые порты этого устройства могут быть объединены в несколько VLANов, в которых компьютеры могут " -"связываться напрямую между собой. VLANы часто используются для разделения нескольких сетевых " -"сегментов. Обычно по умолчанию используется один восходящий порт для " -"подключения к высшей рангом сети, например к интернету или к другим портам " -"локальной сети." - -msgid "The selected protocol needs a device assigned" -msgstr "Для выбранного протокола необходимо задать устройство" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Идёт удаление раздела конфигурации с последующей перезагрузкой сиситемы." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Система обновляется.
    НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!
    Подождите " -"несколько минут перед тем, как попытаетесь заново соединиться. В зависимости " -"от ваших настроек, возможно вам понадобится обновить адрес вашего " -"компьютера, чтобы снова получить доступ к устройству." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Загруженный файл образа не поддерживается. Пожалуйста, проверьте, что вы " -"загрузили правильный образ для вашей платформы." - -msgid "There are no active leases." -msgstr "Нет активных арендованных адресов." - -msgid "There are no pending changes to apply!" -msgstr "Нет изменений, которые можно применить!" - -msgid "There are no pending changes to revert!" -msgstr "Нет изменений, которые можно отменить!" - -msgid "There are no pending changes!" -msgstr "Нет изменений, которые можно применить!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Устройство не назначено. Пожалуйста, назначьте сетевое устройство во вкладке " -"\"Настройки канала\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Пароль пользователя root не установлен. Пожалуйста, установите пароль, чтобы " -"защитить веб-интерфейс и включить SSH." - -msgid "This IPv4 address of the relay" -msgstr "IPv4-адрес ретранслятора" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Это список шаблонов для соответствия файлов и директорий для сохранения при " -"использовании sysupgrade. Изменённые файлы в /etc/config и некоторые другие " -"конфигурации автоматически сохраняются." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Это содержимое /etc/rc.local. Вы можете добавить свои команды (перед 'exit " -"0'), чтобы выполнить их в конце загрузки." - -# Maybe it usually ends with ::2? -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"Это локальный адрес, назначенный туннельным брокером, обычно заканчивается " -"на :2" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Это единственный DHCP-сервер в локальной сети" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Это таблица cron (crontab), в которой вы можете определить запланированные " -"задания." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "Это адрес ближайшей точки присутствия туннельного брокера" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "Данный список содержит работающие процессы и их статус." - -msgid "This page allows the configuration of custom button actions" -msgstr "Данная страница позволяет настроить обработку кнопок" - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Данная страница содержит обзор всех активных на данный момент сетевых " -"соединений." - -msgid "This section contains no values yet" -msgstr "Эта секция пока не содержит значений" - -msgid "Time Synchronization" -msgstr "Синхронизация времени" - -msgid "Time Synchronization is not configured yet." -msgstr "Синхронизация времени ещё не настроена." - -msgid "Timezone" -msgstr "Часовой пояс" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Чтобы восстановить файлы конфигурации, вы можете загрузить ранее созданный " -"архив здесь." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Всего доступно" - -msgid "Traceroute" -msgstr "Трассировка" - -msgid "Traffic" -msgstr "Трафик" - -msgid "Transfer" -msgstr "Передача" - -msgid "Transmission Rate" -msgstr "Скорость передачи" - -msgid "Transmit" -msgstr "Передача" - -msgid "Transmit Power" -msgstr "Мощность передатчика" - -msgid "Transmitter Antenna" -msgstr "Передающая антенна" - -msgid "Trigger" -msgstr "Триггер" - -msgid "Trigger Mode" -msgstr "Режим срабатывания" - -msgid "Tunnel ID" -msgstr "Идентификатор туннеля" - -msgid "Tunnel Interface" -msgstr "Интерфейс туннеля" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Мощность передатчика" - -msgid "Type" -msgstr "Тип" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Только UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB-устройство" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Невозможно обработать запрос для" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Неизвестно" - -msgid "Unknown Error, password not changed!" -msgstr "Неизвестная ошибка, пароль не был изменен!" - -msgid "Unmanaged" -msgstr "Неуправляемый" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Непринятые изменения" - -msgid "Unsupported protocol type." -msgstr "Неподдерживаемый тип протокола." - -msgid "Update lists" -msgstr "Обновить списки" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Загрузите sysupgrade-совместимый образ, чтобы заменить текущую прошивку. " -"Установите флажок \"Сохранить настройки\", чтобы сохранить текущую " -"конфигурацию (требуется совместимый образ прошивки)." - -msgid "Upload archive..." -msgstr "Загрузить архив..." - -msgid "Uploaded File" -msgstr "Загруженный файл" - -msgid "Uptime" -msgstr "Время работы" - -msgid "Use /etc/ethers" -msgstr "Использовать /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Использовать шлюз DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Использовать объявляемые узлом DNS-серверы" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Использовать коды стран ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "Использовать MTU на интерфейсе туннеля" - -msgid "Use TTL on tunnel interface" -msgstr "Использовать TTL на интерфейсе туннеля" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Использовать широковещательный флаг" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Использовать собственные DNS-серверы" - -msgid "Use default gateway" -msgstr "Использовать шлюз по умолчанию" - -msgid "Use gateway metric" -msgstr "Использовать метрику шлюза" - -msgid "Use routing table" -msgstr "Использовать таблицу маршрутизации" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Нажмите кнопку Добавить, чтобы добавить новую запись аренды. " -"MAC-адрес идентифицирует хост, IPv4-адрес указывает " -"фиксированный адрес, а Имя хоста присваивается в качестве " -"символьного имени для запрашивающего хоста." - -msgid "Used" -msgstr "Использовано" - -msgid "Used Key Slot" -msgstr "Используемый слот ключа" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Имя пользователя" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANы на %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANы на %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Сервер VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" -"Класс производителя (Vendor class), который отправлять при DHCP-запросах" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Проверить" - -msgid "Version" -msgstr "Версия" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Открытая система WEP" - -msgid "WEP Shared Key" -msgstr "Общий ключ WEP" - -msgid "WEP passphrase" -msgstr "Пароль WEP" - -msgid "WMM Mode" -msgstr "Режим WMM" - -msgid "WPA passphrase" -msgstr "Пароль WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Необходимо установить wpa_supplicant (режим клиента) или hostapd (режим " -"точки доступа или ad-hoc) для поддержки шифрования WPA." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "Ожидание применения изменений..." - -msgid "Waiting for command to complete..." -msgstr "Ожидание завершения выполнения команды..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Внимание" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Wi-Fi" - -msgid "Wireless Adapter" -msgstr "Беспроводной адаптер" - -msgid "Wireless Network" -msgstr "Беспроводная сеть" - -msgid "Wireless Overview" -msgstr "Обзор беспроводных сетей" - -msgid "Wireless Security" -msgstr "Безопасность беспроводной сети" - -msgid "Wireless is disabled or not associated" -msgstr "Беспроводная сеть отключена или не связана " - -msgid "Wireless is restarting..." -msgstr "Беспроводная сеть перезапускается..." - -msgid "Wireless network is disabled" -msgstr "Беспроводная сеть отключена" - -msgid "Wireless network is enabled" -msgstr "Беспроводная сеть включена" - -msgid "Wireless restarted" -msgstr "Беспроводная сеть перезапущена" - -msgid "Wireless shut down" -msgstr "Выключение беспроводной сети" - -msgid "Write received DNS requests to syslog" -msgstr "Записывать полученные DNS-запросы в системный журнал" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Здесь вы можете включить или выключить установленные скрипты инициализации. " -"Изменения вступят в силу после перезагрузки устройства.
    Внимание: если вы выключите один из основных скриптов инициализации " -"(например \"network\"), ваше устройство может оказаться недоступным!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Вам необходимо включить JavaScript в вашем браузере для корректной работы " -"LuCI." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "любой" - -msgid "auto" -msgstr "авто" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "соед. мостом" - -msgid "create:" -msgstr "создать:" - -msgid "creates a bridge over specified interface(s)" -msgstr "создаёт мост для выбранных сетевых интерфейсов" - -msgid "dB" -msgstr "дБ" - -msgid "dBm" -msgstr "дБм" - -msgid "disable" -msgstr "выключено" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "истекло" - -# убил бы -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"файл, где хранятся арендованные DHCP-адреса" - -msgid "forward" -msgstr "перенаправить" - -msgid "full-duplex" -msgstr "полный дуплекс" - -msgid "half-duplex" -msgstr "полудуплекс" - -msgid "help" -msgstr "помощь" - -msgid "hidden" -msgstr "скрытый" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "если сеть" - -msgid "input" -msgstr "ввод" - -msgid "kB" -msgstr "кБ" - -msgid "kB/s" -msgstr "кБ/с" - -msgid "kbit/s" -msgstr "кбит/с" - -msgid "local DNS file" -msgstr "локальный DNS-файл" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "нет" - -msgid "no link" -msgstr "нет соединения" - -msgid "none" -msgstr "ничего" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "выключено" - -msgid "on" -msgstr "включено" - -msgid "open" -msgstr "открытая" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "маршрутизируемый" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "с тегом" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "неизвестный" - -msgid "unlimited" -msgstr "неограниченный" - -msgid "unspecified" -msgstr "не определено" - -msgid "unspecified -or- create:" -msgstr "не определено -или- создать:" - -msgid "untagged" -msgstr "без тега" - -msgid "yes" -msgstr "да" - -msgid "« Back" -msgstr "« Назад" - -#~ msgid "Leasetime" -#~ msgstr "Время аренды" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "статический" - -#~ msgid "AR Support" -#~ msgstr "Поддержка AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Беспроводной 802.11%s контроллер Atheros" - -#~ msgid "Background Scan" -#~ msgstr "Фоновое сканирование" - -#~ msgid "Compression" -#~ msgstr "Сжатие" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Отключить таймер HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Не посылать тестовые ответы" - -#~ msgid "Fast Frames" -#~ msgstr "Быстрые кадры" - -#~ msgid "Maximum Rate" -#~ msgstr "Максимальная скорость" - -#~ msgid "Minimum Rate" -#~ msgstr "Минимальная скорость" - -#~ msgid "Multicast Rate" -#~ msgstr "Скорость групповой передачи" - -#~ msgid "Outdoor Channels" -#~ msgstr "Внешние каналы" - -#~ msgid "Regulatory Domain" -#~ msgstr "Нормативная зона" - -#~ msgid "Separate WDS" -#~ msgstr "Отдельный WDS" - -#~ msgid "Static WDS" -#~ msgstr "Статический WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Турбо-режим" - -#~ msgid "XR Support" -#~ msgstr "Поддержка XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "" -#~ "Если вы не выберите эту опцию, то будет создана дополнительная сеть." - -#~ msgid "Join Network: Settings" -#~ msgstr "Подключение к сети: настройки" - -#~ msgid "CPU" -#~ msgstr "ЦП" - -#~ msgid "Port %d" -#~ msgstr "Порт %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Порт %d нетегирован в нескольких VLANах!" - -#~ msgid "VLAN Interface" -#~ msgstr "Интерфейс VLAN" diff --git a/package/luci/modules/luci-base/po/sk/base.po b/package/luci/modules/luci-base/po/sk/base.po deleted file mode 100644 index 82fd38949b..0000000000 --- a/package/luci/modules/luci-base/po/sk/base.po +++ /dev/null @@ -1,3748 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "" - -msgid "(%s available)" -msgstr "" - -msgid "(empty)" -msgstr "" - -msgid "(no interfaces attached)" -msgstr "" - -msgid "-- Additional Field --" -msgstr "" - -msgid "-- Please choose --" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "" - -msgid "15 Minute Load:" -msgstr "" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "DNS query port" -msgstr "" - -msgid "DNS server port" -msgstr "" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-Gateway" -msgstr "" - -msgid "IPv4-Netmask" -msgstr "" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" - -msgid "IPv6-Gateway" -msgstr "" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "" - -msgid "LED Name" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Actions" -msgstr "" - -msgid "Activate this network" -msgstr "" - -msgid "Active IPv4-Routes" -msgstr "" - -msgid "Active IPv6-Routes" -msgstr "" - -msgid "Active Connections" -msgstr "" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "" - -msgid "Additional Hosts files" -msgstr "" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" - -msgid "Allow all except listed" -msgstr "" - -msgid "Allow listed only" -msgstr "" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "" - -msgid "Antenna 2" -msgstr "" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "" - -msgid "Apply" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "" - -msgid "Authorization Required" -msgstr "" - -msgid "Auto Refresh" -msgstr "" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "Available packages" -msgstr "" - -msgid "Average:" -msgstr "" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Back to Overview" -msgstr "" - -msgid "Back to configuration" -msgstr "" - -msgid "Back to overview" -msgstr "" - -msgid "Back to scan results" -msgstr "" - -msgid "Backup / Flash Firmware" -msgstr "" - -msgid "Backup / Restore" -msgstr "" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "" - -msgid "Bridge interfaces" -msgstr "" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "Changes" -msgstr "" - -msgid "Changes applied." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check" -msgstr "" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Common Configuration" -msgstr "" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Configuration applied." -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Confirmation" -msgstr "" - -msgid "Connect" -msgstr "" - -msgid "Connected" -msgstr "" - -msgid "Connection Limit" -msgstr "" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" - -msgid "DHCP Leases" -msgstr "" - -msgid "DHCP Server" -msgstr "" - -msgid "DHCP and DNS" -msgstr "" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "" - -msgid "DHCPv6 Leases" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Delete this network" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Design" -msgstr "" - -msgid "Destination" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Device Configuration" -msgstr "" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "" - -msgid "Distance to farthest network member in meters." -msgstr "" - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Download and install package" -msgstr "" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable STP" -msgstr "" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "" - -msgid "Ethernet Switch" -msgstr "" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Filter" -msgstr "" - -msgid "Filter private" -msgstr "" - -msgid "Filter useless" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "" - -msgid "Firewall Status" -msgstr "" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 WAN Status" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "" - -msgid "Ignore resolve file" -msgstr "" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface is shutting down..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interface reconnected" -msgstr "" - -msgid "Interface shut down" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "" - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "" - -msgid "Logout" -msgstr "" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "" - -msgid "MAC-Filter" -msgstr "" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory usage (%)" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Minimum hold time" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "OPKG-Configuration" -msgstr "" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Owner" -msgstr "" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "" - -msgid "Packets" -msgstr "" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Password authentication" -msgstr "" - -msgid "Password of Private Key" -msgstr "" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "Reconnecting interface" -msgstr "" - -msgid "References" -msgstr "" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "" - -msgid "Reset Counters" -msgstr "" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "" - -msgid "Restore backup" -msgstr "" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Scan" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Shutdown this network" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "" - -msgid "Skip to navigation" -msgstr "" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "" - -msgid "Source" -msgstr "" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start priority" -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "" - -msgid "Static IPv6 Routes" -msgstr "" - -msgid "Static Leases" -msgstr "" - -msgid "Static Routes" -msgstr "" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "" - -msgid "Submit" -msgstr "" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "" - -msgid "System Log" -msgstr "" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no pending changes to apply!" -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "" - -msgid "Transfer" -msgstr "" - -msgid "Transmission Rate" -msgstr "" - -msgid "Transmit" -msgstr "" - -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" -msgstr "" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Use /etc/ethers" -msgstr "" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "WDS" -msgstr "" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "" - -msgid "Wireless Network" -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Wireless Security" -msgstr "" - -msgid "Wireless is disabled or not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Wireless restarted" -msgstr "" - -msgid "Wireless shut down" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "" diff --git a/package/luci/modules/luci-base/po/sv/base.po b/package/luci/modules/luci-base/po/sv/base.po deleted file mode 100644 index 3360ccb230..0000000000 --- a/package/luci/modules/luci-base/po/sv/base.po +++ /dev/null @@ -1,3781 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-28 09:22+0200\n" -"Last-Translator: Kristoffer Grundström \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s är inte taggad i flera VLAN!" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d minut-fönster, %d sekundintervall)" - -msgid "(%s available)" -msgstr "(%s tillgängligt)" - -msgid "(empty)" -msgstr "(tomt)" - -msgid "(no interfaces attached)" -msgstr "(inga gränssnitt har bifogats)" - -msgid "-- Additional Field --" -msgstr "-- Ytterligare fält --" - -msgid "-- Please choose --" -msgstr "-- Vänligen välj --" - -msgid "-- custom --" -msgstr "-- anpassad --" - -msgid "-- match by device --" -msgstr "-- matcha enligt enhet --" - -msgid "-- match by label --" -msgstr "-- matcha enligt märke --" - -msgid "-- match by uuid --" -msgstr "-- matcha enligt uuid --" - -msgid "1 Minute Load:" -msgstr "Belastning senaste minuten:" - -msgid "15 Minute Load:" -msgstr "Belastning senaste 15 minutrarna:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Belastning senaste 5 minutrarna:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "802.11r Snabb förvandling" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "" - -msgid "DNS server port" -msgstr "DNSserver-port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-adress" - -# I don't think "Gateway" is commonly translated. -msgid "IPv4-Gateway" -msgstr "IPv4-gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-nätmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-adress eller nätverk " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED-konfiguration" - -msgid "LED Name" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    Notera att: du måste starta om cron-tjänsten om crontab-filen var tom " -"innan den ändrades." - -msgid "A43C + J43 + A43" -msgstr "A43C + J43 + A43" - -msgid "A43C + J43 + A43 + V43" -msgstr "A43C + J43 + A43 + V43" - -msgid "ADSL" -msgstr "ADSL" - -msgid "AICCU (SIXXS)" -msgstr "AICCU (SIXXS)" - -msgid "ANSI T1.413" -msgstr "ANSI T1.413" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM-bryggor" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "AYIYA" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "Accesspunkt" - -msgid "Action" -msgstr "Åtgärd" - -msgid "Actions" -msgstr "Åtgärder" - -msgid "Activate this network" -msgstr "Aktivera det här nätverket" - -msgid "Active IPv4-Routes" -msgstr "Aktiva IPv4-rutter" - -msgid "Active IPv6-Routes" -msgstr "Aktiva IPv6-rutter" - -msgid "Active Connections" -msgstr "Aktiva anslutningar" - -msgid "Active DHCP Leases" -msgstr "Aktiva DHCP-kontrakt" - -msgid "Active DHCPv6 Leases" -msgstr "Aktiva DHCPv6-kontrakt" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Lägg till" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "Lägg till ett nytt gränssnitt" - -msgid "Additional Hosts files" -msgstr "Ytterligare värdfiler" - -msgid "Additional servers file" -msgstr "Ytterligare server-filer" - -msgid "Address" -msgstr "Adress" - -msgid "Address to access local relay bridge" -msgstr "Adress för att komma åt lokal reläbrygga" - -msgid "Administration" -msgstr "Administration" - -msgid "Advanced Settings" -msgstr "Avancerade inställningar" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Varning" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" -"Allokera IP-adresser sekventiellt med start från den lägsta möjliga adressen" - -msgid "Allocate IP sequentially" -msgstr "Allokera IP sekventiellt" - -msgid "Allow SSH password authentication" -msgstr "Tillåt SSH lösenordsautentisering" - -msgid "Allow all except listed" -msgstr "Tillåt alla utom listade" - -msgid "Allow listed only" -msgstr "Tillåt enbart listade" - -msgid "Allow localhost" -msgstr "Tillåt localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Tillåt fjärrstyrda värdar att ansluta via SSH till lokalt vidarebefordrade " -"portar" - -msgid "Allow root logins with password" -msgstr "Tillåt root-inloggningar med lösenord" - -msgid "Allow the root user to login with password" -msgstr "Tillåt root-användaren att logga in med lösenord" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "Tillåtna IP-adresser" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "Aviserade DNS-domäner" - -msgid "Announced DNS servers" -msgstr "Aviserade DNS-servrar" - -msgid "Anonymous Identity" -msgstr "Anonym identitet" - -msgid "Anonymous Mount" -msgstr "Anonym montering" - -msgid "Anonymous Swap" -msgstr "Anonym Swap" - -msgid "Antenna 1" -msgstr "Antenn 1" - -msgid "Antenna 2" -msgstr "Antenn 2" - -msgid "Antenna Configuration" -msgstr "Konfiguration av antenn" - -msgid "Any zone" -msgstr "Någon zon" - -msgid "Apply" -msgstr "Verkställ" - -msgid "Applying changes" -msgstr "Verkställer ändringar" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Tilldela gränssnitten..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Associerade stationer" - -msgid "Auth Group" -msgstr "Autentiseringsgrupp" - -msgid "Authentication" -msgstr "Autentisering" - -msgid "Authentication Type" -msgstr "Typ av autentisering" - -msgid "Authoritative" -msgstr "Auktoritiv" - -msgid "Authorization Required" -msgstr "Tillstånd krävs" - -msgid "Auto Refresh" -msgstr "Uppdatera automatiskt" - -msgid "Automatic" -msgstr "Automatisk" - -msgid "Automatic Homenet (HNCP)" -msgstr "Automatiskt hemnet (HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "Kolla efter fel i filsystemet automatiskt innan det monteras" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "Monstera filsystem automatiskt" - -msgid "Automount Swap" -msgstr "Montera Swap automatiskt" - -msgid "Available" -msgstr "Tillgänglig" - -msgid "Available packages" -msgstr "Tillgängliga paket" - -msgid "Average:" -msgstr "Snitt:" - -msgid "B43 + B43C" -msgstr "B43 + B43C" - -msgid "B43 + B43C + V43" -msgstr "B43 + B43C + V43" - -msgid "BR / DMR / AFTR" -msgstr "BR / DMR / AFTR" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Bakåt" - -msgid "Back to Overview" -msgstr "Backa till Överblick" - -msgid "Back to configuration" -msgstr "Backa till konfiguration" - -msgid "Back to overview" -msgstr "Backa till överblick" - -msgid "Back to scan results" -msgstr "Backa till skanningsresultat" - -msgid "Backup / Flash Firmware" -msgstr "Säkerhetskopiera / Flasha inre mjukvara" - -msgid "Backup / Restore" -msgstr "Säkerhetskopiera / Återställ" - -msgid "Backup file list" -msgstr "Säkerhetskopiera fillista" - -msgid "Bad address specified!" -msgstr "Fel adress angiven!" - -msgid "Band" -msgstr "Band" - -msgid "Behind NAT" -msgstr "Bakom NAT" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "Bind gränssnitt" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bithastighet" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "Brygga" - -msgid "Bridge interfaces" -msgstr "Brygga gränssnitt" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s Trådlös kontroller" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 Trådlös kontroller" - -msgid "Buffered" -msgstr "Buffrad" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Knappar" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" -"CA-certifikat; om tom så kommer den att sparas efter första anslutningen." - -msgid "CPU usage (%)" -msgstr "CPU-användning (%)" - -msgid "Cancel" -msgstr "Avbryt" - -msgid "Category" -msgstr "Kategori" - -msgid "Chain" -msgstr "Kedja" - -msgid "Changes" -msgstr "Ändringar" - -msgid "Changes applied." -msgstr "Tillämpade ändringar" - -msgid "Changes the administrator password for accessing the device" -msgstr "Ändrar administratörens lösenord för att få tillgång till enheten" - -msgid "Channel" -msgstr "Kanal" - -msgid "Check" -msgstr "Kontrollera" - -msgid "Check fileystems before mount" -msgstr "Kontrollera filsystemen innan de monteras" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" -"Bocka för det här alternativet för att ta bort befintliga nätverk från den " -"här radion." - -msgid "Checksum" -msgstr "Checksumma" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "Chiffer" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Client" -msgstr "Klient" - -msgid "Client ID to send when requesting DHCP" -msgstr "Klient-ID att skicka vid DHCP-förfrågning" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "Stäng ner lista..." - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "Command" -msgstr "Kommando" - -msgid "Common Configuration" -msgstr "Vanlig konfiguration" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Configuration applied." -msgstr "Konfigurationen tillämpades" - -msgid "Configuration files will be kept." -msgstr "Konfigurationsfiler kommer att behållas." - -msgid "Confirmation" -msgstr "Bekräftelse" - -msgid "Connect" -msgstr "Anslut" - -msgid "Connected" -msgstr "Ansluten" - -msgid "Connection Limit" -msgstr "Anslutningsgräns" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Anslutningar" - -msgid "Country" -msgstr "Land" - -msgid "Country Code" -msgstr "Landskod" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "" - -msgid "Create Interface" -msgstr "Skapa gränssnitt" - -msgid "Create a bridge over multiple interfaces" -msgstr "Skapa en brygga över flera gränssnitt" - -msgid "Critical" -msgstr "Kritisk" - -msgid "Cron Log Level" -msgstr "Loggnivå för Cron" - -msgid "Custom Interface" -msgstr "Anpassat gränssnitt" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "Anpassade flöden" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" - -msgid "DHCP Leases" -msgstr "DHCP-kontrakt" - -msgid "DHCP Server" -msgstr "DHCP-server" - -msgid "DHCP and DNS" -msgstr "DHCP och DNS" - -msgid "DHCP client" -msgstr "DHCP-klient" - -msgid "DHCP-Options" -msgstr "DHCP-alternativ" - -msgid "DHCPv6 Leases" -msgstr "DHCPv6-kontrakt" - -msgid "DHCPv6 client" -msgstr "DHCPv6-klient" - -msgid "DHCPv6-Mode" -msgstr "DHCPv6-läge" - -msgid "DHCPv6-Service" -msgstr "DHCPv6-tjänst" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "DSL-status" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "Datahastighet" - -msgid "Debug" -msgstr "Avlusa" - -msgid "Default %d" -msgstr "Standard %d" - -msgid "Default gateway" -msgstr "Standard gateway" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "Standardrutt" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "Ange ett namn för det här nätverket." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Radera" - -msgid "Delete this network" -msgstr "Ta bort det här nätverket" - -msgid "Description" -msgstr "Beskrivning" - -msgid "Design" -msgstr "" - -msgid "Destination" -msgstr "Plats" - -msgid "Device" -msgstr "Enhet" - -msgid "Device Configuration" -msgstr "Enhetskonfiguration" - -msgid "Device is rebooting..." -msgstr "Enheten startar om..." - -msgid "Device unreachable" -msgstr "Enheten kan inte nås" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "Slå nummer" - -msgid "Directory" -msgstr "Mapp" - -msgid "Disable" -msgstr "Inaktivera" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Inaktivera DHCP " -"för det här gränssnittet." - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "Inaktivera kryptering" - -msgid "Disabled" -msgstr "Inaktiverad" - -msgid "Disabled (default)" -msgstr "Inaktiverad (standard)" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Avståndsoptimering" - -msgid "Distance to farthest network member in meters." -msgstr "Avstånd till nätverksmledlemmen längst bort i metrar." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Mångfald" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Cachea inte negativa svar, t.ex för icke-existerade domäner" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Vidarebefordra inte förfrågningar som inte kan ta emot svar från publika " -"namnservrar" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domän krävs" - -msgid "Domain whitelist" -msgstr "Vitlista för domäner" - -msgid "Don't Fragment" -msgstr "Fragmentera inte" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Vidarebefordra inte DNS-" -"förfrågningar utan DNS-namn" - -msgid "Download and install package" -msgstr "Ladda ner och installera paket" - -msgid "Download backup" -msgstr "Ladda ner säkerhetskopia" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear-instans" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "Dynamisk tunnel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-metod" - -msgid "Edit" -msgstr "Redigera" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Redigera det här gränssnittet" - -msgid "Edit this network" -msgstr "Redigera det här nätverket" - -msgid "Emergency" -msgstr "Nödsituation" - -msgid "Enable" -msgstr "Aktivera" - -msgid "Enable STP" -msgstr "Aktivera STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "Aktivera NTP-klient" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Aktivera TFTP-server" - -msgid "Enable VLAN functionality" -msgstr "Aktivera VLAN-funktionalitet" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Aktivera WPS-tryckknapp, kräver WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "Kräver ominstallation av nyckel (KRACK) motåtgärder" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Aktivera den här monteringen" - -msgid "Enable this swap" -msgstr "Aktivera den här swap" - -msgid "Enable/Disable" -msgstr "Aktivera/Inaktivera" - -msgid "Enabled" -msgstr "Aktiverad" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "Kryptering" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Raderar..." - -msgid "Error" -msgstr "Fel" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet-adapter" - -msgid "Ethernet Switch" -msgstr "" - -msgid "Exclude interfaces" -msgstr "Inkludera inte dessa gränssnitt" - -msgid "Expand hosts" -msgstr "Expandera värdar" - -msgid "Expires" -msgstr "Löper ut" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "Externt" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "Extra alternativ för SSH-kommandot" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Fil" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Filsystem" - -msgid "Filter" -msgstr "Filtrera" - -msgid "Filter private" -msgstr "Filtrera privata" - -msgid "Filter useless" -msgstr "Filtrera icke-användbara" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Hitta och anslut till nätverk" - -msgid "Find package" -msgstr "Hitta paket" - -msgid "Finish" -msgstr "Avsluta" - -msgid "Firewall" -msgstr "Brandvägg" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Inställningar för brandvägg" - -msgid "Firewall Status" -msgstr "Status för brandvägg" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Version för inre mjukvara" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "Skriver..." - -msgid "Force" -msgstr "Tvinga" - -msgid "Force CCMP (AES)" -msgstr "Tvinga CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Tvinga DHCP på det här nätverket även om en annan server är upptäckt." - -msgid "Force TKIP" -msgstr "Tvinga TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Tvinga TKIP och CCMP (AES)" - -msgid "Force link" -msgstr "Tvinga länk" - -msgid "Force use of NAT-T" -msgstr "Tvinga användning av NAT-T" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Vidarebefordra DHCP-trafik" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Vidarebefordringsläge" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "Fritt" - -msgid "Free space" -msgstr "Fritt utrymme" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Endast GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway ports" -msgstr "Gateway-portar" - -msgid "General Settings" -msgstr "Generella inställningar" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "Generella alternativ för opkg" - -msgid "Generate Config" -msgstr "Generera konfig" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Generera arkiv" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Angiven lösenordsbekräftelse matchade inte, lösenordet ändrades inte!" - -msgid "Global Settings" -msgstr "Globala inställningar" - -msgid "Global network options" -msgstr "Globala nätverksalternativ" - -msgid "Go to password configuration..." -msgstr "Gå till lösenordskonfiguration..." - -msgid "Go to relevant configuration page" -msgstr "Gå till relevant konfigurationssida" - -msgid "Group Password" -msgstr "Grupplösenord" - -msgid "Guest" -msgstr "Gäst" - -msgid "HE.net password" -msgstr "HE.net-lösenord" - -msgid "HE.net username" -msgstr "HE.net-användarnamn" - -msgid "HT mode (802.11n)" -msgstr "HT-läge (802.11n)" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "Lägg på" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "Hjärtslag" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "Göm ESSID" - -msgid "Host" -msgstr "Värd" - -msgid "Host entries" -msgstr "" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Host-IP eller Nätverk" - -msgid "Hostname" -msgstr "Värdnamn" - -msgid "Hostname to send when requesting DHCP" -msgstr "Värdnamn att skicka vid DHCP-förfrågningar" - -msgid "Hostnames" -msgstr "Värdnamn" - -msgid "Hybrid" -msgstr "Hybrid" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "IP-adresser" - -msgid "IP address" -msgstr "IP-adress" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4-brandvägg" - -msgid "IPv4 WAN Status" -msgstr "" - -msgid "IPv4 address" -msgstr "IPv4-adress" - -msgid "IPv4 and IPv6" -msgstr "IPv4 och IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "IPv4-gateway" - -msgid "IPv4 netmask" -msgstr "IPv4-nätmask" - -msgid "IPv4 only" -msgstr "Endast IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-Adress" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4-i-IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6-brandvägg" - -msgid "IPv6 Neighbours" -msgstr "IPV6-grannar" - -msgid "IPv6 Settings" -msgstr "IPv6-inställningar" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "" - -msgid "IPv6 address" -msgstr "IPv6-adress" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6-gateway" - -msgid "IPv6 only" -msgstr "Endast IPv6" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-adress" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-i-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-över-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-över-IPv4 (6till4)" - -msgid "Identity" -msgstr "Identitet" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "Ignorera /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorera gränssnitt" - -msgid "Ignore resolve file" -msgstr "Ignorera resolv-fil" - -msgid "Image" -msgstr "Bild" - -msgid "In" -msgstr "I" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "Ankommande" - -msgid "Info" -msgstr "Info" - -msgid "Initscript" -msgstr "Initskript" - -msgid "Initscripts" -msgstr "Initskripten" - -msgid "Install" -msgstr "Installera" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "Installera iputils-traceroute6 för IPv6-traceroute" - -msgid "Install package %q" -msgstr "Installera paketet %q" - -msgid "Install protocol extensions..." -msgstr "Installera protokoll-förlängningar..." - -msgid "Installed packages" -msgstr "Installerade paket" - -msgid "Interface" -msgstr "Gränssnitt" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Konfiguration av gränssnitt" - -msgid "Interface Overview" -msgstr "Överblick av gränssnitt" - -msgid "Interface is reconnecting..." -msgstr "Gränssnittet återansluter..." - -msgid "Interface is shutting down..." -msgstr "Gränssnittet stänger ner..." - -msgid "Interface name" -msgstr "Gränssnittets namn" - -msgid "Interface not present or not connected yet." -msgstr "Gränssnittet är inte närvarande eller är inte anslutet än." - -msgid "Interface reconnected" -msgstr "Gränssnittet återanslöt" - -msgid "Interface shut down" -msgstr "Gränssnittet stängdes ner" - -msgid "Interfaces" -msgstr "Gränssnitten" - -msgid "Internal" -msgstr "Interna" - -msgid "Internal Server Error" -msgstr "Internt server-fel" - -msgid "Invalid" -msgstr "Ogiltig" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Ogiltigt användarnamn och/eller lösenord! Vänligen försök igen." - -msgid "Isolate Clients" -msgstr "Isolera klienter" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "JavaScript krävs!" - -msgid "Join Network" -msgstr "Anslut till nätverk" - -msgid "Join Network: Wireless Scan" -msgstr "Anslut till nätverk: Trådlös skanning" - -msgid "Joining Network: %q" -msgstr "Ansluter till nätverk: %q" - -msgid "Keep settings" -msgstr "Behåll inställningar" - -msgid "Kernel Log" -msgstr "Kernel-logg" - -msgid "Kernel Version" -msgstr "Kernel-version" - -msgid "Key" -msgstr "Nyckel" - -msgid "Key #%d" -msgstr "Nyckel #%d" - -msgid "Kill" -msgstr "Döda" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP-server" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Märke" - -msgid "Language" -msgstr "Språk" - -msgid "Language and Style" -msgstr "Språk och Stil" - -msgid "Latency" -msgstr "Latens" - -msgid "Leaf" -msgstr "Löv" - -msgid "Lease time" -msgstr "Kontraktstid" - -msgid "Lease validity time" -msgstr "Giltighetstid för kontrakt" - -msgid "Leasefile" -msgstr "Kontraktsfil" - -msgid "Leasetime remaining" -msgstr "Återstående kontraktstid" - -msgid "Leave empty to autodetect" -msgstr "Lämna tom för att upptäcka automatiskt" - -msgid "Leave empty to use the current WAN address" -msgstr "Lämna tom för att använda den nuvarande WAN-adressen" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "Begränsa" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Länk På" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "Lista över SSH-nyckelfiler för auth" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "Lyssningsportar" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Lyssna endast på det angivna gränssnittet eller, om o-specificerat på alla" - -msgid "Listening port for inbound DNS queries" -msgstr "Lyssningsportar för ankommande DNS-förfrågningar" - -msgid "Load" -msgstr "Belastning" - -msgid "Load Average" -msgstr "Snitt-belastning" - -msgid "Loading" -msgstr "Laddar" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Lokal IPv4-adress" - -msgid "Local IPv6 address" -msgstr "Lokal IPv6-adress" - -msgid "Local Service Only" -msgstr "Enbart lokal tjänst" - -msgid "Local Startup" -msgstr "Lokal uppstart" - -msgid "Local Time" -msgstr "Lokal tid" - -msgid "Local domain" -msgstr "Lokal domän" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "Lokal server" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Lokalisera förfrågningar" - -msgid "Locked to channel %s used by: %s" -msgstr "Låst till kanalen %s som används av: %s" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Logga in" - -msgid "Logout" -msgstr "Logga ut" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-adress" - -msgid "MAC-Address Filter" -msgstr "Filter för MAC-adress" - -msgid "MAC-Filter" -msgstr "MAC-filter" - -msgid "MAC-List" -msgstr "MAC-lista" - -msgid "MAP / LW4over6" -msgstr "MAP / LW4över6" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "Manuell" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Minne" - -msgid "Memory usage (%)" -msgstr "Minnesanvändning (%)" - -msgid "Metric" -msgstr "Metrisk" - -msgid "Minimum hold time" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Läge" - -msgid "Model" -msgstr "Modell" - -msgid "Modem device" -msgstr "Modem-enhet" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Övervaka" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Monteringspunkt" - -msgid "Mount Points" -msgstr "Monteringspunkter" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Monteringsalternativ" - -msgid "Mount point" -msgstr "Monteringspunkt" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Monterade filsystem" - -msgid "Move down" -msgstr "Flytta ner" - -msgid "Move up" -msgstr "Flytta upp" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "NAS-ID" - -msgid "NAT-T Mode" -msgstr "NAT-T-läge" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "NCM" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "NT-domän" - -msgid "NTP server candidates" -msgstr "NTP-serverkandidater" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Namn" - -msgid "Name of the new interface" -msgstr "Namn på det nya gränssnittet" - -msgid "Name of the new network" -msgstr "Namnet på det nya nätverket" - -msgid "Navigation" -msgstr "Navigering" - -msgid "Netmask" -msgstr "Nätmask" - -msgid "Network" -msgstr "Nätverk" - -msgid "Network Utilities" -msgstr "Nätverksverktyg" - -msgid "Network boot image" -msgstr "Uppstartsbild för nätverket" - -msgid "Network without interfaces." -msgstr "Nätverk utan gränssnitt" - -msgid "Next »" -msgstr "Nästa »" - -msgid "No DHCP Server configured for this interface" -msgstr "Det finns ingen DHCP-server inställd för det här gränssnittet" - -msgid "No NAT-T" -msgstr "Ingen NAT-T" - -msgid "No chains in this table" -msgstr "Inga kedjor i den här tabellen" - -msgid "No files found" -msgstr "Inga filer hittades" - -msgid "No information available" -msgstr "Ingen information tillgänglig" - -msgid "No negative cache" -msgstr "Ingen negativ cache" - -msgid "No network configured on this device" -msgstr "Det finns inget nätverk inställt på den här enheten" - -msgid "No network name specified" -msgstr "Inget nätverksnamn angavs" - -msgid "No package lists available" -msgstr "Ingen paketlista tillgänglig" - -msgid "No password set!" -msgstr "Inget lösenord inställt!" - -msgid "No rules in this chain" -msgstr "Inga regler i den här kedjan" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "Buller" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Buller:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Ingen" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Hittades inte" - -msgid "Not associated" -msgstr "Inte associerad" - -msgid "Not connected" -msgstr "Inte ansluten" - -msgid "Note: Configuration files will be erased." -msgstr "Notera: Konfigurationsfiler kommer att raderas." - -msgid "Note: interface name length" -msgstr "Notera: längden på gränssnittets namn" - -msgid "Notice" -msgstr "Avisering" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "En utav värdnamn eller MAC-adress måste anges!" - -msgid "One or more fields contain invalid values!" -msgstr "En eller fler fält innehåller ogiltiga värden!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "En eller fler fält som krävs har inget värde!" - -msgid "Open list..." -msgstr "Öppna lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "OpenConnect (CISCO AnyConnect)" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Alternativet ändrades" - -msgid "Option removed" -msgstr "Alternativet togs bort" - -msgid "Optional" -msgstr "Valfri" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Alternativ" - -msgid "Other:" -msgstr "Andra:" - -msgid "Out" -msgstr "Ut" - -msgid "Outbound:" -msgstr "Utgående" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Överblick" - -msgid "Owner" -msgstr "Ägare" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP-lösenord" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP-användarnamn" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN-kod" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Paketet libiwinfo krävs!" - -msgid "Package lists are older than 24 hours" -msgstr "Paket-listor är äldre än 24 timmar" - -msgid "Package name" -msgstr "Paketnamn" - -msgid "Packets" -msgstr "Paket" - -msgid "Part of zone %q" -msgstr "Del av zon %q" - -msgid "Password" -msgstr "Lösenord" - -msgid "Password authentication" -msgstr "Lösenordsautentisering" - -msgid "Password of Private Key" -msgstr "Den privata nyckelns lösenord" - -msgid "Password of inner Private Key" -msgstr "Lösenordet för den inre privata nyckeln" - -msgid "Password successfully changed!" -msgstr "Ändring av lösenordet lyckades!" - -msgid "Password2" -msgstr "Lösenord2" - -msgid "Path to CA-Certificate" -msgstr "Genväg till CA-certifikat" - -msgid "Path to Client-Certificate" -msgstr "Genväg till klient-certifikat" - -msgid "Path to Private Key" -msgstr "Genväg till privat nyckel" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "Genväg till det inre CA-certifikatet" - -msgid "Path to inner Client-Certificate" -msgstr "Genväg till det inre klient-certifikatet" - -msgid "Path to inner Private Key" -msgstr "Genväg till den inre privata nyckeln" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Utför omstart" - -msgid "Perform reset" -msgstr "Utför återställning" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Fysiska inställningar" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pkt." - -msgid "Please enter your username and password." -msgstr "Vänligen ange ditt användarnamn och lösenord." - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Port-status:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "Föredra LTE" - -msgid "Prefer UMTS" -msgstr "Föredra UMTS" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "Förhindra lyssning på dessa gränssnitt." - -msgid "Prevents client-to-client communication" -msgstr "Förhindrar kommunikation klient-till-klient" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "Privat nyckel" - -msgid "Proceed" -msgstr "Fortsätt" - -msgid "Processes" -msgstr "Processer" - -msgid "Profile" -msgstr "Profil" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Protocol family" -msgstr "Protokoll-familj" - -msgid "Protocol of the new interface" -msgstr "Det nya gränssnittets protokoll" - -msgid "Protocol support is not installed" -msgstr "Stöd för protokoll är inte installerat" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "Publik nyckel" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "QMI-telefoni" - -msgid "Quality" -msgstr "Kvalité" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "RT" - -msgid "RX Rate" -msgstr "RX-hastighet" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Läs /etc/ethers för att ställa in DHCP-servern" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "Verkligen återställa alla ändringar?" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "Verkligen byta protokoll?" - -msgid "Realtime Connections" -msgstr "Anslutningar i realtid" - -msgid "Realtime Graphs" -msgstr "Realtidsgrafer" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "Trafik i realtid" - -msgid "Realtime Wireless" -msgstr "Trådlöst i realtid" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Starta om" - -msgid "Rebooting..." -msgstr "Startar om..." - -msgid "Reboots the operating system of your device" -msgstr "Startar om din enhets operativsystem" - -msgid "Receive" -msgstr "Ta emot" - -msgid "Receiver Antenna" -msgstr "Mottagningsantenn" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "Rekommenderad. WireGuard-gränssnittets IP-adress" - -msgid "Reconnect this interface" -msgstr "Återanslut det här gränssnittet" - -msgid "Reconnecting interface" -msgstr "Återansluter gränssnittet" - -msgid "References" -msgstr "Referens" - -msgid "Relay" -msgstr "Relä" - -msgid "Relay Bridge" -msgstr "Relä-brygga" - -msgid "Relay between networks" -msgstr "Relä mellan nätverk" - -msgid "Relay bridge" -msgstr "Relä-brygga" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Ta bort" - -msgid "Repeat scan" -msgstr "Repetera skanning" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "Ersätt trådlös konfiguration" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "Kräv TLS" - -msgid "Required" -msgstr "Krävs!" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Återställ" - -msgid "Reset Counters" -msgstr "Återställ räknare" - -msgid "Reset to defaults" -msgstr "Återställ till standard" - -msgid "Resolv and Hosts Files" -msgstr "Resolv och Värd-filer" - -msgid "Resolve file" -msgstr "Resolv-fil" - -msgid "Restart" -msgstr "Starta om" - -msgid "Restart Firewall" -msgstr "Starta om brandvägg" - -msgid "Restore backup" -msgstr "Återställ säkerhetskopian" - -msgid "Reveal/hide password" -msgstr "Visa/göm lösenord" - -msgid "Revert" -msgstr "Återgå" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Root-mappen för filer som skickas via TFTP" - -msgid "Root preparation" -msgstr "Root-förberedelse" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "Typ av rutt" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Router-lösenord" - -msgid "Routes" -msgstr "Rutter" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "Kör en filsystemskontroll innan enheten monteras" - -msgid "Run filesystem check" -msgstr "Kör filsystemskontrollen" - -msgid "SHA256" -msgstr "SHA256" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "SSH-åtkomst" - -msgid "SSH server address" -msgstr "SSH-serverns adress" - -msgid "SSH server port" -msgstr "SSH-serverns port" - -msgid "SSH username" -msgstr "Användarnamn för SSH" - -msgid "SSH-Keys" -msgstr "SSH-nycklar" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Spara" - -msgid "Save & Apply" -msgstr "Spara och Verkställ" - -msgid "Save & Apply" -msgstr "Spara & Verkställ" - -msgid "Scan" -msgstr "Skanna" - -msgid "Scheduled Tasks" -msgstr "Schemalagda uppgifter" - -msgid "Section added" -msgstr "Sektionen lades till" - -msgid "Section removed" -msgstr "Sektionen togs bort" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Separera klienter" - -msgid "Server Settings" -msgstr "Inställningar för server" - -msgid "Server password" -msgstr "Lösenordet för servern" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "Användarnamnet för servern" - -msgid "Service Name" -msgstr "Namn på tjänst" - -msgid "Service Type" -msgstr "Typ av tjänst" - -msgid "Services" -msgstr "Tjänster" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "Ställ in Tidssynkronisering" - -msgid "Setup DHCP Server" -msgstr "Ställ in DHCP-server" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "Stäng ner det här gränssnittet" - -msgid "Shutdown this network" -msgstr "Stäng ner det här nätverket" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Signal:" - -msgid "Size" -msgstr "Storlek" - -msgid "Size (.ipk)" -msgstr "Storlek (.ipk)" - -msgid "Skip" -msgstr "Hoppa över" - -msgid "Skip to content" -msgstr "Hoppa över till innehåll" - -msgid "Skip to navigation" -msgstr "Hoppa över till navigering" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Mjukvara" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Några fält är ogiltiga, kan inte spara värden!" - -msgid "Sorry, the object you requested was not found." -msgstr "Tyvärr, objektet som du frågade efter kunde inte hittas." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Tyvärr, servern stötte på ett oväntat fel." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "Sortera" - -msgid "Source" -msgstr "Källa" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Anger lyssningsporten för den här Dropbear-instansen" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "Ange en TaT (Typ av Tjänst)." - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Ange den hemliga krypteringsnyckeln här." - -msgid "Start" -msgstr "" - -msgid "Start priority" -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Statiska IPv4-rutter" - -msgid "Static IPv6 Routes" -msgstr "Statiska IPv6-rutter" - -msgid "Static Leases" -msgstr "" - -msgid "Static Routes" -msgstr "Statiska rutter" - -msgid "Static address" -msgstr "Statiska adresser" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "Strikt sortering" - -msgid "Submit" -msgstr "Skicka in" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "Swap" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Byt" - -msgid "Switch %q" -msgstr "Byt %q" - -msgid "Switch %q (%s)" -msgstr "Byt %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "Byt VLAN" - -msgid "Switch protocol" -msgstr "Byt protokoll" - -msgid "Sync with browser" -msgstr "Synkronisera med webbläsare" - -msgid "Synchronizing..." -msgstr "Synkroniserar..." - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "Systemlogg" - -msgid "System Properties" -msgstr "Systemets egenskaper" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Inställningar för TFTP" - -msgid "TFTP server root" -msgstr "Root för TFTP-server" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "TX-hastighet" - -msgid "Table" -msgstr "Tabell" - -msgid "Target" -msgstr "Mål" - -msgid "Target network" -msgstr "Målnätverk" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "Följande ändringar har skickats in" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "Det angivna nätverksnamnet är inte unikt" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "Det finns inga aktiva kontrakt." - -msgid "There are no pending changes to apply!" -msgstr "Det finns inga pendlande ändringar att verkställa!" - -msgid "There are no pending changes to revert!" -msgstr "Det finns inga pendlande ändringar att återkalla" - -msgid "There are no pending changes!" -msgstr "Det finns inga pendlande ändringar!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Det finns inget lösenord inställt på den här routern. Vänligen ställ in ett " -"root-lösenord för att skydda webbgränssnittet och för att aktivera SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time Synchronization" -msgstr "Synkronisering av tid" - -msgid "Time Synchronization is not configured yet." -msgstr "Synkronisering av tid är inte inställd än." - -msgid "Timezone" -msgstr "Tidszon" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"För att återställa konfigurationsfiler så kan du ladda upp ett tidigare " -"genererat säkerhetskopierings arkiv här." - -msgid "Tone" -msgstr "Ton" - -msgid "Total Available" -msgstr "Totalt tillgängligt" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Trafik" - -msgid "Transfer" -msgstr "Överför" - -msgid "Transmission Rate" -msgstr "Överföringshastighet" - -msgid "Transmit" -msgstr "Överför" - -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" -msgstr "" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "Tunnel-ID" - -msgid "Tunnel Interface" -msgstr "Tunnelgränssnitt" - -msgid "Tunnel Link" -msgstr "Tunnel-länk" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "Tunnel-typ" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Typ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Endast UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB-enhet" - -msgid "USB Ports" -msgstr "USB-portar" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Det går inte att skicka" - -msgid "Unavailable Seconds (UAS)" -msgstr "Otillgängliga Sekunder (UAS)" - -msgid "Unknown" -msgstr "Okänd" - -msgid "Unknown Error, password not changed!" -msgstr "Okänt fel, lösenordet ändrades inte!" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "Avmontera" - -msgid "Unsaved Changes" -msgstr "Osparade ändringar" - -msgid "Unsupported protocol type." -msgstr "Protokolltypen stöds inte." - -msgid "Update lists" -msgstr "Uppdatera listor" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "Ladda upp arkiv..." - -msgid "Uploaded File" -msgstr "Laddade upp fil" - -msgid "Uptime" -msgstr "Upptid" - -msgid "Use /etc/ethers" -msgstr "Använd /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Använd DHCP-gateway" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "Använd som root-filsystem (/)" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Använd anpassade DNS-servrar" - -msgid "Use default gateway" -msgstr "Använd standard-gateway" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "Användarcertifikat (PEM-krypterad)" - -msgid "User key (PEM encoded)" -msgstr "Användarnyckel (PEM-krypterad)" - -msgid "Username" -msgstr "Användarnamn" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "Lokal adress för VPN" - -msgid "VPN Local port" -msgstr "Lokal port för VPN" - -msgid "VPN Server" -msgstr "VPN-server" - -msgid "VPN Server port" -msgstr "Port för VPN-server" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "Tillverkare" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "Utförlig" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Verkställ" - -msgid "Version" -msgstr "Version" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Öppet System WEP" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "WEP-lösenordsfras" - -msgid "WMM Mode" -msgstr "WMM-läge" - -msgid "WPA passphrase" -msgstr "WPA-lösenordsfras" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "Väntar på att ändringarna ska tillämpas..." - -msgid "Waiting for command to complete..." -msgstr "Väntar på att kommandot ska avsluta..." - -msgid "Waiting for device..." -msgstr "Väntar på enheten..." - -msgid "Warning" -msgstr "Varning" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" -"Varning: Det finns osparade ändringar som kommer att förloras vid omstart!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "Bredd" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Trådlöst" - -msgid "Wireless Adapter" -msgstr "Trådlös adapter" - -msgid "Wireless Network" -msgstr "Trådlöst nätverk" - -msgid "Wireless Overview" -msgstr "Trådlös överblick" - -msgid "Wireless Security" -msgstr "Trådlös säkerhet" - -msgid "Wireless is disabled or not associated" -msgstr "Trådlöst är avstängt eller inte associerat" - -msgid "Wireless is restarting..." -msgstr "Trådlöst startar om..." - -msgid "Wireless network is disabled" -msgstr "Trådlöst nätverk är avstängt" - -msgid "Wireless network is enabled" -msgstr "Trådlöst nätverk är aktiverat" - -msgid "Wireless restarted" -msgstr "Trådlöst startade om" - -msgid "Wireless shut down" -msgstr "Trådlöst stängde ner" - -msgid "Write received DNS requests to syslog" -msgstr "Skriv mottagna DNS-förfrågningar till syslogg" - -msgid "Write system log to file" -msgstr "Skriv systemlogg till fil" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Du måste aktivera JavaScript i din webbläsare, annars kommer inte LuCi att " -"fungera korrekt." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"Din Internet Explorer är för gammal för att visa den här sidan korrekt. " -"Vänligen uppgradera den till minst version 7 eller använd en annan " -"webbläsare till exempel Firefox, Opera eller Safari." - -msgid "any" -msgstr "något" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "bryggad" - -msgid "create:" -msgstr "skapa:" - -msgid "creates a bridge over specified interface(s)" -msgstr "skapar en brygga över angivna gränssnitt(en)" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "stäng ner" - -msgid "disabled" -msgstr "avstängd" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "vidarebefordra" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "halv-duplex" - -msgid "help" -msgstr "hjälp" - -msgid "hidden" -msgstr "gömd" - -msgid "hybrid mode" -msgstr "hybrid-läge" - -msgid "if target is a network" -msgstr "om målet är ett nätverk" - -msgid "input" -msgstr "inmatning" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "lokal DNS-fil" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "minuter" - -msgid "no" -msgstr "nej" - -msgid "no link" -msgstr "ingen länk" - -msgid "none" -msgstr "" - -msgid "not present" -msgstr "inte tillgängligt" - -msgid "off" -msgstr "av" - -msgid "on" -msgstr "på" - -msgid "open" -msgstr "öppen" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "relä-läge" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "server-läge" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "taggad" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "okänd" - -msgid "unlimited" -msgstr "obegränsat" - -msgid "unspecified" -msgstr "ospecifierat" - -msgid "unspecified -or- create:" -msgstr "ospecifierat -eller- skapa:" - -msgid "untagged" -msgstr "otaggat" - -msgid "yes" -msgstr "ja" - -msgid "« Back" -msgstr "« Bakåt" diff --git a/package/luci/modules/luci-base/po/templates/base.pot b/package/luci/modules/luci-base/po/templates/base.pot deleted file mode 100644 index 1c21925fcd..0000000000 --- a/package/luci/modules/luci-base/po/templates/base.pot +++ /dev/null @@ -1,3741 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "" - -msgid "(%s available)" -msgstr "" - -msgid "(empty)" -msgstr "" - -msgid "(no interfaces attached)" -msgstr "" - -msgid "-- Additional Field --" -msgstr "" - -msgid "-- Please choose --" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "" - -msgid "15 Minute Load:" -msgstr "" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "DNS query port" -msgstr "" - -msgid "DNS server port" -msgstr "" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-Gateway" -msgstr "" - -msgid "IPv4-Netmask" -msgstr "" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" - -msgid "IPv6-Gateway" -msgstr "" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "" - -msgid "LED Name" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "" - -msgid "Action" -msgstr "" - -msgid "Actions" -msgstr "" - -msgid "Activate this network" -msgstr "" - -msgid "Active IPv4-Routes" -msgstr "" - -msgid "Active IPv6-Routes" -msgstr "" - -msgid "Active Connections" -msgstr "" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "" - -msgid "Additional Hosts files" -msgstr "" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" - -msgid "Allow all except listed" -msgstr "" - -msgid "Allow listed only" -msgstr "" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "" - -msgid "Antenna 2" -msgstr "" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "" - -msgid "Apply" -msgstr "" - -msgid "Applying changes" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "" - -msgid "Authorization Required" -msgstr "" - -msgid "Auto Refresh" -msgstr "" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "Available packages" -msgstr "" - -msgid "Average:" -msgstr "" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Back to Overview" -msgstr "" - -msgid "Back to configuration" -msgstr "" - -msgid "Back to overview" -msgstr "" - -msgid "Back to scan results" -msgstr "" - -msgid "Backup / Flash Firmware" -msgstr "" - -msgid "Backup / Restore" -msgstr "" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "" - -msgid "Bridge interfaces" -msgstr "" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "Changes" -msgstr "" - -msgid "Changes applied." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check" -msgstr "" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Common Configuration" -msgstr "" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Configuration applied." -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Confirmation" -msgstr "" - -msgid "Connect" -msgstr "" - -msgid "Connected" -msgstr "" - -msgid "Connection Limit" -msgstr "" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" - -msgid "DHCP Leases" -msgstr "" - -msgid "DHCP Server" -msgstr "" - -msgid "DHCP and DNS" -msgstr "" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "" - -msgid "DHCPv6 Leases" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Delete this network" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Design" -msgstr "" - -msgid "Destination" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Device Configuration" -msgstr "" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "" - -msgid "Distance to farthest network member in meters." -msgstr "" - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Download and install package" -msgstr "" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable STP" -msgstr "" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "" - -msgid "Ethernet Switch" -msgstr "" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Filter" -msgstr "" - -msgid "Filter private" -msgstr "" - -msgid "Filter useless" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "" - -msgid "Firewall Status" -msgstr "" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 WAN Status" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "" - -msgid "Ignore resolve file" -msgstr "" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface is shutting down..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interface reconnected" -msgstr "" - -msgid "Interface shut down" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "" - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "" - -msgid "Logout" -msgstr "" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "" - -msgid "MAC-Filter" -msgstr "" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory usage (%)" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Minimum hold time" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "OPKG-Configuration" -msgstr "" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Owner" -msgstr "" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "" - -msgid "Packets" -msgstr "" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Password authentication" -msgstr "" - -msgid "Password of Private Key" -msgstr "" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "Reconnecting interface" -msgstr "" - -msgid "References" -msgstr "" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "" - -msgid "Reset Counters" -msgstr "" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "" - -msgid "Restore backup" -msgstr "" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Scan" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Shutdown this network" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "" - -msgid "Skip to navigation" -msgstr "" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "" - -msgid "Source" -msgstr "" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start priority" -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "" - -msgid "Static IPv6 Routes" -msgstr "" - -msgid "Static Leases" -msgstr "" - -msgid "Static Routes" -msgstr "" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "" - -msgid "Submit" -msgstr "" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "" - -msgid "System Log" -msgstr "" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no pending changes to apply!" -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "" - -msgid "Transfer" -msgstr "" - -msgid "Transmission Rate" -msgstr "" - -msgid "Transmit" -msgstr "" - -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" -msgstr "" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Use /etc/ethers" -msgstr "" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "WDS" -msgstr "" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "" - -msgid "Wireless Network" -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Wireless Security" -msgstr "" - -msgid "Wireless is disabled or not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Wireless restarted" -msgstr "" - -msgid "Wireless shut down" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "" diff --git a/package/luci/modules/luci-base/po/tr/base.po b/package/luci/modules/luci-base/po/tr/base.po deleted file mode 100644 index 334ef00536..0000000000 --- a/package/luci/modules/luci-base/po/tr/base.po +++ /dev/null @@ -1,3772 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-11-25 14:47+0200\n" -"Last-Translator: qbilay \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d dakika gösteriliyor, %d saniye aralıklı)" - -msgid "(%s available)" -msgstr "(%s uygun)" - -msgid "(empty)" -msgstr "(boş)" - -msgid "(no interfaces attached)" -msgstr "(arayüz eklenmedi)" - -msgid "-- Additional Field --" -msgstr "-- Ek Alan--" - -msgid "-- Please choose --" -msgstr "-- Lütfen seçiniz --" - -msgid "-- custom --" -msgstr "-- özel --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1 Dakikalık Yük:" - -msgid "15 Minute Load:" -msgstr "15 Dakikalık Yük:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5 Dakikalık Yük:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr " BSSID " - -msgid "DNS query port" -msgstr "DNS port sorgula" - -msgid "DNS server port" -msgstr "DNS sunucu port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-Adres" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Address or Network " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Ayarları" - -msgid "LED Name" -msgstr "LED Adı" - -msgid "MAC-Address" -msgstr "MAC-Adresi" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Maks. DHCP leases" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Maks. EDNS0 paket boyutu" - -msgid "Max. concurrent queries" -msgstr "Maks. eşzamanlı sorgu" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP yenileme aralığı" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM Köprüleri" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "Erişim Noktası" - -msgid "Action" -msgstr "Eylem" - -msgid "Actions" -msgstr "Eylemler" - -msgid "Activate this network" -msgstr "Bu ağı etkinleştir" - -msgid "Active IPv4-Routes" -msgstr "" -"Aktif IPv4-Yönlendiriciler" - -msgid "Active IPv6-Routes" -msgstr "" -"Aktif IPv6-Yönlendiriciler" - -msgid "Active Connections" -msgstr "Aktif Bağlantılar" - -msgid "Active DHCP Leases" -msgstr "Aktif DHCP Kiraları" - -msgid "Active DHCPv6 Leases" -msgstr "Aktif DHCPv6 Kiraları" - -msgid "Ad-Hoc" -msgstr "" - -msgid "Add" -msgstr "Ekle" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "Yeni arabirim ekle..." - -msgid "Additional Hosts files" -msgstr "" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresler" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "" - -msgid "Advanced Settings" -msgstr "Gelişmiş Ayarlar" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Uyarı" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -# "Secure Shell" için ne kullanılabilinir bir fikrim yok. -msgid "Allow SSH password authentication" -msgstr "" -"SSH parola kimlik doğrulamasına izin ver" - -msgid "Allow all except listed" -msgstr "Listelenenlerin haricindekilere izin ver" - -msgid "Allow listed only" -msgstr "Yanlızca listelenenlere izin ver" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "1. Anten" - -msgid "Antenna 2" -msgstr "2. Anten" - -msgid "Antenna Configuration" -msgstr "Anten Yapılandırması" - -msgid "Any zone" -msgstr "" - -msgid "Apply" -msgstr "Uygula" - -msgid "Applying changes" -msgstr "Değişiklikleri uygula" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Arabirim ata..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Kimlik doğrulama" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Yetkilendirme" - -msgid "Authorization Required" -msgstr "Yetkilendirme Gerekli" - -msgid "Auto Refresh" -msgstr "Otomatik Yenileme" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Kullanılabilir" - -msgid "Available packages" -msgstr "Kullanılabilir Paketler" - -msgid "Average:" -msgstr "Ortalama:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "Geri" - -msgid "Back to Overview" -msgstr "Genel Bakışa dön" - -msgid "Back to configuration" -msgstr "Yapılandırmaya dön" - -msgid "Back to overview" -msgstr "Genel Bakışa dön" - -msgid "Back to scan results" -msgstr "Tarama sonuçlarına dön" - -msgid "Backup / Flash Firmware" -msgstr "" - -msgid "Backup / Restore" -msgstr "Yedekleme / Geri Yükleme" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "" - -msgid "Bridge interfaces" -msgstr "" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "Changes" -msgstr "" - -msgid "Changes applied." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check" -msgstr "" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Common Configuration" -msgstr "" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Configuration applied." -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Confirmation" -msgstr "" - -msgid "Connect" -msgstr "" - -msgid "Connected" -msgstr "" - -msgid "Connection Limit" -msgstr "" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" - -msgid "DHCP Leases" -msgstr "" - -msgid "DHCP Server" -msgstr "" - -msgid "DHCP and DNS" -msgstr "" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "" - -msgid "DHCPv6 Leases" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Delete this network" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Design" -msgstr "" - -msgid "Destination" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Device Configuration" -msgstr "" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "" - -msgid "Distance to farthest network member in meters." -msgstr "" - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Download and install package" -msgstr "" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable STP" -msgstr "" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "" - -msgid "Ethernet Switch" -msgstr "" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Filter" -msgstr "" - -msgid "Filter private" -msgstr "" - -msgid "Filter useless" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "" - -msgid "Firewall Status" -msgstr "" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 WAN Status" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "" - -msgid "Ignore resolve file" -msgstr "" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface is shutting down..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interface reconnected" -msgstr "" - -msgid "Interface shut down" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "" - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "" - -msgid "Logout" -msgstr "" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "" - -msgid "MAC-Filter" -msgstr "" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory usage (%)" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Minimum hold time" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "OPKG-Configuration" -msgstr "" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Owner" -msgstr "" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "" - -msgid "Packets" -msgstr "" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Password authentication" -msgstr "" - -msgid "Password of Private Key" -msgstr "" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "Reconnecting interface" -msgstr "" - -msgid "References" -msgstr "" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "" - -msgid "Reset Counters" -msgstr "" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "" - -msgid "Restore backup" -msgstr "" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Scan" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Shutdown this network" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "" - -msgid "Skip to navigation" -msgstr "" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "" - -msgid "Source" -msgstr "" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start priority" -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "" - -msgid "Static IPv6 Routes" -msgstr "" - -msgid "Static Leases" -msgstr "" - -msgid "Static Routes" -msgstr "" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "" - -msgid "Submit" -msgstr "" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "" - -msgid "System Log" -msgstr "" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no pending changes to apply!" -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "" - -msgid "Transfer" -msgstr "" - -msgid "Transmission Rate" -msgstr "" - -msgid "Transmit" -msgstr "" - -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" -msgstr "" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Use /etc/ethers" -msgstr "" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "WDS" -msgstr "" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "" - -msgid "Wireless Network" -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Wireless Security" -msgstr "" - -msgid "Wireless is disabled or not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Wireless restarted" -msgstr "" - -msgid "Wireless shut down" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"LuCI'nin düzgün çalışması için tarayıcınızda Java Scripti " -"etkinleştirmelisiniz." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "herhangi" - -msgid "auto" -msgstr "otomatik" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "köprülü" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "etkin değil" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "sona ermiş" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "ileri" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "yardım" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "eğer hedef ağsa" - -msgid "input" -msgstr "giriş" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "yerel DNS dosyası" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "hayır" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "hiçbiri" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "kapalı" - -msgid "on" -msgstr "açık" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "yönlendirildi" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "etiketlendi" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "sınırsız" - -msgid "unspecified" -msgstr "tanımsız" - -msgid "unspecified -or- create:" -msgstr "tanımsız -veya- oluşturun:" - -msgid "untagged" -msgstr "etiketsiz" - -msgid "yes" -msgstr "evet" - -msgid "« Back" -msgstr "« Geri" - -#~ msgid "AR Support" -#~ msgstr "AR Desteği" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s Kablosuz Denetleyicisi" - -#~ msgid "Background Scan" -#~ msgstr "Arka Planda Tarama" diff --git a/package/luci/modules/luci-base/po/uk/base.po b/package/luci/modules/luci-base/po/uk/base.po deleted file mode 100644 index de7259b5d4..0000000000 --- a/package/luci/modules/luci-base/po/uk/base.po +++ /dev/null @@ -1,4049 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-12-05 19:07+0200\n" -"Last-Translator: Dmitri <4glitch@gmail.com>\n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d-хвилинне вікно, %d-секундний інтервал)" - -msgid "(%s available)" -msgstr "(%s доступно)" - -msgid "(empty)" -msgstr "(пусто)" - -msgid "(no interfaces attached)" -msgstr "(нема приєднаних інтерфейсів)" - -msgid "-- Additional Field --" -msgstr "-- Додаткові поля --" - -msgid "-- Please choose --" -msgstr "-- Виберіть --" - -msgid "-- custom --" -msgstr "-- нетипово --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Навантаження за 1 хвилину:" - -msgid "15 Minute Load:" -msgstr "Навантаження за 15 хвилин:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Навантаження за 5 хвилин:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "" -"Порт DNS-" -"запиту" - -msgid "DNS server port" -msgstr "" -"Порт DNS-" -"сервера" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS-" -"сервери будуть опитані у порядку, визначеному файлом resolvfile" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-адреса" - -msgid "IPv4-Gateway" -msgstr "IPv4-шлюз" - -msgid "IPv4-Netmask" -msgstr "IPv4-маска" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-адреса або мережа " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-шлюз" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "" -"Настроювання LED" - -msgid "LED Name" -msgstr "Назва LED" - -msgid "MAC-Address" -msgstr "" -"MAC-адреса" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. оренд DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. розмір пакета EDNS0" - -msgid "Max. concurrent queries" -msgstr "Max. одночасних запитів" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" -"APN" - -msgid "ARP retry threshold" -msgstr "Поріг повтору ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM-мости" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" -"Ідентифікатор віртуального каналу ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" -"Ідентифікатор віртуального шляху ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM-мости виставляють інкапсульований Ethernet у з'єднаннях AAL5 як " -"віртуальні мережеві інтерфейси Linux, котрі можуть використовуватися в " -"поєднанні з DHCP або PPP для підключення до мережі провайдера." - -msgid "ATM device number" -msgstr "Номер ATM-пристрою" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "Концентратор доступу" - -msgid "Access Point" -msgstr "Точка доступу" - -msgid "Action" -msgstr "Дія" - -msgid "Actions" -msgstr "Дії" - -msgid "Activate this network" -msgstr "Активувати цю мережу" - -msgid "Active IPv4-Routes" -msgstr "IPv4-маршрути" - -msgid "Active IPv6-Routes" -msgstr "IPv6-маршрути" - -msgid "Active Connections" -msgstr "Активні підключення" - -msgid "Active DHCP Leases" -msgstr "Активні оренди DHCP" - -msgid "Active DHCPv6 Leases" -msgstr "Активні оренди DHCPv6" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Додати" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Додавати суфікс локального домену до імен, отриманих із файлів hosts" - -msgid "Add new interface..." -msgstr "Додати новий інтерфейс..." - -msgid "Additional Hosts files" -msgstr "Додаткові файли hosts" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Адреса" - -msgid "Address to access local relay bridge" -msgstr "Адреса для доступу до мосту локального ретранслятора" - -msgid "Administration" -msgstr "Адміністрування" - -msgid "Advanced Settings" -msgstr "Додаткові параметри" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Тривога" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Дозволити SSH-" -"перевірку пароля" - -msgid "Allow all except listed" -msgstr "Дозволити всі, крім зазначених" - -msgid "Allow listed only" -msgstr "Дозволити тільки зазначені" - -msgid "Allow localhost" -msgstr "Дозволити локальний вузол" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Дозволити віддаленим вузлам підключення до локальних SSH-спрямованих портів" - -msgid "Allow root logins with password" -msgstr "Дозволити root-вхід із паролем" - -msgid "Allow the root user to login with password" -msgstr "Дозволити користувачеві root вхід у систему з паролем" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Дозволити відповіді від клієнта на сервер у діапазоні 127.0.0.0/8, " -"наприклад, для RBL-послуг" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Антена 1" - -msgid "Antenna 2" -msgstr "Антена 2" - -msgid "Antenna Configuration" -msgstr "Конфигурація антени" - -msgid "Any zone" -msgstr "Будь-яка зона" - -msgid "Apply" -msgstr "Застосувати" - -msgid "Applying changes" -msgstr "Застосування змін" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Призначення інтерфейсів..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Приєднані станції" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Автентифікація" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Надійний" - -msgid "Authorization Required" -msgstr "Потрібна авторизація" - -msgid "Auto Refresh" -msgstr "Автоматичне оновлення" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Доступно" - -msgid "Available packages" -msgstr "Доступні пакети" - -msgid "Average:" -msgstr "Середнє значення:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Назад" - -msgid "Back to Overview" -msgstr "Повернутися до переліку" - -msgid "Back to configuration" -msgstr "Повернутися до конфігурації" - -msgid "Back to overview" -msgstr "Повернутися до переліку" - -msgid "Back to scan results" -msgstr "Повернутися до результатів сканування" - -msgid "Backup / Flash Firmware" -msgstr "Резервне копіювання / Оновлення прошивки" - -msgid "Backup / Restore" -msgstr "Резервне копіювання/відновлення" - -msgid "Backup file list" -msgstr "Список файлів резервних копій" - -msgid "Bad address specified!" -msgstr "Вказана неправильна адреса!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Нижче наведено визначений список файлів для резервного копіювання. Він " -"складається із позначених opkg змінених файлів конфігурації, невідокремних " -"базових файлів, та файлів за користувацькими шаблонами резервного копіювання." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Швидкість передачі даних" - -msgid "Bogus NX Domain Override" -msgstr "Відкидати підробки NX-домену" - -msgid "Bridge" -msgstr "Міст" - -msgid "Bridge interfaces" -msgstr "Об'єднати інтерфейси в міст" - -msgid "Bridge unit number" -msgstr "Номер моста" - -msgid "Bring up on boot" -msgstr "Піднімати при завантаженні" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Бездротовий 802.11%s контролер Broadcom" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Бездротовий 802.11 контролер Broadcom BCM%04x" - -msgid "Buffered" -msgstr "Буферизовано" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "Кнопки" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Завантаження ЦП, %" - -msgid "Cancel" -msgstr "Скасувати" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Ланцюжок" - -msgid "Changes" -msgstr "Зміни" - -msgid "Changes applied." -msgstr "Зміни застосовано." - -msgid "Changes the administrator password for accessing the device" -msgstr "Зміна пароля адміністратора для доступу до пристрою" - -msgid "Channel" -msgstr "Канал" - -msgid "Check" -msgstr "Перевірити" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Контрольна сума" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Оберіть зону брандмауера, яку ви хочете призначити на цей інтерфейс. " -"Виберіть не визначено, щоб видалити інтерфейс з відповідних зон, " -"або заповніть поле створити, щоб визначити нову зону і прикріпити " -"до неї інтерфейс." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Оберіть мережі, які ви хочете прикріпити до цього бездротового інтерфейсу " -"або заповніть поле створити, щоб визначити нову мережу." - -msgid "Cipher" -msgstr "Шифр" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"Натисніть кнопку \"Створити архів\", щоб завантажити tar-архів поточних " -"файлів конфігурації. Для відновлення прошивки до її початкового стану, " -"натисніть кнопку \"Відновити\" (можливе тільки з образами SquashFS)." - -msgid "Client" -msgstr "Клієнт" - -msgid "Client ID to send when requesting DHCP" -msgstr "Ідентифікатор клієнта для відправки при запиті DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Закривати неактивні з'єднання після певного інтервалу часу (секунди). Для " -"утримання неактивних з'єднань використовуйте 0" - -msgid "Close list..." -msgstr "Згорнути список..." - -msgid "Collecting data..." -msgstr "Збирання даних..." - -msgid "Command" -msgstr "Команда" - -msgid "Common Configuration" -msgstr "Загальна конфігурація" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Конфігурація" - -msgid "Configuration applied." -msgstr "Конфігурація застосована." - -msgid "Configuration files will be kept." -msgstr "Конфігураційні файли будуть збережені." - -msgid "Confirmation" -msgstr "Підтвердження" - -msgid "Connect" -msgstr "Підключити" - -msgid "Connected" -msgstr "Підключений" - -msgid "Connection Limit" -msgstr "Гранична кількість підключень" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "Підключення" - -msgid "Country" -msgstr "Країна" - -msgid "Country Code" -msgstr "Код країни" - -msgid "Cover the following interface" -msgstr "Покривати наступний інтерфейс" - -msgid "Cover the following interfaces" -msgstr "Покривати наступні інтерфейси" - -msgid "Create / Assign firewall-zone" -msgstr "Створити / Визначити зону брандмауера" - -msgid "Create Interface" -msgstr "Створити інтерфейс" - -msgid "Create a bridge over multiple interfaces" -msgstr "Створити міст через кілька інтерфейсів" - -msgid "Critical" -msgstr "Критичний" - -msgid "Cron Log Level" -msgstr "Рівень виведення інформації Cron" - -msgid "Custom Interface" -msgstr "Інтерфейс користувача" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Настроювання поведінки LED, якщо це можливо." - -msgid "DHCP Leases" -msgstr "Оренди DHCP" - -msgid "DHCP Server" -msgstr "Сервер DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP та DNS" - -msgid "DHCP client" -msgstr "Клієнт DHCP" - -msgid "DHCP-Options" -msgstr "Параметри DHCP" - -msgid "DHCPv6 Leases" -msgstr "Оренди DHCPv6" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Спрямовування DNS-запитів" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Зневаджування" - -msgid "Default %d" -msgstr "Типово %d" - -msgid "Default gateway" -msgstr "Типовий шлюз" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "Типовий стан" - -msgid "Define a name for this network." -msgstr "Визначення імені для цієї мережі." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Визначення додаткових опцій DHCP, наприклад " -"\"6,192.168.2.1,192.168.2.2\", щоб оголошувати різні DNS-" -"сервери для клієнтів." - -msgid "Delete" -msgstr "Видалити" - -msgid "Delete this network" -msgstr "Видалити цю мережу" - -msgid "Description" -msgstr "Опис" - -msgid "Design" -msgstr "Стиль (тема)" - -msgid "Destination" -msgstr "Призначення" - -msgid "Device" -msgstr "Пристрій" - -msgid "Device Configuration" -msgstr "Конфігурація пристрою" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "Діагностика" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Каталог" - -msgid "Disable" -msgstr "Вимкнути" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Вимкнути DHCP для цього інтерфейсу." - -msgid "Disable DNS setup" -msgstr "Вимкнути настроювання DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "Вимкнено" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Відкидати RFC1918-відповіді від клієнта на сервер" - -msgid "Displaying only packages containing" -msgstr "Показані тільки непорожні пакети" - -msgid "Distance Optimization" -msgstr "Оптимізація за відстанню" - -msgid "Distance to farthest network member in meters." -msgstr "Відстань до найвіддаленішого вузла мережі в метрах." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Різновидність" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq являє собою комбінований DHCP-сервер і " -"DNS-" -"транспортер для брандмауерів NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Не кешувати негативні відповіді, наприклад, за неіснуючих доменів" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Не спрямовувати запити, які не можуть бути оброблені публічними серверами " -"імен" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Не спрямовувати зворотний перегляд для локальних мереж" - -msgid "Domain required" -msgstr "Потрібен домен" - -msgid "Domain whitelist" -msgstr "\"Білий список\" доменів" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Не пересилати DNS-запити без DNS-імені" - -msgid "Download and install package" -msgstr "Завантажити та інсталювати пакети" - -msgid "Download backup" -msgstr "Завантажити резервну копію" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Реалізація Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear — це SSH-" -"сервер із вбудованим SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Динамічний DHCP" - -msgid "Dynamic tunnel" -msgstr "Динамічний тунель" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Динамічне виділення DHCP-адрес для клієнтів. Якщо вимкнути, будуть " -"обслуговуватися тільки клієнти, які мають статичні оренди." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-Метод" - -msgid "Edit" -msgstr "Редагувати" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Редагувати цей інтерфейс" - -msgid "Edit this network" -msgstr "Редагувати цю мережу" - -msgid "Emergency" -msgstr "Аварійний" - -msgid "Enable" -msgstr "Увімкнути" - -msgid "Enable STP" -msgstr "Увімкнути STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Увімкнути динамічне оновлення кінцевої точки HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Увімкнути узгодження IPv6 для PPP-з'єднань" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Пропускати Jumbo-фрейми" - -msgid "Enable NTP client" -msgstr "Увімкнути NTP-клієнт" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Увімкнути TFTP-сервер" - -msgid "Enable VLAN functionality" -msgstr "Увімкнути підтримку VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Увімкнути learning та aging" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Увімкнути це монтування" - -msgid "Enable this swap" -msgstr "Увімкнути це довантаження" - -msgid "Enable/Disable" -msgstr "Увімкнено/Вимкнено" - -msgid "Enabled" -msgstr "Увімкнено" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" -"Увімкнути STP на цьому мосту" - -msgid "Encapsulation mode" -msgstr "Режим інкапсуляції" - -msgid "Encryption" -msgstr "Шифрування" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "Видалення..." - -msgid "Error" -msgstr "Помилка" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Адаптер Ethernet" - -msgid "Ethernet Switch" -msgstr "Ethernet-комутатор" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Розширення вузлів" - -msgid "Expires" -msgstr "Дійсний ще" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "Термін оренди адрес, мінімум 2 хвилини (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Зовнішній сервер системного журналу" - -msgid "External system log server port" -msgstr "Порт зовнішнього сервера системного журналу" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "Файл" - -msgid "Filename of the boot image advertised to clients" -msgstr "І'мя завантажувального образу, що оголошується клієнтам" - -msgid "Filesystem" -msgstr "Файлова система" - -msgid "Filter" -msgstr "Фільтр" - -msgid "Filter private" -msgstr "Фільтрувати приватні" - -msgid "Filter useless" -msgstr "Фільтрувати непридатні" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Знайти мережу й приєднатися" - -msgid "Find package" -msgstr "Знайти пакет" - -msgid "Finish" -msgstr "Готово" - -msgid "Firewall" -msgstr "Брандмауер" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Настройки брандмауера" - -msgid "Firewall Status" -msgstr "Статус брандмауера" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Версія прошивки" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Фіксований порт для вихідних DNS-запитів" - -msgid "Flash Firmware" -msgstr "Заливаємо прошивку" - -msgid "Flash image..." -msgstr "Відвантажити образ..." - -msgid "Flash new firmware image" -msgstr "Залити новий образ прошивки" - -msgid "Flash operations" -msgstr "Операції заливання" - -msgid "Flashing..." -msgstr "Заливаємо..." - -msgid "Force" -msgstr "Примусово" - -msgid "Force CCMP (AES)" -msgstr "Примусово CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Примусово DHCP у цій мережі, навіть якщо виявлено інший сервер." - -msgid "Force TKIP" -msgstr "Примусово TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Примусово TKIP та CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Спрямовувати DHCP-трафік" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Спрямовувати широкомовний трафік" - -msgid "Forwarding mode" -msgstr "Режим спрямовування" - -msgid "Fragmentation Threshold" -msgstr "Поріг фрагментації" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Вільно" - -msgid "Free space" -msgstr "Вільне місце" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "ГГц" - -msgid "GPRS only" -msgstr "Тільки GPRS" - -msgid "Gateway" -msgstr "Шлюз" - -msgid "Gateway ports" -msgstr "Порти шлюзу" - -msgid "General Settings" -msgstr "Загальні настройки" - -msgid "General Setup" -msgstr "Загальні настройки" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Cтворити архів" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Бездротовий 802.11%s контролер" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Оскільки пароль і підтвердження не співпадають, то пароль не змінено!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Перейти до конфігурації пароля..." - -msgid "Go to relevant configuration page" -msgstr "Перейти до відповідної сторінки конфігурації" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Пароль HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "Обробник" - -msgid "Hang Up" -msgstr "Призупинити" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Тут ви можете настроїти основні параметри вигляду вашого пристрою, такі як " -"назва (ім’я) вузла або часовий пояс." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Тут ви можете вставити відкриті SSH-ключі (по одному на рядок) для SSH з " -"відкритим ключем автентифікації." - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Бездротовий 802.11b контролер Hermes" - -msgid "Hide ESSID" -msgstr "" -"Приховати ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Записи вузлів" - -msgid "Host expiry timeout" -msgstr "Тайм-аут вузла" - -msgid "Host-IP or Network" -msgstr "IP вузла або мережа" - -msgid "Hostname" -msgstr "Назва (ім'я) вузла" - -msgid "Hostname to send when requesting DHCP" -msgstr "Ім'я вузла для надсилання при запиті DHCP" - -msgid "Hostnames" -msgstr "Імена вузлів" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP-адреса" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Брандмауер IPv4" - -msgid "IPv4 WAN Status" -msgstr "Статус IPv4 WAN" - -msgid "IPv4 address" -msgstr "Адреса IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 та IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Широкомовний IPv4" - -msgid "IPv4 gateway" -msgstr "Шлюз IPv4" - -msgid "IPv4 netmask" -msgstr "Маска мережі IPv4" - -msgid "IPv4 only" -msgstr "Тільки IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Довжина префікса IPv4" - -msgid "IPv4-Address" -msgstr "IPv4-адреса" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Брандмауер IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "Статус IPv6 WAN" - -msgid "IPv6 address" -msgstr "Адреса IPv6" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Шлюз IPv6" - -msgid "IPv6 only" -msgstr "Тільки IPv6" - -msgid "IPv6 prefix" -msgstr "Префікс IPv6" - -msgid "IPv6 prefix length" -msgstr "Довжина префікса IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-адреса" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6 у IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6 через IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6 через IPv4 (6to4)" - -msgid "Identity" -msgstr "Ідентичність" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Якщо обрано, монтувати пристрій за його UUID замість фіксованого вузла " -"пристрою" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Якщо обрано, монтувати пристрій за назвою його розділу замість фіксованого " -"вузла пристрою" - -msgid "If unchecked, no default route is configured" -msgstr "Якщо не позначено, типовий маршрут не настроєно" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Якщо не позначено, оголошувані адреси DNS-серверів ігноруються" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Якщо фізичної пам'яті недостатньо, невикористовувані дані можуть тимчасово " -"витіснятися на своп-пристрій, у результаті чого збільшується кількість " -"корисної оперативної пам'яті (RAM). Майте на увазі, що свопінг даних є дуже повільним процесом, оскільки " -"своп-пристрої не можуть бути доступні з такою високою швидкістю, як RAM." - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "Ігнорувати интерфейс" - -msgid "Ignore resolve file" -msgstr "Ігнорувати файли resolv" - -msgid "Image" -msgstr "Образ" - -msgid "In" -msgstr "Вх." - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Тайм-аут бездіяльності" - -msgid "Inbound:" -msgstr "Вхідний:" - -msgid "Info" -msgstr "Інформація" - -msgid "Initscript" -msgstr "Скрипт ініціалізації" - -msgid "Initscripts" -msgstr "Скрипти ініціалізації" - -msgid "Install" -msgstr "Інсталювати" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Інсталяція пакета %q" - -msgid "Install protocol extensions..." -msgstr "Інсталяція розширень протоколу..." - -msgid "Installed packages" -msgstr "Інстальовані пакети" - -msgid "Interface" -msgstr "Інтерфейс" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Конфігурація інтерфейсу" - -msgid "Interface Overview" -msgstr "Огляд інтерфейсів" - -msgid "Interface is reconnecting..." -msgstr "Перепідключення інтерфейсу..." - -msgid "Interface is shutting down..." -msgstr "Інтерфейс завершує роботу..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Інтерфейс відсутній або ще не підключений." - -msgid "Interface reconnected" -msgstr "Інтерфейс перепідключено" - -msgid "Interface shut down" -msgstr "Інтерфейс завершив роботу" - -msgid "Interfaces" -msgstr "Інтерфейси" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Внутрішня помилка сервера" - -msgid "Invalid" -msgstr "Неприпустимо" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"Задано невірний VLAN ID! Доступні тільки ідентифікатори в межах між %d і %d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Задано невірний VLAN ID! Доступні тільки унікальні ідентифікатори." - -msgid "Invalid username and/or password! Please try again." -msgstr "Неприпустиме ім’я користувача та/або пароль! Спробуйте ще раз." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Схоже, що ви намагаєтеся залити образ, який не вміщається у флеш-пам'ять! " -"Перевірте файл образу!" - -msgid "JavaScript required!" -msgstr "Потрібен JavaScript!" - -msgid "Join Network" -msgstr "Підключення до мережі" - -msgid "Join Network: Wireless Scan" -msgstr "Підключення до мережі: Сканування бездротових мереж" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Зберегти настройки" - -msgid "Kernel Log" -msgstr "Журнал ядра" - -msgid "Kernel Version" -msgstr "Версія ядра" - -msgid "Key" -msgstr "Ключ" - -msgid "Key #%d" -msgstr "Ключ #%d" - -msgid "Kill" -msgstr "Знищити" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Сервер L2TP" - -msgid "LCP echo failure threshold" -msgstr "Поріг помилок ехо-запитів LCP" - -msgid "LCP echo interval" -msgstr "Інтервал ехо-запитів LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Мітка" - -msgid "Language" -msgstr "Мова" - -msgid "Language and Style" -msgstr "Мова та стиль" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Час чинності оренди" - -msgid "Leasefile" -msgstr "Файл оренд" - -msgid "Leasetime remaining" -msgstr "Час оренди, що лишився" - -msgid "Leave empty to autodetect" -msgstr "Залиште поле порожнім для автовизначення" - -msgid "Leave empty to use the current WAN address" -msgstr "Залиште порожнім, щоб використовувати поточну адресу WAN" - -msgid "Legend:" -msgstr "Легенда:" - -msgid "Limit" -msgstr "Межа" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Зв'язок встановлено" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Список DNS-серверів, до яких " -"пересилати запити" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Список доменів, для яких дозволені RFC1918-відповіді" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Список доменів, які підтримують результати підробки NX-доменів" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Прослуховувати тільки на цьому інтерфейсі, або на всіх (якщо не " -"визначено)" - -msgid "Listening port for inbound DNS queries" -msgstr "Порт прослуховування для вхідних DNS-запитів" - -msgid "Load" -msgstr "Навантаження" - -msgid "Load Average" -msgstr "Середнє навантаження" - -msgid "Loading" -msgstr "Завантаження" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Локальна адреса IPv4" - -msgid "Local IPv6 address" -msgstr "Локальна адреса IPv6" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Локальний запуск" - -msgid "Local Time" -msgstr "Місцевий час" - -msgid "Local domain" -msgstr "Локальний домен" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Специфікація локальних доменів. Імена, зіставлені цьому домену, ніколи не " -"спрямовуються і виділяються тільки через DHCP або файли hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Суфікс локального домену додається до DHCP-імен вузлів та записів з файлу " -"hosts" - -msgid "Local server" -msgstr "Локальний сервер" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Локалізувати ім'я хоста залежно від запитуючої підмережі, якщо доступні " -"кілька IP-адрес" - -msgid "Localise queries" -msgstr "Локалізувати запити" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Рівень виведення інформаціі до журналу" - -msgid "Log queries" -msgstr "Журнал запитів" - -msgid "Logging" -msgstr "Журналювання" - -msgid "Login" -msgstr "Увійти" - -msgid "Logout" -msgstr "Вийти" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Найнижча орендована адреса" - -msgid "MAC-Address" -msgstr "MAC-адреса" - -msgid "MAC-Address Filter" -msgstr "Фільтр MAC-адрес" - -msgid "MAC-Filter" -msgstr "MAC-фільтр" - -msgid "MAC-List" -msgstr "MAC-список" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MБ/с" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "МГц" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Максимально допустима кількість активних оренд DHCP" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Максимально допустима кількість одночасних DNS-запитів" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Максимально допустимий розмір UDP-пакетів EDNS.0" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Максимальний час очікування готовності модему (секунд)" - -msgid "Maximum hold time" -msgstr "Максимальний час утримування" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Максимальна кількість орендованих адрес." - -msgid "Mbit/s" -msgstr "Мбіт/с" - -msgid "Memory" -msgstr "Пам'ять" - -msgid "Memory usage (%)" -msgstr "Використання пам'яті, %" - -msgid "Metric" -msgstr "Метрика" - -msgid "Minimum hold time" -msgstr "Мінімальний час утримування" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Відсутні розширення для протоколу %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Режим" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Модем" - -msgid "Modem init timeout" -msgstr "Тайм-аут ініціалізації модему" - -msgid "Monitor" -msgstr "Монітор" - -msgid "Mount Entry" -msgstr "Вхід монтування" - -msgid "Mount Point" -msgstr "Точка монтування" - -msgid "Mount Points" -msgstr "Точки монтування" - -msgid "Mount Points - Mount Entry" -msgstr "Точки монтування - Записи монтування" - -msgid "Mount Points - Swap Entry" -msgstr "Точки монтування - Вхід довантаження" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Точки монтування визначають, до якої точки пристрою пам'яті буде прикріплена " -"файлова система" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Опції монтування" - -msgid "Mount point" -msgstr "Точка монтування" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Змонтовані файлові системи" - -msgid "Move down" -msgstr "Вниз" - -msgid "Move up" -msgstr "Вгору" - -msgid "Multicast address" -msgstr "Адреса багатоадресного потоку" - -msgid "NAS ID" -msgstr "Ідентифікатор NAS" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Кандидати для синхронізації NTP-сервера" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Ім'я" - -msgid "Name of the new interface" -msgstr "Ім'я нового інтерфейсу" - -msgid "Name of the new network" -msgstr "Назва (ім'я) нової мережі" - -msgid "Navigation" -msgstr "Навігація" - -msgid "Netmask" -msgstr "Маска мережі" - -msgid "Network" -msgstr "Мережа" - -msgid "Network Utilities" -msgstr "Мережеві утиліти" - -msgid "Network boot image" -msgstr "Образ для мережевого завантаження" - -msgid "Network without interfaces." -msgstr "Мережа без інтерфейсів." - -msgid "Next »" -msgstr "Наступний »" - -msgid "No DHCP Server configured for this interface" -msgstr "Немає DHCP-сервера, настроєного для цього інтерфейсу" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "У цій таблиці нема ланцюжків" - -msgid "No files found" -msgstr "Файли не знайдено" - -msgid "No information available" -msgstr "Інформація відсутня" - -msgid "No negative cache" -msgstr "Ніяких негативних кешувань" - -msgid "No network configured on this device" -msgstr "На цьому пристрої нема настроєної мережі" - -msgid "No network name specified" -msgstr "Ім'я мережі не визначене" - -msgid "No package lists available" -msgstr "Немає доступних списків пакетів" - -msgid "No password set!" -msgstr "Пароль не встановлено!" - -msgid "No rules in this chain" -msgstr "У цьму ланцюжку нема правил" - -msgid "No zone assigned" -msgstr "Зона не призначена" - -msgid "Noise" -msgstr "Шум" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Шум:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Жоден" - -msgid "Normal" -msgstr "Нормальний" - -msgid "Not Found" -msgstr "Не знайдено" - -msgid "Not associated" -msgstr "Не пов'язаний" - -msgid "Not connected" -msgstr "Не підключено" - -msgid "Note: Configuration files will be erased." -msgstr "Примітка: конфігураційні файли будуть видалені." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Попередження" - -msgid "Nslookup" -msgstr "DNS-запит" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Конфігурація OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "Затримка Off-State" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"На цій сторінці ви можете настроїти мережеві інтерфейси. Ви можете " -"об'єднатиати кілька інтерфейсів мостом, відзначивши поле \"Об'єднати " -"інтерфейси в міст\" та ввівши імена кількох мережевих інтерфейсів, розділені " -"пробілами. Також ви можете використовувати VLAN-позначення " -"ІНТЕРФЕЙС.НОМЕР_VLAN (наприклад, eth0.1)." - -msgid "On-State Delay" -msgstr "Затримка On-State" - -msgid "One of hostname or mac address must be specified!" -msgstr "Має бути вказане одне з двох - ім'я вузла або МАС-адреса!" - -msgid "One or more fields contain invalid values!" -msgstr "Одне або декілька полів містять неприпустимі значення!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Одне або декілька обов'язкових полів не мають значень!" - -msgid "Open list..." -msgstr "Відкрити список..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Опція змінена" - -msgid "Option removed" -msgstr "Опція видалена" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Опції" - -msgid "Other:" -msgstr "Інше:" - -msgid "Out" -msgstr "Вих." - -msgid "Outbound:" -msgstr "Вихідний:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Перевизначити MAC-адресу" - -msgid "Override MTU" -msgstr "Перевизначити MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Перевизначення шлюзу у відповідях DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Перевизначення мережевої маски, яка надсилається клієнтам. Зазвичай вона " -"обчислюється від підмережі, що обслуговується." - -msgid "Override the table used for internal routes" -msgstr "" -"Перевизначення таблиці, що використовужться для внутрішніх спрямовувань" - -msgid "Overview" -msgstr "Огляд" - -msgid "Owner" -msgstr "Власник" - -msgid "PAP/CHAP password" -msgstr "Пароль PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Ім'я користувача PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" -">PIN" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Інкапсуляція PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Потрібен пакет libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Перелік пакетів створений більше ніж 24 години тому" - -msgid "Package name" -msgstr "Назва пакета" - -msgid "Packets" -msgstr "Пакети" - -msgid "Part of zone %q" -msgstr "Частина зони %q" - -msgid "Password" -msgstr "Пароль" - -msgid "Password authentication" -msgstr "Автентифікація за паролем" - -msgid "Password of Private Key" -msgstr "Пароль закритого ключа" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Пароль успішно змінено!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Шлях до центру сертифікції" - -msgid "Path to Client-Certificate" -msgstr "Шлях до сертифікату клієнта" - -msgid "Path to Private Key" -msgstr "Шлях до закритого ключа" - -msgid "Path to executable which handles the button event" -msgstr "Шлях до програми, яка обробляє натискання кнопки" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Пік:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Виконати перезавантаження" - -msgid "Perform reset" -msgstr "Відновити" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Фізична швидкість:" - -msgid "Physical Settings" -msgstr "Фізичні параметри" - -msgid "Ping" -msgstr "Ехо-запит" - -msgid "Pkts." -msgstr "пакетів" - -msgid "Please enter your username and password." -msgstr "Введіть ім'я користувача і пароль" - -msgid "Policy" -msgstr "Політика" - -msgid "Port" -msgstr "Порт" - -msgid "Port status:" -msgstr "Статус порту:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Вважати вузол недоступним після визначеної кількості невдач отримання ехо-" -"пакета LCP, використовуйте 0, щоб ігнорувати невдачі" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Запобігає зв'язкам клієнт-клієнт" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Бездротовий 802.11b контролер Prism2/2.5/3" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Продовжити" - -msgid "Processes" -msgstr "Процеси" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Прот." - -msgid "Protocol" -msgstr "Протокол" - -msgid "Protocol family" -msgstr "Сімейство протоколів" - -msgid "Protocol of the new interface" -msgstr "Протокол нового інтерфейсу" - -msgid "Protocol support is not installed" -msgstr "Підтримка протоколу не інстальована" - -msgid "Provide NTP server" -msgstr "Забезпечувати NTP-сервер" - -msgid "Provide new network" -msgstr "Постачити нову мережу" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Псевдо Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Якість" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Поріг RTS/CTS" - -msgid "RX" -msgstr "Одержано" - -msgid "RX Rate" -msgstr "Швидкість приймання" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "Бездротовий 802.11%s контролер RaLink" - -msgid "Radius-Accounting-Port" -msgstr "Порт Radius-Accounting" - -msgid "Radius-Accounting-Secret" -msgstr "Секрет Radius-Accounting" - -msgid "Radius-Accounting-Server" -msgstr "Сервер Radius-Accounting" - -msgid "Radius-Authentication-Port" -msgstr "Порт Radius-Authentication" - -msgid "Radius-Authentication-Secret" -msgstr "Секрет Radius-Authentication" - -msgid "Radius-Authentication-Server" -msgstr "Сервер Radius-Authentication" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Читати /etc/ethers для настроювання DHCP-сервера" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"Дійсно видалити цей інтерфейс? Скасувати видалення неможливо!\n" -"Ви можете втратити доступ до цього пристрою, якщо ви підключені через цей " -"інтерфейс." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"Дійсно видалити цю бездротову мережу? Скасувати видалення неможливо!\n" -"Ви можете втратити доступ до цього пристрою, якщо ви підключені через цю " -"мережу." - -msgid "Really reset all changes?" -msgstr "Дійсно скинути всі зміни?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"Дійсно вимкнути мережу?\n" -"Ви можете втратити доступ до цього пристрою, якщо ви підключені через цю " -"мережу." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"Дійсно вимкнути інтерфейс \"%s\"?\n" -"Ви можете втратити доступ до цього пристрою, якщо ви підключені через цей " -"інтерфейс." - -msgid "Really switch protocol?" -msgstr "Дійсно змінити протокол?" - -msgid "Realtime Connections" -msgstr "Підключення у реальному часі" - -msgid "Realtime Graphs" -msgstr "Графіки у реальному часі" - -msgid "Realtime Load" -msgstr "Навантаження у реальному часі" - -msgid "Realtime Traffic" -msgstr "Трафік у реальному часі" - -msgid "Realtime Wireless" -msgstr "Бездротові мережі у реальному часі" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Захист від переприв'язки" - -msgid "Reboot" -msgstr "Перезавантаження" - -msgid "Rebooting..." -msgstr "Перезавантаження..." - -msgid "Reboots the operating system of your device" -msgstr "Перезавантажити операційну систему вашого пристрою" - -msgid "Receive" -msgstr "Прийом" - -msgid "Receiver Antenna" -msgstr "Антена приймача" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Перепідключити цей інтерфейс" - -msgid "Reconnecting interface" -msgstr "Перепідключення інтерфейсу" - -msgid "References" -msgstr "Посилання" - -msgid "Relay" -msgstr "Ретранслятор" - -msgid "Relay Bridge" -msgstr "Міст-ретранслятор" - -msgid "Relay between networks" -msgstr "Міжмережевий ретранслятор" - -msgid "Relay bridge" -msgstr "Міст-ретранслятор" - -msgid "Remote IPv4 address" -msgstr "Віддалена адреса IPv4" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Видалити" - -msgid "Repeat scan" -msgstr "Повторити сканування" - -msgid "Replace entry" -msgstr "Замінити запис" - -msgid "Replace wireless configuration" -msgstr "Замінити конфігурацію бездротової мережі" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Потрібно для деяких провайдерів, наприклад, Charter із DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Скинути" - -msgid "Reset Counters" -msgstr "Скинути лічильники" - -msgid "Reset to defaults" -msgstr "Відновити початковий стан" - -msgid "Resolv and Hosts Files" -msgstr "Файли resolv і hosts" - -msgid "Resolve file" -msgstr "Файл resolv" - -msgid "Restart" -msgstr "Перезавантажити" - -msgid "Restart Firewall" -msgstr "Перезавантажити брандмауер" - -msgid "Restore backup" -msgstr "Відновити з резервної копії" - -msgid "Reveal/hide password" -msgstr "Показати/приховати пароль" - -msgid "Revert" -msgstr "Скасувати зміни" - -msgid "Root" -msgstr "Корінь" - -msgid "Root directory for files served via TFTP" -msgstr "Кореневий каталог для файлів TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Пароль маршрутизатора" - -msgid "Routes" -msgstr "Маршрути" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Маршрути визначають через який інтерфейс і шлюз можна досягнути певного " -"вузла або мережі." - -msgid "Run a filesystem check before mounting the device" -msgstr "Виконати перевірку файлової системи перед монтуванням пристрою" - -msgid "Run filesystem check" -msgstr "Виконати перевірку файлової системи" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH-доступ" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH-ключі" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Зберегти" - -msgid "Save & Apply" -msgstr "Зберегти і застосувати" - -msgid "Save & Apply" -msgstr "Зберегти і застосувати" - -msgid "Scan" -msgstr "Сканувати" - -msgid "Scheduled Tasks" -msgstr "Заплановані завдання" - -msgid "Section added" -msgstr "Секція додана" - -msgid "Section removed" -msgstr "Секція видалена" - -msgid "See \"mount\" manpage for details" -msgstr "Подробиці див. на сторінці керівництва \"mount\"" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Надсилати ехо-пакети LCP зі вказаним інтервалом (секунди), ефективно тільки " -"в поєднанні з порогом помилок" - -msgid "Separate Clients" -msgstr "Розділяти клієнтів" - -msgid "Server Settings" -msgstr "Настройки сервера" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "Назва (ім'я) сервісу" - -msgid "Service Type" -msgstr "Тип сервісу" - -msgid "Services" -msgstr "Сервіси" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Настройки синхронізації часу" - -msgid "Setup DHCP Server" -msgstr "Настройки DHCP-сервера" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "Показати поточний список файлів резервного копіювання" - -msgid "Shutdown this interface" -msgstr "Вимкнути цей інтерфейс" - -msgid "Shutdown this network" -msgstr "Вимкнути цю мережу" - -msgid "Signal" -msgstr "Сигнал" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Сигнал:" - -msgid "Size" -msgstr "Розмір" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "Пропустити" - -msgid "Skip to content" -msgstr "Перейти до вмісту" - -msgid "Skip to navigation" -msgstr "Перейти до навігації" - -msgid "Slot time" -msgstr "Час слота" - -msgid "Software" -msgstr "Програмне забезпечення" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Деякі поля є неприпустимими, неможливо зберегти значення!" - -msgid "Sorry, the object you requested was not found." -msgstr "На жаль, об'єкт, який ви просили, не знайдено." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "На жаль, на сервері сталася неочікувана помилка." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"На жаль, автоматичне оновлення системи не підтримується. Новий образ " -"прошивки повинен бути залитий вручну. Зверніться до Wiki за інструкцією з " -"інсталяції для конкретного пристрою." - -msgid "Sort" -msgstr "Сортування" - -msgid "Source" -msgstr "Джерело" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "Визначає стан кнопки для обробки" - -msgid "Specifies the directory the device is attached to" -msgstr "Визначає каталог, до якого приєднаний пристрій" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Визначає порт прослуховування цієї реалізації Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Визначає максимальну кількість невдалих ARP-запитів до вузлів, після якого " -"вважається, що вузли \"мертві\"" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Визначає максимальний час (секунди), після якого вважається, що вузли " -"\"мертві\"" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Вкажіть тут секретний ключ шифрування." - -msgid "Start" -msgstr "Запустити" - -msgid "Start priority" -msgstr "Стартовий пріоритет" - -msgid "Startup" -msgstr "Запуск" - -msgid "Static IPv4 Routes" -msgstr "Статичні маршрути IPv4" - -msgid "Static IPv6 Routes" -msgstr "Статичні маршрути IPv6" - -msgid "Static Leases" -msgstr "Статичні оренди" - -msgid "Static Routes" -msgstr "Статичні маршрути" - -msgid "Static address" -msgstr "Статичні адреси" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Статичні оренди використовуються для призначення фіксованих IP-адрес і " -"символічних імен вузлів DHCP-клієнтам. Вони також необхідні для статичних " -"конфігурацій інтерфейсів, коли обслуговуються тільки вузли з відповідною " -"орендою." - -msgid "Status" -msgstr "Статус" - -msgid "Stop" -msgstr "Зупинити" - -msgid "Strict order" -msgstr "Строгий порядок" - -msgid "Submit" -msgstr "Надіслати" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Вхід довантаження" - -msgid "Switch" -msgstr "Комутатор" - -msgid "Switch %q" -msgstr "Комутатор %q" - -msgid "Switch %q (%s)" -msgstr "Комутатор %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Протокол комутатора" - -msgid "Sync with browser" -msgstr "Синхронізувати з браузером" - -msgid "Synchronizing..." -msgstr "Синхронізація..." - -msgid "System" -msgstr "Система" - -msgid "System Log" -msgstr "Системний журнал" - -msgid "System Properties" -msgstr "Властивості системи" - -msgid "System log buffer size" -msgstr "Розмір буфера системного журналу" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Настройки TFTP" - -msgid "TFTP server root" -msgstr "Корінь TFTP-сервера" - -msgid "TX" -msgstr "Передано" - -msgid "TX Rate" -msgstr "Швидкість передавання" - -msgid "Table" -msgstr "Таблиця" - -msgid "Target" -msgstr "Мета" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Завершити" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Розділ Конфігурація пристрою охоплює фізичні параметри радіо-" -"апаратних засобів, такі, як канал, потужність передавача або вибір антени, " -"які є спільними для всіх визначених бездротових мереж (якщо радіо-апаратні " -"засоби здатні підтримувати кілька SSID). Параметри окремих мереж, такі, як " -"шифрування або режим роботи, згруповані в розділі Конфігурація " -"інтерфейсу." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Пакет libiwinfo-lua не інстальований. Щоб мати можливість " -"настроювати безпровідні мережі, слід інсталювати цей компонент!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Призначений провайдеру IPv6-префікс, зазвичай закінчується на ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Дозволені символи: A-Z, a-z, 0-9 та " -"_" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "Файл пристрою пам'яті або розділу (наприклад, /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Файлова система, яка використовуватиметься для форматування пам'яті " -"(наприклад, ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Образ завантажено. Нижче наведено контрольну суму і розмір файлу. Порівняйте " -"їх з вихідним файлом для забезпечення цілісності даних.
    Натисніть " -"\"Продовжити\", щоб розпочати процедуру оновлення прошивки." - -msgid "The following changes have been committed" -msgstr "Нижче наведені зміни були застосовані" - -msgid "The following changes have been reverted" -msgstr "Нижче наведені зміни були скасовані" - -msgid "The following rules are currently active on this system." -msgstr "У даний час у цій системі активні такі правила." - -msgid "The given network name is not unique" -msgstr "Задане мережеве ім'я не є унікальним" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Обладнання не підтримує мульти-SSID і, якщо ви продовжите, існуюча " -"конфігурація буде замінена." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "Довжина IPv4-префікса в бітах, решта використовується в IPv6-адресах." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Довжина IPv6-префікса в бітах" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Мережеві порти вашого пристрою можуть бути об'єднані у декілька VLAN, у яких комп'ютери можуть напряму спілкуватися один з одним. " -"VLAN часто використовуються для розділення мережі на окремі " -"сегменти. Зазвичай один виcхідний порт використовується для з'єднання з " -"більшою мережею, такою наприклад, як Інтернет, а інші порти — для локальної " -"мережі." - -msgid "The selected protocol needs a device assigned" -msgstr "Обраний протокол потребує призначених пристроїв" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Зараз система видаляє розділ конфігурації і коли закінчить, " -"перезавантажиться." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Система перепрошивається.
    НЕ ВИМИКАЙТЕ ЖИВЛЕННЯ ПРИСТРОЮ!
    Зачекайте кілька хвилин перед тим, як пробувати знову " -"з'єднатися. Залежно від ваших настройок, можливо, вам треба буде оновити " -"адресу вашого комп'ютера, щоб знову отримати доступ до пристрою." - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Завантажений файл образу не містить підтримуваний формат. Переконайтеся, що " -"ви вибираєте універсальний формат образу для вашої платформи." - -msgid "There are no active leases." -msgstr "Активних оренд немає." - -msgid "There are no pending changes to apply!" -msgstr "Немає жодних змін до застосування!" - -msgid "There are no pending changes to revert!" -msgstr "Немає жодних змін до скасування!" - -msgid "There are no pending changes!" -msgstr "Немає жодних очікуючих змін!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Немає жодного призначеного пристрою. Призначте мережевий пристрій у вкладці " -"\"Фізичні параметри\"." - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Цей маршрутизатор не має пароля. Встановіть пароль, шоб захистити веб-" -"інтерфейс і увімкнути SSH." - -msgid "This IPv4 address of the relay" -msgstr "Це IPv4-адреса ретранслятора" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Це список шаблонів для відбору файлів і каталогів, які мають увійти до " -"резервної копії. Змінені файли у /etc/config/ та деякі інші " -"зберігаються автоматично." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Це вміст файлу /etc/rc.local. Вставте тут ваші власні команди " -"(перед 'exit 0'), щоб виконати їх у кінці процесу завантаження." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" -"Це локальна адреса кінцевої точки, присвоєна тунельним брокером, зазвичай " -"закінчується на :2" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Тільки для DHCP у локальній мережі" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Це системна таблиця Cron (crontab), у якій можна визначити заплановані " -"завдання." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Зазвичай, це адреса найближчої точки присутності, що управляється тунелним " -"брокером" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"У цьому списку наведені працюючі на даний момент системні процеси та їх " -"статус." - -msgid "This page allows the configuration of custom button actions" -msgstr "Ця сторінка дозволяє настроїти нетипові дії кнопки" - -msgid "This page gives an overview over currently active network connections." -msgstr "Ця сторінка надає огляд поточних активних мережних підключень." - -msgid "This section contains no values yet" -msgstr "Ця секція поки що не містить значень" - -msgid "Time Synchronization" -msgstr "Синхронізація часу" - -msgid "Time Synchronization is not configured yet." -msgstr "Синхронізація часу не настроєна." - -msgid "Timezone" -msgstr "Часовий пояс" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" -"Щоб відновити файли конфігурації, ви можете відвантажити раніше створений " -"архів резервної копії." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Усього доступно" - -msgid "Traceroute" -msgstr "Трасування" - -msgid "Traffic" -msgstr "Трафік" - -msgid "Transfer" -msgstr "Передано" - -msgid "Transmission Rate" -msgstr "Швидкість передавання" - -msgid "Transmit" -msgstr "Передача" - -msgid "Transmit Power" -msgstr "Потужність передавача" - -msgid "Transmitter Antenna" -msgstr "Антена передавача" - -msgid "Trigger" -msgstr "Тригер" - -msgid "Trigger Mode" -msgstr "Режим запуску" - -msgid "Tunnel ID" -msgstr "Ідентифікатор тунелю" - -msgid "Tunnel Interface" -msgstr "Інтерфейс тунелю" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "Потужність передавача" - -msgid "Type" -msgstr "Тип" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Тільки UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB-пристрій" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "Не вдалося опрацювати запит" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Невідомо" - -msgid "Unknown Error, password not changed!" -msgstr "Невідома помилка, пароль не змінився!" - -msgid "Unmanaged" -msgstr "Некерований" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Незбережені зміни" - -msgid "Unsupported protocol type." -msgstr "Непідтримуваний тип протоколу." - -msgid "Update lists" -msgstr "Оновити списки..." - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Відвантажити sysupgrade-сумісний образ, щоб замінити поточну прошивку. Для " -"збереження поточної конфігурації встановіть прапорець \"Зберегти настройки" -"\" (потрібен сумісний образ прошивки)." - -msgid "Upload archive..." -msgstr "Відвантажити архів..." - -msgid "Uploaded File" -msgstr "Відвантажений файл" - -msgid "Uptime" -msgstr "Час безперервної роботи" - -msgid "Use /etc/ethers" -msgstr "Використовувати /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Використовувати DHCP-шлюз" - -msgid "Use DNS servers advertised by peer" -msgstr "Використовувати DNS-сервери, оголошувані вузлом" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Використовуйте коди країн згідно ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "Використовувати на тунельному інтерфейсі MTU" - -msgid "Use TTL on tunnel interface" -msgstr "Використовувати на тунельному інтерфейсі TTL" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Використовувати прапорець широкомовності" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Використовувати особливі DNS-сервери" - -msgid "Use default gateway" -msgstr "Використовувати типовий шлюз" - -msgid "Use gateway metric" -msgstr "Використовувати метрику шлюзу" - -msgid "Use routing table" -msgstr "Використовувати таблицю маршрутизації" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Використовуйте кнопку Додати, щоб додати новий запис оренди. " -"MAC-адреса ідентифікує вузол, IPv4-адреса визначає " -"фіксовану адресу, яка буде використовуватися, а Назва (ім'я) вузла " -"призначає символічне ім'я вузла." - -msgid "Used" -msgstr "Використано" - -msgid "Used Key Slot" -msgstr "Використовується слот ключа" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Ім'я користувача" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLAN на %q" - -msgid "VLANs on %q (%s)" -msgstr "VLAN на %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "VPN-сервер" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Клас постачальника для відправки при запиті DHCP" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "Перевірте" - -msgid "Version" -msgstr "Версія" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Відкрита система WEP" - -msgid "WEP Shared Key" -msgstr "Спільний ключ WEP" - -msgid "WEP passphrase" -msgstr "Парольна фраза WEP" - -msgid "WMM Mode" -msgstr "Режим WMM" - -msgid "WPA passphrase" -msgstr "Парольна фраза WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-шифрування потребує інсталяції wpa_supplicant (для режиму " -"клієнта) або hostapd (для Точки доступу та режиму ad-hoc)." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "Очікуємо, доки зміни наберуть чинності..." - -msgid "Waiting for command to complete..." -msgstr "Очікуємо завершення виконання команди..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Застереження" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Бездротові мережі" - -msgid "Wireless Adapter" -msgstr "Бездротовий адаптер" - -msgid "Wireless Network" -msgstr "Бездротова мережа" - -msgid "Wireless Overview" -msgstr "Огляд бездротових мереж" - -msgid "Wireless Security" -msgstr "Безпека бездротової мережі" - -msgid "Wireless is disabled or not associated" -msgstr "Бездротову мережу вимкнено або не пов'язано" - -msgid "Wireless is restarting..." -msgstr "Бездротова мережа перезапускається..." - -msgid "Wireless network is disabled" -msgstr "Бездротова мережа вимкнена" - -msgid "Wireless network is enabled" -msgstr "Бездротова мережа ввімкнена" - -msgid "Wireless restarted" -msgstr "Бездротова мережа перезапущена" - -msgid "Wireless shut down" -msgstr "Бездротова мережа припинила роботу" - -msgid "Write received DNS requests to syslog" -msgstr "Записувати отримані DNS-запити до системного журналу" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Тут ви можете увімкнути або вимкнути інстальовані скрипти ініціалізації. " -"Зміни набудуть чинності після перезавантаження пристрою.
    Увага: " -"Якщо ви вимкнете основний скрипт ініціалізації (наприклад \"network\"), " -"пристрій може стати недоступним!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Ви повинні увімкнути JavaScript у вашому браузері, або LuCI не буде " -"працювати належним чином." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "будь-який" - -msgid "auto" -msgstr "авто" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "зв'язано" - -msgid "create:" -msgstr "створити:" - -msgid "creates a bridge over specified interface(s)" -msgstr "Створити міст через вказаний інтерфейс(и)" - -msgid "dB" -msgstr "дБ" - -msgid "dBm" -msgstr "дБм" - -msgid "disable" -msgstr "вимкнено" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "минув" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Файл, де зберігаються видані DHCP-оренди" - -msgid "forward" -msgstr "переслати" - -msgid "full-duplex" -msgstr "повний дуплекс" - -msgid "half-duplex" -msgstr "напівдуплекс" - -msgid "help" -msgstr "довідка" - -msgid "hidden" -msgstr "прихований" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "якщо мета — мережа" - -msgid "input" -msgstr "вхід" - -msgid "kB" -msgstr "КБ" - -msgid "kB/s" -msgstr "КБ/с" - -msgid "kbit/s" -msgstr "Кбіт/с" - -msgid "local DNS file" -msgstr "" -"Локальний DNS-файл" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "ні" - -msgid "no link" -msgstr "нема з'єднання" - -msgid "none" -msgstr "нема нічого" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "вимкнено" - -msgid "on" -msgstr "увімкнено" - -msgid "open" -msgstr "відкрита" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "спрямовано" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "з позначкою" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "невідомий" - -msgid "unlimited" -msgstr "необмежений" - -msgid "unspecified" -msgstr "не визначено" - -msgid "unspecified -or- create:" -msgstr "не визначено -або- створити" - -msgid "untagged" -msgstr "без позначки" - -msgid "yes" -msgstr "так" - -msgid "« Back" -msgstr "« Назад" - -#~ msgid "Leasetime" -#~ msgstr "Час оренди" - -#~ msgid "AR Support" -#~ msgstr "Підтримка AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Бездротовий 802.11%s контролер Atheros" - -#~ msgid "Background Scan" -#~ msgstr "Сканування у фоновому режимі" - -#~ msgid "Compression" -#~ msgstr "Стиснення" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Вимкнути таймер HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Не надсилати відповіді на зондування" - -#~ msgid "Fast Frames" -#~ msgstr "Швидкі фрейми" - -#~ msgid "Maximum Rate" -#~ msgstr "Максимальна швидкість" - -#~ msgid "Minimum Rate" -#~ msgstr "Мінімальна швидкість" - -#~ msgid "Multicast Rate" -#~ msgstr "Швидкість багатоадресного потоку" - -#~ msgid "Outdoor Channels" -#~ msgstr "Зовнішні канали" - -#~ msgid "Regulatory Domain" -#~ msgstr "Регулятивний домен" - -#~ msgid "Separate WDS" -#~ msgstr "Розділяти WDS" - -#~ msgid "Static WDS" -#~ msgstr "Статичний WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Режим Turbo" - -#~ msgid "XR Support" -#~ msgstr "Підтримка XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Якщо ви залишите це невибраним, буде створена додаткова мережа." - -#~ msgid "Join Network: Settings" -#~ msgstr "Підключення до мережі: Настройки" - -#~ msgid "CPU" -#~ msgstr "ЦП" - -#~ msgid "Port %d" -#~ msgstr "Порт %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Порт %d нетегований у кількох VLAN-ах!" - -#~ msgid "VLAN Interface" -#~ msgstr "VLAN-інтерфейс" diff --git a/package/luci/modules/luci-base/po/vi/base.po b/package/luci/modules/luci-base/po/vi/base.po deleted file mode 100644 index 48f6b73e82..0000000000 --- a/package/luci/modules/luci-base/po/vi/base.po +++ /dev/null @@ -1,3858 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:59+0200\n" -"PO-Revision-Date: 2009-08-14 12:23+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "" - -#, fuzzy -msgid "(%s available)" -msgstr "(%s available)" - -msgid "(empty)" -msgstr "" - -msgid "(no interfaces attached)" -msgstr "" - -msgid "-- Additional Field --" -msgstr "---Mục bổ sung---" - -msgid "-- Please choose --" -msgstr "--Hãy chọn--" - -msgid "-- custom --" -msgstr "--tùy chỉnh--" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "" - -msgid "15 Minute Load:" -msgstr "" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "" - -msgid "DNS server port" -msgstr "" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Address" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Address or Network " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Configuration" - -msgid "LED Name" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-Address" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "%s - %s" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "Điểm truy cập" - -msgid "Action" -msgstr "Action" - -msgid "Actions" -msgstr "Hành động" - -msgid "Activate this network" -msgstr "" - -msgid "Active IPv4-Routes" -msgstr "Active IPv4-Routes" - -msgid "Active IPv6-Routes" -msgstr "Active IPv6-Routes" - -msgid "Active Connections" -msgstr "kết nối đang hoạt động" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Thêm vào" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "" - -msgid "Additional Hosts files" -msgstr "" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "Quản trị" - -msgid "Advanced Settings" -msgstr "" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Cho phép SSH xác thực mật mã" - -msgid "Allow all except listed" -msgstr "Cho phép tất cả trừ danh sách liệt kê" - -msgid "Allow listed only" -msgstr "Chỉ cho phép danh sách liệt kê" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "" - -msgid "Antenna 2" -msgstr "" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "" - -msgid "Apply" -msgstr "Áp dụng" - -msgid "Applying changes" -msgstr "Tiến hành thay đổi" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Xác thực" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Authoritative" - -msgid "Authorization Required" -msgstr "Yêu cầu ủy quyền" - -msgid "Auto Refresh" -msgstr "" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Sẵn có" - -msgid "Available packages" -msgstr "" - -msgid "Average:" -msgstr "" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Back to Overview" -msgstr "" - -msgid "Back to configuration" -msgstr "" - -msgid "Back to overview" -msgstr "" - -msgid "Back to scan results" -msgstr "" - -msgid "Backup / Flash Firmware" -msgstr "" - -msgid "Backup / Restore" -msgstr "Backup/ Restore" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "" - -msgid "Bridge interfaces" -msgstr "Giao diện cầu nối" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU usage (%)" - -msgid "Cancel" -msgstr "Bỏ qua" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "chuỗi" - -msgid "Changes" -msgstr "Thay đổi" - -msgid "Changes applied." -msgstr "Thay đổi đã áp dụng" - -msgid "Changes the administrator password for accessing the device" -msgstr "" - -msgid "Channel" -msgstr "Kênh" - -msgid "Check" -msgstr "" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Checksum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "Giao diện này chưa thuộc về bất kỳ firewall zone nào." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "Lệnh" - -msgid "Common Configuration" -msgstr "" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Cấu hình" - -msgid "Configuration applied." -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Confirmation" -msgstr "Xác nhận" - -msgid "Connect" -msgstr "" - -msgid "Connected" -msgstr "" - -msgid "Connection Limit" -msgstr "Giới hạn kết nối" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "Mã quốc gia" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "Tạo/ gán firewall-zone" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Tùy chỉnh chế độ của thiết bị LEDs nếu có thể." - -msgid "DHCP Leases" -msgstr "" - -msgid "DHCP Server" -msgstr "" - -msgid "DHCP and DNS" -msgstr "" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "Tùy chọn DHCP" - -msgid "DHCPv6 Leases" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Xóa" - -msgid "Delete this network" -msgstr "" - -msgid "Description" -msgstr "Mô tả" - -msgid "Design" -msgstr "Thiết kế" - -msgid "Destination" -msgstr "Điểm đến" - -msgid "Device" -msgstr "Công cụ" - -msgid "Device Configuration" -msgstr "" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Khoảng cách tối ưu" - -msgid "Distance to farthest network member in meters." -msgstr "Khoảng cách tới thành viên xa nhất trong mạng lưới tính bằng mét" - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Tính đa dạng" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq là một phối hợp DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domain yêu cầu" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Don&#39;t chuyển tiếp DNS-Yêu " -"cầu không cần DNS-Tên" - -msgid "Download and install package" -msgstr "Tải và cài đặt gói" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear cung cấp SSH mạng lưới shell " -"truy cập và một SCP server tích hợp" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dynamic DHCP" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-Method" - -msgid "Edit" -msgstr "Chỉnh sửa" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enable STP" -msgstr "Kích hoạt STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "Cho kích hoạt/ Vô hiệu hóa" - -msgid "Enabled" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Kích hoạt Spanning Tree Protocol trên cầu nối này" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "Encryption" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "Lỗi" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Bộ tương hợp ethernet" - -msgid "Ethernet Switch" -msgstr "Bộ chuyển đảo ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Tập tin hệ thống" - -msgid "Filter" -msgstr "Lọc" - -msgid "Filter private" -msgstr "Filter private" - -msgid "Filter useless" -msgstr "Lọc không hữu dụng" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "Tìm gói" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "" - -msgid "Firewall Status" -msgstr "" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Phần cứng flash" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "Force" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "Ngưỡng cửa Phân đoạn" - -msgid "Frame Bursting" -msgstr "Khung nổ" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "Đi tới trang cấu hình thích hợp" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "" - -msgid "Hang Up" -msgstr "Hang Up" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Ở đây bạn có thể cấu hình những đặc tính cơ bản của thiết bị như tên máy chủ " -"hoặc múi giờ." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "" - -msgid "Hide ESSID" -msgstr "Giấu ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Host entries" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Host-IP or Network" - -msgid "Hostname" -msgstr "Tên host" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Tên host" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Địa chỉ IP" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 WAN Status" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Nhận dạng" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Nếu bộ nhớ vật lý không đủ dữ liệu không dùng có thể được swap tạm thời đến " -"một thiết bị swap để tạo ra nhiều khoảng trống hơn trong RAM. Hãy nhận biết rằng swapping dữ liệu là " -"một quá trình rất chậm vì một thiết bị swap không thể được truy cập với " -"datarates cao hơn của RAM." - -msgid "Ignore /etc/hosts" -msgstr "Lờ đi /etc/hosts" - -msgid "Ignore interface" -msgstr "Lờ đi giao diện" - -msgid "Ignore resolve file" -msgstr "Lờ đi tập tin resolve" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "Trong" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initscript" -msgstr "Initscript" - -msgid "Initscripts" -msgstr "Initscripts" - -msgid "Install" -msgstr "Cài đặt " - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "Giao diện " - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface is shutting down..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interface reconnected" -msgstr "" - -msgid "Interface shut down" -msgstr "" - -msgid "Interfaces" -msgstr "Giao diện " - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "Giá trị nhập vào không hợp lí" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Tên và mật mã không đúng. Xin thử lại " - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Dường như bạn cố gắng flash một hình ảnh không phù hợp với bộ nhớ flash, xin " -"vui lòng xác minh các tập tin hình ảnh!" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "Kernel Log" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "Phím " - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "Kill" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "Ngôn ngữ" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "Leasefile" - -msgid "Leasetime remaining" -msgstr "Leasetime còn lại" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "Giới hạn " - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Link On" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Tải " - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Giờ địa phương" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Tra vấn địa phương" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "Bản ghi tra vấn" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Đăng nhập " - -msgid "Logout" -msgstr "Thoát ra" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "Lọc địa chỉ MAC" - -msgid "MAC-Filter" -msgstr "Lọc MAC" - -msgid "MAC-List" -msgstr "Danh sách MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "Maximum hold time" -msgstr "Mức cao nhất" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Bộ nhớ" - -msgid "Memory usage (%)" -msgstr "Memory usage (%)" - -msgid "Metric" -msgstr "Metric" - -msgid "Minimum hold time" -msgstr "Mức thấp nhất" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Chế độ" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Thiết bị modem" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Lắp điểm" - -msgid "Mount Points" -msgstr "Lắp điểm" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Số điểm lắp xác định tại một điểm mà ở đó bộ nhớ sẽ được gắn vào hệ thống " -"tập tin" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Lắp tập tin hệ thống" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "Tên" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "Sự điều hướng" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "mạng lưới " - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Không có chuỗi trong bảng này" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "Không có quy luật trong chuỗi này" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "OK" -msgstr "OK " - -msgid "OPKG-Configuration" -msgstr "Cấu hình OPKG-" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Trên trang này bạn có thể định cấu hình giao diện network. Bạn có thể bắt " -"cầu nhiều giao diện bằng cách đánh dấu &quot;bridge interfaces&quot; " -"field và nhập tên vào của nhiều giao diện network phân tách bởi những khoảng " -"trống. Bạn có thể cũng dùng VLAN notation INTERFACE.VLANNR (e." -"g.: eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Lựa chọn " - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "Ra khỏi" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Nhìn chung" - -msgid "Owner" -msgstr "Owner" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Encapsulation" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Tên gói" - -msgid "Packets" -msgstr "Gói tin" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "Mật mã" - -msgid "Password authentication" -msgstr "Xác thực mật mã" - -msgid "Password of Private Key" -msgstr "Mật mã của private key" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Đường dẫn tới CA-Certificate" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Đường dẫn tới private key" - -msgid "Path to executable which handles the button event" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Tiến hành reboot" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Cài đặt căn bản" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "Nhập tên và mật mã" - -msgid "Policy" -msgstr "Chính sách" - -msgid "Port" -msgstr "Cửa " - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Ngăn chặn giao tiếp giữa client-và-client" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Proceed" - -msgid "Processes" -msgstr "Processes" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocol" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS Threshold" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Đọc /etc/ethers để định cấu hình DHCP-Server" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Reboot" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "Reboots hệ điều hành của công cụ" - -msgid "Receive" -msgstr "Receive" - -msgid "Receiver Antenna" -msgstr "Máy thu Antenna" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "Reconnecting interface" -msgstr "" - -msgid "References" -msgstr "Tham chiếu" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Loại bỏ" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "thay đổi nội dung" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Reset bộ đếm" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "Khởi động lại Firewall" - -msgid "Restore backup" -msgstr "Phục hồi backup" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "Revert" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "Routes" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Routes chỉ định trên giao diện và cổng một host nhất định hay network được " -"tiếp cận." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Lưu" - -msgid "Save & Apply" -msgstr "Lưu & áp dụng " - -msgid "Save & Apply" -msgstr "" - -msgid "Scan" -msgstr "Scan" - -msgid "Scheduled Tasks" -msgstr "Scheduled Tasks" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Cô lập đối tượng" - -msgid "Server Settings" -msgstr "" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "Dịch vụ " - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Shutdown this network" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Dung lượng " - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "Nhảy tới nội dung" - -msgid "Skip to navigation" -msgstr "Chuyển đến mục định hướng" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Phần mềm" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Sort" -msgstr "" - -msgid "Source" -msgstr "Nguồn" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Bắt đầu " - -msgid "Start priority" -msgstr "Bắt đầu ưu tiên" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Static IPv4 Routes" - -msgid "Static IPv6 Routes" -msgstr "Static IPv6 Routes" - -msgid "Static Leases" -msgstr "Thống kê leases" - -msgid "Static Routes" -msgstr "Static Routes" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Tình trạng" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "Yêu cầu nghiêm ngặt" - -msgid "Submit" -msgstr "Trình " - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "chuyển đổi" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "Hệ thống" - -msgid "System Log" -msgstr "System Log" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Bảng" - -msgid "Target" -msgstr "Đích" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminate" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Tập tin công cụ của bộ nhớ hoặc phân vùng (e.g. " -"/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Filesystem mà được dùng để format memory (e.g. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been committed" -msgstr "" - -msgid "The following changes have been reverted" -msgstr "Những thay đối sau đây đã được để trở về tình trạng cũ. " - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Hệ thống bây giờ đang flashing.
    DO NOT POWER OFF THE DEVICE!
    Chờ " -"một vài phút cho tới khi kết nối lại. Có thể cần phải làm mới địa chỉ của " -"máy tính để tiếp cận thiết bị một lần nữa, phụ thuộc vào cài đặt của bạn. " - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Tập tin đang tải hình ảnh không bao gồm một hổ trợ format. Bảo đảm rằng bạn " -"chọn một image format tổng quát cho platform." - -msgid "There are no active leases." -msgstr "" - -msgid "There are no pending changes to apply!" -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Đây là DHCP duy " -"nhất trong mạng địa phương. " - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Đây là system crontab mà scheduled tasks có thể bị định nghĩa." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"List này đưa ra một tầm nhìn tổng quát về xử lý hệ thống đang chạy và tình " -"trạng của chúng." - -msgid "This page allows the configuration of custom button actions" -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Trang này cung cấp một tổng quan về đang hoạt động kết nối mạng hiện tại." - -msgid "This section contains no values yet" -msgstr "Phần này chưa có giá trị nào" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Múi giờ " - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "" - -msgid "Transfer" -msgstr "Chuyển giao" - -msgid "Transmission Rate" -msgstr "Truyền tải rate" - -msgid "Transmit" -msgstr "Transmit" - -msgid "Transmit Power" -msgstr "Truyền tải năng lượng" - -msgid "Transmitter Antenna" -msgstr "Máy phát Antenna" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Loại " - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Thay đổi không lưu" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Tập tin đã tải lên" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Dùng /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Đã sử dụng" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Tên người dùng " - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Phiên bản" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "WMM Mode" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "Bộ tương hợp không dây" - -msgid "Wireless Network" -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Wireless Security" -msgstr "" - -msgid "Wireless is disabled or not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Wireless restarted" -msgstr "" - -msgid "Wireless shut down" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Bạn có thể bật hoặc tắt cài đặt init script tại đây. Thay đổi này sẽ được áp " -"dụng sau khi một thiết bị khởi động lại.
    Cảnh báo: Nếu bạn vô " -"hiệu hoá init script thiết yếu như &quot;network&quot;, công cụ của " -"bạn chó thể trở nên không truy cập được" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "tự động" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "tạo một cầu nối trên một giao diện được chỉ định" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "Vô hiệu hóa" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Tập tin được cho DHCP-leases sẽ được lưu trữ" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "help" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "Nếu mục tiêu là một network" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "Tập tin DNS địa phương" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "không " - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "" - -#~ msgid "Leasetime" -#~ msgstr "Leasetime" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "thống kê" - -#~ msgid "AR Support" -#~ msgstr "Hỗ trợ AR" - -#~ msgid "Background Scan" -#~ msgstr "Background Scan" - -#~ msgid "Compression" -#~ msgstr "Sức nén" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Vô hiệu hóa bộ chỉnh giờ HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Không gửi nhắc hồi đáp" - -#~ msgid "Fast Frames" -#~ msgstr "Khung nhanh" - -#~ msgid "Maximum Rate" -#~ msgstr "Mức cao nhất" - -#~ msgid "Minimum Rate" -#~ msgstr "Mức thấp nhất" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast Rate" - -#~ msgid "Outdoor Channels" -#~ msgstr "Kênh ngoại mạng" - -#~ msgid "Regulatory Domain" -#~ msgstr "Miền điều chỉnh" - -#~ msgid "Separate WDS" -#~ msgstr "Phân tách WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo Mode" - -#~ msgid "XR Support" -#~ msgstr "Hỗ trợ XR" diff --git a/package/luci/modules/luci-base/po/zh-cn/base.po b/package/luci/modules/luci-base/po/zh-cn/base.po deleted file mode 100644 index f516d42942..0000000000 --- a/package/luci/modules/luci-base/po/zh-cn/base.po +++ /dev/null @@ -1,3948 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Hsing-Wang Liao \n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s 在多个 VLAN 中均未关联!" - -msgid "(%d minute window, %d second interval)" -msgstr "(最近 %d 分钟信息,每 %d 秒刷新)" - -msgid "(%s available)" -msgstr "(%s 可用)" - -msgid "(empty)" -msgstr "(空)" - -msgid "(no interfaces attached)" -msgstr "(没有接口连接)" - -msgid "-- Additional Field --" -msgstr "-- 更多选项 --" - -msgid "-- Please choose --" -msgstr "-- 请选择 --" - -msgid "-- custom --" -msgstr "-- 自定义 --" - -msgid "-- match by device --" -msgstr "-- 根据设备匹配 --" - -msgid "-- match by label --" -msgstr "-- 根据标签匹配 --" - -msgid "-- match by uuid --" -msgstr "-- 根据 UUID 匹配 --" - -msgid "1 Minute Load:" -msgstr "1 分钟负载:" - -msgid "15 Minute Load:" -msgstr "15 分钟负载:" - -msgid "4-character hexadecimal ID" -msgstr "4 字符的十六进制 ID" - -msgid "464XLAT (CLAT)" -msgstr "464XLAT (CLAT)" - -msgid "5 Minute Load:" -msgstr "5 分钟负载:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "十六进制表示的 6 字节标识符,无冒号分隔" - -msgid "802.11r Fast Transition" -msgstr "802.11r 快速切换" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "802.11w 关联 SA 查询最大超时" - -msgid "802.11w Association SA Query retry timeout" -msgstr "802.11w 关联 SA 查询重试超时" - -msgid "802.11w Management Frame Protection" -msgstr "802.11w 管理帧保护" - -msgid "802.11w maximum timeout" -msgstr "802.11w 最大超时" - -msgid "802.11w retry timeout" -msgstr "802.11w 重试超时" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS 查询端口" - -msgid "DNS server port" -msgstr "DNS 服务器端口" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"按照“解析文件”里的顺序查询 DNS 服务" -"器" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4 地址" - -msgid "IPv4-Gateway" -msgstr "IPv4 网关" - -msgid "IPv4-Netmask" -msgstr "IPv4 子网掩码" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6 地址或网段(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6 网关" - -msgid "IPv6-Suffix (hex)" -msgstr "" -"IPv6 后缀(十六进制)" - -msgid "LED Configuration" -msgstr "LED 配置" - -msgid "LED Name" -msgstr "LED 名称" - -msgid "MAC-Address" -msgstr "MAC 地址" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"最大 DHCP 租约数量" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"最大 EDNS0 数据包大小" - -msgid "Max. concurrent queries" -msgstr "最大并发查询数" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    注意:如果 crontab 文件在编辑前为空,则需要手动重新启动 cron 服务。" - -msgid "A43C + J43 + A43" -msgstr "A43C + J43 + A43" - -msgid "A43C + J43 + A43 + V43" -msgstr "A43C + J43 + A43 + V43" - -msgid "ADSL" -msgstr "ADSL" - -msgid "AICCU (SIXXS)" -msgstr "AICCU (SIXXS)" - -msgid "ANSI T1.413" -msgstr "ANSI T1.413" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP 重试阈值" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "ATM(异步传输模式)" - -msgid "ATM Bridges" -msgstr "ATM 桥接" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM 虚拟通道标识(VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM 虚拟路径标识(VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM 桥是以 AAL5 协议封装以太网的虚拟 Linux 网桥,用于协同 DHCP 或 PPP 来拨号" -"连接到网络运营商。" - -msgid "ATM device number" -msgstr "ATM 设备号码" - -msgid "ATU-C System Vendor ID" -msgstr "ATU-C 系统供应商 ID" - -msgid "AYIYA" -msgstr "AYIYA" - -msgid "Access Concentrator" -msgstr "接入集中器" - -msgid "Access Point" -msgstr "接入点 AP" - -msgid "Action" -msgstr "动作" - -msgid "Actions" -msgstr "动作" - -msgid "Activate this network" -msgstr "激活此网络" - -msgid "Active IPv4-Routes" -msgstr "活动的 IPv4 路由" - -msgid "Active IPv6-Routes" -msgstr "活动的 IPv6 路由" - -msgid "Active Connections" -msgstr "活动连接" - -msgid "Active DHCP Leases" -msgstr "已分配的 DHCP 租约" - -msgid "Active DHCPv6 Leases" -msgstr "已分配的 DHCPv6 租约" - -msgid "Ad-Hoc" -msgstr "点对点 Ad-Hoc" - -msgid "Add" -msgstr "添加" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "添加本地域名后缀到 HOSTS 文件中的域名" - -msgid "Add new interface..." -msgstr "添加新接口..." - -msgid "Additional Hosts files" -msgstr "额外的 HOSTS 文件" - -msgid "Additional servers file" -msgstr "额外的 SERVERS 文件" - -msgid "Address" -msgstr "地址" - -msgid "Address to access local relay bridge" -msgstr "接入本地中继桥的地址" - -msgid "Administration" -msgstr "管理权" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "总发射功率(ACTATP)" - -msgid "Alert" -msgstr "警戒" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "从最低可用地址开始顺序分配 IP 地址" - -msgid "Allocate IP sequentially" -msgstr "顺序分配 IP" - -msgid "Allow SSH password authentication" -msgstr "允许 SSH 密码验证" - -msgid "Allow all except listed" -msgstr "仅允许列表外" - -msgid "Allow listed only" -msgstr "仅允许列表内" - -msgid "Allow localhost" -msgstr "允许本机" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "允许远程主机连接到本地 SSH 转发端口" - -msgid "Allow root logins with password" -msgstr "允许 root 用户凭密码登录" - -msgid "Allow the root user to login with password" -msgstr "允许 root 用户凭密码登录" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "允许 127.0.0.0/8 回环范围内的上行响应,例如:RBL 服务" - -msgid "Allowed IPs" -msgstr "允许的 IP" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" -"也请查看 SIXXS 上的隧道对比" - -msgid "Always announce default router" -msgstr "总是通告默认路由" - -msgid "Annex" -msgstr "Annex" - -msgid "Annex A + L + M (all)" -msgstr "Annex A + L + M(全部)" - -msgid "Annex A G.992.1" -msgstr "Annex A G.992.1" - -msgid "Annex A G.992.2" -msgstr "Annex A G.992.2" - -msgid "Annex A G.992.3" -msgstr "Annex A G.992.3" - -msgid "Annex A G.992.5" -msgstr "Annex A G.992.5" - -msgid "Annex B (all)" -msgstr "Annex B(全部)" - -msgid "Annex B G.992.1" -msgstr "Annex B G.992.1" - -msgid "Annex B G.992.3" -msgstr "Annex B G.992.3" - -msgid "Annex B G.992.5" -msgstr "Annex B G.992.5" - -msgid "Annex J (all)" -msgstr "Annex J(全部)" - -msgid "Annex L G.992.3 POTS 1" -msgstr "Annex L G.992.3 POTS 1" - -msgid "Annex M (all)" -msgstr "Annex M(全部)" - -msgid "Annex M G.992.3" -msgstr "Annex M G.992.3" - -msgid "Annex M G.992.5" -msgstr "Annex M G.992.5" - -msgid "Announce as default router even if no public prefix is available." -msgstr "即使没有可用的公网前缀,也仍通告自己为默认路由。" - -msgid "Announced DNS domains" -msgstr "通告的 DNS 域名" - -msgid "Announced DNS servers" -msgstr "通告的 DNS 服务器" - -msgid "Anonymous Identity" -msgstr "匿名身份" - -msgid "Anonymous Mount" -msgstr "自动挂载未配置的磁盘分区" - -msgid "Anonymous Swap" -msgstr "自动挂载未配置的 Swap 分区" - -msgid "Antenna 1" -msgstr "天线 1" - -msgid "Antenna 2" -msgstr "天线 2" - -msgid "Antenna Configuration" -msgstr "天线配置" - -msgid "Any zone" -msgstr "任意区域" - -msgid "Apply" -msgstr "应用" - -msgid "Applying changes" -msgstr "正在应用更改" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "将每个公共 IPv6 前缀的给定长度部分分配给此接口" - -msgid "Assign interfaces..." -msgstr "分配接口..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "将此十六进制子 ID 前缀分配给此接口" - -msgid "Associated Stations" -msgstr "已连接站点" - -msgid "Auth Group" -msgstr "认证组" - -msgid "Authentication" -msgstr "认证" - -msgid "Authentication Type" -msgstr "认证类型" - -msgid "Authoritative" -msgstr "唯一授权" - -msgid "Authorization Required" -msgstr "需要授权" - -msgid "Auto Refresh" -msgstr "自动刷新" - -msgid "Automatic" -msgstr "自动" - -msgid "Automatic Homenet (HNCP)" -msgstr "自动家庭网络(HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "在挂载前自动检查文件系统错误" - -msgid "Automatically mount filesystems on hotplug" -msgstr "通过 hotplug 自动挂载磁盘" - -msgid "Automatically mount swap on hotplug" -msgstr "通过 hotplug 自动挂载 swap 分区" - -msgid "Automount Filesystem" -msgstr "自动挂载磁盘" - -msgid "Automount Swap" -msgstr "自动挂载 Swap" - -msgid "Available" -msgstr "可用" - -msgid "Available packages" -msgstr "可用软件包" - -msgid "Average:" -msgstr "平均:" - -msgid "B43 + B43C" -msgstr "B43 + B43C" - -msgid "B43 + B43C + V43" -msgstr "B43 + B43C + V43" - -msgid "BR / DMR / AFTR" -msgstr "BR / DMR / AFTR" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "返回" - -msgid "Back to Overview" -msgstr "返回至概况" - -msgid "Back to configuration" -msgstr "返回至配置" - -msgid "Back to overview" -msgstr "返回至概况" - -msgid "Back to scan results" -msgstr "返回至扫描结果" - -msgid "Backup / Flash Firmware" -msgstr "备份/升级" - -msgid "Backup / Restore" -msgstr "备份/恢复" - -msgid "Backup file list" -msgstr "文件备份列表" - -msgid "Bad address specified!" -msgstr "指定了错误的地址!" - -msgid "Band" -msgstr "频宽" - -msgid "Behind NAT" -msgstr "在 NAT 网络内" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"下面是待备份的文件清单。包含了更改的配置文件、必要的基础文件和用户自定义的需" -"备份文件。" - -msgid "Bind interface" -msgstr "绑定接口" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "仅绑定到特定接口,而不是全部地址。" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "将隧道绑定到此接口(可选)。" - -msgid "Bitrate" -msgstr "传输速率" - -msgid "Bogus NX Domain Override" -msgstr "忽略虚假空域名解析" - -msgid "Bridge" -msgstr "桥接" - -msgid "Bridge interfaces" -msgstr "桥接接口" - -msgid "Bridge unit number" -msgstr "桥接号" - -msgid "Bring up on boot" -msgstr "开机自动运行" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s 无线控制器" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 无线控制器" - -msgid "Buffered" -msgstr "已缓冲" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "由固件指定的软件源。此处的设置在任何系统升级中都不会被保留。" - -msgid "Buttons" -msgstr "按键" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "CA 证书,如果留空,则证书将在第一次连接后被保存。" - -msgid "CPU usage (%)" -msgstr "CPU 使用率(%)" - -msgid "Cancel" -msgstr "取消" - -msgid "Category" -msgstr "分类" - -msgid "Chain" -msgstr "链" - -msgid "Changes" -msgstr "修改数" - -msgid "Changes applied." -msgstr "更改已应用" - -msgid "Changes the administrator password for accessing the device" -msgstr "修改访问设备的管理员密码" - -msgid "Channel" -msgstr "信道" - -msgid "Check" -msgstr "检查" - -msgid "Check fileystems before mount" -msgstr "在挂载前检查文件系统" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "选中此选项以从无线中删除现有网络。" - -msgid "Checksum" -msgstr "校验值" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"为此接口分配所属的防火墙区域,选择“不指定”可将该接口移出已关联的区域,或者填" -"写“创建”栏来创建一个新的区域,并将当前接口与之建立关联。" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "选择指派到此无线接口的网络,或者填写“创建”栏来新建网络。" - -msgid "Cipher" -msgstr "算法" - -msgid "Cisco UDP encapsulation" -msgstr "Cisco UDP 封装" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"点击“生成备份”下载当前配置文件的 tar 存档。要将固件恢复到初始状态,请单击“执" -"行重置”(仅 squashfs 格式的固件有效)。" - -msgid "Client" -msgstr "客户端 Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "请求 DHCP 时发送的客户端 ID" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "在给定时间(秒)后关闭非活动链接,0 为保持连接" - -msgid "Close list..." -msgstr "关闭列表..." - -msgid "Collecting data..." -msgstr "正在收集数据..." - -msgid "Command" -msgstr "命令" - -msgid "Common Configuration" -msgstr "一般配置" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "配置" - -msgid "Configuration applied." -msgstr "配置已应用。" - -msgid "Configuration files will be kept." -msgstr "配置文件将被保留。" - -msgid "Confirmation" -msgstr "确认密码" - -msgid "Connect" -msgstr "连接" - -msgid "Connected" -msgstr "已连接" - -msgid "Connection Limit" -msgstr "连接数限制" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "当 TLS 不可用时,与服务器连接失败" - -msgid "Connections" -msgstr "连接" - -msgid "Country" -msgstr "国家" - -msgid "Country Code" -msgstr "国家代码" - -msgid "Cover the following interface" -msgstr "包括以下接口" - -msgid "Cover the following interfaces" -msgstr "包括以下接口" - -msgid "Create / Assign firewall-zone" -msgstr "创建/分配防火墙区域" - -msgid "Create Interface" -msgstr "创建新接口" - -msgid "Create a bridge over multiple interfaces" -msgstr "在多个接口上创建桥接" - -msgid "Critical" -msgstr "致命错误" - -msgid "Cron Log Level" -msgstr "Cron 日志级别" - -msgid "Custom Interface" -msgstr "自定义接口" - -msgid "Custom delegated IPv6-prefix" -msgstr "自定义分配的 IPv6 前缀" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "自定义软件源地址,例如:私有的软件源。此文件在系统升级时将被保留。" - -msgid "Custom feeds" -msgstr "自定义软件源" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "自定义此设备的 LED 行为。" - -msgid "DHCP Leases" -msgstr "DHCP 分配" - -msgid "DHCP Server" -msgstr "DHCP 服务器" - -msgid "DHCP and DNS" -msgstr "DHCP/DNS" - -msgid "DHCP client" -msgstr "DHCP 客户端" - -msgid "DHCP-Options" -msgstr "DHCP 选项" - -msgid "DHCPv6 Leases" -msgstr "DHCPv6 分配" - -msgid "DHCPv6 client" -msgstr "DHCPv6 客户端" - -msgid "DHCPv6-Mode" -msgstr "DHCPv6 模式" - -msgid "DHCPv6-Service" -msgstr "DHCPv6 服务" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS 转发" - -msgid "DNS-Label / FQDN" -msgstr "DNS-Label / FQDN" - -msgid "DNSSEC" -msgstr "DNSSEC" - -msgid "DNSSEC check unsigned" -msgstr "DNSSEC 检查未签名" - -msgid "DPD Idle Timeout" -msgstr "DPD 空闲超时" - -msgid "DS-Lite AFTR address" -msgstr "DS-Lite AFTR 地址" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "DSL 状态" - -msgid "DSL line mode" -msgstr "DSL 线路模式" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "数据速率" - -msgid "Debug" -msgstr "调试" - -msgid "Default %d" -msgstr "默认 %d" - -msgid "Default gateway" -msgstr "默认网关" - -msgid "Default is stateless + stateful" -msgstr "默认是无状态的 + 有状态的" - -msgid "Default route" -msgstr "默认路由" - -msgid "Default state" -msgstr "默认状态" - -msgid "Define a name for this network." -msgstr "为网络定义名称。" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"设置 DHCP 的附加选项,例如设定 \"6,192.168.2.1,192.168.2.2\" 表" -"示通告不同的 DNS 服务器给客户端。" - -msgid "Delete" -msgstr "删除" - -msgid "Delete this network" -msgstr "删除此网络" - -msgid "Description" -msgstr "描述" - -msgid "Design" -msgstr "主题" - -msgid "Destination" -msgstr "目标地址" - -msgid "Device" -msgstr "设备" - -msgid "Device Configuration" -msgstr "设备配置" - -msgid "Device is rebooting..." -msgstr "设备正在重启..." - -msgid "Device unreachable" -msgstr "无法连接到设备" - -msgid "Diagnostics" -msgstr "网络诊断" - -msgid "Dial number" -msgstr "拨号号码" - -msgid "Directory" -msgstr "目录" - -msgid "Disable" -msgstr "禁用" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"不在此接口提供 DHCP 服务。" - -msgid "Disable DNS setup" -msgstr "停用 DNS 设定" - -msgid "Disable Encryption" -msgstr "禁用加密" - -msgid "Disabled" -msgstr "禁用" - -msgid "Disabled (default)" -msgstr "禁用(默认)" - -msgid "Discard upstream RFC1918 responses" -msgstr "丢弃 RFC1918 上行响应数据" - -msgid "Displaying only packages containing" -msgstr "只显示有内容的软件包" - -msgid "Distance Optimization" -msgstr "距离优化" - -msgid "Distance to farthest network member in meters." -msgstr "最远网络用户的距离(米)。" - -msgid "Distribution feeds" -msgstr "发行版软件源" - -msgid "Diversity" -msgstr "差异" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq 为 NAT 防火墙提供" -"了一个集成的 DHCP " -"服务器和 DNS 转发器" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "不缓存无用的回应, 比如:不存在的域名" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "不转发公共域名服务器无法回应的请求" - -msgid "Do not forward reverse lookups for local networks" -msgstr "不转发本地网络的反向查询" - -msgid "Domain required" -msgstr "忽略空域名解析" - -msgid "Domain whitelist" -msgstr "域名白名单" - -msgid "Don't Fragment" -msgstr "禁止分片" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"不转发没有 DNS 名称的解析请求" - -msgid "Download and install package" -msgstr "下载并安装软件包" - -msgid "Download backup" -msgstr "下载备份" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear 实例" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear 提供 SSH 访问和 SCP 服务" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "Dual-Stack Lite (RFC6333)" - -msgid "Dynamic DHCP" -msgstr "动态 DHCP" - -msgid "Dynamic tunnel" -msgstr "动态隧道" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"为所有客户端提供 DHCP 服务。如果禁用,将只对具有静态租约的客户提供服务。" - -msgid "EA-bits length" -msgstr "EA-bits 长度" - -msgid "EAP-Method" -msgstr "EAP 类型" - -msgid "Edit" -msgstr "修改" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "编辑上方的原始配置数据来修复错误,点击“保存”按钮以重新载入此页面。" - -msgid "Edit this interface" -msgstr "修改此接口" - -msgid "Edit this network" -msgstr "修改此网络" - -msgid "Emergency" -msgstr "紧急" - -msgid "Enable" -msgstr "启用" - -msgid "Enable STP" -msgstr "开启 STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "启用 HE.net 动态终端更新" - -msgid "Enable IPv6 negotiation" -msgstr "启用 IPv6 协商" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "在 PPP 链路上启用 IPv6 协商" - -msgid "Enable Jumbo Frame passthrough" -msgstr "启用巨型帧透传" - -msgid "Enable NTP client" -msgstr "启用 NTP 客户端" - -msgid "Enable Single DES" -msgstr "启用单个 DES" - -msgid "Enable TFTP server" -msgstr "启用 TFTP 服务器" - -msgid "Enable VLAN functionality" -msgstr "启用 VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "启用 WPS 一键加密按钮,需要 WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "启用智能交换学习" - -msgid "Enable mirroring of incoming packets" -msgstr "启用流入数据包镜像" - -msgid "Enable mirroring of outgoing packets" -msgstr "启用流出数据包镜像" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "启用后报文的 DF(禁止分片)标志。" - -msgid "Enable this mount" -msgstr "启用此挂载点" - -msgid "Enable this swap" -msgstr "启用此 swap 分区" - -msgid "Enable/Disable" -msgstr "启用/禁用" - -msgid "Enabled" -msgstr "启用" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "启用属于同一移动域的接入点之间的快速漫游" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "在此桥接上启用生成树协议" - -msgid "Encapsulation mode" -msgstr "封装模式" - -msgid "Encryption" -msgstr "加密" - -msgid "Endpoint Host" -msgstr "端点主机" - -msgid "Endpoint Port" -msgstr "端点端口" - -msgid "Erasing..." -msgstr "擦除中..." - -msgid "Error" -msgstr "错误" - -msgid "Errored seconds (ES)" -msgstr "错误秒数(ES)" - -msgid "Ethernet Adapter" -msgstr "以太网适配器" - -msgid "Ethernet Switch" -msgstr "以太网交换机" - -msgid "Exclude interfaces" -msgstr "排除接口" - -msgid "Expand hosts" -msgstr "扩展 HOSTS 文件中的主机后缀" - -msgid "Expires" -msgstr "到期时间" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "租用地址的到期时间,最短 2 分钟(2m)。" - -msgid "External" -msgstr "外部" - -msgid "External R0 Key Holder List" -msgstr "外部 R0KH 列表" - -msgid "External R1 Key Holder List" -msgstr "外部 R1KH 列表" - -msgid "External system log server" -msgstr "外部系统日志服务器地址" - -msgid "External system log server port" -msgstr "外部系统日志服务器端口" - -msgid "External system log server protocol" -msgstr "外部系统日志服务器协议" - -msgid "Extra SSH command options" -msgstr "额外的 SSH 命令选项" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "文件" - -msgid "Filename of the boot image advertised to clients" -msgstr "向客户端通告的启动镜像文件名" - -msgid "Filesystem" -msgstr "文件系统" - -msgid "Filter" -msgstr "过滤器" - -msgid "Filter private" -msgstr "过滤本地包" - -msgid "Filter useless" -msgstr "过滤无用包" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "查找当前系统上的所有分区和 swap 设备,并根据查找结果生成并替换现有配置" - -msgid "Find and join network" -msgstr "搜索并加入网络" - -msgid "Find package" -msgstr "查找软件包" - -msgid "Finish" -msgstr "完成" - -msgid "Firewall" -msgstr "防火墙" - -msgid "Firewall Mark" -msgstr "防火墙标识" - -msgid "Firewall Settings" -msgstr "防火墙设置" - -msgid "Firewall Status" -msgstr "防火墙状态" - -msgid "Firmware File" -msgstr "固件文件" - -msgid "Firmware Version" -msgstr "固件版本" - -msgid "Fixed source port for outbound DNS queries" -msgstr "指定的 DNS 查询源端口" - -msgid "Flash Firmware" -msgstr "刷新固件" - -msgid "Flash image..." -msgstr "刷写固件..." - -msgid "Flash new firmware image" -msgstr "刷写新的固件" - -msgid "Flash operations" -msgstr "刷新操作" - -msgid "Flashing..." -msgstr "刷写中..." - -msgid "Force" -msgstr "强制" - -msgid "Force CCMP (AES)" -msgstr "强制 CCMP(AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "即使检测到另一台服务器,也要强制使用此网络上的 DHCP。" - -msgid "Force TKIP" -msgstr "强制 TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "强制 TKIP 和 CCMP(AES)" - -msgid "Force link" -msgstr "强制链路" - -msgid "Force use of NAT-T" -msgstr "强制使用 NAT-T" - -msgid "Form token mismatch" -msgstr "表单令牌不匹配" - -msgid "Forward DHCP traffic" -msgstr "转发 DHCP 数据包" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "前向纠错秒数(FECS)" - -msgid "Forward broadcast traffic" -msgstr "转发广播数据包" - -msgid "Forwarding mode" -msgstr "转发模式" - -msgid "Fragmentation Threshold" -msgstr "分片阈值" - -msgid "Frame Bursting" -msgstr "帧突发" - -msgid "Free" -msgstr "空闲数" - -msgid "Free space" -msgstr "空闲空间" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" -"有关 WireGuard 接口和 Peer 的更多信息:wireguard.io。" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "仅 GPRS" - -msgid "Gateway" -msgstr "网关" - -msgid "Gateway ports" -msgstr "网关端口" - -msgid "General Settings" -msgstr "基本设置" - -msgid "General Setup" -msgstr "基本设置" - -msgid "General options for opkg" -msgstr "OPKG 基础配置" - -msgid "Generate Config" -msgstr "生成配置" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "生成备份" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "通用 802.11%s 无线控制器" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "由于密码验证不匹配,密码没有更改!" - -msgid "Global Settings" -msgstr "全局设置" - -msgid "Global network options" -msgstr "全局网络选项" - -msgid "Go to password configuration..." -msgstr "跳转到密码配置页..." - -msgid "Go to relevant configuration page" -msgstr "跳转到相关的配置页面" - -msgid "Group Password" -msgstr "组密码" - -msgid "Guest" -msgstr "访客" - -msgid "HE.net password" -msgstr "HE.net 密码" - -msgid "HE.net username" -msgstr "HE.net 用户名" - -msgid "HT mode (802.11n)" -msgstr "HT 模式(802.11n)" - -msgid "Handler" -msgstr "处理程序" - -msgid "Hang Up" -msgstr "挂起" - -msgid "Header Error Code Errors (HEC)" -msgstr "请求头错误代码错误(HEC)" - -msgid "Heartbeat" -msgstr "心跳" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "配置路由器的部分基础信息。" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "请在此处粘贴 SSH 公钥,每行一个,用于 SSH 公钥认证。" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Hermes 802.11b 无线控制器" - -msgid "Hide ESSID" -msgstr "隐藏 ESSID" - -msgid "Host" -msgstr "主机" - -msgid "Host entries" -msgstr "主机目录" - -msgid "Host expiry timeout" -msgstr "主机到期超时" - -msgid "Host-IP or Network" -msgstr "主机 IP 或网络" - -msgid "Hostname" -msgstr "主机名" - -msgid "Hostname to send when requesting DHCP" -msgstr "请求 DHCP 时发送的主机名" - -msgid "Hostnames" -msgstr "主机名" - -msgid "Hybrid" -msgstr "混合" - -msgid "IKE DH Group" -msgstr "IKE DH 组" - -msgid "IP Addresses" -msgstr "IP 地址" - -msgid "IP address" -msgstr "IP 地址" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 防火墙" - -msgid "IPv4 WAN Status" -msgstr "IPv4 WAN 状态" - -msgid "IPv4 address" -msgstr "IPv4 地址" - -msgid "IPv4 and IPv6" -msgstr "IPv4 和 IPv6" - -msgid "IPv4 assignment length" -msgstr "分配 IPv4 长度" - -msgid "IPv4 broadcast" -msgstr "IPv4 广播" - -msgid "IPv4 gateway" -msgstr "IPv4 网关" - -msgid "IPv4 netmask" -msgstr "IPv4 子网掩码" - -msgid "IPv4 only" -msgstr "仅 IPv4" - -msgid "IPv4 prefix" -msgstr "IPv4 地址前缀" - -msgid "IPv4 prefix length" -msgstr "IPv4 地址前缀长度" - -msgid "IPv4-Address" -msgstr "IPv4 地址" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4-in-IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 防火墙" - -msgid "IPv6 Neighbours" -msgstr "IPv6 网上邻居" - -msgid "IPv6 Settings" -msgstr "IPv6 设置" - -msgid "IPv6 ULA-Prefix" -msgstr "IPv6 ULA 前缀" - -msgid "IPv6 WAN Status" -msgstr "IPv6 WAN 状态" - -msgid "IPv6 address" -msgstr "IPv6 地址" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "绑定到隧道本端的 IPv6 地址(可选)" - -msgid "IPv6 assignment hint" -msgstr "IPv6 分配提示" - -msgid "IPv6 assignment length" -msgstr "IPv6 分配长度" - -msgid "IPv6 gateway" -msgstr "IPv6 网关" - -msgid "IPv6 only" -msgstr "仅 IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 地址前缀" - -msgid "IPv6 prefix length" -msgstr "IPv6 地址前缀长度" - -msgid "IPv6 routed prefix" -msgstr "IPv6 路由前缀" - -msgid "IPv6 suffix" -msgstr "IPv6 后缀" - -msgid "IPv6-Address" -msgstr "IPv6 地址" - -msgid "IPv6-PD" -msgstr "IPv6-PD" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-over-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-over-IPv4 (6to4)" - -msgid "Identity" -msgstr "鉴权" - -msgid "If checked, 1DES is enabled" -msgstr "选中以启用 1DES" - -msgid "If checked, encryption is disabled" -msgstr "选中以禁用加密" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "如果指定,则通过 UUID 而不是固定的设备文件来挂载设备" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "如果指定,则通过分区卷标而不是固定的设备文件来挂载设备" - -msgid "If unchecked, no default route is configured" -msgstr "留空则不配置默认路由" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "留空则忽略所通告的 DNS 服务器地址" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"如果物理内存不足,闲置数据可自动移到 swap 区暂存,以增加可用的 RAM。请注意:swap 区的数据处理会非常慢,因为 " -"swap 设备无法像 RAM 这样的高速率" -"访问。" - -msgid "Ignore /etc/hosts" -msgstr "忽略 /etc/hosts" - -msgid "Ignore interface" -msgstr "忽略此接口" - -msgid "Ignore resolve file" -msgstr "忽略解析文件" - -msgid "Image" -msgstr "固件文件" - -msgid "In" -msgstr "入口" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" -"为了防止未经授权访问系统,您的请求已被阻止。点击下面的 “继续 »” 来返回上一" -"页。" - -msgid "Inactivity timeout" -msgstr "活动超时" - -msgid "Inbound:" -msgstr "入站:" - -msgid "Info" -msgstr "信息" - -msgid "Initscript" -msgstr "启动脚本" - -msgid "Initscripts" -msgstr "启动脚本" - -msgid "Install" -msgstr "安装" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "安装 iputils-traceroute6 以进行 IPv6 路由追踪" - -msgid "Install package %q" -msgstr "安装软件包 %q" - -msgid "Install protocol extensions..." -msgstr "安装扩展协议..." - -msgid "Installed packages" -msgstr "已安装软件包" - -msgid "Interface" -msgstr "接口" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "接口设备 %q 从 %q 自动迁移到了 %q。" - -msgid "Interface Configuration" -msgstr "接口配置" - -msgid "Interface Overview" -msgstr "接口总览" - -msgid "Interface is reconnecting..." -msgstr "正在重新连接接口..." - -msgid "Interface is shutting down..." -msgstr "正在关闭接口..." - -msgid "Interface name" -msgstr "接口名称" - -msgid "Interface not present or not connected yet." -msgstr "接口不存在或未连接。" - -msgid "Interface reconnected" -msgstr "接口已重新连接" - -msgid "Interface shut down" -msgstr "接口已关闭" - -msgid "Interfaces" -msgstr "接口" - -msgid "Internal" -msgstr "内部" - -msgid "Internal Server Error" -msgstr "内部服务器错误" - -msgid "Invalid" -msgstr "无效" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "无效的 VLAN ID!只有 %d 和 %d 之间的 ID 有效。" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "无效的 VLAN ID!只允许唯一的 ID" - -msgid "Invalid username and/or password! Please try again." -msgstr "无效的用户名和/或密码!请重试。" - -msgid "Isolate Clients" -msgstr "隔离客户端" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "您尝试刷写的固件与本路由器不兼容,请重新验证固件文件。" - -msgid "JavaScript required!" -msgstr "需要 JavaScript!" - -msgid "Join Network" -msgstr "加入网络" - -msgid "Join Network: Wireless Scan" -msgstr "加入网络:搜索无线" - -msgid "Joining Network: %q" -msgstr "加入网络:%q" - -msgid "Keep settings" -msgstr "保留配置" - -msgid "Kernel Log" -msgstr "内核日志" - -msgid "Kernel Version" -msgstr "内核版本" - -msgid "Key" -msgstr "密码" - -msgid "Key #%d" -msgstr "密码 #%d" - -msgid "Kill" -msgstr "强制关闭" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP 服务器" - -msgid "LCP echo failure threshold" -msgstr "LCP 响应故障阈值" - -msgid "LCP echo interval" -msgstr "LCP 响应间隔" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "卷标" - -msgid "Language" -msgstr "语言" - -msgid "Language and Style" -msgstr "语言和界面" - -msgid "Latency" -msgstr "延迟" - -msgid "Leaf" -msgstr "叶节点" - -msgid "Lease time" -msgstr "租期" - -msgid "Lease validity time" -msgstr "有效租期" - -msgid "Leasefile" -msgstr "租约文件" - -msgid "Leasetime remaining" -msgstr "剩余租期" - -msgid "Leave empty to autodetect" -msgstr "留空则自动探测" - -msgid "Leave empty to use the current WAN address" -msgstr "留空则使用当前 WAN 地址" - -msgid "Legend:" -msgstr "图例:" - -msgid "Limit" -msgstr "客户数" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "仅在网卡所属的子网中提供 DNS 服务。" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "仅监听这些接口和环回接口。" - -msgid "Line Attenuation (LATN)" -msgstr "线路衰减(LATN)" - -msgid "Line Mode" -msgstr "线路模式" - -msgid "Line State" -msgstr "线路状态" - -msgid "Line Uptime" -msgstr "线路运行时间" - -msgid "Link On" -msgstr "活动链接" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"将请求转发到的 DNS 服务器列表" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" -"同一移动域中的 R0KH 列表。
    格式:MAC 地址,NAS 标识符,128 位密钥(十六" -"进制字符串)。
    在从初始移动域关联期间使用的 R0KH 中请求 PMK-R1 密钥时," -"该列表用于将 R0KH-ID(NAS 标识符)映射到目标 MAC 地址。" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" -"同一移动域中的 R1KH 列表。
    格式:MAC 地址,R1KH-ID(包含冒号的 6 个八位" -"字节),128 位密钥(十六进制字符串)。
    当从 R0KH 发送 PMK-R1 键时,此列" -"表用于将 R1KH-ID 映射到目标 MAC 地址。这也是可以请求 PMK-R1 键的 MD 中授权的 " -"R1KH 的列表。" - -msgid "List of SSH key files for auth" -msgstr "用于认证的 SSH 密钥文件列表" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "允许 RFC1918 响应的域名列表" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "允许虚假空域名响应的服务器列表" - -msgid "Listen Interfaces" -msgstr "监听接口" - -msgid "Listen Port" -msgstr "监听端口" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "仅监听指定的接口,未指定则监听全部" - -msgid "Listening port for inbound DNS queries" -msgstr "入站 DNS 查询端口" - -msgid "Load" -msgstr "负载" - -msgid "Load Average" -msgstr "平均负载" - -msgid "Loading" -msgstr "加载中" - -msgid "Local IP address to assign" -msgstr "要分配的本地 IP 地址" - -msgid "Local IPv4 address" -msgstr "本地 IPv4 地址" - -msgid "Local IPv6 address" -msgstr "本地 IPv6 地址" - -msgid "Local Service Only" -msgstr "仅本地服务" - -msgid "Local Startup" -msgstr "本地启动脚本" - -msgid "Local Time" -msgstr "本地时间" - -msgid "Local domain" -msgstr "本地域名" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "本地域名规则。与此域匹配的名称从不转发,仅从 DHCP 或 HOSTS 文件解析" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "本地域名后缀将添加到 DHCP 和 HOSTS 文件条目" - -msgid "Local server" -msgstr "本地服务器" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "如果有多个 IP 可用,则根据请求来源的子网来本地化主机名" - -msgid "Localise queries" -msgstr "本地化查询" - -msgid "Locked to channel %s used by: %s" -msgstr "信道道已被锁定为 %s,因为该信道被 %s 使用" - -msgid "Log output level" -msgstr "日志记录等级" - -msgid "Log queries" -msgstr "记录查询日志" - -msgid "Logging" -msgstr "日志" - -msgid "Login" -msgstr "登录" - -msgid "Logout" -msgstr "退出" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "信号丢失秒数(LOSS)" - -msgid "Lowest leased address as offset from the network address." -msgstr "网络地址的起始分配基址。" - -msgid "MAC-Address" -msgstr "MAC 地址" - -msgid "MAC-Address Filter" -msgstr "MAC 地址过滤" - -msgid "MAC-Filter" -msgstr "MAC 过滤" - -msgid "MAC-List" -msgstr "MAC 列表" - -msgid "MAP / LW4over6" -msgstr "MAP / LW4over6" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "确保使用以下命令来复制根文件系统:" - -msgid "Manual" -msgstr "手动" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "最大可达数据速率(ATTNDR)" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "允许的最大 DHCP 租用数" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "允许的最大并发 DNS 查询数" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "允许的最大 EDNS.0 UDP 数据包大小" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "调制解调器就绪的最大等待时间(秒)" - -msgid "Maximum hold time" -msgstr "最大持续时间" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"名称的最大长度为 15 个字符,包含根据协议类型,网桥自动添加上的名字前缀(br-、" -"6in4-、pppoe- 等)" - -msgid "Maximum number of leased addresses." -msgstr "最大地址分配数量。" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "内存" - -msgid "Memory usage (%)" -msgstr "内存使用率(%)" - -msgid "Metric" -msgstr "跃点数" - -msgid "Minimum hold time" -msgstr "最低持续时间" - -msgid "Mirror monitor port" -msgstr "数据包镜像监听端口" - -msgid "Mirror source port" -msgstr "数据包镜像源端口" - -msgid "Missing protocol extension for proto %q" -msgstr "缺少协议 %q 的协议扩展" - -msgid "Mobility Domain" -msgstr "移动域" - -msgid "Mode" -msgstr "模式" - -msgid "Model" -msgstr "主机型号" - -msgid "Modem device" -msgstr "调制解调器节点" - -msgid "Modem init timeout" -msgstr "调制解调器初始化超时" - -msgid "Monitor" -msgstr "监听" - -msgid "Mount Entry" -msgstr "挂载项目" - -msgid "Mount Point" -msgstr "挂载点" - -msgid "Mount Points" -msgstr "挂载点" - -msgid "Mount Points - Mount Entry" -msgstr "挂载点 - 存储区" - -msgid "Mount Points - Swap Entry" -msgstr "挂载点 - 交换区" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "配置存储设备挂载到文件系统中的位置和参数" - -msgid "Mount filesystems not specifically configured" -msgstr "自动挂载未专门配置挂载点的分区" - -msgid "Mount options" -msgstr "挂载选项" - -msgid "Mount point" -msgstr "挂载点" - -msgid "Mount swap not specifically configured" -msgstr "自动挂载未专门配置的 swap 分区" - -msgid "Mounted file systems" -msgstr "已挂载的文件系统" - -msgid "Move down" -msgstr "下移" - -msgid "Move up" -msgstr "上移" - -msgid "Multicast address" -msgstr "多播地址" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "NAT-T 模式" - -msgid "NAT64 Prefix" -msgstr "NAT64 前缀" - -msgid "NCM" -msgstr "NCM" - -msgid "NDP-Proxy" -msgstr "NDP 代理" - -msgid "NT Domain" -msgstr "NT 域" - -msgid "NTP server candidates" -msgstr "候选 NTP 服务器" - -msgid "NTP sync time-out" -msgstr "NTP 同步超时" - -msgid "Name" -msgstr "名称" - -msgid "Name of the new interface" -msgstr "新接口的名称" - -msgid "Name of the new network" -msgstr "新网络的名称" - -msgid "Navigation" -msgstr "导航" - -msgid "Netmask" -msgstr "子网掩码" - -msgid "Network" -msgstr "网络" - -msgid "Network Utilities" -msgstr "网络工具" - -msgid "Network boot image" -msgstr "网络启动镜像" - -msgid "Network without interfaces." -msgstr "无接口的网络。" - -msgid "Next »" -msgstr "下一步 »" - -msgid "No DHCP Server configured for this interface" -msgstr "本接口未配置 DHCP 服务器" - -msgid "No NAT-T" -msgstr "无 NAT-T" - -msgid "No chains in this table" -msgstr "本表中没有链" - -msgid "No files found" -msgstr "未找到文件" - -msgid "No information available" -msgstr "无可用信息" - -msgid "No negative cache" -msgstr "禁用无效信息缓存" - -msgid "No network configured on this device" -msgstr "本设备未配置网络" - -msgid "No network name specified" -msgstr "未指定网络名" - -msgid "No package lists available" -msgstr "无可用软件列表" - -msgid "No password set!" -msgstr "未设置密码!" - -msgid "No rules in this chain" -msgstr "本链没有规则" - -msgid "No zone assigned" -msgstr "未指定区域" - -msgid "Noise" -msgstr "噪声" - -msgid "Noise Margin (SNR)" -msgstr "噪声容限(SNR)" - -msgid "Noise:" -msgstr "噪声:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "非抢占 CRC 错误(CRC_P)" - -msgid "Non-wildcard" -msgstr "非全部地址" - -msgid "None" -msgstr "无" - -msgid "Normal" -msgstr "正常" - -msgid "Not Found" -msgstr "未找到" - -msgid "Not associated" -msgstr "未关联" - -msgid "Not connected" -msgstr "未连接" - -msgid "Note: Configuration files will be erased." -msgstr "注意:配置文件将被删除。" - -msgid "Note: interface name length" -msgstr "注意:接口名称长度" - -msgid "Notice" -msgstr "注意" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "OK" -msgstr "确认" - -msgid "OPKG-Configuration" -msgstr "OPKG 配置" - -msgid "Obfuscated Group Password" -msgstr "混淆组密码" - -msgid "Obfuscated Password" -msgstr "混淆密码" - -msgid "Off-State Delay" -msgstr "关闭时间" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"在此页面,您可以配置网络接口。您可以勾选“桥接接口”,并输入由空格分隔的多个网" -"络接口的名称来桥接多个接口。接口名称中可以使用 VLAN 记号 INTERFACE.VLANNR(例如:" -"eth0.1)。" - -msgid "On-State Delay" -msgstr "通电时间" - -msgid "One of hostname or mac address must be specified!" -msgstr "请指定主机名或MAC地址!" - -msgid "One or more fields contain invalid values!" -msgstr "一个或多个选项值有误!" - -msgid "One or more invalid/required values on tab" -msgstr "选项卡上存在一个或多个无效/必需值" - -msgid "One or more required fields have no value!" -msgstr "一个或多个必选项值为空!" - -msgid "Open list..." -msgstr "打开列表..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "OpenConnect (CISCO AnyConnect)" - -msgid "Operating frequency" -msgstr "工作频率" - -msgid "Option changed" -msgstr "修改的选项" - -msgid "Option removed" -msgstr "移除的选项" - -msgid "Optional" -msgstr "可选" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "可选,设置这个选项会覆盖默认服务器(tic.sixxs.net)" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "可选,如果您的 SIXXS 账号拥有一个以上的隧道请设置此项" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" -"可选,传出加密数据包的 32 位标记。请输入十六进制值,以 0x 开头。" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" -"可选,允许的值:'eui64'、'random' 和其他固定值(例如:'::1' 或 '::1:2')。当" -"从授权服务器获取到 IPv6 前缀(如 'a:b:c:d::'),使用后缀(如 '::1')合成 " -"IPv6 地址('a:b:c:d::1')分配给此接口。" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "可选,Base64 编码的预共享密钥。" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "可选,为此 Peer 创建允许 IP 的路由。" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "可选,Peer 的主机。" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "可选,隧道接口的最大传输单元。" - -msgid "Optional. Port of peer." -msgstr "可选,Peer 的端口。" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"可选,Keep-Alive 消息之间的秒数,默认为 0(禁用)。如果此设备位于 NAT 之后," -"建议使用的值为 25。" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "可选,用于传出和传入数据包的 UDP 端口。" - -msgid "Options" -msgstr "选项" - -msgid "Other:" -msgstr "其余:" - -msgid "Out" -msgstr "出口" - -msgid "Outbound:" -msgstr "出站:" - -msgid "Output Interface" -msgstr "网络出口" - -msgid "Override MAC address" -msgstr "重设 MAC 地址" - -msgid "Override MTU" -msgstr "重设 MTU" - -msgid "Override TOS" -msgstr "重设 TOS" - -msgid "Override TTL" -msgstr "重设 TTL" - -msgid "Override default interface name" -msgstr "重设默认接口名称" - -msgid "Override the gateway in DHCP responses" -msgstr "重设 DHCP 响应网关" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "重设发送到客户端的子网掩码。" - -msgid "Override the table used for internal routes" -msgstr "重设内部路由表" - -msgid "Overview" -msgstr "总览" - -msgid "Owner" -msgstr "用户名" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP 密码" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP 用户名" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PMK R1 Push" -msgstr "PMK R1 Push" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA 封包" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "PSID 偏移" - -msgid "PSID-bits length" -msgstr "PSID-bits 长度" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "PTM/EFM(分组传输模式)" - -msgid "Package libiwinfo required!" -msgstr "需要 libiwinfo 软件包!" - -msgid "Package lists are older than 24 hours" -msgstr "软件包列表已超过 24 小时未更新" - -msgid "Package name" -msgstr "软件包名称" - -msgid "Packets" -msgstr "数据包" - -msgid "Part of zone %q" -msgstr "区域 %q" - -msgid "Password" -msgstr "密码" - -msgid "Password authentication" -msgstr "密码验证" - -msgid "Password of Private Key" -msgstr "私有密钥" - -msgid "Password of inner Private Key" -msgstr "内部私钥的密码" - -msgid "Password successfully changed!" -msgstr "密码修改成功!" - -msgid "Password2" -msgstr "密码 2" - -msgid "Path to CA-Certificate" -msgstr "CA 证书路径" - -msgid "Path to Client-Certificate" -msgstr "客户端证书路径" - -msgid "Path to Private Key" -msgstr "私钥路径" - -msgid "Path to executable which handles the button event" -msgstr "处理按键动作的可执行文件路径" - -msgid "Path to inner CA-Certificate" -msgstr "内部 CA 证书的路径" - -msgid "Path to inner Client-Certificate" -msgstr "内部客户端证书的路径" - -msgid "Path to inner Private Key" -msgstr "内部私钥的路径" - -msgid "Peak:" -msgstr "峰值:" - -msgid "Peer IP address to assign" -msgstr "要分配的 Peer IP 地址" - -msgid "Peers" -msgstr "Peers" - -msgid "Perfect Forward Secrecy" -msgstr "完全正向保密" - -msgid "Perform reboot" -msgstr "执行重启" - -msgid "Perform reset" -msgstr "执行重置" - -msgid "Persistent Keep Alive" -msgstr "持续 Keep-Alive" - -msgid "Phy Rate:" -msgstr "物理速率:" - -msgid "Physical Settings" -msgstr "物理设置" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "数据包" - -msgid "Please enter your username and password." -msgstr "请输入用户名和密码。" - -msgid "Policy" -msgstr "策略" - -msgid "Port" -msgstr "端口" - -msgid "Port status:" -msgstr "端口状态:" - -msgid "Power Management Mode" -msgstr "电源管理模式" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "抢占式 CRC 错误(CRCP_P)" - -msgid "Prefer LTE" -msgstr "首选 LTE" - -msgid "Prefer UMTS" -msgstr "首选 UMTS" - -msgid "Prefix Delegated" -msgstr "分发前缀" - -msgid "Preshared Key" -msgstr "预共享密钥" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "在指定数量的 LCP 响应故障后假定链路已断开,0 为忽略故障" - -msgid "Prevent listening on these interfaces." -msgstr "不监听这些接口。" - -msgid "Prevents client-to-client communication" -msgstr "禁止客户端间通信" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Prism2/2.5/3 802.11b 无线控制器" - -msgid "Private Key" -msgstr "私钥" - -msgid "Proceed" -msgstr "执行" - -msgid "Processes" -msgstr "系统进程" - -msgid "Profile" -msgstr "配置文件" - -msgid "Prot." -msgstr "协议" - -msgid "Protocol" -msgstr "协议" - -msgid "Protocol family" -msgstr "协议族" - -msgid "Protocol of the new interface" -msgstr "新接口的协议" - -msgid "Protocol support is not installed" -msgstr "未安装协议支持" - -msgid "Provide NTP server" -msgstr "作为 NTP 服务器提供服务" - -msgid "Provide new network" -msgstr "添加新网络" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "伪装 Ad-Hoc(ahdemo)" - -msgid "Public Key" -msgstr "公钥" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "分配到此设备的公共前缀,用以分发到客户端。" - -msgid "QMI Cellular" -msgstr "QMI 蜂窝" - -msgid "Quality" -msgstr "质量" - -msgid "R0 Key Lifetime" -msgstr "R0 Key Lifetime" - -msgid "R1 Key Holder" -msgstr "R1 Key Holder" - -msgid "RFC3947 NAT-T mode" -msgstr "RFC3947 NAT-T 模式" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS 阈值" - -msgid "RX" -msgstr "接收" - -msgid "RX Rate" -msgstr "接收速率" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "RaLink 802.11%s 无线控制器" - -msgid "Radius-Accounting-Port" -msgstr "Radius 计费端口" - -msgid "Radius-Accounting-Secret" -msgstr "Radius 计费密钥" - -msgid "Radius-Accounting-Server" -msgstr "Radius 计费服务器" - -msgid "Radius-Authentication-Port" -msgstr "Radius 认证端口" - -msgid "Radius-Authentication-Secret" -msgstr "Radius 认证密钥" - -msgid "Radius-Authentication-Server" -msgstr "Radius 认证服务器" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"根据 /etc/ethers 来配置 DHCP 服务器" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"确定要删除此接口?删除操作无法撤销!\\n删除此接口,可能导致无法再访问路由器!" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"确定要删除此无线网络?删除操作无法撤销!\\n删除此无线网络,可能导致无法再访问" -"路由器!" - -msgid "Really reset all changes?" -msgstr "确定要放弃所有更改?" - -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"确定要关闭此网络?\\n如果您正在使用此接口连接路由器,关闭此网络可能导致连接断" -"开!" - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"确定要关闭接口 \"%s\"?\\n如果您正在使用此接口连接路由器,关闭此网络可能导致" -"连接断开!" - -msgid "Really switch protocol?" -msgstr "确定要切换协议?" - -msgid "Realtime Connections" -msgstr "实时连接" - -msgid "Realtime Graphs" -msgstr "实时信息" - -msgid "Realtime Load" -msgstr "实时负载" - -msgid "Realtime Traffic" -msgstr "实时流量" - -msgid "Realtime Wireless" -msgstr "实时无线" - -msgid "Reassociation Deadline" -msgstr "重关联截止时间" - -msgid "Rebind protection" -msgstr "重绑定保护" - -msgid "Reboot" -msgstr "重启" - -msgid "Rebooting..." -msgstr "重启中..." - -msgid "Reboots the operating system of your device" -msgstr "重启您设备上的系统" - -msgid "Receive" -msgstr "接收" - -msgid "Receiver Antenna" -msgstr "接收天线" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "推荐,Wire Guard 接口的 IP 地址。" - -msgid "Reconnect this interface" -msgstr "重连此接口" - -msgid "Reconnecting interface" -msgstr "重连接口中..." - -msgid "References" -msgstr "引用" - -msgid "Relay" -msgstr "中继" - -msgid "Relay Bridge" -msgstr "中继桥" - -msgid "Relay between networks" -msgstr "网络间中继" - -msgid "Relay bridge" -msgstr "中继桥" - -msgid "Remote IPv4 address" -msgstr "远程 IPv4 地址" - -msgid "Remote IPv4 address or FQDN" -msgstr "远程 IPv4 地址或 FQDN" - -msgid "Remove" -msgstr "移除" - -msgid "Repeat scan" -msgstr "重新扫描" - -msgid "Replace entry" -msgstr "重置条目" - -msgid "Replace wireless configuration" -msgstr "重置无线配置" - -msgid "Request IPv6-address" -msgstr "请求 IPv6 地址" - -msgid "Request IPv6-prefix of length" -msgstr "请求指定长度的 IPv6 前缀" - -msgid "Require TLS" -msgstr "必须使用 TLS" - -msgid "Required" -msgstr "必须" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "某些 ISP 需要,例如:同轴线网络 DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "必须,此接口的 Base64 编码私钥。" - -msgid "Required. Base64-encoded public key of peer." -msgstr "必须,Peer 的 Base64 编码公钥。" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" -"必须,允许该 Peer 在隧道中使用的 IP 地址和前缀,通常是该 Peer 的隧道 IP 地址" -"和通过隧道的路由网络。" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" -"需要完整版本的 wpad/hostapd,并且 WiFi 驱动支持
    (截止 2017.02,已知支持" -"此特性的驱动有 ath9k、ath10k,以及 LEDE 中的 mwlwifi 和 mt76)" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "需要上级支持 DNSSEC,验证未签名的响应确实是来自未签名的域名" - -msgid "Reset" -msgstr "复位" - -msgid "Reset Counters" -msgstr "复位计数器" - -msgid "Reset to defaults" -msgstr "恢复到出厂设置" - -msgid "Resolv and Hosts Files" -msgstr "HOSTS 和解析文件" - -msgid "Resolve file" -msgstr "解析文件" - -msgid "Restart" -msgstr "重启" - -msgid "Restart Firewall" -msgstr "重启防火墙" - -msgid "Restore backup" -msgstr "恢复配置" - -msgid "Reveal/hide password" -msgstr "显示/隐藏 密码" - -msgid "Revert" -msgstr "放弃" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "TFTP 服务器的根目录" - -msgid "Root preparation" -msgstr "根目录准备" - -msgid "Route Allowed IPs" -msgstr "路由允许的 IP" - -msgid "Route type" -msgstr "路由类型" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "下行接口的路由 IPv6 前缀" - -msgid "Router Advertisement-Service" -msgstr "路由通告服务" - -msgid "Router Password" -msgstr "主机密码" - -msgid "Routes" -msgstr "路由表" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "路由表描述了数据包的可达路径。" - -msgid "Run a filesystem check before mounting the device" -msgstr "挂载设备前运行文件系统检查" - -msgid "Run filesystem check" -msgstr "文件系统检查" - -msgid "SHA256" -msgstr "SHA256" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "SIXXS 仅支持 TIC,对于使用 IP 协议 41(RFC4213)的静态隧道,使用 6in4" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "SIXXS-handle[/Tunnel-ID]" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "SSH 访问" - -msgid "SSH server address" -msgstr "SSH 服务器地址" - -msgid "SSH server port" -msgstr "SSH 服务器端口" - -msgid "SSH username" -msgstr "SSH 用户名" - -msgid "SSH-Keys" -msgstr "SSH 密钥" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "保存" - -msgid "Save & Apply" -msgstr "保存&应用" - -msgid "Save & Apply" -msgstr "保存&应用" - -msgid "Scan" -msgstr "扫描" - -msgid "Scheduled Tasks" -msgstr "计划任务" - -msgid "Section added" -msgstr "添加的节点" - -msgid "Section removed" -msgstr "移除的节点" - -msgid "See \"mount\" manpage for details" -msgstr "详参 \"mount\" 联机帮助" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "定时发送 LCP 响应(秒),仅在结合了故障阈值时有效" - -msgid "Separate Clients" -msgstr "隔离客户端" - -msgid "Server Settings" -msgstr "服务器设置" - -msgid "Server password" -msgstr "服务器密码" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "服务器密码,如果用户名包含隧道 ID 则在此填写隧道自己的密码" - -msgid "Server username" -msgstr "服务器用户名" - -msgid "Service Name" -msgstr "服务名" - -msgid "Service Type" -msgstr "服务类型" - -msgid "Services" -msgstr "服务" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" -"不管接口的链路状态如何,总是用应用设置(如果勾选,链路状态变更将不再触发 " -"hotplug 事件处理)。" - -msgid "Set up Time Synchronization" -msgstr "设置时间同步" - -msgid "Setup DHCP Server" -msgstr "配置 DHCP 服务器" - -msgid "Severely Errored Seconds (SES)" -msgstr "严重误码秒(SES)" - -msgid "Short GI" -msgstr "Short GI" - -msgid "Show current backup file list" -msgstr "显示当前备份文件列表" - -msgid "Shutdown this interface" -msgstr "关闭此接口" - -msgid "Shutdown this network" -msgstr "关闭此网络" - -msgid "Signal" -msgstr "信号" - -msgid "Signal Attenuation (SATN)" -msgstr "信号衰减(SATN)" - -msgid "Signal:" -msgstr "信号:" - -msgid "Size" -msgstr "大小" - -msgid "Size (.ipk)" -msgstr "大小(.ipk)" - -msgid "Skip" -msgstr "跳过" - -msgid "Skip to content" -msgstr "跳到内容" - -msgid "Skip to navigation" -msgstr "跳转到导航" - -msgid "Slot time" -msgstr "时隙" - -msgid "Software" -msgstr "软件包" - -msgid "Software VLAN" -msgstr "软件 VLAN" - -msgid "Some fields are invalid, cannot save values!" -msgstr "一些项目的值无效,无法保存!" - -msgid "Sorry, the object you requested was not found." -msgstr "对不起,请求的目标未找到。" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "对不起,服务器遇到未知错误。" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"抱歉,您的设备暂不支持 sysupgrade 升级,需手动更新固件。请参考 Wiki 中关于此" -"设备的固件更新说明。" - -msgid "Sort" -msgstr "排序" - -msgid "Source" -msgstr "源地址" - -msgid "Source routing" -msgstr "源路由" - -msgid "Specifies the button state to handle" -msgstr "指定要处理的按键状态" - -msgid "Specifies the directory the device is attached to" -msgstr "指定设备的挂载目录" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "指定此 Dropbear 实例的监听端口" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "判定主机已下线的最少 ARP 请求失败数" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "判断主机已下线的超时时间(秒)" - -msgid "Specify a TOS (Type of Service)." -msgstr "指定 TOS(服务类型)。" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "为封装数据包设置 TTL(生存时间),缺省值:64" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "设置 MTU(最大传输单位),缺省值:1280 bytes" - -msgid "Specify the secret encryption key here." -msgstr "在此指定密钥。" - -msgid "Start" -msgstr "开始" - -msgid "Start priority" -msgstr "启动优先级" - -msgid "Startup" -msgstr "启动项" - -msgid "Static IPv4 Routes" -msgstr "静态 IPv4 路由" - -msgid "Static IPv6 Routes" -msgstr "静态 IPv6 路由" - -msgid "Static Leases" -msgstr "静态地址分配" - -msgid "Static Routes" -msgstr "静态路由" - -msgid "Static address" -msgstr "静态地址" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"静态租约用于给 DHCP 客户端分配固定的 IP 地址和主机标识。只有指定的主机才能连" -"接,并且接口须为非动态配置。" - -msgid "Status" -msgstr "状态" - -msgid "Stop" -msgstr "关闭" - -msgid "Strict order" -msgstr "严谨查序" - -msgid "Submit" -msgstr "提交" - -msgid "Suppress logging" -msgstr "不记录日志" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "不记录这些协议的常规操作日志。" - -msgid "Swap" -msgstr "Swap" - -msgid "Swap Entry" -msgstr "Swap 节点" - -msgid "Switch" -msgstr "交换机" - -msgid "Switch %q" -msgstr "交换机 %q" - -msgid "Switch %q (%s)" -msgstr "交换机 %q(%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "交换机 %q 具有未知的拓扑结构,VLAN 设置可能不正确。" - -msgid "Switch VLAN" -msgstr "交换机 VLAN" - -msgid "Switch protocol" -msgstr "切换协议" - -msgid "Sync with browser" -msgstr "同步浏览器时间" - -msgid "Synchronizing..." -msgstr "同步中..." - -msgid "System" -msgstr "系统" - -msgid "System Log" -msgstr "系统日志" - -msgid "System Properties" -msgstr "系统属性" - -msgid "System log buffer size" -msgstr "系统日志缓冲区大小" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP 设置" - -msgid "TFTP server root" -msgstr "TFTP 服务器根目录" - -msgid "TX" -msgstr "发送" - -msgid "TX Rate" -msgstr "发送速率" - -msgid "Table" -msgstr "表" - -msgid "Target" -msgstr "对象" - -msgid "Target network" -msgstr "目标网络" - -msgid "Terminate" -msgstr "关闭" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"“设备配置”区域可配置无线的硬件参数,比如:信道、发射功率或发射天线,如果此无" -"线硬件支持多 SSID,则全部 SSID 共用此设备配置。“接口配置”区域则可配置接口各自" -"参数,如工作模式、加密方式等。" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "软件包 libiwinfo-lua 未安装,必须安装此组件以配置无线!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "HE.net 客户端更新设置已经被改变,您现在必须使用用户名代替用户 ID!" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "远程隧道端的 IPv4 地址或完整域名。" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "运营商特定的 IPv6 前缀,通常以 :: 为结尾" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"合法字符:A-Z, a-z, 0-9 和 _" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "由于以下错误,配置文件无法被加载:" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "存储器或分区的设备文件,(例如:/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"用于格式化存储器的文件系统(例如:ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"固件已上传,请注意核对文件大小和校验值!
    点击下面的“继续”开始刷写,刷新" -"过程中切勿断电!" - -msgid "The following changes have been committed" -msgstr "以下更改已提交" - -msgid "The following changes have been reverted" -msgstr "以下更改已放弃" - -msgid "The following rules are currently active on this system." -msgstr "以下规则当前在系统中处于活动状态。" - -msgid "The given network name is not unique" -msgstr "给定的网络名重复" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "本机的硬件不支持多 SSID,如果继续,现有配置将被替换。" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "IPv4 前缀长度(bit),其余的用在 IPv6 地址。" - -msgid "The length of the IPv6 prefix in bits" -msgstr "IPv6 前缀长度(bit)" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "所创建隧道的本地 IPv4 地址(可选)。" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"本设备可以划分为多个 VLAN," -"并支持电脑间的直接通讯。VLAN 也常用于分割不同网段。默认通常是一条上行端口连接 ISP,其余端口为本地子" -"网。" - -msgid "The selected protocol needs a device assigned" -msgstr "所选的协议需要分配设备" - -msgid "The submitted security token is invalid or already expired!" -msgstr "提交的安全令牌无效或已过期!" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "系统正在擦除配置分区,完成后会自动重启。" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"正在刷新系统...
    切勿关闭电源! DO NOT POWER OFF THE DEVICE!
    等待数分" -"钟后即可尝试重新连接到路由。您可能需要更改计算机的 IP 地址以重新连接。" - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "隧道端点在 NAT 之后,默认为禁用,仅适用于 AYIYA" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "不支持所上传的映像文件格式,请选择适合当前平台的通用映像文件。" - -msgid "There are no active leases." -msgstr "没有已分配的租约。" - -msgid "There are no pending changes to apply!" -msgstr "没有待生效的更改!" - -msgid "There are no pending changes to revert!" -msgstr "没有可放弃的更改!" - -msgid "There are no pending changes!" -msgstr "没有待生效的更改!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "尚未分配设备,请在“物理设置”选项卡中选择网络设备" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "尚未设置密码。请为 root 用户设置密码以保护主机并启用 SSH。" - -msgid "This IPv4 address of the relay" -msgstr "中继的 IPv4 地址" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"此文件包含类似于 'server=/domain/1.2.3.4' 或 'server=1.2.3.4' 的行,用于解析" -"特定域名或指定上游 DNS 服务器。" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"系统升级时要保存的配置文件和目录的清单。目录 /etc/config/ 内修改过的文件以及" -"部分其他配置会被自动保存。" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "如果更新密钥没有设置的话,隧道的“更新密钥”或者账户密码必须填写。" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "启动脚本插入到 'exit 0' 之前即可随系统启动运行。" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "隧道代理分配的本地终端地址,通常以 :2 结尾" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"这是本地网络中唯一的 DHCP 服务器" - -msgid "This is the plain username for logging into the account" -msgstr "登录账户时填写的用户名" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "这是隧道代理分配给您的路由前缀,供客户端使用" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "自定义系统 crontab 中的计划任务。" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "这通常是隧道代理所管理的最近的 PoP 的地址" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "系统中正在运行的进程概况和它们的状态信息。" - -msgid "This page allows the configuration of custom button actions" -msgstr "自定义按键动作。" - -msgid "This page gives an overview over currently active network connections." -msgstr "活跃的网络连接概况。" - -msgid "This section contains no values yet" -msgstr "尚无任何配置" - -msgid "Time Synchronization" -msgstr "时间同步" - -msgid "Time Synchronization is not configured yet." -msgstr "尚未配置时间同步" - -msgid "Timezone" -msgstr "时区" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "上传备份存档以恢复配置。" - -msgid "Tone" -msgstr "Tone" - -msgid "Total Available" -msgstr "可用数" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "流量" - -msgid "Transfer" -msgstr "传输" - -msgid "Transmission Rate" -msgstr "传送速率" - -msgid "Transmit" -msgstr "传送" - -msgid "Transmit Power" -msgstr "无线电功率" - -msgid "Transmitter Antenna" -msgstr "传送天线" - -msgid "Trigger" -msgstr "触发器" - -msgid "Trigger Mode" -msgstr "触发模式" - -msgid "Tunnel ID" -msgstr "隧道 ID" - -msgid "Tunnel Interface" -msgstr "隧道接口" - -msgid "Tunnel Link" -msgstr "隧道链接" - -msgid "Tunnel broker protocol" -msgstr "隧道协议" - -msgid "Tunnel setup server" -msgstr "隧道配置服务器" - -msgid "Tunnel type" -msgstr "隧道类型" - -msgid "Tx-Power" -msgstr "传输功率" - -msgid "Type" -msgstr "类型" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "仅 UMTS(WCDMA)" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB 设备" - -msgid "USB Ports" -msgstr "USB 接口" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to dispatch" -msgstr "无法调度" - -msgid "Unavailable Seconds (UAS)" -msgstr "不可用秒数(UAS)" - -msgid "Unknown" -msgstr "未知" - -msgid "Unknown Error, password not changed!" -msgstr "未知错误,密码未更改!" - -msgid "Unmanaged" -msgstr "不配置协议" - -msgid "Unmount" -msgstr "卸载分区" - -msgid "Unsaved Changes" -msgstr "未保存的配置" - -msgid "Unsupported protocol type." -msgstr "不支持的协议类型" - -msgid "Update lists" -msgstr "刷新列表" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"上传一个 sysupgrade 格式的固件映像文件以替换当前运行的固件。勾选“保留配置”以" -"使更新后的系统仍然使用当前的系统配置(新的固件需要和当前固件兼容)。" - -msgid "Upload archive..." -msgstr "上传备份..." - -msgid "Uploaded File" -msgstr "上传的文件" - -msgid "Uptime" -msgstr "运行时间" - -msgid "Use /etc/ethers" -msgstr "使用 /etc/ethers 配置" - -msgid "Use DHCP gateway" -msgstr "使用 DHCP 网关" - -msgid "Use DNS servers advertised by peer" -msgstr "使用对端通告的 DNS 服务器" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "参考 ISO/IEC 3166 alpha2 国家代码。" - -msgid "Use MTU on tunnel interface" -msgstr "隧道接口的 MTU" - -msgid "Use TTL on tunnel interface" -msgstr "隧道接口的 TTL" - -msgid "Use as external overlay (/overlay)" -msgstr "作为外部 overlay 使用(/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "作为根文件系统使用(/)" - -msgid "Use broadcast flag" -msgstr "使用广播标签" - -msgid "Use builtin IPv6-management" -msgstr "使用内置的 IPv6 管理" - -msgid "Use custom DNS servers" -msgstr "使用自定义的 DNS 服务器" - -msgid "Use default gateway" -msgstr "使用默认网关" - -msgid "Use gateway metric" -msgstr "使用网关跃点" - -msgid "Use routing table" -msgstr "使用路由表" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"使用“添加”按钮来增加新的租约条目。“IPv4 地址”和“主机名”字段的值将被固定分配" -"给“MAC 地址”字段标识的主机,“租期”是一个可选字段,可为每个主机单独设定 DHCP " -"租期的时长,例如:12h、3d、inifinite,分别表示 12 小时、3 天、永久。" - -msgid "Used" -msgstr "已用" - -msgid "Used Key Slot" -msgstr "启用密码组" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" -"用于两种不同的用途:RADIUS NAS ID 和 802.11r R0KH-ID,普通 WPA(2)-PSK 不需" -"要。" - -msgid "User certificate (PEM encoded)" -msgstr "用户证书(PEM)" - -msgid "User key (PEM encoded)" -msgstr "用户密钥(PEM)" - -msgid "Username" -msgstr "用户名" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "%q 上的 VLAN" - -msgid "VLANs on %q (%s)" -msgstr "%q(%s)上的 VLAN" - -msgid "VPN Local address" -msgstr "VPN 本地地址" - -msgid "VPN Local port" -msgstr "VPN 本地端口" - -msgid "VPN Server" -msgstr "VPN 服务器" - -msgid "VPN Server port" -msgstr "VPN 服务器端口" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "VPN 服务器证书的 SHA1 哈希值" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC(CISCO 3000 和其他 VPN)" - -msgid "Vendor" -msgstr "Vendor" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "请求 DHCP 时发送的 Vendor Class 选项" - -msgid "Verbose" -msgstr "详细" - -msgid "Verbose logging by aiccu daemon" -msgstr "Aiccu 守护程序详细日志" - -msgid "Verify" -msgstr "验证" - -msgid "Version" -msgstr "版本" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP 开放式系统" - -msgid "WEP Shared Key" -msgstr "WEP 共享密钥" - -msgid "WEP passphrase" -msgstr "WEP 密钥" - -msgid "WMM Mode" -msgstr "WMM 模式" - -msgid "WPA passphrase" -msgstr "WPA 密钥" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA 加密需要安装 wpa_supplicant(客户端模式)或安装 hostapd(接入点 AP、点对" -"点 Ad-Hoc 模式)。" - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "NTP 同步前的等待时间,设置为 0 表示不等待(可选)" - -msgid "Waiting for changes to be applied..." -msgstr "正在应用更改..." - -msgid "Waiting for command to complete..." -msgstr "等待命令执行完成..." - -msgid "Waiting for device..." -msgstr "等待设备..." - -msgid "Warning" -msgstr "警告" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "警告:一些未保存的配置将在重启后丢失!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "是否添加一条通向隧道的 IPv6 默认路由" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "是否仅路由来自分发前缀的数据包" - -msgid "Width" -msgstr "频宽" - -msgid "WireGuard VPN" -msgstr "WireGuard VPN" - -msgid "Wireless" -msgstr "无线" - -msgid "Wireless Adapter" -msgstr "无线适配器" - -msgid "Wireless Network" -msgstr "无线网络" - -msgid "Wireless Overview" -msgstr "无线概况" - -msgid "Wireless Security" -msgstr "无线安全" - -msgid "Wireless is disabled or not associated" -msgstr "无线未开启或未关联" - -msgid "Wireless is restarting..." -msgstr "无线重启中..." - -msgid "Wireless network is disabled" -msgstr "无线已禁用" - -msgid "Wireless network is enabled" -msgstr "无线网络开关" - -msgid "Wireless restarted" -msgstr "无线已重启" - -msgid "Wireless shut down" -msgstr "无线已关闭" - -msgid "Write received DNS requests to syslog" -msgstr "将收到的 DNS 请求写入系统日志" - -msgid "Write system log to file" -msgstr "将系统日志写入文件" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"在此启用或禁用已安装的启动脚本,更改在设备重启后生效。
    警告:如" -"果禁用了必要的启动脚本,比如 \"network\",可能会导致无法访问设备!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "必须开启浏览器的 JavaScript 支持,否则 LuCI 无法正常工作。" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"您的 IE 浏览器太老了,无法正常显示这个页面!请更新到 IE7 及以上或使用其他浏览" -"器,例如:Chrome、Firefox、Opera、Safari。" - -msgid "any" -msgstr "任意" - -msgid "auto" -msgstr "自动" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "桥接的" - -msgid "create:" -msgstr "创建:" - -msgid "creates a bridge over specified interface(s)" -msgstr "为指定接口创建桥接" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "禁用" - -msgid "disabled" -msgstr "已禁用" - -msgid "expired" -msgstr "过期时间" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"用于存放已分配的 DHCP 租约的文件" - -msgid "forward" -msgstr "转发" - -msgid "full-duplex" -msgstr "全双工" - -msgid "half-duplex" -msgstr "半双工" - -msgid "help" -msgstr "帮助" - -msgid "hidden" -msgstr "隐藏" - -msgid "hybrid mode" -msgstr "混合模式" - -msgid "if target is a network" -msgstr "如果对象是一个网络" - -msgid "input" -msgstr "输入" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "本地 DNS 解析文件" - -msgid "minimum 1280, maximum 1480" -msgstr "最小值 1280,最大值 1480" - -msgid "minutes" -msgstr "分钟" - -msgid "no" -msgstr "否" - -msgid "no link" -msgstr "未连接" - -msgid "none" -msgstr "无" - -msgid "not present" -msgstr "不存在" - -msgid "off" -msgstr "关" - -msgid "on" -msgstr "开" - -msgid "open" -msgstr "开放式" - -msgid "overlay" -msgstr "覆盖" - -msgid "relay mode" -msgstr "中继模式" - -msgid "routed" -msgstr "已路由" - -msgid "server mode" -msgstr "服务器模式" - -msgid "stateful-only" -msgstr "有状态的" - -msgid "stateless" -msgstr "无状态的" - -msgid "stateless + stateful" -msgstr "无状态的 + 有状态的" - -msgid "tagged" -msgstr "已关联" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "时间单位(TUs / 1.024ms)[1000-65535]" - -msgid "unknown" -msgstr "未知" - -msgid "unlimited" -msgstr "无限制" - -msgid "unspecified" -msgstr "未指定" - -msgid "unspecified -or- create:" -msgstr "不指定或新建:" - -msgid "untagged" -msgstr "未关联" - -msgid "yes" -msgstr "是" - -msgid "« Back" -msgstr "« 后退" - -#~ msgid "Leasetime" -#~ msgstr "租用时间" - -#~ msgid "Optional." -#~ msgstr "可选。" - -#~ msgid "navigation Navigation" -#~ msgstr "导航" - -#~ msgid "skiplink1 Skip to navigation" -#~ msgstr "skiplink1 跳转到导航" - -#~ msgid "skiplink2 Skip to content" -#~ msgstr "skiplink2 跳到内容" - -#~ msgid "AuthGroup" -#~ msgstr "认证组" - -#~ msgid "automatic" -#~ msgstr "自动" - -#~ msgid "AR Support" -#~ msgstr "AR 支持" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Qualcomm/Atheros 802.11%s 无线控制器" - -#~ msgid "Background Scan" -#~ msgstr "后台搜索" - -#~ msgid "Compression" -#~ msgstr "压缩" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "停用 HW-Beacon 计时器" - -#~ msgid "Do not send probe responses" -#~ msgstr "不回送探测响应" - -#~ msgid "Fast Frames" -#~ msgstr "快速帧" - -#~ msgid "Maximum Rate" -#~ msgstr "最高速率" - -#~ msgid "Minimum Rate" -#~ msgstr "最低速率" - -#~ msgid "Multicast Rate" -#~ msgstr "多播速率" - -#~ msgid "Outdoor Channels" -#~ msgstr "户外频道" - -#~ msgid "Regulatory Domain" -#~ msgstr "无线网络国家区域" - -#~ msgid "Separate WDS" -#~ msgstr "隔离 WDS" - -#~ msgid "Static WDS" -#~ msgstr "静态 WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo 模式" - -#~ msgid "XR Support" -#~ msgstr "XR 支持" - -#~ msgid "Required. Public key of peer." -#~ msgstr "必须,Peer 的公钥。" - -#~ msgid "An additional network will be created if you leave this checked." -#~ msgstr "如果选中此复选框,则会创建一个附加网络。" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "取消选中将会另外创建一个新网络,而不会覆盖当前网络设置" - -#~ msgid "Join Network: Settings" -#~ msgstr "加入网络:设置" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "端口 %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "端口 %d 在多个 VLAN 中均未关联!" - -#~ msgid "VLAN Interface" -#~ msgstr "VLAN 接口" diff --git a/package/luci/modules/luci-base/po/zh-tw/base.po b/package/luci/modules/luci-base/po/zh-tw/base.po deleted file mode 100644 index c0abad2a76..0000000000 --- a/package/luci/modules/luci-base/po/zh-tw/base.po +++ /dev/null @@ -1,3915 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-21 10:34+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\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 "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d 分鐘訊息, %d 秒更新)" - -msgid "(%s available)" -msgstr "(%s 可用)" - -msgid "(empty)" -msgstr "(空白)" - -msgid "(no interfaces attached)" -msgstr "(未連接界面)" - -msgid "-- Additional Field --" -msgstr "-- 更多選項 --" - -msgid "-- Please choose --" -msgstr "-- 請選擇 --" - -msgid "-- custom --" -msgstr "-- 自訂 --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1分鐘負載" - -msgid "15 Minute Load:" -msgstr "15分鐘負載" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5分鐘負載" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS 查詢通訊埠" - -msgid "DNS server port" -msgstr "DNS 伺服器通訊埠" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "將會按照指定的順序查詢DNS" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-位置" - -msgid "IPv4-Gateway" -msgstr "IPv4-閘道" - -msgid "IPv4-Netmask" -msgstr "IPv4-遮罩" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-位置或網路(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-閘道" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED 設定" - -msgid "LED Name" -msgstr "LED 名稱" - -msgid "MAC-Address" -msgstr "MAC-位置" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"最大 DHCP 分配數量" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"最大 EDNS0 封包大小" - -msgid "Max. concurrent queries" -msgstr "最大並發查詢數" - -msgid "%s - %s" -msgstr "%s - %s" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "AICCU (SIXXS)" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP重試門檻" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM橋接" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM虛擬通道識別(VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM虛擬路徑識別(VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM橋接是以AAL5協定封裝乙太網路如同虛擬Linux網路界面卡,用於連接DHCP或PPP來撥" -"號連接到網際網路。" - -msgid "ATM device number" -msgstr "ATM裝置號碼" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "AYIYA" -msgstr "" - -msgid "Access Concentrator" -msgstr "接入集線器" - -msgid "Access Point" -msgstr "存取點 (AP)" - -msgid "Action" -msgstr "動作" - -msgid "Actions" -msgstr "動作" - -msgid "Activate this network" -msgstr "啟用此網路" - -msgid "Active IPv4-Routes" -msgstr "啟用 IPv4-路由" - -msgid "Active IPv6-Routes" -msgstr "啟用 IPv6-路由" - -msgid "Active Connections" -msgstr "啟用連線" - -msgid "Active DHCP Leases" -msgstr "已分配的DHCP租用" - -msgid "Active DHCPv6 Leases" -msgstr "已分配的DHCPv6租用" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "增加" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "添加本地網域微碼到HOSTS檔案" - -msgid "Add new interface..." -msgstr "增加新界面" - -msgid "Additional Hosts files" -msgstr "額外的HOST檔案" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "位置" - -msgid "Address to access local relay bridge" -msgstr "存取本地中繼橋接位置" - -msgid "Administration" -msgstr "管理" - -msgid "Advanced Settings" -msgstr "進階設定" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "警示" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "允許 SSH 密碼驗證" - -msgid "Allow all except listed" -msgstr "僅允許列表外" - -msgid "Allow listed only" -msgstr "僅允許列表內" - -msgid "Allow localhost" -msgstr "允許本機" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "允許遠端主機連接到本機SSH轉送通訊埠" - -msgid "Allow root logins with password" -msgstr "允許root登入" - -msgid "Allow the root user to login with password" -msgstr "允許 root 使用者登入" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "允許127.0.0.0/8範圍內的上游回應,例如:RBL服務" - -msgid "Allowed IPs" -msgstr "" - -msgid "" -"Also see Tunneling Comparison on SIXXS" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "天線 1" - -msgid "Antenna 2" -msgstr "天線 2" - -msgid "Antenna Configuration" -msgstr "天線設定" - -msgid "Any zone" -msgstr "任意區域" - -msgid "Apply" -msgstr "套用" - -msgid "Applying changes" -msgstr "正在套用變更" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "分配界面..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "已連接站點" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "認證" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "授權" - -msgid "Authorization Required" -msgstr "需要授權" - -msgid "Auto Refresh" -msgstr "自動更新" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "可用" - -msgid "Available packages" -msgstr "可用軟體包" - -msgid "Average:" -msgstr "平均:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "返回" - -msgid "Back to Overview" -msgstr "返回至總覽" - -msgid "Back to configuration" -msgstr "返回至設定" - -msgid "Back to overview" -msgstr "返回至總覽" - -msgid "Back to scan results" -msgstr "返回至掃描結果" - -msgid "Backup / Flash Firmware" -msgstr "備份/升級韌體" - -msgid "Backup / Restore" -msgstr "備份/還原" - -msgid "Backup file list" -msgstr "備份檔列表" - -msgid "Bad address specified!" -msgstr "指定了錯誤的位置!" - -msgid "Band" -msgstr "" - -msgid "Behind NAT" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"下面是待備份的檔案清單。包含了更改的設定檔案、必要的基本檔案和使用者自訂的備" -"份檔案" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "傳輸速率" - -msgid "Bogus NX Domain Override" -msgstr "忽略NX網域解析" - -msgid "Bridge" -msgstr "橋接" - -msgid "Bridge interfaces" -msgstr "橋接介面" - -msgid "Bridge unit number" -msgstr "橋接單位號碼" - -msgid "Bring up on boot" -msgstr "開機自動執行" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s 無線控制器" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 無線控制器" - -msgid "Buffered" -msgstr "已緩衝" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "Buttons" -msgstr "按鈕" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU 使用率 (%)" - -msgid "Cancel" -msgstr "取消" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "鏈" - -msgid "Changes" -msgstr "待修改" - -msgid "Changes applied." -msgstr "修改已套用" - -msgid "Changes the administrator password for accessing the device" -msgstr "修改管理員密碼" - -msgid "Channel" -msgstr "頻道" - -msgid "Check" -msgstr "檢查" - -msgid "Check fileystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "效驗碼" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"選擇您要指定給這介面的防火牆區. 撿選unspecified以便從指定區域除這個" -"介面或者填寫create欄以便定義附加這個介面到一個新的區域上." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"選擇您要附加到無線網路介面的多個網路或者填寫create 以便定義一個新的" -"網路." - -msgid "Cipher" -msgstr "暗號" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files. To reset the firmware to its initial state, click " -"\"Perform reset\" (only possible with squashfs images)." -msgstr "" -"按下\"壓縮檔製作\"就能下載目前設定檔的tar格式的壓縮. 要重置回復出廠值,按下" -"\"執行還原\"(可能只對squashfs影像檔有效)" - -msgid "Client" -msgstr "用戶端" - -msgid "Client ID to send when requesting DHCP" -msgstr "當要求DHCP時要傳送的用戶識別碼ID" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "幾秒後關閉閒置的連線, 打0代表永遠連線" - -msgid "Close list..." -msgstr "關閉清單中..." - -msgid "Collecting data..." -msgstr "收集資料中..." - -msgid "Command" -msgstr "指令" - -msgid "Common Configuration" -msgstr "一般設定" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "設定" - -msgid "Configuration applied." -msgstr "啟用設定" - -msgid "Configuration files will be kept." -msgstr "設定檔將被存檔" - -msgid "Confirmation" -msgstr "再確認" - -msgid "Connect" -msgstr "連線" - -msgid "Connected" -msgstr "已連線" - -msgid "Connection Limit" -msgstr "連線限制" - -msgid "Connection to server fails when TLS cannot be used" -msgstr "" - -msgid "Connections" -msgstr "連線數" - -msgid "Country" -msgstr "國別" - -msgid "Country Code" -msgstr "國別碼" - -msgid "Cover the following interface" -msgstr "覆蓋下列介面" - -msgid "Cover the following interfaces" -msgstr "覆蓋下列這些介面" - -msgid "Create / Assign firewall-zone" -msgstr "建立/指定防火牆作用區" - -msgid "Create Interface" -msgstr "建立介面" - -msgid "Create a bridge over multiple interfaces" -msgstr "在多個介面上建立橋接" - -msgid "Critical" -msgstr "緊急" - -msgid "Cron Log Level" -msgstr "Cron的日誌級別" - -msgid "Custom Interface" -msgstr "自訂介面" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"如果可以的話,自定這個設備的動作 LEDs ." - -msgid "DHCP Leases" -msgstr "DHCP的釋放週期" - -msgid "DHCP Server" -msgstr "DHCP伺服器" - -msgid "DHCP and DNS" -msgstr "DHCP 和 DNS" - -msgid "DHCP client" -msgstr "DHCP用戶端" - -msgid "DHCP-Options" -msgstr "DHCP選項" - -msgid "DHCPv6 Leases" -msgstr "DHCPv6版釋放時間週期" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "網域名稱伺服器" - -msgid "DNS forwardings" -msgstr "DNS封包轉發" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DUID" -msgstr "DHCP獨立式別碼DUID " - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "除錯" - -msgid "Default %d" -msgstr "預設 %d" - -msgid "Default gateway" -msgstr "預設匝道器" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default route" -msgstr "" - -msgid "Default state" -msgstr "預設狀態" - -msgid "Define a name for this network." -msgstr "自訂這個網路名稱" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"定義額外的DHCP選項,例如\"6,192.168.2.1,192.168.2.2\"將會通告不同" -"的DNS伺服器到客戶端." - -msgid "Delete" -msgstr "刪除" - -msgid "Delete this network" -msgstr "刪除這個網路" - -msgid "Description" -msgstr "描述" - -msgid "Design" -msgstr "設計規劃" - -msgid "Destination" -msgstr "目的地" - -msgid "Device" -msgstr "設備" - -msgid "Device Configuration" -msgstr "設定設備" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable" -msgstr "" - -msgid "Diagnostics" -msgstr "診斷" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "目錄" - -msgid "Disable" -msgstr "關閉" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -" 對這介面關閉 DHCP" - -msgid "Disable DNS setup" -msgstr "關閉DNS設置" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disabled" -msgstr "關閉" - -msgid "Disabled (default)" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "丟棄上游RFC1918 虛擬IP網路的回應" - -msgid "Displaying only packages containing" -msgstr "僅顯示內含的軟體" - -msgid "Distance Optimization" -msgstr "最佳化距離" - -msgid "Distance to farthest network member in meters." -msgstr "到最遠的網路距離以米表示." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "差異" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -" Dnsmasq 是組合DHCP-伺服器 和 DNS-轉發給 NAT 防火牆用" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "不快取拒絕的回應,例如.不存在的網域" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "對不被公用名稱伺服器回應的請求不轉發" - -msgid "Do not forward reverse lookups for local networks" -msgstr "對本地網域不轉發反解析鎖定" - -msgid "Domain required" -msgstr "網域必要的" - -msgid "Domain whitelist" -msgstr "網域白名單" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"若沒 DNS-名稱的話,不要轉發 DNS-請求" - -msgid "Download and install package" -msgstr "下載並安裝軟體包" - -msgid "Download backup" -msgstr "下載備份檔" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear SSH例子" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear 提供 SSH 網路shell命令存取和一個" -"整合的 SCP 伺服器" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "動態 DHCP" - -msgid "Dynamic tunnel" -msgstr "動態隧道" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "幫用戶端動態發配DHCP位址. 假如關閉的話,僅有有靜態位址的用戶端能被服務" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP協定驗證方式" - -msgid "Edit" -msgstr "編輯" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "修改這個介面" - -msgid "Edit this network" -msgstr "修改這個網路" - -msgid "Emergency" -msgstr "緊急" - -msgid "Enable" -msgstr "啟用" - -msgid "Enable STP" -msgstr "啟用 STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "啟用HE.net服務代管動態更新" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "啟用PPP連結上的IPv6交涉" - -msgid "Enable Jumbo Frame passthrough" -msgstr "啟用超大訊框透穿" - -msgid "Enable NTP client" -msgstr "起用NTP用戶功能" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "啟用TFTP伺服器" - -msgid "Enable VLAN functionality" -msgstr "啟用VLAN功能" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "啟用智慧學習功能" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "啟用掛載點" - -msgid "Enable this swap" -msgstr "啟用swap功能" - -msgid "Enable/Disable" -msgstr "啟用/關閉" - -msgid "Enabled" -msgstr "啟用" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "在橋接器上啟用802.1d Spanning Tree協定" - -msgid "Encapsulation mode" -msgstr "封裝模式" - -msgid "Encryption" -msgstr "加密" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Erasing..." -msgstr "刪除中..." - -msgid "Error" -msgstr "錯誤" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "乙太網路卡" - -msgid "Ethernet Switch" -msgstr "乙太交換器" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "延伸主機" - -msgid "Expires" -msgstr "過期" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "釋放位址的過期週期,最少兩分鐘 (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "外部系統日誌伺服器" - -msgid "External system log server port" -msgstr "外部系統日誌伺服器埠號" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "File" -msgstr "檔案" - -msgid "Filename of the boot image advertised to clients" -msgstr "開機影像檔通知給用戶端" - -msgid "Filesystem" -msgstr "檔案系統" - -msgid "Filter" -msgstr "過濾器" - -msgid "Filter private" -msgstr "私人過濾器" - -msgid "Filter useless" -msgstr "無用過濾器" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "搜尋並加入網路" - -msgid "Find package" -msgstr "搜尋軟體包" - -msgid "Finish" -msgstr "完成" - -msgid "Firewall" -msgstr "防火牆" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "防火牆設定" - -msgid "Firewall Status" -msgstr "防火牆狀況" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "防火牆版本" - -msgid "Fixed source port for outbound DNS queries" -msgstr "外發DNS請求的固定埠號" - -msgid "Flash Firmware" -msgstr "韌體更新" - -msgid "Flash image..." -msgstr "更新映像檔中..." - -msgid "Flash new firmware image" -msgstr "更新新版韌體映像檔" - -msgid "Flash operations" -msgstr "執行更新" - -msgid "Flashing..." -msgstr "更新中..." - -msgid "Force" -msgstr "強制" - -msgid "Force CCMP (AES)" -msgstr "強制CCMP (AES)加密" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "在網路上即使偵測到其它伺服器也強制採用DHCP的設定" - -msgid "Force TKIP" -msgstr "強制TKIP加密" - -msgid "Force TKIP and CCMP (AES)" -msgstr "強制TKIP+CCMP (AES)加密" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "轉發DHCP流量" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "轉發廣播流量" - -msgid "Forwarding mode" -msgstr "轉發模式" - -msgid "Fragmentation Threshold" -msgstr "分片閥值" - -msgid "Frame Bursting" -msgstr "訊框爆速" - -msgid "Free" -msgstr "空閒" - -msgid "Free space" -msgstr "剩餘空間" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.io." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "僅用GPRS" - -msgid "Gateway" -msgstr "匝道器" - -msgid "Gateway ports" -msgstr "匝道器埠號" - -msgid "General Settings" -msgstr "一般設定" - -msgid "General Setup" -msgstr "一般設置" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "製作壓縮檔" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "通用 802.11%s 無線控制器" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "鍵入的密碼不吻合,密碼將不變更" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "到密碼設定頁" - -msgid "Go to relevant configuration page" -msgstr "到相應設定頁" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr " HE.net密碼" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Handler" -msgstr "多執行緒" - -msgid "Hang Up" -msgstr "斷線" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "Heartbeat" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "在這設置基本樣貌類似像主機名稱或者時區..等" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "在這裡貼上公用SSH-Keys (每行一個)以便驗證" - -msgid "Hermes 802.11b Wireless Controller" -msgstr "Hermes 802.11b 無線網路控制器" - -msgid "Hide ESSID" -msgstr "隱藏 ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "主機項目" - -msgid "Host expiry timeout" -msgstr "過期主機" - -msgid "Host-IP or Network" -msgstr "主機-IP 或網路" - -msgid "Hostname" -msgstr "主機名稱" - -msgid "Hostname to send when requesting DHCP" -msgstr "當請求DHCP服務時傳送的主機名稱" - -msgid "Hostnames" -msgstr "主機名稱" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP位址" - -msgid "IPv4" -msgstr "IPv4版" - -msgid "IPv4 Firewall" -msgstr "IPv4防火牆" - -msgid "IPv4 WAN Status" -msgstr "IPv4寬頻連線狀態" - -msgid "IPv4 address" -msgstr "IPv4位址" - -msgid "IPv4 and IPv6" -msgstr "IPv4和IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4廣播" - -msgid "IPv4 gateway" -msgstr "IPv4匝道器" - -msgid "IPv4 netmask" -msgstr "IPv4網路遮罩" - -msgid "IPv4 only" -msgstr "僅用IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "IPv4前綴長度" - -msgid "IPv4-Address" -msgstr "IPv4-位址" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6版" - -msgid "IPv6 Firewall" -msgstr "IPv6防火牆" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 WAN Status" -msgstr "IPv6寬頻連線狀態" - -msgid "IPv6 address" -msgstr "IPv6位址" - -msgid "IPv6 address delegated to the local tunnel endpoint (optional)" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6匝道器" - -msgid "IPv6 only" -msgstr "僅用IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6字首" - -msgid "IPv6 prefix length" -msgstr "IPv6字首長度" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-位址" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6包覆在IPv4內(RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6凌駕IPv4外(第6版)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6凌駕IPv4外(6轉4)" - -msgid "Identity" -msgstr "特性" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "假若指定的話, 掛載設備的UUID獨立設備識別碼取代固定的設備節點" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "假若指定的話, 掛載設備的分割標籤取代固定的設備節點" - -msgid "If unchecked, no default route is configured" -msgstr "如果沒打勾點選, 將不會設置預設路由" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "如果沒打勾點選, 公告的DNS伺服器位址將被忽視" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"如果您的物理內存不足時,未使用的數據可以是暫時交換到導致更高的交換設備量的可用" -"RAM內.請注意,交換數據是一個非常" -"緩慢的過程,作為交換裝置不能用高數據速率訪問該RAM" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "被忽視的介面" - -msgid "Ignore resolve file" -msgstr "被忽視的解析檔" - -msgid "Image" -msgstr "映像檔" - -msgid "In" -msgstr "輸入" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "閒置過期" - -msgid "Inbound:" -msgstr "輸入" - -msgid "Info" -msgstr "訊息" - -msgid "Initscript" -msgstr "初始化腳本" - -msgid "Initscripts" -msgstr "初始化腳本" - -msgid "Install" -msgstr "安裝" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "安裝軟體包 %q" - -msgid "Install protocol extensions..." -msgstr "安裝延伸協定中..." - -msgid "Installed packages" -msgstr "安裝軟體包" - -msgid "Interface" -msgstr "介面" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "介面設定" - -msgid "Interface Overview" -msgstr "介面預覽" - -msgid "Interface is reconnecting..." -msgstr "介面重連" - -msgid "Interface is shutting down..." -msgstr "介面正在關閉中..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "介面尚未出線或者還沒連上" - -msgid "Interface reconnected" -msgstr "介面已重連" - -msgid "Interface shut down" -msgstr "介面關閉" - -msgid "Interfaces" -msgstr "介面" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "內部伺服器發生錯誤" - -msgid "Invalid" -msgstr "無效" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "輸入的VLAN ID無效僅有介於 %d 和 %d的被允許" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "打入的是不正確的VLAN ID!僅有獨一無二的IDs被允許" - -msgid "Invalid username and/or password! Please try again." -msgstr "不正確的用戶名稱和/或者密碼!請再試一次." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "它顯示您正嘗試更新不適用於這個flash記憶體的映像檔,請檢查確認這個映像檔" - -msgid "JavaScript required!" -msgstr "需要Java腳本" - -msgid "Join Network" -msgstr "加入網路" - -msgid "Join Network: Wireless Scan" -msgstr "加入網路:無線網路掃描" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "保持設定值" - -msgid "Kernel Log" -msgstr "核心日誌" - -msgid "Kernel Version" -msgstr "核心版本" - -msgid "Key" -msgstr "鑰匙" - -msgid "Key #%d" -msgstr "鑰匙 #%d" - -msgid "Kill" -msgstr "刪除" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP伺服器" - -msgid "LCP echo failure threshold" -msgstr "LCP協定呼叫失敗次數門檻" - -msgid "LCP echo interval" -msgstr "LCP協定呼叫間隔" - -msgid "LLC" -msgstr "LLC邏輯鏈結控制層" - -msgid "Label" -msgstr "標籤" - -msgid "Language" -msgstr "語言" - -msgid "Language and Style" -msgstr "語言和風格" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "租賃有效時間" - -msgid "Leasefile" -msgstr "租賃檔案" - -msgid "Leasetime remaining" -msgstr "租賃保留時間" - -msgid "Leave empty to autodetect" -msgstr "保持空白以便自動偵測" - -msgid "Leave empty to use the current WAN address" -msgstr "保持空白以便採用現今的寬頻位址" - -msgid "Legend:" -msgstr "圖例:" - -msgid "Limit" -msgstr "限制" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "鏈接" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "列出 DNS 伺服器以便轉發請求" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "列出允許RFC1918文件虛擬IP回應的網域" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "列出供應偽裝NX網域成果的主機群" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "只許在給予的介面上聆聽, 如果未指定, 全都允許" - -msgid "Listening port for inbound DNS queries" -msgstr "進入的DNS請求聆聽埠" - -msgid "Load" -msgstr "掛載" - -msgid "Load Average" -msgstr "平均掛載" - -msgid "Loading" -msgstr "掛載中" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "本地IPv4位址" - -msgid "Local IPv6 address" -msgstr "本地IPv6位址" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "本地啟動" - -msgid "Local Time" -msgstr "本地時區" - -msgid "Local domain" -msgstr "本地網域" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "本地網域格式. 僅限符合從未從DHCP或hosts檔轉發和解析的網域" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "本地網域後綴附加倒DHCP名稱和hosts檔項目" - -msgid "Local server" -msgstr "本地伺服器" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "若有多個IP可用, 本地化主機名稱端看請求的子網路而言." - -msgid "Localise queries" -msgstr "本地化網路請求" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "日誌輸出層級" - -msgid "Log queries" -msgstr "日誌查詢" - -msgid "Logging" -msgstr "日誌紀錄中" - -msgid "Login" -msgstr "登入" - -msgid "Logout" -msgstr "登出" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "最低的釋放位址從這網路位址的偏移計算" - -msgid "MAC-Address" -msgstr "MAC-位址" - -msgid "MAC-Address Filter" -msgstr "MAC-位址過濾" - -msgid "MAC-Filter" -msgstr "MAC-過濾" - -msgid "MAC-List" -msgstr "MAC-清單" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "最大傳輸單位MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "允許啟用DHCP釋放的最大數量" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "允許同時齊發的DNS請求的最大數量" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "允許EDNS.0 協定的UDP封包最大數量" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "等待數據機待命的最大秒數" - -msgid "Maximum hold time" -msgstr "可持有最長時間" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "釋放出的位址群最大數量" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "記憶體" - -msgid "Memory usage (%)" -msgstr "記憶體使用 (%)" - -msgid "Metric" -msgstr "公測單位" - -msgid "Minimum hold time" -msgstr "可持有的最低時間" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "協定 %q 漏失的延伸協定" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "模式" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "數據機設備" - -msgid "Modem init timeout" -msgstr "數據機初始化終結時間" - -msgid "Monitor" -msgstr "監視" - -msgid "Mount Entry" -msgstr "掛載項目" - -msgid "Mount Point" -msgstr "掛載點" - -msgid "Mount Points" -msgstr "掛載各點" - -msgid "Mount Points - Mount Entry" -msgstr "掛載各點 - 掛載項目" - -msgid "Mount Points - Swap Entry" -msgstr "掛載各點 - 交換項目" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "掛載各點定義所指定到記憶體設備將會被附載到檔案系統上" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "掛載選項" - -msgid "Mount point" -msgstr "掛載點" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "已掛載檔案系統" - -msgid "Move down" -msgstr "往下移" - -msgid "Move up" -msgstr "往上移" - -msgid "Multicast address" -msgstr "多點群播位址" - -msgid "NAS ID" -msgstr " 網路附存伺服器ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "NTP伺服器備選" - -msgid "NTP sync time-out" -msgstr "" - -msgid "Name" -msgstr "名稱" - -msgid "Name of the new interface" -msgstr "新介面的名稱" - -msgid "Name of the new network" -msgstr "新網路的名稱" - -msgid "Navigation" -msgstr "導覽" - -msgid "Netmask" -msgstr "網路遮罩" - -msgid "Network" -msgstr "網路" - -msgid "Network Utilities" -msgstr "網路多項工具" - -msgid "Network boot image" -msgstr "網路開機映像檔" - -msgid "Network without interfaces." -msgstr "尚無任何介面的網路." - -msgid "Next »" -msgstr "下一個 »" - -msgid "No DHCP Server configured for this interface" -msgstr "在這個介面尚無DHCP伺服器" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "尚未綁在這個表格中" - -msgid "No files found" -msgstr "尚未發現任何檔案" - -msgid "No information available" -msgstr "尚無可運用資訊" - -msgid "No negative cache" -msgstr "尚無拒絕的快取" - -msgid "No network configured on this device" -msgstr "尚無網路設定在這個介面上" - -msgid "No network name specified" -msgstr "尚未指定網路名稱" - -msgid "No package lists available" -msgstr "尚無列出的軟體包可運用" - -msgid "No password set!" -msgstr "尚未設定密碼!" - -msgid "No rules in this chain" -msgstr "尚無規則在這個鏈接上" - -msgid "No zone assigned" -msgstr "尚未指定區碼" - -msgid "Noise" -msgstr "噪音比" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "噪音比:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "無" - -msgid "Normal" -msgstr "正常" - -msgid "Not Found" -msgstr "尚未發現" - -msgid "Not associated" -msgstr "尚未關聯" - -msgid "Not connected" -msgstr "尚未連線" - -msgid "Note: Configuration files will be erased." -msgstr "注意:設定檔將被刪除." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "通知" - -msgid "Nslookup" -msgstr "DNS偵錯Nslookup" - -msgid "OK" -msgstr "行" - -msgid "OPKG-Configuration" -msgstr "OPKG-設定值" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Off-State Delay" -msgstr "關閉狀態延遲" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"在這個頁面您可以設定網路介面. 只要點下這個\"介面群橋接\"而且打入數個以空格分" -"開網路介面的名稱就可以橋接數個介面群. 您也可以使用VLAN 符號INTERFACE.VLANNR (例.如: eth0.1)." - -msgid "On-State Delay" -msgstr "啟用狀態延遲" - -msgid "One of hostname or mac address must be specified!" -msgstr "主機名稱或mac位址任選一個被指定" - -msgid "One or more fields contain invalid values!" -msgstr "有一個以上的欄位包含失效數值!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "有一個以上的欄位缺乏任何數值!" - -msgid "Open list..." -msgstr "開啟清單..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "選項已變更" - -msgid "Option removed" -msgstr "選項已移除" - -msgid "Optional" -msgstr "" - -msgid "Optional, specify to override default server (tic.sixxs.net)" -msgstr "" - -msgid "Optional, use when the SIXXS account has more than one tunnel" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "選項" - -msgid "Other:" -msgstr "其它:" - -msgid "Out" -msgstr "出" - -msgid "Outbound:" -msgstr "外連:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "覆蓋MAC位址" - -msgid "Override MTU" -msgstr "覆蓋MTU數值" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "在DHCP回應中覆蓋匝道器" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "覆蓋傳送到客戶端的網路遮罩. 正常來說它會計算來自魚已存子網路." - -msgid "Override the table used for internal routes" -msgstr "覆蓋之前內部使用的路由表" - -msgid "Overview" -msgstr "預覽" - -msgid "Owner" -msgstr "持有者" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP驗證密碼" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP驗證用戶名" - -msgid "PID" -msgstr "PID碼" - -msgid "PIN" -msgstr "PIN碼" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP協定" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA配置" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP點對點VPN虛擬私人隧道協定" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "軟體包必需有libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "軟體包列表過期24小時" - -msgid "Package name" -msgstr "軟體包名稱" - -msgid "Packets" -msgstr "封包" - -msgid "Part of zone %q" -msgstr "區域 %q 的部分 " - -msgid "Password" -msgstr "密碼" - -msgid "Password authentication" -msgstr "密碼驗證" - -msgid "Password of Private Key" -msgstr "私人金鑰密碼" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "密碼已變更成功!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "CA-證書的路徑" - -msgid "Path to Client-Certificate" -msgstr "用戶端-證書的路徑" - -msgid "Path to Private Key" -msgstr "私人金鑰的路徑" - -msgid "Path to executable which handles the button event" -msgstr "處理按鍵效果可執行檔路徑" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "峰值:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "執行重開" - -msgid "Perform reset" -msgstr "執行重置" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "傳輸率:" - -msgid "Physical Settings" -msgstr "實體設置" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "封包數." - -msgid "Please enter your username and password." -msgstr "請輸入您的用戶名稱和密碼" - -msgid "Policy" -msgstr "策略" - -msgid "Port" -msgstr "埠" - -msgid "Port status:" -msgstr "埠狀態:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "假若在給于多次的 LCP 呼叫失敗後終點將死, 使用0忽略失敗" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "防止用戶端對用戶端的通訊" - -msgid "Prism2/2.5/3 802.11b Wireless Controller" -msgstr "Prism2/2.5/3 802.11b 無線控制器" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "前進" - -msgid "Processes" -msgstr "執行緒" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "協定." - -msgid "Protocol" -msgstr "協定" - -msgid "Protocol family" -msgstr "協定家族" - -msgid "Protocol of the new interface" -msgstr "新介面的協定家族" - -msgid "Protocol support is not installed" -msgstr "支援的協定尚未安裝" - -msgid "Provide NTP server" -msgstr "提供NTP伺服器" - -msgid "Provide new network" -msgstr "提供新網路" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "偽裝Ad-Hoc (ahdemo模式)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "品質" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS門檻" - -msgid "RX" -msgstr "接收" - -msgid "RX Rate" -msgstr "接收速率" - -msgid "RaLink 802.11%s Wireless Controller" -msgstr "RaLink 802.11%s 無線控制器" - -msgid "Radius-Accounting-Port" -msgstr "Radius-驗証帳號-埠" - -msgid "Radius-Accounting-Secret" -msgstr "Radius-合法帳號-密碼" - -msgid "Radius-Accounting-Server" -msgstr "Radius-合法帳號-伺服器" - -msgid "Radius-Authentication-Port" -msgstr "Radius-驗証-埠" - -msgid "Radius-Authentication-Secret" -msgstr "Radius-驗証-密碼" - -msgid "Radius-Authentication-Server" -msgstr "Radius-驗証-伺服器" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -" 讀取/etc/ethers 以便設置DHCP-伺服器" - -msgid "" -"Really delete this interface? The deletion cannot be undone!\\nYou might " -"lose access to this device if you are connected via this interface." -msgstr "" -"真的要刪除這介面?無法復元刪除!\n" -"假如您要透過這個介面連線您可能會無法存取這個設備." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone!\\nYou " -"might lose access to this device if you are connected via this network." -msgstr "" -"真的要刪除這個無線網路?無法復元的刪除!\n" -"假如您是透過這個網路連線您可能會無法存取這個設備." - -msgid "Really reset all changes?" -msgstr "確定要重置回復原廠?" - -#, fuzzy -msgid "" -"Really shut down network?\\nYou might lose access to this device if you are " -"connected via this interface." -msgstr "" -"真的要刪除這個網路 ?\n" -"假如您是透過這個介面連線您可能會無法存取這個設備." - -msgid "" -"Really shutdown interface \"%s\" ?\\nYou might lose access to this device if " -"you are connected via this interface." -msgstr "" -"真的要關閉這個介面 \"%s\" ?!\n" -"假如您要透過這個介面連線您可能會無法存取這個設備." - -msgid "Really switch protocol?" -msgstr "確定要更換協定?" - -msgid "Realtime Connections" -msgstr "即時連線" - -msgid "Realtime Graphs" -msgstr "即時圖表" - -msgid "Realtime Load" -msgstr "即時負載" - -msgid "Realtime Traffic" -msgstr "即時流量" - -msgid "Realtime Wireless" -msgstr "即時無線網路" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "重新綁護" - -msgid "Reboot" -msgstr "重開機" - -msgid "Rebooting..." -msgstr "重開中..." - -msgid "Reboots the operating system of your device" -msgstr "重啟您設備的作業系統" - -msgid "Receive" -msgstr "接收" - -msgid "Receiver Antenna" -msgstr "接收天線" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "重新連接這個介面" - -msgid "Reconnecting interface" -msgstr "重連這個介面中" - -msgid "References" -msgstr "引用" - -msgid "Relay" -msgstr "延遲" - -msgid "Relay Bridge" -msgstr "橋接延遲" - -msgid "Relay between networks" -msgstr "網路間的延遲" - -msgid "Relay bridge" -msgstr "橋接延遲" - -msgid "Remote IPv4 address" -msgstr "遠端IPv4位址" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "移除" - -msgid "Repeat scan" -msgstr "再次掃描" - -msgid "Replace entry" -msgstr "替代項目" - -msgid "Replace wireless configuration" -msgstr "替代性無線設定" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Require TLS" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "對特定的ISP需要,例如.DOCSIS 3 加速有線電視寬頻網路" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "重置" - -msgid "Reset Counters" -msgstr "重置計數器" - -msgid "Reset to defaults" -msgstr "回復預設值" - -msgid "Resolv and Hosts Files" -msgstr "解析和Hosts檔案" - -msgid "Resolve file" -msgstr "解析檔" - -msgid "Restart" -msgstr "重啟" - -msgid "Restart Firewall" -msgstr "重啟防火牆" - -msgid "Restore backup" -msgstr "還原之前備份設定" - -msgid "Reveal/hide password" -msgstr "明示/隱藏 密碼" - -msgid "Revert" -msgstr "回溯" - -msgid "Root" -msgstr "根" - -msgid "Root directory for files served via TFTP" -msgstr "透過TFTP存取根目錄檔案" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Routed IPv6 prefix for downstream interfaces" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "路由器密碼" - -msgid "Routes" -msgstr "路由" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "路由器指定介面導出到特定主機或者能夠到達的網路." - -msgid "Run a filesystem check before mounting the device" -msgstr "掛載這個設備前先跑系統檢查" - -msgid "Run filesystem check" -msgstr "執行系統檢查" - -msgid "SHA256" -msgstr "" - -msgid "" -"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) " -"use 6in4 instead" -msgstr "" - -msgid "SIXXS-handle[/Tunnel-ID]" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH存取" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH-金鑰" - -msgid "SSID" -msgstr "基地台服務設定識別碼SSID" - -msgid "Save" -msgstr "保存" - -msgid "Save & Apply" -msgstr "保存並啟用" - -msgid "Save & Apply" -msgstr "保存 & 啟用" - -msgid "Scan" -msgstr "掃描" - -msgid "Scheduled Tasks" -msgstr "排程任務" - -msgid "Section added" -msgstr "新增的區段" - -msgid "Section removed" -msgstr "區段移除" - -msgid "See \"mount\" manpage for details" -msgstr "查看\"mount\"主頁獲取進階資訊" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "傳送LCP呼叫請求在這個給予的秒數間隔內, 僅影響關聯到失敗門檻" - -msgid "Separate Clients" -msgstr "分隔用戶端" - -msgid "Server Settings" -msgstr "伺服器設定值" - -msgid "Server password" -msgstr "" - -msgid "" -"Server password, enter the specific password of the tunnel when the username " -"contains the tunnel ID" -msgstr "" - -msgid "Server username" -msgstr "" - -msgid "Service Name" -msgstr "服務名稱" - -msgid "Service Type" -msgstr "服務型態" - -msgid "Services" -msgstr "各服務" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "安裝校時同步" - -msgid "Setup DHCP Server" -msgstr "安裝DHCP伺服器" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Show current backup file list" -msgstr "顯示現今的備份檔清單" - -msgid "Shutdown this interface" -msgstr "關閉這個介面" - -msgid "Shutdown this network" -msgstr "關閉這個網路" - -msgid "Signal" -msgstr "信號" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "信號:" - -msgid "Size" -msgstr "大小" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Skip" -msgstr "跳過" - -msgid "Skip to content" -msgstr "跳到內容" - -msgid "Skip to navigation" -msgstr "跳到導覽" - -msgid "Slot time" -msgstr "插槽時間" - -msgid "Software" -msgstr "軟體" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "有些欄位失效, 無法儲存數值!" - -msgid "Sorry, the object you requested was not found." -msgstr "抱歉, 您請求的這物件尚無發現." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "抱歉, 伺服器遭遇非預期的錯誤." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"抱歉, 沒有sysupgrade支援出現, 新版韌體映像檔必須手動更新. 請回歸wiki找尋特定" -"設備安裝指引." - -msgid "Sort" -msgstr "分類" - -msgid "Source" -msgstr "來源" - -msgid "Source routing" -msgstr "" - -msgid "Specifies the button state to handle" -msgstr "指定這個按鈕狀態以便操作" - -msgid "Specifies the directory the device is attached to" -msgstr "指定這個設備被附掛到那個目錄" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "指定這個 Dropbear真實聆聽埠" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "指定失敗ARP可請求的最大數量直到駭客主機死亡為止" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "指定可請求的最大秒數直到駭客主機死亡為止" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "指定加密金鑰在此." - -msgid "Start" -msgstr "啟用" - -msgid "Start priority" -msgstr "啟用優先權順序" - -msgid "Startup" -msgstr "啟動" - -msgid "Static IPv4 Routes" -msgstr "靜態IPv4路由" - -msgid "Static IPv6 Routes" -msgstr "靜態IPv6路由" - -msgid "Static Leases" -msgstr "靜態租約" - -msgid "Static Routes" -msgstr "靜態路由" - -msgid "Static address" -msgstr "靜態位址" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"靜態租約是用來指定固定的IP位址和表示的主機名稱給予DHCP用戶端. 它們也需要非動" -"態介面設定值以便獲取相應租約的主機服務." - -msgid "Status" -msgstr "狀態" - -msgid "Stop" -msgstr "停止" - -msgid "Strict order" -msgstr "嚴謹順序" - -msgid "Submit" -msgstr "提交" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Swap交換頁項目" - -msgid "Switch" -msgstr "交換器" - -msgid "Switch %q" -msgstr "交換器 %q" - -msgid "Switch %q (%s)" -msgstr "交換器 %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "切換協定" - -msgid "Sync with browser" -msgstr "同步瀏覽器" - -msgid "Synchronizing..." -msgstr "同步中..." - -msgid "System" -msgstr "系統" - -msgid "System Log" -msgstr "系統日誌" - -msgid "System Properties" -msgstr "系統屬性" - -msgid "System log buffer size" -msgstr "系統日誌緩衝大小" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP設定" - -msgid "TFTP server root" -msgstr "TFTP 伺服器根" - -msgid "TX" -msgstr "傳送" - -msgid "TX Rate" -msgstr "傳送速度" - -msgid "Table" -msgstr "表格" - -msgid "Target" -msgstr "目標" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "中斷" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"這個Device Configuration欄位會覆蓋無線射頻硬體的物理設定值,如通道、" -"傳送功率或者天線分享道所有定義的無線網路(假如這個無線射頻硬體是多工-SSID能力" -"的). 每個網路設定像加密或操作模式是被分群在Interface Configuration" -"中." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"這 libiwinfo-lua 軟體包尚未安裝. 您必須安裝這個元件以便無線網路設定" -"有作用." - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "指定到這供應商的IPv6字首, 通常用 ::結尾" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"所允許的字元是: A-Z, a-z, 0-9 and " -"_" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"記憶體的設備檔或者分割區 (e.g. /dev/" -"sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"這檔案系統適用來格式化記憶體(例.如. " -"ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"要刷的映像檔已上傳.下面是這個校驗碼和檔案大小詳列, 用原始檔比對它門以確保資料" -"完整性.
    按下面的\"繼續\"便可以開啟更新流程." - -msgid "The following changes have been committed" -msgstr "接下來的修改已經被承諾" - -msgid "The following changes have been reverted" -msgstr "接下來的修改已經被回復" - -msgid "The following rules are currently active on this system." -msgstr "以下的規則現正作用在系統中." - -msgid "The given network name is not unique" -msgstr "輸入的網路名稱非獨一" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "如果您繼續的話.這硬體並非多SSID工能並且已存的設定將會被覆蓋." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "這IPv4開頭以位元計的長度, 剩餘部分將會延用在IPv6位址中." - -msgid "The length of the IPv6 prefix in bits" -msgstr "這IPv6開頭以位元計的長度" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"這設備的網路埠可以被組合到數個 VLAN群, 以便在內的電腦可以直接跟別人互通. VLAN群經常用來分割網路區段. 預設經常會有一個上傳" -"埠來連接到下一個大型網路類似Intenet而其它埠則用來本地區網使用." - -msgid "The selected protocol needs a device assigned" -msgstr "選到的協定需要指定到設備上" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "系統正在刪除設定分割並且當完成時將自行重開." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"系統現正刷機中.
    請勿關閉設備!
    等待數分鐘直到您重新在連線. 可能需" -"要更新您電腦的位址以便再連設備, 端看您的設定. " - -msgid "" -"The tunnel end-point is behind NAT, defaults to disabled and only applies to " -"AYIYA" -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"以上傳的映像檔不包含支援格式. 請確認您選擇的是針對您的平台採用的通用映像檔." - -msgid "There are no active leases." -msgstr "租賃尚未啟動." - -msgid "There are no pending changes to apply!" -msgstr "尚無聽候的修改被採用" - -msgid "There are no pending changes to revert!" -msgstr "尚無聽候的修改被復元!" - -msgid "There are no pending changes!" -msgstr "無聽候的修改!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "尚未指定設備, 請接上一個網路設備在這\"實體設置\"標籤內" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "路由器尚未設密碼. 請設定root密碼以便保護web介面及啟用SSH." - -msgid "This IPv4 address of the relay" -msgstr "IPv4位址的轉驛" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"這是shell通用模式清單用來在系統更新時匹配包括的檔案和目錄. 在/etc/config/ 修" -"改檔案和特定其它設定檔將會被自動保留." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"這是 /etc/rc.local 內容. 在這插入自己的指令 (在 'exit 0' 前面)以便在開機流程" -"結尾執行它們." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with :2" -msgstr "這是由通道代理人指定的本地終端位址, 通常用 :2結尾." - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"在本地網路中 這是唯一的 DHCP" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "這是系統預設的例行性工作排程." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "這是由通道代理人操作的近端PoP通用位址" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "這清單提供目前正在執行的系統的執行緒和狀態的預覽." - -msgid "This page allows the configuration of custom button actions" -msgstr "這一頁允許客製化按鍵動作的設定" - -msgid "This page gives an overview over currently active network connections." -msgstr "這一頁提供目前正在活動中網路連線的預覽." - -msgid "This section contains no values yet" -msgstr "這部分尚未有任何數值." - -msgid "Time Synchronization" -msgstr "校時同步" - -msgid "Time Synchronization is not configured yet." -msgstr "校時同步尚未設定." - -msgid "Timezone" -msgstr "時區" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here." -msgstr "要復元設定檔, 可以上傳之前製作的備份壓縮檔放這." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "全部可用" - -msgid "Traceroute" -msgstr "路由追蹤" - -msgid "Traffic" -msgstr "流量" - -msgid "Transfer" -msgstr "傳輸" - -msgid "Transmission Rate" -msgstr "傳輸速率" - -msgid "Transmit" -msgstr "射頻" - -msgid "Transmit Power" -msgstr "射頻功率" - -msgid "Transmitter Antenna" -msgstr "射頻天線" - -msgid "Trigger" -msgstr "觸發" - -msgid "Trigger Mode" -msgstr "觸發模式" - -msgid "Tunnel ID" -msgstr "通道ID" - -msgid "Tunnel Interface" -msgstr "通道介面" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tunnel broker protocol" -msgstr "" - -msgid "Tunnel setup server" -msgstr "" - -msgid "Tunnel type" -msgstr "" - -msgid "Tx-Power" -msgstr "傳送-功率" - -msgid "Type" -msgstr "型態" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "只用3G UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB設備" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "設備通用唯一識別碼UUID" - -msgid "Unable to dispatch" -msgstr "無法發送" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "未知" - -msgid "Unknown Error, password not changed!" -msgstr "未知錯誤, 密碼尚未改變!" - -msgid "Unmanaged" -msgstr "非託管" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "尚未存檔的修改" - -msgid "Unsupported protocol type." -msgstr "不支援的協定型態" - -msgid "Update lists" -msgstr "上傳清單" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"上傳一個sysupgrade-相容的映像檔在這以便替代正執行中的韌體. 勾選\"保持設定\"以" -"保留目前設定值(必須要是OpenWrt/LEDE相容性韌體映像檔)." - -msgid "Upload archive..." -msgstr "上傳壓縮檔..." - -msgid "Uploaded File" -msgstr "檔案已上傳" - -msgid "Uptime" -msgstr "上傳花費時間" - -msgid "Use /etc/ethers" -msgstr "採用 /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "使用DHCP的匝道器" - -msgid "Use DNS servers advertised by peer" -msgstr "使用終端發布的DNS伺服器" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "使用Use ISO/IEC 3166 alpha2 國碼." - -msgid "Use MTU on tunnel interface" -msgstr "在通道介面上使用的MTU數值" - -msgid "Use TTL on tunnel interface" -msgstr "在通道介面上使用的TTL存活時間" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "當作廣播旗標" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "使用自定的DNS伺服器" - -msgid "Use default gateway" -msgstr "使用預設匝道器" - -msgid "Use gateway metric" -msgstr "使用匝道器公測數" - -msgid "Use routing table" -msgstr "使用路由表" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address indentifies the host, the IPv4-Address specifies to the fixed " -"address to use and the Hostname is assigned as symbolic name to the " -"requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"使用 Add 鍵以便新增一個租賃的項目. 這個 MAC-Address 標誌這" -"個主機, the IPv4-Address 指定固定位址以便使用,Hostname 備指" -"定當作象徵名稱到請求的主機上." - -msgid "Used" -msgstr "已使用" - -msgid "Used Key Slot" -msgstr "已使用的關鍵插槽" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "用戶名稱" - -msgid "VC-Mux" -msgstr "虛擬電路多工器VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLAN 在 %q" - -msgid "VLANs on %q (%s)" -msgstr "VLAN 在 %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "VPN伺服器" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "當請求DHCP封包時要傳送的製造商類別碼" - -msgid "Verbose" -msgstr "" - -msgid "Verbose logging by aiccu daemon" -msgstr "" - -msgid "Verify" -msgstr "確認" - -msgid "Version" -msgstr "版本" - -msgid "WDS" -msgstr "無線分散系統WDS" - -msgid "WEP Open System" -msgstr "WEP 開放系統" - -msgid "WEP Shared Key" -msgstr "WEP 共享金鑰" - -msgid "WEP passphrase" -msgstr "WEP通關密碼" - -msgid "WMM Mode" -msgstr "無線多媒體機制" - -msgid "WPA passphrase" -msgstr "WPA 密碼" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-加密需要 wpa_supplican(終端模式)或者hostapd熱點(對AP或者是 ad-hoc模式)已" -"被安裝." - -msgid "" -"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)" -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "等待修改被啟用..." - -msgid "Waiting for command to complete..." -msgstr "等待完整性指令..." - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "警告" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Whether to create an IPv6 default route over the tunnel" -msgstr "" - -msgid "Whether to route only packets from delegated prefixes" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "無線網路" - -msgid "Wireless Adapter" -msgstr "無線網卡" - -msgid "Wireless Network" -msgstr "無線網路" - -msgid "Wireless Overview" -msgstr "無線預覽" - -msgid "Wireless Security" -msgstr "無線安全" - -msgid "Wireless is disabled or not associated" -msgstr "無線被關閉或者尚未關聯" - -msgid "Wireless is restarting..." -msgstr "無線重啟中..." - -msgid "Wireless network is disabled" -msgstr "無線網路已經被關閉" - -msgid "Wireless network is enabled" -msgstr "無線網路已啟用" - -msgid "Wireless restarted" -msgstr "無線網路已重啟" - -msgid "Wireless shut down" -msgstr "無線網路關閉" - -msgid "Write received DNS requests to syslog" -msgstr "寫入已接收的DNS請求到系統日誌中" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"您可以開啟或關閉初始化指令在這. 修改將會在設備重開後被啟用.
    警" -"告: 假如您關閉必要的初始化腳本像\"網路\", 您的設備將可能無法存取!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "在瀏覽器您必須啟用JavaScript否則LuCI無法正常運作." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "任意" - -msgid "auto" -msgstr "自動" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "已橋接" - -msgid "create:" -msgstr "建立:" - -msgid "creates a bridge over specified interface(s)" -msgstr "在指定的介面群上建立橋接" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "關閉" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "過期" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"當給予DHCP-租賃將" -"會被存檔" - -msgid "forward" -msgstr "轉發" - -msgid "full-duplex" -msgstr "全雙工" - -msgid "half-duplex" -msgstr "半雙工" - -msgid "help" -msgstr "幫助" - -msgid "hidden" -msgstr "隱藏" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "假如目標是某個網路" - -msgid "input" -msgstr "輸入" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "本地DNS 檔案" - -msgid "minimum 1280, maximum 1480" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "no" -msgstr "無" - -msgid "no link" -msgstr "無連線" - -msgid "none" -msgstr "無" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "關閉" - -msgid "on" -msgstr "開啟" - -msgid "open" -msgstr "打開" - -msgid "overlay" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "路由" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "標籤" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "未知" - -msgid "unlimited" -msgstr "無限" - -msgid "unspecified" -msgstr "尚未指定" - -msgid "unspecified -or- create:" -msgstr "尚未指定 - 或 -建立:" - -msgid "untagged" -msgstr "尚未標籤" - -msgid "yes" -msgstr "是的" - -msgid "« Back" -msgstr "« 倒退" - -#~ msgid "Leasetime" -#~ msgstr "租賃時間" - -#~ msgid "AR Support" -#~ msgstr "AR支援" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s 無線控制器" - -#~ msgid "Background Scan" -#~ msgstr "背景搜尋" - -#~ msgid "Compression" -#~ msgstr "壓縮" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "關閉硬體燈號計時器" - -#~ msgid "Do not send probe responses" -#~ msgstr "不傳送探測回應" - -#~ msgid "Fast Frames" -#~ msgstr "快速迅框群" - -#~ msgid "Maximum Rate" -#~ msgstr "最快速度" - -#~ msgid "Minimum Rate" -#~ msgstr "最低速度" - -#~ msgid "Multicast Rate" -#~ msgstr "多點群播速度" - -#~ msgid "Outdoor Channels" -#~ msgstr "室外通道" - -#~ msgid "Regulatory Domain" -#~ msgstr "監管網域" - -#~ msgid "Separate WDS" -#~ msgstr "分隔WDS中繼" - -#~ msgid "Static WDS" -#~ msgstr "靜態WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "渦輪爆衝模式" - -#~ msgid "XR Support" -#~ msgstr "支援XR無線陣列" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "取消選取將會另外建立一個新網路,而不會覆蓋目前的網路設定" - -#~ msgid "Join Network: Settings" -#~ msgstr "加入網路的設定" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "埠 %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "埠 %d 尚未標記在多個VLANs中!" - -#~ msgid "VLAN Interface" -#~ msgstr "VLAN介面" diff --git a/package/luci/modules/luci-base/root/etc/config/luci b/package/luci/modules/luci-base/root/etc/config/luci deleted file mode 100644 index baa3ac5d1e..0000000000 --- a/package/luci/modules/luci-base/root/etc/config/luci +++ /dev/null @@ -1,24 +0,0 @@ -config core main - option lang auto - option mediaurlbase /luci-static/bootstrap - option resourcebase /luci-static/resources - -config extern flash_keep - option uci "/etc/config/" - option dropbear "/etc/dropbear/" - option openvpn "/etc/openvpn/" - option passwd "/etc/passwd" - option opkg "/etc/opkg.conf" - option firewall "/etc/firewall.user" - option uploads "/lib/uci/upload/" - -config internal languages - -config internal sauth - option sessionpath "/tmp/luci-sessions" - option sessiontime 3600 - -config internal ccache - option enable 1 - -config internal themes diff --git a/package/luci/modules/luci-base/root/etc/config/ucitrack b/package/luci/modules/luci-base/root/etc/config/ucitrack deleted file mode 100644 index d083922955..0000000000 --- a/package/luci/modules/luci-base/root/etc/config/ucitrack +++ /dev/null @@ -1,55 +0,0 @@ -config network - option init network - list affects dhcp - list affects radvd - -config wireless - list affects network - -config firewall - option init firewall - list affects luci-splash - list affects qos - list affects miniupnpd - -config olsr - option init olsrd - -config dhcp - option init dnsmasq - list affects odhcpd - -config odhcpd - option init odhcpd - -config dropbear - option init dropbear - -config httpd - option init httpd - -config fstab - option init fstab - -config qos - option init qos - -config system - option init led - list affects luci_statistics - list affects dhcp - -config luci_splash - option init luci_splash - -config upnpd - option init miniupnpd - -config ntpclient - option init ntpclient - -config samba - option init samba - -config tinyproxy - option init tinyproxy diff --git a/package/luci/modules/luci-base/root/etc/luci-uploads/.placeholder b/package/luci/modules/luci-base/root/etc/luci-uploads/.placeholder deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/package/luci/modules/luci-base/root/sbin/luci-reload b/package/luci/modules/luci-base/root/sbin/luci-reload deleted file mode 100755 index cc41da2bb7..0000000000 --- a/package/luci/modules/luci-base/root/sbin/luci-reload +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -. /lib/functions.sh - -apply_config() { - config_get init "$1" init - config_get exec "$1" exec - config_get test "$1" test - - echo "$2" > "/var/run/luci-reload-status" - - [ -n "$init" ] && reload_init "$2" "$init" "$test" - [ -n "$exec" ] && reload_exec "$2" "$exec" "$test" -} - -reload_exec() { - local service="$1" - local ok="$3" - set -- $2 - local cmd="$1"; shift - - [ -x "$cmd" ] && { - echo "Reloading $service... " - ( $cmd "$@" ) 2>/dev/null 1>&2 - [ -n "$ok" -a "$?" != "$ok" ] && echo '!!! Failed to reload' $service '!!!' - } -} - -reload_init() { - [ -x /etc/init.d/$2 ] && /etc/init.d/$2 enabled && { - echo "Reloading $1... " - /etc/init.d/$2 reload >/dev/null 2>&1 - [ -n "$3" -a "$?" != "$3" ] && echo '!!! Failed to reload' $1 '!!!' - } -} - -lock "/var/run/luci-reload" - -config_load ucitrack - -for i in $*; do - config_foreach apply_config $i $i -done - -rm -f "/var/run/luci-reload-status" -lock -u "/var/run/luci-reload" diff --git a/package/luci/modules/luci-base/root/usr/share/acl.d/luci-base.json b/package/luci/modules/luci-base/root/usr/share/acl.d/luci-base.json deleted file mode 100644 index 4d582366ff..0000000000 --- a/package/luci/modules/luci-base/root/usr/share/acl.d/luci-base.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "user": "nobody", - "access": { - "system": { - "methods": [ "board", "info" ] - } - } -} diff --git a/package/luci/modules/luci-base/root/www/index.html b/package/luci/modules/luci-base/root/www/index.html deleted file mode 100644 index 59b0d84842..0000000000 --- a/package/luci/modules/luci-base/root/www/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - -LuCI - Lua Configuration Interface - - diff --git a/package/luci/modules/luci-base/src/Makefile b/package/luci/modules/luci-base/src/Makefile deleted file mode 100644 index 03e887e1d5..0000000000 --- a/package/luci/modules/luci-base/src/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $< - -clean: - rm -f po2lmo parser.so version.lua *.o - -po2lmo: po2lmo.o template_lmo.o - $(CC) $(LDFLAGS) -o $@ $^ - -parser.so: template_parser.o template_utils.o template_lmo.o template_lualib.o - $(CC) $(LDFLAGS) -shared -o $@ $^ - -version.lua: - ./mkversion.sh $@ $(LUCI_VERSION) "$(LUCI_GITBRANCH)" - -compile: parser.so version.lua - -install: compile - mkdir -p $(DESTDIR)/usr/lib/lua/luci/template - cp parser.so $(DESTDIR)/usr/lib/lua/luci/template/parser.so - cp version.lua $(DESTDIR)/usr/lib/lua/luci/version.lua diff --git a/package/luci/modules/luci-base/src/mkversion.sh b/package/luci/modules/luci-base/src/mkversion.sh deleted file mode 100755 index e2d02c1c74..0000000000 --- a/package/luci/modules/luci-base/src/mkversion.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -cat < $1 -local pcall, dofile, _G = pcall, dofile, _G - -module "luci.version" - -if pcall(dofile, "/etc/openwrt_release") and _G.DISTRIB_DESCRIPTION then - distname = "" - distversion = _G.DISTRIB_DESCRIPTION - if _G.DISTRIB_REVISION then - distrevision = _G.DISTRIB_REVISION - if not distversion:find(distrevision,1,true) then - distversion = distversion .. " " .. distrevision - end - end -else - distname = "OpenWrt" - distversion = "Development Snapshot" -end - -luciname = "${3:-LuCI}" -luciversion = "${2:-Git}" -EOF diff --git a/package/luci/modules/luci-base/src/po2lmo.c b/package/luci/modules/luci-base/src/po2lmo.c deleted file mode 100644 index fd927cb52f..0000000000 --- a/package/luci/modules/luci-base/src/po2lmo.c +++ /dev/null @@ -1,247 +0,0 @@ -/* - * lmo - Lua Machine Objects - PO to LMO conversion tool - * - * Copyright (C) 2009-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_lmo.h" - -static void die(const char *msg) -{ - fprintf(stderr, "Error: %s\n", msg); - exit(1); -} - -static void usage(const char *name) -{ - fprintf(stderr, "Usage: %s input.po output.lmo\n", name); - exit(1); -} - -static void print(const void *ptr, size_t size, size_t nmemb, FILE *stream) -{ - if( fwrite(ptr, size, nmemb, stream) == 0 ) - die("Failed to write stdout"); -} - -static int extract_string(const char *src, char *dest, int len) -{ - int pos = 0; - int esc = 0; - int off = -1; - - for( pos = 0; (pos < strlen(src)) && (pos < len); pos++ ) - { - if( (off == -1) && (src[pos] == '"') ) - { - off = pos + 1; - } - else if( off >= 0 ) - { - if( esc == 1 ) - { - switch (src[pos]) - { - case '"': - case '\\': - off++; - break; - } - dest[pos-off] = src[pos]; - esc = 0; - } - else if( src[pos] == '\\' ) - { - dest[pos-off] = src[pos]; - esc = 1; - } - else if( src[pos] != '"' ) - { - dest[pos-off] = src[pos]; - } - else - { - dest[pos-off] = '\0'; - break; - } - } - } - - return (off > -1) ? strlen(dest) : -1; -} - -static int cmp_index(const void *a, const void *b) -{ - uint32_t x = ((const lmo_entry_t *)a)->key_id; - uint32_t y = ((const lmo_entry_t *)b)->key_id; - - if (x < y) - return -1; - else if (x > y) - return 1; - - return 0; -} - -static void print_uint32(uint32_t x, FILE *out) -{ - uint32_t y = htonl(x); - print(&y, sizeof(uint32_t), 1, out); -} - -static void print_index(void *array, int n, FILE *out) -{ - lmo_entry_t *e; - - qsort(array, n, sizeof(*e), cmp_index); - - for (e = array; n > 0; n--, e++) - { - print_uint32(e->key_id, out); - print_uint32(e->val_id, out); - print_uint32(e->offset, out); - print_uint32(e->length, out); - } -} - -int main(int argc, char *argv[]) -{ - char line[4096]; - char key[4096]; - char val[4096]; - char tmp[4096]; - int state = 0; - int offset = 0; - int length = 0; - int n_entries = 0; - void *array = NULL; - lmo_entry_t *entry = NULL; - uint32_t key_id, val_id; - - FILE *in; - FILE *out; - - if( (argc != 3) || ((in = fopen(argv[1], "r")) == NULL) || ((out = fopen(argv[2], "w")) == NULL) ) - usage(argv[0]); - - memset(line, 0, sizeof(key)); - memset(key, 0, sizeof(val)); - memset(val, 0, sizeof(val)); - - while( (NULL != fgets(line, sizeof(line), in)) || (state >= 2 && feof(in)) ) - { - if( state == 0 && strstr(line, "msgid \"") == line ) - { - switch(extract_string(line, key, sizeof(key))) - { - case -1: - die("Syntax error in msgid"); - case 0: - state = 1; - break; - default: - state = 2; - } - } - else if( state == 1 || state == 2 ) - { - if( strstr(line, "msgstr \"") == line || state == 2 ) - { - switch(extract_string(line, val, sizeof(val))) - { - case -1: - state = 4; - break; - default: - state = 3; - } - } - else - { - switch(extract_string(line, tmp, sizeof(tmp))) - { - case -1: - state = 2; - break; - default: - strcat(key, tmp); - } - } - } - else if( state == 3 ) - { - switch(extract_string(line, tmp, sizeof(tmp))) - { - case -1: - state = 4; - break; - default: - strcat(val, tmp); - } - } - - if( state == 4 ) - { - if( strlen(key) > 0 && strlen(val) > 0 ) - { - key_id = sfh_hash(key, strlen(key)); - val_id = sfh_hash(val, strlen(val)); - - if( key_id != val_id ) - { - n_entries++; - array = realloc(array, n_entries * sizeof(lmo_entry_t)); - entry = (lmo_entry_t *)array + n_entries - 1; - - if (!array) - die("Out of memory"); - - entry->key_id = key_id; - entry->val_id = val_id; - entry->offset = offset; - entry->length = strlen(val); - - length = strlen(val) + ((4 - (strlen(val) % 4)) % 4); - - print(val, length, 1, out); - offset += length; - } - } - - state = 0; - memset(key, 0, sizeof(key)); - memset(val, 0, sizeof(val)); - } - - memset(line, 0, sizeof(line)); - } - - print_index(array, n_entries, out); - - if( offset > 0 ) - { - print_uint32(offset, out); - fsync(fileno(out)); - fclose(out); - } - else - { - fclose(out); - unlink(argv[2]); - } - - fclose(in); - return(0); -} diff --git a/package/luci/modules/luci-base/src/template_lmo.c b/package/luci/modules/luci-base/src/template_lmo.c deleted file mode 100644 index 3d1eaf4e08..0000000000 --- a/package/luci/modules/luci-base/src/template_lmo.c +++ /dev/null @@ -1,328 +0,0 @@ -/* - * lmo - Lua Machine Objects - Base functions - * - * Copyright (C) 2009-2010 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_lmo.h" - -/* - * Hash function from http://www.azillionmonkeys.com/qed/hash.html - * Copyright (C) 2004-2008 by Paul Hsieh - */ - -uint32_t sfh_hash(const char *data, int len) -{ - uint32_t hash = len, tmp; - int rem; - - if (len <= 0 || data == NULL) return 0; - - rem = len & 3; - len >>= 2; - - /* Main loop */ - for (;len > 0; len--) { - hash += sfh_get16(data); - tmp = (sfh_get16(data+2) << 11) ^ hash; - hash = (hash << 16) ^ tmp; - data += 2*sizeof(uint16_t); - hash += hash >> 11; - } - - /* Handle end cases */ - switch (rem) { - case 3: hash += sfh_get16(data); - hash ^= hash << 16; - hash ^= data[sizeof(uint16_t)] << 18; - hash += hash >> 11; - break; - case 2: hash += sfh_get16(data); - hash ^= hash << 11; - hash += hash >> 17; - break; - case 1: hash += *data; - hash ^= hash << 10; - hash += hash >> 1; - } - - /* Force "avalanching" of final 127 bits */ - hash ^= hash << 3; - hash += hash >> 5; - hash ^= hash << 4; - hash += hash >> 17; - hash ^= hash << 25; - hash += hash >> 6; - - return hash; -} - -uint32_t lmo_canon_hash(const char *str, int len) -{ - char res[4096]; - char *ptr, prev; - int off; - - if (!str || len >= sizeof(res)) - return 0; - - for (prev = ' ', ptr = res, off = 0; off < len; prev = *str, off++, str++) - { - if (isspace(*str)) - { - if (!isspace(prev)) - *ptr++ = ' '; - } - else - { - *ptr++ = *str; - } - } - - if ((ptr > res) && isspace(*(ptr-1))) - ptr--; - - return sfh_hash(res, ptr - res); -} - -lmo_archive_t * lmo_open(const char *file) -{ - int in = -1; - uint32_t idx_offset = 0; - struct stat s; - - lmo_archive_t *ar = NULL; - - if (stat(file, &s) == -1) - goto err; - - if ((in = open(file, O_RDONLY)) == -1) - goto err; - - if ((ar = (lmo_archive_t *)malloc(sizeof(*ar))) != NULL) - { - memset(ar, 0, sizeof(*ar)); - - ar->fd = in; - ar->size = s.st_size; - - fcntl(ar->fd, F_SETFD, fcntl(ar->fd, F_GETFD) | FD_CLOEXEC); - - if ((ar->mmap = mmap(NULL, ar->size, PROT_READ, MAP_SHARED, ar->fd, 0)) == MAP_FAILED) - goto err; - - idx_offset = ntohl(*((const uint32_t *) - (ar->mmap + ar->size - sizeof(uint32_t)))); - - if (idx_offset >= ar->size) - goto err; - - ar->index = (lmo_entry_t *)(ar->mmap + idx_offset); - ar->length = (ar->size - idx_offset - sizeof(uint32_t)) / sizeof(lmo_entry_t); - ar->end = ar->mmap + ar->size; - - return ar; - } - -err: - if (in > -1) - close(in); - - if (ar != NULL) - { - if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED)) - munmap(ar->mmap, ar->size); - - free(ar); - } - - return NULL; -} - -void lmo_close(lmo_archive_t *ar) -{ - if (ar != NULL) - { - if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED)) - munmap(ar->mmap, ar->size); - - close(ar->fd); - free(ar); - - ar = NULL; - } -} - - -lmo_catalog_t *_lmo_catalogs = NULL; -lmo_catalog_t *_lmo_active_catalog = NULL; - -int lmo_load_catalog(const char *lang, const char *dir) -{ - DIR *dh = NULL; - char pattern[16]; - char path[PATH_MAX]; - struct dirent *de = NULL; - - lmo_archive_t *ar = NULL; - lmo_catalog_t *cat = NULL; - - if (!lmo_change_catalog(lang)) - return 0; - - if (!dir || !(dh = opendir(dir))) - goto err; - - if (!(cat = malloc(sizeof(*cat)))) - goto err; - - memset(cat, 0, sizeof(*cat)); - - snprintf(cat->lang, sizeof(cat->lang), "%s", lang); - snprintf(pattern, sizeof(pattern), "*.%s.lmo", lang); - - while ((de = readdir(dh)) != NULL) - { - if (!fnmatch(pattern, de->d_name, 0)) - { - snprintf(path, sizeof(path), "%s/%s", dir, de->d_name); - ar = lmo_open(path); - - if (ar) - { - ar->next = cat->archives; - cat->archives = ar; - } - } - } - - closedir(dh); - - cat->next = _lmo_catalogs; - _lmo_catalogs = cat; - - if (!_lmo_active_catalog) - _lmo_active_catalog = cat; - - return 0; - -err: - if (dh) closedir(dh); - if (cat) free(cat); - - return -1; -} - -int lmo_change_catalog(const char *lang) -{ - lmo_catalog_t *cat; - - for (cat = _lmo_catalogs; cat; cat = cat->next) - { - if (!strncmp(cat->lang, lang, sizeof(cat->lang))) - { - _lmo_active_catalog = cat; - return 0; - } - } - - return -1; -} - -static lmo_entry_t * lmo_find_entry(lmo_archive_t *ar, uint32_t hash) -{ - unsigned int m, l, r; - uint32_t k; - - l = 0; - r = ar->length - 1; - - while (1) - { - m = l + ((r - l) / 2); - - if (r < l) - break; - - k = ntohl(ar->index[m].key_id); - - if (k == hash) - return &ar->index[m]; - - if (k > hash) - { - if (!m) - break; - - r = m - 1; - } - else - { - l = m + 1; - } - } - - return NULL; -} - -int lmo_translate(const char *key, int keylen, char **out, int *outlen) -{ - uint32_t hash; - lmo_entry_t *e; - lmo_archive_t *ar; - - if (!key || !_lmo_active_catalog) - return -2; - - hash = lmo_canon_hash(key, keylen); - - for (ar = _lmo_active_catalog->archives; ar; ar = ar->next) - { - if ((e = lmo_find_entry(ar, hash)) != NULL) - { - *out = ar->mmap + ntohl(e->offset); - *outlen = ntohl(e->length); - return 0; - } - } - - return -1; -} - -void lmo_close_catalog(const char *lang) -{ - lmo_archive_t *ar, *next; - lmo_catalog_t *cat, *prev; - - for (prev = NULL, cat = _lmo_catalogs; cat; prev = cat, cat = cat->next) - { - if (!strncmp(cat->lang, lang, sizeof(cat->lang))) - { - if (prev) - prev->next = cat->next; - else - _lmo_catalogs = cat->next; - - for (ar = cat->archives; ar; ar = next) - { - next = ar->next; - lmo_close(ar); - } - - free(cat); - break; - } - } -} diff --git a/package/luci/modules/luci-base/src/template_lmo.h b/package/luci/modules/luci-base/src/template_lmo.h deleted file mode 100644 index f251c63ddd..0000000000 --- a/package/luci/modules/luci-base/src/template_lmo.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * lmo - Lua Machine Objects - General header - * - * Copyright (C) 2009-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _TEMPLATE_LMO_H_ -#define _TEMPLATE_LMO_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if (defined(__GNUC__) && defined(__i386__)) -#define sfh_get16(d) (*((const uint16_t *) (d))) -#else -#define sfh_get16(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\ - +(uint32_t)(((const uint8_t *)(d))[0]) ) -#endif - - -struct lmo_entry { - uint32_t key_id; - uint32_t val_id; - uint32_t offset; - uint32_t length; -} __attribute__((packed)); - -typedef struct lmo_entry lmo_entry_t; - - -struct lmo_archive { - int fd; - int length; - uint32_t size; - lmo_entry_t *index; - char *mmap; - char *end; - struct lmo_archive *next; -}; - -typedef struct lmo_archive lmo_archive_t; - - -struct lmo_catalog { - char lang[6]; - struct lmo_archive *archives; - struct lmo_catalog *next; -}; - -typedef struct lmo_catalog lmo_catalog_t; - - -uint32_t sfh_hash(const char *data, int len); -uint32_t lmo_canon_hash(const char *data, int len); - -lmo_archive_t * lmo_open(const char *file); -void lmo_close(lmo_archive_t *ar); - - -extern lmo_catalog_t *_lmo_catalogs; -extern lmo_catalog_t *_lmo_active_catalog; - -int lmo_load_catalog(const char *lang, const char *dir); -int lmo_change_catalog(const char *lang); -int lmo_translate(const char *key, int keylen, char **out, int *outlen); -void lmo_close_catalog(const char *lang); - -#endif diff --git a/package/luci/modules/luci-base/src/template_lualib.c b/package/luci/modules/luci-base/src/template_lualib.c deleted file mode 100644 index d5c8dd6b4c..0000000000 --- a/package/luci/modules/luci-base/src/template_lualib.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * LuCI Template - Lua binding - * - * Copyright (C) 2009 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_lualib.h" - -static int template_L_do_parse(lua_State *L, struct template_parser *parser, const char *chunkname) -{ - int lua_status, rv; - - if (!parser) - { - lua_pushnil(L); - lua_pushinteger(L, errno); - lua_pushstring(L, strerror(errno)); - return 3; - } - - lua_status = lua_load(L, template_reader, parser, chunkname); - - if (lua_status == 0) - rv = 1; - else - rv = template_error(L, parser); - - template_close(parser); - - return rv; -} - -int template_L_parse(lua_State *L) -{ - const char *file = luaL_checkstring(L, 1); - struct template_parser *parser = template_open(file); - - return template_L_do_parse(L, parser, file); -} - -int template_L_parse_string(lua_State *L) -{ - size_t len; - const char *str = luaL_checklstring(L, 1, &len); - struct template_parser *parser = template_string(str, len); - - return template_L_do_parse(L, parser, "[string]"); -} - -int template_L_utf8(lua_State *L) -{ - size_t len = 0; - const char *str = luaL_checklstring(L, 1, &len); - char *res = utf8(str, len); - - if (res != NULL) - { - lua_pushstring(L, res); - free(res); - - return 1; - } - - return 0; -} - -int template_L_pcdata(lua_State *L) -{ - size_t len = 0; - const char *str = luaL_checklstring(L, 1, &len); - char *res = pcdata(str, len); - - if (res != NULL) - { - lua_pushstring(L, res); - free(res); - - return 1; - } - - return 0; -} - -int template_L_striptags(lua_State *L) -{ - size_t len = 0; - const char *str = luaL_checklstring(L, 1, &len); - char *res = striptags(str, len); - - if (res != NULL) - { - lua_pushstring(L, res); - free(res); - - return 1; - } - - return 0; -} - -static int template_L_load_catalog(lua_State *L) { - const char *lang = luaL_optstring(L, 1, "en"); - const char *dir = luaL_optstring(L, 2, NULL); - lua_pushboolean(L, !lmo_load_catalog(lang, dir)); - return 1; -} - -static int template_L_close_catalog(lua_State *L) { - const char *lang = luaL_optstring(L, 1, "en"); - lmo_close_catalog(lang); - return 0; -} - -static int template_L_change_catalog(lua_State *L) { - const char *lang = luaL_optstring(L, 1, "en"); - lua_pushboolean(L, !lmo_change_catalog(lang)); - return 1; -} - -static int template_L_translate(lua_State *L) { - size_t len; - char *tr; - int trlen; - const char *key = luaL_checklstring(L, 1, &len); - - switch (lmo_translate(key, len, &tr, &trlen)) - { - case 0: - lua_pushlstring(L, tr, trlen); - return 1; - - case -1: - return 0; - } - - lua_pushnil(L); - lua_pushstring(L, "no catalog loaded"); - return 2; -} - -static int template_L_hash(lua_State *L) { - size_t len; - const char *key = luaL_checklstring(L, 1, &len); - lua_pushinteger(L, sfh_hash(key, len)); - return 1; -} - - -/* module table */ -static const luaL_reg R[] = { - { "parse", template_L_parse }, - { "parse_string", template_L_parse_string }, - { "utf8", template_L_utf8 }, - { "pcdata", template_L_pcdata }, - { "striptags", template_L_striptags }, - { "load_catalog", template_L_load_catalog }, - { "close_catalog", template_L_close_catalog }, - { "change_catalog", template_L_change_catalog }, - { "translate", template_L_translate }, - { "hash", template_L_hash }, - { NULL, NULL } -}; - -LUALIB_API int luaopen_luci_template_parser(lua_State *L) { - luaL_register(L, TEMPLATE_LUALIB_META, R); - return 1; -} diff --git a/package/luci/modules/luci-base/src/template_lualib.h b/package/luci/modules/luci-base/src/template_lualib.h deleted file mode 100644 index ff7746d158..0000000000 --- a/package/luci/modules/luci-base/src/template_lualib.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * LuCI Template - Lua library header - * - * Copyright (C) 2009 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _TEMPLATE_LUALIB_H_ -#define _TEMPLATE_LUALIB_H_ - -#include "template_parser.h" -#include "template_utils.h" -#include "template_lmo.h" - -#define TEMPLATE_LUALIB_META "template.parser" - -LUALIB_API int luaopen_luci_template_parser(lua_State *L); - -#endif diff --git a/package/luci/modules/luci-base/src/template_parser.c b/package/luci/modules/luci-base/src/template_parser.c deleted file mode 100644 index 0ef08c63d2..0000000000 --- a/package/luci/modules/luci-base/src/template_parser.c +++ /dev/null @@ -1,419 +0,0 @@ -/* - * LuCI Template - Parser implementation - * - * Copyright (C) 2009-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_parser.h" -#include "template_utils.h" -#include "template_lmo.h" - - -/* leading and trailing code for different types */ -const char *gen_code[9][2] = { - { NULL, NULL }, - { "write(\"", "\")" }, - { NULL, NULL }, - { "write(tostring(", " or \"\"))" }, - { "include(\"", "\")" }, - { "write(\"", "\")" }, - { "write(\"", "\")" }, - { NULL, " " }, - { NULL, NULL }, -}; - -/* Simple strstr() like function that takes len arguments for both haystack and needle. */ -static char *strfind(char *haystack, int hslen, const char *needle, int ndlen) -{ - int match = 0; - int i, j; - - for( i = 0; i < hslen; i++ ) - { - if( haystack[i] == needle[0] ) - { - match = ((ndlen == 1) || ((i + ndlen) <= hslen)); - - for( j = 1; (j < ndlen) && ((i + j) < hslen); j++ ) - { - if( haystack[i+j] != needle[j] ) - { - match = 0; - break; - } - } - - if( match ) - return &haystack[i]; - } - } - - return NULL; -} - -struct template_parser * template_open(const char *file) -{ - struct stat s; - struct template_parser *parser; - - if (!(parser = malloc(sizeof(*parser)))) - goto err; - - memset(parser, 0, sizeof(*parser)); - parser->fd = -1; - parser->file = file; - - if (stat(file, &s)) - goto err; - - if ((parser->fd = open(file, O_RDONLY)) < 0) - goto err; - - parser->size = s.st_size; - parser->data = mmap(NULL, parser->size, PROT_READ, MAP_PRIVATE, - parser->fd, 0); - - if (parser->data != MAP_FAILED) - { - parser->off = parser->data; - parser->cur_chunk.type = T_TYPE_INIT; - parser->cur_chunk.s = parser->data; - parser->cur_chunk.e = parser->data; - - return parser; - } - -err: - template_close(parser); - return NULL; -} - -struct template_parser * template_string(const char *str, uint32_t len) -{ - struct template_parser *parser; - - if (!str) { - errno = EINVAL; - goto err; - } - - if (!(parser = malloc(sizeof(*parser)))) - goto err; - - memset(parser, 0, sizeof(*parser)); - parser->fd = -1; - - parser->size = len; - parser->data = (char*)str; - - parser->off = parser->data; - parser->cur_chunk.type = T_TYPE_INIT; - parser->cur_chunk.s = parser->data; - parser->cur_chunk.e = parser->data; - - return parser; - -err: - template_close(parser); - return NULL; -} - -void template_close(struct template_parser *parser) -{ - if (!parser) - return; - - if (parser->gc != NULL) - free(parser->gc); - - /* if file is not set, we were parsing a string */ - if (parser->file) { - if ((parser->data != NULL) && (parser->data != MAP_FAILED)) - munmap(parser->data, parser->size); - - if (parser->fd >= 0) - close(parser->fd); - } - - free(parser); -} - -void template_text(struct template_parser *parser, const char *e) -{ - const char *s = parser->off; - - if (s < (parser->data + parser->size)) - { - if (parser->strip_after) - { - while ((s <= e) && isspace(*s)) - s++; - } - - parser->cur_chunk.type = T_TYPE_TEXT; - } - else - { - parser->cur_chunk.type = T_TYPE_EOF; - } - - parser->cur_chunk.line = parser->line; - parser->cur_chunk.s = s; - parser->cur_chunk.e = e; -} - -void template_code(struct template_parser *parser, const char *e) -{ - const char *s = parser->off; - - parser->strip_before = 0; - parser->strip_after = 0; - - if (*s == '-') - { - parser->strip_before = 1; - for (s++; (s <= e) && (*s == ' ' || *s == '\t'); s++); - } - - if (*(e-1) == '-') - { - parser->strip_after = 1; - for (e--; (e >= s) && (*e == ' ' || *e == '\t'); e--); - } - - switch (*s) - { - /* comment */ - case '#': - s++; - parser->cur_chunk.type = T_TYPE_COMMENT; - break; - - /* include */ - case '+': - s++; - parser->cur_chunk.type = T_TYPE_INCLUDE; - break; - - /* translate */ - case ':': - s++; - parser->cur_chunk.type = T_TYPE_I18N; - break; - - /* translate raw */ - case '_': - s++; - parser->cur_chunk.type = T_TYPE_I18N_RAW; - break; - - /* expr */ - case '=': - s++; - parser->cur_chunk.type = T_TYPE_EXPR; - break; - - /* code */ - default: - parser->cur_chunk.type = T_TYPE_CODE; - break; - } - - parser->cur_chunk.line = parser->line; - parser->cur_chunk.s = s; - parser->cur_chunk.e = e; -} - -static const char * -template_format_chunk(struct template_parser *parser, size_t *sz) -{ - const char *s, *p; - const char *head, *tail; - struct template_chunk *c = &parser->prv_chunk; - struct template_buffer *buf; - - *sz = 0; - s = parser->gc = NULL; - - if (parser->strip_before && c->type == T_TYPE_TEXT) - { - while ((c->e > c->s) && isspace(*(c->e - 1))) - c->e--; - } - - /* empty chunk */ - if (c->s == c->e) - { - if (c->type == T_TYPE_EOF) - { - *sz = 0; - s = NULL; - } - else - { - *sz = 1; - s = " "; - } - } - - /* format chunk */ - else if ((buf = buf_init(c->e - c->s)) != NULL) - { - if ((head = gen_code[c->type][0]) != NULL) - buf_append(buf, head, strlen(head)); - - switch (c->type) - { - case T_TYPE_TEXT: - luastr_escape(buf, c->s, c->e - c->s, 0); - break; - - case T_TYPE_EXPR: - buf_append(buf, c->s, c->e - c->s); - for (p = c->s; p < c->e; p++) - parser->line += (*p == '\n'); - break; - - case T_TYPE_INCLUDE: - luastr_escape(buf, c->s, c->e - c->s, 0); - break; - - case T_TYPE_I18N: - luastr_translate(buf, c->s, c->e - c->s, 1); - break; - - case T_TYPE_I18N_RAW: - luastr_translate(buf, c->s, c->e - c->s, 0); - break; - - case T_TYPE_CODE: - buf_append(buf, c->s, c->e - c->s); - for (p = c->s; p < c->e; p++) - parser->line += (*p == '\n'); - break; - } - - if ((tail = gen_code[c->type][1]) != NULL) - buf_append(buf, tail, strlen(tail)); - - *sz = buf_length(buf); - s = parser->gc = buf_destroy(buf); - - if (!*sz) - { - *sz = 1; - s = " "; - } - } - - return s; -} - -const char *template_reader(lua_State *L, void *ud, size_t *sz) -{ - struct template_parser *parser = ud; - int rem = parser->size - (parser->off - parser->data); - char *tag; - - parser->prv_chunk = parser->cur_chunk; - - /* free previous string */ - if (parser->gc) - { - free(parser->gc); - parser->gc = NULL; - } - - /* before tag */ - if (!parser->in_expr) - { - if ((tag = strfind(parser->off, rem, "<%", 2)) != NULL) - { - template_text(parser, tag); - parser->off = tag + 2; - parser->in_expr = 1; - } - else - { - template_text(parser, parser->data + parser->size); - parser->off = parser->data + parser->size; - } - } - - /* inside tag */ - else - { - if ((tag = strfind(parser->off, rem, "%>", 2)) != NULL) - { - template_code(parser, tag); - parser->off = tag + 2; - parser->in_expr = 0; - } - else - { - /* unexpected EOF */ - template_code(parser, parser->data + parser->size); - - *sz = 1; - return "\033"; - } - } - - return template_format_chunk(parser, sz); -} - -int template_error(lua_State *L, struct template_parser *parser) -{ - const char *err = luaL_checkstring(L, -1); - const char *off = parser->prv_chunk.s; - const char *ptr; - char msg[1024]; - int line = 0; - int chunkline = 0; - - if ((ptr = strfind((char *)err, strlen(err), "]:", 2)) != NULL) - { - chunkline = atoi(ptr + 2) - parser->prv_chunk.line; - - while (*ptr) - { - if (*ptr++ == ' ') - { - err = ptr; - break; - } - } - } - - if (strfind((char *)err, strlen(err), "'char(27)'", 10) != NULL) - { - off = parser->data + parser->size; - err = "'%>' expected before end of file"; - chunkline = 0; - } - - for (ptr = parser->data; ptr < off; ptr++) - if (*ptr == '\n') - line++; - - snprintf(msg, sizeof(msg), "Syntax error in %s:%d: %s", - parser->file ? parser->file : "[string]", line + chunkline, err ? err : "(unknown error)"); - - lua_pushnil(L); - lua_pushinteger(L, line + chunkline); - lua_pushstring(L, msg); - - return 3; -} diff --git a/package/luci/modules/luci-base/src/template_parser.h b/package/luci/modules/luci-base/src/template_parser.h deleted file mode 100644 index 2415e87079..0000000000 --- a/package/luci/modules/luci-base/src/template_parser.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * LuCI Template - Parser header - * - * Copyright (C) 2009 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _TEMPLATE_PARSER_H_ -#define _TEMPLATE_PARSER_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - - -/* code types */ -#define T_TYPE_INIT 0 -#define T_TYPE_TEXT 1 -#define T_TYPE_COMMENT 2 -#define T_TYPE_EXPR 3 -#define T_TYPE_INCLUDE 4 -#define T_TYPE_I18N 5 -#define T_TYPE_I18N_RAW 6 -#define T_TYPE_CODE 7 -#define T_TYPE_EOF 8 - - -struct template_chunk { - const char *s; - const char *e; - int type; - int line; -}; - -/* parser state */ -struct template_parser { - int fd; - uint32_t size; - char *data; - char *off; - char *gc; - int line; - int in_expr; - int strip_before; - int strip_after; - struct template_chunk prv_chunk; - struct template_chunk cur_chunk; - const char *file; -}; - -struct template_parser * template_open(const char *file); -struct template_parser * template_string(const char *str, uint32_t len); -void template_close(struct template_parser *parser); - -const char *template_reader(lua_State *L, void *ud, size_t *sz); -int template_error(lua_State *L, struct template_parser *parser); - -#endif diff --git a/package/luci/modules/luci-base/src/template_utils.c b/package/luci/modules/luci-base/src/template_utils.c deleted file mode 100644 index 3979487f12..0000000000 --- a/package/luci/modules/luci-base/src/template_utils.c +++ /dev/null @@ -1,484 +0,0 @@ -/* - * LuCI Template - Utility functions - * - * Copyright (C) 2010 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_utils.h" -#include "template_lmo.h" - -/* initialize a buffer object */ -struct template_buffer * buf_init(int size) -{ - struct template_buffer *buf; - - if (size <= 0) - size = 1024; - - buf = (struct template_buffer *)malloc(sizeof(struct template_buffer)); - - if (buf != NULL) - { - buf->fill = 0; - buf->size = size; - buf->data = malloc(buf->size); - - if (buf->data != NULL) - { - buf->dptr = buf->data; - buf->data[0] = 0; - - return buf; - } - - free(buf); - } - - return NULL; -} - -/* grow buffer */ -int buf_grow(struct template_buffer *buf, int size) -{ - unsigned int off = (buf->dptr - buf->data); - char *data; - - if (size <= 0) - size = 1024; - - data = realloc(buf->data, buf->size + size); - - if (data != NULL) - { - buf->data = data; - buf->dptr = data + off; - buf->size += size; - - return buf->size; - } - - return 0; -} - -/* put one char into buffer object */ -int buf_putchar(struct template_buffer *buf, char c) -{ - if( ((buf->fill + 1) >= buf->size) && !buf_grow(buf, 0) ) - return 0; - - *(buf->dptr++) = c; - *(buf->dptr) = 0; - - buf->fill++; - return 1; -} - -/* append data to buffer */ -int buf_append(struct template_buffer *buf, const char *s, int len) -{ - if ((buf->fill + len + 1) >= buf->size) - { - if (!buf_grow(buf, len + 1)) - return 0; - } - - memcpy(buf->dptr, s, len); - buf->fill += len; - buf->dptr += len; - - *(buf->dptr) = 0; - - return len; -} - -/* read buffer length */ -int buf_length(struct template_buffer *buf) -{ - return buf->fill; -} - -/* destroy buffer object and return pointer to data */ -char * buf_destroy(struct template_buffer *buf) -{ - char *data = buf->data; - - free(buf); - return data; -} - - -/* calculate the number of expected continuation chars */ -static inline int mb_num_chars(unsigned char c) -{ - if ((c & 0xE0) == 0xC0) - return 2; - else if ((c & 0xF0) == 0xE0) - return 3; - else if ((c & 0xF8) == 0xF0) - return 4; - else if ((c & 0xFC) == 0xF8) - return 5; - else if ((c & 0xFE) == 0xFC) - return 6; - - return 1; -} - -/* test whether the given byte is a valid continuation char */ -static inline int mb_is_cont(unsigned char c) -{ - return ((c >= 0x80) && (c <= 0xBF)); -} - -/* test whether the byte sequence at the given pointer with the given - * length is the shortest possible representation of the code point */ -static inline int mb_is_shortest(unsigned char *s, int n) -{ - switch (n) - { - case 2: - /* 1100000x (10xxxxxx) */ - return !(((*s >> 1) == 0x60) && - ((*(s+1) >> 6) == 0x02)); - - case 3: - /* 11100000 100xxxxx (10xxxxxx) */ - return !((*s == 0xE0) && - ((*(s+1) >> 5) == 0x04) && - ((*(s+2) >> 6) == 0x02)); - - case 4: - /* 11110000 1000xxxx (10xxxxxx 10xxxxxx) */ - return !((*s == 0xF0) && - ((*(s+1) >> 4) == 0x08) && - ((*(s+2) >> 6) == 0x02) && - ((*(s+3) >> 6) == 0x02)); - - case 5: - /* 11111000 10000xxx (10xxxxxx 10xxxxxx 10xxxxxx) */ - return !((*s == 0xF8) && - ((*(s+1) >> 3) == 0x10) && - ((*(s+2) >> 6) == 0x02) && - ((*(s+3) >> 6) == 0x02) && - ((*(s+4) >> 6) == 0x02)); - - case 6: - /* 11111100 100000xx (10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx) */ - return !((*s == 0xF8) && - ((*(s+1) >> 2) == 0x20) && - ((*(s+2) >> 6) == 0x02) && - ((*(s+3) >> 6) == 0x02) && - ((*(s+4) >> 6) == 0x02) && - ((*(s+5) >> 6) == 0x02)); - } - - return 1; -} - -/* test whether the byte sequence at the given pointer with the given - * length is an UTF-16 surrogate */ -static inline int mb_is_surrogate(unsigned char *s, int n) -{ - return ((n == 3) && (*s == 0xED) && (*(s+1) >= 0xA0) && (*(s+1) <= 0xBF)); -} - -/* test whether the byte sequence at the given pointer with the given - * length is an illegal UTF-8 code point */ -static inline int mb_is_illegal(unsigned char *s, int n) -{ - return ((n == 3) && (*s == 0xEF) && (*(s+1) == 0xBF) && - (*(s+2) >= 0xBE) && (*(s+2) <= 0xBF)); -} - - -/* scan given source string, validate UTF-8 sequence and store result - * in given buffer object */ -static int _validate_utf8(unsigned char **s, int l, struct template_buffer *buf) -{ - unsigned char *ptr = *s; - unsigned int o = 0, v, n; - - /* ascii byte without null */ - if ((*(ptr+0) >= 0x01) && (*(ptr+0) <= 0x7F)) - { - if (!buf_putchar(buf, *ptr++)) - return 0; - - o = 1; - } - - /* multi byte sequence */ - else if ((n = mb_num_chars(*ptr)) > 1) - { - /* count valid chars */ - for (v = 1; (v <= n) && ((o+v) < l) && mb_is_cont(*(ptr+v)); v++); - - switch (n) - { - case 6: - case 5: - /* five and six byte sequences are always invalid */ - if (!buf_putchar(buf, '?')) - return 0; - - break; - - default: - /* if the number of valid continuation bytes matches the - * expected number and if the sequence is legal, copy - * the bytes to the destination buffer */ - if ((v == n) && mb_is_shortest(ptr, n) && - !mb_is_surrogate(ptr, n) && !mb_is_illegal(ptr, n)) - { - /* copy sequence */ - if (!buf_append(buf, (char *)ptr, n)) - return 0; - } - - /* the found sequence is illegal, skip it */ - else - { - /* invalid sequence */ - if (!buf_putchar(buf, '?')) - return 0; - } - - break; - } - - /* advance beyound the last found valid continuation char */ - o = v; - ptr += v; - } - - /* invalid byte (0x00) */ - else - { - if (!buf_putchar(buf, '?')) /* or 0xEF, 0xBF, 0xBD */ - return 0; - - o = 1; - ptr++; - } - - *s = ptr; - return o; -} - -/* sanitize given string and replace all invalid UTF-8 sequences with "?" */ -char * utf8(const char *s, unsigned int l) -{ - struct template_buffer *buf = buf_init(l); - unsigned char *ptr = (unsigned char *)s; - unsigned int v, o; - - if (!buf) - return NULL; - - for (o = 0; o < l; o++) - { - /* ascii char */ - if ((*ptr >= 0x01) && (*ptr <= 0x7F)) - { - if (!buf_putchar(buf, (char)*ptr++)) - break; - } - - /* invalid byte or multi byte sequence */ - else - { - if (!(v = _validate_utf8(&ptr, l - o, buf))) - break; - - o += (v - 1); - } - } - - return buf_destroy(buf); -} - -/* Sanitize given string and strip all invalid XML bytes - * Validate UTF-8 sequences - * Escape XML control chars */ -char * pcdata(const char *s, unsigned int l) -{ - struct template_buffer *buf = buf_init(l); - unsigned char *ptr = (unsigned char *)s; - unsigned int o, v; - char esq[8]; - int esl; - - if (!buf) - return NULL; - - for (o = 0; o < l; o++) - { - /* Invalid XML bytes */ - if (((*ptr >= 0x00) && (*ptr <= 0x08)) || - ((*ptr >= 0x0B) && (*ptr <= 0x0C)) || - ((*ptr >= 0x0E) && (*ptr <= 0x1F)) || - (*ptr == 0x7F)) - { - ptr++; - } - - /* Escapes */ - else if ((*ptr == 0x26) || - (*ptr == 0x27) || - (*ptr == 0x22) || - (*ptr == 0x3C) || - (*ptr == 0x3E)) - { - esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr); - - if (!buf_append(buf, esq, esl)) - break; - - ptr++; - } - - /* ascii char */ - else if (*ptr <= 0x7F) - { - buf_putchar(buf, (char)*ptr++); - } - - /* multi byte sequence */ - else - { - if (!(v = _validate_utf8(&ptr, l - o, buf))) - break; - - o += (v - 1); - } - } - - return buf_destroy(buf); -} - -char * striptags(const char *s, unsigned int l) -{ - struct template_buffer *buf = buf_init(l); - unsigned char *ptr = (unsigned char *)s; - unsigned char *end = ptr + l; - unsigned char *tag; - unsigned char prev; - char esq[8]; - int esl; - - for (prev = ' '; ptr < end; ptr++) - { - if ((*ptr == '<') && ((ptr + 2) < end) && - ((*(ptr + 1) == '/') || isalpha(*(ptr + 1)))) - { - for (tag = ptr; tag < end; tag++) - { - if (*tag == '>') - { - if (!isspace(prev)) - buf_putchar(buf, ' '); - - ptr = tag; - prev = ' '; - break; - } - } - } - else if (isspace(*ptr)) - { - if (!isspace(prev)) - buf_putchar(buf, *ptr); - - prev = *ptr; - } - else - { - switch(*ptr) - { - case '"': - case '\'': - case '<': - case '>': - case '&': - esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr); - buf_append(buf, esq, esl); - break; - - default: - buf_putchar(buf, *ptr); - break; - } - - prev = *ptr; - } - } - - return buf_destroy(buf); -} - -void luastr_escape(struct template_buffer *out, const char *s, unsigned int l, - int escape_xml) -{ - int esl; - char esq[8]; - char *ptr; - - for (ptr = (char *)s; ptr < (s + l); ptr++) - { - switch (*ptr) - { - case '\\': - buf_append(out, "\\\\", 2); - break; - - case '"': - if (escape_xml) - buf_append(out, """, 5); - else - buf_append(out, "\\\"", 2); - break; - - case '\n': - buf_append(out, "\\n", 2); - break; - - case '\'': - case '&': - case '<': - case '>': - if (escape_xml) - { - esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr); - buf_append(out, esq, esl); - break; - } - - default: - buf_putchar(out, *ptr); - } - } -} - -void luastr_translate(struct template_buffer *out, const char *s, unsigned int l, - int escape_xml) -{ - char *tr; - int trlen; - - if (!lmo_translate(s, l, &tr, &trlen)) - luastr_escape(out, tr, trlen, escape_xml); - else - luastr_escape(out, s, l, escape_xml); -} diff --git a/package/luci/modules/luci-base/src/template_utils.h b/package/luci/modules/luci-base/src/template_utils.h deleted file mode 100644 index 32a79f93bc..0000000000 --- a/package/luci/modules/luci-base/src/template_utils.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * LuCI Template - Utility header - * - * Copyright (C) 2010-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _TEMPLATE_UTILS_H_ -#define _TEMPLATE_UTILS_H_ - -#include -#include -#include - - -/* buffer object */ -struct template_buffer { - char *data; - char *dptr; - unsigned int size; - unsigned int fill; -}; - -struct template_buffer * buf_init(int size); -int buf_grow(struct template_buffer *buf, int size); -int buf_putchar(struct template_buffer *buf, char c); -int buf_append(struct template_buffer *buf, const char *s, int len); -int buf_length(struct template_buffer *buf); -char * buf_destroy(struct template_buffer *buf); - -char * utf8(const char *s, unsigned int l); -char * pcdata(const char *s, unsigned int l); -char * striptags(const char *s, unsigned int l); - -void luastr_escape(struct template_buffer *out, const char *s, unsigned int l, int escape_xml); -void luastr_translate(struct template_buffer *out, const char *s, unsigned int l, int escape_xml); - -#endif diff --git a/package/luci/modules/luci-mod-admin-full/Makefile b/package/luci/modules/luci-mod-admin-full/Makefile deleted file mode 100644 index 36ddf13f16..0000000000 --- a/package/luci/modules/luci-mod-admin-full/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Administration - full-featured for full control -LUCI_DEPENDS:=+luci-base - -PKG_BUILD_DEPENDS:=iwinfo -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/bandwidth.svg b/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/bandwidth.svg deleted file mode 100644 index 4f9148833a..0000000000 --- a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/bandwidth.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/connections.svg b/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/connections.svg deleted file mode 100644 index 816f7e6a75..0000000000 --- a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/connections.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/load.svg b/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/load.svg deleted file mode 100644 index d6817027ab..0000000000 --- a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/load.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/wifirate.svg b/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/wifirate.svg deleted file mode 100644 index d3e848b93f..0000000000 --- a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/wifirate.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/wireless.svg b/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/wireless.svg deleted file mode 100644 index 99d9840f6b..0000000000 --- a/package/luci/modules/luci-mod-admin-full/htdocs/luci-static/resources/wireless.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua b/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua deleted file mode 100644 index 2572615138..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.filebrowser", package.seeall) - -function index() - entry( {"admin", "filebrowser"}, template("cbi/filebrowser") ).leaf = true -end diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua b/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua deleted file mode 100644 index cc8c2e3ae6..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua +++ /dev/null @@ -1,42 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.index", package.seeall) - -function index() - local root = node() - if not root.target then - root.target = alias("admin") - root.index = true - end - - local page = node("admin") - page.target = firstchild() - page.title = _("Administration") - page.order = 10 - page.sysauth = "root" - page.sysauth_authenticator = "htmlauth" - page.ucidata = true - page.index = true - - -- Empty services menu to be populated by addons - entry({"admin", "services"}, firstchild(), _("Services"), 40).index = true - - entry({"admin", "logout"}, call("action_logout"), _("Logout"), 90) -end - -function action_logout() - local dsp = require "luci.dispatcher" - local utl = require "luci.util" - local sid = dsp.context.authsession - - if sid then - utl.ubus("session", "destroy", { ubus_rpc_session = sid }) - - luci.http.header("Set-Cookie", "sysauth=%s; expires=%s; path=%s/" %{ - sid, 'Thu, 01 Jan 1970 01:00:00 GMT', dsp.build_url() - }) - end - - luci.http.redirect(dsp.build_url()) -end diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua b/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua deleted file mode 100644 index 2cb2108b9f..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua +++ /dev/null @@ -1,429 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.network", package.seeall) - -function index() - local uci = require("luci.model.uci").cursor() - local page - - page = node("admin", "network") - page.target = firstchild() - page.title = _("Network") - page.order = 50 - page.index = true - --- if page.inreq then - local has_switch = false - - uci:foreach("network", "switch", - function(s) - has_switch = true - return false - end) - - if has_switch then - page = node("admin", "network", "vlan") - page.target = cbi("admin_network/vlan") - page.title = _("Switch") - page.order = 20 - - page = entry({"admin", "network", "switch_status"}, call("switch_status"), nil) - page.leaf = true - end - - - local has_wifi = false - - uci:foreach("wireless", "wifi-device", - function(s) - has_wifi = true - return false - end) - - if has_wifi then - page = entry({"admin", "network", "wireless_join"}, post("wifi_join"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_add"}, post("wifi_add"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_delete"}, post("wifi_delete"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_status"}, call("wifi_status"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_reconnect"}, post("wifi_reconnect"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_shutdown"}, post("wifi_shutdown"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless"}, arcombine(template("admin_network/wifi_overview"), cbi("admin_network/wifi")), _("Wireless"), 15) - page.leaf = true - page.subindex = true - - if page.inreq then - local wdev - local net = require "luci.model.network".init(uci) - for _, wdev in ipairs(net:get_wifidevs()) do - local wnet - for _, wnet in ipairs(wdev:get_wifinets()) do - entry( - {"admin", "network", "wireless", wnet:id()}, - alias("admin", "network", "wireless"), - wdev:name() .. ": " .. wnet:shortname() - ) - end - end - end - end - - - page = entry({"admin", "network", "iface_add"}, cbi("admin_network/iface_add"), nil) - page.leaf = true - - page = entry({"admin", "network", "iface_delete"}, post("iface_delete"), nil) - page.leaf = true - - page = entry({"admin", "network", "iface_status"}, call("iface_status"), nil) - page.leaf = true - - page = entry({"admin", "network", "iface_reconnect"}, post("iface_reconnect"), nil) - page.leaf = true - - page = entry({"admin", "network", "iface_shutdown"}, post("iface_shutdown"), nil) - page.leaf = true - - page = entry({"admin", "network", "network"}, arcombine(cbi("admin_network/network"), cbi("admin_network/ifaces")), _("Interfaces"), 10) - page.leaf = true - page.subindex = true - - if page.inreq then - uci:foreach("network", "interface", - function (section) - local ifc = section[".name"] - if ifc ~= "loopback" then - entry({"admin", "network", "network", ifc}, - true, ifc:upper()) - end - end) - end - - - if nixio.fs.access("/etc/config/dhcp") then - page = node("admin", "network", "dhcp") - page.target = cbi("admin_network/dhcp") - page.title = _("DHCP and DNS") - page.order = 30 - - page = entry({"admin", "network", "dhcplease_status"}, call("lease_status"), nil) - page.leaf = true - - page = node("admin", "network", "hosts") - page.target = cbi("admin_network/hosts") - page.title = _("Hostnames") - page.order = 40 - end - - page = node("admin", "network", "routes") - page.target = cbi("admin_network/routes") - page.title = _("Static Routes") - page.order = 50 - - page = node("admin", "network", "diagnostics") - page.target = template("admin_network/diagnostics") - page.title = _("Diagnostics") - page.order = 60 - - page = entry({"admin", "network", "diag_ping"}, post("diag_ping"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_nslookup"}, post("diag_nslookup"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_traceroute"}, post("diag_traceroute"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_ping6"}, post("diag_ping6"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_traceroute6"}, post("diag_traceroute6"), nil) - page.leaf = true --- end -end - -function wifi_join() - local tpl = require "luci.template" - local http = require "luci.http" - local dev = http.formvalue("device") - local ssid = http.formvalue("join") - - if dev and ssid then - local cancel = (http.formvalue("cancel") or http.formvalue("cbi.cancel")) - if not cancel then - local cbi = require "luci.cbi" - local map = luci.cbi.load("admin_network/wifi_add")[1] - - if map:parse() ~= cbi.FORM_DONE then - tpl.render("header") - map:render() - tpl.render("footer") - end - - return - end - end - - tpl.render("admin_network/wifi_join") -end - -function wifi_add() - local dev = luci.http.formvalue("device") - local ntm = require "luci.model.network".init() - - dev = dev and ntm:get_wifidev(dev) - - if dev then - local net = dev:add_wifinet({ - mode = "ap", - ssid = "OpenWrt", - encryption = "none" - }) - - ntm:save("wireless") - luci.http.redirect(net:adminlink()) - end -end - -function wifi_delete(network) - local ntm = require "luci.model.network".init() - local wnet = ntm:get_wifinet(network) - if wnet then - local dev = wnet:get_device() - local nets = wnet:get_networks() - if dev then - ntm:del_wifinet(network) - ntm:commit("wireless") - local _, net - for _, net in ipairs(nets) do - if net:is_empty() then - ntm:del_network(net:name()) - ntm:commit("network") - end - end - luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>/dev/null") - end - end - - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless")) -end - -function iface_status(ifaces) - local netm = require "luci.model.network".init() - local rv = { } - - local iface - for iface in ifaces:gmatch("[%w%.%-_]+") do - local net = netm:get_network(iface) - local device = net and net:get_interface() - if device then - local data = { - id = iface, - proto = net:proto(), - uptime = net:uptime(), - gwaddr = net:gwaddr(), - ipaddrs = net:ipaddrs(), - ip6addrs = net:ip6addrs(), - dnsaddrs = net:dnsaddrs(), - ip6prefix = net:ip6prefix(), - name = device:shortname(), - type = device:type(), - ifname = device:name(), - macaddr = device:mac(), - is_up = device:is_up(), - rx_bytes = device:rx_bytes(), - tx_bytes = device:tx_bytes(), - rx_packets = device:rx_packets(), - tx_packets = device:tx_packets(), - - subdevices = { } - } - - for _, device in ipairs(net:get_interfaces() or {}) do - data.subdevices[#data.subdevices+1] = { - name = device:shortname(), - type = device:type(), - ifname = device:name(), - macaddr = device:mac(), - macaddr = device:mac(), - is_up = device:is_up(), - rx_bytes = device:rx_bytes(), - tx_bytes = device:tx_bytes(), - rx_packets = device:rx_packets(), - tx_packets = device:tx_packets(), - } - end - - rv[#rv+1] = data - else - rv[#rv+1] = { - id = iface, - name = iface, - type = "ethernet" - } - end - end - - if #rv > 0 then - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return - end - - luci.http.status(404, "No such device") -end - -function iface_reconnect(iface) - local netmd = require "luci.model.network".init() - local net = netmd:get_network(iface) - if net then - luci.sys.call("env -i /sbin/ifup %q >/dev/null 2>/dev/null" % iface) - luci.http.status(200, "Reconnected") - return - end - - luci.http.status(404, "No such interface") -end - -function iface_shutdown(iface) - local netmd = require "luci.model.network".init() - local net = netmd:get_network(iface) - if net then - luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface) - luci.http.status(200, "Shutdown") - return - end - - luci.http.status(404, "No such interface") -end - -function iface_delete(iface) - local netmd = require "luci.model.network".init() - local net = netmd:del_network(iface) - if net then - luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface) - luci.http.redirect(luci.dispatcher.build_url("admin/network/network")) - netmd:commit("network") - netmd:commit("wireless") - return - end - - luci.http.status(404, "No such interface") -end - -function wifi_status(devs) - local s = require "luci.tools.status" - local rv = { } - - local dev - for dev in devs:gmatch("[%w%.%-]+") do - rv[#rv+1] = s.wifi_network(dev) - end - - if #rv > 0 then - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return - end - - luci.http.status(404, "No such device") -end - -local function wifi_reconnect_shutdown(shutdown, wnet) - local netmd = require "luci.model.network".init() - local net = netmd:get_wifinet(wnet) - local dev = net:get_device() - if dev and net then - dev:set("disabled", nil) - net:set("disabled", shutdown and 1 or nil) - netmd:commit("wireless") - - luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>/dev/null") - luci.http.status(200, shutdown and "Shutdown" or "Reconnected") - - return - end - - luci.http.status(404, "No such radio") -end - -function wifi_reconnect(wnet) - wifi_reconnect_shutdown(false, wnet) -end - -function wifi_shutdown(wnet) - wifi_reconnect_shutdown(true, wnet) -end - -function lease_status() - local s = require "luci.tools.status" - - luci.http.prepare_content("application/json") - luci.http.write('[') - luci.http.write_json(s.dhcp_leases()) - luci.http.write(',') - luci.http.write_json(s.dhcp6_leases()) - luci.http.write(']') -end - -function switch_status(switches) - local s = require "luci.tools.status" - - luci.http.prepare_content("application/json") - luci.http.write_json(s.switch_status(switches)) -end - -function diag_command(cmd, addr) - if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then - luci.http.prepare_content("text/plain") - - local util = io.popen(cmd % addr) - if util then - while true do - local ln = util:read("*l") - if not ln then break end - luci.http.write(ln) - luci.http.write("\n") - end - - util:close() - end - - return - end - - luci.http.status(500, "Bad address") -end - -function diag_ping(addr) - diag_command("ping -c 5 -W 1 %q 2>&1", addr) -end - -function diag_traceroute(addr) - diag_command("traceroute -q 1 -w 1 -n %q 2>&1", addr) -end - -function diag_nslookup(addr) - diag_command("nslookup %q 2>&1", addr) -end - -function diag_ping6(addr) - diag_command("ping6 -c 5 %q 2>&1", addr) -end - -function diag_traceroute6(addr) - diag_command("traceroute6 -q 1 -w 2 -n %q 2>&1", addr) -end diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua b/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua deleted file mode 100644 index 22e1b7e173..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua +++ /dev/null @@ -1,150 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.status", package.seeall) - -function index() - entry({"admin", "status"}, alias("admin", "status", "overview"), _("Status"), 20).index = true - entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1) - - entry({"admin", "status", "iptables"}, template("admin_status/iptables"), _("Firewall"), 2).leaf = true - entry({"admin", "status", "iptables_action"}, post("action_iptables")).leaf = true - - entry({"admin", "status", "routes"}, template("admin_status/routes"), _("Routes"), 3) - entry({"admin", "status", "syslog"}, call("action_syslog"), _("System Log"), 4) - entry({"admin", "status", "dmesg"}, call("action_dmesg"), _("Kernel Log"), 5) - entry({"admin", "status", "processes"}, cbi("admin_status/processes"), _("Processes"), 6) - - entry({"admin", "status", "realtime"}, alias("admin", "status", "realtime", "load"), _("Realtime Graphs"), 7) - - entry({"admin", "status", "realtime", "load"}, template("admin_status/load"), _("Load"), 1).leaf = true - entry({"admin", "status", "realtime", "load_status"}, call("action_load")).leaf = true - - entry({"admin", "status", "realtime", "bandwidth"}, template("admin_status/bandwidth"), _("Traffic"), 2).leaf = true - entry({"admin", "status", "realtime", "bandwidth_status"}, call("action_bandwidth")).leaf = true - - if nixio.fs.access("/etc/config/wireless") then - entry({"admin", "status", "realtime", "wireless"}, template("admin_status/wireless"), _("Wireless"), 3).leaf = true - entry({"admin", "status", "realtime", "wireless_status"}, call("action_wireless")).leaf = true - end - - entry({"admin", "status", "realtime", "connections"}, template("admin_status/connections"), _("Connections"), 4).leaf = true - entry({"admin", "status", "realtime", "connections_status"}, call("action_connections")).leaf = true - - entry({"admin", "status", "nameinfo"}, call("action_nameinfo")).leaf = true -end - -function action_syslog() - local syslog = luci.sys.syslog() - luci.template.render("admin_status/syslog", {syslog=syslog}) -end - -function action_dmesg() - local dmesg = luci.sys.dmesg() - luci.template.render("admin_status/dmesg", {dmesg=dmesg}) -end - -function action_iptables() - if luci.http.formvalue("zero") then - if luci.http.formvalue("family") == "6" then - luci.util.exec("/usr/sbin/ip6tables -Z") - else - luci.util.exec("/usr/sbin/iptables -Z") - end - elseif luci.http.formvalue("restart") then - luci.util.exec("/etc/init.d/firewall restart") - end - - luci.http.redirect(luci.dispatcher.build_url("admin/status/iptables")) -end - -function action_bandwidth(iface) - luci.http.prepare_content("application/json") - - local bwc = io.popen("luci-bwc -i %q 2>/dev/null" % iface) - if bwc then - luci.http.write("[") - - while true do - local ln = bwc:read("*l") - if not ln then break end - luci.http.write(ln) - end - - luci.http.write("]") - bwc:close() - end -end - -function action_wireless(iface) - luci.http.prepare_content("application/json") - - local bwc = io.popen("luci-bwc -r %q 2>/dev/null" % iface) - if bwc then - luci.http.write("[") - - while true do - local ln = bwc:read("*l") - if not ln then break end - luci.http.write(ln) - end - - luci.http.write("]") - bwc:close() - end -end - -function action_load() - luci.http.prepare_content("application/json") - - local bwc = io.popen("luci-bwc -l 2>/dev/null") - if bwc then - luci.http.write("[") - - while true do - local ln = bwc:read("*l") - if not ln then break end - luci.http.write(ln) - end - - luci.http.write("]") - bwc:close() - end -end - -function action_connections() - local sys = require "luci.sys" - - luci.http.prepare_content("application/json") - - luci.http.write("{ connections: ") - luci.http.write_json(sys.net.conntrack()) - - local bwc = io.popen("luci-bwc -c 2>/dev/null") - if bwc then - luci.http.write(", statistics: [") - - while true do - local ln = bwc:read("*l") - if not ln then break end - luci.http.write(ln) - end - - luci.http.write("]") - bwc:close() - end - - luci.http.write(" }") -end - -function action_nameinfo(...) - local util = require "luci.util" - - luci.http.prepare_content("application/json") - luci.http.write_json(util.ubus("network.rrdns", "lookup", { - addrs = { ... }, - timeout = 5000, - limit = 1000 - }) or { }) -end diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua b/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua deleted file mode 100644 index 5478afa3e6..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua +++ /dev/null @@ -1,439 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.system", package.seeall) - -function index() - local fs = require "nixio.fs" - - entry({"admin", "system"}, alias("admin", "system", "system"), _("System"), 30).index = true - entry({"admin", "system", "system"}, cbi("admin_system/system"), _("System"), 1) - entry({"admin", "system", "clock_status"}, post_on({ set = true }, "action_clock_status")) - - entry({"admin", "system", "admin"}, cbi("admin_system/admin"), _("Administration"), 2) - - if fs.access("/bin/opkg") then - entry({"admin", "system", "packages"}, post_on({ exec = "1" }, "action_packages"), _("Software"), 10) - entry({"admin", "system", "packages", "ipkg"}, form("admin_system/ipkg")) - end - - entry({"admin", "system", "startup"}, form("admin_system/startup"), _("Startup"), 45) - entry({"admin", "system", "crontab"}, form("admin_system/crontab"), _("Scheduled Tasks"), 46) - - if fs.access("/sbin/block") and fs.access("/etc/config/fstab") then - entry({"admin", "system", "fstab"}, cbi("admin_system/fstab"), _("Mount Points"), 50) - entry({"admin", "system", "fstab", "mount"}, cbi("admin_system/fstab/mount"), nil).leaf = true - entry({"admin", "system", "fstab", "swap"}, cbi("admin_system/fstab/swap"), nil).leaf = true - end - - if fs.access("/sys/class/leds") then - entry({"admin", "system", "leds"}, cbi("admin_system/leds"), _("LED Configuration"), 60) - end - - entry({"admin", "system", "flashops"}, call("action_flashops"), _("Backup / Flash Firmware"), 70) - entry({"admin", "system", "flashops", "reset"}, post("action_reset")) - entry({"admin", "system", "flashops", "backup"}, post("action_backup")) - entry({"admin", "system", "flashops", "backupfiles"}, form("admin_system/backupfiles")) - - -- call() instead of post() due to upload handling! - entry({"admin", "system", "flashops", "restore"}, call("action_restore")) - entry({"admin", "system", "flashops", "sysupgrade"}, call("action_sysupgrade")) - - entry({"admin", "system", "reboot"}, template("admin_system/reboot"), _("Reboot"), 90) - entry({"admin", "system", "reboot", "call"}, post("action_reboot")) -end - -function action_clock_status() - local set = tonumber(luci.http.formvalue("set")) - if set ~= nil and set > 0 then - local date = os.date("*t", set) - if date then - luci.sys.call("date -s '%04d-%02d-%02d %02d:%02d:%02d'" %{ - date.year, date.month, date.day, date.hour, date.min, date.sec - }) - luci.sys.call("/etc/init.d/sysfixtime restart") - end - end - - luci.http.prepare_content("application/json") - luci.http.write_json({ timestring = os.date("%c") }) -end - -function action_packages() - local fs = require "nixio.fs" - local ipkg = require "luci.model.ipkg" - local submit = (luci.http.formvalue("exec") == "1") - local update, upgrade - local changes = false - local install = { } - local remove = { } - local stdout = { "" } - local stderr = { "" } - local out, err - - -- Display - local display = luci.http.formvalue("display") or "installed" - - -- Letter - local letter = string.byte(luci.http.formvalue("letter") or "A", 1) - letter = (letter == 35 or (letter >= 65 and letter <= 90)) and letter or 65 - - -- Search query - local query = luci.http.formvalue("query") - query = (query ~= '') and query or nil - - - -- Modifying actions - if submit then - -- Packets to be installed - local ninst = luci.http.formvalue("install") - local uinst = nil - - -- Install from URL - local url = luci.http.formvalue("url") - if url and url ~= '' then - uinst = url - end - - -- Do install - if ninst then - install[ninst], out, err = ipkg.install(ninst) - stdout[#stdout+1] = out - stderr[#stderr+1] = err - changes = true - end - - if uinst then - local pkg - for pkg in luci.util.imatch(uinst) do - install[uinst], out, err = ipkg.install(pkg) - stdout[#stdout+1] = out - stderr[#stderr+1] = err - changes = true - end - end - - -- Remove packets - local rem = luci.http.formvalue("remove") - if rem then - remove[rem], out, err = ipkg.remove(rem) - stdout[#stdout+1] = out - stderr[#stderr+1] = err - changes = true - end - - - -- Update all packets - update = luci.http.formvalue("update") - if update then - update, out, err = ipkg.update() - stdout[#stdout+1] = out - stderr[#stderr+1] = err - end - - - -- Upgrade all packets - upgrade = luci.http.formvalue("upgrade") - if upgrade then - upgrade, out, err = ipkg.upgrade() - stdout[#stdout+1] = out - stderr[#stderr+1] = err - end - end - - - -- List state - local no_lists = true - local old_lists = false - if fs.access("/var/opkg-lists/") then - local list - for list in fs.dir("/var/opkg-lists/") do - no_lists = false - if (fs.stat("/var/opkg-lists/"..list, "mtime") or 0) < (os.time() - (24 * 60 * 60)) then - old_lists = true - break - end - end - end - - - luci.template.render("admin_system/packages", { - display = display, - letter = letter, - query = query, - install = install, - remove = remove, - update = update, - upgrade = upgrade, - no_lists = no_lists, - old_lists = old_lists, - stdout = table.concat(stdout, ""), - stderr = table.concat(stderr, "") - }) - - -- Remove index cache - if changes then - fs.unlink("/tmp/luci-indexcache") - end -end - -local function image_supported(image) - return (os.execute("sysupgrade -T %q >/dev/null" % image) == 0) -end - -local function image_checksum(image) - return (luci.sys.exec("md5sum %q" % image):match("^([^%s]+)")) -end - -local function image_sha256_checksum(image) - return (luci.sys.exec("sha256sum %q" % image):match("^([^%s]+)")) -end - -local function supports_sysupgrade() - return nixio.fs.access("/lib/upgrade/platform.sh") -end - -local function supports_reset() - return (os.execute([[grep -sqE '"rootfs_data"|"ubi"' /proc/mtd]]) == 0) -end - -local function storage_size() - local size = 0 - if nixio.fs.access("/proc/mtd") then - for l in io.lines("/proc/mtd") do - local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"') - if n == "linux" or n == "firmware" then - size = tonumber(s, 16) - break - end - end - elseif nixio.fs.access("/proc/partitions") then - for l in io.lines("/proc/partitions") do - local x, y, b, n = l:match('^%s*(%d+)%s+(%d+)%s+([^%s]+)%s+([^%s]+)') - if b and n and not n:match('[0-9]') then - size = tonumber(b) * 1024 - break - end - end - end - return size -end - - -function action_flashops() - -- - -- Overview - -- - luci.template.render("admin_system/flashops", { - reset_avail = supports_reset(), - upgrade_avail = supports_sysupgrade() - }) -end - -function action_sysupgrade() - local fs = require "nixio.fs" - local http = require "luci.http" - local image_tmp = "/tmp/firmware.img" - - local fp - http.setfilehandler( - function(meta, chunk, eof) - if not fp and meta and meta.name == "image" then - fp = io.open(image_tmp, "w") - end - if fp and chunk then - fp:write(chunk) - end - if fp and eof then - fp:close() - end - end - ) - - if not luci.dispatcher.test_post_security() then - fs.unlink(image_tmp) - return - end - - -- - -- Cancel firmware flash - -- - if http.formvalue("cancel") then - fs.unlink(image_tmp) - http.redirect(luci.dispatcher.build_url('admin/system/flashops')) - return - end - - -- - -- Initiate firmware flash - -- - local step = tonumber(http.formvalue("step") or 1) - if step == 1 then - if image_supported(image_tmp) then - luci.template.render("admin_system/upgrade", { - checksum = image_checksum(image_tmp), - sha256ch = image_sha256_checksum(image_tmp), - storage = storage_size(), - size = (fs.stat(image_tmp, "size") or 0), - keep = (not not http.formvalue("keep")) - }) - else - fs.unlink(image_tmp) - luci.template.render("admin_system/flashops", { - reset_avail = supports_reset(), - upgrade_avail = supports_sysupgrade(), - image_invalid = true - }) - end - -- - -- Start sysupgrade flash - -- - elseif step == 2 then - local keep = (http.formvalue("keep") == "1") and "" or "-n" - luci.template.render("admin_system/applyreboot", { - title = luci.i18n.translate("Flashing..."), - msg = luci.i18n.translate("The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), - addr = (#keep > 0) and "192.168.1.1" or nil - }) - fork_exec("sleep 1; killall dropbear uhttpd; sleep 1; /sbin/sysupgrade %s %q" %{ keep, image_tmp }) - end -end - -function action_backup() - local reader = ltn12_popen("sysupgrade --create-backup - 2>/dev/null") - - luci.http.header( - 'Content-Disposition', 'attachment; filename="backup-%s-%s.tar.gz"' %{ - luci.sys.hostname(), - os.date("%Y-%m-%d") - }) - - luci.http.prepare_content("application/x-targz") - luci.ltn12.pump.all(reader, luci.http.write) -end - -function action_restore() - local fs = require "nixio.fs" - local http = require "luci.http" - local archive_tmp = "/tmp/restore.tar.gz" - - local fp - http.setfilehandler( - function(meta, chunk, eof) - if not fp and meta and meta.name == "archive" then - fp = io.open(archive_tmp, "w") - end - if fp and chunk then - fp:write(chunk) - end - if fp and eof then - fp:close() - end - end - ) - - if not luci.dispatcher.test_post_security() then - fs.unlink(archive_tmp) - return - end - - local upload = http.formvalue("archive") - if upload and #upload > 0 then - luci.template.render("admin_system/applyreboot") - os.execute("tar -C / -xzf %q >/dev/null 2>&1" % archive_tmp) - luci.sys.reboot() - return - end - - http.redirect(luci.dispatcher.build_url('admin/system/flashops')) -end - -function action_reset() - if supports_reset() then - luci.template.render("admin_system/applyreboot", { - title = luci.i18n.translate("Erasing..."), - msg = luci.i18n.translate("The system is erasing the configuration partition now and will reboot itself when finished."), - addr = "192.168.1.1" - }) - - fork_exec("sleep 1; killall dropbear uhttpd; sleep 1; jffs2reset -y && reboot") - return - end - - http.redirect(luci.dispatcher.build_url('admin/system/flashops')) -end - -function action_passwd() - local p1 = luci.http.formvalue("pwd1") - local p2 = luci.http.formvalue("pwd2") - local stat = nil - - if p1 or p2 then - if p1 == p2 then - stat = luci.sys.user.setpasswd("root", p1) - else - stat = 10 - end - end - - luci.template.render("admin_system/passwd", {stat=stat}) -end - -function action_reboot() - luci.sys.reboot() -end - -function fork_exec(command) - local pid = nixio.fork() - if pid > 0 then - return - elseif pid == 0 then - -- change to root dir - nixio.chdir("/") - - -- patch stdin, out, err to /dev/null - local null = nixio.open("/dev/null", "w+") - if null then - nixio.dup(null, nixio.stderr) - nixio.dup(null, nixio.stdout) - nixio.dup(null, nixio.stdin) - if null:fileno() > 2 then - null:close() - end - end - - -- replace with target command - nixio.exec("/bin/sh", "-c", command) - end -end - -function ltn12_popen(command) - - local fdi, fdo = nixio.pipe() - local pid = nixio.fork() - - if pid > 0 then - fdo:close() - local close - return function() - local buffer = fdi:read(2048) - local wpid, stat = nixio.waitpid(pid, "nohang") - if not close and wpid and stat == "exited" then - close = true - end - - if buffer and #buffer > 0 then - return buffer - elseif close then - fdi:close() - return nil - end - end - elseif pid == 0 then - nixio.dup(fdo, nixio.stdout) - fdi:close() - fdo:close() - nixio.exec("/bin/sh", "-c", command) - end -end diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua b/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua deleted file mode 100644 index 9c33d9c18b..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua +++ /dev/null @@ -1,64 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.uci", package.seeall) - -function index() - local redir = luci.http.formvalue("redir", true) or - luci.dispatcher.build_url(unpack(luci.dispatcher.context.request)) - - entry({"admin", "uci"}, nil, _("Configuration")) - entry({"admin", "uci", "changes"}, call("action_changes"), _("Changes"), 40).query = {redir=redir} - entry({"admin", "uci", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir} - entry({"admin", "uci", "apply"}, post("action_apply"), _("Apply"), 20).query = {redir=redir} - entry({"admin", "uci", "saveapply"}, post("action_apply"), _("Save & Apply"), 10).query = {redir=redir} -end - -function action_changes() - local uci = luci.model.uci.cursor() - local changes = uci:changes() - - luci.template.render("admin_uci/changes", { - changes = next(changes) and changes - }) -end - -function action_apply() - local path = luci.dispatcher.context.path - local uci = luci.model.uci.cursor() - local changes = uci:changes() - local reload = {} - - -- Collect files to be applied and commit changes - for r, tbl in pairs(changes) do - table.insert(reload, r) - if path[#path] ~= "apply" then - uci:load(r) - uci:commit(r) - uci:unload(r) - end - end - - luci.template.render("admin_uci/apply", { - changes = next(changes) and changes, - configs = reload - }) -end - - -function action_revert() - local uci = luci.model.uci.cursor() - local changes = uci:changes() - - -- Collect files to be reverted - for r, tbl in pairs(changes) do - uci:load(r) - uci:revert(r) - uci:unload(r) - end - - luci.template.render("admin_uci/revert", { - changes = next(changes) and changes - }) -end diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua deleted file mode 100644 index 0c01ceffca..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua +++ /dev/null @@ -1,331 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local ipc = require "luci.ip" -local o -require "luci.util" - -m = Map("dhcp", translate("DHCP and DNS"), - translate("Dnsmasq is a combined DHCP-Server and DNS-" .. - "Forwarder for NAT " .. - "firewalls")) - -s = m:section(TypedSection, "dnsmasq", translate("Server Settings")) -s.anonymous = true -s.addremove = false - -s:tab("general", translate("General Settings")) -s:tab("files", translate("Resolv and Hosts Files")) -s:tab("tftp", translate("TFTP Settings")) -s:tab("advanced", translate("Advanced Settings")) - -s:taboption("general", Flag, "domainneeded", - translate("Domain required"), - translate("Don't forward DNS-Requests without " .. - "DNS-Name")) - -s:taboption("general", Flag, "authoritative", - translate("Authoritative"), - translate("This is the only DHCP in the local network")) - - -s:taboption("files", Flag, "readethers", - translate("Use /etc/ethers"), - translate("Read /etc/ethers to configure the DHCP-Server")) - -s:taboption("files", Value, "leasefile", - translate("Leasefile"), - translate("file where given DHCP-leases will be stored")) - -s:taboption("files", Flag, "noresolv", - translate("Ignore resolve file")).optional = true - -rf = s:taboption("files", Value, "resolvfile", - translate("Resolve file"), - translate("local DNS file")) - -rf:depends("noresolv", "") -rf.optional = true - - -s:taboption("files", Flag, "nohosts", - translate("Ignore /etc/hosts")).optional = true - -s:taboption("files", DynamicList, "addnhosts", - translate("Additional Hosts files")).optional = true - -qu = s:taboption("advanced", Flag, "quietdhcp", - translate("Suppress logging"), - translate("Suppress logging of the routine operation of these protocols")) -qu.optional = true - -se = s:taboption("advanced", Flag, "sequential_ip", - translate("Allocate IP sequentially"), - translate("Allocate IP addresses sequentially, starting from the lowest available address")) -se.optional = true - -bp = s:taboption("advanced", Flag, "boguspriv", - translate("Filter private"), - translate("Do not forward reverse lookups for local networks")) -bp.default = bp.enabled - -s:taboption("advanced", Flag, "filterwin2k", - translate("Filter useless"), - translate("Do not forward requests that cannot be answered by public name servers")) - - -s:taboption("advanced", Flag, "localise_queries", - translate("Localise queries"), - translate("Localise hostname depending on the requesting subnet if multiple IPs are available")) - -local have_dnssec_support = luci.util.checklib("/usr/sbin/dnsmasq", "libhogweed.so") - -if have_dnssec_support then - o = s:taboption("advanced", Flag, "dnssec", - translate("DNSSEC")) - o.optional = true - - o = s:taboption("advanced", Flag, "dnsseccheckunsigned", - translate("DNSSEC check unsigned"), - translate("Requires upstream supports DNSSEC; verify unsigned domain responses really come from unsigned domains")) - o.optional = true -end - -s:taboption("general", Value, "local", - translate("Local server"), - translate("Local domain specification. Names matching this domain are never forwarded and are resolved from DHCP or hosts files only")) - -s:taboption("general", Value, "domain", - translate("Local domain"), - translate("Local domain suffix appended to DHCP names and hosts file entries")) - -s:taboption("advanced", Flag, "expandhosts", - translate("Expand hosts"), - translate("Add local domain suffix to names served from hosts files")) - -s:taboption("advanced", Flag, "nonegcache", - translate("No negative cache"), - translate("Do not cache negative replies, e.g. for not existing domains")) - -s:taboption("advanced", Value, "serversfile", - translate("Additional servers file"), - translate("This file may contain lines like 'server=/domain/1.2.3.4' or 'server=1.2.3.4' for".. - "domain-specific or full upstream DNS servers.")) - -s:taboption("advanced", Flag, "strictorder", - translate("Strict order"), - translate("DNS servers will be queried in the " .. - "order of the resolvfile")).optional = true - - -bn = s:taboption("advanced", DynamicList, "bogusnxdomain", translate("Bogus NX Domain Override"), - translate("List of hosts that supply bogus NX domain results")) - -bn.optional = true -bn.placeholder = "67.215.65.132" - - -s:taboption("general", Flag, "logqueries", - translate("Log queries"), - translate("Write received DNS requests to syslog")).optional = true - -df = s:taboption("general", DynamicList, "server", translate("DNS forwardings"), - translate("List of DNS " .. - "servers to forward requests to")) - -df.optional = true -df.placeholder = "/example.org/10.1.2.3" - - -rp = s:taboption("general", Flag, "rebind_protection", - translate("Rebind protection"), - translate("Discard upstream RFC1918 responses")) - -rp.rmempty = false - - -rl = s:taboption("general", Flag, "rebind_localhost", - translate("Allow localhost"), - translate("Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services")) - -rl:depends("rebind_protection", "1") - - -rd = s:taboption("general", DynamicList, "rebind_domain", - translate("Domain whitelist"), - translate("List of domains to allow RFC1918 responses for")) -rd.optional = true - -rd:depends("rebind_protection", "1") -rd.datatype = "host(1)" -rd.placeholder = "ihost.netflix.com" - - -pt = s:taboption("advanced", Value, "port", - translate("DNS server port"), - translate("Listening port for inbound DNS queries")) - -pt.optional = true -pt.datatype = "port" -pt.placeholder = 53 - - -qp = s:taboption("advanced", Value, "queryport", - translate("DNS query port"), - translate("Fixed source port for outbound DNS queries")) - -qp.optional = true -qp.datatype = "port" -qp.placeholder = translate("any") - - -lm = s:taboption("advanced", Value, "dhcpleasemax", - translate("Max. DHCP leases"), - translate("Maximum allowed number of active DHCP leases")) - -lm.optional = true -lm.datatype = "uinteger" -lm.placeholder = translate("unlimited") - - -em = s:taboption("advanced", Value, "ednspacket_max", - translate("Max. EDNS0 packet size"), - translate("Maximum allowed size of EDNS.0 UDP packets")) - -em.optional = true -em.datatype = "uinteger" -em.placeholder = 1280 - - -cq = s:taboption("advanced", Value, "dnsforwardmax", - translate("Max. concurrent queries"), - translate("Maximum allowed number of concurrent DNS queries")) - -cq.optional = true -cq.datatype = "uinteger" -cq.placeholder = 150 - - -s:taboption("tftp", Flag, "enable_tftp", - translate("Enable TFTP server")).optional = true - -tr = s:taboption("tftp", Value, "tftp_root", - translate("TFTP server root"), - translate("Root directory for files served via TFTP")) - -tr.optional = true -tr:depends("enable_tftp", "1") -tr.placeholder = "/" - - -db = s:taboption("tftp", Value, "dhcp_boot", - translate("Network boot image"), - translate("Filename of the boot image advertised to clients")) - -db.optional = true -db:depends("enable_tftp", "1") -db.placeholder = "pxelinux.0" - -o = s:taboption("general", Flag, "localservice", - translate("Local Service Only"), - translate("Limit DNS service to subnets interfaces on which we are serving DNS.")) -o.optional = false -o.rmempty = false - -o = s:taboption("general", Flag, "nonwildcard", - translate("Non-wildcard"), - translate("Bind only to specific interfaces rather than wildcard address.")) -o.optional = false -o.rmempty = false - -o = s:taboption("general", DynamicList, "interface", - translate("Listen Interfaces"), - translate("Limit listening to these interfaces, and loopback.")) -o.optional = true -o:depends("nonwildcard", true) - -o = s:taboption("general", DynamicList, "notinterface", - translate("Exclude interfaces"), - translate("Prevent listening on these interfaces.")) -o.optional = true -o:depends("nonwildcard", true) - -m:section(SimpleSection).template = "admin_network/lease_status" - -s = m:section(TypedSection, "host", translate("Static Leases"), - translate("Static leases are used to assign fixed IP addresses and symbolic hostnames to " .. - "DHCP clients. They are also required for non-dynamic interface configurations where " .. - "only hosts with a corresponding lease are served.") .. "
    " .. - translate("Use the Add Button to add a new lease entry. The MAC-Address " .. - "indentifies the host, the IPv4-Address specifies to the fixed address to " .. - "use and the Hostname is assigned as symbolic name to the requesting host. " .. - "The optional Lease time can be used to set non-standard host-specific " .. - "lease time, e.g. 12h, 3d or infinite.")) - -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -name = s:option(Value, "name", translate("Hostname")) -name.datatype = "hostname" -name.rmempty = true - -function name.write(self, section, value) - Value.write(self, section, value) - m:set(section, "dns", "1") -end - -function name.remove(self, section) - Value.remove(self, section) - m:del(section, "dns") -end - -mac = s:option(Value, "mac", translate("MAC-Address")) -mac.datatype = "list(macaddr)" -mac.rmempty = true - -ip = s:option(Value, "ip", translate("IPv4-Address")) -ip.datatype = "or(ip4addr,'ignore')" - -time = s:option(Value, "leasetime", translate("Lease time")) -time.rmempty = true - -duid = s:option(Value, "duid", translate("DUID")) -duid.datatype = "and(rangelength(28,36),hexstring)" -fp = io.open("/var/hosts/odhcpd") -if fp then - for line in fp:lines() do - local net_val, duid_val = string.match(line, "# (%S+)%s+(%S+)") - if duid_val then - duid:value(duid_val, duid_val) - end - end - fp:close() -end - -hostid = s:option(Value, "hostid", translate("IPv6-Suffix (hex)")) - -ipc.neighbors({ family = 4 }, function(n) - if n.mac and n.dest then - ip:value(n.dest:string()) - mac:value(n.mac, "%s (%s)" %{ n.mac, n.dest:string() }) - end -end) - -function ip.validate(self, value, section) - local m = mac:formvalue(section) or "" - local n = name:formvalue(section) or "" - if value and #n == 0 and #m == 0 then - return nil, translate("One of hostname or mac address must be specified!") - end - return Value.validate(self, value, section) -end - - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua deleted file mode 100644 index fafacf35c5..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua +++ /dev/null @@ -1,28 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ipc = require "luci.ip" - -m = Map("dhcp", translate("Hostnames")) - -s = m:section(TypedSection, "domain", translate("Host entries")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -hn = s:option(Value, "name", translate("Hostname")) -hn.datatype = "hostname" -hn.rmempty = true - -ip = s:option(Value, "ip", translate("IP address")) -ip.datatype = "ipaddr" -ip.rmempty = true - -ipc.neighbors({ }, function(n) - if n.mac and n.dest and not n.dest:is6linklocal() then - ip:value(n.dest:string(), "%s (%s)" %{ n.dest:string(), n.mac }) - end -end) - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/iface_add.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/iface_add.lua deleted file mode 100644 index e48e3b4bdf..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/iface_add.lua +++ /dev/null @@ -1,97 +0,0 @@ --- Copyright 2009-2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local nw = require "luci.model.network".init() -local fw = require "luci.model.firewall".init() -local utl = require "luci.util" -local uci = require "luci.model.uci".cursor() - -m = SimpleForm("network", translate("Create Interface")) -m.redirect = luci.dispatcher.build_url("admin/network/network") -m.reset = false - -newnet = m:field(Value, "_netname", translate("Name of the new interface"), - translate("The allowed characters are: A-Z, a-z, " .. - "0-9 and _" - )) - -newnet:depends("_attach", "") -newnet.default = arg[1] and "net_" .. arg[1]:gsub("[^%w_]+", "_") -newnet.datatype = "and(uciname,maxlength(15))" - -advice = m:field(DummyValue, "d1", translate("Note: interface name length"), - translate("Maximum length of the name is 15 characters including " .. - "the automatic protocol/bridge prefix (br-, 6in4-, pppoe- etc.)" - )) - -newproto = m:field(ListValue, "_netproto", translate("Protocol of the new interface")) - -netbridge = m:field(Flag, "_bridge", translate("Create a bridge over multiple interfaces")) - - -sifname = m:field(Value, "_ifname", translate("Cover the following interface")) - -sifname.widget = "radio" -sifname.template = "cbi/network_ifacelist" -sifname.nobridges = true - - -mifname = m:field(Value, "_ifnames", translate("Cover the following interfaces")) - -mifname.widget = "checkbox" -mifname.template = "cbi/network_ifacelist" -mifname.nobridges = true - - -local _, p -for _, p in ipairs(nw:get_protocols()) do - if p:is_installed() then - newproto:value(p:proto(), p:get_i18n()) - if not p:is_virtual() then netbridge:depends("_netproto", p:proto()) end - if not p:is_floating() then - sifname:depends({ _bridge = "", _netproto = p:proto()}) - mifname:depends({ _bridge = "1", _netproto = p:proto()}) - end - end -end - -function newproto.validate(self, value, section) - local name = newnet:formvalue(section) - if not name or #name == 0 then - newnet:add_error(section, translate("No network name specified")) - elseif m:get(name) then - newnet:add_error(section, translate("The given network name is not unique")) - end - - local proto = nw:get_protocol(value) - if proto and not proto:is_floating() then - local br = (netbridge:formvalue(section) == "1") - local ifn = br and mifname:formvalue(section) or sifname:formvalue(section) - for ifn in utl.imatch(ifn) do - return value - end - return nil, translate("The selected protocol needs a device assigned") - end - return value -end - -function newproto.write(self, section, value) - local name = newnet:formvalue(section) - if name and #name > 0 then - local br = (netbridge:formvalue(section) == "1") and "bridge" or nil - local net = nw:add_network(name, { proto = value, type = br }) - if net then - local ifn - for ifn in utl.imatch( - br and mifname:formvalue(section) or sifname:formvalue(section) - ) do - net:add_interface(ifn) - end - nw:save("network") - nw:save("wireless") - end - luci.http.redirect(luci.dispatcher.build_url("admin/network/network", name)) - end -end - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua deleted file mode 100644 index 4fc71cefab..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua +++ /dev/null @@ -1,524 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local ut = require "luci.util" -local pt = require "luci.tools.proto" -local nw = require "luci.model.network" -local fw = require "luci.model.firewall" - -arg[1] = arg[1] or "" - -local has_dnsmasq = fs.access("/etc/config/dhcp") -local has_firewall = fs.access("/etc/config/firewall") - -m = Map("network", translate("Interfaces") .. " - " .. arg[1]:upper(), translate("On this page you can configure the network interfaces. You can bridge several interfaces by ticking the \"bridge interfaces\" field and enter the names of several network interfaces separated by spaces. You can also use VLAN notation INTERFACE.VLANNR (e.g.: eth0.1).")) -m.redirect = luci.dispatcher.build_url("admin", "network", "network") -m:chain("wireless") - -if has_firewall then - m:chain("firewall") -end - -nw.init(m.uci) -fw.init(m.uci) - - -local net = nw:get_network(arg[1]) - -local function backup_ifnames(is_bridge) - if not net:is_floating() and not m:get(net:name(), "_orig_ifname") then - local ifcs = net:get_interfaces() or { net:get_interface() } - if ifcs then - local _, ifn - local ifns = { } - for _, ifn in ipairs(ifcs) do - ifns[#ifns+1] = ifn:name() - end - if #ifns > 0 then - m:set(net:name(), "_orig_ifname", table.concat(ifns, " ")) - m:set(net:name(), "_orig_bridge", tostring(net:is_bridge())) - end - end - end -end - - --- redirect to overview page if network does not exist anymore (e.g. after a revert) -if not net then - luci.http.redirect(luci.dispatcher.build_url("admin/network/network")) - return -end - --- protocol switch was requested, rebuild interface config and reload page -if m:formvalue("cbid.network.%s._switch" % net:name()) then - -- get new protocol - local ptype = m:formvalue("cbid.network.%s.proto" % net:name()) or "-" - local proto = nw:get_protocol(ptype, net:name()) - if proto then - -- backup default - backup_ifnames() - - -- if current proto is not floating and target proto is not floating, - -- then attempt to retain the ifnames - --error(net:proto() .. " > " .. proto:proto()) - if not net:is_floating() and not proto:is_floating() then - -- if old proto is a bridge and new proto not, then clip the - -- interface list to the first ifname only - if net:is_bridge() and proto:is_virtual() then - local _, ifn - local first = true - for _, ifn in ipairs(net:get_interfaces() or { net:get_interface() }) do - if first then - first = false - else - net:del_interface(ifn) - end - end - m:del(net:name(), "type") - end - - -- if the current proto is floating, the target proto not floating, - -- then attempt to restore ifnames from backup - elseif net:is_floating() and not proto:is_floating() then - -- if we have backup data, then re-add all orphaned interfaces - -- from it and restore the bridge choice - local br = (m:get(net:name(), "_orig_bridge") == "true") - local ifn - local ifns = { } - for ifn in ut.imatch(m:get(net:name(), "_orig_ifname")) do - ifn = nw:get_interface(ifn) - if ifn and not ifn:get_network() then - proto:add_interface(ifn) - if not br then - break - end - end - end - if br then - m:set(net:name(), "type", "bridge") - end - - -- in all other cases clear the ifnames - else - local _, ifc - for _, ifc in ipairs(net:get_interfaces() or { net:get_interface() }) do - net:del_interface(ifc) - end - m:del(net:name(), "type") - end - - -- clear options - local k, v - for k, v in pairs(m:get(net:name())) do - if k:sub(1,1) ~= "." and - k ~= "type" and - k ~= "ifname" and - k ~= "_orig_ifname" and - k ~= "_orig_bridge" - then - m:del(net:name(), k) - end - end - - -- set proto - m:set(net:name(), "proto", proto:proto()) - m.uci:save("network") - m.uci:save("wireless") - - -- reload page - luci.http.redirect(luci.dispatcher.build_url("admin/network/network", arg[1])) - return - end -end - --- dhcp setup was requested, create section and reload page -if m:formvalue("cbid.dhcp._enable._enable") then - m.uci:section("dhcp", "dhcp", arg[1], { - interface = arg[1], - start = "100", - limit = "150", - leasetime = "12h" - }) - - m.uci:save("dhcp") - luci.http.redirect(luci.dispatcher.build_url("admin/network/network", arg[1])) - return -end - -local ifc = net:get_interface() - -s = m:section(NamedSection, arg[1], "interface", translate("Common Configuration")) -s.addremove = false - -s:tab("general", translate("General Setup")) -s:tab("advanced", translate("Advanced Settings")) -s:tab("physical", translate("Physical Settings")) - -if has_firewall then - s:tab("firewall", translate("Firewall Settings")) -end - - -st = s:taboption("general", DummyValue, "__status", translate("Status")) - -local function set_status() - -- if current network is empty, print a warning - if not net:is_floating() and net:is_empty() then - st.template = "cbi/dvalue" - st.network = nil - st.value = translate("There is no device assigned yet, please attach a network device in the \"Physical Settings\" tab") - else - st.template = "admin_network/iface_status" - st.network = arg[1] - st.value = nil - end -end - -m.on_init = set_status -m.on_after_save = set_status - - -p = s:taboption("general", ListValue, "proto", translate("Protocol")) -p.default = net:proto() - - -if not net:is_installed() then - p_install = s:taboption("general", Button, "_install") - p_install.title = translate("Protocol support is not installed") - p_install.inputtitle = translate("Install package %q" % net:opkg_package()) - p_install.inputstyle = "apply" - p_install:depends("proto", net:proto()) - - function p_install.write() - return luci.http.redirect( - luci.dispatcher.build_url("admin/system/packages") .. - "?submit=1&install=%s" % net:opkg_package() - ) - end -end - - -p_switch = s:taboption("general", Button, "_switch") -p_switch.title = translate("Really switch protocol?") -p_switch.inputtitle = translate("Switch protocol") -p_switch.inputstyle = "apply" - -local _, pr -for _, pr in ipairs(nw:get_protocols()) do - p:value(pr:proto(), pr:get_i18n()) - if pr:proto() ~= net:proto() then - p_switch:depends("proto", pr:proto()) - end -end - - -auto = s:taboption("advanced", Flag, "auto", translate("Bring up on boot")) -auto.default = (net:proto() == "none") and auto.disabled or auto.enabled - -delegate = s:taboption("advanced", Flag, "delegate", translate("Use builtin IPv6-management")) -delegate.default = delegate.enabled - -force_link = s:taboption("advanced", Flag, "force_link", - translate("Force link"), - translate("Set interface properties regardless of the link carrier (If set, carrier sense events do not invoke hotplug handlers).")) - -force_link.default = (net:proto() == "static") and force_link.enabled or force_link.disabled - - -if not net:is_virtual() then - br = s:taboption("physical", Flag, "type", translate("Bridge interfaces"), translate("creates a bridge over specified interface(s)")) - br.enabled = "bridge" - br.rmempty = true - br:depends("proto", "static") - br:depends("proto", "dhcp") - br:depends("proto", "none") - - stp = s:taboption("physical", Flag, "stp", translate("Enable STP"), - translate("Enables the Spanning Tree Protocol on this bridge")) - stp:depends("type", "bridge") - stp.rmempty = true -end - - -if not net:is_floating() then - ifname_single = s:taboption("physical", Value, "ifname_single", translate("Interface")) - ifname_single.template = "cbi/network_ifacelist" - ifname_single.widget = "radio" - ifname_single.nobridges = true - ifname_single.rmempty = false - ifname_single.network = arg[1] - ifname_single:depends("type", "") - - function ifname_single.cfgvalue(self, s) - -- let the template figure out the related ifaces through the network model - return nil - end - - function ifname_single.write(self, s, val) - local i - local new_ifs = { } - local old_ifs = { } - - for _, i in ipairs(net:get_interfaces() or { net:get_interface() }) do - old_ifs[#old_ifs+1] = i:name() - end - - for i in ut.imatch(val) do - new_ifs[#new_ifs+1] = i - - -- if this is not a bridge, only assign first interface - if self.option == "ifname_single" then - break - end - end - - table.sort(old_ifs) - table.sort(new_ifs) - - for i = 1, math.max(#old_ifs, #new_ifs) do - if old_ifs[i] ~= new_ifs[i] then - backup_ifnames() - for i = 1, #old_ifs do - net:del_interface(old_ifs[i]) - end - for i = 1, #new_ifs do - net:add_interface(new_ifs[i]) - end - break - end - end - end -end - - -if not net:is_virtual() then - ifname_multi = s:taboption("physical", Value, "ifname_multi", translate("Interface")) - ifname_multi.template = "cbi/network_ifacelist" - ifname_multi.nobridges = true - ifname_multi.rmempty = false - ifname_multi.network = arg[1] - ifname_multi.widget = "checkbox" - ifname_multi:depends("type", "bridge") - ifname_multi.cfgvalue = ifname_single.cfgvalue - ifname_multi.write = ifname_single.write -end - - -if has_firewall then - fwzone = s:taboption("firewall", Value, "_fwzone", - translate("Create / Assign firewall-zone"), - translate("Choose the firewall zone you want to assign to this interface. Select unspecified to remove the interface from the associated zone or fill out the create field to define a new zone and attach the interface to it.")) - - fwzone.template = "cbi/firewall_zonelist" - fwzone.network = arg[1] - fwzone.rmempty = false - - function fwzone.cfgvalue(self, section) - self.iface = section - local z = fw:get_zone_by_network(section) - return z and z:name() - end - - function fwzone.write(self, section, value) - local zone = fw:get_zone(value) - - if not zone and value == '-' then - value = m:formvalue(self:cbid(section) .. ".newzone") - if value and #value > 0 then - zone = fw:add_zone(value) - else - fw:del_network(section) - end - end - - if zone then - fw:del_network(section) - zone:add_network(section) - end - end -end - - -function p.write() end -function p.remove() end -function p.validate(self, value, section) - if value == net:proto() then - if not net:is_floating() and net:is_empty() then - local ifn = ((br and (br:formvalue(section) == "bridge")) - and ifname_multi:formvalue(section) - or ifname_single:formvalue(section)) - - for ifn in ut.imatch(ifn) do - return value - end - return nil, translate("The selected protocol needs a device assigned") - end - end - return value -end - - -local form, ferr = loadfile( - ut.libpath() .. "/model/cbi/admin_network/proto_%s.lua" % net:proto() -) - -if not form then - s:taboption("general", DummyValue, "_error", - translate("Missing protocol extension for proto %q" % net:proto()) - ).value = ferr -else - setfenv(form, getfenv(1))(m, s, net) -end - - -local _, field -for _, field in ipairs(s.children) do - if field ~= st and field ~= p and field ~= p_install and field ~= p_switch then - if next(field.deps) then - local _, dep - for _, dep in ipairs(field.deps) do - dep.proto = net:proto() - end - else - field:depends("proto", net:proto()) - end - end -end - - --- --- Display DNS settings if dnsmasq is available --- - -if has_dnsmasq and net:proto() == "static" then - m2 = Map("dhcp", "", "") - - local has_section = false - - m2.uci:foreach("dhcp", "dhcp", function(s) - if s.interface == arg[1] then - has_section = true - return false - end - end) - - if not has_section and has_dnsmasq then - - s = m2:section(TypedSection, "dhcp", translate("DHCP Server")) - s.anonymous = true - s.cfgsections = function() return { "_enable" } end - - x = s:option(Button, "_enable") - x.title = translate("No DHCP Server configured for this interface") - x.inputtitle = translate("Setup DHCP Server") - x.inputstyle = "apply" - - elseif has_section then - - s = m2:section(TypedSection, "dhcp", translate("DHCP Server")) - s.addremove = false - s.anonymous = true - s:tab("general", translate("General Setup")) - s:tab("advanced", translate("Advanced Settings")) - s:tab("ipv6", translate("IPv6 Settings")) - - function s.filter(self, section) - return m2.uci:get("dhcp", section, "interface") == arg[1] - end - - local ignore = s:taboption("general", Flag, "ignore", - translate("Ignore interface"), - translate("Disable DHCP for " .. - "this interface.")) - - local start = s:taboption("general", Value, "start", translate("Start"), - translate("Lowest leased address as offset from the network address.")) - start.optional = true - start.datatype = "or(uinteger,ip4addr)" - start.default = "100" - - local limit = s:taboption("general", Value, "limit", translate("Limit"), - translate("Maximum number of leased addresses.")) - limit.optional = true - limit.datatype = "uinteger" - limit.default = "150" - - local ltime = s:taboption("general", Value, "leasetime", translate("Lease time"), - translate("Expiry time of leased addresses, minimum is 2 minutes (2m).")) - ltime.rmempty = true - ltime.default = "12h" - - local dd = s:taboption("advanced", Flag, "dynamicdhcp", - translate("Dynamic DHCP"), - translate("Dynamically allocate DHCP addresses for clients. If disabled, only " .. - "clients having static leases will be served.")) - dd.default = dd.enabled - - s:taboption("advanced", Flag, "force", translate("Force"), - translate("Force DHCP on this network even if another server is detected.")) - - -- XXX: is this actually useful? - --s:taboption("advanced", Value, "name", translate("Name"), - -- translate("Define a name for this network.")) - - mask = s:taboption("advanced", Value, "netmask", - translate("IPv4-Netmask"), - translate("Override the netmask sent to clients. Normally it is calculated " .. - "from the subnet that is served.")) - - mask.optional = true - mask.datatype = "ip4addr" - - s:taboption("advanced", DynamicList, "dhcp_option", translate("DHCP-Options"), - translate("Define additional DHCP options, for example \"6,192.168.2.1," .. - "192.168.2.2\" which advertises different DNS servers to clients.")) - - for i, n in ipairs(s.children) do - if n ~= ignore then - n:depends("ignore", "") - end - end - - o = s:taboption("ipv6", ListValue, "ra", translate("Router Advertisement-Service")) - o:value("", translate("disabled")) - o:value("server", translate("server mode")) - o:value("relay", translate("relay mode")) - o:value("hybrid", translate("hybrid mode")) - - o = s:taboption("ipv6", ListValue, "dhcpv6", translate("DHCPv6-Service")) - o:value("", translate("disabled")) - o:value("server", translate("server mode")) - o:value("relay", translate("relay mode")) - o:value("hybrid", translate("hybrid mode")) - - o = s:taboption("ipv6", ListValue, "ndp", translate("NDP-Proxy")) - o:value("", translate("disabled")) - o:value("relay", translate("relay mode")) - o:value("hybrid", translate("hybrid mode")) - - o = s:taboption("ipv6", ListValue, "ra_management", translate("DHCPv6-Mode"), - translate("Default is stateless + stateful")) - o:value("0", translate("stateless")) - o:value("1", translate("stateless + stateful")) - o:value("2", translate("stateful-only")) - o:depends("dhcpv6", "server") - o:depends("dhcpv6", "hybrid") - o.default = "1" - - o = s:taboption("ipv6", Flag, "ra_default", translate("Always announce default router"), - translate("Announce as default router even if no public prefix is available.")) - o:depends("ra", "server") - o:depends("ra", "hybrid") - - s:taboption("ipv6", DynamicList, "dns", translate("Announced DNS servers")) - s:taboption("ipv6", DynamicList, "domain", translate("Announced DNS domains")) - - else - m2 = nil - end -end - - -return m, m2 diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua deleted file mode 100644 index 83fdaadcbb..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua +++ /dev/null @@ -1,130 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local json = require "luci.jsonc" - -m = Map("network", translate("Interfaces")) -m.pageaction = false -m:section(SimpleSection).template = "admin_network/iface_overview" - -if fs.access("/etc/init.d/dsl_control") then - local ok, boarddata = pcall(json.parse, fs.readfile("/etc/board.json")) - local modemtype = (ok == true) - and (type(boarddata) == "table") - and (type(boarddata.dsl) == "table") - and (type(boarddata.dsl.modem) == "table") - and boarddata.dsl.modem.type - - dsl = m:section(TypedSection, "dsl", translate("DSL")) - dsl.anonymous = true - - annex = dsl:option(ListValue, "annex", translate("Annex")) - annex:value("a", translate("Annex A + L + M (all)")) - annex:value("b", translate("Annex B (all)")) - annex:value("j", translate("Annex J (all)")) - annex:value("m", translate("Annex M (all)")) - annex:value("bdmt", translate("Annex B G.992.1")) - annex:value("b2", translate("Annex B G.992.3")) - annex:value("b2p", translate("Annex B G.992.5")) - annex:value("at1", translate("ANSI T1.413")) - annex:value("admt", translate("Annex A G.992.1")) - annex:value("alite", translate("Annex A G.992.2")) - annex:value("a2", translate("Annex A G.992.3")) - annex:value("a2p", translate("Annex A G.992.5")) - annex:value("l", translate("Annex L G.992.3 POTS 1")) - annex:value("m2", translate("Annex M G.992.3")) - annex:value("m2p", translate("Annex M G.992.5")) - - tone = dsl:option(ListValue, "tone", translate("Tone")) - tone:value("", translate("auto")) - tone:value("a", translate("A43C + J43 + A43")) - tone:value("av", translate("A43C + J43 + A43 + V43")) - tone:value("b", translate("B43 + B43C")) - tone:value("bv", translate("B43 + B43C + V43")) - - if modemtype == "vdsl" then - xfer_mode = dsl:option(ListValue, "xfer_mode", translate("Encapsulation mode")) - xfer_mode:value("", translate("auto")) - xfer_mode:value("atm", translate("ATM (Asynchronous Transfer Mode)")) - xfer_mode:value("ptm", translate("PTM/EFM (Packet Transfer Mode)")) - - line_mode = dsl:option(ListValue, "line_mode", translate("DSL line mode")) - line_mode:value("", translate("auto")) - line_mode:value("adsl", translate("ADSL")) - line_mode:value("vdsl", translate("VDSL")) - - ds_snr = dsl:option(ListValue, "ds_snr_offset", translate("Downstream SNR offset")) - ds_snr:depends("line_mode", "adsl") - for i = -50, 50, 5 do - ds_snr:value(i, translate("%.1f dB" %{ i / 10} )) - end - end - - firmware = dsl:option(Value, "firmware", translate("Firmware File")) - - m.pageaction = true -end - --- Show ATM bridge section if we have the capabilities -if fs.access("/usr/sbin/br2684ctl") then - atm = m:section(TypedSection, "atm-bridge", translate("ATM Bridges"), - translate("ATM bridges expose encapsulated ethernet in AAL5 " .. - "connections as virtual Linux network interfaces which can " .. - "be used in conjunction with DHCP or PPP to dial into the " .. - "provider network.")) - - atm.addremove = true - atm.anonymous = true - - atm.create = function(self, section) - local sid = TypedSection.create(self, section) - local max_unit = -1 - - m.uci:foreach("network", "atm-bridge", - function(s) - local u = tonumber(s.unit) - if u ~= nil and u > max_unit then - max_unit = u - end - end) - - m.uci:set("network", sid, "unit", max_unit + 1) - m.uci:set("network", sid, "atmdev", 0) - m.uci:set("network", sid, "encaps", "llc") - m.uci:set("network", sid, "payload", "bridged") - m.uci:set("network", sid, "vci", 35) - m.uci:set("network", sid, "vpi", 8) - - return sid - end - - atm:tab("general", translate("General Setup")) - atm:tab("advanced", translate("Advanced Settings")) - - vci = atm:taboption("general", Value, "vci", translate("ATM Virtual Channel Identifier (VCI)")) - vpi = atm:taboption("general", Value, "vpi", translate("ATM Virtual Path Identifier (VPI)")) - encaps = atm:taboption("general", ListValue, "encaps", translate("Encapsulation mode")) - encaps:value("llc", translate("LLC")) - encaps:value("vc", translate("VC-Mux")) - - atmdev = atm:taboption("advanced", Value, "atmdev", translate("ATM device number")) - unit = atm:taboption("advanced", Value, "unit", translate("Bridge unit number")) - payload = atm:taboption("advanced", ListValue, "payload", translate("Forwarding mode")) - payload:value("bridged", translate("bridged")) - payload:value("routed", translate("routed")) - m.pageaction = true -end - -local network = require "luci.model.network" -if network:has_ipv6() then - local s = m:section(NamedSection, "globals", "globals", translate("Global network options")) - local o = s:option(Value, "ula_prefix", translate("IPv6 ULA-Prefix")) - o.datatype = "ip6addr" - o.rmempty = true - m.pageaction = true -end - - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/proto_ahcp.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/proto_ahcp.lua deleted file mode 100644 index 0818199a93..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/proto_ahcp.lua +++ /dev/null @@ -1,67 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local device, apn, service, pincode, username, password -local ipv6, maxwait, defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand - - -mca = s:taboption("ahcp", Value, "multicast_address", translate("Multicast address")) -mca.optional = true -mca.placeholder = "ff02::cca6:c0f9:e182:5359" -mca.datatype = "ip6addr" -mca:depends("proto", "ahcp") - -port = s:taboption("ahcp", Value, "port", translate("Port")) -port.optional = true -port.placeholder = 5359 -port.datatype = "port" -port:depends("proto", "ahcp") - -fam = s:taboption("ahcp", ListValue, "_family", translate("Protocol family")) -fam:value("", translate("IPv4 and IPv6")) -fam:value("ipv4", translate("IPv4 only")) -fam:value("ipv6", translate("IPv6 only")) -fam:depends("proto", "ahcp") - -function fam.cfgvalue(self, section) - local v4 = m.uci:get_bool("network", section, "ipv4_only") - local v6 = m.uci:get_bool("network", section, "ipv6_only") - if v4 then - return "ipv4" - elseif v6 then - return "ipv6" - end - return "" -end - -function fam.write(self, section, value) - if value == "ipv4" then - m.uci:set("network", section, "ipv4_only", "true") - m.uci:delete("network", section, "ipv6_only") - elseif value == "ipv6" then - m.uci:set("network", section, "ipv6_only", "true") - m.uci:delete("network", section, "ipv4_only") - end -end - -function fam.remove(self, section) - m.uci:delete("network", section, "ipv4_only") - m.uci:delete("network", section, "ipv6_only") -end - -nodns = s:taboption("ahcp", Flag, "no_dns", translate("Disable DNS setup")) -nodns.optional = true -nodns.enabled = "true" -nodns.disabled = "false" -nodns.default = nodns.disabled -nodns:depends("proto", "ahcp") - -ltime = s:taboption("ahcp", Value, "lease_time", translate("Lease validity time")) -ltime.optional = true -ltime.placeholder = 3666 -ltime.datatype = "uinteger" -ltime:depends("proto", "ahcp") - diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/routes.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/routes.lua deleted file mode 100644 index 1970f36a28..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/routes.lua +++ /dev/null @@ -1,102 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local wa = require "luci.tools.webadmin" -local fs = require "nixio.fs" - -m = Map("network", - translate("Routes"), - translate("Routes specify over which interface and gateway a certain host or network " .. - "can be reached.")) - -s = m:section(TypedSection, "route", translate("Static IPv4 Routes")) -s.addremove = true -s.anonymous = true - -s.template = "cbi/tblsection" - -iface = s:option(ListValue, "interface", translate("Interface")) -wa.cbi_add_networks(iface) - -t = s:option(Value, "target", translate("Target"), translate("Host-IP or Network")) -t.datatype = "ip4addr" -t.rmempty = false - -n = s:option(Value, "netmask", translate("IPv4-Netmask"), translate("if target is a network")) -n.placeholder = "255.255.255.255" -n.datatype = "ip4addr" -n.rmempty = true - -g = s:option(Value, "gateway", translate("IPv4-Gateway")) -g.datatype = "ip4addr" -g.rmempty = true - -metric = s:option(Value, "metric", translate("Metric")) -metric.placeholder = 0 -metric.datatype = "range(0,255)" -metric.size = 5 -metric.rmempty = true - -mtu = s:option(Value, "mtu", translate("MTU")) -mtu.placeholder = 1500 -mtu.datatype = "range(64,9000)" -mtu.size = 5 -mtu.rmempty = true - -routetype = s:option(Value, "type", translate("Route type")) -routetype:value("", "unicast") -routetype:value("local", "local") -routetype:value("broadcast", "broadcast") -routetype:value("multicast", "multicast") -routetype:value("unreachable", "unreachable") -routetype:value("prohibit", "prohibit") -routetype:value("blackhole", "blackhole") -routetype:value("anycast", "anycast") -routetype.default = "" -routetype.rmempty = true - -if fs.access("/proc/net/ipv6_route") then - s = m:section(TypedSection, "route6", translate("Static IPv6 Routes")) - s.addremove = true - s.anonymous = true - - s.template = "cbi/tblsection" - - iface = s:option(ListValue, "interface", translate("Interface")) - wa.cbi_add_networks(iface) - - t = s:option(Value, "target", translate("Target"), translate("IPv6-Address or Network (CIDR)")) - t.datatype = "ip6addr" - t.rmempty = false - - g = s:option(Value, "gateway", translate("IPv6-Gateway")) - g.datatype = "ip6addr" - g.rmempty = true - - metric = s:option(Value, "metric", translate("Metric")) - metric.placeholder = 0 - metric.datatype = "range(0,65535)" -- XXX: not sure - metric.size = 5 - metric.rmempty = true - - mtu = s:option(Value, "mtu", translate("MTU")) - mtu.placeholder = 1500 - mtu.datatype = "range(64,9000)" - mtu.size = 5 - mtu.rmempty = true - - routetype = s:option(Value, "type", translate("Route type")) - routetype:value("", "unicast") - routetype:value("local", "local") - routetype:value("broadcast", "broadcast") - routetype:value("multicast", "multicast") - routetype:value("unreachable", "unreachable") - routetype:value("prohibit", "prohibit") - routetype:value("blackhole", "blackhole") - routetype:value("anycast", "anycast") - routetype.default = "" - routetype.rmempty = true -end - - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua deleted file mode 100644 index 89a73a5ca8..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua +++ /dev/null @@ -1,363 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("network", translate("Switch"), translate("The network ports on this device can be combined to several VLANs in which computers can communicate directly with each other. VLANs are often used to separate different network segments. Often there is by default one Uplink port for a connection to the next greater network like the internet and other ports for a local network.")) - -local fs = require "nixio.fs" -local nw = require "luci.model.network" -local switches = { } - -nw.init(m.uci) - -local topologies = nw:get_switch_topologies() or {} - -local update_interfaces = function(old_ifname, new_ifname) - local info = { } - - m.uci:foreach("network", "interface", function(section) - local old_ifnames = m.uci:get("network", section[".name"], "ifname") - local new_ifnames = { } - local cur_ifname - local changed = false - for cur_ifname in luci.util.imatch(old_ifnames) do - if cur_ifname == old_ifname then - new_ifnames[#new_ifnames+1] = new_ifname - changed = true - else - new_ifnames[#new_ifnames+1] = cur_ifname - end - end - if changed then - m.uci:set("network", section[".name"], "ifname", table.concat(new_ifnames, " ")) - - info[#info+1] = translatef("Interface %q device auto-migrated from %q to %q.", - section[".name"], old_ifname, new_ifname) - end - end) - - if #info > 0 then - m.message = (m.message and m.message .. "\n" or "") .. table.concat(info, "\n") - end -end - -m.uci:foreach("network", "switch", - function(x) - local sid = x['.name'] - local switch_name = x.name or sid - local has_vlan = nil - local has_learn = nil - local has_vlan4k = nil - local has_jumbo3 = nil - local has_mirror = nil - local min_vid = 0 - local max_vid = 16 - local num_vlans = 16 - - local switch_title - local enable_vlan4k = false - - local topo = topologies[switch_name] - - if not topo then - m.message = translatef("Switch %q has an unknown topology - the VLAN settings might not be accurate.", switch_name) - topo = { - ports = { - { num = 0, label = "Port 1" }, - { num = 1, label = "Port 2" }, - { num = 2, label = "Port 3" }, - { num = 3, label = "Port 4" }, - { num = 4, label = "Port 5" }, - { num = 5, label = "CPU (eth0)", tagged = false } - } - } - end - - -- Parse some common switch properties from swconfig help output. - local swc = io.popen("swconfig dev %q help 2>/dev/null" % switch_name) - if swc then - - local is_port_attr = false - local is_vlan_attr = false - - while true do - local line = swc:read("*l") - if not line then break end - - if line:match("^%s+%-%-vlan") then - is_vlan_attr = true - - elseif line:match("^%s+%-%-port") then - is_vlan_attr = false - is_port_attr = true - - elseif line:match("cpu @") then - switch_title = line:match("^switch%d: %w+%((.-)%)") - num_vlans = tonumber(line:match("vlans: (%d+)")) or 16 - min_vid = 1 - - elseif line:match(": pvid") or line:match(": tag") or line:match(": vid") then - if is_vlan_attr then has_vlan4k = line:match(": (%w+)") end - - elseif line:match(": enable_vlan4k") then - enable_vlan4k = true - - elseif line:match(": enable_vlan") then - has_vlan = "enable_vlan" - - elseif line:match(": enable_learning") then - has_learn = "enable_learning" - - elseif line:match(": enable_mirror_rx") then - has_mirror = "enable_mirror_rx" - - elseif line:match(": max_length") then - has_jumbo3 = "max_length" - end - end - - swc:close() - end - - - -- Switch properties - s = m:section(NamedSection, x['.name'], "switch", - switch_title and translatef("Switch %q (%s)", switch_name, switch_title) - or translatef("Switch %q", switch_name)) - - s.addremove = false - - if has_vlan then - s:option(Flag, has_vlan, translate("Enable VLAN functionality")) - end - - if has_learn then - x = s:option(Flag, has_learn, translate("Enable learning and aging")) - x.default = x.enabled - end - - if has_jumbo3 then - x = s:option(Flag, has_jumbo3, translate("Enable Jumbo Frame passthrough")) - x.enabled = "3" - x.rmempty = true - end - - -- Does this switch support port mirroring? - if has_mirror then - s:option(Flag, "enable_mirror_rx", translate("Enable mirroring of incoming packets")) - s:option(Flag, "enable_mirror_tx", translate("Enable mirroring of outgoing packets")) - - local sp = s:option(ListValue, "mirror_source_port", translate("Mirror source port")) - local mp = s:option(ListValue, "mirror_monitor_port", translate("Mirror monitor port")) - - sp:depends("enable_mirror_tx", "1") - sp:depends("enable_mirror_rx", "1") - - mp:depends("enable_mirror_tx", "1") - mp:depends("enable_mirror_rx", "1") - - local _, pt - for _, pt in ipairs(topo.ports) do - sp:value(pt.num, pt.label) - mp:value(pt.num, pt.label) - end - end - - -- VLAN table - s = m:section(TypedSection, "switch_vlan", - switch_title and translatef("VLANs on %q (%s)", switch_name, switch_title) - or translatef("VLANs on %q", switch_name)) - - s.template = "cbi/tblsection" - s.addremove = true - s.anonymous = true - - -- Filter by switch - s.filter = function(self, section) - local device = m:get(section, "device") - return (device and device == switch_name) - end - - -- Override cfgsections callback to enforce row ordering by vlan id. - s.cfgsections = function(self) - local osections = TypedSection.cfgsections(self) - local sections = { } - local section - - for _, section in luci.util.spairs( - osections, - function(a, b) - return (tonumber(m:get(osections[a], has_vlan4k or "vlan")) or 9999) - < (tonumber(m:get(osections[b], has_vlan4k or "vlan")) or 9999) - end - ) do - sections[#sections+1] = section - end - - return sections - end - - -- When creating a new vlan, preset it with the highest found vid + 1. - s.create = function(self, section, origin) - -- Filter by switch - if m:get(origin, "device") ~= switch_name then - return - end - - local sid = TypedSection.create(self, section) - - local max_nr = 0 - local max_id = 0 - - m.uci:foreach("network", "switch_vlan", - function(s) - if s.device == switch_name then - local nr = tonumber(s.vlan) - local id = has_vlan4k and tonumber(s[has_vlan4k]) - if nr ~= nil and nr > max_nr then max_nr = nr end - if id ~= nil and id > max_id then max_id = id end - end - end) - - m:set(sid, "device", switch_name) - m:set(sid, "vlan", max_nr + 1) - - if has_vlan4k then - m:set(sid, has_vlan4k, max_id + 1) - end - - return sid - end - - - local port_opts = { } - local untagged = { } - - -- Parse current tagging state from the "ports" option. - local portvalue = function(self, section) - local pt - for pt in (m:get(section, "ports") or ""):gmatch("%w+") do - local pc, tu = pt:match("^(%d+)([tu]*)") - if pc == self.option then return (#tu > 0) and tu or "u" end - end - return "" - end - - -- Validate port tagging. Ensure that a port is only untagged once, - -- bail out if not. - local portvalidate = function(self, value, section) - -- ensure that the ports appears untagged only once - if value == "u" then - if not untagged[self.option] then - untagged[self.option] = true - else - return nil, - translatef("%s is untagged in multiple VLANs!", self.title) - end - end - return value - end - - - local vid = s:option(Value, has_vlan4k or "vlan", "VLAN ID", "
    " % switch_name) - local mx_vid = has_vlan4k and 4094 or (num_vlans - 1) - - vid.rmempty = false - vid.forcewrite = true - vid.vlan_used = { } - vid.datatype = "and(uinteger,range("..min_vid..","..mx_vid.."))" - - -- Validate user provided VLAN ID, make sure its within the bounds - -- allowed by the switch. - vid.validate = function(self, value, section) - local v = tonumber(value) - local m = has_vlan4k and 4094 or (num_vlans - 1) - if v ~= nil and v >= min_vid and v <= m then - if not self.vlan_used[v] then - self.vlan_used[v] = true - return value - else - return nil, - translatef("Invalid VLAN ID given! Only unique IDs are allowed") - end - else - return nil, - translatef("Invalid VLAN ID given! Only IDs between %d and %d are allowed.", min_vid, m) - end - end - - -- When writing the "vid" or "vlan" option, serialize the port states - -- as well and write them as "ports" option to uci. - vid.write = function(self, section, new_vid) - local o - local p = { } - for _, o in ipairs(port_opts) do - local new_tag = o:formvalue(section) - if new_tag == "t" then - p[#p+1] = o.option .. new_tag - elseif new_tag == "u" then - p[#p+1] = o.option - end - - if o.info and o.info.device then - local old_tag = o:cfgvalue(section) - local old_vid = self:cfgvalue(section) - if old_tag ~= new_tag or old_vid ~= new_vid then - local old_ifname = (old_tag == "u") and o.info.device - or "%s.%s" %{ o.info.device, old_vid } - - local new_ifname = (new_tag == "u") and o.info.device - or "%s.%s" %{ o.info.device, new_vid } - - if old_ifname ~= new_ifname then - update_interfaces(old_ifname, new_ifname) - end - end - end - end - - if enable_vlan4k then - m:set(sid, "enable_vlan4k", "1") - end - - m:set(section, "ports", table.concat(p, " ")) - return Value.write(self, section, new_vid) - end - - -- Fallback to "vlan" option if "vid" option is supported but unset. - vid.cfgvalue = function(self, section) - return m:get(section, has_vlan4k or "vlan") - or m:get(section, "vlan") - end - - local _, pt - for _, pt in ipairs(topo.ports) do - local po = s:option(ListValue, tostring(pt.num), pt.label, '
    ' %{ switch_name, pt.num }) - - po:value("", translate("off")) - - if not pt.tagged then - po:value("u", translate("untagged")) - end - - po:value("t", translate("tagged")) - - po.cfgvalue = portvalue - po.validate = portvalidate - po.write = function() end - po.info = pt - - port_opts[#port_opts+1] = po - end - - table.sort(port_opts, function(a, b) return a.option < b.option end) - switches[#switches+1] = switch_name - end -) - --- Switch status template -s = m:section(SimpleSection) -s.template = "admin_network/switch_status" -s.switches = switches - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua deleted file mode 100644 index c64226931c..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua +++ /dev/null @@ -1,1058 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local wa = require "luci.tools.webadmin" -local nw = require "luci.model.network" -local ut = require "luci.util" -local nt = require "luci.sys".net -local fs = require "nixio.fs" - -arg[1] = arg[1] or "" - -m = Map("wireless", "", - translate("The Device Configuration section covers physical settings of the radio " .. - "hardware such as channel, transmit power or antenna selection which are shared among all " .. - "defined wireless networks (if the radio hardware is multi-SSID capable). Per network settings " .. - "like encryption or operation mode are grouped in the Interface Configuration.")) - -m:chain("network") -m:chain("firewall") -m.redirect = luci.dispatcher.build_url("admin/network/wireless") - -local ifsection - -function m.on_commit(map) - local wnet = nw:get_wifinet(arg[1]) - if ifsection and wnet then - ifsection.section = wnet.sid - m.title = luci.util.pcdata(wnet:get_i18n()) - end -end - -nw.init(m.uci) - -local wnet = nw:get_wifinet(arg[1]) -local wdev = wnet and wnet:get_device() - --- redirect to overview page if network does not exist anymore (e.g. after a revert) -if not wnet or not wdev then - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless")) - return -end - --- wireless toggle was requested, commit and reload page -function m.parse(map) - local new_cc = m:formvalue("cbid.wireless.%s.country" % wdev:name()) - local old_cc = m:get(wdev:name(), "country") - - if m:formvalue("cbid.wireless.%s.__toggle" % wdev:name()) then - if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then - wnet:set("disabled", nil) - else - wnet:set("disabled", "1") - end - wdev:set("disabled", nil) - - nw:commit("wireless") - luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") - - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless", arg[1])) - return - end - - Map.parse(map) - - if m:get(wdev:name(), "type") == "mac80211" and new_cc and new_cc ~= old_cc then - luci.sys.call("iw reg set %q" % new_cc) - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless", arg[1])) - return - end -end - -m.title = luci.util.pcdata(wnet:get_i18n()) - - -local function txpower_list(iw) - local list = iw.txpwrlist or { } - local off = tonumber(iw.txpower_offset) or 0 - local new = { } - local prev = -1 - local _, val - for _, val in ipairs(list) do - local dbm = val.dbm + off - local mw = math.floor(10 ^ (dbm / 10)) - if mw ~= prev then - prev = mw - new[#new+1] = { - display_dbm = dbm, - display_mw = mw, - driver_dbm = val.dbm, - driver_mw = val.mw - } - end - end - return new -end - -local function txpower_current(pwr, list) - pwr = tonumber(pwr) - if pwr ~= nil then - local _, item - for _, item in ipairs(list) do - if item.driver_dbm >= pwr then - return item.driver_dbm - end - end - end - return pwr or "" -end - -local iw = luci.sys.wifi.getiwinfo(arg[1]) -local hw_modes = iw.hwmodelist or { } -local tx_power_list = txpower_list(iw) -local tx_power_cur = txpower_current(wdev:get("txpower"), tx_power_list) - -s = m:section(NamedSection, wdev:name(), "wifi-device", translate("Device Configuration")) -s.addremove = false - -s:tab("general", translate("General Setup")) -s:tab("macfilter", translate("MAC-Filter")) -s:tab("advanced", translate("Advanced Settings")) - ---[[ -back = s:option(DummyValue, "_overview", translate("Overview")) -back.value = "" -back.titleref = luci.dispatcher.build_url("admin", "network", "wireless") -]] - -st = s:taboption("general", DummyValue, "__status", translate("Status")) -st.template = "admin_network/wifi_status" -st.ifname = arg[1] - -en = s:taboption("general", Button, "__toggle") - -if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then - en.title = translate("Wireless network is disabled") - en.inputtitle = translate("Enable") - en.inputstyle = "apply" -else - en.title = translate("Wireless network is enabled") - en.inputtitle = translate("Disable") - en.inputstyle = "reset" -end - - -local hwtype = wdev:get("type") - --- NanoFoo -local nsantenna = wdev:get("antenna") - --- Check whether there are client interfaces on the same radio, --- if yes, lock the channel choice as these stations will dicatate the freq -local found_sta = nil -local _, net -if wnet:mode() ~= "sta" then - for _, net in ipairs(wdev:get_wifinets()) do - if net:mode() == "sta" and net:get("disabled") ~= "1" then - if not found_sta then - found_sta = {} - found_sta.channel = net:channel() - found_sta.names = {} - end - found_sta.names[#found_sta.names+1] = net:shortname() - end - end -end - -if found_sta then - ch = s:taboption("general", DummyValue, "choice", translate("Channel")) - ch.value = translatef("Locked to channel %s used by: %s", - found_sta.channel or "(auto)", table.concat(found_sta.names, ", ")) -else - ch = s:taboption("general", Value, "_mode_freq", '
    '..translate("Operating frequency")) - ch.hwmodes = hw_modes - ch.htmodes = iw.htmodelist - ch.freqlist = iw.freqlist - ch.template = "cbi/wireless_modefreq" - - function ch.cfgvalue(self, section) - return { - m:get(section, "hwmode") or "", - m:get(section, "channel") or "auto", - m:get(section, "htmode") or "" - } - end - - function ch.formvalue(self, section) - return { - m:formvalue(self:cbid(section) .. ".band") or (hw_modes.g and "11g" or "11a"), - m:formvalue(self:cbid(section) .. ".channel") or "auto", - m:formvalue(self:cbid(section) .. ".htmode") or "" - } - end - - function ch.write(self, section, value) - m:set(section, "hwmode", value[1]) - m:set(section, "channel", value[2]) - m:set(section, "htmode", value[3]) - end -end - -------------------- MAC80211 Device ------------------ - -if hwtype == "mac80211" then - if #tx_power_list > 0 then - tp = s:taboption("general", ListValue, - "txpower", translate("Transmit Power"), "dBm") - tp.rmempty = true - tp.default = tx_power_cur - function tp.cfgvalue(...) - return txpower_current(Value.cfgvalue(...), tx_power_list) - end - - tp:value("", translate("auto")) - for _, p in ipairs(tx_power_list) do - tp:value(p.driver_dbm, "%i dBm (%i mW)" - %{ p.display_dbm, p.display_mw }) - end - end - - local cl = iw and iw.countrylist - if cl and #cl > 0 then - cc = s:taboption("advanced", ListValue, "country", translate("Country Code"), translate("Use ISO/IEC 3166 alpha2 country codes.")) - cc.default = tostring(iw and iw.country or "00") - for _, c in ipairs(cl) do - cc:value(c.alpha2, "%s - %s" %{ c.alpha2, c.name }) - end - else - s:taboption("advanced", Value, "country", translate("Country Code"), translate("Use ISO/IEC 3166 alpha2 country codes.")) - end - - s:taboption("advanced", Value, "distance", translate("Distance Optimization"), - translate("Distance to farthest network member in meters.")) - - -- external antenna profiles - local eal = iw and iw.extant - if eal and #eal > 0 then - ea = s:taboption("advanced", ListValue, "extant", translate("Antenna Configuration")) - for _, eap in ipairs(eal) do - ea:value(eap.id, "%s (%s)" %{ eap.name, eap.description }) - if eap.selected then - ea.default = eap.id - end - end - end - - s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold")) - s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold")) -end - - -------------------- Broadcom Device ------------------ - -if hwtype == "broadcom" then - tp = s:taboption("general", - (#tx_power_list > 0) and ListValue or Value, - "txpower", translate("Transmit Power"), "dBm") - - tp.rmempty = true - tp.default = tx_power_cur - - function tp.cfgvalue(...) - return txpower_current(Value.cfgvalue(...), tx_power_list) - end - - tp:value("", translate("auto")) - for _, p in ipairs(tx_power_list) do - tp:value(p.driver_dbm, "%i dBm (%i mW)" - %{ p.display_dbm, p.display_mw }) - end - - mode = s:taboption("advanced", ListValue, "hwmode", translate("Band")) - if hw_modes.b then - mode:value("11b", "2.4GHz (802.11b)") - if hw_modes.g then - mode:value("11bg", "2.4GHz (802.11b+g)") - end - end - if hw_modes.g then - mode:value("11g", "2.4GHz (802.11g)") - mode:value("11gst", "2.4GHz (802.11g + Turbo)") - mode:value("11lrs", "2.4GHz (802.11g Limited Rate Support)") - end - if hw_modes.a then mode:value("11a", "5GHz (802.11a)") end - if hw_modes.n then - if hw_modes.g then - mode:value("11ng", "2.4GHz (802.11g+n)") - mode:value("11n", "2.4GHz (802.11n)") - end - if hw_modes.a then - mode:value("11na", "5GHz (802.11a+n)") - mode:value("11n", "5GHz (802.11n)") - end - htmode = s:taboption("advanced", ListValue, "htmode", translate("HT mode (802.11n)")) - htmode:depends("hwmode", "11ng") - htmode:depends("hwmode", "11na") - htmode:depends("hwmode", "11n") - htmode:value("HT20", "20MHz") - htmode:value("HT40", "40MHz") - end - - ant1 = s:taboption("advanced", ListValue, "txantenna", translate("Transmitter Antenna")) - ant1.widget = "radio" - ant1:depends("diversity", "") - ant1:value("3", translate("auto")) - ant1:value("0", translate("Antenna 1")) - ant1:value("1", translate("Antenna 2")) - - ant2 = s:taboption("advanced", ListValue, "rxantenna", translate("Receiver Antenna")) - ant2.widget = "radio" - ant2:depends("diversity", "") - ant2:value("3", translate("auto")) - ant2:value("0", translate("Antenna 1")) - ant2:value("1", translate("Antenna 2")) - - s:taboption("advanced", Flag, "frameburst", translate("Frame Bursting")) - - s:taboption("advanced", Value, "distance", translate("Distance Optimization")) - --s:option(Value, "slottime", translate("Slot time")) - - s:taboption("advanced", Value, "country", translate("Country Code")) - s:taboption("advanced", Value, "maxassoc", translate("Connection Limit")) -end - - ---------------------- HostAP Device --------------------- - -if hwtype == "prism2" then - s:taboption("advanced", Value, "txpower", translate("Transmit Power"), "att units").rmempty = true - - s:taboption("advanced", Flag, "diversity", translate("Diversity")).rmempty = false - - s:taboption("advanced", Value, "txantenna", translate("Transmitter Antenna")) - s:taboption("advanced", Value, "rxantenna", translate("Receiver Antenna")) -end - - ------------------------ Interface ----------------------- - -s = m:section(NamedSection, wnet.sid, "wifi-iface", translate("Interface Configuration")) -ifsection = s -s.addremove = false -s.anonymous = true -s.defaults.device = wdev:name() - -s:tab("general", translate("General Setup")) -s:tab("encryption", translate("Wireless Security")) -s:tab("macfilter", translate("MAC-Filter")) -s:tab("advanced", translate("Advanced Settings")) - -ssid = s:taboption("general", Value, "ssid", translate("ESSID")) -ssid.datatype = "maxlength(32)" - -mode = s:taboption("general", ListValue, "mode", translate("Mode")) -mode.override_values = true -mode:value("ap", translate("Access Point")) -mode:value("sta", translate("Client")) -mode:value("adhoc", translate("Ad-Hoc")) - -bssid = s:taboption("general", Value, "bssid", translate("BSSID")) - -network = s:taboption("general", Value, "network", translate("Network"), - translate("Choose the network(s) you want to attach to this wireless interface or " .. - "fill out the create field to define a new network.")) - -network.rmempty = true -network.template = "cbi/network_netlist" -network.widget = "checkbox" -network.novirtual = true - -function network.write(self, section, value) - local i = nw:get_interface(section) - if i then - if value == '-' then - value = m:formvalue(self:cbid(section) .. ".newnet") - if value and #value > 0 then - local n = nw:add_network(value, {proto="none"}) - if n then n:add_interface(i) end - else - local n = i:get_network() - if n then n:del_interface(i) end - end - else - local v - for _, v in ipairs(i:get_networks()) do - v:del_interface(i) - end - for v in ut.imatch(value) do - local n = nw:get_network(v) - if n then - if not n:is_empty() then - n:set("type", "bridge") - end - n:add_interface(i) - end - end - end - end -end - --------------------- MAC80211 Interface ---------------------- - -if hwtype == "mac80211" then - if fs.access("/usr/sbin/iw") then - mode:value("mesh", "802.11s") - end - - mode:value("ahdemo", translate("Pseudo Ad-Hoc (ahdemo)")) - mode:value("monitor", translate("Monitor")) - bssid:depends({mode="adhoc"}) - bssid:depends({mode="sta"}) - bssid:depends({mode="sta-wds"}) - - mp = s:taboption("macfilter", ListValue, "macfilter", translate("MAC-Address Filter")) - mp:depends({mode="ap"}) - mp:depends({mode="ap-wds"}) - mp:value("", translate("disable")) - mp:value("allow", translate("Allow listed only")) - mp:value("deny", translate("Allow all except listed")) - - ml = s:taboption("macfilter", DynamicList, "maclist", translate("MAC-List")) - ml.datatype = "macaddr" - ml:depends({macfilter="allow"}) - ml:depends({macfilter="deny"}) - nt.mac_hints(function(mac, name) ml:value(mac, "%s (%s)" %{ mac, name }) end) - - mode:value("ap-wds", "%s (%s)" % {translate("Access Point"), translate("WDS")}) - mode:value("sta-wds", "%s (%s)" % {translate("Client"), translate("WDS")}) - - function mode.write(self, section, value) - if value == "ap-wds" then - ListValue.write(self, section, "ap") - m.uci:set("wireless", section, "wds", 1) - elseif value == "sta-wds" then - ListValue.write(self, section, "sta") - m.uci:set("wireless", section, "wds", 1) - else - ListValue.write(self, section, value) - m.uci:delete("wireless", section, "wds") - end - end - - function mode.cfgvalue(self, section) - local mode = ListValue.cfgvalue(self, section) - local wds = m.uci:get("wireless", section, "wds") == "1" - - if mode == "ap" and wds then - return "ap-wds" - elseif mode == "sta" and wds then - return "sta-wds" - else - return mode - end - end - - hidden = s:taboption("general", Flag, "hidden", translate("Hide ESSID")) - hidden:depends({mode="ap"}) - hidden:depends({mode="ap-wds"}) - - wmm = s:taboption("general", Flag, "wmm", translate("WMM Mode")) - wmm:depends({mode="ap"}) - wmm:depends({mode="ap-wds"}) - wmm.default = wmm.enabled - - isolate = s:taboption("advanced", Flag, "isolate", translate("Isolate Clients"), - translate("Prevents client-to-client communication")) - isolate:depends({mode="ap"}) - isolate:depends({mode="ap-wds"}) - - ifname = s:taboption("advanced", Value, "ifname", translate("Interface name"), translate("Override default interface name")) - ifname.optional = true -end - - --------------------- Broadcom Interface ---------------------- - -if hwtype == "broadcom" then - mode:value("wds", translate("WDS")) - mode:value("monitor", translate("Monitor")) - - hidden = s:taboption("general", Flag, "hidden", translate("Hide ESSID")) - hidden:depends({mode="ap"}) - hidden:depends({mode="adhoc"}) - hidden:depends({mode="wds"}) - - isolate = s:taboption("advanced", Flag, "isolate", translate("Separate Clients"), - translate("Prevents client-to-client communication")) - isolate:depends({mode="ap"}) - - s:taboption("advanced", Flag, "doth", "802.11h") - s:taboption("advanced", Flag, "wmm", translate("WMM Mode")) - - bssid:depends({mode="wds"}) - bssid:depends({mode="adhoc"}) -end - - ------------------------ HostAP Interface --------------------- - -if hwtype == "prism2" then - mode:value("wds", translate("WDS")) - mode:value("monitor", translate("Monitor")) - - hidden = s:taboption("general", Flag, "hidden", translate("Hide ESSID")) - hidden:depends({mode="ap"}) - hidden:depends({mode="adhoc"}) - hidden:depends({mode="wds"}) - - bssid:depends({mode="sta"}) - - mp = s:taboption("macfilter", ListValue, "macpolicy", translate("MAC-Address Filter")) - mp:value("", translate("disable")) - mp:value("allow", translate("Allow listed only")) - mp:value("deny", translate("Allow all except listed")) - ml = s:taboption("macfilter", DynamicList, "maclist", translate("MAC-List")) - ml:depends({macpolicy="allow"}) - ml:depends({macpolicy="deny"}) - nt.mac_hints(function(mac, name) ml:value(mac, "%s (%s)" %{ mac, name }) end) - - s:taboption("advanced", Value, "rate", translate("Transmission Rate")) - s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold")) - s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold")) -end - - -------------------- WiFI-Encryption ------------------- - -encr = s:taboption("encryption", ListValue, "encryption", translate("Encryption")) -encr.override_values = true -encr.override_depends = true -encr:depends({mode="ap"}) -encr:depends({mode="sta"}) -encr:depends({mode="adhoc"}) -encr:depends({mode="ahdemo"}) -encr:depends({mode="ap-wds"}) -encr:depends({mode="sta-wds"}) -encr:depends({mode="mesh"}) - -cipher = s:taboption("encryption", ListValue, "cipher", translate("Cipher")) -cipher:depends({encryption="wpa"}) -cipher:depends({encryption="wpa2"}) -cipher:depends({encryption="psk"}) -cipher:depends({encryption="psk2"}) -cipher:depends({encryption="wpa-mixed"}) -cipher:depends({encryption="psk-mixed"}) -cipher:value("auto", translate("auto")) -cipher:value("ccmp", translate("Force CCMP (AES)")) -cipher:value("tkip", translate("Force TKIP")) -cipher:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)")) - -function encr.cfgvalue(self, section) - local v = tostring(ListValue.cfgvalue(self, section)) - if v == "wep" then - return "wep-open" - elseif v and v:match("%+") then - return (v:gsub("%+.+$", "")) - end - return v -end - -function encr.write(self, section, value) - local e = tostring(encr:formvalue(section)) - local c = tostring(cipher:formvalue(section)) - if value == "wpa" or value == "wpa2" then - self.map.uci:delete("wireless", section, "key") - end - if e and (c == "tkip" or c == "ccmp" or c == "tkip+ccmp") then - e = e .. "+" .. c - end - self.map:set(section, "encryption", e) -end - -function cipher.cfgvalue(self, section) - local v = tostring(ListValue.cfgvalue(encr, section)) - if v and v:match("%+") then - v = v:gsub("^[^%+]+%+", "") - if v == "aes" then v = "ccmp" - elseif v == "tkip+aes" then v = "tkip+ccmp" - elseif v == "aes+tkip" then v = "tkip+ccmp" - elseif v == "ccmp+tkip" then v = "tkip+ccmp" - end - end - return v -end - -function cipher.write(self, section) - return encr:write(section) -end - - -encr:value("none", "No Encryption") -encr:value("wep-open", translate("WEP Open System"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"}) -encr:value("wep-shared", translate("WEP Shared Key"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"}) - -if hwtype == "mac80211" or hwtype == "prism2" then - local supplicant = fs.access("/usr/sbin/wpa_supplicant") - local hostapd = fs.access("/usr/sbin/hostapd") - - -- Probe EAP support - local has_ap_eap = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0) - local has_sta_eap = (os.execute("wpa_supplicant -veap >/dev/null 2>/dev/null") == 0) - - if hostapd and supplicant then - encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) - if has_ap_eap and has_sta_eap then - encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) - encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) - end - elseif hostapd and not supplicant then - encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="ap-wds"}) - encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="ap-wds"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="ap-wds"}) - if has_ap_eap then - encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="ap-wds"}) - encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="ap-wds"}) - end - encr.description = translate( - "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. - "and ad-hoc mode) to be installed." - ) - elseif not hostapd and supplicant then - encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) - if has_sta_eap then - encr:value("wpa", "WPA-EAP", {mode="sta"}, {mode="sta-wds"}) - encr:value("wpa2", "WPA2-EAP", {mode="sta"}, {mode="sta-wds"}) - end - encr.description = translate( - "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. - "and ad-hoc mode) to be installed." - ) - else - encr.description = translate( - "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. - "and ad-hoc mode) to be installed." - ) - end -elseif hwtype == "broadcom" then - encr:value("psk", "WPA-PSK") - encr:value("psk2", "WPA2-PSK") - encr:value("psk+psk2", "WPA-PSK/WPA2-PSK Mixed Mode") -end - -auth_server = s:taboption("encryption", Value, "auth_server", translate("Radius-Authentication-Server")) -auth_server:depends({mode="ap", encryption="wpa"}) -auth_server:depends({mode="ap", encryption="wpa2"}) -auth_server:depends({mode="ap-wds", encryption="wpa"}) -auth_server:depends({mode="ap-wds", encryption="wpa2"}) -auth_server.rmempty = true -auth_server.datatype = "host(0)" - -auth_port = s:taboption("encryption", Value, "auth_port", translate("Radius-Authentication-Port"), translatef("Default %d", 1812)) -auth_port:depends({mode="ap", encryption="wpa"}) -auth_port:depends({mode="ap", encryption="wpa2"}) -auth_port:depends({mode="ap-wds", encryption="wpa"}) -auth_port:depends({mode="ap-wds", encryption="wpa2"}) -auth_port.rmempty = true -auth_port.datatype = "port" - -auth_secret = s:taboption("encryption", Value, "auth_secret", translate("Radius-Authentication-Secret")) -auth_secret:depends({mode="ap", encryption="wpa"}) -auth_secret:depends({mode="ap", encryption="wpa2"}) -auth_secret:depends({mode="ap-wds", encryption="wpa"}) -auth_secret:depends({mode="ap-wds", encryption="wpa2"}) -auth_secret.rmempty = true -auth_secret.password = true - -acct_server = s:taboption("encryption", Value, "acct_server", translate("Radius-Accounting-Server")) -acct_server:depends({mode="ap", encryption="wpa"}) -acct_server:depends({mode="ap", encryption="wpa2"}) -acct_server:depends({mode="ap-wds", encryption="wpa"}) -acct_server:depends({mode="ap-wds", encryption="wpa2"}) -acct_server.rmempty = true -acct_server.datatype = "host(0)" - -acct_port = s:taboption("encryption", Value, "acct_port", translate("Radius-Accounting-Port"), translatef("Default %d", 1813)) -acct_port:depends({mode="ap", encryption="wpa"}) -acct_port:depends({mode="ap", encryption="wpa2"}) -acct_port:depends({mode="ap-wds", encryption="wpa"}) -acct_port:depends({mode="ap-wds", encryption="wpa2"}) -acct_port.rmempty = true -acct_port.datatype = "port" - -acct_secret = s:taboption("encryption", Value, "acct_secret", translate("Radius-Accounting-Secret")) -acct_secret:depends({mode="ap", encryption="wpa"}) -acct_secret:depends({mode="ap", encryption="wpa2"}) -acct_secret:depends({mode="ap-wds", encryption="wpa"}) -acct_secret:depends({mode="ap-wds", encryption="wpa2"}) -acct_secret.rmempty = true -acct_secret.password = true - -wpakey = s:taboption("encryption", Value, "_wpa_key", translate("Key")) -wpakey:depends("encryption", "psk") -wpakey:depends("encryption", "psk2") -wpakey:depends("encryption", "psk+psk2") -wpakey:depends("encryption", "psk-mixed") -wpakey.datatype = "wpakey" -wpakey.rmempty = true -wpakey.password = true - -wpakey.cfgvalue = function(self, section, value) - local key = m.uci:get("wireless", section, "key") - if key == "1" or key == "2" or key == "3" or key == "4" then - return nil - end - return key -end - -wpakey.write = function(self, section, value) - self.map.uci:set("wireless", section, "key", value) - self.map.uci:delete("wireless", section, "key1") -end - - -wepslot = s:taboption("encryption", ListValue, "_wep_key", translate("Used Key Slot")) -wepslot:depends("encryption", "wep-open") -wepslot:depends("encryption", "wep-shared") -wepslot:value("1", translatef("Key #%d", 1)) -wepslot:value("2", translatef("Key #%d", 2)) -wepslot:value("3", translatef("Key #%d", 3)) -wepslot:value("4", translatef("Key #%d", 4)) - -wepslot.cfgvalue = function(self, section) - local slot = tonumber(m.uci:get("wireless", section, "key")) - if not slot or slot < 1 or slot > 4 then - return 1 - end - return slot -end - -wepslot.write = function(self, section, value) - self.map.uci:set("wireless", section, "key", value) -end - -local slot -for slot=1,4 do - wepkey = s:taboption("encryption", Value, "key" .. slot, translatef("Key #%d", slot)) - wepkey:depends("encryption", "wep-open") - wepkey:depends("encryption", "wep-shared") - wepkey.datatype = "wepkey" - wepkey.rmempty = true - wepkey.password = true - - function wepkey.write(self, section, value) - if value and (#value == 5 or #value == 13) then - value = "s:" .. value - end - return Value.write(self, section, value) - end -end - - -if hwtype == "mac80211" or hwtype == "prism2" then - - -- Probe 802.11r support (and EAP support as a proxy for Openwrt) - local has_80211r = (os.execute("hostapd -v11r 2>/dev/null || hostapd -veap 2>/dev/null") == 0) - - ieee80211r = s:taboption("encryption", Flag, "ieee80211r", - translate("802.11r Fast Transition"), - translate("Enables fast roaming among access points that belong " .. - "to the same Mobility Domain")) - ieee80211r:depends({mode="ap", encryption="wpa"}) - ieee80211r:depends({mode="ap", encryption="wpa2"}) - ieee80211r:depends({mode="ap-wds", encryption="wpa"}) - ieee80211r:depends({mode="ap-wds", encryption="wpa2"}) - if has_80211r then - ieee80211r:depends({mode="ap", encryption="psk"}) - ieee80211r:depends({mode="ap", encryption="psk2"}) - ieee80211r:depends({mode="ap", encryption="psk-mixed"}) - ieee80211r:depends({mode="ap-wds", encryption="psk"}) - ieee80211r:depends({mode="ap-wds", encryption="psk2"}) - ieee80211r:depends({mode="ap-wds", encryption="psk-mixed"}) - end - ieee80211r.rmempty = true - - nasid = s:taboption("encryption", Value, "nasid", translate("NAS ID"), - translate("Used for two different purposes: RADIUS NAS ID and " .. - "802.11r R0KH-ID. Not needed with normal WPA(2)-PSK.")) - nasid:depends({mode="ap", encryption="wpa"}) - nasid:depends({mode="ap", encryption="wpa2"}) - nasid:depends({mode="ap-wds", encryption="wpa"}) - nasid:depends({mode="ap-wds", encryption="wpa2"}) - nasid:depends({ieee80211r="1"}) - nasid.rmempty = true - - mobility_domain = s:taboption("encryption", Value, "mobility_domain", - translate("Mobility Domain"), - translate("4-character hexadecimal ID")) - mobility_domain:depends({ieee80211r="1"}) - mobility_domain.placeholder = "4f57" - mobility_domain.datatype = "and(hexstring,rangelength(4,4))" - mobility_domain.rmempty = true - - reassociation_deadline = s:taboption("encryption", Value, "reassociation_deadline", - translate("Reassociation Deadline"), - translate("time units (TUs / 1.024 ms) [1000-65535]")) - reassociation_deadline:depends({ieee80211r="1"}) - reassociation_deadline.placeholder = "1000" - reassociation_deadline.datatype = "range(1000,65535)" - reassociation_deadline.rmempty = true - - ft_protocol = s:taboption("encryption", ListValue, "ft_over_ds", translate("FT protocol")) - ft_protocol:depends({ieee80211r="1"}) - ft_protocol:value("1", translatef("FT over DS")) - ft_protocol:value("0", translatef("FT over the Air")) - ft_protocol.rmempty = true - - ft_psk_generate_local = s:taboption("encryption", Flag, "ft_psk_generate_local", - translate("Generate PMK locally"), - translate("When using a PSK, the PMK can be generated locally without inter AP communications")) - ft_psk_generate_local:depends({ieee80211r="1"}) - - r0_key_lifetime = s:taboption("encryption", Value, "r0_key_lifetime", - translate("R0 Key Lifetime"), translate("minutes")) - r0_key_lifetime:depends({ieee80211r="1", ft_psk_generate_local=""}) - r0_key_lifetime.placeholder = "10000" - r0_key_lifetime.datatype = "uinteger" - r0_key_lifetime.rmempty = true - - r1_key_holder = s:taboption("encryption", Value, "r1_key_holder", - translate("R1 Key Holder"), - translate("6-octet identifier as a hex string - no colons")) - r1_key_holder:depends({ieee80211r="1", ft_psk_generate_local=""}) - r1_key_holder.placeholder = "00004f577274" - r1_key_holder.datatype = "and(hexstring,rangelength(12,12))" - r1_key_holder.rmempty = true - - pmk_r1_push = s:taboption("encryption", Flag, "pmk_r1_push", translate("PMK R1 Push")) - pmk_r1_push:depends({ieee80211r="1", ft_psk_generate_local=""}) - pmk_r1_push.placeholder = "0" - pmk_r1_push.rmempty = true - - r0kh = s:taboption("encryption", DynamicList, "r0kh", translate("External R0 Key Holder List"), - translate("List of R0KHs in the same Mobility Domain. " .. - "
    Format: MAC-address,NAS-Identifier,128-bit key as hex string. " .. - "
    This list is used to map R0KH-ID (NAS Identifier) to a destination " .. - "MAC address when requesting PMK-R1 key from the R0KH that the STA " .. - "used during the Initial Mobility Domain Association.")) - r0kh:depends({ieee80211r="1", ft_psk_generate_local=""}) - r0kh.rmempty = true - - r1kh = s:taboption("encryption", DynamicList, "r1kh", translate("External R1 Key Holder List"), - translate ("List of R1KHs in the same Mobility Domain. ".. - "
    Format: MAC-address,R1KH-ID as 6 octets with colons,128-bit key as hex string. ".. - "
    This list is used to map R1KH-ID to a destination MAC address " .. - "when sending PMK-R1 key from the R0KH. This is also the " .. - "list of authorized R1KHs in the MD that can request PMK-R1 keys.")) - r1kh:depends({ieee80211r="1", ft_psk_generate_local=""}) - r1kh.rmempty = true - -- End of 802.11r options - - eaptype = s:taboption("encryption", ListValue, "eap_type", translate("EAP-Method")) - eaptype:value("tls", "TLS") - eaptype:value("ttls", "TTLS") - eaptype:value("peap", "PEAP") - eaptype:value("fast", "FAST") - eaptype:depends({mode="sta", encryption="wpa"}) - eaptype:depends({mode="sta", encryption="wpa2"}) - eaptype:depends({mode="sta-wds", encryption="wpa"}) - eaptype:depends({mode="sta-wds", encryption="wpa2"}) - - cacert = s:taboption("encryption", FileUpload, "ca_cert", translate("Path to CA-Certificate")) - cacert:depends({mode="sta", encryption="wpa"}) - cacert:depends({mode="sta", encryption="wpa2"}) - cacert:depends({mode="sta-wds", encryption="wpa"}) - cacert:depends({mode="sta-wds", encryption="wpa2"}) - cacert.rmempty = true - - clientcert = s:taboption("encryption", FileUpload, "client_cert", translate("Path to Client-Certificate")) - clientcert:depends({mode="sta", eap_type="tls", encryption="wpa"}) - clientcert:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - clientcert:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - clientcert:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - - privkey = s:taboption("encryption", FileUpload, "priv_key", translate("Path to Private Key")) - privkey:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - privkey:depends({mode="sta", eap_type="tls", encryption="wpa"}) - privkey:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - privkey:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - - privkeypwd = s:taboption("encryption", Value, "priv_key_pwd", translate("Password of Private Key")) - privkeypwd:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - privkeypwd:depends({mode="sta", eap_type="tls", encryption="wpa"}) - privkeypwd:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - privkeypwd:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - privkeypwd.rmempty = true - privkeypwd.password = true - - auth = s:taboption("encryption", ListValue, "auth", translate("Authentication")) - auth:value("PAP", "PAP", {eap_type="ttls"}) - auth:value("CHAP", "CHAP", {eap_type="ttls"}) - auth:value("MSCHAP", "MSCHAP", {eap_type="ttls"}) - auth:value("MSCHAPV2", "MSCHAPv2", {eap_type="ttls"}) - auth:value("EAP-GTC") - auth:value("EAP-MD5") - auth:value("EAP-MSCHAPV2") - auth:value("EAP-TLS") - auth:depends({mode="sta", eap_type="fast", encryption="wpa2"}) - auth:depends({mode="sta", eap_type="fast", encryption="wpa"}) - auth:depends({mode="sta", eap_type="peap", encryption="wpa2"}) - auth:depends({mode="sta", eap_type="peap", encryption="wpa"}) - auth:depends({mode="sta", eap_type="ttls", encryption="wpa2"}) - auth:depends({mode="sta", eap_type="ttls", encryption="wpa"}) - auth:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"}) - auth:depends({mode="sta-wds", eap_type="fast", encryption="wpa"}) - auth:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"}) - auth:depends({mode="sta-wds", eap_type="peap", encryption="wpa"}) - auth:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"}) - auth:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"}) - - cacert2 = s:taboption("encryption", FileUpload, "ca_cert2", translate("Path to inner CA-Certificate")) - cacert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"}) - cacert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"}) - cacert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"}) - cacert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"}) - - clientcert2 = s:taboption("encryption", FileUpload, "client_cert2", translate("Path to inner Client-Certificate")) - clientcert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"}) - clientcert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"}) - clientcert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"}) - clientcert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"}) - - privkey2 = s:taboption("encryption", FileUpload, "priv_key2", translate("Path to inner Private Key")) - privkey2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"}) - privkey2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"}) - privkey2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"}) - privkey2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"}) - - privkeypwd2 = s:taboption("encryption", Value, "priv_key2_pwd", translate("Password of inner Private Key")) - privkeypwd2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"}) - privkeypwd2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"}) - privkeypwd2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"}) - privkeypwd2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"}) - privkeypwd2.rmempty = true - privkeypwd2.password = true - - identity = s:taboption("encryption", Value, "identity", translate("Identity")) - identity:depends({mode="sta", eap_type="fast", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="fast", encryption="wpa"}) - identity:depends({mode="sta", eap_type="peap", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="peap", encryption="wpa"}) - identity:depends({mode="sta", eap_type="ttls", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="ttls", encryption="wpa"}) - identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"}) - identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa"}) - identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"}) - identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa"}) - identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"}) - identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"}) - identity:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="tls", encryption="wpa"}) - identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - - anonymous_identity = s:taboption("encryption", Value, "anonymous_identity", translate("Anonymous Identity")) - anonymous_identity:depends({mode="sta", eap_type="fast", encryption="wpa2"}) - anonymous_identity:depends({mode="sta", eap_type="fast", encryption="wpa"}) - anonymous_identity:depends({mode="sta", eap_type="peap", encryption="wpa2"}) - anonymous_identity:depends({mode="sta", eap_type="peap", encryption="wpa"}) - anonymous_identity:depends({mode="sta", eap_type="ttls", encryption="wpa2"}) - anonymous_identity:depends({mode="sta", eap_type="ttls", encryption="wpa"}) - anonymous_identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"}) - anonymous_identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa"}) - anonymous_identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"}) - anonymous_identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa"}) - anonymous_identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"}) - anonymous_identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"}) - anonymous_identity:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - anonymous_identity:depends({mode="sta", eap_type="tls", encryption="wpa"}) - anonymous_identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - anonymous_identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - - password = s:taboption("encryption", Value, "password", translate("Password")) - password:depends({mode="sta", eap_type="fast", encryption="wpa2"}) - password:depends({mode="sta", eap_type="fast", encryption="wpa"}) - password:depends({mode="sta", eap_type="peap", encryption="wpa2"}) - password:depends({mode="sta", eap_type="peap", encryption="wpa"}) - password:depends({mode="sta", eap_type="ttls", encryption="wpa2"}) - password:depends({mode="sta", eap_type="ttls", encryption="wpa"}) - password:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"}) - password:depends({mode="sta-wds", eap_type="fast", encryption="wpa"}) - password:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"}) - password:depends({mode="sta-wds", eap_type="peap", encryption="wpa"}) - password:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"}) - password:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"}) - password.rmempty = true - password.password = true -end - --- ieee802.11w options -if hwtype == "mac80211" then - local has_80211w = (os.execute("hostapd -v11w 2>/dev/null || hostapd -veap 2>/dev/null") == 0) - if has_80211w then - ieee80211w = s:taboption("encryption", ListValue, "ieee80211w", - translate("802.11w Management Frame Protection"), - translate("Requires the 'full' version of wpad/hostapd " .. - "and support from the wifi driver
    (as of Feb 2017: " .. - "ath9k and ath10k, in LEDE also mwlwifi and mt76)")) - ieee80211w.default = "" - ieee80211w.rmempty = true - ieee80211w:value("", translate("Disabled (default)")) - ieee80211w:value("1", translate("Optional")) - ieee80211w:value("2", translate("Required")) - ieee80211w:depends({mode="ap", encryption="wpa2"}) - ieee80211w:depends({mode="ap-wds", encryption="wpa2"}) - ieee80211w:depends({mode="ap", encryption="psk2"}) - ieee80211w:depends({mode="ap", encryption="psk-mixed"}) - ieee80211w:depends({mode="ap-wds", encryption="psk2"}) - ieee80211w:depends({mode="ap-wds", encryption="psk-mixed"}) - - max_timeout = s:taboption("encryption", Value, "ieee80211w_max_timeout", - translate("802.11w maximum timeout"), - translate("802.11w Association SA Query maximum timeout")) - max_timeout:depends({ieee80211w="1"}) - max_timeout:depends({ieee80211w="2"}) - max_timeout.datatype = "uinteger" - max_timeout.placeholder = "1000" - max_timeout.rmempty = true - - retry_timeout = s:taboption("encryption", Value, "ieee80211w_retry_timeout", - translate("802.11w retry timeout"), - translate("802.11w Association SA Query retry timeout")) - retry_timeout:depends({ieee80211w="1"}) - retry_timeout:depends({ieee80211w="2"}) - retry_timeout.datatype = "uinteger" - retry_timeout.placeholder = "201" - retry_timeout.rmempty = true - end - - local key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries", - translate("Enable key reinstallation (KRACK) countermeasures"), - translate("Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load.")) - - key_retries:depends({mode="ap", encryption="wpa2"}) - key_retries:depends({mode="ap", encryption="psk2"}) - key_retries:depends({mode="ap", encryption="psk-mixed"}) - key_retries:depends({mode="ap-wds", encryption="wpa2"}) - key_retries:depends({mode="ap-wds", encryption="psk2"}) - key_retries:depends({mode="ap-wds", encryption="psk-mixed"}) -end - -if hwtype == "mac80211" or hwtype == "prism2" then - local wpasupplicant = fs.access("/usr/sbin/wpa_supplicant") - local hostcli = fs.access("/usr/sbin/hostapd_cli") - if hostcli and wpasupplicant then - wps = s:taboption("encryption", Flag, "wps_pushbutton", translate("Enable WPS pushbutton, requires WPA(2)-PSK")) - wps.enabled = "1" - wps.disabled = "0" - wps.rmempty = false - wps:depends("encryption", "psk") - wps:depends("encryption", "psk2") - wps:depends("encryption", "psk-mixed") - end -end - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_add.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_add.lua deleted file mode 100644 index 8277deb2f6..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_add.lua +++ /dev/null @@ -1,173 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local nw = require "luci.model.network" -local fw = require "luci.model.firewall" -local uci = require "luci.model.uci".cursor() -local http = require "luci.http" - -local iw = luci.sys.wifi.getiwinfo(http.formvalue("device")) - -local has_firewall = fs.access("/etc/config/firewall") - -if not iw then - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless")) - return -end - -m = SimpleForm("network", translatef("Joining Network: %q", http.formvalue("join"))) -m.cancel = translate("Back to scan results") -m.reset = false - -function m.on_cancel() - local dev = http.formvalue("device") - http.redirect(luci.dispatcher.build_url( - dev and "admin/network/wireless_join?device=" .. dev - or "admin/network/wireless" - )) -end - -nw.init(uci) -fw.init(uci) - -m.hidden = { - device = http.formvalue("device"), - join = http.formvalue("join"), - channel = http.formvalue("channel"), - mode = http.formvalue("mode"), - bssid = http.formvalue("bssid"), - wep = http.formvalue("wep"), - wpa_suites = http.formvalue("wpa_suites"), - wpa_version = http.formvalue("wpa_version") -} - -if iw and iw.mbssid_support then - replace = m:field(Flag, "replace", translate("Replace wireless configuration"), - translate("Check this option to delete the existing networks from this radio.")) - - function replace.cfgvalue() return "0" end -else - replace = m:field(DummyValue, "replace", translate("Replace wireless configuration")) - replace.default = translate("The hardware is not multi-SSID capable and the existing " .. - "configuration will be replaced if you proceed.") - - function replace.formvalue() return "1" end -end - -if http.formvalue("wep") == "1" then - key = m:field(Value, "key", translate("WEP passphrase"), - translate("Specify the secret encryption key here.")) - - key.password = true - key.datatype = "wepkey" - -elseif (tonumber(m.hidden.wpa_version) or 0) > 0 and - (m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2") -then - key = m:field(Value, "key", translate("WPA passphrase"), - translate("Specify the secret encryption key here.")) - - key.password = true - key.datatype = "wpakey" - --m.hidden.wpa_suite = (tonumber(http.formvalue("wpa_version")) or 0) >= 2 and "psk2" or "psk" -end - -newnet = m:field(Value, "_netname_new", translate("Name of the new network"), - translate("The allowed characters are: A-Z, a-z, " .. - "0-9 and _" - )) - -newnet.default = m.hidden.mode == "Ad-Hoc" and "mesh" or "wwan" -newnet.datatype = "uciname" - -if has_firewall then - fwzone = m:field(Value, "_fwzone", - translate("Create / Assign firewall-zone"), - translate("Choose the firewall zone you want to assign to this interface. Select unspecified to remove the interface from the associated zone or fill out the create field to define a new zone and attach the interface to it.")) - - fwzone.template = "cbi/firewall_zonelist" - fwzone.default = m.hidden.mode == "Ad-Hoc" and "mesh" or "wan" -end - -function newnet.parse(self, section) - local net, zone - - if has_firewall then - local zval = fwzone:formvalue(section) - zone = fw:get_zone(zval) - - if not zone and zval == '-' then - zval = m:formvalue(fwzone:cbid(section) .. ".newzone") - if zval and #zval > 0 then - zone = fw:add_zone(zval) - end - end - end - - local wdev = nw:get_wifidev(m.hidden.device) - - wdev:set("disabled", false) - wdev:set("channel", m.hidden.channel) - - if replace:formvalue(section) then - local n - for _, n in ipairs(wdev:get_wifinets()) do - wdev:del_wifinet(n) - end - end - - local wconf = { - device = m.hidden.device, - ssid = m.hidden.join, - mode = (m.hidden.mode == "Ad-Hoc" and "adhoc" or "sta") - } - - if m.hidden.wep == "1" then - wconf.encryption = "wep-open" - wconf.key = "1" - wconf.key1 = key and key:formvalue(section) or "" - elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then - wconf.encryption = (tonumber(m.hidden.wpa_version) or 0) >= 2 and "psk2" or "psk" - wconf.key = key and key:formvalue(section) or "" - else - wconf.encryption = "none" - end - - if wconf.mode == "adhoc" or wconf.mode == "sta" then - wconf.bssid = m.hidden.bssid - end - - local value = self:formvalue(section) - net = nw:add_network(value, { proto = "dhcp" }) - - if not net then - self.error = { [section] = "missing" } - else - wconf.network = net:name() - - local wnet = wdev:add_wifinet(wconf) - if wnet then - if zone then - fw:del_network(net:name()) - zone:add_network(net:name()) - end - - uci:save("wireless") - uci:save("network") - uci:save("firewall") - - luci.http.redirect(wnet:adminlink()) - end - end -end - -if has_firewall then - function fwzone.cfgvalue(self, section) - self.iface = section - local z = fw:get_zone_by_network(section) - return z and z:name() - end -end - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_status/processes.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_status/processes.lua deleted file mode 100644 index 0a6e48fd8e..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_status/processes.lua +++ /dev/null @@ -1,34 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -f = SimpleForm("processes", translate("Processes"), translate("This list gives an overview over currently running system processes and their status.")) -f.reset = false -f.submit = false - -t = f:section(Table, luci.sys.process.list()) -t:option(DummyValue, "PID", translate("PID")) -t:option(DummyValue, "USER", translate("Owner")) -t:option(DummyValue, "COMMAND", translate("Command")) -t:option(DummyValue, "%CPU", translate("CPU usage (%)")) -t:option(DummyValue, "%MEM", translate("Memory usage (%)")) - -hup = t:option(Button, "_hup", translate("Hang Up")) -hup.inputstyle = "reload" -function hup.write(self, section) - null, self.tag_error[section] = luci.sys.process.signal(section, 1) -end - -term = t:option(Button, "_term", translate("Terminate")) -term.inputstyle = "remove" -function term.write(self, section) - null, self.tag_error[section] = luci.sys.process.signal(section, 15) -end - -kill = t:option(Button, "_kill", translate("Kill")) -kill.inputstyle = "reset" -function kill.write(self, section) - null, self.tag_error[section] = luci.sys.process.signal(section, 9) -end - -return f \ No newline at end of file diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/admin.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/admin.lua deleted file mode 100644 index 493a735bde..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/admin.lua +++ /dev/null @@ -1,121 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" - -m = Map("system", translate("Router Password"), - translate("Changes the administrator password for accessing the device")) - -s = m:section(TypedSection, "_dummy", "") -s.addremove = false -s.anonymous = true - -pw1 = s:option(Value, "pw1", translate("Password")) -pw1.password = true - -pw2 = s:option(Value, "pw2", translate("Confirmation")) -pw2.password = true - -function s.cfgsections() - return { "_pass" } -end - -function m.parse(map) - local v1 = pw1:formvalue("_pass") - local v2 = pw2:formvalue("_pass") - - if v1 and v2 and #v1 > 0 and #v2 > 0 then - if v1 == v2 then - if luci.sys.user.setpasswd(luci.dispatcher.context.authuser, v1) == 0 then - m.message = translate("Password successfully changed!") - else - m.message = translate("Unknown Error, password not changed!") - end - else - m.message = translate("Given password confirmation did not match, password not changed!") - end - end - - Map.parse(map) -end - - -if fs.access("/etc/config/dropbear") then - -m2 = Map("dropbear", translate("SSH Access"), - translate("Dropbear offers SSH network shell access and an integrated SCP server")) - -s = m2:section(TypedSection, "dropbear", translate("Dropbear Instance")) -s.anonymous = true -s.addremove = true - - -ni = s:option(Value, "Interface", translate("Interface"), - translate("Listen only on the given interface or, if unspecified, on all")) - -ni.template = "cbi/network_netlist" -ni.nocreate = true -ni.unspecified = true - - -pt = s:option(Value, "Port", translate("Port"), - translate("Specifies the listening port of this Dropbear instance")) - -pt.datatype = "port" -pt.default = 22 - - -pa = s:option(Flag, "PasswordAuth", translate("Password authentication"), - translate("Allow SSH password authentication")) - -pa.enabled = "on" -pa.disabled = "off" -pa.default = pa.enabled -pa.rmempty = false - - -ra = s:option(Flag, "RootPasswordAuth", translate("Allow root logins with password"), - translate("Allow the root user to login with password")) - -ra.enabled = "on" -ra.disabled = "off" -ra.default = ra.enabled - - -gp = s:option(Flag, "GatewayPorts", translate("Gateway ports"), - translate("Allow remote hosts to connect to local SSH forwarded ports")) - -gp.enabled = "on" -gp.disabled = "off" -gp.default = gp.disabled - - -s2 = m2:section(TypedSection, "_dummy", translate("SSH-Keys"), - translate("Here you can paste public SSH-Keys (one per line) for SSH public-key authentication.")) -s2.addremove = false -s2.anonymous = true -s2.template = "cbi/tblsection" - -function s2.cfgsections() - return { "_keys" } -end - -keys = s2:option(TextValue, "_data", "") -keys.wrap = "off" -keys.rows = 3 -keys.rmempty = false - -function keys.cfgvalue() - return fs.readfile("/etc/dropbear/authorized_keys") or "" -end - -function keys.write(self, section, value) - if value then - fs.writefile("/etc/dropbear/authorized_keys", value:gsub("\r\n", "\n")) - end -end - -end - -return m, m2 diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/backupfiles.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/backupfiles.lua deleted file mode 100644 index ee2401e93d..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/backupfiles.lua +++ /dev/null @@ -1,80 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -if luci.http.formvalue("cbid.luci.1._list") then - luci.http.redirect(luci.dispatcher.build_url("admin/system/flashops/backupfiles") .. "?display=list") -elseif luci.http.formvalue("cbid.luci.1._edit") then - luci.http.redirect(luci.dispatcher.build_url("admin/system/flashops/backupfiles") .. "?display=edit") - return -end - -m = SimpleForm("luci", translate("Backup file list")) -m:append(Template("admin_system/backupfiles")) - -if luci.http.formvalue("display") ~= "list" then - f = m:section(SimpleSection, nil, translate("This is a list of shell glob patterns for matching files and directories to include during sysupgrade. Modified files in /etc/config/ and certain other configurations are automatically preserved.")) - - l = f:option(Button, "_list", translate("Show current backup file list")) - l.inputtitle = translate("Open list...") - l.inputstyle = "apply" - - c = f:option(TextValue, "_custom") - c.rmempty = false - c.cols = 70 - c.rows = 30 - - c.cfgvalue = function(self, section) - return nixio.fs.readfile("/etc/sysupgrade.conf") - end - - c.write = function(self, section, value) - value = value:gsub("\r\n?", "\n") - return nixio.fs.writefile("/etc/sysupgrade.conf", value) - end -else - m.submit = false - m.reset = false - - f = m:section(SimpleSection, nil, translate("Below is the determined list of files to backup. It consists of changed configuration files marked by opkg, essential base files and the user defined backup patterns.")) - - l = f:option(Button, "_edit", translate("Back to configuration")) - l.inputtitle = translate("Close list...") - l.inputstyle = "link" - - - d = f:option(DummyValue, "_detected") - d.rawhtml = true - d.cfgvalue = function(s) - local list = io.popen( - "( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' /etc/sysupgrade.conf " .. - "/lib/upgrade/keep.d/* 2>/dev/null) -type f 2>/dev/null; " .. - "opkg list-changed-conffiles ) | sort -u" - ) - - if list then - local files = { "
      " } - - while true do - local ln = list:read("*l") - if not ln then - break - else - files[#files+1] = "
    • " - files[#files+1] = luci.util.pcdata(ln) - files[#files+1] = "
    • " - end - end - - list:close() - files[#files+1] = "
    " - - return table.concat(files, "") - end - - return "" .. translate("No files found") .. "" - end - -end - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua deleted file mode 100644 index 6a81d7154e..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua +++ /dev/null @@ -1,27 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -m = Map("system", translate("Buttons"), - translate("This page allows the configuration of custom button actions")) - -s = m:section(TypedSection, "button", "") -s.anonymous = true -s.addremove = true - -s:option(Value, "button", translate("Name")) - -act = s:option(ListValue, "action", - translate("Action"), - translate("Specifies the button state to handle")) - -act:value("released") - -s:option(Value, "handler", - translate("Handler"), - translate("Path to executable which handles the button event")) - -min = s:option(Value, "min", translate("Minimum hold time")) -min.rmempty = true - -max = s:option(Value, "max", translate("Maximum hold time")) -max.rmempty = true diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua deleted file mode 100644 index 016a6199aa..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua +++ /dev/null @@ -1,32 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2013 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local cronfile = "/etc/crontabs/root" - -f = SimpleForm("crontab", translate("Scheduled Tasks"), - translate("This is the system crontab in which scheduled tasks can be defined.") .. - translate("
    Note: you need to manually restart the cron service if the " .. - "crontab file was empty before editing.")) - -t = f:field(TextValue, "crons") -t.rmempty = true -t.rows = 10 -function t.cfgvalue() - return fs.readfile(cronfile) or "" -end - -function f.handle(self, state, data) - if state == FORM_VALID then - if data.crons then - fs.writefile(cronfile, data.crons:gsub("\r\n", "\n")) - luci.sys.call("/usr/bin/crontab %q" % cronfile) - else - fs.writefile(cronfile, "") - end - end - return true -end - -return f diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua deleted file mode 100644 index fd466d5c26..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua +++ /dev/null @@ -1,270 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -require("luci.tools.webadmin") - -local fs = require "nixio.fs" -local util = require "nixio.util" -local tp = require "luci.template.parser" - -local block = io.popen("block info", "r") -local ln, dev, devices = nil, nil, {} - -repeat - ln = block:read("*l") - dev = ln and ln:match("^/dev/(.-):") - - if dev then - local e, s, key, val = { } - - for key, val in ln:gmatch([[(%w+)="(.-)"]]) do - e[key:lower()] = val - devices[val] = e - end - - s = tonumber((fs.readfile("/sys/class/block/%s/size" % dev))) - - e.dev = "/dev/%s" % dev - e.size = s and math.floor(s / 2048) - - devices[e.dev] = e - end -until not ln - -block:close() - -m = Map("fstab", translate("Mount Points")) -s = m:section(TypedSection, "global", translate("Global Settings")) -s.addremove = false -s.anonymous = true - -detect = s:option(Button, "block_detect", translate("Generate Config"), translate("Find all currently attached filesystems and swap and replace configuration with defaults based on what was detected")) -detect.inputstyle = "reload" - -detect.write = function(self, section) - luci.sys.call("block detect >/etc/config/fstab") - luci.http.redirect(luci.dispatcher.build_url("admin/system", "fstab")) -end - -o = s:option(Flag, "anon_swap", translate("Anonymous Swap"), translate("Mount swap not specifically configured")) -o.default = o.disabled -o.rmempty = false - -o = s:option(Flag, "anon_mount", translate("Anonymous Mount"), translate("Mount filesystems not specifically configured")) -o.default = o.disabled -o.rmempty = false - -o = s:option(Flag, "auto_swap", translate("Automount Swap"), translate("Automatically mount swap on hotplug")) -o.default = o.enabled -o.rmempty = false - -o = s:option(Flag, "auto_mount", translate("Automount Filesystem"), translate("Automatically mount filesystems on hotplug")) -o.default = o.enabled -o.rmempty = false - -o = s:option(Flag, "check_fs", translate("Check fileystems before mount"), translate("Automatically check filesystem for errors before mounting")) -o.default = o.disabled -o.rmempty = false - -local mounts = luci.sys.mounts() -local non_system_mounts = {} -for rawmount, val in pairs(mounts) do - if (string.find(val.mountpoint, "/tmp/.jail") == nil) then - repeat - val.umount = false - if (val.mountpoint == "/") then - break - elseif (val.mountpoint == "/overlay") then - break - elseif (val.mountpoint == "/rom") then - break - elseif (val.mountpoint == "/tmp") then - break - elseif (val.mountpoint == "/tmp/shm") then - break - elseif (val.mountpoint == "/tmp/upgrade") then - break - elseif (val.mountpoint == "/dev") then - break - end - val.umount = true - until true - non_system_mounts[rawmount] = val - end -end - -v = m:section(Table, non_system_mounts, translate("Mounted file systems")) - -fs = v:option(DummyValue, "fs", translate("Filesystem")) - -mp = v:option(DummyValue, "mountpoint", translate("Mount Point")) - -avail = v:option(DummyValue, "avail", translate("Available")) -function avail.cfgvalue(self, section) - return luci.tools.webadmin.byte_format( - ( tonumber(mounts[section].available) or 0 ) * 1024 - ) .. " / " .. luci.tools.webadmin.byte_format( - ( tonumber(mounts[section].blocks) or 0 ) * 1024 - ) -end - -used = v:option(DummyValue, "used", translate("Used")) -function used.cfgvalue(self, section) - return ( mounts[section].percent or "0%" ) .. " (" .. - luci.tools.webadmin.byte_format( - ( tonumber(mounts[section].used) or 0 ) * 1024 - ) .. ")" -end - -unmount = v:option(Button, "unmount", translate("Unmount")) -unmount.render = function(self, section, scope) - if non_system_mounts[section].umount then - self.title = translate("Unmount") - self.inputstyle = "remove" - Button.render(self, section, scope) - end -end - -unmount.write = function(self, section) - if non_system_mounts[section].umount then - luci.sys.call("/bin/umount '%s'" % luci.util.shellstartsqescape(non_system_mounts[section].mountpoint)) - return luci.http.redirect(luci.dispatcher.build_url("admin/system", "fstab")) - end -end - -mount = m:section(TypedSection, "mount", translate("Mount Points"), translate("Mount Points define at which point a memory device will be attached to the filesystem")) -mount.anonymous = true -mount.addremove = true -mount.template = "cbi/tblsection" -mount.extedit = luci.dispatcher.build_url("admin/system/fstab/mount/%s") - -mount.create = function(...) - local sid = TypedSection.create(...) - if sid then - luci.http.redirect(mount.extedit % sid) - return - end -end - - -mount:option(Flag, "enabled", translate("Enabled")).rmempty = false - -dev = mount:option(DummyValue, "device", translate("Device")) -dev.rawhtml = true -dev.cfgvalue = function(self, section) - local v, e - - v = m.uci:get("fstab", section, "uuid") - e = v and devices[v:lower()] - if v and e and e.size then - return "UUID: %s (%s, %d MB)" %{ tp.pcdata(v), e.dev, e.size } - elseif v and e then - return "UUID: %s (%s)" %{ tp.pcdata(v), e.dev } - elseif v then - return "UUID: %s (%s)" %{ tp.pcdata(v), translate("not present") } - end - - v = m.uci:get("fstab", section, "label") - e = v and devices[v] - if v and e and e.size then - return "Label: %s (%s, %d MB)" %{ tp.pcdata(v), e.dev, e.size } - elseif v and e then - return "Label: %s (%s)" %{ tp.pcdata(v), e.dev } - elseif v then - return "Label: %s (%s)" %{ tp.pcdata(v), translate("not present") } - end - - v = Value.cfgvalue(self, section) or "?" - e = v and devices[v] - if v and e and e.size then - return "%s (%d MB)" %{ tp.pcdata(v), e.size } - elseif v and e then - return tp.pcdata(v) - elseif v then - return "%s (%s)" %{ tp.pcdata(v), translate("not present") } - end -end - -mp = mount:option(DummyValue, "target", translate("Mount Point")) -mp.cfgvalue = function(self, section) - if m.uci:get("fstab", section, "is_rootfs") == "1" then - return "/overlay" - else - return Value.cfgvalue(self, section) or "?" - end -end - -fs = mount:option(DummyValue, "fstype", translate("Filesystem")) -fs.cfgvalue = function(self, section) - local v, e - - v = m.uci:get("fstab", section, "uuid") - v = v and v:lower() or m.uci:get("fstab", section, "label") - v = v or m.uci:get("fstab", section, "device") - - e = v and devices[v] - - return e and e.type or m.uci:get("fstab", section, "fstype") or "?" -end - -op = mount:option(DummyValue, "options", translate("Options")) -op.cfgvalue = function(self, section) - return Value.cfgvalue(self, section) or "defaults" -end - -rf = mount:option(DummyValue, "is_rootfs", translate("Root")) -rf.cfgvalue = function(self, section) - local target = m.uci:get("fstab", section, "target") - if target == "/" then - return translate("yes") - elseif target == "/overlay" then - return translate("overlay") - else - return translate("no") - end -end - -ck = mount:option(DummyValue, "enabled_fsck", translate("Check")) -ck.cfgvalue = function(self, section) - return Value.cfgvalue(self, section) == "1" - and translate("yes") or translate("no") -end - - -swap = m:section(TypedSection, "swap", "SWAP", translate("If your physical memory is insufficient unused data can be temporarily swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very slow process as the swap-device cannot be accessed with the high datarates of the RAM.")) -swap.anonymous = true -swap.addremove = true -swap.template = "cbi/tblsection" -swap.extedit = luci.dispatcher.build_url("admin/system/fstab/swap/%s") - -swap.create = function(...) - local sid = TypedSection.create(...) - if sid then - luci.http.redirect(swap.extedit % sid) - return - end -end - - -swap:option(Flag, "enabled", translate("Enabled")).rmempty = false - -dev = swap:option(DummyValue, "device", translate("Device")) -dev.cfgvalue = function(self, section) - local v - - v = m.uci:get("fstab", section, "uuid") - if v then return "UUID: %s" % v end - - v = m.uci:get("fstab", section, "label") - if v then return "Label: %s" % v end - - v = Value.cfgvalue(self, section) or "?" - e = v and devices[v] - if v and e and e.size then - return "%s (%s MB)" % {v, e.size} - else - return v - end -end - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/mount.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/mount.lua deleted file mode 100644 index a85872afad..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/mount.lua +++ /dev/null @@ -1,151 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local util = require "nixio.util" - -local has_fscheck = fs.access("/usr/sbin/e2fsck") - -local block = io.popen("block info", "r") -local ln, dev, devices = nil, nil, {} - -repeat - ln = block:read("*l") - dev = ln and ln:match("^/dev/(.-):") - - if dev then - local e, s, key, val = { } - - for key, val in ln:gmatch([[(%w+)="(.-)"]]) do - e[key:lower()] = val - end - - s = tonumber((fs.readfile("/sys/class/block/%s/size" % dev))) - - e.dev = "/dev/%s" % dev - e.size = s and math.floor(s / 2048) - - devices[#devices+1] = e - end -until not ln - -block:close() - - -m = Map("fstab", translate("Mount Points - Mount Entry")) -m.redirect = luci.dispatcher.build_url("admin/system/fstab") - -if not arg[1] or m.uci:get("fstab", arg[1]) ~= "mount" then - luci.http.redirect(m.redirect) - return -end - - - -mount = m:section(NamedSection, arg[1], "mount", translate("Mount Entry")) -mount.anonymous = true -mount.addremove = false - -mount:tab("general", translate("General Settings")) -mount:tab("advanced", translate("Advanced Settings")) - - -mount:taboption("general", Flag, "enabled", translate("Enable this mount")).rmempty = false - - -o = mount:taboption("general", Value, "uuid", translate("UUID"), - translate("If specified, mount the device by its UUID instead of a fixed device node")) - -o:value("", translate("-- match by uuid --")) - -for i, d in ipairs(devices) do - if d.uuid and d.size then - o:value(d.uuid, "%s (%s, %d MB)" %{ d.uuid, d.dev, d.size }) - elseif d.uuid then - o:value(d.uuid, "%s (%s)" %{ d.uuid, d.dev }) - end -end - - -o = mount:taboption("general", Value, "label", translate("Label"), - translate("If specified, mount the device by the partition label instead of a fixed device node")) - -o:value("", translate("-- match by label --")) - -o:depends("uuid", "") - -for i, d in ipairs(devices) do - if d.label and d.size then - o:value(d.label, "%s (%s, %d MB)" %{ d.label, d.dev, d.size }) - elseif d.label then - o:value(d.label, "%s (%s)" %{ d.label, d.dev }) - end -end - - -o = mount:taboption("general", Value, "device", translate("Device"), - translate("The device file of the memory or partition (e.g. /dev/sda1)")) - -o:value("", translate("-- match by device --")) - -o:depends({ uuid = "", label = "" }) - -for i, d in ipairs(devices) do - if d.size then - o:value(d.dev, "%s (%d MB)" %{ d.dev, d.size }) - else - o:value(d.dev) - end -end - - -o = mount:taboption("general", Value, "target", translate("Mount point"), - translate("Specifies the directory the device is attached to")) - -o:value("/", translate("Use as root filesystem (/)")) -o:value("/overlay", translate("Use as external overlay (/overlay)")) - - -o = mount:taboption("general", DummyValue, "__notice", translate("Root preparation")) -o:depends("target", "/") -o.rawhtml = true -o.default = [[ -

    %s

    mkdir -p /tmp/introot
    -mkdir -p /tmp/extroot
    -mount --bind / /tmp/introot
    -mount /dev/sda1 /tmp/extroot
    -tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
    -umount /tmp/introot
    -umount /tmp/extroot
    -]] %{ - translate("Make sure to clone the root filesystem using something like the commands below:"), - -} - - -o = mount:taboption("advanced", Value, "fstype", translate("Filesystem"), - translate("The filesystem that was used to format the memory (e.g. ext3)")) - -o:value("", "auto") - -local fs -for fs in io.lines("/proc/filesystems") do - fs = fs:match("%S+") - if fs ~= "nodev" then - o:value(fs) - end -end - - -o = mount:taboption("advanced", Value, "options", translate("Mount options"), - translate("See \"mount\" manpage for details")) - -o.placeholder = "defaults" - - -if has_fscheck then - o = mount:taboption("advanced", Flag, "enabled_fsck", translate("Run filesystem check"), - translate("Run a filesystem check before mounting the device")) -end - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/swap.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/swap.lua deleted file mode 100644 index 82468d5fcc..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/swap.lua +++ /dev/null @@ -1,54 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local util = require "nixio.util" - -local devices = {} -util.consume((fs.glob("/dev/sd*")), devices) -util.consume((fs.glob("/dev/hd*")), devices) -util.consume((fs.glob("/dev/scd*")), devices) -util.consume((fs.glob("/dev/mmc*")), devices) - -local size = {} -for i, dev in ipairs(devices) do - local s = tonumber((fs.readfile("/sys/class/block/%s/size" % dev:sub(6)))) - size[dev] = s and math.floor(s / 2048) -end - - -m = Map("fstab", translate("Mount Points - Swap Entry")) -m.redirect = luci.dispatcher.build_url("admin/system/fstab") - -if not arg[1] or m.uci:get("fstab", arg[1]) ~= "swap" then - luci.http.redirect(m.redirect) - return -end - - -mount = m:section(NamedSection, arg[1], "swap", translate("Swap Entry")) -mount.anonymous = true -mount.addremove = false - -mount:tab("general", translate("General Settings")) -mount:tab("advanced", translate("Advanced Settings")) - - -mount:taboption("general", Flag, "enabled", translate("Enable this swap")).rmempty = false - - -o = mount:taboption("general", Value, "device", translate("Device"), - translate("The device file of the memory or partition (e.g. /dev/sda1)")) - -for i, d in ipairs(devices) do - o:value(d, size[d] and "%s (%s MB)" % {d, size[d]}) -end - -o = mount:taboption("advanced", Value, "uuid", translate("UUID"), - translate("If specified, mount the device by its UUID instead of a fixed device node")) - -o = mount:taboption("advanced", Value, "label", translate("Label"), - translate("If specified, mount the device by the partition label instead of a fixed device node")) - - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua deleted file mode 100644 index 7c6d7e1c66..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua +++ /dev/null @@ -1,64 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ipkgfile = "/etc/opkg.conf" -local distfeeds = "/etc/opkg/distfeeds.conf" -local customfeeds = "/etc/opkg/customfeeds.conf" - -f = SimpleForm("ipkgconf", translate("OPKG-Configuration"), translate("General options for opkg")) - -f:append(Template("admin_system/ipkg")) - -t = f:field(TextValue, "lines") -t.wrap = "off" -t.rows = 10 -function t.cfgvalue() - return nixio.fs.readfile(ipkgfile) or "" -end - -function t.write(self, section, data) - return nixio.fs.writefile(ipkgfile, data:gsub("\r\n", "\n")) -end - -function f.handle(self, state, data) - return true -end - -g = SimpleForm("distfeedconf", translate("Distribution feeds"), - translate("Build/distribution specific feed definitions. This file will NOT be preserved in any sysupgrade.")) - -d = g:field(TextValue, "lines2") -d.wrap = "off" -d.rows = 10 -function d.cfgvalue() - return nixio.fs.readfile(distfeeds) or "" -end - -function d.write(self, section, data) - return nixio.fs.writefile(distfeeds, data:gsub("\r\n", "\n")) -end - -function g.handle(self, state, data) - return true -end - -h = SimpleForm("customfeedconf", translate("Custom feeds"), - translate("Custom feed definitions, e.g. private feeds. This file can be preserved in a sysupgrade.")) - -c = h:field(TextValue, "lines3") -c.wrap = "off" -c.rows = 10 -function c.cfgvalue() - return nixio.fs.readfile(customfeeds) or "" -end - -function c.write(self, section, data) - return nixio.fs.writefile(customfeeds, data:gsub("\r\n", "\n")) -end - -function h.handle(self, state, data) - return true -end - -return f, g, h diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua deleted file mode 100644 index 74e2f1a19d..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua +++ /dev/null @@ -1,155 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -m = Map("system", translate("LED Configuration"), translate("Customizes the behaviour of the device LEDs if possible.")) - -local sysfs_path = "/sys/class/leds/" -local leds = {} - -local fs = require "nixio.fs" -local nu = require "nixio.util" -local util = require "luci.util" - -if fs.access(sysfs_path) then - leds = nu.consume((fs.dir(sysfs_path))) -end - -if #leds == 0 then - return m -end - - -s = m:section(TypedSection, "led", "") -s.anonymous = true -s.addremove = true - -function s.parse(self, ...) - TypedSection.parse(self, ...) - os.execute("/etc/init.d/led enable") -end - - -s:option(Value, "name", translate("Name")) - - -sysfs = s:option(ListValue, "sysfs", translate("LED Name")) -for k, v in ipairs(leds) do - sysfs:value(v) -end - -s:option(Flag, "default", translate("Default state")).rmempty = false - - -trigger = s:option(ListValue, "trigger", translate("Trigger")) - -local triggers = fs.readfile(sysfs_path .. leds[1] .. "/trigger") -for t in triggers:gmatch("[%w-]+") do - trigger:value(t, translate(t:gsub("-", ""))) -end - - -delayon = s:option(Value, "delayon", translate ("On-State Delay")) -delayon:depends("trigger", "timer") - -delayoff = s:option(Value, "delayoff", translate ("Off-State Delay")) -delayoff:depends("trigger", "timer") - - -dev = s:option(ListValue, "_net_dev", translate("Device")) -dev.rmempty = true -dev:value("") -dev:depends("trigger", "netdev") - -function dev.cfgvalue(self, section) - return m.uci:get("system", section, "dev") -end - -function dev.write(self, section, value) - m.uci:set("system", section, "dev", value) -end - -function dev.remove(self, section) - local t = trigger:formvalue(section) - if t ~= "netdev" and t ~= "usbdev" then - m.uci:delete("system", section, "dev") - end -end - -for k, v in pairs(luci.sys.net.devices()) do - if v ~= "lo" then - dev:value(v) - end -end - - -mode = s:option(MultiValue, "mode", translate("Trigger Mode")) -mode.rmempty = true -mode:depends("trigger", "netdev") -mode:value("link", translate("Link On")) -mode:value("tx", translate("Transmit")) -mode:value("rx", translate("Receive")) - - -usbdev = s:option(ListValue, "_usb_dev", translate("USB Device")) -usbdev:depends("trigger", "usbdev") -usbdev.rmempty = true -usbdev:value("") - -function usbdev.cfgvalue(self, section) - return m.uci:get("system", section, "dev") -end - -function usbdev.write(self, section, value) - m.uci:set("system", section, "dev", value) -end - -function usbdev.remove(self, section) - local t = trigger:formvalue(section) - if t ~= "netdev" and t ~= "usbdev" then - m.uci:delete("system", section, "dev") - end -end - - -usbport = s:option(MultiValue, "port", translate("USB Ports")) -usbport:depends("trigger", "usbport") -usbport.rmempty = true -usbport.widget = "checkbox" -usbport.cast = "table" -usbport.size = 1 - -function usbport.valuelist(self, section) - local port, ports = nil, {} - for port in util.imatch(m.uci:get("system", section, "port")) do - local b, n = port:match("^usb(%d+)-port(%d+)$") - if not (b and n) then - b, n = port:match("^(%d+)-(%d+)$") - end - if b and n then - ports[#ports+1] = "usb%u-port%u" %{ tonumber(b), tonumber(n) } - end - end - return ports -end - -function usbport.validate(self, value) - return type(value) == "string" and { value } or value -end - - -for p in nixio.fs.glob("/sys/bus/usb/devices/[0-9]*/manufacturer") do - local id = p:match("%d+-%d+") - local mf = nixio.fs.readfile("/sys/bus/usb/devices/" .. id .. "/manufacturer") or "?" - local pr = nixio.fs.readfile("/sys/bus/usb/devices/" .. id .. "/product") or "?" - usbdev:value(id, "%s (%s - %s)" %{ id, mf, pr }) -end - -for p in nixio.fs.glob("/sys/bus/usb/devices/*/usb[0-9]*-port[0-9]*") do - local bus, port = p:match("usb(%d+)-port(%d+)") - if bus and port then - usbport:value("usb%u-port%u" %{ tonumber(bus), tonumber(port) }, - "Hub %u, Port %u" %{ tonumber(bus), tonumber(port) }) - end -end - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/startup.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/startup.lua deleted file mode 100644 index 9e19ac50a2..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/startup.lua +++ /dev/null @@ -1,97 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2012 Jo-Philipp Wich --- Copyright 2010 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local sys = require "luci.sys" - -local inits = { } - -for _, name in ipairs(sys.init.names()) do - local index = sys.init.index(name) - local enabled = sys.init.enabled(name) - - if index < 255 then - inits["%02i.%s" % { index, name }] = { - name = name, - index = tostring(index), - enabled = enabled - } - end -end - - -m = SimpleForm("initmgr", translate("Initscripts"), translate("You can enable or disable installed init scripts here. Changes will applied after a device reboot.
    Warning: If you disable essential init scripts like \"network\", your device might become inaccessible!")) -m.reset = false -m.submit = false - - -s = m:section(Table, inits) - -i = s:option(DummyValue, "index", translate("Start priority")) -n = s:option(DummyValue, "name", translate("Initscript")) - - -e = s:option(Button, "endisable", translate("Enable/Disable")) - -e.render = function(self, section, scope) - if inits[section].enabled then - self.title = translate("Enabled") - self.inputstyle = "save" - else - self.title = translate("Disabled") - self.inputstyle = "reset" - end - - Button.render(self, section, scope) -end - -e.write = function(self, section) - if inits[section].enabled then - inits[section].enabled = false - return sys.init.disable(inits[section].name) - else - inits[section].enabled = true - return sys.init.enable(inits[section].name) - end -end - - -start = s:option(Button, "start", translate("Start")) -start.inputstyle = "apply" -start.write = function(self, section) - sys.call("/etc/init.d/%s %s >/dev/null" %{ inits[section].name, self.option }) -end - -restart = s:option(Button, "restart", translate("Restart")) -restart.inputstyle = "reload" -restart.write = start.write - -stop = s:option(Button, "stop", translate("Stop")) -stop.inputstyle = "remove" -stop.write = start.write - - - -f = SimpleForm("rc", translate("Local Startup"), - translate("This is the content of /etc/rc.local. Insert your own commands here (in front of 'exit 0') to execute them at the end of the boot process.")) - -t = f:field(TextValue, "rcs") -t.rmempty = true -t.rows = 20 - -function t.cfgvalue() - return fs.readfile("/etc/rc.local") or "" -end - -function f.handle(self, state, data) - if state == FORM_VALID then - if data.rcs then - fs.writefile("/etc/rc.local", data.rcs:gsub("\r\n", "\n")) - end - end - return true -end - -return m, f diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua deleted file mode 100644 index c7fdfcddba..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua +++ /dev/null @@ -1,224 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sys = require "luci.sys" -local zones = require "luci.sys.zoneinfo" -local fs = require "nixio.fs" -local conf = require "luci.config" - -local m, s, o -local has_ntpd = fs.access("/usr/sbin/ntpd") - -m = Map("system", translate("System"), translate("Here you can configure the basic aspects of your device like its hostname or the timezone.")) -m:chain("luci") - - -s = m:section(TypedSection, "system", translate("System Properties")) -s.anonymous = true -s.addremove = false - -s:tab("general", translate("General Settings")) -s:tab("logging", translate("Logging")) -s:tab("language", translate("Language and Style")) - - --- --- System Properties --- - -o = s:taboption("general", DummyValue, "_systime", translate("Local Time")) -o.template = "admin_system/clock_status" - - -o = s:taboption("general", Value, "hostname", translate("Hostname")) -o.datatype = "hostname" - -function o.write(self, section, value) - Value.write(self, section, value) - sys.hostname(value) -end - - -o = s:taboption("general", ListValue, "zonename", translate("Timezone")) -o:value("UTC") - -for i, zone in ipairs(zones.TZ) do - o:value(zone[1]) -end - -function o.write(self, section, value) - local function lookup_zone(title) - for _, zone in ipairs(zones.TZ) do - if zone[1] == title then return zone[2] end - end - end - - AbstractValue.write(self, section, value) - local timezone = lookup_zone(value) or "GMT0" - self.map.uci:set("system", section, "timezone", timezone) - fs.writefile("/etc/TZ", timezone .. "\n") -end - - --- --- Logging --- - -o = s:taboption("logging", Value, "log_size", translate("System log buffer size"), "kiB") -o.optional = true -o.placeholder = 16 -o.datatype = "uinteger" - -o = s:taboption("logging", Value, "log_ip", translate("External system log server")) -o.optional = true -o.placeholder = "0.0.0.0" -o.datatype = "ip4addr" - -o = s:taboption("logging", Value, "log_port", translate("External system log server port")) -o.optional = true -o.placeholder = 514 -o.datatype = "port" - -o = s:taboption("logging", ListValue, "log_proto", translate("External system log server protocol")) -o:value("udp", "UDP") -o:value("tcp", "TCP") - -o = s:taboption("logging", Value, "log_file", translate("Write system log to file")) -o.optional = true -o.placeholder = "/tmp/system.log" - -o = s:taboption("logging", ListValue, "conloglevel", translate("Log output level")) -o:value(8, translate("Debug")) -o:value(7, translate("Info")) -o:value(6, translate("Notice")) -o:value(5, translate("Warning")) -o:value(4, translate("Error")) -o:value(3, translate("Critical")) -o:value(2, translate("Alert")) -o:value(1, translate("Emergency")) - -o = s:taboption("logging", ListValue, "cronloglevel", translate("Cron Log Level")) -o.default = 8 -o:value(5, translate("Debug")) -o:value(8, translate("Normal")) -o:value(9, translate("Warning")) - - --- --- Langauge & Style --- - -o = s:taboption("language", ListValue, "_lang", translate("Language")) -o:value("auto") - -local i18ndir = luci.i18n.i18ndir .. "base." -for k, v in luci.util.kspairs(conf.languages) do - local file = i18ndir .. k:gsub("_", "-") - if k:sub(1, 1) ~= "." and fs.access(file .. ".lmo") then - o:value(k, v) - end -end - -function o.cfgvalue(...) - return m.uci:get("luci", "main", "lang") -end - -function o.write(self, section, value) - m.uci:set("luci", "main", "lang", value) -end - - -o = s:taboption("language", ListValue, "_mediaurlbase", translate("Design")) -for k, v in pairs(conf.themes) do - if k:sub(1, 1) ~= "." then - o:value(v, k) - end -end - -function o.cfgvalue(...) - return m.uci:get("luci", "main", "mediaurlbase") -end - -function o.write(self, section, value) - m.uci:set("luci", "main", "mediaurlbase", value) -end - - --- --- NTP --- - -if has_ntpd then - - -- timeserver setup was requested, create section and reload page - if m:formvalue("cbid.system._timeserver._enable") then - m.uci:section("system", "timeserver", "ntp", - { - server = { "0.openwrt.pool.ntp.org", "1.openwrt.pool.ntp.org", "2.openwrt.pool.ntp.org", "3.openwrt.pool.ntp.org" } - } - ) - - m.uci:save("system") - luci.http.redirect(luci.dispatcher.build_url("admin/system", arg[1])) - return - end - - local has_section = false - m.uci:foreach("system", "timeserver", - function(s) - has_section = true - return false - end) - - if not has_section then - - s = m:section(TypedSection, "timeserver", translate("Time Synchronization")) - s.anonymous = true - s.cfgsections = function() return { "_timeserver" } end - - x = s:option(Button, "_enable") - x.title = translate("Time Synchronization is not configured yet.") - x.inputtitle = translate("Set up Time Synchronization") - x.inputstyle = "apply" - - else - - s = m:section(TypedSection, "timeserver", translate("Time Synchronization")) - s.anonymous = true - s.addremove = false - - o = s:option(Flag, "enable", translate("Enable NTP client")) - o.rmempty = false - - function o.cfgvalue(self) - return sys.init.enabled("sysntpd") - and self.enabled or self.disabled - end - - function o.write(self, section, value) - if value == self.enabled then - sys.init.enable("sysntpd") - sys.call("env -i /etc/init.d/sysntpd start >/dev/null") - else - sys.call("env -i /etc/init.d/sysntpd stop >/dev/null") - sys.init.disable("sysntpd") - end - end - - - o = s:option(Flag, "enable_server", translate("Provide NTP server")) - o:depends("enable", "1") - - - o = s:option(DynamicList, "server", translate("NTP server candidates")) - o.datatype = "host(0)" - o:depends("enable", "1") - - -- retain server list even if disabled - function o.remove() end - - end -end - -return m diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm deleted file mode 100644 index f4adb26069..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm +++ /dev/null @@ -1,115 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<% -local fs = require "nixio.fs" -local has_ping6 = fs.access("/bin/ping6") or fs.access("/usr/bin/ping6") -local has_traceroute6 = fs.access("/usr/bin/traceroute6") - -local dns_host = luci.config.diag and luci.config.diag.dns or "dev.openwrt.org" -local ping_host = luci.config.diag and luci.config.diag.ping or "dev.openwrt.org" -local route_host = luci.config.diag and luci.config.diag.route or "dev.openwrt.org" -%> - - - - -
    -
    -

    <%:Diagnostics%>

    - -
    - <%:Network Utilities%> - -
    - -
    -
    - <% if has_ping6 then %> - - - <% else %> - - <% end %> -
    - -
    -
    - <% if has_traceroute6 then %> - - - <% else %> - - <% end %> - <% if not has_traceroute6 then %> -

     

    -

    <%:Install iputils-traceroute6 for IPv6 traceroute%>

    - <% end %> -
    - -
    -
    - -
    - -

    - -
    -
    - - -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview.htm deleted file mode 100644 index 2512a35b3c..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_overview.htm +++ /dev/null @@ -1,254 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - local ntm = require "luci.model.network".init() - local fwm = require "luci.model.firewall".init() - - local net - local ifaces = { } - local netlist = { } - for _, net in ipairs(ntm:get_networks()) do - if net:name() ~= "loopback" then - local z = fwm:get_zone_by_network(net:name()) - ifaces[#ifaces+1] = net:name() - netlist[#netlist+1] = { - net:name(), z and z:name() or "-", z - } - end - end - - table.sort(netlist, - function(a, b) - if a[2] ~= b[2] then - return a[2] < b[2] - else - return a[1] < b[1] - end - end) --%> - - - - - - -
    -
    - <%:Interface Overview%> - - - - - - - - <% - for i, net in ipairs(netlist) do - local z = net[3] - local c = z and z:get_color() or "#EEEEEE" - local t = z and translate("Part of zone %q" % z:name()) or translate("No zone assigned") - %> - - - - - - <% end %> -
    <%:Network%><%:Status%><%:Actions%>
    -
    -
    - <%=net[1]:upper()%> -
    -
    -
    - ? -
    -
    -
    - <%:Collecting data...%> - - - - '" title="<%:Edit this interface%>" value="<%:Edit%>" id="<%=net[1]%>-ifc-edit" /> - -
    - - '" /> -
    -
    diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm deleted file mode 100644 index b15dd13f39..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm +++ /dev/null @@ -1,87 +0,0 @@ -<%+cbi/valueheader%> - - - - - - - - - -
    -
    - ? -
    - <%:Collecting data...%> -
    - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm deleted file mode 100644 index b4baedff28..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm +++ /dev/null @@ -1,138 +0,0 @@ - - -
    - <%:Active DHCP Leases%> - - - - - - - - - - -
    <%:Hostname%><%:IPv4-Address%><%:MAC-Address%><%:Leasetime remaining%>

    <%:Collecting data...%>
    -
    - - diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/switch_status.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/switch_status.htm deleted file mode 100644 index 96fbffdb02..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/switch_status.htm +++ /dev/null @@ -1,44 +0,0 @@ - diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm deleted file mode 100644 index 3533c6fa4d..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm +++ /dev/null @@ -1,149 +0,0 @@ -<%# - Copyright 2009-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - - local sys = require "luci.sys" - local utl = require "luci.util" - - function guess_wifi_signal(info) - local scale = (100 / (info.quality_max or 100) * (info.quality or 0)) - local icon - - if not info.bssid or info.bssid == "00:00:00:00:00:00" then - icon = resource .. "/icons/signal-none.png" - elseif scale < 15 then - icon = resource .. "/icons/signal-0.png" - elseif scale < 35 then - icon = resource .. "/icons/signal-0-25.png" - elseif scale < 55 then - icon = resource .. "/icons/signal-25-50.png" - elseif scale < 75 then - icon = resource .. "/icons/signal-50-75.png" - else - icon = resource .. "/icons/signal-75-100.png" - end - - return icon - end - - function percent_wifi_signal(info) - local qc = info.quality or 0 - local qm = info.quality_max or 0 - - if info.bssid and qc > 0 and qm > 0 then - return math.floor((100 / qm) * qc) - else - return 0 - end - end - - function format_wifi_encryption(info) - if info.wep == true then - return "WEP" - elseif info.wpa > 0 then - return translatef("%s - %s", - table.concat(info.pair_ciphers, ", "), - table.concat(info.group_ciphers, ", "), - (info.wpa == 3) and translate("mixed WPA/WPA2") - or (info.wpa == 2 and "WPA2" or "WPA"), - table.concat(info.auth_suites, ", ") - ) - elseif info.enabled then - return "%s" % translate("unknown") - else - return "%s" % translate("open") - end - end - - local dev = luci.http.formvalue("device") - local iw = luci.sys.wifi.getiwinfo(dev) - - if not iw then - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless")) - return - end - - - function scanlist(times) - local i, k, v - local l = { } - local s = { } - - for i = 1, times do - for k, v in ipairs(iw.scanlist or { }) do - if not s[v.bssid] then - l[#l+1] = v - s[v.bssid] = true - end - end - end - - return l - end --%> - -<%+header%> - -

    <%:Join Network: Wireless Scan%>

    - -
    -
    - - - <% for i, net in ipairs(scanlist(3)) do net.encryption = net.encryption or { } %> - - - - - - <% end %> - -
    - -
    - <%=percent_wifi_signal(net)%>% -
    -
    - <%=net.ssid and utl.pcdata(net.ssid) or "%s" % translate("hidden")%>
    - Channel: <%=net.channel%> | - Mode: <%=net.mode%> | - BSSID: <%=net.bssid%> | - Encryption: <%=format_wifi_encryption(net.encryption)%> -
    -
    - - - - - - - - <% if net.encryption.wpa then %> - - <% for _, v in ipairs(net.encryption.auth_suites) do %> - <% end; for _, v in ipairs(net.encryption.group_ciphers) do %> - <% end; for _, v in ipairs(net.encryption.pair_ciphers) do %> - <% end; end %> - - " /> - - -
    -
    -
    -
    -
    -
    " method="get"> - -
    -
    - - - -
    -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm deleted file mode 100644 index 4465095ff2..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm +++ /dev/null @@ -1,466 +0,0 @@ -<%# - Copyright 2008-2009 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - - local ip = require "luci.ip" - local fs = require "nixio.fs" - local utl = require "luci.util" - local uci = require "luci.model.uci".cursor() - local ntm = require "luci.model.network" - - local has_iwinfo = pcall(require, "iwinfo") - - ntm.init(uci) - - function guess_wifi_hw(dev) - local bands = "" - local ifname = dev:name() - local name, idx = ifname:match("^([a-z]+)(%d+)") - idx = tonumber(idx) - - if has_iwinfo then - local bl = dev.iwinfo.hwmodelist - if bl and next(bl) then - if bl.a then bands = bands .. "a" end - if bl.b then bands = bands .. "b" end - if bl.g then bands = bands .. "g" end - if bl.n then bands = bands .. "n" end - if bl.ac then bands = bands .. "ac" end - end - - local hw = dev.iwinfo.hardware_name - if hw then - return "%s 802.11%s" %{ hw, bands } - end - end - - -- wl.o - if name == "wl" then - local name = translatef("Broadcom 802.11%s Wireless Controller", bands) - local nm = 0 - - local fd = nixio.open("/proc/bus/pci/devices", "r") - if fd then - local ln - for ln in fd:linesource() do - if ln:match("wl$") then - if nm == idx then - local version = ln:match("^%S+%s+%S%S%S%S([0-9a-f]+)") - name = translatef( - "Broadcom BCM%04x 802.11 Wireless Controller", - tonumber(version, 16) - ) - - break - else - nm = nm + 1 - end - end - end - fd:close() - end - - return name - - -- ralink - elseif name == "ra" then - return translatef("RaLink 802.11%s Wireless Controller", bands) - - -- hermes - elseif name == "eth" then - return translate("Hermes 802.11b Wireless Controller") - - -- hostap - elseif name == "wlan" and fs.stat("/proc/net/hostap/" .. ifname, "type") == "dir" then - return translate("Prism2/2.5/3 802.11b Wireless Controller") - - -- dunno yet - else - return translatef("Generic 802.11%s Wireless Controller", bands) - end - end - - local devices = ntm:get_wifidevs() - local netlist = { } - local netdevs = { } - - local dev - for _, dev in ipairs(devices) do - local net - for _, net in ipairs(dev:get_wifinets()) do - netlist[#netlist+1] = net:id() - netdevs[net:id()] = dev:name() - end - end --%> - -<%+header%> - -<% if not has_iwinfo then %> -
    - <%:Package libiwinfo required!%>
    - <%_The libiwinfo-lua package is not installed. You must install this component for working wireless configuration!%> -
    -<% end %> - - - - -

    <%:Wireless Overview%>

    - - - -
    - - <% for _, dev in ipairs(devices) do local nets = dev:get_wifinets() %> - -
    - - - - - - - - - - - <% if #nets > 0 then %> - <% for i, net in ipairs(nets) do %> - - - - - - - <% end %> - <% else %> - - - - - <% end %> - -
    - <%=guess_wifi_hw(dev)%> (<%=dev:name()%>)
    - -
    -
    - - - -
    -
    - - - -
    -
    - 0% - - <%:Collecting data...%> - - - - -
    - <%:No network configured on this device%> -
    -
    - - <% end %> - - -

    <%:Associated Stations%>

    - -
    - - - - - - - - - - - - -
    <%:SSID%><%:MAC-Address%><%:Host%><%:Signal%> / <%:Noise%><%:RX Rate%> / <%:TX Rate%>
    - <%:Collecting data...%> -
    -
    -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm deleted file mode 100644 index 04687f38e7..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm +++ /dev/null @@ -1,78 +0,0 @@ -<%+cbi/valueheader%> - - - - - - - - - -
    -
    - 0% -
    - <%:Collecting data...%> -
    - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm deleted file mode 100644 index 33bbee7843..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm +++ /dev/null @@ -1,301 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - local ntm = require "luci.model.network".init() - - local dev - local devices = { } - for _, dev in luci.util.vspairs(luci.sys.net.devices()) do - if dev ~= "lo" and not ntm:ignore_interface(dev) then - devices[#devices+1] = dev - end - end - - local curdev = luci.http.formvalue("dev") or devices[1] --%> - -<%+header%> - - - - -

    <%:Realtime Traffic%>

    - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    <%:Inbound:%>0 <%:kbit/s%>
    (0 <%:kB/s%>)
    <%:Average:%>0 <%:kbit/s%>
    (0 <%:kB/s%>)
    <%:Peak:%>0 <%:kbit/s%>
    (0 <%:kB/s%>)
    <%:Outbound:%>0 <%:kbit/s%>
    (0 <%:kB/s%>)
    <%:Average:%>0 <%:kbit/s%>
    (0 <%:kB/s%>)
    <%:Peak:%>0 <%:kbit/s%>
    (0 <%:kB/s%>)
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/connections.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/connections.htm deleted file mode 100644 index b7ebc41451..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/connections.htm +++ /dev/null @@ -1,376 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - - - - -

    <%:Realtime Connections%>

    - -
    <%:This page gives an overview over currently active network connections.%>
    - -
    - <%:Active Connections%> - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    <%:UDP:%>0<%:Average:%>0<%:Peak:%>0
    <%:TCP:%>0<%:Average:%>0<%:Peak:%>0
    <%:Other:%>0<%:Average:%>0<%:Peak:%>0
    -
    - -
    - - - - - - - - - - -
    <%:Network%><%:Protocol%><%:Source%><%:Destination%><%:Transfer%>
    <%:Collecting data...%>
    -
    -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/dmesg.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/dmesg.htm deleted file mode 100644 index 1a8770ef88..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/dmesg.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:Kernel Log%>

    -
    - -
    -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm deleted file mode 100644 index d29a894276..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm +++ /dev/null @@ -1,827 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2011 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% - local fs = require "nixio.fs" - local util = require "luci.util" - local stat = require "luci.tools.status" - local ver = require "luci.version" - - local has_ipv6 = fs.access("/proc/net/ipv6_route") - local has_dhcp = fs.access("/etc/config/dhcp") - local has_wifi = ((fs.stat("/etc/config/wireless", "size") or 0) > 0) - - local sysinfo = luci.util.ubus("system", "info") or { } - local boardinfo = luci.util.ubus("system", "board") or { } - local unameinfo = nixio.uname() or { } - - local meminfo = sysinfo.memory or { - total = 0, - free = 0, - buffered = 0, - shared = 0 - } - - local swapinfo = sysinfo.swap or { - total = 0, - free = 0 - } - - local has_dsl = fs.access("/etc/init.d/dsl_control") - - if luci.http.formvalue("status") == "1" then - local ntm = require "luci.model.network".init() - local wan = ntm:get_wannet() - local wan6 = ntm:get_wan6net() - - local conn_count = tonumber( - fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count")) or 0 - - local conn_max = tonumber(( - luci.sys.exec("sysctl net.nf_conntrack_max") or - luci.sys.exec("sysctl net.ipv4.netfilter.ip_conntrack_max") or - ""):match("%d+")) or 4096 - - local rv = { - uptime = sysinfo.uptime or 0, - localtime = os.date(), - loadavg = sysinfo.load or { 0, 0, 0 }, - memory = meminfo, - swap = swapinfo, - connmax = conn_max, - conncount = conn_count, - leases = stat.dhcp_leases(), - leases6 = stat.dhcp6_leases(), - wifinets = stat.wifi_networks() - } - - if wan then - rv.wan = { - ipaddr = wan:ipaddr(), - gwaddr = wan:gwaddr(), - netmask = wan:netmask(), - dns = wan:dnsaddrs(), - expires = wan:expires(), - uptime = wan:uptime(), - proto = wan:proto(), - ifname = wan:ifname(), - link = wan:adminlink() - } - end - - if wan6 then - rv.wan6 = { - ip6addr = wan6:ip6addr(), - gw6addr = wan6:gw6addr(), - dns = wan6:dns6addrs(), - ip6prefix = wan6:ip6prefix(), - uptime = wan6:uptime(), - proto = wan6:proto(), - ifname = wan6:ifname(), - link = wan6:adminlink() - } - end - - if has_dsl then - local dsl_stat = luci.sys.exec("/etc/init.d/dsl_control lucistat") - local dsl_func = loadstring(dsl_stat) - if dsl_func then - rv.dsl = dsl_func() - end - end - - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - - return - elseif luci.http.formvalue("hosts") == "1" then - luci.http.prepare_content("application/json") - luci.http.write_json(luci.sys.net.host_hints()) - - return - end --%> - -<%+header%> - - - - -

    <%:Status%>

    - -
    - <%:System%> - - - - - - - - - -
    <%:Hostname%><%=luci.sys.hostname() or "?"%>
    <%:Model%><%=pcdata(boardinfo.model or boardinfo.system or "?")%>
    <%:Firmware Version%> - <%=pcdata(ver.distname)%> <%=pcdata(ver.distversion)%> / - <%=pcdata(ver.luciname)%> (<%=pcdata(ver.luciversion)%>) -
    <%:Kernel Version%><%=unameinfo.release or "?"%>
    <%:Local Time%>-
    <%:Uptime%>-
    <%:Load Average%>-
    -
    - -
    - <%:Memory%> - - - - - -
    <%:Total Available%>-
    <%:Free%>-
    <%:Buffered%>-
    -
    - -<% if swapinfo.total > 0 then %> -
    - <%:Swap%> - - - - -
    <%:Total Available%>-
    <%:Free%>-
    -
    -<% end %> - -
    - <%:Network%> - - - - <% if has_ipv6 then %> - - <% end %> - -
    <%:IPv4 WAN Status%> - - - -

    ?
    <%:Collecting data...%>
    -
    <%:IPv6 WAN Status%> - - - -

    ?
    <%:Collecting data...%>
    -
    <%:Active Connections%>-
    -
    - -<% if has_dhcp then %> -
    - <%:DHCP Leases%> - - - - - - - - - - - -
    <%:Hostname%><%:IPv4-Address%><%:MAC-Address%><%:Leasetime remaining%>

    <%:Collecting data...%>
    -
    - - -<% end %> - -<% if has_dsl then %> -
    - <%:DSL%> - - -
    <%:DSL Status%> - - - -

    ?
    <%:Collecting data...%>
    -
    -
    -<% end %> - -<% if has_wifi then %> -
    - <%:Wireless%> - - - -
    <%:Collecting data...%>
    -
    - -
    - <%:Associated Stations%> - - - - - - - - - - - - - -
     <%:Network%><%:MAC-Address%><%:Host%><%:Signal%> / <%:Noise%><%:RX Rate%> / <%:TX Rate%>

    <%:Collecting data...%>
    -
    -<% end %> - -<%- - local incdir = util.libpath() .. "/view/admin_status/index/" - if fs.access(incdir) then - local inc - for inc in fs.dir(incdir) do - if inc:match("%.htm$") then - include("admin_status/index/" .. inc:gsub("%.htm$", "")) - end - end - end --%> - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm deleted file mode 100644 index 3f4b83b80b..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm +++ /dev/null @@ -1,156 +0,0 @@ -<%# - Copyright 2008-2009 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - - require "luci.sys.iptparser" - local wba = require "luci.tools.webadmin" - local fs = require "nixio.fs" - local io = require "io" - - local has_ip6tables = fs.access("/usr/sbin/ip6tables") - local mode = 4 - - if has_ip6tables then - mode = luci.dispatcher.context.requestpath - mode = tonumber(mode[#mode] ~= "iptables" and mode[#mode]) or 4 - end - - local ipt = luci.sys.iptparser.IptParser(mode) - - local rowcnt = 1 - function rowstyle() - rowcnt = rowcnt + 1 - return (rowcnt % 2) + 1 - end - - function link_target(t,c) - if ipt:is_custom_target(c) then - return '%s' %{ t:lower(), c, c } - end - return c - end - - function link_iface(i) - local net = wba.iface_get_network(i) - if net and i ~= "lo" then - return '%s' %{ - url("admin/network/network", net), i - } - - end - return i - end - - local tables = { "Filter", "NAT", "Mangle", "Raw" } - if mode == 6 then - tables = { "Filter", "Mangle", "Raw" } - local ok, lines = pcall(io.lines, "/proc/net/ip6_tables_names") - if ok and lines then - local line - for line in lines do - if line == "nat" then - tables = { "Filter", "NAT", "Mangle", "Raw" } - end - end - end - end --%> - -<%+header%> - - - -

    <%:Firewall Status%>

    -
    - -<% if has_ip6tables then %> - -<% end %> - -
    - -
    " style="position: absolute; right: 0"> - - - - -
    - -
    - - <% for _, tbl in ipairs(tables) do chaincnt = 0 %> -

    <%:Table%>: <%=tbl%>

    - - <% for _, chain in ipairs(ipt:chains(tbl)) do - rowcnt = 0 - chaincnt = chaincnt + 1 - chaininfo = ipt:chain(tbl, chain) - %> - - - - - - - - - - - - - - - - <% for _, rule in ipairs(ipt:find({table=tbl, chain=chain})) do %> - - - - - - - - - - - - <% end %> - - <% if rowcnt == 1 then %> - - - - <% end %> - <% end %> - - <% if chaincnt == 0 then %> - - - - <% end %> -
    -
    - <%:Chain%> <%=chain%> - (<%- if chaininfo.policy then -%> - <%:Policy%>: <%=chaininfo.policy%>, <%:Packets%>: <%=chaininfo.packets%>, <%:Traffic%>: <%=wba.byte_format(chaininfo.bytes)-%> - <%- else -%> - <%:References%>: <%=chaininfo.references-%> - <%- end -%>) -
    <%:Pkts.%><%:Traffic%><%:Target%><%:Prot.%><%:In%><%:Out%><%:Source%><%:Destination%><%:Options%>
    <%=rule.packets%><%=wba.byte_format(rule.bytes)%><%=rule.target and link_target(tbl, rule.target) or "-"%><%=rule.protocol%><%=link_iface(rule.inputif)%><%=link_iface(rule.outputif)%><%=rule.source%><%=rule.destination%><%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%>
    <%:No rules in this chain%>
    <%:No chains in this table%>
    -

    - <% end %> -
    -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/load.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/load.htm deleted file mode 100644 index 97a2f5ed59..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/load.htm +++ /dev/null @@ -1,284 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - - - - -

    <%:Realtime Load%>

    - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    <%:1 Minute Load:%>0<%:Average:%>0<%:Peak:%>0
    <%:5 Minute Load:%>0<%:Average:%>0<%:Peak:%>0
    <%:15 Minute Load:%>0<%:Average:%>0<%:Peak:%>0
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm deleted file mode 100644 index 5f2c074939..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm +++ /dev/null @@ -1,162 +0,0 @@ -<%# - Copyright 2008-2009 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - require "luci.tools.webadmin" - require "nixio.fs" - - local ip = require "luci.ip" - local style = true - local _, v - - local rtn = { - [255] = "local", - [254] = "main", - [253] = "default", - [0] = "unspec" - } - - if nixio.fs.access("/etc/iproute2/rt_tables") then - local ln - for ln in io.lines("/etc/iproute2/rt_tables") do - local i, n = ln:match("^(%d+)%s+(%S+)") - if i and n then - rtn[tonumber(i)] = n - end - end - end --%> - -<%+header%> - -
    -

    <%:Routes%>

    -
    <%:The following rules are currently active on this system.%>
    - -
    - ARP -
    - - - - - - - - <% - for _, v in ipairs(ip.neighbors({ family = 4 })) do - if v.mac then - %> - - - - - - <% - style = not style - end - end - %> -
    <%_IPv4-Address%><%_MAC-Address%><%:Interface%>
    <%=v.dest%><%=v.mac%><%=v.dev%>
    -
    -
    -
    - -
    - <%_Active IPv4-Routes%> - -
    - - - - - - - - - <% for _, v in ipairs(ip.routes({ family = 4, type = 1 })) do %> - - - - - - - - <% style = not style end %> -
    <%:Network%><%:Target%><%_IPv4-Gateway%><%:Metric%><%:Table%>
    <%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%><%=v.dest%><%=v.gw%><%=v.metric or 0%><%=rtn[v.table] or v.table%>
    -
    -
    -
    - - <% - if nixio.fs.access("/proc/net/ipv6_route") then - style = true - %> -
    - <%_Active IPv6-Routes%> - -
    - - - - - - - - - <% - for _, v in ipairs(ip.routes({ family = 6, type = 1 })) do - if v.dest and not v.dest:is6linklocal() then - %> - - - - - - - - <% - style = not style - end - end - %> -
    <%:Network%><%:Target%><%:Source%><%:Metric%><%:Table%>
    <%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%><%=v.dest%><%=v.from%><%=v.metric or 0%><%=rtn[v.table] or v.table%>
    -
    -
    -
    - -
    - <%:IPv6 Neighbours%> - -
    - - - - - - - <% - for _, v in ipairs(ip.neighbors({ family = 6 })) do - if v.dest and not v.dest:is6linklocal() and v.mac then - %> - - - - - - <% - style = not style - end - end - %> -
    <%:IPv6-Address%><%:MAC-Address%><%:Interface%>
    <%=v.dest%><%=v.mac%><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%>
    -
    -
    -
    - <% end %> -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/syslog.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/syslog.htm deleted file mode 100644 index fb734a76d9..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/syslog.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:System Log%>

    -
    - -
    -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm deleted file mode 100644 index aa658ff0cb..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm +++ /dev/null @@ -1,370 +0,0 @@ -<%# - Copyright 2011 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - local ntm = require "luci.model.network".init() - - local dev - local devices = { } - for _, dev in luci.util.vspairs(luci.sys.net.devices()) do - if dev:match("^wlan%d") or dev:match("^ath%d") or dev:match("^wl%d") then - devices[#devices+1] = dev - end - end - - local curdev = luci.http.formvalue("dev") or devices[1] --%> - -<%+header%> - - - - -

    <%:Realtime Wireless%>

    - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    <%:Signal:%>0 <%:dBm%><%:Average:%>0 <%:dBm%><%:Peak:%>0 <%:dBm%>
    <%:Noise:%>0 <%:dBm%><%:Average:%>0 <%:dBm%><%:Peak:%>0 <%:dBm%>
    - -
    - - -
    -
    -
    - - - - - - - - - - - - -
    <%:Phy Rate:%>0 MBit/s<%:Average:%>0 MBit/s<%:Peak:%>0 MBit/s
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/applyreboot.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/applyreboot.htm deleted file mode 100644 index e722a48096..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/applyreboot.htm +++ /dev/null @@ -1,41 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - - - - <%=luci.sys.hostname()%> - <% if title then %><%=title%><% else %><%:Rebooting...%><% end %> - - - - - -
    -
    -

    <%:System%> - <% if title then %><%=title%><% else %><%:Rebooting...%><% end %>

    -
    -

    - <% if msg then %><%=msg%><% else %><%:Changes applied.%><% end %> -

    -

    - <%:Loading%> - <%:Waiting for changes to be applied...%> -

    -
    -
    -
    - - diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/backupfiles.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/backupfiles.htm deleted file mode 100644 index c1f3361ae2..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/backupfiles.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - - diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/clock_status.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/clock_status.htm deleted file mode 100644 index 37d8ae0e85..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/clock_status.htm +++ /dev/null @@ -1,36 +0,0 @@ -<%+cbi/valueheader%> - - - -<%:Collecting data...%> - - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm deleted file mode 100644 index 3e3f65d919..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm +++ /dev/null @@ -1,93 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Flash operations%>

    - - - -
    - -
    - <%:Backup / Restore%> -
    <%:Click "Generate archive" to download a tar archive of the current configuration files. To reset the firmware to its initial state, click "Perform reset" (only possible with squashfs images).%>
    -
    -
    - -
    - -
    - -
    -
    -
    - <% if reset_avail then %> -
    - -
    - -
    - -
    -
    -
    - <% end %> -
    -
    -
    <%:To restore configuration files, you can upload a previously generated backup archive here.%>
    -
    -
    -
    - -
    - - - -
    -
    -
    -
    -
    - -
    - -
    - <%:Flash new firmware image%> - <% if upgrade_avail then %> -
    - -
    <%:Upload a sysupgrade-compatible image here to replace the running firmware. Check "Keep settings" to retain the current configuration (requires a compatible firmware image).%>
    -
    -
    - -
    - -
    -
    -
    - -
    - - -
    -
    -
    - <% if image_invalid then %> -
    <%:The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform. %>
    - <% end %> -
    - <% else %> -
    <%:Sorry, there is no sysupgrade support present; a new firmware image must be flashed manually. Please refer to the wiki for device specific install instructions.%>
    - <% end %> -
    - -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/ipkg.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/ipkg.htm deleted file mode 100644 index a7ff4e50bd..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/ipkg.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - - diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm deleted file mode 100644 index d5d78289be..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm +++ /dev/null @@ -1,212 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- -local opkg = require "luci.model.ipkg" -local fs = require "nixio.fs" -local wa = require "luci.tools.webadmin" -local rowcnt = 1 - -function rowstyle() - rowcnt = rowcnt + 1 - return (rowcnt % 2) + 1 -end - -local fstat = fs.statvfs(opkg.overlay_root()) -local space_total = fstat and fstat.blocks or 0 -local space_free = fstat and fstat.bfree or 0 -local space_used = space_total - space_free - -local used_perc = math.floor(0.5 + ((space_total > 0) and ((100 / space_total) * space_used) or 100)) -local free_byte = space_free * fstat.frsize - -local filter = { } - - -local opkg_list = luci.model.ipkg.list_all -local querypat -if query and #query > 0 then - querypat = '*%s*' % query - opkg_list = luci.model.ipkg.find -end - -local letterpat -if letter == 35 then - letterpat = "[^a-z]*" -else - letterpat = string.char(letter, 42) -- 'A' '*' -end - --%> - -<%+header%> - -

    <%:Software%>

    - -
    - - - -
    - - - -
    -
    - <% if (install and next(install)) or (remove and next(remove)) or update or upgrade then %> -
    - <% if #stdout > 0 then %>
    <%=pcdata(stdout)%>
    <% end %> - <% if #stderr > 0 then %>
    <%=pcdata(stderr)%>
    <% end %> -
    - <% end %> - - <% if querypat then %> -
    - <%:Displaying only packages containing%> "<%=pcdata(query)%>" - -
    -
    - <% end %> - - <% if no_lists or old_lists then %> -
    - <% if old_lists then %> - <%:Package lists are older than 24 hours%> - <% else %> - <%:No package lists available%> - <% end %> - -
    - <% end %> - -
    - <%:Free space%>: <%=(100-used_perc)%>% (<%=wa.byte_format(free_byte)%>) -
    -
     
    -
    -
    -
    - -
    - -
    - - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    -
    -
    -
    - - -

    <%:Status%>

    - - - - - <% if display ~= "available" then %> -
    - - - - - - - <% local empty = true; luci.model.ipkg.list_installed(querypat, function(n, v, s, d) empty = false; filter[n] = true %> - - - - - - <% end) %> - <% if empty then %> - - - - - - <% end %> -
     <%:Package name%><%:Version%>
    -
    - - - - <%:Remove%> -
    -
    <%=luci.util.pcdata(n)%><%=luci.util.pcdata(v)%>
     <%:none%><%:none%>
    -
    - <% else %> -
    - <% if not querypat then %> - -
    - <% end %> - - - - - - - - - <% local empty = true; opkg_list(querypat or letterpat, function(n, v, s, d) if filter[n] then return end; empty = false %> - - - - - - - - <% end) %> - <% if empty then %> - - - - - - - - <% end %> -
     <%:Package name%><%:Version%><%:Size (.ipk)%><%:Description%>
    -
    - - - - <%:Install%> -
    -
    <%=luci.util.pcdata(n)%><%=luci.util.pcdata(v)%><%=luci.util.pcdata(s)%><%=luci.util.pcdata(d)%>
     <%:none%><%:none%><%:none%><%:none%>
    - <% if not querypat then %> -
    - <% end %> -
    - <% end %> -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/reboot.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/reboot.htm deleted file mode 100644 index c9551804d2..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/reboot.htm +++ /dev/null @@ -1,59 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Reboot%>

    -
    - -

    <%:Reboots the operating system of your device%>

    - -<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%> -

    <%:Warning: There are unsaved changes that will get lost on reboot!%>

    -<%- end -%> - -
    - - - - - - - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/upgrade.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/upgrade.htm deleted file mode 100644 index 7175248dbb..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_system/upgrade.htm +++ /dev/null @@ -1,59 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2009 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Flash Firmware%> - <%:Verify%>

    -

    - <%_ The flash image was uploaded. - Below is the checksum and file size listed, - compare them with the original file to ensure data integrity.
    - Click "Proceed" below to start the flash procedure. %> - - <% if storage > 0 and size > storage then %> -

    -

    <%:It appears that you are trying to - flash an image that does not fit into the flash memory, please verify - the image file! %>
    - <% end %> - -

    - -
    -
      -
    • <%:Checksum%>
      - <%:MD5%>: <%=checksum%>
      - <%:SHA256%>: <%=sha256ch%>
    • -
    • <%:Size%>: <% - local w = require "luci.tools.webadmin" - write(w.byte_format(size)) - - if storage > 0 then - write(luci.i18n.translatef( - " (%s available)", - w.byte_format(storage) - )) - end - %>
    • -
    • <% if keep then %> - <%:Configuration files will be kept.%> - <% else %> - <%:Note: Configuration files will be erased.%> - <% end %>
    • -
    -
    - -
    -
    - - - " /> - - -
    -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm deleted file mode 100644 index 370027e510..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm +++ /dev/null @@ -1,23 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Configuration%> / <%:Apply%>

    - -<% if changes then %> - <%+cbi/apply_xhr%> - <%+admin_uci/changelog%> - - <%- cbi_apply_xhr('uci-apply', configs) -%> - -

    <%:The following changes have been committed%>:

    - <%- uci_changelog(changes) -%> -<% else %> -

    <%:There are no pending changes to apply!%>

    -<% end %> - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm deleted file mode 100644 index 4ed4f0a10f..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm +++ /dev/null @@ -1,79 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% export("uci_changelog", function(changes) -%> -
    - <%:Legend:%> -
    -
      <%:Section added%>
    -
      <%:Section removed%>
    -
      <%:Option changed%>
    -
      <%:Option removed%>
    -
    -
    -
    - -
    <% - local util = luci.util - local ret = { } - - for r, tbl in pairs(changes) do - for s, os in pairs(tbl) do - -- section add - if os['.type'] and os['.type'] ~= "" then - ret[#ret+1] = "%s.%s=%s" %{ r, s, os['.type'] } - for o, v in util.kspairs(os) do - if o:sub(1,1) ~= "." then - if type(v) == "table" then - local i - for i = 1, #v do - ret[#ret+1] = "
    %s.%s.%s+=%s" - %{ r, s, o, util.pcdata(v[i]) } - end - else - ret[#ret+1] = "
    %s.%s.%s=%s" - %{ r, s, o, util.pcdata(v) } - end - end - end - ret[#ret+1] = "

    " - - -- section delete - elseif os['.type'] and os['.type'] == "" then - ret[#ret+1] = "%s.%s
    " %{ r, s } - - -- modifications - else - ret[#ret+1] = "%s.%s
    " %{ r, s } - for o, v in util.kspairs(os) do - if o:sub(1,1) ~= "." then - if v and #v > 0 then - ret[#ret+1] = "" - if type(v) == "table" then - local i - for i = 1, #v do - ret[#ret+1] = "%s.%s.%s+=%s
    " - %{ r, s, o, util.pcdata(v[i]) } - end - - else - ret[#ret+1] = "%s.%s.%s=%s
    " - %{ r, s, o, util.pcdata(v) } - end - ret[#ret+1] = "
    " - else - ret[#ret+1] = "%s.%s.%s
    " %{ r, s, o } - end - end - end - ret[#ret+1] = "

    " - end - end - end - - write(table.concat(ret)) - %>
    -
    -<%- end) %> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm deleted file mode 100644 index c3373604f3..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm +++ /dev/null @@ -1,46 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Configuration%> / <%:Changes%>

    - -<% if changes then %> - <%+admin_uci/changelog%> - <%- uci_changelog(changes) -%> -<% else %> -

    <%:There are no pending changes!%>

    -<% end %> - -
    - <% local r = luci.http.formvalue("redir"); if r and #r > 0 then %> -
    -
    - -
    -
    - <% end %> - -
    -
    - - " /> - -
    -
    - - " /> - -
    -
    - - " /> - -
    -
    -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm deleted file mode 100644 index 5da7281a80..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm +++ /dev/null @@ -1,27 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Configuration%> / <%:Revert%>

    - -<% if changes then %> - <%+cbi/apply_xhr%> - <%+admin_uci/changelog%> - -

    <%:The following changes have been reverted%>:

    - <%- uci_changelog(changes) -%> -<% else %> -

    <%:There are no pending changes to revert!%>

    -<% end %> - -
    -
    "> - -
    -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm deleted file mode 100644 index 2fb64b3c42..0000000000 --- a/package/luci/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm +++ /dev/null @@ -1,168 +0,0 @@ -<%+cbi/valueheader%> - - - - - - - -
    - - - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full b/package/luci/modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full deleted file mode 100755 index 372eb15122..0000000000 --- a/package/luci/modules/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -if [ "$(uci -q get luci.diag)" != "internal" ]; then - host="" - - if [ -s /etc/os-release ]; then - . /etc/os-release - host="${HOME_URL:-${BUG_URL:-$LEDE_DEVICE_MANUFACTURER_URL}}" - host="${host#*://}" - host="${host%%/*}" - fi - - uci -q batch <<-EOF >/dev/null - set luci.diag=internal - set luci.diag.dns='${host:-openwrt.org}' - set luci.diag.ping='${host:-openwrt.org}' - set luci.diag.route='${host:-openwrt.org}' - commit luci - EOF -fi - -exit 0 diff --git a/package/luci/modules/luci-mod-admin-full/src/Makefile b/package/luci/modules/luci-mod-admin-full/src/Makefile deleted file mode 100644 index d6ed8c6e46..0000000000 --- a/package/luci/modules/luci-mod-admin-full/src/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $< - -clean: - rm -f luci-bwc *.o - -luci-bwc: luci-bwc.o - $(CC) $(LDFLAGS) -o $@ $^ -ldl - -compile: luci-bwc - -install: compile - mkdir -p $(DESTDIR)/usr/bin - cp luci-bwc $(DESTDIR)/usr/bin/luci-bwc diff --git a/package/luci/modules/luci-mod-admin-full/src/luci-bwc.c b/package/luci/modules/luci-mod-admin-full/src/luci-bwc.c deleted file mode 100644 index 8ddd91727a..0000000000 --- a/package/luci/modules/luci-mod-admin-full/src/luci-bwc.c +++ /dev/null @@ -1,778 +0,0 @@ -/* - * luci-bwc - Very simple bandwidth collector cache for LuCI realtime graphs - * - * Copyright (C) 2010 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#define STEP_COUNT 60 -#define STEP_TIME 1 -#define TIMEOUT 10 - -#define PID_PATH "/var/run/luci-bwc.pid" - -#define DB_PATH "/var/lib/luci-bwc" -#define DB_IF_FILE DB_PATH "/if/%s" -#define DB_RD_FILE DB_PATH "/radio/%s" -#define DB_CN_FILE DB_PATH "/connections" -#define DB_LD_FILE DB_PATH "/load" - -#define IF_SCAN_PATTERN \ - " %[^ :]:%u %u" \ - " %*d %*d %*d %*d %*d %*d" \ - " %u %u" - -#define LD_SCAN_PATTERN \ - "%f %f %f" - - -struct file_map { - int fd; - int size; - char *mmap; -}; - -struct traffic_entry { - uint32_t time; - uint32_t rxb; - uint32_t rxp; - uint32_t txb; - uint32_t txp; -}; - -struct conn_entry { - uint32_t time; - uint32_t udp; - uint32_t tcp; - uint32_t other; -}; - -struct load_entry { - uint32_t time; - uint16_t load1; - uint16_t load5; - uint16_t load15; -}; - -struct radio_entry { - uint32_t time; - uint16_t rate; - uint8_t rssi; - uint8_t noise; -}; - -static int readpid(void) -{ - int fd; - int pid = -1; - char buf[9] = { 0 }; - - if ((fd = open(PID_PATH, O_RDONLY)) > -1) - { - if (read(fd, buf, sizeof(buf))) - { - buf[8] = 0; - pid = atoi(buf); - } - - close(fd); - } - - return pid; -} - -static int writepid(void) -{ - int fd; - int wlen; - char buf[9] = { 0 }; - - if ((fd = open(PID_PATH, O_WRONLY | O_CREAT | O_TRUNC, 0600)) > -1) - { - wlen = snprintf(buf, sizeof(buf), "%i", getpid()); - write(fd, buf, wlen); - close(fd); - - return 0; - } - - return -1; -} - -static int timeout = TIMEOUT; -static int countdown = -1; - -static void reset_countdown(int sig) -{ - countdown = timeout; - -} - - -static char *progname; -static int prognamelen; - -static struct iwinfo_ops *backend = NULL; - - -static int init_directory(char *path) -{ - char *p = path; - - for (p = &path[1]; *p; p++) - { - if (*p == '/') - { - *p = 0; - - if (mkdir(path, 0700) && (errno != EEXIST)) - return -1; - - *p = '/'; - } - } - - return 0; -} - -static int init_file(char *path, int esize) -{ - int i, file; - char buf[sizeof(struct traffic_entry)] = { 0 }; - - if (init_directory(path)) - return -1; - - if ((file = open(path, O_WRONLY | O_CREAT, 0600)) >= 0) - { - for (i = 0; i < STEP_COUNT; i++) - { - if (write(file, buf, esize) < 0) - break; - } - - close(file); - - return 0; - } - - return -1; -} - -static inline uint32_t timeof(void *entry) -{ - return ntohl(((struct traffic_entry *)entry)->time); -} - -static int update_file(const char *path, void *entry, int esize) -{ - int rv = -1; - int file; - char *map; - - if ((file = open(path, O_RDWR)) >= 0) - { - map = mmap(NULL, esize * STEP_COUNT, PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_LOCKED, file, 0); - - if ((map != NULL) && (map != MAP_FAILED)) - { - if (timeof(entry) > timeof(map + esize * (STEP_COUNT-1))) - { - memmove(map, map + esize, esize * (STEP_COUNT-1)); - memcpy(map + esize * (STEP_COUNT-1), entry, esize); - } - - munmap(map, esize * STEP_COUNT); - - rv = 0; - } - - close(file); - } - - return rv; -} - -static int mmap_file(const char *path, int esize, struct file_map *m) -{ - m->fd = -1; - m->size = -1; - m->mmap = NULL; - - if ((m->fd = open(path, O_RDONLY)) >= 0) - { - m->size = STEP_COUNT * esize; - m->mmap = mmap(NULL, m->size, PROT_READ, - MAP_SHARED | MAP_LOCKED, m->fd, 0); - - if ((m->mmap != NULL) && (m->mmap != MAP_FAILED)) - return 0; - } - - return -1; -} - -static void umap_file(struct file_map *m) -{ - if ((m->mmap != NULL) && (m->mmap != MAP_FAILED)) - munmap(m->mmap, m->size); - - if (m->fd > -1) - close(m->fd); -} - -static void * iw_open(void) -{ - return dlopen("/usr/lib/libiwinfo.so", RTLD_LAZY); -} - -static int iw_update( - void *iw, const char *ifname, uint16_t *rate, uint8_t *rssi, uint8_t *noise -) { - struct iwinfo_ops *(*probe)(const char *); - int val; - - if (!backend) - { - probe = dlsym(iw, "iwinfo_backend"); - - if (!probe) - return 0; - - backend = probe(ifname); - - if (!backend) - return 0; - } - - *rate = (backend->bitrate && !backend->bitrate(ifname, &val)) ? val : 0; - *rssi = (backend->signal && !backend->signal(ifname, &val)) ? val : 0; - *noise = (backend->noise && !backend->noise(ifname, &val)) ? val : 0; - - return 1; -} - -static void iw_close(void *iw) -{ - void (*finish)(void); - - finish = dlsym(iw, "iwinfo_finish"); - - if (finish) - finish(); - - dlclose(iw); -} - - -static int update_ifstat( - const char *ifname, uint32_t rxb, uint32_t rxp, uint32_t txb, uint32_t txp -) { - char path[1024]; - - struct stat s; - struct traffic_entry e; - - snprintf(path, sizeof(path), DB_IF_FILE, ifname); - - if (stat(path, &s)) - { - if (init_file(path, sizeof(struct traffic_entry))) - { - fprintf(stderr, "Failed to init %s: %s\n", - path, strerror(errno)); - - return -1; - } - } - - e.time = htonl(time(NULL)); - e.rxb = htonl(rxb); - e.rxp = htonl(rxp); - e.txb = htonl(txb); - e.txp = htonl(txp); - - return update_file(path, &e, sizeof(struct traffic_entry)); -} - -static int update_radiostat( - const char *ifname, uint16_t rate, uint8_t rssi, uint8_t noise -) { - char path[1024]; - - struct stat s; - struct radio_entry e; - - snprintf(path, sizeof(path), DB_RD_FILE, ifname); - - if (stat(path, &s)) - { - if (init_file(path, sizeof(struct radio_entry))) - { - fprintf(stderr, "Failed to init %s: %s\n", - path, strerror(errno)); - - return -1; - } - } - - e.time = htonl(time(NULL)); - e.rate = htons(rate); - e.rssi = rssi; - e.noise = noise; - - return update_file(path, &e, sizeof(struct radio_entry)); -} - -static int update_cnstat(uint32_t udp, uint32_t tcp, uint32_t other) -{ - char path[1024]; - - struct stat s; - struct conn_entry e; - - snprintf(path, sizeof(path), DB_CN_FILE); - - if (stat(path, &s)) - { - if (init_file(path, sizeof(struct conn_entry))) - { - fprintf(stderr, "Failed to init %s: %s\n", - path, strerror(errno)); - - return -1; - } - } - - e.time = htonl(time(NULL)); - e.udp = htonl(udp); - e.tcp = htonl(tcp); - e.other = htonl(other); - - return update_file(path, &e, sizeof(struct conn_entry)); -} - -static int update_ldstat(uint16_t load1, uint16_t load5, uint16_t load15) -{ - char path[1024]; - - struct stat s; - struct load_entry e; - - snprintf(path, sizeof(path), DB_LD_FILE); - - if (stat(path, &s)) - { - if (init_file(path, sizeof(struct load_entry))) - { - fprintf(stderr, "Failed to init %s: %s\n", - path, strerror(errno)); - - return -1; - } - } - - e.time = htonl(time(NULL)); - e.load1 = htons(load1); - e.load5 = htons(load5); - e.load15 = htons(load15); - - return update_file(path, &e, sizeof(struct load_entry)); -} - -static int run_daemon(void) -{ - FILE *info; - uint32_t rxb, txb, rxp, txp; - uint32_t udp, tcp, other; - uint16_t rate; - uint8_t rssi, noise; - float lf1, lf5, lf15; - char line[1024]; - char ifname[16]; - int i; - void *iw; - struct sigaction sa; - - struct stat s; - const char *ipc = stat("/proc/net/nf_conntrack", &s) - ? "/proc/net/ip_conntrack" : "/proc/net/nf_conntrack"; - - switch (fork()) - { - case -1: - perror("fork()"); - return -1; - - case 0: - if (chdir("/") < 0) - { - perror("chdir()"); - exit(1); - } - - close(0); - close(1); - close(2); - break; - - default: - return 0; - } - - /* setup USR1 signal handler to reset timer */ - sa.sa_handler = reset_countdown; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGUSR1, &sa, NULL); - - /* write pid */ - if (writepid()) - { - fprintf(stderr, "Failed to write pid file: %s\n", strerror(errno)); - return 1; - } - - /* initialize iwinfo */ - iw = iw_open(); - - /* go */ - for (reset_countdown(0); countdown >= 0; countdown--) - { - /* alter progname for ps, top */ - memset(progname, 0, prognamelen); - snprintf(progname, prognamelen, "luci-bwc %d", countdown); - - if ((info = fopen("/proc/net/dev", "r")) != NULL) - { - while (fgets(line, sizeof(line), info)) - { - if (strchr(line, '|')) - continue; - - if (sscanf(line, IF_SCAN_PATTERN, ifname, &rxb, &rxp, &txb, &txp)) - { - if (strncmp(ifname, "lo", sizeof(ifname))) - update_ifstat(ifname, rxb, rxp, txb, txp); - } - } - - fclose(info); - } - - if (iw) - { - for (i = 0; i < 5; i++) - { -#define iw_checkif(pattern) \ - do { \ - snprintf(ifname, sizeof(ifname), pattern, i); \ - if (iw_update(iw, ifname, &rate, &rssi, &noise)) \ - { \ - update_radiostat(ifname, rate, rssi, noise); \ - continue; \ - } \ - } while(0) - - iw_checkif("wlan%d"); - iw_checkif("ath%d"); - iw_checkif("wl%d"); - } - } - - if ((info = fopen(ipc, "r")) != NULL) - { - udp = 0; - tcp = 0; - other = 0; - - while (fgets(line, sizeof(line), info)) - { - if (strstr(line, "TIME_WAIT")) - continue; - - if ((strstr(line, "src=127.0.0.1 ") && strstr(line, "dst=127.0.0.1 ")) - || (strstr(line, "src=::1 ") && strstr(line, "dst=::1 "))) - continue; - - if (sscanf(line, "%*s %*d %s", ifname) || sscanf(line, "%s %*d", ifname)) - { - if (!strcmp(ifname, "tcp")) - tcp++; - else if (!strcmp(ifname, "udp")) - udp++; - else - other++; - } - } - - update_cnstat(udp, tcp, other); - - fclose(info); - } - - if ((info = fopen("/proc/loadavg", "r")) != NULL) - { - if (fscanf(info, LD_SCAN_PATTERN, &lf1, &lf5, &lf15)) - { - update_ldstat((uint16_t)(lf1 * 100), - (uint16_t)(lf5 * 100), - (uint16_t)(lf15 * 100)); - } - - fclose(info); - } - - sleep(STEP_TIME); - } - - unlink(PID_PATH); - - if (iw) - iw_close(iw); - - return 0; -} - -static void check_daemon(void) -{ - int pid; - - if ((pid = readpid()) < 0 || kill(pid, 0) < 0) - { - /* daemon ping failed, try to start it up */ - if (run_daemon()) - { - fprintf(stderr, - "Failed to ping daemon and unable to start it up: %s\n", - strerror(errno)); - - exit(1); - } - } - else if (kill(pid, SIGUSR1)) - { - fprintf(stderr, "Failed to send signal: %s\n", strerror(errno)); - exit(2); - } -} - -static int run_dump_ifname(const char *ifname) -{ - int i; - char path[1024]; - struct file_map m; - struct traffic_entry *e; - - check_daemon(); - snprintf(path, sizeof(path), DB_IF_FILE, ifname); - - if (mmap_file(path, sizeof(struct traffic_entry), &m)) - { - fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); - return 1; - } - - for (i = 0; i < m.size; i += sizeof(struct traffic_entry)) - { - e = (struct traffic_entry *) &m.mmap[i]; - - if (!e->time) - continue; - - printf("[ %u, %u, %" PRIu32 - ", %u, %u ]%s\n", - ntohl(e->time), - ntohl(e->rxb), ntohl(e->rxp), - ntohl(e->txb), ntohl(e->txp), - ((i + sizeof(struct traffic_entry)) < m.size) ? "," : ""); - } - - umap_file(&m); - - return 0; -} - -static int run_dump_radio(const char *ifname) -{ - int i; - char path[1024]; - struct file_map m; - struct radio_entry *e; - - check_daemon(); - snprintf(path, sizeof(path), DB_RD_FILE, ifname); - - if (mmap_file(path, sizeof(struct radio_entry), &m)) - { - fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); - return 1; - } - - for (i = 0; i < m.size; i += sizeof(struct radio_entry)) - { - e = (struct radio_entry *) &m.mmap[i]; - - if (!e->time) - continue; - - printf("[ %u, %d, %d, %d ]%s\n", - ntohl(e->time), - e->rate, e->rssi, e->noise, - ((i + sizeof(struct radio_entry)) < m.size) ? "," : ""); - } - - umap_file(&m); - - return 0; -} - -static int run_dump_conns(void) -{ - int i; - char path[1024]; - struct file_map m; - struct conn_entry *e; - - check_daemon(); - snprintf(path, sizeof(path), DB_CN_FILE); - - if (mmap_file(path, sizeof(struct conn_entry), &m)) - { - fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); - return 1; - } - - for (i = 0; i < m.size; i += sizeof(struct conn_entry)) - { - e = (struct conn_entry *) &m.mmap[i]; - - if (!e->time) - continue; - - printf("[ %u, %u, %u, %u ]%s\n", - ntohl(e->time), ntohl(e->udp), - ntohl(e->tcp), ntohl(e->other), - ((i + sizeof(struct conn_entry)) < m.size) ? "," : ""); - } - - umap_file(&m); - - return 0; -} - -static int run_dump_load(void) -{ - int i; - char path[1024]; - struct file_map m; - struct load_entry *e; - - check_daemon(); - snprintf(path, sizeof(path), DB_LD_FILE); - - if (mmap_file(path, sizeof(struct load_entry), &m)) - { - fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); - return 1; - } - - for (i = 0; i < m.size; i += sizeof(struct load_entry)) - { - e = (struct load_entry *) &m.mmap[i]; - - if (!e->time) - continue; - - printf("[ %u, %u, %u, %u ]%s\n", - ntohl(e->time), - ntohs(e->load1), ntohs(e->load5), ntohs(e->load15), - ((i + sizeof(struct load_entry)) < m.size) ? "," : ""); - } - - umap_file(&m); - - return 0; -} - - -int main(int argc, char *argv[]) -{ - int opt; - - progname = argv[0]; - prognamelen = -1; - - for (opt = 0; opt < argc; opt++) - prognamelen += 1 + strlen(argv[opt]); - - while ((opt = getopt(argc, argv, "t:i:r:cl")) > -1) - { - switch (opt) - { - case 't': - timeout = atoi(optarg); - break; - - case 'i': - if (optarg) - return run_dump_ifname(optarg); - break; - - case 'r': - if (optarg) - return run_dump_radio(optarg); - break; - - case 'c': - return run_dump_conns(); - - case 'l': - return run_dump_load(); - - default: - break; - } - } - - fprintf(stderr, - "Usage:\n" - " %s [-t timeout] -i ifname\n" - " %s [-t timeout] -r radiodev\n" - " %s [-t timeout] -c\n" - " %s [-t timeout] -l\n", - argv[0], argv[0], argv[0], argv[0] - ); - - return 1; -} diff --git a/package/luci/modules/luci-mod-admin-mini/Makefile b/package/luci/modules/luci-mod-admin-mini/Makefile deleted file mode 100644 index 5da4cafc94..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Essentials - stripped down and user-friendly -LUCI_DEPENDS:=+luci-base @BROKEN - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/index.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/index.lua deleted file mode 100644 index dd25f2c52b..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/index.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.mini.index", package.seeall) - -function index() - local root = node() - if not root.lock then - root.target = alias("mini") - root.index = true - end - - entry({"about"}, template("about")) - - local page = entry({"mini"}, alias("mini", "index"), _("Essentials"), 10) - page.sysauth = "root" - page.sysauth_authenticator = "htmlauth" - page.index = true - - entry({"mini", "index"}, alias("mini", "index", "index"), _("Overview"), 10).index = true - entry({"mini", "index", "index"}, form("mini/index"), _("General"), 1).ignoreindex = true - entry({"mini", "index", "luci"}, cbi("mini/luci", {autoapply=true}), _("Settings"), 10) - entry({"mini", "index", "logout"}, call("action_logout"), _("Logout")) -end - -function action_logout() - local dsp = require "luci.dispatcher" - local utl = require "luci.util" - if dsp.context.authsession then - utl.ubus("session", "destroy", { - ubus_rpc_session = dsp.context.authsession - }) - dsp.context.urltoken.stok = nil - end - - luci.http.header("Set-Cookie", "sysauth=; path=" .. dsp.build_url()) - luci.http.redirect(luci.dispatcher.build_url()) -end diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/network.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/network.lua deleted file mode 100644 index 92506e54f2..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/network.lua +++ /dev/null @@ -1,12 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.mini.network", package.seeall) - -function index() - entry({"mini", "network"}, alias("mini", "network", "index"), _("Network"), 20).index = true - entry({"mini", "network", "index"}, cbi("mini/network", {autoapply=true}), _("General"), 1) - entry({"mini", "network", "wifi"}, cbi("mini/wifi", {autoapply=true}), _("Wireless"), 10) - entry({"mini", "network", "dhcp"}, cbi("mini/dhcp", {autoapply=true}), _("DHCP"), 20) -end diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/system.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/system.lua deleted file mode 100644 index 74a5ae4d36..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/controller/mini/system.lua +++ /dev/null @@ -1,235 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.mini.system", package.seeall) - -function index() - entry({"mini", "system"}, alias("mini", "system", "index"), _("System"), 40).index = true - entry({"mini", "system", "index"}, cbi("mini/system", {autoapply=true}), _("General"), 1) - entry({"mini", "system", "passwd"}, form("mini/passwd"), _("Admin Password"), 10) - entry({"mini", "system", "backup"}, call("action_backup"), _("Backup / Restore"), 80) - entry({"mini", "system", "upgrade"}, call("action_upgrade"), _("Flash Firmware"), 90) - entry({"mini", "system", "reboot"}, call("action_reboot"), _("Reboot"), 100) -end - -function action_backup() - local reset_avail = os.execute([[grep '"rootfs_data"' /proc/mtd >/dev/null 2>&1]]) == 0 - local restore_cmd = "gunzip | tar -xC/ >/dev/null 2>&1" - local backup_cmd = "tar -c %s | gzip 2>/dev/null" - - local restore_fpi - luci.http.setfilehandler( - function(meta, chunk, eof) - if not restore_fpi then - restore_fpi = io.popen(restore_cmd, "w") - end - if chunk then - restore_fpi:write(chunk) - end - if eof then - restore_fpi:close() - end - end - ) - - local upload = luci.http.formvalue("archive") - local backup = luci.http.formvalue("backup") - local reset = reset_avail and luci.http.formvalue("reset") - - if upload and #upload > 0 then - luci.template.render("mini/applyreboot") - luci.sys.reboot() - elseif backup then - local reader = ltn12_popen(backup_cmd:format(_keep_pattern())) - luci.http.header('Content-Disposition', 'attachment; filename="backup-%s-%s.tar.gz"' % { - luci.sys.hostname(), os.date("%Y-%m-%d")}) - luci.http.prepare_content("application/x-targz") - luci.ltn12.pump.all(reader, luci.http.write) - elseif reset then - luci.template.render("mini/applyreboot") - luci.util.exec("mtd -r erase rootfs_data") - else - luci.template.render("mini/backup", {reset_avail = reset_avail}) - end -end - -function action_reboot() - local reboot = luci.http.formvalue("reboot") - luci.template.render("mini/reboot", {reboot=reboot}) - if reboot then - luci.sys.reboot() - end -end - -function action_upgrade() - require("luci.model.uci") - - local tmpfile = "/tmp/firmware.img" - - local function image_supported() - -- XXX: yay... - return ( 0 == os.execute( - ". /lib/functions.sh; " .. - "include /lib/upgrade; " .. - "platform_check_image %q >/dev/null" - % tmpfile - ) ) - end - - local function image_checksum() - return (luci.sys.exec("md5sum %q" % tmpfile):match("^([^%s]+)")) - end - - local function storage_size() - local size = 0 - if nixio.fs.access("/proc/mtd") then - for l in io.lines("/proc/mtd") do - local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"') - if n == "linux" then - size = tonumber(s, 16) - break - end - end - elseif nixio.fs.access("/proc/partitions") then - for l in io.lines("/proc/partitions") do - local x, y, b, n = l:match('^%s*(%d+)%s+(%d+)%s+([^%s]+)%s+([^%s]+)') - if b and n and not n:match('[0-9]') then - size = tonumber(b) * 1024 - break - end - end - end - return size - end - - - -- Install upload handler - local file - luci.http.setfilehandler( - function(meta, chunk, eof) - if not nixio.fs.access(tmpfile) and not file and chunk and #chunk > 0 then - file = io.open(tmpfile, "w") - end - if file and chunk then - file:write(chunk) - end - if file and eof then - file:close() - end - end - ) - - - -- Determine state - local keep_avail = true - local step = tonumber(luci.http.formvalue("step") or 1) - local has_image = nixio.fs.access(tmpfile) - local has_support = image_supported() - local has_platform = nixio.fs.access("/lib/upgrade/platform.sh") - local has_upload = luci.http.formvalue("image") - - -- This does the actual flashing which is invoked inside an iframe - -- so don't produce meaningful errors here because the the - -- previous pages should arrange the stuff as required. - if step == 4 then - if has_platform and has_image and has_support then - -- Mimetype text/plain - luci.http.prepare_content("text/plain") - luci.http.write("Starting luci-flash...\n") - - -- Now invoke sysupgrade - local keepcfg = keep_avail and luci.http.formvalue("keepcfg") == "1" - local flash = ltn12_popen("/sbin/luci-flash %s %q" %{ - keepcfg and "-k %q" % _keep_pattern() or "", tmpfile - }) - - luci.ltn12.pump.all(flash, luci.http.write) - - -- Make sure the device is rebooted - luci.sys.reboot() - end - - - -- - -- This is step 1-3, which does the user interaction and - -- image upload. - -- - - -- Step 1: file upload, error on unsupported image format - elseif not has_image or not has_support or step == 1 then - -- If there is an image but user has requested step 1 - -- or type is not supported, then remove it. - if has_image then - nixio.fs.unlink(tmpfile) - end - - luci.template.render("mini/upgrade", { - step=1, - bad_image=(has_image and not has_support or false), - keepavail=keep_avail, - supported=has_platform - } ) - - -- Step 2: present uploaded file, show checksum, confirmation - elseif step == 2 then - luci.template.render("mini/upgrade", { - step=2, - checksum=image_checksum(), - filesize=nixio.fs.stat(tmpfile).size, - flashsize=storage_size(), - keepconfig=(keep_avail and luci.http.formvalue("keepcfg") == "1") - } ) - - -- Step 3: load iframe which calls the actual flash procedure - elseif step == 3 then - luci.template.render("mini/upgrade", { - step=3, - keepconfig=(keep_avail and luci.http.formvalue("keepcfg") == "1") - } ) - end -end - -function _keep_pattern() - local kpattern = "" - local files = luci.model.uci.cursor():get_all("luci", "flash_keep") - if files then - kpattern = "" - for k, v in pairs(files) do - if k:sub(1,1) ~= "." and nixio.fs.glob(v)() then - kpattern = kpattern .. " " .. v - end - end - end - return kpattern -end - -function ltn12_popen(command) - - local fdi, fdo = nixio.pipe() - local pid = nixio.fork() - - if pid > 0 then - fdo:close() - local close - return function() - local buffer = fdi:read(2048) - local wpid, stat = nixio.waitpid(pid, "nohang") - if not close and wpid and stat == "exited" then - close = true - end - - if buffer and #buffer > 0 then - return buffer - elseif close then - fdi:close() - return nil - end - end - elseif pid == 0 then - nixio.dup(fdo, nixio.stdout) - fdi:close() - fdo:close() - nixio.exec("/bin/sh", "-c", command) - end -end diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua deleted file mode 100644 index 9a1c1fea45..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua +++ /dev/null @@ -1,98 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local uci = require "luci.model.uci".cursor() -local ipc = require "luci.ip" -local wa = require "luci.tools.webadmin" -local fs = require "nixio.fs" - -m = Map("dhcp", "DHCP") - -s = m:section(TypedSection, "dhcp", "DHCP-Server") -s.anonymous = true -s.addremove = false -s.dynamic = false - -s:depends("interface", "lan") - -enable = s:option(ListValue, "ignore", translate("enable"), "") -enable:value(0, translate("enable")) -enable:value(1, translate("disable")) - -start = s:option(Value, "start", translate("First leased address")) -start.rmempty = true -start:depends("ignore", "0") - - -limit = s:option(Value, "limit", translate("Number of leased addresses"), "") -limit:depends("ignore", "0") - -function limit.cfgvalue(self, section) - local value = Value.cfgvalue(self, section) - - if value then - return tonumber(value) + 1 - end -end - -function limit.write(self, section, value) - value = tonumber(value) - 1 - return Value.write(self, section, value) -end - -limit.rmempty = true - -time = s:option(Value, "leasetime") -time:depends("ignore", "0") -time.rmempty = true - - -local leasefn, leasefp, leases -uci:foreach("dhcp", "dnsmasq", - function(section) - leasefn = section.leasefile - end -) -local leasefp = leasefn and fs.access(leasefn) and io.lines(leasefn) -if leasefp then - leases = {} - for lease in leasefp do - table.insert(leases, luci.util.split(lease, " ")) - end -end - -if leases then - v = m:section(Table, leases, translate("Active Leases")) - name = v:option(DummyValue, 4, translate("Hostname")) - function name.cfgvalue(self, ...) - local value = DummyValue.cfgvalue(self, ...) - return (value == "*") and "?" or value - end - ip = v:option(DummyValue, 3, translate("IPv4-Address")) - mac = v:option(DummyValue, 2, translate("MAC-Address")) - ltime = v:option(DummyValue, 1, translate("Leasetime remaining")) - function ltime.cfgvalue(self, ...) - local value = DummyValue.cfgvalue(self, ...) - return wa.date_format(os.difftime(tonumber(value), os.time())) - end -end - -s2 = m:section(TypedSection, "host", translate("Static Leases")) -s2.addremove = true -s2.anonymous = true -s2.template = "cbi/tblsection" - -name = s2:option(Value, "name", translate("Hostname")) -mac = s2:option(Value, "mac", translate("MAC-Address")) -ip = s2:option(Value, "ip", translate("IPv4-Address")) - -ipc.neighbors({ family = 4 }, function(n) - if n.mac and n.dest then - ip:value(n.dest:string()) - mac:value(n.mac, "%s (%s)" %{ n.mac, n.dest:string() }) - end -end) - -return m - diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/index.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/index.lua deleted file mode 100644 index 9ecee1a267..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/index.lua +++ /dev/null @@ -1,4 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -return Template("mini/index") diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/luci.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/luci.lua deleted file mode 100644 index a1ef0fe73f..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/luci.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require "luci.config" -local fs = require "nixio.fs" - -m = Map("luci", translate("Web UI"), translate("Here you can customize the settings and the functionality of LuCI.")) - --- force reload of global luci config namespace to reflect the changes -function m.commit_handler(self) - package.loaded["luci.config"] = nil - require "luci.config" -end - - -c = m:section(NamedSection, "main", "core", translate("General")) - -l = c:option(ListValue, "lang", translate("Language")) -l:value("auto") - -local i18ndir = luci.i18n.i18ndir .. "base." -for k, v in luci.util.kspairs(luci.config.languages) do - local file = i18ndir .. k:gsub("_", "-") - if k:sub(1, 1) ~= "." and fs.access(file .. ".lmo") then - l:value(k, v) - end -end - -t = c:option(ListValue, "mediaurlbase", translate("Design")) -for k, v in pairs(luci.config.themes) do - if k:sub(1, 1) ~= "." then - t:value(v, k) - end -end - -return m diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua deleted file mode 100644 index 7bc4df859b..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua +++ /dev/null @@ -1,219 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local wa = require "luci.tools.webadmin" -local sys = require "luci.sys" -local fs = require "nixio.fs" -local nx = require "nixio" - -local has_pptp = fs.access("/usr/sbin/pptp") -local has_pppoe = fs.glob("/usr/lib/pppd/*/rp-pppoe.so")() - -local network = luci.model.uci.cursor_state():get_all("network") - -local netstat = {} -local ifaces = {} - -local k, v -for k, v in ipairs(nx.getifaddrs()) do - if v.family == "packet" then - local d = v.data - d[1] = d.rx_bytes - d[2] = d.rx_packets - d[3] = d.rx_errors - d[4] = d.rx_dropped - d[5] = 0 - d[6] = 0 - d[7] = 0 - d[8] = d.multicast - d[9] = d.tx_bytes - d[10] = d.tx_packets - d[11] = d.tx_errors - d[12] = d.tx_dropped - d[13] = 0 - d[14] = d.collisions - d[15] = 0 - d[16] = 0 - netstat[v.name] = d - end -end - -for k, v in pairs(network) do - if v[".type"] == "interface" and k ~= "loopback" then - table.insert(ifaces, v) - end -end - -m = Map("network", translate("Network")) -s = m:section(Table, ifaces, translate("Status")) -s.parse = function() end - -s:option(DummyValue, ".name", translate("Network")) - -hwaddr = s:option(DummyValue, "_hwaddr", - translate("MAC-Address"), translate("Hardware Address")) -function hwaddr.cfgvalue(self, section) - local ix = self.map:get(section, "ifname") or "" - local mac = fs.readfile("/sys/class/net/" .. ix .. "/address") - - if not mac then - mac = luci.util.exec("ifconfig " .. ix) - mac = mac and mac:match(" ([A-F0-9:]+)%s*\n") - end - - if mac and #mac > 0 then - return mac:upper() - end - - return "?" -end - - -s:option(DummyValue, "ipaddr", translate("IPv4-Address")) - -s:option(DummyValue, "netmask", translate("IPv4-Netmask")) - - -txrx = s:option(DummyValue, "_txrx", - translate("Traffic"), translate("transmitted / received")) - -function txrx.cfgvalue(self, section) - local ix = self.map:get(section, "ifname") - - local rx = netstat and netstat[ix] and netstat[ix][1] - rx = rx and wa.byte_format(tonumber(rx)) or "-" - - local tx = netstat and netstat[ix] and netstat[ix][9] - tx = tx and wa.byte_format(tonumber(tx)) or "-" - - return string.format("%s / %s", tx, rx) -end - -errors = s:option(DummyValue, "_err", - translate("Errors"), translate("TX / RX")) - -function errors.cfgvalue(self, section) - local ix = self.map:get(section, "ifname") - - local rx = netstat and netstat[ix] and netstat[ix][3] - local tx = netstat and netstat[ix] and netstat[ix][11] - - rx = rx and tostring(rx) or "-" - tx = tx and tostring(tx) or "-" - - return string.format("%s / %s", tx, rx) -end - - - -s = m:section(NamedSection, "lan", "interface", translate("Local Network")) -s.addremove = false -s:option(Value, "ipaddr", translate("IPv4-Address")) - -nm = s:option(Value, "netmask", translate("IPv4-Netmask")) -nm:value("255.255.255.0") -nm:value("255.255.0.0") -nm:value("255.0.0.0") - -gw = s:option(Value, "gateway", translate("IPv4-Gateway") .. translate(" (optional)")) -gw.rmempty = true -dns = s:option(Value, "dns", translate("DNS-Server") .. translate(" (optional)")) -dns.rmempty = true - - -s = m:section(NamedSection, "wan", "interface", translate("Internet Connection")) -s.addremove = false -p = s:option(ListValue, "proto", translate("Protocol")) -p.override_values = true -p:value("none", "disabled") -p:value("static", translate("manual")) -p:value("dhcp", translate("automatic")) -if has_pppoe then p:value("pppoe", "PPPoE") end -if has_pptp then p:value("pptp", "PPTP") end - -function p.write(self, section, value) - -- Always set defaultroute to PPP and use remote dns - -- Overwrite a bad variable behaviour in OpenWrt - if value == "pptp" or value == "pppoe" then - self.map:set(section, "peerdns", "1") - self.map:set(section, "defaultroute", "1") - end - return ListValue.write(self, section, value) -end - -if not ( has_pppoe and has_pptp ) then - p.description = translate("You need to install \"ppp-mod-pppoe\" for PPPoE or \"pptp\" for PPtP support") -end - - -ip = s:option(Value, "ipaddr", translate("IPv4-Address")) -ip:depends("proto", "static") - -nm = s:option(Value, "netmask", translate("IPv4-Netmask")) -nm:depends("proto", "static") - -gw = s:option(Value, "gateway", translate("IPv4-Gateway")) -gw:depends("proto", "static") -gw.rmempty = true - -dns = s:option(Value, "dns", translate("DNS-Server")) -dns:depends("proto", "static") -dns.rmempty = true - -usr = s:option(Value, "username", translate("Username")) -usr:depends("proto", "pppoe") -usr:depends("proto", "pptp") - -pwd = s:option(Value, "password", translate("Password")) -pwd.password = true -pwd:depends("proto", "pppoe") -pwd:depends("proto", "pptp") - - --- Allow user to set MSS correction here if the UCI firewall is installed --- This cures some cancer for providers with pre-war routers -if fs.access("/etc/config/firewall") then - mssfix = s:option(Flag, "_mssfix", - translate("Clamp Segment Size"), translate("Fixes problems with unreachable websites, submitting forms or other unexpected behaviour for some ISPs.")) - mssfix.rmempty = false - - function mssfix.cfgvalue(self) - local value - m.uci:foreach("firewall", "forwarding", function(s) - if s.src == "lan" and s.dest == "wan" then - value = s.mtu_fix - end - end) - return value - end - - function mssfix.write(self, section, value) - m.uci:foreach("firewall", "forwarding", function(s) - if s.src == "lan" and s.dest == "wan" then - m.uci:set("firewall", s[".name"], "mtu_fix", value) - m:chain("firewall") - end - end) - end -end - -kea = s:option(Flag, "keepalive", translate("automatically reconnect")) -kea:depends("proto", "pppoe") -kea:depends("proto", "pptp") -kea.rmempty = true -kea.enabled = "10" - - -cod = s:option(Value, "demand", translate("disconnect when idle for"), "s") -cod:depends("proto", "pppoe") -cod:depends("proto", "pptp") -cod.rmempty = true - -srv = s:option(Value, "server", translate("PPTP-Server")) -srv:depends("proto", "pptp") -srv.rmempty = true - - - -return m diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/passwd.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/passwd.lua deleted file mode 100644 index 39123a76e7..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/passwd.lua +++ /dev/null @@ -1,35 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -f = SimpleForm("password", translate("Admin Password"), translate("Change the password of the system administrator (User root)")) - -pw1 = f:field(Value, "pw1", translate("Password")) -pw1.password = true -pw1.rmempty = false - -pw2 = f:field(Value, "pw2", translate("Confirmation")) -pw2.password = true -pw2.rmempty = false - -function pw2.validate(self, value, section) - return pw1:formvalue(section) == value and value -end - -function f.handle(self, state, data) - if state == FORM_VALID then - local stat = luci.sys.user.setpasswd("root", data.pw1) == 0 - - if stat then - f.message = translate("Password successfully changed") - else - f.errmessage = translate("Unknown Error") - end - - data.pw1 = nil - data.pw2 = nil - end - return true -end - -return f \ No newline at end of file diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/system.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/system.lua deleted file mode 100644 index b621ad0731..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/system.lua +++ /dev/null @@ -1,76 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -require("luci.sys") -require("luci.sys.zoneinfo") -require("luci.tools.webadmin") -require("luci.util") - - -m = Map("system", translate("System"), translate("Here you can configure the basic aspects of your device like its hostname or the timezone.")) - -s = m:section(TypedSection, "system", "") -s.anonymous = true -s.addremove = false - - -local sysinfo = luci.util.ubus("system", "info") or { } -local boardinfo = luci.util.ubus("system", "board") or { } - -local uptime = sysinfo.uptime or 0 -local loads = sysinfo.load or { 0, 0, 0 } -local memory = sysinfo.memory or { - total = 0, - free = 0, - buffered = 0, - shared = 0 -} - -s:option(DummyValue, "_system", translate("Model")).value = boardinfo.model or "?" -s:option(DummyValue, "_cpu", translate("System")).value = boardinfo.system or "?" - -s:option(DummyValue, "_la", translate("Load")).value = - string.format("%.2f, %.2f, %.2f", loads[1] / 65535.0, loads[2] / 65535.0, loads[3] / 65535.0) - -s:option(DummyValue, "_memtotal", translate("Memory")).value = - string.format("%.2f MB (%.0f%% %s, %.0f%% %s)", - tonumber(memory.total) / 1024 / 1024, - 100 * memory.buffered / memory.total, - tostring(translate("buffered")), - 100 * memory.free / memory.total, - tostring(translate("free")) -) - -s:option(DummyValue, "_systime", translate("Local Time")).value = - os.date("%c") - -s:option(DummyValue, "_uptime", translate("Uptime")).value = - luci.tools.webadmin.date_format(tonumber(uptime)) - -hn = s:option(Value, "hostname", translate("Hostname")) - -function hn.write(self, section, value) - Value.write(self, section, value) - luci.sys.hostname(value) -end - - -tz = s:option(ListValue, "zonename", translate("Timezone")) -tz:value("UTC") - -for i, zone in ipairs(luci.sys.zoneinfo.TZ) do - tz:value(zone[1]) -end - -function tz.write(self, section, value) - local function lookup_zone(title) - for _, zone in ipairs(luci.sys.zoneinfo.TZ) do - if zone[1] == title then return zone[2] end - end - end - - AbstractValue.write(self, section, value) - self.map.uci:set("system", section, "timezone", lookup_zone(value) or "GMT0") -end - -return m diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua deleted file mode 100644 index ec929f1ed9..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua +++ /dev/null @@ -1,350 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - --- Data init -- - -local fs = require "nixio.fs" -local sys = require "luci.sys" -local uci = require "luci.model.uci".cursor() - -if not uci:get("network", "wan") then - uci:section("network", "interface", "wan", {proto="none", ifname=" "}) - uci:save("network") - uci:commit("network") -end - -local wlcursor = luci.model.uci.cursor_state() -local wireless = wlcursor:get_all("wireless") -local wifidevs = {} -local ifaces = {} - -for k, v in pairs(wireless) do - if v[".type"] == "wifi-iface" then - table.insert(ifaces, v) - end -end - -wlcursor:foreach("wireless", "wifi-device", - function(section) - table.insert(wifidevs, section[".name"]) - end) - - --- Main Map -- - -m = Map("wireless", translate("Wireless"), translate("Here you can configure installed wifi devices.")) -m:chain("network") - - --- Status Table -- -s = m:section(Table, ifaces, translate("Networks")) - -link = s:option(DummyValue, "_link", translate("Link")) -function link.cfgvalue(self, section) - local ifname = self.map:get(section, "ifname") - local iwinfo = sys.wifi.getiwinfo(ifname) - return iwinfo and "%d/%d" %{ iwinfo.quality, iwinfo.quality_max } or "-" -end - -essid = s:option(DummyValue, "ssid", "ESSID") - -bssid = s:option(DummyValue, "_bsiid", "BSSID") -function bssid.cfgvalue(self, section) - local ifname = self.map:get(section, "ifname") - local iwinfo = sys.wifi.getiwinfo(ifname) - return iwinfo and iwinfo.bssid or "-" -end - -channel = s:option(DummyValue, "channel", translate("Channel")) -function channel.cfgvalue(self, section) - return wireless[self.map:get(section, "device")].channel -end - -protocol = s:option(DummyValue, "_mode", translate("Protocol")) -function protocol.cfgvalue(self, section) - local mode = wireless[self.map:get(section, "device")].mode - return mode and "802." .. mode -end - -mode = s:option(DummyValue, "mode", translate("Mode")) -encryption = s:option(DummyValue, "encryption", translate("Encr.")) - -power = s:option(DummyValue, "_power", translate("Power")) -function power.cfgvalue(self, section) - local ifname = self.map:get(section, "ifname") - local iwinfo = sys.wifi.getiwinfo(ifname) - return iwinfo and "%d dBm" % iwinfo.txpower or "-" -end - -scan = s:option(Button, "_scan", translate("Scan")) -scan.inputstyle = "find" - -function scan.cfgvalue(self, section) - return self.map:get(section, "ifname") or false -end - --- WLAN-Scan-Table -- - -t2 = m:section(Table, {}, translate("WLAN-Scan"), translate("Wifi networks in your local environment")) - -function scan.write(self, section) - m.autoapply = false - t2.render = t2._render - local ifname = self.map:get(section, "ifname") - local iwinfo = sys.wifi.getiwinfo(ifname) - if iwinfo then - local _, cell - for _, cell in ipairs(iwinfo.scanlist) do - t2.data[#t2.data+1] = { - Quality = "%d/%d" %{ cell.quality, cell.quality_max }, - ESSID = cell.ssid, - Address = cell.bssid, - Mode = cell.mode, - ["Encryption key"] = cell.encryption.enabled and "On" or "Off", - ["Signal level"] = "%d dBm" % cell.signal, - ["Noise level"] = "%d dBm" % iwinfo.noise - } - end - end -end - -t2._render = t2.render -t2.render = function() end - -t2:option(DummyValue, "Quality", translate("Link")) -essid = t2:option(DummyValue, "ESSID", "ESSID") -function essid.cfgvalue(self, section) - return self.map:get(section, "ESSID") -end - -t2:option(DummyValue, "Address", "BSSID") -t2:option(DummyValue, "Mode", translate("Mode")) -chan = t2:option(DummyValue, "channel", translate("Channel")) -function chan.cfgvalue(self, section) - return self.map:get(section, "Channel") - or self.map:get(section, "Frequency") - or "-" -end - -t2:option(DummyValue, "Encryption key", translate("Encr.")) - -t2:option(DummyValue, "Signal level", translate("Signal")) - -t2:option(DummyValue, "Noise level", translate("Noise")) - - - -if #wifidevs < 1 then - return m -end - --- Config Section -- - -s = m:section(NamedSection, wifidevs[1], "wifi-device", translate("Devices")) -s.addremove = false - -en = s:option(Flag, "disabled", translate("enable")) -en.rmempty = false -en.enabled = "0" -en.disabled = "1" - -function en.cfgvalue(self, section) - return Flag.cfgvalue(self, section) or "0" -end - - -local hwtype = m:get(wifidevs[1], "type") - -ch = s:option(Value, "channel", translate("Channel")) -for i=1, 14 do - ch:value(i, i .. " (2.4 GHz)") -end - - -s = m:section(TypedSection, "wifi-iface", translate("Local Network")) -s.anonymous = true -s.addremove = false - -s:option(Value, "ssid", translate("Network Name (ESSID)")) - -bssid = s:option(Value, "bssid", translate("BSSID")) - -local devs = {} -luci.model.uci.cursor():foreach("wireless", "wifi-device", - function (section) - table.insert(devs, section[".name"]) - end) - -if #devs > 1 then - device = s:option(DummyValue, "device", translate("Device")) -else - s.defaults.device = devs[1] -end - -mode = s:option(ListValue, "mode", translate("Mode")) -mode.override_values = true -mode:value("ap", translate("Provide (Access Point)")) -mode:value("adhoc", translate("Independent (Ad-Hoc)")) -mode:value("sta", translate("Join (Client)")) - -function mode.write(self, section, value) - if value == "sta" then - local oldif = m.uci:get("network", "wan", "ifname") - if oldif and oldif ~= " " then - m.uci:set("network", "wan", "_ifname", oldif) - end - m.uci:set("network", "wan", "ifname", " ") - - self.map:set(section, "network", "wan") - else - if m.uci:get("network", "wan", "_ifname") then - m.uci:set("network", "wan", "ifname", m.uci:get("network", "wan", "_ifname")) - end - self.map:set(section, "network", "lan") - end - - return ListValue.write(self, section, value) -end - -encr = s:option(ListValue, "encryption", translate("Encryption")) -encr.override_values = true -encr:value("none", "No Encryption") -encr:value("wep", "WEP") - -if hwtype == "mac80211" then - local supplicant = fs.access("/usr/sbin/wpa_supplicant") - local hostapd = fs.access("/usr/sbin/hostapd") - - if hostapd and supplicant then - encr:value("psk", "WPA-PSK") - encr:value("psk2", "WPA2-PSK") - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode") - encr:value("wpa", "WPA-Radius", {mode="ap"}, {mode="sta"}) - encr:value("wpa2", "WPA2-Radius", {mode="ap"}, {mode="sta"}) - elseif hostapd and not supplicant then - encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="adhoc"}) - encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="adhoc"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="adhoc"}) - encr:value("wpa", "WPA-Radius", {mode="ap"}) - encr:value("wpa2", "WPA2-Radius", {mode="ap"}) - encr.description = translate( - "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. - "and ad-hoc mode) to be installed." - ) - elseif not hostapd and supplicant then - encr:value("psk", "WPA-PSK", {mode="sta"}) - encr:value("psk2", "WPA2-PSK", {mode="sta"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}) - encr:value("wpa", "WPA-EAP", {mode="sta"}) - encr:value("wpa2", "WPA2-EAP", {mode="sta"}) - encr.description = translate( - "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. - "and ad-hoc mode) to be installed." - ) - else - encr.description = translate( - "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. - "and ad-hoc mode) to be installed." - ) - end -elseif hwtype == "broadcom" then - encr:value("psk", "WPA-PSK") - encr:value("psk2", "WPA2-PSK") - encr:value("psk+psk2", "WPA-PSK/WPA2-PSK Mixed Mode") -end - -key = s:option(Value, "key", translate("Key")) -key:depends("encryption", "wep") -key:depends("encryption", "psk") -key:depends("encryption", "psk2") -key:depends("encryption", "psk+psk2") -key:depends("encryption", "psk-mixed") -key:depends({mode="ap", encryption="wpa"}) -key:depends({mode="ap", encryption="wpa2"}) -key.rmempty = true -key.password = true - -server = s:option(Value, "server", translate("Radius-Server")) -server:depends({mode="ap", encryption="wpa"}) -server:depends({mode="ap", encryption="wpa2"}) -server.rmempty = true - -port = s:option(Value, "port", translate("Radius-Port")) -port:depends({mode="ap", encryption="wpa"}) -port:depends({mode="ap", encryption="wpa2"}) -port.rmempty = true - - -if hwtype == "mac80211" then - nasid = s:option(Value, "nasid", translate("NAS ID")) - nasid:depends({mode="ap", encryption="wpa"}) - nasid:depends({mode="ap", encryption="wpa2"}) - nasid.rmempty = true - - eaptype = s:option(ListValue, "eap_type", translate("EAP-Method")) - eaptype:value("TLS") - eaptype:value("TTLS") - eaptype:value("PEAP") - eaptype:depends({mode="sta", encryption="wpa"}) - eaptype:depends({mode="sta", encryption="wpa2"}) - - cacert = s:option(FileUpload, "ca_cert", translate("Path to CA-Certificate")) - cacert:depends({mode="sta", encryption="wpa"}) - cacert:depends({mode="sta", encryption="wpa2"}) - - privkey = s:option(FileUpload, "priv_key", translate("Path to Private Key")) - privkey:depends({mode="sta", eap_type="TLS", encryption="wpa2"}) - privkey:depends({mode="sta", eap_type="TLS", encryption="wpa"}) - - privkeypwd = s:option(Value, "priv_key_pwd", translate("Password of Private Key")) - privkeypwd:depends({mode="sta", eap_type="TLS", encryption="wpa2"}) - privkeypwd:depends({mode="sta", eap_type="TLS", encryption="wpa"}) - - - auth = s:option(Value, "auth", translate("Authentication")) - auth:value("PAP") - auth:value("CHAP") - auth:value("MSCHAP") - auth:value("MSCHAPV2") - auth:depends({mode="sta", eap_type="PEAP", encryption="wpa2"}) - auth:depends({mode="sta", eap_type="PEAP", encryption="wpa"}) - auth:depends({mode="sta", eap_type="TTLS", encryption="wpa2"}) - auth:depends({mode="sta", eap_type="TTLS", encryption="wpa"}) - - - identity = s:option(Value, "identity", translate("Identity")) - identity:depends({mode="sta", eap_type="PEAP", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="PEAP", encryption="wpa"}) - identity:depends({mode="sta", eap_type="TTLS", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="TTLS", encryption="wpa"}) - - password = s:option(Value, "password", translate("Password")) - password:depends({mode="sta", eap_type="PEAP", encryption="wpa2"}) - password:depends({mode="sta", eap_type="PEAP", encryption="wpa"}) - password:depends({mode="sta", eap_type="TTLS", encryption="wpa2"}) - password:depends({mode="sta", eap_type="TTLS", encryption="wpa"}) -end - - -if hwtype == "broadcom" then - iso = s:option(Flag, "isolate", translate("AP-Isolation"), translate("Prevents Client to Client communication")) - iso.rmempty = true - iso:depends("mode", "ap") - - hide = s:option(Flag, "hidden", translate("Hide ESSID")) - hide.rmempty = true - hide:depends("mode", "ap") -end - -if hwtype == "mac80211" then - bssid:depends({mode="adhoc"}) -end - -if hwtype == "broadcom" then - bssid:depends({mode="wds"}) - bssid:depends({mode="adhoc"}) -end - - -return m diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/applyreboot.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/applyreboot.htm deleted file mode 100644 index d33a2ca291..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/applyreboot.htm +++ /dev/null @@ -1,13 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:System%>

    -
    -

    <% if msg then %><%=msg%><% else %><%:Changes applied.%><% end %>

    -

    <%:Please wait: Device rebooting...%>

    - -<%+footer%> \ No newline at end of file diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/backup.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/backup.htm deleted file mode 100644 index efc6aa72f7..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/backup.htm +++ /dev/null @@ -1,32 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:System%>

    -

    <%:Backup / Restore%>

    -

    <%:Here you can backup and restore your configuration and - if possible - reset this device to the default settings.%>

    -
    -
    - -
    - -
    - -
    -
    <%:Backup Archive%>:
    -
    - -
    -
    - -
    -
    -<%+footer%> diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/index.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/index.htm deleted file mode 100644 index 621e3cbe89..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/index.htm +++ /dev/null @@ -1,13 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -

    <%:Hello!%>

    -

    <%_This is the administration area of LuCI.%>

    -

    <%_LuCI is a free, flexible, and user friendly graphical interface for configuring OpenWrt.%>
    -<%:On the following pages you can adjust all important settings of this device.%>

    -

    <%:As we always want to improve this interface we are looking forward to your feedback and suggestions.%>

    -

    <%:And now have fun with your device!%>

    -

    <%_The LuCI Team%>

    diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/reboot.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/reboot.htm deleted file mode 100644 index f70e7c92da..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/reboot.htm +++ /dev/null @@ -1,25 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:System%>

    -

    <%:Reboot%>

    -

    <%:Reboots the operating system of your device%>

    -<%- -local c = require("luci.model.uci").cursor():changes() -if c and next(c) then --%> -

    <%:Warning: There are unsaved changes that will be lost while rebooting!%>

    -<%- -end -if not reboot then --%> -

    <%:Perform reboot%>

    -<%- else -%> -

    <%:Please wait: Device rebooting...%>

    - -<%- end -%> -<%+footer%> \ No newline at end of file diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/upgrade.htm b/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/upgrade.htm deleted file mode 100644 index ef3e2e8d12..0000000000 --- a/package/luci/modules/luci-mod-admin-mini/luasrc/view/mini/upgrade.htm +++ /dev/null @@ -1,96 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2009 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:System%>

    -

    <%:Flash Firmware%>

    - -<% if step == 1 then %> - <% if supported then %> -
    -

    - <%:Upload a sysupgrade-compatible image file to reflash the device.%> - <% if bad_image then %> -

    -

    <%:The uploaded image file does not - contain a supported format. Make sure that you choose the generic - image format for your platform. %>
    - <% end %> -

    -
    - <%:Firmware image%>:
    - - -
    -
    - <% if keepavail then -%> - - <%:Keep configuration files%> - <% end -%> - -
    - -
    -
    - <% else %> -
    <%_ Sorry. - A system upgrade is not supported on this platform.
    - You need to manually flash your device. %>
    - <% end %> -<% elseif step == 2 then %> -

    - <%_ The flash image was uploaded. - Below is the checksum and file size listed, - compare them with the original file to ensure data integrity.
    - Click "Proceed" below to start the flash procedure. %> - - <% if flashsize > 0 and filesize > flashsize then %> -

    -

    <%:It appears that you are trying to - flash an image that does not fit into the flash memory, please verify - the image file! %>
    - <% end %> - -
    -
      -
    • <%:Checksum%>: <%=checksum%>
    • -
    • <%:Size%>: <% - local w = require "luci.tools.webadmin" - write(w.byte_format(filesize)) - - if flashsize > 0 then - write(luci.i18n.translatef( - " (%s available)", - w.byte_format(flashsize) - )) - end - %>
    • -
    -

    -
    -
    - - " /> - -
    -
    - - " /> - -
    -
    -<% elseif step == 3 then %> -

    <%_ The system is flashing now.
    - DO NOT POWER OFF THE DEVICE!
    - Wait a few minutes before you try to reconnect. - It might be necessary to renew the address of your computer to reach the device - again, depending on your settings. %>

    - - -<% end %> -<%+footer%> - diff --git a/package/luci/modules/luci-mod-failsafe/Makefile b/package/luci/modules/luci-mod-failsafe/Makefile deleted file mode 100644 index 8afc614f26..0000000000 --- a/package/luci/modules/luci-mod-failsafe/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Fail-Safe - Fail-Safe sysupgrade module -LUCI_DEPENDS:=+luci-base - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua b/package/luci/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua deleted file mode 100644 index 60caadb4b1..0000000000 --- a/package/luci/modules/luci-mod-failsafe/luasrc/controller/failsafe/failsafe.lua +++ /dev/null @@ -1,202 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2011 Jo-Philipp Wich --- Copyright 2012 Daniel Golle --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.failsafe.failsafe", package.seeall) - -function index() - local root = node() - if not root.target then - root.target = alias("failsafe") - root.index = true - end - - page = node() - page.lock = true - page.target = alias("failsafe") - page.subindex = true - page.index = false - - page = node("failsafe") - page.title = _("Fail-safe") - page.target = alias("failsafe", "flashops") - page.order = 5 - page.setuser = "root" - page.setgroup = "root" - page.index = true - - entry({"failsafe", "flashops"}, call("action_flashops"), _("Flash Firmware"), 70).index = true - entry({"failsafe", "reboot"}, call("action_reboot"), _("Reboot"), 90) -end - -function action_flashops() - local sys = require "luci.sys" - local fs = require "nixio.fs" - - local upgrade_avail = fs.access("/lib/upgrade/platform.sh") - local reset_avail = os.execute([[grep '"rootfs_data"' /proc/mtd >/dev/null 2>&1]]) == 0 - - local image_tmp = "/tmp/firmware.img" - - local function image_supported() - -- XXX: yay... - return ( 0 == os.execute( - ". /lib/functions.sh; " .. - "include /lib/upgrade; " .. - "platform_check_image %q >/dev/null" - % image_tmp - ) ) - end - - local function image_checksum() - return (luci.sys.exec("md5sum %q" % image_tmp):match("^([^%s]+)")) - end - - local function storage_size() - local size = 0 - if fs.access("/proc/mtd") then - for l in io.lines("/proc/mtd") do - local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"') - if n == "linux" or n == "firmware" then - size = tonumber(s, 16) - break - end - end - elseif fs.access("/proc/partitions") then - for l in io.lines("/proc/partitions") do - local x, y, b, n = l:match('^%s*(%d+)%s+(%d+)%s+([^%s]+)%s+([^%s]+)') - if b and n and not n:match('[0-9]') then - size = tonumber(b) * 1024 - break - end - end - end - return size - end - - - local fp - luci.http.setfilehandler( - function(meta, chunk, eof) - if not fp then - if meta and meta.name == "image" then - fp = io.open(image_tmp, "w") - end - end - if fp then - if chunk then - fp:write(chunk) - end - if eof then - fp:close() - end - end - end - ) - - if luci.http.formvalue("image") or luci.http.formvalue("step") then - -- - -- Initiate firmware flash - -- - local step = tonumber(luci.http.formvalue("step") or 1) - if step == 1 then - if image_supported() then - luci.template.render("failsafe/upgrade", { - checksum = image_checksum(), - storage = storage_size(), - size = (fs.stat(image_tmp, "size") or 0), - keep = false - }) - else - fs.unlink(image_tmp) - luci.template.render("failsafe/flashops", { - reset_avail = reset_avail, - upgrade_avail = upgrade_avail, - image_invalid = true - }) - end - -- - -- Start sysupgrade flash - -- - elseif step == 2 then - local keep = (luci.http.formvalue("keep") == "1") and "" or "-n" - luci.template.render("failsafe/applyreboot", { - title = luci.i18n.translate("Flashing..."), - msg = luci.i18n.translate("The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), - addr = (#keep > 0) and "192.168.1.1" or nil - }) - fork_exec("killall dropbear uhttpd; sleep 1; /sbin/sysupgrade %s %q" %{ keep, image_tmp }) - end - else - -- - -- Overview - -- - luci.template.render("failsafe/flashops", { - reset_avail = reset_avail, - upgrade_avail = upgrade_avail - }) - end -end - -function action_reboot() - local reboot = luci.http.formvalue("reboot") - luci.template.render("failsafe/reboot", {reboot=reboot}) - if reboot then - luci.sys.reboot() - end -end - -function fork_exec(command) - local pid = nixio.fork() - if pid > 0 then - return - elseif pid == 0 then - -- change to root dir - nixio.chdir("/") - - -- patch stdin, out, err to /dev/null - local null = nixio.open("/dev/null", "w+") - if null then - nixio.dup(null, nixio.stderr) - nixio.dup(null, nixio.stdout) - nixio.dup(null, nixio.stdin) - if null:fileno() > 2 then - null:close() - end - end - - -- replace with target command - nixio.exec("/bin/sh", "-c", command) - end -end - -function ltn12_popen(command) - - local fdi, fdo = nixio.pipe() - local pid = nixio.fork() - - if pid > 0 then - fdo:close() - local close - return function() - local buffer = fdi:read(2048) - local wpid, stat = nixio.waitpid(pid, "nohang") - if not close and wpid and stat == "exited" then - close = true - end - - if buffer and #buffer > 0 then - return buffer - elseif close then - fdi:close() - return nil - end - end - elseif pid == 0 then - nixio.dup(fdo, nixio.stdout) - fdi:close() - fdo:close() - nixio.exec("/bin/sh", "-c", command) - end -end diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/applyreboot.htm b/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/applyreboot.htm deleted file mode 100644 index 12c138c165..0000000000 --- a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/applyreboot.htm +++ /dev/null @@ -1,41 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - - - - <%=luci.sys.hostname()%> - <% if title then %><%=title%><% else %><%:Rebooting...%><% end %> - - - - - -
    -
    -

    <%:System%> - <% if title then %><%=title%><% else %><%:Rebooting...%><% end %>

    -
    -

    - <% if msg then %><%=msg%><% else %><%:Changes applied.%><% end %> -

    -

    - <%:Loading%> - <%:Waiting for changes to be applied...%> -

    -
    -
    -
    - - diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/flashops.htm b/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/flashops.htm deleted file mode 100644 index d6e9ad7426..0000000000 --- a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/flashops.htm +++ /dev/null @@ -1,34 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2012 Daniel Golle - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Flash operations%>

    -
    - <%:Flash new firmware image%> - <% if upgrade_avail then %> -
    -
    <%:Upload a sysupgrade-compatible image. %>
    -
    -
    - -
    - - -
    -
    -
    - <% if image_invalid then %> -
    <%:The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform. %>
    - <% end %> -
    - <% else %> -
    <%:Sorry, there is no sysupgrade support present; a new firmware image must be flashed manually. Please refer to the wiki for device specific install instructions.%>
    - <% end %> -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/reboot.htm b/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/reboot.htm deleted file mode 100644 index cbbe13b427..0000000000 --- a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/reboot.htm +++ /dev/null @@ -1,18 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2012 Daniel Golle - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:System%>

    -

    <%:Reboot%>

    -

    <%:Reboots the operating system of your device%>

    -<%- if not reboot then -%> -

    <%:Perform reboot%>

    -<%- else -%> -

    <%:Please wait: Device rebooting...%>

    - -<%- end -%> -<%+footer%> diff --git a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/upgrade.htm b/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/upgrade.htm deleted file mode 100644 index 3be9ae1193..0000000000 --- a/package/luci/modules/luci-mod-failsafe/luasrc/view/failsafe/upgrade.htm +++ /dev/null @@ -1,53 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2009 Jo-Philipp Wich - Copyright 2012 Daniel Golle - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Flash Firmware%> - <%:Verify%>

    -

    - <%_ The flash image was uploaded. - Below is the checksum and file size listed, - compare them with the original file to ensure data integrity.
    - Click "Proceed" below to start the flash procedure. %> - - <% if storage > 0 and size > storage then %> -

    -

    <%:It appears that you are trying to - flash an image that does not fit into the flash memory, please verify - the image file! %>
    - <% end %> - -

    - -
    -
      -
    • <%:Checksum%>: <%=checksum%>
    • -
    • <%:Size%>: <% - local w = require "luci.tools.webadmin" - write(w.byte_format(size)) - - if storage > 0 then - write(luci.i18n.translatef( - " (%s available)", - w.byte_format(storage) - )) - end - %>
    • -
    -
    - -
    -
    - -
    -
    - - -
    -
    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-freifunk-community/Makefile b/package/luci/modules/luci-mod-freifunk-community/Makefile deleted file mode 100644 index ad6c4ce2ef..0000000000 --- a/package/luci/modules/luci-mod-freifunk-community/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Freifunk Community Meta-Package -LUCI_DEPENDS:= \ - +iptables-mod-nat-extra +iptables-mod-ipopt +luci-app-splash \ - +olsrd +olsrd-mod-dyn-gw-plain +olsrd-mod-jsoninfo +olsrd-mod-nameservice \ - +olsrd-mod-watchdog +kmod-tun +ip +freifunk-watchdog +luci-app-olsr \ - +luci-app-olsr-services +freifunk-gwcheck +freifunk-mapupdate - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/package/luci/modules/luci-mod-freifunk/Makefile b/package/luci/modules/luci-mod-freifunk/Makefile deleted file mode 100644 index 550db1df15..0000000000 --- a/package/luci/modules/luci-mod-freifunk/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Freifunk module -LUCI_DEPENDS:=+luci-mod-admin-full +luci-lib-json +freifunk-firewall +freifunk-common - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html b/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html deleted file mode 100644 index 43e51236d7..0000000000 --- a/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - LuCI - System Upgrade - - - - - - - -
    -

    Performing Upgrade

    - -

    - The System is flashing now. The procedure can take up to 25 minutes, - please be patient and wait until this page reloads itself. - -
    - - Remaining time (estimated): unknown -

    -
    - - - diff --git a/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/OSMLatLon.htm b/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/OSMLatLon.htm deleted file mode 100644 index 18be30be35..0000000000 --- a/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/OSMLatLon.htm +++ /dev/null @@ -1,20 +0,0 @@ - - - - OpenStreetMap - - - - - -
    -
    - Map by openstreetmap.org, License CC-BY-SA -      - - Latitude: - Longitude: - -
    - - diff --git a/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/flashing.gif b/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/flashing.gif deleted file mode 100644 index e207fc56a1fcf035eba568f4ba5396f6dcd030fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4261 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 J1u-yK0|2#tP22zg diff --git a/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/freifunk-map/node.gif b/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/freifunk-map/node.gif deleted file mode 100644 index f64ab162a451f8eb04b6b6664694b7b907f511cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmZ?wbhEHblwgoxn8?JykoF$}7#J87|8x7fh6Fo12DlpO889<~gnqJcrZ6xu=m6P3 z4H66tOfpmYSDt>$zj)4;Tiu^o8K20d%vnD5S?97>r?&YrV$-02q#^T$MT30IJcgEO z>}4^>w!Py%{^^exNE0iXEt&{TzniX^HT-9tTF#*4D)o$G%JV0UuXpUd(fj<@x$pmi H7#OSpv*u0Q diff --git a/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/osm.js b/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/osm.js deleted file mode 100644 index cae0cd66f7..0000000000 --- a/package/luci/modules/luci-mod-freifunk/htdocs/luci-static/resources/osm.js +++ /dev/null @@ -1,130 +0,0 @@ -var map; -var layer_mapnik; -var layer_tah; -var layer_markers; -var PI = Math.PI; -var latfield = ''; -var lonfield = ''; -var latfield_id=''; -var lonfield_id=''; -var centerlon = 10; -var centerlat = 52; -var zoom = 6; - -function lon2merc(lon) { - return 20037508.34 * lon / 180; -} - -function lat2merc(lat) { - lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / PI; - return 20037508.34 * lat; -} - -function merc2lon(lon) { - return lon*180/20037508.34; -}; - -function merc2lat(lat) { - return Math.atan(Math.exp(lat*PI/20037508.34))*360/PI-90; -}; - -OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { - defaultHandlerOptions: { - 'single': true, - 'double': false, - 'pixelTolerance': 0, - 'stopSingle': false, - 'stopDouble': false - }, - - initialize: function(options) { - this.handlerOptions = OpenLayers.Util.extend( - {}, this.defaultHandlerOptions - ); - OpenLayers.Control.prototype.initialize.apply( - this, arguments - ); - this.handler = new OpenLayers.Handler.Click( - this, { - 'click': this.trigger - }, this.handlerOptions - ); - }, - - trigger: function(e) { - var lonlat = map.getLonLatFromViewPortPx(e.xy); - lat=merc2lat(lonlat.lat); - lon=merc2lon(lonlat.lon); - if(parent.document.getElementById(latfield_id)==null){ - latfield=document.getElementById('osmlat'); - }else{ - latfield=parent.document.getElementById(latfield_id); - } - if(parent.document.getElementById(lonfield_id)==null){ - lonfield=document.getElementById('osmlon'); - }else{ - lonfield=parent.document.getElementById(lonfield_id); - } - latfield.value = lat; - lonfield.value = lon; - } -}); - -function init(){ - var field = window.name.substring(0, window.name.lastIndexOf(".")); - if(parent.document.getElementById(field+".latfield")!=null){ - latfield_id = parent.document.getElementById(field+".latfield").value; - document.getElementById('osm').style.display="none"; - } - if(parent.document.getElementById(field+".lonfield")!=null){ - lonfield_id = parent.document.getElementById(field+".lonfield").value; - } - if(parent.document.getElementById(field+".centerlat")!=null){ - centerlat =parseFloat(parent.document.getElementById(field+".centerlat").value); - } - if(parent.document.getElementById(field+".centerlon")!=null){ - centerlon = parseFloat(parent.document.getElementById(field+".centerlon").value); - } - if(parent.document.getElementById(field+".zoom")!=null){ - zoom = parseFloat(parent.document.getElementById(field+".zoom").value); - } -} - -function drawmap() { - OpenLayers.Lang.setCode('de'); - mapdiv=document.getElementById('map'); - mapdiv.style.height=window.innerHeight+"px"; - mapdiv.style.width=window.innerWidth+"px"; - map = new OpenLayers.Map('map', { - projection: new OpenLayers.Projection("EPSG:900913"), - displayProjection: new OpenLayers.Projection("EPSG:4326"), - controls: [ - new OpenLayers.Control.Navigation(), - new OpenLayers.Control.PanZoomBar()], - maxExtent: - new OpenLayers.Bounds(-20037508.34,-20037508.34, 20037508.34, 20037508.34), - numZoomLevels: 18, - maxResolution: 156543, - units: 'meters' - }); - - layer_mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik"); - - map.addLayers([layer_mapnik]); - var y =lat2merc(centerlat); - var x =lon2merc(centerlon); - map.setCenter(new OpenLayers.LonLat(x, y), zoom); - - // Check for geolocation support - if(navigator.geolocation){ - navigator.geolocation.getCurrentPosition(function(position){ - var y =lat2merc(position.coords.latitude); - var x =lon2merc(position.coords.longitude); - map.setCenter(new OpenLayers.LonLat(x, y), '17'); - }); - } - - var click = new OpenLayers.Control.Click(); - map.addControl(click); - click.activate(); -} diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua b/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua deleted file mode 100644 index e2291e5ca6..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua +++ /dev/null @@ -1,218 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.freifunk.freifunk", package.seeall) - -function index() - local uci = require "luci.model.uci".cursor() - local page - - -- Frontend - page = node() - page.lock = true - page.target = alias("freifunk") - page.subindex = true - page.index = false - - page = node("freifunk") - page.title = _("Freifunk") - page.target = alias("freifunk", "index") - page.order = 5 - page.setuser = "nobody" - page.setgroup = "nogroup" - page.i18n = "freifunk" - page.index = true - - page = node("freifunk", "index") - page.target = template("freifunk/index") - page.title = _("Overview") - page.order = 10 - page.indexignore = true - - page = node("freifunk", "contact") - page.target = template("freifunk/contact") - page.title = _("Contact") - page.order = 15 - - page = node("freifunk", "status") - page.target = template("freifunk/public_status") - page.title = _("Status") - page.order = 20 - page.i18n = "base" - page.setuser = false - page.setgroup = false - - entry({"freifunk", "status.json"}, call("jsonstatus")) - entry({"freifunk", "status", "zeroes"}, call("zeroes"), "Testdownload") - - if nixio.fs.access("/usr/sbin/luci-splash") then - assign({"freifunk", "status", "splash"}, {"splash", "publicstatus"}, _("Splash"), 40) - end - - page = assign({"freifunk", "olsr"}, {"admin", "status", "olsr"}, _("OLSR"), 30) - page.setuser = false - page.setgroup = false - - if nixio.fs.access("/etc/config/luci_statistics") then - assign({"freifunk", "graph"}, {"admin", "statistics", "graph"}, _("Statistics"), 40) - end - - -- backend - assign({"mini", "freifunk"}, {"admin", "freifunk"}, _("Freifunk"), 5) - entry({"admin", "freifunk"}, alias("admin", "freifunk", "index"), _("Freifunk"), 5) - - page = node("admin", "freifunk") - page.target = template("freifunk/adminindex") - page.title = _("Freifunk") - page.order = 5 - - page = node("admin", "freifunk", "basics") - page.target = cbi("freifunk/basics") - page.title = _("Basic Settings") - page.order = 5 - - page = node("admin", "freifunk", "basics", "profile") - page.target = cbi("freifunk/profile") - page.title = _("Profile") - page.order = 10 - - page = node("admin", "freifunk", "basics", "profile_expert") - page.target = cbi("freifunk/profile_expert") - page.title = _("Profile (Expert)") - page.order = 20 - - page = node("admin", "freifunk", "Index-Page") - page.target = cbi("freifunk/user_index") - page.title = _("Index Page") - page.order = 50 - - page = node("admin", "freifunk", "contact") - page.target = cbi("freifunk/contact") - page.title = _("Contact") - page.order = 15 - - entry({"freifunk", "map"}, template("freifunk-map/frame"), _("Map"), 50) - entry({"freifunk", "map", "content"}, template("freifunk-map/map"), nil, 51) - entry({"admin", "freifunk", "profile_error"}, template("freifunk/profile_error")) -end - -function zeroes() - local string = require "string" - local http = require "luci.http" - local zeroes = string.rep(string.char(0), 8192) - local cnt = 0 - local lim = 1024 * 1024 * 1024 - - http.prepare_content("application/x-many-zeroes") - - while cnt < lim do - http.write(zeroes) - cnt = cnt + #zeroes - end -end - -function jsonstatus() - local root = {} - local sys = require "luci.sys" - local uci = require "luci.model.uci" - local util = require "luci.util" - local http = require "luci.http" - local json = require "luci.json" - local ltn12 = require "luci.ltn12" - local version = require "luci.version" - local webadmin = require "luci.tools.webadmin" - - local cursor = uci.cursor_state() - - local ffzone = webadmin.firewall_find_zone("freifunk") - local ffznet = ffzone and cursor:get("firewall", ffzone, "network") - local ffwifs = ffznet and util.split(ffznet, " ") or {} - - local sysinfo = util.ubus("system", "info") or { } - local boardinfo = util.ubus("system", "board") or { } - - local loads = sysinfo.load or { 0, 0, 0 } - - local memory = sysinfo.memory or { - total = 0, - free = 0, - shared = 0, - buffered = 0 - } - - local swap = sysinfo.swap or { - total = 0, - free = 0 - } - - - root.protocol = 1 - - root.system = { - uptime = { sysinfo.uptime or 0 }, - loadavg = { loads[1] / 65535.0, loads[2] / 65535.0, loads[3] / 65535.0 }, - sysinfo = { - boardinfo.system or "?", - boardinfo.model or "?", - memory.total, - 0, -- former cached memory - memory.buffered, - memory.free, - 0, -- former bogomips - swap.total, - 0, -- former cached swap - swap.free - }, - hostname = boardinfo.hostname - } - - root.firmware = { - luciname=version.luciname, - luciversion=version.luciversion, - distname=version.distname, - distversion=version.distversion - } - - root.freifunk = {} - cursor:foreach("freifunk", "public", function(s) - root.freifunk[s[".name"]] = s - end) - - cursor:foreach("system", "system", function(s) - root.geo = { - latitude = s.latitude, - longitude = s.longitude - } - end) - - root.network = {} - root.wireless = {devices = {}, interfaces = {}, status = {}} - local wifs = root.wireless.interfaces - - for _, vif in ipairs(ffwifs) do - root.network[vif] = cursor:get_all("network", vif) - root.wireless.devices[vif] = cursor:get_all("wireless", vif) - cursor:foreach("wireless", "wifi-iface", function(s) - if s.device == vif and s.network == vif then - wifs[#wifs+1] = s - if s.ifname then - local iwinfo = luci.sys.wifi.getiwinfo(s.ifname) - if iwinfo then - root.wireless.status[s.ifname] = { } - - local _, f - for _, f in ipairs({ - "channel", "txpower", "bitrate", "signal", "noise", - "quality", "quality_max", "mode", "ssid", "bssid", "encryption", "ifname" - }) do - root.wireless.status[s.ifname][f] = iwinfo[f] - end - end - end - end - end) - end - - http.prepare_content("application/json") - ltn12.pump.all(json.Encoder(root):source(), http.write) -end diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/remote_update.lua b/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/remote_update.lua deleted file mode 100644 index b317ab6b5e..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/remote_update.lua +++ /dev/null @@ -1,52 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.freifunk.remote_update", package.seeall) - -function index() - if not nixio.fs.access("/usr/sbin/remote-update") then - return - end - - entry({"admin", "system", "remote_update"}, call("act_remote_update"), - _("Freifunk Remote Update"), 90) -end - -function act_remote_update() - if luci.http.formvalue("flash") == "1" then - if luci.http.formvalue("confirm") == "1" then - local nobackup = ( luci.http.formvalue("keepcfg") ~= "1" ) - local noverify = ( luci.http.formvalue("verify") ~= "1" ) - - luci.http.redirect("/luci-static/flashing.html") - - os.execute("start-stop-daemon -S -b -x /usr/sbin/remote-update -- %s%s-s 5 -y" % { - noverify and "-v " or "", - nobackup and "-n " or "" - }) - else - luci.template.render("freifunk/remote_update", {confirm=1}) - end - else - local fd = io.popen("remote-update -c") - local update = { } - - if fd then - while true do - local ln=fd:read("*l") - - if not ln then break - elseif ln:find("Local: ") then update.locvar = ln:match("Local: (%d+)") - elseif ln:find("Remote: ") then update.remver = ln:match("Remote: (%d+)") - elseif ln == "--" then update.info = "" - elseif update.info ~= nil then - update.info = update.info .. ln .. "\n" - end - end - - fd:close() - end - - luci.template.render("freifunk/remote_update", {update=update}) - end -end diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/basics.lua b/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/basics.lua deleted file mode 100644 index b08366de6c..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/basics.lua +++ /dev/null @@ -1,92 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local util = require "luci.util" -local uci = require "luci.model.uci".cursor() -local profiles = "/etc/config/profile_*" - -m = Map("freifunk", translate ("Community")) -c = m:section(NamedSection, "community", "public", nil, translate("These are the basic settings for your local wireless community. These settings define the default values for the wizard and DO NOT affect the actual configuration of the router.")) - -community = c:option(ListValue, "name", translate ("Community")) -community.rmempty = false - -local profile -for profile in fs.glob(profiles) do - local name = uci:get_first(profile, "community", "name") or "?" - community:value(string.gsub(profile, "/etc/config/profile_", ""), name) -end - - -n = Map("system", translate("Basic system settings")) -function n.on_after_commit(self) - luci.http.redirect(luci.dispatcher.build_url("admin", "freifunk", "basics")) -end - -b = n:section(TypedSection, "system") -b.anonymous = true - -hn = b:option(Value, "hostname", translate("Hostname")) -hn.rmempty = false -hn.datatype = "hostname" - -loc = b:option(Value, "location", translate("Location")) -loc.rmempty = false -loc.datatype = "minlength(1)" - -lat = b:option(Value, "latitude", translate("Latitude"), translate("e.g.") .. " 48.12345") -lat.datatype = "float" -lat.rmempty = false - -lon = b:option(Value, "longitude", translate("Longitude"), translate("e.g.") .. " 10.12345") -lon.datatype = "float" -lon.rmempty = false - ---[[ -Opens an OpenStreetMap iframe or popup -Makes use of resources/OSMLatLon.htm and htdocs/resources/osm.js -]]-- - -local class = util.class -local ff = uci:get("freifunk", "community", "name") or "" -local co = "profile_" .. ff - -local deflat = uci:get_first("system", "system", "latitude") or uci:get_first(co, "community", "latitude") or 52 -local deflon = uci:get_first("system", "system", "longitude") or uci:get_first(co, "community", "longitude") or 10 -local zoom = 12 -if ( deflat == 52 and deflon == 10 ) then - zoom = 4 -end - -OpenStreetMapLonLat = luci.util.class(AbstractValue) - -function OpenStreetMapLonLat.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/osmll_value" - self.latfield = nil - self.lonfield = nil - self.centerlat = "" - self.centerlon = "" - self.zoom = "0" - self.width = "100%" --popups will ignore the %-symbol, "100%" is interpreted as "100" - self.height = "600" - self.popup = false - self.displaytext="OpenStreetMap" --text on button, that loads and displays the OSMap - self.hidetext="X" -- text on button, that hides OSMap -end - - osm = b:option(OpenStreetMapLonLat, "latlon", translate("Find your coordinates with OpenStreetMap"), translate("Select your location with a mouse click on the map. The map will only show up if you are connected to the Internet.")) - osm.latfield = "latitude" - osm.lonfield = "longitude" - osm.centerlat = uci:get_first("system", "system", "latitude") or deflat - osm.centerlon = uci:get_first("system", "system", "longitude") or deflon - osm.zoom = zoom - osm.width = "100%" - osm.height = "600" - osm.popup = false - osm.displaytext=translate("Show OpenStreetMap") - osm.hidetext=translate("Hide OpenStreetMap") - -return m, n diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/contact.lua b/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/contact.lua deleted file mode 100644 index 0a6995b266..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/contact.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -m = Map("freifunk", translate("Contact"), translate("Please fill in your contact details below.")) - -c = m:section(NamedSection, "contact", "public", "") - -c:option(Value, "nickname", translate("Nickname")) -c:option(Value, "name", translate("Realname")) -c:option(DynamicList, "homepage", translate("Homepage")) -c:option(Value, "mail", translate("E-Mail")) -c:option(Value, "phone", translate("Phone")) -c:option(TextValue, "note", translate("Notice")).rows = 10 - -return m diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/profile.lua b/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/profile.lua deleted file mode 100644 index de7caf4c18..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/profile.lua +++ /dev/null @@ -1,74 +0,0 @@ --- Copyright 2011-2012 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local uci = require "luci.model.uci".cursor() -local ipkg = require "luci.model.ipkg" -local community = uci:get("freifunk", "community", "name") - -if community == nil then - luci.http.redirect(luci.dispatcher.build_url("admin", "freifunk", "profile_error")) - return -else - community = "profile_" .. community - m = Map(community, translate("Community settings"), translate("These are the settings of your local community.")) - c = m:section(NamedSection, "profile", "community") - - local name = c:option(Value, "name", "Name") - name.rmempty = false - - local homepage = c:option(Value, "homepage", translate("Homepage")) - - local cc = c:option(Value, "country", translate("Country code")) - function cc.cfgvalue(self, section) - return uci:get(community, "wifi_device", "country") - end - function cc.write(self, sec, value) - if value then - uci:set(community, "wifi_device", "country", value) - uci:save(community) - end - end - - local ssid = c:option(Value, "ssid", translate("ESSID")) - ssid.rmempty = false - - local prefix = c:option(Value, "mesh_network", translate("Mesh prefix")) - prefix.datatype = "ip4addr" - prefix.rmempty = false - - local splash_net = c:option(Value, "splash_network", translate("Network for client DHCP addresses")) - splash_net.datatype = "ip4addr" - splash_net.rmempty = false - - local splash_prefix = c:option(Value, "splash_prefix", translate("Client network size")) - splash_prefix.datatype = "range(0,32)" - splash_prefix.rmempty = false - - local ipv6 = c:option(Flag, "ipv6", translate("Enable IPv6")) - ipv6.rmempty = true - - local ipv6_config = c:option(ListValue, "ipv6_config", translate("IPv6 Config")) - ipv6_config:depends("ipv6", 1) - ipv6_config:value("static") - if ipkg.installed ("auto-ipv6-ib") then - ipv6_config:value("auto-ipv6-random") - ipv6_config:value("auto-ipv6-fromv4") - end - ipv6_config.rmempty = true - - local ipv6_prefix = c:option(Value, "ipv6_prefix", translate("IPv6 Prefix"), translate("IPv6 network in CIDR notation.")) - ipv6_prefix:depends("ipv6", 1) - ipv6_prefix.datatype = "ip6addr" - ipv6_prefix.rmempty = true - - local vap = c:option(Flag, "vap", translate("VAP"), translate("Enable a virtual access point (VAP) by default if possible.")) - vap.rmempty = true - - local lat = c:option(Value, "latitude", translate("Latitude")) - lat.datatype = "range(-180, 180)" - lat.rmempty = false - - local lon = c:option(Value, "longitude", translate("Longitude")) - lon.rmempty = false - return m -end diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/profile_expert.lua b/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/profile_expert.lua deleted file mode 100644 index 22554a66fc..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/profile_expert.lua +++ /dev/null @@ -1,32 +0,0 @@ --- Copyright 2011 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local uci = require "luci.model.uci".cursor() -local community = uci:get("freifunk", "community", "name") - -if community == nil then - luci.http.redirect(luci.dispatcher.build_url("admin", "freifunk", "profile_error")) - return -else - community = "/etc/config/profile_" .. community - f = SimpleForm("community", translate("Community profile"), translate("You can manually edit the selected community profile here.")) - - t = f:field(TextValue, "cop") - t.rmempty = true - t.rows = 30 - function t.cfgvalue() - return fs.readfile(community) or "" - end - - function f.handle(self, state, data) - if state == FORM_VALID then - if data.cop then - fs.writefile(community, data.cop:gsub("\r\n", "\n")) - end - end - return true - end - return f -end - diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/user_index.lua b/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/user_index.lua deleted file mode 100644 index fe1d8fe7ed..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/model/cbi/freifunk/user_index.lua +++ /dev/null @@ -1,30 +0,0 @@ -local fs = require "nixio.fs" -local file = "/www/luci-static/index_user.html" - -m = Map("freifunk", translate("Edit index page"), translate("You can display additional content on the public index page by inserting valid XHTML in the form below.
    Headlines should be enclosed between <h2> and </h2>.")) - -s = m:section(NamedSection, "community", "public", "") -s.anonymous = true - -di = s:option(Flag, "DefaultText", translate("Disable default content"), translate("If selected then the default content element is not shown.")) -di.enabled = "disabled" -di.disabled = "enabled" -di.rmempty = false - -t = s:option(TextValue, "_text") -t.rmempty = true -t.rows = 20 - -function t.cfgvalue() - return fs.readfile(file) or "" -end - -function t.write(self, section, value) - return fs.writefile(file, value) -end - -function t.remove(self, section) - return fs.unlink(file) -end - -return m diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/view/cbi/osmll_value.htm b/package/luci/modules/luci-mod-freifunk/luasrc/view/cbi/osmll_value.htm deleted file mode 100644 index 78b4dff91f..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/view/cbi/osmll_value.htm +++ /dev/null @@ -1,55 +0,0 @@ -<%# -cc-by-sa Andreas Pittrich -in behalf of the german pirate party (Piratenpartei) -www.piratenpartei.de - -$Id$ - --%> -<%+cbi/valueheader%> - - <% if self:cfgvalue(section) ~= false then %> - <% if self.latfield and self.lonfield then %> - /> - /> - <% end %> - /> - /> - /> - <% end %> - - <% if self.popup then %> - - onclick=" - popup=window.open('/luci-static/resources/OSMLatLon.htm', '<%=cbid%>.window', 'innerWidth=<%=self.width%>, innerHeight=<%=self.height%>, location=no, menubar=no, scrollbars=no, status=no, toolbar=no'); - popup.focus(); - " - /> -
    -
    - <% else %> - - onclick=" - document.getElementById('<%=cbid..".hideosm"%>').style.display='inline'; - document.getElementById('<%=cbid..".displayosm"%>').style.display='none'; - for(var i = 0; Math.min(i, window.frames.length)!=window.frames.lengths; i++){ - if(frames[i].name=='<%=cbid..".iframe"%>'){ - document.getElementById('<%=cbid..".iframediv"%>').style.display='block'; - frames[i].location.href='/luci-static/resources/OSMLatLon.htm'; - } - } - " - /> - - onclick=" - document.getElementById('<%=cbid..".displayosm"%>').style.display='inline'; - document.getElementById('<%=cbid..".hideosm"%>').style.display='none'; - document.getElementById('<%=cbid..".iframediv"%>').style.display='none'; - " - /> -
    -
    " style="display:none"> - - <%end%> - -<%+cbi/valuefooter%> diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk-map/frame.htm b/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk-map/frame.htm deleted file mode 100644 index dbf3820f5c..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk-map/frame.htm +++ /dev/null @@ -1,29 +0,0 @@ -<%+header%> - -<% - local has_latlon = false - local uci = require "luci.model.uci".cursor() - uci:foreach("olsrd", "LoadPlugin", function(s) - if s.library == "olsrd_nameservice.so.0.3" and s.latlon_file then - has_latlon = true - end - end) -%> - -<% if has_latlon then %> - -

    <%:Legend%>:

    -
      -
    • <%:Green%>:<%:Very good (ETX < 2)%>
    • -
    • <%:Yellow%>:<%:Good (2 < ETX < 4)%>
    • -
    • <%:Orange%>:<%:Still usable (4 < ETX < 10)%>
    • -
    • <%:Red%>:<%:Bad (ETX > 10)%>
    • -
    - -<% else %> -

    <%:Map Error%>

    -

    <%_The OLSRd service is not configured to capture position data from the network.
    - Please make sure that the nameservice plugin is properly configured and that the latlon_file option is enabled.%>

    -<% end %> -<%+footer%> - diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk-map/map.htm b/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk-map/map.htm deleted file mode 100644 index c3951f9c63..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk-map/map.htm +++ /dev/null @@ -1,118 +0,0 @@ - - - - Map - - - - - -
    - - diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/adminindex.htm b/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/adminindex.htm deleted file mode 100644 index e0252ba891..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/adminindex.htm +++ /dev/null @@ -1,51 +0,0 @@ -<%+header%> -<% -local uci = require "luci.model.uci".cursor() -local contact = uci:get_all("freifunk", "contact") -local contacturl = luci.dispatcher.build_url(luci.dispatcher.context.path[1], "freifunk", "contact") -local hostname = uci:get_first ("system", "system", "hostname") -local latitude = uci:get_first ("system", "system", "latitude") -local longitude = uci:get_first ("system", "system", "longitude") -local location = uci:get_first ("system", "system", "location") -local basicsurl = luci.dispatcher.build_url(luci.dispatcher.context.path[1], "freifunk", "basics") -local nickname, name, mail -if not contact then - nickname, name, mail = "" -else - nickname = contact.nickname - name = contact.name - mail = contact.mail -end - -%> - -

    <%:Freifunk Overview%>

    - -<%:These pages will assist you in setting up your router for Freifunk or similar wireless community networks.%> -

    - -<% if not (hostname and latitude and longitude and location) then%> -

    - <%:Basic settings are incomplete. Please go to%> <%:Basic settings%> <%:and fill out all required fields.%> -
    -<%end%> -

    - -<% if not (nickname and name and mail) then%> -

    - <%:Contact information is incomplete. Please go to%> <%:Contact%> <%:and fill out all required fields.%> -

    -

    -<%end%> - -<% uci:foreach("wireless", "wifi-device", function(section) - local device = section[".name"] - local url = luci.dispatcher.build_url(luci.dispatcher.context.path[1], "network", "wireless") - if section.diversity ~= "0" and section.disabled ~= "1" and section.type ~= "mac80211" then - print('
    ' .. translate("Diversity is enabled for device") .. ' ' .. section[".name"] .. '. ' - .. translate("Go to") .. ' ' .. translate("wireless settings") .. ' ' .. - translate("to disable it.") .. '

    ') - end -end) %> - -<%+footer%> diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/contact.htm b/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/contact.htm deleted file mode 100644 index 1add595c6c..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/contact.htm +++ /dev/null @@ -1,64 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Copyright 2011 Manuel Munz - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<% -local uci = require "luci.model.uci".cursor() -local contact = uci:get_all("freifunk", "contact") -local nickname, name, mail, phone, location, note -local lon = uci:get_first("system", "system", "longitude") -local lat = uci:get_first("system", "system", "latitude") - -if not contact then - nickname, name, homepage, mail, phone, location, note = "" -else - nickname = contact.nickname or "" - name = contact.name or "" - homepage = contact.homepage or {} - mail = contact.mail or "" - phone = contact.phone or "" - location = uci:get_first("system", "system", "location") or contact.location - note = contact.note or "" -end -%> - -

    <%:Contact%>

    - -
    -<%:Operator%> - - - - - - -
    <%:Nickname%>:<%=nickname%>
    <%:Realname%>:<%=name%>
    <%:Homepage%>: - <% for k, v in ipairs(homepage) do %> - <%=v%>
    - <% end %> -
    <%:E-Mail%>:<%=mail%>
    <%:Phone%>:<%=phone%>
    -
    - -
    -<%:Location%> - - - -
    <%:Location%>:<%=location%>
    <%:Coordinates%>:<%=lat%> <%=lon%> ("><%:Show on map%>)
    -
    - -<% if note then %> -
    -<%:Notice%> - - -
    <%=note%>
    -
    -<%end%> - -<%+footer%> diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/index.htm b/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/index.htm deleted file mode 100644 index 3134f0b1b9..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/index.htm +++ /dev/null @@ -1,84 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -<% -local uci = require "luci.model.uci".cursor() -local tpl = require "luci.template" -local fs = require "nixio.fs" -local ff = {} -local ff = uci:get_all("freifunk") - -if not ff or not ff.community.name then - community = "Freifunk" - DefaultText = "" - nickname = "No Nickname set" -else - community = ff.community.name - DefaultText = ff.community.DefaultText - nickname = ff.contact.nickname -end - -local co = "profile_" .. community ---local community = uci:get_first(co, "community", "name") or "Freifunk" -local url = uci:get_first(co, "community", "homepage") or "http://www.freifunk.net" - - -local usertext = fs.readfile("/www/luci-static/index_user.html") - -if DefaultText ~= "disabled" then - - defaulttext = '

    '.. - (translate("Hello and welcome in the network of")).. - ' '.. - (community or "Freifunk Deutschland").. - '!

    '.. - translate("We are an initiative to establish a free, independent and open wireless mesh network.").. - '
    '.. - translate("This is the access point").. - ' '.. - luci.sys.hostname().. - '. '.. - translate("It is operated by").. - ' '.. - (nickname or translate("Please set your contact information")).. - '.

    '.. - translate("You can find further information about the global Freifunk initiative at").. - ' Freifunk.net.
    '.. - translate("If you are interested in our project then contact the local community").. - ' '..community..'.

    '.. - translate("Notice").. - ': '.. - translate("Internet access depends on technical and organisational conditions and may or may not work for you.").. - '

    ' -end -%> - -<%=defaulttext%> -<%=usertext%> - -<% --- add custom widgets from view/freifunk/widgets -local widgets = {} -local dir = "/usr/lib/lua/luci/view/freifunk/widgets" - -uci:foreach("freifunk-widgets", "widget", - function(s) - if s.enabled == "1" then - table.insert(widgets, s) - end - end) - -for k, v in ipairs(widgets) do - if v['template'] and fs.access(dir .. "/" .. v['template'] .. "/main.htm") then - tpl.render("freifunk/widgets/" .. v['template'] .. "/main", { data = v }) - end -end - -%> -<%+footer%> diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/profile_error.htm b/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/profile_error.htm deleted file mode 100644 index 984fa0acfc..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/profile_error.htm +++ /dev/null @@ -1,11 +0,0 @@ -<%+header%> - -<% -local profileurl = luci.dispatcher.build_url(luci.dispatcher.context.path[1], "freifunk", "basics") -%> - -

    <%:Error%>

    -<%:You need to select a profile before you can edit it. To select a profile go to%> <%:Basic settings%>. -

    - -<%+footer%> diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm b/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm deleted file mode 100644 index 1dc1d8b0d1..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm +++ /dev/null @@ -1,364 +0,0 @@ -<% -local utl = require "luci.util" -local sys = require "luci.sys" -local twa = require "luci.tools.webadmin" -local ip = require "luci.ip" - --- System - -local sysinfo = utl.ubus("system", "info") or { } -local boardinfo = utl.ubus("system", "board") or { } - -local loads = sysinfo.load or { 0, 0, 0 } -local meminfo = sysinfo.memory or { - total = 0, - free = 0, - buffered = 0, - shared = 0 -} - -local uptime = twa.date_format(sysinfo.uptime or 0) -local time = os.date("%a, %d %b %Y, %H:%M:%S") -local load = string.format("%.2f, %.2f, %.2f", loads[1] / 65535.0, loads[2] / 65535.0, loads[3] / 65535.0) - -local mem = string.format( - "%.2f MB (%.2f %s, %.2f %s, %.2f %s)", - meminfo.total / 1024 / 1024, - (meminfo.total - meminfo.free) / 1024 / 1024, - tostring(i18n.translate("used")), - meminfo.free / 1024 / 1024, - tostring(i18n.translate("free")), - meminfo.buffered / 1024 / 1024, - tostring(i18n.translate("buffered")) -) - -local interval = 5 - --- wireless -local ntm = require "luci.model.network".init() -local devices = ntm:get_wifidevs() -local netlist = { } -local netdevs = { } -local dev -for _, dev in ipairs(devices) do - local net - for _, net in ipairs(dev:get_wifinets()) do - netlist[#netlist+1] = net:ifname() - netdevs[net:ifname()] = dev:name() - end -end -local has_iwinfo = pcall(require, "iwinfo") - - --- Find default routes - -local _, r, def4, def6 - -for _, r in ipairs(ip.routes({ type = 1, dest_exact = "0.0.0.0/0" })) do - def4 = { - gateway = r.gw:string(), - dest = r.dest:string(), - dev = r.dev, - metr = r.metric or 0 - } - break -end - -for _, r in ipairs(ip.routes({ type = 1, dest_exact = "::/0" })) do - def6 = { - gateway = r.gw:string(), - dest = r.dest:string(), - dev = r.dev, - metr = r.metric or 0 - } - break -end - - -if luci.http.formvalue("status") == "1" then - local rv = { } - for dev in pairs(netdevs) do - local j = { id = dev } - local iw = luci.sys.wifi.getiwinfo(dev) - if iw then - local f - for _, f in ipairs({ - "channel", "txpower", "bitrate", "signal", "noise", - "quality", "quality_max", "mode", "ssid", "bssid", "encryption", "ifname" - }) do - j[f] = iw[f] - end - end - rv[#rv+1] = j - end - - - rv[#rv+1] = { - time = time, - uptime = uptime, - load = load, - mem = mem, - defroutev4 = def4, - defroutev6 = def6 - } - - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return -end --%> - -<%+header%> - - - - - -

    -

    <%:System%>

    -
    -
    <%=boardinfo.system or "?"%>
    -
    <%=boardinfo.model or "?"%>
    -
    <%=load%>
    -
    <%=mem%>
    -
    <%=time%>
    -
    <%=uptime%>
    -
    -
    - -<% if devices[1] then %> - -
    -

    <%:Wireless Overview%>

    - - <% if not has_iwinfo then %> -
    - <%:Package libiwinfo required!%>
    - <%_The libiwinfo package is not installed. You must install this component for working wireless configuration!%> -
    - <% end %> - -
    -
    - - - - - - - - - - - - <% - for _, dev in ipairs(devices) do - local net - for _, net in ipairs(dev:get_wifinets()) do - netlist[#netlist+1] = net:ifname() - netdevs[net:ifname()] = dev:name() - - if net.iwinfo.signal and net.iwinfo.bssid then - local signal = net.iwinfo.signal or "N/A" - local noise = net.iwinfo.noise or "N/A" - local q = net.iwinfo.quality or "0" - local qmax = net.iwinfo.quality_max or "100" - local qperc = q / qmax * 100 - - if qperc == 0 then - icon = "signal-none.png" - elseif qperc < 26 then - icon = "signal-0-25.png" - elseif qperc < 51 then - icon = "signal-25-50.png" - elseif qperc < 76 then - icon = "signal-50-75.png" - elseif qperc < 100 then - icon = "signal-75-100.png" - else - icon = "signal-0.png" - end - - signal_string = "Signal Quality" - - local ssid = net.iwinfo.ssid or "N/A" - local bssid = net.iwinfo.bssid or "N/A" - local chan = net.iwinfo.channel or "N/A" - local mode = net.iwinfo.mode or "N/A" - local txpwr = net.iwinfo.txpower or "N/A" - if txpwr ~= "N/A" then - txpwr = txpwr.." dbm" - end - local bitrate = net.iwinfo.bitrate or "N/A" - if bitrate ~= "N/A" then - bitrate = ( bitrate / 1000 ).."Mb/s" - end - local interface = net.iwinfo.ifname or "N/A" - %> - - - - - - - - - - - <% end - end - end %> -
    <%:Signal%><%:Bitrate%><%:SSID%><%:BSSID%><%:Channel%><%:Mode%><%:TX%>-<%:Power%><%:Interface%>
    <%=signal_string%><%=bitrate%><%=ssid%><%=bssid%><%=chan%><%=mode%><%=txpwr%><%=interface%>
    -
    -
    -
    -<% end %> - -
    -

    <%:Default routes%>

    -
    -
    - -<% if not def4 and not def6 then %> - <%:No default routes known.%> -<%else%> - - - - - - - - - <% if def4 then %> - - - - - - - - <% end - if def6 then %> - - - - - - - - - <% end %> - -
    <%:Network%><%:Interface%><%:Gateway%><%:Metric%>
    <%=def4.dest%><%=def4.dev%><%=def4.gateway%><%=def4.metr%>
    <%=def6.dest%><%=def6.dev%><%=def6.gateway%><%=def6.metr%>
    -<% end %> -
    -
    -
    -<%+footer%> diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/remote_update.htm b/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/remote_update.htm deleted file mode 100644 index f087472d31..0000000000 --- a/package/luci/modules/luci-mod-freifunk/luasrc/view/freifunk/remote_update.htm +++ /dev/null @@ -1,53 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Freifunk Remote Update%>

    - -

    <%:Check for new firmware versions and perform automatic updates.%>

    - -<% if update then %> - - <% if update.info then %> - <%:Update available!%> -

    -
    <%=update.info%>

    - <% else %> - <%:The installed firmware is the most recent version.%> -

    - <% end %> - -

    -

    - - -
    -

    - -<% elseif confirm then %> - - <%:Update Settings%> -

    - -

    - - - - - -
    - - - -

    - - -

    - -<% end %> - -<%+footer%> diff --git a/package/luci/modules/luci-mod-freifunk/po/ca/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/ca/freifunk.po deleted file mode 100644 index 338c688282..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/ca/freifunk.po +++ /dev/null @@ -1,407 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-07-18 00:15+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "Dolent (ETX > 10)" - -msgid "Basic Settings" -msgstr "Ajusts bàsics" - -msgid "Basic settings" -msgstr "Ajusts bàsics" - -msgid "Basic settings are incomplete. Please go to" -msgstr "Els ajusts bàsics estan incomplets. Si us plau, aneu a" - -msgid "Basic system settings" -msgstr "Ajusts de sistema bàsics" - -msgid "Bitrate" -msgstr "Velocitat de bits" - -msgid "Channel" -msgstr "Canal" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" -"Busca versions de microprogramari noves i realitza actualitzacions " -"automàtiques." - -msgid "Client network size" -msgstr "Mida de xarxa client" - -msgid "Community" -msgstr "Comunitat" - -msgid "Community profile" -msgstr "Perfil de comunitat" - -msgid "Community settings" -msgstr "Ajusts de comunitat" - -msgid "Confirm Upgrade" -msgstr "Confirma actualització" - -msgid "Contact" -msgstr "Contacte" - -msgid "Contact information is incomplete. Please go to" -msgstr "La informació de contacte està incompleta. Si us plau, aneu a" - -msgid "Coordinates" -msgstr "Coordenades" - -msgid "Country code" -msgstr "Codi de país" - -msgid "Default routes" -msgstr "Rutes per defecte" - -msgid "Disable default content" -msgstr "Deshabilita el contingut per defecte" - -msgid "Diversity is enabled for device" -msgstr "La diversitat està habilitada en el dispositiu" - -msgid "E-Mail" -msgstr "Adreça electrònica" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "Edita la pàgina d'índex" - -msgid "Enable IPv6" -msgstr "Habilita IPv6" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "Habilita un punt d'accés virtual (VAP) per defecte si és possible." - -msgid "Error" -msgstr "Error" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "Troba les vostres coordenades amb l'OpenStreetMap" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Visió de conjunt del Freifunk" - -msgid "Freifunk Remote Update" -msgstr "Actualització remota del Freifunk" - -msgid "Gateway" -msgstr "Passarel·la" - -msgid "Go to" -msgstr "Vés a" - -msgid "Good (2 < ETX < 4)" -msgstr "Bo (2 < ETX < 4)" - -msgid "Green" -msgstr "Verd" - -msgid "Hello and welcome in the network of" -msgstr "Hola i benvingut a la xarxa de" - -msgid "Hide OpenStreetMap" -msgstr "Amaga l'OpenStreetMap" - -msgid "Homepage" -msgstr "Pàgina principal" - -msgid "Hostname" -msgstr "Nom de màquina" - -msgid "IPv6 Config" -msgstr "Configuració IPv6" - -msgid "IPv6 Prefix" -msgstr "Prefix IPv6" - -msgid "IPv6 network in CIDR notation." -msgstr "Xarxa IPv6 en notació CIDR." - -msgid "If selected then the default content element is not shown." -msgstr "Si està seleccionat, l'element de contingut per defecte no es mostra." - -msgid "If you are interested in our project then contact the local community" -msgstr "" -"Si estàs interessat en el nostre projecte, llavors contacta la comunitat " -"local" - -msgid "Index Page" -msgstr "Pàgina d'índex" - -msgid "Interface" -msgstr "Interfície" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"L'accés a Internet depèn de les condicions tècniques i organitzatives, i pot " -"funcionar o no per tu." - -msgid "It is operated by" -msgstr "És administrat per" - -msgid "Keep configuration" -msgstr "Manté la configuració" - -msgid "Latitude" -msgstr "Latitud" - -msgid "Legend" -msgstr "Llegenda" - -msgid "Load" -msgstr "Càrrega" - -msgid "Local Time" -msgstr "Hora local" - -msgid "Location" -msgstr "Ubicació" - -msgid "Longitude" -msgstr "Longitud" - -msgid "Map" -msgstr "Mapa" - -msgid "Map Error" -msgstr "Error de mapa" - -msgid "Memory" -msgstr "Memòria" - -msgid "Mesh prefix" -msgstr "Prefix de malla" - -msgid "Metric" -msgstr "Mètric" - -msgid "Mode" -msgstr "Mode" - -msgid "Network" -msgstr "Xarxa" - -msgid "Network for client DHCP addresses" -msgstr "Xarxa de les adreces DHCP dels clients" - -msgid "Nickname" -msgstr "Nickname" - -msgid "No default routes known." -msgstr "No es coneix cap ruta per defecte." - -msgid "Notice" -msgstr "Avís" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "Operador" - -msgid "Orange" -msgstr "Taronja" - -msgid "Overview" -msgstr "Visió de conjunt" - -msgid "Package libiwinfo required!" -msgstr "Es requereix el paquet libiwinfo!" - -msgid "Phone" -msgstr "Telèfon" - -msgid "Please fill in your contact details below." -msgstr "Si us plau, empleneu els vostres detalls de contacte a baix." - -msgid "Please set your contact information" -msgstr "Si us plau, establiu la vostra informació de contacte" - -msgid "Power" -msgstr "Potència" - -msgid "Processor" -msgstr "Processador" - -msgid "Profile" -msgstr "Perfil" - -msgid "Profile (Expert)" -msgstr "Perfil (expert)" - -msgid "Realname" -msgstr "Nom real" - -msgid "Red" -msgstr "Xarxa" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" -"Seleccioneu la vostra ubicació per un clic del ratolí en el mapa. El mapa es " -"mostra només si esteu connectat al Internet." - -msgid "Show OpenStreetMap" -msgstr "Mostra OpenStreetMap" - -msgid "Show on map" -msgstr "Mostra en mapa" - -msgid "Signal" -msgstr "Senyal" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "Inicia l'actualització" - -msgid "Statistics" -msgstr "Estadístiques" - -msgid "Status" -msgstr "Estat" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Encara utilitzable (4 < ETX < 10)" - -msgid "System" -msgstr "Sistema" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"El paquet libiwinfo no està instal·lat. Heu d'instal·lar aquest " -"component per a tenir una configuració sense fil funcionant!" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "El microprogramari instal·lat és la versió més recent." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "Aquests són els ajusts de la vostra comunitat local." - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "Això és el punt d'accés" - -msgid "Update Settings" -msgstr "Actualitza els ajusts" - -msgid "Update available!" -msgstr "Actualització disponible!" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "Molt bo (ETX < 2)" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Som una iniciativa per establir una xarxa mesh lliure, independent i oberta." - -msgid "Wireless Overview" -msgstr "Visió de conjunt sense fil" - -msgid "Yellow" -msgstr "Groc" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "Pots trobar més informació sobre la iniciativa global Freifunk a" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "lliure" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "utilitzat" - -msgid "wireless settings" -msgstr "ajusts sense fil" diff --git a/package/luci/modules/luci-mod-freifunk/po/cs/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/cs/freifunk.po deleted file mode 100644 index cf22c008bb..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/cs/freifunk.po +++ /dev/null @@ -1,404 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-08-08 21:21+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "Špatné (ETX > 10)" - -msgid "Basic Settings" -msgstr "Základní nastavení" - -msgid "Basic settings" -msgstr "Základní nastavení" - -msgid "Basic settings are incomplete. Please go to" -msgstr "Základní nastavení není kompletní. Prosím přejděte na" - -msgid "Basic system settings" -msgstr "Základní nastavení systému" - -msgid "Bitrate" -msgstr "Datový tok" - -msgid "Channel" -msgstr "Kanál" - -#, fuzzy -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" -"Zkontrolovat dostupnost nové verze firmwaru a provést automatické " -"aktualizace." - -msgid "Client network size" -msgstr "Velikost klientské sítě" - -msgid "Community" -msgstr "Komunita" - -msgid "Community profile" -msgstr "Komunitní profil" - -msgid "Community settings" -msgstr "Nastavení komunity" - -msgid "Confirm Upgrade" -msgstr "Potvrďte upgrade" - -msgid "Contact" -msgstr "Kontakt" - -msgid "Contact information is incomplete. Please go to" -msgstr "Kontaktní informace není kompletní. Prosím pokračujte na" - -msgid "Coordinates" -msgstr "Souřadnice" - -msgid "Country code" -msgstr "Kód země" - -msgid "Default routes" -msgstr "Výchozí trasy" - -#, fuzzy -msgid "Disable default content" -msgstr "Zakázat výchozí obsah" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "E-Mail" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "Povolit IPv6" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "Chyba" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "Najděte své souřadnice pomocí OpenStreetMap" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Freifunk - Přehled" - -msgid "Freifunk Remote Update" -msgstr "Freifunk - Vzdálené aktualizace" - -msgid "Gateway" -msgstr "Brána" - -msgid "Go to" -msgstr "Jít na" - -msgid "Good (2 < ETX < 4)" -msgstr "Dobré (2 < ETX < 4)" - -msgid "Green" -msgstr "Zelený" - -msgid "Hello and welcome in the network of" -msgstr "Dobrý den, vítejte v síti" - -msgid "Hide OpenStreetMap" -msgstr "Skrýt OpenStreetMap" - -msgid "Homepage" -msgstr "Domovská stránka" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IPv6 Config" -msgstr "Konfigurace IPv6" - -msgid "IPv6 Prefix" -msgstr "IPv6 Prefix" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "Pokud se zajímáte o náš projekt, kontaktujte místní komunitu" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "Rozhraní" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"Přístup k Internetu závisí na technických a organizačních podmínkách. Může " -"(ale nemusí) vám fungovat." - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "Uchovat nastavení" - -msgid "Latitude" -msgstr "Zeměpisná šířka" - -msgid "Legend" -msgstr "Legenda" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "Místní čas" - -msgid "Location" -msgstr "Umístění" - -msgid "Longitude" -msgstr "Zeměpisná délka" - -msgid "Map" -msgstr "Mapa" - -msgid "Map Error" -msgstr "Chyba mapy" - -msgid "Memory" -msgstr "Paměť" - -msgid "Mesh prefix" -msgstr "Mesh prefix" - -msgid "Metric" -msgstr "Metrika" - -msgid "Mode" -msgstr "Režim" - -msgid "Network" -msgstr "Síť" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "Přezdívka" - -msgid "No default routes known." -msgstr "Nejsou známy výchozí cesty" - -msgid "Notice" -msgstr "Upozornění" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "Operátor" - -msgid "Orange" -msgstr "Oranžový" - -msgid "Overview" -msgstr "Přehled" - -msgid "Package libiwinfo required!" -msgstr "Balíček libiwinfo je vyžadován!" - -msgid "Phone" -msgstr "Telefon" - -msgid "Please fill in your contact details below." -msgstr "Prosím níže vyplňte kontaktní detaily." - -msgid "Please set your contact information" -msgstr "Prosím nastavte si vaše kontaktní informace" - -msgid "Power" -msgstr "Výkon" - -msgid "Processor" -msgstr "Procesor" - -msgid "Profile" -msgstr "Profil" - -msgid "Profile (Expert)" -msgstr "Profil (Expert)" - -msgid "Realname" -msgstr "Skutečné jméno" - -msgid "Red" -msgstr "Červený" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" -"Kliknutím na mapu vyberte vaše umístění. Mapa se zobrazí, pouze pokud jste " -"připojen do sítě Internet." - -msgid "Show OpenStreetMap" -msgstr "Zobrazit OpenStreetMap" - -msgid "Show on map" -msgstr "Zobrazit na mapě" - -msgid "Signal" -msgstr "Signál" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "Spustit aktualizaci" - -msgid "Statistics" -msgstr "Statistiky" - -msgid "Status" -msgstr "Stav" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Stále použitelné (4 < ETX < 10)" - -msgid "System" -msgstr "Systém" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Balíček libiwinfo není nainstalován. Je třeba ho nainstalovat, aby " -"byla funkční konfigurace bezdrátové sítě!" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "Nainstalovaný firmware je aktuální." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "To je přístupový bod (AP)" - -msgid "Update Settings" -msgstr "Nastavení aktualizace" - -msgid "Update available!" -msgstr "Aktualizace dostupná!" - -msgid "Uptime" -msgstr "Doba provozu" - -msgid "VAP" -msgstr "VAP" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "Velmi dobré (ETX < 2)" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "Žlutý" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "např." - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "nastavení bezdrátové sítě" diff --git a/package/luci/modules/luci-mod-freifunk/po/de/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/de/freifunk.po deleted file mode 100644 index ff6e6bc67d..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/de/freifunk.po +++ /dev/null @@ -1,447 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-05-12 17:58+0200\n" -"PO-Revision-Date: 2013-01-28 22:17+0200\n" -"Last-Translator: DAC324 \n" -"Language-Team: LANGUAGE \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "Schlecht (ETX > 10)" - -msgid "Basic Settings" -msgstr "Grundeinstellungen" - -msgid "Basic settings" -msgstr "Grundeinstellungen" - -msgid "Basic settings are incomplete. Please go to" -msgstr "Die Grundeinstellungen sind unvollständig. Bitte gehe zur Seite" - -msgid "Basic system settings" -msgstr "Grundlegende Systemeinstellungen" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Channel" -msgstr "Kanal" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" -"Der Fernupdate-Mechanismus prüft nach neuen Firmware-Versionen und führt " -"automatisierte Updates durch." - -msgid "Client network size" -msgstr "Größe des DHCP-Netzes" - -msgid "Community" -msgstr "Community" - -msgid "Community profile" -msgstr "Community Profile" - -msgid "Community settings" -msgstr "Community Einstellungen" - -msgid "Confirm Upgrade" -msgstr "Updatevorgang starten" - -msgid "Contact" -msgstr "Kontakt" - -msgid "Contact information is incomplete. Please go to" -msgstr "Die Kontaktinformationen sind unvollständig. Bitte gehe zur Seite" - -msgid "Coordinates" -msgstr "Geokoordinaten" - -msgid "Country code" -msgstr "Ländercode" - -msgid "Default routes" -msgstr "Standardrouten" - -msgid "Disable default content" -msgstr "Standardtext deaktivieren" - -msgid "Diversity is enabled for device" -msgstr "Diversity ist aktiv für das Interface" - -msgid "E-Mail" -msgstr "E-Mail" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "Indexseite bearbeiten" - -msgid "Enable IPv6" -msgstr "IPv6 aktivieren" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "Fehler" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "Geokoordinaten mit OpenStreetMap ermitteln" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Freifunk Übersicht" - -msgid "Freifunk Remote Update" -msgstr "Freifunk Fernupdate" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Go to" -msgstr "Gehe zu" - -msgid "Good (2 < ETX < 4)" -msgstr "Gut (2 < ETX < 4)" - -msgid "Green" -msgstr "Grün" - -msgid "Hello and welcome in the network of" -msgstr "Hallo und willkommen im Netz von" - -msgid "Hide OpenStreetMap" -msgstr "OpenStreetMap ausblenden" - -msgid "Homepage" -msgstr "Homepage" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IPv6 Config" -msgstr "IPv6 Konfiguration" - -msgid "IPv6 Prefix" -msgstr "IPv6 Prefix" - -msgid "IPv6 network in CIDR notation." -msgstr "IPv6 Subnetz in CIDR-Notation" - -msgid "If selected then the default content element is not shown." -msgstr "" -"Wird diese Option gewählt dann wird das standardmässige Inhaltselement nicht " -"angezeigt." - -msgid "If you are interested in our project then contact the local community" -msgstr "" -"Hast du Interesse an diesem Projekt, dann wende dich an deine lokale " -"Gemeinschaft" - -msgid "Index Page" -msgstr "Index-Seite" - -msgid "Interface" -msgstr "Schnittstelle" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"Der Internetzugang über das experimentelle Freifunknetz ist an technische " -"und organisatorische Bedingungen geknüpft und deshalb möglicherweise nicht " -"(immer) gewährleistet." - -msgid "It is operated by" -msgstr "Er wird betrieben von " - -msgid "Keep configuration" -msgstr "Konfigurationsdateien wiederherstellen" - -msgid "Latitude" -msgstr "Breite" - -msgid "Legend" -msgstr "Erklärung" - -msgid "Load" -msgstr "Load" - -msgid "Local Time" -msgstr "Lokale Zeit" - -msgid "Location" -msgstr "Standort" - -msgid "Longitude" -msgstr "Länge" - -msgid "Map" -msgstr "Karte" - -msgid "Map Error" -msgstr "Fehler beim Darstellen der Karte" - -msgid "Memory" -msgstr "Hauptspeicher" - -msgid "Mesh prefix" -msgstr "Prefix des Meshs" - -msgid "Metric" -msgstr "Metrik" - -msgid "Mode" -msgstr "Modus" - -msgid "Network" -msgstr "Netzwerk" - -msgid "Network for client DHCP addresses" -msgstr "Netzwerk aus dem IPs für Clients vergeben werden" - -msgid "Nickname" -msgstr "Pseudonym" - -msgid "No default routes known." -msgstr "Es sind keine Standardrouten bekannt." - -msgid "Notice" -msgstr "Notiz" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "Betreiber" - -msgid "Orange" -msgstr "Orange" - -msgid "Overview" -msgstr "Übersicht" - -msgid "Package libiwinfo required!" -msgstr "Das Paket libiwinfo wird benötigt!" - -msgid "Phone" -msgstr "Telefon" - -msgid "Please fill in your contact details below." -msgstr "Bitte gib hier deine Kontaktdaten an." - -msgid "Please set your contact information" -msgstr "Bitte gib deine Kontaktinformationen ein" - -msgid "Power" -msgstr "Power" - -msgid "Processor" -msgstr "Prozessor" - -msgid "Profile" -msgstr "Profil" - -msgid "Profile (Expert)" -msgstr "Profil (Expertenmodus)" - -msgid "Realname" -msgstr "Name" - -msgid "Red" -msgstr "Rot" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" -"Wähle hier deinen Standort durch einen Mausklick aus. Die Karte funktioniert " -"nur, wenn bereits eine Verbindung zum Internet besteht." - -msgid "Show OpenStreetMap" -msgstr "OpenStreetMap anzeigen" - -msgid "Show on map" -msgstr "Karte öffnen" - -msgid "Signal" -msgstr "Signal" - -msgid "Splash" -msgstr "Splash" - -msgid "Start Upgrade" -msgstr "Updatevorgang starten" - -msgid "Statistics" -msgstr "Statistiken" - -msgid "Status" -msgstr "Status" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Noch nutzbar (4 < ETX < 10)" - -msgid "System" -msgstr "System" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Das libiwinfo-Paket ist nicht installiert. Dieses Paket muss für " -"eine funktionierende WLAN-Konfiguration vorhanden sein!" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" -"OLSRd ist nicht dafür konfiguriert worden Geoinformationen zu speichern.
    Bitte sicherstellen dass das OLSRd-Nameservice-Plugin geladen und richtig " -"konfiguriert wurde (Option latlon_file)." - -msgid "The installed firmware is the most recent version." -msgstr "Die installierte Firmware ist bereits die neueste Version." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" -"Dies hier sind die Grundeinstellungen für die Freifunk Community in deiner " -"Nachbarschaft. Diese Einstellungen legen die Standardwerte für den ffwizard " -"fest und beeinflussen die aktuelle Konfiguration des Routers NICHT." - -msgid "These are the settings of your local community." -msgstr "Dies sind die Einstellungen für deine Freifunk Community." - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" -"Diese Seiten helfen dabei, den Router für Freifunk oder ähnliche Wireless " -"Community Netzwerke einzurichten." - -msgid "This is the access point" -msgstr "Dies ist der Zugangspunkt " - -msgid "Update Settings" -msgstr "Einstellungen zum Update" - -msgid "Update available!" -msgstr "Update verfügbar!" - -msgid "Uptime" -msgstr "Uptime" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "Heruntergeladene Images verifizieren" - -msgid "Very good (ETX < 2)" -msgstr "Sehr gut (ETX < 2) " - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Wir sind eine Initiative zur Schaffung eines freien, offenen und " -"unabhängigen Funknetzwerks auf WLAN-Basis." - -msgid "Wireless Overview" -msgstr "WLAN Übersicht" - -msgid "Yellow" -msgstr "Gelb" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" -"Hier kann der Indexseite weiterer Inhalt hinzugefügt werden. Dazu muss " -"gültiges XHTML verwendet werden.
    Überschriften sollten zwischen den " -"Tags <h2> und </h2> eingeschlossen werden." - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "Weitere Informationen zur globalen Freifunkinitiative findest du unter" - -msgid "You can manually edit the selected community profile here." -msgstr "Hier kann das ausgewählte Community-Profil bearbeitet werden." - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" -"Es muss ein Profil ausgewählt werden, bevor es editiert werden kann. Gehe " -"dazu zur Seite" - -msgid "and fill out all required fields." -msgstr "und fülle alle benötigten Felder aus." - -msgid "buffered" -msgstr "gepuffert" - -msgid "cached" -msgstr "gecacht" - -msgid "e.g." -msgstr "z.B." - -msgid "free" -msgstr "ungenutzt" - -msgid "to disable it." -msgstr "um es auszuschalten." - -msgid "used" -msgstr "benutzt" - -msgid "wireless settings" -msgstr "Drahtloseinstellungen" - -#~ msgid "" -#~ "No services can be shown, because olsrd is not running or the olsrd-" -#~ "nameservice Plugin is not loaded." -#~ msgstr "" -#~ "Es kann keine Liste der Dienste angezeigt werden, da olsrd nicht läuft " -#~ "oder das nameservice plugin nicht geladen oder konfiguriert wurde." - -#~ msgid "Services" -#~ msgstr "Dienste" - -#~ msgid "Source" -#~ msgstr "Quelle" - -#~ msgid "" -#~ "The libiwinfo-lua package is not installed. You must install " -#~ "this component for working wireless configuration!" -#~ msgstr "" -#~ "Das libiwinfo-lua-Paket ist nicht installiert. Das Paket muss " -#~ "für eine funktionierende WLAN-Konfiguration installiert sein!" - -#~ msgid "Url" -#~ msgstr "Adresse" diff --git a/package/luci/modules/luci-mod-freifunk/po/el/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/el/freifunk.po deleted file mode 100644 index 95d58eae0b..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/el/freifunk.po +++ /dev/null @@ -1,407 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-28 02:08+0200\n" -"PO-Revision-Date: 2012-03-18 15:11+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "Βασικές Ρυθμίσεις" - -msgid "Basic settings" -msgstr "Βασικές ρυθμίσεις" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "Βασικές ρυθμίσεις συστήματος" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "Κανάλι" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "Κοινότητα" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "Επικοινωνία" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "Συντεταγμένες" - -msgid "Country code" -msgstr "Κωδικός xώρας" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "Ηλ. Ταχυδρομείο" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "Σφάλμα" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "Πύλη" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "Γεια σας και καλώς ήλθατε στο δίκτυο" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "Αν ενδιαφέρεστε για το έργο μας, επικοινωνήστε με την τοπική κοινότητα" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "Διεπαφή" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"Η πρόσβαση στο διαδίκτυο εξαρτάται από τις τεχνικές και τις οργανωτικές " -"συνθήκες και μπορεί να λειτουργεί ή όχι για σας." - -msgid "It is operated by" -msgstr "Διαχειρίζεται από" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "Γεωγραφικό πλάτος" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "Τοπική Ώρα" - -msgid "Location" -msgstr "Τοποθεσία" - -msgid "Longitude" -msgstr "Γεωγραφικό μήκος" - -msgid "Map" -msgstr "Χάρτης" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "Μνήμη" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "Δίκτυο" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "Ψευδώνυμο" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "Σημείωση" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "Τηλέφωνο" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "Επεξεργαστής" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "Ονοματεπώνυμο" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "Σήμα" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "Στατιστικά" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "Σύστημα" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "Αυτές είναι οι ρυθμίσεις της τοπικής σας κοινότητας." - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" -"Αυτές οι σελίδες θα σας βοηθήσουν να ρυθμίσετε το δρομολογητή σας για το " -"Freifunk ή παρόμοια ασύρματα κοινοτικά δίκτυα." - -msgid "This is the access point" -msgstr "Αυτό είναι το access point" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Είμαστε μία πρωτοβουλία για την εδραίωση ενός ελεύθερου, ανεξάρτητου και " -"ανοιχτού ασύρματου mesh δικτύου." - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" -"Μπορείτε να βρείτε περισσότερες πληροφορίες για την παγκόσμια πρωτοβουλία " -"Freifunk στο" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "π.χ." - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" - -#~ msgid "Source" -#~ msgstr "Πηγή" diff --git a/package/luci/modules/luci-mod-freifunk/po/en/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/en/freifunk.po deleted file mode 100644 index bf99116722..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/en/freifunk.po +++ /dev/null @@ -1,400 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-30 06:42+0200\n" -"PO-Revision-Date: 2009-07-06 23:21+0200\n" -"Last-Translator: Jo-Philipp Wich \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "Check for new firmware versions and perform automatic updates." - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "Coordinates" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "E-Mail" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "Freifunk Remote Update" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "Hello and welcome in the network of" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "If you are interested in our project then contact the local community" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." - -msgid "It is operated by" -msgstr "It is operated by" - -msgid "Keep configuration" -msgstr "Keep configuration" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "Location" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "Memory" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "Nickname" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "Notice" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "Phone" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "Realname" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "Start Upgrade" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "The installed firmware is the most recent version." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "This is the access point" - -msgid "Update Settings" -msgstr "Update Settings" - -msgid "Update available!" -msgstr "Update available!" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "Verify downloaded images" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" -"You can find further information about the global Freifunk initiative at" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/es/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/es/freifunk.po deleted file mode 100644 index 7242268d96..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/es/freifunk.po +++ /dev/null @@ -1,417 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2014-06-15 13:16+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "Malo (ETX > 10)" - -msgid "Basic Settings" -msgstr "Configuración básica" - -msgid "Basic settings" -msgstr "Configuración básica" - -msgid "Basic settings are incomplete. Please go to" -msgstr "Configuración básica incompleta. Por favor, vaya a" - -msgid "Basic system settings" -msgstr "Configuración básica del sistema" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Channel" -msgstr "Canal" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" -"Comprobar nuevas versiones de firmware y realizar actualizaciones " -"automáticas." - -msgid "Client network size" -msgstr "Tamaño de la red cliente" - -msgid "Community" -msgstr "Comunidad" - -msgid "Community profile" -msgstr "Perfil de la comunidad" - -msgid "Community settings" -msgstr "Configuración de la comunidad" - -msgid "Confirm Upgrade" -msgstr "Confirmar actualización" - -msgid "Contact" -msgstr "Contacto" - -msgid "Contact information is incomplete. Please go to" -msgstr "La información de contacto no está completa. Por favor, vaya a" - -msgid "Coordinates" -msgstr "Coordenadas" - -msgid "Country code" -msgstr "Código de país" - -msgid "Default routes" -msgstr "Rutas por defecto" - -msgid "Disable default content" -msgstr "Desactive contenido por defecto" - -msgid "Diversity is enabled for device" -msgstr "Diversidad activar para el dispositivo" - -msgid "E-Mail" -msgstr "E-Mail" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "Editar índice" - -msgid "Enable IPv6" -msgstr "Activar IPv6" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "Activa un punto virtual de acceso (VAP) por dehecto si es posible." - -msgid "Error" -msgstr "Error" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "Busca sus coordenadas con OpenStreetMap" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Resumen de Freifunk" - -msgid "Freifunk Remote Update" -msgstr "Actualización remota de Freifunk" - -msgid "Gateway" -msgstr "Pasarela" - -msgid "Go to" -msgstr "Ir a" - -msgid "Good (2 < ETX < 4)" -msgstr "Bueno (2 < ETX < 4)" - -msgid "Green" -msgstr "Verde" - -msgid "Hello and welcome in the network of" -msgstr "Hola y bienvenido a la red de" - -msgid "Hide OpenStreetMap" -msgstr "Ocultar OpenStreetMap" - -msgid "Homepage" -msgstr "Página inicial" - -msgid "Hostname" -msgstr "Nombre de máquina" - -msgid "IPv6 Config" -msgstr "Configuración de IPv6" - -msgid "IPv6 Prefix" -msgstr "Prefijo IPv6" - -msgid "IPv6 network in CIDR notation." -msgstr "Red IPv6 en notación CIDR." - -msgid "If selected then the default content element is not shown." -msgstr "No mostrar el contenido por defecto." - -msgid "If you are interested in our project then contact the local community" -msgstr "" -"Si se encuentra interesado en nuestro proyecto contacte, por favor, con su " -"comunidad local mas cercana" - -msgid "Index Page" -msgstr "Índice" - -msgid "Interface" -msgstr "Interfaz" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"El acceso a Internet depende de condiciones tanto técnicas como " -"organizativas por lo que puede no funcionarle." - -msgid "It is operated by" -msgstr "Administrado por" - -msgid "Keep configuration" -msgstr "Mantener configuración" - -msgid "Latitude" -msgstr "Latitud" - -msgid "Legend" -msgstr "Leyenda" - -msgid "Load" -msgstr "Carga" - -msgid "Local Time" -msgstr "Hora local" - -msgid "Location" -msgstr "Lugar" - -msgid "Longitude" -msgstr "Longitud" - -msgid "Map" -msgstr "Mapa" - -msgid "Map Error" -msgstr "Error en el map" - -msgid "Memory" -msgstr "Memoria" - -msgid "Mesh prefix" -msgstr "Prefijo mesh" - -msgid "Metric" -msgstr "Métrica" - -msgid "Mode" -msgstr "Modo" - -msgid "Network" -msgstr "Red" - -msgid "Network for client DHCP addresses" -msgstr "Red para las direcciones DHCP de los clientes" - -msgid "Nickname" -msgstr "Apodo" - -msgid "No default routes known." -msgstr "Sin rutas por defecto." - -msgid "Notice" -msgstr "Aviso" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "Administrador" - -msgid "Orange" -msgstr "Naranja" - -msgid "Overview" -msgstr "Repaso" - -msgid "Package libiwinfo required!" -msgstr "¡Es necesario el paquete libiwinfo!" - -msgid "Phone" -msgstr "Teléfono" - -msgid "Please fill in your contact details below." -msgstr "Por favor, introduzca sus datos de contacto." - -msgid "Please set your contact information" -msgstr "Por favor, configure su información de contacto" - -msgid "Power" -msgstr "Potencia" - -msgid "Processor" -msgstr "Procesador" - -msgid "Profile" -msgstr "Perfil" - -msgid "Profile (Expert)" -msgstr "Perfil (experto)" - -msgid "Realname" -msgstr "Nombre real" - -msgid "Red" -msgstr "Rojo" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" -"Elija su posición pulsando el ratón sobre el mapa. El mapa solo aparecerá si " -"está conectado a internet." - -msgid "Show OpenStreetMap" -msgstr "Mostrar OpenStreetMap" - -msgid "Show on map" -msgstr "Mostrar en el mapa" - -msgid "Signal" -msgstr "Señal" - -msgid "Splash" -msgstr "Presentación" - -msgid "Start Upgrade" -msgstr "Iniciar actualización" - -msgid "Statistics" -msgstr "Estadísticas" - -msgid "Status" -msgstr "Estado" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Aún utilizable (4 < ETX < 10)" - -msgid "System" -msgstr "Sistema" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"El paquete libiwinfo no está instalado. ¡Debe instalarlo para que " -"funcione la red inalámbrica!" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" -"El servicio OLSRd no está configurado para tomar los datos de posición desde " -"la red.
    Asegúrese de que el plugin \"nameservice\" está bien " -"configurado y que la opción latlon_file está marcada." - -msgid "The installed firmware is the most recent version." -msgstr "El firmare instalado está en la versión más reciente." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" -"Configuración básica de su comunidad inalámbrica. Aquí puede definir los " -"valores por defecto para el asistente SIN afectar a la configuración del " -"router." - -msgid "These are the settings of your local community." -msgstr "Configuración de su comunidad local." - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" -"Configuración de su router para Freifunk o redes comunitarias similares." - -msgid "This is the access point" -msgstr "Este es el punto de acceso" - -msgid "Update Settings" -msgstr "Actualizar configuración" - -msgid "Update available!" -msgstr "¡Actualización disponible!" - -msgid "Uptime" -msgstr "Tiempo activo" - -msgid "VAP" -msgstr "VAP" - -msgid "Verify downloaded images" -msgstr "Verificar las descargas" - -msgid "Very good (ETX < 2)" -msgstr "Muy bueno (ETX < 2)" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Somos una iniciativa que pretende crear una red libre, independiente y " -"abierta utilizando una red mesh inalámbrica." - -msgid "Wireless Overview" -msgstr "Resumen de red inalámbrica" - -msgid "Yellow" -msgstr "Amarillo" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" -"Puede mostrar más contenido en el índice público poniendo XHTML válido en " -"este formulario.
    Las cabeceras deben ir entre <h2> y </h2>." - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "Puede obtener información acerca de la iniciativa global Freifunk en" - -msgid "You can manually edit the selected community profile here." -msgstr "Edite el perfil comunitario local." - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "Elija un perfil para editarlo. Para elegir el perfil vaya a" - -msgid "and fill out all required fields." -msgstr "y rellene los campos requeridos." - -msgid "buffered" -msgstr "en búfer" - -msgid "cached" -msgstr "en caché" - -msgid "e.g." -msgstr "ej." - -msgid "free" -msgstr "libre" - -msgid "to disable it." -msgstr "para desactivarlo." - -msgid "used" -msgstr "usado" - -msgid "wireless settings" -msgstr "configuración inalámbrica" diff --git a/package/luci/modules/luci-mod-freifunk/po/fr/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/fr/freifunk.po deleted file mode 100644 index 028a2ce2b1..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/fr/freifunk.po +++ /dev/null @@ -1,395 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/he/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/he/freifunk.po deleted file mode 100644 index 3dfdefd595..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/he/freifunk.po +++ /dev/null @@ -1,394 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-01-22 02:48+0200\n" -"Last-Translator: citizen.amitai \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "חלש" - -msgid "Basic Settings" -msgstr "הגדרות בסיס" - -msgid "Basic settings" -msgstr "הגדרות בסיס" - -msgid "Basic settings are incomplete. Please go to" -msgstr "לא סיימת להגדיר את הגדרות הבסיס. תחזור ל" - -msgid "Basic system settings" -msgstr "הגדרות מערכת" - -msgid "Bitrate" -msgstr "קצב העברה" - -msgid "Channel" -msgstr "ערוץ" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "בדוק אם קיים גרסת חומרה חדשה ובצע עדכון אוטומטי" - -msgid "Client network size" -msgstr "גודל הרשת" - -msgid "Community" -msgstr "קהילה" - -msgid "Community profile" -msgstr "פרופיל הקהילה" - -msgid "Community settings" -msgstr "הגדרות קהילה" - -msgid "Confirm Upgrade" -msgstr "אשר שדרוג" - -msgid "Contact" -msgstr "צור קשר" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "קוד מדינה" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "אימייל" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "ערוך דף אינדקס" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "שגיאה" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "מצא את המיקום שלך עם OpenStreetMap" - -msgid "Freifunk" -msgstr "אריג" - -msgid "Freifunk Overview" -msgstr "סקירה כללית על אריג" - -msgid "Freifunk Remote Update" -msgstr "עדכון מרחוק " - -msgid "Gateway" -msgstr "שער" - -msgid "Go to" -msgstr "עבור אל" - -msgid "Good (2 < ETX < 4)" -msgstr "טוב" - -msgid "Green" -msgstr "ירוק" - -msgid "Hello and welcome in the network of" -msgstr "שלום וברוך הבא לרשת " - -msgid "Hide OpenStreetMap" -msgstr "הסתר OpenStreetMap" - -msgid "Homepage" -msgstr "דף הבית" - -msgid "Hostname" -msgstr "שם מחשב" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "אם מסומן, תוכן ברירת המחדל לא יופיע" - -msgid "If you are interested in our project then contact the local community" -msgstr "אם הנכם מעוניינים בפרוייקט שלנו אנא צרו קשר עם הקהילה באזורכם" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "ממשק" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "זה מופעל ע\"י" - -msgid "Keep configuration" -msgstr "שמור הגדרות" - -msgid "Latitude" -msgstr "רוחב" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "טען" - -msgid "Local Time" -msgstr "זמן מקומי" - -msgid "Location" -msgstr "מיקום" - -msgid "Longitude" -msgstr "אורך" - -msgid "Map" -msgstr "מפה" - -msgid "Map Error" -msgstr "שגיאת מפה" - -msgid "Memory" -msgstr "זכרון" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "מצב" - -msgid "Network" -msgstr "רשת" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "כינוי" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "סקירה" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "אנא הזינו פרטי יצירת קשר" - -msgid "Power" -msgstr "כח" - -msgid "Processor" -msgstr "מעבד" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "פרופיל (מומחה)" - -msgid "Realname" -msgstr "שם אמיתי" - -msgid "Red" -msgstr "אדום" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "פתח OpenStreetMap" - -msgid "Show on map" -msgstr "הצג על גבי מפה" - -msgid "Signal" -msgstr "אות" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "התחל שדרוג" - -msgid "Statistics" -msgstr "סטטיסטיקה" - -msgid "Status" -msgstr "סטטוס" - -msgid "Still usable (4 < ETX < 10)" -msgstr "מתפקד" - -msgid "System" -msgstr "מערכת" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "יוזמה לביסוס רשת אריג אל-חוטית שתהיה חינמית, נגישה, ועצמאית" - -msgid "Wireless Overview" -msgstr "סקירת הרשת האלחוטית" - -msgid "Yellow" -msgstr "צהוב" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/hu/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/hu/freifunk.po deleted file mode 100644 index 71829ef517..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/hu/freifunk.po +++ /dev/null @@ -1,392 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \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 "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/it/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/it/freifunk.po deleted file mode 100644 index 26610f75c9..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/it/freifunk.po +++ /dev/null @@ -1,422 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-07-19 16:27+0200\n" -"Last-Translator: clagir \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "Difettoso (ETX > 10)" - -msgid "Basic Settings" -msgstr "Impostazioni Base" - -msgid "Basic settings" -msgstr "Impostazioni Base" - -msgid "Basic settings are incomplete. Please go to" -msgstr "Le impostazioni base sono incomplete. Si prega di andare a" - -msgid "Basic system settings" -msgstr "Impostazioni Base del Sistema" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Channel" -msgstr "Canale" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" -"Verificare la presenza di nuove versioni del firmware ed eseguire gli " -"aggiornamenti automatici." - -msgid "Client network size" -msgstr "Dimensione Rete Client" - -msgid "Community" -msgstr "Comunità" - -msgid "Community profile" -msgstr "Profilo Comunità" - -msgid "Community settings" -msgstr "Impostazioni Comunità" - -msgid "Confirm Upgrade" -msgstr "Conferma Aggiornamento" - -msgid "Contact" -msgstr "Contatto" - -msgid "Contact information is incomplete. Please go to" -msgstr "Le informazioni di contatto sono incomplete. Si prega di andare a" - -msgid "Coordinates" -msgstr "Coordinate" - -msgid "Country code" -msgstr "Codice Nazione" - -msgid "Default routes" -msgstr "Instradamenti Predefiniti" - -msgid "Disable default content" -msgstr "Disattivare contenuto predefinito" - -msgid "Diversity is enabled for device" -msgstr "La diversità è abilitata per il dispositivo" - -msgid "E-Mail" -msgstr "E-Mail" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "Modifica indice pagina" - -msgid "Enable IPv6" -msgstr "Attiva IPv6" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "Attiva un access point virtuale (VAP) di default se possibile" - -msgid "Error" -msgstr "Errore" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "Trova le coordinate con OpenStreetMap" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Panoramica Freifunk" - -msgid "Freifunk Remote Update" -msgstr "Aggiornamento Remoto Freifunk" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Go to" -msgstr "Vai a" - -msgid "Good (2 < ETX < 4)" -msgstr "Buono (2 < ETX < 4)" - -msgid "Green" -msgstr "Verde" - -msgid "Hello and welcome in the network of" -msgstr "Ciao e benvenuto nella rete di" - -msgid "Hide OpenStreetMap" -msgstr "Nascondi OpenStreetMap" - -msgid "Homepage" -msgstr "Homepage" - -msgid "Hostname" -msgstr "Nome Host" - -msgid "IPv6 Config" -msgstr "Configura IPv6" - -msgid "IPv6 Prefix" -msgstr "Prefisso IPv6" - -msgid "IPv6 network in CIDR notation." -msgstr "Rete IPv6 in notazione CIDR." - -msgid "If selected then the default content element is not shown." -msgstr "" -"Se selezionata, l'elemento di contenuto predefinito non viene visualizzato." - -msgid "If you are interested in our project then contact the local community" -msgstr "Se siete interessati al nostro progetto, contattare la comunità locale" - -msgid "Index Page" -msgstr "Indice Pagina" - -msgid "Interface" -msgstr "Interfaccia" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"L'accesso a Internet dipende dalle condizioni tecniche e organizzative e può " -"o non può funzionare per voi." - -msgid "It is operated by" -msgstr "E' gestito da" - -msgid "Keep configuration" -msgstr "Mantieni configurazione" - -msgid "Latitude" -msgstr "Latitudine" - -msgid "Legend" -msgstr "Legenda" - -msgid "Load" -msgstr "Carica" - -msgid "Local Time" -msgstr "Ora Locale" - -msgid "Location" -msgstr "Posizione" - -msgid "Longitude" -msgstr "Longitudine" - -msgid "Map" -msgstr "Mappa" - -msgid "Map Error" -msgstr "Errore Mappa" - -msgid "Memory" -msgstr "Memoria" - -msgid "Mesh prefix" -msgstr "Prefisso Rete" - -msgid "Metric" -msgstr "Metrica" - -msgid "Mode" -msgstr "Modalità" - -msgid "Network" -msgstr "Rete" - -msgid "Network for client DHCP addresses" -msgstr "Rete per indirizzi Client DHCP" - -msgid "Nickname" -msgstr "Nome Nick" - -msgid "No default routes known." -msgstr "Nessun instradamento predefinito conosciuto." - -msgid "Notice" -msgstr "Avviso" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "Operatore" - -msgid "Orange" -msgstr "Arancio" - -msgid "Overview" -msgstr "Panoramica" - -msgid "Package libiwinfo required!" -msgstr "Il pacchetto libiwinfo è richiesto!" - -msgid "Phone" -msgstr "Telefono" - -msgid "Please fill in your contact details below." -msgstr "Inserisci i tuoi dati di contatto qui sotto." - -msgid "Please set your contact information" -msgstr "Vi preghiamo di impostare le informazioni di contatto" - -msgid "Power" -msgstr "Potenza" - -msgid "Processor" -msgstr "Processore" - -msgid "Profile" -msgstr "Profilo" - -msgid "Profile (Expert)" -msgstr "Profilo (Esperto)" - -msgid "Realname" -msgstr "Nome Reale" - -msgid "Red" -msgstr "Rosso" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" -"Selezionare la propria posizione con un clic del mouse sulla mappa. La mappa " -"viene visualizzata solo se si è connessi a Internet." - -msgid "Show OpenStreetMap" -msgstr "Mostra OpenStreetMap" - -msgid "Show on map" -msgstr "Mostra sulla mappa" - -msgid "Signal" -msgstr "Segnale" - -msgid "Splash" -msgstr "Splash" - -msgid "Start Upgrade" -msgstr "Avvia Aggiornamento" - -msgid "Statistics" -msgstr "Statistiche" - -msgid "Status" -msgstr "Stato" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Ancora utilizzabile (4 < ETX < 10)" - -msgid "System" -msgstr "Sistema" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Il pacchetto libiwinfo non è installato. Si deve installare questo " -"componente per usare di configurazione wireless!" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" -"Il servizio OLSRd non è configurato per acquisire i dati di posizione della " -"rete.
    Assicurarsi che il plugin nameservice sia configurato " -"correttamente e che l'opzione latlon_file è abilitata." - -msgid "The installed firmware is the most recent version." -msgstr "Il firmware installato è la versione più recente." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" -"Queste sono le impostazioni di base per la vostra comunità locale wireless. " -"Queste impostazioni definiscono i valori predefiniti per la procedura " -"guidata e non influenzano la configurazione attuale del router." - -msgid "These are the settings of your local community." -msgstr "Queste sono le impostazioni della vostra comunità locale." - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" -"Queste pagine vi aiuteranno a configurare il router per Freifunk o reti " -"wireless della comunità simile." - -msgid "This is the access point" -msgstr "Questo è il punto di accesso" - -msgid "Update Settings" -msgstr "Aggiorna impostazioni" - -msgid "Update available!" -msgstr "Aggiornamento disponibile!" - -msgid "Uptime" -msgstr "Tempo di attività" - -msgid "VAP" -msgstr "VAP" - -msgid "Verify downloaded images" -msgstr "Verifica delle immagini scaricate" - -msgid "Very good (ETX < 2)" -msgstr "Molto buono (ETX < 2)" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Siamo un'iniziativa per creare una rete libera, indipendente e aperto " -"wireless mesh." - -msgid "Wireless Overview" -msgstr "Panoramica Wireless" - -msgid "Yellow" -msgstr "Giallo" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" -"È possibile visualizzare contenuti aggiuntivi nella pagina indice pubblica " -"inserendo XHTML valida nel modulo sottostante.
    I titoli dovrebbero " -"essere racchiusi tra <h2> e </h2>." - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" -"È possibile trovare ulteriori informazioni sull'iniziativa Freifunk globale a" - -msgid "You can manually edit the selected community profile here." -msgstr "" -"È possibile modificare manualmente il profilo selezionato della comunità qui" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" -"È necessario selezionare un profilo prima di poterlo modificare. Per " -"selezionare un profilo andare a" - -msgid "and fill out all required fields." -msgstr "e compilare tutti i campi richiesti." - -msgid "buffered" -msgstr "buffered" - -msgid "cached" -msgstr "in memoria cache" - -msgid "e.g." -msgstr "es." - -msgid "free" -msgstr "libero" - -msgid "to disable it." -msgstr "per disattivarlo." - -msgid "used" -msgstr "usato" - -msgid "wireless settings" -msgstr "Impostazioni Wireless" diff --git a/package/luci/modules/luci-mod-freifunk/po/ja/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/ja/freifunk.po deleted file mode 100644 index 028a2ce2b1..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/ja/freifunk.po +++ /dev/null @@ -1,395 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/ms/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/ms/freifunk.po deleted file mode 100644 index 262991d217..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/ms/freifunk.po +++ /dev/null @@ -1,391 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/no/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/no/freifunk.po deleted file mode 100644 index 62df8b9f7a..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/no/freifunk.po +++ /dev/null @@ -1,430 +0,0 @@ -msgid "" -msgstr "" -"Last-Translator: Lars Hardy \n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "Grunnleggende Innstillinger" - -msgid "Basic settings" -msgstr "Grunnleggende innstillinger" - -msgid "Basic settings are incomplete. Please go to" -msgstr "Grunnleggende innstillinger er mangelfull. Gå til" - -msgid "Basic system settings" -msgstr "Grunnleggende system innstillinger" - -msgid "Bitrate" -msgstr "Bithastighet" - -msgid "Channel" -msgstr "Kanal" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "Se etter nye firmware-versjoner og utfør automatiske oppdatering." - -msgid "Client network size" -msgstr "Klient nettverk størrelse" - -msgid "Community" -msgstr "Sted" - -msgid "Community profile" -msgstr "Sted profil" - -msgid "Community settings" -msgstr "Sted innstillinger" - -msgid "Confirm Upgrade" -msgstr "Bekreft Oppgradering" - -msgid "Contact" -msgstr "Kontakt" - -msgid "Contact information is incomplete. Please go to" -msgstr "Kontaktinformasjonen er mangelfull. Gå til" - -msgid "Coordinates" -msgstr "Koordinater" - -msgid "Country code" -msgstr "Landskode" - -msgid "Default routes" -msgstr "Standard ruter" - -msgid "Disable default content" -msgstr "Deaktiver standard innhold" - -msgid "Diversity is enabled for device" -msgstr "Antennevariasjon er aktivert på enhet" - -msgid "E-Mail" -msgstr "E-Post" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "Rediger indeks side" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "Feil" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "Finn koordinatene dine med OpenStreetMap" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Freifunk Oversikt" - -msgid "Freifunk Remote Update" -msgstr "Freifunk Fjernkontrollert Oppgradering" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Go to" -msgstr "Gå til" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "Hei og velkommen til nettverket av" - -msgid "Hide OpenStreetMap" -msgstr "Skjul OpenStreetMap" - -msgid "Homepage" -msgstr "Hjemmeside" - -msgid "Hostname" -msgstr "Vertsnavn" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "Om valgt vises ikke det vanlige innholdselementet" - -msgid "If you are interested in our project then contact the local community" -msgstr "" -"Hvis du er interessert i prosjektet vårt så ta kontakt med en lokale gruppe " -"på" - -msgid "Index Page" -msgstr "Indeks Side" - -msgid "Interface" -msgstr "Grensesnitt" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"Internett tilgang er avhengig av tekniske og organisatoriske forhold, defor " -"er det ikke sikkert det fungerer for deg." - -msgid "It is operated by" -msgstr "Det drives av" - -msgid "Keep configuration" -msgstr "Behold konfigurasjonen" - -msgid "Latitude" -msgstr "Breddegrad" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "Last" - -msgid "Local Time" -msgstr "Lokal Tid" - -msgid "Location" -msgstr "Sted" - -msgid "Longitude" -msgstr "Lengdegrad" - -msgid "Map" -msgstr "Kart" - -msgid "Map Error" -msgstr "Kart Feil" - -msgid "Memory" -msgstr "Minne" - -msgid "Mesh prefix" -msgstr "Mesh prefiks" - -msgid "Metric" -msgstr "Metrisk" - -msgid "Mode" -msgstr "Modus" - -msgid "Network" -msgstr "Nettverk" - -msgid "Network for client DHCP addresses" -msgstr "Nettverk for klient DHCP adresser" - -msgid "Nickname" -msgstr "Kallenavn" - -msgid "No default routes known." -msgstr "Ingen standard rute er kjent" - -msgid "Notice" -msgstr "Merknad" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "Oversikt" - -msgid "Package libiwinfo required!" -msgstr "Pakken libiwinfo er nødvendig!" - -msgid "Phone" -msgstr "Telefon" - -msgid "Please fill in your contact details below." -msgstr "Vennligst fyll ut skjema nedenfor." - -msgid "Please set your contact information" -msgstr "Vennligst oppgi din kontaktinformasjon" - -msgid "Power" -msgstr "Styrke" - -msgid "Processor" -msgstr "Prosessor" - -msgid "Profile" -msgstr "Profil" - -msgid "Profile (Expert)" -msgstr "Profil (Ekspert)" - -msgid "Realname" -msgstr "Virkelig Navn" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" -"Velg din posisjon med et museklikk på kartet. Kartet vises bare om du er " -"koblet til internett." - -msgid "Show OpenStreetMap" -msgstr "Vis OpenStreetMap" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "Signal" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "Start Oppgradering" - -msgid "Statistics" -msgstr "Statistikk" - -msgid "Status" -msgstr "Status" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "System" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" -"OLSRd tjenesten er ikke konfigurert til å hente posisjons data fra " -"nettverket.
    Kontroller at navnetjener pluginen er riktig konfigurert og " -"at latlon_file alternativet er aktivert." - -msgid "The installed firmware is the most recent version." -msgstr "Den installerte firmware er den nyeste versjonen." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" -"Dette er de grunnleggende innstillinger for det lokale trådløse stedet. " -"Disse innstillingene definerer standard verdiene for veiviseren og vil " -"derfor IKKE gjøre noen endringer på ruteren." - -msgid "These are the settings of your local community." -msgstr "Dette er innstillingene for det lokale stedet" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" -"Disse sidene vil hjelpe deg med å sette opp ruteren til for Freifunk og " -"lignende trådløse nettverk." - -msgid "This is the access point" -msgstr "Dette er aksess punktet" - -msgid "Update Settings" -msgstr "Oppdater Innstillingene" - -msgid "Update available!" -msgstr "Oppdatering tilgjengelig!" - -msgid "Uptime" -msgstr "Oppetid" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "Verifiser nedlastede filer" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Vi er et initiativ for å etablere fri, uavhengig og åpne trådløse mesh-" -"nettverk." - -msgid "Wireless Overview" -msgstr "Trådløs Oversikt" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" -"Du kan vise ytterligere innhold på den offentlige side ved å legge til " -"gyldig XHTML med form som vist under.
    Overskrifter bør legges mellom " -"<h2> og </h2>." - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "Du kan finne mere informasjon om den globale Freifunk initiativ på" - -msgid "You can manually edit the selected community profile here." -msgstr "Du kan manuelt endre den valgte stedsprofilen here" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" -"Du må velge en profil før du kan endre den. For å velge en profil går du til" - -msgid "and fill out all required fields." -msgstr "og fylle ut alle nødvendige felt" - -msgid "buffered" -msgstr "bufret" - -msgid "cached" -msgstr "hurtigbufret" - -msgid "e.g." -msgstr "f.eks." - -msgid "free" -msgstr "tilgjengelig" - -msgid "to disable it." -msgstr "å deaktivere det" - -msgid "used" -msgstr "brukt" - -msgid "wireless settings" -msgstr "trådløse innstillinger" - -#~ msgid "" -#~ "No services can be shown, because olsrd is not running or the olsrd-" -#~ "nameservice Plugin is not loaded." -#~ msgstr "" -#~ "Ingen tjenester kan vises her, dette kan være pga. at olsrd ikke kjører " -#~ "eller fordi olsrd-navnetjener plugin ikke er lastet." - -#~ msgid "Services" -#~ msgstr "Tjenester" - -#~ msgid "Source" -#~ msgstr "Kilde" - -#~ msgid "" -#~ "The libiwinfo-lua package is not installed. You must install " -#~ "this component for working wireless configuration!" -#~ msgstr "" -#~ "Pakken libiwinfo-lua er ikke installert. Du må installere denne " -#~ "pakken for å kunne konfigurerer trådløse enheter!" - -#~ msgid "Url" -#~ msgstr "Url" diff --git a/package/luci/modules/luci-mod-freifunk/po/pl/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/pl/freifunk.po deleted file mode 100644 index ac46e1fd2c..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/pl/freifunk.po +++ /dev/null @@ -1,422 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-23 19:16+0200\n" -"Last-Translator: goodgod261 \n" -"Language-Team: none\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "Błąd (Etx > 10)" - -msgid "Basic Settings" -msgstr "Ustawienia Podstawowe" - -msgid "Basic settings" -msgstr "Ustawienia podstawowe" - -msgid "Basic settings are incomplete. Please go to" -msgstr "Niekompletne ustawienia podstawowe. Proszę uzupełnić" - -msgid "Basic system settings" -msgstr "Podstawowe ustawienia systemu" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Channel" -msgstr "Kanał" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "Automatycznie sprawdź i uaktualnij wersję firmware`u" - -msgid "Client network size" -msgstr "Rozmiar sieci klientów" - -msgid "Community" -msgstr "Społeczność" - -msgid "Community profile" -msgstr "Profil w społeczności" - -msgid "Community settings" -msgstr "Ustawienia społeczności" - -msgid "Confirm Upgrade" -msgstr "Potwierdź uaktualnienie" - -msgid "Contact" -msgstr "Dane kontaktowe" - -msgid "Contact information is incomplete. Please go to" -msgstr "Dane kontaktowe są niekompletne. Proszę uzupełnij je" - -msgid "Coordinates" -msgstr "Współrzędne" - -msgid "Country code" -msgstr "Prefiks kraju" - -msgid "Default routes" -msgstr "Domyślne trasy (routes)" - -msgid "Disable default content" -msgstr "Wyłącz domyślną zawartość" - -# Nie przetłumaczymy tego lepiej. -msgid "Diversity is enabled for device" -msgstr "Różnorodność jest włączona dla urządzenia" - -msgid "E-Mail" -msgstr "E-Mail" - -msgid "ESSID" -msgstr "Nazwa sieci (ESSID)" - -msgid "Edit index page" -msgstr "Edytuj stronę główną" - -msgid "Enable IPv6" -msgstr "Włącz IPv6" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "Błąd" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "Znajdź swoje współrzędne w OpenStreetMap" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Przegląd sieci Freifunk" - -msgid "Freifunk Remote Update" -msgstr "Zdalna aktualizacja Freifunk" - -msgid "Gateway" -msgstr "Brama" - -msgid "Go to" -msgstr "Przejdź do" - -msgid "Good (2 < ETX < 4)" -msgstr "Dobrze (2 < ETX < 4)" - -msgid "Green" -msgstr "Zielone" - -msgid "Hello and welcome in the network of" -msgstr "Cześć! Witamy w sieci" - -msgid "Hide OpenStreetMap" -msgstr "Ukryj OpenStreetMap" - -msgid "Homepage" -msgstr "Strona domowa" - -msgid "Hostname" -msgstr "Nazwa hosta" - -msgid "IPv6 Config" -msgstr "Konfiguracja IPv6" - -msgid "IPv6 Prefix" -msgstr "Prefiks IPv6" - -msgid "IPv6 network in CIDR notation." -msgstr "Sieć IPv6 w notacji CIDR" - -msgid "If selected then the default content element is not shown." -msgstr "Jeśli zaznaczone domyślna zawartość nie jest widoczna" - -msgid "If you are interested in our project then contact the local community" -msgstr "" -"Jeśli jesteś zainteresowany projektem kontaktuj się z lokalna społecznością " -"Freifunk" - -msgid "Index Page" -msgstr "Strona początkowa" - -msgid "Interface" -msgstr "Interfejs" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"Dostęp do internetu zależy od warunków technicznych i organizacyjnych, i " -"dlatego może nie działać." - -msgid "It is operated by" -msgstr "Jest zarządzany przez" - -msgid "Keep configuration" -msgstr "Zachowaj konfigurację" - -msgid "Latitude" -msgstr "Szerokość" - -msgid "Legend" -msgstr "Legenda" - -msgid "Load" -msgstr "Obciążenie" - -msgid "Local Time" -msgstr "Czas Lokalny" - -# Może ktoś ma lepsze słowo? -msgid "Location" -msgstr "Lokacja" - -msgid "Longitude" -msgstr "Długość" - -msgid "Map" -msgstr "Mapa" - -msgid "Map Error" -msgstr "Błąd Mapy" - -msgid "Memory" -msgstr "Pamięć" - -# Dosłownie prefiks kraty -msgid "Mesh prefix" -msgstr "Prefiks komórki" - -msgid "Metric" -msgstr "Metryka" - -msgid "Mode" -msgstr "Tryb" - -msgid "Network" -msgstr "Sieć" - -msgid "Network for client DHCP addresses" -msgstr "Sieć dla adresów klienta DHCP" - -msgid "Nickname" -msgstr "Twoja ksywka" - -msgid "No default routes known." -msgstr "Nie są znane żadne domyślne ścieżki routingu." - -msgid "Notice" -msgstr "Uwaga" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "Zarządca" - -msgid "Orange" -msgstr "Pomarańczowe" - -msgid "Overview" -msgstr "Przegląd" - -msgid "Package libiwinfo required!" -msgstr "Wymagany pakiet libiwinfo !" - -msgid "Phone" -msgstr "Telefon" - -msgid "Please fill in your contact details below." -msgstr "Proszę uzupełnij dane kontaktowe poniżej." - -msgid "Please set your contact information" -msgstr "Proszę uzupełnić swoje dane kontaktowe" - -msgid "Power" -msgstr "Moc" - -msgid "Processor" -msgstr "Procesor" - -msgid "Profile" -msgstr "Profil" - -msgid "Profile (Expert)" -msgstr "Profil (tryb eksperta)" - -msgid "Realname" -msgstr "Imię i Nazwisko (prawdziwe)" - -msgid "Red" -msgstr "Czerwone" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" -"Proszę zaznaczyć swoją lokację na mapie. Mapa jest pokazywana tylko jeśli " -"masz dostęp do internetu." - -msgid "Show OpenStreetMap" -msgstr "Pokaż OpenStreetMap" - -msgid "Show on map" -msgstr "Pokaż na mapie" - -msgid "Signal" -msgstr "Sygnał" - -msgid "Splash" -msgstr "Splash" - -msgid "Start Upgrade" -msgstr "Zacznij aktualizację" - -msgid "Statistics" -msgstr "Statystyki" - -msgid "Status" -msgstr "Status" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Cały Czas do użycia (4 < ETX < 10)" - -msgid "System" -msgstr "System" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Pakiet libiwinfo nie jest zainstalowany. Musisz go zainstalować, " -"aby konfiguracja sieci bezprzewodowej mogła być uaktywniona!" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" -"Usługa OLSRd nie jest skonfigurowana do pozyskiwania nazwy z sieci.
    " -"Proszę się upewnić, że plugin nameservice jest poprawnie skonfigurowany, " -"oraz opcja użycia pliku latlon_file jest zaznaczona." - -msgid "The installed firmware is the most recent version." -msgstr "Zainstalowany firmware jest aktualny." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" -"Są to podstawowe ustawienia dla twojej lokalnej bezprzewodowej społeczności. " -"Te ustawienia określają domyślne wartości dla kreatora i NIE MAJĄ wpływu na " -"aktualną konfigurację routera." - -msgid "These are the settings of your local community." -msgstr "To są ustawienia twojej lokalnej społeczności (community)." - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" -"Te strony pomogą ci skonfigurować twój router do sieci Freifunk, lub innej " -"sieci społecznościowej ." - -msgid "This is the access point" -msgstr "To jest punk dostępowy (AP)" - -msgid "Update Settings" -msgstr "Uaktualnij ustawienia" - -msgid "Update available!" -msgstr "Aktualizacja dostępna!!!" - -msgid "Uptime" -msgstr "Aktualizacja" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "Sprawdź pobrane obrazy" - -msgid "Very good (ETX < 2)" -msgstr "Bardzo Dobrze (ETX < 2)" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Jesteśmy inicjatywą na rzecz ustanowienia wolnej, niezależnej i otwartej " -"bezprzewodowej siatki kratowej." - -msgid "Wireless Overview" -msgstr "Przegląd Ustawień WiFi" - -msgid "Yellow" -msgstr "Żółty" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" -"Można wyświetlić dodatkową zawartość na publicznej stronie indeksu " -"wstawiając poprawny XHTML do formularza poniżej.
    Nagłówki powinny być " -"zamknięte tagami <h2> i </h2>." - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" -"Możesz znaleźć więcej informacji o naszej globalnej inicjatywie Freifunk na" - -msgid "You can manually edit the selected community profile here." -msgstr "Możesz ręcznie edytować wybrany profil społeczności tutaj" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" -"Aby edytować profil musisz go najpierw zaznaczyć. Zaznacz profil aby " -"kontynuować" - -msgid "and fill out all required fields." -msgstr "i wypełnij wszystkie wymagane pola." - -msgid "buffered" -msgstr "buforowany" - -msgid "cached" -msgstr "cachowany" - -msgid "e.g." -msgstr "np." - -msgid "free" -msgstr "darmowy" - -msgid "to disable it." -msgstr "aby wyłączyć" - -msgid "used" -msgstr "używany" - -msgid "wireless settings" -msgstr "ustawienia sieci bezprzewodowej" diff --git a/package/luci/modules/luci-mod-freifunk/po/pt-br/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/pt-br/freifunk.po deleted file mode 100644 index a906a937b2..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/pt-br/freifunk.po +++ /dev/null @@ -1,447 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2014-06-21 19:00+0200\n" -"Last-Translator: Éder \n" -"Language-Team: LANGUAGE \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "Mal (ETX > 10)" - -msgid "Basic Settings" -msgstr "Configurações Básicas" - -msgid "Basic settings" -msgstr "Configurações básicas" - -msgid "Basic settings are incomplete. Please go to" -msgstr "As configurações básicas estão incompletas. Por favor vá para" - -msgid "Basic system settings" -msgstr "Configurações básicas do sistema" - -msgid "Bitrate" -msgstr "Taxa de bit" - -msgid "Channel" -msgstr "Canal" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" -"Verifique a existência de novas versões e realize a atualização " -"automaticamente." - -msgid "Client network size" -msgstr "Tamanho da rede dos clientes" - -msgid "Community" -msgstr "Comunidade" - -msgid "Community profile" -msgstr "Perfil da comunidade" - -msgid "Community settings" -msgstr "Configurações da comunidade" - -msgid "Confirm Upgrade" -msgstr "Confirmar a atualização" - -msgid "Contact" -msgstr "Contato" - -msgid "Contact information is incomplete. Please go to" -msgstr "A informação de contato está incompleta. Por favor, vá para" - -msgid "Coordinates" -msgstr "Coordenadas" - -msgid "Country code" -msgstr "Código do país" - -msgid "Default routes" -msgstr "Rotas padrão" - -msgid "Disable default content" -msgstr "Desabilitar o conteúdo padrão" - -msgid "Diversity is enabled for device" -msgstr "A diversidade está habilitada neste dispositivo" - -msgid "E-Mail" -msgstr "E-mail" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "Edita a página índice" - -msgid "Enable IPv6" -msgstr "Habilitar IPv6" - -# 20140621: edersg: tradução -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "Habilitar um ponto de acesso virtual (VAP) por padrão, se possível" - -msgid "Error" -msgstr "Erro" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "Encontre sua coordenada com o OpenStreetMap" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Visão Geral do Freifunk" - -msgid "Freifunk Remote Update" -msgstr "Atualização Remota do Freifunk" - -msgid "Gateway" -msgstr "Roteador" - -msgid "Go to" -msgstr "Vá para" - -msgid "Good (2 < ETX < 4)" -msgstr "Bom (2 < ETX < 4)" - -msgid "Green" -msgstr "Verde" - -msgid "Hello and welcome in the network of" -msgstr "Olá e seja bem-vindo à rede do" - -msgid "Hide OpenStreetMap" -msgstr "Esconder o OpenStreetMap" - -msgid "Homepage" -msgstr "Página" - -msgid "Hostname" -msgstr "Nome do equipamento" - -msgid "IPv6 Config" -msgstr "Configuração IPv6" - -msgid "IPv6 Prefix" -msgstr "Prefixo IPv6" - -msgid "IPv6 network in CIDR notation." -msgstr "Rede IPv6 em notação CIDR." - -msgid "If selected then the default content element is not shown." -msgstr "Se selecionado, o conteúdo padrão não é mostrado." - -msgid "If you are interested in our project then contact the local community" -msgstr "" -"Se estiver interessado no nosso projeto, entre em contacto com a comunidade " -"local" - -msgid "Index Page" -msgstr "Página Índice" - -msgid "Interface" -msgstr "Interface" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"O acesso à Internet depende de fatores técnicos e organizacionais, e pode " -"funcionar ou não no seu caso." - -msgid "It is operated by" -msgstr "É operado por" - -msgid "Keep configuration" -msgstr "Manter a configuração" - -msgid "Latitude" -msgstr "Latitude" - -msgid "Legend" -msgstr "Legenda" - -msgid "Load" -msgstr "Carregar" - -msgid "Local Time" -msgstr "Horário Local" - -msgid "Location" -msgstr "Localização" - -msgid "Longitude" -msgstr "Longitude" - -msgid "Map" -msgstr "Mapa" - -msgid "Map Error" -msgstr "Erro do Mapa" - -msgid "Memory" -msgstr "Memória" - -msgid "Mesh prefix" -msgstr "Prefixo da rede em malha" - -msgid "Metric" -msgstr "Métrica" - -msgid "Mode" -msgstr "Modo" - -msgid "Network" -msgstr "Rede" - -msgid "Network for client DHCP addresses" -msgstr "Rede para os endereços dos clientes DHCP" - -msgid "Nickname" -msgstr "Apelido" - -msgid "No default routes known." -msgstr "Nenhuma rota padrão conhecida." - -msgid "Notice" -msgstr "Aviso" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "Operador" - -msgid "Orange" -msgstr "Laranja" - -msgid "Overview" -msgstr "Visão Geral" - -msgid "Package libiwinfo required!" -msgstr "O pacote libiwinfo é necessário!" - -msgid "Phone" -msgstr "Telefone" - -msgid "Please fill in your contact details below." -msgstr "Por favor, preencha seus detalhes de contato abaixo." - -msgid "Please set your contact information" -msgstr "Por favor, defina a informação de contato" - -msgid "Power" -msgstr "Potência" - -msgid "Processor" -msgstr "Processador" - -msgid "Profile" -msgstr "Perfil" - -msgid "Profile (Expert)" -msgstr "Perfil (Especialista)" - -msgid "Realname" -msgstr "Nome Real" - -msgid "Red" -msgstr "Vermelho" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" -"Selecione a sua localização com o mouse clicando no mapa. O mapa irá mostrar " -"se você está conectado na internet." - -msgid "Show OpenStreetMap" -msgstr "Mostrar o OpenStreetMap" - -msgid "Show on map" -msgstr "Mostrar no mapa" - -msgid "Signal" -msgstr "Sinal" - -msgid "Splash" -msgstr "Splash" - -msgid "Start Upgrade" -msgstr "Iniciar a Atualização" - -msgid "Statistics" -msgstr "Estatística" - -msgid "Status" -msgstr "Estado" - -msgid "Still usable (4 < ETX < 10)" -msgstr "Ainda usável (4 < ETX < 10)" - -msgid "System" -msgstr "Sistema" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"O pacote libiwinfo não está instalado. Você precisa instalar este " -"componente para ter uma configuração sem fio funcional!" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" -"O serviço OLSRd não está configurado para capturar os dados de posição da " -"rede.
    Por favor, garnta que o plugin nameservice está corretametne " -"configurado e que a opção latlon_file está habilitada." - -msgid "The installed firmware is the most recent version." -msgstr "O firmware instalado é a última versão." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" -"Estas são as configurações básicas para a comunidade sem fio local. Estas " -"configurações definem os valores padrão para o assistente e NÃO afetam a " -"configuração atual do roteador." - -msgid "These are the settings of your local community." -msgstr "Estas são as configurações da sua comunidade local." - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" -"Esta página ajudará você na configuração do seu roteador Freifunk ou de " -"redes comunitárias sem fio similares." - -msgid "This is the access point" -msgstr "Este é o ponto de acesso " - -msgid "Update Settings" -msgstr "Configurações da Atualização" - -msgid "Update available!" -msgstr "Existe uma atualização disponível!" - -msgid "Uptime" -msgstr "Tempo de atividade" - -# 20140621: edersg: tradução -msgid "VAP" -msgstr "VAP" - -msgid "Verify downloaded images" -msgstr "Verifique as imagens baixadas" - -msgid "Very good (ETX < 2)" -msgstr "Muito bom (ETX < 2)" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Somos uma iniciativa para implementação de uma rede sem fio em malha livre, " -"independente e não-comercial." - -msgid "Wireless Overview" -msgstr "Visão Geral da Rede Sem Fio" - -msgid "Yellow" -msgstr "Amarelo" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" -"Você pode mostrar conteúdo adicional na página índice pública inserindo " -"XHTML válido no formulário abaixo.
    As manchetes devem ficam entre <" -"h2> e </h2>." - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" -"Você pode encontrar mais informações sobre a iniciativa global Freifunk em" - -msgid "You can manually edit the selected community profile here." -msgstr "Você pode editar manualmente o perfil da comunidade selecionada aqui." - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" -"Você precisa selecionar um perfil antes de poder editá-lo. Para selecionar " -"um perfil, vá para" - -msgid "and fill out all required fields." -msgstr "e preencher todos os campos obrigatórios." - -msgid "buffered" -msgstr "no Buffer" - -msgid "cached" -msgstr "no Cache" - -msgid "e.g." -msgstr "ex:" - -msgid "free" -msgstr "livre" - -msgid "to disable it." -msgstr "para desabilitá-lo." - -msgid "used" -msgstr "usado" - -msgid "wireless settings" -msgstr "configurações da rede sem fio" - -#~ msgid "" -#~ "No services can be shown, because olsrd is not running or the olsrd-" -#~ "nameservice Plugin is not loaded." -#~ msgstr "" -#~ "Nenhum serviço pode ser mostrado porque o olsrd não está rodando ou o " -#~ "plugin do olsrd-nameservice não está carregado." - -#~ msgid "Services" -#~ msgstr "Serviços" - -#~ msgid "Source" -#~ msgstr "Origem" - -#~ msgid "" -#~ "The libiwinfo-lua package is not installed. You must install " -#~ "this component for working wireless configuration!" -#~ msgstr "" -#~ "O pacote libiwinfo-lua não está instalado. Você deve instalar " -#~ "este componente para ter uma configuração sem fio funcional!" - -#~ msgid "Url" -#~ msgstr "URL" diff --git a/package/luci/modules/luci-mod-freifunk/po/pt/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/pt/freifunk.po deleted file mode 100644 index b5b822b880..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/pt/freifunk.po +++ /dev/null @@ -1,401 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2009-05-19 17:33+0200\n" -"Last-Translator: Jose Monteiro \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "Coordenadas" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "email" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "Olá e benvindo à rede " - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" -"Se estiver interessado no nosso projecto, entre em contacto com a sua " -"comunidade local" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"O acesso à Internet depende de factores técnicos e organizacionais, e pode " -"funcionar ou não no seu caso." - -msgid "It is operated by" -msgstr "É operado por " - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "Localização" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "Memória" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "Nome curto (nick)" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "Notas" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "Telefone" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "Nome" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "Este é o ponto de acesso " - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Somos uma iniciativa para implementação de uma rede livre, independente e " -"não-comercial." - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "Pode encontrar mais informações sobre a iniciativa global Freifunk em " - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/ro/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/ro/freifunk.po deleted file mode 100644 index 408abd8de6..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/ro/freifunk.po +++ /dev/null @@ -1,395 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-06-29 19:53+0200\n" -"Last-Translator: xxvirusxx \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "Setări de bază" - -msgid "Basic settings" -msgstr "Setări de bază" - -msgid "Basic settings are incomplete. Please go to" -msgstr "Setările de bază sunt incomplete. Mergi la" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "Canal" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "Comunitate" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "Contact" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "Coordonate" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "Activează IPv6" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "Eroare" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "Du-te la" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "Verde" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "Interfaţă" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "Păstrează configuraţia" - -msgid "Latitude" -msgstr "Latitudine" - -msgid "Legend" -msgstr "Legendă" - -msgid "Load" -msgstr "Încarcă" - -msgid "Local Time" -msgstr "Oră locală" - -msgid "Location" -msgstr "Locaţie" - -msgid "Longitude" -msgstr "Longitudine" - -msgid "Map" -msgstr "Hartă" - -msgid "Map Error" -msgstr "Eroare hartă" - -msgid "Memory" -msgstr "Memorie" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "Mod" - -msgid "Network" -msgstr "Reţea" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "Poreclă" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "Portocaliu" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "Telefon" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "Putere" - -msgid "Processor" -msgstr "Procesor" - -msgid "Profile" -msgstr "Profil" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "Nume real" - -msgid "Red" -msgstr "Roşu" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "Arată pe hartă" - -msgid "Signal" -msgstr "Semnal" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "Statistici" - -msgid "Status" -msgstr "Stare" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "Firmware-ul instalat este cea mai recentă versiune." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "Galben" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "şi completaţi toate câmpurile" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "ex." - -msgid "free" -msgstr "liber" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "folosit" - -msgid "wireless settings" -msgstr "setări wireless" diff --git a/package/luci/modules/luci-mod-freifunk/po/ru/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/ru/freifunk.po deleted file mode 100644 index 0943a3b485..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/ru/freifunk.po +++ /dev/null @@ -1,451 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI: freifunk\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-19 19:36+0200\n" -"PO-Revision-Date: 2013-09-06 09:41+0200\n" -"Last-Translator: datasheet \n" -"Language-Team: Russian \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" -"X-Poedit-SourceCharset: UTF-8\n" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "Плохой (ETX > 10)" - -msgid "Basic Settings" -msgstr "Базовые настройки" - -msgid "Basic settings" -msgstr "Базовые настройки" - -msgid "Basic settings are incomplete. Please go to" -msgstr "Базовые настройки не верны. Пожалуйста, перейдите в" - -msgid "Basic system settings" -msgstr "Основные настройки системы" - -msgid "Bitrate" -msgstr "Скорость" - -msgid "Channel" -msgstr "Канал" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" -"Проверить наличие новой версии прошивки и выполнить автоматическое " -"обновление." - -msgid "Client network size" -msgstr "Размер клиентской сети" - -msgid "Community" -msgstr "Сообщество" - -msgid "Community profile" -msgstr "Профиль сообщества" - -msgid "Community settings" -msgstr "Настройки сообщества" - -msgid "Confirm Upgrade" -msgstr "Подтвердить обновление" - -msgid "Contact" -msgstr "Контактная информация" - -msgid "Contact information is incomplete. Please go to" -msgstr "Контактная информация не верна. Пожалуйста, перейдите в" - -msgid "Coordinates" -msgstr "Координаты" - -msgid "Country code" -msgstr "Код страны" - -msgid "Default routes" -msgstr "Маршруты по умолчанию" - -msgid "Disable default content" -msgstr "Запретить контент по умолчанию" - -msgid "Diversity is enabled for device" -msgstr "Неопределенность пути включена" - -msgid "E-Mail" -msgstr "Эл. почта" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "Редактировать главную страницу" - -msgid "Enable IPv6" -msgstr "Включить IPv6" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "Ошибка" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "Найдите свои координаты с помощью OpenStreetMap" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Обзор Freifunk" - -msgid "Freifunk Remote Update" -msgstr "Удалённое обновление Freifunk" - -msgid "Gateway" -msgstr "Шлюз" - -msgid "Go to" -msgstr "Перейти" - -msgid "Good (2 < ETX < 4)" -msgstr "Хороший (2 < ETX < 4)" - -#, fuzzy -msgid "Green" -msgstr "Зелёный" - -msgid "Hello and welcome in the network of" -msgstr "Здравствуйте и добро пожаловать в сеть" - -msgid "Hide OpenStreetMap" -msgstr "Скрыть OpenStreetMap" - -msgid "Homepage" -msgstr "Домашняя страница" - -msgid "Hostname" -msgstr "Имя хоста" - -#, fuzzy -msgid "IPv6 Config" -msgstr "Конфигурация IPv6" - -msgid "IPv6 Prefix" -msgstr "Префикс IPv6" - -msgid "IPv6 network in CIDR notation." -msgstr "Сеть IPv6 в CIDR-нотации" - -msgid "If selected then the default content element is not shown." -msgstr "Если выбрано, содержимое по умолчанию не будет показано." - -msgid "If you are interested in our project then contact the local community" -msgstr "" -"Если вы заинтересованы в нашем проекте, свяжитесь с местным сообществом" - -msgid "Index Page" -msgstr "Главная страница" - -msgid "Interface" -msgstr "Интерфейс" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"Доступ в интернет зависит от технических и организационных условий и может " -"быть не доступен для вас." - -# It - access point -msgid "It is operated by" -msgstr "Она управляется" - -msgid "Keep configuration" -msgstr "Сохранить конфигурацию" - -msgid "Latitude" -msgstr "Широта" - -msgid "Legend" -msgstr "Надпись" - -msgid "Load" -msgstr "Загрузка" - -msgid "Local Time" -msgstr "Местное время" - -msgid "Location" -msgstr "Местоположение" - -msgid "Longitude" -msgstr "Долгота" - -msgid "Map" -msgstr "Карта" - -msgid "Map Error" -msgstr "Ошибка карты" - -msgid "Memory" -msgstr "Память" - -msgid "Mesh prefix" -msgstr "Префикс ячейки" - -msgid "Metric" -msgstr "Метрика" - -msgid "Mode" -msgstr "Режим" - -msgid "Network" -msgstr "Сеть" - -msgid "Network for client DHCP addresses" -msgstr "Сеть для клиентских DHCP-адресов" - -msgid "Nickname" -msgstr "Псевдоним" - -msgid "No default routes known." -msgstr "Маршруты по умолчанию не известны." - -msgid "Notice" -msgstr "Внимание" - -msgid "OLSR" -msgstr "OLSR" - -msgid "Operator" -msgstr "Оператор" - -#, fuzzy -msgid "Orange" -msgstr "Оранжевый" - -msgid "Overview" -msgstr "Обзор" - -msgid "Package libiwinfo required!" -msgstr "Требуется libiwinfo!" - -msgid "Phone" -msgstr "Телефон" - -msgid "Please fill in your contact details below." -msgstr "Пожалуйста, введите вашу контактную информацию." - -msgid "Please set your contact information" -msgstr "Пожалуйста, введите вашу контактную информацию" - -msgid "Power" -msgstr "Питание" - -msgid "Processor" -msgstr "Процессор" - -msgid "Profile" -msgstr "Профиль" - -msgid "Profile (Expert)" -msgstr "Профиль (эксперт)" - -msgid "Realname" -msgstr "Имя" - -#, fuzzy -msgid "Red" -msgstr "Красный" - -msgid "SSID" -msgstr "SSID" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" -"Укажите ваше местоположение на карте с помощью щелчка мыши. Карта будет " -"показана только если вы подключены к интернету." - -msgid "Show OpenStreetMap" -msgstr "Показать карту OpenStreetMap" - -msgid "Show on map" -msgstr "Показать на карте" - -msgid "Signal" -msgstr "Сигнал" - -msgid "Splash" -msgstr "Splash-экран" - -msgid "Start Upgrade" -msgstr "Начать обновление" - -msgid "Statistics" -msgstr "Статистика" - -msgid "Status" -msgstr "Статус" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "Система" - -msgid "TX" -msgstr "TX" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Пакет libiwinfo-lua не установлен. Для включения настроек " -"беспроводных сетей, вам необходимо установить этот компонент!" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" -"Сервис OLSRd не сконфигурирован на получение данных о местоположении из сети." -"
    Пожалуйста, удостоверьтесь, что модуль пространства имён настроен " -"правильно и что опция latlon_file включена." - -msgid "The installed firmware is the most recent version." -msgstr "Установлена прошивка самой последней версии." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" -"Это базовые настройки вашего сообщества. Они определяют стандартные " -"настройки для мастера установки и НЕ влияют на конечную конфигурацию " -"маршрутизатора." - -msgid "These are the settings of your local community." -msgstr "Это настройки для вашего сообщества." - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" -"Эти страницы помогут настроить ваш маршрутизатор для Freifunk или подобной " -"беспроводной сети." - -msgid "This is the access point" -msgstr "Это - точка доступа" - -msgid "Update Settings" -msgstr "Настройки обновления" - -msgid "Update available!" -msgstr "Доступно обновление!" - -msgid "Uptime" -msgstr "Время работы" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "Проверять загруженные образы" - -msgid "Very good (ETX < 2)" -msgstr "Очень хороший (ETX < 2)" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" -"Мы - это сообщество, цель которого создать бесплатную, независимую и " -"открытую беспроводную ячеистую сеть." - -msgid "Wireless Overview" -msgstr "Обзор беспроводных сетей" - -#, fuzzy -msgid "Yellow" -msgstr "Жёлтый" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" -"У вас есть возможность установить дополнительное содержимое публичной " -"страницы, вставив соответствующий XHTML-код в форму.
    Заголовки должны " -"быть заключены между <h2> и </h2>." - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "Вы можете найти дополнительную информацию о Freifunk по адресу" - -msgid "You can manually edit the selected community profile here." -msgstr "Здесь вы можете редактировать выбранный профиль сообщества." - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" -"Необходимо выбрать профиль перед его редактированием. Чтобы выбрать профиль, " -"перейдите в" - -msgid "and fill out all required fields." -msgstr "и заполните все необходимые поля." - -msgid "buffered" -msgstr "буферизировано" - -msgid "cached" -msgstr "кэшировано" - -msgid "e.g." -msgstr "напр." - -msgid "free" -msgstr "свободно" - -msgid "to disable it." -msgstr "чтобы выключить." - -msgid "used" -msgstr "использовано" - -msgid "wireless settings" -msgstr "настройки беспроводной сети" - -#~ msgid "" -#~ "No services can be shown, because olsrd is not running or the olsrd-" -#~ "nameservice Plugin is not loaded." -#~ msgstr "" -#~ "Сервис не может быть показан, так как oslrd не запущен или модуль olsrd-" -#~ "nameservice не загружен." - -#~ msgid "Services" -#~ msgstr "Службы" - -#~ msgid "Source" -#~ msgstr "Источник" - -#~ msgid "" -#~ "The libiwinfo-lua package is not installed. You must install " -#~ "this component for working wireless configuration!" -#~ msgstr "" -#~ "Пакет libiwinfo-lua не установлен. Вам необходимо установить " -#~ "этот компонент для настройки беспроводной сети!" - -#~ msgid "Url" -#~ msgstr "Url" diff --git a/package/luci/modules/luci-mod-freifunk/po/sk/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/sk/freifunk.po deleted file mode 100644 index 343f02204b..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/sk/freifunk.po +++ /dev/null @@ -1,391 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/sv/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/sv/freifunk.po deleted file mode 100644 index cf42fa159b..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/sv/freifunk.po +++ /dev/null @@ -1,392 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/tr/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/tr/freifunk.po deleted file mode 100644 index f485e01b42..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/tr/freifunk.po +++ /dev/null @@ -1,392 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/uk/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/uk/freifunk.po deleted file mode 100644 index 5abfa11cc7..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/uk/freifunk.po +++ /dev/null @@ -1,393 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/vi/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/vi/freifunk.po deleted file mode 100644 index 8076d61b21..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/vi/freifunk.po +++ /dev/null @@ -1,398 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:58+0200\n" -"PO-Revision-Date: 2009-08-15 11:56+0200\n" -"Last-Translator: Stefan Pirwitz \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "Kiểm tra các phiên bản phần cứng mới và thực hiện tự động cập nhật." - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "Tọa độ" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "E-mail" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "Freifunk cập nhật từ xa" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "Xin chào và chào mừng gia nhập mạng lưới của" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "Hostname" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" -"Nếu bạn quan tâm đến đề án của chúng tôi, hãy liên hệ cộng đồng địa phương" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" -"Truy cập Internet phù thuộc vào kỹ thật và điều kiện tổ chức và có thể hoạt " -"động hoặc không hoạt động cho bạn" - -msgid "It is operated by" -msgstr "Nó hoạt động bởi " - -msgid "Keep configuration" -msgstr "Giữ cấu hình" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "Địa chỉ" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "Bộ nhớ" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "Tên" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "Chú ý" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "Điện thoại" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "Tên thật " - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "Bắt đầu cập nhật " - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "Phần cứng được cài đặt là phiên bản mới nhất." - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "Đây là điểm truy cập " - -msgid "Update Settings" -msgstr "Cập nhật cài đặt" - -msgid "Update available!" -msgstr "Cập nhật sẵn có!" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "Xác minh hình ảnh đã tải" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "Chúng tôi là phát triển mạng lưới nguồn mở không dây đầu tiên" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "Bạn có thể tìm thấy thông tin về Freifunk toàn cầu tại " - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-freifunk/po/zh-cn/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/zh-cn/freifunk.po deleted file mode 100644 index d273055d12..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/zh-cn/freifunk.po +++ /dev/null @@ -1,403 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-06-22 14:33+0200\n" -"Last-Translator: phantasm131 \n" -"Language-Team: LANGUAGE \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" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Bad (ETX > 10)" -msgstr "错误(ETX>10)" - -msgid "Basic Settings" -msgstr "基础设置" - -msgid "Basic settings" -msgstr "基础设置" - -msgid "Basic settings are incomplete. Please go to" -msgstr "基础设置不完整,请转到" - -msgid "Basic system settings" -msgstr "基础系统设置" - -msgid "Bitrate" -msgstr "速率" - -msgid "Channel" -msgstr "频道" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "检查新的固件版本并自动升级。" - -msgid "Client network size" -msgstr "客户端网络容量" - -msgid "Community" -msgstr "群组" - -msgid "Community profile" -msgstr "群组配置文件" - -msgid "Community settings" -msgstr "群组设置" - -msgid "Confirm Upgrade" -msgstr "确认升级" - -msgid "Contact" -msgstr "联系人" - -msgid "Contact information is incomplete. Please go to" -msgstr "联系人信息不全。请继续填写" - -msgid "Coordinates" -msgstr "位置" - -msgid "Country code" -msgstr "国家代码" - -msgid "Default routes" -msgstr "缺省路由" - -msgid "Disable default content" -msgstr "禁用默认内容" - -msgid "Diversity is enabled for device" -msgstr "启用多重设备" - -msgid "E-Mail" -msgstr "电子邮件" - -msgid "ESSID" -msgstr "ESSID" - -msgid "Edit index page" -msgstr "编辑索引页" - -msgid "Enable IPv6" -msgstr "启用IPv6" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "启用一个虚拟接入点(如果可以的话)" - -msgid "Error" -msgstr "错误" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "使用OpenStreetMap查找位置坐标" - -msgid "Freifunk" -msgstr "Freifunk" - -msgid "Freifunk Overview" -msgstr "Freifunk简介" - -msgid "Freifunk Remote Update" -msgstr "Freifunk远程更新" - -msgid "Gateway" -msgstr "网关" - -msgid "Go to" -msgstr "去" - -msgid "Good (2 < ETX < 4)" -msgstr "好(2libiwinfo
    package is not installed. You must install this " -"component for working wireless configuration!" -msgstr " libiwinfo 包没有安装。进行无线配置您必须安装此组件!" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" -"没有配置OLSRd从网络获取位置数据。
    请确保正确配置域名服务插件,且 " -"latlon_file 选项被启用。" - -msgid "The installed firmware is the most recent version." -msgstr "所安装固件为最新版本。" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" -"这些基本设置为您本地的无线社区。这些设置定义为向导默认值并不会影响路由器的实" -"际配置。" - -msgid "These are the settings of your local community." -msgstr "当地社区设置。" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "这些页面将帮助您设置路由器Freifunk或类似的无线社区网络。" - -msgid "This is the access point" -msgstr "AP" - -msgid "Update Settings" -msgstr "升级设置" - -msgid "Update available!" -msgstr "可用更新!" - -msgid "Uptime" -msgstr "正常运行时间" - -msgid "VAP" -msgstr "VAP" - -msgid "Verify downloaded images" -msgstr "校验下载的镜像包" - -msgid "Very good (ETX < 2)" -msgstr "非常好(ETX<2)" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "我们倡议建立一个自由,独立和开放的无线mesh网络。" - -msgid "Wireless Overview" -msgstr "无线概要" - -msgid "Yellow" -msgstr "黄色" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" -"可以显示更多的内容,对公众的索引页下面的表格中插入有效的XHTML。
    标题应放" -"在<H2>和</ H2>中" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "您可以找到更多有关全球Freifunk活动的信息" - -msgid "You can manually edit the selected community profile here." -msgstr "您可以在这里手动编辑所选社区配置文件。" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "编辑它之前,您需要选择一个配置文件。选择配置文件" - -msgid "and fill out all required fields." -msgstr "填写所有必填字段。" - -msgid "buffered" -msgstr "已缓存" - -msgid "cached" -msgstr "已暂存" - -msgid "e.g." -msgstr "例如:" - -msgid "free" -msgstr "空闲" - -msgid "to disable it." -msgstr "禁用它。" - -msgid "used" -msgstr "占用" - -msgid "wireless settings" -msgstr "无线设置" diff --git a/package/luci/modules/luci-mod-freifunk/po/zh-tw/freifunk.po b/package/luci/modules/luci-mod-freifunk/po/zh-tw/freifunk.po deleted file mode 100644 index 51432e2e3b..0000000000 --- a/package/luci/modules/luci-mod-freifunk/po/zh-tw/freifunk.po +++ /dev/null @@ -1,390 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "BSSID" -msgstr "" - -msgid "Bad (ETX > 10)" -msgstr "" - -msgid "Basic Settings" -msgstr "" - -msgid "Basic settings" -msgstr "" - -msgid "Basic settings are incomplete. Please go to" -msgstr "" - -msgid "Basic system settings" -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "Check for new firmware versions and perform automatic updates." -msgstr "" - -msgid "Client network size" -msgstr "" - -msgid "Community" -msgstr "" - -msgid "Community profile" -msgstr "" - -msgid "Community settings" -msgstr "" - -msgid "Confirm Upgrade" -msgstr "" - -msgid "Contact" -msgstr "" - -msgid "Contact information is incomplete. Please go to" -msgstr "" - -msgid "Coordinates" -msgstr "" - -msgid "Country code" -msgstr "" - -msgid "Default routes" -msgstr "" - -msgid "Disable default content" -msgstr "" - -msgid "Diversity is enabled for device" -msgstr "" - -msgid "E-Mail" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "Edit index page" -msgstr "" - -msgid "Enable IPv6" -msgstr "" - -msgid "Enable a virtual access point (VAP) by default if possible." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Find your coordinates with OpenStreetMap" -msgstr "" - -msgid "Freifunk" -msgstr "" - -msgid "Freifunk Overview" -msgstr "" - -msgid "Freifunk Remote Update" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Go to" -msgstr "" - -msgid "Good (2 < ETX < 4)" -msgstr "" - -msgid "Green" -msgstr "" - -msgid "Hello and welcome in the network of" -msgstr "" - -msgid "Hide OpenStreetMap" -msgstr "" - -msgid "Homepage" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "IPv6 Config" -msgstr "" - -msgid "IPv6 Prefix" -msgstr "" - -msgid "IPv6 network in CIDR notation." -msgstr "" - -msgid "If selected then the default content element is not shown." -msgstr "" - -msgid "If you are interested in our project then contact the local community" -msgstr "" - -msgid "Index Page" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "" -"Internet access depends on technical and organisational conditions and may " -"or may not work for you." -msgstr "" - -msgid "It is operated by" -msgstr "" - -msgid "Keep configuration" -msgstr "" - -msgid "Latitude" -msgstr "" - -msgid "Legend" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Location" -msgstr "" - -msgid "Longitude" -msgstr "" - -msgid "Map" -msgstr "" - -msgid "Map Error" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Mesh prefix" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network for client DHCP addresses" -msgstr "" - -msgid "Nickname" -msgstr "" - -msgid "No default routes known." -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "OLSR" -msgstr "" - -msgid "Operator" -msgstr "" - -msgid "Orange" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Phone" -msgstr "" - -msgid "Please fill in your contact details below." -msgstr "" - -msgid "Please set your contact information" -msgstr "" - -msgid "Power" -msgstr "" - -msgid "Processor" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Profile (Expert)" -msgstr "" - -msgid "Realname" -msgstr "" - -msgid "Red" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "" -"Select your location with a mouse click on the map. The map will only show " -"up if you are connected to the Internet." -msgstr "" - -msgid "Show OpenStreetMap" -msgstr "" - -msgid "Show on map" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Splash" -msgstr "" - -msgid "Start Upgrade" -msgstr "" - -msgid "Statistics" -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Still usable (4 < ETX < 10)" -msgstr "" - -msgid "System" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "" -"The libiwinfo package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The OLSRd service is not configured to capture position data from the " -"network.
    Please make sure that the nameservice plugin is properly " -"configured and that the latlon_file option is enabled." -msgstr "" - -msgid "The installed firmware is the most recent version." -msgstr "" - -msgid "" -"These are the basic settings for your local wireless community. These " -"settings define the default values for the wizard and DO NOT affect the " -"actual configuration of the router." -msgstr "" - -msgid "These are the settings of your local community." -msgstr "" - -msgid "" -"These pages will assist you in setting up your router for Freifunk or " -"similar wireless community networks." -msgstr "" - -msgid "This is the access point" -msgstr "" - -msgid "Update Settings" -msgstr "" - -msgid "Update available!" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "VAP" -msgstr "" - -msgid "Verify downloaded images" -msgstr "" - -msgid "Very good (ETX < 2)" -msgstr "" - -msgid "" -"We are an initiative to establish a free, independent and open wireless mesh " -"network." -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Yellow" -msgstr "" - -msgid "" -"You can display additional content on the public index page by inserting " -"valid XHTML in the form below.
    Headlines should be enclosed between <" -"h2> and </h2>." -msgstr "" - -msgid "" -"You can find further information about the global Freifunk initiative at" -msgstr "" - -msgid "You can manually edit the selected community profile here." -msgstr "" - -msgid "" -"You need to select a profile before you can edit it. To select a profile go " -"to" -msgstr "" - -msgid "and fill out all required fields." -msgstr "" - -msgid "buffered" -msgstr "" - -msgid "cached" -msgstr "" - -msgid "e.g." -msgstr "" - -msgid "free" -msgstr "" - -msgid "to disable it." -msgstr "" - -msgid "used" -msgstr "" - -msgid "wireless settings" -msgstr "" diff --git a/package/luci/modules/luci-mod-rpc/Makefile b/package/luci/modules/luci-mod-rpc/Makefile deleted file mode 100644 index bc1f6d2756..0000000000 --- a/package/luci/modules/luci-mod-rpc/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI RPC - JSON-RPC API -LUCI_DEPENDS:=+luci-lib-json - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/package/luci/modules/luci-mod-rpc/luasrc/controller/rpc.lua b/package/luci/modules/luci-mod-rpc/luasrc/controller/rpc.lua deleted file mode 100644 index 759bb749cf..0000000000 --- a/package/luci/modules/luci-mod-rpc/luasrc/controller/rpc.lua +++ /dev/null @@ -1,161 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local require = require -local pairs = pairs -local print = print -local pcall = pcall -local table = table - -module "luci.controller.rpc" - -function index() - local function authenticator(validator, accs) - local auth = luci.http.formvalue("auth", true) - if auth then -- if authentication token was given - local sdat = (luci.util.ubus("session", "get", { ubus_rpc_session = auth }) or { }).values - if sdat then -- if given token is valid - if sdat.user and luci.util.contains(accs, sdat.user) then - return sdat.user, auth - end - end - end - luci.http.status(403, "Forbidden") - end - - local rpc = node("rpc") - rpc.sysauth = "root" - rpc.sysauth_authenticator = authenticator - rpc.notemplate = true - - entry({"rpc", "uci"}, call("rpc_uci")) - entry({"rpc", "fs"}, call("rpc_fs")) - entry({"rpc", "sys"}, call("rpc_sys")) - entry({"rpc", "ipkg"}, call("rpc_ipkg")) - entry({"rpc", "auth"}, call("rpc_auth")).sysauth = false -end - -function rpc_auth() - local jsonrpc = require "luci.jsonrpc" - local http = require "luci.http" - local sys = require "luci.sys" - local ltn12 = require "luci.ltn12" - local util = require "luci.util" - - local loginstat - - local server = {} - server.challenge = function(user, pass) - local sid, token, secret - - local config = require "luci.config" - - if sys.user.checkpasswd(user, pass) then - local sdat = util.ubus("session", "create", { timeout = config.sauth.sessiontime }) - if sdat then - sid = sdat.ubus_rpc_session - token = sys.uniqueid(16) - secret = sys.uniqueid(16) - - http.header("Set-Cookie", "sysauth="..sid.."; path=/") - util.ubus("session", "set", { - ubus_rpc_session = sid, - values = { - user = user, - token = token, - secret = secret - } - }) - end - end - - return sid and {sid=sid, token=token, secret=secret} - end - - server.login = function(...) - local challenge = server.challenge(...) - return challenge and challenge.sid - end - - http.prepare_content("application/json") - ltn12.pump.all(jsonrpc.handle(server, http.source()), http.write) -end - -function rpc_uci() - if not pcall(require, "luci.model.uci") then - luci.http.status(404, "Not Found") - return nil - end - local uci = require "luci.jsonrpcbind.uci" - local jsonrpc = require "luci.jsonrpc" - local http = require "luci.http" - local ltn12 = require "luci.ltn12" - - http.prepare_content("application/json") - ltn12.pump.all(jsonrpc.handle(uci, http.source()), http.write) -end - -function rpc_fs() - local util = require "luci.util" - local io = require "io" - local fs2 = util.clone(require "nixio.fs") - local jsonrpc = require "luci.jsonrpc" - local http = require "luci.http" - local ltn12 = require "luci.ltn12" - - function fs2.readfile(filename) - local stat, mime = pcall(require, "mime") - if not stat then - error("Base64 support not available. Please install LuaSocket.") - end - - local fp = io.open(filename) - if not fp then - return nil - end - - local output = {} - local sink = ltn12.sink.table(output) - local source = ltn12.source.chain(ltn12.source.file(fp), mime.encode("base64")) - return ltn12.pump.all(source, sink) and table.concat(output) - end - - function fs2.writefile(filename, data) - local stat, mime = pcall(require, "mime") - if not stat then - error("Base64 support not available. Please install LuaSocket.") - end - - local file = io.open(filename, "w") - local sink = file and ltn12.sink.chain(mime.decode("base64"), ltn12.sink.file(file)) - return sink and ltn12.pump.all(ltn12.source.string(data), sink) or false - end - - http.prepare_content("application/json") - ltn12.pump.all(jsonrpc.handle(fs2, http.source()), http.write) -end - -function rpc_sys() - local sys = require "luci.sys" - local jsonrpc = require "luci.jsonrpc" - local http = require "luci.http" - local ltn12 = require "luci.ltn12" - - http.prepare_content("application/json") - ltn12.pump.all(jsonrpc.handle(sys, http.source()), http.write) -end - -function rpc_ipkg() - if not pcall(require, "luci.model.ipkg") then - luci.http.status(404, "Not Found") - return nil - end - local ipkg = require "luci.model.ipkg" - local jsonrpc = require "luci.jsonrpc" - local http = require "luci.http" - local ltn12 = require "luci.ltn12" - - http.prepare_content("application/json") - ltn12.pump.all(jsonrpc.handle(ipkg, http.source()), http.write) -end diff --git a/package/luci/modules/luci-mod-rpc/luasrc/jsonrpc.lua b/package/luci/modules/luci-mod-rpc/luasrc/jsonrpc.lua deleted file mode 100644 index c7f025496d..0000000000 --- a/package/luci/modules/luci-mod-rpc/luasrc/jsonrpc.lua +++ /dev/null @@ -1,83 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.jsonrpc", package.seeall) -require "luci.json" - -function resolve(mod, method) - local path = luci.util.split(method, ".") - - for j=1, #path-1 do - if not type(mod) == "table" then - break - end - mod = rawget(mod, path[j]) - if not mod then - break - end - end - mod = type(mod) == "table" and rawget(mod, path[#path]) or nil - if type(mod) == "function" then - return mod - end -end - -function handle(tbl, rawsource, ...) - local decoder = luci.json.Decoder() - local stat = luci.ltn12.pump.all(rawsource, decoder:sink()) - local json = decoder:get() - local response - local success = false - - if stat then - if type(json.method) == "string" - and (not json.params or type(json.params) == "table") then - local method = resolve(tbl, json.method) - if method then - response = reply(json.jsonrpc, json.id, - proxy(method, unpack(json.params or {}))) - else - response = reply(json.jsonrpc, json.id, - nil, {code=-32601, message="Method not found."}) - end - else - response = reply(json.jsonrpc, json.id, - nil, {code=-32600, message="Invalid request."}) - end - else - response = reply("2.0", nil, - nil, {code=-32700, message="Parse error."}) - end - - return luci.json.Encoder(response, ...):source() -end - -function reply(jsonrpc, id, res, err) - require "luci.json" - id = id or luci.json.null - - -- 1.0 compatibility - if jsonrpc ~= "2.0" then - jsonrpc = nil - res = res or luci.json.null - err = err or luci.json.null - end - - return {id=id, result=res, error=err, jsonrpc=jsonrpc} -end - -function proxy(method, ...) - local res = {luci.util.copcall(method, ...)} - local stat = table.remove(res, 1) - - if not stat then - return nil, {code=-32602, message="Invalid params.", data=table.remove(res, 1)} - else - if #res <= 1 then - return res[1] or luci.json.null - else - return res - end - end -end diff --git a/package/luci/modules/luci-mod-rpc/luasrc/jsonrpcbind/uci.lua b/package/luci/modules/luci-mod-rpc/luasrc/jsonrpcbind/uci.lua deleted file mode 100644 index 284801ecf1..0000000000 --- a/package/luci/modules/luci-mod-rpc/luasrc/jsonrpcbind/uci.lua +++ /dev/null @@ -1,83 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local uci = require "luci.model.uci".cursor() -local ucis = require "luci.model.uci".cursor_state() -local table = require "table" - - -module "luci.jsonrpcbind.uci" -_M, _PACKAGE, _NAME = nil, nil, nil - -function add(config, ...) - uci:load(config) - local stat = uci:add(config, ...) - return uci:save(config) and stat -end - -function apply(config) - return uci:apply(config) -end - -function changes(...) - return uci:changes(...) -end - -function commit(config) - return uci:load(config) and uci:commit(config) -end - -function delete(config, ...) - uci:load(config) - return uci:delete(config, ...) and uci:save(config) -end - -function delete_all(config, ...) - uci:load(config) - return uci:delete_all(config, ...) and uci:save(config) -end - -function foreach(config, stype) - uci:load(config) - local sections = {} - - return uci:foreach(config, stype, function(section) - table.insert(sections, section) - end) and sections -end - -function get(config, ...) - uci:load(config) - return uci:get(config, ...) -end - -function get_all(config, ...) - uci:load(config) - return uci:get_all(config, ...) -end - -function get_state(config, ...) - ucis:load(config) - return ucis:get(config, ...) -end - -function revert(config) - return uci:load(config) and uci:revert(config) -end - -function section(config, ...) - uci:load(config) - return uci:section(config, ...) and uci:save(config) -end - -function set(config, ...) - uci:load(config) - return uci:set(config, ...) and uci:save(config) -end - -function tset(config, ...) - uci:load(config) - return uci:tset(config, ...) and uci:save(config) -end - diff --git a/package/luci/protocols/luci-proto-3g/Makefile b/package/luci/protocols/luci-proto-3g/Makefile deleted file mode 100644 index d1d5455dc8..0000000000 --- a/package/luci/protocols/luci-proto-3g/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for 3G -LUCI_DEPENDS:=+comgt - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua b/package/luci/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua deleted file mode 100644 index 1b2e23cc42..0000000000 --- a/package/luci/protocols/luci-proto-3g/luasrc/model/cbi/admin_network/proto_3g.lua +++ /dev/null @@ -1,147 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local device, apn, service, pincode, username, password, dialnumber -local ipv6, maxwait, defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand - - -device = section:taboption("general", Value, "device", translate("Modem device")) -device.rmempty = false - -local device_suggestions = nixio.fs.glob("/dev/tty[A-Z]*") - or nixio.fs.glob("/dev/tts/*") - -if device_suggestions then - local node - for node in device_suggestions do - device:value(node) - end -end - - -service = section:taboption("general", Value, "service", translate("Service Type")) -service:value("", translate("-- Please choose --")) -service:value("umts", "UMTS/GPRS") -service:value("umts_only", translate("UMTS only")) -service:value("gprs_only", translate("GPRS only")) -service:value("evdo", "CDMA/EV-DO") - - -apn = section:taboption("general", Value, "apn", translate("APN")) - - -pincode = section:taboption("general", Value, "pincode", translate("PIN")) - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password.password = true - -dialnumber = section:taboption("general", Value, "dialnumber", translate("Dial number")) -dialnumber.placeholder = "*99***1#" - -if luci.model.network:has_ipv6() then - - ipv6 = section:taboption("advanced", ListValue, "ipv6") - ipv6:value("auto", translate("Automatic")) - ipv6:value("0", translate("Disabled")) - ipv6:value("1", translate("Manual")) - ipv6.default = "auto" - -end - - -maxwait = section:taboption("advanced", Value, "maxwait", - translate("Modem init timeout"), - translate("Maximum amount of seconds to wait for the modem to become ready")) - -maxwait.placeholder = "20" -maxwait.datatype = "min(1)" - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure", - translate("LCP echo failure threshold"), - translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures")) - -function keepalive_failure.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^(%d+)[ ,]+%d+") or v) - end -end - -function keepalive_failure.write() end -function keepalive_failure.remove() end - -keepalive_failure.placeholder = "0" -keepalive_failure.datatype = "uinteger" - - -keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval", - translate("LCP echo interval"), - translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold")) - -function keepalive_interval.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^%d+[ ,]+(%d+)")) - end -end - -function keepalive_interval.write(self, section, value) - local f = tonumber(keepalive_failure:formvalue(section)) or 0 - local i = tonumber(value) or 5 - if i < 1 then i = 1 end - if f > 0 then - m:set(section, "keepalive", "%d %d" %{ f, i }) - else - m:del(section, "keepalive") - end -end - -keepalive_interval.remove = keepalive_interval.write -keepalive_interval.placeholder = "5" -keepalive_interval.datatype = "min(1)" - - -demand = section:taboption("advanced", Value, "demand", - translate("Inactivity timeout"), - translate("Close inactive connection after the given amount of seconds, use 0 to persist connection")) - -demand.placeholder = "0" -demand.datatype = "uinteger" diff --git a/package/luci/protocols/luci-proto-ipip/Makefile b/package/luci/protocols/luci-proto-ipip/Makefile deleted file mode 100644 index 6af85647e5..0000000000 --- a/package/luci/protocols/luci-proto-ipip/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright 2016 Roger Pueyo Centelles -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for IPIP tunnels (IPv4-in-IPv4 RFC2003) -LUCI_DEPENDS:=+ipip - -PKG_MAINTAINER:=Roger Pueyo Centelles - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua b/package/luci/protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua deleted file mode 100644 index 8817f18d6d..0000000000 --- a/package/luci/protocols/luci-proto-ipip/luasrc/model/cbi/admin_network/proto_ipip.lua +++ /dev/null @@ -1,34 +0,0 @@ --- Copyright 2016 Roger Pueyo Centelles --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local peeraddr, ipaddr, ttl, tos, df, mtu, tunlink - -peeraddr = section:taboption("general", Value, "peeraddr", translate("Remote IPv4 address or FQDN"), translate("The IPv4 address or the fully-qualified domain name of the remote tunnel end.")) -peeraddr.optional = false -peeraddr.datatype = "or(hostname,ip4addr)" - -ipaddr = section:taboption("general", Value, "ipaddr", translate("Local IPv4 address"), translate("The local IPv4 address over which the tunnel is created (optional).")) -ipaddr.optional = true -ipaddr.datatype = "ip4addr" - -tunlink = section:taboption("general", Value, "tunlink", translate("Bind interface"), translate("Bind the tunnel to this interface (optional).")) -ipaddr.optional = true - - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"), translate("Specify an MTU (Maximum Transmission Unit) other than the default (1280 bytes).")) -mtu.optional = true -mtu.placeholder = 1280 -mtu.datatype = "range(68, 9200)" - -ttl = section:taboption("advanced", Value, "ttl", translate("Override TTL"), translate("Specify a TTL (Time to Live) for the encapsulating packet other than the default (64).")) -ttl.optional = true -ttl.placeholder = 64 -ttl.datatype = "min(1)" - -tos = section:taboption("advanced", Value, "tos", translate("Override TOS"), translate("Specify a TOS (Type of Service).")) -tos.optional = true -tos.datatype = "range(0, 255)" - -df = section:taboption("advanced", Flag, "df", translate("Don't Fragment"), translate("Enable the DF (Don't Fragment) flag of the encapsulating packets.")) diff --git a/package/luci/protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua b/package/luci/protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua deleted file mode 100644 index 04d2e78b09..0000000000 --- a/package/luci/protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua +++ /dev/null @@ -1,40 +0,0 @@ --- Copyright 2016 Roger Pueyo Centelles --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network -local interface = luci.model.network.interface -local proto = netmod:register_protocol("ipip") - -function proto.get_i18n(self) - return luci.i18n.translate("IPv4-in-IPv4 (RFC2003)") -end - -function proto.ifname(self) - return "ipip-" .. self.sid -end - -function proto.opkg_package(self) - return "ipip" -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/ipip.sh") -end - -function proto.is_floating(self) - return true -end - -function proto.is_virtual(self) - return true -end - -function proto.get_interfaces(self) - return nil -end - -function proto.contains_interface(self, ifc) - return (netmod:ifnameof(ifc) == self:ifname()) -end - -netmod:register_pattern_virtual("^ipip%-%w") diff --git a/package/luci/protocols/luci-proto-ipv6/Makefile b/package/luci/protocols/luci-proto-ipv6/Makefile deleted file mode 100644 index 761ee2f9f5..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite/aiccu -LUCI_DEPENDS:= - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua deleted file mode 100644 index 5a37582faf..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_464xlat.lua +++ /dev/null @@ -1,33 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... -local tunlink, defaultroute, metric, mtu - -section:taboption("general", Value, "ip6prefix", - translate("NAT64 Prefix"), translate("Leave empty to autodetect")) - -tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link")) -tunlink.template = "cbi/network_netlist" -tunlink.nocreate = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua deleted file mode 100644 index 88dfe09289..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua +++ /dev/null @@ -1,102 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local ipaddr, peeraddr, ip6addr, tunnelid, username, password -local defaultroute, metric, ttl, mtu - - -ipaddr = s:taboption("general", Value, "ipaddr", - translate("Local IPv4 address"), - translate("Leave empty to use the current WAN address")) - -ipaddr.datatype = "ip4addr" - - -peeraddr = s:taboption("general", Value, "peeraddr", - translate("Remote IPv4 address"), - translate("This is usually the address of the nearest PoP operated by the tunnel broker")) - -peeraddr.rmempty = false -peeraddr.datatype = "ip4addr" - - -ip6addr = s:taboption("general", Value, "ip6addr", - translate("Local IPv6 address"), - translate("This is the local endpoint address assigned by the tunnel broker, it usually ends with :2")) - -ip6addr.datatype = "ip6addr" - - -local ip6prefix = s:taboption("general", Value, "ip6prefix", - translate("IPv6 routed prefix"), - translate("This is the prefix routed to you by the tunnel broker for use by clients")) - -ip6prefix.datatype = "ip6addr" - - -local update = section:taboption("general", Flag, "_update", - translate("Dynamic tunnel"), - translate("Enable HE.net dynamic endpoint update")) - -update.enabled = "1" -update.disabled = "0" - -function update.write() end -function update.remove() end -function update.cfgvalue(self, section) - return (tonumber(m:get(section, "tunnelid")) ~= nil) - and self.enabled or self.disabled -end - - -tunnelid = section:taboption("general", Value, "tunnelid", translate("Tunnel ID")) -tunnelid.datatype = "uinteger" -tunnelid:depends("_update", update.enabled) - - -username = section:taboption("general", Value, "username", - translate("HE.net username"), - translate("This is the plain username for logging into the account")) - -username:depends("_update", update.enabled) -username.validate = function(self, val, sid) - if type(val) == "string" and #val == 32 and val:match("^[a-fA-F0-9]+$") then - return nil, translate("The HE.net endpoint update configuration changed, you must now use the plain username instead of the user ID!") - end - return val -end - - -password = section:taboption("general", Value, "password", - translate("HE.net password"), - translate("This is either the \"Update Key\" configured for the tunnel or the account password if no update key has been configured")) - -password.password = true -password:depends("_update", update.enabled) - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua deleted file mode 100644 index 708a9c5add..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua +++ /dev/null @@ -1,72 +0,0 @@ --- Copyright 2011-2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local ipaddr, peeraddr, ip6addr, tunnelid, username, password -local defaultroute, metric, ttl, mtu - - -ipaddr = s:taboption("general", Value, "ipaddr", - translate("Local IPv4 address"), - translate("Leave empty to use the current WAN address")) - -ipaddr.datatype = "ip4addr" - - -peeraddr = s:taboption("general", Value, "peeraddr", - translate("Remote IPv4 address"), - translate("This IPv4 address of the relay")) - -peeraddr.rmempty = false -peeraddr.datatype = "ip4addr" - - -ip6addr = s:taboption("general", Value, "ip6prefix", - translate("IPv6 prefix"), - translate("The IPv6 prefix assigned to the provider, usually ends with ::")) - -ip6addr.rmempty = false -ip6addr.datatype = "ip6addr" - - -ip6prefixlen = s:taboption("general", Value, "ip6prefixlen", - translate("IPv6 prefix length"), - translate("The length of the IPv6 prefix in bits")) - -ip6prefixlen.placeholder = "16" -ip6prefixlen.datatype = "range(0,128)" - - -ip6prefixlen = s:taboption("general", Value, "ip4prefixlen", - translate("IPv4 prefix length"), - translate("The length of the IPv4 prefix in bits, the remainder is used in the IPv6 addresses.")) - -ip6prefixlen.placeholder = "0" -ip6prefixlen.datatype = "range(0,32)" - - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua deleted file mode 100644 index 50a706974d..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local ipaddr, defaultroute, metric, ttl, mtu - - -ipaddr = section:taboption("general", Value, "ipaddr", - translate("Local IPv4 address"), - translate("Leave empty to use the current WAN address")) - -ipaddr.datatype = "ip4addr" - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua deleted file mode 100644 index 7b5e6043cc..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua +++ /dev/null @@ -1,136 +0,0 @@ --- Copyright 2015 Paul Oranje --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - --- config read by /lib/netifd/proto/aiccu.sh -local username, password, protocol, server, tunnelid, ip6prefix, requiretls, nat, heartbeat, - verbose, ntpsynctimeout, ip6addr, sourcerouting, defaultroute - --- generic parameters -local metric, ttl, mtu - - -username = section:taboption("general", Value, "username", - translate("Server username"), - translate("SIXXS-handle[/Tunnel-ID]")) -username.datatype = "string" - -password = section:taboption("general", Value, "password", - translate("Server password"), - translate("Server password, enter the specific password of the tunnel when the username contains the tunnel ID")) -password.datatype = "string" -password.password = true - - ---[[ SIXXS supports only TIC as tunnel broker protocol, no use setting it. -protocol = section:taboption("general", ListValue, "protocol", - translate("Tunnel broker protocol"), - translate("SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) use 6in4 instead")) - -protocol:value("tic", "TIC") -protocol:value("tsp", "TSP") -protocol:value("l2tp", "L2TP") -protocol.default = "tic" -protocol.optional = true ---]] - - -server = section:taboption("general", Value, "server", - translate("Tunnel setup server"), - translate("Optional, specify to override default server (tic.sixxs.net)")) -server.datatype = "host(0)" -server.optional = true - - -tunnelid = section:taboption("general", Value, "tunnelid", - translate("Tunnel ID"), - translate("Optional, use when the SIXXS account has more than one tunnel")) -tunnelid.datatype = "string" -tunnelid.optional = true - - -local ip6prefix = section:taboption("general", Value, "ip6prefix", - translate("IPv6 prefix"), - translate("Routed IPv6 prefix for downstream interfaces")) -ip6prefix.datatype = "ip6addr" -ip6prefix.optional = true - - -heartbeat = s:taboption("general", ListValue, "heartbeat", - translate("Tunnel type"), - translate("Also see Tunneling Comparison on SIXXS")) -heartbeat:value("0", translate("AYIYA")) -heartbeat:value("1", translate("Heartbeat")) -heartbeat.default = "0" - - -nat = section:taboption("general", Flag, "nat", - translate("Behind NAT"), - translate("The tunnel end-point is behind NAT, defaults to disabled and only applies to AYIYA")) -nat.optional = true -nat.default = nat.disabled - - -requiretls = section:taboption("general", Flag, "requiretls", - translate("Require TLS"), - translate("Connection to server fails when TLS cannot be used")) -requiretls.optional = true -requiretls.default = requiretls.disabled - - -verbose = section:taboption("advanced", Flag, "verbose", - translate("Verbose"), - translate("Verbose logging by aiccu daemon")) -verbose.optional = true -verbose.default = verbose.disabled - - -ntpsynctimeout = section:taboption("advanced", Value, "ntpsynctimeout", - translate("NTP sync time-out"), - translate("Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)")) -ntpsynctimeout.datatype = "uinteger" -ntpsynctimeout.placeholder = "90" -ntpsynctimeout.optional = true - - -ip6addr = section:taboption("advanced", Value, "ip6addr", - translate("Local IPv6 address"), - translate("IPv6 address delegated to the local tunnel endpoint (optional)")) -ip6addr.datatype = "ip6addr" -ip6addr.optional = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default route"), - translate("Whether to create an IPv6 default route over the tunnel")) -defaultroute.default = defaultroute.enabled -defaultroute.optional = true - - -sourcerouting = section:taboption("advanced", Flag, "sourcerouting", - translate("Source routing"), - translate("Whether to route only packets from delegated prefixes")) -sourcerouting.default = sourcerouting.enabled -sourcerouting.optional = true - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) -metric.datatype = "uinteger" -metric.placeholder = "0" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", - translate("Use TTL on tunnel interface")) -ttl.datatype = "range(1,255)" -ttl.placeholder = "64" - - -mtu = section:taboption("advanced", Value, "mtu", - translate("Use MTU on tunnel interface"), - translate("minimum 1280, maximum 1480")) -mtu.datatype = "range(1280,1480)" -mtu.placeholder = "1280" - diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua deleted file mode 100644 index 76caedcb37..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua +++ /dev/null @@ -1,58 +0,0 @@ --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - - -local o = section:taboption("general", ListValue, "reqaddress", - translate("Request IPv6-address")) -o:value("try") -o:value("force") -o:value("none", "disabled") -o.default = "try" - - -o = section:taboption("general", Value, "reqprefix", - translate("Request IPv6-prefix of length")) -o:value("auto", translate("Automatic")) -o:value("no", translate("disabled")) -o:value("48") -o:value("52") -o:value("56") -o:value("60") -o:value("64") -o.default = "auto" - - -o = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) -o.default = o.enabled - - -o = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) -o.default = o.enabled - - -o = section:taboption("advanced", Value, "ip6prefix", - translate("Custom delegated IPv6-prefix")) -o.dataype = "ip6addr" - - -o = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) -o:depends("peerdns", "") -o.datatype = "list(ip6addr)" -o.cast = "string" - - -o = section:taboption("advanced", Value, "clientid", - translate("Client ID to send when requesting DHCP")) - -luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) - -o = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -o.placeholder = "1500" -o.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua deleted file mode 100644 index eca9750adb..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua +++ /dev/null @@ -1,53 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local peeraddr, ip6addr -local tunlink, defaultroute, metric, ttl, mtu - - - - -peeraddr = section:taboption("general", Value, "peeraddr", - translate("DS-Lite AFTR address")) - -peeraddr.rmempty = false -peeraddr.datatype = "or(hostname,ip6addr)" - -ip6addr = section:taboption("general", Value, "ip6addr", - translate("Local IPv6 address"), - translate("Leave empty to use the current WAN address")) - -ip6addr.datatype = "ip6addr" - - -tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link")) -tunlink.template = "cbi/network_netlist" -tunlink.nocreate = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua deleted file mode 100644 index 2ed34faf71..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local mode = section:taboption("general", ListValue, "mode", translate("Category")) -mode:value("auto", translate("Automatic")) -mode:value("external", translate("External")) -mode:value("internal", translate("Internal")) -mode:value("leaf", translate("Leaf")) -mode:value("guest", translate("Guest")) -mode:value("adhoc", translate("Ad-Hoc")) -mode:value("hybrid", translate("Hybrid")) -mode.default = "auto" - - - -local plen = section:taboption("advanced", Value, "ip6assign", translate("IPv6 assignment length"), - translate("Assign a part of given length of every public IPv6-prefix to this interface")) -plen.datatype = "max(128)" -plen.default = "64" - -section:taboption("advanced", Value, "link_id", translate("IPv6 assignment hint"), - translate("Assign prefix parts using this hexadecimal subprefix ID for this interface.")) - -plen = section:taboption("advanced", Value, "ip4assign", translate("IPv4 assignment length")) -plen.datatype = "max(32)" -plen.default = "24" - -local o = section:taboption("advanced", Value, "dnsname", translate("DNS-Label / FQDN")) -o.default = map.name - -luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) - -o = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -o.placeholder = "1500" -o.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua deleted file mode 100644 index 37d4ec901a..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua +++ /dev/null @@ -1,88 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local peeraddr, ip6addr -local tunlink, defaultroute, metric, ttl, mtu - - -maptype = section:taboption("general", ListValue, "type", translate("Type")) -maptype:value("map-e", "MAP-E") -maptype:value("map-t", "MAP-T") -maptype:value("lw4o6", "LW4over6") - - -peeraddr = section:taboption("general", Value, "peeraddr", - translate("BR / DMR / AFTR")) - -peeraddr.rmempty = false -peeraddr.datatype = "ip6addr" - - -ipaddr = section:taboption("general", Value, "ipaddr", - translate("IPv4 prefix")) -ipaddr.datatype = "ip4addr" - - -ip4prefixlen = s:taboption("general", Value, "ip4prefixlen", - translate("IPv4 prefix length"), - translate("The length of the IPv4 prefix in bits, the remainder is used in the IPv6 addresses.")) - -ip4prefixlen.placeholder = "32" -ip4prefixlen.datatype = "range(0,32)" - -ip6addr = s:taboption("general", Value, "ip6prefix", - translate("IPv6 prefix"), - translate("The IPv6 prefix assigned to the provider, usually ends with ::")) - -ip6addr.rmempty = false -ip6addr.datatype = "ip6addr" - - -ip6prefixlen = s:taboption("general", Value, "ip6prefixlen", - translate("IPv6 prefix length"), - translate("The length of the IPv6 prefix in bits")) - -ip6prefixlen.placeholder = "16" -ip6prefixlen.datatype = "range(0,64)" - - -s:taboption("general", Value, "ealen", - translate("EA-bits length")).datatype = "range(0,48)" - -s:taboption("general", Value, "psidlen", - translate("PSID-bits length")).datatype = "range(0,16)" - -s:taboption("general", Value, "offset", - translate("PSID offset")).datatype = "range(0,16)" - -tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link")) -tunlink.template = "cbi/network_netlist" -tunlink.nocreate = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua deleted file mode 100644 index ad99073ad6..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua +++ /dev/null @@ -1,63 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network - -local _, p -for _, p in ipairs({"dslite", "map", "464xlat"}) do - - local proto = netmod:register_protocol(p) - - function proto.get_i18n(self) - if p == "dslite" then - return luci.i18n.translate("Dual-Stack Lite (RFC6333)") - elseif p == "map" then - return luci.i18n.translate("MAP / LW4over6") - elseif p == "464xlat" then - return luci.i18n.translate("464XLAT (CLAT)") - end - end - - function proto.ifname(self) - return p .. "-" .. self.sid - end - - function proto.opkg_package(self) - if p == "dslite" then - return "ds-lite" - elseif p == "map" then - return "map-t" - elseif p == "464xlat" then - return "464xlat" - end - end - - function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/" .. p .. ".sh") - end - - function proto.is_floating(self) - return true - end - - function proto.is_virtual(self) - return true - end - - function proto.get_interfaces(self) - return nil - end - - function proto.contains_interface(self, ifname) - return (netmod:ifnameof(ifc) == self:ifname()) - end - - if p == "dslite" then - netmod:register_pattern_virtual("^ds%-%w") - elseif p == "map" then - netmod:register_pattern_virtual("^map%-%w") - elseif p == "464xlat" then - netmod:register_pattern_virtual("^464%-%w") - end -end diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua deleted file mode 100644 index 9a4396c5be..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua +++ /dev/null @@ -1,50 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network - -local _, p -for _, p in ipairs({"6in4", "6to4", "6rd"}) do - - local proto = netmod:register_protocol(p) - - function proto.get_i18n(self) - if p == "6in4" then - return luci.i18n.translate("IPv6-in-IPv4 (RFC4213)") - elseif p == "6to4" then - return luci.i18n.translate("IPv6-over-IPv4 (6to4)") - elseif p == "6rd" then - return luci.i18n.translate("IPv6-over-IPv4 (6rd)") - end - end - - function proto.ifname(self) - return p .. "-" .. self.sid - end - - function proto.opkg_package(self) - return p - end - - function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/" .. p .. ".sh") - end - - function proto.is_floating(self) - return true - end - - function proto.is_virtual(self) - return true - end - - function proto.get_interfaces(self) - return nil - end - - function proto.contains_interface(self, ifname) - return (netmod:ifnameof(ifc) == self:ifname()) - end - - netmod:register_pattern_virtual("^%s%%-%%w" % p) -end diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua deleted file mode 100644 index e0d7fd3e21..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua +++ /dev/null @@ -1,49 +0,0 @@ --- Copyright 2015 Paul Oranje --- Licensed to the public under GPLv2 - -local netmod = luci.model.network -local interface = luci.model.network.interface - -local proto = netmod:register_protocol("aiccu") - -function proto.get_i18n(self) - return luci.i18n.translate("AICCU (SIXXS)") -end - -function proto.ifname(self) - return "aiccu-" .. self.sid -end - -function proto.get_interface(self) - return interface(self:ifname(), self) -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/aiccu.sh") -end - -function proto.opkg_package(self) - return "aiccu" -end - -function proto.is_floating(self) - return true -end - -function proto.is_virtual(self) - return true -end - -function proto.get_interfaces(self) - return nil -end - -function proto.contains_interface(self, ifname) - if self:is_floating() then - return (netmod:ifnameof(ifc) == self:ifname()) - else - return netmod.protocol.contains_interface(self, ifc) - end -end - -netmod:register_pattern_virtual("^aiccu%-%w") diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua deleted file mode 100644 index 0b45dad050..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Copyright 2013 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local proto = luci.model.network:register_protocol("dhcpv6") - -function proto.get_i18n(self) - return luci.i18n.translate("DHCPv6 client") -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/dhcpv6.sh") -end - -function proto.opkg_package(self) - return "odhcp6c" -end diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua deleted file mode 100644 index f525061be4..0000000000 --- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Copyright 2014 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local proto = luci.model.network:register_protocol("hnet") - -function proto.get_i18n(self) - return luci.i18n.translate("Automatic Homenet (HNCP)") -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/hnet.sh") -end - -function proto.opkg_package(self) - return "hnet-full" -end diff --git a/package/luci/protocols/luci-proto-ncm/Makefile b/package/luci/protocols/luci-proto-ncm/Makefile deleted file mode 100644 index 5fd9c9a266..0000000000 --- a/package/luci/protocols/luci-proto-ncm/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for NCM -LUCI_DEPENDS:=+comgt-ncm - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua b/package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua deleted file mode 100644 index 917c88c92c..0000000000 --- a/package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua +++ /dev/null @@ -1,157 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2015 Cezary Jackiewicz - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -]]-- - -local map, section, net = ... - -local device, apn, service, pincode, username, password, dialnumber -local ipv6, maxwait, defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand - - -device = section:taboption("general", Value, "device", translate("Modem device")) -device.rmempty = false - -local device_suggestions = nixio.fs.glob("/dev/cdc-wdm*") - or nixio.fs.glob("/dev/ttyUSB*") - -if device_suggestions then - local node - for node in device_suggestions do - device:value(node) - end -end - - -mode = section:taboption("general", Value, "mode", translate("Service Type")) -mode.default = "auto" -mode:value("preferlte", translate("Prefer LTE")) -mode:value("preferumts", translate("Prefer UMTS")) -mode:value("lte", "LTE") -mode:value("umts", "UMTS/GPRS") -mode:value("gsm", translate("GPRS only")) -mode:value("auto", translate("auto")) - - -apn = section:taboption("general", Value, "apn", translate("APN")) - - -pincode = section:taboption("general", Value, "pincode", translate("PIN")) - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password.password = true - -dialnumber = section:taboption("general", Value, "dialnumber", translate("Dial number")) -dialnumber.placeholder = "*99***1#" - -if luci.model.network:has_ipv6() then - - ipv6 = section:taboption("advanced", ListValue, "ipv6") - ipv6:value("auto", translate("Automatic")) - ipv6:value("0", translate("Disabled")) - ipv6:value("1", translate("Manual")) - ipv6.default = "auto" - -end - - -maxwait = section:taboption("advanced", Value, "maxwait", - translate("Modem init timeout"), - translate("Maximum amount of seconds to wait for the modem to become ready")) - -maxwait.placeholder = "20" -maxwait.datatype = "min(1)" - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure", - translate("LCP echo failure threshold"), - translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures")) - -function keepalive_failure.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^(%d+)[ ,]+%d+") or v) - end -end - -function keepalive_failure.write() end -function keepalive_failure.remove() end - -keepalive_failure.placeholder = "0" -keepalive_failure.datatype = "uinteger" - - -keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval", - translate("LCP echo interval"), - translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold")) - -function keepalive_interval.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^%d+[ ,]+(%d+)")) - end -end - -function keepalive_interval.write(self, section, value) - local f = tonumber(keepalive_failure:formvalue(section)) or 0 - local i = tonumber(value) or 5 - if i < 1 then i = 1 end - if f > 0 then - m:set(section, "keepalive", "%d %d" %{ f, i }) - else - m:del(section, "keepalive") - end -end - -keepalive_interval.remove = keepalive_interval.write -keepalive_interval.placeholder = "5" -keepalive_interval.datatype = "min(1)" - - -demand = section:taboption("advanced", Value, "demand", - translate("Inactivity timeout"), - translate("Close inactive connection after the given amount of seconds, use 0 to persist connection")) - -demand.placeholder = "0" -demand.datatype = "uinteger" diff --git a/package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua b/package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua deleted file mode 100644 index 4f835701ce..0000000000 --- a/package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua +++ /dev/null @@ -1,61 +0,0 @@ ---[[ -LuCI - Network model - NCM protocol extension - -Copyright 2015 Cezary Jackiewicz - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -]]-- - -local netmod = luci.model.network - -local proto = netmod:register_protocol("ncm") -local interface = luci.model.network.interface - -function proto.get_i18n(self) - return luci.i18n.translate("NCM") -end - -function proto.opkg_package(self) - return "comgt-ncm" -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/ncm.sh") -end - -function proto.is_floating(self) - return true -end - -function proto.is_virtual(self) - return true -end - -function proto.get_interface(self) - local _ifname=netmod.protocol.ifname(self) - if not _ifname then - _ifname = "wan" - end - return interface(_ifname, self) -end - -function proto.get_interfaces(self) - return nil -end - -function proto.contains_interface(self, ifc) - return (netmod:ifnameof(ifc) == self:ifname()) -end - -netmod:register_pattern_virtual("^ncm%-%w") diff --git a/package/luci/protocols/luci-proto-openconnect/Makefile b/package/luci/protocols/luci-proto-openconnect/Makefile deleted file mode 100644 index 31f52749b9..0000000000 --- a/package/luci/protocols/luci-proto-openconnect/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for OpenConnect VPN -LUCI_DEPENDS:=+openconnect - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua b/package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua deleted file mode 100644 index 5adfccae48..0000000000 --- a/package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua +++ /dev/null @@ -1,90 +0,0 @@ --- Copyright 2014 Nikos Mavrogiannopoulos --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local server, username, password, cert, ca -local oc_cert_file, oc_key_file, oc_ca_file - -local ifc = net:get_interface():name() - -oc_cert_file = "/etc/openconnect/user-cert-" .. ifc .. ".pem" -oc_key_file = "/etc/openconnect/user-key-" .. ifc .. ".pem" -oc_ca_file = "/etc/openconnect/ca-" .. ifc .. ".pem" - -server = section:taboption("general", Value, "server", translate("VPN Server")) -server.datatype = "host(0)" - -port = section:taboption("general", Value, "port", translate("VPN Server port")) -port.placeholder = "443" -port.datatype = "port" - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - -section:taboption("general", Value, "serverhash", translate("VPN Server's certificate SHA1 hash")) - -section:taboption("general", Value, "authgroup", translate("Auth Group")) - -username = section:taboption("general", Value, "username", translate("Username")) -password = section:taboption("general", Value, "password", translate("Password")) -password.password = true -password2 = section:taboption("general", Value, "password2", translate("Password2")) -password2.password = true - - -cert = section:taboption("advanced", Value, "usercert", translate("User certificate (PEM encoded)")) -cert.template = "cbi/tvalue" -cert.rows = 10 - -function cert.cfgvalue(self, section) - return nixio.fs.readfile(oc_cert_file) -end - -function cert.write(self, section, value) - value = value:gsub("\r\n?", "\n") - nixio.fs.writefile(oc_cert_file, value) -end - -cert = section:taboption("advanced", Value, "userkey", translate("User key (PEM encoded)")) -cert.template = "cbi/tvalue" -cert.rows = 10 - -function cert.cfgvalue(self, section) - return nixio.fs.readfile(oc_key_file) -end - -function cert.write(self, section, value) - value = value:gsub("\r\n?", "\n") - nixio.fs.writefile(oc_key_file, value) -end - - -ca = section:taboption("advanced", Value, "ca", translate("CA certificate; if empty it will be saved after the first connection.")) -ca.template = "cbi/tvalue" -ca.rows = 10 - -function ca.cfgvalue(self, section) - return nixio.fs.readfile(oc_ca_file) -end - -function ca.write(self, section, value) - value = value:gsub("\r\n?", "\n") - nixio.fs.writefile(oc_ca_file, value) -end - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1406" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua b/package/luci/protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua deleted file mode 100644 index 0944c7fe6a..0000000000 --- a/package/luci/protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Copyright 2012 David Woodhouse --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network -local interface = luci.model.network.interface -local proto = netmod:register_protocol("openconnect") - -function proto.get_i18n(self) - return luci.i18n.translate("OpenConnect (CISCO AnyConnect)") -end - -function proto.ifname(self) - return "vpn-" .. self.sid -end - -function proto.get_interface(self) - return interface(self:ifname(), self) -end - -function proto.opkg_package(self) - return "openconnect" -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/openconnect.sh") -end - -function proto.is_floating(self) - return true -end - -function proto.is_virtual(self) - return true -end - -function proto.get_interfaces(self) - return nil -end - -function proto.contains_interface(self, ifc) - return (netmod:ifnameof(ifc) == self:ifname()) - -end - -netmod:register_pattern_virtual("^vpn%-%w") diff --git a/package/luci/protocols/luci-proto-ppp/Makefile b/package/luci/protocols/luci-proto-ppp/Makefile deleted file mode 100644 index dd1859ef54..0000000000 --- a/package/luci/protocols/luci-proto-ppp/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for PPP/PPPoE/PPPoA/PPtP -LUCI_DEPENDS:= - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua deleted file mode 100644 index 506170c2de..0000000000 --- a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua +++ /dev/null @@ -1,61 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local server, username, password -local ipv6, defaultroute, metric, peerdns, dns, mtu - - -server = section:taboption("general", Value, "server", translate("L2TP Server")) -server.datatype = "or(host(1), hostport(1))" - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password.password = true - -if luci.model.network:has_ipv6() then - - ipv6 = section:taboption("advanced", ListValue, "ipv6") - ipv6:value("auto", translate("Automatic")) - ipv6:value("0", translate("Disabled")) - ipv6:value("1", translate("Manual")) - ipv6.default = "auto" - -end - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua deleted file mode 100644 index b14db5966d..0000000000 --- a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua +++ /dev/null @@ -1,127 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local device, username, password -local ipv6, defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand, mtu - - -device = section:taboption("general", Value, "device", translate("Modem device")) -device.rmempty = false - -local device_suggestions = nixio.fs.glob("/dev/tty*S*") - or nixio.fs.glob("/dev/tts/*") - -if device_suggestions then - local node - for node in device_suggestions do - device:value(node) - end -end - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password.password = true - - -if luci.model.network:has_ipv6() then - - ipv6 = section:taboption("advanced", ListValue, "ipv6") - ipv6:value("auto", translate("Automatic")) - ipv6:value("0", translate("Disabled")) - ipv6:value("1", translate("Manual")) - ipv6.default = "auto" - -end - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure", - translate("LCP echo failure threshold"), - translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures")) - -function keepalive_failure.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^(%d+)[ ,]+%d+") or v) - end -end - -keepalive_failure.placeholder = "0" -keepalive_failure.datatype = "uinteger" - - -keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval", - translate("LCP echo interval"), - translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold")) - -function keepalive_interval.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^%d+[ ,]+(%d+)")) - end -end - -function keepalive_interval.write(self, section, value) - local f = tonumber(keepalive_failure:formvalue(section)) or 0 - local i = tonumber(value) or 5 - if i < 1 then i = 1 end - if f > 0 then - m:set(section, "keepalive", "%d %d" %{ f, i }) - else - m:del(section, "keepalive") - end -end - -keepalive_interval.remove = keepalive_interval.write -keepalive_failure.write = keepalive_interval.write -keepalive_failure.remove = keepalive_interval.write -keepalive_interval.placeholder = "5" -keepalive_interval.datatype = "min(1)" - - -demand = section:taboption("advanced", Value, "demand", - translate("Inactivity timeout"), - translate("Close inactive connection after the given amount of seconds, use 0 to persist connection")) - -demand.placeholder = "0" -demand.datatype = "uinteger" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua deleted file mode 100644 index 8f463e5d76..0000000000 --- a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua +++ /dev/null @@ -1,133 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local encaps, atmdev, vci, vpi, username, password -local ipv6, defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand, mtu - - -encaps = section:taboption("general", ListValue, "encaps", translate("PPPoA Encapsulation")) -encaps:value("vc", "VC-Mux") -encaps:value("llc", "LLC") - - -atmdev = section:taboption("general", Value, "atmdev", translate("ATM device number")) -atmdev.default = "0" -atmdev.datatype = "uinteger" - - -vci = section:taboption("general", Value, "vci", translate("ATM Virtual Channel Identifier (VCI)")) -vci.default = "35" -vci.datatype = "uinteger" - - -vpi = section:taboption("general", Value, "vpi", translate("ATM Virtual Path Identifier (VPI)")) -vpi.default = "8" -vpi.datatype = "uinteger" - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password.password = true - - -if luci.model.network:has_ipv6() then - - ipv6 = section:taboption("advanced", ListValue, "ipv6") - ipv6:value("auto", translate("Automatic")) - ipv6:value("0", translate("Disabled")) - ipv6:value("1", translate("Manual")) - ipv6.default = "auto" - -end - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure", - translate("LCP echo failure threshold"), - translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures")) - -function keepalive_failure.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^(%d+)[ ,]+%d+") or v) - end -end - -keepalive_failure.placeholder = "0" -keepalive_failure.datatype = "uinteger" - - -keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval", - translate("LCP echo interval"), - translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold")) - -function keepalive_interval.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^%d+[ ,]+(%d+)")) - end -end - -function keepalive_interval.write(self, section, value) - local f = tonumber(keepalive_failure:formvalue(section)) or 0 - local i = tonumber(value) or 5 - if i < 1 then i = 1 end - if f > 0 then - m:set(section, "keepalive", "%d %d" %{ f, i }) - else - m:del(section, "keepalive") - end -end - -keepalive_interval.remove = keepalive_interval.write -keepalive_failure.write = keepalive_interval.write -keepalive_failure.remove = keepalive_interval.write -keepalive_interval.placeholder = "5" -keepalive_interval.datatype = "min(1)" - - -demand = section:taboption("advanced", Value, "demand", - translate("Inactivity timeout"), - translate("Close inactive connection after the given amount of seconds, use 0 to persist connection")) - -demand.placeholder = "0" -demand.datatype = "uinteger" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua deleted file mode 100644 index 5a05cd2065..0000000000 --- a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua +++ /dev/null @@ -1,127 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local username, password, ac, service -local ipv6, defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand, mtu - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password.password = true - - -ac = section:taboption("general", Value, "ac", - translate("Access Concentrator"), - translate("Leave empty to autodetect")) - -ac.placeholder = translate("auto") - - -service = section:taboption("general", Value, "service", - translate("Service Name"), - translate("Leave empty to autodetect")) - -service.placeholder = translate("auto") - - -if luci.model.network:has_ipv6() then - - ipv6 = section:taboption("advanced", ListValue, "ipv6") - ipv6:value("auto", translate("Automatic")) - ipv6:value("0", translate("Disabled")) - ipv6:value("1", translate("Manual")) - ipv6.default = "auto" - -end - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure", - translate("LCP echo failure threshold"), - translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures")) - -function keepalive_failure.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^(%d+)[ ,]+%d+") or v) - end -end - -keepalive_failure.placeholder = "0" -keepalive_failure.datatype = "uinteger" - - -keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval", - translate("LCP echo interval"), - translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold")) - -function keepalive_interval.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^%d+[ ,]+(%d+)")) - end -end - -function keepalive_interval.write(self, section, value) - local f = tonumber(keepalive_failure:formvalue(section)) or 0 - local i = tonumber(value) or 5 - if i < 1 then i = 1 end - if f > 0 then - m:set(section, "keepalive", "%d %d" %{ f, i }) - else - m:del(section, "keepalive") - end -end - -keepalive_interval.remove = keepalive_interval.write -keepalive_failure.write = keepalive_interval.write -keepalive_failure.remove = keepalive_interval.write -keepalive_interval.placeholder = "5" -keepalive_interval.datatype = "min(1)" - - -demand = section:taboption("advanced", Value, "demand", - translate("Inactivity timeout"), - translate("Close inactive connection after the given amount of seconds, use 0 to persist connection")) - -demand.placeholder = "0" -demand.datatype = "uinteger" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua deleted file mode 100644 index eca7bdd4d3..0000000000 --- a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppossh.lua +++ /dev/null @@ -1,122 +0,0 @@ --- Copyright (C) 2015 Yousong Zhou --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local sshuser, server, port, ssh_options, identity, ipaddr, peeraddr - -sshuser = section:taboption("general", Value, "sshuser", translate("SSH username")) - -server = section:taboption("general", Value, "server", translate("SSH server address")) -server.datatype = "host(0)" - -port = section:taboption("general", Value, "port", translate("SSH server port")) -port.datatype = "port" -port.optional = true -port.default = 22 - -ssh_options = section:taboption("general", Value, "ssh_options", translate("Extra SSH command options")) -ssh_options.optional = true - -identity = section:taboption("general", DynamicList, "identity", translate("List of SSH key files for auth")) -identity.optional = true -identity.datatype = "file" - -ipaddr = section:taboption("general", Value, "ipaddr", translate("Local IP address to assign")) -ipaddr.datatype = "ipaddr" - -peeraddr = section:taboption("general", Value, "peeraddr", translate("Peer IP address to assign")) -peeraddr.datatype = "ipaddr" - - -local ipv6, defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand - -if luci.model.network:has_ipv6() then - ipv6 = section:taboption("advanced", Flag, "ipv6", - translate("Enable IPv6 negotiation on the PPP link")) - ipv6.default = ipv6.disabled -end - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure", - translate("LCP echo failure threshold"), - translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures")) - -function keepalive_failure.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^(%d+)[ ,]+%d+") or v) - end -end - -function keepalive_failure.write() end -function keepalive_failure.remove() end - -keepalive_failure.placeholder = "0" -keepalive_failure.datatype = "uinteger" - - -keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval", - translate("LCP echo interval"), - translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold")) - -function keepalive_interval.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^%d+[ ,]+(%d+)")) - end -end - -function keepalive_interval.write(self, section, value) - local f = tonumber(keepalive_failure:formvalue(section)) or 0 - local i = tonumber(value) or 5 - if i < 1 then i = 1 end - if f > 0 then - m:set(section, "keepalive", "%d %d" %{ f, i }) - else - m:del(section, "keepalive") - end -end - -keepalive_interval.remove = keepalive_interval.write -keepalive_interval.placeholder = "5" -keepalive_interval.datatype = "min(1)" - - -demand = section:taboption("advanced", Value, "demand", - translate("Inactivity timeout"), - translate("Close inactive connection after the given amount of seconds, use 0 to persist connection")) - -demand.placeholder = "0" -demand.datatype = "uinteger" diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua deleted file mode 100644 index 462d7019f0..0000000000 --- a/package/luci/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pptp.lua +++ /dev/null @@ -1,106 +0,0 @@ --- Copyright 2011-2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local server, username, password -local defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand, mtu - - -server = section:taboption("general", Value, "server", translate("VPN Server")) -server.datatype = "host(0)" - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password.password = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure", - translate("LCP echo failure threshold"), - translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures")) - -function keepalive_failure.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^(%d+)[ ,]+%d+") or v) - end -end - -keepalive_failure.placeholder = "0" -keepalive_failure.datatype = "uinteger" - - -keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval", - translate("LCP echo interval"), - translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold")) - -function keepalive_interval.cfgvalue(self, section) - local v = m:get(section, "keepalive") - if v and #v > 0 then - return tonumber(v:match("^%d+[ ,]+(%d+)")) - end -end - -function keepalive_interval.write(self, section, value) - local f = tonumber(keepalive_failure:formvalue(section)) or 0 - local i = tonumber(value) or 5 - if i < 1 then i = 1 end - if f > 0 then - m:set(section, "keepalive", "%d %d" %{ f, i }) - else - m:del(section, "keepalive") - end -end - -keepalive_interval.remove = keepalive_interval.write -keepalive_failure.write = keepalive_interval.write -keepalive_failure.remove = keepalive_interval.write -keepalive_interval.placeholder = "5" -keepalive_interval.datatype = "min(1)" - - -demand = section:taboption("advanced", Value, "demand", - translate("Inactivity timeout"), - translate("Close inactive connection after the given amount of seconds, use 0 to persist connection")) - -demand.placeholder = "0" -demand.datatype = "uinteger" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" diff --git a/package/luci/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua b/package/luci/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua deleted file mode 100644 index 1bcbd4808a..0000000000 --- a/package/luci/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua +++ /dev/null @@ -1,94 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network - -local _, p -for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "3g", "l2tp", "pppossh"}) do - - local proto = netmod:register_protocol(p) - - function proto.get_i18n(self) - if p == "ppp" then - return luci.i18n.translate("PPP") - elseif p == "pptp" then - return luci.i18n.translate("PPtP") - elseif p == "3g" then - return luci.i18n.translate("UMTS/GPRS/EV-DO") - elseif p == "pppoe" then - return luci.i18n.translate("PPPoE") - elseif p == "pppoa" then - return luci.i18n.translate("PPPoATM") - elseif p == "l2tp" then - return luci.i18n.translate("L2TP") - elseif p == "pppossh" then - return luci.i18n.translate("PPPoSSH") - end - end - - function proto.ifname(self) - return p .. "-" .. self.sid - end - - function proto.opkg_package(self) - if p == "ppp" then - return p - elseif p == "3g" then - return "comgt" - elseif p == "pptp" then - return "ppp-mod-pptp" - elseif p == "pppoe" then - return "ppp-mod-pppoe" - elseif p == "pppoa" then - return "ppp-mod-pppoa" - elseif p == "l2tp" then - return "xl2tpd" - elseif p == "pppossh" then - return "pppossh" - end - end - - function proto.is_installed(self) - if p == "pppoa" then - return (nixio.fs.glob("/usr/lib/pppd/*/pppoatm.so")() ~= nil) - elseif p == "pppoe" then - return (nixio.fs.glob("/usr/lib/pppd/*/rp-pppoe.so")() ~= nil) - elseif p == "pptp" then - return (nixio.fs.glob("/usr/lib/pppd/*/pptp.so")() ~= nil) - elseif p == "3g" then - return nixio.fs.access("/lib/netifd/proto/3g.sh") - elseif p == "l2tp" then - return nixio.fs.access("/lib/netifd/proto/l2tp.sh") - elseif p == "pppossh" then - return nixio.fs.access("/lib/netifd/proto/pppossh.sh") - else - return nixio.fs.access("/lib/netifd/proto/ppp.sh") - end - end - - function proto.is_floating(self) - return (p ~= "pppoe") - end - - function proto.is_virtual(self) - return true - end - - function proto.get_interfaces(self) - if self:is_floating() then - return nil - else - return netmod.protocol.get_interfaces(self) - end - end - - function proto.contains_interface(self, ifc) - if self:is_floating() then - return (netmod:ifnameof(ifc) == self:ifname()) - else - return netmod.protocol.contains_interface(self, ifc) - end - end - - netmod:register_pattern_virtual("^%s%%-%%w" % p) -end diff --git a/package/luci/protocols/luci-proto-qmi/Makefile b/package/luci/protocols/luci-proto-qmi/Makefile deleted file mode 100644 index 8b2b5e37eb..0000000000 --- a/package/luci/protocols/luci-proto-qmi/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for QMI -LUCI_DEPENDS:=+uqmi - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua b/package/luci/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua deleted file mode 100644 index e11201d213..0000000000 --- a/package/luci/protocols/luci-proto-qmi/luasrc/model/cbi/admin_network/proto_qmi.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Copyright 2016 David Thornley --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local device, apn, pincode, username, password -local auth, ipv6 - - -device = section:taboption("general", Value, "device", translate("Modem device")) -device.rmempty = false - -local device_suggestions = nixio.fs.glob("/dev/cdc-wdm*") - -if device_suggestions then - local node - for node in device_suggestions do - device:value(node) - end -end - - -apn = section:taboption("general", Value, "apn", translate("APN")) - - -pincode = section:taboption("general", Value, "pincode", translate("PIN")) - - -username = section:taboption("general", Value, "username", translate("PAP/CHAP username")) - - -password = section:taboption("general", Value, "password", translate("PAP/CHAP password")) -password.password = true - -auth = section:taboption("general", Value, "auth", translate("Authentication Type")) -auth:value("", translate("-- Please choose --")) -auth:value("both", "PAP/CHAP (both)") -auth:value("pap", "PAP") -auth:value("chap", "CHAP") -auth:value("none", "NONE") - -if luci.model.network:has_ipv6() then - ipv6 = section:taboption("advanced", Flag, "ipv6", translate("Enable IPv6 negotiation")) - ipv6.default = ipv6.disabled -end diff --git a/package/luci/protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua b/package/luci/protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua deleted file mode 100644 index 8a28ad4716..0000000000 --- a/package/luci/protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua +++ /dev/null @@ -1,51 +0,0 @@ --- Copyright 2016 David Thornley --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network -local interface = luci.model.network.interface -local proto = netmod:register_protocol("qmi") - -function proto.get_i18n(self) - return luci.i18n.translate("QMI Cellular") -end - -function proto.ifname(self) - local base = netmod._M.protocol - local ifname = base.ifname(self) -- call base class "protocol.ifname(self)" - - -- Note: ifname might be nil if the adapter could not be determined through ubus (default name to qmi-wan in this case) - if ifname == nil then - ifname = "qmi-" .. self.sid - end - return ifname -end - -function proto.get_interface(self) - return interface(self:ifname(), self) -end - -function proto.opkg_package(self) - return "uqmi" -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/qmi.sh") -end - -function proto.is_floating(self) - return true -end - -function proto.is_virtual(self) - return true -end - -function proto.get_interfaces(self) - return nil -end - -function proto.contains_interface(self, ifc) - return (netmod:ifnameof(ifc) == self:ifname()) -end - -netmod:register_pattern_virtual("^qmi%-%w") diff --git a/package/luci/protocols/luci-proto-relay/Makefile b/package/luci/protocols/luci-proto-relay/Makefile deleted file mode 100644 index d9c04f76a8..0000000000 --- a/package/luci/protocols/luci-proto-relay/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for relayd pseudo bridges -LUCI_DEPENDS:=+relayd - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua b/package/luci/protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua deleted file mode 100644 index 3381d85e47..0000000000 --- a/package/luci/protocols/luci-proto-relay/luasrc/model/cbi/admin_network/proto_relay.lua +++ /dev/null @@ -1,68 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local ipaddr, network -local forward_bcast, forward_dhcp, gateway, expiry, retry, table - - -ipaddr = section:taboption("general", Value, "ipaddr", - translate("Local IPv4 address"), - translate("Address to access local relay bridge")) - -ipaddr.datatype = "ip4addr" - - -network = s:taboption("general", DynamicList, "network", translate("Relay between networks")) -network.widget = "checkbox" -network.exclude = arg[1] -network.template = "cbi/network_netlist" -network.nocreate = true -network.nobridges = true -network.novirtual = true -network:depends("proto", "relay") - - -forward_bcast = section:taboption("advanced", Flag, "forward_bcast", - translate("Forward broadcast traffic")) - -forward_bcast.default = forward_bcast.enabled - - -forward_dhcp = section:taboption("advanced", Flag, "forward_dhcp", - translate("Forward DHCP traffic")) - -forward_dhcp.default = forward_dhcp.enabled - - -gateway = section:taboption("advanced", Value, "gateway", - translate("Use DHCP gateway"), - translate("Override the gateway in DHCP responses")) - -gateway.datatype = "ip4addr" -gateway:depends("forward_dhcp", forward_dhcp.enabled) - - -expiry = section:taboption("advanced", Value, "expiry", - translate("Host expiry timeout"), - translate("Specifies the maximum amount of seconds after which hosts are presumed to be dead")) - -expiry.placeholder = "30" -expiry.datatype = "min(1)" - - -retry = section:taboption("advanced", Value, "retry", - translate("ARP retry threshold"), - translate("Specifies the maximum amount of failed ARP requests until hosts are presumed to be dead")) - -retry.placeholder = "5" -retry.datatype = "min(1)" - - -table = section:taboption("advanced", Value, "table", - translate("Use routing table"), - translate("Override the table used for internal routes")) - -table.placeholder = "16800" -table.datatype = "range(0,65535)" diff --git a/package/luci/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua b/package/luci/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua deleted file mode 100644 index a2dabf9afe..0000000000 --- a/package/luci/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua +++ /dev/null @@ -1,149 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network -local device = luci.util.class(netmod.interface) - -netmod:register_pattern_virtual("^relay%-%w") - -local proto = netmod:register_protocol("relay") - -function proto.get_i18n(self) - return luci.i18n.translate("Relay bridge") -end - -function proto.ifname(self) - return "relay-" .. self.sid -end - -function proto.opkg_package(self) - return "relayd" -end - -function proto.is_installed(self) - return nixio.fs.access("/etc/init.d/relayd") -end - -function proto.is_floating(self) - return true -end - -function proto.is_virtual(self) - return true -end - -function proto.get_interface(self) - return device(self.sid, self) -end - -function proto.get_interfaces(self) - if not self.ifaces then - local ifs = { } - local _, net, dev - - for net in luci.util.imatch(self:_get("network")) do - net = netmod:get_network(net) - if net then - dev = net:get_interface() - if dev then - ifs[dev:name()] = dev - end - end - end - - for dev in luci.util.imatch(self:_get("ifname")) do - dev = netmod:get_interface(dev) - if dev then - ifs[dev:name()] = dev - end - end - - self.ifaces = { } - - for _, dev in luci.util.kspairs(ifs) do - self.ifaces[#self.ifaces+1] = dev - end - end - - return self.ifaces -end - -function proto.uptime(self) - local net - local upt = 0 - for net in luci.util.imatch(self:_get("network")) do - net = netmod:get_network(net) - if net then - upt = math.max(upt, net:uptime()) - end - end - return upt -end - - -function device.__init__(self, ifname, network) - self.ifname = ifname - self.network = network -end - -function device.type(self) - return "tunnel" -end - -function device.is_up(self) - if self.network then - local _, dev - for _, dev in ipairs(self.network:get_interfaces()) do - if not dev:is_up() then - return false - end - end - return true - end - return false -end - -function device._stat(self, what) - local v = 0 - if self.network then - local _, dev - for _, dev in ipairs(self.network:get_interfaces()) do - v = v + dev[what](dev) - end - end - return v -end - -function device.rx_bytes(self) return self:_stat("rx_bytes") end -function device.tx_bytes(self) return self:_stat("tx_bytes") end -function device.rx_packets(self) return self:_stat("rx_packets") end -function device.tx_packets(self) return self:_stat("tx_packets") end - -function device.mac(self) - if self.network then - local _, dev - for _, dev in ipairs(self.network:get_interfaces()) do - return dev:mac() - end - end -end - -function device.ipaddrs(self) - local addrs = { } - if self.network then - addrs[1] = luci.ip.IPv4(self.network:_get("ipaddr")) - end - return addrs -end - -function device.ip6addrs(self) - return { } -end - -function device.shortname(self) - return "%s %q" % { luci.i18n.translate("Relay"), self.ifname } -end - -function device.get_type_i18n(self) - return luci.i18n.translate("Relay Bridge") -end diff --git a/package/luci/protocols/luci-proto-vpnc/Makefile b/package/luci/protocols/luci-proto-vpnc/Makefile deleted file mode 100644 index 0800e279fe..0000000000 --- a/package/luci/protocols/luci-proto-vpnc/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for VPNC VPN -LUCI_DEPENDS:=+vpnc -LUCI_PKGARCH:=all - -PKG_MAINTAINER:=Daniel Dickinson -PKG_LICENSE:=Apache-2.0 - -LUA_TARGET:=source - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua b/package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua deleted file mode 100644 index d8217ce8d3..0000000000 --- a/package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua +++ /dev/null @@ -1,79 +0,0 @@ --- Copyright 2015 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local server, username, password, hexpassword -local authgroup, interface, passgroup, hexpassgroup -local domain, vendor, natt_mode, dh_group -local pfs, enable_single_des, enable_no_enc -local mtu, local_addr, local_port, dpd_idle -local auth_mode, target_network - -local ifc = net:get_interface():name() - -server = section:taboption("general", Value, "server", translate("VPN Server")) -server.datatype = "host(0)" - -port = section:taboption("general", Value, "local_addr", translate("VPN Local address")) -port.placeholder = "0.0.0.0" -port.datatype = "ipaddr" - -port = section:taboption("general", Value, "local_port", translate("VPN Local port")) -port.placeholder = "500" -port.datatype = "port" - -ifname = section:taboption("general", Value, "interface", translate("Output Interface")) -ifname.template = "cbi/network_netlist" - -mtu = section:taboption("general", Value, "mtu", translate("MTU")) -mtu.datatype = "uinteger" - -username = section:taboption("general", Value, "username", translate("Username")) -password = section:taboption("general", Value, "password", translate("Password")) -password.password = true -hexpassword = section:taboption("general", Value, "hexpassword", translate("Obfuscated Password")) -hexpassword.password = true -authroup = section:taboption("general", Value, "authgroup", translate("Auth Group")) -passgroup = section:taboption("general", Value, "passgroup", translate("Group Password")) -passgroup.password = true -hexpassgroup = section:taboption("general", Value, "hexpassgroup", translate("Obfuscated Group Password")) -hexpassword.password= true - -domain = section:taboption("general", Value, "domain", translate("NT Domain")) -vendor = section:taboption("general", Value, "vendor", translate("Vendor")) -dh_group = section:taboption("general", ListValue, "dh_group", translate("IKE DH Group")) -dh_group:value("dh2") -dh_group:value("dh1") -dh_group:value("dh5") - -pfs = section:taboption("general", ListValue, "pfs", translate("Perfect Forward Secrecy")) -pfs:value("server") -pfs:value("nopfs") -pfs:value("dh1") -pfs:value("dh2") -pfs:value("dh5") - -natt_mode = section:taboption("general", ListValue, "natt_mode", translate("NAT-T Mode")) -natt_mode:value("natt", translate("RFC3947 NAT-T mode")) -natt_mode:value("none", translate("No NAT-T")) -natt_mode:value("force-natt", translate("Force use of NAT-T")) -natt_mode:value("cisco-udp", translate("Cisco UDP encapsulation")) - -enable_no_enc = section:taboption("general", Flag, "enable_no_enc", - translate("Disable Encryption"), - translate("If checked, encryption is disabled")) -enable_no_enc.default = enable_no_enc.disabled - -enable_single_des = section:taboption("general", Flag, "enable_single_des", - translate("Enable Single DES"), - translate("If checked, 1DES is enabled")) -enable_no_enc.default = enable_single_des.disabled - -dpd_idle = section:taboption("general", Value, "dpd_idle", translate("DPD Idle Timeout")) -dpd_idle.datatype = "uinteger" -dpd_idle.placeholder = "600" - -ifname = section:taboption("general", Value, "target_network", translate("Target network")) -port.placeholder = "0.0.0.0/0" -port.datatype = "network" diff --git a/package/luci/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua b/package/luci/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua deleted file mode 100644 index 6c3136e384..0000000000 --- a/package/luci/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua +++ /dev/null @@ -1,46 +0,0 @@ --- Copyright 2015 Daniel Dickinson --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network -local interface = luci.model.network.interface -local proto = netmod:register_protocol("vpnc") - -function proto.get_i18n(self) - return luci.i18n.translate("VPNC (CISCO 3000 (and others) VPN)") -end - -function proto.ifname(self) - return "vpn-" .. self.sid -end - -function proto.get_interface(self) - return interface(self:ifname(), self) -end - -function proto.opkg_package(self) - return "vpnc" -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/vpnc.sh") -end - -function proto.is_floating(self) - return true -end - -function proto.is_virtual(self) - return true -end - -function proto.get_interfaces(self) - return nil -end - -function proto.contains_interface(self, ifc) - return (netmod:ifnameof(ifc) == self:ifname()) - -end - -netmod:register_pattern_virtual("^vpn%-%w") - diff --git a/package/luci/protocols/luci-proto-wireguard/Makefile b/package/luci/protocols/luci-proto-wireguard/Makefile deleted file mode 100644 index 0dc70cf31e..0000000000 --- a/package/luci/protocols/luci-proto-wireguard/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2016 Dan Luedtke -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Support for WireGuard VPN -LUCI_DEPENDS:=+kmod-wireguard +wireguard-tools -LUCI_PKGARCH:=all - -PKG_MAINTAINER:=Dan Luedtke - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua b/package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua deleted file mode 100644 index fa0db3412e..0000000000 --- a/package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua +++ /dev/null @@ -1,169 +0,0 @@ --- Copyright 2016-2017 Dan Luedtke --- Licensed to the public under the Apache License 2.0. - - -local map, section, net = ... -local ifname = net:get_interface():name() -local private_key, listen_port -local metric, mtu, preshared_key -local peers, public_key, allowed_ips, endpoint, persistent_keepalive - - --- general --------------------------------------------------------------------- - -private_key = section:taboption( - "general", - Value, - "private_key", - translate("Private Key"), - translate("Required. Base64-encoded private key for this interface.") -) -private_key.password = true -private_key.datatype = "and(base64,rangelength(44,44))" -private_key.optional = false - - -listen_port = section:taboption( - "general", - Value, - "listen_port", - translate("Listen Port"), - translate("Optional. UDP port used for outgoing and incoming packets.") -) -listen_port.datatype = "port" -listen_port.placeholder = "51820" -listen_port.optional = true - -addresses = section:taboption( - "general", - DynamicList, - "addresses", - translate("IP Addresses"), - translate("Recommended. IP addresses of the WireGuard interface.") -) -addresses.datatype = "ipaddr" -addresses.optional = true - - --- advanced -------------------------------------------------------------------- - -metric = section:taboption( - "advanced", - Value, - "metric", - translate("Metric"), - translate("Optional") -) -metric.datatype = "uinteger" -metric.placeholder = "0" -metric.optional = true - - -mtu = section:taboption( - "advanced", - Value, - "mtu", - translate("MTU"), - translate("Optional. Maximum Transmission Unit of tunnel interface.") -) -mtu.datatype = "range(1280,1420)" -mtu.placeholder = "1420" -mtu.optional = true - -fwmark = section:taboption( - "advanced", - Value, - "fwmark", - translate("Firewall Mark"), - translate("Optional. 32-bit mark for outgoing encrypted packets. " .. - "Enter value in hex, starting with 0x.") -) -fwmark.datatype = "hex(4)" -fwmark.optional = true - - --- peers ----------------------------------------------------------------------- - -peers = map:section( - TypedSection, - "wireguard_" .. ifname, - translate("Peers"), - translate("Further information about WireGuard interfaces and peers " .. - "at wireguard.io.") -) -peers.template = "cbi/tsection" -peers.anonymous = true -peers.addremove = true - - -public_key = peers:option( - Value, - "public_key", - translate("Public Key"), - translate("Required. Base64-encoded public key of peer.") -) -public_key.datatype = "and(base64,rangelength(44,44))" -public_key.optional = false - - -preshared_key = peers:option( - Value, - "preshared_key", - translate("Preshared Key"), - translate("Optional. Base64-encoded preshared key. " .. - "Adds in an additional layer of symmetric-key " .. - "cryptography for post-quantum resistance.") -) -preshared_key.password = true -preshared_key.datatype = "and(base64,rangelength(44,44))" -preshared_key.optional = true - - -allowed_ips = peers:option( - DynamicList, - "allowed_ips", - translate("Allowed IPs"), - translate("Required. IP addresses and prefixes that this peer is allowed " .. - "to use inside the tunnel. Usually the peer's tunnel IP " .. - "addresses and the networks the peer routes through the tunnel.") -) -allowed_ips.datatype = "ipaddr" -allowed_ips.optional = false - - -route_allowed_ips = peers:option( - Flag, - "route_allowed_ips", - translate("Route Allowed IPs"), - translate("Optional. Create routes for Allowed IPs for this peer.") -) - - -endpoint_host = peers:option( - Value, - "endpoint_host", - translate("Endpoint Host"), - translate("Optional. Host of peer. Names are resolved " .. - "prior to bringing up the interface.")) -endpoint_host.placeholder = "vpn.example.com" -endpoint_host.datatype = "host" - - -endpoint_port = peers:option( - Value, - "endpoint_port", - translate("Endpoint Port"), - translate("Optional. Port of peer.")) -endpoint_port.placeholder = "51820" -endpoint_port.datatype = "port" - - -persistent_keepalive = peers:option( - Value, - "persistent_keepalive", - translate("Persistent Keep Alive"), - translate("Optional. Seconds between keep alive messages. " .. - "Default is 0 (disabled). Recommended value if " .. - "this device is behind a NAT is 25.")) -persistent_keepalive.datatype = "range(0,65535)" -persistent_keepalive.placeholder = "0" diff --git a/package/luci/protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua b/package/luci/protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua deleted file mode 100644 index d6937618a7..0000000000 --- a/package/luci/protocols/luci-proto-wireguard/luasrc/model/network/proto_wireguard.lua +++ /dev/null @@ -1,42 +0,0 @@ --- Copyright 2016 Dan Luedtke --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network -local interface = luci.model.network.interface -local proto = netmod:register_protocol("wireguard") - -function proto.get_i18n(self) - return luci.i18n.translate("WireGuard VPN") -end - -function proto.ifname(self) - return self.sid -end - -function proto.get_interface(self) - return interface(self:ifname(), self) -end - -function proto.opkg_package(self) - return "wireguard-tools" -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/wireguard.sh") -end - -function proto.is_floating(self) - return true -end - -function proto.is_virtual(self) - return true -end - -function proto.get_interfaces(self) - return nil -end - -function proto.contains_interface(self, ifc) - return (netmod:ifnameof(ifc) == self:ifname()) -end diff --git a/package/luci/themes/luci-theme-bootstrap/Makefile b/package/luci/themes/luci-theme-bootstrap/Makefile deleted file mode 100644 index 1bb205ee05..0000000000 --- a/package/luci/themes/luci-theme-bootstrap/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Bootstrap Theme (default) -LUCI_DEPENDS:= - -PKG_LICENSE:=Apache-2.0 - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css b/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css deleted file mode 100644 index 8d0c434a98..0000000000 --- a/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css +++ /dev/null @@ -1,1982 +0,0 @@ -/*! - * LuCI Bootstrap Theme - * Copyright 2012 Nut & Bolt - * By David Menting - * Based on Bootstrap v1.4.0 - * - * Copyright 2011 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */ -/* Reset.less - * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc). - * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */ -html { - margin: 0; - padding: 0; -} - -body { - margin: 0; - padding: 5px; -} - -h1, h2, h3, h4, h5, h6, p, pre, a, abbr, acronym, code, del, em, img, q, s, -small, strike, strong, sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset, -form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td { - margin: 0; - padding: 0; - border: 0; - font-weight: normal; - font-style: normal; - font-size: 100%; - line-height: 1; - font-family: inherit; -} - -abbr[title], acronym[title] { - border-bottom: 1px dotted; - cursor: help; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} - -ol, ul { - list-style: none; -} - -q:before, -q:after, -blockquote:before, -blockquote:after { - content: ""; -} - -html { - overflow-y: scroll; - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -a:focus { - outline: thin dotted; -} - -a:hover, a:active { - outline: 0; -} - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section { - display: block; -} - -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -img { - border: 0; - -ms-interpolation-mode: bicubic; -} - -button, -input, -select, -option, -textarea { - font-size: 100%; - margin: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - vertical-align: baseline; - *vertical-align: middle; -} - -button, input { - line-height: normal; - *overflow: visible; -} - -button::-moz-focus-inner, input::-moz-focus-inner { - border: 0; - padding: 0; -} - -button, -input[type="button"], -input[type="reset"], -input[type="submit"] { - cursor: pointer; - -webkit-appearance: button; -} - -button[disabled], -input[type="button"][disabled], -input[type="reset"][disabled], -input[type="submit"][disabled] { - opacity: 0.7; -} - -input[type="search"] { - -webkit-appearance: textfield; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -textarea { - overflow: auto; - vertical-align: top; -} - -/* - * Scaffolding - * Basic and global styles for generating a grid system, structural layout, and page templates - * ------------------------------------------------------------------------------------------- */ -body { - background-color: #ffffff; - margin: 0; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - font-weight: normal; - line-height: 18px; - color: #404040; - padding-top: 58px; -} - -.container { - width: 100%; - max-width: 940px; - margin-left: auto; - margin-right: auto; - zoom: 1; -} - -.container:before, .container:after { - display: table; - content: ""; - zoom: 1; -} - -.container:after { - clear: both; -} - -a { - color: #0069d6; - text-decoration: none; - line-height: inherit; - font-weight: inherit; -} - -a:hover { - color: #00438a; - text-decoration: underline; -} - -.pull-right { - float: right; -} - -.pull-left { - float: left; -} - -/* Typography.less - * Headings, body text, lists, code, and more for a versatile and durable typography system - * ---------------------------------------------------------------------------------------- */ -p, -.cbi-map-descr, -.cbi-section-descr { - font-size: 13px; - font-weight: normal; - line-height: 18px; - margin-bottom: 9px; -} - -p small { - font-size: 11px; - color: #bfbfbf; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - font-weight: bold; - color: #404040; -} - -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { - color: #bfbfbf; -} - -h1 { - margin-bottom: 18px; - font-size: 30px; - line-height: 36px; -} - -h1 small { - font-size: 18px; -} - -h2 { - font-size: 24px; - line-height: 36px; -} - -h2 small { - font-size: 14px; -} - -h3, -h4, -h5, -h6 { - line-height: 36px; -} - -h3 { - font-size: 18px; -} - -h3 small { - font-size: 14px; -} - -h4 { - font-size: 16px; -} - -h4 small { - font-size: 12px; -} - -h5 { - font-size: 14px; -} - -h6 { - font-size: 13px; - color: #bfbfbf; - text-transform: uppercase; -} - -ul, ol { - margin: 0 0 18px 25px; -} - -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; -} - -ul { - list-style: disc; -} - -ol { - list-style: decimal; -} - -li { - line-height: 18px; - color: #808080; -} - -ul.unstyled { - list-style: none; - margin-left: 0; -} - -dl { - margin-bottom: 18px; -} - -dl dt, dl dd { - line-height: 18px; -} - -dl dt { - font-weight: bold; -} - -dl dd { - margin-left: 9px; -} - -hr { - margin: 20px 0 19px; - border: 0; - border-bottom: 1px solid #eee; -} - -strong { - font-style: inherit; - font-weight: bold; -} - -em { - font-style: italic; - font-weight: inherit; - line-height: inherit; -} - -small { font-size: 0.9em } - -address { - display: block; - line-height: 18px; - margin-bottom: 18px; -} - -code, pre { - padding: 0 3px 2px; - font-family: Monaco, Andale Mono, Courier New, monospace; - font-size: 12px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -code { - background-color: #fee9cc; - color: rgba(0, 0, 0, 0.75); - padding: 1px 3px; -} - -pre { - background-color: #f5f5f5; - display: block; - padding: 8.5px; - margin: 0 0 18px; - line-height: 18px; - font-size: 12px; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -/* Forms.less - * Base styles for various input types, form layouts, and states - * ------------------------------------------------------------- */ -form { - margin-bottom: 18px; -} - -fieldset { - margin-bottom: 9px; - padding-top: 9px; -} - -fieldset legend { - display: block; - font-size: 19.5px; - line-height: 1; - color: #404040; - padding-top: 20px; - *padding: 0 0 5px 0px; - /* IE6-7 */ - - *line-height: 1.5; - /* IE6-7 */ - -} -form .cbi-tab-descr { - line-height: 18px; - margin-bottom: 18px; -} - -form .clearfix, -form .cbi-value { - margin-bottom: 18px; - zoom: 1; - overflow: hidden; -} - -form .clearfix:before, form .clearfix:after, -form .cbi-value:before, form .cbi-value:after { - display: table; - content: ""; - zoom: 1; -} - -form .clearfix:after, -form .cbi-value:after { - clear: both; -} - -label, -input, -select, -textarea { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - font-weight: normal; - line-height: normal; -} - -form .input, -form .cbi-value-field { - margin-left: 200px; -} - -form .cbi-value label.cbi-value-title { - padding-top: 6px; - font-size: 13px; - line-height: 18px; - float: left; - width: 180px; - text-align: right; - color: #404040; -} - -input[type=checkbox], input[type=radio] { - cursor: pointer; -} - -input, -textarea, -select, -.uneditable-input { - display: inline-block; - width: 210px; - height: 30px; - padding: 4px; - font-size: 13px; - line-height: 18px; - color: #808080; - border: 1px solid #ccc; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -select { - padding: initial; - background: #fff; - box-shadow: inset 0 -1px 3px rgba(0, 0, 0, 0.1); -} - -input[type=checkbox], input[type=radio] { - width: auto; - height: auto; - padding: 0; - margin: 3px 0; - *margin-top: 0; - /* IE6-7 */ - - line-height: normal; - border: none; -} - -input[type=file] { - background-color: #ffffff; - padding: initial; - border: initial; - line-height: initial; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - width: auto !important; -} - -input[type=button], input[type=reset], input[type=submit] { - width: auto; - height: auto; -} - -select, input[type=file] { - *height: auto; - *margin-top: 4px; - /* For IE7, add top margin to align select with labels */ -} - -select[multiple] { - height: inherit; - background-color: #ffffff; -} - -textarea { - height: auto; -} - -.uneditable-input { - background-color: #ffffff; - display: block; - border-color: #eee; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); - cursor: not-allowed; -} - -::-moz-placeholder { - color: #bfbfbf; -} - -::-webkit-input-placeholder { - color: #bfbfbf; -} - -input, textarea { - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -moz-transition: border linear 0.2s, box-shadow linear 0.2s; - -ms-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); - -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); -} - -input:focus, textarea:focus { - outline: 0; - border-color: rgba(82, 168, 236, 0.8); - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); - -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); -} - -input[type=file]:focus, input[type=checkbox]:focus, select:focus { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - outline: 1px dotted #666; -} - -form .clearfix.error > label, form .clearfix.error .help-block, form .clearfix.error .help-inline { - color: #b94a48; -} - -form .clearfix.error input, form .clearfix.error textarea { - color: #b94a48; - border-color: #ee5f5b; -} - -form .clearfix.error input:focus, form .clearfix.error textarea:focus { - border-color: #e9322d; - -webkit-box-shadow: 0 0 6px #f8b9b7; - -moz-box-shadow: 0 0 6px #f8b9b7; - box-shadow: 0 0 6px #f8b9b7; -} - -form .clearfix.error .input-prepend .add-on, form .clearfix.error .input-append .add-on { - color: #b94a48; - background-color: #fce6e6; - border-color: #b94a48; -} - -form .clearfix.warning > label, form .clearfix.warning .help-block, form .clearfix.warning .help-inline { - color: #c09853; -} - -form .clearfix.warning input, form .clearfix.warning textarea { - color: #c09853; - border-color: #ccae64; -} - -form .clearfix.warning input:focus, form .clearfix.warning textarea:focus { - border-color: #be9a3f; - -webkit-box-shadow: 0 0 6px #e5d6b1; - -moz-box-shadow: 0 0 6px #e5d6b1; - box-shadow: 0 0 6px #e5d6b1; -} - -form .clearfix.warning .input-prepend .add-on, form .clearfix.warning .input-append .add-on { - color: #c09853; - background-color: #d2b877; - border-color: #c09853; -} - -form .clearfix.success > label, form .clearfix.success .help-block, form .clearfix.success .help-inline { - color: #468847; -} - -form .clearfix.success input, form .clearfix.success textarea { - color: #468847; - border-color: #57a957; -} - -form .clearfix.success input:focus, form .clearfix.success textarea:focus { - border-color: #458845; - -webkit-box-shadow: 0 0 6px #9acc9a; - -moz-box-shadow: 0 0 6px #9acc9a; - box-shadow: 0 0 6px #9acc9a; -} - -form .clearfix.success .input-prepend .add-on, form .clearfix.success .input-append .add-on { - color: #468847; - background-color: #bcddbc; - border-color: #468847; -} - -input[disabled], -select[disabled], -textarea[disabled], -input[readonly], -select[readonly], -textarea[readonly] { - background-color: #f5f5f5; - border-color: #ddd; -} - -.actions, -.cbi-page-actions { - background: #f5f5f5; - margin-bottom: 18px; - padding: 17px 20px 18px 150px; - border-top: 1px solid #ddd; - -webkit-border-radius: 0 0 3px 3px; - -moz-border-radius: 0 0 3px 3px; - border-radius: 0 0 3px 3px; - text-align: right; -} - -.actions .secondary-action, -.cbi-page-actions .secondary-action{ - float: right; -} - -.actions .secondary-action a, -.cbi-page-actions .secondary-action a { - line-height: 30px; -} - -.actions .secondary-action a:hover, -.cbi-page-actions .secondary-action a:hover { - text-decoration: underline; -} - -.help-inline, .help-block { - font-size: 13px; - line-height: 18px; - color: #bfbfbf; -} - -.help-inline { - padding-left: 5px; - *position: relative; - /* IE6-7 */ - - *top: -5px; - /* IE6-7 */ - -} - -.help-block { - display: block; - max-width: 600px; -} - -/* - * Tables.less - * Tables for, you guessed it, tabular data - * ---------------------------------------- */ -table { - width: 100%; - margin-bottom: 18px; - padding: 0; - font-size: 13px; - border-collapse: collapse; -} - -table th, table td { - padding: 10px 10px 9px; - line-height: 18px; - text-align: left; -} - -table th { - padding-top: 9px; - font-weight: bold; - vertical-align: middle; -} - -table td { - vertical-align: top; - border-top: 1px solid #ddd; -} - -table tbody th { - border-top: 1px solid #ddd; - vertical-align: top; -} - -/* Patterns.less - * Repeatable UI elements outside the base styles provided from the scaffolding - * ---------------------------------------------------------------------------- */ -header { - height: 40px; - position: fixed; - top: 0; - left: 0; - right: 0; - z-index: 10000; - overflow: visible; - color: #BFBFBF; -} - -header a { - color: #bfbfbf; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} - -header h3 a:hover, header .brand:hover, header ul .active > a { - background-color: #333; - background-color: rgba(255, 255, 255, 0.05); - color: #ffffff; - text-decoration: none; -} - -header h3 { - position: relative; -} - -header h3 a, header .brand { - float: left; - display: block; - padding: 8px 20px 12px; - margin-left: -20px; - color: #ffffff; - font-size: 20px; - font-weight: 200; - line-height: 1; -} - -header p { - margin: 0; - line-height: 40px; -} - -header .fill { - background-color: #222; - background-color: #222222; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222)); - background-image: -moz-linear-gradient(top, #333333, #222222); - background-image: -ms-linear-gradient(top, #333333, #222222); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222)); - background-image: -webkit-linear-gradient(top, #333333, #222222); - background-image: -o-linear-gradient(top, #333333, #222222); - background-image: linear-gradient(to bottom, #333333, #222222); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); - -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); - -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); - padding: 0 5px; -} - -header div > ul, .nav { - display: block; - float: left; - margin: 0 10px 0 0; - position: relative; - left: 0; -} - -header div > ul > li, .nav > li { - display: block; - float: left; -} - -header div > ul a, .nav a { - display: block; - float: none; - padding: 10px 10px 11px; - line-height: 19px; - text-decoration: none; -} - -header div > ul a:hover, .nav a:hover { - color: #ffffff; - text-decoration: none; -} - -header div > ul .active > a, .nav .active > a { - background-color: #222; - background-color: rgba(0, 0, 0, 0.5); -} - -header div > ul.secondary-nav, .nav.secondary-nav { - float: right; - margin-left: 10px; - margin-right: 0; -} - -header div > ul.secondary-nav .menu-dropdown, -.nav.secondary-nav .menu-dropdown, -header div > ul.secondary-nav .dropdown-menu, -.nav.secondary-nav .dropdown-menu { - right: 0; - border: 0; -} - -header div > ul a.menu:hover, -.nav a.menu:hover, -header div > ul li.open .menu, -.nav li.open .menu, -header div > ul .dropdown-toggle:hover, -.nav .dropdown-toggle:hover, -header div > ul .dropdown.open .dropdown-toggle, -.nav .dropdown.open .dropdown-toggle { - background: #444; - background: rgba(255, 255, 255, 0.05); -} - -header div > ul .menu-dropdown, -.nav .menu-dropdown, -header div > ul .dropdown-menu, -.nav .dropdown-menu { - background-color: #333; -} - -header div > ul .menu-dropdown a.menu, -.nav .menu-dropdown a.menu, -header div > ul .dropdown-menu a.menu, -.nav .dropdown-menu a.menu, -header div > ul .menu-dropdown .dropdown-toggle, -.nav .menu-dropdown .dropdown-toggle, -header div > ul .dropdown-menu .dropdown-toggle, -.nav .dropdown-menu .dropdown-toggle { - color: #ffffff; -} - -header div > ul .menu-dropdown a.menu.open, -.nav .menu-dropdown a.menu.open, -header div > ul .dropdown-menu a.menu.open, -.nav .dropdown-menu a.menu.open, -header div > ul .menu-dropdown .dropdown-toggle.open, -.nav .menu-dropdown .dropdown-toggle.open, -header div > ul .dropdown-menu .dropdown-toggle.open, -.nav .dropdown-menu .dropdown-toggle.open { - background: #444; - background: rgba(255, 255, 255, 0.05); -} - -header div > ul .menu-dropdown li a, -.nav .menu-dropdown li a, -header div > ul .dropdown-menu li a, -.nav .dropdown-menu li a { - color: #999; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); -} - -header div > ul .menu-dropdown li a:hover, -.nav .menu-dropdown li a:hover, -header div > ul .dropdown-menu li a:hover, -.nav .dropdown-menu li a:hover { - background-color: #191919; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919)); - background-image: -moz-linear-gradient(top, #292929, #191919); - background-image: -ms-linear-gradient(top, #292929, #191919); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919)); - background-image: -webkit-linear-gradient(top, #292929, #191919); - background-image: -o-linear-gradient(top, #292929, #191919); - background-image: linear-gradient(to bottom, #292929, #191919); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0); - color: #ffffff; -} - -header div > ul .menu-dropdown .active a, -.nav .menu-dropdown .active a, -header div > ul .dropdown-menu .active a, -.nav .dropdown-menu .active a { - color: #ffffff; -} - -header div > ul .menu-dropdown .divider, -.nav .menu-dropdown .divider, -header div > ul .dropdown-menu .divider, -.nav .dropdown-menu .divider { - background-color: #222; - border-color: #444; -} - -header ul .menu-dropdown li a, header ul .dropdown-menu li a { - padding: 4px 15px; -} - -li.menu, .dropdown { - position: relative; -} - -a.menu:after, .dropdown-toggle:after { - width: 0; - height: 0; - display: inline-block; - content: "↓"; - text-indent: -99999px; - vertical-align: top; - margin-top: 8px; - margin-left: 4px; - border-left: 4px solid transparent; - border-right: 4px solid transparent; - border-top: 4px solid #ffffff; - filter: alpha(opacity=50); - -khtml-opacity: 0.5; - -moz-opacity: 0.5; - opacity: 0.5; -} - -.menu-dropdown, .dropdown-menu { - background-color: #ffffff; - float: left; - position: absolute; - top: 40px; - left: -9999px; - z-index: 900; - min-width: 160px; - max-width: 220px; - _width: 160px; - margin-left: 0; - margin-right: 0; - padding: 6px 0; - zoom: 1; - border-color: #999; - border-color: rgba(0, 0, 0, 0.2); - border-style: solid; - border-width: 0 1px 1px; - -webkit-border-radius: 0 0 6px 6px; - -moz-border-radius: 0 0 6px 6px; - border-radius: 0 0 6px 6px; - -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding-box; - background-clip: padding-box; -} - -.menu-dropdown li, .dropdown-menu li { - float: none; - display: block; - background-color: transparent; -} - -.menu-dropdown .divider, .dropdown-menu .divider { - height: 1px; - margin: 5px 0; - overflow: hidden; - background-color: #eee; - border-bottom: 1px solid #ffffff; -} - -header .dropdown-menu a, .dropdown-menu a { - display: block; - padding: 4px 15px; - clear: both; - font-weight: normal; - line-height: 18px; - color: #808080; - text-shadow: 0 1px 0 #ffffff; -} - -header .dropdown-menu a:hover, -.dropdown-menu a:hover, -header .dropdown-menu a.hover, -.dropdown-menu a.hover { - background-color: #dddddd; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd)); - background-image: -moz-linear-gradient(top, #eeeeee, #dddddd); - background-image: -ms-linear-gradient(top, #eeeeee, #dddddd); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #dddddd)); - background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd); - background-image: -o-linear-gradient(top, #eeeeee, #dddddd); - background-image: linear-gradient(to bottom, #eeeeee, #dddddd); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0); - color: #404040; - text-decoration: none; - -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025); - -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025); - box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025); -} - -.open .menu, -.dropdown.open .menu, -.open .dropdown-toggle, -.dropdown.open .dropdown-toggle { - color: #ffffff; - background: #ccc; - background: rgba(0, 0, 0, 0.3); -} - -.open .menu-dropdown, -.dropdown.open .menu-dropdown, -.open .dropdown-menu, -.dropdown.open .dropdown-menu { - left: 0; -} - -.dropdown:hover ul.dropdown-menu { - left: 0; -} - -.dropdown-menu .dropdown-menu { - position: absolute; - left: 159px; -} - -.dropdown-menu li { - position: relative; -} - -.tabs, .cbi-tabmenu { - margin: 0 0 18px; - padding: 0; - list-style: none; - zoom: 1; -} - -.tabs:before, -.cbi-tabmenu:before, -.tabs:after, -.cbi-tabmenu:after { - display: table; - content: ""; - zoom: 1; -} - -.tabs:after, .cbi-tabmenu:after { - clear: both; -} - -.tabs > li, .cbi-tabmenu > li { - float: left; -} - -.tabs > li > a, .cbi-tabmenu > li > a { - display: block; -} - -.tabs, -.cbi-tabmenu { - border-color: #ddd; - border-style: solid; - border-width: 0 0 1px; -} - -.tabs > li, -.cbi-tabmenu > li { - position: relative; - margin-bottom: -1px; -} - -.cbi-tabmenu.map { - margin: 0; -} - -.cbi-tabmenu.map > li { - font-size: 16.5px; - font-weight: bold; -} - -.cbi-tabcontainer > fieldset.cbi-section[id] > legend { - display: none; -} - -.tabs > li > a, -.cbi-tabmenu > li > a { - padding: 0 15px; - margin-right: 2px; - line-height: 34px; - border: 1px solid transparent; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} - -.tabs > li > a:hover, -.cbi-tabmenu > li > a:hover { - text-decoration: none; - background-color: #eee; - border-color: #eee #eee #ddd; -} - -.tabs .active > a, .tabs .active > a:hover, -.cbi-tabmenu .active > a, .cbi-tabmenu .active > a:hover, -.cbi-tab > a:link, .cbi-tab > a:hover { - color: #808080; - background-color: #ffffff; - border: 1px solid #ddd; - border-bottom-color: transparent; - cursor: default; -} - -.tabs .menu-dropdown, .tabs .dropdown-menu, -.cbi-tabmenu .menu-dropdown, .cbi-tabmenu .dropdown-menu { - top: 35px; - border-width: 1px; - -webkit-border-radius: 0 6px 6px 6px; - -moz-border-radius: 0 6px 6px 6px; - border-radius: 0 6px 6px 6px; -} - -.tabs a.menu:after, .tabs .dropdown-toggle:after, -.cbi-tabmenu a.menu:after, .cbi-tabmenu .dropdown-toggle:after { - border-top-color: #999; - margin-top: 15px; - margin-left: 5px; -} - -.tabs li.open.menu .menu, .tabs .open.dropdown .dropdown-toggle, -.cbi-tabmenu li.open.menu .menu, .cbi-tabmenu .open.dropdown .dropdown-toggle { - border-color: #999; -} - -.tabs li.open a.menu:after, .tabs .dropdown.open .dropdown-toggle:after, -.cbi-tabmenu li.open a.menu:after, .cbi-tabmenu .dropdown.open .dropdown-toggle:after { - border-top-color: #555; -} - -.tab-content > .tab-pane, -.tab-content > div { - display: none; -} - -.tab-content > .active { - display: block; -} - -.breadcrumb { - padding: 7px 14px; - margin: 0 0 18px; - background-color: #f5f5f5; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5)); - background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); - background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5)); - background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); - background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); - background-image: linear-gradient(to bottom, #ffffff, #f5f5f5); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); - border: 1px solid #ddd; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -webkit-box-shadow: inset 0 1px 0 #ffffff; - -moz-box-shadow: inset 0 1px 0 #ffffff; - box-shadow: inset 0 1px 0 #ffffff; -} - -.breadcrumb li { - display: inline; - text-shadow: 0 1px 0 #ffffff; -} - -.breadcrumb .divider { - padding: 0 5px; - color: #bfbfbf; -} - -.breadcrumb .active a { - color: #404040; -} - -footer { - margin-top: 17px; - padding-top: 17px; - border-top: 1px solid #eee; -} - -.btn.danger, -.alert-message.danger, -.btn.danger:hover, -.alert-message.danger:hover, -.btn.error, -.alert-message.error, -.btn.error:hover, -.alert-message.error:hover, -.btn.success, -.alert-message.success, -.btn.success:hover, -.alert-message.success:hover, -.btn.info, -.alert-message.info, -.btn.info:hover, -.alert-message.info:hover { - color: #ffffff; -} - -.btn .close, .alert-message .close { - font-family: Arial, sans-serif; - line-height: 18px; -} - -.btn.danger, -.alert-message.danger, -.btn.error, -.alert-message.error { - background-color: #c43c35; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); - background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); - background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); - background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - border-color: #c43c35 #c43c35 #882a25; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); -} - -.btn.success, .alert-message.success { - background-color: #57a957; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957)); - background-image: -moz-linear-gradient(top, #62c462, #57a957); - background-image: -ms-linear-gradient(top, #62c462, #57a957); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957)); - background-image: -webkit-linear-gradient(top, #62c462, #57a957); - background-image: -o-linear-gradient(top, #62c462, #57a957); - background-image: linear-gradient(to bottom, #62c462, #57a957); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - border-color: #57a957 #57a957 #3d773d; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); -} - -.btn.info, .alert-message.info { - background-color: #339bb9; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9)); - background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); - background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9)); - background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); - background-image: -o-linear-gradient(top, #5bc0de, #339bb9); - background-image: linear-gradient(to bottom, #5bc0de, #339bb9); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - border-color: #339bb9 #339bb9 #22697d; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); -} - -.btn, -.cbi-button { - cursor: pointer; - display: inline-block; - background-color: #e6e6e6; - background-repeat: no-repeat; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); - padding: 5px 14px 6px; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - color: #333; - font-size: 13px; - line-height: normal; - border: 1px solid #ccc; - border-bottom-color: #bbb; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn:hover, -.cbi-button:hover { - color: #333; - text-decoration: none; -} - -.btn:focus, -.cbi-button:focus { - outline: 1px dotted #666; -} - -.btn.primary, -.cbi-page-actions .cbi-button-apply, -.cbi-page-actions .cbi-button-save, -.cbi-page-actions .cbi-button-reset { - color: #ffffff; - padding: 5px 14px 6px; - background-color: #0064cd; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); - background-image: -moz-linear-gradient(top, #049cdb, #0064cd); - background-image: -ms-linear-gradient(top, #049cdb, #0064cd); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); - background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); - background-image: -o-linear-gradient(top, #049cdb, #0064cd); - background-image: linear-gradient(to bottom, #049cdb, #0064cd); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - border-color: #0064cd #0064cd #003f81; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); -} - -.cbi-input-invalid, -.cbi-value-error input { - color: #FF0000; - border-color: #FF0000; -} - -.cbi-button-up, -.cbi-input-up { - background-position: center center; - background-image: url('../resources/cbi/up.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/up.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/up.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/up.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/up.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/up.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-down, -.cbi-input-down { - background-position: center center; - background-image: url('../resources/cbi/down.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/down.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/down.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/down.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/down.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/down.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-find, -.cbi-input-find { - background-position: 6px center, left top; - padding-left: 28px; - background-image: url('../resources/cbi/find.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/find.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/find.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/find.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/find.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/find.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-add, -.cbi-input-add { - background-position: 6px center, left top; - padding-left: 28px; - background-image: url('../resources/cbi/add.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/add.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/add.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/add.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/add.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/add.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-apply, -.cbi-input-apply { - background-position: 6px center, left top; - padding-left: 28px; - background-image: url('../resources/cbi/apply.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/apply.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/apply.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/apply.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/apply.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/apply.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-reset, -.cbi-input-reset { - background-position: 6px center, left top; - padding-left: 28px; - background-image: url('../resources/cbi/reset.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/reset.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reset.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reset.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reset.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reset.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-edit, -.cbi-input-edit { - background-position: 6px center, left top; - padding-left: 28px; - background-image: url('../resources/cbi/edit.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/edit.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/edit.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/edit.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/edit.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/edit.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-remove, -.cbi-input-remove { - background-position: 6px center, left top; - padding-left: 28px; - background-image: url('../resources/cbi/remove.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/remove.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/remove.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/remove.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/remove.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/remove.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-reload, -.cbi-input-reload { - background-position: 6px center, left top; - padding-left: 28px; - background-image: url('../resources/cbi/reload.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/reload.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reload.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reload.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reload.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/reload.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-link, -.cbi-input-link { - background-position: 6px center, left top; - padding-left: 28px; - background-image: url('../resources/cbi/link.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/link.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/link.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/link.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/link.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/link.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.cbi-button-download, -.cbi-input-download { - background-position: 6px center, left top; - padding-left: 28px; - background-image: url('../resources/cbi/download.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: url('../resources/cbi/download.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/download.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/download.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/download.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: url('../resources/cbi/download.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); -} - -.btn.active, .btn:active { - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn.disabled { - cursor: default; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - filter: alpha(opacity=65); - -khtml-opacity: 0.65; - -moz-opacity: 0.65; - opacity: 0.65; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.btn[disabled] { - cursor: default; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - filter: alpha(opacity=65); - -khtml-opacity: 0.65; - -moz-opacity: 0.65; - opacity: 0.65; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.btn.large { - font-size: 15px; - line-height: normal; - padding: 9px 14px 9px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.btn.small { - padding: 7px 9px 7px; - font-size: 11px; -} - -/* Button icons for specific pages */ -.Startup .cbi-section-table input.cbi-input-apply, -.Startup .cbi-section-table input.cbi-button-apply { - background-image: url("../resources/cbi/apply.gif"); - background-position: 7px 4px; - padding: 3px 9px 3px 27px; -} - -.Processes .cbi-section-table input.cbi-input-reload, -.Startup .cbi-section-table input.cbi-input-reload { - background-image: url("../resources/cbi/reload.gif"); - background-position: 7px 4px; - padding: 3px 9px 3px 27px; -} - -.Processes .cbi-section-table input.cbi-input-remove, -.Processes .cbi-section-table div.cbi-section-remove input, -.Startup .cbi-section-table input.cbi-input-remove, -.Startup .cbi-section-table div.cbi-section-remove input { - background-image: url("../resources/cbi/remove.gif"); - background-position: 7px 4px; - padding: 3px 9px 3px 27px; -} - -.Processes .cbi-section-table input.cbi-input-reset, -.Processes .cbi-section-table input.cbi-button-reset, -.Startup .cbi-section-table input.cbi-input-reset, -.Startup .cbi-section-table input.cbi-button-reset { - background-image: url("../resources/cbi/reset.gif"); - background-position: 7px 4px; - padding: 3px 9px 3px 27px; -} - -.Startup .cbi-section-table input.cbi-input-save, -.Startup .cbi-section-table input.cbi-button-save { - background-image: url("../resources/cbi/save.gif"); - background-position: 7px 4px; - padding: 3px 9px 3px 27px; -} - -:root .alert-message, :root .btn { - border-radius: 0 0; -} - -button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner { - padding: 0; - border: 0; -} - -.close { - float: right; - color: #000000; - font-size: 20px; - font-weight: bold; - line-height: 13.5px; - text-shadow: 0 1px 0 #ffffff; - filter: alpha(opacity=25); - -khtml-opacity: 0.25; - -moz-opacity: 0.25; - opacity: 0.25; -} - -.close:hover { - color: #000000; - text-decoration: none; - filter: alpha(opacity=40); - -khtml-opacity: 0.4; - -moz-opacity: 0.4; - opacity: 0.4; -} - -.alert-message, .errorbox { - position: relative; - padding: 7px 15px; - margin-bottom: 18px; - color: #404040; - background-color: #eedc94; - background-repeat: repeat-x; - background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94)); - background-image: -moz-linear-gradient(top, #fceec1, #eedc94); - background-image: -ms-linear-gradient(top, #fceec1, #eedc94); - background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94)); - background-image: -webkit-linear-gradient(top, #fceec1, #eedc94); - background-image: -o-linear-gradient(top, #fceec1, #eedc94); - background-image: linear-gradient(to bottom, #fceec1, #eedc94); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - border-color: #eedc94 #eedc94 #e4c652; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - border-width: 1px; - border-style: solid; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); -} - -.alert-message .close { - margin-top: 1px; - *margin-top: 0; -} - -.alert-message a { - font-weight: bold; - color: #404040; -} - -.alert-message.danger p a, -.alert-message.error p a, -.alert-message.success p a, -.alert-message.info p a { - color: #ffffff; -} - -.alert-message h5 { - line-height: 18px; -} - -.alert-message p { - margin-bottom: 0; -} - -.alert-message div { - margin-top: 5px; - margin-bottom: 2px; - line-height: 28px; -} - -.alert-message .btn { - -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); - -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); - box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); -} - -.label { - padding: 1px 3px 2px; - font-size: 9.75px; - font-weight: bold; - color: #ffffff !important; - text-transform: uppercase; - white-space: nowrap; - background-color: #bfbfbf; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - text-shadow: none; -} - -a.label:link, -a.label:visited { - color: #ffffff; -} - -a.label:hover { - text-decoration: none; -} - -.label.important { - background-color: #c43c35; -} - -.label.warning { - background-color: #f89406; -} - -.label.success { - background-color: #46a546; -} - -.label.notice { - background-color: #62cffc; -} - -/* LuCI specific items */ -.hidden { display: none } - -#memtotal > div, -#memfree > div, -#memcache > div, -#membuff > div, -#conns > div { - border: 1px solid #CCCCCC; - border-radius: 3px 3px 3px 3px; - color: #808080; - display: inline-block; - font-size: 13px; - line-height: 18px; -} - -#xhr_poll_status { - cursor: pointer; -} - -form.inline { display: inline } - -header .pull-right { padding-top: 8px; } - -#modemenu li:last-child span.divider { display: none } - -#syslog { width: 100%; } - -.cbi-section-table tbody tr:nth-child(odd) td, .cbi-section-table tbody tr:nth-child(odd) th { - background-color: #f9f9f9; -} - -.cbi-section-table tbody tr:hover td, .cbi-section-table tbody tr:hover th { - background-color: #f5f5f5; -} - -.cbi-section-table tr.cbi-section-table-descr th { - font-weight: normal; -} - -.left { text-align: left !important; } - -.right { text-align: right !important; } - -.cbi-value-field { line-height: 1.5em; } - -.cbi-value-field input[type=checkbox], -.cbi-value-field input[type=radio] { - margin-top: 8px; - margin-right: 6px; -} - -table table td, -.cbi-value-field table td { - border: none; -} - -table.cbi-section-table input, -table.cbi-section-table textarea, -table.cbi-section-table select { - width: auto; -} - -table.cbi-section-table td.cbi-section-table-cell { - white-space: nowrap; - text-align: right; -} - -table.cbi-section-table td.cbi-section-table-cell select { - width: inherit; -} - -table.valign-middle td { - vertical-align: middle; -} - -.cbi-value-description { display: inline; } - -.cbi-value-description img { vertical-align: middle; } - -.cbi-section-error { - border: 1px solid #FF0000; - border-radius: 3px; - background-color: #FCE6E6; - padding: 5px; -} - -.cbi-section-error ul { margin: 0 0 0 20px; } - -.cbi-section-error ul li { - color: #FF0000; - font-weight: bold; -} - -.ifacebox { - background-color: #FFFFFF; - border: 1px solid #CCCCCC; - margin: 0 10px; - text-align: center; - white-space: nowrap; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.ifacebox .ifacebox-head { - border-bottom: 1px solid #CCCCCC; - padding: 2px; -} - -.ifacebox .ifacebox-body { - padding: 6px; -} - -.ifacebadge { - display: inline-block; - white-space: nowrap; - background-color: #FFFFFF; - border: 1px solid #CCCCCC; - padding: 2px; - margin-left: 2px; - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); - background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - cursor: default; -} - -.ifacebadge img { - width: 16px; - height: 16px; - vertical-align: middle; -} - -.ifacebadge-active { - border-color: #000000; - font-weight: bold; -} - -.zonebadge { - padding: 2px; - border-radius: 4px; - display: inline-block; - white-space: nowrap; - color: #666666; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - cursor: pointer; -} - -.zonebadge > em, -.zonebadge > strong { - margin: 5px; - display: inline-block; -} - -.zonebadge input { - width: 6em; -} - -.zonebadge-empty { - border: 1px dashed #AAAAAA; - color: #AAAAAA; - font-style: italic; - font-size: smaller; -} - -div.cbi-value var, -td.cbi-value-field var { - font-style: italic; - color: #0069D6; -} - -.uci-change-list { - font-family: monospace; -} - -.uci-change-list ins, -.uci-change-legend-label ins { - text-decoration: none; - border: 1px solid #00FF00; - background-color: #CCFFCC; - display: block; - padding: 2px; -} - -.uci-change-list del, -.uci-change-legend-label del { - text-decoration: none; - border: 1px solid #FF0000; - background-color: #FFCCCC; - display: block; - font-style: normal; - padding: 2px; -} - -.uci-change-list var, -.uci-change-legend-label var { - text-decoration: none; - border: 1px solid #CCCCCC; - background-color: #EEEEEE; - display: block; - font-style: normal; - padding: 2px; -} - -.uci-change-list var ins, -.uci-change-list var del { - /*display: inline;*/ - border: none; - white-space: pre; - font-style: normal; - padding: 0px; -} - -.uci-change-legend { - padding: 5px; -} - -.uci-change-legend-label { - width: 150px; - float: left; -} - -.uci-change-legend-label > ins, -.uci-change-legend-label > del, -.uci-change-legend-label > var { - float: left; - margin-right: 4px; - width: 10px; - height: 10px; - display: block; -} - -.uci-change-legend-label var ins, -.uci-change-legend-label var del { - line-height: 6px; - border: none; -} diff --git a/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/favicon.ico b/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/favicon.ico deleted file mode 100644 index 77a138ba0c53da3f891857646887710d4b472fdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmZQzU<5(|0R}M0U}0bo1F|%L7$l?s#Ef7P$NwD5 zyD&e$2Aer)Damoz)Z-BQhHeH9btry7RT$l_@13qXDgni$+neEMN>FdArv z0lGQBFs%lPtwI-v>Tv?n|DhPfWM1mmXwsh<2>{OOVxp*g!w@ zqKiTG6Xkx8S{(YJ#vmwkbwIoQ(e*=B!~Bd+gY5bTGY4TZ#0^ONRX{enUXU0V0QLV( zPE1sV@sVhl9&mgiiG!HP;ejTF!iAZEi$+n5hl8yD3NCej>=_t7@G~$xU}j)Az{tSR l0L0A?85r0SfW?IY1cTV^K(P)%28J8b3=GeoL-c_30szk#m9qc< diff --git a/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/html5.js b/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/html5.js deleted file mode 100644 index 1ec510f2a4..0000000000 --- a/package/luci/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/html5.js +++ /dev/null @@ -1,3 +0,0 @@ -// HTML5 Shiv v3 | @jon_neal @afarkas @rem | MIT/GPL2 Licensed -// Uncompressed source: https://github.com/aFarkas/html5shiv -(function(a,b){function f(a){var c,d,e,f;b.documentMode>7?(c=b.createElement("font"),c.setAttribute("data-html5shiv",a.nodeName.toLowerCase())):c=b.createElement("shiv:"+a.nodeName);while(a.firstChild)c.appendChild(a.childNodes[0]);for(d=a.attributes,e=d.length,f=0;f7?e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,'$1font[data-html5shiv="$2"]'):e[g][e[g].length-1]=e[g][e[g].length-1].replace(d,"$1shiv\\:$2"),e[g]=e[g].join("}");return e.join("{")}var c=function(a){return a.innerHTML="",a.childNodes.length===1}(b.createElement("a")),d=function(a,b,c){return b.appendChild(a),(c=(c?c(a):a.currentStyle).display)&&b.removeChild(a)&&c==="block"}(b.createElement("nav"),b.documentElement,a.getComputedStyle),e={elements:"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video".split(" "),shivDocument:function(a){a=a||b;if(a.documentShived)return;a.documentShived=!0;var f=a.createElement,g=a.createDocumentFragment,h=a.getElementsByTagName("head")[0],i=function(a){f(a)};c||(e.elements.join(" ").replace(/\w+/g,i),a.createElement=function(a){var b=f(a);return b.canHaveChildren&&e.shivDocument(b.document),b},a.createDocumentFragment=function(){return e.shivDocument(g())});if(!d&&h){var j=f("div");j.innerHTML=["x"].join(""),h.insertBefore(j.lastChild,h.firstChild)}return a}};e.shivDocument(b),a.html5=e;if(c||!a.attachEvent)return;a.attachEvent("onbeforeprint",function(){if(a.html5.supportsXElement||!b.namespaces)return;b.namespaces.shiv||b.namespaces.add("shiv");var c=-1,d=new RegExp("^("+a.html5.elements.join("|")+")$","i"),e=b.getElementsByTagName("*"),g=e.length,j,k=i(h(function(a,b){var c=[],d=a.length;while(d)c.unshift(a[--d]);d=b.length;while(d)c.unshift(b[--d]);c.sort(function(a,b){return a.sourceIndex-b.sourceIndex}),d=c.length;while(d)c[--d]=c[d].styleSheet;return c}(b.getElementsByTagName("style"),b.getElementsByTagName("link"))));while(++c - Copyright 2008 Jo-Philipp Wich - Copyright 2012 David Menting - Licensed to the public under the Apache License 2.0. --%> - -<% - local ver = require "luci.version" - local disp = require "luci.dispatcher" - local request = disp.context.path - local category = request[1] - local tree = disp.node() - local categories = disp.node_childs(tree) -%> - -
    -
    - - - diff --git a/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm b/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm deleted file mode 100644 index 78b98e0355..0000000000 --- a/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm +++ /dev/null @@ -1,212 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2016 Jo-Philipp Wich - Copyright 2012 David Menting - Licensed to the public under the Apache License 2.0. --%> - -<% - local sys = require "luci.sys" - local util = require "luci.util" - local http = require "luci.http" - local disp = require "luci.dispatcher" - - local boardinfo = util.ubus("system", "board") - - local request = disp.context.path - local request2 = disp.context.request - - local category = request[1] - local cattree = category and disp.node(category) - - local leaf = request2[#request2] - - local tree = disp.node() - local node = disp.context.dispatched - - local categories = disp.node_childs(tree) - - local c = tree - local i, r - - -- tag all nodes leading to this page - for i, r in ipairs(request) do - if c.nodes and c.nodes[r] then - c = c.nodes[r] - c._menu_selected = true - end - end - - -- send as HTML5 - http.prepare_content("text/html") - - local function nodeurl(prefix, name, query) - local u = url(prefix, name) - if query then - u = u .. http.build_querystring(query) - end - return pcdata(u) - end - - local function render_tabmenu(prefix, node, level) - if not level then - level = 1 - end - - local childs = disp.node_childs(node) - if #childs > 0 then - if level > 2 then - write('
      ') - end - - local selected_node - local selected_name - local i, v - - for i, v in ipairs(childs) do - local nnode = node.nodes[v] - if nnode._menu_selected then - selected_node = nnode - selected_name = v - end - - if level > 2 then - write('
    • %s
    • ' %{ - v, (nnode._menu_selected or (node.leaf and v == leaf)) and 'active' or '', - nodeurl(prefix, v, nnode.query), - striptags(translate(nnode.title)) - }) - end - end - - if level > 2 then - write('
    ') - end - - if selected_node then - render_tabmenu(prefix .. "/" .. selected_name, selected_node, level + 1) - end - end - end - - local function render_submenu(prefix, node) - local childs = disp.node_childs(node) - if #childs > 0 then - write('') - end - end - - local function render_topmenu() - local childs = disp.node_childs(cattree) - if #childs > 0 then - write('') - end - end - - local function render_changes() - -- calculate the number of unsaved changes - if tree.nodes[category] and tree.nodes[category].ucidata then - local ucichanges = 0 - - for i, j in pairs(require("luci.model.uci").cursor():changes()) do - for k, l in pairs(j) do - for m, n in pairs(l) do - ucichanges = ucichanges + 1; - end - end - end - - if ucichanges > 0 then - write('%s: %d' %{ - url(category, 'uci/changes'), - http.urlencode(http.formvalue('redir') or REQUEST_URI), - translate('Unsaved Changes'), - ucichanges - }) - end - end - end --%> - - - - - <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI - - - - - - <% if node and node.css then %> - - <% end -%> - <% if css then %> - - <% end -%> - - - - -
    -
    -
    - <%=boardinfo.hostname or "?"%> - <% render_topmenu() %> -
    - <% render_changes() %> - -
    -
    -
    -
    - - <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> -
    -
    -

    <%:No password set!%>

    - <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%>
    - "><%:Go to password configuration...%> -
    -
    - <%- end -%> - - - -
    - <% if category then render_tabmenu(category, cattree) end %> diff --git a/package/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap b/package/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap deleted file mode 100755 index 09299e0922..0000000000 --- a/package/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -uci batch <<-EOF - set luci.themes.Bootstrap=/luci-static/bootstrap - set luci.main.mediaurlbase=/luci-static/bootstrap - commit luci -EOF -exit 0 diff --git a/package/luci/themes/luci-theme-freifunk-generic/Makefile b/package/luci/themes/luci-theme-freifunk-generic/Makefile deleted file mode 100644 index 2fc62fdbca..0000000000 --- a/package/luci/themes/luci-theme-freifunk-generic/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Freifunk Generic Theme -LUCI_DEPENDS:= - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/bg.jpg b/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/bg.jpg deleted file mode 100644 index 822527ead873a1e8e33f55fb22df23314a8a8ddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmb7;J8l9o5QhKRhrL)R*uwI{l4y|-#EU@U23SH`B~%m?9DuV>=SV4Xh&-CqT*BC- zNko+yY4q!#Zyx^Le?xBD=N3eSr;zYp*nnj@%QMDu#yKm56r$4+`mWcNr5+4QZA|qr zt*g=G-k9-XJefT<^JZ8tS4+E^+Q!Bu#5os*=nK)em8tB%!@oim$pMs-LZT>D^i=j5_0 RhvV_b31jVEYGkPW#|2ttEi3>4 diff --git a/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/cascade.css b/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/cascade.css deleted file mode 100644 index ed97427c91..0000000000 --- a/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/cascade.css +++ /dev/null @@ -1,1072 +0,0 @@ -@charset "utf-8"; - -@media all { - -html { - min-height: 100%; - height: auto; -} - -body { - color: #ccc; - background:#e5eef5 url(bg.jpg) repeat-x top left; - font-family: Verdana, Arial, sans-serif; - font-size: 100%; - line-height: 100%; - padding-bottom: 1.5em; -} - -html, body { - height: 99%; -} - -* { - margin: 0; - padding: 0; -} - -abbr, -acronym { - font-style: normal; - font-variant: normal; -} - -abbr[title], -acronym[title] { - border-bottom: 1px dotted; - cursor: help; -} - -a:link abbr[title], -a:visited abbr[title], -a:link acronym[title], -a:visited acronym[title] { - cursor: pointer; -} - -code { - font-family: monospace; - white-space: pre; -} - -#maincontent ul { - margin-left: 2em; -} - -.warning { - color: red; - background-color: white; - font-weight: bold; - text-decoration: blink; -} - -.clear { - clear: both; -} - -a img { - border: 0; -} - -.skiplink, -.navigation, -.hidden { - position: absolute; - left: -1000px; - top: -1000px; - width: 0px; - height: 0px; - overflow: hidden; - display: inline; -} - -.error { - color: #f00; - background-color: white; -} - -.errorbox { - border: 1px solid #F00; - background-color: #FCC; - padding: 5px; -} - - -.ifacebox { - background-color: #FFFFFF; - border: 1px solid #CCCCCC; - margin: 0 10px; - text-align: center; - white-space: nowrap; -} - -.ifacebox .ifacebox-head { - border-bottom: 1px solid #CCCCCC; - padding: 2px; -} - -.ifacebox .ifacebox-body { - padding: 2px; -} - - -.ifacebadge { - background-color: #FFFFFF; - border: 1px solid #CCCCCC; - padding: 2px; - margin-left: 2px; - display: inline-block; -} - -.ifacebadge-active { - border-color: #000000; - font-weight: bold; -} - - -.zonebadge { - padding: 2px; - display: inline-block; - white-space: nowrap; - cursor: pointer; -} - -.zonebadge em, -.zonebadge strong { - margin: 3px; - display: inline-block; -} - -.zonebadge input { - width: 6em; - height: 1.5em; -} - -.zonebadge-empty { - border: 1px dashed #AAAAAA; - color: #AAAAAA; - font-style: italic; - font-size: smaller; -} - - -#header { - height: auto; - background: #FFF url(header.jpg) repeat-x left bottom; - color: #ccc; - font-weight: bold; - text-align:right; -} - -.header_left img { - padding: 10px 10px 0px 10px; - margin-bottom: 10px; -} - -.header_banner { - overflow:hidden; - padding-bottom: 6px; - text-align:left; -} - -.header_banner img{ - padding: 0px; -} - -.header_left{ - text-align:left; - max-width: 50%; - float:left; -} - -.header_left a{ - color: #dc0067; - font: bold 36px Helvetica; - text-decoration: none; -} - -#header h1, -.header_right { - max-width: 45%; - text-align: right; - font-size: 70%; - font-weight: normal; - line-height: 160%; - float:right; - padding: 10px 10px 0 0; -} - -ul.dropdowns { - float: left; - margin: 0; - padding: 0; - width: auto; - list-style: none; -} - -html>body ul.dropdowns { - position: relative; -} - -ul.dropdowns li, -ul.dropdowns ul { - margin: 0; - padding: 0; - list-style: none; -} - -ul.dropdowns li { - float: left; - position: relative; - white-space: nowrap; -} - -ul.dropdowns li ul { - position: absolute; - z-index: 1000; - top: auto; - min-width: 10em; -} - -ul.dropdowns li li { - float: none; - position: relative; -} - -ul.dropdowns li a { - display: block; -} - -ul.dropdowns ul li ul { - top: 0; -} - -ul.dropdowns li ul, -ul.dropdowns li.over ul ul, -ul.dropdowns li.focus ul ul, -ul.dropdowns li:hover ul ul, -ul.dropdowns li.over ul ul ul, -ul.dropdowns li.focus ul ul ul, -ul.dropdowns li:hover ul ul ul, -ul.dropdowns li.over ul ul ul ul, -ul.dropdowns li.focus ul ul ul ul, -ul.dropdowns li:hover ul ul ul ul { - left: -3000px; -} - -ul.dropdowns li.over ul, -ul.dropdowns li.focus ul, -ul.dropdowns li:hover ul { - left: 0; -} - -ul.dropdowns ul li.over ul, -ul.dropdowns ul li.focus ul, -ul.dropdowns ul li:hover ul, -ul.dropdowns ul ul li.over ul, -ul.dropdowns ul ul li.focus ul, -ul.dropdowns ul ul li:hover ul, -ul.dropdowns ul ul ul li.over ul, -ul.dropdowns ul ul ul li.focus ul, -ul.dropdowns ul ul ul li:hover ul { - left: 100%; -} - -#xhr_poll_status { - cursor: pointer; -} - -#xhr_poll_status #xhr_poll_status_off { - font-weight: bold; - color: #FF0000; -} - -#xhr_poll_status #xhr_poll_status_on { - font-weight: bold; - color: #00FF00; -} - -#menubar { - position: relative; - width: 100%; - background: #FFF; - color: #004a9c; - border-bottom: 1px dotted #5A5A5A; -} -#menubar .warning { - color: red; - background-color: #FFF; -} - -#menubar ul.dropdowns { - min-height: 1.8em; - background: #FFF; - color: #004a9c; -} - -#menubar ul.dropdowns li ul { - background: #FFF; - color: #004a9c; - border-width: 0 1px 1px 1px; - border-style: dotted; - border-color: #5a5a5a; -} - -#menubar ul.dropdowns ul li ul { - border-width: 1px; -} - -html #menubar a:link, -html #menubar a:visited { - position: relative; - display: block; - padding: 0.5em; - background: #FFF; - color: #004a9c; - text-decoration: none; - font-size: 80%; - font-weight: normal; -} - -html #menubar a:link:hover, -html #menubar a:visited:hover, -html #menubar a:link:active, -html #menubar a:visited:active, -#menubar a:link:focus, -#menubar a:visited:focus { - background: #F2F2F2; - color: #e60076; -} - -html #menubar a:link.active, -html #menubar a:visited.active, -html #menubar a:link.preactive, -html #menubar a:visited.preactive { - background: #FFF; - color: #e60076; -} - -html #menubar a:link.warning, -html #menubar a:visited.warning { - background: #FFF; - color: red; - font-weight: bold; - text-decoration: blink; -} - -#menubar ul.dropdowns li.over>a, -#menubar ul.dropdowns li.focus>a, -#menubar ul.dropdowns li:hover>a { -} - -.lang_de #submenu_mini_system { min-width: 13.3em; } -* html .lang_de #submenu_mini_system { width: 13.3em; } - -.lang_pt-br #submenu_mini_network { min-width: 14em; } -* html .lang_pt-br #submenu_mini_network { width: 14em; } - -.lang_pt-br #submenu_mini_system { min-width: 11.5em; } -* html .lang_pt-br #submenu_mini_system { width: 11.5em; } - -.lang_ru #submenu_mini_system { min-width: 18em; } -* html .lang_ru #submenu_mini_system { width: 18em; } - -.lang_pt-br #submenu_admin_index { min-width: 11em; } -* html .lang_pt-br #submenu_admin_index { width: 11em; } - -.lang_ru #submenu_admin_index { min-width: 15.5em; } -* html .lang_ru #submenu_admin_index { width: 15.5em; } - -.lang_ru #submenu_admin_status { min-width: 10.5em; } -* html .lang_ru #submenu_admin_status { width: 10.5em; } - -.lang_de #submenu_admin_system { min-width: 13.3em; } -* html .lang_de #submenu_admin_system { width: 13.3em; } - -.lang_fr #submenu_admin_system { min-width: 14.5em; } -* html .lang_fr #submenu_admin_system { width: 14.5em; } - -.lang_pt-br #submenu_admin_system { min-width: 11.5em; } -* html .lang_pt-br #submenu_admin_system { width: 11.5em; } - -.lang_ru #submenu_admin_system { min-width: 18em; } -* html .lang_ru #submenu_admin_system { width: 18em; } - -#submenu_admin_services_chillispot { min-width: 15.5em; } -* html #submenu_admin_services_chillispot { width: 15.5em; } - -#submenu_admin_services_coovachilli { min-width: 15em; } -* html #submenu_admin_services_coovachilli { width: 15em; } - -.lang_ru #submenu_admin_network_routes { min-width: 15.3em; } -* html .lang_ru #submenu_admin_network_routes { width: 15.3em; } - -#submenu_admin_network_firewall { min-width: 14em; } -* html #submenu_admin_network_firewall { width: 14em; } - -.lang_de #submenu_admin_network_firewall { min-width: 16.5em; } -* html .lang_de #submenu_admin_network_firewall { width: 16.5em; } - -.lang_pt-br #submenu_admin_network_firewall { min-width: 15em; } -* html .lang_pt-br #submenu_admin_network_firewall { width: 15em; } - -#modemenu { -/* width: auto;*/ - background: #000; - color: #fff; - list-style: none; - margin-right: 1px; -} - -#modemenu li { - float: right; - list-style: none; -} - -#savemenu { - float: right; - margin-right: 2em; -} - -.lang_de #submenu_admin_uci { - width: 12em; -} - -.lang_ru #submenu_admin_uci { - width: 11.5em; -} - -textarea#syslog { - width: 98%; - min-height: 500px; - border: 3px solid #ccc; - padding: 5px; - font-family: monospace; -} - - -#maincontent { - clear: both; - width: 90%; - margin: 0 auto; - padding: 0.5em; - color: #000; - font-size: 80%; -} - -#maincontent h2 { - font:normal bold 150% "Trebuchet MS", Verdana, sans-serif; - margin: 0.25em 0 0.7em 0; - border-bottom: 1px solid; - padding: 10px 0 4px 0; - color: #404040; -} - -#maincontent h3 { - margin: 0.5em 0 1.1em 0; - font:italic bold 125% "Trebuchet MS", Verdana, sans-serif; - color: #404040; -} - -#maincontent p { - margin-bottom: 1em; -} - -.cbi-section { - margin-bottom: 0.5em; - padding: 0.5em 1em; - border: 1px dotted #555; - background-color: #fff; - color: #000; -} - -.cbi-section legend { - font-size: 110%; - font-weight: bold; - height: 1em; - padding: 0.5em 0.25em; - background-color: transparent; - color: #404040 ; -} - -.cbi-section h2 { - margin: 0em 0 0.5em -0.5em !important; -} - -.cbi-section h3 { - text-decoration: none !important; - font-weight: bold !important; - color: #555 !important; - margin: 0.25em !important; - font-size: 100% !important; -} - -.cbi-section-descr { - margin-bottom: 0.5em; - font-size: 95%; -} - -.cbi-title-ref { - color: inherit; - text-decoration: none; - padding-right: 18px; - background: url('../resources/cbi/link.gif') no-repeat scroll right center; - background-color: inherit; -} - -ul.cbi-apply { - font-size: 90%; -} - -ul.cbi-tabmenu { - padding: 3px 0; - margin-left: 0 !important; - margin-bottom: -1px; - list-style-type: none; -} - -ul.cbi-tabmenu li.cbi-tab, -ul.cbi-tabmenu li.cbi-tab-disabled { - display: inline; - margin: 0; -} - -ul.cbi-tabmenu li.cbi-tab a, -ul.cbi-tabmenu li.cbi-tab-disabled a { - text-decoration: none; - padding: 3px 7px; - margin-right: 3px; - border: 1px dotted #bbb; - border-bottom: none; - background-color: #eee; - color: #bbb; -} - -ul.cbi-tabmenu li.cbi-tab-highlighted a { - color: #000; - background-color: #FFEEAA; -} - -ul.cbi-tabmenu li a:hover { - color: #000; -} - -ul.cbi-tabmenu li.cbi-tab a { - position: relative; - top: 1px; - padding-top: 4px; - color: #000; - background-color: #fff; -} - -div.cbi-tab-descr { - background-image: url(/luci-static/resources/cbi/help.gif); - background-position: 0.25em 50%; - background-repeat: no-repeat; - border-bottom: 1px solid #ccc; - margin: 0.25em 0.25em 2em; - padding: 0.5em 0.5em 0.5em 2em; -} - -input[type=submit], -input[type=reset], -input[type=image], -input[type=button] { - cursor: pointer; -} - -select, -input, -textarea { - background: #fff; - color: #000; - border: 1px solid #cccccc; -} - -input[type=image] { - border: none; -} - -input:focus, -input:hover, -select:focus, -select:hover, -textarea:focus, -textarea:hover { - background-color: #fff; - color: #000; -} - -select, -input[type=text], -input[type=password] { - width: 20em; -} - -td select, -td input[type=text], -td input[type=password] { - width: 99%; -} - -img.cbi-image-button { - cursor: pointer; - margin: 0 2px; - vertical-align: middle; -} - -input.cbi-input-user { - background: url('../resources/cbi/user.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - text-indent: 17px; -} - -input.cbi-input-password { - background: url('../resources/cbi/key.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - text-indent: 17px; -} - -input.cbi-input-find, -input.cbi-button-find { - background: url('../resources/cbi/find.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding-left: 17px; - border: none; -} - -input.cbi-input-reload { - background: url('../resources/cbi/reload.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding-left: 17px; -} - -input.cbi-button{ - margin-top: 1.3em; -} - -input.cbi-input-add, -input.cbi-button-add { - background: url('../resources/cbi/add.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; - border: 1px solid #FFF; -} - -input.cbi-input-fieldadd, -input.cbi-button-fieldadd { - background: url(../resources/cbi/fieldadd.gif) no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; -} - -input.cbi-input-reset, -input.cbi-button-reset { - background: url('../resources/cbi/reset.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; -} - - -} - -input.cbi-input-save, -input.cbi-button-save { - background: url('../resources/cbi/save.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; -} - -input.cbi-input-apply, -input.cbi-button-apply { - background: url('../resources/cbi/apply.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; -} - -input.cbi-input-link, -input.cbi-button-link { - background: url('../resources/cbi/link.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; - border: none; -} - -input.cbi-input-download, -input.cbi-button-download { - background: url('../resources/cbi/download.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; - border: none; -} - -input.cbi-input-remove, -div.cbi-section-remove input { - background: url('../resources/cbi/remove.gif') no-repeat scroll 1px center; - background-color: inherit; - color: #000; - padding: 0 1px 0 17px; - border: 1px solid #fff; -} - -input.cbi-button-up { - background-image: url('../resources/cbi/up.gif'); - padding: 0 1px 0 11px; -} - -input.cbi-button-down { - background-image: url('../resources/cbi/down.gif'); - padding: 0 1px 0 11px; -} - -input.cbi-button-edit { - background: url('../resources/cbi/edit.gif') no-repeat scroll 1px center; - color: #000000; - padding: 0 1px 0 17px; -} - -input.cbi-button-reload { - background: url('../resources/cbi/reload.gif') no-repeat scroll 1px center; - color: #000000; - padding: 0 1px 0 17px; -} - -input.cbi-button-remove { - background: url('../resources/cbi/remove.gif') no-repeat scroll 1px center; - color: #000000; - padding: 0 1px 0 17px; -} - -.cbi-input-invalid { - background-image: url('../resources/cbi/reset.gif'); - background-repeat: no-repeat; - background-position: right; - color: #FF0000 !important; - border-color: #FF0000; -} - -div.cbi-section-remove input { - border-bottom: none; -} - -textarea { - margin-left: -1px; - margin-bottom: 0.5em; -} - -form > div > input[type=submit], -form > div > input[type=reset] { - float: right; - margin-left: 0.5em; -} - -table td, -table th { - color: #000; -} - -table.smalltext { - background: #f5f5f5; - color: #000; - border: 1px solid #666; - font-size: 90%; - width: 80%; - margin-left: auto; - margin-right: auto; - border-collapse: collapse; -} - -table.smalltext tr:hover td { - background-color: #bbddee; - color: #000; -} - -table.smalltext tr th { - padding: 0 0.25em; - border-left: 1px dotted #666; - text-align: left; -} - -table.smalltext tr td { - padding: 0.2em; - border-top: 1px dotted #666; - border-left: 1px dotted #666; -} - -table.cbi-section-table .cbi-rowstyle-1 { - background-color: #f1f6fa; - color: #000; -} - -table.cbi-section-table .cbi-rowstyle-1:hover, -table.cbi-section-table .cbi-rowstyle-2:hover { - background-color: #b2c8d4; - color: #000000; -} - -table.cbi-section-table .cbi-section-table-cell { - padding: 3px; - white-space: nowrap; -} - -.cbi-section .cbi-rowstyle-1 h3 { - background-color: #f1f6fa; - color: #555; -} - -.cbi-rowstyle-2 { - color: #000; -} - -div.cbi-value { - clear: left; - vertical-align: middle; - padding-left: 0.25em; - border-bottom: 1px dotted #bbb; -} - -div.cbi-value:hover { - background: #f8f8f8; - color: #000; -} - -.cbi-value-title { - float: left; - width: 40%; - line-height: 1.8em; -} - -div.cbi-value-field { - width: 58%; - margin-left: 40%; - padding: 0.25em 0; -} - -div.cbi-value-description { - font-size: 90%; - display: inline; -} - -div.cbi-section-create { - clear: left; - white-space: nowrap; - vertical-align: top; -} - -div.cbi-tblsection-create { - border-bottom: 1px dotted #bbb; -} - -div.cbi-section-create .cbi-button { - margin: 0.25em; -} - -input.cbi-section-create-name { - margin-right: -0.25em; - border: 1px solid #999; -} - -div.cbi-map-descr { - margin-bottom: 1em; -} - -div.cbi-optionals { - padding: 0.25em; - border-bottom: 1px dotted #bbb; -} - -div.cbi-section-remove { - float: right; -} - -.cbi-section-node { - clear: both; - border: 1px dotted #bbb; - border-bottom: none; - padding-bottom: 0; -} - -.cbi-section-node table div { - padding-bottom: 0; - border-bottom: none; -} - -.cbi-section-node div.cbi-section-table-row { - margin: 0.25em; -} - -table.cbi-section-table { - width: 100%; - font-size: 95%; -} - -table.cbi-section-table th, -table.cbi-section-table td { - text-align: center; -} - -tr.cbi-section-table-descr th { - font-weight: bold; - font-size: 90%; -} - -td.cbi-section-table-optionals { - text-align: left !important; - padding-top: 1em; -} - -.cbi-value-helpicon img { - vertical-align: bottom; -} - -div.cbi-error { - font-size: 95%; - font-weight: bold; - color: #f00; - background-color: #fff; -} - -td.cbi-value-error { - border-color: red; -} - -.cbi-value-error input, -.cbi-value-error select { - color: red; - background-color: #fcc; -} - -.cbi-section-error { - color: red; - background-color: white; - font-size: 95%; - border: 1px dotted red; - margin: 3px; - padding: 3px; -} - -.left { - text-align: left !important; -} - -.right { - text-align: right !important; -} - -.footer, .push { - height: 2em; -} - -.footer { - width: 99%; - padding: 0.3em; -} - - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -2em; -} - -.luci a:link, -.luci a:visited, -.exectime { - color: #666; - text-decoration: none; - font-size: 70%; -} - -.inline { - display: inline; -} - -.error500 { - white-space: normal; - border: 1px dotted #f00; - background-color: #fff; - color: #000; - padding: 0.5em; -} - -.uci-change-list { - font-family: monospace; -} - -.uci-change-list ins, -.uci-change-legend-label ins { - text-decoration: none; - border: 1px solid #00FF00; - background-color: #CCFFCC; - display: block; - padding: 2px; -} - -.uci-change-list del, -.uci-change-legend-label del { - text-decoration: none; - border: 1px solid #FF0000; - background-color: #FFCCCC; - display: block; - font-style: normal; - padding: 2px; -} - -.uci-change-list var, -.uci-change-legend-label var { - text-decoration: none; - border: 1px solid #CCCCCC; - background-color: #EEEEEE; - display: block; - font-style: normal; - padding: 2px; -} - -.uci-change-list var ins, -.uci-change-list var del { - /*display: inline;*/ - border: none; - white-space: pre; - font-style: normal; - padding: 0px; -} - -.uci-change-legend { - padding: 5px; -} - -.uci-change-legend-label { - width: 150px; - float: left; - font-size: 80%; -} - -.uci-change-legend-label>ins, -.uci-change-legend-label>del, -.uci-change-legend-label>var { - float: left; - margin-right: 4px; - width: 10px; - height: 10px; - display: block; -} - -.uci-change-legend-label var ins, -.uci-change-legend-label var del { - line-height: 6px; - border: none; -} - -} diff --git a/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/header.jpg b/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/header.jpg deleted file mode 100644 index 2fde5a21254674636804e41c7e655640ed869184..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 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 diff --git a/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/mobile.css b/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/mobile.css deleted file mode 100644 index 37d77b4f43..0000000000 --- a/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/mobile.css +++ /dev/null @@ -1,59 +0,0 @@ -#header{ - padding-left:0px !important; - padding-bottom:24px; -} - -.header_left{ - max-width: 100%; -} - -#mainlogo { - max-width: 90%; -} - -#content { - margin-left:0px !important; -} - -#maincontent{ - font-size:1.2em; - line-height:1.5em; -} - -input[type=submit], -.cbi-button, -.cbi-button-reset, -.cbi-button-save{ - display:inline !important; - float:none !important; - padding:10px 30px !important; - margin: 10px 10px 10px 0 !important; -} - -.cbi-input-text, -.cbi-input-select, -.cbi-input-user, -.cbi-input-password{ - display:block !important; - margin: 0 !important; - padding:0 !important; -} - -.cbi-value-field{ - margin:0 !important; - margin-bottom: 1em !important; - width:100% !important; -} - -.cbi-section legend{ - white-space:normal !important; -} - -.cbi-value-title{ - font-weight:bold; - float:none !important; -} - -img { - max-width:100%; -} diff --git a/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/smallscreen.css b/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/smallscreen.css deleted file mode 100644 index 660cd8df4d..0000000000 --- a/package/luci/themes/luci-theme-freifunk-generic/htdocs/luci-static/freifunk-generic/smallscreen.css +++ /dev/null @@ -1,3 +0,0 @@ -.header_right { - display:none; -} diff --git a/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/footer.htm b/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/footer.htm deleted file mode 100644 index 4c38821bbd..0000000000 --- a/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/footer.htm +++ /dev/null @@ -1,30 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% - local ver = require "luci.version" - - local xtime - if exectime then - xtime = (string.format("%.2fs", os.clock() - exectime)) - end -%> - -
    -
    -
    - - - - - - - diff --git a/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm b/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm deleted file mode 100644 index 342a9d4088..0000000000 --- a/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm +++ /dev/null @@ -1,223 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2011 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% - local fs = require "nixio.fs" - local sys = require "luci.sys" - local util = require "luci.util" - local http = require "luci.http" - local disp = require "luci.dispatcher" - local version = require "luci.version" - - local sysinfo = util.ubus("system", "info") or { } - local loadinfo = sysinfo.load or { 0, 0, 0 } - local boardinfo = util.ubus("system", "board") or { } - - local request = disp.context.path - local category = request[1] - local cattree = category and disp.node(category) - - local tree = disp.node() - local node = disp.context.dispatched - - local categories = disp.node_childs(tree) - - local c = tree - local i, r - - -- tag all nodes leading to this page - for i, r in ipairs(request) do - if c.nodes and c.nodes[r] then - c = c.nodes[r] - c._menu_selected = true - end - end - - local uci = require "luci.model.uci".cursor() - local ff = uci:get("freifunk", "community", "name") or "" - local co = "profile_" .. ff - local community = uci:get_first(co, "community", "name") or "Freifunk" - local hp = uci:get_first(co, "community", "homepage") or "http://www.freifunk.net" - local logo = "/luci-static/freifunk-generic/logo.jpg" - local banner = false - local show_comm = true - - local file - for file in fs.glob("/www/luci-static/resources/custom_logo.*") do - logo = string.gsub(file, "/www", "") - break - end - - for file in fs.glob("/www/luci-static/resources/custom_logo_only.*") do - logo = string.gsub(file, "/www", "") - show_comm = false - break - end - - for file in fs.glob("/www/luci-static/resources/custom_header.*") do - logo = string.gsub(file, "/www", "") - show_comm = false - banner = true - end --%> - - - - - - - - - - - - -<% if node and node.css then %> -<% end -%> -<% if css then %> -<% end -%> - - - -<%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(tostring(node.title)) or '')) %> - LuCI - - - - -
    - - - -<%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> -
    - <%:No password set!%>
    - <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%> -
    -<%- end -%> - - - - - -<%- - local function submenu(prefix, node) - local childs = disp.node_childs(node) - if #childs > 0 then -%> - -<% - end - end -%> - - -
    -<% if category ~= "freifunk" and category ~= "splash" then %> - -<% end %> diff --git a/package/luci/themes/luci-theme-freifunk-generic/root/etc/uci-defaults/30_luci-theme-freifunk-generic b/package/luci/themes/luci-theme-freifunk-generic/root/etc/uci-defaults/30_luci-theme-freifunk-generic deleted file mode 100644 index 017e7f7bad..0000000000 --- a/package/luci/themes/luci-theme-freifunk-generic/root/etc/uci-defaults/30_luci-theme-freifunk-generic +++ /dev/null @@ -1,5 +0,0 @@ -uci batch <<-EOF - set luci.themes.Freifunk_Generic=/luci-static/freifunk-generic - set luci.main.mediaurlbase=/luci-static/freifunk-generic - commit luci -EOF diff --git a/package/luci/themes/luci-theme-material/Makefile b/package/luci/themes/luci-theme-material/Makefile deleted file mode 100755 index 5bc16eb7db..0000000000 --- a/package/luci/themes/luci-theme-material/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=Material Theme -LUCI_DEPENDS:= - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/css/style.css b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/css/style.css deleted file mode 100755 index 545c5fb3fa..0000000000 --- a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/css/style.css +++ /dev/null @@ -1,1549 +0,0 @@ -/** - * Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI - * - * luci-theme-material - * Copyright 2015 Lutty Yang - * - * Have a bug? Please create an issue here on GitHub! - * https://github.com/LuttyYang/luci-theme-material/issues - * - * luci-theme-bootstrap: - * Copyright 2008 Steven Barth - * Copyright 2008 Jo-Philipp Wich - * Copyright 2012 David Menting - * - * MUI: - * https://github.com/muicss/mui - * - * Licensed to the public under the Apache License 2.0 - */ - -/* - * Font generate by Icomoon - */ -@font-face { - font-family: 'icomoon'; - src: url('../fonts/font.eot'); - src: url('../fonts/font.eot') format('embedded-opentype'), - url('../fonts/font.ttf') format('truetype'), - url('../fonts/font.woff') format('woff'), - url('../fonts/font.svg') format('svg'); - font-weight: normal; - font-style: normal; -} - -.cbi-button-up, -.cbi-button-down, -.cbi-value-helpicon, -.showSide, -.main > .loading > span { - font-family: 'icomoon' !important; - speak: none; - font-style: normal !important; - font-weight: normal !important; - font-variant: normal !important; - text-transform: none !important; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { - font-family: inherit; - font-weight: 400; - line-height: 1.1; - color: inherit; -} - -html { - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} - -body { - font-size: 0.8rem; - background-color: #EEE; -} - -html, body { - margin: 0px; - padding: 0px; - height: 100%; - font-family: Microsoft Yahei, WenQuanYi Micro Hei, sans-serif, "Helvetica Neue", Helvetica, Hiragino Sans GB; -} - -select { - padding: 0.36rem 0.8rem; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; -} - -select, -input { - background-color: transparent; - color: rgba(0, 0, 0, .87); - border: none; - border-bottom: 2px solid rgba(0, 0, 0, .26); - outline: 0; - padding: 0; - box-shadow: none; - border-radius: 0; - background-image: none; - height: 1.8rem; - font-size: 0.8rem; -} - -select:not([multiple="multiple"]):focus, -input:focus { - border-color: #0099CC; -} - -select[multiple="multiple"] { - height: auto; -} - -code { - color: #0099CC; -} - -abbr { - color: #005470; - text-decoration: underline; - cursor: help; -} - -hr { - margin: 1rem 0; - border-color: #EEE; - opacity: 0.1; -} - -header, .main { - width: 100%; - position: absolute; -} - -header { - height: 4rem; - box-shadow: 0 2px 5px rgba(0, 0, 0, .26); - transition: box-shadow .2s; - float: left; - position: fixed; - z-index: 101; -} - -footer { - text-align: right; - padding: 1rem; - color: #aaa; - font-size: 0.8rem; - text-shadow: 0px 0px 2px #BBB; -} - -footer > a { - color: #aaa; - text-decoration: none; -} - -.main { - top: 4rem; - bottom: 0rem; - position: relative; - height: 100%; - height: calc(100% - 4rem); -} - -.main > .loading { - position: fixed; - width: 100%; - height: 100%; - z-index: 1000; - display: block; - background-color: rgb(240, 240, 240); - top: 0; -} - -.main > .loading > span { - display: block; - text-align: center; - margin-top: 2rem; - color: #888; - font-size: 1.2rem; -} - -.main > .loading > span > .loading-img:before { - content: "\e603"; -} - -.main > .loading > span > .loading-img { - animation: anim-rotate 2s infinite linear; - margin-right: 0.2rem; - display: inline-block; -} - -@keyframes anim-rotate { - 0% { - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - } - 100% { - -webkit-transform: rotate(360deg); - -ms-transform: rotate(360deg); - transform: rotate(360deg) - } -} - -.main-left { - float: left; - top: 4rem; - width: 15%; - width: calc(0% + 15rem); - height: 100%; - height: calc(100% - 4rem); - background-color: white; - overflow-x: auto; - position: fixed; -} - -.main-right { - width: 85%; - width: calc(100% - 15rem); - float: right; - height: 100%; - background-color: #EEE; -} - -.main-right > #maincontent { - background-color: #EEE; -} - -.pull-right { - float: right; -} - -.pull-left { - float: left; -} - -header { - background: #0099CC; - color: white; -} - -header > .container { - margin-top: 0.5rem; - padding: 0.5rem 1rem 0 1rem; -} - -header > .container > .brand { - font-size: 1.4rem; - color: white; - text-decoration: none; - cursor: default; - vertical-align: text-bottom; -} - -.warning { - background-color: #FF7D60 !important; - color: #FFF; -} - -.errorbox, -.alert-message { - margin: 2rem 0 0 0; - padding: 2rem; - border: 0; - font-weight: normal; - font-style: normal; - line-height: 1; - font-family: inherit; - min-width: inherit; - overflow: auto; - border-radius: 0; - background-color: #FFF; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); -} - -.errorbox { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} - -.error { - color: red; -} - -#maincontent > .container > div:nth-child(1).alert-message.warning > a { - font: inherit; - overflow: visible; - text-transform: none; - display: inline-block; - margin-bottom: 0; - font-weight: 400; - text-align: center; - white-space: nowrap; - vertical-align: middle; - touch-action: manipulation; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - min-width: 6rem; - padding: 0.5rem 1rem; - font-size: 0.9rem; - line-height: 1.42857143; - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; - margin-top: 2rem; - text-decoration: inherit; -} - -.main > .main-left > .nav { - margin-top: 0.5rem; -} - -.main > .main-left > .nav > li a { - color: #404040; - display: block; -} - -.main > .main-left > .nav > li:nth-last-child(1) { - margin-top: 2rem; - font-size: 1.2rem; -} - -.main > .main-left > .nav > li { - padding: 0.5rem 1rem; - cursor: pointer; -} - -.main > .main-left > .nav > .slide { - padding: 0; -} - -.main > .main-left > .nav > .slide > ul { - display: none; -} - -.main > .main-left > .nav > .slide > .menu { - display: block; - padding: 0.5rem 1rem; - text-decoration: none; - cursor: default; - font-size: 1.15rem; -} - -.main > .main-left > .nav > li:hover, -.main > .main-left > .nav > .slide > .menu:hover { - background: #D4D4D4; -} - -.main > .main-left > .nav > .slide:hover { - background: none; -} - -.main > .main-left > .nav > .slide > .slide-menu > li { - padding: 0.4rem 2rem; -} - -.main > .main-left > .nav > .slide > .slide-menu > .active { - background-color: #0099CC; -} - -.main > .main-left > .nav > .slide > .slide-menu > li > a { - text-decoration: none; - white-space: nowrap; -} - -.main > .main-left > .nav > .slide > .slide-menu > .active > a { - color: white; -} - -.main > .main-left > .nav > .slide > .slide-menu > li:hover { - background: #D4D4D4; -} - -.main > .main-left > .nav > .slide > .slide-menu > .active:hover { - background-color: #0099CC; - cursor: hand; -} - -li { - list-style-type: none; -} - -#maincontent > .container { - margin: 0 2rem 1rem 2rem; -} - -h1 { - font-size: 2rem; - padding-bottom: 10px; - border-bottom: 1px solid #eee; -} - -h2 { - margin: 2rem 0 0 0; - font-size: 1.8rem; - padding-bottom: 10px; - border-bottom: 1px solid #eee; -} - -h3 { - margin: 2rem 0 0 0; - font-size: 1.4rem; - padding-bottom: 10px; -} - -h4 { - -} - -fieldset { - margin: 2rem 0 0 0; - padding: 2rem; - border: 0; - font-weight: normal; - font-style: normal; - line-height: 1; - font-family: inherit; - - min-width: inherit; - overflow-x: auto; - overflow-y: hidden; - - border-radius: 0; - background-color: #FFF; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); - - -webkit-overflow-scrolling: touch; -} - -.cbi-map-descr + fieldset { - margin-top: 1rem; -} - -fieldset > legend { - display: none !important; -} - -fieldset > fieldset { - margin: 0; - padding: 0; - border: none; - box-shadow: none; -} - -.panel-title { - width: 100%; - display: block; - line-height: 1; - color: #404040; - font-size: 1.4rem; - padding-bottom: 1rem; - border-bottom: 1px solid #eee; -} - -table { - border-spacing: 0; - border-collapse: collapse; - width: 100%; - border: 1px solid #eee; -} - -table > tbody > tr > td, table > tbody > tr > th, table > tfoot > tr > td, table > tfoot > tr > th, table > thead > tr > td, table > thead > tr > th { - padding: .5rem; - border-top: 1px solid #ddd; - white-space: nowrap; -} - -.cbi-section-table-cell { - text-align: center; -} - -.cbi-section-table-row { - text-align: center; -} - -fieldset > table > tbody > tr:nth-of-type(2n) { - background-color: #f9f9f9; -} - -/* fix progress bar */ -#swaptotal > div, -#swapfree > div, -#memfree > div, -#membuff > div, -#conns > div, -#memtotal > div { - width: 100% !important; - height: 1.2rem !important; -} - -#swaptotal > div > div, -#swapfree > div > div, -#memfree > div > div, -#membuff > div > div, -#conns > div > div, -#memtotal > div > div { - height: 100% !important; - background-color: #0099CC !important; -} - -/* fix multiple table */ - -table table { - border: none; -} - -.cbi-value-field table { - border: none; -} - -td > table > tbody > tr > td { - border: none; -} - -.cbi-value-field > table > tbody > tr > td { - border: none; -} - -/* button style */ - -.cbi-button { - -webkit-appearance: none; - text-transform: uppercase; - color: rgba(0, 0, 0, 0.87); - background-color: #F0F0F0; - transition: all 0.2s ease-in-out; - display: inline-block; - padding: 0 0.8rem; - border: none; - border-radius: 0.2rem; - cursor: pointer; - -ms-touch-action: manipulation; - touch-action: manipulation; - background-image: none; - text-align: center; - vertical-align: middle; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - font-size: 0.8rem; - width: auto !important; -} - -.cbi-button:hover, -.cbi-button:focus, -.cbi-button:active { - color: rgba(0, 0, 0, 0.87); - outline: 0; - text-decoration: none; - color: rgba(0, 0, 0, 0.87); -} - -.cbi-button:hover, -.cbi-button:focus { - box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); -} - -.cbi-button:active { - box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); -} - -.cbi-button:disabled { - cursor: not-allowed; - pointer-events: none; - opacity: 0.60; - box-shadow: none; -} - -form.inline + form.inline, -.cbi-button + .cbi-button { - margin-left: 0.6rem; -} - -.cbi-button-reset, -.cbi-input-remove { - color: #fff !important; - background-color: #f0ad4e !important; - border-color: #eea236 !important; -} - -.cbi-input-find, -.cbi-input-save, -.cbi-button-add, -.cbi-button-save, -.cbi-button-find, -.cbi-input-reload, -.cbi-button-reload { - color: #fff !important; - background-color: #337ab7 !important; - border-color: #2e6da4 !important; -} - -.cbi-input-apply, -.cbi-button-apply, -.cbi-button-edit { - color: #fff !important; - background-color: #5bc0de !important; - border-color: #46b8da !important; -} - -.cbi-input-reset, -.cbi-section-remove > .cbi-button, -.cbi-button-remove { - color: #fff !important; - background-color: #d9534f !important; - border-color: #d43f3a !important; -} - -.a-to-btn { - text-decoration: none; -} - -/* table */ - -.tabs { - margin: 0 -2rem; - padding-left: 0.5rem; - background-color: #FFFFFF; -} - -.cbi-tabmenu > li, -.tabs > li { - display: inline-block; - padding: 0.6rem 0rem; -} - -.cbi-tabmenu > li > a, -.tabs > li > a { - text-decoration: none; - color: #404040; - padding: 0.5rem 0.8rem; -} - -.tabs > li[class~="active"], -.tabs > li:hover { - cursor: pointer; - border-bottom: 0.2rem solid #0099CC; - color: #0099CC; - margin-bottom: -0.18751rem; -} - -.tabs > li[class~="active"] > a { - color: #0099cc; -} - -.tabs > li:hover { - border-bottom: 0.18751rem solid #C9C9C9; -} - -.cbi-tabmenu { - border-top: 1px solid #D4D4D4; - border-left: 1px solid #D4D4D4; - border-right: 1px solid #D4D4D4; -} - -.cbi-tabmenu > li:hover { - background-color: #F1F1F1; -} - -.cbi-tabmenu > li[class~="cbi-tab"] { - background-color: white; -} - -.cbi-tabmenu { - background-color: #D4D4D4; -} - -.cbi-section-remove:nth-of-type(2n), -.cbi-section-node:nth-of-type(2n){ - background-color: #f9f9f9; -} - -.cbi-section-node-tabbed { - padding: 0; - margin-top: 0; - border-bottom: 1px solid #D4D4D4; - border-left: 1px solid #D4D4D4; - border-right: 1px solid #D4D4D4; -} - -.cbi-tabcontainer > .cbi-value:nth-of-type(2n) { - background-color: #f9f9f9; -} - -.cbi-value-field, -.cbi-value-description { - display: table-cell; - line-height: 1.25; -} - -.cbi-value-helpicon > img { - display: none; -} - -.cbi-value-helpicon:before { - content: "\f059"; -} - -.cbi-value-description { - font-size: small; - opacity: 0.5; - padding: 0.5rem 0 0 0; -} - -.cbi-value-title { - word-wrap: break-word; - padding-top: 0.6rem; - width: 23rem; - float: left; - text-align: right; - padding-right: 2rem; - display: table-cell; -} - -.cbi-value { - padding: 0.3rem 1rem; - display: inline-block; - width: 100%; -} - -.cbi-section-table-descr > .cbi-section-table-cell, -.cbi-section-table-titles > .cbi-section-table-cell { - border: none; -} - -.cbi-rowstyle-2 { - background-color: #eee; -} - -.cbi-rowstyle-2 .cbi-button-up, -.cbi-rowstyle-2 .cbi-button-down { - background-color: #FFF !important; -} - -.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { - width: auto !important; -} - -/* desc */ -.cbi-section-descr, -.cbi-map-descr { - padding: 0.5rem; - color: #999; - font-size: small; -} - -/* luci */ - -.hidden { - display: none -} - -.left { - text-align: left !important; -} - -.right { - text-align: right !important; -} - -.inline { - display: inline; -} - -.cbi-page-actions { - border-top: 1px solid #eee; - padding-top: 1rem; - text-align: right; -} - -/* input */ -.cbi-value input[type="password"], -.cbi-value input[type="text"] { - min-width: 15rem; -} - -/* select */ -.cbi-value-field .cbi-input-select { - min-width: 15rem; -} - -.ifacebadge { - display: inline-flex; - border-bottom: 1px solid #CCCCCC; - padding: 0.5rem 1rem; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -td > .ifacebadge { - background-color: #F0F0F0; - font-size: 0.9rem; -} - -.ifacebadge > img { - float: right; - margin: 0 0.3rem; -} - -/*textarea*/ - -.cbi-input-textarea { - width: 100%; - min-height: 14rem; - padding: 0.8rem; - font-size: 0.8rem; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - color: black; -} - -#syslog { - width: 100%; - min-height: 15rem; - padding: 1rem; - font-size: small; - color: #5F5F5F; - - margin-bottom: 20px; - border-radius: 0; - background-color: #FFF; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); - border: none; -} - -/* change */ - -.uci-change-list { - font-family: monospace; -} - -.uci-change-list ins, -.uci-change-legend-label ins { - text-decoration: none; - border: 1px solid #00FF00; - background-color: #CCFFCC; - display: block; - padding: 2px; -} - -.uci-change-list del, -.uci-change-legend-label del { - text-decoration: none; - border: 1px solid #FF0000; - background-color: #FFCCCC; - display: block; - font-style: normal; - padding: 2px; -} - -.uci-change-list var, -.uci-change-legend-label var { - text-decoration: none; - border: 1px solid #CCCCCC; - background-color: #EEEEEE; - display: block; - font-style: normal; - padding: 2px; -} - -.uci-change-list var ins, -.uci-change-list var del { - border: none; - white-space: pre; - font-style: normal; - padding: 0px; -} - -.uci-change-legend { - padding: 5px; -} - -.uci-change-legend-label { - width: 150px; - float: left; -} - -.uci-change-legend-label > ins, -.uci-change-legend-label > del, -.uci-change-legend-label > var { - float: left; - margin-right: 4px; - width: 10px; - height: 10px; - display: block; -} - -.uci-change-legend-label var ins, -.uci-change-legend-label var del { - line-height: 6px; - border: none; -} - -.uci-change-list var, -.uci-change-list del, -.uci-change-list ins { - padding: 0.5rem; -} - -/* other fix */ -#iwsvg, -#iwsvg2, -#bwsvg { - border: 1px solid #D4D4D4 !important; - border-top: none !important; -} - -.ifacebox { - border: 1px solid #999; - background-color: #f9f9f9; -} - -.cbi-image-button { - margin-left: 0.5rem; -} - -.zonebadge { - padding: 0.2rem 0.5rem; - display: inline-block; - cursor: pointer; -} - -.zonebadge > .ifacebadge { - padding: 0.2rem 1rem; - margin: 0.3rem; - border: 1px solid #6C6C6C; -} - -.zonebadge > input[type="text"] { - padding: 0.16rem 1rem; - min-width: 10rem; - margin-top: 0.3rem; -} - -.cbi-value-field .cbi-input-checkbox, -.cbi-value-field .cbi-input-radio { - margin-top: 0.5rem; - height: 1rem; -} - -.cbi-value-field > input + .cbi-value-description { - padding: 0; -} - -.cbi-value-field > ul > li { - display: flex; -} - -.cbi-value-field > ul > li > label { - margin-top: 0.5rem; -} - -.cbi-value-field > ul > li .ifacebadge { - background-color: #eee; - margin-left: 0.4rem; - margin-top: -0.5rem; -} - -.cbi-section-table-row > .cbi-value-field .cbi-input-select { - min-width: 7rem; -} - -.cbi-section-create > .cbi-button-add { - margin: 0.5rem; -} - -.cbi-section-remove { - padding: 0.5rem; -} - -div.cbi-value var, td.cbi-value-field var { - font-style: italic; - color: #0069D6; -} - -small { - font-size: 90%; - white-space: normal; - line-height: 1.42857143; -} - -.cbi-button-up, -.cbi-button-down { - display: inline-block; - min-width: 0; - padding: 0.2rem 0.3rem; - font-size: 1.2rem; -} - -.cbi-optionals { - padding: 1rem 1rem 0 1rem; - border-top: 1px solid #CCC; -} - -#diag-rc-output > pre { - background-color: #f5f5f5; - display: block; - padding: 8.5px; - margin: 0 0 18px; - line-height: 1.5rem; - -moz-border-radius: 3px; - white-space: pre-wrap; - word-wrap: break-word; - font-size: 1.4rem; - color: #404040; -} - -input[name="ping"], -input[name="traceroute"], -input[name="nslookup"] { - width: 80%; -} - -header > .container > .pull-right > * { - position: relative; - top: 0.45rem; - cursor: pointer; -} - -#xhr_poll_status > .label.success { - background-color: #14CE14; -} - -.label { - padding: 0.3rem 0.8rem; - font-size: 0.8rem; - font-weight: bold; - color: #ffffff !important; - text-transform: uppercase; - white-space: nowrap; - background-color: #bfbfbf; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - text-shadow: none; - text-decoration: none; -} - -.notice { - background-color: #5BC0DE; -} - -.showSide { - display: none; -} - -.darkMask { - width: 100%; - height: 100%; - position: fixed; - background-color: rgba(0, 0, 0, 0.56); - content: ""; - z-index: 99; - display: none; -} - -/* fix Main Login*/ -.node-main-login > .main > .main-left { - display: none; -} - -.node-main-login > .main > .main-right { - width: 100%; -} - -.node-main-login > .main fieldset { - padding: 0.5rem; - margin-bottom: 1rem; - display: inline; - background: none; - border: none; - box-shadow: none; - overflow: hidden; -} - -.node-main-login > .main .cbi-value-title { - width: 7rem; -} - -.node-main-login > .main #maincontent { - - text-align: center; -} - -.node-main-login > .main .container { - display: inline-block; - padding: 2rem 4rem; - margin-top: 2rem !important; - background-color: #FFF; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); - text-align: left; -} - -.node-main-login > .main form > div:nth-last-child(1) { - float: right; -} - -.node-main-login > .main .cbi-value { - display: block; -} - -.node-main-login > .main .cbi-value > * { - display: inline-block !important; -} - -.node-main-login > .main .cbi-input-user, -.node-main-login > .main .cbi-input-password { - min-width: 15rem; -} - -.node-main-login footer { - bottom: 0; - position: absolute; - width: 100%; -} - -/* fix status overview */ - -.node-status-overview > .main fieldset:nth-child(4) td:nth-child(2) { - white-space: normal; -} - -/* fix status processes */ - -.node-status-processes > .main table tr td:nth-child(3) { - white-space: normal; -} - -.node-status-iptables > .main div > .cbi-map > form { - margin: 2rem 2rem 0 0; -} - -/* fix system reboot */ - -.node-system-reboot > .main > .main-right p, -.node-system-reboot > .main > .main-right h3 { - padding-left: 2rem; -} - -/* fix Services Network Shares*/ -.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-title { - margin-bottom: 1rem; - width: auto; -} - -.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-field { - display: list-item; -} - -.node-services-samba > .main .cbi-tabcontainer:nth-child(3) .cbi-value-description { - padding-top: 1rem; -} - -/* fix System Software*/ -.node-system-packages > .main table tr td:nth-child(1) { - width: auto !important; -} - -.node-system-packages > .main table tr td:nth-last-child(1) { - white-space: normal; - font-size: small; - color: #404040; -} - -.node-system-packages > .main .cbi-tabmenu > li > a, .tabs > li > a { - padding: 0.5rem 0.8rem; -} - -.node-system-packages > .main .cbi-value > pre { - background-color: #eee; - padding: 0.5rem; - overflow: auto; -} - -.cbi-tabmenu + .cbi-section { - margin-top: 0; -} - -/* fix network firewall*/ -.node-network-firewall > .main .cbi-section-table-row > .cbi-value-field .cbi-input-select { - min-width: 4rem; -} - -.node-status-iptables fieldset, -.node-system-packages fieldset, -.node-system-flashops fieldset { - margin-top: 0; -} - -.node-status-iptables .cbi-tabmenu, -.node-system-packages .cbi-tabmenu, -.node-system-flashops .cbi-tabmenu { - border: none; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); -} - -.node-system-flashops form.inline + form.inline { - margin-left: 0; -} - -#cbi-firewall-redirect table *, -#cbi-network-switch_vlan table *, -#cbi-firewall-zone table * { - font-size: small; -} - -#cbi-firewall-redirect table input[type="text"], -#cbi-network-switch_vlan table input[type="text"], -#cbi-firewall-zone table input[type="text"] { - width: 5rem; -} - -#cbi-firewall-redirect table select, -#cbi-network-switch_vlan table select, -#cbi-firewall-zone table select { - min-width: 3.5rem; -} - -/* language fix */ -body.lang_pl.node-main-login .cbi-value-title { - width: 12rem; -} - -@media screen and (max-width: 1600px) { - .main-left { - width: calc(0% + 13rem); - } - - .main-right { - width: calc(100% - 13rem); - } - - .cbi-button { - padding: 0.3rem 0.6rem; - font-size: 0.8rem; - } - - header > .container > .pull-right > * { - top: 0.35rem; - } - - .label { - padding: 0.2rem 0.6rem; - } - - .cbi-value-title { - width: 15rem; - padding-right: 0.6rem; - } - - fieldset { - padding: 1rem; - } - - .cbi-input-textarea { - font-size: small; - } - - .node-status-iptables > .main fieldset li > a { - padding: 0.3rem 0.6rem; - } -} - -@media screen and (max-width: 1280px) { - header { - height: 3.5rem; - } - - header > .container { - margin-top: 0.25rem; - } - - .main { - top: 3.5rem; - height: calc(100% - 3.5rem); - } - - .main-left { - width: calc(0% + 13rem); - top: 3.5rem; - height: calc(100% - 3.5rem); - } - - .main-right { - width: calc(100% - 13rem); - } - - .cbi-tabmenu > li > a, .tabs > li > a { - padding: 0.2rem 0.5rem; - } - - .panel-title { - font-size: 1.1rem; - padding-bottom: 1rem; - } - - table { - font-size: 0.7rem !important; - width: 100% !important; - } - - .main > .main-left > .nav > li, - .main > .main-left > .nav > li a, - .main > .main-left > .nav > .slide > .menu { - font-size: 0.9rem; - } - - .main > .main-left > .nav > .slide > .slide-menu > li > a { - font-size: 0.7rem; - } -} - -@media screen and (max-width: 992px) { - .main-left { - width: 0; - position: fixed; - z-index: 100; - } - - .main-right { - width: 100%; - } - - .showSide { - padding: 0.1rem; - margin-right: 0.5rem; - display: inline-block; - } - - .showSide:before { - content: "\e20e"; - font-size: 1.7rem; - } - - .node-main-login .showSide { - display: none !important; - } - - .cbi-value-title { - width: 9rem; - padding-right: 1rem; - } - - .node-network-diagnostics > .main .cbi-map fieldset > div * { - width: 100% !important; - } - - .node-network-diagnostics > .main .cbi-map fieldset > div input[type="text"] { - margin: 3rem 0 0 0 !important; - } - - .node-network-diagnostics > .main .cbi-map fieldset > div:nth-child(4) input[type="text"] { - margin: 0 !important; - } - - .node-network-diagnostics > .main .cbi-map fieldset > div select, - .node-network-diagnostics > .main .cbi-map fieldset > div input[type="button"] { - margin: 1rem 0 0 0; - } - - .node-network-diagnostics > .main .cbi-map fieldset > div { - width: 100% !important; - } - - #diag-rc-output > pre { - font-size: 1rem; - } - - .node-main-login > .main .cbi-value-title { - text-align: left; - } -} - -@media screen and (max-width: 480px) { - body { - font-size: 1rem; - } - - fieldset { - padding: 1rem; - margin: 1rem 0 0 0; - } - - .tabs { - margin: 0 -1rem; - } - - #maincontent > .container { - margin: 0 1rem 1.5rem 1rem; - } - - .main > .main-left > .nav > .slide > .menu { - font-size: 1.3rem; - } - - .main > .main-left > .nav > .slide > .slide-menu > li > a { - font-size: 1.1rem; - } - - .cbi-value-title { - width: 100%; - min-width: 0rem !important; - display: block; - margin-top: 1rem; - margin-bottom: 0.5rem; - text-align: left; - } - - .cbi-value-field, .cbi-value-description { - width: 100%; - } - - .cbi-value > .cbi-value-field { - display: inline-block; - } - - .cbi-tabmenu > li, .tabs > li { - padding: 0.6rem 0rem; - } - - .cbi-tabmenu > li > a, .tabs > li > a { - padding: 0.2rem 0.3rem; - font-size: 0.9rem; - } - - .cbi-page-actions > div > input { - display: none; - } - - .node-main-login > .main .container { - padding: 0.5rem 1rem 2rem 1rem; - } - - .node-main-login > .main .cbi-value { - padding: 0; - } - - .node-main-login > .main form > div:nth-last-child(1) { - margin-top: 2rem; - } - - .node-main-login > .main .cbi-value-title { - width: 100% !important; - font-size: 1.2rem; - } - - .node-main-login > .main fieldset { - margin: 0; - padding: 0.5rem; - } - - h2 { - font-size: 2rem; - } - - .tabs > li > a { - font-size: 0.9rem; - } - - select, - input { - font-size: 0.9rem; - } - - .mobile-hide { - display: none; - } - - .panel-title { - font-size: 1.4rem; - padding-bottom: 1rem; - } - - .node-system-packages > .main .cbi-value.cbi-value-last > div { - width: 100% !important; - } - - .node-system-packages > .main .cbi-value .cbi-value-field input { - width: 100%; - } - - .node-status-iptables > .main div > .cbi-map > form { - position: static !important; - margin: 0 0 2rem 0; - padding: 2rem; - border: 0; - font-weight: normal; - font-style: normal; - line-height: 1; - font-family: inherit; - min-width: inherit; - overflow-x: auto; - overflow-y: hidden; - border-radius: 0; - background-color: #FFF; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); - -webkit-overflow-scrolling: touch; - } - - .node-status-iptables > .main div > .cbi-map > form input[type="submit"] { - width: 100% !important; - margin: 0; - } - - .node-status-iptables > .main div > .cbi-map > form input[type="submit"] + input[type="submit"] { - margin-top: 1rem; - } -} - -@media screen and (min-width: 992px) { - .cbi-value input[type="password"], - .cbi-value input[type="text"] { - min-width: 20rem; - } - - .cbi-value-field .cbi-input-select { - min-width: 20rem; - } -} - -@media screen and (min-width: 1280px) { - .cbi-value input[type="password"], - .cbi-value input[type="text"] { - min-width: 22rem; - } - - .cbi-value-field .cbi-input-select { - min-width: 22rem; - } -} - -@media screen and (min-width: 1600px) { - .cbi-value input[type="password"], - .cbi-value input[type="text"] { - min-width: 25rem; - } - - .cbi-value-field .cbi-input-select { - min-width: 25rem; - } -} \ No newline at end of file diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/favicon.ico b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/favicon.ico deleted file mode 100755 index b407d18455773a185059628e632e60c06d6eb858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2462 zcmcJR&yEaH6o*e6F|iOUG9fZOLP&@Rv5;U2&*0w!;0>@EGb?OJyuet^Lm<@5WC)%> zkg%GqrA0^izRtZ-om6$ws{JP4+;h*l=U2CGb=OQpkDs}@;CDYB?~d3X5yyd4oCfnl zQEO2_{uO*pd}Hi_UInNEw%|dE&oM3}4l_=IeJ4P#cTj-Wx)0ajZQ?p(S9uM+zd!+R z;6|ck+y`BBl4j4l?(e>39j4{~8n1hh&!;5zKDx>?*ZVTOhx+rKXD`V97nvAJBYkDKK6(zC8zOb&vd$Aubw;!E%;jrG`CeXYHE z=rxJ-*noU4#^$Cay}a-2Z#-@P|G9s^3nko27HrO^a0Qz7YtEW$Tsx_D(r^bpz%#fCM-#^8thvUu|04Hz3ZB4A*hmvOF=_Uh3l-%EGlBRqt87^TcB!2LW2|K51tM-tY}S#!-Qm>ahj$|IU(b`hS!7WmH3|G(t-zctsm zwo%LJk~7t>=v9Lu#>!e5Gf}NnqiiyV!O~(3E&xaWo8#PG*^VF8qxilw8$V<3F#iYk Cvy_7X diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.eot b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.eot deleted file mode 100644 index 9e6ffc9b826cb39a58e56359d6b8b922a4b07364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1912 zcmah~Ur1Y582`?_x%Vc~T>r!*OpT4P8o`m;m_K$==`c84Z6{8{+A(HKZlhvuY>cgr zKFA)%(1*FfM*FnUZZIZ{J&ZBvpfZF#Y)@lIVSRG2hwi1Y4#u`F`<;8QXe6-ja?bgE zzwN>ij! zo>pmzGE@TNr8Jlltw75)0Xj=z>Nm6}M}y=6>u7^S>VN6wGm(a7S2vh%P-e4*%<|74 z-T45bcKGFdW@Q;|Bm8Z&_WaWN)fd`ZeusaHNO&->WpYaP$#+CHu8YruP`(wvhyN-3 z)ANP$nqL?8;r{@?cd3}o2=nYs_)p+_3z@ZLe9%0RR1ZI(XA0Ww7af1Ye-<&`S}v}X zF;AHMCGRIuyn~rYh<#h&Z+ypW*>5z!99(zI7^Yoq=ZPL)7I!PVbY4V3=V9`>F2E}z z8jskHKC=}KRXf?}74Xf-hKS{56ga3mP!HbyReXH8^0ZRngTXngI9B<^|Cj$y|Mga> z;R}pA9?uwniV?%;hGTu$Jc)CL^hp0d9A5GarZvNJ<6ufi3Gpco?d=T-GZmvH1`UH| zm}{8N!4f`UZ>U1NTNno5ddx?}-q;a0gdKdb1FJ*sPETj7DTdm^s|}H!LSzj^@e}6Xo3K zXf!%Jyy+jD4Tn>yMB=%*RO-r=RBGa)o-oe4%#d}+m|4=Q~$QQ44QKuG~z>i4Xv1q8Lj|COk&su!m zB#R{CF*mpnCZx!x7-pM@8!0(V$8jZ+b@ar1M!vd&d^FFaIShFeNRsTjU4j|Sd#3{Z zXChnUcGm@);*d_c-5qUSPhEZ6>5dLdQtxVZJDg384u_&VOeQt$##&BG!nEAl4Grj% zf?bkj$zHI_k|f*NMx?LL=UZ2u=WI$ybv3ANugm3X>D=4hK9vL(>`jZV6X?ab{kvf)^jN}pSC8R2xdumC)3 zVG%fPVH@zOg(aM_9t+FhFId=#{kw^X%;o^2qQ}GnaNfcq@UVq#z&9-{;jj-_SO!03 zVJAiDPgt_+pY=D^L-I_h!b%DZS?d0}MTT%Y6XQicBm D*A6pu diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.svg b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.svg deleted file mode 100644 index d38d057da3..0000000000 --- a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - \ No newline at end of file diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.ttf b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.ttf deleted file mode 100644 index 84669323e9ddfdca80c91416b6d4fe31ea1829ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmah}U1%d!6h3n&Gn1cY`jbCwn>0i)RYHn=Nd(_}VjX(rt? z-ECzbiVq^~gR7wIJ}Ik$SP&mXgcU4O@Ijw^C=2dW1t0Wf!4*VZ<9BDKw5tWraPR%j zch0@%%sF?41R`?L28k4Z?)j66)(&?+m@hHriq*pM5AWT1he+s#-Y6GVma(=$zlqge zURuBMOt<$}=(mX2y^2;SDaD815ZSn2x&lJ^TKpFJN6=4Hs*Sav&i0^x2YqmLYKX+Z zh4)?i>i(NQi4QI{A2plC?(n|zF-~ay82lsnd+=JP)cPs*9gSyfz$B1>-K|G#j3{&3 za6R<@9}b5+fwX3MZ5)CURiZq_(cRrqHrq5-65u1iXN>y@0f&$Yu-(xnaWfkO;Qq)* z#NF5yH`q4b*n#elr`Ok;YENPI@o7V(M{qI++s^0z-kX`(%jfy~2$ZLw_^~)dT}1uS z0rN>EGwI<(fDgaVtH^j5jW5RI*{t6`F;QxqJJ%>pOeB+IW1GQ|xmYZh%VeIK&*d&( z&gJGW%*>3B-$2WWnmaZ^=Q=5cP!W|W1*=Ev4Ne;?! z)Dy)zd{P0UUVRb1o7d6YhB`8mB)e{xAja}mPdI)uu{C9PpS39tsmJ39b@_d+maY?_ zkmb_i?(jIA?QIT+qTJ7BHSPLZNy|dC(%N+m=)h}3M^?w~_ggCg@Q$N?gdbxG{B zx-Tq&<|jJo3a&GkgUE(rO)7n2#T7^aXXe0w=PWD&r!8y)UbV1p!rv)lfjj9+m((_t< zWuc~rPsQT+HZ`i#3LId-Ij1N_@nd%#OHOO$)ulomK{X`0N=sCr`mvsqHN6ooYr0l1 zG_+E9emy)@ter=0F`6`DHxRvyV{{{<0yVIfz|GS-<|*R^&YLfQ9MQz1E%`702g#=) A_5c6? diff --git a/package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.woff b/package/luci/themes/luci-theme-material/htdocs/luci-static/material/fonts/font.woff deleted file mode 100644 index 00cf84ea037c9748eba8fced0acff7dd29c12b2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1824 zcmah~U1%d!6h3z*Gn1dq^e2DXHffq}n?fO*P4m+=ZK*U=>UMvqZE#n_rpav5(j>cS zx@~12iVq^~gR7vpPs*;oSP-8?SivF%AM{D2EZCG7&Rrx~vs#LD8 z6G>0NAK>b*2>Z*`Jo2P*_+G9;iM>+Jt)s5=Jp7=pDwQg^vIY+G*{fXdJZt;odUXZ8 zDo8Q&L?BVT%Wji|-tGur!++fv+0Qh@Y&`XZu+|ff4#$ZeUJ-X2yEHCB!7-gTOi&;6 zDnMO`aoh#Vv%1Jayytdm1tWk99y$)y!#92uA6{uZZZr@haQ1(2tnt17cmHqxn;lZi z$L30U;t9iuVRnmN#h?YE)H%Ji~}l4#fh3$L$@8 zB@^+8(AyRp6H=J9PPd>@Tz*hhgR$y%{W5Pf*FI~Y9^ z+n%yI&s!9m)a`NwI=vppsm{}ZfSGd2+3vF0+gfclML9^PHEnIZprs*NVSP;l`k-u; zWLdJ7t+FJ^R<;=%9Q64%RQoxL5>}lps>|ziI$L`}{T`#RqrJ^xmt|E|ogPm| zCrxYtUNy0VFSW^2&zRUw zae99-UoBUw6a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; - -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
    a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("

    - -Main]] - for _, test in { - { "Get", "test_main.lua", {ab = "cd", ef = "gh"} }, - { "Cookies", "test_cookies.lua", }, - { "FileSystem", "test_fs.lua", }, - { "Libraries", "test_lib.lua", }, - { "Session", "test_session.lua", }, - { "Variables", "test_variables.lp", }, - } do - put (string.format (' · %s', - mkurlpath (test[2], test[3]), test[1])) - end - put [[ -]] -end) diff --git a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/overview.lp b/package/luci/libs/luci-lib-nixio/axTLS/www/lua/overview.lp deleted file mode 100644 index 4d17002a01..0000000000 --- a/package/luci/libs/luci-lib-nixio/axTLS/www/lua/overview.lp +++ /dev/null @@ -1,64 +0,0 @@ - - -CGILua installation overview - - -